ETH Price: $3,488.46 (+0.01%)
Gas: 2 Gwei

Token

KRAKEN by VP (KRAKN)
 

Overview

Max Total Supply

1,000,000,000,000 KRAKN

Holders

151

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
322,529,513.067815436 KRAKN

Value
$0.00
0xb0cb469dd1185e561e62b31a2b28806e662e6bd1
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

KRAKEN by VP ($KRAKN) is inspired by the popular “buyback wallet” trend. Kraken incentivizes holding. Mechanics include redistribution, lotteries, buybacks, and dynamic sell limits.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
KRAKN

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-22
*/

/*
                          ```````                                               
                   ``.-:://////////::-.``                                       
                `-:/++oooooooooooooooo++/:-`                                    
             `-:++ooooooooooooooooooooooooo+/-`                                 
           `:/+ooooooooooo/:----:+ooooooooooo+/:`                               
         `:++/++oooooooo/-.......--+oooooooo++/++:`                             
        -/++/:o+oooooo+-............:ooooooo+o::o+/.                            
       :+++o/-+oooooo+-..............:+oooooo+./oo++:                           
      :++++++/-:+++++/````````````````/+++++:.:++++++:                          
     :++++++++/-.-/++:````````````````/++/-.-/++++++++:                         
    .++/:::/++++/.`-++````````````````++-`./++++/:::/++.                        
    /++.-:.`-/++++``/+:``````````````:+/``/+++/-`.:-.++/                        
   .+++/+++: .++/. .++/``          `./+/. ./++. :+++/+++`                       
   -+++++++/` //`  :++-/s+-     `:+s:-++:  `//  /+++++++-                       
   -+++++++/  :-   `/+/:/++`    .+//-/+/`   -:  /+++++++-                       
   -+++++++:  ./.   `/++-          -++/`   ./.  :+++++++-                       
   .++++++/-`` -/:   `-`            `-`   :/- ``-/++++++`                       
    /++/-`   `..`.```                  ```.`..    `-/++/                        
    .++.  ``.`  .                          .  ````  .++.                        
     :/  -///-  .::/-`.://:.`  `.://:.`-/::.  -///-  /:                         
     `/-``-:+/  `:/- `-.--:/-  :/---`-` -/:`  /+:-``-:                          
      `:////++-     `: -++:+.  :+:+/.`/`     -++//:/:`                          
        -/++++/:.`.-//  -:-.   `-:-. `+/-.`.-/++++/.                            
         `:/++++///+++:`            ./+++///++++/:`                             
           `:/+++++++++//----::---://+++++++++/:`                               
             `-:/++++++++++++++++++++++++++/:-`                                 
                `-://++++++++++++++++++//:-`                                    
                   ``.-:::////////:::-.``                                       
                          ````````                                              

    ██╗  ██╗███████╗    ██╗    ██╗  ██╗███████╗███╗   ██╗
    ██║ ██╔╝██║  ██╝   ████╗   ██║ ██╔╝██╔════╝████╗  ██║
    █████╔╝ ███████╗  ██╔═██╗  █████╔╝ █████╗  ██╔██╗ ██║
    ██╔═██╗ ██╔══██║ ████████╗ ██╔═██╗ ██╔══╝  ██║╚██╗██║
    ██║  ██╗██║  ██║██║     ██╗██║  ██╗███████╗██║ ╚████║
    ╚═╝  ╚═╝╚═╝  ╚═╝╚═╝     ╚═╝╚═╝  ╚═╝╚══════╝╚═╝  ╚═══╝
    

KRAKEN by VP

FIRST TWENTY MINUTES OF TRADING
buy/sell limit 1% total supply

BUY FEES
7% -redistribution 
5% - lottery wallet

SELL FEES (Dynamic - Resets after 24 hours from first sell)
2% price impact limit on all sells

1st sell -
10% dev tax
20% whale wallet
1 hour cooldown period

2nd sell - 
8% dev tax 
17% whale wallet tax
2 hour cooldown period

3rd sell - 
10% dev tax 
20% whale wallet tax
3hour cooldown period

4th sell - 
8% dev tax 
17% whale wallet tax
No more sells allowed until 24 hours after first sell

The Kraken is a legendary sea monster of colossal proportions that originates from Nordic folklore. Striking fear into the
hearts of every sailor, the Kraken’s tentacles wield enough power to pull entire ships underwater, leaving the crew to either 
drown or to be its next meal. Rumor has it that the Kraken is guarding immense riches from its previous victims.

Will investors suffer the same fate, or will they lay claim to what the beast has stolen?

KRAKEN by VP ($KRAKN) is inspired by the popular “buyback wallet” trend. We dove into the communities of the different projects
that utilized this tokenomic and gathered up countless examples as to what investors all liked, disliked and ultimately wanted 
to see. The ultimate goal is to reward our community for holding to the end game with various incentives. Some of the mechanics 
include but are not limited to redistribution, lotteries, buy backs and dynamic sell limits.

Smart contract developed by Alex Liddle
Reach on telegram: @Alex_Saint_Dev

SPDX-License-Identifier: None
*/



pragma solidity ^0.8.4;

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

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

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

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

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

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

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

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

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

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

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

contract KRAKN is Context, IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "KRAKEN by VP";
    string private constant _symbol = "KRAKN";
    uint8 private constant _decimals = 9;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    uint256 public _whaleFee = 17;
    uint256 private _previousWhaleFee = _whaleFee;
    uint256 public _teamFee = 8;
    uint256 private _previousTeamFee = _teamFee;
    
    uint256 public _teamPercent = 30;
    uint256 public _whalePercent = 70;

    uint256 public _reflectionFee = 5;
    uint256 private _previousReflectionFee = _reflectionFee;
    uint256 public _lotteryFee = 5;
    uint256 private _previousLotteryFee = _lotteryFee;
    
    uint256 public _priceImpact = 2;
    
    struct BuyBreakdown {
        uint256 tTransferAmount;
        uint256 tLottery;
        uint256 tReflection;
    }
    
    mapping(address => bool) private bots;
    mapping(address => uint256) private buycooldown;
    mapping(address => uint256) private sellcooldown;
    mapping(address => uint256) private firstsell;
    mapping(address => uint256) private sellnumber;
    address payable private _teamAddress = payable(0x58BfDbb51A62584c023a6439155F5bDcB556660b);
    address payable private _whaleAddress = payable(0x651CB3E19815Fe172Fd730D7a6d439598CCb0010);
    address payable private _lotteryAddress = payable(0x75B63Dfb568F2CF52d984862ac56Af47C17dEE4A);
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen = false;
    bool private liquidityAdded = false;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    bool private sellCooldownEnabled = false;
    bool private sellOnly = false;
    uint256 private _maxTxAmount;
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    event SellOnlyUpdated(bool sellOnly);
    event PercentsUpdated(uint256 _teamPercent, uint256 _whalePercent);
    event FeesUpdated(uint256 _whaleFee, uint256 _teamFee, uint256 _reflectionFee, uint256 _lotteryFee);
    event PriceImpactUpdated(uint256 _priceImpact);
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type(uint256).max);

        swapEnabled = true;
        cooldownEnabled = false;
        sellCooldownEnabled = true;
        liquidityAdded = true;
        _maxTxAmount = _tTotal.div(100); // start off transaction limit at 1% of total supply

        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_teamAddress] = true;
        _isExcludedFromFee[_whaleAddress] = true;
        _isExcludedFromFee[_lotteryAddress] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }
    
    function setSellCooldownEnabled(bool onoff) external onlyOwner() {
        sellCooldownEnabled = onoff;
    }

    function tokenFromReflection(uint256 rAmount) private view returns (uint256) {
        require(rAmount <= _rTotal,"Amount must be less than total reflections");
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
    
    function removeAllFee() private {
        if (_whaleFee == 0 && _teamFee == 0) return;
        _previousTeamFee = _teamFee;
        _previousWhaleFee = _whaleFee;
        _whaleFee = 0;
        _teamFee = 0;
    }

    function restoreAllFee() private {
        _whaleFee = _previousWhaleFee;
        _teamFee = _previousTeamFee;
    }
    
    function setFee(uint256 multiplier) private {
        
        if (multiplier == 2 || multiplier == 4){
            _whaleFee += 0;
            _teamFee += 0;
        }
        if (multiplier == 1 || multiplier == 3){
            _whaleFee += 4;
            _teamFee += 1;
        }
    }

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

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

        if (from != owner() && to != owner()) {
            if (cooldownEnabled) { // only buys are allowed, if enabled
                if (from != address(this) && to != address(this) && from != address(uniswapV2Router) && to != address(uniswapV2Router)) {
                    require(_msgSender() == address(uniswapV2Router) || _msgSender() == uniswapV2Pair,"ERR: Buys only");
                }
            }
            require(!bots[from] && !bots[to]);
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {//buys
                require(tradingOpen);
                require(!sellOnly, "Buys are disabled");
                require(amount <= _maxTxAmount);
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled && sellCooldownEnabled) { //sells, transfers (except for buys)
                require(amount <= balanceOf(uniswapV2Pair).mul(_priceImpact).div(100) && amount <= _maxTxAmount);
                require(sellcooldown[from] < block.timestamp);
                if(firstsell[from] + (1 days) < block.timestamp){
                    sellnumber[from] = 0;
                }
                if (sellnumber[from] == 0) {
                    sellnumber[from]++;
                    firstsell[from] = block.timestamp;
                    sellcooldown[from] = block.timestamp + (1 hours);
                }
                else if (sellnumber[from] == 1) {
                    sellnumber[from]++;
                    sellcooldown[from] = block.timestamp + (2 hours);
                }
                else if (sellnumber[from] == 2) {
                    sellnumber[from]++;
                    sellcooldown[from] = block.timestamp + (3 hours);
                }
                else if (sellnumber[from] == 3) {
                    sellnumber[from]++;
                    sellcooldown[from] = firstsell[from] + (1 days);
                }
                if (contractTokenBalance > 0) {
                    swapTokensForEth(contractTokenBalance);
                }
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                    setFee(sellnumber[from]);
                }
            }
        }
        bool takeFee = true;

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

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
    }

    function sendETHToFee(uint256 amount) private {
        _teamAddress.transfer(amount.mul(_teamPercent).div(100));
        _whaleAddress.transfer(amount.mul(_whalePercent).div(100));
    }
    
    function openTrading() public onlyOwner {
        require(liquidityAdded);
        tradingOpen = true;
    }
    
    function enableSellOnly() public onlyOwner {
        sellOnly = true;
        emit SellOnlyUpdated(sellOnly);
    }
    
    function disableSellOnly() public onlyOwner {
        sellOnly = false;
        emit SellOnlyUpdated(sellOnly);
    }

    function manualswap() external {
        require(_msgSender() == _teamAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _teamAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if (!takeFee) removeAllFee();
        if (sender == uniswapV2Pair){ //buy order, reflection, and lottery
            _transferStandardBuy(sender, recipient, amount);
        }
        else {
            _transferStandardSell(sender, recipient, amount); //take team and whale (no reflection, or lottery)
        }
        if (!takeFee) restoreAllFee();
    }

    function _transferStandardBuy(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rReflection, uint256 tTransferAmount, uint256 tLottery, uint256 tReflection) = _getValuesBuy(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLottery(tLottery);
        _reflectFee(rReflection, tReflection);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function _takeLottery(uint256 tLottery) private {
        uint256 currentRate = _getRate();
        uint256 rLottery = tLottery.mul(currentRate);
        _rOwned[_lotteryAddress] = _rOwned[_lotteryAddress].add(rLottery);
        emit Transfer(address(this), _lotteryAddress, rLottery);
    }

    function _reflectFee(uint256 rReflection, uint256 tReflection) private {
        _rTotal = _rTotal.sub(rReflection);
        _tFeeTotal = _tFeeTotal.add(tReflection);
    }
    
    function _transferStandardSell(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount,, uint256 tTransferAmount, uint256 tTeam, uint256 tWhale) = _getValuesSell(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _takeWhale(tWhale);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
    
    function _takeWhale(uint256 tWhale) private {
        uint256 currentRate = _getRate();
        uint256 rWhale = tWhale.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rWhale);
    }

    receive() external payable {}

    // Sell GetValues
    function _getValuesSell(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tTeam, uint256 tWhale) = _getTValuesSell(tAmount, _teamFee, _whaleFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rTeam) = _getRValuesSell(tAmount, tTeam, tWhale, currentRate);
        return (rAmount, rTransferAmount, rTeam, tTransferAmount, tTeam, tWhale);
    }

    function _getTValuesSell(uint256 tAmount, uint256 teamFee, uint256 whaleFee) private pure returns (uint256, uint256, uint256) {
        uint256 tTeam = tAmount.mul(teamFee).div(100);
        uint256 tWhale = tAmount.mul(whaleFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tTeam).sub(tWhale);
        return (tTransferAmount, tTeam, tWhale);
    }

    function _getRValuesSell(uint256 tAmount, uint256 tTeam, uint256 tWhale, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rWhale = tWhale.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rTeam).sub(rWhale);
        return (rAmount, rTransferAmount, rTeam);
    }

    // Buy GetValues
    function _getValuesBuy(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        BuyBreakdown memory buyFees;
        (buyFees.tTransferAmount, buyFees.tLottery, buyFees.tReflection) = _getTValuesBuy(tAmount, _lotteryFee, _reflectionFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rReflection) = _getRValuesBuy(tAmount, buyFees.tLottery, buyFees.tReflection, currentRate);
        return (rAmount, rTransferAmount, rReflection, buyFees.tTransferAmount, buyFees.tLottery, buyFees.tReflection);
    }

    function _getTValuesBuy(uint256 tAmount, uint256 lotteryFee, uint256 reflectionFee) private pure returns (uint256, uint256, uint256) {
        BuyBreakdown memory buyTFees;
        
        buyTFees.tLottery = tAmount.mul(lotteryFee).div(100);
        buyTFees.tReflection = tAmount.mul(reflectionFee).div(100);
        buyTFees.tTransferAmount = tAmount.sub(buyTFees.tLottery).sub(buyTFees.tReflection);
        return (buyTFees.tTransferAmount, buyTFees.tLottery, buyTFees.tReflection);
    }

    function _getRValuesBuy(uint256 tAmount, uint256 tLottery, uint256 tReflection, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rLottery = tLottery.mul(currentRate);
        uint256 rReflection = tReflection.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rLottery).sub(rReflection);
        return (rAmount, rTransferAmount, rReflection);
    }
    
    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;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
  
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() {
        require(maxTxPercent > 0, "Amount must be greater than 0");
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(10**2);
        emit MaxTxAmountUpdated(_maxTxAmount);
    }
    
    function setPercents(uint256 teamPercent, uint256 whalePercent) external onlyOwner() {
        require(teamPercent.add(whalePercent) == 100, "Sum of percents must equal 100");
        _teamPercent = teamPercent;
        _whalePercent = whalePercent;
        emit PercentsUpdated(_teamPercent, _whalePercent);
    }
    
    function setTaxes(uint256 whaleFee, uint256 teamFee, uint256 reflectionFee, uint256 lotteryFee) external onlyOwner() {
        require(whaleFee.add(teamFee) < 50, "Sum of sell fees must be less than 50");
        require(reflectionFee.add(lotteryFee) < 50, "Sum of buy fees must be less than 50");
        _whaleFee = whaleFee;
        _teamFee = teamFee;
        _reflectionFee = reflectionFee;
        _lotteryFee = lotteryFee;
        emit FeesUpdated(_whaleFee, _teamFee, _reflectionFee, _lotteryFee);
    }
    
    function setPriceImpact(uint256 priceImpact) external onlyOwner() {
        require(priceImpact < 10, "max price impact must be less than 10");
        _priceImpact = priceImpact;
        emit PriceImpactUpdated(_priceImpact);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_whaleFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_teamFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_lotteryFee","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_teamPercent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_whalePercent","type":"uint256"}],"name":"PercentsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_priceImpact","type":"uint256"}],"name":"PriceImpactUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"sellOnly","type":"bool"}],"name":"SellOnlyUpdated","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":"_lotteryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_priceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_whaleFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_whalePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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":"pure","type":"function"},{"inputs":[],"name":"disableSellOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableSellOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"teamPercent","type":"uint256"},{"internalType":"uint256","name":"whalePercent","type":"uint256"}],"name":"setPercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpact","type":"uint256"}],"name":"setPriceImpact","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setSellCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"whaleFee","type":"uint256"},{"internalType":"uint256","name":"teamFee","type":"uint256"},{"internalType":"uint256","name":"reflectionFee","type":"uint256"},{"internalType":"uint256","name":"lotteryFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]

60806040526200001b683635c9adc5dea0000060001962000729565b620000299060001962000703565b600655601160088181556009829055600a819055600b55601e600c556046600d556005600e819055600f819055601081905590556002601255601880546001600160a01b03199081167358bfdbb51a62584c023a6439155f5bdcb556660b1790915560198054821673651cb3e19815fe172fd730d7a6d439598ccb0010179055601a80549091167375b63dfb568f2cf52d984862ac56af47c17dee4a179055601c805466ffffffffffffff60a01b19169055348015620000e857600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155620001693082683635c9adc5dea000006200048c565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001a357600080fd5b505afa158015620001b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001de919062000645565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022757600080fd5b505afa1580156200023c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000262919062000645565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002ab57600080fd5b505af1158015620002c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e6919062000645565b601c80546001600160a01b0319166001600160a01b03928316908117909155601b5460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b390604401602060405180830381600087803b1580156200034957600080fd5b505af11580156200035e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000384919062000670565b50601c805464ffffff00ff60a81b191664010001000160a81b179055620003c2683635c9adc5dea000006064620005b8602090811b62000d7117901c565b601d556006543360008181526002602090815260408083209490945581546001600160a01b039081168352600582528483208054600160ff1991821681179092553085528685208054821683179055601854831685528685208054821683179055601954831685528685208054821683179055601a54909216845285842080549092161790559251683635c9adc5dea000008152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000756565b6001600160a01b038316620004f45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620005575760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620004eb565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006200060283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200060960201b60201c565b9392505050565b600081836200062d5760405162461bcd60e51b8152600401620004eb919062000694565b5060006200063c8486620006ec565b95945050505050565b6000602082840312156200065857600080fd5b81516001600160a01b03811681146200060257600080fd5b6000602082840312156200068357600080fd5b815180151581146200060257600080fd5b600060208083528351808285015260005b81811015620006c357858101830151858201604001528201620006a5565b81811115620006d6576000604083870101525b50601f01601f1916929092016040019392505050565b600082620006fe57620006fe62000740565b500490565b6000828210156200072457634e487b7160e01b600052601160045260246000fd5b500390565b6000826200073b576200073b62000740565b500690565b634e487b7160e01b600052601260045260246000fd5b61247280620007666000396000f3fe6080604052600436106101dc5760003560e01c8063715018a611610102578063b44a14b611610095578063cf895ca511610064578063cf895ca51461051b578063d543dbeb14610531578063dd62ed3e14610551578063ea2f0b371461059757600080fd5b8063b44a14b6146104bb578063bfa31ff9146104db578063c3c8cd80146104f1578063c9567bf91461050657600080fd5b80639eb942e5116100d15780639eb942e514610445578063a12a7d611461045b578063a9059cbb1461047b578063acaf4a801461049b57600080fd5b8063715018a6146103c457806384535fff146103d95780638da5cb5b146103ef57806395d89b411461041757600080fd5b8063313ce5671161017a578063437823ec11610149578063437823ec1461034f5780635932ead11461036f5780636fc3eaec1461038f57806370a08231146103a457600080fd5b8063313ce567146102f25780633206b4aa1461030e57806332f57ca014610324578063405433391461033957600080fd5b80631b631eee116101b65780631b631eee1461028557806323b872dd1461029c57806327a34170146102bc5780632b929aa8146102d257600080fd5b806306fdde03146101e8578063095ea7b31461022f57806318160ddd1461025f57600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b5060408051808201909152600c81526b04b52414b454e2062792056560a41b60208201525b604051610226919061224d565b60405180910390f35b34801561023b57600080fd5b5061024f61024a366004612192565b6105b7565b6040519015158152602001610226565b34801561026b57600080fd5b50683635c9adc5dea000005b604051908152602001610226565b34801561029157600080fd5b5061029a6105ce565b005b3480156102a857600080fd5b5061024f6102b7366004612151565b610658565b3480156102c857600080fd5b50610277600d5481565b3480156102de57600080fd5b5061029a6102ed3660046121e0565b6106c1565b3480156102fe57600080fd5b5060405160098152602001610226565b34801561031a57600080fd5b50610277600e5481565b34801561033057600080fd5b5061029a610785565b34801561034557600080fd5b5061027760105481565b34801561035b57600080fd5b5061029a61036a3660046120de565b6107fe565b34801561037b57600080fd5b5061029a61038a3660046121be565b61084c565b34801561039b57600080fd5b5061029a610894565b3480156103b057600080fd5b506102776103bf3660046120de565b6108c1565b3480156103d057600080fd5b5061029a6108e3565b3480156103e557600080fd5b50610277600c5481565b3480156103fb57600080fd5b506000546040516001600160a01b039091168152602001610226565b34801561042357600080fd5b5060408051808201909152600581526425a920a5a760d91b6020820152610219565b34801561045157600080fd5b50610277600a5481565b34801561046757600080fd5b5061029a61047636600461221b565b610957565b34801561048757600080fd5b5061024f610496366004612192565b610aaf565b3480156104a757600080fd5b5061029a6104b63660046121be565b610abc565b3480156104c757600080fd5b5061029a6104d63660046121f9565b610b04565b3480156104e757600080fd5b5061027760125481565b3480156104fd57600080fd5b5061029a610bce565b34801561051257600080fd5b5061029a610c04565b34801561052757600080fd5b5061027760085481565b34801561053d57600080fd5b5061029a61054c3660046121e0565b610c59565b34801561055d57600080fd5b5061027761056c366004612118565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105a357600080fd5b5061029a6105b23660046120de565b610d26565b60006105c4338484610dba565b5060015b92915050565b6000546001600160a01b031633146106015760405162461bcd60e51b81526004016105f8906122a2565b60405180910390fd5b601c805460ff60d01b1916908190556040517fe3e25c12c2d334c3a135067ba9e60b2b4ea7c6e713e56172ad52f6cfe04801299161064e91600160d01b90910460ff161515815260200190565b60405180910390a1565b6000610665848484610edf565b6106b784336106b285604051806060016040528060288152602001612415602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906115d9565b610dba565b5060019392505050565b6000546001600160a01b031633146106eb5760405162461bcd60e51b81526004016105f8906122a2565b600a81106107495760405162461bcd60e51b815260206004820152602560248201527f6d617820707269636520696d70616374206d757374206265206c6573732074686044820152640616e2031360dc1b60648201526084016105f8565b60128190556040518181527f585981c0db15e25002a67c38e62f983f189bb219fae23eb213566640fbae5e3c906020015b60405180910390a150565b6000546001600160a01b031633146107af5760405162461bcd60e51b81526004016105f8906122a2565b601c805460ff60d01b1916600160d01b908117918290556040517fe3e25c12c2d334c3a135067ba9e60b2b4ea7c6e713e56172ad52f6cfe04801299261064e92900460ff161515815260200190565b6000546001600160a01b031633146108285760405162461bcd60e51b81526004016105f8906122a2565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000546001600160a01b031633146108765760405162461bcd60e51b81526004016105f8906122a2565b601c8054911515600160c01b0260ff60c01b19909216919091179055565b6018546001600160a01b0316336001600160a01b0316146108b457600080fd5b476108be81611613565b50565b6001600160a01b0381166000908152600260205260408120546105c8906116b8565b6000546001600160a01b0316331461090d5760405162461bcd60e51b81526004016105f8906122a2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146109815760405162461bcd60e51b81526004016105f8906122a2565b603261098d8585611735565b106109e85760405162461bcd60e51b815260206004820152602560248201527f53756d206f662073656c6c2066656573206d757374206265206c6573732074686044820152640616e2035360dc1b60648201526084016105f8565b60326109f48383611735565b10610a4d5760405162461bcd60e51b8152602060048201526024808201527f53756d206f66206275792066656573206d757374206265206c6573732074686160448201526306e2035360e41b60648201526084016105f8565b6008849055600a839055600e82905560108190556040805185815260208101859052908101839052606081018290527f16e6f67290546b8dd0e587f4b7f67d4f61932ae17ffd8c60d3509dbc05c175fe9060800160405180910390a150505050565b60006105c4338484610edf565b6000546001600160a01b03163314610ae65760405162461bcd60e51b81526004016105f8906122a2565b601c8054911515600160c81b0260ff60c81b19909216919091179055565b6000546001600160a01b03163314610b2e5760405162461bcd60e51b81526004016105f8906122a2565b610b388282611735565b606414610b875760405162461bcd60e51b815260206004820152601e60248201527f53756d206f662070657263656e7473206d75737420657175616c20313030000060448201526064016105f8565b600c829055600d81905560408051838152602081018390527f012f5df73148ec03a4ac44111fcf100a014ee232c9f1b328180ab5f3996821e5910160405180910390a15050565b6018546001600160a01b0316336001600160a01b031614610bee57600080fd5b6000610bf9306108c1565b90506108be81611794565b6000546001600160a01b03163314610c2e5760405162461bcd60e51b81526004016105f8906122a2565b601c54600160a81b900460ff16610c4457600080fd5b601c805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610c835760405162461bcd60e51b81526004016105f8906122a2565b60008111610cd35760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016105f8565b610cf16064610ceb683635c9adc5dea000008461191d565b90610d71565b601d8190556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200161077a565b6000546001600160a01b03163314610d505760405162461bcd60e51b81526004016105f8906122a2565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000610db383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061199c565b9392505050565b6001600160a01b038316610e1c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105f8565b6001600160a01b038216610e7d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105f8565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610f435760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105f8565b6001600160a01b038216610fa55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105f8565b600081116110075760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105f8565b6000546001600160a01b0384811691161480159061103357506000546001600160a01b03838116911614155b1561156b57601c54600160c01b900460ff1615611117576001600160a01b038316301480159061106c57506001600160a01b0382163014155b80156110865750601b546001600160a01b03848116911614155b80156110a05750601b546001600160a01b03838116911614155b1561111757601b546001600160a01b0316336001600160a01b031614806110da5750601c546001600160a01b0316336001600160a01b0316145b6111175760405162461bcd60e51b815260206004820152600e60248201526d4552523a2042757973206f6e6c7960901b60448201526064016105f8565b6001600160a01b03831660009081526013602052604090205460ff1615801561115957506001600160a01b03821660009081526013602052604090205460ff16155b61116257600080fd5b601c546001600160a01b03848116911614801561118d5750601b546001600160a01b03838116911614155b1561120557601c54600160a01b900460ff166111a857600080fd5b601c54600160d01b900460ff16156111f65760405162461bcd60e51b8152602060048201526011602482015270109d5e5cc8185c9948191a5cd8589b1959607a1b60448201526064016105f8565b601d5481111561120557600080fd5b6000611210306108c1565b601c54909150600160b01b900460ff1615801561123b5750601c546001600160a01b03858116911614155b80156112505750601c54600160b81b900460ff165b80156112655750601c54600160c81b900460ff165b1561156957601254601c5461129491606491610ceb919061128e906001600160a01b03166108c1565b9061191d565b82111580156112a55750601d548211155b6112ae57600080fd5b6001600160a01b03841660009081526015602052604090205442116112d257600080fd5b6001600160a01b03841660009081526016602052604090205442906112fa9062015180612348565b101561131a576001600160a01b0384166000908152601760205260408120555b6001600160a01b0384166000908152601760205260409020546113a7576001600160a01b038416600090815260176020526040812080549161135b836123b8565b90915550506001600160a01b0384166000908152601660205260409020429081905561138990610e10612348565b6001600160a01b0385166000908152601560205260409020556114df565b6001600160a01b038416600090815260176020526040902054600114156113fe576001600160a01b03841660009081526017602052604081208054916113ec836123b8565b90915550611389905042611c20612348565b6001600160a01b03841660009081526017602052604090205460021415611455576001600160a01b0384166000908152601760205260408120805491611443836123b8565b90915550611389905042612a30612348565b6001600160a01b038416600090815260176020526040902054600314156114df576001600160a01b038416600090815260176020526040812080549161149a836123b8565b90915550506001600160a01b0384166000908152601660205260409020546114c59062015180612348565b6001600160a01b0385166000908152601560205260409020555b80156114ee576114ee81611794565b4780156114fe576114fe47611613565b6001600160a01b03851660009081526005602052604090205460ff1615801561154057506001600160a01b03841660009081526005602052604090205460ff16155b15611567576001600160a01b038516600090815260176020526040902054611567906119ca565b505b505b6001600160a01b03831660009081526005602052604090205460019060ff16806115ad57506001600160a01b03831660009081526005602052604090205460ff165b156115b6575060005b6115c284848484611a5a565b6115d3600954600855600b54600a55565b50505050565b600081848411156115fd5760405162461bcd60e51b81526004016105f8919061224d565b50600061160a84866123a1565b95945050505050565b601854600c546001600160a01b03909116906108fc9061163b90606490610ceb90869061191d565b6040518115909202916000818181858888f19350505050158015611663573d6000803e3d6000fd5b50601954600d546001600160a01b03909116906108fc9061168c90606490610ceb90869061191d565b6040518115909202916000818181858888f193505050501580156116b4573d6000803e3d6000fd5b5050565b600060065482111561171f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105f8565b6000611729611aae565b9050610db38382610d71565b6000806117428385612348565b905083811015610db35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105f8565b601c805460ff60b01b1916600160b01b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106117dc576117dc6123e9565b6001600160a01b03928316602091820292909201810191909152601b54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561183057600080fd5b505afa158015611844573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186891906120fb565b8160018151811061187b5761187b6123e9565b6001600160a01b039283166020918202929092010152601b546118a19130911684610dba565b601b5460405163791ac94760e01b81526001600160a01b039091169063791ac947906118da9085906000908690309042906004016122d7565b600060405180830381600087803b1580156118f457600080fd5b505af1158015611908573d6000803e3d6000fd5b5050601c805460ff60b01b1916905550505050565b60008261192c575060006105c8565b60006119388385612382565b9050826119458583612360565b14610db35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105f8565b600081836119bd5760405162461bcd60e51b81526004016105f8919061224d565b50600061160a8486612360565b80600214806119d95750806004145b15611a11576000600860008282546119f19190612348565b925050819055506000600a6000828254611a0b9190612348565b90915550505b8060011480611a205750806003145b156108be57600460086000828254611a389190612348565b925050819055506001600a6000828254611a529190612348565b909155505050565b80611a6757611a67611ad1565b601c546001600160a01b0385811691161415611a8d57611a88848484611b00565b611a98565b611a98848484611bf7565b806115d3576115d3600954600855600b54600a55565b6000806000611abb611cec565b9092509050611aca8282610d71565b9250505090565b600854158015611ae15750600a54155b15611ae857565b600a8054600b55600880546009556000908190559055565b600080600080600080611b1287611d2e565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611b449087611dc5565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054611b739086611735565b6001600160a01b038916600090815260026020526040902055611b9582611e07565b611b9f8482611ea0565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611be491815260200190565b60405180910390a3505050505050505050565b6000806000806000611c0886611ec4565b6001600160a01b038e16600090815260026020526040902054959a509398509096509450909250611c3b91905086611dc5565b6001600160a01b03808a166000908152600260205260408082209390935590891681522054611c6a9085611735565b6001600160a01b038816600090815260026020526040902055611c8c82611f21565b611c9581611f21565b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611cda91815260200190565b60405180910390a35050505050505050565b6006546000908190683635c9adc5dea00000611d088282610d71565b821015611d2557505060065492683635c9adc5dea0000092509050565b90939092509050565b600080600080600080611d5b60405180606001604052806000815260200160008152602001600081525090565b611d6a88601054600e54611f6b565b6040840152602083015281526000611d80611aae565b90506000806000611d9b8c8660200151876040015187611ff5565b87516020890151604090990151939e50919c509a5098509496509394505050505091939550919395565b6000610db383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115d9565b6000611e11611aae565b90506000611e1f838361191d565b601a546001600160a01b0316600090815260026020526040902054909150611e479082611735565b601a80546001600160a01b03908116600090815260026020908152604091829020949094559154915184815291169130917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610ed2565b600654611ead9083611dc5565b600655600754611ebd9082611735565b6007555050565b6000806000806000806000806000611ee18a600a54600854612045565b9250925092506000611ef1611aae565b90506000806000611f048e87878761208e565b919e509c509a509598509396509194505050505091939550919395565b6000611f2b611aae565b90506000611f39838361191d565b30600090815260026020526040902054909150611f569082611735565b30600090815260026020526040902055505050565b6000806000611f9460405180606001604052806000815260200160008152602001600081525090565b611fa36064610ceb898961191d565b6020820152611fb76064610ceb898861191d565b604082018190526020820151611fd99190611fd3908a90611dc5565b90611dc5565b8082526020820151604090920151909891975095509350505050565b6000808080612004888661191d565b90506000612012888761191d565b90506000612020888861191d565b9050600061203282611fd38686611dc5565b939b939a50909850919650505050505050565b60008080806120596064610ceb898961191d565b9050600061206c6064610ceb8a8961191d565b9050600061207e82611fd38b86611dc5565b9992985090965090945050505050565b600080808061209d888661191d565b905060006120ab888761191d565b905060006120b9888861191d565b905060006120cb82611fd38686611dc5565b939b939a50919850919650505050505050565b6000602082840312156120f057600080fd5b8135610db3816123ff565b60006020828403121561210d57600080fd5b8151610db3816123ff565b6000806040838503121561212b57600080fd5b8235612136816123ff565b91506020830135612146816123ff565b809150509250929050565b60008060006060848603121561216657600080fd5b8335612171816123ff565b92506020840135612181816123ff565b929592945050506040919091013590565b600080604083850312156121a557600080fd5b82356121b0816123ff565b946020939093013593505050565b6000602082840312156121d057600080fd5b81358015158114610db357600080fd5b6000602082840312156121f257600080fd5b5035919050565b6000806040838503121561220c57600080fd5b50508035926020909101359150565b6000806000806080858703121561223157600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b8181101561227a5785810183015185820160400152820161225e565b8181111561228c576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123275784516001600160a01b031683529383019391830191600101612302565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561235b5761235b6123d3565b500190565b60008261237d57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561239c5761239c6123d3565b500290565b6000828210156123b3576123b36123d3565b500390565b60006000198214156123cc576123cc6123d3565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146108be57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205b83e59f69c9708a4d6a4a00e020f2502c552211fc2a24c5b46582cb898ce8af64736f6c63430008060033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c8063715018a611610102578063b44a14b611610095578063cf895ca511610064578063cf895ca51461051b578063d543dbeb14610531578063dd62ed3e14610551578063ea2f0b371461059757600080fd5b8063b44a14b6146104bb578063bfa31ff9146104db578063c3c8cd80146104f1578063c9567bf91461050657600080fd5b80639eb942e5116100d15780639eb942e514610445578063a12a7d611461045b578063a9059cbb1461047b578063acaf4a801461049b57600080fd5b8063715018a6146103c457806384535fff146103d95780638da5cb5b146103ef57806395d89b411461041757600080fd5b8063313ce5671161017a578063437823ec11610149578063437823ec1461034f5780635932ead11461036f5780636fc3eaec1461038f57806370a08231146103a457600080fd5b8063313ce567146102f25780633206b4aa1461030e57806332f57ca014610324578063405433391461033957600080fd5b80631b631eee116101b65780631b631eee1461028557806323b872dd1461029c57806327a34170146102bc5780632b929aa8146102d257600080fd5b806306fdde03146101e8578063095ea7b31461022f57806318160ddd1461025f57600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b5060408051808201909152600c81526b04b52414b454e2062792056560a41b60208201525b604051610226919061224d565b60405180910390f35b34801561023b57600080fd5b5061024f61024a366004612192565b6105b7565b6040519015158152602001610226565b34801561026b57600080fd5b50683635c9adc5dea000005b604051908152602001610226565b34801561029157600080fd5b5061029a6105ce565b005b3480156102a857600080fd5b5061024f6102b7366004612151565b610658565b3480156102c857600080fd5b50610277600d5481565b3480156102de57600080fd5b5061029a6102ed3660046121e0565b6106c1565b3480156102fe57600080fd5b5060405160098152602001610226565b34801561031a57600080fd5b50610277600e5481565b34801561033057600080fd5b5061029a610785565b34801561034557600080fd5b5061027760105481565b34801561035b57600080fd5b5061029a61036a3660046120de565b6107fe565b34801561037b57600080fd5b5061029a61038a3660046121be565b61084c565b34801561039b57600080fd5b5061029a610894565b3480156103b057600080fd5b506102776103bf3660046120de565b6108c1565b3480156103d057600080fd5b5061029a6108e3565b3480156103e557600080fd5b50610277600c5481565b3480156103fb57600080fd5b506000546040516001600160a01b039091168152602001610226565b34801561042357600080fd5b5060408051808201909152600581526425a920a5a760d91b6020820152610219565b34801561045157600080fd5b50610277600a5481565b34801561046757600080fd5b5061029a61047636600461221b565b610957565b34801561048757600080fd5b5061024f610496366004612192565b610aaf565b3480156104a757600080fd5b5061029a6104b63660046121be565b610abc565b3480156104c757600080fd5b5061029a6104d63660046121f9565b610b04565b3480156104e757600080fd5b5061027760125481565b3480156104fd57600080fd5b5061029a610bce565b34801561051257600080fd5b5061029a610c04565b34801561052757600080fd5b5061027760085481565b34801561053d57600080fd5b5061029a61054c3660046121e0565b610c59565b34801561055d57600080fd5b5061027761056c366004612118565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105a357600080fd5b5061029a6105b23660046120de565b610d26565b60006105c4338484610dba565b5060015b92915050565b6000546001600160a01b031633146106015760405162461bcd60e51b81526004016105f8906122a2565b60405180910390fd5b601c805460ff60d01b1916908190556040517fe3e25c12c2d334c3a135067ba9e60b2b4ea7c6e713e56172ad52f6cfe04801299161064e91600160d01b90910460ff161515815260200190565b60405180910390a1565b6000610665848484610edf565b6106b784336106b285604051806060016040528060288152602001612415602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906115d9565b610dba565b5060019392505050565b6000546001600160a01b031633146106eb5760405162461bcd60e51b81526004016105f8906122a2565b600a81106107495760405162461bcd60e51b815260206004820152602560248201527f6d617820707269636520696d70616374206d757374206265206c6573732074686044820152640616e2031360dc1b60648201526084016105f8565b60128190556040518181527f585981c0db15e25002a67c38e62f983f189bb219fae23eb213566640fbae5e3c906020015b60405180910390a150565b6000546001600160a01b031633146107af5760405162461bcd60e51b81526004016105f8906122a2565b601c805460ff60d01b1916600160d01b908117918290556040517fe3e25c12c2d334c3a135067ba9e60b2b4ea7c6e713e56172ad52f6cfe04801299261064e92900460ff161515815260200190565b6000546001600160a01b031633146108285760405162461bcd60e51b81526004016105f8906122a2565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000546001600160a01b031633146108765760405162461bcd60e51b81526004016105f8906122a2565b601c8054911515600160c01b0260ff60c01b19909216919091179055565b6018546001600160a01b0316336001600160a01b0316146108b457600080fd5b476108be81611613565b50565b6001600160a01b0381166000908152600260205260408120546105c8906116b8565b6000546001600160a01b0316331461090d5760405162461bcd60e51b81526004016105f8906122a2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146109815760405162461bcd60e51b81526004016105f8906122a2565b603261098d8585611735565b106109e85760405162461bcd60e51b815260206004820152602560248201527f53756d206f662073656c6c2066656573206d757374206265206c6573732074686044820152640616e2035360dc1b60648201526084016105f8565b60326109f48383611735565b10610a4d5760405162461bcd60e51b8152602060048201526024808201527f53756d206f66206275792066656573206d757374206265206c6573732074686160448201526306e2035360e41b60648201526084016105f8565b6008849055600a839055600e82905560108190556040805185815260208101859052908101839052606081018290527f16e6f67290546b8dd0e587f4b7f67d4f61932ae17ffd8c60d3509dbc05c175fe9060800160405180910390a150505050565b60006105c4338484610edf565b6000546001600160a01b03163314610ae65760405162461bcd60e51b81526004016105f8906122a2565b601c8054911515600160c81b0260ff60c81b19909216919091179055565b6000546001600160a01b03163314610b2e5760405162461bcd60e51b81526004016105f8906122a2565b610b388282611735565b606414610b875760405162461bcd60e51b815260206004820152601e60248201527f53756d206f662070657263656e7473206d75737420657175616c20313030000060448201526064016105f8565b600c829055600d81905560408051838152602081018390527f012f5df73148ec03a4ac44111fcf100a014ee232c9f1b328180ab5f3996821e5910160405180910390a15050565b6018546001600160a01b0316336001600160a01b031614610bee57600080fd5b6000610bf9306108c1565b90506108be81611794565b6000546001600160a01b03163314610c2e5760405162461bcd60e51b81526004016105f8906122a2565b601c54600160a81b900460ff16610c4457600080fd5b601c805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610c835760405162461bcd60e51b81526004016105f8906122a2565b60008111610cd35760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016105f8565b610cf16064610ceb683635c9adc5dea000008461191d565b90610d71565b601d8190556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200161077a565b6000546001600160a01b03163314610d505760405162461bcd60e51b81526004016105f8906122a2565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000610db383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061199c565b9392505050565b6001600160a01b038316610e1c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105f8565b6001600160a01b038216610e7d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105f8565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610f435760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105f8565b6001600160a01b038216610fa55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105f8565b600081116110075760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105f8565b6000546001600160a01b0384811691161480159061103357506000546001600160a01b03838116911614155b1561156b57601c54600160c01b900460ff1615611117576001600160a01b038316301480159061106c57506001600160a01b0382163014155b80156110865750601b546001600160a01b03848116911614155b80156110a05750601b546001600160a01b03838116911614155b1561111757601b546001600160a01b0316336001600160a01b031614806110da5750601c546001600160a01b0316336001600160a01b0316145b6111175760405162461bcd60e51b815260206004820152600e60248201526d4552523a2042757973206f6e6c7960901b60448201526064016105f8565b6001600160a01b03831660009081526013602052604090205460ff1615801561115957506001600160a01b03821660009081526013602052604090205460ff16155b61116257600080fd5b601c546001600160a01b03848116911614801561118d5750601b546001600160a01b03838116911614155b1561120557601c54600160a01b900460ff166111a857600080fd5b601c54600160d01b900460ff16156111f65760405162461bcd60e51b8152602060048201526011602482015270109d5e5cc8185c9948191a5cd8589b1959607a1b60448201526064016105f8565b601d5481111561120557600080fd5b6000611210306108c1565b601c54909150600160b01b900460ff1615801561123b5750601c546001600160a01b03858116911614155b80156112505750601c54600160b81b900460ff165b80156112655750601c54600160c81b900460ff165b1561156957601254601c5461129491606491610ceb919061128e906001600160a01b03166108c1565b9061191d565b82111580156112a55750601d548211155b6112ae57600080fd5b6001600160a01b03841660009081526015602052604090205442116112d257600080fd5b6001600160a01b03841660009081526016602052604090205442906112fa9062015180612348565b101561131a576001600160a01b0384166000908152601760205260408120555b6001600160a01b0384166000908152601760205260409020546113a7576001600160a01b038416600090815260176020526040812080549161135b836123b8565b90915550506001600160a01b0384166000908152601660205260409020429081905561138990610e10612348565b6001600160a01b0385166000908152601560205260409020556114df565b6001600160a01b038416600090815260176020526040902054600114156113fe576001600160a01b03841660009081526017602052604081208054916113ec836123b8565b90915550611389905042611c20612348565b6001600160a01b03841660009081526017602052604090205460021415611455576001600160a01b0384166000908152601760205260408120805491611443836123b8565b90915550611389905042612a30612348565b6001600160a01b038416600090815260176020526040902054600314156114df576001600160a01b038416600090815260176020526040812080549161149a836123b8565b90915550506001600160a01b0384166000908152601660205260409020546114c59062015180612348565b6001600160a01b0385166000908152601560205260409020555b80156114ee576114ee81611794565b4780156114fe576114fe47611613565b6001600160a01b03851660009081526005602052604090205460ff1615801561154057506001600160a01b03841660009081526005602052604090205460ff16155b15611567576001600160a01b038516600090815260176020526040902054611567906119ca565b505b505b6001600160a01b03831660009081526005602052604090205460019060ff16806115ad57506001600160a01b03831660009081526005602052604090205460ff165b156115b6575060005b6115c284848484611a5a565b6115d3600954600855600b54600a55565b50505050565b600081848411156115fd5760405162461bcd60e51b81526004016105f8919061224d565b50600061160a84866123a1565b95945050505050565b601854600c546001600160a01b03909116906108fc9061163b90606490610ceb90869061191d565b6040518115909202916000818181858888f19350505050158015611663573d6000803e3d6000fd5b50601954600d546001600160a01b03909116906108fc9061168c90606490610ceb90869061191d565b6040518115909202916000818181858888f193505050501580156116b4573d6000803e3d6000fd5b5050565b600060065482111561171f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105f8565b6000611729611aae565b9050610db38382610d71565b6000806117428385612348565b905083811015610db35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105f8565b601c805460ff60b01b1916600160b01b17905560408051600280825260608201835260009260208301908036833701905050905030816000815181106117dc576117dc6123e9565b6001600160a01b03928316602091820292909201810191909152601b54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561183057600080fd5b505afa158015611844573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186891906120fb565b8160018151811061187b5761187b6123e9565b6001600160a01b039283166020918202929092010152601b546118a19130911684610dba565b601b5460405163791ac94760e01b81526001600160a01b039091169063791ac947906118da9085906000908690309042906004016122d7565b600060405180830381600087803b1580156118f457600080fd5b505af1158015611908573d6000803e3d6000fd5b5050601c805460ff60b01b1916905550505050565b60008261192c575060006105c8565b60006119388385612382565b9050826119458583612360565b14610db35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105f8565b600081836119bd5760405162461bcd60e51b81526004016105f8919061224d565b50600061160a8486612360565b80600214806119d95750806004145b15611a11576000600860008282546119f19190612348565b925050819055506000600a6000828254611a0b9190612348565b90915550505b8060011480611a205750806003145b156108be57600460086000828254611a389190612348565b925050819055506001600a6000828254611a529190612348565b909155505050565b80611a6757611a67611ad1565b601c546001600160a01b0385811691161415611a8d57611a88848484611b00565b611a98565b611a98848484611bf7565b806115d3576115d3600954600855600b54600a55565b6000806000611abb611cec565b9092509050611aca8282610d71565b9250505090565b600854158015611ae15750600a54155b15611ae857565b600a8054600b55600880546009556000908190559055565b600080600080600080611b1287611d2e565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611b449087611dc5565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054611b739086611735565b6001600160a01b038916600090815260026020526040902055611b9582611e07565b611b9f8482611ea0565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611be491815260200190565b60405180910390a3505050505050505050565b6000806000806000611c0886611ec4565b6001600160a01b038e16600090815260026020526040902054959a509398509096509450909250611c3b91905086611dc5565b6001600160a01b03808a166000908152600260205260408082209390935590891681522054611c6a9085611735565b6001600160a01b038816600090815260026020526040902055611c8c82611f21565b611c9581611f21565b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611cda91815260200190565b60405180910390a35050505050505050565b6006546000908190683635c9adc5dea00000611d088282610d71565b821015611d2557505060065492683635c9adc5dea0000092509050565b90939092509050565b600080600080600080611d5b60405180606001604052806000815260200160008152602001600081525090565b611d6a88601054600e54611f6b565b6040840152602083015281526000611d80611aae565b90506000806000611d9b8c8660200151876040015187611ff5565b87516020890151604090990151939e50919c509a5098509496509394505050505091939550919395565b6000610db383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115d9565b6000611e11611aae565b90506000611e1f838361191d565b601a546001600160a01b0316600090815260026020526040902054909150611e479082611735565b601a80546001600160a01b03908116600090815260026020908152604091829020949094559154915184815291169130917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610ed2565b600654611ead9083611dc5565b600655600754611ebd9082611735565b6007555050565b6000806000806000806000806000611ee18a600a54600854612045565b9250925092506000611ef1611aae565b90506000806000611f048e87878761208e565b919e509c509a509598509396509194505050505091939550919395565b6000611f2b611aae565b90506000611f39838361191d565b30600090815260026020526040902054909150611f569082611735565b30600090815260026020526040902055505050565b6000806000611f9460405180606001604052806000815260200160008152602001600081525090565b611fa36064610ceb898961191d565b6020820152611fb76064610ceb898861191d565b604082018190526020820151611fd99190611fd3908a90611dc5565b90611dc5565b8082526020820151604090920151909891975095509350505050565b6000808080612004888661191d565b90506000612012888761191d565b90506000612020888861191d565b9050600061203282611fd38686611dc5565b939b939a50909850919650505050505050565b60008080806120596064610ceb898961191d565b9050600061206c6064610ceb8a8961191d565b9050600061207e82611fd38b86611dc5565b9992985090965090945050505050565b600080808061209d888661191d565b905060006120ab888761191d565b905060006120b9888861191d565b905060006120cb82611fd38686611dc5565b939b939a50919850919650505050505050565b6000602082840312156120f057600080fd5b8135610db3816123ff565b60006020828403121561210d57600080fd5b8151610db3816123ff565b6000806040838503121561212b57600080fd5b8235612136816123ff565b91506020830135612146816123ff565b809150509250929050565b60008060006060848603121561216657600080fd5b8335612171816123ff565b92506020840135612181816123ff565b929592945050506040919091013590565b600080604083850312156121a557600080fd5b82356121b0816123ff565b946020939093013593505050565b6000602082840312156121d057600080fd5b81358015158114610db357600080fd5b6000602082840312156121f257600080fd5b5035919050565b6000806040838503121561220c57600080fd5b50508035926020909101359150565b6000806000806080858703121561223157600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b8181101561227a5785810183015185820160400152820161225e565b8181111561228c576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123275784516001600160a01b031683529383019391830191600101612302565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561235b5761235b6123d3565b500190565b60008261237d57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561239c5761239c6123d3565b500290565b6000828210156123b3576123b36123d3565b500390565b60006000198214156123cc576123cc6123d3565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146108be57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205b83e59f69c9708a4d6a4a00e020f2502c552211fc2a24c5b46582cb898ce8af64736f6c63430008060033

Deployed Bytecode Sourcemap

8377:18472:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12105:83;;;;;;;;;;-1:-1:-1;12175:5:0;;;;;;;;;;;;-1:-1:-1;;;12175:5:0;;;;12105:83;;;;;;;:::i;:::-;;;;;;;;12957:161;;;;;;;;;;-1:-1:-1;12957:161:0;;;;;:::i;:::-;;:::i;:::-;;;3175:14:1;;3168:22;3150:41;;3138:2;3123:18;12957:161:0;3105:92:1;12382:95:0;;;;;;;;;;-1:-1:-1;8920:21:0;12382:95;;;10131:25:1;;;10119:2;10104:18;12382:95:0;10086:76:1;18848:120:0;;;;;;;;;;;;;:::i;:::-;;13126:310;;;;;;;;;;-1:-1:-1;13126:310:0;;;;;:::i;:::-;;:::i;9260:33::-;;;;;;;;;;;;;;;;26610:236;;;;;;;;;;-1:-1:-1;26610:236:0;;;;;:::i;:::-;;:::i;12291:83::-;;;;;;;;;;-1:-1:-1;12291:83:0;;8596:1;11943:36:1;;11931:2;11916:18;12291:83:0;11898:87:1;9302:33:0;;;;;;;;;;;;;;;;18718:118;;;;;;;;;;;;;:::i;9404:30::-;;;;;;;;;;;;;;;;25242:111;;;;;;;;;;-1:-1:-1;25242:111:0;;;;;:::i;:::-;;:::i;13444:103::-;;;;;;;;;;-1:-1:-1;13444:103:0;;;;;:::i;:::-;;:::i;19176:191::-;;;;;;;;;;;;;:::i;12485:138::-;;;;;;;;;;-1:-1:-1;12485:138:0;;;;;:::i;:::-;;:::i;7430:148::-;;;;;;;;;;;;;:::i;9221:32::-;;;;;;;;;;;;;;;;7216:79;;;;;;;;;;-1:-1:-1;7254:7:0;7281:6;7216:79;;-1:-1:-1;;;;;7281:6:0;;;2948:51:1;;2936:2;2921:18;7216:79:0;2903:102:1;12196:87:0;;;;;;;;;;-1:-1:-1;12268:7:0;;;;;;;;;;;;-1:-1:-1;;;12268:7:0;;;;12196:87;;9131:27;;;;;;;;;;;;;;;;26079:519;;;;;;;;;;-1:-1:-1;26079:519:0;;;;;:::i;:::-;;:::i;12631:167::-;;;;;;;;;;-1:-1:-1;12631:167:0;;;;;:::i;:::-;;:::i;13559:111::-;;;;;;;;;;-1:-1:-1;13559:111:0;;;;;:::i;:::-;;:::i;25748:319::-;;;;;;;;;;-1:-1:-1;25748:319:0;;;;;:::i;:::-;;:::i;9503:31::-;;;;;;;;;;;;;;;;18976:192;;;;;;;;;;;;;:::i;18595:111::-;;;;;;;;;;;;;:::i;9043:29::-;;;;;;;;;;;;;;;;25481:255;;;;;;;;;;-1:-1:-1;25481:255:0;;;;;:::i;:::-;;:::i;12806:143::-;;;;;;;;;;-1:-1:-1;12806:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;12914:18:0;;;12887:7;12914:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12806:143;25363:110;;;;;;;;;;-1:-1:-1;25363:110:0;;;;;:::i;:::-;;:::i;12957:161::-;13032:4;13049:39;5017:10;13072:7;13081:6;13049:8;:39::i;:::-;-1:-1:-1;13106:4:0;12957:161;;;;;:::o;18848:120::-;7343:6;;-1:-1:-1;;;;;7343:6:0;5017:10;7343:22;7335:67;;;;-1:-1:-1;;;7335:67:0;;;;;;;:::i;:::-;;;;;;;;;18903:8:::1;:16:::0;;-1:-1:-1;;;;18903:16:0::1;::::0;;;;18935:25:::1;::::0;::::1;::::0;::::1;::::0;-1:-1:-1;;;18951:8:0;;::::1;18903:16;18951:8;3175:14:1::0;3168:22;3150:41;;3138:2;3123:18;;3105:92;18935:25:0::1;;;;;;;;18848:120::o:0;13126:310::-;13224:4;13241:36;13251:6;13259:9;13270:6;13241:9;:36::i;:::-;13288:118;13297:6;5017:10;13317:88;13355:6;13317:88;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13317:19:0;;;;;;:11;:19;;;;;;;;5017:10;13317:33;;;;;;;;;;:37;:88::i;:::-;13288:8;:118::i;:::-;-1:-1:-1;13424:4:0;13126:310;;;;;:::o;26610:236::-;7343:6;;-1:-1:-1;;;;;7343:6:0;5017:10;7343:22;7335:67;;;;-1:-1:-1;;;7335:67:0;;;;;;;:::i;:::-;26709:2:::1;26695:11;:16;26687:66;;;::::0;-1:-1:-1;;;26687:66:0;;4410:2:1;26687:66:0::1;::::0;::::1;4392:21:1::0;4449:2;4429:18;;;4422:30;4488:34;4468:18;;;4461:62;-1:-1:-1;;;4539:18:1;;;4532:35;4584:19;;26687:66:0::1;4382:227:1::0;26687:66:0::1;26764:12;:26:::0;;;26806:32:::1;::::0;10131:25:1;;;26806:32:0::1;::::0;10119:2:1;10104:18;26806:32:0::1;;;;;;;;26610:236:::0;:::o;18718:118::-;7343:6;;-1:-1:-1;;;;;7343:6:0;5017:10;7343:22;7335:67;;;;-1:-1:-1;;;7335:67:0;;;;;;;:::i;:::-;18772:8:::1;:15:::0;;-1:-1:-1;;;;18772:15:0::1;-1:-1:-1::0;;;18772:15:0;;::::1;::::0;;;;18803:25:::1;::::0;::::1;::::0;::::1;::::0;18819:8;::::1;18772:15;18819:8;3175:14:1::0;3168:22;3150:41;;3138:2;3123:18;;3105:92;25242:111:0;7343:6;;-1:-1:-1;;;;;7343:6:0;5017:10;7343:22;7335:67;;;;-1:-1:-1;;;7335:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25311:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;25311:34:0::1;25341:4;25311:34;::::0;;25242:111::o;13444:103::-;7343:6;;-1:-1:-1;;;;;7343:6:0;5017:10;7343:22;7335:67;;;;-1:-1:-1;;;7335:67:0;;;;;;;:::i;:::-;13516:15:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;13516:23:0::1;-1:-1:-1::0;;;;13516:23:0;;::::1;::::0;;;::::1;::::0;;13444:103::o;19176:191::-;19242:12;;-1:-1:-1;;;;;19242:12:0;5017:10;-1:-1:-1;;;;;19226:28:0;;19218:37;;;;;;19295:21;19327:32;19295:21;19327:12;:32::i;:::-;19207:160;19176:191::o;12485:138::-;-1:-1:-1;;;;;12598:16:0;;12551:7;12598:16;;;:7;:16;;;;;;12578:37;;:19;:37::i;7430:148::-;7343:6;;-1:-1:-1;;;;;7343:6:0;5017:10;7343:22;7335:67;;;;-1:-1:-1;;;7335:67:0;;;;;;;:::i;:::-;7537:1:::1;7521:6:::0;;7500:40:::1;::::0;-1:-1:-1;;;;;7521:6:0;;::::1;::::0;7500:40:::1;::::0;7537:1;;7500:40:::1;7568:1;7551:19:::0;;-1:-1:-1;;;;;;7551:19:0::1;::::0;;7430:148::o;26079:519::-;7343:6;;-1:-1:-1;;;;;7343:6:0;5017:10;7343:22;7335:67;;;;-1:-1:-1;;;7335:67:0;;;;;;;:::i;:::-;26239:2:::1;26215:21;:8:::0;26228:7;26215:12:::1;:21::i;:::-;:26;26207:76;;;::::0;-1:-1:-1;;;26207:76:0;;8206:2:1;26207:76:0::1;::::0;::::1;8188:21:1::0;8245:2;8225:18;;;8218:30;8284:34;8264:18;;;8257:62;-1:-1:-1;;;8335:18:1;;;8328:35;8380:19;;26207:76:0::1;8178:227:1::0;26207:76:0::1;26334:2;26302:29;:13:::0;26320:10;26302:17:::1;:29::i;:::-;:34;26294:83;;;::::0;-1:-1:-1;;;26294:83:0;;9782:2:1;26294:83:0::1;::::0;::::1;9764:21:1::0;9821:2;9801:18;;;9794:30;9860:34;9840:18;;;9833:62;-1:-1:-1;;;9911:18:1;;;9904:34;9955:19;;26294:83:0::1;9754:226:1::0;26294:83:0::1;26388:9;:20:::0;;;26419:8:::1;:18:::0;;;26448:14:::1;:30:::0;;;26489:11:::1;:24:::0;;;26529:61:::1;::::0;;11636:25:1;;;11692:2;11677:18;;11670:34;;;11720:18;;;11713:34;;;11778:2;11763:18;;11756:34;;;26529:61:0::1;::::0;11623:3:1;11608:19;26529:61:0::1;;;;;;;26079:519:::0;;;;:::o;12631:167::-;12709:4;12726:42;5017:10;12750:9;12761:6;12726:9;:42::i;13559:111::-;7343:6;;-1:-1:-1;;;;;7343:6:0;5017:10;7343:22;7335:67;;;;-1:-1:-1;;;7335:67:0;;;;;;;:::i;:::-;13635:19:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;13635:27:0::1;-1:-1:-1::0;;;;13635:27:0;;::::1;::::0;;;::::1;::::0;;13559:111::o;25748:319::-;7343:6;;-1:-1:-1;;;;;7343:6:0;5017:10;7343:22;7335:67;;;;-1:-1:-1;;;7335:67:0;;;;;;;:::i;:::-;25852:29:::1;:11:::0;25868:12;25852:15:::1;:29::i;:::-;25885:3;25852:36;25844:79;;;::::0;-1:-1:-1;;;25844:79:0;;8612:2:1;25844:79:0::1;::::0;::::1;8594:21:1::0;8651:2;8631:18;;;8624:30;8690:32;8670:18;;;8663:60;8740:18;;25844:79:0::1;8584:180:1::0;25844:79:0::1;25934:12;:26:::0;;;25971:13:::1;:28:::0;;;26015:44:::1;::::0;;11326:25:1;;;11382:2;11367:18;;11360:34;;;26015:44:0::1;::::0;11299:18:1;26015:44:0::1;;;;;;;25748:319:::0;;:::o;18976:192::-;19042:12;;-1:-1:-1;;;;;19042:12:0;5017:10;-1:-1:-1;;;;;19026:28:0;;19018:37;;;;;;19066:23;19092:24;19110:4;19092:9;:24::i;:::-;19066:50;;19127:33;19144:15;19127:16;:33::i;18595:111::-;7343:6;;-1:-1:-1;;;;;7343:6:0;5017:10;7343:22;7335:67;;;;-1:-1:-1;;;7335:67:0;;;;;;;:::i;:::-;18654:14:::1;::::0;-1:-1:-1;;;18654:14:0;::::1;;;18646:23;;;::::0;::::1;;18680:11;:18:::0;;-1:-1:-1;;;;18680:18:0::1;-1:-1:-1::0;;;18680:18:0::1;::::0;;18595:111::o;25481:255::-;7343:6;;-1:-1:-1;;;;;7343:6:0;5017:10;7343:22;7335:67;;;;-1:-1:-1;;;7335:67:0;;;;;;;:::i;:::-;25583:1:::1;25568:12;:16;25560:58;;;::::0;-1:-1:-1;;;25560:58:0;;6675:2:1;25560:58:0::1;::::0;::::1;6657:21:1::0;6714:2;6694:18;;;6687:30;6753:31;6733:18;;;6726:59;6802:18;;25560:58:0::1;6647:179:1::0;25560:58:0::1;25644:36;25674:5;25644:25;8920:21;25656:12:::0;25644:11:::1;:25::i;:::-;:29:::0;::::1;:36::i;:::-;25629:12;:51:::0;;;25696:32:::1;::::0;10131:25:1;;;25696:32:0::1;::::0;10119:2:1;10104:18;25696:32:0::1;10086:76:1::0;25363:110:0;7343:6;;-1:-1:-1;;;;;7343:6:0;5017:10;7343:22;7335:67;;;;-1:-1:-1;;;7335:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25430:27:0::1;25460:5;25430:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;25430:35:0::1;::::0;;25363:110::o;6526:132::-;6584:7;6611:39;6615:1;6618;6611:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6604:46;6526:132;-1:-1:-1;;;6526:132:0:o;14607:335::-;-1:-1:-1;;;;;14700:19:0;;14692:68;;;;-1:-1:-1;;;14692:68:0;;9377:2:1;14692:68:0;;;9359:21:1;9416:2;9396:18;;;9389:30;9455:34;9435:18;;;9428:62;-1:-1:-1;;;9506:18:1;;;9499:34;9550:19;;14692:68:0;9349:226:1;14692:68:0;-1:-1:-1;;;;;14779:21:0;;14771:68;;;;-1:-1:-1;;;14771:68:0;;5227:2:1;14771:68:0;;;5209:21:1;5266:2;5246:18;;;5239:30;5305:34;5285:18;;;5278:62;-1:-1:-1;;;5356:18:1;;;5349:32;5398:19;;14771:68:0;5199:224:1;14771:68:0;-1:-1:-1;;;;;14850:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14902:32;;10131:25:1;;;14902:32:0;;10104:18:1;14902:32:0;;;;;;;;14607:335;;;:::o;14950:3020::-;-1:-1:-1;;;;;15038:18:0;;15030:68;;;;-1:-1:-1;;;15030:68:0;;8971:2:1;15030:68:0;;;8953:21:1;9010:2;8990:18;;;8983:30;9049:34;9029:18;;;9022:62;-1:-1:-1;;;9100:18:1;;;9093:35;9145:19;;15030:68:0;8943:227:1;15030:68:0;-1:-1:-1;;;;;15117:16:0;;15109:64;;;;-1:-1:-1;;;15109:64:0;;4006:2:1;15109:64:0;;;3988:21:1;4045:2;4025:18;;;4018:30;4084:34;4064:18;;;4057:62;-1:-1:-1;;;4135:18:1;;;4128:33;4178:19;;15109:64:0;3978:225:1;15109:64:0;15201:1;15192:6;:10;15184:64;;;;-1:-1:-1;;;15184:64:0;;7796:2:1;15184:64:0;;;7778:21:1;7835:2;7815:18;;;7808:30;7874:34;7854:18;;;7847:62;-1:-1:-1;;;7925:18:1;;;7918:39;7974:19;;15184:64:0;7768:231:1;15184:64:0;7254:7;7281:6;-1:-1:-1;;;;;15265:15:0;;;7281:6;;15265:15;;;;:32;;-1:-1:-1;7254:7:0;7281:6;-1:-1:-1;;;;;15284:13:0;;;7281:6;;15284:13;;15265:32;15261:2474;;;15318:15;;-1:-1:-1;;;15318:15:0;;;;15314:354;;;-1:-1:-1;;;;;15395:21:0;;15411:4;15395:21;;;;:44;;-1:-1:-1;;;;;;15420:19:0;;15434:4;15420:19;;15395:44;:80;;;;-1:-1:-1;15459:15:0;;-1:-1:-1;;;;;15443:32:0;;;15459:15;;15443:32;;15395:80;:114;;;;-1:-1:-1;15493:15:0;;-1:-1:-1;;;;;15479:30:0;;;15493:15;;15479:30;;15395:114;15391:262;;;15566:15;;-1:-1:-1;;;;;15566:15:0;5017:10;-1:-1:-1;;;;;15542:40:0;;:73;;;-1:-1:-1;15602:13:0;;-1:-1:-1;;;;;15602:13:0;5017:10;-1:-1:-1;;;;;15586:29:0;;15542:73;15534:99;;;;-1:-1:-1;;;15534:99:0;;5630:2:1;15534:99:0;;;5612:21:1;5669:2;5649:18;;;5642:30;-1:-1:-1;;;5688:18:1;;;5681:44;5742:18;;15534:99:0;5602:164:1;15534:99:0;-1:-1:-1;;;;;15691:10:0;;;;;;:4;:10;;;;;;;;15690:11;:24;;;;-1:-1:-1;;;;;;15706:8:0;;;;;;:4;:8;;;;;;;;15705:9;15690:24;15682:33;;;;;;15742:13;;-1:-1:-1;;;;;15734:21:0;;;15742:13;;15734:21;:55;;;;-1:-1:-1;15773:15:0;;-1:-1:-1;;;;;15759:30:0;;;15773:15;;15759:30;;15734:55;15730:230;;;15824:11;;-1:-1:-1;;;15824:11:0;;;;15816:20;;;;;;15864:8;;-1:-1:-1;;;15864:8:0;;;;15863:9;15855:39;;;;-1:-1:-1;;;15855:39:0;;6329:2:1;15855:39:0;;;6311:21:1;6368:2;6348:18;;;6341:30;-1:-1:-1;;;6387:18:1;;;6380:47;6444:18;;15855:39:0;6301:167:1;15855:39:0;15931:12;;15921:6;:22;;15913:31;;;;;;15974:28;16005:24;16023:4;16005:9;:24::i;:::-;16049:6;;15974:55;;-1:-1:-1;;;;16049:6:0;;;;16048:7;:32;;;;-1:-1:-1;16067:13:0;;-1:-1:-1;;;;;16059:21:0;;;16067:13;;16059:21;;16048:32;:47;;;;-1:-1:-1;16084:11:0;;-1:-1:-1;;;16084:11:0;;;;16048:47;:70;;;;-1:-1:-1;16099:19:0;;-1:-1:-1;;;16099:19:0;;;;16048:70;16044:1680;;;16223:12;;16204:13;;16194:51;;16241:3;;16194:42;;16223:12;16194:24;;-1:-1:-1;;;;;16204:13:0;16194:9;:24::i;:::-;:28;;:42::i;:51::-;16184:6;:61;;:87;;;;;16259:12;;16249:6;:22;;16184:87;16176:96;;;;;;-1:-1:-1;;;;;16299:18:0;;;;;;:12;:18;;;;;;16320:15;-1:-1:-1;16291:45:0;;;;;;-1:-1:-1;;;;;16358:15:0;;;;;;:9;:15;;;;;;16387;;16358:26;;16377:6;16358:26;:::i;:::-;:44;16355:111;;;-1:-1:-1;;;;;16426:16:0;;16445:1;16426:16;;;:10;:16;;;;;:20;16355:111;-1:-1:-1;;;;;16488:16:0;;;;;;:10;:16;;;;;;16484:760;;-1:-1:-1;;;;;16534:16:0;;;;;;:10;:16;;;;;:18;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;16575:15:0;;;;;;:9;:15;;;;;16593;16575:33;;;;16652:27;;16671:7;16652:27;:::i;:::-;-1:-1:-1;;;;;16631:18:0;;;;;;:12;:18;;;;;:48;16484:760;;;-1:-1:-1;;;;;16726:16:0;;;;;;:10;:16;;;;;;16746:1;16726:21;16722:522;;;-1:-1:-1;;;;;16772:16:0;;;;;;:10;:16;;;;;:18;;;;;;:::i;:::-;;;;-1:-1:-1;16834:27:0;;-1:-1:-1;16834:15:0;16853:7;16834:27;:::i;16722:522::-;-1:-1:-1;;;;;16908:16:0;;;;;;:10;:16;;;;;;16928:1;16908:21;16904:340;;;-1:-1:-1;;;;;16954:16:0;;;;;;:10;:16;;;;;:18;;;;;;:::i;:::-;;;;-1:-1:-1;17016:27:0;;-1:-1:-1;17016:15:0;17035:7;17016:27;:::i;16904:340::-;-1:-1:-1;;;;;17090:16:0;;;;;;:10;:16;;;;;;17110:1;17090:21;17086:158;;;-1:-1:-1;;;;;17136:16:0;;;;;;:10;:16;;;;;:18;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;17198:15:0;;;;;;:9;:15;;;;;;:26;;17217:6;17198:26;:::i;:::-;-1:-1:-1;;;;;17177:18:0;;;;;;:12;:18;;;;;:47;17086:158;17266:24;;17262:111;;17315:38;17332:20;17315:16;:38::i;:::-;17420:21;17464:22;;17460:106;;17511:35;17524:21;17511:12;:35::i;:::-;-1:-1:-1;;;;;17589:24:0;;;;;;:18;:24;;;;;;;;17588:25;:52;;;;-1:-1:-1;;;;;;17618:22:0;;;;;;:18;:22;;;;;;;;17617:23;17588:52;17584:125;;;-1:-1:-1;;;;;17672:16:0;;;;;;:10;:16;;;;;;17665:24;;:6;:24::i;:::-;16120:1604;16044:1680;15299:2436;15261:2474;-1:-1:-1;;;;;17781:24:0;;17745:12;17781:24;;;:18;:24;;;;;;17760:4;;17781:24;;;:50;;-1:-1:-1;;;;;;17809:22:0;;;;;;:18;:22;;;;;;;;17781:50;17777:98;;;-1:-1:-1;17858:5:0;17777:98;17895:41;17910:4;17916:2;17920:6;17928:7;17895:14;:41::i;:::-;17947:15;14226:17;;14214:9;:29;14265:16;;14254:8;:27;14170:119;17947:15;15019:2951;14950:3020;;;:::o;6074:190::-;6160:7;6196:12;6188:6;;;;6180:29;;;;-1:-1:-1;;;6180:29:0;;;;;;;;:::i;:::-;-1:-1:-1;6220:9:0;6232:5;6236:1;6232;:5;:::i;:::-;6220:17;6074:190;-1:-1:-1;;;;;6074:190:0:o;18393:::-;18450:12;;18483;;-1:-1:-1;;;;;18450:12:0;;;;:56;;18472:33;;18501:3;;18472:24;;:6;;:10;:24::i;:33::-;18450:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18517:13:0;;18551;;-1:-1:-1;;;;;18517:13:0;;;;:58;;18540:34;;18570:3;;18540:25;;:6;;:10;:25::i;:34::-;18517:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18393:190;:::o;13678:253::-;13746:7;13785;;13774;:18;;13766:72;;;;-1:-1:-1;;;13766:72:0;;4816:2:1;13766:72:0;;;4798:21:1;4855:2;4835:18;;;4828:30;4894:34;4874:18;;;4867:62;-1:-1:-1;;;4945:18:1;;;4938:40;4995:19;;13766:72:0;4788:232:1;13766:72:0;13849:19;13871:10;:8;:10::i;:::-;13849:32;-1:-1:-1;13899:24:0;:7;13849:32;13899:11;:24::i;5743:179::-;5801:7;;5833:5;5837:1;5833;:5;:::i;:::-;5821:17;;5862:1;5857;:6;;5849:46;;;;-1:-1:-1;;;5849:46:0;;5973:2:1;5849:46:0;;;5955:21:1;6012:2;5992:18;;;5985:30;6051:29;6031:18;;;6024:57;6098:18;;5849:46:0;5945:177:1;17978:407:0;10997:6;:13;;-1:-1:-1;;;;10997:13:0;-1:-1:-1;;;10997:13:0;;;18080:16:::1;::::0;;18094:1:::1;18080:16:::0;;;;;::::1;::::0;;-1:-1:-1;;18080:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18080:16:0::1;18056:40;;18125:4;18107;18112:1;18107:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18107:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;18151:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;18151:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;18107:7;;18151:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18141:4;18146:1;18141:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18141:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;18216:15:::1;::::0;18184:62:::1;::::0;18201:4:::1;::::0;18216:15:::1;18234:11:::0;18184:8:::1;:62::i;:::-;18257:15;::::0;:120:::1;::::0;-1:-1:-1;;;18257:120:0;;-1:-1:-1;;;;;18257:15:0;;::::1;::::0;:66:::1;::::0;:120:::1;::::0;18324:11;;18257:15:::1;::::0;18340:4;;18354::::1;::::0;18361:15:::1;::::0;18257:120:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11033:6:0;:14;;-1:-1:-1;;;;11033:14:0;;;-1:-1:-1;;;;17978:407:0:o;6272:246::-;6330:7;6354:6;6350:47;;-1:-1:-1;6384:1:0;6377:8;;6350:47;6407:9;6419:5;6423:1;6419;:5;:::i;:::-;6407:17;-1:-1:-1;6452:1:0;6443:5;6447:1;6407:17;6443:5;:::i;:::-;:10;6435:56;;;;-1:-1:-1;;;6435:56:0;;7033:2:1;6435:56:0;;;7015:21:1;7072:2;7052:18;;;7045:30;7111:34;7091:18;;;7084:62;-1:-1:-1;;;7162:18:1;;;7155:31;7203:19;;6435:56:0;7005:223:1;6666:189:0;6752:7;6787:12;6780:5;6772:28;;;;-1:-1:-1;;;6772:28:0;;;;;;;;:::i;:::-;-1:-1:-1;6811:9:0;6823:5;6827:1;6823;:5;:::i;14301:298::-;14370:10;14384:1;14370:15;:34;;;;14389:10;14403:1;14389:15;14370:34;14366:108;;;14433:1;14420:9;;:14;;;;;;;:::i;:::-;;;;;;;;14461:1;14449:8;;:13;;;;;;;:::i;:::-;;;;-1:-1:-1;;14366:108:0;14488:10;14502:1;14488:15;:34;;;;14507:10;14521:1;14507:15;14488:34;14484:108;;;14551:1;14538:9;;:14;;;;;;;:::i;:::-;;;;;;;;14579:1;14567:8;;:13;;;;;;;:::i;:::-;;;;-1:-1:-1;;14301:298:0;:::o;19375:473::-;19488:7;19483:28;;19497:14;:12;:14::i;:::-;19536:13;;-1:-1:-1;;;;;19526:23:0;;;19536:13;;19526:23;19522:279;;;19602:47;19623:6;19631:9;19642:6;19602:20;:47::i;:::-;19522:279;;;19691:48;19713:6;19721:9;19732:6;19691:21;:48::i;:::-;19816:7;19811:29;;19825:15;14226:17;;14214:9;:29;14265:16;;14254:8;:27;14170:119;24801:164;24843:7;24864:15;24881;24900:19;:17;:19::i;:::-;24863:56;;-1:-1:-1;24863:56:0;-1:-1:-1;24937:20:0;24863:56;;24937:11;:20::i;:::-;24930:27;;;;24801:164;:::o;13943:219::-;13990:9;;:14;:31;;;;-1:-1:-1;14008:8:0;;:13;13990:31;13986:44;;;13943:219::o;13986:44::-;14059:8;;;14040:16;:27;14098:9;;;14078:17;:29;-1:-1:-1;14118:13:0;;;;14142:12;;13943:219::o;19856:530::-;19958:15;19975:23;20000:19;20021:23;20046:16;20064:19;20087:22;20101:7;20087:13;:22::i;:::-;-1:-1:-1;;;;;20138:15:0;;;;;;:7;:15;;;;;;19957:152;;-1:-1:-1;19957:152:0;;-1:-1:-1;19957:152:0;;-1:-1:-1;19957:152:0;-1:-1:-1;19957:152:0;-1:-1:-1;19957:152:0;-1:-1:-1;20138:28:0;;19957:152;20138:19;:28::i;:::-;-1:-1:-1;;;;;20120:15:0;;;;;;;:7;:15;;;;;;:46;;;;20198:18;;;;;;;:39;;20221:15;20198:22;:39::i;:::-;-1:-1:-1;;;;;20177:18:0;;;;;;:7;:18;;;;;:60;20248:22;20261:8;20248:12;:22::i;:::-;20281:37;20293:11;20306;20281;:37::i;:::-;20351:9;-1:-1:-1;;;;;20334:44:0;20343:6;-1:-1:-1;;;;;20334:44:0;;20362:15;20334:44;;;;10131:25:1;;10119:2;10104:18;;10086:76;20334:44:0;;;;;;;;19946:440;;;;;;19856:530;;;:::o;20889:479::-;20992:15;21009:23;21035;21060:13;21075:14;21093:23;21108:7;21093:14;:23::i;:::-;-1:-1:-1;;;;;21145:15:0;;;;;;:7;:15;;;;;;20991:125;;-1:-1:-1;20991:125:0;;-1:-1:-1;20991:125:0;;-1:-1:-1;20991:125:0;-1:-1:-1;20991:125:0;;-1:-1:-1;21145:28:0;;:15;-1:-1:-1;20991:125:0;21145:19;:28::i;:::-;-1:-1:-1;;;;;21127:15:0;;;;;;;:7;:15;;;;;;:46;;;;21205:18;;;;;;;:39;;21228:15;21205:22;:39::i;:::-;-1:-1:-1;;;;;21184:18:0;;;;;;:7;:18;;;;;:60;21255:16;21265:5;21255:9;:16::i;:::-;21282:18;21293:6;21282:10;:18::i;:::-;21333:9;-1:-1:-1;;;;;21316:44:0;21325:6;-1:-1:-1;;;;;21316:44:0;;21344:15;21316:44;;;;10131:25:1;;10119:2;10104:18;;10086:76;21316:44:0;;;;;;;;20980:388;;;;;20889:479;;;:::o;24973:257::-;25071:7;;25024;;;;8920:21;25139:20;25071:7;8920:21;25139:11;:20::i;:::-;25129:7;:30;25125:61;;;-1:-1:-1;;25169:7:0;;;8920:21;;-1:-1:-1;24973:257:0;-1:-1:-1;24973:257:0:o;25125:61::-;25205:7;;25214;;-1:-1:-1;24973:257:0;-1:-1:-1;24973:257:0:o;23205:608::-;23267:7;23276;23285;23294;23303;23312;23332:27;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;23332:27:0;23437:52;23452:7;23461:11;;23474:14;;23437;:52::i;:::-;23414:19;;;23370:119;23396:16;;;23370:119;;;23371:23;23522:10;:8;:10::i;:::-;23500:32;;23544:15;23561:23;23586:19;23609:75;23624:7;23633;:16;;;23651:7;:19;;;23672:11;23609:14;:75::i;:::-;23742:23;;23767:16;;;;23785:19;;;;;23543:141;;-1:-1:-1;23543:141:0;;-1:-1:-1;23543:141:0;-1:-1:-1;23742:23:0;-1:-1:-1;23767:16:0;;-1:-1:-1;23785:19:0;;-1:-1:-1;;;;;23205:608:0;;;;;;;:::o;5930:136::-;5988:7;6015:43;6019:1;6022;6015:43;;;;;;;;;;;;;;;;;:3;:43::i;20398:296::-;20457:19;20479:10;:8;:10::i;:::-;20457:32;-1:-1:-1;20500:16:0;20519:25;:8;20457:32;20519:12;:25::i;:::-;20590:15;;-1:-1:-1;;;;;20590:15:0;20582:24;;;;:7;:24;;;;;;20500:44;;-1:-1:-1;20582:38:0;;20500:44;20582:28;:38::i;:::-;20563:15;;;-1:-1:-1;;;;;20563:15:0;;;20555:24;;;;:7;:24;;;;;;;;;:65;;;;20660:15;;20636:50;;10131:25:1;;;20660:15:0;;;20653:4;;20636:50;;10104:18:1;20636:50:0;10086:76:1;20702:175:0;20794:7;;:24;;20806:11;20794;:24::i;:::-;20784:7;:34;20842:10;;:27;;20857:11;20842:14;:27::i;:::-;20829:10;:40;-1:-1:-1;;20702:175:0:o;21883:489::-;21946:7;21955;21964;21973;21982;21991;22012:23;22037:13;22052:14;22070:45;22086:7;22095:8;;22105:9;;22070:15;:45::i;:::-;22011:104;;;;;;22126:19;22148:10;:8;:10::i;:::-;22126:32;;22170:15;22187:23;22212:13;22229:52;22245:7;22254:5;22261:6;22269:11;22229:15;:52::i;:::-;22169:112;;-1:-1:-1;22169:112:0;-1:-1:-1;22169:112:0;-1:-1:-1;22333:15:0;;-1:-1:-1;22350:5:0;;-1:-1:-1;22357:6:0;;-1:-1:-1;;;;;21883:489:0;;;;;;;:::o;21376:211::-;21429:19;21451:10;:8;:10::i;:::-;21429:32;-1:-1:-1;21472:13:0;21488:22;:5;21429:32;21488:9;:22::i;:::-;21562:4;21546:22;;;;:7;:22;;;;;;21472:38;;-1:-1:-1;21546:33:0;;21472:38;21546:26;:33::i;:::-;21537:4;21521:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;21376:211:0:o;23821:501::-;23927:7;23936;23945;23965:28;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;23965:28:0;24034:32;24062:3;24034:23;:7;24046:10;24034:11;:23::i;:32::-;24014:17;;;:52;24100:35;24131:3;24100:26;:7;24112:13;24100:11;:26::i;:35::-;24077:20;;;:58;;;24185:17;;;;24173:56;;24077:58;24173:30;;:7;;:11;:30::i;:::-;:34;;:56::i;:::-;24146:83;;;24274:17;;;;24293:20;;;;;24146:83;;24274:17;;-1:-1:-1;24293:20:0;-1:-1:-1;23821:501:0;-1:-1:-1;;;;23821:501:0:o;24330:459::-;24453:7;;;;24509:24;:7;24521:11;24509;:24::i;:::-;24491:42;-1:-1:-1;24544:16:0;24563:25;:8;24576:11;24563:12;:25::i;:::-;24544:44;-1:-1:-1;24599:19:0;24621:28;:11;24637;24621:15;:28::i;:::-;24599:50;-1:-1:-1;24660:23:0;24686:38;24599:50;24686:21;:7;24698:8;24686:11;:21::i;:38::-;24743:7;;;;-1:-1:-1;24769:11:0;;-1:-1:-1;24330:459:0;;-1:-1:-1;;;;;;;24330:459:0:o;22380:365::-;22479:7;;;;22533:29;22558:3;22533:20;:7;22545;22533:11;:20::i;:29::-;22517:45;-1:-1:-1;22573:14:0;22590:30;22616:3;22590:21;:7;22602:8;22590:11;:21::i;:30::-;22573:47;-1:-1:-1;22631:23:0;22657:30;22573:47;22657:18;:7;22669:5;22657:11;:18::i;:30::-;22631:56;22723:5;;-1:-1:-1;22730:6:0;;-1:-1:-1;22380:365:0;;-1:-1:-1;;;;;22380:365:0:o;22753:422::-;22869:7;;;;22925:24;:7;22937:11;22925;:24::i;:::-;22907:42;-1:-1:-1;22960:13:0;22976:22;:5;22986:11;22976:9;:22::i;:::-;22960:38;-1:-1:-1;23009:14:0;23026:23;:6;23037:11;23026:10;:23::i;:::-;23009:40;-1:-1:-1;23060:23:0;23086:30;23009:40;23086:18;:7;23098:5;23086:11;:18::i;:30::-;23135:7;;;;-1:-1:-1;23161:5:0;;-1:-1:-1;22753:422:0;;-1:-1:-1;;;;;;;22753:422:0:o;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;142:1;139;132:12;94:2;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:2;;;405:1;402;395:12;357:2;437:9;431:16;456:31;481:5;456:31;:::i;522:388::-;590:6;598;651:2;639:9;630:7;626:23;622:32;619:2;;;667:1;664;657:12;619:2;706:9;693:23;725:31;750:5;725:31;:::i;:::-;775:5;-1:-1:-1;832:2:1;817:18;;804:32;845:33;804:32;845:33;:::i;:::-;897:7;887:17;;;609:301;;;;;:::o;915:456::-;992:6;1000;1008;1061:2;1049:9;1040:7;1036:23;1032:32;1029:2;;;1077:1;1074;1067:12;1029:2;1116:9;1103:23;1135:31;1160:5;1135:31;:::i;:::-;1185:5;-1:-1:-1;1242:2:1;1227:18;;1214:32;1255:33;1214:32;1255:33;:::i;:::-;1019:352;;1307:7;;-1:-1:-1;;;1361:2:1;1346:18;;;;1333:32;;1019:352::o;1376:315::-;1444:6;1452;1505:2;1493:9;1484:7;1480:23;1476:32;1473:2;;;1521:1;1518;1511:12;1473:2;1560:9;1547:23;1579:31;1604:5;1579:31;:::i;:::-;1629:5;1681:2;1666:18;;;;1653:32;;-1:-1:-1;;;1463:228:1:o;1696:273::-;1752:6;1805:2;1793:9;1784:7;1780:23;1776:32;1773:2;;;1821:1;1818;1811:12;1773:2;1860:9;1847:23;1913:5;1906:13;1899:21;1892:5;1889:32;1879:2;;1935:1;1932;1925:12;1974:180;2033:6;2086:2;2074:9;2065:7;2061:23;2057:32;2054:2;;;2102:1;2099;2092:12;2054:2;-1:-1:-1;2125:23:1;;2044:110;-1:-1:-1;2044:110:1:o;2159:248::-;2227:6;2235;2288:2;2276:9;2267:7;2263:23;2259:32;2256:2;;;2304:1;2301;2294:12;2256:2;-1:-1:-1;;2327:23:1;;;2397:2;2382:18;;;2369:32;;-1:-1:-1;2246:161:1:o;2412:385::-;2498:6;2506;2514;2522;2575:3;2563:9;2554:7;2550:23;2546:33;2543:2;;;2592:1;2589;2582:12;2543:2;-1:-1:-1;;2615:23:1;;;2685:2;2670:18;;2657:32;;-1:-1:-1;2736:2:1;2721:18;;2708:32;;2787:2;2772:18;2759:32;;-1:-1:-1;2533:264:1;-1:-1:-1;2533:264:1:o;3202:597::-;3314:4;3343:2;3372;3361:9;3354:21;3404:6;3398:13;3447:6;3442:2;3431:9;3427:18;3420:34;3472:1;3482:140;3496:6;3493:1;3490:13;3482:140;;;3591:14;;;3587:23;;3581:30;3557:17;;;3576:2;3553:26;3546:66;3511:10;;3482:140;;;3640:6;3637:1;3634:13;3631:2;;;3710:1;3705:2;3696:6;3685:9;3681:22;3677:31;3670:42;3631:2;-1:-1:-1;3783:2:1;3762:15;-1:-1:-1;;3758:29:1;3743:45;;;;3790:2;3739:54;;3323:476;-1:-1:-1;;;3323:476:1:o;7233:356::-;7435:2;7417:21;;;7454:18;;;7447:30;7513:34;7508:2;7493:18;;7486:62;7580:2;7565:18;;7407:182::o;10167:980::-;10429:4;10477:3;10466:9;10462:19;10508:6;10497:9;10490:25;10534:2;10572:6;10567:2;10556:9;10552:18;10545:34;10615:3;10610:2;10599:9;10595:18;10588:31;10639:6;10674;10668:13;10705:6;10697;10690:22;10743:3;10732:9;10728:19;10721:26;;10782:2;10774:6;10770:15;10756:29;;10803:1;10813:195;10827:6;10824:1;10821:13;10813:195;;;10892:13;;-1:-1:-1;;;;;10888:39:1;10876:52;;10983:15;;;;10948:12;;;;10924:1;10842:9;10813:195;;;-1:-1:-1;;;;;;;11064:32:1;;;;11059:2;11044:18;;11037:60;-1:-1:-1;;;11128:3:1;11113:19;11106:35;11025:3;10438:709;-1:-1:-1;;;10438:709:1:o;11990:128::-;12030:3;12061:1;12057:6;12054:1;12051:13;12048:2;;;12067:18;;:::i;:::-;-1:-1:-1;12103:9:1;;12038:80::o;12123:217::-;12163:1;12189;12179:2;;12233:10;12228:3;12224:20;12221:1;12214:31;12268:4;12265:1;12258:15;12296:4;12293:1;12286:15;12179:2;-1:-1:-1;12325:9:1;;12169:171::o;12345:168::-;12385:7;12451:1;12447;12443:6;12439:14;12436:1;12433:21;12428:1;12421:9;12414:17;12410:45;12407:2;;;12458:18;;:::i;:::-;-1:-1:-1;12498:9:1;;12397:116::o;12518:125::-;12558:4;12586:1;12583;12580:8;12577:2;;;12591:18;;:::i;:::-;-1:-1:-1;12628:9:1;;12567:76::o;12648:135::-;12687:3;-1:-1:-1;;12708:17:1;;12705:2;;;12728:18;;:::i;:::-;-1:-1:-1;12775:1:1;12764:13;;12695:88::o;12788:127::-;12849:10;12844:3;12840:20;12837:1;12830:31;12880:4;12877:1;12870:15;12904:4;12901:1;12894:15;12920:127;12981:10;12976:3;12972:20;12969:1;12962:31;13012:4;13009:1;13002:15;13036:4;13033:1;13026:15;13184:131;-1:-1:-1;;;;;13259:31:1;;13249:42;;13239:2;;13305:1;13302;13295:12

Swarm Source

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