MATIC Price: $0.353018 (-21.73%)
 

Overview

MATIC Balance

Polygon PoS Chain LogoPolygon PoS Chain LogoPolygon PoS Chain Logo41,111.208985069717920025 MATIC

MATIC Value

$14,512.98 (@ $0.35/MATIC)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Buy New Level602212532024-08-05 11:44:102 mins ago1722858250IN
0xE29a420a...D5D74bA46
2 MATIC0.01183442179.07618072
Buy New Level602212432024-08-05 11:43:362 mins ago1722858216IN
0xE29a420a...D5D74bA46
2 MATIC0.04594378179.07618072
Registration Ext602212122024-08-05 11:42:303 mins ago1722858150IN
0xE29a420a...D5D74bA46
2 MATIC0.08196646182.9232908
Buy New Level602211822024-08-05 11:41:264 mins ago1722858086IN
0xE29a420a...D5D74bA46
8 MATIC0.05936588199.42986781
Buy New Level602211692024-08-05 11:41:005 mins ago1722858060IN
0xE29a420a...D5D74bA46
8 MATIC0.04862784199.15813979
Buy New Level602211132024-08-05 11:39:007 mins ago1722857940IN
0xE29a420a...D5D74bA46
4 MATIC0.03180203130.70692218
Buy New Level602211012024-08-05 11:38:347 mins ago1722857914IN
0xE29a420a...D5D74bA46
4 MATIC0.03167189132.26383282
Buy New Level602210822024-08-05 11:37:548 mins ago1722857874IN
0xE29a420a...D5D74bA46
2 MATIC0.03238255131.43979322
Claim Divs602210692024-08-05 11:37:268 mins ago1722857846IN
0xE29a420a...D5D74bA46
0 MATIC0.00726383150.06066328
Buy New Level602210632024-08-05 11:37:149 mins ago1722857834IN
0xE29a420a...D5D74bA46
2 MATIC0.03049109137.12490885
Registration Ext602210282024-08-05 11:36:0010 mins ago1722857760IN
0xE29a420a...D5D74bA46
2 MATIC0.07795756172.36304369
Claim Divs602209792024-08-05 11:34:1612 mins ago1722857656IN
0xE29a420a...D5D74bA46
0 MATIC0.009885204.21025363
Buy New Level602209102024-08-05 11:31:4814 mins ago1722857508IN
0xE29a420a...D5D74bA46
4 MATIC0.12677776406.70530113
Claim Divs602208912024-08-05 11:31:0815 mins ago1722857468IN
0xE29a420a...D5D74bA46
0 MATIC0.01571747324.70094698
Claim Divs602207392024-08-05 11:25:1421 mins ago1722857114IN
0xE29a420a...D5D74bA46
0 MATIC0.00713966147.49555735
Registration Ext602207082024-08-05 11:24:0822 mins ago1722857048IN
0xE29a420a...D5D74bA46
2 MATIC0.0872736180.95407431
Buy New Level602205402024-08-05 11:18:1028 mins ago1722856690IN
0xE29a420a...D5D74bA46
32 MATIC0.06104105142.03918508
Claim Divs602205232024-08-05 11:17:3428 mins ago1722856654IN
0xE29a420a...D5D74bA46
0 MATIC0.00705601145.76746064
Claim Divs602205092024-08-05 11:17:0429 mins ago1722856624IN
0xE29a420a...D5D74bA46
0 MATIC0.00722095149.17470338
Buy New Level602205092024-08-05 11:17:0429 mins ago1722856624IN
0xE29a420a...D5D74bA46
16 MATIC0.06934112289.57287839
Registration Ext602205082024-08-05 11:17:0229 mins ago1722856622IN
0xE29a420a...D5D74bA46
2 MATIC0.06974081135.25123723
Claim Divs602203832024-08-05 11:12:0434 mins ago1722856324IN
0xE29a420a...D5D74bA46
0 MATIC0.0080427166.15092256
Claim Divs602203782024-08-05 11:11:5434 mins ago1722856314IN
0xE29a420a...D5D74bA46
0 MATIC0.00730487150.90847846
Buy New Level602202972024-08-05 11:09:0237 mins ago1722856142IN
0xE29a420a...D5D74bA46
32 MATIC0.03684839149.54582857
Buy New Level602202612024-08-05 11:07:4638 mins ago1722856066IN
0xE29a420a...D5D74bA46
4 MATIC0.05350777145.56572521
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
602212532024-08-05 11:44:102 mins ago1722858250
0xE29a420a...D5D74bA46
0.00000097 MATIC
602212432024-08-05 11:43:362 mins ago1722858216
0xE29a420a...D5D74bA46
1.6 MATIC
602212432024-08-05 11:43:362 mins ago1722858216
0xE29a420a...D5D74bA46
0.00000048 MATIC
602212122024-08-05 11:42:303 mins ago1722858150
0xE29a420a...D5D74bA46
0.8 MATIC
602212122024-08-05 11:42:303 mins ago1722858150
0xE29a420a...D5D74bA46
0.8 MATIC
602211822024-08-05 11:41:264 mins ago1722858086
0xE29a420a...D5D74bA46
6.4 MATIC
602211822024-08-05 11:41:264 mins ago1722858086
0xE29a420a...D5D74bA46
0.00002147 MATIC
602211692024-08-05 11:41:005 mins ago1722858060
0xE29a420a...D5D74bA46
6.4 MATIC
602211692024-08-05 11:41:005 mins ago1722858060
0xE29a420a...D5D74bA46
0.00000683 MATIC
602211132024-08-05 11:39:007 mins ago1722857940
0xE29a420a...D5D74bA46
3.2 MATIC
602211132024-08-05 11:39:007 mins ago1722857940
0xE29a420a...D5D74bA46
0.00000487 MATIC
602211012024-08-05 11:38:347 mins ago1722857914
0xE29a420a...D5D74bA46
3.2 MATIC
602211012024-08-05 11:38:347 mins ago1722857914
0xE29a420a...D5D74bA46
0.00000146 MATIC
602210822024-08-05 11:37:548 mins ago1722857874
0xE29a420a...D5D74bA46
1.6 MATIC
602210822024-08-05 11:37:548 mins ago1722857874
0xE29a420a...D5D74bA46
0.00000097 MATIC
602210692024-08-05 11:37:268 mins ago1722857846
0xE29a420a...D5D74bA46
0.00777812 MATIC
602210632024-08-05 11:37:149 mins ago1722857834
0xE29a420a...D5D74bA46
1.6 MATIC
602210632024-08-05 11:37:149 mins ago1722857834
0xE29a420a...D5D74bA46
0.00000048 MATIC
602210282024-08-05 11:36:0010 mins ago1722857760
0xE29a420a...D5D74bA46
0.8 MATIC
602210282024-08-05 11:36:0010 mins ago1722857760
0xE29a420a...D5D74bA46
0.8 MATIC
602209792024-08-05 11:34:1612 mins ago1722857656
0xE29a420a...D5D74bA46
0.04447882 MATIC
602209102024-08-05 11:31:4814 mins ago1722857508
0xE29a420a...D5D74bA46
3.2 MATIC
602209102024-08-05 11:31:4814 mins ago1722857508
0xE29a420a...D5D74bA46
0.00028793 MATIC
602208912024-08-05 11:31:0815 mins ago1722857468
0xE29a420a...D5D74bA46
0.02016692 MATIC
602207392024-08-05 11:25:1421 mins ago1722857114
0xE29a420a...D5D74bA46
0.00518583 MATIC
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MaticFortune

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2023-03-18
*/

pragma solidity >=0.4.23 <0.6.0;

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
}

contract MaticFortune {
    
    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; // == 20.00%
    uint16 internal constant DIV_DIVISOR = 1000;

    IERC20 public myToken = IERC20(0x19971b392740A28a1Ca3bab43C42cD7E96cCD3Fe);

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

    bool public gameOpen = true;
    

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

    uint public lastUserId = 2;
    address public owner;
    address internal admin;
    
    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 {
        admin = msg.sender;
        levelPrice[1] = 1000000000000000000; 
        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 updateGameOpen(bool _gameOpen) public {
        require(msg.sender == admin, "Only Admin");
        gameOpen = _gameOpen;
    }
    
    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 {
        require(gameOpen == true, "Game not yet open!");
        registration(msg.sender, referrerAddress);
    }
    
    function buyNewLevel(uint8 matrix, uint8 level) external payable {
        require(gameOpen == true, "Game not yet open!");
        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);

            // Short-circuits to save Energy
            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);

            // Short-circuits to save Energy
            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 == 2000000000000000000, "registration cost 2 MATIC");
        
        
        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);

        // Short-circuits to save Energy
        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 sendPartnerTRX(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;
        }

        // Short-circuits to save Energy
        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 {
            sendPartnerTRX(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; 

            // Short-circuits to save Energy
            if (referrerAddress == owner) {
                return sendPartnerTRX(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 sendPartnerTRX(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++;
        
        // Short-circuits to save Energy
        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);
            sendPartnerTRX(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 usersActiveLevelsAll(address userAddress) public view returns(bool[13] memory x3LevelsActive, bool[13] memory x6LevelsActive) {
        for(uint8 c=1; c< 13; c++){
            x3LevelsActive[c] = users[userAddress].activeX3Levels[c];
            x6LevelsActive[c] = users[userAddress].activeX6Levels[c];
        }
    }
    
    function usersHighestLevels(address userAddress) public view returns(uint8 x3HighestLevel, uint8 x6HighestLevel) {
        for(uint8 c=1; c< 13; c++){
            if(users[userAddress].activeX3Levels[c])
                x3HighestLevel = c;
                
            if(users[userAddress].activeX6Levels[c])
                x6HighestLevel = c;
        }     
    }

    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 userEarningsAll(address userAddress) public view returns(uint[13] memory x3MatrixEarnings, uint[13] memory x6MatrixEarnings){
    
        for(uint8 c=1; c< 13; c++){
            x3MatrixEarnings[c] = users[userAddress].x3MatrixEarnings[c];
            x6MatrixEarnings[c] = users[userAddress].x6MatrixEarnings[c];
        }
    }

    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 findTRXReceiver(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 SetMyToken(address _token) public {
        require(msg.sender == admin, "Only Admin");
        myToken = IERC20(_token);
    }

    // Sends TRX earnings direct to parent (P2P)
    function sendPartnerTRX(address userAddress, address _from, uint8 matrix, uint8 level) private {

        (address receiver, bool isExtraDividends) = findTRXReceiver(userAddress, _from, matrix, level);
        uint deductedPrice = levelPrice[level] - (levelPrice[level] * DIV_PERCENT / DIV_DIVISOR);
        
        address(uint160(receiver)).transfer(deductedPrice);
        myToken.transfer(receiver, deductedPrice * 1);  // send 1 token for every 1 MATIC

        if(matrix == 1)
            users[receiver].x3MatrixEarnings[level] += deductedPrice;
        else
            users[receiver].x6MatrixEarnings[level] += deductedPrice;

        
        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":"address","name":"_token","type":"address"}],"name":"SetMyToken","outputs":[],"payable":false,"stateMutability":"nonpayable","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":[],"name":"gameOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"myToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"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":false,"inputs":[{"internalType":"bool","name":"_gameOpen","type":"bool"}],"name":"updateGameOpen","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"userAddress","type":"address"}],"name":"userEarningsAll","outputs":[{"internalType":"uint256[13]","name":"x3MatrixEarnings","type":"uint256[13]"},{"internalType":"uint256[13]","name":"x6MatrixEarnings","type":"uint256[13]"}],"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"}],"name":"usersActiveLevelsAll","outputs":[{"internalType":"bool[13]","name":"x3LevelsActive","type":"bool[13]"},{"internalType":"bool[13]","name":"x6LevelsActive","type":"bool[13]"}],"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"}],"name":"usersHighestLevels","outputs":[{"internalType":"uint8","name":"x3HighestLevel","type":"uint8"},{"internalType":"uint8","name":"x6HighestLevel","type":"uint8"}],"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"}]

6080604052600080546001600160a01b0319167319971b392740a28a1ca3bab43c42cd7e96ccd3fe1790556003805460ff1916600117905560026008553480156200004957600080fd5b5060405162003b4e38038062003b4e833981810160405260208110156200006f57600080fd5b5051600a80546001600160a01b031916331790556001600052600b602052670de0b6b3a76400007f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5cf5560025b600c60ff821611620000f75760ff600019820181166000908152600b6020526040808220549284168252902060029091029055600101620000bb565b50600980546001600160a01b0319166001600160a01b0383161790556200011d62000244565b506040805160c081018252600180825260006020808401828152848601838152606086018481526080870185815260a088018681526001600160a01b038b81168089528988529a88208a5181559551868a018054919092166001600160a01b0319918216179091559351600280870191909155925160098601559051600a85015551600b909301929092559284905290527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e08054909116909317909255905b600c60ff8216116200023b576001600160a01b038316600090815260016020818152604080842060ff86168552600381018352818520805460ff19908116861790915560049091019092529092208054909216811790915501620001dc565b50505062000283565b6040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081525090565b6138bb80620002936000396000f3fe6080604052600436106101c25760003560e01c80637bffe9d8116100f7578063be389d5711610095578063e06e8dbd11610064578063e06e8dbd14610872578063ecabdf79146108ae578063fa45323d146108db578063fe10c41914610917576101c2565b8063be389d571461078f578063c8d6b7f7146107b7578063cd96f222146107ea578063db58c6261461083f576101c2565b80639cc102fc116100d15780639cc102fc146105d7578063a87430ba146106d0578063b2f7543a1461073e578063b8fcf9371461077a576101c2565b80637bffe9d81461050457806383ba31b2146105195780638da5cb5b146105c2576101c2565b80632ae34dc611610164578063509222cd1161013e578063509222cd146103e0578063570354c5146104135780636894937214610446578063797eee24146104de576101c2565b80632ae34dc61461038a578063348d4487146103b65780633cca779b146103cb576101c2565b80632113342d116101a05780632113342d146102b557806327d205ab146102dc57806329c704001461032f5780632a2d0c4714610344576101c2565b80630388b4a31461022e5780630e3d0d351461026157806319aa70e71461028c575b366101e3576009546101de9033906001600160a01b031661092c565b61022c565b61022c336102276000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d8492505050565b61092c565b005b34801561023a57600080fd5b5061022c6004803603602081101561025157600080fd5b50356001600160a01b0316610d8b565b34801561026d57600080fd5b50610276610df9565b6040805160ff9092168252519081900360200190f35b34801561029857600080fd5b506102a1610dfe565b604080519115158252519081900360200190f35b3480156102c157600080fd5b506102ca610e63565b60408051918252519081900360200190f35b3480156102e857600080fd5b5061030f600480360360208110156102ff57600080fd5b50356001600160a01b0316610e69565b6040805160ff938416815291909216602082015281519081900390910190f35b34801561033b57600080fd5b50610276610ef9565b34801561035057600080fd5b5061036e6004803603602081101561036757600080fd5b5035610efe565b604080516001600160a01b039092168252519081900360200190f35b34801561039657600080fd5b5061022c600480360360208110156103ad57600080fd5b50351515610f19565b3480156103c257600080fd5b506102ca610f78565b3480156103d757600080fd5b506102a1610f7e565b3480156103ec57600080fd5b506102a16004803603602081101561040357600080fd5b50356001600160a01b0316610f87565b34801561041f57600080fd5b506102ca6004803603602081101561043657600080fd5b50356001600160a01b0316610fa4565b34801561045257600080fd5b506104796004803603602081101561046957600080fd5b50356001600160a01b0316610fdd565b60405180836101a080838360005b8381101561049f578181015183820152602001610487565b5050505090500182600d60200280838360005b838110156104ca5781810151838201526020016104b2565b505050509050019250505060405180910390f35b61022c600480360360208110156104f457600080fd5b50356001600160a01b0316611092565b34801561051057600080fd5b506102ca6110f0565b34801561052557600080fd5b506105556004803603604081101561053c57600080fd5b5080356001600160a01b0316906020013560ff166110f6565b604080516001600160a01b0385168152821515918101919091526060602080830182815285519284019290925284516080840191868101910280838360005b838110156105ac578181015183820152602001610594565b5050505090500194505050505060405180910390f35b3480156105ce57600080fd5b5061036e6111a0565b3480156105e357600080fd5b50610613600480360360408110156105fa57600080fd5b5080356001600160a01b0316906020013560ff166111af565b604080516001600160a01b03808816825284151560608301528316608082015260a060208083018281528851928401929092528751929391929184019160c0850191898101910280838360005b83811015610678578181015183820152602001610660565b50505050905001838103825286818151815260200191508051906020019060200280838360005b838110156106b757818101518382015260200161069f565b5050505090500197505050505050505060405180910390f35b3480156106dc57600080fd5b50610703600480360360208110156106f357600080fd5b50356001600160a01b03166112cc565b604080519687526001600160a01b039095166020870152858501939093526060850191909152608084015260a0830152519081900360c00190f35b34801561074a57600080fd5b506102a16004803603604081101561076157600080fd5b5080356001600160a01b0316906020013560ff1661130c565b34801561078657600080fd5b5061036e611342565b61022c600480360360408110156107a557600080fd5b5060ff81358116916020013516611351565b3480156107c357600080fd5b50610479600480360360208110156107da57600080fd5b50356001600160a01b0316611a5a565b3480156107f657600080fd5b506108266004803603604081101561080d57600080fd5b5080356001600160a01b0316906020013560ff16611b05565b6040805192835260208301919091528051918290030190f35b34801561084b57600080fd5b506102ca6004803603602081101561086257600080fd5b50356001600160a01b0316611b42565b34801561087e57600080fd5b5061036e6004803603604081101561089557600080fd5b5080356001600160a01b0316906020013560ff16611b75565b3480156108ba57600080fd5b506102ca600480360360208110156108d157600080fd5b503560ff16611c04565b3480156108e757600080fd5b5061036e600480360360408110156108fe57600080fd5b5080356001600160a01b0316906020013560ff16611c16565b34801561092357600080fd5b506102ca611ca5565b34671bc16d674ec8000014610988576040805162461bcd60e51b815260206004820152601960248201527f726567697374726174696f6e20636f73742032204d4154494300000000000000604482015290519081900360640190fd5b61099182610f87565b156109d1576040805162461bcd60e51b815260206004820152600b60248201526a757365722065786973747360a81b604482015290519081900360640190fd5b6109da81610f87565b610a21576040805162461bcd60e51b81526020600482015260136024820152727265666572726572206e6f742065786973747360681b604482015290519081900360640190fd5b813b63ffffffff811615610a73576040805162461bcd60e51b815260206004820152601460248201527318d85b9b9bdd08189948184818dbdb9d1c9858dd60621b604482015290519081900360640190fd5b610a7b613739565b506040805160c0810182526008805482526001600160a01b0385811660208085018281526000868801818152600554606089019081526080890183815260a08a018481528e891680865260018089528d87208d5181559751888201805491909c166001600160a01b0319918216178c5595516002808a0191909155945160098901559251600a88019081559151600b8801558a5486528388528c862080548616909117905588549093168717909755868352600384018552898320805460ff199081168917909155600494850186528a84208054909116881790559386905280546103e83460c802049081019091558254810190925560068054909201909155845484019094559083529382209093018054840190559091610b9e908690611c16565b90506000610bad866001611b75565b6009549091506001600160a01b0383811691161480610bd957506009546001600160a01b038281169116145b15610c9657600954600090610bf6906001600160a01b0316610fa4565b1115610c1757600954610c11906001600160a01b0316611cab565b50610c38565b600554600980546001600160a01b0316600090815260016020526040902001555b6009546001600160a01b03166000908152600160205260409020600a0180546103e860c83402049081019091556007805460028302019081905590670de0b6b3a76400000281610c8457fe5b60058054929091049091019055610cc8565b600780546103e860c834020490810191829055670de0b6b3a76400000281610cba57fe5b600580549290910490910190555b6001600160a01b03868116600090815260016020818152604080842083855260050190915290912080546001600160a01b03191692851692909217909155610d139087908490611d11565b610d1f86826001612080565b6001600160a01b03808716600081815260016020908152604080832054948a168084529281902054815190815290519293927f309bb360e8b69c23937ccc5fb01f9aeeead1c95a99604e175113ff82f2b1723a929181900390910190a4505050505050565b6014015190565b600a546001600160a01b03163314610dd7576040805162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60c881565b600080610e0a33610fa4565b905060008111610e55576040805162461bcd60e51b81526020600482015260116024820152704e6f206469767320617661696c61626c6560781b604482015290519081900360640190fd5b610e5e33611cab565b505090565b60055481565b60008060015b600d8160ff161015610ef3576001600160a01b038416600090815260016020908152604080832060ff80861685526003909101909252909120541615610eb3578092505b6001600160a01b038416600090815260016020908152604080832060ff80861685526004909101909252909120541615610eeb578091505b600101610e6f565b50915091565b600c81565b6002602052600090815260409020546001600160a01b031681565b600a546001600160a01b03163314610f65576040805162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015290519081900360640190fd5b6003805460ff1916911515919091179055565b60085481565b60035460ff1681565b6001600160a01b0316600090815260016020526040902054151590565b6001600160a01b031660009081526001602052604090206009810154600554600a90920154670de0b6b3a7640000919092039091020490565b610fe5613778565b610fed613778565b60015b600d8160ff161015610ef3576001600160a01b038416600090815260016020908152604080832060ff808616808652600390920190935292205416908490600d811061103857fe5b911515602092830291909101526001600160a01b038516600090815260018252604080822060ff8086168085526004909201909452912054909116908390600d811061108057fe5b91151560209092020152600101610ff0565b60035460ff1615156001146110e3576040805162461bcd60e51b815260206004820152601260248201527147616d65206e6f7420796574206f70656e2160701b604482015290519081900360640190fd5b6110ed338261092c565b50565b60065481565b6001600160a01b03828116600090815260016020818152604080842060ff87811686526005909101835281852080546002820154919095018054845181870281018701909552808552969760609789979091169591949290931692849183018282801561118c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161116e575b505050505091509250925092509250925092565b6009546001600160a01b031681565b6001600160a01b03828116600090815260016020818152604080842060ff878116865260069091018352818520805460038201546005830154968301805486518189028101890190975280875298996060998a998c998a9996841698949760020196959094169492169286919083018282801561125557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611237575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156112b157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611293575b50505050509250945094509450945094509295509295909350565b600160208190526000918252604090912080549181015460028201546009830154600a840154600b909401546001600160a01b0390931693919290919086565b6001600160a01b038216600090815260016020908152604080832060ff8086168552600490910190925290912054165b92915050565b6000546001600160a01b031681565b60035460ff1615156001146113a2576040805162461bcd60e51b815260206004820152601260248201527147616d65206e6f7420796574206f70656e2160701b604482015290519081900360640190fd5b6113ab33610f87565b6113e65760405162461bcd60e51b81526004018080602001828103825260238152602001806138646023913960400191505060405180910390fd5b8160ff16600114806113fb57508160ff166002145b61143d576040805162461bcd60e51b815260206004820152600e60248201526d0d2dcecc2d8d2c840dac2e8e4d2f60931b604482015290519081900360640190fd5b60ff81166000908152600b60205260409020543414611493576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c696420707269636560981b604482015290519081900360640190fd5b60018160ff161180156114aa5750600c60ff821611155b6114eb576040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081b195d995b609a1b604482015290519081900360640190fd5b60006114f633610fa4565b111561150b5761150533611cab565b50611522565b600554336000908152600160205260409020600901555b336000908152600160208190526040909120600a0180546103e860c8340204908101909155600480548201905560068054909101905560ff831614156117ef5733600090815260016020908152604080832060ff808616855260039091019092529091205416156115d4576040805162461bcd60e51b81526020600482015260176024820152761b195d995b08185b1c9958591e481858dd1a5d985d1959604a1b604482015290519081900360640190fd5b33600090815260016020908152604080832060ff60001986018116855260059091019092529091206002015416156116365733600090815260016020908152604080832060ff60001986011684526005019091529020600201805460ff191690555b60006116423383611c16565b6009549091506001600160a01b038083169116141561171357600954600090611673906001600160a01b0316610fa4565b11156116945760095461168e906001600160a01b0316611cab565b506116b5565b600554600980546001600160a01b0316600090815260016020526040902001555b6009546001600160a01b03166000908152600160205260409020600a0180546103e860c83402049081019091556007805460028302019081905590670de0b6b3a7640000028161170157fe5b60058054929091049091019055611745565b600780546103e860c834020490810191829055670de0b6b3a7640000028161173757fe5b600580549290910490910190555b33600081815260016020818152604080842060ff8816855260058101835281852080546001600160a01b0319166001600160a01b038916179055600301909152909120805460ff1916909117905561179e908284611d11565b604080516001815260ff8416602082015281516001600160a01b0384169233927f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119929081900390910190a350611a56565b33600090815260016020908152604080832060ff80861685526004909101909252909120541615611861576040805162461bcd60e51b81526020600482015260176024820152761b195d995b08185b1c9958591e481858dd1a5d985d1959604a1b604482015290519081900360640190fd5b33600090815260016020908152604080832060ff60001986018116855260069091019092529091206003015416156118c35733600090815260016020908152604080832060ff60001986011684526006019091529020600301805460ff191690555b60006118cf3383611b75565b6009549091506001600160a01b03808316911614156119a057600954600090611900906001600160a01b0316610fa4565b11156119215760095461191b906001600160a01b0316611cab565b50611942565b600554600980546001600160a01b0316600090815260016020526040902001555b6009546001600160a01b03166000908152600160205260409020600a0180546103e860c83402049081019091556007805460028302019081905590670de0b6b3a7640000028161198e57fe5b600580549290910490910190556119d2565b600780546103e860c834020490810191829055670de0b6b3a764000002816119c457fe5b600580549290910490910190555b33600081815260016020818152604080842060ff88168552600401909152909120805460ff19169091179055611a09908284612080565b604080516002815260ff8416602082015281516001600160a01b0384169233927f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119929081900390910190a3505b5050565b611a62613778565b611a6a613778565b60015b600d8160ff161015610ef3576001600160a01b038416600090815260016020908152604080832060ff8516808552600790910190925290912054908490600d8110611ab457fe5b602090810291909101919091526001600160a01b038516600090815260018252604080822060ff85168084526008909101909352902054908390600d8110611af857fe5b6020020152600101611a6d565b6001600160a01b0391909116600090815260016020908152604080832060ff90941683526007840182528083205460089094019091529020549091565b6007546001600160a01b0382166000908152600160205260408120600a015490919060640281611b6e57fe5b0492915050565b60005b6001600160a01b03808416600090815260016020818152604080842090920154909316825280822060ff808716845260049091019093529020541615611bdd57506001600160a01b03808316600090815260016020819052604090912001541661133c565b6001600160a01b039283166000908152600160208190526040909120015490921691611b78565b600b6020526000908152604090205481565b60005b6001600160a01b03808416600090815260016020818152604080842090920154909316825280822060ff808716845260039091019093529020541615611c7e57506001600160a01b03808316600090815260016020819052604090912001541661133c565b6001600160a01b039283166000908152600160208190526040909120015490921691611c19565b60045481565b600080611cb783610fa4565b6004805482900390556005546001600160a01b0385166000818152600160205260408082206009810194909455600b90930180548501905591519293509183156108fc0291849190818181858888f1979650505050505050565b6001600160a01b03828116600090815260016020818152604080842060ff87168086526005909101835290842083018054938401815580855291842090920180546001600160a01b0319169488169490941790935590525460031115611de3576001600160a01b03808316600081815260016020818152604080842060ff8089168087526005909201845294829020840154825194855292840152921681830152905191928616916000805160206138248339815191529181900360600190a3611dde8284600184612a15565b61207b565b604080516001815260ff8316602082015260038183015290516001600160a01b0380851692908616916000805160206138248339815191529181900360600190a360408051600080825260208083018085526001600160a01b0387168352600180835285842060ff88168552600501909252939091209151611e6a93929091019190613797565b506001600160a01b038216600090815260016020818152604080842060ff938601841685526003019091529091205416158015611eab575060ff8116600c14155b15611ee9576001600160a01b038216600090815260016020818152604080842060ff86168552600501909152909120600201805460ff191690911790555b6009546001600160a01b03838116911614611ff6576000611f0a8383611c16565b6001600160a01b03848116600090815260016020908152604080832060ff88168452600501909152902054919250828116911614611f82576001600160a01b03838116600090815260016020908152604080832060ff87168452600501909152902080546001600160a01b0319169183169190911790555b6001600160a01b03808416600081815260016020818152604080842060ff8916808652600590910183529381902060030180548401905580519283529082019290925281518885169486169392600080516020613844833981519152928290030190a4611ff0838284611d11565b5061207b565b60095461200f906001600160a01b031684600184612a15565b600980546001600160a01b03908116600090815260016020818152604080842060ff881680865260059091018352818520600301805485019055955481519384529183019590955284518885169593949190911692600080516020613844833981519152928290030190a45b505050565b6001600160a01b038216600090815260016020908152604080832060ff808616855260049091019092529091205416612100576040805162461bcd60e51b815260206004820152601f60248201527f3530302e205265666572726572206c6576656c20697320696e61637469766500604482015290519081900360640190fd5b6001600160a01b038216600090815260016020818152604080842060ff86168552600601909152909120015460021115612666576001600160a01b03828116600081815260016020818152604080842060ff8881168087526006909201845282862085018054958601815580875284872090950180546001600160a01b031916988c16988917905594819052925481516002815292830193909352919092168282015251919291600080516020613824833981519152916060908290030190a36001600160a01b03838116600090815260016020908152604080832060ff86168452600601909152902080546001600160a01b031916848316908117909155600954909116141561221857611dde8284600284612a15565b6001600160a01b03828116600090815260016020818152604080842060ff871680865260069182018452828620548716808752858552838720828852909201845291852060028082018054808801825590885294872090940180546001600160a01b031916978b169790971790965593529201549091811480156122e857506001600160a01b03828116600090815260016020818152604080842060ff891685526006019091528220018054928716929091906122d157fe5b6000918252602090912001546001600160a01b0316145b801561234457506001600160a01b03828116600090815260016020818152604080842060ff891685526006019091529091208101805492871692909190811061232d57fe5b6000918252602090912001546001600160a01b0316145b15612409576001600160a01b038416600090815260016020818152604080842060ff8816855260060190915290912081015414156123c257604080516002815260ff8516602082015260058183015290516001600160a01b0380851692908816916000805160206138248339815191529181900360600190a3612404565b604080516002815260ff8516602082015260068183015290516001600160a01b0380851692908816916000805160206138248339815191529181900360600190a35b612654565b80600114806124185750806002145b801561247057506001600160a01b03828116600090815260016020818152604080842060ff8916855260060190915282200180549287169290919061245957fe5b6000918252602090912001546001600160a01b0316145b15612534576001600160a01b038416600090815260016020818152604080842060ff8816855260060190915290912081015414156124ee57604080516002815260ff8516602082015260038183015290516001600160a01b0380851692908816916000805160206138248339815191529181900360600190a3612404565b604080516002815260ff8516602082015260048183015290516001600160a01b0380851692908816916000805160206138248339815191529181900360600190a3612654565b80600214801561259457506001600160a01b03828116600090815260016020818152604080842060ff891685526006019091529091208101805492871692909190811061257d57fe5b6000918252602090912001546001600160a01b0316145b15612654576001600160a01b038416600090815260016020818152604080842060ff88168552600601909152909120810154141561261257604080516002815260ff8516602082015260058183015290516001600160a01b0380851692908816916000805160206138248339815191529181900360600190a3612654565b604080516002815260ff8516602082015260068183015290516001600160a01b0380851692908816916000805160206138248339815191529181900360600190a35b61265f858385612bd2565b505061207b565b6001600160a01b03828116600090815260016020818152604080842060ff8716808652600690910183529084206002810180549485018155855291842090920180546001600160a01b0319168886161790559152600501541615612849576001600160a01b038216600090815260016020818152604080842060ff861685526006019091529091208101805490919081106126fd57fe5b60009182526020808320909101546001600160a01b0385811684526001808452604080862060ff8816875260060190945292842090920180549290911692909161274357fe5b6000918252602090912001546001600160a01b03161480156127b757506001600160a01b03828116600090815260016020818152604080842060ff871685526006019091528220600581015491018054919093169291906127a057fe5b6000918252602090912001546001600160a01b0316145b156127d4576127c98383836001613032565b611dde838383612bd2565b6001600160a01b03828116600090815260016020818152604080842060ff8716855260060190915282206005810154910180549190931692919061281457fe5b6000918252602090912001546001600160a01b0316141561283c576127c98383836001613032565b6127c98383836000613032565b6001600160a01b03828116600090815260016020818152604080842060ff871685526006019091529091208101805492861692909190811061288757fe5b6000918252602090912001546001600160a01b031614156128af576127c98383836000613032565b6001600160a01b03828116600090815260016020818152604080842060ff871685526006019091528220018054928616929091906128e957fe5b6000918252602090912001546001600160a01b03161415612911576127c98383836001613032565b6001600160a01b038216600090815260016020818152604080842060ff861685526006019091528220810180549192918390811061294b57fe5b60009182526020808320909101546001600160a01b039081168452838201949094526040928301822060ff861680845260069182018352848420600190810154968916855280845285852091855291019091529181208201805482906129ad57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff86168252600601909252902060010154116129fd576129f88383836000613032565b612a0a565b612a0a8383836001613032565b61207b838383612bd2565b600080612a2486868686613599565b60ff85166000908152600b60205260408082205490519395509193506103e860c8830204909103916001600160a01b038516916108fc841502918491818181858888f19350505050158015612a7d573d6000803e3d6000fd5b50600080546040805163a9059cbb60e01b81526001600160a01b038781166004830152602482018690529151919092169263a9059cbb92604480820193602093909283900390910190829087803b158015612ad757600080fd5b505af1158015612aeb573d6000803e3d6000fd5b505050506040513d6020811015612b0157600080fd5b5050600160ff86161415612b43576001600160a01b038316600090815260016020908152604080832060ff881684526007019091529020805482019055612b73565b6001600160a01b038316600090815260016020908152604080832060ff8816845260080190915290208054820190555b8115612bc9576040805160ff80881682528616602082015281516001600160a01b0380871693908a16927ff0ddc65c0d411f042f723dcfa1b7d13e85a35b7b70761d447c6500411cacf328929081900390910190a35b50505050505050565b6001600160a01b038216600090815260016020908152604080832060ff8516845260060190915290206002015460041115612c1457611dde8284600284612a15565b6001600160a01b03808316600090815260016020818152604080842060ff8716808652600691820184528286205490961685528383528185209585529490940181529183902001805483518184028101840190945280845260609392830182828015612ca957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612c8b575b50505050509050805160021415612e0a57826001600160a01b031681600081518110612cd157fe5b60200260200101516001600160a01b03161480612d135750826001600160a01b031681600181518110612d0057fe5b60200260200101516001600160a01b0316145b15612d77576001600160a01b03808416600081815260016020818152604080842060ff8916808652600691820184528286205490971685529282528084209584529490910190529190912060050180546001600160a01b0319169091179055612e0a565b805160011415612e0a57826001600160a01b031681600081518110612d9857fe5b60200260200101516001600160a01b03161415612e0a576001600160a01b03808416600081815260016020818152604080842060ff8916808652600691820184528286205490971685529282528084209584529490910190529190912060050180546001600160a01b03191690911790555b60408051600080825260208083018085526001600160a01b0388168352600180835285842060ff89168552600601909252939091209151612e5093929091019190613797565b5060408051600080825260208083018085526001600160a01b03881683526001825284832060ff881684526006019091529290209051612e969260029092019190613797565b506001600160a01b038316600090815260016020818152604080842060ff808816865260068201845282862060050180546001600160a01b0319169055938701841685526004019091529091205416158015612ef6575060ff8216600c14155b15612f34576001600160a01b038316600090815260016020818152604080842060ff87168552600601909152909120600301805460ff191690911790555b6001600160a01b03808416600081815260016020818152604080842060ff891685526006019091529091206004018054909101905560095490911614612fd2576000612f808484611b75565b604080516002815260ff8616602082015281519293506001600160a01b0380891693818616939189169260008051602061384483398151915292908290030190a4612fcc848285612080565b5061302c565b600954604080516002815260ff8516602082015281516001600160a01b0380891694600094911692600080516020613844833981519152929081900390910190a460095461302c906001600160a01b031685600285612a15565b50505050565b806132e3576001600160a01b038316600090815260016020818152604080842060ff87168552600601909152822081018054919291829061306f57fe5b6000918252602080832091909101546001600160a01b039081168452838201949094526040928301822060ff8716808452600691820183528484206001908101805480830182559086528486200180546001600160a01b0319168c8916179055958916845285835284842090845201905290812090910180549091906130f157fe5b60009182526020808320909101546001600160a01b0386811684526001808452604080862060ff891687526006019094529284208301805492821694918916936000805160206138248339815191529360029389939091829061315057fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a36001600160a01b03808416600081815260016020818152604080842060ff8916855260060190915282208101805493948916936000805160206138248339815191529360029389939092829061320057fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260029092011682820152519081900360600190a36001600160a01b038316600090815260016020818152604080842060ff87168552600601909152822001805490919061329757fe5b60009182526020808320909101546001600160a01b03878116845260018352604080852060ff881686526006019093529190922080546001600160a01b0319169190921617905561302c565b6001600160a01b038316600090815260016020818152604080842060ff871685526006019091528220810180549192918390811061331d57fe5b6000918252602080832091909101546001600160a01b039081168452838201949094526040928301822060ff8716808452600691820183528484206001908101805480830182559086528486200180546001600160a01b0319168c891617905595891684528583528484209084520190522081018054909190811061339e57fe5b60009182526020808320909101546001600160a01b0386811684526001808452604080862060ff891687526006019094529284208301805492821694918916936000805160206138248339815191529360029389939091839081106133ff57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a36001600160a01b03808416600081815260016020818152604080842060ff8916855260060190915282208101805493948916936000805160206138248339815191529360029389939092839081106134b157fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260049092011682820152519081900360600190a36001600160a01b038316600090815260016020818152604080842060ff8716855260060190915290912081018054909190811061354c57fe5b60009182526020808320909101546001600160a01b03878116845260018352604080852060ff881686526006019093529190922080546001600160a01b0319169190921617905550505050565b6000808581600160ff87161415613675575b6001600160a01b038216600090815260016020908152604080832060ff808a168552600590910190925290912060020154161561366657604080516001815260ff8716602082015281516001600160a01b03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a3506001600160a01b03908116600090815260016020818152604080842060ff891685526005019091529091205490911690613670565b9092509050613730565b6135ab565b6001600160a01b038216600090815260016020908152604080832060ff808a168552600690910190925290912060030154161561366657604080516002815260ff8716602082015281516001600160a01b03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a3506001600160a01b03908116600090815260016020818152604080842060ff891685526006019091529091205490911690613675565b94509492505050565b6040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081525090565b604051806101a00160405280600d906020820280388339509192915050565b8280548282559060005260206000209081019282156137ec579160200282015b828111156137ec57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906137b7565b506137f89291506137fc565b5090565b61382091905b808211156137f85780546001600160a01b0319168155600101613802565b9056fe68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d82a00c953eff38ec1b71e7fe060b2ab8df0bbe5354319fbdde4fbdafd6324386a675736572206973206e6f74206578697374732e2052656769737465722066697273742ea265627a7a723158208f21428330e32ee4ffffece52759c18c5cdafea09c910a839a51256a125b7db664736f6c63430005100032000000000000000000000000d1f6d3b9931d76e873f27776d7b1c669ac3bbada

Deployed Bytecode

0x6080604052600436106101c25760003560e01c80637bffe9d8116100f7578063be389d5711610095578063e06e8dbd11610064578063e06e8dbd14610872578063ecabdf79146108ae578063fa45323d146108db578063fe10c41914610917576101c2565b8063be389d571461078f578063c8d6b7f7146107b7578063cd96f222146107ea578063db58c6261461083f576101c2565b80639cc102fc116100d15780639cc102fc146105d7578063a87430ba146106d0578063b2f7543a1461073e578063b8fcf9371461077a576101c2565b80637bffe9d81461050457806383ba31b2146105195780638da5cb5b146105c2576101c2565b80632ae34dc611610164578063509222cd1161013e578063509222cd146103e0578063570354c5146104135780636894937214610446578063797eee24146104de576101c2565b80632ae34dc61461038a578063348d4487146103b65780633cca779b146103cb576101c2565b80632113342d116101a05780632113342d146102b557806327d205ab146102dc57806329c704001461032f5780632a2d0c4714610344576101c2565b80630388b4a31461022e5780630e3d0d351461026157806319aa70e71461028c575b366101e3576009546101de9033906001600160a01b031661092c565b61022c565b61022c336102276000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d8492505050565b61092c565b005b34801561023a57600080fd5b5061022c6004803603602081101561025157600080fd5b50356001600160a01b0316610d8b565b34801561026d57600080fd5b50610276610df9565b6040805160ff9092168252519081900360200190f35b34801561029857600080fd5b506102a1610dfe565b604080519115158252519081900360200190f35b3480156102c157600080fd5b506102ca610e63565b60408051918252519081900360200190f35b3480156102e857600080fd5b5061030f600480360360208110156102ff57600080fd5b50356001600160a01b0316610e69565b6040805160ff938416815291909216602082015281519081900390910190f35b34801561033b57600080fd5b50610276610ef9565b34801561035057600080fd5b5061036e6004803603602081101561036757600080fd5b5035610efe565b604080516001600160a01b039092168252519081900360200190f35b34801561039657600080fd5b5061022c600480360360208110156103ad57600080fd5b50351515610f19565b3480156103c257600080fd5b506102ca610f78565b3480156103d757600080fd5b506102a1610f7e565b3480156103ec57600080fd5b506102a16004803603602081101561040357600080fd5b50356001600160a01b0316610f87565b34801561041f57600080fd5b506102ca6004803603602081101561043657600080fd5b50356001600160a01b0316610fa4565b34801561045257600080fd5b506104796004803603602081101561046957600080fd5b50356001600160a01b0316610fdd565b60405180836101a080838360005b8381101561049f578181015183820152602001610487565b5050505090500182600d60200280838360005b838110156104ca5781810151838201526020016104b2565b505050509050019250505060405180910390f35b61022c600480360360208110156104f457600080fd5b50356001600160a01b0316611092565b34801561051057600080fd5b506102ca6110f0565b34801561052557600080fd5b506105556004803603604081101561053c57600080fd5b5080356001600160a01b0316906020013560ff166110f6565b604080516001600160a01b0385168152821515918101919091526060602080830182815285519284019290925284516080840191868101910280838360005b838110156105ac578181015183820152602001610594565b5050505090500194505050505060405180910390f35b3480156105ce57600080fd5b5061036e6111a0565b3480156105e357600080fd5b50610613600480360360408110156105fa57600080fd5b5080356001600160a01b0316906020013560ff166111af565b604080516001600160a01b03808816825284151560608301528316608082015260a060208083018281528851928401929092528751929391929184019160c0850191898101910280838360005b83811015610678578181015183820152602001610660565b50505050905001838103825286818151815260200191508051906020019060200280838360005b838110156106b757818101518382015260200161069f565b5050505090500197505050505050505060405180910390f35b3480156106dc57600080fd5b50610703600480360360208110156106f357600080fd5b50356001600160a01b03166112cc565b604080519687526001600160a01b039095166020870152858501939093526060850191909152608084015260a0830152519081900360c00190f35b34801561074a57600080fd5b506102a16004803603604081101561076157600080fd5b5080356001600160a01b0316906020013560ff1661130c565b34801561078657600080fd5b5061036e611342565b61022c600480360360408110156107a557600080fd5b5060ff81358116916020013516611351565b3480156107c357600080fd5b50610479600480360360208110156107da57600080fd5b50356001600160a01b0316611a5a565b3480156107f657600080fd5b506108266004803603604081101561080d57600080fd5b5080356001600160a01b0316906020013560ff16611b05565b6040805192835260208301919091528051918290030190f35b34801561084b57600080fd5b506102ca6004803603602081101561086257600080fd5b50356001600160a01b0316611b42565b34801561087e57600080fd5b5061036e6004803603604081101561089557600080fd5b5080356001600160a01b0316906020013560ff16611b75565b3480156108ba57600080fd5b506102ca600480360360208110156108d157600080fd5b503560ff16611c04565b3480156108e757600080fd5b5061036e600480360360408110156108fe57600080fd5b5080356001600160a01b0316906020013560ff16611c16565b34801561092357600080fd5b506102ca611ca5565b34671bc16d674ec8000014610988576040805162461bcd60e51b815260206004820152601960248201527f726567697374726174696f6e20636f73742032204d4154494300000000000000604482015290519081900360640190fd5b61099182610f87565b156109d1576040805162461bcd60e51b815260206004820152600b60248201526a757365722065786973747360a81b604482015290519081900360640190fd5b6109da81610f87565b610a21576040805162461bcd60e51b81526020600482015260136024820152727265666572726572206e6f742065786973747360681b604482015290519081900360640190fd5b813b63ffffffff811615610a73576040805162461bcd60e51b815260206004820152601460248201527318d85b9b9bdd08189948184818dbdb9d1c9858dd60621b604482015290519081900360640190fd5b610a7b613739565b506040805160c0810182526008805482526001600160a01b0385811660208085018281526000868801818152600554606089019081526080890183815260a08a018481528e891680865260018089528d87208d5181559751888201805491909c166001600160a01b0319918216178c5595516002808a0191909155945160098901559251600a88019081559151600b8801558a5486528388528c862080548616909117905588549093168717909755868352600384018552898320805460ff199081168917909155600494850186528a84208054909116881790559386905280546103e83460c802049081019091558254810190925560068054909201909155845484019094559083529382209093018054840190559091610b9e908690611c16565b90506000610bad866001611b75565b6009549091506001600160a01b0383811691161480610bd957506009546001600160a01b038281169116145b15610c9657600954600090610bf6906001600160a01b0316610fa4565b1115610c1757600954610c11906001600160a01b0316611cab565b50610c38565b600554600980546001600160a01b0316600090815260016020526040902001555b6009546001600160a01b03166000908152600160205260409020600a0180546103e860c83402049081019091556007805460028302019081905590670de0b6b3a76400000281610c8457fe5b60058054929091049091019055610cc8565b600780546103e860c834020490810191829055670de0b6b3a76400000281610cba57fe5b600580549290910490910190555b6001600160a01b03868116600090815260016020818152604080842083855260050190915290912080546001600160a01b03191692851692909217909155610d139087908490611d11565b610d1f86826001612080565b6001600160a01b03808716600081815260016020908152604080832054948a168084529281902054815190815290519293927f309bb360e8b69c23937ccc5fb01f9aeeead1c95a99604e175113ff82f2b1723a929181900390910190a4505050505050565b6014015190565b600a546001600160a01b03163314610dd7576040805162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60c881565b600080610e0a33610fa4565b905060008111610e55576040805162461bcd60e51b81526020600482015260116024820152704e6f206469767320617661696c61626c6560781b604482015290519081900360640190fd5b610e5e33611cab565b505090565b60055481565b60008060015b600d8160ff161015610ef3576001600160a01b038416600090815260016020908152604080832060ff80861685526003909101909252909120541615610eb3578092505b6001600160a01b038416600090815260016020908152604080832060ff80861685526004909101909252909120541615610eeb578091505b600101610e6f565b50915091565b600c81565b6002602052600090815260409020546001600160a01b031681565b600a546001600160a01b03163314610f65576040805162461bcd60e51b815260206004820152600a60248201526927b7363c9020b236b4b760b11b604482015290519081900360640190fd5b6003805460ff1916911515919091179055565b60085481565b60035460ff1681565b6001600160a01b0316600090815260016020526040902054151590565b6001600160a01b031660009081526001602052604090206009810154600554600a90920154670de0b6b3a7640000919092039091020490565b610fe5613778565b610fed613778565b60015b600d8160ff161015610ef3576001600160a01b038416600090815260016020908152604080832060ff808616808652600390920190935292205416908490600d811061103857fe5b911515602092830291909101526001600160a01b038516600090815260018252604080822060ff8086168085526004909201909452912054909116908390600d811061108057fe5b91151560209092020152600101610ff0565b60035460ff1615156001146110e3576040805162461bcd60e51b815260206004820152601260248201527147616d65206e6f7420796574206f70656e2160701b604482015290519081900360640190fd5b6110ed338261092c565b50565b60065481565b6001600160a01b03828116600090815260016020818152604080842060ff87811686526005909101835281852080546002820154919095018054845181870281018701909552808552969760609789979091169591949290931692849183018282801561118c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161116e575b505050505091509250925092509250925092565b6009546001600160a01b031681565b6001600160a01b03828116600090815260016020818152604080842060ff878116865260069091018352818520805460038201546005830154968301805486518189028101890190975280875298996060998a998c998a9996841698949760020196959094169492169286919083018282801561125557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611237575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156112b157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611293575b50505050509250945094509450945094509295509295909350565b600160208190526000918252604090912080549181015460028201546009830154600a840154600b909401546001600160a01b0390931693919290919086565b6001600160a01b038216600090815260016020908152604080832060ff8086168552600490910190925290912054165b92915050565b6000546001600160a01b031681565b60035460ff1615156001146113a2576040805162461bcd60e51b815260206004820152601260248201527147616d65206e6f7420796574206f70656e2160701b604482015290519081900360640190fd5b6113ab33610f87565b6113e65760405162461bcd60e51b81526004018080602001828103825260238152602001806138646023913960400191505060405180910390fd5b8160ff16600114806113fb57508160ff166002145b61143d576040805162461bcd60e51b815260206004820152600e60248201526d0d2dcecc2d8d2c840dac2e8e4d2f60931b604482015290519081900360640190fd5b60ff81166000908152600b60205260409020543414611493576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c696420707269636560981b604482015290519081900360640190fd5b60018160ff161180156114aa5750600c60ff821611155b6114eb576040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081b195d995b609a1b604482015290519081900360640190fd5b60006114f633610fa4565b111561150b5761150533611cab565b50611522565b600554336000908152600160205260409020600901555b336000908152600160208190526040909120600a0180546103e860c8340204908101909155600480548201905560068054909101905560ff831614156117ef5733600090815260016020908152604080832060ff808616855260039091019092529091205416156115d4576040805162461bcd60e51b81526020600482015260176024820152761b195d995b08185b1c9958591e481858dd1a5d985d1959604a1b604482015290519081900360640190fd5b33600090815260016020908152604080832060ff60001986018116855260059091019092529091206002015416156116365733600090815260016020908152604080832060ff60001986011684526005019091529020600201805460ff191690555b60006116423383611c16565b6009549091506001600160a01b038083169116141561171357600954600090611673906001600160a01b0316610fa4565b11156116945760095461168e906001600160a01b0316611cab565b506116b5565b600554600980546001600160a01b0316600090815260016020526040902001555b6009546001600160a01b03166000908152600160205260409020600a0180546103e860c83402049081019091556007805460028302019081905590670de0b6b3a7640000028161170157fe5b60058054929091049091019055611745565b600780546103e860c834020490810191829055670de0b6b3a7640000028161173757fe5b600580549290910490910190555b33600081815260016020818152604080842060ff8816855260058101835281852080546001600160a01b0319166001600160a01b038916179055600301909152909120805460ff1916909117905561179e908284611d11565b604080516001815260ff8416602082015281516001600160a01b0384169233927f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119929081900390910190a350611a56565b33600090815260016020908152604080832060ff80861685526004909101909252909120541615611861576040805162461bcd60e51b81526020600482015260176024820152761b195d995b08185b1c9958591e481858dd1a5d985d1959604a1b604482015290519081900360640190fd5b33600090815260016020908152604080832060ff60001986018116855260069091019092529091206003015416156118c35733600090815260016020908152604080832060ff60001986011684526006019091529020600301805460ff191690555b60006118cf3383611b75565b6009549091506001600160a01b03808316911614156119a057600954600090611900906001600160a01b0316610fa4565b11156119215760095461191b906001600160a01b0316611cab565b50611942565b600554600980546001600160a01b0316600090815260016020526040902001555b6009546001600160a01b03166000908152600160205260409020600a0180546103e860c83402049081019091556007805460028302019081905590670de0b6b3a7640000028161198e57fe5b600580549290910490910190556119d2565b600780546103e860c834020490810191829055670de0b6b3a764000002816119c457fe5b600580549290910490910190555b33600081815260016020818152604080842060ff88168552600401909152909120805460ff19169091179055611a09908284612080565b604080516002815260ff8416602082015281516001600160a01b0384169233927f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119929081900390910190a3505b5050565b611a62613778565b611a6a613778565b60015b600d8160ff161015610ef3576001600160a01b038416600090815260016020908152604080832060ff8516808552600790910190925290912054908490600d8110611ab457fe5b602090810291909101919091526001600160a01b038516600090815260018252604080822060ff85168084526008909101909352902054908390600d8110611af857fe5b6020020152600101611a6d565b6001600160a01b0391909116600090815260016020908152604080832060ff90941683526007840182528083205460089094019091529020549091565b6007546001600160a01b0382166000908152600160205260408120600a015490919060640281611b6e57fe5b0492915050565b60005b6001600160a01b03808416600090815260016020818152604080842090920154909316825280822060ff808716845260049091019093529020541615611bdd57506001600160a01b03808316600090815260016020819052604090912001541661133c565b6001600160a01b039283166000908152600160208190526040909120015490921691611b78565b600b6020526000908152604090205481565b60005b6001600160a01b03808416600090815260016020818152604080842090920154909316825280822060ff808716845260039091019093529020541615611c7e57506001600160a01b03808316600090815260016020819052604090912001541661133c565b6001600160a01b039283166000908152600160208190526040909120015490921691611c19565b60045481565b600080611cb783610fa4565b6004805482900390556005546001600160a01b0385166000818152600160205260408082206009810194909455600b90930180548501905591519293509183156108fc0291849190818181858888f1979650505050505050565b6001600160a01b03828116600090815260016020818152604080842060ff87168086526005909101835290842083018054938401815580855291842090920180546001600160a01b0319169488169490941790935590525460031115611de3576001600160a01b03808316600081815260016020818152604080842060ff8089168087526005909201845294829020840154825194855292840152921681830152905191928616916000805160206138248339815191529181900360600190a3611dde8284600184612a15565b61207b565b604080516001815260ff8316602082015260038183015290516001600160a01b0380851692908616916000805160206138248339815191529181900360600190a360408051600080825260208083018085526001600160a01b0387168352600180835285842060ff88168552600501909252939091209151611e6a93929091019190613797565b506001600160a01b038216600090815260016020818152604080842060ff938601841685526003019091529091205416158015611eab575060ff8116600c14155b15611ee9576001600160a01b038216600090815260016020818152604080842060ff86168552600501909152909120600201805460ff191690911790555b6009546001600160a01b03838116911614611ff6576000611f0a8383611c16565b6001600160a01b03848116600090815260016020908152604080832060ff88168452600501909152902054919250828116911614611f82576001600160a01b03838116600090815260016020908152604080832060ff87168452600501909152902080546001600160a01b0319169183169190911790555b6001600160a01b03808416600081815260016020818152604080842060ff8916808652600590910183529381902060030180548401905580519283529082019290925281518885169486169392600080516020613844833981519152928290030190a4611ff0838284611d11565b5061207b565b60095461200f906001600160a01b031684600184612a15565b600980546001600160a01b03908116600090815260016020818152604080842060ff881680865260059091018352818520600301805485019055955481519384529183019590955284518885169593949190911692600080516020613844833981519152928290030190a45b505050565b6001600160a01b038216600090815260016020908152604080832060ff808616855260049091019092529091205416612100576040805162461bcd60e51b815260206004820152601f60248201527f3530302e205265666572726572206c6576656c20697320696e61637469766500604482015290519081900360640190fd5b6001600160a01b038216600090815260016020818152604080842060ff86168552600601909152909120015460021115612666576001600160a01b03828116600081815260016020818152604080842060ff8881168087526006909201845282862085018054958601815580875284872090950180546001600160a01b031916988c16988917905594819052925481516002815292830193909352919092168282015251919291600080516020613824833981519152916060908290030190a36001600160a01b03838116600090815260016020908152604080832060ff86168452600601909152902080546001600160a01b031916848316908117909155600954909116141561221857611dde8284600284612a15565b6001600160a01b03828116600090815260016020818152604080842060ff871680865260069182018452828620548716808752858552838720828852909201845291852060028082018054808801825590885294872090940180546001600160a01b031916978b169790971790965593529201549091811480156122e857506001600160a01b03828116600090815260016020818152604080842060ff891685526006019091528220018054928716929091906122d157fe5b6000918252602090912001546001600160a01b0316145b801561234457506001600160a01b03828116600090815260016020818152604080842060ff891685526006019091529091208101805492871692909190811061232d57fe5b6000918252602090912001546001600160a01b0316145b15612409576001600160a01b038416600090815260016020818152604080842060ff8816855260060190915290912081015414156123c257604080516002815260ff8516602082015260058183015290516001600160a01b0380851692908816916000805160206138248339815191529181900360600190a3612404565b604080516002815260ff8516602082015260068183015290516001600160a01b0380851692908816916000805160206138248339815191529181900360600190a35b612654565b80600114806124185750806002145b801561247057506001600160a01b03828116600090815260016020818152604080842060ff8916855260060190915282200180549287169290919061245957fe5b6000918252602090912001546001600160a01b0316145b15612534576001600160a01b038416600090815260016020818152604080842060ff8816855260060190915290912081015414156124ee57604080516002815260ff8516602082015260038183015290516001600160a01b0380851692908816916000805160206138248339815191529181900360600190a3612404565b604080516002815260ff8516602082015260048183015290516001600160a01b0380851692908816916000805160206138248339815191529181900360600190a3612654565b80600214801561259457506001600160a01b03828116600090815260016020818152604080842060ff891685526006019091529091208101805492871692909190811061257d57fe5b6000918252602090912001546001600160a01b0316145b15612654576001600160a01b038416600090815260016020818152604080842060ff88168552600601909152909120810154141561261257604080516002815260ff8516602082015260058183015290516001600160a01b0380851692908816916000805160206138248339815191529181900360600190a3612654565b604080516002815260ff8516602082015260068183015290516001600160a01b0380851692908816916000805160206138248339815191529181900360600190a35b61265f858385612bd2565b505061207b565b6001600160a01b03828116600090815260016020818152604080842060ff8716808652600690910183529084206002810180549485018155855291842090920180546001600160a01b0319168886161790559152600501541615612849576001600160a01b038216600090815260016020818152604080842060ff861685526006019091529091208101805490919081106126fd57fe5b60009182526020808320909101546001600160a01b0385811684526001808452604080862060ff8816875260060190945292842090920180549290911692909161274357fe5b6000918252602090912001546001600160a01b03161480156127b757506001600160a01b03828116600090815260016020818152604080842060ff871685526006019091528220600581015491018054919093169291906127a057fe5b6000918252602090912001546001600160a01b0316145b156127d4576127c98383836001613032565b611dde838383612bd2565b6001600160a01b03828116600090815260016020818152604080842060ff8716855260060190915282206005810154910180549190931692919061281457fe5b6000918252602090912001546001600160a01b0316141561283c576127c98383836001613032565b6127c98383836000613032565b6001600160a01b03828116600090815260016020818152604080842060ff871685526006019091529091208101805492861692909190811061288757fe5b6000918252602090912001546001600160a01b031614156128af576127c98383836000613032565b6001600160a01b03828116600090815260016020818152604080842060ff871685526006019091528220018054928616929091906128e957fe5b6000918252602090912001546001600160a01b03161415612911576127c98383836001613032565b6001600160a01b038216600090815260016020818152604080842060ff861685526006019091528220810180549192918390811061294b57fe5b60009182526020808320909101546001600160a01b039081168452838201949094526040928301822060ff861680845260069182018352848420600190810154968916855280845285852091855291019091529181208201805482906129ad57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff86168252600601909252902060010154116129fd576129f88383836000613032565b612a0a565b612a0a8383836001613032565b61207b838383612bd2565b600080612a2486868686613599565b60ff85166000908152600b60205260408082205490519395509193506103e860c8830204909103916001600160a01b038516916108fc841502918491818181858888f19350505050158015612a7d573d6000803e3d6000fd5b50600080546040805163a9059cbb60e01b81526001600160a01b038781166004830152602482018690529151919092169263a9059cbb92604480820193602093909283900390910190829087803b158015612ad757600080fd5b505af1158015612aeb573d6000803e3d6000fd5b505050506040513d6020811015612b0157600080fd5b5050600160ff86161415612b43576001600160a01b038316600090815260016020908152604080832060ff881684526007019091529020805482019055612b73565b6001600160a01b038316600090815260016020908152604080832060ff8816845260080190915290208054820190555b8115612bc9576040805160ff80881682528616602082015281516001600160a01b0380871693908a16927ff0ddc65c0d411f042f723dcfa1b7d13e85a35b7b70761d447c6500411cacf328929081900390910190a35b50505050505050565b6001600160a01b038216600090815260016020908152604080832060ff8516845260060190915290206002015460041115612c1457611dde8284600284612a15565b6001600160a01b03808316600090815260016020818152604080842060ff8716808652600691820184528286205490961685528383528185209585529490940181529183902001805483518184028101840190945280845260609392830182828015612ca957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612c8b575b50505050509050805160021415612e0a57826001600160a01b031681600081518110612cd157fe5b60200260200101516001600160a01b03161480612d135750826001600160a01b031681600181518110612d0057fe5b60200260200101516001600160a01b0316145b15612d77576001600160a01b03808416600081815260016020818152604080842060ff8916808652600691820184528286205490971685529282528084209584529490910190529190912060050180546001600160a01b0319169091179055612e0a565b805160011415612e0a57826001600160a01b031681600081518110612d9857fe5b60200260200101516001600160a01b03161415612e0a576001600160a01b03808416600081815260016020818152604080842060ff8916808652600691820184528286205490971685529282528084209584529490910190529190912060050180546001600160a01b03191690911790555b60408051600080825260208083018085526001600160a01b0388168352600180835285842060ff89168552600601909252939091209151612e5093929091019190613797565b5060408051600080825260208083018085526001600160a01b03881683526001825284832060ff881684526006019091529290209051612e969260029092019190613797565b506001600160a01b038316600090815260016020818152604080842060ff808816865260068201845282862060050180546001600160a01b0319169055938701841685526004019091529091205416158015612ef6575060ff8216600c14155b15612f34576001600160a01b038316600090815260016020818152604080842060ff87168552600601909152909120600301805460ff191690911790555b6001600160a01b03808416600081815260016020818152604080842060ff891685526006019091529091206004018054909101905560095490911614612fd2576000612f808484611b75565b604080516002815260ff8616602082015281519293506001600160a01b0380891693818616939189169260008051602061384483398151915292908290030190a4612fcc848285612080565b5061302c565b600954604080516002815260ff8516602082015281516001600160a01b0380891694600094911692600080516020613844833981519152929081900390910190a460095461302c906001600160a01b031685600285612a15565b50505050565b806132e3576001600160a01b038316600090815260016020818152604080842060ff87168552600601909152822081018054919291829061306f57fe5b6000918252602080832091909101546001600160a01b039081168452838201949094526040928301822060ff8716808452600691820183528484206001908101805480830182559086528486200180546001600160a01b0319168c8916179055958916845285835284842090845201905290812090910180549091906130f157fe5b60009182526020808320909101546001600160a01b0386811684526001808452604080862060ff891687526006019094529284208301805492821694918916936000805160206138248339815191529360029389939091829061315057fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a36001600160a01b03808416600081815260016020818152604080842060ff8916855260060190915282208101805493948916936000805160206138248339815191529360029389939092829061320057fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260029092011682820152519081900360600190a36001600160a01b038316600090815260016020818152604080842060ff87168552600601909152822001805490919061329757fe5b60009182526020808320909101546001600160a01b03878116845260018352604080852060ff881686526006019093529190922080546001600160a01b0319169190921617905561302c565b6001600160a01b038316600090815260016020818152604080842060ff871685526006019091528220810180549192918390811061331d57fe5b6000918252602080832091909101546001600160a01b039081168452838201949094526040928301822060ff8716808452600691820183528484206001908101805480830182559086528486200180546001600160a01b0319168c891617905595891684528583528484209084520190522081018054909190811061339e57fe5b60009182526020808320909101546001600160a01b0386811684526001808452604080862060ff891687526006019094529284208301805492821694918916936000805160206138248339815191529360029389939091839081106133ff57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a36001600160a01b03808416600081815260016020818152604080842060ff8916855260060190915282208101805493948916936000805160206138248339815191529360029389939092839081106134b157fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260049092011682820152519081900360600190a36001600160a01b038316600090815260016020818152604080842060ff8716855260060190915290912081018054909190811061354c57fe5b60009182526020808320909101546001600160a01b03878116845260018352604080852060ff881686526006019093529190922080546001600160a01b0319169190921617905550505050565b6000808581600160ff87161415613675575b6001600160a01b038216600090815260016020908152604080832060ff808a168552600590910190925290912060020154161561366657604080516001815260ff8716602082015281516001600160a01b03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a3506001600160a01b03908116600090815260016020818152604080842060ff891685526005019091529091205490911690613670565b9092509050613730565b6135ab565b6001600160a01b038216600090815260016020908152604080832060ff808a168552600690910190925290912060030154161561366657604080516002815260ff8716602082015281516001600160a01b03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a3506001600160a01b03908116600090815260016020818152604080842060ff891685526006019091529091205490911690613675565b94509492505050565b6040518060c001604052806000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081525090565b604051806101a00160405280600d906020820280388339509192915050565b8280548282559060005260206000209081019282156137ec579160200282015b828111156137ec57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906137b7565b506137f89291506137fc565b5090565b61382091905b808211156137f85780546001600160a01b0319168155600101613802565b9056fe68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d82a00c953eff38ec1b71e7fe060b2ab8df0bbe5354319fbdde4fbdafd6324386a675736572206973206e6f74206578697374732e2052656769737465722066697273742ea265627a7a723158208f21428330e32ee4ffffece52759c18c5cdafea09c910a839a51256a125b7db664736f6c63430005100032

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

000000000000000000000000d1f6d3b9931d76e873f27776d7b1c669ac3bbada

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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d1f6d3b9931d76e873f27776d7b1c669ac3bbada


Deployed Bytecode Sourcemap

321:26217:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3614:8;3611:90;;3683:5;;3658:31;;3671:10;;-1:-1:-1;;;;;3683:5:0;3658:12;:31::i;:::-;3651:38;;3611:90;3721:50;3734:10;3746:24;3761:8;;3746:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3746:14:0;;-1:-1:-1;;;3746:24:0:i;:::-;3721:12;:50::i;:::-;321:26217;25377:139;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25377:139:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25377:139:0;-1:-1:-1;;;;;25377:139:0;;:::i;1276:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1276:39:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10154:185;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10154:185:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;1634:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1634:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;22171:374;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22171:374:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22171:374:0;-1:-1:-1;;;;;22171:374:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1232:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1232:37:0;;;:::i;1514:43::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1514:43:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1514:43:0;;:::i;:::-;;;;-1:-1:-1;;;;;1514:43:0;;;;;;;;;;;;;;3421:139;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3421:139:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3421:139:0;;;;:::i;1793:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1793:26:0;;;:::i;1566:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1566:27:0;;;:::i;24178:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24178:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24178:110:0;-1:-1:-1;;;;;24178:110:0;;:::i;10842:261::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10842:261:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10842:261:0;-1:-1:-1;;;;;10842:261:0;;:::i;21826:333::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21826:333:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21826:333:0;-1:-1:-1;;;;;21826:333:0;;:::i;:::-;;;;;;;;;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;21826:333: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;21826:333:0;;;;;;;;;;;;;;;;;3787:185;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3787:185:0;-1:-1:-1;;;;;3787:185:0;;:::i;1672:21::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1672:21:0;;;:::i;23351:312::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23351:312:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23351:312:0;;-1:-1:-1;;;;;23351:312:0;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;23351: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;23351:312:0;;;;;;;;;;;;;;;;;;;1826:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1826:20:0;;;:::i;23673:487::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23673:487:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23673:487:0;;-1:-1:-1;;;;;23673:487:0;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;23673: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;23673: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;23673:487:0;;;;;;;;;;;;;;;;;;;;;;1470:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1470:37:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1470:37:0;-1:-1:-1;;;;;1470:37:0;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1470:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22553:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22553:155:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22553:155:0;;-1:-1:-1;;;;;22553:155:0;;;;;;;;:::i;1387:74::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1387:74:0;;;:::i;3984:3578::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3984:3578:0;;;;;;;;;;;:::i;22998:345::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22998:345:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22998:345:0;-1:-1:-1;;;;;22998:345:0;;:::i;22716:274::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22716:274:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22716:274:0;;-1:-1:-1;;;;;22716:274:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10675:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10675:159:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10675:159:0;-1:-1:-1;;;;;10675:159:0;;:::i;21459:349::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21459:349:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21459:349:0;;-1:-1:-1;;;;;21459:349:0;;;;;;;;:::i;1888:40::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1888:40:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1888:40:0;;;;:::i;21098:349::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21098:349:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21098:349:0;;-1:-1:-1;;;;;21098:349:0;;;;;;;;:::i;1608:18::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1608:18:0;;;:::i;7578:2558::-;7673:9;7686:19;7673:32;7665:70;;;;;-1:-1:-1;;;7665:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7775:25;7788:11;7775:12;:25::i;:::-;7774:26;7766:50;;;;;-1:-1:-1;;;7766:50:0;;;;;;;;;;;;-1:-1:-1;;;7766:50:0;;;;;;;;;;;;;;;7837:29;7850:15;7837:12;:29::i;:::-;7829:61;;;;;-1:-1:-1;;;7829:61:0;;;;;;;;;;;;-1:-1:-1;;;7829:61:0;;;;;;;;;;;;;;;7957:24;;8010:9;;;;8002:42;;;;;-1:-1:-1;;;8002:42:0;;;;;;;;;;;;-1:-1:-1;;;8002:42:0;;;;;;;;;;;;;;;8057:16;;:::i;:::-;-1:-1:-1;8076:246:0;;;;;;;;8100:10;;;8076:246;;-1:-1:-1;;;;;8076:246:0;;;;;;;;;;-1:-1:-1;8076:246:0;;;;;;8210:19;;8076:246;;;;;;;;;;;;;;;;;;8343:18;;;;;;:5;:18;;;;;;:25;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8343:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8391:10;;8379:23;;;;;;;;:37;;;;;;;;;8437:45;;;;;;;;;;8503:36;;;:33;;;:36;;;;;:43;;-1:-1:-1;;8503:43:0;;;;;;;;8558:33;;;;:36;;;;;:43;;;;;;;;;8622:18;;;;:82;;1374:4;8666:9;1312:3;8666:23;:37;8622:82;;;;;;8719:47;;;;;;;-1:-1:-1;8777:52:0;;;;;;;;8870:12;;;;;;;8903:22;;;;;;:36;;;:38;;;;;;8076:246;;8979:34;;8343:18;;8979;:34::i;:::-;8954:59;;9024:17;9044:34;9063:11;9076:1;9044:18;:34::i;:::-;9154:5;;9024:54;;-1:-1:-1;;;;;;9136:23:0;;;9154:5;;9136:23;;:45;;-1:-1:-1;9176:5:0;;-1:-1:-1;;;;;9163:18:0;;;9176:5;;9163:18;9136:45;9133:691;;;9209:5;;9218:1;;9200:15;;-1:-1:-1;;;;;9209:5:0;9200:8;:15::i;:::-;:19;9197:161;;;9248:5;;9239:15;;-1:-1:-1;;;;;9248:5:0;9239:8;:15::i;:::-;;9197:161;;;9323:19;;9301:5;;;-1:-1:-1;;;;;9301:5:0;9295:12;;;;:5;:12;;;;;:25;:47;9197:161;9380:5;;-1:-1:-1;;;;;9380:5:0;9374:12;;;;:5;:12;;;;;:33;;:74;;1374:4;1312:3;9411:9;:23;:37;9374:74;;;;;;9463:8;:53;;9515:1;9475:41;;9463:53;;;;;;1774:4;9554:57;9463:53;9554:68;;;;9531:19;:91;;9554:68;;;;9531:91;;;;;9133:691;;;9655:8;:51;;1374:4;1312:3;9668:9;:23;:37;9655:51;;;;;;;1774:4;9744:57;9655:51;9744:68;;;;9721:19;:91;;9744:68;;;;9721:91;;;;;9133:691;-1:-1:-1;;;;;9836:18:0;;;;;;;:5;:18;;;;;;;;:30;;;:27;;:30;;;;;;:63;;-1:-1:-1;;;;;;9836:63:0;;;;;;;;;;;9910:48;;9836:18;;:63;;9910:16;:48::i;:::-;9971:43;9988:11;10001:9;10012:1;9971:16;:43::i;:::-;-1:-1:-1;;;;;10079:18:0;;;;;;;:5;:18;;;;;;;;:21;10036:92;;;10102:22;;;;;;;:25;10036:92;;;;;;;;;10079:18;10036:92;;;;;;;;;;;7578:2558;;;;;;:::o;26377:158::-;26513:2;26504:12;26498:19;;26475:53::o;25377:139::-;25453:5;;-1:-1:-1;;;;;25453:5:0;25439:10;:19;25431:42;;;;;-1:-1:-1;;;25431:42:0;;;;;;;;;;;;-1:-1:-1;;;25431:42:0;;;;;;;;;;;;;;;25484:7;:24;;-1:-1:-1;;;;;;25484:24:0;-1:-1:-1;;;;;25484:24:0;;;;;;;;;;25377:139::o;1276:39::-;1312:3;1276:39;:::o;10154:185::-;10190:4;10207:15;10225:20;10234:10;10225:8;:20::i;:::-;10207:38;;10277:1;10264:10;:14;10256:44;;;;;-1:-1:-1;;;10256:44:0;;;;;;;;;;;;-1:-1:-1;;;10256:44:0;;;;;;;;;;;;;;;10311:20;10320:10;10311:8;:20::i;:::-;;10154:185;;:::o;1634:31::-;;;;:::o;22171:374::-;22240:20;;22307:1;22295:238;22313:2;22310:1;:5;;;22295:238;;;-1:-1:-1;;;;;22339:18:0;;;;;;:5;:18;;;;;;;;:36;;;;;;:33;;;;:36;;;;;;;;22336:76;;;22411:1;22394:18;;22336:76;-1:-1:-1;;;;;22448:18:0;;;;;;:5;:18;;;;;;;;:36;;;;;;:33;;;;:36;;;;;;;;22445:76;;;22520:1;22503:18;;22445:76;22317:3;;22295:238;;;;22171:374;;;:::o;1232:37::-;1267:2;1232:37;:::o;1514:43::-;;;;;;;;;;;;-1:-1:-1;;;;;1514:43:0;;:::o;3421:139::-;3501:5;;-1:-1:-1;;;;;3501:5:0;3487:10;:19;3479:42;;;;;-1:-1:-1;;;3479:42:0;;;;;;;;;;;;-1:-1:-1;;;3479:42:0;;;;;;;;;;;;;;;3532:8;:20;;-1:-1:-1;;3532:20:0;;;;;;;;;;3421:139::o;1793:26::-;;;;:::o;1566:27::-;;;;;;:::o;24178:110::-;-1:-1:-1;;;;;24260:11:0;24235:4;24260:11;;;:5;:11;;;;;:14;:19;;;24178:110::o;10842:261::-;-1:-1:-1;;;;;10975:14:0;10897:18;10975:14;;;:5;:14;;;;;:27;;;;10953:19;;11021:35;;;;;1774:4;10953:49;;;;11021:55;;;11020:75;;10842:261::o;21826:333::-;21897:30;;:::i;:::-;21929;;:::i;:::-;21984:1;21972:180;21990:2;21987:1;:5;;;21972:180;;;-1:-1:-1;;;;;22033:18:0;;;;;;:5;:18;;;;;;;;:36;;;;;;;:33;;;;:36;;;;;;;;22013:14;;:17;;;;;;;:56;;;:17;;;;;;;;:56;-1:-1:-1;;;;;22104:18:0;;;;;;:5;:18;;;;;;:36;;;;;;;:33;;;;:36;;;;;;;;;;22084:14;;:17;;;;;;;:56;;;:17;;;;;:56;21994:3;;21972:180;;3787:185;3873:8;;;;:16;;:8;:16;3865:47;;;;;-1:-1:-1;;;3865:47:0;;;;;;;;;;;;-1:-1:-1;;;3865:47:0;;;;;;;;;;;;;;;3923:41;3936:10;3948:15;3923:12;:41::i;:::-;3787:185;:::o;1672:21::-;;;;:::o;23351:312::-;-1:-1:-1;;;;;23480:18:0;;;23428:7;23480:18;;;:5;:18;;;;;;;;:34;;;;;;:27;;;;:34;;;;;:50;;23612:42;;;;23549:44;;;;23472:183;;;;;;;;;;;;;;;;;23428:7;;23437:16;;23428:7;;23480:50;;;;23549:44;;23612:42;;;;;23549:44;;23472:183;;23549:44;23472:183;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23472:183:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23351:312;;;;;:::o;1826:20::-;;;-1:-1:-1;;;;;1826:20:0;;:::o;23673:487::-;-1:-1:-1;;;;;23829:18:0;;;23750:7;23829:18;;;:5;:18;;;;;;;;:34;;;;;;:27;;;;:34;;;;;:50;;24045:42;;;;24106:45;;;;23898:54;;;23821:331;;;;;;;;;;;;;;;;;23750:7;;23759:16;;;;23750:7;;;;23829:50;;;;23898:54;;23971:55;;;24045:42;;;;;24106:45;;;23898:54;;23821:331;;;23898:54;23821:331;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23821:331:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23821:331:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23673:487;;;;;;;;:::o;1470:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1470:37:0;;;;;;;;;;:::o;22553:155::-;-1:-1:-1;;;;;22660:18:0;;22636:4;22660:18;;;:5;:18;;;;;;;;:40;;;;;;:33;;;;:40;;;;;;;;22553:155;;;;;:::o;1387:74::-;;;-1:-1:-1;;;;;1387:74:0;;:::o;3984:3578::-;4068:8;;;;:16;;:8;:16;4060:47;;;;;-1:-1:-1;;;4060:47:0;;;;;;;;;;;;-1:-1:-1;;;4060:47:0;;;;;;;;;;;;;;;4126:24;4139:10;4126:12;:24::i;:::-;4118:72;;;;-1:-1:-1;;;4118:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4209:6;:11;;4219:1;4209:11;:26;;;;4224:6;:11;;4234:1;4224:11;4209:26;4201:53;;;;;-1:-1:-1;;;4201:53:0;;;;;;;;;;;;-1:-1:-1;;;4201:53:0;;;;;;;;;;;;;;;4286:17;;;;;;;:10;:17;;;;;;4273:9;:30;4265:56;;;;;-1:-1:-1;;;4265:56:0;;;;;;;;;;;;-1:-1:-1;;;4265:56:0;;;;;;;;;;;;;;;4348:1;4340:5;:9;;;:32;;;;-1:-1:-1;1267:2:0;4353:19;;;;;4340:32;4332:58;;;;;-1:-1:-1;;;4332:58:0;;;;;;;;;;;;-1:-1:-1;;;4332:58:0;;;;;;;;;;;;;;;4429:1;4406:20;4415:10;4406:8;:20::i;:::-;:24;4403:160;;;4446:20;4455:10;4446:8;:20::i;:::-;;4403:160;;;4532:19;;4505:10;4499:17;;;;:5;:17;;;;;:30;;:52;4403:160;4581:10;4575:17;;;;:5;:17;;;;;;;;:38;;:79;;1374:4;1312:3;4617:9;:23;:37;4575:79;;;;;;4667:6;:49;;;;;;-1:-1:-1;4727:52:0;;;;;;;4796:11;;;;4792:2763;;;4839:10;4833:17;;;;:5;:17;;;;;;;;:39;;;;;;:32;;;;:39;;;;;;;;4832:40;4824:76;;;;;-1:-1:-1;;;4824:76:0;;;;;;;;;;;;-1:-1:-1;;;4824:76:0;;;;;;;;;;;;;;;4927:10;4921:17;;;;:5;:17;;;;;;;;:35;-1:-1:-1;;4948:7:0;;4921:35;;;;:26;;;;:35;;;;;;:43;;;;4917:135;;;4991:10;5031:5;4985:17;;;:5;:17;;;;;;;;:35;-1:-1:-1;;5012:7:0;;4985:35;;;:26;;:35;;;;;:43;;:51;;-1:-1:-1;;4985:51:0;;;4917:135;5072:22;5097:37;5116:10;5128:5;5097:18;:37::i;:::-;5218:5;;5072:62;;-1:-1:-1;;;;;;5200:23:0;;;5218:5;;5200:23;5197:717;;;5255:5;;5264:1;;5246:15;;-1:-1:-1;;;;;5255:5:0;5246:8;:15::i;:::-;:19;5243:177;;;5298:5;;5289:15;;-1:-1:-1;;;;;5298:5:0;5289:8;:15::i;:::-;;5243:177;;;5381:19;;5359:5;;;-1:-1:-1;;;;;5359:5:0;5353:12;;;;:5;:12;;;;;:25;:47;5243:177;5446:5;;-1:-1:-1;;;;;5446:5:0;5440:12;;;;:5;:12;;;;;:33;;:74;;1374:4;1312:3;5477:9;:23;:37;5440:74;;;;;;5533:8;:53;;5585:1;5545:41;;5533:53;;;;;;1774:4;5628:57;5533:53;5628:68;;;;5605:19;:91;;5628:68;;;;5605:91;;;;;5197:717;;;5737:8;:51;;1374:4;1312:3;5750:9;:23;:37;5737:51;;;;;;;1774:4;5830:57;5737:51;5830:68;;;;5807:19;:91;;5830:68;;;;5807:91;;;;;5197:717;5936:10;5930:17;;;;:5;:17;;;;;;;;:33;;;;;:26;;;:33;;;;;:66;;-1:-1:-1;;;;;;5930:66:0;-1:-1:-1;;;;;5930:66:0;;;;;6011:32;;:39;;;;;;:46;;-1:-1:-1;;6011:46:0;;;;;;6072:51;;5930:66;:33;6072:16;:51::i;:::-;6157:45;;;6193:1;6157:45;;;;;;;;;;;-1:-1:-1;;;;;6157:45:0;;;6165:10;;6157:45;;;;;;;;;;;4792:2763;;;;6252:10;6246:17;;;;:5;:17;;;;;;;;:39;;;;;;:32;;;;:39;;;;;;;;6245:40;6237:76;;;;;-1:-1:-1;;;6237:76:0;;;;;;;;;;;;-1:-1:-1;;;6237:76:0;;;;;;;;;;;;;;;6341:10;6335:17;;;;:5;:17;;;;;;;;:35;-1:-1:-1;;6362:7:0;;6335:35;;;;:26;;;;:35;;;;;;:43;;;;6331:135;;;6405:10;6445:5;6399:17;;;:5;:17;;;;;;;;:35;-1:-1:-1;;6426:7:0;;6399:35;;;:26;;:35;;;;;:43;;:51;;-1:-1:-1;;6399:51:0;;;6331:135;6482:22;6507:37;6526:10;6538:5;6507:18;:37::i;:::-;6628:5;;6482:62;;-1:-1:-1;;;;;;6610:23:0;;;6628:5;;6610:23;6607:717;;;6665:5;;6674:1;;6656:15;;-1:-1:-1;;;;;6665:5:0;6656:8;:15::i;:::-;:19;6653:177;;;6708:5;;6699:15;;-1:-1:-1;;;;;6708:5:0;6699:8;:15::i;:::-;;6653:177;;;6791:19;;6769:5;;;-1:-1:-1;;;;;6769:5:0;6763:12;;;;:5;:12;;;;;:25;:47;6653:177;6856:5;;-1:-1:-1;;;;;6856:5:0;6850:12;;;;:5;:12;;;;;:33;;:74;;1374:4;1312:3;6887:9;:23;:37;6850:74;;;;;;6943:8;:53;;6995:1;6955:41;;6943:53;;;;;;1774:4;7038:57;6943:53;7038:68;;;;7015:19;:91;;7038:68;;;;7015:91;;;;;6607:717;;;7147:8;:51;;1374:4;1312:3;7160:9;:23;:37;7147:51;;;;;;;1774:4;7240:57;7147:51;7240:68;;;;7217:19;:91;;7240:68;;;;7217:91;;;;;6607:717;7358:10;7352:17;;;;7394:4;7352:17;;;;;;;;:39;;;;;:32;;:39;;;;;;:46;;-1:-1:-1;;7352:46:0;;;;;;7413:51;;7442:14;7385:5;7413:16;:51::i;:::-;7498:45;;;7534:1;7498:45;;;;;;;;;;;-1:-1:-1;;;;;7498:45:0;;;7506:10;;7498:45;;;;;;;;;;;4792:2763;;3984:3578;;:::o;22998:345::-;23064:32;;:::i;:::-;23098;;:::i;:::-;23160:1;23148:188;23166:2;23163:1;:5;;;23148:188;;;-1:-1:-1;;;;;23211:18:0;;;;;;:5;:18;;;;;;;;:38;;;;;;:35;;;;:38;;;;;;;;23189:16;;:19;;;;;;;;;;;;;;;:60;;;;-1:-1:-1;;;;;23286:18:0;;;;;;:5;:18;;;;;;:38;;;;;;:35;;;;:38;;;;;;;23264:16;;:19;;;;;;;;;;:60;23170:3;;23148:188;;22716:274;-1:-1:-1;;;;;22868:18:0;;;;22792:21;22868:18;;;:5;:18;;;;;;;;:42;;;;;;:35;;;:42;;;;;;22940:35;;;;:42;;;;;;22868;;22716:274::o;10675:159::-;10818:8;;-1:-1:-1;;;;;10774:14:0;;10737:16;10774:14;;;:5;:14;;;;;:35;;;10737:16;;10818:8;10812:3;10774:41;10818:8;10774:52;;;;;;10675:159;-1:-1:-1;;10675:159:0:o;21459:349::-;21541:7;21561:240;-1:-1:-1;;;;;21599:18:0;;;21593:34;21599:18;;;21593:5;21599:18;;;;;;;;:27;;;;;;;21593:34;;;;;:56;;;;;;:49;;;;:56;;;;;;;21589:131;;;-1:-1:-1;;;;;;21677:18:0;;;;;;;:5;:18;;;;;;;;:27;;;21670:34;;21589:131;-1:-1:-1;;;;;21762:18:0;;;;;;;:5;:18;;;;;;;;:27;;;;;;21561:240;;1888:40;;;;;;;;;;;;;:::o;21098:349::-;21180:7;21200:240;-1:-1:-1;;;;;21238:18:0;;;21232:34;21238:18;;;21232:5;21238:18;;;;;;;;:27;;;;;;;21232:34;;;;;:56;;;;;;:49;;;;:56;;;;;;;21228:131;;;-1:-1:-1;;;;;;21316:18:0;;;;;;;:5;:18;;;;;;;;:27;;;21309:34;;21228:131;-1:-1:-1;;;;;21401:18:0;;;;;;;:5;:18;;;;;;;;:27;;;;;;21200:240;;1608:18;;;;:::o;10347:318::-;10397:4;10414:15;10432;10441:5;10432:8;:15::i;:::-;10458:6;:20;;;;;;;10517:19;;-1:-1:-1;;;;;10489:12:0;;10458:6;10489:12;;;-1:-1:-1;10489:12:0;;;;;;:25;;;:47;;;;10547:24;;;;:38;;;;;;10613:40;;10414:33;;-1:-1:-1;10489:12:0;10613:40;;;;;10414:33;;10613:40;;10458:6;10613:40;10414:33;10489:12;10613:40;;;10347:318;-1:-1:-1;;;;;;;10347:318:0:o;11113:1649::-;-1:-1:-1;;;;;11217:22:0;;;;;;;:5;:22;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:48;;27:10:-1;;23:18;;;45:23;;11217:66:0;;;;;;;;;;;-1:-1:-1;;;;;;11217:66:0;;;;;;;;;;;11300:38;;:55;11358:1;-1:-1:-1;11296:289:0;;;-1:-1:-1;;;;;11381:116:0;;;11440:22;;;;11424:1;11440:22;;;;;;;;:38;;;;;;;:31;;;;:38;;;;;;:48;;:55;11381:116;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11381:116:0;;;;;;;;11519:54;11534:15;11551:11;11564:1;11567:5;11519:14;:54::i;:::-;11512:61;;11296:289;11610:55;;;11653:1;11610:55;;;;;;;;;11663:1;11610:55;;;;;;-1:-1:-1;;;;;11610:55:0;;;;;;;;-1:-1:-1;;;;;;;;;;;11610:55:0;;;;;;;;11727:16;;;11741:1;11727:16;;;;;;;;;;-1:-1:-1;;;;;11676:22:0;;;;:5;:22;;;;;;:38;;;;;:31;;:38;;;;;;;:67;;;;:48;;;;;11727:16;11676:67;:::i;:::-;-1:-1:-1;;;;;;11759:22:0;;;;;;:5;:22;;;;;;;;:46;11797:7;;;11759:46;;;;:37;;:46;;;;;;;;11758:47;:70;;;;-1:-1:-1;11809:19:0;;;1267:2;11809:19;;11758:70;11754:156;;;-1:-1:-1;;;;;11845:22:0;;;;;;11894:4;11845:22;;;;;;;;:38;;;;;:31;;:38;;;;;;:46;;:53;;-1:-1:-1;;11845:53:0;;;;;;11754:156;11987:5;;-1:-1:-1;;;;;11968:24:0;;;11987:5;;11968:24;11964:791;;12009:27;12039:42;12058:15;12075:5;12039:18;:42::i;:::-;-1:-1:-1;;;;;12100:22:0;;;;;;;:5;:22;;;;;;;;:38;;;;;:31;;:38;;;;;:54;12009:72;;-1:-1:-1;12100:77:0;;;:54;;:77;12096:194;;-1:-1:-1;;;;;12198:22:0;;;;;;;:5;:22;;;;;;;;:38;;;;;:31;;:38;;;;;:76;;-1:-1:-1;;;;;;12198:76:0;;;;;;;;;;12096:194;-1:-1:-1;;;;;12318:22:0;;;;;;;:5;:22;;;;;;;;:38;;;;;;:31;;;;:38;;;;;;:52;;:54;;;;;;12392:69;;;;;;;;;;;;;;;;;;;;;12318:22;-1:-1:-1;;;;;;;;;;;12392:69:0;;;;;;;12476:61;12493:15;12510:19;12531:5;12476:16;:61::i;:::-;11964:791;;;;12585:5;;12570:44;;-1:-1:-1;;;;;12585:5:0;12592:11;12585:5;12608;12570:14;:44::i;:::-;12635:5;;;-1:-1:-1;;;;;12635:5:0;;;12629:12;;;;:5;:12;;;;;;;;:28;;;;;;:21;;;;:28;;;;;:42;;:44;;;;;;12702:5;;12693:50;;;;;;;;;;;;;;;;;;12629:12;;12702:5;;;;;-1:-1:-1;;;;;;;;;;;12693:50:0;;;;;;;11964:791;11113:1649;;;:::o;12772:4754::-;-1:-1:-1;;;;;12886:22:0;;;;;;:5;:22;;;;;;;;:44;;;;;;:37;;;;:44;;;;;;;;12878:88;;;;;-1:-1:-1;;;12878:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12983:22:0;;;;;;:5;:22;;;;;;;;:38;;;;;:31;;:38;;;;;;:58;:65;13051:1;-1:-1:-1;12979:2323:0;;;-1:-1:-1;;;;;13070:22:0;;;;;;;:5;:22;;;;;;;;:38;;;;;;;:31;;;;:38;;;;;:58;;27:10:-1;;23:18;;;45:23;;13070:76:0;;;;;;;;;;;-1:-1:-1;;;;;;13070:76:0;;;;;;;;;13226:38;;;;:65;;13167:126;;13210:1;13167:126;;;;;;;;;;;;;;;;;;13070:22;;:76;-1:-1:-1;;;;;;;;;;;13167:126:0;;;;;;;;;-1:-1:-1;;;;;13322:18:0;;;;;;;:5;:18;;;;;;;;:34;;;;;:27;;:34;;;;;:68;;-1:-1:-1;;;;;;13322:68:0;;;;;;;;;;13477:5;;;;;13458:24;13454:126;;;13510:54;13525:15;13542:11;13555:1;13558:5;13510:14;:54::i;13454:126::-;-1:-1:-1;;;;;13622:22:0;;;13608:11;13622:22;;;:5;:22;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:54;;;13699:10;;;;;;;;;:26;;;:19;;;:26;;;;;:47;;;;27:10:-1;;23:18;;;45:23;;13699:65:0;;;;;;;;;;;-1:-1:-1;;;;;;13699:65:0;;;;;;;;;;;13806:26;;:46;;:53;13622:54;;13894:8;;13893:102;;;;-1:-1:-1;;;;;;13926:10:0;;;;;;;:5;:10;;;;;;;;:26;;;;;:19;;:26;;;;;:46;:49;;:68;;;;:46;;:10;:49;;;;;;;;;;;;;;-1:-1:-1;;;;;13926:49:0;:68;13893:102;:193;;;;-1:-1:-1;;;;;;14017:10:0;;;;;;;:5;:10;;;;;;;;:26;;;;;:19;;:26;;;;;;:46;;:49;;:68;;;;:46;;:5;:49;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14017:49:0;:68;13893:193;13889:1314;;;-1:-1:-1;;;;;14111:22:0;;;;;;:5;:22;;;;;;;;:38;;;;;:31;;:38;;;;;;:58;;:65;:70;14107:264;;;14211:43;;;14242:1;14211:43;;;;;;;;;14252:1;14211:43;;;;;;-1:-1:-1;;;;;14211:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;14211:43:0;;;;;;;;14107:264;;;14308:43;;;14339:1;14308:43;;;;;;;;;14349:1;14308:43;;;;;;-1:-1:-1;;;;;14308:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;14308:43:0;;;;;;;;14107:264;13889:1314;;;14398:3;14405:1;14398:8;:20;;;;14410:3;14417:1;14410:8;14398:20;14397:115;;;;-1:-1:-1;;;;;;14444:10:0;;;;;;;:5;:10;;;;;;;;:26;;;;;:19;;:26;;;;;:46;:49;;:68;;;;:46;;:10;:49;;;;;;;;;;;;;;-1:-1:-1;;;;;14444:49:0;:68;14397:115;14393:810;;;-1:-1:-1;;;;;14537:22:0;;;;;;:5;:22;;;;;;;;:38;;;;;:31;;:38;;;;;;:58;;:65;:70;14533:264;;;14637:43;;;14668:1;14637:43;;;;;;;;;14678:1;14637:43;;;;;;-1:-1:-1;;;;;14637:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;14637:43:0;;;;;;;;14533:264;;;14734:43;;;14765:1;14734:43;;;;;;;;;14775:1;14734:43;;;;;;-1:-1:-1;;;;;14734:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;14734:43:0;;;;;;;;14393:810;;;14822:3;14829:1;14822:8;:80;;;;-1:-1:-1;;;;;;14834:10:0;;;;;;;:5;:10;;;;;;;;:26;;;;;:19;;:26;;;;;;:46;;:49;;:68;;;;:46;;:5;:49;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14834:49:0;:68;14822:80;14818:385;;;-1:-1:-1;;;;;14927:22:0;;;;;;:5;:22;;;;;;;;:38;;;;;:31;;:38;;;;;;:58;;:65;:70;14923:265;;;15027:43;;;15058:1;15027:43;;;;;;;;;15068:1;15027:43;;;;;;-1:-1:-1;;;;;15027:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;15027:43:0;;;;;;;;14923:265;;;15124:43;;;15155:1;15124:43;;;;;;;;;15165:1;15124:43;;;;;;-1:-1:-1;;;;;15124:43:0;;;;;;;;-1:-1:-1;;;;;;;;;;;15124:43:0;;;;;;;;14923:265;15238:52;15266:11;15279:3;15284:5;15238:27;:52::i;:::-;15231:59;;;;12979:2323;-1:-1:-1;;;;;15322:22:0;;;;;;;:5;:22;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:59;;;27:10:-1;;23:18;;;45:23;;15322:77:0;;;;;;;;;;-1:-1:-1;;;;;;15322:77:0;;;;;;;15416:38;;:49;;;;:63;15412:1082;;-1:-1:-1;;;;;15584:22:0;;;;;;:5;:22;;;;;;;;:38;;;;;:31;;:38;;;;;;:58;;:61;;:58;;:5;:61;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15501:22:0;;;;;15584:61;15501:22;;;;;;;:38;;;;;:31;;:38;;;;;;:58;;;:61;;15584;;;;;15501:58;;:61;;;;;;;;;;;;;;-1:-1:-1;;;;;15501:61:0;:144;15500:300;;;;-1:-1:-1;;;;;;15750:22:0;;;;;;;:5;:22;;;;;;;;:38;;;;;:31;;:38;;;;;:49;;;;15668:58;;:61;;15750:49;;;;;15668:58;15750:22;15668:61;;;;;;;;;;;;;;-1:-1:-1;;;;;15668:61:0;:131;15500:300;15496:987;;;15823:51;15832:11;15845:15;15862:5;15869:4;15823:8;:51::i;:::-;15900:64;15928:11;15941:15;15958:5;15900:27;:64::i;15496:987::-;-1:-1:-1;;;;;16073:22:0;;;;;;;:5;:22;;;;;;;;:38;;;;;:31;;:38;;;;;:49;;;;15990:58;;:61;;16073:49;;;;;15990:58;16073:22;15990:61;;;;;;;;;;;;;;-1:-1:-1;;;;;15990:61:0;:132;15986:497;;;16143:51;16152:11;16165:15;16182:5;16189:4;16143:8;:51::i;15986:497::-;16325:52;16334:11;16347:15;16364:5;16371;16325:8;:52::i;15986:497::-;-1:-1:-1;;;;;16510:22:0;;;;;;;:5;:22;;;;;;;;:38;;;;;:31;;:38;;;;;;:58;;:61;;:76;;;;:58;;:5;:61;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16510:61:0;:76;16506:499;;;16603:52;16612:11;16625:15;16642:5;16649;16603:8;:52::i;16506:499::-;-1:-1:-1;;;;;16763:22:0;;;;;;;:5;:22;;;;;;;;:38;;;;;:31;;:38;;;;;:58;:61;;:76;;;;:58;;:22;:61;;;;;;;;;;;;;;-1:-1:-1;;;;;16763:61:0;:76;16759:246;;;16856:51;16865:11;16878:15;16895:5;16902:4;16856:8;:51::i;16759:246::-;-1:-1:-1;;;;;17164:22:0;;17158:68;17164:22;;;17158:5;17164:22;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;:61;;17158:5;;:68;:5;;17164:61;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17164:61:0;;;17158:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;17164:61;17158:104;;;:111;17035:22;;;;;;;;;;;:38;;;:31;;:38;;;;;;:58;;:61;;17164;;17035;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17035:61:0;17029:68;;;;;;;;;;;;;;;:84;;;;;:77;;:84;;;;;17035:61;17029:104;:111;:240;17025:409;;17286:52;17295:11;17308:15;17325:5;17332;17286:8;:52::i;:::-;17025:409;;;17371:51;17380:11;17393:15;17410:5;17417:4;17371:8;:51::i;:::-;17454:64;17482:11;17495:15;17512:5;17454:27;:64::i;25574:783::-;25683:16;25701:21;25726:50;25742:11;25755:5;25762:6;25770:5;25726:15;:50::i;:::-;25829:31;:17;;25787:18;25829:17;;;:10;:17;;;;;;;25896:50;;25682:94;;-1:-1:-1;25682:94:0;;-1:-1:-1;1374:4:0;1312:3;25829:31;;:45;25808:67;;;;-1:-1:-1;;;;;25896:35:0;;;:50;;;;;25808:67;;25896:50;25787:18;25896:50;25808:67;25896:35;:50;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;25957:7:0;;;:45;;;-1:-1:-1;;;25957:45:0;;-1:-1:-1;;;;;25957:45:0;;;;;;;;;;;;;;;:7;;;;;:16;;:45;;;;;;;;;;;;;;;;;;:7;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;25957:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25957:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;26063:1:0;26053:11;;;;26050:170;;;-1:-1:-1;;;;;26079:15:0;;;;;;:5;:15;;;;;;;;:39;;;;;:32;;:39;;;;;:56;;;;;;26050:170;;;-1:-1:-1;;;;;26164:15:0;;;;;;:5;:15;;;;;;;;:39;;;;;:32;;:39;;;;;:56;;;;;;26050:170;26247:16;26243:107;;;26285:53;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26285:53:0;;;;;;;;;;;;;;;;;;;26243:107;25574:783;;;;;;;:::o;19125:1961::-;-1:-1:-1;;;;;19244:22:0;;;;;;:5;:22;;;;;;;;:38;;;;;:31;;:38;;;;;:59;;:66;19313:1;-1:-1:-1;19240:178:0;;;19352:54;19367:15;19384:11;19397:1;19400:5;19352:14;:54::i;19240:178::-;-1:-1:-1;;;;;19466:22:0;;;19460:61;19466:22;;;19460:5;19466:22;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:54;;;;19460:61;;;;;;;;:77;;;:70;;;;:77;;;;;;:97;19438:119;;;;;;;;;;;;;;;;;:19;;:119;;;19460:97;19438:119;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19438:119:0;;;;;;;;;;;;;;;;;;;;;;;19582:2;:9;19595:1;19582:14;19578:501;;;19626:15;-1:-1:-1;;;;;19617:24:0;:2;19620:1;19617:5;;;;;;;;;;;;;;-1:-1:-1;;;;;19617:24:0;;:69;;;;19671:15;-1:-1:-1;;;;;19662:24:0;:2;19665:1;19662:5;;;;;;;;;;;;;;-1:-1:-1;;;;;19662:24:0;;19617:69;19613:455;;;-1:-1:-1;;;;;19713:22:0;;;19707:61;19713:22;;;19707:5;19713:22;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:54;;;;19707:61;;;;;;;;:77;;;:70;;;;:77;;;;;;:88;;:106;;-1:-1:-1;;;;;;19707:106:0;;;;;;19613:455;;;19839:2;:9;19852:1;19839:14;19835:233;;;19887:15;-1:-1:-1;;;;;19878:24:0;:2;19881:1;19878:5;;;;;;;;;;;;;;-1:-1:-1;;;;;19878:24:0;;19874:179;;;-1:-1:-1;;;;;19933:22:0;;;19927:61;19933:22;;;19927:5;19933:22;;;;;;;;:38;;;;;;:31;;;;:38;;;;;:54;;;;19927:61;;;;;;;;:77;;;:70;;;;:77;;;;;;:88;;:106;;-1:-1:-1;;;;;;19927:106:0;;;;;;19874:179;20160:16;;;20174:1;20160:16;;;;;;;;;;-1:-1:-1;;;;;20099:22:0;;;;:5;:22;;;;;;:38;;;;;:31;;:38;;;;;;;:77;;;;:58;;;;;20160:16;20099:77;:::i;:::-;-1:-1:-1;20249:16:0;;;20263:1;20249:16;;;;;;;;;;-1:-1:-1;;;;;20187:22:0;;;;:5;:22;;;;;:38;;;;;:31;;:38;;;;;;:78;;;;:59;;;;;20249:16;20187:78;:::i;:::-;-1:-1:-1;;;;;;20276:22:0;;20336:1;20276:22;;;:5;:22;;;;;;;;:38;;;;;;:31;;;:38;;;;;:49;;:62;;-1:-1:-1;;;;;;20276:62:0;;;20394:7;;;20356:46;;;;:37;;:46;;;;;;;;20355:47;:70;;;;-1:-1:-1;20406:19:0;;;1267:2;20406:19;;20355:70;20351:156;;;-1:-1:-1;;;;;20442:22:0;;;;;;20491:4;20442:22;;;;;;;;:38;;;;;:31;;:38;;;;;;:46;;:53;;-1:-1:-1;;20442:53:0;;;;;;20351:156;-1:-1:-1;;;;;20519:22:0;;;;;;;:5;:22;;;;;;;;:38;;;;;:31;;:38;;;;;;:52;;:54;;;;;;;20659:5;;;;;20640:24;20636:443;;20681:27;20711:42;20730:15;20747:5;20711:18;:42::i;:::-;20775:69;;;20835:1;20775:69;;;;;;;;;;;20681:72;;-1:-1:-1;;;;;;20775:69:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;20775:69:0;;;;;;;;20859:61;20876:15;20893:19;20914:5;20859:16;:61::i;:::-;20636:443;;;;20967:5;;20958:50;;;20999:1;20958:50;;;;;;;;;;;-1:-1:-1;;;;;20958:50:0;;;;20982:1;;20967:5;;;-1:-1:-1;;;;;;;;;;;20958:50:0;;;;;;;;;;21038:5;;21023:44;;-1:-1:-1;;;;;21038:5:0;21045:11;21058:1;21061:5;21023:14;:44::i;:::-;19125:1961;;;;:::o;17534:1579::-;17644:2;17639:1467;;-1:-1:-1;;;;;17669:22:0;;17663:68;17669:22;;;17663:5;17669:22;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;:61;;17663:5;;:68;;;17669:61;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17669:61:0;;;17663:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;17669:61;17663:104;;;27:10:-1;;23:18;;;45:23;;17663:122:0;;;;;;;;;-1:-1:-1;;;;;;17663:122:0;;;;;;;17831:22;;;;;;;;;;;:38;;;:31;:38;;;;;:58;;;:61;;:58;;17669:61;17831;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17916:22:0;;;;;17831:61;17916:22;;;;;;;:38;;;;;:31;;:38;;;;;;:58;;:61;;17831;;;;17805:218;;;;-1:-1:-1;;;;;;;;;;;17805:218:0;17894:1;;17897:5;;17831:61;;;;17916;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17916:61:0;17910:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;;17916:61;17910:104;:111;17805:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18043:176:0;;;18106:68;18112:22;;;18106:5;18112:22;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;:61;;18043:176;;;;;-1:-1:-1;;;;;;;;;;;18043:176:0;18086:1;;18089:5;;18106;;:68;;18112:61;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18112:61:0;18106:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;;18112:61;18106:104;:111;18043:176;;;;;;;;;;;;;;;;;18096:1;:122;;;18043:176;;;;;;;;;;;;;;-1:-1:-1;;;;;18301:22:0;;;;;;:5;:22;;;;;;;;:38;;;;;:31;;:38;;;;;:58;:61;;:58;;:22;:61;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18248:18:0;;;;;18301:61;18248:18;;;;;;:34;;;;;:27;;:34;;;;;;;:114;;-1:-1:-1;;;;;;18248:114:0;18301:61;;;;18248:114;;;17639:1467;;;-1:-1:-1;;;;;18401:22:0;;18395:68;18401:22;;;18395:5;18401:22;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;:61;;18395:5;;:68;:5;;18401:61;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18401:61:0;;;18395:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;18401:61;18395:104;;;27:10:-1;;23:18;;;45:23;;18395:122:0;;;;;;;;;-1:-1:-1;;;;;;18395:122:0;;;;;;;18563:22;;;;;;;;;;;:38;;;:31;:38;;;:58;;:61;;:58;;18401:61;18563;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18648:22:0;;;;;18563:61;18648:22;;;;;;;:38;;;;;:31;;:38;;;;;;:58;;:61;;18563;;;;18537:218;;;;-1:-1:-1;;;;;;;;;;;18537:218:0;18626:1;;18629:5;;18563:61;;;;18648;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18648:61:0;18642:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;;18648:61;18642:104;:111;18537:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18775:176:0;;;18838:68;18844:22;;;18838:5;18844:22;;;;;;;;:38;;;;;:31;;:38;;;;;:58;;:61;;18775:176;;;;;-1:-1:-1;;;;;;;;;;;18775:176:0;18818:1;;18821:5;;18838;;;;18844:61;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18844:61:0;18838:68;;;;;;;;;;;;;;;:84;;;;;;:77;;;;:84;;;;;;18844:61;18838:104;:111;18775:176;;;;;;;;;;;;;;;;;18828:1;:122;;;18775:176;;;;;;;;;;;;;;-1:-1:-1;;;;;19033:22:0;;;;;;:5;:22;;;;;;;;:38;;;;;:31;;:38;;;;;;:58;;:61;;:58;;:5;:61;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18980:18:0;;;;;19033:61;18980:18;;;;;;:34;;;;;:27;;:34;;;;;;;:114;;-1:-1:-1;;;;;;18980:114:0;19033:61;;;;18980:114;;;17534:1579;;;;:::o;24296:1073::-;24400:7;;24445:11;24400:7;24513:1;24503:11;;;;24499:863;;;24531:394;-1:-1:-1;;;;;24567:15:0;;;;;;:5;:15;;;;;;;;:31;;;;;;:24;;;;:31;;;;;;:39;;;;24563:347;;;24636:43;;;24670:1;24636:43;;;;;;;;;;;-1:-1:-1;;;;;24636:43:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24759:15:0;;;;;;;24721:4;24759:15;;;;;;;;:31;;;;;:24;;:31;;;;;;:47;;;;;24563:347;;;24863:8;;-1:-1:-1;24873:16:0;-1:-1:-1;24855:35:0;;24563:347;24531:394;;24499:863;-1:-1:-1;;;;;24993:15:0;;;;;;:5;:15;;;;;;;;:31;;;;;;:24;;;;:31;;;;;;:39;;;;24989:347;;;25062:43;;;25096:1;25062:43;;;;;;;;;;;-1:-1:-1;;;;;25062:43:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25185:15:0;;;;;;;25147:4;25185:15;;;;;;;;:31;;;;;:24;;:31;;;;;;:47;;;;;24957:394;;24296:1073;;;;;;;;:::o;321:26217::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;321:26217:0;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;321:26217:0;;;-1:-1:-1;;321:26217:0:o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;321:26217:0;-1:-1:-1;;;;;321:26217:0;;;;;;;;;;;-1:-1:-1;321:26217:0;;;;;;;-1:-1:-1;321:26217:0;;;-1:-1:-1;321:26217:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;321:26217:0;;;;;;;;;:::o

Swarm Source

bzzr://8f21428330e32ee4ffffece52759c18c5cdafea09c910a839a51256a125b7db6

Block Transaction 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
[ 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.