Contract 0x22d976d9e5a7458662026834c737de3e0eea9e56

 
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0x52dccb3c012610d4e0a33037d4a84a2a0426651d7a21c8c573e20073f48a4523Freeze Token371000902022-12-21 13:51:3941 days 18 hrs ago0x605b477f2c6b771dd2d6e87ba020b6ef4f76086e IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.007472106302 105.064839251
0x0ef71437705d0189878d85a41b9248888706c27824f2460f9b024f54e60be901Safe Mint371000402022-12-21 13:49:5941 days 18 hrs ago0xd220ce18c1f3462370c1b2b62770e80a2388c035 IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.019391807868 107.464202452
0x9cecfe63d85d6b4eca1b6eeb8d38f2554c3de04e555842f77302a6bb09b222bbVote For Minting370999232022-12-21 13:45:5741 days 18 hrs ago0xed51a8f3fca6adc0abf15d910e7dfa30b9e035cf IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.005468189046 105.467800379
0x636a15eb7d4a05b320788860d5435db10fc267469a2f4819dde3247809f20c16Vote For Minting370998902022-12-21 13:44:4741 days 18 hrs ago0xd220ce18c1f3462370c1b2b62770e80a2388c035 IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.007143754566 103.612261103
0x169515c9c91a125fa4faae000bcdb6922d2da3aca1050ed8d82f1198a5c53474Freeze Token370996422022-12-21 13:36:1541 days 18 hrs ago0xd4c7891b658d56867f43a343a49a612b58ce61c2 IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.004556305646 64.065940832
0x5a9cb36492662c077de7fcdf3e88c2aebbebc6f02cd366a6e539581701021a4cSafe Mint370995602022-12-21 13:33:2741 days 19 hrs ago0xd220ce18c1f3462370c1b2b62770e80a2388c035 IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.011781433541 65.289547413
0x81a8252e863d85daa5dfcf233d3203443a2c8c9256373f2075e04e8fd787e87fVote For Minting370995182022-12-21 13:31:5941 days 19 hrs ago0xed51a8f3fca6adc0abf15d910e7dfa30b9e035cf IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.003918469859 75.577562048
0x8cf47beb11277d58e31b02da268e06f7166a2155fab278280e628dbe28659d9eVote For Minting370994892022-12-21 13:31:0141 days 19 hrs ago0xd220ce18c1f3462370c1b2b62770e80a2388c035 IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.004661158409 67.604948873
0x09cae31a7e573929dc4590248d17ac214f1a02d0bbf87d63f75e19d8f4353f12Freeze Token370992752022-12-21 13:23:4141 days 19 hrs ago0x0d20a83b34dd249009d1a41237b807ad7110a6f9 IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.005326633771 74.897478478
0xa16db2cb29ff966bbe2b5a846d03e508595f579b99616a209fe4cddc25f02b94Safe Mint370992012022-12-21 13:21:0941 days 19 hrs ago0xd220ce18c1f3462370c1b2b62770e80a2388c035 IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.012183740823 67.51902656
0xe45fef89520c2300189b9ee6015b3ed5187552f9d010694e078dbdfc51505378Vote For Minting370991562022-12-21 13:19:3541 days 19 hrs ago0xed51a8f3fca6adc0abf15d910e7dfa30b9e035cf IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.003685713902 71.088277102
0x66bbb11649e8075a12acf7aca9a626a82d163d774a86b4a273b470c57c1a5547Vote For Minting370991302022-12-21 13:18:3941 days 19 hrs ago0xd220ce18c1f3462370c1b2b62770e80a2388c035 IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.004755715632 68.976396837
0xef13bf4e76c0c12dfce53b91c0decbf92f41afc9686b78bf8404161913453deaFreeze Token370989552022-12-21 13:12:4141 days 19 hrs ago0xc99dd9a9e09bcef7252948795dccb1d4d970f205 IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.005754658961 80.915915037
0x104b434965e6b272c260138430134c6da0b7f938c50bfe4d7ce5c943fb7f8f23Safe Mint370988172022-12-21 13:07:5741 days 19 hrs ago0xd220ce18c1f3462370c1b2b62770e80a2388c035 IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.025061396962 138.883545837
0x588e9d0010d30f8f80825742422c3ace1c14ccef081896e3ce5b7de3fe91f4bcVote For Minting370987432022-12-21 13:05:0541 days 19 hrs ago0xed51a8f3fca6adc0abf15d910e7dfa30b9e035cf IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.008503487498 164.011177093
0x53476548138f38cbb7eda9e3c5c2c018799a6a91977ad82aac31ad7ae6f70e10Vote For Minting370987352022-12-21 13:04:3341 days 19 hrs ago0xd220ce18c1f3462370c1b2b62770e80a2388c035 IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.009677230142 140.357523058
0x1e970b3c94758d174cc7e7b6a9737f17382df0863e064671a0c59110bd4a8589Freeze Token370968972022-12-21 11:57:4141 days 20 hrs ago0xf1a42a15c920447dd931e9afc504ce8c39a89914 IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.004214147346 59.254873469
0x9c941c5778b059a3dd08195e4c225a9da9e1f13302b7c46156c68ff157ffd954Safe Mint370968192022-12-21 11:54:5741 days 20 hrs ago0xd220ce18c1f3462370c1b2b62770e80a2388c035 IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.011838136263 65.603778704
0xe84a644d7f050d70445de1a7e90c66466fe238ec08585690aa3aae6fffa13a05Vote For Minting370967692022-12-21 11:53:1741 days 20 hrs ago0xed51a8f3fca6adc0abf15d910e7dfa30b9e035cf IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.004359796142 84.089651133
0xbd03f57ba82c7734a9883d0af759d74356e77bec44673df575192c664ad23014Vote For Minting370967512022-12-21 11:52:3741 days 20 hrs ago0xd220ce18c1f3462370c1b2b62770e80a2388c035 IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.006402685483 92.863873456
0x7393278bc7142c7d1392754269326bfc3864a53076ff15d1cf86d4bc56ab796bFreeze Token370964862022-12-21 11:43:3141 days 20 hrs ago0xa028d9d8a58c87b334b8db283f709807d5d652d7 IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.011245836415 158.127032375
0x5c5d271d01cbbd9957b18737241439e8dd9f5ced61257529b9ff601d5c240532Safe Mint370964382022-12-21 11:41:5141 days 20 hrs ago0xd220ce18c1f3462370c1b2b62770e80a2388c035 IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.028922424379 160.280325074
0xa1f9c7eb4df596cc361b43c839c7ac0bd06cfc75674cd8505dcc77b3792d8fb1Vote For Minting370963972022-12-21 11:40:2941 days 20 hrs ago0xed51a8f3fca6adc0abf15d910e7dfa30b9e035cf IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.008282613922 159.751073786
0x6031bf7c951fa4d4a05280b1bf4c70cd42e359bc8deb77a4706a9cde36127537Vote For Minting370963712022-12-21 11:39:3341 days 20 hrs ago0xd220ce18c1f3462370c1b2b62770e80a2388c035 IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.01150467195 166.862545877
0xfbd86fb1a4da5ff86cd2cc0609903a05097e4998561658e623cbc469de528986Freeze Token370960952022-12-21 11:30:0541 days 21 hrs ago0xb0c59f5bf81203a1c427b68c256df7f54c0e90b1 IN  0x22d976d9e5a7458662026834c737de3e0eea9e560 MATIC0.012906083493 181.471667119
[ Download CSV Export 
Parent Txn Hash Block From To Value
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 polygonscan.com 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
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.