Contract 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc

 

Contract Overview

Balance:
0.000009463578239368 BNB

BNB Value:
Less Than $0.01 (@ $582.29/BNB)

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x38bc8e59956f8af2142d546fbdc88b05fdcaaabb5388e651abfaaa4456fa58bbApprove126268772021-11-13 23:42:1824 days 13 hrs ago0xd1dd49fae5addcf1545ab544cdf23a57ec91d1c5 IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.000125985
0x6a9ac12577f0ada821e5bc18fa111acd135500f9e1e771cc99fbf05b89d670c3Approve126268722021-11-13 23:42:0324 days 13 hrs ago0xd1dd49fae5addcf1545ab544cdf23a57ec91d1c5 IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.000221985
0x10bec9cba0f3481e719f73545dbf09e060e0e91bcb6a2f6ff511fb6c2e209aebApprove123920632021-11-05 15:48:2332 days 21 hrs ago0x9aff054866ccd5740a1f4b166c0909771eab1ba5 IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.000072535
0xa8dfa9043eba805db9e24d759eca38f0997fb3258f1fbbc34ea30586010b739dApprove123920542021-11-05 15:47:5632 days 21 hrs ago0x9aff054866ccd5740a1f4b166c0909771eab1ba5 IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.000124065
0x8f4a77a39ab3dc572c5c0f6593182944e820b0958810d1e5504ea98f181853fdApprove123919032021-11-05 15:40:2032 days 21 hrs ago0x9aff054866ccd5740a1f4b166c0909771eab1ba5 IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.0000739857
0x5c4f6d9668246b8bc60bea86a9dbcf4aa4ffcb39293c517c0325a78b471322ebApprove123867362021-11-05 11:13:1933 days 1 hr ago0x2d234eb1e79f32fd8bc19a7c8633740688b81349 IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.0000739857
0x8d841676fd0f302bf9291c64e6ff81a32aeff02aaaa406c52ea244b7293f9e30Approve122193432021-10-30 11:59:0839 days 1 hr ago0xe0e856e1cc1f8ea0727d023b9d48f57a0fdc4645 IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.0000739857
0x76512d326cba7d59c13b0f0c65b0c852e734f7237fa4f420652fe4e949092dcdApprove116481222021-10-10 9:37:2359 days 3 hrs ago0x3960f9d7f28c05b41f59c9b8fd8809d8c7c257c0 IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.000221985
0x6d708dcb1dfd7475708ceef12b16f5ad247e7effec5f44e2b4f1140d266c3c30Approve113906342021-10-01 10:12:0068 days 2 hrs ago0xe6c43095bd6026b8cda106aa024ffee8d223a733 IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.0000739857
0x657783e58ad99e883f6f45ea3a1248d9ec7b5d373c3312aeac05897161989bfcApprove112939492021-09-28 0:47:4871 days 12 hrs ago0xb17961f1b428fa11a901f8b424e45c41de499632 IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.000072535
0x13d47be63e8e1343494bfc798d4bc09bcbce6bb0bef3c1c9edfa9edab20c6decApprove111742732021-09-23 20:24:1775 days 16 hrs ago0xae970d3b32c2acd7b5cc5ad3ef6d8809d72ece05 IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.000221985
0xdbc423aa971e9955dbe8d0b84aa70c7f4ba382b64a558eaca97facd96cef9fc1Approve110754852021-09-20 9:32:3479 days 3 hrs ago0x9aff054866ccd5740a1f4b166c0909771eab1ba5 IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.000221985
0x01057a29dedc3e861c93e2047a3597b0e6368a051015c4ac867ef5f9b2189dc9Approve109741052021-09-16 20:43:0282 days 16 hrs ago0x8cc7bc33f5188b1fb683bedc4dbffa77b136833b IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.000124545
0xc042140756fbd77c586238949b44cf06c1566a58e40b67d48a8c08b44dbf6f4aApprove109741012021-09-16 20:42:5082 days 16 hrs ago0x8cc7bc33f5188b1fb683bedc4dbffa77b136833b IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.000220545
0x203272e1c842fbc5e42fdc20fbd17d0d0c737337cbd332e93b7f33ec1238d37dApprove109228542021-09-15 1:50:5384 days 11 hrs ago0xf98e58a26de05aa37980208135613aafc47e15f1 IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.0000739857
0x2c5e7fafe44b659bc01d1f5401b04a8000b49376e417d1caca59d76fafb5a5beApprove108893522021-09-13 21:52:1785 days 15 hrs ago0xe4f4926f832a187f3e799ddfb84606c37ec834b3 IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.000072535
0x8da6fd3f5ea30110f0d67c5b0202d7c0d0c917c377405f27abe69fa03cd6be5eApprove106769852021-09-06 11:08:0193 days 2 hrs ago0x9ca2ffe38c0f8a92db1bd6a9411ebe4fe49d5b45 IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.000221985
0xcd511fbb526769148f1628332bf2813e09e21e5d72b88ab13f774b30393973dcApprove106521702021-09-05 14:25:0293 days 22 hrs ago0x8229625ba36b5adf9f380420032cbfeafd8fd9db IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.000221985
0xc4f7ddc2441efe42cd350fc6eb3cecbe9d9d5d175a7c7a3a08a2a62c2f403c20Approve105978042021-09-03 16:58:1095 days 20 hrs ago0xb17961f1b428fa11a901f8b424e45c41de499632 IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.000310779
0x48441abb6d383855a43b8e3f4939ea693d84478ff39c3cc8d9cea9e090968345Approve105970742021-09-03 16:21:0295 days 20 hrs ago0xb5a8b0196e13b8a92139151009e999a37446a21a IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.000221985
0x6e752fbc0fa7f7ed6bb4f0688010222815a6bb0b51be2e0c64d0d339974d3722Approve105619232021-09-02 10:36:0897 days 2 hrs ago0x1a981151f2ef30f1bca94f0bdb0d4c2f4fc2d0e6 IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.000221985
0x9765b6f87e4ccdfd722e2a6ae0dfdd509c0bbf3f014461ff28ad2ed384ff9019Approve104822492021-08-30 15:13:3499 days 21 hrs ago0x59ad56e17c8a758f11c2bf7310e0341cec2bbc70 IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.000221985
0x2edb27c7ce39b700b20dc3fb8d9e553978b8b0fe786ed3a5863b1c6ac4d9058bApprove104813292021-08-30 14:27:3299 days 22 hrs ago0x79458dac726267020c674cb7fe38a2b9ad3d4338 IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.000221985
0xd0ff6b1bd188d3e09ecdfb82dfba57b13655a184816cbfa28691e7a7c1581da8Approve104719862021-08-30 6:24:12100 days 6 hrs ago0xe9969c5ac60902e21e28afbc2a6248060a7b00d2 IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.000310779
0x2b9e71c0583f39c3125110bc688474624c7de3935f0e483f3d486a9fd892ce5cTransfer104652302021-08-30 0:46:24100 days 12 hrs ago0x42f95c0afcceaabc1788cd34fcdc3685f438ba33 IN  0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0 BNB0.00181758
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x6f8a095acc7fad110707197ac5829bf9d8c48317a7e80d155c7ff480edff5ab0117280422021-10-13 5:09:5256 days 7 hrs ago PancakeSwap: Router v2 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0.000009463578239367 BNB
0x6f8a095acc7fad110707197ac5829bf9d8c48317a7e80d155c7ff480edff5ab0117280422021-10-13 5:09:5256 days 7 hrs ago 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc PancakeSwap: Router v20.001689054703841375 BNB
0x6f8a095acc7fad110707197ac5829bf9d8c48317a7e80d155c7ff480edff5ab0117280422021-10-13 5:09:5256 days 7 hrs ago 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc 0x62793a68fbd93c2fb7569c2a2f0335ab1b63833f0.016890547038413755 BNB
0x6f8a095acc7fad110707197ac5829bf9d8c48317a7e80d155c7ff480edff5ab0117280422021-10-13 5:09:5256 days 7 hrs ago PancakeSwap: Router v2 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0.018577366058837276 BNB
0x88201b8c5c19afb1f4ff66144792015a8ffa5f16fe2b519bead1b37a8c8a50c1116481012021-10-10 9:36:2059 days 3 hrs ago PancakeSwap: Router v2 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0.000002235683417854 BNB
0x88201b8c5c19afb1f4ff66144792015a8ffa5f16fe2b519bead1b37a8c8a50c1116481012021-10-10 9:36:2059 days 3 hrs ago 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc PancakeSwap: Router v20.001004027065434382 BNB
0x88201b8c5c19afb1f4ff66144792015a8ffa5f16fe2b519bead1b37a8c8a50c1116481012021-10-10 9:36:2059 days 3 hrs ago 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc 0x62793a68fbd93c2fb7569c2a2f0335ab1b63833f0.010040270654343825 BNB
0x88201b8c5c19afb1f4ff66144792015a8ffa5f16fe2b519bead1b37a8c8a50c1116481012021-10-10 9:36:2059 days 3 hrs ago PancakeSwap: Router v2 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0.011042379768218248 BNB
0x7f9069e49fd887ae4faaaa5a45411b4407c0da39dfa559010517534c61f85ad4116480862021-10-10 9:35:3559 days 3 hrs ago PancakeSwap: Router v2 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0.000001917951559959 BNB
0x7f9069e49fd887ae4faaaa5a45411b4407c0da39dfa559010517534c61f85ad4116480862021-10-10 9:35:3559 days 3 hrs ago 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc PancakeSwap: Router v20.000960922754243671 BNB
0x7f9069e49fd887ae4faaaa5a45411b4407c0da39dfa559010517534c61f85ad4116480862021-10-10 9:35:3559 days 3 hrs ago 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc 0x62793a68fbd93c2fb7569c2a2f0335ab1b63833f0.009609227542436713 BNB
0x7f9069e49fd887ae4faaaa5a45411b4407c0da39dfa559010517534c61f85ad4116480862021-10-10 9:35:3559 days 3 hrs ago PancakeSwap: Router v2 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0.010567387371224436 BNB
0xc349cc0653315f23ffdbc8c66a3c0d7e8e3684bb9768c2873304b9c258d9436d116480812021-10-10 9:35:2059 days 3 hrs ago PancakeSwap: Router v2 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0.000002762925455948 BNB
0xc349cc0653315f23ffdbc8c66a3c0d7e8e3684bb9768c2873304b9c258d9436d116480812021-10-10 9:35:2059 days 3 hrs ago 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc PancakeSwap: Router v20.001094243286901137 BNB
0xc349cc0653315f23ffdbc8c66a3c0d7e8e3684bb9768c2873304b9c258d9436d116480812021-10-10 9:35:2059 days 3 hrs ago 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc 0x62793a68fbd93c2fb7569c2a2f0335ab1b63833f0.010942432869011375 BNB
0xc349cc0653315f23ffdbc8c66a3c0d7e8e3684bb9768c2873304b9c258d9436d116480812021-10-10 9:35:2059 days 3 hrs ago PancakeSwap: Router v2 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0.012032683915471557 BNB
0xa141f364760131d25257bfb5694777115114121e244dc832ddeaaa079952520f116480732021-10-10 9:34:5659 days 3 hrs ago PancakeSwap: Router v2 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0.000003992240440955 BNB
0xa141f364760131d25257bfb5694777115114121e244dc832ddeaaa079952520f116480732021-10-10 9:34:5659 days 3 hrs ago 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc PancakeSwap: Router v20.001275600608238704 BNB
0xa141f364760131d25257bfb5694777115114121e244dc832ddeaaa079952520f116480732021-10-10 9:34:5659 days 3 hrs ago 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc 0x62793a68fbd93c2fb7569c2a2f0335ab1b63833f0.012756006082387049 BNB
0xa141f364760131d25257bfb5694777115114121e244dc832ddeaaa079952520f116480732021-10-10 9:34:5659 days 3 hrs ago PancakeSwap: Router v2 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0.014027111710724052 BNB
0x668e7624027658f390ed95c7b8c796fcad40ce7978fb2128c586e014e34e3d94116480432021-10-10 9:33:2659 days 3 hrs ago PancakeSwap: Router v2 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0.000004494979901701 BNB
0x668e7624027658f390ed95c7b8c796fcad40ce7978fb2128c586e014e34e3d94116480432021-10-10 9:33:2659 days 3 hrs ago 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc PancakeSwap: Router v20.001282381322201678 BNB
0x668e7624027658f390ed95c7b8c796fcad40ce7978fb2128c586e014e34e3d94116480432021-10-10 9:33:2659 days 3 hrs ago 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc 0x62793a68fbd93c2fb7569c2a2f0335ab1b63833f0.012823813222016788 BNB
0x668e7624027658f390ed95c7b8c796fcad40ce7978fb2128c586e014e34e3d94116480432021-10-10 9:33:2659 days 3 hrs ago PancakeSwap: Router v2 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0.014094241960278193 BNB
0x193dc8ebd5749384249fcf6f52d0003bf7e25c6cd4c9609a745e09605d07e45c116480222021-10-10 9:32:2359 days 3 hrs ago PancakeSwap: Router v2 0x6efd9f20fef587216a147dfac1d44020ad1cc1cc0.000011952583940273 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BABYKERMIT

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-08-17
*/

//SPDX-License-Identifier: MIT
/**
 BABY KERMIT - LETS GO TO THE SWAMP!
 (+)(+)                     
/      \  
\ -==- / 
 \    / 
<\/\/\/> 
/      \
 website: https://babykermit.fun/
 telegram community: https://t.me/babykermitofficialgroup
 telegram announcements: https://t.me/babykermitofficial
 twitter: https://twitter.com/BabyKermitBSC
 discord: https://discord.gg/8Hkznc9BE7
 */
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;
    }
}

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

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

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

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

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

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

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

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

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

contract DividendDistributor is IDividendDistributor {

    using SafeMath for uint256;
    address _token;

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

    IDEXRouter router;
    address routerAddress = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
    IBEP20 RewardToken = IBEP20(0xc5A49b4CBe004b6FD55B30Ba1dE6AC360FF9765d); //SWAMP

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

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

    uint256 public minPeriod = 30 minutes;
    uint256 public minDistribution = 1 * (10 ** 18);

    uint256 currentIndex;

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

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

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

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

    function setShare(address shareholder, uint256 amount) external override onlyToken {

        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

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

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

    function deposit() external payable override onlyToken {

        uint256 balanceBefore = RewardToken.balanceOf(address(this));

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

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

        uint256 amount = RewardToken.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 iterations = 0;
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        while(gasUsed < gas && iterations < shareholderCount) {

            if(currentIndex >= shareholderCount){ currentIndex = 0; }

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

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    
    function shouldDistribute(address shareholder) 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);
            RewardToken.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 {

        require(shouldDistribute(msg.sender), "Too soon. Need to wait!");
        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();
    }
}

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

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

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

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

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

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

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

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

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

    event OwnershipTransferred(address owner);
}

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

    string constant _name = "BABY KERMIT";
    string constant _symbol = "BABYKERMIT";
    uint8 constant _decimals = 9;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address routerAddress = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
    address RewardToken = 0xc5A49b4CBe004b6FD55B30Ba1dE6AC360FF9765d; //SWAMP

    uint256 _totalSupply = 1 * 10**12 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply * 2 / 200;
    uint256 public _walletMax = _totalSupply * 3 / 100;
    
    bool public restrictWhales = true;

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

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

    uint256 public liquidityFee = 2;
    uint256 public rewardsFee = 10;
    uint256 public extraFeeOnSell = 5;

    uint256 public totalFee = 0;
    uint256 public totalFeeIfSelling = 0;

    address public autoLiquidityReceiver;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;
    bool public tradingOpen = false;

    DividendDistributor public dividendDistributor;
    uint256 distributorGas = 500000;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    uint256 public swapThreshold = _totalSupply * 5 / 4000;
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

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

        dividendDistributor = new DividendDistributor(address(router));

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

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

        isDividendExempt[pair] = true;
        isDividendExempt[msg.sender] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true;
        
        totalFee = liquidityFee.add(rewardsFee);
        totalFeeIfSelling = totalFee.add(extraFeeOnSell);

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

    receive() external payable { }

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

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

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

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

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

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

    function launch() internal {
        launchedAt = block.number;
    }

    function changeTxLimit(uint256 newLimit) external authorized {
        _maxTxAmount = newLimit;
    }

    function changeWalletLimit(uint256 newLimit) external authorized {
        _walletMax  = newLimit;
    }

    function changeRestrictWhales(bool newValue) external authorized {
       restrictWhales = newValue;
    }
    
    function changeIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

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

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

    function changeFees(uint256 newLiqFee, uint256 newRewardFee, uint256 newExtraSellFee) external authorized {
        liquidityFee = newLiqFee;
        rewardsFee = newRewardFee;
        extraFeeOnSell = newExtraSellFee;
        
        totalFee = liquidityFee.add(rewardsFee);
        totalFeeIfSelling = totalFee.add(extraFeeOnSell);
    }

    function changeFeeReceivers(address newLiquidityReceiver) external authorized {
        autoLiquidityReceiver = newLiquidityReceiver;
    }

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

    function changeDistributionCriteria(uint256 newinPeriod, uint256 newMinDistribution) external authorized {
        dividendDistributor.setDistributionCriteria(newinPeriod, newMinDistribution);
    }

    function changeDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
    
    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(inSwapAndLiquify){ return _basicTransfer(sender, recipient, amount); }

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

        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");

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

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

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        
        if(!isTxLimitExempt[recipient] && restrictWhales)
        {
            require(_balances[recipient].add(amount) <= _walletMax);
        }

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

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

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

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

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

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeApplicable = pair == recipient ? totalFeeIfSelling : totalFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

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

        return amount.sub(feeAmount);
    }

    function tradingStatus(bool newStatus) public onlyOwner {
        tradingOpen = newStatus;
    }

    function swapBack() internal lockTheSwap {
        
        uint256 tokensToLiquify = _balances[address(this)];
        uint256 amountToLiquify = tokensToLiquify.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

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

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

        uint256 amountBNB = address(this).balance;

        uint256 totalBNBFee = totalFee.sub(liquidityFee.div(2));
        
        uint256 amountBNBLiquidity = amountBNB.mul(liquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(rewardsFee).div(totalBNBFee);

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

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

    event AutoLiquify(uint256 amountBNB, uint256 amountBABYKERMIT);

}

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":"amountBABYKERMIT","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"changeDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"changeDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityReceiver","type":"address"}],"name":"changeFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiqFee","type":"uint256"},{"internalType":"uint256","name":"newRewardFee","type":"uint256"},{"internalType":"uint256","name":"newExtraSellFee","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"changeRestrictWhales","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"},{"internalType":"bool","name":"swapByLimitOnly","type":"bool"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dividendDistributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"extraFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[],"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":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","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":"newStatus","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507310ed43c718714eb63d5aa57b78b54704e256024e600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c5a49b4cbe004b6fd55b30ba1de6ac360ff9765d600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960ff16600a0a64e8d4a510000260065560c8600260065402816200015557fe5b046007556064600360065402816200016957fe5b046008556001600960006101000a81548160ff0219169083151502179055506002600f55600a6010556005601155600060125560006013556000601860006101000a81548160ff0219169083151502179055506207a1206019556001601a60016101000a81548160ff0219169083151502179055506000601a60026101000a81548160ff021916908315150217905550610fa0600560065402816200020a57fe5b04601b553480156200021b57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038157600080fd5b505afa15801562000396573d6000803e3d6000fd5b505050506040513d6020811015620003ad57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200044257600080fd5b505afa15801562000457573d6000803e3d6000fd5b505050506040513d60208110156200046e57600080fd5b8101908080519060200190929190505050306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620004ea57600080fd5b505af1158015620004ff573d6000803e3d6000fd5b505050506040513d60208110156200051657600080fd5b8101908080519060200190929190505050601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516200065b9062000bfe565b808273ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801562000698573d6000803e3d6000fd5b50601860016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000a97601054600f5462000b7560201b6200266c1790919060201c565b60128190555062000abb60115460125462000b7560201b6200266c1790919060201c565b601381905550600654600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040518082815260200191505060405180910390a362000c0c565b60008082840190508381101562000bf4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b611ada80620049c883390190565b613dac8062000c1c6000396000f3fe6080604052600436106102b25760003560e01c8063807c2d9c11610175578063ca33e64c116100dc578063f0b37c0411610095578063f887ea401161006f578063f887ea4014610fe0578063fabe628314611021578063fe9fbb801461107e578063ffb54a99146110e5576102b9565b8063f0b37c0414610eed578063f2fde38b14610f3e578063f796413514610f8f576102b9565b8063ca33e64c14610d57578063ca987b0e14610d98578063d920334e14610dc3578063da00097d14610dfe578063dd62ed3e14610e2b578063e66b1d1e14610eb0576102b9565b8063a8aa1b311161012e578063a8aa1b3114610ba3578063a9059cbb14610be4578063a9f7864b14610c55578063b6a5d7de14610c9a578063bad3ea6a14610ceb578063bf56b37114610d2c576102b9565b8063807c2d9c146109b8578063893d20e8146109e35780638b42507f14610a2457806395d89b4114610a8b57806398118cb414610b1b578063a3a2e89e14610b46576102b9565b80633f4218e01161021957806369cf17d4116101d257806369cf17d41461081657806370a0823114610841578063773fcb5c146108a65780637a319590146109035780637d1db4a5146109525780637db1342c1461097d576102b9565b80633f4218e01461064c5780634355855a146106b357806344de2e4c1461071a578063479f66d8146107475780634a74bb0214610782578063571ac8b0146107af576102b9565b806323b872dd1161026b57806323b872dd1461047d5780632b112e491461050e5780632bb14e1d146105395780632f54bf6e14610564578063313ce567146105cb57806334c70889146105f9576102b9565b80630445b667146102be57806306fdde03146102e9578063095ea7b3146103795780630d295980146103ea57806318160ddd146104275780631df4ccfc14610452576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3611112565b6040518082815260200191505060405180910390f35b3480156102f557600080fd5b506102fe611118565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033e578082015181840152602081019050610323565b50505050905090810190601f16801561036b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561038557600080fd5b506103d26004803603604081101561039c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611155565b60405180821515815260200191505060405180910390f35b3480156103f657600080fd5b506104256004803603602081101561040d57600080fd5b81019080803515159060200190929190505050611247565b005b34801561043357600080fd5b5061043c6112df565b6040518082815260200191505060405180910390f35b34801561045e57600080fd5b506104676112e9565b6040518082815260200191505060405180910390f35b34801561048957600080fd5b506104f6600480360360608110156104a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112ef565b60405180821515815260200191505060405180910390f35b34801561051a57600080fd5b506105236114ef565b6040518082815260200191505060405180910390f35b34801561054557600080fd5b5061054e611571565b6040518082815260200191505060405180910390f35b34801561057057600080fd5b506105b36004803603602081101561058757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611577565b60405180821515815260200191505060405180910390f35b3480156105d757600080fd5b506105e06115d0565b604051808260ff16815260200191505060405180910390f35b34801561060557600080fd5b5061064a6004803603606081101561061c57600080fd5b81019080803515159060200190929190803590602001909291908035151590602001909291905050506115d9565b005b34801561065857600080fd5b5061069b6004803603602081101561066f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611694565b60405180821515815260200191505060405180910390f35b3480156106bf57600080fd5b50610702600480360360208110156106d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116b4565b60405180821515815260200191505060405180910390f35b34801561072657600080fd5b5061072f6116d4565b60405180821515815260200191505060405180910390f35b34801561075357600080fd5b506107806004803603602081101561076a57600080fd5b81019080803590602001909291905050506116e7565b005b34801561078e57600080fd5b5061079761177b565b60405180821515815260200191505060405180910390f35b3480156107bb57600080fd5b506107fe600480360360208110156107d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061178e565b60405180821515815260200191505060405180910390f35b34801561082257600080fd5b5061082b6117c1565b6040518082815260200191505060405180910390f35b34801561084d57600080fd5b506108906004803603602081101561086457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117c7565b6040518082815260200191505060405180910390f35b3480156108b257600080fd5b50610901600480360360408110156108c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611810565b005b34801561090f57600080fd5b506109506004803603606081101561092657600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611b1b565b005b34801561095e57600080fd5b50610967611bea565b6040518082815260200191505060405180910390f35b34801561098957600080fd5b506109b6600480360360208110156109a057600080fd5b8101908080359060200190929190505050611bf0565b005b3480156109c457600080fd5b506109cd611c75565b6040518082815260200191505060405180910390f35b3480156109ef57600080fd5b506109f8611c7b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a3057600080fd5b50610a7360048036036020811015610a4757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ca4565b60405180821515815260200191505060405180910390f35b348015610a9757600080fd5b50610aa0611cc4565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ae0578082015181840152602081019050610ac5565b50505050905090810190601f168015610b0d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b2757600080fd5b50610b30611d01565b6040518082815260200191505060405180910390f35b348015610b5257600080fd5b50610ba160048036036040811015610b6957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611d07565b005b348015610baf57600080fd5b50610bb8611ddd565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610bf057600080fd5b50610c3d60048036036040811015610c0757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e03565b60405180821515815260200191505060405180910390f35b348015610c6157600080fd5b50610c9860048036036040811015610c7857600080fd5b810190808035906020019092919080359060200190929190505050611e18565b005b348015610ca657600080fd5b50610ce960048036036020811015610cbd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f2c565b005b348015610cf757600080fd5b50610d00612001565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d3857600080fd5b50610d41612027565b6040518082815260200191505060405180910390f35b348015610d6357600080fd5b50610d6c61202d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610da457600080fd5b50610dad612053565b6040518082815260200191505060405180910390f35b348015610dcf57600080fd5b50610dfc60048036036020811015610de657600080fd5b8101908080359060200190929190505050612059565b005b348015610e0a57600080fd5b50610e136120de565b60405180821515815260200191505060405180910390f35b348015610e3757600080fd5b50610e9a60048036036040811015610e4e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120f1565b6040518082815260200191505060405180910390f35b348015610ebc57600080fd5b50610eeb60048036036020811015610ed357600080fd5b81019080803515159060200190929190505050612178565b005b348015610ef957600080fd5b50610f3c60048036036020811015610f1057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612210565b005b348015610f4a57600080fd5b50610f8d60048036036020811015610f6157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122e6565b005b348015610f9b57600080fd5b50610fde60048036036020811015610fb257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612448565b005b348015610fec57600080fd5b50610ff5612507565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561102d57600080fd5b5061107c6004803603604081101561104457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061252d565b005b34801561108a57600080fd5b506110cd600480360360208110156110a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612603565b60405180821515815260200191505060405180910390f35b3480156110f157600080fd5b506110fa612659565b60405180821515815260200191505060405180910390f35b601b5481565b60606040518060400160405280600b81526020017f42414259204b45524d4954000000000000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b61125033611577565b6112c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601860006101000a81548160ff02191690831515021790555050565b6000600654905090565b60125481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146114db5761145a826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f49092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6114e68484846127b4565b90509392505050565b600061156c61151f600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166117c7565b61155e61154d600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166117c7565b6006546131dc90919063ffffffff16565b6131dc90919063ffffffff16565b905090565b60105481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6115e233612603565b611654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b82601a60016101000a81548160ff02191690831515021790555081601b8190555080601a60026101000a81548160ff021916908315150217905550505050565b600c6020528060005260406000206000915054906101000a900460ff1681565b600e6020528060005260406000206000915054906101000a900460ff1681565b600960009054906101000a900460ff1681565b6116f033612603565b611762576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b620b71b0811061177157600080fd5b8060198190555050565b601a60019054906101000a900460ff1681565b60006117ba827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611155565b9050919050565b60115481565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61181933612603565b61188b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156119155750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61191e57600080fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611a2c57601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611a0f57600080fd5b505af1158015611a23573d6000803e3d6000fd5b50505050611b17565b601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611afe57600080fd5b505af1158015611b12573d6000803e3d6000fd5b505050505b5050565b611b2433612603565b611b96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b82600f819055508160108190555080601181905550611bc2601054600f5461266c90919063ffffffff16565b601281905550611bdf60115460125461266c90919063ffffffff16565b601381905550505050565b60075481565b611bf933612603565b611c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060088190555050565b60085481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d6020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600a81526020017f424142594b45524d495400000000000000000000000000000000000000000000815250905090565b600f5481565b611d1033612603565b611d82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611e103384846127b4565b905092915050565b611e2133612603565b611e93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b158015611f1057600080fd5b505af1158015611f24573d6000803e3d6000fd5b505050505050565b611f3533611577565b611fa7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b61206233612603565b6120d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060078190555050565b601a60029054906101000a900460ff1681565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61218133612603565b6121f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600960006101000a81548160ff02191690831515021790555050565b61221933611577565b61228b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6122ef33611577565b612361576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f214f574e4552000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b61245133612603565b6124c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61253633612603565b6125a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21415554484f52495a454400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601860009054906101000a900460ff1681565b6000808284019050838110156126ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008383111582906127a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561276657808201518184015260208101905061274b565b50505050905090810190601f1680156127935780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000601a60009054906101000a900460ff16156127dd576127d6848484613226565b90506131d5565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128815750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561290957601860009054906101000a900460ff16612908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f54726164696e67206e6f74206f70656e2079657400000000000000000000000081525060200191505060405180910390fd5b5b600754821115806129635750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6129d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5458204c696d697420457863656564656400000000000000000000000000000081525060200191505060405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612a405750601a60009054906101000a900460ff16155b8015612a585750601a60019054906101000a900460ff165b8015612aa55750601b54600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15612ab357612ab26133f9565b5b612abb613a01565b158015612b155750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15612b6f576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411612b6657600080fd5b612b6e613a0e565b5b612bf8826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f49092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ca15750600960009054906101000a900460ff165b15612d0757600854612cfb83600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266c90919063ffffffff16565b1115612d0657600080fd5b5b6000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612dad5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612db75782612dc3565b612dc2858585613a17565b5b9050612e1781600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266c90919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f9957601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612f7d57600080fd5b505af1925050508015612f8e575060015b612f9757612f98565b5b5b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166130d857601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156130bc57600080fd5b505af19250505080156130cd575060015b6130d6576130d7565b5b5b601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796019546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561314f57600080fd5b505af1925050508015613160575060015b6131695761316a565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019150505b9392505050565b600061321e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506126f4565b905092915050565b60006132b1826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f49092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061334682600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266c90919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6001601a60006101000a81548160ff0219169083151502179055506000600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000613496600261348860125461347a600f5487613bbf90919063ffffffff16565b613c4590919063ffffffff16565b613c4590919063ffffffff16565b905060006134ad82846131dc90919063ffffffff16565b90506000600267ffffffffffffffff811180156134c957600080fd5b506040519080825280602002602001820160405280156134f85781602001602082028036833780820191505090505b509050308160008151811061350957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156135ab57600080fd5b505afa1580156135bf573d6000803e3d6000fd5b505050506040513d60208110156135d557600080fd5b8101908080519060200190929190505050816001815181106135f357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156136f15780820151818401526020810190506136d6565b505050509050019650505050505050600060405180830381600087803b15801561371a57600080fd5b505af115801561372e573d6000803e3d6000fd5b50505050600047905060006137636137526002600f54613c4590919063ffffffff16565b6012546131dc90919063ffffffff16565b905060006137a1600261379384613785600f5488613bbf90919063ffffffff16565b613c4590919063ffffffff16565b613c4590919063ffffffff16565b905060006137cc836137be60105487613bbf90919063ffffffff16565b613c4590919063ffffffff16565b9050601860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561383857600080fd5b505af19350505050801561384a575060015b61385357613854565b5b60008711156139dc57601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308a600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561394957600080fd5b505af115801561395d573d6000803e3d6000fd5b50505050506040513d606081101561397457600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068288604051808381526020018281526020019250505060405180910390a15b50505050505050506000601a60006101000a81548160ff021916908315150217905550565b6000806017541415905090565b43601781905550565b6000808373ffffffffffffffffffffffffffffffffffffffff16601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613a7757601254613a7b565b6013545b90506000613aa56064613a978487613bbf90919063ffffffff16565b613c4590919063ffffffff16565b9050613af981600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266c90919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3613bb481856131dc90919063ffffffff16565b925050509392505050565b600080831415613bd25760009050613c3f565b6000828402905082848281613be357fe5b0414613c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613d566021913960400191505060405180910390fd5b809150505b92915050565b6000613c8783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c8f565b905092915050565b60008083118290613d3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613d00578082015181840152602081019050613ce5565b50505050905090810190601f168015613d2d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613d4757fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212200721cc8a2dcf7de0db850d39e0490d5c188cf3a417f3c3847a005548df191d6364736f6c6343000706003360806040527310ed43c718714eb63d5aa57b78b54704e256024e600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c5a49b4cbe004b6fd55b30ba1de6ac360ff9765d600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610708600d55670de0b6b3a7640000600e553480156100df57600080fd5b50604051611ada380380611ada8339818101604052602081101561010257600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561017057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610172565b805b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506118d8806102026000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed1461033b578063f0fc6bca14610366578063ffb2c4791461037d578063ffd49c84146103b8576100dd565b8063ce7c2ac214610293578063d0e30db014610306578063e2d2e21914610310576100dd565b80632d48e896116100bb5780632d48e896146101cd5780633a98ef39146102125780634fab0ae81461023d578063997664d714610268576100dd565b806311ce023d146100e257806314b6ca961461010d57806328fd319814610168575b600080fd5b3480156100ee57600080fd5b506100f76103e3565b6040518082815260200191505060405180910390f35b34801561011957600080fd5b506101666004803603604081101561013057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506103e9565b005b34801561017457600080fd5b506101b76004803603602081101561018b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106a8565b6040518082815260200191505060405180910390f35b3480156101d957600080fd5b50610210600480360360408110156101f057600080fd5b8101908080359060200190929190803590602001909291905050506107c2565b005b34801561021e57600080fd5b5061022761082c565b6040518082815260200191505060405180910390f35b34801561024957600080fd5b50610252610832565b6040518082815260200191505060405180910390f35b34801561027457600080fd5b5061027d610838565b6040518082815260200191505060405180910390f35b34801561029f57600080fd5b506102e2600480360360208110156102b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061083e565b60405180848152602001838152602001828152602001935050505060405180910390f35b61030e610868565b005b34801561031c57600080fd5b50610325610d63565b6040518082815260200191505060405180910390f35b34801561034757600080fd5b50610350610d69565b6040518082815260200191505060405180910390f35b34801561037257600080fd5b5061037b610d6f565b005b34801561038957600080fd5b506103b6600480360360208110156103a057600080fd5b8101908080359060200190929190505050610df5565b005b3480156103c457600080fd5b506103cd610f6f565b6040518082815260200191505060405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461044157600080fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156104965761049582610f75565b5b6000811180156104e857506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156104fb576104f68261123b565b61055d565b60008114801561054d57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b1561055c5761055b826112ea565b5b5b6105c6816105b8600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546008546114c390919063ffffffff16565b61150d90919063ffffffff16565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061065e600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611595565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106fd57600090506107bd565b600061074a600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611595565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116107a5576000925050506107bd565b6107b881836114c390919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461081a57600080fd5b81600d8190555080600e819055505050565b60085481565b600e5481565b60095481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c057600080fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561094b57600080fd5b505afa15801561095f573d6000803e3d6000fd5b505050506040513d602081101561097557600080fd5b810190808051906020019092919050505090506000600267ffffffffffffffff811180156109a257600080fd5b506040519080825280602002602001820160405280156109d15781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610a3c57600080fd5b505afa158015610a50573d6000803e3d6000fd5b505050506040513d6020811015610a6657600080fd5b810190808051906020019092919050505081600081518110610a8457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610aee57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610be6578082015181840152602081019050610bcb565b50505050905001955050505050506000604051808303818588803b158015610c0d57600080fd5b505af1158015610c21573d6000803e3d6000fd5b50505050506000610cfe83600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610cb557600080fd5b505afa158015610cc9573d6000803e3d6000fd5b505050506040513d6020811015610cdf57600080fd5b81019080805190602001909291905050506114c390919063ffffffff16565b9050610d158160095461150d90919063ffffffff16565b600981905550610d58610d47600854610d3984600c546115c790919063ffffffff16565b61164d90919063ffffffff16565b600b5461150d90919063ffffffff16565b600b81905550505050565b600b5481565b600a5481565b610d7833611697565b610dea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f546f6f20736f6f6e2e204e65656420746f20776169742100000000000000000081525060200191505060405180910390fd5b610df333610f75565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e4d57600080fd5b600060048054905090506000811415610e665750610f6c565b60008060005a90505b8482108015610e7d57508383105b15610f675783600f5410610e94576000600f819055505b610ed66004600f5481548110610ea657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611697565b15610f1e57610f1d6004600f5481548110610eed57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f75565b5b610f43610f345a836114c390919063ffffffff16565b8361150d90919063ffffffff16565b91505a9050600f600081548092919060010191905055508280600101935050610e6f565b505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610fc557611238565b6000610fd0826106a8565b9050600081111561123657610ff081600a5461150d90919063ffffffff16565b600a81905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561108957600080fd5b505af115801561109d573d6000803e3d6000fd5b505050506040513d60208110156110b357600080fd5b81019080805190602001909291905050505042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061115e81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461150d90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506111ef600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611595565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6004600160048054905003815481106112ff57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061137657fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546005600060046001600480549050038154811061141757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600480548061148b57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600061150583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116fb565b905092915050565b60008082840190508381101561158b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006115c0600c546115b2600b54856115c790919063ffffffff16565b61164d90919063ffffffff16565b9050919050565b6000808314156115da5760009050611647565b60008284029050828482816115eb57fe5b0414611642576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806118826021913960400191505060405180910390fd5b809150505b92915050565b600061168f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506117bb565b905092915050565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011080156116f45750600e546116f2836106a8565b115b9050919050565b60008383111582906117a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561176d578082015181840152602081019050611752565b50505050905090810190601f16801561179a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290611867576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561182c578082015181840152602081019050611811565b50505050905090810190601f1680156118595780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161187357fe5b04905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122046b659ce4623ca2dbbe284f5d3b0b2d99f9c32e853c9ca57f7babb082f1932bb64736f6c63430007060033

Deployed ByteCode Sourcemap

11618:10823:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13207:54;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14384:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15228:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20881:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14646:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12730:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18063:372;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14826:142;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12651:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10988:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14560:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17256:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12449:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12555:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12292:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17748:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13106:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15452:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12688:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14976:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16368:376;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16752:347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12170:52;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15864:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12229:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14740:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12500:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14470:84;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12613:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16098:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12885:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17899:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17540:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10661:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12985:46;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12913:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12809:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12764;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15753:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13153:45;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15087:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15978:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10831:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11388:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17107:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12854:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16229:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11162:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12945:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13207:54;;;;:::o;14384:80::-;14432:13;14456:5;;;;;;;;;;;;;;;;;14449:12;;14384:80;:::o;15228:216::-;15303:4;15355:6;15320:11;:23;15332:10;15320:23;;;;;;;;;;;;;;;:32;15344:7;15320:32;;;;;;;;;;;;;;;:41;;;;15398:7;15377:37;;15386:10;15377:37;;;15407:6;15377:37;;;;;;;;;;;;;;;;;;15432:4;15425:11;;15228:216;;;;:::o;20881:98::-;10377:19;10385:10;10377:7;:19::i;:::-;10369:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20962:9:::1;20948:11;;:23;;;;;;;;;;;;;;;;;;20881:98:::0;:::o;14646:88::-;14701:7;14719:12;;14712:19;;14646:88;:::o;12730:27::-;;;;:::o;18063:372::-;18163:4;18236:2;18193:11;:19;18205:6;18193:19;;;;;;;;;;;;;;;:31;18213:10;18193:31;;;;;;;;;;;;;;;;:46;18190:180;;18289:69;18325:6;18289:69;;;;;;;;;;;;;;;;;:11;:19;18301:6;18289:19;;;;;;;;;;;;;;;:31;18309:10;18289:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;18255:11;:19;18267:6;18255:19;;;;;;;;;;;;;;;:31;18275:10;18255:31;;;;;;;;;;;;;;;:103;;;;18190:180;18387:40;18401:6;18409:9;18420:6;18387:13;:40::i;:::-;18380:47;;18063:372;;;;;:::o;14826:142::-;14879:7;14906:54;14944:15;14954:4;;;;;;;;;;;14944:9;:15::i;:::-;14906:33;14923:15;14933:4;;;;;;;;;;;14923:9;:15::i;:::-;14906:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;14899:61;;14826:142;:::o;12651:30::-;;;;:::o;10988:103::-;11043:4;11078:5;;;;;;;;;;;11067:16;;:7;:16;;;11060:23;;10988:103;;;:::o;14560:80::-;14612:5;11818:1;14621:16;;14560:80;:::o;17256:276::-;10546:24;10559:10;10546:12;:24::i;:::-;10538:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17413:14:::1;17388:21;;:39;;;;;;;;;;;;;;;;;;17454:16;17438:13;:32;;;;17509:15;17481:25;;:43;;;;;;;;;;;;;;;;;;17256:276:::0;;;:::o;12449:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;12555:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;12292:33::-;;;;;;;;;;;;;:::o;17748:139::-;10546:24;10559:10;10546:12;:24::i;:::-;10538:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17841:6:::1;17835:3;:12;17827:21;;;::::0;::::1;;17876:3;17859:14;:20;;;;17748:139:::0;:::o;13106:40::-;;;;;;;;;;;;;:::o;15452:116::-;15507:4;15531:29;15539:7;15556:2;15531:7;:29::i;:::-;15524:36;;15452:116;;;:::o;12688:33::-;;;;:::o;14976:105::-;15042:7;15060:9;:18;15070:7;15060:18;;;;;;;;;;;;;;;;15053:25;;14976:105;;;:::o;16368:376::-;10546:24;10559:10;10546:12;:24::i;:::-;10538:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16486:4:::1;16468:23;;:6;:23;;;;:41;;;;;16505:4;;;;;;;;;;;16495:14;;:6;:14;;;;16468:41;16460:50;;;::::0;::::1;;16548:6;16521:16;:24;16538:6;16521:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;16578:6;16575:162;;;16600:19;;;;;;;;;;;:28;;;16629:6;16637:1;16600:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16575:162;;;16670:19;;;;;;;;;;;:28;;;16699:6;16707:9;:17;16717:6;16707:17;;;;;;;;;;;;;;;;16670:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16575:162;16368:376:::0;;:::o;16752:347::-;10546:24;10559:10;10546:12;:24::i;:::-;10538:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16884:9:::1;16869:12;:24;;;;16917:12;16904:10;:25;;;;16957:15;16940:14;:32;;;;17004:28;17021:10;;17004:12;;:16;;:28;;;;:::i;:::-;16993:8;:39;;;;17063:28;17076:14;;17063:8;;:12;;:28;;;;:::i;:::-;17043:17;:48;;;;16752:347:::0;;;:::o;12170:52::-;;;;:::o;15864:106::-;10546:24;10559:10;10546:12;:24::i;:::-;10538:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15954:8:::1;15940:10;:22;;;;15864:106:::0;:::o;12229:50::-;;;;:::o;14740:78::-;14792:7;14810:5;;;;;;;;;;;14803:12;;14740:78;:::o;12500:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;14470:84::-;14520:13;14544:7;;;;;;;;;;;;;;;;;14537:14;;14470:84;:::o;12613:31::-;;;;:::o;16098:123::-;10546:24;10559:10;10546:12;:24::i;:::-;10538:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16207:6:::1;16185:11;:19;16197:6;16185:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;16098:123:::0;;:::o;12885:19::-;;;;;;;;;;;;;:::o;17899:156::-;17979:4;18003:44;18017:10;18029:9;18040:6;18003:13;:44::i;:::-;17996:51;;17899:156;;;;:::o;17540:200::-;10546:24;10559:10;10546:12;:24::i;:::-;10538:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17656:19:::1;;;;;;;;;;;:43;;;17700:11;17713:18;17656:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17540:200:::0;;:::o;10661:94::-;10377:19;10385:10;10377:7;:19::i;:::-;10369:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10743:4:::1;10721:14:::0;:19:::1;10736:3;10721:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;10661:94:::0;:::o;12985:46::-;;;;;;;;;;;;;:::o;12913:25::-;;;;:::o;12809:36::-;;;;;;;;;;;;;:::o;12764:::-;;;;:::o;15753:103::-;10546:24;10559:10;10546:12;:24::i;:::-;10538:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15840:8:::1;15825:12;:23;;;;15753:103:::0;:::o;13153:45::-;;;;;;;;;;;;;:::o;15087:133::-;15171:7;15189:11;:19;15201:6;15189:19;;;;;;;;;;;;;;;:28;15209:7;15189:28;;;;;;;;;;;;;;;;15182:35;;15087:133;;;;:::o;15978:108::-;10546:24;10559:10;10546:12;:24::i;:::-;10538:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16070:8:::1;16053:14;;:25;;;;;;;;;;;;;;;;;;15978:108:::0;:::o;10831:97::-;10377:19;10385:10;10377:7;:19::i;:::-;10369:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10915:5:::1;10893:14;:19;10908:3;10893:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;10831:97:::0;:::o;11388:173::-;10377:19;10385:10;10377:7;:19::i;:::-;10369:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11472:3:::1;11464:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;11508:4;11486:14:::0;:19:::1;11501:3;11486:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;11528:25;11549:3;11528:25;;;;;;;;;;;;;;;;;;;;11388:173:::0;:::o;17107:141::-;10546:24;10559:10;10546:12;:24::i;:::-;10538:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17220:20:::1;17196:21;;:44;;;;;;;;;;;;;;;;;;17107:141:::0;:::o;12854:24::-;;;;;;;;;;;;;:::o;16229:131::-;10546:24;10559:10;10546:12;:24::i;:::-;10538:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16346:6:::1;16320:15;:23;16336:6;16320:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;16229:131:::0;;:::o;11162:107::-;11218:4;11242:14;:19;11257:3;11242:19;;;;;;;;;;;;;;;;;;;;;;;;;11235:26;;11162:107;;;:::o;12945:31::-;;;;;;;;;;;;;:::o;455:179::-;513:7;533:9;549:1;545;:5;533:17;;574:1;569;:6;;561:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;625:1;618:8;;;455:179;;;;:::o;786:190::-;872:7;905:1;900;:6;;908:12;892:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;932:9;948:1;944;:5;932:17;;967:1;960:8;;;786:190;;;;;:::o;18443:1641::-;18535:4;18565:16;;;;;;;;;;;18562:73;;;18591:41;18606:6;18614:9;18625:6;18591:14;:41::i;:::-;18584:48;;;;18562:73;18651:14;:22;18666:6;18651:22;;;;;;;;;;;;;;;;;;;;;;;;;18650:23;:53;;;;;18678:14;:25;18693:9;18678:25;;;;;;;;;;;;;;;;;;;;;;;;;18677:26;18650:53;18647:128;;;18727:11;;;;;;;;;;;18719:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18647:128;18805:12;;18795:6;:22;;:49;;;;18821:15;:23;18837:6;18821:23;;;;;;;;;;;;;;;;;;;;;;;;;18795:49;18787:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18896:4;;;;;;;;;;;18882:18;;:10;:18;;;;:39;;;;;18905:16;;;;;;;;;;;18904:17;18882:39;:64;;;;;18925:21;;;;;;;;;;;18882:64;:109;;;;;18978:13;;18950:9;:24;18968:4;18950:24;;;;;;;;;;;;;;;;:41;;18882:109;18879:128;;;18994:10;:8;:10::i;:::-;18879:128;19023:10;:8;:10::i;:::-;19022:11;:32;;;;;19050:4;;;;;;;;;;;19037:17;;:9;:17;;;19022:32;19019:117;;;19099:1;19079:9;:17;19089:6;19079:17;;;;;;;;;;;;;;;;:21;19071:30;;;;;;19116:8;:6;:8::i;:::-;19019:117;19195:53;19217:6;19195:53;;;;;;;;;;;;;;;;;:9;:17;19205:6;19195:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;19175:9;:17;19185:6;19175:17;;;;;;;;;;;;;;;:73;;;;19273:15;:26;19289:9;19273:26;;;;;;;;;;;;;;;;;;;;;;;;;19272:27;:45;;;;;19303:14;;;;;;;;;;;19272:45;19269:141;;;19387:10;;19351:32;19376:6;19351:9;:20;19361:9;19351:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;:46;;19343:55;;;;;;19269:141;19422:19;19445:11;:19;19457:6;19445:19;;;;;;;;;;;;;;;;;;;;;;;;;19444:20;:47;;;;;19469:11;:22;19481:9;19469:22;;;;;;;;;;;;;;;;;;;;;;;;;19468:23;19444:47;:93;;19531:6;19444:93;;;19494:34;19502:6;19510:9;19521:6;19494:7;:34::i;:::-;19444:93;19422:115;;19571:37;19596:11;19571:9;:20;19581:9;19571:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;19548:9;:20;19558:9;19548:20;;;;;;;;;;;;;;;:60;;;;19654:16;:24;19671:6;19654:24;;;;;;;;;;;;;;;;;;;;;;;;;19650:127;;19699:19;;;;;;;;;;;:28;;;19728:6;19736:9;:17;19746:6;19736:17;;;;;;;;;;;;;;;;19699:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19695:71;;;;;;19650:127;19793:16;:27;19810:9;19793:27;;;;;;;;;;;;;;;;;;;;;;;;;19789:137;;19841:19;;;;;;;;;;;:28;;;19870:9;19881;:20;19891:9;19881:20;;;;;;;;;;;;;;;;19841:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19837:77;;;;;;19789:137;19942:19;;;;;;;;;;;:27;;;19970:14;;19942:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19938:59;;;;;;20031:9;20014:40;;20023:6;20014:40;;;20042:11;20014:40;;;;;;;;;;;;;;;;;;20072:4;20065:11;;;18443:1641;;;;;;:::o;642:136::-;700:7;727:43;731:1;734;727:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;720:50;;642:136;;;;:::o;20096:330::-;20189:4;20226:53;20248:6;20226:53;;;;;;;;;;;;;;;;;:9;:17;20236:6;20226:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;20206:9;:17;20216:6;20206:17;;;;;;;;;;;;;;;:73;;;;20313:32;20338:6;20313:9;:20;20323:9;20313:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;20290:9;:20;20300:9;20290:20;;;;;;;;;;;;;;;:55;;;;20378:9;20361:35;;20370:6;20361:35;;;20389:6;20361:35;;;;;;;;;;;;;;;;;;20414:4;20407:11;;20096:330;;;;;:::o;20987:1378::-;13325:4;13306:16;;:23;;;;;;;;;;;;;;;;;;21049::::1;21075:9;:24;21093:4;21075:24;;;;;;;;;;;;;;;;21049:50;;21110:23;21136:54;21188:1;21136:47;21174:8;;21136:33;21156:12;;21136:15;:19;;:33;;;;:::i;:::-;:37;;:47;;;;:::i;:::-;:51;;:54;;;;:::i;:::-;21110:80;;21201:20;21224:36;21244:15;21224;:19;;:36;;;;:::i;:::-;21201:59;;21273:21;21311:1;21297:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21273:40;;21342:4;21324;21329:1;21324:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;21368:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;21358:4;21363:1;21358:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;21394:6;;;;;;;;;;;:57;;;21466:12;21493:1;21509:4;21536;21556:15;21394:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21595:17;21615:21;21595:41;;21649:19;21671:33;21684:19;21701:1;21684:12;;:16;;:19;;;;:::i;:::-;21671:8;;:12;;:33;;;;:::i;:::-;21649:55;;21725:26;21754:51;21803:1;21754:44;21786:11;21754:27;21768:12;;21754:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;21725:80;;21816:27;21846:42;21876:11;21846:25;21860:10;;21846:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;21816:72;;21905:19;;;;;;;;;;;:27;;;21940:19;21905:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;21901:73;;;;;;22017:1;21999:15;:19;21996:362;;;22034:6;;;;;;;;;;;:22;;;22064:18;22110:4;22134:15;22168:1;22188::::0;22208:21:::1;;;;;;;;;;;22248:15;22034:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22298:48;22310:18;22330:15;22298:48;;;;;;;;;;;;;;;;;;;;;;;;21996:362;13340:1;;;;;;;;13371:5:::0;13352:16;;:24;;;;;;;;;;;;;;;;;;20987:1378::o;15576:90::-;15619:4;15657:1;15643:10;;:15;;15636:22;;15576:90;:::o;15674:71::-;15725:12;15712:10;:25;;;;15674:71::o;20434:439::-;20520:7;20550:21;20582:9;20574:17;;:4;;;;;;;;;;;:17;;;:48;;20614:8;;20574:48;;;20594:17;;20574:48;20550:72;;20633:17;20653:34;20683:3;20653:25;20664:13;20653:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;20633:54;;20727:39;20756:9;20727;:24;20745:4;20727:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;20700:9;:24;20718:4;20700:24;;;;;;;;;;;;;;;:66;;;;20807:4;20782:42;;20791:6;20782:42;;;20814:9;20782:42;;;;;;;;;;;;;;;;;;20844:21;20855:9;20844:6;:10;;:21;;;;:::i;:::-;20837:28;;;;20434:439;;;;;:::o;984:224::-;1042:7;1071:1;1066;:6;1062:25;;;1083:1;1076:8;;;;1062:25;1097:9;1113:1;1109;:5;1097:17;;1142:1;1137;1133;:5;;;;;;:10;1125:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1199:1;1192:8;;;984:224;;;;;:::o;1216:132::-;1274:7;1301:39;1305:1;1308;1301:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1294:46;;1216:132;;;;:::o;1356:189::-;1442:7;1474:1;1470;:5;1477:12;1462:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1501:9;1517:1;1513;:5;;;;;;1501:17;;1536:1;1529:8;;;1356:189;;;;;:::o

Swarm Source

ipfs://46b659ce4623ca2dbbe284f5d3b0b2d99f9c32e853c9ca57f7babb082f1932bb
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.