Contract 0x044aDcc679AA49051B529d132050c667243036ff

 

Contract Overview

Balance:
0.00009927409508554 BNB

BNB Value:
$0.05 (@ $466.51/BNB)

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x804ab21922c33153aa06ebd5812b5bffcb8723502331cf8e3cb3976067f1d989Approve143764822022-01-15 3:41:073 days 7 hrs ago0xda7a99774d32f98cc1c915b87709fcbb4e31ab89 IN  0x044adcc679aa49051b529d132050c667243036ff0 BNB0.000221565
0x16066567c4199b3ecee8ea0bd6dd796214cce0091e4ee58058478f43bdce51ddTransfer Ownersh...143764612022-01-15 3:40:043 days 7 hrs ago0x467730ac562f7f5af56d20f17756828adfac5a43 IN  0x044adcc679aa49051b529d132050c667243036ff0 BNB0.000251005
0x3eea8bbb360101144ea79d4a86d0aabe3cdc11de6c0ea1e597d07af7c1097963Approve143764542022-01-15 3:39:433 days 7 hrs ago0xbcf29249f111707bad5e1af103b9bf7a68421473 IN  0x044adcc679aa49051b529d132050c667243036ff0 BNB0.000310191
0x9f05c74e8e3f6ec068c9ab24fcfcc6ef54ae4958b0d850edaeb27076da2b82b6Approve143764292022-01-15 3:38:283 days 7 hrs ago0xa6364afb914792fe81e0810d5f471be172079f7b IN  0x044adcc679aa49051b529d132050c667243036ff0 BNB0.00026720739
0xfbc768c556f7c301f0a432b1e3fe39ca967888d5bec7ff35c2e17452c846cb1bApprove143764292022-01-15 3:38:283 days 7 hrs ago0x9878fd1fc944a83ca168a6293c51b34f8eb0edad IN  0x044adcc679aa49051b529d132050c667243036ff0 BNB0.00026720739
0x638c248550eafc8141b0a86de46fad4b4b64f7158e25536563a018ef21d47e66Approve143764282022-01-15 3:38:253 days 7 hrs ago0xf1aeed25962905e7fa95655787f9673e1f66feb5 IN  0x044adcc679aa49051b529d132050c667243036ff0 BNB0.000310191
0x6e74f9517d27972d08f6b9c4c0c2b1c9ee0946bba7bd672d8444a266855203dfApprove143764272022-01-15 3:38:223 days 7 hrs ago0xeb289f4573cec7b00bcb73322fa125dfccc33963 IN  0x044adcc679aa49051b529d132050c667243036ff0 BNB0.000221565
0xd8bdbf5a846b835d3a0dbef67fbe06dde9a69dadfddaf4eefb2ec02103e93badApprove143763972022-01-15 3:36:523 days 7 hrs ago0x467730ac562f7f5af56d20f17756828adfac5a43 IN  0x044adcc679aa49051b529d132050c667243036ff0 BNB0.000310191
0xb5849f6eb50053adf3bdd22057f9b3873f680a16c5415c025389239749dc10caTransfer143763722022-01-15 3:35:373 days 7 hrs ago0x467730ac562f7f5af56d20f17756828adfac5a43 IN  0x044adcc679aa49051b529d132050c667243036ff0 BNB0.001019995
0x6f565a1638c75dc9206783018db15739cd34625306f22a845670187cac864735Set Tx Limit143763662022-01-15 3:35:193 days 7 hrs ago0x467730ac562f7f5af56d20f17756828adfac5a43 IN  0x044adcc679aa49051b529d132050c667243036ff0 BNB0.000142855
0x376c8c0a328b87e9db115a54424e7069b2fd2479bba967821735f97d7afc78640x60806040143763302022-01-15 3:33:313 days 7 hrs ago0x467730ac562f7f5af56d20f17756828adfac5a43 IN  Create: SAFEATH0 BNB0.03738224
[ Download CSV Export 
Latest 22 internal transactions
Parent Txn Hash Block From To Value
0xcf89d6cf604dc22330f9518c6abccc6a990e7434a0f0f88cabf2656c52173608143765612022-01-15 3:45:043 days 7 hrs ago PancakeSwap: Router v2 0x044adcc679aa49051b529d132050c667243036ff0.000000001572050399 BNB
0xcf89d6cf604dc22330f9518c6abccc6a990e7434a0f0f88cabf2656c52173608143765612022-01-15 3:45:043 days 7 hrs ago 0x044adcc679aa49051b529d132050c667243036ff PancakeSwap: Router v20.000000204036275002 BNB
0xcf89d6cf604dc22330f9518c6abccc6a990e7434a0f0f88cabf2656c52173608143765612022-01-15 3:45:043 days 7 hrs ago PancakeSwap: Router v2 0x044adcc679aa49051b529d132050c667243036ff0.000000204036275002 BNB
0xd7440e20b4f5571d8fba1871ad2b89d43e5e5e33ef58504f6b767e56ffe8671d143765492022-01-15 3:44:283 days 7 hrs ago PancakeSwap: Router v2 0x044adcc679aa49051b529d132050c667243036ff0.000000012770393048 BNB
0xd7440e20b4f5571d8fba1871ad2b89d43e5e5e33ef58504f6b767e56ffe8671d143765492022-01-15 3:44:283 days 7 hrs ago 0x044adcc679aa49051b529d132050c667243036ff PancakeSwap: Router v20.000000740494708848 BNB
0xd7440e20b4f5571d8fba1871ad2b89d43e5e5e33ef58504f6b767e56ffe8671d143765492022-01-15 3:44:283 days 7 hrs ago PancakeSwap: Router v2 0x044adcc679aa49051b529d132050c667243036ff0.000000740494708848 BNB
0xd7015fbb600f76ac4524c7548b107780abe2596bd6928678c7f75da1cb5ee500143765492022-01-15 3:44:283 days 7 hrs ago PancakeSwap: Router v2 0x044adcc679aa49051b529d132050c667243036ff0.000017734400540581 BNB
0xd7015fbb600f76ac4524c7548b107780abe2596bd6928678c7f75da1cb5ee500143765492022-01-15 3:44:283 days 7 hrs ago 0x044adcc679aa49051b529d132050c667243036ff PancakeSwap: Router v20.000080090699576039 BNB
0xd7015fbb600f76ac4524c7548b107780abe2596bd6928678c7f75da1cb5ee500143765492022-01-15 3:44:283 days 7 hrs ago PancakeSwap: Router v2 0x044adcc679aa49051b529d132050c667243036ff0.000080090699576039 BNB
0xb1490dae1865376c00143e043018bd90e260d7ebf5d6967dec2eca74b8a30267143765482022-01-15 3:44:253 days 7 hrs ago 0x044adcc679aa49051b529d132050c667243036ff PancakeSwap: Router v20.000106700949044067 BNB
0xb1490dae1865376c00143e043018bd90e260d7ebf5d6967dec2eca74b8a30267143765482022-01-15 3:44:253 days 7 hrs ago PancakeSwap: Router v2 0x044adcc679aa49051b529d132050c667243036ff0.000106700949044067 BNB
0xeee72a18b4991f88a4b4f374c59d31151b138fc0386be686652d4a6baacae8a6143765482022-01-15 3:44:253 days 7 hrs ago 0x044adcc679aa49051b529d132050c667243036ff PancakeSwap: Router v20.00011039094215805 BNB
0xeee72a18b4991f88a4b4f374c59d31151b138fc0386be686652d4a6baacae8a6143765482022-01-15 3:44:253 days 7 hrs ago PancakeSwap: Router v2 0x044adcc679aa49051b529d132050c667243036ff0.00011039094215805 BNB
0x56e819d8f5a1e94d56623ca35bd054fb0b4214318bbaad056b7d050ba8f0ca98143765482022-01-15 3:44:253 days 7 hrs ago 0x044adcc679aa49051b529d132050c667243036ff PancakeSwap: Router v20.000115634736269132 BNB
0x56e819d8f5a1e94d56623ca35bd054fb0b4214318bbaad056b7d050ba8f0ca98143765482022-01-15 3:44:253 days 7 hrs ago PancakeSwap: Router v2 0x044adcc679aa49051b529d132050c667243036ff0.000115634736269132 BNB
0x6e726e0a66cc84ccbddc759e6458e04af49454306c597a460492288e0495c8c0143765432022-01-15 3:44:103 days 7 hrs ago 0x044adcc679aa49051b529d132050c667243036ff0x467730ac562f7f5af56d20f17756828adfac5a430.000065220281681208 BNB
0x6e726e0a66cc84ccbddc759e6458e04af49454306c597a460492288e0495c8c0143765432022-01-15 3:44:103 days 7 hrs ago 0x044adcc679aa49051b529d132050c667243036ff 0xfb70efaf71a5b9a5fdaef42a7f25c6128144eb1f0.000097830422521813 BNB
0x6e726e0a66cc84ccbddc759e6458e04af49454306c597a460492288e0495c8c0143765432022-01-15 3:44:103 days 7 hrs ago PancakeSwap: Router v2 0x044adcc679aa49051b529d132050c667243036ff0.000244576056304533 BNB
0x8383e7b3c3fe06da7be82d6b77e9af482278486936d14e43d78ceed9d9071ee9143764242022-01-15 3:38:133 days 7 hrs ago 0x044adcc679aa49051b529d132050c667243036ff0x467730ac562f7f5af56d20f17756828adfac5a430.000043423731468028 BNB
0x8383e7b3c3fe06da7be82d6b77e9af482278486936d14e43d78ceed9d9071ee9143764242022-01-15 3:38:133 days 7 hrs ago 0x044adcc679aa49051b529d132050c667243036ff 0xfb70efaf71a5b9a5fdaef42a7f25c6128144eb1f0.000065135597202043 BNB
0x8383e7b3c3fe06da7be82d6b77e9af482278486936d14e43d78ceed9d9071ee9143764242022-01-15 3:38:133 days 7 hrs ago PancakeSwap: Router v2 0x044adcc679aa49051b529d132050c667243036ff0.000162838993005108 BNB
0x376c8c0a328b87e9db115a54424e7069b2fd2479bba967821735f97d7afc7864143763302022-01-15 3:33:313 days 7 hrs ago 0x044adcc679aa49051b529d132050c667243036ff  Contract Creation0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SAFEATH

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2022-01-15
*/

/**
 * Hello BSC Community
 * 
 * TG: https://t.me/SafeATH
 * 
 * 
 * Safe ATH token was created to reward holders progressively in terms of tokens starting from a small percentage of rewards to a high percentage.
In essence, the longer you hold the more you earn.
 * 
 * Thank You, you are all the best
*/

//SPDX-License-Identifier: MIT

pragma solidity ^0.7.4;


/**
 * Standard SafeMath, stripped down to just add/sub/mul/div
 */
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

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

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

/**
 * BEP20 standard interface.
 */
interface IBEP20 {
    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);
}

/**
 * Allows for contract ownership along with multi-address authorization
 */
abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
        emit Authorized(adr);
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
        emit Unauthorized(adr);
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
    event Authorized(address adr);
    event Unauthorized(address adr);
}

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

interface IDEXRouter {
    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 IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IBEP20 Doge = IBEP20(0xbA2aE424d960c26247Dd6c32edC70B295c744C43);
    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
    IDEXRouter 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 = 30 minutes;
    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)
        ? IDEXRouter(_router)
        : IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        _token = msg.sender;
    }

    function getShareholderInfo(address shareholder) external view returns (uint256, uint256, uint256, uint256) {
        return (
            totalShares,
            totalDistributed,
            shares[shareholder].amount,
            shares[shareholder].totalRealised
        );
    }

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

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        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);
        
        emit ShareUpdated(shareholder, amount);
    }

    function deposit() external payable override {
        uint256 balanceBefore = Doge.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = WBNB;
        path[1] = address(Doge);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = Doge.balanceOf(address(this)).sub(balanceBefore);

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
        
        emit Deposit(msg.value, amount);
    }

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

        if(shareholderCount == 0) { return; }

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

        uint256 iterations = 0;
        uint256 count = 0;

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

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

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
        
        emit DividendsProcessed(iterations, count, currentIndex);
    }

    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);
            Doge.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
            
            emit Distribution(shareholder, amount);
        }
    }

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

    function claimDividendFor(address shareholder) external {
        distributeDividend(shareholder);
    }

    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();
    }
    
    event DistributionCriteriaUpdated(uint256 minPeriod, uint256 minDistribution);
    event ShareUpdated(address shareholder, uint256 amount);
    event Deposit(uint256 amountBNB, uint256 amountDoge);
    event Distribution(address shareholder, uint256 amount);
    event DividendsProcessed(uint256 iterations, uint256 count, uint256 index);
}

contract SAFEATH is IBEP20, Auth {
    using SafeMath for uint256;

    address Doge = 0xbA2aE424d960c26247Dd6c32edC70B295c744C43;
    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
    address DEAD = 0x000000000000000000000000000000000000dEaD;

    string constant _name = "Safe ATH";
    string constant _symbol = "SATH";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1000000000000000 * (10 ** _decimals); // 1,000,000,000,000,000
    uint256 public _maxTxAmount = _totalSupply / 200; //1000 0.1% 
    uint256 public _maxWallet = _totalSupply / 50; // 2%


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

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


    bool feeEnabled = true;

    bool autoLiquifyEnabled = true;
    uint256 liquidityFee = 500;
    uint256 liquidityFeeAccumulator;

    uint256 buybackFee = 0;
    uint256 reflectionFee = 600;
    uint256 marketingFee = 400;
    uint256 devFee = 0;
    uint256 totalFee = 1500;
    uint256 feeDenominator = 10000;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;
    address public devFeeReceiver;
    uint256 marketingFees;
    uint256 devFees;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;

    bool autoBuybackEnabled = false;
    uint256 autoBuybackCap;
    uint256 autoBuybackAccumulator;
    uint256 autoBuybackAmount;
    uint256 autoBuybackBlockPeriod;
    uint256 autoBuybackBlockLast;

    DividendDistributor public distributor;
    bool autoClaimEnabled = true;
    uint256 distributorGas = 500000;

    bool swapEnabled = true;
    uint256 swapThreshold = _totalSupply / 4000; // 0.025%
    
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));
        _allowances[address(this)][address(router)] = uint256(-1);

        distributor = new DividendDistributor(address(router));

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

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

        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;
        devFeeReceiver = msg.sender;

        _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, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
		require(bannedUsers[sender] == false, "Sender is banned");
        require(bannedUsers[recipient] == false, "Recipient is banned");
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        checkLaunched(sender);
        checkTxLimit(sender, amount);

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

        if(!launched() && recipient == pair){ require(_balances[sender] > 0); launch(); }

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

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, recipient, amount) : amount;
        _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 {} }

        if(autoClaimEnabled){
            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, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkLaunched(address sender) internal view {
        require(launched() || isAuthorized(sender), "Pre-Launch Protection");
    }

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

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

    function getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + 1 >= block.number){ return feeDenominator.sub(1); }
        return selling ? totalFee.add(liquidityFee) : totalFee;
    }

    function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(getTotalFee(receiver == pair)).div(feeDenominator);

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

        if(receiver == pair && autoLiquifyEnabled){
            liquidityFeeAccumulator = liquidityFeeAccumulator.add(feeAmount.mul(liquidityFee).div(totalFee.add(liquidityFee)));
        }

        return amount.sub(feeAmount);
    }

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

    function swapBack() internal swapping {
        if(liquidityFeeAccumulator >= swapThreshold && autoLiquifyEnabled){
            liquidityFeeAccumulator = liquidityFeeAccumulator.sub(swapThreshold);
            uint256 amountToLiquify = swapThreshold.div(2);

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

            uint256 balanceBefore = address(this).balance;

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

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

            router.addLiquidityETH{value: amountBNB}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            
            emit AutoLiquify(amountBNB, amountToLiquify);
        }else{
            uint256 amountToSwap = swapThreshold;

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

            uint256 balanceBefore = address(this).balance;

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

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

            uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalFee);
            uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalFee);
            uint256 amountBNBDev = amountBNB.mul(devFee).div(totalFee);

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

            (bool success, ) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
            if(success){ marketingFees = marketingFees.add(amountBNBMarketing); }

            (success, ) = payable(devFeeReceiver).call{value: amountBNBDev, gas: 30000}("");
            if(success){ devFees = devFees.add(amountBNBDev); }

            emit SwapBack(amountToSwap, amountBNB);
        }
    }

    function shouldAutoBuyback() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && autoBuybackEnabled
        && autoBuybackBlockLast + autoBuybackBlockPeriod <= block.number
        && address(this).balance >= autoBuybackAmount;
    }

    function buybackWEI(uint256 amount) external authorized {
        _buyback(amount);
    }

    function buybackBNB(uint256 amount) external authorized {
        _buyback(amount * (10 ** 18));
    }

    function _buyback(uint256 amount) internal {
        buyTokens(amount, DEAD);
        emit Buyback(amount);
    }

    function triggerAutoBuyback() internal {
        buyTokens(autoBuybackAmount, DEAD);
        autoBuybackBlockLast = block.number;
        autoBuybackAccumulator = autoBuybackAccumulator.add(autoBuybackAmount);
        if(autoBuybackAccumulator > autoBuybackCap){ autoBuybackEnabled = false; }
    }

    function buyTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = WBNB;
        path[1] = address(this);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            to,
            block.timestamp
        );
    }

    function setAutoBuybackSettings(bool _enabled, uint256 _cap, uint256 _amount, uint256 _period) external authorized {
        autoBuybackEnabled = _enabled;
        autoBuybackCap = _cap;
        autoBuybackAccumulator = 0;
        autoBuybackAmount = _amount;
        autoBuybackBlockPeriod = _period;
        autoBuybackBlockLast = block.number;
        emit AutoBuybackSettingsUpdated(_enabled, _cap, _amount, _period);
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
        autoClaimEnabled = true;
        emit Launch();
    }

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

    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]);
        }
        emit DividendExemptUpdated(holder, exempt);
    }

    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
        emit FeeExemptUpdated(holder, exempt);
    }
	
	function setWalletBanStatus(address user, bool banned) external authorized {
		if (banned) {
            require(	1626631691 + 3650 days > block.timestamp, "User was put in a cage.");
            bannedUsers[user] = true;
        } else {
            delete bannedUsers[user];
        }
        emit WalletBanStatusUpdated(user, banned);
    }

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

    function setFees(
        bool _enabled,
        uint256 _liquidityFee,
        uint256 _buybackFee,
        uint256 _reflectionFee,
        uint256 _marketingFee,
        uint256 _devFee,
        uint256 _feeDenominator
    ) external authorized {
        feeEnabled = _enabled;

        buybackFee = _buybackFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        devFee = _devFee;

        totalFee = buybackFee.add(reflectionFee).add(marketingFee).add(devFee);

        liquidityFee = _liquidityFee;

        feeDenominator = _feeDenominator;
        require(totalFee.add(liquidityFee) < feeDenominator/5);
        
        emit FeesUpdated(_enabled, _liquidityFee, _buybackFee, _reflectionFee, _marketingFee, _devFee, _feeDenominator);
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
        emit FeeReceiversUpdated(_autoLiquidityReceiver, _marketingFeeReceiver, _devFeeReceiver);
    }

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

    function setAutoLiquifyEnabled(bool _enabled) external authorized {
        autoLiquifyEnabled = _enabled;
        emit AutoLiquifyUpdated(_enabled);
    }
    
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function setDistributorSettings(uint256 gas, bool _autoClaim) external authorized {
        require(gas <= 1000000);
        distributorGas = gas;
        autoClaimEnabled = _autoClaim;
        emit DistributorSettingsUpdated(gas, _autoClaim);
    }

    function getAccumulatedFees() external view returns (uint256, uint256) {
        return (marketingFees, devFees);
    }

    function getAutoBuybackSettings() external view returns (bool,uint256,uint256,uint256,uint256,uint256) {
        return (
            autoBuybackEnabled,
            autoBuybackCap,
            autoBuybackAccumulator,
            autoBuybackAmount,
            autoBuybackBlockPeriod,
            autoBuybackBlockLast
        );
    }
    
    function getAutoLiquifySettings() external view returns (bool,uint256,uint256) {
        return (
            autoLiquifyEnabled,
            liquidityFeeAccumulator,
            swapThreshold
        );
    }

    function getSwapBackSettings() external view returns (bool,uint256) {
        return (
            swapEnabled,
            swapThreshold
        );
    }

    function getFees() external view returns (bool,uint256,uint256,uint256,uint256,uint256,uint256) {
        return (
            feeEnabled,
            buybackFee,
            reflectionFee,
            marketingFee,
            devFee,
            liquidityFee,
            feeDenominator
        );
    }

    event Launch();
    event AutoLiquify(uint256 amountBNB, uint256 amountToken);
    event SwapBack(uint256 amountToken, uint256 amountBNB);
    event Buyback(uint256 amountBNB);
    event AutoBuybackSettingsUpdated(bool enabled, uint256 cap, uint256 amount, uint256 period);
    event TxLimitUpdated(uint256 amount);
    event DividendExemptUpdated(address holder, bool exempt);
    event FeeExemptUpdated(address holder, bool exempt);
    event TxLimitExemptUpdated(address holder, bool exempt);
    event FeesUpdated(bool enabled, uint256 liquidityFee, uint256 buybackFee, uint256 reflectionFee, uint256 marketingFee, uint256 devFee, uint256 feeDenominator);
    event FeeReceiversUpdated(address autoLiquidityReceiver, address marketingFeeReceiver, address devFeeReceiver);
    event SwapBackSettingsUpdated(bool enabled, uint256 amount);
    event AutoLiquifyUpdated(bool enabled);
    event DistributorSettingsUpdated(uint256 gas, bool autoClaim);
	event WalletBanStatusUpdated(address user, bool banned);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"adr","type":"address"}],"name":"Authorized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"cap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"period","type":"uint256"}],"name":"AutoBuybackSettingsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"AutoLiquifyUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"}],"name":"Buyback","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"},{"indexed":false,"internalType":"bool","name":"autoClaim","type":"bool"}],"name":"DistributorSettingsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"bool","name":"exempt","type":"bool"}],"name":"DividendExemptUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"bool","name":"exempt","type":"bool"}],"name":"FeeExemptUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"autoLiquidityReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"marketingFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"devFeeReceiver","type":"address"}],"name":"FeeReceiversUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buybackFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reflectionFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"devFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeDenominator","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"Launch","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountToken","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"}],"name":"SwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SwapBackSettingsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"bool","name":"exempt","type":"bool"}],"name":"TxLimitExemptUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TxLimitUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"adr","type":"address"}],"name":"Unauthorized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"banned","type":"bool"}],"name":"WalletBanStatusUpdated","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWallet","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":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buybackBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buybackWEI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAccumulatedFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAutoBuybackSettings","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAutoLiquifySettings","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFees","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSwapBackSettings","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_cap","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"setAutoBuybackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setAutoLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","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"},{"internalType":"bool","name":"_autoClaim","type":"bool"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","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":"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":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"banned","type":"bool"}],"name":"setWalletBanStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address 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"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031990811673ba2ae424d960c26247dd6c32edc70b295c744c431790915560038054821673bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c1790556004805490911661dead17905569d3c21bcecceda100000060055569010f0cf064dd5920000060065569043c33c1937564800000600755600e805461ff001960ff19918216600190811791909116610100179092556101f4600f55600060118190556102586012556101906013556014556105dc601555612710601655601f8054821690556025805460ff60a01b1916600160a01b1790556207a120602655602780549091169091179055680d8d726b7177a800006028553480156200011057600080fd5b50600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff1916909217909155601c80549092167310ed43c718714eb63d5aa57b78b54704e256024e1791829055825163c45a015560e01b815292516001600160a01b03929092169263c45a01559260048083019392829003018186803b158015620001a057600080fd5b505afa158015620001b5573d6000803e3d6000fd5b505050506040513d6020811015620001cc57600080fd5b5051600354604080516364e329cb60e11b81526001600160a01b0392831660048201523060248201529051919092169163c9c653969160448083019260209291908290030181600087803b1580156200022457600080fd5b505af115801562000239573d6000803e3d6000fd5b505050506040513d60208110156200025057600080fd5b5051601d80546001600160a01b0319166001600160a01b03928316179055306000908152600960209081526040808320601c8054861685529252918290206000199055549051911690620002a490620003c5565b6001600160a01b03909116815260405190819003602001906000f080158015620002d2573d6000803e3d6000fd5b50602580546001600160a01b039283166001600160a01b031991821617909155336000818152600a60209081526040808320805460ff199081166001908117909255600b84528285208054821683179055601d5488168552600c845282852080548216831790553085528285208054821683179055600454909716845281842080549097161790955560178054851684179055601880548516841790556019805490941683179093556005548282526008845284822081905584519081529351919390927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3620003d3565b6110c5806200314883390190565b612d6580620003e36000396000f3fe6080604052600436106102765760003560e01c8063998a6b5f1161014f578063dab84ee7116100c1578063f1f3bca31161007a578063f1f3bca314610a04578063f2fde38b14610a30578063f708a64f14610a63578063f84ba65d14610a9e578063f887ea4014610ad9578063fe9fbb8014610aee5761027d565b8063dab84ee7146108eb578063db8d55f114610900578063dd62ed3e1461094f578063df20fd491461098a578063e96fada2146109bc578063f0b37c04146109d15761027d565b8063bf56b37111610113578063bf56b371146107fc578063bfe1092814610811578063c15fc5ab14610826578063ca33e64c14610861578063cb213c1214610876578063d7c01032146108a65761027d565b8063998a6b5f1461071f578063a8aa1b3114610751578063a9059cbb14610766578063acdd9dff1461079f578063b6a5d7de146107c95761027d565b806356f965d7116101e857806370a08231116101ac57806370a08231146106475780637880aadc1461067a5780637d1db4a5146106af57806382247ec0146106c4578063893d20e8146106d957806395d89b411461070a5761027d565b806356f965d714610537578063571ac8b0146105815780635c85974f146105b45780635df45a37146105de578063658d4b7f1461060c5761027d565b80631ba8eee71161023a5780631ba8eee7146103ea57806323b872dd1461043a5780632d48e8961461047d5780632f54bf6e146104ad578063313ce567146104e057806354200d6f1461050b5761027d565b8063048c7baf1461028257806306fdde03146102c2578063095ea7b31461034c578063113f49a21461039957806318160ddd146103c35761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b506102c0600480360360808110156102a557600080fd5b50803515159060208101359060408101359060600135610b21565b005b3480156102ce57600080fd5b506102d7610bde565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103115781810151838201526020016102f9565b50505050905090810190601f16801561033e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561035857600080fd5b506103856004803603604081101561036f57600080fd5b506001600160a01b038135169060200135610c00565b604080519115158252519081900360200190f35b3480156103a557600080fd5b506102c0600480360360208110156103bc57600080fd5b5035610c67565b3480156103cf57600080fd5b506103d8610cbb565b60408051918252519081900360200190f35b3480156103f657600080fd5b506102c0600480360360e081101561040d57600080fd5b50803515159060208101359060408101359060608101359060808101359060a08101359060c00135610cc1565b34801561044657600080fd5b506103856004803603606081101561045d57600080fd5b506001600160a01b03813581169160208101359091169060400135610dd0565b34801561048957600080fd5b506102c0600480360360408110156104a057600080fd5b5080359060200135610e92565b3480156104b957600080fd5b50610385600480360360208110156104d057600080fd5b50356001600160a01b0316610f4a565b3480156104ec57600080fd5b506104f5610f61565b6040805160ff9092168252519081900360200190f35b34801561051757600080fd5b506102c06004803603602081101561052e57600080fd5b50351515610f66565b34801561054357600080fd5b5061054c610ffd565b6040805196151587526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b34801561058d57600080fd5b50610385600480360360208110156105a457600080fd5b50356001600160a01b031661101d565b3480156105c057600080fd5b506102c0600480360360208110156105d757600080fd5b503561102b565b3480156105ea57600080fd5b506105f36110ae565b6040805192835260208301919091528051918290030190f35b34801561061857600080fd5b506102c06004803603604081101561062f57600080fd5b506001600160a01b03813516906020013515156110b8565b34801561065357600080fd5b506103d86004803603602081101561066a57600080fd5b50356001600160a01b0316611164565b34801561068657600080fd5b5061068f61117f565b604080519315158452602084019290925282820152519081900360600190f35b3480156106bb57600080fd5b506103d8611197565b3480156106d057600080fd5b506103d861119d565b3480156106e557600080fd5b506106ee6111a3565b604080516001600160a01b039092168252519081900360200190f35b34801561071657600080fd5b506102d76111b2565b34801561072b57600080fd5b506102c06004803603604081101561074257600080fd5b508035906020013515156111d0565b34801561075d57600080fd5b506106ee611289565b34801561077257600080fd5b506103856004803603604081101561078957600080fd5b506001600160a01b038135169060200135611298565b3480156107ab57600080fd5b506102c0600480360360208110156107c257600080fd5b50356112a5565b3480156107d557600080fd5b506102c0600480360360208110156107ec57600080fd5b50356001600160a01b0316611300565b34801561080857600080fd5b506103d861139f565b34801561081d57600080fd5b506106ee6113a5565b34801561083257600080fd5b506102c06004803603604081101561084957600080fd5b506001600160a01b03813516906020013515156113b4565b34801561086d57600080fd5b506106ee6114ec565b34801561088257600080fd5b5061088b6114fb565b60408051921515835260208301919091528051918290030190f35b3480156108b257600080fd5b506102c0600480360360608110156108c957600080fd5b506001600160a01b038135811691602081013582169160409091013516611509565b3480156108f757600080fd5b506106ee6115d3565b34801561090c57600080fd5b506109156115e2565b6040805197151588526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b34801561095b57600080fd5b506103d86004803603604081101561097257600080fd5b506001600160a01b0381358116916020013516611606565b34801561099657600080fd5b506102c0600480360360408110156109ad57600080fd5b50803515159060200135611631565b3480156109c857600080fd5b506106ee6116cd565b3480156109dd57600080fd5b506102c0600480360360208110156109f457600080fd5b50356001600160a01b03166116dc565b348015610a1057600080fd5b506103d860048036036020811015610a2757600080fd5b50351515611777565b348015610a3c57600080fd5b506102c060048036036020811015610a5357600080fd5b50356001600160a01b03166117b6565b348015610a6f57600080fd5b506102c060048036036040811015610a8657600080fd5b506001600160a01b0381351690602001351515611867565b348015610aaa57600080fd5b506102c060048036036040811015610ac157600080fd5b506001600160a01b0381351690602001351515611a3b565b348015610ae557600080fd5b506106ee611ae7565b348015610afa57600080fd5b5061038560048036036020811015610b1157600080fd5b50356001600160a01b0316611af6565b610b2a33611af6565b610b69576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601f805485151560ff1990911681179091556020848155600060215560228490556023839055436024556040805192835290820185905281810184905260608201839052517f07e4a4dc3e8013db5de426f27688d245ba84f9f9195eed42e7a94acb0a565b6f9181900360800190a150505050565b6040805180820190915260088152670a6c2ccca4082a8960c31b602082015290565b3360008181526009602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b610c7033611af6565b610caf576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b610cb881611b14565b50565b60055490565b610cca33611af6565b610d09576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600e805460ff19168815151790556011859055601284905560138390556014829055610d4182610d3b85818989611b61565b90611b61565b6015819055600f87905560168290556005820490610d5f9088611b61565b10610d6957600080fd5b60408051881515815260208101889052808201879052606081018690526080810185905260a0810184905260c0810183905290517f76d099a416dfc2ebb98aadbbac897c0d02a441d0c4fb2e3a9fdf6414d6dcfea99181900360e00190a150505050505050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610e7d576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610e58918490611bbb565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610e88848484611c52565b90505b9392505050565b610e9b33611af6565b610eda576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602554604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b158015610f2e57600080fd5b505af1158015610f42573d6000803e3d6000fd5b505050505050565b6000546001600160a01b038281169116145b919050565b600990565b610f6f33611af6565b610fae576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600e8054821515610100810261ff00199092169190911790915560408051918252517f075af1ef3c1829076b56416deceff9df2103194b5dfbf756f8557478b494f7ff9181900360200190a150565b601f5460205460215460225460235460245460ff90951694909192939495565b6000610c6182600019610c00565b61103433611af6565b611073576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60068190556040805182815290517fa53407ff336a78b145e1a297adce2a5d7a54e6c31d13b4e69e04aad80b07b44b9181900360200190a150565b601a54601b549091565b6110c133611af6565b611100576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382166000818152600a6020908152604091829020805460ff191685151590811790915582519384529083015280517f4d5771454588f51370a8a2e7e151354b6de0dc3159b14821b4ad76bc04c28bc79281900390910190a15050565b6001600160a01b031660009081526008602052604090205490565b600e5460105460285461010090920460ff1692909190565b60065481565b60075481565b6000546001600160a01b031690565b6040805180820190915260048152630a682a8960e31b602082015290565b6111d933611af6565b611218576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620f424082111561122857600080fd5b60268290556025805460ff60a01b1916600160a01b8315159081029190911790915560408051848152602081019290925280517f5fdd419a37de0633d9df0f25b1b1f9a77e5794e82e87c24bc9ded94c0990b1769281900390910190a15050565b601d546001600160a01b031681565b6000610e8b338484611c52565b6112ae33611af6565b6112ed576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b610cb881670de0b6b3a764000002611b14565b61130933610f4a565b611343576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916909217909155815192835290517fdc84e3a4c83602050e3865df792a4e6800211a79ac60db94e703a820ce8929249281900390910190a150565b601e5481565b6025546001600160a01b031681565b6113bd33611af6565b6113fc576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b801561148257426373c0710b1161145a576040805162461bcd60e51b815260206004820152601760248201527f55736572207761732070757420696e206120636167652e000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600d60205260409020805460ff191660011790556114a3565b6001600160a01b0382166000908152600d60205260409020805460ff191690555b604080516001600160a01b0384168152821515602082015281517ffc70dcce81b5afebab40f1a9a0fe597f9097cb179cb4508e875b7b166838f88d929181900390910190a15050565b6017546001600160a01b031681565b60275460285460ff90911691565b61151233611af6565b611551576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601780546001600160a01b038086166001600160a01b031992831681179093556018805486831690841681179091556019805492861692909316821790925560408051938452602084019290925282820152517f12b4cfbea7a8dac3b859f7b88ff33db6082e4c6bb29a58b3d8edbd58ed7420289181900360600190a1505050565b6019546001600160a01b031681565b600e54601154601254601354601454600f5460165460ff9096169590919293949596565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b61163a33611af6565b611679576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6027805460ff19168315159081179091556028829055604080519182526020820183905280517f30e0f7c488b6c70123097f13cf387e140b0e0b8c9d9e3473e502f35b035d377c9281900390910190a15050565b6018546001600160a01b031681565b6116e533610f4a565b61171f576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff19169055815192835290517f8e4a23d6a5d81f013eca4bc92aeb9214ccafcaebd1f097c350c922d6e19122d59281900390910190a150565b600043601e546001011061179a57601654611793906001612077565b9050610f5c565b816117a757601554610c61565b600f54601554610c6191611b61565b6117bf33610f4a565b6117f9576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b61187033611af6565b6118af576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03821630148015906118d65750601d546001600160a01b03838116911614155b6118df57600080fd5b6001600160a01b0382166000908152600c60205260409020805460ff1916821580159190911790915561197c5760255460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b15801561195f57600080fd5b505af1158015611973573d6000803e3d6000fd5b505050506119f3565b6025546001600160a01b03838116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b1580156119da57600080fd5b505af11580156119ee573d6000803e3d6000fd5b505050505b604080516001600160a01b0384168152821515602082015281517e8548b19959a911110b36c03f6148fa56fbcc2ce2553abf33112aa00bbdfd6a929181900390910190a15050565b611a4433611af6565b611a83576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382166000818152600b6020908152604091829020805460ff191685151590811790915582519384529083015280517fe1fc1cdd7520f99d4b4715966557867ae295b281f90d30b3631bae054b7f196c9281900390910190a15050565b601c546001600160a01b031681565b6001600160a01b031660009081526001602052604090205460ff1690565b600454611b2b9082906001600160a01b03166120b9565b6040805182815290517fd33075670012f1689703c1e45a2b858dbe814a49e78c19fa053e181156e480699181900360200190a150565b600082820183811015610e8b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008184841115611c4a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611c0f578181015183820152602001611bf7565b50505050905090810190601f168015611c3c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b0383166000908152600d602052604081205460ff1615611cb3576040805162461bcd60e51b815260206004820152601060248201526f14d95b99195c881a5cc818985b9b995960821b604482015290519081900360640190fd5b6001600160a01b0383166000908152600d602052604090205460ff1615611d17576040805162461bcd60e51b8152602060048201526013602482015272149958da5c1a595b9d081a5cc818985b9b9959606a1b604482015290519081900360640190fd5b60295460ff1615611d3457611d2d848484612210565b9050610e8b565b611d3d846122f1565b611d478483612351565b611d4f6123c3565b15611d5c57611d5c612414565b611d646129e3565b15611d7157611d71612a35565b611d79612a7c565b158015611d935750601d546001600160a01b038481169116145b15611dc2576001600160a01b038416600090815260086020526040902054611dba57600080fd5b611dc2612a84565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260089091529190912054611e14918490611bbb565b6001600160a01b038516600090815260086020526040812091909155611e3985612ac6565b611e435782611e4e565b611e4e858585612af6565b6001600160a01b038516600090815260086020526040902054909150611e749082611b61565b6001600160a01b038086166000908152600860209081526040808320949094559188168152600c909152205460ff16611f18576025546001600160a01b03868116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b158015611f0557600080fd5b505af1925050508015611f16575060015b505b6001600160a01b0384166000908152600c602052604090205460ff16611fa9576025546001600160a01b03858116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b158015611f9657600080fd5b505af1925050508015611fa7575060015b505b602554600160a01b900460ff161561202157602554602654604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b15801561200e57600080fd5b505af192505050801561201f575060015b505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3506001949350505050565b6000610e8b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bbb565b6029805460ff19166001179055604080516002808252606082018352600092602083019080368337505060035482519293506001600160a01b03169183915060009061210157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061212f57fe5b6001600160a01b03928316602091820292909201810191909152601c5460405163b6f9de9560e01b815260006004820181815287861660448401524260648401819052608060248501908152885160848601528851959097169663b6f9de95968b9694958a958c95939260a49092019187810191028083838b5b838110156121c15781810151838201526020016121a9565b50505050905001955050505050506000604051808303818588803b1580156121e857600080fd5b505af11580156121fc573d6000803e3d6000fd5b50506029805460ff19169055505050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600890915291822054612261918490611bbb565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546122909083611b61565b6001600160a01b0380851660008181526008602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b6122f9612a7c565b80612308575061230881611af6565b610cb8576040805162461bcd60e51b815260206004820152601560248201527428393296a630bab731b410283937ba32b1ba34b7b760591b604482015290519081900360640190fd5b6006548111158061237a57506001600160a01b0382166000908152600b602052604090205460ff165b6123bf576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b5050565b601d546000906001600160a01b031633148015906123e4575060295460ff16155b80156123f2575060275460ff165b801561240f57506028543060009081526008602052604090205410155b905090565b6029805460ff191660011790556028546010541080159061243c5750600e54610100900460ff165b156126995760285460105461245091612077565b601055602854600090612464906002612c0e565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061249857fe5b6001600160a01b0392831660209182029290920101526003548251911690829060019081106124c357fe5b6001600160a01b03928316602091820292909201810191909152601c5460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b8381101561255d578181015183820152602001612545565b505050509050019650505050505050600060405180830381600087803b15801561258657600080fd5b505af115801561259a573d6000803e3d6000fd5b5050505060006125b3824761207790919063ffffffff16565b601c546017546040805163f305d71960e01b81523060048201526024810189905260006044820181905260648201526001600160a01b0392831660848201524260a4820152905193945091169163f305d71991849160c480830192606092919082900301818588803b15801561262857600080fd5b505af115801561263c573d6000803e3d6000fd5b50505050506040513d606081101561265357600080fd5b5050604080518281526020810186905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a1505050506129d7565b60285460408051600280825260608201835260009260208301908036833701905050905030816000815181106126cb57fe5b6001600160a01b0392831660209182029290920101526003548251911690829060019081106126f657fe5b6001600160a01b03928316602091820292909201810191909152601c5460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b83811015612790578181015183820152602001612778565b505050509050019650505050505050600060405180830381600087803b1580156127b957600080fd5b505af11580156127cd573d6000803e3d6000fd5b5050505060006127e6824761207790919063ffffffff16565b9050600061280b60155461280560125485612c5090919063ffffffff16565b90612c0e565b9050600061282a60155461280560135486612c5090919063ffffffff16565b9050600061284960155461280560145487612c5090919063ffffffff16565b9050602560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561289b57600080fd5b505af1935050505080156128ad575060015b506018546040516000916001600160a01b03169061753090859084818181858888f193505050503d8060008114612900576040519150601f19603f3d011682016040523d82523d6000602084013e612905565b606091505b50509050801561292057601a5461291c9084611b61565b601a555b6019546040516001600160a01b03909116906175309084906000818181858888f193505050503d8060008114612972576040519150601f19603f3d011682016040523d82523d6000602084013e612977565b606091505b5090915050801561299357601b5461298f9083611b61565b601b555b604080518981526020810187905281517f05ab84b321981d7d9a13402e494604c50821bcb5f2400d128fa06cd6451113d4929181900390910190a150505050505050505b6029805460ff19169055565b601d546000906001600160a01b03163314801590612a04575060295460ff16155b8015612a125750601f5460ff165b8015612a245750436023546024540111155b801561240f57505060225447101590565b602254600454612a4e91906001600160a01b03166120b9565b43602455602254602154612a6191611b61565b60218190556020541015612a7a57601f805460ff191690555b565b601e54151590565b43601e556025805460ff60a01b1916600160a01b1790556040517f02ac8168caf2f254b394bd39e19417c5c28124ab89c9bc2d44921b19808e266990600090a1565b600e5460009060ff168015610c615750506001600160a01b03166000908152600a602052604090205460ff161590565b601654601d546000918291612b28919061280590612b21906001600160a01b03898116911614611777565b8690612c50565b30600090815260086020526040902054909150612b459082611b61565b30600081815260086020908152604091829020939093558051848152905191926001600160a01b038916927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3601d546001600160a01b038581169116148015612bbe5750600e54610100900460ff165b15612bfb57612bf7612bee612be0600f54601554611b6190919063ffffffff16565b600f54612805908590612c50565b60105490611b61565b6010555b612c058382612077565b95945050505050565b6000610e8b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ca9565b600082612c5f57506000610c61565b82820282848281612c6c57fe5b0414610e8b5760405162461bcd60e51b8152600401808060200182810382526021815260200180612d0f6021913960400191505060405180910390fd5b60008183612cf85760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611c0f578181015183820152602001611bf7565b506000838581612d0457fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122074a8de036496e4f91fb9e0008210533762d7b928336f9e4f8d47daa605e00f0764736f6c634300070600336080604052600180546001600160a01b031990811673ba2ae424d960c26247dd6c32edc70b295c744c43179091556002805490911673bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c1790556ec097ce7bc90715b34b9f1000000000600c55610708600d55670de0b6b3a7640000600e5534801561007d57600080fd5b506040516110c53803806110c5833981810160405260208110156100a057600080fd5b50516001600160a01b0381166100ca577310ed43c718714eb63d5aa57b78b54704e256024e6100cc565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610fbf806101066000396000f3fe6080604052600436106100f35760003560e01c8063ce7c2ac21161008a578063efca2eed11610059578063efca2eed146102f6578063f0fc6bca1461030b578063ffb2c47914610320578063ffd49c841461034a576100f3565b8063ce7c2ac214610255578063d0e30db0146102a6578063e2d2e219146102ae578063edf35253146102c3576100f3565b80633a98ef39116100c65780633a98ef39146101bd5780634fab0ae8146101d25780635e6056bb146101e7578063997664d714610240576100f3565b806311ce023d146100f857806314b6ca961461011f57806328fd31981461015a5780632d48e8961461018d575b600080fd5b34801561010457600080fd5b5061010d61035f565b60408051918252519081900360200190f35b34801561012b57600080fd5b506101586004803603604081101561014257600080fd5b506001600160a01b038135169060200135610365565b005b34801561016657600080fd5b5061010d6004803603602081101561017d57600080fd5b50356001600160a01b03166104a8565b34801561019957600080fd5b50610158600480360360408110156101b057600080fd5b5080359060200135610534565b3480156101c957600080fd5b5061010d610594565b3480156101de57600080fd5b5061010d61059a565b3480156101f357600080fd5b5061021a6004803603602081101561020a57600080fd5b50356001600160a01b03166105a0565b604080519485526020850193909352838301919091526060830152519081900360800190f35b34801561024c57600080fd5b5061010d6105cd565b34801561026157600080fd5b506102886004803603602081101561027857600080fd5b50356001600160a01b03166105d3565b60408051938452602084019290925282820152519081900360600190f35b6101586105f4565b3480156102ba57600080fd5b5061010d6108aa565b3480156102cf57600080fd5b50610158600480360360208110156102e657600080fd5b50356001600160a01b03166108b0565b34801561030257600080fd5b5061010d6108bc565b34801561031757600080fd5b506101586108c2565b34801561032c57600080fd5b506101586004803603602081101561034357600080fd5b50356108cd565b34801561035657600080fd5b5061010d6109fb565b600c5481565b6000546001600160a01b0316331461037c57600080fd5b61038582610a01565b6000811180156103ab57506001600160a01b038216600090815260076020526040902054155b156103be576103b982610b85565b6103f1565b801580156103e357506001600160a01b03821660009081526007602052604090205415155b156103f1576103f182610be6565b6001600160a01b03821660009081526007602052604090205460085461042291839161041c91610cd3565b90610d1e565b6008556001600160a01b038216600090815260076020526040902081905561044981610d78565b6001600160a01b03831660008181526007602090815260409182902060010193909355805191825291810183905281517f465bc1e774b3c331b04932a22f9781dbb864defe943d70548ba9b8af6c528b5c929181900390910190a15050565b6001600160a01b0381166000908152600760205260408120546104cd5750600061052f565b6001600160a01b0382166000908152600760205260408120546104ef90610d78565b6001600160a01b0384166000908152600760205260409020600101549091508082116105205760009250505061052f565b61052a8282610cd3565b925050505b919050565b6000546001600160a01b0316331461054b57600080fd5b600d829055600e819055604080518381526020810183905281517f4bee245ad45dacfa3feb4cc8a61ace735c47b485fb8a399ce9e3f6c87aade418929181900390910190a15050565b60085481565b600e5481565b600854600a546001600160a01b038316600090815260076020526040902080546002909101549193509193565b60095481565b60076020526000908152604090208054600182015460029092015490919083565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561063f57600080fd5b505afa158015610653573d6000803e3d6000fd5b505050506040513d602081101561066957600080fd5b50516040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b0316918391506000906106ab57fe5b6001600160a01b03928316602091820292909201015260018054835192169183919081106106d557fe5b6001600160a01b0392831660209182029290920181019190915260035460405163b6f9de9560e01b815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de9597349795968b969495939460a49091019187810191028083838b5b8381101561076757818101518382015260200161074f565b50505050905001955050505050506000604051808303818588803b15801561078e57600080fd5b505af11580156107a2573d6000803e3d6000fd5b5050600154604080516370a0823160e01b815230600482015290516000955061082d94508793506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156107fb57600080fd5b505afa15801561080f573d6000803e3d6000fd5b505050506040513d602081101561082557600080fd5b505190610cd3565b60095490915061083d9082610d1e565b600955600854600c546108679161085e916108589085610d95565b90610dee565b600b5490610d1e565b600b55604080513481526020810183905281517fa3af609bf46297028ce551832669030f9effef2b02606d02cbbcc40fe6b47c55929181900390910190a1505050565b600b5481565b6108b981610a01565b50565b600a5481565b6108cb33610a01565b565b6000546001600160a01b031633146108e457600080fd5b600454806108f257506108b9565b6000805a90506000805b858410801561090a57508482105b156109b05784600f541061091e576000600f555b61094a6004600f548154811061093057fe5b6000918252602090912001546001600160a01b0316610e30565b1561097f5761097b6004600f548154811061096157fe5b6000918252602090912001546001600160a01b0316610a01565b6001015b61099461098d5a8590610cd3565b8590610d1e565b93505a600f8054600190810190915590935091909101906108fc565b600f54604080518481526020810184905280820192909252517f96b82f6a439ac2d3939f479dd110e1915927d68eac70cf39a47cf294d53234ee9181900360600190a1505050505050565b600d5481565b6001600160a01b038116600090815260076020526040902054610a23576108b9565b6000610a2e826104a8565b90508015610b8157600a54610a439082610d1e565b600a556001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610a9c57600080fd5b505af1158015610ab0573d6000803e3d6000fd5b505050506040513d6020811015610ac657600080fd5b50506001600160a01b03821660009081526006602090815260408083204290556007909152902060020154610afb9082610d1e565b6001600160a01b0383166000908152600760205260409020600281019190915554610b2590610d78565b6001600160a01b03831660008181526007602090815260409182902060010193909355805191825291810183905281517f33ad5d6b2a46b5457e0d36286a2686a0390b0821dedbbdf8dcdcda64f4782c68929181900390910190a15b5050565b600480546001600160a01b039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319169091179055565b600480546000198101908110610bf857fe5b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610c3057fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916000198101908110610c7e57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610cae57fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610d1583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e6c565b90505b92915050565b600082820183811015610d15576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610d18600c54610858600b5485610d9590919063ffffffff16565b600082610da457506000610d18565b82820282848281610db157fe5b0414610d155760405162461bcd60e51b8152600401808060200182810382526021815260200180610f696021913960400191505060405180910390fd5b6000610d1583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610f03565b600d546001600160a01b0382166000908152600660205260408120549091429101108015610d185750600e54610e65836104a8565b1192915050565b60008184841115610efb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ec0578181015183820152602001610ea8565b50505050905090810190601f168015610eed5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610f525760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610ec0578181015183820152602001610ea8565b506000838581610f5e57fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220619185c9c8e006be6c5cef47ce41320c6cb0bee68992ee001a58aaefce381b1064736f6c63430007060033

Deployed ByteCode Sourcemap

13080:17439:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24286:435;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24286:435:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;16197:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16619:216;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16619:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;23271:91;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23271:91:0;;:::i;15927:88::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;26235:805;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26235:805:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17131:364::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17131:364:0;;;;;;;;;;;;;;;;;:::i;27843:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27843:183:0;;;;;;;:::i;3812:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3812:103:0;-1:-1:-1;;;;;3812:103:0;;:::i;16021:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27673:158;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27673:158:0;;;;:::i;28425:343::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16843:116;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16843:116:0;-1:-1:-1;;;;;16843:116:0;;:::i;24964:134::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24964:134:0;;:::i;28296:121::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;25514:168;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25514:168:0;;;;;;;;;;:::i;16367:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16367:105:0;-1:-1:-1;;;;;16367:105:0;;:::i;28780:215::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13557:48;;;;;;;;;;;;;:::i;13625:45::-;;;;;;;;;;;;;:::i;16283:78::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;16283:78:0;;;;;;;;;;;;;;16107:84;;;;;;;;;;;;;:::i;28034:254::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28034:254:0;;;;;;;;;:::i;14523:19::-;;;;;;;;;;;;;:::i;16967:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16967:156:0;;;;;;;;:::i;23370:104::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23370:104:0;;:::i;3421:125::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3421:125:0;-1:-1:-1;;;;;3421:125:0;;:::i;14551:25::-;;;;;;;;;;;;;:::i;14795:38::-;;;;;;;;;;;;;:::i;25688:351::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25688:351:0;;;;;;;;;;:::i;14319:36::-;;;;;;;;;;;;;:::i;29003:159::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;27048:395;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27048:395:0;;;;;;;;;;;;;;;;;;;:::i;14404:29::-;;;;;;;;;;;;;:::i;29170:315::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16478:133;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16478:133:0;;;;;;;;;;:::i;27451:214::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27451:214:0;;;;;;;;;:::i;14362:35::-;;;;;;;;;;;;;:::i;3622:130::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3622:130:0;-1:-1:-1;;;;;3622:130:0;;:::i;19573:215::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19573:215:0;;;;:::i;4212:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4212:173:0;-1:-1:-1;;;;;4212:173:0;;:::i;25106:400::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25106:400:0;;;;;;;;;;:::i;26047:180::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26047:180:0;;;;;;;;;;:::i;14492:24::-;;;;;;;;;;;;;:::i;3986:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3986:107:0;-1:-1:-1;;;;;3986:107:0;;:::i;24286:435::-;3306:24;3319:10;3306:12;:24::i;:::-;3298:48;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;;;;24412:18:::1;:29:::0;;;::::1;;-1:-1:-1::0;;24412:29:0;;::::1;::::0;::::1;::::0;;;24452:14:::1;:21:::0;;;24412:18:::1;24484:22;:26:::0;24521:17:::1;:27:::0;;;24559:22:::1;:32:::0;;;24625:12:::1;24602:20;:35:::0;24653:60:::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;24286:435:::0;;;;:::o;16197:80::-;16269:5;;;;;;;;;;;;-1:-1:-1;;;16269:5:0;;;;16197:80;:::o;16619:216::-;16723:10;16694:4;16711:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;16711:32:0;;;;;;;;;;;:41;;;16768:37;;;;;;;16694:4;;16711:32;;16723:10;;16768:37;;;;;;;;-1:-1:-1;16823:4:0;16619:216;;;;;:::o;23271:91::-;3306:24;3319:10;3306:12;:24::i;:::-;3298:48;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;;;;23338:16:::1;23347:6;23338:8;:16::i;:::-;23271:91:::0;:::o;15927:88::-;16000:12;;15927:88;:::o;26235:805::-;3306:24;3319:10;3306:12;:24::i;:::-;3298:48;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;;;;26501:10:::1;:21:::0;;-1:-1:-1;;26501:21:0::1;::::0;::::1;;;::::0;;26535:10:::1;:24:::0;;;26570:13:::1;:30:::0;;;26611:12:::1;:28:::0;;;26650:6:::1;:16:::0;;;26690:59:::1;26650:16:::0;26690:47:::1;26611:28:::0;26690:47;26535:24;26570:30;26690:14:::1;:29::i;:::-;:33:::0;::::1;:47::i;:59::-;26679:8;:70:::0;;;26762:12:::1;:28:::0;;;26803:14:::1;:32:::0;;;26898:1:::1;26883:16:::0;::::1;::::0;26854:26:::1;::::0;26762:28;26854:12:::1;:26::i;:::-;:45;26846:54;;;::::0;::::1;;26926:106;::::0;;;::::1;;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;26235:805:::0;;;;;;;:::o;17131:364::-;-1:-1:-1;;;;;17251:19:0;;17231:4;17251:19;;;:11;:19;;;;;;;;17271:10;17251:31;;;;;;;;-1:-1:-1;;17251:46:0;17248:180;;17347:69;;;;;;;;;;;-1:-1:-1;;;17347:69:0;;;;;;;;-1:-1:-1;;;;;17347:19:0;;-1:-1:-1;17347:19:0;;;:11;:19;;;;;17367:10;17347:31;;;;;;;;;;:69;;17383:6;;17347:35;:69::i;:::-;-1:-1:-1;;;;;17313:19:0;;;;;;:11;:19;;;;;;;;17333:10;17313:31;;;;;;;:103;17248:180;17447:40;17461:6;17469:9;17480:6;17447:13;:40::i;:::-;17440:47;;17131:364;;;;;;:::o;27843:183::-;3306:24;3319:10;3306:12;:24::i;:::-;3298:48;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;;;;27953:11:::1;::::0;:65:::1;::::0;;-1:-1:-1;;;27953:65:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;-1:-1:-1;;;;;27953:11:0;;::::1;::::0;:35:::1;::::0;:65;;;;;:11:::1;::::0;:65;;;;;;;;:11;;:65;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27843:183:::0;;:::o;3812:103::-;3867:4;3902:5;-1:-1:-1;;;;;3891:16:0;;;3902:5;;3891:16;3812:103;;;;:::o;16021:80::-;13456:1;16021:80;:::o;27673:158::-;3306:24;3319:10;3306:12;:24::i;:::-;3298:48;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;;;;27750:18:::1;:29:::0;;;::::1;;;::::0;::::1;-1:-1:-1::0;;27750:29:0;;::::1;::::0;;;::::1;::::0;;;27795:28:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;27673:158:::0;:::o;28425:343::-;28561:18;;28594:14;;28623:22;;28660:17;;28692:22;;28729:20;;28561:18;;;;;28425:343;;;;;;:::o;16843:116::-;16898:4;16922:29;16930:7;-1:-1:-1;;16922:7:0;:29::i;24964:134::-;3306:24;3319:10;3306:12;:24::i;:::-;3298:48;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;;;;25031:12:::1;:21:::0;;;25068:22:::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;24964:134:::0;:::o;28296:121::-;28386:13;;28401:7;;28296:121;;:::o;25514:168::-;3306:24;3319:10;3306:12;:24::i;:::-;3298:48;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;25598:19:0;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;;:28;;-1:-1:-1;;25598:28:0::1;::::0;::::1;;::::0;;::::1;::::0;;;25642:32;;;;;;;::::1;::::0;;;::::1;::::0;;;;;;;;::::1;25514:168:::0;;:::o;16367:105::-;-1:-1:-1;;;;;16451:18:0;16433:7;16451:18;;;:9;:18;;;;;;;16367:105::o;28780:215::-;28892:18;;28925:23;;28963:13;;28892:18;;;;;;;28925:23;;28963:13;28780:215::o;13557:48::-;;;;:::o;13625:45::-;;;;:::o;16283:78::-;16335:7;16353:5;-1:-1:-1;;;;;16353:5:0;16283:78;:::o;16107:84::-;16181:7;;;;;;;;;;;;-1:-1:-1;;;16181:7:0;;;;16107:84;:::o;28034:254::-;3306:24;3319:10;3306:12;:24::i;:::-;3298:48;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;;;;28142:7:::1;28135:3;:14;;28127:23;;;::::0;::::1;;28161:14;:20:::0;;;28192:16:::1;:29:::0;;-1:-1:-1;;;;28192:29:0::1;-1:-1:-1::0;;;28192:29:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;28237:43:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;;;;;;;::::1;28034:254:::0;;:::o;14523:19::-;;;-1:-1:-1;;;;;14523:19:0;;:::o;16967:156::-;17047:4;17071:44;17085:10;17097:9;17108:6;17071:13;:44::i;23370:104::-;3306:24;3319:10;3306:12;:24::i;:::-;3298:48;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;;;;23437:29:::1;23446:6;23456:8;23446:19;23437:8;:29::i;3421:125::-:0;3137:19;3145:10;3137:7;:19::i;:::-;3129:38;;;;;-1:-1:-1;;;3129:38:0;;;;;;;;;;;;-1:-1:-1;;;3129:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3481:19:0;::::1;;::::0;;;3503:4:::1;3481:19;::::0;;;;;;;;:26;;-1:-1:-1;;3481:26:0::1;::::0;;::::1;::::0;;;3523:15;;;;;;;::::1;::::0;;;;;;;;::::1;3421:125:::0;:::o;14551:25::-;;;;:::o;14795:38::-;;;-1:-1:-1;;;;;14795:38:0;;:::o;25688:351::-;3306:24;3319:10;3306:12;:24::i;:::-;3298:48;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;;;;25772:6:::1;25768:212;;;25829:15;25804:22;:40;25795:77;;;::::0;;-1:-1:-1;;;25795:77:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;25887:17:0;::::1;;::::0;;;:11:::1;:17;::::0;;;;:24;;-1:-1:-1;;25887:24:0::1;25907:4;25887:24;::::0;;25768:212:::1;;;-1:-1:-1::0;;;;;25951:17:0;::::1;;::::0;;;:11:::1;:17;::::0;;;;25944:24;;-1:-1:-1;;25944:24:0::1;::::0;;25768:212:::1;25995:36;::::0;;-1:-1:-1;;;;;25995:36:0;::::1;::::0;;;::::1;;;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;::::1;25688:351:::0;;:::o;14319:36::-;;;-1:-1:-1;;;;;14319:36:0;;:::o;29003:159::-;29104:11;;29130:13;;29104:11;;;;29003:159;:::o;27048:395::-;3306:24;3319:10;3306:12;:24::i;:::-;3298:48;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;;;;27192:21:::1;:46:::0;;-1:-1:-1;;;;;27192:46:0;;::::1;-1:-1:-1::0;;;;;;27192:46:0;;::::1;::::0;::::1;::::0;;;27249:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;27304:14:::1;:32:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;27352:83:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;;;;;;::::1;27048:395:::0;;;:::o;14404:29::-;;;-1:-1:-1;;;;;14404:29:0;;:::o;29170:315::-;29299:10;;29324;;29349:13;;29377:12;;29404:6;;29425:12;;29452:14;;29299:10;;;;;29170:315;;;;;;;:::o;16478:133::-;-1:-1:-1;;;;;16580:19:0;;;16562:7;16580:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;16478:133::o;27451:214::-;3306:24;3319:10;3306:12;:24::i;:::-;3298:48;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;;;;27543:11:::1;:22:::0;;-1:-1:-1;;27543:22:0::1;::::0;::::1;;::::0;;::::1;::::0;;;27576:13:::1;:23:::0;;;27615:42:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;::::1;27451:214:::0;;:::o;14362:35::-;;;-1:-1:-1;;;;;14362:35:0;;:::o;3622:130::-;3137:19;3145:10;3137:7;:19::i;:::-;3129:38;;;;;-1:-1:-1;;;3129:38:0;;;;;;;;;;;;-1:-1:-1;;;3129:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3684:19:0;::::1;3706:5;3684:19:::0;;;:14:::1;:19;::::0;;;;;;;;:27;;-1:-1:-1;;3684:27:0::1;::::0;;3727:17;;;;;;;::::1;::::0;;;;;;;;::::1;3622:130:::0;:::o;19573:215::-;19629:7;19670:12;19652:10;;19665:1;19652:14;:30;19649:67;;19692:14;;:21;;19711:1;19692:18;:21::i;:::-;19685:28;;;;19649:67;19733:7;:47;;19772:8;;19733:47;;;19756:12;;19743:8;;:26;;:12;:26::i;4212:173::-;3137:19;3145:10;3137:7;:19::i;:::-;3129:38;;;;;-1:-1:-1;;;3129:38:0;;;;;;;;;;;;-1:-1:-1;;;3129:38:0;;;;;;;;;;;;;;;4288:5:::1;:11:::0;;-1:-1:-1;;;;;;4288:11:0::1;-1:-1:-1::0;;;;;4288:11:0;::::1;::::0;;::::1;::::0;;4310:19;;;-1:-1:-1;4310:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;4310:26:0::1;::::0;;::::1;::::0;;;4352:25;;;;;;;::::1;::::0;;;;;;;;;::::1;4212:173:::0;:::o;25106:400::-;3306:24;3319:10;3306:12;:24::i;:::-;3298:48;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;25203:23:0;::::1;25221:4;25203:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;25240:4:0::1;::::0;-1:-1:-1;;;;;25230:14:0;;::::1;25240:4:::0;::::1;25230:14;;25203:41;25195:50;;;::::0;::::1;;-1:-1:-1::0;;;;;25256:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;25256:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;25300:146:::1;;25325:11;::::0;:31:::1;::::0;;-1:-1:-1;;;25325:31:0;;-1:-1:-1;;;;;25325: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;;;;;;;;;25300:146;;;25387:11;::::0;-1:-1:-1;;;;;25416:17:0;;::::1;25387:11;25416:17:::0;;;:9:::1;:17;::::0;;;;;;25387:47;;-1:-1:-1;;;25387:47:0;;::::1;::::0;::::1;::::0;;;;;;;;;:11;;;::::1;::::0;:20:::1;::::0;:47;;;;;;;;;;:11;;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25300:146;25461:37;::::0;;-1:-1:-1;;;;;25461:37:0;::::1;::::0;;;::::1;;;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;::::1;25106:400:::0;;:::o;26047:180::-;3306:24;3319:10;3306:12;:24::i;:::-;3298:48;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;-1:-1:-1;;;3298:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;26135:23:0;::::1;;::::0;;;:15:::1;:23;::::0;;;;;;;;:32;;-1:-1:-1;;26135:32:0::1;::::0;::::1;;::::0;;::::1;::::0;;;26183:36;;;;;;;::::1;::::0;;;::::1;::::0;;;;;;;;::::1;26047:180:::0;;:::o;14492:24::-;;;-1:-1:-1;;;;;14492:24:0;;:::o;3986:107::-;-1:-1:-1;;;;;4066:19:0;4042:4;4066:19;;;:14;:19;;;;;;;;;3986:107::o;23482:116::-;23554:4;;23536:23;;23546:6;;-1:-1:-1;;;;;23554:4:0;23536:9;:23::i;:::-;23575:15;;;;;;;;;;;;;;;;;23482:116;:::o;478:181::-;536:7;568:5;;;592:6;;;;584:46;;;;;-1:-1:-1;;;584:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;807:192;893:7;929:12;921:6;;;;913:29;;;;-1:-1:-1;;;913:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;965:5:0;;;807:192::o;17503:1266::-;-1:-1:-1;;;;;17614:19:0;;17595:4;17614:19;;;:11;:19;;;;;;;;:28;17606:57;;;;;-1:-1:-1;;;17606:57:0;;;;;;;;;;;;-1:-1:-1;;;17606:57:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;17682:22:0;;;;;;:11;:22;;;;;;;;:31;17674:63;;;;;-1:-1:-1;;;17674:63:0;;;;;;;;;;;;-1:-1:-1;;;17674:63:0;;;;;;;;;;;;;;;17751:6;;;;17748:63;;;17767:41;17782:6;17790:9;17801:6;17767:14;:41::i;:::-;17760:48;;;;17748:63;17823:21;17837:6;17823:13;:21::i;:::-;17855:28;17868:6;17876;17855:12;:28::i;:::-;17899:16;:14;:16::i;:::-;17896:35;;;17918:10;:8;:10::i;:::-;17944:19;:17;:19::i;:::-;17941:48;;;17966:20;:18;:20::i;:::-;18005:10;:8;:10::i;:::-;18004:11;:32;;;;-1:-1:-1;18032:4:0;;-1:-1:-1;;;;;18019:17:0;;;18032:4;;18019:17;18004:32;18001:81;;;-1:-1:-1;;;;;18047:17:0;;18067:1;18047:17;;;:9;:17;;;;;;18039:30;;;;;;18071:8;:6;:8::i;:::-;18114:53;;;;;;;;;;;-1:-1:-1;;;18114:53:0;;;;;;;;-1:-1:-1;;;;;18114:17:0;;-1:-1:-1;18114:17:0;;;:9;:17;;;;;;;;:53;;18136:6;;18114:21;:53::i;:::-;-1:-1:-1;;;;;18094:17:0;;;;;;:9;:17;;;;;:73;;;;18205:21;18104:6;18205:13;:21::i;:::-;:67;;18266:6;18205:67;;;18229:34;18237:6;18245:9;18256:6;18229:7;:34::i;:::-;-1:-1:-1;;;;;18306:20:0;;;;;;:9;:20;;;;;;18180:92;;-1:-1:-1;18306:40:0;;18180:92;18306:24;:40::i;:::-;-1:-1:-1;;;;;18283:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;18363:24;;;;;:16;:24;;;;;;;18359:96;;18394:11;;-1:-1:-1;;;;;18423:17:0;;;18394:11;18423:17;;;:9;:17;;;;;;;18394:47;;-1:-1:-1;;;18394:47:0;;;;;;;;;;;;;;:11;;;;;:20;;:47;;;;;;;;;;:11;;:47;;;;;;;;;;;;;;;;;;;;;;;;;18390:63;;-1:-1:-1;;;;;18469:27:0;;;;;;:16;:27;;;;;;;;18465:105;;18503:11;;-1:-1:-1;;;;;18535:20:0;;;18503:11;18535:20;;;:9;:20;;;;;;;18503:53;;-1:-1:-1;;;18503:53:0;;;;;;;;;;;;;;:11;;;;;:20;;:53;;;;;;;;;;:11;;:53;;;;;;;;;;;;;;;;;;;;;;;;;18499:69;;18585:16;;-1:-1:-1;;;18585:16:0;;;;18582:97;;;18621:11;;18641:14;;18621:35;;;-1:-1:-1;;;;;;18621:35:0;;;;;;;;;;-1:-1:-1;;;;;18621:11:0;;;;:19;;:35;;;;;:11;;:35;;;;;;;;:11;;:35;;;;;;;;;;;;;;;;;;;;;;;;;18617:51;;18713:9;-1:-1:-1;;;;;18696:43:0;18705:6;-1:-1:-1;;;;;18696:43:0;;18724:14;18696:43;;;;;;;;;;;;;;;;;;-1:-1:-1;18757:4:0;;17503:1266;-1:-1:-1;;;;17503:1266:0:o;665:136::-;723:7;750:43;754:1;757;750:43;;;;;;;;;;;;;;;;;:3;:43::i;23917:361::-;15051:6;:13;;-1:-1:-1;;15051:13:0;15060:4;15051:13;;;24017:16:::1;::::0;;24031:1:::1;24017:16:::0;;;;;::::1;::::0;;-1:-1:-1;;24017:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;24054:4:0::1;::::0;24044:7;;;;-1:-1:-1;;;;;;24054:4:0::1;::::0;24044:7;;-1:-1:-1;24054:4:0::1;::::0;24044:7:::1;;;;;;;;;:14;-1:-1:-1::0;;;;;24044:14:0::1;;;-1:-1:-1::0;;;;;24044:14:0::1;;;::::0;::::1;24087:4;24069;24074:1;24069:7;;;;;;;;-1:-1:-1::0;;;;;24069:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;24105:6:::1;::::0;:165:::1;::::0;-1:-1:-1;;;24105:165:0;;:6:::1;:165;::::0;::::1;::::0;;;;;::::1;::::0;;;;24244:15:::1;24105:165:::0;;;;;;;;;;;;;;;;;;;;;:6;;;::::1;::::0;:57:::1;::::0;24170:6;;24105;;24208:4;;24227:2;;24105:165;;;;;;;;;::::1;::::0;::::1;::::0;;;:6;:165:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;15069:6:0;:14;;-1:-1:-1;;15069:14:0;;;-1:-1:-1;;;;;;23917:361:0:o;18777:330::-;18907:53;;;;;;;;;;;-1:-1:-1;;;18907:53:0;;;;;;;;-1:-1:-1;;;;;18907:17:0;;18870:4;18907:17;;;:9;:17;;;;;;;:53;;18929:6;;18907:21;:53::i;:::-;-1:-1:-1;;;;;18887:17:0;;;;;;;:9;:17;;;;;;:73;;;;18994:20;;;;;;;:32;;19019:6;18994:24;:32::i;:::-;-1:-1:-1;;;;;18971:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;19042:35;;;;;;;18971:20;;19042:35;;;;;;;;;;;;;-1:-1:-1;19095:4:0;18777:330;;;;;:::o;19115:140::-;19187:10;:8;:10::i;:::-;:34;;;;19201:20;19214:6;19201:12;:20::i;:::-;19179:68;;;;;-1:-1:-1;;;19179:68:0;;;;;;;;;;;;-1:-1:-1;;;19179:68:0;;;;;;;;;;;;;;19263:166;19360:12;;19350:6;:22;;:49;;;-1:-1:-1;;;;;;19376:23:0;;;;;;:15;:23;;;;;;;;19350:49;19342:79;;;;;-1:-1:-1;;;19342:79:0;;;;;;;;;;;;-1:-1:-1;;;19342:79:0;;;;;;;;;;;;;;;19263:166;;:::o;20371:197::-;20458:4;;20420;;-1:-1:-1;;;;;20458:4:0;20444:10;:18;;;;:38;;-1:-1:-1;20476:6:0;;;;20475:7;20444:38;:62;;;;-1:-1:-1;20495:11:0;;;;20444:62;:116;;;;-1:-1:-1;20547:13:0;;20537:4;20519:24;;;;:9;:24;;;;;;:41;;20444:116;20437:123;;20371:197;:::o;20576:2397::-;15051:6;:13;;-1:-1:-1;;15051:13:0;15060:4;15051:13;;;20655::::1;::::0;20628:23:::1;::::0;:40:::1;::::0;::::1;::::0;:62:::1;;-1:-1:-1::0;20672:18:0::1;::::0;::::1;::::0;::::1;;;20628:62;20625:2341;;;20760:13;::::0;20732:23:::1;::::0;:42:::1;::::0;:27:::1;:42::i;:::-;20706:23;:68:::0;20815:13:::1;::::0;20789:23:::1;::::0;20815:20:::1;::::0;20833:1:::1;20815:17;:20::i;:::-;20876:16;::::0;;20890:1:::1;20876:16:::0;;;;;::::1;::::0;;20789:46;;-1:-1:-1;20852:21:0::1;::::0;20876:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20876:16:0::1;20852:40;;20925:4;20907;20912:1;20907:7;;;;;;;;-1:-1:-1::0;;;;;20907:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;20955:4:::1;::::0;20945:7;;20955:4;::::1;::::0;20945;;20955;;20945:7;::::1;;;;;-1:-1:-1::0;;;;;20945:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;21038:6:::1;::::0;:215:::1;::::0;-1:-1:-1;;;21038:215:0;;::::1;::::0;::::1;::::0;;;20976:21:::1;21038:215:::0;;;;;;21199:4:::1;21038:215:::0;;;;;;21223:15:::1;21038:215:::0;;;;;;;;;;;;;;;;;;;;;21000:21:::1;::::0;21038:6;;;::::1;::::0;:57:::1;::::0;21114:15;;20976:21;;21168:4;;21038:215;;;;;;;;;;::::1;::::0;::::1;::::0;;;20976:21;21038:215:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21270:17;21290:40;21316:13;21290:21;:25;;:40;;;;:::i;:::-;21347:6;::::0;21512:21:::1;::::0;21347:235:::1;::::0;;-1:-1:-1;;;21347:235:0;;21414:4:::1;21347:235;::::0;::::1;::::0;;;;;;;:6:::1;:235:::0;;;;;;;;;;-1:-1:-1;;;;;21512:21:0;;::::1;21347:235:::0;;;;21552:15:::1;21347:235:::0;;;;;;21270:60;;-1:-1:-1;21347:6:0;::::1;::::0;:22:::1;::::0;21270:60;;21347:235;;;;;::::1;::::0;;;;;;;;21270:60;21347:6;:235;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;21347:235:0;21616:39;;;;;21347:235:::1;21616:39:::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;20625:2341;;;;;;;21709:13;::::0;21763:16:::1;::::0;;21777:1:::1;21763:16:::0;;;;;::::1;::::0;;21686:20:::1;::::0;21763:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21763:16:0::1;21739:40;;21812:4;21794;21799:1;21794:7;;;;;;;;-1:-1:-1::0;;;;;21794:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;21842:4:::1;::::0;21832:7;;21842:4;::::1;::::0;21832;;21842;;21832:7;::::1;;;;;-1:-1:-1::0;;;;;21832:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;21925:6:::1;::::0;:212:::1;::::0;-1:-1:-1;;;21925:212:0;;::::1;::::0;::::1;::::0;;;21863:21:::1;21925:212:::0;;;;;;22083:4:::1;21925:212:::0;;;;;;22107:15:::1;21925:212:::0;;;;;;;;;;;;;;;;;;;;;21887:21:::1;::::0;21925:6;;;::::1;::::0;:57:::1;::::0;22001:12;;21863:21;;22052:4;;21925:212;;;;;;;;;;::::1;::::0;::::1;::::0;;;21863:21;21925:212:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22154:17;22174:40;22200:13;22174:21;:25;;:40;;;;:::i;:::-;22154:60;;22231:27;22261:42;22294:8;;22261:28;22275:13;;22261:9;:13;;:28;;;;:::i;:::-;:32:::0;::::1;:42::i;:::-;22231:72;;22318:26;22347:41;22379:8;;22347:27;22361:12;;22347:9;:13;;:27;;;;:::i;:41::-;22318:70;;22403:20;22426:35;22452:8;;22426:21;22440:6;;22426:9;:13;;:21;;;;:::i;:35::-;22403:58;;22482:11;;;;;;;;;-1:-1:-1::0;;;;;22482:11:0::1;-1:-1:-1::0;;;;;22482:19:0::1;;22509;22482:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22478:65:::0;22586:20:::1;::::0;22578:77:::1;::::0;22560:12:::1;::::0;-1:-1:-1;;;;;22586:20:0::1;::::0;22645:5:::1;::::0;22620:18;;22560:12;22578:77;22560:12;22578:77;22620:18;22586:20;22645:5;22578:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22559:96;;;22673:7;22670:69;;;22699:13;::::0;:37:::1;::::0;22717:18;22699:17:::1;:37::i;:::-;22683:13;:53:::0;22670:69:::1;22777:14;::::0;22769:65:::1;::::0;-1:-1:-1;;;;;22777:14:0;;::::1;::::0;22824:5:::1;::::0;22805:12;;22777:14:::1;22769:65:::0;22777:14;22769:65;22805:12;22777:14;22824:5;22769:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;22755:79:0;;-1:-1:-1;;22849:51:0;::::1;;;22872:7;::::0;:25:::1;::::0;22884:12;22872:11:::1;:25::i;:::-;22862:7;:35:::0;22849:51:::1;22921:33;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;20625:2341;;;;;;;;;15069:6:::0;:14;;-1:-1:-1;;15069:14:0;;;20576:2397::o;22981:282::-;23071:4;;23033;;-1:-1:-1;;;;;23071:4:0;23057:10;:18;;;;:38;;-1:-1:-1;23089:6:0;;;;23088:7;23057:38;:69;;;;-1:-1:-1;23108:18:0;;;;23057:69;:143;;;;;23188:12;23162:22;;23139:20;;:45;:61;;23057:143;:198;;;;-1:-1:-1;;23238:17:0;;23213:21;:42;;;22981:282::o;23606:303::-;23666:17;;23685:4;;23656:34;;23666:17;-1:-1:-1;;;;;23685:4:0;23656:9;:34::i;:::-;23724:12;23701:20;:35;23799:17;;23772:22;;:45;;:26;:45::i;:::-;23747:22;:70;;;23856:14;;-1:-1:-1;23828:74:0;;;23873:18;:26;;-1:-1:-1;;23873:26:0;;;23828:74;23606:303::o;24729:90::-;24796:10;;:15;;24729:90;:::o;24827:129::-;24878:12;24865:10;:25;24901:16;:23;;-1:-1:-1;;;;24901:23:0;-1:-1:-1;;;24901:23:0;;;24940:8;;;;24901:23;;24940:8;24827:129::o;19437:128::-;19523:10;;19499:4;;19523:10;;:34;;;;-1:-1:-1;;;;;;;19538:19:0;;;;;:11;:19;;;;;;;;19537:20;;19437:128::o;19796:567::-;19967:14;;19956:4;;19881:7;;;;19921:61;;19967:14;19921:41;;19932:29;;-1:-1:-1;;;;;19944:16:0;;;19956:4;;19944:16;19932:11;:29::i;:::-;19921:6;;:10;:41::i;:61::-;20040:4;20022:24;;;;:9;:24;;;;;;19901:81;;-1:-1:-1;20022:39:0;;19901:81;20022:28;:39::i;:::-;20013:4;19995:24;;;;:9;:24;;;;;;;;;:66;;;;20077:42;;;;;;;20013:4;;-1:-1:-1;;;;;20077:42:0;;;;;;;;;;;;;20147:4;;-1:-1:-1;;;;;20135:16:0;;;20147:4;;20135:16;:38;;;;-1:-1:-1;20155:18:0;;;;;;;20135:38;20132:183;;;20215:88;20243:59;20275:26;20288:12;;20275:8;;:12;;:26;;;;:::i;:::-;20257:12;;20243:27;;:9;;:13;:27::i;:59::-;20215:23;;;:27;:88::i;:::-;20189:23;:114;20132:183;20334:21;:6;20345:9;20334:10;:21::i;:::-;20327:28;19796:567;-1:-1:-1;;;;;19796:567:0:o;1261:132::-;1319:7;1346:39;1350:1;1353;1346:39;;;;;;;;;;;;;;;;;:3;:39::i;1005:250::-;1063:7;1087:6;1083:47;;-1:-1:-1;1117:1:0;1110:8;;1083:47;1154:5;;;1158:1;1154;:5;:1;1178:5;;;;;:10;1170:56;;;;-1:-1:-1;;;1170:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1399:345;1485:7;1587:12;1580:5;1572:28;;;;-1:-1:-1;;;1572:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1611:9;1627:1;1623;:5;;;;;;;1399:345;-1:-1:-1;;;;;1399:345:0:o

Swarm Source

ipfs://619185c9c8e006be6c5cef47ce41320c6cb0bee68992ee001a58aaefce381b10
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.