code: def _read_para_hip_transform(self, code, cbit, clen, *, desc, length, version):
          
          if version != 1:
              raise ProtocolError(f'HIPv{version}: [Parano {code}] invalid parameter')
          if clen % 2 != 0:
              raise ProtocolError(f'HIPv{version}: [Parano {code}] invalid format')
  
          _stid = list()
          for _ in range(clen // 2):
              _stid.append(_SUITE_ID.get(self._read_unpack(2), 'Unassigned'))
  
          hip_transform = dict(
              type=desc,
              critical=cbit,
              length=clen,
              id=_stid,
          )
  
          _plen = length - clen
          if _plen:
              self._read_fileng(_plen)
  
          return hip_transform
docs: Read HIP HIP_TRANSFORM parameter.
  
          Structure of HIP HIP_TRANSFORM parameter [RFC 5201]:
               0                   1                   2                   3
               0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              |             Type              |             Length            |
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              |            Suite ID #1        |          Suite ID #2          |
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              |            Suite ID #n        |             Padding           |
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  
              Octets      Bits        Name                    Description
                0           0     hip_transform.type      Parameter Type
                1          15     hip_transform.critical  Critical Bit
                2          16     hip_transform.length    Length of Contents
                4          32     hip_transform.id        Group ID
                                  ............
                ?           ?     -                       Padding