Token Octo Finissimo Ultra NFT

 

Overview ERC-721

Total Supply:
10 OCTO_FINISSIMO_ULTRA_NFT

Holders:
10 addresses

Transfers:
-

 
Loading
[ Download CSV Export  ] 
Loading
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
LUXO_BLG_NFT

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-16
*/

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

interface IERC721Metadata {
    function name() external view returns (string memory _name);

    function symbol() external view returns (string memory _symbol);

    function tokenURI(uint256 _tokenId) external view returns (string memory);
}

interface IERC721 {
    event Transfer(
        address indexed _from,
        address indexed _to,
        uint256 indexed _tokenId
    );

    event Approval(
        address indexed _owner,
        address indexed _approved,
        uint256 indexed _tokenId
    );
    event ApprovalForAll(
        address indexed _owner,
        address indexed _operator,
        bool _approved
    );

    function balanceOf(address _owner) external view returns (uint256);

    function ownerOf(uint256 _tokenId) external view returns (address);

    function safeTransferFrom(
        address _from,
        address _to,
        uint256 _tokenId,
        bytes calldata data
    ) external;

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

    function transferFrom(
        address _from,
        address _to,
        uint256 _tokenId
    ) external;

    function approve(address _approved, uint256 _tokenId) external;

    function setApprovalForAll(address _operator, bool _approved) external;

    function getApproved(uint256 _tokenId) external view returns (address);

    function isApprovedForAll(address _owner, address _operator)
        external
        view
        returns (bool);
}

interface IERC721Receiver {
    function onERC721Received(
        address _operator,
        address _from,
        uint256 _tokenId,
        bytes calldata _data
    ) external returns (bytes4);
}

interface ILuxochainNFT {
    event OwnershipTransferred(address indexed, address indexed);

    function owner() external view returns (address);

    function exists(uint256 tokenId) external view returns (bool);

    function getStorageType() external view returns (uint256);

    function isLuxochainNFT() external view returns (bool);

    function transferOwnership(address newIssuer) external;

    function totalSupply() external view returns (uint256);

    function count() external view returns (uint256);

    event TokenFreezed(uint256 tokenId, address unfreezableAddress);

    event TokenUnfreezed(uint256 tokenId, address newOwner);

    event VoterPromoted(address newVoter);

    event VoterRemoved(address oldVoter);

    function safeMint(
        uint256 tokenId,
        address to,
        string calldata tokenMetadataURI
    ) external;

    function multipleSafeMint(
        uint256[] calldata _tokensIds,
        address _to,
        string[] calldata _tokenMetadataURIs
    ) external;

    function freezeToken(uint256 tokenId, address unfreezeAddress) external;

    function unfreezeToken(uint256 tokenId, address newOwner) external;

    function isTokenFreezed(uint256 tokenId) external view returns (bool);

    function burn(uint256 tokenId) external;

    function voteForMinting(uint256 tokenId) external;

    function voteForAddingVoter(address newVoter) external;
    
    function voteForUnfreeze(uint256 tokenId) external;

    function voteForRemovingVoter(address voter) external;

    function addVoter(address newVoter) external;

    function removeVoter(address voter) external;

    function getVoters() external view returns (address[] memory);

    function isAVoter(address addr) external view returns (bool);

    function quorum() external view returns (uint256);

    function maxTotalSupply() external view returns (uint256);
}

contract LUXO_BLG_NFT is IERC721, IERC721Metadata, ILuxochainNFT {
    bytes4 private constant _INTERFACE_ID_ERC721_METADATA = 0x5b5e139f;
    bytes4 private constant _INTERFACE_ID_ERC721 = 0x80ac58cd;
    bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7;
    uint256 private _totalSupply;
    uint256 private _maxTotalSupply;
    uint256 private _count;

    string private _name;
    string private _symbol;

    address private _issuer;

    mapping(address => mapping(address => bool)) private _operatorApprovals;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(uint256 => address) private _owners;
    mapping(address => uint256) private _balances;
    mapping(uint256 => string) private _metadataURIs;
    mapping(uint256 => bool) private _freezed;
    mapping(uint256 => address) private _unfreezeAddresses;
    mapping(uint256 => mapping(address => bool)) private _tokensVoters;
    mapping(uint256 => mapping(address => bool)) private _unfreezeVoters;
    mapping(uint256 => uint256) private _tokensVotes;
    mapping(address => mapping(address => bool)) private _addressesVoters;
    mapping(address => uint256) private _addressesVotes;
    mapping(address => mapping(address => bool)) private _revokeAddressesVoters;
    mapping(address => uint256) private _revokeAddressesVotes;
    mapping(uint256 => uint256) private _unfreezeVotes;
    mapping(address => bool) private _voters;
    address[] private _votersArray;
    uint256 private _numberOfVoters;
    bool private _isFreeMintable;

    constructor(
        string memory name_,
        string memory symbol_,
        bool isFreeMintable_,
        uint256 maxTotalSupply_,
        address[] memory voters_
    ) {
        _name = name_;
        _symbol = symbol_;
        _isFreeMintable = isFreeMintable_;
        _issuer = msg.sender;
        _maxTotalSupply = maxTotalSupply_;
        require(voters_.length > 0, "Not enough voters for quorum");
        for (uint256 i = 0; i < voters_.length; i++) {
            address newVoter = voters_[i];
            require(
                _voters[newVoter] == false,
                "This address is already a voter"
            );
            _votersArray.push(newVoter);
            _voters[newVoter] = true;
            _numberOfVoters++;
        }
    }

    function maxTotalSupply() public view override returns (uint256) {
        return _maxTotalSupply;
    }

    function getVoters() public view override returns (address[] memory) {
        return _votersArray;
    }

    function isAVoter(address addr) public view override returns (bool) {
        return _voters[addr] == true;
    }

    function isLuxochainNFT() public view virtual override returns (bool) {
        return true;
    }

    function getStorageType() public view virtual override returns (uint256) {
        return 1;
    }

    function owner() public view virtual override returns (address) {
        return _issuer;
    }

    function transferOwnership(address newIssuer) public virtual override {
        require(msg.sender == _issuer, "Not issuer");
        require(newIssuer != address(0), "New issuer is the zero address");
        _issuer = newIssuer;
        emit OwnershipTransferred(msg.sender, newIssuer);
    }

    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        returns (bool)
    {
        return
            interfaceId == _INTERFACE_ID_ERC721_METADATA ||
            interfaceId == _INTERFACE_ID_ERC721 ||
            interfaceId == _INTERFACE_ID_ERC165;
    }

    function balanceOf(address __owner)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _balances[__owner];
    }

    function ownerOf(uint256 tokenId)
        public
        view
        virtual
        override
        returns (address)
    {
        return _owners[tokenId];
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

    function count() external view override returns (uint256) {
        return _count;
    }

    function tokenURI(uint256 tokenId)
        public
        view
        virtual
        override
        returns (string memory)
    {
        return _metadataURIs[tokenId];
    }

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        require(
            _isApprovedOrOwner(msg.sender, tokenId),
            "Transfer caller is not owner nor approved"
        );
        _transfer(from, to, tokenId);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public virtual override {
        _safeTransfer(from, to, tokenId, _data);
    }

    function _safeTransfer(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _transfer(from, to, tokenId);
        require(
            _checkOnERC721Received(from, to, tokenId, _data),
            "Transfer to non ERC721Receiver implementer"
        );
    }

    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(to != address(0), "Transfer to the zero address");
        require(!_freezed[tokenId], "Token is freezed");
        require(
            _isApprovedOrOwner(msg.sender, tokenId),
            "Sender cannot transfer token"
        );
        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;
        _approve(address(0), tokenId);
        emit Transfer(from, to, tokenId);
    }

    function exists(uint256 tokenId)
        public
        view
        virtual
        override
        returns (bool)
    {
        return _owners[tokenId] != address(0);
    }

    function voteForMinting(uint256 tokenId) public override {
        require(_voters[msg.sender] == true, "You are not a voter");
        require(
            _tokensVoters[tokenId][msg.sender] == false,
            "You have already vote for this token"
        );
        _tokensVoters[tokenId][msg.sender] = true;
        _tokensVotes[tokenId]++;
    }

    function voteForUnfreeze(uint256 tokenId) public override {
        require(_voters[msg.sender] == true, "You are not a voter");
        require(
            _unfreezeVoters[tokenId][msg.sender] == false,
            "You have already vote for this token"
        );
        _unfreezeVoters[tokenId][msg.sender] = true;
        _unfreezeVotes[tokenId]++;
    }

    function voteForAddingVoter(address newVoter) public override {
        require(_voters[msg.sender] == true, "You are not a voter");
        require(
            _addressesVoters[newVoter][msg.sender] == false,
            "You have already vote for this address"
        );
        _addressesVoters[newVoter][msg.sender] = true;
        _addressesVotes[newVoter]++;
    }

    function voteForRemovingVoter(address voter) public override {
        require(_voters[msg.sender] == true, "You are not a voter");
        require(
            _revokeAddressesVoters[voter][msg.sender] == false,
            "You have already vote for this address"
        );
        _revokeAddressesVoters[voter][msg.sender] = true;
        _revokeAddressesVotes[voter]++;
    }

    function removeVoter(address voter) public override {
        require(
            _revokeAddressesVotes[voter] >= _getNeededVotersNumber(),
            "Not enought voters"
        );
        require(_numberOfVoters > 1, "Not enought remaining voters");
        require(_voters[voter] == true, "This address is not a voter ");
        uint256 indexVoter;
        for (uint256 i = 0; i < _votersArray.length; i++) {
            address loopVoter = _votersArray[i];
            if (loopVoter == voter) {
                indexVoter = i;
            }
            _addressesVoters[voter][loopVoter] = false;
        }
        _numberOfVoters--;
        _voters[voter] = false;
        _addressesVotes[voter] = 0;
        delete _votersArray[indexVoter];
        emit VoterRemoved(voter);
    }

    function addVoter(address newVoter) public override {
        require(
            _addressesVotes[newVoter] >= _getNeededVotersNumber(),
            "Not enought voters"
        );
        require(_voters[newVoter] == false, "This address is already a voter");
        for (uint256 i = 0; i < _votersArray.length; i++) {
            _revokeAddressesVoters[newVoter][_votersArray[i]] = false;
        }
        _voters[newVoter] = true;
        _numberOfVoters++;
        _votersArray.push(newVoter);
        _revokeAddressesVotes[newVoter] = 0;
        emit VoterPromoted(newVoter);
    }

    function _safeMint(
        uint256 tokenId,
        address to,
        string calldata tokenMetadataURI
    ) internal virtual {
        require(
            _isFreeMintable ||
                _tokensVotes[tokenId] >= _getNeededVotersNumber(),
            "Not enought voters"
        );
        _owners[tokenId] = to;
        _metadataURIs[tokenId] = tokenMetadataURI;
        emit Transfer(address(0), to, tokenId);
    }

    function safeMint(
        uint256 tokenId,
        address to,
        string calldata tokenMetadataURI
    ) external override {
        require(to != address(0), "Mint to the zero address");
        require(!exists(tokenId), "Token already minted");
        _totalSupply += 1;
        require(_maxTotalSupply >= _totalSupply, "Max total supply reached");
        _count += 1;
        _balances[to] += 1;
        _safeMint(tokenId, to, tokenMetadataURI);
    }

    function multipleSafeMint(
        uint256[] calldata tokensIds,
        address to,
        string[] calldata tokenMetadataURIs
    ) external override {
        require(
            tokensIds.length == tokenMetadataURIs.length,
            "Different number of tokens and metadata provided"
        );
        require(to != address(0), "Mint to the zero address");
        require(
            _maxTotalSupply >= _totalSupply + tokensIds.length,
            "Max total supply reached"
        );
        for (uint256 i = 0; i < tokensIds.length; i++) {
            uint256 tokenId = tokensIds[i];
            require(!exists(tokenId), "Token already minted");
            _safeMint(tokenId, to, tokenMetadataURIs[i]);
        }
        _count += tokensIds.length;
        _totalSupply += tokensIds.length;
        _balances[to] += tokensIds.length;
    }

    function freezeToken(uint256 tokenId, address unfreezeAddress)
        external
        override
    {
        require(
            _isApprovedOrOwner(msg.sender, tokenId),
            "Cannot freeze token: permission denied"
        );
        require(unfreezeAddress != address(0), "Invalid unfreeze address");
        _freezed[tokenId] = true;
        _unfreezeAddresses[tokenId] = unfreezeAddress;
        emit TokenFreezed(tokenId, unfreezeAddress);
    }

    function unfreezeToken(uint256 tokenId, address newOwner)
        external
        override
    {
        require(
            _unfreezeVotes[tokenId] >= _getNeededVotersNumber(),
            "Not enought voters"
        );
         require(
            _unfreezeAddresses[tokenId] == msg.sender,
            "You're not allowed to unfreeze this token"
        );
        require(newOwner != address(0), "Invalid new owner address");
        delete _freezed[tokenId];
        delete _unfreezeAddresses[tokenId];
        _owners[tokenId] = newOwner;
        emit TokenUnfreezed(tokenId, newOwner);
    }

    function isTokenFreezed(uint256 tokenId)
        public
        view
        virtual
        override
        returns (bool)
    {
        return _freezed[tokenId];
    }

    function burn(uint256 tokenId) external override {
        require(!_freezed[tokenId], "Token is freezed");
        address __owner = ownerOf(tokenId);
        require(_isApprovedOrOwner(msg.sender, tokenId), "Permission denied");
        _totalSupply -= 1;
        _balances[__owner] -= 1;
        delete _owners[tokenId];
        for (uint256 i = 0; i < _votersArray.length; i++) {
            _tokensVoters[tokenId][_votersArray[i]] = false;
        }
        _tokensVotes[tokenId] = 0;
        _approve(address(0), tokenId);
        emit Transfer(__owner, address(0), tokenId);
    }

    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (!isContract(to)) return true;
        try
            IERC721Receiver(to).onERC721Received(
                msg.sender,
                from,
                tokenId,
                _data
            )
        returns (bytes4 retval) {
            return retval == IERC721Receiver.onERC721Received.selector;
        } catch (bytes memory reason) {
            if (reason.length == 0) {
                revert("Transfer to non ERC721Receiver implementer");
            } else {
                assembly {
                    revert(add(32, reason), mload(reason))
                }
            }
        }
    }

    function _isApprovedOrOwner(address spender, uint256 tokenId)
        internal
        view
        virtual
        returns (bool)
    {
        require(exists(tokenId), "Operator query for nonexistent token");
        address __owner = ownerOf(tokenId);
        return (spender == __owner ||
            getApproved(tokenId) == spender ||
            isApprovedForAll(__owner, spender));
    }

    function _setApprovalForAll(
        address __owner,
        address operator,
        bool approved
    ) internal virtual {
        require(__owner != operator, "Approve to caller");
        _operatorApprovals[__owner][operator] = approved;
        emit ApprovalForAll(__owner, operator, approved);
    }

    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ownerOf(tokenId), to, tokenId);
    }

    function approve(address to, uint256 tokenId) public virtual override {
        address __owner = ownerOf(tokenId);
        require(to != __owner, "Approval to current owner");
        require(
            msg.sender == __owner || isApprovedForAll(__owner, msg.sender),
            "Approve caller is not owner nor approved for all"
        );
        _approve(to, tokenId);
    }

    function getApproved(uint256 tokenId)
        public
        view
        virtual
        override
        returns (address)
    {
        require(exists(tokenId), "Approved query for nonexistent token");
        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved)
        public
        virtual
        override
    {
        _setApprovalForAll(msg.sender, operator, approved);
    }

    function isApprovedForAll(address __owner, address operator)
        public
        view
        virtual
        override
        returns (bool)
    {
        return _operatorApprovals[__owner][operator];
    }

    function _getNeededVotersNumber() internal view returns (uint256) {
        uint256 quotient = _numberOfVoters / 2;
        if (quotient == 0) {
            return 1;
        }
        uint256 remainder = _numberOfVoters - 2 * quotient;
        if (remainder > 0) {
            return quotient + 1;
        }
        return quotient;
    }

    function quorum() external view returns (uint256) {
        return _getNeededVotersNumber();
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"bool","name":"isFreeMintable_","type":"bool"},{"internalType":"uint256","name":"maxTotalSupply_","type":"uint256"},{"internalType":"address[]","name":"voters_","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"","type":"address"},{"indexed":true,"internalType":"address","name":"","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"unfreezableAddress","type":"address"}],"name":"TokenFreezed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"TokenUnfreezed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newVoter","type":"address"}],"name":"VoterPromoted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldVoter","type":"address"}],"name":"VoterRemoved","type":"event"},{"inputs":[{"internalType":"address","name":"newVoter","type":"address"}],"name":"addVoter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"__owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"unfreezeAddress","type":"address"}],"name":"freezeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStorageType","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVoters","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isAVoter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"isLuxochainNFT","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"isTokenFreezed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokensIds","type":"uint256[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"string[]","name":"tokenMetadataURIs","type":"string[]"}],"name":"multipleSafeMint","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":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"voter","type":"address"}],"name":"removeVoter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"string","name":"tokenMetadataURI","type":"string"}],"name":"safeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newIssuer","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"newOwner","type":"address"}],"name":"unfreezeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newVoter","type":"address"}],"name":"voteForAddingVoter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"voteForMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"voter","type":"address"}],"name":"voteForRemovingVoter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"voteForUnfreeze","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040516200583d3803806200583d8339818101604052810190620000379190620006d4565b84600390805190602001906200004f929190620002cf565b50836004908051906020019062000068929190620002cf565b5082601860006101000a81548160ff02191690831515021790555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600181905550600081511162000112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000109906200081a565b60405180910390fd5b60005b8151811015620002c35760008282815181106200013757620001366200083c565b5b6020026020010151905060001515601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514620001d7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001ce90620008bb565b60405180910390fd5b6016819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060176000815480929190620002a7906200090c565b9190505550508080620002ba906200090c565b91505062000115565b505050505050620009bf565b828054620002dd9062000989565b90600052602060002090601f0160209004810192826200030157600085556200034d565b82601f106200031c57805160ff19168380011785556200034d565b828001600101855582156200034d579182015b828111156200034c5782518255916020019190600101906200032f565b5b5090506200035c919062000360565b5090565b5b808211156200037b57600081600090555060010162000361565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620003e8826200039d565b810181811067ffffffffffffffff821117156200040a5762000409620003ae565b5b80604052505050565b60006200041f6200037f565b90506200042d8282620003dd565b919050565b600067ffffffffffffffff82111562000450576200044f620003ae565b5b6200045b826200039d565b9050602081019050919050565b60005b83811015620004885780820151818401526020810190506200046b565b8381111562000498576000848401525b50505050565b6000620004b5620004af8462000432565b62000413565b905082815260208101848484011115620004d457620004d362000398565b5b620004e184828562000468565b509392505050565b600082601f83011262000501576200050062000393565b5b8151620005138482602086016200049e565b91505092915050565b60008115159050919050565b62000533816200051c565b81146200053f57600080fd5b50565b600081519050620005538162000528565b92915050565b6000819050919050565b6200056e8162000559565b81146200057a57600080fd5b50565b6000815190506200058e8162000563565b92915050565b600067ffffffffffffffff821115620005b257620005b1620003ae565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620005f582620005c8565b9050919050565b6200060781620005e8565b81146200061357600080fd5b50565b6000815190506200062781620005fc565b92915050565b6000620006446200063e8462000594565b62000413565b905080838252602082019050602084028301858111156200066a5762000669620005c3565b5b835b8181101562000697578062000682888262000616565b8452602084019350506020810190506200066c565b5050509392505050565b600082601f830112620006b957620006b862000393565b5b8151620006cb8482602086016200062d565b91505092915050565b600080600080600060a08688031215620006f357620006f262000389565b5b600086015167ffffffffffffffff8111156200071457620007136200038e565b5b6200072288828901620004e9565b955050602086015167ffffffffffffffff8111156200074657620007456200038e565b5b6200075488828901620004e9565b9450506040620007678882890162000542565b93505060606200077a888289016200057d565b925050608086015167ffffffffffffffff8111156200079e576200079d6200038e565b5b620007ac88828901620006a1565b9150509295509295909350565b600082825260208201905092915050565b7f4e6f7420656e6f75676820766f7465727320666f722071756f72756d00000000600082015250565b600062000802601c83620007b9565b91506200080f82620007ca565b602082019050919050565b600060208201905081810360008301526200083581620007f3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f54686973206164647265737320697320616c7265616479206120766f74657200600082015250565b6000620008a3601f83620007b9565b9150620008b0826200086b565b602082019050919050565b60006020820190508181036000830152620008d68162000894565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009198262000559565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156200094f576200094e620008dd565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620009a257607f821691505b60208210811415620009b957620009b86200095a565b5b50919050565b614e6e80620009cf6000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c806370a0823111610125578063c87b56dd116100ad578063e985e9c51161007c578063e985e9c514610639578063f2fde38b14610669578063f4ab9adf14610685578063f626cf2c146106a1578063ff86e606146106bd5761021c565b8063c87b56dd146105b3578063ccf809c1146105e3578063cdd72253146105ff578063dc5540c01461061d5761021c565b806395e4207a116100f457806395e4207a14610525578063a142192414610541578063a22cb4651461055d578063a645b95514610579578063b88d4fde146105975761021c565b806370a082311461049d57806386c1ff68146104cd5780638da5cb5b146104e957806395d89b41146105075761021c565b806323b872dd116101a857806342842e0e1161017757806342842e0e146103e957806342966c68146104055780634f558e79146104215780636352211e14610451578063689745df146104815761021c565b806323b872dd1461036157806327f4b2eb1461037d57806327f8237d146103ad5780632ab4d052146103cb5761021c565b8063081812fc116101ef578063081812fc146102bd578063095ea7b3146102ed5780631703a018146103095780631745517d1461032757806318160ddd146103435761021c565b806301ffc9a71461022157806304915f821461025157806306661abd1461028157806306fdde031461029f575b600080fd5b61023b6004803603810190610236919061346c565b6106d9565b60405161024891906134b4565b60405180910390f35b61026b60048036038101906102669190613505565b6107c8565b60405161027891906134b4565b60405180910390f35b6102896107f2565b6040516102969190613541565b60405180910390f35b6102a76107fc565b6040516102b491906135f5565b60405180910390f35b6102d760048036038101906102d29190613505565b61088e565b6040516102e49190613658565b60405180910390f35b6103076004803603810190610302919061369f565b610913565b005b610311610a1d565b60405161031e9190613541565b60405180910390f35b610341600480360381019061033c919061379a565b610a2c565b005b61034b610c89565b6040516103589190613541565b60405180910390f35b61037b6004803603810190610376919061382f565b610c92565b005b61039760048036038101906103929190613882565b610ceb565b6040516103a491906134b4565b60405180910390f35b6103b5610d48565b6040516103c29190613541565b60405180910390f35b6103d3610d51565b6040516103e09190613541565b60405180910390f35b61040360048036038101906103fe919061382f565b610d5b565b005b61041f600480360381019061041a9190613505565b610d7b565b005b61043b60048036038101906104369190613505565b611027565b60405161044891906134b4565b60405180910390f35b61046b60048036038101906104669190613505565b611093565b6040516104789190613658565b60405180910390f35b61049b60048036038101906104969190613882565b6110d0565b005b6104b760048036038101906104b29190613882565b611320565b6040516104c49190613541565b60405180910390f35b6104e760048036038101906104e29190613882565b611369565b005b6104f1611735565b6040516104fe9190613658565b60405180910390f35b61050f61175f565b60405161051c91906135f5565b60405180910390f35b61053f600480360381019061053a9190613882565b6117f1565b005b61055b600480360381019061055691906138af565b611a41565b005b6105776004803603810190610572919061391b565b611c97565b005b610581611ca6565b60405161058e91906134b4565b60405180910390f35b6105b160048036038101906105ac9190613a8b565b611caf565b005b6105cd60048036038101906105c89190613505565b611cc1565b6040516105da91906135f5565b60405180910390f35b6105fd60048036038101906105f89190613505565b611d66565b005b610607611f32565b6040516106149190613bcc565b60405180910390f35b610637600480360381019061063291906138af565b611fc0565b005b610653600480360381019061064e9190613bee565b612134565b60405161066091906134b4565b60405180910390f35b610683600480360381019061067e9190613882565b6121c8565b005b61069f600480360381019061069a9190613882565b612366565b005b6106bb60048036038101906106b69190613c84565b6126cb565b005b6106d760048036038101906106d29190613505565b612867565b005b6000635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061077257506380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107c157506301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6000600b600083815260200190815260200160002060009054906101000a900460ff169050919050565b6000600254905090565b60606003805461080b90613d27565b80601f016020809104026020016040519081016040528092919081815260200182805461083790613d27565b80156108845780601f1061085957610100808354040283529160200191610884565b820191906000526020600020905b81548152906001019060200180831161086757829003601f168201915b5050505050905090565b600061089982611027565b6108d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cf90613dcb565b60405180910390fd5b6007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061091e82611093565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561098f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098690613e37565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109cf57506109ce8133612134565b5b610a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0590613ec9565b60405180910390fd5b610a188383612a33565b505050565b6000610a27612aec565b905090565b818190508585905014610a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6b90613f5b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adb90613fc7565b60405180910390fd5b84849050600054610af59190614016565b6001541015610b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b30906140b8565b60405180910390fd5b60005b85859050811015610bf1576000868683818110610b5c57610b5b6140d8565b5b905060200201359050610b6e81611027565b15610bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba590614153565b60405180910390fd5b610bdd8186868686818110610bc657610bc56140d8565b5b9050602002810190610bd89190614182565b612b59565b508080610be9906141e5565b915050610b3c565b508484905060026000828254610c079190614016565b9250508190555084849050600080828254610c229190614016565b9250508190555084849050600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c7b9190614016565b925050819055505050505050565b60008054905090565b610c9c3382612ca4565b610cdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd2906142a0565b60405180910390fd5b610ce6838383612d82565b505050565b600060011515601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515149050919050565b60006001905090565b6000600154905090565b610d7683838360405180602001604052806000815250611caf565b505050565b600b600082815260200190815260200160002060009054906101000a900460ff1615610ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd39061430c565b60405180910390fd5b6000610de782611093565b9050610df33383612ca4565b610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2990614378565b60405180910390fd5b6001600080828254610e449190614398565b925050819055506001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e9b9190614398565b925050819055506008600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560005b601680549050811015610fa2576000600d6000858152602001908152602001600020600060168481548110610f1357610f126140d8565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f9a906141e5565b915050610edb565b506000600f600084815260200190815260200160002081905550610fc7600083612a33565b81600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60008073ffffffffffffffffffffffffffffffffffffffff166008600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60006008600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60011515601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611163576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115a90614418565b60405180910390fd5b60001515601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122a906144aa565b60405180910390fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611318906141e5565b919050555050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611371612aec565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156113f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e990614516565b60405180910390fd5b600160175411611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142e90614582565b60405180910390fd5b60011515601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c1906145ee565b60405180910390fd5b600080600090505b601680549050811015611603576000601682815481106114f5576114f46140d8565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561155a578192505b6000601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505080806115fb906141e5565b9150506114d2565b50601760008154809291906116179061460e565b91905055506000601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601681815481106116cd576116cc6140d8565b5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690557fa14a79af012d1756818f9bd59ccfc9ad185a71df86b9392d9059d9e6faf6d644826040516117299190613658565b60405180910390a15050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461176e90613d27565b80601f016020809104026020016040519081016040528092919081815260200182805461179a90613d27565b80156117e75780601f106117bc576101008083540402835291602001916117e7565b820191906000526020600020905b8154815290600101906020018083116117ca57829003601f168201915b5050505050905090565b60011515601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187b90614418565b60405180910390fd5b60001515601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194b906144aa565b60405180910390fd5b6001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611a39906141e5565b919050555050565b611a49612aec565b60146000848152602001908152602001600020541015611a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9590614516565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600c600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b36906146aa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba690614716565b60405180910390fd5b600b600083815260200190815260200160002060006101000a81549060ff0219169055600c600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055806008600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f75e417375987343758f0c7626fc69322b5a41d8dec15c4c37a683c16f7f7502c8282604051611c8b929190614736565b60405180910390a15050565b611ca2338383613007565b5050565b60006001905090565b611cbb84848484613174565b50505050565b6060600a60008381526020019081526020016000208054611ce190613d27565b80601f0160208091040260200160405190810160405280929190818152602001828054611d0d90613d27565b8015611d5a5780601f10611d2f57610100808354040283529160200191611d5a565b820191906000526020600020905b815481529060010190602001808311611d3d57829003601f168201915b50505050509050919050565b60011515601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df090614418565b60405180910390fd5b60001515600d600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e94906147d1565b60405180910390fd5b6001600d600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600f60008281526020019081526020016000206000815480929190611f2a906141e5565b919050555050565b60606016805480602002602001604051908101604052809291908181526020018280548015611fb657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611f6c575b5050505050905090565b611fca3383612ca4565b612009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200090614863565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612079576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612070906148cf565b60405180910390fd5b6001600b600084815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f682012779034abada8e790e0b1d9aa8bdd94f696ca0ef1bc73b9af4d3df7265f8282604051612128929190614736565b60405180910390a15050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224f9061493b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bf906149a7565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b61236e612aec565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156123ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e690614516565b60405180910390fd5b60001515601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514612482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247990614a13565b60405180910390fd5b60005b601680549050811015612578576000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601684815481106124e9576124e86140d8565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080612570906141e5565b915050612485565b506001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601760008154809291906125e4906141e5565b91905055506016819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fea549ebb04beed850f55b99f8e130ae4bdf23f98c0df7552932f7cd5b78b5c96816040516126c09190613658565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561273b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273290613fc7565b60405180910390fd5b61274484611027565b15612784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277b90614153565b60405180910390fd5b60016000808282546127969190614016565b9250508190555060005460015410156127e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127db906140b8565b60405180910390fd5b6001600260008282546127f79190614016565b925050819055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461284e9190614016565b9250508190555061286184848484612b59565b50505050565b60011515601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146128fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f190614418565b60405180910390fd5b60001515600e600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461299e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612995906147d1565b60405180910390fd5b6001600e600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601460008281526020019081526020016000206000815480929190612a2b906141e5565b919050555050565b816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612aa683611093565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806002601754612afe9190614a62565b90506000811415612b13576001915050612b56565b6000816002612b229190614a93565b601754612b2f9190614398565b90506000811115612b5057600182612b479190614016565b92505050612b56565b81925050505b90565b601860009054906101000a900460ff1680612b8e5750612b77612aec565b600f60008681526020019081526020016000205410155b612bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc490614516565b60405180910390fd5b826008600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508181600a60008781526020019081526020016000209190612c4192919061335d565b50838373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b6000612caf82611027565b612cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce590614b5f565b60405180910390fd5b6000612cf983611093565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612d6857508373ffffffffffffffffffffffffffffffffffffffff16612d508461088e565b73ffffffffffffffffffffffffffffffffffffffff16145b80612d795750612d788185612134565b5b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de990614bcb565b60405180910390fd5b600b600082815260200190815260200160002060009054906101000a900460ff1615612e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4a9061430c565b60405180910390fd5b612e5d3382612ca4565b612e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9390614c37565b60405180910390fd5b6001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612eec9190614398565b925050819055506001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f439190614016565b92505081905550816008600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612fa7600082612a33565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306d90614ca3565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161316791906134b4565b60405180910390a3505050565b61317f848484612d82565b61318b848484846131d0565b6131ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c190614d35565b60405180910390fd5b50505050565b60006131db8461333a565b6131e85760019050613332565b8373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b81526004016132279493929190614daa565b6020604051808303816000875af192505050801561326357506040513d601f19601f820116820180604052508101906132609190614e0b565b60015b6132e6573d8060008114613293576040519150601f19603f3d011682016040523d82523d6000602084013e613298565b606091505b506000815114156132de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132d590614d35565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b82805461336990613d27565b90600052602060002090601f01602090048101928261338b57600085556133d2565b82601f106133a457803560ff19168380011785556133d2565b828001600101855582156133d2579182015b828111156133d15782358255916020019190600101906133b6565b5b5090506133df91906133e3565b5090565b5b808211156133fc5760008160009055506001016133e4565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61344981613414565b811461345457600080fd5b50565b60008135905061346681613440565b92915050565b6000602082840312156134825761348161340a565b5b600061349084828501613457565b91505092915050565b60008115159050919050565b6134ae81613499565b82525050565b60006020820190506134c960008301846134a5565b92915050565b6000819050919050565b6134e2816134cf565b81146134ed57600080fd5b50565b6000813590506134ff816134d9565b92915050565b60006020828403121561351b5761351a61340a565b5b6000613529848285016134f0565b91505092915050565b61353b816134cf565b82525050565b60006020820190506135566000830184613532565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561359657808201518184015260208101905061357b565b838111156135a5576000848401525b50505050565b6000601f19601f8301169050919050565b60006135c78261355c565b6135d18185613567565b93506135e1818560208601613578565b6135ea816135ab565b840191505092915050565b6000602082019050818103600083015261360f81846135bc565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061364282613617565b9050919050565b61365281613637565b82525050565b600060208201905061366d6000830184613649565b92915050565b61367c81613637565b811461368757600080fd5b50565b60008135905061369981613673565b92915050565b600080604083850312156136b6576136b561340a565b5b60006136c48582860161368a565b92505060206136d5858286016134f0565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112613704576137036136df565b5b8235905067ffffffffffffffff811115613721576137206136e4565b5b60208301915083602082028301111561373d5761373c6136e9565b5b9250929050565b60008083601f84011261375a576137596136df565b5b8235905067ffffffffffffffff811115613777576137766136e4565b5b602083019150836020820283011115613793576137926136e9565b5b9250929050565b6000806000806000606086880312156137b6576137b561340a565b5b600086013567ffffffffffffffff8111156137d4576137d361340f565b5b6137e0888289016136ee565b955095505060206137f38882890161368a565b935050604086013567ffffffffffffffff8111156138145761381361340f565b5b61382088828901613744565b92509250509295509295909350565b6000806000606084860312156138485761384761340a565b5b60006138568682870161368a565b93505060206138678682870161368a565b9250506040613878868287016134f0565b9150509250925092565b6000602082840312156138985761389761340a565b5b60006138a68482850161368a565b91505092915050565b600080604083850312156138c6576138c561340a565b5b60006138d4858286016134f0565b92505060206138e58582860161368a565b9150509250929050565b6138f881613499565b811461390357600080fd5b50565b600081359050613915816138ef565b92915050565b600080604083850312156139325761393161340a565b5b60006139408582860161368a565b925050602061395185828601613906565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613998826135ab565b810181811067ffffffffffffffff821117156139b7576139b6613960565b5b80604052505050565b60006139ca613400565b90506139d6828261398f565b919050565b600067ffffffffffffffff8211156139f6576139f5613960565b5b6139ff826135ab565b9050602081019050919050565b82818337600083830152505050565b6000613a2e613a29846139db565b6139c0565b905082815260208101848484011115613a4a57613a4961395b565b5b613a55848285613a0c565b509392505050565b600082601f830112613a7257613a716136df565b5b8135613a82848260208601613a1b565b91505092915050565b60008060008060808587031215613aa557613aa461340a565b5b6000613ab38782880161368a565b9450506020613ac48782880161368a565b9350506040613ad5878288016134f0565b925050606085013567ffffffffffffffff811115613af657613af561340f565b5b613b0287828801613a5d565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b4381613637565b82525050565b6000613b558383613b3a565b60208301905092915050565b6000602082019050919050565b6000613b7982613b0e565b613b838185613b19565b9350613b8e83613b2a565b8060005b83811015613bbf578151613ba68882613b49565b9750613bb183613b61565b925050600181019050613b92565b5085935050505092915050565b60006020820190508181036000830152613be68184613b6e565b905092915050565b60008060408385031215613c0557613c0461340a565b5b6000613c138582860161368a565b9250506020613c248582860161368a565b9150509250929050565b60008083601f840112613c4457613c436136df565b5b8235905067ffffffffffffffff811115613c6157613c606136e4565b5b602083019150836001820283011115613c7d57613c7c6136e9565b5b9250929050565b60008060008060608587031215613c9e57613c9d61340a565b5b6000613cac878288016134f0565b9450506020613cbd8782880161368a565b935050604085013567ffffffffffffffff811115613cde57613cdd61340f565b5b613cea87828801613c2e565b925092505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613d3f57607f821691505b60208210811415613d5357613d52613cf8565b5b50919050565b7f417070726f76656420717565727920666f72206e6f6e6578697374656e74207460008201527f6f6b656e00000000000000000000000000000000000000000000000000000000602082015250565b6000613db5602483613567565b9150613dc082613d59565b604082019050919050565b60006020820190508181036000830152613de481613da8565b9050919050565b7f417070726f76616c20746f2063757272656e74206f776e657200000000000000600082015250565b6000613e21601983613567565b9150613e2c82613deb565b602082019050919050565b60006020820190508181036000830152613e5081613e14565b9050919050565b7f417070726f76652063616c6c6572206973206e6f74206f776e6572206e6f722060008201527f617070726f76656420666f7220616c6c00000000000000000000000000000000602082015250565b6000613eb3603083613567565b9150613ebe82613e57565b604082019050919050565b60006020820190508181036000830152613ee281613ea6565b9050919050565b7f446966666572656e74206e756d626572206f6620746f6b656e7320616e64206d60008201527f657461646174612070726f766964656400000000000000000000000000000000602082015250565b6000613f45603083613567565b9150613f5082613ee9565b604082019050919050565b60006020820190508181036000830152613f7481613f38565b9050919050565b7f4d696e7420746f20746865207a65726f20616464726573730000000000000000600082015250565b6000613fb1601883613567565b9150613fbc82613f7b565b602082019050919050565b60006020820190508181036000830152613fe081613fa4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614021826134cf565b915061402c836134cf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561406157614060613fe7565b5b828201905092915050565b7f4d617820746f74616c20737570706c7920726561636865640000000000000000600082015250565b60006140a2601883613567565b91506140ad8261406c565b602082019050919050565b600060208201905081810360008301526140d181614095565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f546f6b656e20616c7265616479206d696e746564000000000000000000000000600082015250565b600061413d601483613567565b915061414882614107565b602082019050919050565b6000602082019050818103600083015261416c81614130565b9050919050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261419f5761419e614173565b5b80840192508235915067ffffffffffffffff8211156141c1576141c0614178565b5b6020830192506001820236038313156141dd576141dc61417d565b5b509250929050565b60006141f0826134cf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561422357614222613fe7565b5b600182019050919050565b7f5472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b600061428a602983613567565b91506142958261422e565b604082019050919050565b600060208201905081810360008301526142b98161427d565b9050919050565b7f546f6b656e20697320667265657a656400000000000000000000000000000000600082015250565b60006142f6601083613567565b9150614301826142c0565b602082019050919050565b60006020820190508181036000830152614325816142e9565b9050919050565b7f5065726d697373696f6e2064656e696564000000000000000000000000000000600082015250565b6000614362601183613567565b915061436d8261432c565b602082019050919050565b6000602082019050818103600083015261439181614355565b9050919050565b60006143a3826134cf565b91506143ae836134cf565b9250828210156143c1576143c0613fe7565b5b828203905092915050565b7f596f7520617265206e6f74206120766f74657200000000000000000000000000600082015250565b6000614402601383613567565b915061440d826143cc565b602082019050919050565b60006020820190508181036000830152614431816143f5565b9050919050565b7f596f75206861766520616c726561647920766f746520666f722074686973206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614494602683613567565b915061449f82614438565b604082019050919050565b600060208201905081810360008301526144c381614487565b9050919050565b7f4e6f7420656e6f7567687420766f746572730000000000000000000000000000600082015250565b6000614500601283613567565b915061450b826144ca565b602082019050919050565b6000602082019050818103600083015261452f816144f3565b9050919050565b7f4e6f7420656e6f756768742072656d61696e696e6720766f7465727300000000600082015250565b600061456c601c83613567565b915061457782614536565b602082019050919050565b6000602082019050818103600083015261459b8161455f565b9050919050565b7f546869732061646472657373206973206e6f74206120766f7465722000000000600082015250565b60006145d8601c83613567565b91506145e3826145a2565b602082019050919050565b60006020820190508181036000830152614607816145cb565b9050919050565b6000614619826134cf565b9150600082141561462d5761462c613fe7565b5b600182039050919050565b7f596f75277265206e6f7420616c6c6f77656420746f20756e667265657a65207460008201527f68697320746f6b656e0000000000000000000000000000000000000000000000602082015250565b6000614694602983613567565b915061469f82614638565b604082019050919050565b600060208201905081810360008301526146c381614687565b9050919050565b7f496e76616c6964206e6577206f776e6572206164647265737300000000000000600082015250565b6000614700601983613567565b915061470b826146ca565b602082019050919050565b6000602082019050818103600083015261472f816146f3565b9050919050565b600060408201905061474b6000830185613532565b6147586020830184613649565b9392505050565b7f596f75206861766520616c726561647920766f746520666f722074686973207460008201527f6f6b656e00000000000000000000000000000000000000000000000000000000602082015250565b60006147bb602483613567565b91506147c68261475f565b604082019050919050565b600060208201905081810360008301526147ea816147ae565b9050919050565b7f43616e6e6f7420667265657a6520746f6b656e3a207065726d697373696f6e2060008201527f64656e6965640000000000000000000000000000000000000000000000000000602082015250565b600061484d602683613567565b9150614858826147f1565b604082019050919050565b6000602082019050818103600083015261487c81614840565b9050919050565b7f496e76616c696420756e667265657a6520616464726573730000000000000000600082015250565b60006148b9601883613567565b91506148c482614883565b602082019050919050565b600060208201905081810360008301526148e8816148ac565b9050919050565b7f4e6f742069737375657200000000000000000000000000000000000000000000600082015250565b6000614925600a83613567565b9150614930826148ef565b602082019050919050565b6000602082019050818103600083015261495481614918565b9050919050565b7f4e65772069737375657220697320746865207a65726f20616464726573730000600082015250565b6000614991601e83613567565b915061499c8261495b565b602082019050919050565b600060208201905081810360008301526149c081614984565b9050919050565b7f54686973206164647265737320697320616c7265616479206120766f74657200600082015250565b60006149fd601f83613567565b9150614a08826149c7565b602082019050919050565b60006020820190508181036000830152614a2c816149f0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a6d826134cf565b9150614a78836134cf565b925082614a8857614a87614a33565b5b828204905092915050565b6000614a9e826134cf565b9150614aa9836134cf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ae257614ae1613fe7565b5b828202905092915050565b7f4f70657261746f7220717565727920666f72206e6f6e6578697374656e74207460008201527f6f6b656e00000000000000000000000000000000000000000000000000000000602082015250565b6000614b49602483613567565b9150614b5482614aed565b604082019050919050565b60006020820190508181036000830152614b7881614b3c565b9050919050565b7f5472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000614bb5601c83613567565b9150614bc082614b7f565b602082019050919050565b60006020820190508181036000830152614be481614ba8565b9050919050565b7f53656e6465722063616e6e6f74207472616e7366657220746f6b656e00000000600082015250565b6000614c21601c83613567565b9150614c2c82614beb565b602082019050919050565b60006020820190508181036000830152614c5081614c14565b9050919050565b7f417070726f766520746f2063616c6c6572000000000000000000000000000000600082015250565b6000614c8d601183613567565b9150614c9882614c57565b602082019050919050565b60006020820190508181036000830152614cbc81614c80565b9050919050565b7f5472616e7366657220746f206e6f6e204552433732315265636569766572206960008201527f6d706c656d656e74657200000000000000000000000000000000000000000000602082015250565b6000614d1f602a83613567565b9150614d2a82614cc3565b604082019050919050565b60006020820190508181036000830152614d4e81614d12565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000614d7c82614d55565b614d868185614d60565b9350614d96818560208601613578565b614d9f816135ab565b840191505092915050565b6000608082019050614dbf6000830187613649565b614dcc6020830186613649565b614dd96040830185613532565b8181036060830152614deb8184614d71565b905095945050505050565b600081519050614e0581613440565b92915050565b600060208284031215614e2157614e2061340a565b5b6000614e2f84828501614df6565b9150509291505056fea264697066735822122026bb41251c79fcbf880c80fd1d7801a886d705d51fb6c78376cd305fb10ca0f464736f6c634300080c003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000184f63746f2046696e697373696d6f20556c747261204e4654000000000000000000000000000000000000000000000000000000000000000000000000000000184f43544f5f46494e495353494d4f5f554c5452415f4e465400000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000d220ce18c1f3462370c1b2b62770e80a2388c035000000000000000000000000ed51a8f3fca6adc0abf15d910e7dfa30b9e035cf00000000000000000000000066133d5ffb3953e5c678cc17ef52aad09578d99f

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

00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000184f63746f2046696e697373696d6f20556c747261204e4654000000000000000000000000000000000000000000000000000000000000000000000000000000184f43544f5f46494e495353494d4f5f554c5452415f4e465400000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000d220ce18c1f3462370c1b2b62770e80a2388c035000000000000000000000000ed51a8f3fca6adc0abf15d910e7dfa30b9e035cf00000000000000000000000066133d5ffb3953e5c678cc17ef52aad09578d99f

-----Decoded View---------------
Arg [0] : name_ (string): Octo Finissimo Ultra NFT
Arg [1] : symbol_ (string): OCTO_FINISSIMO_ULTRA_NFT
Arg [2] : isFreeMintable_ (bool): False
Arg [3] : maxTotalSupply_ (uint256): 10
Arg [4] : voters_ (address[]): 0xd220ce18c1f3462370c1b2b62770e80a2388c035,0xed51a8f3fca6adc0abf15d910e7dfa30b9e035cf,0x66133d5ffb3953e5c678cc17ef52aad09578d99f

-----Encoded View---------------
13 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000018
Arg [6] : 4f63746f2046696e697373696d6f20556c747261204e46540000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000018
Arg [8] : 4f43544f5f46494e495353494d4f5f554c5452415f4e46540000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [10] : 000000000000000000000000d220ce18c1f3462370c1b2b62770e80a2388c035
Arg [11] : 000000000000000000000000ed51a8f3fca6adc0abf15d910e7dfa30b9e035cf
Arg [12] : 00000000000000000000000066133d5ffb3953e5c678cc17ef52aad09578d99f


Deployed ByteCode Sourcemap

3787:16549:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7131:310;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16151:178;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8145:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7815:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19189:260;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18793:388;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20233:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14158:878;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8035:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8437:311;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6380:115;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6611:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6151:106;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8756:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16337:600;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10081:183;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7634:173;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11017:380;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7449:177;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11801:810;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6719:97;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7923:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11405:388;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15524:619;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19457:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6503:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8949:214;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8243:186;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10272:361;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6265:107;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15044:472;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19650:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6824:299;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12619:603;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13676:474;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10641:368;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7131:310;7243:4;3915:10;7300:29;;7285:44;;;:11;:44;;;;:96;;;;3979:10;7361:20;;7346:35;;;:11;:35;;;;7285:96;:148;;;;4043:10;7413:20;;7398:35;;;:11;:35;;;;7285:148;7265:168;;7131:310;;;:::o;16151:178::-;16275:4;16304:8;:17;16313:7;16304:17;;;;;;;;;;;;;;;;;;;;;16297:24;;16151:178;;;:::o;8145:90::-;8194:7;8221:6;;8214:13;;8145:90;:::o;7815:100::-;7869:13;7902:5;7895:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7815:100;:::o;19189:260::-;19310:7;19343:15;19350:7;19343:6;:15::i;:::-;19335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19417:15;:24;19433:7;19417:24;;;;;;;;;;;;;;;;;;;;;19410:31;;19189:260;;;:::o;18793:388::-;18874:15;18892:16;18900:7;18892;:16::i;:::-;18874:34;;18933:7;18927:13;;:2;:13;;;;18919:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;19017:7;19003:21;;:10;:21;;;:62;;;;19028:37;19045:7;19054:10;19028:16;:37::i;:::-;19003:62;18981:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;19152:21;19161:2;19165:7;19152:8;:21::i;:::-;18863:318;18793:388;;:::o;20233:100::-;20274:7;20301:24;:22;:24::i;:::-;20294:31;;20233:100;:::o;14158:878::-;14368:17;;:24;;14348:9;;:16;;:44;14326:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;14501:1;14487:16;;:2;:16;;;;14479:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;14599:9;;:16;;14584:12;;:31;;;;:::i;:::-;14565:15;;:50;;14543:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;14683:9;14678:227;14702:9;;:16;;14698:1;:20;14678:227;;;14740:15;14758:9;;14768:1;14758:12;;;;;;;:::i;:::-;;;;;;;;14740:30;;14794:15;14801:7;14794:6;:15::i;:::-;14793:16;14785:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;14849:44;14859:7;14868:2;14872:17;;14890:1;14872:20;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;14849:9;:44::i;:::-;14725:180;14720:3;;;;;:::i;:::-;;;;14678:227;;;;14925:9;;:16;;14915:6;;:26;;;;;;;:::i;:::-;;;;;;;;14968:9;;:16;;14952:12;;:32;;;;;;;:::i;:::-;;;;;;;;15012:9;;:16;;14995:9;:13;15005:2;14995:13;;;;;;;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;;;;;14158:878;;;;;:::o;8035:102::-;8090:7;8117:12;;8110:19;;8035:102;:::o;8437:311::-;8593:39;8612:10;8624:7;8593:18;:39::i;:::-;8571:130;;;;;;;;;;;;:::i;:::-;;;;;;;;;8712:28;8722:4;8728:2;8732:7;8712:9;:28::i;:::-;8437:311;;;:::o;6380:115::-;6442:4;6483;6466:21;;:7;:13;6474:4;6466:13;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;6459:28;;6380:115;;;:::o;6611:100::-;6675:7;6702:1;6695:8;;6611:100;:::o;6151:106::-;6207:7;6234:15;;6227:22;;6151:106;:::o;8756:185::-;8894:39;8911:4;8917:2;8921:7;8894:39;;;;;;;;;;;;:16;:39::i;:::-;8756:185;;;:::o;16337:600::-;16406:8;:17;16415:7;16406:17;;;;;;;;;;;;;;;;;;;;;16405:18;16397:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;16455:15;16473:16;16481:7;16473;:16::i;:::-;16455:34;;16508:39;16527:10;16539:7;16508:18;:39::i;:::-;16500:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;16596:1;16580:12;;:17;;;;;;;:::i;:::-;;;;;;;;16630:1;16608:9;:18;16618:7;16608:18;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;16649:7;:16;16657:7;16649:16;;;;;;;;;;;;16642:23;;;;;;;;;;;16681:9;16676:124;16700:12;:19;;;;16696:1;:23;16676:124;;;16783:5;16741:13;:22;16755:7;16741:22;;;;;;;;;;;:39;16764:12;16777:1;16764:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16741:39;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;16721:3;;;;;:::i;:::-;;;;16676:124;;;;16834:1;16810:12;:21;16823:7;16810:21;;;;;;;;;;;:25;;;;16846:29;16863:1;16867:7;16846:8;:29::i;:::-;16921:7;16917:1;16891:38;;16900:7;16891:38;;;;;;;;;;;;16386:551;16337:600;:::o;10081:183::-;10197:4;10254:1;10226:30;;:7;:16;10234:7;10226:16;;;;;;;;;;;;;;;;;;;;;:30;;;;10219:37;;10081:183;;;:::o;7634:173::-;7751:7;7783;:16;7791:7;7783:16;;;;;;;;;;;;;;;;;;;;;7776:23;;7634:173;;;:::o;11017:380::-;11121:4;11098:27;;:7;:19;11106:10;11098:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;11090:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;11224:5;11182:47;;:16;:26;11199:8;11182:26;;;;;;;;;;;;;;;:38;11209:10;11182:38;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;11160:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;11347:4;11306:16;:26;11323:8;11306:26;;;;;;;;;;;;;;;:38;11333:10;11306:38;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;11362:15;:25;11378:8;11362:25;;;;;;;;;;;;;;;;:27;;;;;;;;;:::i;:::-;;;;;;11017:380;:::o;7449:177::-;7568:7;7600:9;:18;7610:7;7600:18;;;;;;;;;;;;;;;;7593:25;;7449:177;;;:::o;11801:810::-;11918:24;:22;:24::i;:::-;11886:21;:28;11908:5;11886:28;;;;;;;;;;;;;;;;:56;;11864:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;12025:1;12007:15;;:19;11999:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12096:4;12078:22;;:7;:14;12086:5;12078:14;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;12070:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;12144:18;12178:9;12190:1;12178:13;;12173:256;12197:12;:19;;;;12193:1;:23;12173:256;;;12238:17;12258:12;12271:1;12258:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12238:35;;12305:5;12292:18;;:9;:18;;;12288:73;;;12344:1;12331:14;;12288:73;12412:5;12375:16;:23;12392:5;12375:23;;;;;;;;;;;;;;;:34;12399:9;12375:34;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;12223:206;12218:3;;;;;:::i;:::-;;;;12173:256;;;;12439:15;;:17;;;;;;;;;:::i;:::-;;;;;;12484:5;12467:7;:14;12475:5;12467:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;12525:1;12500:15;:22;12516:5;12500:22;;;;;;;;;;;;;;;:26;;;;12544:12;12557:10;12544:24;;;;;;;;:::i;:::-;;;;;;;;;;12537:31;;;;;;;;;;;12584:19;12597:5;12584:19;;;;;;:::i;:::-;;;;;;;;11853:758;11801:810;:::o;6719:97::-;6774:7;6801;;;;;;;;;;;6794:14;;6719:97;:::o;7923:104::-;7979:13;8012:7;8005:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7923:104;:::o;11405:388::-;11508:4;11485:27;;:7;:19;11493:10;11485:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;11477:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;11614:5;11569:50;;:22;:29;11592:5;11569:29;;;;;;;;;;;;;;;:41;11599:10;11569:41;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;11547:138;;;;;;;;;;;;:::i;:::-;;;;;;;;;11740:4;11696:22;:29;11719:5;11696:29;;;;;;;;;;;;;;;:41;11726:10;11696:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;11755:21;:28;11777:5;11755:28;;;;;;;;;;;;;;;;:30;;;;;;;;;:::i;:::-;;;;;;11405:388;:::o;15524:619::-;15683:24;:22;:24::i;:::-;15656:14;:23;15671:7;15656:23;;;;;;;;;;;;:51;;15634:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;15818:10;15787:41;;:18;:27;15806:7;15787:27;;;;;;;;;;;;;;;;;;;;;:41;;;15765:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;15936:1;15916:22;;:8;:22;;;;15908:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;15986:8;:17;15995:7;15986:17;;;;;;;;;;;;15979:24;;;;;;;;;;;16021:18;:27;16040:7;16021:27;;;;;;;;;;;;16014:34;;;;;;;;;;;16078:8;16059:7;:16;16067:7;16059:16;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;16102:33;16117:7;16126:8;16102:33;;;;;;;:::i;:::-;;;;;;;;15524:619;;:::o;19457:185::-;19584:50;19603:10;19615:8;19625;19584:18;:50::i;:::-;19457:185;;:::o;6503:100::-;6567:4;6591;6584:11;;6503:100;:::o;8949:214::-;9116:39;9130:4;9136:2;9140:7;9149:5;9116:13;:39::i;:::-;8949:214;;;;:::o;8243:186::-;8361:13;8399;:22;8413:7;8399:22;;;;;;;;;;;8392:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8243:186;;;:::o;10272:361::-;10371:4;10348:27;;:7;:19;10356:10;10348:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;10340:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;10470:5;10432:43;;:13;:22;10446:7;10432:22;;;;;;;;;;;:34;10455:10;10432:34;;;;;;;;;;;;;;;;;;;;;;;;;:43;;;10410:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;10587:4;10550:13;:22;10564:7;10550:22;;;;;;;;;;;:34;10573:10;10550:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;10602:12;:21;10615:7;10602:21;;;;;;;;;;;;:23;;;;;;;;;:::i;:::-;;;;;;10272:361;:::o;6265:107::-;6316:16;6352:12;6345:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6265:107;:::o;15044:472::-;15181:39;15200:10;15212:7;15181:18;:39::i;:::-;15159:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;15332:1;15305:29;;:15;:29;;;;15297:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;15394:4;15374:8;:17;15383:7;15374:17;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;15439:15;15409:18;:27;15428:7;15409:27;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;15470:38;15483:7;15492:15;15470:38;;;;;;;:::i;:::-;;;;;;;;15044:472;;:::o;19650:218::-;19794:4;19823:18;:27;19842:7;19823:27;;;;;;;;;;;;;;;:37;19851:8;19823:37;;;;;;;;;;;;;;;;;;;;;;;;;19816:44;;19650:218;;;;:::o;6824:299::-;6927:7;;;;;;;;;;;6913:21;;:10;:21;;;6905:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;6989:1;6968:23;;:9;:23;;;;6960:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;7047:9;7037:7;;:19;;;;;;;;;;;;;;;;;;7105:9;7072:43;;7093:10;7072:43;;;;;;;;;;;;6824:299;:::o;12619:603::-;12733:24;:22;:24::i;:::-;12704:15;:25;12720:8;12704:25;;;;;;;;;;;;;;;;:53;;12682:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;12843:5;12822:26;;:7;:17;12830:8;12822:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;12814:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12900:9;12895:134;12919:12;:19;;;;12915:1;:23;12895:134;;;13012:5;12960:22;:32;12983:8;12960:32;;;;;;;;;;;;;;;:49;12993:12;13006:1;12993:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12960:49;;;;;;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;12940:3;;;;;:::i;:::-;;;;12895:134;;;;13059:4;13039:7;:17;13047:8;13039:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;13074:15;;:17;;;;;;;;;:::i;:::-;;;;;;13102:12;13120:8;13102:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13174:1;13140:21;:31;13162:8;13140:31;;;;;;;;;;;;;;;:35;;;;13191:23;13205:8;13191:23;;;;;;:::i;:::-;;;;;;;;12619:603;:::o;13676:474::-;13842:1;13828:16;;:2;:16;;;;13820:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;13893:15;13900:7;13893:6;:15::i;:::-;13892:16;13884:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;13960:1;13944:12;;:17;;;;;;;:::i;:::-;;;;;;;;13999:12;;13980:15;;:31;;13972:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14061:1;14051:6;;:11;;;;;;;:::i;:::-;;;;;;;;14090:1;14073:9;:13;14083:2;14073:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;14102:40;14112:7;14121:2;14125:16;;14102:9;:40::i;:::-;13676:474;;;;:::o;10641:368::-;10741:4;10718:27;;:7;:19;10726:10;10718:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;10710:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;10842:5;10802:45;;:15;:24;10818:7;10802:24;;;;;;;;;;;:36;10827:10;10802:36;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;10780:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;10961:4;10922:15;:24;10938:7;10922:24;;;;;;;;;;;:36;10947:10;10922:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;10976:14;:23;10991:7;10976:23;;;;;;;;;;;;:25;;;;;;;;;:::i;:::-;;;;;;10641:368;:::o;18618:167::-;18720:2;18693:15;:24;18709:7;18693:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;18769:7;18765:2;18738:39;;18747:16;18755:7;18747;:16::i;:::-;18738:39;;;;;;;;;;;;18618:167;;:::o;19876:349::-;19933:7;19953:16;19990:1;19972:15;;:19;;;;:::i;:::-;19953:38;;20018:1;20006:8;:13;20002:54;;;20043:1;20036:8;;;;;20002:54;20066:17;20108:8;20104:1;:12;;;;:::i;:::-;20086:15;;:30;;;;:::i;:::-;20066:50;;20143:1;20131:9;:13;20127:65;;;20179:1;20168:8;:12;;;;:::i;:::-;20161:19;;;;;;20127:65;20209:8;20202:15;;;;19876:349;;:::o;13230:438::-;13396:15;;;;;;;;;;;:85;;;;13457:24;:22;:24::i;:::-;13432:12;:21;13445:7;13432:21;;;;;;;;;;;;:49;;13396:85;13374:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;13557:2;13538:7;:16;13546:7;13538:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13595:16;;13570:13;:22;13584:7;13570:22;;;;;;;;;;;:41;;;;;;;:::i;:::-;;13652:7;13648:2;13627:33;;13644:1;13627:33;;;;;;;;;;;;13230:438;;;;:::o;17882:405::-;18011:4;18041:15;18048:7;18041:6;:15::i;:::-;18033:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18108:15;18126:16;18134:7;18126;:16::i;:::-;18108:34;;18172:7;18161:18;;:7;:18;;;:66;;;;18220:7;18196:31;;:20;18208:7;18196:11;:20::i;:::-;:31;;;18161:66;:117;;;;18244:34;18261:7;18270;18244:16;:34::i;:::-;18161:117;18153:126;;;17882:405;;;;:::o;9523:550::-;9669:1;9655:16;;:2;:16;;;;9647:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;9724:8;:17;9733:7;9724:17;;;;;;;;;;;;;;;;;;;;;9723:18;9715:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;9795:39;9814:10;9826:7;9795:18;:39::i;:::-;9773:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;9920:1;9901:9;:15;9911:4;9901:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;9949:1;9932:9;:13;9942:2;9932:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;9980:2;9961:7;:16;9969:7;9961:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;9993:29;10010:1;10014:7;9993:8;:29::i;:::-;10057:7;10053:2;10038:27;;10047:4;10038:27;;;;;;;;;;;;9523:550;;;:::o;18295:315::-;18454:8;18443:19;;:7;:19;;;;18435:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18535:8;18495:18;:27;18514:7;18495:27;;;;;;;;;;;;;;;:37;18523:8;18495:37;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;18583:8;18559:43;;18574:7;18559:43;;;18593:8;18559:43;;;;;;:::i;:::-;;;;;;;;18295:315;;;:::o;9171:344::-;9328:28;9338:4;9344:2;9348:7;9328:9;:28::i;:::-;9389:48;9412:4;9418:2;9422:7;9431:5;9389:22;:48::i;:::-;9367:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;9171:344;;;;:::o;17068:806::-;17223:4;17245:14;17256:2;17245:10;:14::i;:::-;17240:32;;17268:4;17261:11;;;;17240:32;17316:2;17300:36;;;17355:10;17384:4;17407:7;17433:5;17300:153;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;17283:584;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17637:1;17620:6;:13;:18;17616:240;;;17659:52;;;;;;;;;;:::i;:::-;;;;;;;;17616:240;17814:6;17808:13;17799:6;17795:2;17791:15;17784:38;17283:584;17519:41;;;17509:51;;;:6;:51;;;;17502:58;;;17068:806;;;;;;;:::o;16945:115::-;17005:4;17051:1;17029:7;:19;;;:23;17022:30;;16945:115;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:77::-;1555:7;1584:5;1573:16;;1518:77;;;:::o;1601:122::-;1674:24;1692:5;1674:24;:::i;:::-;1667:5;1664:35;1654:63;;1713:1;1710;1703:12;1654:63;1601:122;:::o;1729:139::-;1775:5;1813:6;1800:20;1791:29;;1829:33;1856:5;1829:33;:::i;:::-;1729:139;;;;:::o;1874:329::-;1933:6;1982:2;1970:9;1961:7;1957:23;1953:32;1950:119;;;1988:79;;:::i;:::-;1950:119;2108:1;2133:53;2178:7;2169:6;2158:9;2154:22;2133:53;:::i;:::-;2123:63;;2079:117;1874:329;;;;:::o;2209:118::-;2296:24;2314:5;2296:24;:::i;:::-;2291:3;2284:37;2209:118;;:::o;2333:222::-;2426:4;2464:2;2453:9;2449:18;2441:26;;2477:71;2545:1;2534:9;2530:17;2521:6;2477:71;:::i;:::-;2333:222;;;;:::o;2561:99::-;2613:6;2647:5;2641:12;2631:22;;2561:99;;;:::o;2666:169::-;2750:11;2784:6;2779:3;2772:19;2824:4;2819:3;2815:14;2800:29;;2666:169;;;;:::o;2841:307::-;2909:1;2919:113;2933:6;2930:1;2927:13;2919:113;;;3018:1;3013:3;3009:11;3003:18;2999:1;2994:3;2990:11;2983:39;2955:2;2952:1;2948:10;2943:15;;2919:113;;;3050:6;3047:1;3044:13;3041:101;;;3130:1;3121:6;3116:3;3112:16;3105:27;3041:101;2890:258;2841:307;;;:::o;3154:102::-;3195:6;3246:2;3242:7;3237:2;3230:5;3226:14;3222:28;3212:38;;3154:102;;;:::o;3262:364::-;3350:3;3378:39;3411:5;3378:39;:::i;:::-;3433:71;3497:6;3492:3;3433:71;:::i;:::-;3426:78;;3513:52;3558:6;3553:3;3546:4;3539:5;3535:16;3513:52;:::i;:::-;3590:29;3612:6;3590:29;:::i;:::-;3585:3;3581:39;3574:46;;3354:272;3262:364;;;;:::o;3632:313::-;3745:4;3783:2;3772:9;3768:18;3760:26;;3832:9;3826:4;3822:20;3818:1;3807:9;3803:17;3796:47;3860:78;3933:4;3924:6;3860:78;:::i;:::-;3852:86;;3632:313;;;;:::o;3951:126::-;3988:7;4028:42;4021:5;4017:54;4006:65;;3951:126;;;:::o;4083:96::-;4120:7;4149:24;4167:5;4149:24;:::i;:::-;4138:35;;4083:96;;;:::o;4185:118::-;4272:24;4290:5;4272:24;:::i;:::-;4267:3;4260:37;4185:118;;:::o;4309:222::-;4402:4;4440:2;4429:9;4425:18;4417:26;;4453:71;4521:1;4510:9;4506:17;4497:6;4453:71;:::i;:::-;4309:222;;;;:::o;4537:122::-;4610:24;4628:5;4610:24;:::i;:::-;4603:5;4600:35;4590:63;;4649:1;4646;4639:12;4590:63;4537:122;:::o;4665:139::-;4711:5;4749:6;4736:20;4727:29;;4765:33;4792:5;4765:33;:::i;:::-;4665:139;;;;:::o;4810:474::-;4878:6;4886;4935:2;4923:9;4914:7;4910:23;4906:32;4903:119;;;4941:79;;:::i;:::-;4903:119;5061:1;5086:53;5131:7;5122:6;5111:9;5107:22;5086:53;:::i;:::-;5076:63;;5032:117;5188:2;5214:53;5259:7;5250:6;5239:9;5235:22;5214:53;:::i;:::-;5204:63;;5159:118;4810:474;;;;;:::o;5290:117::-;5399:1;5396;5389:12;5413:117;5522:1;5519;5512:12;5536:117;5645:1;5642;5635:12;5676:568;5749:8;5759:6;5809:3;5802:4;5794:6;5790:17;5786:27;5776:122;;5817:79;;:::i;:::-;5776:122;5930:6;5917:20;5907:30;;5960:18;5952:6;5949:30;5946:117;;;5982:79;;:::i;:::-;5946:117;6096:4;6088:6;6084:17;6072:29;;6150:3;6142:4;6134:6;6130:17;6120:8;6116:32;6113:41;6110:128;;;6157:79;;:::i;:::-;6110:128;5676:568;;;;;:::o;6266:580::-;6351:8;6361:6;6411:3;6404:4;6396:6;6392:17;6388:27;6378:122;;6419:79;;:::i;:::-;6378:122;6532:6;6519:20;6509:30;;6562:18;6554:6;6551:30;6548:117;;;6584:79;;:::i;:::-;6548:117;6698:4;6690:6;6686:17;6674:29;;6752:3;6744:4;6736:6;6732:17;6722:8;6718:32;6715:41;6712:128;;;6759:79;;:::i;:::-;6712:128;6266:580;;;;;:::o;6852:1103::-;6995:6;7003;7011;7019;7027;7076:2;7064:9;7055:7;7051:23;7047:32;7044:119;;;7082:79;;:::i;:::-;7044:119;7230:1;7219:9;7215:17;7202:31;7260:18;7252:6;7249:30;7246:117;;;7282:79;;:::i;:::-;7246:117;7395:80;7467:7;7458:6;7447:9;7443:22;7395:80;:::i;:::-;7377:98;;;;7173:312;7524:2;7550:53;7595:7;7586:6;7575:9;7571:22;7550:53;:::i;:::-;7540:63;;7495:118;7680:2;7669:9;7665:18;7652:32;7711:18;7703:6;7700:30;7697:117;;;7733:79;;:::i;:::-;7697:117;7846:92;7930:7;7921:6;7910:9;7906:22;7846:92;:::i;:::-;7828:110;;;;7623:325;6852:1103;;;;;;;;:::o;7961:619::-;8038:6;8046;8054;8103:2;8091:9;8082:7;8078:23;8074:32;8071:119;;;8109:79;;:::i;:::-;8071:119;8229:1;8254:53;8299:7;8290:6;8279:9;8275:22;8254:53;:::i;:::-;8244:63;;8200:117;8356:2;8382:53;8427:7;8418:6;8407:9;8403:22;8382:53;:::i;:::-;8372:63;;8327:118;8484:2;8510:53;8555:7;8546:6;8535:9;8531:22;8510:53;:::i;:::-;8500:63;;8455:118;7961:619;;;;;:::o;8586:329::-;8645:6;8694:2;8682:9;8673:7;8669:23;8665:32;8662:119;;;8700:79;;:::i;:::-;8662:119;8820:1;8845:53;8890:7;8881:6;8870:9;8866:22;8845:53;:::i;:::-;8835:63;;8791:117;8586:329;;;;:::o;8921:474::-;8989:6;8997;9046:2;9034:9;9025:7;9021:23;9017:32;9014:119;;;9052:79;;:::i;:::-;9014:119;9172:1;9197:53;9242:7;9233:6;9222:9;9218:22;9197:53;:::i;:::-;9187:63;;9143:117;9299:2;9325:53;9370:7;9361:6;9350:9;9346:22;9325:53;:::i;:::-;9315:63;;9270:118;8921:474;;;;;:::o;9401:116::-;9471:21;9486:5;9471:21;:::i;:::-;9464:5;9461:32;9451:60;;9507:1;9504;9497:12;9451:60;9401:116;:::o;9523:133::-;9566:5;9604:6;9591:20;9582:29;;9620:30;9644:5;9620:30;:::i;:::-;9523:133;;;;:::o;9662:468::-;9727:6;9735;9784:2;9772:9;9763:7;9759:23;9755:32;9752:119;;;9790:79;;:::i;:::-;9752:119;9910:1;9935:53;9980:7;9971:6;9960:9;9956:22;9935:53;:::i;:::-;9925:63;;9881:117;10037:2;10063:50;10105:7;10096:6;10085:9;10081:22;10063:50;:::i;:::-;10053:60;;10008:115;9662:468;;;;;:::o;10136:117::-;10245:1;10242;10235:12;10259:180;10307:77;10304:1;10297:88;10404:4;10401:1;10394:15;10428:4;10425:1;10418:15;10445:281;10528:27;10550:4;10528:27;:::i;:::-;10520:6;10516:40;10658:6;10646:10;10643:22;10622:18;10610:10;10607:34;10604:62;10601:88;;;10669:18;;:::i;:::-;10601:88;10709:10;10705:2;10698:22;10488:238;10445:281;;:::o;10732:129::-;10766:6;10793:20;;:::i;:::-;10783:30;;10822:33;10850:4;10842:6;10822:33;:::i;:::-;10732:129;;;:::o;10867:307::-;10928:4;11018:18;11010:6;11007:30;11004:56;;;11040:18;;:::i;:::-;11004:56;11078:29;11100:6;11078:29;:::i;:::-;11070:37;;11162:4;11156;11152:15;11144:23;;10867:307;;;:::o;11180:154::-;11264:6;11259:3;11254;11241:30;11326:1;11317:6;11312:3;11308:16;11301:27;11180:154;;;:::o;11340:410::-;11417:5;11442:65;11458:48;11499:6;11458:48;:::i;:::-;11442:65;:::i;:::-;11433:74;;11530:6;11523:5;11516:21;11568:4;11561:5;11557:16;11606:3;11597:6;11592:3;11588:16;11585:25;11582:112;;;11613:79;;:::i;:::-;11582:112;11703:41;11737:6;11732:3;11727;11703:41;:::i;:::-;11423:327;11340:410;;;;;:::o;11769:338::-;11824:5;11873:3;11866:4;11858:6;11854:17;11850:27;11840:122;;11881:79;;:::i;:::-;11840:122;11998:6;11985:20;12023:78;12097:3;12089:6;12082:4;12074:6;12070:17;12023:78;:::i;:::-;12014:87;;11830:277;11769:338;;;;:::o;12113:943::-;12208:6;12216;12224;12232;12281:3;12269:9;12260:7;12256:23;12252:33;12249:120;;;12288:79;;:::i;:::-;12249:120;12408:1;12433:53;12478:7;12469:6;12458:9;12454:22;12433:53;:::i;:::-;12423:63;;12379:117;12535:2;12561:53;12606:7;12597:6;12586:9;12582:22;12561:53;:::i;:::-;12551:63;;12506:118;12663:2;12689:53;12734:7;12725:6;12714:9;12710:22;12689:53;:::i;:::-;12679:63;;12634:118;12819:2;12808:9;12804:18;12791:32;12850:18;12842:6;12839:30;12836:117;;;12872:79;;:::i;:::-;12836:117;12977:62;13031:7;13022:6;13011:9;13007:22;12977:62;:::i;:::-;12967:72;;12762:287;12113:943;;;;;;;:::o;13062:114::-;13129:6;13163:5;13157:12;13147:22;;13062:114;;;:::o;13182:184::-;13281:11;13315:6;13310:3;13303:19;13355:4;13350:3;13346:14;13331:29;;13182:184;;;;:::o;13372:132::-;13439:4;13462:3;13454:11;;13492:4;13487:3;13483:14;13475:22;;13372:132;;;:::o;13510:108::-;13587:24;13605:5;13587:24;:::i;:::-;13582:3;13575:37;13510:108;;:::o;13624:179::-;13693:10;13714:46;13756:3;13748:6;13714:46;:::i;:::-;13792:4;13787:3;13783:14;13769:28;;13624:179;;;;:::o;13809:113::-;13879:4;13911;13906:3;13902:14;13894:22;;13809:113;;;:::o;13958:732::-;14077:3;14106:54;14154:5;14106:54;:::i;:::-;14176:86;14255:6;14250:3;14176:86;:::i;:::-;14169:93;;14286:56;14336:5;14286:56;:::i;:::-;14365:7;14396:1;14381:284;14406:6;14403:1;14400:13;14381:284;;;14482:6;14476:13;14509:63;14568:3;14553:13;14509:63;:::i;:::-;14502:70;;14595:60;14648:6;14595:60;:::i;:::-;14585:70;;14441:224;14428:1;14425;14421:9;14416:14;;14381:284;;;14385:14;14681:3;14674:10;;14082:608;;;13958:732;;;;:::o;14696:373::-;14839:4;14877:2;14866:9;14862:18;14854:26;;14926:9;14920:4;14916:20;14912:1;14901:9;14897:17;14890:47;14954:108;15057:4;15048:6;14954:108;:::i;:::-;14946:116;;14696:373;;;;:::o;15075:474::-;15143:6;15151;15200:2;15188:9;15179:7;15175:23;15171:32;15168:119;;;15206:79;;:::i;:::-;15168:119;15326:1;15351:53;15396:7;15387:6;15376:9;15372:22;15351:53;:::i;:::-;15341:63;;15297:117;15453:2;15479:53;15524:7;15515:6;15504:9;15500:22;15479:53;:::i;:::-;15469:63;;15424:118;15075:474;;;;;:::o;15569:553::-;15627:8;15637:6;15687:3;15680:4;15672:6;15668:17;15664:27;15654:122;;15695:79;;:::i;:::-;15654:122;15808:6;15795:20;15785:30;;15838:18;15830:6;15827:30;15824:117;;;15860:79;;:::i;:::-;15824:117;15974:4;15966:6;15962:17;15950:29;;16028:3;16020:4;16012:6;16008:17;15998:8;15994:32;15991:41;15988:128;;;16035:79;;:::i;:::-;15988:128;15569:553;;;;;:::o;16128:819::-;16217:6;16225;16233;16241;16290:2;16278:9;16269:7;16265:23;16261:32;16258:119;;;16296:79;;:::i;:::-;16258:119;16416:1;16441:53;16486:7;16477:6;16466:9;16462:22;16441:53;:::i;:::-;16431:63;;16387:117;16543:2;16569:53;16614:7;16605:6;16594:9;16590:22;16569:53;:::i;:::-;16559:63;;16514:118;16699:2;16688:9;16684:18;16671:32;16730:18;16722:6;16719:30;16716:117;;;16752:79;;:::i;:::-;16716:117;16865:65;16922:7;16913:6;16902:9;16898:22;16865:65;:::i;:::-;16847:83;;;;16642:298;16128:819;;;;;;;:::o;16953:180::-;17001:77;16998:1;16991:88;17098:4;17095:1;17088:15;17122:4;17119:1;17112:15;17139:320;17183:6;17220:1;17214:4;17210:12;17200:22;;17267:1;17261:4;17257:12;17288:18;17278:81;;17344:4;17336:6;17332:17;17322:27;;17278:81;17406:2;17398:6;17395:14;17375:18;17372:38;17369:84;;;17425:18;;:::i;:::-;17369:84;17190:269;17139:320;;;:::o;17465:223::-;17605:34;17601:1;17593:6;17589:14;17582:58;17674:6;17669:2;17661:6;17657:15;17650:31;17465:223;:::o;17694:366::-;17836:3;17857:67;17921:2;17916:3;17857:67;:::i;:::-;17850:74;;17933:93;18022:3;17933:93;:::i;:::-;18051:2;18046:3;18042:12;18035:19;;17694:366;;;:::o;18066:419::-;18232:4;18270:2;18259:9;18255:18;18247:26;;18319:9;18313:4;18309:20;18305:1;18294:9;18290:17;18283:47;18347:131;18473:4;18347:131;:::i;:::-;18339:139;;18066:419;;;:::o;18491:175::-;18631:27;18627:1;18619:6;18615:14;18608:51;18491:175;:::o;18672:366::-;18814:3;18835:67;18899:2;18894:3;18835:67;:::i;:::-;18828:74;;18911:93;19000:3;18911:93;:::i;:::-;19029:2;19024:3;19020:12;19013:19;;18672:366;;;:::o;19044:419::-;19210:4;19248:2;19237:9;19233:18;19225:26;;19297:9;19291:4;19287:20;19283:1;19272:9;19268:17;19261:47;19325:131;19451:4;19325:131;:::i;:::-;19317:139;;19044:419;;;:::o;19469:235::-;19609:34;19605:1;19597:6;19593:14;19586:58;19678:18;19673:2;19665:6;19661:15;19654:43;19469:235;:::o;19710:366::-;19852:3;19873:67;19937:2;19932:3;19873:67;:::i;:::-;19866:74;;19949:93;20038:3;19949:93;:::i;:::-;20067:2;20062:3;20058:12;20051:19;;19710:366;;;:::o;20082:419::-;20248:4;20286:2;20275:9;20271:18;20263:26;;20335:9;20329:4;20325:20;20321:1;20310:9;20306:17;20299:47;20363:131;20489:4;20363:131;:::i;:::-;20355:139;;20082:419;;;:::o;20507:235::-;20647:34;20643:1;20635:6;20631:14;20624:58;20716:18;20711:2;20703:6;20699:15;20692:43;20507:235;:::o;20748:366::-;20890:3;20911:67;20975:2;20970:3;20911:67;:::i;:::-;20904:74;;20987:93;21076:3;20987:93;:::i;:::-;21105:2;21100:3;21096:12;21089:19;;20748:366;;;:::o;21120:419::-;21286:4;21324:2;21313:9;21309:18;21301:26;;21373:9;21367:4;21363:20;21359:1;21348:9;21344:17;21337:47;21401:131;21527:4;21401:131;:::i;:::-;21393:139;;21120:419;;;:::o;21545:174::-;21685:26;21681:1;21673:6;21669:14;21662:50;21545:174;:::o;21725:366::-;21867:3;21888:67;21952:2;21947:3;21888:67;:::i;:::-;21881:74;;21964:93;22053:3;21964:93;:::i;:::-;22082:2;22077:3;22073:12;22066:19;;21725:366;;;:::o;22097:419::-;22263:4;22301:2;22290:9;22286:18;22278:26;;22350:9;22344:4;22340:20;22336:1;22325:9;22321:17;22314:47;22378:131;22504:4;22378:131;:::i;:::-;22370:139;;22097:419;;;:::o;22522:180::-;22570:77;22567:1;22560:88;22667:4;22664:1;22657:15;22691:4;22688:1;22681:15;22708:305;22748:3;22767:20;22785:1;22767:20;:::i;:::-;22762:25;;22801:20;22819:1;22801:20;:::i;:::-;22796:25;;22955:1;22887:66;22883:74;22880:1;22877:81;22874:107;;;22961:18;;:::i;:::-;22874:107;23005:1;23002;22998:9;22991:16;;22708:305;;;;:::o;23019:174::-;23159:26;23155:1;23147:6;23143:14;23136:50;23019:174;:::o;23199:366::-;23341:3;23362:67;23426:2;23421:3;23362:67;:::i;:::-;23355:74;;23438:93;23527:3;23438:93;:::i;:::-;23556:2;23551:3;23547:12;23540:19;;23199:366;;;:::o;23571:419::-;23737:4;23775:2;23764:9;23760:18;23752:26;;23824:9;23818:4;23814:20;23810:1;23799:9;23795:17;23788:47;23852:131;23978:4;23852:131;:::i;:::-;23844:139;;23571:419;;;:::o;23996:180::-;24044:77;24041:1;24034:88;24141:4;24138:1;24131:15;24165:4;24162:1;24155:15;24182:170;24322:22;24318:1;24310:6;24306:14;24299:46;24182:170;:::o;24358:366::-;24500:3;24521:67;24585:2;24580:3;24521:67;:::i;:::-;24514:74;;24597:93;24686:3;24597:93;:::i;:::-;24715:2;24710:3;24706:12;24699:19;;24358:366;;;:::o;24730:419::-;24896:4;24934:2;24923:9;24919:18;24911:26;;24983:9;24977:4;24973:20;24969:1;24958:9;24954:17;24947:47;25011:131;25137:4;25011:131;:::i;:::-;25003:139;;24730:419;;;:::o;25155:117::-;25264:1;25261;25254:12;25278:117;25387:1;25384;25377:12;25401:117;25510:1;25507;25500:12;25524:725;25602:4;25608:6;25664:11;25651:25;25764:1;25758:4;25754:12;25743:8;25727:14;25723:29;25719:48;25699:18;25695:73;25685:168;;25772:79;;:::i;:::-;25685:168;25884:18;25874:8;25870:33;25862:41;;25936:4;25923:18;25913:28;;25964:18;25956:6;25953:30;25950:117;;;25986:79;;:::i;:::-;25950:117;26094:2;26088:4;26084:13;26076:21;;26151:4;26143:6;26139:17;26123:14;26119:38;26113:4;26109:49;26106:136;;;26161:79;;:::i;:::-;26106:136;25615:634;25524:725;;;;;:::o;26255:233::-;26294:3;26317:24;26335:5;26317:24;:::i;:::-;26308:33;;26363:66;26356:5;26353:77;26350:103;;;26433:18;;:::i;:::-;26350:103;26480:1;26473:5;26469:13;26462:20;;26255:233;;;:::o;26494:228::-;26634:34;26630:1;26622:6;26618:14;26611:58;26703:11;26698:2;26690:6;26686:15;26679:36;26494:228;:::o;26728:366::-;26870:3;26891:67;26955:2;26950:3;26891:67;:::i;:::-;26884:74;;26967:93;27056:3;26967:93;:::i;:::-;27085:2;27080:3;27076:12;27069:19;;26728:366;;;:::o;27100:419::-;27266:4;27304:2;27293:9;27289:18;27281:26;;27353:9;27347:4;27343:20;27339:1;27328:9;27324:17;27317:47;27381:131;27507:4;27381:131;:::i;:::-;27373:139;;27100:419;;;:::o;27525:166::-;27665:18;27661:1;27653:6;27649:14;27642:42;27525:166;:::o;27697:366::-;27839:3;27860:67;27924:2;27919:3;27860:67;:::i;:::-;27853:74;;27936:93;28025:3;27936:93;:::i;:::-;28054:2;28049:3;28045:12;28038:19;;27697:366;;;:::o;28069:419::-;28235:4;28273:2;28262:9;28258:18;28250:26;;28322:9;28316:4;28312:20;28308:1;28297:9;28293:17;28286:47;28350:131;28476:4;28350:131;:::i;:::-;28342:139;;28069:419;;;:::o;28494:167::-;28634:19;28630:1;28622:6;28618:14;28611:43;28494:167;:::o;28667:366::-;28809:3;28830:67;28894:2;28889:3;28830:67;:::i;:::-;28823:74;;28906:93;28995:3;28906:93;:::i;:::-;29024:2;29019:3;29015:12;29008:19;;28667:366;;;:::o;29039:419::-;29205:4;29243:2;29232:9;29228:18;29220:26;;29292:9;29286:4;29282:20;29278:1;29267:9;29263:17;29256:47;29320:131;29446:4;29320:131;:::i;:::-;29312:139;;29039:419;;;:::o;29464:191::-;29504:4;29524:20;29542:1;29524:20;:::i;:::-;29519:25;;29558:20;29576:1;29558:20;:::i;:::-;29553:25;;29597:1;29594;29591:8;29588:34;;;29602:18;;:::i;:::-;29588:34;29647:1;29644;29640:9;29632:17;;29464:191;;;;:::o;29661:169::-;29801:21;29797:1;29789:6;29785:14;29778:45;29661:169;:::o;29836:366::-;29978:3;29999:67;30063:2;30058:3;29999:67;:::i;:::-;29992:74;;30075:93;30164:3;30075:93;:::i;:::-;30193:2;30188:3;30184:12;30177:19;;29836:366;;;:::o;30208:419::-;30374:4;30412:2;30401:9;30397:18;30389:26;;30461:9;30455:4;30451:20;30447:1;30436:9;30432:17;30425:47;30489:131;30615:4;30489:131;:::i;:::-;30481:139;;30208:419;;;:::o;30633:225::-;30773:34;30769:1;30761:6;30757:14;30750:58;30842:8;30837:2;30829:6;30825:15;30818:33;30633:225;:::o;30864:366::-;31006:3;31027:67;31091:2;31086:3;31027:67;:::i;:::-;31020:74;;31103:93;31192:3;31103:93;:::i;:::-;31221:2;31216:3;31212:12;31205:19;;30864:366;;;:::o;31236:419::-;31402:4;31440:2;31429:9;31425:18;31417:26;;31489:9;31483:4;31479:20;31475:1;31464:9;31460:17;31453:47;31517:131;31643:4;31517:131;:::i;:::-;31509:139;;31236:419;;;:::o;31661:168::-;31801:20;31797:1;31789:6;31785:14;31778:44;31661:168;:::o;31835:366::-;31977:3;31998:67;32062:2;32057:3;31998:67;:::i;:::-;31991:74;;32074:93;32163:3;32074:93;:::i;:::-;32192:2;32187:3;32183:12;32176:19;;31835:366;;;:::o;32207:419::-;32373:4;32411:2;32400:9;32396:18;32388:26;;32460:9;32454:4;32450:20;32446:1;32435:9;32431:17;32424:47;32488:131;32614:4;32488:131;:::i;:::-;32480:139;;32207:419;;;:::o;32632:178::-;32772:30;32768:1;32760:6;32756:14;32749:54;32632:178;:::o;32816:366::-;32958:3;32979:67;33043:2;33038:3;32979:67;:::i;:::-;32972:74;;33055:93;33144:3;33055:93;:::i;:::-;33173:2;33168:3;33164:12;33157:19;;32816:366;;;:::o;33188:419::-;33354:4;33392:2;33381:9;33377:18;33369:26;;33441:9;33435:4;33431:20;33427:1;33416:9;33412:17;33405:47;33469:131;33595:4;33469:131;:::i;:::-;33461:139;;33188:419;;;:::o;33613:178::-;33753:30;33749:1;33741:6;33737:14;33730:54;33613:178;:::o;33797:366::-;33939:3;33960:67;34024:2;34019:3;33960:67;:::i;:::-;33953:74;;34036:93;34125:3;34036:93;:::i;:::-;34154:2;34149:3;34145:12;34138:19;;33797:366;;;:::o;34169:419::-;34335:4;34373:2;34362:9;34358:18;34350:26;;34422:9;34416:4;34412:20;34408:1;34397:9;34393:17;34386:47;34450:131;34576:4;34450:131;:::i;:::-;34442:139;;34169:419;;;:::o;34594:171::-;34633:3;34656:24;34674:5;34656:24;:::i;:::-;34647:33;;34702:4;34695:5;34692:15;34689:41;;;34710:18;;:::i;:::-;34689:41;34757:1;34750:5;34746:13;34739:20;;34594:171;;;:::o;34771:228::-;34911:34;34907:1;34899:6;34895:14;34888:58;34980:11;34975:2;34967:6;34963:15;34956:36;34771:228;:::o;35005:366::-;35147:3;35168:67;35232:2;35227:3;35168:67;:::i;:::-;35161:74;;35244:93;35333:3;35244:93;:::i;:::-;35362:2;35357:3;35353:12;35346:19;;35005:366;;;:::o;35377:419::-;35543:4;35581:2;35570:9;35566:18;35558:26;;35630:9;35624:4;35620:20;35616:1;35605:9;35601:17;35594:47;35658:131;35784:4;35658:131;:::i;:::-;35650:139;;35377:419;;;:::o;35802:175::-;35942:27;35938:1;35930:6;35926:14;35919:51;35802:175;:::o;35983:366::-;36125:3;36146:67;36210:2;36205:3;36146:67;:::i;:::-;36139:74;;36222:93;36311:3;36222:93;:::i;:::-;36340:2;36335:3;36331:12;36324:19;;35983:366;;;:::o;36355:419::-;36521:4;36559:2;36548:9;36544:18;36536:26;;36608:9;36602:4;36598:20;36594:1;36583:9;36579:17;36572:47;36636:131;36762:4;36636:131;:::i;:::-;36628:139;;36355:419;;;:::o;36780:332::-;36901:4;36939:2;36928:9;36924:18;36916:26;;36952:71;37020:1;37009:9;37005:17;36996:6;36952:71;:::i;:::-;37033:72;37101:2;37090:9;37086:18;37077:6;37033:72;:::i;:::-;36780:332;;;;;:::o;37118:223::-;37258:34;37254:1;37246:6;37242:14;37235:58;37327:6;37322:2;37314:6;37310:15;37303:31;37118:223;:::o;37347:366::-;37489:3;37510:67;37574:2;37569:3;37510:67;:::i;:::-;37503:74;;37586:93;37675:3;37586:93;:::i;:::-;37704:2;37699:3;37695:12;37688:19;;37347:366;;;:::o;37719:419::-;37885:4;37923:2;37912:9;37908:18;37900:26;;37972:9;37966:4;37962:20;37958:1;37947:9;37943:17;37936:47;38000:131;38126:4;38000:131;:::i;:::-;37992:139;;37719:419;;;:::o;38144:225::-;38284:34;38280:1;38272:6;38268:14;38261:58;38353:8;38348:2;38340:6;38336:15;38329:33;38144:225;:::o;38375:366::-;38517:3;38538:67;38602:2;38597:3;38538:67;:::i;:::-;38531:74;;38614:93;38703:3;38614:93;:::i;:::-;38732:2;38727:3;38723:12;38716:19;;38375:366;;;:::o;38747:419::-;38913:4;38951:2;38940:9;38936:18;38928:26;;39000:9;38994:4;38990:20;38986:1;38975:9;38971:17;38964:47;39028:131;39154:4;39028:131;:::i;:::-;39020:139;;38747:419;;;:::o;39172:174::-;39312:26;39308:1;39300:6;39296:14;39289:50;39172:174;:::o;39352:366::-;39494:3;39515:67;39579:2;39574:3;39515:67;:::i;:::-;39508:74;;39591:93;39680:3;39591:93;:::i;:::-;39709:2;39704:3;39700:12;39693:19;;39352:366;;;:::o;39724:419::-;39890:4;39928:2;39917:9;39913:18;39905:26;;39977:9;39971:4;39967:20;39963:1;39952:9;39948:17;39941:47;40005:131;40131:4;40005:131;:::i;:::-;39997:139;;39724:419;;;:::o;40149:160::-;40289:12;40285:1;40277:6;40273:14;40266:36;40149:160;:::o;40315:366::-;40457:3;40478:67;40542:2;40537:3;40478:67;:::i;:::-;40471:74;;40554:93;40643:3;40554:93;:::i;:::-;40672:2;40667:3;40663:12;40656:19;;40315:366;;;:::o;40687:419::-;40853:4;40891:2;40880:9;40876:18;40868:26;;40940:9;40934:4;40930:20;40926:1;40915:9;40911:17;40904:47;40968:131;41094:4;40968:131;:::i;:::-;40960:139;;40687:419;;;:::o;41112:180::-;41252:32;41248:1;41240:6;41236:14;41229:56;41112:180;:::o;41298:366::-;41440:3;41461:67;41525:2;41520:3;41461:67;:::i;:::-;41454:74;;41537:93;41626:3;41537:93;:::i;:::-;41655:2;41650:3;41646:12;41639:19;;41298:366;;;:::o;41670:419::-;41836:4;41874:2;41863:9;41859:18;41851:26;;41923:9;41917:4;41913:20;41909:1;41898:9;41894:17;41887:47;41951:131;42077:4;41951:131;:::i;:::-;41943:139;;41670:419;;;:::o;42095:181::-;42235:33;42231:1;42223:6;42219:14;42212:57;42095:181;:::o;42282:366::-;42424:3;42445:67;42509:2;42504:3;42445:67;:::i;:::-;42438:74;;42521:93;42610:3;42521:93;:::i;:::-;42639:2;42634:3;42630:12;42623:19;;42282:366;;;:::o;42654:419::-;42820:4;42858:2;42847:9;42843:18;42835:26;;42907:9;42901:4;42897:20;42893:1;42882:9;42878:17;42871:47;42935:131;43061:4;42935:131;:::i;:::-;42927:139;;42654:419;;;:::o;43079:180::-;43127:77;43124:1;43117:88;43224:4;43221:1;43214:15;43248:4;43245:1;43238:15;43265:185;43305:1;43322:20;43340:1;43322:20;:::i;:::-;43317:25;;43356:20;43374:1;43356:20;:::i;:::-;43351:25;;43395:1;43385:35;;43400:18;;:::i;:::-;43385:35;43442:1;43439;43435:9;43430:14;;43265:185;;;;:::o;43456:348::-;43496:7;43519:20;43537:1;43519:20;:::i;:::-;43514:25;;43553:20;43571:1;43553:20;:::i;:::-;43548:25;;43741:1;43673:66;43669:74;43666:1;43663:81;43658:1;43651:9;43644:17;43640:105;43637:131;;;43748:18;;:::i;:::-;43637:131;43796:1;43793;43789:9;43778:20;;43456:348;;;;:::o;43810:223::-;43950:34;43946:1;43938:6;43934:14;43927:58;44019:6;44014:2;44006:6;44002:15;43995:31;43810:223;:::o;44039:366::-;44181:3;44202:67;44266:2;44261:3;44202:67;:::i;:::-;44195:74;;44278:93;44367:3;44278:93;:::i;:::-;44396:2;44391:3;44387:12;44380:19;;44039:366;;;:::o;44411:419::-;44577:4;44615:2;44604:9;44600:18;44592:26;;44664:9;44658:4;44654:20;44650:1;44639:9;44635:17;44628:47;44692:131;44818:4;44692:131;:::i;:::-;44684:139;;44411:419;;;:::o;44836:178::-;44976:30;44972:1;44964:6;44960:14;44953:54;44836:178;:::o;45020:366::-;45162:3;45183:67;45247:2;45242:3;45183:67;:::i;:::-;45176:74;;45259:93;45348:3;45259:93;:::i;:::-;45377:2;45372:3;45368:12;45361:19;;45020:366;;;:::o;45392:419::-;45558:4;45596:2;45585:9;45581:18;45573:26;;45645:9;45639:4;45635:20;45631:1;45620:9;45616:17;45609:47;45673:131;45799:4;45673:131;:::i;:::-;45665:139;;45392:419;;;:::o;45817:178::-;45957:30;45953:1;45945:6;45941:14;45934:54;45817:178;:::o;46001:366::-;46143:3;46164:67;46228:2;46223:3;46164:67;:::i;:::-;46157:74;;46240:93;46329:3;46240:93;:::i;:::-;46358:2;46353:3;46349:12;46342:19;;46001:366;;;:::o;46373:419::-;46539:4;46577:2;46566:9;46562:18;46554:26;;46626:9;46620:4;46616:20;46612:1;46601:9;46597:17;46590:47;46654:131;46780:4;46654:131;:::i;:::-;46646:139;;46373:419;;;:::o;46798:167::-;46938:19;46934:1;46926:6;46922:14;46915:43;46798:167;:::o;46971:366::-;47113:3;47134:67;47198:2;47193:3;47134:67;:::i;:::-;47127:74;;47210:93;47299:3;47210:93;:::i;:::-;47328:2;47323:3;47319:12;47312:19;;46971:366;;;:::o;47343:419::-;47509:4;47547:2;47536:9;47532:18;47524:26;;47596:9;47590:4;47586:20;47582:1;47571:9;47567:17;47560:47;47624:131;47750:4;47624:131;:::i;:::-;47616:139;;47343:419;;;:::o;47768:229::-;47908:34;47904:1;47896:6;47892:14;47885:58;47977:12;47972:2;47964:6;47960:15;47953:37;47768:229;:::o;48003:366::-;48145:3;48166:67;48230:2;48225:3;48166:67;:::i;:::-;48159:74;;48242:93;48331:3;48242:93;:::i;:::-;48360:2;48355:3;48351:12;48344:19;;48003:366;;;:::o;48375:419::-;48541:4;48579:2;48568:9;48564:18;48556:26;;48628:9;48622:4;48618:20;48614:1;48603:9;48599:17;48592:47;48656:131;48782:4;48656:131;:::i;:::-;48648:139;;48375:419;;;:::o;48800:98::-;48851:6;48885:5;48879:12;48869:22;;48800:98;;;:::o;48904:168::-;48987:11;49021:6;49016:3;49009:19;49061:4;49056:3;49052:14;49037:29;;48904:168;;;;:::o;49078:360::-;49164:3;49192:38;49224:5;49192:38;:::i;:::-;49246:70;49309:6;49304:3;49246:70;:::i;:::-;49239:77;;49325:52;49370:6;49365:3;49358:4;49351:5;49347:16;49325:52;:::i;:::-;49402:29;49424:6;49402:29;:::i;:::-;49397:3;49393:39;49386:46;;49168:270;49078:360;;;;:::o;49444:640::-;49639:4;49677:3;49666:9;49662:19;49654:27;;49691:71;49759:1;49748:9;49744:17;49735:6;49691:71;:::i;:::-;49772:72;49840:2;49829:9;49825:18;49816:6;49772:72;:::i;:::-;49854;49922:2;49911:9;49907:18;49898:6;49854:72;:::i;:::-;49973:9;49967:4;49963:20;49958:2;49947:9;49943:18;49936:48;50001:76;50072:4;50063:6;50001:76;:::i;:::-;49993:84;;49444:640;;;;;;;:::o;50090:141::-;50146:5;50177:6;50171:13;50162:22;;50193:32;50219:5;50193:32;:::i;:::-;50090:141;;;;:::o;50237:349::-;50306:6;50355:2;50343:9;50334:7;50330:23;50326:32;50323:119;;;50361:79;;:::i;:::-;50323:119;50481:1;50506:63;50561:7;50552:6;50541:9;50537:22;50506:63;:::i;:::-;50496:73;;50452:127;50237:349;;;;:::o

Swarm Source

ipfs://26bb41251c79fcbf880c80fd1d7801a886d705d51fb6c78376cd305fb10ca0f4
Loading