ETH Price: $3,421.34 (+3.29%)

Token

POW NFT (POW)
 

Overview

Max Total Supply

5,874 POW

Holders

1,723

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 POW
0x5c7cf5a5df5ca98e435e66fb0fc04a9ba883a8c4
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

POW NFTs are mineable NFTs, and are mined using Proof of Work – a fundamental feature of blockchain. When a POW NFT is mined, a unique and increasingly-rare token is created. The mining process prevents front-running and network congestion and creates natural, market-driven scarcity.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
POWNFTv3

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-03-12
*/

// SPDX-License-Identifier: This smart contract is guarded by an angry ghost
pragma solidity ^0.8.0;


contract POWNFTv3{

    //v2 Variables
    uint public UNMIGRATED = 0;
    uint public V2_TOTAL = 0;
    bytes32 public PREV_CHAIN_LAST_HASH;
    POWNFTv2 CONTRACT_V2;

    constructor(address contract_v2){
        supportedInterfaces[0x80ac58cd] = true; //ERC721
        supportedInterfaces[0x5b5e139f] = true; //ERC721Metadata
        supportedInterfaces[0x780e9d63] = true; //ERC721Enumerable
        supportedInterfaces[0x01ffc9a7] = true; //ERC165

        CONTRACT_V2 = POWNFTv2(contract_v2);
        V2_TOTAL =
        UNMIGRATED = CONTRACT_V2.totalSupply();
        PREV_CHAIN_LAST_HASH = CONTRACT_V2.hashOf(UNMIGRATED);

    }


    //////===721 Standard
    event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
    event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);

    //////===721 Implementation
    mapping(address => uint256) internal BALANCES;
    mapping (uint256 => address) internal ALLOWANCE;
    mapping (address => mapping (address => bool)) internal AUTHORISED;

    bytes32[] TOKENS;  //Array of all tokens [hash,hash,...]
    mapping(uint256 => address) OWNERS;  //Mapping of owners


    //    METADATA VARS
    string private __name = "POW NFT";
    string private __symbol = "POW";
    bytes private __uriBase = bytes("https://www.pownftmetadata.com/t/");


    //    ENUMERABLE VARS
    mapping(address => uint[]) internal OWNER_INDEX_TO_ID;
    mapping(uint => uint) internal OWNER_ID_TO_INDEX;
    mapping(uint => uint) internal ID_TO_INDEX;
    mapping(uint => uint) internal INDEX_TO_ID;


    //ETH VAR
    mapping(uint256 => uint256) WITHDRAWALS;


    //      MINING VARS
    uint BASE_COST = 0.000045 ether;
    uint BASE_DIFFICULTY = uint(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)/uint(300);
    uint DIFFICULTY_RAMP = 3;


    event Migrate(uint indexed _tokenId);

    //      MINING EVENTS
    event Mined(uint indexed _tokenId, bytes32 hash);
    event Withdraw(uint indexed _tokenId, uint value);

    //      MINING FUNCTIONS
    function generationOf(uint _tokenId) private pure returns(uint generation){
        for(generation = 0; _tokenId > 0; generation++){
            _tokenId /= 2;
        }
        return generation - 1;
    }
    function hashOf(uint _tokenId) public view returns(bytes32){
        require(isValidToken(_tokenId),"invalid");
        return TOKENS[ID_TO_INDEX[_tokenId]];
    }


    function migrate(uint _tokenId,uint _withdrawEthUntil) public {
            _migrate(_tokenId);
            if(_withdrawEthUntil > 0){
                withdraw(_tokenId, _withdrawEthUntil);
            }
    }
    function _migrate(uint _tokenId) internal {
        //require not migrated
        require(!isValidToken(_tokenId),'is_migrated');

        //Require before snapshot
        require(_tokenId <= V2_TOTAL,'forgery');

        //require owner on original contract
        require(CONTRACT_V2.ownerOf(_tokenId) == msg.sender,'owner');
        //mint the token with hash from prev contract
        UNMIGRATED--;
        mint(_tokenId,
            CONTRACT_V2.hashOf(_tokenId)
        );
        emit Migrate(_tokenId);
    }
    function migrateMultiple(uint[] calldata _tokenIds, uint[] calldata _withdrawUntil) public {
        for(uint i = 0; i < _tokenIds.length; i++){
            _migrate(_tokenIds[i]);
        }
        withdrawMultiple(_tokenIds,_withdrawUntil);
    }



    function withdraw(uint _tokenId, uint _withdrawUntil) public {
        payable(msg.sender).transfer(
            _withdraw(_tokenId, _withdrawUntil)
        );
    }
    function _withdraw(uint _tokenId, uint _withdrawUntil) internal returns(uint){
        require(isValidToken(_withdrawUntil),'withdrawUntil_exist');

        require(ownerOf(_tokenId) == msg.sender,"owner");
        require(_withdrawUntil > WITHDRAWALS[_tokenId],'withdrawn');

        uint generation = generationOf(_tokenId);
        uint firstPayable = 2**(generation+1);

        uint withdrawFrom = WITHDRAWALS[_tokenId];
        if(withdrawFrom < _tokenId){
            withdrawFrom = _tokenId;

            //withdraw from if _tokenId < number brought over
            if(withdrawFrom < V2_TOTAL){
                withdrawFrom = V2_TOTAL;
            }
            if(withdrawFrom < firstPayable){
                withdrawFrom = firstPayable - 1;
            }
        }

        require(_withdrawUntil > withdrawFrom,'underflow');

        uint payout = BASE_COST * (_withdrawUntil - withdrawFrom);

        WITHDRAWALS[_tokenId] = _withdrawUntil;

        emit Withdraw(_tokenId,payout);

        return payout;
    }

    function withdrawMultiple(uint[] calldata _tokenIds, uint[] calldata _withdrawUntil) public{
        uint payout = 0;
        for(uint i = 0; i < _tokenIds.length; i++){
            if(_withdrawUntil[i] > 0){
                payout += _withdraw(_tokenIds[i],_withdrawUntil[i]);
            }
        }
        payable(msg.sender).transfer(payout);
    }

    function mine(uint nonce) external payable{
        uint tokenId = UNMIGRATED + TOKENS.length + 1;
        uint generation = generationOf(tokenId);

        uint difficulty = BASE_DIFFICULTY / (DIFFICULTY_RAMP**generation);
        if(generation > 13){ //Token 16384
            difficulty /= (tokenId - 2**14 + 1);
        }

        uint cost = (2**generation - 1)* BASE_COST;


        bytes32 hash;
        if(V2_TOTAL - UNMIGRATED != TOKENS.length){
            hash = keccak256(abi.encodePacked(
                    msg.sender,
                    TOKENS[ID_TO_INDEX[tokenId-1]],
                    nonce
                ));
        }else{
//            First mine on new contract
            hash = keccak256(abi.encodePacked(
                        msg.sender,
                        PREV_CHAIN_LAST_HASH,
                    nonce
                ));
        }


        require(uint(hash) < difficulty,"difficulty");
        require(msg.value ==cost,"cost");

        hash = keccak256(abi.encodePacked(hash,block.timestamp));

        mint(tokenId, hash);

        emit Mined(tokenId,hash);
    }

    function mint(uint tokenId, bytes32 hash) private{
        OWNERS[tokenId] = msg.sender;
        BALANCES[msg.sender]++;
        OWNER_ID_TO_INDEX[tokenId] = OWNER_INDEX_TO_ID[msg.sender].length;
        OWNER_INDEX_TO_ID[msg.sender].push(tokenId);

        ID_TO_INDEX[tokenId] = TOKENS.length;
        INDEX_TO_ID[TOKENS.length] = tokenId;
        TOKENS.push(hash);

        emit Transfer(address(0),msg.sender,tokenId);
    }


    function isValidToken(uint256 _tokenId) internal view returns(bool){
        return OWNERS[_tokenId] != address(0);
    }

    function balanceOf(address _owner) external view returns (uint256){
        return BALANCES[_owner];
    }

    function ownerOf(uint256 _tokenId) public view returns(address){
        require(isValidToken(_tokenId),"invalid");
        return OWNERS[_tokenId];
    }


    function approve(address _approved, uint256 _tokenId)  external{
        address owner = ownerOf(_tokenId);
        require( owner == msg.sender                    //Require Sender Owns Token
            || AUTHORISED[owner][msg.sender]                //  or is approved for all.
        ,"permission");
        emit Approval(owner, _approved, _tokenId);
        ALLOWANCE[_tokenId] = _approved;
    }

    function getApproved(uint256 _tokenId) external view returns (address) {
        require(isValidToken(_tokenId),"invalid");
        return ALLOWANCE[_tokenId];
    }

    function isApprovedForAll(address _owner, address _operator) external view returns (bool) {
        return AUTHORISED[_owner][_operator];
    }


    function setApprovalForAll(address _operator, bool _approved) external {
        emit ApprovalForAll(msg.sender,_operator, _approved);
        AUTHORISED[msg.sender][_operator] = _approved;
    }


    function transferFrom(address _from, address _to, uint256 _tokenId) public {

        //Check Transferable
        //There is a token validity check in ownerOf
        address owner = ownerOf(_tokenId);

        require ( owner == msg.sender             //Require sender owns token
        //Doing the two below manually instead of referring to the external methods saves gas
        || ALLOWANCE[_tokenId] == msg.sender      //or is approved for this token
            || AUTHORISED[owner][msg.sender]          //or is approved for all
        ,"permission");
        require(owner == _from,"owner");
        require(_to != address(0),"zero");

        emit Transfer(_from, _to, _tokenId);


        OWNERS[_tokenId] =_to;

        BALANCES[_from]--;
        BALANCES[_to]++;

        //Reset approved if there is one
        if(ALLOWANCE[_tokenId] != address(0)){
            delete ALLOWANCE[_tokenId];
        }

        //Enumerable Additions
        uint oldIndex = OWNER_ID_TO_INDEX[_tokenId];
        //If the token isn't the last one in the owner's index
        if(oldIndex != OWNER_INDEX_TO_ID[_from].length - 1){
            //Move the old one in the index list
            OWNER_INDEX_TO_ID[_from][oldIndex] = OWNER_INDEX_TO_ID[_from][OWNER_INDEX_TO_ID[_from].length - 1];
            //Update the token's reference to its place in the index list
            OWNER_ID_TO_INDEX[OWNER_INDEX_TO_ID[_from][oldIndex]] = oldIndex;
        }
        OWNER_INDEX_TO_ID[_from].pop();

        OWNER_ID_TO_INDEX[_tokenId] = OWNER_INDEX_TO_ID[_to].length;
        OWNER_INDEX_TO_ID[_to].push(_tokenId);

    }

    function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) public {
        transferFrom(_from, _to, _tokenId);

        //Get size of "_to" address, if 0 it's a wallet
        uint32 size;
        assembly {
            size := extcodesize(_to)
        }
        if(size > 0){
            ERC721TokenReceiver receiver = ERC721TokenReceiver(_to);
            require(receiver.onERC721Received(msg.sender,_from,_tokenId,data) == bytes4(keccak256("onERC721Received(address,address,uint256,bytes)")),"receiver");
        }

    }

    function safeTransferFrom(address _from, address _to, uint256 _tokenId) external {
        safeTransferFrom(_from,_to,_tokenId,"");
    }


    // METADATA FUNCTIONS
    function tokenURI(uint256 _tokenId) public view returns (string memory){
        //Note: changed visibility to public
        require(isValidToken(_tokenId),'tokenId');

        uint _i = _tokenId;
        uint j = _i;
        uint len;
        while (j != 0) {
            len++;
            j /= 10;
        }
        bytes memory bstr = new bytes(len);
        uint k = len;
        while (_i != 0) {
            k = k-1;
            uint8 temp = (48 + uint8(_i - _i / 10 * 10));
            bytes1 b1 = bytes1(temp);
            bstr[k] = b1;
            _i /= 10;
        }


        return string(abi.encodePacked(__uriBase,bstr));

    }



    function name() external view returns (string memory _name){
        return __name;
    }

    function symbol() external view returns (string memory _symbol){
        return __symbol;
    }


    // ENUMERABLE FUNCTIONS
    function totalSupply() external view returns (uint256){
        return TOKENS.length;
    }

    function tokenByIndex(uint256 _index) external view returns(uint256){
        require(_index < TOKENS.length,"index");
        return INDEX_TO_ID[_index];
    }

    function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256){
        require(_index < BALANCES[_owner],"index");
        return OWNER_INDEX_TO_ID[_owner][_index];
    }

    // End 721 Implementation

    ///////===165 Implementation
    mapping (bytes4 => bool) internal supportedInterfaces;
    function supportsInterface(bytes4 interfaceID) external view returns (bool){
        return supportedInterfaces[interfaceID];
    }
    ///==End 165
}




interface ERC721TokenReceiver {
    //note: the national treasure is buried under parliament house
    function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes calldata _data) external returns(bytes4);
}


interface POWNFTv2 {
    function hashOf(uint _tokenId) external view returns(bytes32);
    function ownerOf(uint256 _tokenId) external view returns(address);
    function totalSupply() external view returns (uint256);
    //NWH YDY DDUG SEGEN DIN
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"contract_v2","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Migrate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"hash","type":"bytes32"}],"name":"Mined","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"PREV_CHAIN_LAST_HASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNMIGRATED","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"V2_TOTAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"hashOf","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_withdrawEthUntil","type":"uint256"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_withdrawUntil","type":"uint256[]"}],"name":"migrateMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"mine","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"_name","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_withdrawUntil","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_withdrawUntil","type":"uint256[]"}],"name":"withdrawMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000805560006001556040518060400160405280600781526020017f504f57204e465400000000000000000000000000000000000000000000000000815250600990805190602001906200005a92919062000448565b506040518060400160405280600381526020017f504f570000000000000000000000000000000000000000000000000000000000815250600a9080519060200190620000a892919062000448565b50604051806060016040528060218152602001620041d660219139600b9080519060200190620000da929190620004d9565b506528ed6103d00060115561012c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000115919062000680565b60125560036013553480156200012a57600080fd5b50604051620041f7380380620041f78339818101604052810190620001509190620005ce565b6001601460006380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060016014600063780e9d6360e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460006301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200034257600080fd5b505afa15801562000357573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037d919062000626565b6000819055600181905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637e551b756000546040518263ffffffff1660e01b8152600401620003e7919062000663565b60206040518083038186803b1580156200040057600080fd5b505afa15801562000415573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043b9190620005fa565b60028190555050620007e2565b828054620004569062000700565b90600052602060002090601f0160209004810192826200047a5760008555620004c6565b82601f106200049557805160ff1916838001178555620004c6565b82800160010185558215620004c6579182015b82811115620004c5578251825591602001919060010190620004a8565b5b509050620004d591906200056a565b5090565b828054620004e79062000700565b90600052602060002090601f0160209004810192826200050b576000855562000557565b82601f106200052657805160ff191683800117855562000557565b8280016001018555821562000557579182015b828111156200055657825182559160200191906001019062000539565b5b5090506200056691906200056a565b5090565b5b80821115620005855760008160009055506001016200056b565b5090565b6000815190506200059a8162000794565b92915050565b600081519050620005b181620007ae565b92915050565b600081519050620005c881620007c8565b92915050565b600060208284031215620005e157600080fd5b6000620005f18482850162000589565b91505092915050565b6000602082840312156200060d57600080fd5b60006200061d84828501620005a0565b91505092915050565b6000602082840312156200063957600080fd5b60006200064984828501620005b7565b91505092915050565b6200065d81620006f6565b82525050565b60006020820190506200067a600083018462000652565b92915050565b60006200068d82620006f6565b91506200069a83620006f6565b925082620006ad57620006ac62000736565b5b828204905092915050565b6000620006c582620006d6565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200071957607f821691505b6020821081141562000730576200072f62000765565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6200079f81620006b8565b8114620007ab57600080fd5b50565b620007b981620006cc565b8114620007c557600080fd5b50565b620007d381620006f6565b8114620007df57600080fd5b50565b6139e480620007f26000396000f3fe6080604052600436106101665760003560e01c80634f6ccce7116100d15780639d1105301161008a578063b1ac134711610064578063b1ac134714610551578063b88d4fde1461057c578063c87b56dd146105a5578063e985e9c5146105e257610166565b80639d110530146104d4578063a22cb465146104fd578063af88d5991461052657610166565b80634f6ccce71461038a5780636352211e146103c757806370a082311461040457806373dfd221146104415780637e551b751461046c57806395d89b41146104a957610166565b806323b872dd1161012357806323b872dd1461028d5780632f745c59146102b65780633e54bacb146102f357806342842e0e1461031c578063441a3e70146103455780634d4748981461036e57610166565b806301ffc9a71461016b57806306fdde03146101a8578063081812fc146101d3578063095ea7b3146102105780630fdd2ec81461023957806318160ddd14610262575b600080fd5b34801561017757600080fd5b50610192600480360381019061018d9190612a33565b61061f565b60405161019f9190613101565b60405180910390f35b3480156101b457600080fd5b506101bd610687565b6040516101ca9190613137565b60405180910390f35b3480156101df57600080fd5b506101fa60048036038101906101f59190612a85565b610719565b604051610207919061309a565b60405180910390f35b34801561021c57600080fd5b5061023760048036038101906102329190612959565b61079e565b005b34801561024557600080fd5b50610260600480360381019061025b9190612995565b61095c565b005b34801561026e57600080fd5b506102776109d8565b6040516102849190613319565b60405180910390f35b34801561029957600080fd5b506102b460048036038101906102af9190612853565b6109e5565b005b3480156102c257600080fd5b506102dd60048036038101906102d89190612959565b6111db565b6040516102ea9190613319565b60405180910390f35b3480156102ff57600080fd5b5061031a60048036038101906103159190612aae565b6112e8565b005b34801561032857600080fd5b50610343600480360381019061033e9190612853565b611309565b005b34801561035157600080fd5b5061036c60048036038101906103679190612aae565b611329565b005b61038860048036038101906103839190612a85565b61137d565b005b34801561039657600080fd5b506103b160048036038101906103ac9190612a85565b611605565b6040516103be9190613319565b60405180910390f35b3480156103d357600080fd5b506103ee60048036038101906103e99190612a85565b611669565b6040516103fb919061309a565b60405180910390f35b34801561041057600080fd5b5061042b600480360381019061042691906127c5565b6116ee565b6040516104389190613319565b60405180910390f35b34801561044d57600080fd5b50610456611737565b6040516104639190613319565b60405180910390f35b34801561047857600080fd5b50610493600480360381019061048e9190612a85565b61173d565b6040516104a0919061311c565b60405180910390f35b3480156104b557600080fd5b506104be6117e6565b6040516104cb9190613137565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f69190612995565b611878565b005b34801561050957600080fd5b50610524600480360381019061051f919061291d565b6119c7565b005b34801561053257600080fd5b5061053b611ac4565b6040516105489190613319565b60405180910390f35b34801561055d57600080fd5b50610566611aca565b604051610573919061311c565b60405180910390f35b34801561058857600080fd5b506105a3600480360381019061059e91906128a2565b611ad0565b005b3480156105b157600080fd5b506105cc60048036038101906105c79190612a85565b611c2e565b6040516105d99190613137565b60405180910390f35b3480156105ee57600080fd5b5061060960048036038101906106049190612817565b611e2c565b6040516106169190613101565b60405180910390f35b600060146000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060098054610696906137a1565b80601f01602080910402602001604051908101604052809291908181526020018280546106c2906137a1565b801561070f5780601f106106e45761010080835404028352916020019161070f565b820191906000526020600020905b8154815290600101906020018083116106f257829003601f168201915b5050505050905090565b600061072482611ec0565b610763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075a906132f9565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006107a982611669565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061086b5750600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6108aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a1906131b9565b60405180910390fd5b818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60005b848490508110156109c5576109b28585838181106109a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135611f2c565b80806109bd906137d3565b91505061095f565b506109d284848484611878565b50505050565b6000600780549050905090565b60006109f082611669565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610a8a57503373ffffffffffffffffffffffffffffffffffffffff166005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610b1b5750600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b51906131b9565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbf90613159565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2f90613199565b60405180910390fd5b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4826008600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610d3590613777565b9190505550600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610d8a906137d3565b9190505550600073ffffffffffffffffffffffffffffffffffffffff166005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e2d576005600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b6000600d60008481526020019081526020016000205490506001600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050610e949190613676565b811461108957600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050610f289190613676565b81548110610f5f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610fe1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555080600d6000600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061106b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001548152602001908152602001600020819055505b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806110fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60019003818190600052602060002001600090559055600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050600d600085815260200190815260200160002081905550600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208390806001815401808255809150506001900390600052602060002001600090919091909150555050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821061125e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125590613259565b60405180910390fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106112d5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905092915050565b6112f182611f2c565b6000811115611305576113048282611329565b5b5050565b61132483838360405180602001604052806000815250611ad0565b505050565b3373ffffffffffffffffffffffffffffffffffffffff166108fc61134d84846121cd565b9081150290604051600060405180830381858888f19350505050158015611378573d6000803e3d6000fd5b505050565b6000600160078054905060005461139491906133ed565b61139e91906133ed565b905060006113ab82612414565b90506000816013546113bd91906134fe565b6012546113ca919061347a565b9050600d8211156113fd576001614000846113e59190613676565b6113ef91906133ed565b816113fa919061347a565b90505b6000601154600184600261141191906134fe565b61141b9190613676565b611425919061361c565b9050600060078054905060005460015461143f9190613676565b146114d957336007600e60006001896114589190613676565b8152602001908152602001600020548154811061149e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154876040516020016114bc9392919061300d565b604051602081830303815290604052805190602001209050611509565b33600254876040516020016114f09392919061300d565b6040516020818303038152906040528051906020012090505b828160001c1061154e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154590613299565b60405180910390fd5b813414611590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158790613239565b60405180910390fd5b80426040516020016115a392919061304a565b6040516020818303038152906040528051906020012090506115c58582612456565b847f5570ed3da2dab8635dcc918badc12e05d60cbc9185347ef0065ab7335568cdae826040516115f5919061311c565b60405180910390a2505050505050565b6000600780549050821061164e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164590613259565b60405180910390fd5b600f6000838152602001908152602001600020549050919050565b600061167482611ec0565b6116b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116aa906132f9565b60405180910390fd5b6008600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60015481565b600061174882611ec0565b611787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177e906132f9565b60405180910390fd5b6007600e600084815260200190815260200160002054815481106117d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b6060600a80546117f5906137a1565b80601f0160208091040260200160405190810160405280929190818152602001828054611821906137a1565b801561186e5780601f106118435761010080835404028352916020019161186e565b820191906000526020600020905b81548152906001019060200180831161185157829003601f168201915b5050505050905090565b6000805b858590508110156119785760008484838181106118c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013511156119655761195786868381811061190b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013585858481811061194b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201356121cd565b8261196291906133ed565b91505b8080611970906137d3565b91505061187c565b503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156119bf573d6000803e3d6000fd5b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611a249190613101565b60405180910390a380600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60005481565b60025481565b611adb8484846109e5565b6000833b905060008163ffffffff161115611c275760008490507f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff1663150b7a02338988886040518563ffffffff1660e01b8152600401611b7494939291906130b5565b602060405180830381600087803b158015611b8e57600080fd5b505af1158015611ba2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc69190612a5c565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1c906131f9565b60405180910390fd5b505b5050505050565b6060611c3982611ec0565b611c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6f906131d9565b60405180910390fd5b6000829050600081905060005b60008214611caf578080611c98906137d3565b915050600a82611ca8919061347a565b9150611c85565b60008167ffffffffffffffff811115611cf1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611d235781602001600182028036833780820191505090505b50905060008290505b60008514611dfd57600181611d419190613676565b90506000600a8087611d53919061347a565b611d5d919061361c565b86611d689190613676565b6030611d749190613443565b905060008160f81b905080848481518110611db8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a87611df4919061347a565b96505050611d2c565b600b82604051602001611e11929190613076565b60405160208183030381529060405295505050505050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff166008600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b611f3581611ec0565b15611f75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6c906132d9565b60405180910390fd5b600154811115611fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb190613219565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161202c9190613319565b60206040518083038186803b15801561204457600080fd5b505afa158015612058573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207c91906127ee565b73ffffffffffffffffffffffffffffffffffffffff16146120d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c990613159565b60405180910390fd5b6000808154809291906120e490613777565b919050555061219d81600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637e551b75846040518263ffffffff1660e01b81526004016121489190613319565b60206040518083038186803b15801561216057600080fd5b505afa158015612174573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121989190612a0a565b612456565b807fd5837b673ffaac69230366d3f7eb7cb2ba2b9fd8f2d4e9d0f5e92d3756b1d54660405160405180910390a250565b60006121d882611ec0565b612217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220e90613279565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1661223784611669565b73ffffffffffffffffffffffffffffffffffffffff161461228d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228490613159565b60405180910390fd5b601060008481526020019081526020016000205482116122e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d9906132b9565b60405180910390fd5b60006122ed84612414565b905060006001826122fe91906133ed565b600261230a91906134fe565b9050600060106000878152602001908152602001600020549050858110156123585785905060015481101561233f5760015490505b81811015612357576001826123549190613676565b90505b5b80851161239a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239190613179565b60405180910390fd5b600081866123a89190613676565b6011546123b5919061361c565b9050856010600089815260200190815260200160002081905550867f56ca301a9219608c91e7bcee90e083c19671d2cdcc96752c7af291cee5f9c8c8826040516123ff9190613319565b60405180910390a28094505050505092915050565b60005b60008211156124425760028261242d919061347a565b9150808061243a906137d3565b915050612417565b60018161244f9190613676565b9050919050565b336008600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906124f8906137d3565b9190505550600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050600d600084815260200190815260200160002081905550600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190915055600780549050600e60008481526020019081526020016000208190555081600f60006007805490508152602001908152602001600020819055506007819080600181540180825580915050600190039060005260206000200160009091909190915055813373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600061269361268e84613365565b613334565b9050828152602081018484840111156126ab57600080fd5b6126b6848285613735565b509392505050565b6000813590506126cd8161393b565b92915050565b6000815190506126e28161393b565b92915050565b60008083601f8401126126fa57600080fd5b8235905067ffffffffffffffff81111561271357600080fd5b60208301915083602082028301111561272b57600080fd5b9250929050565b60008135905061274181613952565b92915050565b60008151905061275681613969565b92915050565b60008135905061276b81613980565b92915050565b60008151905061278081613980565b92915050565b600082601f83011261279757600080fd5b81356127a7848260208601612680565b91505092915050565b6000813590506127bf81613997565b92915050565b6000602082840312156127d757600080fd5b60006127e5848285016126be565b91505092915050565b60006020828403121561280057600080fd5b600061280e848285016126d3565b91505092915050565b6000806040838503121561282a57600080fd5b6000612838858286016126be565b9250506020612849858286016126be565b9150509250929050565b60008060006060848603121561286857600080fd5b6000612876868287016126be565b9350506020612887868287016126be565b9250506040612898868287016127b0565b9150509250925092565b600080600080608085870312156128b857600080fd5b60006128c6878288016126be565b94505060206128d7878288016126be565b93505060406128e8878288016127b0565b925050606085013567ffffffffffffffff81111561290557600080fd5b61291187828801612786565b91505092959194509250565b6000806040838503121561293057600080fd5b600061293e858286016126be565b925050602061294f85828601612732565b9150509250929050565b6000806040838503121561296c57600080fd5b600061297a858286016126be565b925050602061298b858286016127b0565b9150509250929050565b600080600080604085870312156129ab57600080fd5b600085013567ffffffffffffffff8111156129c557600080fd5b6129d1878288016126e8565b9450945050602085013567ffffffffffffffff8111156129f057600080fd5b6129fc878288016126e8565b925092505092959194509250565b600060208284031215612a1c57600080fd5b6000612a2a84828501612747565b91505092915050565b600060208284031215612a4557600080fd5b6000612a538482850161275c565b91505092915050565b600060208284031215612a6e57600080fd5b6000612a7c84828501612771565b91505092915050565b600060208284031215612a9757600080fd5b6000612aa5848285016127b0565b91505092915050565b60008060408385031215612ac157600080fd5b6000612acf858286016127b0565b9250506020612ae0858286016127b0565b9150509250929050565b612af3816136aa565b82525050565b612b0a612b05826136aa565b61381c565b82525050565b612b19816136bc565b82525050565b612b28816136c8565b82525050565b612b3f612b3a826136c8565b61382e565b82525050565b6000612b50826133aa565b612b5a81856133c0565b9350612b6a818560208601613744565b612b7381613910565b840191505092915050565b6000612b89826133aa565b612b9381856133d1565b9350612ba3818560208601613744565b80840191505092915050565b60008154612bbc816137a1565b612bc681866133d1565b94506001821660008114612be15760018114612bf257612c25565b60ff19831686528186019350612c25565b612bfb85613395565b60005b83811015612c1d57815481890152600182019150602081019050612bfe565b838801955050505b50505092915050565b6000612c39826133b5565b612c4381856133dc565b9350612c53818560208601613744565b612c5c81613910565b840191505092915050565b6000612c746005836133dc565b91507f6f776e65720000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612cb46009836133dc565b91507f756e646572666c6f7700000000000000000000000000000000000000000000006000830152602082019050919050565b6000612cf46004836133dc565b91507f7a65726f000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612d34600a836133dc565b91507f7065726d697373696f6e000000000000000000000000000000000000000000006000830152602082019050919050565b6000612d746007836133dc565b91507f746f6b656e4964000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612db46008836133dc565b91507f72656365697665720000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612df46007836133dc565b91507f666f7267657279000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612e346004836133dc565b91507f636f7374000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612e746005836133dc565b91507f696e6465780000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612eb46013836133dc565b91507f7769746864726177556e74696c5f6578697374000000000000000000000000006000830152602082019050919050565b6000612ef4600a836133dc565b91507f646966666963756c7479000000000000000000000000000000000000000000006000830152602082019050919050565b6000612f346009836133dc565b91507f77697468647261776e00000000000000000000000000000000000000000000006000830152602082019050919050565b6000612f74600b836133dc565b91507f69735f6d696772617465640000000000000000000000000000000000000000006000830152602082019050919050565b6000612fb46007836133dc565b91507f696e76616c6964000000000000000000000000000000000000000000000000006000830152602082019050919050565b612ff08161371e565b82525050565b6130076130028261371e565b61384a565b82525050565b60006130198286612af9565b6014820191506130298285612b2e565b6020820191506130398284612ff6565b602082019150819050949350505050565b60006130568285612b2e565b6020820191506130668284612ff6565b6020820191508190509392505050565b60006130828285612baf565b915061308e8284612b7e565b91508190509392505050565b60006020820190506130af6000830184612aea565b92915050565b60006080820190506130ca6000830187612aea565b6130d76020830186612aea565b6130e46040830185612fe7565b81810360608301526130f68184612b45565b905095945050505050565b60006020820190506131166000830184612b10565b92915050565b60006020820190506131316000830184612b1f565b92915050565b600060208201905081810360008301526131518184612c2e565b905092915050565b6000602082019050818103600083015261317281612c67565b9050919050565b6000602082019050818103600083015261319281612ca7565b9050919050565b600060208201905081810360008301526131b281612ce7565b9050919050565b600060208201905081810360008301526131d281612d27565b9050919050565b600060208201905081810360008301526131f281612d67565b9050919050565b6000602082019050818103600083015261321281612da7565b9050919050565b6000602082019050818103600083015261323281612de7565b9050919050565b6000602082019050818103600083015261325281612e27565b9050919050565b6000602082019050818103600083015261327281612e67565b9050919050565b6000602082019050818103600083015261329281612ea7565b9050919050565b600060208201905081810360008301526132b281612ee7565b9050919050565b600060208201905081810360008301526132d281612f27565b9050919050565b600060208201905081810360008301526132f281612f67565b9050919050565b6000602082019050818103600083015261331281612fa7565b9050919050565b600060208201905061332e6000830184612fe7565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561335b5761335a6138e1565b5b8060405250919050565b600067ffffffffffffffff8211156133805761337f6138e1565b5b601f19601f8301169050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006133f88261371e565b91506134038361371e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561343857613437613854565b5b828201905092915050565b600061344e82613728565b915061345983613728565b92508260ff0382111561346f5761346e613854565b5b828201905092915050565b60006134858261371e565b91506134908361371e565b9250826134a05761349f613883565b5b828204905092915050565b6000808291508390505b60018511156134f5578086048111156134d1576134d0613854565b5b60018516156134e05780820291505b80810290506134ee8561392e565b94506134b5565b94509492505050565b60006135098261371e565b91506135148361371e565b92506135417fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613549565b905092915050565b6000826135595760019050613615565b816135675760009050613615565b816001811461357d5760028114613587576135b6565b6001915050613615565b60ff84111561359957613598613854565b5b8360020a9150848211156135b0576135af613854565b5b50613615565b5060208310610133831016604e8410600b84101617156135eb5782820a9050838111156135e6576135e5613854565b5b613615565b6135f884848460016134ab565b9250905081840481111561360f5761360e613854565b5b81810290505b9392505050565b60006136278261371e565b91506136328361371e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561366b5761366a613854565b5b828202905092915050565b60006136818261371e565b915061368c8361371e565b92508282101561369f5761369e613854565b5b828203905092915050565b60006136b5826136fe565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015613762578082015181840152602081019050613747565b83811115613771576000848401525b50505050565b60006137828261371e565b9150600082141561379657613795613854565b5b600182039050919050565b600060028204905060018216806137b957607f821691505b602082108114156137cd576137cc6138b2565b5b50919050565b60006137de8261371e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561381157613810613854565b5b600182019050919050565b600061382782613838565b9050919050565b6000819050919050565b600061384382613921565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b60008160011c9050919050565b613944816136aa565b811461394f57600080fd5b50565b61395b816136bc565b811461396657600080fd5b50565b613972816136c8565b811461397d57600080fd5b50565b613989816136d2565b811461399457600080fd5b50565b6139a08161371e565b81146139ab57600080fd5b5056fea2646970667358221220fad6a40f64a0d12643eace2cde0ce5076156d99af8a473f28b73b315818f585564736f6c6343000800003368747470733a2f2f7777772e706f776e66746d657461646174612e636f6d2f742f0000000000000000000000007d4e35a2090b3ba805ddb39b2c4b83612890df87

Deployed Bytecode

0x6080604052600436106101665760003560e01c80634f6ccce7116100d15780639d1105301161008a578063b1ac134711610064578063b1ac134714610551578063b88d4fde1461057c578063c87b56dd146105a5578063e985e9c5146105e257610166565b80639d110530146104d4578063a22cb465146104fd578063af88d5991461052657610166565b80634f6ccce71461038a5780636352211e146103c757806370a082311461040457806373dfd221146104415780637e551b751461046c57806395d89b41146104a957610166565b806323b872dd1161012357806323b872dd1461028d5780632f745c59146102b65780633e54bacb146102f357806342842e0e1461031c578063441a3e70146103455780634d4748981461036e57610166565b806301ffc9a71461016b57806306fdde03146101a8578063081812fc146101d3578063095ea7b3146102105780630fdd2ec81461023957806318160ddd14610262575b600080fd5b34801561017757600080fd5b50610192600480360381019061018d9190612a33565b61061f565b60405161019f9190613101565b60405180910390f35b3480156101b457600080fd5b506101bd610687565b6040516101ca9190613137565b60405180910390f35b3480156101df57600080fd5b506101fa60048036038101906101f59190612a85565b610719565b604051610207919061309a565b60405180910390f35b34801561021c57600080fd5b5061023760048036038101906102329190612959565b61079e565b005b34801561024557600080fd5b50610260600480360381019061025b9190612995565b61095c565b005b34801561026e57600080fd5b506102776109d8565b6040516102849190613319565b60405180910390f35b34801561029957600080fd5b506102b460048036038101906102af9190612853565b6109e5565b005b3480156102c257600080fd5b506102dd60048036038101906102d89190612959565b6111db565b6040516102ea9190613319565b60405180910390f35b3480156102ff57600080fd5b5061031a60048036038101906103159190612aae565b6112e8565b005b34801561032857600080fd5b50610343600480360381019061033e9190612853565b611309565b005b34801561035157600080fd5b5061036c60048036038101906103679190612aae565b611329565b005b61038860048036038101906103839190612a85565b61137d565b005b34801561039657600080fd5b506103b160048036038101906103ac9190612a85565b611605565b6040516103be9190613319565b60405180910390f35b3480156103d357600080fd5b506103ee60048036038101906103e99190612a85565b611669565b6040516103fb919061309a565b60405180910390f35b34801561041057600080fd5b5061042b600480360381019061042691906127c5565b6116ee565b6040516104389190613319565b60405180910390f35b34801561044d57600080fd5b50610456611737565b6040516104639190613319565b60405180910390f35b34801561047857600080fd5b50610493600480360381019061048e9190612a85565b61173d565b6040516104a0919061311c565b60405180910390f35b3480156104b557600080fd5b506104be6117e6565b6040516104cb9190613137565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f69190612995565b611878565b005b34801561050957600080fd5b50610524600480360381019061051f919061291d565b6119c7565b005b34801561053257600080fd5b5061053b611ac4565b6040516105489190613319565b60405180910390f35b34801561055d57600080fd5b50610566611aca565b604051610573919061311c565b60405180910390f35b34801561058857600080fd5b506105a3600480360381019061059e91906128a2565b611ad0565b005b3480156105b157600080fd5b506105cc60048036038101906105c79190612a85565b611c2e565b6040516105d99190613137565b60405180910390f35b3480156105ee57600080fd5b5061060960048036038101906106049190612817565b611e2c565b6040516106169190613101565b60405180910390f35b600060146000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060098054610696906137a1565b80601f01602080910402602001604051908101604052809291908181526020018280546106c2906137a1565b801561070f5780601f106106e45761010080835404028352916020019161070f565b820191906000526020600020905b8154815290600101906020018083116106f257829003601f168201915b5050505050905090565b600061072482611ec0565b610763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075a906132f9565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006107a982611669565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061086b5750600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6108aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a1906131b9565b60405180910390fd5b818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60005b848490508110156109c5576109b28585838181106109a6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135611f2c565b80806109bd906137d3565b91505061095f565b506109d284848484611878565b50505050565b6000600780549050905090565b60006109f082611669565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610a8a57503373ffffffffffffffffffffffffffffffffffffffff166005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610b1b5750600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b51906131b9565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbf90613159565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2f90613199565b60405180910390fd5b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4826008600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610d3590613777565b9190505550600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610d8a906137d3565b9190505550600073ffffffffffffffffffffffffffffffffffffffff166005600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e2d576005600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b6000600d60008481526020019081526020016000205490506001600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050610e949190613676565b811461108957600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050610f289190613676565b81548110610f5f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610fe1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555080600d6000600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061106b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001548152602001908152602001600020819055505b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806110fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60019003818190600052602060002001600090559055600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050600d600085815260200190815260200160002081905550600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208390806001815401808255809150506001900390600052602060002001600090919091909150555050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821061125e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125590613259565b60405180910390fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106112d5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905092915050565b6112f182611f2c565b6000811115611305576113048282611329565b5b5050565b61132483838360405180602001604052806000815250611ad0565b505050565b3373ffffffffffffffffffffffffffffffffffffffff166108fc61134d84846121cd565b9081150290604051600060405180830381858888f19350505050158015611378573d6000803e3d6000fd5b505050565b6000600160078054905060005461139491906133ed565b61139e91906133ed565b905060006113ab82612414565b90506000816013546113bd91906134fe565b6012546113ca919061347a565b9050600d8211156113fd576001614000846113e59190613676565b6113ef91906133ed565b816113fa919061347a565b90505b6000601154600184600261141191906134fe565b61141b9190613676565b611425919061361c565b9050600060078054905060005460015461143f9190613676565b146114d957336007600e60006001896114589190613676565b8152602001908152602001600020548154811061149e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154876040516020016114bc9392919061300d565b604051602081830303815290604052805190602001209050611509565b33600254876040516020016114f09392919061300d565b6040516020818303038152906040528051906020012090505b828160001c1061154e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154590613299565b60405180910390fd5b813414611590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158790613239565b60405180910390fd5b80426040516020016115a392919061304a565b6040516020818303038152906040528051906020012090506115c58582612456565b847f5570ed3da2dab8635dcc918badc12e05d60cbc9185347ef0065ab7335568cdae826040516115f5919061311c565b60405180910390a2505050505050565b6000600780549050821061164e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164590613259565b60405180910390fd5b600f6000838152602001908152602001600020549050919050565b600061167482611ec0565b6116b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116aa906132f9565b60405180910390fd5b6008600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60015481565b600061174882611ec0565b611787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177e906132f9565b60405180910390fd5b6007600e600084815260200190815260200160002054815481106117d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b6060600a80546117f5906137a1565b80601f0160208091040260200160405190810160405280929190818152602001828054611821906137a1565b801561186e5780601f106118435761010080835404028352916020019161186e565b820191906000526020600020905b81548152906001019060200180831161185157829003601f168201915b5050505050905090565b6000805b858590508110156119785760008484838181106118c2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013511156119655761195786868381811061190b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013585858481811061194b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201356121cd565b8261196291906133ed565b91505b8080611970906137d3565b91505061187c565b503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156119bf573d6000803e3d6000fd5b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611a249190613101565b60405180910390a380600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60005481565b60025481565b611adb8484846109e5565b6000833b905060008163ffffffff161115611c275760008490507f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff1663150b7a02338988886040518563ffffffff1660e01b8152600401611b7494939291906130b5565b602060405180830381600087803b158015611b8e57600080fd5b505af1158015611ba2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc69190612a5c565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1c906131f9565b60405180910390fd5b505b5050505050565b6060611c3982611ec0565b611c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6f906131d9565b60405180910390fd5b6000829050600081905060005b60008214611caf578080611c98906137d3565b915050600a82611ca8919061347a565b9150611c85565b60008167ffffffffffffffff811115611cf1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611d235781602001600182028036833780820191505090505b50905060008290505b60008514611dfd57600181611d419190613676565b90506000600a8087611d53919061347a565b611d5d919061361c565b86611d689190613676565b6030611d749190613443565b905060008160f81b905080848481518110611db8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a87611df4919061347a565b96505050611d2c565b600b82604051602001611e11929190613076565b60405160208183030381529060405295505050505050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff166008600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b611f3581611ec0565b15611f75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6c906132d9565b60405180910390fd5b600154811115611fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb190613219565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161202c9190613319565b60206040518083038186803b15801561204457600080fd5b505afa158015612058573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207c91906127ee565b73ffffffffffffffffffffffffffffffffffffffff16146120d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c990613159565b60405180910390fd5b6000808154809291906120e490613777565b919050555061219d81600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637e551b75846040518263ffffffff1660e01b81526004016121489190613319565b60206040518083038186803b15801561216057600080fd5b505afa158015612174573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121989190612a0a565b612456565b807fd5837b673ffaac69230366d3f7eb7cb2ba2b9fd8f2d4e9d0f5e92d3756b1d54660405160405180910390a250565b60006121d882611ec0565b612217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220e90613279565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1661223784611669565b73ffffffffffffffffffffffffffffffffffffffff161461228d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228490613159565b60405180910390fd5b601060008481526020019081526020016000205482116122e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d9906132b9565b60405180910390fd5b60006122ed84612414565b905060006001826122fe91906133ed565b600261230a91906134fe565b9050600060106000878152602001908152602001600020549050858110156123585785905060015481101561233f5760015490505b81811015612357576001826123549190613676565b90505b5b80851161239a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239190613179565b60405180910390fd5b600081866123a89190613676565b6011546123b5919061361c565b9050856010600089815260200190815260200160002081905550867f56ca301a9219608c91e7bcee90e083c19671d2cdcc96752c7af291cee5f9c8c8826040516123ff9190613319565b60405180910390a28094505050505092915050565b60005b60008211156124425760028261242d919061347a565b9150808061243a906137d3565b915050612417565b60018161244f9190613676565b9050919050565b336008600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906124f8906137d3565b9190505550600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050600d600084815260200190815260200160002081905550600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190915055600780549050600e60008481526020019081526020016000208190555081600f60006007805490508152602001908152602001600020819055506007819080600181540180825580915050600190039060005260206000200160009091909190915055813373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600061269361268e84613365565b613334565b9050828152602081018484840111156126ab57600080fd5b6126b6848285613735565b509392505050565b6000813590506126cd8161393b565b92915050565b6000815190506126e28161393b565b92915050565b60008083601f8401126126fa57600080fd5b8235905067ffffffffffffffff81111561271357600080fd5b60208301915083602082028301111561272b57600080fd5b9250929050565b60008135905061274181613952565b92915050565b60008151905061275681613969565b92915050565b60008135905061276b81613980565b92915050565b60008151905061278081613980565b92915050565b600082601f83011261279757600080fd5b81356127a7848260208601612680565b91505092915050565b6000813590506127bf81613997565b92915050565b6000602082840312156127d757600080fd5b60006127e5848285016126be565b91505092915050565b60006020828403121561280057600080fd5b600061280e848285016126d3565b91505092915050565b6000806040838503121561282a57600080fd5b6000612838858286016126be565b9250506020612849858286016126be565b9150509250929050565b60008060006060848603121561286857600080fd5b6000612876868287016126be565b9350506020612887868287016126be565b9250506040612898868287016127b0565b9150509250925092565b600080600080608085870312156128b857600080fd5b60006128c6878288016126be565b94505060206128d7878288016126be565b93505060406128e8878288016127b0565b925050606085013567ffffffffffffffff81111561290557600080fd5b61291187828801612786565b91505092959194509250565b6000806040838503121561293057600080fd5b600061293e858286016126be565b925050602061294f85828601612732565b9150509250929050565b6000806040838503121561296c57600080fd5b600061297a858286016126be565b925050602061298b858286016127b0565b9150509250929050565b600080600080604085870312156129ab57600080fd5b600085013567ffffffffffffffff8111156129c557600080fd5b6129d1878288016126e8565b9450945050602085013567ffffffffffffffff8111156129f057600080fd5b6129fc878288016126e8565b925092505092959194509250565b600060208284031215612a1c57600080fd5b6000612a2a84828501612747565b91505092915050565b600060208284031215612a4557600080fd5b6000612a538482850161275c565b91505092915050565b600060208284031215612a6e57600080fd5b6000612a7c84828501612771565b91505092915050565b600060208284031215612a9757600080fd5b6000612aa5848285016127b0565b91505092915050565b60008060408385031215612ac157600080fd5b6000612acf858286016127b0565b9250506020612ae0858286016127b0565b9150509250929050565b612af3816136aa565b82525050565b612b0a612b05826136aa565b61381c565b82525050565b612b19816136bc565b82525050565b612b28816136c8565b82525050565b612b3f612b3a826136c8565b61382e565b82525050565b6000612b50826133aa565b612b5a81856133c0565b9350612b6a818560208601613744565b612b7381613910565b840191505092915050565b6000612b89826133aa565b612b9381856133d1565b9350612ba3818560208601613744565b80840191505092915050565b60008154612bbc816137a1565b612bc681866133d1565b94506001821660008114612be15760018114612bf257612c25565b60ff19831686528186019350612c25565b612bfb85613395565b60005b83811015612c1d57815481890152600182019150602081019050612bfe565b838801955050505b50505092915050565b6000612c39826133b5565b612c4381856133dc565b9350612c53818560208601613744565b612c5c81613910565b840191505092915050565b6000612c746005836133dc565b91507f6f776e65720000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612cb46009836133dc565b91507f756e646572666c6f7700000000000000000000000000000000000000000000006000830152602082019050919050565b6000612cf46004836133dc565b91507f7a65726f000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612d34600a836133dc565b91507f7065726d697373696f6e000000000000000000000000000000000000000000006000830152602082019050919050565b6000612d746007836133dc565b91507f746f6b656e4964000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612db46008836133dc565b91507f72656365697665720000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612df46007836133dc565b91507f666f7267657279000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612e346004836133dc565b91507f636f7374000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612e746005836133dc565b91507f696e6465780000000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000612eb46013836133dc565b91507f7769746864726177556e74696c5f6578697374000000000000000000000000006000830152602082019050919050565b6000612ef4600a836133dc565b91507f646966666963756c7479000000000000000000000000000000000000000000006000830152602082019050919050565b6000612f346009836133dc565b91507f77697468647261776e00000000000000000000000000000000000000000000006000830152602082019050919050565b6000612f74600b836133dc565b91507f69735f6d696772617465640000000000000000000000000000000000000000006000830152602082019050919050565b6000612fb46007836133dc565b91507f696e76616c6964000000000000000000000000000000000000000000000000006000830152602082019050919050565b612ff08161371e565b82525050565b6130076130028261371e565b61384a565b82525050565b60006130198286612af9565b6014820191506130298285612b2e565b6020820191506130398284612ff6565b602082019150819050949350505050565b60006130568285612b2e565b6020820191506130668284612ff6565b6020820191508190509392505050565b60006130828285612baf565b915061308e8284612b7e565b91508190509392505050565b60006020820190506130af6000830184612aea565b92915050565b60006080820190506130ca6000830187612aea565b6130d76020830186612aea565b6130e46040830185612fe7565b81810360608301526130f68184612b45565b905095945050505050565b60006020820190506131166000830184612b10565b92915050565b60006020820190506131316000830184612b1f565b92915050565b600060208201905081810360008301526131518184612c2e565b905092915050565b6000602082019050818103600083015261317281612c67565b9050919050565b6000602082019050818103600083015261319281612ca7565b9050919050565b600060208201905081810360008301526131b281612ce7565b9050919050565b600060208201905081810360008301526131d281612d27565b9050919050565b600060208201905081810360008301526131f281612d67565b9050919050565b6000602082019050818103600083015261321281612da7565b9050919050565b6000602082019050818103600083015261323281612de7565b9050919050565b6000602082019050818103600083015261325281612e27565b9050919050565b6000602082019050818103600083015261327281612e67565b9050919050565b6000602082019050818103600083015261329281612ea7565b9050919050565b600060208201905081810360008301526132b281612ee7565b9050919050565b600060208201905081810360008301526132d281612f27565b9050919050565b600060208201905081810360008301526132f281612f67565b9050919050565b6000602082019050818103600083015261331281612fa7565b9050919050565b600060208201905061332e6000830184612fe7565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561335b5761335a6138e1565b5b8060405250919050565b600067ffffffffffffffff8211156133805761337f6138e1565b5b601f19601f8301169050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006133f88261371e565b91506134038361371e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561343857613437613854565b5b828201905092915050565b600061344e82613728565b915061345983613728565b92508260ff0382111561346f5761346e613854565b5b828201905092915050565b60006134858261371e565b91506134908361371e565b9250826134a05761349f613883565b5b828204905092915050565b6000808291508390505b60018511156134f5578086048111156134d1576134d0613854565b5b60018516156134e05780820291505b80810290506134ee8561392e565b94506134b5565b94509492505050565b60006135098261371e565b91506135148361371e565b92506135417fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613549565b905092915050565b6000826135595760019050613615565b816135675760009050613615565b816001811461357d5760028114613587576135b6565b6001915050613615565b60ff84111561359957613598613854565b5b8360020a9150848211156135b0576135af613854565b5b50613615565b5060208310610133831016604e8410600b84101617156135eb5782820a9050838111156135e6576135e5613854565b5b613615565b6135f884848460016134ab565b9250905081840481111561360f5761360e613854565b5b81810290505b9392505050565b60006136278261371e565b91506136328361371e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561366b5761366a613854565b5b828202905092915050565b60006136818261371e565b915061368c8361371e565b92508282101561369f5761369e613854565b5b828203905092915050565b60006136b5826136fe565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015613762578082015181840152602081019050613747565b83811115613771576000848401525b50505050565b60006137828261371e565b9150600082141561379657613795613854565b5b600182039050919050565b600060028204905060018216806137b957607f821691505b602082108114156137cd576137cc6138b2565b5b50919050565b60006137de8261371e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561381157613810613854565b5b600182019050919050565b600061382782613838565b9050919050565b6000819050919050565b600061384382613921565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b60008160011c9050919050565b613944816136aa565b811461394f57600080fd5b50565b61395b816136bc565b811461396657600080fd5b50565b613972816136c8565b811461397d57600080fd5b50565b613989816136d2565b811461399457600080fd5b50565b6139a08161371e565b81146139ab57600080fd5b5056fea2646970667358221220fad6a40f64a0d12643eace2cde0ce5076156d99af8a473f28b73b315818f585564736f6c63430008000033

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

0000000000000000000000007d4e35a2090b3ba805ddb39b2c4b83612890df87

-----Decoded View---------------
Arg [0] : contract_v2 (address): 0x7d4e35A2090b3ba805ddB39B2c4b83612890Df87

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007d4e35a2090b3ba805ddb39b2c4b83612890df87


Deployed Bytecode Sourcemap

107:12328:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12281:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11435:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7801:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7385:408;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3494:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11670:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8340:1652;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11942:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2734:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10579:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3759:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5367:1146;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11771:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7218:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7102:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;186:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2558:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11534:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4998:361;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8132:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;153:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;217:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10000:571;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10755:668;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7977:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12281:133;12351:4;12374:19;:32;12394:11;12374:32;;;;;;;;;;;;;;;;;;;;;;;;;;;12367:39;;12281:133;;;:::o;11435:91::-;11474:19;11512:6;11505:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11435:91;:::o;7801:168::-;7863:7;7891:22;7904:8;7891:12;:22::i;:::-;7883:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;7942:9;:19;7952:8;7942:19;;;;;;;;;;;;;;;;;;;;;7935:26;;7801:168;;;:::o;7385:408::-;7459:13;7475:17;7483:8;7475:7;:17::i;:::-;7459:33;;7521:10;7512:19;;:5;:19;;;:112;;;;7595:10;:17;7606:5;7595:17;;;;;;;;;;;;;;;:29;7613:10;7595:29;;;;;;;;;;;;;;;;;;;;;;;;;7512:112;7503:188;;;;;;;;;;;;:::i;:::-;;;;;;;;;7734:8;7723:9;7707:36;;7716:5;7707:36;;;;;;;;;;;;7776:9;7754;:19;7764:8;7754:19;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;7385:408;;;:::o;3494:253::-;3600:6;3596:91;3616:9;;:16;;3612:1;:20;3596:91;;;3653:22;3662:9;;3672:1;3662:12;;;;;;;;;;;;;;;;;;;;;3653:8;:22::i;:::-;3634:3;;;;;:::i;:::-;;;;3596:91;;;;3697:42;3714:9;;3724:14;;3697:16;:42::i;:::-;3494:253;;;;:::o;11670:93::-;11716:7;11742:6;:13;;;;11735:20;;11670:93;:::o;8340:1652::-;8512:13;8528:17;8536:8;8528:7;:17::i;:::-;8512:33;;8577:10;8568:19;;:5;:19;;;:200;;;;8758:10;8735:33;;:9;:19;8745:8;8735:19;;;;;;;;;;;;;;;;;;;;;:33;;;8568:200;:283;;;;8822:10;:17;8833:5;8822:17;;;;;;;;;;;;;;;:29;8840:10;8822:29;;;;;;;;;;;;;;;;;;;;;;;;;8568:283;8558:351;;;;;;;;;;;;:::i;:::-;;;;;;;;;8937:5;8928:14;;:5;:14;;;8920:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;8985:1;8970:17;;:3;:17;;;;8962:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;9034:8;9029:3;9013:30;;9022:5;9013:30;;;;;;;;;;;;9076:3;9058:6;:16;9065:8;9058:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;9092:8;:15;9101:5;9092:15;;;;;;;;;;;;;;;;:17;;;;;;;;;:::i;:::-;;;;;;9120:8;:13;9129:3;9120:13;;;;;;;;;;;;;;;;:15;;;;;;;;;:::i;:::-;;;;;;9224:1;9193:33;;:9;:19;9203:8;9193:19;;;;;;;;;;;;;;;;;;;;;:33;;;9190:90;;9249:9;:19;9259:8;9249:19;;;;;;;;;;;;9242:26;;;;;;;;;;;9190:90;9324:13;9340:17;:27;9358:8;9340:27;;;;;;;;;;;;9324:43;;9491:1;9457:17;:24;9475:5;9457:24;;;;;;;;;;;;;;;:31;;;;:35;;;;:::i;:::-;9445:8;:47;9442:380;;9595:17;:24;9613:5;9595:24;;;;;;;;;;;;;;;9654:1;9620:17;:24;9638:5;9620:24;;;;;;;;;;;;;;;:31;;;;:35;;;;:::i;:::-;9595:61;;;;;;;;;;;;;;;;;;;;;;;;9558:17;:24;9576:5;9558:24;;;;;;;;;;;;;;;9583:8;9558:34;;;;;;;;;;;;;;;;;;;;;;;:98;;;;9802:8;9746:17;:53;9764:17;:24;9782:5;9764:24;;;;;;;;;;;;;;;9789:8;9764:34;;;;;;;;;;;;;;;;;;;;;;;;9746:53;;;;;;;;;;;:64;;;;9442:380;9832:17;:24;9850:5;9832:24;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9905:17;:22;9923:3;9905:22;;;;;;;;;;;;;;;:29;;;;9875:17;:27;9893:8;9875:27;;;;;;;;;;;:59;;;;9945:17;:22;9963:3;9945:22;;;;;;;;;;;;;;;9973:8;9945:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8340:1652;;;;;:::o;11942:204::-;12026:7;12062:8;:16;12071:6;12062:16;;;;;;;;;;;;;;;;12053:6;:25;12045:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;12105:17;:25;12123:6;12105:25;;;;;;;;;;;;;;;12131:6;12105:33;;;;;;;;;;;;;;;;;;;;;;;;12098:40;;11942:204;;;;:::o;2734:214::-;2811:18;2820:8;2811;:18::i;:::-;2867:1;2847:17;:21;2844:97;;;2888:37;2897:8;2907:17;2888:8;:37::i;:::-;2844:97;2734:214;;:::o;10579:139::-;10671:39;10688:5;10694:3;10698:8;10671:39;;;;;;;;;;;;:16;:39::i;:::-;10579:139;;;:::o;3759:169::-;3839:10;3831:28;;:89;3874:35;3884:8;3894:14;3874:9;:35::i;:::-;3831:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3759:169;;:::o;5367:1146::-;5420:12;5464:1;5448:6;:13;;;;5435:10;;:26;;;;:::i;:::-;:30;;;;:::i;:::-;5420:45;;5476:15;5494:21;5507:7;5494:12;:21::i;:::-;5476:39;;5528:15;5582:10;5565:15;;:27;;;;:::i;:::-;5546:15;;:47;;;;:::i;:::-;5528:65;;5620:2;5607:10;:15;5604:95;;;5685:1;5677:5;5667:7;:15;;;;:::i;:::-;:19;;;;:::i;:::-;5652:35;;;;;:::i;:::-;;;5604:95;5711:9;5744;;5740:1;5727:10;5724:1;:13;;;;:::i;:::-;:17;;;;:::i;:::-;5723:30;;;;:::i;:::-;5711:42;;5768:12;5819:6;:13;;;;5805:10;;5794:8;;:21;;;;:::i;:::-;:38;5791:474;;5904:10;5937:6;5944:11;:22;5964:1;5956:7;:9;;;;:::i;:::-;5944:22;;;;;;;;;;;;5937:30;;;;;;;;;;;;;;;;;;;;;;;;5990:5;5865:149;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5855:160;;;;;;5848:167;;5791:474;;;6148:10;6185:20;;6228:5;6105:147;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6095:158;;;;;;6088:165;;5791:474;6300:10;6292:4;6287:10;;:23;6279:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;6355:4;6343:9;:16;6335:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;6414:4;6419:15;6397:38;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6387:49;;;;;;6380:56;;6449:19;6454:7;6463:4;6449;:19::i;:::-;6492:7;6486:19;6500:4;6486:19;;;;;;:::i;:::-;;;;;;;;5367:1146;;;;;;:::o;11771:163::-;11831:7;11867:6;:13;;;;11858:6;:22;11850:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;11907:11;:19;11919:6;11907:19;;;;;;;;;;;;11900:26;;11771:163;;;:::o;7218:157::-;7273:7;7300:22;7313:8;7300:12;:22::i;:::-;7292:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;7351:6;:16;7358:8;7351:16;;;;;;;;;;;;;;;;;;;;;7344:23;;7218:157;;;:::o;7102:108::-;7160:7;7186:8;:16;7195:6;7186:16;;;;;;;;;;;;;;;;7179:23;;7102:108;;;:::o;186:24::-;;;;:::o;2558:166::-;2609:7;2636:22;2649:8;2636:12;:22::i;:::-;2628:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;2687:6;2694:11;:21;2706:8;2694:21;;;;;;;;;;;;2687:29;;;;;;;;;;;;;;;;;;;;;;;;2680:36;;2558:166;;;:::o;11534:97::-;11575:21;11615:8;11608:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11534:97;:::o;4998:361::-;5100:11;5130:6;5126:179;5146:9;;:16;;5142:1;:20;5126:179;;;5206:1;5186:14;;5201:1;5186:17;;;;;;;;;;;;;;;;;;;;;:21;5183:111;;;5237:41;5247:9;;5257:1;5247:12;;;;;;;;;;;;;;;;;;;;;5260:14;;5275:1;5260:17;;;;;;;;;;;;;;;;;;;;;5237:9;:41::i;:::-;5227:51;;;;;:::i;:::-;;;5183:111;5164:3;;;;;:::i;:::-;;;;5126:179;;;;5323:10;5315:28;;:36;5344:6;5315:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4998:361;;;;;:::o;8132:198::-;8245:9;8219:47;;8234:10;8219:47;;;8256:9;8219:47;;;;;;:::i;:::-;;;;;;;;8313:9;8277:10;:22;8288:10;8277:22;;;;;;;;;;;;;;;:33;8300:9;8277:33;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;8132:198;;:::o;153:26::-;;;;:::o;217:35::-;;;;:::o;10000:571::-;10109:34;10122:5;10129:3;10134:8;10109:12;:34::i;:::-;10213:11;10279:3;10267:16;10259:24;;10314:1;10307:4;:8;;;10304:258;;;10331:28;10382:3;10331:55;;10477:60;10409:129;;;:8;:25;;;10435:10;10446:5;10452:8;10461:4;10409:57;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:129;;;;10401:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;10304:258;;10000:571;;;;;:::o;10755:668::-;10812:13;10891:22;10904:8;10891:12;:22::i;:::-;10883:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;10937:7;10947:8;10937:18;;10966:6;10975:2;10966:11;;10988:8;11007:69;11019:1;11014;:6;11007:69;;11037:5;;;;;:::i;:::-;;;;11062:2;11057:7;;;;;:::i;:::-;;;11007:69;;;11086:17;11116:3;11106:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11086:34;;11131:6;11140:3;11131:12;;11154:198;11167:1;11161:2;:7;11154:198;;11191:1;11189;:3;;;;:::i;:::-;11185:7;;11207:10;11247:2;11242;11237;:7;;;;:::i;:::-;:12;;;;:::i;:::-;11232:2;:17;;;;:::i;:::-;11221:2;:29;;;;:::i;:::-;11207:44;;11266:9;11285:4;11278:12;;11266:24;;11315:2;11305:4;11310:1;11305:7;;;;;;;;;;;;;;;;;;;:12;;;;;;;;;;;11338:2;11332:8;;;;;:::i;:::-;;;11154:198;;;;;11397:9;11407:4;11380:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11366:47;;;;;;;10755:668;;;:::o;7977:145::-;8061:4;8085:10;:18;8096:6;8085:18;;;;;;;;;;;;;;;:29;8104:9;8085:29;;;;;;;;;;;;;;;;;;;;;;;;;8078:36;;7977:145;;;;:::o;6971:123::-;7033:4;7084:1;7056:30;;:6;:16;7063:8;7056:16;;;;;;;;;;;;;;;;;;;;;:30;;;;7049:37;;6971:123;;;:::o;2954:534::-;3048:22;3061:8;3048:12;:22::i;:::-;3047:23;3039:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3153:8;;3141;:20;;3133:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;3272:10;3239:43;;:11;;;;;;;;;;;:19;;;3259:8;3239:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;;;3231:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;3357:10;;:12;;;;;;;;;:::i;:::-;;;;;;3380:67;3385:8;3408:11;;;;;;;;;;;:18;;;3427:8;3408:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3380:4;:67::i;:::-;3471:8;3463:17;;;;;;;;;;2954:534;:::o;3934:1056::-;4006:4;4030:28;4043:14;4030:12;:28::i;:::-;4022:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;4123:10;4102:31;;:17;4110:8;4102:7;:17::i;:::-;:31;;;4094:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;4178:11;:21;4190:8;4178:21;;;;;;;;;;;;4161:14;:38;4153:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;4225:15;4243:22;4256:8;4243:12;:22::i;:::-;4225:40;;4276:17;4311:1;4300:10;:12;;;;:::i;:::-;4296:1;:17;;;;:::i;:::-;4276:37;;4326:17;4346:11;:21;4358:8;4346:21;;;;;;;;;;;;4326:41;;4396:8;4381:12;:23;4378:352;;;4435:8;4420:23;;4541:8;;4526:12;:23;4523:85;;;4584:8;;4569:23;;4523:85;4640:12;4625;:27;4622:97;;;4702:1;4687:12;:16;;;;:::i;:::-;4672:31;;4622:97;4378:352;4767:12;4750:14;:29;4742:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;4805:11;4849:12;4832:14;:29;;;;:::i;:::-;4819:9;;:43;;;;:::i;:::-;4805:57;;4899:14;4875:11;:21;4887:8;4875:21;;;;;;;;;;;:38;;;;4940:8;4931:25;4949:6;4931:25;;;;;;:::i;:::-;;;;;;;;4976:6;4969:13;;;;;;3934:1056;;;;:::o;2341:211::-;2399:15;2426:87;2457:1;2446:8;:12;2426:87;;;2500:1;2488:13;;;;;:::i;:::-;;;2460:12;;;;;:::i;:::-;;;;2426:87;;;2543:1;2530:10;:14;;;;:::i;:::-;2523:21;;2341:211;;;:::o;6521:440::-;6599:10;6581:6;:15;6588:7;6581:15;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;6620:8;:20;6629:10;6620:20;;;;;;;;;;;;;;;;:22;;;;;;;;;:::i;:::-;;;;;;6682:17;:29;6700:10;6682:29;;;;;;;;;;;;;;;:36;;;;6653:17;:26;6671:7;6653:26;;;;;;;;;;;:65;;;;6729:17;:29;6747:10;6729:29;;;;;;;;;;;;;;;6764:7;6729:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6808:6;:13;;;;6785:11;:20;6797:7;6785:20;;;;;;;;;;;:36;;;;6861:7;6832:11;:26;6844:6;:13;;;;6832:26;;;;;;;;;;;:36;;;;6879:6;6891:4;6879:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6945:7;6934:10;6914:39;;6931:1;6914:39;;;;;;;;;;;;6521:440;;:::o;7:342:1:-;;109:64;124:48;165:6;124:48;:::i;:::-;109:64;:::i;:::-;100:73;;196:6;189:5;182:21;234:4;227:5;223:16;272:3;263:6;258:3;254:16;251:25;248:2;;;289:1;286;279:12;248:2;302:41;336:6;331:3;326;302:41;:::i;:::-;90:259;;;;;;:::o;355:139::-;;439:6;426:20;417:29;;455:33;482:5;455:33;:::i;:::-;407:87;;;;:::o;500:143::-;;588:6;582:13;573:22;;604:33;631:5;604:33;:::i;:::-;563:80;;;;:::o;666:367::-;;;799:3;792:4;784:6;780:17;776:27;766:2;;817:1;814;807:12;766:2;853:6;840:20;830:30;;883:18;875:6;872:30;869:2;;;915:1;912;905:12;869:2;952:4;944:6;940:17;928:29;;1006:3;998:4;990:6;986:17;976:8;972:32;969:41;966:2;;;1023:1;1020;1013:12;966:2;756:277;;;;;:::o;1039:133::-;;1120:6;1107:20;1098:29;;1136:30;1160:5;1136:30;:::i;:::-;1088:84;;;;:::o;1178:143::-;;1266:6;1260:13;1251:22;;1282:33;1309:5;1282:33;:::i;:::-;1241:80;;;;:::o;1327:137::-;;1410:6;1397:20;1388:29;;1426:32;1452:5;1426:32;:::i;:::-;1378:86;;;;:::o;1470:141::-;;1557:6;1551:13;1542:22;;1573:32;1599:5;1573:32;:::i;:::-;1532:79;;;;:::o;1630:271::-;;1734:3;1727:4;1719:6;1715:17;1711:27;1701:2;;1752:1;1749;1742:12;1701:2;1792:6;1779:20;1817:78;1891:3;1883:6;1876:4;1868:6;1864:17;1817:78;:::i;:::-;1808:87;;1691:210;;;;;:::o;1907:139::-;;1991:6;1978:20;1969:29;;2007:33;2034:5;2007:33;:::i;:::-;1959:87;;;;:::o;2052:262::-;;2160:2;2148:9;2139:7;2135:23;2131:32;2128:2;;;2176:1;2173;2166:12;2128:2;2219:1;2244:53;2289:7;2280:6;2269:9;2265:22;2244:53;:::i;:::-;2234:63;;2190:117;2118:196;;;;:::o;2320:284::-;;2439:2;2427:9;2418:7;2414:23;2410:32;2407:2;;;2455:1;2452;2445:12;2407:2;2498:1;2523:64;2579:7;2570:6;2559:9;2555:22;2523:64;:::i;:::-;2513:74;;2469:128;2397:207;;;;:::o;2610:407::-;;;2735:2;2723:9;2714:7;2710:23;2706:32;2703:2;;;2751:1;2748;2741:12;2703:2;2794:1;2819:53;2864:7;2855:6;2844:9;2840:22;2819:53;:::i;:::-;2809:63;;2765:117;2921:2;2947:53;2992:7;2983:6;2972:9;2968:22;2947:53;:::i;:::-;2937:63;;2892:118;2693:324;;;;;:::o;3023:552::-;;;;3165:2;3153:9;3144:7;3140:23;3136:32;3133:2;;;3181:1;3178;3171:12;3133:2;3224:1;3249:53;3294:7;3285:6;3274:9;3270:22;3249:53;:::i;:::-;3239:63;;3195:117;3351:2;3377:53;3422:7;3413:6;3402:9;3398:22;3377:53;:::i;:::-;3367:63;;3322:118;3479:2;3505:53;3550:7;3541:6;3530:9;3526:22;3505:53;:::i;:::-;3495:63;;3450:118;3123:452;;;;;:::o;3581:809::-;;;;;3749:3;3737:9;3728:7;3724:23;3720:33;3717:2;;;3766:1;3763;3756:12;3717:2;3809:1;3834:53;3879:7;3870:6;3859:9;3855:22;3834:53;:::i;:::-;3824:63;;3780:117;3936:2;3962:53;4007:7;3998:6;3987:9;3983:22;3962:53;:::i;:::-;3952:63;;3907:118;4064:2;4090:53;4135:7;4126:6;4115:9;4111:22;4090:53;:::i;:::-;4080:63;;4035:118;4220:2;4209:9;4205:18;4192:32;4251:18;4243:6;4240:30;4237:2;;;4283:1;4280;4273:12;4237:2;4311:62;4365:7;4356:6;4345:9;4341:22;4311:62;:::i;:::-;4301:72;;4163:220;3707:683;;;;;;;:::o;4396:401::-;;;4518:2;4506:9;4497:7;4493:23;4489:32;4486:2;;;4534:1;4531;4524:12;4486:2;4577:1;4602:53;4647:7;4638:6;4627:9;4623:22;4602:53;:::i;:::-;4592:63;;4548:117;4704:2;4730:50;4772:7;4763:6;4752:9;4748:22;4730:50;:::i;:::-;4720:60;;4675:115;4476:321;;;;;:::o;4803:407::-;;;4928:2;4916:9;4907:7;4903:23;4899:32;4896:2;;;4944:1;4941;4934:12;4896:2;4987:1;5012:53;5057:7;5048:6;5037:9;5033:22;5012:53;:::i;:::-;5002:63;;4958:117;5114:2;5140:53;5185:7;5176:6;5165:9;5161:22;5140:53;:::i;:::-;5130:63;;5085:118;4886:324;;;;;:::o;5216:733::-;;;;;5411:2;5399:9;5390:7;5386:23;5382:32;5379:2;;;5427:1;5424;5417:12;5379:2;5498:1;5487:9;5483:17;5470:31;5528:18;5520:6;5517:30;5514:2;;;5560:1;5557;5550:12;5514:2;5596:80;5668:7;5659:6;5648:9;5644:22;5596:80;:::i;:::-;5578:98;;;;5441:245;5753:2;5742:9;5738:18;5725:32;5784:18;5776:6;5773:30;5770:2;;;5816:1;5813;5806:12;5770:2;5852:80;5924:7;5915:6;5904:9;5900:22;5852:80;:::i;:::-;5834:98;;;;5696:246;5369:580;;;;;;;:::o;5955:284::-;;6074:2;6062:9;6053:7;6049:23;6045:32;6042:2;;;6090:1;6087;6080:12;6042:2;6133:1;6158:64;6214:7;6205:6;6194:9;6190:22;6158:64;:::i;:::-;6148:74;;6104:128;6032:207;;;;:::o;6245:260::-;;6352:2;6340:9;6331:7;6327:23;6323:32;6320:2;;;6368:1;6365;6358:12;6320:2;6411:1;6436:52;6480:7;6471:6;6460:9;6456:22;6436:52;:::i;:::-;6426:62;;6382:116;6310:195;;;;:::o;6511:282::-;;6629:2;6617:9;6608:7;6604:23;6600:32;6597:2;;;6645:1;6642;6635:12;6597:2;6688:1;6713:63;6768:7;6759:6;6748:9;6744:22;6713:63;:::i;:::-;6703:73;;6659:127;6587:206;;;;:::o;6799:262::-;;6907:2;6895:9;6886:7;6882:23;6878:32;6875:2;;;6923:1;6920;6913:12;6875:2;6966:1;6991:53;7036:7;7027:6;7016:9;7012:22;6991:53;:::i;:::-;6981:63;;6937:117;6865:196;;;;:::o;7067:407::-;;;7192:2;7180:9;7171:7;7167:23;7163:32;7160:2;;;7208:1;7205;7198:12;7160:2;7251:1;7276:53;7321:7;7312:6;7301:9;7297:22;7276:53;:::i;:::-;7266:63;;7222:117;7378:2;7404:53;7449:7;7440:6;7429:9;7425:22;7404:53;:::i;:::-;7394:63;;7349:118;7150:324;;;;;:::o;7480:118::-;7567:24;7585:5;7567:24;:::i;:::-;7562:3;7555:37;7545:53;;:::o;7604:157::-;7709:45;7729:24;7747:5;7729:24;:::i;:::-;7709:45;:::i;:::-;7704:3;7697:58;7687:74;;:::o;7767:109::-;7848:21;7863:5;7848:21;:::i;:::-;7843:3;7836:34;7826:50;;:::o;7882:118::-;7969:24;7987:5;7969:24;:::i;:::-;7964:3;7957:37;7947:53;;:::o;8006:157::-;8111:45;8131:24;8149:5;8131:24;:::i;:::-;8111:45;:::i;:::-;8106:3;8099:58;8089:74;;:::o;8169:360::-;;8283:38;8315:5;8283:38;:::i;:::-;8337:70;8400:6;8395:3;8337:70;:::i;:::-;8330:77;;8416:52;8461:6;8456:3;8449:4;8442:5;8438:16;8416:52;:::i;:::-;8493:29;8515:6;8493:29;:::i;:::-;8488:3;8484:39;8477:46;;8259:270;;;;;:::o;8535:373::-;;8667:38;8699:5;8667:38;:::i;:::-;8721:88;8802:6;8797:3;8721:88;:::i;:::-;8714:95;;8818:52;8863:6;8858:3;8851:4;8844:5;8840:16;8818:52;:::i;:::-;8895:6;8890:3;8886:16;8879:23;;8643:265;;;;;:::o;8936:841::-;;9074:5;9068:12;9103:36;9129:9;9103:36;:::i;:::-;9155:88;9236:6;9231:3;9155:88;:::i;:::-;9148:95;;9274:1;9263:9;9259:17;9290:1;9285:137;;;;9436:1;9431:340;;;;9252:519;;9285:137;9369:4;9365:9;9354;9350:25;9345:3;9338:38;9405:6;9400:3;9396:16;9389:23;;9285:137;;9431:340;9498:37;9529:5;9498:37;:::i;:::-;9557:1;9571:154;9585:6;9582:1;9579:13;9571:154;;;9659:7;9653:14;9649:1;9644:3;9640:11;9633:35;9709:1;9700:7;9696:15;9685:26;;9607:4;9604:1;9600:12;9595:17;;9571:154;;;9754:6;9749:3;9745:16;9738:23;;9438:333;;9252:519;;9041:736;;;;;;:::o;9783:364::-;;9899:39;9932:5;9899:39;:::i;:::-;9954:71;10018:6;10013:3;9954:71;:::i;:::-;9947:78;;10034:52;10079:6;10074:3;10067:4;10060:5;10056:16;10034:52;:::i;:::-;10111:29;10133:6;10111:29;:::i;:::-;10106:3;10102:39;10095:46;;9875:272;;;;;:::o;10153:302::-;;10316:66;10380:1;10375:3;10316:66;:::i;:::-;10309:73;;10412:7;10408:1;10403:3;10399:11;10392:28;10446:2;10441:3;10437:12;10430:19;;10299:156;;;:::o;10461:306::-;;10624:66;10688:1;10683:3;10624:66;:::i;:::-;10617:73;;10720:11;10716:1;10711:3;10707:11;10700:32;10758:2;10753:3;10749:12;10742:19;;10607:160;;;:::o;10773:301::-;;10936:66;11000:1;10995:3;10936:66;:::i;:::-;10929:73;;11032:6;11028:1;11023:3;11019:11;11012:27;11065:2;11060:3;11056:12;11049:19;;10919:155;;;:::o;11080:308::-;;11243:67;11307:2;11302:3;11243:67;:::i;:::-;11236:74;;11340:12;11336:1;11331:3;11327:11;11320:33;11379:2;11374:3;11370:12;11363:19;;11226:162;;;:::o;11394:304::-;;11557:66;11621:1;11616:3;11557:66;:::i;:::-;11550:73;;11653:9;11649:1;11644:3;11640:11;11633:30;11689:2;11684:3;11680:12;11673:19;;11540:158;;;:::o;11704:305::-;;11867:66;11931:1;11926:3;11867:66;:::i;:::-;11860:73;;11963:10;11959:1;11954:3;11950:11;11943:31;12000:2;11995:3;11991:12;11984:19;;11850:159;;;:::o;12015:304::-;;12178:66;12242:1;12237:3;12178:66;:::i;:::-;12171:73;;12274:9;12270:1;12265:3;12261:11;12254:30;12310:2;12305:3;12301:12;12294:19;;12161:158;;;:::o;12325:301::-;;12488:66;12552:1;12547:3;12488:66;:::i;:::-;12481:73;;12584:6;12580:1;12575:3;12571:11;12564:27;12617:2;12612:3;12608:12;12601:19;;12471:155;;;:::o;12632:302::-;;12795:66;12859:1;12854:3;12795:66;:::i;:::-;12788:73;;12891:7;12887:1;12882:3;12878:11;12871:28;12925:2;12920:3;12916:12;12909:19;;12778:156;;;:::o;12940:317::-;;13103:67;13167:2;13162:3;13103:67;:::i;:::-;13096:74;;13200:21;13196:1;13191:3;13187:11;13180:42;13248:2;13243:3;13239:12;13232:19;;13086:171;;;:::o;13263:308::-;;13426:67;13490:2;13485:3;13426:67;:::i;:::-;13419:74;;13523:12;13519:1;13514:3;13510:11;13503:33;13562:2;13557:3;13553:12;13546:19;;13409:162;;;:::o;13577:306::-;;13740:66;13804:1;13799:3;13740:66;:::i;:::-;13733:73;;13836:11;13832:1;13827:3;13823:11;13816:32;13874:2;13869:3;13865:12;13858:19;;13723:160;;;:::o;13889:309::-;;14052:67;14116:2;14111:3;14052:67;:::i;:::-;14045:74;;14149:13;14145:1;14140:3;14136:11;14129:34;14189:2;14184:3;14180:12;14173:19;;14035:163;;;:::o;14204:304::-;;14367:66;14431:1;14426:3;14367:66;:::i;:::-;14360:73;;14463:9;14459:1;14454:3;14450:11;14443:30;14499:2;14494:3;14490:12;14483:19;;14350:158;;;:::o;14514:118::-;14601:24;14619:5;14601:24;:::i;:::-;14596:3;14589:37;14579:53;;:::o;14638:157::-;14743:45;14763:24;14781:5;14763:24;:::i;:::-;14743:45;:::i;:::-;14738:3;14731:58;14721:74;;:::o;14801:538::-;;14984:75;15055:3;15046:6;14984:75;:::i;:::-;15084:2;15079:3;15075:12;15068:19;;15097:75;15168:3;15159:6;15097:75;:::i;:::-;15197:2;15192:3;15188:12;15181:19;;15210:75;15281:3;15272:6;15210:75;:::i;:::-;15310:2;15305:3;15301:12;15294:19;;15330:3;15323:10;;14973:366;;;;;;:::o;15345:397::-;;15500:75;15571:3;15562:6;15500:75;:::i;:::-;15600:2;15595:3;15591:12;15584:19;;15613:75;15684:3;15675:6;15613:75;:::i;:::-;15713:2;15708:3;15704:12;15697:19;;15733:3;15726:10;;15489:253;;;;;:::o;15748:421::-;;15943:90;16029:3;16020:6;15943:90;:::i;:::-;15936:97;;16050:93;16139:3;16130:6;16050:93;:::i;:::-;16043:100;;16160:3;16153:10;;15925:244;;;;;:::o;16175:222::-;;16306:2;16295:9;16291:18;16283:26;;16319:71;16387:1;16376:9;16372:17;16363:6;16319:71;:::i;:::-;16273:124;;;;:::o;16403:640::-;;16636:3;16625:9;16621:19;16613:27;;16650:71;16718:1;16707:9;16703:17;16694:6;16650:71;:::i;:::-;16731:72;16799:2;16788:9;16784:18;16775:6;16731:72;:::i;:::-;16813;16881:2;16870:9;16866:18;16857:6;16813:72;:::i;:::-;16932:9;16926:4;16922:20;16917:2;16906:9;16902:18;16895:48;16960:76;17031:4;17022:6;16960:76;:::i;:::-;16952:84;;16603:440;;;;;;;:::o;17049:210::-;;17174:2;17163:9;17159:18;17151:26;;17187:65;17249:1;17238:9;17234:17;17225:6;17187:65;:::i;:::-;17141:118;;;;:::o;17265:222::-;;17396:2;17385:9;17381:18;17373:26;;17409:71;17477:1;17466:9;17462:17;17453:6;17409:71;:::i;:::-;17363:124;;;;:::o;17493:313::-;;17644:2;17633:9;17629:18;17621:26;;17693:9;17687:4;17683:20;17679:1;17668:9;17664:17;17657:47;17721:78;17794:4;17785:6;17721:78;:::i;:::-;17713:86;;17611:195;;;;:::o;17812:419::-;;18016:2;18005:9;18001:18;17993:26;;18065:9;18059:4;18055:20;18051:1;18040:9;18036:17;18029:47;18093:131;18219:4;18093:131;:::i;:::-;18085:139;;17983:248;;;:::o;18237:419::-;;18441:2;18430:9;18426:18;18418:26;;18490:9;18484:4;18480:20;18476:1;18465:9;18461:17;18454:47;18518:131;18644:4;18518:131;:::i;:::-;18510:139;;18408:248;;;:::o;18662:419::-;;18866:2;18855:9;18851:18;18843:26;;18915:9;18909:4;18905:20;18901:1;18890:9;18886:17;18879:47;18943:131;19069:4;18943:131;:::i;:::-;18935:139;;18833:248;;;:::o;19087:419::-;;19291:2;19280:9;19276:18;19268:26;;19340:9;19334:4;19330:20;19326:1;19315:9;19311:17;19304:47;19368:131;19494:4;19368:131;:::i;:::-;19360:139;;19258:248;;;:::o;19512:419::-;;19716:2;19705:9;19701:18;19693:26;;19765:9;19759:4;19755:20;19751:1;19740:9;19736:17;19729:47;19793:131;19919:4;19793:131;:::i;:::-;19785:139;;19683:248;;;:::o;19937:419::-;;20141:2;20130:9;20126:18;20118:26;;20190:9;20184:4;20180:20;20176:1;20165:9;20161:17;20154:47;20218:131;20344:4;20218:131;:::i;:::-;20210:139;;20108:248;;;:::o;20362:419::-;;20566:2;20555:9;20551:18;20543:26;;20615:9;20609:4;20605:20;20601:1;20590:9;20586:17;20579:47;20643:131;20769:4;20643:131;:::i;:::-;20635:139;;20533:248;;;:::o;20787:419::-;;20991:2;20980:9;20976:18;20968:26;;21040:9;21034:4;21030:20;21026:1;21015:9;21011:17;21004:47;21068:131;21194:4;21068:131;:::i;:::-;21060:139;;20958:248;;;:::o;21212:419::-;;21416:2;21405:9;21401:18;21393:26;;21465:9;21459:4;21455:20;21451:1;21440:9;21436:17;21429:47;21493:131;21619:4;21493:131;:::i;:::-;21485:139;;21383:248;;;:::o;21637:419::-;;21841:2;21830:9;21826:18;21818:26;;21890:9;21884:4;21880:20;21876:1;21865:9;21861:17;21854:47;21918:131;22044:4;21918:131;:::i;:::-;21910:139;;21808:248;;;:::o;22062:419::-;;22266:2;22255:9;22251:18;22243:26;;22315:9;22309:4;22305:20;22301:1;22290:9;22286:17;22279:47;22343:131;22469:4;22343:131;:::i;:::-;22335:139;;22233:248;;;:::o;22487:419::-;;22691:2;22680:9;22676:18;22668:26;;22740:9;22734:4;22730:20;22726:1;22715:9;22711:17;22704:47;22768:131;22894:4;22768:131;:::i;:::-;22760:139;;22658:248;;;:::o;22912:419::-;;23116:2;23105:9;23101:18;23093:26;;23165:9;23159:4;23155:20;23151:1;23140:9;23136:17;23129:47;23193:131;23319:4;23193:131;:::i;:::-;23185:139;;23083:248;;;:::o;23337:419::-;;23541:2;23530:9;23526:18;23518:26;;23590:9;23584:4;23580:20;23576:1;23565:9;23561:17;23554:47;23618:131;23744:4;23618:131;:::i;:::-;23610:139;;23508:248;;;:::o;23762:222::-;;23893:2;23882:9;23878:18;23870:26;;23906:71;23974:1;23963:9;23959:17;23950:6;23906:71;:::i;:::-;23860:124;;;;:::o;23990:283::-;;24056:2;24050:9;24040:19;;24098:4;24090:6;24086:17;24205:6;24193:10;24190:22;24169:18;24157:10;24154:34;24151:62;24148:2;;;24216:18;;:::i;:::-;24148:2;24256:10;24252:2;24245:22;24030:243;;;;:::o;24279:331::-;;24430:18;24422:6;24419:30;24416:2;;;24452:18;;:::i;:::-;24416:2;24537:4;24533:9;24526:4;24518:6;24514:17;24510:33;24502:41;;24598:4;24592;24588:15;24580:23;;24345:265;;;:::o;24616:140::-;;24687:3;24679:11;;24710:3;24707:1;24700:14;24744:4;24741:1;24731:18;24723:26;;24669:87;;;:::o;24762:98::-;;24847:5;24841:12;24831:22;;24820:40;;;:::o;24866:99::-;;24952:5;24946:12;24936:22;;24925:40;;;:::o;24971:168::-;;25088:6;25083:3;25076:19;25128:4;25123:3;25119:14;25104:29;;25066:73;;;;:::o;25145:147::-;;25283:3;25268:18;;25258:34;;;;:::o;25298:169::-;;25416:6;25411:3;25404:19;25456:4;25451:3;25447:14;25432:29;;25394:73;;;;:::o;25473:305::-;;25532:20;25550:1;25532:20;:::i;:::-;25527:25;;25566:20;25584:1;25566:20;:::i;:::-;25561:25;;25720:1;25652:66;25648:74;25645:1;25642:81;25639:2;;;25726:18;;:::i;:::-;25639:2;25770:1;25767;25763:9;25756:16;;25517:261;;;;:::o;25784:237::-;;25841:18;25857:1;25841:18;:::i;:::-;25836:23;;25873:18;25889:1;25873:18;:::i;:::-;25868:23;;25963:1;25957:4;25953:12;25950:1;25947:19;25944:2;;;25969:18;;:::i;:::-;25944:2;26013:1;26010;26006:9;25999:16;;25826:195;;;;:::o;26027:185::-;;26084:20;26102:1;26084:20;:::i;:::-;26079:25;;26118:20;26136:1;26118:20;:::i;:::-;26113:25;;26157:1;26147:2;;26162:18;;:::i;:::-;26147:2;26204:1;26201;26197:9;26192:14;;26069:143;;;;:::o;26218:848::-;;;26310:6;26301:15;;26334:5;26325:14;;26348:712;26369:1;26359:8;26356:15;26348:712;;;26464:4;26459:3;26455:14;26449:4;26446:24;26443:2;;;26473:18;;:::i;:::-;26443:2;26523:1;26513:8;26509:16;26506:2;;;26938:4;26931:5;26927:16;26918:25;;26506:2;26988:4;26982;26978:15;26970:23;;27018:32;27041:8;27018:32;:::i;:::-;27006:44;;26348:712;;;26291:775;;;;;;;:::o;27072:285::-;;27156:23;27174:4;27156:23;:::i;:::-;27148:31;;27200:27;27218:8;27200:27;:::i;:::-;27188:39;;27246:104;27283:66;27273:8;27267:4;27246:104;:::i;:::-;27237:113;;27138:219;;;;:::o;27363:1073::-;;27608:8;27598:2;;27629:1;27620:10;;27631:5;;27598:2;27657:4;27647:2;;27674:1;27665:10;;27676:5;;27647:2;27743:4;27791:1;27786:27;;;;27827:1;27822:191;;;;27736:277;;27786:27;27804:1;27795:10;;27806:5;;;27822:191;27867:3;27857:8;27854:17;27851:2;;;27874:18;;:::i;:::-;27851:2;27923:8;27920:1;27916:16;27907:25;;27958:3;27951:5;27948:14;27945:2;;;27965:18;;:::i;:::-;27945:2;27998:5;;;27736:277;;28122:2;28112:8;28109:16;28103:3;28097:4;28094:13;28090:36;28072:2;28062:8;28059:16;28054:2;28048:4;28045:12;28041:35;28025:111;28022:2;;;28178:8;28172:4;28168:19;28159:28;;28213:3;28206:5;28203:14;28200:2;;;28220:18;;:::i;:::-;28200:2;28253:5;;28022:2;28293:42;28331:3;28321:8;28315:4;28312:1;28293:42;:::i;:::-;28278:57;;;;28367:4;28362:3;28358:14;28351:5;28348:25;28345:2;;;28376:18;;:::i;:::-;28345:2;28425:4;28418:5;28414:16;28405:25;;27423:1013;;;;;;:::o;28442:348::-;;28505:20;28523:1;28505:20;:::i;:::-;28500:25;;28539:20;28557:1;28539:20;:::i;:::-;28534:25;;28727:1;28659:66;28655:74;28652:1;28649:81;28644:1;28637:9;28630:17;28626:105;28623:2;;;28734:18;;:::i;:::-;28623:2;28782:1;28779;28775:9;28764:20;;28490:300;;;;:::o;28796:191::-;;28856:20;28874:1;28856:20;:::i;:::-;28851:25;;28890:20;28908:1;28890:20;:::i;:::-;28885:25;;28929:1;28926;28923:8;28920:2;;;28934:18;;:::i;:::-;28920:2;28979:1;28976;28972:9;28964:17;;28841:146;;;;:::o;28993:96::-;;29059:24;29077:5;29059:24;:::i;:::-;29048:35;;29038:51;;;:::o;29095:90::-;;29172:5;29165:13;29158:21;29147:32;;29137:48;;;:::o;29191:77::-;;29257:5;29246:16;;29236:32;;;:::o;29274:149::-;;29350:66;29343:5;29339:78;29328:89;;29318:105;;;:::o;29429:126::-;;29506:42;29499:5;29495:54;29484:65;;29474:81;;;:::o;29561:77::-;;29627:5;29616:16;;29606:32;;;:::o;29644:86::-;;29719:4;29712:5;29708:16;29697:27;;29687:43;;;:::o;29736:154::-;29820:6;29815:3;29810;29797:30;29882:1;29873:6;29868:3;29864:16;29857:27;29787:103;;;:::o;29896:307::-;29964:1;29974:113;29988:6;29985:1;29982:13;29974:113;;;30073:1;30068:3;30064:11;30058:18;30054:1;30049:3;30045:11;30038:39;30010:2;30007:1;30003:10;29998:15;;29974:113;;;30105:6;30102:1;30099:13;30096:2;;;30185:1;30176:6;30171:3;30167:16;30160:27;30096:2;29945:258;;;;:::o;30209:171::-;;30271:24;30289:5;30271:24;:::i;:::-;30262:33;;30317:4;30310:5;30307:15;30304:2;;;30325:18;;:::i;:::-;30304:2;30372:1;30365:5;30361:13;30354:20;;30252:128;;;:::o;30386:320::-;;30467:1;30461:4;30457:12;30447:22;;30514:1;30508:4;30504:12;30535:18;30525:2;;30591:4;30583:6;30579:17;30569:27;;30525:2;30653;30645:6;30642:14;30622:18;30619:38;30616:2;;;30672:18;;:::i;:::-;30616:2;30437:269;;;;:::o;30712:233::-;;30774:24;30792:5;30774:24;:::i;:::-;30765:33;;30820:66;30813:5;30810:77;30807:2;;;30890:18;;:::i;:::-;30807:2;30937:1;30930:5;30926:13;30919:20;;30755:190;;;:::o;30951:100::-;;31019:26;31039:5;31019:26;:::i;:::-;31008:37;;30998:53;;;:::o;31057:79::-;;31125:5;31114:16;;31104:32;;;:::o;31142:94::-;;31210:20;31224:5;31210:20;:::i;:::-;31199:31;;31189:47;;;:::o;31242:79::-;;31310:5;31299:16;;31289:32;;;:::o;31327:180::-;31375:77;31372:1;31365:88;31472:4;31469:1;31462:15;31496:4;31493:1;31486:15;31513:180;31561:77;31558:1;31551:88;31658:4;31655:1;31648:15;31682:4;31679:1;31672:15;31699:180;31747:77;31744:1;31737:88;31844:4;31841:1;31834:15;31868:4;31865:1;31858:15;31885:180;31933:77;31930:1;31923:88;32030:4;32027:1;32020:15;32054:4;32051:1;32044:15;32071:102;;32163:2;32159:7;32154:2;32147:5;32143:14;32139:28;32129:38;;32119:54;;;:::o;32179:94::-;;32260:5;32256:2;32252:14;32231:35;;32221:52;;;:::o;32279:102::-;;32368:5;32365:1;32361:13;32340:34;;32330:51;;;:::o;32387:122::-;32460:24;32478:5;32460:24;:::i;:::-;32453:5;32450:35;32440:2;;32499:1;32496;32489:12;32440:2;32430:79;:::o;32515:116::-;32585:21;32600:5;32585:21;:::i;:::-;32578:5;32575:32;32565:2;;32621:1;32618;32611:12;32565:2;32555:76;:::o;32637:122::-;32710:24;32728:5;32710:24;:::i;:::-;32703:5;32700:35;32690:2;;32749:1;32746;32739:12;32690:2;32680:79;:::o;32765:120::-;32837:23;32854:5;32837:23;:::i;:::-;32830:5;32827:34;32817:2;;32875:1;32872;32865:12;32817:2;32807:78;:::o;32891:122::-;32964:24;32982:5;32964:24;:::i;:::-;32957:5;32954:35;32944:2;;33003:1;33000;32993:12;32944:2;32934:79;:::o

Swarm Source

ipfs://fad6a40f64a0d12643eace2cde0ce5076156d99af8a473f28b73b315818f5855
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.