const getFlags = function(fileView, offset, version) {
    let tagAlterPreservation = false;
    let fileAlterPreservation = false;
    let readOnly = false;
    let containsGroupInfo = false;
    let isCompressed = false;
    let isEncrypted = false;
    let hasBeenUnsynchronized = false;
    let hasDataLengthIndicator = false;

    if (version >= 3) {
        const bits = fileView.getUint16(offset);
        tagAlterPreservation = readBit(bits, 14);
        fileAlterPreservation = readBit(bits, 13);
        readOnly = readBit(bits, 12);
        containsGroupInfo = readBit(bits, 6);
        isCompressed = readBit(bits, 3);
        isEncrypted = readBit(bits, 2);
        hasBeenUnsynchronized = readBit(bits, 1);
        hasDataLengthIndicator = readBit(bits, 0);
    }

    return {
        tagAlterPreservation,
        fileAlterPreservation,
        readOnly,
        containsGroupInfo,
        isCompressed,
        isEncrypted,
        hasBeenUnsynchronized,
        hasDataLengthIndicator
    };
};
const getMainFlags = function(fileView, offset) {
    const bits = fileView.getUint8(offset + 5);

    const hasBeenUnsynchronized = readBit(bits, 7);
    const isExtended = readBit(bits, 6);
    const isExperimental = readBit(bits, 5);
    const hasFooter = readBit(bits, 4);

    return {
        hasBeenUnsynchronized,
        isExtended,
        isExperimental,
        hasFooter,
        invalidBits: (bits & 0xF) !== 0
    };
};