ETH Price: $2,427.24 (+3.36%)

Contract

0x20210e2d942845860128ae4F0bdE8277DcED3d2A
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw From Re...206716552024-09-03 17:50:3510 days ago1725385835IN
0x20210e2d...7DcED3d2A
0 ETH0.000294562
Approve206315902024-08-29 3:34:1116 days ago1724902451IN
0x20210e2d...7DcED3d2A
0 ETH0.000057621.23949216
Approve206265142024-08-28 10:33:3516 days ago1724841215IN
0x20210e2d...7DcED3d2A
0 ETH0.000302896.50835484
Approve206265142024-08-28 10:33:3516 days ago1724841215IN
0x20210e2d...7DcED3d2A
0 ETH0.000302896.50835484
Approve206219622024-08-27 19:18:2317 days ago1724786303IN
0x20210e2d...7DcED3d2A
0 ETH0.000209144.49273877
Approve206216622024-08-27 18:18:1117 days ago1724782691IN
0x20210e2d...7DcED3d2A
0 ETH0.000076921.65465566
Approve206216522024-08-27 18:16:1117 days ago1724782571IN
0x20210e2d...7DcED3d2A
0 ETH0.000195874.20759771
Transfer206216482024-08-27 18:15:2317 days ago1724782523IN
0x20210e2d...7DcED3d2A
0 ETH0.000303971.31099782
Approve206216132024-08-27 18:08:2317 days ago1724782103IN
0x20210e2d...7DcED3d2A
0 ETH0.000055431.19226156
Approve206215942024-08-27 18:04:3517 days ago1724781875IN
0x20210e2d...7DcED3d2A
0 ETH0.000196994.23169823
Approve206215762024-08-27 18:00:5917 days ago1724781659IN
0x20210e2d...7DcED3d2A
0 ETH0.000131232.83821746
Approve206215732024-08-27 18:00:2317 days ago1724781623IN
0x20210e2d...7DcED3d2A
0 ETH0.00029686.37752029
Approve206215692024-08-27 17:59:3517 days ago1724781575IN
0x20210e2d...7DcED3d2A
0 ETH0.000200164.29985043
Approve206215672024-08-27 17:58:5917 days ago1724781539IN
0x20210e2d...7DcED3d2A
0 ETH0.000153263.29236989
Approve206215662024-08-27 17:58:4717 days ago1724781527IN
0x20210e2d...7DcED3d2A
0 ETH0.000292876.29136989
Approve206215622024-08-27 17:57:5917 days ago1724781479IN
0x20210e2d...7DcED3d2A
0 ETH0.000761516.35817461
Approve206215592024-08-27 17:57:2317 days ago1724781443IN
0x20210e2d...7DcED3d2A
0 ETH0.000291916.2706299
Approve206215532024-08-27 17:56:1117 days ago1724781371IN
0x20210e2d...7DcED3d2A
0 ETH0.000106862.2955458
Approve206215442024-08-27 17:54:2317 days ago1724781263IN
0x20210e2d...7DcED3d2A
0 ETH0.000212944.57444787
Approve206215432024-08-27 17:54:1117 days ago1724781251IN
0x20210e2d...7DcED3d2A
0 ETH0.000304216.53501278
Approve206215302024-08-27 17:51:3517 days ago1724781095IN
0x20210e2d...7DcED3d2A
0 ETH0.000220134.72876801
Approve206215292024-08-27 17:51:2317 days ago1724781083IN
0x20210e2d...7DcED3d2A
0 ETH0.000312156.70724244
Approve206215282024-08-27 17:51:1117 days ago1724781071IN
0x20210e2d...7DcED3d2A
0 ETH0.000312366.71003772
Approve206215272024-08-27 17:50:5917 days ago1724781059IN
0x20210e2d...7DcED3d2A
0 ETH0.000221634.76107761
Approve206215262024-08-27 17:50:4717 days ago1724781047IN
0x20210e2d...7DcED3d2A
0 ETH0.000119722.59250278
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
206288132024-08-28 18:15:3516 days ago1724868935
0x20210e2d...7DcED3d2A
0.00041247 ETH
206288132024-08-28 18:15:3516 days ago1724868935
0x20210e2d...7DcED3d2A
0.00041247 ETH
206288132024-08-28 18:15:3516 days ago1724868935
0x20210e2d...7DcED3d2A
0.00082494 ETH
206276272024-08-28 14:16:5916 days ago1724854619
0x20210e2d...7DcED3d2A
0.00213708 ETH
206276272024-08-28 14:16:5916 days ago1724854619
0x20210e2d...7DcED3d2A
0.00213708 ETH
206276272024-08-28 14:16:5916 days ago1724854619
0x20210e2d...7DcED3d2A
0.00427417 ETH
206265162024-08-28 10:33:5916 days ago1724841239
0x20210e2d...7DcED3d2A
0.0011032 ETH
206265162024-08-28 10:33:5916 days ago1724841239
0x20210e2d...7DcED3d2A
0.0011032 ETH
206265162024-08-28 10:33:5916 days ago1724841239
0x20210e2d...7DcED3d2A
0.00220641 ETH
206264532024-08-28 10:21:2316 days ago1724840483
0x20210e2d...7DcED3d2A
0.00209477 ETH
206264532024-08-28 10:21:2316 days ago1724840483
0x20210e2d...7DcED3d2A
0.00209477 ETH
206264532024-08-28 10:21:2316 days ago1724840483
0x20210e2d...7DcED3d2A
0.00418954 ETH
206219212024-08-27 19:10:1117 days ago1724785811
0x20210e2d...7DcED3d2A
0.00384084 ETH
206219212024-08-27 19:10:1117 days ago1724785811
0x20210e2d...7DcED3d2A
0.00384084 ETH
206219212024-08-27 19:10:1117 days ago1724785811
0x20210e2d...7DcED3d2A
0.00768168 ETH
206216842024-08-27 18:22:3517 days ago1724782955
0x20210e2d...7DcED3d2A
0.00748788 ETH
206216842024-08-27 18:22:3517 days ago1724782955
0x20210e2d...7DcED3d2A
0.00748788 ETH
206216842024-08-27 18:22:3517 days ago1724782955
0x20210e2d...7DcED3d2A
0.01497576 ETH
206216422024-08-27 18:14:1117 days ago1724782451
0x20210e2d...7DcED3d2A
0.01344153 ETH
206216422024-08-27 18:14:1117 days ago1724782451
0x20210e2d...7DcED3d2A
0.01344153 ETH
206216422024-08-27 18:14:1117 days ago1724782451
0x20210e2d...7DcED3d2A
0.02688306 ETH
206215762024-08-27 18:00:5917 days ago1724781659
0x20210e2d...7DcED3d2A
0.02260977 ETH
206215762024-08-27 18:00:5917 days ago1724781659
0x20210e2d...7DcED3d2A
0.02260977 ETH
206215762024-08-27 18:00:5917 days ago1724781659
0x20210e2d...7DcED3d2A
0.04521955 ETH
206215302024-08-27 17:51:3517 days ago1724781095
0x20210e2d...7DcED3d2A
0.02227458 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
QBTC

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
istanbul EvmVersion, MIT license

Contract Source Code (Solidity)

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

/*
Quarter Bitcoin (QBTC): The Ultimate High-Risk, High-Reward Play

Quarter Bitcoin (QBTC) is your chance to enter an ultra-low market cap gem with explosive potential. 
With a total supply of just 5,250,000 QBTC and an initial buy limit of 0.5%, 
this token is designed to prevent whales and ensure a fair start. 
The max wallet size is also capped at 0.5%, making it a truly community-driven project.

Earn Bitcoin simply by holding QBTC, as 1% of each transaction is distributed to holders. 
Another 1% goes into marketing and buybacks, fueling growth and hype around the token.

To secure its future, we're starting with a minimal liquidity pool of 0.04 ETH, which will be burned immediately. 
This move locks QBTC into the Ethereum blockchain, creating a permanent token.

The contract is coded so that the tax rate can never be set higher than 2%,
ensuring a safe and fair experience for all holders. 
At a market cap of $20,000, all limits on maximum transactions and wallet sizes will be removed before the contract is renounced, 
setting the stage for unrestricted growth.

Join us in this high-stakes venture and be part of something potentially monumental. 
Quarter Bitcoin (QBTC) is set for a thrilling ride – 
either it moons, or it becomes an indelible part of Ethereum's history.
*/
pragma solidity 0.8.13;
// SPDX-License-Identifier: MIT
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;
    }
}

/**
 * ERC20 standard interface.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

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

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

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

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

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

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

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

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

    /**
     * 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;
    }

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

    /**
     * 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);
}

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,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

interface IRewardsDividends {
    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution
    ) external;

    function setShare(address shareholder, uint256 amount) external;

    function deposit() external payable;

    function process(uint256 gas) external;

    function withdraw(address shareholder) external;

    function removeStuckDividends() external;
}

contract RewardsDividends is IRewardsDividends {
    using SafeMath for uint256;
    address _token;

    address public WBTC;

    IDEXRouter router;

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

    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 = 60 minutes;
    uint256 public minDistribution = 1 * (10 ** 18);

    uint256 public currentIndex;
    bool initialized;

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

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

    constructor() {
        _token = msg.sender;
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WBTC = 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599; //WBTC
    }

    receive() external payable {
        deposit();
    }

    function removeStuckDividends() external onlyToken {
        uint256 balance = IERC20(WBTC).balanceOf(address(this));

        IERC20(WBTC).transfer(
            address(msg.sender),
            balance
        );
    }

    function setDistributionCriteria(
        uint256 newMinPeriod,
        uint256 newMinDistribution
    ) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    }

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

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

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(
            shares[shareholder].amount
        );
    }

    function deposit() public payable override {
        uint256 balanceBefore = IERC20(WBTC).balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(WBTC);

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

        uint256 amount = IERC20(WBTC).balanceOf(address(this)).sub(
            balanceBefore
        );
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(
            dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)
        );
    }

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

        if (shareholderCount == 0) {
            return;
        }

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

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

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

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

    function shouldDistribute(address shareholder) public 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);
            IERC20(WBTC).transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder]
                .totalRealised
                .add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(
                shares[shareholder].amount
            );
        }
    }

    function withdraw(address shareholder) external override onlyToken {
        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();
    }
}

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

    address public WBTC = 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599; //WBTC
    string private constant _name = unicode"Quarter Bitcoin";
    string private constant _symbol = unicode"QBTC";
    uint8 private constant _decimals = 9;

    uint256 private _totalSupply = 5_250_000 * (10**_decimals);

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

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

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

    address public lpWallet = msg.sender;

    uint256 public buyFee = 2;
    uint256 public sellFee = 2;

    uint256 public toReflections = 50;
    uint256 public toMarketing = 50;

    uint256 public allocationSum = 100;

    IDEXRouter public router;
    address public pair;
    address public factory;
    address private tokenOwner;
    address public devWallet;
  
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingOpen = false;

    RewardsDividends public rewards;
    uint256 public rewardsGas = 0;

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    uint256 public maxTx = 26_250 * (10**_decimals);
    uint256 public maxWallet = 26_250 * (10**_decimals);
    uint256 public swapThreshold = _totalSupply.div(400);

    constructor(address _owner) Auth(_owner) {
        devWallet = payable(_owner);

        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));

        _allowances[address(this)][address(router)] = type(uint256).max;

        rewards = new RewardsDividends();

        isFeeExempt[_owner] = true;
        isFeeExempt[devWallet] = true;

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

        isTxLimitExempt[_owner] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[devWallet] = true;

        _balances[_owner] = _totalSupply;

        emit Transfer(address(0), _owner, _totalSupply);
    }

    receive() external payable {}

    //once enabled, cannot be reversed
    function enableTrading() external onlyOwner {
        tradingOpen = true;
        buyFee = 5;
        sellFee = 5;
        toReflections = 50;
        toMarketing = 50;
    }

     function finalTaxes() external onlyOwner {
        buyFee = 2;
        sellFee = 2;
        toReflections = 50;
        toMarketing = 50;
    }

    function changeTotalFees(uint256 newBuyFee, uint256 newSellFee)
        external
        onlyOwner
    {
        buyFee = newBuyFee;
        sellFee = newSellFee;

        require(buyFee <= 2, "too high");
        require(sellFee <= 2, "too high");
    }

    function changeFeeAllocation(uint256 newRewardFee, uint256 newMarketingFee)
        external
        onlyOwner
    {
        toReflections = newRewardFee;
        toMarketing = newMarketingFee;
    }

    function changeTxLimit(uint256 newLimit) external onlyOwner {
        require(newLimit >= maxTx, "Can not lower max tx");
        maxTx = newLimit;
    }

    function changeWalletLimit(uint256 newLimit) external onlyOwner {
        require(newLimit >= maxWallet, "Can not lower max wallet");
        maxWallet = newLimit;
    }

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

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

    function setDevWallet(address payable newDevWallet) external onlyOwner {
        devWallet = payable(newDevWallet);
    }

    function setOwnerWallet(address payable newOwnerWallet) external onlyOwner {
        tokenOwner = newOwnerWallet;
    }

    function changeSwapBackSettings(
        bool enableSwapBack,
        uint256 newSwapBackLimit
    ) external onlyOwner {
        swapAndLiquifyEnabled = enableSwapBack;
        swapThreshold = newSwapBackLimit;
    }

    function setDistributionCriteria(
        uint256 newMinPeriod,
        uint256 newMinDistribution
    ) external onlyOwner {
        rewards.setDistributionCriteria(newMinPeriod, newMinDistribution);
    }

    function _setIsDividendExempt(address holder, bool exempt) internal {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if (exempt) {
            rewards.setShare(holder, 0);
        } else {
            rewards.setShare(holder, _balances[holder]);
        }
    }

    function setIsDividendExempt(address holder, bool exempt)
        external
        onlyOwner
    {
        _setIsDividendExempt(holder, exempt);
    }

    function changeRewardsGas(uint256 newGas) external onlyOwner {
        rewardsGas = newGas;
    }

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

    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, type(uint256).max);
    }

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender]
                .sub(amount, "Insufficient Allowance");
        }

        return _transfer(sender, recipient, amount);
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        if (sender != owner && recipient != owner)
            require(tradingOpen, "hold ur horses big guy."); //transfers disabled before tradingActive

        if (inSwapAndLiquify) {
            return _basicTransfer(sender, recipient, amount);
        }

        require(amount <= maxTx || isTxLimitExempt[sender], "tx");



        if (!isTxLimitExempt[recipient]) {
            require(_balances[recipient].add(amount) <= maxWallet, "wallet");
        }

        if (
            msg.sender != pair &&
            !inSwapAndLiquify &&
            swapAndLiquifyEnabled &&
            _balances[address(this)] >= swapThreshold
        ) {
            swapBack();
        }

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

        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient]
            ? takeFee(sender, recipient, amount)
            : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

        // Dividend tracker
        if (!isDividendExempt[sender]) {
            try rewards.setShare(sender, _balances[sender]) {} catch {}
        }

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

        emit Transfer(sender, recipient, finalAmount);
        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 takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeApplicable = pair == recipient ? sellFee : buyFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

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

        return amount.sub(feeAmount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        approve(address(this), tokenAmount);

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            lpWallet,
            block.timestamp
        );
    }

    function swapBack() internal lockTheSwap {
        swapTokensForEth(_balances[address(this)]);

        uint256 totalEthBalance = address(this).balance;

        uint256 ethForWbtc = totalEthBalance.mul(toReflections).div(100);

        try rewards.deposit{value: ethForWbtc}() {} catch {}

        payable(devWallet).transfer(address(this).balance);
    }

    function manualSwapBack() external onlyOwner {
        swapBack();
    }

    function clearStuckEth() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance > 0) {
            payable(devWallet).transfer(contractETHBalance);
        }
    }

    function manualProcessGas(uint256 manualGas) external onlyOwner {
        rewards.process(manualGas);
    }

    function checkPendingReflections(address shareholder)
        external
        view
        returns (uint256)
    {
        return rewards.getUnpaidEarnings(shareholder);
    }

    function withdrawFromRewards() external {
        rewards.withdraw(msg.sender);
    }

    function rescueTokens(address _tokenAddr, address _to, uint _amount) public onlyOwner {
        IERC20(_tokenAddr).transfer(_to, _amount);
    }

    function removeStuckDividends() external onlyOwner {
        rewards.removeStuckDividends();
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"WBTC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allocationSum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRewardFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"}],"name":"changeFeeAllocation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newGas","type":"uint256"}],"name":"changeRewardsGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"changeTotalFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"checkPendingReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finalTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","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":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"manualGas","type":"uint256"}],"name":"manualProcessGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeStuckDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewards","outputs":[{"internalType":"contract RewardsDividends","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"newDevWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"setDistributionCriteria","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 payable","name":"newOwnerWallet","type":"address"}],"name":"setOwnerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"toMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawFromRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031916732260fac5e5542a773aa44fbcfedf7c193bc2c599179055620000386009600a62000634565b620000479062501bd062000645565b600355600880546001600160a01b031990811661dead179091556009805482168155600d805490921633179091556002600e819055600f556032601081905560115560646012556017805461ffff60a81b1916600160a81b1790556000601955620000b490600a62000634565b620000c29061668a62000645565b601a55620000d36009600a62000634565b620000e19061668a62000645565b601b55620001026101906003546200047b60201b620016291790919060201c565b601c553480156200011257600080fd5b5060405162003d5b38038062003d5b833981016040819052620001359162000667565b600080546001600160a01b03199081166001600160a01b038416908117835580835260016020818152604094859020805460ff191690921790915560178054841690921790915560138054737a250d5630b4cf539739df2c5dacb4c659f2488d93168317905582516315ab88c960e31b81529251919263ad5c464892600482810193928290030181865afa158015620001d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f8919062000667565b600780546001600160a01b0319166001600160a01b039283161790556013546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000257573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027d919062000667565b6007546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af1158015620002cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f5919062000667565b601480546001600160a01b0319166001600160a01b039283161790553060009081526005602090815260408083206013549094168352929052819020600019905551620003429062000513565b604051809103906000f0801580156200035f573d6000803e3d6000fd5b50601880546001600160a01b0319166001600160a01b039283161790558181166000818152600a60209081526040808320805460ff199081166001908117909255601780548816865283862080548316841790556014805489168752600c865284872080548416851790553087528487208054841685179055600880548a1688528588208054851686179055888852600b87528588208054851686179055905489168752848720805484168517905554881686528386208054831684179055549096168452818420805490961617909455600354838352600482528483208190559351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000714565b6000620004c583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620004ce60201b60201c565b90505b92915050565b60008183620004fb5760405162461bcd60e51b8152600401620004f2919062000699565b60405180910390fd5b5060006200050a8486620006f1565b95945050505050565b6111be8062002b9d83390190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005785781600019048211156200055c576200055c62000521565b808516156200056a57918102915b93841c93908002906200053c565b509250929050565b6000826200059157506001620004c8565b81620005a057506000620004c8565b8160018114620005b95760028114620005c457620005e4565b6001915050620004c8565b60ff841115620005d857620005d862000521565b50506001821b620004c8565b5060208310610133831016604e8410600b841016171562000609575081810a620004c8565b62000615838362000537565b80600019048211156200062c576200062c62000521565b029392505050565b6000620004c560ff84168362000580565b600081600019048311821515161562000662576200066262000521565b500290565b6000602082840312156200067a57600080fd5b81516001600160a01b03811681146200069257600080fd5b9392505050565b600060208083528351808285015260005b81811015620006c857858101830151858201604001528201620006aa565b81811115620006db576000604083870101525b50601f01601f1916929092016040019392505050565b6000826200070f57634e487b7160e01b600052601260045260246000fd5b500490565b61247980620007246000396000f3fe6080604052600436106103905760003560e01c806381934031116101dc578063ca19e83011610102578063f0b37c04116100a0578063f8b45b051161006f578063f8b45b0514610ab5578063fabe628314610acb578063fe9fbb8014610aeb578063ffb54a9914610b2457600080fd5b8063f0b37c0414610a35578063f2fde38b14610a55578063f708a64f14610a75578063f887ea4014610a9557600080fd5b8063d52576b5116100dc578063d52576b5146109a5578063d920334e146109ba578063dd62ed3e146109da578063dfbfbc6b14610a2057600080fd5b8063ca19e8301461094f578063caa5581b1461096f578063cea9d26f1461098557600080fd5b80639ec5a8941161017a578063ad32330b11610149578063ad32330b146108d9578063b6a5d7de146108ef578063bb542ef01461090f578063c45a01551461092f57600080fd5b80639ec5a89414610859578063a3a2e89e14610879578063a8aa1b3114610899578063a9059cbb146108b957600080fd5b80638a8c523c116101b65780638a8c523c146107c75780638b42507f146107dc5780638ea5220f1461080c57806395d89b411461082c57600080fd5b8063819340311461077457806389291a8f14610794578063893d20e8146107a957600080fd5b80633f4218e0116102c1578063571ac8b01161025f5780637437681e1161022e5780637437681e1461070857806375df13051461071e57806377359aa7146107345780637db1342c1461075457600080fd5b8063571ac8b01461067d5780636303516c1461069d57806366eb3785146106bd57806370a08231146106d257600080fd5b8063470624021161029b57806347062402146105f95780634a74bb021461060f5780634d07912a146106305780634dede3de1461064557600080fd5b80633f4218e0146105835780634355855a146105b357806345434377146105e357600080fd5b80632b112e491161032e5780632f54bf6e116103085780632f54bf6e146104f857806330ca34ee14610527578063313ce567146105475780633dab52691461056357600080fd5b80632b112e49146104ad5780632b14ca56146104c25780632d48e896146104d857600080fd5b8063127cf7ac1161036a578063127cf7ac1461043657806318160ddd146104585780631f53ac021461046d57806323b872dd1461048d57600080fd5b80630445b6671461039c57806306fdde03146103c5578063095ea7b31461040657600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b2601c5481565b6040519081526020015b60405180910390f35b3480156103d157600080fd5b5060408051808201909152600f81526e28bab0b93a32b9102134ba31b7b4b760891b60208201525b6040516103bc9190612101565b34801561041257600080fd5b5061042661042136600461216b565b610b45565b60405190151581526020016103bc565b34801561044257600080fd5b50610456610451366004612197565b610bb2565b005b34801561046457600080fd5b506003546103b2565b34801561047957600080fd5b506104566104883660046121b0565b610bea565b34801561049957600080fd5b506104266104a83660046121cd565b610c36565b3480156104b957600080fd5b506103b2610cf8565b3480156104ce57600080fd5b506103b2600f5481565b3480156104e457600080fd5b506104566104f336600461220e565b610d4a565b34801561050457600080fd5b506104266105133660046121b0565b6000546001600160a01b0391821691161490565b34801561053357600080fd5b5061045661054236600461220e565b610dde565b34801561055357600080fd5b50604051600981526020016103bc565b34801561056f57600080fd5b5061045661057e36600461223e565b610e90565b34801561058f57600080fd5b5061042661059e3660046121b0565b600a6020526000908152604090205460ff1681565b3480156105bf57600080fd5b506104266105ce3660046121b0565b600c6020526000908152604090205460ff1681565b3480156105ef57600080fd5b506103b260125481565b34801561060557600080fd5b506103b2600e5481565b34801561061b57600080fd5b5060175461042690600160a81b900460ff1681565b34801561063c57600080fd5b50610456610edc565b34801561065157600080fd5b50600254610665906001600160a01b031681565b6040516001600160a01b0390911681526020016103bc565b34801561068957600080fd5b506104266106983660046121b0565b610f1c565b3480156106a957600080fd5b50600d54610665906001600160a01b031681565b3480156106c957600080fd5b50610456610f2a565b3480156106de57600080fd5b506103b26106ed3660046121b0565b6001600160a01b031660009081526004602052604090205490565b34801561071457600080fd5b506103b2601a5481565b34801561072a57600080fd5b506103b260115481565b34801561074057600080fd5b506103b261074f3660046121b0565b610f5e565b34801561076057600080fd5b5061045661076f366004612197565b610fcd565b34801561078057600080fd5b5061045661078f366004612197565b61104e565b3480156107a057600080fd5b506104566110dc565b3480156107b557600080fd5b506000546001600160a01b0316610665565b3480156107d357600080fd5b5061045661114a565b3480156107e857600080fd5b506104266107f73660046121b0565b600b6020526000908152604090205460ff1681565b34801561081857600080fd5b50601754610665906001600160a01b031681565b34801561083857600080fd5b506040805180820190915260048152635142544360e01b60208201526103f9565b34801561086557600080fd5b50601854610665906001600160a01b031681565b34801561088557600080fd5b5061045661089436600461225c565b61119d565b3480156108a557600080fd5b50601454610665906001600160a01b031681565b3480156108c557600080fd5b506104266108d436600461216b565b6111f2565b3480156108e557600080fd5b506103b260195481565b3480156108fb57600080fd5b5061045661090a3660046121b0565b6111ff565b34801561091b57600080fd5b5061045661092a3660046121b0565b611250565b34801561093b57600080fd5b50601554610665906001600160a01b031681565b34801561095b57600080fd5b5061045661096a36600461220e565b61129c565b34801561097b57600080fd5b506103b260105481565b34801561099157600080fd5b506104566109a03660046121cd565b6112d1565b3480156109b157600080fd5b50610456611374565b3480156109c657600080fd5b506104566109d5366004612197565b6113cd565b3480156109e657600080fd5b506103b26109f5366004612295565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610a2c57600080fd5b50610456611445565b348015610a4157600080fd5b50610456610a503660046121b0565b6114bf565b348015610a6157600080fd5b50610456610a703660046121b0565b61150a565b348015610a8157600080fd5b50610456610a9036600461225c565b6115a0565b348015610aa157600080fd5b50601354610665906001600160a01b031681565b348015610ac157600080fd5b506103b2601b5481565b348015610ad757600080fd5b50610456610ae636600461225c565b6115d4565b348015610af757600080fd5b50610426610b063660046121b0565b6001600160a01b031660009081526001602052604090205460ff1690565b348015610b3057600080fd5b5060175461042690600160b01b900460ff1681565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ba09086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610be55760405162461bcd60e51b8152600401610bdc906122c3565b60405180910390fd5b601955565b6000546001600160a01b03163314610c145760405162461bcd60e51b8152600401610bdc906122c3565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610ce3576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600582528381203382529091529190912054610cbe91849061166b565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b610cee8484846116a5565b90505b9392505050565b6009546001600160a01b0316600090815260046020526040812054610d45906008546001600160a01b0316600090815260046020526040902054610d3f9060035490611afb565b90611afb565b905090565b6000546001600160a01b03163314610d745760405162461bcd60e51b8152600401610bdc906122c3565b6018546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b158015610dc257600080fd5b505af1158015610dd6573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610e085760405162461bcd60e51b8152600401610bdc906122c3565b600e829055600f8190556002821115610e4e5760405162461bcd60e51b81526020600482015260086024820152670e8dede40d0d2ced60c31b6044820152606401610bdc565b6002600f541115610e8c5760405162461bcd60e51b81526020600482015260086024820152670e8dede40d0d2ced60c31b6044820152606401610bdc565b5050565b6000546001600160a01b03163314610eba5760405162461bcd60e51b8152600401610bdc906122c3565b60178054921515600160a81b0260ff60a81b1990931692909217909155601c55565b6000546001600160a01b03163314610f065760405162461bcd60e51b8152600401610bdc906122c3565b6002600e819055600f5560326010819055601155565b6000610bac82600019610b45565b6000546001600160a01b03163314610f545760405162461bcd60e51b8152600401610bdc906122c3565b610f5c611b3d565b565b60185460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd319890602401602060405180830381865afa158015610fa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bac91906122e3565b6000546001600160a01b03163314610ff75760405162461bcd60e51b8152600401610bdc906122c3565b601b548110156110495760405162461bcd60e51b815260206004820152601860248201527f43616e206e6f74206c6f776572206d61782077616c6c657400000000000000006044820152606401610bdc565b601b55565b6000546001600160a01b031633146110785760405162461bcd60e51b8152600401610bdc906122c3565b6018546040516001624d3b8760e01b03198152600481018390526001600160a01b039091169063ffb2c47990602401600060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031633146111065760405162461bcd60e51b8152600401610bdc906122c3565b478015611147576017546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610e8c573d6000803e3d6000fd5b50565b6000546001600160a01b031633146111745760405162461bcd60e51b8152600401610bdc906122c3565b6017805460ff60b01b1916600160b01b1790556005600e819055600f5560326010819055601155565b6000546001600160a01b031633146111c75760405162461bcd60e51b8152600401610bdc906122c3565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000610cf13384846116a5565b6000546001600160a01b031633146112295760405162461bcd60e51b8152600401610bdc906122c3565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b0316331461127a5760405162461bcd60e51b8152600401610bdc906122c3565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112c65760405162461bcd60e51b8152600401610bdc906122c3565b601091909155601155565b6000546001600160a01b031633146112fb5760405162461bcd60e51b8152600401610bdc906122c3565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af115801561134a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136e91906122fc565b50505050565b6018546040516351cff8d960e01b81523360048201526001600160a01b03909116906351cff8d990602401600060405180830381600087803b1580156113b957600080fd5b505af115801561136e573d6000803e3d6000fd5b6000546001600160a01b031633146113f75760405162461bcd60e51b8152600401610bdc906122c3565b601a548110156114405760405162461bcd60e51b8152602060048201526014602482015273086c2dc40dcdee840d8deeecae440dac2f040e8f60631b6044820152606401610bdc565b601a55565b6000546001600160a01b0316331461146f5760405162461bcd60e51b8152600401610bdc906122c3565b601860009054906101000a90046001600160a01b03166001600160a01b031663dfbfbc6b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156113b957600080fd5b6000546001600160a01b031633146114e95760405162461bcd60e51b8152600401610bdc906122c3565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146115345760405162461bcd60e51b8152600401610bdc906122c3565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6000546001600160a01b031633146115ca5760405162461bcd60e51b8152600401610bdc906122c3565b610e8c8282611c40565b6000546001600160a01b031633146115fe5760405162461bcd60e51b8152600401610bdc906122c3565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000610cf183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d20565b6000818484111561168f5760405162461bcd60e51b8152600401610bdc9190612101565b50600061169c848661232f565b95945050505050565b600080546001600160a01b038581169116148015906116d257506000546001600160a01b03848116911614155b1561173057601754600160b01b900460ff166117305760405162461bcd60e51b815260206004820152601760248201527f686f6c6420757220686f7273657320626967206775792e0000000000000000006044820152606401610bdc565b601754600160a01b900460ff16156117545761174d848484611d4e565b9050610cf1565b601a548211158061177d57506001600160a01b0384166000908152600b602052604090205460ff165b6117ae5760405162461bcd60e51b81526020600482015260026024820152610e8f60f31b6044820152606401610bdc565b6001600160a01b0383166000908152600b602052604090205460ff1661182b57601b546001600160a01b0384166000908152600460205260409020546117f49084611e34565b111561182b5760405162461bcd60e51b81526020600482015260066024820152651dd85b1b195d60d21b6044820152606401610bdc565b6014546001600160a01b031633148015906118505750601754600160a01b900460ff16155b80156118655750601754600160a81b900460ff165b80156118825750601c543060009081526004602052604090205410155b1561188f5761188f611b3d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600490915291909120546118e191849061166b565b6001600160a01b038516600090815260046020908152604080832093909355600a90529081205460ff1615801561193157506001600160a01b0384166000908152600a602052604090205460ff16155b61193b5782611946565b611946858585611e93565b6001600160a01b03851660009081526004602052604090205490915061196c9082611e34565b6001600160a01b038086166000908152600460209081526040808320949094559188168152600c909152205460ff16611a11576018546001600160a01b03868116600081815260046020819052604091829020549151630a5b654b60e11b81529081019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156119fe57600080fd5b505af1925050508015611a0f575060015b505b6001600160a01b0384166000908152600c602052604090205460ff16611aa3576018546001600160a01b03858116600081815260046020819052604091829020549151630a5b654b60e11b81529081019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611a9057600080fd5b505af1925050508015611aa1575060015b505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ae891815260200190565b60405180910390a3506001949350505050565b6000610cf183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061166b565b6017805460ff60a01b1916600160a01b17905530600090815260046020526040902054611b6990611f56565b60004790506000611b906064611b8a6010548561207f90919063ffffffff16565b90611629565b9050601860009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611be257600080fd5b505af193505050508015611bf4575060015b506017546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611c2e573d6000803e3d6000fd5b50506017805460ff60a01b1916905550565b6001600160a01b0382163014801590611c6757506014546001600160a01b03838116911614155b611c7057600080fd5b6001600160a01b0382166000908152600c60205260409020805460ff19168215801591909117909155611cd657601854604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401610da8565b6018546001600160a01b03838116600081815260046020819052604091829020549151630a5b654b60e11b81529081019290925260248201529116906314b6ca9690604401610da8565b60008183611d415760405162461bcd60e51b8152600401610bdc9190612101565b50600061169c8486612346565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600490915291822054611d9f91849061166b565b6001600160a01b038086166000908152600460205260408082209390935590851681522054611dce9083611e34565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e229086815260200190565b60405180910390a35060019392505050565b600080611e418385612368565b905083811015610cf15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610bdc565b60145460009081906001600160a01b03858116911614611eb557600e54611eb9565b600f545b90506000611ecc6064611b8a868561207f565b30600090815260046020526040902054909150611ee99082611e34565b30600081815260046020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f3a9085815260200190565b60405180910390a3611f4c8482611afb565b9695505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f8b57611f8b612380565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611fe4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120089190612396565b8160018151811061201b5761201b612380565b60200260200101906001600160a01b031690816001600160a01b0316815250506120453083610b45565b5060135460405163791ac94760e01b81526001600160a01b039091169063791ac94790610da89085906000908690309042906004016123b3565b60008260000361209157506000610bac565b600061209d8385612424565b9050826120aa8583612346565b14610cf15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610bdc565b600060208083528351808285015260005b8181101561212e57858101830151858201604001528201612112565b81811115612140576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461114757600080fd5b6000806040838503121561217e57600080fd5b823561218981612156565b946020939093013593505050565b6000602082840312156121a957600080fd5b5035919050565b6000602082840312156121c257600080fd5b8135610cf181612156565b6000806000606084860312156121e257600080fd5b83356121ed81612156565b925060208401356121fd81612156565b929592945050506040919091013590565b6000806040838503121561222157600080fd5b50508035926020909101359150565b801515811461114757600080fd5b6000806040838503121561225157600080fd5b823561218981612230565b6000806040838503121561226f57600080fd5b823561227a81612156565b9150602083013561228a81612230565b809150509250929050565b600080604083850312156122a857600080fd5b82356122b381612156565b9150602083013561228a81612156565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6000602082840312156122f557600080fd5b5051919050565b60006020828403121561230e57600080fd5b8151610cf181612230565b634e487b7160e01b600052601160045260246000fd5b60008282101561234157612341612319565b500390565b60008261236357634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561237b5761237b612319565b500190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156123a857600080fd5b8151610cf181612156565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124035784516001600160a01b0316835293830193918301916001016123de565b50506001600160a01b03969096166060850152505050608001529392505050565b600081600019048311821515161561243e5761243e612319565b50029056fea2646970667358221220ae4c01a6058e620701e207c3b8729a5c4427dc3311c580c642352fff572cb4fe64736f6c634300080d003360806040526ec097ce7bc90715b34b9f1000000000600b55610e10600c55670de0b6b3a7640000600d5534801561003557600080fd5b50600080546001600160a01b03199081163317909155600280548216737a250d5630b4cf539739df2c5dacb4c659f2488d17905560018054909116732260fac5e5542a773aa44fbcfedf7c193bc2c599179055611127806100976000396000f3fe60806040526004361061010d5760003560e01c80638c21cd5211610095578063dfbfbc6b11610064578063dfbfbc6b146102e9578063e2d2e219146102fe578063efca2eed14610314578063ffb2c4791461032a578063ffd49c841461034a57600080fd5b80638c21cd5214610244578063997664d714610274578063ce7c2ac21461028a578063d0e30db0146102e157600080fd5b80632d48e896116100dc5780632d48e896146101a05780633a98ef39146101c05780634dede3de146101d65780634fab0ae81461020e57806351cff8d91461022457600080fd5b806311ce023d1461012157806314b6ca961461014a57806326987b601461016a57806328fd31981461018057600080fd5b3661011c5761011a610360565b005b600080fd5b34801561012d57600080fd5b50610137600b5481565b6040519081526020015b60405180910390f35b34801561015657600080fd5b5061011a610165366004610e8b565b6105d8565b34801561017657600080fd5b50610137600e5481565b34801561018c57600080fd5b5061013761019b366004610eb7565b610750565b3480156101ac57600080fd5b5061011a6101bb366004610ed4565b6107db565b3480156101cc57600080fd5b5061013760075481565b3480156101e257600080fd5b506001546101f6906001600160a01b031681565b6040516001600160a01b039091168152602001610141565b34801561021a57600080fd5b50610137600d5481565b34801561023057600080fd5b5061011a61023f366004610eb7565b6107fd565b34801561025057600080fd5b5061026461025f366004610eb7565b610820565b6040519015158152602001610141565b34801561028057600080fd5b5061013760085481565b34801561029657600080fd5b506102c66102a5366004610eb7565b60066020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610141565b61011a610360565b3480156102f557600080fd5b5061011a610866565b34801561030a57600080fd5b50610137600a5481565b34801561032057600080fd5b5061013760095481565b34801561033657600080fd5b5061011a610345366004610ef6565b610964565b34801561035657600080fd5b50610137600c5481565b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156103a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103cd9190610f0f565b60408051600280825260608201835292935060009290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561043c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104609190610f28565b8160008151811061047357610473610f45565b6001600160a01b03928316602091820292909201015260018054835192169183919081106104a3576104a3610f45565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de959034906104e990600090869030904290600401610f5b565b6000604051808303818588803b15801561050257600080fd5b505af1158015610516573d6000803e3d6000fd5b50506001546040516370a0823160e01b81523060048201526000945061059693508692506001600160a01b03909116906370a0823190602401602060405180830381865afa15801561056c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105909190610f0f565b90610a51565b6008549091506105a69082610a9a565b600855600754600b546105d0916105c7916105c19085610afe565b90610b80565b600a5490610a9a565b600a55505050565b6000546001600160a01b031633146105ef57600080fd5b6001600160a01b038216600090815260066020526040902054156106165761061682610bc2565b60008111801561063c57506001600160a01b038216600090815260066020526040902054155b156106a257600380546001600160a01b0384166000818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790556106d5565b801580156106c757506001600160a01b03821660009081526006602052604090205415155b156106d5576106d582610cdc565b6001600160a01b03821660009081526006602052604090205460075461070691839161070091610a51565b90610a9a565b6007556001600160a01b038216600090815260066020526040902081905561072d81610df1565b6001600160a01b0390921660009081526006602052604090206001019190915550565b6001600160a01b038116600090815260066020526040812054810361077757506000919050565b6001600160a01b03821660009081526006602052604081205461079990610df1565b6001600160a01b0384166000908152600660205260409020600101549091508082116107c9575060009392505050565b6107d38282610a51565b949350505050565b6000546001600160a01b031633146107f257600080fd5b600c91909155600d55565b6000546001600160a01b0316331461081457600080fd5b61081d81610bc2565b50565b600c546001600160a01b0382166000908152600560205260408120549091429161084a9190610fdb565b1080156108605750600d5461085e83610750565b115b92915050565b6000546001600160a01b0316331461087d57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156108c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ea9190610f0f565b60015460405163a9059cbb60e01b8152336004820152602481018390529192506001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561093c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109609190610ff3565b5050565b6003546000819003610974575050565b60008060005a90505b848210801561098b57508383105b15610a4a5783600e541061099f576000600e555b6109d16003600e54815481106109b7576109b7610f45565b6000918252602090912001546001600160a01b0316610820565b15610a0857610a086003600e54815481106109ee576109ee610f45565b6000918252602090912001546001600160a01b0316610bc2565b610a1d610a165a8390610a51565b8390610a9a565b91505a600e80549192506000610a3283611015565b91905055508280610a4290611015565b93505061097d565b5050505050565b6000610a9383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e0e565b9392505050565b600080610aa78385610fdb565b905083811015610a935760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b600082600003610b1057506000610860565b6000610b1c838561102e565b905082610b29858361104d565b14610a935760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610af5565b6000610a9383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610e48565b6001600160a01b0381166000908152600660205260408120549003610be45750565b6000610bef82610750565b9050801561096057600954610c049082610a9a565b60095560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610c5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7e9190610ff3565b506001600160a01b03821660009081526005602090815260408083204290556006909152902060020154610cb29082610a9a565b6001600160a01b038316600090815260066020526040902060028101919091555461072d90610df1565b60038054610cec9060019061106f565b81548110610cfc57610cfc610f45565b60009182526020808320909101546001600160a01b0384811684526004909252604090922054600380549290931692918110610d3a57610d3a610f45565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260049182905260408120546003805491939291610d869060019061106f565b81548110610d9657610d96610f45565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610dcc57610dcc611086565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610860600b546105c1600a5485610afe90919063ffffffff16565b60008184841115610e325760405162461bcd60e51b8152600401610af5919061109c565b506000610e3f848661106f565b95945050505050565b60008183610e695760405162461bcd60e51b8152600401610af5919061109c565b506000610e3f848661104d565b6001600160a01b038116811461081d57600080fd5b60008060408385031215610e9e57600080fd5b8235610ea981610e76565b946020939093013593505050565b600060208284031215610ec957600080fd5b8135610a9381610e76565b60008060408385031215610ee757600080fd5b50508035926020909101359150565b600060208284031215610f0857600080fd5b5035919050565b600060208284031215610f2157600080fd5b5051919050565b600060208284031215610f3a57600080fd5b8151610a9381610e76565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610fa55784516001600160a01b031683529383019391830191600101610f80565b50506001600160a01b039690961660408501525050506060015292915050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610fee57610fee610fc5565b500190565b60006020828403121561100557600080fd5b81518015158114610a9357600080fd5b60006001820161102757611027610fc5565b5060010190565b600081600019048311821515161561104857611048610fc5565b500290565b60008261106a57634e487b7160e01b600052601260045260246000fd5b500490565b60008282101561108157611081610fc5565b500390565b634e487b7160e01b600052603160045260246000fd5b600060208083528351808285015260005b818110156110c9578581018301518582016040015282016110ad565b818111156110db576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220aac932c88a1655e836bed1f0d6f81304141510f22261abc1057082394e2b0fd164736f6c634300080d003300000000000000000000000018083bf676e7a165eeedfb057bc19c2c68e32896

Deployed Bytecode

0x6080604052600436106103905760003560e01c806381934031116101dc578063ca19e83011610102578063f0b37c04116100a0578063f8b45b051161006f578063f8b45b0514610ab5578063fabe628314610acb578063fe9fbb8014610aeb578063ffb54a9914610b2457600080fd5b8063f0b37c0414610a35578063f2fde38b14610a55578063f708a64f14610a75578063f887ea4014610a9557600080fd5b8063d52576b5116100dc578063d52576b5146109a5578063d920334e146109ba578063dd62ed3e146109da578063dfbfbc6b14610a2057600080fd5b8063ca19e8301461094f578063caa5581b1461096f578063cea9d26f1461098557600080fd5b80639ec5a8941161017a578063ad32330b11610149578063ad32330b146108d9578063b6a5d7de146108ef578063bb542ef01461090f578063c45a01551461092f57600080fd5b80639ec5a89414610859578063a3a2e89e14610879578063a8aa1b3114610899578063a9059cbb146108b957600080fd5b80638a8c523c116101b65780638a8c523c146107c75780638b42507f146107dc5780638ea5220f1461080c57806395d89b411461082c57600080fd5b8063819340311461077457806389291a8f14610794578063893d20e8146107a957600080fd5b80633f4218e0116102c1578063571ac8b01161025f5780637437681e1161022e5780637437681e1461070857806375df13051461071e57806377359aa7146107345780637db1342c1461075457600080fd5b8063571ac8b01461067d5780636303516c1461069d57806366eb3785146106bd57806370a08231146106d257600080fd5b8063470624021161029b57806347062402146105f95780634a74bb021461060f5780634d07912a146106305780634dede3de1461064557600080fd5b80633f4218e0146105835780634355855a146105b357806345434377146105e357600080fd5b80632b112e491161032e5780632f54bf6e116103085780632f54bf6e146104f857806330ca34ee14610527578063313ce567146105475780633dab52691461056357600080fd5b80632b112e49146104ad5780632b14ca56146104c25780632d48e896146104d857600080fd5b8063127cf7ac1161036a578063127cf7ac1461043657806318160ddd146104585780631f53ac021461046d57806323b872dd1461048d57600080fd5b80630445b6671461039c57806306fdde03146103c5578063095ea7b31461040657600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b2601c5481565b6040519081526020015b60405180910390f35b3480156103d157600080fd5b5060408051808201909152600f81526e28bab0b93a32b9102134ba31b7b4b760891b60208201525b6040516103bc9190612101565b34801561041257600080fd5b5061042661042136600461216b565b610b45565b60405190151581526020016103bc565b34801561044257600080fd5b50610456610451366004612197565b610bb2565b005b34801561046457600080fd5b506003546103b2565b34801561047957600080fd5b506104566104883660046121b0565b610bea565b34801561049957600080fd5b506104266104a83660046121cd565b610c36565b3480156104b957600080fd5b506103b2610cf8565b3480156104ce57600080fd5b506103b2600f5481565b3480156104e457600080fd5b506104566104f336600461220e565b610d4a565b34801561050457600080fd5b506104266105133660046121b0565b6000546001600160a01b0391821691161490565b34801561053357600080fd5b5061045661054236600461220e565b610dde565b34801561055357600080fd5b50604051600981526020016103bc565b34801561056f57600080fd5b5061045661057e36600461223e565b610e90565b34801561058f57600080fd5b5061042661059e3660046121b0565b600a6020526000908152604090205460ff1681565b3480156105bf57600080fd5b506104266105ce3660046121b0565b600c6020526000908152604090205460ff1681565b3480156105ef57600080fd5b506103b260125481565b34801561060557600080fd5b506103b2600e5481565b34801561061b57600080fd5b5060175461042690600160a81b900460ff1681565b34801561063c57600080fd5b50610456610edc565b34801561065157600080fd5b50600254610665906001600160a01b031681565b6040516001600160a01b0390911681526020016103bc565b34801561068957600080fd5b506104266106983660046121b0565b610f1c565b3480156106a957600080fd5b50600d54610665906001600160a01b031681565b3480156106c957600080fd5b50610456610f2a565b3480156106de57600080fd5b506103b26106ed3660046121b0565b6001600160a01b031660009081526004602052604090205490565b34801561071457600080fd5b506103b2601a5481565b34801561072a57600080fd5b506103b260115481565b34801561074057600080fd5b506103b261074f3660046121b0565b610f5e565b34801561076057600080fd5b5061045661076f366004612197565b610fcd565b34801561078057600080fd5b5061045661078f366004612197565b61104e565b3480156107a057600080fd5b506104566110dc565b3480156107b557600080fd5b506000546001600160a01b0316610665565b3480156107d357600080fd5b5061045661114a565b3480156107e857600080fd5b506104266107f73660046121b0565b600b6020526000908152604090205460ff1681565b34801561081857600080fd5b50601754610665906001600160a01b031681565b34801561083857600080fd5b506040805180820190915260048152635142544360e01b60208201526103f9565b34801561086557600080fd5b50601854610665906001600160a01b031681565b34801561088557600080fd5b5061045661089436600461225c565b61119d565b3480156108a557600080fd5b50601454610665906001600160a01b031681565b3480156108c557600080fd5b506104266108d436600461216b565b6111f2565b3480156108e557600080fd5b506103b260195481565b3480156108fb57600080fd5b5061045661090a3660046121b0565b6111ff565b34801561091b57600080fd5b5061045661092a3660046121b0565b611250565b34801561093b57600080fd5b50601554610665906001600160a01b031681565b34801561095b57600080fd5b5061045661096a36600461220e565b61129c565b34801561097b57600080fd5b506103b260105481565b34801561099157600080fd5b506104566109a03660046121cd565b6112d1565b3480156109b157600080fd5b50610456611374565b3480156109c657600080fd5b506104566109d5366004612197565b6113cd565b3480156109e657600080fd5b506103b26109f5366004612295565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610a2c57600080fd5b50610456611445565b348015610a4157600080fd5b50610456610a503660046121b0565b6114bf565b348015610a6157600080fd5b50610456610a703660046121b0565b61150a565b348015610a8157600080fd5b50610456610a9036600461225c565b6115a0565b348015610aa157600080fd5b50601354610665906001600160a01b031681565b348015610ac157600080fd5b506103b2601b5481565b348015610ad757600080fd5b50610456610ae636600461225c565b6115d4565b348015610af757600080fd5b50610426610b063660046121b0565b6001600160a01b031660009081526001602052604090205460ff1690565b348015610b3057600080fd5b5060175461042690600160b01b900460ff1681565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ba09086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610be55760405162461bcd60e51b8152600401610bdc906122c3565b60405180910390fd5b601955565b6000546001600160a01b03163314610c145760405162461bcd60e51b8152600401610bdc906122c3565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610ce3576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600582528381203382529091529190912054610cbe91849061166b565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b610cee8484846116a5565b90505b9392505050565b6009546001600160a01b0316600090815260046020526040812054610d45906008546001600160a01b0316600090815260046020526040902054610d3f9060035490611afb565b90611afb565b905090565b6000546001600160a01b03163314610d745760405162461bcd60e51b8152600401610bdc906122c3565b6018546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b158015610dc257600080fd5b505af1158015610dd6573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610e085760405162461bcd60e51b8152600401610bdc906122c3565b600e829055600f8190556002821115610e4e5760405162461bcd60e51b81526020600482015260086024820152670e8dede40d0d2ced60c31b6044820152606401610bdc565b6002600f541115610e8c5760405162461bcd60e51b81526020600482015260086024820152670e8dede40d0d2ced60c31b6044820152606401610bdc565b5050565b6000546001600160a01b03163314610eba5760405162461bcd60e51b8152600401610bdc906122c3565b60178054921515600160a81b0260ff60a81b1990931692909217909155601c55565b6000546001600160a01b03163314610f065760405162461bcd60e51b8152600401610bdc906122c3565b6002600e819055600f5560326010819055601155565b6000610bac82600019610b45565b6000546001600160a01b03163314610f545760405162461bcd60e51b8152600401610bdc906122c3565b610f5c611b3d565b565b60185460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd319890602401602060405180830381865afa158015610fa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bac91906122e3565b6000546001600160a01b03163314610ff75760405162461bcd60e51b8152600401610bdc906122c3565b601b548110156110495760405162461bcd60e51b815260206004820152601860248201527f43616e206e6f74206c6f776572206d61782077616c6c657400000000000000006044820152606401610bdc565b601b55565b6000546001600160a01b031633146110785760405162461bcd60e51b8152600401610bdc906122c3565b6018546040516001624d3b8760e01b03198152600481018390526001600160a01b039091169063ffb2c47990602401600060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031633146111065760405162461bcd60e51b8152600401610bdc906122c3565b478015611147576017546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610e8c573d6000803e3d6000fd5b50565b6000546001600160a01b031633146111745760405162461bcd60e51b8152600401610bdc906122c3565b6017805460ff60b01b1916600160b01b1790556005600e819055600f5560326010819055601155565b6000546001600160a01b031633146111c75760405162461bcd60e51b8152600401610bdc906122c3565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000610cf13384846116a5565b6000546001600160a01b031633146112295760405162461bcd60e51b8152600401610bdc906122c3565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b0316331461127a5760405162461bcd60e51b8152600401610bdc906122c3565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112c65760405162461bcd60e51b8152600401610bdc906122c3565b601091909155601155565b6000546001600160a01b031633146112fb5760405162461bcd60e51b8152600401610bdc906122c3565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af115801561134a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136e91906122fc565b50505050565b6018546040516351cff8d960e01b81523360048201526001600160a01b03909116906351cff8d990602401600060405180830381600087803b1580156113b957600080fd5b505af115801561136e573d6000803e3d6000fd5b6000546001600160a01b031633146113f75760405162461bcd60e51b8152600401610bdc906122c3565b601a548110156114405760405162461bcd60e51b8152602060048201526014602482015273086c2dc40dcdee840d8deeecae440dac2f040e8f60631b6044820152606401610bdc565b601a55565b6000546001600160a01b0316331461146f5760405162461bcd60e51b8152600401610bdc906122c3565b601860009054906101000a90046001600160a01b03166001600160a01b031663dfbfbc6b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156113b957600080fd5b6000546001600160a01b031633146114e95760405162461bcd60e51b8152600401610bdc906122c3565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146115345760405162461bcd60e51b8152600401610bdc906122c3565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6000546001600160a01b031633146115ca5760405162461bcd60e51b8152600401610bdc906122c3565b610e8c8282611c40565b6000546001600160a01b031633146115fe5760405162461bcd60e51b8152600401610bdc906122c3565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000610cf183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d20565b6000818484111561168f5760405162461bcd60e51b8152600401610bdc9190612101565b50600061169c848661232f565b95945050505050565b600080546001600160a01b038581169116148015906116d257506000546001600160a01b03848116911614155b1561173057601754600160b01b900460ff166117305760405162461bcd60e51b815260206004820152601760248201527f686f6c6420757220686f7273657320626967206775792e0000000000000000006044820152606401610bdc565b601754600160a01b900460ff16156117545761174d848484611d4e565b9050610cf1565b601a548211158061177d57506001600160a01b0384166000908152600b602052604090205460ff165b6117ae5760405162461bcd60e51b81526020600482015260026024820152610e8f60f31b6044820152606401610bdc565b6001600160a01b0383166000908152600b602052604090205460ff1661182b57601b546001600160a01b0384166000908152600460205260409020546117f49084611e34565b111561182b5760405162461bcd60e51b81526020600482015260066024820152651dd85b1b195d60d21b6044820152606401610bdc565b6014546001600160a01b031633148015906118505750601754600160a01b900460ff16155b80156118655750601754600160a81b900460ff165b80156118825750601c543060009081526004602052604090205410155b1561188f5761188f611b3d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600490915291909120546118e191849061166b565b6001600160a01b038516600090815260046020908152604080832093909355600a90529081205460ff1615801561193157506001600160a01b0384166000908152600a602052604090205460ff16155b61193b5782611946565b611946858585611e93565b6001600160a01b03851660009081526004602052604090205490915061196c9082611e34565b6001600160a01b038086166000908152600460209081526040808320949094559188168152600c909152205460ff16611a11576018546001600160a01b03868116600081815260046020819052604091829020549151630a5b654b60e11b81529081019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156119fe57600080fd5b505af1925050508015611a0f575060015b505b6001600160a01b0384166000908152600c602052604090205460ff16611aa3576018546001600160a01b03858116600081815260046020819052604091829020549151630a5b654b60e11b81529081019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015611a9057600080fd5b505af1925050508015611aa1575060015b505b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ae891815260200190565b60405180910390a3506001949350505050565b6000610cf183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061166b565b6017805460ff60a01b1916600160a01b17905530600090815260046020526040902054611b6990611f56565b60004790506000611b906064611b8a6010548561207f90919063ffffffff16565b90611629565b9050601860009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611be257600080fd5b505af193505050508015611bf4575060015b506017546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611c2e573d6000803e3d6000fd5b50506017805460ff60a01b1916905550565b6001600160a01b0382163014801590611c6757506014546001600160a01b03838116911614155b611c7057600080fd5b6001600160a01b0382166000908152600c60205260409020805460ff19168215801591909117909155611cd657601854604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401610da8565b6018546001600160a01b03838116600081815260046020819052604091829020549151630a5b654b60e11b81529081019290925260248201529116906314b6ca9690604401610da8565b60008183611d415760405162461bcd60e51b8152600401610bdc9190612101565b50600061169c8486612346565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600490915291822054611d9f91849061166b565b6001600160a01b038086166000908152600460205260408082209390935590851681522054611dce9083611e34565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e229086815260200190565b60405180910390a35060019392505050565b600080611e418385612368565b905083811015610cf15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610bdc565b60145460009081906001600160a01b03858116911614611eb557600e54611eb9565b600f545b90506000611ecc6064611b8a868561207f565b30600090815260046020526040902054909150611ee99082611e34565b30600081815260046020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f3a9085815260200190565b60405180910390a3611f4c8482611afb565b9695505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f8b57611f8b612380565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611fe4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120089190612396565b8160018151811061201b5761201b612380565b60200260200101906001600160a01b031690816001600160a01b0316815250506120453083610b45565b5060135460405163791ac94760e01b81526001600160a01b039091169063791ac94790610da89085906000908690309042906004016123b3565b60008260000361209157506000610bac565b600061209d8385612424565b9050826120aa8583612346565b14610cf15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610bdc565b600060208083528351808285015260005b8181101561212e57858101830151858201604001528201612112565b81811115612140576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461114757600080fd5b6000806040838503121561217e57600080fd5b823561218981612156565b946020939093013593505050565b6000602082840312156121a957600080fd5b5035919050565b6000602082840312156121c257600080fd5b8135610cf181612156565b6000806000606084860312156121e257600080fd5b83356121ed81612156565b925060208401356121fd81612156565b929592945050506040919091013590565b6000806040838503121561222157600080fd5b50508035926020909101359150565b801515811461114757600080fd5b6000806040838503121561225157600080fd5b823561218981612230565b6000806040838503121561226f57600080fd5b823561227a81612156565b9150602083013561228a81612230565b809150509250929050565b600080604083850312156122a857600080fd5b82356122b381612156565b9150602083013561228a81612156565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6000602082840312156122f557600080fd5b5051919050565b60006020828403121561230e57600080fd5b8151610cf181612230565b634e487b7160e01b600052601160045260246000fd5b60008282101561234157612341612319565b500390565b60008261236357634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561237b5761237b612319565b500190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156123a857600080fd5b8151610cf181612156565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124035784516001600160a01b0316835293830193918301916001016123de565b50506001600160a01b03969096166060850152505050608001529392505050565b600081600019048311821515161561243e5761243e612319565b50029056fea2646970667358221220ae4c01a6058e620701e207c3b8729a5c4427dc3311c580c642352fff572cb4fe64736f6c634300080d0033

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

00000000000000000000000018083bf676e7a165eeedfb057bc19c2c68e32896

-----Decoded View---------------
Arg [0] : _owner (address): 0x18083bF676e7a165eEEdfb057bC19c2c68E32896

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000018083bf676e7a165eeedfb057bc19c2c68e32896


Deployed Bytecode Sourcemap

13940:12033:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15628:52;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;15628:52:0;;;;;;;;19905:94;;;;;;;;;;-1:-1:-1;19986:5:0;;;;;;;;;;;;-1:-1:-1;;;19986:5:0;;;;19905:94;;;;;;;:::i;20430:248::-;;;;;;;;;;-1:-1:-1;20430:248:0;;;;;:::i;:::-;;:::i;:::-;;;1419:14:1;;1412:22;1394:41;;1382:2;1367:18;20430:248:0;1254:187:1;19330:99:0;;;;;;;;;;-1:-1:-1;19330:99:0;;;;;:::i;:::-;;:::i;:::-;;19587:102;;;;;;;;;;-1:-1:-1;19669:12:0;;19587:102;;18116:123;;;;;;;;;;-1:-1:-1;18116:123:0;;;;;:::i;:::-;;:::i;21008:420::-;;;;;;;;;;-1:-1:-1;21008:420:0;;;;;:::i;:::-;;:::i;19437:142::-;;;;;;;;;;;;;:::i;14893:26::-;;;;;;;;;;;;;;;;18607:211;;;;;;;;;;-1:-1:-1;18607:211:0;;;;;:::i;:::-;;:::i;4804:103::-;;;;;;;;;;-1:-1:-1;4804:103:0;;;;;:::i;:::-;4859:4;4894:5;-1:-1:-1;;;;;4883:16:0;;;4894:5;;4883:16;;4804:103;16997:263;;;;;;;;;;-1:-1:-1;16997:263:0;;;;;:::i;:::-;;:::i;19697:94::-;;;;;;;;;;-1:-1:-1;19697:94:0;;14242:1;2999:36:1;;2987:2;2972:18;19697:94:0;2857:184:1;18376:223:0;;;;;;;;;;-1:-1:-1;18376:223:0;;;;;:::i;:::-;;:::i;14655:43::-;;;;;;;;;;-1:-1:-1;14655:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14759:48;;;;;;;;;;-1:-1:-1;14759:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15008:34;;;;;;;;;;;;;;;;14861:25;;;;;;;;;;;;;;;;15233:40;;;;;;;;;;-1:-1:-1;15233:40:0;;;;-1:-1:-1;;;15233:40:0;;;;;;16841:148;;;;;;;;;;;;;:::i;14012:64::-;;;;;;;;;;-1:-1:-1;14012:64:0;;;;-1:-1:-1;;;;;14012:64:0;;;;;;-1:-1:-1;;;;;3647:32:1;;;3629:51;;3617:2;3602:18;14012:64:0;3483:203:1;20686:122:0;;;;;;;;;;-1:-1:-1;20686:122:0;;;;;:::i;:::-;;:::i;14816:36::-;;;;;;;;;;-1:-1:-1;14816:36:0;;;;-1:-1:-1;;;;;14816:36:0;;;24999:74;;;;;;;;;;;;;:::i;20107:119::-;;;;;;;;;;-1:-1:-1;20107:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;20200:18:0;20173:7;20200:18;;;:9;:18;;;;;;;20107:119;15516:47;;;;;;;;;;;;;;;;14968:31;;;;;;;;;;;;;;;;25431:182;;;;;;;;;;-1:-1:-1;25431:182:0;;;;;:::i;:::-;;:::i;17645:172::-;;;;;;;;;;-1:-1:-1;17645:172:0;;;;;:::i;:::-;;:::i;25314:109::-;;;;;;;;;;-1:-1:-1;25314:109:0;;;;;:::i;:::-;;:::i;25081:225::-;;;;;;;;;;;;;:::i;20007:92::-;;;;;;;;;;-1:-1:-1;20059:7:0;20086:5;-1:-1:-1;;;;;20086:5:0;20007:92;;16652:180;;;;;;;;;;;;;:::i;14705:47::-;;;;;;;;;;-1:-1:-1;14705:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15170:24;;;;;;;;;;-1:-1:-1;15170:24:0;;;;-1:-1:-1;;;;;15170:24:0;;;19799:98;;;;;;;;;;-1:-1:-1;19882:7:0;;;;;;;;;;;;-1:-1:-1;;;19882:7:0;;;;19799:98;;15320:31;;;;;;;;;;-1:-1:-1;15320:31:0;;;;-1:-1:-1;;;;;15320:31:0;;;17825:122;;;;;;;;;;-1:-1:-1;17825:122:0;;;;;:::i;:::-;;:::i;15082:19::-;;;;;;;;;;-1:-1:-1;15082:19:0;;;;-1:-1:-1;;;;;15082:19:0;;;20816:184;;;;;;;;;;-1:-1:-1;20816:184:0;;;;;:::i;:::-;;:::i;15358:29::-;;;;;;;;;;;;;;;;4477:94;;;;;;;;;;-1:-1:-1;4477:94:0;;;;;:::i;:::-;;:::i;18247:121::-;;;;;;;;;;-1:-1:-1;18247:121:0;;;;;:::i;:::-;;:::i;15108:22::-;;;;;;;;;;-1:-1:-1;15108:22:0;;;;-1:-1:-1;;;;;15108:22:0;;;17268:205;;;;;;;;;;-1:-1:-1;17268:205:0;;;;;:::i;:::-;;:::i;14928:33::-;;;;;;;;;;;;;;;;25716:146;;;;;;;;;;-1:-1:-1;25716:146:0;;;;;:::i;:::-;;:::i;25621:87::-;;;;;;;;;;;;;:::i;17481:156::-;;;;;;;;;;-1:-1:-1;17481:156:0;;;;;:::i;:::-;;:::i;20234:188::-;;;;;;;;;;-1:-1:-1;20234:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;20386:19:0;;;20354:7;20386:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;20234:188;25870:100;;;;;;;;;;;;;:::i;4647:97::-;;;;;;;;;;-1:-1:-1;4647:97:0;;;;;:::i;:::-;;:::i;5204:173::-;;;;;;;;;;-1:-1:-1;5204:173:0;;;;;:::i;:::-;;:::i;19167:155::-;;;;;;;;;;-1:-1:-1;19167:155:0;;;;;:::i;:::-;;:::i;15051:24::-;;;;;;;;;;-1:-1:-1;15051:24:0;;;;-1:-1:-1;;;;;15051:24:0;;;15570:51;;;;;;;;;;;;;;;;17955:153;;;;;;;;;;-1:-1:-1;17955:153:0;;;;;:::i;:::-;;:::i;4978:107::-;;;;;;;;;;-1:-1:-1;4978:107:0;;;;;:::i;:::-;-1:-1:-1;;;;;5058:19:0;5034:4;5058:19;;;:14;:19;;;;;;;;;4978:107;15280:31;;;;;;;;;;-1:-1:-1;15280:31:0;;;;-1:-1:-1;;;15280:31:0;;;;;;20430:248;20566:10;20532:4;20554:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;20554:32:0;;;;;;;;;;:41;;;20611:37;20532:4;;20554:32;;20611:37;;;;20589:6;160:25:1;;148:2;133:18;;14:177;20611:37:0;;;;;;;;-1:-1:-1;20666:4:0;20430:248;;;;;:::o;19330:99::-;4859:4;4894:5;-1:-1:-1;;;;;4894:5:0;4201:10;4883:16;4185:38;;;;-1:-1:-1;;;4185:38:0;;;;;;;:::i;:::-;;;;;;;;;19402:10:::1;:19:::0;19330:99::o;18116:123::-;4859:4;4894:5;-1:-1:-1;;;;;4894:5:0;4201:10;4883:16;4185:38;;;;-1:-1:-1;;;4185:38:0;;;;;;;:::i;:::-;18198:9:::1;:33:::0;;-1:-1:-1;;;;;;18198:33:0::1;-1:-1:-1::0;;;;;18198:33:0;;;::::1;::::0;;;::::1;::::0;;18116:123::o;21008:420::-;-1:-1:-1;;;;;21163:19:0;;21142:4;21163:19;;;:11;:19;;;;;;;;21183:10;21163:31;;;;;;;;-1:-1:-1;;21163:52:0;21159:206;;21266:87;;;;;;;;;;;-1:-1:-1;;;21266:87:0;;;;;;;;-1:-1:-1;;;;;21266:19:0;;-1:-1:-1;21266:19:0;;;:11;:19;;;;;21286:10;21266:31;;;;;;;;;;:87;;21320:6;;21266:53;:87::i;:::-;-1:-1:-1;;;;;21232:19:0;;;;;;:11;:19;;;;;;;;21252:10;21232:31;;;;;;;:121;21159:206;21384:36;21394:6;21402:9;21413:6;21384:9;:36::i;:::-;21377:43;;21008:420;;;;;;:::o;19437:142::-;19565:4;;-1:-1:-1;;;;;19565:4:0;19490:7;20200:18;;;:9;:18;;;;;;19517:54;;19544:4;;-1:-1:-1;;;;;19544:4:0;20173:7;20200:18;;;:9;:18;;;;;;19517:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;19510:61;;19437:142;:::o;18607:211::-;4859:4;4894:5;-1:-1:-1;;;;;4894:5:0;4201:10;4883:16;4185:38;;;;-1:-1:-1;;;4185:38:0;;;;;;;:::i;:::-;18745:7:::1;::::0;:65:::1;::::0;-1:-1:-1;;;18745:65:0;;::::1;::::0;::::1;5446:25:1::0;;;5487:18;;;5480:34;;;-1:-1:-1;;;;;18745:7:0;;::::1;::::0;:31:::1;::::0;5419:18:1;;18745:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18607:211:::0;;:::o;16997:263::-;4859:4;4894:5;-1:-1:-1;;;;;4894:5:0;4201:10;4883:16;4185:38;;;;-1:-1:-1;;;4185:38:0;;;;;;;:::i;:::-;17114:6:::1;:18:::0;;;17143:7:::1;:20:::0;;;17194:1:::1;17184:11:::0;::::1;;17176:32;;;::::0;-1:-1:-1;;;17176:32:0;;5727:2:1;17176:32:0::1;::::0;::::1;5709:21:1::0;5766:1;5746:18;;;5739:29;-1:-1:-1;;;5784:18:1;;;5777:38;5832:18;;17176:32:0::1;5525:331:1::0;17176:32:0::1;17238:1;17227:7;;:12;;17219:33;;;::::0;-1:-1:-1;;;17219:33:0;;5727:2:1;17219:33:0::1;::::0;::::1;5709:21:1::0;5766:1;5746:18;;;5739:29;-1:-1:-1;;;5784:18:1;;;5777:38;5832:18;;17219:33:0::1;5525:331:1::0;17219:33:0::1;16997:263:::0;;:::o;18376:223::-;4859:4;4894:5;-1:-1:-1;;;;;4894:5:0;4201:10;4883:16;4185:38;;;;-1:-1:-1;;;4185:38:0;;;;;;;:::i;:::-;18510:21:::1;:38:::0;;;::::1;;-1:-1:-1::0;;;18510:38:0::1;-1:-1:-1::0;;;;18510:38:0;;::::1;::::0;;;::::1;::::0;;;18559:13:::1;:32:::0;18376:223::o;16841:148::-;4859:4;4894:5;-1:-1:-1;;;;;4894:5:0;4201:10;4883:16;4185:38;;;;-1:-1:-1;;;4185:38:0;;;;;;;:::i;:::-;16902:1:::1;16893:6;:10:::0;;;16914:7:::1;:11:::0;16952:2:::1;16936:13;:18:::0;;;16965:11:::1;:16:::0;16841:148::o;20686:122::-;20741:4;20765:35;20773:7;-1:-1:-1;;20765:7:0;:35::i;24999:74::-;4859:4;4894:5;-1:-1:-1;;;;;4894:5:0;4201:10;4883:16;4185:38;;;;-1:-1:-1;;;4185:38:0;;;;;;;:::i;:::-;25055:10:::1;:8;:10::i;:::-;24999:74::o:0;25431:182::-;25567:7;;:38;;-1:-1:-1;;;25567:38:0;;-1:-1:-1;;;;;3647:32:1;;;25567:38:0;;;3629:51:1;25535:7:0;;25567;;:25;;3602:18:1;;25567:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17645:172::-;4859:4;4894:5;-1:-1:-1;;;;;4894:5:0;4201:10;4883:16;4185:38;;;;-1:-1:-1;;;4185:38:0;;;;;;;:::i;:::-;17740:9:::1;;17728:8;:21;;17720:58;;;::::0;-1:-1:-1;;;17720:58:0;;6252:2:1;17720:58:0::1;::::0;::::1;6234:21:1::0;6291:2;6271:18;;;6264:30;6330:26;6310:18;;;6303:54;6374:18;;17720:58:0::1;6050:348:1::0;17720:58:0::1;17789:9;:20:::0;17645:172::o;25314:109::-;4859:4;4894:5;-1:-1:-1;;;;;4894:5:0;4201:10;4883:16;4185:38;;;;-1:-1:-1;;;4185:38:0;;;;;;;:::i;:::-;25389:7:::1;::::0;:26:::1;::::0;-1:-1:-1;;;;;;25389:26:0;;::::1;::::0;::::1;160:25:1::0;;;-1:-1:-1;;;;;25389:7:0;;::::1;::::0;:15:::1;::::0;133:18:1;;25389:26:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25314:109:::0;:::o;25081:225::-;4859:4;4894:5;-1:-1:-1;;;;;4894:5:0;4201:10;4883:16;4185:38;;;;-1:-1:-1;;;4185:38:0;;;;;;;:::i;:::-;25165:21:::1;25201:22:::0;;25197:102:::1;;25248:9;::::0;25240:47:::1;::::0;-1:-1:-1;;;;;25248:9:0;;::::1;::::0;25240:47;::::1;;;::::0;25268:18;;25248:9:::1;25240:47:::0;25248:9;25240:47;25268:18;25248:9;25240:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;25197:102;25125:181;25081:225::o:0;16652:180::-;4859:4;4894:5;-1:-1:-1;;;;;4894:5:0;4201:10;4883:16;4185:38;;;;-1:-1:-1;;;4185:38:0;;;;;;;:::i;:::-;16707:11:::1;:18:::0;;-1:-1:-1;;;;16707:18:0::1;-1:-1:-1::0;;;16707:18:0::1;::::0;;16745:1:::1;16736:6;:10:::0;;;16757:7:::1;:11:::0;16795:2:::1;16779:13;:18:::0;;;16808:11:::1;:16:::0;16652:180::o;17825:122::-;4859:4;4894:5;-1:-1:-1;;;;;4894:5:0;4201:10;4883:16;4185:38;;;;-1:-1:-1;;;4185:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17911:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;17911:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17825:122::o;20816:184::-;20923:4;20952:40;20962:10;20974:9;20985:6;20952:9;:40::i;4477:94::-;4859:4;4894:5;-1:-1:-1;;;;;4894:5:0;4201:10;4883:16;4185:38;;;;-1:-1:-1;;;4185:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4537:19:0::1;;::::0;;;4559:4:::1;4537:19;::::0;;;;;;;:26;;-1:-1:-1;;4537:26:0::1;::::0;;::::1;::::0;;4477:94::o;18247:121::-;4859:4;4894:5;-1:-1:-1;;;;;4894:5:0;4201:10;4883:16;4185:38;;;;-1:-1:-1;;;4185:38:0;;;;;;;:::i;:::-;18333:10:::1;:27:::0;;-1:-1:-1;;;;;;18333:27:0::1;-1:-1:-1::0;;;;;18333:27:0;;;::::1;::::0;;;::::1;::::0;;18247:121::o;17268:205::-;4859:4;4894:5;-1:-1:-1;;;;;4894:5:0;4201:10;4883:16;4185:38;;;;-1:-1:-1;;;4185:38:0;;;;;;;:::i;:::-;17397:13:::1;:28:::0;;;;17436:11:::1;:29:::0;17268:205::o;25716:146::-;4859:4;4894:5;-1:-1:-1;;;;;4894:5:0;4201:10;4883:16;4185:38;;;;-1:-1:-1;;;4185:38:0;;;;;;;:::i;:::-;25813:41:::1;::::0;-1:-1:-1;;;25813:41:0;;-1:-1:-1;;;;;6595:32:1;;;25813:41:0::1;::::0;::::1;6577:51:1::0;6644:18;;;6637:34;;;25813:27:0;::::1;::::0;::::1;::::0;6550:18:1;;25813:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25716:146:::0;;;:::o;25621:87::-;25672:7;;:28;;-1:-1:-1;;;25672:28:0;;25689:10;25672:28;;;3629:51:1;-1:-1:-1;;;;;25672:7:0;;;;:16;;3602:18:1;;25672:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17481:156;4859:4;4894:5;-1:-1:-1;;;;;4894:5:0;4201:10;4883:16;4185:38;;;;-1:-1:-1;;;4185:38:0;;;;;;;:::i;:::-;17572:5:::1;;17560:8;:17;;17552:50;;;::::0;-1:-1:-1;;;17552:50:0;;7134:2:1;17552:50:0::1;::::0;::::1;7116:21:1::0;7173:2;7153:18;;;7146:30;-1:-1:-1;;;7192:18:1;;;7185:50;7252:18;;17552:50:0::1;6932:344:1::0;17552:50:0::1;17613:5;:16:::0;17481:156::o;25870:100::-;4859:4;4894:5;-1:-1:-1;;;;;4894:5:0;4201:10;4883:16;4185:38;;;;-1:-1:-1;;;4185:38:0;;;;;;;:::i;:::-;25932:7:::1;;;;;;;;;-1:-1:-1::0;;;;;25932:7:0::1;-1:-1:-1::0;;;;;25932:28:0::1;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;4647:97:::0;4859:4;4894:5;-1:-1:-1;;;;;4894:5:0;4201:10;4883:16;4185:38;;;;-1:-1:-1;;;4185:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4709:19:0::1;4731:5;4709:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;4709:27:0::1;::::0;;4647:97::o;5204:173::-;4859:4;4894:5;-1:-1:-1;;;;;4894:5:0;4201:10;4883:16;4185:38;;;;-1:-1:-1;;;4185:38:0;;;;;;;:::i;:::-;5280:5:::1;:11:::0;;-1:-1:-1;;;;;;5280:11:0::1;-1:-1:-1::0;;;;;5280:11:0;::::1;::::0;;::::1;::::0;;5302:19;;;-1:-1:-1;5302:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;5302:26:0::1;::::0;;::::1;::::0;;;5344:25;;3629:51:1;;;5344:25:0::1;::::0;3602:18:1;5344:25:0::1;;;;;;;5204:173:::0;:::o;19167:155::-;4859:4;4894:5;-1:-1:-1;;;;;4894:5:0;4201:10;4883:16;4185:38;;;;-1:-1:-1;;;4185:38:0;;;;;;;:::i;:::-;19278:36:::1;19299:6;19307;19278:20;:36::i;17955:153::-:0;4859:4;4894:5;-1:-1:-1;;;;;4894:5:0;4201:10;4883:16;4185:38;;;;-1:-1:-1;;;4185:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18068:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;18068:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17955:153::o;2231:132::-;2289:7;2316:39;2320:1;2323;2316:39;;;;;;;;;;;;;;;;;:3;:39::i;1739:226::-;1859:7;1895:12;1887:6;;;;1879:29;;;;-1:-1:-1;;;1879:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1919:9:0;1931:5;1935:1;1931;:5;:::i;:::-;1919:17;1739:226;-1:-1:-1;;;;;1739:226:0:o;21436:1560::-;21558:4;21589:5;;-1:-1:-1;;;;;21579:15:0;;;21589:5;;21579:15;;;;:37;;-1:-1:-1;21611:5:0;;-1:-1:-1;;;;;21598:18:0;;;21611:5;;21598:18;;21579:37;21575:103;;;21639:11;;-1:-1:-1;;;21639:11:0;;;;21631:47;;;;-1:-1:-1;;;21631:47:0;;7961:2:1;21631:47:0;;;7943:21:1;8000:2;7980:18;;;7973:30;8039:25;8019:18;;;8012:53;8082:18;;21631:47:0;7759:347:1;21631:47:0;21737:16;;-1:-1:-1;;;21737:16:0;;;;21733:97;;;21777:41;21792:6;21800:9;21811:6;21777:14;:41::i;:::-;21770:48;;;;21733:97;21860:5;;21850:6;:15;;:42;;;-1:-1:-1;;;;;;21869:23:0;;;;;;:15;:23;;;;;;;;21850:42;21842:57;;;;-1:-1:-1;;;21842:57:0;;8313:2:1;21842:57:0;;;8295:21:1;8352:1;8332:18;;;8325:29;-1:-1:-1;;;8370:18:1;;;8363:32;8412:18;;21842:57:0;8111:325:1;21842:57:0;-1:-1:-1;;;;;21921:26:0;;;;;;:15;:26;;;;;;;;21916:124;;22008:9;;-1:-1:-1;;;;;21972:20:0;;;;;;:9;:20;;;;;;:32;;21997:6;21972:24;:32::i;:::-;:45;;21964:64;;;;-1:-1:-1;;;21964:64:0;;8643:2:1;21964:64:0;;;8625:21:1;8682:1;8662:18;;;8655:29;-1:-1:-1;;;8700:18:1;;;8693:36;8746:18;;21964:64:0;8441:329:1;21964:64:0;22084:4;;-1:-1:-1;;;;;22084:4:0;22070:10;:18;;;;:52;;-1:-1:-1;22106:16:0;;-1:-1:-1;;;22106:16:0;;;;22105:17;22070:52;:90;;;;-1:-1:-1;22139:21:0;;-1:-1:-1;;;22139:21:0;;;;22070:90;:148;;;;-1:-1:-1;22205:13:0;;22195:4;22177:24;;;;:9;:24;;;;;;:41;;22070:148;22052:215;;;22245:10;:8;:10::i;:::-;22299:90;;;;;;;;;;;-1:-1:-1;;;22299:90:0;;;;;;;;-1:-1:-1;;;;;22299:17:0;;-1:-1:-1;22299:17:0;;;:9;:17;;;;;;;;:90;;22335:6;;22299:21;:90::i;:::-;-1:-1:-1;;;;;22279:17:0;;;;;;:9;:17;;;;;;;;:110;;;;22425:11;:19;;;;;;;;22424:20;:47;;;;-1:-1:-1;;;;;;22449:22:0;;;;;;:11;:22;;;;;;;;22448:23;22424:47;:119;;22537:6;22424:119;;;22487:34;22495:6;22503:9;22514:6;22487:7;:34::i;:::-;-1:-1:-1;;;;;22577:20:0;;;;;;:9;:20;;;;;;22402:141;;-1:-1:-1;22577:37:0;;22402:141;22577:24;:37::i;:::-;-1:-1:-1;;;;;22554:20:0;;;;;;;:9;:20;;;;;;;;:60;;;;22661:24;;;;;:16;:24;;;;;;;22656:116;;22706:7;;-1:-1:-1;;;;;22731:17:0;;;22706:7;22731:17;;;:9;:17;;;;;;;;;;22706:43;;-1:-1:-1;;;22706:43:0;;;;;6577:51:1;;;;6644:18;;;6637:34;22706:7:0;;;:16;;6550:18:1;;22706:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22702:59;;-1:-1:-1;;;;;22789:27:0;;;;;;:16;:27;;;;;;;;22784:125;;22837:7;;-1:-1:-1;;;;;22865:20:0;;;22837:7;22865:20;;;:9;:20;;;;;;;;;;22837:49;;-1:-1:-1;;;22837:49:0;;;;;6577:51:1;;;;6644:18;;;6637:34;22837:7:0;;;:16;;6550:18:1;;22837:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22833:65;;22943:9;-1:-1:-1;;;;;22926:40:0;22935:6;-1:-1:-1;;;;;22926:40:0;;22954:11;22926:40;;;;160:25:1;;148:2;133:18;;14:177;22926:40:0;;;;;;;;-1:-1:-1;22984:4:0;;21436:1560;-1:-1:-1;;;;21436:1560:0:o;1595:136::-;1653:7;1680:43;1684:1;1687;1680:43;;;;;;;;;;;;;;;;;:3;:43::i;24625:366::-;15430:16;:23;;-1:-1:-1;;;;15430:23:0;-1:-1:-1;;;15430:23:0;;;24712:4:::1;15430:23:::0;24694:24;;;:9:::1;:24;::::0;;;;;24677:42:::1;::::0;:16:::1;:42::i;:::-;24732:23;24758:21;24732:47;;24792:18;24813:43;24852:3;24813:34;24833:13;;24813:15;:19;;:34;;;;:::i;:::-;:38:::0;::::1;:43::i;:::-;24792:64;;24873:7;;;;;;;;;-1:-1:-1::0;;;;;24873:7:0::1;-1:-1:-1::0;;;;;24873:15:0::1;;24896:10;24873:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;24869:52:::0;24941:9:::1;::::0;24933:50:::1;::::0;-1:-1:-1;;;;;24941:9:0;;::::1;::::0;24961:21:::1;24933:50:::0;::::1;;;::::0;24941:9:::1;24933:50:::0;24941:9;24933:50;24961:21;24941:9;24933:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;15476:16:0;:24;;-1:-1:-1;;;;15476:24:0;;;-1:-1:-1;24625:366:0:o;18826:333::-;-1:-1:-1;;;;;18913:23:0;;18931:4;18913:23;;;;:41;;-1:-1:-1;18950:4:0;;-1:-1:-1;;;;;18940:14:0;;;18950:4;;18940:14;;18913:41;18905:50;;;;;;-1:-1:-1;;;;;18966:24:0;;;;;;:16;:24;;;;;:33;;-1:-1:-1;;18966:33:0;;;;;;;;;;;;19010:142;;19037:7;;:27;;-1:-1:-1;;;19037:27:0;;-1:-1:-1;;;;;6595:32:1;;;19037:27:0;;;6577:51:1;19037:7:0;6644:18:1;;;6637:34;19037:7:0;;;;:16;;6550:18:1;;19037:27:0;6403:274:1;19010:142:0;19097:7;;-1:-1:-1;;;;;19122:17:0;;;19097:7;19122:17;;;:9;:17;;;;;;;;;;19097:43;;-1:-1:-1;;;19097:43:0;;;;;6577:51:1;;;;6644:18;;;6637:34;19097:7:0;;;:16;;6550:18:1;;19097:43:0;6403:274:1;2371:379:0;2491:7;2593:12;2586:5;2578:28;;;;-1:-1:-1;;;2578:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2617:9:0;2629:5;2633:1;2629;:5;:::i;23004:401::-;23168:90;;;;;;;;;;;-1:-1:-1;;;23168:90:0;;;;;;;;-1:-1:-1;;;;;23168:17:0;;23131:4;23168:17;;;:9;:17;;;;;;;:90;;23204:6;;23168:21;:90::i;:::-;-1:-1:-1;;;;;23148:17:0;;;;;;;:9;:17;;;;;;:110;;;;23292:20;;;;;;;:32;;23317:6;23292:24;:32::i;:::-;-1:-1:-1;;;;;23269:20:0;;;;;;;:9;:20;;;;;;;:55;;;;23340:35;;;;;;;;;;23368:6;160:25:1;;148:2;133:18;;14:177;23340:35:0;;;;;;;;-1:-1:-1;23393:4:0;23004:401;;;;;:::o;1406:181::-;1464:7;;1496:5;1500:1;1496;:5;:::i;:::-;1484:17;;1525:1;1520;:6;;1512:46;;;;-1:-1:-1;;;1512:46:0;;9619:2:1;1512:46:0;;;9601:21:1;9658:2;9638:18;;;9631:30;9697:29;9677:18;;;9670:57;9744:18;;1512:46:0;9417:351:1;23413:451:0;23577:4;;23533:7;;;;-1:-1:-1;;;;;23577:17:0;;;:4;;:17;:36;;23607:6;;23577:36;;;23597:7;;23577:36;23553:60;-1:-1:-1;23624:17:0;23644:34;23674:3;23644:25;:6;23553:60;23644:10;:25::i;:34::-;23736:4;23718:24;;;;:9;:24;;;;;;23624:54;;-1:-1:-1;23718:39:0;;23624:54;23718:28;:39::i;:::-;23709:4;23691:24;;;;:9;:24;;;;;;;:66;;;;23773:42;;-1:-1:-1;;;;;23773:42:0;;;;;;;23805:9;160:25:1;;148:2;133:18;;14:177;23773:42:0;;;;;;;;23835:21;:6;23846:9;23835:10;:21::i;:::-;23828:28;23413:451;-1:-1:-1;;;;;;23413:451:0:o;23872:458::-;23962:16;;;23976:1;23962:16;;;;;;;;23938:21;;23962:16;;;;;;;;;;-1:-1:-1;23962:16:0;23938:40;;24007:4;23989;23994:1;23989:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23989:23:0;;;:7;;;;;;;;;;:23;;;;24033:6;;:13;;;-1:-1:-1;;;24033:13:0;;;;:6;;;;;:11;;:13;;;;;23989:7;;24033:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24023:4;24028:1;24023:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;24023:23:0;;;-1:-1:-1;;;;;24023:23:0;;;;;24059:35;24075:4;24082:11;24059:7;:35::i;:::-;-1:-1:-1;24107:6:0;;:215;;-1:-1:-1;;;24107:215:0;;-1:-1:-1;;;;;24107:6:0;;;;:57;;:215;;24179:11;;24107:6;;24249:4;;24276;;24296:15;;24107:215;;;:::i;1973:250::-;2031:7;2055:1;2060;2055:6;2051:47;;-1:-1:-1;2085:1:0;2078:8;;2051:47;2110:9;2122:5;2126:1;2122;:5;:::i;:::-;2110:17;-1:-1:-1;2155:1:0;2146:5;2150:1;2110:17;2146:5;:::i;:::-;:10;2138:56;;;;-1:-1:-1;;;2138:56:0;;11653:2:1;2138:56:0;;;11635:21:1;11692:2;11672:18;;;11665:30;11731:34;11711:18;;;11704:62;-1:-1:-1;;;11782:18:1;;;11775:31;11823:19;;2138:56:0;11451:397:1;196:597;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:131::-;-1:-1:-1;;;;;873:31:1;;863:42;;853:70;;919:1;916;909:12;934:315;1002:6;1010;1063:2;1051:9;1042:7;1038:23;1034:32;1031:52;;;1079:1;1076;1069:12;1031:52;1118:9;1105:23;1137:31;1162:5;1137:31;:::i;:::-;1187:5;1239:2;1224:18;;;;1211:32;;-1:-1:-1;;;934:315:1:o;1446:180::-;1505:6;1558:2;1546:9;1537:7;1533:23;1529:32;1526:52;;;1574:1;1571;1564:12;1526:52;-1:-1:-1;1597:23:1;;1446:180;-1:-1:-1;1446:180:1:o;1631:255::-;1698:6;1751:2;1739:9;1730:7;1726:23;1722:32;1719:52;;;1767:1;1764;1757:12;1719:52;1806:9;1793:23;1825:31;1850:5;1825:31;:::i;1891:456::-;1968:6;1976;1984;2037:2;2025:9;2016:7;2012:23;2008:32;2005:52;;;2053:1;2050;2043:12;2005:52;2092:9;2079:23;2111:31;2136:5;2111:31;:::i;:::-;2161:5;-1:-1:-1;2218:2:1;2203:18;;2190:32;2231:33;2190:32;2231:33;:::i;:::-;1891:456;;2283:7;;-1:-1:-1;;;2337:2:1;2322:18;;;;2309:32;;1891:456::o;2352:248::-;2420:6;2428;2481:2;2469:9;2460:7;2456:23;2452:32;2449:52;;;2497:1;2494;2487:12;2449:52;-1:-1:-1;;2520:23:1;;;2590:2;2575:18;;;2562:32;;-1:-1:-1;2352:248:1:o;3046:118::-;3132:5;3125:13;3118:21;3111:5;3108:32;3098:60;;3154:1;3151;3144:12;3169:309;3234:6;3242;3295:2;3283:9;3274:7;3270:23;3266:32;3263:52;;;3311:1;3308;3301:12;3263:52;3350:9;3337:23;3369:28;3391:5;3369:28;:::i;3932:382::-;3997:6;4005;4058:2;4046:9;4037:7;4033:23;4029:32;4026:52;;;4074:1;4071;4064:12;4026:52;4113:9;4100:23;4132:31;4157:5;4132:31;:::i;:::-;4182:5;-1:-1:-1;4239:2:1;4224:18;;4211:32;4252:30;4211:32;4252:30;:::i;:::-;4301:7;4291:17;;;3932:382;;;;;:::o;4319:388::-;4387:6;4395;4448:2;4436:9;4427:7;4423:23;4419:32;4416:52;;;4464:1;4461;4454:12;4416:52;4503:9;4490:23;4522:31;4547:5;4522:31;:::i;:::-;4572:5;-1:-1:-1;4629:2:1;4614:18;;4601:32;4642:33;4601:32;4642:33;:::i;4938:329::-;5140:2;5122:21;;;5179:1;5159:18;;;5152:29;-1:-1:-1;;;5212:2:1;5197:18;;5190:36;5258:2;5243:18;;4938:329::o;5861:184::-;5931:6;5984:2;5972:9;5963:7;5959:23;5955:32;5952:52;;;6000:1;5997;5990:12;5952:52;-1:-1:-1;6023:16:1;;5861:184;-1:-1:-1;5861:184:1:o;6682:245::-;6749:6;6802:2;6790:9;6781:7;6777:23;6773:32;6770:52;;;6818:1;6815;6808:12;6770:52;6850:9;6844:16;6869:28;6891:5;6869:28;:::i;7497:127::-;7558:10;7553:3;7549:20;7546:1;7539:31;7589:4;7586:1;7579:15;7613:4;7610:1;7603:15;7629:125;7669:4;7697:1;7694;7691:8;7688:34;;;7702:18;;:::i;:::-;-1:-1:-1;7739:9:1;;7629:125::o;9062:217::-;9102:1;9128;9118:132;;9172:10;9167:3;9163:20;9160:1;9153:31;9207:4;9204:1;9197:15;9235:4;9232:1;9225:15;9118:132;-1:-1:-1;9264:9:1;;9062:217::o;9284:128::-;9324:3;9355:1;9351:6;9348:1;9345:13;9342:39;;;9361:18;;:::i;:::-;-1:-1:-1;9397:9:1;;9284:128::o;9905:127::-;9966:10;9961:3;9957:20;9954:1;9947:31;9997:4;9994:1;9987:15;10021:4;10018:1;10011:15;10037:251;10107:6;10160:2;10148:9;10139:7;10135:23;10131:32;10128:52;;;10176:1;10173;10166:12;10128:52;10208:9;10202:16;10227:31;10252:5;10227:31;:::i;10293:980::-;10555:4;10603:3;10592:9;10588:19;10634:6;10623:9;10616:25;10660:2;10698:6;10693:2;10682:9;10678:18;10671:34;10741:3;10736:2;10725:9;10721:18;10714:31;10765:6;10800;10794:13;10831:6;10823;10816:22;10869:3;10858:9;10854:19;10847:26;;10908:2;10900:6;10896:15;10882:29;;10929:1;10939:195;10953:6;10950:1;10947:13;10939:195;;;11018:13;;-1:-1:-1;;;;;11014:39:1;11002:52;;11109:15;;;;11074:12;;;;11050:1;10968:9;10939:195;;;-1:-1:-1;;;;;;;11190:32:1;;;;11185:2;11170:18;;11163:60;-1:-1:-1;;;11254:3:1;11239:19;11232:35;11151:3;10293:980;-1:-1:-1;;;10293:980:1:o;11278:168::-;11318:7;11384:1;11380;11376:6;11372:14;11369:1;11366:21;11361:1;11354:9;11347:17;11343:45;11340:71;;;11391:18;;:::i;:::-;-1:-1:-1;11431:9:1;;11278:168::o

Swarm Source

ipfs://aac932c88a1655e836bed1f0d6f81304141510f22261abc1057082394e2b0fd1

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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