Contract 0xe0b73f3ba0d46122b86c51ae7b502e9de8db14ed 1

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x24e270068f59082fdc7116e0697fd39d6564e7b76c5252bd01f2d057a4231efcApprove145388842022-01-20 19:54:339 hrs 1 min ago0x64553e429627757dc7d437b7e0d4b3cf8472b164 IN  HuskyX: HUSKYX Token0 BNB0.0002219
0xe5e3da7531c41d35046f9765ece0d687f9e58f781bf82b5677baf1b58706bae2Approve145230382022-01-20 6:41:3022 hrs 14 mins ago0xe8db39f9cc5ea5ffb4a1f1c6ecc3ffd41f1d6ac5 IN  HuskyX: HUSKYX Token0 BNB0.0002219
0x6b2e6b6b57ea1dfea929d5c61b254b990a3d7bdfd1d415e86650e5515f687681Approve144794292022-01-18 18:13:422 days 10 hrs ago0x63b552db7037accbe30ec8487b5dd92e5e1844b0 IN  HuskyX: HUSKYX Token0 BNB0.00031066
0xf61bf7ce7ef3e052c8094b5b08157932fbd12c203165c296bacf87674c2eddf2Approve144779732022-01-18 17:00:492 days 11 hrs ago0x006a4e423b643bf396bba2f0a6e6f41b3ed25b86 IN  HuskyX: HUSKYX Token0 BNB0.0000753896
0x82a5d60723399fbc552e9e7a7e4fa2b074e1a41fd99013aa7af396fe7abfa1b5Transfer144289272022-01-16 23:32:314 days 5 hrs ago0x580e610d11b1e20da03e8f1e51464fc50fb41a97 IN  HuskyX: HUSKYX Token0 BNB0.004228035
0xddf1906a4b77258e3578ae21c87394c78271c1ba6f612b23f8db918a7844565fApprove144287142022-01-16 23:21:524 days 5 hrs ago0x8e93f1985140ca66413f7d2357364e25aa4f4776 IN  HuskyX: HUSKYX Token0 BNB0.00007249
0x2b96e3162f247ad3a97d73da866e330817f8b988d8857b751524d90516d183eeApprove144181102022-01-16 14:28:424 days 14 hrs ago0xb7beb5b6a5b6073613b002aa5fb1e406da35c5a1 IN  HuskyX: HUSKYX Token0 BNB0.0002219
0xdc3c760fd3d27d99b0d0b58b62867ccc323a4540bc38ef87f4adacf3c0b20300Transfer144065832022-01-16 4:51:295 days 4 mins ago0x2e7c7a4c53b4c3b210d67014e95c6aff64d389ed IN  HuskyX: HUSKYX Token0 BNB0.004297785
0xb5ae593df76ec0d2616f62c21392c127c03e4f14e24f48d679cd5825b9fda97bApprove143891782022-01-15 14:17:145 days 14 hrs ago0xfa14147941bed996763078c84b44ca80b90b773b IN  HuskyX: HUSKYX Token0 BNB0.00007249
0xf6ca871960ec5a488893f9c8c5b453a7eaeb34615a84d77c6a801b4d77c58aa3Approve143746422022-01-15 2:09:076 days 2 hrs ago0x22747e072e70e767b86f81de5a994f7b7408f483 IN  HuskyX: HUSKYX Token0 BNB0.0002219
0x33f2a17e0de227efada87175a737ccb14bd8b7ba5197b3043fdd8c47708bcdd2Approve143702432022-01-14 22:29:096 days 6 hrs ago0xb13bf053edb0ee476aa9562f3dd12e9e0389e873 IN  HuskyX: HUSKYX Token0 BNB0.00007249
0x0264a5c0f4ee5c80da6cf5beced56fedde8df98bbf12aa531990e2f3a4778665Approve143699782022-01-14 22:15:546 days 6 hrs ago0x003405f87e96022ef2e3e3d8a31ed75a1b3fb32f IN  HuskyX: HUSKYX Token0 BNB0.00007249
0xa822028c30a43d3d1be340f271f99f25797c36e39eb2837f4fed7d4ba33c53d4Approve143428152022-01-13 23:33:257 days 5 hrs ago0xcb1421cf2a832ef5dfee159e05d3727f782cc72a IN  HuskyX: HUSKYX Token0 BNB0.0002219
0x8a0aadc3fea061bc00626e6b87ff73f692e3cd2cb94e7d51d7a88a67e60da989Approve143313902022-01-13 14:01:167 days 14 hrs ago0x8efca7c3b80ae94fb289e21c1c8e34ebefdef59e IN  HuskyX: HUSKYX Token0 BNB0.00007249
0x0fb1314b5596fd8e29bc736967f1f3cb7f8066cd35aa11fe11adf7a10fca6642Manual Sync143182892022-01-13 3:06:098 days 1 hr agoHuskyX: Deployer IN  HuskyX: HUSKYX Token0 BNB0.000311345
0xbdae126adea5a4ac1a9f5050b855d52f251b6ec4e3fb223a52cd976cf2364474Manual Sync143182872022-01-13 3:06:038 days 1 hr agoHuskyX: Deployer IN  HuskyX: HUSKYX Token0 BNB0.000311345
0x86aa9ac8033cd4436eeb366afd04319235681dd048298cba8b4f53d57a505978Manual Sync143182752022-01-13 3:05:278 days 1 hr agoHuskyX: Deployer IN  HuskyX: HUSKYX Token0 BNB0.000311345
0xf6b8c789949bd2efce293d92b328d49ee0cc41ddd473ce71e621810272904651Set Fees143181442022-01-13 2:58:548 days 1 hr agoHuskyX: Deployer IN  HuskyX: HUSKYX Token0 BNB0.000249835
0x5a0ca3f1b42227de6b2298b931d6befdb08f26b9a2106ea84a60b19ace5026a7Approve143179022022-01-13 2:46:488 days 2 hrs ago0xc8faa90f03df1996eb0dd1a7d6ca2c1a5961d0b5 IN  HuskyX: HUSKYX Token0 BNB0.0002219
0x19b18f15f1ab93e462ab6b8d18adaa2521ec3ee74b9ca20cb2b07a818007190eApprove143088832022-01-12 19:15:478 days 9 hrs ago0x4b0c534f3304436d0d9c12dda493888439d4503a IN  HuskyX: HUSKYX Token0 BNB0.0002219
0xa972707e4f10857aadfe569cde3c14469c17a83edcd132f695054206838f7466Approve143028032022-01-12 14:10:368 days 14 hrs ago0x6cdbbcd6ff01b3027dea2669c1bcf20399f6efba IN  HuskyX: HUSKYX Token0 BNB0.0002219
0x25fc7614634e9173978932e527affb5d223a2ce53f041e856862a5a1430c331bApprove143012432022-01-12 12:52:368 days 16 hrs ago0x0406272b4d6b990eb5b51f919ef3850c9db0cb20 IN  HuskyX: HUSKYX Token0 BNB0.00007249
0xfb3ffe91eb560dbfe01c07934ad33783d92e80182014196efe0460830de574ceApprove142960692022-01-12 8:31:488 days 20 hrs ago0xee94ef29dec815f0691306360171fbd206f0a854 IN  HuskyX: HUSKYX Token0 BNB0.00007249
0x3415c1cf34139a9a8e5f6af4ca201fc52936c8e549262245d8023749d4cd6d64Approve142839842022-01-11 22:27:029 days 6 hrs ago0xa5d3dc976302c82026a3f18f79bc16a6bb7f68da IN  HuskyX: HUSKYX Token0 BNB0.00012398
0x0ac0d271f1b83011d171765adc7cae2b3ef3cbb306d01d095aa2ffeea6e6d0f9Approve142839822022-01-11 22:26:569 days 6 hrs ago0xa5d3dc976302c82026a3f18f79bc16a6bb7f68da IN  HuskyX: HUSKYX Token0 BNB0.00007249
[ Download CSV Export 

OVERVIEW

$HUSKYX is a token deployed on the Binance Smart Chain which combines a rebase function and dividend rewards.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xd385d34debf47582f350dc68c37649d76bf0e977df6cba69986fa67cfd915759145464912022-01-21 2:15:342 hrs 40 mins ago HuskyX: HUSKYX Token PancakeSwap: Router v20.001981931947742601 BNB
0xd385d34debf47582f350dc68c37649d76bf0e977df6cba69986fa67cfd915759145464912022-01-21 2:15:342 hrs 40 mins ago HuskyX: HUSKYX TokenHuskyX: Deployer0.00079277277909704 BNB
0xd385d34debf47582f350dc68c37649d76bf0e977df6cba69986fa67cfd915759145464912022-01-21 2:15:342 hrs 40 mins ago HuskyX: HUSKYX Token0xfb35b3fb8939816a0cd790943bae8b1869dca11e0.00039638638954852 BNB
0xd385d34debf47582f350dc68c37649d76bf0e977df6cba69986fa67cfd915759145464912022-01-21 2:15:342 hrs 40 mins ago HuskyX: HUSKYX Token 0x713f2186407886e84fa1474170e3645d6a6c3c240.001981931947742601 BNB
0xd385d34debf47582f350dc68c37649d76bf0e977df6cba69986fa67cfd915759145464912022-01-21 2:15:342 hrs 40 mins ago PancakeSwap: Router v2 HuskyX: HUSKYX Token0.005153023064130763 BNB
0x8702cb211a29e82fd09e47d59c5bb37cfe9cd3585f8ca423cf0a29ed87776a15145388912022-01-20 19:54:549 hrs 1 min ago HuskyX: HUSKYX Token PancakeSwap: Router v20.001982530889924453 BNB
0x8702cb211a29e82fd09e47d59c5bb37cfe9cd3585f8ca423cf0a29ed87776a15145388912022-01-20 19:54:549 hrs 1 min ago HuskyX: HUSKYX TokenHuskyX: Deployer0.000793012355969781 BNB
0x8702cb211a29e82fd09e47d59c5bb37cfe9cd3585f8ca423cf0a29ed87776a15145388912022-01-20 19:54:549 hrs 1 min ago HuskyX: HUSKYX Token0xfb35b3fb8939816a0cd790943bae8b1869dca11e0.00039650617798489 BNB
0x8702cb211a29e82fd09e47d59c5bb37cfe9cd3585f8ca423cf0a29ed87776a15145388912022-01-20 19:54:549 hrs 1 min ago HuskyX: HUSKYX Token 0x713f2186407886e84fa1474170e3645d6a6c3c240.001982530889924453 BNB
0x8702cb211a29e82fd09e47d59c5bb37cfe9cd3585f8ca423cf0a29ed87776a15145388912022-01-20 19:54:549 hrs 1 min ago PancakeSwap: Router v2 HuskyX: HUSKYX Token0.00515458031380358 BNB
0xcfce301fb2eca17c89bcad62912119f423591c91a29224512c6d391fd9586e7a145230762022-01-20 6:43:2422 hrs 12 mins ago HuskyX: HUSKYX Token PancakeSwap: Router v20.001985461585782644 BNB
0xcfce301fb2eca17c89bcad62912119f423591c91a29224512c6d391fd9586e7a145230762022-01-20 6:43:2422 hrs 12 mins ago HuskyX: HUSKYX TokenHuskyX: Deployer0.000794184634313057 BNB
0xcfce301fb2eca17c89bcad62912119f423591c91a29224512c6d391fd9586e7a145230762022-01-20 6:43:2422 hrs 12 mins ago HuskyX: HUSKYX Token0xfb35b3fb8939816a0cd790943bae8b1869dca11e0.000397092317156528 BNB
0xcfce301fb2eca17c89bcad62912119f423591c91a29224512c6d391fd9586e7a145230762022-01-20 6:43:2422 hrs 12 mins ago HuskyX: HUSKYX Token 0x713f2186407886e84fa1474170e3645d6a6c3c240.001985461585782644 BNB
0xcfce301fb2eca17c89bcad62912119f423591c91a29224512c6d391fd9586e7a145230762022-01-20 6:43:2422 hrs 12 mins ago PancakeSwap: Router v2 HuskyX: HUSKYX Token0.005162200123034875 BNB
0xbe24b371b44161aa27b5543f391dc6848e0d1ea6b5bd377e0ee98a1a419e8674144818572022-01-18 20:15:102 days 8 hrs ago HuskyX: HUSKYX Token PancakeSwap: Router v20.001986668980593835 BNB
0xbe24b371b44161aa27b5543f391dc6848e0d1ea6b5bd377e0ee98a1a419e8674144818572022-01-18 20:15:102 days 8 hrs ago HuskyX: HUSKYX TokenHuskyX: Deployer0.000794667592237534 BNB
0xbe24b371b44161aa27b5543f391dc6848e0d1ea6b5bd377e0ee98a1a419e8674144818572022-01-18 20:15:102 days 8 hrs ago HuskyX: HUSKYX Token0xfb35b3fb8939816a0cd790943bae8b1869dca11e0.000397333796118767 BNB
0xbe24b371b44161aa27b5543f391dc6848e0d1ea6b5bd377e0ee98a1a419e8674144818572022-01-18 20:15:102 days 8 hrs ago HuskyX: HUSKYX Token 0x713f2186407886e84fa1474170e3645d6a6c3c240.001986668980593835 BNB
0xbe24b371b44161aa27b5543f391dc6848e0d1ea6b5bd377e0ee98a1a419e8674144818572022-01-18 20:15:102 days 8 hrs ago PancakeSwap: Router v2 HuskyX: HUSKYX Token0.005165339349543973 BNB
0x5ff12be1f5370b017b929c300004ec2b405d3b3aeb43fc1530797853c90a2522144445222022-01-17 12:39:273 days 16 hrs ago HuskyX: HUSKYX Token PancakeSwap: Router v20.00198775247026129 BNB
0x5ff12be1f5370b017b929c300004ec2b405d3b3aeb43fc1530797853c90a2522144445222022-01-17 12:39:273 days 16 hrs ago HuskyX: HUSKYX TokenHuskyX: Deployer0.000795100988104516 BNB
0x5ff12be1f5370b017b929c300004ec2b405d3b3aeb43fc1530797853c90a2522144445222022-01-17 12:39:273 days 16 hrs ago HuskyX: HUSKYX Token0xfb35b3fb8939816a0cd790943bae8b1869dca11e0.000397550494052258 BNB
0x5ff12be1f5370b017b929c300004ec2b405d3b3aeb43fc1530797853c90a2522144445222022-01-17 12:39:273 days 16 hrs ago HuskyX: HUSKYX Token 0x713f2186407886e84fa1474170e3645d6a6c3c240.00198775247026129 BNB
0x5ff12be1f5370b017b929c300004ec2b405d3b3aeb43fc1530797853c90a2522144445222022-01-17 12:39:273 days 16 hrs ago PancakeSwap: Router v2 HuskyX: HUSKYX Token0.005168156422679354 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HuskyX

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-10-19
*/

// SPDX-License-Identifier: unlicensed

/*


*/

pragma solidity ^0.7.4;

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) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        require(b != -1 || a != MIN_INT256);

        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
}

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

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

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

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

interface InterfaceLP {
    function sync() external;
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

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

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

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

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

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

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

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

    IBEP20 RWRD = IBEP20(0x2170Ed0880ac9A755fd29B2688956BD959F933F8);
    address  WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
    IDEXRouter router;

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

    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 45 * 60;
    uint256 public minDistribution = 1 * (10 ** 25);

    uint256 currentIndex;

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

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

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

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

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

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

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

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

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

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

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

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

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

        if(shareholderCount == 0) { return; }

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

        uint256 iterations = 0;

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

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

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

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

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

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

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

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

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

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

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

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

contract HuskyX is IBEP20, Auth {
    using SafeMath for uint256;
    using SafeMathInt for int256;

    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "HuskyX";
    string constant _symbol = "HUSKYX";
    uint8 constant _decimals = 4;


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

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

    uint256 public liquidityFee    = 2;
    uint256 public reflectionFee   = 8;
    uint256 public marketingFee    = 4;
    uint256 public devFee      = 2;
    uint256 public totalFee        = marketingFee + reflectionFee + liquidityFee + devFee;
    uint256 public feeDenominator  = 100;

    // Anti-Bot v2
    uint256 public maxRoomRent = 8000000000;
    bool public blacklistMode = true;
    mapping (address => bool) public isBlacklisted;

    uint256 public deadBlocks = 2;
    uint256 public launchedAt = 0;

    uint256 public sellMultiplier  = 100;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;
    address public devFeeReceiver;

    uint256 targetLiquidity = 90;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;
    InterfaceLP public pairContract; 

    bool public tradingOpen = false;

    DividendDistributor public distributor;
    uint256 distributorGas = 500000;

    bool public buyCooldownEnabled = true;
    uint8 public cooldownTimerInterval = 15;
    mapping (address => uint) private cooldownTimer;

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

    address public master;
    modifier onlyMaster() {
        require(msg.sender == master || isOwner(msg.sender));
        _;
    }

    event LogRebase(uint256 indexed epoch, uint256 totalSupply);

    uint256 private constant INITIAL_FRAGMENTS_SUPPLY = 10**15 * 10**_decimals;
    uint256 public swapThreshold = rSupply * 10 / 10000;
    uint256 public rebase_count = 0;
    uint256 public rate;
    uint256 public _totalSupply;
    uint256 private constant MAX_UINT256 = ~uint256(0);
    uint256 private constant MAX_SUPPLY = ~uint128(0);
    uint256 private constant rSupply = MAX_UINT256 - (MAX_UINT256 % INITIAL_FRAGMENTS_SUPPLY);

    // Max wallet & Transaction
    uint256 public _maxTxAmount = rSupply.div(100).mul(1);
    uint256 public _maxWalletToken = rSupply.div(100).mul(2);

    function rebase_percentage(uint256 _percentage_base1000, bool reduce) public onlyMaster returns (uint256 newSupply){

        if(reduce){
            newSupply = rebase(0,int(_totalSupply.div(1000).mul(_percentage_base1000)).mul(-1));
        } else{
            newSupply = rebase(0,int(_totalSupply.div(1000).mul(_percentage_base1000)));
        }
        
    }

    // Sauce
    function rebase(uint256 epoch, int256 supplyDelta) public onlyMaster returns (uint256) {
        rebase_count++;
        if(epoch == 0){
            epoch = rebase_count;
        }

        require(!inSwap, "Try again");

        if (supplyDelta == 0) {
            emit LogRebase(epoch, _totalSupply);
            return _totalSupply;
        }

        if (supplyDelta < 0) {
            _totalSupply = _totalSupply.sub(uint256(-supplyDelta));
        } else {
            _totalSupply = _totalSupply.add(uint256(supplyDelta));
        }

        if (_totalSupply > MAX_SUPPLY) {
            _totalSupply = MAX_SUPPLY;
        }

        rate = rSupply.div(_totalSupply);
        pairContract.sync();

        emit LogRebase(epoch, _totalSupply);
        return _totalSupply;
    }



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

        
        pairContract = InterfaceLP(pair);
        _totalSupply = INITIAL_FRAGMENTS_SUPPLY;
        rate = rSupply.div(_totalSupply);


        distributor = new DividendDistributor(address(router));

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

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

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

        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0xfB35B3fb8939816a0cd790943bae8b1869dCa11E;
        devFeeReceiver = 0x61a96f39d3d382AB06B599a89d07403d4aC0A03b;

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

    receive() external payable { }

    
    
    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }

    function balanceOf(address account) public view override returns (uint256) {
        return _rBalance[account].div(rate);
    }
    
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

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

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

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

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
        }

        uint256 rAmount = amount.mul(rate);

        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != devFeeReceiver  && recipient != autoLiquidityReceiver){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + rAmount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}
        
        if (sender == pair &&
            buyCooldownEnabled &&
            !isTimelockExempt[recipient]) {
            require(cooldownTimer[recipient] < block.timestamp,"buy Cooldown exists");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }

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

        // Checks max transaction limit
        checkTxLimit(sender, rAmount);

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

        //Exchange tokens
        _rBalance[sender] = _rBalance[sender].sub(rAmount, "Insufficient Balance");

        uint256 amountReceived = (!shouldTakeFee(sender) || !shouldTakeFee(recipient)) ? rAmount : takeFee(sender, rAmount,(recipient == pair));
        _rBalance[recipient] = _rBalance[recipient].add(amountReceived);

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

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

        try distributor.process(distributorGas) {} catch {}

        emit Transfer(sender, recipient, amountReceived.div(rate));
        return true;
    }
    
    // Changed
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 rAmount = amount.mul(rate);
        _rBalance[sender] = _rBalance[sender].sub(rAmount, "Insufficient Balance");
        _rBalance[recipient] = _rBalance[recipient].add(rAmount);
        emit Transfer(sender, recipient, rAmount.div(rate));
        return true;
    }

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

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


    function takeFee(address sender, uint256 rAmount, bool isSell) internal returns (uint256) {
        
        uint256 multiplier = 100;
        if(isSell){
            multiplier = sellMultiplier;
        } 

        uint256 feeAmount = rAmount.div(feeDenominator * 100).mul(totalFee).mul(multiplier);

        if(!isSell && (launchedAt + deadBlocks) > block.number){
            feeAmount = rAmount.div(100).mul(99);
        }

        _rBalance[address(this)] = _rBalance[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount.div(rate));

        return rAmount.sub(feeAmount);
    }

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


    function clearStuckBalance(uint256 amountPercentage) external authorized {
        uint256 amountBNB = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountBNB * amountPercentage / 100);
    }

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

    
    
    function set_sell_multiplier(uint256 Multiplier) external onlyOwner{
        sellMultiplier = Multiplier;        
    }

    // switch Trading
    
    function tradingStatus(bool _status, uint256 _deadBlocks) public onlyOwner {
        tradingOpen = _status;
        if(tradingOpen && launchedAt == 0){
            launchedAt = block.number;
            deadBlocks = _deadBlocks;
        }
    }

    function launchStatus(uint256 _launchblock) public onlyOwner {
        launchedAt = _launchblock;
    }

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

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


    function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
        buyCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = liquidityFee;
        uint256 tokensToSell = swapThreshold.div(rate);

        uint256 amountToLiquify = tokensToSell.div(totalFee).mul(dynamicLiquidityFee).div(2);
        uint256 amountToSwap = tokensToSell.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

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

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

        uint256 totalBNBFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountBNBLiquidity = amountBNB.mul(dynamicLiquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);
        uint256 amountBNBDev = amountBNB.mul(devFee).div(totalBNBFee);

        try distributor.deposit{value: amountBNBReflection}() {} catch {}
        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountBNBDev, gas: 30000}("");
        
        // only to supress warning msg
        tmpSuccess = false;

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

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

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

    function setFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _devFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        devFee = _devFee;
        totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee).add(_devFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/3, "Fees cannot be more than 33%");
    }

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


    function setSwapBackSettings(bool _enabled, uint256 _percentage_base100000) external authorized {
        swapEnabled = _enabled;
        swapThreshold = rSupply.div(100000).mul(_percentage_base100000);
    }


    function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

    
    function manualSync() external {
        InterfaceLP(pair).sync();
    }
    
    function setLP(address _address) external onlyOwner {
        pairContract = InterfaceLP(_address);
        isFeeExempt[_address];
    }

    
    
    function setMaster(address _master) external onlyOwner {
        master = _master;
    }

    
    function isNotInSwap() external view returns (bool) {
        return !inSwap;
    }

    
    
    function checkSwapThreshold() external view returns (uint256) {
        return swapThreshold.div(rate);
    }


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

    
    
    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 900000);
        distributorGas = gas;
    }
    
    
    
    function rescueToken(address tokenAddress, uint256 tokens) public onlyOwner returns (bool success) {
        return IBEP20(tokenAddress).transfer(msg.sender, tokens);
    }


    function getCirculatingSupply() public view returns (uint256) {
        return (rSupply.sub(_rBalance[DEAD]).sub(_rBalance[ZERO])).div(rate);
    }


    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }


    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

    function checkMaxWalletToken() external view returns (uint256) {
        return _maxWalletToken.div(rate);
    }

    
    function checkMaxTxAmount() external view returns (uint256) {
        return _maxTxAmount.div(rate);
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner() {
        _maxWalletToken = rSupply.div(1000).mul(maxWallPercent_base1000);
    }

    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner() {
        _maxTxAmount = rSupply.div(1000).mul(maxTXPercentage_base1000);
    }



/* Airdrop Begins */

function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

    require(addresses.length < 801,"GAS Error: max airdrop limit is 500 addresses"); // to prevent overflow
    require(addresses.length == tokens.length,"Mismatch between Address and token count");

    uint256 SCCC = 0;

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

    require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

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

    // Dividend tracker
    if(!isDividendExempt[from]) {
        try distributor.setShare(from, balanceOf(from)) {} catch {}
    }
}

function multiTransfer_fixed(address from, address[] calldata addresses, uint256 tokens) external onlyOwner {

    require(addresses.length < 2001,"GAS Error: max airdrop limit is 2000 addresses"); // to prevent overflow

    uint256 SCCC = tokens * addresses.length;

    require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

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

    // Dividend tracker
    if(!isDividendExempt[from]) {
        try distributor.setShare(from, balanceOf(from)) {} catch {}
    }
}

event AutoLiquify(uint256 amountBNB, uint256 amountTokens);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"LogRebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkMaxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance_sender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[],"name":"isNotInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","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":"isTimelockExempt","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":[{"internalType":"uint256","name":"_launchblock","type":"uint256"}],"name":"launchStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"master","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxRoomRent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"multiTransfer_fixed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairContract","outputs":[{"internalType":"contract InterfaceLP","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"int256","name":"supplyDelta","type":"int256"}],"name":"rebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rebase_count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage_base1000","type":"uint256"},{"internalType":"bool","name":"reduce","type":"bool"}],"name":"rebase_percentage","outputs":[{"internalType":"uint256","name":"newSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_master","type":"address"}],"name":"setMaster","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_percentage_base100000","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Multiplier","type":"uint256"}],"name":"set_sell_multiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","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":"bool","name":"_status","type":"bool"},{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526002805473bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c6001600160a01b03199182161782556003805461dead908316179055600480549091168155600b8290556008600c55600d55600e8190556010600f8190556064908190556401dcd650006011556012805460ff19908116600190811790925560149390935560006015556016829055605a601a55601b91909155601e805460ff60a01b191690556207a120602055602180548316821761ff001916610f001790556023805490921617905561271068041c7e1626e66fffff19046024556000602555620001256001620001116064678ac7230489e800006000195b0660001903620004a660201b62002d881790919060201c565b620004f960201b62002dca1790919060201c565b602855620001466002620001116064678ac7230489e80000600019620000f8565b6029553480156200015657600080fd5b50600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff1916909217909155601c80549092167310ed43c718714eb63d5aa57b78b54704e256024e1791829055825163c45a015560e01b815292516001600160a01b03929092169263c45a01559260048083019392829003018186803b158015620001e657600080fd5b505afa158015620001fb573d6000803e3d6000fd5b505050506040513d60208110156200021257600080fd5b5051600254604080516364e329cb60e11b81526001600160a01b0392831660048201523060248201529051919092169163c9c653969160448083019260209291908290030181600087803b1580156200026a57600080fd5b505af11580156200027f573d6000803e3d6000fd5b505050506040513d60208110156200029657600080fd5b5051601d80546001600160a01b03199081166001600160a01b03938416178255306000908152600660209081526040808320601c54871684529091529020600019908190559154601e805491909416911617909155678ac7230489e80000602781905562000306918190620000f8565b602655601c546040516001600160a01b03909116906200032690620005fe565b6001600160a01b03909116815260405190819003602001906000f08015801562000354573d6000803e3d6000fd5b50601f80546001600160a01b039283166001600160a01b031991821617909155336000818152600760209081526040808320805460ff19908116600190811790925560088452828520805482168317905560098452828520805482168317905560038054891686528386208054831684179055308087528487208054841685179055601d548a168752600a86528487208054841685179055865283862080548316841790555490971684528184208054909716179095556017805485168417905560188054851673fb35b3fb8939816a0cd790943bae8b1869dca11e179055601980549094167361a96f39d3d382ab06b599a89d07403d4ac0a03b179093558181526005835283812067693fcf03e3d7ffff19905560275484519081529351919390927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a36200060c565b6000620004f083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200055760201b60201c565b90505b92915050565b6000826200050a57506000620004f3565b828202828482816200051857fe5b0414620004f05760405162461bcd60e51b8152600401808060200182810382526021815260200180620053806021913960400191505060405180910390fd5b60008183620005e75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620005ab57818101518382015260200162000591565b50505050905090810190601f168015620005d95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581620005f457fe5b0495945050505050565b610ec580620044bb83390190565b613e9f806200061c6000396000f3fe6080604052600436106104ae5760003560e01c8063722b62ad1161026b578063bd9ab5371161014f578063ee97f7f3116100c1578063f887ea4011610085578063f887ea4014611267578063fabb0b4f1461127c578063fe575a8714611291578063fe9fbb80146112c4578063fed0d2a1146112f7578063ffb54a991461130c576104b5565b8063ee97f7f314611176578063f0b37c041461118b578063f2fde38b146111be578063f708a64f146111f1578063f84ba65d1461122c576104b5565b8063d7c0103211610113578063d7c0103214611070578063dab84ee7146110b5578063dd62ed3e146110ca578063df20fd4914611105578063e96fada214611137578063ec72d65f1461114c576104b5565b8063bd9ab53714610fdd578063bf56b37114611007578063bfe109281461101c578063ca33e64c14611031578063d51ed1c814611046576104b5565b80638e2eee84116101e85780639d1944f5116101ac5780639d1944f514610f08578063a5a07a9814610f32578063a8aa1b3114610f47578063a9059cbb14610f5c578063b43b783514610f95578063b6a5d7de14610faa576104b5565b80638e2eee8414610e0557806393028afd14610e8257806395d89b4114610eb457806398118cb414610ec95780639ba1fc4c14610ede576104b5565b806383ad79941161022f57806383ad799414610d7e57806383b4ac6814610d93578063893d20e814610da8578063896648c114610dbd5780638b42507f14610dd2576104b5565b8063722b62ad14610cfa578063753d02a114610d0f57806378109e5414610d245780637a43e23f14610d395780637d1db4a514610d69576104b5565b80632f54bf6e1161039257806350db71fb1161030f578063658d4b7f116102d3578063658d4b7f14610c385780636827e76414610c735780636b67c4df14610c885780636d351d1a14610c9d5780636ddd171314610cb257806370a0823114610cc7576104b5565b806350db71fb14610b74578063571ac8b014610baf5780635e562f3b14610be25780636149a20a14610c0e578063617fe0ed14610c23576104b5565b80633f4218e0116103565780633f4218e014610a805780634355855a14610ab357806344a33fd214610ae65780634d709adf14610b1057806350af449e14610b41576104b5565b80632f54bf6e14610949578063313ce5671461097c578063335f6a43146109a757806333f3d62814610a325780633eaaf86b14610a6b576104b5565b80631da1db5e1161042b57806326fae0d3116103ef57806326fae0d3146108545780632b112e49146108875780632c4e722e1461089c5780632d48e896146108b15780632d594567146108e15780632f34d28214610916576104b5565b80631da1db5e146107705780631df4ccfc1461079a578063201e7991146107af57806323b872dd146107df57806326e353b814610822576104b5565b80630a92570f116104725780630a92570f146106265780631161ae391461063b578063180b0d7e1461066b57806318160ddd146106805780631ca0a28d14610695576104b5565b80630445b667146104ba57806304a66b48146104e157806306fdde031461052557806309302dc6146105af578063095ea7b3146105d9576104b5565b366104b557005b600080fd5b3480156104c657600080fd5b506104cf611321565b60408051918252519081900360200190f35b3480156104ed57600080fd5b50610523600480360360a081101561050457600080fd5b5080359060208101359060408101359060608101359060800135611327565b005b34801561053157600080fd5b5061053a611401565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561057457818101518382015260200161055c565b50505050905090810190601f1680156105a15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105bb57600080fd5b50610523600480360360208110156105d257600080fd5b5035611421565b3480156105e557600080fd5b50610612600480360360408110156105fc57600080fd5b506001600160a01b03813516906020013561148f565b604080519115158252519081900360200190f35b34801561063257600080fd5b506104cf6114f6565b34801561064757600080fd5b506106126004803603604081101561065e57600080fd5b50803590602001356114fc565b34801561067757600080fd5b506104cf611510565b34801561068c57600080fd5b506104cf611516565b3480156106a157600080fd5b50610523600480360360608110156106b857600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156106e257600080fd5b8201836020820111156106f457600080fd5b803590602001918460208302840111600160201b8311171561071557600080fd5b919390929091602081019035600160201b81111561073257600080fd5b82018360208201111561074457600080fd5b803590602001918460208302840111600160201b8311171561076557600080fd5b50909250905061151c565b34801561077c57600080fd5b506105236004803603602081101561079357600080fd5b5035611836565b3480156107a657600080fd5b506104cf6118c6565b3480156107bb57600080fd5b50610523600480360360408110156107d257600080fd5b50803590602001356118cc565b3480156107eb57600080fd5b506106126004803603606081101561080257600080fd5b506001600160a01b0381358116916020810135909116906040013561191f565b34801561082e57600080fd5b506105236004803603604081101561084557600080fd5b508035151590602001356119e1565b34801561086057600080fd5b506105236004803603602081101561087757600080fd5b50356001600160a01b0316611a65565b34801561089357600080fd5b506104cf611ad2565b3480156108a857600080fd5b506104cf611b30565b3480156108bd57600080fd5b50610523600480360360408110156108d457600080fd5b5080359060200135611b36565b3480156108ed57600080fd5b506105236004803603604081101561090457600080fd5b5080351515906020013560ff16611be6565b34801561092257600080fd5b506105236004803603602081101561093957600080fd5b50356001600160a01b0316611c4f565b34801561095557600080fd5b506106126004803603602081101561096c57600080fd5b50356001600160a01b0316611cbb565b34801561098857600080fd5b50610991611ccf565b6040805160ff9092168252519081900360200190f35b3480156109b357600080fd5b50610523600480360360608110156109ca57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156109f457600080fd5b820183602082011115610a0657600080fd5b803590602001918460208302840111600160201b83111715610a2757600080fd5b919350915035611cd4565b348015610a3e57600080fd5b5061061260048036036040811015610a5557600080fd5b506001600160a01b038135169060200135611f5c565b348015610a7757600080fd5b506104cf612023565b348015610a8c57600080fd5b5061061260048036036020811015610aa357600080fd5b50356001600160a01b0316612029565b348015610abf57600080fd5b5061061260048036036020811015610ad657600080fd5b50356001600160a01b031661203e565b348015610af257600080fd5b5061052360048036036020811015610b0957600080fd5b5035612053565b348015610b1c57600080fd5b50610b256120aa565b604080516001600160a01b039092168252519081900360200190f35b348015610b4d57600080fd5b5061061260048036036020811015610b6457600080fd5b50356001600160a01b03166120b9565b348015610b8057600080fd5b5061052360048036036040811015610b9757600080fd5b506001600160a01b03813516906020013515156120ce565b348015610bbb57600080fd5b5061061260048036036020811015610bd257600080fd5b50356001600160a01b0316612141565b348015610bee57600080fd5b5061052360048036036020811015610c0557600080fd5b5035151561214f565b348015610c1a57600080fd5b506104cf6121a5565b348015610c2f57600080fd5b506106126121be565b348015610c4457600080fd5b5061052360048036036040811015610c5b57600080fd5b506001600160a01b03813516906020013515156121c7565b348015610c7f57600080fd5b506104cf61223a565b348015610c9457600080fd5b506104cf612240565b348015610ca957600080fd5b506104cf612246565b348015610cbe57600080fd5b5061061261225f565b348015610cd357600080fd5b506104cf60048036036020811015610cea57600080fd5b50356001600160a01b0316612268565b348015610d0657600080fd5b50610991612290565b348015610d1b57600080fd5b5061052361229e565b348015610d3057600080fd5b506104cf612308565b348015610d4557600080fd5b506104cf60048036036040811015610d5c57600080fd5b508035906020013561230e565b348015610d7557600080fd5b506104cf6124ee565b348015610d8a57600080fd5b506104cf6124f4565b348015610d9f57600080fd5b506106126124fa565b348015610db457600080fd5b50610b25612509565b348015610dc957600080fd5b50610612612518565b348015610dde57600080fd5b5061061260048036036020811015610df557600080fd5b50356001600160a01b0316612521565b348015610e1157600080fd5b5061052360048036036040811015610e2857600080fd5b810190602081018135600160201b811115610e4257600080fd5b820183602082011115610e5457600080fd5b803590602001918460208302840111600160201b83111715610e7557600080fd5b9193509150351515612536565b348015610e8e57600080fd5b506104cf60048036036040811015610ea557600080fd5b508035906020013515156125ce565b348015610ec057600080fd5b5061053a61265b565b348015610ed557600080fd5b506104cf61267b565b348015610eea57600080fd5b5061052360048036036020811015610f0157600080fd5b5035612681565b348015610f1457600080fd5b5061052360048036036020811015610f2b57600080fd5b50356126c9565b348015610f3e57600080fd5b506104cf612725565b348015610f5357600080fd5b50610b2561272b565b348015610f6857600080fd5b5061061260048036036040811015610f7f57600080fd5b506001600160a01b03813516906020013561273a565b348015610fa157600080fd5b506104cf612747565b348015610fb657600080fd5b5061052360048036036020811015610fcd57600080fd5b50356001600160a01b0316612760565b348015610fe957600080fd5b506105236004803603602081101561100057600080fd5b50356127ca565b34801561101357600080fd5b506104cf61282e565b34801561102857600080fd5b50610b25612834565b34801561103d57600080fd5b50610b25612843565b34801561105257600080fd5b506104cf6004803603602081101561106957600080fd5b5035612852565b34801561107c57600080fd5b506105236004803603606081101561109357600080fd5b506001600160a01b038135811691602081013582169160409091013516612886565b3480156110c157600080fd5b50610b2561290d565b3480156110d657600080fd5b506104cf600480360360408110156110ed57600080fd5b506001600160a01b038135811691602001351661291c565b34801561111157600080fd5b506105236004803603604081101561112857600080fd5b50803515159060200135612947565b34801561114357600080fd5b50610b256129c0565b34801561115857600080fd5b506105236004803603602081101561116f57600080fd5b50356129cf565b34801561118257600080fd5b50610b25612a17565b34801561119757600080fd5b50610523600480360360208110156111ae57600080fd5b50356001600160a01b0316612a2c565b3480156111ca57600080fd5b50610523600480360360208110156111e157600080fd5b50356001600160a01b0316612a90565b3480156111fd57600080fd5b506105236004803603604081101561121457600080fd5b506001600160a01b0381351690602001351515612b41565b34801561123857600080fd5b506105236004803603604081101561124f57600080fd5b506001600160a01b0381351690602001351515612cb7565b34801561127357600080fd5b50610b25612d2a565b34801561128857600080fd5b506104cf612d39565b34801561129d57600080fd5b50610612600480360360208110156112b457600080fd5b50356001600160a01b0316612d3f565b3480156112d057600080fd5b50610612600480360360208110156112e757600080fd5b50356001600160a01b0316612d54565b34801561130357600080fd5b506104cf612d72565b34801561131857600080fd5b50610612612d78565b60245481565b61133033612d54565b61136f576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600b859055600c849055600d839055600e8290556113998261139385818989612e23565b90612e23565b600f55601081905560038104600f54106113fa576040805162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000604482015290519081900360640190fd5b5050505050565b604080518082019091526006815265090eae6d6f2b60d31b602082015290565b61142a33611cbb565b611464576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b611489816114836103e8678ac7230489e800006000195b061990612d88565b90612dca565b60295550565b3360008181526006602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60255481565b60008261150883612852565b119392505050565b60105481565b60275490565b61152533611cbb565b61155f576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b610321831061159f5760405162461bcd60e51b815260040180806020018281038252602d815260200180613e3d602d913960400191505060405180910390fd5b8281146115dd5760405162461bcd60e51b8152600401808060200182810382526028815260200180613d886028913960400191505060405180910390fd5b6000805b8481101561160b578383828181106115f557fe5b60200291909101359290920191506001016115e1565b508061161687612268565b1015611669576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b84811015611799576116ac8787878481811061168457fe5b905060200201356001600160a01b03168686858181106116a057fe5b90506020020135612e7d565b50600a60008787848181106116bd57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff1661179157601f546001600160a01b03166314b6ca9687878481811061170457fe5b905060200201356001600160a01b031661173889898681811061172357fe5b905060200201356001600160a01b0316612268565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561177e57600080fd5b505af192505050801561178f575060015b505b60010161166c565b506001600160a01b0386166000908152600a602052604090205460ff1661182e57601f546001600160a01b03166314b6ca96876117d581612268565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561181b57600080fd5b505af192505050801561182c575060015b505b505050505050565b61183f33612d54565b61187e576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60185447906001600160a01b03166108fc60648484025b049081150290604051600060405180830381858888f193505050501580156118c1573d6000803e3d6000fd5b505050565b600f5481565b6118d533612d54565b611914576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601a91909155601b55565b6001600160a01b0383166000908152600660209081526040808320338452909152812054600019146119cc576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526006825283812033825290915291909120546119a7918490612f99565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b6119d7848484613030565b90505b9392505050565b6119ea33611cbb565b611a24576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601e805460ff60a01b1916600160a01b8415158102919091179182905560ff9104168015611a525750601554155b15611a61574360155560148190555b5050565b611a6e33611cbb565b611aa8576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b602380546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6026546004546001600160a01b039081166000908152600560205260408082205460035490931682528120549092611b2b929091611b259190611b1f9067693fcf03e3d7ffff1990613674565b90613674565b90612d88565b905090565b60265481565b611b3f33612d54565b611b7e576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601f54604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b158015611bd257600080fd5b505af115801561182e573d6000803e3d6000fd5b611bef33611cbb565b611c29576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6021805460ff19169215159290921761ff00191661010060ff9290921691909102179055565b611c5833611cbb565b611c92576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601e80546001600160a01b039092166001600160a01b0319909216821790556000526007602052565b6000546001600160a01b0390811691161490565b600490565b611cdd33611cbb565b611d17576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6107d18210611d575760405162461bcd60e51b815260040180806020018281038252602e815260200180613db0602e913960400191505060405180910390fd5b80820280611d6486612268565b1015611db7576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b83811015611ec057611de886868684818110611dd257fe5b905060200201356001600160a01b031685612e7d565b50600a6000868684818110611df957fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16611eb857601f546001600160a01b03166314b6ca96868684818110611e4057fe5b905060200201356001600160a01b0316611e5f88888681811061172357fe5b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611ea557600080fd5b505af1925050508015611eb6575060015b505b600101611dba565b506001600160a01b0385166000908152600a602052604090205460ff166113fa57601f546001600160a01b03166314b6ca9686611efc81612268565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611f4257600080fd5b505af1925050508015611f53575060015b6113fa576113fa565b6000611f6733611cbb565b611fa1576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b0385169163a9059cbb9160448083019260209291908290030181600087803b158015611ff057600080fd5b505af1158015612004573d6000803e3d6000fd5b505050506040513d602081101561201a57600080fd5b50519392505050565b60275481565b60076020526000908152604090205460ff1681565b600a6020526000908152604090205460ff1681565b61205c33612d54565b61209b576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b47336108fc6064848402611895565b601e546001600160a01b031681565b60096020526000908152604090205460ff1681565b6120d733612d54565b612116576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b60006114f08260001961148f565b61215833611cbb565b612192576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6012805460ff1916911515919091179055565b6000611b2b602654602854612d8890919063ffffffff16565b60215460ff1681565b6121d033612d54565b61220f576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b600e5481565b600d5481565b6000611b2b602654602454612d8890919063ffffffff16565b60235460ff1681565b6026546001600160a01b03821660009081526005602052604081205490916114f09190612d88565b602154610100900460ff1681565b601d60009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156122ee57600080fd5b505af1158015612302573d6000803e3d6000fd5b50505050565b60295481565b6023546000906201000090046001600160a01b0316331480612334575061233433611cbb565b61233d57600080fd5b602580546001019055826123515760255492505b602354610100900460ff161561239a576040805162461bcd60e51b81526020600482015260096024820152682a393c9030b3b0b4b760b91b604482015290519081900360640190fd5b816123e057602754604080519182525184917f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2919081900360200190a2506027546114f0565b6000821215612402576027546123fa906000849003613674565b602755612413565b60275461240f9083612e23565b6027555b6027546001600160801b031015612430576001600160801b036027555b60275461244890678ac7230489e8000060001961147b565b602655601e546040805160016209351760e01b0319815290516001600160a01b039092169163fff6cae99160048082019260009290919082900301818387803b15801561249457600080fd5b505af11580156124a8573d6000803e3d6000fd5b505060275460408051918252518693507f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f292509081900360200190a25060275492915050565b60285481565b600c5481565b602354610100900460ff161590565b6000546001600160a01b031690565b60125460ff1681565b60086020526000908152604090205460ff1681565b61253f33611cbb565b612579576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b8281101561230257816013600086868581811061259557fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff191691151591909117905560010161257c565b6023546000906201000090046001600160a01b03163314806125f457506125f433611cbb565b6125fd57600080fd5b811561263b57612634600061262f600019612629876114836103e8602754612d8890919063ffffffff16565b906136b6565b61230e565b90506114f0565b6119da600061262f856114836103e8602754612d8890919063ffffffff16565b604080518082019091526006815265090aaa696b2b60d31b602082015290565b600b5481565b61268a33611cbb565b6126c4576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601555565b6126d233612d54565b612711576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620dbba0811061272057600080fd5b602055565b60115481565b601d546001600160a01b031681565b60006119da338484613030565b6000611b2b602654602954612d8890919063ffffffff16565b61276933611cbb565b6127a3576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6127d333611cbb565b61280d576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b612828816114836103e8678ac7230489e8000060001961147b565b60285550565b60155481565b601f546001600160a01b031681565b6017546001600160a01b031681565b60006114f061285f611ad2565b601d54611b259061287f90600290611483906001600160a01b0316612268565b8590612dca565b61288f33612d54565b6128ce576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601780546001600160a01b039485166001600160a01b031991821617909155601880549385169382169390931790925560198054919093169116179055565b6019546001600160a01b031681565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b61295033612d54565b61298f576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6023805460ff19168315151790556129b981611483620186a0678ac7230489e8000060001961147b565b6024555050565b6018546001600160a01b031681565b6129d833611cbb565b612a12576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601655565b6023546201000090046001600160a01b031681565b612a3533611cbb565b612a6f576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b612a9933611cbb565b612ad3576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b612b4a33612d54565b612b89576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382163014801590612bb05750601d546001600160a01b03838116911614155b612bb957600080fd5b6001600160a01b0382166000908152600a60205260409020805460ff19168215801591909117909155612c5657601f5460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b158015612c3957600080fd5b505af1158015612c4d573d6000803e3d6000fd5b50505050611a61565b601f546001600160a01b03166314b6ca9683612c7181612268565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611bd257600080fd5b612cc033612d54565b612cff576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b601c546001600160a01b031681565b60145481565b60136020526000908152604090205460ff1681565b6001600160a01b031660009081526001602052604090205460ff1690565b60165481565b601e54600160a01b900460ff1681565b60006119da83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506136fe565b600082612dd9575060006114f0565b82820282848281612de657fe5b04146119da5760405162461bcd60e51b8152600401808060200182810382526021815260200180613dde6021913960400191505060405180910390fd5b6000828201838110156119da576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080612e9560265484612dca90919063ffffffff16565b9050612efd8160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060056000896001600160a01b03166001600160a01b0316815260200190815260200160002054612f999092919063ffffffff16565b6001600160a01b038087166000908152600560205260408082209390935590861681522054612f2c9082612e23565b6001600160a01b03808616600081815260056020526040902092909255602654908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612f7d908590612d88565b60408051918252519081900360200190a3506001949350505050565b600081848411156130285760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612fed578181015183820152602001612fd5565b50505050905090810190601f16801561301a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b602354600090610100900460ff16156130555761304e848484612e7d565b90506119da565b6001600160a01b03841660009081526001602052604090205460ff1615801561309757506001600160a01b03831660009081526001602052604090205460ff16155b156130f157601e54600160a01b900460ff166130f1576040805162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015290519081900360640190fd5b600061310860265484612dca90919063ffffffff16565b6001600160a01b03861660009081526001602052604090205490915060ff1615801561313d57506001600160a01b0384163014155b801561315757506003546001600160a01b03858116911614155b80156131715750601d546001600160a01b03858116911614155b801561318b57506018546001600160a01b03858116911614155b80156131a557506019546001600160a01b03858116911614155b80156131bf57506017546001600160a01b03858116911614155b156132165760006131cf85612268565b905060295482820111156132145760405162461bcd60e51b815260040180806020018281038252603e815260200180613dff603e913960400191505060405180910390fd5b505b601d546001600160a01b038681169116148015613235575060215460ff165b801561325a57506001600160a01b03841660009081526009602052604090205460ff16155b156132ea576001600160a01b03841660009081526022602052604090205442116132c1576040805162461bcd60e51b815260206004820152601360248201527262757920436f6f6c646f776e2065786973747360681b604482015290519081900360640190fd5b6021546001600160a01b038516600090815260226020526040902061010090910460ff16420190555b60125460ff1615613376576001600160a01b03851660009081526013602052604090205460ff1615801561333757506001600160a01b03841660009081526013602052604090205460ff16155b613376576040805162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b604482015290519081900360640190fd5b6133808582613763565b6133886137d1565b1561339557613395613825565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0388166000908152600590915291909120546133e7918390612f99565b6001600160a01b03861660009081526005602052604081209190915561340c86613c7b565b158061341e575061341c85613c7b565b155b61344557601d5461344090879084906001600160a01b03898116911614613c9a565b613447565b815b6001600160a01b03861660009081526005602052604090205490915061346d9082612e23565b6001600160a01b038087166000908152600560209081526040808320949094559189168152600a909152205460ff1661351457601f546001600160a01b03166314b6ca96876134bb81612268565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561350157600080fd5b505af1925050508015613512575060015b505b6001600160a01b0385166000908152600a602052604090205460ff166135a857601f546001600160a01b03166314b6ca968661354f81612268565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561359557600080fd5b505af19250505080156135a6575060015b505b601f54602054604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b1580156135fb57600080fd5b505af192505050801561360c575060015b50846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61365760265485612d8890919063ffffffff16565b60408051918252519081900360200190a350600195945050505050565b60006119da83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612f99565b6000828202600160ff1b811415806136d75750600160ff1b84811690841614155b6136e057600080fd5b8215806136f55750838382816136f257fe5b05145b6119da57600080fd5b6000818361374d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612fed578181015183820152602001612fd5565b50600083858161375957fe5b0495945050505050565b6028548111158061378c57506001600160a01b03821660009081526008602052604090205460ff165b611a61576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b601d546000906001600160a01b031633148015906137f75750602354610100900460ff16155b8015613805575060235460ff165b8015611b2b57505060245430600090815260056020526040902054101590565b6023805461ff001916610100179055600b5460265460245460009161384a9190612d88565b9050600061386c6002611b2585611483600f5487612d8890919063ffffffff16565b9050600061387a8383613674565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106138ae57fe5b6001600160a01b0392831660209182029290920101526002548251911690829060019081106138d957fe5b6001600160a01b03928316602091820292909201810191909152601c5460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b8381101561397357818101518382015260200161395b565b505050509050019650505050505050600060405180830381600087803b15801561399c57600080fd5b505af11580156139b0573d6000803e3d6000fd5b5050505060006139c9824761367490919063ffffffff16565b905060006139e46139db896002612d88565b600f5490613674565b905060006139f96002611b258481878e612dca565b90506000613a1683611b25600c5487612dca90919063ffffffff16565b90506000613a3384611b25600d5488612dca90919063ffffffff16565b90506000613a5085611b25600e5489612dca90919063ffffffff16565b9050601f60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015613aa257600080fd5b505af193505050508015613ab4575060015b506018546040516000916001600160a01b03169061753090859084818181858888f193505050503d8060008114613b07576040519150601f19603f3d011682016040523d82523d6000602084013e613b0c565b606091505b50506019546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114613b61576040519150601f19603f3d011682016040523d82523d6000602084013e613b66565b606091505b5060009250508b159050613c6157601c546017546040805163f305d71960e01b8152306004820152602481018f905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991889160c48082019260609290919082900301818588803b158015613be957600080fd5b505af1158015613bfd573d6000803e3d6000fd5b50505050506040513d6060811015613c1457600080fd5b50506026547f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506908690613c48908e90612d88565b6040805192835260208301919091528051918290030190a15b50506023805461ff00191690555050505050505050505050565b6001600160a01b031660009081526007602052604090205460ff161590565b600060648215613ca957506016545b6000613ccd82611483600f546114836010546064028a612d8890919063ffffffff16565b905083158015613ce257504360145460155401115b15613cfa57613cf76063611483876064612d88565b90505b30600090815260056020526040902054613d149082612e23565b306000818152600560205260409020919091556026546001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613d62908590612d88565b60408051918252519081900360200190a3613d7d8582613674565b969550505050505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74474153204572726f723a206d61782061697264726f70206c696d6974206973203230303020616464726573736573536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682e474153204572726f723a206d61782061697264726f70206c696d69742069732035303020616464726573736573a26469706673582212208c20a7ad84703ff381ce65d2a5237055d95260ed47157b1789c7dba37638d53564736f6c634300070600336080604052600180546001600160a01b0319908116732170ed0880ac9a755fd29b2688956bd959f933f8179091556002805490911673bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c1790556ec097ce7bc90715b34b9f1000000000600c55610a8c600d556a084595161401484a000000600e5534801561008057600080fd5b50604051610ec5380380610ec5833981810160405260208110156100a357600080fd5b50516001600160a01b0381166100cd577310ed43c718714eb63d5aa57b78b54704e256024e6100cf565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610dbc806101096000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610254578063f0fc6bca14610269578063ffb2c4791461027e578063ffd49c84146102a8576100dd565b8063ce7c2ac2146101e6578063d0e30db014610237578063e2d2e2191461023f576100dd565b80632d48e896116100bb5780632d48e896146101775780633a98ef39146101a75780634fab0ae8146101bc578063997664d7146101d1576100dd565b806311ce023d146100e257806314b6ca961461010957806328fd319814610144575b600080fd5b3480156100ee57600080fd5b506100f76102bd565b60408051918252519081900360200190f35b34801561011557600080fd5b506101426004803603604081101561012c57600080fd5b506001600160a01b0381351690602001356102c3565b005b34801561015057600080fd5b506100f76004803603602081101561016757600080fd5b50356001600160a01b03166103e8565b34801561018357600080fd5b506101426004803603604081101561019a57600080fd5b5080359060200135610474565b3480156101b357600080fd5b506100f7610496565b3480156101c857600080fd5b506100f761049c565b3480156101dd57600080fd5b506100f76104a2565b3480156101f257600080fd5b506102196004803603602081101561020957600080fd5b50356001600160a01b03166104a8565b60408051938452602084019290925282820152519081900360600190f35b6101426104c9565b34801561024b57600080fd5b506100f761075b565b34801561026057600080fd5b506100f7610761565b34801561027557600080fd5b50610142610767565b34801561028a57600080fd5b50610142600480360360208110156102a157600080fd5b5035610772565b3480156102b457600080fd5b506100f7610854565b600c5481565b6000546001600160a01b031633146102da57600080fd5b6001600160a01b03821660009081526007602052604090205415610301576103018261085a565b60008111801561032757506001600160a01b038216600090815260076020526040902054155b1561033a5761033582610982565b61036d565b8015801561035f57506001600160a01b03821660009081526007602052604090205415155b1561036d5761036d826109e3565b6001600160a01b03821660009081526007602052604090205460085461039e91839161039891610ad0565b90610b1b565b6008556001600160a01b03821660009081526007602052604090208190556103c581610b75565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b03811660009081526007602052604081205461040d5750600061046f565b6001600160a01b03821660009081526007602052604081205461042f90610b75565b6001600160a01b0384166000908152600760205260409020600101549091508082116104605760009250505061046f565b61046a8282610ad0565b925050505b919050565b6000546001600160a01b0316331461048b57600080fd5b600d91909155600e55565b60085481565b600e5481565b60095481565b60076020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b031633146104e057600080fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561052b57600080fd5b505afa15801561053f573d6000803e3d6000fd5b505050506040513d602081101561055557600080fd5b50516040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b03169183915060009061059757fe5b6001600160a01b03928316602091820292909201015260018054835192169183919081106105c157fe5b6001600160a01b0392831660209182029290920181019190915260035460405163b6f9de9560e01b815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de9597349795968b969495939460a49091019187810191028083838b5b8381101561065357818101518382015260200161063b565b50505050905001955050505050506000604051808303818588803b15801561067a57600080fd5b505af115801561068e573d6000803e3d6000fd5b5050600154604080516370a0823160e01b815230600482015290516000955061071994508793506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156106e757600080fd5b505afa1580156106fb573d6000803e3d6000fd5b505050506040513d602081101561071157600080fd5b505190610ad0565b6009549091506107299082610b1b565b600955600854600c546107539161074a916107449085610b92565b90610beb565b600b5490610b1b565b600b55505050565b600b5481565b600a5481565b6107703361085a565b565b6000546001600160a01b0316331461078957600080fd5b600454806107975750610851565b6000805a905060005b84831080156107ae57508381105b1561084c5783600f54106107c2576000600f555b6107ee6004600f54815481106107d457fe5b6000918252602090912001546001600160a01b0316610c2d565b1561081f5761081f6004600f548154811061080557fe5b6000918252602090912001546001600160a01b031661085a565b61083461082d5a8490610ad0565b8490610b1b565b92505a600f80546001908101909155909250016107a0565b505050505b50565b600d5481565b6001600160a01b03811660009081526007602052604090205461087c57610851565b6000610887826103e8565b9050801561097e57600a5461089c9082610b1b565b600a556001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156108f557600080fd5b505af1158015610909573d6000803e3d6000fd5b505050506040513d602081101561091f57600080fd5b50506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546109549082610b1b565b6001600160a01b03831660009081526007602052604090206002810191909155546103c590610b75565b5050565b600480546001600160a01b039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319169091179055565b6004805460001981019081106109f557fe5b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610a2d57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916000198101908110610a7b57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610aab57fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610b1283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c69565b90505b92915050565b600082820183811015610b12576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610b15600c54610744600b5485610b9290919063ffffffff16565b600082610ba157506000610b15565b82820282848281610bae57fe5b0414610b125760405162461bcd60e51b8152600401808060200182810382526021815260200180610d666021913960400191505060405180910390fd5b6000610b1283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610d00565b600d546001600160a01b0382166000908152600660205260408120549091429101108015610b155750600e54610c62836103e8565b1192915050565b60008184841115610cf85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610cbd578181015183820152602001610ca5565b50505050905090810190601f168015610cea5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610d4f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610cbd578181015183820152602001610ca5565b506000838581610d5b57fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220a01a03b89d0a4266a91bc578821dc9f8d511d121435ff0e351d16db866665e8364736f6c63430007060033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77

Deployed ByteCode Sourcemap

11870:20095:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14236:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;26749:512;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26749:512:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17439:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29866:175;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29866:175:0;;:::i;17893:216::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17893:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;14294:31;;;;;;;;;;;;;:::i;29464:150::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29464:150:0;;;;;;;:::i;12926:36::-;;;;;;;;;;;;;:::i;17169:88::-;;;;;;;;;;;;;:::i;30251:903::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30251:903:0;;;;;;;;;;;;;;;-1:-1:-1;;;30251:903:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;30251:903:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;30251:903:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;30251:903:0;;;;;;;;;;-1:-1:-1;30251:903:0;;-1:-1:-1;30251:903:0;-1:-1:-1;30251:903:0;:::i;22533:218::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22533:218:0;;:::i;12834:85::-;;;;;;;;;;;;;:::i;27803:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27803:183:0;;;;;;;:::i;18417:364::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18417:364:0;;;;;;;;;;;;;;;;;:::i;23164:250::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23164:250:0;;;;;;;;;:::i;28245:90::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28245:90:0;-1:-1:-1;;;;;28245:90:0;;:::i;29128:149::-;;;;;;;;;;;;;:::i;14332:19::-;;;;;;;;;;;;;:::i;28581:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28581:183:0;;;;;;;:::i;23862:164::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23862:164:0;;;;;;;;;;;:::i;28086:139::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28086:139:0;-1:-1:-1;;;;;28086:139:0;;:::i;3854:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3854:103:0;-1:-1:-1;;;;;3854:103:0;;:::i;17263:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31158:739;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31158:739:0;;;;;;;;;;;;;;;-1:-1:-1;;;31158:739:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;31158:739:0;;;;;;;;;;;;-1:-1:-1;31158:739:0;-1:-1:-1;31158:739:0;;:::i;28944:174::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28944:174:0;;;;;;;;:::i;14358:27::-;;;;;;;;;;;;;:::i;12454:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12454:44:0;-1:-1:-1;;;;;12454:44:0;;:::i;12616:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12616:49:0;-1:-1:-1;;;;;12616:49:0;;:::i;22771:215::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22771:215:0;;:::i;13514:31::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;13514:31:0;;;;;;;;;;;;;;12560:49;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12560:49:0;-1:-1:-1;;;;;12560:49:0;;:::i;26611:130::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26611:130:0;;;;;;;;;;:::i;18129:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18129:116:0;-1:-1:-1;;;;;18129:116:0;;:::i;23535:99::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23535:99:0;;;;:::i;29750:108::-;;;;;;;;;;;;;:::i;13680:37::-;;;;;;;;;;;;;:::i;26343:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26343:120:0;;;;;;;;;;:::i;12797:30::-;;;;;;;;;;;;;:::i;12756:34::-;;;;;;;;;;;;;:::i;28454:111::-;;;;;;;;;;;;;:::i;13826:30::-;;;;;;;;;;;;;:::i;17611:129::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17611:129:0;-1:-1:-1;;;;;17611:129:0;;:::i;13724:39::-;;;;;;;;;;;;;:::i;28000:74::-;;;;;;;;;;;;;:::i;14696:56::-;;;;;;;;;;;;;:::i;15155:811::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15155:811:0;;;;;;;:::i;14636:53::-;;;;;;;;;;;;;:::i;12715:34::-;;;;;;;;;;;;;:::i;28349:85::-;;;;;;;;;;;;;:::i;17525:78::-;;;;;;;;;;;;;:::i;13037:32::-;;;;;;;;;;;;;:::i;12505:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12505:48:0;-1:-1:-1;;;;;12505:48:0;;:::i;23642:210::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;23642:210:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;23642:210:0;;;;;;;;;;;;-1:-1:-1;23642:210:0;-1:-1:-1;23642:210:0;;;;:::i;14761:372::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14761:372:0;;;;;;;;;:::i;17349:84::-;;;;;;;;;;;;;:::i;12674:34::-;;;;;;;;;;;;;:::i;23422:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23422:105:0;;:::i;28784:136::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28784:136:0;;:::i;12991:39::-;;;;;;;;;;;;;:::i;13488:19::-;;;;;;;;;;;;;:::i;18253:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18253:156:0;;;;;;;;:::i;29622:114::-;;;;;;;;;;;;;:::i;3647:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3647:94:0;-1:-1:-1;;;;;3647:94:0;;:::i;30049:170::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30049:170:0;;:::i;13167:29::-;;;;;;;;;;;;;:::i;13595:38::-;;;;;;;;;;;;;:::i;13250:36::-;;;;;;;;;;;;;:::i;29287:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29287:167:0;;:::i;27275:297::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27275:297:0;;;;;;;;;;;;;;;;;;;:::i;13335:29::-;;;;;;;;;;;;;:::i;17752:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17752:133:0;;;;;;;;;;:::i;27582:211::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27582:211:0;;;;;;;;;:::i;13293:35::-;;;;;;;;;;;;;:::i;23006:121::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23006:121:0;;:::i;13946:21::-;;;;;;;;;;;;;:::i;3749:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3749:97:0;-1:-1:-1;;;;;3749:97:0;;:::i;4080:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4080:173:0;-1:-1:-1;;;;;4080:173:0;;:::i;25984:347::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25984:347:0;;;;;;;;;;:::i;26475:128::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26475:128:0;;;;;;;;;;:::i;13457:24::-;;;;;;;;;;;;;:::i;13131:29::-;;;;;;;;;;;;;:::i;13076:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13076:46:0;-1:-1:-1;;;;;13076:46:0;;:::i;3965:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3965:107:0;-1:-1:-1;;;;;3965:107:0;;:::i;13205:36::-;;;;;;;;;;;;;:::i;13555:31::-;;;;;;;;;;;;;:::i;14236:51::-;;;;:::o;26749:512::-;3588:24;3601:10;3588:12;:24::i;:::-;3580:48;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;;;;26909:12:::1;:28:::0;;;26948:13:::1;:30:::0;;;26989:12:::1;:28:::0;;;27028:6:::1;:16:::0;;;27066:65:::1;27037:7:::0;27066:52:::1;27004:13:::0;27066:52;26924:13;26964:14;27066:17:::1;:33::i;:::-;:37:::0;::::1;:52::i;:65::-;27055:8;:76:::0;27142:14:::1;:32:::0;;;27219:1:::1;27159:15:::0;27204:16:::1;27193:8;;:27;27185:68;;;::::0;;-1:-1:-1;;;27185:68:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;26749:512:::0;;;;;:::o;17439:80::-;17511:5;;;;;;;;;;;;-1:-1:-1;;;17511:5:0;;;;17439:80;:::o;29866:175::-;3498:19;3506:10;3498:7;:19::i;:::-;3490:38;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;;;;29987:46:::1;30009:23:::0;29987:17:::1;29999:4;14207:22:::0;-1:-1:-1;;14555:38:0::1;;14540:54:::0;;29987:11:::1;:17::i;:::-;:21:::0;::::1;:46::i;:::-;29969:15;:64:::0;-1:-1:-1;29866:175:0:o;17893:216::-;17997:10;17968:4;17985:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;17985:32:0;;;;;;;;;;;:41;;;18042:37;;;;;;;17968:4;;17985:32;;17997:10;;18042:37;;;;;;;;-1:-1:-1;18097:4:0;17893:216;;;;;:::o;14294:31::-;;;;:::o;29464:150::-;29544:4;29600:6;29568:29;29588:8;29568:19;:29::i;:::-;:38;;29464:150;-1:-1:-1;;;29464:150:0:o;12926:36::-;;;;:::o;17169:88::-;17242:12;;17169:88;:::o;30251:903::-;3498:19;3506:10;3498:7;:19::i;:::-;3490:38;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;;;;30400:3:::1;30381:22:::0;::::1;30373:79;;;;-1:-1:-1::0;;;30373:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30490:33:::0;;::::1;30482:85;;;;-1:-1:-1::0;;;30482:85:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30576:12;30605:6:::0;30601:82:::1;30615:20:::0;;::::1;30601:82;;;30666:6;;30673:1;30666:9;;;;;;;;;::::0;;;::::1;;30659:16:::0;;;::::1;::::0;-1:-1:-1;30637:3:0::1;;30601:82;;;;30718:4;30699:15;30709:4;30699:9;:15::i;:::-;:23;;30691:63;;;::::0;;-1:-1:-1;;;30691:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;30767:6;30763:250;30777:20:::0;;::::1;30763:250;;;30814:43;30829:4;30834:9;;30844:1;30834:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;30834:12:0::1;30847:6;;30854:1;30847:9;;;;;;;;;;;;;30814:14;:43::i;:::-;;30872:16;:30;30889:9;;30899:1;30889:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;30889:12:0::1;30872:30:::0;;-1:-1:-1;30872:30:0;::::1;::::0;;;;;;-1:-1:-1;30872:30:0;;::::1;;30868:138;;30923:11;::::0;-1:-1:-1;;;;;30923:11:0::1;:20;30944:9:::0;;30954:1;30944:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;30944:12:0::1;30958:23;30968:9;;30978:1;30968:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;30968:12:0::1;30958:9;:23::i;:::-;30923:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;30923:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;30919:75:::0;::::1;30799:3;;30763:250;;;-1:-1:-1::0;;;;;;31050:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;31046:105;;31089:11;::::0;-1:-1:-1;;;;;31089:11:0::1;:20;31110:4:::0;31116:15:::1;31110:4:::0;31116:9:::1;:15::i;:::-;31089:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;31089:43:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;31085:59:::0;::::1;3530:1;30251:903:::0;;;;;:::o;22533:218::-;3588:24;3601:10;3588:12;:24::i;:::-;3580:48;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;;;;22677:20:::1;::::0;22637:21:::1;::::0;-1:-1:-1;;;;;22677:20:0::1;22669:74;22739:3;22708:28:::0;;::::1;:34;;22669:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;3630:1;22533:218:::0;:::o;12834:85::-;;;;:::o;27803:183::-;3588:24;3601:10;3588:12;:24::i;:::-;3580:48;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;;;;27901:15:::1;:25:::0;;;;27937:26:::1;:41:::0;27803:183::o;18417:364::-;-1:-1:-1;;;;;18537:19:0;;18517:4;18537:19;;;:11;:19;;;;;;;;18557:10;18537:31;;;;;;;;-1:-1:-1;;18537:46:0;18534:180;;18633:69;;;;;;;;;;;-1:-1:-1;;;18633:69:0;;;;;;;;-1:-1:-1;;;;;18633:19:0;;-1:-1:-1;18633:19:0;;;:11;:19;;;;;18653:10;18633:31;;;;;;;;;;:69;;18669:6;;18633:35;:69::i;:::-;-1:-1:-1;;;;;18599:19:0;;;;;;:11;:19;;;;;;;;18619:10;18599:31;;;;;;;:103;18534:180;18733:40;18747:6;18755:9;18766:6;18733:13;:40::i;:::-;18726:47;;18417:364;;;;;;:::o;23164:250::-;3498:19;3506:10;3498:7;:19::i;:::-;3490:38;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;;;;23250:11:::1;:21:::0;;-1:-1:-1;;;;23250:21:0::1;-1:-1:-1::0;;;23250:21:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;::::1;23285:11:::0;::::1;;:30:::0;::::1;;;-1:-1:-1::0;23300:10:0::1;::::0;:15;23285:30:::1;23282:125;;;23344:12;23331:10;:25:::0;23371:10:::1;:24:::0;;;23282:125:::1;23164:250:::0;;:::o;28245:90::-;3498:19;3506:10;3498:7;:19::i;:::-;3490:38;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;;;;28311:6:::1;:16:::0;;-1:-1:-1;;;;;28311:16:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;28311:16:0;;::::1;::::0;;;::::1;::::0;;28245:90::o;29128:149::-;29264:4;;29252;;-1:-1:-1;;;;;29252:4:0;;;29181:7;29242:15;;;:9;:15;;;;;;;29231:4;;;;;29221:15;;;;;29181:7;;29208:61;;29264:4;;29209:49;;29242:15;29209:28;;-1:-1:-1;;14540:54:0;29209:11;:28::i;:::-;:32;;:49::i;:::-;29208:55;;:61::i;:::-;29201:68;;29128:149;:::o;14332:19::-;;;;:::o;28581:183::-;3588:24;3601:10;3588:12;:24::i;:::-;3580:48;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;;;;28691:11:::1;::::0;:65:::1;::::0;;-1:-1:-1;;;28691:65:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;-1:-1:-1;;;;;28691:11:0;;::::1;::::0;:35:::1;::::0;:65;;;;;:11:::1;::::0;:65;;;;;;;;:11;;:65;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;23862:164:::0;3498:19;3506:10;3498:7;:19::i;:::-;3490:38;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;;;;23946:18:::1;:28:::0;;-1:-1:-1;;23946:28:0::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;23985:33:0::1;23946:28;;23985:33:::0;;;::::1;::::0;;;::::1;;::::0;;23862:164::o;28086:139::-;3498:19;3506:10;3498:7;:19::i;:::-;3490:38;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;;;;28149:12:::1;:36:::0;;-1:-1:-1;;;;;28149:36:0;;::::1;-1:-1:-1::0;;;;;;28149:36:0;;::::1;::::0;::::1;::::0;;:12:::1;28196:21:::0;:11:::1;:21;::::0;28086:139::o;3854:103::-;3909:4;3944:5;-1:-1:-1;;;;;3944:5:0;;;3933:16;;;;3854:103::o;17263:80::-;12280:1;17263:80;:::o;31158:739::-;3498:19;3506:10;3498:7;:19::i;:::-;3490:38;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;;;;31302:4:::1;31283:23:::0;::::1;31275:81;;;;-1:-1:-1::0;;;31275:81:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31403:25:::0;;::::1;::::0;31445:15:::1;31455:4:::0;31445:9:::1;:15::i;:::-;:23;;31437:63;;;::::0;;-1:-1:-1;;;31437:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;31513:6;31509:247;31523:20:::0;;::::1;31509:247;;;31560:40;31575:4;31580:9;;31590:1;31580:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;31580:12:0::1;31593:6;31560:14;:40::i;:::-;;31615:16;:30;31632:9;;31642:1;31632:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;31632:12:0::1;31615:30:::0;;-1:-1:-1;31615:30:0;::::1;::::0;;;;;;-1:-1:-1;31615:30:0;;::::1;;31611:138;;31666:11;::::0;-1:-1:-1;;;;;31666:11:0::1;:20;31687:9:::0;;31697:1;31687:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;31687:12:0::1;31701:23;31711:9;;31721:1;31711:12;;;;;;31701:23;31666:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;31666:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;31662:75:::0;::::1;31545:3;;31509:247;;;-1:-1:-1::0;;;;;;31793:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;31789:105;;31832:11;::::0;-1:-1:-1;;;;;31832:11:0::1;:20;31853:4:::0;31859:15:::1;31853:4:::0;31859:9:::1;:15::i;:::-;31832:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;31832:43:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;31828:59;;;;28944:174:::0;29029:12;3498:19;3506:10;3498:7;:19::i;:::-;3490:38;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;;;;29061:49:::1;::::0;;-1:-1:-1;;;29061:49:0;;29091:10:::1;29061:49;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;29061:29:0;::::1;::::0;::::1;::::0;:49;;;;;::::1;::::0;;;;;;;;-1:-1:-1;29061:29:0;:49;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;29061:49:0;;28944:174;-1:-1:-1;;;28944:174:0:o;14358:27::-;;;;:::o;12454:44::-;;;;;;;;;;;;;;;:::o;12616:49::-;;;;;;;;;;;;;;;:::o;22771:215::-;3588:24;3601:10;3588:12;:24::i;:::-;3580:48;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;;;;22882:21:::1;22922:10;22914:64;22974:3;22943:28:::0;;::::1;:34;::::0;13514:31;;;-1:-1:-1;;;;;13514:31:0;;:::o;12560:49::-;;;;;;;;;;;;;;;:::o;26611:130::-;3588:24;3601:10;3588:12;:24::i;:::-;3580:48;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;26700:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;26700:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26611:130::o;18129:116::-;18184:4;18208:29;18216:7;-1:-1:-1;;18208:7:0;:29::i;23535:99::-;3498:19;3506:10;3498:7;:19::i;:::-;3490:38;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;;;;23603:13:::1;:23:::0;;-1:-1:-1;;23603:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23535:99::o;29750:108::-;29801:7;29828:22;29845:4;;29828:12;;:16;;:22;;;;:::i;13680:37::-;;;;;;:::o;26343:120::-;3588:24;3601:10;3588:12;:24::i;:::-;3580:48;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;26427:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;26427:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26343:120::o;12797:30::-;;;;:::o;12756:34::-;;;;:::o;28454:111::-;28507:7;28534:23;28552:4;;28534:13;;:17;;:23;;;;:::i;13826:30::-;;;;;;:::o;17611:129::-;17727:4;;-1:-1:-1;;;;;17704:18:0;;17677:7;17704:18;;;:9;:18;;;;;;17677:7;;17704:28;;:18;:22;:28::i;13724:39::-;;;;;;;;;:::o;28000:74::-;28054:4;;;;;;;;;-1:-1:-1;;;;;28054:4:0;-1:-1:-1;;;;;28042:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28000:74::o;14696:56::-;;;;:::o;15155:811::-;14029:6;;15233:7;;14029:6;;;-1:-1:-1;;;;;14029:6:0;14015:10;:20;;:43;;;14039:19;14047:10;14039:7;:19::i;:::-;14007:52;;;;;;15253:12:::1;:14:::0;;::::1;;::::0;;15281:10;15278:61:::1;;15315:12;;15307:20;;15278:61;15360:6;::::0;::::1;::::0;::::1;;;15359:7;15351:29;;;::::0;;-1:-1:-1;;;15351:29:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;15351:29:0;;;;;;;;;;;;;::::1;;15397:16:::0;15393:118:::1;;15452:12;::::0;15435:30:::1;::::0;;;;;;15445:5;;15435:30:::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;15487:12:0::1;::::0;15480:19:::1;;15393:118;15541:1;15527:11;:15;15523:188;;;15574:12;::::0;:39:::1;::::0;15599:12:::1;::::0;;::::1;15574:16;:39::i;:::-;15559:12;:54:::0;15523:188:::1;;;15661:12;::::0;:38:::1;::::0;15686:11;15661:16:::1;:38::i;:::-;15646:12;:53:::0;15523:188:::1;15727:12;::::0;-1:-1:-1;;;;;;15723:83:0::1;;;-1:-1:-1::0;;;;;15769:12:0::1;:25:::0;15723:83:::1;15837:12;::::0;15825:25:::1;::::0;14207:22;-1:-1:-1;;14555:38:0::1;::::0;15825:25:::1;15818:4;:32:::0;15861:12:::1;::::0;:19:::1;::::0;;-1:-1:-1;;;;;;15861:19:0;;;;-1:-1:-1;;;;;15861:12:0;;::::1;::::0;:17:::1;::::0;:19:::1;::::0;;::::1;::::0;:12:::1;::::0;:19;;;;;;;;:12;;:19;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;15915:12:0::1;::::0;15898:30:::1;::::0;;;;;;15908:5;;-1:-1:-1;15898:30:0::1;::::0;-1:-1:-1;15898:30:0;;;;::::1;::::0;;::::1;-1:-1:-1::0;15946:12:0::1;::::0;15155:811;;;;:::o;14636:53::-;;;;:::o;12715:34::-;;;;:::o;28349:85::-;28420:6;;;;;;;28419:7;;28349:85::o;17525:78::-;17577:7;17595:5;-1:-1:-1;;;;;17595:5:0;17525:78;:::o;13037:32::-;;;;;;:::o;12505:48::-;;;;;;;;;;;;;;;:::o;23642:210::-;3498:19;3506:10;3498:7;:19::i;:::-;3490:38;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;;;;23744:9:::1;23739:106;23755:20:::0;;::::1;23739:106;;;23827:6;23797:13;:27;23811:9;;23821:1;23811:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;23811:12:0::1;23797:27:::0;;-1:-1:-1;23797:27:0;::::1;::::0;;;;;;-1:-1:-1;23797:27:0;:36;;-1:-1:-1;;23797:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;23777:3:0::1;23739:106;;14761:372:::0;14029:6;;14858:17;;14029:6;;;-1:-1:-1;;;;;14029:6:0;14015:10;:20;;:43;;;14039:19;14047:10;14039:7;:19::i;:::-;14007:52;;;;;;14892:6:::1;14889:227;;;14926:71;14933:1;14935:61;-1:-1:-1::0;;14939:48:0::1;14966:20;14939:22;14956:4;14939:12;;:16;;:22;;;;:::i;:48::-;14935:57:::0;::::1;:61::i;:::-;14926:6;:71::i;:::-;14914:83;;14889:227;;;15041:63;15048:1;15054:48;15081:20;15054:22;15071:4;15054:12;;:16;;:22;;;;:::i;17349:84::-:0;17423:7;;;;;;;;;;;;-1:-1:-1;;;17423:7:0;;;;17349:84;:::o;12674:34::-;;;;:::o;23422:105::-;3498:19;3506:10;3498:7;:19::i;:::-;3490:38;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;;;;23494:10:::1;:25:::0;23422:105::o;28784:136::-;3588:24;3601:10;3588:12;:24::i;:::-;3580:48;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;;;;28874:6:::1;28868:3;:12;28860:21;;;::::0;::::1;;28892:14;:20:::0;28784:136::o;12991:39::-;;;;:::o;13488:19::-;;;-1:-1:-1;;;;;13488:19:0;;:::o;18253:156::-;18333:4;18357:44;18371:10;18383:9;18394:6;18357:13;:44::i;29622:114::-;29676:7;29703:25;29723:4;;29703:15;;:19;;:25;;;;:::i;3647:94::-;3498:19;3506:10;3498:7;:19::i;:::-;3490:38;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3707:19:0::1;;::::0;;;3729:4:::1;3707:19;::::0;;;;;;;:26;;-1:-1:-1;;3707:26:0::1;::::0;;::::1;::::0;;3647:94::o;30049:170::-;3498:19;3506:10;3498:7;:19::i;:::-;3490:38;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;;;;30164:47:::1;30186:24:::0;30164:17:::1;30176:4;14207:22:::0;-1:-1:-1;;14555:38:0::1;::::0;30164:47:::1;30149:12;:62:::0;-1:-1:-1;30049:170:0:o;13167:29::-;;;;:::o;13595:38::-;;;-1:-1:-1;;;;;13595:38:0;;:::o;13250:36::-;;;-1:-1:-1;;;;;13250:36:0;;:::o;29287:167::-;29355:7;29382:64;29423:22;:20;:22::i;:::-;29405:4;;29382:36;;29395:22;;29415:1;;29395:15;;-1:-1:-1;;;;;29405:4:0;29395:9;:15::i;:22::-;29382:8;;:12;:36::i;27275:297::-;3588:24;3601:10;3588:12;:24::i;:::-;3580:48;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;;;;27420:21:::1;:46:::0;;-1:-1:-1;;;;;27420:46:0;;::::1;-1:-1:-1::0;;;;;;27420:46:0;;::::1;;::::0;;;27477:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;27532:14:::1;:32:::0;;;;;::::1;::::0;::::1;;::::0;;27275:297::o;13335:29::-;;;-1:-1:-1;;;;;13335:29:0;;:::o;17752:133::-;-1:-1:-1;;;;;17854:19:0;;;17836:7;17854:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;17752:133::o;27582:211::-;3588:24;3601:10;3588:12;:24::i;:::-;3580:48;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;;;;27689:11:::1;:22:::0;;-1:-1:-1;;27689:22:0::1;::::0;::::1;;;::::0;;27738:47:::1;27762:22:::0;27738:19:::1;27750:6;14207:22:::0;-1:-1:-1;;14555:38:0::1;::::0;27738:47:::1;27722:13;:63:::0;-1:-1:-1;;27582:211:0:o;13293:35::-;;;-1:-1:-1;;;;;13293:35:0;;:::o;23006:121::-;3498:19;3506:10;3498:7;:19::i;:::-;3490:38;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;;;;23084:14:::1;:27:::0;23006:121::o;13946:21::-;;;;;;-1:-1:-1;;;;;13946:21:0;;:::o;3749:97::-;3498:19;3506:10;3498:7;:19::i;:::-;3490:38;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3811:19:0::1;3833:5;3811:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;3811:27:0::1;::::0;;3749:97::o;4080:173::-;3498:19;3506:10;3498:7;:19::i;:::-;3490:38;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;-1:-1:-1;;;3490:38:0;;;;;;;;;;;;;;;4156:5:::1;:11:::0;;-1:-1:-1;;;;;;4156:11:0::1;-1:-1:-1::0;;;;;4156:11:0;::::1;::::0;;::::1;::::0;;4178:19;;;-1:-1:-1;4178:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;4178:26:0::1;::::0;;::::1;::::0;;;4220:25;;;;;;;::::1;::::0;;;;;;;;;::::1;4080:173:::0;:::o;25984:347::-;3588:24;3601:10;3588:12;:24::i;:::-;3580:48;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;26081:23:0;::::1;26099:4;26081:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;26118:4:0::1;::::0;-1:-1:-1;;;;;26108:14:0;;::::1;26118:4:::0;::::1;26108:14;;26081:41;26073:50;;;::::0;::::1;;-1:-1:-1::0;;;;;26134:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;26134:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;26178:146:::1;;26203:11;::::0;:31:::1;::::0;;-1:-1:-1;;;26203:31:0;;-1:-1:-1;;;;;26203:31:0;;::::1;;::::0;::::1;::::0;:11:::1;:31:::0;;;;;;;;:11;::::1;::::0;:20:::1;::::0;:31;;;;;:11;;:31;;;;;;:11;;:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26178:146;;;26265:11;::::0;-1:-1:-1;;;;;26265:11:0::1;:20;26286:6:::0;26294:17:::1;26286:6:::0;26294:9:::1;:17::i;:::-;26265:47;;;;;;;;;;;;;-1:-1:-1::0;;;;;26265:47:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;26475:128:::0;3588:24;3601:10;3588:12;:24::i;:::-;3580:48;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;-1:-1:-1;;;3580:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;26563:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;26563:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26475:128::o;13457:24::-;;;-1:-1:-1;;;;;13457:24:0;;:::o;13131:29::-;;;;:::o;13076:46::-;;;;;;;;;;;;;;;:::o;3965:107::-;-1:-1:-1;;;;;4045:19:0;4021:4;4045:19;;;:14;:19;;;;;;;;;3965:107::o;13205:36::-;;;;:::o;13555:31::-;;;-1:-1:-1;;;13555:31:0;;;;;:::o;890:132::-;948:7;975:39;979:1;982;975:39;;;;;;;;;;;;;;;;;:3;:39::i;634:250::-;692:7;716:6;712:47;;-1:-1:-1;746:1:0;739:8;;712:47;783:5;;;787:1;783;:5;:1;807:5;;;;;:10;799:56;;;;-1:-1:-1;;;799:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;107:181;165:7;197:5;;;221:6;;;;213:46;;;;;-1:-1:-1;;;213:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;20985:388;21078:4;21095:15;21113:16;21124:4;;21113:6;:10;;:16;;;;:::i;:::-;21095:34;;21160:54;21182:7;21160:54;;;;;;;;;;;;;-1:-1:-1;;;21160:54:0;;;:9;:17;21170:6;-1:-1:-1;;;;;21160:17:0;-1:-1:-1;;;;;21160:17:0;;;;;;;;;;;;;:21;;:54;;;;;:::i;:::-;-1:-1:-1;;;;;21140:17:0;;;;;;;:9;:17;;;;;;:74;;;;21248:20;;;;;;;:33;;21273:7;21248:24;:33::i;:::-;-1:-1:-1;;;;;21225:20:0;;;;;;;:9;:20;;;;;:56;;;;21337:4;;21297:46;;;;;;21325:17;;:7;;:11;:17::i;:::-;21297:46;;;;;;;;;;;;;;;-1:-1:-1;21361:4:0;;20985:388;-1:-1:-1;;;;20985:388:0:o;436:192::-;522:7;558:12;550:6;;;;542:29;;;;-1:-1:-1;;;542:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;594:5:0;;;436:192::o;18789:2162::-;18901:6;;18881:4;;18901:6;;;;;18898:63;;;18917:41;18932:6;18940:9;18951:6;18917:14;:41::i;:::-;18910:48;;;;18898:63;-1:-1:-1;;;;;18977:22:0;;;;;;:14;:22;;;;;;;;18976:23;:53;;;;-1:-1:-1;;;;;;19004:25:0;;;;;;:14;:25;;;;;;;;19003:26;18976:53;18973:127;;;19053:11;;-1:-1:-1;;;19053:11:0;;;;19045:43;;;;;-1:-1:-1;;;19045:43:0;;;;;;;;;;;;-1:-1:-1;;;19045:43:0;;;;;;;;;;;;;;;19112:15;19130:16;19141:4;;19130:6;:10;;:16;;;;:::i;:::-;-1:-1:-1;;;;;19164:22:0;;;;;;:14;:22;;;;;;19112:34;;-1:-1:-1;19164:22:0;;19163:23;:53;;;;-1:-1:-1;;;;;;19190:26:0;;19211:4;19190:26;;19163:53;:84;;;;-1:-1:-1;19242:4:0;;-1:-1:-1;;;;;19221:26:0;;;19242:4;;19221:26;;19163:84;:105;;;;-1:-1:-1;19264:4:0;;-1:-1:-1;;;;;19251:17:0;;;19264:4;;19251:17;;19163:105;:142;;;;-1:-1:-1;19285:20:0;;-1:-1:-1;;;;;19272:33:0;;;19285:20;;19272:33;;19163:142;:173;;;;-1:-1:-1;19322:14:0;;-1:-1:-1;;;;;19309:27:0;;;19322:14;;19309:27;;19163:173;:212;;;;-1:-1:-1;19354:21:0;;-1:-1:-1;;;;;19341:34:0;;;19354:21;;19341:34;;19163:212;19159:405;;;19391:18;19412:20;19422:9;19412;:20::i;:::-;19391:41;;19481:15;;19469:7;19456:10;:20;19455:41;;19447:115;;;;-1:-1:-1;;;19447:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19159:405;;19598:4;;-1:-1:-1;;;;;19588:14:0;;;19598:4;;19588:14;:49;;;;-1:-1:-1;19619:18:0;;;;19588:49;:94;;;;-1:-1:-1;;;;;;19655:27:0;;;;;;:16;:27;;;;;;;;19654:28;19588:94;19584:281;;;-1:-1:-1;;;;;19707:24:0;;;;;;:13;:24;;;;;;19734:15;-1:-1:-1;19699:73:0;;;;;-1:-1:-1;;;19699:73:0;;;;;;;;;;;;-1:-1:-1;;;19699:73:0;;;;;;;;;;;;;;;19832:21;;-1:-1:-1;;;;;19787:24:0;;;;;;:13;:24;;;;;19832:21;;;;;;19814:15;:39;19787:66;;19584:281;19902:13;;;;19899:122;;;-1:-1:-1;;;;;19940:21:0;;;;;;:13;:21;;;;;;;;19939:22;:51;;;;-1:-1:-1;;;;;;19966:24:0;;;;;;:13;:24;;;;;;;;19965:25;19939:51;19931:74;;;;;-1:-1:-1;;;19931:74:0;;;;;;;;;;;;-1:-1:-1;;;19931:74:0;;;;;;;;;;;;;;;20074:29;20087:6;20095:7;20074:12;:29::i;:::-;20119:16;:14;:16::i;:::-;20116:35;;;20138:10;:8;:10::i;:::-;20210:54;;;;;;;;;;;-1:-1:-1;;;20210:54:0;;;;;;;;-1:-1:-1;;;;;20210:17:0;;-1:-1:-1;20210:17:0;;;:9;:17;;;;;;;;:54;;20232:7;;20210:21;:54::i;:::-;-1:-1:-1;;;;;20190:17:0;;;;;;:9;:17;;;;;:74;;;;20304:21;20200:6;20304:13;:21::i;:::-;20303:22;:51;;;;20330:24;20344:9;20330:13;:24::i;:::-;20329:25;20303:51;20302:110;;20406:4;;20368:44;;20376:6;;20384:7;;-1:-1:-1;;;;;20393:17:0;;;20406:4;;20393:17;20368:7;:44::i;:::-;20302:110;;;20358:7;20302:110;-1:-1:-1;;;;;20446:20:0;;;;;;:9;:20;;;;;;20277:135;;-1:-1:-1;20446:40:0;;20277:135;20446:24;:40::i;:::-;-1:-1:-1;;;;;20423:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;20532:24;;;;;:16;:24;;;;;;;20528:119;;20577:11;;-1:-1:-1;;;;;20577:11:0;:20;20598:6;20606:17;20598:6;20606:9;:17::i;:::-;20577:47;;;;;;;;;;;;;-1:-1:-1;;;;;20577:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20573:63;;-1:-1:-1;;;;;20663:27:0;;;;;;:16;:27;;;;;;;;20659:129;;20711:11;;-1:-1:-1;;;;;20711:11:0;:20;20732:9;20743:20;20732:9;20743;:20::i;:::-;20711:53;;;;;;;;;;;;;-1:-1:-1;;;;;20711:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20707:69;;20804:11;;20824:14;;20804:35;;;-1:-1:-1;;;;;;20804:35:0;;;;;;;;;;-1:-1:-1;;;;;20804:11:0;;;;:19;;:35;;;;;:11;;:35;;;;;;;;:11;;:35;;;;;;;;;;;;;;;;;;;;;;;;;20800:51;20885:9;-1:-1:-1;;;;;20868:53:0;20877:6;-1:-1:-1;;;;;20868:53:0;;20896:24;20915:4;;20896:14;:18;;:24;;;;:::i;:::-;20868:53;;;;;;;;;;;;;;;-1:-1:-1;20939:4:0;;18789:2162;-1:-1:-1;;;;;18789:2162:0:o;294:136::-;352:7;379:43;383:1;386;379:43;;;;;;;;;;;;;;;;;:3;:43::i;1376:239::-;1432:6;1462:5;;;-1:-1:-1;;;1488:15:0;;;;:55;;-1:-1:-1;;;;1508:14:0;;;1528;;;1507:36;;1488:55;1480:64;;;;;;1564:6;;;1563:24;;;1585:1;1580;1576;:5;;;;;;:10;1563:24;1555:33;;;;;1028:189;1114:7;1149:12;1142:5;1134:28;;;;-1:-1:-1;;;1134:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1173:9;1189:1;1185;:5;;;;;;;1028:189;-1:-1:-1;;;;;1028:189:0:o;21381:168::-;21480:12;;21469:7;:23;;:50;;;-1:-1:-1;;;;;;21496:23:0;;;;;;:15;:23;;;;;;;;21469:50;21461:80;;;;;-1:-1:-1;;;21461:80:0;;;;;;;;;;;;-1:-1:-1;;;21461:80:0;;;;;;;;;;;;;;22326:197;22413:4;;22375;;-1:-1:-1;;;;;22413:4:0;22399:10;:18;;;;:38;;-1:-1:-1;22431:6:0;;;;;;;22430:7;22399:38;:62;;;;-1:-1:-1;22450:11:0;;;;22399:62;:116;;;;-1:-1:-1;;22502:13:0;;22492:4;22474:24;;;;:9;:24;;;;;;:41;;;22326:197::o;24034:1930::-;13903:6;:13;;-1:-1:-1;;13903:13:0;;;;;24113:12:::1;::::0;24177:4:::1;::::0;24159:13:::1;::::0;13903;;24159:23:::1;::::0;:13;:17:::1;:23::i;:::-;24136:46;;24195:23;24221:58;24277:1;24221:51;24252:19;24221:26;24238:8;;24221:12;:16;;:26;;;;:::i;:58::-;24195:84:::0;-1:-1:-1;24290:20:0::1;24313:33;:12:::0;24195:84;24313:16:::1;:33::i;:::-;24383:16;::::0;;24397:1:::1;24383:16:::0;;;;;::::1;::::0;;24290:56;;-1:-1:-1;24359:21:0::1;::::0;24383:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;24383:16:0::1;24359:40;;24428:4;24410;24415:1;24410:7;;;;;;;;-1:-1:-1::0;;;;;24410:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;24454:4:::1;::::0;24444:7;;24454:4;::::1;::::0;24444;;24454;;24444:7;::::1;;;;;-1:-1:-1::0;;;;;24444:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;24529:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;24529:188:0;;::::1;::::0;::::1;::::0;;;24471:21:::1;24529:188:::0;;;;;;24671:4:::1;24529:188:::0;;;;;;24691:15:::1;24529:188:::0;;;;;;;;;;;;;;;;;;;;;24495:21:::1;::::0;24529:6;;;::::1;::::0;:57:::1;::::0;24601:12;;24471:21;;24644:4;;24529:188;;;;;;;;;;::::1;::::0;::::1;::::0;;;24471:21;24529:188:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24730:17;24750:40;24776:13;24750:21;:25;;:40;;;;:::i;:::-;24730:60:::0;-1:-1:-1;24803:19:0::1;24825:40;24838:26;:19:::0;24862:1:::1;24838:23;:26::i;:::-;24825:8;::::0;;:12:::1;:40::i;:::-;24803:62:::0;-1:-1:-1;24886:26:0::1;24915:58;24971:1;24915:51;24803:62:::0;24915:51;:9;24929:19;24915:13:::1;:34::i;:58::-;24886:87;;24984:27;25014:45;25047:11;25014:28;25028:13;;25014:9;:13;;:28;;;;:::i;:45::-;24984:75;;25070:26;25099:44;25131:11;25099:27;25113:12;;25099:9;:13;;:27;;;;:::i;:44::-;25070:73;;25154:20;25177:38;25203:11;25177:21;25191:6;;25177:9;:13;;:21;;;;:::i;:38::-;25154:61;;25232:11;;;;;;;;;-1:-1:-1::0;;;;;25232:11:0::1;-1:-1:-1::0;;;;;25232:19:0::1;;25259;25232:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;25228:65:::0;25332:20:::1;::::0;25324:77:::1;::::0;25304:15:::1;::::0;-1:-1:-1;;;;;25332:20:0::1;::::0;25391:5:::1;::::0;25366:18;;25304:15;25324:77;25304:15;25324:77;25366:18;25332:20;25391:5;25324:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;25436:14:0::1;::::0;25428:65:::1;::::0;25303:98;;-1:-1:-1;;;;;;25436:14:0::1;::::0;25483:5:::1;::::0;25464:12;;25436:14:::1;25428:65:::0;25436:14;25428:65;25464:12;25436:14;25483:5;25428:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;25567:5:0::1;::::0;-1:-1:-1;;25588:19:0;;;-1:-1:-1;25585:372:0::1;;25623:6;::::0;25797:21:::1;::::0;25623:244:::1;::::0;;-1:-1:-1;;;25623:244:0;;25699:4:::1;25623:244;::::0;::::1;::::0;;;;;;;:6:::1;:244:::0;;;;;;;;;;-1:-1:-1;;;;;25797:21:0;;::::1;25623:244:::0;;;;25837:15:::1;25623:244:::0;;;;;;:6;;;::::1;::::0;:22:::1;::::0;25653:18;;25623:244;;;;;::::1;::::0;;;;;;;;;25653:18;25623:6;:244;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;25939:4:0::1;::::0;25887:58:::1;::::0;25899:18;;25919:25:::1;::::0;:15;;:19:::1;:25::i;:::-;25887:58;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;::::1;25585:372;-1:-1:-1::0;;13921:6:0;:14;;-1:-1:-1;;13921:14:0;;;-1:-1:-1;;;;;;;;;;;24034:1930:0:o;21557:114::-;-1:-1:-1;;;;;21644:19:0;21619:4;21644:19;;;:11;:19;;;;;;;;21643:20;;21557:114::o;21681:633::-;21762:7;21813:3;21827:64;;;;-1:-1:-1;21865:14:0;;21827:64;21904:17;21924:63;21976:10;21924:47;21962:8;;21924:33;21936:14;;21953:3;21936:20;21924:7;:11;;:33;;;;:::i;:63::-;21904:83;;22004:6;22003:7;:51;;;;;22042:12;22028:10;;22015;;:23;22014:40;22003:51;22000:118;;;22082:24;22103:2;22082:16;:7;22094:3;22082:11;:16::i;:24::-;22070:36;;22000:118;22175:4;22157:24;;;;:9;:24;;;;;;:39;;22186:9;22157:28;:39::i;:::-;22148:4;22130:24;;;;:9;:24;;;;;:66;;;;22258:4;;-1:-1:-1;;;;;22212:52:0;;;;;22244:19;;:9;;:13;:19::i;:::-;22212:52;;;;;;;;;;;;;;;22284:22;:7;22296:9;22284:11;:22::i;:::-;22277:29;21681:633;-1:-1:-1;;;;;;21681:633:0:o

Swarm Source

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