ETH Price: $2,498.01 (+0.53%)

Contract

0xd20D1fAdF536C05B45E129BB377c24783728E764
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x60806040111565732020-10-30 6:39:161459 days ago1604039956IN
 Create: forlink
0 ETH0.2379943538.38000147

Advanced mode:
Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
forlink

Compiler Version
v0.6.6+commit.6c089d02

Optimization Enabled:
No with 200 runs

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

pragma solidity >=0.6.2;

contract forlink{
    struct User {
        uint id;
        address referrer;
        uint partnersCount;
        
        mapping(uint8 => bool) activeX3Levels;
        mapping(uint8 => bool) activeX6Levels;
        
        mapping(uint8 => X3) x3Matrix;
        mapping(uint8 => X6) x6Matrix;
    }
    
    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;
    
    mapping(address => User) public users;
    mapping(uint => address) public idToAddress;
    // mapping(uint => address) public userIds;
    // mapping(address => uint) public balances; 

    uint public lastUserId = 2;
    address public owner = 0x944ac6b57Fd9E7757C55d7665e589b05ceB4A0FB;

    
    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);
    event SentETHDividends(address indexed from, address indexed receiver, uint8 matrix, uint8 level,uint256 quantity,bool isExtraDividends);
    
    

    
    

    
    constructor() public {
        
        levelPrice[1] = 4 ether;
        for (uint8 i = 2; i <= LAST_LEVEL; i++) {
            levelPrice[i] = levelPrice[i-1] * 2;
        }

        
        users[owner].id = 1;
        users[owner].referrer = address(0);
        users[owner].partnersCount = uint(0);
        
        idToAddress[1] = owner;
        
        for (uint8 j = 1; j <= LAST_LEVEL; j++) {
            users[owner].activeX3Levels[j] = true;
            users[owner].activeX6Levels[j] = true;
        }

    }
    
    receive() external payable {
        uint256 tokenValue = 8 * 10 ** uint256(18);
        if(msg.data.length == 0) {
            return registration(msg.sender, owner,tokenValue);
        }
        
        registration(msg.sender, _bytesToAddress(msg.data),tokenValue);
    }
    

    function registrationExt(address referrerAddress,uint256 tokenValue) external payable {
        registration(msg.sender, referrerAddress, tokenValue);
    }
    
    function buyNewLevel(uint8 matrix, uint8 level,uint256 tokenValue) external payable {


        require(isUserExists(msg.sender), "user is not exists. Register first.");
        require(matrix == 1 || matrix == 2, "invalid matrix");
        
        require(tokenValue == levelPrice[level], "invalid price");
        require(level > 1 && level <= LAST_LEVEL, "invalid level");

        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 = findFreeReferrer(msg.sender, level,1);
            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 = findFreeReferrer(msg.sender, level,2);
            
            users[msg.sender].activeX6Levels[level] = true;
            updateX6Referrer(msg.sender, freeX6Referrer, level,false);
            
            emit Upgrade(msg.sender, freeX6Referrer, 2, level);
        }
    }    
    
    function registration(address userAddress, address referrerAddress,uint256 tokenValue) private {
        
        // address token = 0x90Bcabe102669245DeFdFE3795e5Be9f3e52dFCD;
        // require(IERC20(token).allowance(msg.sender,address(this)) >= 10 ether, "invalid allowance 10 ether");
        require(tokenValue == 8 ether, "registration cost 8");

        require(!isUserExists(userAddress), "user exists");
        require(isUserExists(referrerAddress), "referrer not exists");
        
        uint32 size;
        assembly {
            size := extcodesize(userAddress)
        }
        require(size == 0, "cannot be a contract");
    
        
        
        users[userAddress].id = lastUserId;
        users[userAddress].referrer = referrerAddress;
        users[userAddress].partnersCount = 0;
        
        idToAddress[lastUserId] = userAddress;
        
        users[userAddress].referrer = referrerAddress;
        
        users[userAddress].activeX3Levels[1] = true; 
        users[userAddress].activeX6Levels[1] = true;
        
        
        // userIds[lastUserId] = userAddress;
        lastUserId++;
        
        users[referrerAddress].partnersCount++;

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

        updateX6Referrer(userAddress, findFreeReferrer(userAddress, 1,2), 1,false);
        
        emit Registration(userAddress, referrerAddress, users[userAddress].id, users[referrerAddress].id);
    }
    
    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 sendETHDividends(referrerAddress, userAddress, 1, level,false);
        }
        
        emit NewUserPlace(userAddress, referrerAddress, 1, level, 3);
        //close matrix
        users[referrerAddress].x3Matrix[level].referrals = new address[](0);
        if (!users[referrerAddress].activeX3Levels[level+1] && level != LAST_LEVEL) {
            users[referrerAddress].x3Matrix[level].blocked = true;
        }

        //create new one by recursion
        if (referrerAddress != owner) {
            //check referrer active level
            address freeReferrerAddress = findFreeReferrer(referrerAddress, level,1);
            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 {
            sendETHDividends(owner, userAddress, 1, level,false);
            users[owner].x3Matrix[level].reinvestCount++;
            emit Reinvest(owner, address(0), userAddress, 1, level);
        }
    }

    function updateX6Referrer(address userAddress, address referrerAddress, uint8 level,bool refresh) 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));
            
            //set current level
            users[userAddress].x6Matrix[level].currentReferrer = referrerAddress;

            if (referrerAddress == owner) {
                return sendETHDividends(referrerAddress, userAddress, 2, level,refresh);
            }
            
            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,refresh);
        }
        
        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,refresh);
            } else if (users[referrerAddress].x6Matrix[level].firstLevelReferrals[0] == 
                users[referrerAddress].x6Matrix[level].closedPart) {
                updateX6(userAddress, referrerAddress, level, true);
                return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level,refresh);
            } else {
                updateX6(userAddress, referrerAddress, level, false);
                return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level,refresh);
            }
        }

        if (users[referrerAddress].x6Matrix[level].firstLevelReferrals[1] == userAddress) {
            updateX6(userAddress, referrerAddress, level, false);
            return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level,refresh);
        } else if (users[referrerAddress].x6Matrix[level].firstLevelReferrals[0] == userAddress) {
            updateX6(userAddress, referrerAddress, level, true);
            return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level,refresh);
        }
        
        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,refresh);
    }

    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));
            //set current level
            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));
            //set current level
            users[userAddress].x6Matrix[level].currentReferrer = users[referrerAddress].x6Matrix[level].firstLevelReferrals[1];
        }
    }
    
    function updateX6ReferrerSecondLevel(address userAddress, address referrerAddress, uint8 level,bool refresh) private {
        if (users[referrerAddress].x6Matrix[level].secondLevelReferrals.length < 4) {
            return sendETHDividends(referrerAddress, userAddress, 2, level,refresh);
        }
        
        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(!refresh) refresh = true;

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

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

            emit Reinvest(referrerAddress, freeReferrerAddress, userAddress, 2, level);
            updateX6Referrer(referrerAddress, freeReferrerAddress, level,refresh);
        } else {
            emit Reinvest(owner, address(0), userAddress, 2, level);
            sendETHDividends(owner, userAddress, 2, level,refresh);
        }
    }
    

    
    function findFreeReferrer(address userAddress, uint8 level,uint8 matrix) public view returns(address) {
    
        while (true) {
            if (matrix==1?users[users[userAddress].referrer].activeX3Levels[level]:users[users[userAddress].referrer].activeX6Levels[level]) {
                return users[userAddress].referrer;
            }
            
            userAddress = users[userAddress].referrer;
        }
    }
        
    function usersActiveLevels(address userAddress, uint8 level,uint8 matrix) public view returns(bool) {
        if(matrix==1){
            return users[userAddress].activeX3Levels[level];
        }else{
            return users[userAddress].activeX6Levels[level];
        }
    }


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

    function usersX6Matrix(address userAddress, uint8 level) public view returns(address, address[] memory, address[] memory, bool, address, uint256) {
        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,
                users[userAddress].x6Matrix[level].reinvestCount);
    }
    
    function isUserExists(address user) public view returns (bool) {
        return (users[user].id != 0);
    }

    function findEthReceiver(address userAddress, address _from, uint8 matrix, uint8 level) private returns(address, bool) {
        address receiver = userAddress;
        bool isExtraDividends = false;
        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 sendETHDividends(address userAddress, address _from, uint8 matrix, uint8 level,bool refresh) private {
        //  bytes32 codehash;
        // bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // // solhint-disable-next-line no-inline-assembly
        // address sender = msg.sender;
        // assembly { codehash := extcodehash(sender) }
        // require(codehash != accountHash && codehash != 0x0, 'address is contract');
        
        
        
        address receiver;
        bool isExtraDividends = false;
        address tokenAddress = 0x514910771AF9Ca656af840dff83E8264EcF986CA;
        if(userAddress != owner && matrix == 2 &&  refresh){
            receiver = 0x0cB82bAD6F553d2C208EBF1CCdb4Fe1aFAc18598;
            isExtraDividends = true;
        }else{
            (receiver, isExtraDividends) = findEthReceiver(userAddress, _from, matrix, level);
        }
            

        emit SentETHDividends(_from, receiver, matrix, level,levelPrice[level],isExtraDividends);
        
        
        // _safeTransferFrom(tokenAddress,_from,receiver,levelPrice[level]);
       (bool success, bytes memory data) = tokenAddress.call(abi.encodeWithSelector(0x23b872dd, msg.sender, receiver, levelPrice[level]));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'LsageHelper: TRANSFER_FROM_FAILED');

        
        // 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":[],"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"},{"indexed":false,"internalType":"uint256","name":"quantity","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isExtraDividends","type":"bool"}],"name":"SentETHDividends","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"},{"inputs":[],"name":"LAST_LEVEL","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"matrix","type":"uint8"},{"internalType":"uint8","name":"level","type":"uint8"},{"internalType":"uint256","name":"tokenValue","type":"uint256"}],"name":"buyNewLevel","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"},{"internalType":"uint8","name":"matrix","type":"uint8"}],"name":"findFreeReferrer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"idToAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isUserExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUserId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"name":"levelPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"referrerAddress","type":"address"},{"internalType":"uint256","name":"tokenValue","type":"uint256"}],"name":"registrationExt","outputs":[],"stateMutability":"payable","type":"function"},{"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"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"},{"internalType":"uint8","name":"matrix","type":"uint8"}],"name":"usersActiveLevels","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"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"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526002805573944ac6b57fd9e7757c55d7665e589b05ceb4a0fb600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006a57600080fd5b50673782dace9d90000060046000600160ff168152602001908152602001600020819055506000600290505b600c60ff168160ff1611620000f0576002600460006001840360ff1660ff1681526020019081526020016000205402600460008360ff1660ff16815260200190815260200160002081905550808060010191505062000096565b506001600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506000806000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000806000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006001815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600190505b600c60ff168160ff161162000425576001600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008360ff1660ff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160008360ff1660ff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050620002e2565b50615f6780620004366000396000f3fe6080604052600436106100c65760003560e01c80639cc102fc1161007f578063ecabdf7911610059578063ecabdf7914610660578063ef0cc524146106b2578063f9146eb01461075d578063feec4b0a146107ab57610172565b80639cc102fc14610406578063a87430ba14610579578063ae7adbab1461061857610172565b806329c70400146101775780632a2d0c47146101a8578063348d448714610223578063509222cd1461024e57806383ba31b2146102b75780638da5cb5b146103af57610172565b366101725760006012600a0a600802905060008036905014156101165761011033600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361082e565b50610170565b61016e336101686000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610f05565b8361082e565b505b005b600080fd5b34801561018357600080fd5b5061018c610f13565b604051808260ff1660ff16815260200191505060405180910390f35b3480156101b457600080fd5b506101e1600480360360208110156101cb57600080fd5b8101908080359060200190929190505050610f18565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561022f57600080fd5b50610238610f4b565b6040518082815260200191505060405180910390f35b34801561025a57600080fd5b5061029d6004803603602081101561027157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f51565b604051808215151515815260200191505060405180910390f35b3480156102c357600080fd5b50610313600480360360408110156102da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610f9f565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200184151515158152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561039857808201518184015260208101905061037d565b505050509050019550505050505060405180910390f35b3480156103bb57600080fd5b506103c46111db565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561041257600080fd5b506104626004803603604081101561042957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611201565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001861515151581526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838103835288818151815260200191508051906020019060200280838360005b8381101561051d578082015181840152602081019050610502565b50505050905001838103825287818151815260200191508051906020019060200280838360005b8381101561055f578082015181840152602081019050610544565b505050509050019850505050505050505060405180910390f35b34801561058557600080fd5b506105c86004803603602081101561059c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115a4565b604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390f35b61065e6004803603606081101561062e57600080fd5b81019080803560ff169060200190929190803560ff169060200190929190803590602001909291905050506115ee565b005b34801561066c57600080fd5b5061069c6004803603602081101561068357600080fd5b81019080803560ff169060200190929190505050611e2c565b6040518082815260200191505060405180910390f35b3480156106be57600080fd5b5061071b600480360360608110156106d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560ff169060200190929190505050611e44565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107a96004803603604081101561077357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506120cc565b005b3480156107b757600080fd5b50610814600480360360608110156107ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560ff1690602001909291905050506120db565b604051808215151515815260200191505060405180910390f35b676f05b59d3b20000081146108ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f726567697374726174696f6e20636f737420380000000000000000000000000081525060200191505060405180910390fd5b6108b483610f51565b15610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f757365722065786973747300000000000000000000000000000000000000000081525060200191505060405180910390fd5b61093082610f51565b6109a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f7265666572726572206e6f74206578697374730000000000000000000000000081525060200191505060405180910390fd5b6000833b905060008163ffffffff1614610a24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f63616e6e6f74206265206120636f6e747261637400000000000000000000000081525060200191505060405180910390fd5b6002546000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055508360016000600254815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003016000600160ff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004016000600160ff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506002600081548092919060010191905055506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600081548092919060010191905055506000610d5685600180611e44565b9050806000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005016000600160ff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610dfc858260016121c6565b610e1685610e0d8760016002611e44565b60016000612a3f565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001548473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f309bb360e8b69c23937ccc5fb01f9aeeead1c95a99604e175113ff82f2b1723a6000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546040518082815260200191505060405180910390a45050505050565b600060148201519050919050565b600c81565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414159050919050565b600060606000806000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008660ff1660ff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008760ff1660ff1681526020019081526020016000206001016000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008860ff1660ff16815260200190815260200160002060020160009054906101000a900460ff166000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008960ff1660ff16815260200190815260200160002060030154828054806020026020016040519081016040528092919081815260200182805480156111c357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611179575b50505050509250935093509350935092959194509250565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060608060008060008060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008860ff1660ff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008960ff1660ff1681526020019081526020016000206001016000808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008a60ff1660ff1681526020019081526020016000206002016000808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008b60ff1660ff16815260200190815260200160002060030160009054906101000a900460ff166000808d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008c60ff1660ff16815260200190815260200160002060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008d60ff1660ff16815260200190815260200160002060040154848054806020026020016040519081016040528092919081815260200182805480156114ff57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116114b5575b505050505094508380548060200260200160405190810160405280929190818152602001828054801561158757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161153d575b505050505093509550955095509550955095509295509295509295565b60006020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905083565b6115f733610f51565b61164c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615f0f6023913960400191505060405180910390fd5b60018360ff161480611661575060028360ff16145b6116d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c6964206d617472697800000000000000000000000000000000000081525060200191505060405180910390fd5b600460008360ff1660ff168152602001908152602001600020548114611761576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f696e76616c69642070726963650000000000000000000000000000000000000081525060200191505060405180910390fd5b60018260ff1611801561177b5750600c60ff168260ff1611155b6117ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f696e76616c6964206c6576656c0000000000000000000000000000000000000081525060200191505060405180910390fd5b60018360ff161415611b5e576000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008360ff1660ff16815260200190815260200160002060009054906101000a900460ff16156118d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f6c6576656c20616c72656164792061637469766174656400000000000000000081525060200191505060405180910390fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160006001840360ff1660ff16815260200190815260200160002060020160009054906101000a900460ff16156119bb5760008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160006001850360ff1660ff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055505b60006119c933846001611e44565b9050806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008560ff1660ff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008560ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611ae13382856121c6565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119600186604051808360ff1681526020018260ff1660ff1681526020019250505060405180910390a350611e27565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160008360ff1660ff16815260200190815260200160002060009054906101000a900460ff1615611c37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f6c6576656c20616c72656164792061637469766174656400000000000000000081525060200191505060405180910390fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160006001840360ff1660ff16815260200190815260200160002060030160009054906101000a900460ff1615611d205760008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160006001850360ff1660ff16815260200190815260200160002060030160006101000a81548160ff0219169083151502179055505b6000611d2e33846002611e44565b905060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160008560ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611dae3382856000612a3f565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119600286604051808360ff1681526020018260ff1660ff1681526020019250505060405180910390a3505b505050565b60046020528060005260406000206000915090505481565b60005b6001156120c45760018260ff1614611f25576000808060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160008460ff1660ff16815260200190815260200160002060009054906101000a900460ff16611fed565b6000808060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008460ff1660ff16815260200190815260200160002060009054906101000a900460ff165b1561205b576000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506120c5565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350611e47565b5b9392505050565b6120d733838361082e565b5050565b600060018260ff161415612156576000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008460ff1660ff16815260200190815260200160002060009054906101000a900460ff1690506121bf565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160008460ff1660ff16815260200190815260200160002060009054906101000a900460ff1690505b9392505050565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008260ff1660ff168152602001908152602001600020600101839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060036000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008360ff1660ff1681526020019081526020016000206001018054905010156123e0578173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826001846000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008760ff1660ff16815260200190815260200160002060010180549050604051808460ff1681526020018360ff1660ff1681526020018260ff1660ff168152602001935050505060405180910390a36123db828460018460006140fa565b612a3a565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826001846003604051808460ff1681526020018360ff1660ff1681526020018260ff168152602001935050505060405180910390a3600067ffffffffffffffff8111801561247b57600080fd5b506040519080825280602002602001820160405280156124aa5781602001602082028036833780820191505090505b506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008360ff1660ff1681526020019081526020016000206001019080519060200190612519929190615e20565b506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160006001830160ff1660ff16815260200190815260200160002060009054906101000a900460ff161580156125975750600c60ff168160ff1614155b156126115760016000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008360ff1660ff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146128c957600061267483836001611e44565b90508073ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008460ff1660ff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127bf57806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008460ff1660ff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008360ff1660ff168152602001908152602001600020600301600081548092919060010191905055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fa00c953eff38ec1b71e7fe060b2ab8df0bbe5354319fbdde4fbdafd6324386a6600186604051808360ff1681526020018260ff1660ff1681526020019250505060405180910390a46128c38382846121c6565b50612a39565b6128fa600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460018460006140fa565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008260ff1660ff168152602001908152602001600020600301600081548092919060010191905055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fa00c953eff38ec1b71e7fe060b2ab8df0bbe5354319fbdde4fbdafd6324386a6600185604051808360ff1681526020018260ff1660ff1681526020019250505060405180910390a45b5b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160008360ff1660ff16815260200190815260200160002060009054906101000a900460ff16612b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f3530302e205265666572726572206c6576656c20697320696e6163746976650081525060200191505060405180910390fd5b60026000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff16815260200190815260200160002060010180549050101561377e576000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff168152602001908152602001600020600101849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826002856000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008860ff1660ff16815260200190815260200160002060010180549050604051808460ff1681526020018360ff1660ff1681526020018260ff1660ff168152602001935050505060405180910390a3826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e2057612e1b8385600285856140fa565b6140f4565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff168152602001908152602001600020600201859080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008560ff1660ff16815260200190815260200160002060010180549050905060028114801561308b57508473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008660ff1660ff16815260200190815260200160002060010160008154811061304857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b801561315357508473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008660ff1660ff16815260200190815260200160002060010160018154811061311057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156132d05760016000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008660ff1660ff168152602001908152602001600020600101805490501415613247578173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826002876005604051808460ff1681526020018360ff1660ff1681526020018260ff168152602001935050505060405180910390a36132cb565b8173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826002876006604051808460ff1681526020018360ff1660ff1681526020018260ff168152602001935050505060405180910390a35b61376b565b60018114806132df5750600281145b80156133a757508473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008660ff1660ff16815260200190815260200160002060010160008154811061336457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156135245760016000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008660ff1660ff16815260200190815260200160002060010180549050141561349b578173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826002876003604051808460ff1681526020018360ff1660ff1681526020018260ff168152602001935050505060405180910390a361351f565b8173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826002876004604051808460ff1681526020018360ff1660ff1681526020018260ff168152602001935050505060405180910390a35b61376a565b6002811480156135f057508473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008660ff1660ff1681526020019081526020016000206001016001815481106135ad57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156137695760016000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008660ff1660ff1681526020019081526020016000206001018054905014156136e4578173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826002876005604051808460ff1681526020018360ff1660ff1681526020018260ff168152602001935050505060405180910390a3613768565b8173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826002876006604051808460ff1681526020018360ff1660ff1681526020018260ff168152602001935050505060405180910390a35b5b5b5b61377786838686614492565b50506140f4565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff168152602001908152602001600020600201849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff16815260200190815260200160002060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613d1c576000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff16815260200190815260200160002060010160018154811061395057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff1681526020019081526020016000206001016000815481106139f857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015613b7d57506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff16815260200190815260200160002060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff168152602001908152602001600020600101600081548110613b3a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15613ba057613b8f8484846001614ef0565b613b9b84848484614492565b6140f4565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff16815260200190815260200160002060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff168152602001908152602001600020600101600081548110613c9957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613cfe57613ced8484846001614ef0565b613cf984848484614492565b6140f4565b613d0b8484846000614ef0565b613d1784848484614492565b6140f4565b8373ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff168152602001908152602001600020600101600181548110613d9a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613dff57613dee8484846000614ef0565b613dfa84848484614492565b6140f4565b8373ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff168152602001908152602001600020600101600081548110613e7d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613ee257613ed18484846001614ef0565b613edd84848484614492565b6140f4565b6000808060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008560ff1660ff168152602001908152602001600020600101600181548110613f4c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff168152602001908152602001600020600101805490506000808060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008660ff1660ff16815260200190815260200160002060010160008154811061403c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff16815260200190815260200160002060010180549050116140d9576140d48484846000614ef0565b6140e7565b6140e68484846001614ef0565b5b6140f384848484614492565b5b50505050565b60008060009050600073514910771af9ca656af840dff83e8264ecf986ca9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415801561417b575060028660ff16145b80156141845750835b156141a957730cb82bad6f553d2c208ebf1ccdb4fe1afac185989250600191506141be565b6141b588888888615ae9565b80935081945050505b8273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f40582613f7a6fc3047e7ab8955c9f41844428eab4fc9ba463349d0f979444e908888600460008b60ff1660ff1681526020019081526020016000205487604051808560ff1660ff1681526020018460ff1660ff1681526020018381526020018215151515815260200194505050505060405180910390a3600060608273ffffffffffffffffffffffffffffffffffffffff166323b872dd3387600460008c60ff1660ff16815260200190815260200160002054604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061438a5780518252602082019150602081019050602083039250614367565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146143ec576040519150601f19603f3d011682016040523d82523d6000602084013e6143f1565b606091505b50915091508180156144315750600081511480614430575080806020019051602081101561441e57600080fd5b81019080805190602001909291905050505b5b614486576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615eee6021913960400191505060405180910390fd5b50505050505050505050565b60046000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff16815260200190815260200160002060020180549050101561450c576145078385600285856140fa565b614eea565b60606000808060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008660ff1660ff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff16815260200190815260200160002060010180548060200260200160405190810160405280929190818152602001828054801561466457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161461a575b5050505050905060028151141561498c578373ffffffffffffffffffffffffffffffffffffffff168160008151811061469957fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16148061470257508373ffffffffffffffffffffffffffffffffffffffff16816001815181106146e257fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16145b1561482157836000808060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008760ff1660ff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008560ff1660ff16815260200190815260200160002060050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061498b565b60018151141561498a578373ffffffffffffffffffffffffffffffffffffffff168160008151811061484f57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141561498957836000808060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008760ff1660ff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008560ff1660ff16815260200190815260200160002060050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5b600067ffffffffffffffff811180156149a457600080fd5b506040519080825280602002602001820160405280156149d35781602001602082028036833780820191505090505b506000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008560ff1660ff1681526020019081526020016000206001019080519060200190614a42929190615e20565b50600067ffffffffffffffff81118015614a5b57600080fd5b50604051908082528060200260200182016040528015614a8a5781602001602082028036833780820191505090505b506000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008560ff1660ff1681526020019081526020016000206002019080519060200190614af9929190615e20565b5060008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008560ff1660ff16815260200190815260200160002060050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081614b9f57600191505b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160006001850160ff1660ff16815260200190815260200160002060009054906101000a900460ff16158015614c1c5750600c60ff168360ff1614155b15614c965760016000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008560ff1660ff16815260200190815260200160002060030160006101000a81548160ff0219169083151502179055505b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff16815260200190815260200160002060040160008154809291906001019190505550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614614e06576000614d6485856002611e44565b90508573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fa00c953eff38ec1b71e7fe060b2ab8df0bbe5354319fbdde4fbdafd6324386a6600288604051808360ff1681526020018260ff1660ff1681526020019250505060405180910390a4614e0085828686612a3f565b50614ee8565b8473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fa00c953eff38ec1b71e7fe060b2ab8df0bbe5354319fbdde4fbdafd6324386a6600287604051808360ff1681526020018260ff1660ff1681526020019250505060405180910390a4614ee7600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686600286866140fa565b5b505b50505050565b806154ee576000808060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008560ff1660ff168152602001908152602001600020600101600081548110614f5f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff168152602001908152602001600020600101849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff1681526020019081526020016000206001016000815481106150a957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826002856000808060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008a60ff1660ff16815260200190815260200160002060010160008154811061518f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008860ff1660ff16815260200190815260200160002060010180549050604051808460ff1681526020018360ff1660ff1681526020018260ff1660ff168152602001935050505060405180910390a38273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826002856000808060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008a60ff1660ff16815260200190815260200160002060010160008154811061530357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008860ff1660ff16815260200190815260200160002060010180549050600201604051808460ff1681526020018360ff1660ff1681526020018260ff1660ff168152602001935050505060405180910390a36000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff16815260200190815260200160002060010160008154811061542557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550615ae3565b6000808060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008560ff1660ff16815260200190815260200160002060010160018154811061555857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff168152602001908152602001600020600101849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff1681526020019081526020016000206001016001815481106156a257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826002856000808060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008a60ff1660ff16815260200190815260200160002060010160018154811061578857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008860ff1660ff16815260200190815260200160002060010180549050604051808460ff1681526020018360ff1660ff1681526020018260ff1660ff168152602001935050505060405180910390a38273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826002856000808060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008a60ff1660ff1681526020019081526020016000206001016001815481106158fc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008860ff1660ff16815260200190815260200160002060010180549050600401604051808460ff1681526020018360ff1660ff1681526020018260ff1660ff168152602001935050505060405180910390a36000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff168152602001908152602001600020600101600181548110615a1e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50505050565b6000806000869050600080905060018660ff161415615c8d575b600115615c88576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008660ff1660ff16815260200190815260200160002060020160009054906101000a900460ff1615615c76578673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709600188604051808360ff1681526020018260ff1660ff1681526020019250505060405180910390a3600190506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008660ff1660ff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150615c83565b8181935093505050615e17565b615b03565b615e14565b5b600115615e13576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008660ff1660ff16815260200190815260200160002060030160009054906101000a900460ff1615615e01578673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709600288604051808360ff1681526020018260ff1660ff1681526020019250505060405180910390a3600190506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008660ff1660ff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150615e0e565b8181935093505050615e17565b615c8e565b5b50505b94509492505050565b828054828255906000526020600020908101928215615e99579160200282015b82811115615e985782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190615e40565b5b509050615ea69190615eaa565b5090565b615eea91905b80821115615ee657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101615eb0565b5090565b9056fe4c7361676548656c7065723a205452414e534645525f46524f4d5f4641494c454475736572206973206e6f74206578697374732e2052656769737465722066697273742ea26469706673582212201b070227590517fe446659823a9d064d255ef353b5f41547d3c42ca2638ac2d464736f6c63430006060033

Deployed Bytecode

0x6080604052600436106100c65760003560e01c80639cc102fc1161007f578063ecabdf7911610059578063ecabdf7914610660578063ef0cc524146106b2578063f9146eb01461075d578063feec4b0a146107ab57610172565b80639cc102fc14610406578063a87430ba14610579578063ae7adbab1461061857610172565b806329c70400146101775780632a2d0c47146101a8578063348d448714610223578063509222cd1461024e57806383ba31b2146102b75780638da5cb5b146103af57610172565b366101725760006012600a0a600802905060008036905014156101165761011033600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361082e565b50610170565b61016e336101686000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610f05565b8361082e565b505b005b600080fd5b34801561018357600080fd5b5061018c610f13565b604051808260ff1660ff16815260200191505060405180910390f35b3480156101b457600080fd5b506101e1600480360360208110156101cb57600080fd5b8101908080359060200190929190505050610f18565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561022f57600080fd5b50610238610f4b565b6040518082815260200191505060405180910390f35b34801561025a57600080fd5b5061029d6004803603602081101561027157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f51565b604051808215151515815260200191505060405180910390f35b3480156102c357600080fd5b50610313600480360360408110156102da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610f9f565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200184151515158152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561039857808201518184015260208101905061037d565b505050509050019550505050505060405180910390f35b3480156103bb57600080fd5b506103c46111db565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561041257600080fd5b506104626004803603604081101561042957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611201565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001861515151581526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838103835288818151815260200191508051906020019060200280838360005b8381101561051d578082015181840152602081019050610502565b50505050905001838103825287818151815260200191508051906020019060200280838360005b8381101561055f578082015181840152602081019050610544565b505050509050019850505050505050505060405180910390f35b34801561058557600080fd5b506105c86004803603602081101561059c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115a4565b604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390f35b61065e6004803603606081101561062e57600080fd5b81019080803560ff169060200190929190803560ff169060200190929190803590602001909291905050506115ee565b005b34801561066c57600080fd5b5061069c6004803603602081101561068357600080fd5b81019080803560ff169060200190929190505050611e2c565b6040518082815260200191505060405180910390f35b3480156106be57600080fd5b5061071b600480360360608110156106d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560ff169060200190929190505050611e44565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107a96004803603604081101561077357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506120cc565b005b3480156107b757600080fd5b50610814600480360360608110156107ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560ff1690602001909291905050506120db565b604051808215151515815260200191505060405180910390f35b676f05b59d3b20000081146108ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f726567697374726174696f6e20636f737420380000000000000000000000000081525060200191505060405180910390fd5b6108b483610f51565b15610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f757365722065786973747300000000000000000000000000000000000000000081525060200191505060405180910390fd5b61093082610f51565b6109a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f7265666572726572206e6f74206578697374730000000000000000000000000081525060200191505060405180910390fd5b6000833b905060008163ffffffff1614610a24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f63616e6e6f74206265206120636f6e747261637400000000000000000000000081525060200191505060405180910390fd5b6002546000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055508360016000600254815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003016000600160ff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004016000600160ff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506002600081548092919060010191905055506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600081548092919060010191905055506000610d5685600180611e44565b9050806000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005016000600160ff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610dfc858260016121c6565b610e1685610e0d8760016002611e44565b60016000612a3f565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001548473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f309bb360e8b69c23937ccc5fb01f9aeeead1c95a99604e175113ff82f2b1723a6000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546040518082815260200191505060405180910390a45050505050565b600060148201519050919050565b600c81565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414159050919050565b600060606000806000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008660ff1660ff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008760ff1660ff1681526020019081526020016000206001016000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008860ff1660ff16815260200190815260200160002060020160009054906101000a900460ff166000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008960ff1660ff16815260200190815260200160002060030154828054806020026020016040519081016040528092919081815260200182805480156111c357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611179575b50505050509250935093509350935092959194509250565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060608060008060008060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008860ff1660ff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008960ff1660ff1681526020019081526020016000206001016000808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008a60ff1660ff1681526020019081526020016000206002016000808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008b60ff1660ff16815260200190815260200160002060030160009054906101000a900460ff166000808d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008c60ff1660ff16815260200190815260200160002060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008d60ff1660ff16815260200190815260200160002060040154848054806020026020016040519081016040528092919081815260200182805480156114ff57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116114b5575b505050505094508380548060200260200160405190810160405280929190818152602001828054801561158757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161153d575b505050505093509550955095509550955095509295509295509295565b60006020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154905083565b6115f733610f51565b61164c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615f0f6023913960400191505060405180910390fd5b60018360ff161480611661575060028360ff16145b6116d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c6964206d617472697800000000000000000000000000000000000081525060200191505060405180910390fd5b600460008360ff1660ff168152602001908152602001600020548114611761576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f696e76616c69642070726963650000000000000000000000000000000000000081525060200191505060405180910390fd5b60018260ff1611801561177b5750600c60ff168260ff1611155b6117ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f696e76616c6964206c6576656c0000000000000000000000000000000000000081525060200191505060405180910390fd5b60018360ff161415611b5e576000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008360ff1660ff16815260200190815260200160002060009054906101000a900460ff16156118d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f6c6576656c20616c72656164792061637469766174656400000000000000000081525060200191505060405180910390fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160006001840360ff1660ff16815260200190815260200160002060020160009054906101000a900460ff16156119bb5760008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160006001850360ff1660ff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055505b60006119c933846001611e44565b9050806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008560ff1660ff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008560ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611ae13382856121c6565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119600186604051808360ff1681526020018260ff1660ff1681526020019250505060405180910390a350611e27565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160008360ff1660ff16815260200190815260200160002060009054906101000a900460ff1615611c37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f6c6576656c20616c72656164792061637469766174656400000000000000000081525060200191505060405180910390fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160006001840360ff1660ff16815260200190815260200160002060030160009054906101000a900460ff1615611d205760008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160006001850360ff1660ff16815260200190815260200160002060030160006101000a81548160ff0219169083151502179055505b6000611d2e33846002611e44565b905060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160008560ff1660ff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611dae3382856000612a3f565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119600286604051808360ff1681526020018260ff1660ff1681526020019250505060405180910390a3505b505050565b60046020528060005260406000206000915090505481565b60005b6001156120c45760018260ff1614611f25576000808060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160008460ff1660ff16815260200190815260200160002060009054906101000a900460ff16611fed565b6000808060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008460ff1660ff16815260200190815260200160002060009054906101000a900460ff165b1561205b576000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506120c5565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350611e47565b5b9392505050565b6120d733838361082e565b5050565b600060018260ff161415612156576000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008460ff1660ff16815260200190815260200160002060009054906101000a900460ff1690506121bf565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160008460ff1660ff16815260200190815260200160002060009054906101000a900460ff1690505b9392505050565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008260ff1660ff168152602001908152602001600020600101839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060036000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008360ff1660ff1681526020019081526020016000206001018054905010156123e0578173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826001846000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008760ff1660ff16815260200190815260200160002060010180549050604051808460ff1681526020018360ff1660ff1681526020018260ff1660ff168152602001935050505060405180910390a36123db828460018460006140fa565b612a3a565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826001846003604051808460ff1681526020018360ff1660ff1681526020018260ff168152602001935050505060405180910390a3600067ffffffffffffffff8111801561247b57600080fd5b506040519080825280602002602001820160405280156124aa5781602001602082028036833780820191505090505b506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008360ff1660ff1681526020019081526020016000206001019080519060200190612519929190615e20565b506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160006001830160ff1660ff16815260200190815260200160002060009054906101000a900460ff161580156125975750600c60ff168160ff1614155b156126115760016000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008360ff1660ff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146128c957600061267483836001611e44565b90508073ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008460ff1660ff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127bf57806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008460ff1660ff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008360ff1660ff168152602001908152602001600020600301600081548092919060010191905055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fa00c953eff38ec1b71e7fe060b2ab8df0bbe5354319fbdde4fbdafd6324386a6600186604051808360ff1681526020018260ff1660ff1681526020019250505060405180910390a46128c38382846121c6565b50612a39565b6128fa600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460018460006140fa565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008260ff1660ff168152602001908152602001600020600301600081548092919060010191905055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fa00c953eff38ec1b71e7fe060b2ab8df0bbe5354319fbdde4fbdafd6324386a6600185604051808360ff1681526020018260ff1660ff1681526020019250505060405180910390a45b5b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160008360ff1660ff16815260200190815260200160002060009054906101000a900460ff16612b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f3530302e205265666572726572206c6576656c20697320696e6163746976650081525060200191505060405180910390fd5b60026000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff16815260200190815260200160002060010180549050101561377e576000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff168152602001908152602001600020600101849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826002856000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008860ff1660ff16815260200190815260200160002060010180549050604051808460ff1681526020018360ff1660ff1681526020018260ff1660ff168152602001935050505060405180910390a3826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e2057612e1b8385600285856140fa565b6140f4565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff168152602001908152602001600020600201859080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008560ff1660ff16815260200190815260200160002060010180549050905060028114801561308b57508473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008660ff1660ff16815260200190815260200160002060010160008154811061304857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b801561315357508473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008660ff1660ff16815260200190815260200160002060010160018154811061311057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156132d05760016000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008660ff1660ff168152602001908152602001600020600101805490501415613247578173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826002876005604051808460ff1681526020018360ff1660ff1681526020018260ff168152602001935050505060405180910390a36132cb565b8173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826002876006604051808460ff1681526020018360ff1660ff1681526020018260ff168152602001935050505060405180910390a35b61376b565b60018114806132df5750600281145b80156133a757508473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008660ff1660ff16815260200190815260200160002060010160008154811061336457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156135245760016000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008660ff1660ff16815260200190815260200160002060010180549050141561349b578173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826002876003604051808460ff1681526020018360ff1660ff1681526020018260ff168152602001935050505060405180910390a361351f565b8173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826002876004604051808460ff1681526020018360ff1660ff1681526020018260ff168152602001935050505060405180910390a35b61376a565b6002811480156135f057508473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008660ff1660ff1681526020019081526020016000206001016001815481106135ad57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156137695760016000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008660ff1660ff1681526020019081526020016000206001018054905014156136e4578173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826002876005604051808460ff1681526020018360ff1660ff1681526020018260ff168152602001935050505060405180910390a3613768565b8173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826002876006604051808460ff1681526020018360ff1660ff1681526020018260ff168152602001935050505060405180910390a35b5b5b5b61377786838686614492565b50506140f4565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff168152602001908152602001600020600201849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff16815260200190815260200160002060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613d1c576000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff16815260200190815260200160002060010160018154811061395057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff1681526020019081526020016000206001016000815481106139f857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015613b7d57506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff16815260200190815260200160002060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff168152602001908152602001600020600101600081548110613b3a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15613ba057613b8f8484846001614ef0565b613b9b84848484614492565b6140f4565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff16815260200190815260200160002060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff168152602001908152602001600020600101600081548110613c9957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613cfe57613ced8484846001614ef0565b613cf984848484614492565b6140f4565b613d0b8484846000614ef0565b613d1784848484614492565b6140f4565b8373ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff168152602001908152602001600020600101600181548110613d9a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613dff57613dee8484846000614ef0565b613dfa84848484614492565b6140f4565b8373ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff168152602001908152602001600020600101600081548110613e7d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613ee257613ed18484846001614ef0565b613edd84848484614492565b6140f4565b6000808060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008560ff1660ff168152602001908152602001600020600101600181548110613f4c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff168152602001908152602001600020600101805490506000808060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008660ff1660ff16815260200190815260200160002060010160008154811061403c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff16815260200190815260200160002060010180549050116140d9576140d48484846000614ef0565b6140e7565b6140e68484846001614ef0565b5b6140f384848484614492565b5b50505050565b60008060009050600073514910771af9ca656af840dff83e8264ecf986ca9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415801561417b575060028660ff16145b80156141845750835b156141a957730cb82bad6f553d2c208ebf1ccdb4fe1afac185989250600191506141be565b6141b588888888615ae9565b80935081945050505b8273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f40582613f7a6fc3047e7ab8955c9f41844428eab4fc9ba463349d0f979444e908888600460008b60ff1660ff1681526020019081526020016000205487604051808560ff1660ff1681526020018460ff1660ff1681526020018381526020018215151515815260200194505050505060405180910390a3600060608273ffffffffffffffffffffffffffffffffffffffff166323b872dd3387600460008c60ff1660ff16815260200190815260200160002054604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061438a5780518252602082019150602081019050602083039250614367565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146143ec576040519150601f19603f3d011682016040523d82523d6000602084013e6143f1565b606091505b50915091508180156144315750600081511480614430575080806020019051602081101561441e57600080fd5b81019080805190602001909291905050505b5b614486576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615eee6021913960400191505060405180910390fd5b50505050505050505050565b60046000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff16815260200190815260200160002060020180549050101561450c576145078385600285856140fa565b614eea565b60606000808060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008660ff1660ff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff16815260200190815260200160002060010180548060200260200160405190810160405280929190818152602001828054801561466457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161461a575b5050505050905060028151141561498c578373ffffffffffffffffffffffffffffffffffffffff168160008151811061469957fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16148061470257508373ffffffffffffffffffffffffffffffffffffffff16816001815181106146e257fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16145b1561482157836000808060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008760ff1660ff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008560ff1660ff16815260200190815260200160002060050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061498b565b60018151141561498a578373ffffffffffffffffffffffffffffffffffffffff168160008151811061484f57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141561498957836000808060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008760ff1660ff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008560ff1660ff16815260200190815260200160002060050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5b600067ffffffffffffffff811180156149a457600080fd5b506040519080825280602002602001820160405280156149d35781602001602082028036833780820191505090505b506000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008560ff1660ff1681526020019081526020016000206001019080519060200190614a42929190615e20565b50600067ffffffffffffffff81118015614a5b57600080fd5b50604051908082528060200260200182016040528015614a8a5781602001602082028036833780820191505090505b506000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008560ff1660ff1681526020019081526020016000206002019080519060200190614af9929190615e20565b5060008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008560ff1660ff16815260200190815260200160002060050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081614b9f57600191505b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160006001850160ff1660ff16815260200190815260200160002060009054906101000a900460ff16158015614c1c5750600c60ff168360ff1614155b15614c965760016000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008560ff1660ff16815260200190815260200160002060030160006101000a81548160ff0219169083151502179055505b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff16815260200190815260200160002060040160008154809291906001019190505550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614614e06576000614d6485856002611e44565b90508573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fa00c953eff38ec1b71e7fe060b2ab8df0bbe5354319fbdde4fbdafd6324386a6600288604051808360ff1681526020018260ff1660ff1681526020019250505060405180910390a4614e0085828686612a3f565b50614ee8565b8473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fa00c953eff38ec1b71e7fe060b2ab8df0bbe5354319fbdde4fbdafd6324386a6600287604051808360ff1681526020018260ff1660ff1681526020019250505060405180910390a4614ee7600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686600286866140fa565b5b505b50505050565b806154ee576000808060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008560ff1660ff168152602001908152602001600020600101600081548110614f5f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff168152602001908152602001600020600101849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff1681526020019081526020016000206001016000815481106150a957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826002856000808060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008a60ff1660ff16815260200190815260200160002060010160008154811061518f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008860ff1660ff16815260200190815260200160002060010180549050604051808460ff1681526020018360ff1660ff1681526020018260ff1660ff168152602001935050505060405180910390a38273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826002856000808060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008a60ff1660ff16815260200190815260200160002060010160008154811061530357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008860ff1660ff16815260200190815260200160002060010180549050600201604051808460ff1681526020018360ff1660ff1681526020018260ff1660ff168152602001935050505060405180910390a36000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff16815260200190815260200160002060010160008154811061542557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550615ae3565b6000808060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008560ff1660ff16815260200190815260200160002060010160018154811061555857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff168152602001908152602001600020600101849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff1681526020019081526020016000206001016001815481106156a257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826002856000808060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008a60ff1660ff16815260200190815260200160002060010160018154811061578857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008860ff1660ff16815260200190815260200160002060010180549050604051808460ff1681526020018360ff1660ff1681526020018260ff1660ff168152602001935050505060405180910390a38273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d826002856000808060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008a60ff1660ff1681526020019081526020016000206001016001815481106158fc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008860ff1660ff16815260200190815260200160002060010180549050600401604051808460ff1681526020018360ff1660ff1681526020018260ff1660ff168152602001935050505060405180910390a36000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008360ff1660ff168152602001908152602001600020600101600181548110615a1e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008460ff1660ff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50505050565b6000806000869050600080905060018660ff161415615c8d575b600115615c88576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008660ff1660ff16815260200190815260200160002060020160009054906101000a900460ff1615615c76578673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709600188604051808360ff1681526020018260ff1660ff1681526020019250505060405180910390a3600190506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008660ff1660ff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150615c83565b8181935093505050615e17565b615b03565b615e14565b5b600115615e13576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008660ff1660ff16815260200190815260200160002060030160009054906101000a900460ff1615615e01578673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709600288604051808360ff1681526020018260ff1660ff1681526020019250505060405180910390a3600190506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008660ff1660ff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150615e0e565b8181935093505050615e17565b615c8e565b5b50505b94509492505050565b828054828255906000526020600020908101928215615e99579160200282015b82811115615e985782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190615e40565b5b509050615ea69190615eaa565b5090565b615eea91905b80821115615ee657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101615eb0565b5090565b9056fe4c7361676548656c7065723a205452414e534645525f46524f4d5f4641494c454475736572206973206e6f74206578697374732e2052656769737465722066697273742ea26469706673582212201b070227590517fe446659823a9d064d255ef353b5f41547d3c42ca2638ac2d464736f6c63430006060033

Deployed Bytecode Sourcemap

28:21111:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2564:18;2603:2;2589;:17;2585:1;:21;2564:42;;2639:1;2620:8;;:15;;:20;2617:101;;;2664:42;2677:10;2689:5;;;;;;;;;;;2695:10;2664:12;:42::i;:::-;2657:49;;;2617:101;2738:62;2751:10;2763:25;2779:8;;2763:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2763:25:0;;;;;;:15;:25::i;:::-;2789:10;2738:12;:62::i;:::-;2526:282;;28:21111;;12:1:-1;9;2:12;723:37:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;723:37:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;817:43;;5:9:-1;2:2;;;27:1;24;17:12;2:2;817:43:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;817:43:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;969:26;;5:9:-1;2:2;;;27:1;24;17:12;2:2;969:26:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18169:110;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18169:110:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;18169:110:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17199:387;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17199:387:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;17199:387:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17199:387:0;;;;;;;;;;;;;;;;;;;;1002:65;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1002:65:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17594:563;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17594:563:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;17594:563:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17594:563:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17594:563:0;;;;;;;;;;;;;;;;;;;;;;;773:37;;5:9:-1;2:2;;;27:1;24;17:12;2:2;773:37:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;773:37:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2992:1611;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2992:1611:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1082:40;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1082:40:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1082:40:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16457:433;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16457:433:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;16457:433:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2822:158;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2822:158:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16906:283;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16906:283:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;16906:283:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4619:1636;4943:7;4929:10;:21;4921:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4996:25;5009:11;4996:12;:25::i;:::-;4995:26;4987:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5056:29;5069:15;5056:12;:29::i;:::-;5048:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5130:11;5196;5184:24;5176:32;;5245:1;5237:4;:9;;;5229:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5332:10;;5308:5;:18;5314:11;5308:18;;;;;;;;;;;;;;;:21;;:34;;;;5383:15;5353:5;:18;5359:11;5353:18;;;;;;;;;;;;;;;:27;;;:45;;;;;;;;;;;;;;;;;;5444:1;5409:5;:18;5415:11;5409:18;;;;;;;;;;;;;;;:32;;:36;;;;5492:11;5466;:23;5478:10;;5466:23;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;5554:15;5524:5;:18;5530:11;5524:18;;;;;;;;;;;;;;;:27;;;:45;;;;;;;;;;;;;;;;;;5629:4;5590:5;:18;5596:11;5590:18;;;;;;;;;;;;;;;:33;;:36;5624:1;5590:36;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;5684:4;5645:5;:18;5651:11;5645:18;;;;;;;;;;;;;;;:33;;:36;5679:1;5645:36;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;5766:10;;:12;;;;;;;;;;;;;5799:5;:22;5805:15;5799:22;;;;;;;;;;;;;;;:36;;;:38;;;;;;;;;;;;;5850:22;5875:34;5892:11;5905:1;5907;5875:16;:34::i;:::-;5850:59;;5969:14;5920:5;:18;5926:11;5920:18;;;;;;;;;;;;;;;:27;;:30;5948:1;5920:30;;;;;;;;;;;;;:46;;;:63;;;;;;;;;;;;;;;;;;5994:48;6011:11;6024:14;6040:1;5994:16;:48::i;:::-;6055:74;6072:11;6085:34;6102:11;6115:1;6117;6085:16;:34::i;:::-;6121:1;6123:5;6055:16;:74::i;:::-;6198:5;:18;6204:11;6198:18;;;;;;;;;;;;;;;:21;;;6181:15;6155:92;;6168:11;6155:92;;;6221:5;:22;6227:15;6221:22;;;;;;;;;;;;;;;:25;;;6155:92;;;;;;;;;;;;;;;;;;4619:1636;;;;;:::o;20969:159::-;21034:12;21106:2;21101:3;21097:12;21091:19;21083:27;;21068:53;;;:::o;723:37::-;758:2;723:37;:::o;817:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;969:26::-;;;;:::o;18169:110::-;18226:4;18269:1;18251:5;:11;18257:4;18251:11;;;;;;;;;;;;;;;:14;;;:19;;18243:28;;18169:110;;;:::o;17199:387::-;17276:7;17285:16;17303:4;17308:7;17336:5;:18;17342:11;17336:18;;;;;;;;;;;;;;;:27;;:34;17364:5;17336:34;;;;;;;;;;;;;;;:50;;;;;;;;;;;;17405:5;:18;17411:11;17405:18;;;;;;;;;;;;;;;:27;;:34;17433:5;17405:34;;;;;;;;;;;;;;;:44;;17468:5;:18;17474:11;17468:18;;;;;;;;;;;;;;;:27;;:34;17496:5;17468:34;;;;;;;;;;;;;;;:42;;;;;;;;;;;;17529:5;:18;17535:11;17529:18;;;;;;;;;;;;;;;:27;;:34;17557:5;17529:34;;;;;;;;;;;;;;;:48;;;17328:250;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17199:387;;;;;;;:::o;1002:65::-;;;;;;;;;;;;;:::o;17594:563::-;17671:7;17680:16;17698;17716:4;17722:7;17731;17759:5;:18;17765:11;17759:18;;;;;;;;;;;;;;;:27;;:34;17787:5;17759:34;;;;;;;;;;;;;;;:50;;;;;;;;;;;;17828:5;:18;17834:11;17828:18;;;;;;;;;;;;;;;:27;;:34;17856:5;17828:34;;;;;;;;;;;;;;;:54;;17901:5;:18;17907:11;17901:18;;;;;;;;;;;;;;;:27;;:34;17929:5;17901:34;;;;;;;;;;;;;;;:55;;17975:5;:18;17981:11;17975:18;;;;;;;;;;;;;;;:27;;:34;18003:5;17975:34;;;;;;;;;;;;;;;:42;;;;;;;;;;;;18036:5;:18;18042:11;18036:18;;;;;;;;;;;;;;;:27;;:34;18064:5;18036:34;;;;;;;;;;;;;;;:45;;;;;;;;;;;;18100:5;:18;18106:11;18100:18;;;;;;;;;;;;;;;:27;;:34;18128:5;18100:34;;;;;;;;;;;;;;;:48;;;17751:398;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17594:563;;;;;;;;:::o;773:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2992:1611::-;3099:24;3112:10;3099:12;:24::i;:::-;3091:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3192:1;3182:6;:11;;;:26;;;;3207:1;3197:6;:11;;;3182:26;3174:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3270:10;:17;3281:5;3270:17;;;;;;;;;;;;;;;;3256:10;:31;3248:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3332:1;3324:5;:9;;;:32;;;;;758:2;3337:19;;:5;:19;;;;3324:32;3316:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3401:1;3391:6;:11;;;3387:1209;;;3428:5;:17;3434:10;3428:17;;;;;;;;;;;;;;;:32;;:39;3461:5;3428:39;;;;;;;;;;;;;;;;;;;;;;;;;3427:40;3419:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3516:5;:17;3522:10;3516:17;;;;;;;;;;;;;;;:26;;:35;3549:1;3543:5;:7;3516:35;;;;;;;;;;;;;;;:43;;;;;;;;;;;;3512:135;;;3626:5;3580;:17;3586:10;3580:17;;;;;;;;;;;;;;;:26;;:35;3613:1;3607:5;:7;3580:35;;;;;;;;;;;;;;;:43;;;:51;;;;;;;;;;;;;;;;;;3512:135;3667:22;3692:37;3709:10;3721:5;3727:1;3692:16;:37::i;:::-;3667:62;;3796:14;3744:5;:17;3750:10;3744:17;;;;;;;;;;;;;;;:26;;:33;3771:5;3744:33;;;;;;;;;;;;;;;:49;;;:66;;;;;;;;;;;;;;;;;;3867:4;3825:5;:17;3831:10;3825:17;;;;;;;;;;;;;;;:32;;:39;3858:5;3825:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;3886:51;3903:10;3915:14;3931:5;3886:16;:51::i;:::-;3991:14;3971:45;;3979:10;3971:45;;;4007:1;4010:5;3971:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3387:1209;;;;4060:5;:17;4066:10;4060:17;;;;;;;;;;;;;;;:32;;:39;4093:5;4060:39;;;;;;;;;;;;;;;;;;;;;;;;;4059:40;4051:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4149:5;:17;4155:10;4149:17;;;;;;;;;;;;;;;:26;;:35;4182:1;4176:5;:7;4149:35;;;;;;;;;;;;;;;:43;;;;;;;;;;;;4145:135;;;4259:5;4213;:17;4219:10;4213:17;;;;;;;;;;;;;;;:26;;:35;4246:1;4240:5;:7;4213:35;;;;;;;;;;;;;;;:43;;;:51;;;;;;;;;;;;;;;;;;4145:135;4296:22;4321:37;4338:10;4350:5;4356:1;4321:16;:37::i;:::-;4296:62;;4429:4;4387:5;:17;4393:10;4387:17;;;;;;;;;;;;;;;:32;;:39;4420:5;4387:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;4448:57;4465:10;4477:14;4493:5;4499;4448:16;:57::i;:::-;4559:14;4539:45;;4547:10;4539:45;;;4575:1;4578:5;4539:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3387:1209;;2992:1611;;;:::o;1082:40::-;;;;;;;;;;;;;;;;;:::o;16457:433::-;16550:7;16576:307;16583:4;16576:307;;;16616:1;16608:6;:9;;;:123;;16675:5;:34;16681:5;:18;16687:11;16681:18;;;;;;;;;;;;;;;:27;;;;;;;;;;;;16675:34;;;;;;;;;;;;;;;:49;;:56;16725:5;16675:56;;;;;;;;;;;;;;;;;;;;;;;;;16608:123;;;16618:5;:34;16624:5;:18;16630:11;16624:18;;;;;;;;;;;;;;;:27;;;;;;;;;;;;16618:34;;;;;;;;;;;;;;;:49;;:56;16668:5;16618:56;;;;;;;;;;;;;;;;;;;;;;;;;16608:123;16604:198;;;16759:5;:18;16765:11;16759:18;;;;;;;;;;;;;;;:27;;;;;;;;;;;;16752:34;;;;16604:198;16844:5;:18;16850:11;16844:18;;;;;;;;;;;;;;;:27;;;;;;;;;;;;16830:41;;16576:307;;;16457:433;;;;;;:::o;2822:158::-;2919:53;2932:10;2944:15;2961:10;2919:12;:53::i;:::-;2822:158;;:::o;16906:283::-;17000:4;17028:1;17020:6;:9;;;17017:165;;;17052:5;:18;17058:11;17052:18;;;;;;;;;;;;;;;:33;;:40;17086:5;17052:40;;;;;;;;;;;;;;;;;;;;;;;;;17045:47;;;;17017:165;17130:5;:18;17136:11;17130:18;;;;;;;;;;;;;;;:33;;:40;17164:5;17130:40;;;;;;;;;;;;;;;;;;;;;;;;;17123:47;;16906:283;;;;;;:::o;6267:1729::-;6371:5;:22;6377:15;6371:22;;;;;;;;;;;;;;;:31;;:38;6403:5;6371:38;;;;;;;;;;;;;;;:48;;6425:11;6371:66;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;6371:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6512:1;6454:5;:22;6460:15;6454:22;;;;;;;;;;;;;;;:31;;:38;6486:5;6454:38;;;;;;;;;;;;;;;:48;;:55;;;;:59;6450:297;;;6561:15;6535:116;;6548:11;6535:116;;;6578:1;6581:5;6594;:22;6600:15;6594:22;;;;;;;;;;;;;;;:31;;:38;6626:5;6594:38;;;;;;;;;;;;;;;:48;;:55;;;;6535:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6673:62;6690:15;6707:11;6720:1;6723:5;6729;6673:16;:62::i;:::-;6666:69;;6450:297;6798:15;6772:55;;6785:11;6772:55;;;6815:1;6818:5;6825:1;6772:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6927:1;6913:16;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6913:16:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;156:4;148:6;144:17;134:27;;0:165;6913:16:0;;;;6862:5;:22;6868:15;6862:22;;;;;;;;;;;;;;;:31;;:38;6894:5;6862:38;;;;;;;;;;;;;;;:48;;:67;;;;;;;;;;;;:::i;:::-;;6945:5;:22;6951:15;6945:22;;;;;;;;;;;;;;;:37;;:46;6989:1;6983:5;:7;6945:46;;;;;;;;;;;;;;;;;;;;;;;;;6944:47;:70;;;;;758:2;6995:19;;:5;:19;;;;6944:70;6940:156;;;7080:4;7031:5;:22;7037:15;7031:22;;;;;;;;;;;;;;;:31;;:38;7063:5;7031:38;;;;;;;;;;;;;;;:46;;;:53;;;;;;;;;;;;;;;;;;6940:156;7170:5;;;;;;;;;;;7151:24;;:15;:24;;;7147:842;;7235:27;7265:42;7282:15;7299:5;7305:1;7265:16;:42::i;:::-;7235:72;;7384:19;7326:77;;:5;:22;7332:15;7326:22;;;;;;;;;;;;;;;:31;;:38;7358:5;7326:38;;;;;;;;;;;;;;;:54;;;;;;;;;;;;:77;;;7322:194;;7481:19;7424:5;:22;7430:15;7424:22;;;;;;;;;;;;;;;:31;;:38;7456:5;7424:38;;;;;;;;;;;;;;;:54;;;:76;;;;;;;;;;;;;;;;;;7322:194;7544:5;:22;7550:15;7544:22;;;;;;;;;;;;;;;:31;;:38;7576:5;7544:38;;;;;;;;;;;;;;;:52;;;:54;;;;;;;;;;;;;7665:11;7618:69;;7644:19;7618:69;;7627:15;7618:69;;;7678:1;7681:5;7618:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7702:61;7719:15;7736:19;7757:5;7702:16;:61::i;:::-;7147:842;;;;7796:52;7813:5;;;;;;;;;;;7820:11;7833:1;7836:5;7842;7796:16;:52::i;:::-;7863:5;:12;7869:5;;;;;;;;;;;7863:12;;;;;;;;;;;;;;;:21;;:28;7885:5;7863:28;;;;;;;;;;;;;;;:42;;;:44;;;;;;;;;;;;;7955:11;7927:50;;7951:1;7927:50;;7936:5;;;;;;;;;;;7927:50;;;7968:1;7971:5;7927:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7147:842;6267:1729;;;;:::o;8004:4812::-;8129:5;:22;8135:15;8129:22;;;;;;;;;;;;;;;:37;;:44;8167:5;8129:44;;;;;;;;;;;;;;;;;;;;;;;;;8121:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8302:1;8234:5;:22;8240:15;8234:22;;;;;;;;;;;;;;;:31;;:38;8266:5;8234:38;;;;;;;;;;;;;;;:58;;:65;;;;:69;8230:2314;;;8320:5;:22;8326:15;8320:22;;;;;;;;;;;;;;;:31;;:38;8352:5;8320:38;;;;;;;;;;;;;;;:58;;8384:11;8320:76;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;8320:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8442:15;8416:126;;8429:11;8416:126;;;8459:1;8462:5;8475;:22;8481:15;8475:22;;;;;;;;;;;;;;;:31;;:38;8507:5;8475:38;;;;;;;;;;;;;;;:58;;:65;;;;8416:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8657:15;8604:5;:18;8610:11;8604:18;;;;;;;;;;;;;;;:27;;:34;8632:5;8604:34;;;;;;;;;;;;;;;:50;;;:68;;;;;;;;;;;;;;;;;;8712:5;;;;;;;;;;;8693:24;;:15;:24;;;8689:136;;;8745:64;8762:15;8779:11;8792:1;8795:5;8801:7;8745:16;:64::i;:::-;8738:71;;8689:136;8853:11;8867:5;:22;8873:15;8867:22;;;;;;;;;;;;;;;:31;;:38;8899:5;8867:38;;;;;;;;;;;;;;;:54;;;;;;;;;;;;8853:68;;8948:5;:10;8954:3;8948:10;;;;;;;;;;;;;;;:19;;:26;8968:5;8948:26;;;;;;;;;;;;;;;:47;;9001:11;8948:65;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;8948:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9043:8;9054:5;:10;9060:3;9054:10;;;;;;;;;;;;;;;:19;;:26;9074:5;9054:26;;;;;;;;;;;;;;;:46;;:53;;;;9043:64;;9148:1;9141:3;:8;9140:102;;;;;9226:15;9173:68;;:5;:10;9179:3;9173:10;;;;;;;;;;;;;;;:19;;:26;9193:5;9173:26;;;;;;;;;;;;;;;:46;;9220:1;9173:49;;;;;;;;;;;;;;;;;;;;;;;;;:68;;;9140:102;:193;;;;;9317:15;9264:68;;:5;:10;9270:3;9264:10;;;;;;;;;;;;;;;:19;;:26;9284:5;9264:26;;;;;;;;;;;;;;;:46;;9311:1;9264:49;;;;;;;;;;;;;;;;;;;;;;;;;:68;;;9140:193;9136:1313;;;9427:1;9358:5;:22;9364:15;9358:22;;;;;;;;;;;;;;;:31;;:38;9390:5;9358:38;;;;;;;;;;;;;;;:58;;:65;;;;:70;9354:264;;;9484:3;9458:43;;9471:11;9458:43;;;9489:1;9492:5;9499:1;9458:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9354:264;;;9581:3;9555:43;;9568:11;9555:43;;;9586:1;9589:5;9596:1;9555:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9354:264;9136:1313;;;9652:1;9645:3;:8;:20;;;;9664:1;9657:3;:8;9645:20;9644:115;;;;;9744:15;9691:68;;:5;:10;9697:3;9691:10;;;;;;;;;;;;;;;:19;;:26;9711:5;9691:26;;;;;;;;;;;;;;;:46;;9738:1;9691:49;;;;;;;;;;;;;;;;;;;;;;;;;:68;;;9644:115;9640:809;;;9853:1;9784:5;:22;9790:15;9784:22;;;;;;;;;;;;;;;:31;;:38;9816:5;9784:38;;;;;;;;;;;;;;;:58;;:65;;;;:70;9780:264;;;9910:3;9884:43;;9897:11;9884:43;;;9915:1;9918:5;9925:1;9884:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9780:264;;;10007:3;9981:43;;9994:11;9981:43;;;10012:1;10015:5;10022:1;9981:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9780:264;9640:809;;;10076:1;10069:3;:8;:80;;;;;10134:15;10081:68;;:5;:10;10087:3;10081:10;;;;;;;;;;;;;;;:19;;:26;10101:5;10081:26;;;;;;;;;;;;;;;:46;;10128:1;10081:49;;;;;;;;;;;;;;;;;;;;;;;;;:68;;;10069:80;10065:384;;;10243:1;10174:5;:22;10180:15;10174:22;;;;;;;;;;;;;;;:31;;:38;10206:5;10174:38;;;;;;;;;;;;;;;:58;;:65;;;;:70;10170:264;;;10300:3;10274:43;;10287:11;10274:43;;;10305:1;10308:5;10315:1;10274:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10170:264;;;10397:3;10371:43;;10384:11;10371:43;;;10402:1;10405:5;10412:1;10371:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10170:264;10065:384;9640:809;9136:1313;10472:60;10500:11;10513:3;10518:5;10524:7;10472:27;:60::i;:::-;10465:67;;;;8230:2314;10564:5;:22;10570:15;10564:22;;;;;;;;;;;;;;;:31;;:38;10596:5;10564:38;;;;;;;;;;;;;;;:59;;10629:11;10564:77;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;10564:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10719:1;10658:63;;:5;:22;10664:15;10658:22;;;;;;;;;;;;;;;:31;;:38;10690:5;10658:38;;;;;;;;;;;;;;;:49;;;;;;;;;;;;:63;;;10654:1106;;10826:5;:22;10832:15;10826:22;;;;;;;;;;;;;;;:31;;:38;10858:5;10826:38;;;;;;;;;;;;;;;:58;;10885:1;10826:61;;;;;;;;;;;;;;;;;;;;;;;;;10743:144;;:5;:22;10749:15;10743:22;;;;;;;;;;;;;;;:31;;:38;10775:5;10743:38;;;;;;;;;;;;;;;:58;;10802:1;10743:61;;;;;;;;;;;;;;;;;;;;;;;;;:144;;;10742:300;;;;;10992:5;:22;10998:15;10992:22;;;;;;;;;;;;;;;:31;;:38;11024:5;10992:38;;;;;;;;;;;;;;;:49;;;;;;;;;;;;10910:131;;:5;:22;10916:15;10910:22;;;;;;;;;;;;;;;:31;;:38;10942:5;10910:38;;;;;;;;;;;;;;;:58;;10969:1;10910:61;;;;;;;;;;;;;;;;;;;;;;;;;:131;;;10742:300;10738:1011;;;11065:51;11074:11;11087:15;11104:5;11111:4;11065:8;:51::i;:::-;11142:72;11170:11;11183:15;11200:5;11206:7;11142:27;:72::i;:::-;11135:79;;10738:1011;11323:5;:22;11329:15;11323:22;;;;;;;;;;;;;;;:31;;:38;11355:5;11323:38;;;;;;;;;;;;;;;:49;;;;;;;;;;;;11240:132;;:5;:22;11246:15;11240:22;;;;;;;;;;;;;;;:31;;:38;11272:5;11240:38;;;;;;;;;;;;;;;:58;;11299:1;11240:61;;;;;;;;;;;;;;;;;;;;;;;;;:132;;;11236:513;;;11393:51;11402:11;11415:15;11432:5;11439:4;11393:8;:51::i;:::-;11470:72;11498:11;11511:15;11528:5;11534:7;11470:27;:72::i;:::-;11463:79;;11236:513;11583:52;11592:11;11605:15;11622:5;11629;11583:8;:52::i;:::-;11661:72;11689:11;11702:15;11719:5;11725:7;11661:27;:72::i;:::-;11654:79;;10654:1106;11841:11;11776:76;;:5;:22;11782:15;11776:22;;;;;;;;;;;;;;;:31;;:38;11808:5;11776:38;;;;;;;;;;;;;;;:58;;11835:1;11776:61;;;;;;;;;;;;;;;;;;;;;;;;;:76;;;11772:515;;;11869:52;11878:11;11891:15;11908:5;11915;11869:8;:52::i;:::-;11943:72;11971:11;11984:15;12001:5;12007:7;11943:27;:72::i;:::-;11936:79;;11772:515;12102:11;12037:76;;:5;:22;12043:15;12037:22;;;;;;;;;;;;;;;:31;;:38;12069:5;12037:38;;;;;;;;;;;;;;;:58;;12096:1;12037:61;;;;;;;;;;;;;;;;;;;;;;;;;:76;;;12033:254;;;12130:51;12139:11;12152:15;12169:5;12176:4;12130:8;:51::i;:::-;12203:72;12231:11;12244:15;12261:5;12267:7;12203:27;:72::i;:::-;12196:79;;12033:254;12440:5;:68;12446:5;:22;12452:15;12446:22;;;;;;;;;;;;;;;:31;;:38;12478:5;12446:38;;;;;;;;;;;;;;;:58;;12505:1;12446:61;;;;;;;;;;;;;;;;;;;;;;;;;12440:68;;;;;;;;;;;;;;;:77;;:84;12518:5;12440:84;;;;;;;;;;;;;;;:104;;:111;;;;12311:5;:68;12317:5;:22;12323:15;12317:22;;;;;;;;;;;;;;;:31;;:38;12349:5;12317:38;;;;;;;;;;;;;;;:58;;12376:1;12317:61;;;;;;;;;;;;;;;;;;;;;;;;;12311:68;;;;;;;;;;;;;;;:77;;:84;12389:5;12311:84;;;;;;;;;;;;;;;:104;;:111;;;;:240;12307:409;;12568:52;12577:11;12590:15;12607:5;12614;12568:8;:52::i;:::-;12307:409;;;12653:51;12662:11;12675:15;12692:5;12699:4;12653:8;:51::i;:::-;12307:409;12736:72;12764:11;12777:15;12794:5;12800:7;12736:27;:72::i;:::-;8004:4812;;;;;:::o;19377:1576::-;19907:16;19934:21;19958:5;19934:29;;19974:20;19997:42;19974:65;;20068:5;;;;;;;;;;;20053:20;;:11;:20;;;;:35;;;;;20087:1;20077:6;:11;;;20053:35;:47;;;;;20093:7;20053:47;20050:281;;;20127:42;20116:53;;20203:4;20184:23;;20050:281;;;20269:50;20285:11;20298:5;20305:6;20313:5;20269:15;:50::i;:::-;20238:81;;;;;;;;20050:281;20386:8;20362:83;;20379:5;20362:83;;;20396:6;20404:5;20410:10;:17;20421:5;20410:17;;;;;;;;;;;;;;;;20428:16;20362:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20554:12;20568:17;20589:12;:17;;20630:10;20642;20654:8;20664:10;:17;20675:5;20664:17;;;;;;;;;;;;;;;;20607:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;20607:75:0;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;20607:75:0;20589:94;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;20589:94:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;20553:130:0;;;;20702:7;:57;;;;;20729:1;20714:4;:11;:16;:44;;;;20745:4;20734:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;20734:24:0;;;;;;;;;;;;;;;;20714:44;20702:57;20694:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19377:1576;;;;;;;;;;:::o;14453:1984::-;14654:1;14585:5;:22;14591:15;14585:22;;;;;;;;;;;;;;;:31;;:38;14617:5;14585:38;;;;;;;;;;;;;;;:59;;:66;;;;:70;14581:174;;;14679:64;14696:15;14713:11;14726:1;14729:5;14735:7;14679:16;:64::i;:::-;14672:71;;14581:174;14775:19;14797:5;:61;14803:5;:22;14809:15;14803:22;;;;;;;;;;;;;;;:31;;:38;14835:5;14803:38;;;;;;;;;;;;;;;:54;;;;;;;;;;;;14797:61;;;;;;;;;;;;;;;:70;;:77;14868:5;14797:77;;;;;;;;;;;;;;;:97;;14775:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14932:1;14919:2;:9;:14;14915:501;;;14963:15;14954:24;;:2;14957:1;14954:5;;;;;;;;;;;;;;:24;;;:69;;;;15008:15;14999:24;;:2;15002:1;14999:5;;;;;;;;;;;;;;:24;;;14954:69;14950:455;;;15135:15;15044:5;:61;15050:5;:22;15056:15;15050:22;;;;;;;;;;;;;;;:31;;:38;15082:5;15050:38;;;;;;;;;;;;;;;:54;;;;;;;;;;;;15044:61;;;;;;;;;;;;;;;:70;;:77;15115:5;15044:77;;;;;;;;;;;;;;;:88;;;:106;;;;;;;;;;;;;;;;;;14950:455;;;15189:1;15176:2;:9;:14;15172:233;;;15224:15;15215:24;;:2;15218:1;15215:5;;;;;;;;;;;;;;:24;;;15211:179;;;15355:15;15264:5;:61;15270:5;:22;15276:15;15270:22;;;;;;;;;;;;;;;:31;;:38;15302:5;15270:38;;;;;;;;;;;;;;;:54;;;;;;;;;;;;15264:61;;;;;;;;;;;;;;;:70;;:77;15335:5;15264:77;;;;;;;;;;;;;;;:88;;;:106;;;;;;;;;;;;;;;;;;15211:179;15172:233;14950:455;14915:501;15511:1;15497:16;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15497:16:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;156:4;148:6;144:17;134:27;;0:165;15497:16:0;;;;15436:5;:22;15442:15;15436:22;;;;;;;;;;;;;;;:31;;:38;15468:5;15436:38;;;;;;;;;;;;;;;:58;;:77;;;;;;;;;;;;:::i;:::-;;15600:1;15586:16;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15586:16:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;156:4;148:6;144:17;134:27;;0:165;15586:16:0;;;;15524:5;:22;15530:15;15524:22;;;;;;;;;;;;;;;:31;;:38;15556:5;15524:38;;;;;;;;;;;;;;;:59;;:78;;;;;;;;;;;;:::i;:::-;;15673:1;15613:5;:22;15619:15;15613:22;;;;;;;;;;;;;;;:31;;:38;15645:5;15613:38;;;;;;;;;;;;;;;:49;;;:62;;;;;;;;;;;;;;;;;;15690:7;15686:27;;15709:4;15699:14;;15686:27;15731:5;:22;15737:15;15731:22;;;;;;;;;;;;;;;:37;;:46;15775:1;15769:5;:7;15731:46;;;;;;;;;;;;;;;;;;;;;;;;;15730:47;:70;;;;;758:2;15781:19;;:5;:19;;;;15730:70;15726:156;;;15866:4;15817:5;:22;15823:15;15817:22;;;;;;;;;;;;;;;:31;;:38;15849:5;15817:38;;;;;;;;;;;;;;;:46;;;:53;;;;;;;;;;;;;;;;;;15726:156;15894:5;:22;15900:15;15894:22;;;;;;;;;;;;;;;:31;;:38;15926:5;15894:38;;;;;;;;;;;;;;;:52;;;:54;;;;;;;;;;;;;15992:5;;;;;;;;;;;15973:24;;:15;:24;;;15969:461;;16014:27;16044:42;16061:15;16078:5;16084:1;16044:16;:42::i;:::-;16014:72;;16155:11;16108:69;;16134:19;16108:69;;16117:15;16108:69;;;16168:1;16171:5;16108:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16192;16209:15;16226:19;16247:5;16253:7;16192:16;:69::i;:::-;15969:461;;;;16327:11;16299:50;;16323:1;16299:50;;16308:5;;;;;;;;;;;16299:50;;;16340:1;16343:5;16299:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16364:54;16381:5;;;;;;;;;;;16388:11;16401:1;16404:5;16410:7;16364:16;:54::i;:::-;15969:461;14453:1984;;;;;;:::o;12824:1617::-;12934:2;12929:1505;;12953:5;:68;12959:5;:22;12965:15;12959:22;;;;;;;;;;;;;;;:31;;:38;12991:5;12959:38;;;;;;;;;;;;;;;:58;;13018:1;12959:61;;;;;;;;;;;;;;;;;;;;;;;;;12953:68;;;;;;;;;;;;;;;:77;;:84;13031:5;12953:84;;;;;;;;;;;;;;;:104;;13063:11;12953:122;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;12953:122:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13121:5;:22;13127:15;13121:22;;;;;;;;;;;;;;;:31;;:38;13153:5;13121:38;;;;;;;;;;;;;;;:58;;13180:1;13121:61;;;;;;;;;;;;;;;;;;;;;;;;;13095:218;;13108:11;13095:218;;;13184:1;13187:5;13200;:68;13206:5;:22;13212:15;13206:22;;;;;;;;;;;;;;;:31;;:38;13238:5;13206:38;;;;;;;;;;;;;;;:58;;13265:1;13206:61;;;;;;;;;;;;;;;;;;;;;;;;;13200:68;;;;;;;;;;;;;;;:77;;:84;13278:5;13200:84;;;;;;;;;;;;;;;:104;;:111;;;;13095:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13359:15;13333:176;;13346:11;13333:176;;;13376:1;13379:5;13396;:68;13402:5;:22;13408:15;13402:22;;;;;;;;;;;;;;;:31;;:38;13434:5;13402:38;;;;;;;;;;;;;;;:58;;13461:1;13402:61;;;;;;;;;;;;;;;;;;;;;;;;;13396:68;;;;;;;;;;;;;;;:77;;:84;13474:5;13396:84;;;;;;;;;;;;;;;:104;;:111;;;;13386:1;:122;13333:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13610:5;:22;13616:15;13610:22;;;;;;;;;;;;;;;:31;;:38;13642:5;13610:38;;;;;;;;;;;;;;;:58;;13669:1;13610:61;;;;;;;;;;;;;;;;;;;;;;;;;13557:5;:18;13563:11;13557:18;;;;;;;;;;;;;;;:27;;:34;13585:5;13557:34;;;;;;;;;;;;;;;:50;;;:114;;;;;;;;;;;;;;;;;;12929:1505;;;13704:5;:68;13710:5;:22;13716:15;13710:22;;;;;;;;;;;;;;;:31;;:38;13742:5;13710:38;;;;;;;;;;;;;;;:58;;13769:1;13710:61;;;;;;;;;;;;;;;;;;;;;;;;;13704:68;;;;;;;;;;;;;;;:77;;:84;13782:5;13704:84;;;;;;;;;;;;;;;:104;;13814:11;13704:122;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;13704:122:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13872:5;:22;13878:15;13872:22;;;;;;;;;;;;;;;:31;;:38;13904:5;13872:38;;;;;;;;;;;;;;;:58;;13931:1;13872:61;;;;;;;;;;;;;;;;;;;;;;;;;13846:218;;13859:11;13846:218;;;13935:1;13938:5;13951;:68;13957:5;:22;13963:15;13957:22;;;;;;;;;;;;;;;:31;;:38;13989:5;13957:38;;;;;;;;;;;;;;;:58;;14016:1;13957:61;;;;;;;;;;;;;;;;;;;;;;;;;13951:68;;;;;;;;;;;;;;;:77;;:84;14029:5;13951:84;;;;;;;;;;;;;;;:104;;:111;;;;13846:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14110:15;14084:176;;14097:11;14084:176;;;14127:1;14130:5;14147;:68;14153:5;:22;14159:15;14153:22;;;;;;;;;;;;;;;:31;;:38;14185:5;14153:38;;;;;;;;;;;;;;;:58;;14212:1;14153:61;;;;;;;;;;;;;;;;;;;;;;;;;14147:68;;;;;;;;;;;;;;;:77;;:84;14225:5;14147:84;;;;;;;;;;;;;;;:104;;:111;;;;14137:1;:122;14084:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14361:5;:22;14367:15;14361:22;;;;;;;;;;;;;;;:31;;:38;14393:5;14361:38;;;;;;;;;;;;;;;:58;;14420:1;14361:61;;;;;;;;;;;;;;;;;;;;;;;;;14308:5;:18;14314:11;14308:18;;;;;;;;;;;;;;;:27;;:34;14336:5;14308:34;;;;;;;;;;;;;;;:50;;;:114;;;;;;;;;;;;;;;;;;12929:1505;12824:1617;;;;:::o;18287:1081::-;18391:7;18400:4;18417:16;18436:11;18417:30;;18458:21;18482:5;18458:29;;18512:1;18502:6;:11;;;18498:863;;;18530:394;18537:4;18530:394;;;18566:5;:15;18572:8;18566:15;;;;;;;;;;;;;;;:24;;:31;18591:5;18566:31;;;;;;;;;;;;;;;:39;;;;;;;;;;;;18562:347;;;18662:5;18635:43;;18652:8;18635:43;;;18669:1;18672:5;18635:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18720:4;18701:23;;18758:5;:15;18764:8;18758:15;;;;;;;;;;;;;;;:24;;:31;18783:5;18758:31;;;;;;;;;;;;;;;:47;;;;;;;;;;;;18747:58;;18562:347;;;18862:8;18872:16;18854:35;;;;;;;;18562:347;18530:394;;;18498:863;;;18956:394;18963:4;18956:394;;;18992:5;:15;18998:8;18992:15;;;;;;;;;;;;;;;:24;;:31;19017:5;18992:31;;;;;;;;;;;;;;;:39;;;;;;;;;;;;18988:347;;;19088:5;19061:43;;19078:8;19061:43;;;19095:1;19098:5;19061:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19146:4;19127:23;;19184:5;:15;19190:8;19184:15;;;;;;;;;;;;;;;:24;;:31;19209:5;19184:31;;;;;;;;;;;;;;;:47;;;;;;;;;;;;19173:58;;18988:347;;;19288:8;19298:16;19280:35;;;;;;;;18988:347;18956:394;;;18498:863;18287:1081;;;;;;;;;;:::o;28:21111::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://1b070227590517fe446659823a9d064d255ef353b5f41547d3c42ca2638ac2d4

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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.