ETH Price: $3,162.35 (-0.29%)
Gas: 28 Gwei

Contract

0x19E1d193A448bD13097EFC2aea867468726e67c5
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Take Out157043992022-10-08 15:54:11565 days ago1665244451IN
0x19E1d193...8726e67c5
0 ETH0.0022916225.39308453
Take Out148336082022-05-24 4:06:50702 days ago1653365210IN
0x19E1d193...8726e67c5
0 ETH0.0018941419.93123408
Take Out135940962021-11-11 9:26:56896 days ago1636622816IN
0x19E1d193...8726e67c5
0 ETH0.00411306138.43574193
Take Out135940962021-11-11 9:26:56896 days ago1636622816IN
0x19E1d193...8726e67c5
0 ETH0.00390799131.53368527
Take Out135940962021-11-11 9:26:56896 days ago1636622816IN
0x19E1d193...8726e67c5
0 ETH0.0079809588.44728764
Take Out132235912021-09-14 11:29:49954 days ago1631618989IN
0x19E1d193...8726e67c5
0 ETH0.00584843105.26533055
Take Out132210552021-09-14 2:08:43954 days ago1631585323IN
0x19E1d193...8726e67c5
0 ETH0.0044310657.21421103
Take Out132046262021-09-11 13:07:43957 days ago1631365663IN
0x19E1d193...8726e67c5
0 ETH0.0034373656.93727189
Take Out132046082021-09-11 13:03:51957 days ago1631365431IN
0x19E1d193...8726e67c5
0 ETH0.0030001854
Take Out132045742021-09-11 12:57:16957 days ago1631365036IN
0x19E1d193...8726e67c5
0 ETH0.0014261248
Take Out128641842021-07-20 15:18:451010 days ago1626794325IN
0x19E1d193...8726e67c5
0 ETH0.0013116321
Take Out128641842021-07-20 15:18:451010 days ago1626794325IN
0x19E1d193...8726e67c5
0 ETH0.00094820.9
Deposit In128617732021-07-20 6:19:351010 days ago1626761975IN
0x19E1d193...8726e67c5
0 ETH0.0021912822
Take Out127611972021-07-04 13:06:531026 days ago1625404013IN
0x19E1d193...8726e67c5
0 ETH0.0018880230
Take Out127273692021-06-29 6:30:261031 days ago1624948226IN
0x19E1d193...8726e67c5
0 ETH0.0024010230
Take Out126180592021-06-12 6:16:101048 days ago1623478570IN
0x19E1d193...8726e67c5
0 ETH0.0010910714
Take Out126180162021-06-12 6:05:221048 days ago1623477922IN
0x19E1d193...8726e67c5
0 ETH0.0004157814
Take Out126180042021-06-12 6:03:031048 days ago1623477783IN
0x19E1d193...8726e67c5
0 ETH0.0004753716
Take Out126179882021-06-12 5:59:571048 days ago1623477597IN
0x19E1d193...8726e67c5
0 ETH0.0008446914
Take Out126179462021-06-12 5:50:261048 days ago1623477026IN
0x19E1d193...8726e67c5
0 ETH0.0009053815
Take Out125882212021-06-07 15:32:351053 days ago1623079955IN
0x19E1d193...8726e67c5
0 ETH0.0007708917
Take Out125735662021-06-05 9:04:071055 days ago1622883847IN
0x19E1d193...8726e67c5
0 ETH0.0003945113
Take Out125179862021-05-27 18:36:281063 days ago1622140588IN
0x19E1d193...8726e67c5
0 ETH0.0012473727.5
Take Out125179862021-05-27 18:36:281063 days ago1622140588IN
0x19E1d193...8726e67c5
0 ETH0.0017176227.5
Take Out125179772021-05-27 18:34:441063 days ago1622140484IN
0x19E1d193...8726e67c5
0 ETH0.0013154129
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
116573602021-01-15 4:03:241196 days ago1610683404
0x19E1d193...8726e67c5
71.26541818 ETH
116573602021-01-15 4:03:241196 days ago1610683404
0x19E1d193...8726e67c5
71.26541818 ETH
116573492021-01-15 4:01:171196 days ago1610683277
0x19E1d193...8726e67c5
52.74330963 ETH
116573492021-01-15 4:01:171196 days ago1610683277
0x19E1d193...8726e67c5
52.74330963 ETH
116117592021-01-08 4:06:161203 days ago1610078776
0x19E1d193...8726e67c5
65.04739963 ETH
116117592021-01-08 4:06:161203 days ago1610078776
0x19E1d193...8726e67c5
65.04739963 ETH
116117312021-01-08 4:00:461203 days ago1610078446
0x19E1d193...8726e67c5
13.38862842 ETH
116117312021-01-08 4:00:461203 days ago1610078446
0x19E1d193...8726e67c5
13.38862842 ETH
115661652021-01-01 4:03:301210 days ago1609473810
0x19E1d193...8726e67c5
27.0268795 ETH
115661652021-01-01 4:03:301210 days ago1609473810
0x19E1d193...8726e67c5
27.0268795 ETH
115661642021-01-01 4:03:201210 days ago1609473800
0x19E1d193...8726e67c5
13.47203883 ETH
115661642021-01-01 4:03:201210 days ago1609473800
0x19E1d193...8726e67c5
13.47203883 ETH
115661552021-01-01 4:01:151210 days ago1609473675
0x19E1d193...8726e67c5
22.21980967 ETH
115661552021-01-01 4:01:151210 days ago1609473675
0x19E1d193...8726e67c5
22.21980967 ETH
115204712020-12-25 4:02:561217 days ago1608868976
0x19E1d193...8726e67c5
1.28526701 ETH
115204712020-12-25 4:02:561217 days ago1608868976
0x19E1d193...8726e67c5
1.28526701 ETH
115204572020-12-25 4:01:031217 days ago1608868863
0x19E1d193...8726e67c5
15.71753312 ETH
115204572020-12-25 4:01:031217 days ago1608868863
0x19E1d193...8726e67c5
15.71753312 ETH
115204562020-12-25 4:00:561217 days ago1608868856
0x19E1d193...8726e67c5
46.92950715 ETH
115204562020-12-25 4:00:561217 days ago1608868856
0x19E1d193...8726e67c5
46.92950715 ETH
114748712020-12-18 4:01:001224 days ago1608264060
0x19E1d193...8726e67c5
15.9840234 ETH
114748712020-12-18 4:01:001224 days ago1608264060
0x19E1d193...8726e67c5
15.9840234 ETH
114748702020-12-18 4:00:431224 days ago1608264043
0x19E1d193...8726e67c5
55.53726375 ETH
114748702020-12-18 4:00:431224 days ago1608264043
0x19E1d193...8726e67c5
55.53726375 ETH
114748682020-12-18 4:00:081224 days ago1608264008
0x19E1d193...8726e67c5
12.18677182 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Nest_3_TokenAbonus

Compiler Version
v0.6.0+commit.26b70077

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-07-28
*/

pragma solidity 0.6.0;

/**
 * @title Dividend logic
 * @dev Some operations about dividend,logic and asset separation
 */
contract Nest_3_TokenAbonus {
    using address_make_payable for address;
    using SafeMath for uint256;
    
    ERC20 _nestContract;
    Nest_3_TokenSave _tokenSave;                                                                //  Lock-up contract
    Nest_3_Abonus _abonusContract;                                                              //  ETH bonus pool
    Nest_3_VoteFactory _voteFactory;                                                            //  Voting contract
    Nest_3_Leveling _nestLeveling;                                                              //  Leveling contract
    address _destructionAddress;                                                                //  Destroy contract address
    
    uint256 _timeLimit = 168 hours;                                                             //  Bonus period
    uint256 _nextTime = 1596168000;                                                             //  Next bonus time
    uint256 _getAbonusTimeLimit = 60 hours;                                                     //  During of triggering calculation of bonus
    uint256 _times = 0;                                                                         //  Bonus ledger
    uint256 _expectedIncrement = 3;                                                             //  Expected bonus increment ratio
    uint256 _expectedSpanForNest = 100000000 ether;                                             //  NEST expected bonus increment threshold
    uint256 _expectedSpanForNToken = 1000000 ether;                                             //  NToken expected bonus increment threshold
    uint256 _expectedMinimum = 100 ether;                                                       //  Expected minimum bonus
    uint256 _savingLevelOne = 10;                                                               //  Saving threshold level 1
    uint256 _savingLevelTwo = 20;                                                               //  Saving threshold level 2 
    uint256 _savingLevelTwoSub = 100 ether;                                                     //  Function parameters of savings threshold level 2  
    uint256 _savingLevelThree = 30;                                                             //  Function parameters of savings threshold level 3
    uint256 _savingLevelThreeSub = 600 ether;                                                   //  Function parameters of savings threshold level 3
    
    mapping(address => uint256) _abonusMapping;                                                 //  Bonus pool snapshot - token address (NEST or NToken) => number of ETH in the bonus pool 
    mapping(address => uint256) _tokenAllValueMapping;                                          //  Number of tokens (circulation) - token address (NEST or NToken) ) => total circulation 
    mapping(address => mapping(uint256 => uint256)) _tokenAllValueHistory;                      //  NEST or NToken circulation snapshot - token address (NEST or NToken) => number of periods => total circulation 
    mapping(address => mapping(uint256 => mapping(address => uint256))) _tokenSelfHistory;      //  Personal lockup - NEST or NToken snapshot token address (NEST or NToken) => period => user address => total circulation
    mapping(address => mapping(uint256 => bool)) _snapshot;                                     //  Whether snapshot - token address (NEST or NToken) => number of periods => whether to take a snapshot
    mapping(uint256 => mapping(address => mapping(address => bool))) _getMapping;               //  Receiving records - period => token address (NEST or NToken) => user address => whether received
    
    //  Log token address, amount
    event GetTokenLog(address tokenAddress, uint256 tokenAmount);
    
   /**
    * @dev Initialization method
    * @param voteFactory Voting contract address
    */
    constructor (address voteFactory) public {
        Nest_3_VoteFactory voteFactoryMap = Nest_3_VoteFactory(address(voteFactory));
        _voteFactory = voteFactoryMap; 
        _nestContract = ERC20(address(voteFactoryMap.checkAddress("nest")));
        _tokenSave = Nest_3_TokenSave(address(voteFactoryMap.checkAddress("nest.v3.tokenSave")));
        address payable addr = address(voteFactoryMap.checkAddress("nest.v3.abonus")).make_payable();
        _abonusContract = Nest_3_Abonus(addr);
        address payable levelingAddr = address(voteFactoryMap.checkAddress("nest.v3.leveling")).make_payable();
        _nestLeveling = Nest_3_Leveling(levelingAddr);
        _destructionAddress = address(voteFactoryMap.checkAddress("nest.v3.destruction"));
    }
    
    /**
    * @dev Modify voting contract
    * @param voteFactory Voting contract address
    */
    function changeMapping(address voteFactory) public onlyOwner {
        Nest_3_VoteFactory voteFactoryMap = Nest_3_VoteFactory(address(voteFactory));
        _voteFactory = voteFactoryMap; 
        _nestContract = ERC20(address(voteFactoryMap.checkAddress("nest")));
        _tokenSave = Nest_3_TokenSave(address(voteFactoryMap.checkAddress("nest.v3.tokenSave")));
        address payable addr = address(voteFactoryMap.checkAddress("nest.v3.abonus")).make_payable();
        _abonusContract = Nest_3_Abonus(addr);
        address payable levelingAddr = address(voteFactoryMap.checkAddress("nest.v3.leveling")).make_payable();
        _nestLeveling = Nest_3_Leveling(levelingAddr);
        _destructionAddress = address(voteFactoryMap.checkAddress("nest.v3.destruction"));
    }
    
    /**
    * @dev Deposit 
    * @param amount Deposited amount
    * @param token Locked token address
    */
    function depositIn(uint256 amount, address token) public {
        uint256 nowTime = now;
        uint256 nextTime = _nextTime;
        uint256 timeLimit = _timeLimit;
        if (nowTime < nextTime) {
            //  Bonus triggered
            require(!(nowTime >= nextTime.sub(timeLimit) && nowTime <= nextTime.sub(timeLimit).add(_getAbonusTimeLimit)));
        } else {
            //  Bonus not triggered
            uint256 times = (nowTime.sub(_nextTime)).div(_timeLimit);
            //  Calculate the time when bonus should be started
            uint256 startTime = _nextTime.add((times).mul(_timeLimit));  
            //  Calculate the time when bonus should be stopped
            uint256 endTime = startTime.add(_getAbonusTimeLimit);                                                                    
            require(!(nowTime >= startTime && nowTime <= endTime));
        }
        _tokenSave.depositIn(amount, token, address(msg.sender));                 
    }
    
    /**
    * @dev Withdrawing
    * @param amount Withdrawing amount
    * @param token Token address
    */
    function takeOut(uint256 amount, address token) public {
        require(amount > 0, "Parameter needs to be greater than 0");                                                                
        require(amount <= _tokenSave.checkAmount(address(msg.sender), token), "Insufficient storage balance");
        if (token == address(_nestContract)) {
            require(!_voteFactory.checkVoteNow(address(tx.origin)), "Voting");
        }
        _tokenSave.takeOut(amount, token, address(msg.sender));                                                             
    }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
    
    /**
    * @dev Receiving
    * @param token Receiving token address
    */
    function getAbonus(address token) public {
        uint256 tokenAmount = _tokenSave.checkAmount(address(msg.sender), token);
        require(tokenAmount > 0, "Insufficient storage balance");
        reloadTime();
        reloadToken(token);                                                                                                      
        uint256 nowTime = now;
        require(nowTime >= _nextTime.sub(_timeLimit) && nowTime <= _nextTime.sub(_timeLimit).add(_getAbonusTimeLimit), "Not time to draw");
        require(!_getMapping[_times.sub(1)][token][address(msg.sender)], "Have received");                                     
        _tokenSelfHistory[token][_times.sub(1)][address(msg.sender)] = tokenAmount;                                         
        require(_tokenAllValueMapping[token] > 0, "Total flux error");
        uint256 selfNum = tokenAmount.mul(_abonusMapping[token]).div(_tokenAllValueMapping[token]);
        require(selfNum > 0, "No limit available");
        _getMapping[_times.sub(1)][token][address(msg.sender)] = true;
        _abonusContract.getETH(selfNum, token,address(msg.sender)); 
        emit GetTokenLog(token, selfNum);
    }
    
    /**
    * @dev Update bonus time and stage ledger
    */
    function reloadTime() private {
        uint256 nowTime = now;
        //  The current time must exceed the bonus time
        if (nowTime >= _nextTime) {                                                                                                 
            uint256 time = (nowTime.sub(_nextTime)).div(_timeLimit);
            uint256 startTime = _nextTime.add((time).mul(_timeLimit));                                                              
            uint256 endTime = startTime.add(_getAbonusTimeLimit);                                                                   
            if (nowTime >= startTime && nowTime <= endTime) {
                _nextTime = getNextTime();                                                                                      
                _times = _times.add(1);                                                                                       
            }
        }
    }
    
    /**
    * @dev Snapshot of the amount of tokens
    * @param token Receiving token address
    */
    function reloadToken(address token) private {
        if (!_snapshot[token][_times.sub(1)]) {
            levelingResult(token);                                                                                          
            _abonusMapping[token] = _abonusContract.getETHNum(token); 
            _tokenAllValueMapping[token] = allValue(token);
            _tokenAllValueHistory[token][_times.sub(1)] = allValue(token);
            _snapshot[token][_times.sub(1)] = true;
        }
    }
    
    /**
    * @dev Leveling settlement
    * @param token Receiving token address
    */
    function levelingResult(address token) private {
        uint256 steps;
        if (token == address(_nestContract)) {
            steps = allValue(token).div(_expectedSpanForNest);
        } else {
            steps = allValue(token).div(_expectedSpanForNToken);
        }
        uint256 minimumAbonus = _expectedMinimum;
        for (uint256 i = 0; i < steps; i++) {
            minimumAbonus = minimumAbonus.add(minimumAbonus.mul(_expectedIncrement).div(100));
        }
        uint256 thisAbonus = _abonusContract.getETHNum(token);
        if (thisAbonus > minimumAbonus) {
            uint256 levelAmount = 0;
            if (thisAbonus > 5000 ether) {
                levelAmount = thisAbonus.mul(_savingLevelThree).div(100).sub(_savingLevelThreeSub);
            } else if (thisAbonus > 1000 ether) {
                levelAmount = thisAbonus.mul(_savingLevelTwo).div(100).sub(_savingLevelTwoSub);
            } else {
                levelAmount = thisAbonus.mul(_savingLevelOne).div(100);
            }
            if (thisAbonus.sub(levelAmount) < minimumAbonus) {
                _abonusContract.getETH(thisAbonus.sub(minimumAbonus), token, address(this));
                _nestLeveling.switchToEth.value(thisAbonus.sub(minimumAbonus))(token);
            } else {
                _abonusContract.getETH(levelAmount, token, address(this));
                _nestLeveling.switchToEth.value(levelAmount)(token);
            }
        } else {
            uint256 ethValue = _nestLeveling.tranEth(minimumAbonus.sub(thisAbonus), token, address(this));
            _abonusContract.switchToEth.value(ethValue)(token);
        }
    }
    
     // Next bonus time, current bonus deadline, ETH number, NEST number, NEST participating in bonus, bonus to receive, approved amount, balance, whether bonus can be paid 
    function getInfo(address token) public view returns (uint256 nextTime, uint256 getAbonusTime, uint256 ethNum, uint256 tokenValue, uint256 myJoinToken, uint256 getEth, uint256 allowNum, uint256 leftNum, bool allowAbonus)  {
        uint256 nowTime = now;
        if (nowTime >= _nextTime.sub(_timeLimit) && nowTime <= _nextTime.sub(_timeLimit).add(_getAbonusTimeLimit) && _times > 0 && _snapshot[token][_times.sub(1)]) {
            //  Bonus have been triggered, and during the time of this bonus, display snapshot data 
            allowAbonus = _getMapping[_times.sub(1)][token][address(msg.sender)];
            ethNum = _abonusMapping[token];
            tokenValue = _tokenAllValueMapping[token];
        } else {
            //  Display real-time data 
            ethNum = _abonusContract.getETHNum(token);
            tokenValue = allValue(token);
            allowAbonus = _getMapping[_times][token][address(msg.sender)];
        }
        myJoinToken = _tokenSave.checkAmount(address(msg.sender), token);
        if (allowAbonus == true) {
            getEth = 0; 
        } else {
            getEth = myJoinToken.mul(ethNum).div(tokenValue);
        }
        nextTime = getNextTime();
        getAbonusTime = nextTime.sub(_timeLimit).add(_getAbonusTimeLimit);
        allowNum = ERC20(token).allowance(address(msg.sender), address(_tokenSave));
        leftNum = ERC20(token).balanceOf(address(msg.sender));
    }
    
    /**
    * @dev View next bonus time 
    * @return Next bonus time 
    */
    function getNextTime() public view returns (uint256) {
        uint256 nowTime = now;
        if (_nextTime > nowTime) { 
            return _nextTime; 
        } else {
            uint256 time = (nowTime.sub(_nextTime)).div(_timeLimit);
            return _nextTime.add(_timeLimit.mul(time.add(1)));
        }
    }
    
    /**
    * @dev View total circulation 
    * @return Total circulation
    */
    function allValue(address token) public view returns (uint256) {
        if (token == address(_nestContract)) {
            uint256 all = 10000000000 ether;
            uint256 leftNum = all.sub(_nestContract.balanceOf(address(_voteFactory.checkAddress("nest.v3.miningSave")))).sub(_nestContract.balanceOf(address(_destructionAddress)));
            return leftNum;
        } else {
            return ERC20(token).totalSupply();
        }
    }
    
    /**
    * @dev View bonus period
    * @return Bonus period
    */
    function checkTimeLimit() public view returns (uint256) {
        return _timeLimit;
    }
    
    /**
    * @dev View duration of triggering calculation of bonus
    * @return Bonus period
    */
    function checkGetAbonusTimeLimit() public view returns (uint256) {
        return _getAbonusTimeLimit;
    }
    
    /**
    * @dev View current lowest expected bonus
    * @return Current lowest expected bonus
    */
    function checkMinimumAbonus(address token) public view returns (uint256) {
        uint256 miningAmount;
        if (token == address(_nestContract)) {
            miningAmount = allValue(token).div(_expectedSpanForNest);
        } else {
            miningAmount = allValue(token).div(_expectedSpanForNToken);
        }
        uint256 minimumAbonus = _expectedMinimum;
        for (uint256 i = 0; i < miningAmount; i++) {
            minimumAbonus = minimumAbonus.add(minimumAbonus.mul(_expectedIncrement).div(100));
        }
        return minimumAbonus;
    }
    
    /**
    * @dev Check whether the bonus token is snapshoted
    * @param token Token address
    * @return Whether snapshoted
    */
    function checkSnapshot(address token) public view returns (bool) {
        return _snapshot[token][_times.sub(1)];
    }
    
    /**
    * @dev Check the expected bonus incremental ratio
    * @return Expected bonus increment ratio
    */
    function checkeExpectedIncrement() public view returns (uint256) {
        return _expectedIncrement;
    }
    
    /**
    * @dev View expected minimum bonus
    * @return Expected minimum bonus
    */
    function checkExpectedMinimum() public view returns (uint256) {
        return _expectedMinimum;
    }
    
    /**
    * @dev View savings threshold
    * @return Save threshold
    */
    function checkSavingLevelOne() public view returns (uint256) {
        return _savingLevelOne;
    }
    function checkSavingLevelTwo() public view returns (uint256) {
        return _savingLevelTwo;
    }
    function checkSavingLevelThree() public view returns (uint256) {
        return _savingLevelThree;
    }
    
    /**
    * @dev View NEST liquidity snapshot
    * @param token Locked token address
    * @param times Bonus snapshot period
    */
    function checkTokenAllValueHistory(address token, uint256 times) public view returns (uint256) {
        return _tokenAllValueHistory[token][times];
    }
    
    /**
    * @dev View personal lock-up NEST snapshot
    * @param times Bonus snapshot period
    * @param user User address
    * @return The number of personal locked NEST snapshots
    */
    function checkTokenSelfHistory(address token, uint256 times, address user) public view returns (uint256) {
        return _tokenSelfHistory[token][times][user];
    }
    
    // View the period number of bonus
    function checkTimes() public view returns (uint256) {
        return _times;
    }
    
    // NEST expected bonus increment threshold
    function checkExpectedSpanForNest() public view returns (uint256) {
        return _expectedSpanForNest;
    }
    
    // NToken expected bonus increment threshold
    function checkExpectedSpanForNToken() public view returns (uint256) {
        return _expectedSpanForNToken;
    }
    
    // View the function parameters of savings threshold level 3
    function checkSavingLevelTwoSub() public view returns (uint256) {
        return _savingLevelTwoSub;
    }
    
    // View the function parameters of savings threshold level 3
    function checkSavingLevelThreeSub() public view returns (uint256) {
        return _savingLevelThreeSub;
    }
    
    /**
    * @dev Update bonus period
    * @param hour Bonus period (hours)
    */
    function changeTimeLimit(uint256 hour) public onlyOwner {
        require(hour > 0, "Parameter needs to be greater than 0");
        _timeLimit = hour.mul(1 hours);
    }
    
    /**
    * @dev Update collection period
    * @param hour Collection period (hours)
    */
    function changeGetAbonusTimeLimit(uint256 hour) public onlyOwner {
        require(hour > 0, "Parameter needs to be greater than 0");
        _getAbonusTimeLimit = hour;
    }
    
    /**
    * @dev Update expected bonus increment ratio
    * @param num Expected bonus increment ratio
    */
    function changeExpectedIncrement(uint256 num) public onlyOwner {
        require(num > 0, "Parameter needs to be greater than 0");
        _expectedIncrement = num;
    }
    
    /**
    * @dev Update expected minimum bonus
    * @param num Expected minimum bonus
    */
    function changeExpectedMinimum(uint256 num) public onlyOwner {
        require(num > 0, "Parameter needs to be greater than 0");
        _expectedMinimum = num;
    }
    
    /**
    * @dev  Update saving threshold
    * @param threshold Saving threshold
    */
    function changeSavingLevelOne(uint256 threshold) public onlyOwner {
        _savingLevelOne = threshold;
    }
    function changeSavingLevelTwo(uint256 threshold) public onlyOwner {
        _savingLevelTwo = threshold;
    }
    function changeSavingLevelThree(uint256 threshold) public onlyOwner {
        _savingLevelThree = threshold;
    }
    
    /**
    * @dev Update the function parameters of savings threshold level 2
    */
    function changeSavingLevelTwoSub(uint256 num) public onlyOwner {
        _savingLevelTwoSub = num;
    }
    
    /**
    * @dev Update the function parameters of savings threshold level 3
    */
    function changeSavingLevelThreeSub(uint256 num) public onlyOwner {
        _savingLevelThreeSub = num;
    }
    
    /**
    * @dev Update NEST expected bonus incremental threshold
    * @param num Threshold
    */
    function changeExpectedSpanForNest(uint256 num) public onlyOwner {
        _expectedSpanForNest = num;
    }
    
    /**
    * @dev Update NToken expected bonus incremental threshold
    * @param num Threshold
    */
    function changeExpectedSpanForNToken(uint256 num) public onlyOwner {
        _expectedSpanForNToken = num;
    }
    
    receive() external payable {
        
    }
    
    // Administrator only
    modifier onlyOwner(){
        require(_voteFactory.checkOwners(address(msg.sender)), "No authority");
        _;
    }
}

// NEST and NToken lock-up contracts
interface Nest_3_TokenSave {
    function depositIn(uint256 num, address token, address target) external;
    function checkAmount(address sender, address token) external view returns(uint256);
    function takeOut(uint256 num, address token, address target) external;
}

// ETH bonus pool
interface Nest_3_Abonus {
    function getETH(uint256 num, address token, address target) external;
    function getETHNum(address token) external view returns (uint256);
    function switchToEth(address token) external payable;
}

// Leveling contract
interface Nest_3_Leveling {
    function tranEth(uint256 amount, address token, address target) external returns (uint256);
    function switchToEth(address token) external payable;
}

// Voting factory contract
interface Nest_3_VoteFactory {
    // Check if there is a vote currently participating
    function checkVoteNow(address user) external view returns(bool);
    // Check address
	function checkAddress(string calldata name) external view returns (address contractAddress);
	// Check whether the administrator
	function checkOwners(address man) external view returns (bool);
}

// ERC20 contract
interface ERC20 {
    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) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library address_make_payable {
   function make_payable(address x) internal pure returns (address payable) {
      return address(uint160(x));
   }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"voteFactory","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"GetTokenLog","type":"event"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"allValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeExpectedIncrement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeExpectedMinimum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeExpectedSpanForNToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeExpectedSpanForNest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"hour","type":"uint256"}],"name":"changeGetAbonusTimeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"voteFactory","type":"address"}],"name":"changeMapping","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"changeSavingLevelOne","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"changeSavingLevelThree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeSavingLevelThreeSub","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"changeSavingLevelTwo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeSavingLevelTwoSub","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"hour","type":"uint256"}],"name":"changeTimeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkExpectedMinimum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkExpectedSpanForNToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkExpectedSpanForNest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkGetAbonusTimeLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"checkMinimumAbonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkSavingLevelOne","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkSavingLevelThree","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkSavingLevelThreeSub","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkSavingLevelTwo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkSavingLevelTwoSub","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"checkSnapshot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkTimeLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkTimes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"times","type":"uint256"}],"name":"checkTokenAllValueHistory","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"times","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"checkTokenSelfHistory","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkeExpectedIncrement","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"token","type":"address"}],"name":"depositIn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getAbonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getInfo","outputs":[{"internalType":"uint256","name":"nextTime","type":"uint256"},{"internalType":"uint256","name":"getAbonusTime","type":"uint256"},{"internalType":"uint256","name":"ethNum","type":"uint256"},{"internalType":"uint256","name":"tokenValue","type":"uint256"},{"internalType":"uint256","name":"myJoinToken","type":"uint256"},{"internalType":"uint256","name":"getEth","type":"uint256"},{"internalType":"uint256","name":"allowNum","type":"uint256"},{"internalType":"uint256","name":"leftNum","type":"uint256"},{"internalType":"bool","name":"allowAbonus","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNextTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"token","type":"address"}],"name":"takeOut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405262093a80600655635f23974060075562034bc060085560006009556003600a556a52b7d2dcc80cd2e4000000600b5569d3c21bcecceda1000000600c5568056bc75e2d63100000600d55600a600e556014600f5568056bc75e2d63100000601055601e601155682086ac3510526000006012553480156200008457600080fd5b50604051620032a1380380620032a183398181016040526020811015620000aa57600080fd5b5051600380546001600160a01b0319166001600160a01b038316908117909155604080516347f3bf4360e11b8152602060048083018290526024830152631b995cdd60e21b60448301529151849392638fe77e869260648082019391829003018186803b1580156200011b57600080fd5b505afa15801562000130573d6000803e3d6000fd5b505050506040513d60208110156200014757600080fd5b5051600080546001600160a01b0319166001600160a01b03928316179055604080516347f3bf4360e11b815260206004820181905260116024830152706e6573742e76332e746f6b656e5361766560781b6044830152915192841692638fe77e8692606480840193919291829003018186803b158015620001c757600080fd5b505afa158015620001dc573d6000803e3d6000fd5b505050506040513d6020811015620001f357600080fd5b5051600180546001600160a01b0319166001600160a01b03928316179055604080516347f3bf4360e11b8152602060048201819052600e60248301526d6e6573742e76332e61626f6e757360901b60448301529151600093620002bf9390861692638fe77e869260648083019392829003018186803b1580156200027657600080fd5b505afa1580156200028b573d6000803e3d6000fd5b505050506040513d6020811015620002a257600080fd5b50516001600160a01b03166200042f602090811b62000b4517901c565b600280546001600160a01b0319166001600160a01b0383811691909117909155604080516347f3bf4360e11b8152602060048201819052601060248301526f6e6573742e76332e6c6576656c696e6760801b604483015291519394506000936200034893871692638fe77e869260648082019391829003018186803b1580156200027657600080fd5b600480546001600160a01b0319166001600160a01b03838116919091178255604080516347f3bf4360e11b81526020938101849052601360248201527f6e6573742e76332e6465737472756374696f6e000000000000000000000000006044820152905193945090861692638fe77e8692606480840193919291829003018186803b158015620003d757600080fd5b505afa158015620003ec573d6000803e3d6000fd5b505050506040513d60208110156200040357600080fd5b5051600580546001600160a01b0319166001600160a01b03909216919091179055506200043292505050565b90565b612e5f80620004426000396000f3fe6080604052600436106101fd5760003560e01c80637711e8571161010d578063d6c9173e116100a0578063e945a4d21161006f578063e945a4d21461067f578063ea5e9f2c146106a9578063ef1692d3146106be578063f5047bd1146106d3578063ffdd5cf1146106fd57610204565b8063d6c9173e146105d9578063d95a6d74146105ee578063da3bba0514610631578063dcc9a7541461066a57610204565b8063ab7b357c116100dc578063ab7b357c14610561578063be28200e14610576578063bfe91ccf1461058b578063c80a7798146105c457610204565b80637711e857146104da578063a19b3ade146104ef578063a781e7f814610519578063aa8a41301461054c57610204565b80632462e4d8116101905780633a078f201161015f5780633a078f201461040b5780633fabe09b146104355780634ba8ceb61461046857806354f2b1d81461047d578063659cf235146104b057610204565b80632462e4d8146103705780632cc3eb53146103b75780632e104bc1146103cc5780632eea2bd9146103e157610204565b80631f6b1851116101cc5780631f6b1851146102ce5780631fd3abf3146102f8578063202b94821461030d578063229c893a1461033757610204565b806308c44a31146102095780630a894e3214610235578063145251631461027a5780631a6910f6146102a457610204565b3661020457005b600080fd5b34801561021557600080fd5b506102336004803603602081101561022c57600080fd5b5035610779565b005b34801561024157600080fd5b506102686004803603602081101561025857600080fd5b50356001600160a01b0316610835565b60408051918252519081900360200190f35b34801561028657600080fd5b506102336004803603602081101561029d57600080fd5b50356108ce565b3480156102b057600080fd5b50610233600480360360208110156102c757600080fd5b50356109c9565b3480156102da57600080fd5b50610233600480360360208110156102f157600080fd5b5035610a85565b34801561030457600080fd5b50610268610b41565b34801561031957600080fd5b506102336004803603602081101561033057600080fd5b5035610b48565b34801561034357600080fd5b506102336004803603604081101561035a57600080fd5b50803590602001356001600160a01b0316610c43565b34801561037c57600080fd5b506103a36004803603602081101561039357600080fd5b50356001600160a01b0316610d9f565b604080519115158252519081900360200190f35b3480156103c357600080fd5b50610268610de7565b3480156103d857600080fd5b50610268610ded565b3480156103ed57600080fd5b506102336004803603602081101561040457600080fd5b5035610df3565b34801561041757600080fd5b506102336004803603602081101561042e57600080fd5b5035610eaf565b34801561044157600080fd5b506102686004803603602081101561045857600080fd5b50356001600160a01b0316610f6b565b34801561047457600080fd5b506102686111b6565b34801561048957600080fd5b50610233600480360360208110156104a057600080fd5b50356001600160a01b03166111bc565b3480156104bc57600080fd5b50610233600480360360208110156104d357600080fd5b50356115f5565b3480156104e657600080fd5b50610268611703565b3480156104fb57600080fd5b506102336004803603602081101561051257600080fd5b503561176b565b34801561052557600080fd5b506102336004803603602081101561053c57600080fd5b50356001600160a01b0316611827565b34801561055857600080fd5b50610268611c36565b34801561056d57600080fd5b50610268611c3c565b34801561058257600080fd5b50610268611c42565b34801561059757600080fd5b50610233600480360360408110156105ae57600080fd5b50803590602001356001600160a01b0316611c48565b3480156105d057600080fd5b50610268611e99565b3480156105e557600080fd5b50610268611e9f565b3480156105fa57600080fd5b506102686004803603606081101561061157600080fd5b506001600160a01b03813581169160208101359160409091013516611ea5565b34801561063d57600080fd5b506102686004803603604081101561065457600080fd5b506001600160a01b038135169060200135611ed8565b34801561067657600080fd5b50610268611f03565b34801561068b57600080fd5b50610233600480360360208110156106a257600080fd5b5035611f09565b3480156106b557600080fd5b50610268612004565b3480156106ca57600080fd5b5061026861200a565b3480156106df57600080fd5b50610233600480360360208110156106f657600080fd5b5035612010565b34801561070957600080fd5b506107306004803603602081101561072057600080fd5b50356001600160a01b03166120cc565b60408051998a5260208a0198909852888801969096526060880194909452608087019290925260a086015260c085015260e0840152151561010083015251908190036101200190f35b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b1580156107c457600080fd5b505afa1580156107d8573d6000803e3d6000fd5b505050506040513d60208110156107ee57600080fd5b5051610830576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b601055565b6000805481906001600160a01b038481169116141561087057610869600b5461085d85610f6b565b9063ffffffff6124bf16565b9050610882565b61087f600c5461085d85610f6b565b90505b600d5460005b828110156108c4576108ba6108ad606461085d600a548661250890919063ffffffff16565b839063ffffffff61256116565b9150600101610888565b509150505b919050565b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b15801561091957600080fd5b505afa15801561092d573d6000803e3d6000fd5b505050506040513d602081101561094357600080fd5b5051610985576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600081116109c45760405162461bcd60e51b8152600401808060200182810382526024815260200180612de56024913960400191505060405180910390fd5b600d55565b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b158015610a1457600080fd5b505afa158015610a28573d6000803e3d6000fd5b505050506040513d6020811015610a3e57600080fd5b5051610a80576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b601155565b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b158015610ad057600080fd5b505afa158015610ae4573d6000803e3d6000fd5b505050506040513d6020811015610afa57600080fd5b5051610b3c576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b601255565b6011545b90565b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b158015610b9357600080fd5b505afa158015610ba7573d6000803e3d6000fd5b505050506040513d6020811015610bbd57600080fd5b5051610bff576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b60008111610c3e5760405162461bcd60e51b8152600401808060200182810382526024815260200180612de56024913960400191505060405180910390fd5b600a55565b60075460065442919081831015610ca457610c64828263ffffffff6125bb16565b8310158015610c955750600854610c9190610c85848463ffffffff6125bb16565b9063ffffffff61256116565b8311155b15610c9f57600080fd5b610d25565b6000610cc160065461085d600754876125bb90919063ffffffff16565b90506000610cec610cdd6006548461250890919063ffffffff16565b6007549063ffffffff61256116565b90506000610d056008548361256190919063ffffffff16565b9050818610158015610d175750808611155b15610d2157600080fd5b5050505b600154604080516316c2da8f60e11b8152600481018890526001600160a01b03878116602483015233604483015291519190921691632d85b51e91606480830192600092919082900301818387803b158015610d8057600080fd5b505af1158015610d94573d6000803e3d6000fd5b505050505050505050565b6001600160a01b03811660009081526017602052604081206009548290610dcd90600163ffffffff6125bb16565b815260208101919091526040016000205460ff1692915050565b60065490565b600f5490565b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b158015610e3e57600080fd5b505afa158015610e52573d6000803e3d6000fd5b505050506040513d6020811015610e6857600080fd5b5051610eaa576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600b55565b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b158015610efa57600080fd5b505afa158015610f0e573d6000803e3d6000fd5b505050506040513d6020811015610f2457600080fd5b5051610f66576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600e55565b600080546001600160a01b038381169116141561114a5760008054600554604080516370a0823160e01b81526001600160a01b03928316600482015290516b204fce5e3e2502611000000094936111409316916370a08231916024808301926020929190829003018186803b158015610fe357600080fd5b505afa158015610ff7573d6000803e3d6000fd5b505050506040513d602081101561100d57600080fd5b5051600054600354604080516347f3bf4360e11b815260206004820181905260126024830152716e6573742e76332e6d696e696e675361766560701b60448301529151611134946001600160a01b03908116946370a0823194911692638fe77e869260648083019392829003018186803b15801561108a57600080fd5b505afa15801561109e573d6000803e3d6000fd5b505050506040513d60208110156110b457600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b039092166004830152516024808301926020929190829003018186803b1580156110fb57600080fd5b505afa15801561110f573d6000803e3d6000fd5b505050506040513d602081101561112557600080fd5b5051859063ffffffff6125bb16565b9063ffffffff6125bb16565b92506108c9915050565b816001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561118357600080fd5b505afa158015611197573d6000803e3d6000fd5b505050506040513d60208110156111ad57600080fd5b505190506108c9565b60095490565b600154604080516335c14f4560e11b81523360048201526001600160a01b03848116602483015291516000939290921691636b829e8a91604480820192602092909190829003018186803b15801561121357600080fd5b505afa158015611227573d6000803e3d6000fd5b505050506040513d602081101561123d57600080fd5b5051905080611293576040805162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742073746f726167652062616c616e636500000000604482015290519081900360640190fd5b61129b6125fd565b6112a48261269b565b60065460075442916112bc919063ffffffff6125bb16565b81101580156112e757506112e3600854610c856006546007546125bb90919063ffffffff16565b8111155b61132b576040805162461bcd60e51b815260206004820152601060248201526f4e6f742074696d6520746f206472617760801b604482015290519081900360640190fd5b6018600061134560016009546125bb90919063ffffffff16565b8152602080820192909252604090810160009081206001600160a01b0387168252835281812033825290925290205460ff16156113b9576040805162461bcd60e51b815260206004820152600d60248201526c12185d99481c9958d95a5d9959609a1b604482015290519081900360640190fd5b6001600160a01b03831660009081526016602052604081206009548492906113e890600163ffffffff6125bb16565b8152602080820192909252604090810160009081203382528352818120939093556001600160a01b03861683526014909152902054611461576040805162461bcd60e51b815260206004820152601060248201526f2a37ba30b61033363abc1032b93937b960811b604482015290519081900360640190fd5b6001600160a01b038316600090815260146020908152604080832054601390925282205461149b919061085d90869063ffffffff61250816565b9050600081116114e7576040805162461bcd60e51b81526020600482015260126024820152714e6f206c696d697420617661696c61626c6560701b604482015290519081900360640190fd5b60016018600061150360016009546125bb90919063ffffffff16565b8152602080820192909252604090810160009081206001600160a01b03898116808452918552838320338085529552838320805460ff1916961515969096179095556002548351635d5da0f160e11b815260048101889052602481019290925260448201949094529151929093169263babb41e29260648084019382900301818387803b15801561159357600080fd5b505af11580156115a7573d6000803e3d6000fd5b5050604080516001600160a01b03881681526020810185905281517f6613317c42a18d1546058be1953572cabddc5b5edcc079ac81296639d30d6b939450908190039091019150a150505050565b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b15801561164057600080fd5b505afa158015611654573d6000803e3d6000fd5b505050506040513d602081101561166a57600080fd5b50516116ac576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600081116116eb5760405162461bcd60e51b8152600401808060200182810382526024815260200180612de56024913960400191505060405180910390fd5b6116fd81610e1063ffffffff61250816565b60065550565b60008042905080600754111561171d575050600754610b45565b600061173a60065461085d600754856125bb90919063ffffffff16565b9050611762610cdd61175383600163ffffffff61256116565b6006549063ffffffff61250816565b92505050610b45565b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b1580156117b657600080fd5b505afa1580156117ca573d6000803e3d6000fd5b505050506040513d60208110156117e057600080fd5b5051611822576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600c55565b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b15801561187257600080fd5b505afa158015611886573d6000803e3d6000fd5b505050506040513d602081101561189c57600080fd5b50516118de576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b038316908117909155604080516347f3bf4360e11b8152602060048083018290526024830152631b995cdd60e21b60448301529151849392638fe77e869260648082019391829003018186803b15801561194c57600080fd5b505afa158015611960573d6000803e3d6000fd5b505050506040513d602081101561197657600080fd5b5051600080546001600160a01b0319166001600160a01b03928316179055604080516347f3bf4360e11b815260206004820181905260116024830152706e6573742e76332e746f6b656e5361766560781b6044830152915192841692638fe77e8692606480840193919291829003018186803b1580156119f557600080fd5b505afa158015611a09573d6000803e3d6000fd5b505050506040513d6020811015611a1f57600080fd5b5051600180546001600160a01b0319166001600160a01b03928316179055604080516347f3bf4360e11b8152602060048201819052600e60248301526d6e6573742e76332e61626f6e757360901b60448301529151600093611ada9390861692638fe77e869260648083019392829003018186803b158015611aa057600080fd5b505afa158015611ab4573d6000803e3d6000fd5b505050506040513d6020811015611aca57600080fd5b50516001600160a01b0316610b45565b600280546001600160a01b0319166001600160a01b0383811691909117909155604080516347f3bf4360e11b8152602060048201819052601060248301526f6e6573742e76332e6c6576656c696e6760801b60448301529151939450600093611b6193871692638fe77e869260648082019391829003018186803b158015611aa057600080fd5b600480546001600160a01b0319166001600160a01b03838116919091178255604080516347f3bf4360e11b8152602093810184905260136024820152723732b9ba173b19973232b9ba393ab1ba34b7b760691b6044820152905193945090861692638fe77e8692606480840193919291829003018186803b158015611be557600080fd5b505afa158015611bf9573d6000803e3d6000fd5b505050506040513d6020811015611c0f57600080fd5b5051600580546001600160a01b0319166001600160a01b0390921691909117905550505050565b600c5490565b600b5490565b600d5490565b60008211611c875760405162461bcd60e51b8152600401808060200182810382526024815260200180612de56024913960400191505060405180910390fd5b600154604080516335c14f4560e11b81523360048201526001600160a01b03848116602483015291519190921691636b829e8a916044808301926020929190829003018186803b158015611cda57600080fd5b505afa158015611cee573d6000803e3d6000fd5b505050506040513d6020811015611d0457600080fd5b5051821115611d5a576040805162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742073746f726167652062616c616e636500000000604482015290519081900360640190fd5b6000546001600160a01b0382811691161415611e225760035460408051632cfc10cf60e21b815232600482015290516001600160a01b039092169163b3f0433c91602480820192602092909190829003018186803b158015611dbb57600080fd5b505afa158015611dcf573d6000803e3d6000fd5b505050506040513d6020811015611de557600080fd5b505115611e22576040805162461bcd60e51b8152602060048201526006602482015265566f74696e6760d01b604482015290519081900360640190fd5b6001546040805163cf1e421160e01b8152600481018590526001600160a01b0384811660248301523360448301529151919092169163cf1e421191606480830192600092919082900301818387803b158015611e7d57600080fd5b505af1158015611e91573d6000803e3d6000fd5b505050505050565b600a5490565b600e5490565b6001600160a01b039283166000908152601660209081526040808320948352938152838220929094168152925290205490565b6001600160a01b03821660009081526015602090815260408083208484529091529020545b92915050565b60105490565b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b158015611f5457600080fd5b505afa158015611f68573d6000803e3d6000fd5b505050506040513d6020811015611f7e57600080fd5b5051611fc0576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b60008111611fff5760405162461bcd60e51b8152600401808060200182810382526024815260200180612de56024913960400191505060405180910390fd5b600855565b60085490565b60125490565b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b15801561205b57600080fd5b505afa15801561206f573d6000803e3d6000fd5b505050506040513d602081101561208557600080fd5b50516120c7576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600f55565b6000806000806000806000806000804290506120f56006546007546125bb90919063ffffffff16565b8110158015612120575061211c600854610c856006546007546125bb90919063ffffffff16565b8111155b801561212e57506000600954115b801561217957506001600160a01b038b16600090815260176020526040812060095490919061216490600163ffffffff6125bb16565b815260208101919091526040016000205460ff165b156121ed576018600061219860016009546125bb90919063ffffffff16565b8152602080820192909252604090810160009081206001600160a01b038f16808352908452828220338352845282822054908252601384528282205460149094529190205491995090975060ff1691506122df565b600254604080516386895d0360e01b81526001600160a01b038e81166004830152915191909216916386895d03916024808301926020929190829003018186803b15801561223a57600080fd5b505afa15801561224e573d6000803e3d6000fd5b505050506040513d602081101561226457600080fd5b505197506122718b610f6b565b965060186000600954815260200190815260200160002060008c6001600160a01b03166001600160a01b031681526020019081526020016000206000336001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a900460ff1691505b600154604080516335c14f4560e11b81523360048201526001600160a01b038e8116602483015291519190921691636b829e8a916044808301926020929190829003018186803b15801561233257600080fd5b505afa158015612346573d6000803e3d6000fd5b505050506040513d602081101561235c57600080fd5b5051955060018215151415612374576000945061238b565b6123888761085d888b63ffffffff61250816565b94505b612393611703565b99506123b0600854610c856006548d6125bb90919063ffffffff16565b60015460408051636eb1769f60e11b81523360048201526001600160a01b0392831660248201529051929b50908d169163dd62ed3e91604480820192602092909190829003018186803b15801561240657600080fd5b505afa15801561241a573d6000803e3d6000fd5b505050506040513d602081101561243057600080fd5b5051604080516370a0823160e01b815233600482015290519195506001600160a01b038d16916370a0823191602480820192602092909190829003018186803b15801561247c57600080fd5b505afa158015612490573d6000803e3d6000fd5b505050506040513d60208110156124a657600080fd5b5051999b989a5096989597949650929491939192919050565b600061250183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061283c565b9392505050565b60008261251757506000611efd565b8282028284828161252457fe5b04146125015760405162461bcd60e51b8152600401808060200182810382526021815260200180612e096021913960400191505060405180910390fd5b600082820183811015612501576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061250183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128de565b6007544290811061269857600061262560065461085d600754856125bb90919063ffffffff16565b90506000612641610cdd6006548461250890919063ffffffff16565b9050600061265a6008548361256190919063ffffffff16565b905081841015801561266c5750808411155b1561269457612679611703565b60075560095461269090600163ffffffff61256116565b6009555b5050505b50565b6001600160a01b03811660009081526017602052604081206009549091906126ca90600163ffffffff6125bb16565b815260208101919091526040016000205460ff16612698576126eb81612938565b600254604080516386895d0360e01b81526001600160a01b038481166004830152915191909216916386895d03916024808301926020929190829003018186803b15801561273857600080fd5b505afa15801561274c573d6000803e3d6000fd5b505050506040513d602081101561276257600080fd5b50516001600160a01b03821660009081526013602052604090205561278681610f6b565b6001600160a01b0382166000908152601460205260409020556127a881610f6b565b6001600160a01b03821660009081526015602052604081206009549091906127d790600163ffffffff6125bb16565b815260208082019290925260409081016000908120939093556001600160a01b0384168352601790915281206009546001929061281a908463ffffffff6125bb16565b81526020810191909152604001600020805460ff191691151591909117905550565b600081836128c85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561288d578181015183820152602001612875565b50505050905090810190601f1680156128ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816128d457fe5b0495945050505050565b600081848411156129305760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561288d578181015183820152602001612875565b505050900390565b600080546001600160a01b03838116911614156129655761295e600b5461085d84610f6b565b9050612977565b612974600c5461085d84610f6b565b90505b600d5460005b828110156129ac576129a26108ad606461085d600a548661250890919063ffffffff16565b915060010161297d565b50600254604080516386895d0360e01b81526001600160a01b038681166004830152915160009392909216916386895d0391602480820192602092909190829003018186803b1580156129fe57600080fd5b505afa158015612a12573d6000803e3d6000fd5b505050506040513d6020811015612a2857600080fd5b5051905081811115612ccf57600069010f0cf064dd59200000821115612a6f57612a68601254611134606461085d6011548761250890919063ffffffff16565b9050612abd565b683635c9adc5dea00000821115612aa057612a68601054611134606461085d600f548761250890919063ffffffff16565b612aba606461085d600e548561250890919063ffffffff16565b90505b82612ace838363ffffffff6125bb16565b1015612be9576002546001600160a01b031663babb41e2612af5848663ffffffff6125bb16565b604080516001600160e01b031960e085901b16815260048101929092526001600160a01b038916602483015230604483015251606480830192600092919082900301818387803b158015612b4857600080fd5b505af1158015612b5c573d6000803e3d6000fd5b50506004546001600160a01b0316915063a10c2a789050612b83848663ffffffff6125bb16565b876040518363ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506000604051808303818588803b158015612bcb57600080fd5b505af1158015612bdf573d6000803e3d6000fd5b5050505050612cc9565b60025460408051635d5da0f160e11b8152600481018490526001600160a01b0388811660248301523060448301529151919092169163babb41e291606480830192600092919082900301818387803b158015612c4457600080fd5b505af1158015612c58573d6000803e3d6000fd5b50506004805460408051631421854f60e31b81526001600160a01b038b811694820194909452905192909116935063a10c2a7892508491602480830192600092919082900301818588803b158015612caf57600080fd5b505af1158015612cc3573d6000803e3d6000fd5b50505050505b50612694565b6004546000906001600160a01b031663d09fdaf0612cf3858563ffffffff6125bb16565b604080516001600160e01b031960e085901b16815260048101929092526001600160a01b03891660248301523060448301525160648083019260209291908290030181600087803b158015612d4757600080fd5b505af1158015612d5b573d6000803e3d6000fd5b505050506040513d6020811015612d7157600080fd5b505160025460408051631421854f60e31b81526001600160a01b038981166004830152915193945091169163a10c2a78918491602480830192600092919082900301818588803b158015612dc457600080fd5b505af1158015612dd8573d6000803e3d6000fd5b5050505050505050505056fe506172616d65746572206e6565647320746f2062652067726561746572207468616e2030536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220a1c7e604d5c5c0a6323d906036e369370f2d48c7dff1a479979d56bee48ef1ea64736f6c634300060000330000000000000000000000006cd5698e8854fb6879d6b1c694223b389b465dea

Deployed Bytecode

0x6080604052600436106101fd5760003560e01c80637711e8571161010d578063d6c9173e116100a0578063e945a4d21161006f578063e945a4d21461067f578063ea5e9f2c146106a9578063ef1692d3146106be578063f5047bd1146106d3578063ffdd5cf1146106fd57610204565b8063d6c9173e146105d9578063d95a6d74146105ee578063da3bba0514610631578063dcc9a7541461066a57610204565b8063ab7b357c116100dc578063ab7b357c14610561578063be28200e14610576578063bfe91ccf1461058b578063c80a7798146105c457610204565b80637711e857146104da578063a19b3ade146104ef578063a781e7f814610519578063aa8a41301461054c57610204565b80632462e4d8116101905780633a078f201161015f5780633a078f201461040b5780633fabe09b146104355780634ba8ceb61461046857806354f2b1d81461047d578063659cf235146104b057610204565b80632462e4d8146103705780632cc3eb53146103b75780632e104bc1146103cc5780632eea2bd9146103e157610204565b80631f6b1851116101cc5780631f6b1851146102ce5780631fd3abf3146102f8578063202b94821461030d578063229c893a1461033757610204565b806308c44a31146102095780630a894e3214610235578063145251631461027a5780631a6910f6146102a457610204565b3661020457005b600080fd5b34801561021557600080fd5b506102336004803603602081101561022c57600080fd5b5035610779565b005b34801561024157600080fd5b506102686004803603602081101561025857600080fd5b50356001600160a01b0316610835565b60408051918252519081900360200190f35b34801561028657600080fd5b506102336004803603602081101561029d57600080fd5b50356108ce565b3480156102b057600080fd5b50610233600480360360208110156102c757600080fd5b50356109c9565b3480156102da57600080fd5b50610233600480360360208110156102f157600080fd5b5035610a85565b34801561030457600080fd5b50610268610b41565b34801561031957600080fd5b506102336004803603602081101561033057600080fd5b5035610b48565b34801561034357600080fd5b506102336004803603604081101561035a57600080fd5b50803590602001356001600160a01b0316610c43565b34801561037c57600080fd5b506103a36004803603602081101561039357600080fd5b50356001600160a01b0316610d9f565b604080519115158252519081900360200190f35b3480156103c357600080fd5b50610268610de7565b3480156103d857600080fd5b50610268610ded565b3480156103ed57600080fd5b506102336004803603602081101561040457600080fd5b5035610df3565b34801561041757600080fd5b506102336004803603602081101561042e57600080fd5b5035610eaf565b34801561044157600080fd5b506102686004803603602081101561045857600080fd5b50356001600160a01b0316610f6b565b34801561047457600080fd5b506102686111b6565b34801561048957600080fd5b50610233600480360360208110156104a057600080fd5b50356001600160a01b03166111bc565b3480156104bc57600080fd5b50610233600480360360208110156104d357600080fd5b50356115f5565b3480156104e657600080fd5b50610268611703565b3480156104fb57600080fd5b506102336004803603602081101561051257600080fd5b503561176b565b34801561052557600080fd5b506102336004803603602081101561053c57600080fd5b50356001600160a01b0316611827565b34801561055857600080fd5b50610268611c36565b34801561056d57600080fd5b50610268611c3c565b34801561058257600080fd5b50610268611c42565b34801561059757600080fd5b50610233600480360360408110156105ae57600080fd5b50803590602001356001600160a01b0316611c48565b3480156105d057600080fd5b50610268611e99565b3480156105e557600080fd5b50610268611e9f565b3480156105fa57600080fd5b506102686004803603606081101561061157600080fd5b506001600160a01b03813581169160208101359160409091013516611ea5565b34801561063d57600080fd5b506102686004803603604081101561065457600080fd5b506001600160a01b038135169060200135611ed8565b34801561067657600080fd5b50610268611f03565b34801561068b57600080fd5b50610233600480360360208110156106a257600080fd5b5035611f09565b3480156106b557600080fd5b50610268612004565b3480156106ca57600080fd5b5061026861200a565b3480156106df57600080fd5b50610233600480360360208110156106f657600080fd5b5035612010565b34801561070957600080fd5b506107306004803603602081101561072057600080fd5b50356001600160a01b03166120cc565b60408051998a5260208a0198909852888801969096526060880194909452608087019290925260a086015260c085015260e0840152151561010083015251908190036101200190f35b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b1580156107c457600080fd5b505afa1580156107d8573d6000803e3d6000fd5b505050506040513d60208110156107ee57600080fd5b5051610830576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b601055565b6000805481906001600160a01b038481169116141561087057610869600b5461085d85610f6b565b9063ffffffff6124bf16565b9050610882565b61087f600c5461085d85610f6b565b90505b600d5460005b828110156108c4576108ba6108ad606461085d600a548661250890919063ffffffff16565b839063ffffffff61256116565b9150600101610888565b509150505b919050565b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b15801561091957600080fd5b505afa15801561092d573d6000803e3d6000fd5b505050506040513d602081101561094357600080fd5b5051610985576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600081116109c45760405162461bcd60e51b8152600401808060200182810382526024815260200180612de56024913960400191505060405180910390fd5b600d55565b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b158015610a1457600080fd5b505afa158015610a28573d6000803e3d6000fd5b505050506040513d6020811015610a3e57600080fd5b5051610a80576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b601155565b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b158015610ad057600080fd5b505afa158015610ae4573d6000803e3d6000fd5b505050506040513d6020811015610afa57600080fd5b5051610b3c576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b601255565b6011545b90565b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b158015610b9357600080fd5b505afa158015610ba7573d6000803e3d6000fd5b505050506040513d6020811015610bbd57600080fd5b5051610bff576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b60008111610c3e5760405162461bcd60e51b8152600401808060200182810382526024815260200180612de56024913960400191505060405180910390fd5b600a55565b60075460065442919081831015610ca457610c64828263ffffffff6125bb16565b8310158015610c955750600854610c9190610c85848463ffffffff6125bb16565b9063ffffffff61256116565b8311155b15610c9f57600080fd5b610d25565b6000610cc160065461085d600754876125bb90919063ffffffff16565b90506000610cec610cdd6006548461250890919063ffffffff16565b6007549063ffffffff61256116565b90506000610d056008548361256190919063ffffffff16565b9050818610158015610d175750808611155b15610d2157600080fd5b5050505b600154604080516316c2da8f60e11b8152600481018890526001600160a01b03878116602483015233604483015291519190921691632d85b51e91606480830192600092919082900301818387803b158015610d8057600080fd5b505af1158015610d94573d6000803e3d6000fd5b505050505050505050565b6001600160a01b03811660009081526017602052604081206009548290610dcd90600163ffffffff6125bb16565b815260208101919091526040016000205460ff1692915050565b60065490565b600f5490565b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b158015610e3e57600080fd5b505afa158015610e52573d6000803e3d6000fd5b505050506040513d6020811015610e6857600080fd5b5051610eaa576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600b55565b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b158015610efa57600080fd5b505afa158015610f0e573d6000803e3d6000fd5b505050506040513d6020811015610f2457600080fd5b5051610f66576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600e55565b600080546001600160a01b038381169116141561114a5760008054600554604080516370a0823160e01b81526001600160a01b03928316600482015290516b204fce5e3e2502611000000094936111409316916370a08231916024808301926020929190829003018186803b158015610fe357600080fd5b505afa158015610ff7573d6000803e3d6000fd5b505050506040513d602081101561100d57600080fd5b5051600054600354604080516347f3bf4360e11b815260206004820181905260126024830152716e6573742e76332e6d696e696e675361766560701b60448301529151611134946001600160a01b03908116946370a0823194911692638fe77e869260648083019392829003018186803b15801561108a57600080fd5b505afa15801561109e573d6000803e3d6000fd5b505050506040513d60208110156110b457600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b039092166004830152516024808301926020929190829003018186803b1580156110fb57600080fd5b505afa15801561110f573d6000803e3d6000fd5b505050506040513d602081101561112557600080fd5b5051859063ffffffff6125bb16565b9063ffffffff6125bb16565b92506108c9915050565b816001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561118357600080fd5b505afa158015611197573d6000803e3d6000fd5b505050506040513d60208110156111ad57600080fd5b505190506108c9565b60095490565b600154604080516335c14f4560e11b81523360048201526001600160a01b03848116602483015291516000939290921691636b829e8a91604480820192602092909190829003018186803b15801561121357600080fd5b505afa158015611227573d6000803e3d6000fd5b505050506040513d602081101561123d57600080fd5b5051905080611293576040805162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742073746f726167652062616c616e636500000000604482015290519081900360640190fd5b61129b6125fd565b6112a48261269b565b60065460075442916112bc919063ffffffff6125bb16565b81101580156112e757506112e3600854610c856006546007546125bb90919063ffffffff16565b8111155b61132b576040805162461bcd60e51b815260206004820152601060248201526f4e6f742074696d6520746f206472617760801b604482015290519081900360640190fd5b6018600061134560016009546125bb90919063ffffffff16565b8152602080820192909252604090810160009081206001600160a01b0387168252835281812033825290925290205460ff16156113b9576040805162461bcd60e51b815260206004820152600d60248201526c12185d99481c9958d95a5d9959609a1b604482015290519081900360640190fd5b6001600160a01b03831660009081526016602052604081206009548492906113e890600163ffffffff6125bb16565b8152602080820192909252604090810160009081203382528352818120939093556001600160a01b03861683526014909152902054611461576040805162461bcd60e51b815260206004820152601060248201526f2a37ba30b61033363abc1032b93937b960811b604482015290519081900360640190fd5b6001600160a01b038316600090815260146020908152604080832054601390925282205461149b919061085d90869063ffffffff61250816565b9050600081116114e7576040805162461bcd60e51b81526020600482015260126024820152714e6f206c696d697420617661696c61626c6560701b604482015290519081900360640190fd5b60016018600061150360016009546125bb90919063ffffffff16565b8152602080820192909252604090810160009081206001600160a01b03898116808452918552838320338085529552838320805460ff1916961515969096179095556002548351635d5da0f160e11b815260048101889052602481019290925260448201949094529151929093169263babb41e29260648084019382900301818387803b15801561159357600080fd5b505af11580156115a7573d6000803e3d6000fd5b5050604080516001600160a01b03881681526020810185905281517f6613317c42a18d1546058be1953572cabddc5b5edcc079ac81296639d30d6b939450908190039091019150a150505050565b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b15801561164057600080fd5b505afa158015611654573d6000803e3d6000fd5b505050506040513d602081101561166a57600080fd5b50516116ac576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600081116116eb5760405162461bcd60e51b8152600401808060200182810382526024815260200180612de56024913960400191505060405180910390fd5b6116fd81610e1063ffffffff61250816565b60065550565b60008042905080600754111561171d575050600754610b45565b600061173a60065461085d600754856125bb90919063ffffffff16565b9050611762610cdd61175383600163ffffffff61256116565b6006549063ffffffff61250816565b92505050610b45565b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b1580156117b657600080fd5b505afa1580156117ca573d6000803e3d6000fd5b505050506040513d60208110156117e057600080fd5b5051611822576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600c55565b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b15801561187257600080fd5b505afa158015611886573d6000803e3d6000fd5b505050506040513d602081101561189c57600080fd5b50516118de576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b038316908117909155604080516347f3bf4360e11b8152602060048083018290526024830152631b995cdd60e21b60448301529151849392638fe77e869260648082019391829003018186803b15801561194c57600080fd5b505afa158015611960573d6000803e3d6000fd5b505050506040513d602081101561197657600080fd5b5051600080546001600160a01b0319166001600160a01b03928316179055604080516347f3bf4360e11b815260206004820181905260116024830152706e6573742e76332e746f6b656e5361766560781b6044830152915192841692638fe77e8692606480840193919291829003018186803b1580156119f557600080fd5b505afa158015611a09573d6000803e3d6000fd5b505050506040513d6020811015611a1f57600080fd5b5051600180546001600160a01b0319166001600160a01b03928316179055604080516347f3bf4360e11b8152602060048201819052600e60248301526d6e6573742e76332e61626f6e757360901b60448301529151600093611ada9390861692638fe77e869260648083019392829003018186803b158015611aa057600080fd5b505afa158015611ab4573d6000803e3d6000fd5b505050506040513d6020811015611aca57600080fd5b50516001600160a01b0316610b45565b600280546001600160a01b0319166001600160a01b0383811691909117909155604080516347f3bf4360e11b8152602060048201819052601060248301526f6e6573742e76332e6c6576656c696e6760801b60448301529151939450600093611b6193871692638fe77e869260648082019391829003018186803b158015611aa057600080fd5b600480546001600160a01b0319166001600160a01b03838116919091178255604080516347f3bf4360e11b8152602093810184905260136024820152723732b9ba173b19973232b9ba393ab1ba34b7b760691b6044820152905193945090861692638fe77e8692606480840193919291829003018186803b158015611be557600080fd5b505afa158015611bf9573d6000803e3d6000fd5b505050506040513d6020811015611c0f57600080fd5b5051600580546001600160a01b0319166001600160a01b0390921691909117905550505050565b600c5490565b600b5490565b600d5490565b60008211611c875760405162461bcd60e51b8152600401808060200182810382526024815260200180612de56024913960400191505060405180910390fd5b600154604080516335c14f4560e11b81523360048201526001600160a01b03848116602483015291519190921691636b829e8a916044808301926020929190829003018186803b158015611cda57600080fd5b505afa158015611cee573d6000803e3d6000fd5b505050506040513d6020811015611d0457600080fd5b5051821115611d5a576040805162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742073746f726167652062616c616e636500000000604482015290519081900360640190fd5b6000546001600160a01b0382811691161415611e225760035460408051632cfc10cf60e21b815232600482015290516001600160a01b039092169163b3f0433c91602480820192602092909190829003018186803b158015611dbb57600080fd5b505afa158015611dcf573d6000803e3d6000fd5b505050506040513d6020811015611de557600080fd5b505115611e22576040805162461bcd60e51b8152602060048201526006602482015265566f74696e6760d01b604482015290519081900360640190fd5b6001546040805163cf1e421160e01b8152600481018590526001600160a01b0384811660248301523360448301529151919092169163cf1e421191606480830192600092919082900301818387803b158015611e7d57600080fd5b505af1158015611e91573d6000803e3d6000fd5b505050505050565b600a5490565b600e5490565b6001600160a01b039283166000908152601660209081526040808320948352938152838220929094168152925290205490565b6001600160a01b03821660009081526015602090815260408083208484529091529020545b92915050565b60105490565b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b158015611f5457600080fd5b505afa158015611f68573d6000803e3d6000fd5b505050506040513d6020811015611f7e57600080fd5b5051611fc0576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b60008111611fff5760405162461bcd60e51b8152600401808060200182810382526024815260200180612de56024913960400191505060405180910390fd5b600855565b60085490565b60125490565b6003546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b15801561205b57600080fd5b505afa15801561206f573d6000803e3d6000fd5b505050506040513d602081101561208557600080fd5b50516120c7576040805162461bcd60e51b815260206004820152600c60248201526b4e6f20617574686f7269747960a01b604482015290519081900360640190fd5b600f55565b6000806000806000806000806000804290506120f56006546007546125bb90919063ffffffff16565b8110158015612120575061211c600854610c856006546007546125bb90919063ffffffff16565b8111155b801561212e57506000600954115b801561217957506001600160a01b038b16600090815260176020526040812060095490919061216490600163ffffffff6125bb16565b815260208101919091526040016000205460ff165b156121ed576018600061219860016009546125bb90919063ffffffff16565b8152602080820192909252604090810160009081206001600160a01b038f16808352908452828220338352845282822054908252601384528282205460149094529190205491995090975060ff1691506122df565b600254604080516386895d0360e01b81526001600160a01b038e81166004830152915191909216916386895d03916024808301926020929190829003018186803b15801561223a57600080fd5b505afa15801561224e573d6000803e3d6000fd5b505050506040513d602081101561226457600080fd5b505197506122718b610f6b565b965060186000600954815260200190815260200160002060008c6001600160a01b03166001600160a01b031681526020019081526020016000206000336001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a900460ff1691505b600154604080516335c14f4560e11b81523360048201526001600160a01b038e8116602483015291519190921691636b829e8a916044808301926020929190829003018186803b15801561233257600080fd5b505afa158015612346573d6000803e3d6000fd5b505050506040513d602081101561235c57600080fd5b5051955060018215151415612374576000945061238b565b6123888761085d888b63ffffffff61250816565b94505b612393611703565b99506123b0600854610c856006548d6125bb90919063ffffffff16565b60015460408051636eb1769f60e11b81523360048201526001600160a01b0392831660248201529051929b50908d169163dd62ed3e91604480820192602092909190829003018186803b15801561240657600080fd5b505afa15801561241a573d6000803e3d6000fd5b505050506040513d602081101561243057600080fd5b5051604080516370a0823160e01b815233600482015290519195506001600160a01b038d16916370a0823191602480820192602092909190829003018186803b15801561247c57600080fd5b505afa158015612490573d6000803e3d6000fd5b505050506040513d60208110156124a657600080fd5b5051999b989a5096989597949650929491939192919050565b600061250183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061283c565b9392505050565b60008261251757506000611efd565b8282028284828161252457fe5b04146125015760405162461bcd60e51b8152600401808060200182810382526021815260200180612e096021913960400191505060405180910390fd5b600082820183811015612501576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061250183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128de565b6007544290811061269857600061262560065461085d600754856125bb90919063ffffffff16565b90506000612641610cdd6006548461250890919063ffffffff16565b9050600061265a6008548361256190919063ffffffff16565b905081841015801561266c5750808411155b1561269457612679611703565b60075560095461269090600163ffffffff61256116565b6009555b5050505b50565b6001600160a01b03811660009081526017602052604081206009549091906126ca90600163ffffffff6125bb16565b815260208101919091526040016000205460ff16612698576126eb81612938565b600254604080516386895d0360e01b81526001600160a01b038481166004830152915191909216916386895d03916024808301926020929190829003018186803b15801561273857600080fd5b505afa15801561274c573d6000803e3d6000fd5b505050506040513d602081101561276257600080fd5b50516001600160a01b03821660009081526013602052604090205561278681610f6b565b6001600160a01b0382166000908152601460205260409020556127a881610f6b565b6001600160a01b03821660009081526015602052604081206009549091906127d790600163ffffffff6125bb16565b815260208082019290925260409081016000908120939093556001600160a01b0384168352601790915281206009546001929061281a908463ffffffff6125bb16565b81526020810191909152604001600020805460ff191691151591909117905550565b600081836128c85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561288d578181015183820152602001612875565b50505050905090810190601f1680156128ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816128d457fe5b0495945050505050565b600081848411156129305760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561288d578181015183820152602001612875565b505050900390565b600080546001600160a01b03838116911614156129655761295e600b5461085d84610f6b565b9050612977565b612974600c5461085d84610f6b565b90505b600d5460005b828110156129ac576129a26108ad606461085d600a548661250890919063ffffffff16565b915060010161297d565b50600254604080516386895d0360e01b81526001600160a01b038681166004830152915160009392909216916386895d0391602480820192602092909190829003018186803b1580156129fe57600080fd5b505afa158015612a12573d6000803e3d6000fd5b505050506040513d6020811015612a2857600080fd5b5051905081811115612ccf57600069010f0cf064dd59200000821115612a6f57612a68601254611134606461085d6011548761250890919063ffffffff16565b9050612abd565b683635c9adc5dea00000821115612aa057612a68601054611134606461085d600f548761250890919063ffffffff16565b612aba606461085d600e548561250890919063ffffffff16565b90505b82612ace838363ffffffff6125bb16565b1015612be9576002546001600160a01b031663babb41e2612af5848663ffffffff6125bb16565b604080516001600160e01b031960e085901b16815260048101929092526001600160a01b038916602483015230604483015251606480830192600092919082900301818387803b158015612b4857600080fd5b505af1158015612b5c573d6000803e3d6000fd5b50506004546001600160a01b0316915063a10c2a789050612b83848663ffffffff6125bb16565b876040518363ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506000604051808303818588803b158015612bcb57600080fd5b505af1158015612bdf573d6000803e3d6000fd5b5050505050612cc9565b60025460408051635d5da0f160e11b8152600481018490526001600160a01b0388811660248301523060448301529151919092169163babb41e291606480830192600092919082900301818387803b158015612c4457600080fd5b505af1158015612c58573d6000803e3d6000fd5b50506004805460408051631421854f60e31b81526001600160a01b038b811694820194909452905192909116935063a10c2a7892508491602480830192600092919082900301818588803b158015612caf57600080fd5b505af1158015612cc3573d6000803e3d6000fd5b50505050505b50612694565b6004546000906001600160a01b031663d09fdaf0612cf3858563ffffffff6125bb16565b604080516001600160e01b031960e085901b16815260048101929092526001600160a01b03891660248301523060448301525160648083019260209291908290030181600087803b158015612d4757600080fd5b505af1158015612d5b573d6000803e3d6000fd5b505050506040513d6020811015612d7157600080fd5b505160025460408051631421854f60e31b81526001600160a01b038981166004830152915193945091169163a10c2a78918491602480830192600092919082900301818588803b158015612dc457600080fd5b505af1158015612dd8573d6000803e3d6000fd5b5050505050505050505056fe506172616d65746572206e6565647320746f2062652067726561746572207468616e2030536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220a1c7e604d5c5c0a6323d906036e369370f2d48c7dff1a479979d56bee48ef1ea64736f6c63430006000033

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

0000000000000000000000006cd5698e8854fb6879d6b1c694223b389b465dea

-----Decoded View---------------
Arg [0] : voteFactory (address): 0x6Cd5698E8854Fb6879d6B1C694223b389B465dea

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000006cd5698e8854fb6879d6b1c694223b389b465dea


Deployed Bytecode Sourcemap

129:23755:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22885:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22885:106:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22885:106:0;;:::i;:::-;;17913:576;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17913:576:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17913:576:0;-1:-1:-1;;;;;17913:576:0;;:::i;:::-;;;;;;;;;;;;;;;;22156:169;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22156:169:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22156:169:0;;:::i;22668:116::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22668:116:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22668:116:0;;:::i;23092:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23092:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23092:110:0;;:::i;19524:106::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19524:106:0;;;:::i;21871:173::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21871:173:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21871:173:0;;:::i;5837:999::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5837:999:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5837:999:0;;;;;;-1:-1:-1;;;;;5837:999:0;;:::i;18642:122::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18642:122:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18642:122:0;-1:-1:-1;;;;;18642:122:0;;:::i;:::-;;;;;;;;;;;;;;;;;;17472:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17472:92:0;;;:::i;19416:102::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19416:102:0;;;:::i;23320:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23320:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23320:110:0;;:::i;22432:112::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22432:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22432:112:0;;:::i;16932:453::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16932:453:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16932:453:0;-1:-1:-1;;;;;16932:453:0;;:::i;20370:84::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20370:84:0;;;:::i;10171:1192::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10171:1192:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10171:1192:0;-1:-1:-1;;;;;10171:1192:0;;:::i;21281:173::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21281:173:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21281:173:0;;:::i;16509:325::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16509:325:0;;;:::i;23550:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23550:114:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23550:114:0;;:::i;4922:786::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4922:786:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4922:786:0;-1:-1:-1;;;;;4922:786:0;;:::i;20688:116::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20688:116:0;;;:::i;20514:112::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20514:112:0;;;:::i;19110:104::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19110:104:0;;;:::i;6963:574::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6963:574:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6963:574:0;;;;;;-1:-1:-1;;;;;6963:574:0;;:::i;18894:109::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18894:109:0;;;:::i;19308:102::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19308:102:0;;;:::i;20150:168::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20150:168:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;20150:168:0;;;;;;;;;;;;;;;;;:::i;19783:156::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19783:156:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;19783:156:0;;;;;;;;:::i;20882:108::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20882:108:0;;;:::i;21565:178::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21565:178:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21565:178:0;;:::i;17682:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17682:110:0;;;:::i;21068:112::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21068:112:0;;;:::i;22550:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22550:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22550:112:0;;:::i;14965:1449::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14965:1449:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14965:1449:0;-1:-1:-1;;;;;14965:1449:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22885:106;23799:12;;:45;;;-1:-1:-1;;;23799:45:0;;23832:10;23799:45;;;;;;-1:-1:-1;;;;;23799:12:0;;;;:24;;:45;;;;;;;;;;;;;;;:12;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;23799:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23799:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23799:45:0;23791:70;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;;;;22959:18:::1;:24:::0;22885:106::o;17913:576::-;17977:7;18049:13;;17977:7;;-1:-1:-1;;;;;18032:31:0;;;18049:13;;18032:31;18028:211;;;18095:41;18115:20;;18095:15;18104:5;18095:8;:15::i;:::-;:19;:41;:19;:41;:::i;:::-;18080:56;;18028:211;;;18184:43;18204:22;;18184:15;18193:5;18184:8;:15::i;:43::-;18169:58;;18028:211;18273:16;;18249:21;18300:151;18324:12;18320:1;:16;18300:151;;;18374:65;18392:46;18434:3;18392:37;18410:18;;18392:13;:17;;:37;;;;:::i;:46::-;18374:13;;:65;:17;:65;:::i;:::-;18358:81;-1:-1:-1;18338:3:0;;18300:151;;;-1:-1:-1;18468:13:0;-1:-1:-1;;17913:576:0;;;;:::o;22156:169::-;23799:12;;:45;;;-1:-1:-1;;;23799:45:0;;23832:10;23799:45;;;;;;-1:-1:-1;;;;;23799:12:0;;;;:24;;:45;;;;;;;;;;;;;;;:12;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;23799:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23799:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23799:45:0;23791:70;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;;;;22242:1:::1;22236:3;:7;22228:56;;;;-1:-1:-1::0;;;22228:56:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22295:16;:22:::0;22156:169::o;22668:116::-;23799:12;;:45;;;-1:-1:-1;;;23799:45:0;;23832:10;23799:45;;;;;;-1:-1:-1;;;;;23799:12:0;;;;:24;;:45;;;;;;;;;;;;;;;:12;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;23799:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23799:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23799:45:0;23791:70;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;;;;22747:17:::1;:29:::0;22668:116::o;23092:110::-;23799:12;;:45;;;-1:-1:-1;;;23799:45:0;;23832:10;23799:45;;;;;;-1:-1:-1;;;;;23799:12:0;;;;:24;;:45;;;;;;;;;;;;;;;:12;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;23799:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23799:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23799:45:0;23791:70;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;;;;23168:20:::1;:26:::0;23092:110::o;19524:106::-;19605:17;;19524:106;;:::o;21871:173::-;23799:12;;:45;;;-1:-1:-1;;;23799:45:0;;23832:10;23799:45;;;;;;-1:-1:-1;;;;;23799:12:0;;;;:24;;:45;;;;;;;;;;;;;;;:12;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;23799:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23799:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23799:45:0;23791:70;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;;;;21959:1:::1;21953:3;:7;21945:56;;;;-1:-1:-1::0;;;21945:56:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22012:18;:24:::0;21871:173::o;5837:999::-;5956:9;;5996:10;;5923:3;;5956:9;6021:18;;;6017:728;;;6110:23;:8;6123:9;6110:23;:12;:23;:::i;:::-;6099:7;:34;;:97;;;;-1:-1:-1;6176:19:0;;6148:48;;:23;:8;6161:9;6148:23;:12;:23;:::i;:::-;:27;:48;:27;:48;:::i;:::-;6137:7;:59;;6099:97;6097:100;6089:109;;;;;;6017:728;;;6268:13;6284:40;6313:10;;6285:22;6297:9;;6285:7;:11;;:22;;;;:::i;6284:40::-;6268:56;;6404:17;6424:38;6438:23;6450:10;;6439:5;6438:11;;:23;;;;:::i;:::-;6424:9;;;:38;:13;:38;:::i;:::-;6404:58;;6544:15;6562:34;6576:19;;6562:9;:13;;:34;;;;:::i;:::-;6544:52;;6700:9;6689:7;:20;;:42;;;;;6724:7;6713;:18;;6689:42;6687:45;6679:54;;;;;;6017:728;;;;6755:10;;:56;;;-1:-1:-1;;;6755:56:0;;;;;;;;-1:-1:-1;;;;;6755:56:0;;;;;;;6799:10;6755:56;;;;;;:10;;;;;:20;;:56;;;;;:10;;:56;;;;;;;:10;;:56;;;5:2:-1;;;;30:1;27;20:12;5:2;6755:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6755:56:0;;;;5837:999;;;;;:::o;18642:122::-;-1:-1:-1;;;;;18725:16:0;;18701:4;18725:16;;;:9;:16;;;;;18742:6;;18701:4;;18742:13;;18753:1;18742:13;:10;:13;:::i;:::-;18725:31;;;;;;;;;;;-1:-1:-1;18725:31:0;;;;;18642:122;-1:-1:-1;;18642:122:0:o;17472:92::-;17546:10;;17472:92;:::o;19416:102::-;19495:15;;19416:102;:::o;23320:110::-;23799:12;;:45;;;-1:-1:-1;;;23799:45:0;;23832:10;23799:45;;;;;;-1:-1:-1;;;;;23799:12:0;;;;:24;;:45;;;;;;;;;;;;;;;:12;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;23799:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23799:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23799:45:0;23791:70;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;;;;23396:20:::1;:26:::0;23320:110::o;22432:112::-;23799:12;;:45;;;-1:-1:-1;;;23799:45:0;;23832:10;23799:45;;;;;;-1:-1:-1;;;;;23799:12:0;;;;:24;;:45;;;;;;;;;;;;;;;:12;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;23799:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23799:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23799:45:0;23791:70;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;;;;22509:15:::1;:27:::0;22432:112::o;16932:453::-;16986:7;17027:13;;-1:-1:-1;;;;;17010:31:0;;;17027:13;;17010:31;17006:372;;;17058:11;17217:13;;17249:19;;17217:53;;;-1:-1:-1;;;17217:53:0;;-1:-1:-1;;;;;17249:19:0;;;17217:53;;;;;;17072:17;;17058:11;17122:149;;17217:13;;:23;;:53;;;;;;;;;;;;;;:13;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;17217:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17217:53:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17217:53:0;17130:13;;17162:12;;:47;;;-1:-1:-1;;;17162:47:0;;17217:53;17162:47;;;;;;;;;;;-1:-1:-1;;;17162:47:0;;;;;;17122:90;;-1:-1:-1;;;;;17130:13:0;;;;:23;;17162:12;;;:25;;:47;;;;;17217:53;17162:47;;;;;:12;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;17162:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17162:47:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17162:47:0;17130:81;;;-1:-1:-1;;;;;;17130:81:0;;;;;;;-1:-1:-1;;;;;17130:81:0;;;;;;;;;;;;;17162:47;;17130:81;;;;;;;;;;;5:2:-1;;;;30:1;27;20:12;5:2;17130:81:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17130:81:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17130:81:0;17122:3;;:90;:7;:90;:::i;:::-;:94;:149;:94;:149;:::i;:::-;17104:167;-1:-1:-1;17286:14:0;;-1:-1:-1;;17286:14:0;17006:372;17346:5;-1:-1:-1;;;;;17340:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17340:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17340:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17340:26:0;;-1:-1:-1;17333:33:0;;20370:84;20440:6;;20370:84;:::o;10171:1192::-;10245:10;;:50;;;-1:-1:-1;;;10245:50:0;;10276:10;10245:50;;;;-1:-1:-1;;;;;10245:50:0;;;;;;;;;10223:19;;10245:10;;;;;:22;;:50;;;;;;;;;;;;;;;:10;:50;;;5:2:-1;;;;30:1;27;20:12;5:2;10245:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10245:50:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10245:50:0;;-1:-1:-1;10314:15:0;10306:56;;;;;-1:-1:-1;;;10306:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10373:12;:10;:12::i;:::-;10396:18;10408:5;10396:11;:18::i;:::-;10592:10;;10578:9;;10545:3;;10578:25;;:9;:25;:13;:25;:::i;:::-;10567:7;:36;;:101;;;;;10618:50;10648:19;;10618:25;10632:10;;10618:9;;:13;;:25;;;;:::i;:50::-;10607:7;:61;;10567:101;10559:130;;;;;-1:-1:-1;;;10559:130:0;;;;;;;;;;;;-1:-1:-1;;;10559:130:0;;;;;;;;;;;;;;;10709:11;:26;10721:13;10732:1;10721:6;;:10;;:13;;;;:::i;:::-;10709:26;;;;;;;;;;;;;;-1:-1:-1;10709:26:0;;;-1:-1:-1;;;;;10709:33:0;;;;;;;;;10751:10;10709:54;;;;;;;;;;10708:55;10700:81;;;;;-1:-1:-1;;;10700:81:0;;;;;;;;;;;;-1:-1:-1;;;10700:81:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;10829:24:0;;;;;;:17;:24;;;;;10854:6;;10892:11;;10829:24;10854:13;;10865:1;10854:13;:10;:13;:::i;:::-;10829:39;;;;;;;;;;;;;;-1:-1:-1;10829:39:0;;;10877:10;10829:60;;;;;;;:74;;;;-1:-1:-1;;;;;10963:28:0;;;;:21;:28;;;;;;10955:61;;;;;-1:-1:-1;;;10955:61:0;;;;;;;;;;;;-1:-1:-1;;;10955:61:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11088:28:0;;11027:15;11088:28;;;:21;:28;;;;;;;;;11061:14;:21;;;;;;11045:72;;11088:28;11045:38;;:11;;:38;:15;:38;:::i;:72::-;11027:90;;11146:1;11136:7;:11;11128:42;;;;;-1:-1:-1;;;11128:42:0;;;;;;;;;;;;-1:-1:-1;;;11128:42:0;;;;;;;;;;;;;;;11238:4;11181:11;:26;11193:13;11204:1;11193:6;;:10;;:13;;;;:::i;:::-;11181:26;;;;;;;;;;;;;;-1:-1:-1;11181:26:0;;;-1:-1:-1;;;;;11181:33:0;;;;;;;;;;;;11223:10;11181:54;;;;;;;;:61;;-1:-1:-1;;11181:61:0;;;;;;;;;;;11253:15;;:58;;-1:-1:-1;;;11253:58:0;;;;;;;;;;;;;;;;;;;;;;;;:15;;;;;:22;;:58;;;;;;;;;;-1:-1:-1;11253:15:0;:58;;;5:2:-1;;;;30:1;27;20:12;5:2;11253:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;11328:27:0;;;-1:-1:-1;;;;;11328:27:0;;;;;;;;;;;;;;-1:-1:-1;11328:27:0;;;;;;;;-1:-1:-1;11328:27:0;10171:1192;;;;:::o;21281:173::-;23799:12;;:45;;;-1:-1:-1;;;23799:45:0;;23832:10;23799:45;;;;;;-1:-1:-1;;;;;23799:12:0;;;;:24;;:45;;;;;;;;;;;;;;;:12;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;23799:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23799:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23799:45:0;23791:70;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;;;;21363:1:::1;21356:4;:8;21348:57;;;;-1:-1:-1::0;;;21348:57:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21429:17;:4:::0;21438:7:::1;21429:17;:8;:17;:::i;:::-;21416:10;:30:::0;-1:-1:-1;21281:173:0:o;16509:325::-;16553:7;16573:15;16591:3;16573:21;;16621:7;16609:9;;:19;16605:222;;;-1:-1:-1;;16653:9:0;;16646:16;;16605:222;16696:12;16711:40;16740:10;;16712:22;16724:9;;16712:7;:11;;:22;;;;:::i;16711:40::-;16696:55;-1:-1:-1;16773:42:0;16787:27;16802:11;16696:55;16811:1;16802:11;:8;:11;:::i;:::-;16787:10;;;:27;:14;:27;:::i;16773:42::-;16766:49;;;;;;23550:114;23799:12;;:45;;;-1:-1:-1;;;23799:45:0;;23832:10;23799:45;;;;;;-1:-1:-1;;;;;23799:12:0;;;;:24;;:45;;;;;;;;;;;;;;;:12;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;23799:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23799:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23799:45:0;23791:70;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;;;;23628:22:::1;:28:::0;23550:114::o;4922:786::-;23799:12;;:45;;;-1:-1:-1;;;23799:45:0;;23832:10;23799:45;;;;;;-1:-1:-1;;;;;23799:12:0;;;;:24;;:45;;;;;;;;;;;;;;;:12;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;23799:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23799:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23799:45:0;23791:70;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;;;;5081:12:::1;:29:::0;;-1:-1:-1;;;;;;5081:29:0::1;-1:-1:-1::0;;;;;5081:29:0;::::1;::::0;;::::1;::::0;;;5152:35:::1;::::0;;-1:-1:-1;;;5152:35:0;;::::1;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;5152:35:0;;;;;;5081:29;;;5152:27:::1;::::0;:35;;;;;;;;;;;5081:29;5152:35;::::1;;5:2:-1::0;::::1;;;30:1;27::::0;20:12:::1;5:2;5152:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;5152:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26::::0;19:12:::1;2:2;-1:-1:::0;5152:35:0;5122:13:::1;:67:::0;;-1:-1:-1;;;;;;5122:67:0::1;-1:-1:-1::0;;;;;5122:67:0;;::::1;;::::0;;5238:48:::1;::::0;;-1:-1:-1;;;5238:48:0;;5152:35:::1;5238:48;::::0;::::1;::::0;;;::::1;::::0;;;;-1:-1:-1;;;5238:48:0;;;;;;:27;;::::1;::::0;::::1;::::0;:48;;;;;5152:35;;5238:48;;;;;;:27;:48;::::1;;5:2:-1::0;::::1;;;30:1;27::::0;20:12:::1;5:2;5238:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;5238:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26::::0;19:12:::1;2:2;-1:-1:::0;5238:48:0;5200:10:::1;:88:::0;;-1:-1:-1;;;;;;5200:88:0::1;-1:-1:-1::0;;;;;5200:88:0;;::::1;;::::0;;5330:45:::1;::::0;;-1:-1:-1;;;5330:45:0;;5238:48:::1;5330:45;::::0;::::1;::::0;;;::::1;::::0;;;;-1:-1:-1;;;5330:45:0;;;;;;-1:-1:-1;;5322:69:0::1;::::0;5330:27;;::::1;::::0;::::1;::::0;:45;;;;;5238:48;5330:45;;;;;:27;:45;::::1;;5:2:-1::0;::::1;;;30:1;27::::0;20:12:::1;5:2;5330:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;5330:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26::::0;19:12:::1;2:2;-1:-1:::0;5330:45:0;-1:-1:-1;;;;;5322:67:0::1;;:69::i;:::-;5402:15;:37:::0;;-1:-1:-1;;;;;;5402:37:0::1;-1:-1:-1::0;;;;;5402:37:0;;::::1;::::0;;;::::1;::::0;;;5489:47:::1;::::0;;-1:-1:-1;;;5489:47:0;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;-1:-1:-1;;;5489:47:0;;;;;;5402:37;;-1:-1:-1;;;5481:71:0::1;::::0;5489:27;::::1;::::0;::::1;::::0;:47;;;;;;;;;;;:27;:47;::::1;;5:2:-1::0;::::1;;;30:1;27::::0;20:12:::1;5481:71:0;5563:13;:45:::0;;-1:-1:-1;;;;;;5563:45:0::1;-1:-1:-1::0;;;;;5563:45:0;;::::1;::::0;;;::::1;::::0;;5649:50:::1;::::0;;-1:-1:-1;;;5649:50:0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;;-1:-1:-1;;;5649:50:0;;;;;;5563:45;;-1:-1:-1;5649:27:0;;::::1;::::0;::::1;::::0;:50;;;;;;;;;;;;;:27;:50;::::1;;5:2:-1::0;::::1;;;30:1;27::::0;20:12:::1;5:2;5649:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;5649:50:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26::::0;19:12:::1;2:2;-1:-1:::0;5649:50:0;5619:19:::1;:81:::0;;-1:-1:-1;;;;;;5619:81:0::1;-1:-1:-1::0;;;;;5619:81:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;4922:786:0:o;20688:116::-;20774:22;;20688:116;:::o;20514:112::-;20598:20;;20514:112;:::o;19110:104::-;19190:16;;19110:104;:::o;6963:574::-;7046:1;7037:6;:10;7029:59;;;;-1:-1:-1;;;7029:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7181:10;;:50;;;-1:-1:-1;;;7181:50:0;;7212:10;7181:50;;;;-1:-1:-1;;;;;7181:50:0;;;;;;;;;:10;;;;;:22;;:50;;;;;;;;;;;;;;:10;:50;;;5:2:-1;;;;30:1;27;20:12;5:2;7181:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7181:50:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7181:50:0;7171:60;;;7163:101;;;;;-1:-1:-1;;;7163:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7296:13;;-1:-1:-1;;;;;7279:31:0;;;7296:13;;7279:31;7275:129;;;7336:12;;:45;;;-1:-1:-1;;;7336:45:0;;7370:9;7336:45;;;;;;-1:-1:-1;;;;;7336:12:0;;;;:25;;:45;;;;;;;;;;;;;;;:12;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;7336:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7336:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7336:45:0;7335:46;7327:65;;;;;-1:-1:-1;;;7327:65:0;;;;;;;;;;;;-1:-1:-1;;;7327:65:0;;;;;;;;;;;;;;;7414:10;;:54;;;-1:-1:-1;;;7414:54:0;;;;;;;;-1:-1:-1;;;;;7414:54:0;;;;;;;7456:10;7414:54;;;;;;:10;;;;;:18;;:54;;;;;:10;;:54;;;;;;;:10;;:54;;;5:2:-1;;;;30:1;27;20:12;5:2;7414:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7414:54:0;;;;6963:574;;:::o;18894:109::-;18977:18;;18894:109;:::o;19308:102::-;19387:15;;19308:102;:::o;20150:168::-;-1:-1:-1;;;;;20273:24:0;;;20246:7;20273:24;;;:17;:24;;;;;;;;:31;;;;;;;;;:37;;;;;;;;;;;;20150:168::o;19783:156::-;-1:-1:-1;;;;;19896:28:0;;19869:7;19896:28;;;:21;:28;;;;;;;;:35;;;;;;;;;19783:156;;;;;:::o;20882:108::-;20964:18;;20882:108;:::o;21565:178::-;23799:12;;:45;;;-1:-1:-1;;;23799:45:0;;23832:10;23799:45;;;;;;-1:-1:-1;;;;;23799:12:0;;;;:24;;:45;;;;;;;;;;;;;;;:12;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;23799:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23799:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23799:45:0;23791:70;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;;;;21656:1:::1;21649:4;:8;21641:57;;;;-1:-1:-1::0;;;21641:57:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21709:19;:26:::0;21565:178::o;17682:110::-;17765:19;;17682:110;:::o;21068:112::-;21152:20;;21068:112;:::o;22550:::-;23799:12;;:45;;;-1:-1:-1;;;23799:45:0;;23832:10;23799:45;;;;;;-1:-1:-1;;;;;23799:12:0;;;;:24;;:45;;;;;;;;;;;;;;;:12;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;23799:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23799:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23799:45:0;23791:70;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;-1:-1:-1;;;23791:70:0;;;;;;;;;;;;;;;22627:15:::1;:27:::0;22550:112::o;14965:1449::-;15018:16;15036:21;15059:14;15075:18;15095:19;15116:14;15132:16;15150:15;15167:16;15197:15;15215:3;15197:21;;15244:25;15258:10;;15244:9;;:13;;:25;;;;:::i;:::-;15233:7;:36;;:101;;;;;15284:50;15314:19;;15284:25;15298:10;;15284:9;;:13;;:25;;;;:::i;:50::-;15273:7;:61;;15233:101;:115;;;;;15347:1;15338:6;;:10;15233:115;:150;;;;-1:-1:-1;;;;;;15352:16:0;;;;;;:9;:16;;;;;15369:6;;15352:16;;;15369:13;;15380:1;15369:13;:10;:13;:::i;:::-;15352:31;;;;;;;;;;;-1:-1:-1;15352:31:0;;;;15233:150;15229:688;;;15516:11;:26;15528:13;15539:1;15528:6;;:10;;:13;;;;:::i;:::-;15516:26;;;;;;;;;;;;;;-1:-1:-1;15516:26:0;;;-1:-1:-1;;;;;15516:33:0;;;;;;;;;;;15558:10;15516:54;;;;;;;;15594:21;;;:14;:21;;;;;;15643;:28;;;;;;;15594:21;;-1:-1:-1;15643:28:0;;-1:-1:-1;15516:54:0;;;-1:-1:-1;15229:688:0;;;15754:15;;:32;;;-1:-1:-1;;;15754:32:0;;-1:-1:-1;;;;;15754:32:0;;;;;;;;;:15;;;;;:25;;:32;;;;;;;;;;;;;;:15;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;15754:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15754:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15754:32:0;;-1:-1:-1;15814:15:0;15823:5;15814:8;:15::i;:::-;15801:28;;15858:11;:19;15870:6;;15858:19;;;;;;;;;;;:26;15878:5;-1:-1:-1;;;;;15858:26:0;-1:-1:-1;;;;;15858:26:0;;;;;;;;;;;;:47;15893:10;-1:-1:-1;;;;;15858:47:0;-1:-1:-1;;;;;15858:47:0;;;;;;;;;;;;;;;;;;;;;;15844:61;;15229:688;15941:10;;:50;;;-1:-1:-1;;;15941:50:0;;15972:10;15941:50;;;;-1:-1:-1;;;;;15941:50:0;;;;;;;;;:10;;;;;:22;;:50;;;;;;;;;;;;;;:10;:50;;;5:2:-1;;;;30:1;27;20:12;5:2;15941:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15941:50:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15941:50:0;;-1:-1:-1;16021:4:0;16006:19;;;;16002:144;;;16051:1;16042:10;;16002:144;;;16095:39;16123:10;16095:23;:11;16111:6;16095:23;:15;:23;:::i;:39::-;16086:48;;16002:144;16167:13;:11;:13::i;:::-;16156:24;;16207:49;16236:19;;16207:24;16220:10;;16207:8;:12;;:24;;;;:::i;:49::-;16330:10;;16278:64;;;-1:-1:-1;;;16278:64:0;;16309:10;16278:64;;;;-1:-1:-1;;;;;16330:10:0;;;16278:64;;;;;;16191:65;;-1:-1:-1;16278:22:0;;;;;;:64;;;;;;;;;;;;;;;:22;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;16278:64:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16278:64:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16278:64:0;16363:43;;;-1:-1:-1;;;16363:43:0;;16394:10;16363:43;;;;;;16278:64;;-1:-1:-1;;;;;;16363:22:0;;;;;:43;;;;;16278:64;;16363:43;;;;;;;;:22;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;16363:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16363:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16363:43:0;14965:1449;;;;-1:-1:-1;14965:1449:0;;;;;;-1:-1:-1;14965:1449:0;;;;16363:43;;14965:1449;;-1:-1:-1;14965:1449:0:o;26585:132::-;26643:7;26670:39;26674:1;26677;26670:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;26663:46;26585:132;-1:-1:-1;;;26585:132:0:o;26331:248::-;26389:7;26413:6;26409:47;;-1:-1:-1;26443:1:0;26436:8;;26409:47;26478:5;;;26482:1;26478;:5;:1;26502:5;;;;;:10;26494:56;;;;-1:-1:-1;;;26494:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25804:181;25862:7;25894:5;;;25918:6;;;;25910:46;;;;;-1:-1:-1;;;25910:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;25991:136;26049:7;26076:43;26080:1;26083;26076:43;;;;;;;;;;;;;;;;;:3;:43::i;11439:946::-;11584:9;;11498:3;;11573:20;;11569:809;;11707:12;11722:40;11751:10;;11723:22;11735:9;;11723:7;:11;;:22;;;;:::i;11722:40::-;11707:55;;11777:17;11797:37;11811:22;11822:10;;11812:4;11811:10;;:22;;;;:::i;11797:37::-;11777:57;;11911:15;11929:34;11943:19;;11929:9;:13;;:34;;;;:::i;:::-;11911:52;;12060:9;12049:7;:20;;:42;;;;;12084:7;12073;:18;;12049:42;12045:322;;;12124:13;:11;:13::i;:::-;12112:9;:25;12251:6;;:13;;12262:1;12251:13;:10;:13;:::i;:::-;12242:6;:22;12045:322;11569:809;;;;11439:946;:::o;12503:500::-;-1:-1:-1;;;;;12563:16:0;;;;;;:9;:16;;;;;12580:6;;12563:16;;;12580:13;;12591:1;12580:13;:10;:13;:::i;:::-;12563:31;;;;;;;;;;;-1:-1:-1;12563:31:0;;;;12558:438;;12611:21;12626:5;12611:14;:21::i;:::-;12761:15;;:32;;;-1:-1:-1;;;12761:32:0;;-1:-1:-1;;;;;12761:32:0;;;;;;;;;:15;;;;;:25;;:32;;;;;;;;;;;;;;:15;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;12761:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12761:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12761:32:0;-1:-1:-1;;;;;12737:21:0;;;;;;:14;12761:32;12737:21;;;;:56;12840:15;12752:5;12840:8;:15::i;:::-;-1:-1:-1;;;;;12809:28:0;;;;;;:21;:28;;;;;:46;12916:15;12831:5;12916:8;:15::i;:::-;-1:-1:-1;;;;;12870:28:0;;;;;;:21;:28;;;;;12899:6;;12870:28;;;12899:13;;12910:1;12899:13;:10;:13;:::i;:::-;12870:43;;;;;;;;;;;;;;-1:-1:-1;12870:43:0;;;:61;;;;-1:-1:-1;;;;;12946:16:0;;;;:9;:16;;;;;12963:6;;12980:4;;-1:-1:-1;12963:13:0;;12980:4;12963:13;:10;:13;:::i;:::-;12946:31;;;;;;;;;;;-1:-1:-1;12946:31:0;:38;;-1:-1:-1;;12946:38:0;;;;;;;;;;-1:-1:-1;12503:500:0:o;26723:189::-;26809:7;26844:12;26837:5;26829:28;;;;-1:-1:-1;;;26829:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;26829:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26868:9;26884:1;26880;:5;;;;;;;26723:189;-1:-1:-1;;;;;26723:189:0:o;26133:192::-;26219:7;26255:12;26247:6;;;;26239:29;;;;-1:-1:-1;;;26239:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;26239:29:0;-1:-1:-1;;;26291:5:0;;;26133:192::o;13108:1670::-;13166:13;13211;;-1:-1:-1;;;;;13194:31:0;;;13211:13;;13194:31;13190:197;;;13250:41;13270:20;;13250:15;13259:5;13250:8;:15::i;:41::-;13242:49;;13190:197;;;13332:43;13352:22;;13332:15;13341:5;13332:8;:15::i;:43::-;13324:51;;13190:197;13421:16;;13397:21;13448:144;13472:5;13468:1;:9;13448:144;;;13515:65;13533:46;13575:3;13533:37;13551:18;;13533:13;:17;;:37;;;;:::i;13515:65::-;13499:81;-1:-1:-1;13479:3:0;;13448:144;;;-1:-1:-1;13623:15:0;;:32;;;-1:-1:-1;;;13623:32:0;;-1:-1:-1;;;;;13623:32:0;;;;;;;;;13602:18;;13623:15;;;;;:25;;:32;;;;;;;;;;;;;;;:15;:32;;;5:2:-1;;;;30:1;27;20:12;5:2;13623:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13623:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13623:32:0;;-1:-1:-1;13670:26:0;;;13666:1105;;;13713:19;13768:10;13755:23;;13751:389;;;13813:68;13860:20;;13813:42;13851:3;13813:33;13828:17;;13813:10;:14;;:33;;;;:::i;:68::-;13799:82;;13751:389;;;13920:10;13907;:23;13903:237;;;13965:64;14010:18;;13965:40;14001:3;13965:31;13980:15;;13965:10;:14;;:31;;;;:::i;13903:237::-;14084:40;14120:3;14084:31;14099:15;;14084:10;:14;;:31;;;;:::i;:40::-;14070:54;;13903:237;14188:13;14158:27;:10;14173:11;14158:27;:14;:27;:::i;:::-;:43;14154:415;;;14222:15;;-1:-1:-1;;;;;14222:15:0;:22;14245:29;:10;14260:13;14245:29;:14;:29;:::i;:::-;14222:75;;;-1:-1:-1;;;;;;14222:75:0;;;;;;;;;;;;;;-1:-1:-1;;;;;14222:75:0;;;;;;14291:4;14222:75;;;;;;;;;;-1:-1:-1;;14222:75:0;;;;;;;-1:-1:-1;14222:75:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;14222:75:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;14316:13:0;;-1:-1:-1;;;;;14316:13:0;;-1:-1:-1;14316:25:0;;-1:-1:-1;14348:29:0;:10;14363:13;14348:29;:14;:29;:::i;:::-;14379:5;14316:69;;;;;;;;;;;;;-1:-1:-1;;;;;14316:69:0;-1:-1:-1;;;;;14316:69:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14316:69:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14316:69:0;;;;;14154:415;;;14426:15;;:57;;;-1:-1:-1;;;14426:57:0;;;;;;;;-1:-1:-1;;;;;14426:57:0;;;;;;;14477:4;14426:57;;;;;;:15;;;;;:22;;:57;;;;;:15;;:57;;;;;;;:15;;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;14426:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;14502:13:0;;;:51;;;-1:-1:-1;;;14502:51:0;;-1:-1:-1;;;;;14502:51:0;;;;;;;;;;;;:13;;;;;-1:-1:-1;14502:25:0;;-1:-1:-1;14534:11:0;;14502:51;;;;;:13;;:51;;;;;;;14534:11;14502:13;:51;;;5:2:-1;;;;30:1;27;20:12;5:2;14502:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14502:51:0;;;;;14154:415;13666:1105;;;;14620:13;;14601:16;;-1:-1:-1;;;;;14620:13:0;:21;14642:29;:13;14660:10;14642:29;:17;:29;:::i;:::-;14620:74;;;-1:-1:-1;;;;;;14620:74:0;;;;;;;;;;;;;;-1:-1:-1;;;;;14620:74:0;;;;;;14688:4;14620:74;;;;;;;;;;;;;;;;;;;-1:-1:-1;14620:74:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;14620:74:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14620:74:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14620:74:0;14709:15;;:50;;;-1:-1:-1;;;14709:50:0;;-1:-1:-1;;;;;14709:50:0;;;;;;;;;14620:74;;-1:-1:-1;14709:15:0;;;:27;;14620:74;;14709:50;;;;;:15;;:50;;;;;;;14620:74;14709:15;:50;;;5:2:-1;;;;30:1;27;20:12;5:2;14709:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14709:50:0;;;;;13666:1105;13108:1670;;;;:::o

Swarm Source

ipfs://a1c7e604d5c5c0a6323d906036e369370f2d48c7dff1a479979d56bee48ef1ea

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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