contract ChrisVanceBeta is ERC721A, Ownable, ReentrancyGuard {
    using Address for address;

    // ===== Variables =====
    string public baseTokenURI;
    uint256 public collectionSize = 5;
    address public recipient = 0xb16eCb727B03c1E10546d8E3AD5B0e669120936d;

    // ===== Constructor =====
    constructor() ERC721A("Chris Vance: Beta", "CVB") {}

    // ===== Reserve mint =====
    function devMint(uint256 amount) external onlyOwner nonReentrant {
        require((totalSupply() + amount) <= collectionSize, "Max out!");
        _safeMint(recipient, amount);
    }

    // ===== Setter =====
    function setBaseTokenURI(string memory _baseTokenURI)
        external
        onlyOwner
        nonReentrant
    {
        baseTokenURI = _baseTokenURI;
    }

    // ===== View =====
    function tokenURI(uint256 tokenId)
        public
        view
        override(ERC721A)
        returns (string memory)
    {
        return
            string(
                abi.encodePacked(
                    baseTokenURI,
                    Strings.toString(tokenId),
                    ".json"
                )
            );
    }
}
function tokenURI(uint256 tokenId)
    public
    view
    override(ERC721A)
    returns (string memory)
{
    return
        string(
            abi.encodePacked(
                baseTokenURI,
                Strings.toString(tokenId),
                ".json"
            )
        );
}

// ===== View =====