code: def vbkv_loads(s, mapper=dict, merge_duplicate_keys=True):
      
      if s[:4] != b'VBKV':
          raise ValueError("Invalid header")
  
      checksum, = struct.unpack('<i', s[4:8])
  
      if checksum != crc32(s[8:]):
          raise ValueError("Invalid checksum")
  
      return binary_loads(s[8:], mapper, merge_duplicate_keys, alt_format=True)
docs: Deserialize ``s`` (``bytes`` containing a VBKV to a Python object.
  
      ``mapper`` specifies the Python object used after deserializetion. ``dict` is
      used by default. Alternatively, ``collections.OrderedDict`` can be used if you
      wish to preserve key order. Or any object that acts like a ``dict``.
  
      ``merge_duplicate_keys`` when ``True`` will merge multiple KeyValue lists with the
      same key into one instead of overwriting. You can se this to ``False`` if you are
      using ``VDFDict`` and need to preserve the duplicates.