ETH Price: $3,442.27 (-1.20%)

Contract

0x466d69CBA6854283e7617cD518Ae76e11E57fdBd
 

Overview

ETH Balance

0.003856526118933386 ETH

Eth Value

$13.28 (@ $3,442.27/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve213168592024-12-02 19:17:2323 days ago1733167043IN
Terrabyte AI: TERRA Token
0 ETH0.001360227.93661639
Transfer213164712024-12-02 17:59:4723 days ago1733162387IN
Terrabyte AI: TERRA Token
0 ETH0.0062163238.75274658
Approve213164512024-12-02 17:55:4723 days ago1733162147IN
Terrabyte AI: TERRA Token
0 ETH0.0018241137.46462753
Approve213164352024-12-02 17:52:3523 days ago1733161955IN
Terrabyte AI: TERRA Token
0 ETH0.0014501446.27580674
Approve213164312024-12-02 17:51:4723 days ago1733161907IN
Terrabyte AI: TERRA Token
0 ETH0.0017703236.35984701
Approve213164252024-12-02 17:50:3523 days ago1733161835IN
Terrabyte AI: TERRA Token
0 ETH0.0021539644.46938244
Approve213164082024-12-02 17:47:1123 days ago1733161631IN
Terrabyte AI: TERRA Token
0 ETH0.0019581740.16852814
Approve213159632024-12-02 16:17:3523 days ago1733156255IN
Terrabyte AI: TERRA Token
0 ETH0.0016383733.60841141
Approve213159612024-12-02 16:17:1123 days ago1733156231IN
Terrabyte AI: TERRA Token
0 ETH0.0015313131.41224652
Approve213153102024-12-02 14:06:2323 days ago1733148383IN
Terrabyte AI: TERRA Token
0 ETH0.0010304821.16470803
Approve212653752024-11-25 14:29:2330 days ago1732544963IN
Terrabyte AI: TERRA Token
0 ETH0.001197524.59488916
Transfer205861382024-08-22 19:08:47125 days ago1724353727IN
Terrabyte AI: TERRA Token
0 ETH0.000457341.12584862
Approve205715912024-08-20 18:22:35127 days ago1724178155IN
Terrabyte AI: TERRA Token
0 ETH0.000050671.04647911
Approve204674222024-08-06 5:24:59142 days ago1722921899IN
Terrabyte AI: TERRA Token
0 ETH0.000230024.74900543
Approve203504772024-07-20 21:38:23158 days ago1721511503IN
Terrabyte AI: TERRA Token
0 ETH0.000181553.7288236
Approve203247622024-07-17 7:29:59161 days ago1721201399IN
Terrabyte AI: TERRA Token
0 ETH0.00038497.95835177
Approve202493662024-07-06 18:49:11172 days ago1720291751IN
Terrabyte AI: TERRA Token
0 ETH0.000123012.52657145
Approve199449102024-05-25 5:50:23215 days ago1716616223IN
Terrabyte AI: TERRA Token
0 ETH0.000159623.29638619
Approve198839612024-05-16 17:14:59223 days ago1715879699IN
Terrabyte AI: TERRA Token
0 ETH0.000435978.95437795
Approve198719032024-05-15 0:50:23225 days ago1715734223IN
Terrabyte AI: TERRA Token
0 ETH0.000200054.10881079
Approve198274152024-05-08 19:26:47231 days ago1715196407IN
Terrabyte AI: TERRA Token
0 ETH0.00014615.52053737
Approve197903232024-05-03 14:56:47236 days ago1714748207IN
Terrabyte AI: TERRA Token
0 ETH0.0006240212.8864179
Transfer197902722024-05-03 14:46:23236 days ago1714747583IN
Terrabyte AI: TERRA Token
0 ETH0.0016150411.63068574
Transfer197902452024-05-03 14:40:59236 days ago1714747259IN
Terrabyte AI: TERRA Token
0 ETH0.0014609310.51996478
Approve197747472024-05-01 10:40:59238 days ago1714560059IN
Terrabyte AI: TERRA Token
0 ETH0.0005004210.27796929
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
213164092024-12-02 17:47:2323 days ago1733161643
Terrabyte AI: TERRA Token
0.00791919 ETH
213164092024-12-02 17:47:2323 days ago1733161643
Terrabyte AI: TERRA Token
0.01583838 ETH
213164092024-12-02 17:47:2323 days ago1733161643
Terrabyte AI: TERRA Token
0.0002293 ETH
213164092024-12-02 17:47:2323 days ago1733161643
Terrabyte AI: TERRA Token
0.00395959 ETH
213164092024-12-02 17:47:2323 days ago1733161643
Terrabyte AI: TERRA Token
0.02771716 ETH
205861382024-08-22 19:08:47125 days ago1724353727
Terrabyte AI: TERRA Token
0.00442078 ETH
205861382024-08-22 19:08:47125 days ago1724353727
Terrabyte AI: TERRA Token
0.00884156 ETH
205861382024-08-22 19:08:47125 days ago1724353727
Terrabyte AI: TERRA Token
0.00000082 ETH
205861382024-08-22 19:08:47125 days ago1724353727
Terrabyte AI: TERRA Token
0.00221039 ETH
205861382024-08-22 19:08:47125 days ago1724353727
Terrabyte AI: TERRA Token
0.01547273 ETH
205715912024-08-20 18:22:35127 days ago1724178155
Terrabyte AI: TERRA Token
0.00221039 ETH
205715912024-08-20 18:22:35127 days ago1724178155
Terrabyte AI: TERRA Token
0.01547273 ETH
204674222024-08-06 5:24:59142 days ago1722921899
Terrabyte AI: TERRA Token
0.00221039 ETH
204674222024-08-06 5:24:59142 days ago1722921899
Terrabyte AI: TERRA Token
0.01547273 ETH
197747482024-05-01 10:41:11238 days ago1714560071
Terrabyte AI: TERRA Token
0.00481678 ETH
197747482024-05-01 10:41:11238 days ago1714560071
Terrabyte AI: TERRA Token
0.00963357 ETH
197747482024-05-01 10:41:11238 days ago1714560071
Terrabyte AI: TERRA Token
0.00000126 ETH
197747482024-05-01 10:41:11238 days ago1714560071
Terrabyte AI: TERRA Token
0.00240839 ETH
197747482024-05-01 10:41:11238 days ago1714560071
Terrabyte AI: TERRA Token
0.01685875 ETH
196077632024-04-08 1:44:59262 days ago1712540699
Terrabyte AI: TERRA Token
0.005663 ETH
196077632024-04-08 1:44:59262 days ago1712540699
Terrabyte AI: TERRA Token
0.011326 ETH
196077632024-04-08 1:44:59262 days ago1712540699
Terrabyte AI: TERRA Token
0.00000233 ETH
196077632024-04-08 1:44:59262 days ago1712540699
Terrabyte AI: TERRA Token
0.0028315 ETH
196077632024-04-08 1:44:59262 days ago1712540699
Terrabyte AI: TERRA Token
0.0198205 ETH
195891582024-04-05 11:11:59264 days ago1712315519
Terrabyte AI: TERRA Token
0.00652929 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TERRABYTEAI

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-05
*/

/**
 
 t.me/terrabyteai
 www.terrabyteai.com
 twitter.com/terrabyteai

*/

// SPDX-License-Identifier: NOLICENSE

pragma solidity 0.8.23;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    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;
}

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}


 contract TERRABYTEAI is Context, IERC20, Ownable {
    using Address for address payable;
    
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) public allowedTransfer;

    address[] private _excluded;

    bool private tradingEnabled;
    bool private swapEnabled;
    bool private swapping;
    
    
    
    //Trading Enabled
    
    modifier antiBot(address account){
        require(tradingEnabled || allowedTransfer[account], "Trading not enabled yet");
        _;
    }

    IRouter public router;
    address public pair;

    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);

    uint256 private initialsupply = 1_000_000;
	uint256 private _tTotal = initialsupply * 10 ** _decimals; 
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 private swapTokensAtAmount = 3_000 * 10**9;
    uint256 public maxBuyLimit = 30_000 * 10**9;
    uint256 public maxSellLimit = 30_000 * 10**9;
    uint256 public maxWalletLimit = 30_000 * 10**9;
    
    uint256 private genesis_block;
    
    address public marketingWallet = 0xF19Ca1Adf5Bc863EAA077D3bA9F0259A6cdc9653;
    address public devWallet = 0xCb08D32b541F45590DFF4Dc08607787F886f8009;

    string private constant _name = "TERRABYTE AI";
    string private constant _symbol = "TERRA";

    struct Taxes {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity; 
        uint256 development;
    }

    Taxes public taxes = Taxes(1, 2, 1, 1);
    Taxes public sellTaxes = Taxes(1, 2, 1, 1);

    struct TotFeesPaidStruct{
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity; 
        uint256 development;
    }
    
    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rRfi;
      uint256 rMarketing;
      uint256 rLiquidity;
      uint256 rDevelopment;
      uint256 tTransferAmount;
      uint256 tRfi;
      uint256 tMarketing;
      uint256 tLiquidity;
      uint256 tDevelopment;
    }

    event FeesChanged();
    event UpdatedRouter(address oldRouter, address newRouter);

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

    constructor () {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        
        excludeFromReward(pair);

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[devWallet] = true;
        
        allowedTransfer[address(this)] = true;
        allowedTransfer[owner()] = true;
        allowedTransfer[pair] = true;
        allowedTransfer[marketingWallet] = true;
        allowedTransfer[devWallet] = true;

        emit Transfer(address(0), owner(), _tTotal);
    }

    //std ERC20:
    function name() public pure returns (string memory) {
        return _name;
    }
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
    function decimals() public pure returns (uint8) {
        return _decimals;
    }

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override antiBot(sender) returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }


    
    function transfer(address recipient, uint256 amount) public override antiBot(msg.sender) returns (bool)
    { 
      _transfer(msg.sender, recipient, amount);
      return true;
    }

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

    function setTradingStatus(bool state) external onlyOwner{
        tradingEnabled = state;
        swapEnabled = state;
        if(state == true && genesis_block == 0) genesis_block = block.number;
    }

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

    function excludeFromReward(address account) public onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

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

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }



    function setTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _development) public onlyOwner {
        require(_rfi+_marketing+_liquidity+_development <= 20, "tax too high");
       taxes = Taxes(_rfi,_marketing,_liquidity,_development);
        emit FeesChanged();
    }
    
    function setSellTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _development) public onlyOwner {
        require(_rfi+_marketing+_liquidity+_development <= 20, "tax too high");
       sellTaxes = Taxes(_rfi,_marketing,_liquidity,_development);
        emit FeesChanged();
    }

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal -=rRfi;
        totFeesPaid.rfi +=tRfi;
    }

    function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
        totFeesPaid.liquidity +=tLiquidity;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tLiquidity;
        }
        _rOwned[address(this)] +=rLiquidity;
    }

    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
        totFeesPaid.marketing +=tMarketing;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tMarketing;
        }
        _rOwned[address(this)] +=rMarketing;
    }
    
    function _takeDonation(uint256 rDevelopment, uint256 tDevelopment) private {
        totFeesPaid.development +=tDevelopment;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tDevelopment;
        }
        _rOwned[address(this)] +=rDevelopment;
    }


    
    function _getValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee, isSell);
        (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi, to_return.rMarketing, to_return.rLiquidity) = _getRValues1(to_return, tAmount, takeFee, _getRate());
        (to_return.rDevelopment) = _getRValues2(to_return, takeFee, _getRate());
        return to_return;
    }

    function _getTValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory s) {

        if(!takeFee) {
          s.tTransferAmount = tAmount;
          return s;
        }
        Taxes memory temp;
        if(isSell) temp = sellTaxes;
        else temp = taxes;
        
        s.tRfi = tAmount*temp.rfi/100;
        s.tMarketing = tAmount*temp.marketing/100;
        s.tLiquidity = tAmount*temp.liquidity/100;
        s.tDevelopment = tAmount*temp.development/100;
        s.tTransferAmount = tAmount-s.tRfi-s.tMarketing-s.tLiquidity-s.tDevelopment;
        return s;
    }

    function _getRValues1(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi,uint256 rMarketing, uint256 rLiquidity){
        rAmount = tAmount*currentRate;

        if(!takeFee) {
          return(rAmount, rAmount, 0,0,0);
        }

        rRfi = s.tRfi*currentRate;
        rMarketing = s.tMarketing*currentRate;
        rLiquidity = s.tLiquidity*currentRate;
        uint256 rDevelopment = s.tDevelopment*currentRate;
        rTransferAmount =  rAmount-rRfi-rMarketing-rLiquidity-rDevelopment;
        return (rAmount, rTransferAmount, rRfi,rMarketing,rLiquidity);
    }
    
    function _getRValues2(valuesFromGetValues memory s, bool takeFee, uint256 currentRate) private pure returns (uint256 rDevelopment) {

        if(!takeFee) {
          return(0);
        }

        rDevelopment = s.tDevelopment*currentRate;
        return (rDevelopment);
    }

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

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply-_rOwned[_excluded[i]];
            tSupply = tSupply-_tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(amount <= balanceOf(from),"You are trying to transfer more than your balance");
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            require(tradingEnabled, "Trading not active");
        }
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to] && block.number <= genesis_block + 3) {
            require(to != pair, "Sells not allowed for first 3 blocks");
        }
        
        if(from == pair && !_isExcludedFromFee[to] && !swapping){
            require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
            require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit");
        }
        
        if(from != pair && !_isExcludedFromFee[to] && !_isExcludedFromFee[from] && !swapping){
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
            if(to != pair){
                require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit");
            }

        }
        
        
        if(balanceOf(from) - amount <= 10 *  10**decimals()) amount -= (10 * 10**decimals() + amount - balanceOf(from));
        
       
        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if(!swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            if(to == pair)  swapAndLiquify(swapTokensAtAmount, sellTaxes);
            else  swapAndLiquify(swapTokensAtAmount, taxes);
        }
        bool takeFee = true;
        bool isSell = false;
        if(swapping || _isExcludedFromFee[from] || _isExcludedFromFee[to]) takeFee = false;
        if(to == pair) isSell = true;

        _tokenTransfer(from, to, amount, takeFee, isSell);
    }


    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee, bool isSell) private {

        valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSell);

        if (_isExcluded[sender] ) {  //from excluded
                _tOwned[sender] = _tOwned[sender]-tAmount;
        }
        if (_isExcluded[recipient]) { //to excluded
                _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender]-s.rAmount;
        _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount;
        
        if(s.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi);
        if(s.rLiquidity > 0 || s.tLiquidity > 0) {
            _takeLiquidity(s.rLiquidity,s.tLiquidity);
            emit Transfer(sender, address(this), s.tLiquidity + s.tMarketing + s.tDevelopment);
        }
        if(s.rMarketing > 0 || s.tMarketing > 0) _takeMarketing(s.rMarketing, s.tMarketing);
        if(s.rDevelopment > 0 || s.tDevelopment > 0) _takeDonation(s.rDevelopment, s.tDevelopment);
        emit Transfer(sender, recipient, s.tTransferAmount);
        
    }

    function swapAndLiquify(uint256 contractBalance, Taxes memory temp) private lockTheSwap{
        uint256 denominator = (temp.liquidity + temp.marketing + temp.development) * 2;
        uint256 tokensToAddLiquidityWith = contractBalance * temp.liquidity / denominator;
        uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

        uint256 initialBalance = address(this).balance;

        swapTokensForBNB(toSwap);

        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 unitBalance= deltaBalance / (denominator - temp.liquidity);
        uint256 bnbToAddLiquidityWith = unitBalance * temp.liquidity;

        if(bnbToAddLiquidityWith > 0){
            // Add liquidity to pancake
            addLiquidity(tokensToAddLiquidityWith, bnbToAddLiquidityWith);
        }

        uint256 marketingAmt = unitBalance * 2 * temp.marketing;
        if(marketingAmt > 0){
            payable(marketingWallet).sendValue(marketingAmt);
        }
        uint256 developmentAmt = unitBalance * 2 * temp.development;
        if(developmentAmt > 0){
            payable(devWallet).sendValue(developmentAmt);
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function swapTokensForBNB(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function updateMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }
    
    function updateDevWallet(address newWallet) external onlyOwner{
        devWallet = newWallet;
    }


    function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{
        swapTokensAtAmount = amount * 10**_decimals;
    }

    function updateSwapEnabled(bool _enabled) external onlyOwner{
        swapEnabled = _enabled;
    }
    
    
    
    function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell) external onlyOwner{
        maxBuyLimit = maxBuy * 10**decimals();
        maxSellLimit = maxSell * 10**decimals();
    }
    
    function updateMaxWalletlimit(uint256 amount) external onlyOwner{
        maxWalletLimit = amount * 10**decimals();
    }
    

    receive() external payable{
    }
}

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":[],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"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":"","type":"address"}],"name":"allowedTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"development","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setTradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"development","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"development","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletlimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620f4240600a556009600a6200001b9190620009b8565b600a546200002a9190620009c8565b600b8190556200003c905f19620009f6565b62000049905f1962000a0c565b600c556502ba7def3000600d55651b48eb57e000600e819055600f819055601055601280546001600160a01b031990811673f19ca1adf5bc863eaa077d3ba9f0259a6cdc9653179091556013805490911673cb08d32b541f45590dff4dc08607787f886f800917905560408051608080820183526001808352600260208085018290528486018390526060948501839052601483905560158290556016839055601783905585519384018652828452830181905293820181905291018190526018819055601991909155601a819055601b5534801562000127575f80fd5b5062000133336200049e565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000189573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001af919062000a22565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000221919062000a22565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200026c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000292919062000a22565b600880546001600160a01b038086166301000000026301000000600160b81b031990921691909117909155600980549183166001600160a01b031990921682179055909150620002e290620004ed565b600c5460015f620002fa5f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120939093553083526004918290528220805460ff1916600190811790915591620003475f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905560125482168152600484528281208054861660019081179091556013549092168152828120805486168317905530815260069384905291822080549094168117909355620003c95f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055600954821681526006909352818320805485166001908117909155601254821684528284208054861682179055601354909116835291208054909216179055620004475f546001600160a01b031690565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040516200048e91815260200190565b60405180910390a3505062000a74565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f546001600160a01b031633146200054c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b0381165f9081526005602052604090205460ff1615620005b65760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640162000543565b6001600160a01b0381165f908152600160205260409020541562000610576001600160a01b0381165f90815260016020526040902054620005f79062000675565b6001600160a01b0382165f908152600260205260409020555b6001600160a01b03165f818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b5f600c54821115620006dd5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840162000543565b5f620006e8620006fd565b9050620006f6818462000a4a565b9392505050565b5f80806200070a62000722565b90925090506200071b818362000a4a565b9250505090565b600c54600b545f918291825b60075481101562000875578260015f6007848154811062000753576200075362000a60565b5f9182526020808320909101546001600160a01b031683528201929092526040019020541180620007bf57508160025f6007848154811062000799576200079962000a60565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b15620007d657600c54600b54945094505050509091565b60015f60078381548110620007ef57620007ef62000a60565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546200081f908462000a0c565b925060025f600783815481106200083a576200083a62000a60565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546200086a908362000a0c565b91506001016200072e565b50600b54600c5462000888919062000a4a565b821015620008a057600c54600b549350935050509091565b90939092509050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620008fd57815f1904821115620008e157620008e1620008a9565b80851615620008ef57918102915b93841c9390800290620008c2565b509250929050565b5f826200091557506001620009b2565b816200092357505f620009b2565b81600181146200093c5760028114620009475762000967565b6001915050620009b2565b60ff8411156200095b576200095b620008a9565b50506001821b620009b2565b5060208310610133831016604e8410600b84101617156200098c575081810a620009b2565b620009988383620008bd565b805f1904821115620009ae57620009ae620008a9565b0290505b92915050565b5f620006f660ff84168362000905565b8082028115828204841417620009b257620009b2620008a9565b634e487b7160e01b5f52601260045260245ffd5b5f8262000a075762000a07620009e2565b500690565b81810381811115620009b257620009b2620008a9565b5f6020828403121562000a33575f80fd5b81516001600160a01b0381168114620006f6575f80fd5b5f8262000a5b5762000a5b620009e2565b500490565b634e487b7160e01b5f52603260045260245ffd5b612cfd8062000a825f395ff3fe608060405260043610610220575f3560e01c8063728f8eea1161011e578063a9059cbb116100a8578063ea2f0b371161006d578063ea2f0b37146106b2578063f2fde38b146106d1578063f480fec2146106f0578063f66895a31461070f578063f887ea4014610731575f80fd5b8063a9059cbb146105f2578063aacebbe314610611578063d257b34f14610630578063d8672e511461064f578063dd62ed3e1461066e575f80fd5b8063924de9b7116100ee578063924de9b71461054657806395d89b41146105655780639ba5e4d514610592578063a12a7d61146105b4578063a8aa1b31146105d3575f80fd5b8063728f8eea1461049257806375f0a874146104d45780638da5cb5b1461050b5780638ea5220f14610527575f80fd5b8063437823ec116101aa578063652e2f041161016f578063652e2f041461042057806366a88d96146104355780636aa5b37f1461044a57806370a082311461045f578063715018a61461047e575f80fd5b8063437823ec146103765780634549b0391461039557806352390c02146103b457806359759f61146103d357806362695eae146103f2575f80fd5b806323b872dd116101f057806323b872dd146102df5780632d838119146102fe578063313ce5671461031d5780633685d41914610338578063379ba1d914610357575f80fd5b806306fdde031461022b578063095ea7b31461027157806318160ddd146102a05780631816467f146102be575f80fd5b3661022757005b5f80fd5b348015610236575f80fd5b5060408051808201909152600c81526b54455252414259544520414960a01b60208201525b6040516102689190612847565b60405180910390f35b34801561027c575f80fd5b5061029061028b3660046128a7565b610757565b6040519015158152602001610268565b3480156102ab575f80fd5b50600b545b604051908152602001610268565b3480156102c9575f80fd5b506102dd6102d83660046128d1565b6107bd565b005b3480156102ea575f80fd5b506102906102f93660046128ec565b610808565b348015610309575f80fd5b506102b061031836600461292a565b6108ff565b348015610328575f80fd5b5060405160098152602001610268565b348015610343575f80fd5b506102dd6103523660046128d1565b610981565b348015610362575f80fd5b506102dd610371366004612955565b610b25565b348015610381575f80fd5b506102dd6103903660046128d1565b610b8a565b3480156103a0575f80fd5b506102b06103af36600461296e565b610bd6565b3480156103bf575f80fd5b506102dd6103ce3660046128d1565b610c65565b3480156103de575f80fd5b506102dd6103ed366004612998565b610db2565b3480156103fd575f80fd5b5061029061040c3660046128d1565b60066020525f908152604090205460ff1681565b34801561042b575f80fd5b506102b0600f5481565b348015610440575f80fd5b506102b060105481565b348015610455575f80fd5b506102b0600e5481565b34801561046a575f80fd5b506102b06104793660046128d1565b610e11565b348015610489575f80fd5b506102dd610e6d565b34801561049d575f80fd5b506014546015546016546017546104b49392919084565b604080519485526020850193909352918301526060820152608001610268565b3480156104df575f80fd5b506012546104f3906001600160a01b031681565b6040516001600160a01b039091168152602001610268565b348015610516575f80fd5b505f546001600160a01b03166104f3565b348015610532575f80fd5b506013546104f3906001600160a01b031681565b348015610551575f80fd5b506102dd610560366004612955565b610ea1565b348015610570575f80fd5b50604080518082019091526005815264544552524160d81b602082015261025b565b34801561059d575f80fd5b50601c54601d54601e54601f546104b49392919084565b3480156105bf575f80fd5b506102dd6105ce3660046129b8565b610ee4565b3480156105de575f80fd5b506009546104f3906001600160a01b031681565b3480156105fd575f80fd5b5061029061060c3660046128a7565b610fcc565b34801561061c575f80fd5b506102dd61062b3660046128d1565b61101f565b34801561063b575f80fd5b506102dd61064a36600461292a565b61106a565b34801561065a575f80fd5b506102dd61066936600461292a565b6110af565b348015610679575f80fd5b506102b06106883660046129e7565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156106bd575f80fd5b506102dd6106cc3660046128d1565b6110f4565b3480156106dc575f80fd5b506102dd6106eb3660046128d1565b61113d565b3480156106fb575f80fd5b506102dd61070a3660046129b8565b6111d4565b34801561071a575f80fd5b50601854601954601a54601b546104b49392919084565b34801561073c575f80fd5b506008546104f390630100000090046001600160a01b031681565b6008545f90339060ff168061078357506001600160a01b0381165f9081526006602052604090205460ff165b6107a85760405162461bcd60e51b815260040161079f90612a1e565b60405180910390fd5b6107b33385856112bc565b5060019392505050565b5f546001600160a01b031633146107e65760405162461bcd60e51b815260040161079f90612a55565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6008545f90849060ff168061083457506001600160a01b0381165f9081526006602052604090205460ff165b6108505760405162461bcd60e51b815260040161079f90612a1e565b61085b8585856113df565b6001600160a01b0385165f908152600360209081526040808320338452909152902054838110156108df5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161079f565b6108f386336108ee8785612a9e565b6112bc565b50600195945050505050565b5f600c548211156109655760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161079f565b5f61096e611b3a565b905061097a8184612ab1565b9392505050565b5f546001600160a01b031633146109aa5760405162461bcd60e51b815260040161079f90612a55565b6001600160a01b0381165f9081526005602052604090205460ff16610a115760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c75646564000000000000000000604482015260640161079f565b5f5b600754811015610b2157816001600160a01b031660078281548110610a3a57610a3a612ad0565b5f918252602090912001546001600160a01b031603610b195760078054610a6390600190612a9e565b81548110610a7357610a73612ad0565b5f91825260209091200154600780546001600160a01b039092169183908110610a9e57610a9e612ad0565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556007805480610af557610af5612ae4565b5f8281526020902081015f1990810180546001600160a01b03191690550190555050565b600101610a13565b5050565b5f546001600160a01b03163314610b4e5760405162461bcd60e51b815260040161079f90612a55565b6008805461ffff191661ff0019831515908116919091176101008202179091556001148015610b7d5750601154155b15610b8757436011555b50565b5f546001600160a01b03163314610bb35760405162461bcd60e51b815260040161079f90612a55565b6001600160a01b03165f908152600460205260409020805460ff19166001179055565b5f600b54831115610c295760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015260640161079f565b81610c45575f610c3b8460015f611b5b565b519150610c5f9050565b5f610c528460015f611b5b565b602001519150610c5f9050565b92915050565b5f546001600160a01b03163314610c8e5760405162461bcd60e51b815260040161079f90612a55565b6001600160a01b0381165f9081526005602052604090205460ff1615610cf65760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640161079f565b6001600160a01b0381165f9081526001602052604090205415610d4d576001600160a01b0381165f90815260016020526040902054610d34906108ff565b6001600160a01b0382165f908152600260205260409020555b6001600160a01b03165f818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b5f546001600160a01b03163314610ddb5760405162461bcd60e51b815260040161079f90612a55565b610de76009600a612bd8565b610df19083612be6565b600e55610e006009600a612bd8565b610e0a9082612be6565b600f555050565b6001600160a01b0381165f9081526005602052604081205460ff1615610e4c57506001600160a01b03165f9081526002602052604090205490565b6001600160a01b0382165f90815260016020526040902054610c5f906108ff565b5f546001600160a01b03163314610e965760405162461bcd60e51b815260040161079f90612a55565b610e9f5f611bb7565b565b5f546001600160a01b03163314610eca5760405162461bcd60e51b815260040161079f90612a55565b600880549115156101000261ff0019909216919091179055565b5f546001600160a01b03163314610f0d5760405162461bcd60e51b815260040161079f90612a55565b60148183610f1b8688612bfd565b610f259190612bfd565b610f2f9190612bfd565b1115610f6c5760405162461bcd60e51b815260206004820152600c60248201526b0e8c2f040e8dede40d0d2ced60a31b604482015260640161079f565b60408051608081018252858152602081018590528082018490526060018290526014859055601584905560168390556017829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a150505050565b6008545f90339060ff1680610ff857506001600160a01b0381165f9081526006602052604090205460ff165b6110145760405162461bcd60e51b815260040161079f90612a1e565b6107b33385856113df565b5f546001600160a01b031633146110485760405162461bcd60e51b815260040161079f90612a55565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146110935760405162461bcd60e51b815260040161079f90612a55565b61109f6009600a612bd8565b6110a99082612be6565b600d5550565b5f546001600160a01b031633146110d85760405162461bcd60e51b815260040161079f90612a55565b6110e46009600a612bd8565b6110ee9082612be6565b60105550565b5f546001600160a01b0316331461111d5760405162461bcd60e51b815260040161079f90612a55565b6001600160a01b03165f908152600460205260409020805460ff19169055565b5f546001600160a01b031633146111665760405162461bcd60e51b815260040161079f90612a55565b6001600160a01b0381166111cb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161079f565b610b8781611bb7565b5f546001600160a01b031633146111fd5760405162461bcd60e51b815260040161079f90612a55565b6014818361120b8688612bfd565b6112159190612bfd565b61121f9190612bfd565b111561125c5760405162461bcd60e51b815260206004820152600c60248201526b0e8c2f040e8dede40d0d2ced60a31b604482015260640161079f565b604080516080810182528581526020810185905280820184905260600182905260188590556019849055601a839055601b829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a150505050565b6001600160a01b03831661131e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161079f565b6001600160a01b03821661137f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161079f565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114435760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161079f565b6001600160a01b0382166114a55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161079f565b5f81116115065760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161079f565b61150f83610e11565b8111156115785760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161079f565b6001600160a01b0383165f9081526004602052604090205460ff161580156115b857506001600160a01b0382165f9081526004602052604090205460ff16155b156116045760085460ff166116045760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b604482015260640161079f565b6001600160a01b0383165f9081526004602052604090205460ff1615801561164457506001600160a01b0382165f9081526004602052604090205460ff16155b801561165d5750601154611659906003612bfd565b4311155b156116cc576009546001600160a01b03908116908316036116cc5760405162461bcd60e51b8152602060048201526024808201527f53656c6c73206e6f7420616c6c6f77656420666f72206669727374203320626c6044820152636f636b7360e01b606482015260840161079f565b6009546001600160a01b03848116911614801561170157506001600160a01b0382165f9081526004602052604090205460ff16155b8015611716575060085462010000900460ff16155b156117d257600e5481111561176d5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d6974000000604482015260640161079f565b6010548161177a84610e11565b6117849190612bfd565b11156117d25760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161079f565b6009546001600160a01b0384811691161480159061180857506001600160a01b0382165f9081526004602052604090205460ff16155b801561182c57506001600160a01b0383165f9081526004602052604090205460ff16155b8015611841575060085462010000900460ff16155b1561191257600f548111156118985760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d69740000604482015260640161079f565b6009546001600160a01b0383811691161461191257601054816118ba84610e11565b6118c49190612bfd565b11156119125760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161079f565b61191e6009600a612bd8565b61192990600a612be6565b8161193385610e11565b61193d9190612a9e565b116119845761194b83610e11565b816119586009600a612bd8565b61196390600a612be6565b61196d9190612bfd565b6119779190612a9e565b6119819082612a9e565b90505b5f600d5461199130610e11565b600854911115915062010000900460ff161580156119b65750600854610100900460ff165b80156119bf5750805b80156119d957506009546001600160a01b03858116911614155b80156119fd57506001600160a01b0384165f9081526004602052604090205460ff16155b8015611a2157506001600160a01b0383165f9081526004602052604090205460ff16155b15611aad576009546001600160a01b0390811690841603611a7757600d546040805160808101825260185481526019546020820152601a5491810191909152601b546060820152611a729190611c06565b611aad565b600d546040805160808101825260145481526015546020820152601654918101919091526017546060820152611aad9190611c06565b6008546001905f9062010000900460ff1680611ae057506001600160a01b0386165f9081526004602052604090205460ff165b80611b0257506001600160a01b0385165f9081526004602052604090205460ff165b15611b0b575f91505b6009546001600160a01b0390811690861603611b25575060015b611b328686868585611d58565b505050505050565b5f805f611b45612014565b9092509050611b548183612ab1565b9250505090565b611b636127f8565b611b6e848484612184565b9050611b83818585611b7e611b3a565b6122f0565b60808601526060850152604084015260208301528152611bab8184611ba6611b3a565b61239c565b60a08201529392505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6008805462ff00001916620100001790556060810151602082015160408301515f9291611c3291612bfd565b611c3c9190612bfd565b611c47906002612be6565b90505f81836040015185611c5b9190612be6565b611c659190612ab1565b90505f611c728286612a9e565b905047611c7e826123c2565b5f611c898247612a9e565b90505f866040015186611c9c9190612a9e565b611ca69083612ab1565b90505f876040015182611cb99190612be6565b90508015611ccb57611ccb8682612531565b60208801515f90611cdd846002612be6565b611ce79190612be6565b90508015611d0557601254611d05906001600160a01b031682612611565b60608901515f90611d17856002612be6565b611d219190612be6565b90508015611d3f57601354611d3f906001600160a01b031682612611565b50506008805462ff000019169055505050505050505050565b5f611d64848484611b5b565b6001600160a01b0387165f9081526005602052604090205490915060ff1615611dc3576001600160a01b0386165f90815260026020526040902054611daa908590612a9e565b6001600160a01b0387165f908152600260205260409020555b6001600160a01b0385165f9081526005602052604090205460ff1615611e235760c08101516001600160a01b0386165f90815260026020526040902054611e0a9190612bfd565b6001600160a01b0386165f908152600260205260409020555b80516001600160a01b0387165f90815260016020526040902054611e479190612a9e565b6001600160a01b038088165f9081526001602090815260408083209490945584015191881681529190912054611e7d9190612bfd565b6001600160a01b0386165f908152600160205260409081902091909155810151151580611ead57505f8160e00151115b15611ec457611ec481604001518260e0015161272b565b5f81608001511180611eda57505f816101200151115b15611f5f57611ef2816080015182610120015161275e565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101400151846101000151856101200151611f439190612bfd565b611f4d9190612bfd565b60405190815260200160405180910390a35b5f81606001511180611f7557505f816101000151115b15611f8d57611f8d81606001518261010001516127d0565b5f8160a001511180611fa357505f816101400151115b15611fbb57611fbb8160a001518261014001516127e4565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c0015160405161200491815260200190565b60405180910390a3505050505050565b600c54600b545f918291825b600754811015612153578260015f6007848154811061204157612041612ad0565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205411806120a957508160025f6007848154811061208357612083612ad0565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b156120bf57600c54600b54945094505050509091565b60015f600783815481106120d5576120d5612ad0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546121039084612a9e565b925060025f6007838154811061211b5761211b612ad0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546121499083612a9e565b9150600101612020565b50600b54600c546121649190612ab1565b82101561217b57600c54600b549350935050509091565b90939092509050565b61218c6127f8565b8261219d5760c0810184905261097a565b6121c460405180608001604052805f81526020015f81526020015f81526020015f81525090565b82156121f957506040805160808101825260185481526019546020820152601a5491810191909152601b546060820152612224565b5060408051608081018252601454815260155460208201526016549181019190915260175460608201525b80516064906122339087612be6565b61223d9190612ab1565b60e083015260208101516064906122549087612be6565b61225e9190612ab1565b61010083015260408101516064906122769087612be6565b6122809190612ab1565b61012083015260608101516064906122989087612be6565b6122a29190612ab1565b610140830181905261012083015161010084015160e08501516122c59089612a9e565b6122cf9190612a9e565b6122d99190612a9e565b6122e39190612a9e565b60c0830152509392505050565b5f808080806122ff8689612be6565b94508661231657508392505f915081905080612391565b858960e001516123269190612be6565b9250858961010001516123399190612be6565b91508589610120015161234c9190612be6565b90505f868a61014001516123609190612be6565b905080828461236f878a612a9e565b6123799190612a9e565b6123839190612a9e565b61238d9190612a9e565b9450505b945094509450945094565b5f826123a957505f61097a565b818461014001516123ba9190612be6565b949350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106123f5576123f5612ad0565b60200260200101906001600160a01b031690816001600160a01b031681525050600860039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612466573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061248a9190612c10565b8160018151811061249d5761249d612ad0565b6001600160a01b0392831660209182029290920101526008546124ca9130916301000000900416846112bc565b60085460405163791ac94760e01b815263010000009091046001600160a01b03169063791ac947906125089085905f90869030904290600401612c2b565b5f604051808303815f87803b15801561251f575f80fd5b505af1158015611b32573d5f803e3d5ffd5b600854612550903090630100000090046001600160a01b0316846112bc565b6008546001600160a01b0363010000009091041663f305d7198230855f8061257f5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156125e5573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061260a9190612c9c565b5050505050565b804710156126615760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161079f565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146126aa576040519150601f19603f3d011682016040523d82523d5f602084013e6126af565b606091505b50509050806127265760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161079f565b505050565b81600c5f82825461273c9190612a9e565b9091555050601c80548291905f90612755908490612bfd565b90915550505050565b80601c6002015f8282546127729190612bfd565b9091555050305f9081526005602052604090205460ff16156127b257305f90815260026020526040812080548392906127ac908490612bfd565b90915550505b305f9081526001602052604081208054849290612755908490612bfd565b80601c6001015f8282546127729190612bfd565b80601c6003015f8282546127729190612bfd565b6040518061016001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f602080835283518060208501525f5b8181101561287357858101830151858201604001528201612857565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b87575f80fd5b5f80604083850312156128b8575f80fd5b82356128c381612893565b946020939093013593505050565b5f602082840312156128e1575f80fd5b813561097a81612893565b5f805f606084860312156128fe575f80fd5b833561290981612893565b9250602084013561291981612893565b929592945050506040919091013590565b5f6020828403121561293a575f80fd5b5035919050565b80358015158114612950575f80fd5b919050565b5f60208284031215612965575f80fd5b61097a82612941565b5f806040838503121561297f575f80fd5b8235915061298f60208401612941565b90509250929050565b5f80604083850312156129a9575f80fd5b50508035926020909101359150565b5f805f80608085870312156129cb575f80fd5b5050823594602084013594506040840135936060013592509050565b5f80604083850312156129f8575f80fd5b8235612a0381612893565b91506020830135612a1381612893565b809150509250929050565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610c5f57610c5f612a8a565b5f82612acb57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b600181815b80851115612b3257815f1904821115612b1857612b18612a8a565b80851615612b2557918102915b93841c9390800290612afd565b509250929050565b5f82612b4857506001610c5f565b81612b5457505f610c5f565b8160018114612b6a5760028114612b7457612b90565b6001915050610c5f565b60ff841115612b8557612b85612a8a565b50506001821b610c5f565b5060208310610133831016604e8410600b8410161715612bb3575081810a610c5f565b612bbd8383612af8565b805f1904821115612bd057612bd0612a8a565b029392505050565b5f61097a60ff841683612b3a565b8082028115828204841417610c5f57610c5f612a8a565b80820180821115610c5f57610c5f612a8a565b5f60208284031215612c20575f80fd5b815161097a81612893565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015612c7b5784516001600160a01b031683529383019391830191600101612c56565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612cae575f80fd5b835192506020840151915060408401519050925092509256fea264697066735822122082e0efa0b9fb050c578f8d763709a980953bf58ef1f11fc53ce03c1b9a694cf464736f6c63430008170033

Deployed Bytecode

0x608060405260043610610220575f3560e01c8063728f8eea1161011e578063a9059cbb116100a8578063ea2f0b371161006d578063ea2f0b37146106b2578063f2fde38b146106d1578063f480fec2146106f0578063f66895a31461070f578063f887ea4014610731575f80fd5b8063a9059cbb146105f2578063aacebbe314610611578063d257b34f14610630578063d8672e511461064f578063dd62ed3e1461066e575f80fd5b8063924de9b7116100ee578063924de9b71461054657806395d89b41146105655780639ba5e4d514610592578063a12a7d61146105b4578063a8aa1b31146105d3575f80fd5b8063728f8eea1461049257806375f0a874146104d45780638da5cb5b1461050b5780638ea5220f14610527575f80fd5b8063437823ec116101aa578063652e2f041161016f578063652e2f041461042057806366a88d96146104355780636aa5b37f1461044a57806370a082311461045f578063715018a61461047e575f80fd5b8063437823ec146103765780634549b0391461039557806352390c02146103b457806359759f61146103d357806362695eae146103f2575f80fd5b806323b872dd116101f057806323b872dd146102df5780632d838119146102fe578063313ce5671461031d5780633685d41914610338578063379ba1d914610357575f80fd5b806306fdde031461022b578063095ea7b31461027157806318160ddd146102a05780631816467f146102be575f80fd5b3661022757005b5f80fd5b348015610236575f80fd5b5060408051808201909152600c81526b54455252414259544520414960a01b60208201525b6040516102689190612847565b60405180910390f35b34801561027c575f80fd5b5061029061028b3660046128a7565b610757565b6040519015158152602001610268565b3480156102ab575f80fd5b50600b545b604051908152602001610268565b3480156102c9575f80fd5b506102dd6102d83660046128d1565b6107bd565b005b3480156102ea575f80fd5b506102906102f93660046128ec565b610808565b348015610309575f80fd5b506102b061031836600461292a565b6108ff565b348015610328575f80fd5b5060405160098152602001610268565b348015610343575f80fd5b506102dd6103523660046128d1565b610981565b348015610362575f80fd5b506102dd610371366004612955565b610b25565b348015610381575f80fd5b506102dd6103903660046128d1565b610b8a565b3480156103a0575f80fd5b506102b06103af36600461296e565b610bd6565b3480156103bf575f80fd5b506102dd6103ce3660046128d1565b610c65565b3480156103de575f80fd5b506102dd6103ed366004612998565b610db2565b3480156103fd575f80fd5b5061029061040c3660046128d1565b60066020525f908152604090205460ff1681565b34801561042b575f80fd5b506102b0600f5481565b348015610440575f80fd5b506102b060105481565b348015610455575f80fd5b506102b0600e5481565b34801561046a575f80fd5b506102b06104793660046128d1565b610e11565b348015610489575f80fd5b506102dd610e6d565b34801561049d575f80fd5b506014546015546016546017546104b49392919084565b604080519485526020850193909352918301526060820152608001610268565b3480156104df575f80fd5b506012546104f3906001600160a01b031681565b6040516001600160a01b039091168152602001610268565b348015610516575f80fd5b505f546001600160a01b03166104f3565b348015610532575f80fd5b506013546104f3906001600160a01b031681565b348015610551575f80fd5b506102dd610560366004612955565b610ea1565b348015610570575f80fd5b50604080518082019091526005815264544552524160d81b602082015261025b565b34801561059d575f80fd5b50601c54601d54601e54601f546104b49392919084565b3480156105bf575f80fd5b506102dd6105ce3660046129b8565b610ee4565b3480156105de575f80fd5b506009546104f3906001600160a01b031681565b3480156105fd575f80fd5b5061029061060c3660046128a7565b610fcc565b34801561061c575f80fd5b506102dd61062b3660046128d1565b61101f565b34801561063b575f80fd5b506102dd61064a36600461292a565b61106a565b34801561065a575f80fd5b506102dd61066936600461292a565b6110af565b348015610679575f80fd5b506102b06106883660046129e7565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156106bd575f80fd5b506102dd6106cc3660046128d1565b6110f4565b3480156106dc575f80fd5b506102dd6106eb3660046128d1565b61113d565b3480156106fb575f80fd5b506102dd61070a3660046129b8565b6111d4565b34801561071a575f80fd5b50601854601954601a54601b546104b49392919084565b34801561073c575f80fd5b506008546104f390630100000090046001600160a01b031681565b6008545f90339060ff168061078357506001600160a01b0381165f9081526006602052604090205460ff165b6107a85760405162461bcd60e51b815260040161079f90612a1e565b60405180910390fd5b6107b33385856112bc565b5060019392505050565b5f546001600160a01b031633146107e65760405162461bcd60e51b815260040161079f90612a55565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6008545f90849060ff168061083457506001600160a01b0381165f9081526006602052604090205460ff165b6108505760405162461bcd60e51b815260040161079f90612a1e565b61085b8585856113df565b6001600160a01b0385165f908152600360209081526040808320338452909152902054838110156108df5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161079f565b6108f386336108ee8785612a9e565b6112bc565b50600195945050505050565b5f600c548211156109655760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161079f565b5f61096e611b3a565b905061097a8184612ab1565b9392505050565b5f546001600160a01b031633146109aa5760405162461bcd60e51b815260040161079f90612a55565b6001600160a01b0381165f9081526005602052604090205460ff16610a115760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c75646564000000000000000000604482015260640161079f565b5f5b600754811015610b2157816001600160a01b031660078281548110610a3a57610a3a612ad0565b5f918252602090912001546001600160a01b031603610b195760078054610a6390600190612a9e565b81548110610a7357610a73612ad0565b5f91825260209091200154600780546001600160a01b039092169183908110610a9e57610a9e612ad0565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556007805480610af557610af5612ae4565b5f8281526020902081015f1990810180546001600160a01b03191690550190555050565b600101610a13565b5050565b5f546001600160a01b03163314610b4e5760405162461bcd60e51b815260040161079f90612a55565b6008805461ffff191661ff0019831515908116919091176101008202179091556001148015610b7d5750601154155b15610b8757436011555b50565b5f546001600160a01b03163314610bb35760405162461bcd60e51b815260040161079f90612a55565b6001600160a01b03165f908152600460205260409020805460ff19166001179055565b5f600b54831115610c295760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015260640161079f565b81610c45575f610c3b8460015f611b5b565b519150610c5f9050565b5f610c528460015f611b5b565b602001519150610c5f9050565b92915050565b5f546001600160a01b03163314610c8e5760405162461bcd60e51b815260040161079f90612a55565b6001600160a01b0381165f9081526005602052604090205460ff1615610cf65760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640161079f565b6001600160a01b0381165f9081526001602052604090205415610d4d576001600160a01b0381165f90815260016020526040902054610d34906108ff565b6001600160a01b0382165f908152600260205260409020555b6001600160a01b03165f818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b5f546001600160a01b03163314610ddb5760405162461bcd60e51b815260040161079f90612a55565b610de76009600a612bd8565b610df19083612be6565b600e55610e006009600a612bd8565b610e0a9082612be6565b600f555050565b6001600160a01b0381165f9081526005602052604081205460ff1615610e4c57506001600160a01b03165f9081526002602052604090205490565b6001600160a01b0382165f90815260016020526040902054610c5f906108ff565b5f546001600160a01b03163314610e965760405162461bcd60e51b815260040161079f90612a55565b610e9f5f611bb7565b565b5f546001600160a01b03163314610eca5760405162461bcd60e51b815260040161079f90612a55565b600880549115156101000261ff0019909216919091179055565b5f546001600160a01b03163314610f0d5760405162461bcd60e51b815260040161079f90612a55565b60148183610f1b8688612bfd565b610f259190612bfd565b610f2f9190612bfd565b1115610f6c5760405162461bcd60e51b815260206004820152600c60248201526b0e8c2f040e8dede40d0d2ced60a31b604482015260640161079f565b60408051608081018252858152602081018590528082018490526060018290526014859055601584905560168390556017829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a150505050565b6008545f90339060ff1680610ff857506001600160a01b0381165f9081526006602052604090205460ff165b6110145760405162461bcd60e51b815260040161079f90612a1e565b6107b33385856113df565b5f546001600160a01b031633146110485760405162461bcd60e51b815260040161079f90612a55565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146110935760405162461bcd60e51b815260040161079f90612a55565b61109f6009600a612bd8565b6110a99082612be6565b600d5550565b5f546001600160a01b031633146110d85760405162461bcd60e51b815260040161079f90612a55565b6110e46009600a612bd8565b6110ee9082612be6565b60105550565b5f546001600160a01b0316331461111d5760405162461bcd60e51b815260040161079f90612a55565b6001600160a01b03165f908152600460205260409020805460ff19169055565b5f546001600160a01b031633146111665760405162461bcd60e51b815260040161079f90612a55565b6001600160a01b0381166111cb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161079f565b610b8781611bb7565b5f546001600160a01b031633146111fd5760405162461bcd60e51b815260040161079f90612a55565b6014818361120b8688612bfd565b6112159190612bfd565b61121f9190612bfd565b111561125c5760405162461bcd60e51b815260206004820152600c60248201526b0e8c2f040e8dede40d0d2ced60a31b604482015260640161079f565b604080516080810182528581526020810185905280820184905260600182905260188590556019849055601a839055601b829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de15905f90a150505050565b6001600160a01b03831661131e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161079f565b6001600160a01b03821661137f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161079f565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114435760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161079f565b6001600160a01b0382166114a55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161079f565b5f81116115065760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161079f565b61150f83610e11565b8111156115785760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161079f565b6001600160a01b0383165f9081526004602052604090205460ff161580156115b857506001600160a01b0382165f9081526004602052604090205460ff16155b156116045760085460ff166116045760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b604482015260640161079f565b6001600160a01b0383165f9081526004602052604090205460ff1615801561164457506001600160a01b0382165f9081526004602052604090205460ff16155b801561165d5750601154611659906003612bfd565b4311155b156116cc576009546001600160a01b03908116908316036116cc5760405162461bcd60e51b8152602060048201526024808201527f53656c6c73206e6f7420616c6c6f77656420666f72206669727374203320626c6044820152636f636b7360e01b606482015260840161079f565b6009546001600160a01b03848116911614801561170157506001600160a01b0382165f9081526004602052604090205460ff16155b8015611716575060085462010000900460ff16155b156117d257600e5481111561176d5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d6974000000604482015260640161079f565b6010548161177a84610e11565b6117849190612bfd565b11156117d25760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161079f565b6009546001600160a01b0384811691161480159061180857506001600160a01b0382165f9081526004602052604090205460ff16155b801561182c57506001600160a01b0383165f9081526004602052604090205460ff16155b8015611841575060085462010000900460ff16155b1561191257600f548111156118985760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d69740000604482015260640161079f565b6009546001600160a01b0383811691161461191257601054816118ba84610e11565b6118c49190612bfd565b11156119125760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161079f565b61191e6009600a612bd8565b61192990600a612be6565b8161193385610e11565b61193d9190612a9e565b116119845761194b83610e11565b816119586009600a612bd8565b61196390600a612be6565b61196d9190612bfd565b6119779190612a9e565b6119819082612a9e565b90505b5f600d5461199130610e11565b600854911115915062010000900460ff161580156119b65750600854610100900460ff165b80156119bf5750805b80156119d957506009546001600160a01b03858116911614155b80156119fd57506001600160a01b0384165f9081526004602052604090205460ff16155b8015611a2157506001600160a01b0383165f9081526004602052604090205460ff16155b15611aad576009546001600160a01b0390811690841603611a7757600d546040805160808101825260185481526019546020820152601a5491810191909152601b546060820152611a729190611c06565b611aad565b600d546040805160808101825260145481526015546020820152601654918101919091526017546060820152611aad9190611c06565b6008546001905f9062010000900460ff1680611ae057506001600160a01b0386165f9081526004602052604090205460ff165b80611b0257506001600160a01b0385165f9081526004602052604090205460ff165b15611b0b575f91505b6009546001600160a01b0390811690861603611b25575060015b611b328686868585611d58565b505050505050565b5f805f611b45612014565b9092509050611b548183612ab1565b9250505090565b611b636127f8565b611b6e848484612184565b9050611b83818585611b7e611b3a565b6122f0565b60808601526060850152604084015260208301528152611bab8184611ba6611b3a565b61239c565b60a08201529392505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6008805462ff00001916620100001790556060810151602082015160408301515f9291611c3291612bfd565b611c3c9190612bfd565b611c47906002612be6565b90505f81836040015185611c5b9190612be6565b611c659190612ab1565b90505f611c728286612a9e565b905047611c7e826123c2565b5f611c898247612a9e565b90505f866040015186611c9c9190612a9e565b611ca69083612ab1565b90505f876040015182611cb99190612be6565b90508015611ccb57611ccb8682612531565b60208801515f90611cdd846002612be6565b611ce79190612be6565b90508015611d0557601254611d05906001600160a01b031682612611565b60608901515f90611d17856002612be6565b611d219190612be6565b90508015611d3f57601354611d3f906001600160a01b031682612611565b50506008805462ff000019169055505050505050505050565b5f611d64848484611b5b565b6001600160a01b0387165f9081526005602052604090205490915060ff1615611dc3576001600160a01b0386165f90815260026020526040902054611daa908590612a9e565b6001600160a01b0387165f908152600260205260409020555b6001600160a01b0385165f9081526005602052604090205460ff1615611e235760c08101516001600160a01b0386165f90815260026020526040902054611e0a9190612bfd565b6001600160a01b0386165f908152600260205260409020555b80516001600160a01b0387165f90815260016020526040902054611e479190612a9e565b6001600160a01b038088165f9081526001602090815260408083209490945584015191881681529190912054611e7d9190612bfd565b6001600160a01b0386165f908152600160205260409081902091909155810151151580611ead57505f8160e00151115b15611ec457611ec481604001518260e0015161272b565b5f81608001511180611eda57505f816101200151115b15611f5f57611ef2816080015182610120015161275e565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101400151846101000151856101200151611f439190612bfd565b611f4d9190612bfd565b60405190815260200160405180910390a35b5f81606001511180611f7557505f816101000151115b15611f8d57611f8d81606001518261010001516127d0565b5f8160a001511180611fa357505f816101400151115b15611fbb57611fbb8160a001518261014001516127e4565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c0015160405161200491815260200190565b60405180910390a3505050505050565b600c54600b545f918291825b600754811015612153578260015f6007848154811061204157612041612ad0565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205411806120a957508160025f6007848154811061208357612083612ad0565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b156120bf57600c54600b54945094505050509091565b60015f600783815481106120d5576120d5612ad0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546121039084612a9e565b925060025f6007838154811061211b5761211b612ad0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546121499083612a9e565b9150600101612020565b50600b54600c546121649190612ab1565b82101561217b57600c54600b549350935050509091565b90939092509050565b61218c6127f8565b8261219d5760c0810184905261097a565b6121c460405180608001604052805f81526020015f81526020015f81526020015f81525090565b82156121f957506040805160808101825260185481526019546020820152601a5491810191909152601b546060820152612224565b5060408051608081018252601454815260155460208201526016549181019190915260175460608201525b80516064906122339087612be6565b61223d9190612ab1565b60e083015260208101516064906122549087612be6565b61225e9190612ab1565b61010083015260408101516064906122769087612be6565b6122809190612ab1565b61012083015260608101516064906122989087612be6565b6122a29190612ab1565b610140830181905261012083015161010084015160e08501516122c59089612a9e565b6122cf9190612a9e565b6122d99190612a9e565b6122e39190612a9e565b60c0830152509392505050565b5f808080806122ff8689612be6565b94508661231657508392505f915081905080612391565b858960e001516123269190612be6565b9250858961010001516123399190612be6565b91508589610120015161234c9190612be6565b90505f868a61014001516123609190612be6565b905080828461236f878a612a9e565b6123799190612a9e565b6123839190612a9e565b61238d9190612a9e565b9450505b945094509450945094565b5f826123a957505f61097a565b818461014001516123ba9190612be6565b949350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106123f5576123f5612ad0565b60200260200101906001600160a01b031690816001600160a01b031681525050600860039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612466573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061248a9190612c10565b8160018151811061249d5761249d612ad0565b6001600160a01b0392831660209182029290920101526008546124ca9130916301000000900416846112bc565b60085460405163791ac94760e01b815263010000009091046001600160a01b03169063791ac947906125089085905f90869030904290600401612c2b565b5f604051808303815f87803b15801561251f575f80fd5b505af1158015611b32573d5f803e3d5ffd5b600854612550903090630100000090046001600160a01b0316846112bc565b6008546001600160a01b0363010000009091041663f305d7198230855f8061257f5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156125e5573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061260a9190612c9c565b5050505050565b804710156126615760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161079f565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146126aa576040519150601f19603f3d011682016040523d82523d5f602084013e6126af565b606091505b50509050806127265760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161079f565b505050565b81600c5f82825461273c9190612a9e565b9091555050601c80548291905f90612755908490612bfd565b90915550505050565b80601c6002015f8282546127729190612bfd565b9091555050305f9081526005602052604090205460ff16156127b257305f90815260026020526040812080548392906127ac908490612bfd565b90915550505b305f9081526001602052604081208054849290612755908490612bfd565b80601c6001015f8282546127729190612bfd565b80601c6003015f8282546127729190612bfd565b6040518061016001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f602080835283518060208501525f5b8181101561287357858101830151858201604001528201612857565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b87575f80fd5b5f80604083850312156128b8575f80fd5b82356128c381612893565b946020939093013593505050565b5f602082840312156128e1575f80fd5b813561097a81612893565b5f805f606084860312156128fe575f80fd5b833561290981612893565b9250602084013561291981612893565b929592945050506040919091013590565b5f6020828403121561293a575f80fd5b5035919050565b80358015158114612950575f80fd5b919050565b5f60208284031215612965575f80fd5b61097a82612941565b5f806040838503121561297f575f80fd5b8235915061298f60208401612941565b90509250929050565b5f80604083850312156129a9575f80fd5b50508035926020909101359150565b5f805f80608085870312156129cb575f80fd5b5050823594602084013594506040840135936060013592509050565b5f80604083850312156129f8575f80fd5b8235612a0381612893565b91506020830135612a1381612893565b809150509250929050565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610c5f57610c5f612a8a565b5f82612acb57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b600181815b80851115612b3257815f1904821115612b1857612b18612a8a565b80851615612b2557918102915b93841c9390800290612afd565b509250929050565b5f82612b4857506001610c5f565b81612b5457505f610c5f565b8160018114612b6a5760028114612b7457612b90565b6001915050610c5f565b60ff841115612b8557612b85612a8a565b50506001821b610c5f565b5060208310610133831016604e8410600b8410161715612bb3575081810a610c5f565b612bbd8383612af8565b805f1904821115612bd057612bd0612a8a565b029392505050565b5f61097a60ff841683612b3a565b8082028115828204841417610c5f57610c5f612a8a565b80820180821115610c5f57610c5f612a8a565b5f60208284031215612c20575f80fd5b815161097a81612893565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015612c7b5784516001600160a01b031683529383019391830191600101612c56565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612cae575f80fd5b835192506020840151915060408401519050925092509256fea264697066735822122082e0efa0b9fb050c578f8d763709a980953bf58ef1f11fc53ce03c1b9a694cf464736f6c63430008170033

Deployed Bytecode Sourcemap

3283:18353:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6720:83;;;;;;;;;;-1:-1:-1;6790:5:0;;;;;;;;;;;;-1:-1:-1;;;6790:5:0;;;;6720:83;;;;;;;:::i;:::-;;;;;;;;7480:181;;;;;;;;;;-1:-1:-1;7480:181:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7480:181:0;1023:187:1;7016:95:0;;;;;;;;;;-1:-1:-1;7096:7:0;;7016:95;;;1361:25:1;;;1349:2;1334:18;7016:95:0;1215:177:1;20892:102:0;;;;;;;;;;-1:-1:-1;20892:102:0;;;;;:::i;:::-;;:::i;:::-;;7669:430;;;;;;;;;;-1:-1:-1;7669:430:0;;;;;:::i;:::-;;:::i;9002:248::-;;;;;;;;;;-1:-1:-1;9002:248:0;;;;;:::i;:::-;;:::i;6902:83::-;;;;;;;;;;-1:-1:-1;6902:83:0;;4148:1;2437:36:1;;2425:2;2410:18;6902:83:0;2295:184:1;9599:475:0;;;;;;;;;;-1:-1:-1;9599:475:0;;;;;:::i;:::-;;:::i;8788:206::-;;;;;;;;;;-1:-1:-1;8788:206:0;;;;;:::i;:::-;;:::i;10082:111::-;;;;;;;;;;-1:-1:-1;10082:111:0;;;;;:::i;:::-;;:::i;8310:470::-;;;;;;;;;;-1:-1:-1;8310:470:0;;;;;:::i;:::-;;:::i;9258:333::-;;;;;;;;;;-1:-1:-1;9258:333:0;;;;;:::i;:::-;;:::i;21267:183::-;;;;;;;;;;-1:-1:-1;21267:183:0;;;;;:::i;:::-;;:::i;3674:48::-;;;;;;;;;;-1:-1:-1;3674:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4482:44;;;;;;;;;;;;;;;;4533:46;;;;;;;;;;;;;;;;4432:43;;;;;;;;;;;;;;;;7119:198;;;;;;;;;;-1:-1:-1;7119:198:0;;;;;:::i;:::-;;:::i;1711:94::-;;;;;;;;;;;;;:::i;5035:38::-;;;;;;;;;;-1:-1:-1;5035:38:0;;;;;;;;;;;;;;;;;;;3571:25:1;;;3627:2;3612:18;;3605:34;;;;3655:18;;;3648:34;3713:2;3698:18;;3691:34;3558:3;3543:19;5035:38:0;3340:391:1;4634:75:0;;;;;;;;;;-1:-1:-1;4634:75:0;;;;-1:-1:-1;;;;;4634:75:0;;;;;;-1:-1:-1;;;;;3900:32:1;;;3882:51;;3870:2;3855:18;4634:75:0;3736:203:1;1488:87:0;;;;;;;;;;-1:-1:-1;1534:7:0;1561:6;-1:-1:-1;;;;;1561:6:0;1488:87;;4716:69;;;;;;;;;;-1:-1:-1;4716:69:0;;;;-1:-1:-1;;;;;4716:69:0;;;21142:101;;;;;;;;;;-1:-1:-1;21142:101:0;;;;;:::i;:::-;;:::i;6809:87::-;;;;;;;;;;-1:-1:-1;6881:7:0;;;;;;;;;;;;-1:-1:-1;;;6881:7:0;;;;6809:87;;5284:36;;;;;;;;;;-1:-1:-1;5284:36:0;;;;;;;;;;;;;;;10323:293;;;;;;;;;;-1:-1:-1;10323:293:0;;;;;:::i;:::-;;:::i;4085:19::-;;;;;;;;;;-1:-1:-1;4085:19:0;;;;-1:-1:-1;;;;;4085:19:0;;;8115:187;;;;;;;;;;-1:-1:-1;8115:187:0;;;;;:::i;:::-;;:::i;20766:114::-;;;;;;;;;;-1:-1:-1;20766:114:0;;;;;:::i;:::-;;:::i;21004:130::-;;;;;;;;;;-1:-1:-1;21004:130:0;;;;;:::i;:::-;;:::i;21462:123::-;;;;;;;;;;-1:-1:-1;21462:123:0;;;;;:::i;:::-;;:::i;7329:143::-;;;;;;;;;;-1:-1:-1;7329:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7437:18:0;;;7410:7;7437:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7329:143;10201:110;;;;;;;;;;-1:-1:-1;10201:110:0;;;;;:::i;:::-;;:::i;1813:192::-;;;;;;;;;;-1:-1:-1;1813:192:0;;;;;:::i;:::-;;:::i;10628:301::-;;;;;;;;;;-1:-1:-1;10628:301:0;;;;;:::i;:::-;;:::i;5080:42::-;;;;;;;;;;-1:-1:-1;5080:42:0;;;;;;;;;;;;;;;4057:21;;;;;;;;;;-1:-1:-1;4057:21:0;;;;;;;-1:-1:-1;;;;;4057:21:0;;;7480:181;3959:14;;7575:4;;7555:10;;3959:14;;;:42;;-1:-1:-1;;;;;;3977:24:0;;;;;;:15;:24;;;;;;;;3959:42;3951:78;;;;-1:-1:-1;;;3951:78:0;;;;;;;:::i;:::-;;;;;;;;;7592:39:::1;989:10:::0;7615:7:::1;7624:6;7592:8;:39::i;:::-;-1:-1:-1::0;7649:4:0::1;::::0;7480:181;-1:-1:-1;;;7480:181:0:o;20892:102::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;20965:9:::1;:21:::0;;-1:-1:-1;;;;;;20965:21:0::1;-1:-1:-1::0;;;;;20965:21:0;;;::::1;::::0;;;::::1;::::0;;20892:102::o;7669:430::-;3959:14;;7783:4;;7766:6;;3959:14;;;:42;;-1:-1:-1;;;;;;3977:24:0;;;;;;:15;:24;;;;;;;;3959:42;3951:78;;;;-1:-1:-1;;;3951:78:0;;;;;;;:::i;:::-;7800:36:::1;7810:6;7818:9;7829:6;7800:9;:36::i;:::-;-1:-1:-1::0;;;;;7876:19:0;::::1;7849:24;7876:19:::0;;;:11:::1;:19;::::0;;;;;;;989:10;7876:33;;;;;;;;7928:26;;::::1;;7920:79;;;::::0;-1:-1:-1;;;7920:79:0;;5865:2:1;7920:79:0::1;::::0;::::1;5847:21:1::0;5904:2;5884:18;;;5877:30;5943:34;5923:18;;;5916:62;-1:-1:-1;;;5994:18:1;;;5987:38;6042:19;;7920:79:0::1;5663:404:1::0;7920:79:0::1;8010:57;8019:6:::0;989:10;8041:25:::1;8060:6:::0;8041:16;:25:::1;:::i;:::-;8010:8;:57::i;:::-;-1:-1:-1::0;8087:4:0::1;::::0;7669:430;-1:-1:-1;;;;;7669:430:0:o;9002:248::-;9068:7;9107;;9096;:18;;9088:73;;;;-1:-1:-1;;;9088:73:0;;6539:2:1;9088:73:0;;;6521:21:1;6578:2;6558:18;;;6551:30;6617:34;6597:18;;;6590:62;-1:-1:-1;;;6668:18:1;;;6661:40;6718:19;;9088:73:0;6337:406:1;9088:73:0;9172:19;9195:10;:8;:10::i;:::-;9172:33;-1:-1:-1;9223:19:0;9172:33;9223:7;:19;:::i;:::-;9216:26;9002:248;-1:-1:-1;;;9002:248:0:o;9599:475::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9681:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;9673:56;;;::::0;-1:-1:-1;;;9673:56:0;;7172:2:1;9673:56:0::1;::::0;::::1;7154:21:1::0;7211:2;7191:18;;;7184:30;7250:25;7230:18;;;7223:53;7293:18;;9673:56:0::1;6970:347:1::0;9673:56:0::1;9745:9;9740:327;9764:9;:16:::0;9760:20;::::1;9740:327;;;9822:7;-1:-1:-1::0;;;;;9806:23:0::1;:9;9816:1;9806:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;9806:12:0::1;:23:::0;9802:254:::1;;9865:9;9875:16:::0;;:20:::1;::::0;9894:1:::1;::::0;9875:20:::1;:::i;:::-;9865:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;9850:9:::1;:12:::0;;-1:-1:-1;;;;;9865:31:0;;::::1;::::0;9860:1;;9850:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;9850:46:0::1;-1:-1:-1::0;;;;;9850:46:0;;::::1;;::::0;;9915:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;9954:11:::1;:20:::0;;;;:28;;-1:-1:-1;;9954:28:0::1;::::0;;10001:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;10001:15:0;;;;;-1:-1:-1;;;;;;10001:15:0::1;::::0;;;;;9740:327:::1;9599:475:::0;:::o;9802:254::-:1;9782:3;;9740:327;;;;9599:475:::0;:::o;8788:206::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;8855:14:::1;:22:::0;;-1:-1:-1;;8888:19:0;-1:-1:-1;;8855:22:0;::::1;;8888:19:::0;;;;;;;8855:22:::1;8888:19:::0;::::1;;::::0;;;-1:-1:-1;8921:13:0::1;:35:::0;::::1;;;-1:-1:-1::0;8938:13:0::1;::::0;:18;8921:35:::1;8918:68;;;8974:12;8958:13;:28:::0;8918:68:::1;8788:206:::0;:::o;10082:111::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10151:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;10151:34:0::1;10181:4;10151:34;::::0;;10082:111::o;8310:470::-;8400:7;8439;;8428;:18;;8420:62;;;;-1:-1:-1;;;8420:62:0;;7788:2:1;8420:62:0;;;7770:21:1;7827:2;7807:18;;;7800:30;7866:33;7846:18;;;7839:61;7917:18;;8420:62:0;7586:355:1;8420:62:0;8498:17;8493:280;;8532:28;8563:32;8574:7;8583:4;8589:5;8563:10;:32::i;:::-;8617:9;;-1:-1:-1;8610:16:0;;-1:-1:-1;8610:16:0;8493:280;8659:28;8690:32;8701:7;8710:4;8716:5;8690:10;:32::i;:::-;8744:17;;;;-1:-1:-1;8737:24:0;;-1:-1:-1;8737:24:0;8493:280;8310:470;;;;:::o;9258:333::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9341:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;9340:21;9332:61;;;::::0;-1:-1:-1;;;9332:61:0;;8148:2:1;9332:61:0::1;::::0;::::1;8130:21:1::0;8187:2;8167:18;;;8160:30;8226:29;8206:18;;;8199:57;8273:18;;9332:61:0::1;7946:351:1::0;9332:61:0::1;-1:-1:-1::0;;;;;9407:16:0;::::1;9426:1;9407:16:::0;;;:7:::1;:16;::::0;;;;;:20;9404:108:::1;;-1:-1:-1::0;;;;;9483:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;9463:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;9444:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;9404:108:::1;-1:-1:-1::0;;;;;9522:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;9522:27:0::1;9545:4;9522:27:::0;;::::1;::::0;;;9560:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;9560:23:0::1;::::0;;::::1;::::0;;9258:333::o;21267:183::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;21378:14:::1;4148:1:::0;21378:2:::1;:14;:::i;:::-;21369:23;::::0;:6;:23:::1;:::i;:::-;21355:11;:37:::0;21428:14:::1;4148:1:::0;21428:2:::1;:14;:::i;:::-;21418:24;::::0;:7;:24:::1;:::i;:::-;21403:12;:39:::0;-1:-1:-1;;21267:183:0:o;7119:198::-;-1:-1:-1;;;;;7209:20:0;;7185:7;7209:20;;;:11;:20;;;;;;;;7205:49;;;-1:-1:-1;;;;;;7238:16:0;;;;;:7;:16;;;;;;;7119:198::o;7205:49::-;-1:-1:-1;;;;;7292:16:0;;;;;;:7;:16;;;;;;7272:37;;:19;:37::i;1711:94::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;1776:21:::1;1794:1;1776:9;:21::i;:::-;1711:94::o:0;21142:101::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;21213:11:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;21213:22:0;;::::1;::::0;;;::::1;::::0;;21142:101::o;10323:293::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;10496:2:::1;10480:12:::0;10469:10;10453:15:::1;10458:10:::0;10453:4;:15:::1;:::i;:::-;:26;;;;:::i;:::-;:39;;;;:::i;:::-;:45;;10445:70;;;::::0;-1:-1:-1;;;10445:70:0;;10184:2:1;10445:70:0::1;::::0;::::1;10166:21:1::0;10223:2;10203:18;;;10196:30;-1:-1:-1;;;10242:18:1;;;10235:42;10294:18;;10445:70:0::1;9982:336:1::0;10445:70:0::1;10533:46;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;10525:5:::1;:54:::0;;;;;;;;;;;;;;;10595:13;::::1;::::0;-1:-1:-1;;10595:13:0::1;10323:293:::0;;;;:::o;8115:187::-;3959:14;;8213:4;;8192:10;;3959:14;;;:42;;-1:-1:-1;;;;;;3977:24:0;;;;;;:15;:24;;;;;;;;3959:42;3951:78;;;;-1:-1:-1;;;3951:78:0;;;;;;;:::i;:::-;8234:40:::1;8244:10;8256:9;8267:6;8234:9;:40::i;20766:114::-:0;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;20845:15:::1;:27:::0;;-1:-1:-1;;;;;;20845:27:0::1;-1:-1:-1::0;;;;;20845:27:0;;;::::1;::::0;;;::::1;::::0;;20766:114::o;21004:130::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;21113:13:::1;4148:1;21113:2;:13;:::i;:::-;21104:22;::::0;:6;:22:::1;:::i;:::-;21083:18;:43:::0;-1:-1:-1;21004:130:0:o;21462:123::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;21563:14:::1;4148:1:::0;21563:2:::1;:14;:::i;:::-;21554:23;::::0;:6;:23:::1;:::i;:::-;21537:14;:40:::0;-1:-1:-1;21462:123:0:o;10201:110::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10268:27:0::1;10298:5;10268:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;10268:35:0::1;::::0;;10201:110::o;1813:192::-;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1902:22:0;::::1;1894:73;;;::::0;-1:-1:-1;;;1894:73:0;;10525:2:1;1894:73:0::1;::::0;::::1;10507:21:1::0;10564:2;10544:18;;;10537:30;10603:34;10583:18;;;10576:62;-1:-1:-1;;;10654:18:1;;;10647:36;10700:19;;1894:73:0::1;10323:402:1::0;1894:73:0::1;1978:19;1988:8;1978:9;:19::i;10628:301::-:0;1534:7;1561:6;-1:-1:-1;;;;;1561:6:0;989:10;1623:23;1615:68;;;;-1:-1:-1;;;1615:68:0;;;;;;;:::i;:::-;10805:2:::1;10789:12:::0;10778:10;10762:15:::1;10767:10:::0;10762:4;:15:::1;:::i;:::-;:26;;;;:::i;:::-;:39;;;;:::i;:::-;:45;;10754:70;;;::::0;-1:-1:-1;;;10754:70:0;;10184:2:1;10754:70:0::1;::::0;::::1;10166:21:1::0;10223:2;10203:18;;;10196:30;-1:-1:-1;;;10242:18:1;;;10235:42;10294:18;;10754:70:0::1;9982:336:1::0;10754:70:0::1;10846:46;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;10834:9:::1;:58:::0;;;;;;;;;;;;;;;10908:13;::::1;::::0;-1:-1:-1;;10908:13:0::1;10628:301:::0;;;;:::o;14799:335::-;-1:-1:-1;;;;;14892:19:0;;14884:68;;;;-1:-1:-1;;;14884:68:0;;10932:2:1;14884:68:0;;;10914:21:1;10971:2;10951:18;;;10944:30;11010:34;10990:18;;;10983:62;-1:-1:-1;;;11061:18:1;;;11054:34;11105:19;;14884:68:0;10730:400:1;14884:68:0;-1:-1:-1;;;;;14971:21:0;;14963:68;;;;-1:-1:-1;;;14963:68:0;;11337:2:1;14963:68:0;;;11319:21:1;11376:2;11356:18;;;11349:30;11415:34;11395:18;;;11388:62;-1:-1:-1;;;11466:18:1;;;11459:32;11508:19;;14963:68:0;11135:398:1;14963:68:0;-1:-1:-1;;;;;15042:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15094:32;;1361:25:1;;;15094:32:0;;1334:18:1;15094:32:0;;;;;;;14799:335;;;:::o;15142:2122::-;-1:-1:-1;;;;;15230:18:0;;15222:68;;;;-1:-1:-1;;;15222:68:0;;11740:2:1;15222:68:0;;;11722:21:1;11779:2;11759:18;;;11752:30;11818:34;11798:18;;;11791:62;-1:-1:-1;;;11869:18:1;;;11862:35;11914:19;;15222:68:0;11538:401:1;15222:68:0;-1:-1:-1;;;;;15309:16:0;;15301:64;;;;-1:-1:-1;;;15301:64:0;;12146:2:1;15301:64:0;;;12128:21:1;12185:2;12165:18;;;12158:30;12224:34;12204:18;;;12197:62;-1:-1:-1;;;12275:18:1;;;12268:33;12318:19;;15301:64:0;11944:399:1;15301:64:0;15393:1;15384:6;:10;15376:64;;;;-1:-1:-1;;;15376:64:0;;12550:2:1;15376:64:0;;;12532:21:1;12589:2;12569:18;;;12562:30;12628:34;12608:18;;;12601:62;-1:-1:-1;;;12679:18:1;;;12672:39;12728:19;;15376:64:0;12348:405:1;15376:64:0;15469:15;15479:4;15469:9;:15::i;:::-;15459:6;:25;;15451:86;;;;-1:-1:-1;;;15451:86:0;;12960:2:1;15451:86:0;;;12942:21:1;12999:2;12979:18;;;12972:30;13038:34;13018:18;;;13011:62;-1:-1:-1;;;13089:18:1;;;13082:47;13146:19;;15451:86:0;12758:413:1;15451:86:0;-1:-1:-1;;;;;15562:24:0;;;;;;:18;:24;;;;;;;;15561:25;:52;;;;-1:-1:-1;;;;;;15591:22:0;;;;;;:18;:22;;;;;;;;15590:23;15561:52;15558:128;;;15637:14;;;;15629:45;;;;-1:-1:-1;;;15629:45:0;;13378:2:1;15629:45:0;;;13360:21:1;13417:2;13397:18;;;13390:30;-1:-1:-1;;;13436:18:1;;;13429:48;13494:18;;15629:45:0;13176:342:1;15629:45:0;-1:-1:-1;;;;;15710:24:0;;;;;;:18;:24;;;;;;;;15709:25;:52;;;;-1:-1:-1;;;;;;15739:22:0;;;;;;:18;:22;;;;;;;;15738:23;15709:52;:89;;;;-1:-1:-1;15781:13:0;;:17;;15797:1;15781:17;:::i;:::-;15765:12;:33;;15709:89;15706:180;;;15829:4;;-1:-1:-1;;;;;15829:4:0;;;15823:10;;;;15815:59;;;;-1:-1:-1;;;15815:59:0;;13725:2:1;15815:59:0;;;13707:21:1;13764:2;13744:18;;;13737:30;13803:34;13783:18;;;13776:62;-1:-1:-1;;;13854:18:1;;;13847:34;13898:19;;15815:59:0;13523:400:1;15815:59:0;15917:4;;-1:-1:-1;;;;;15909:12:0;;;15917:4;;15909:12;:39;;;;-1:-1:-1;;;;;;15926:22:0;;;;;;:18;:22;;;;;;;;15925:23;15909:39;:52;;;;-1:-1:-1;15953:8:0;;;;;;;15952:9;15909:52;15906:246;;;15995:11;;15985:6;:21;;15977:63;;;;-1:-1:-1;;;15977:63:0;;14130:2:1;15977:63:0;;;14112:21:1;14169:2;14149:18;;;14142:30;14208:31;14188:18;;;14181:59;14257:18;;15977:63:0;13928:353:1;15977:63:0;16089:14;;16079:6;16063:13;16073:2;16063:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;16055:85;;;;-1:-1:-1;;;16055:85:0;;14488:2:1;16055:85:0;;;14470:21:1;;;14507:18;;;14500:30;14566:34;14546:18;;;14539:62;14618:18;;16055:85:0;14286:356:1;16055:85:0;16183:4;;-1:-1:-1;;;;;16175:12:0;;;16183:4;;16175:12;;;;:39;;-1:-1:-1;;;;;;16192:22:0;;;;;;:18;:22;;;;;;;;16191:23;16175:39;:68;;;;-1:-1:-1;;;;;;16219:24:0;;;;;;:18;:24;;;;;;;;16218:25;16175:68;:81;;;;-1:-1:-1;16248:8:0;;;;;;;16247:9;16175:81;16172:327;;;16290:12;;16280:6;:22;;16272:65;;;;-1:-1:-1;;;16272:65:0;;14849:2:1;16272:65:0;;;14831:21:1;14888:2;14868:18;;;14861:30;14927:32;14907:18;;;14900:60;14977:18;;16272:65:0;14647:354:1;16272:65:0;16361:4;;-1:-1:-1;;;;;16355:10:0;;;16361:4;;16355:10;16352:134;;16419:14;;16409:6;16393:13;16403:2;16393:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;16385:85;;;;-1:-1:-1;;;16385:85:0;;14488:2:1;16385:85:0;;;14470:21:1;;;14507:18;;;14500:30;14566:34;14546:18;;;14539:62;14618:18;;16385:85:0;14286:356:1;16385:85:0;16566:14;4148:1;16566:2;:14;:::i;:::-;16560:20;;:2;:20;:::i;:::-;16550:6;16532:15;16542:4;16532:9;:15::i;:::-;:24;;;;:::i;:::-;:48;16529:111;;16624:15;16634:4;16624:9;:15::i;:::-;16615:6;16598:14;4148:1;16598:2;:14;:::i;:::-;16593:19;;:2;:19;:::i;:::-;:28;;;;:::i;:::-;:46;;;;:::i;:::-;16582:58;;;;:::i;:::-;;;16529:111;16670:12;16713:18;;16685:24;16703:4;16685:9;:24::i;:::-;16746:8;;-1:-1:-1;;16685:46:0;;-1:-1:-1;16746:8:0;;;;;16745:9;:24;;;;-1:-1:-1;16758:11:0;;;;;;;16745:24;:35;;;;;16773:7;16745:35;:51;;;;-1:-1:-1;16792:4:0;;-1:-1:-1;;;;;16784:12:0;;;16792:4;;16784:12;;16745:51;:80;;;;-1:-1:-1;;;;;;16801:24:0;;;;;;:18;:24;;;;;;;;16800:25;16745:80;:107;;;;-1:-1:-1;;;;;;16830:22:0;;;;;;:18;:22;;;;;;;;16829:23;16745:107;16742:261;;;16877:4;;-1:-1:-1;;;;;16877:4:0;;;16871:10;;;;16868:123;;16899:18;;16884:45;;;;;;;;16919:9;16884:45;;;;;;;;;;;;;;;;;;;;;;;;;;16899:18;16884:14;:45::i;:::-;16868:123;;;16965:18;;16950:41;;;;;;;;16985:5;16950:41;;;;;;;;;;;;;;;;;;;;;;;;;;16965:18;16950:14;:41::i;:::-;17076:8;;17028:4;;17013:12;;17076:8;;;;;;:36;;-1:-1:-1;;;;;;17088:24:0;;;;;;:18;:24;;;;;;;;17076:36;:62;;;-1:-1:-1;;;;;;17116:22:0;;;;;;:18;:22;;;;;;;;17076:62;17073:82;;;17150:5;17140:15;;17073:82;17175:4;;-1:-1:-1;;;;;17175:4:0;;;17169:10;;;;17166:28;;-1:-1:-1;17190:4:0;17166:28;17207:49;17222:4;17228:2;17232:6;17240:7;17249:6;17207:14;:49::i;:::-;15211:2053;;;15142:2122;;;:::o;14085:158::-;14126:7;14147:15;14164;14183:19;:17;:19::i;:::-;14146:56;;-1:-1:-1;14146:56:0;-1:-1:-1;14220:15:0;14146:56;;14220:15;:::i;:::-;14213:22;;;;14085:158;:::o;11967:474::-;12053:36;;:::i;:::-;12114:37;12126:7;12135;12144:6;12114:11;:37::i;:::-;12102:49;;12271:53;12284:9;12295:7;12304;12313:10;:8;:10::i;:::-;12271:12;:53::i;:::-;12247:20;;;12162:162;12225:20;;;12162:162;12209:14;;;12162:162;12182:25;;;12162:162;;;12362:44;12163:9;12386:7;12395:10;:8;:10::i;:::-;12362:12;:44::i;:::-;12336:22;;;12335:71;11967:474;;;;;:::o;2013:173::-;2069:16;2088:6;;-1:-1:-1;;;;;2105:17:0;;;-1:-1:-1;;;;;;2105:17:0;;;;;;2138:40;;2088:6;;;;;;;2138:40;;2069:16;2138:40;2058:128;2013:173;:::o;18505:1180::-;5791:8;:15;;-1:-1:-1;;5791:15:0;;;;;18660:16:::1;::::0;::::1;::::0;18643:14:::1;::::0;::::1;::::0;18626::::1;::::0;::::1;::::0;5791:15;;18660:16;18626:31:::1;::::0;::::1;:::i;:::-;:50;;;;:::i;:::-;18625:56;::::0;18680:1:::1;18625:56;:::i;:::-;18603:78;;18692:32;18762:11;18745:4;:14;;;18727:15;:32;;;;:::i;:::-;:46;;;;:::i;:::-;18692:81:::0;-1:-1:-1;18784:14:0::1;18801:42;18692:81:::0;18801:15;:42:::1;:::i;:::-;18784:59:::0;-1:-1:-1;18881:21:0::1;18915:24;18784:59:::0;18915:16:::1;:24::i;:::-;18952:20;18975:38;18999:14:::0;18975:21:::1;:38;:::i;:::-;18952:61;;19024:19;19075:4;:14;;;19061:11;:28;;;;:::i;:::-;19045:45;::::0;:12;:45:::1;:::i;:::-;19024:66;;19101:29;19147:4;:14;;;19133:11;:28;;;;:::i;:::-;19101:60:::0;-1:-1:-1;19177:25:0;;19174:158:::1;;19259:61;19272:24;19298:21;19259:12;:61::i;:::-;19385:14;::::0;::::1;::::0;19344:20:::1;::::0;19367:15:::1;:11:::0;19381:1:::1;19367:15;:::i;:::-;:32;;;;:::i;:::-;19344:55:::0;-1:-1:-1;19413:16:0;;19410:95:::1;;19453:15;::::0;19445:48:::1;::::0;-1:-1:-1;;;;;19453:15:0::1;19480:12:::0;19445:34:::1;:48::i;:::-;19558:16;::::0;::::1;::::0;19515:22:::1;::::0;19540:15:::1;:11:::0;19554:1:::1;19540:15;:::i;:::-;:34;;;;:::i;:::-;19515:59:::0;-1:-1:-1;19588:18:0;;19585:93:::1;;19630:9;::::0;19622:44:::1;::::0;-1:-1:-1;;;;;19630:9:0::1;19651:14:::0;19622:28:::1;:44::i;:::-;-1:-1:-1::0;;5829:8:0;:16;;-1:-1:-1;;5829:16:0;;;-1:-1:-1;;;;;;;;;18505:1180:0:o;17347:1150::-;17471:28;17502:36;17513:7;17522;17531:6;17502:10;:36::i;:::-;-1:-1:-1;;;;;17555:19:0;;;;;;:11;:19;;;;;;17471:67;;-1:-1:-1;17555:19:0;;17551:115;;;-1:-1:-1;;;;;17631:15:0;;;;;;:7;:15;;;;;;:23;;17647:7;;17631:23;:::i;:::-;-1:-1:-1;;;;;17613:15:0;;;;;;:7;:15;;;;;:41;17551:115;-1:-1:-1;;;;;17680:22:0;;;;;;:11;:22;;;;;;;;17676:130;;;17777:17;;;;-1:-1:-1;;;;;17758:18:0;;;;;;:7;:18;;;;;;:36;;17777:17;17758:36;:::i;:::-;-1:-1:-1;;;;;17737:18:0;;;;;;:7;:18;;;;;:57;17676:130;17852:9;;-1:-1:-1;;;;;17836:15:0;;17852:9;17836:15;;;:7;:15;;;;;;:25;;17852:9;17836:25;:::i;:::-;-1:-1:-1;;;;;17818:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;17912:17;;;17893:18;;;;;;;;;;:36;;17912:17;17893:36;:::i;:::-;-1:-1:-1;;;;;17872:18:0;;;;;;:7;:18;;;;;;;:57;;;;17953:6;;;:10;;;:24;;;17976:1;17967;:6;;;:10;17953:24;17950:56;;;17979:27;17991:1;:6;;;17999:1;:6;;;17979:11;:27::i;:::-;18035:1;18020;:12;;;:16;:36;;;;18055:1;18040;:12;;;:16;18020:36;18017:206;;;18073:41;18088:1;:12;;;18101:1;:12;;;18073:14;:41::i;:::-;18159:4;-1:-1:-1;;;;;18134:77:0;18143:6;-1:-1:-1;;;;;18134:77:0;;18196:1;:14;;;18181:1;:12;;;18166:1;:12;;;:27;;;;:::i;:::-;:44;;;;:::i;:::-;18134:77;;1361:25:1;;;1349:2;1334:18;18134:77:0;;;;;;;18017:206;18251:1;18236;:12;;;:16;:36;;;;18271:1;18256;:12;;;:16;18236:36;18233:83;;;18274:42;18289:1;:12;;;18303:1;:12;;;18274:14;:42::i;:::-;18347:1;18330;:14;;;:18;:40;;;;18369:1;18352;:14;;;:18;18330:40;18327:90;;;18372:45;18386:1;:14;;;18402:1;:14;;;18372:13;:45::i;:::-;18450:9;-1:-1:-1;;;;;18433:46:0;18442:6;-1:-1:-1;;;;;18433:46:0;;18461:1;:17;;;18433:46;;;;1361:25:1;;1349:2;1334:18;;1215:177;18433:46:0;;;;;;;;17458:1039;17347:1150;;;;;:::o;14251:540::-;14348:7;;14384;;14301;;;;;14402:279;14426:9;:16;14422:20;;14402:279;;;14492:7;14468;:21;14476:9;14486:1;14476:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14476:12:0;14468:21;;;;;;;;;;;;;:31;;:66;;;14527:7;14503;:21;14511:9;14521:1;14511:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14511:12:0;14503:21;;;;;;;;;;;;;:31;14468:66;14464:97;;;14544:7;;14553;;14536:25;;;;;;;14251:540;;:::o;14464:97::-;14594:7;:21;14602:9;14612:1;14602:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14602:12:0;14594:21;;;;;;;;;;;;;14586:29;;:7;:29;:::i;:::-;14576:39;;14648:7;:21;14656:9;14666:1;14656:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14656:12:0;14648:21;;;;;;;;;;;;;14640:29;;:7;:29;:::i;:::-;14630:39;-1:-1:-1;14444:3:0;;14402:279;;;;14713:7;;14705;;:15;;;;:::i;:::-;14695:7;:25;14691:56;;;14730:7;;14739;;14722:25;;;;;;14251:540;;:::o;14691:56::-;14766:7;;14775;;-1:-1:-1;14251:540:0;-1:-1:-1;14251:540:0:o;12449:632::-;12536:28;;:::i;:::-;12583:7;12579:86;;12605:17;;;:27;;;12645:8;;12579:86;12675:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12675:17:0;12706:6;12703:55;;;-1:-1:-1;12714:16:0;;;;;;;;12721:9;12714:16;;;;;;;;;;;;;;;;;;;;;;;;12703:55;;;-1:-1:-1;12746:12:0;;;;;;;;12753:5;12746:12;;;;;;;;;;;;;;;;;;;;;;;;12703:55;12796:8;;12805:3;;12788:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;12779:6;;;:29;12842:14;;;;12857:3;;12834:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;12819:12;;;:41;12894:14;;;;12909:3;;12886:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;12871:12;;;:41;12948:16;;;;12965:3;;12940:24;;:7;:24;:::i;:::-;:28;;;;:::i;:::-;12923:14;;;:45;;;13027:12;;;;13014;;;;13007:6;;;;12999:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;:55;;;;:::i;:::-;12979:17;;;:75;-1:-1:-1;12449:632:0;;;;;:::o;13089:692::-;13215:15;;;;;13330:19;13338:11;13330:7;:19;:::i;:::-;13320:29;;13366:7;13362:69;;-1:-1:-1;13395:7:0;;-1:-1:-1;13413:1:0;;-1:-1:-1;13413:1:0;;-1:-1:-1;13413:1:0;13388:31;;13362:69;13457:11;13450:1;:6;;;:18;;;;:::i;:::-;13443:25;;13505:11;13492:1;:12;;;:24;;;;:::i;:::-;13479:37;;13553:11;13540:1;:12;;;:24;;;;:::i;:::-;13527:37;;13575:20;13613:11;13598:1;:14;;;:26;;;;:::i;:::-;13575:49;-1:-1:-1;13575:49:0;13678:10;13667;13654:12;13662:4;13654:7;:12;:::i;:::-;:23;;;;:::i;:::-;:34;;;;:::i;:::-;:47;;;;:::i;:::-;13635:66;;13712:61;13089:692;;;;;;;;;;:::o;13793:284::-;13902:20;13941:7;13937:47;;-1:-1:-1;13970:1:0;13963:9;;13937:47;14026:11;14011:1;:14;;;:26;;;;:::i;:::-;13996:41;13793:284;-1:-1:-1;;;;13793:284:0:o;20196:562::-;20346:16;;;20360:1;20346:16;;;;;;;;20322:21;;20346:16;;;;;;;;;;-1:-1:-1;20346:16:0;20322:40;;20391:4;20373;20378:1;20373:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;20373:23:0;;;-1:-1:-1;;;;;20373:23:0;;;;;20417:6;;;;;;;;;-1:-1:-1;;;;;20417:6:0;-1:-1:-1;;;;;20417:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20407:4;20412:1;20407:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20407:23:0;;;:7;;;;;;;;;:23;20475:6;;20443:53;;20460:4;;20475:6;;;;20484:11;20443:8;:53::i;:::-;20535:6;;:215;;-1:-1:-1;;;20535:215:0;;:6;;;;-1:-1:-1;;;;;20535:6:0;;:57;;:215;;20607:11;;20633:1;;20677:4;;20704;;20724:15;;20535:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19693:495;19873:6;;19841:53;;19858:4;;19873:6;;;-1:-1:-1;;;;;19873:6:0;19882:11;19841:8;:53::i;:::-;19937:6;;-1:-1:-1;;;;;19937:6:0;;;;;:22;19967:9;20000:4;20020:11;20046:1;;20132:7;1534;1561:6;-1:-1:-1;;;;;1561:6:0;;1488:87;20132:7;19937:243;;;;;;-1:-1:-1;;;;;;19937:243:0;;;-1:-1:-1;;;;;16738:15:1;;;19937:243:0;;;16720:34:1;16770:18;;;16763:34;;;;16813:18;;;16806:34;;;;16856:18;;;16849:34;16920:15;;;16899:19;;;16892:44;20154:15:0;16952:19:1;;;16945:35;16654:19;;19937:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19693:495;;:::o;2956:317::-;3071:6;3046:21;:31;;3038:73;;;;-1:-1:-1;;;3038:73:0;;17504:2:1;3038:73:0;;;17486:21:1;17543:2;17523:18;;;17516:30;17582:31;17562:18;;;17555:59;17631:18;;3038:73:0;17302:353:1;3038:73:0;3125:12;3143:9;-1:-1:-1;;;;;3143:14:0;3165:6;3143:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3124:52;;;3195:7;3187:78;;;;-1:-1:-1;;;3187:78:0;;18072:2:1;3187:78:0;;;18054:21:1;18111:2;18091:18;;;18084:30;18150:34;18130:18;;;18123:62;18221:28;18201:18;;;18194:56;18267:19;;3187:78:0;17870:422:1;3187:78:0;3027:246;2956:317;;:::o;10937:123::-;11015:4;11005:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;11030:11:0;:22;;11048:4;;11030:11;:15;;:22;;11048:4;;11030:22;:::i;:::-;;;;-1:-1:-1;;;;10937:123:0:o;11068:284::-;11175:10;11151:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;11221:4:0;11201:26;;;;:11;:26;;;;;;;;11198:101;;;11269:4;11253:22;;;;:7;:22;;;;;:34;;11277:10;;11253:22;:34;;11277:10;;11253:34;:::i;:::-;;;;-1:-1:-1;;11198:101:0;11325:4;11309:22;;;;:7;:22;;;;;:35;;11334:10;;11309:22;:35;;11334:10;;11309:35;:::i;11360:284::-;11467:10;11443:11;:21;;;:34;;;;;;;:::i;11656:295::-;11768:12;11742:11;:23;;;:38;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:247::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1564:9;1551:23;1583:31;1608:5;1583:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2110:180::-;2169:6;2222:2;2210:9;2201:7;2197:23;2193:32;2190:52;;;2238:1;2235;2228:12;2190:52;-1:-1:-1;2261:23:1;;2110:180;-1:-1:-1;2110:180:1:o;2484:160::-;2549:20;;2605:13;;2598:21;2588:32;;2578:60;;2634:1;2631;2624:12;2578:60;2484:160;;;:::o;2649:180::-;2705:6;2758:2;2746:9;2737:7;2733:23;2729:32;2726:52;;;2774:1;2771;2764:12;2726:52;2797:26;2813:9;2797:26;:::i;2834:248::-;2899:6;2907;2960:2;2948:9;2939:7;2935:23;2931:32;2928:52;;;2976:1;2973;2966:12;2928:52;3012:9;2999:23;2989:33;;3041:35;3072:2;3061:9;3057:18;3041:35;:::i;:::-;3031:45;;2834:248;;;;;:::o;3087:::-;3155:6;3163;3216:2;3204:9;3195:7;3191:23;3187:32;3184:52;;;3232:1;3229;3222:12;3184:52;-1:-1:-1;;3255:23:1;;;3325:2;3310:18;;;3297:32;;-1:-1:-1;3087:248:1:o;3944:385::-;4030:6;4038;4046;4054;4107:3;4095:9;4086:7;4082:23;4078:33;4075:53;;;4124:1;4121;4114:12;4075:53;-1:-1:-1;;4147:23:1;;;4217:2;4202:18;;4189:32;;-1:-1:-1;4268:2:1;4253:18;;4240:32;;4319:2;4304:18;4291:32;;-1:-1:-1;3944:385:1;-1:-1:-1;3944:385:1:o;4334:388::-;4402:6;4410;4463:2;4451:9;4442:7;4438:23;4434:32;4431:52;;;4479:1;4476;4469:12;4431:52;4518:9;4505:23;4537:31;4562:5;4537:31;:::i;:::-;4587:5;-1:-1:-1;4644:2:1;4629:18;;4616:32;4657:33;4616:32;4657:33;:::i;:::-;4709:7;4699:17;;;4334:388;;;;;:::o;4950:347::-;5152:2;5134:21;;;5191:2;5171:18;;;5164:30;5230:25;5225:2;5210:18;;5203:53;5288:2;5273:18;;4950:347::o;5302:356::-;5504:2;5486:21;;;5523:18;;;5516:30;5582:34;5577:2;5562:18;;5555:62;5649:2;5634:18;;5302:356::o;6072:127::-;6133:10;6128:3;6124:20;6121:1;6114:31;6164:4;6161:1;6154:15;6188:4;6185:1;6178:15;6204:128;6271:9;;;6292:11;;;6289:37;;;6306:18;;:::i;6748:217::-;6788:1;6814;6804:132;;6858:10;6853:3;6849:20;6846:1;6839:31;6893:4;6890:1;6883:15;6921:4;6918:1;6911:15;6804:132;-1:-1:-1;6950:9:1;;6748:217::o;7322:127::-;7383:10;7378:3;7374:20;7371:1;7364:31;7414:4;7411:1;7404:15;7438:4;7435:1;7428:15;7454:127;7515:10;7510:3;7506:20;7503:1;7496:31;7546:4;7543:1;7536:15;7570:4;7567:1;7560:15;8302:416;8391:1;8428:5;8391:1;8442:270;8463:7;8453:8;8450:21;8442:270;;;8522:4;8518:1;8514:6;8510:17;8504:4;8501:27;8498:53;;;8531:18;;:::i;:::-;8581:7;8571:8;8567:22;8564:55;;;8601:16;;;;8564:55;8680:22;;;;8640:15;;;;8442:270;;;8446:3;8302:416;;;;;:::o;8723:806::-;8772:5;8802:8;8792:80;;-1:-1:-1;8843:1:1;8857:5;;8792:80;8891:4;8881:76;;-1:-1:-1;8928:1:1;8942:5;;8881:76;8973:4;8991:1;8986:59;;;;9059:1;9054:130;;;;8966:218;;8986:59;9016:1;9007:10;;9030:5;;;9054:130;9091:3;9081:8;9078:17;9075:43;;;9098:18;;:::i;:::-;-1:-1:-1;;9154:1:1;9140:16;;9169:5;;8966:218;;9268:2;9258:8;9255:16;9249:3;9243:4;9240:13;9236:36;9230:2;9220:8;9217:16;9212:2;9206:4;9203:12;9199:35;9196:77;9193:159;;;-1:-1:-1;9305:19:1;;;9337:5;;9193:159;9384:34;9409:8;9403:4;9384:34;:::i;:::-;9454:6;9450:1;9446:6;9442:19;9433:7;9430:32;9427:58;;;9465:18;;:::i;:::-;9503:20;;8723:806;-1:-1:-1;;;8723:806:1:o;9534:140::-;9592:5;9621:47;9662:4;9652:8;9648:19;9642:4;9621:47;:::i;9679:168::-;9752:9;;;9783;;9800:15;;;9794:22;;9780:37;9770:71;;9821:18;;:::i;9852:125::-;9917:9;;;9938:10;;;9935:36;;;9951:18;;:::i;15138:251::-;15208:6;15261:2;15249:9;15240:7;15236:23;15232:32;15229:52;;;15277:1;15274;15267:12;15229:52;15309:9;15303:16;15328:31;15353:5;15328:31;:::i;15394:980::-;15656:4;15704:3;15693:9;15689:19;15735:6;15724:9;15717:25;15761:2;15799:6;15794:2;15783:9;15779:18;15772:34;15842:3;15837:2;15826:9;15822:18;15815:31;15866:6;15901;15895:13;15932:6;15924;15917:22;15970:3;15959:9;15955:19;15948:26;;16009:2;16001:6;15997:15;15983:29;;16030:1;16040:195;16054:6;16051:1;16048:13;16040:195;;;16119:13;;-1:-1:-1;;;;;16115:39:1;16103:52;;16210:15;;;;16175:12;;;;16151:1;16069:9;16040:195;;;-1:-1:-1;;;;;;;16291:32:1;;;;16286:2;16271:18;;16264:60;-1:-1:-1;;;16355:3:1;16340:19;16333:35;16252:3;15394:980;-1:-1:-1;;;15394:980:1:o;16991:306::-;17079:6;17087;17095;17148:2;17136:9;17127:7;17123:23;17119:32;17116:52;;;17164:1;17161;17154:12;17116:52;17193:9;17187:16;17177:26;;17243:2;17232:9;17228:18;17222:25;17212:35;;17287:2;17276:9;17272:18;17266:25;17256:35;;16991:306;;;;;:::o

Swarm Source

ipfs://82e0efa0b9fb050c578f8d763709a980953bf58ef1f11fc53ce03c1b9a694cf4

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

TerraByte is more than just a scanner; it's a comprehensive solution for intelligent crypto trading, empowering users to explore the vast potential of the cryptocurrency market with confidence and clarity.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.