docs: def _calculate_control_cif(cls, cif):
          """
          Calculate the letter that corresponds to the end of a CIF
          :param cif: calculated value so far needing a control character
          :return: CIF control character
  
          Code was converted from the minified js of: https://generadordni.es/
          """
  
          sum_ = 0
          first_chr, cif_value = cif[0], cif[1:]
          for index, char in enumerate(cif_value):
              if index % 2:
                  sum_ += int(char)
              else:
                  sum_ += sum(map(int, str(int(char) * 2)))
          if sum_ > 10:
              sum_ = int(str(sum_)[-1])
          else:
              sum_ = sum_
          sum_ = 10 - (sum_ % 10)
  
          if first_chr in ['F', 'J', 'K', 'N', 'P', 'Q', 'R', 'S', 'U', 'V', 'W']:
              return chr(64 + sum_)
          elif first_chr in ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'L', 'M']:
              if sum_ == 10:
                  sum_ = 0
              return str(sum_)
          else:  # K, L, M  # pragma: no cover
              # Old format that is no longer used, here for full compatability
              return cls._calculate_control_doi(cif)