MATIC Price: $0.506635 (+1.71%)
Gas: 30.1 GWei
 

Overview

MATIC Balance

Polygon PoS Chain LogoPolygon PoS Chain LogoPolygon PoS Chain Logo0.055 MATIC

MATIC Value

$0.03 (@ $0.51/MATIC)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Activate591165192024-07-08 17:15:464 days ago1720458946IN
0x79eC2652...032d64737
0.1 MATIC0.0148403930.69087861
Rescue Stuck Fun...578566702024-06-07 1:59:5535 days ago1717725595IN
0x79eC2652...032d64737
0 MATIC0.0009221538.8000001
Rescue Stuck Fun...578566702024-06-07 1:59:5535 days ago1717725595IN
0x79eC2652...032d64737
0 MATIC0.0011821138.80000008
Roll Dice574924692024-05-28 14:39:3445 days ago1716907174IN
0x79eC2652...032d64737
0 MATIC0.006635330.00552606
Activate574924562024-05-28 14:39:0645 days ago1716907146IN
0x79eC2652...032d64737
20 MATIC0.0218188930.00583576
Activate574924002024-05-28 14:37:0845 days ago1716907028IN
0x79eC2652...032d64737
20 MATIC0.0227820430.00803551
Activate574908882024-05-28 13:40:1345 days ago1716903613IN
0x79eC2652...032d64737
20 MATIC0.0251659330.0099293
Renounce Ownersh...574711902024-05-28 1:28:4845 days ago1716859728IN
0x79eC2652...032d64737
0 MATIC0.000705330.00000004
Activate574597582024-05-27 18:19:0046 days ago1716833940IN
0x79eC2652...032d64737
20 MATIC0.0153064430.26819732
Roll Dice574574492024-05-27 16:53:3046 days ago1716828810IN
0x79eC2652...032d64737
0 MATIC0.0068788330.42037226
Activate574568192024-05-27 16:30:0846 days ago1716827408IN
0x79eC2652...032d64737
20 MATIC0.0149663930.33029814
Transfer574566532024-05-27 16:24:1446 days ago1716827054IN
0x79eC2652...032d64737
5.99736832 MATIC0.0010545450.08520347
Activate574565162024-05-27 16:18:5246 days ago1716826732IN
0x79eC2652...032d64737
20 MATIC0.019967330.16646195
Activate574498162024-05-27 12:14:0046 days ago1716812040IN
0x79eC2652...032d64737
20 MATIC0.0122437830.00031748
Activate574489492024-05-27 11:42:4246 days ago1716810162IN
0x79eC2652...032d64737
20 MATIC0.0091904730.2950165
Activate574477232024-05-27 10:58:4446 days ago1716807524IN
0x79eC2652...032d64737
20 MATIC0.0170857833.32284302
0x60806040574476962024-05-27 10:57:4846 days ago1716807468IN
 Create: DigitalBinary
0 MATIC0.2076442334.26812442

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To Value
591165192024-07-08 17:15:464 days ago1720458946
0x79eC2652...032d64737
0.005 MATIC
591165192024-07-08 17:15:464 days ago1720458946
0x79eC2652...032d64737
0.02 MATIC
591165192024-07-08 17:15:464 days ago1720458946
0x79eC2652...032d64737
0.02 MATIC
578566702024-06-07 1:59:5535 days ago1717725595
0x79eC2652...032d64737
104.99736832 MATIC
574924562024-05-28 14:39:0645 days ago1716907146
0x79eC2652...032d64737
2 MATIC
574924562024-05-28 14:39:0645 days ago1716907146
0x79eC2652...032d64737
1 MATIC
574924562024-05-28 14:39:0645 days ago1716907146
0x79eC2652...032d64737
1 MATIC
574924562024-05-28 14:39:0645 days ago1716907146
0x79eC2652...032d64737
4 MATIC
574924562024-05-28 14:39:0645 days ago1716907146
0x79eC2652...032d64737
4 MATIC
574924002024-05-28 14:37:0845 days ago1716907028
0x79eC2652...032d64737
1 MATIC
574924002024-05-28 14:37:0845 days ago1716907028
0x79eC2652...032d64737
1 MATIC
574924002024-05-28 14:37:0845 days ago1716907028
0x79eC2652...032d64737
4 MATIC
574924002024-05-28 14:37:0845 days ago1716907028
0x79eC2652...032d64737
4 MATIC
574908882024-05-28 13:40:1345 days ago1716903613
0x79eC2652...032d64737
2 MATIC
574908882024-05-28 13:40:1345 days ago1716903613
0x79eC2652...032d64737
1 MATIC
574908882024-05-28 13:40:1345 days ago1716903613
0x79eC2652...032d64737
1 MATIC
574908882024-05-28 13:40:1345 days ago1716903613
0x79eC2652...032d64737
4 MATIC
574908882024-05-28 13:40:1345 days ago1716903613
0x79eC2652...032d64737
4 MATIC
574597582024-05-27 18:19:0046 days ago1716833940
0x79eC2652...032d64737
1 MATIC
574597582024-05-27 18:19:0046 days ago1716833940
0x79eC2652...032d64737
1 MATIC
574597582024-05-27 18:19:0046 days ago1716833940
0x79eC2652...032d64737
4 MATIC
574597582024-05-27 18:19:0046 days ago1716833940
0x79eC2652...032d64737
4 MATIC
574574492024-05-27 16:53:3046 days ago1716828810
0x79eC2652...032d64737
5 MATIC
574568192024-05-27 16:30:0846 days ago1716827408
0x79eC2652...032d64737
4 MATIC
574565162024-05-27 16:18:5246 days ago1716826732
0x79eC2652...032d64737
1 MATIC
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DigitalBinary

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2024-05-28
*/

// SPDX-License-Identifier: MIT License
pragma solidity 0.8.9;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
    * @dev Initializes the contract setting the deployer as the initial owner.
    */
    constructor () {
      address msgSender = _msgSender();
      _owner = msgSender;
      emit OwnershipTransferred(address(0), msgSender);
    }

    /**
    * @dev Returns the address of the current owner.
    */
    function owner() public view returns (address) {
      return _owner;
    }
    
    modifier onlyOwner() {
      require(_owner == _msgSender(), "Ownable: caller is not the owner");
      _;
    }
    
    function transferOwnership(address newOwner) public onlyOwner {
      _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
      require(newOwner != address(0), "Ownable: new owner is the zero address");
      emit OwnershipTransferred(_owner, newOwner);
      _owner = newOwner;
    }
	
	function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

abstract contract ReentrancyGuard {
    bool internal locked;

    modifier noReentrant() {
        require(!locked, "No re-entrancy");
        locked = true;
        _;
        locked = false;
    }
}

contract DigitalBinary is Context, Ownable, ReentrancyGuard  {
    using SafeMath for uint256;

    event _Deposit(address indexed addr, uint256 amount, uint256 upno, uint8 posno);
    event _Withdraw(address indexed addr, uint256 amount);
    event _referralBonus(address indexed addr, uint256 amt, uint256 level);
    event _pairingBonus(address indexed addr, uint256 slotno, uint256 amt, uint256 count);
    
    address payable public dev;
    address payable public mkg;
    
    uint256 constant PERCENT_DIVIDER = 1000; 
    uint256 public dev_comm		     = 200;     
    uint256[3] public ref_bonuses   = [200, 50, 50]; 
    uint256[10] public settings     = [1, 475, 525, 50, 50, 10, 5, 3, 3, 3];    
    uint256[2] public minimums      = [0.03 ether, 0.0005 ether];
        
    struct Raffle {
        address luckywallet;
        uint40 time;
        uint256 luckyNumber;
        uint256 amount;        
    }
    
    struct Affiliate {
        uint8 level;    
        address wallet;
    }

    struct Tarif {
        uint256 life_days;
        uint256 percent;
    }

    struct Depo {
		uint40 time;  
        uint256 tarif;
        uint256 amount;        
    }

    struct BinarySlot {
        address wallet;
        uint slotno;
        uint upno;
        uint leftno;
        uint rightno;
        uint countLeft;
        uint countRight;
        uint pairs;
        uint pairEarnings;
    }    
        
    struct Player {		
		address sponsor;
        uint256 dividends;        
		uint256 total_deposits;
        uint256 total_payouts;
        uint256 total_commissions;
        uint256 total_pairs;      
        uint256 total_cashbacks;  
		uint40 lastWithdrawn;
        uint256 total_prize;
        uint256 lastDice;	    

        Affiliate[] aff1;
        Affiliate[] aff2;
   		Affiliate[] aff3;
   		uint256[3] structure; 		
        uint256[] slots;
        Depo[] deposits;
        Raffle[] raffles;      
    }

    mapping(address => Player) public players;
    mapping(uint256 => Tarif) public tarifs;
    
    mapping(uint256 => address) public membersNo;    
    uint public nextMemberNo;
    
    mapping(address => uint8) public banned;
    uint public nextBannedWallet;

    BinarySlot[] public binarySlots;
    uint public nextSlotNo;
    
    Raffle[] public raffles;
    uint public nextRaffleNo;

    uint256 private deposits;
    uint256 private payouts;
    uint256 private commissions;
    uint256 private pairings;
    uint256 private cashbacks;
    uint256 private prize_pool;
    uint256 private prize_won;

    constructor() {
        dev = payable(msg.sender); 
		mkg = payable(0xAa16fd2a3bE244CE5CeEe1303db6b4C2DE623e22); 
        
        tarifs[0] = Tarif(300, 150);
        
        membersNo[ nextMemberNo ] = address(this);
        nextMemberNo++; 
        
        Player storage player = players[msg.sender];
        player.sponsor = address(0);
        player.total_deposits = minimums[0];
        
        membersNo[ nextMemberNo ] = msg.sender;
        newBinarySlot(msg.sender, 0, 0);
        
        player.slots.push(nextSlotNo);  
        nextMemberNo++;         
    }    
    
    fallback() external payable {
        
    }

    receive() external payable {
       
    }

    function rescueStuckFunds() external {
        require(msg.sender==dev,"Unauthorized!"); 
        payable(dev).transfer(address(this).balance);
    }
    
    function Activate(address sponsor, uint256 upno, uint8 posno) external payable {
         if( banned[msg.sender] > 0) { return; }
        require(msg.value >= minimums[0], "Your BNB is less than minimum entry!");

        Player storage player = players[msg.sender];
        setUpline(msg.sender, sponsor);
         player.deposits.push(Depo({
			tarif: 0,
            amount: msg.value,
            time: uint40(block.timestamp)
        }));  

        player.total_deposits += msg.value;
        deposits += msg.value;
        
        uint256 m = SafeMath.div(SafeMath.mul(msg.value, dev_comm), PERCENT_DIVIDER);
		payable(mkg).transfer(m);                              
        payouts += m;                      
        
        if(settings[3] > 0){
            uint256 prize = SafeMath.div(SafeMath.mul(msg.value, settings[3]), PERCENT_DIVIDER);    
            prize_pool += prize;     
        }
		
        commissionPayouts(msg.sender, msg.value);     

        emit _Deposit(msg.sender, msg.value, upno, posno);

        if(upno==0){
            (upno, posno) = this.availableSlot(sponsor,0);
        }

        newBinarySlot(msg.sender, upno, posno);
        player.slots.push(nextSlotNo);    

    }
    
    function newBinarySlot(address owner, uint upno, uint8 posno) private {
        
        if(upno > 0){
            if(posno == 1 && binarySlots[upno-1].leftno > 0){
                require(1==2,"Invalid Position!");
            }        
            if(posno == 2 && binarySlots[upno-1].rightno > 0)
            {
                require(1==2,"Invalid Position!");   
            }
        }

        nextSlotNo++;
        BinarySlot memory b_slot;
        b_slot = BinarySlot({ 
            wallet: owner, 
            slotno: nextSlotNo, 
            upno: upno, 
            leftno: 0, 
            rightno: 0, 
            countLeft:0, 
            countRight:0, 
            pairs: 0, 
            pairEarnings: 0
        });
        
        binarySlots.push(b_slot);      
       
        if(upno > 0){
            if(posno == 1){
                binarySlots[upno-1].leftno = nextSlotNo;
            }else{
                binarySlots[upno-1].rightno = nextSlotNo;
            }                    
        }                   

        if(nextSlotNo >= ref_bonuses.length){
            computePairs(upno);
        }

    }

    function computePairs(uint slotno) private 
    {
        uint8 paidCount;
        uint minPairs;
        uint upno;
        uint idx;
        uint sumLeft = 0; uint sumRight = 0; uint8 depth = 1; 
        
        while(slotno > 1 && depth <= settings[6] && paidCount < settings[7]) 
        {
            idx = slotno-1;
            
            if( binarySlots[idx].leftno > 0 ){ sumLeft++; }    
            if( binarySlots[idx].rightno > 0 ){ sumRight++; }     
            
            if(binarySlots[idx].countLeft < sumLeft){ binarySlots[idx].countLeft = sumLeft; }
            if(binarySlots[idx].countRight < sumRight){ binarySlots[idx].countRight = sumRight; }

            upno = binarySlots[idx].upno;
            if((upno-1) >= 1)
            {
                if(binarySlots[upno-1].leftno == slotno){
                    sumLeft = binarySlots[idx].countLeft + binarySlots[idx].countRight;
                    sumRight = 0;
                }else if(binarySlots[upno-1].rightno == slotno){
                    sumRight = binarySlots[idx].countLeft + binarySlots[idx].countRight;
                    sumLeft = 0;
                }
            }          
           
            slotno = upno; //the upline will be the new slot we will next work on
            depth++;
            
            //any new pair?
            minPairs = binarySlots[idx].countLeft;
            if(minPairs > binarySlots[idx].countRight){ minPairs = binarySlots[idx].countRight; }
            if(minPairs > binarySlots[idx].pairs )
            {
                binarySlots[idx].pairs++;
                
                if(paidCount < settings[9]){
                    uint pair_bonus = msg.value.div(settings[5]);
                    
                    binarySlots[idx].pairEarnings += pair_bonus;
                    
                    payable(binarySlots[idx].wallet).transfer(pair_bonus);    
                    players[binarySlots[idx].wallet].total_pairs  += pair_bonus;
                    pairings += pair_bonus;
                    paidCount++;
                    
                    emit _pairingBonus(binarySlots[idx].wallet, (idx+1), pair_bonus, paidCount);
                }

            }
            
        }
   
    }

    function availableSlot(address addr, uint8 t) external view returns (uint, uint8) {
        uint slotno;
        if(t > 0){
            for (uint j = 0; j < players[addr].slots.length; j++) {
                
                slotno = players[addr].slots[j];
                
                if(binarySlots[slotno.sub(1)].leftno == 0){
                    return(slotno, 1);
                    
                }else if(binarySlots[slotno.sub(1)].rightno == 0){
                    return(slotno, 2);
                
                }

            }

        }else{
            address _addr;
            for (uint i = settings[8]; i < nextMemberNo; i++) {
                _addr = membersNo[i];
                for (uint j = 0; j < players[_addr].slots.length; j++) {

                    slotno = players[_addr].slots[j];
    	    
                    if(binarySlots[slotno.sub(1)].leftno == 0){
                        return(slotno, 1);
                        
                    }else if(binarySlots[slotno.sub(1)].rightno == 0){
                        return(slotno, 2);
                    
                    }

                }
            }
        }
        return(0, 0);
    }


    function Payout(uint256 requestamount) external noReentrant {     
        if( banned[msg.sender] > 0) { return; }
        Player storage player = players[msg.sender];
        getPayout(msg.sender);
        
        require(player.dividends >= minimums[1], "Your dividends is less than minimum payout!");
        
        uint256 amount =  player.dividends;
        if(requestamount <= amount && requestamount > 0){            
            player.dividends = SafeMath.sub(amount, requestamount);
            amount = requestamount;
        }else{
            player.dividends = 0;
        }        
                
        player.total_payouts += amount;            
        payouts += amount;
        emit _Withdraw(msg.sender, amount);    

        address up = players[msg.sender].sponsor;
		uint256 cashBack = SafeMath.div(SafeMath.mul(amount, settings[4]), PERCENT_DIVIDER);
        players[up].total_cashbacks += cashBack;        
        cashbacks += cashBack;    
        
        if(settings[3] > 0){
            uint256 prize = SafeMath.div(SafeMath.mul(amount, settings[3]), PERCENT_DIVIDER);    
            prize_pool += prize;     
        }
        
        payable(up).transfer(cashBack);
        payable(msg.sender).transfer(amount);            
        
    }    

    function commissionPayouts(address _addr, uint256 _amount) private {
        address up = players[_addr].sponsor;
        if(up == address(0) || up == owner()) return;

        for(uint8 i = 0; i < ref_bonuses.length; i++) {
            if(up == address(0)) break;
            
            uint256 bonus = _amount * ref_bonuses[i] / PERCENT_DIVIDER;
            payable(up).transfer(bonus);
			players[up].total_commissions += bonus;
			commissions += bonus;            
            up = players[up].sponsor;

            emit _referralBonus(up, bonus, (i+1));
        }       
    }
	


    function setUpline(address _addr, address sp) private {
        if(players[_addr].sponsor == address(0) && _addr != owner()) {     

            if(players[sp].deposits.length == 0) {
				sp = owner();
            }	
            membersNo[ nextMemberNo ] = _addr;				
			nextMemberNo++;           			            
            players[_addr].sponsor = sp;
            for(uint8 i = 0; i < ref_bonuses.length; i++) {
                players[sp].structure[i]++;
				Player storage up = players[sp];
                if(i == 0){
                    up.aff1.push(Affiliate({
                        level: 1,
                        wallet: _addr
                    }));  
                }else if(i == 1){
                    up.aff2.push(Affiliate({
                        level: 2,
                        wallet: _addr
                    }));  
                }else if(i == 2){
                    up.aff3.push(Affiliate({
                        level: 3,
                        wallet: _addr
                    }));  
                }
				
                sp = players[sp].sponsor;
                if(sp == address(0)) break;
            }
        }
    }

    function computePayout(address _addr) view external returns(uint256 value) {
        if( banned[msg.sender] > 0) { return 0; }

		Player storage player = players[_addr];
    
        for(uint256 i = 0; i < player.deposits.length; i++) {
            Depo storage dep = player.deposits[i];
            
            Tarif storage tarif = tarifs[dep.tarif];
        
            uint256 time_end = dep.time + tarif.life_days * 86400;
            uint40 from = player.lastWithdrawn > dep.time ? player.lastWithdrawn : dep.time;
            uint256 to = block.timestamp > time_end ? time_end : block.timestamp;

            if(from < to) {
                value += dep.amount * (to - from) * tarif.percent / tarif.life_days / 8640000;
            }            
        }
        return value;
    }

    function getPayout(address _addr) private {
        uint256 payout = this.computePayout(_addr);
        if(payout > 0) {            
            players[_addr].lastWithdrawn = uint40(block.timestamp);
            players[_addr].dividends += payout;
        }
    }      

    
    function rollDice() external noReentrant  { 
        if( banned[msg.sender] > 0) { return; }

        Player storage player = players[msg.sender];		
        require(player.deposits.length > 0, "Unregistered Wallet!");
        
        if(prize_pool <= 0){ return; }
        uint256 luck = rand(999);
        uint256 prize;
        
        if(luck >= settings[1] && luck <= settings[2]){
            if(getBalance() >= prize_pool && prize_pool > 0){    
                prize = prize_pool;            
                prize_pool = 0;
                prize_won += prize;
                player.total_prize += prize;                
                payable(msg.sender).transfer(prize);
            }
        }        
        Raffle memory new_raffle;                
        new_raffle = Raffle({
            time: uint40(block.timestamp),
            amount: prize,
            luckywallet: msg.sender,
            luckyNumber: luck
        });            
        raffles.push(new_raffle);                
        player.raffles.push(new_raffle);  
        player.lastDice = luck;
        nextRaffleNo++;
    }       

    function rand(uint256 max) public view returns(uint256)
    {
        uint256 seed = uint256(keccak256(abi.encodePacked(
            block.timestamp + block.difficulty +
            ((uint256(keccak256(abi.encodePacked(block.coinbase)))) / (block.timestamp)) +
            block.gaslimit + 
            ((uint256(keccak256(abi.encodePacked(msg.sender)))) / (block.timestamp)) +
            block.number
        )));
        return (seed - ((seed / max) * max));
    }

    function dicedRolled(address _addr, uint256 index) view external returns(uint40 time, uint256 luckyNum, uint256 amount)
    {
        Player storage player = players[_addr];
        Raffle storage dice = player.raffles[index];
        return(dice.time, dice.luckyNumber, dice.amount);
    }    

    function memberSlotsCount(address addr) public view returns(uint) {
        return players[addr].slots.length;
    }
    
    function slotCorrection(uint idx, uint8 idx2, uint256 newval) external {
        require(msg.sender==dev,"Unauthorized!"); 
        if(idx2==1){
            binarySlots[idx].countLeft = newval;
        }else if(idx2==2){
            binarySlots[idx].countRight = newval;
        }else if(idx2==3){
            binarySlots[idx].upno = newval;
        }else if(idx2==4){
            binarySlots[idx].leftno = newval;
        }else if(idx2==5){
            binarySlots[idx].rightno = newval;
        }else if(idx2==6){
            binarySlots[idx].pairs = newval;
        }        
    }

    function getSlotOwner(uint idx) public view returns(address) {
        return (binarySlots[idx].wallet);
    }
    
    function memberSlotAt(address addr, uint256 idx) public view returns(uint256 slotno, uint256 upno, uint256 leftno, uint256 rightno, address wallet) {
        return getSlot( players[addr].slots[ idx ].sub(1));
    }
        
    function getSlot(uint256 idx) public view returns(uint256 slotno, uint256 upno, uint256 leftno, uint256 rightno, address wallet) {
        return (binarySlots[idx].slotno, binarySlots[idx].upno, binarySlots[idx].leftno, binarySlots[idx].rightno, binarySlots[idx].wallet);
    }
    
    function getSlotPairs(uint256 idx) public view returns(uint256 slotno, uint256 countLeft, uint256 countRight, uint256 pairs, uint256 earnings ) {
        return (binarySlots[idx].slotno, binarySlots[idx].countLeft, binarySlots[idx].countRight, binarySlots[idx].pairs, binarySlots[idx].pairEarnings);
    }
    
    function setRate(uint8 index, uint256 index2, uint256 newval) external {   
        require(msg.sender==dev,"Unauthorized!"); 
        if(index==1)
        {
            dev_comm = newval;
        }else if(index==2){
            ref_bonuses[index2] = newval;
        }else if(index==3){
            minimums[index2] = newval;
        }
    }   
       
    function setSponsor(address member, address newSP) external {
        require(msg.sender==dev,"Unauthorized!");
        players[member].sponsor = newSP;
    }
    
    function setDev(uint8 idx, address payable newval) external {
        require(msg.sender==dev,"Unauthorized!");
        if(idx==1){
            dev = newval;
        }else{
            mkg = newval;
        }
    }	

    function setPercentage(uint256 total_days, uint256 total_perc) external {
        require(msg.sender==dev,"Unauthorized!");
	    tarifs[0] = Tarif(total_days, total_perc);
    }

    
    function banWallet(address wallet) external {
        require(msg.sender==dev,"Unauthorized!");
        banned[wallet] = 1;
        nextBannedWallet++;
    }
	
	function unbanWallet(address wallet) external {
        require(msg.sender==dev,"Unauthorized!");
        banned[wallet] = 0;
        players[wallet].lastWithdrawn = uint40(block.timestamp);
        if(nextBannedWallet > 0){ nextBannedWallet--; }
    }
    
    function memberAddressByNo(uint256 idx) public view returns(address) {
         return membersNo[idx];
    }   
       
    function memberStruct(address _addr) view external returns(address sp, uint256 numDeposits, uint256 numRaffles, uint256 numSlots, uint256[3] memory structure) {
        Player storage player = players[_addr];        
        for(uint8 i = 0; i < ref_bonuses.length; i++) {
            structure[i] = player.structure[i];
        }
        return (player.sponsor, player.deposits.length, player.raffles.length, player.slots.length, structure);
    } 
	
    function memberStats(address _addr) view external returns(uint256 _deposits, uint256 _payouts, uint256 _comm, uint256 _pairings, 
                                                                uint256 _cashbacks, uint256 total_prize, uint256 forwithdraw, uint40 lastW)
    {
        Player storage player = players[_addr];        
        uint256 payout = this.computePayout(_addr);
        return( player.total_deposits,
                player.total_payouts,
                player.total_commissions, 
                player.total_pairs, 
                player.total_cashbacks,
                player.total_prize,
                (payout + player.dividends), player.lastWithdrawn);
    }

    function memberDownline(address _addr, uint8 level, uint256 index) view external returns(address follower)
    {
        Player storage player = players[_addr];
        Affiliate storage dl;
        if(level==1){
            dl  = player.aff1[index];
        }else if(level == 2){
            dl  = player.aff2[index];
        }else{
            dl  = player.aff3[index];
        }        
        return(dl.wallet);
    }

    function memberDeposit(address _addr, uint256 index) view external returns(uint40 time, uint256 amount, uint256 lifedays, uint256 percent)
    {
        Player storage player = players[_addr];
        Depo storage dep = player.deposits[index];
        Tarif storage tarif = tarifs[dep.tarif];
        return(dep.time, dep.amount, tarif.life_days, tarif.percent);
    }     

    function contractInfo() view external returns(uint256 invested, uint256 withdrawn, uint256 rewards, uint256 _pairings, uint256 _cashbacks, uint256 _prize, uint256 _won) {
        return (deposits, payouts, commissions, pairings, cashbacks, prize_pool, prize_won);
    }
    

    function getBalance() public view returns(uint256) {
        return address(this).balance;
    }

    function getOwner() external view returns (address) {
        return owner();
    }
    
       
}


library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }

    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"upno","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"posno","type":"uint8"}],"name":"_Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"slotno","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"count","type":"uint256"}],"name":"_pairingBonus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"level","type":"uint256"}],"name":"_referralBonus","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"sponsor","type":"address"},{"internalType":"uint256","name":"upno","type":"uint256"},{"internalType":"uint8","name":"posno","type":"uint8"}],"name":"Activate","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"requestamount","type":"uint256"}],"name":"Payout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint8","name":"t","type":"uint8"}],"name":"availableSlot","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"banWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"banned","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"binarySlots","outputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"slotno","type":"uint256"},{"internalType":"uint256","name":"upno","type":"uint256"},{"internalType":"uint256","name":"leftno","type":"uint256"},{"internalType":"uint256","name":"rightno","type":"uint256"},{"internalType":"uint256","name":"countLeft","type":"uint256"},{"internalType":"uint256","name":"countRight","type":"uint256"},{"internalType":"uint256","name":"pairs","type":"uint256"},{"internalType":"uint256","name":"pairEarnings","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"computePayout","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractInfo","outputs":[{"internalType":"uint256","name":"invested","type":"uint256"},{"internalType":"uint256","name":"withdrawn","type":"uint256"},{"internalType":"uint256","name":"rewards","type":"uint256"},{"internalType":"uint256","name":"_pairings","type":"uint256"},{"internalType":"uint256","name":"_cashbacks","type":"uint256"},{"internalType":"uint256","name":"_prize","type":"uint256"},{"internalType":"uint256","name":"_won","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dev","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dev_comm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"dicedRolled","outputs":[{"internalType":"uint40","name":"time","type":"uint40"},{"internalType":"uint256","name":"luckyNum","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"idx","type":"uint256"}],"name":"getSlot","outputs":[{"internalType":"uint256","name":"slotno","type":"uint256"},{"internalType":"uint256","name":"upno","type":"uint256"},{"internalType":"uint256","name":"leftno","type":"uint256"},{"internalType":"uint256","name":"rightno","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"idx","type":"uint256"}],"name":"getSlotOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"idx","type":"uint256"}],"name":"getSlotPairs","outputs":[{"internalType":"uint256","name":"slotno","type":"uint256"},{"internalType":"uint256","name":"countLeft","type":"uint256"},{"internalType":"uint256","name":"countRight","type":"uint256"},{"internalType":"uint256","name":"pairs","type":"uint256"},{"internalType":"uint256","name":"earnings","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"idx","type":"uint256"}],"name":"memberAddressByNo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"memberDeposit","outputs":[{"internalType":"uint40","name":"time","type":"uint40"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"lifedays","type":"uint256"},{"internalType":"uint256","name":"percent","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"memberDownline","outputs":[{"internalType":"address","name":"follower","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"idx","type":"uint256"}],"name":"memberSlotAt","outputs":[{"internalType":"uint256","name":"slotno","type":"uint256"},{"internalType":"uint256","name":"upno","type":"uint256"},{"internalType":"uint256","name":"leftno","type":"uint256"},{"internalType":"uint256","name":"rightno","type":"uint256"},{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"memberSlotsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"memberStats","outputs":[{"internalType":"uint256","name":"_deposits","type":"uint256"},{"internalType":"uint256","name":"_payouts","type":"uint256"},{"internalType":"uint256","name":"_comm","type":"uint256"},{"internalType":"uint256","name":"_pairings","type":"uint256"},{"internalType":"uint256","name":"_cashbacks","type":"uint256"},{"internalType":"uint256","name":"total_prize","type":"uint256"},{"internalType":"uint256","name":"forwithdraw","type":"uint256"},{"internalType":"uint40","name":"lastW","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"memberStruct","outputs":[{"internalType":"address","name":"sp","type":"address"},{"internalType":"uint256","name":"numDeposits","type":"uint256"},{"internalType":"uint256","name":"numRaffles","type":"uint256"},{"internalType":"uint256","name":"numSlots","type":"uint256"},{"internalType":"uint256[3]","name":"structure","type":"uint256[3]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"membersNo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"minimums","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mkg","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextBannedWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextMemberNo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextRaffleNo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextSlotNo","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":"","type":"address"}],"name":"players","outputs":[{"internalType":"address","name":"sponsor","type":"address"},{"internalType":"uint256","name":"dividends","type":"uint256"},{"internalType":"uint256","name":"total_deposits","type":"uint256"},{"internalType":"uint256","name":"total_payouts","type":"uint256"},{"internalType":"uint256","name":"total_commissions","type":"uint256"},{"internalType":"uint256","name":"total_pairs","type":"uint256"},{"internalType":"uint256","name":"total_cashbacks","type":"uint256"},{"internalType":"uint40","name":"lastWithdrawn","type":"uint40"},{"internalType":"uint256","name":"total_prize","type":"uint256"},{"internalType":"uint256","name":"lastDice","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"raffles","outputs":[{"internalType":"address","name":"luckywallet","type":"address"},{"internalType":"uint40","name":"time","type":"uint40"},{"internalType":"uint256","name":"luckyNumber","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"rand","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ref_bonuses","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueStuckFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rollDice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"idx","type":"uint8"},{"internalType":"address payable","name":"newval","type":"address"}],"name":"setDev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"total_days","type":"uint256"},{"internalType":"uint256","name":"total_perc","type":"uint256"}],"name":"setPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"},{"internalType":"uint256","name":"index2","type":"uint256"},{"internalType":"uint256","name":"newval","type":"uint256"}],"name":"setRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"member","type":"address"},{"internalType":"address","name":"newSP","type":"address"}],"name":"setSponsor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"settings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"idx","type":"uint256"},{"internalType":"uint8","name":"idx2","type":"uint8"},{"internalType":"uint256","name":"newval","type":"uint256"}],"name":"slotCorrection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tarifs","outputs":[{"internalType":"uint256","name":"life_days","type":"uint256"},{"internalType":"uint256","name":"percent","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"unbanWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260c8600355604051806060016040528060c860ff168152602001603260ff168152602001603260ff1681525060049060036200004292919062000eef565b50604051806101400160405280600161ffff1681526020016101db61ffff16815260200161020d61ffff168152602001603261ffff168152602001603261ffff168152602001600a61ffff168152602001600561ffff168152602001600361ffff168152602001600361ffff168152602001600361ffff16815250600790600a620000cf92919062000f39565b506040518060400160405280666a94d74f43000066ffffffffffffff1681526020016601c6bf5263400066ffffffffffffff1681525060119060026200011792919062000f84565b503480156200012557600080fd5b506000620001386200047b60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073aa16fd2a3be244ce5ceee1303db6b4c2de623e22600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806040016040528061012c815260200160968152506014600080815260200190815260200160002060008201518160000155602082015181600101559050503060156000601654815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506016600081548092919062000317906200108e565b91905055506000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506011600060028110620003bb57620003ba620010dc565b5b015481600201819055503360156000601654815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200042d336000806200048360201b60201c565b80601001601a549080600181540180825580915050600190039060005260206000200160009091909190915055601660008154809291906200046f906200108e565b9190505550506200135a565b600033905090565b6000821115620005be5760018160ff16148015620004d7575060006019600184620004af91906200110b565b81548110620004c357620004c2620010dc565b5b906000526020600020906009020160030154115b156200052557600260011462000524576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200051b90620011a7565b60405180910390fd5b5b60028160ff161480156200056f5750600060196001846200054791906200110b565b815481106200055b576200055a620010dc565b5b906000526020600020906009020160040154115b15620005bd576002600114620005bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005b390620011a7565b60405180910390fd5b5b5b601a6000815480929190620005d3906200108e565b9190505550620005e262000fd4565b6040518061012001604052808573ffffffffffffffffffffffffffffffffffffffff168152602001601a548152602001848152602001600081526020016000815260200160008152602001600081526020016000815260200160008152509050601981908060018154018082558091505060019003906000526020600020906009020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070155610100820151816008015550506000831115620007a15760018260ff1614156200076257601a5460196001856200073391906200110b565b81548110620007475762000746620010dc565b5b906000526020600020906009020160030181905550620007a0565b601a5460196001856200077691906200110b565b815481106200078a5762000789620010dc565b5b9060005260206000209060090201600401819055505b5b6003601a5410620007be57620007bd83620007c460201b60201c565b5b50505050565b6000806000806000806000600190505b60018811801562000801575060076006600a8110620007f857620007f7620010dc565b5b01548160ff1611155b8015620008285750600780600a811062000820576200081f620010dc565b5b01548760ff16105b1562000ecd576001886200083d91906200110b565b9350600060198581548110620008585762000857620010dc565b5b9060005260206000209060090201600301541115620008825782806200087e906200108e565b9350505b6000601985815481106200089b576200089a620010dc565b5b9060005260206000209060090201600401541115620008c5578180620008c1906200108e565b9250505b8260198581548110620008dd57620008dc620010dc565b5b9060005260206000209060090201600501541015620009245782601985815481106200090e576200090d620010dc565b5b9060005260206000209060090201600501819055505b81601985815481106200093c576200093b620010dc565b5b9060005260206000209060090201600601541015620009835781601985815481106200096d576200096c620010dc565b5b9060005260206000209060090201600601819055505b601984815481106200099a5762000999620010dc565b5b906000526020600020906009020160020154945060018086620009be91906200110b565b1062000b1357876019600187620009d691906200110b565b81548110620009ea57620009e9620010dc565b5b906000526020600020906009020160030154141562000a6d576019848154811062000a1a5762000a19620010dc565b5b9060005260206000209060090201600601546019858154811062000a435762000a42620010dc565b5b90600052602060002090600902016005015462000a619190620011c9565b92506000915062000b12565b87601960018762000a7f91906200110b565b8154811062000a935762000a92620010dc565b5b906000526020600020906009020160040154141562000b11576019848154811062000ac35762000ac2620010dc565b5b9060005260206000209060090201600601546019858154811062000aec5762000aeb620010dc565b5b90600052602060002090600902016005015462000b0a9190620011c9565b9150600092505b5b5b849750808062000b239062001233565b9150506019848154811062000b3d5762000b3c620010dc565b5b90600052602060002090600902016005015495506019848154811062000b685762000b67620010dc565b5b90600052602060002090600902016006015486111562000bae576019848154811062000b995762000b98620010dc565b5b90600052602060002090600902016006015495505b6019848154811062000bc55762000bc4620010dc565b5b90600052602060002090600902016007015486111562000ec7576019848154811062000bf65762000bf5620010dc565b5b9060005260206000209060090201600701600081548092919062000c1a906200108e565b919050555060076009600a811062000c375762000c36620010dc565b5b01548760ff16101562000ec657600062000c7960076005600a811062000c625762000c61620010dc565b5b01543462000ed760201b620035b11790919060201c565b9050806019868154811062000c935762000c92620010dc565b5b9060005260206000209060090201600801600082825462000cb59190620011c9565b925050819055506019858154811062000cd35762000cd2620010dc565b5b906000526020600020906009020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801562000d4b573d6000803e3d6000fd5b5080601360006019888154811062000d685762000d67620010dc565b5b906000526020600020906009020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501600082825462000de89190620011c9565b92505081905550806020600082825462000e039190620011c9565b92505081905550878062000e179062001233565b9850506019858154811062000e315762000e30620010dc565b5b906000526020600020906009020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f9f8082f6f8ef3981468ab74d109fedb4d08c8f498e0962d63d1c232fb716e37760018762000ea99190620011c9565b838b60405162000ebc93929190620012b6565b60405180910390a2505b5b620007d4565b5050505050505050565b6000818362000ee7919062001322565b905092915050565b826003810192821562000f26579160200282015b8281111562000f25578251829060ff1690559160200191906001019062000f03565b5b50905062000f35919062001036565b5090565b82600a810192821562000f71579160200282015b8281111562000f70578251829061ffff1690559160200191906001019062000f4d565b5b50905062000f80919062001036565b5090565b826002810192821562000fc1579160200282015b8281111562000fc0578251829066ffffffffffffff1690559160200191906001019062000f98565b5b50905062000fd0919062001036565b5090565b604051806101200160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5b808211156200105157600081600090555060010162001037565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b60006200109b8262001084565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415620010d157620010d062001055565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000620011188262001084565b9150620011258362001084565b9250828210156200113b576200113a62001055565b5b828203905092915050565b600082825260208201905092915050565b7f496e76616c696420506f736974696f6e21000000000000000000000000000000600082015250565b60006200118f60118362001146565b91506200119c8262001157565b602082019050919050565b60006020820190508181036000830152620011c28162001180565b9050919050565b6000620011d68262001084565b9150620011e38362001084565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200121b576200121a62001055565b5b828201905092915050565b600060ff82169050919050565b6000620012408262001226565b915060ff82141562001257576200125662001055565b5b600182019050919050565b6200126d8162001084565b82525050565b6000819050919050565b60006200129e62001298620012928462001226565b62001273565b62001084565b9050919050565b620012b0816200127d565b82525050565b6000606082019050620012cd600083018662001262565b620012dc602083018562001262565b620012eb6040830184620012a5565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200132f8262001084565b91506200133c8362001084565b9250826200134f576200134e620012f3565b5b828204905092915050565b615eb1806200136a6000396000f3fe60806040526004361061028c5760003560e01c80637a777d2c1161015a5780639c8d83bb116100c1578063cb0623991161007a578063cb06239914610ad7578063e2eb41ff14610b02578063ee36426114610b48578063efdaa57714610b85578063f01fba9314610ba1578063f2fde38b14610bca57610293565b80639c8d83bb1461095e5780639dc331311461099b578063a95fd41b146109d8578063b7d9f0d214610a1d578063c02036af14610a5a578063c7bc2a6314610a9757610293565b8063880ea6c211610113578063880ea6c214610837578063893d20e8146108625780638da5cb5b1461088d5780638e098215146108b857806391cca3db146108f6578063981db3a71461092157610293565b80637a777d2c146106fe5780637eba7ba61461073b5780637fd877721461077c578063815f84b7146107b9578063837d4198146107e2578063837e7cc61461082057610293565b80632d91060a116101fe5780635d4bc0ce116101b75780635d4bc0ce146105ed5780635d6d808f1461062d57806362994fd51461066a5780636391def5146106935780636a4aef02146106be578063715018a6146106e757610293565b80632d91060a146104aa5780632eeb87bb146104ee5780634a58dfc714610517578063501e0a5814610542578063516c97e11461056b5780635408067c146105ac57610293565b80632242704711610250578063224270471461035c57806323306a271461038557806323723ecc146103c657806323b023cf14610405578063241a93f9146104425780632530c9051461046d57610293565b80630a5c722f1461029557806312065fe0146102ac57806315c43aaf146102d7578063178299361461030857806321850bf01461033357610293565b3661029357005b005b3480156102a157600080fd5b506102aa610bf3565b005b3480156102b857600080fd5b506102c1610cee565b6040516102ce9190614c00565b60405180910390f35b3480156102e357600080fd5b506102ec610cf6565b6040516102ff9796959493929190614c1b565b60405180910390f35b34801561031457600080fd5b5061031d610d2d565b60405161032a9190614c00565b60405180910390f35b34801561033f57600080fd5b5061035a60048036038101906103559190614ced565b610d33565b005b34801561036857600080fd5b50610383600480360381019061037e9190614d46565b610e37565b005b34801561039157600080fd5b506103ac60048036038101906103a79190614d73565b61128e565b6040516103bd959493929190614dc2565b60405180910390f35b3480156103d257600080fd5b506103ed60048036038101906103e89190614d73565b611324565b6040516103fc93929190614e35565b60405180910390f35b34801561041157600080fd5b5061042c60048036038101906104279190614d46565b6113c2565b6040516104399190614e6c565b60405180910390f35b34801561044e57600080fd5b506104576113f5565b6040516104649190614ea8565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190614d46565b61141b565b6040516104a19190614c00565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190614ced565b611513565b6040516104e5989796959493929190614ec3565b60405180910390f35b3480156104fa57600080fd5b5061051560048036038101906105109190614f41565b611650565b005b34801561052357600080fd5b5061052c611723565b6040516105399190614c00565b60405180910390f35b34801561054e57600080fd5b5061056960048036038101906105649190614fba565b611729565b005b34801561057757600080fd5b50610592600480360381019061058d9190614d46565b61182a565b6040516105a395949392919061500d565b60405180910390f35b3480156105b857600080fd5b506105d360048036038101906105ce9190614ced565b611903565b6040516105e495949392919061510b565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f9190614d46565b611a00565b604051610624949392919061515e565b60405180910390f35b34801561063957600080fd5b50610654600480360381019061064f9190614ced565b611a71565b6040516106619190614c00565b60405180910390f35b34801561067657600080fd5b50610691600480360381019061068c91906151cf565b611cbc565b005b34801561069f57600080fd5b506106a8611de4565b6040516106b59190614c00565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e09190614ced565b611dea565b005b3480156106f357600080fd5b506106fc611f5d565b005b34801561070a57600080fd5b5061072560048036038101906107209190614d46565b6120b0565b6040516107329190614c00565b60405180910390f35b34801561074757600080fd5b50610762600480360381019061075d9190614d46565b6120cb565b604051610773959493929190614dc2565b60405180910390f35b34801561078857600080fd5b506107a3600480360381019061079e919061520f565b6121c4565b6040516107b09190614e6c565b60405180910390f35b3480156107c557600080fd5b506107e060048036038101906107db9190615262565b6122c4565b005b3480156107ee57600080fd5b50610809600480360381019061080491906152b5565b6124bc565b604051610817929190615304565b60405180910390f35b34801561082c57600080fd5b5061083561281e565b005b34801561084357600080fd5b5061084c612c6f565b6040516108599190614c00565b60405180910390f35b34801561086e57600080fd5b50610877612c75565b6040516108849190614e6c565b60405180910390f35b34801561089957600080fd5b506108a2612c84565b6040516108af9190614e6c565b60405180910390f35b3480156108c457600080fd5b506108df60048036038101906108da9190614d46565b612cad565b6040516108ed92919061532d565b60405180910390f35b34801561090257600080fd5b5061090b612cd1565b6040516109189190614ea8565b60405180910390f35b34801561092d57600080fd5b5061094860048036038101906109439190614d46565b612cf7565b6040516109559190614c00565b60405180910390f35b34801561096a57600080fd5b5061098560048036038101906109809190614ced565b612d12565b6040516109929190615356565b60405180910390f35b3480156109a757600080fd5b506109c260048036038101906109bd9190614ced565b612d32565b6040516109cf9190614c00565b60405180910390f35b3480156109e457600080fd5b506109ff60048036038101906109fa9190614d46565b612d81565b604051610a1499989796959493929190615371565b60405180910390f35b348015610a2957600080fd5b50610a446004803603810190610a3f9190614d46565b612dff565b604051610a519190614c00565b60405180910390f35b348015610a6657600080fd5b50610a816004803603810190610a7c9190614d46565b612e1a565b604051610a8e9190614e6c565b60405180910390f35b348015610aa357600080fd5b50610abe6004803603810190610ab99190614d73565b612e57565b604051610ace94939291906153fe565b60405180910390f35b348015610ae357600080fd5b50610aec612f1c565b604051610af99190614c00565b60405180910390f35b348015610b0e57600080fd5b50610b296004803603810190610b249190614ced565b612f22565b604051610b3f9a99989796959493929190615443565b60405180910390f35b348015610b5457600080fd5b50610b6f6004803603810190610b6a9190614d46565b612fa7565b604051610b7c9190614e6c565b60405180910390f35b610b9f6004803603810190610b9a91906154df565b612ff6565b005b348015610bad57600080fd5b50610bc86004803603810190610bc39190615532565b6133fb565b005b348015610bd657600080fd5b50610bf16004803603810190610bec9190614ced565b613510565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7a906155cf565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610ceb573d6000803e3d6000fd5b50565b600047905090565b6000806000806000806000601d54601e54601f54602054602154602254602354965096509650965096509650965090919293949596565b60185481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dba906155cf565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff16021790555060186000815480929190610e2f9061561e565b919050555050565b600060149054906101000a900460ff1615610e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7e906156b3565b60405180910390fd5b6001600060146101000a81548160ff0219169083151502179055506000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161115610eff57611271565b6000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050610f4b336135c7565b6011600160028110610f6057610f5f6156d3565b5b015481600101541015610fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9f90615774565b60405180910390fd5b600081600101549050808311158015610fc15750600083115b15610fe057610fd0818461371e565b8260010181905550829050610feb565b600082600101819055505b80826003016000828254610fff9190615794565b9250508190555080601e60008282546110189190615794565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f732ea8a38f70c2018ed8dfd6e97bf6381f60102061beae0ac4d9a5abd15a0602826040516110659190614c00565b60405180910390a26000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006111016110f98460076004600a81106110f2576110f16156d3565b5b0154613734565b6103e86135b1565b905080601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008282546111559190615794565b92505081905550806021600082825461116e9190615794565b92505081905550600060076003600a811061118c5761118b6156d3565b5b015411156111de5760006111c16111b98560076003600a81106111b2576111b16156d3565b5b0154613734565b6103e86135b1565b905080602260008282546111d59190615794565b92505081905550505b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611224573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561126b573d6000803e3d6000fd5b50505050505b60008060146101000a81548160ff02191690831515021790555050565b600080600080600061131061130b6001601360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060100189815481106112f2576112f16156d3565b5b906000526020600020015461371e90919063ffffffff16565b6120cb565b945094509450945094509295509295909350565b600080600080601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816012018681548110611383576113826156d3565b5b906000526020600020906003020190508060000160149054906101000a900464ffffffffff168160010154826002015494509450945050509250925092565b60156020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000804342336040516020016114319190615832565b6040516020818303038152906040528051906020012060001c611454919061587c565b45424160405160200161146791906158d6565b6040516020818303038152906040528051906020012060001c61148a919061587c565b44426114969190615794565b6114a09190615794565b6114aa9190615794565b6114b49190615794565b6114be9190615794565b6040516020016114ce9190615912565b6040516020818303038152906040528051906020012060001c90508283826114f6919061587c565b611500919061592d565b8161150b9190615987565b915050919050565b6000806000806000806000806000601360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060003073ffffffffffffffffffffffffffffffffffffffff16635d6d808f8c6040518263ffffffff1660e01b815260040161159d9190614e6c565b60206040518083038186803b1580156115b557600080fd5b505afa1580156115c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ed91906159d0565b905081600201548260030154836004015484600501548560060154866008015487600101548761161d9190615794565b8860070160009054906101000a900464ffffffffff16995099509950995099509950995099505050919395975091939597565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d7906155cf565b60405180910390fd5b6040518060400160405280838152602001828152506014600080815260200190815260200160002060008201518160000155602082015181600101559050505050565b601c5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b0906155cf565b60405180910390fd5b60018360ff1614156117d15780600381905550611825565b60028360ff1614156117fc5780600483600381106117f2576117f16156d3565b5b0181905550611824565b60038360ff16141561182357806011836002811061181d5761181c6156d3565b5b01819055505b5b5b505050565b600080600080600060198681548110611846576118456156d3565b5b9060005260206000209060090201600101546019878154811061186c5761186b6156d3565b5b90600052602060002090600902016005015460198881548110611892576118916156d3565b5b906000526020600020906009020160060154601989815481106118b8576118b76156d3565b5b90600052602060002090600902016007015460198a815481106118de576118dd6156d3565b5b9060005260206000209060090201600801549450945094509450945091939590929450565b600080600080611911614b1e565b6000601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b60038160ff1610156119b05781600d018160ff166003811061197c5761197b6156d3565b5b0154838260ff1660038110611994576119936156d3565b5b60200201818152505080806119a8906159fd565b915050611957565b508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681601101805490508260120180549050836010018054905095509550955095505091939590929450565b601b8181548110611a1057600080fd5b90600052602060002090600302016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900464ffffffffff16908060010154908060020154905084565b600080601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161115611ad35760009050611cb7565b6000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b8160110180549050811015611cb4576000826011018281548110611b4057611b3f6156d3565b5b906000526020600020906003020190506000601460008360010154815260200190815260200160002090506000620151808260000154611b80919061592d565b8360000160009054906101000a900464ffffffffff1664ffffffffff16611ba79190615794565b905060008360000160009054906101000a900464ffffffffff1664ffffffffff168660070160009054906101000a900464ffffffffff1664ffffffffff1611611c05578360000160009054906101000a900464ffffffffff16611c1c565b8560070160009054906101000a900464ffffffffff165b90506000824211611c2d5742611c2f565b825b9050808264ffffffffff161015611c9c576283d600846000015485600101548464ffffffffff1684611c619190615987565b8860020154611c70919061592d565b611c7a919061592d565b611c84919061587c565b611c8e919061587c565b88611c999190615794565b97505b50505050508080611cac9061561e565b915050611b19565b50505b919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d43906155cf565b60405180910390fd5b60018260ff161415611d9e5780600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611de0565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b60165481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e71906155cf565b60405180910390fd5b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff16021790555042601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070160006101000a81548164ffffffffff021916908364ffffffffff16021790555060006018541115611f5a5760186000815480929190611f5490615a27565b91905055505b50565b611f6561374a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe990615a9d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600781600a81106120c057600080fd5b016000915090505481565b6000806000806000601986815481106120e7576120e66156d3565b5b9060005260206000209060090201600101546019878154811061210d5761210c6156d3565b5b90600052602060002090600902016002015460198881548110612133576121326156d3565b5b90600052602060002090600902016003015460198981548110612159576121586156d3565b5b90600052602060002090600902016004015460198a8154811061217f5761217e6156d3565b5b906000526020600020906009020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169450945094509450945091939590929450565b600080601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600060018560ff16141561223d5781600a01848154811061222c5761222b6156d3565b5b906000526020600020019050612294565b60028560ff1614156122705781600b01848154811061225f5761225e6156d3565b5b906000526020600020019050612293565b81600c018481548110612286576122856156d3565b5b9060005260206000200190505b5b8060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16925050509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234b906155cf565b60405180910390fd5b60018260ff16141561238f578060198481548110612375576123746156d3565b5b9060005260206000209060090201600501819055506124b7565b60028260ff1614156123ca5780601984815481106123b0576123af6156d3565b5b9060005260206000209060090201600601819055506124b6565b60038260ff1614156124055780601984815481106123eb576123ea6156d3565b5b9060005260206000209060090201600201819055506124b5565b60048260ff161415612440578060198481548110612426576124256156d3565b5b9060005260206000209060090201600301819055506124b4565b60058260ff16141561247b578060198481548110612461576124606156d3565b5b9060005260206000209060090201600401819055506124b3565b60068260ff1614156124b257806019848154811061249c5761249b6156d3565b5b9060005260206000209060090201600701819055505b5b5b5b5b5b505050565b6000806000808460ff1611156126345760005b601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206010018054905081101561262e57601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060100181815481106125705761256f6156d3565b5b906000526020600020015491506000601961259560018561371e90919063ffffffff16565b815481106125a6576125a56156d3565b5b90600052602060002090600902016003015414156125cc57816001935093505050612817565b600060196125e460018561371e90919063ffffffff16565b815481106125f5576125f46156d3565b5b906000526020600020906009020160040154141561261b57816002935093505050612817565b80806126269061561e565b9150506124cf565b5061280e565b60008060076008600a811061264c5761264b6156d3565b5b015490505b60165481101561280b576015600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915060005b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020601001805490508110156127f757601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206010018181548110612735576127346156d3565b5b906000526020600020015493506000601961275a60018761371e90919063ffffffff16565b8154811061276b5761276a6156d3565b5b9060005260206000209060090201600301541415612793578360019550955050505050612817565b600060196127ab60018761371e90919063ffffffff16565b815481106127bc576127bb6156d3565b5b90600052602060002090600902016004015414156127e4578360029550955050505050612817565b80806127ef9061561e565b915050612694565b5080806128039061561e565b915050612651565b50505b60008092509250505b9250929050565b600060149054906101000a900460ff161561286e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612865906156b3565b60405180910390fd5b6001600060146101000a81548160ff0219169083151502179055506000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1611156128e657612c53565b6000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816011018054905011612973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296a90615b09565b60405180910390fd5b6000602254116129835750612c53565b60006129906103e761141b565b9050600060076001600a81106129a9576129a86156d3565b5b015482101580156129d0575060076002600a81106129ca576129c96156d3565b5b01548211155b15612a7f576022546129e0610cee565b101580156129f057506000602254115b15612a7e57602254905060006022819055508060236000828254612a149190615794565b9250508190555080836008016000828254612a2f9190615794565b925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612a7c573d6000803e3d6000fd5b505b5b612a87614b40565b60405180608001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020014264ffffffffff168152602001848152602001838152509050601b81908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548164ffffffffff021916908364ffffffffff160217905550604082015181600101556060820151816002015550508360120181908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548164ffffffffff021916908364ffffffffff16021790555060408201518160010155606082015181600201555050828460090181905550601c6000815480929190612c499061561e565b9190505550505050505b60008060146101000a81548160ff021916908315150217905550565b60035481565b6000612c7f612c84565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60146020528060005260406000206000915090508060000154908060010154905082565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60118160028110612d0757600080fd5b016000915090505481565b60176020528060005260406000206000915054906101000a900460ff1681565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020601001805490509050919050565b60198181548110612d9157600080fd5b90600052602060002090600902016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040154908060050154908060060154908060070154908060080154905089565b60048160038110612e0f57600080fd5b016000915090505481565b60006015600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000806000806000601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816011018781548110612eb857612eb76156d3565b5b906000526020600020906003020190506000601460008360010154815260200190815260200160002090508160000160009054906101000a900464ffffffffff16826002015482600001548360010154965096509650965050505092959194509250565b601a5481565b60136020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040154908060050154908060060154908060070160009054906101000a900464ffffffffff1690806008015490806009015490508a565b600060198281548110612fbd57612fbc6156d3565b5b906000526020600020906009020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161115613053576133f6565b6011600060028110613068576130676156d3565b5b01543410156130ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a390615b9b565b60405180910390fd5b6000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506130f93385613752565b8060110160405180606001604052804264ffffffffff1681526020016000815260200134815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548164ffffffffff021916908364ffffffffff160217905550602082015181600101556040820151816002015550503481600201600082825461319c9190615794565b9250508190555034601d60008282546131b59190615794565b9250508190555060006131d56131cd34600354613734565b6103e86135b1565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561323f573d6000803e3d6000fd5b5080601e60008282546132529190615794565b92505081905550600060076003600a81106132705761326f6156d3565b5b015411156132c25760006132a561329d3460076003600a8110613296576132956156d3565b5b0154613734565b6103e86135b1565b905080602260008282546132b99190615794565b92505081905550505b6132cc3334613d5f565b3373ffffffffffffffffffffffffffffffffffffffff167ff53baf8f724d88a5571a4719e5c2d64565fd5d8beab91a3753c267dfa5c8084e34868660405161331693929190615bbb565b60405180910390a260008414156133bb573073ffffffffffffffffffffffffffffffffffffffff1663837d41988660006040518363ffffffff1660e01b8152600401613363929190615c37565b604080518083038186803b15801561337a57600080fd5b505afa15801561338e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b29190615c75565b80945081955050505b6133c6338585614051565b81601001601a54908060018154018082558091505060019003906000526020600020016000909190919091505550505b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461348b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613482906155cf565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61351861374a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146135a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161359c90615a9d565b60405180910390fd5b6135ae81614363565b50565b600081836135bf919061587c565b905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff16635d6d808f836040518263ffffffff1660e01b81526004016136029190614e6c565b60206040518083038186803b15801561361a57600080fd5b505afa15801561362e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061365291906159d0565b9050600081111561371a5742601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070160006101000a81548164ffffffffff021916908364ffffffffff16021790555080601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282546137129190615794565b925050819055505b5050565b6000818361372c9190615987565b905092915050565b60008183613742919061592d565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff16601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561382357506137f3612c84565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613d5b576000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206011018054905014156138815761387e612c84565b90505b8160156000601654815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660008154809291906138e89061561e565b919050555080601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060005b60038160ff161015613d5957601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600d018160ff16600381106139d4576139d36156d3565b5b0160008154809291906139e69061561e565b91905055506000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008260ff161415613b015780600a016040518060400160405280600160ff1681526020018673ffffffffffffffffffffffffffffffffffffffff168152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050613ca5565b60018260ff161415613bd45780600b016040518060400160405280600260ff1681526020018673ffffffffffffffffffffffffffffffffffffffff168152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050613ca4565b60028260ff161415613ca35780600c016040518060400160405280600360ff1681526020018673ffffffffffffffffffffffffffffffffffffffff168152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505b5b5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613d455750613d59565b508080613d51906159fd565b915050613971565b505b5050565b6000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480613e335750613e04612c84565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15613e3e575061404d565b60005b60038160ff16101561404a57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613e875761404a565b60006103e860048360ff1660038110613ea357613ea26156d3565b5b015485613eb0919061592d565b613eba919061587c565b90508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613f02573d6000803e3d6000fd5b5080601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004016000828254613f559190615794565b9250508190555080601f6000828254613f6e9190615794565b92505081905550601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692508273ffffffffffffffffffffffffffffffffffffffff167f82000ceb7a01ef668d089a07609bcd7aedde5d513df5172ab4712a500b07da47826001856140209190615cb5565b60405161402e929190615d1d565b60405180910390a2508080614042906159fd565b915050613e41565b50505b5050565b60008211156141775760018160ff1614801561409e5750600060196001846140799190615987565b8154811061408a576140896156d3565b5b906000526020600020906009020160030154115b156140e85760026001146140e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140de90615d92565b60405180910390fd5b5b60028160ff1614801561412c5750600060196001846141079190615987565b81548110614118576141176156d3565b5b906000526020600020906009020160040154115b15614176576002600114614175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161416c90615d92565b60405180910390fd5b5b5b601a600081548092919061418a9061561e565b9190505550614197614b85565b6040518061012001604052808573ffffffffffffffffffffffffffffffffffffffff168152602001601a548152602001848152602001600081526020016000815260200160008152602001600081526020016000815260200160008152509050601981908060018154018082558091505060019003906000526020600020906009020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155505060008311156143495760018260ff16141561430f57601a5460196001856142e49190615987565b815481106142f5576142f46156d3565b5b906000526020600020906009020160030181905550614348565b601a5460196001856143219190615987565b81548110614332576143316156d3565b5b9060005260206000209060090201600401819055505b5b6003601a541061435d5761435c83614490565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156143d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143ca90615e24565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000806000806000600190505b6001881180156144c9575060076006600a81106144c0576144bf6156d3565b5b01548160ff1611155b80156144ec5750600780600a81106144e4576144e36156d3565b5b01548760ff16105b15614b14576001886144fe9190615987565b9350600060198581548110614516576145156156d3565b5b906000526020600020906009020160030154111561453d5782806145399061561e565b9350505b600060198581548110614553576145526156d3565b5b906000526020600020906009020160040154111561457a5781806145769061561e565b9250505b826019858154811061458f5761458e6156d3565b5b90600052602060002090600902016005015410156145d25782601985815481106145bc576145bb6156d3565b5b9060005260206000209060090201600501819055505b81601985815481106145e7576145e66156d3565b5b906000526020600020906009020160060154101561462a578160198581548110614614576146136156d3565b5b9060005260206000209060090201600601819055505b6019848154811061463e5761463d6156d3565b5b9060005260206000209060090201600201549450600180866146609190615987565b10614797578760196001876146759190615987565b81548110614686576146856156d3565b5b90600052602060002090600902016003015414156146ff57601984815481106146b2576146b16156d3565b5b906000526020600020906009020160060154601985815481106146d8576146d76156d3565b5b9060005260206000209060090201600501546146f49190615794565b925060009150614796565b87601960018761470f9190615987565b815481106147205761471f6156d3565b5b9060005260206000209060090201600401541415614795576019848154811061474c5761474b6156d3565b5b90600052602060002090600902016006015460198581548110614772576147716156d3565b5b90600052602060002090600902016005015461478e9190615794565b9150600092505b5b5b84975080806147a5906159fd565b915050601984815481106147bc576147bb6156d3565b5b9060005260206000209060090201600501549550601984815481106147e4576147e36156d3565b5b9060005260206000209060090201600601548611156148265760198481548110614811576148106156d3565b5b90600052602060002090600902016006015495505b6019848154811061483a576148396156d3565b5b906000526020600020906009020160070154861115614b0f5760198481548110614867576148666156d3565b5b906000526020600020906009020160070160008154809291906148899061561e565b919050555060076009600a81106148a3576148a26156d3565b5b01548760ff161015614b0e5760006148da60076005600a81106148c9576148c86156d3565b5b0154346135b190919063ffffffff16565b905080601986815481106148f1576148f06156d3565b5b906000526020600020906009020160080160008282546149119190615794565b925050819055506019858154811061492c5761492b6156d3565b5b906000526020600020906009020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156149a3573d6000803e3d6000fd5b508060136000601988815481106149bd576149bc6156d3565b5b906000526020600020906009020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005016000828254614a3b9190615794565b925050819055508060206000828254614a549190615794565b925050819055508780614a66906159fd565b98505060198581548110614a7d57614a7c6156d3565b5b906000526020600020906009020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f9f8082f6f8ef3981468ab74d109fedb4d08c8f498e0962d63d1c232fb716e377600187614af39190615794565b838b604051614b0493929190615e44565b60405180910390a2505b5b6144a0565b5050505050505050565b6040518060600160405280600390602082028036833780820191505090505090565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600064ffffffffff16815260200160008152602001600081525090565b604051806101200160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000819050919050565b614bfa81614be7565b82525050565b6000602082019050614c156000830184614bf1565b92915050565b600060e082019050614c30600083018a614bf1565b614c3d6020830189614bf1565b614c4a6040830188614bf1565b614c576060830187614bf1565b614c646080830186614bf1565b614c7160a0830185614bf1565b614c7e60c0830184614bf1565b98975050505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614cba82614c8f565b9050919050565b614cca81614caf565b8114614cd557600080fd5b50565b600081359050614ce781614cc1565b92915050565b600060208284031215614d0357614d02614c8a565b5b6000614d1184828501614cd8565b91505092915050565b614d2381614be7565b8114614d2e57600080fd5b50565b600081359050614d4081614d1a565b92915050565b600060208284031215614d5c57614d5b614c8a565b5b6000614d6a84828501614d31565b91505092915050565b60008060408385031215614d8a57614d89614c8a565b5b6000614d9885828601614cd8565b9250506020614da985828601614d31565b9150509250929050565b614dbc81614caf565b82525050565b600060a082019050614dd76000830188614bf1565b614de46020830187614bf1565b614df16040830186614bf1565b614dfe6060830185614bf1565b614e0b6080830184614db3565b9695505050505050565b600064ffffffffff82169050919050565b614e2f81614e15565b82525050565b6000606082019050614e4a6000830186614e26565b614e576020830185614bf1565b614e646040830184614bf1565b949350505050565b6000602082019050614e816000830184614db3565b92915050565b6000614e9282614c8f565b9050919050565b614ea281614e87565b82525050565b6000602082019050614ebd6000830184614e99565b92915050565b600061010082019050614ed9600083018b614bf1565b614ee6602083018a614bf1565b614ef36040830189614bf1565b614f006060830188614bf1565b614f0d6080830187614bf1565b614f1a60a0830186614bf1565b614f2760c0830185614bf1565b614f3460e0830184614e26565b9998505050505050505050565b60008060408385031215614f5857614f57614c8a565b5b6000614f6685828601614d31565b9250506020614f7785828601614d31565b9150509250929050565b600060ff82169050919050565b614f9781614f81565b8114614fa257600080fd5b50565b600081359050614fb481614f8e565b92915050565b600080600060608486031215614fd357614fd2614c8a565b5b6000614fe186828701614fa5565b9350506020614ff286828701614d31565b925050604061500386828701614d31565b9150509250925092565b600060a0820190506150226000830188614bf1565b61502f6020830187614bf1565b61503c6040830186614bf1565b6150496060830185614bf1565b6150566080830184614bf1565b9695505050505050565b600060039050919050565b600081905092915050565b6000819050919050565b61508981614be7565b82525050565b600061509b8383615080565b60208301905092915050565b6000602082019050919050565b6150bd81615060565b6150c7818461506b565b92506150d282615076565b8060005b838110156151035781516150ea878261508f565b96506150f5836150a7565b9250506001810190506150d6565b505050505050565b600060e0820190506151206000830188614db3565b61512d6020830187614bf1565b61513a6040830186614bf1565b6151476060830185614bf1565b61515460808301846150b4565b9695505050505050565b60006080820190506151736000830187614db3565b6151806020830186614e26565b61518d6040830185614bf1565b61519a6060830184614bf1565b95945050505050565b6151ac81614e87565b81146151b757600080fd5b50565b6000813590506151c9816151a3565b92915050565b600080604083850312156151e6576151e5614c8a565b5b60006151f485828601614fa5565b9250506020615205858286016151ba565b9150509250929050565b60008060006060848603121561522857615227614c8a565b5b600061523686828701614cd8565b935050602061524786828701614fa5565b925050604061525886828701614d31565b9150509250925092565b60008060006060848603121561527b5761527a614c8a565b5b600061528986828701614d31565b935050602061529a86828701614fa5565b92505060406152ab86828701614d31565b9150509250925092565b600080604083850312156152cc576152cb614c8a565b5b60006152da85828601614cd8565b92505060206152eb85828601614fa5565b9150509250929050565b6152fe81614f81565b82525050565b60006040820190506153196000830185614bf1565b61532660208301846152f5565b9392505050565b60006040820190506153426000830185614bf1565b61534f6020830184614bf1565b9392505050565b600060208201905061536b60008301846152f5565b92915050565b600061012082019050615387600083018c614db3565b615394602083018b614bf1565b6153a1604083018a614bf1565b6153ae6060830189614bf1565b6153bb6080830188614bf1565b6153c860a0830187614bf1565b6153d560c0830186614bf1565b6153e260e0830185614bf1565b6153f0610100830184614bf1565b9a9950505050505050505050565b60006080820190506154136000830187614e26565b6154206020830186614bf1565b61542d6040830185614bf1565b61543a6060830184614bf1565b95945050505050565b600061014082019050615459600083018d614db3565b615466602083018c614bf1565b615473604083018b614bf1565b615480606083018a614bf1565b61548d6080830189614bf1565b61549a60a0830188614bf1565b6154a760c0830187614bf1565b6154b460e0830186614e26565b6154c2610100830185614bf1565b6154d0610120830184614bf1565b9b9a5050505050505050505050565b6000806000606084860312156154f8576154f7614c8a565b5b600061550686828701614cd8565b935050602061551786828701614d31565b925050604061552886828701614fa5565b9150509250925092565b6000806040838503121561554957615548614c8a565b5b600061555785828601614cd8565b925050602061556885828601614cd8565b9150509250929050565b600082825260208201905092915050565b7f556e617574686f72697a65642100000000000000000000000000000000000000600082015250565b60006155b9600d83615572565b91506155c482615583565b602082019050919050565b600060208201905081810360008301526155e8816155ac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061562982614be7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561565c5761565b6155ef565b5b600182019050919050565b7f4e6f2072652d656e7472616e6379000000000000000000000000000000000000600082015250565b600061569d600e83615572565b91506156a882615667565b602082019050919050565b600060208201905081810360008301526156cc81615690565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f596f7572206469766964656e6473206973206c657373207468616e206d696e6960008201527f6d756d207061796f757421000000000000000000000000000000000000000000602082015250565b600061575e602b83615572565b915061576982615702565b604082019050919050565b6000602082019050818103600083015261578d81615751565b9050919050565b600061579f82614be7565b91506157aa83614be7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156157df576157de6155ef565b5b828201905092915050565b60008160601b9050919050565b6000615802826157ea565b9050919050565b6000615814826157f7565b9050919050565b61582c61582782614caf565b615809565b82525050565b600061583e828461581b565b60148201915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061588782614be7565b915061589283614be7565b9250826158a2576158a161584d565b5b828204905092915050565b60006158b8826157f7565b9050919050565b6158d06158cb82614e87565b6158ad565b82525050565b60006158e282846158bf565b60148201915081905092915050565b6000819050919050565b61590c61590782614be7565b6158f1565b82525050565b600061591e82846158fb565b60208201915081905092915050565b600061593882614be7565b915061594383614be7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561597c5761597b6155ef565b5b828202905092915050565b600061599282614be7565b915061599d83614be7565b9250828210156159b0576159af6155ef565b5b828203905092915050565b6000815190506159ca81614d1a565b92915050565b6000602082840312156159e6576159e5614c8a565b5b60006159f4848285016159bb565b91505092915050565b6000615a0882614f81565b915060ff821415615a1c57615a1b6155ef565b5b600182019050919050565b6000615a3282614be7565b91506000821415615a4657615a456155ef565b5b600182039050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000615a87602083615572565b9150615a9282615a51565b602082019050919050565b60006020820190508181036000830152615ab681615a7a565b9050919050565b7f556e726567697374657265642057616c6c657421000000000000000000000000600082015250565b6000615af3601483615572565b9150615afe82615abd565b602082019050919050565b60006020820190508181036000830152615b2281615ae6565b9050919050565b7f596f757220424e42206973206c657373207468616e206d696e696d756d20656e60008201527f7472792100000000000000000000000000000000000000000000000000000000602082015250565b6000615b85602483615572565b9150615b9082615b29565b604082019050919050565b60006020820190508181036000830152615bb481615b78565b9050919050565b6000606082019050615bd06000830186614bf1565b615bdd6020830185614bf1565b615bea60408301846152f5565b949350505050565b6000819050919050565b6000819050919050565b6000615c21615c1c615c1784615bf2565b615bfc565b614f81565b9050919050565b615c3181615c06565b82525050565b6000604082019050615c4c6000830185614db3565b615c596020830184615c28565b9392505050565b600081519050615c6f81614f8e565b92915050565b60008060408385031215615c8c57615c8b614c8a565b5b6000615c9a858286016159bb565b9250506020615cab85828601615c60565b9150509250929050565b6000615cc082614f81565b9150615ccb83614f81565b92508260ff03821115615ce157615ce06155ef565b5b828201905092915050565b6000615d07615d02615cfd84614f81565b615bfc565b614be7565b9050919050565b615d1781615cec565b82525050565b6000604082019050615d326000830185614bf1565b615d3f6020830184615d0e565b9392505050565b7f496e76616c696420506f736974696f6e21000000000000000000000000000000600082015250565b6000615d7c601183615572565b9150615d8782615d46565b602082019050919050565b60006020820190508181036000830152615dab81615d6f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615e0e602683615572565b9150615e1982615db2565b604082019050919050565b60006020820190508181036000830152615e3d81615e01565b9050919050565b6000606082019050615e596000830186614bf1565b615e666020830185614bf1565b615e736040830184615d0e565b94935050505056fea264697066735822122000c70dde2fc92da73d7848f073f18c5196e73040a619f40c74ebd577029d14a364736f6c63430008090033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c80637a777d2c1161015a5780639c8d83bb116100c1578063cb0623991161007a578063cb06239914610ad7578063e2eb41ff14610b02578063ee36426114610b48578063efdaa57714610b85578063f01fba9314610ba1578063f2fde38b14610bca57610293565b80639c8d83bb1461095e5780639dc331311461099b578063a95fd41b146109d8578063b7d9f0d214610a1d578063c02036af14610a5a578063c7bc2a6314610a9757610293565b8063880ea6c211610113578063880ea6c214610837578063893d20e8146108625780638da5cb5b1461088d5780638e098215146108b857806391cca3db146108f6578063981db3a71461092157610293565b80637a777d2c146106fe5780637eba7ba61461073b5780637fd877721461077c578063815f84b7146107b9578063837d4198146107e2578063837e7cc61461082057610293565b80632d91060a116101fe5780635d4bc0ce116101b75780635d4bc0ce146105ed5780635d6d808f1461062d57806362994fd51461066a5780636391def5146106935780636a4aef02146106be578063715018a6146106e757610293565b80632d91060a146104aa5780632eeb87bb146104ee5780634a58dfc714610517578063501e0a5814610542578063516c97e11461056b5780635408067c146105ac57610293565b80632242704711610250578063224270471461035c57806323306a271461038557806323723ecc146103c657806323b023cf14610405578063241a93f9146104425780632530c9051461046d57610293565b80630a5c722f1461029557806312065fe0146102ac57806315c43aaf146102d7578063178299361461030857806321850bf01461033357610293565b3661029357005b005b3480156102a157600080fd5b506102aa610bf3565b005b3480156102b857600080fd5b506102c1610cee565b6040516102ce9190614c00565b60405180910390f35b3480156102e357600080fd5b506102ec610cf6565b6040516102ff9796959493929190614c1b565b60405180910390f35b34801561031457600080fd5b5061031d610d2d565b60405161032a9190614c00565b60405180910390f35b34801561033f57600080fd5b5061035a60048036038101906103559190614ced565b610d33565b005b34801561036857600080fd5b50610383600480360381019061037e9190614d46565b610e37565b005b34801561039157600080fd5b506103ac60048036038101906103a79190614d73565b61128e565b6040516103bd959493929190614dc2565b60405180910390f35b3480156103d257600080fd5b506103ed60048036038101906103e89190614d73565b611324565b6040516103fc93929190614e35565b60405180910390f35b34801561041157600080fd5b5061042c60048036038101906104279190614d46565b6113c2565b6040516104399190614e6c565b60405180910390f35b34801561044e57600080fd5b506104576113f5565b6040516104649190614ea8565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190614d46565b61141b565b6040516104a19190614c00565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190614ced565b611513565b6040516104e5989796959493929190614ec3565b60405180910390f35b3480156104fa57600080fd5b5061051560048036038101906105109190614f41565b611650565b005b34801561052357600080fd5b5061052c611723565b6040516105399190614c00565b60405180910390f35b34801561054e57600080fd5b5061056960048036038101906105649190614fba565b611729565b005b34801561057757600080fd5b50610592600480360381019061058d9190614d46565b61182a565b6040516105a395949392919061500d565b60405180910390f35b3480156105b857600080fd5b506105d360048036038101906105ce9190614ced565b611903565b6040516105e495949392919061510b565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f9190614d46565b611a00565b604051610624949392919061515e565b60405180910390f35b34801561063957600080fd5b50610654600480360381019061064f9190614ced565b611a71565b6040516106619190614c00565b60405180910390f35b34801561067657600080fd5b50610691600480360381019061068c91906151cf565b611cbc565b005b34801561069f57600080fd5b506106a8611de4565b6040516106b59190614c00565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e09190614ced565b611dea565b005b3480156106f357600080fd5b506106fc611f5d565b005b34801561070a57600080fd5b5061072560048036038101906107209190614d46565b6120b0565b6040516107329190614c00565b60405180910390f35b34801561074757600080fd5b50610762600480360381019061075d9190614d46565b6120cb565b604051610773959493929190614dc2565b60405180910390f35b34801561078857600080fd5b506107a3600480360381019061079e919061520f565b6121c4565b6040516107b09190614e6c565b60405180910390f35b3480156107c557600080fd5b506107e060048036038101906107db9190615262565b6122c4565b005b3480156107ee57600080fd5b50610809600480360381019061080491906152b5565b6124bc565b604051610817929190615304565b60405180910390f35b34801561082c57600080fd5b5061083561281e565b005b34801561084357600080fd5b5061084c612c6f565b6040516108599190614c00565b60405180910390f35b34801561086e57600080fd5b50610877612c75565b6040516108849190614e6c565b60405180910390f35b34801561089957600080fd5b506108a2612c84565b6040516108af9190614e6c565b60405180910390f35b3480156108c457600080fd5b506108df60048036038101906108da9190614d46565b612cad565b6040516108ed92919061532d565b60405180910390f35b34801561090257600080fd5b5061090b612cd1565b6040516109189190614ea8565b60405180910390f35b34801561092d57600080fd5b5061094860048036038101906109439190614d46565b612cf7565b6040516109559190614c00565b60405180910390f35b34801561096a57600080fd5b5061098560048036038101906109809190614ced565b612d12565b6040516109929190615356565b60405180910390f35b3480156109a757600080fd5b506109c260048036038101906109bd9190614ced565b612d32565b6040516109cf9190614c00565b60405180910390f35b3480156109e457600080fd5b506109ff60048036038101906109fa9190614d46565b612d81565b604051610a1499989796959493929190615371565b60405180910390f35b348015610a2957600080fd5b50610a446004803603810190610a3f9190614d46565b612dff565b604051610a519190614c00565b60405180910390f35b348015610a6657600080fd5b50610a816004803603810190610a7c9190614d46565b612e1a565b604051610a8e9190614e6c565b60405180910390f35b348015610aa357600080fd5b50610abe6004803603810190610ab99190614d73565b612e57565b604051610ace94939291906153fe565b60405180910390f35b348015610ae357600080fd5b50610aec612f1c565b604051610af99190614c00565b60405180910390f35b348015610b0e57600080fd5b50610b296004803603810190610b249190614ced565b612f22565b604051610b3f9a99989796959493929190615443565b60405180910390f35b348015610b5457600080fd5b50610b6f6004803603810190610b6a9190614d46565b612fa7565b604051610b7c9190614e6c565b60405180910390f35b610b9f6004803603810190610b9a91906154df565b612ff6565b005b348015610bad57600080fd5b50610bc86004803603810190610bc39190615532565b6133fb565b005b348015610bd657600080fd5b50610bf16004803603810190610bec9190614ced565b613510565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7a906155cf565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610ceb573d6000803e3d6000fd5b50565b600047905090565b6000806000806000806000601d54601e54601f54602054602154602254602354965096509650965096509650965090919293949596565b60185481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dba906155cf565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff16021790555060186000815480929190610e2f9061561e565b919050555050565b600060149054906101000a900460ff1615610e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7e906156b3565b60405180910390fd5b6001600060146101000a81548160ff0219169083151502179055506000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161115610eff57611271565b6000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050610f4b336135c7565b6011600160028110610f6057610f5f6156d3565b5b015481600101541015610fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9f90615774565b60405180910390fd5b600081600101549050808311158015610fc15750600083115b15610fe057610fd0818461371e565b8260010181905550829050610feb565b600082600101819055505b80826003016000828254610fff9190615794565b9250508190555080601e60008282546110189190615794565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f732ea8a38f70c2018ed8dfd6e97bf6381f60102061beae0ac4d9a5abd15a0602826040516110659190614c00565b60405180910390a26000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006111016110f98460076004600a81106110f2576110f16156d3565b5b0154613734565b6103e86135b1565b905080601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160008282546111559190615794565b92505081905550806021600082825461116e9190615794565b92505081905550600060076003600a811061118c5761118b6156d3565b5b015411156111de5760006111c16111b98560076003600a81106111b2576111b16156d3565b5b0154613734565b6103e86135b1565b905080602260008282546111d59190615794565b92505081905550505b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611224573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561126b573d6000803e3d6000fd5b50505050505b60008060146101000a81548160ff02191690831515021790555050565b600080600080600061131061130b6001601360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060100189815481106112f2576112f16156d3565b5b906000526020600020015461371e90919063ffffffff16565b6120cb565b945094509450945094509295509295909350565b600080600080601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816012018681548110611383576113826156d3565b5b906000526020600020906003020190508060000160149054906101000a900464ffffffffff168160010154826002015494509450945050509250925092565b60156020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000804342336040516020016114319190615832565b6040516020818303038152906040528051906020012060001c611454919061587c565b45424160405160200161146791906158d6565b6040516020818303038152906040528051906020012060001c61148a919061587c565b44426114969190615794565b6114a09190615794565b6114aa9190615794565b6114b49190615794565b6114be9190615794565b6040516020016114ce9190615912565b6040516020818303038152906040528051906020012060001c90508283826114f6919061587c565b611500919061592d565b8161150b9190615987565b915050919050565b6000806000806000806000806000601360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060003073ffffffffffffffffffffffffffffffffffffffff16635d6d808f8c6040518263ffffffff1660e01b815260040161159d9190614e6c565b60206040518083038186803b1580156115b557600080fd5b505afa1580156115c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ed91906159d0565b905081600201548260030154836004015484600501548560060154866008015487600101548761161d9190615794565b8860070160009054906101000a900464ffffffffff16995099509950995099509950995099505050919395975091939597565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d7906155cf565b60405180910390fd5b6040518060400160405280838152602001828152506014600080815260200190815260200160002060008201518160000155602082015181600101559050505050565b601c5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b0906155cf565b60405180910390fd5b60018360ff1614156117d15780600381905550611825565b60028360ff1614156117fc5780600483600381106117f2576117f16156d3565b5b0181905550611824565b60038360ff16141561182357806011836002811061181d5761181c6156d3565b5b01819055505b5b5b505050565b600080600080600060198681548110611846576118456156d3565b5b9060005260206000209060090201600101546019878154811061186c5761186b6156d3565b5b90600052602060002090600902016005015460198881548110611892576118916156d3565b5b906000526020600020906009020160060154601989815481106118b8576118b76156d3565b5b90600052602060002090600902016007015460198a815481106118de576118dd6156d3565b5b9060005260206000209060090201600801549450945094509450945091939590929450565b600080600080611911614b1e565b6000601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b60038160ff1610156119b05781600d018160ff166003811061197c5761197b6156d3565b5b0154838260ff1660038110611994576119936156d3565b5b60200201818152505080806119a8906159fd565b915050611957565b508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681601101805490508260120180549050836010018054905095509550955095505091939590929450565b601b8181548110611a1057600080fd5b90600052602060002090600302016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900464ffffffffff16908060010154908060020154905084565b600080601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161115611ad35760009050611cb7565b6000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b8160110180549050811015611cb4576000826011018281548110611b4057611b3f6156d3565b5b906000526020600020906003020190506000601460008360010154815260200190815260200160002090506000620151808260000154611b80919061592d565b8360000160009054906101000a900464ffffffffff1664ffffffffff16611ba79190615794565b905060008360000160009054906101000a900464ffffffffff1664ffffffffff168660070160009054906101000a900464ffffffffff1664ffffffffff1611611c05578360000160009054906101000a900464ffffffffff16611c1c565b8560070160009054906101000a900464ffffffffff165b90506000824211611c2d5742611c2f565b825b9050808264ffffffffff161015611c9c576283d600846000015485600101548464ffffffffff1684611c619190615987565b8860020154611c70919061592d565b611c7a919061592d565b611c84919061587c565b611c8e919061587c565b88611c999190615794565b97505b50505050508080611cac9061561e565b915050611b19565b50505b919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d43906155cf565b60405180910390fd5b60018260ff161415611d9e5780600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611de0565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b60165481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e71906155cf565b60405180910390fd5b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff16021790555042601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070160006101000a81548164ffffffffff021916908364ffffffffff16021790555060006018541115611f5a5760186000815480929190611f5490615a27565b91905055505b50565b611f6561374a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe990615a9d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600781600a81106120c057600080fd5b016000915090505481565b6000806000806000601986815481106120e7576120e66156d3565b5b9060005260206000209060090201600101546019878154811061210d5761210c6156d3565b5b90600052602060002090600902016002015460198881548110612133576121326156d3565b5b90600052602060002090600902016003015460198981548110612159576121586156d3565b5b90600052602060002090600902016004015460198a8154811061217f5761217e6156d3565b5b906000526020600020906009020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169450945094509450945091939590929450565b600080601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600060018560ff16141561223d5781600a01848154811061222c5761222b6156d3565b5b906000526020600020019050612294565b60028560ff1614156122705781600b01848154811061225f5761225e6156d3565b5b906000526020600020019050612293565b81600c018481548110612286576122856156d3565b5b9060005260206000200190505b5b8060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16925050509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234b906155cf565b60405180910390fd5b60018260ff16141561238f578060198481548110612375576123746156d3565b5b9060005260206000209060090201600501819055506124b7565b60028260ff1614156123ca5780601984815481106123b0576123af6156d3565b5b9060005260206000209060090201600601819055506124b6565b60038260ff1614156124055780601984815481106123eb576123ea6156d3565b5b9060005260206000209060090201600201819055506124b5565b60048260ff161415612440578060198481548110612426576124256156d3565b5b9060005260206000209060090201600301819055506124b4565b60058260ff16141561247b578060198481548110612461576124606156d3565b5b9060005260206000209060090201600401819055506124b3565b60068260ff1614156124b257806019848154811061249c5761249b6156d3565b5b9060005260206000209060090201600701819055505b5b5b5b5b5b505050565b6000806000808460ff1611156126345760005b601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206010018054905081101561262e57601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060100181815481106125705761256f6156d3565b5b906000526020600020015491506000601961259560018561371e90919063ffffffff16565b815481106125a6576125a56156d3565b5b90600052602060002090600902016003015414156125cc57816001935093505050612817565b600060196125e460018561371e90919063ffffffff16565b815481106125f5576125f46156d3565b5b906000526020600020906009020160040154141561261b57816002935093505050612817565b80806126269061561e565b9150506124cf565b5061280e565b60008060076008600a811061264c5761264b6156d3565b5b015490505b60165481101561280b576015600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915060005b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020601001805490508110156127f757601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206010018181548110612735576127346156d3565b5b906000526020600020015493506000601961275a60018761371e90919063ffffffff16565b8154811061276b5761276a6156d3565b5b9060005260206000209060090201600301541415612793578360019550955050505050612817565b600060196127ab60018761371e90919063ffffffff16565b815481106127bc576127bb6156d3565b5b90600052602060002090600902016004015414156127e4578360029550955050505050612817565b80806127ef9061561e565b915050612694565b5080806128039061561e565b915050612651565b50505b60008092509250505b9250929050565b600060149054906101000a900460ff161561286e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612865906156b3565b60405180910390fd5b6001600060146101000a81548160ff0219169083151502179055506000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1611156128e657612c53565b6000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816011018054905011612973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296a90615b09565b60405180910390fd5b6000602254116129835750612c53565b60006129906103e761141b565b9050600060076001600a81106129a9576129a86156d3565b5b015482101580156129d0575060076002600a81106129ca576129c96156d3565b5b01548211155b15612a7f576022546129e0610cee565b101580156129f057506000602254115b15612a7e57602254905060006022819055508060236000828254612a149190615794565b9250508190555080836008016000828254612a2f9190615794565b925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612a7c573d6000803e3d6000fd5b505b5b612a87614b40565b60405180608001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020014264ffffffffff168152602001848152602001838152509050601b81908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548164ffffffffff021916908364ffffffffff160217905550604082015181600101556060820151816002015550508360120181908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548164ffffffffff021916908364ffffffffff16021790555060408201518160010155606082015181600201555050828460090181905550601c6000815480929190612c499061561e565b9190505550505050505b60008060146101000a81548160ff021916908315150217905550565b60035481565b6000612c7f612c84565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60146020528060005260406000206000915090508060000154908060010154905082565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60118160028110612d0757600080fd5b016000915090505481565b60176020528060005260406000206000915054906101000a900460ff1681565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020601001805490509050919050565b60198181548110612d9157600080fd5b90600052602060002090600902016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040154908060050154908060060154908060070154908060080154905089565b60048160038110612e0f57600080fd5b016000915090505481565b60006015600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000806000806000601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816011018781548110612eb857612eb76156d3565b5b906000526020600020906003020190506000601460008360010154815260200190815260200160002090508160000160009054906101000a900464ffffffffff16826002015482600001548360010154965096509650965050505092959194509250565b601a5481565b60136020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040154908060050154908060060154908060070160009054906101000a900464ffffffffff1690806008015490806009015490508a565b600060198281548110612fbd57612fbc6156d3565b5b906000526020600020906009020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161115613053576133f6565b6011600060028110613068576130676156d3565b5b01543410156130ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a390615b9b565b60405180910390fd5b6000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506130f93385613752565b8060110160405180606001604052804264ffffffffff1681526020016000815260200134815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548164ffffffffff021916908364ffffffffff160217905550602082015181600101556040820151816002015550503481600201600082825461319c9190615794565b9250508190555034601d60008282546131b59190615794565b9250508190555060006131d56131cd34600354613734565b6103e86135b1565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561323f573d6000803e3d6000fd5b5080601e60008282546132529190615794565b92505081905550600060076003600a81106132705761326f6156d3565b5b015411156132c25760006132a561329d3460076003600a8110613296576132956156d3565b5b0154613734565b6103e86135b1565b905080602260008282546132b99190615794565b92505081905550505b6132cc3334613d5f565b3373ffffffffffffffffffffffffffffffffffffffff167ff53baf8f724d88a5571a4719e5c2d64565fd5d8beab91a3753c267dfa5c8084e34868660405161331693929190615bbb565b60405180910390a260008414156133bb573073ffffffffffffffffffffffffffffffffffffffff1663837d41988660006040518363ffffffff1660e01b8152600401613363929190615c37565b604080518083038186803b15801561337a57600080fd5b505afa15801561338e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b29190615c75565b80945081955050505b6133c6338585614051565b81601001601a54908060018154018082558091505060019003906000526020600020016000909190919091505550505b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461348b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613482906155cf565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61351861374a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146135a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161359c90615a9d565b60405180910390fd5b6135ae81614363565b50565b600081836135bf919061587c565b905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff16635d6d808f836040518263ffffffff1660e01b81526004016136029190614e6c565b60206040518083038186803b15801561361a57600080fd5b505afa15801561362e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061365291906159d0565b9050600081111561371a5742601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070160006101000a81548164ffffffffff021916908364ffffffffff16021790555080601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282546137129190615794565b925050819055505b5050565b6000818361372c9190615987565b905092915050565b60008183613742919061592d565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff16601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561382357506137f3612c84565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613d5b576000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206011018054905014156138815761387e612c84565b90505b8160156000601654815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660008154809291906138e89061561e565b919050555080601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060005b60038160ff161015613d5957601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600d018160ff16600381106139d4576139d36156d3565b5b0160008154809291906139e69061561e565b91905055506000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008260ff161415613b015780600a016040518060400160405280600160ff1681526020018673ffffffffffffffffffffffffffffffffffffffff168152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050613ca5565b60018260ff161415613bd45780600b016040518060400160405280600260ff1681526020018673ffffffffffffffffffffffffffffffffffffffff168152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050613ca4565b60028260ff161415613ca35780600c016040518060400160405280600360ff1681526020018673ffffffffffffffffffffffffffffffffffffffff168152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505b5b5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613d455750613d59565b508080613d51906159fd565b915050613971565b505b5050565b6000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480613e335750613e04612c84565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15613e3e575061404d565b60005b60038160ff16101561404a57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613e875761404a565b60006103e860048360ff1660038110613ea357613ea26156d3565b5b015485613eb0919061592d565b613eba919061587c565b90508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613f02573d6000803e3d6000fd5b5080601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004016000828254613f559190615794565b9250508190555080601f6000828254613f6e9190615794565b92505081905550601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692508273ffffffffffffffffffffffffffffffffffffffff167f82000ceb7a01ef668d089a07609bcd7aedde5d513df5172ab4712a500b07da47826001856140209190615cb5565b60405161402e929190615d1d565b60405180910390a2508080614042906159fd565b915050613e41565b50505b5050565b60008211156141775760018160ff1614801561409e5750600060196001846140799190615987565b8154811061408a576140896156d3565b5b906000526020600020906009020160030154115b156140e85760026001146140e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140de90615d92565b60405180910390fd5b5b60028160ff1614801561412c5750600060196001846141079190615987565b81548110614118576141176156d3565b5b906000526020600020906009020160040154115b15614176576002600114614175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161416c90615d92565b60405180910390fd5b5b5b601a600081548092919061418a9061561e565b9190505550614197614b85565b6040518061012001604052808573ffffffffffffffffffffffffffffffffffffffff168152602001601a548152602001848152602001600081526020016000815260200160008152602001600081526020016000815260200160008152509050601981908060018154018082558091505060019003906000526020600020906009020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155505060008311156143495760018260ff16141561430f57601a5460196001856142e49190615987565b815481106142f5576142f46156d3565b5b906000526020600020906009020160030181905550614348565b601a5460196001856143219190615987565b81548110614332576143316156d3565b5b9060005260206000209060090201600401819055505b5b6003601a541061435d5761435c83614490565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156143d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143ca90615e24565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000806000806000600190505b6001881180156144c9575060076006600a81106144c0576144bf6156d3565b5b01548160ff1611155b80156144ec5750600780600a81106144e4576144e36156d3565b5b01548760ff16105b15614b14576001886144fe9190615987565b9350600060198581548110614516576145156156d3565b5b906000526020600020906009020160030154111561453d5782806145399061561e565b9350505b600060198581548110614553576145526156d3565b5b906000526020600020906009020160040154111561457a5781806145769061561e565b9250505b826019858154811061458f5761458e6156d3565b5b90600052602060002090600902016005015410156145d25782601985815481106145bc576145bb6156d3565b5b9060005260206000209060090201600501819055505b81601985815481106145e7576145e66156d3565b5b906000526020600020906009020160060154101561462a578160198581548110614614576146136156d3565b5b9060005260206000209060090201600601819055505b6019848154811061463e5761463d6156d3565b5b9060005260206000209060090201600201549450600180866146609190615987565b10614797578760196001876146759190615987565b81548110614686576146856156d3565b5b90600052602060002090600902016003015414156146ff57601984815481106146b2576146b16156d3565b5b906000526020600020906009020160060154601985815481106146d8576146d76156d3565b5b9060005260206000209060090201600501546146f49190615794565b925060009150614796565b87601960018761470f9190615987565b815481106147205761471f6156d3565b5b9060005260206000209060090201600401541415614795576019848154811061474c5761474b6156d3565b5b90600052602060002090600902016006015460198581548110614772576147716156d3565b5b90600052602060002090600902016005015461478e9190615794565b9150600092505b5b5b84975080806147a5906159fd565b915050601984815481106147bc576147bb6156d3565b5b9060005260206000209060090201600501549550601984815481106147e4576147e36156d3565b5b9060005260206000209060090201600601548611156148265760198481548110614811576148106156d3565b5b90600052602060002090600902016006015495505b6019848154811061483a576148396156d3565b5b906000526020600020906009020160070154861115614b0f5760198481548110614867576148666156d3565b5b906000526020600020906009020160070160008154809291906148899061561e565b919050555060076009600a81106148a3576148a26156d3565b5b01548760ff161015614b0e5760006148da60076005600a81106148c9576148c86156d3565b5b0154346135b190919063ffffffff16565b905080601986815481106148f1576148f06156d3565b5b906000526020600020906009020160080160008282546149119190615794565b925050819055506019858154811061492c5761492b6156d3565b5b906000526020600020906009020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156149a3573d6000803e3d6000fd5b508060136000601988815481106149bd576149bc6156d3565b5b906000526020600020906009020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005016000828254614a3b9190615794565b925050819055508060206000828254614a549190615794565b925050819055508780614a66906159fd565b98505060198581548110614a7d57614a7c6156d3565b5b906000526020600020906009020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f9f8082f6f8ef3981468ab74d109fedb4d08c8f498e0962d63d1c232fb716e377600187614af39190615794565b838b604051614b0493929190615e44565b60405180910390a2505b5b6144a0565b5050505050505050565b6040518060600160405280600390602082028036833780820191505090505090565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600064ffffffffff16815260200160008152602001600081525090565b604051806101200160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000819050919050565b614bfa81614be7565b82525050565b6000602082019050614c156000830184614bf1565b92915050565b600060e082019050614c30600083018a614bf1565b614c3d6020830189614bf1565b614c4a6040830188614bf1565b614c576060830187614bf1565b614c646080830186614bf1565b614c7160a0830185614bf1565b614c7e60c0830184614bf1565b98975050505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614cba82614c8f565b9050919050565b614cca81614caf565b8114614cd557600080fd5b50565b600081359050614ce781614cc1565b92915050565b600060208284031215614d0357614d02614c8a565b5b6000614d1184828501614cd8565b91505092915050565b614d2381614be7565b8114614d2e57600080fd5b50565b600081359050614d4081614d1a565b92915050565b600060208284031215614d5c57614d5b614c8a565b5b6000614d6a84828501614d31565b91505092915050565b60008060408385031215614d8a57614d89614c8a565b5b6000614d9885828601614cd8565b9250506020614da985828601614d31565b9150509250929050565b614dbc81614caf565b82525050565b600060a082019050614dd76000830188614bf1565b614de46020830187614bf1565b614df16040830186614bf1565b614dfe6060830185614bf1565b614e0b6080830184614db3565b9695505050505050565b600064ffffffffff82169050919050565b614e2f81614e15565b82525050565b6000606082019050614e4a6000830186614e26565b614e576020830185614bf1565b614e646040830184614bf1565b949350505050565b6000602082019050614e816000830184614db3565b92915050565b6000614e9282614c8f565b9050919050565b614ea281614e87565b82525050565b6000602082019050614ebd6000830184614e99565b92915050565b600061010082019050614ed9600083018b614bf1565b614ee6602083018a614bf1565b614ef36040830189614bf1565b614f006060830188614bf1565b614f0d6080830187614bf1565b614f1a60a0830186614bf1565b614f2760c0830185614bf1565b614f3460e0830184614e26565b9998505050505050505050565b60008060408385031215614f5857614f57614c8a565b5b6000614f6685828601614d31565b9250506020614f7785828601614d31565b9150509250929050565b600060ff82169050919050565b614f9781614f81565b8114614fa257600080fd5b50565b600081359050614fb481614f8e565b92915050565b600080600060608486031215614fd357614fd2614c8a565b5b6000614fe186828701614fa5565b9350506020614ff286828701614d31565b925050604061500386828701614d31565b9150509250925092565b600060a0820190506150226000830188614bf1565b61502f6020830187614bf1565b61503c6040830186614bf1565b6150496060830185614bf1565b6150566080830184614bf1565b9695505050505050565b600060039050919050565b600081905092915050565b6000819050919050565b61508981614be7565b82525050565b600061509b8383615080565b60208301905092915050565b6000602082019050919050565b6150bd81615060565b6150c7818461506b565b92506150d282615076565b8060005b838110156151035781516150ea878261508f565b96506150f5836150a7565b9250506001810190506150d6565b505050505050565b600060e0820190506151206000830188614db3565b61512d6020830187614bf1565b61513a6040830186614bf1565b6151476060830185614bf1565b61515460808301846150b4565b9695505050505050565b60006080820190506151736000830187614db3565b6151806020830186614e26565b61518d6040830185614bf1565b61519a6060830184614bf1565b95945050505050565b6151ac81614e87565b81146151b757600080fd5b50565b6000813590506151c9816151a3565b92915050565b600080604083850312156151e6576151e5614c8a565b5b60006151f485828601614fa5565b9250506020615205858286016151ba565b9150509250929050565b60008060006060848603121561522857615227614c8a565b5b600061523686828701614cd8565b935050602061524786828701614fa5565b925050604061525886828701614d31565b9150509250925092565b60008060006060848603121561527b5761527a614c8a565b5b600061528986828701614d31565b935050602061529a86828701614fa5565b92505060406152ab86828701614d31565b9150509250925092565b600080604083850312156152cc576152cb614c8a565b5b60006152da85828601614cd8565b92505060206152eb85828601614fa5565b9150509250929050565b6152fe81614f81565b82525050565b60006040820190506153196000830185614bf1565b61532660208301846152f5565b9392505050565b60006040820190506153426000830185614bf1565b61534f6020830184614bf1565b9392505050565b600060208201905061536b60008301846152f5565b92915050565b600061012082019050615387600083018c614db3565b615394602083018b614bf1565b6153a1604083018a614bf1565b6153ae6060830189614bf1565b6153bb6080830188614bf1565b6153c860a0830187614bf1565b6153d560c0830186614bf1565b6153e260e0830185614bf1565b6153f0610100830184614bf1565b9a9950505050505050505050565b60006080820190506154136000830187614e26565b6154206020830186614bf1565b61542d6040830185614bf1565b61543a6060830184614bf1565b95945050505050565b600061014082019050615459600083018d614db3565b615466602083018c614bf1565b615473604083018b614bf1565b615480606083018a614bf1565b61548d6080830189614bf1565b61549a60a0830188614bf1565b6154a760c0830187614bf1565b6154b460e0830186614e26565b6154c2610100830185614bf1565b6154d0610120830184614bf1565b9b9a5050505050505050505050565b6000806000606084860312156154f8576154f7614c8a565b5b600061550686828701614cd8565b935050602061551786828701614d31565b925050604061552886828701614fa5565b9150509250925092565b6000806040838503121561554957615548614c8a565b5b600061555785828601614cd8565b925050602061556885828601614cd8565b9150509250929050565b600082825260208201905092915050565b7f556e617574686f72697a65642100000000000000000000000000000000000000600082015250565b60006155b9600d83615572565b91506155c482615583565b602082019050919050565b600060208201905081810360008301526155e8816155ac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061562982614be7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561565c5761565b6155ef565b5b600182019050919050565b7f4e6f2072652d656e7472616e6379000000000000000000000000000000000000600082015250565b600061569d600e83615572565b91506156a882615667565b602082019050919050565b600060208201905081810360008301526156cc81615690565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f596f7572206469766964656e6473206973206c657373207468616e206d696e6960008201527f6d756d207061796f757421000000000000000000000000000000000000000000602082015250565b600061575e602b83615572565b915061576982615702565b604082019050919050565b6000602082019050818103600083015261578d81615751565b9050919050565b600061579f82614be7565b91506157aa83614be7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156157df576157de6155ef565b5b828201905092915050565b60008160601b9050919050565b6000615802826157ea565b9050919050565b6000615814826157f7565b9050919050565b61582c61582782614caf565b615809565b82525050565b600061583e828461581b565b60148201915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061588782614be7565b915061589283614be7565b9250826158a2576158a161584d565b5b828204905092915050565b60006158b8826157f7565b9050919050565b6158d06158cb82614e87565b6158ad565b82525050565b60006158e282846158bf565b60148201915081905092915050565b6000819050919050565b61590c61590782614be7565b6158f1565b82525050565b600061591e82846158fb565b60208201915081905092915050565b600061593882614be7565b915061594383614be7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561597c5761597b6155ef565b5b828202905092915050565b600061599282614be7565b915061599d83614be7565b9250828210156159b0576159af6155ef565b5b828203905092915050565b6000815190506159ca81614d1a565b92915050565b6000602082840312156159e6576159e5614c8a565b5b60006159f4848285016159bb565b91505092915050565b6000615a0882614f81565b915060ff821415615a1c57615a1b6155ef565b5b600182019050919050565b6000615a3282614be7565b91506000821415615a4657615a456155ef565b5b600182039050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000615a87602083615572565b9150615a9282615a51565b602082019050919050565b60006020820190508181036000830152615ab681615a7a565b9050919050565b7f556e726567697374657265642057616c6c657421000000000000000000000000600082015250565b6000615af3601483615572565b9150615afe82615abd565b602082019050919050565b60006020820190508181036000830152615b2281615ae6565b9050919050565b7f596f757220424e42206973206c657373207468616e206d696e696d756d20656e60008201527f7472792100000000000000000000000000000000000000000000000000000000602082015250565b6000615b85602483615572565b9150615b9082615b29565b604082019050919050565b60006020820190508181036000830152615bb481615b78565b9050919050565b6000606082019050615bd06000830186614bf1565b615bdd6020830185614bf1565b615bea60408301846152f5565b949350505050565b6000819050919050565b6000819050919050565b6000615c21615c1c615c1784615bf2565b615bfc565b614f81565b9050919050565b615c3181615c06565b82525050565b6000604082019050615c4c6000830185614db3565b615c596020830184615c28565b9392505050565b600081519050615c6f81614f8e565b92915050565b60008060408385031215615c8c57615c8b614c8a565b5b6000615c9a858286016159bb565b9250506020615cab85828601615c60565b9150509250929050565b6000615cc082614f81565b9150615ccb83614f81565b92508260ff03821115615ce157615ce06155ef565b5b828201905092915050565b6000615d07615d02615cfd84614f81565b615bfc565b614be7565b9050919050565b615d1781615cec565b82525050565b6000604082019050615d326000830185614bf1565b615d3f6020830184615d0e565b9392505050565b7f496e76616c696420506f736974696f6e21000000000000000000000000000000600082015250565b6000615d7c601183615572565b9150615d8782615d46565b602082019050919050565b60006020820190508181036000830152615dab81615d6f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615e0e602683615572565b9150615e1982615db2565b604082019050919050565b60006020820190508181036000830152615e3d81615e01565b9050919050565b6000606082019050615e596000830186614bf1565b615e666020830185614bf1565b615e736040830184615d0e565b94935050505056fea264697066735822122000c70dde2fc92da73d7848f073f18c5196e73040a619f40c74ebd577029d14a364736f6c63430008090033

Deployed Bytecode Sourcemap

1725:21434:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5095:152;;;;;;;;;;;;;:::i;:::-;;22950:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22665:271;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;3982:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20098:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11236:1310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18289:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;17121:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;3844:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2182:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16636:477;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21126:702;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;19904:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4122:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19132:351;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18813:307;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;20662:454;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;4092:23;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;14371:811;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19674:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3899:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20265:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1356:148;;;;;;;;;;;;;:::i;:::-;;2370:71;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18522:279;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;21836:434;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17558:599;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9996:1230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;15480:1141;;;;;;;;;;;;;:::i;:::-;;2268:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23056:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;796:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3792:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;2149:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2452:60;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3936:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17428:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4019:31;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;2315:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20534:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22278:374;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;4057:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3744:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;18165:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5259:1247;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19501:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1012:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5095:152;5163:3;;;;;;;;;;;5151:15;;:10;:15;;;5143:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;5203:3;;;;;;;;;;;5195:21;;:44;5217:21;5195:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5095:152::o;22950:98::-;22992:7;23019:21;23012:28;;22950:98;:::o;22665:271::-;22711:16;22729:17;22748:15;22765:17;22784:18;22804:14;22820:12;22853:8;;22863:7;;22872:11;;22885:8;;22895:9;;22906:10;;22918:9;;22845:83;;;;;;;;;;;;;;22665:271;;;;;;;:::o;3982:28::-;;;;:::o;20098:161::-;20173:3;;;;;;;;;;;20161:15;;:10;:15;;;20153:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;20221:1;20204:6;:14;20211:6;20204:14;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;20233:16;;:18;;;;;;;;;:::i;:::-;;;;;;20098:161;:::o;11236:1310::-;1624:6;;;;;;;;;;;1623:7;1615:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;1669:4;1660:6;;:13;;;;;;;;;;;;;;;;;;11337:1:::1;11316:6;:18;11323:10;11316:18;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;11312:39;;;11342:7;;11312:39;11361:21;11385:7;:19;11393:10;11385:19;;;;;;;;;;;;;;;11361:43;;11415:21;11425:10;11415:9;:21::i;:::-;11485:8;11494:1;11485:11;;;;;;;:::i;:::-;;;;11465:6;:16;;;:31;;11457:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;11565:14;11583:6;:16;;;11565:34;;11630:6;11613:13;:23;;:44;;;;;11656:1;11640:13;:17;11613:44;11610:229;;;11704:35;11717:6;11725:13;11704:12;:35::i;:::-;11685:6;:16;;:54;;;;11763:13;11754:22;;11610:229;;;11826:1;11807:6;:16;;:20;;;;11610:229;11899:6;11875;:20;;;:30;;;;;;;:::i;:::-;;;;;;;;11939:6;11928:7;;:17;;;;;;;:::i;:::-;;;;;;;;11971:10;11961:29;;;11983:6;11961:29;;;;;;:::i;:::-;;;;;;;;12007:10;12020:7;:19;12028:10;12020:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;12007:40;;12052:16;12071:64;12084:33;12097:6;12105:8;12114:1;12105:11;;;;;;;:::i;:::-;;;;12084:12;:33::i;:::-;2256:4;12071:12;:64::i;:::-;12052:83;;12177:8;12146:7;:11;12154:2;12146:11;;;;;;;;;;;;;;;:27;;;:39;;;;;;;:::i;:::-;;;;;;;;12217:8;12204:9;;:21;;;;;;;:::i;:::-;;;;;;;;12267:1;12253:8;12262:1;12253:11;;;;;;;:::i;:::-;;;;:15;12250:169;;;12284:13;12300:64;12313:33;12326:6;12334:8;12343:1;12334:11;;;;;;;:::i;:::-;;;;12313:12;:33::i;:::-;2256:4;12300:12;:64::i;:::-;12284:80;;12397:5;12383:10;;:19;;;;;;;:::i;:::-;;;;;;;;12269:150;12250:169;12447:2;12439:20;;:30;12460:8;12439:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12488:10;12480:28;;:36;12509:6;12480:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11296:1250;;;;1684:1;1705:5:::0;1696:6;;:14;;;;;;;;;;;;;;;;;;11236:1310;:::o;18289:217::-;18358:14;18374:12;18388:14;18404:15;18421:14;18455:43;18464:33;18495:1;18464:7;:13;18472:4;18464:13;;;;;;;;;;;;;;;:19;;18485:3;18464:26;;;;;;;;:::i;:::-;;;;;;;;;;:30;;:33;;;;:::i;:::-;18455:7;:43::i;:::-;18448:50;;;;;;;;;;18289:217;;;;;;;;:::o;17121:295::-;17194:11;17207:16;17225:14;17257:21;17281:7;:14;17289:5;17281:14;;;;;;;;;;;;;;;17257:38;;17306:19;17328:6;:14;;17343:5;17328:21;;;;;;;;:::i;:::-;;;;;;;;;;;;17306:43;;17367:4;:9;;;;;;;;;;;;17378:4;:16;;;17396:4;:11;;;17360:48;;;;;;;;17121:295;;;;;:::o;3844:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;2182:26::-;;;;;;;;;;;;;:::o;16636:477::-;16683:7;16708:12;17033;17000:15;16982:10;16965:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;16955:39;;;;;;16947:48;;16946:70;;;;:::i;:::-;16914:14;16881:15;16859:14;16842:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;16832:43;;;;;;16824:52;;16823:74;;;;:::i;:::-;16790:16;16772:15;:34;;;;:::i;:::-;:126;;;;:::i;:::-;:156;;;;:::i;:::-;:245;;;;:::i;:::-;:273;;;;:::i;:::-;16741:315;;;;;;;;:::i;:::-;;;;;;;;;;;;;16731:326;;;;;;16723:335;;16708:350;;17100:3;17093;17086:4;:10;;;;:::i;:::-;17085:18;;;;:::i;:::-;17077:4;:27;;;;:::i;:::-;17069:36;;;16636:477;;;:::o;21126:702::-;21184:17;21203:16;21221:13;21236:17;21321:18;21341:19;21362;21383:12;21413:21;21437:7;:14;21445:5;21437:14;;;;;;;;;;;;;;;21413:38;;21470:14;21487:4;:18;;;21506:5;21487:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21470:42;;21531:6;:21;;;21571:6;:20;;;21610:6;:24;;;21654:6;:18;;;21692:6;:22;;;21733:6;:18;;;21780:6;:16;;;21771:6;:25;;;;:::i;:::-;21799:6;:20;;;;;;;;;;;;21523:297;;;;;;;;;;;;;;;;;;21126:702;;;;;;;;;:::o;19904:180::-;20007:3;;;;;;;;;;;19995:15;;:10;:15;;;19987:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;20047:29;;;;;;;;20053:10;20047:29;;;;20065:10;20047:29;;;20035:6;:9;20042:1;20035:9;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;;19904:180;;:::o;4122:24::-;;;;:::o;19132:351::-;19237:3;;;;;;;;;;;19225:15;;:10;:15;;;19217:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;19279:1;19272:5;:8;;;19269:207;;;19317:6;19306:8;:17;;;;19269:207;;;19350:1;19343:5;:8;;;19340:136;;;19389:6;19367:11;19379:6;19367:19;;;;;;;:::i;:::-;;;:28;;;;19340:136;;;19422:1;19415:5;:8;;;19412:64;;;19458:6;19439:8;19448:6;19439:16;;;;;;;:::i;:::-;;;:25;;;;19412:64;19340:136;19269:207;19132:351;;;:::o;18813:307::-;18868:14;18884:17;18903:18;18923:13;18938:16;18976:11;18988:3;18976:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:23;;;19001:11;19013:3;19001:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:26;;;19029:11;19041:3;19029:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:27;;;19058:11;19070:3;19058:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:22;;;19082:11;19094:3;19082:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:29;;;18968:144;;;;;;;;;;18813:307;;;;;;;:::o;20662:454::-;20721:10;20733:19;20754:18;20774:16;20792:27;;:::i;:::-;20832:21;20856:7;:14;20864:5;20856:14;;;;;;;;;;;;;;;20832:38;;20893:7;20889:107;20910:18;20906:1;:22;;;20889:107;;;20965:6;:16;;20982:1;20965:19;;;;;;;;;:::i;:::-;;;;20950:9;20960:1;20950:12;;;;;;;;;:::i;:::-;;;;;:34;;;;;20930:3;;;;;:::i;:::-;;;;20889:107;;;;21014:6;:14;;;;;;;;;;;;21030:6;:15;;:22;;;;21054:6;:14;;:21;;;;21077:6;:12;;:19;;;;21006:102;;;;;;;;;20662:454;;;;;;;:::o;4092:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14371:811::-;14431:13;14482:1;14461:6;:18;14468:10;14461:18;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;14457:41;;;14494:1;14487:8;;;;14457:41;14504:21;14528:7;:14;14536:5;14528:14;;;;;;;;;;;;;;;14504:38;;14563:9;14559:593;14582:6;:15;;:22;;;;14578:1;:26;14559:593;;;14626:16;14645:6;:15;;14661:1;14645:18;;;;;;;;:::i;:::-;;;;;;;;;;;;14626:37;;14692:19;14714:6;:17;14721:3;:9;;;14714:17;;;;;;;;;;;14692:39;;14756:16;14804:5;14786;:15;;;:23;;;;:::i;:::-;14775:3;:8;;;;;;;;;;;;:34;;;;;;:::i;:::-;14756:53;;14824:11;14861:3;:8;;;;;;;;;;;;14838:31;;:6;:20;;;;;;;;;;;;:31;;;:65;;14895:3;:8;;;;;;;;;;;;14838:65;;;14872:6;:20;;;;;;;;;;;;14838:65;14824:79;;14918:10;14949:8;14931:15;:26;:55;;14971:15;14931:55;;;14960:8;14931:55;14918:68;;15013:2;15006:4;:9;;;15003:126;;;15106:7;15088:5;:15;;;15072:5;:13;;;15064:4;15059:9;;:2;:9;;;;:::i;:::-;15045:3;:10;;;:24;;;;:::i;:::-;:40;;;;:::i;:::-;:58;;;;:::i;:::-;:68;;;;:::i;:::-;15036:77;;;;;:::i;:::-;;;15003:126;14611:541;;;;;14606:3;;;;;:::i;:::-;;;;14559:593;;;;15162:12;14371:811;;;;:::o;19674:221::-;19765:3;;;;;;;;;;;19753:15;;:10;:15;;;19745:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;19804:1;19799:3;:6;;;19796:92;;;19827:6;19821:3;;:12;;;;;;;;;;;;;;;;;;19796:92;;;19870:6;19864:3;;:12;;;;;;;;;;;;;;;;;;19796:92;19674:221;;:::o;3899:24::-;;;;:::o;20265:257::-;20342:3;;;;;;;;;;;20330:15;;:10;:15;;;20322:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;20390:1;20373:6;:14;20380:6;20373:14;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;20441:15;20402:7;:15;20410:6;20402:15;;;;;;;;;;;;;;;:29;;;:55;;;;;;;;;;;;;;;;;;20490:1;20471:16;;:20;20468:47;;;20494:16;;:18;;;;;;;;;:::i;:::-;;;;;;20468:47;20265:257;:::o;1356:148::-;933:12;:10;:12::i;:::-;923:22;;:6;;;;;;;;;;:22;;;915:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1463:1:::1;1426:40;;1447:6;::::0;::::1;;;;;;;;1426:40;;;;;;;;;;;;1494:1;1477:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1356:148::o:0;2370:71::-;;;;;;;;;;;;;;;;;;;;:::o;18522:279::-;18572:14;18588:12;18602:14;18618:15;18635:14;18670:11;18682:3;18670:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:23;;;18695:11;18707:3;18695:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:21;;;18718:11;18730:3;18718:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:23;;;18743:11;18755:3;18743:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:24;;;18769:11;18781:3;18769:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:23;;;;;;;;;;;;18662:131;;;;;;;;;;18522:279;;;;;;;:::o;21836:434::-;21925:16;21959:21;21983:7;:14;21991:5;21983:14;;;;;;;;;;;;;;;21959:38;;22008:20;22049:1;22042:5;:8;;;22039:188;;;22072:6;:11;;22084:5;22072:18;;;;;;;;:::i;:::-;;;;;;;;;22066:24;;22039:188;;;22119:1;22110:5;:10;;;22107:120;;;22142:6;:11;;22154:5;22142:18;;;;;;;;:::i;:::-;;;;;;;;;22136:24;;22107:120;;;22197:6;:11;;22209:5;22197:18;;;;;;;;:::i;:::-;;;;;;;;;22191:24;;22107:120;22039:188;22252:2;:9;;;;;;;;;;;;22245:17;;;;21836:434;;;;;:::o;17558:599::-;17660:3;;;;;;;;;;;17648:15;;:10;:15;;;17640:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;17701:1;17695:4;:7;;;17692:450;;;17747:6;17718:11;17730:3;17718:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:26;;:35;;;;17692:450;;;17779:1;17773:4;:7;;;17770:372;;;17826:6;17796:11;17808:3;17796:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:27;;:36;;;;17770:372;;;17858:1;17852:4;:7;;;17849:293;;;17899:6;17875:11;17887:3;17875:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:21;;:30;;;;17849:293;;;17931:1;17925:4;:7;;;17922:220;;;17974:6;17948:11;17960:3;17948:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:23;;:32;;;;17922:220;;;18006:1;18000:4;:7;;;17997:145;;;18050:6;18023:11;18035:3;18023:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:24;;:33;;;;17997:145;;;18082:1;18076:4;:7;;;18073:69;;;18124:6;18099:11;18111:3;18099:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:22;;:31;;;;18073:69;17997:145;17922:220;17849:293;17770:372;17692:450;17558:599;;;:::o;9996:1230::-;10065:4;10071:5;10089:11;10118:1;10114;:5;;;10111:1085;;;10140:6;10135:426;10156:7;:13;10164:4;10156:13;;;;;;;;;;;;;;;:19;;:26;;;;10152:1;:30;10135:426;;;10235:7;:13;10243:4;10235:13;;;;;;;;;;;;;;;:19;;10255:1;10235:22;;;;;;;;:::i;:::-;;;;;;;;;;10226:31;;10334:1;10297:11;10309:13;10320:1;10309:6;:10;;:13;;;;:::i;:::-;10297:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:33;;;:38;10294:250;;;10366:6;10374:1;10359:17;;;;;;;;10294:250;10464:1;10426:11;10438:13;10449:1;10438:6;:10;;:13;;;;:::i;:::-;10426:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:34;;;:39;10423:121;;;10496:6;10504:1;10489:17;;;;;;;;10423:121;10184:3;;;;;:::i;:::-;;;;10135:426;;;;10111:1085;;;10593:13;10626:6;10635:8;10644:1;10635:11;;;;;;;:::i;:::-;;;;10626:20;;10621:564;10652:12;;10648:1;:16;10621:564;;;10698:9;:12;10708:1;10698:12;;;;;;;;;;;;;;;;;;;;;10690:20;;10734:6;10729:441;10750:7;:14;10758:5;10750:14;;;;;;;;;;;;;;;:20;;:27;;;;10746:1;:31;10729:441;;;10818:7;:14;10826:5;10818:14;;;;;;;;;;;;;;;:20;;10839:1;10818:23;;;;;;;;:::i;:::-;;;;;;;;;;10809:32;;10915:1;10878:11;10890:13;10901:1;10890:6;:10;;:13;;;;:::i;:::-;10878:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:33;;;:38;10875:274;;;10951:6;10959:1;10944:17;;;;;;;;;;10875:274;11057:1;11019:11;11031:13;11042:1;11031:6;:10;;:13;;;;:::i;:::-;11019:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:34;;;:39;11016:133;;;11093:6;11101:1;11086:17;;;;;;;;;;11016:133;10779:3;;;;;:::i;:::-;;;;10729:441;;;;10666:3;;;;;:::i;:::-;;;;10621:564;;;;10578:618;10111:1085;11213:1;11216;11206:12;;;;;9996:1230;;;;;;:::o;15480:1141::-;1624:6;;;;;;;;;;;1623:7;1615:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;1669:4;1660:6;;:13;;;;;;;;;;;;;;;;;;15559:1:::1;15538:6;:18;15545:10;15538:18;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;15534:39;;;15564:7;;15534:39;15585:21;15609:7;:19;15617:10;15609:19;;;;;;;;;;;;;;;15585:43;;15674:1;15649:6;:15;;:22;;;;:26;15641:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;15738:1;15724:10;;:15;15721:30;;15742:7;;;15721:30;15761:12;15776:9;15781:3;15776:4;:9::i;:::-;15761:24;;15796:13;15841:8;15850:1;15841:11;;;;;;;:::i;:::-;;;;15833:4;:19;;:42;;;;;15864:8;15873:1;15864:11;;;;;;;:::i;:::-;;;;15856:4;:19;;15833:42;15830:375;;;15910:10;;15894:12;:10;:12::i;:::-;:26;;:44;;;;;15937:1;15924:10;;:14;15894:44;15891:303;;;15970:10;;15962:18;;16024:1;16011:10;:14;;;;16057:5;16044:9;;:18;;;;;;;:::i;:::-;;;;;;;;16103:5;16081:6;:18;;;:27;;;;;;;:::i;:::-;;;;;;;;16151:10;16143:28;;:35;16172:5;16143:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15891:303;15830:375;16223:24;;:::i;:::-;16287:161;;;;;;;;16394:10;16287:161;;;;;;16322:15;16287:161;;;;;;16432:4;16287:161;;;;16361:5;16287:161;;::::0;16274:174:::1;;16471:7;16484:10;16471:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16522:6;:14;;16542:10;16522:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16584:4;16566:6;:15;;:22;;;;16599:12;;:14;;;;;;;;;:::i;:::-;;;;;;15522:1099;;;;1684:1;1705:5:::0;1696:6;;:14;;;;;;;;;;;;;;;;;;15480:1141::o;2268:35::-;;;;:::o;23056:85::-;23099:7;23126;:5;:7::i;:::-;23119:14;;23056:85;:::o;796:77::-;834:7;859:6;;;;;;;;;;;852:13;;796:77;:::o;3792:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2149:26::-;;;;;;;;;;;;;:::o;2452:60::-;;;;;;;;;;;;;;;;;;;;:::o;3936:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;17428:118::-;17488:4;17512:7;:13;17520:4;17512:13;;;;;;;;;;;;;;;:19;;:26;;;;17505:33;;17428:118;;;:::o;4019:31::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2315:47::-;;;;;;;;;;;;;;;;;;;;:::o;20534:110::-;20594:7;20622:9;:14;20632:3;20622:14;;;;;;;;;;;;;;;;;;;;;20615:21;;20534:110;;;:::o;22278:374::-;22353:11;22366:14;22382:16;22400:15;22433:21;22457:7;:14;22465:5;22457:14;;;;;;;;;;;;;;;22433:38;;22482:16;22501:6;:15;;22517:5;22501:22;;;;;;;;:::i;:::-;;;;;;;;;;;;22482:41;;22534:19;22556:6;:17;22563:3;:9;;;22556:17;;;;;;;;;;;22534:39;;22591:3;:8;;;;;;;;;;;;22601:3;:10;;;22613:5;:15;;;22630:5;:13;;;22584:60;;;;;;;;;;;22278:374;;;;;;;:::o;4057:22::-;;;;:::o;3744:41::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18165:112::-;18217:7;18245:11;18257:3;18245:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:23;;;;;;;;;;;;18237:32;;18165:112;;;:::o;5259:1247::-;5375:1;5354:6;:18;5361:10;5354:18;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;5350:39;;;5380:7;;5350:39;5420:8;5429:1;5420:11;;;;;;;:::i;:::-;;;;5407:9;:24;;5399:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5485:21;5509:7;:19;5517:10;5509:19;;;;;;;;;;;;;;;5485:43;;5539:30;5549:10;5561:7;5539:9;:30::i;:::-;5581:6;:15;;5602:107;;;;;;;;5681:15;5602:107;;;;;;5620:1;5602:107;;;;5644:9;5602:107;;;5581:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5750:9;5725:6;:21;;;:34;;;;;;;:::i;:::-;;;;;;;;5782:9;5770:8;;:21;;;;;;;:::i;:::-;;;;;;;;5812:9;5824:64;5837:33;5850:9;5861:8;;5837:12;:33::i;:::-;2256:4;5824:12;:64::i;:::-;5812:76;;5901:3;;;;;;;;;;;5893:21;;:24;5915:1;5893:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5969:1;5958:7;;:12;;;;;;;:::i;:::-;;;;;;;;6030:1;6016:8;6025:1;6016:11;;;;;;;:::i;:::-;;;;:15;6013:172;;;6047:13;6063:67;6076:36;6089:9;6100:8;6109:1;6100:11;;;;;;;:::i;:::-;;;;6076:12;:36::i;:::-;2256:4;6063:12;:67::i;:::-;6047:83;;6163:5;6149:10;;:19;;;;;;;:::i;:::-;;;;;;;;6032:153;6013:172;6199:40;6217:10;6229:9;6199:17;:40::i;:::-;6271:10;6262:44;;;6283:9;6294:4;6300:5;6262:44;;;;;;;;:::i;:::-;;;;;;;;6328:1;6322:4;:7;6319:83;;;6361:4;:18;;;6380:7;6388:1;6361:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6345:45;;;;;;;;6319:83;6414:38;6428:10;6440:4;6446:5;6414:13;:38::i;:::-;6463:6;:12;;6481:10;;6463:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5338:1168;;5259:1247;;;;:::o;19501:161::-;19592:3;;;;;;;;;;;19580:15;;:10;:15;;;19572:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;19649:5;19623:7;:15;19631:6;19623:15;;;;;;;;;;;;;;;:23;;;:31;;;;;;;;;;;;;;;;;;19501:161;;:::o;1012:107::-;933:12;:10;:12::i;:::-;923:22;;:6;;;;;;;;;;:22;;;915:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1083:28:::1;1102:8;1083:18;:28::i;:::-;1012:107:::0;:::o;24856:98::-;24914:7;24945:1;24941;:5;;;;:::i;:::-;24934:12;;24856:98;;;;:::o;15190:270::-;15243:14;15260:4;:18;;;15279:5;15260:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15243:42;;15308:1;15299:6;:10;15296:157;;;15376:15;15338:7;:14;15346:5;15338:14;;;;;;;;;;;;;;;:28;;;:54;;;;;;;;;;;;;;;;;;15435:6;15407:7;:14;15415:5;15407:14;;;;;;;;;;;;;;;:24;;;:34;;;;;;;:::i;:::-;;;;;;;;15296:157;15232:228;15190:270;:::o;24644:98::-;24702:7;24733:1;24729;:5;;;;:::i;:::-;24722:12;;24644:98;;;;:::o;24750:::-;24808:7;24839:1;24835;:5;;;;:::i;:::-;24828:12;;24750:98;;;;:::o;100:::-;153:7;180:10;173:17;;100:98;:::o;13169:1194::-;13271:1;13237:36;;:7;:14;13245:5;13237:14;;;;;;;;;;;;;;;:22;;;;;;;;;;;;:36;;;:56;;;;;13286:7;:5;:7::i;:::-;13277:16;;:5;:16;;;;13237:56;13234:1122;;;13351:1;13320:7;:11;13328:2;13320:11;;;;;;;;;;;;;;;:20;;:27;;;;:32;13317:72;;;13366:7;:5;:7::i;:::-;13361:12;;13317:72;13432:5;13404:9;:25;13415:12;;13404:25;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;13447:12;;:14;;;;;;;;;:::i;:::-;;;;;;13527:2;13502:7;:14;13510:5;13502:14;;;;;;;;;;;;;;;:22;;;:27;;;;;;;;;;;;;;;;;;13548:7;13544:801;13565:18;13561:1;:22;;;13544:801;;;13609:7;:11;13617:2;13609:11;;;;;;;;;;;;;;;:21;;13631:1;13609:24;;;;;;;;;:::i;:::-;;;;:26;;;;;;;;;:::i;:::-;;;;;;13642:17;13662:7;:11;13670:2;13662:11;;;;;;;;;;;;;;;13642:31;;13700:1;13695;:6;;;13692:544;;;13725:2;:7;;13738:109;;;;;;;;13782:1;13738:109;;;;;;13818:5;13738:109;;;;;13725:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13692:544;;;13883:1;13878;:6;;;13875:361;;;13908:2;:7;;13921:109;;;;;;;;13965:1;13921:109;;;;;;14001:5;13921:109;;;;;13908:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13875:361;;;14066:1;14061;:6;;;14058:178;;;14091:2;:7;;14104:109;;;;;;;;14148:1;14104:109;;;;;;14184:5;14104:109;;;;;14091:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14058:178;13875:361;13692:544;14265:7;:11;14273:2;14265:11;;;;;;;;;;;;;;;:19;;;;;;;;;;;;14260:24;;14320:1;14306:16;;:2;:16;;;14303:26;;;14324:5;;;14303:26;13590:755;13585:3;;;;;:::i;:::-;;;;13544:801;;;;13234:1122;13169:1194;;:::o;12558:598::-;12636:10;12649:7;:14;12657:5;12649:14;;;;;;;;;;;;;;;:22;;;;;;;;;;;;12636:35;;12699:1;12685:16;;:2;:16;;;:33;;;;12711:7;:5;:7::i;:::-;12705:13;;:2;:13;;;12685:33;12682:45;;;12720:7;;;12682:45;12743:7;12739:403;12760:18;12756:1;:22;;;12739:403;;;12817:1;12803:16;;:2;:16;;;12800:26;;;12821:5;;12800:26;12855:13;2256:4;12881:11;12893:1;12881:14;;;;;;;;;:::i;:::-;;;;12871:7;:24;;;;:::i;:::-;:42;;;;:::i;:::-;12855:58;;12936:2;12928:20;;:27;12949:5;12928:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12994:5;12961:7;:11;12969:2;12961:11;;;;;;;;;;;;;;;:29;;;:38;;;;;;;:::i;:::-;;;;;;;;13020:5;13005:11;;:20;;;;;;;:::i;:::-;;;;;;;;13057:7;:11;13065:2;13057:11;;;;;;;;;;;;;;;:19;;;;;;;;;;;;13052:24;;13113:2;13098:32;;;13117:5;13127:1;13125;:3;;;;:::i;:::-;13098:32;;;;;;;:::i;:::-;;;;;;;;12785:357;12780:3;;;;;:::i;:::-;;;;12739:403;;;;12625:531;12558:598;;;:::o;6518:1170::-;6619:1;6612:4;:8;6609:310;;;6648:1;6639:5;:10;;;:44;;;;;6682:1;6653:11;6670:1;6665:4;:6;;;;:::i;:::-;6653:19;;;;;;;;:::i;:::-;;;;;;;;;;;;:26;;;:30;6639:44;6636:116;;;6714:1;6711;:4;6703:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;6636:116;6786:1;6777:5;:10;;;:45;;;;;6821:1;6791:11;6808:1;6803:4;:6;;;;:::i;:::-;6791:19;;;;;;;;:::i;:::-;;;;;;;;;;;;:27;;;:31;6777:45;6774:134;;;6867:1;6864;:4;6856:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;6774:134;6609:310;6931:10;;:12;;;;;;;;;:::i;:::-;;;;;;6954:24;;:::i;:::-;6998:273;;;;;;;;7033:5;6998:273;;;;;;7062:10;;6998:273;;;;7094:4;6998:273;;;;7122:1;6998:273;;;;7148:1;6998:273;;;;7175:1;6998:273;;;;7203:1;6998:273;;;;7227:1;6998:273;;;;7258:1;6998:273;;;6989:282;;7292:11;7309:6;7292:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7352:1;7345:4;:8;7342:225;;;7381:1;7372:5;:10;;;7369:167;;;7431:10;;7402:11;7419:1;7414:4;:6;;;;:::i;:::-;7402:19;;;;;;;;:::i;:::-;;;;;;;;;;;;:26;;:39;;;;7369:167;;;7510:10;;7480:11;7497:1;7492:4;:6;;;;:::i;:::-;7480:19;;;;;;;;:::i;:::-;;;;;;;;;;;;:27;;:40;;;;7369:167;7342:225;7615:18;7601:10;;:32;7598:81;;7649:18;7662:4;7649:12;:18::i;:::-;7598:81;6588:1100;6518:1170;;;:::o;1127:223::-;1219:1;1199:22;;:8;:22;;;;1191:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1307:8;1278:38;;1299:6;;;;;;;;;;1278:38;;;;;;;;;;;;1334:8;1325:6;;:17;;;;;;;;;;;;;;;;;;1127:223;:::o;7696:2292::-;7756:15;7782:13;7806:9;7826:8;7845:12;7863:13;7882:11;7896:1;7882:15;;7919:2057;7934:1;7925:6;:10;:34;;;;;7948:8;7957:1;7948:11;;;;;;;:::i;:::-;;;;7939:5;:20;;;;7925:34;:61;;;;;7975:8;7984:1;7975:11;;;;;;;:::i;:::-;;;;7963:9;:23;;;7925:61;7919:2057;;;8026:1;8019:6;:8;;;;:::i;:::-;8013:14;;8086:1;8060:11;8072:3;8060:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:23;;;:27;8056:47;;;8091:9;;;;;:::i;:::-;;;;8056:47;8152:1;8125:11;8137:3;8125:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:24;;;:28;8121:49;;;8157:10;;;;;:::i;:::-;;;;8121:49;8235:7;8206:11;8218:3;8206:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:26;;;:36;8203:81;;;8274:7;8245:11;8257:3;8245:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:26;;:36;;;;8203:81;8331:8;8301:11;8313:3;8301:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:27;;;:38;8298:85;;;8372:8;8342:11;8354:3;8342:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:27;;:38;;;;8298:85;8406:11;8418:3;8406:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:21;;;8399:28;;8457:1;8451;8446:4;:6;;;;:::i;:::-;8445:13;8442:439;;8525:6;8495:11;8512:1;8507:4;:6;;;;:::i;:::-;8495:19;;;;;;;;:::i;:::-;;;;;;;;;;;;:26;;;:36;8492:374;;;8594:11;8606:3;8594:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:27;;;8565:11;8577:3;8565:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:26;;;:56;;;;:::i;:::-;8555:66;;8655:1;8644:12;;8492:374;;;8715:6;8684:11;8701:1;8696:4;:6;;;;:::i;:::-;8684:19;;;;;;;;:::i;:::-;;;;;;;;;;;;:27;;;:37;8681:185;;;8785:11;8797:3;8785:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:27;;;8756:11;8768:3;8756:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:26;;;:56;;;;:::i;:::-;8745:67;;8845:1;8835:11;;8681:185;8492:374;8442:439;8927:4;8918:13;;9001:7;;;;;:::i;:::-;;;;9077:11;9089:3;9077:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:26;;;9066:37;;9132:11;9144:3;9132:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:27;;;9121:8;:38;9118:85;;;9173:11;9185:3;9173:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:27;;;9162:38;;9118:85;9231:11;9243:3;9231:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:22;;;9220:8;:33;9217:734;;;9288:11;9300:3;9288:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:22;;;:24;;;;;;;;;:::i;:::-;;;;;;9364:8;9373:1;9364:11;;;;;;;:::i;:::-;;;;9352:9;:23;;;9349:585;;;9399:15;9417:26;9431:8;9440:1;9431:11;;;;;;;:::i;:::-;;;;9417:9;:13;;:26;;;;:::i;:::-;9399:44;;9521:10;9488:11;9500:3;9488:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:29;;;:43;;;;;;;:::i;:::-;;;;;;;;9584:11;9596:3;9584:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:23;;;;;;;;;;;;9576:41;;:53;9618:10;9576:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9705:10;9656:7;:32;9664:11;9676:3;9664:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:23;;;;;;;;;;;;9656:32;;;;;;;;;;;;;;;:44;;;:59;;;;;;;:::i;:::-;;;;;;;;9750:10;9738:8;;:22;;;;;;;:::i;:::-;;;;;;;;9783:11;;;;;:::i;:::-;;;;9858;9870:3;9858:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:23;;;;;;;;;;;;9844:70;;;9888:1;9884:3;:5;;;;:::i;:::-;9892:10;9904:9;9844:70;;;;;;;;:::i;:::-;;;;;;;;9376:558;9349:585;9217:734;7919:2057;;;7745:2243;;;;;;;7696:2292;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:886::-;703:4;741:3;730:9;726:19;718:27;;755:71;823:1;812:9;808:17;799:6;755:71;:::i;:::-;836:72;904:2;893:9;889:18;880:6;836:72;:::i;:::-;918;986:2;975:9;971:18;962:6;918:72;:::i;:::-;1000;1068:2;1057:9;1053:18;1044:6;1000:72;:::i;:::-;1082:73;1150:3;1139:9;1135:19;1126:6;1082:73;:::i;:::-;1165;1233:3;1222:9;1218:19;1209:6;1165:73;:::i;:::-;1248;1316:3;1305:9;1301:19;1292:6;1248:73;:::i;:::-;442:886;;;;;;;;;;:::o;1415:117::-;1524:1;1521;1514:12;1661:126;1698:7;1738:42;1731:5;1727:54;1716:65;;1661:126;;;:::o;1793:96::-;1830:7;1859:24;1877:5;1859:24;:::i;:::-;1848:35;;1793:96;;;:::o;1895:122::-;1968:24;1986:5;1968:24;:::i;:::-;1961:5;1958:35;1948:63;;2007:1;2004;1997:12;1948:63;1895:122;:::o;2023:139::-;2069:5;2107:6;2094:20;2085:29;;2123:33;2150:5;2123:33;:::i;:::-;2023:139;;;;:::o;2168:329::-;2227:6;2276:2;2264:9;2255:7;2251:23;2247:32;2244:119;;;2282:79;;:::i;:::-;2244:119;2402:1;2427:53;2472:7;2463:6;2452:9;2448:22;2427:53;:::i;:::-;2417:63;;2373:117;2168:329;;;;:::o;2503:122::-;2576:24;2594:5;2576:24;:::i;:::-;2569:5;2566:35;2556:63;;2615:1;2612;2605:12;2556:63;2503:122;:::o;2631:139::-;2677:5;2715:6;2702:20;2693:29;;2731:33;2758:5;2731:33;:::i;:::-;2631:139;;;;:::o;2776:329::-;2835:6;2884:2;2872:9;2863:7;2859:23;2855:32;2852:119;;;2890:79;;:::i;:::-;2852:119;3010:1;3035:53;3080:7;3071:6;3060:9;3056:22;3035:53;:::i;:::-;3025:63;;2981:117;2776:329;;;;:::o;3111:474::-;3179:6;3187;3236:2;3224:9;3215:7;3211:23;3207:32;3204:119;;;3242:79;;:::i;:::-;3204:119;3362:1;3387:53;3432:7;3423:6;3412:9;3408:22;3387:53;:::i;:::-;3377:63;;3333:117;3489:2;3515:53;3560:7;3551:6;3540:9;3536:22;3515:53;:::i;:::-;3505:63;;3460:118;3111:474;;;;;:::o;3591:118::-;3678:24;3696:5;3678:24;:::i;:::-;3673:3;3666:37;3591:118;;:::o;3715:664::-;3920:4;3958:3;3947:9;3943:19;3935:27;;3972:71;4040:1;4029:9;4025:17;4016:6;3972:71;:::i;:::-;4053:72;4121:2;4110:9;4106:18;4097:6;4053:72;:::i;:::-;4135;4203:2;4192:9;4188:18;4179:6;4135:72;:::i;:::-;4217;4285:2;4274:9;4270:18;4261:6;4217:72;:::i;:::-;4299:73;4367:3;4356:9;4352:19;4343:6;4299:73;:::i;:::-;3715:664;;;;;;;;:::o;4385:95::-;4421:7;4461:12;4454:5;4450:24;4439:35;;4385:95;;;:::o;4486:115::-;4571:23;4588:5;4571:23;:::i;:::-;4566:3;4559:36;4486:115;;:::o;4607:438::-;4754:4;4792:2;4781:9;4777:18;4769:26;;4805:69;4871:1;4860:9;4856:17;4847:6;4805:69;:::i;:::-;4884:72;4952:2;4941:9;4937:18;4928:6;4884:72;:::i;:::-;4966;5034:2;5023:9;5019:18;5010:6;4966:72;:::i;:::-;4607:438;;;;;;:::o;5051:222::-;5144:4;5182:2;5171:9;5167:18;5159:26;;5195:71;5263:1;5252:9;5248:17;5239:6;5195:71;:::i;:::-;5051:222;;;;:::o;5279:104::-;5324:7;5353:24;5371:5;5353:24;:::i;:::-;5342:35;;5279:104;;;:::o;5389:142::-;5492:32;5518:5;5492:32;:::i;:::-;5487:3;5480:45;5389:142;;:::o;5537:254::-;5646:4;5684:2;5673:9;5669:18;5661:26;;5697:87;5781:1;5770:9;5766:17;5757:6;5697:87;:::i;:::-;5537:254;;;;:::o;5797:993::-;6084:4;6122:3;6111:9;6107:19;6099:27;;6136:71;6204:1;6193:9;6189:17;6180:6;6136:71;:::i;:::-;6217:72;6285:2;6274:9;6270:18;6261:6;6217:72;:::i;:::-;6299;6367:2;6356:9;6352:18;6343:6;6299:72;:::i;:::-;6381;6449:2;6438:9;6434:18;6425:6;6381:72;:::i;:::-;6463:73;6531:3;6520:9;6516:19;6507:6;6463:73;:::i;:::-;6546;6614:3;6603:9;6599:19;6590:6;6546:73;:::i;:::-;6629;6697:3;6686:9;6682:19;6673:6;6629:73;:::i;:::-;6712:71;6778:3;6767:9;6763:19;6754:6;6712:71;:::i;:::-;5797:993;;;;;;;;;;;:::o;6796:474::-;6864:6;6872;6921:2;6909:9;6900:7;6896:23;6892:32;6889:119;;;6927:79;;:::i;:::-;6889:119;7047:1;7072:53;7117:7;7108:6;7097:9;7093:22;7072:53;:::i;:::-;7062:63;;7018:117;7174:2;7200:53;7245:7;7236:6;7225:9;7221:22;7200:53;:::i;:::-;7190:63;;7145:118;6796:474;;;;;:::o;7276:86::-;7311:7;7351:4;7344:5;7340:16;7329:27;;7276:86;;;:::o;7368:118::-;7439:22;7455:5;7439:22;:::i;:::-;7432:5;7429:33;7419:61;;7476:1;7473;7466:12;7419:61;7368:118;:::o;7492:135::-;7536:5;7574:6;7561:20;7552:29;;7590:31;7615:5;7590:31;:::i;:::-;7492:135;;;;:::o;7633:615::-;7708:6;7716;7724;7773:2;7761:9;7752:7;7748:23;7744:32;7741:119;;;7779:79;;:::i;:::-;7741:119;7899:1;7924:51;7967:7;7958:6;7947:9;7943:22;7924:51;:::i;:::-;7914:61;;7870:115;8024:2;8050:53;8095:7;8086:6;8075:9;8071:22;8050:53;:::i;:::-;8040:63;;7995:118;8152:2;8178:53;8223:7;8214:6;8203:9;8199:22;8178:53;:::i;:::-;8168:63;;8123:118;7633:615;;;;;:::o;8254:664::-;8459:4;8497:3;8486:9;8482:19;8474:27;;8511:71;8579:1;8568:9;8564:17;8555:6;8511:71;:::i;:::-;8592:72;8660:2;8649:9;8645:18;8636:6;8592:72;:::i;:::-;8674;8742:2;8731:9;8727:18;8718:6;8674:72;:::i;:::-;8756;8824:2;8813:9;8809:18;8800:6;8756:72;:::i;:::-;8838:73;8906:3;8895:9;8891:19;8882:6;8838:73;:::i;:::-;8254:664;;;;;;;;:::o;8924:104::-;8989:6;9017:4;9007:14;;8924:104;;;:::o;9034:143::-;9131:11;9168:3;9153:18;;9034:143;;;;:::o;9183:98::-;9248:4;9271:3;9263:11;;9183:98;;;:::o;9287:108::-;9364:24;9382:5;9364:24;:::i;:::-;9359:3;9352:37;9287:108;;:::o;9401:179::-;9470:10;9491:46;9533:3;9525:6;9491:46;:::i;:::-;9569:4;9564:3;9560:14;9546:28;;9401:179;;;;:::o;9586:111::-;9654:4;9686;9681:3;9677:14;9669:22;;9586:111;;;:::o;9735:694::-;9871:52;9917:5;9871:52;:::i;:::-;9939:84;10016:6;10011:3;9939:84;:::i;:::-;9932:91;;10047:54;10095:5;10047:54;:::i;:::-;10124:7;10155:1;10140:282;10165:6;10162:1;10159:13;10140:282;;;10241:6;10235:13;10268:63;10327:3;10312:13;10268:63;:::i;:::-;10261:70;;10354:58;10405:6;10354:58;:::i;:::-;10344:68;;10200:222;10187:1;10184;10180:9;10175:14;;10140:282;;;10144:14;9847:582;;;9735:694;;:::o;10435:756::-;10686:4;10724:3;10713:9;10709:19;10701:27;;10738:71;10806:1;10795:9;10791:17;10782:6;10738:71;:::i;:::-;10819:72;10887:2;10876:9;10872:18;10863:6;10819:72;:::i;:::-;10901;10969:2;10958:9;10954:18;10945:6;10901:72;:::i;:::-;10983;11051:2;11040:9;11036:18;11027:6;10983:72;:::i;:::-;11065:119;11179:3;11168:9;11164:19;11155:6;11065:119;:::i;:::-;10435:756;;;;;;;;:::o;11197:549::-;11372:4;11410:3;11399:9;11395:19;11387:27;;11424:71;11492:1;11481:9;11477:17;11468:6;11424:71;:::i;:::-;11505:70;11571:2;11560:9;11556:18;11547:6;11505:70;:::i;:::-;11585:72;11653:2;11642:9;11638:18;11629:6;11585:72;:::i;:::-;11667;11735:2;11724:9;11720:18;11711:6;11667:72;:::i;:::-;11197:549;;;;;;;:::o;11752:138::-;11833:32;11859:5;11833:32;:::i;:::-;11826:5;11823:43;11813:71;;11880:1;11877;11870:12;11813:71;11752:138;:::o;11896:155::-;11950:5;11988:6;11975:20;11966:29;;12004:41;12039:5;12004:41;:::i;:::-;11896:155;;;;:::o;12057:486::-;12131:6;12139;12188:2;12176:9;12167:7;12163:23;12159:32;12156:119;;;12194:79;;:::i;:::-;12156:119;12314:1;12339:51;12382:7;12373:6;12362:9;12358:22;12339:51;:::i;:::-;12329:61;;12285:115;12439:2;12465:61;12518:7;12509:6;12498:9;12494:22;12465:61;:::i;:::-;12455:71;;12410:126;12057:486;;;;;:::o;12549:615::-;12624:6;12632;12640;12689:2;12677:9;12668:7;12664:23;12660:32;12657:119;;;12695:79;;:::i;:::-;12657:119;12815:1;12840:53;12885:7;12876:6;12865:9;12861:22;12840:53;:::i;:::-;12830:63;;12786:117;12942:2;12968:51;13011:7;13002:6;12991:9;12987:22;12968:51;:::i;:::-;12958:61;;12913:116;13068:2;13094:53;13139:7;13130:6;13119:9;13115:22;13094:53;:::i;:::-;13084:63;;13039:118;12549:615;;;;;:::o;13170:::-;13245:6;13253;13261;13310:2;13298:9;13289:7;13285:23;13281:32;13278:119;;;13316:79;;:::i;:::-;13278:119;13436:1;13461:53;13506:7;13497:6;13486:9;13482:22;13461:53;:::i;:::-;13451:63;;13407:117;13563:2;13589:51;13632:7;13623:6;13612:9;13608:22;13589:51;:::i;:::-;13579:61;;13534:116;13689:2;13715:53;13760:7;13751:6;13740:9;13736:22;13715:53;:::i;:::-;13705:63;;13660:118;13170:615;;;;;:::o;13791:470::-;13857:6;13865;13914:2;13902:9;13893:7;13889:23;13885:32;13882:119;;;13920:79;;:::i;:::-;13882:119;14040:1;14065:53;14110:7;14101:6;14090:9;14086:22;14065:53;:::i;:::-;14055:63;;14011:117;14167:2;14193:51;14236:7;14227:6;14216:9;14212:22;14193:51;:::i;:::-;14183:61;;14138:116;13791:470;;;;;:::o;14267:112::-;14350:22;14366:5;14350:22;:::i;:::-;14345:3;14338:35;14267:112;;:::o;14385:324::-;14502:4;14540:2;14529:9;14525:18;14517:26;;14553:71;14621:1;14610:9;14606:17;14597:6;14553:71;:::i;:::-;14634:68;14698:2;14687:9;14683:18;14674:6;14634:68;:::i;:::-;14385:324;;;;;:::o;14715:332::-;14836:4;14874:2;14863:9;14859:18;14851:26;;14887:71;14955:1;14944:9;14940:17;14931:6;14887:71;:::i;:::-;14968:72;15036:2;15025:9;15021:18;15012:6;14968:72;:::i;:::-;14715:332;;;;;:::o;15053:214::-;15142:4;15180:2;15169:9;15165:18;15157:26;;15193:67;15257:1;15246:9;15242:17;15233:6;15193:67;:::i;:::-;15053:214;;;;:::o;15273:1108::-;15590:4;15628:3;15617:9;15613:19;15605:27;;15642:71;15710:1;15699:9;15695:17;15686:6;15642:71;:::i;:::-;15723:72;15791:2;15780:9;15776:18;15767:6;15723:72;:::i;:::-;15805;15873:2;15862:9;15858:18;15849:6;15805:72;:::i;:::-;15887;15955:2;15944:9;15940:18;15931:6;15887:72;:::i;:::-;15969:73;16037:3;16026:9;16022:19;16013:6;15969:73;:::i;:::-;16052;16120:3;16109:9;16105:19;16096:6;16052:73;:::i;:::-;16135;16203:3;16192:9;16188:19;16179:6;16135:73;:::i;:::-;16218;16286:3;16275:9;16271:19;16262:6;16218:73;:::i;:::-;16301;16369:3;16358:9;16354:19;16345:6;16301:73;:::i;:::-;15273:1108;;;;;;;;;;;;:::o;16387:549::-;16562:4;16600:3;16589:9;16585:19;16577:27;;16614:69;16680:1;16669:9;16665:17;16656:6;16614:69;:::i;:::-;16693:72;16761:2;16750:9;16746:18;16737:6;16693:72;:::i;:::-;16775;16843:2;16832:9;16828:18;16819:6;16775:72;:::i;:::-;16857;16925:2;16914:9;16910:18;16901:6;16857:72;:::i;:::-;16387:549;;;;;;;:::o;16942:1215::-;17285:4;17323:3;17312:9;17308:19;17300:27;;17337:71;17405:1;17394:9;17390:17;17381:6;17337:71;:::i;:::-;17418:72;17486:2;17475:9;17471:18;17462:6;17418:72;:::i;:::-;17500;17568:2;17557:9;17553:18;17544:6;17500:72;:::i;:::-;17582;17650:2;17639:9;17635:18;17626:6;17582:72;:::i;:::-;17664:73;17732:3;17721:9;17717:19;17708:6;17664:73;:::i;:::-;17747;17815:3;17804:9;17800:19;17791:6;17747:73;:::i;:::-;17830;17898:3;17887:9;17883:19;17874:6;17830:73;:::i;:::-;17913:71;17979:3;17968:9;17964:19;17955:6;17913:71;:::i;:::-;17994:73;18062:3;18051:9;18047:19;18038:6;17994:73;:::i;:::-;18077;18145:3;18134:9;18130:19;18121:6;18077:73;:::i;:::-;16942:1215;;;;;;;;;;;;;:::o;18163:615::-;18238:6;18246;18254;18303:2;18291:9;18282:7;18278:23;18274:32;18271:119;;;18309:79;;:::i;:::-;18271:119;18429:1;18454:53;18499:7;18490:6;18479:9;18475:22;18454:53;:::i;:::-;18444:63;;18400:117;18556:2;18582:53;18627:7;18618:6;18607:9;18603:22;18582:53;:::i;:::-;18572:63;;18527:118;18684:2;18710:51;18753:7;18744:6;18733:9;18729:22;18710:51;:::i;:::-;18700:61;;18655:116;18163:615;;;;;:::o;18784:474::-;18852:6;18860;18909:2;18897:9;18888:7;18884:23;18880:32;18877:119;;;18915:79;;:::i;:::-;18877:119;19035:1;19060:53;19105:7;19096:6;19085:9;19081:22;19060:53;:::i;:::-;19050:63;;19006:117;19162:2;19188:53;19233:7;19224:6;19213:9;19209:22;19188:53;:::i;:::-;19178:63;;19133:118;18784:474;;;;;:::o;19264:169::-;19348:11;19382:6;19377:3;19370:19;19422:4;19417:3;19413:14;19398:29;;19264:169;;;;:::o;19439:163::-;19579:15;19575:1;19567:6;19563:14;19556:39;19439:163;:::o;19608:366::-;19750:3;19771:67;19835:2;19830:3;19771:67;:::i;:::-;19764:74;;19847:93;19936:3;19847:93;:::i;:::-;19965:2;19960:3;19956:12;19949:19;;19608:366;;;:::o;19980:419::-;20146:4;20184:2;20173:9;20169:18;20161:26;;20233:9;20227:4;20223:20;20219:1;20208:9;20204:17;20197:47;20261:131;20387:4;20261:131;:::i;:::-;20253:139;;19980:419;;;:::o;20405:180::-;20453:77;20450:1;20443:88;20550:4;20547:1;20540:15;20574:4;20571:1;20564:15;20591:233;20630:3;20653:24;20671:5;20653:24;:::i;:::-;20644:33;;20699:66;20692:5;20689:77;20686:103;;;20769:18;;:::i;:::-;20686:103;20816:1;20809:5;20805:13;20798:20;;20591:233;;;:::o;20830:164::-;20970:16;20966:1;20958:6;20954:14;20947:40;20830:164;:::o;21000:366::-;21142:3;21163:67;21227:2;21222:3;21163:67;:::i;:::-;21156:74;;21239:93;21328:3;21239:93;:::i;:::-;21357:2;21352:3;21348:12;21341:19;;21000:366;;;:::o;21372:419::-;21538:4;21576:2;21565:9;21561:18;21553:26;;21625:9;21619:4;21615:20;21611:1;21600:9;21596:17;21589:47;21653:131;21779:4;21653:131;:::i;:::-;21645:139;;21372:419;;;:::o;21797:180::-;21845:77;21842:1;21835:88;21942:4;21939:1;21932:15;21966:4;21963:1;21956:15;21983:230;22123:34;22119:1;22111:6;22107:14;22100:58;22192:13;22187:2;22179:6;22175:15;22168:38;21983:230;:::o;22219:366::-;22361:3;22382:67;22446:2;22441:3;22382:67;:::i;:::-;22375:74;;22458:93;22547:3;22458:93;:::i;:::-;22576:2;22571:3;22567:12;22560:19;;22219:366;;;:::o;22591:419::-;22757:4;22795:2;22784:9;22780:18;22772:26;;22844:9;22838:4;22834:20;22830:1;22819:9;22815:17;22808:47;22872:131;22998:4;22872:131;:::i;:::-;22864:139;;22591:419;;;:::o;23016:305::-;23056:3;23075:20;23093:1;23075:20;:::i;:::-;23070:25;;23109:20;23127:1;23109:20;:::i;:::-;23104:25;;23263:1;23195:66;23191:74;23188:1;23185:81;23182:107;;;23269:18;;:::i;:::-;23182:107;23313:1;23310;23306:9;23299:16;;23016:305;;;;:::o;23327:94::-;23360:8;23408:5;23404:2;23400:14;23379:35;;23327:94;;;:::o;23427:::-;23466:7;23495:20;23509:5;23495:20;:::i;:::-;23484:31;;23427:94;;;:::o;23527:100::-;23566:7;23595:26;23615:5;23595:26;:::i;:::-;23584:37;;23527:100;;;:::o;23633:157::-;23738:45;23758:24;23776:5;23758:24;:::i;:::-;23738:45;:::i;:::-;23733:3;23726:58;23633:157;;:::o;23796:256::-;23908:3;23923:75;23994:3;23985:6;23923:75;:::i;:::-;24023:2;24018:3;24014:12;24007:19;;24043:3;24036:10;;23796:256;;;;:::o;24058:180::-;24106:77;24103:1;24096:88;24203:4;24200:1;24193:15;24227:4;24224:1;24217:15;24244:185;24284:1;24301:20;24319:1;24301:20;:::i;:::-;24296:25;;24335:20;24353:1;24335:20;:::i;:::-;24330:25;;24374:1;24364:35;;24379:18;;:::i;:::-;24364:35;24421:1;24418;24414:9;24409:14;;24244:185;;;;:::o;24435:108::-;24482:7;24511:26;24531:5;24511:26;:::i;:::-;24500:37;;24435:108;;;:::o;24549:189::-;24670:61;24698:32;24724:5;24698:32;:::i;:::-;24670:61;:::i;:::-;24665:3;24658:74;24549:189;;:::o;24744:288::-;24872:3;24887:91;24974:3;24965:6;24887:91;:::i;:::-;25003:2;24998:3;24994:12;24987:19;;25023:3;25016:10;;24744:288;;;;:::o;25038:79::-;25077:7;25106:5;25095:16;;25038:79;;;:::o;25123:157::-;25228:45;25248:24;25266:5;25248:24;:::i;:::-;25228:45;:::i;:::-;25223:3;25216:58;25123:157;;:::o;25286:256::-;25398:3;25413:75;25484:3;25475:6;25413:75;:::i;:::-;25513:2;25508:3;25504:12;25497:19;;25533:3;25526:10;;25286:256;;;;:::o;25548:348::-;25588:7;25611:20;25629:1;25611:20;:::i;:::-;25606:25;;25645:20;25663:1;25645:20;:::i;:::-;25640:25;;25833:1;25765:66;25761:74;25758:1;25755:81;25750:1;25743:9;25736:17;25732:105;25729:131;;;25840:18;;:::i;:::-;25729:131;25888:1;25885;25881:9;25870:20;;25548:348;;;;:::o;25902:191::-;25942:4;25962:20;25980:1;25962:20;:::i;:::-;25957:25;;25996:20;26014:1;25996:20;:::i;:::-;25991:25;;26035:1;26032;26029:8;26026:34;;;26040:18;;:::i;:::-;26026:34;26085:1;26082;26078:9;26070:17;;25902:191;;;;:::o;26099:143::-;26156:5;26187:6;26181:13;26172:22;;26203:33;26230:5;26203:33;:::i;:::-;26099:143;;;;:::o;26248:351::-;26318:6;26367:2;26355:9;26346:7;26342:23;26338:32;26335:119;;;26373:79;;:::i;:::-;26335:119;26493:1;26518:64;26574:7;26565:6;26554:9;26550:22;26518:64;:::i;:::-;26508:74;;26464:128;26248:351;;;;:::o;26605:167::-;26642:3;26665:22;26681:5;26665:22;:::i;:::-;26656:31;;26709:4;26702:5;26699:15;26696:41;;;26717:18;;:::i;:::-;26696:41;26764:1;26757:5;26753:13;26746:20;;26605:167;;;:::o;26778:171::-;26817:3;26840:24;26858:5;26840:24;:::i;:::-;26831:33;;26886:4;26879:5;26876:15;26873:41;;;26894:18;;:::i;:::-;26873:41;26941:1;26934:5;26930:13;26923:20;;26778:171;;;:::o;26955:182::-;27095:34;27091:1;27083:6;27079:14;27072:58;26955:182;:::o;27143:366::-;27285:3;27306:67;27370:2;27365:3;27306:67;:::i;:::-;27299:74;;27382:93;27471:3;27382:93;:::i;:::-;27500:2;27495:3;27491:12;27484:19;;27143:366;;;:::o;27515:419::-;27681:4;27719:2;27708:9;27704:18;27696:26;;27768:9;27762:4;27758:20;27754:1;27743:9;27739:17;27732:47;27796:131;27922:4;27796:131;:::i;:::-;27788:139;;27515:419;;;:::o;27940:170::-;28080:22;28076:1;28068:6;28064:14;28057:46;27940:170;:::o;28116:366::-;28258:3;28279:67;28343:2;28338:3;28279:67;:::i;:::-;28272:74;;28355:93;28444:3;28355:93;:::i;:::-;28473:2;28468:3;28464:12;28457:19;;28116:366;;;:::o;28488:419::-;28654:4;28692:2;28681:9;28677:18;28669:26;;28741:9;28735:4;28731:20;28727:1;28716:9;28712:17;28705:47;28769:131;28895:4;28769:131;:::i;:::-;28761:139;;28488:419;;;:::o;28913:223::-;29053:34;29049:1;29041:6;29037:14;29030:58;29122:6;29117:2;29109:6;29105:15;29098:31;28913:223;:::o;29142:366::-;29284:3;29305:67;29369:2;29364:3;29305:67;:::i;:::-;29298:74;;29381:93;29470:3;29381:93;:::i;:::-;29499:2;29494:3;29490:12;29483:19;;29142:366;;;:::o;29514:419::-;29680:4;29718:2;29707:9;29703:18;29695:26;;29767:9;29761:4;29757:20;29753:1;29742:9;29738:17;29731:47;29795:131;29921:4;29795:131;:::i;:::-;29787:139;;29514:419;;;:::o;29939:434::-;30084:4;30122:2;30111:9;30107:18;30099:26;;30135:71;30203:1;30192:9;30188:17;30179:6;30135:71;:::i;:::-;30216:72;30284:2;30273:9;30269:18;30260:6;30216:72;:::i;:::-;30298:68;30362:2;30351:9;30347:18;30338:6;30298:68;:::i;:::-;29939:434;;;;;;:::o;30379:85::-;30424:7;30453:5;30442:16;;30379:85;;;:::o;30470:60::-;30498:3;30519:5;30512:12;;30470:60;;;:::o;30536:154::-;30592:9;30625:59;30641:42;30650:32;30676:5;30650:32;:::i;:::-;30641:42;:::i;:::-;30625:59;:::i;:::-;30612:72;;30536:154;;;:::o;30696:143::-;30789:43;30826:5;30789:43;:::i;:::-;30784:3;30777:56;30696:143;;:::o;30845:344::-;30972:4;31010:2;30999:9;30995:18;30987:26;;31023:71;31091:1;31080:9;31076:17;31067:6;31023:71;:::i;:::-;31104:78;31178:2;31167:9;31163:18;31154:6;31104:78;:::i;:::-;30845:344;;;;;:::o;31195:139::-;31250:5;31281:6;31275:13;31266:22;;31297:31;31322:5;31297:31;:::i;:::-;31195:139;;;;:::o;31340:503::-;31417:6;31425;31474:2;31462:9;31453:7;31449:23;31445:32;31442:119;;;31480:79;;:::i;:::-;31442:119;31600:1;31625:64;31681:7;31672:6;31661:9;31657:22;31625:64;:::i;:::-;31615:74;;31571:128;31738:2;31764:62;31818:7;31809:6;31798:9;31794:22;31764:62;:::i;:::-;31754:72;;31709:127;31340:503;;;;;:::o;31849:237::-;31887:3;31906:18;31922:1;31906:18;:::i;:::-;31901:23;;31938:18;31954:1;31938:18;:::i;:::-;31933:23;;32028:1;32022:4;32018:12;32015:1;32012:19;32009:45;;;32034:18;;:::i;:::-;32009:45;32078:1;32075;32071:9;32064:16;;31849:237;;;;:::o;32092:138::-;32140:9;32173:51;32191:32;32200:22;32216:5;32200:22;:::i;:::-;32191:32;:::i;:::-;32173:51;:::i;:::-;32160:64;;32092:138;;;:::o;32236:127::-;32321:35;32350:5;32321:35;:::i;:::-;32316:3;32309:48;32236:127;;:::o;32369:328::-;32488:4;32526:2;32515:9;32511:18;32503:26;;32539:71;32607:1;32596:9;32592:17;32583:6;32539:71;:::i;:::-;32620:70;32686:2;32675:9;32671:18;32662:6;32620:70;:::i;:::-;32369:328;;;;;:::o;32703:167::-;32843:19;32839:1;32831:6;32827:14;32820:43;32703:167;:::o;32876:366::-;33018:3;33039:67;33103:2;33098:3;33039:67;:::i;:::-;33032:74;;33115:93;33204:3;33115:93;:::i;:::-;33233:2;33228:3;33224:12;33217:19;;32876:366;;;:::o;33248:419::-;33414:4;33452:2;33441:9;33437:18;33429:26;;33501:9;33495:4;33491:20;33487:1;33476:9;33472:17;33465:47;33529:131;33655:4;33529:131;:::i;:::-;33521:139;;33248:419;;;:::o;33673:225::-;33813:34;33809:1;33801:6;33797:14;33790:58;33882:8;33877:2;33869:6;33865:15;33858:33;33673:225;:::o;33904:366::-;34046:3;34067:67;34131:2;34126:3;34067:67;:::i;:::-;34060:74;;34143:93;34232:3;34143:93;:::i;:::-;34261:2;34256:3;34252:12;34245:19;;33904:366;;;:::o;34276:419::-;34442:4;34480:2;34469:9;34465:18;34457:26;;34529:9;34523:4;34519:20;34515:1;34504:9;34500:17;34493:47;34557:131;34683:4;34557:131;:::i;:::-;34549:139;;34276:419;;;:::o;34701:438::-;34848:4;34886:2;34875:9;34871:18;34863:26;;34899:71;34967:1;34956:9;34952:17;34943:6;34899:71;:::i;:::-;34980:72;35048:2;35037:9;35033:18;35024:6;34980:72;:::i;:::-;35062:70;35128:2;35117:9;35113:18;35104:6;35062:70;:::i;:::-;34701:438;;;;;;:::o

Swarm Source

ipfs://00c70dde2fc92da73d7848f073f18c5196e73040a619f40c74ebd577029d14a3

Block Transaction Gas Used Reward
view all blocks produced

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

Validator Index Block Amount
View All Withdrawals

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

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