ETH Price: $3,340.06 (-1.05%)

Contract

0xFAC16168AD0CB35cbabf95F1fC23Ec7660829214
 

Overview

ETH Balance

0.094601142043352797 ETH

Eth Value

$315.97 (@ $3,340.06/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve208879842024-10-03 22:31:4750 days ago1727994707IN
0xFAC16168...660829214
0 ETH0.000270685.82923882
Approve206891222024-09-06 4:19:4778 days ago1725596387IN
0xFAC16168...660829214
0 ETH0.000071321.53802952
Approve205401472024-08-16 8:58:2398 days ago1723798703IN
0xFAC16168...660829214
0 ETH0.000082761.78230422
Approve205071632024-08-11 18:29:11103 days ago1723400951IN
0xFAC16168...660829214
0 ETH0.000045180.97426606
Approve204994462024-08-10 16:36:35104 days ago1723307795IN
0xFAC16168...660829214
0 ETH0.000110542.38054124
Approve204993312024-08-10 16:13:35104 days ago1723306415IN
0xFAC16168...660829214
0 ETH0.000079891.72287913
Approve204682432024-08-06 8:09:35108 days ago1722931775IN
0xFAC16168...660829214
0 ETH0.000220564.75002985
Approve204533232024-08-04 6:13:47111 days ago1722752027IN
0xFAC16168...660829214
0 ETH0.000051991.12915346
Approve204532092024-08-04 5:50:59111 days ago1722750659IN
0xFAC16168...660829214
0 ETH0.000060511.30491806
Approve204356402024-08-01 18:58:59113 days ago1722538739IN
0xFAC16168...660829214
0 ETH0.0006715514.4659549
Approve204301712024-08-01 0:39:47114 days ago1722472787IN
0xFAC16168...660829214
0 ETH0.000219364.73026503
Approve204210912024-07-30 18:14:59115 days ago1722363299IN
0xFAC16168...660829214
0 ETH0.000389688.39210577
Approve204198622024-07-30 14:07:11115 days ago1722348431IN
0xFAC16168...660829214
0 ETH0.000488910.5423434
Approve204186112024-07-30 9:55:35115 days ago1722333335IN
0xFAC16168...660829214
0 ETH0.0021510446.3237486
Approve204157042024-07-30 0:07:11116 days ago1722298031IN
0xFAC16168...660829214
0 ETH0.000191834.13129043
Approve204116482024-07-29 10:33:47116 days ago1722249227IN
0xFAC16168...660829214
0 ETH0.000127462.74495422
Approve204113262024-07-29 9:29:11116 days ago1722245351IN
0xFAC16168...660829214
0 ETH0.000148763.2078362
Approve204107942024-07-29 7:42:23116 days ago1722238943IN
0xFAC16168...660829214
0 ETH0.000104892.26190771
Approve204102552024-07-29 5:54:35117 days ago1722232475IN
0xFAC16168...660829214
0 ETH0.00005531.19102443
Approve204094512024-07-29 3:11:23117 days ago1722222683IN
0xFAC16168...660829214
0 ETH0.00011792.54252579
Approve204069912024-07-28 18:58:11117 days ago1722193091IN
0xFAC16168...660829214
0 ETH0.000122452.64054288
Approve204057962024-07-28 14:58:35117 days ago1722178715IN
0xFAC16168...660829214
0 ETH0.000070152.90474013
Approve204057932024-07-28 14:57:59117 days ago1722178679IN
0xFAC16168...660829214
0 ETH0.000073843.06531339
Transfer204039282024-07-28 8:43:47117 days ago1722156227IN
0xFAC16168...660829214
0 ETH0.001386372.17165045
Approve204038492024-07-28 8:27:47117 days ago1722155267IN
0xFAC16168...660829214
0 ETH0.000078111.6843231
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
208881332024-10-03 23:01:3550 days ago1727996495
0xFAC16168...660829214
0.00291674 ETH
208881332024-10-03 23:01:3550 days ago1727996495
0xFAC16168...660829214
0.00875022 ETH
208881332024-10-03 23:01:3550 days ago1727996495
0xFAC16168...660829214
0.01166696 ETH
204891102024-08-09 6:00:11106 days ago1723183211
0xFAC16168...660829214
0.00346778 ETH
204891102024-08-09 6:00:11106 days ago1723183211
0xFAC16168...660829214
0.01040335 ETH
204891102024-08-09 6:00:11106 days ago1723183211
0xFAC16168...660829214
0.01387114 ETH
204041442024-07-28 9:27:11117 days ago1722158831
0xFAC16168...660829214
0.00431052 ETH
204041442024-07-28 9:27:11117 days ago1722158831
0xFAC16168...660829214
0.01293158 ETH
204041442024-07-28 9:27:11117 days ago1722158831
0xFAC16168...660829214
0.0172421 ETH
204029432024-07-28 5:26:23118 days ago1722144383
0xFAC16168...660829214
0.00473108 ETH
204029432024-07-28 5:26:23118 days ago1722144383
0xFAC16168...660829214
0.01419324 ETH
204029432024-07-28 5:26:23118 days ago1722144383
0xFAC16168...660829214
0.01892432 ETH
204009352024-07-27 22:41:47118 days ago1722120107
0xFAC16168...660829214
0.00722564 ETH
204009352024-07-27 22:41:47118 days ago1722120107
0xFAC16168...660829214
0.02167692 ETH
204009352024-07-27 22:41:47118 days ago1722120107
0xFAC16168...660829214
0.02890257 ETH
204007612024-07-27 22:06:35118 days ago1722117995
0xFAC16168...660829214
0.00900271 ETH
204007612024-07-27 22:06:35118 days ago1722117995
0xFAC16168...660829214
0.02700815 ETH
204007612024-07-27 22:06:35118 days ago1722117995
0xFAC16168...660829214
0.03601087 ETH
204005862024-07-27 21:31:23118 days ago1722115883
0xFAC16168...660829214
0.01370524 ETH
204005862024-07-27 21:31:23118 days ago1722115883
0xFAC16168...660829214
0.04111572 ETH
204005862024-07-27 21:31:23118 days ago1722115883
0xFAC16168...660829214
0.05482096 ETH
204004272024-07-27 20:59:35118 days ago1722113975
0xFAC16168...660829214
0.01731115 ETH
204004272024-07-27 20:59:35118 days ago1722113975
0xFAC16168...660829214
0.05193345 ETH
204004272024-07-27 20:59:35118 days ago1722113975
0xFAC16168...660829214
0.0692446 ETH
204003972024-07-27 20:53:35118 days ago1722113615
0xFAC16168...660829214
0.02538231 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BitcoinReserveToken

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-27
*/

// SPDX-License-Identifier: MIT Licence

/*
          .                                                                                         
                             .                                             .   .                    
                                         .                  .                                       
        .                 .           .       .   .     . . .     .          .         .            
   .     .                       .                  .                                               
.     . .            .         .       Bitcoin Reserve Token           .                   .     .  
                 .              .         @BTCReserveToken         .              .                 
             .                        .  .  . .     .                     .                        .
     .                                              .                                            .  
         .                    .   .                   .  .                    .                     
.     .         .                            .               ..                         .          .
                                  .             :++: .             ....                       .     
                     .   .  .               .=%@@@@@@%=.      . .                                   
                                 .     ..-#@@@@@@@@@@@@@@#-..              .                      . 
        .                           .-*@@@@@@@@@@@@@@@@@@@@@@*-.                        .           
                      .         .-*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*-.                 .              
               .            ..*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+.         .                   
                        .:=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=:.                        
                  .   -#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#:                .     
      .               -######################################################-         .         .. 
             .   .         .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@. .  .                      
      .                    .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.   ..                      
                ..         ..:=====......:====-:----:-====:......=====:..                           
                .            -%@@@%. . ..=@@@@#======%@@@@-     :@@@@%:               ..         .  
       .                 .   -%@@@%.   ..*@@@@#======%@@@@+..   :@@@@%:                             
                             -@@@@@.  .-=*@@@@#==-:=-%@@@@*=-.  :@@@@%:                             
                          .. -@@@@@: .-==#@@@@#::.:-.#@@@@*==-. :@@@@%-  ...                      . 
                             -@@@@@:.-===#@@@@%: ....%@@@@*===:.-@@@@@-                .            
                .         .  =@@@@@:.====#@@@@%..:===%@@@@#===-.-@@@@@-        ..                   
    .     .       .          =@@@@@::====#@@@@%...::-@@@@@#====.-@@@@@-     .                       
                            .=@@@@@-:====#@@@@%..--::@@@@@#====.=@@@@@= .                        .  
  .                         .=@@@@@=.====%@@@@%.:====@@@@@#===-.=@@@@@=                .            
    .                       .+@@@@@=.:===%@@@@@:....:@@@@@%===:.+@@@@@=.         .                  
                  ..        .+@@@@@+ .-==%@@@@@=-.--=@@@@@%==:. +@@@@@=.                         .  
           .                .+@@@@@+  .:=%@@@@@=--==+@@@@@%=:.  *@@@@@+.       .        .           
      .                     .*@@@@@*   ..%@@@@@+====+@@@@@%.  . *@@@@@+.           .         .      
                            .*@@@@@*    .%@@@@@+====*@@@@@%.    #@@@@@*.      .                     
   .      .        .        .:-----:    .------:....:------.    ------:.             .              
                        .*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*.  .                     
  .                  ..::#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*::..    .                
                     .#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*.       ..         .  
           .    .  .::#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#::.                   
                   *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*                   
 .         .  .    +############################################################=    .    .         
     .               . .                               .                          .                 

*/

pragma solidity ^0.7.4;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;
    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }
    modifier onlyOwner() {
        require(isOwner(msg.sender), ""); _;
    }
    modifier authorized() {
        require(isAuthorized(msg.sender), ""); _;
    }
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }
    function isOwner(address account) private view returns (bool) {
        return account == owner;
    }
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }
    event OwnershipTransferred(address owner);
}

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

interface UniRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
}

interface IWBTCDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}

contract WBTCDistributor is IWBTCDistributor {
    using SafeMath for uint256;
    address _token;
    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }
    IERC20 RWRD = IERC20(0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599); // WBTC
    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; // WETH
    UniRouter router;

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;
    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;
    uint256 public minPeriod = 45 * 60;
    uint256 public minDistribution = 1 * (10 ** 18);
    uint256 currentIndex;

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (address _router) {
        router = _router != address(0)
        ? UniRouter(_router)
        : UniRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }
 
    function deposit() external payable override onlyToken {
        uint256 balanceBefore = RWRD.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = WETH;
        path[1] = address(RWRD);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(0, path, address(this), block.timestamp);
        uint256 amount = RWRD.balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();
        uint256 iterations = 0;

        while(gasUsed < gas && iterations < shareholderCount) {
            if(currentIndex >= shareholderCount){
                currentIndex = 0;
            }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }

    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            RWRD.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }

    function claimDividend() external {
        distributeDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

contract BitcoinReserveToken is IERC20, Auth {
    using SafeMath for uint256;

    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Bitcoin Reserve Token";
    string constant _symbol = "BRT";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1 * 10**6 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply.mul(2).div(1000);
    uint256 public _maxWalletToken = _totalSupply.mul(2).div(100);

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    bool public blacklistMode = true;
    mapping (address => bool) public isBlacklisted;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isDividendExempt;

    uint256 public liquidityFee = 5;
    uint256 public wbtcFee = 5;
    uint256 public marketingFee = 10;
    uint256 private totalFee = liquidityFee + wbtcFee + marketingFee;
    uint256 public feeDenominator = 100;

    uint256 public sellMultiplier = 200;

    address private autoLiquidityReceiver;
    address private marketingWallet;

    UniRouter public router;
    address public pair;

    bool public tradingOpen = false;

    WBTCDistributor public distributor;
    uint256 distributorGas = 500000;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 50 / 10000;
    bool inSwap;

    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor (address _marketingWallet) Auth(msg.sender) {
        router = UniRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IUniswapV2Factory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = uint256(-1);

        distributor = new WBTCDistributor(address(router));

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[msg.sender];

        autoLiquidityReceiver = msg.sender;
        marketingWallet = _marketingWallet;

        _balances[msg.sender] = _totalSupply;
       
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, uint256(-1));
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != uint256(-1)){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "");
        }
 
        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner() {
        _maxWalletToken = (_totalSupply * maxWallPercent_base1000 ) / 1000;
    }
    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner() {
        _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

    function setTxLimit(uint256 amount) external authorized {
        _maxTxAmount = amount;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
 
        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"");
        }

        if(blacklistMode){
            require(!isBlacklisted[sender] && !isBlacklisted[recipient],"");
        }

        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != autoLiquidityReceiver && recipient != marketingWallet){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"");}
       
        checkTxLimit(sender, amount);

        if(shouldSwapBack()){ swapBack(); }

        _balances[sender] = _balances[sender].sub(amount, "");

        uint256 amountReceived = (!shouldTakeFee(sender) || !shouldTakeFee(recipient)) ? amount : takeFee(sender, amount,(recipient == pair));
        _balances[recipient] = _balances[recipient].add(amountReceived);
      
        if(!isDividendExempt[sender]) {
            try distributor.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try distributor.setShare(recipient, _balances[recipient]) {} catch {}
        }
 
        try distributor.process(distributorGas) {} catch {}

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount, bool isSell) internal returns (uint256) {

        uint256 multiplier = isSell ? sellMultiplier : 100;
        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function clearStuckBalance_sender(uint256 amountPercentage) external authorized {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
    }

    function setSellMultiplier(uint256 _multiplier) external onlyOwner{
        sellMultiplier = _multiplier;
    }

    function tradingStatus(bool _bool) public onlyOwner {
        tradingOpen = _bool;
    }
 
    function swapBack() internal swapping {
        uint256 amountToLiquify = swapThreshold.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(amountToSwap, 0, path, address(this), block.timestamp);

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));

        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHReward = amountETH.mul(wbtcFee).div(totalETHFee);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);

        try distributor.deposit{value: amountETHReward}() {} catch {}

        (bool tmpSuccess,) = payable(marketingWallet).call{value: amountETHMarketing, gas: 30000}("");
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp);
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function setIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        } else{
            distributor.setShare(holder, _balances[holder]);
        }
    }

    function enable_blacklist(bool _status) public onlyOwner {
        blacklistMode = _status;
    }

    function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isBlacklisted[addresses[i]] = status;
        }
    } 

    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _wbtcFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        wbtcFee = _wbtcFee;
        marketingFee = _marketingFee;
        totalFee = _liquidityFee.add(_wbtcFee).add(_marketingFee);
        feeDenominator = _feeDenominator;
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingWallet ) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingWallet = _marketingWallet;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {
        require(from==msg.sender);
        require(addresses.length < 501,"");
        require(addresses.length == tokens.length,"");

        uint256 airdropAmount = 0;

        for(uint i=0; i < addresses.length; i++){
            airdropAmount = airdropAmount + tokens[i];
        }

        require(balanceOf(from) >= airdropAmount, "");

        for(uint i=0; i < addresses.length; i++){
            _basicTransfer(from,addresses[i],tokens[i]);
            if(!isDividendExempt[addresses[i]]) {
                try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {}
            }
        }

        if(!isDividendExempt[from]) {
            try distributor.setShare(from, _balances[from]) {} catch {}
        }
    }

    function rescueERC20(address tokenAddress, uint256 amount) external onlyOwner {
        IERC20(tokenAddress).transfer(owner, amount);
    }

    function rescueETH(uint256 weiAmount) external onlyOwner {
        payable(owner).transfer(weiAmount);
    }

    event AutoLiquify(uint256 amountETH, uint256 amountBRT);
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBRT","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance_sender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract WBTCDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract UniRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_wbtcFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_multiplier","type":"uint256"}],"name":"setSellMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_bool","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wbtcFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526002805473c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03199182161782556003805461dead90831617905560048054909116905566038d7ea4c68000600581905562000083916103e8916200006f91620003ed602090811b62001b1e17901c565b6200044360201b62001b671790919060201c565b600655620000a960646200006f6002600554620003ed60201b62001b1e1790919060201c565b600755600a8054600160ff19918216811783556005600f819055601081905560119390935560146012819055606460135560c890556018805460ff60a01b191690556207a120601a55601b8054909216179055546127109060320204601c553480156200011557600080fd5b5060405162003b4038038062003b40833981810160405260208110156200013b57600080fd5b5051600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff191690921790915560178054909216737a250d5630b4cf539739df2c5dacb4c659f2488d1791829055825163c45a015560e01b815292516001600160a01b03929092169263c45a01559260048083019392829003018186803b158015620001cc57600080fd5b505afa158015620001e1573d6000803e3d6000fd5b505050506040513d6020811015620001f857600080fd5b5051600254604080516364e329cb60e11b81526001600160a01b0392831660048201523060248201529051919092169163c9c653969160448083019260209291908290030181600087803b1580156200025057600080fd5b505af115801562000265573d6000803e3d6000fd5b505050506040513d60208110156200027c57600080fd5b5051601880546001600160a01b0319166001600160a01b0392831617905530600090815260096020908152604080832060178054861685529252918290206000199055549051911690620002d0906200050e565b6001600160a01b03909116815260405190819003602001906000f080158015620002fe573d6000803e3d6000fd5b50601980546001600160a01b03199081166001600160a01b0393841617909155336000818152600c60209081526040808320805460ff199081166001908117909255600d8452828520805482168317905560185488168552600e84528285208054821683179055308552828520805482168317905560035488168552828520805490911690911790558383526015805486168517905560168054909516958716959095179093556005546008845284822081905584519081529351919390927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3506200051c565b600082620003fe575060006200043d565b828202828482816200040c57fe5b04146200043a576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b90505b92915050565b60006200043a8383604051806020016040528060008152506200046760201b60201c565b60008183620004f75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620004bb578181015183820152602001620004a1565b50505050905090810190601f168015620004e95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816200050457fe5b0495945050505050565b610e1d8062002d2383390190565b6127f7806200052c6000396000f3fe6080604052600436106102cd5760003560e01c8063896648c111610175578063bd9ab537116100dc578063f708a64f11610095578063fe575a871161006f578063fe575a8714610bb0578063fe9fbb8014610be3578063fed0d2a114610c16578063ffb54a9914610c2b576102d4565b8063f708a64f14610b25578063f84ba65d14610b60578063f887ea4014610b9b576102d4565b8063bd9ab53714610a13578063bfe1092814610a3d578063dd62ed3e14610a52578063df20fd4914610a8d578063f0b37c0414610abf578063f2fde38b14610af2576102d4565b80639e252f001161012e5780639e252f0014610903578063a4b45c001461092d578063a7bc1de014610968578063a8aa1b3114610992578063a9059cbb146109a7578063b6a5d7de146109e0576102d4565b8063896648c1146107e25780638cd4426d146107f75780638e2eee841461083057806395d89b41146108af57806398118cb4146108c45780639d1944f5146108d9576102d4565b806344a33fd2116102345780636ddd1713116101ed57806378109e54116101c757806378109e54146107725780637d1db4a51461078757806388ea420d1461079c578063893d20e8146107b1576102d4565b80636ddd1713146106ee5780636fcba3771461070357806370a082311461073f576102d4565b806344a33fd2146105eb578063571ac8b0146106155780635c85974f146106485780635e562f3b14610672578063658d4b7f1461069e5780636b67c4df146106d9576102d4565b806318160ddd1161028657806318160ddd146104445780631ca0a28d1461045957806323b872dd146105385780632b112e491461057b5780632d48e89614610590578063313ce567146105c0576102d4565b80630445b667146102d957806306fdde031461030057806309302dc61461038a578063095ea7b3146103b65780630d29598014610403578063180b0d7e1461042f576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b506102ee610c40565b60408051918252519081900360200190f35b34801561030c57600080fd5b50610315610c46565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561034f578181015183820152602001610337565b50505050905090810190601f16801561037c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039657600080fd5b506103b4600480360360208110156103ad57600080fd5b5035610c75565b005b3480156103c257600080fd5b506103ef600480360360408110156103d957600080fd5b506001600160a01b038135169060200135610cbf565b604080519115158252519081900360200190f35b34801561040f57600080fd5b506103b46004803603602081101561042657600080fd5b50351515610d26565b34801561043b57600080fd5b506102ee610d78565b34801561045057600080fd5b506102ee610d7e565b34801561046557600080fd5b506103b46004803603606081101561047c57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156104a757600080fd5b8201836020820111156104b957600080fd5b803590602001918460208302840111640100000000831117156104db57600080fd5b9193909290916020810190356401000000008111156104f957600080fd5b82018360208201111561050b57600080fd5b8035906020019184602083028401116401000000008311171561052d57600080fd5b509092509050610d84565b34801561054457600080fd5b506103ef6004803603606081101561055b57600080fd5b506001600160a01b03813581169160208101359091169060400135611078565b34801561058757600080fd5b506102ee611117565b34801561059c57600080fd5b506103b4600480360360408110156105b357600080fd5b5080359060200135611160565b3480156105cc57600080fd5b506105d56111fc565b6040805160ff9092168252519081900360200190f35b3480156105f757600080fd5b506103b46004803603602081101561060e57600080fd5b5035611201565b34801561062157600080fd5b506103ef6004803603602081101561063857600080fd5b50356001600160a01b031661126d565b34801561065457600080fd5b506103b46004803603602081101561066b57600080fd5b503561127b565b34801561067e57600080fd5b506103b46004803603602081101561069557600080fd5b503515156112b4565b3480156106aa57600080fd5b506103b4600480360360408110156106c157600080fd5b506001600160a01b03813516906020013515156112fb565b3480156106e557600080fd5b506102ee61135a565b3480156106fa57600080fd5b506103ef611360565b34801561070f57600080fd5b506103b46004803603608081101561072657600080fd5b5080359060208101359060408101359060600135611369565b34801561074b57600080fd5b506102ee6004803603602081101561076257600080fd5b50356001600160a01b03166113cb565b34801561077e57600080fd5b506102ee6113e6565b34801561079357600080fd5b506102ee6113ec565b3480156107a857600080fd5b506102ee6113f2565b3480156107bd57600080fd5b506107c66113f8565b604080516001600160a01b039092168252519081900360200190f35b3480156107ee57600080fd5b506103ef611407565b34801561080357600080fd5b506103b46004803603604081101561081a57600080fd5b506001600160a01b038135169060200135611410565b34801561083c57600080fd5b506103b46004803603604081101561085357600080fd5b81019060208101813564010000000081111561086e57600080fd5b82018360208201111561088057600080fd5b803590602001918460208302840111640100000000831117156108a257600080fd5b91935091503515156114cb565b3480156108bb57600080fd5b50610315611554565b3480156108d057600080fd5b506102ee611571565b3480156108e557600080fd5b506103b4600480360360208110156108fc57600080fd5b5035611577565b34801561090f57600080fd5b506103b46004803603602081101561092657600080fd5b50356115bf565b34801561093957600080fd5b506103b46004803603604081101561095057600080fd5b506001600160a01b0381358116916020013516611630565b34801561097457600080fd5b506103b46004803603602081101561098b57600080fd5b5035611692565b34801561099e57600080fd5b506107c66116cb565b3480156109b357600080fd5b506103ef600480360360408110156109ca57600080fd5b506001600160a01b0381351690602001356116da565b3480156109ec57600080fd5b506103b460048036036020811015610a0357600080fd5b50356001600160a01b03166116e7565b348015610a1f57600080fd5b506103b460048036036020811015610a3657600080fd5b5035611742565b348015610a4957600080fd5b506107c661178c565b348015610a5e57600080fd5b506102ee60048036036040811015610a7557600080fd5b506001600160a01b038135811691602001351661179b565b348015610a9957600080fd5b506103b460048036036040811015610ab057600080fd5b508035151590602001356117c6565b348015610acb57600080fd5b506103b460048036036020811015610ae257600080fd5b50356001600160a01b0316611811565b348015610afe57600080fd5b506103b460048036036020811015610b1557600080fd5b50356001600160a01b0316611866565b348015610b3157600080fd5b506103b460048036036040811015610b4857600080fd5b506001600160a01b0381351690602001351515611908565b348015610b6c57600080fd5b506103b460048036036040811015610b8357600080fd5b506001600160a01b0381351690602001351515611a67565b348015610ba757600080fd5b506107c6611ac6565b348015610bbc57600080fd5b506103ef60048036036020811015610bd357600080fd5b50356001600160a01b0316611ad5565b348015610bef57600080fd5b506103ef60048036036020811015610c0657600080fd5b50356001600160a01b0316611aea565b348015610c2257600080fd5b506102ee611b08565b348015610c3757600080fd5b506103ef611b0e565b601c5481565b6040805180820190915260158152742134ba31b7b4b7102932b9b2b93b32902a37b5b2b760591b602082015290565b610c7e33611b83565b610ca9576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6103e8816005540281610cb857fe5b0460075550565b3360008181526009602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b610d2f33611b83565b610d5a576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b60188054911515600160a01b0260ff60a01b19909216919091179055565b60135481565b60055490565b610d8d33611b83565b610db8576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6001600160a01b0385163314610dcd57600080fd5b6101f58310610dfd576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b828114610e2b576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6000805b84811015610e5957838382818110610e4357fe5b6020029190910135929092019150600101610e2f565b5080610e64876113cb565b1015610e91576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b60005b84811015610fde57610ed487878784818110610eac57fe5b905060200201356001600160a01b0316868685818110610ec857fe5b90506020020135611b97565b50600e6000878784818110610ee557fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16610fd6576019546001600160a01b03166314b6ca96878784818110610f2c57fe5b905060200201356001600160a01b0316600860008a8a87818110610f4c57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610fc357600080fd5b505af1925050508015610fd4575060015b505b600101610e94565b506001600160a01b0386166000908152600e602052604090205460ff16611070576019546001600160a01b03878116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b15801561105d57600080fd5b505af192505050801561106e575060015b505b505050505050565b6001600160a01b03831660009081526009602090815260408083203384529091528120546000191461110257604080516020808201835260008083526001600160a01b03881681526009825283812033825290915291909120546110dd918490611c57565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b61110d848484611cee565b90505b9392505050565b60045460009061115b90611133906001600160a01b03166113cb565b6003546111559061114c906001600160a01b03166113cb565b600554906121ac565b906121ac565b905090565b61116933611aea565b611194576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b601954604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b1580156111e857600080fd5b505af1158015611070573d6000803e3d6000fd5b600990565b61120a33611aea565b611235576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6040514790339060648484020480156108fc02916000818181858888f19350505050158015611268573d6000803e3d6000fd5b505050565b6000610d2082600019610cbf565b61128433611aea565b6112af576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b600655565b6112bd33611b83565b6112e8576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b600a805460ff1916911515919091179055565b61130433611aea565b61132f576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60115481565b601b5460ff1681565b61137233611aea565b61139d576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b600f849055601083905560118290556113c0826113ba86866121c8565b906121c8565b601255601355505050565b6001600160a01b031660009081526008602052604090205490565b60075481565b60065481565b60105481565b6000546001600160a01b031690565b600a5460ff1681565b61141933611b83565b611444576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b600080546040805163a9059cbb60e01b81526001600160a01b0392831660048201526024810185905290519185169263a9059cbb926044808401936020939083900390910190829087803b15801561149b57600080fd5b505af11580156114af573d6000803e3d6000fd5b505050506040513d60208110156114c557600080fd5b50505050565b6114d433611b83565b6114ff576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b60005b828110156114c55781600b600086868581811061151b57fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101611502565b60408051808201909152600381526210949560ea1b602082015290565b600f5481565b61158033611aea565b6115ab576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b620b71b081106115ba57600080fd5b601a55565b6115c833611b83565b6115f3576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b600080546040516001600160a01b039091169183156108fc02918491818181858888f1935050505015801561162c573d6000803e3d6000fd5b5050565b61163933611aea565b611664576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b601580546001600160a01b039384166001600160a01b03199182161790915560168054929093169116179055565b61169b33611b83565b6116c6576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b601455565b6018546001600160a01b031681565b6000611110338484611cee565b6116f033611b83565b61171b576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b61174b33611b83565b611776576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6103e881600554028161178557fe5b0460065550565b6019546001600160a01b031681565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b6117cf33611aea565b6117fa576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b601b805460ff191692151592909217909155601c55565b61181a33611b83565b611845576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b61186f33611b83565b61189a576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b61191133611aea565b61193c576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6001600160a01b038216301480159061196357506018546001600160a01b03838116911614155b61196c57600080fd5b6001600160a01b0382166000908152600e60205260409020805460ff19168215801591909117909155611a095760195460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b1580156119ec57600080fd5b505af1158015611a00573d6000803e3d6000fd5b5050505061162c565b6019546001600160a01b03838116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b1580156111e857600080fd5b611a7033611aea565b611a9b576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6017546001600160a01b031681565b600b6020526000908152604090205460ff1681565b6001600160a01b031660009081526001602052604090205460ff1690565b60145481565b601854600160a01b900460ff1681565b600082611b2d57506000610d20565b82820282848281611b3a57fe5b0414611110576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b60006111108383604051806020016040528060008152506121fc565b6000546001600160a01b0390811691161490565b604080516020808201835260008083526001600160a01b0387168152600890915291822054611bc7918490611c57565b6001600160a01b038086166000908152600860205260408082209390935590851681522054611bf690836121c8565b6001600160a01b0380851660008181526008602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b60008184841115611ce65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611cab578181015183820152602001611c93565b50505050905090810190601f168015611cd85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b601d5460009060ff1615611d0e57611d07848484611b97565b9050611110565b6001600160a01b03841660009081526001602052604090205460ff16158015611d5057506001600160a01b03831660009081526001602052604090205460ff16155b15611d8d57601854600160a01b900460ff16611d8d576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b600a5460ff1615611e05576001600160a01b0384166000908152600b602052604090205460ff16158015611dda57506001600160a01b0383166000908152600b602052604090205460ff16155b611e05576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6001600160a01b03841660009081526001602052604090205460ff16158015611e3757506001600160a01b0383163014155b8015611e5157506003546001600160a01b03848116911614155b8015611e6b57506018546001600160a01b03848116911614155b8015611e8557506015546001600160a01b03848116911614155b8015611e9f57506016546001600160a01b03848116911614155b15611ee6576000611eaf846113cb565b90506007548382011115611ee4576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b505b611ef08483612261565b611ef86122b5565b15611f0557611f05612304565b604080516020808201835260008083526001600160a01b038816815260089091529190912054611f36918490611c57565b6001600160a01b038516600090815260086020526040812091909155611f5b856126dd565b1580611f6d5750611f6b846126dd565b155b611f9457601854611f8f90869085906001600160a01b038881169116146126fc565b611f96565b825b6001600160a01b038516600090815260086020526040902054909150611fbc90826121c8565b6001600160a01b038086166000908152600860209081526040808320949094559188168152600e909152205460ff16612060576019546001600160a01b03868116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b15801561204d57600080fd5b505af192505050801561205e575060015b505b6001600160a01b0384166000908152600e602052604090205460ff166120f1576019546001600160a01b03858116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b1580156120de57600080fd5b505af19250505080156120ef575060015b505b601954601a54604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b15801561214457600080fd5b505af1925050508015612155575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3506001949350505050565b6000611110838360405180602001604052806000815250611c57565b600082820183811015611110576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6000818361224b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611cab578181015183820152602001611c93565b50600083858161225757fe5b0495945050505050565b6006548111158061228a57506001600160a01b0382166000908152600d602052604090205460ff165b61162c576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6018546000906001600160a01b031633148015906122d65750601d5460ff16155b80156122e45750601b5460ff165b801561115b575050601c5430600090815260086020526040902054101590565b601d805460ff19166001179055601254600f54601c54600092612337926002926123319291839190611b1e565b90611b67565b9050600061235082601c546121ac90919063ffffffff16565b604080516002808252606080830184529394509091602083019080368337019050509050308160008151811061238257fe5b6001600160a01b0392831660209182029290920101526002548251911690829060019081106123ad57fe5b6001600160a01b0392831660209182029290920181019190915260175460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b8381101561244757818101518382015260200161242f565b505050509050019650505050505050600060405180830381600087803b15801561247057600080fd5b505af1158015612484573d6000803e3d6000fd5b50505050600061249d82476121ac90919063ffffffff16565b905060006124c36124ba6002600f54611b6790919063ffffffff16565b601254906121ac565b905060006124e5600261233184612331600f5488611b1e90919063ffffffff16565b905060006125028361233160105487611b1e90919063ffffffff16565b9050600061251f8461233160115488611b1e90919063ffffffff16565b9050601960009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561257157600080fd5b505af193505050508015612583575060015b506016546040516000916001600160a01b03169061753090849084818181858888f193505050503d80600081146125d6576040519150601f19603f3d011682016040523d82523d6000602084013e6125db565b606091505b5060009250508a1590506126c7576017546015546040805163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991879160c48082019260609290919082900301818588803b15801561265e57600080fd5b505af1158015612672573d6000803e3d6000fd5b50505050506040513d606081101561268957600080fd5b505060408051858152602081018c905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b5050601d805460ff191690555050505050505050565b6001600160a01b03166000908152600c602052604090205460ff161590565b6000808261270b57606461270f565b6014545b9050600061273b601354606402612331846127356012548a611b1e90919063ffffffff16565b90611b1e565b3060009081526008602052604090205490915061275890826121c8565b30600081815260086020908152604091829020939093558051848152905191926001600160a01b038a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a36127b785826121ac565b969550505050505056fea264697066735822122067a9929d29764a91c54ac6daa4d9fd97c5375ec21c1e0197d4690a1e7c9ee01364736f6c634300070400336080604052600180546001600160a01b0319908116732260fac5e5542a773aa44fbcfedf7c193bc2c599179091556002805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790556ec097ce7bc90715b34b9f1000000000600c55610a8c600d55670de0b6b3a7640000600e5534801561007d57600080fd5b50604051610e1d380380610e1d833981810160405260208110156100a057600080fd5b50516001600160a01b0381166100ca57737a250d5630b4cf539739df2c5dacb4c659f2488d6100cc565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610d17806101066000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610254578063f0fc6bca14610269578063ffb2c4791461027e578063ffd49c84146102a8576100dd565b8063ce7c2ac2146101e6578063d0e30db014610237578063e2d2e2191461023f576100dd565b80632d48e896116100bb5780632d48e896146101775780633a98ef39146101a75780634fab0ae8146101bc578063997664d7146101d1576100dd565b806311ce023d146100e257806314b6ca961461010957806328fd319814610144575b600080fd5b3480156100ee57600080fd5b506100f76102bd565b60408051918252519081900360200190f35b34801561011557600080fd5b506101426004803603604081101561012c57600080fd5b506001600160a01b0381351690602001356102c3565b005b34801561015057600080fd5b506100f76004803603602081101561016757600080fd5b50356001600160a01b03166103e8565b34801561018357600080fd5b506101426004803603604081101561019a57600080fd5b5080359060200135610474565b3480156101b357600080fd5b506100f7610496565b3480156101c857600080fd5b506100f761049c565b3480156101dd57600080fd5b506100f76104a2565b3480156101f257600080fd5b506102196004803603602081101561020957600080fd5b50356001600160a01b03166104a8565b60408051938452602084019290925282820152519081900360600190f35b6101426104c9565b34801561024b57600080fd5b506100f7610759565b34801561026057600080fd5b506100f761075f565b34801561027557600080fd5b50610142610765565b34801561028a57600080fd5b50610142600480360360208110156102a157600080fd5b5035610770565b3480156102b457600080fd5b506100f7610852565b600c5481565b6000546001600160a01b031633146102da57600080fd5b6001600160a01b038216600090815260076020526040902054156103015761030182610858565b60008111801561032757506001600160a01b038216600090815260076020526040902054155b1561033a5761033582610980565b61036d565b8015801561035f57506001600160a01b03821660009081526007602052604090205415155b1561036d5761036d826109e1565b6001600160a01b03821660009081526007602052604090205460085461039e91839161039891610ace565b90610af3565b6008556001600160a01b03821660009081526007602052604090208190556103c581610b27565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b03811660009081526007602052604081205461040d5750600061046f565b6001600160a01b03821660009081526007602052604081205461042f90610b27565b6001600160a01b0384166000908152600760205260409020600101549091508082116104605760009250505061046f565b61046a8282610ace565b925050505b919050565b6000546001600160a01b0316331461048b57600080fd5b600d91909155600e55565b60085481565b600e5481565b60095481565b60076020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b031633146104e057600080fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561052b57600080fd5b505afa15801561053f573d6000803e3d6000fd5b505050506040513d602081101561055557600080fd5b5051604080516002808252606080830184529394509091602083019080368337505060025482519293506001600160a01b03169183915060009061059557fe5b6001600160a01b03928316602091820292909201015260018054835192169183919081106105bf57fe5b6001600160a01b0392831660209182029290920181019190915260035460405163b6f9de9560e01b815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de9597349795968b969495939460a49091019187810191028083838b5b83811015610651578181015183820152602001610639565b50505050905001955050505050506000604051808303818588803b15801561067857600080fd5b505af115801561068c573d6000803e3d6000fd5b5050600154604080516370a0823160e01b815230600482015290516000955061071794508793506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156106e557600080fd5b505afa1580156106f9573d6000803e3d6000fd5b505050506040513d602081101561070f57600080fd5b505190610ace565b6009549091506107279082610af3565b600955600854600c5461075191610748916107429085610b44565b90610b8d565b600b5490610af3565b600b55505050565b600b5481565b600a5481565b61076e33610858565b565b6000546001600160a01b0316331461078757600080fd5b60045480610795575061084f565b6000805a905060005b84831080156107ac57508381105b1561084a5783600f54106107c0576000600f555b6107ec6004600f54815481106107d257fe5b6000918252602090912001546001600160a01b0316610ba9565b1561081d5761081d6004600f548154811061080357fe5b6000918252602090912001546001600160a01b0316610858565b61083261082b5a8490610ace565b8490610af3565b92505a600f805460019081019091559092500161079e565b505050505b50565b600d5481565b6001600160a01b03811660009081526007602052604090205461087a5761084f565b6000610885826103e8565b9050801561097c57600a5461089a9082610af3565b600a556001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156108f357600080fd5b505af1158015610907573d6000803e3d6000fd5b505050506040513d602081101561091d57600080fd5b50506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546109529082610af3565b6001600160a01b03831660009081526007602052604090206002810191909155546103c590610b27565b5050565b600480546001600160a01b039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319169091179055565b6004805460001981019081106109f357fe5b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610a2b57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916000198101908110610a7957fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610aa957fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610aea838360405180602001604052806000815250610be5565b90505b92915050565b600082820183811015610aea576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6000610aed600c54610742600b5485610b4490919063ffffffff16565b600082610b5357506000610aed565b82820282848281610b6057fe5b0414610aea576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6000610aea838360405180602001604052806000815250610c7c565b600d546001600160a01b0382166000908152600660205260408120549091429101108015610aed5750600e54610bde836103e8565b1192915050565b60008184841115610c745760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c39578181015183820152602001610c21565b50505050905090810190601f168015610c665780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610ccb5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610c39578181015183820152602001610c21565b506000838581610cd757fe5b049594505050505056fea26469706673582212202813fd99ca1a858f8b11249e6f7aaee69c125d9c2b040b23ede8f91d7d32fc1c64736f6c63430007040033000000000000000000000000f0c2c39d1f94bcb47d48246f43f929aa0653bc93

Deployed Bytecode

0x6080604052600436106102cd5760003560e01c8063896648c111610175578063bd9ab537116100dc578063f708a64f11610095578063fe575a871161006f578063fe575a8714610bb0578063fe9fbb8014610be3578063fed0d2a114610c16578063ffb54a9914610c2b576102d4565b8063f708a64f14610b25578063f84ba65d14610b60578063f887ea4014610b9b576102d4565b8063bd9ab53714610a13578063bfe1092814610a3d578063dd62ed3e14610a52578063df20fd4914610a8d578063f0b37c0414610abf578063f2fde38b14610af2576102d4565b80639e252f001161012e5780639e252f0014610903578063a4b45c001461092d578063a7bc1de014610968578063a8aa1b3114610992578063a9059cbb146109a7578063b6a5d7de146109e0576102d4565b8063896648c1146107e25780638cd4426d146107f75780638e2eee841461083057806395d89b41146108af57806398118cb4146108c45780639d1944f5146108d9576102d4565b806344a33fd2116102345780636ddd1713116101ed57806378109e54116101c757806378109e54146107725780637d1db4a51461078757806388ea420d1461079c578063893d20e8146107b1576102d4565b80636ddd1713146106ee5780636fcba3771461070357806370a082311461073f576102d4565b806344a33fd2146105eb578063571ac8b0146106155780635c85974f146106485780635e562f3b14610672578063658d4b7f1461069e5780636b67c4df146106d9576102d4565b806318160ddd1161028657806318160ddd146104445780631ca0a28d1461045957806323b872dd146105385780632b112e491461057b5780632d48e89614610590578063313ce567146105c0576102d4565b80630445b667146102d957806306fdde031461030057806309302dc61461038a578063095ea7b3146103b65780630d29598014610403578063180b0d7e1461042f576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b506102ee610c40565b60408051918252519081900360200190f35b34801561030c57600080fd5b50610315610c46565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561034f578181015183820152602001610337565b50505050905090810190601f16801561037c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039657600080fd5b506103b4600480360360208110156103ad57600080fd5b5035610c75565b005b3480156103c257600080fd5b506103ef600480360360408110156103d957600080fd5b506001600160a01b038135169060200135610cbf565b604080519115158252519081900360200190f35b34801561040f57600080fd5b506103b46004803603602081101561042657600080fd5b50351515610d26565b34801561043b57600080fd5b506102ee610d78565b34801561045057600080fd5b506102ee610d7e565b34801561046557600080fd5b506103b46004803603606081101561047c57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156104a757600080fd5b8201836020820111156104b957600080fd5b803590602001918460208302840111640100000000831117156104db57600080fd5b9193909290916020810190356401000000008111156104f957600080fd5b82018360208201111561050b57600080fd5b8035906020019184602083028401116401000000008311171561052d57600080fd5b509092509050610d84565b34801561054457600080fd5b506103ef6004803603606081101561055b57600080fd5b506001600160a01b03813581169160208101359091169060400135611078565b34801561058757600080fd5b506102ee611117565b34801561059c57600080fd5b506103b4600480360360408110156105b357600080fd5b5080359060200135611160565b3480156105cc57600080fd5b506105d56111fc565b6040805160ff9092168252519081900360200190f35b3480156105f757600080fd5b506103b46004803603602081101561060e57600080fd5b5035611201565b34801561062157600080fd5b506103ef6004803603602081101561063857600080fd5b50356001600160a01b031661126d565b34801561065457600080fd5b506103b46004803603602081101561066b57600080fd5b503561127b565b34801561067e57600080fd5b506103b46004803603602081101561069557600080fd5b503515156112b4565b3480156106aa57600080fd5b506103b4600480360360408110156106c157600080fd5b506001600160a01b03813516906020013515156112fb565b3480156106e557600080fd5b506102ee61135a565b3480156106fa57600080fd5b506103ef611360565b34801561070f57600080fd5b506103b46004803603608081101561072657600080fd5b5080359060208101359060408101359060600135611369565b34801561074b57600080fd5b506102ee6004803603602081101561076257600080fd5b50356001600160a01b03166113cb565b34801561077e57600080fd5b506102ee6113e6565b34801561079357600080fd5b506102ee6113ec565b3480156107a857600080fd5b506102ee6113f2565b3480156107bd57600080fd5b506107c66113f8565b604080516001600160a01b039092168252519081900360200190f35b3480156107ee57600080fd5b506103ef611407565b34801561080357600080fd5b506103b46004803603604081101561081a57600080fd5b506001600160a01b038135169060200135611410565b34801561083c57600080fd5b506103b46004803603604081101561085357600080fd5b81019060208101813564010000000081111561086e57600080fd5b82018360208201111561088057600080fd5b803590602001918460208302840111640100000000831117156108a257600080fd5b91935091503515156114cb565b3480156108bb57600080fd5b50610315611554565b3480156108d057600080fd5b506102ee611571565b3480156108e557600080fd5b506103b4600480360360208110156108fc57600080fd5b5035611577565b34801561090f57600080fd5b506103b46004803603602081101561092657600080fd5b50356115bf565b34801561093957600080fd5b506103b46004803603604081101561095057600080fd5b506001600160a01b0381358116916020013516611630565b34801561097457600080fd5b506103b46004803603602081101561098b57600080fd5b5035611692565b34801561099e57600080fd5b506107c66116cb565b3480156109b357600080fd5b506103ef600480360360408110156109ca57600080fd5b506001600160a01b0381351690602001356116da565b3480156109ec57600080fd5b506103b460048036036020811015610a0357600080fd5b50356001600160a01b03166116e7565b348015610a1f57600080fd5b506103b460048036036020811015610a3657600080fd5b5035611742565b348015610a4957600080fd5b506107c661178c565b348015610a5e57600080fd5b506102ee60048036036040811015610a7557600080fd5b506001600160a01b038135811691602001351661179b565b348015610a9957600080fd5b506103b460048036036040811015610ab057600080fd5b508035151590602001356117c6565b348015610acb57600080fd5b506103b460048036036020811015610ae257600080fd5b50356001600160a01b0316611811565b348015610afe57600080fd5b506103b460048036036020811015610b1557600080fd5b50356001600160a01b0316611866565b348015610b3157600080fd5b506103b460048036036040811015610b4857600080fd5b506001600160a01b0381351690602001351515611908565b348015610b6c57600080fd5b506103b460048036036040811015610b8357600080fd5b506001600160a01b0381351690602001351515611a67565b348015610ba757600080fd5b506107c6611ac6565b348015610bbc57600080fd5b506103ef60048036036020811015610bd357600080fd5b50356001600160a01b0316611ad5565b348015610bef57600080fd5b506103ef60048036036020811015610c0657600080fd5b50356001600160a01b0316611aea565b348015610c2257600080fd5b506102ee611b08565b348015610c3757600080fd5b506103ef611b0e565b601c5481565b6040805180820190915260158152742134ba31b7b4b7102932b9b2b93b32902a37b5b2b760591b602082015290565b610c7e33611b83565b610ca9576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6103e8816005540281610cb857fe5b0460075550565b3360008181526009602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b610d2f33611b83565b610d5a576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b60188054911515600160a01b0260ff60a01b19909216919091179055565b60135481565b60055490565b610d8d33611b83565b610db8576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6001600160a01b0385163314610dcd57600080fd5b6101f58310610dfd576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b828114610e2b576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6000805b84811015610e5957838382818110610e4357fe5b6020029190910135929092019150600101610e2f565b5080610e64876113cb565b1015610e91576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b60005b84811015610fde57610ed487878784818110610eac57fe5b905060200201356001600160a01b0316868685818110610ec857fe5b90506020020135611b97565b50600e6000878784818110610ee557fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16610fd6576019546001600160a01b03166314b6ca96878784818110610f2c57fe5b905060200201356001600160a01b0316600860008a8a87818110610f4c57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610fc357600080fd5b505af1925050508015610fd4575060015b505b600101610e94565b506001600160a01b0386166000908152600e602052604090205460ff16611070576019546001600160a01b03878116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b15801561105d57600080fd5b505af192505050801561106e575060015b505b505050505050565b6001600160a01b03831660009081526009602090815260408083203384529091528120546000191461110257604080516020808201835260008083526001600160a01b03881681526009825283812033825290915291909120546110dd918490611c57565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b61110d848484611cee565b90505b9392505050565b60045460009061115b90611133906001600160a01b03166113cb565b6003546111559061114c906001600160a01b03166113cb565b600554906121ac565b906121ac565b905090565b61116933611aea565b611194576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b601954604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b1580156111e857600080fd5b505af1158015611070573d6000803e3d6000fd5b600990565b61120a33611aea565b611235576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6040514790339060648484020480156108fc02916000818181858888f19350505050158015611268573d6000803e3d6000fd5b505050565b6000610d2082600019610cbf565b61128433611aea565b6112af576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b600655565b6112bd33611b83565b6112e8576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b600a805460ff1916911515919091179055565b61130433611aea565b61132f576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60115481565b601b5460ff1681565b61137233611aea565b61139d576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b600f849055601083905560118290556113c0826113ba86866121c8565b906121c8565b601255601355505050565b6001600160a01b031660009081526008602052604090205490565b60075481565b60065481565b60105481565b6000546001600160a01b031690565b600a5460ff1681565b61141933611b83565b611444576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b600080546040805163a9059cbb60e01b81526001600160a01b0392831660048201526024810185905290519185169263a9059cbb926044808401936020939083900390910190829087803b15801561149b57600080fd5b505af11580156114af573d6000803e3d6000fd5b505050506040513d60208110156114c557600080fd5b50505050565b6114d433611b83565b6114ff576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b60005b828110156114c55781600b600086868581811061151b57fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101611502565b60408051808201909152600381526210949560ea1b602082015290565b600f5481565b61158033611aea565b6115ab576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b620b71b081106115ba57600080fd5b601a55565b6115c833611b83565b6115f3576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b600080546040516001600160a01b039091169183156108fc02918491818181858888f1935050505015801561162c573d6000803e3d6000fd5b5050565b61163933611aea565b611664576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b601580546001600160a01b039384166001600160a01b03199182161790915560168054929093169116179055565b61169b33611b83565b6116c6576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b601455565b6018546001600160a01b031681565b6000611110338484611cee565b6116f033611b83565b61171b576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b61174b33611b83565b611776576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6103e881600554028161178557fe5b0460065550565b6019546001600160a01b031681565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b6117cf33611aea565b6117fa576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b601b805460ff191692151592909217909155601c55565b61181a33611b83565b611845576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b61186f33611b83565b61189a576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b61191133611aea565b61193c576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6001600160a01b038216301480159061196357506018546001600160a01b03838116911614155b61196c57600080fd5b6001600160a01b0382166000908152600e60205260409020805460ff19168215801591909117909155611a095760195460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b1580156119ec57600080fd5b505af1158015611a00573d6000803e3d6000fd5b5050505061162c565b6019546001600160a01b03838116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b1580156111e857600080fd5b611a7033611aea565b611a9b576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6017546001600160a01b031681565b600b6020526000908152604090205460ff1681565b6001600160a01b031660009081526001602052604090205460ff1690565b60145481565b601854600160a01b900460ff1681565b600082611b2d57506000610d20565b82820282848281611b3a57fe5b0414611110576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b60006111108383604051806020016040528060008152506121fc565b6000546001600160a01b0390811691161490565b604080516020808201835260008083526001600160a01b0387168152600890915291822054611bc7918490611c57565b6001600160a01b038086166000908152600860205260408082209390935590851681522054611bf690836121c8565b6001600160a01b0380851660008181526008602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b60008184841115611ce65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611cab578181015183820152602001611c93565b50505050905090810190601f168015611cd85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b601d5460009060ff1615611d0e57611d07848484611b97565b9050611110565b6001600160a01b03841660009081526001602052604090205460ff16158015611d5057506001600160a01b03831660009081526001602052604090205460ff16155b15611d8d57601854600160a01b900460ff16611d8d576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b600a5460ff1615611e05576001600160a01b0384166000908152600b602052604090205460ff16158015611dda57506001600160a01b0383166000908152600b602052604090205460ff16155b611e05576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6001600160a01b03841660009081526001602052604090205460ff16158015611e3757506001600160a01b0383163014155b8015611e5157506003546001600160a01b03848116911614155b8015611e6b57506018546001600160a01b03848116911614155b8015611e8557506015546001600160a01b03848116911614155b8015611e9f57506016546001600160a01b03848116911614155b15611ee6576000611eaf846113cb565b90506007548382011115611ee4576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b505b611ef08483612261565b611ef86122b5565b15611f0557611f05612304565b604080516020808201835260008083526001600160a01b038816815260089091529190912054611f36918490611c57565b6001600160a01b038516600090815260086020526040812091909155611f5b856126dd565b1580611f6d5750611f6b846126dd565b155b611f9457601854611f8f90869085906001600160a01b038881169116146126fc565b611f96565b825b6001600160a01b038516600090815260086020526040902054909150611fbc90826121c8565b6001600160a01b038086166000908152600860209081526040808320949094559188168152600e909152205460ff16612060576019546001600160a01b03868116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b15801561204d57600080fd5b505af192505050801561205e575060015b505b6001600160a01b0384166000908152600e602052604090205460ff166120f1576019546001600160a01b03858116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b1580156120de57600080fd5b505af19250505080156120ef575060015b505b601954601a54604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b15801561214457600080fd5b505af1925050508015612155575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3506001949350505050565b6000611110838360405180602001604052806000815250611c57565b600082820183811015611110576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6000818361224b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611cab578181015183820152602001611c93565b50600083858161225757fe5b0495945050505050565b6006548111158061228a57506001600160a01b0382166000908152600d602052604090205460ff165b61162c576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6018546000906001600160a01b031633148015906122d65750601d5460ff16155b80156122e45750601b5460ff165b801561115b575050601c5430600090815260086020526040902054101590565b601d805460ff19166001179055601254600f54601c54600092612337926002926123319291839190611b1e565b90611b67565b9050600061235082601c546121ac90919063ffffffff16565b604080516002808252606080830184529394509091602083019080368337019050509050308160008151811061238257fe5b6001600160a01b0392831660209182029290920101526002548251911690829060019081106123ad57fe5b6001600160a01b0392831660209182029290920181019190915260175460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b8381101561244757818101518382015260200161242f565b505050509050019650505050505050600060405180830381600087803b15801561247057600080fd5b505af1158015612484573d6000803e3d6000fd5b50505050600061249d82476121ac90919063ffffffff16565b905060006124c36124ba6002600f54611b6790919063ffffffff16565b601254906121ac565b905060006124e5600261233184612331600f5488611b1e90919063ffffffff16565b905060006125028361233160105487611b1e90919063ffffffff16565b9050600061251f8461233160115488611b1e90919063ffffffff16565b9050601960009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561257157600080fd5b505af193505050508015612583575060015b506016546040516000916001600160a01b03169061753090849084818181858888f193505050503d80600081146125d6576040519150601f19603f3d011682016040523d82523d6000602084013e6125db565b606091505b5060009250508a1590506126c7576017546015546040805163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991879160c48082019260609290919082900301818588803b15801561265e57600080fd5b505af1158015612672573d6000803e3d6000fd5b50505050506040513d606081101561268957600080fd5b505060408051858152602081018c905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b5050601d805460ff191690555050505050505050565b6001600160a01b03166000908152600c602052604090205460ff161590565b6000808261270b57606461270f565b6014545b9050600061273b601354606402612331846127356012548a611b1e90919063ffffffff16565b90611b1e565b3060009081526008602052604090205490915061275890826121c8565b30600081815260086020908152604091829020939093558051848152905191926001600160a01b038a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a36127b785826121ac565b969550505050505056fea264697066735822122067a9929d29764a91c54ac6daa4d9fd97c5375ec21c1e0197d4690a1e7c9ee01364736f6c63430007040033

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

000000000000000000000000f0c2c39d1f94bcb47d48246f43f929aa0653bc93

-----Decoded View---------------
Arg [0] : _marketingWallet (address): 0xf0c2c39D1F94bCB47d48246F43F929Aa0653Bc93

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


Deployed Bytecode Sourcemap

14741:12551:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16265:56;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;17552:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18837:177;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18837:177:0;;:::i;:::-;;17974:216;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17974:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;22437:90;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22437:90:0;;;;:::i;15877:35::-;;;;;;;;;;;;;:::i;17282:88::-;;;;;;;;;;;;;:::i;26078:880::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26078:880:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26078:880:0;;-1:-1:-1;26078:880:0;-1:-1:-1;26078:880:0;:::i;18486:343::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18486:343:0;;;;;;;;;;;;;;;;;:::i;25928:142::-;;;;;;;;;;;;;:::i;25593:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25593:183:0;;;;;;;:::i;17376:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22093:215;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22093:215:0;;:::i;18198:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18198:116:0;-1:-1:-1;;;;;18198:116:0;;:::i;19200:96::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19200:96:0;;:::i;24257:99::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24257:99:0;;;;:::i;24583:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24583:120:0;;;;;;;;;;:::i;15767:32::-;;;;;;;;;;;;;:::i;16228:30::-;;;;;;;;;;;;;:::i;24847:352::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24847:352:0;;;;;;;;;;;;;;;;;:::i;17722:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17722:105:0;-1:-1:-1;;;;;17722:105:0;;:::i;15274:61::-;;;;;;;;;;;;;:::i;15208:59::-;;;;;;;;;;;;;:::i;15734:26::-;;;;;;;;;;;;;:::i;17638:78::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;17638:78:0;;;;;;;;;;;;;;15459:32;;;;;;;;;;;;;:::i;26966:141::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26966:141:0;;;;;;;;:::i;24364:210::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24364:210:0;-1:-1:-1;24364:210:0;;;;:::i;17462:84::-;;;;;;;;;;;;;:::i;15696:31::-;;;;;;;;;;;;;:::i;25784:136::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25784:136:0;;:::i;27115:110::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27115:110:0;;:::i;25207:214::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25207:214:0;;;;;;;;;;:::i;22316:113::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22316:113:0;;:::i;16079:19::-;;;;;;;;;;;;;:::i;18322:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18322:156:0;;;;;;;;:::i;6993:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6993:94:0;-1:-1:-1;;;;;6993:94:0;;:::i;19020:172::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19020:172:0;;:::i;16147:34::-;;;;;;;;;;;;;:::i;17833:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17833:133:0;;;;;;;;;;:::i;25429:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25429:156:0;;;;;;;;;:::i;7093:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7093:97:0;-1:-1:-1;;;;;7093:97:0;;:::i;7419:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7419:173:0;-1:-1:-1;;;;;7419:173:0;;:::i;23901:348::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23901:348:0;;;;;;;;;;:::i;24711:128::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24711:128:0;;;;;;;;;;:::i;16049:23::-;;;;;;;;;;;;;:::i;15498:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15498:46:0;-1:-1:-1;;;;;15498:46:0;;:::i;7306:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7306:107:0;-1:-1:-1;;;;;7306:107:0;;:::i;15921:35::-;;;;;;;;;;;;;:::i;16107:31::-;;;;;;;;;;;;;:::i;16265:56::-;;;;:::o;17552:80::-;17624:5;;;;;;;;;;;;-1:-1:-1;;;17624:5:0;;;;17552:80;:::o;18837:177::-;6865:19;6873:10;6865:7;:19::i;:::-;6857:32;;;;;-1:-1:-1;;;6857:32:0;;;;;;;;;;;;;;;;;;;;;;;19002:4:::1;18974:23;18959:12;;:38;18958:48;;;;;;18940:15;:66:::0;-1:-1:-1;18837:177:0:o;17974:216::-;18078:10;18049:4;18066:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;18066:32:0;;;;;;;;;;;:41;;;18123:37;;;;;;;18049:4;;18066:32;;18078:10;;18123:37;;;;;;;;-1:-1:-1;18178:4:0;17974:216;;;;;:::o;22437:90::-;6865:19;6873:10;6865:7;:19::i;:::-;6857:32;;;;;-1:-1:-1;;;6857:32:0;;;;;;;;;;;;;;;;;;;;;;;22500:11:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;22500:19:0::1;-1:-1:-1::0;;;;22500:19:0;;::::1;::::0;;;::::1;::::0;;22437:90::o;15877:35::-;;;;:::o;17282:88::-;17355:12;;17282:88;:::o;26078:880::-;6865:19;6873:10;6865:7;:19::i;:::-;6857:32;;;;;-1:-1:-1;;;6857:32:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26210:16:0;::::1;26216:10;26210:16;26202:25;;;::::0;::::1;;26265:3;26246:22:::0;::::1;26238:34;;;::::0;;-1:-1:-1;;;26238:34:0;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;;::::1;;26291:33:::0;;::::1;26283:45;;;::::0;;-1:-1:-1;;;26283:45:0;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;;::::1;;26341:21;26383:6:::0;26379:108:::1;26393:20:::0;;::::1;26379:108;;;26466:6;;26473:1;26466:9;;;;;;;;;::::0;;;::::1;;26450:25:::0;;;::::1;::::0;-1:-1:-1;26415:3:0::1;;26379:108;;;;26526:13;26507:15;26517:4;26507:9;:15::i;:::-;:32;;26499:45;;;::::0;;-1:-1:-1;;;26499:45:0;;::::1;;::::0;::::1;::::0;;;;;;;;;;;;;;;::::1;;26561:6;26557:269;26571:20:::0;;::::1;26557:269;;;26612:43;26627:4;26632:9;;26642:1;26632:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;26632:12:0::1;26645:6;;26652:1;26645:9;;;;;;;;;;;;;26612:14;:43::i;:::-;;26674:16;:30;26691:9;;26701:1;26691:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;26691:12:0::1;26674:30:::0;;-1:-1:-1;26674:30:0;::::1;::::0;;;;;;-1:-1:-1;26674:30:0;;::::1;;26670:145;;26729:11;::::0;-1:-1:-1;;;;;26729:11:0::1;:20;26750:9:::0;;26760:1;26750:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;26750:12:0::1;26764:9;:23;26774:9;;26784:1;26774:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;26774:12:0::1;-1:-1:-1::0;;;;;26764:23:0::1;-1:-1:-1::0;;;;;26764:23:0::1;;;;;;;;;;;;;26729:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;26729:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;26725:75:::0;::::1;26593:3;;26557:269;;;-1:-1:-1::0;;;;;;26842:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;26838:113;;26885:11;::::0;-1:-1:-1;;;;;26912:15:0;;::::1;26885:11;26912:15:::0;;;:9:::1;:15;::::0;;;;;;26885:43;;-1:-1:-1;;;26885:43:0;;::::1;::::0;::::1;::::0;;;;;;;;;:11;;;::::1;::::0;:20:::1;::::0;:43;;;;;;;;;;:11;;:43;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;;;26881:59:::0;::::1;6891:1;26078:880:::0;;;;;:::o;18486:343::-;-1:-1:-1;;;;;18606:19:0;;18586:4;18606:19;;;:11;:19;;;;;;;;18626:10;18606:31;;;;;;;;-1:-1:-1;;18606:46:0;18603:158;;18702:47;;;;;;;;;-1:-1:-1;18702:47:0;;;-1:-1:-1;;;;;18702:19:0;;;;:11;:19;;;;;18722:10;18702:31;;;;;;;;;;:47;;18738:6;;18702:35;:47::i;:::-;-1:-1:-1;;;;;18668:19:0;;;;;;:11;:19;;;;;;;;18688:10;18668:31;;;;;;;:81;18603:158;18781:40;18795:6;18803:9;18814:6;18781:13;:40::i;:::-;18774:47;;18486:343;;;;;;:::o;25928:142::-;26056:4;;25981:7;;26008:54;;26046:15;;-1:-1:-1;;;;;26056:4:0;26046:9;:15::i;:::-;26035:4;;26008:33;;26025:15;;-1:-1:-1;;;;;26035:4:0;26025:9;:15::i;:::-;26008:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;26001:61;;25928:142;:::o;25593:183::-;6947:24;6960:10;6947:12;:24::i;:::-;6939:37;;;;;-1:-1:-1;;;6939:37:0;;;;;;;;;;;;;;;;;;;;;;;25703:11:::1;::::0;:65:::1;::::0;;-1:-1:-1;;;25703:65:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;-1:-1:-1;;;;;25703:11:0;;::::1;::::0;:35:::1;::::0;:65;;;;;:11:::1;::::0;:65;;;;;;;;:11;;:65;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;17376:80:::0;15141:1;17376:80;:::o;22093:215::-;6947:24;6960:10;6947:12;:24::i;:::-;6939:37;;;;;-1:-1:-1;;;6939:37:0;;;;;;;;;;;;;;;;;;;;;;;22236:64:::1;::::0;22204:21:::1;::::0;22244:10:::1;::::0;22296:3:::1;22265:28:::0;;::::1;:34;22236:64:::0;::::1;;;::::0;::::1;::::0;;;22265:34;22244:10;22236:64;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;6978:1;22093:215:::0;:::o;18198:116::-;18253:4;18277:29;18285:7;-1:-1:-1;;18277:7:0;:29::i;19200:96::-;6947:24;6960:10;6947:12;:24::i;:::-;6939:37;;;;;-1:-1:-1;;;6939:37:0;;;;;;;;;;;;;;;;;;;;;;;19267:12:::1;:21:::0;19200:96::o;24257:99::-;6865:19;6873:10;6865:7;:19::i;:::-;6857:32;;;;;-1:-1:-1;;;6857:32:0;;;;;;;;;;;;;;;;;;;;;;;24325:13:::1;:23:::0;;-1:-1:-1;;24325:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24257:99::o;24583:120::-;6947:24;6960:10;6947:12;:24::i;:::-;6939:37;;;;;-1:-1:-1;;;6939:37:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24667:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;24667:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24583:120::o;15767:32::-;;;;:::o;16228:30::-;;;;;;:::o;24847:352::-;6947:24;6960:10;6947:12;:24::i;:::-;6939:37;;;;;-1:-1:-1;;;6939:37:0;;;;;;;;;;;;;;;;;;;;;;;24984:12:::1;:28:::0;;;25023:7:::1;:18:::0;;;25052:12:::1;:28:::0;;;25102:46:::1;25067:13:::0;25102:27:::1;24999:13:::0;25033:8;25102:17:::1;:27::i;:::-;:31:::0;::::1;:46::i;:::-;25091:8;:57:::0;25159:14:::1;:32:::0;-1:-1:-1;;;24847:352:0:o;17722:105::-;-1:-1:-1;;;;;17806:18:0;17788:7;17806:18;;;:9;:18;;;;;;;17722:105::o;15274:61::-;;;;:::o;15208:59::-;;;;:::o;15734:26::-;;;;:::o;17638:78::-;17690:7;17708:5;-1:-1:-1;;;;;17708:5:0;17638:78;:::o;15459:32::-;;;;;;:::o;26966:141::-;6865:19;6873:10;6865:7;:19::i;:::-;6857:32;;;;;-1:-1:-1;;;6857:32:0;;;;;;;;;;;;;;;;;;;;;;;27085:5:::1;::::0;;27055:44:::1;::::0;;-1:-1:-1;;;27055:44:0;;-1:-1:-1;;;;;27085:5:0;;::::1;27055:44;::::0;::::1;::::0;;;;;;;;;:29;;::::1;::::0;::::1;::::0;:44;;;;;::::1;::::0;;;;;;;;;;;:29;:44;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;;;26966:141:0:o;24364:210::-;6865:19;6873:10;6865:7;:19::i;:::-;6857:32;;;;;-1:-1:-1;;;6857:32:0;;;;;;;;;;;;;;;;;;;;;;;24466:9:::1;24461:106;24477:20:::0;;::::1;24461:106;;;24549:6;24519:13;:27;24533:9;;24543:1;24533:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;24533:12:0::1;24519:27:::0;;-1:-1:-1;24519:27:0;::::1;::::0;;;;;;-1:-1:-1;24519:27:0;:36;;-1:-1:-1;;24519:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;24499:3:0::1;24461:106;;17462:84:::0;17536:7;;;;;;;;;;;;-1:-1:-1;;;17536:7:0;;;;17462:84;:::o;15696:31::-;;;;:::o;25784:136::-;6947:24;6960:10;6947:12;:24::i;:::-;6939:37;;;;;-1:-1:-1;;;6939:37:0;;;;;;;;;;;;;;;;;;;;;;;25874:6:::1;25868:3;:12;25860:21;;;::::0;::::1;;25892:14;:20:::0;25784:136::o;27115:110::-;6865:19;6873:10;6865:7;:19::i;:::-;6857:32;;;;;-1:-1:-1;;;6857:32:0;;;;;;;;;;;;;;;;;;;;;;;27191:5:::1;::::0;;27183:34:::1;::::0;-1:-1:-1;;;;;27191:5:0;;::::1;::::0;27183:34;::::1;;;::::0;27207:9;;27183:34;27191:5;27183:34;27207:9;27191:5;27183:34;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;27115:110:::0;:::o;25207:214::-;6947:24;6960:10;6947:12;:24::i;:::-;6939:37;;;;;-1:-1:-1;;;6939:37:0;;;;;;;;;;;;;;;;;;;;;;;25322:21:::1;:46:::0;;-1:-1:-1;;;;;25322:46:0;;::::1;-1:-1:-1::0;;;;;;25322:46:0;;::::1;;::::0;;;25379:15:::1;:34:::0;;;;;::::1;::::0;::::1;;::::0;;25207:214::o;22316:113::-;6865:19;6873:10;6865:7;:19::i;:::-;6857:32;;;;;-1:-1:-1;;;6857:32:0;;;;;;;;;;;;;;;;;;;;;;;22393:14:::1;:28:::0;22316:113::o;16079:19::-;;;-1:-1:-1;;;;;16079:19:0;;:::o;18322:156::-;18402:4;18426:44;18440:10;18452:9;18463:6;18426:13;:44::i;6993:94::-;6865:19;6873:10;6865:7;:19::i;:::-;6857:32;;;;;-1:-1:-1;;;6857:32:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7053:19:0::1;;::::0;;;7075:4:::1;7053:19;::::0;;;;;;;:26;;-1:-1:-1;;7053:26:0::1;::::0;;::::1;::::0;;6993:94::o;19020:172::-;6865:19;6873:10;6865:7;:19::i;:::-;6857:32;;;;;-1:-1:-1;;;6857:32:0;;;;;;;;;;;;;;;;;;;;;;;19180:4:::1;19151:24;19136:12;;:39;19135:49;;;;;;19120:12;:64:::0;-1:-1:-1;19020:172:0:o;16147:34::-;;;-1:-1:-1;;;;;16147:34:0;;:::o;17833:133::-;-1:-1:-1;;;;;17935:19:0;;;17917:7;17935:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;17833:133::o;25429:156::-;6947:24;6960:10;6947:12;:24::i;:::-;6939:37;;;;;-1:-1:-1;;;6939:37:0;;;;;;;;;;;;;;;;;;;;;;;25521:11:::1;:22:::0;;-1:-1:-1;;25521:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;25554:13:::1;:23:::0;25429:156::o;7093:97::-;6865:19;6873:10;6865:7;:19::i;:::-;6857:32;;;;;-1:-1:-1;;;6857:32:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7155:19:0::1;7177:5;7155:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;7155:27:0::1;::::0;;7093:97::o;7419:173::-;6865:19;6873:10;6865:7;:19::i;:::-;6857:32;;;;;-1:-1:-1;;;6857:32:0;;;;;;;;;;;;;;;;;;;;;;;7495:5:::1;:11:::0;;-1:-1:-1;;;;;;7495:11:0::1;-1:-1:-1::0;;;;;7495:11:0;::::1;::::0;;::::1;::::0;;7517:19;;;-1:-1:-1;7517:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;7517:26:0::1;::::0;;::::1;::::0;;;7559:25;;;;;;;::::1;::::0;;;;;;;;;::::1;7419:173:::0;:::o;23901:348::-;6947:24;6960:10;6947:12;:24::i;:::-;6939:37;;;;;-1:-1:-1;;;6939:37:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23998:23:0;::::1;24016:4;23998:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;24035:4:0::1;::::0;-1:-1:-1;;;;;24025:14:0;;::::1;24035:4:::0;::::1;24025:14;;23998:41;23990:50;;;::::0;::::1;;-1:-1:-1::0;;;;;24051:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;24051:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;24095:147:::1;;24120:11;::::0;:31:::1;::::0;;-1:-1:-1;;;24120:31:0;;-1:-1:-1;;;;;24120:31:0;;::::1;;::::0;::::1;::::0;:11:::1;:31:::0;;;;;;;;:11;::::1;::::0;:20:::1;::::0;:31;;;;;:11;;:31;;;;;;:11;;:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24095:147;;;24183:11;::::0;-1:-1:-1;;;;;24212:17:0;;::::1;24183:11;24212:17:::0;;;:9:::1;:17;::::0;;;;;;24183:47;;-1:-1:-1;;;24183:47:0;;::::1;::::0;::::1;::::0;;;;;;;;;:11;;;::::1;::::0;:20:::1;::::0;:47;;;;;;;;;;:11;;:47;::::1;;::::0;::::1;;;;::::0;::::1;24711:128:::0;6947:24;6960:10;6947:12;:24::i;:::-;6939:37;;;;;-1:-1:-1;;;6939:37:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24799:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;24799:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24711:128::o;16049:23::-;;;-1:-1:-1;;;;;16049:23:0;;:::o;15498:46::-;;;;;;;;;;;;;;;:::o;7306:107::-;-1:-1:-1;;;;;7386:19:0;7362:4;7386:19;;;:14;:19;;;;;;;;;7306:107::o;15921:35::-;;;;:::o;16107:31::-;;;-1:-1:-1;;;16107:31:0;;;;;:::o;5162:213::-;5220:7;5244:6;5240:47;;-1:-1:-1;5274:1:0;5267:8;;5240:47;5309:5;;;5313:1;5309;:5;:1;5333:5;;;;;:10;5325:23;;;;;-1:-1:-1;;;5325:23:0;;;;;;;;;;;;;;;;;;;;;;5381:106;5439:7;5466:13;5470:1;5473;5466:13;;;;;;;;;;;;:3;:13::i;7196:104::-;7252:4;7287:5;-1:-1:-1;;;;;7287:5:0;;;7276:16;;;;7196:104::o;20852:310::-;20982:33;;;;;;;;;20945:4;20982:33;;;-1:-1:-1;;;;;20982:17:0;;;;:9;:17;;;;;;;:33;;21004:6;;20982:21;:33::i;:::-;-1:-1:-1;;;;;20962:17:0;;;;;;;:9;:17;;;;;;:53;;;;21049:20;;;;;;;:32;;21074:6;21049:24;:32::i;:::-;-1:-1:-1;;;;;21026:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;21097:35;;;;;;;21026:20;;21097:35;;;;;;;;;;;;;-1:-1:-1;21150:4:0;20852:310;;;;;:::o;4966:190::-;5052:7;5088:12;5080:6;;;;5072:29;;;;-1:-1:-1;;;5072:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5124:5:0;;;4966:190::o;19304:1540::-;19416:6;;19396:4;;19416:6;;19413:63;;;19432:41;19447:6;19455:9;19466:6;19432:14;:41::i;:::-;19425:48;;;;19413:63;-1:-1:-1;;;;;19493:22:0;;;;;;:14;:22;;;;;;;;19492:23;:53;;;;-1:-1:-1;;;;;;19520:25:0;;;;;;:14;:25;;;;;;;;19519:26;19492:53;19489:107;;;19569:11;;-1:-1:-1;;;19569:11:0;;;;19561:23;;;;;-1:-1:-1;;;19561:23:0;;;;;;;;;;;;;;;;;;;;;;;19611:13;;;;19608:107;;;-1:-1:-1;;;;;19649:21:0;;;;;;:13;:21;;;;;;;;19648:22;:51;;;;-1:-1:-1;;;;;;19675:24:0;;;;;;:13;:24;;;;;;;;19674:25;19648:51;19640:63;;;;;-1:-1:-1;;;19640:63:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19732:22:0;;;;;;:14;:22;;;;;;;;19731:23;:53;;;;-1:-1:-1;;;;;;19758:26:0;;19779:4;19758:26;;19731:53;:84;;;;-1:-1:-1;19810:4:0;;-1:-1:-1;;;;;19789:26:0;;;19810:4;;19789:26;;19731:84;:105;;;;-1:-1:-1;19832:4:0;;-1:-1:-1;;;;;19819:17:0;;;19832:4;;19819:17;;19731:105;:143;;;;-1:-1:-1;19853:21:0;;-1:-1:-1;;;;;19840:34:0;;;19853:21;;19840:34;;19731:143;:175;;;;-1:-1:-1;19891:15:0;;-1:-1:-1;;;;;19878:28:0;;;19891:15;;19878:28;;19731:175;19727:305;;;19922:18;19943:20;19953:9;19943;:20::i;:::-;19922:41;;20011:15;;20000:6;19987:10;:19;19986:40;;19978:52;;;;;-1:-1:-1;;;19978:52:0;;;;;;;;;;;;;;;;;;;;;;;19727:305;;20051:28;20064:6;20072;20051:12;:28::i;:::-;20095:16;:14;:16::i;:::-;20092:35;;;20114:10;:8;:10::i;:::-;20159:33;;;;;;;;;-1:-1:-1;20159:33:0;;;-1:-1:-1;;;;;20159:17:0;;;;:9;:17;;;;;;;;:33;;20181:6;;20159:21;:33::i;:::-;-1:-1:-1;;;;;20139:17:0;;;;;;:9;:17;;;;;:53;;;;20232:21;20149:6;20232:13;:21::i;:::-;20231:22;:51;;;;20258:24;20272:9;20258:13;:24::i;:::-;20257:25;20231:51;20230:108;;20332:4;;20295:43;;20303:6;;20311;;-1:-1:-1;;;;;20319:17:0;;;20332:4;;20319:17;20295:7;:43::i;:::-;20230:108;;;20286:6;20230:108;-1:-1:-1;;;;;20372:20:0;;;;;;:9;:20;;;;;;20205:133;;-1:-1:-1;20372:40:0;;20205:133;20372:24;:40::i;:::-;-1:-1:-1;;;;;20349:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;20435:24;;;;;:16;:24;;;;;;;20431:119;;20480:11;;-1:-1:-1;;;;;20509:17:0;;;20480:11;20509:17;;;:9;:17;;;;;;;20480:47;;-1:-1:-1;;;20480:47:0;;;;;;;;;;;;;;:11;;;;;:20;;:47;;;;;;;;;;:11;;:47;;;;;;;;;;;;;;;;;;;;;;;;;20476:63;;-1:-1:-1;;;;;20566:27:0;;;;;;:16;:27;;;;;;;;20562:128;;20614:11;;-1:-1:-1;;;;;20646:20:0;;;20614:11;20646:20;;;:9;:20;;;;;;;20614:53;;-1:-1:-1;;;20614:53:0;;;;;;;;;;;;;;:11;;;;;:20;;:53;;;;;;;;;;:11;;:53;;;;;;;;;;;;;;;;;;;;;;;;;20610:69;;20707:11;;20727:14;;20707:35;;;-1:-1:-1;;;;;;20707:35:0;;;;;;;;;;-1:-1:-1;;;;;20707:11:0;;;;:19;;:35;;;;;:11;;:35;;;;;;;;:11;;:35;;;;;;;;;;;;;;;;;;;;;;;;;20703:51;20788:9;-1:-1:-1;;;;;20771:43:0;20780:6;-1:-1:-1;;;;;20771:43:0;;20799:14;20771:43;;;;;;;;;;;;;;;;;;-1:-1:-1;20832:4:0;;19304:1540;-1:-1:-1;;;;19304:1540:0:o;4854:106::-;4912:7;4939:13;4943:1;4946;4939:13;;;;;;;;;;;;:3;:13::i;4696:152::-;4754:7;4786:5;;;4810:6;;;;4802:19;;;;;-1:-1:-1;;;4802:19:0;;;;;;;;;;;;;;;;;;;;;;5493:189;5579:7;5614:12;5607:5;5599:28;;;;-1:-1:-1;;;5599:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5638:9;5654:1;5650;:5;;;;;;;5493:189;-1:-1:-1;;;;;5493:189:0:o;21170:149::-;21267:12;;21257:6;:22;;:49;;;-1:-1:-1;;;;;;21283:23:0;;;;;;:15;:23;;;;;;;;21257:49;21249:62;;;;;-1:-1:-1;;;21249:62:0;;;;;;;;;;;;;;;;;;;;;;21888:197;21975:4;;21937;;-1:-1:-1;;;;;21975:4:0;21961:10;:18;;;;:38;;-1:-1:-1;21993:6:0;;;;21992:7;21961:38;:62;;;;-1:-1:-1;22012:11:0;;;;21961:62;:116;;;;-1:-1:-1;;22064:13:0;;22054:4;22036:24;;;;:9;:24;;;;;;:41;;;21888:197::o;22536:1357::-;16370:6;:13;;-1:-1:-1;;16370:13:0;16379:4;16370:13;;;22647:8:::1;::::0;22629:12:::1;::::0;22611:13:::1;::::0;16370:6;;22611:52:::1;::::0;22661:1:::1;::::0;22611:45:::1;::::0;22647:8;22611:45;;:13;:17:::1;:31::i;:::-;:35:::0;::::1;:45::i;:52::-;22585:78;;22674:20;22697:34;22715:15;22697:13;;:17;;:34;;;;:::i;:::-;22768:16;::::0;;22782:1:::1;22768:16:::0;;;22744:21:::1;22768:16:::0;;::::1;::::0;;22674:57;;-1:-1:-1;22768:16:0;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22768:16:0::1;22744:40;;22813:4;22795;22800:1;22795:7;;;;;;;;-1:-1:-1::0;;;;;22795:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;22839:4:::1;::::0;22829:7;;22839:4;::::1;::::0;22829;;22839;;22829:7;::::1;;;;;-1:-1:-1::0;;;;;22829:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;22914:6:::1;::::0;:112:::1;::::0;-1:-1:-1;;;22914:112:0;;::::1;::::0;::::1;::::0;;;22856:21:::1;22914:112:::0;;;;;;23003:4:::1;22914:112:::0;;;;;;23010:15:::1;22914:112:::0;;;;;;;;;;;;;;;;;;;;;22880:21:::1;::::0;22914:6;;;::::1;::::0;:57:::1;::::0;22972:12;;22856:21;;22989:4;;22914:112;;;;;;;;;;::::1;::::0;::::1;::::0;;;22856:21;22914:112:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23039:17;23059:40;23085:13;23059:21;:25;;:40;;;;:::i;:::-;23039:60;;23112:19;23134:33;23147:19;23164:1;23147:12;;:16;;:19;;;;:::i;:::-;23134:8;::::0;;:12:::1;:33::i;:::-;23112:55;;23180:26;23209:51;23258:1;23209:44;23241:11;23209:27;23223:12;;23209:9;:13;;:27;;;;:::i;:51::-;23180:80;;23271:23;23297:39;23324:11;23297:22;23311:7;;23297:9;:13;;:22;;;;:::i;:39::-;23271:65;;23347:26;23376:44;23408:11;23376:27;23390:12;;23376:9;:13;;:27;;;;:::i;:44::-;23347:73;;23437:11;;;;;;;;;-1:-1:-1::0;;;;;23437:11:0::1;-1:-1:-1::0;;;;;23437:19:0::1;;23464:15;23437:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;23433:61:::0;23535:15:::1;::::0;23527:72:::1;::::0;23507:15:::1;::::0;-1:-1:-1;;;;;23535:15:0::1;::::0;23589:5:::1;::::0;23564:18;;23507:15;23527:72;23507:15;23527:72;23564:18;23535:15;23589:5;23527:72:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;23623:5:0::1;::::0;-1:-1:-1;;23644:19:0;;;-1:-1:-1;23641:245:0::1;;23679:6;::::0;23767:21:::1;::::0;23679:127:::1;::::0;;-1:-1:-1;;;23679:127:0;;23737:4:::1;23679:127;::::0;::::1;::::0;;;;;;;:6:::1;:127:::0;;;;;;;;;;-1:-1:-1;;;;;23767:21:0;;::::1;23679:127:::0;;;;23790:15:::1;23679:127:::0;;;;;;:6;;;::::1;::::0;:22:::1;::::0;23709:18;;23679:127;;;;;::::1;::::0;;;;;;;;;23709:18;23679:6;:127;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;23679:127:0;23826:48;;;;;23679:127:::1;23826:48:::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;23641:245;-1:-1:-1::0;;16388:6:0;:14;;-1:-1:-1;;16388:14:0;;;-1:-1:-1;;;;;;;;22536:1357:0:o;21327:114::-;-1:-1:-1;;;;;21414:19:0;21389:4;21414:19;;;:11;:19;;;;;;;;21413:20;;21327:114::o;21449:431::-;21529:7;21551:18;21572:6;:29;;21598:3;21572:29;;;21581:14;;21572:29;21551:50;;21612:17;21632:62;21673:14;;21690:3;21673:20;21632:36;21657:10;21632:20;21643:8;;21632:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:62::-;21752:4;21734:24;;;;:9;:24;;;;;;21612:82;;-1:-1:-1;21734:39:0;;21612:82;21734:28;:39::i;:::-;21725:4;21707:24;;;;:9;:24;;;;;;;;;:66;;;;21789:42;;;;;;;21725:4;;-1:-1:-1;;;;;21789:42:0;;;;;;;;;;;;;21851:21;:6;21862:9;21851:10;:21::i;:::-;21844:28;21449:431;-1:-1:-1;;;;;;21449:431:0:o

Swarm Source

ipfs://2813fd99ca1a858f8b11249e6f7aaee69c125d9c2b040b23ede8f91d7d32fc1c

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

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.