ETH Price: $3,253.21 (+2.45%)
Gas: 3 Gwei

Token

Derivations (ALGOV)
 

Overview

Max Total Supply

64 ALGOV

Holders

36

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
prgsv1.eth
Balance
1 ALGOV
0x37cfb5a9573b225f2d869845b8bba7c367149650
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
AlgocracyNFT

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 2: AlgocracyNFT.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8;

import "./iAlgocracyNFT.sol";

/// @title Algocracy NFT
/// @author jolan.eth

interface ERC721TokenReceiver {
    function onERC721Received(
        address operator, address from, uint256 tokenId, bytes calldata data
    ) external returns (bytes4);
}

contract AlgocracyNFT {
    uint256 public REGISTRY_IDENTIFIER;
    
    iAlgocracyNFT public DAO;
    iAlgocracyNFT public Provider;

    uint256 supply;
    mapping (uint256 => address) owners;
    mapping (address => uint256) balances;
    
    mapping (uint256 => address) approvals;
    mapping (address => mapping(address => bool)) operatorApprovals;

    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    constructor(
        address _DAO,
        address _Provider,
        uint256 _REGISTRY_IDENTIFIER
    ) {
        DAO = iAlgocracyNFT(_DAO);
        Provider = iAlgocracyNFT(_Provider);
        REGISTRY_IDENTIFIER = _REGISTRY_IDENTIFIER;
    }

    function owner()
    public view returns (address) {
        iAlgocracyNFT CollectionNFT = iAlgocracyNFT(DAO.CollectionNFT());
        return CollectionNFT.ownerOf(REGISTRY_IDENTIFIER);
    }

    function name()
    public view returns (string memory) {
        iAlgocracyNFT CollectionNFT = iAlgocracyNFT(DAO.CollectionNFT());
        return CollectionNFT.getCollectionData(REGISTRY_IDENTIFIER).name;
    }

    function symbol()
    public view returns (string memory) {
        iAlgocracyNFT CollectionNFT = iAlgocracyNFT(DAO.CollectionNFT());
        return CollectionNFT.symbol();
    }

    function maxSupply()
    public view returns (uint256) {
        iAlgocracyNFT CollectionNFT = iAlgocracyNFT(DAO.CollectionNFT());
        return CollectionNFT.getCollectionData(REGISTRY_IDENTIFIER).maxSupply;
    }

    function mintSequentialNFT(address to, uint256 quantity)
    public {
        iAlgocracyNFT CollectionNFT = iAlgocracyNFT(DAO.CollectionNFT());
        
        require(
            CollectionNFT.getCollectionContract(REGISTRY_IDENTIFIER).Prime == msg.sender,
            "AlgocracyNFT::mintNFT() - msg.sender is not the prime contract"
        );

        require(
            supply < maxSupply(),
            "AlgocracyNFT::mintNFT() - supply exceeds maxSupply"
        );

        _mintSequential(to, quantity);
    }

    function mintRandomNFT(address to, uint256[] memory tokenIds)
    public {
        iAlgocracyNFT CollectionNFT = iAlgocracyNFT(DAO.CollectionNFT());
        
        require(
            CollectionNFT.getCollectionContract(REGISTRY_IDENTIFIER).Prime == msg.sender,
            "AlgocracyNFT::mintNFT() - msg.sender is not the prime contract"
        );

        require(
            supply < maxSupply(),
            "AlgocracyNFT::mintNFT() - supply exceeds maxSupply"
        );

        _mintRandom(to, tokenIds);
    }

    function supportsInterface(bytes4 interfaceId)
    public pure returns (bool) {
        return interfaceId == 0x80ac58cd || interfaceId == 0x5b5e139f;
    }

    function tokenURI(uint256 id)
    public view returns (string memory) {
        require(
            exist(id),
            "AlgocracyNFT::tokenUri() - id do not exist"
        );

        return Provider.generateMetadata(id);
    }

    function exist(uint256 id)
    public view returns (bool) {
        return owners[id] != address(0);
    }

    function totalSupply()
    public view returns (uint256) {
        return supply == 0 ? 0 : supply - 1;
    }

    function balanceOf(address _owner)
    public view returns (uint256) {
        require(
            _owner != address(0),
            "AlgocracyNFT::balanceOf() - _owner is address(0)"
        );

        return balances[_owner];
    }

    function ownerOf(uint256 id)
    public view returns (address) {
        require(
            exist(id),
            "AlgocracyNFT::ownerOf() - id do not exist"
        );

        return owners[id];
    }

    function isApprovedForAll(address _owner, address operator)
    public view returns (bool) {
        return operatorApprovals[_owner][operator];
    }

    function getApproved(uint256 id)
    public view returns (address) {
        require(
            exist(id),
            "AlgocracyNFT::getApproved() - id do not exist"
        );

        return approvals[id];
    }

    function approve(address to, uint256 id)
    public {
        address _owner = owners[id];
        require(
            to != _owner,
            "AlgocracyNFT::approve() - to is _owner"
        );
        require(
            _owner == msg.sender ||
            operatorApprovals[_owner][msg.sender],
            "AlgocracyNFT::approve() - msg.sender is not _owner or approved"
        );

        approvals[id] = to;
        emit Approval(_owner, to, id);
    }

    function setApprovalForAll(address operator, bool approved)
    public {
        require(
            operator != msg.sender,
            "AlgocracyNFT::setApprovalForAll() - msg.sender is operator"
        );

        operatorApprovals[msg.sender][operator] = approved;
        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function transferFrom(address from, address to, uint256 id)
    public {
        address _owner = owners[id];
        
        require(
            exist(id),
            "AlgocracyNFT::transferFrom() - id do not exist"
        );

        require(
            msg.sender == _owner ||
            msg.sender == approvals[id] ||
            operatorApprovals[_owner][msg.sender],
            "AlgocracyNFT::transferFrom() - msg.sender is not _owner or approved"
        );

        _transfer(from, to, id);
    }

    function safeTransferFrom(address from, address to, uint256 id)
    public {
        address _owner = owners[id];
        
        require(
            exist(id),
            "AlgocracyNFT::safeTransferFrom() - id do not exist"
        );

        require(
            msg.sender == _owner ||
            msg.sender == approvals[id] ||
            operatorApprovals[_owner][msg.sender],
            "AlgocracyNFT::safeTransferFrom() - msg.sender is not _owner or approved"
        );

        _safeTransfer(from, to, id, '');
    }

    function safeTransferFrom(address from, address to, uint256 id, bytes memory data)
    public {
        address _owner = owners[id];

        require(
            exist(id),
            "AlgocracyNFT::safeTransferFrom() - id do not exist"
        );
        
        require(
            msg.sender == _owner ||
            msg.sender == approvals[id] ||
            operatorApprovals[_owner][msg.sender],
            "AlgocracyNFT::safeTransferFrom() - msg.sender is not _owner or approved"
        );

        _safeTransfer(from, to, id, data);
    }

    function _mintSequential(address to, uint256 quantity)
    private {
        uint256 i = 0;
        if (supply == 0) supply = 1;
        unchecked {
            while (i < quantity) {
                balances[to]++;
                owners[supply] = to;
                emit Transfer(address(this), to, supply++);
                i++;
            }
        }
    }

    function _mintRandom(address to, uint256[] memory tokenIds)
    private {
        uint256 i = 0;
        if (supply == 0) supply = 1;
        unchecked {
            while (i < tokenIds.length) {
                balances[to]++;
                owners[tokenIds[i]] = to;
                emit Transfer(address(this), to, tokenIds[i]);
                supply++;
                i++;
            }
        }
    }

    function _transfer(address from, address to, uint256 id)
    private {
        require(
            address(0) != to,
            "AlgocracyNFT::_transferFrom() - to is address(0)"
        );

        approve(address(0), id);
        balances[from]--;
        balances[to]++;
        owners[id] = to;
        
        emit Transfer(from, to, id);
    }

    function _safeTransfer(address from, address to, uint256 id, bytes memory data)
    private {
        _transfer(from, to, id);
        
        require(
            _checkOnERC721Received(from, to, id, data),
            "AlgocracyNFT::_safeTransfer() - to is not ERC721 receiver"
        );
    }

    function _checkOnERC721Received(address from, address to, uint256 id, bytes memory _data)
    internal returns (bool) {
        uint256 size;

        assembly {
            size := extcodesize(to)
        }

        if (size > 0)
            try ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, _data) returns (bytes4 retval) {
                return retval == ERC721TokenReceiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) revert("error ERC721Receiver");
                else assembly {
                        revert(add(32, reason), mload(reason))
                    }
            }
        else return true;
    }
}

File 2 of 2: iAlgocracyNFT.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8;

interface iAlgocracyNFT {
    /// AlgocracyDAO::
    function VRFConsumer() external view returns (address);
    
    function Deployer() external view returns (address);
    function NFTFactory() external view returns (address);
    function PrimeFactory() external view returns (address);

    function PassNFT() external view returns (address);
    function CollectionNFT() external view returns (address);
    function RandomNFT() external view returns (address);

    function PassProvider() external view returns (address);
    function CollectionProvider() external view returns (address);

    function chain() external view returns (uint256);

    /// AlgocracyPass::
    function LOCK() external view returns (bool);
    function ACCESS_LEVEL_CORE() external view returns (uint256);
    function ACCESS_LEVEL_VETOER() external view returns (uint256);
    function ACCESS_LEVEL_OPERATOR() external view returns (uint256);
    function ACCESS_LEVEL_BASE() external view returns (uint256);
    function getAccessLevel(uint256) external view returns (uint256);
    function mintPassFromCollection(address, uint256) external;
    function mintPassFromEvent(address) external;
    function mintPassFromCore(address) external;
    
    /// AlgocracyCollection::
    struct Meta{string name; string cover; string description; uint256 maxSupply; uint256 blockNumber;}
    struct Mint{bool isActive;bool isRandom;bool isAllowListed;uint256 maxQuantity;uint256 price;}
    struct Module{address NFT; address Prime; address Provider;}
    function getCollectionRegistryLength() external view returns (uint256);
    function getCollectionData(uint256) external view returns (Meta memory);
    function getCollectionState(uint256) external view returns (Mint memory);
    function getCollectionContract(uint256) external view returns (Module memory);
    function setCollectionStateAllowListInternal(uint256, bool) external;
    function setCollectionStateRandomInternal(uint256, bool) external;
    function mintCollectionNFT(
        address, address, address, address,
        string memory, string memory, string memory,
        uint256
    ) external;

    /// AlgocracyRandom
    struct Random {uint256 id;uint256 provableRandom;}
    function FIXED_TIC() external view returns (uint16);
    function FIXED_GAS() external view returns (uint32);
    function FIXED_QTY() external view returns (uint32);
    function getRandomRegistry(uint256) external view returns (Random memory);
    function mintRandom(uint256, uint256) external;

    /// AlgocracyFactory::
    function deployAlgocracyNFT(address, uint256) external returns (address);
    function deployAlgocracyPrime(uint256) external returns (address);

    /// AlgocracyERC721::
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function maxSupply() external view returns (uint256);
    function totalSupply() external view returns (uint256);
    function exist(uint256) external view returns (bool);
    function balanceOf(address) external view returns (uint256);
    function ownerOf(uint256) external view returns (address);
    function ownedBy(address) external view returns (uint256);
    function mintSequentialNFT(address, uint256) external;
    function mintRandomNFT(address, uint256[] memory) external;

    /// AlgocracyProvider::
    function generateMetadata(uint256 id) external view returns (string memory);

    /// AlgocracyUtils::Regex
    function matches(string memory) external pure returns (bool);

    /// AlgocracyVRF::
    function getRequestConfig() external view returns (uint16, uint32, bytes32[] memory);
    function requestRandomWords(bytes32, uint64, uint16, uint32, uint32 ) external returns (uint256);
    function createSubscription() external returns (uint64);
    function getSubscription(uint64) external view returns (uint96, uint64, address, address[] memory);
    function requestSubscriptionOwnerTransfer(uint64, address) external;
    function acceptSubscriptionOwnerTransfer(uint64) external;
    function addConsumer(uint64, address) external;
    function removeConsumer(uint64, address) external;
    function cancelSubscription(uint64, address) external;
    function pendingRequestExists(uint64) external view returns (bool);
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_DAO","type":"address"},{"internalType":"address","name":"_Provider","type":"address"},{"internalType":"uint256","name":"_REGISTRY_IDENTIFIER","type":"uint256"}],"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":"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"},{"inputs":[],"name":"DAO","outputs":[{"internalType":"contract iAlgocracyNFT","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Provider","outputs":[{"internalType":"contract iAlgocracyNFT","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REGISTRY_IDENTIFIER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","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":"id","type":"uint256"}],"name":"exist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"mintRandomNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mintSequentialNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","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":"id","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":"id","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":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","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":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162003973380380620039738339818101604052810190620000379190620000f7565b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600081905550505050620001ca565b600081519050620000da8162000196565b92915050565b600081519050620000f181620001b0565b92915050565b60008060006060848603121562000113576200011262000191565b5b60006200012386828701620000c9565b93505060206200013686828701620000c9565b92505060406200014986828701620000e0565b9150509250925092565b6000620001608262000167565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b620001a18162000153565b8114620001ad57600080fd5b50565b620001bb8162000187565b8114620001c757600080fd5b50565b61379980620001da6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063785ceabd116100b85780639b959ddb1161007c5780639b959ddb14610377578063a22cb46514610395578063b88d4fde146103b1578063c87b56dd146103cd578063d5abeb01146103fd578063e985e9c51461041b57610142565b8063785ceabd146102e35780638da5cb5b146102ff57806395d89b411461031d578063989b0bd51461033b57806398fabd3a1461035957610142565b806323b872dd1161010a57806323b872dd146101ff57806342842e0e1461021b5780634ebbc92a146102375780634eccf1ab146102675780636352211e1461028357806370a08231146102b357610142565b806301ffc9a71461014757806306fdde0314610177578063081812fc14610195578063095ea7b3146101c557806318160ddd146101e1575b600080fd5b610161600480360381019061015c9190612783565b61044b565b60405161016e9190612c0e565b60405180910390f35b61017f6104ad565b60405161018c9190612c44565b60405180910390f35b6101af60048036038101906101aa919061289c565b6105ed565b6040516101bc9190612ba7565b60405180910390f35b6101df60048036038101906101da9190612743565b610672565b005b6101e96108ca565b6040516101f69190612e66565b60405180910390f35b610219600480360381019061021491906125d1565b6108f1565b005b610235600480360381019061023091906125d1565b610aea565b005b610251600480360381019061024c919061289c565b610cf3565b60405161025e9190612c0e565b60405180910390f35b610281600480360381019061027c9190612743565b610d5f565b005b61029d6004803603810190610298919061289c565b610f59565b6040516102aa9190612ba7565b60405180910390f35b6102cd60048036038101906102c89190612537565b610fde565b6040516102da9190612e66565b60405180910390f35b6102fd60048036038101906102f891906126a7565b611096565b005b610307611290565b6040516103149190612ba7565b60405180910390f35b6103256113c6565b6040516103329190612c44565b60405180910390f35b6103436114f5565b6040516103509190612c29565b60405180910390f35b61036161151b565b60405161036e9190612c29565b60405180910390f35b61037f611541565b60405161038c9190612e66565b60405180910390f35b6103af60048036038101906103aa9190612703565b611547565b005b6103cb60048036038101906103c69190612624565b6116b3565b005b6103e760048036038101906103e2919061289c565b6118ae565b6040516103f49190612c44565b60405180910390f35b6104056119af565b6040516104129190612e66565b60405180910390f35b61043560048036038101906104309190612591565b611aee565b6040516104429190612c0e565b60405180910390f35b60006380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104a65750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab8aec376040518163ffffffff1660e01b815260040160206040518083038186803b15801561051957600080fd5b505afa15801561052d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105519190612564565b90508073ffffffffffffffffffffffffffffffffffffffff1663df6f5b206000546040518263ffffffff1660e01b815260040161058e9190612e66565b60006040518083038186803b1580156105a657600080fd5b505afa1580156105ba573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906105e39190612826565b6000015191505090565b60006105f882610cf3565b610637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062e90612cc6565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610719576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071090612d26565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806107d95750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080f90612de6565b60405180910390fd5b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600080600354146108e95760016003546108e49190612f6c565b6108ec565b60005b905090565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061093282610cf3565b610971576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096890612e06565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a0957506006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610a9a5750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad090612ce6565b60405180910390fd5b610ae4848484611b82565b50505050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610b2b82610cf3565b610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6190612ca6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610c0257506006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610c935750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc990612e26565b60405180910390fd5b610ced84848460405180602001604052806000815250611d59565b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab8aec376040518163ffffffff1660e01b815260040160206040518083038186803b158015610dc957600080fd5b505afa158015610ddd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e019190612564565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16636458bb506000546040518263ffffffff1660e01b8152600401610e559190612e66565b60606040518083038186803b158015610e6d57600080fd5b505afa158015610e81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea5919061286f565b6020015173ffffffffffffffffffffffffffffffffffffffff1614610eff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef690612d46565b60405180910390fd5b610f076119af565b60035410610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190612da6565b60405180910390fd5b610f548383611db5565b505050565b6000610f6482610cf3565b610fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9a90612e46565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561104f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104690612dc6565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab8aec376040518163ffffffff1660e01b815260040160206040518083038186803b15801561110057600080fd5b505afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111389190612564565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16636458bb506000546040518263ffffffff1660e01b815260040161118c9190612e66565b60606040518083038186803b1580156111a457600080fd5b505afa1580156111b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc919061286f565b6020015173ffffffffffffffffffffffffffffffffffffffff1614611236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122d90612d46565b60405180910390fd5b61123e6119af565b60035410611281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127890612da6565b60405180910390fd5b61128b8383611ef3565b505050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab8aec376040518163ffffffff1660e01b815260040160206040518083038186803b1580156112fb57600080fd5b505afa15801561130f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113339190612564565b90508073ffffffffffffffffffffffffffffffffffffffff16636352211e6000546040518263ffffffff1660e01b81526004016113709190612e66565b60206040518083038186803b15801561138857600080fd5b505afa15801561139c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c09190612564565b91505090565b60606000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab8aec376040518163ffffffff1660e01b815260040160206040518083038186803b15801561143257600080fd5b505afa158015611446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146a9190612564565b90508073ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156114b257600080fd5b505afa1580156114c6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906114ef91906127dd565b91505090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ad90612d86565b60405180910390fd5b80600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116a79190612c0e565b60405180910390a35050565b60006004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506116f483610cf3565b611733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172a90612ca6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117cb57506006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061185c5750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61189b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189290612e26565b60405180910390fd5b6118a785858585611d59565b5050505050565b60606118b982610cf3565b6118f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ef90612c66565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663015e1a0b836040518263ffffffff1660e01b81526004016119539190612e66565b60006040518083038186803b15801561196b57600080fd5b505afa15801561197f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906119a891906127dd565b9050919050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab8aec376040518163ffffffff1660e01b815260040160206040518083038186803b158015611a1a57600080fd5b505afa158015611a2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a529190612564565b90508073ffffffffffffffffffffffffffffffffffffffff1663df6f5b206000546040518263ffffffff1660e01b8152600401611a8f9190612e66565b60006040518083038186803b158015611aa757600080fd5b505afa158015611abb573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611ae49190612826565b6060015191505090565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff161415611bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be990612d06565b60405180910390fd5b611bfd600082610672565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611c4d9061308c565b9190505550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611ca2906130e7565b9190505550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611d64848484611b82565b611d7084848484612066565b611daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da690612d66565b60405180910390fd5b50505050565b6000806003541415611dca5760016003819055505b5b81811015611eee57600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055508260046000600354815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060036000815480929190600101919050558373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48080600101915050611dcb565b505050565b6000806003541415611f085760016003819055505b5b815181101561206157600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055508260046000848481518110611f7957611f7861315f565b5b6020026020010151815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818181518110611fe057611fdf61315f565b5b60200260200101518373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46003600081548092919060010191905055508080600101915050611f09565b505050565b600080843b905060008111156121d4578473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff1660e01b81526004016120b59493929190612bc2565b602060405180830381600087803b1580156120cf57600080fd5b505af192505050801561210057506040513d601f19601f820116820180604052508101906120fd91906127b0565b60015b612183573d8060008114612130576040519150601f19603f3d011682016040523d82523d6000602084013e612135565b606091505b5060008151141561217b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217290612c86565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614925050506121da565b60019150505b949350505050565b60006121f56121f084612ea6565b612e81565b90508083825260208201905082856020860282011115612218576122176131cc565b5b60005b85811015612248578161222e888261250d565b84526020840193506020830192505060018101905061221b565b5050509392505050565b600061226561226084612ed2565b612e81565b905082815260208101848484011115612281576122806131d1565b5b61228c84828561304a565b509392505050565b60006122a76122a284612f03565b612e81565b9050828152602081018484840111156122c3576122c26131d1565b5b6122ce848285613059565b509392505050565b6000813590506122e581613707565b92915050565b6000815190506122fa81613707565b92915050565b600082601f830112612315576123146131bd565b5b81356123258482602086016121e2565b91505092915050565b60008135905061233d8161371e565b92915050565b60008135905061235281613735565b92915050565b60008151905061236781613735565b92915050565b600082601f830112612382576123816131bd565b5b8135612392848260208601612252565b91505092915050565b600082601f8301126123b0576123af6131bd565b5b81516123c0848260208601612294565b91505092915050565b600060a082840312156123df576123de6131c2565b5b6123e960a0612e81565b9050600082015167ffffffffffffffff811115612409576124086131c7565b5b6124158482850161239b565b600083015250602082015167ffffffffffffffff811115612439576124386131c7565b5b6124458482850161239b565b602083015250604082015167ffffffffffffffff811115612469576124686131c7565b5b6124758482850161239b565b604083015250606061248984828501612522565b606083015250608061249d84828501612522565b60808301525092915050565b6000606082840312156124bf576124be6131c2565b5b6124c96060612e81565b905060006124d9848285016122eb565b60008301525060206124ed848285016122eb565b6020830152506040612501848285016122eb565b60408301525092915050565b60008135905061251c8161374c565b92915050565b6000815190506125318161374c565b92915050565b60006020828403121561254d5761254c6131db565b5b600061255b848285016122d6565b91505092915050565b60006020828403121561257a576125796131db565b5b6000612588848285016122eb565b91505092915050565b600080604083850312156125a8576125a76131db565b5b60006125b6858286016122d6565b92505060206125c7858286016122d6565b9150509250929050565b6000806000606084860312156125ea576125e96131db565b5b60006125f8868287016122d6565b9350506020612609868287016122d6565b925050604061261a8682870161250d565b9150509250925092565b6000806000806080858703121561263e5761263d6131db565b5b600061264c878288016122d6565b945050602061265d878288016122d6565b935050604061266e8782880161250d565b925050606085013567ffffffffffffffff81111561268f5761268e6131d6565b5b61269b8782880161236d565b91505092959194509250565b600080604083850312156126be576126bd6131db565b5b60006126cc858286016122d6565b925050602083013567ffffffffffffffff8111156126ed576126ec6131d6565b5b6126f985828601612300565b9150509250929050565b6000806040838503121561271a576127196131db565b5b6000612728858286016122d6565b92505060206127398582860161232e565b9150509250929050565b6000806040838503121561275a576127596131db565b5b6000612768858286016122d6565b92505060206127798582860161250d565b9150509250929050565b600060208284031215612799576127986131db565b5b60006127a784828501612343565b91505092915050565b6000602082840312156127c6576127c56131db565b5b60006127d484828501612358565b91505092915050565b6000602082840312156127f3576127f26131db565b5b600082015167ffffffffffffffff811115612811576128106131d6565b5b61281d8482850161239b565b91505092915050565b60006020828403121561283c5761283b6131db565b5b600082015167ffffffffffffffff81111561285a576128596131d6565b5b612866848285016123c9565b91505092915050565b600060608284031215612885576128846131db565b5b6000612893848285016124a9565b91505092915050565b6000602082840312156128b2576128b16131db565b5b60006128c08482850161250d565b91505092915050565b6128d281612fa0565b82525050565b6128e181612fb2565b82525050565b60006128f282612f34565b6128fc8185612f4a565b935061290c818560208601613059565b612915816131e0565b840191505092915050565b61292981613014565b82525050565b600061293a82612f3f565b6129448185612f5b565b9350612954818560208601613059565b61295d816131e0565b840191505092915050565b6000612975602a83612f5b565b9150612980826131f1565b604082019050919050565b6000612998601483612f5b565b91506129a382613240565b602082019050919050565b60006129bb603283612f5b565b91506129c682613269565b604082019050919050565b60006129de602d83612f5b565b91506129e9826132b8565b604082019050919050565b6000612a01604383612f5b565b9150612a0c82613307565b606082019050919050565b6000612a24603083612f5b565b9150612a2f8261337c565b604082019050919050565b6000612a47602683612f5b565b9150612a52826133cb565b604082019050919050565b6000612a6a603e83612f5b565b9150612a758261341a565b604082019050919050565b6000612a8d603983612f5b565b9150612a9882613469565b604082019050919050565b6000612ab0603a83612f5b565b9150612abb826134b8565b604082019050919050565b6000612ad3603283612f5b565b9150612ade82613507565b604082019050919050565b6000612af6603083612f5b565b9150612b0182613556565b604082019050919050565b6000612b19603e83612f5b565b9150612b24826135a5565b604082019050919050565b6000612b3c602e83612f5b565b9150612b47826135f4565b604082019050919050565b6000612b5f604783612f5b565b9150612b6a82613643565b606082019050919050565b6000612b82602983612f5b565b9150612b8d826136b8565b604082019050919050565b612ba18161300a565b82525050565b6000602082019050612bbc60008301846128c9565b92915050565b6000608082019050612bd760008301876128c9565b612be460208301866128c9565b612bf16040830185612b98565b8181036060830152612c0381846128e7565b905095945050505050565b6000602082019050612c2360008301846128d8565b92915050565b6000602082019050612c3e6000830184612920565b92915050565b60006020820190508181036000830152612c5e818461292f565b905092915050565b60006020820190508181036000830152612c7f81612968565b9050919050565b60006020820190508181036000830152612c9f8161298b565b9050919050565b60006020820190508181036000830152612cbf816129ae565b9050919050565b60006020820190508181036000830152612cdf816129d1565b9050919050565b60006020820190508181036000830152612cff816129f4565b9050919050565b60006020820190508181036000830152612d1f81612a17565b9050919050565b60006020820190508181036000830152612d3f81612a3a565b9050919050565b60006020820190508181036000830152612d5f81612a5d565b9050919050565b60006020820190508181036000830152612d7f81612a80565b9050919050565b60006020820190508181036000830152612d9f81612aa3565b9050919050565b60006020820190508181036000830152612dbf81612ac6565b9050919050565b60006020820190508181036000830152612ddf81612ae9565b9050919050565b60006020820190508181036000830152612dff81612b0c565b9050919050565b60006020820190508181036000830152612e1f81612b2f565b9050919050565b60006020820190508181036000830152612e3f81612b52565b9050919050565b60006020820190508181036000830152612e5f81612b75565b9050919050565b6000602082019050612e7b6000830184612b98565b92915050565b6000612e8b612e9c565b9050612e9782826130b6565b919050565b6000604051905090565b600067ffffffffffffffff821115612ec157612ec061318e565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612eed57612eec61318e565b5b612ef6826131e0565b9050602081019050919050565b600067ffffffffffffffff821115612f1e57612f1d61318e565b5b612f27826131e0565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612f778261300a565b9150612f828361300a565b925082821015612f9557612f94613130565b5b828203905092915050565b6000612fab82612fea565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061301f82613026565b9050919050565b600061303182613038565b9050919050565b600061304382612fea565b9050919050565b82818337600083830152505050565b60005b8381101561307757808201518184015260208101905061305c565b83811115613086576000848401525b50505050565b60006130978261300a565b915060008214156130ab576130aa613130565b5b600182039050919050565b6130bf826131e0565b810181811067ffffffffffffffff821117156130de576130dd61318e565b5b80604052505050565b60006130f28261300a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561312557613124613130565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416c676f63726163794e46543a3a746f6b656e5572692829202d20696420646f60008201527f206e6f7420657869737400000000000000000000000000000000000000000000602082015250565b7f6572726f72204552433732315265636569766572000000000000000000000000600082015250565b7f416c676f63726163794e46543a3a736166655472616e7366657246726f6d282960008201527f202d20696420646f206e6f742065786973740000000000000000000000000000602082015250565b7f416c676f63726163794e46543a3a676574417070726f7665642829202d20696460008201527f20646f206e6f7420657869737400000000000000000000000000000000000000602082015250565b7f416c676f63726163794e46543a3a7472616e7366657246726f6d2829202d206d60008201527f73672e73656e646572206973206e6f74205f6f776e6572206f7220617070726f60208201527f7665640000000000000000000000000000000000000000000000000000000000604082015250565b7f416c676f63726163794e46543a3a5f7472616e7366657246726f6d2829202d2060008201527f746f206973206164647265737328302900000000000000000000000000000000602082015250565b7f416c676f63726163794e46543a3a617070726f76652829202d20746f2069732060008201527f5f6f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f416c676f63726163794e46543a3a6d696e744e46542829202d206d73672e736560008201527f6e646572206973206e6f7420746865207072696d6520636f6e74726163740000602082015250565b7f416c676f63726163794e46543a3a5f736166655472616e736665722829202d2060008201527f746f206973206e6f742045524337323120726563656976657200000000000000602082015250565b7f416c676f63726163794e46543a3a736574417070726f76616c466f72416c6c2860008201527f29202d206d73672e73656e646572206973206f70657261746f72000000000000602082015250565b7f416c676f63726163794e46543a3a6d696e744e46542829202d20737570706c7960008201527f2065786365656473206d6178537570706c790000000000000000000000000000602082015250565b7f416c676f63726163794e46543a3a62616c616e63654f662829202d205f6f776e60008201527f6572206973206164647265737328302900000000000000000000000000000000602082015250565b7f416c676f63726163794e46543a3a617070726f76652829202d206d73672e736560008201527f6e646572206973206e6f74205f6f776e6572206f7220617070726f7665640000602082015250565b7f416c676f63726163794e46543a3a7472616e7366657246726f6d2829202d206960008201527f6420646f206e6f74206578697374000000000000000000000000000000000000602082015250565b7f416c676f63726163794e46543a3a736166655472616e7366657246726f6d282960008201527f202d206d73672e73656e646572206973206e6f74205f6f776e6572206f72206160208201527f7070726f76656400000000000000000000000000000000000000000000000000604082015250565b7f416c676f63726163794e46543a3a6f776e65724f662829202d20696420646f2060008201527f6e6f742065786973740000000000000000000000000000000000000000000000602082015250565b61371081612fa0565b811461371b57600080fd5b50565b61372781612fb2565b811461373257600080fd5b50565b61373e81612fbe565b811461374957600080fd5b50565b6137558161300a565b811461376057600080fd5b5056fea2646970667358221220a1f8f34c63cead591f581ee689f5b69473be0c0ea389a77a207aaac60b1d4bcd64736f6c63430008070033000000000000000000000000d329cd36665dcbb312d539cee1022b8e67ec7c1d00000000000000000000000084b2281d1f2adaff0636c27cfb16231bb0f115520000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101425760003560e01c8063785ceabd116100b85780639b959ddb1161007c5780639b959ddb14610377578063a22cb46514610395578063b88d4fde146103b1578063c87b56dd146103cd578063d5abeb01146103fd578063e985e9c51461041b57610142565b8063785ceabd146102e35780638da5cb5b146102ff57806395d89b411461031d578063989b0bd51461033b57806398fabd3a1461035957610142565b806323b872dd1161010a57806323b872dd146101ff57806342842e0e1461021b5780634ebbc92a146102375780634eccf1ab146102675780636352211e1461028357806370a08231146102b357610142565b806301ffc9a71461014757806306fdde0314610177578063081812fc14610195578063095ea7b3146101c557806318160ddd146101e1575b600080fd5b610161600480360381019061015c9190612783565b61044b565b60405161016e9190612c0e565b60405180910390f35b61017f6104ad565b60405161018c9190612c44565b60405180910390f35b6101af60048036038101906101aa919061289c565b6105ed565b6040516101bc9190612ba7565b60405180910390f35b6101df60048036038101906101da9190612743565b610672565b005b6101e96108ca565b6040516101f69190612e66565b60405180910390f35b610219600480360381019061021491906125d1565b6108f1565b005b610235600480360381019061023091906125d1565b610aea565b005b610251600480360381019061024c919061289c565b610cf3565b60405161025e9190612c0e565b60405180910390f35b610281600480360381019061027c9190612743565b610d5f565b005b61029d6004803603810190610298919061289c565b610f59565b6040516102aa9190612ba7565b60405180910390f35b6102cd60048036038101906102c89190612537565b610fde565b6040516102da9190612e66565b60405180910390f35b6102fd60048036038101906102f891906126a7565b611096565b005b610307611290565b6040516103149190612ba7565b60405180910390f35b6103256113c6565b6040516103329190612c44565b60405180910390f35b6103436114f5565b6040516103509190612c29565b60405180910390f35b61036161151b565b60405161036e9190612c29565b60405180910390f35b61037f611541565b60405161038c9190612e66565b60405180910390f35b6103af60048036038101906103aa9190612703565b611547565b005b6103cb60048036038101906103c69190612624565b6116b3565b005b6103e760048036038101906103e2919061289c565b6118ae565b6040516103f49190612c44565b60405180910390f35b6104056119af565b6040516104129190612e66565b60405180910390f35b61043560048036038101906104309190612591565b611aee565b6040516104429190612c0e565b60405180910390f35b60006380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104a65750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab8aec376040518163ffffffff1660e01b815260040160206040518083038186803b15801561051957600080fd5b505afa15801561052d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105519190612564565b90508073ffffffffffffffffffffffffffffffffffffffff1663df6f5b206000546040518263ffffffff1660e01b815260040161058e9190612e66565b60006040518083038186803b1580156105a657600080fd5b505afa1580156105ba573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906105e39190612826565b6000015191505090565b60006105f882610cf3565b610637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062e90612cc6565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610719576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071090612d26565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806107d95750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080f90612de6565b60405180910390fd5b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600080600354146108e95760016003546108e49190612f6c565b6108ec565b60005b905090565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061093282610cf3565b610971576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096890612e06565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a0957506006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610a9a5750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad090612ce6565b60405180910390fd5b610ae4848484611b82565b50505050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610b2b82610cf3565b610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6190612ca6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610c0257506006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610c935750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc990612e26565b60405180910390fd5b610ced84848460405180602001604052806000815250611d59565b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab8aec376040518163ffffffff1660e01b815260040160206040518083038186803b158015610dc957600080fd5b505afa158015610ddd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e019190612564565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16636458bb506000546040518263ffffffff1660e01b8152600401610e559190612e66565b60606040518083038186803b158015610e6d57600080fd5b505afa158015610e81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea5919061286f565b6020015173ffffffffffffffffffffffffffffffffffffffff1614610eff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef690612d46565b60405180910390fd5b610f076119af565b60035410610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190612da6565b60405180910390fd5b610f548383611db5565b505050565b6000610f6482610cf3565b610fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9a90612e46565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561104f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104690612dc6565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab8aec376040518163ffffffff1660e01b815260040160206040518083038186803b15801561110057600080fd5b505afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111389190612564565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16636458bb506000546040518263ffffffff1660e01b815260040161118c9190612e66565b60606040518083038186803b1580156111a457600080fd5b505afa1580156111b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc919061286f565b6020015173ffffffffffffffffffffffffffffffffffffffff1614611236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122d90612d46565b60405180910390fd5b61123e6119af565b60035410611281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127890612da6565b60405180910390fd5b61128b8383611ef3565b505050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab8aec376040518163ffffffff1660e01b815260040160206040518083038186803b1580156112fb57600080fd5b505afa15801561130f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113339190612564565b90508073ffffffffffffffffffffffffffffffffffffffff16636352211e6000546040518263ffffffff1660e01b81526004016113709190612e66565b60206040518083038186803b15801561138857600080fd5b505afa15801561139c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c09190612564565b91505090565b60606000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab8aec376040518163ffffffff1660e01b815260040160206040518083038186803b15801561143257600080fd5b505afa158015611446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146a9190612564565b90508073ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156114b257600080fd5b505afa1580156114c6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906114ef91906127dd565b91505090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ad90612d86565b60405180910390fd5b80600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116a79190612c0e565b60405180910390a35050565b60006004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506116f483610cf3565b611733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172a90612ca6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117cb57506006600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b8061185c5750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61189b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189290612e26565b60405180910390fd5b6118a785858585611d59565b5050505050565b60606118b982610cf3565b6118f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ef90612c66565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663015e1a0b836040518263ffffffff1660e01b81526004016119539190612e66565b60006040518083038186803b15801561196b57600080fd5b505afa15801561197f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906119a891906127dd565b9050919050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab8aec376040518163ffffffff1660e01b815260040160206040518083038186803b158015611a1a57600080fd5b505afa158015611a2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a529190612564565b90508073ffffffffffffffffffffffffffffffffffffffff1663df6f5b206000546040518263ffffffff1660e01b8152600401611a8f9190612e66565b60006040518083038186803b158015611aa757600080fd5b505afa158015611abb573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611ae49190612826565b6060015191505090565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff161415611bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be990612d06565b60405180910390fd5b611bfd600082610672565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611c4d9061308c565b9190505550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611ca2906130e7565b9190505550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611d64848484611b82565b611d7084848484612066565b611daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da690612d66565b60405180910390fd5b50505050565b6000806003541415611dca5760016003819055505b5b81811015611eee57600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055508260046000600354815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060036000815480929190600101919050558373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48080600101915050611dcb565b505050565b6000806003541415611f085760016003819055505b5b815181101561206157600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055508260046000848481518110611f7957611f7861315f565b5b6020026020010151815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818181518110611fe057611fdf61315f565b5b60200260200101518373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46003600081548092919060010191905055508080600101915050611f09565b505050565b600080843b905060008111156121d4578473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff1660e01b81526004016120b59493929190612bc2565b602060405180830381600087803b1580156120cf57600080fd5b505af192505050801561210057506040513d601f19601f820116820180604052508101906120fd91906127b0565b60015b612183573d8060008114612130576040519150601f19603f3d011682016040523d82523d6000602084013e612135565b606091505b5060008151141561217b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217290612c86565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614925050506121da565b60019150505b949350505050565b60006121f56121f084612ea6565b612e81565b90508083825260208201905082856020860282011115612218576122176131cc565b5b60005b85811015612248578161222e888261250d565b84526020840193506020830192505060018101905061221b565b5050509392505050565b600061226561226084612ed2565b612e81565b905082815260208101848484011115612281576122806131d1565b5b61228c84828561304a565b509392505050565b60006122a76122a284612f03565b612e81565b9050828152602081018484840111156122c3576122c26131d1565b5b6122ce848285613059565b509392505050565b6000813590506122e581613707565b92915050565b6000815190506122fa81613707565b92915050565b600082601f830112612315576123146131bd565b5b81356123258482602086016121e2565b91505092915050565b60008135905061233d8161371e565b92915050565b60008135905061235281613735565b92915050565b60008151905061236781613735565b92915050565b600082601f830112612382576123816131bd565b5b8135612392848260208601612252565b91505092915050565b600082601f8301126123b0576123af6131bd565b5b81516123c0848260208601612294565b91505092915050565b600060a082840312156123df576123de6131c2565b5b6123e960a0612e81565b9050600082015167ffffffffffffffff811115612409576124086131c7565b5b6124158482850161239b565b600083015250602082015167ffffffffffffffff811115612439576124386131c7565b5b6124458482850161239b565b602083015250604082015167ffffffffffffffff811115612469576124686131c7565b5b6124758482850161239b565b604083015250606061248984828501612522565b606083015250608061249d84828501612522565b60808301525092915050565b6000606082840312156124bf576124be6131c2565b5b6124c96060612e81565b905060006124d9848285016122eb565b60008301525060206124ed848285016122eb565b6020830152506040612501848285016122eb565b60408301525092915050565b60008135905061251c8161374c565b92915050565b6000815190506125318161374c565b92915050565b60006020828403121561254d5761254c6131db565b5b600061255b848285016122d6565b91505092915050565b60006020828403121561257a576125796131db565b5b6000612588848285016122eb565b91505092915050565b600080604083850312156125a8576125a76131db565b5b60006125b6858286016122d6565b92505060206125c7858286016122d6565b9150509250929050565b6000806000606084860312156125ea576125e96131db565b5b60006125f8868287016122d6565b9350506020612609868287016122d6565b925050604061261a8682870161250d565b9150509250925092565b6000806000806080858703121561263e5761263d6131db565b5b600061264c878288016122d6565b945050602061265d878288016122d6565b935050604061266e8782880161250d565b925050606085013567ffffffffffffffff81111561268f5761268e6131d6565b5b61269b8782880161236d565b91505092959194509250565b600080604083850312156126be576126bd6131db565b5b60006126cc858286016122d6565b925050602083013567ffffffffffffffff8111156126ed576126ec6131d6565b5b6126f985828601612300565b9150509250929050565b6000806040838503121561271a576127196131db565b5b6000612728858286016122d6565b92505060206127398582860161232e565b9150509250929050565b6000806040838503121561275a576127596131db565b5b6000612768858286016122d6565b92505060206127798582860161250d565b9150509250929050565b600060208284031215612799576127986131db565b5b60006127a784828501612343565b91505092915050565b6000602082840312156127c6576127c56131db565b5b60006127d484828501612358565b91505092915050565b6000602082840312156127f3576127f26131db565b5b600082015167ffffffffffffffff811115612811576128106131d6565b5b61281d8482850161239b565b91505092915050565b60006020828403121561283c5761283b6131db565b5b600082015167ffffffffffffffff81111561285a576128596131d6565b5b612866848285016123c9565b91505092915050565b600060608284031215612885576128846131db565b5b6000612893848285016124a9565b91505092915050565b6000602082840312156128b2576128b16131db565b5b60006128c08482850161250d565b91505092915050565b6128d281612fa0565b82525050565b6128e181612fb2565b82525050565b60006128f282612f34565b6128fc8185612f4a565b935061290c818560208601613059565b612915816131e0565b840191505092915050565b61292981613014565b82525050565b600061293a82612f3f565b6129448185612f5b565b9350612954818560208601613059565b61295d816131e0565b840191505092915050565b6000612975602a83612f5b565b9150612980826131f1565b604082019050919050565b6000612998601483612f5b565b91506129a382613240565b602082019050919050565b60006129bb603283612f5b565b91506129c682613269565b604082019050919050565b60006129de602d83612f5b565b91506129e9826132b8565b604082019050919050565b6000612a01604383612f5b565b9150612a0c82613307565b606082019050919050565b6000612a24603083612f5b565b9150612a2f8261337c565b604082019050919050565b6000612a47602683612f5b565b9150612a52826133cb565b604082019050919050565b6000612a6a603e83612f5b565b9150612a758261341a565b604082019050919050565b6000612a8d603983612f5b565b9150612a9882613469565b604082019050919050565b6000612ab0603a83612f5b565b9150612abb826134b8565b604082019050919050565b6000612ad3603283612f5b565b9150612ade82613507565b604082019050919050565b6000612af6603083612f5b565b9150612b0182613556565b604082019050919050565b6000612b19603e83612f5b565b9150612b24826135a5565b604082019050919050565b6000612b3c602e83612f5b565b9150612b47826135f4565b604082019050919050565b6000612b5f604783612f5b565b9150612b6a82613643565b606082019050919050565b6000612b82602983612f5b565b9150612b8d826136b8565b604082019050919050565b612ba18161300a565b82525050565b6000602082019050612bbc60008301846128c9565b92915050565b6000608082019050612bd760008301876128c9565b612be460208301866128c9565b612bf16040830185612b98565b8181036060830152612c0381846128e7565b905095945050505050565b6000602082019050612c2360008301846128d8565b92915050565b6000602082019050612c3e6000830184612920565b92915050565b60006020820190508181036000830152612c5e818461292f565b905092915050565b60006020820190508181036000830152612c7f81612968565b9050919050565b60006020820190508181036000830152612c9f8161298b565b9050919050565b60006020820190508181036000830152612cbf816129ae565b9050919050565b60006020820190508181036000830152612cdf816129d1565b9050919050565b60006020820190508181036000830152612cff816129f4565b9050919050565b60006020820190508181036000830152612d1f81612a17565b9050919050565b60006020820190508181036000830152612d3f81612a3a565b9050919050565b60006020820190508181036000830152612d5f81612a5d565b9050919050565b60006020820190508181036000830152612d7f81612a80565b9050919050565b60006020820190508181036000830152612d9f81612aa3565b9050919050565b60006020820190508181036000830152612dbf81612ac6565b9050919050565b60006020820190508181036000830152612ddf81612ae9565b9050919050565b60006020820190508181036000830152612dff81612b0c565b9050919050565b60006020820190508181036000830152612e1f81612b2f565b9050919050565b60006020820190508181036000830152612e3f81612b52565b9050919050565b60006020820190508181036000830152612e5f81612b75565b9050919050565b6000602082019050612e7b6000830184612b98565b92915050565b6000612e8b612e9c565b9050612e9782826130b6565b919050565b6000604051905090565b600067ffffffffffffffff821115612ec157612ec061318e565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612eed57612eec61318e565b5b612ef6826131e0565b9050602081019050919050565b600067ffffffffffffffff821115612f1e57612f1d61318e565b5b612f27826131e0565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612f778261300a565b9150612f828361300a565b925082821015612f9557612f94613130565b5b828203905092915050565b6000612fab82612fea565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061301f82613026565b9050919050565b600061303182613038565b9050919050565b600061304382612fea565b9050919050565b82818337600083830152505050565b60005b8381101561307757808201518184015260208101905061305c565b83811115613086576000848401525b50505050565b60006130978261300a565b915060008214156130ab576130aa613130565b5b600182039050919050565b6130bf826131e0565b810181811067ffffffffffffffff821117156130de576130dd61318e565b5b80604052505050565b60006130f28261300a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561312557613124613130565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416c676f63726163794e46543a3a746f6b656e5572692829202d20696420646f60008201527f206e6f7420657869737400000000000000000000000000000000000000000000602082015250565b7f6572726f72204552433732315265636569766572000000000000000000000000600082015250565b7f416c676f63726163794e46543a3a736166655472616e7366657246726f6d282960008201527f202d20696420646f206e6f742065786973740000000000000000000000000000602082015250565b7f416c676f63726163794e46543a3a676574417070726f7665642829202d20696460008201527f20646f206e6f7420657869737400000000000000000000000000000000000000602082015250565b7f416c676f63726163794e46543a3a7472616e7366657246726f6d2829202d206d60008201527f73672e73656e646572206973206e6f74205f6f776e6572206f7220617070726f60208201527f7665640000000000000000000000000000000000000000000000000000000000604082015250565b7f416c676f63726163794e46543a3a5f7472616e7366657246726f6d2829202d2060008201527f746f206973206164647265737328302900000000000000000000000000000000602082015250565b7f416c676f63726163794e46543a3a617070726f76652829202d20746f2069732060008201527f5f6f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f416c676f63726163794e46543a3a6d696e744e46542829202d206d73672e736560008201527f6e646572206973206e6f7420746865207072696d6520636f6e74726163740000602082015250565b7f416c676f63726163794e46543a3a5f736166655472616e736665722829202d2060008201527f746f206973206e6f742045524337323120726563656976657200000000000000602082015250565b7f416c676f63726163794e46543a3a736574417070726f76616c466f72416c6c2860008201527f29202d206d73672e73656e646572206973206f70657261746f72000000000000602082015250565b7f416c676f63726163794e46543a3a6d696e744e46542829202d20737570706c7960008201527f2065786365656473206d6178537570706c790000000000000000000000000000602082015250565b7f416c676f63726163794e46543a3a62616c616e63654f662829202d205f6f776e60008201527f6572206973206164647265737328302900000000000000000000000000000000602082015250565b7f416c676f63726163794e46543a3a617070726f76652829202d206d73672e736560008201527f6e646572206973206e6f74205f6f776e6572206f7220617070726f7665640000602082015250565b7f416c676f63726163794e46543a3a7472616e7366657246726f6d2829202d206960008201527f6420646f206e6f74206578697374000000000000000000000000000000000000602082015250565b7f416c676f63726163794e46543a3a736166655472616e7366657246726f6d282960008201527f202d206d73672e73656e646572206973206e6f74205f6f776e6572206f72206160208201527f7070726f76656400000000000000000000000000000000000000000000000000604082015250565b7f416c676f63726163794e46543a3a6f776e65724f662829202d20696420646f2060008201527f6e6f742065786973740000000000000000000000000000000000000000000000602082015250565b61371081612fa0565b811461371b57600080fd5b50565b61372781612fb2565b811461373257600080fd5b50565b61373e81612fbe565b811461374957600080fd5b50565b6137558161300a565b811461376057600080fd5b5056fea2646970667358221220a1f8f34c63cead591f581ee689f5b69473be0c0ea389a77a207aaac60b1d4bcd64736f6c63430008070033

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

000000000000000000000000d329cd36665dcbb312d539cee1022b8e67ec7c1d00000000000000000000000084b2281d1f2adaff0636c27cfb16231bb0f115520000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _DAO (address): 0xd329cd36665dcbB312d539cEE1022B8e67EC7C1d
Arg [1] : _Provider (address): 0x84b2281d1F2aDaFF0636C27cFB16231bB0f11552
Arg [2] : _REGISTRY_IDENTIFIER (uint256): 0

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000d329cd36665dcbb312d539cee1022b8e67ec7c1d
Arg [1] : 00000000000000000000000084b2281d1f2adaff0636c27cfb16231bb0f11552
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

311:8791:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:156;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1392:211;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4304:216;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4526:463;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3581:109;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5338:511;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5855:531;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3469:106;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2014:521;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3937:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3696:235;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2541:522;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1195:191;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1609:178;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;414:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;384:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;339:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4995:337;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6392:552;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3231:232;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1793:215;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4148:150;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3069:156;3141:4;3179:10;3164:25;;:11;:25;;;;:54;;;;3208:10;3193:25;;:11;:25;;;;3164:54;3157:61;;3069:156;;;:::o;1392:211::-;1433:13;1458:27;1502:3;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1458:64;;1539:13;:31;;;1571:19;;1539:52;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:57;;;1532:64;;;1392:211;:::o;4304:216::-;4362:7;4402:9;4408:2;4402:5;:9::i;:::-;4381:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;4500:9;:13;4510:2;4500:13;;;;;;;;;;;;;;;;;;;;;4493:20;;4304:216;;;:::o;4526:463::-;4588:14;4605:6;:10;4612:2;4605:10;;;;;;;;;;;;;;;;;;;;;4588:27;;4652:6;4646:12;;:2;:12;;;;4625:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;4763:10;4753:20;;:6;:20;;;:73;;;;4789:17;:25;4807:6;4789:25;;;;;;;;;;;;;;;:37;4815:10;4789:37;;;;;;;;;;;;;;;;;;;;;;;;;4753:73;4732:182;;;;;;;;;;;;:::i;:::-;;;;;;;;;4941:2;4925:9;:13;4935:2;4925:13;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;4979:2;4975;4958:24;;4967:6;4958:24;;;;;;;;;;;;4578:411;4526:463;;:::o;3581:109::-;3629:7;3665:1;3655:6;;:11;:28;;3682:1;3673:6;;:10;;;;:::i;:::-;3655:28;;;3669:1;3655:28;3648:35;;3581:109;:::o;5338:511::-;5419:14;5436:6;:10;5443:2;5436:10;;;;;;;;;;;;;;;;;;;;;5419:27;;5486:9;5492:2;5486:5;:9::i;:::-;5465:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;5613:6;5599:20;;:10;:20;;;:63;;;;5649:9;:13;5659:2;5649:13;;;;;;;;;;;;;;;;;;;;;5635:27;;:10;:27;;;5599:63;:116;;;;5678:17;:25;5696:6;5678:25;;;;;;;;;;;;;;;:37;5704:10;5678:37;;;;;;;;;;;;;;;;;;;;;;;;;5599:116;5578:230;;;;;;;;;;;;:::i;:::-;;;;;;;;;5819:23;5829:4;5835:2;5839;5819:9;:23::i;:::-;5409:440;5338:511;;;:::o;5855:531::-;5940:14;5957:6;:10;5964:2;5957:10;;;;;;;;;;;;;;;;;;;;;5940:27;;6007:9;6013:2;6007:5;:9::i;:::-;5986:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;6138:6;6124:20;;:10;:20;;;:63;;;;6174:9;:13;6184:2;6174:13;;;;;;;;;;;;;;;;;;;;;6160:27;;:10;:27;;;6124:63;:116;;;;6203:17;:25;6221:6;6203:25;;;;;;;;;;;;;;;:37;6229:10;6203:37;;;;;;;;;;;;;;;;;;;;;;;;;6124:116;6103:234;;;;;;;;;;;;:::i;:::-;;;;;;;;;6348:31;6362:4;6368:2;6372;6348:31;;;;;;;;;;;;:13;:31::i;:::-;5930:456;5855:531;;;:::o;3469:106::-;3521:4;3566:1;3544:24;;:6;:10;3551:2;3544:10;;;;;;;;;;;;;;;;;;;;;:24;;;;3537:31;;3469:106;;;:::o;2014:521::-;2092:27;2136:3;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2092:64;;2262:10;2196:76;;:13;:35;;;2232:19;;2196:56;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:62;;;:76;;;2175:185;;;;;;;;;;;;:::i;:::-;;;;;;;;;2401:11;:9;:11::i;:::-;2392:6;;:20;2371:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;2499:29;2515:2;2519:8;2499:15;:29::i;:::-;2082:453;2014:521;;:::o;3937:205::-;3991:7;4031:9;4037:2;4031:5;:9::i;:::-;4010:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;4125:6;:10;4132:2;4125:10;;;;;;;;;;;;;;;;;;;;;4118:17;;3937:205;;;:::o;3696:235::-;3756:7;3814:1;3796:20;;:6;:20;;;;3775:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;3908:8;:16;3917:6;3908:16;;;;;;;;;;;;;;;;3901:23;;3696:235;;;:::o;2541:522::-;2624:27;2668:3;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2624:64;;2794:10;2728:76;;:13;:35;;;2764:19;;2728:56;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:62;;;:76;;;2707:185;;;;;;;;;;;;:::i;:::-;;;;;;;;;2933:11;:9;:11::i;:::-;2924:6;;:20;2903:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;3031:25;3043:2;3047:8;3031:11;:25::i;:::-;2614:449;2541:522;;:::o;1195:191::-;1237:7;1256:27;1300:3;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1256:64;;1337:13;:21;;;1359:19;;1337:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1330:49;;;1195:191;:::o;1609:178::-;1652:13;1677:27;1721:3;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1677:64;;1758:13;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1751:29;;;1609:178;:::o;414:29::-;;;;;;;;;;;;;:::o;384:24::-;;;;;;;;;;;;;:::o;339:34::-;;;;:::o;4995:337::-;5109:10;5097:22;;:8;:22;;;;5076:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;5256:8;5214:17;:29;5232:10;5214:29;;;;;;;;;;;;;;;:39;5244:8;5214:39;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;5306:8;5279:46;;5294:10;5279:46;;;5316:8;5279:46;;;;;;:::i;:::-;;;;;;;;4995:337;;:::o;6392:552::-;6496:14;6513:6;:10;6520:2;6513:10;;;;;;;;;;;;;;;;;;;;;6496:27;;6555:9;6561:2;6555:5;:9::i;:::-;6534:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;6694:6;6680:20;;:10;:20;;;:63;;;;6730:9;:13;6740:2;6730:13;;;;;;;;;;;;;;;;;;;;;6716:27;;:10;:27;;;6680:63;:116;;;;6759:17;:25;6777:6;6759:25;;;;;;;;;;;;;;;:37;6785:10;6759:37;;;;;;;;;;;;;;;;;;;;;;;;;6680:116;6659:234;;;;;;;;;;;;:::i;:::-;;;;;;;;;6904:33;6918:4;6924:2;6928;6932:4;6904:13;:33::i;:::-;6486:458;6392:552;;;;:::o;3231:232::-;3286:13;3332:9;3338:2;3332:5;:9::i;:::-;3311:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;3427:8;;;;;;;;;;;:25;;;3453:2;3427:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3420:36;;3231:232;;;:::o;1793:215::-;1839:7;1858:27;1902:3;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1858:64;;1939:13;:31;;;1971:19;;1939:52;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:62;;;1932:69;;;1793:215;:::o;4148:150::-;4233:4;4256:17;:25;4274:6;4256:25;;;;;;;;;;;;;;;:35;4282:8;4256:35;;;;;;;;;;;;;;;;;;;;;;;;;4249:42;;4148:150;;;;:::o;7734:352::-;7848:2;7834:16;;7842:1;7834:16;;;;7813:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;7935:23;7951:1;7955:2;7935:7;:23::i;:::-;7968:8;:14;7977:4;7968:14;;;;;;;;;;;;;;;;:16;;;;;;;;;:::i;:::-;;;;;;7994:8;:12;8003:2;7994:12;;;;;;;;;;;;;;;;:14;;;;;;;;;:::i;:::-;;;;;;8031:2;8018:6;:10;8025:2;8018:10;;;;;;;;;;;;:15;;;;;;;;;;;;;;;;;;8076:2;8072;8057:22;;8066:4;8057:22;;;;;;;;;;;;7734:352;;;:::o;8092:297::-;8194:23;8204:4;8210:2;8214;8194:9;:23::i;:::-;8257:42;8280:4;8286:2;8290;8294:4;8257:22;:42::i;:::-;8236:146;;;;;;;;;;;;:::i;:::-;;;;;;;;;8092:297;;;;:::o;6950:363::-;7027:9;7064:1;7054:6;;:11;7050:27;;;7076:1;7067:6;:10;;;;7050:27;7111:186;7122:8;7118:1;:12;7111:186;;;7150:8;:12;7159:2;7150:12;;;;;;;;;;;;;;;;:14;;;;;;;;;;;;;7199:2;7182:6;:14;7189:6;;7182:14;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;7252:6;;:8;;;;;;;;;;;;7248:2;7224:37;;7241:4;7224:37;;;;;;;;;;;;7279:3;;;;;;;7111:186;;;7017:296;6950:363;;:::o;7319:409::-;7401:9;7438:1;7428:6;;:11;7424:27;;;7450:1;7441:6;:10;;;;7424:27;7485:227;7496:8;:15;7492:1;:19;7485:227;;;7531:8;:12;7540:2;7531:12;;;;;;;;;;;;;;;;:14;;;;;;;;;;;;;7585:2;7563:6;:19;7570:8;7579:1;7570:11;;;;;;;;:::i;:::-;;;;;;;;7563:19;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;7638:8;7647:1;7638:11;;;;;;;;:::i;:::-;;;;;;;;7634:2;7610:40;;7627:4;7610:40;;;;;;;;;;;;7668:6;;:8;;;;;;;;;;;;;7694:3;;;;;;;7485:227;;;7391:337;7319:409;;:::o;8395:705::-;8507:4;8523:12;8589:2;8577:15;8569:23;;8623:1;8616:4;:8;8612:481;;;8662:2;8642:40;;;8683:10;8695:4;8701:2;8705:5;8642:69;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;8638:430;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8903:1;8886:6;:13;:18;8882:172;;;8906:30;;;;;;;;;;:::i;:::-;;;;;;;;8882:172;9024:6;9018:13;9009:6;9005:2;9001:15;8994:38;8638:430;8771:49;;;8761:59;;;:6;:59;;;;8754:66;;;;;;8612:481;9089:4;9082:11;;;8395:705;;;;;;;:::o;24:722:2:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:410::-;829:5;854:65;870:48;911:6;870:48;:::i;:::-;854:65;:::i;:::-;845:74;;942:6;935:5;928:21;980:4;973:5;969:16;1018:3;1009:6;1004:3;1000:16;997:25;994:112;;;1025:79;;:::i;:::-;994:112;1115:41;1149:6;1144:3;1139;1115:41;:::i;:::-;835:327;752:410;;;;;:::o;1168:421::-;1257:5;1282:66;1298:49;1340:6;1298:49;:::i;:::-;1282:66;:::i;:::-;1273:75;;1371:6;1364:5;1357:21;1409:4;1402:5;1398:16;1447:3;1438:6;1433:3;1429:16;1426:25;1423:112;;;1454:79;;:::i;:::-;1423:112;1544:39;1576:6;1571:3;1566;1544:39;:::i;:::-;1263:326;1168:421;;;;;:::o;1595:139::-;1641:5;1679:6;1666:20;1657:29;;1695:33;1722:5;1695:33;:::i;:::-;1595:139;;;;:::o;1740:143::-;1797:5;1828:6;1822:13;1813:22;;1844:33;1871:5;1844:33;:::i;:::-;1740:143;;;;:::o;1906:370::-;1977:5;2026:3;2019:4;2011:6;2007:17;2003:27;1993:122;;2034:79;;:::i;:::-;1993:122;2151:6;2138:20;2176:94;2266:3;2258:6;2251:4;2243:6;2239:17;2176:94;:::i;:::-;2167:103;;1983:293;1906:370;;;;:::o;2282:133::-;2325:5;2363:6;2350:20;2341:29;;2379:30;2403:5;2379:30;:::i;:::-;2282:133;;;;:::o;2421:137::-;2466:5;2504:6;2491:20;2482:29;;2520:32;2546:5;2520:32;:::i;:::-;2421:137;;;;:::o;2564:141::-;2620:5;2651:6;2645:13;2636:22;;2667:32;2693:5;2667:32;:::i;:::-;2564:141;;;;:::o;2724:338::-;2779:5;2828:3;2821:4;2813:6;2809:17;2805:27;2795:122;;2836:79;;:::i;:::-;2795:122;2953:6;2940:20;2978:78;3052:3;3044:6;3037:4;3029:6;3025:17;2978:78;:::i;:::-;2969:87;;2785:277;2724:338;;;;:::o;3082:355::-;3149:5;3198:3;3191:4;3183:6;3179:17;3175:27;3165:122;;3206:79;;:::i;:::-;3165:122;3316:6;3310:13;3341:90;3427:3;3419:6;3412:4;3404:6;3400:17;3341:90;:::i;:::-;3332:99;;3155:282;3082:355;;;;:::o;3476:1630::-;3558:5;3602:4;3590:9;3585:3;3581:19;3577:30;3574:117;;;3610:79;;:::i;:::-;3574:117;3709:21;3725:4;3709:21;:::i;:::-;3700:30;;3810:1;3799:9;3795:17;3789:24;3840:18;3832:6;3829:30;3826:117;;;3862:79;;:::i;:::-;3826:117;3982:70;4048:3;4039:6;4028:9;4024:22;3982:70;:::i;:::-;3975:4;3968:5;3964:16;3957:96;3740:324;4145:2;4134:9;4130:18;4124:25;4176:18;4168:6;4165:30;4162:117;;;4198:79;;:::i;:::-;4162:117;4318:70;4384:3;4375:6;4364:9;4360:22;4318:70;:::i;:::-;4311:4;4304:5;4300:16;4293:96;4074:326;4487:2;4476:9;4472:18;4466:25;4518:18;4510:6;4507:30;4504:117;;;4540:79;;:::i;:::-;4504:117;4660:70;4726:3;4717:6;4706:9;4702:22;4660:70;:::i;:::-;4653:4;4646:5;4642:16;4635:96;4410:332;4806:2;4847:60;4903:3;4894:6;4883:9;4879:22;4847:60;:::i;:::-;4840:4;4833:5;4829:16;4822:86;4752:167;4985:3;5027:60;5083:3;5074:6;5063:9;5059:22;5027:60;:::i;:::-;5020:4;5013:5;5009:16;5002:86;4929:170;3476:1630;;;;:::o;5147:782::-;5231:5;5275:4;5263:9;5258:3;5254:19;5250:30;5247:117;;;5283:79;;:::i;:::-;5247:117;5382:21;5398:4;5382:21;:::i;:::-;5373:30;;5461:1;5501:60;5557:3;5548:6;5537:9;5533:22;5501:60;:::i;:::-;5494:4;5487:5;5483:16;5476:86;5413:160;5633:2;5674:60;5730:3;5721:6;5710:9;5706:22;5674:60;:::i;:::-;5667:4;5660:5;5656:16;5649:86;5583:163;5809:2;5850:60;5906:3;5897:6;5886:9;5882:22;5850:60;:::i;:::-;5843:4;5836:5;5832:16;5825:86;5756:166;5147:782;;;;:::o;5935:139::-;5981:5;6019:6;6006:20;5997:29;;6035:33;6062:5;6035:33;:::i;:::-;5935:139;;;;:::o;6080:143::-;6137:5;6168:6;6162:13;6153:22;;6184:33;6211:5;6184:33;:::i;:::-;6080:143;;;;:::o;6229:329::-;6288:6;6337:2;6325:9;6316:7;6312:23;6308:32;6305:119;;;6343:79;;:::i;:::-;6305:119;6463:1;6488:53;6533:7;6524:6;6513:9;6509:22;6488:53;:::i;:::-;6478:63;;6434:117;6229:329;;;;:::o;6564:351::-;6634:6;6683:2;6671:9;6662:7;6658:23;6654:32;6651:119;;;6689:79;;:::i;:::-;6651:119;6809:1;6834:64;6890:7;6881:6;6870:9;6866:22;6834:64;:::i;:::-;6824:74;;6780:128;6564:351;;;;:::o;6921:474::-;6989:6;6997;7046:2;7034:9;7025:7;7021:23;7017:32;7014:119;;;7052:79;;:::i;:::-;7014:119;7172:1;7197:53;7242:7;7233:6;7222:9;7218:22;7197:53;:::i;:::-;7187:63;;7143:117;7299:2;7325:53;7370:7;7361:6;7350:9;7346:22;7325:53;:::i;:::-;7315:63;;7270:118;6921:474;;;;;:::o;7401:619::-;7478:6;7486;7494;7543:2;7531:9;7522:7;7518:23;7514:32;7511:119;;;7549:79;;:::i;:::-;7511:119;7669:1;7694:53;7739:7;7730:6;7719:9;7715:22;7694:53;:::i;:::-;7684:63;;7640:117;7796:2;7822:53;7867:7;7858:6;7847:9;7843:22;7822:53;:::i;:::-;7812:63;;7767:118;7924:2;7950:53;7995:7;7986:6;7975:9;7971:22;7950:53;:::i;:::-;7940:63;;7895:118;7401:619;;;;;:::o;8026:943::-;8121:6;8129;8137;8145;8194:3;8182:9;8173:7;8169:23;8165:33;8162:120;;;8201:79;;:::i;:::-;8162:120;8321:1;8346:53;8391:7;8382:6;8371:9;8367:22;8346:53;:::i;:::-;8336:63;;8292:117;8448:2;8474:53;8519:7;8510:6;8499:9;8495:22;8474:53;:::i;:::-;8464:63;;8419:118;8576:2;8602:53;8647:7;8638:6;8627:9;8623:22;8602:53;:::i;:::-;8592:63;;8547:118;8732:2;8721:9;8717:18;8704:32;8763:18;8755:6;8752:30;8749:117;;;8785:79;;:::i;:::-;8749:117;8890:62;8944:7;8935:6;8924:9;8920:22;8890:62;:::i;:::-;8880:72;;8675:287;8026:943;;;;;;;:::o;8975:684::-;9068:6;9076;9125:2;9113:9;9104:7;9100:23;9096:32;9093:119;;;9131:79;;:::i;:::-;9093:119;9251:1;9276:53;9321:7;9312:6;9301:9;9297:22;9276:53;:::i;:::-;9266:63;;9222:117;9406:2;9395:9;9391:18;9378:32;9437:18;9429:6;9426:30;9423:117;;;9459:79;;:::i;:::-;9423:117;9564:78;9634:7;9625:6;9614:9;9610:22;9564:78;:::i;:::-;9554:88;;9349:303;8975:684;;;;;:::o;9665:468::-;9730:6;9738;9787:2;9775:9;9766:7;9762:23;9758:32;9755:119;;;9793:79;;:::i;:::-;9755:119;9913:1;9938:53;9983:7;9974:6;9963:9;9959:22;9938:53;:::i;:::-;9928:63;;9884:117;10040:2;10066:50;10108:7;10099:6;10088:9;10084:22;10066:50;:::i;:::-;10056:60;;10011:115;9665:468;;;;;:::o;10139:474::-;10207:6;10215;10264:2;10252:9;10243:7;10239:23;10235:32;10232:119;;;10270:79;;:::i;:::-;10232:119;10390:1;10415:53;10460:7;10451:6;10440:9;10436:22;10415:53;:::i;:::-;10405:63;;10361:117;10517:2;10543:53;10588:7;10579:6;10568:9;10564:22;10543:53;:::i;:::-;10533:63;;10488:118;10139:474;;;;;:::o;10619:327::-;10677:6;10726:2;10714:9;10705:7;10701:23;10697:32;10694:119;;;10732:79;;:::i;:::-;10694:119;10852:1;10877:52;10921:7;10912:6;10901:9;10897:22;10877:52;:::i;:::-;10867:62;;10823:116;10619:327;;;;:::o;10952:349::-;11021:6;11070:2;11058:9;11049:7;11045:23;11041:32;11038:119;;;11076:79;;:::i;:::-;11038:119;11196:1;11221:63;11276:7;11267:6;11256:9;11252:22;11221:63;:::i;:::-;11211:73;;11167:127;10952:349;;;;:::o;11307:524::-;11387:6;11436:2;11424:9;11415:7;11411:23;11407:32;11404:119;;;11442:79;;:::i;:::-;11404:119;11583:1;11572:9;11568:17;11562:24;11613:18;11605:6;11602:30;11599:117;;;11635:79;;:::i;:::-;11599:117;11740:74;11806:7;11797:6;11786:9;11782:22;11740:74;:::i;:::-;11730:84;;11533:291;11307:524;;;;:::o;11837:548::-;11929:6;11978:2;11966:9;11957:7;11953:23;11949:32;11946:119;;;11984:79;;:::i;:::-;11946:119;12125:1;12114:9;12110:17;12104:24;12155:18;12147:6;12144:30;12141:117;;;12177:79;;:::i;:::-;12141:117;12282:86;12360:7;12351:6;12340:9;12336:22;12282:86;:::i;:::-;12272:96;;12075:303;11837:548;;;;:::o;12391:399::-;12485:6;12534:2;12522:9;12513:7;12509:23;12505:32;12502:119;;;12540:79;;:::i;:::-;12502:119;12660:1;12685:88;12765:7;12756:6;12745:9;12741:22;12685:88;:::i;:::-;12675:98;;12631:152;12391:399;;;;:::o;12796:329::-;12855:6;12904:2;12892:9;12883:7;12879:23;12875:32;12872:119;;;12910:79;;:::i;:::-;12872:119;13030:1;13055:53;13100:7;13091:6;13080:9;13076:22;13055:53;:::i;:::-;13045:63;;13001:117;12796:329;;;;:::o;13131:118::-;13218:24;13236:5;13218:24;:::i;:::-;13213:3;13206:37;13131:118;;:::o;13255:109::-;13336:21;13351:5;13336:21;:::i;:::-;13331:3;13324:34;13255:109;;:::o;13370:360::-;13456:3;13484:38;13516:5;13484:38;:::i;:::-;13538:70;13601:6;13596:3;13538:70;:::i;:::-;13531:77;;13617:52;13662:6;13657:3;13650:4;13643:5;13639:16;13617:52;:::i;:::-;13694:29;13716:6;13694:29;:::i;:::-;13689:3;13685:39;13678:46;;13460:270;13370:360;;;;:::o;13736:175::-;13845:59;13898:5;13845:59;:::i;:::-;13840:3;13833:72;13736:175;;:::o;13917:364::-;14005:3;14033:39;14066:5;14033:39;:::i;:::-;14088:71;14152:6;14147:3;14088:71;:::i;:::-;14081:78;;14168:52;14213:6;14208:3;14201:4;14194:5;14190:16;14168:52;:::i;:::-;14245:29;14267:6;14245:29;:::i;:::-;14240:3;14236:39;14229:46;;14009:272;13917:364;;;;:::o;14287:366::-;14429:3;14450:67;14514:2;14509:3;14450:67;:::i;:::-;14443:74;;14526:93;14615:3;14526:93;:::i;:::-;14644:2;14639:3;14635:12;14628:19;;14287:366;;;:::o;14659:::-;14801:3;14822:67;14886:2;14881:3;14822:67;:::i;:::-;14815:74;;14898:93;14987:3;14898:93;:::i;:::-;15016:2;15011:3;15007:12;15000:19;;14659:366;;;:::o;15031:::-;15173:3;15194:67;15258:2;15253:3;15194:67;:::i;:::-;15187:74;;15270:93;15359:3;15270:93;:::i;:::-;15388:2;15383:3;15379:12;15372:19;;15031:366;;;:::o;15403:::-;15545:3;15566:67;15630:2;15625:3;15566:67;:::i;:::-;15559:74;;15642:93;15731:3;15642:93;:::i;:::-;15760:2;15755:3;15751:12;15744:19;;15403:366;;;:::o;15775:::-;15917:3;15938:67;16002:2;15997:3;15938:67;:::i;:::-;15931:74;;16014:93;16103:3;16014:93;:::i;:::-;16132:2;16127:3;16123:12;16116:19;;15775:366;;;:::o;16147:::-;16289:3;16310:67;16374:2;16369:3;16310:67;:::i;:::-;16303:74;;16386:93;16475:3;16386:93;:::i;:::-;16504:2;16499:3;16495:12;16488:19;;16147:366;;;:::o;16519:::-;16661:3;16682:67;16746:2;16741:3;16682:67;:::i;:::-;16675:74;;16758:93;16847:3;16758:93;:::i;:::-;16876:2;16871:3;16867:12;16860:19;;16519:366;;;:::o;16891:::-;17033:3;17054:67;17118:2;17113:3;17054:67;:::i;:::-;17047:74;;17130:93;17219:3;17130:93;:::i;:::-;17248:2;17243:3;17239:12;17232:19;;16891:366;;;:::o;17263:::-;17405:3;17426:67;17490:2;17485:3;17426:67;:::i;:::-;17419:74;;17502:93;17591:3;17502:93;:::i;:::-;17620:2;17615:3;17611:12;17604:19;;17263:366;;;:::o;17635:::-;17777:3;17798:67;17862:2;17857:3;17798:67;:::i;:::-;17791:74;;17874:93;17963:3;17874:93;:::i;:::-;17992:2;17987:3;17983:12;17976:19;;17635:366;;;:::o;18007:::-;18149:3;18170:67;18234:2;18229:3;18170:67;:::i;:::-;18163:74;;18246:93;18335:3;18246:93;:::i;:::-;18364:2;18359:3;18355:12;18348:19;;18007:366;;;:::o;18379:::-;18521:3;18542:67;18606:2;18601:3;18542:67;:::i;:::-;18535:74;;18618:93;18707:3;18618:93;:::i;:::-;18736:2;18731:3;18727:12;18720:19;;18379:366;;;:::o;18751:::-;18893:3;18914:67;18978:2;18973:3;18914:67;:::i;:::-;18907:74;;18990:93;19079:3;18990:93;:::i;:::-;19108:2;19103:3;19099:12;19092:19;;18751:366;;;:::o;19123:::-;19265:3;19286:67;19350:2;19345:3;19286:67;:::i;:::-;19279:74;;19362:93;19451:3;19362:93;:::i;:::-;19480:2;19475:3;19471:12;19464:19;;19123:366;;;:::o;19495:::-;19637:3;19658:67;19722:2;19717:3;19658:67;:::i;:::-;19651:74;;19734:93;19823:3;19734:93;:::i;:::-;19852:2;19847:3;19843:12;19836:19;;19495:366;;;:::o;19867:::-;20009:3;20030:67;20094:2;20089:3;20030:67;:::i;:::-;20023:74;;20106:93;20195:3;20106:93;:::i;:::-;20224:2;20219:3;20215:12;20208:19;;19867:366;;;:::o;20239:118::-;20326:24;20344:5;20326:24;:::i;:::-;20321:3;20314:37;20239:118;;:::o;20363:222::-;20456:4;20494:2;20483:9;20479:18;20471:26;;20507:71;20575:1;20564:9;20560:17;20551:6;20507:71;:::i;:::-;20363:222;;;;:::o;20591:640::-;20786:4;20824:3;20813:9;20809:19;20801:27;;20838:71;20906:1;20895:9;20891:17;20882:6;20838:71;:::i;:::-;20919:72;20987:2;20976:9;20972:18;20963:6;20919:72;:::i;:::-;21001;21069:2;21058:9;21054:18;21045:6;21001:72;:::i;:::-;21120:9;21114:4;21110:20;21105:2;21094:9;21090:18;21083:48;21148:76;21219:4;21210:6;21148:76;:::i;:::-;21140:84;;20591:640;;;;;;;:::o;21237:210::-;21324:4;21362:2;21351:9;21347:18;21339:26;;21375:65;21437:1;21426:9;21422:17;21413:6;21375:65;:::i;:::-;21237:210;;;;:::o;21453:266::-;21568:4;21606:2;21595:9;21591:18;21583:26;;21619:93;21709:1;21698:9;21694:17;21685:6;21619:93;:::i;:::-;21453:266;;;;:::o;21725:313::-;21838:4;21876:2;21865:9;21861:18;21853:26;;21925:9;21919:4;21915:20;21911:1;21900:9;21896:17;21889:47;21953:78;22026:4;22017:6;21953:78;:::i;:::-;21945:86;;21725:313;;;;:::o;22044:419::-;22210:4;22248:2;22237:9;22233:18;22225:26;;22297:9;22291:4;22287:20;22283:1;22272:9;22268:17;22261:47;22325:131;22451:4;22325:131;:::i;:::-;22317:139;;22044:419;;;:::o;22469:::-;22635:4;22673:2;22662:9;22658:18;22650:26;;22722:9;22716:4;22712:20;22708:1;22697:9;22693:17;22686:47;22750:131;22876:4;22750:131;:::i;:::-;22742:139;;22469:419;;;:::o;22894:::-;23060:4;23098:2;23087:9;23083:18;23075:26;;23147:9;23141:4;23137:20;23133:1;23122:9;23118:17;23111:47;23175:131;23301:4;23175:131;:::i;:::-;23167:139;;22894:419;;;:::o;23319:::-;23485:4;23523:2;23512:9;23508:18;23500:26;;23572:9;23566:4;23562:20;23558:1;23547:9;23543:17;23536:47;23600:131;23726:4;23600:131;:::i;:::-;23592:139;;23319:419;;;:::o;23744:::-;23910:4;23948:2;23937:9;23933:18;23925:26;;23997:9;23991:4;23987:20;23983:1;23972:9;23968:17;23961:47;24025:131;24151:4;24025:131;:::i;:::-;24017:139;;23744:419;;;:::o;24169:::-;24335:4;24373:2;24362:9;24358:18;24350:26;;24422:9;24416:4;24412:20;24408:1;24397:9;24393:17;24386:47;24450:131;24576:4;24450:131;:::i;:::-;24442:139;;24169:419;;;:::o;24594:::-;24760:4;24798:2;24787:9;24783:18;24775:26;;24847:9;24841:4;24837:20;24833:1;24822:9;24818:17;24811:47;24875:131;25001:4;24875:131;:::i;:::-;24867:139;;24594:419;;;:::o;25019:::-;25185:4;25223:2;25212:9;25208:18;25200:26;;25272:9;25266:4;25262:20;25258:1;25247:9;25243:17;25236:47;25300:131;25426:4;25300:131;:::i;:::-;25292:139;;25019:419;;;:::o;25444:::-;25610:4;25648:2;25637:9;25633:18;25625:26;;25697:9;25691:4;25687:20;25683:1;25672:9;25668:17;25661:47;25725:131;25851:4;25725:131;:::i;:::-;25717:139;;25444:419;;;:::o;25869:::-;26035:4;26073:2;26062:9;26058:18;26050:26;;26122:9;26116:4;26112:20;26108:1;26097:9;26093:17;26086:47;26150:131;26276:4;26150:131;:::i;:::-;26142:139;;25869:419;;;:::o;26294:::-;26460:4;26498:2;26487:9;26483:18;26475:26;;26547:9;26541:4;26537:20;26533:1;26522:9;26518:17;26511:47;26575:131;26701:4;26575:131;:::i;:::-;26567:139;;26294:419;;;:::o;26719:::-;26885:4;26923:2;26912:9;26908:18;26900:26;;26972:9;26966:4;26962:20;26958:1;26947:9;26943:17;26936:47;27000:131;27126:4;27000:131;:::i;:::-;26992:139;;26719:419;;;:::o;27144:::-;27310:4;27348:2;27337:9;27333:18;27325:26;;27397:9;27391:4;27387:20;27383:1;27372:9;27368:17;27361:47;27425:131;27551:4;27425:131;:::i;:::-;27417:139;;27144:419;;;:::o;27569:::-;27735:4;27773:2;27762:9;27758:18;27750:26;;27822:9;27816:4;27812:20;27808:1;27797:9;27793:17;27786:47;27850:131;27976:4;27850:131;:::i;:::-;27842:139;;27569:419;;;:::o;27994:::-;28160:4;28198:2;28187:9;28183:18;28175:26;;28247:9;28241:4;28237:20;28233:1;28222:9;28218:17;28211:47;28275:131;28401:4;28275:131;:::i;:::-;28267:139;;27994:419;;;:::o;28419:::-;28585:4;28623:2;28612:9;28608:18;28600:26;;28672:9;28666:4;28662:20;28658:1;28647:9;28643:17;28636:47;28700:131;28826:4;28700:131;:::i;:::-;28692:139;;28419:419;;;:::o;28844:222::-;28937:4;28975:2;28964:9;28960:18;28952:26;;28988:71;29056:1;29045:9;29041:17;29032:6;28988:71;:::i;:::-;28844:222;;;;:::o;29072:129::-;29106:6;29133:20;;:::i;:::-;29123:30;;29162:33;29190:4;29182:6;29162:33;:::i;:::-;29072:129;;;:::o;29207:75::-;29240:6;29273:2;29267:9;29257:19;;29207:75;:::o;29288:311::-;29365:4;29455:18;29447:6;29444:30;29441:56;;;29477:18;;:::i;:::-;29441:56;29527:4;29519:6;29515:17;29507:25;;29587:4;29581;29577:15;29569:23;;29288:311;;;:::o;29605:307::-;29666:4;29756:18;29748:6;29745:30;29742:56;;;29778:18;;:::i;:::-;29742:56;29816:29;29838:6;29816:29;:::i;:::-;29808:37;;29900:4;29894;29890:15;29882:23;;29605:307;;;:::o;29918:308::-;29980:4;30070:18;30062:6;30059:30;30056:56;;;30092:18;;:::i;:::-;30056:56;30130:29;30152:6;30130:29;:::i;:::-;30122:37;;30214:4;30208;30204:15;30196:23;;29918:308;;;:::o;30232:98::-;30283:6;30317:5;30311:12;30301:22;;30232:98;;;:::o;30336:99::-;30388:6;30422:5;30416:12;30406:22;;30336:99;;;:::o;30441:168::-;30524:11;30558:6;30553:3;30546:19;30598:4;30593:3;30589:14;30574:29;;30441:168;;;;:::o;30615:169::-;30699:11;30733:6;30728:3;30721:19;30773:4;30768:3;30764:14;30749:29;;30615:169;;;;:::o;30790:191::-;30830:4;30850:20;30868:1;30850:20;:::i;:::-;30845:25;;30884:20;30902:1;30884:20;:::i;:::-;30879:25;;30923:1;30920;30917:8;30914:34;;;30928:18;;:::i;:::-;30914:34;30973:1;30970;30966:9;30958:17;;30790:191;;;;:::o;30987:96::-;31024:7;31053:24;31071:5;31053:24;:::i;:::-;31042:35;;30987:96;;;:::o;31089:90::-;31123:7;31166:5;31159:13;31152:21;31141:32;;31089:90;;;:::o;31185:149::-;31221:7;31261:66;31254:5;31250:78;31239:89;;31185:149;;;:::o;31340:126::-;31377:7;31417:42;31410:5;31406:54;31395:65;;31340:126;;;:::o;31472:77::-;31509:7;31538:5;31527:16;;31472:77;;;:::o;31555:148::-;31627:9;31660:37;31691:5;31660:37;:::i;:::-;31647:50;;31555:148;;;:::o;31709:126::-;31759:9;31792:37;31823:5;31792:37;:::i;:::-;31779:50;;31709:126;;;:::o;31841:113::-;31891:9;31924:24;31942:5;31924:24;:::i;:::-;31911:37;;31841:113;;;:::o;31960:154::-;32044:6;32039:3;32034;32021:30;32106:1;32097:6;32092:3;32088:16;32081:27;31960:154;;;:::o;32120:307::-;32188:1;32198:113;32212:6;32209:1;32206:13;32198:113;;;32297:1;32292:3;32288:11;32282:18;32278:1;32273:3;32269:11;32262:39;32234:2;32231:1;32227:10;32222:15;;32198:113;;;32329:6;32326:1;32323:13;32320:101;;;32409:1;32400:6;32395:3;32391:16;32384:27;32320:101;32169:258;32120:307;;;:::o;32433:171::-;32472:3;32495:24;32513:5;32495:24;:::i;:::-;32486:33;;32541:4;32534:5;32531:15;32528:41;;;32549:18;;:::i;:::-;32528:41;32596:1;32589:5;32585:13;32578:20;;32433:171;;;:::o;32610:281::-;32693:27;32715:4;32693:27;:::i;:::-;32685:6;32681:40;32823:6;32811:10;32808:22;32787:18;32775:10;32772:34;32769:62;32766:88;;;32834:18;;:::i;:::-;32766:88;32874:10;32870:2;32863:22;32653:238;32610:281;;:::o;32897:233::-;32936:3;32959:24;32977:5;32959:24;:::i;:::-;32950:33;;33005:66;32998:5;32995:77;32992:103;;;33075:18;;:::i;:::-;32992:103;33122:1;33115:5;33111:13;33104:20;;32897:233;;;:::o;33136:180::-;33184:77;33181:1;33174:88;33281:4;33278:1;33271:15;33305:4;33302:1;33295:15;33322:180;33370:77;33367:1;33360:88;33467:4;33464:1;33457:15;33491:4;33488:1;33481:15;33508:180;33556:77;33553:1;33546:88;33653:4;33650:1;33643:15;33677:4;33674:1;33667:15;33694:117;33803:1;33800;33793:12;33817:117;33926:1;33923;33916:12;33940:117;34049:1;34046;34039:12;34063:117;34172:1;34169;34162:12;34186:117;34295:1;34292;34285:12;34309:117;34418:1;34415;34408:12;34432:117;34541:1;34538;34531:12;34555:102;34596:6;34647:2;34643:7;34638:2;34631:5;34627:14;34623:28;34613:38;;34555:102;;;:::o;34663:229::-;34803:34;34799:1;34791:6;34787:14;34780:58;34872:12;34867:2;34859:6;34855:15;34848:37;34663:229;:::o;34898:170::-;35038:22;35034:1;35026:6;35022:14;35015:46;34898:170;:::o;35074:237::-;35214:34;35210:1;35202:6;35198:14;35191:58;35283:20;35278:2;35270:6;35266:15;35259:45;35074:237;:::o;35317:232::-;35457:34;35453:1;35445:6;35441:14;35434:58;35526:15;35521:2;35513:6;35509:15;35502:40;35317:232;:::o;35555:291::-;35695:34;35691:1;35683:6;35679:14;35672:58;35764:34;35759:2;35751:6;35747:15;35740:59;35833:5;35828:2;35820:6;35816:15;35809:30;35555:291;:::o;35852:235::-;35992:34;35988:1;35980:6;35976:14;35969:58;36061:18;36056:2;36048:6;36044:15;36037:43;35852:235;:::o;36093:225::-;36233:34;36229:1;36221:6;36217:14;36210:58;36302:8;36297:2;36289:6;36285:15;36278:33;36093:225;:::o;36324:249::-;36464:34;36460:1;36452:6;36448:14;36441:58;36533:32;36528:2;36520:6;36516:15;36509:57;36324:249;:::o;36579:244::-;36719:34;36715:1;36707:6;36703:14;36696:58;36788:27;36783:2;36775:6;36771:15;36764:52;36579:244;:::o;36829:245::-;36969:34;36965:1;36957:6;36953:14;36946:58;37038:28;37033:2;37025:6;37021:15;37014:53;36829:245;:::o;37080:237::-;37220:34;37216:1;37208:6;37204:14;37197:58;37289:20;37284:2;37276:6;37272:15;37265:45;37080:237;:::o;37323:235::-;37463:34;37459:1;37451:6;37447:14;37440:58;37532:18;37527:2;37519:6;37515:15;37508:43;37323:235;:::o;37564:249::-;37704:34;37700:1;37692:6;37688:14;37681:58;37773:32;37768:2;37760:6;37756:15;37749:57;37564:249;:::o;37819:233::-;37959:34;37955:1;37947:6;37943:14;37936:58;38028:16;38023:2;38015:6;38011:15;38004:41;37819:233;:::o;38058:295::-;38198:34;38194:1;38186:6;38182:14;38175:58;38267:34;38262:2;38254:6;38250:15;38243:59;38336:9;38331:2;38323:6;38319:15;38312:34;38058:295;:::o;38359:228::-;38499:34;38495:1;38487:6;38483:14;38476:58;38568:11;38563:2;38555:6;38551:15;38544:36;38359:228;:::o;38593:122::-;38666:24;38684:5;38666:24;:::i;:::-;38659:5;38656:35;38646:63;;38705:1;38702;38695:12;38646:63;38593:122;:::o;38721:116::-;38791:21;38806:5;38791:21;:::i;:::-;38784:5;38781:32;38771:60;;38827:1;38824;38817:12;38771:60;38721:116;:::o;38843:120::-;38915:23;38932:5;38915:23;:::i;:::-;38908:5;38905:34;38895:62;;38953:1;38950;38943:12;38895:62;38843:120;:::o;38969:122::-;39042:24;39060:5;39042:24;:::i;:::-;39035:5;39032:35;39022:63;;39081:1;39078;39071:12;39022:63;38969:122;:::o

Swarm Source

ipfs://a1f8f34c63cead591f581ee689f5b69473be0c0ea389a77a207aaac60b1d4bcd
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.