ETH Price: $2,531.34 (+0.40%)

Token

ShibaTerra Inu ($STI)
 

Overview

Max Total Supply

100,000,000 $STI

Holders

65

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
76,530.151127709864921357 $STI

Value
$0.00
0xfd09292C1502dd6Ec3012Cc8910c1e3f5b1a8163
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ShibaTerra

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-23
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.10;

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

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

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

}

abstract contract Ownable {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
contract ShibaTerra is IERC20, Ownable
{
    //@TresFlames
    //mapping
    mapping (address => uint) private _balances;
    mapping (address => mapping (address => uint)) private _allowances;
    mapping(address => bool) private excludedFromLimits;
    mapping(address => bool) public excludedFromFees;
    mapping(address=>bool) public isPair;
    mapping (address => bool) public isBlacklisted;
    //strings
    string private constant _name = 'ShibaTerra Inu';
    string private constant _symbol = '$STI';
    //uints
    uint private constant DefaultLiquidityLockTime=7 days;
    uint public constant InitialSupply= 10**8 * 10**_decimals;
    uint public _circulatingSupply =InitialSupply;
    uint public buyTax = 10;
    uint public sellTax = 10;
    uint public transferTax = 10;
    uint public liquidityTax=100;
    uint public projectTax=900;
    uint constant TAX_DENOMINATOR=1000;
    uint constant MAXTAXDENOMINATOR=10;
    uint public swapTreshold=6;
    uint public overLiquifyTreshold=40;
    uint private LaunchTimestamp;
    uint _liquidityUnlockTime;
    uint8 private constant _decimals = 18;
    uint256 public maxTransactionAmount;
    uint256 public maxWalletBalance;

    IdexRouter private  _dexRouter;
    
    //addresses
    address private dexRouter=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address private _dexPairAddress;
    address constant deadWallet = 0x000000000000000000000000000000000000dEaD;
    address payable public projectWallet;
    //modifiers

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

    //bools
    bool private _isSwappingContractModifier;
    bool public blacklistMode = true;
    bool public manualSwap;
    bool public LPReleaseLimitedTo20Percent;
    
    //events
    event BlacklistStatusChange(bool status);
    event UpdateProjectWallet(address _address);
    event SwapThresholdChange(uint threshold);
    event OverLiquifiedThresholdChange(uint threshold);
    event OnSetTaxes(uint buy, uint sell, uint transfer_, uint project,uint liquidity);
    event ManualSwapChange(bool status);
    event MaxWalletBalanceUpdated(uint256 percent);
    event MaxTransactionAmountUpdated(uint256 percent);
    event ExcludeAccount(address account, bool exclude);
    event ExcludeFromLimits(address account, bool exclude);
    event OwnerSwap();
    event OnEnableTrading();
    event OnProlongLPLock(uint UnlockTimestamp);
    event OnReleaseLP();
    event RecoverETH();
    event BlacklistUpdated();
    event NewPairSet(address Pair, bool Add);
    event Release20PercentLP();
    event NewRouterSet(address _newdex);
    event RecoverTokens(uint256 amount);
    
    constructor () {
        uint deployerBalance=_circulatingSupply;
        _balances[msg.sender] = deployerBalance;
        emit Transfer(address(0), msg.sender, deployerBalance);
        _dexRouter = IdexRouter(dexRouter);
        _dexPairAddress = IdexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        isPair[_dexPairAddress]=true;
        
        projectWallet = payable(0x4efb68B8A7de411BC5aD04515C3bCa7A9870bC3B);

        excludedFromFees[msg.sender]=true;
        excludedFromFees[dexRouter]=true;
        excludedFromFees[address(this)]=true;
        excludedFromFees[projectWallet]=true;
        excludedFromLimits[projectWallet] = true;
        excludedFromLimits[msg.sender] = true;
        excludedFromLimits[deadWallet] = true;
        excludedFromLimits[address(this)] = true;
    }
    
    function enable_blacklist(bool _status) public onlyOwner {
        blacklistMode = _status;
        emit BlacklistStatusChange (_status);
    }
    function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isBlacklisted[addresses[i]] = status;
        }
        emit BlacklistUpdated();
    }
    function ChangeProjectWallet(address newAddress) public onlyOwner{
        projectWallet=payable(newAddress);
        excludedFromFees[newAddress] = true;
        excludedFromLimits[newAddress] = true;
        emit UpdateProjectWallet(newAddress);
    }
    function _transfer(address sender, address recipient, uint amount) private{
        require(sender != address(0), "Transfer from zero");
        require(recipient != address(0), "Transfer to zero");
        if(blacklistMode){
            require(!isBlacklisted[sender] && !isBlacklisted[recipient],"Blacklisted");    
        }
        if(excludedFromFees[sender] || excludedFromFees[recipient])
            _feelessTransfer(sender, recipient, amount);
        
        else { 
            require(LaunchTimestamp>0,"trading not yet enabled");
            _taxedTransfer(sender,recipient,amount);                  
        }
    }
    function _taxedTransfer(address sender, address recipient, uint amount) private{
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        bool excludedAccount = excludedFromLimits[sender] || excludedFromLimits[recipient];
        if (
            isPair[sender] &&
            !excludedAccount
        ) {
            require(
                amount <= maxTransactionAmount,
                "Transfer amount exceeds the maxTxAmount."
            );
            uint256 contractBalanceRecepient = balanceOf(recipient);
            require(
                contractBalanceRecepient + amount <= maxWalletBalance,
                "Exceeds maximum wallet token amount."
            );
        } else if (
            isPair[recipient] &&
            !excludedAccount
        ) {
            require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxSellTransactionAmount.");
        }

        bool isBuy=isPair[sender];
        bool isSell=isPair[recipient];
        uint tax;
        if(isSell){  
            uint SellTaxDuration=2 minutes;          
            if(block.timestamp<LaunchTimestamp+SellTaxDuration){
                tax=_getStartTax(SellTaxDuration,750);
                }else tax=sellTax;
            }
        else if(isBuy){
            uint BuyTaxDuration=45 seconds;
            if(block.timestamp<LaunchTimestamp+BuyTaxDuration){
                tax=_getStartTax(BuyTaxDuration,999);
            }else tax=buyTax;
        } else tax=transferTax;

        if((sender!=_dexPairAddress)&&(!manualSwap)&&(!_isSwappingContractModifier))
            _swapContractToken(false);
        uint contractToken=_calculateFee(amount, tax, projectTax+liquidityTax);
        uint taxedAmount=amount-contractToken;

        _balances[sender]-=amount;
        _balances[address(this)] += contractToken;
        _balances[recipient]+=taxedAmount;
        
        emit Transfer(sender,recipient,taxedAmount);
    }
    function _getStartTax(uint duration, uint maxTax) private view returns (uint){
        uint timeSinceLaunch=block.timestamp-LaunchTimestamp;
        return maxTax-((maxTax-50)*timeSinceLaunch/duration);
    }
    function _calculateFee(uint amount, uint tax, uint taxPercent) private pure returns (uint) {
        return (amount*tax*taxPercent) / (TAX_DENOMINATOR*TAX_DENOMINATOR);
    }
    function _feelessTransfer(address sender, address recipient, uint amount) private{
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        _balances[sender]-=amount;
        _balances[recipient]+=amount;      
        emit Transfer(sender,recipient,amount);
    }
    function setSwapTreshold(uint newSwapTresholdPermille) public onlyOwner{
        require(newSwapTresholdPermille<=10);//MaxTreshold= 1%
        swapTreshold=newSwapTresholdPermille;
        emit SwapThresholdChange(newSwapTresholdPermille);
    }
    function SetOverLiquifiedTreshold(uint newOverLiquifyTresholdPermille) public onlyOwner{
        require(newOverLiquifyTresholdPermille<=1000);
        overLiquifyTreshold=newOverLiquifyTresholdPermille;
        emit OverLiquifiedThresholdChange(newOverLiquifyTresholdPermille);
    }
    function SetTaxes(uint buy, uint sell, uint transfer_, uint project,uint liquidity) public onlyOwner{
        uint maxTax=TAX_DENOMINATOR/MAXTAXDENOMINATOR;
        require(buy<=maxTax&&sell<=maxTax&&transfer_<=maxTax,"Tax exceeds maxTax");
        require(project+liquidity==TAX_DENOMINATOR,"Taxes don't add up to denominator");
        
        buyTax=buy;
        sellTax=sell;
        transferTax=transfer_;
        projectTax=project;
        liquidityTax=liquidity;
        emit OnSetTaxes(buy, sell, transfer_, project,liquidity);
    }
    
    function isOverLiquified() public view returns(bool){
        return _balances[_dexPairAddress]>_circulatingSupply*overLiquifyTreshold/1000;
    }
    function _swapContractToken(bool ignoreLimits) private lockTheSwap{
        uint contractBalance=_balances[address(this)];
        uint totalTax=liquidityTax+projectTax;
        uint tokenToSwap=_balances[_dexPairAddress]*swapTreshold/1000;
        if(totalTax==0)return;
        if(ignoreLimits)
            tokenToSwap=_balances[address(this)];
        else if(contractBalance<tokenToSwap)
            return;
        uint tokenForLiquidity=isOverLiquified()?0:(tokenToSwap*liquidityTax)/totalTax;

        uint tokenForProject= tokenToSwap-tokenForLiquidity;

        uint LiqHalf=tokenForLiquidity/2;
        uint swapToken=LiqHalf+tokenForProject;
        uint initialETHBalance = address(this).balance;
        _swapTokenForETH(swapToken);
        uint newETH=(address(this).balance - initialETHBalance);
        if(tokenForLiquidity>0){
            uint liqETH = (newETH*LiqHalf)/swapToken;
            _addLiquidity(LiqHalf, liqETH);
        }
        (bool sent,)=projectWallet.call{value:address(this).balance}("");
        sent=true;
    }
    function _swapTokenForETH(uint amount) private {
        _approve(address(this), address(_dexRouter), amount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _dexRouter.WETH();

        try _dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        ){}
        catch{}
    }
    function _addLiquidity(uint tokenamount, uint ETHamount) private {
        _approve(address(this), address(_dexRouter), tokenamount);
        _dexRouter.addLiquidityETH{value: ETHamount}(
            address(this),
            tokenamount,
            0,
            0,
            address(this),
            block.timestamp
        );
    }
    function getLiquidityReleaseTimeInSeconds() public view returns (uint){
        if(block.timestamp<_liquidityUnlockTime)
            return _liquidityUnlockTime-block.timestamp;
        return 0;
    }
    function getBurnedTokens() public view returns(uint){
        return (InitialSupply-_circulatingSupply)+_balances[address(0xdead)];
    }
    function SetPair(address Pair, bool Add) public onlyOwner{
        require(Pair!=_dexPairAddress,"can't change pancake");
        isPair[Pair]=Add;
        emit NewPairSet(Pair,Add);
    }
    function SwitchManualSwap(bool manual) public onlyOwner{
        manualSwap=manual;
        emit ManualSwapChange(manual);
    }
    function SwapContractToken() public onlyOwner{
        _swapContractToken(true);
        emit OwnerSwap();
    }

    function SetNewRouter(address _newdex) public onlyOwner{
        dexRouter = _newdex;
        emit NewRouterSet(_newdex);
    }

    function setMaxWalletBalancePercent(uint256 percent) external onlyOwner {
        require(percent >= 10, "min 1%");
        require(percent <= 1000, "max 100%");
        maxWalletBalance = InitialSupply * percent / 1000;
        emit MaxWalletBalanceUpdated(percent);
    }
    
    function setMaxTransactionAmount(uint256 percent) public onlyOwner {
        require(percent >= 25, "min 0.25%");
        require(percent <= 10000, "max 100%");
        maxTransactionAmount = InitialSupply * percent / 10000;
        emit MaxTransactionAmountUpdated(percent);
    }
    
    function ExcludeAccountFromFees(address account, bool exclude) public onlyOwner{
        require(account!=address(this),"can't Include the contract");
        excludedFromFees[account]=exclude;
        emit ExcludeAccount(account,exclude);
    }
    
    function setExcludedAccountFromLimits(address account, bool exclude) public onlyOwner{
        excludedFromLimits[account]=exclude;
        emit ExcludeFromLimits(account,exclude);
    }
    function isExcludedFromLimits(address account) public view returns(bool) {
        return excludedFromLimits[account];
    }
    
    function SetupEnableTrading() public onlyOwner{
        require(LaunchTimestamp==0,"AlreadyLaunched");
        LaunchTimestamp=block.timestamp;
        maxWalletBalance = InitialSupply * 30 / 1000;
        maxTransactionAmount = InitialSupply * 300 / 10000;
        emit OnEnableTrading();
    }
    
    function limitLiquidityReleaseTo20Percent() public onlyOwner{
        LPReleaseLimitedTo20Percent=true;
        emit Release20PercentLP();
    }
    function LockLiquidityForSeconds(uint secondsUntilUnlock) public onlyOwner{
        _prolongLiquidityLock(secondsUntilUnlock+block.timestamp);
    }
    function _prolongLiquidityLock(uint newUnlockTime) private{
        require(newUnlockTime>_liquidityUnlockTime);
        _liquidityUnlockTime=newUnlockTime;
        emit OnProlongLPLock(_liquidityUnlockTime);
    }
    
    function LiquidityRelease() public onlyOwner {
        require(block.timestamp >= _liquidityUnlockTime, "Not yet unlocked");

        IERC20 liquidityToken = IERC20(_dexPairAddress);
        uint amount = liquidityToken.balanceOf(address(this));
        if(LPReleaseLimitedTo20Percent)
        {
            _liquidityUnlockTime=block.timestamp+DefaultLiquidityLockTime;
            amount=amount*2/10;
        }
        liquidityToken.transfer(msg.sender, amount);
        emit OnReleaseLP();
    }

    receive() external payable {}

    function getOwner() external view override returns (address) {
        return owner();
    }
    function name() external pure override returns (string memory) {
        return _name;
    }
    function symbol() external pure override returns (string memory) {
        return _symbol;
    }
    function decimals() external pure override returns (uint8) {
        return _decimals;
    }
    function totalSupply() external view override returns (uint) {
        return _circulatingSupply;
    }
    function balanceOf(address account) public view override returns (uint) {
        return _balances[account];
    }
    function transfer(address recipient, uint amount) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }
    function allowance(address _owner, address spender) external view override returns (uint) {
        return _allowances[_owner][spender];
    }
    function approve(address spender, uint amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }
    function _approve(address owner, address spender, uint amount) private {
        require(owner != address(0), "Approve from zero");
        require(spender != address(0), "Approve to zero");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function transferFrom(address sender, address recipient, uint amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        uint currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "Transfer > allowance");
        _approve(sender, msg.sender, currentAllowance - amount);
        return true;
    }
    function increaseAllowance(address spender, uint addedValue) external returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
        return true;
    }
    function decreaseAllowance(address spender, uint subtractedValue) external returns (bool) {
        uint currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "<0 allowance");
        _approve(msg.sender, spender, currentAllowance - subtractedValue);
        return true;
    }
    function emergencyETHrecovery(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
        emit RecoverETH();
    }
    function withdrawContractToken(uint256 _amount) external onlyOwner {
        IERC20 tokenContract = IERC20(address(this));
        tokenContract.transfer(msg.sender, _amount);
        emit RecoverTokens(_amount);
    }

}

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":"bool","name":"status","type":"bool"}],"name":"BlacklistStatusChange","type":"event"},{"anonymous":false,"inputs":[],"name":"BlacklistUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeAccount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeFromLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"ManualSwapChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"}],"name":"MaxTransactionAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"}],"name":"MaxWalletBalanceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Pair","type":"address"},{"indexed":false,"internalType":"bool","name":"Add","type":"bool"}],"name":"NewPairSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newdex","type":"address"}],"name":"NewRouterSet","type":"event"},{"anonymous":false,"inputs":[],"name":"OnEnableTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"UnlockTimestamp","type":"uint256"}],"name":"OnProlongLPLock","type":"event"},{"anonymous":false,"inputs":[],"name":"OnReleaseLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"transfer_","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"project","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"OnSetTaxes","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"OverLiquifiedThresholdChange","type":"event"},{"anonymous":false,"inputs":[],"name":"OwnerSwap","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":[],"name":"RecoverETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RecoverTokens","type":"event"},{"anonymous":false,"inputs":[],"name":"Release20PercentLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"SwapThresholdChange","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"UpdateProjectWallet","type":"event"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"ChangeProjectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"InitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LPReleaseLimitedTo20Percent","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LiquidityRelease","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"secondsUntilUnlock","type":"uint256"}],"name":"LockLiquidityForSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newdex","type":"address"}],"name":"SetNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newOverLiquifyTresholdPermille","type":"uint256"}],"name":"SetOverLiquifiedTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"Pair","type":"address"},{"internalType":"bool","name":"Add","type":"bool"}],"name":"SetPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"transfer_","type":"uint256"},{"internalType":"uint256","name":"project","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SetupEnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SwapContractToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"SwitchManualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_circulatingSupply","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":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"emergencyETHrecovery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBurnedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLiquidityReleaseTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitLiquidityReleaseTo20Percent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"overLiquifyTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcludedAccountFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxWalletBalancePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapTresholdPermille","type":"uint256"}],"name":"setSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawContractToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a620004b5565b62000022906305f5e100620004cd565b600755600a6008819055600981905580556064600b55610384600c556006600d556028600e55601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556016805460ff60a81b1916600160a81b1790553480156200008e57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600754336000818152600160209081526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3601454601380546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000174573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019a9190620004ef565b6001600160a01b031663c9c6539630601360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002239190620004ef565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000271573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002979190620004ef565b601580546001600160a01b039283166001600160a01b031991821681179092556000918252600560209081526040808420805460ff19908116600190811790925560168054909516734efb68b8a7de411bc5ad04515c3bca7a9870bc3b178555338087526004855283872080548316841790556014548816875283872080548316841790553080885284882080548416851790558654891688528488208054841685179055955490971686526003909352818520805484168217905594845280842080548316861790557f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c8054831686179055918352912080549091169091179055506200051a565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003f7578160001904821115620003db57620003db620003a0565b80851615620003e957918102915b93841c9390800290620003bb565b509250929050565b6000826200041057506001620004af565b816200041f57506000620004af565b8160018114620004385760028114620004435762000463565b6001915050620004af565b60ff841115620004575762000457620003a0565b50506001821b620004af565b5060208310610133831016604e8410600b841016171562000488575081810a620004af565b620004948383620003b6565b8060001904821115620004ab57620004ab620003a0565b0290505b92915050565b6000620004c660ff841683620003ff565b9392505050565b6000816000190483118215151615620004ea57620004ea620003a0565b500290565b6000602082840312156200050257600080fd5b81516001600160a01b0381168114620004c657600080fd5b61306e806200052a6000396000f3fe60806040526004361061037a5760003560e01c806395d89b41116101d1578063c3f4f54f11610102578063e0d2f9eb116100a0578063f40a563a1161006f578063f40a563a14610a2e578063f7942b6314610a4e578063fcd4d50514610a6e578063fe575a8714610a8e57600080fd5b8063e0d2f9eb146109a8578063e52fb9ec146109c8578063e5e31b13146109de578063f2fde38b14610a0e57600080fd5b8063cfd1940e116100dc578063cfd1940e146108fc578063d24cd3ec1461091c578063dbe66ca014610932578063dd62ed3e1461096257600080fd5b8063c3f4f54f146108bb578063c8c8ebe4146108d0578063cc1776d3146108e657600080fd5b8063a9059cbb1161016f578063bc43d84911610149578063bc43d84914610850578063be617fa014610870578063beb08ab914610886578063c3a3c032146108a657600080fd5b8063a9059cbb146107fa578063baa88ea91461081a578063bbde77c11461083a57600080fd5b80639ef7e723116101ab5780639ef7e7231461078f578063a253c06e146107af578063a457c2d7146107c5578063a68bdac7146107e557600080fd5b806395d89b411461072157806397e78f351461074e5780639b39b65f1461076e57600080fd5b806346e35f03116102ab5780637b9e987a11610249578063893d20e811610223578063893d20e814610690578063896648c1146106c25780638da5cb5b146106e35780638e2eee841461070157600080fd5b80637b9e987a146106455780638124f7ac1461065a578063868b01411461067057600080fd5b80635cce86cd116102855780635cce86cd146105a15780635e562f3b146105da57806370a08231146105fa578063715018a61461063057600080fd5b806346e35f03146105555780634f7041a51461056a57806351bc3c851461058057600080fd5b80631eb25d1311610318578063313ce567116102f2578063313ce567146104e45780633227925f14610500578063395093511461052057806341aec3571461054057600080fd5b80631eb25d131461048f57806323b872dd146104a45780632c92293c146104c457600080fd5b8063095ea7b311610354578063095ea7b3146104065780630eff4c641461043657806318160ddd1461045a5780631e293c101461046f57600080fd5b80630612f39d14610386578063065f4b411461039d57806306fdde03146103bd57600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039b610abe565b005b3480156103a957600080fd5b5061039b6103b8366004612b00565b610c94565b3480156103c957600080fd5b5060408051808201909152600e81526d5368696261546572726120496e7560901b60208201525b6040516103fd9190612b19565b60405180910390f35b34801561041257600080fd5b50610426610421366004612b83565b610d3e565b60405190151581526020016103fd565b34801561044257600080fd5b5061044c600e5481565b6040519081526020016103fd565b34801561046657600080fd5b5060075461044c565b34801561047b57600080fd5b5061039b61048a366004612b00565b610d55565b34801561049b57600080fd5b5061044c610e74565b3480156104b057600080fd5b506104266104bf366004612baf565b610e91565b3480156104d057600080fd5b5061039b6104df366004612b00565b610f28565b3480156104f057600080fd5b50604051601281526020016103fd565b34801561050c57600080fd5b5061039b61051b366004612b00565b61103d565b34801561052c57600080fd5b5061042661053b366004612b83565b61108b565b34801561054c57600080fd5b5061039b6110c2565b34801561056157600080fd5b50610426611130565b34801561057657600080fd5b5061044c60085481565b34801561058c57600080fd5b5060165461042690600160b01b900460ff1681565b3480156105ad57600080fd5b506104266105bc366004612bf0565b6001600160a01b031660009081526003602052604090205460ff1690565b3480156105e657600080fd5b5061039b6105f5366004612c22565b611170565b34801561060657600080fd5b5061044c610615366004612bf0565b6001600160a01b031660009081526001602052604090205490565b34801561063c57600080fd5b5061039b6111f6565b34801561065157600080fd5b5061039b611279565b34801561066657600080fd5b5061044c600a5481565b34801561067c57600080fd5b5061039b61068b366004612c22565b611390565b34801561069c57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103fd565b3480156106ce57600080fd5b5060165461042690600160a81b900460ff1681565b3480156106ef57600080fd5b506000546001600160a01b03166106aa565b34801561070d57600080fd5b5061039b61071c366004612c3f565b61141b565b34801561072d57600080fd5b506040805180820190915260048152632453544960e01b60208201526103f0565b34801561075a57600080fd5b5061039b610769366004612bf0565b6114f2565b34801561077a57600080fd5b5060165461042690600160b81b900460ff1681565b34801561079b57600080fd5b5061039b6107aa366004612b00565b611579565b3480156107bb57600080fd5b5061044c60075481565b3480156107d157600080fd5b506104266107e0366004612b83565b611655565b3480156107f157600080fd5b5061039b6116d1565b34801561080657600080fd5b50610426610815366004612b83565b611748565b34801561082657600080fd5b5061039b610835366004612cc5565b611755565b34801561084657600080fd5b5061044c60125481565b34801561085c57600080fd5b5061039b61086b366004612b00565b6118d0565b34801561087c57600080fd5b5061044c600b5481565b34801561089257600080fd5b506016546106aa906001600160a01b031681565b3480156108b257600080fd5b5061044c61194d565b3480156108c757600080fd5b5061044c61196d565b3480156108dc57600080fd5b5061044c60115481565b3480156108f257600080fd5b5061044c60095481565b34801561090857600080fd5b5061039b610917366004612b00565b6119cd565b34801561092857600080fd5b5061044c600c5481565b34801561093e57600080fd5b5061042661094d366004612bf0565b60046020526000908152604090205460ff1681565b34801561096e57600080fd5b5061044c61097d366004612d00565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156109b457600080fd5b5061039b6109c3366004612d39565b611a49565b3480156109d457600080fd5b5061044c600d5481565b3480156109ea57600080fd5b506104266109f9366004612bf0565b60056020526000908152604090205460ff1681565b348015610a1a57600080fd5b5061039b610a29366004612bf0565b611b37565b348015610a3a57600080fd5b5061039b610a49366004612d39565b611c30565b348015610a5a57600080fd5b5061039b610a69366004612d39565b611d1a565b348015610a7a57600080fd5b5061039b610a89366004612bf0565b611daf565b348015610a9a57600080fd5b50610426610aa9366004612bf0565b60066020526000908152604090205460ff1681565b33610ad16000546001600160a01b031690565b6001600160a01b031614610b005760405162461bcd60e51b8152600401610af790612d67565b60405180910390fd5b601054421015610b455760405162461bcd60e51b815260206004820152601060248201526f139bdd081e595d081d5b9b1bd8dad95960821b6044820152606401610af7565b6015546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa158015610b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb69190612d9c565b601654909150600160b81b900460ff1615610bf557610bd862093a8042612dcb565b601055600a610be8826002612de3565b610bf29190612e02565b90505b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610c42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c669190612e24565b506040517f28bacca46f5c57fe13623e9d5093cb2fab892814aca9b39384ab86550d9aa67590600090a15050565b33610ca76000546001600160a01b031690565b6001600160a01b031614610ccd5760405162461bcd60e51b8152600401610af790612d67565b47336108fc6064610cde8585612de3565b610ce89190612e02565b6040518115909202916000818181858888f19350505050158015610d10573d6000803e3d6000fd5b506040517fbfeaf8c13ada34fe89b506c8975a67daaf69c220fef97229c731f6cf3b3e741e90600090a15050565b6000610d4b338484611e65565b5060015b92915050565b33610d686000546001600160a01b031690565b6001600160a01b031614610d8e5760405162461bcd60e51b8152600401610af790612d67565b6019811015610dcb5760405162461bcd60e51b81526020600482015260096024820152686d696e20302e32352560b81b6044820152606401610af7565b612710811115610e085760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610af7565b61271081610e186012600a612f25565b610e26906305f5e100612de3565b610e309190612de3565b610e3a9190612e02565b6011556040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac906020015b60405180910390a150565b610e806012600a612f25565b610e8e906305f5e100612de3565b81565b6000610e9e848484611f58565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610f095760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b6044820152606401610af7565b610f1d8533610f188685612f34565b611e65565b506001949350505050565b33610f3b6000546001600160a01b031690565b6001600160a01b031614610f615760405162461bcd60e51b8152600401610af790612d67565b600a811015610f9b5760405162461bcd60e51b81526020600482015260066024820152656d696e20312560d01b6044820152606401610af7565b6103e8811115610fd85760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610af7565b6103e881610fe86012600a612f25565b610ff6906305f5e100612de3565b6110009190612de3565b61100a9190612e02565b6012556040518181527f9cbd2e55e2abf49d29273c1b9fb343c2828844b2aec156cfe2aec98ae1b72a9990602001610e69565b336110506000546001600160a01b031690565b6001600160a01b0316146110765760405162461bcd60e51b8152600401610af790612d67565b6110886110834283612dcb565b61212b565b50565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610d4b918590610f18908690612dcb565b336110d56000546001600160a01b031690565b6001600160a01b0316146110fb5760405162461bcd60e51b8152600401610af790612d67565b611105600161216e565b6040517f703db25eb5fd328335fc797436bbbbd25d5575588bd991102facd962c4d41b9290600090a1565b60006103e8600e546007546111459190612de3565b61114f9190612e02565b6015546001600160a01b031660009081526001602052604090205411919050565b336111836000546001600160a01b031690565b6001600160a01b0316146111a95760405162461bcd60e51b8152600401610af790612d67565b60168054821515600160a81b0260ff60a81b199091161790556040517fecfaacf5e291e532c372363b39be86acbee05e57acb4ff67acceb0c7110a7bc090610e6990831515815260200190565b336112096000546001600160a01b031690565b6001600160a01b03161461122f5760405162461bcd60e51b8152600401610af790612d67565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b3361128c6000546001600160a01b031690565b6001600160a01b0316146112b25760405162461bcd60e51b8152600401610af790612d67565b600f54156112f45760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e53185d5b98da1959608a1b6044820152606401610af7565b42600f556103e86113076012600a612f25565b611315906305f5e100612de3565b61132090601e612de3565b61132a9190612e02565b60129081556127109061133e90600a612f25565b61134c906305f5e100612de3565b6113589061012c612de3565b6113629190612e02565b6011556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a1565b336113a36000546001600160a01b031690565b6001600160a01b0316146113c95760405162461bcd60e51b8152600401610af790612d67565b60168054821515600160b01b0260ff60b01b199091161790556040517f3db17fb4d29ca5a33dc4750f7205263855fb8b82cc89d6c418a04b60f58b429d90610e6990831515815260200190565b905090565b3361142e6000546001600160a01b031690565b6001600160a01b0316146114545760405162461bcd60e51b8152600401610af790612d67565b60005b828110156114c357816006600086868581811061147657611476612f4b565b905060200201602081019061148b9190612bf0565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556114bc81612f61565b9050611457565b506040517f890e6981f892b367aea9f0b31589753714df5ee88d6dde2c0ddaffce7b9915d990600090a1505050565b336115056000546001600160a01b031690565b6001600160a01b03161461152b5760405162461bcd60e51b8152600401610af790612d67565b601480546001600160a01b0319166001600160a01b0383169081179091556040519081527f117661539ed67d391940fa7b78853c234b4e9a40d616d75923ae8db26672833a90602001610e69565b3361158c6000546001600160a01b031690565b6001600160a01b0316146115b25760405162461bcd60e51b8152600401610af790612d67565b60405163a9059cbb60e01b8152336004820152602481018290523090819063a9059cbb906044016020604051808303816000875af11580156115f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161c9190612e24565b506040518281527f567295618043fa7c5a9781a71d338407d59e2f8f20079734425da602e2ce9c22906020015b60405180910390a15050565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156116b85760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401610af7565b6116c73385610f188685612f34565b5060019392505050565b336116e46000546001600160a01b031690565b6001600160a01b03161461170a5760405162461bcd60e51b8152600401610af790612d67565b6016805460ff60b81b1916600160b81b1790556040517f6ea46eef5c8fc4ad72144e672cadd89b6d28bc14a84977fea8bfe0ac63c1194090600090a1565b6000610d4b338484611f58565b336117686000546001600160a01b031690565b6001600160a01b03161461178e5760405162461bcd60e51b8152600401610af790612d67565b600061179d600a6103e8612e02565b90508086111580156117af5750808511155b80156117bb5750808411155b6117fc5760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b6044820152606401610af7565b6103e86118098385612dcb565b146118605760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b6064820152608401610af7565b60088690556009859055600a849055600c839055600b829055604080518781526020810187905290810185905260608101849052608081018390527f07d167ef63e413076f3e7e19f733b66f7ab5fd83fd7b437428f115315687ef6e9060a00160405180910390a1505050505050565b336118e36000546001600160a01b031690565b6001600160a01b0316146119095760405162461bcd60e51b8152600401610af790612d67565b6103e881111561191857600080fd5b600e8190556040518181527fa072eee57b8e01913ba01eab29d8a81117cf780e6c8984a3494477ce9cee846d90602001610e69565b600060105442101561196757426010546114169190612f34565b50600090565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d546007546119ab6012600a612f25565b6119b9906305f5e100612de3565b6119c39190612f34565b6114169190612dcb565b336119e06000546001600160a01b031690565b6001600160a01b031614611a065760405162461bcd60e51b8152600401610af790612d67565b600a811115611a1457600080fd5b600d8190556040518181527fc075380b8410207b8cc14f0d254ab8c8a6766469631275e4500db835a1ba02cc90602001610e69565b33611a5c6000546001600160a01b031690565b6001600160a01b031614611a825760405162461bcd60e51b8152600401610af790612d67565b6001600160a01b038216301415611adb5760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e74726163740000000000006044820152606401610af7565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed49101611649565b33611b4a6000546001600160a01b031690565b6001600160a01b031614611b705760405162461bcd60e51b8152600401610af790612d67565b6001600160a01b038116611bd55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610af7565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b33611c436000546001600160a01b031690565b6001600160a01b031614611c695760405162461bcd60e51b8152600401610af790612d67565b6015546001600160a01b0383811691161415611cbe5760405162461bcd60e51b815260206004820152601460248201527363616e2774206368616e67652070616e63616b6560601b6044820152606401610af7565b6001600160a01b038216600081815260056020908152604091829020805460ff19168515159081179091558251938452908301527f6765bb5e5ecad4581ce8f9322a9c218e75a54a7c4af6217752833adb834511ac9101611649565b33611d2d6000546001600160a01b031690565b6001600160a01b031614611d535760405162461bcd60e51b8152600401610af790612d67565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc929101611649565b33611dc26000546001600160a01b031690565b6001600160a01b031614611de85760405162461bcd60e51b8152600401610af790612d67565b601680546001600160a01b0319166001600160a01b0383169081179091556000818152600460209081526040808320805460ff199081166001908117909255600384529382902080549094161790925590519182527fff20ffd61c4c2d0ef6c92012ece4838b24c79b10136ae047c42f9311e8be86a29101610e69565b6001600160a01b038316611eaf5760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610af7565b6001600160a01b038216611ef75760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610af7565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611fa35760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401610af7565b6001600160a01b038216611fec5760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401610af7565b601654600160a81b900460ff161561207a576001600160a01b03831660009081526006602052604090205460ff1615801561204057506001600160a01b03821660009081526006602052604090205460ff16155b61207a5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610af7565b6001600160a01b03831660009081526004602052604090205460ff16806120b957506001600160a01b03821660009081526004602052604090205460ff165b156120ce576120c9838383612327565b505050565b6000600f54116121205760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401610af7565b6120c983838361243a565b601054811161213957600080fd5b60108190556040518181527f8ff9dc93846a022986f54e8f219a1fa780225726858e39e850da826852b4042e90602001610e69565b6016805460ff60a01b1916600160a01b17905530600090815260016020526040812054600c54600b549192916121a49190612dcb565b600d546015546001600160a01b0316600090815260016020526040812054929350916103e8916121d391612de3565b6121dd9190612e02565b9050816121ec57505050612317565b8315612208575030600090815260016020526040902054612218565b8083101561221857505050612317565b6000612222611130565b6122445782600b54836122359190612de3565b61223f9190612e02565b612247565b60005b905060006122558284612f34565b90506000612264600284612e02565b905060006122728383612dcb565b90504761227e8261288d565b600061228a8247612f34565b905085156122b75760008361229f8684612de3565b6122a99190612e02565b90506122b585826129dc565b505b6016546040516000916001600160a01b03169047908381818185875af1925050503d8060008114612304576040519150601f19603f3d011682016040523d82523d6000602084013e612309565b606091505b505050505050505050505050505b506016805460ff60a01b19169055565b6001600160a01b0383166000908152600160205260409020548181101561238b5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610af7565b6001600160a01b038416600090815260016020526040812080548492906123b3908490612f34565b90915550506001600160a01b038316600090815260016020526040812080548492906123e0908490612dcb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161242c91815260200190565b60405180910390a350505050565b6001600160a01b0383166000908152600160205260409020548181101561249e5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610af7565b6001600160a01b03841660009081526003602052604081205460ff16806124dd57506001600160a01b03841660009081526003602052604090205460ff165b6001600160a01b03861660009081526005602052604090205490915060ff168015612506575080155b156125f45760115483111561256e5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610af7565b6001600160a01b0384166000908152600160205260409020546012546125948583612dcb565b11156125ee5760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610af7565b50612697565b6001600160a01b03841660009081526005602052604090205460ff16801561261a575080155b15612697576011548311156126975760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e0000000000006064820152608401610af7565b6001600160a01b0380861660009081526005602052604080822054928716825281205460ff92831692169081156126ff57600f546078906126d9908290612dcb565b4210156126f3576126ec816102ee612a8d565b91506126f9565b60095491505b50612738565b821561273357600f54602d90612716908290612dcb565b421015612729576126ec816103e7612a8d565b5050600854612738565b50600a545b6015546001600160a01b038981169116148015906127605750601654600160b01b900460ff16155b80156127765750601654600160a01b900460ff16155b1561278557612785600061216e565b60006127a18783600b54600c5461279c9190612dcb565b612ad3565b905060006127af8289612f34565b6001600160a01b038b16600090815260016020526040812080549293508a929091906127dc908490612f34565b90915550503060009081526001602052604081208054849290612800908490612dcb565b90915550506001600160a01b0389166000908152600160205260408120805483929061282d908490612dcb565b92505081905550886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161287991815260200190565b60405180910390a350505050505050505050565b6013546128a59030906001600160a01b031683611e65565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106128da576128da612f4b565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612933573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129579190612f7c565b8160018151811061296a5761296a612f4b565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac947906129b0908590600090869030904290600401612f99565b600060405180830381600087803b1580156129ca57600080fd5b505af19250505080156120c957505050565b6013546129f49030906001600160a01b031684611e65565b60135460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612a61573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a86919061300a565b5050505050565b600080600f5442612a9e9190612f34565b90508381612aad603286612f34565b612ab79190612de3565b612ac19190612e02565b612acb9084612f34565b949350505050565b6000612ae16103e880612de3565b82612aec8587612de3565b612af69190612de3565b612acb9190612e02565b600060208284031215612b1257600080fd5b5035919050565b600060208083528351808285015260005b81811015612b4657858101830151858201604001528201612b2a565b81811115612b58576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461108857600080fd5b60008060408385031215612b9657600080fd5b8235612ba181612b6e565b946020939093013593505050565b600080600060608486031215612bc457600080fd5b8335612bcf81612b6e565b92506020840135612bdf81612b6e565b929592945050506040919091013590565b600060208284031215612c0257600080fd5b8135612c0d81612b6e565b9392505050565b801515811461108857600080fd5b600060208284031215612c3457600080fd5b8135612c0d81612c14565b600080600060408486031215612c5457600080fd5b833567ffffffffffffffff80821115612c6c57600080fd5b818601915086601f830112612c8057600080fd5b813581811115612c8f57600080fd5b8760208260051b8501011115612ca457600080fd5b60209283019550935050840135612cba81612c14565b809150509250925092565b600080600080600060a08688031215612cdd57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612d1357600080fd5b8235612d1e81612b6e565b91506020830135612d2e81612b6e565b809150509250929050565b60008060408385031215612d4c57600080fd5b8235612d5781612b6e565b91506020830135612d2e81612c14565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612dae57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115612dde57612dde612db5565b500190565b6000816000190483118215151615612dfd57612dfd612db5565b500290565b600082612e1f57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612e3657600080fd5b8151612c0d81612c14565b600181815b80851115612e7c578160001904821115612e6257612e62612db5565b80851615612e6f57918102915b93841c9390800290612e46565b509250929050565b600082612e9357506001610d4f565b81612ea057506000610d4f565b8160018114612eb65760028114612ec057612edc565b6001915050610d4f565b60ff841115612ed157612ed1612db5565b50506001821b610d4f565b5060208310610133831016604e8410600b8410161715612eff575081810a610d4f565b612f098383612e41565b8060001904821115612f1d57612f1d612db5565b029392505050565b6000612c0d60ff841683612e84565b600082821015612f4657612f46612db5565b500390565b634e487b7160e01b600052603260045260246000fd5b6000600019821415612f7557612f75612db5565b5060010190565b600060208284031215612f8e57600080fd5b8151612c0d81612b6e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612fe95784516001600160a01b031683529383019391830191600101612fc4565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561301f57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220bfb79a00751e61111e61fafb713f174b9a174902027f447e56cf3e8cfbe7675564736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061037a5760003560e01c806395d89b41116101d1578063c3f4f54f11610102578063e0d2f9eb116100a0578063f40a563a1161006f578063f40a563a14610a2e578063f7942b6314610a4e578063fcd4d50514610a6e578063fe575a8714610a8e57600080fd5b8063e0d2f9eb146109a8578063e52fb9ec146109c8578063e5e31b13146109de578063f2fde38b14610a0e57600080fd5b8063cfd1940e116100dc578063cfd1940e146108fc578063d24cd3ec1461091c578063dbe66ca014610932578063dd62ed3e1461096257600080fd5b8063c3f4f54f146108bb578063c8c8ebe4146108d0578063cc1776d3146108e657600080fd5b8063a9059cbb1161016f578063bc43d84911610149578063bc43d84914610850578063be617fa014610870578063beb08ab914610886578063c3a3c032146108a657600080fd5b8063a9059cbb146107fa578063baa88ea91461081a578063bbde77c11461083a57600080fd5b80639ef7e723116101ab5780639ef7e7231461078f578063a253c06e146107af578063a457c2d7146107c5578063a68bdac7146107e557600080fd5b806395d89b411461072157806397e78f351461074e5780639b39b65f1461076e57600080fd5b806346e35f03116102ab5780637b9e987a11610249578063893d20e811610223578063893d20e814610690578063896648c1146106c25780638da5cb5b146106e35780638e2eee841461070157600080fd5b80637b9e987a146106455780638124f7ac1461065a578063868b01411461067057600080fd5b80635cce86cd116102855780635cce86cd146105a15780635e562f3b146105da57806370a08231146105fa578063715018a61461063057600080fd5b806346e35f03146105555780634f7041a51461056a57806351bc3c851461058057600080fd5b80631eb25d1311610318578063313ce567116102f2578063313ce567146104e45780633227925f14610500578063395093511461052057806341aec3571461054057600080fd5b80631eb25d131461048f57806323b872dd146104a45780632c92293c146104c457600080fd5b8063095ea7b311610354578063095ea7b3146104065780630eff4c641461043657806318160ddd1461045a5780631e293c101461046f57600080fd5b80630612f39d14610386578063065f4b411461039d57806306fdde03146103bd57600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039b610abe565b005b3480156103a957600080fd5b5061039b6103b8366004612b00565b610c94565b3480156103c957600080fd5b5060408051808201909152600e81526d5368696261546572726120496e7560901b60208201525b6040516103fd9190612b19565b60405180910390f35b34801561041257600080fd5b50610426610421366004612b83565b610d3e565b60405190151581526020016103fd565b34801561044257600080fd5b5061044c600e5481565b6040519081526020016103fd565b34801561046657600080fd5b5060075461044c565b34801561047b57600080fd5b5061039b61048a366004612b00565b610d55565b34801561049b57600080fd5b5061044c610e74565b3480156104b057600080fd5b506104266104bf366004612baf565b610e91565b3480156104d057600080fd5b5061039b6104df366004612b00565b610f28565b3480156104f057600080fd5b50604051601281526020016103fd565b34801561050c57600080fd5b5061039b61051b366004612b00565b61103d565b34801561052c57600080fd5b5061042661053b366004612b83565b61108b565b34801561054c57600080fd5b5061039b6110c2565b34801561056157600080fd5b50610426611130565b34801561057657600080fd5b5061044c60085481565b34801561058c57600080fd5b5060165461042690600160b01b900460ff1681565b3480156105ad57600080fd5b506104266105bc366004612bf0565b6001600160a01b031660009081526003602052604090205460ff1690565b3480156105e657600080fd5b5061039b6105f5366004612c22565b611170565b34801561060657600080fd5b5061044c610615366004612bf0565b6001600160a01b031660009081526001602052604090205490565b34801561063c57600080fd5b5061039b6111f6565b34801561065157600080fd5b5061039b611279565b34801561066657600080fd5b5061044c600a5481565b34801561067c57600080fd5b5061039b61068b366004612c22565b611390565b34801561069c57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103fd565b3480156106ce57600080fd5b5060165461042690600160a81b900460ff1681565b3480156106ef57600080fd5b506000546001600160a01b03166106aa565b34801561070d57600080fd5b5061039b61071c366004612c3f565b61141b565b34801561072d57600080fd5b506040805180820190915260048152632453544960e01b60208201526103f0565b34801561075a57600080fd5b5061039b610769366004612bf0565b6114f2565b34801561077a57600080fd5b5060165461042690600160b81b900460ff1681565b34801561079b57600080fd5b5061039b6107aa366004612b00565b611579565b3480156107bb57600080fd5b5061044c60075481565b3480156107d157600080fd5b506104266107e0366004612b83565b611655565b3480156107f157600080fd5b5061039b6116d1565b34801561080657600080fd5b50610426610815366004612b83565b611748565b34801561082657600080fd5b5061039b610835366004612cc5565b611755565b34801561084657600080fd5b5061044c60125481565b34801561085c57600080fd5b5061039b61086b366004612b00565b6118d0565b34801561087c57600080fd5b5061044c600b5481565b34801561089257600080fd5b506016546106aa906001600160a01b031681565b3480156108b257600080fd5b5061044c61194d565b3480156108c757600080fd5b5061044c61196d565b3480156108dc57600080fd5b5061044c60115481565b3480156108f257600080fd5b5061044c60095481565b34801561090857600080fd5b5061039b610917366004612b00565b6119cd565b34801561092857600080fd5b5061044c600c5481565b34801561093e57600080fd5b5061042661094d366004612bf0565b60046020526000908152604090205460ff1681565b34801561096e57600080fd5b5061044c61097d366004612d00565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156109b457600080fd5b5061039b6109c3366004612d39565b611a49565b3480156109d457600080fd5b5061044c600d5481565b3480156109ea57600080fd5b506104266109f9366004612bf0565b60056020526000908152604090205460ff1681565b348015610a1a57600080fd5b5061039b610a29366004612bf0565b611b37565b348015610a3a57600080fd5b5061039b610a49366004612d39565b611c30565b348015610a5a57600080fd5b5061039b610a69366004612d39565b611d1a565b348015610a7a57600080fd5b5061039b610a89366004612bf0565b611daf565b348015610a9a57600080fd5b50610426610aa9366004612bf0565b60066020526000908152604090205460ff1681565b33610ad16000546001600160a01b031690565b6001600160a01b031614610b005760405162461bcd60e51b8152600401610af790612d67565b60405180910390fd5b601054421015610b455760405162461bcd60e51b815260206004820152601060248201526f139bdd081e595d081d5b9b1bd8dad95960821b6044820152606401610af7565b6015546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa158015610b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb69190612d9c565b601654909150600160b81b900460ff1615610bf557610bd862093a8042612dcb565b601055600a610be8826002612de3565b610bf29190612e02565b90505b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610c42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c669190612e24565b506040517f28bacca46f5c57fe13623e9d5093cb2fab892814aca9b39384ab86550d9aa67590600090a15050565b33610ca76000546001600160a01b031690565b6001600160a01b031614610ccd5760405162461bcd60e51b8152600401610af790612d67565b47336108fc6064610cde8585612de3565b610ce89190612e02565b6040518115909202916000818181858888f19350505050158015610d10573d6000803e3d6000fd5b506040517fbfeaf8c13ada34fe89b506c8975a67daaf69c220fef97229c731f6cf3b3e741e90600090a15050565b6000610d4b338484611e65565b5060015b92915050565b33610d686000546001600160a01b031690565b6001600160a01b031614610d8e5760405162461bcd60e51b8152600401610af790612d67565b6019811015610dcb5760405162461bcd60e51b81526020600482015260096024820152686d696e20302e32352560b81b6044820152606401610af7565b612710811115610e085760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610af7565b61271081610e186012600a612f25565b610e26906305f5e100612de3565b610e309190612de3565b610e3a9190612e02565b6011556040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac906020015b60405180910390a150565b610e806012600a612f25565b610e8e906305f5e100612de3565b81565b6000610e9e848484611f58565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610f095760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b6044820152606401610af7565b610f1d8533610f188685612f34565b611e65565b506001949350505050565b33610f3b6000546001600160a01b031690565b6001600160a01b031614610f615760405162461bcd60e51b8152600401610af790612d67565b600a811015610f9b5760405162461bcd60e51b81526020600482015260066024820152656d696e20312560d01b6044820152606401610af7565b6103e8811115610fd85760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610af7565b6103e881610fe86012600a612f25565b610ff6906305f5e100612de3565b6110009190612de3565b61100a9190612e02565b6012556040518181527f9cbd2e55e2abf49d29273c1b9fb343c2828844b2aec156cfe2aec98ae1b72a9990602001610e69565b336110506000546001600160a01b031690565b6001600160a01b0316146110765760405162461bcd60e51b8152600401610af790612d67565b6110886110834283612dcb565b61212b565b50565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610d4b918590610f18908690612dcb565b336110d56000546001600160a01b031690565b6001600160a01b0316146110fb5760405162461bcd60e51b8152600401610af790612d67565b611105600161216e565b6040517f703db25eb5fd328335fc797436bbbbd25d5575588bd991102facd962c4d41b9290600090a1565b60006103e8600e546007546111459190612de3565b61114f9190612e02565b6015546001600160a01b031660009081526001602052604090205411919050565b336111836000546001600160a01b031690565b6001600160a01b0316146111a95760405162461bcd60e51b8152600401610af790612d67565b60168054821515600160a81b0260ff60a81b199091161790556040517fecfaacf5e291e532c372363b39be86acbee05e57acb4ff67acceb0c7110a7bc090610e6990831515815260200190565b336112096000546001600160a01b031690565b6001600160a01b03161461122f5760405162461bcd60e51b8152600401610af790612d67565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b3361128c6000546001600160a01b031690565b6001600160a01b0316146112b25760405162461bcd60e51b8152600401610af790612d67565b600f54156112f45760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e53185d5b98da1959608a1b6044820152606401610af7565b42600f556103e86113076012600a612f25565b611315906305f5e100612de3565b61132090601e612de3565b61132a9190612e02565b60129081556127109061133e90600a612f25565b61134c906305f5e100612de3565b6113589061012c612de3565b6113629190612e02565b6011556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a1565b336113a36000546001600160a01b031690565b6001600160a01b0316146113c95760405162461bcd60e51b8152600401610af790612d67565b60168054821515600160b01b0260ff60b01b199091161790556040517f3db17fb4d29ca5a33dc4750f7205263855fb8b82cc89d6c418a04b60f58b429d90610e6990831515815260200190565b905090565b3361142e6000546001600160a01b031690565b6001600160a01b0316146114545760405162461bcd60e51b8152600401610af790612d67565b60005b828110156114c357816006600086868581811061147657611476612f4b565b905060200201602081019061148b9190612bf0565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556114bc81612f61565b9050611457565b506040517f890e6981f892b367aea9f0b31589753714df5ee88d6dde2c0ddaffce7b9915d990600090a1505050565b336115056000546001600160a01b031690565b6001600160a01b03161461152b5760405162461bcd60e51b8152600401610af790612d67565b601480546001600160a01b0319166001600160a01b0383169081179091556040519081527f117661539ed67d391940fa7b78853c234b4e9a40d616d75923ae8db26672833a90602001610e69565b3361158c6000546001600160a01b031690565b6001600160a01b0316146115b25760405162461bcd60e51b8152600401610af790612d67565b60405163a9059cbb60e01b8152336004820152602481018290523090819063a9059cbb906044016020604051808303816000875af11580156115f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161c9190612e24565b506040518281527f567295618043fa7c5a9781a71d338407d59e2f8f20079734425da602e2ce9c22906020015b60405180910390a15050565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156116b85760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401610af7565b6116c73385610f188685612f34565b5060019392505050565b336116e46000546001600160a01b031690565b6001600160a01b03161461170a5760405162461bcd60e51b8152600401610af790612d67565b6016805460ff60b81b1916600160b81b1790556040517f6ea46eef5c8fc4ad72144e672cadd89b6d28bc14a84977fea8bfe0ac63c1194090600090a1565b6000610d4b338484611f58565b336117686000546001600160a01b031690565b6001600160a01b03161461178e5760405162461bcd60e51b8152600401610af790612d67565b600061179d600a6103e8612e02565b90508086111580156117af5750808511155b80156117bb5750808411155b6117fc5760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b6044820152606401610af7565b6103e86118098385612dcb565b146118605760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b6064820152608401610af7565b60088690556009859055600a849055600c839055600b829055604080518781526020810187905290810185905260608101849052608081018390527f07d167ef63e413076f3e7e19f733b66f7ab5fd83fd7b437428f115315687ef6e9060a00160405180910390a1505050505050565b336118e36000546001600160a01b031690565b6001600160a01b0316146119095760405162461bcd60e51b8152600401610af790612d67565b6103e881111561191857600080fd5b600e8190556040518181527fa072eee57b8e01913ba01eab29d8a81117cf780e6c8984a3494477ce9cee846d90602001610e69565b600060105442101561196757426010546114169190612f34565b50600090565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d546007546119ab6012600a612f25565b6119b9906305f5e100612de3565b6119c39190612f34565b6114169190612dcb565b336119e06000546001600160a01b031690565b6001600160a01b031614611a065760405162461bcd60e51b8152600401610af790612d67565b600a811115611a1457600080fd5b600d8190556040518181527fc075380b8410207b8cc14f0d254ab8c8a6766469631275e4500db835a1ba02cc90602001610e69565b33611a5c6000546001600160a01b031690565b6001600160a01b031614611a825760405162461bcd60e51b8152600401610af790612d67565b6001600160a01b038216301415611adb5760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e74726163740000000000006044820152606401610af7565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed49101611649565b33611b4a6000546001600160a01b031690565b6001600160a01b031614611b705760405162461bcd60e51b8152600401610af790612d67565b6001600160a01b038116611bd55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610af7565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b33611c436000546001600160a01b031690565b6001600160a01b031614611c695760405162461bcd60e51b8152600401610af790612d67565b6015546001600160a01b0383811691161415611cbe5760405162461bcd60e51b815260206004820152601460248201527363616e2774206368616e67652070616e63616b6560601b6044820152606401610af7565b6001600160a01b038216600081815260056020908152604091829020805460ff19168515159081179091558251938452908301527f6765bb5e5ecad4581ce8f9322a9c218e75a54a7c4af6217752833adb834511ac9101611649565b33611d2d6000546001600160a01b031690565b6001600160a01b031614611d535760405162461bcd60e51b8152600401610af790612d67565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc929101611649565b33611dc26000546001600160a01b031690565b6001600160a01b031614611de85760405162461bcd60e51b8152600401610af790612d67565b601680546001600160a01b0319166001600160a01b0383169081179091556000818152600460209081526040808320805460ff199081166001908117909255600384529382902080549094161790925590519182527fff20ffd61c4c2d0ef6c92012ece4838b24c79b10136ae047c42f9311e8be86a29101610e69565b6001600160a01b038316611eaf5760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610af7565b6001600160a01b038216611ef75760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610af7565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611fa35760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401610af7565b6001600160a01b038216611fec5760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401610af7565b601654600160a81b900460ff161561207a576001600160a01b03831660009081526006602052604090205460ff1615801561204057506001600160a01b03821660009081526006602052604090205460ff16155b61207a5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610af7565b6001600160a01b03831660009081526004602052604090205460ff16806120b957506001600160a01b03821660009081526004602052604090205460ff165b156120ce576120c9838383612327565b505050565b6000600f54116121205760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401610af7565b6120c983838361243a565b601054811161213957600080fd5b60108190556040518181527f8ff9dc93846a022986f54e8f219a1fa780225726858e39e850da826852b4042e90602001610e69565b6016805460ff60a01b1916600160a01b17905530600090815260016020526040812054600c54600b549192916121a49190612dcb565b600d546015546001600160a01b0316600090815260016020526040812054929350916103e8916121d391612de3565b6121dd9190612e02565b9050816121ec57505050612317565b8315612208575030600090815260016020526040902054612218565b8083101561221857505050612317565b6000612222611130565b6122445782600b54836122359190612de3565b61223f9190612e02565b612247565b60005b905060006122558284612f34565b90506000612264600284612e02565b905060006122728383612dcb565b90504761227e8261288d565b600061228a8247612f34565b905085156122b75760008361229f8684612de3565b6122a99190612e02565b90506122b585826129dc565b505b6016546040516000916001600160a01b03169047908381818185875af1925050503d8060008114612304576040519150601f19603f3d011682016040523d82523d6000602084013e612309565b606091505b505050505050505050505050505b506016805460ff60a01b19169055565b6001600160a01b0383166000908152600160205260409020548181101561238b5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610af7565b6001600160a01b038416600090815260016020526040812080548492906123b3908490612f34565b90915550506001600160a01b038316600090815260016020526040812080548492906123e0908490612dcb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161242c91815260200190565b60405180910390a350505050565b6001600160a01b0383166000908152600160205260409020548181101561249e5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610af7565b6001600160a01b03841660009081526003602052604081205460ff16806124dd57506001600160a01b03841660009081526003602052604090205460ff165b6001600160a01b03861660009081526005602052604090205490915060ff168015612506575080155b156125f45760115483111561256e5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610af7565b6001600160a01b0384166000908152600160205260409020546012546125948583612dcb565b11156125ee5760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610af7565b50612697565b6001600160a01b03841660009081526005602052604090205460ff16801561261a575080155b15612697576011548311156126975760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e0000000000006064820152608401610af7565b6001600160a01b0380861660009081526005602052604080822054928716825281205460ff92831692169081156126ff57600f546078906126d9908290612dcb565b4210156126f3576126ec816102ee612a8d565b91506126f9565b60095491505b50612738565b821561273357600f54602d90612716908290612dcb565b421015612729576126ec816103e7612a8d565b5050600854612738565b50600a545b6015546001600160a01b038981169116148015906127605750601654600160b01b900460ff16155b80156127765750601654600160a01b900460ff16155b1561278557612785600061216e565b60006127a18783600b54600c5461279c9190612dcb565b612ad3565b905060006127af8289612f34565b6001600160a01b038b16600090815260016020526040812080549293508a929091906127dc908490612f34565b90915550503060009081526001602052604081208054849290612800908490612dcb565b90915550506001600160a01b0389166000908152600160205260408120805483929061282d908490612dcb565b92505081905550886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161287991815260200190565b60405180910390a350505050505050505050565b6013546128a59030906001600160a01b031683611e65565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106128da576128da612f4b565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612933573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129579190612f7c565b8160018151811061296a5761296a612f4b565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac947906129b0908590600090869030904290600401612f99565b600060405180830381600087803b1580156129ca57600080fd5b505af19250505080156120c957505050565b6013546129f49030906001600160a01b031684611e65565b60135460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612a61573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a86919061300a565b5050505050565b600080600f5442612a9e9190612f34565b90508381612aad603286612f34565b612ab79190612de3565b612ac19190612e02565b612acb9084612f34565b949350505050565b6000612ae16103e880612de3565b82612aec8587612de3565b612af69190612de3565b612acb9190612e02565b600060208284031215612b1257600080fd5b5035919050565b600060208083528351808285015260005b81811015612b4657858101830151858201604001528201612b2a565b81811115612b58576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461108857600080fd5b60008060408385031215612b9657600080fd5b8235612ba181612b6e565b946020939093013593505050565b600080600060608486031215612bc457600080fd5b8335612bcf81612b6e565b92506020840135612bdf81612b6e565b929592945050506040919091013590565b600060208284031215612c0257600080fd5b8135612c0d81612b6e565b9392505050565b801515811461108857600080fd5b600060208284031215612c3457600080fd5b8135612c0d81612c14565b600080600060408486031215612c5457600080fd5b833567ffffffffffffffff80821115612c6c57600080fd5b818601915086601f830112612c8057600080fd5b813581811115612c8f57600080fd5b8760208260051b8501011115612ca457600080fd5b60209283019550935050840135612cba81612c14565b809150509250925092565b600080600080600060a08688031215612cdd57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612d1357600080fd5b8235612d1e81612b6e565b91506020830135612d2e81612b6e565b809150509250929050565b60008060408385031215612d4c57600080fd5b8235612d5781612b6e565b91506020830135612d2e81612c14565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612dae57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115612dde57612dde612db5565b500190565b6000816000190483118215151615612dfd57612dfd612db5565b500290565b600082612e1f57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612e3657600080fd5b8151612c0d81612c14565b600181815b80851115612e7c578160001904821115612e6257612e62612db5565b80851615612e6f57918102915b93841c9390800290612e46565b509250929050565b600082612e9357506001610d4f565b81612ea057506000610d4f565b8160018114612eb65760028114612ec057612edc565b6001915050610d4f565b60ff841115612ed157612ed1612db5565b50506001821b610d4f565b5060208310610133831016604e8410600b8410161715612eff575081810a610d4f565b612f098383612e41565b8060001904821115612f1d57612f1d612db5565b029392505050565b6000612c0d60ff841683612e84565b600082821015612f4657612f46612db5565b500390565b634e487b7160e01b600052603260045260246000fd5b6000600019821415612f7557612f75612db5565b5060010190565b600060208284031215612f8e57600080fd5b8151612c0d81612b6e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612fe95784516001600160a01b031683529383019391830191600101612fc4565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561301f57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220bfb79a00751e61111e61fafb713f174b9a174902027f447e56cf3e8cfbe7675564736f6c634300080a0033

Deployed Bytecode Sourcemap

2608:17321:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16545:511;;;;;;;;;;;;;:::i;:::-;;19458:238;;;;;;;;;;-1:-1:-1;19458:238:0;;;;;:::i;:::-;;:::i;17201:94::-;;;;;;;;;;-1:-1:-1;17282:5:0;;;;;;;;;;;;-1:-1:-1;;;17282:5:0;;;;17201:94;;;;;;;:::i;:::-;;;;;;;;18058:158;;;;;;;;;;-1:-1:-1;18058:158:0;;;;;:::i;:::-;;:::i;:::-;;;1422:14:1;;1415:22;1397:41;;1385:2;1370:18;18058:158:0;1257:187:1;3606:34:0;;;;;;;;;;;;;;;;;;;1595:25:1;;;1583:2;1568:18;3606:34:0;1449:177:1;17505:105:0;;;;;;;;;;-1:-1:-1;17584:18:0;;17505:105;;14801:286;;;;;;;;;;-1:-1:-1;14801:286:0;;;;;:::i;:::-;;:::i;3211:57::-;;;;;;;;;;;;;:::i;18522:382::-;;;;;;;;;;-1:-1:-1;18522:382:0;;;;;:::i;:::-;;:::i;14511:278::-;;;;;;;;;;-1:-1:-1;14511:278:0;;;;;:::i;:::-;;:::i;17405:94::-;;;;;;;;;;-1:-1:-1;17405:94:0;;3749:2;2234:36:1;;2222:2;2207:18;17405:94:0;2092:184:1;16159:150:0;;;;;;;;;;-1:-1:-1;16159:150:0;;;;;:::i;:::-;;:::i;18910:202::-;;;;;;;;;;-1:-1:-1;18910:202:0;;;;;:::i;:::-;;:::i;14250:115::-;;;;;;;;;;;;;:::i;11500:148::-;;;;;;;;;;;;;:::i;3327:23::-;;;;;;;;;;;;;;;;4393:22;;;;;;;;;;-1:-1:-1;4393:22:0;;;;-1:-1:-1;;;4393:22:0;;;;;;15555:126;;;;;;;;;;-1:-1:-1;15555:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;15646:27:0;15622:4;15646:27;;;:18;:27;;;;;;;;;15555:126;6266:146;;;;;;;;;;-1:-1:-1;6266:146:0;;;;;:::i;:::-;;:::i;17616:116::-;;;;;;;;;;-1:-1:-1;17616:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;17706:18:0;17682:4;17706:18;;;:9;:18;;;;;;;17616:116;2221:140;;;;;;;;;;;;;:::i;15693:301::-;;;;;;;;;;;;;:::i;3388:28::-;;;;;;;;;;;;;;;;14113:131;;;;;;;;;;-1:-1:-1;14113:131:0;;;;;:::i;:::-;;:::i;17101:94::-;;;;;;;;;;-1:-1:-1;17153:7:0;2077:6;-1:-1:-1;;;;;2077:6:0;17101:94;;;-1:-1:-1;;;;;3066:32:1;;;3048:51;;3036:2;3021:18;17101:94:0;2902:203:1;4354:32:0;;;;;;;;;;-1:-1:-1;4354:32:0;;;;-1:-1:-1;;;4354:32:0;;;;;;2012:79;;;;;;;;;;-1:-1:-1;2050:7:0;2077:6;-1:-1:-1;;;;;2077:6:0;2012:79;;6418:244;;;;;;;;;;-1:-1:-1;6418:244:0;;;;;:::i;:::-;;:::i;17301:98::-;;;;;;;;;;-1:-1:-1;17384:7:0;;;;;;;;;;;;-1:-1:-1;;;17384:7:0;;;;17301:98;;14373:130;;;;;;;;;;-1:-1:-1;14373:130:0;;;;;:::i;:::-;;:::i;4422:39::-;;;;;;;;;;-1:-1:-1;4422:39:0;;;;-1:-1:-1;;;4422:39:0;;;;;;19702:222;;;;;;;;;;-1:-1:-1;19702:222:0;;;;;:::i;:::-;;:::i;3275:45::-;;;;;;;;;;;;;;;;19118:334;;;;;;;;;;-1:-1:-1;19118:334:0;;;;;:::i;:::-;;:::i;16006:147::-;;;;;;;;;;;;;:::i;17738:164::-;;;;;;;;;;-1:-1:-1;17738:164:0;;;;;:::i;:::-;;:::i;10934:554::-;;;;;;;;;;-1:-1:-1;10934:554:0;;;;;:::i;:::-;;:::i;3800:31::-;;;;;;;;;;;;;;;;10640:288;;;;;;;;;;-1:-1:-1;10640:288:0;;;;;:::i;:::-;;:::i;3423:28::-;;;;;;;;;;;;;;;;4092:36;;;;;;;;;;-1:-1:-1;4092:36:0;;;;-1:-1:-1;;;;;4092:36:0;;;13559:205;;;;;;;;;;;;;:::i;13770:139::-;;;;;;;;;;;;;:::i;3758:35::-;;;;;;;;;;;;;;;;3357:24;;;;;;;;;;;;;;;;10384:250;;;;;;;;;;-1:-1:-1;10384:250:0;;;;;:::i;:::-;;:::i;3458:26::-;;;;;;;;;;;;;;;;2870:48;;;;;;;;;;-1:-1:-1;2870:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17908:144;;;;;;;;;;-1:-1:-1;17908:144:0;;;;;:::i;:::-;-1:-1:-1;;;;;18016:19:0;;;17992:4;18016:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;17908:144;15099:249;;;;;;;;;;-1:-1:-1;15099:249:0;;;;;:::i;:::-;;:::i;3573:26::-;;;;;;;;;;;;;;;;2925:36;;;;;;;;;;-1:-1:-1;2925:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2367:236;;;;;;;;;;-1:-1:-1;2367:236:0;;;;;:::i;:::-;;:::i;13915:192::-;;;;;;;;;;-1:-1:-1;13915:192:0;;;;;:::i;:::-;;:::i;15360:189::-;;;;;;;;;;-1:-1:-1;15360:189:0;;;;;:::i;:::-;;:::i;6668:258::-;;;;;;;;;;-1:-1:-1;6668:258:0;;;;;:::i;:::-;;:::i;2968:46::-;;;;;;;;;;-1:-1:-1;2968:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16545:511;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;;;;;;;;;16628:20:::1;;16609:15;:39;;16601:68;;;::::0;-1:-1:-1;;;16601:68:0;;5891:2:1;16601:68:0::1;::::0;::::1;5873:21:1::0;5930:2;5910:18;;;5903:30;-1:-1:-1;;;5949:18:1;;;5942:46;6005:18;;16601:68:0::1;5689:340:1::0;16601:68:0::1;16713:15;::::0;16754:39:::1;::::0;-1:-1:-1;;;16754:39:0;;16787:4:::1;16754:39;::::0;::::1;3048:51:1::0;-1:-1:-1;;;;;16713:15:0;;::::1;::::0;16682:21:::1;::::0;16713:15;;16754:24:::1;::::0;3021:18:1;;16754:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16807:27;::::0;16740:53;;-1:-1:-1;;;;16807:27:0;::::1;;;16804:162;;;16881:40;3198:6;16881:15;:40;:::i;:::-;16860:20;:61:::0;16952:2:::1;16943:8;:6:::0;16950:1:::1;16943:8;:::i;:::-;:11;;;;:::i;:::-;16936:18;;16804:162;16976:43;::::0;-1:-1:-1;;;16976:43:0;;17000:10:::1;16976:43;::::0;::::1;7057:51:1::0;7124:18;;;7117:34;;;-1:-1:-1;;;;;16976:23:0;::::1;::::0;::::1;::::0;7030:18:1;;16976:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;17035:13:0::1;::::0;::::1;::::0;;;::::1;16590:466;;16545:511::o:0;19458:238::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;19564:21:::1;19604:10;19596:64;19656:3;19625:28;19637:16:::0;19564:21;19625:28:::1;:::i;:::-;:34;;;;:::i;:::-;19596:64;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;19676:12:0::1;::::0;::::1;::::0;;;::::1;19533:163;19458:238:::0;:::o;18058:158::-;18132:4;18149:37;18158:10;18170:7;18179:6;18149:8;:37::i;:::-;-1:-1:-1;18204:4:0;18058:158;;;;;:::o;14801:286::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;14898:2:::1;14887:7;:13;;14879:35;;;::::0;-1:-1:-1;;;14879:35:0;;7614:2:1;14879:35:0::1;::::0;::::1;7596:21:1::0;7653:1;7633:18;;;7626:29;-1:-1:-1;;;7671:18:1;;;7664:39;7720:18;;14879:35:0::1;7412:332:1::0;14879:35:0::1;14944:5;14933:7;:16;;14925:37;;;::::0;-1:-1:-1;;;14925:37:0;;7951:2:1;14925:37:0::1;::::0;::::1;7933:21:1::0;7990:1;7970:18;;;7963:29;-1:-1:-1;;;8008:18:1;;;8001:38;8056:18;;14925:37:0::1;7749:331:1::0;14925:37:0::1;15022:5;15012:7:::0;3255:13:::1;3749:2;3255;:13;:::i;:::-;3247:21;::::0;:5:::1;:21;:::i;:::-;14996:23;;;;:::i;:::-;:31;;;;:::i;:::-;14973:20;:54:::0;15043:36:::1;::::0;1595:25:1;;;15043:36:0::1;::::0;1583:2:1;1568:18;15043:36:0::1;;;;;;;;14801:286:::0;:::o;3211:57::-;3255:13;3749:2;3255;:13;:::i;:::-;3247:21;;:5;:21;:::i;:::-;3211:57;:::o;18522:382::-;18619:4;18636:36;18646:6;18654:9;18665:6;18636:9;:36::i;:::-;-1:-1:-1;;;;;18707:19:0;;18683:21;18707:19;;;:11;:19;;;;;;;;18727:10;18707:31;;;;;;;;18757:26;;;;18749:59;;;;-1:-1:-1;;;18749:59:0;;9670:2:1;18749:59:0;;;9652:21:1;9709:2;9689:18;;;9682:30;-1:-1:-1;;;9728:18:1;;;9721:50;9788:18;;18749:59:0;9468:344:1;18749:59:0;18819:55;18828:6;18836:10;18848:25;18867:6;18848:16;:25;:::i;:::-;18819:8;:55::i;:::-;-1:-1:-1;18892:4:0;;18522:382;-1:-1:-1;;;;18522:382:0:o;14511:278::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;14613:2:::1;14602:7;:13;;14594:32;;;::::0;-1:-1:-1;;;14594:32:0;;10149:2:1;14594:32:0::1;::::0;::::1;10131:21:1::0;10188:1;10168:18;;;10161:29;-1:-1:-1;;;10206:18:1;;;10199:36;10252:18;;14594:32:0::1;9947:329:1::0;14594:32:0::1;14656:4;14645:7;:15;;14637:36;;;::::0;-1:-1:-1;;;14637:36:0;;7951:2:1;14637:36:0::1;::::0;::::1;7933:21:1::0;7990:1;7970:18;;;7963:29;-1:-1:-1;;;8008:18:1;;;8001:38;8056:18;;14637:36:0::1;7749:331:1::0;14637:36:0::1;14729:4;14719:7:::0;3255:13:::1;3749:2;3255;:13;:::i;:::-;3247:21;::::0;:5:::1;:21;:::i;:::-;14703:23;;;;:::i;:::-;:30;;;;:::i;:::-;14684:16;:49:::0;14749:32:::1;::::0;1595:25:1;;;14749:32:0::1;::::0;1583:2:1;1568:18;14749:32:0::1;1449:177:1::0;16159:150:0;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;16244:57:::1;16266:34;16285:15;16266:18:::0;:34:::1;:::i;:::-;16244:21;:57::i;:::-;16159:150:::0;:::o;18910:202::-;19015:10;18989:4;19036:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;19036:32:0;;;;;;;;;;18989:4;;19006:76;;19027:7;;19036:45;;19071:10;;19036:45;:::i;14250:115::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;14306:24:::1;14325:4;14306:18;:24::i;:::-;14346:11;::::0;::::1;::::0;;;::::1;14250:115::o:0;11500:148::-;11547:4;11636;11616:19;;11597:18;;:38;;;;:::i;:::-;:43;;;;:::i;:::-;11580:15;;-1:-1:-1;;;;;11580:15:0;11570:26;;;;:9;:26;;;;;;:70;;11500:148;-1:-1:-1;11500:148:0:o;6266:146::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;6334:13:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;6334:23:0::1;-1:-1:-1::0;;;;6334:23:0;;::::1;;::::0;;6373:31:::1;::::0;::::1;::::0;::::1;::::0;6350:7;1422:14:1;1415:22;1397:41;;1385:2;1370:18;;1257:187;2221:140:0;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;2320:1:::1;2304:6:::0;;2283:40:::1;::::0;-1:-1:-1;;;;;2304:6:0;;::::1;::::0;2283:40:::1;::::0;2320:1;;2283:40:::1;2351:1;2334:19:::0;;-1:-1:-1;;;;;;2334:19:0::1;::::0;;2221:140::o;15693:301::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;15758:15:::1;::::0;:18;15750:45:::1;;;::::0;-1:-1:-1;;;15750:45:0;;10483:2:1;15750:45:0::1;::::0;::::1;10465:21:1::0;10522:2;10502:18;;;10495:30;-1:-1:-1;;;10541:18:1;;;10534:45;10596:18;;15750:45:0::1;10281:339:1::0;15750:45:0::1;15822:15;15806;:31:::0;15888:4:::1;3255:13;3749:2;3255;:13;:::i;:::-;3247:21;::::0;:5:::1;:21;:::i;:::-;15867:18;::::0;15883:2:::1;15867:18;:::i;:::-;:25;;;;:::i;:::-;15848:16;:44:::0;;;15948:5:::1;::::0;3255:13:::1;::::0;:2:::1;:13;:::i;:::-;3247:21;::::0;:5:::1;:21;:::i;:::-;15926:19;::::0;15942:3:::1;15926:19;:::i;:::-;:27;;;;:::i;:::-;15903:20;:50:::0;15969:17:::1;::::0;::::1;::::0;;;::::1;15693:301::o:0;14113:131::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;14179:10:::1;:17:::0;;;::::1;;-1:-1:-1::0;;;14179:17:0::1;-1:-1:-1::0;;;;14179:17:0;;::::1;;::::0;;14212:24:::1;::::0;::::1;::::0;::::1;::::0;14190:6;1422:14:1;1415:22;1397:41;;1385:2;1370:18;;1257:187;17180:7:0;17173:14;;17101:94;:::o;6418:244::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;6520:9:::1;6515:106;6531:20:::0;;::::1;6515:106;;;6603:6;6573:13;:27;6587:9;;6597:1;6587:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6573:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;6573:27:0;:36;;-1:-1:-1;;6573:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;6553:3:::1;::::0;::::1;:::i;:::-;;;6515:106;;;-1:-1:-1::0;6636:18:0::1;::::0;::::1;::::0;;;::::1;6418:244:::0;;;:::o;14373:130::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;14439:9:::1;:19:::0;;-1:-1:-1;;;;;;14439:19:0::1;-1:-1:-1::0;;;;;14439:19:0;::::1;::::0;;::::1;::::0;;;14474:21:::1;::::0;3048:51:1;;;14474:21:0::1;::::0;3036:2:1;3021:18;14474:21:0::1;2902:203:1::0;19702:222:0;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;19835:43:::1;::::0;-1:-1:-1;;;19835:43:0;;19858:10:::1;19835:43;::::0;::::1;7057:51:1::0;7124:18;;;7117:34;;;19818:4:0::1;::::0;;;19835:22:::1;::::0;7030:18:1;;19835:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;19894:22:0::1;::::0;1595:25:1;;;19894:22:0::1;::::0;1583:2:1;1568:18;19894:22:0::1;;;;;;;;19769:155;19702:222:::0;:::o;19118:334::-;19255:10;19202:4;19243:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;19243:32:0;;;;;;;;;;19294:35;;;;19286:60;;;;-1:-1:-1;;;19286:60:0;;11099:2:1;19286:60:0;;;11081:21:1;11138:2;11118:18;;;11111:30;-1:-1:-1;;;11157:18:1;;;11150:42;11209:18;;19286:60:0;10897:336:1;19286:60:0;19357:65;19366:10;19378:7;19387:34;19406:15;19387:16;:34;:::i;19357:65::-;-1:-1:-1;19440:4:0;;19118:334;-1:-1:-1;;;19118:334:0:o;16006:147::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;16077:27:::1;:32:::0;;-1:-1:-1;;;;16077:32:0::1;-1:-1:-1::0;;;16077:32:0::1;::::0;;16125:20:::1;::::0;::::1;::::0;16077:32;;16125:20:::1;16006:147::o:0;17738:164::-;17815:4;17832:40;17842:10;17854:9;17865:6;17832:9;:40::i;10934:554::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;11045:11:::1;11057:33;3564:2;3521:4;11057:33;:::i;:::-;11045:45;;11114:6;11109:3;:11;;:25;;;;;11128:6;11122:4;:12;;11109:25;:44;;;;;11147:6;11136:9;:17;;11109:44;11101:74;;;::::0;-1:-1:-1;;;11101:74:0;;11440:2:1;11101:74:0::1;::::0;::::1;11422:21:1::0;11479:2;11459:18;;;11452:30;-1:-1:-1;;;11498:18:1;;;11491:48;11556:18;;11101:74:0::1;11238:342:1::0;11101:74:0::1;3521:4;11194:17;11202:9:::0;11194:7;:17:::1;:::i;:::-;:34;11186:79;;;::::0;-1:-1:-1;;;11186:79:0;;11787:2:1;11186:79:0::1;::::0;::::1;11769:21:1::0;11826:2;11806:18;;;11799:30;11865:34;11845:18;;;11838:62;-1:-1:-1;;;11916:18:1;;;11909:31;11957:19;;11186:79:0::1;11585:397:1::0;11186:79:0::1;11286:6;:10:::0;;;11307:7:::1;:12:::0;;;11330:11:::1;:21:::0;;;11362:10:::1;:18:::0;;;11391:12:::1;:22:::0;;;11429:51:::1;::::0;;12246:25:1;;;12302:2;12287:18;;12280:34;;;12330:18;;;12323:34;;;12388:2;12373:18;;12366:34;;;12431:3;12416:19;;12409:35;;;11429:51:0::1;::::0;12233:3:1;12218:19;11429:51:0::1;;;;;;;11034:454;10934:554:::0;;;;;:::o;10640:288::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;10778:4:::1;10746:30;:36;;10738:45;;;::::0;::::1;;10794:19;:50:::0;;;10860:60:::1;::::0;1595:25:1;;;10860:60:0::1;::::0;1583:2:1;1568:18;10860:60:0::1;1449:177:1::0;13559:205:0;13624:4;13659:20;;13643:15;:36;13640:97;;;13722:15;13701:20;;:36;;;;:::i;13640:97::-;-1:-1:-1;13755:1:0;;13559:205::o;13770:139::-;13893:6;13817:4;13875:26;;;:9;:26;;;;13855:18;;3255:13;3749:2;3255;:13;:::i;:::-;3247:21;;:5;:21;:::i;:::-;13841:32;;;;:::i;:::-;13840:61;;;;:::i;10384:250::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;10499:2:::1;10474:23;:27;;10466:36;;;::::0;::::1;;10530:12;:36:::0;;;10582:44:::1;::::0;1595:25:1;;;10582:44:0::1;::::0;1583:2:1;1568:18;10582:44:0::1;1449:177:1::0;15099:249:0;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15197:22:0;::::1;15214:4;15197:22;;15189:60;;;::::0;-1:-1:-1;;;15189:60:0;;12657:2:1;15189:60:0::1;::::0;::::1;12639:21:1::0;12696:2;12676:18;;;12669:30;12735:28;12715:18;;;12708:56;12781:18;;15189:60:0::1;12455:350:1::0;15189:60:0::1;-1:-1:-1::0;;;;;15260:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;;;;:33;;-1:-1:-1;;15260:33:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15309:31;;12978:51:1;;;13045:18;;;13038:50;15309:31:0::1;::::0;12951:18:1;15309:31:0::1;12810:284:1::0;2367:236:0;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2448:22:0;::::1;2440:73;;;::::0;-1:-1:-1;;;2440:73:0;;13301:2:1;2440:73:0::1;::::0;::::1;13283:21:1::0;13340:2;13320:18;;;13313:30;13379:34;13359:18;;;13352:62;-1:-1:-1;;;13430:18:1;;;13423:36;13476:19;;2440:73:0::1;13099:402:1::0;2440:73:0::1;2550:6;::::0;;2529:38:::1;::::0;-1:-1:-1;;;;;2529:38:0;;::::1;::::0;2550:6;::::1;::::0;2529:38:::1;::::0;::::1;2578:6;:17:::0;;-1:-1:-1;;;;;;2578:17:0::1;-1:-1:-1::0;;;;;2578:17:0;;;::::1;::::0;;;::::1;::::0;;2367:236::o;13915:192::-;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;13997:15:::1;::::0;-1:-1:-1;;;;;13991:21:0;;::::1;13997:15:::0;::::1;13991:21;;13983:53;;;::::0;-1:-1:-1;;;13983:53:0;;13708:2:1;13983:53:0::1;::::0;::::1;13690:21:1::0;13747:2;13727:18;;;13720:30;-1:-1:-1;;;13766:18:1;;;13759:50;13826:18;;13983:53:0::1;13506:344:1::0;13983:53:0::1;-1:-1:-1::0;;;;;14047:12:0;::::1;;::::0;;;:6:::1;:12;::::0;;;;;;;;:16;;-1:-1:-1;;14047:16:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14079:20;;12978:51:1;;;13045:18;;;13038:50;14079:20:0::1;::::0;12951:18:1;14079:20:0::1;12810:284:1::0;15360:189:0;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15456:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:35;;-1:-1:-1;;15456:35:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15507:34;;12978:51:1;;;13045:18;;;13038:50;15507:34:0::1;::::0;12951:18:1;15507:34:0::1;12810:284:1::0;6668:258:0;2148:10;2137:7;2050;2077:6;-1:-1:-1;;;;;2077:6:0;;2012:79;2137:7;-1:-1:-1;;;;;2137:21:0;;2129:66;;;;-1:-1:-1;;;2129:66:0;;;;;;;:::i;:::-;6744:13:::1;:33:::0;;-1:-1:-1;;;;;;6744:33:0::1;-1:-1:-1::0;;;;;6744:33:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;6788:28:0;;;:16:::1;:28;::::0;;;;;;;:35;;-1:-1:-1;;6788:35:0;;::::1;-1:-1:-1::0;6788:35:0;;::::1;::::0;;;6834:18:::1;:30:::0;;;;;;:37;;;;::::1;;::::0;;;6887:31;;3048:51:1;;;6887:31:0::1;::::0;3021:18:1;6887:31:0::1;2902:203:1::0;18222:294:0;-1:-1:-1;;;;;18312:19:0;;18304:49;;;;-1:-1:-1;;;18304:49:0;;14057:2:1;18304:49:0;;;14039:21:1;14096:2;14076:18;;;14069:30;-1:-1:-1;;;14115:18:1;;;14108:47;14172:18;;18304:49:0;13855:341:1;18304:49:0;-1:-1:-1;;;;;18372:21:0;;18364:49;;;;-1:-1:-1;;;18364:49:0;;14403:2:1;18364:49:0;;;14385:21:1;14442:2;14422:18;;;14415:30;-1:-1:-1;;;14461:18:1;;;14454:45;14516:18;;18364:49:0;14201:339:1;18364:49:0;-1:-1:-1;;;;;18424:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18476:32;;1595:25:1;;;18476:32:0;;1568:18:1;18476:32:0;;;;;;;18222:294;;;:::o;6932:643::-;-1:-1:-1;;;;;7025:20:0;;7017:51;;;;-1:-1:-1;;;7017:51:0;;14747:2:1;7017:51:0;;;14729:21:1;14786:2;14766:18;;;14759:30;-1:-1:-1;;;14805:18:1;;;14798:48;14863:18;;7017:51:0;14545:342:1;7017:51:0;-1:-1:-1;;;;;7087:23:0;;7079:52;;;;-1:-1:-1;;;7079:52:0;;15094:2:1;7079:52:0;;;15076:21:1;15133:2;15113:18;;;15106:30;-1:-1:-1;;;15152:18:1;;;15145:46;15208:18;;7079:52:0;14892:340:1;7079:52:0;7145:13;;-1:-1:-1;;;7145:13:0;;;;7142:122;;;-1:-1:-1;;;;;7183:21:0;;;;;;:13;:21;;;;;;;;7182:22;:51;;;;-1:-1:-1;;;;;;7209:24:0;;;;;;:13;:24;;;;;;;;7208:25;7182:51;7174:74;;;;-1:-1:-1;;;7174:74:0;;15439:2:1;7174:74:0;;;15421:21:1;15478:2;15458:18;;;15451:30;-1:-1:-1;;;15497:18:1;;;15490:41;15548:18;;7174:74:0;15237:335:1;7174:74:0;-1:-1:-1;;;;;7277:24:0;;;;;;:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;7305:27:0;;;;;;:16;:27;;;;;;;;7277:55;7274:294;;;7347:43;7364:6;7372:9;7383:6;7347:16;:43::i;:::-;6932:643;;;:::o;7274:294::-;7456:1;7440:15;;:17;7432:52;;;;-1:-1:-1;;;7432:52:0;;15779:2:1;7432:52:0;;;15761:21:1;15818:2;15798:18;;;15791:30;15857:25;15837:18;;;15830:53;15900:18;;7432:52:0;15577:347:1;7432:52:0;7499:39;7514:6;7521:9;7531:6;7499:14;:39::i;16315:218::-;16406:20;;16392:13;:34;16384:43;;;;;;16438:20;:34;;;16488:37;;1595:25:1;;;16488:37:0;;1583:2:1;1568:18;16488:37:0;1449:177:1;11654:1074:0;4186:27;:34;;-1:-1:-1;;;;4186:34:0;-1:-1:-1;;;4186:34:0;;;11770:4:::1;4186:34:::0;11752:24;;;4216:4;11752:24:::1;::::0;;;;;11814:10:::1;::::0;11801:12:::1;::::0;11752:24;;4186:34;11801:23:::1;::::0;11814:10;11801:23:::1;:::i;:::-;11879:12;::::0;11862:15:::1;::::0;-1:-1:-1;;;;;11862:15:0::1;11835:16;11852:26:::0;;;:9:::1;:26;::::0;;;;;11787:37;;-1:-1:-1;11835:16:0;11892:4:::1;::::0;11852:39:::1;::::0;::::1;:::i;:::-;:44;;;;:::i;:::-;11835:61:::0;-1:-1:-1;11910:11:0;11907:22:::1;;11922:7;;;;;11907:22;11942:12;11939:134;;;-1:-1:-1::0;11999:4:0::1;11981:24;::::0;;;:9:::1;:24;::::0;;;;;11939:134:::1;;;12040:11;12024:15;:27;12021:52;;;12066:7;;;;;12021:52;12083:22;12106:17;:15;:17::i;:::-;:55;;12153:8;12139:12;;12127:11;:24;;;;:::i;:::-;12126:35;;;;:::i;:::-;12106:55;;;12124:1;12106:55;12083:78:::0;-1:-1:-1;12174:20:0::1;12196:29;12083:78:::0;12196:11;:29:::1;:::i;:::-;12174:51:::0;-1:-1:-1;12238:12:0::1;12251:19;12269:1;12251:17:::0;:19:::1;:::i;:::-;12238:32:::0;-1:-1:-1;12281:14:0::1;12296:23;12304:15:::0;12238:32;12296:23:::1;:::i;:::-;12281:38:::0;-1:-1:-1;12355:21:0::1;12387:27;12281:38:::0;12387:16:::1;:27::i;:::-;12425:11;12438:41;12462:17:::0;12438:21:::1;:41;:::i;:::-;12425:55:::0;-1:-1:-1;12494:19:0;;12491:135:::1;;12529:11;12560:9:::0;12544:14:::1;12551:7:::0;12544:6;:14:::1;:::i;:::-;12543:26;;;;:::i;:::-;12529:40;;12584:30;12598:7;12607:6;12584:13;:30::i;:::-;12514:112;12491:135;12649:13;::::0;:51:::1;::::0;12637:9:::1;::::0;-1:-1:-1;;;;;12649:13:0::1;::::0;12674:21:::1;::::0;12637:9;12649:51;12637:9;12649:51;12674:21;12649:13;:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;4231:1:0::1;-1:-1:-1::0;4243:27:0;:35;;-1:-1:-1;;;;4243:35:0;;;11654:1074::o;10039:339::-;-1:-1:-1;;;;;10152:17:0;;10131:18;10152:17;;;:9;:17;;;;;;10188:23;;;;10180:60;;;;-1:-1:-1;;;10180:60:0;;16341:2:1;10180:60:0;;;16323:21:1;16380:2;16360:18;;;16353:30;-1:-1:-1;;;16399:18:1;;;16392:54;16463:18;;10180:60:0;16139:348:1;10180:60:0;-1:-1:-1;;;;;10251:17:0;;;;;;:9;:17;;;;;:25;;10270:6;;10251:17;:25;;10270:6;;10251:25;:::i;:::-;;;;-1:-1:-1;;;;;;;10287:20:0;;;;;;:9;:20;;;;;:28;;10309:6;;10287:20;:28;;10309:6;;10287:28;:::i;:::-;;;;;;;;10353:9;-1:-1:-1;;;;;10337:33:0;10346:6;-1:-1:-1;;;;;10337:33:0;;10363:6;10337:33;;;;1595:25:1;;1583:2;1568:18;;1449:177;10337:33:0;;;;;;;;10120:258;10039:339;;;:::o;7581:2053::-;-1:-1:-1;;;;;7692:17:0;;7671:18;7692:17;;;:9;:17;;;;;;7728:23;;;;7720:60;;;;-1:-1:-1;;;7720:60:0;;16341:2:1;7720:60:0;;;16323:21:1;16380:2;16360:18;;;16353:30;-1:-1:-1;;;16399:18:1;;;16392:54;16463:18;;7720:60:0;16139:348:1;7720:60:0;-1:-1:-1;;;;;7814:26:0;;7791:20;7814:26;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;7844:29:0;;;;;;:18;:29;;;;;;;;7814:59;-1:-1:-1;;;;;7902:14:0;;;;;;:6;:14;;;;;;7791:82;;-1:-1:-1;7902:14:0;;:47;;;;;7934:15;7933:16;7902:47;7884:686;;;8012:20;;8002:6;:30;;7976:132;;;;-1:-1:-1;;;7976:132:0;;16694:2:1;7976:132:0;;;16676:21:1;16733:2;16713:18;;;16706:30;16772:34;16752:18;;;16745:62;-1:-1:-1;;;16823:18:1;;;16816:38;16871:19;;7976:132:0;16492:404:1;7976:132:0;-1:-1:-1;;;;;17706:18:0;;8123:32;17706:18;;;:9;:18;;;;;;8256:16;;8219:33;8246:6;17706:18;8219:33;:::i;:::-;:53;;8193:151;;;;-1:-1:-1;;;8193:151:0;;17103:2:1;8193:151:0;;;17085:21:1;17142:2;17122:18;;;17115:30;17181:34;17161:18;;;17154:62;-1:-1:-1;;;17232:18:1;;;17225:34;17276:19;;8193:151:0;16901:400:1;8193:151:0;7961:395;7884:686;;;-1:-1:-1;;;;;8380:17:0;;;;;;:6;:17;;;;;;;;:50;;;;;8415:15;8414:16;8380:50;8362:208;;;8475:20;;8465:6;:30;;8457:101;;;;-1:-1:-1;;;8457:101:0;;17508:2:1;8457:101:0;;;17490:21:1;17547:2;17527:18;;;17520:30;17586:34;17566:18;;;17559:62;17657:28;17637:18;;;17630:56;17703:19;;8457:101:0;17306:422:1;8457:101:0;-1:-1:-1;;;;;8593:14:0;;;8582:10;8593:14;;;:6;:14;;;;;;;8630:17;;;;;;;;8593:14;;;;;8630:17;;8677:494;;;;8778:15;;8725:9;;8778:31;;8725:9;;8778:31;:::i;:::-;8762:15;:47;8759:143;;;8833:33;8846:15;8862:3;8833:12;:33::i;:::-;8829:37;;8759:143;;;8895:7;;8891:11;;8759:143;8687:231;8677:494;;;8936:5;8933:238;;;9021:15;;8977:10;;9021:30;;8977:10;;9021:30;:::i;:::-;9005:15;:46;9002:136;;;9075:32;9088:14;9103:3;9075:12;:32::i;9002:136::-;-1:-1:-1;;9132:6:0;;8933:238;;;-1:-1:-1;9160:11:0;;8933:238;9196:15;;-1:-1:-1;;;;;9188:23:0;;;9196:15;;9188:23;;;;9187:40;;-1:-1:-1;9216:10:0;;-1:-1:-1;;;9216:10:0;;;;9215:11;9187:40;:72;;;;-1:-1:-1;9231:27:0;;-1:-1:-1;;;9231:27:0;;;;9230:28;9187:72;9184:115;;;9274:25;9293:5;9274:18;:25::i;:::-;9310:18;9329:51;9343:6;9351:3;9367:12;;9356:10;;:23;;;;:::i;:::-;9329:13;:51::i;:::-;9310:70;-1:-1:-1;9391:16:0;9408:20;9310:70;9408:6;:20;:::i;:::-;-1:-1:-1;;;;;9441:17:0;;;;;;:9;:17;;;;;:25;;9391:37;;-1:-1:-1;9460:6:0;;9441:17;;;:25;;9460:6;;9441:25;:::i;:::-;;;;-1:-1:-1;;9495:4:0;9477:24;;;;:9;:24;;;;;:41;;9505:13;;9477:24;:41;;9505:13;;9477:41;:::i;:::-;;;;-1:-1:-1;;;;;;;9529:20:0;;;;;;:9;:20;;;;;:33;;9551:11;;9529:20;:33;;9551:11;;9529:33;:::i;:::-;;;;;;;;9604:9;-1:-1:-1;;;;;9588:38:0;9597:6;-1:-1:-1;;;;;9588:38:0;;9614:11;9588:38;;;;1595:25:1;;1583:2;1568:18;;1449:177;9588:38:0;;;;;;;;7660:1974;;;;;;;7581:2053;;;:::o;12734:462::-;12824:10;;12792:52;;12809:4;;-1:-1:-1;;;;;12824:10:0;12837:6;12792:8;:52::i;:::-;12879:16;;;12893:1;12879:16;;;;;;;;12855:21;;12879:16;;;;;;;;;;-1:-1:-1;12879:16:0;12855:40;;12924:4;12906;12911:1;12906:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12906:23:0;;;:7;;;;;;;;;;:23;;;;12950:10;;:17;;;-1:-1:-1;;;12950:17:0;;;;:10;;;;;:15;;:17;;;;;12906:7;;12950:17;;;;;:10;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12940:4;12945:1;12940:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12940:27:0;;;:7;;;;;;;;;:27;12984:10;;:186;;-1:-1:-1;;;12984:186:0;;:10;;;:61;;:186;;13060:6;;12984:10;;13097:4;;13124;;13144:15;;12984:186;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12781:415;12734:462;:::o;13202:351::-;13310:10;;13278:57;;13295:4;;-1:-1:-1;;;;;13310:10:0;13323:11;13278:8;:57::i;:::-;13346:10;;:199;;-1:-1:-1;;;13346:199:0;;13413:4;13346:199;;;19447:34:1;;;19497:18;;;19490:34;;;13346:10:0;19540:18:1;;;19533:34;;;19583:18;;;19576:34;19626:19;;;19619:44;13519:15:0;19679:19:1;;;19672:35;-1:-1:-1;;;;;13346:10:0;;;;:26;;13380:9;;19381:19:1;;13346:199:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13202:351;;:::o;9640:211::-;9712:4;9728:20;9765:15;;9749;:31;;;;:::i;:::-;9728:52;-1:-1:-1;9834:8:0;9728:52;9807:9;9814:2;9807:6;:9;:::i;:::-;9806:27;;;;:::i;:::-;:36;;;;:::i;:::-;9798:45;;:6;:45;:::i;:::-;9791:52;9640:211;-1:-1:-1;;;;9640:211:0:o;9857:176::-;9942:4;9993:31;3521:4;;9993:31;:::i;:::-;9978:10;9967;9974:3;9967:6;:10;:::i;:::-;:21;;;;:::i;:::-;9966:59;;;;:::i;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:597::-;311:4;340:2;369;358:9;351:21;401:6;395:13;444:6;439:2;428:9;424:18;417:34;469:1;479:140;493:6;490:1;487:13;479:140;;;588:14;;;584:23;;578:30;554:17;;;573:2;550:26;543:66;508:10;;479:140;;;637:6;634:1;631:13;628:91;;;707:1;702:2;693:6;682:9;678:22;674:31;667:42;628:91;-1:-1:-1;780:2:1;759:15;-1:-1:-1;;755:29:1;740:45;;;;787:2;736:54;;199:597;-1:-1:-1;;;199:597:1:o;801:131::-;-1:-1:-1;;;;;876:31:1;;866:42;;856:70;;922:1;919;912:12;937:315;1005:6;1013;1066:2;1054:9;1045:7;1041:23;1037:32;1034:52;;;1082:1;1079;1072:12;1034:52;1121:9;1108:23;1140:31;1165:5;1140:31;:::i;:::-;1190:5;1242:2;1227:18;;;;1214:32;;-1:-1:-1;;;937:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2281:247::-;2340:6;2393:2;2381:9;2372:7;2368:23;2364:32;2361:52;;;2409:1;2406;2399:12;2361:52;2448:9;2435:23;2467:31;2492:5;2467:31;:::i;:::-;2517:5;2281:247;-1:-1:-1;;;2281:247:1:o;2533:118::-;2619:5;2612:13;2605:21;2598:5;2595:32;2585:60;;2641:1;2638;2631:12;2656:241;2712:6;2765:2;2753:9;2744:7;2740:23;2736:32;2733:52;;;2781:1;2778;2771:12;2733:52;2820:9;2807:23;2839:28;2861:5;2839:28;:::i;3110:750::-;3202:6;3210;3218;3271:2;3259:9;3250:7;3246:23;3242:32;3239:52;;;3287:1;3284;3277:12;3239:52;3327:9;3314:23;3356:18;3397:2;3389:6;3386:14;3383:34;;;3413:1;3410;3403:12;3383:34;3451:6;3440:9;3436:22;3426:32;;3496:7;3489:4;3485:2;3481:13;3477:27;3467:55;;3518:1;3515;3508:12;3467:55;3558:2;3545:16;3584:2;3576:6;3573:14;3570:34;;;3600:1;3597;3590:12;3570:34;3655:7;3648:4;3638:6;3635:1;3631:14;3627:2;3623:23;3619:34;3616:47;3613:67;;;3676:1;3673;3666:12;3613:67;3707:4;3699:13;;;;-1:-1:-1;3731:6:1;-1:-1:-1;;3772:20:1;;3759:34;3802:28;3759:34;3802:28;:::i;:::-;3849:5;3839:15;;;3110:750;;;;;:::o;3865:454::-;3960:6;3968;3976;3984;3992;4045:3;4033:9;4024:7;4020:23;4016:33;4013:53;;;4062:1;4059;4052:12;4013:53;-1:-1:-1;;4085:23:1;;;4155:2;4140:18;;4127:32;;-1:-1:-1;4206:2:1;4191:18;;4178:32;;4257:2;4242:18;;4229:32;;-1:-1:-1;4308:3:1;4293:19;4280:33;;-1:-1:-1;3865:454:1;-1:-1:-1;3865:454:1:o;4548:388::-;4616:6;4624;4677:2;4665:9;4656:7;4652:23;4648:32;4645:52;;;4693:1;4690;4683:12;4645:52;4732:9;4719:23;4751:31;4776:5;4751:31;:::i;:::-;4801:5;-1:-1:-1;4858:2:1;4843:18;;4830:32;4871:33;4830:32;4871:33;:::i;:::-;4923:7;4913:17;;;4548:388;;;;;:::o;4941:382::-;5006:6;5014;5067:2;5055:9;5046:7;5042:23;5038:32;5035:52;;;5083:1;5080;5073:12;5035:52;5122:9;5109:23;5141:31;5166:5;5141:31;:::i;:::-;5191:5;-1:-1:-1;5248:2:1;5233:18;;5220:32;5261:30;5220:32;5261:30;:::i;5328:356::-;5530:2;5512:21;;;5549:18;;;5542:30;5608:34;5603:2;5588:18;;5581:62;5675:2;5660:18;;5328:356::o;6034:184::-;6104:6;6157:2;6145:9;6136:7;6132:23;6128:32;6125:52;;;6173:1;6170;6163:12;6125:52;-1:-1:-1;6196:16:1;;6034:184;-1:-1:-1;6034:184:1:o;6223:127::-;6284:10;6279:3;6275:20;6272:1;6265:31;6315:4;6312:1;6305:15;6339:4;6336:1;6329:15;6355:128;6395:3;6426:1;6422:6;6419:1;6416:13;6413:39;;;6432:18;;:::i;:::-;-1:-1:-1;6468:9:1;;6355:128::o;6488:168::-;6528:7;6594:1;6590;6586:6;6582:14;6579:1;6576:21;6571:1;6564:9;6557:17;6553:45;6550:71;;;6601:18;;:::i;:::-;-1:-1:-1;6641:9:1;;6488:168::o;6661:217::-;6701:1;6727;6717:132;;6771:10;6766:3;6762:20;6759:1;6752:31;6806:4;6803:1;6796:15;6834:4;6831:1;6824:15;6717:132;-1:-1:-1;6863:9:1;;6661:217::o;7162:245::-;7229:6;7282:2;7270:9;7261:7;7257:23;7253:32;7250:52;;;7298:1;7295;7288:12;7250:52;7330:9;7324:16;7349:28;7371:5;7349:28;:::i;8085:422::-;8174:1;8217:5;8174:1;8231:270;8252:7;8242:8;8239:21;8231:270;;;8311:4;8307:1;8303:6;8299:17;8293:4;8290:27;8287:53;;;8320:18;;:::i;:::-;8370:7;8360:8;8356:22;8353:55;;;8390:16;;;;8353:55;8469:22;;;;8429:15;;;;8231:270;;;8235:3;8085:422;;;;;:::o;8512:806::-;8561:5;8591:8;8581:80;;-1:-1:-1;8632:1:1;8646:5;;8581:80;8680:4;8670:76;;-1:-1:-1;8717:1:1;8731:5;;8670:76;8762:4;8780:1;8775:59;;;;8848:1;8843:130;;;;8755:218;;8775:59;8805:1;8796:10;;8819:5;;;8843:130;8880:3;8870:8;8867:17;8864:43;;;8887:18;;:::i;:::-;-1:-1:-1;;8943:1:1;8929:16;;8958:5;;8755:218;;9057:2;9047:8;9044:16;9038:3;9032:4;9029:13;9025:36;9019:2;9009:8;9006:16;9001:2;8995:4;8992:12;8988:35;8985:77;8982:159;;;-1:-1:-1;9094:19:1;;;9126:5;;8982:159;9173:34;9198:8;9192:4;9173:34;:::i;:::-;9243:6;9239:1;9235:6;9231:19;9222:7;9219:32;9216:58;;;9254:18;;:::i;:::-;9292:20;;8512:806;-1:-1:-1;;;8512:806:1:o;9323:140::-;9381:5;9410:47;9451:4;9441:8;9437:19;9431:4;9410:47;:::i;9817:125::-;9857:4;9885:1;9882;9879:8;9876:34;;;9890:18;;:::i;:::-;-1:-1:-1;9927:9:1;;9817:125::o;10625:127::-;10686:10;10681:3;10677:20;10674:1;10667:31;10717:4;10714:1;10707:15;10741:4;10738:1;10731:15;10757:135;10796:3;-1:-1:-1;;10817:17:1;;10814:43;;;10837:18;;:::i;:::-;-1:-1:-1;10884:1:1;10873:13;;10757:135::o;17865:251::-;17935:6;17988:2;17976:9;17967:7;17963:23;17959:32;17956:52;;;18004:1;18001;17994:12;17956:52;18036:9;18030:16;18055:31;18080:5;18055:31;:::i;18121:980::-;18383:4;18431:3;18420:9;18416:19;18462:6;18451:9;18444:25;18488:2;18526:6;18521:2;18510:9;18506:18;18499:34;18569:3;18564:2;18553:9;18549:18;18542:31;18593:6;18628;18622:13;18659:6;18651;18644:22;18697:3;18686:9;18682:19;18675:26;;18736:2;18728:6;18724:15;18710:29;;18757:1;18767:195;18781:6;18778:1;18775:13;18767:195;;;18846:13;;-1:-1:-1;;;;;18842:39:1;18830:52;;18937:15;;;;18902:12;;;;18878:1;18796:9;18767:195;;;-1:-1:-1;;;;;;;19018:32:1;;;;19013:2;18998:18;;18991:60;-1:-1:-1;;;19082:3:1;19067:19;19060:35;18979:3;18121:980;-1:-1:-1;;;18121:980:1:o;19718:306::-;19806:6;19814;19822;19875:2;19863:9;19854:7;19850:23;19846:32;19843:52;;;19891:1;19888;19881:12;19843:52;19920:9;19914:16;19904:26;;19970:2;19959:9;19955:18;19949:25;19939:35;;20014:2;20003:9;19999:18;19993:25;19983:35;;19718:306;;;;;:::o

Swarm Source

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