docs: @Override public boolean toHTML( StringBuilder sb ) {
      if(files == null)return false;
      if( files != null && files.length > 1 )
        sb.append("<div class='alert'>")
          .append(parseLink("*"+prefix+"*", "Parse all into hex format"))
          .append(" </div>");
  
      DocGen.HTML.title(sb,"files");
      DocGen.HTML.arrayHead(sb);
      for( int i=0; i<files.length; i++ )
        sb.append("<tr><td><a href='"+parse()+"?source_key=").append(keys[i]).
          append("'>").append(files[i]).append("</a></td></tr>");
      DocGen.HTML.arrayTail(sb);
  
      if( fails.length > 0 )
        DocGen.HTML.array(DocGen.HTML.title(sb,"fails"),fails);
      if( dels != null && dels.length > 0 )
        DocGen.HTML.array(DocGen.HTML.title(sb,"Keys deleted before importing"),dels);
      return true;
    }
  
    private boolean isBareS3NBucketWithoutTrailingSlash(String s) {
      Pattern p = Pattern.compile("s3n://[^/]*");
      Matcher m = p.matcher(s);
      boolean b = m.matches();
      return b;
    }
  }