ETH Price: $2,377.53 (-4.20%)

Contract

0xAe98B0E0C112B6d85Ba32fF521B051f3fb2bafaB
 

Overview

ETH Balance

20.950925214496731948 ETH

Eth Value

$49,811.41 (@ $2,377.53/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim Divs207231712024-09-10 22:24:1122 days ago1726007051IN
ETHMatrix.network
0 ETH0.0007458415.41252662
Claim Divs205734482024-08-21 0:35:3543 days ago1724200535IN
ETHMatrix.network
0 ETH0.0000561.15739248
Claim Divs205734312024-08-21 0:32:1143 days ago1724200331IN
ETHMatrix.network
0 ETH0.000055991.1570208
Claim Divs205734192024-08-21 0:29:4743 days ago1724200187IN
ETHMatrix.network
0 ETH0.000072781.11136022
Claim Divs205734162024-08-21 0:29:1143 days ago1724200151IN
ETHMatrix.network
0 ETH0.000053561.10691352
Claim Divs205734112024-08-21 0:28:1143 days ago1724200091IN
ETHMatrix.network
0 ETH0.000072581.10837685
Claim Divs205734072024-08-21 0:27:2343 days ago1724200043IN
ETHMatrix.network
0 ETH0.000051951.07353415
Claim Divs205734042024-08-21 0:26:4743 days ago1724200007IN
ETHMatrix.network
0 ETH0.000053731.11044393
Claim Divs205733972024-08-21 0:25:2343 days ago1724199923IN
ETHMatrix.network
0 ETH0.000071621.09361998
Claim Divs205733902024-08-21 0:23:5943 days ago1724199839IN
ETHMatrix.network
0 ETH0.000076151.16280916
Claim Divs205733882024-08-21 0:23:3543 days ago1724199815IN
ETHMatrix.network
0 ETH0.000053831.11254219
Claim Divs205733832024-08-21 0:22:3543 days ago1724199755IN
ETHMatrix.network
0 ETH0.000056711.17192604
Claim Divs205733782024-08-21 0:21:3543 days ago1724199695IN
ETHMatrix.network
0 ETH0.000052991.09521552
Claim Divs205733712024-08-21 0:20:1143 days ago1724199611IN
ETHMatrix.network
0 ETH0.000057531.18898515
Claim Divs205733682024-08-21 0:19:3543 days ago1724199575IN
ETHMatrix.network
0 ETH0.000058051.19974059
Claim Divs205733652024-08-21 0:18:4743 days ago1724199527IN
ETHMatrix.network
0 ETH0.000079441.21301677
Claim Divs204532692024-08-04 6:02:5960 days ago1722751379IN
ETHMatrix.network
0 ETH0.000065491
Claim Divs204532132024-08-04 5:51:4760 days ago1722750707IN
ETHMatrix.network
0 ETH0.000048391
Claim Divs204091372024-07-29 2:08:2366 days ago1722218903IN
ETHMatrix.network
0 ETH0.000065491
Claim Divs186601312023-11-27 2:54:11311 days ago1701053651IN
ETHMatrix.network
0 ETH0.0015298831.61433884
Claim Divs186601092023-11-27 2:49:47311 days ago1701053387IN
ETHMatrix.network
0 ETH0.0015778132.60481708
Claim Divs186600872023-11-27 2:45:11311 days ago1701053111IN
ETHMatrix.network
0 ETH0.0015310731.63898546
Claim Divs186600782023-11-27 2:43:23311 days ago1701053003IN
ETHMatrix.network
0 ETH0.0016995235.11991064
Claim Divs183186092023-10-10 7:37:23358 days ago1696923443IN
ETHMatrix.network
0 ETH0.000459029.48553496
Claim Divs183185972023-10-10 7:34:59358 days ago1696923299IN
ETHMatrix.network
0 ETH0.000453829.37820103
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
207231712024-09-10 22:24:1122 days ago1726007051
ETHMatrix.network
0.01271695 ETH
205734482024-08-21 0:35:3543 days ago1724200535
ETHMatrix.network
0.00246447 ETH
205734312024-08-21 0:32:1143 days ago1724200331
ETHMatrix.network
0.00352307 ETH
205734192024-08-21 0:29:4743 days ago1724200187
ETHMatrix.network
0.00140163 ETH
205734162024-08-21 0:29:1143 days ago1724200151
ETHMatrix.network
0.00297873 ETH
205734112024-08-21 0:28:1143 days ago1724200091
ETHMatrix.network
0.00108267 ETH
205734072024-08-21 0:27:2343 days ago1724200043
ETHMatrix.network
0.00142768 ETH
205734042024-08-21 0:26:4743 days ago1724200007
ETHMatrix.network
0.0037663 ETH
205733972024-08-21 0:25:2343 days ago1724199923
ETHMatrix.network
0.00146727 ETH
205733902024-08-21 0:23:5943 days ago1724199839
ETHMatrix.network
0.00123816 ETH
205733882024-08-21 0:23:3543 days ago1724199815
ETHMatrix.network
0.00332757 ETH
205733832024-08-21 0:22:3543 days ago1724199755
ETHMatrix.network
0.00225375 ETH
205733782024-08-21 0:21:3543 days ago1724199695
ETHMatrix.network
0.0031097 ETH
205733712024-08-21 0:20:1143 days ago1724199611
ETHMatrix.network
0.00360362 ETH
205733682024-08-21 0:19:3543 days ago1724199575
ETHMatrix.network
0.0011968 ETH
205733652024-08-21 0:18:4743 days ago1724199527
ETHMatrix.network
0.00142322 ETH
204532692024-08-04 6:02:5960 days ago1722751379
ETHMatrix.network
0.00126925 ETH
204532132024-08-04 5:51:4760 days ago1722750707
ETHMatrix.network
0.00017695 ETH
204091372024-07-29 2:08:2366 days ago1722218903
ETHMatrix.network
0.00080865 ETH
186601312023-11-27 2:54:11311 days ago1701053651
ETHMatrix.network
0.00525374 ETH
186601092023-11-27 2:49:47311 days ago1701053387
ETHMatrix.network
0.00686436 ETH
186600872023-11-27 2:45:11311 days ago1701053111
ETHMatrix.network
0.00494317 ETH
186600782023-11-27 2:43:23311 days ago1701053003
ETHMatrix.network
0.00661279 ETH
183186092023-10-10 7:37:23358 days ago1696923443
ETHMatrix.network
0.00906071 ETH
183185972023-10-10 7:34:59358 days ago1696923299
ETHMatrix.network
0.01153151 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EthMatrix

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2020-06-16
*/

/**
 *Submitted for verification at Etherscan.io on 2020-06-16
*/

/**
 * 
 * 
 /$$$$$$$$ /$$$$$$$$ /$$   /$$ /$$      /$$  /$$$$$$  /$$$$$$$$ /$$$$$$$  /$$$$$$ /$$   /$$
| $$_____/|__  $$__/| $$  | $$| $$$    /$$$ /$$__  $$|__  $$__/| $$__  $$|_  $$_/| $$  / $$
| $$         | $$   | $$  | $$| $$$$  /$$$$| $$  \ $$   | $$   | $$  \ $$  | $$  |  $$/ $$/
| $$$$$      | $$   | $$$$$$$$| $$ $$/$$ $$| $$$$$$$$   | $$   | $$$$$$$/  | $$   \  $$$$/ 
| $$__/      | $$   | $$__  $$| $$  $$$| $$| $$__  $$   | $$   | $$__  $$  | $$    >$$  $$ 
| $$         | $$   | $$  | $$| $$\  $ | $$| $$  | $$   | $$   | $$  \ $$  | $$   /$$/\  $$
| $$$$$$$$   | $$   | $$  | $$| $$ \/  | $$| $$  | $$   | $$   | $$  | $$ /$$$$$$| $$  \ $$
|________/   |__/   |__/  |__/|__/     |__/|__/  |__/   |__/   |__/  |__/|______/|__/  |__/
 * 
 * 
 *  https://ETHMatrix.network
 *  Multiply your Ethereum!
 * 
 *  
**/


pragma solidity >=0.4.23 <0.6.0;

contract EthMatrix {
    
    struct User {
        uint id;
        address referrer;
        uint partnersCount;
        
        mapping(uint8 => bool) activeX3Levels;
        mapping(uint8 => bool) activeX6Levels;
        
        mapping(uint8 => X3) x3Matrix;
        mapping(uint8 => X6) x6Matrix;
        
        mapping(uint8 => uint) x3MatrixEarnings;
        mapping(uint8 => uint) x6MatrixEarnings;

        uint divClaimMark;
        uint totalPlayerDivPoints;
        uint divsClaimed; 
    }
    
    struct X3 {
        address currentReferrer;
        address[] referrals;
        bool blocked;
        uint reinvestCount;
    }
    
    struct X6 {
        address currentReferrer;
        address[] firstLevelReferrals;
        address[] secondLevelReferrals;
        bool blocked;
        uint reinvestCount;

        address closedPart;
    }

    uint8 public constant LAST_LEVEL = 12;
    uint8 public constant DIV_PERCENT = 200; // == 2.00%
    uint16 internal constant DIV_DIVISOR = 10000;

    mapping(address => User) public users;
    mapping(uint => address) public idToAddress;

    

    uint public divPot; 
    uint public totalDividendPoints;
    uint public totalDivs;
    uint internal calcDivs; 
    
    
    uint constant pointMultiplier = 1e18;
    

    uint public lastUserId = 2;
    address public owner;
    
    mapping(uint8 => uint) public levelPrice;
    
    event Registration(address indexed user, address indexed referrer, uint indexed userId, uint referrerId);
    event Reinvest(address indexed user, address indexed currentReferrer, address indexed caller, uint8 matrix, uint8 level);
    event Upgrade(address indexed user, address indexed referrer, uint8 matrix, uint8 level);
    event NewUserPlace(address indexed user, address indexed referrer, uint8 matrix, uint8 level, uint8 place);
    event MissedEthReceive(address indexed receiver, address indexed from, uint8 matrix, uint8 level);
    event SentExtraEthDividends(address indexed from, address indexed receiver, uint8 matrix, uint8 level);
    
    
    constructor(address ownerAddress) public {
        levelPrice[1] = 0.025 ether;
        for (uint8 i = 2; i <= LAST_LEVEL; i++) {
            levelPrice[i] = levelPrice[i-1] * 2;
        }
        
        owner = ownerAddress;
        
        User memory user = User({
            id: 1,
            referrer: address(0),
            partnersCount: uint(0),
            divClaimMark: 0,
            totalPlayerDivPoints: 0,
            divsClaimed: 0
        });
        
        users[ownerAddress] = user;
        idToAddress[1] = ownerAddress;
        
        for (uint8 i = 1; i <= LAST_LEVEL; i++) {
            users[ownerAddress].activeX3Levels[i] = true;
            users[ownerAddress].activeX6Levels[i] = true;
        }

    }
    
    function() external payable {
        if(msg.data.length == 0) {
            return registration(msg.sender, owner);
        }
        
        registration(msg.sender, bytesToAddress(msg.data));
    }

    function registrationExt(address referrerAddress) external payable {
        registration(msg.sender, referrerAddress);
    }
    
    function buyNewLevel(uint8 matrix, uint8 level) external payable {
        require(isUserExists(msg.sender), "user is not exists. Register first.");
        require(matrix == 1 || matrix == 2, "invalid matrix");
        require(msg.value == levelPrice[level], "invalid price");
        require(level > 1 && level <= LAST_LEVEL, "invalid level");

        if(viewDivs(msg.sender) > 0){
            sendDivs(msg.sender);
        } else {
            users[msg.sender].divClaimMark = totalDividendPoints;
        }

        users[msg.sender].totalPlayerDivPoints += msg.value * DIV_PERCENT / DIV_DIVISOR;

        divPot += (msg.value * DIV_PERCENT / DIV_DIVISOR);
        totalDivs += (msg.value * DIV_PERCENT / DIV_DIVISOR);

        if (matrix == 1) {
            require(!users[msg.sender].activeX3Levels[level], "level already activated");

            if (users[msg.sender].x3Matrix[level-1].blocked) {
                users[msg.sender].x3Matrix[level-1].blocked = false;
            }
    
            address freeX3Referrer = findFreeX3Referrer(msg.sender, level);

            if(freeX3Referrer == owner){
                if(viewDivs(owner) > 0){
                    sendDivs(owner);
                } else {
                    users[owner].divClaimMark = totalDividendPoints;
                }

                users[owner].totalPlayerDivPoints += msg.value * DIV_PERCENT / DIV_DIVISOR;
                calcDivs += msg.value * DIV_PERCENT / DIV_DIVISOR * 2;
                totalDividendPoints += (msg.value * DIV_PERCENT / DIV_DIVISOR) * pointMultiplier / calcDivs;
            } else {
                calcDivs += (msg.value * DIV_PERCENT / DIV_DIVISOR);
                totalDividendPoints += (msg.value * DIV_PERCENT / DIV_DIVISOR) * pointMultiplier / calcDivs;
            }

            users[msg.sender].x3Matrix[level].currentReferrer = freeX3Referrer;
            users[msg.sender].activeX3Levels[level] = true;
            updateX3Referrer(msg.sender, freeX3Referrer, level);
            
            emit Upgrade(msg.sender, freeX3Referrer, 1, level);

        } else {
            require(!users[msg.sender].activeX6Levels[level], "level already activated"); 

            if (users[msg.sender].x6Matrix[level-1].blocked) {
                users[msg.sender].x6Matrix[level-1].blocked = false;
            }

            address freeX6Referrer = findFreeX6Referrer(msg.sender, level);

            if(freeX6Referrer == owner){
                if(viewDivs(owner) > 0){
                    sendDivs(owner);
                } else {
                    users[owner].divClaimMark = totalDividendPoints;
                }

                users[owner].totalPlayerDivPoints += msg.value * DIV_PERCENT / DIV_DIVISOR;
                calcDivs += msg.value * DIV_PERCENT / DIV_DIVISOR * 2;
                totalDividendPoints += (msg.value * DIV_PERCENT / DIV_DIVISOR) * pointMultiplier / calcDivs;
            } else {
                calcDivs += (msg.value * DIV_PERCENT / DIV_DIVISOR);
                totalDividendPoints += (msg.value * DIV_PERCENT / DIV_DIVISOR) * pointMultiplier / calcDivs;
            }
            
            users[msg.sender].activeX6Levels[level] = true;
            updateX6Referrer(msg.sender, freeX6Referrer, level);
            
            emit Upgrade(msg.sender, freeX6Referrer, 2, level);
        }
    }    
    
    function registration(address userAddress, address referrerAddress) private {
        require(msg.value == 0.05 ether, "registration cost 0.05");
        require(!isUserExists(userAddress), "user exists");
        require(isUserExists(referrerAddress), "referrer not exists");
        
        uint32 size;
        assembly {
            size := extcodesize(userAddress)
        }
        require(size == 0, "cannot be a contract");
        
        User memory user = User({
            id: lastUserId,
            referrer: referrerAddress,
            partnersCount: 0,
            divClaimMark: totalDividendPoints,
            totalPlayerDivPoints: 0,
            divsClaimed: 0
            
        });
        
        users[userAddress] = user;
        idToAddress[lastUserId] = userAddress;
        
        users[userAddress].referrer = referrerAddress;
        
        users[userAddress].activeX3Levels[1] = true; 
        users[userAddress].activeX6Levels[1] = true;
        
        users[userAddress].totalPlayerDivPoints += (msg.value * DIV_PERCENT / DIV_DIVISOR);


        divPot += msg.value * DIV_PERCENT / DIV_DIVISOR;
        totalDivs += (msg.value * DIV_PERCENT / DIV_DIVISOR);
        
        
        
        lastUserId++;
        
        users[referrerAddress].partnersCount++;

        address freeX3Referrer = findFreeX3Referrer(userAddress, 1);
        address freeX6Ref = findFreeX6Referrer(userAddress, 1);

        if(freeX3Referrer == owner || freeX6Ref == owner){
            if(viewDivs(owner) > 0){
                sendDivs(owner);
            } else {
                users[owner].divClaimMark = totalDividendPoints;
            }

            users[owner].totalPlayerDivPoints += msg.value * DIV_PERCENT / DIV_DIVISOR;
            calcDivs += msg.value * DIV_PERCENT / DIV_DIVISOR * 2;
            totalDividendPoints += (msg.value * DIV_PERCENT / DIV_DIVISOR) * pointMultiplier / calcDivs;
        } else {
            calcDivs += (msg.value * DIV_PERCENT / DIV_DIVISOR);
            totalDividendPoints += (msg.value * DIV_PERCENT / DIV_DIVISOR) * pointMultiplier / calcDivs;
        }

        users[userAddress].x3Matrix[1].currentReferrer = freeX3Referrer;
        updateX3Referrer(userAddress, freeX3Referrer, 1);

        updateX6Referrer(userAddress, freeX6Ref, 1);



        emit Registration(userAddress, referrerAddress, users[userAddress].id, users[referrerAddress].id);
    }
    
    
    function claimDivs() public returns(bool) {
        uint _divAmount = viewDivs(msg.sender);
        require(_divAmount > 0, "No divs available");
        sendDivs(msg.sender);
    }

    function sendDivs(address _user) internal returns(bool) {
        uint _divAmount = viewDivs(_user);
        divPot -= _divAmount;
        users[_user].divClaimMark = totalDividendPoints;
        users[_user].divsClaimed += _divAmount;
        
        return address(uint160(_user)).send(_divAmount);    
    }


    function viewDivsPercent(address _player) public view returns(uint divsPercent) {
        return  users[_player].totalPlayerDivPoints * 100 / calcDivs;
    }

    function viewDivs(address _player) public view returns(uint divsAvailable) {
        uint newDividendPoints = totalDividendPoints - users[_player].divClaimMark;
        return (users[_player].totalPlayerDivPoints * newDividendPoints) / pointMultiplier;
    }


    function updateX3Referrer(address userAddress, address referrerAddress, uint8 level) private {
        users[referrerAddress].x3Matrix[level].referrals.push(userAddress);

        if (users[referrerAddress].x3Matrix[level].referrals.length < 3) {
            emit NewUserPlace(userAddress, referrerAddress, 1, level, uint8(users[referrerAddress].x3Matrix[level].referrals.length));
            return sendPartnerETH(referrerAddress, userAddress, 1, level);
        }
        
        emit NewUserPlace(userAddress, referrerAddress, 1, level, 3);
        users[referrerAddress].x3Matrix[level].referrals = new address[](0);
        if (!users[referrerAddress].activeX3Levels[level+1] && level != LAST_LEVEL) {
            users[referrerAddress].x3Matrix[level].blocked = true;
        }

        if (referrerAddress != owner) {
            address freeReferrerAddress = findFreeX3Referrer(referrerAddress, level);
            if (users[referrerAddress].x3Matrix[level].currentReferrer != freeReferrerAddress) {
                users[referrerAddress].x3Matrix[level].currentReferrer = freeReferrerAddress;
            }
            
            users[referrerAddress].x3Matrix[level].reinvestCount++;
            emit Reinvest(referrerAddress, freeReferrerAddress, userAddress, 1, level);
            updateX3Referrer(referrerAddress, freeReferrerAddress, level);
        } else {
            sendPartnerETH(owner, userAddress, 1, level);
            users[owner].x3Matrix[level].reinvestCount++;
            emit Reinvest(owner, address(0), userAddress, 1, level);
        }
    }


    function updateX6Referrer(address userAddress, address referrerAddress, uint8 level) private {
        require(users[referrerAddress].activeX6Levels[level], "500. Referrer level is inactive");
        
        if (users[referrerAddress].x6Matrix[level].firstLevelReferrals.length < 2) { 
            users[referrerAddress].x6Matrix[level].firstLevelReferrals.push(userAddress); 
            emit NewUserPlace(userAddress, referrerAddress, 2, level, uint8(users[referrerAddress].x6Matrix[level].firstLevelReferrals.length));
            
            users[userAddress].x6Matrix[level].currentReferrer = referrerAddress; 

            if (referrerAddress == owner) {
                return sendPartnerETH(referrerAddress, userAddress, 2, level);
            }
            
            address ref = users[referrerAddress].x6Matrix[level].currentReferrer;        
            users[ref].x6Matrix[level].secondLevelReferrals.push(userAddress);  
            
            uint len = users[ref].x6Matrix[level].firstLevelReferrals.length; 
            
            if ((len == 2) && 
                (users[ref].x6Matrix[level].firstLevelReferrals[0] == referrerAddress) &&
                (users[ref].x6Matrix[level].firstLevelReferrals[1] == referrerAddress)) {
                if (users[referrerAddress].x6Matrix[level].firstLevelReferrals.length == 1) {
                    emit NewUserPlace(userAddress, ref, 2, level, 5);
                } else {
                    emit NewUserPlace(userAddress, ref, 2, level, 6);
                }
            }  else if ((len == 1 || len == 2) &&
                    users[ref].x6Matrix[level].firstLevelReferrals[0] == referrerAddress) {
                if (users[referrerAddress].x6Matrix[level].firstLevelReferrals.length == 1) {
                    emit NewUserPlace(userAddress, ref, 2, level, 3);
                } else {
                    emit NewUserPlace(userAddress, ref, 2, level, 4);
                }
            } else if (len == 2 && users[ref].x6Matrix[level].firstLevelReferrals[1] == referrerAddress) {
                if (users[referrerAddress].x6Matrix[level].firstLevelReferrals.length == 1) {
                    emit NewUserPlace(userAddress, ref, 2, level, 5);
                } else {
                    emit NewUserPlace(userAddress, ref, 2, level, 6); 
                }
            }
            
            return updateX6ReferrerSecondLevel(userAddress, ref, level);
        }
        
        users[referrerAddress].x6Matrix[level].secondLevelReferrals.push(userAddress);

        if (users[referrerAddress].x6Matrix[level].closedPart != address(0)) {
            if ((users[referrerAddress].x6Matrix[level].firstLevelReferrals[0] == 
                users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]) &&
                (users[referrerAddress].x6Matrix[level].firstLevelReferrals[0] ==
                users[referrerAddress].x6Matrix[level].closedPart)) {

                updateX6(userAddress, referrerAddress, level, true);
                return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
            } else if (users[referrerAddress].x6Matrix[level].firstLevelReferrals[0] == 
                users[referrerAddress].x6Matrix[level].closedPart) {
                updateX6(userAddress, referrerAddress, level, true);
                return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
            } else {
                updateX6(userAddress, referrerAddress, level, false);
                return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
            }
        }

        if (users[referrerAddress].x6Matrix[level].firstLevelReferrals[1] == userAddress) {
            updateX6(userAddress, referrerAddress, level, false);
            return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
        } else if (users[referrerAddress].x6Matrix[level].firstLevelReferrals[0] == userAddress) {
            updateX6(userAddress, referrerAddress, level, true);
            return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
        }
        
        if (users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[0]].x6Matrix[level].firstLevelReferrals.length <= 
            users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]].x6Matrix[level].firstLevelReferrals.length) {
            updateX6(userAddress, referrerAddress, level, false);
        } else {
            updateX6(userAddress, referrerAddress, level, true);
        }
        
        updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
    }

    function updateX6(address userAddress, address referrerAddress, uint8 level, bool x2) private {
        if (!x2) {
            users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[0]].x6Matrix[level].firstLevelReferrals.push(userAddress);
            emit NewUserPlace(userAddress, users[referrerAddress].x6Matrix[level].firstLevelReferrals[0], 2, level, uint8(users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[0]].x6Matrix[level].firstLevelReferrals.length));
            emit NewUserPlace(userAddress, referrerAddress, 2, level, 2 + uint8(users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[0]].x6Matrix[level].firstLevelReferrals.length));
            
            users[userAddress].x6Matrix[level].currentReferrer = users[referrerAddress].x6Matrix[level].firstLevelReferrals[0];
        } else {
            users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]].x6Matrix[level].firstLevelReferrals.push(userAddress);
            emit NewUserPlace(userAddress, users[referrerAddress].x6Matrix[level].firstLevelReferrals[1], 2, level, uint8(users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]].x6Matrix[level].firstLevelReferrals.length));
            emit NewUserPlace(userAddress, referrerAddress, 2, level, 4 + uint8(users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]].x6Matrix[level].firstLevelReferrals.length));
            
            users[userAddress].x6Matrix[level].currentReferrer = users[referrerAddress].x6Matrix[level].firstLevelReferrals[1];
        }
    }
    
    function updateX6ReferrerSecondLevel(address userAddress, address referrerAddress, uint8 level) private {
        if (users[referrerAddress].x6Matrix[level].secondLevelReferrals.length < 4) {
            
            return sendPartnerETH(referrerAddress, userAddress, 2, level);
        }
        
        address[] memory x6 = users[users[referrerAddress].x6Matrix[level].currentReferrer].x6Matrix[level].firstLevelReferrals;
        
        if (x6.length == 2) {
            if (x6[0] == referrerAddress ||
                x6[1] == referrerAddress) {
                users[users[referrerAddress].x6Matrix[level].currentReferrer].x6Matrix[level].closedPart = referrerAddress;
            } else if (x6.length == 1) {
                if (x6[0] == referrerAddress) {
                    users[users[referrerAddress].x6Matrix[level].currentReferrer].x6Matrix[level].closedPart = referrerAddress;
                }
            }
        }
        
        users[referrerAddress].x6Matrix[level].firstLevelReferrals = new address[](0);
        users[referrerAddress].x6Matrix[level].secondLevelReferrals = new address[](0);
        users[referrerAddress].x6Matrix[level].closedPart = address(0);

        if (!users[referrerAddress].activeX6Levels[level+1] && level != LAST_LEVEL) {
            users[referrerAddress].x6Matrix[level].blocked = true;
        }

        users[referrerAddress].x6Matrix[level].reinvestCount++;
        
        if (referrerAddress != owner) {
            address freeReferrerAddress = findFreeX6Referrer(referrerAddress, level);

            emit Reinvest(referrerAddress, freeReferrerAddress, userAddress, 2, level);
            updateX6Referrer(referrerAddress, freeReferrerAddress, level);
        } else {
            emit Reinvest(owner, address(0), userAddress, 2, level);
            sendPartnerETH(owner, userAddress, 2, level);
        }
    }
    
    function findFreeX3Referrer(address userAddress, uint8 level) public view returns(address) {
        while (true) {
            if (users[users[userAddress].referrer].activeX3Levels[level]) {
                return users[userAddress].referrer;
            }
            
            userAddress = users[userAddress].referrer;
        }
    }
    
    function findFreeX6Referrer(address userAddress, uint8 level) public view returns(address) {
        while (true) {
            if (users[users[userAddress].referrer].activeX6Levels[level]) {
                return users[userAddress].referrer;
            }
            
            userAddress = users[userAddress].referrer;
        }
    }
        
    function usersActiveX3Levels(address userAddress, uint8 level) public view returns(bool) {
        return users[userAddress].activeX3Levels[level];
    }

    function usersActiveX6Levels(address userAddress, uint8 level) public view returns(bool) {
        return users[userAddress].activeX6Levels[level];
    }

    function userEarnings(address userAddress, uint8 level) public view returns(uint x3MatrixEarnings, uint x6MatrixEarnings) {
        x3MatrixEarnings = users[userAddress].x3MatrixEarnings[level];
        x6MatrixEarnings = users[userAddress].x6MatrixEarnings[level];
    }

    function usersX3Matrix(address userAddress, uint8 level) public view returns(address, address[] memory, bool) {
        return (users[userAddress].x3Matrix[level].currentReferrer,
                users[userAddress].x3Matrix[level].referrals,
                users[userAddress].x3Matrix[level].blocked);
    }


    function usersX6Matrix(address userAddress, uint8 level) public view returns(address, address[] memory, address[] memory, bool, address) {
        return (users[userAddress].x6Matrix[level].currentReferrer,
                users[userAddress].x6Matrix[level].firstLevelReferrals,
                users[userAddress].x6Matrix[level].secondLevelReferrals,
                users[userAddress].x6Matrix[level].blocked,
                users[userAddress].x6Matrix[level].closedPart);
    }



    
    function isUserExists(address user) public view returns (bool) {
        return (users[user].id != 0);
    }

    function findEthReceiver(address userAddress, address _from, uint8 matrix, uint8 level) private returns(address, bool) {
        address receiver = userAddress;
        bool isExtraDividends;
        if (matrix == 1) {
            while (true) {
                if (users[receiver].x3Matrix[level].blocked) {
                    emit MissedEthReceive(receiver, _from, 1, level);
                    isExtraDividends = true;
                    receiver = users[receiver].x3Matrix[level].currentReferrer;
                } else {
                    return (receiver, isExtraDividends);
                }
            }
        } else {
            while (true) {
                if (users[receiver].x6Matrix[level].blocked) {
                    emit MissedEthReceive(receiver, _from, 2, level);
                    isExtraDividends = true;
                    receiver = users[receiver].x6Matrix[level].currentReferrer;
                } else {
                    return (receiver, isExtraDividends);
                }
            }
        }
    }

    function sendPartnerETH(address userAddress, address _from, uint8 matrix, uint8 level) private {

        (address receiver, bool isExtraDividends) = findEthReceiver(userAddress, _from, matrix, level);

        if (!address(uint160(receiver)).send(
            levelPrice[level] - (levelPrice[level] * DIV_PERCENT / DIV_DIVISOR)
            )) {
                
            if(matrix == 1)
                users[receiver].x3MatrixEarnings[level] += levelPrice[level] - (levelPrice[level] * DIV_PERCENT / DIV_DIVISOR);
            else
                users[receiver].x6MatrixEarnings[level] += levelPrice[level] - (levelPrice[level] * DIV_PERCENT / DIV_DIVISOR);
            return address(uint160(receiver)).transfer(
                levelPrice[level] - (levelPrice[level] * DIV_PERCENT / DIV_DIVISOR)
                );
        } else {
            if(matrix == 1)
                users[receiver].x3MatrixEarnings[level] += levelPrice[level] - (levelPrice[level] * DIV_PERCENT / DIV_DIVISOR);
            else
                users[receiver].x6MatrixEarnings[level] += levelPrice[level] - (levelPrice[level] * DIV_PERCENT / DIV_DIVISOR);
        }
        
        if (isExtraDividends) {
            emit SentExtraEthDividends(_from, receiver, matrix, level);
        }
    }
    

    
    function bytesToAddress(bytes memory bys) private pure returns (address addr) {
        assembly {
            addr := mload(add(bys, 20))
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"ownerAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint8","name":"matrix","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"}],"name":"MissedEthReceive","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":false,"internalType":"uint8","name":"matrix","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"place","type":"uint8"}],"name":"NewUserPlace","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":true,"internalType":"uint256","name":"userId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"referrerId","type":"uint256"}],"name":"Registration","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"currentReferrer","type":"address"},{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint8","name":"matrix","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"}],"name":"Reinvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint8","name":"matrix","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"}],"name":"SentExtraEthDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":false,"internalType":"uint8","name":"matrix","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"}],"name":"Upgrade","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"DIV_PERCENT","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"LAST_LEVEL","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint8","name":"matrix","type":"uint8"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"buyNewLevel","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"claimDivs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"divPot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"findFreeX3Referrer","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"findFreeX6Referrer","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"idToAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isUserExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastUserId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"name":"levelPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"referrerAddress","type":"address"}],"name":"registrationExt","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"totalDividendPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalDivs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"userEarnings","outputs":[{"internalType":"uint256","name":"x3MatrixEarnings","type":"uint256"},{"internalType":"uint256","name":"x6MatrixEarnings","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"partnersCount","type":"uint256"},{"internalType":"uint256","name":"divClaimMark","type":"uint256"},{"internalType":"uint256","name":"totalPlayerDivPoints","type":"uint256"},{"internalType":"uint256","name":"divsClaimed","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"usersActiveX3Levels","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"usersActiveX6Levels","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"usersX3Matrix","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"}],"name":"usersX6Matrix","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_player","type":"address"}],"name":"viewDivs","outputs":[{"internalType":"uint256","name":"divsAvailable","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_player","type":"address"}],"name":"viewDivsPercent","outputs":[{"internalType":"uint256","name":"divsPercent","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]

608060405260026006553480156200001657600080fd5b506040516200360638038062003606833981810160405260208110156200003c57600080fd5b5051600160005260086020526658d15e176280007fad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac55f5560025b600c60ff821611620000b15760ff6000198201811660009081526008602052604080822054928416825290206002909102905560010162000075565b50600780546001600160a01b0319166001600160a01b038316179055620000d7620001f9565b506040805160c081018252600180825260006020808401828152848601838152606086018481526080870185815260a088018681526001600160a01b038b81168089528888529a88208a5181559551868a018054919092166001600160a01b031991821617909155935160028601559151600985015551600a84015551600b90920191909155918390528290527fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f8054909116909317909255905b600c60ff821611620001f0576001600160a01b03831660009081526020818152604080832060ff851684526003810183528184208054600160ff19918216811790925560049092019093529220805490921681179091550162000192565b50505062000238565b6040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081525090565b6133be80620002486000396000f3fe6080604052600436106101405760003560e01c806383ba31b2116100b6578063cd96f2221161006f578063cd96f222146105fd578063db58c62614610652578063e06e8dbd14610685578063ecabdf79146106c1578063fa45323d146106ee578063fe10c4191461072a57610140565b806383ba31b2146103745780638da5cb5b1461041d5780639cc102fc14610432578063a87430ba1461052b578063b2f7543a14610599578063be389d57146105d557610140565b80632a2d0c47116101085780632a2d0c4714610278578063348d4487146102be578063509222cd146102d3578063570354c514610306578063797eee24146103395780637bffe9d81461035f57610140565b806307279e2a146101ac5780630e3d0d35146101fc57806319aa70e7146102275780632113342d1461023c57806329c7040014610263575b366101615760075461015c9033906001600160a01b031661073f565b6101aa565b6101aa336101a56000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610b8d92505050565b61073f565b005b3480156101b857600080fd5b506101e8600480360360408110156101cf57600080fd5b5080356001600160a01b0316906020013560ff16610b94565b604080519115158252519081900360200190f35b34801561020857600080fd5b50610211610bc8565b6040805160ff9092168252519081900360200190f35b34801561023357600080fd5b506101e8610bcd565b34801561024857600080fd5b50610251610c32565b60408051918252519081900360200190f35b34801561026f57600080fd5b50610211610c38565b34801561028457600080fd5b506102a26004803603602081101561029b57600080fd5b5035610c3d565b604080516001600160a01b039092168252519081900360200190f35b3480156102ca57600080fd5b50610251610c58565b3480156102df57600080fd5b506101e8600480360360208110156102f657600080fd5b50356001600160a01b0316610c5e565b34801561031257600080fd5b506102516004803603602081101561032957600080fd5b50356001600160a01b0316610c7b565b6101aa6004803603602081101561034f57600080fd5b50356001600160a01b0316610cb4565b34801561036b57600080fd5b50610251610cc1565b34801561038057600080fd5b506103b06004803603604081101561039757600080fd5b5080356001600160a01b0316906020013560ff16610cc7565b604080516001600160a01b0385168152821515918101919091526060602080830182815285519284019290925284516080840191868101910280838360005b838110156104075781810151838201526020016103ef565b5050505090500194505050505060405180910390f35b34801561042957600080fd5b506102a2610d74565b34801561043e57600080fd5b5061046e6004803603604081101561045557600080fd5b5080356001600160a01b0316906020013560ff16610d83565b604080516001600160a01b03808816825284151560608301528316608082015260a060208083018281528851928401929092528751929391929184019160c0850191898101910280838360005b838110156104d35781810151838201526020016104bb565b50505050905001838103825286818151815260200191508051906020019060200280838360005b838110156105125781810151838201526020016104fa565b5050505090500197505050505050505060405180910390f35b34801561053757600080fd5b5061055e6004803603602081101561054e57600080fd5b50356001600160a01b0316610ea2565b604080519687526001600160a01b039095166020870152858501939093526060850191909152608084015260a0830152519081900360c00190f35b3480156105a557600080fd5b506101e8600480360360408110156105bc57600080fd5b5080356001600160a01b0316906020013560ff16610ee1565b6101aa600480360360408110156105eb57600080fd5b5060ff81358116916020013516610f10565b34801561060957600080fd5b506106396004803603604081101561062057600080fd5b5080356001600160a01b0316906020013560ff166115b7565b6040805192835260208301919091528051918290030190f35b34801561065e57600080fd5b506102516004803603602081101561067557600080fd5b50356001600160a01b03166115f2565b34801561069157600080fd5b506102a2600480360360408110156106a857600080fd5b5080356001600160a01b0316906020013560ff16611625565b3480156106cd57600080fd5b50610251600480360360208110156106e457600080fd5b503560ff166116b1565b3480156106fa57600080fd5b506102a26004803603604081101561071157600080fd5b5080356001600160a01b0316906020013560ff166116c3565b34801561073657600080fd5b5061025161174f565b3466b1a2bc2ec5000014610793576040805162461bcd60e51b8152602060048201526016602482015275726567697374726174696f6e20636f737420302e303560501b604482015290519081900360640190fd5b61079c82610c5e565b156107dc576040805162461bcd60e51b815260206004820152600b60248201526a757365722065786973747360a81b604482015290519081900360640190fd5b6107e581610c5e565b61082c576040805162461bcd60e51b81526020600482015260136024820152727265666572726572206e6f742065786973747360681b604482015290519081900360640190fd5b813b63ffffffff81161561087e576040805162461bcd60e51b815260206004820152601460248201527318d85b9b9bdd08189948184818dbdb9d1c9858dd60621b604482015290519081900360640190fd5b61088661325b565b506040805160c0810182526006805482526001600160a01b03858116602080850182815260008688018181526003805460608a0190815260808a0184815260a08b018581528f8a168087528689528d87208d51815597516001808a01805492909d166001600160a01b0319928316178d5596516002808b0191909155945160098a01559251600a89019081559151600b8901558b5487528589528d8720805484169091179055895490911688179098558284529084018552898320805460ff199081168417909155600494850186528a84208054909116831790559382905285546127103460c8020490810190965583548601845582549095019091558454840190945590835293822090930180548401905590916109a69086906116c3565b905060006109b5866001611625565b6007549091506001600160a01b03838116911614806109e157506007546001600160a01b038281169116145b15610a9f576007546000906109fe906001600160a01b0316610c7b565b1115610a1f57600754610a19906001600160a01b0316611755565b50610a41565b6003546007546001600160a01b03166000908152602081905260409020600901555b6007546001600160a01b03166000908152602081905260409020600a01805461271060c83402049081019091556005805460028302019081905590670de0b6b3a76400000281610a8d57fe5b60038054929091049091019055610ad1565b6005805461271060c834020490810191829055670de0b6b3a76400000281610ac357fe5b600380549290910490910190555b6001600160a01b038681166000908152602081815260408083206001808552600590910190925290912080546001600160a01b03191692851692909217909155610b1e90879084906117bb565b610b2a86826001611b2c565b6001600160a01b0380871660008181526020818152604080832054948a168084529281902054815190815290519293927f309bb360e8b69c23937ccc5fb01f9aeeead1c95a99604e175113ff82f2b1723a929181900390910190a4505050505050565b6014015190565b6001600160a01b03821660009081526020818152604080832060ff8086168552600390910190925290912054165b92915050565b60c881565b600080610bd933610c7b565b905060008111610c24576040805162461bcd60e51b81526020600482015260116024820152704e6f206469767320617661696c61626c6560781b604482015290519081900360640190fd5b610c2d33611755565b505090565b60035481565b600c81565b6001602052600090815260409020546001600160a01b031681565b60065481565b6001600160a01b0316600090815260208190526040902054151590565b6001600160a01b031660009081526020819052604090206009810154600354600a90920154670de0b6b3a7640000919092039091020490565b610cbe338261073f565b50565b60045481565b6001600160a01b0382811660009081526020818152604080832060ff8681168552600590910183528184208054600282015460019092018054855181880281018801909652808652969760609789979390911695919493909316929091849190830182828015610d6057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d42575b505050505091509250925092509250925092565b6007546001600160a01b031681565b6001600160a01b0382811660009081526020818152604080832060ff8681168552600690910183528184208054600382015460058301546001840180548751818a0281018a0190985280885298996060998a998c998a99978416989497600290950196909416949092169291869190830182828015610e2b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e0d575b5050505050935082805480602002602001604051908101604052809291908181526020018280548015610e8757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e69575b50505050509250945094509450945094509295509295909350565b60006020819052908152604090208054600182015460028301546009840154600a850154600b9095015493946001600160a01b03909316939192909186565b6001600160a01b039190911660009081526020818152604080832060ff94851684526004019091529020541690565b610f1933610c5e565b610f545760405162461bcd60e51b81526004018080602001828103825260238152602001806133676023913960400191505060405180910390fd5b8160ff1660011480610f6957508160ff166002145b610fab576040805162461bcd60e51b815260206004820152600e60248201526d0d2dcecc2d8d2c840dac2e8e4d2f60931b604482015290519081900360640190fd5b60ff81166000908152600860205260409020543414611001576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c696420707269636560981b604482015290519081900360640190fd5b60018160ff161180156110185750600c60ff821611155b611059576040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081b195d995b609a1b604482015290519081900360640190fd5b600061106433610c7b565b11156110795761107333611755565b50611090565b600354336000908152602081905260409020600901555b336000908152602081905260409020600a01805461271060c8340204908101909155600280548201905560048054909101905560ff821660011415611354573360009081526020818152604080832060ff8086168552600390910190925290912054161561113f576040805162461bcd60e51b81526020600482015260176024820152761b195d995b08185b1c9958591e481858dd1a5d985d1959604a1b604482015290519081900360640190fd5b3360009081526020818152604080832060ff600019860181168552600590910190925290912060020154161561119d573360009081526020818152604080832060ff60001986011684526005019091529020600201805460ff191690555b60006111a933836116c3565b6007549091506001600160a01b038083169116141561127b576007546000906111da906001600160a01b0316610c7b565b11156111fb576007546111f5906001600160a01b0316611755565b5061121d565b6003546007546001600160a01b03166000908152602081905260409020600901555b6007546001600160a01b03166000908152602081905260409020600a01805461271060c83402049081019091556005805460028302019081905590670de0b6b3a7640000028161126957fe5b600380549290910490910190556112ad565b6005805461271060c834020490810191829055670de0b6b3a7640000028161129f57fe5b600380549290910490910190555b3360008181526020818152604080832060ff8716845260058101835281842080546001600160a01b0319166001600160a01b0388161790556003019091529020805460ff191660011790556113039082846117bb565b604080516001815260ff8416602082015281516001600160a01b0384169233927f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119929081900390910190a3506115b3565b3360009081526020818152604080832060ff808616855260049091019092529091205416156113c4576040805162461bcd60e51b81526020600482015260176024820152761b195d995b08185b1c9958591e481858dd1a5d985d1959604a1b604482015290519081900360640190fd5b3360009081526020818152604080832060ff6000198601811685526006909101909252909120600301541615611422573360009081526020818152604080832060ff60001986011684526006019091529020600301805460ff191690555b600061142e3383611625565b6007549091506001600160a01b03808316911614156115005760075460009061145f906001600160a01b0316610c7b565b11156114805760075461147a906001600160a01b0316611755565b506114a2565b6003546007546001600160a01b03166000908152602081905260409020600901555b6007546001600160a01b03166000908152602081905260409020600a01805461271060c83402049081019091556005805460028302019081905590670de0b6b3a764000002816114ee57fe5b60038054929091049091019055611532565b6005805461271060c834020490810191829055670de0b6b3a7640000028161152457fe5b600380549290910490910190555b3360008181526020818152604080832060ff871684526004019091529020805460ff19166001179055611566908284611b2c565b604080516002815260ff8416602082015281516001600160a01b0384169233927f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119929081900390910190a3505b5050565b6001600160a01b039190911660009081526020818152604080832060ff90941683526007840182528083205460089094019091529020549091565b6005546001600160a01b0382166000908152602081905260408120600a01549091906064028161161e57fe5b0492915050565b60005b6001600160a01b0380841660009081526020818152604080832060010154909316825282822060ff8087168452600490910190915291902054161561168b57506001600160a01b0380831660009081526020819052604090206001015416610bc2565b6001600160a01b0392831660009081526020819052604090206001015490921691611628565b60086020526000908152604090205481565b60005b6001600160a01b0380841660009081526020818152604080832060010154909316825282822060ff8087168452600390910190915291902054161561172957506001600160a01b0380831660009081526020819052604090206001015416610bc2565b6001600160a01b03928316600090815260208190526040902060010154909216916116c6565b60025481565b60008061176183610c7b565b6002805482900390556003546001600160a01b0385166000818152602081905260408082206009810194909455600b90930180548501905591519293509183156108fc0291849190818181858888f1979650505050505050565b6001600160a01b0382811660009081526020818152604080832060ff8616808552600590910183529083206001908101805491820181558085529284200180546001600160a01b031916948816949094179093559190525460031115611893576001600160a01b0380831660008181526020818152604080832060ff80881680865260059092018452938290206001908101548351918252938101919091529190921681830152905191928616916000805160206133278339815191529181900360600190a361188e82846001846124c2565b611b27565b604080516001815260ff8316602082015260038183015290516001600160a01b0380851692908616916000805160206133278339815191529181900360600190a360408051600080825260208083018085526001600160a01b038716835282825284832060ff871684526005019091529290209051611918926001909201919061329a565b506001600160a01b03821660009081526020818152604080832060ff60018601811685526003909101909252909120541615801561195a575060ff8116600c14155b15611995576001600160a01b03821660009081526020818152604080832060ff851684526005019091529020600201805460ff191660011790555b6007546001600160a01b03838116911614611aa05760006119b683836116c3565b6001600160a01b0384811660009081526020818152604080832060ff88168452600501909152902054919250828116911614611a2a576001600160a01b0383811660009081526020818152604080832060ff87168452600501909152902080546001600160a01b0319169183169190911790555b6001600160a01b0380841660008181526020818152604080832060ff881680855260059091018352928190206003018054600190810190915581519081529182019290925281518885169486169392600080516020613347833981519152928290030190a4611a9a8382846117bb565b50611b27565b600754611ab9906001600160a01b0316846001846124c2565b600780546001600160a01b0390811660009081526020818152604080832060ff87168085526005909101835281842060030180546001908101909155955482519687529286015280518885169593949290921692600080516020613347833981519152929081900390910190a45b505050565b6001600160a01b03821660009081526020818152604080832060ff808616855260049091019092529091205416611baa576040805162461bcd60e51b815260206004820152601f60248201527f3530302e205265666572726572206c6576656c20697320696e61637469766500604482015290519081900360640190fd5b6001600160a01b03821660009081526020818152604080832060ff851684526006019091529020600101546002111561210f576001600160a01b0382811660008181526020818152604080832060ff8781168086526006909201845282852060019081018054918201815580875285872090910180546001600160a01b031916988c16988917905594829052935482516002815293840191909152909216818301529051919291600080516020613327833981519152916060908290030190a36001600160a01b0383811660009081526020818152604080832060ff86168452600601909152902080546001600160a01b0319168483169081179091556007549091161415611cc05761188e82846002846124c2565b6001600160a01b0382811660009081526020818152604080832060ff8616808552600691820184528285205486168086528585528386208287529092018452918420600280820180546001808201835591885295872090950180546001600160a01b031916978b1697909717909655919093520154909181148015611d9157506001600160a01b0382811660009081526020818152604080832060ff881684526006019091528120600101805492871692909190611d7a57fe5b6000918252602090912001546001600160a01b0316145b8015611ded57506001600160a01b0382811660009081526020818152604080832060ff88168452600601909152902060019081018054928716929091908110611dd657fe5b6000918252602090912001546001600160a01b0316145b15611eb2576001600160a01b03841660009081526020818152604080832060ff8716845260060190915290206001908101541415611e6b57604080516002815260ff8516602082015260058183015290516001600160a01b0380851692908816916000805160206133278339815191529181900360600190a3611ead565b604080516002815260ff8516602082015260068183015290516001600160a01b0380851692908816916000805160206133278339815191529181900360600190a35b6120fd565b8060011480611ec15750806002145b8015611f1957506001600160a01b0382811660009081526020818152604080832060ff881684526006019091528120600101805492871692909190611f0257fe5b6000918252602090912001546001600160a01b0316145b15611fdd576001600160a01b03841660009081526020818152604080832060ff8716845260060190915290206001908101541415611f9757604080516002815260ff8516602082015260038183015290516001600160a01b0380851692908816916000805160206133278339815191529181900360600190a3611ead565b604080516002815260ff8516602082015260048183015290516001600160a01b0380851692908816916000805160206133278339815191529181900360600190a36120fd565b80600214801561203d57506001600160a01b0382811660009081526020818152604080832060ff8816845260060190915290206001908101805492871692909190811061202657fe5b6000918252602090912001546001600160a01b0316145b156120fd576001600160a01b03841660009081526020818152604080832060ff87168452600601909152902060019081015414156120bb57604080516002815260ff8516602082015260058183015290516001600160a01b0380851692908816916000805160206133278339815191529181900360600190a36120fd565b604080516002815260ff8516602082015260068183015290516001600160a01b0380851692908816916000805160206133278339815191529181900360600190a35b612108858385612712565b5050611b27565b6001600160a01b0382811660009081526020818152604080832060ff86168085526006909101835290832060028101805460018101825590855292842090920180546001600160a01b0319168886161790559091526005015416156122f3576001600160a01b03821660009081526020818152604080832060ff8516845260060190915290206001908101805490919081106121a757fe5b60009182526020808320909101546001600160a01b038581168452838352604080852060ff871686526006019093529183206001018054929091169290916121eb57fe5b6000918252602090912001546001600160a01b031614801561226057506001600160a01b0382811660009081526020818152604080832060ff8616845260060190915281206005810154600190910180549190931692919061224957fe5b6000918252602090912001546001600160a01b0316145b1561227d576122728383836001612b5e565b61188e838383612712565b6001600160a01b0382811660009081526020818152604080832060ff861684526006019091528120600581015460019091018054919093169291906122be57fe5b6000918252602090912001546001600160a01b031614156122e6576122728383836001612b5e565b6122728383836000612b5e565b6001600160a01b0382811660009081526020818152604080832060ff8616845260060190915290206001908101805492861692909190811061233157fe5b6000918252602090912001546001600160a01b03161415612359576122728383836000612b5e565b6001600160a01b0382811660009081526020818152604080832060ff86168452600601909152812060010180549286169290919061239357fe5b6000918252602090912001546001600160a01b031614156123bb576122728383836001612b5e565b6001600160a01b03821660009081526020818152604080832060ff8516845260060190915281206001908101805483929081106123f457fe5b60009182526020808320909101546001600160a01b039081168452838201949094526040928301822060ff861680845260069182018352848420600190810154968916855284845285852091855291019091529181209091018054829190829061245a57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff86168252600601909252902060010154116124aa576124a58383836000612b5e565b6124b7565b6124b78383836001612b5e565b611b27838383612712565b6000806124d1868686866130c7565b60ff85166000908152600860205260408082205490519395509193506001600160a01b0385169261271060c884020490920380156108fc02929091818181858888f19350505050612615578360ff16600114156125745760ff83166000818152600860209081526040808320546001600160a01b038716845283835281842094845260079094019091529020805461271060c884020490920390910190556125ba565b60ff83166000818152600860208181526040808420546001600160a01b03881685528483528185209585529490920190529020805461271060c884020490920390910190555b60ff83166000908152600860205260408082205490516001600160a01b0385169261271060c884020490920380156108fc0292909190818181858888f1935050505015801561260d573d6000803e3d6000fd5b50505061270c565b8360ff166001141561266d5760ff83166000818152600860209081526040808320546001600160a01b038716845283835281842094845260079094019091529020805461271060c884020490920390910190556126b3565b60ff83166000818152600860208181526040808420546001600160a01b03881685528483528185209585529490920190529020805461271060c884020490920390910190555b8015612709576040805160ff80871682528516602082015281516001600160a01b0380861693908916927ff0ddc65c0d411f042f723dcfa1b7d13e85a35b7b70761d447c6500411cacf328929081900390910190a35b50505b50505050565b6001600160a01b03821660009081526020818152604080832060ff85168452600601909152902060020154600411156127525761188e82846002846124c2565b6001600160a01b0380831660009081526020818152604080832060ff861680855260069182018452828520549095168452838352818420948452939093018152908290206001018054835181840281018401909452808452606093928301828280156127e757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116127c9575b5050505050905080516002141561294457826001600160a01b03168160008151811061280f57fe5b60200260200101516001600160a01b031614806128515750826001600160a01b03168160018151811061283e57fe5b60200260200101516001600160a01b0316145b156128b3576001600160a01b0380841660008181526020818152604080832060ff8816808552600691820184528285205490961684528383528184209584529490940190529190912060050180546001600160a01b0319169091179055612944565b80516001141561294457826001600160a01b0316816000815181106128d457fe5b60200260200101516001600160a01b03161415612944576001600160a01b0380841660008181526020818152604080832060ff8816808552600691820184528285205490961684528383528184209584529490940190529190912060050180546001600160a01b03191690911790555b60408051600080825260208083018085526001600160a01b038816835282825284832060ff881684526006019091529290209051612988926001909201919061329a565b5060408051600080825260208083018085526001600160a01b038816835282825284832060ff8816845260060190915292902090516129cd926002909201919061329a565b506001600160a01b03831660009081526020818152604080832060ff808716855260068201845282852060050180546001600160a01b0319169055600187018116855260049091019092529091205416158015612a2e575060ff8216600c14155b15612a69576001600160a01b03831660009081526020818152604080832060ff861684526006019091529020600301805460ff191660011790555b6001600160a01b0380841660008181526020818152604080832060ff8816845260060190915290206004018054600101905560075490911614612b04576000612ab28484611625565b604080516002815260ff8616602082015281519293506001600160a01b0380891693818616939189169260008051602061334783398151915292908290030190a4612afe848285611b2c565b5061270c565b600754604080516002815260ff8516602082015281516001600160a01b0380891694600094911692600080516020613347833981519152929081900390910190a460075461270c906001600160a01b0316856002856124c2565b80612e0e576001600160a01b03831660009081526020818152604080832060ff86168452600601909152812060010180548291908290612b9a57fe5b6000918252602080832091909101546001600160a01b039081168452838201949094526040928301822060ff8716808452600691820183528484206001908101805480830182559086528486200180546001600160a01b0319168c891617905595891684528383528484209084520190529081209091018054909190612c1c57fe5b60009182526020808320909101546001600160a01b038681168452838352604080852060ff8816865260060190935291832060010180549183169392881692600080516020613327833981519152926002928892918291908290612c7c57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a36001600160a01b0380841660008181526020818152604080832060ff881684526006019091528120600101805492938816926000805160206133278339815191529260029288928291908290612d2c57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260029092011682820152519081900360600190a36001600160a01b03831660009081526020818152604080832060ff8616845260060190915281206001018054909190612dc357fe5b60009182526020808320909101546001600160a01b038781168452838352604080852060ff881686526006019093529190922080546001600160a01b0319169190921617905561270c565b6001600160a01b03831660009081526020818152604080832060ff861684526006019091528120600190810180548392908110612e4757fe5b6000918252602080832091909101546001600160a01b039081168452838201949094526040928301822060ff8716808452600691820183528484206001908101805480830182559086528486200180546001600160a01b0319168c8916179055958916845283835284842090845201905220810180549091908110612ec857fe5b60009182526020808320909101546001600160a01b038681168452838352604080852060ff8816865260060190935291832060019081018054928416949389169360008051602061332783398151915293600293899383929091908110612f2b57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a36001600160a01b0380841660008181526020818152604080832060ff8816845260060190915281206001908101805493948916936000805160206133278339815191529360029389939192839291908110612fe057fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260049092011682820152519081900360600190a36001600160a01b03831660009081526020818152604080832060ff86168452600601909152902060019081018054909190811061307b57fe5b60009182526020808320909101546001600160a01b038781168452838352604080852060ff881686526006019093529190922080546001600160a01b0319169190921617905550505050565b6000808581600160ff8716141561319d575b6001600160a01b03821660009081526020818152604080832060ff808a168552600590910190925290912060020154161561318e57604080516001815260ff8716602082015281516001600160a01b03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a3506001600160a01b0390811660009081526020818152604080832060ff88168452600501909152902054166001613198565b9092509050613252565b6130d9565b6001600160a01b03821660009081526020818152604080832060ff808a168552600690910190925290912060030154161561318e57604080516002815260ff8716602082015281516001600160a01b03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a3506001600160a01b0390811660009081526020818152604080832060ff8816845260060190915290205416600161319d565b94509492505050565b6040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081525090565b8280548282559060005260206000209081019282156132ef579160200282015b828111156132ef57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906132ba565b506132fb9291506132ff565b5090565b61332391905b808211156132fb5780546001600160a01b0319168155600101613305565b9056fe68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d82a00c953eff38ec1b71e7fe060b2ab8df0bbe5354319fbdde4fbdafd6324386a675736572206973206e6f74206578697374732e2052656769737465722066697273742ea265627a7a723158204223ac51899ed5dd4d67742e19ae1818efaa4da6bf920d56c6e0950a52ac967264736f6c634300051100320000000000000000000000005a1f1409739cb500b675c0300f46dfefe02a9e30

Deployed Bytecode

0x6080604052600436106101405760003560e01c806383ba31b2116100b6578063cd96f2221161006f578063cd96f222146105fd578063db58c62614610652578063e06e8dbd14610685578063ecabdf79146106c1578063fa45323d146106ee578063fe10c4191461072a57610140565b806383ba31b2146103745780638da5cb5b1461041d5780639cc102fc14610432578063a87430ba1461052b578063b2f7543a14610599578063be389d57146105d557610140565b80632a2d0c47116101085780632a2d0c4714610278578063348d4487146102be578063509222cd146102d3578063570354c514610306578063797eee24146103395780637bffe9d81461035f57610140565b806307279e2a146101ac5780630e3d0d35146101fc57806319aa70e7146102275780632113342d1461023c57806329c7040014610263575b366101615760075461015c9033906001600160a01b031661073f565b6101aa565b6101aa336101a56000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610b8d92505050565b61073f565b005b3480156101b857600080fd5b506101e8600480360360408110156101cf57600080fd5b5080356001600160a01b0316906020013560ff16610b94565b604080519115158252519081900360200190f35b34801561020857600080fd5b50610211610bc8565b6040805160ff9092168252519081900360200190f35b34801561023357600080fd5b506101e8610bcd565b34801561024857600080fd5b50610251610c32565b60408051918252519081900360200190f35b34801561026f57600080fd5b50610211610c38565b34801561028457600080fd5b506102a26004803603602081101561029b57600080fd5b5035610c3d565b604080516001600160a01b039092168252519081900360200190f35b3480156102ca57600080fd5b50610251610c58565b3480156102df57600080fd5b506101e8600480360360208110156102f657600080fd5b50356001600160a01b0316610c5e565b34801561031257600080fd5b506102516004803603602081101561032957600080fd5b50356001600160a01b0316610c7b565b6101aa6004803603602081101561034f57600080fd5b50356001600160a01b0316610cb4565b34801561036b57600080fd5b50610251610cc1565b34801561038057600080fd5b506103b06004803603604081101561039757600080fd5b5080356001600160a01b0316906020013560ff16610cc7565b604080516001600160a01b0385168152821515918101919091526060602080830182815285519284019290925284516080840191868101910280838360005b838110156104075781810151838201526020016103ef565b5050505090500194505050505060405180910390f35b34801561042957600080fd5b506102a2610d74565b34801561043e57600080fd5b5061046e6004803603604081101561045557600080fd5b5080356001600160a01b0316906020013560ff16610d83565b604080516001600160a01b03808816825284151560608301528316608082015260a060208083018281528851928401929092528751929391929184019160c0850191898101910280838360005b838110156104d35781810151838201526020016104bb565b50505050905001838103825286818151815260200191508051906020019060200280838360005b838110156105125781810151838201526020016104fa565b5050505090500197505050505050505060405180910390f35b34801561053757600080fd5b5061055e6004803603602081101561054e57600080fd5b50356001600160a01b0316610ea2565b604080519687526001600160a01b039095166020870152858501939093526060850191909152608084015260a0830152519081900360c00190f35b3480156105a557600080fd5b506101e8600480360360408110156105bc57600080fd5b5080356001600160a01b0316906020013560ff16610ee1565b6101aa600480360360408110156105eb57600080fd5b5060ff81358116916020013516610f10565b34801561060957600080fd5b506106396004803603604081101561062057600080fd5b5080356001600160a01b0316906020013560ff166115b7565b6040805192835260208301919091528051918290030190f35b34801561065e57600080fd5b506102516004803603602081101561067557600080fd5b50356001600160a01b03166115f2565b34801561069157600080fd5b506102a2600480360360408110156106a857600080fd5b5080356001600160a01b0316906020013560ff16611625565b3480156106cd57600080fd5b50610251600480360360208110156106e457600080fd5b503560ff166116b1565b3480156106fa57600080fd5b506102a26004803603604081101561071157600080fd5b5080356001600160a01b0316906020013560ff166116c3565b34801561073657600080fd5b5061025161174f565b3466b1a2bc2ec5000014610793576040805162461bcd60e51b8152602060048201526016602482015275726567697374726174696f6e20636f737420302e303560501b604482015290519081900360640190fd5b61079c82610c5e565b156107dc576040805162461bcd60e51b815260206004820152600b60248201526a757365722065786973747360a81b604482015290519081900360640190fd5b6107e581610c5e565b61082c576040805162461bcd60e51b81526020600482015260136024820152727265666572726572206e6f742065786973747360681b604482015290519081900360640190fd5b813b63ffffffff81161561087e576040805162461bcd60e51b815260206004820152601460248201527318d85b9b9bdd08189948184818dbdb9d1c9858dd60621b604482015290519081900360640190fd5b61088661325b565b506040805160c0810182526006805482526001600160a01b03858116602080850182815260008688018181526003805460608a0190815260808a0184815260a08b018581528f8a168087528689528d87208d51815597516001808a01805492909d166001600160a01b0319928316178d5596516002808b0191909155945160098a01559251600a89019081559151600b8901558b5487528589528d8720805484169091179055895490911688179098558284529084018552898320805460ff199081168417909155600494850186528a84208054909116831790559382905285546127103460c8020490810190965583548601845582549095019091558454840190945590835293822090930180548401905590916109a69086906116c3565b905060006109b5866001611625565b6007549091506001600160a01b03838116911614806109e157506007546001600160a01b038281169116145b15610a9f576007546000906109fe906001600160a01b0316610c7b565b1115610a1f57600754610a19906001600160a01b0316611755565b50610a41565b6003546007546001600160a01b03166000908152602081905260409020600901555b6007546001600160a01b03166000908152602081905260409020600a01805461271060c83402049081019091556005805460028302019081905590670de0b6b3a76400000281610a8d57fe5b60038054929091049091019055610ad1565b6005805461271060c834020490810191829055670de0b6b3a76400000281610ac357fe5b600380549290910490910190555b6001600160a01b038681166000908152602081815260408083206001808552600590910190925290912080546001600160a01b03191692851692909217909155610b1e90879084906117bb565b610b2a86826001611b2c565b6001600160a01b0380871660008181526020818152604080832054948a168084529281902054815190815290519293927f309bb360e8b69c23937ccc5fb01f9aeeead1c95a99604e175113ff82f2b1723a929181900390910190a4505050505050565b6014015190565b6001600160a01b03821660009081526020818152604080832060ff8086168552600390910190925290912054165b92915050565b60c881565b600080610bd933610c7b565b905060008111610c24576040805162461bcd60e51b81526020600482015260116024820152704e6f206469767320617661696c61626c6560781b604482015290519081900360640190fd5b610c2d33611755565b505090565b60035481565b600c81565b6001602052600090815260409020546001600160a01b031681565b60065481565b6001600160a01b0316600090815260208190526040902054151590565b6001600160a01b031660009081526020819052604090206009810154600354600a90920154670de0b6b3a7640000919092039091020490565b610cbe338261073f565b50565b60045481565b6001600160a01b0382811660009081526020818152604080832060ff8681168552600590910183528184208054600282015460019092018054855181880281018801909652808652969760609789979390911695919493909316929091849190830182828015610d6057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d42575b505050505091509250925092509250925092565b6007546001600160a01b031681565b6001600160a01b0382811660009081526020818152604080832060ff8681168552600690910183528184208054600382015460058301546001840180548751818a0281018a0190985280885298996060998a998c998a99978416989497600290950196909416949092169291869190830182828015610e2b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e0d575b5050505050935082805480602002602001604051908101604052809291908181526020018280548015610e8757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e69575b50505050509250945094509450945094509295509295909350565b60006020819052908152604090208054600182015460028301546009840154600a850154600b9095015493946001600160a01b03909316939192909186565b6001600160a01b039190911660009081526020818152604080832060ff94851684526004019091529020541690565b610f1933610c5e565b610f545760405162461bcd60e51b81526004018080602001828103825260238152602001806133676023913960400191505060405180910390fd5b8160ff1660011480610f6957508160ff166002145b610fab576040805162461bcd60e51b815260206004820152600e60248201526d0d2dcecc2d8d2c840dac2e8e4d2f60931b604482015290519081900360640190fd5b60ff81166000908152600860205260409020543414611001576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c696420707269636560981b604482015290519081900360640190fd5b60018160ff161180156110185750600c60ff821611155b611059576040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081b195d995b609a1b604482015290519081900360640190fd5b600061106433610c7b565b11156110795761107333611755565b50611090565b600354336000908152602081905260409020600901555b336000908152602081905260409020600a01805461271060c8340204908101909155600280548201905560048054909101905560ff821660011415611354573360009081526020818152604080832060ff8086168552600390910190925290912054161561113f576040805162461bcd60e51b81526020600482015260176024820152761b195d995b08185b1c9958591e481858dd1a5d985d1959604a1b604482015290519081900360640190fd5b3360009081526020818152604080832060ff600019860181168552600590910190925290912060020154161561119d573360009081526020818152604080832060ff60001986011684526005019091529020600201805460ff191690555b60006111a933836116c3565b6007549091506001600160a01b038083169116141561127b576007546000906111da906001600160a01b0316610c7b565b11156111fb576007546111f5906001600160a01b0316611755565b5061121d565b6003546007546001600160a01b03166000908152602081905260409020600901555b6007546001600160a01b03166000908152602081905260409020600a01805461271060c83402049081019091556005805460028302019081905590670de0b6b3a7640000028161126957fe5b600380549290910490910190556112ad565b6005805461271060c834020490810191829055670de0b6b3a7640000028161129f57fe5b600380549290910490910190555b3360008181526020818152604080832060ff8716845260058101835281842080546001600160a01b0319166001600160a01b0388161790556003019091529020805460ff191660011790556113039082846117bb565b604080516001815260ff8416602082015281516001600160a01b0384169233927f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119929081900390910190a3506115b3565b3360009081526020818152604080832060ff808616855260049091019092529091205416156113c4576040805162461bcd60e51b81526020600482015260176024820152761b195d995b08185b1c9958591e481858dd1a5d985d1959604a1b604482015290519081900360640190fd5b3360009081526020818152604080832060ff6000198601811685526006909101909252909120600301541615611422573360009081526020818152604080832060ff60001986011684526006019091529020600301805460ff191690555b600061142e3383611625565b6007549091506001600160a01b03808316911614156115005760075460009061145f906001600160a01b0316610c7b565b11156114805760075461147a906001600160a01b0316611755565b506114a2565b6003546007546001600160a01b03166000908152602081905260409020600901555b6007546001600160a01b03166000908152602081905260409020600a01805461271060c83402049081019091556005805460028302019081905590670de0b6b3a764000002816114ee57fe5b60038054929091049091019055611532565b6005805461271060c834020490810191829055670de0b6b3a7640000028161152457fe5b600380549290910490910190555b3360008181526020818152604080832060ff871684526004019091529020805460ff19166001179055611566908284611b2c565b604080516002815260ff8416602082015281516001600160a01b0384169233927f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119929081900390910190a3505b5050565b6001600160a01b039190911660009081526020818152604080832060ff90941683526007840182528083205460089094019091529020549091565b6005546001600160a01b0382166000908152602081905260408120600a01549091906064028161161e57fe5b0492915050565b60005b6001600160a01b0380841660009081526020818152604080832060010154909316825282822060ff8087168452600490910190915291902054161561168b57506001600160a01b0380831660009081526020819052604090206001015416610bc2565b6001600160a01b0392831660009081526020819052604090206001015490921691611628565b60086020526000908152604090205481565b60005b6001600160a01b0380841660009081526020818152604080832060010154909316825282822060ff8087168452600390910190915291902054161561172957506001600160a01b0380831660009081526020819052604090206001015416610bc2565b6001600160a01b03928316600090815260208190526040902060010154909216916116c6565b60025481565b60008061176183610c7b565b6002805482900390556003546001600160a01b0385166000818152602081905260408082206009810194909455600b90930180548501905591519293509183156108fc0291849190818181858888f1979650505050505050565b6001600160a01b0382811660009081526020818152604080832060ff8616808552600590910183529083206001908101805491820181558085529284200180546001600160a01b031916948816949094179093559190525460031115611893576001600160a01b0380831660008181526020818152604080832060ff80881680865260059092018452938290206001908101548351918252938101919091529190921681830152905191928616916000805160206133278339815191529181900360600190a361188e82846001846124c2565b611b27565b604080516001815260ff8316602082015260038183015290516001600160a01b0380851692908616916000805160206133278339815191529181900360600190a360408051600080825260208083018085526001600160a01b038716835282825284832060ff871684526005019091529290209051611918926001909201919061329a565b506001600160a01b03821660009081526020818152604080832060ff60018601811685526003909101909252909120541615801561195a575060ff8116600c14155b15611995576001600160a01b03821660009081526020818152604080832060ff851684526005019091529020600201805460ff191660011790555b6007546001600160a01b03838116911614611aa05760006119b683836116c3565b6001600160a01b0384811660009081526020818152604080832060ff88168452600501909152902054919250828116911614611a2a576001600160a01b0383811660009081526020818152604080832060ff87168452600501909152902080546001600160a01b0319169183169190911790555b6001600160a01b0380841660008181526020818152604080832060ff881680855260059091018352928190206003018054600190810190915581519081529182019290925281518885169486169392600080516020613347833981519152928290030190a4611a9a8382846117bb565b50611b27565b600754611ab9906001600160a01b0316846001846124c2565b600780546001600160a01b0390811660009081526020818152604080832060ff87168085526005909101835281842060030180546001908101909155955482519687529286015280518885169593949290921692600080516020613347833981519152929081900390910190a45b505050565b6001600160a01b03821660009081526020818152604080832060ff808616855260049091019092529091205416611baa576040805162461bcd60e51b815260206004820152601f60248201527f3530302e205265666572726572206c6576656c20697320696e61637469766500604482015290519081900360640190fd5b6001600160a01b03821660009081526020818152604080832060ff851684526006019091529020600101546002111561210f576001600160a01b0382811660008181526020818152604080832060ff8781168086526006909201845282852060019081018054918201815580875285872090910180546001600160a01b031916988c16988917905594829052935482516002815293840191909152909216818301529051919291600080516020613327833981519152916060908290030190a36001600160a01b0383811660009081526020818152604080832060ff86168452600601909152902080546001600160a01b0319168483169081179091556007549091161415611cc05761188e82846002846124c2565b6001600160a01b0382811660009081526020818152604080832060ff8616808552600691820184528285205486168086528585528386208287529092018452918420600280820180546001808201835591885295872090950180546001600160a01b031916978b1697909717909655919093520154909181148015611d9157506001600160a01b0382811660009081526020818152604080832060ff881684526006019091528120600101805492871692909190611d7a57fe5b6000918252602090912001546001600160a01b0316145b8015611ded57506001600160a01b0382811660009081526020818152604080832060ff88168452600601909152902060019081018054928716929091908110611dd657fe5b6000918252602090912001546001600160a01b0316145b15611eb2576001600160a01b03841660009081526020818152604080832060ff8716845260060190915290206001908101541415611e6b57604080516002815260ff8516602082015260058183015290516001600160a01b0380851692908816916000805160206133278339815191529181900360600190a3611ead565b604080516002815260ff8516602082015260068183015290516001600160a01b0380851692908816916000805160206133278339815191529181900360600190a35b6120fd565b8060011480611ec15750806002145b8015611f1957506001600160a01b0382811660009081526020818152604080832060ff881684526006019091528120600101805492871692909190611f0257fe5b6000918252602090912001546001600160a01b0316145b15611fdd576001600160a01b03841660009081526020818152604080832060ff8716845260060190915290206001908101541415611f9757604080516002815260ff8516602082015260038183015290516001600160a01b0380851692908816916000805160206133278339815191529181900360600190a3611ead565b604080516002815260ff8516602082015260048183015290516001600160a01b0380851692908816916000805160206133278339815191529181900360600190a36120fd565b80600214801561203d57506001600160a01b0382811660009081526020818152604080832060ff8816845260060190915290206001908101805492871692909190811061202657fe5b6000918252602090912001546001600160a01b0316145b156120fd576001600160a01b03841660009081526020818152604080832060ff87168452600601909152902060019081015414156120bb57604080516002815260ff8516602082015260058183015290516001600160a01b0380851692908816916000805160206133278339815191529181900360600190a36120fd565b604080516002815260ff8516602082015260068183015290516001600160a01b0380851692908816916000805160206133278339815191529181900360600190a35b612108858385612712565b5050611b27565b6001600160a01b0382811660009081526020818152604080832060ff86168085526006909101835290832060028101805460018101825590855292842090920180546001600160a01b0319168886161790559091526005015416156122f3576001600160a01b03821660009081526020818152604080832060ff8516845260060190915290206001908101805490919081106121a757fe5b60009182526020808320909101546001600160a01b038581168452838352604080852060ff871686526006019093529183206001018054929091169290916121eb57fe5b6000918252602090912001546001600160a01b031614801561226057506001600160a01b0382811660009081526020818152604080832060ff8616845260060190915281206005810154600190910180549190931692919061224957fe5b6000918252602090912001546001600160a01b0316145b1561227d576122728383836001612b5e565b61188e838383612712565b6001600160a01b0382811660009081526020818152604080832060ff861684526006019091528120600581015460019091018054919093169291906122be57fe5b6000918252602090912001546001600160a01b031614156122e6576122728383836001612b5e565b6122728383836000612b5e565b6001600160a01b0382811660009081526020818152604080832060ff8616845260060190915290206001908101805492861692909190811061233157fe5b6000918252602090912001546001600160a01b03161415612359576122728383836000612b5e565b6001600160a01b0382811660009081526020818152604080832060ff86168452600601909152812060010180549286169290919061239357fe5b6000918252602090912001546001600160a01b031614156123bb576122728383836001612b5e565b6001600160a01b03821660009081526020818152604080832060ff8516845260060190915281206001908101805483929081106123f457fe5b60009182526020808320909101546001600160a01b039081168452838201949094526040928301822060ff861680845260069182018352848420600190810154968916855284845285852091855291019091529181209091018054829190829061245a57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff86168252600601909252902060010154116124aa576124a58383836000612b5e565b6124b7565b6124b78383836001612b5e565b611b27838383612712565b6000806124d1868686866130c7565b60ff85166000908152600860205260408082205490519395509193506001600160a01b0385169261271060c884020490920380156108fc02929091818181858888f19350505050612615578360ff16600114156125745760ff83166000818152600860209081526040808320546001600160a01b038716845283835281842094845260079094019091529020805461271060c884020490920390910190556125ba565b60ff83166000818152600860208181526040808420546001600160a01b03881685528483528185209585529490920190529020805461271060c884020490920390910190555b60ff83166000908152600860205260408082205490516001600160a01b0385169261271060c884020490920380156108fc0292909190818181858888f1935050505015801561260d573d6000803e3d6000fd5b50505061270c565b8360ff166001141561266d5760ff83166000818152600860209081526040808320546001600160a01b038716845283835281842094845260079094019091529020805461271060c884020490920390910190556126b3565b60ff83166000818152600860208181526040808420546001600160a01b03881685528483528185209585529490920190529020805461271060c884020490920390910190555b8015612709576040805160ff80871682528516602082015281516001600160a01b0380861693908916927ff0ddc65c0d411f042f723dcfa1b7d13e85a35b7b70761d447c6500411cacf328929081900390910190a35b50505b50505050565b6001600160a01b03821660009081526020818152604080832060ff85168452600601909152902060020154600411156127525761188e82846002846124c2565b6001600160a01b0380831660009081526020818152604080832060ff861680855260069182018452828520549095168452838352818420948452939093018152908290206001018054835181840281018401909452808452606093928301828280156127e757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116127c9575b5050505050905080516002141561294457826001600160a01b03168160008151811061280f57fe5b60200260200101516001600160a01b031614806128515750826001600160a01b03168160018151811061283e57fe5b60200260200101516001600160a01b0316145b156128b3576001600160a01b0380841660008181526020818152604080832060ff8816808552600691820184528285205490961684528383528184209584529490940190529190912060050180546001600160a01b0319169091179055612944565b80516001141561294457826001600160a01b0316816000815181106128d457fe5b60200260200101516001600160a01b03161415612944576001600160a01b0380841660008181526020818152604080832060ff8816808552600691820184528285205490961684528383528184209584529490940190529190912060050180546001600160a01b03191690911790555b60408051600080825260208083018085526001600160a01b038816835282825284832060ff881684526006019091529290209051612988926001909201919061329a565b5060408051600080825260208083018085526001600160a01b038816835282825284832060ff8816845260060190915292902090516129cd926002909201919061329a565b506001600160a01b03831660009081526020818152604080832060ff808716855260068201845282852060050180546001600160a01b0319169055600187018116855260049091019092529091205416158015612a2e575060ff8216600c14155b15612a69576001600160a01b03831660009081526020818152604080832060ff861684526006019091529020600301805460ff191660011790555b6001600160a01b0380841660008181526020818152604080832060ff8816845260060190915290206004018054600101905560075490911614612b04576000612ab28484611625565b604080516002815260ff8616602082015281519293506001600160a01b0380891693818616939189169260008051602061334783398151915292908290030190a4612afe848285611b2c565b5061270c565b600754604080516002815260ff8516602082015281516001600160a01b0380891694600094911692600080516020613347833981519152929081900390910190a460075461270c906001600160a01b0316856002856124c2565b80612e0e576001600160a01b03831660009081526020818152604080832060ff86168452600601909152812060010180548291908290612b9a57fe5b6000918252602080832091909101546001600160a01b039081168452838201949094526040928301822060ff8716808452600691820183528484206001908101805480830182559086528486200180546001600160a01b0319168c891617905595891684528383528484209084520190529081209091018054909190612c1c57fe5b60009182526020808320909101546001600160a01b038681168452838352604080852060ff8816865260060190935291832060010180549183169392881692600080516020613327833981519152926002928892918291908290612c7c57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a36001600160a01b0380841660008181526020818152604080832060ff881684526006019091528120600101805492938816926000805160206133278339815191529260029288928291908290612d2c57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260029092011682820152519081900360600190a36001600160a01b03831660009081526020818152604080832060ff8616845260060190915281206001018054909190612dc357fe5b60009182526020808320909101546001600160a01b038781168452838352604080852060ff881686526006019093529190922080546001600160a01b0319169190921617905561270c565b6001600160a01b03831660009081526020818152604080832060ff861684526006019091528120600190810180548392908110612e4757fe5b6000918252602080832091909101546001600160a01b039081168452838201949094526040928301822060ff8716808452600691820183528484206001908101805480830182559086528486200180546001600160a01b0319168c8916179055958916845283835284842090845201905220810180549091908110612ec857fe5b60009182526020808320909101546001600160a01b038681168452838352604080852060ff8816865260060190935291832060019081018054928416949389169360008051602061332783398151915293600293899383929091908110612f2b57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a36001600160a01b0380841660008181526020818152604080832060ff8816845260060190915281206001908101805493948916936000805160206133278339815191529360029389939192839291908110612fe057fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260049092011682820152519081900360600190a36001600160a01b03831660009081526020818152604080832060ff86168452600601909152902060019081018054909190811061307b57fe5b60009182526020808320909101546001600160a01b038781168452838352604080852060ff881686526006019093529190922080546001600160a01b0319169190921617905550505050565b6000808581600160ff8716141561319d575b6001600160a01b03821660009081526020818152604080832060ff808a168552600590910190925290912060020154161561318e57604080516001815260ff8716602082015281516001600160a01b03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a3506001600160a01b0390811660009081526020818152604080832060ff88168452600501909152902054166001613198565b9092509050613252565b6130d9565b6001600160a01b03821660009081526020818152604080832060ff808a168552600690910190925290912060030154161561318e57604080516002815260ff8716602082015281516001600160a01b03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a3506001600160a01b0390811660009081526020818152604080832060ff8816845260060190915290205416600161319d565b94509492505050565b6040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081525090565b8280548282559060005260206000209081019282156132ef579160200282015b828111156132ef57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906132ba565b506132fb9291506132ff565b5090565b61332391905b808211156132fb5780546001600160a01b0319168155600101613305565b9056fe68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d82a00c953eff38ec1b71e7fe060b2ab8df0bbe5354319fbdde4fbdafd6324386a675736572206973206e6f74206578697374732e2052656769737465722066697273742ea265627a7a723158204223ac51899ed5dd4d67742e19ae1818efaa4da6bf920d56c6e0950a52ac967264736f6c63430005110032

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

0000000000000000000000005a1f1409739cb500b675c0300f46dfefe02a9e30

-----Decoded View---------------
Arg [0] : ownerAddress (address): 0x5a1F1409739CB500b675c0300f46dfefE02a9e30

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000005a1f1409739cb500b675c0300f46dfefe02a9e30


Deployed Bytecode Sourcemap

956:24898:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3917:8;3914:90;;3986:5;;3961:31;;3974:10;;-1:-1:-1;;;;;3986:5:0;3961:12;:31::i;:::-;3954:38;;3914:90;4024:50;4037:10;4049:24;4064:8;;4049:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4049:14:0;;-1:-1:-1;;;4049:24:0:i;:::-;4024:12;:50::i;:::-;956:24898;21735:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21735:155:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21735:155:0;;-1:-1:-1;;;;;21735:155:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1908:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1908:39:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10189:185;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10189:185:0;;;:::i;2149:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2149:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;1864:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1864:37:0;;;:::i;2063:43::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2063:43:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2063:43:0;;:::i;:::-;;;;-1:-1:-1;;;;;2063:43:0;;;;;;;;;;;;;;2308:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2308:26:0;;;:::i;23170:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23170:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23170:110:0;-1:-1:-1;;;;;23170:110:0;;:::i;10877:261::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10877:261:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10877:261:0;-1:-1:-1;;;;;10877:261:0;;:::i;4090:127::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4090:127:0;-1:-1:-1;;;;;4090:127:0;;:::i;2187:21::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2187:21:0;;;:::i;22343:312::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22343:312:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22343:312:0;;-1:-1:-1;;;;;22343:312:0;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;22343:312:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-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;22343:312:0;;;;;;;;;;;;;;;;;;;2341:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2341:20:0;;;:::i;22665:487::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22665:487:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22665:487:0;;-1:-1:-1;;;;;22665:487:0;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;22665:487:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-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;22665:487: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;22665:487:0;;;;;;;;;;;;;;;;;;;;;;2019:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2019:37:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2019:37:0;-1:-1:-1;;;;;2019:37:0;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2019:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21898:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21898:155:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21898:155:0;;-1:-1:-1;;;;;21898:155:0;;;;;;;;:::i;4229:3428::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4229:3428:0;;;;;;;;;;;:::i;22061:274::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22061:274:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22061:274:0;;-1:-1:-1;;;;;22061:274:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10710:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10710:159:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10710:159:0;-1:-1:-1;;;;;10710:159:0;;:::i;21370:349::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21370:349:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21370:349:0;;-1:-1:-1;;;;;21370:349:0;;;;;;;;:::i;2374:40::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2374:40:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2374:40:0;;;;:::i;21009:349::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21009:349:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21009:349:0;;-1:-1:-1;;;;;21009:349:0;;;;;;;;:::i;2123:18::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2123:18:0;;;:::i;7673:2498::-;7768:9;7781:10;7768:23;7760:58;;;;;-1:-1:-1;;;7760:58:0;;;;;;;;;;;;-1:-1:-1;;;7760:58:0;;;;;;;;;;;;;;;7838:25;7851:11;7838:12;:25::i;:::-;7837:26;7829:50;;;;;-1:-1:-1;;;7829:50:0;;;;;;;;;;;;-1:-1:-1;;;7829:50:0;;;;;;;;;;;;;;;7898:29;7911:15;7898:12;:29::i;:::-;7890:61;;;;;-1:-1:-1;;;7890:61:0;;;;;;;;;;;;-1:-1:-1;;;7890:61:0;;;;;;;;;;;;;;;8026:24;;8079:9;;;;8071:42;;;;;-1:-1:-1;;;8071:42:0;;;;;;;;;;;;-1:-1:-1;;;8071:42:0;;;;;;;;;;;;;;;8134:16;;:::i;:::-;-1:-1:-1;8153:246:0;;;;;;;;8177:10;;;8153:246;;-1:-1:-1;;;;;8153:246:0;;;;;;;;;;-1:-1:-1;8153:246:0;;;;;;8287:19;;;8153:246;;;;;;;;;;;;;;;;;;8420:18;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8420:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8468:10;;8456:23;;;;;;;;:37;;;;;;;;;8514:45;;;;;;;;;;8580:36;;;:33;;;:36;;;;;:43;;-1:-1:-1;;8580:43:0;;;;;;;;8635:33;;;;:36;;;;;:43;;;;;;;;;8699:18;;;;:82;;2005:5;8743:9;1944:3;8743:23;:37;8699:82;;;;;;8796:47;;;;;;8854:52;;;;;;;;8947:12;;;;;;;8980:22;;;;;;:36;;;:38;;;;;;8153:246;;9056:34;;8420:18;;9056;:34::i;:::-;9031:59;;9101:17;9121:34;9140:11;9153:1;9121:18;:34::i;:::-;9189:5;;9101:54;;-1:-1:-1;;;;;;9171:23:0;;;9189:5;;9171:23;;:45;;-1:-1:-1;9211:5:0;;-1:-1:-1;;;;;9198:18:0;;;9211:5;;9198:18;9171:45;9168:691;;;9244:5;;9253:1;;9235:15;;-1:-1:-1;;;;;9244:5:0;9235:8;:15::i;:::-;:19;9232:161;;;9283:5;;9274:15;;-1:-1:-1;;;;;9283:5:0;9274:8;:15::i;:::-;;9232:161;;;9358:19;;9336:5;;-1:-1:-1;;;;;9336:5:0;9330;:12;;;;;;;;;;:25;;:47;9232:161;9415:5;;-1:-1:-1;;;;;9415:5:0;9409;:12;;;;;;;;;;:33;;:74;;2005:5;1944:3;9446:9;:23;:37;9409:74;;;;;;9498:8;:53;;9550:1;9510:41;;9498:53;;;;;;2289:4;9589:57;9498:53;9589:68;;;;9566:19;:91;;9589:68;;;;9566:91;;;;;9168:691;;;9690:8;:51;;2005:5;1944:3;9703:9;:23;:37;9690:51;;;;;;;2289:4;9779:57;9690:51;9779:68;;;;9756:19;:91;;9779:68;;;;9756:91;;;;;9168:691;-1:-1:-1;;;;;9871:18:0;;;:5;:18;;;;;;;;;;;9899:1;9871:30;;;:27;;;;:30;;;;;;:63;;-1:-1:-1;;;;;;9871:63:0;;;;;;;;;;;9945:48;;9871:18;;:63;;9945:16;:48::i;:::-;10006:43;10023:11;10036:9;10047:1;10006:16;:43::i;:::-;-1:-1:-1;;;;;10114:18:0;;;:5;:18;;;;;;;;;;;:21;10071:92;;;10137:22;;;;;;;:25;10071:92;;;;;;;;;10114:18;10071:92;;;;;;;;;;;7673:2498;;;;;;:::o;25693:158::-;25829:2;25820:12;25814:19;;25791:53::o;21735:155::-;-1:-1:-1;;;;;21842:18:0;;21818:4;21842:18;;;;;;;;;;;:40;;;;;;:33;;;;:40;;;;;;;;21735:155;;;;;:::o;1908:39::-;1944:3;1908:39;:::o;10189:185::-;10225:4;10242:15;10260:20;10269:10;10260:8;:20::i;:::-;10242:38;;10312:1;10299:10;:14;10291:44;;;;;-1:-1:-1;;;10291:44:0;;;;;;;;;;;;-1:-1:-1;;;10291:44:0;;;;;;;;;;;;;;;10346:20;10355:10;10346:8;:20::i;:::-;;10189:185;;:::o;2149:31::-;;;;:::o;1864:37::-;1899:2;1864:37;:::o;2063:43::-;;;;;;;;;;;;-1:-1:-1;;;;;2063:43:0;;:::o;2308:26::-;;;;:::o;23170:110::-;-1:-1:-1;;;;;23252:11:0;23227:4;23252:11;;;;;;;;;;:14;:19;;;23170:110::o;10877:261::-;-1:-1:-1;;;;;11010:14:0;10932:18;11010:14;;;;;;;;;;:27;;;;10988:19;;11056:35;;;;;2289:4;10988:49;;;;11056:55;;;11055:75;;10877:261::o;4090:127::-;4168:41;4181:10;4193:15;4168:12;:41::i;:::-;4090:127;:::o;2187:21::-;;;;:::o;22343:312::-;-1:-1:-1;;;;;22472:18:0;;;22420:7;22472:18;;;;;;;;;;;:34;;;;;;:27;;;;:34;;;;;:50;;22604:42;;;;22472:50;22541:44;;;22464:183;;;;;;;;;;;;;;;;;22420:7;;22429:16;;22420:7;;22472:50;;;;;22541:44;;22604:42;;;;;22464:183;;22541:44;;22464:183;;;22541:44;22464:183;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22464:183:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22343:312;;;;;:::o;2341:20::-;;;-1:-1:-1;;;;;2341:20:0;;:::o;22665:487::-;-1:-1:-1;;;;;22821:18:0;;;22742:7;22821:18;;;;;;;;;;;:34;;;;;;:27;;;;:34;;;;;:50;;23037:42;;;;23098:45;;;;22821:50;22890:54;;22813:331;;;;;;;;;;;;;;;;;22742:7;;22751:16;;;;22742:7;;;;22821:50;;;;22890:54;;22963:55;;;;;23037:42;;;;23098:45;;;;22813:331;22890:54;;22813:331;;;22890:54;22813:331;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22813:331:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22813:331:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22665:487;;;;;;;;:::o;2019:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2019:37:0;;;;;;;;;:::o;21898:155::-;-1:-1:-1;;;;;22005:18:0;;;;21981:4;22005:18;;;;;;;;;;;:40;;;;;;:33;;:40;;;;;;;;21898:155::o;4229:3428::-;4313:24;4326:10;4313:12;:24::i;:::-;4305:72;;;;-1:-1:-1;;;4305:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4396:6;:11;;4406:1;4396:11;:26;;;;4411:6;:11;;4421:1;4411:11;4396:26;4388:53;;;;;-1:-1:-1;;;4388:53:0;;;;;;;;;;;;-1:-1:-1;;;4388:53:0;;;;;;;;;;;;;;;4473:17;;;;;;;:10;:17;;;;;;4460:9;:30;4452:56;;;;;-1:-1:-1;;;4452:56:0;;;;;;;;;;;;-1:-1:-1;;;4452:56:0;;;;;;;;;;;;;;;4535:1;4527:5;:9;;;:32;;;;-1:-1:-1;1899:2:0;4540:19;;;;;4527:32;4519:58;;;;;-1:-1:-1;;;4519:58:0;;;;;;;;;;;;-1:-1:-1;;;4519:58:0;;;;;;;;;;;;;;;4616:1;4593:20;4602:10;4593:8;:20::i;:::-;:24;4590:160;;;4633:20;4642:10;4633:8;:20::i;:::-;;4590:160;;;4719:19;;4692:10;4686:5;:17;;;;;;;;;;:30;;:52;4590:160;4768:10;4762:5;:17;;;;;;;;;;:38;;:79;;2005:5;1944:3;4804:9;:23;:37;4762:79;;;;;;4854:6;:49;;;;;;4914:9;:52;;;;;;;4983:11;;;-1:-1:-1;4983:11:0;4979:2671;;;5026:10;5020:5;:17;;;;;;;;;;;:39;;;;;;:32;;;;:39;;;;;;;;5019:40;5011:76;;;;;-1:-1:-1;;;5011:76:0;;;;;;;;;;;;-1:-1:-1;;;5011:76:0;;;;;;;;;;;;;;;5114:10;5108:5;:17;;;;;;;;;;;:35;-1:-1:-1;;5135:7:0;;5108:35;;;;:26;;;;:35;;;;;;:43;;;;5104:135;;;5178:10;5218:5;5172:17;;;;;;;;;;;:35;-1:-1:-1;;5199:7:0;;5172:35;;;:26;;:35;;;;;:43;;:51;;-1:-1:-1;;5172:51:0;;;5104:135;5259:22;5284:37;5303:10;5315:5;5284:18;:37::i;:::-;5359:5;;5259:62;;-1:-1:-1;;;;;;5341:23:0;;;5359:5;;5341:23;5338:717;;;5396:5;;5405:1;;5387:15;;-1:-1:-1;;;;;5396:5:0;5387:8;:15::i;:::-;:19;5384:177;;;5439:5;;5430:15;;-1:-1:-1;;;;;5439:5:0;5430:8;:15::i;:::-;;5384:177;;;5522:19;;5500:5;;-1:-1:-1;;;;;5500:5:0;5494;:12;;;;;;;;;;:25;;:47;5384:177;5587:5;;-1:-1:-1;;;;;5587:5:0;5581;:12;;;;;;;;;;:33;;:74;;2005:5;1944:3;5618:9;:23;:37;5581:74;;;;;;5674:8;:53;;5726:1;5686:41;;5674:53;;;;;;2289:4;5769:57;5674:53;5769:68;;;;5746:19;:91;;5769:68;;;;5746:91;;;;;5338:717;;;5878:8;:51;;2005:5;1944:3;5891:9;:23;:37;5878:51;;;;;;;2289:4;5971:57;5878:51;5971:68;;;;5948:19;:91;;5971:68;;;;5948:91;;;;;5338:717;6077:10;6071:5;:17;;;;;;;;;;;:33;;;;;:26;;;:33;;;;;:66;;-1:-1:-1;;;;;;6071:66:0;-1:-1:-1;;;;;6071:66:0;;;;;6152:32;;:39;;;;;:46;;-1:-1:-1;;6152:46:0;-1:-1:-1;6152:46:0;;;6213:51;;6071:66;:33;6213:16;:51::i;:::-;6298:45;;;6334:1;6298:45;;;;;;;;;;;-1:-1:-1;;;;;6298:45:0;;;6306:10;;6298:45;;;;;;;;;;;4979:2671;;;;6393:10;6387:5;:17;;;;;;;;;;;:39;;;;;;:32;;;;:39;;;;;;;;6386:40;6378:76;;;;;-1:-1:-1;;;6378:76:0;;;;;;;;;;;;-1:-1:-1;;;6378:76:0;;;;;;;;;;;;;;;6482:10;6476:5;:17;;;;;;;;;;;:35;-1:-1:-1;;6503:7:0;;6476:35;;;;:26;;;;:35;;;;;;:43;;;;6472:135;;;6546:10;6586:5;6540:17;;;;;;;;;;;:35;-1:-1:-1;;6567:7:0;;6540:35;;;:26;;:35;;;;;:43;;:51;;-1:-1:-1;;6540:51:0;;;6472:135;6623:22;6648:37;6667:10;6679:5;6648:18;:37::i;:::-;6723:5;;6623:62;;-1:-1:-1;;;;;;6705:23:0;;;6723:5;;6705:23;6702:717;;;6760:5;;6769:1;;6751:15;;-1:-1:-1;;;;;6760:5:0;6751:8;:15::i;:::-;:19;6748:177;;;6803:5;;6794:15;;-1:-1:-1;;;;;6803:5:0;6794:8;:15::i;:::-;;6748:177;;;6886:19;;6864:5;;-1:-1:-1;;;;;6864:5:0;6858;:12;;;;;;;;;;:25;;:47;6748:177;6951:5;;-1:-1:-1;;;;;6951:5:0;6945;:12;;;;;;;;;;:33;;:74;;2005:5;1944:3;6982:9;:23;:37;6945:74;;;;;;7038:8;:53;;7090:1;7050:41;;7038:53;;;;;;2289:4;7133:57;7038:53;7133:68;;;;7110:19;:91;;7133:68;;;;7110:91;;;;;6702:717;;;7242:8;:51;;2005:5;1944:3;7255:9;:23;:37;7242:51;;;;;;;2289:4;7335:57;7242:51;7335:68;;;;7312:19;:91;;7335:68;;;;7312:91;;;;;6702:717;7453:10;7447:5;:17;;;;;;;;;;;:39;;;;;:32;;:39;;;;;:46;;-1:-1:-1;;7447:46:0;7489:4;7447:46;;;7508:51;;7537:14;7480:5;7508:16;:51::i;:::-;7593:45;;;7629:1;7593:45;;;;;;;;;;;-1:-1:-1;;;;;7593:45:0;;;7601:10;;7593:45;;;;;;;;;;;4979:2671;;4229:3428;;:::o;22061:274::-;-1:-1:-1;;;;;22213:18:0;;;;22137:21;22213:18;;;;;;;;;;;:42;;;;;;:35;;;:42;;;;;;22285:35;;;;:42;;;;;;22213;;22061:274::o;10710:159::-;10853:8;;-1:-1:-1;;;;;10809:14:0;;10772:16;10809:14;;;;;;;;;;:35;;;10772:16;;10853:8;10847:3;10809:41;10853:8;10809:52;;;;;;10710:159;-1:-1:-1;;10710:159:0:o;21370:349::-;21452:7;21472:240;-1:-1:-1;;;;;21510:18:0;;;21504:5;21510:18;;;;;;;;;;;:27;;;;;;21504:34;;;;;:56;;;;;;:49;;;;:56;;;;;;;;21500:131;;;-1:-1:-1;;;;;;21588:18:0;;;:5;:18;;;;;;;;;;:27;;;;21581:34;;21500:131;-1:-1:-1;;;;;21673:18:0;;;:5;:18;;;;;;;;;;:27;;;;;;;21472:240;;2374:40;;;;;;;;;;;;;:::o;21009:349::-;21091:7;21111:240;-1:-1:-1;;;;;21149:18:0;;;21143:5;21149:18;;;;;;;;;;;:27;;;;;;21143:34;;;;;:56;;;;;;:49;;;;:56;;;;;;;;21139:131;;;-1:-1:-1;;;;;;21227:18:0;;;:5;:18;;;;;;;;;;:27;;;;21220:34;;21139:131;-1:-1:-1;;;;;21312:18:0;;;:5;:18;;;;;;;;;;:27;;;;;;;21111:240;;2123:18;;;;:::o;10382:318::-;10432:4;10449:15;10467;10476:5;10467:8;:15::i;:::-;10493:6;:20;;;;;;;10552:19;;-1:-1:-1;;;;;10524:12:0;;10493:6;10524:12;;;;;;;;;;;:25;;;:47;;;;10582:24;;;;:38;;;;;;10648:40;;10449:33;;-1:-1:-1;10524:12:0;10648:40;;;;;10449:33;;10648:40;;10493:6;10648:40;10449:33;10524:12;10648:40;;;10382:318;-1:-1:-1;;;;;;;10382:318:0:o;11148:1607::-;-1:-1:-1;;;;;11252:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:48;;;;27:10:-1;;23:18;;;45:23;;11252:66:0;;;;;;;;;-1:-1:-1;;;;;;11252:66:0;;;;;;;;;;;11335:38;;;:55;11393:1;-1:-1:-1;11331:289:0;;;-1:-1:-1;;;;;11416:116:0;;;11475:5;:22;;;;;;;;;;;:38;;;;;;;:31;;;;:38;;;;;;11459:1;11475:48;;;:55;11416:116;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11416:116:0;;;;;;;;11554:54;11569:15;11586:11;11599:1;11602:5;11554:14;:54::i;:::-;11547:61;;11331:289;11645:55;;;11688:1;11645:55;;;;;;;;;11698:1;11645:55;;;;;;-1:-1:-1;;;;;11645:55:0;;;;;;;;-1:-1:-1;;;;;;;;;;;11645:55:0;;;;;;;;11762:16;;;11776:1;11762:16;;;;;;;;;;-1:-1:-1;;;;;11711:22:0;;;;;;;;;;:38;;;;;:31;;:38;;;;;;:67;;;;:48;;;;;11762:16;11711:67;:::i;:::-;-1:-1:-1;;;;;;11794:22:0;;:5;:22;;;;;;;;;;;:46;11838:1;11832:7;;11794:46;;;;:37;;;;:46;;;;;;;;11793:47;:70;;;;-1:-1:-1;11844:19:0;;;1899:2;11844:19;;11793:70;11789:156;;;-1:-1:-1;;;;;11880:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:46;;:53;;-1:-1:-1;;11880:53:0;11929:4;11880:53;;;11789:156;11980:5;;-1:-1:-1;;;;;11961:24:0;;;11980:5;;11961:24;11957:791;;12002:27;12032:42;12051:15;12068:5;12032:18;:42::i;:::-;-1:-1:-1;;;;;12093:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:54;12002:72;;-1:-1:-1;12093:77:0;;;:54;;:77;12089:194;;-1:-1:-1;;;;;12191:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:76;;-1:-1:-1;;;;;;12191:76:0;;;;;;;;;;12089:194;-1:-1:-1;;;;;12311:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;;:31;;;;:38;;;;;;:52;;:54;;;;;;;;;12385:69;;;;;;;;;;;;;;;;;;;;;12311:22;-1:-1:-1;;;;;;;;;;;12385:69:0;;;;;;;12469:61;12486:15;12503:19;12524:5;12469:16;:61::i;:::-;11957:791;;;;12578:5;;12563:44;;-1:-1:-1;;;;;12578:5:0;12585:11;12578:5;12601;12563:14;:44::i;:::-;12628:5;;;-1:-1:-1;;;;;12628:5:0;;;12622;:12;;;;;;;;;;;:28;;;;;;:21;;;;:28;;;;;:42;;:44;;12628:5;12622:44;;;;;;12695:5;;12686:50;;;;;;;;;;;;;;;12622:5;;12695;;;;;-1:-1:-1;;;;;;;;;;;12686:50:0;;;;;;;;;;11957:791;11148:1607;;;:::o;12765:4714::-;-1:-1:-1;;;;;12877:22:0;;:5;:22;;;;;;;;;;;:44;;;;;;:37;;;;:44;;;;;;;;12869:88;;;;;-1:-1:-1;;;12869:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12982:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;:65;13050:1;-1:-1:-1;12978:2277:0;;;-1:-1:-1;;;;;13069:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;;;:31;;;;:38;;;;;:58;;;;27:10:-1;;23:18;;;45:23;;13069:76:0;;;;;;;;;;;-1:-1:-1;;;;;;13069:76:0;;;;;;;;;13225:38;;;;:65;;13166:126;;13209:1;13166:126;;;;;;;;;;;;;;;;;;13069:22;;:76;-1:-1:-1;;;;;;;;;;;13166:126:0;;;;;;;;;-1:-1:-1;;;;;13321:18:0;;;:5;:18;;;;;;;;;;;:34;;;;;:27;;:34;;;;;:68;;-1:-1:-1;;;;;;13321:68:0;;;;;;;;;;13430:5;;;;;13411:24;13407:126;;;13463:54;13478:15;13495:11;13508:1;13511:5;13463:14;:54::i;13407:126::-;-1:-1:-1;;;;;13575:22:0;;;13561:11;13575:22;;;;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:54;;;13652:10;;;;;;;;;:26;;;:19;;;:26;;;;;:47;;;;27:10:-1;;13575:54:0;23:18:-1;;;45:23;;13652:65:0;;;;;;;;;;;-1:-1:-1;;;;;;13652:65:0;;;;;;;;;;;13759:26;;;;:46;:53;13575:54;;13847:8;;13846:102;;;;-1:-1:-1;;;;;;13879:10:0;;;:5;:10;;;;;;;;;;;:26;;;;;:19;;:26;;;;;:46;;:49;;:68;;;;:46;;:5;:49;;;;;;;;;;;;;;-1:-1:-1;;;;;13879:49:0;:68;13846:102;:193;;;;-1:-1:-1;;;;;;13970:10:0;;;:5;:10;;;;;;;;;;;:26;;;;;:19;;:26;;;;;:46;;;;:49;;:68;;;;:46;;;:49;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13970:49:0;:68;13846:193;13842:1314;;;-1:-1:-1;;;;;14064:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:65;:70;14060:264;;;14164:43;;;14195:1;14164:43;;;;;;;;;14205:1;14164:43;;;;;;-1:-1:-1;;;;;14164:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;14164:43:0;;;;;;;;14060:264;;;14261:43;;;14292:1;14261:43;;;;;;;;;14302:1;14261:43;;;;;;-1:-1:-1;;;;;14261:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;14261:43:0;;;;;;;;14060:264;13842:1314;;;14351:3;14358:1;14351:8;:20;;;;14363:3;14370:1;14363:8;14351:20;14350:115;;;;-1:-1:-1;;;;;;14397:10:0;;;:5;:10;;;;;;;;;;;:26;;;;;:19;;:26;;;;;:46;;:49;;:68;;;;:46;;:5;:49;;;;;;;;;;;;;;-1:-1:-1;;;;;14397:49:0;:68;14350:115;14346:810;;;-1:-1:-1;;;;;14490:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:65;:70;14486:264;;;14590:43;;;14621:1;14590:43;;;;;;;;;14631:1;14590:43;;;;;;-1:-1:-1;;;;;14590:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;14590:43:0;;;;;;;;14486:264;;;14687:43;;;14718:1;14687:43;;;;;;;;;14728:1;14687:43;;;;;;-1:-1:-1;;;;;14687:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;14687:43:0;;;;;;;;14346:810;;;14775:3;14782:1;14775:8;:80;;;;-1:-1:-1;;;;;;14787:10:0;;;:5;:10;;;;;;;;;;;:26;;;;;:19;;:26;;;;;:46;;;;:49;;:68;;;;:46;;;:49;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14787:49:0;:68;14775:80;14771:385;;;-1:-1:-1;;;;;14880:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:65;:70;14876:265;;;14980:43;;;15011:1;14980:43;;;;;;;;;15021:1;14980:43;;;;;;-1:-1:-1;;;;;14980:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;14980:43:0;;;;;;;;14876:265;;;15077:43;;;15108:1;15077:43;;;;;;;;;15118:1;15077:43;;;;;;-1:-1:-1;;;;;15077:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;15077:43:0;;;;;;;;14876:265;15191:52;15219:11;15232:3;15237:5;15191:27;:52::i;:::-;15184:59;;;;12978:2277;-1:-1:-1;;;;;15275:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:59;;;27:10:-1;;39:1;23:18;;45:23;;15275:77:0;;;;;;;;;;;-1:-1:-1;;;;;;15275:77:0;;;;;;;15369:38;;;:49;;;;:63;15365:1082;;-1:-1:-1;;;;;15537:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:61;;:58;;;:61;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15454:22:0;;;;;;;;;;;;:38;;;;;:31;;:38;;;;;;15537:61;15454:58;:61;;15537;;;;;15454:58;;:61;;;;;;;;;;;;;;-1:-1:-1;;;;;15454:61:0;:144;15453:300;;;;-1:-1:-1;;;;;;15703:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:49;;;;;15621:58;;;:61;;15703:49;;;;;15621:58;15703:5;15621:61;;;;;;;;;;;;;;-1:-1:-1;;;;;15621:61:0;:131;15453:300;15449:987;;;15776:51;15785:11;15798:15;15815:5;15822:4;15776:8;:51::i;:::-;15853:64;15881:11;15894:15;15911:5;15853:27;:64::i;15449:987::-;-1:-1:-1;;;;;16026:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:49;;;;;15943:58;;;:61;;16026:49;;;;;15943:58;16026:5;15943:61;;;;;;;;;;;;;;-1:-1:-1;;;;;15943:61:0;:132;15939:497;;;16096:51;16105:11;16118:15;16135:5;16142:4;16096:8;:51::i;15939:497::-;16278:52;16287:11;16300:15;16317:5;16324;16278:8;:52::i;15939:497::-;-1:-1:-1;;;;;16463:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:61;;:76;;;;:58;;;:61;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16463:61:0;:76;16459:499;;;16556:52;16565:11;16578:15;16595:5;16602;16556:8;:52::i;16459:499::-;-1:-1:-1;;;;;16716:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;:61;;:76;;;;:58;;:5;:61;;;;;;;;;;;;;;-1:-1:-1;;;;;16716:61:0;:76;16712:246;;;16809:51;16818:11;16831:15;16848:5;16855:4;16809:8;:51::i;16712:246::-;-1:-1:-1;;;;;17117:22:0;;17111:5;17117:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:61;;17111:5;;17117:58;:61;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17117:61:0;;;17111:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;17117:61;17111:104;;;:111;16988:22;;;;;;;;;;;:38;;;:31;;:38;;;;;;:58;;;:61;;17117;;16988:58;17117:61;;16988;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16988:61:0;16982:68;;;;;;;;;;;;;;;:84;;;;;:77;;:84;;;;;16988:61;16982:104;:111;:240;16978:409;;17239:52;17248:11;17261:15;17278:5;17285;17239:8;:52::i;:::-;16978:409;;;17324:51;17333:11;17346:15;17363:5;17370:4;17324:8;:51::i;:::-;17407:64;17435:11;17448:15;17465:5;17407:27;:64::i;24369:1304::-;24478:16;24496:21;24521:50;24537:11;24550:5;24557:6;24565:5;24521:15;:50::i;:::-;24656:31;:17;;;;;;:10;:17;;;;;;;24589:128;;24477:94;;-1:-1:-1;24477:94:0;;-1:-1:-1;;;;;;24589:31:0;;;2005:5;1944:3;24656:31;;:45;24635:67;;;24589:128;;;;;24635:67;;24589:128;24656:17;24589:128;24635:67;24589:31;:128;;;;;;;24584:955;;24755:6;:11;;24765:1;24755:11;24752:290;;;24849:31;:17;;;;;;:10;:17;;;;;;;;;-1:-1:-1;;;;;24785:15:0;;;;;;;;;;:39;;;:32;;;;:39;;;;;:110;;2005:5;1944:3;24849:31;;:45;24828:67;;;24785:110;;;;;24752:290;;;24996:31;:17;;;;;;:10;:17;;;;;;;;;-1:-1:-1;;;;;24932:15:0;;;;;;;;;;:39;;;:32;;;;:39;;;;:110;;2005:5;1944:3;24996:31;;:45;24975:67;;;24932:110;;;;;24752:290;25139:31;:17;;;;;;:10;:17;;;;;;;25064:140;;-1:-1:-1;;;;;25064:35:0;;;2005:5;1944:3;25139:31;;:45;25118:67;;;25064:140;;;;;25118:67;;25064:140;;25139:17;25064:140;25118:67;25064:35;:140;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25064:140:0;25057:147;;;;24584:955;25240:6;:11;;25250:1;25240:11;25237:290;;;25334:31;:17;;;;;;:10;:17;;;;;;;;;-1:-1:-1;;;;;25270:15:0;;;;;;;;;;:39;;;:32;;;;:39;;;;;:110;;2005:5;1944:3;25334:31;;:45;25313:67;;;25270:110;;;;;25237:290;;;25481:31;:17;;;;;;:10;:17;;;;;;;;;-1:-1:-1;;;;;25417:15:0;;;;;;;;;;:39;;;:32;;;;:39;;;;:110;;2005:5;1944:3;25481:31;;:45;25460:67;;;25417:110;;;;;25237:290;25563:16;25559:107;;;25601:53;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25601:53:0;;;;;;;;;;;;;;;;;;;25559:107;24369:1304;;;;;;;:::o;19078:1919::-;-1:-1:-1;;;;;19197:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:59;;:66;19266:1;-1:-1:-1;19193:178:0;;;19305:54;19320:15;19337:11;19350:1;19353:5;19305:14;:54::i;19193:178::-;-1:-1:-1;;;;;19419:22:0;;;19413:5;19419:22;;;;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:54;;;;19413:61;;;;;;;;:77;;;:70;;;;:77;;;;;;19419:54;19413:97;19391:119;;;;;;;;;;;;;;;;;:19;;:119;;;19413:97;19391:119;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19391:119:0;;;;;;;;;;;;;;;;;;;;;;;19535:2;:9;19548:1;19535:14;19531:501;;;19579:15;-1:-1:-1;;;;;19570:24:0;:2;19573:1;19570:5;;;;;;;;;;;;;;-1:-1:-1;;;;;19570:24:0;;:69;;;;19624:15;-1:-1:-1;;;;;19615:24:0;:2;19618:1;19615:5;;;;;;;;;;;;;;-1:-1:-1;;;;;19615:24:0;;19570:69;19566:455;;;-1:-1:-1;;;;;19666:22:0;;;19660:5;19666:22;;;;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:54;;;;19660:61;;;;;;;;:77;;;:70;;;;:77;;;;;;:88;;:106;;-1:-1:-1;;;;;;19660:106:0;;;;;;19566:455;;;19792:2;:9;19805:1;19792:14;19788:233;;;19840:15;-1:-1:-1;;;;;19831:24:0;:2;19834:1;19831:5;;;;;;;;;;;;;;-1:-1:-1;;;;;19831:24:0;;19827:179;;;-1:-1:-1;;;;;19886:22:0;;;19880:5;19886:22;;;;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:54;;;;19880:61;;;;;;;;:77;;;:70;;;;:77;;;;;;:88;;:106;;-1:-1:-1;;;;;;19880:106:0;;;;;;19827:179;20113:16;;;20127:1;20113:16;;;;;;;;;;-1:-1:-1;;;;;20052:22:0;;;;;;;;;;:38;;;;;:31;;:38;;;;;;:77;;;;:58;;;;;20113:16;20052:77;:::i;:::-;-1:-1:-1;20202:16:0;;;20216:1;20202:16;;;;;;;;;;-1:-1:-1;;;;;20140:22:0;;;;;;;;;;:38;;;;;:31;;:38;;;;;;:78;;;;:59;;;;;20202:16;20140:78;:::i;:::-;-1:-1:-1;;;;;;20229:22:0;;20289:1;20229:22;;;;;;;;;;;:38;;;;;;:31;;;:38;;;;;:49;;:62;;-1:-1:-1;;;;;;20229:62:0;;;;20347:7;;20309:46;;;;:37;;;;:46;;;;;;;;20308:47;:70;;;;-1:-1:-1;20359:19:0;;;1899:2;20359:19;;20308:70;20304:156;;;-1:-1:-1;;;;;20395:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:46;;:53;;-1:-1:-1;;20395:53:0;20444:4;20395:53;;;20304:156;-1:-1:-1;;;;;20472:22:0;;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:52;;:54;;;;;;20570:5;;;;;20551:24;20547:443;;20592:27;20622:42;20641:15;20658:5;20622:18;:42::i;:::-;20686:69;;;20746:1;20686:69;;;;;;;;;;;20592:72;;-1:-1:-1;;;;;;20686:69:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;20686:69:0;;;;;;;;20770:61;20787:15;20804:19;20825:5;20770:16;:61::i;:::-;20547:443;;;;20878:5;;20869:50;;;20910:1;20869:50;;;;;;;;;;;-1:-1:-1;;;;;20869:50:0;;;;20893:1;;20878:5;;;-1:-1:-1;;;;;;;;;;;20869:50:0;;;;;;;;;;20949:5;;20934:44;;-1:-1:-1;;;;;20949:5:0;20956:11;20969:1;20972:5;20934:14;:44::i;17487:1579::-;17597:2;17592:1467;;-1:-1:-1;;;;;17622:22:0;;17616:5;17622:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;:61;;17616:5;;17622:58;17616:5;;17622:61;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17622:61:0;;;17616:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;17622:61;17616:104;;;27:10:-1;;23:18;;;45:23;;17616:122:0;;;;;;;;;-1:-1:-1;;;;;;17616:122:0;;;;;;;17784:22;;;;;;;;;;;:38;;;:31;:38;;;;;:58;;;:61;;:58;;17622:61;17784;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17869:22:0;;;;;;;;;;;;:38;;;;;:31;;:38;;;;;;17784:61;17869:58;:61;;17784;;;;17758:218;;;;-1:-1:-1;;;;;;;;;;;17758:218:0;17847:1;;17850:5;;17784:61;;;17869:58;17784:61;;17869;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17869:61:0;17863:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;;17869:61;17863:104;:111;17758:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17996:176:0;;;18059:5;18065:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;:61;;17996:176;;;;;-1:-1:-1;;;;;;;;;;;17996:176:0;18039:1;;18042:5;;18059;;18065:58;18059:5;;18065:61;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18065:61:0;18059:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;;18065:61;18059:104;:111;17996:176;;;;;;;;;;;;;;;;;18049:1;:122;;;17996:176;;;;;;;;;;;;;;-1:-1:-1;;;;;18254:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;:61;;:58;;:5;:61;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18201:18:0;;;;;;;;;;;;:34;;;;;:27;;:34;;;;;;;:114;;-1:-1:-1;;;;;;18201:114:0;18254:61;;;;18201:114;;;17592:1467;;;-1:-1:-1;;;;;18354:22:0;;18348:5;18354:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:61;;18348:5;;18354:58;:61;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18354:61:0;;;18348:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;18354:61;18348:104;;;27:10:-1;;23:18;;;45:23;;18348:122:0;;;;;;;;;-1:-1:-1;;;;;;18348:122:0;;;;;;;18516:22;;;;;;;;;;;:38;;;:31;:38;;;:58;;:61;;:58;;18354:61;18516;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18601:22:0;;;;;;;;;;;;:38;;;;;:31;;:38;;;;;;18516:61;18601:58;;;:61;;18516;;;;18490:218;;;;-1:-1:-1;;;;;;;;;;;18490:218:0;18579:1;;18582:5;;18516:61;;18601:58;;18516:61;18601;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18601:61:0;18595:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;;18601:61;18595:104;:111;18490:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18728:176:0;;;18791:5;18797:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:61;;18728:176;;;;;-1:-1:-1;;;;;;;;;;;18728:176:0;18771:1;;18774:5;;18791;;;;18797:58;;:61;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18797:61:0;18791:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;;18797:61;18791:104;:111;18728:176;;;;;;;;;;;;;;;;;18781:1;:122;;;18728:176;;;;;;;;;;;;;;-1:-1:-1;;;;;18986:22:0;;:5;:22;;;;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;;;:61;;:58;;;:61;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18933:18:0;;;;;;;;;;;;:34;;;;;:27;;:34;;;;;;;:114;;-1:-1:-1;;;;;;18933:114:0;18986:61;;;;18933:114;;;17487:1579;;;;:::o;23288:1073::-;23392:7;;23437:11;23392:7;23505:1;23495:11;;;;23491:863;;;23523:394;-1:-1:-1;;;;;23559:15:0;;:5;:15;;;;;;;;;;;:31;;;;;;:24;;;;:31;;;;;;:39;;;;23555:347;;;23628:43;;;23662:1;23628:43;;;;;;;;;;;-1:-1:-1;;;;;23628:43:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23751:15:0;;;:5;:15;;;;;;;;;;;:31;;;;;:24;;:31;;;;;:47;;23713:4;23555:347;;;23855:8;;-1:-1:-1;23865:16:0;-1:-1:-1;23847:35:0;;23555:347;23523:394;;23491:863;-1:-1:-1;;;;;23985:15:0;;:5;:15;;;;;;;;;;;:31;;;;;;:24;;;;:31;;;;;;:39;;;;23981:347;;;24054:43;;;24088:1;24054:43;;;;;;;;;;;-1:-1:-1;;;;;24054:43:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24177:15:0;;;:5;:15;;;;;;;;;;;:31;;;;;:24;;:31;;;;;:47;;24139:4;23949:394;;23288:1073;;;;;;;;:::o;956:24898::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;956:24898:0;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;956:24898:0;-1:-1:-1;;;;;956:24898:0;;;;;;;;;;;-1:-1:-1;956:24898:0;;;;;;;-1:-1:-1;956:24898:0;;;-1:-1:-1;956:24898:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;956:24898:0;;;;;;;;;:::o

Swarm Source

bzzr://4223ac51899ed5dd4d67742e19ae1818efaa4da6bf920d56c6e0950a52ac9672

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.