Contract 0x34d96954c398e1ce8c46ebeb499a36b5869c7584 1

 
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0xdd7e9787672239ad13fb1df678a412b46f88a1b4e89732991f244117af52b8b4Transfer By Spli...(pending)2023-03-20 9:35:143 secs ago0x452fbecb58fe4959f93e3a91f14c72131d470269 IN 0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC(Pending)
0xfa4f26b4dc1d67724f56e9c01cb297c0c385009ac54dbffbada2e69bb172fa69Withdraw405605892023-03-20 9:34:5423 secs ago0x0864c990fa1bb14f90e47b1f6c1807af5968dee8 IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.015520096955152.792952624
0x222a79baa174b331d089490f4e98afeda6614e163817481ab356ffa082e8683eWithdraw405605882023-03-20 9:34:5225 secs ago0x5449f641a70c225474aeb9a5672ae151a9aef4dc IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.010849436855 172.440466897
0x7bed5763f2fa28e618f7e01d2f84b2709a2cc9c8057616f9d0f503dc828b104dWithdraw405605872023-03-20 9:34:5027 secs ago0xc47dc0fb4cadd11f38feabad24f1b37c9a1828ce IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.029000831132285.508694304
0xb56261393cadc3faac679136aeadd19d5ac80dbef436a05591c8972003cfe8bdWithdraw405605862023-03-20 9:34:4829 secs ago0x452fbecb58fe4959f93e3a91f14c72131d470269 IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.011883490072 171.291081537
0x73dce3b2a3bd01540acd10d321965a5d26f5323082232738578d70da05fef4fbDeposit405605802023-03-20 9:34:3641 secs ago0xc47dc0fb4cadd11f38feabad24f1b37c9a1828ce IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.494160774347281.761574037
0x0564aac64469c434e56f65575ddfe0adcfd9a7dff92b168535d5b91d70b4f7cdWithdraw405605752023-03-20 9:34:2453 secs ago0x5449f641a70c225474aeb9a5672ae151a9aef4dc IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.009187884707 132.436068783
0x5846819b5039ded1b6913b1eef3224bc692de2e604143de35803496564fdcb49Withdraw405605712023-03-20 9:34:161 min ago0xdd9f4058f62206b3e48786e53cd767acaa541bda IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.012974954645 187.023677428
0x797d8d9eb72ce1ef3bad4e691790aa37e50d5edf525db4f3467dc9967491cea7Deposit405605592023-03-20 9:33:501 min ago0x9fa9048cacac75f60fdf603decb8a24f377f536a IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.522172976897271.498877655
0x80982e7a558ff45ab501e9b17ec8cb4b000046297a911cfb4741cea3aa4e6cb4Deposit405605442023-03-20 9:33:201 min ago0x0864c990fa1bb14f90e47b1f6c1807af5968dee8 IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.292973712464140.055038664
0x5ef9fdc29ac08b395f4b89cb0807d9baad2204b36d427cc38be9d9682ce88721Withdraw405605392023-03-20 9:33:082 mins ago0x955462b8aa1fe67d8b6b019de331956ea38830f8 IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.007611936285 120.983776812
0xe9658eaa55a264012ba124594a13c1f35e2d887c1476a378a9b7c804d902ae24Withdraw405605312023-03-20 9:32:522 mins ago0x6f160ea0494628d39c803d36c85e6eadfd960433 IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.021571537585310.936600342
0x8b0c39e362b1e85f7b233f1c269cf1bbacddeed05d20b08eb19d4ac3330a2007Withdraw405605262023-03-20 9:32:402 mins ago0x7344a826ddd9f4f1ad5cda690c3b0e959470109f IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.018252966176263.102026297
0x54422bc7945dd6bc8f10307c43194c980c82ac6160dc88040743cf8af48c3d50Deposit By Split405605122023-03-20 9:32:123 mins ago0x053ac09fdb6f1577ee295b96ad99a74dbfbdd332 IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.26462403946 125.493696227
0x3fae96bb3108b9cac5d7a3ae5902c7dcb9f8f1b529555546c1e21ce51a01e02bDeposit405605062023-03-20 9:31:583 mins ago0xd4ca8548e8fa742872c08dafe336757c59335050 IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.449424117095272.880518321
0x5e9ef72cd035ef32f27e59767fd53227abdf4b823469de6ed34a17da0a2c55deTransfer By Spli...405604982023-03-20 9:31:423 mins ago0x1e4c11b2b255e5023120a1c3d0586d3bc2361445 IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.014261733849277.908995866
0x037429b9f9adf0cafd21bfe734cf713461bb5bd33c4b758e858d9e12d098f345Transfer By Spli...405604862023-03-20 9:31:164 mins ago0x1d7bfa4ba3b12aeb98a4996a533767dc9273fa3e IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.012899500677 188.377129219
0x63ce8bf085ded00700b4b856d26c9a900bcad40bc17c736f23eb564e271da2e5Withdraw405604772023-03-20 9:30:564 mins ago0x7b756b8a44e75c10d16401207772dd1df4ed0291 IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.019704998704284.031923213
0xfa87f3b480c42b36ef4990f8a97ff6fb69c6b709ffe90c18c3508f657af6dba5Withdraw405604672023-03-20 9:30:364 mins ago0xa24aa8ae2e87f310c514d4c723b30f031682151a IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.012733000804 202.377748532
0x8f7ff3f1017d618b2ef7cf9aa1a03ddbba791f00b21f5bc6bc6308af9f49879aTransfer By Spli...405604642023-03-20 9:30:304 mins ago0x59a22b31976edfd5935e2f9dbbc1f1cc073acf0b IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.01420295909276.763690914
0x0dd06894f63465f8a431dd6fd4885beb14f1265dbf587e348068af9aaba1505dTransfer By Spli...405604612023-03-20 9:30:224 mins ago0xd6d02fd1ecfc763a9ee3d3e43f93b4a19173e49e IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.013884916367270.566202257
0x64feef479ff2af5a967b0fe28116f8349173a17ddeb431a037f1bfe016abd415Withdraw405604562023-03-20 9:30:125 mins ago0xa24aa8ae2e87f310c514d4c723b30f031682151a IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.01172329292 173.998054512
0x29ebb2fe42922bc34d1718a3b1635b8dedf7e9123ce08ff16d66066683dc7ed7Register405604522023-03-20 9:30:045 mins ago0x9fa9048cacac75f60fdf603decb8a24f377f536a IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.162403857835126.468867387
0xe9bafcb2d48b0c7e3087a3dba27a19d7da24ceebc6e0fc856815981cbcccd731Withdraw405604512023-03-20 9:30:025 mins ago0xd14d1ef8f05a076969d3bb19e0d2b12889783e61 IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.016533838413262.788092464
0xa538891409089dfc652ed90d4726796755c30ac00ac97f4546774483dfb6d452Deposit By Split405604492023-03-20 9:29:585 mins ago0xfdc6165d8222748295346cf9d7abaa8c0f469cee IN  0x34d96954c398e1ce8c46ebeb499a36b5869c75840 MATIC0.271500875929 129.534467474
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FDF

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2022-10-11
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.6.12;

interface IERC20 {
    function name() external view returns (string memory);

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

    function decimals() external view returns (uint256);

    function totalSupply() external view returns (uint256);

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

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) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}

contract FDF {
    using SafeMath for uint256; 
    IERC20 public usdt;
    uint256 private constant baseDivider = 10000;
    uint256 private constant feePercents = 200; 
    uint256 private constant minDeposit = 100e6;
    uint256 private constant maxDeposit = 4000e6;
    uint256 private constant freezeIncomePercents = 3000;
    uint256 private constant timeStep = 1 days;
    uint256 private constant dayPerCycle = 15 days;
    uint256 private constant dayRewardPercents = 150;
    uint256 private constant maxAddFreeze = 45 days;
    uint256 private constant referDepth = 10;

    uint256 private constant directPercents = 500;
    uint256[4] private level4Percents = [100, 200, 300, 100];
    uint256[5] private level5Percents = [200, 200, 200, 100, 100];

    uint256 private constant luckPoolPercents = 50;
    uint256 private constant topPoolPercents = 50;

    address[2] public feeReceivers;

    address public defaultRefer;
    uint256 public startTime;
    uint256 public lastDistribute;
    uint256 public totalUser; 
    uint256 public luckPool;
    uint256 public topPool;

    mapping(uint256=>address[]) public dayLuckUsers;
    mapping(uint256=>uint256[]) public dayLuckUsersDeposit;
    mapping(uint256=>address[3]) public dayTopUsers;

    address[] public level4Users;

    struct OrderInfo {
        uint256 amount; 
        uint256 start;
        uint256 unfreeze; 
        bool isUnfreezed;
    }

    mapping(address => OrderInfo[]) public orderInfos;

    address[] public depositors;
    uint256[] public depositorsIndex;

    struct UserInfo {
        address referrer;
        uint256 start;
        uint256 level; // 0, 1, 2, 3, 4, 5
        uint256 maxDeposit;
        uint256 totalDeposit;
        uint256 teamNum;
        uint256 maxDirectDeposit;
        uint256 teamTotalDeposit;
        uint256 totalFreezed;
        uint256 totalRevenue;
    }

    mapping(address=>UserInfo) public userInfo;
    mapping(uint256 => mapping(address => uint256)) public userLayer1DayDeposit; // day=>user=>amount
    mapping(address => mapping(uint256 => address[])) public teamUsers;

    struct RewardInfo{
        uint256 capitals;
        uint256 statics;
        uint256 directs;
        uint256 level4Freezed;
        uint256 level4Released;
        uint256 level5Left;
        uint256 level5Freezed;
        uint256 level5Released;
        uint256 luck;
        uint256 top;
        uint256 split;
        uint256 splitDebt;
    }

    mapping(address=>RewardInfo) public rewardInfo;
    
    event Register(address user, address referral);
    event Deposit(address user, uint256 amount);
    event DepositBySplit(address user, uint256 amount);
    event TransferBySplit(address user, address receiver, uint256 amount);
    event Withdraw(address user, uint256 withdrawable);

    constructor(address _usdtAddr, address _defaultRefer, address[2] memory _feeReceivers) public {
        usdt = IERC20(_usdtAddr);
        feeReceivers = _feeReceivers;
        startTime = block.timestamp;
        lastDistribute = block.timestamp;
        defaultRefer = _defaultRefer;
    }

    function register(address _referral) external {
        require(userInfo[_referral].totalDeposit > 0 || _referral == defaultRefer, "invalid refer");
        UserInfo storage user = userInfo[msg.sender];
        require(user.referrer == address(0), "referrer bonded");
        user.referrer = _referral;
        user.start = block.timestamp;
        _updateTeamNum(msg.sender);
        totalUser = totalUser.add(1);
        emit Register(msg.sender, _referral);
    }

    function deposit(uint256 _amount) external {
        usdt.transferFrom(msg.sender, address(this), _amount);
        _deposit(msg.sender, _amount);
        emit Deposit(msg.sender, _amount);
    }

    function depositBySplit(uint256 _amount) external {
        require(_amount >= minDeposit && _amount.mod(minDeposit) == 0, "amount err");
        require(userInfo[msg.sender].totalDeposit == 0, "actived");
        uint256 splitLeft = getCurSplit(msg.sender);
        require(splitLeft >= _amount, "insufficient split");
        rewardInfo[msg.sender].splitDebt = rewardInfo[msg.sender].splitDebt.add(_amount);
        _deposit(msg.sender, _amount);
        emit DepositBySplit(msg.sender, _amount);
    }

    function transferBySplit(address _receiver, uint256 _amount) external {
        require(_amount >= minDeposit && _amount.mod(minDeposit) == 0, "amount err");
        uint256 splitLeft = getCurSplit(msg.sender);
        require(splitLeft >= _amount, "insufficient income");
        rewardInfo[msg.sender].splitDebt = rewardInfo[msg.sender].splitDebt.add(_amount);
        rewardInfo[_receiver].split = rewardInfo[_receiver].split.add(_amount);
        emit TransferBySplit(msg.sender, _receiver, _amount);
    }

    function distributePoolRewards() private {
        if(block.timestamp > lastDistribute.add(timeStep)){
            uint256 dayNow = getCurDay();

            _distributeLuckPool(dayNow);

            _distributeTopPool(dayNow);
            lastDistribute = block.timestamp;
        }
    }

    function withdraw() external {
        distributePoolRewards();
        (uint256 staticReward, uint256 staticSplit) = _calCurStaticRewards(msg.sender);
        uint256 splitAmt = staticSplit;
        uint256 withdrawable = staticReward;

        (uint256 dynamicReward, uint256 dynamicSplit) = _calCurDynamicRewards(msg.sender);
        withdrawable = withdrawable.add(dynamicReward);
        splitAmt = splitAmt.add(dynamicSplit);

        RewardInfo storage userRewards = rewardInfo[msg.sender];
        userRewards.split = userRewards.split.add(splitAmt);

        userRewards.statics = 0;

        userRewards.directs = 0;
        userRewards.level4Released = 0;
        userRewards.level5Released = 0;
        
        userRewards.luck = 0;
        userRewards.top = 0;
        
        withdrawable = withdrawable.add(userRewards.capitals);
        userRewards.capitals = 0;
        
        usdt.transfer(msg.sender, withdrawable);

        emit Withdraw(msg.sender, withdrawable);
    }

    function getCurDay() public view returns(uint256) {
        return (block.timestamp.sub(startTime)).div(timeStep);
    }

    function getDayLuckLength(uint256 _day) external view returns(uint256) {
        return dayLuckUsers[_day].length;
    }

    function getTeamUsersLength(address _user, uint256 _layer) external view returns(uint256) {
        return teamUsers[_user][_layer].length;
    }

    function getOrderLength(address _user) external view returns(uint256) {
        return orderInfos[_user].length;
    }

    function getDepositorsLength() external view returns(uint256) {
        return depositors.length;
    }

    function getMaxFreezing(address _user) public view returns(uint256) {
        uint256 maxFreezing;
        for(uint256 i = orderInfos[_user].length; i > 0; i--){
            OrderInfo storage order = orderInfos[_user][i - 1];
            if(order.unfreeze > block.timestamp){
                if(order.amount > maxFreezing){
                    maxFreezing = order.amount;
                }
            }else{
                break;
            }
        }
        return maxFreezing;
    }

    function getTeamDeposit(address _user) public view returns(uint256, uint256, uint256){
        uint256 totalTeam;
        uint256 maxTeam;
        uint256 otherTeam;
        for(uint256 i = 0; i < teamUsers[_user][0].length; i++){
            uint256 userTotalTeam = userInfo[teamUsers[_user][0][i]].teamTotalDeposit.add(userInfo[teamUsers[_user][0][i]].totalDeposit);
            totalTeam = totalTeam.add(userTotalTeam);
            if(userTotalTeam > maxTeam){
                maxTeam = userTotalTeam;
            }
        }
        otherTeam = totalTeam.sub(maxTeam);
        return(maxTeam, otherTeam, totalTeam);
    }

    function getCurSplit(address _user) public view returns(uint256){
        (, uint256 staticSplit) = _calCurStaticRewards(_user);
        (, uint256 dynamicSplit) = _calCurDynamicRewards(_user);
        return rewardInfo[_user].split.add(staticSplit).add(dynamicSplit).sub(rewardInfo[_user].splitDebt);
    }

    function _calCurStaticRewards(address _user) private view returns(uint256, uint256) {
        RewardInfo storage userRewards = rewardInfo[_user];
        uint256 totalRewards = userRewards.statics;
        uint256 splitAmt = totalRewards.mul(freezeIncomePercents).div(baseDivider);
        uint256 withdrawable = totalRewards.sub(splitAmt);
        return(withdrawable, splitAmt);
    }

    function _calCurDynamicRewards(address _user) private view returns(uint256, uint256) {
        RewardInfo storage userRewards = rewardInfo[_user];
        uint256 totalRewards = userRewards.directs.add(userRewards.level4Released).add(userRewards.level5Released);
        totalRewards = totalRewards.add(userRewards.luck.add(userRewards.top));
        uint256 splitAmt = totalRewards.mul(freezeIncomePercents).div(baseDivider);
        uint256 withdrawable = totalRewards.sub(splitAmt);
        return(withdrawable, splitAmt);
    }

    function _updateTeamNum(address _user) private {
        UserInfo storage user = userInfo[_user];
        address upline = user.referrer;
        for(uint256 i = 0; i < referDepth; i++){
            if(upline != address(0)){
                userInfo[upline].teamNum = userInfo[upline].teamNum.add(1);
                teamUsers[upline][i].push(_user);
                _updateLevel(upline);
                if(upline == defaultRefer) break;
                upline = userInfo[upline].referrer;
            }else{
                break;
            }
        }
    }

    function _updateTopUser(address _user, uint256 _amount, uint256 _dayNow) private {
        userLayer1DayDeposit[_dayNow][_user] = userLayer1DayDeposit[_dayNow][_user].add(_amount);
        bool updated;
        for(uint256 i = 0; i < 3; i++){
            address topUser = dayTopUsers[_dayNow][i];
            if(topUser == _user){
                _reOrderTop(_dayNow);
                updated = true;
                break;
            }
        }
        if(!updated){
            address lastUser = dayTopUsers[_dayNow][2];
            if(userLayer1DayDeposit[_dayNow][lastUser] < userLayer1DayDeposit[_dayNow][_user]){
                dayTopUsers[_dayNow][2] = _user;
                _reOrderTop(_dayNow);
            }
        }
    }

    function _reOrderTop(uint256 _dayNow) private {
        for(uint256 i = 3; i > 1; i--){
            address topUser1 = dayTopUsers[_dayNow][i - 1];
            address topUser2 = dayTopUsers[_dayNow][i - 2];
            uint256 amount1 = userLayer1DayDeposit[_dayNow][topUser1];
            uint256 amount2 = userLayer1DayDeposit[_dayNow][topUser2];
            if(amount1 > amount2){
                dayTopUsers[_dayNow][i - 1] = topUser2;
                dayTopUsers[_dayNow][i - 2] = topUser1;
            }
        }
    }

    function _removeInvalidDeposit(address _user, uint256 _amount) private {
        UserInfo storage user = userInfo[_user];
        address upline = user.referrer;
        for(uint256 i = 0; i < referDepth; i++){
            if(upline != address(0)){
                if(userInfo[upline].teamTotalDeposit > _amount){
                    userInfo[upline].teamTotalDeposit = userInfo[upline].teamTotalDeposit.sub(_amount);
                }else{
                    userInfo[upline].teamTotalDeposit = 0;
                }
                if(upline == defaultRefer) break;
                upline = userInfo[upline].referrer;
            }else{
                break;
            }
        }
    }

    function _updateReferInfo(address _user, uint256 _amount) private {
        UserInfo storage user = userInfo[_user];
        address upline = user.referrer;
        for(uint256 i = 0; i < referDepth; i++){
            if(upline != address(0)){
                userInfo[upline].teamTotalDeposit = userInfo[upline].teamTotalDeposit.add(_amount);
                _updateLevel(upline);
                if(upline == defaultRefer) break;
                upline = userInfo[upline].referrer;
            }else{
                break;
            }
        }
    }

    function _updateLevel(address _user) private {
        UserInfo storage user = userInfo[_user];
        uint256 levelNow = _calLevelNow(_user);
        if(levelNow > user.level){
            user.level = levelNow;
            if(levelNow == 4){
                level4Users.push(_user);
            }
        }
    }

    function _calLevelNow(address _user) private view returns(uint256) {
        UserInfo storage user = userInfo[_user];
        uint256 total = user.totalDeposit;
        uint256 levelNow;
        if(total >= 2000e6){
            (uint256 maxTeam, uint256 otherTeam, ) = getTeamDeposit(_user);
            if(total >= 4000e6 && user.teamNum >= 100 && maxTeam >= 50000e6 && otherTeam >= 50000e6){
                levelNow = 5;
            }else if(user.teamNum >= 50 && maxTeam >= 20000e6 && otherTeam >= 20000e6){
                levelNow = 4;
            }else{
                levelNow = 3;
            }
        }else if(total >= 1000e6){
            levelNow = 2;
        }else if(total >= 100e6){
            levelNow = 1;
        }

        return levelNow;
    }

    function _deposit(address _user, uint256 _amount) private {
        UserInfo storage user = userInfo[_user];
        require(user.referrer != address(0), "register first");
        require(_amount >= minDeposit, "less than min");
        require(_amount <= maxDeposit, "more than max");
        require(_amount.mod(minDeposit) == 0 && _amount >= minDeposit, "mod err");
        require(user.maxDeposit == 0 || _amount >= user.maxDeposit, "less before");

        if(user.maxDeposit == 0){
            user.maxDeposit = _amount;
        }else if(user.maxDeposit < _amount){
            user.maxDeposit = _amount;
            user.maxDirectDeposit = _amount;
        }

        _distributeDeposit(_amount);

        if(user.totalDeposit == 0){
            uint256 dayNow = getCurDay();
            dayLuckUsers[dayNow].push(_user);
            dayLuckUsersDeposit[dayNow].push(_amount);

            _updateTopUser(user.referrer, _amount, dayNow);
        }

        depositors.push(_user);
        
        user.totalDeposit = user.totalDeposit.add(_amount);
        user.totalFreezed = user.totalFreezed.add(_amount);

        _updateLevel(msg.sender);

        uint256 addFreeze = (orderInfos[_user].length.div(2)).mul(timeStep);
        if(addFreeze > maxAddFreeze){
            addFreeze = maxAddFreeze;
        }
        uint256 unfreezeTime = block.timestamp.add(dayPerCycle).add(addFreeze);
        orderInfos[_user].push(OrderInfo(
            _amount, 
            block.timestamp, 
            unfreezeTime,
            false
        ));

        depositorsIndex.push(orderInfos[_user].length-1);

        _unfreezeFundAndUpdateReward(msg.sender, _amount);

        distributePoolRewards();

        _updateReferInfo(msg.sender, _amount);

        _updateReward(msg.sender, _amount);

        _releaseUpRewards(msg.sender, _amount);

    }

    function _unfreezeFundAndUpdateReward(address _user, uint256 _amount) private {
        UserInfo storage user = userInfo[_user];
        bool isUnfreezeCapital;
        for(uint256 i = 0; i < orderInfos[_user].length; i++){
            OrderInfo storage order = orderInfos[_user][i];
            if(block.timestamp > order.unfreeze  && order.isUnfreezed == false && _amount >= order.amount){
                order.isUnfreezed = true;
                isUnfreezeCapital = true;
                
                if(user.totalFreezed > order.amount){
                    user.totalFreezed = user.totalFreezed.sub(order.amount);
                }else{
                    user.totalFreezed = 0;
                }
                
                _removeInvalidDeposit(_user, order.amount);

                uint256 staticReward = order.amount.mul(dayRewardPercents).mul(dayPerCycle).div(timeStep).div(baseDivider);

                rewardInfo[_user].capitals = rewardInfo[_user].capitals.add(order.amount);

                rewardInfo[_user].statics = rewardInfo[_user].statics.add(staticReward);
                
                user.totalRevenue = user.totalRevenue.add(staticReward);

                break;
            }
        }

        if(!isUnfreezeCapital){ 
            RewardInfo storage userReward = rewardInfo[_user];
            if(userReward.level5Freezed > 0){
                uint256 release = _amount;
                if(_amount >= userReward.level5Freezed){
                    release = userReward.level5Freezed;
                }
                userReward.level5Freezed = userReward.level5Freezed.sub(release);
                userReward.level5Released = userReward.level5Released.add(release);
                user.totalRevenue = user.totalRevenue.add(release);
            }
        }
    }

    function _distributeLuckPool(uint256 _dayNow) private {
        uint256 dayDepositCount = dayLuckUsers[_dayNow - 1].length;
        if(dayDepositCount > 0){
            uint256 checkCount = 10;
            if(dayDepositCount < 10){
                checkCount = dayDepositCount;
            }
            uint256 totalDeposit;
            uint256 totalReward;
            for(uint256 i = dayDepositCount; i > dayDepositCount.sub(checkCount); i--){
                totalDeposit = totalDeposit.add(dayLuckUsersDeposit[_dayNow - 1][i - 1]);
            }

            for(uint256 i = dayDepositCount; i > dayDepositCount.sub(checkCount); i--){
                address userAddr = dayLuckUsers[_dayNow - 1][i - 1];
                if(userAddr != address(0)){
                    uint256 reward = luckPool.mul(dayLuckUsersDeposit[_dayNow - 1][i - 1]).div(totalDeposit);
                    totalReward = totalReward.add(reward);
                    rewardInfo[userAddr].luck = rewardInfo[userAddr].luck.add(reward);
                    userInfo[userAddr].totalRevenue = userInfo[userAddr].totalRevenue.add(reward);
                }
            }
            if(luckPool > totalReward){
                luckPool = luckPool.sub(totalReward);
            }else{
                luckPool = 0;
            }
        }
    }

    function _distributeTopPool(uint256 _dayNow) private {
        uint16[3] memory rates = [5000, 3000, 2000];
        uint32[3] memory maxReward = [4000e6, 2000e6, 1000e6];
        uint256 totalReward;
        for(uint256 i = 0; i < 3; i++){
            address userAddr = dayTopUsers[_dayNow - 1][i];
            if(userAddr != address(0)){
                uint256 reward = topPool.mul(rates[i]).div(baseDivider);
                if(reward > maxReward[i]){
                    reward = maxReward[i];
                }
                rewardInfo[userAddr].top = rewardInfo[userAddr].top.add(reward);
                userInfo[userAddr].totalRevenue = userInfo[userAddr].totalRevenue.add(reward);
                totalReward = totalReward.add(reward);
            }
        }
        if(topPool > totalReward){
            topPool = topPool.sub(totalReward);
        }else{
            topPool = 0;
        }
    }

    function _distributeDeposit(uint256 _amount) private {
        uint256 fee = _amount.mul(feePercents).div(baseDivider);
        usdt.transfer(feeReceivers[0], fee.div(2));
        usdt.transfer(feeReceivers[1], fee.div(2));
        uint256 luck = _amount.mul(luckPoolPercents).div(baseDivider);
        luckPool = luckPool.add(luck);
        uint256 top = _amount.mul(topPoolPercents).div(baseDivider);
        topPool = topPool.add(top);
    }

    function _updateReward(address _user, uint256 _amount) private {
        UserInfo storage user = userInfo[_user];
        address upline = user.referrer;
        for(uint256 i = 0; i < referDepth; i++){
            if(upline != address(0)){
                uint256 newAmount = _amount;
                if(upline != defaultRefer){
                    uint256 maxFreezing = getMaxFreezing(upline);
                    if(maxFreezing < _amount){
                        newAmount = maxFreezing;
                    }
                }
                RewardInfo storage upRewards = rewardInfo[upline];
                uint256 reward;
                if(i > 4){
                    if(userInfo[upline].level > 4){
                        reward = newAmount.mul(level5Percents[i - 5]).div(baseDivider);
                        upRewards.level5Freezed = upRewards.level5Freezed.add(reward);
                    }
                }else if(i > 0){
                    if( userInfo[upline].level > 3){
                        reward = newAmount.mul(level4Percents[i - 1]).div(baseDivider);
                        upRewards.level4Freezed = upRewards.level4Freezed.add(reward);
                    }
                }else{
                    reward = newAmount.mul(directPercents).div(baseDivider);
                    upRewards.directs = upRewards.directs.add(reward);
                    userInfo[upline].totalRevenue = userInfo[upline].totalRevenue.add(reward);
                }
                if(upline == defaultRefer) break;
                upline = userInfo[upline].referrer;
            }else{
                break;
            }
        }
    }

    function _releaseUpRewards(address _user, uint256 _amount) private {
        UserInfo storage user = userInfo[_user];
        address upline = user.referrer;
        for(uint256 i = 0; i < referDepth; i++){
            if(upline != address(0)){
                uint256 newAmount = _amount;
                if(upline != defaultRefer){
                    uint256 maxFreezing = getMaxFreezing(upline);
                    if(maxFreezing < _amount){
                        newAmount = maxFreezing;
                    }
                }

                RewardInfo storage upRewards = rewardInfo[upline];
                if(i > 0 && i < 5 && userInfo[upline].level > 3){
                    if(upRewards.level4Freezed > 0){
                        uint256 level4Reward = newAmount.mul(level4Percents[i - 1]).div(baseDivider);
                        if(level4Reward > upRewards.level4Freezed){
                            level4Reward = upRewards.level4Freezed;
                        }
                        upRewards.level4Freezed = upRewards.level4Freezed.sub(level4Reward); 
                        upRewards.level4Released = upRewards.level4Released.add(level4Reward);
                        userInfo[upline].totalRevenue = userInfo[upline].totalRevenue.add(level4Reward);
                    }
                }

                if(i >= 5 && userInfo[upline].level > 4){
                    if(upRewards.level5Left > 0){
                        uint256 level5Reward = newAmount.mul(level5Percents[i - 5]).div(baseDivider);
                        if(level5Reward > upRewards.level5Left){
                            level5Reward = upRewards.level5Left;
                        }
                        upRewards.level5Left = upRewards.level5Left.sub(level5Reward); 
                        upRewards.level5Freezed = upRewards.level5Freezed.add(level5Reward);
                    }
                }
                upline = userInfo[upline].referrer;
            }else{
                break;
            }
        }
    }
 
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_usdtAddr","type":"address"},{"internalType":"address","name":"_defaultRefer","type":"address"},{"internalType":"address[2]","name":"_feeReceivers","type":"address[2]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DepositBySplit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"referral","type":"address"}],"name":"Register","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferBySplit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"withdrawable","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"dayLuckUsers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"dayLuckUsersDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"dayTopUsers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultRefer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositBySplit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"depositors","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"depositorsIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"feeReceivers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getCurSplit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_day","type":"uint256"}],"name":"getDayLuckLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDepositorsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getMaxFreezing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getOrderLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getTeamDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_layer","type":"uint256"}],"name":"getTeamUsersLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastDistribute","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"level4Users","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"luckPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"orderInfos","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"unfreeze","type":"uint256"},{"internalType":"bool","name":"isUnfreezed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_referral","type":"address"}],"name":"register","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewardInfo","outputs":[{"internalType":"uint256","name":"capitals","type":"uint256"},{"internalType":"uint256","name":"statics","type":"uint256"},{"internalType":"uint256","name":"directs","type":"uint256"},{"internalType":"uint256","name":"level4Freezed","type":"uint256"},{"internalType":"uint256","name":"level4Released","type":"uint256"},{"internalType":"uint256","name":"level5Left","type":"uint256"},{"internalType":"uint256","name":"level5Freezed","type":"uint256"},{"internalType":"uint256","name":"level5Released","type":"uint256"},{"internalType":"uint256","name":"luck","type":"uint256"},{"internalType":"uint256","name":"top","type":"uint256"},{"internalType":"uint256","name":"split","type":"uint256"},{"internalType":"uint256","name":"splitDebt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"teamUsers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"topPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferBySplit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdt","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"level","type":"uint256"},{"internalType":"uint256","name":"maxDeposit","type":"uint256"},{"internalType":"uint256","name":"totalDeposit","type":"uint256"},{"internalType":"uint256","name":"teamNum","type":"uint256"},{"internalType":"uint256","name":"maxDirectDeposit","type":"uint256"},{"internalType":"uint256","name":"teamTotalDeposit","type":"uint256"},{"internalType":"uint256","name":"totalFreezed","type":"uint256"},{"internalType":"uint256","name":"totalRevenue","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userLayer1DayDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526040518060800160405280606461ffff16815260200160c861ffff16815260200161012c61ffff168152602001606461ffff1681525060019060046200004c92919062000196565b506040518060a0016040528060c860ff16815260200160c860ff16815260200160c860ff168152602001606460ff168152602001606460ff1681525060059060056200009a929190620001e1565b50348015620000a857600080fd5b50604051620054fd380380620054fd83398181016040526080811015620000ce57600080fd5b81019080805190602001909291908051906020019092919091905050826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a9060026200013d9291906200022b565b5042600d8190555042600e8190555081600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505062000309565b8260048101928215620001ce579160200282015b82811115620001cd578251829061ffff16905591602001919060010190620001aa565b5b509050620001dd9190620002ad565b5090565b826005810192821562000218579160200282015b8281111562000217578251829060ff16905591602001919060010190620001f5565b5b509050620002279190620002ad565b5090565b82600281019282156200029a579160200282015b82811115620002995782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906200023f565b5b509050620002a99190620002cc565b5090565b5b80821115620002c8576000816000905550600101620002ae565b5090565b5b808211156200030557600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101620002cd565b5090565b6151e480620003196000396000f3fe608060405234801561001057600080fd5b50600436106101ef5760003560e01c80637647e0ff1161010f578063c511b345116100a2578063e1604b7011610071578063e1604b7014610a31578063e402a07114610a4f578063e4b2fb7914610aa7578063f768990714610aff576101ef565b8063c511b345146108c4578063cbecf6b5146108f2578063cbf84ced14610997578063de6b8a2e146109d9576101ef565b806385b69f3d116100de57806385b69f3d146107905780639fc7f0b9146107dc578063a5b5038c14610834578063b6b55f2514610896576101ef565b80637647e0ff1461067657806378e97925146106dc578063857f281d146106fa57806385a6327c1461075c576101ef565b80634c809c6611610187578063672929d811610156578063672929d81461052657806371a6b69d1461054457806373cb4d05146105925780637424830214610614576101ef565b80634c809c661461039b5780635b381760146103f357806360a1cbd71461044b57806364047eca146104c4576101ef565b80632fea20f6116101c35780632fea20f6146103115780633ccfd60b1461032f5780634420e4861461033957806347d673391461037d576101ef565b8062a7a56e146101f45780631959a0021461021257806327878484146102bf5780632f48ab7d146102dd575b600080fd5b6101fc610b41565b6040518082815260200191505060405180910390f35b6102546004803603602081101561022857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b72565b604051808b73ffffffffffffffffffffffffffffffffffffffff1681526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390f35b6102c7610be6565b6040518082815260200191505060405180910390f35b6102e5610bec565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610319610c10565b6040518082815260200191505060405180910390f35b610337610c1d565b005b61037b6004803603602081101561034f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e65565b005b61038561115e565b6040518082815260200191505060405180910390f35b6103dd600480360360208110156103b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611164565b6040518082815260200191505060405180910390f35b61041f6004803603602081101561040957600080fd5b8101908080359060200190929190505050611245565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104976004803603604081101561046157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611278565b60405180858152602001848152602001838152602001821515815260200194505050505060405180910390f35b610510600480360360408110156104da57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112cf565b6040518082815260200191505060405180910390f35b61052e6112f4565b6040518082815260200191505060405180910390f35b6105906004803603604081101561055a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112fa565b005b6105e8600480360360608110156105a857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506115c7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61064a6004803603604081101561062a57600080fd5b81019080803590602001909291908035906020019092919050505061161f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106b86004803603602081101561068c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611661565b60405180848152602001838152602001828152602001935050505060405180910390f35b6106e46118c5565b6040518082815260200191505060405180910390f35b6107306004803603604081101561071057600080fd5b8101908080359060200190929190803590602001909291905050506118cb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610764611916565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107c6600480360360408110156107a657600080fd5b81019080803590602001909291908035906020019092919050505061193c565b6040518082815260200191505060405180910390f35b610808600480360360208110156107f257600080fd5b810190808035906020019092919050505061196a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108806004803603604081101561084a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119a6565b6040518082815260200191505060405180910390f35b6108c2600480360360208110156108ac57600080fd5b8101908080359060200190929190505050611a04565b005b6108f0600480360360208110156108da57600080fd5b8101908080359060200190929190505050611b51565b005b6109346004803603602081101561090857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e26565b604051808d81526020018c81526020018b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019c5050505050505050505050505060405180910390f35b6109c3600480360360208110156109ad57600080fd5b8101908080359060200190929190505050611e86565b6040518082815260200191505060405180910390f35b610a1b600480360360208110156109ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ea7565b6040518082815260200191505060405180910390f35b610a39611ef3565b6040518082815260200191505060405180910390f35b610a9160048036036020811015610a6557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ef9565b6040518082815260200191505060405180910390f35b610ad360048036036020811015610abd57600080fd5b8101908080359060200190929190505050611ff0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b2b60048036036020811015610b1557600080fd5b810190808035906020019092919050505061202c565b6040518082815260200191505060405180910390f35b6000610b6d62015180610b5f600d544261204c90919063ffffffff16565b6120d590919063ffffffff16565b905090565b60196020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002015490806003015490806004015490806005015490806006015490806007015490806008015490806009015490508a565b60115481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601780549050905090565b610c25612164565b600080610c31336121ac565b9150915060008190506000839050600080610c4b3361224e565b91509150610c62828461234b90919063ffffffff16565b9250610c77818561234b90919063ffffffff16565b93506000601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050610cd38582600a015461234b90919063ffffffff16565b81600a0181905550600081600101819055506000816002018190555060008160040181905550600081600701819055506000816008018190555060008160090181905550610d2e81600001548561234b90919063ffffffff16565b93506000816000018190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610dcb57600080fd5b505af1158015610ddf573d6000803e3d6000fd5b505050506040513d6020811015610df557600080fd5b8101908080519060200190929190505050507f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243643385604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a150505050505050565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401541180610f035750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610f75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f696e76616c69642072656665720000000000000000000000000000000000000081525060200191505060405180910390fd5b6000601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461107e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f726566657272657220626f6e646564000000000000000000000000000000000081525060200191505060405180910390fd5b818160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504281600101819055506110d3336123d3565b6110e96001600f5461234b90919063ffffffff16565b600f819055507f98ada70a1cb506dc4591465e1ee9be3fd7a2b6c73ecf3b949009718c9a3515193383604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b600e5481565b600080611170836121ac565b915050600061117e8461224e565b91505061123c601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b015461122e8361122086601c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a015461234b90919063ffffffff16565b61234b90919063ffffffff16565b61204c90919063ffffffff16565b92505050919050565b600a816002811061125257fe5b016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6016602052816000526040600020818154811061129157fe5b9060005260206000209060040201600091509150508060000154908060010154908060020154908060030160009054906101000a900460ff16905084565b601a602052816000526040600020602052806000526040600020600091509150505481565b60105481565b6305f5e1008110158015611324575060006113226305f5e100836126b290919063ffffffff16565b145b611396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f616d6f756e74206572720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006113a133611164565b905081811015611419576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f696e73756666696369656e7420696e636f6d650000000000000000000000000081525060200191505060405180910390fd5b61146e82601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b015461234b90919063ffffffff16565b601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b018190555061150982601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a015461234b90919063ffffffff16565b601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a01819055507f6793236d14c3b3aa080156a78046b313bd7fc5dee636846f4254fa3506c81faa338484604051808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b601b60205282600052604060002060205281600052604060002081815481106115ec57fe5b90600052602060002001600092509250509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6014602052816000526040600020816003811061163857fe5b016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060008060005b601b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008081526020019081526020016000208054905081101561189c57600061186b60196000601b60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808152602001908152602001600020858154811061172c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015460196000601b60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002086815481106117f457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007015461234b90919063ffffffff16565b9050611880818661234b90919063ffffffff16565b94508381111561188e578093505b50808060010191505061166d565b506118b0828461204c90919063ffffffff16565b90508181849550955095505050509193909250565b600d5481565b601260205281600052604060002081815481106118e457fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6013602052816000526040600020818154811061195557fe5b90600052602060002001600091509150505481565b6015818154811061197757fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002080549050905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611ab357600080fd5b505af1158015611ac7573d6000803e3d6000fd5b505050506040513d6020811015611add57600080fd5b810190808051906020019092919050505050611af9338261273c565b7fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c3382604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a150565b6305f5e1008110158015611b7b57506000611b796305f5e100836126b290919063ffffffff16565b145b611bed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f616d6f756e74206572720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015414611ca5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260078152602001807f616374697665640000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000611cb033611164565b905081811015611d28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e73756666696369656e742073706c6974000000000000000000000000000081525060200191505060405180910390fd5b611d7d82601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b015461234b90919063ffffffff16565b601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b0181905550611dcd338361273c565b7f29e90a65bdaddba77321b34070d4cd09a4d33ccf332d7760c852917757eed3cb3383604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b601c60205280600052604060002060009150905080600001549080600101549080600201549080600301549080600401549080600501549080600601549080600701549080600801549080600901549080600a01549080600b015490508c565b60188181548110611e9357fe5b906000526020600020016000915090505481565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b600f5481565b6000806000601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090505b6000811115611fe6576000601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001830381548110611f9c57fe5b906000526020600020906004020190504281600201541115611fd1578281600001541115611fcc57806000015492505b611fd7565b50611fe6565b50808060019003915050611f44565b5080915050919050565b60178181548110611ffd57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060126000838152602001908152602001600020805490509050919050565b6000828211156120c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600080821161214c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b600082848161215757fe5b0490508091505092915050565b61217c62015180600e5461234b90919063ffffffff16565b4211156121aa57600061218d610b41565b905061219881612e63565b6121a1816131aa565b42600e81905550505b565b6000806000601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816001015490506000612226612710612218610bb8856134be90919063ffffffff16565b6120d590919063ffffffff16565b9050600061223d828461204c90919063ffffffff16565b905080829550955050505050915091565b6000806000601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006122c782600701546122b98460040154856002015461234b90919063ffffffff16565b61234b90919063ffffffff16565b90506122f66122e78360090154846008015461234b90919063ffffffff16565b8261234b90919063ffffffff16565b90506000612323612710612315610bb8856134be90919063ffffffff16565b6120d590919063ffffffff16565b9050600061233a828461204c90919063ffffffff16565b905080829550955050505050915091565b6000808284019050838110156123c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060005b600a8110156126ac57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461269a576124d56001601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015461234b90919063ffffffff16565b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050181905550601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828152602001908152602001600020849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506125d582613544565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612630576126ac565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915061269f565b6126ac565b8080600101915050612442565b50505050565b60008082141561272a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f536166654d6174683a206d6f64756c6f206279207a65726f000000000000000081525060200191505060405180910390fd5b81838161273357fe5b06905092915050565b6000601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f726567697374657220666972737400000000000000000000000000000000000081525060200191505060405180910390fd5b6305f5e1008210156128c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6c657373207468616e206d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b63ee6b280082111561293a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6d6f7265207468616e206d61780000000000000000000000000000000000000081525060200191505060405180910390fd5b60006129536305f5e100846126b290919063ffffffff16565b14801561296457506305f5e1008210155b6129d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260078152602001807f6d6f64206572720000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000816003015414806129ed575080600301548210155b612a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f6c657373206265666f726500000000000000000000000000000000000000000081525060200191505060405180910390fd5b600081600301541415612a7a57818160030181905550612a9a565b8181600301541015612a99578181600301819055508181600601819055505b5b612aa38261361c565b600081600401541415612b9b576000612aba610b41565b905060126000828152602001908152602001600020849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060136000828152602001908152602001600020839080600181540180825580915050600190039060005260206000200160009091909190915055612b998260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684836138fa565b505b6017839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612c1582826004015461234b90919063ffffffff16565b8160040181905550612c3482826008015461234b90919063ffffffff16565b8160080181905550612c4533613544565b6000612cb262015180612ca46002601660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506120d590919063ffffffff16565b6134be90919063ffffffff16565b9050623b5380811115612cc657623b538090505b6000612cf082612ce26213c6804261234b90919063ffffffff16565b61234b90919063ffffffff16565b9050601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806080016040528086815260200142815260200183815260200160001515815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff021916908315150217905550505060186001601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050039080600181540180825580915050600190039060005260206000200160009091909190915055612e363385613bbf565b612e3e612164565b612e483385613ffc565b612e52338561422a565b612e5c33856146bf565b5050505050565b60006012600060018403815260200190815260200160002080549050905060008111156131a6576000600a9050600a821015612e9d578190505b60008060008490505b612eb9848661204c90919063ffffffff16565b811115612f1157612f01601360006001890381526020019081526020016000206001830381548110612ee757fe5b90600052602060002001548461234b90919063ffffffff16565b9250808060019003915050612ea6565b5060008490505b612f2b848661204c90919063ffffffff16565b81111561316e576000601260006001890381526020019081526020016000206001830381548110612f5857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461315f576000613010856130026013600060018d0381526020019081526020016000206001870381548110612fe657fe5b90600052602060002001546010546134be90919063ffffffff16565b6120d590919063ffffffff16565b9050613025818561234b90919063ffffffff16565b935061307c81601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008015461234b90919063ffffffff16565b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008018190555061311781601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206009015461234b90919063ffffffff16565b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060090181905550505b50808060019003915050612f18565b508060105411156131995761318e8160105461204c90919063ffffffff16565b6010819055506131a2565b60006010819055505b5050505b5050565b6131b2615149565b604051806060016040528061138861ffff168152602001610bb861ffff1681526020016107d061ffff1681525090506131e961516b565b604051806060016040528063ee6b280063ffffffff168152602001637735940063ffffffff168152602001633b9aca0063ffffffff168152509050600080600090505b600381101561348457600060146000600188038152602001908152602001600020826003811061325857fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146134765760006132ef6127106132e18886600381106132c757fe5b602002015161ffff166011546134be90919063ffffffff16565b6120d590919063ffffffff16565b90508483600381106132fd57fe5b602002015163ffffffff168111156133295784836003811061331b57fe5b602002015163ffffffff1690505b61337e81601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206009015461234b90919063ffffffff16565b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206009018190555061341981601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206009015461234b90919063ffffffff16565b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060090181905550613472818561234b90919063ffffffff16565b9350505b50808060010191505061322c565b508060115411156134af576134a48160115461204c90919063ffffffff16565b6011819055506134b8565b60006011819055505b50505050565b6000808314156134d1576000905061353e565b60008284029050828482816134e257fe5b0414613539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061518e6021913960400191505060405180910390fd5b809150505b92915050565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600061359283614b38565b90508160020154811115613617578082600201819055506004811415613616576015839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b505050565b600061364661271061363860c8856134be90919063ffffffff16565b6120d590919063ffffffff16565b905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600a60006002811061369257fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166136c86002856120d590919063ffffffff16565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561371b57600080fd5b505af115801561372f573d6000803e3d6000fd5b505050506040513d602081101561374557600080fd5b81019080805190602001909291905050505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600a6001600281106137a157fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166137d76002856120d590919063ffffffff16565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561382a57600080fd5b505af115801561383e573d6000803e3d6000fd5b505050506040513d602081101561385457600080fd5b81019080805190602001909291905050505060006138906127106138826032866134be90919063ffffffff16565b6120d590919063ffffffff16565b90506138a78160105461234b90919063ffffffff16565b60108190555060006138d76127106138c96032876134be90919063ffffffff16565b6120d590919063ffffffff16565b90506138ee8160115461234b90919063ffffffff16565b60118190555050505050565b61395d82601a600084815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234b90919063ffffffff16565b601a600083815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600080600090505b6003811015613a5b5760006014600085815260200190815260200160002082600381106139e257fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613a4d57613a4384614c63565b6001925050613a5b565b5080806001019150506139b9565b5080613bb957600060146000848152602001908152602001600020600260038110613a8257fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050601a600084815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601a600085815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613bb7578460146000858152602001908152602001600020600260038110613b6e57fe5b0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613bb683614c63565b5b505b50505050565b6000601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600080600090505b601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015613f27576000601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110613ca057fe5b90600052602060002090600402019050806002015442118015613cd85750600015158160030160009054906101000a900460ff161515145b8015613ce8575080600001548510155b15613f195760018160030160006101000a81548160ff02191690831515021790555060019250806000015484600801541115613d4657613d398160000154856008015461204c90919063ffffffff16565b8460080181905550613d51565b600084600801819055505b613d5f868260000154614e8c565b6000613db7612710613da962015180613d9b6213c680613d8d609689600001546134be90919063ffffffff16565b6134be90919063ffffffff16565b6120d590919063ffffffff16565b6120d590919063ffffffff16565b9050613e128260000154601c60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461234b90919063ffffffff16565b601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550613ead81601c60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461234b90919063ffffffff16565b601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550613f0a81866009015461234b90919063ffffffff16565b85600901819055505050613f27565b508080600101915050613c0a565b5080613ff6576000601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600601541115613ff457600084905081600601548510613f9557816006015490505b613fac81836006015461204c90919063ffffffff16565b8260060181905550613fcb81836007015461234b90919063ffffffff16565b8260070181905550613fea81856009015461234b90919063ffffffff16565b8460090181905550505b505b50505050565b6000601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060005b600a81101561422357600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614614211576140fd84601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007015461234b90919063ffffffff16565b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007018190555061414c82613544565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156141a757614223565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150614216565b614223565b808060010191505061406b565b5050505050565b6000601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060005b600a8110156146b857600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146146a6576000849050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461434b57600061433b84611ef9565b905085811015614349578091505b505b6000601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006004841115614442576004601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154111561443d5761441b61271061440d6005808803600581106143fc57fe5b0154866134be90919063ffffffff16565b6120d590919063ffffffff16565b905061443481836006015461234b90919063ffffffff16565b82600601819055505b6145db565b60008411156144f4576003601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015411156144ef576144cd6127106144bf6001808803600481106144ae57fe5b0154866134be90919063ffffffff16565b6120d590919063ffffffff16565b90506144e681836003015461234b90919063ffffffff16565b82600301819055505b6145da565b61451d61271061450f6101f4866134be90919063ffffffff16565b6120d590919063ffffffff16565b905061453681836002015461234b90919063ffffffff16565b826002018190555061459381601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206009015461234b90919063ffffffff16565b601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600901819055505b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415614639575050506146b8565b601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1694505050506146ab565b6146b8565b8080600101915050614299565b5050505050565b6000601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060005b600a811015614b3157600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614614b1f576000849050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146147e05760006147d084611ef9565b9050858110156147de578091505b505b6000601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000831180156148335750600583105b801561488157506003601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154115b156149be576000816003015411156149bd5760006148cc6127106148be6001808803600481106148ad57fe5b0154866134be90919063ffffffff16565b6120d590919063ffffffff16565b905081600301548111156148e257816003015490505b6148f981836003015461204c90919063ffffffff16565b826003018190555061491881836004015461234b90919063ffffffff16565b826004018190555061497581601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206009015461234b90919063ffffffff16565b601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060090181905550505b5b60058310158015614a1157506004601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154115b15614ab357600081600501541115614ab2576000614a5c612710614a4e600580880360058110614a3d57fe5b0154866134be90919063ffffffff16565b6120d590919063ffffffff16565b90508160050154811115614a7257816005015490505b614a8981836005015461204c90919063ffffffff16565b8260050181905550614aa881836006015461234b90919063ffffffff16565b8260060181905550505b5b601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693505050614b24565b614b31565b808060010191505061472e565b5050505050565b600080601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600401549050600063773594008210614c3257600080614b9e87611661565b509150915063ee6b28008410158015614bbc57506064856005015410155b8015614bcd5750640ba43b74008210155b8015614bde5750640ba43b74008110155b15614bec5760059250614c2b565b6032856005015410158015614c0657506404a817c8008210155b8015614c1757506404a817c8008110155b15614c255760049250614c2a565b600392505b5b5050614c58565b633b9aca008210614c465760029050614c57565b6305f5e1008210614c5657600190505b5b5b809350505050919050565b6000600390505b6001811115614e88576000601460008481526020019081526020016000206001830360038110614c9657fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000601460008581526020019081526020016000206002840360038110614cdd57fe5b0160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000601a600086815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000601a600087815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080821115614e765782601460008881526020019081526020016000206001870360038110614dd557fe5b0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601460008881526020019081526020016000206002870360038110614e3657fe5b0160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50505050808060019003915050614c6a565b5050565b6000601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060005b600a81101561514257600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146151305783601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154111561502257614fd784601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007015461204c90919063ffffffff16565b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007018190555061506b565b6000601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701819055505b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156150c657615142565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150615135565b615142565b8080600101915050614efb565b5050505050565b6040518060600160405280600390602082028036833780820191505090505090565b604051806060016040528060039060208202803683378082019150509050509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212209d1a2323e65262c8a2b994073b00729ba41af3e61e7cf67e587170014608c89d64736f6c634300060c0033000000000000000000000000c2132d05d31c914a87c6611c10748aeb04b58e8f0000000000000000000000005e2db5f9611631dcd89ecd19c86ac8d8691beea1000000000000000000000000ed946a637e19eb3ec1e30c1ff3b64d3cff692c130000000000000000000000009a75fb4fd386049d138ac947608c56203325ddec

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

000000000000000000000000c2132d05d31c914a87c6611c10748aeb04b58e8f0000000000000000000000005e2db5f9611631dcd89ecd19c86ac8d8691beea1000000000000000000000000ed946a637e19eb3ec1e30c1ff3b64d3cff692c130000000000000000000000009a75fb4fd386049d138ac947608c56203325ddec

-----Decoded View---------------
Arg [0] : _usdtAddr (address): 0xc2132d05d31c914a87c6611c10748aeb04b58e8f
Arg [1] : _defaultRefer (address): 0x5e2db5f9611631dcd89ecd19c86ac8d8691beea1
Arg [2] : _feeReceivers (address[2]): 0xed946a637e19eb3ec1e30c1ff3b64d3cff692c13,0x9a75fb4fd386049d138ac947608c56203325ddec

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000c2132d05d31c914a87c6611c10748aeb04b58e8f
Arg [1] : 0000000000000000000000005e2db5f9611631dcd89ecd19c86ac8d8691beea1
Arg [2] : 000000000000000000000000ed946a637e19eb3ec1e30c1ff3b64d3cff692c13
Arg [3] : 0000000000000000000000009a75fb4fd386049d138ac947608c56203325ddec


Deployed ByteCode Sourcemap

2331:23949:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8604:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4280:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3425:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2385:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9147:105;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7574:1022;;;:::i;:::-;;5533:475;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3327:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10416:311;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3223:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3802:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4329:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3395:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6743:517;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4432:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3571:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9770:638;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3296:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3456:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3262:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3510:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3627:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8864:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6016:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6223:512;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4875:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3894:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9019:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3363:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9260:502;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3860:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8734:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8604;8645:7;8672:46;2707:6;8673:30;8693:9;;8673:15;:19;;:30;;;;:::i;:::-;8672:36;;:46;;;;:::i;:::-;8665:53;;8604:122;:::o;4280:42::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3425:22::-;;;;:::o;2385:18::-;;;;;;;;;;;;:::o;9147:105::-;9200:7;9227:10;:17;;;;9220:24;;9147:105;:::o;7574:1022::-;7614:23;:21;:23::i;:::-;7649:20;7671:19;7694:32;7715:10;7694:20;:32::i;:::-;7648:78;;;;7737:16;7756:11;7737:30;;7778:20;7801:12;7778:35;;7827:21;7850:20;7874:33;7896:10;7874:21;:33::i;:::-;7826:81;;;;7933:31;7950:13;7933:12;:16;;:31;;;;:::i;:::-;7918:46;;7986:26;7999:12;7986:8;:12;;:26;;;;:::i;:::-;7975:37;;8025:30;8058:10;:22;8069:10;8058:22;;;;;;;;;;;;;;;8025:55;;8111:31;8133:8;8111:11;:17;;;:21;;:31;;;;:::i;:::-;8091:11;:17;;:51;;;;8177:1;8155:11;:19;;:23;;;;8213:1;8191:11;:19;;:23;;;;8254:1;8225:11;:26;;:30;;;;8295:1;8266:11;:26;;:30;;;;8336:1;8317:11;:16;;:20;;;;8366:1;8348:11;:15;;:19;;;;8403:38;8420:11;:20;;;8403:12;:16;;:38;;;;:::i;:::-;8388:53;;8475:1;8452:11;:20;;:24;;;;8497:4;;;;;;;;;;:13;;;8511:10;8523:12;8497:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8554:34;8563:10;8575:12;8554:34;;;;;;;;;;;;;;;;;;;;;;;;;;7574:1022;;;;;;;:::o;5533:475::-;5633:1;5598:8;:19;5607:9;5598:19;;;;;;;;;;;;;;;:32;;;:36;:65;;;;5651:12;;;;;;;;;;;5638:25;;:9;:25;;;5598:65;5590:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5692:21;5716:8;:20;5725:10;5716:20;;;;;;;;;;;;;;;5692:44;;5780:1;5755:27;;:4;:13;;;;;;;;;;;;:27;;;5747:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5829:9;5813:4;:13;;;:25;;;;;;;;;;;;;;;;;;5862:15;5849:4;:10;;:28;;;;5888:26;5903:10;5888:14;:26::i;:::-;5937:16;5951:1;5937:9;;:13;;:16;;;;:::i;:::-;5925:9;:28;;;;5969:31;5978:10;5990:9;5969:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;5533:475;;:::o;3327:29::-;;;;:::o;10416:311::-;10472:7;10494:19;10517:27;10538:5;10517:20;:27::i;:::-;10491:53;;;10558:20;10582:28;10604:5;10582:21;:28::i;:::-;10555:55;;;10628:91;10691:10;:17;10702:5;10691:17;;;;;;;;;;;;;;;:27;;;10628:58;10673:12;10628:40;10656:11;10628:10;:17;10639:5;10628:17;;;;;;;;;;;;;;;:23;;;:27;;:40;;;;:::i;:::-;:44;;:58;;;;:::i;:::-;:62;;:91;;;;:::i;:::-;10621:98;;;;10416:311;;;:::o;3223:30::-;;;;;;;;;;;;;;;;;;;;;;;:::o;3802:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4329:75::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3395:23::-;;;;:::o;6743:517::-;2549:5;6832:7;:21;;:53;;;;;6884:1;6857:23;2549:5;6857:7;:11;;:23;;;;:::i;:::-;:28;6832:53;6824:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6911:17;6931:23;6943:10;6931:11;:23::i;:::-;6911:43;;6986:7;6973:9;:20;;6965:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7063:45;7100:7;7063:10;:22;7074:10;7063:22;;;;;;;;;;;;;;;:32;;;:36;;:45;;;;:::i;:::-;7028:10;:22;7039:10;7028:22;;;;;;;;;;;;;;;:32;;:80;;;;7149:40;7181:7;7149:10;:21;7160:9;7149:21;;;;;;;;;;;;;;;:27;;;:31;;:40;;;;:::i;:::-;7119:10;:21;7130:9;7119:21;;;;;;;;;;;;;;;:27;;:70;;;;7205:47;7221:10;7233:9;7244:7;7205:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6743:517;;;:::o;4432:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3571:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9770:638::-;9829:7;9838;9847;9866:17;9894:15;9920:17;9952:9;9948:360;9971:9;:16;9981:5;9971:16;;;;;;;;;;;;;;;:19;9988:1;9971:19;;;;;;;;;;;:26;;;;9967:1;:30;9948:360;;;10018:21;10042:100;10096:8;:32;10105:9;:16;10115:5;10105:16;;;;;;;;;;;;;;;:19;10122:1;10105:19;;;;;;;;;;;10125:1;10105:22;;;;;;;;;;;;;;;;;;;;;;;;;10096:32;;;;;;;;;;;;;;;:45;;;10042:8;:32;10051:9;:16;10061:5;10051:16;;;;;;;;;;;;;;;:19;10068:1;10051:19;;;;;;;;;;;10071:1;10051:22;;;;;;;;;;;;;;;;;;;;;;;;;10042:32;;;;;;;;;;;;;;;:49;;;:53;;:100;;;;:::i;:::-;10018:124;;10169:28;10183:13;10169:9;:13;;:28;;;;:::i;:::-;10157:40;;10231:7;10215:13;:23;10212:85;;;10268:13;10258:23;;10212:85;9948:360;9999:3;;;;;;;9948:360;;;;10330:22;10344:7;10330:9;:13;;:22;;;;:::i;:::-;10318:34;;10370:7;10379:9;10390;10363:37;;;;;;;;;9770:638;;;;;:::o;3296:24::-;;;;:::o;3456:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3262:27::-;;;;;;;;;;;;;:::o;3510:54::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3627:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8864:147::-;8945:7;8972:9;:16;8982:5;8972:16;;;;;;;;;;;;;;;:24;8989:6;8972:24;;;;;;;;;;;:31;;;;8965:38;;8864:147;;;;:::o;6016:199::-;6070:4;;;;;;;;;;:17;;;6088:10;6108:4;6115:7;6070:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6134:29;6143:10;6155:7;6134:8;:29::i;:::-;6179:28;6187:10;6199:7;6179:28;;;;;;;;;;;;;;;;;;;;;;;;;;6016:199;:::o;6223:512::-;2549:5;6292:7;:21;;:53;;;;;6344:1;6317:23;2549:5;6317:7;:11;;:23;;;;:::i;:::-;:28;6292:53;6284:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6416:1;6379:8;:20;6388:10;6379:20;;;;;;;;;;;;;;;:33;;;:38;6371:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6440:17;6460:23;6472:10;6460:11;:23::i;:::-;6440:43;;6515:7;6502:9;:20;;6494:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:45;6628:7;6591:10;:22;6602:10;6591:22;;;;;;;;;;;;;;;:32;;;:36;;:45;;;;:::i;:::-;6556:10;:22;6567:10;6556:22;;;;;;;;;;;;;;;:32;;:80;;;;6647:29;6656:10;6668:7;6647:8;:29::i;:::-;6692:35;6707:10;6719:7;6692:35;;;;;;;;;;;;;;;;;;;;;;;;;;6223:512;;:::o;4875:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3894:32::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9019:120::-;9080:7;9107:10;:17;9118:5;9107:17;;;;;;;;;;;;;;;:24;;;;9100:31;;9019:120;;;:::o;3363:24::-;;;;:::o;9260:502::-;9319:7;9339:19;9373:9;9385:10;:17;9396:5;9385:17;;;;;;;;;;;;;;;:24;;;;9373:36;;9369:357;9415:1;9411;:5;9369:357;;;9437:23;9463:10;:17;9474:5;9463:17;;;;;;;;;;;;;;;9485:1;9481;:5;9463:24;;;;;;;;;;;;;;;;;;9437:50;;9522:15;9505:5;:14;;;:32;9502:213;;;9575:11;9560:5;:12;;;:26;9557:99;;;9624:5;:12;;;9610:26;;9557:99;9502:213;;;9694:5;;;9502:213;9369:357;9418:3;;;;;;;;9369:357;;;;9743:11;9736:18;;;9260:502;;;:::o;3860:27::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8734:122::-;8796:7;8823:12;:18;8836:4;8823:18;;;;;;;;;;;:25;;;;8816:32;;8734:122;;;:::o;1160:184::-;1218:7;1251:1;1246;:6;;1238:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1298:9;1314:1;1310;:5;1298:17;;1335:1;1328:8;;;1160:184;;;;:::o;1831:333::-;1889:7;1988:1;1984;:5;1976:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2031:9;2047:1;2043;:5;;;;;;2031:17;;2155:1;2148:8;;;1831:333;;;;:::o;7268:298::-;7341:28;2707:6;7341:14;;:18;;:28;;;;:::i;:::-;7323:15;:46;7320:239;;;7385:14;7402:11;:9;:11::i;:::-;7385:28;;7430:27;7450:6;7430:19;:27::i;:::-;7474:26;7493:6;7474:18;:26::i;:::-;7532:15;7515:14;:32;;;;7320:239;;7268:298::o;10735:392::-;10801:7;10810;10830:30;10863:10;:17;10874:5;10863:17;;;;;;;;;;;;;;;10830:50;;10891:20;10914:11;:19;;;10891:42;;10944:16;10963:55;2449:5;10963:38;2660:4;10963:12;:16;;:38;;;;:::i;:::-;:42;;:55;;;;:::i;:::-;10944:74;;11029:20;11052:26;11069:8;11052:12;:16;;:26;;;;:::i;:::-;11029:49;;11096:12;11110:8;11089:30;;;;;;;;10735:392;;;:::o;11135:538::-;11202:7;11211;11231:30;11264:10;:17;11275:5;11264:17;;;;;;;;;;;;;;;11231:50;;11292:20;11315:83;11371:11;:26;;;11315:51;11339:11;:26;;;11315:11;:19;;;:23;;:51;;;;:::i;:::-;:55;;:83;;;;:::i;:::-;11292:106;;11424:55;11441:37;11462:11;:15;;;11441:11;:16;;;:20;;:37;;;;:::i;:::-;11424:12;:16;;:55;;;;:::i;:::-;11409:70;;11490:16;11509:55;2449:5;11509:38;2660:4;11509:12;:16;;:38;;;;:::i;:::-;:42;;:55;;;;:::i;:::-;11490:74;;11575:20;11598:26;11615:8;11598:12;:16;;:26;;;;:::i;:::-;11575:49;;11642:12;11656:8;11635:30;;;;;;;;11135:538;;;:::o;971:181::-;1029:7;1049:9;1065:1;1061;:5;1049:17;;1090:1;1085;:6;;1077:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1143:1;1136:8;;;971:181;;;;:::o;11681:576::-;11739:21;11763:8;:15;11772:5;11763:15;;;;;;;;;;;;;;;11739:39;;11789:14;11806:4;:13;;;;;;;;;;;;11789:30;;11834:9;11830:420;2920:2;11849:1;:14;11830:420;;;11905:1;11887:20;;:6;:20;;;11884:355;;11954:31;11983:1;11954:8;:16;11963:6;11954:16;;;;;;;;;;;;;;;:24;;;:28;;:31;;;;:::i;:::-;11927:8;:16;11936:6;11927:16;;;;;;;;;;;;;;;:24;;:58;;;;12004:9;:17;12014:6;12004:17;;;;;;;;;;;;;;;:20;12022:1;12004:20;;;;;;;;;;;12030:5;12004:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12055:20;12068:6;12055:12;:20::i;:::-;12107:12;;;;;;;;;;;12097:22;;:6;:22;;;12094:32;;;12121:5;;12094:32;12154:8;:16;12163:6;12154:16;;;;;;;;;;;;;;;:25;;;;;;;;;;;;12145:34;;11884:355;;;12218:5;;11884:355;11865:3;;;;;;;11830:420;;;;11681:576;;;:::o;2172:152::-;2230:7;2263:1;2258;:6;;2250:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2315:1;2311;:5;;;;;;2304:12;;2172:152;;;;:::o;15993:1904::-;16062:21;16086:8;:15;16095:5;16086:15;;;;;;;;;;;;;;;16062:39;;16145:1;16120:27;;:4;:13;;;;;;;;;;;;:27;;;;16112:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2549:5;16185:7;:21;;16177:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2599:6;16243:7;:21;;16235:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16328:1;16301:23;2549:5;16301:7;:11;;:23;;;;:::i;:::-;:28;:53;;;;;2549:5;16333:7;:21;;16301:53;16293:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16404:1;16385:4;:15;;;:20;:50;;;;16420:4;:15;;;16409:7;:26;;16385:50;16377:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16486:1;16467:4;:15;;;:20;16464:208;;;16521:7;16503:4;:15;;:25;;;;16464:208;;;16566:7;16548:4;:15;;;:25;16545:127;;;16607:7;16589:4;:15;;:25;;;;16653:7;16629:4;:21;;:31;;;;16545:127;16464:208;16684:27;16703:7;16684:18;:27::i;:::-;16748:1;16727:4;:17;;;:22;16724:247;;;16765:14;16782:11;:9;:11::i;:::-;16765:28;;16808:12;:20;16821:6;16808:20;;;;;;;;;;;16834:5;16808:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16855:19;:27;16875:6;16855:27;;;;;;;;;;;16888:7;16855:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16913:46;16928:4;:13;;;;;;;;;;;;16943:7;16952:6;16913:14;:46::i;:::-;16724:247;;16983:10;16999:5;16983:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17046:30;17068:7;17046:4;:17;;;:21;;:30;;;;:::i;:::-;17026:4;:17;;:50;;;;17107:30;17129:7;17107:4;:17;;;:21;;:30;;;;:::i;:::-;17087:4;:17;;:50;;;;17150:24;17163:10;17150:12;:24::i;:::-;17187:17;17207:47;2707:6;17208:31;17237:1;17208:10;:17;17219:5;17208:17;;;;;;;;;;;;;;;:24;;;;:28;;:31;;;;:::i;:::-;17207:37;;:47;;;;:::i;:::-;17187:67;;2868:7;17268:9;:24;17265:79;;;2868:7;17308:24;;17265:79;17354:20;17377:47;17414:9;17377:32;2759:7;17377:15;:19;;:32;;;;:::i;:::-;:36;;:47;;;;:::i;:::-;17354:70;;17435:10;:17;17446:5;17435:17;;;;;;;;;;;;;;;17458:121;;;;;;;;17482:7;17458:121;;;;17505:15;17458:121;;;;17536:12;17458:121;;;;17563:5;17458:121;;;;;17435:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17593:15;17639:1;17614:10;:17;17625:5;17614:17;;;;;;;;;;;;;;;:24;;;;:26;17593:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17654:49;17683:10;17695:7;17654:28;:49::i;:::-;17716:23;:21;:23::i;:::-;17752:37;17769:10;17781:7;17752:16;:37::i;:::-;17802:34;17816:10;17828:7;17802:13;:34::i;:::-;17849:38;17867:10;17879:7;17849:17;:38::i;:::-;15993:1904;;;;;:::o;19764:1340::-;19829:23;19855:12;:25;19878:1;19868:7;:11;19855:25;;;;;;;;;;;:32;;;;19829:58;;19919:1;19901:15;:19;19898:1199;;;19936:18;19957:2;19936:23;;19995:2;19977:15;:20;19974:87;;;20030:15;20017:28;;19974:87;20075:20;20110:19;20148:9;20160:15;20148:27;;20144:181;20181:31;20201:10;20181:15;:19;;:31;;;;:::i;:::-;20177:1;:35;20144:181;;;20252:57;20269:19;:32;20299:1;20289:7;:11;20269:32;;;;;;;;;;;20306:1;20302;:5;20269:39;;;;;;;;;;;;;;;;20252:12;:16;;:57;;;;:::i;:::-;20237:72;;20214:3;;;;;;;;20144:181;;;;20345:9;20357:15;20345:27;;20341:583;20378:31;20398:10;20378:15;:19;;:31;;;;:::i;:::-;20374:1;:35;20341:583;;;20434:16;20453:12;:25;20476:1;20466:7;:11;20453:25;;;;;;;;;;;20483:1;20479;:5;20453:32;;;;;;;;;;;;;;;;;;;;;;;;;20434:51;;20527:1;20507:22;;:8;:22;;;20504:405;;20553:14;20570:71;20628:12;20570:53;20583:19;:32;20613:1;20603:7;:11;20583:32;;;;;;;;;;;20620:1;20616;:5;20583:39;;;;;;;;;;;;;;;;20570:8;;:12;;:53;;;;:::i;:::-;:57;;:71;;;;:::i;:::-;20553:88;;20678:23;20694:6;20678:11;:15;;:23;;;;:::i;:::-;20664:37;;20752;20782:6;20752:10;:20;20763:8;20752:20;;;;;;;;;;;;;;;:25;;;:29;;:37;;;;:::i;:::-;20724:10;:20;20735:8;20724:20;;;;;;;;;;;;;;;:25;;:65;;;;20846:43;20882:6;20846:8;:18;20855:8;20846:18;;;;;;;;;;;;;;;:31;;;:35;;:43;;;;:::i;:::-;20812:8;:18;20821:8;20812:18;;;;;;;;;;;;;;;:31;;:77;;;;20504:405;;20341:583;20411:3;;;;;;;;20341:583;;;;20952:11;20941:8;;:22;20938:148;;;20994:25;21007:11;20994:8;;:12;;:25;;;;:::i;:::-;20983:8;:36;;;;20938:148;;;21069:1;21058:8;:12;;;;20938:148;19898:1199;;;;19764:1340;;:::o;21112:931::-;21176:22;;:::i;:::-;:43;;;;;;;;21202:4;21176:43;;;;;;21208:4;21176:43;;;;;;21214:4;21176:43;;;;;;;21230:26;;:::i;:::-;:53;;;;;;;;21260:6;21230:53;;;;;;21268:6;21230:53;;;;;;21276:6;21230:53;;;;;;;21294:19;21328:9;21340:1;21328:13;;21324:574;21347:1;21343;:5;21324:574;;;21369:16;21388:11;:24;21410:1;21400:7;:11;21388:24;;;;;;;;;;;21413:1;21388:27;;;;;;;;;;;;;;;;;;21369:46;;21453:1;21433:22;;:8;:22;;;21430:457;;21475:14;21492:38;2449:5;21492:21;21504:5;21510:1;21504:8;;;;;;;;;;;21492:21;;:7;;:11;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;21475:55;;21561:9;21571:1;21561:12;;;;;;;;;;;21552:21;;:6;:21;21549:89;;;21606:9;21616:1;21606:12;;;;;;;;;;;21597:21;;;;21549:89;21683:36;21712:6;21683:10;:20;21694:8;21683:20;;;;;;;;;;;;;;;:24;;;:28;;:36;;;;:::i;:::-;21656:10;:20;21667:8;21656:20;;;;;;;;;;;;;;;:24;;:63;;;;21772:43;21808:6;21772:8;:18;21781:8;21772:18;;;;;;;;;;;;;;;:31;;;:35;;:43;;;;:::i;:::-;21738:8;:18;21747:8;21738:18;;;;;;;;;;;;;;;:31;;:77;;;;21848:23;21864:6;21848:11;:15;;:23;;;;:::i;:::-;21834:37;;21430:457;;21324:574;21350:3;;;;;;;21324:574;;;;21921:11;21911:7;;:21;21908:128;;;21958:24;21970:11;21958:7;;:11;;:24;;;;:::i;:::-;21948:7;:34;;;;21908:128;;;22023:1;22013:7;:11;;;;21908:128;21112:931;;;;:::o;1352:471::-;1410:7;1660:1;1655;:6;1651:47;;;1685:1;1678:8;;;;1651:47;1710:9;1726:1;1722;:5;1710:17;;1755:1;1750;1746;:5;;;;;;:10;1738:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1814:1;1807:8;;;1352:471;;;;;:::o;14866:324::-;14922:21;14946:8;:15;14955:5;14946:15;;;;;;;;;;;;;;;14922:39;;14972:16;14991:19;15004:5;14991:12;:19::i;:::-;14972:38;;15035:4;:10;;;15024:8;:21;15021:162;;;15074:8;15061:4;:10;;:21;;;;15112:1;15100:8;:13;15097:75;;;15133:11;15150:5;15133:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15097:75;15021:162;14866:324;;;:::o;22051:452::-;22115:11;22129:41;2449:5;22129:24;2500:3;22129:7;:11;;:24;;;;:::i;:::-;:28;;:41;;;;:::i;:::-;22115:55;;22181:4;;;;;;;;;;:13;;;22195:12;22208:1;22195:15;;;;;;;;;;;;;;;;;;22212:10;22220:1;22212:3;:7;;:10;;;;:::i;:::-;22181:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22234:4;;;;;;;;;;:13;;;22248:12;22261:1;22248:15;;;;;;;;;;;;;;;;;;22265:10;22273:1;22265:3;:7;;:10;;;;:::i;:::-;22234:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22287:12;22302:46;2449:5;22302:29;3160:2;22302:7;:11;;:29;;;;:::i;:::-;:33;;:46;;;;:::i;:::-;22287:61;;22370:18;22383:4;22370:8;;:12;;:18;;;;:::i;:::-;22359:8;:29;;;;22399:11;22413:45;2449:5;22413:28;3212:2;22413:7;:11;;:28;;;;:::i;:::-;:32;;:45;;;;:::i;:::-;22399:59;;22479:16;22491:3;22479:7;;:11;;:16;;;;:::i;:::-;22469:7;:26;;;;22051:452;;;;:::o;12265:757::-;12396:49;12437:7;12396:20;:29;12417:7;12396:29;;;;;;;;;;;:36;12426:5;12396:36;;;;;;;;;;;;;;;;:40;;:49;;;;:::i;:::-;12357:20;:29;12378:7;12357:29;;;;;;;;;;;:36;12387:5;12357:36;;;;;;;;;;;;;;;:88;;;;12456:12;12483:9;12495:1;12483:13;;12479:244;12502:1;12498;:5;12479:244;;;12524:15;12542:11;:20;12554:7;12542:20;;;;;;;;;;;12563:1;12542:23;;;;;;;;;;;;;;;;;;12524:41;;12594:5;12583:16;;:7;:16;;;12580:132;;;12619:20;12631:7;12619:11;:20::i;:::-;12668:4;12658:14;;12691:5;;;12580:132;12479:244;12505:3;;;;;;;12479:244;;;;12737:7;12733:282;;12760:16;12779:11;:20;12791:7;12779:20;;;;;;;;;;;12800:1;12779:23;;;;;;;;;;;;;;;;;;12760:42;;12862:20;:29;12883:7;12862:29;;;;;;;;;;;:36;12892:5;12862:36;;;;;;;;;;;;;;;;12820:20;:29;12841:7;12820:29;;;;;;;;;;;:39;12850:8;12820:39;;;;;;;;;;;;;;;;:78;12817:187;;;12944:5;12918:11;:20;12930:7;12918:20;;;;;;;;;;;12939:1;12918:23;;;;;;;;;:31;;;;;;;;;;;;;;;;;;12968:20;12980:7;12968:11;:20::i;:::-;12817:187;12733:282;;12265:757;;;;:::o;17905:1851::-;17994:21;18018:8;:15;18027:5;18018:15;;;;;;;;;;;;;;;17994:39;;18044:22;18081:9;18093:1;18081:13;;18077:1084;18100:10;:17;18111:5;18100:17;;;;;;;;;;;;;;;:24;;;;18096:1;:28;18077:1084;;;18145:23;18171:10;:17;18182:5;18171:17;;;;;;;;;;;;;;;18189:1;18171:20;;;;;;;;;;;;;;;;;;18145:46;;18227:5;:14;;;18209:15;:32;:63;;;;;18267:5;18246:26;;:5;:17;;;;;;;;;;;;:26;;;18209:63;:90;;;;;18287:5;:12;;;18276:7;:23;;18209:90;18206:944;;;18339:4;18319:5;:17;;;:24;;;;;;;;;;;;;;;;;;18382:4;18362:24;;18446:5;:12;;;18426:4;:17;;;:32;18423:202;;;18502:35;18524:5;:12;;;18502:4;:17;;;:21;;:35;;;;:::i;:::-;18482:4;:17;;:55;;;;18423:202;;;18604:1;18584:4;:17;;:21;;;;18423:202;18661:42;18683:5;18690;:12;;;18661:21;:42::i;:::-;18724:20;18747:83;2449:5;18747:66;2707:6;18747:52;2759:7;18747:35;2818:3;18747:5;:12;;;:16;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:66;;;;:::i;:::-;:70;;:83;;;;:::i;:::-;18724:106;;18880:44;18911:5;:12;;;18880:10;:17;18891:5;18880:17;;;;;;;;;;;;;;;:26;;;:30;;:44;;;;:::i;:::-;18851:10;:17;18862:5;18851:17;;;;;;;;;;;;;;;:26;;:73;;;;18973:43;19003:12;18973:10;:17;18984:5;18973:17;;;;;;;;;;;;;;;:25;;;:29;;:43;;;;:::i;:::-;18945:10;:17;18956:5;18945:17;;;;;;;;;;;;;;;:25;;:71;;;;19073:35;19095:12;19073:4;:17;;;:21;;:35;;;;:::i;:::-;19053:4;:17;;:55;;;;19129:5;;;;18206:944;18077:1084;18126:3;;;;;;;18077:1084;;;;19177:17;19173:576;;19211:29;19243:10;:17;19254:5;19243:17;;;;;;;;;;;;;;;19211:49;;19305:1;19278:10;:24;;;:28;19275:463;;;19326:15;19344:7;19326:25;;19384:10;:24;;;19373:7;:35;19370:116;;19442:10;:24;;;19432:34;;19370:116;19531:37;19560:7;19531:10;:24;;;:28;;:37;;;;:::i;:::-;19504:10;:24;;:64;;;;19615:38;19645:7;19615:10;:25;;;:29;;:38;;;;:::i;:::-;19587:10;:25;;:66;;;;19692:30;19714:7;19692:4;:17;;;:21;;:30;;;;:::i;:::-;19672:4;:17;;:50;;;;19275:463;;19173:576;;17905:1851;;;;:::o;14290:568::-;14367:21;14391:8;:15;14400:5;14391:15;;;;;;;;;;;;;;;14367:39;;14417:14;14434:4;:13;;;;;;;;;;;;14417:30;;14462:9;14458:393;2920:2;14477:1;:14;14458:393;;;14533:1;14515:20;;:6;:20;;;14512:328;;14591:46;14629:7;14591:8;:16;14600:6;14591:16;;;;;;;;;;;;;;;:33;;;:37;;:46;;;;:::i;:::-;14555:8;:16;14564:6;14555:16;;;;;;;;;;;;;;;:33;;:82;;;;14656:20;14669:6;14656:12;:20::i;:::-;14708:12;;;;;;;;;;;14698:22;;:6;:22;;;14695:32;;;14722:5;;14695:32;14755:8;:16;14764:6;14755:16;;;;;;;;;;;;;;;:25;;;;;;;;;;;;14746:34;;14512:328;;;14819:5;;14512:328;14493:3;;;;;;;14458:393;;;;14290:568;;;;:::o;22511:1682::-;22585:21;22609:8;:15;22618:5;22609:15;;;;;;;;;;;;;;;22585:39;;22635:14;22652:4;:13;;;;;;;;;;;;22635:30;;22680:9;22676:1510;2920:2;22695:1;:14;22676:1510;;;22751:1;22733:20;;:6;:20;;;22730:1445;;22773:17;22793:7;22773:27;;22832:12;;;;;;;;;;;22822:22;;:6;:22;;;22819:234;;22868:19;22890:22;22905:6;22890:14;:22::i;:::-;22868:44;;22952:7;22938:11;:21;22935:99;;;22999:11;22987:23;;22935:99;22819:234;;23071:28;23102:10;:18;23113:6;23102:18;;;;;;;;;;;;;;;23071:49;;23139:14;23179:1;23175;:5;23172:840;;;23232:1;23207:8;:16;23216:6;23207:16;;;;;;;;;;;;;;;:22;;;:26;23204:231;;;23270:53;2449:5;23270:36;23284:14;23303:1;23299;:5;23284:21;;;;;;;;;23270:9;:13;;:36;;;;:::i;:::-;:40;;:53;;;;:::i;:::-;23261:62;;23376:35;23404:6;23376:9;:23;;;:27;;:35;;;;:::i;:::-;23350:9;:23;;:61;;;;23204:231;23172:840;;;23466:1;23462;:5;23459:553;;;23520:1;23495:8;:16;23504:6;23495:16;;;;;;;;;;;;;;;:22;;;:26;23491:232;;;23558:53;2449:5;23558:36;23572:14;23591:1;23587;:5;23572:21;;;;;;;;;23558:9;:13;;:36;;;;:::i;:::-;:40;;:53;;;;:::i;:::-;23549:62;;23664:35;23692:6;23664:9;:23;;;:27;;:35;;;;:::i;:::-;23638:9;:23;;:61;;;;23491:232;23459:553;;;23778:46;2449:5;23778:29;2973:3;23778:9;:13;;:29;;;;:::i;:::-;:33;;:46;;;;:::i;:::-;23769:55;;23867:29;23889:6;23867:9;:17;;;:21;;:29;;;;:::i;:::-;23847:9;:17;;:49;;;;23951:41;23985:6;23951:8;:16;23960:6;23951:16;;;;;;;;;;;;;;;:29;;;:33;;:41;;;;:::i;:::-;23919:8;:16;23928:6;23919:16;;;;;;;;;;;;;;;:29;;:73;;;;23459:553;23172:840;24043:12;;;;;;;;;;;24033:22;;:6;:22;;;24030:32;;;24057:5;;;;;24030:32;24090:8;:16;24099:6;24090:16;;;;;;;;;;;;;;;:25;;;;;;;;;;;;24081:34;;22730:1445;;;;;;24154:5;;22730:1445;22711:3;;;;;;;22676:1510;;;;22511:1682;;;;:::o;24201:2073::-;24279:21;24303:8;:15;24312:5;24303:15;;;;;;;;;;;;;;;24279:39;;24329:14;24346:4;:13;;;;;;;;;;;;24329:30;;24374:9;24370:1897;2920:2;24389:1;:14;24370:1897;;;24445:1;24427:20;;:6;:20;;;24424:1832;;24467:17;24487:7;24467:27;;24526:12;;;;;;;;;;;24516:22;;:6;:22;;;24513:234;;24562:19;24584:22;24599:6;24584:14;:22::i;:::-;24562:44;;24646:7;24632:11;:21;24629:99;;;24693:11;24681:23;;24629:99;24513:234;;24767:28;24798:10;:18;24809:6;24798:18;;;;;;;;;;;;;;;24767:49;;24842:1;24838;:5;:14;;;;;24851:1;24847;:5;24838:14;:44;;;;;24881:1;24856:8;:16;24865:6;24856:16;;;;;;;;;;;;;;;:22;;;:26;24838:44;24835:710;;;24935:1;24909:9;:23;;;:27;24906:620;;;24964:20;24987:53;2449:5;24987:36;25001:14;25020:1;25016;:5;25001:21;;;;;;;;;24987:9;:13;;:36;;;;:::i;:::-;:40;;:53;;;;:::i;:::-;24964:76;;25085:9;:23;;;25070:12;:38;25067:139;;;25155:9;:23;;;25140:38;;25067:139;25258:41;25286:12;25258:9;:23;;;:27;;:41;;;;:::i;:::-;25232:9;:23;;:67;;;;25354:42;25383:12;25354:9;:24;;;:28;;:42;;;;:::i;:::-;25327:9;:24;;:69;;;;25455:47;25489:12;25455:8;:16;25464:6;25455:16;;;;;;;;;;;;;;;:29;;;:33;;:47;;;;:::i;:::-;25423:8;:16;25432:6;25423:16;;;;;;;;;;;;;;;:29;;:79;;;;24906:620;;24835:710;25573:1;25568;:6;;:36;;;;;25603:1;25578:8;:16;25587:6;25578:16;;;;;;;;;;;;;;;:22;;;:26;25568:36;25565:579;;;25654:1;25631:9;:20;;;:24;25628:497;;;25683:20;25706:53;2449:5;25706:36;25720:14;25739:1;25735;:5;25720:21;;;;;;;;;25706:9;:13;;:36;;;;:::i;:::-;:40;;:53;;;;:::i;:::-;25683:76;;25804:9;:20;;;25789:12;:35;25786:133;;;25871:9;:20;;;25856:35;;25786:133;25968:38;25993:12;25968:9;:20;;;:24;;:38;;;;:::i;:::-;25945:9;:20;;:61;;;;26060:41;26088:12;26060:9;:23;;;:27;;:41;;;;:::i;:::-;26034:9;:23;;:67;;;;25628:497;;25565:579;26171:8;:16;26180:6;26171:16;;;;;;;;;;;;;;;:25;;;;;;;;;;;;26162:34;;24424:1832;;;;;26235:5;;24424:1832;24405:3;;;;;;;24370:1897;;;;24201:2073;;;;:::o;15198:787::-;15256:7;15276:21;15300:8;:15;15309:5;15300:15;;;;;;;;;;;;;;;15276:39;;15326:13;15342:4;:17;;;15326:33;;15370:16;15409:6;15400:5;:15;15397:553;;15432:15;15449:17;15472:21;15487:5;15472:14;:21::i;:::-;15431:62;;;;;15520:6;15511:5;:15;;:38;;;;;15546:3;15530:4;:12;;;:19;;15511:38;:60;;;;;15564:7;15553;:18;;15511:60;:84;;;;;15588:7;15575:9;:20;;15511:84;15508:306;;;15626:1;15615:12;;15508:306;;;15667:2;15651:4;:12;;;:18;;:40;;;;;15684:7;15673;:18;;15651:40;:64;;;;;15708:7;15695:9;:20;;15651:64;15648:166;;;15746:1;15735:12;;15648:166;;;15797:1;15786:12;;15648:166;15508:306;15397:553;;;;;15842:6;15833:5;:15;15830:120;;15875:1;15864:12;;15830:120;;;15905:5;15896;:14;15893:57;;15937:1;15926:12;;15893:57;15830:120;15397:553;15969:8;15962:15;;;;;15198:787;;;:::o;13030:537::-;13091:9;13103:1;13091:13;;13087:473;13110:1;13106;:5;13087:473;;;13132:16;13151:11;:20;13163:7;13151:20;;;;;;;;;;;13176:1;13172;:5;13151:27;;;;;;;;;;;;;;;;;;13132:46;;13193:16;13212:11;:20;13224:7;13212:20;;;;;;;;;;;13237:1;13233;:5;13212:27;;;;;;;;;;;;;;;;;;13193:46;;13254:15;13272:20;:29;13293:7;13272:29;;;;;;;;;;;:39;13302:8;13272:39;;;;;;;;;;;;;;;;13254:57;;13326:15;13344:20;:29;13365:7;13344:29;;;;;;;;;;;:39;13374:8;13344:39;;;;;;;;;;;;;;;;13326:57;;13411:7;13401;:17;13398:151;;;13468:8;13438:11;:20;13450:7;13438:20;;;;;;;;;;;13463:1;13459;:5;13438:27;;;;;;;;;:38;;;;;;;;;;;;;;;;;;13525:8;13495:11;:20;13507:7;13495:20;;;;;;;;;;;13520:1;13516;:5;13495:27;;;;;;;;;:38;;;;;;;;;;;;;;;;;;13398:151;13087:473;;;;13113:3;;;;;;;;13087:473;;;;13030:537;:::o;13575:707::-;13657:21;13681:8;:15;13690:5;13681:15;;;;;;;;;;;;;;;13657:39;;13707:14;13724:4;:13;;;;;;;;;;;;13707:30;;13752:9;13748:527;2920:2;13767:1;:14;13748:527;;;13823:1;13805:20;;:6;:20;;;13802:462;;13884:7;13848:8;:16;13857:6;13848:16;;;;;;;;;;;;;;;:33;;;:43;13845:256;;;13951:46;13989:7;13951:8;:16;13960:6;13951:16;;;;;;;;;;;;;;;:33;;;:37;;:46;;;;:::i;:::-;13915:8;:16;13924:6;13915:16;;;;;;;;;;;;;;;:33;;:82;;;;13845:256;;;14080:1;14044:8;:16;14053:6;14044:16;;;;;;;;;;;;;;;:33;;:37;;;;13845:256;14132:12;;;;;;;;;;;14122:22;;:6;:22;;;14119:32;;;14146:5;;14119:32;14179:8;:16;14188:6;14179:16;;;;;;;;;;;;;;;:25;;;;;;;;;;;;14170:34;;13802:462;;;14243:5;;13802:462;13783:3;;;;;;;13748:527;;;;13575:707;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://9d1a2323e65262c8a2b994073b00729ba41af3e61e7cf67e587170014608c89d
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.