ETH Price: $2,684.99 (-2.28%)

Contract

0xF2A63eBBA377f47Dd07843e7EF216eBeA67DD2f6
 

Overview

ETH Balance

1.44 ETH

Eth Value

$3,866.39 (@ $2,684.99/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Flip Sale State152324712022-07-28 17:57:53760 days ago1659031073IN
0xF2A63eBB...eA67DD2f6
0 ETH0.0011892141.29207892
Set Approval For...152061202022-07-24 15:30:13764 days ago1658676613IN
0xF2A63eBB...eA67DD2f6
0 ETH0.0005261311.27528508
Transfer From151838252022-07-21 4:33:26767 days ago1658378006IN
0xF2A63eBB...eA67DD2f6
0 ETH0.0013095911.83832956
Transfer From151838192022-07-21 4:31:55767 days ago1658377915IN
0xF2A63eBB...eA67DD2f6
0 ETH0.001256479.36191008
Transfer From151838122022-07-21 4:31:05767 days ago1658377865IN
0xF2A63eBB...eA67DD2f6
0 ETH0.0014809410.81448513
Transfer From151837992022-07-21 4:28:42767 days ago1658377722IN
0xF2A63eBB...eA67DD2f6
0 ETH0.0040397211.82052972
Transfer From151837902022-07-21 4:26:56767 days ago1658377616IN
0xF2A63eBB...eA67DD2f6
0 ETH0.0051939613.86785101
Transfer From151837822022-07-21 4:25:17767 days ago1658377517IN
0xF2A63eBB...eA67DD2f6
0 ETH0.0011274416.35114074
Transfer From151837652022-07-21 4:22:07767 days ago1658377327IN
0xF2A63eBB...eA67DD2f6
0 ETH0.0053308718.39119206
Transfer From151837492022-07-21 4:16:46767 days ago1658377006IN
0xF2A63eBB...eA67DD2f6
0 ETH0.0014756412.24004055
Transfer From151837442022-07-21 4:16:11767 days ago1658376971IN
0xF2A63eBB...eA67DD2f6
0 ETH0.002247913.49502231
Transfer From151837302022-07-21 4:14:11767 days ago1658376851IN
0xF2A63eBB...eA67DD2f6
0 ETH0.0031756117.85209038
Transfer From151837192022-07-21 4:11:42767 days ago1658376702IN
0xF2A63eBB...eA67DD2f6
0 ETH0.0018797421.02459997
Set Approval For...151702132022-07-19 1:55:10769 days ago1658195710IN
0xF2A63eBB...eA67DD2f6
0 ETH0.0011956125.57630921
Set Approval For...151275762022-07-12 11:35:41776 days ago1657625741IN
0xF2A63eBB...eA67DD2f6
0 ETH0.0005406711.58680866
Transfer From151275232022-07-12 11:25:23776 days ago1657625123IN
0xF2A63eBB...eA67DD2f6
0 ETH0.0009847115.44644739
Set Approval For...151075472022-07-09 9:26:00779 days ago1657358760IN
0xF2A63eBB...eA67DD2f6
0 ETH0.000688814.76117594
Transfer From150972762022-07-07 19:24:02781 days ago1657221842IN
0xF2A63eBB...eA67DD2f6
0 ETH0.0047976869.58009678
Transfer From150894642022-07-06 14:26:25782 days ago1657117585IN
0xF2A63eBB...eA67DD2f6
0 ETH0.005008440.75582675
Transfer From150860472022-07-06 1:35:53782 days ago1657071353IN
0xF2A63eBB...eA67DD2f6
0 ETH0.0031993846.40015558
Set Approval For...150860362022-07-06 1:32:09782 days ago1657071129IN
0xF2A63eBB...eA67DD2f6
0 ETH0.0016871436.09099261
Transfer From150804642022-07-05 4:52:10783 days ago1656996730IN
0xF2A63eBB...eA67DD2f6
0 ETH0.0017232313.71806868
Flip Sale State150575222022-07-01 15:57:57787 days ago1656691077IN
0xF2A63eBB...eA67DD2f6
0 ETH0.0017456260.61209903
Flip Sale State150483832022-06-30 3:36:56788 days ago1656560216IN
0xF2A63eBB...eA67DD2f6
0 ETH0.0010082335.00822242
Flip Sale State150481512022-06-30 2:29:07788 days ago1656556147IN
0xF2A63eBB...eA67DD2f6
0 ETH0.0008495629.49862627
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DiversityDollz

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-24
*/

// SPDX-License-Identifier: MIT
/**
 * @title DDZ
 * @author Shahid Ahmed
 * @dev Used for Ethereum projects compatible with OpenSea
 */
pragma solidity ^0.8.0;
pragma solidity ^0.8.0;
interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
pragma solidity ^0.8.0;
interface IERC721Receiver {
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}
pragma solidity ^0.8.0;
interface IERC721 is IERC165 {
    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 balance);
    function ownerOf(uint256 tokenId) external view returns (address owner);
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;
    function approve(address to, uint256 tokenId) external;
    function getApproved(uint256 tokenId)
        external
        view
        returns (address operator);
    function setApprovalForAll(address operator, bool _approved) external;
    function isApprovedForAll(address owner, address operator)
        external
        view
        returns (bool);
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}
pragma solidity ^0.8.0;
interface IERC721Metadata is IERC721 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function tokenURI(uint256 tokenId) external view returns (string memory);
}
pragma solidity ^0.8.0;
interface IERC721Enumerable is IERC721 {
    function totalSupply() external view returns (uint256);
    function tokenOfOwnerByIndex(address owner, uint256 index)
        external
        view
        returns (uint256);
    function tokenByIndex(uint256 index) external view returns (uint256);
}
pragma solidity ^0.8.1;
library Address {
    function isContract(address account) internal view returns (bool) {

        return account.code.length > 0;
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }
    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(
            data
        );
        return verifyCallResult(success, returndata, errorMessage);
    }
    function functionStaticCall(address target, bytes memory data)
        internal
        view
        returns (bytes memory)
    {
        return
            functionStaticCall(
                target,
                data,
                "Address: low-level static call failed"
            );
    }
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function functionDelegateCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return
            functionDelegateCall(
                target,
                data,
                "Address: low-level delegate call failed"
            );
    }
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

pragma solidity ^0.8.0;

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
    constructor() {
        _setOwner(_msgSender());
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)
pragma solidity ^0.8.0;
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
    function toString(uint256 value) internal pure returns (string memory) {
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }
    function toHexString(uint256 value, uint256 length)
        internal
        pure
        returns (string memory)
    {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}
// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)
pragma solidity ^0.8.0;
abstract contract ERC165 is IERC165 {
    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override
        returns (bool)
    {
        return interfaceId == type(IERC165).interfaceId;
    }
}

pragma solidity ^0.8.0;

abstract contract ReentrancyGuard {
    // word because each write operation emits an extra SLOAD to first read the
    // back. This is the compiler's defense against contract upgrades and

    // but in exchange the refund on every call to nonReentrant will be lower in
    // transaction's gas, it is best to keep them low in cases like this one, to
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }
    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;

        _;
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

pragma solidity ^0.8.0;
library MerkleProof {
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }
    function processProof(bytes32[] memory proof, bytes32 leaf)
        internal
        pure
        returns (bytes32)
    {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                computedHash = _efficientHash(computedHash, proofElement);
            } else {
                computedHash = _efficientHash(proofElement, computedHash);
            }
        }
        return computedHash;
    }

    function _efficientHash(bytes32 a, bytes32 b)
        private
        pure
        returns (bytes32 value)
    {
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}
pragma solidity ^0.8.0;
contract ERC721A is
    Context,
    ERC165,
    IERC721,
    IERC721Metadata,
    IERC721Enumerable
{
    using Address for address;
    using Strings for uint256;

    struct TokenOwnership {
        address addr;
        uint64 startTimestamp;
    }

    struct AddressData {
        uint128 balance;
        uint128 numberMinted;
    }

    uint256 private currentIndex = 0;

    uint256 internal immutable collectionSize;
    uint256 internal immutable maxBatchSize;
    string private _name;
    string private _symbol;
    // An empty struct value does not necessarily mean the token is unowned. See ownershipOf implementation for details.
    mapping(uint256 => TokenOwnership) private _ownerships;
    mapping(address => AddressData) private _addressData;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;
    constructor(
        string memory name_,
        string memory symbol_,
        uint256 maxBatchSize_,
        uint256 collectionSize_
    ) {
        require(
            collectionSize_ > 0,
            "ERC721A: collection must have a nonzero supply"
        );
        require(maxBatchSize_ > 0, "ERC721A: max batch size must be nonzero");
        _name = name_;
        _symbol = symbol_;
        maxBatchSize = maxBatchSize_;
        collectionSize = collectionSize_;
    }
    function totalSupply() public view override returns (uint256) {
        return currentIndex;
    }
    function tokenByIndex(uint256 index)
        public
        view
        override
        returns (uint256)
    {
        require(index < totalSupply(), "ERC721A: global index out of bounds");
        return index;
    }
    function tokenOfOwnerByIndex(address owner, uint256 index)
        public
        view
        override
        returns (uint256)
    {
        require(index < balanceOf(owner), "ERC721A: owner index out of bounds");
        uint256 numMintedSoFar = totalSupply();
        uint256 tokenIdsIdx = 0;
        address currOwnershipAddr = address(0);
        for (uint256 i = 0; i < numMintedSoFar; i++) {
            TokenOwnership memory ownership = _ownerships[i];
            if (ownership.addr != address(0)) {
                currOwnershipAddr = ownership.addr;
            }
            if (currOwnershipAddr == owner) {
                if (tokenIdsIdx == index) {
                    return i;
                }
                tokenIdsIdx++;
            }
        }
        revert("ERC721A: unable to get token of owner by index");
    }
    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override(ERC165, IERC165)
        returns (bool)
    {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            interfaceId == type(IERC721Enumerable).interfaceId ||
            super.supportsInterface(interfaceId);
    }
    function balanceOf(address owner) public view override returns (uint256) {
        require(
            owner != address(0),
            "ERC721A: balance query for the zero address"
        );
        return uint256(_addressData[owner].balance);
    }

    function _numberMinted(address owner) internal view returns (uint256) {
        require(
            owner != address(0),
            "ERC721A: number minted query for the zero address"
        );
        return uint256(_addressData[owner].numberMinted);
    }

    function ownershipOf(uint256 tokenId)
        internal
        view
        returns (TokenOwnership memory)
    {
        require(_exists(tokenId), "ERC721A: owner query for nonexistent token");

        uint256 lowestTokenToCheck;
        if (tokenId >= maxBatchSize) {
            lowestTokenToCheck = tokenId - maxBatchSize + 1;
        }

        for (uint256 curr = tokenId; curr >= lowestTokenToCheck; curr--) {
            TokenOwnership memory ownership = _ownerships[curr];
            if (ownership.addr != address(0)) {
                return ownership;
            }
        }

        revert("ERC721A: unable to determine the owner of token");
    }
    function ownerOf(uint256 tokenId) public view override returns (address) {
        return ownershipOf(tokenId).addr;
    }
    function name() public view virtual override returns (string memory) {
        return _name;
    }
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
    function tokenURI(uint256 tokenId)
        public
        view
        virtual
        override
        returns (string memory)
    {
        require(
            _exists(tokenId),
            "ERC721Metadata: URI query for nonexistent token"
        );

        string memory baseURI = _baseURI();
        return
            bytes(baseURI).length > 0
                ? string(abi.encodePacked(baseURI, tokenId.toString()))
                : "";
    }
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }
    function approve(address to, uint256 tokenId) public override {
        address owner = ERC721A.ownerOf(tokenId);
        require(to != owner, "ERC721A: approval to current owner");

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721A: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId, owner);
    }
    function getApproved(uint256 tokenId)
        public
        view
        override
        returns (address)
    {
        require(
            _exists(tokenId),
            "ERC721A: approved query for nonexistent token"
        );

        return _tokenApprovals[tokenId];
    }
    function setApprovalForAll(address operator, bool approved)
        public
        override
    {
        require(operator != _msgSender(), "ERC721A: approve to caller");

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }
    function isApprovedForAll(address owner, address operator)
        public
        view
        virtual
        override
        returns (bool)
    {
        return _operatorApprovals[owner][operator];
    }
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public override {
        _transfer(from, to, tokenId);
    }
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public override {
        safeTransferFrom(from, to, tokenId, "");
    }
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public override {
        _transfer(from, to, tokenId);
        require(
            _checkOnERC721Received(from, to, tokenId, _data),
            "ERC721A: transfer to non ERC721Receiver implementer"
        );
    }
    function _exists(uint256 tokenId) internal view returns (bool) {
        return tokenId < currentIndex;
    }

    function _safeMint(address to, uint256 quantity) internal {
        _safeMint(to, quantity, "");
    }
    function _safeMint(
        address to,
        uint256 quantity,
        bytes memory _data
    ) internal {
        uint256 startTokenId = currentIndex;
        require(to != address(0), "ERC721A: mint to the zero address");
        require(!_exists(startTokenId), "ERC721A: token already minted");
        require(quantity <= maxBatchSize, "ERC721A: quantity to mint too high");

        _beforeTokenTransfers(address(0), to, startTokenId, quantity);

        AddressData memory addressData = _addressData[to];
        _addressData[to] = AddressData(
            addressData.balance + uint128(quantity),
            addressData.numberMinted + uint128(quantity)
        );
        _ownerships[startTokenId] = TokenOwnership(to, uint64(block.timestamp));

        uint256 updatedIndex = startTokenId;

        for (uint256 i = 0; i < quantity; i++) {
            emit Transfer(address(0), to, updatedIndex);
            require(
                _checkOnERC721Received(address(0), to, updatedIndex, _data),
                "ERC721A: transfer to non ERC721Receiver implementer"
            );
            updatedIndex++;
        }

        currentIndex = updatedIndex;
        _afterTokenTransfers(address(0), to, startTokenId, quantity);
    }
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) private {
        TokenOwnership memory prevOwnership = ownershipOf(tokenId);

        bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
            getApproved(tokenId) == _msgSender() ||
            isApprovedForAll(prevOwnership.addr, _msgSender()));

        require(
            isApprovedOrOwner,
            "ERC721A: transfer caller is not owner nor approved"
        );

        require(
            prevOwnership.addr == from,
            "ERC721A: transfer from incorrect owner"
        );
        require(to != address(0), "ERC721A: transfer to the zero address");

        _beforeTokenTransfers(from, to, tokenId, 1);
        _approve(address(0), tokenId, prevOwnership.addr);

        _addressData[from].balance -= 1;
        _addressData[to].balance += 1;
        _ownerships[tokenId] = TokenOwnership(to, uint64(block.timestamp));
        // Set the slot of tokenId+1 explicitly in storage to maintain correctness for ownerOf(tokenId+1) calls.
        uint256 nextTokenId = tokenId + 1;
        if (_ownerships[nextTokenId].addr == address(0)) {
            if (_exists(nextTokenId)) {
                _ownerships[nextTokenId] = TokenOwnership(
                    prevOwnership.addr,
                    prevOwnership.startTimestamp
                );
            }
        }

        emit Transfer(from, to, tokenId);
        _afterTokenTransfers(from, to, tokenId, 1);
    }
    function _approve(
        address to,
        uint256 tokenId,
        address owner
    ) private {
        _tokenApprovals[tokenId] = to;
        emit Approval(owner, to, tokenId);
    }

    uint256 public nextOwnerToExplicitlySet = 0;
    function _setOwnersExplicit(uint256 quantity) internal {
        uint256 oldNextOwnerToSet = nextOwnerToExplicitlySet;
        require(quantity > 0, "quantity must be nonzero");
        uint256 endIndex = oldNextOwnerToSet + quantity - 1;
        if (endIndex > collectionSize - 1) {
            endIndex = collectionSize - 1;
        }
        require(_exists(endIndex), "not enough minted yet for this cleanup");
        for (uint256 i = oldNextOwnerToSet; i <= endIndex; i++) {
            if (_ownerships[i].addr == address(0)) {
                TokenOwnership memory ownership = ownershipOf(i);
                _ownerships[i] = TokenOwnership(
                    ownership.addr,
                    ownership.startTimestamp
                );
            }
        }
        nextOwnerToExplicitlySet = endIndex + 1;
    }
    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try
                IERC721Receiver(to).onERC721Received(
                    _msgSender(),
                    from,
                    tokenId,
                    _data
                )
            returns (bytes4 retval) {
                return retval == IERC721Receiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert(
                        "ERC721A: transfer to non ERC721Receiver implementer"
                    );
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }
    function _beforeTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
    function _afterTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
}

contract DiversityDollz is Ownable, ERC721A, ReentrancyGuard {

    bool public preSale = false;
    bool public whitelistSale = false;
    bool public publicSale = false;
    bool public revealed = false;

    uint256 public maxPerTransactionPreSale = 10;
    uint256 public maxPerTransactionWhitelist = 6;
    uint256 public maxPerTransactionPublicSale = 20;
    uint256 public maxPerAddress = 100;
    uint256 public maxToken = 10000;
    uint256 public price = 0;

    string private _baseTokenURI;
    string public notRevealedUri;

    mapping (address => uint256) public mintedBalanceWL;
    mapping (address => uint256) public mintedBalancePS;

    bytes32 root;

    constructor(string memory _NAME, string memory _SYMBOL)
        ERC721A(_NAME, _SYMBOL, maxPerAddress, maxToken)
    {}

    modifier callerIsUser() {
        require(tx.origin == msg.sender, "The caller is another contract");
        _;
    }

    function numberMinted(address owner) public view returns (uint256) {
        return _numberMinted(owner);
    }

    function getOwnershipData(uint256 tokenId)
        external
        view
        returns (TokenOwnership memory)
    {
        return ownershipOf(tokenId);
    }

    function tokenURI(uint256 tokenId)
        public
        view
        virtual
        override
        returns (string memory)
    {
        require(
            _exists(tokenId),
            "ERC721Metadata: URI query for nonexistent token"
        );

        if (revealed == false) {
            return notRevealedUri;
        }

        string memory _tokenURI = super.tokenURI(tokenId);
        return
            bytes(_tokenURI).length > 0
                ? string(abi.encodePacked(_tokenURI, ".json"))
                : "";
    }

    function mint(uint256 quantity, bytes32[] memory proof) external payable callerIsUser {
        require(preSale || whitelistSale || publicSale, "SALE_HAS_NOT_STARTED_YET");
        require(quantity > 0, "MUST_MINT_ATLEAST_ONE");
        require(numberMinted(msg.sender) + quantity <= maxPerAddress, "PER_WALLET_LIMIT_REACHED");
        if(preSale){
            require(mintedBalancePS[msg.sender] + quantity <= maxPerTransactionPreSale, "CANNOT_MINT_THAT_MANY_LIMIT_EXCEED");
            mintedBalancePS[msg.sender]+=quantity;
        }else if(whitelistSale){
            require(verify(proof), "ADDRESS_NOT_WHITELISTED");
            require(mintedBalanceWL[msg.sender] + quantity <= maxPerTransactionWhitelist, "CANNOT_MINT_THAT_MANY_LIMIT_EXCEED");
            mintedBalanceWL[msg.sender]+=quantity;
        }else if(publicSale){
            require(quantity <= maxPerTransactionPublicSale, "CANNOT_MINT_THAT_MANY");
        }
        require(totalSupply() + quantity <= maxToken, "NOT_ENOUGH_SUPPLY_TO_MINT_DESIRED_AMOUNT");
        require(msg.value >= price * quantity, "INVALID_ETH");
        _safeMint(msg.sender, quantity);
    }

    function giveaway(address _address, uint256 quantity) external onlyOwner{
        require(totalSupply() + quantity <= maxToken, "NOT_ENOUGH_SUPPLY_TO_GIVEAWAY_DESIRED_AMOUNT");
        _safeMint(_address, quantity);
    }


    function verify(bytes32[] memory proof) internal view returns (bool) {
        bytes32 leaf = keccak256(abi.encodePacked(msg.sender));
        return MerkleProof.verify(proof, root, leaf);
    }

    function _baseURI() internal view virtual override returns (string memory) {
        return _baseTokenURI;
    }

    function setPrice(uint256 _PriceInWEI) external onlyOwner {
        price = _PriceInWEI;
    }

    function setRoot(bytes32 _root) external onlyOwner {
        root = _root;
    }

    function flipSaleState() external onlyOwner {
        publicSale = !publicSale;
    }

    function flipPreSaleState() external onlyOwner {
        preSale = !preSale;
    }

    function flipWhitelistingState() external onlyOwner {
        whitelistSale = !whitelistSale;
    }

    function setBaseURI(string calldata baseURI) external onlyOwner {
        _baseTokenURI = baseURI;
    }

    function setNotRevealedURI(string memory _notRevealedURI) external onlyOwner {
        notRevealedUri = _notRevealedURI;
    }

    function reveal() external onlyOwner {
        revealed = true;
    }

    function withdraw() external onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_NAME","type":"string"},{"internalType":"string","name":"_SYMBOL","type":"string"}],"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":[],"name":"flipPreSaleState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipSaleState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipWhitelistingState","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":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getOwnershipData","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"}],"internalType":"struct ERC721A.TokenOwnership","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"giveaway","outputs":[],"stateMutability":"nonpayable","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":"maxPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerTransactionPreSale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerTransactionPublicSale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerTransactionWhitelist","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mintedBalancePS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mintedBalanceWL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextOwnerToExplicitlySet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"numberMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_notRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_PriceInWEI","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_root","type":"bytes32"}],"name":"setRoot","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":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelistSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c0604052600060015560006008556000600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055506000600a60026101000a81548160ff0219169083151502179055506000600a60036101000a81548160ff021916908315150217905550600a600b556006600c556014600d556064600e55612710600f556000601055348015620000a657600080fd5b5060405162006049380380620060498339818101604052810190620000cc9190620003c4565b8181600e54600f54620000f4620000e8620001d660201b60201c565b620001de60201b60201c565b600081116200013a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200013190620004a7565b60405180910390fd5b6000821162000180576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001779062000485565b60405180910390fd5b836002908051906020019062000198929190620002a2565b508260039080519060200190620001b1929190620002a2565b508160a0818152505080608081815250505050505060016009819055505050620006e8565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002b0906200056f565b90600052602060002090601f016020900481019282620002d4576000855562000320565b82601f10620002ef57805160ff191683800117855562000320565b8280016001018555821562000320579182015b828111156200031f57825182559160200191906001019062000302565b5b5090506200032f919062000333565b5090565b5b808211156200034e57600081600090555060010162000334565b5090565b6000620003696200036384620004f2565b620004c9565b9050828152602081018484840111156200038257600080fd5b6200038f84828562000539565b509392505050565b600082601f830112620003a957600080fd5b8151620003bb84826020860162000352565b91505092915050565b60008060408385031215620003d857600080fd5b600083015167ffffffffffffffff811115620003f357600080fd5b620004018582860162000397565b925050602083015167ffffffffffffffff8111156200041f57600080fd5b6200042d8582860162000397565b9150509250929050565b60006200044660278362000528565b915062000453826200064a565b604082019050919050565b60006200046d602e8362000528565b91506200047a8262000699565b604082019050919050565b60006020820190508181036000830152620004a08162000437565b9050919050565b60006020820190508181036000830152620004c2816200045e565b9050919050565b6000620004d5620004e8565b9050620004e38282620005a5565b919050565b6000604051905090565b600067ffffffffffffffff82111562000510576200050f6200060a565b5b6200051b8262000639565b9050602081019050919050565b600082825260208201905092915050565b60005b83811015620005595780820151818401526020810190506200053c565b8381111562000569576000848401525b50505050565b600060028204905060018216806200058857607f821691505b602082108114156200059f576200059e620005db565b5b50919050565b620005b08262000639565b810181811067ffffffffffffffff82111715620005d257620005d16200060a565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f455243373231413a206d61782062617463682073697a65206d7573742062652060008201527f6e6f6e7a65726f00000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060008201527f6e6f6e7a65726f20737570706c79000000000000000000000000000000000000602082015250565b60805160a0516159306200071960003960008181612b7801528181612ba101526132150152600050506159306000f3fe60806040526004361061027d5760003560e01c80638da5cb5b1161014f578063c87b56dd116100c1578063dc33e6811161007a578063dc33e68114610957578063e985e9c514610994578063f0325549146109d1578063f2c4ce1e146109e8578063f2fde38b14610a11578063ffeff56214610a3a5761027d565b8063c87b56dd14610833578063ca69e32314610870578063d082b87e1461089b578063d30d3e03146108d8578063d7224ba014610903578063dab5f3401461092e5761027d565b8063969a55ec11610113578063969a55ec1461076c578063a035b1fe14610783578063a22cb465146107ae578063a475b5dd146107d7578063b88d4fde146107ee578063ba41b0c6146108175761027d565b80638da5cb5b146106855780638e9c33e1146106b057806391b7f5ed146106db5780639231ab2a1461070457806395d89b41146107415761027d565b806334918dfd116101f35780635a7adf7f116101ac5780635a7adf7f146105735780636352211e1461059e578063639814e0146105db57806370a0823114610606578063715018a6146106435780638ca6070a1461065a5761027d565b806334918dfd1461048b5780633ccfd60b146104a257806342842e0e146104b95780634f6ccce7146104e2578063518302271461051f57806355f804b31461054a5761027d565b8063095ea7b311610245578063095ea7b31461037b57806318160ddd146103a457806323b872dd146103cf5780632f745c59146103f857806331ffd6f11461043557806333bc1c5c146104605761027d565b806301ffc9a714610282578063050225ea146102bf57806306fdde03146102e8578063081812fc14610313578063081c8c4414610350575b600080fd5b34801561028e57600080fd5b506102a960048036038101906102a49190613ecb565b610a77565b6040516102b6919061467c565b60405180910390f35b3480156102cb57600080fd5b506102e660048036038101906102e19190613e66565b610bc1565b005b3480156102f457600080fd5b506102fd610ca2565b60405161030a9190614697565b60405180910390f35b34801561031f57600080fd5b5061033a60048036038101906103359190613fa3565b610d34565b6040516103479190614615565b60405180910390f35b34801561035c57600080fd5b50610365610db9565b6040516103729190614697565b60405180910390f35b34801561038757600080fd5b506103a2600480360381019061039d9190613e66565b610e47565b005b3480156103b057600080fd5b506103b9610f60565b6040516103c69190614ab4565b60405180910390f35b3480156103db57600080fd5b506103f660048036038101906103f19190613d60565b610f6a565b005b34801561040457600080fd5b5061041f600480360381019061041a9190613e66565b610f7a565b60405161042c9190614ab4565b60405180910390f35b34801561044157600080fd5b5061044a611178565b604051610457919061467c565b60405180910390f35b34801561046c57600080fd5b5061047561118b565b604051610482919061467c565b60405180910390f35b34801561049757600080fd5b506104a061119e565b005b3480156104ae57600080fd5b506104b7611246565b005b3480156104c557600080fd5b506104e060048036038101906104db9190613d60565b61130b565b005b3480156104ee57600080fd5b5061050960048036038101906105049190613fa3565b61132b565b6040516105169190614ab4565b60405180910390f35b34801561052b57600080fd5b5061053461137e565b604051610541919061467c565b60405180910390f35b34801561055657600080fd5b50610571600480360381019061056c9190613f1d565b611391565b005b34801561057f57600080fd5b50610588611423565b604051610595919061467c565b60405180910390f35b3480156105aa57600080fd5b506105c560048036038101906105c09190613fa3565b611436565b6040516105d29190614615565b60405180910390f35b3480156105e757600080fd5b506105f061144c565b6040516105fd9190614ab4565b60405180910390f35b34801561061257600080fd5b5061062d60048036038101906106289190613cfb565b611452565b60405161063a9190614ab4565b60405180910390f35b34801561064f57600080fd5b5061065861153b565b005b34801561066657600080fd5b5061066f6115c3565b60405161067c9190614ab4565b60405180910390f35b34801561069157600080fd5b5061069a6115c9565b6040516106a79190614615565b60405180910390f35b3480156106bc57600080fd5b506106c56115f2565b6040516106d29190614ab4565b60405180910390f35b3480156106e757600080fd5b5061070260048036038101906106fd9190613fa3565b6115f8565b005b34801561071057600080fd5b5061072b60048036038101906107269190613fa3565b61167e565b6040516107389190614a99565b60405180910390f35b34801561074d57600080fd5b50610756611696565b6040516107639190614697565b60405180910390f35b34801561077857600080fd5b50610781611728565b005b34801561078f57600080fd5b506107986117d0565b6040516107a59190614ab4565b60405180910390f35b3480156107ba57600080fd5b506107d560048036038101906107d09190613e2a565b6117d6565b005b3480156107e357600080fd5b506107ec611957565b005b3480156107fa57600080fd5b5061081560048036038101906108109190613daf565b6119f0565b005b610831600480360381019061082c9190613fcc565b611a4c565b005b34801561083f57600080fd5b5061085a60048036038101906108559190613fa3565b611f2a565b6040516108679190614697565b60405180910390f35b34801561087c57600080fd5b50610885612077565b6040516108929190614ab4565b60405180910390f35b3480156108a757600080fd5b506108c260048036038101906108bd9190613cfb565b61207d565b6040516108cf9190614ab4565b60405180910390f35b3480156108e457600080fd5b506108ed612095565b6040516108fa9190614ab4565b60405180910390f35b34801561090f57600080fd5b5061091861209b565b6040516109259190614ab4565b60405180910390f35b34801561093a57600080fd5b5061095560048036038101906109509190613ea2565b6120a1565b005b34801561096357600080fd5b5061097e60048036038101906109799190613cfb565b612127565b60405161098b9190614ab4565b60405180910390f35b3480156109a057600080fd5b506109bb60048036038101906109b69190613d24565b612139565b6040516109c8919061467c565b60405180910390f35b3480156109dd57600080fd5b506109e66121cd565b005b3480156109f457600080fd5b50610a0f6004803603810190610a0a9190613f62565b612275565b005b348015610a1d57600080fd5b50610a386004803603810190610a339190613cfb565b61230b565b005b348015610a4657600080fd5b50610a616004803603810190610a5c9190613cfb565b612403565b604051610a6e9190614ab4565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b4257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610baa57507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610bba5750610bb98261241b565b5b9050919050565b610bc9612485565b73ffffffffffffffffffffffffffffffffffffffff16610be76115c9565b73ffffffffffffffffffffffffffffffffffffffff1614610c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3490614879565b60405180910390fd5b600f5481610c49610f60565b610c539190614c0b565b1115610c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8b906149f9565b60405180910390fd5b610c9e828261248d565b5050565b606060028054610cb190614e6e565b80601f0160208091040260200160405190810160405280929190818152602001828054610cdd90614e6e565b8015610d2a5780601f10610cff57610100808354040283529160200191610d2a565b820191906000526020600020905b815481529060010190602001808311610d0d57829003601f168201915b5050505050905090565b6000610d3f826124ab565b610d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7590614a59565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60128054610dc690614e6e565b80601f0160208091040260200160405190810160405280929190818152602001828054610df290614e6e565b8015610e3f5780601f10610e1457610100808354040283529160200191610e3f565b820191906000526020600020905b815481529060010190602001808311610e2257829003601f168201915b505050505081565b6000610e5282611436565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eba90614959565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ee2612485565b73ffffffffffffffffffffffffffffffffffffffff161480610f115750610f1081610f0b612485565b612139565b5b610f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4790614819565b60405180910390fd5b610f5b8383836124b9565b505050565b6000600154905090565b610f7583838361256b565b505050565b6000610f8583611452565b8210610fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbd906146b9565b60405180910390fd5b6000610fd0610f60565b905060008060005b83811015611136576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146110ca57806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111225786841415611113578195505050505050611172565b838061111e90614ed1565b9450505b50808061112e90614ed1565b915050610fd8565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116990614a19565b60405180910390fd5b92915050565b600a60019054906101000a900460ff1681565b600a60029054906101000a900460ff1681565b6111a6612485565b73ffffffffffffffffffffffffffffffffffffffff166111c46115c9565b73ffffffffffffffffffffffffffffffffffffffff161461121a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121190614879565b60405180910390fd5b600a60029054906101000a900460ff1615600a60026101000a81548160ff021916908315150217905550565b61124e612485565b73ffffffffffffffffffffffffffffffffffffffff1661126c6115c9565b73ffffffffffffffffffffffffffffffffffffffff16146112c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b990614879565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611308573d6000803e3d6000fd5b50565b611326838383604051806020016040528060008152506119f0565b505050565b6000611335610f60565b8210611376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136d90614779565b60405180910390fd5b819050919050565b600a60039054906101000a900460ff1681565b611399612485565b73ffffffffffffffffffffffffffffffffffffffff166113b76115c9565b73ffffffffffffffffffffffffffffffffffffffff161461140d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140490614879565b60405180910390fd5b81816011919061141e92919061396a565b505050565b600a60009054906101000a900460ff1681565b600061144182612b24565b600001519050919050565b600e5481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ba90614839565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b611543612485565b73ffffffffffffffffffffffffffffffffffffffff166115616115c9565b73ffffffffffffffffffffffffffffffffffffffff16146115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ae90614879565b60405180910390fd5b6115c16000612d27565b565b600b5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d5481565b611600612485565b73ffffffffffffffffffffffffffffffffffffffff1661161e6115c9565b73ffffffffffffffffffffffffffffffffffffffff1614611674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166b90614879565b60405180910390fd5b8060108190555050565b6116866139f0565b61168f82612b24565b9050919050565b6060600380546116a590614e6e565b80601f01602080910402602001604051908101604052809291908181526020018280546116d190614e6e565b801561171e5780601f106116f35761010080835404028352916020019161171e565b820191906000526020600020905b81548152906001019060200180831161170157829003601f168201915b5050505050905090565b611730612485565b73ffffffffffffffffffffffffffffffffffffffff1661174e6115c9565b73ffffffffffffffffffffffffffffffffffffffff16146117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b90614879565b60405180910390fd5b600a60019054906101000a900460ff1615600a60016101000a81548160ff021916908315150217905550565b60105481565b6117de612485565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561184c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611843906148d9565b60405180910390fd5b8060076000611859612485565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611906612485565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161194b919061467c565b60405180910390a35050565b61195f612485565b73ffffffffffffffffffffffffffffffffffffffff1661197d6115c9565b73ffffffffffffffffffffffffffffffffffffffff16146119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca90614879565b60405180910390fd5b6001600a60036101000a81548160ff021916908315150217905550565b6119fb84848461256b565b611a0784848484612deb565b611a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3d90614999565b60405180910390fd5b50505050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab1906147d9565b60405180910390fd5b600a60009054906101000a900460ff1680611ae15750600a60019054906101000a900460ff165b80611af85750600a60029054906101000a900460ff165b611b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2e90614979565b60405180910390fd5b60008211611b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7190614899565b60405180910390fd5b600e5482611b8733612127565b611b919190614c0b565b1115611bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc9906147f9565b60405180910390fd5b600a60009054906101000a900460ff1615611cd157600b5482601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c359190614c0b565b1115611c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6d90614919565b60405180910390fd5b81601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cc59190614c0b565b92505081905550611e75565b600a60019054906101000a900460ff1615611e1857611cef81612f82565b611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2590614759565b60405180910390fd5b600c5482601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d7c9190614c0b565b1115611dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db490614919565b60405180910390fd5b81601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e0c9190614c0b565b92505081905550611e74565b600a60029054906101000a900460ff1615611e7357600d54821115611e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e69906146d9565b60405180910390fd5b5b5b5b600f5482611e81610f60565b611e8b9190614c0b565b1115611ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec390614939565b60405180910390fd5b81601054611eda9190614c92565b341015611f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1390614719565b60405180910390fd5b611f26338361248d565b5050565b6060611f35826124ab565b611f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6b906148b9565b60405180910390fd5b60001515600a60039054906101000a900460ff16151514156120225760128054611f9d90614e6e565b80601f0160208091040260200160405190810160405280929190818152602001828054611fc990614e6e565b80156120165780601f10611feb57610100808354040283529160200191612016565b820191906000526020600020905b815481529060010190602001808311611ff957829003601f168201915b50505050509050612072565b600061202d83612fc3565b9050600081511161204d576040518060200160405280600081525061206e565b8060405160200161205e91906145f3565b6040516020818303038152906040525b9150505b919050565b600f5481565b60146020528060005260406000206000915090505481565b600c5481565b60085481565b6120a9612485565b73ffffffffffffffffffffffffffffffffffffffff166120c76115c9565b73ffffffffffffffffffffffffffffffffffffffff161461211d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211490614879565b60405180910390fd5b8060158190555050565b60006121328261306a565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6121d5612485565b73ffffffffffffffffffffffffffffffffffffffff166121f36115c9565b73ffffffffffffffffffffffffffffffffffffffff1614612249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224090614879565b60405180910390fd5b600a60009054906101000a900460ff1615600a60006101000a81548160ff021916908315150217905550565b61227d612485565b73ffffffffffffffffffffffffffffffffffffffff1661229b6115c9565b73ffffffffffffffffffffffffffffffffffffffff16146122f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e890614879565b60405180910390fd5b8060129080519060200190612307929190613a2a565b5050565b612313612485565b73ffffffffffffffffffffffffffffffffffffffff166123316115c9565b73ffffffffffffffffffffffffffffffffffffffff1614612387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237e90614879565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156123f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ee906146f9565b60405180910390fd5b61240081612d27565b50565b60136020528060005260406000206000915090505481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b6124a7828260405180602001604052806000815250613153565b5050565b600060015482109050919050565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061257682612b24565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1661259d612485565b73ffffffffffffffffffffffffffffffffffffffff1614806125f957506125c2612485565b73ffffffffffffffffffffffffffffffffffffffff166125e184610d34565b73ffffffffffffffffffffffffffffffffffffffff16145b806126155750612614826000015161260f612485565b612139565b5b905080612657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264e906148f9565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146126c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c090614859565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273090614799565b60405180910390fd5b6127468585856001613633565b61275660008484600001516124b9565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166127c49190614cec565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166128689190614bc5565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600060018461296e9190614c0b565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612ab4576129e4816124ab565b15612ab3576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612b1c8686866001613639565b505050505050565b612b2c6139f0565b612b35826124ab565b612b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6b90614739565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000008310612bd85760017f000000000000000000000000000000000000000000000000000000000000000084612bcb9190614d20565b612bd59190614c0b565b90505b60008390505b818110612ce6576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612cd257809350505050612d22565b508080612cde90614e44565b915050612bde565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1990614a39565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612e0c8473ffffffffffffffffffffffffffffffffffffffff1661363f565b15612f75578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612e35612485565b8786866040518563ffffffff1660e01b8152600401612e579493929190614630565b602060405180830381600087803b158015612e7157600080fd5b505af1925050508015612ea257506040513d601f19601f82011682018060405250810190612e9f9190613ef4565b60015b612f25573d8060008114612ed2576040519150601f19603f3d011682016040523d82523d6000602084013e612ed7565b606091505b50600081511415612f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1490614999565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612f7a565b600190505b949350505050565b60008033604051602001612f9691906145b4565b604051602081830303815290604052805190602001209050612fbb8360155483613662565b915050919050565b6060612fce826124ab565b61300d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613004906148b9565b60405180910390fd5b6000613017613679565b905060008151116130375760405180602001604052806000815250613062565b806130418461370b565b6040516020016130529291906145cf565b6040516020818303038152906040525b915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d2906147b9565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156131ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c1906149d9565b60405180910390fd5b6131d3816124ab565b15613213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320a906149b9565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000831115613276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326d90614a79565b60405180910390fd5b6132836000858386613633565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050905060405180604001604052808583600001516133809190614bc5565b6fffffffffffffffffffffffffffffffff1681526020018583602001516133a79190614bc5565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b8581101561361657818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46135b66000888488612deb565b6135f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135ec90614999565b60405180910390fd5b818061360090614ed1565b925050808061360e90614ed1565b915050613545565b508060018190555061362b6000878588613639565b505050505050565b50505050565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008261366f85846138b8565b1490509392505050565b60606011805461368890614e6e565b80601f01602080910402602001604051908101604052809291908181526020018280546136b490614e6e565b80156137015780601f106136d657610100808354040283529160200191613701565b820191906000526020600020905b8154815290600101906020018083116136e457829003601f168201915b5050505050905090565b60606000821415613753576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506138b3565b600082905060005b6000821461378557808061376e90614ed1565b915050600a8261377e9190614c61565b915061375b565b60008167ffffffffffffffff8111156137c7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156137f95781602001600182028036833780820191505090505b5090505b600085146138ac576001826138129190614d20565b9150600a856138219190614f3e565b603061382d9190614c0b565b60f81b818381518110613869577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856138a59190614c61565b94506137fd565b8093505050505b919050565b60008082905060005b8451811015613948576000858281518110613905577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050808311613927576139208382613953565b9250613934565b6139318184613953565b92505b50808061394090614ed1565b9150506138c1565b508091505092915050565b600082600052816020526040600020905092915050565b82805461397690614e6e565b90600052602060002090601f01602090048101928261399857600085556139df565b82601f106139b157803560ff19168380011785556139df565b828001600101855582156139df579182015b828111156139de5782358255916020019190600101906139c3565b5b5090506139ec9190613ab0565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b828054613a3690614e6e565b90600052602060002090601f016020900481019282613a585760008555613a9f565b82601f10613a7157805160ff1916838001178555613a9f565b82800160010185558215613a9f579182015b82811115613a9e578251825591602001919060010190613a83565b5b509050613aac9190613ab0565b5090565b5b80821115613ac9576000816000905550600101613ab1565b5090565b6000613ae0613adb84614af4565b614acf565b90508083825260208201905082856020860282011115613aff57600080fd5b60005b85811015613b2f5781613b158882613c09565b845260208401935060208301925050600181019050613b02565b5050509392505050565b6000613b4c613b4784614b20565b614acf565b905082815260208101848484011115613b6457600080fd5b613b6f848285614e02565b509392505050565b6000613b8a613b8584614b51565b614acf565b905082815260208101848484011115613ba257600080fd5b613bad848285614e02565b509392505050565b600081359050613bc481615887565b92915050565b600082601f830112613bdb57600080fd5b8135613beb848260208601613acd565b91505092915050565b600081359050613c038161589e565b92915050565b600081359050613c18816158b5565b92915050565b600081359050613c2d816158cc565b92915050565b600081519050613c42816158cc565b92915050565b600082601f830112613c5957600080fd5b8135613c69848260208601613b39565b91505092915050565b60008083601f840112613c8457600080fd5b8235905067ffffffffffffffff811115613c9d57600080fd5b602083019150836001820283011115613cb557600080fd5b9250929050565b600082601f830112613ccd57600080fd5b8135613cdd848260208601613b77565b91505092915050565b600081359050613cf5816158e3565b92915050565b600060208284031215613d0d57600080fd5b6000613d1b84828501613bb5565b91505092915050565b60008060408385031215613d3757600080fd5b6000613d4585828601613bb5565b9250506020613d5685828601613bb5565b9150509250929050565b600080600060608486031215613d7557600080fd5b6000613d8386828701613bb5565b9350506020613d9486828701613bb5565b9250506040613da586828701613ce6565b9150509250925092565b60008060008060808587031215613dc557600080fd5b6000613dd387828801613bb5565b9450506020613de487828801613bb5565b9350506040613df587828801613ce6565b925050606085013567ffffffffffffffff811115613e1257600080fd5b613e1e87828801613c48565b91505092959194509250565b60008060408385031215613e3d57600080fd5b6000613e4b85828601613bb5565b9250506020613e5c85828601613bf4565b9150509250929050565b60008060408385031215613e7957600080fd5b6000613e8785828601613bb5565b9250506020613e9885828601613ce6565b9150509250929050565b600060208284031215613eb457600080fd5b6000613ec284828501613c09565b91505092915050565b600060208284031215613edd57600080fd5b6000613eeb84828501613c1e565b91505092915050565b600060208284031215613f0657600080fd5b6000613f1484828501613c33565b91505092915050565b60008060208385031215613f3057600080fd5b600083013567ffffffffffffffff811115613f4a57600080fd5b613f5685828601613c72565b92509250509250929050565b600060208284031215613f7457600080fd5b600082013567ffffffffffffffff811115613f8e57600080fd5b613f9a84828501613cbc565b91505092915050565b600060208284031215613fb557600080fd5b6000613fc384828501613ce6565b91505092915050565b60008060408385031215613fdf57600080fd5b6000613fed85828601613ce6565b925050602083013567ffffffffffffffff81111561400a57600080fd5b61401685828601613bca565b9150509250929050565b61402981614d54565b82525050565b61403881614d54565b82525050565b61404f61404a82614d54565b614f1a565b82525050565b61405e81614d66565b82525050565b600061406f82614b82565b6140798185614b98565b9350614089818560208601614e11565b6140928161502b565b840191505092915050565b60006140a882614b8d565b6140b28185614ba9565b93506140c2818560208601614e11565b6140cb8161502b565b840191505092915050565b60006140e182614b8d565b6140eb8185614bba565b93506140fb818560208601614e11565b80840191505092915050565b6000614114602283614ba9565b915061411f82615049565b604082019050919050565b6000614137601583614ba9565b915061414282615098565b602082019050919050565b600061415a602683614ba9565b9150614165826150c1565b604082019050919050565b600061417d600b83614ba9565b915061418882615110565b602082019050919050565b60006141a0602a83614ba9565b91506141ab82615139565b604082019050919050565b60006141c3601783614ba9565b91506141ce82615188565b602082019050919050565b60006141e6602383614ba9565b91506141f1826151b1565b604082019050919050565b6000614209602583614ba9565b915061421482615200565b604082019050919050565b600061422c603183614ba9565b91506142378261524f565b604082019050919050565b600061424f601e83614ba9565b915061425a8261529e565b602082019050919050565b6000614272601883614ba9565b915061427d826152c7565b602082019050919050565b6000614295603983614ba9565b91506142a0826152f0565b604082019050919050565b60006142b8602b83614ba9565b91506142c38261533f565b604082019050919050565b60006142db602683614ba9565b91506142e68261538e565b604082019050919050565b60006142fe600583614bba565b9150614309826153dd565b600582019050919050565b6000614321602083614ba9565b915061432c82615406565b602082019050919050565b6000614344601583614ba9565b915061434f8261542f565b602082019050919050565b6000614367602f83614ba9565b915061437282615458565b604082019050919050565b600061438a601a83614ba9565b9150614395826154a7565b602082019050919050565b60006143ad603283614ba9565b91506143b8826154d0565b604082019050919050565b60006143d0602283614ba9565b91506143db8261551f565b604082019050919050565b60006143f3602883614ba9565b91506143fe8261556e565b604082019050919050565b6000614416602283614ba9565b9150614421826155bd565b604082019050919050565b6000614439601883614ba9565b91506144448261560c565b602082019050919050565b600061445c603383614ba9565b915061446782615635565b604082019050919050565b600061447f601d83614ba9565b915061448a82615684565b602082019050919050565b60006144a2602183614ba9565b91506144ad826156ad565b604082019050919050565b60006144c5602c83614ba9565b91506144d0826156fc565b604082019050919050565b60006144e8602e83614ba9565b91506144f38261574b565b604082019050919050565b600061450b602f83614ba9565b91506145168261579a565b604082019050919050565b600061452e602d83614ba9565b9150614539826157e9565b604082019050919050565b6000614551602283614ba9565b915061455c82615838565b604082019050919050565b60408201600082015161457d6000850182614020565b50602082015161459060208501826145a5565b50505050565b61459f81614de4565b82525050565b6145ae81614dee565b82525050565b60006145c0828461403e565b60148201915081905092915050565b60006145db82856140d6565b91506145e782846140d6565b91508190509392505050565b60006145ff82846140d6565b915061460a826142f1565b915081905092915050565b600060208201905061462a600083018461402f565b92915050565b6000608082019050614645600083018761402f565b614652602083018661402f565b61465f6040830185614596565b81810360608301526146718184614064565b905095945050505050565b60006020820190506146916000830184614055565b92915050565b600060208201905081810360008301526146b1818461409d565b905092915050565b600060208201905081810360008301526146d281614107565b9050919050565b600060208201905081810360008301526146f28161412a565b9050919050565b600060208201905081810360008301526147128161414d565b9050919050565b6000602082019050818103600083015261473281614170565b9050919050565b6000602082019050818103600083015261475281614193565b9050919050565b60006020820190508181036000830152614772816141b6565b9050919050565b60006020820190508181036000830152614792816141d9565b9050919050565b600060208201905081810360008301526147b2816141fc565b9050919050565b600060208201905081810360008301526147d28161421f565b9050919050565b600060208201905081810360008301526147f281614242565b9050919050565b6000602082019050818103600083015261481281614265565b9050919050565b6000602082019050818103600083015261483281614288565b9050919050565b60006020820190508181036000830152614852816142ab565b9050919050565b60006020820190508181036000830152614872816142ce565b9050919050565b6000602082019050818103600083015261489281614314565b9050919050565b600060208201905081810360008301526148b281614337565b9050919050565b600060208201905081810360008301526148d28161435a565b9050919050565b600060208201905081810360008301526148f28161437d565b9050919050565b60006020820190508181036000830152614912816143a0565b9050919050565b60006020820190508181036000830152614932816143c3565b9050919050565b60006020820190508181036000830152614952816143e6565b9050919050565b6000602082019050818103600083015261497281614409565b9050919050565b600060208201905081810360008301526149928161442c565b9050919050565b600060208201905081810360008301526149b28161444f565b9050919050565b600060208201905081810360008301526149d281614472565b9050919050565b600060208201905081810360008301526149f281614495565b9050919050565b60006020820190508181036000830152614a12816144b8565b9050919050565b60006020820190508181036000830152614a32816144db565b9050919050565b60006020820190508181036000830152614a52816144fe565b9050919050565b60006020820190508181036000830152614a7281614521565b9050919050565b60006020820190508181036000830152614a9281614544565b9050919050565b6000604082019050614aae6000830184614567565b92915050565b6000602082019050614ac96000830184614596565b92915050565b6000614ad9614aea565b9050614ae58282614ea0565b919050565b6000604051905090565b600067ffffffffffffffff821115614b0f57614b0e614ffc565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614b3b57614b3a614ffc565b5b614b448261502b565b9050602081019050919050565b600067ffffffffffffffff821115614b6c57614b6b614ffc565b5b614b758261502b565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614bd082614da8565b9150614bdb83614da8565b9250826fffffffffffffffffffffffffffffffff03821115614c0057614bff614f6f565b5b828201905092915050565b6000614c1682614de4565b9150614c2183614de4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614c5657614c55614f6f565b5b828201905092915050565b6000614c6c82614de4565b9150614c7783614de4565b925082614c8757614c86614f9e565b5b828204905092915050565b6000614c9d82614de4565b9150614ca883614de4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ce157614ce0614f6f565b5b828202905092915050565b6000614cf782614da8565b9150614d0283614da8565b925082821015614d1557614d14614f6f565b5b828203905092915050565b6000614d2b82614de4565b9150614d3683614de4565b925082821015614d4957614d48614f6f565b5b828203905092915050565b6000614d5f82614dc4565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b83811015614e2f578082015181840152602081019050614e14565b83811115614e3e576000848401525b50505050565b6000614e4f82614de4565b91506000821415614e6357614e62614f6f565b5b600182039050919050565b60006002820490506001821680614e8657607f821691505b60208210811415614e9a57614e99614fcd565b5b50919050565b614ea98261502b565b810181811067ffffffffffffffff82111715614ec857614ec7614ffc565b5b80604052505050565b6000614edc82614de4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614f0f57614f0e614f6f565b5b600182019050919050565b6000614f2582614f2c565b9050919050565b6000614f378261503c565b9050919050565b6000614f4982614de4565b9150614f5483614de4565b925082614f6457614f63614f9e565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f43414e4e4f545f4d494e545f544841545f4d414e590000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f494e56414c49445f455448000000000000000000000000000000000000000000600082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f414444524553535f4e4f545f57484954454c4953544544000000000000000000600082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f5045525f57414c4c45545f4c494d49545f524541434845440000000000000000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d5553545f4d494e545f41544c454153545f4f4e450000000000000000000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f43414e4e4f545f4d494e545f544841545f4d414e595f4c494d49545f4558434560008201527f4544000000000000000000000000000000000000000000000000000000000000602082015250565b7f4e4f545f454e4f5547485f535550504c595f544f5f4d494e545f44455349524560008201527f445f414d4f554e54000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b7f53414c455f4841535f4e4f545f535441525445445f5945540000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f4e4f545f454e4f5547485f535550504c595f544f5f47495645415741595f444560008201527f53495245445f414d4f554e540000000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b61589081614d54565b811461589b57600080fd5b50565b6158a781614d66565b81146158b257600080fd5b50565b6158be81614d72565b81146158c957600080fd5b50565b6158d581614d7c565b81146158e057600080fd5b50565b6158ec81614de4565b81146158f757600080fd5b5056fea264697066735822122012e81de2a1ee0f0110eaddb3961a2d0067e70f746cc1975836bbfedcd23a8f2264736f6c6343000804003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000f44697665727369747920446f6c6c7a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000344445a0000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061027d5760003560e01c80638da5cb5b1161014f578063c87b56dd116100c1578063dc33e6811161007a578063dc33e68114610957578063e985e9c514610994578063f0325549146109d1578063f2c4ce1e146109e8578063f2fde38b14610a11578063ffeff56214610a3a5761027d565b8063c87b56dd14610833578063ca69e32314610870578063d082b87e1461089b578063d30d3e03146108d8578063d7224ba014610903578063dab5f3401461092e5761027d565b8063969a55ec11610113578063969a55ec1461076c578063a035b1fe14610783578063a22cb465146107ae578063a475b5dd146107d7578063b88d4fde146107ee578063ba41b0c6146108175761027d565b80638da5cb5b146106855780638e9c33e1146106b057806391b7f5ed146106db5780639231ab2a1461070457806395d89b41146107415761027d565b806334918dfd116101f35780635a7adf7f116101ac5780635a7adf7f146105735780636352211e1461059e578063639814e0146105db57806370a0823114610606578063715018a6146106435780638ca6070a1461065a5761027d565b806334918dfd1461048b5780633ccfd60b146104a257806342842e0e146104b95780634f6ccce7146104e2578063518302271461051f57806355f804b31461054a5761027d565b8063095ea7b311610245578063095ea7b31461037b57806318160ddd146103a457806323b872dd146103cf5780632f745c59146103f857806331ffd6f11461043557806333bc1c5c146104605761027d565b806301ffc9a714610282578063050225ea146102bf57806306fdde03146102e8578063081812fc14610313578063081c8c4414610350575b600080fd5b34801561028e57600080fd5b506102a960048036038101906102a49190613ecb565b610a77565b6040516102b6919061467c565b60405180910390f35b3480156102cb57600080fd5b506102e660048036038101906102e19190613e66565b610bc1565b005b3480156102f457600080fd5b506102fd610ca2565b60405161030a9190614697565b60405180910390f35b34801561031f57600080fd5b5061033a60048036038101906103359190613fa3565b610d34565b6040516103479190614615565b60405180910390f35b34801561035c57600080fd5b50610365610db9565b6040516103729190614697565b60405180910390f35b34801561038757600080fd5b506103a2600480360381019061039d9190613e66565b610e47565b005b3480156103b057600080fd5b506103b9610f60565b6040516103c69190614ab4565b60405180910390f35b3480156103db57600080fd5b506103f660048036038101906103f19190613d60565b610f6a565b005b34801561040457600080fd5b5061041f600480360381019061041a9190613e66565b610f7a565b60405161042c9190614ab4565b60405180910390f35b34801561044157600080fd5b5061044a611178565b604051610457919061467c565b60405180910390f35b34801561046c57600080fd5b5061047561118b565b604051610482919061467c565b60405180910390f35b34801561049757600080fd5b506104a061119e565b005b3480156104ae57600080fd5b506104b7611246565b005b3480156104c557600080fd5b506104e060048036038101906104db9190613d60565b61130b565b005b3480156104ee57600080fd5b5061050960048036038101906105049190613fa3565b61132b565b6040516105169190614ab4565b60405180910390f35b34801561052b57600080fd5b5061053461137e565b604051610541919061467c565b60405180910390f35b34801561055657600080fd5b50610571600480360381019061056c9190613f1d565b611391565b005b34801561057f57600080fd5b50610588611423565b604051610595919061467c565b60405180910390f35b3480156105aa57600080fd5b506105c560048036038101906105c09190613fa3565b611436565b6040516105d29190614615565b60405180910390f35b3480156105e757600080fd5b506105f061144c565b6040516105fd9190614ab4565b60405180910390f35b34801561061257600080fd5b5061062d60048036038101906106289190613cfb565b611452565b60405161063a9190614ab4565b60405180910390f35b34801561064f57600080fd5b5061065861153b565b005b34801561066657600080fd5b5061066f6115c3565b60405161067c9190614ab4565b60405180910390f35b34801561069157600080fd5b5061069a6115c9565b6040516106a79190614615565b60405180910390f35b3480156106bc57600080fd5b506106c56115f2565b6040516106d29190614ab4565b60405180910390f35b3480156106e757600080fd5b5061070260048036038101906106fd9190613fa3565b6115f8565b005b34801561071057600080fd5b5061072b60048036038101906107269190613fa3565b61167e565b6040516107389190614a99565b60405180910390f35b34801561074d57600080fd5b50610756611696565b6040516107639190614697565b60405180910390f35b34801561077857600080fd5b50610781611728565b005b34801561078f57600080fd5b506107986117d0565b6040516107a59190614ab4565b60405180910390f35b3480156107ba57600080fd5b506107d560048036038101906107d09190613e2a565b6117d6565b005b3480156107e357600080fd5b506107ec611957565b005b3480156107fa57600080fd5b5061081560048036038101906108109190613daf565b6119f0565b005b610831600480360381019061082c9190613fcc565b611a4c565b005b34801561083f57600080fd5b5061085a60048036038101906108559190613fa3565b611f2a565b6040516108679190614697565b60405180910390f35b34801561087c57600080fd5b50610885612077565b6040516108929190614ab4565b60405180910390f35b3480156108a757600080fd5b506108c260048036038101906108bd9190613cfb565b61207d565b6040516108cf9190614ab4565b60405180910390f35b3480156108e457600080fd5b506108ed612095565b6040516108fa9190614ab4565b60405180910390f35b34801561090f57600080fd5b5061091861209b565b6040516109259190614ab4565b60405180910390f35b34801561093a57600080fd5b5061095560048036038101906109509190613ea2565b6120a1565b005b34801561096357600080fd5b5061097e60048036038101906109799190613cfb565b612127565b60405161098b9190614ab4565b60405180910390f35b3480156109a057600080fd5b506109bb60048036038101906109b69190613d24565b612139565b6040516109c8919061467c565b60405180910390f35b3480156109dd57600080fd5b506109e66121cd565b005b3480156109f457600080fd5b50610a0f6004803603810190610a0a9190613f62565b612275565b005b348015610a1d57600080fd5b50610a386004803603810190610a339190613cfb565b61230b565b005b348015610a4657600080fd5b50610a616004803603810190610a5c9190613cfb565b612403565b604051610a6e9190614ab4565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b4257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610baa57507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610bba5750610bb98261241b565b5b9050919050565b610bc9612485565b73ffffffffffffffffffffffffffffffffffffffff16610be76115c9565b73ffffffffffffffffffffffffffffffffffffffff1614610c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3490614879565b60405180910390fd5b600f5481610c49610f60565b610c539190614c0b565b1115610c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8b906149f9565b60405180910390fd5b610c9e828261248d565b5050565b606060028054610cb190614e6e565b80601f0160208091040260200160405190810160405280929190818152602001828054610cdd90614e6e565b8015610d2a5780601f10610cff57610100808354040283529160200191610d2a565b820191906000526020600020905b815481529060010190602001808311610d0d57829003601f168201915b5050505050905090565b6000610d3f826124ab565b610d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7590614a59565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60128054610dc690614e6e565b80601f0160208091040260200160405190810160405280929190818152602001828054610df290614e6e565b8015610e3f5780601f10610e1457610100808354040283529160200191610e3f565b820191906000526020600020905b815481529060010190602001808311610e2257829003601f168201915b505050505081565b6000610e5282611436565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eba90614959565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ee2612485565b73ffffffffffffffffffffffffffffffffffffffff161480610f115750610f1081610f0b612485565b612139565b5b610f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4790614819565b60405180910390fd5b610f5b8383836124b9565b505050565b6000600154905090565b610f7583838361256b565b505050565b6000610f8583611452565b8210610fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbd906146b9565b60405180910390fd5b6000610fd0610f60565b905060008060005b83811015611136576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146110ca57806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111225786841415611113578195505050505050611172565b838061111e90614ed1565b9450505b50808061112e90614ed1565b915050610fd8565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116990614a19565b60405180910390fd5b92915050565b600a60019054906101000a900460ff1681565b600a60029054906101000a900460ff1681565b6111a6612485565b73ffffffffffffffffffffffffffffffffffffffff166111c46115c9565b73ffffffffffffffffffffffffffffffffffffffff161461121a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121190614879565b60405180910390fd5b600a60029054906101000a900460ff1615600a60026101000a81548160ff021916908315150217905550565b61124e612485565b73ffffffffffffffffffffffffffffffffffffffff1661126c6115c9565b73ffffffffffffffffffffffffffffffffffffffff16146112c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b990614879565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611308573d6000803e3d6000fd5b50565b611326838383604051806020016040528060008152506119f0565b505050565b6000611335610f60565b8210611376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136d90614779565b60405180910390fd5b819050919050565b600a60039054906101000a900460ff1681565b611399612485565b73ffffffffffffffffffffffffffffffffffffffff166113b76115c9565b73ffffffffffffffffffffffffffffffffffffffff161461140d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140490614879565b60405180910390fd5b81816011919061141e92919061396a565b505050565b600a60009054906101000a900460ff1681565b600061144182612b24565b600001519050919050565b600e5481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ba90614839565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b611543612485565b73ffffffffffffffffffffffffffffffffffffffff166115616115c9565b73ffffffffffffffffffffffffffffffffffffffff16146115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ae90614879565b60405180910390fd5b6115c16000612d27565b565b600b5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d5481565b611600612485565b73ffffffffffffffffffffffffffffffffffffffff1661161e6115c9565b73ffffffffffffffffffffffffffffffffffffffff1614611674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166b90614879565b60405180910390fd5b8060108190555050565b6116866139f0565b61168f82612b24565b9050919050565b6060600380546116a590614e6e565b80601f01602080910402602001604051908101604052809291908181526020018280546116d190614e6e565b801561171e5780601f106116f35761010080835404028352916020019161171e565b820191906000526020600020905b81548152906001019060200180831161170157829003601f168201915b5050505050905090565b611730612485565b73ffffffffffffffffffffffffffffffffffffffff1661174e6115c9565b73ffffffffffffffffffffffffffffffffffffffff16146117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b90614879565b60405180910390fd5b600a60019054906101000a900460ff1615600a60016101000a81548160ff021916908315150217905550565b60105481565b6117de612485565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561184c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611843906148d9565b60405180910390fd5b8060076000611859612485565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611906612485565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161194b919061467c565b60405180910390a35050565b61195f612485565b73ffffffffffffffffffffffffffffffffffffffff1661197d6115c9565b73ffffffffffffffffffffffffffffffffffffffff16146119d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ca90614879565b60405180910390fd5b6001600a60036101000a81548160ff021916908315150217905550565b6119fb84848461256b565b611a0784848484612deb565b611a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3d90614999565b60405180910390fd5b50505050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab1906147d9565b60405180910390fd5b600a60009054906101000a900460ff1680611ae15750600a60019054906101000a900460ff165b80611af85750600a60029054906101000a900460ff165b611b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2e90614979565b60405180910390fd5b60008211611b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7190614899565b60405180910390fd5b600e5482611b8733612127565b611b919190614c0b565b1115611bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc9906147f9565b60405180910390fd5b600a60009054906101000a900460ff1615611cd157600b5482601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c359190614c0b565b1115611c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6d90614919565b60405180910390fd5b81601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cc59190614c0b565b92505081905550611e75565b600a60019054906101000a900460ff1615611e1857611cef81612f82565b611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2590614759565b60405180910390fd5b600c5482601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d7c9190614c0b565b1115611dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db490614919565b60405180910390fd5b81601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e0c9190614c0b565b92505081905550611e74565b600a60029054906101000a900460ff1615611e7357600d54821115611e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e69906146d9565b60405180910390fd5b5b5b5b600f5482611e81610f60565b611e8b9190614c0b565b1115611ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec390614939565b60405180910390fd5b81601054611eda9190614c92565b341015611f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1390614719565b60405180910390fd5b611f26338361248d565b5050565b6060611f35826124ab565b611f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6b906148b9565b60405180910390fd5b60001515600a60039054906101000a900460ff16151514156120225760128054611f9d90614e6e565b80601f0160208091040260200160405190810160405280929190818152602001828054611fc990614e6e565b80156120165780601f10611feb57610100808354040283529160200191612016565b820191906000526020600020905b815481529060010190602001808311611ff957829003601f168201915b50505050509050612072565b600061202d83612fc3565b9050600081511161204d576040518060200160405280600081525061206e565b8060405160200161205e91906145f3565b6040516020818303038152906040525b9150505b919050565b600f5481565b60146020528060005260406000206000915090505481565b600c5481565b60085481565b6120a9612485565b73ffffffffffffffffffffffffffffffffffffffff166120c76115c9565b73ffffffffffffffffffffffffffffffffffffffff161461211d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211490614879565b60405180910390fd5b8060158190555050565b60006121328261306a565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6121d5612485565b73ffffffffffffffffffffffffffffffffffffffff166121f36115c9565b73ffffffffffffffffffffffffffffffffffffffff1614612249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224090614879565b60405180910390fd5b600a60009054906101000a900460ff1615600a60006101000a81548160ff021916908315150217905550565b61227d612485565b73ffffffffffffffffffffffffffffffffffffffff1661229b6115c9565b73ffffffffffffffffffffffffffffffffffffffff16146122f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e890614879565b60405180910390fd5b8060129080519060200190612307929190613a2a565b5050565b612313612485565b73ffffffffffffffffffffffffffffffffffffffff166123316115c9565b73ffffffffffffffffffffffffffffffffffffffff1614612387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237e90614879565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156123f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ee906146f9565b60405180910390fd5b61240081612d27565b50565b60136020528060005260406000206000915090505481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b6124a7828260405180602001604052806000815250613153565b5050565b600060015482109050919050565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061257682612b24565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1661259d612485565b73ffffffffffffffffffffffffffffffffffffffff1614806125f957506125c2612485565b73ffffffffffffffffffffffffffffffffffffffff166125e184610d34565b73ffffffffffffffffffffffffffffffffffffffff16145b806126155750612614826000015161260f612485565b612139565b5b905080612657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264e906148f9565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146126c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c090614859565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273090614799565b60405180910390fd5b6127468585856001613633565b61275660008484600001516124b9565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166127c49190614cec565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166128689190614bc5565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600060018461296e9190614c0b565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612ab4576129e4816124ab565b15612ab3576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612b1c8686866001613639565b505050505050565b612b2c6139f0565b612b35826124ab565b612b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6b90614739565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000648310612bd85760017f000000000000000000000000000000000000000000000000000000000000006484612bcb9190614d20565b612bd59190614c0b565b90505b60008390505b818110612ce6576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612cd257809350505050612d22565b508080612cde90614e44565b915050612bde565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1990614a39565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612e0c8473ffffffffffffffffffffffffffffffffffffffff1661363f565b15612f75578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612e35612485565b8786866040518563ffffffff1660e01b8152600401612e579493929190614630565b602060405180830381600087803b158015612e7157600080fd5b505af1925050508015612ea257506040513d601f19601f82011682018060405250810190612e9f9190613ef4565b60015b612f25573d8060008114612ed2576040519150601f19603f3d011682016040523d82523d6000602084013e612ed7565b606091505b50600081511415612f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1490614999565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612f7a565b600190505b949350505050565b60008033604051602001612f9691906145b4565b604051602081830303815290604052805190602001209050612fbb8360155483613662565b915050919050565b6060612fce826124ab565b61300d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613004906148b9565b60405180910390fd5b6000613017613679565b905060008151116130375760405180602001604052806000815250613062565b806130418461370b565b6040516020016130529291906145cf565b6040516020818303038152906040525b915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d2906147b9565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156131ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c1906149d9565b60405180910390fd5b6131d3816124ab565b15613213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320a906149b9565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000064831115613276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326d90614a79565b60405180910390fd5b6132836000858386613633565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050905060405180604001604052808583600001516133809190614bc5565b6fffffffffffffffffffffffffffffffff1681526020018583602001516133a79190614bc5565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b8581101561361657818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46135b66000888488612deb565b6135f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135ec90614999565b60405180910390fd5b818061360090614ed1565b925050808061360e90614ed1565b915050613545565b508060018190555061362b6000878588613639565b505050505050565b50505050565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008261366f85846138b8565b1490509392505050565b60606011805461368890614e6e565b80601f01602080910402602001604051908101604052809291908181526020018280546136b490614e6e565b80156137015780601f106136d657610100808354040283529160200191613701565b820191906000526020600020905b8154815290600101906020018083116136e457829003601f168201915b5050505050905090565b60606000821415613753576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506138b3565b600082905060005b6000821461378557808061376e90614ed1565b915050600a8261377e9190614c61565b915061375b565b60008167ffffffffffffffff8111156137c7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156137f95781602001600182028036833780820191505090505b5090505b600085146138ac576001826138129190614d20565b9150600a856138219190614f3e565b603061382d9190614c0b565b60f81b818381518110613869577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856138a59190614c61565b94506137fd565b8093505050505b919050565b60008082905060005b8451811015613948576000858281518110613905577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050808311613927576139208382613953565b9250613934565b6139318184613953565b92505b50808061394090614ed1565b9150506138c1565b508091505092915050565b600082600052816020526040600020905092915050565b82805461397690614e6e565b90600052602060002090601f01602090048101928261399857600085556139df565b82601f106139b157803560ff19168380011785556139df565b828001600101855582156139df579182015b828111156139de5782358255916020019190600101906139c3565b5b5090506139ec9190613ab0565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b828054613a3690614e6e565b90600052602060002090601f016020900481019282613a585760008555613a9f565b82601f10613a7157805160ff1916838001178555613a9f565b82800160010185558215613a9f579182015b82811115613a9e578251825591602001919060010190613a83565b5b509050613aac9190613ab0565b5090565b5b80821115613ac9576000816000905550600101613ab1565b5090565b6000613ae0613adb84614af4565b614acf565b90508083825260208201905082856020860282011115613aff57600080fd5b60005b85811015613b2f5781613b158882613c09565b845260208401935060208301925050600181019050613b02565b5050509392505050565b6000613b4c613b4784614b20565b614acf565b905082815260208101848484011115613b6457600080fd5b613b6f848285614e02565b509392505050565b6000613b8a613b8584614b51565b614acf565b905082815260208101848484011115613ba257600080fd5b613bad848285614e02565b509392505050565b600081359050613bc481615887565b92915050565b600082601f830112613bdb57600080fd5b8135613beb848260208601613acd565b91505092915050565b600081359050613c038161589e565b92915050565b600081359050613c18816158b5565b92915050565b600081359050613c2d816158cc565b92915050565b600081519050613c42816158cc565b92915050565b600082601f830112613c5957600080fd5b8135613c69848260208601613b39565b91505092915050565b60008083601f840112613c8457600080fd5b8235905067ffffffffffffffff811115613c9d57600080fd5b602083019150836001820283011115613cb557600080fd5b9250929050565b600082601f830112613ccd57600080fd5b8135613cdd848260208601613b77565b91505092915050565b600081359050613cf5816158e3565b92915050565b600060208284031215613d0d57600080fd5b6000613d1b84828501613bb5565b91505092915050565b60008060408385031215613d3757600080fd5b6000613d4585828601613bb5565b9250506020613d5685828601613bb5565b9150509250929050565b600080600060608486031215613d7557600080fd5b6000613d8386828701613bb5565b9350506020613d9486828701613bb5565b9250506040613da586828701613ce6565b9150509250925092565b60008060008060808587031215613dc557600080fd5b6000613dd387828801613bb5565b9450506020613de487828801613bb5565b9350506040613df587828801613ce6565b925050606085013567ffffffffffffffff811115613e1257600080fd5b613e1e87828801613c48565b91505092959194509250565b60008060408385031215613e3d57600080fd5b6000613e4b85828601613bb5565b9250506020613e5c85828601613bf4565b9150509250929050565b60008060408385031215613e7957600080fd5b6000613e8785828601613bb5565b9250506020613e9885828601613ce6565b9150509250929050565b600060208284031215613eb457600080fd5b6000613ec284828501613c09565b91505092915050565b600060208284031215613edd57600080fd5b6000613eeb84828501613c1e565b91505092915050565b600060208284031215613f0657600080fd5b6000613f1484828501613c33565b91505092915050565b60008060208385031215613f3057600080fd5b600083013567ffffffffffffffff811115613f4a57600080fd5b613f5685828601613c72565b92509250509250929050565b600060208284031215613f7457600080fd5b600082013567ffffffffffffffff811115613f8e57600080fd5b613f9a84828501613cbc565b91505092915050565b600060208284031215613fb557600080fd5b6000613fc384828501613ce6565b91505092915050565b60008060408385031215613fdf57600080fd5b6000613fed85828601613ce6565b925050602083013567ffffffffffffffff81111561400a57600080fd5b61401685828601613bca565b9150509250929050565b61402981614d54565b82525050565b61403881614d54565b82525050565b61404f61404a82614d54565b614f1a565b82525050565b61405e81614d66565b82525050565b600061406f82614b82565b6140798185614b98565b9350614089818560208601614e11565b6140928161502b565b840191505092915050565b60006140a882614b8d565b6140b28185614ba9565b93506140c2818560208601614e11565b6140cb8161502b565b840191505092915050565b60006140e182614b8d565b6140eb8185614bba565b93506140fb818560208601614e11565b80840191505092915050565b6000614114602283614ba9565b915061411f82615049565b604082019050919050565b6000614137601583614ba9565b915061414282615098565b602082019050919050565b600061415a602683614ba9565b9150614165826150c1565b604082019050919050565b600061417d600b83614ba9565b915061418882615110565b602082019050919050565b60006141a0602a83614ba9565b91506141ab82615139565b604082019050919050565b60006141c3601783614ba9565b91506141ce82615188565b602082019050919050565b60006141e6602383614ba9565b91506141f1826151b1565b604082019050919050565b6000614209602583614ba9565b915061421482615200565b604082019050919050565b600061422c603183614ba9565b91506142378261524f565b604082019050919050565b600061424f601e83614ba9565b915061425a8261529e565b602082019050919050565b6000614272601883614ba9565b915061427d826152c7565b602082019050919050565b6000614295603983614ba9565b91506142a0826152f0565b604082019050919050565b60006142b8602b83614ba9565b91506142c38261533f565b604082019050919050565b60006142db602683614ba9565b91506142e68261538e565b604082019050919050565b60006142fe600583614bba565b9150614309826153dd565b600582019050919050565b6000614321602083614ba9565b915061432c82615406565b602082019050919050565b6000614344601583614ba9565b915061434f8261542f565b602082019050919050565b6000614367602f83614ba9565b915061437282615458565b604082019050919050565b600061438a601a83614ba9565b9150614395826154a7565b602082019050919050565b60006143ad603283614ba9565b91506143b8826154d0565b604082019050919050565b60006143d0602283614ba9565b91506143db8261551f565b604082019050919050565b60006143f3602883614ba9565b91506143fe8261556e565b604082019050919050565b6000614416602283614ba9565b9150614421826155bd565b604082019050919050565b6000614439601883614ba9565b91506144448261560c565b602082019050919050565b600061445c603383614ba9565b915061446782615635565b604082019050919050565b600061447f601d83614ba9565b915061448a82615684565b602082019050919050565b60006144a2602183614ba9565b91506144ad826156ad565b604082019050919050565b60006144c5602c83614ba9565b91506144d0826156fc565b604082019050919050565b60006144e8602e83614ba9565b91506144f38261574b565b604082019050919050565b600061450b602f83614ba9565b91506145168261579a565b604082019050919050565b600061452e602d83614ba9565b9150614539826157e9565b604082019050919050565b6000614551602283614ba9565b915061455c82615838565b604082019050919050565b60408201600082015161457d6000850182614020565b50602082015161459060208501826145a5565b50505050565b61459f81614de4565b82525050565b6145ae81614dee565b82525050565b60006145c0828461403e565b60148201915081905092915050565b60006145db82856140d6565b91506145e782846140d6565b91508190509392505050565b60006145ff82846140d6565b915061460a826142f1565b915081905092915050565b600060208201905061462a600083018461402f565b92915050565b6000608082019050614645600083018761402f565b614652602083018661402f565b61465f6040830185614596565b81810360608301526146718184614064565b905095945050505050565b60006020820190506146916000830184614055565b92915050565b600060208201905081810360008301526146b1818461409d565b905092915050565b600060208201905081810360008301526146d281614107565b9050919050565b600060208201905081810360008301526146f28161412a565b9050919050565b600060208201905081810360008301526147128161414d565b9050919050565b6000602082019050818103600083015261473281614170565b9050919050565b6000602082019050818103600083015261475281614193565b9050919050565b60006020820190508181036000830152614772816141b6565b9050919050565b60006020820190508181036000830152614792816141d9565b9050919050565b600060208201905081810360008301526147b2816141fc565b9050919050565b600060208201905081810360008301526147d28161421f565b9050919050565b600060208201905081810360008301526147f281614242565b9050919050565b6000602082019050818103600083015261481281614265565b9050919050565b6000602082019050818103600083015261483281614288565b9050919050565b60006020820190508181036000830152614852816142ab565b9050919050565b60006020820190508181036000830152614872816142ce565b9050919050565b6000602082019050818103600083015261489281614314565b9050919050565b600060208201905081810360008301526148b281614337565b9050919050565b600060208201905081810360008301526148d28161435a565b9050919050565b600060208201905081810360008301526148f28161437d565b9050919050565b60006020820190508181036000830152614912816143a0565b9050919050565b60006020820190508181036000830152614932816143c3565b9050919050565b60006020820190508181036000830152614952816143e6565b9050919050565b6000602082019050818103600083015261497281614409565b9050919050565b600060208201905081810360008301526149928161442c565b9050919050565b600060208201905081810360008301526149b28161444f565b9050919050565b600060208201905081810360008301526149d281614472565b9050919050565b600060208201905081810360008301526149f281614495565b9050919050565b60006020820190508181036000830152614a12816144b8565b9050919050565b60006020820190508181036000830152614a32816144db565b9050919050565b60006020820190508181036000830152614a52816144fe565b9050919050565b60006020820190508181036000830152614a7281614521565b9050919050565b60006020820190508181036000830152614a9281614544565b9050919050565b6000604082019050614aae6000830184614567565b92915050565b6000602082019050614ac96000830184614596565b92915050565b6000614ad9614aea565b9050614ae58282614ea0565b919050565b6000604051905090565b600067ffffffffffffffff821115614b0f57614b0e614ffc565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614b3b57614b3a614ffc565b5b614b448261502b565b9050602081019050919050565b600067ffffffffffffffff821115614b6c57614b6b614ffc565b5b614b758261502b565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614bd082614da8565b9150614bdb83614da8565b9250826fffffffffffffffffffffffffffffffff03821115614c0057614bff614f6f565b5b828201905092915050565b6000614c1682614de4565b9150614c2183614de4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614c5657614c55614f6f565b5b828201905092915050565b6000614c6c82614de4565b9150614c7783614de4565b925082614c8757614c86614f9e565b5b828204905092915050565b6000614c9d82614de4565b9150614ca883614de4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ce157614ce0614f6f565b5b828202905092915050565b6000614cf782614da8565b9150614d0283614da8565b925082821015614d1557614d14614f6f565b5b828203905092915050565b6000614d2b82614de4565b9150614d3683614de4565b925082821015614d4957614d48614f6f565b5b828203905092915050565b6000614d5f82614dc4565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b83811015614e2f578082015181840152602081019050614e14565b83811115614e3e576000848401525b50505050565b6000614e4f82614de4565b91506000821415614e6357614e62614f6f565b5b600182039050919050565b60006002820490506001821680614e8657607f821691505b60208210811415614e9a57614e99614fcd565b5b50919050565b614ea98261502b565b810181811067ffffffffffffffff82111715614ec857614ec7614ffc565b5b80604052505050565b6000614edc82614de4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614f0f57614f0e614f6f565b5b600182019050919050565b6000614f2582614f2c565b9050919050565b6000614f378261503c565b9050919050565b6000614f4982614de4565b9150614f5483614de4565b925082614f6457614f63614f9e565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f43414e4e4f545f4d494e545f544841545f4d414e590000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f494e56414c49445f455448000000000000000000000000000000000000000000600082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f414444524553535f4e4f545f57484954454c4953544544000000000000000000600082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f5045525f57414c4c45545f4c494d49545f524541434845440000000000000000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d5553545f4d494e545f41544c454153545f4f4e450000000000000000000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f43414e4e4f545f4d494e545f544841545f4d414e595f4c494d49545f4558434560008201527f4544000000000000000000000000000000000000000000000000000000000000602082015250565b7f4e4f545f454e4f5547485f535550504c595f544f5f4d494e545f44455349524560008201527f445f414d4f554e54000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b7f53414c455f4841535f4e4f545f535441525445445f5945540000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f4e4f545f454e4f5547485f535550504c595f544f5f47495645415741595f444560008201527f53495245445f414d4f554e540000000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b61589081614d54565b811461589b57600080fd5b50565b6158a781614d66565b81146158b257600080fd5b50565b6158be81614d72565b81146158c957600080fd5b50565b6158d581614d7c565b81146158e057600080fd5b50565b6158ec81614de4565b81146158f757600080fd5b5056fea264697066735822122012e81de2a1ee0f0110eaddb3961a2d0067e70f746cc1975836bbfedcd23a8f2264736f6c63430008040033

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

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000f44697665727369747920446f6c6c7a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000344445a0000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _NAME (string): Diversity Dollz
Arg [1] : _SYMBOL (string): DDZ

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [3] : 44697665727369747920446f6c6c7a0000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [5] : 44445a0000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

24330:4474:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14306:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27312:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16092:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17301:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24852:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16882:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13096:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18136:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13436:864;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24434:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24474:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28067:87;;;;;;;;;;;;;:::i;:::-;;28692:109;;;;;;;;;;;;;:::i;:::-;;18304:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13202:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24511:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28363:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24400:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15962:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24705:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14734:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7224:94;;;;;;;;;;;;;:::i;:::-;;24548:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7005:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24651:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27873:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25407:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16198:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28254:101;;;;;;;;;;;;;:::i;:::-;;24784:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17599:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28613:71;;;;;;;;;;;;;:::i;:::-;;18487:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26149:1155;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25582:559;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24746:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24947:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24599:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22108:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27977:82;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25286:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17916:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28162:84;;;;;;;;;;;;;:::i;:::-;;28477:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7324:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24889:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14306:422;14453:4;14510:25;14495:40;;;:11;:40;;;;:105;;;;14567:33;14552:48;;;:11;:48;;;;14495:105;:172;;;;14632:35;14617:50;;;:11;:50;;;;14495:172;:225;;;;14684:36;14708:11;14684:23;:36::i;:::-;14495:225;14475:245;;14306:422;;;:::o;27312:224::-;7149:12;:10;:12::i;:::-;7138:23;;:7;:5;:7::i;:::-;:23;;;7130:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27431:8:::1;;27419;27403:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:36;;27395:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;27499:29;27509:8;27519;27499:9;:29::i;:::-;27312:224:::0;;:::o;16092:100::-;16146:13;16179:5;16172:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16092:100;:::o;17301:292::-;17405:7;17452:16;17460:7;17452;:16::i;:::-;17430:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;17561:15;:24;17577:7;17561:24;;;;;;;;;;;;;;;;;;;;;17554:31;;17301:292;;;:::o;24852:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16882:413::-;16955:13;16971:24;16987:7;16971:15;:24::i;:::-;16955:40;;17020:5;17014:11;;:2;:11;;;;17006:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;17115:5;17099:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;17124:37;17141:5;17148:12;:10;:12::i;:::-;17124:16;:37::i;:::-;17099:62;17077:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;17259:28;17268:2;17272:7;17281:5;17259:8;:28::i;:::-;16882:413;;;:::o;13096:100::-;13149:7;13176:12;;13169:19;;13096:100;:::o;18136:162::-;18262:28;18272:4;18278:2;18282:7;18262:9;:28::i;:::-;18136:162;;;:::o;13436:864::-;13561:7;13602:16;13612:5;13602:9;:16::i;:::-;13594:5;:24;13586:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13668:22;13693:13;:11;:13::i;:::-;13668:38;;13717:19;13751:25;13805:9;13800:426;13824:14;13820:1;:18;13800:426;;;13860:31;13894:11;:14;13906:1;13894:14;;;;;;;;;;;13860:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13953:1;13927:28;;:9;:14;;;:28;;;13923:103;;13996:9;:14;;;13976:34;;13923:103;14065:5;14044:26;;:17;:26;;;14040:175;;;14110:5;14095:11;:20;14091:77;;;14147:1;14140:8;;;;;;;;;14091:77;14186:13;;;;;:::i;:::-;;;;14040:175;13800:426;13840:3;;;;;:::i;:::-;;;;13800:426;;;;14236:56;;;;;;;;;;:::i;:::-;;;;;;;;13436:864;;;;;:::o;24434:33::-;;;;;;;;;;;;;:::o;24474:30::-;;;;;;;;;;;;;:::o;28067:87::-;7149:12;:10;:12::i;:::-;7138:23;;:7;:5;:7::i;:::-;:23;;;7130:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28136:10:::1;;;;;;;;;;;28135:11;28122:10;;:24;;;;;;;;;;;;;;;;;;28067:87::o:0;28692:109::-;7149:12;:10;:12::i;:::-;7138:23;;:7;:5;:7::i;:::-;:23;;;7130:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28750:10:::1;28742:28;;:51;28771:21;28742:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;28692:109::o:0;18304:177::-;18434:39;18451:4;18457:2;18461:7;18434:39;;;;;;;;;;;;:16;:39::i;:::-;18304:177;;;:::o;13202:228::-;13305:7;13346:13;:11;:13::i;:::-;13338:5;:21;13330:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;13417:5;13410:12;;13202:228;;;:::o;24511:28::-;;;;;;;;;;;;;:::o;28363:106::-;7149:12;:10;:12::i;:::-;7138:23;;:7;:5;:7::i;:::-;:23;;;7130:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28454:7:::1;;28438:13;:23;;;;;;;:::i;:::-;;28363:106:::0;;:::o;24400:27::-;;;;;;;;;;;;;:::o;15962:124::-;16026:7;16053:20;16065:7;16053:11;:20::i;:::-;:25;;;16046:32;;15962:124;;;:::o;24705:34::-;;;;:::o;14734:258::-;14798:7;14857:1;14840:19;;:5;:19;;;;14818:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;14956:12;:19;14969:5;14956:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;14948:36;;14941:43;;14734:258;;;:::o;7224:94::-;7149:12;:10;:12::i;:::-;7138:23;;:7;:5;:7::i;:::-;:23;;;7130:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7289:21:::1;7307:1;7289:9;:21::i;:::-;7224:94::o:0;24548:44::-;;;;:::o;7005:87::-;7051:7;7078:6;;;;;;;;;;;7071:13;;7005:87;:::o;24651:47::-;;;;:::o;27873:96::-;7149:12;:10;:12::i;:::-;7138:23;;:7;:5;:7::i;:::-;:23;;;7130:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27950:11:::1;27942:5;:19;;;;27873:96:::0;:::o;25407:167::-;25500:21;;:::i;:::-;25546:20;25558:7;25546:11;:20::i;:::-;25539:27;;25407:167;;;:::o;16198:104::-;16254:13;16287:7;16280:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16198:104;:::o;28254:101::-;7149:12;:10;:12::i;:::-;7138:23;;:7;:5;:7::i;:::-;:23;;;7130:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28334:13:::1;;;;;;;;;;;28333:14;28317:13;;:30;;;;;;;;;;;;;;;;;;28254:101::o:0;24784:24::-;;;;:::o;17599:311::-;17729:12;:10;:12::i;:::-;17717:24;;:8;:24;;;;17709:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;17830:8;17785:18;:32;17804:12;:10;:12::i;:::-;17785:32;;;;;;;;;;;;;;;:42;17818:8;17785:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;17883:8;17854:48;;17869:12;:10;:12::i;:::-;17854:48;;;17893:8;17854:48;;;;;;:::i;:::-;;;;;;;;17599:311;;:::o;28613:71::-;7149:12;:10;:12::i;:::-;7138:23;;:7;:5;:7::i;:::-;:23;;;7130:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28672:4:::1;28661:8;;:15;;;;;;;;;;;;;;;;;;28613:71::o:0;18487:355::-;18646:28;18656:4;18662:2;18666:7;18646:9;:28::i;:::-;18707:48;18730:4;18736:2;18740:7;18749:5;18707:22;:48::i;:::-;18685:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;18487:355;;;;:::o;26149:1155::-;25213:10;25200:23;;:9;:23;;;25192:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;26254:7:::1;;;;;;;;;;;:24;;;;26265:13;;;;;;;;;;;26254:24;:38;;;;26282:10;;;;;;;;;;;26254:38;26246:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;26351:1;26340:8;:12;26332:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;26436:13;;26424:8;26397:24;26410:10;26397:12;:24::i;:::-;:35;;;;:::i;:::-;:52;;26389:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;26492:7;;;;;;;;;;;26489:602;;;26565:24;;26553:8;26523:15;:27;26539:10;26523:27;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;:66;;26515:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;26672:8;26643:15;:27;26659:10;26643:27;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;26489:602;;;26700:13;;;;;;;;;;;26697:394;;;26737:13;26744:5;26737:6;:13::i;:::-;26729:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;26843:26;;26831:8;26801:15;:27;26817:10;26801:27;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;:68;;26793:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;26952:8;26923:15;:27;26939:10;26923:27;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;26697:394;;;26980:10;;;;;;;;;;;26977:114;;;27026:27;;27014:8;:39;;27006:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26977:114;26697:394;26489:602;27137:8;;27125;27109:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:36;;27101:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;27230:8;27222:5;;:16;;;;:::i;:::-;27209:9;:29;;27201:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;27265:31;27275:10;27287:8;27265:9;:31::i;:::-;26149:1155:::0;;:::o;25582:559::-;25700:13;25753:16;25761:7;25753;:16::i;:::-;25731:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;25873:5;25861:17;;:8;;;;;;;;;;;:17;;;25857:71;;;25902:14;25895:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25857:71;25940:23;25966;25981:7;25966:14;:23::i;:::-;25940:49;;26046:1;26026:9;26020:23;:27;:113;;;;;;;;;;;;;;;;;26091:9;26074:36;;;;;;;;:::i;:::-;;;;;;;;;;;;;26020:113;26000:133;;;25582:559;;;;:::o;24746:31::-;;;;:::o;24947:51::-;;;;;;;;;;;;;;;;;:::o;24599:45::-;;;;:::o;22108:43::-;;;;:::o;27977:82::-;7149:12;:10;:12::i;:::-;7138:23;;:7;:5;:7::i;:::-;:23;;;7130:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28046:5:::1;28039:4;:12;;;;27977:82:::0;:::o;25286:113::-;25344:7;25371:20;25385:5;25371:13;:20::i;:::-;25364:27;;25286:113;;;:::o;17916:214::-;18058:4;18087:18;:25;18106:5;18087:25;;;;;;;;;;;;;;;:35;18113:8;18087:35;;;;;;;;;;;;;;;;;;;;;;;;;18080:42;;17916:214;;;;:::o;28162:84::-;7149:12;:10;:12::i;:::-;7138:23;;:7;:5;:7::i;:::-;:23;;;7130:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28231:7:::1;;;;;;;;;;;28230:8;28220:7;;:18;;;;;;;;;;;;;;;;;;28162:84::o:0;28477:128::-;7149:12;:10;:12::i;:::-;7138:23;;:7;:5;:7::i;:::-;:23;;;7130:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28582:15:::1;28565:14;:32;;;;;;;;;;;;:::i;:::-;;28477:128:::0;:::o;7324:229::-;7149:12;:10;:12::i;:::-;7138:23;;:7;:5;:7::i;:::-;:23;;;7130:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7447:1:::1;7427:22;;:8;:22;;;;7405:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;7526:19;7536:8;7526:9;:19::i;:::-;7324:229:::0;:::o;24889:51::-;;;;;;;;;;;;;;;;;:::o;9537:207::-;9667:4;9711:25;9696:40;;;:11;:40;;;;9689:47;;9537:207;;;:::o;6512:98::-;6565:7;6592:10;6585:17;;6512:98;:::o;18967:104::-;19036:27;19046:2;19050:8;19036:27;;;;;;;;;;;;:9;:27::i;:::-;18967:104;;:::o;18848:111::-;18905:4;18939:12;;18929:7;:22;18922:29;;18848:111;;;:::o;21904:196::-;22046:2;22019:15;:24;22035:7;22019:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;22084:7;22080:2;22064:28;;22073:5;22064:28;;;;;;;;;;;;21904:196;;;:::o;20358:1540::-;20473:35;20511:20;20523:7;20511:11;:20::i;:::-;20473:58;;20544:22;20586:13;:18;;;20570:34;;:12;:10;:12::i;:::-;:34;;;:87;;;;20645:12;:10;:12::i;:::-;20621:36;;:20;20633:7;20621:11;:20::i;:::-;:36;;;20570:87;:154;;;;20674:50;20691:13;:18;;;20711:12;:10;:12::i;:::-;20674:16;:50::i;:::-;20570:154;20544:181;;20760:17;20738:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;20912:4;20890:26;;:13;:18;;;:26;;;20868:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;21015:1;21001:16;;:2;:16;;;;20993:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;21072:43;21094:4;21100:2;21104:7;21113:1;21072:21;:43::i;:::-;21126:49;21143:1;21147:7;21156:13;:18;;;21126:8;:49::i;:::-;21218:1;21188:12;:18;21201:4;21188:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21258:1;21230:12;:16;21243:2;21230:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21293:43;;;;;;;;21308:2;21293:43;;;;;;21319:15;21293:43;;;;;21270:11;:20;21282:7;21270:20;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21461:19;21493:1;21483:7;:11;;;;:::i;:::-;21461:33;;21550:1;21509:43;;:11;:24;21521:11;21509:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;21505:288;;;21573:20;21581:11;21573:7;:20::i;:::-;21569:213;;;21641:125;;;;;;;;21678:13;:18;;;21641:125;;;;;;21719:13;:28;;;21641:125;;;;;21614:11;:24;21626:11;21614:24;;;;;;;;;;;:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21569:213;21505:288;21829:7;21825:2;21810:27;;21819:4;21810:27;;;;;;;;;;;;21848:42;21869:4;21875:2;21879:7;21888:1;21848:20;:42::i;:::-;20358:1540;;;;;;:::o;15274:682::-;15362:21;;:::i;:::-;15409:16;15417:7;15409;:16::i;:::-;15401:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15485:26;15537:12;15526:7;:23;15522:103;;15612:1;15597:12;15587:7;:22;;;;:::i;:::-;:26;;;;:::i;:::-;15566:47;;15522:103;15642:12;15657:7;15642:22;;15637:242;15674:18;15666:4;:26;15637:242;;15717:31;15751:11;:17;15763:4;15751:17;;;;;;;;;;;15717:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15813:1;15787:28;;:9;:14;;;:28;;;15783:85;;15843:9;15836:16;;;;;;;15783:85;15637:242;15694:6;;;;;:::i;:::-;;;;15637:242;;;;15891:57;;;;;;;;;;:::i;:::-;;;;;;;;15274:682;;;;:::o;7561:173::-;7617:16;7636:6;;;;;;;;;;;7617:25;;7662:8;7653:6;;:17;;;;;;;;;;;;;;;;;;7717:8;7686:40;;7707:8;7686:40;;;;;;;;;;;;7561:173;;:::o;23009:985::-;23164:4;23185:15;:2;:13;;;:15::i;:::-;23181:806;;;23254:2;23238:36;;;23297:12;:10;:12::i;:::-;23332:4;23359:7;23389:5;23238:175;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;23217:715;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23617:1;23600:6;:13;:18;23596:321;;;23643:109;;;;;;;;;;:::i;:::-;;;;;;;;23596:321;23867:6;23861:13;23852:6;23848:2;23844:15;23837:38;23217:715;23487:45;;;23477:55;;;:6;:55;;;;23470:62;;;;;23181:806;23971:4;23964:11;;23009:985;;;;;;;:::o;27546:197::-;27609:4;27626:12;27668:10;27651:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;27641:39;;;;;;27626:54;;27698:37;27717:5;27724:4;;27730;27698:18;:37::i;:::-;27691:44;;;27546:197;;;:::o;16308:468::-;16426:13;16479:16;16487:7;16479;:16::i;:::-;16457:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;16583:21;16607:10;:8;:10::i;:::-;16583:34;;16672:1;16654:7;16648:21;:25;:120;;;;;;;;;;;;;;;;;16717:7;16726:18;:7;:16;:18::i;:::-;16700:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16648:120;16628:140;;;16308:468;;;:::o;15000:266::-;15061:7;15120:1;15103:19;;:5;:19;;;;15081:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;15225:12;:19;15238:5;15225:19;;;;;;;;;;;;;;;:32;;;;;;;;;;;;15217:41;;15210:48;;15000:266;;;:::o;19077:1275::-;19200:20;19223:12;;19200:35;;19268:1;19254:16;;:2;:16;;;;19246:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;19328:21;19336:12;19328:7;:21::i;:::-;19327:22;19319:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19414:12;19402:8;:24;;19394:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;19478:61;19508:1;19512:2;19516:12;19530:8;19478:21;:61::i;:::-;19552:30;19585:12;:16;19598:2;19585:16;;;;;;;;;;;;;;;19552:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19631:135;;;;;;;;19687:8;19657:11;:19;;;:39;;;;:::i;:::-;19631:135;;;;;;19746:8;19711:11;:24;;;:44;;;;:::i;:::-;19631:135;;;;;19612:12;:16;19625:2;19612:16;;;;;;;;;;;;;;;:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19805:43;;;;;;;;19820:2;19805:43;;;;;;19831:15;19805:43;;;;;19777:11;:25;19789:12;19777:25;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19861:20;19884:12;19861:35;;19914:9;19909:325;19933:8;19929:1;:12;19909:325;;;19993:12;19989:2;19968:38;;19985:1;19968:38;;;;;;;;;;;;20047:59;20078:1;20082:2;20086:12;20100:5;20047:22;:59::i;:::-;20021:172;;;;;;;;;;;;:::i;:::-;;;;;;;;;20208:14;;;;;:::i;:::-;;;;19943:3;;;;;:::i;:::-;;;;19909:325;;;;20261:12;20246;:27;;;;20284:60;20313:1;20317:2;20321:12;20335:8;20284:20;:60::i;:::-;19077:1275;;;;;;:::o;24000:159::-;;;;;:::o;24165:158::-;;;;;:::o;2518:117::-;2578:4;2626:1;2604:7;:19;;;:23;2597:30;;2518:117;;;:::o;10622:190::-;10747:4;10800;10771:25;10784:5;10791:4;10771:12;:25::i;:::-;:33;10764:40;;10622:190;;;;;:::o;27751:114::-;27811:13;27844;27837:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27751:114;:::o;7906:656::-;7962:13;8125:1;8116:5;:10;8112:53;;;8143:10;;;;;;;;;;;;;;;;;;;;;8112:53;8175:12;8190:5;8175:20;;8206:14;8231:78;8246:1;8238:4;:9;8231:78;;8264:8;;;;;:::i;:::-;;;;8295:2;8287:10;;;;;:::i;:::-;;;8231:78;;;8319:19;8351:6;8341:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8319:39;;8369:154;8385:1;8376:5;:10;8369:154;;8413:1;8403:11;;;;;:::i;:::-;;;8480:2;8472:5;:10;;;;:::i;:::-;8459:2;:24;;;;:::i;:::-;8446:39;;8429:6;8436;8429:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;8509:2;8500:11;;;;;:::i;:::-;;;8369:154;;;8547:6;8533:21;;;;;7906:656;;;;:::o;10818:549::-;10928:7;10953:20;10976:4;10953:27;;10996:9;10991:339;11015:5;:12;11011:1;:16;10991:339;;;11049:20;11072:5;11078:1;11072:8;;;;;;;;;;;;;;;;;;;;;;11049:31;;11115:12;11099;:28;11095:224;;11163:42;11178:12;11192;11163:14;:42::i;:::-;11148:57;;11095:224;;;11261:42;11276:12;11290;11261:14;:42::i;:::-;11246:57;;11095:224;10991:339;11029:3;;;;;:::i;:::-;;;;10991:339;;;;11347:12;11340:19;;;10818:549;;;;:::o;11375:256::-;11470:13;11538:1;11532:4;11525:15;11567:1;11561:4;11554:15;11608:4;11602;11592:21;11583:30;;11510:114;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:343::-;762:5;787:65;803:48;844:6;803:48;:::i;:::-;787:65;:::i;:::-;778:74;;875:6;868:5;861:21;913:4;906:5;902:16;951:3;942:6;937:3;933:16;930:25;927:2;;;968:1;965;958:12;927:2;981:41;1015:6;1010:3;1005;981:41;:::i;:::-;768:260;;;;;;:::o;1034:345::-;1112:5;1137:66;1153:49;1195:6;1153:49;:::i;:::-;1137:66;:::i;:::-;1128:75;;1226:6;1219:5;1212:21;1264:4;1257:5;1253:16;1302:3;1293:6;1288:3;1284:16;1281:25;1278:2;;;1319:1;1316;1309:12;1278:2;1332:41;1366:6;1361:3;1356;1332:41;:::i;:::-;1118:261;;;;;;:::o;1385:139::-;1431:5;1469:6;1456:20;1447:29;;1485:33;1512:5;1485:33;:::i;:::-;1437:87;;;;:::o;1547:303::-;1618:5;1667:3;1660:4;1652:6;1648:17;1644:27;1634:2;;1685:1;1682;1675:12;1634:2;1725:6;1712:20;1750:94;1840:3;1832:6;1825:4;1817:6;1813:17;1750:94;:::i;:::-;1741:103;;1624:226;;;;;:::o;1856:133::-;1899:5;1937:6;1924:20;1915:29;;1953:30;1977:5;1953:30;:::i;:::-;1905:84;;;;:::o;1995:139::-;2041:5;2079:6;2066:20;2057:29;;2095:33;2122:5;2095:33;:::i;:::-;2047:87;;;;:::o;2140:137::-;2185:5;2223:6;2210:20;2201:29;;2239:32;2265:5;2239:32;:::i;:::-;2191:86;;;;:::o;2283:141::-;2339:5;2370:6;2364:13;2355:22;;2386:32;2412:5;2386:32;:::i;:::-;2345:79;;;;:::o;2443:271::-;2498:5;2547:3;2540:4;2532:6;2528:17;2524:27;2514:2;;2565:1;2562;2555:12;2514:2;2605:6;2592:20;2630:78;2704:3;2696:6;2689:4;2681:6;2677:17;2630:78;:::i;:::-;2621:87;;2504:210;;;;;:::o;2734:352::-;2792:8;2802:6;2852:3;2845:4;2837:6;2833:17;2829:27;2819:2;;2870:1;2867;2860:12;2819:2;2906:6;2893:20;2883:30;;2936:18;2928:6;2925:30;2922:2;;;2968:1;2965;2958:12;2922:2;3005:4;2997:6;2993:17;2981:29;;3059:3;3051:4;3043:6;3039:17;3029:8;3025:32;3022:41;3019:2;;;3076:1;3073;3066:12;3019:2;2809:277;;;;;:::o;3106:273::-;3162:5;3211:3;3204:4;3196:6;3192:17;3188:27;3178:2;;3229:1;3226;3219:12;3178:2;3269:6;3256:20;3294:79;3369:3;3361:6;3354:4;3346:6;3342:17;3294:79;:::i;:::-;3285:88;;3168:211;;;;;:::o;3385:139::-;3431:5;3469:6;3456:20;3447:29;;3485:33;3512:5;3485:33;:::i;:::-;3437:87;;;;:::o;3530:262::-;3589:6;3638:2;3626:9;3617:7;3613:23;3609:32;3606:2;;;3654:1;3651;3644:12;3606:2;3697:1;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3668:117;3596:196;;;;:::o;3798:407::-;3866:6;3874;3923:2;3911:9;3902:7;3898:23;3894:32;3891:2;;;3939:1;3936;3929:12;3891:2;3982:1;4007:53;4052:7;4043:6;4032:9;4028:22;4007:53;:::i;:::-;3997:63;;3953:117;4109:2;4135:53;4180:7;4171:6;4160:9;4156:22;4135:53;:::i;:::-;4125:63;;4080:118;3881:324;;;;;:::o;4211:552::-;4288:6;4296;4304;4353:2;4341:9;4332:7;4328:23;4324:32;4321:2;;;4369:1;4366;4359:12;4321:2;4412:1;4437:53;4482:7;4473:6;4462:9;4458:22;4437:53;:::i;:::-;4427:63;;4383:117;4539:2;4565:53;4610:7;4601:6;4590:9;4586:22;4565:53;:::i;:::-;4555:63;;4510:118;4667:2;4693:53;4738:7;4729:6;4718:9;4714:22;4693:53;:::i;:::-;4683:63;;4638:118;4311:452;;;;;:::o;4769:809::-;4864:6;4872;4880;4888;4937:3;4925:9;4916:7;4912:23;4908:33;4905:2;;;4954:1;4951;4944:12;4905:2;4997:1;5022:53;5067:7;5058:6;5047:9;5043:22;5022:53;:::i;:::-;5012:63;;4968:117;5124:2;5150:53;5195:7;5186:6;5175:9;5171:22;5150:53;:::i;:::-;5140:63;;5095:118;5252:2;5278:53;5323:7;5314:6;5303:9;5299:22;5278:53;:::i;:::-;5268:63;;5223:118;5408:2;5397:9;5393:18;5380:32;5439:18;5431:6;5428:30;5425:2;;;5471:1;5468;5461:12;5425:2;5499:62;5553:7;5544:6;5533:9;5529:22;5499:62;:::i;:::-;5489:72;;5351:220;4895:683;;;;;;;:::o;5584:401::-;5649:6;5657;5706:2;5694:9;5685:7;5681:23;5677:32;5674:2;;;5722:1;5719;5712:12;5674:2;5765:1;5790:53;5835:7;5826:6;5815:9;5811:22;5790:53;:::i;:::-;5780:63;;5736:117;5892:2;5918:50;5960:7;5951:6;5940:9;5936:22;5918:50;:::i;:::-;5908:60;;5863:115;5664:321;;;;;:::o;5991:407::-;6059:6;6067;6116:2;6104:9;6095:7;6091:23;6087:32;6084:2;;;6132:1;6129;6122:12;6084:2;6175:1;6200:53;6245:7;6236:6;6225:9;6221:22;6200:53;:::i;:::-;6190:63;;6146:117;6302:2;6328:53;6373:7;6364:6;6353:9;6349:22;6328:53;:::i;:::-;6318:63;;6273:118;6074:324;;;;;:::o;6404:262::-;6463:6;6512:2;6500:9;6491:7;6487:23;6483:32;6480:2;;;6528:1;6525;6518:12;6480:2;6571:1;6596:53;6641:7;6632:6;6621:9;6617:22;6596:53;:::i;:::-;6586:63;;6542:117;6470:196;;;;:::o;6672:260::-;6730:6;6779:2;6767:9;6758:7;6754:23;6750:32;6747:2;;;6795:1;6792;6785:12;6747:2;6838:1;6863:52;6907:7;6898:6;6887:9;6883:22;6863:52;:::i;:::-;6853:62;;6809:116;6737:195;;;;:::o;6938:282::-;7007:6;7056:2;7044:9;7035:7;7031:23;7027:32;7024:2;;;7072:1;7069;7062:12;7024:2;7115:1;7140:63;7195:7;7186:6;7175:9;7171:22;7140:63;:::i;:::-;7130:73;;7086:127;7014:206;;;;:::o;7226:395::-;7297:6;7305;7354:2;7342:9;7333:7;7329:23;7325:32;7322:2;;;7370:1;7367;7360:12;7322:2;7441:1;7430:9;7426:17;7413:31;7471:18;7463:6;7460:30;7457:2;;;7503:1;7500;7493:12;7457:2;7539:65;7596:7;7587:6;7576:9;7572:22;7539:65;:::i;:::-;7521:83;;;;7384:230;7312:309;;;;;:::o;7627:375::-;7696:6;7745:2;7733:9;7724:7;7720:23;7716:32;7713:2;;;7761:1;7758;7751:12;7713:2;7832:1;7821:9;7817:17;7804:31;7862:18;7854:6;7851:30;7848:2;;;7894:1;7891;7884:12;7848:2;7922:63;7977:7;7968:6;7957:9;7953:22;7922:63;:::i;:::-;7912:73;;7775:220;7703:299;;;;:::o;8008:262::-;8067:6;8116:2;8104:9;8095:7;8091:23;8087:32;8084:2;;;8132:1;8129;8122:12;8084:2;8175:1;8200:53;8245:7;8236:6;8225:9;8221:22;8200:53;:::i;:::-;8190:63;;8146:117;8074:196;;;;:::o;8276:550::-;8369:6;8377;8426:2;8414:9;8405:7;8401:23;8397:32;8394:2;;;8442:1;8439;8432:12;8394:2;8485:1;8510:53;8555:7;8546:6;8535:9;8531:22;8510:53;:::i;:::-;8500:63;;8456:117;8640:2;8629:9;8625:18;8612:32;8671:18;8663:6;8660:30;8657:2;;;8703:1;8700;8693:12;8657:2;8731:78;8801:7;8792:6;8781:9;8777:22;8731:78;:::i;:::-;8721:88;;8583:236;8384:442;;;;;:::o;8832:108::-;8909:24;8927:5;8909:24;:::i;:::-;8904:3;8897:37;8887:53;;:::o;8946:118::-;9033:24;9051:5;9033:24;:::i;:::-;9028:3;9021:37;9011:53;;:::o;9070:157::-;9175:45;9195:24;9213:5;9195:24;:::i;:::-;9175:45;:::i;:::-;9170:3;9163:58;9153:74;;:::o;9233:109::-;9314:21;9329:5;9314:21;:::i;:::-;9309:3;9302:34;9292:50;;:::o;9348:360::-;9434:3;9462:38;9494:5;9462:38;:::i;:::-;9516:70;9579:6;9574:3;9516:70;:::i;:::-;9509:77;;9595:52;9640:6;9635:3;9628:4;9621:5;9617:16;9595:52;:::i;:::-;9672:29;9694:6;9672:29;:::i;:::-;9667:3;9663:39;9656:46;;9438:270;;;;;:::o;9714:364::-;9802:3;9830:39;9863:5;9830:39;:::i;:::-;9885:71;9949:6;9944:3;9885:71;:::i;:::-;9878:78;;9965:52;10010:6;10005:3;9998:4;9991:5;9987:16;9965:52;:::i;:::-;10042:29;10064:6;10042:29;:::i;:::-;10037:3;10033:39;10026:46;;9806:272;;;;;:::o;10084:377::-;10190:3;10218:39;10251:5;10218:39;:::i;:::-;10273:89;10355:6;10350:3;10273:89;:::i;:::-;10266:96;;10371:52;10416:6;10411:3;10404:4;10397:5;10393:16;10371:52;:::i;:::-;10448:6;10443:3;10439:16;10432:23;;10194:267;;;;;:::o;10467:366::-;10609:3;10630:67;10694:2;10689:3;10630:67;:::i;:::-;10623:74;;10706:93;10795:3;10706:93;:::i;:::-;10824:2;10819:3;10815:12;10808:19;;10613:220;;;:::o;10839:366::-;10981:3;11002:67;11066:2;11061:3;11002:67;:::i;:::-;10995:74;;11078:93;11167:3;11078:93;:::i;:::-;11196:2;11191:3;11187:12;11180:19;;10985:220;;;:::o;11211:366::-;11353:3;11374:67;11438:2;11433:3;11374:67;:::i;:::-;11367:74;;11450:93;11539:3;11450:93;:::i;:::-;11568:2;11563:3;11559:12;11552:19;;11357:220;;;:::o;11583:366::-;11725:3;11746:67;11810:2;11805:3;11746:67;:::i;:::-;11739:74;;11822:93;11911:3;11822:93;:::i;:::-;11940:2;11935:3;11931:12;11924:19;;11729:220;;;:::o;11955:366::-;12097:3;12118:67;12182:2;12177:3;12118:67;:::i;:::-;12111:74;;12194:93;12283:3;12194:93;:::i;:::-;12312:2;12307:3;12303:12;12296:19;;12101:220;;;:::o;12327:366::-;12469:3;12490:67;12554:2;12549:3;12490:67;:::i;:::-;12483:74;;12566:93;12655:3;12566:93;:::i;:::-;12684:2;12679:3;12675:12;12668:19;;12473:220;;;:::o;12699:366::-;12841:3;12862:67;12926:2;12921:3;12862:67;:::i;:::-;12855:74;;12938:93;13027:3;12938:93;:::i;:::-;13056:2;13051:3;13047:12;13040:19;;12845:220;;;:::o;13071:366::-;13213:3;13234:67;13298:2;13293:3;13234:67;:::i;:::-;13227:74;;13310:93;13399:3;13310:93;:::i;:::-;13428:2;13423:3;13419:12;13412:19;;13217:220;;;:::o;13443:366::-;13585:3;13606:67;13670:2;13665:3;13606:67;:::i;:::-;13599:74;;13682:93;13771:3;13682:93;:::i;:::-;13800:2;13795:3;13791:12;13784:19;;13589:220;;;:::o;13815:366::-;13957:3;13978:67;14042:2;14037:3;13978:67;:::i;:::-;13971:74;;14054:93;14143:3;14054:93;:::i;:::-;14172:2;14167:3;14163:12;14156:19;;13961:220;;;:::o;14187:366::-;14329:3;14350:67;14414:2;14409:3;14350:67;:::i;:::-;14343:74;;14426:93;14515:3;14426:93;:::i;:::-;14544:2;14539:3;14535:12;14528:19;;14333:220;;;:::o;14559:366::-;14701:3;14722:67;14786:2;14781:3;14722:67;:::i;:::-;14715:74;;14798:93;14887:3;14798:93;:::i;:::-;14916:2;14911:3;14907:12;14900:19;;14705:220;;;:::o;14931:366::-;15073:3;15094:67;15158:2;15153:3;15094:67;:::i;:::-;15087:74;;15170:93;15259:3;15170:93;:::i;:::-;15288:2;15283:3;15279:12;15272:19;;15077:220;;;:::o;15303:366::-;15445:3;15466:67;15530:2;15525:3;15466:67;:::i;:::-;15459:74;;15542:93;15631:3;15542:93;:::i;:::-;15660:2;15655:3;15651:12;15644:19;;15449:220;;;:::o;15675:400::-;15835:3;15856:84;15938:1;15933:3;15856:84;:::i;:::-;15849:91;;15949:93;16038:3;15949:93;:::i;:::-;16067:1;16062:3;16058:11;16051:18;;15839:236;;;:::o;16081:366::-;16223:3;16244:67;16308:2;16303:3;16244:67;:::i;:::-;16237:74;;16320:93;16409:3;16320:93;:::i;:::-;16438:2;16433:3;16429:12;16422:19;;16227:220;;;:::o;16453:366::-;16595:3;16616:67;16680:2;16675:3;16616:67;:::i;:::-;16609:74;;16692:93;16781:3;16692:93;:::i;:::-;16810:2;16805:3;16801:12;16794:19;;16599:220;;;:::o;16825:366::-;16967:3;16988:67;17052:2;17047:3;16988:67;:::i;:::-;16981:74;;17064:93;17153:3;17064:93;:::i;:::-;17182:2;17177:3;17173:12;17166:19;;16971:220;;;:::o;17197:366::-;17339:3;17360:67;17424:2;17419:3;17360:67;:::i;:::-;17353:74;;17436:93;17525:3;17436:93;:::i;:::-;17554:2;17549:3;17545:12;17538:19;;17343:220;;;:::o;17569:366::-;17711:3;17732:67;17796:2;17791:3;17732:67;:::i;:::-;17725:74;;17808:93;17897:3;17808:93;:::i;:::-;17926:2;17921:3;17917:12;17910:19;;17715:220;;;:::o;17941:366::-;18083:3;18104:67;18168:2;18163:3;18104:67;:::i;:::-;18097:74;;18180:93;18269:3;18180:93;:::i;:::-;18298:2;18293:3;18289:12;18282:19;;18087:220;;;:::o;18313:366::-;18455:3;18476:67;18540:2;18535:3;18476:67;:::i;:::-;18469:74;;18552:93;18641:3;18552:93;:::i;:::-;18670:2;18665:3;18661:12;18654:19;;18459:220;;;:::o;18685:366::-;18827:3;18848:67;18912:2;18907:3;18848:67;:::i;:::-;18841:74;;18924:93;19013:3;18924:93;:::i;:::-;19042:2;19037:3;19033:12;19026:19;;18831:220;;;:::o;19057:366::-;19199:3;19220:67;19284:2;19279:3;19220:67;:::i;:::-;19213:74;;19296:93;19385:3;19296:93;:::i;:::-;19414:2;19409:3;19405:12;19398:19;;19203:220;;;:::o;19429:366::-;19571:3;19592:67;19656:2;19651:3;19592:67;:::i;:::-;19585:74;;19668:93;19757:3;19668:93;:::i;:::-;19786:2;19781:3;19777:12;19770:19;;19575:220;;;:::o;19801:366::-;19943:3;19964:67;20028:2;20023:3;19964:67;:::i;:::-;19957:74;;20040:93;20129:3;20040:93;:::i;:::-;20158:2;20153:3;20149:12;20142:19;;19947:220;;;:::o;20173:366::-;20315:3;20336:67;20400:2;20395:3;20336:67;:::i;:::-;20329:74;;20412:93;20501:3;20412:93;:::i;:::-;20530:2;20525:3;20521:12;20514:19;;20319:220;;;:::o;20545:366::-;20687:3;20708:67;20772:2;20767:3;20708:67;:::i;:::-;20701:74;;20784:93;20873:3;20784:93;:::i;:::-;20902:2;20897:3;20893:12;20886:19;;20691:220;;;:::o;20917:366::-;21059:3;21080:67;21144:2;21139:3;21080:67;:::i;:::-;21073:74;;21156:93;21245:3;21156:93;:::i;:::-;21274:2;21269:3;21265:12;21258:19;;21063:220;;;:::o;21289:366::-;21431:3;21452:67;21516:2;21511:3;21452:67;:::i;:::-;21445:74;;21528:93;21617:3;21528:93;:::i;:::-;21646:2;21641:3;21637:12;21630:19;;21435:220;;;:::o;21661:366::-;21803:3;21824:67;21888:2;21883:3;21824:67;:::i;:::-;21817:74;;21900:93;21989:3;21900:93;:::i;:::-;22018:2;22013:3;22009:12;22002:19;;21807:220;;;:::o;22033:366::-;22175:3;22196:67;22260:2;22255:3;22196:67;:::i;:::-;22189:74;;22272:93;22361:3;22272:93;:::i;:::-;22390:2;22385:3;22381:12;22374:19;;22179:220;;;:::o;22475:527::-;22634:4;22629:3;22625:14;22721:4;22714:5;22710:16;22704:23;22740:63;22797:4;22792:3;22788:14;22774:12;22740:63;:::i;:::-;22649:164;22905:4;22898:5;22894:16;22888:23;22924:61;22979:4;22974:3;22970:14;22956:12;22924:61;:::i;:::-;22823:172;22603:399;;;:::o;23008:118::-;23095:24;23113:5;23095:24;:::i;:::-;23090:3;23083:37;23073:53;;:::o;23132:105::-;23207:23;23224:5;23207:23;:::i;:::-;23202:3;23195:36;23185:52;;:::o;23243:256::-;23355:3;23370:75;23441:3;23432:6;23370:75;:::i;:::-;23470:2;23465:3;23461:12;23454:19;;23490:3;23483:10;;23359:140;;;;:::o;23505:435::-;23685:3;23707:95;23798:3;23789:6;23707:95;:::i;:::-;23700:102;;23819:95;23910:3;23901:6;23819:95;:::i;:::-;23812:102;;23931:3;23924:10;;23689:251;;;;;:::o;23946:541::-;24179:3;24201:95;24292:3;24283:6;24201:95;:::i;:::-;24194:102;;24313:148;24457:3;24313:148;:::i;:::-;24306:155;;24478:3;24471:10;;24183:304;;;;:::o;24493:222::-;24586:4;24624:2;24613:9;24609:18;24601:26;;24637:71;24705:1;24694:9;24690:17;24681:6;24637:71;:::i;:::-;24591:124;;;;:::o;24721:640::-;24916:4;24954:3;24943:9;24939:19;24931:27;;24968:71;25036:1;25025:9;25021:17;25012:6;24968:71;:::i;:::-;25049:72;25117:2;25106:9;25102:18;25093:6;25049:72;:::i;:::-;25131;25199:2;25188:9;25184:18;25175:6;25131:72;:::i;:::-;25250:9;25244:4;25240:20;25235:2;25224:9;25220:18;25213:48;25278:76;25349:4;25340:6;25278:76;:::i;:::-;25270:84;;24921:440;;;;;;;:::o;25367:210::-;25454:4;25492:2;25481:9;25477:18;25469:26;;25505:65;25567:1;25556:9;25552:17;25543:6;25505:65;:::i;:::-;25459:118;;;;:::o;25583:313::-;25696:4;25734:2;25723:9;25719:18;25711:26;;25783:9;25777:4;25773:20;25769:1;25758:9;25754:17;25747:47;25811:78;25884:4;25875:6;25811:78;:::i;:::-;25803:86;;25701:195;;;;:::o;25902:419::-;26068:4;26106:2;26095:9;26091:18;26083:26;;26155:9;26149:4;26145:20;26141:1;26130:9;26126:17;26119:47;26183:131;26309:4;26183:131;:::i;:::-;26175:139;;26073:248;;;:::o;26327:419::-;26493:4;26531:2;26520:9;26516:18;26508:26;;26580:9;26574:4;26570:20;26566:1;26555:9;26551:17;26544:47;26608:131;26734:4;26608:131;:::i;:::-;26600:139;;26498:248;;;:::o;26752:419::-;26918:4;26956:2;26945:9;26941:18;26933:26;;27005:9;26999:4;26995:20;26991:1;26980:9;26976:17;26969:47;27033:131;27159:4;27033:131;:::i;:::-;27025:139;;26923:248;;;:::o;27177:419::-;27343:4;27381:2;27370:9;27366:18;27358:26;;27430:9;27424:4;27420:20;27416:1;27405:9;27401:17;27394:47;27458:131;27584:4;27458:131;:::i;:::-;27450:139;;27348:248;;;:::o;27602:419::-;27768:4;27806:2;27795:9;27791:18;27783:26;;27855:9;27849:4;27845:20;27841:1;27830:9;27826:17;27819:47;27883:131;28009:4;27883:131;:::i;:::-;27875:139;;27773:248;;;:::o;28027:419::-;28193:4;28231:2;28220:9;28216:18;28208:26;;28280:9;28274:4;28270:20;28266:1;28255:9;28251:17;28244:47;28308:131;28434:4;28308:131;:::i;:::-;28300:139;;28198:248;;;:::o;28452:419::-;28618:4;28656:2;28645:9;28641:18;28633:26;;28705:9;28699:4;28695:20;28691:1;28680:9;28676:17;28669:47;28733:131;28859:4;28733:131;:::i;:::-;28725:139;;28623:248;;;:::o;28877:419::-;29043:4;29081:2;29070:9;29066:18;29058:26;;29130:9;29124:4;29120:20;29116:1;29105:9;29101:17;29094:47;29158:131;29284:4;29158:131;:::i;:::-;29150:139;;29048:248;;;:::o;29302:419::-;29468:4;29506:2;29495:9;29491:18;29483:26;;29555:9;29549:4;29545:20;29541:1;29530:9;29526:17;29519:47;29583:131;29709:4;29583:131;:::i;:::-;29575:139;;29473:248;;;:::o;29727:419::-;29893:4;29931:2;29920:9;29916:18;29908:26;;29980:9;29974:4;29970:20;29966:1;29955:9;29951:17;29944:47;30008:131;30134:4;30008:131;:::i;:::-;30000:139;;29898:248;;;:::o;30152:419::-;30318:4;30356:2;30345:9;30341:18;30333:26;;30405:9;30399:4;30395:20;30391:1;30380:9;30376:17;30369:47;30433:131;30559:4;30433:131;:::i;:::-;30425:139;;30323:248;;;:::o;30577:419::-;30743:4;30781:2;30770:9;30766:18;30758:26;;30830:9;30824:4;30820:20;30816:1;30805:9;30801:17;30794:47;30858:131;30984:4;30858:131;:::i;:::-;30850:139;;30748:248;;;:::o;31002:419::-;31168:4;31206:2;31195:9;31191:18;31183:26;;31255:9;31249:4;31245:20;31241:1;31230:9;31226:17;31219:47;31283:131;31409:4;31283:131;:::i;:::-;31275:139;;31173:248;;;:::o;31427:419::-;31593:4;31631:2;31620:9;31616:18;31608:26;;31680:9;31674:4;31670:20;31666:1;31655:9;31651:17;31644:47;31708:131;31834:4;31708:131;:::i;:::-;31700:139;;31598:248;;;:::o;31852:419::-;32018:4;32056:2;32045:9;32041:18;32033:26;;32105:9;32099:4;32095:20;32091:1;32080:9;32076:17;32069:47;32133:131;32259:4;32133:131;:::i;:::-;32125:139;;32023:248;;;:::o;32277:419::-;32443:4;32481:2;32470:9;32466:18;32458:26;;32530:9;32524:4;32520:20;32516:1;32505:9;32501:17;32494:47;32558:131;32684:4;32558:131;:::i;:::-;32550:139;;32448:248;;;:::o;32702:419::-;32868:4;32906:2;32895:9;32891:18;32883:26;;32955:9;32949:4;32945:20;32941:1;32930:9;32926:17;32919:47;32983:131;33109:4;32983:131;:::i;:::-;32975:139;;32873:248;;;:::o;33127:419::-;33293:4;33331:2;33320:9;33316:18;33308:26;;33380:9;33374:4;33370:20;33366:1;33355:9;33351:17;33344:47;33408:131;33534:4;33408:131;:::i;:::-;33400:139;;33298:248;;;:::o;33552:419::-;33718:4;33756:2;33745:9;33741:18;33733:26;;33805:9;33799:4;33795:20;33791:1;33780:9;33776:17;33769:47;33833:131;33959:4;33833:131;:::i;:::-;33825:139;;33723:248;;;:::o;33977:419::-;34143:4;34181:2;34170:9;34166:18;34158:26;;34230:9;34224:4;34220:20;34216:1;34205:9;34201:17;34194:47;34258:131;34384:4;34258:131;:::i;:::-;34250:139;;34148:248;;;:::o;34402:419::-;34568:4;34606:2;34595:9;34591:18;34583:26;;34655:9;34649:4;34645:20;34641:1;34630:9;34626:17;34619:47;34683:131;34809:4;34683:131;:::i;:::-;34675:139;;34573:248;;;:::o;34827:419::-;34993:4;35031:2;35020:9;35016:18;35008:26;;35080:9;35074:4;35070:20;35066:1;35055:9;35051:17;35044:47;35108:131;35234:4;35108:131;:::i;:::-;35100:139;;34998:248;;;:::o;35252:419::-;35418:4;35456:2;35445:9;35441:18;35433:26;;35505:9;35499:4;35495:20;35491:1;35480:9;35476:17;35469:47;35533:131;35659:4;35533:131;:::i;:::-;35525:139;;35423:248;;;:::o;35677:419::-;35843:4;35881:2;35870:9;35866:18;35858:26;;35930:9;35924:4;35920:20;35916:1;35905:9;35901:17;35894:47;35958:131;36084:4;35958:131;:::i;:::-;35950:139;;35848:248;;;:::o;36102:419::-;36268:4;36306:2;36295:9;36291:18;36283:26;;36355:9;36349:4;36345:20;36341:1;36330:9;36326:17;36319:47;36383:131;36509:4;36383:131;:::i;:::-;36375:139;;36273:248;;;:::o;36527:419::-;36693:4;36731:2;36720:9;36716:18;36708:26;;36780:9;36774:4;36770:20;36766:1;36755:9;36751:17;36744:47;36808:131;36934:4;36808:131;:::i;:::-;36800:139;;36698:248;;;:::o;36952:419::-;37118:4;37156:2;37145:9;37141:18;37133:26;;37205:9;37199:4;37195:20;37191:1;37180:9;37176:17;37169:47;37233:131;37359:4;37233:131;:::i;:::-;37225:139;;37123:248;;;:::o;37377:419::-;37543:4;37581:2;37570:9;37566:18;37558:26;;37630:9;37624:4;37620:20;37616:1;37605:9;37601:17;37594:47;37658:131;37784:4;37658:131;:::i;:::-;37650:139;;37548:248;;;:::o;37802:419::-;37968:4;38006:2;37995:9;37991:18;37983:26;;38055:9;38049:4;38045:20;38041:1;38030:9;38026:17;38019:47;38083:131;38209:4;38083:131;:::i;:::-;38075:139;;37973:248;;;:::o;38227:419::-;38393:4;38431:2;38420:9;38416:18;38408:26;;38480:9;38474:4;38470:20;38466:1;38455:9;38451:17;38444:47;38508:131;38634:4;38508:131;:::i;:::-;38500:139;;38398:248;;;:::o;38652:419::-;38818:4;38856:2;38845:9;38841:18;38833:26;;38905:9;38899:4;38895:20;38891:1;38880:9;38876:17;38869:47;38933:131;39059:4;38933:131;:::i;:::-;38925:139;;38823:248;;;:::o;39077:346::-;39232:4;39270:2;39259:9;39255:18;39247:26;;39283:133;39413:1;39402:9;39398:17;39389:6;39283:133;:::i;:::-;39237:186;;;;:::o;39429:222::-;39522:4;39560:2;39549:9;39545:18;39537:26;;39573:71;39641:1;39630:9;39626:17;39617:6;39573:71;:::i;:::-;39527:124;;;;:::o;39657:129::-;39691:6;39718:20;;:::i;:::-;39708:30;;39747:33;39775:4;39767:6;39747:33;:::i;:::-;39698:88;;;:::o;39792:75::-;39825:6;39858:2;39852:9;39842:19;;39832:35;:::o;39873:311::-;39950:4;40040:18;40032:6;40029:30;40026:2;;;40062:18;;:::i;:::-;40026:2;40112:4;40104:6;40100:17;40092:25;;40172:4;40166;40162:15;40154:23;;39955:229;;;:::o;40190:307::-;40251:4;40341:18;40333:6;40330:30;40327:2;;;40363:18;;:::i;:::-;40327:2;40401:29;40423:6;40401:29;:::i;:::-;40393:37;;40485:4;40479;40475:15;40467:23;;40256:241;;;:::o;40503:308::-;40565:4;40655:18;40647:6;40644:30;40641:2;;;40677:18;;:::i;:::-;40641:2;40715:29;40737:6;40715:29;:::i;:::-;40707:37;;40799:4;40793;40789:15;40781:23;;40570:241;;;:::o;40817:98::-;40868:6;40902:5;40896:12;40886:22;;40875:40;;;:::o;40921:99::-;40973:6;41007:5;41001:12;40991:22;;40980:40;;;:::o;41026:168::-;41109:11;41143:6;41138:3;41131:19;41183:4;41178:3;41174:14;41159:29;;41121:73;;;;:::o;41200:169::-;41284:11;41318:6;41313:3;41306:19;41358:4;41353:3;41349:14;41334:29;;41296:73;;;;:::o;41375:148::-;41477:11;41514:3;41499:18;;41489:34;;;;:::o;41529:273::-;41569:3;41588:20;41606:1;41588:20;:::i;:::-;41583:25;;41622:20;41640:1;41622:20;:::i;:::-;41617:25;;41744:1;41708:34;41704:42;41701:1;41698:49;41695:2;;;41750:18;;:::i;:::-;41695:2;41794:1;41791;41787:9;41780:16;;41573:229;;;;:::o;41808:305::-;41848:3;41867:20;41885:1;41867:20;:::i;:::-;41862:25;;41901:20;41919:1;41901:20;:::i;:::-;41896:25;;42055:1;41987:66;41983:74;41980:1;41977:81;41974:2;;;42061:18;;:::i;:::-;41974:2;42105:1;42102;42098:9;42091:16;;41852:261;;;;:::o;42119:185::-;42159:1;42176:20;42194:1;42176:20;:::i;:::-;42171:25;;42210:20;42228:1;42210:20;:::i;:::-;42205:25;;42249:1;42239:2;;42254:18;;:::i;:::-;42239:2;42296:1;42293;42289:9;42284:14;;42161:143;;;;:::o;42310:348::-;42350:7;42373:20;42391:1;42373:20;:::i;:::-;42368:25;;42407:20;42425:1;42407:20;:::i;:::-;42402:25;;42595:1;42527:66;42523:74;42520:1;42517:81;42512:1;42505:9;42498:17;42494:105;42491:2;;;42602:18;;:::i;:::-;42491:2;42650:1;42647;42643:9;42632:20;;42358:300;;;;:::o;42664:191::-;42704:4;42724:20;42742:1;42724:20;:::i;:::-;42719:25;;42758:20;42776:1;42758:20;:::i;:::-;42753:25;;42797:1;42794;42791:8;42788:2;;;42802:18;;:::i;:::-;42788:2;42847:1;42844;42840:9;42832:17;;42709:146;;;;:::o;42861:191::-;42901:4;42921:20;42939:1;42921:20;:::i;:::-;42916:25;;42955:20;42973:1;42955:20;:::i;:::-;42950:25;;42994:1;42991;42988:8;42985:2;;;42999:18;;:::i;:::-;42985:2;43044:1;43041;43037:9;43029:17;;42906:146;;;;:::o;43058:96::-;43095:7;43124:24;43142:5;43124:24;:::i;:::-;43113:35;;43103:51;;;:::o;43160:90::-;43194:7;43237:5;43230:13;43223:21;43212:32;;43202:48;;;:::o;43256:77::-;43293:7;43322:5;43311:16;;43301:32;;;:::o;43339:149::-;43375:7;43415:66;43408:5;43404:78;43393:89;;43383:105;;;:::o;43494:118::-;43531:7;43571:34;43564:5;43560:46;43549:57;;43539:73;;;:::o;43618:126::-;43655:7;43695:42;43688:5;43684:54;43673:65;;43663:81;;;:::o;43750:77::-;43787:7;43816:5;43805:16;;43795:32;;;:::o;43833:101::-;43869:7;43909:18;43902:5;43898:30;43887:41;;43877:57;;;:::o;43940:154::-;44024:6;44019:3;44014;44001:30;44086:1;44077:6;44072:3;44068:16;44061:27;43991:103;;;:::o;44100:307::-;44168:1;44178:113;44192:6;44189:1;44186:13;44178:113;;;44277:1;44272:3;44268:11;44262:18;44258:1;44253:3;44249:11;44242:39;44214:2;44211:1;44207:10;44202:15;;44178:113;;;44309:6;44306:1;44303:13;44300:2;;;44389:1;44380:6;44375:3;44371:16;44364:27;44300:2;44149:258;;;;:::o;44413:171::-;44452:3;44475:24;44493:5;44475:24;:::i;:::-;44466:33;;44521:4;44514:5;44511:15;44508:2;;;44529:18;;:::i;:::-;44508:2;44576:1;44569:5;44565:13;44558:20;;44456:128;;;:::o;44590:320::-;44634:6;44671:1;44665:4;44661:12;44651:22;;44718:1;44712:4;44708:12;44739:18;44729:2;;44795:4;44787:6;44783:17;44773:27;;44729:2;44857;44849:6;44846:14;44826:18;44823:38;44820:2;;;44876:18;;:::i;:::-;44820:2;44641:269;;;;:::o;44916:281::-;44999:27;45021:4;44999:27;:::i;:::-;44991:6;44987:40;45129:6;45117:10;45114:22;45093:18;45081:10;45078:34;45075:62;45072:2;;;45140:18;;:::i;:::-;45072:2;45180:10;45176:2;45169:22;44959:238;;;:::o;45203:233::-;45242:3;45265:24;45283:5;45265:24;:::i;:::-;45256:33;;45311:66;45304:5;45301:77;45298:2;;;45381:18;;:::i;:::-;45298:2;45428:1;45421:5;45417:13;45410:20;;45246:190;;;:::o;45442:100::-;45481:7;45510:26;45530:5;45510:26;:::i;:::-;45499:37;;45489:53;;;:::o;45548:94::-;45587:7;45616:20;45630:5;45616:20;:::i;:::-;45605:31;;45595:47;;;:::o;45648:176::-;45680:1;45697:20;45715:1;45697:20;:::i;:::-;45692:25;;45731:20;45749:1;45731:20;:::i;:::-;45726:25;;45770:1;45760:2;;45775:18;;:::i;:::-;45760:2;45816:1;45813;45809:9;45804:14;;45682:142;;;;:::o;45830:180::-;45878:77;45875:1;45868:88;45975:4;45972:1;45965:15;45999:4;45996:1;45989:15;46016:180;46064:77;46061:1;46054:88;46161:4;46158:1;46151:15;46185:4;46182:1;46175:15;46202:180;46250:77;46247:1;46240:88;46347:4;46344:1;46337:15;46371:4;46368:1;46361:15;46388:180;46436:77;46433:1;46426:88;46533:4;46530:1;46523:15;46557:4;46554:1;46547:15;46574:102;46615:6;46666:2;46662:7;46657:2;46650:5;46646:14;46642:28;46632:38;;46622:54;;;:::o;46682:94::-;46715:8;46763:5;46759:2;46755:14;46734:35;;46724:52;;;:::o;46782:221::-;46922:34;46918:1;46910:6;46906:14;46899:58;46991:4;46986:2;46978:6;46974:15;46967:29;46888:115;:::o;47009:171::-;47149:23;47145:1;47137:6;47133:14;47126:47;47115:65;:::o;47186:225::-;47326:34;47322:1;47314:6;47310:14;47303:58;47395:8;47390:2;47382:6;47378:15;47371:33;47292:119;:::o;47417:161::-;47557:13;47553:1;47545:6;47541:14;47534:37;47523:55;:::o;47584:229::-;47724:34;47720:1;47712:6;47708:14;47701:58;47793:12;47788:2;47780:6;47776:15;47769:37;47690:123;:::o;47819:173::-;47959:25;47955:1;47947:6;47943:14;47936:49;47925:67;:::o;47998:222::-;48138:34;48134:1;48126:6;48122:14;48115:58;48207:5;48202:2;48194:6;48190:15;48183:30;48104:116;:::o;48226:224::-;48366:34;48362:1;48354:6;48350:14;48343:58;48435:7;48430:2;48422:6;48418:15;48411:32;48332:118;:::o;48456:236::-;48596:34;48592:1;48584:6;48580:14;48573:58;48665:19;48660:2;48652:6;48648:15;48641:44;48562:130;:::o;48698:180::-;48838:32;48834:1;48826:6;48822:14;48815:56;48804:74;:::o;48884:174::-;49024:26;49020:1;49012:6;49008:14;49001:50;48990:68;:::o;49064:244::-;49204:34;49200:1;49192:6;49188:14;49181:58;49273:27;49268:2;49260:6;49256:15;49249:52;49170:138;:::o;49314:230::-;49454:34;49450:1;49442:6;49438:14;49431:58;49523:13;49518:2;49510:6;49506:15;49499:38;49420:124;:::o;49550:225::-;49690:34;49686:1;49678:6;49674:14;49667:58;49759:8;49754:2;49746:6;49742:15;49735:33;49656:119;:::o;49781:155::-;49921:7;49917:1;49909:6;49905:14;49898:31;49887:49;:::o;49942:182::-;50082:34;50078:1;50070:6;50066:14;50059:58;50048:76;:::o;50130:171::-;50270:23;50266:1;50258:6;50254:14;50247:47;50236:65;:::o;50307:234::-;50447:34;50443:1;50435:6;50431:14;50424:58;50516:17;50511:2;50503:6;50499:15;50492:42;50413:128;:::o;50547:176::-;50687:28;50683:1;50675:6;50671:14;50664:52;50653:70;:::o;50729:237::-;50869:34;50865:1;50857:6;50853:14;50846:58;50938:20;50933:2;50925:6;50921:15;50914:45;50835:131;:::o;50972:221::-;51112:34;51108:1;51100:6;51096:14;51089:58;51181:4;51176:2;51168:6;51164:15;51157:29;51078:115;:::o;51199:227::-;51339:34;51335:1;51327:6;51323:14;51316:58;51408:10;51403:2;51395:6;51391:15;51384:35;51305:121;:::o;51432:221::-;51572:34;51568:1;51560:6;51556:14;51549:58;51641:4;51636:2;51628:6;51624:15;51617:29;51538:115;:::o;51659:174::-;51799:26;51795:1;51787:6;51783:14;51776:50;51765:68;:::o;51839:238::-;51979:34;51975:1;51967:6;51963:14;51956:58;52048:21;52043:2;52035:6;52031:15;52024:46;51945:132;:::o;52083:179::-;52223:31;52219:1;52211:6;52207:14;52200:55;52189:73;:::o;52268:220::-;52408:34;52404:1;52396:6;52392:14;52385:58;52477:3;52472:2;52464:6;52460:15;52453:28;52374:114;:::o;52494:231::-;52634:34;52630:1;52622:6;52618:14;52611:58;52703:14;52698:2;52690:6;52686:15;52679:39;52600:125;:::o;52731:233::-;52871:34;52867:1;52859:6;52855:14;52848:58;52940:16;52935:2;52927:6;52923:15;52916:41;52837:127;:::o;52970:234::-;53110:34;53106:1;53098:6;53094:14;53087:58;53179:17;53174:2;53166:6;53162:15;53155:42;53076:128;:::o;53210:232::-;53350:34;53346:1;53338:6;53334:14;53327:58;53419:15;53414:2;53406:6;53402:15;53395:40;53316:126;:::o;53448:221::-;53588:34;53584:1;53576:6;53572:14;53565:58;53657:4;53652:2;53644:6;53640:15;53633:29;53554:115;:::o;53675:122::-;53748:24;53766:5;53748:24;:::i;:::-;53741:5;53738:35;53728:2;;53787:1;53784;53777:12;53728:2;53718:79;:::o;53803:116::-;53873:21;53888:5;53873:21;:::i;:::-;53866:5;53863:32;53853:2;;53909:1;53906;53899:12;53853:2;53843:76;:::o;53925:122::-;53998:24;54016:5;53998:24;:::i;:::-;53991:5;53988:35;53978:2;;54037:1;54034;54027:12;53978:2;53968:79;:::o;54053:120::-;54125:23;54142:5;54125:23;:::i;:::-;54118:5;54115:34;54105:2;;54163:1;54160;54153:12;54105:2;54095:78;:::o;54179:122::-;54252:24;54270:5;54252:24;:::i;:::-;54245:5;54242:35;54232:2;;54291:1;54288;54281:12;54232:2;54222:79;:::o

Swarm Source

ipfs://12e81de2a1ee0f0110eaddb3961a2d0067e70f746cc1975836bbfedcd23a8f22

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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