Program: 61451
Project: 61451
Buggy source:
public static void convertSWF(AbortRetryIgnoreHandler handler,SWF swf,String swfFileName,String outfile,XFLExportSettings settings,String generator,String generatorVerName,String generatorVersion,boolean parallel,FLAVersion flaVersion) throws IOException, InterruptedException {
  FileAttributesTag fa=swf.getFileAttributes();
  boolean useAS3=false;
  boolean useNetwork=false;
  if (fa != null) {
    useAS3=fa.actionScript3;
    useNetwork=fa.useNetwork;
  }
  if (!useAS3 && flaVersion.minASVersion() > 2) {
    throw new IllegalArgumentException("String_Node_Str" + flaVersion + "String_Node_Str");
  }
  File file=new File(outfile);
  File outDir=file.getParentFile();
  Path.createDirectorySafe(outDir);
  StringBuilder domDocument=new StringBuilder();
  String baseName=swfFileName;
  File f=new File(baseName);
  baseName=f.getName();
  if (baseName.contains("String_Node_Str")) {
    baseName=baseName.substring(0,baseName.lastIndexOf('.'));
  }
  final HashMap<String,byte[]> files=new HashMap<>();
  final HashMap<String,byte[]> datfiles=new HashMap<>();
  HashMap<Integer,CharacterTag> characters=getCharacters(swf.getTags());
  List<Integer> nonLibraryShapes=getNonLibraryShapes(swf.getTags(),characters);
  Map<Integer,String> characterClasses=getCharacterClasses(swf.getTags());
  Map<Integer,String> characterVariables=getCharacterVariables(swf.getTags());
  String backgroundColor="String_Node_Str";
  SetBackgroundColorTag setBgColorTag=swf.getBackgroundColor();
  if (setBgColorTag != null) {
    backgroundColor=setBgColorTag.backgroundColor.toHexRGB();
  }
  domDocument.append("String_Node_Str").append(flaVersion.xflVersion()).append("String_Node_Str").append(generator).append("String_Node_Str").append(generatorVerName).append("String_Node_Str").append(generatorVersion).append("String_Node_Str");
  domDocument.append("String_Node_Str").append(backgroundColor).append("String_Node_Str");
  domDocument.append("String_Node_Str").append((int)swf.frameRate).append("String_Node_Str");
  double width=twipToPixel(swf.displayRect.getWidth());
  double height=twipToPixel(swf.displayRect.getHeight());
  if (Double.compare(width,550) != 0) {
    domDocument.append("String_Node_Str").append(doubleToString(width)).append("String_Node_Str");
  }
  if (Double.compare(height,400) != 0) {
    domDocument.append("String_Node_Str").append(doubleToString(height)).append("String_Node_Str");
  }
  domDocument.append("String_Node_Str");
  convertFonts(swf.getTags(),domDocument);
  convertLibrary(swf,characterVariables,characterClasses,nonLibraryShapes,backgroundColor,swf.getTags(),characters,files,datfiles,flaVersion,domDocument);
  domDocument.append("String_Node_Str");
  domDocument.append(convertTimeline(0,nonLibraryShapes,backgroundColor,swf.getTags(),swf.getTags(),characters,"String_Node_Str",flaVersion,files));
  domDocument.append("String_Node_Str");
  domDocument.append("String_Node_Str");
  String domDocumentStr=prettyFormatXML(domDocument.toString());
  if (settings.exportScript) {
    for (    Tag t : swf.getTags()) {
      if (t instanceof DoInitActionTag) {
        DoInitActionTag dia=(DoInitActionTag)t;
        int chid=dia.getCharacterId();
        if (characters.containsKey(chid)) {
          if (characters.get(chid) instanceof DefineSpriteTag) {
            DefineSpriteTag sprite=(DefineSpriteTag)characters.get(chid);
            if (sprite.getTags().isEmpty()) {
              String data=convertActionScript(dia);
              String expName=dia.getSwf().getExportName(dia.spriteId);
              expName=expName != null ? expName : "String_Node_Str";
              String expPath=expName;
              final String prefix="String_Node_Str";
              if (expPath.startsWith(prefix)) {
                expPath=expPath.substring(prefix.length());
              }
              String expDir="String_Node_Str";
              if (expPath.contains("String_Node_Str")) {
                expDir=expPath.substring(0,expPath.lastIndexOf('.'));
                expDir=expDir.replace("String_Node_Str",File.separator);
              }
              expPath=expPath.replace("String_Node_Str",File.separator);
              File cdir=new File(outDir.getAbsolutePath() + File.separator + expDir);
              Path.createDirectorySafe(cdir);
              writeFile(handler,Utf8Helper.getBytes(data),outDir.getAbsolutePath() + File.separator + expPath+ "String_Node_Str");
            }
          }
        }
      }
    }
  }
  int flaSwfVersion=swf.version > flaVersion.maxSwfVersion() ? flaVersion.maxSwfVersion() : swf.version;
  boolean greaterThanCC=flaVersion.ordinal() >= FLAVersion.CC.ordinal();
  XFLXmlWriter psXml=new XFLXmlWriter();
  try {
    psXml.writeStartElement("String_Node_Str");
    psXml.writeStartElement("String_Node_Str",new String[]{"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"});
    psXml.writeStartElement("String_Node_Str",new String[]{"String_Node_Str","String_Node_Str"});
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue(greaterThanCC ? "String_Node_Str" : "String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue(greaterThanCC ? "String_Node_Str" : "String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str",baseName + "String_Node_Str");
    psXml.writeElementValue("String_Node_Str",baseName + "String_Node_Str");
    psXml.writeElementValue("String_Node_Str",baseName + "String_Node_Str");
    psXml.writeElementValue("String_Node_Str",baseName + "String_Node_Str");
    psXml.writeElementValue("String_Node_Str",baseName + "String_Node_Str");
    psXml.writeElementValue("String_Node_Str",baseName + "String_Node_Str");
    psXml.writeElementValue("String_Node_Str",baseName + "String_Node_Str");
    psXml.writeElementValue(greaterThanCC ? "String_Node_Str" : "String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str",baseName + "String_Node_Str");
    psXml.writeElementValue("String_Node_Str",baseName + "String_Node_Str");
    psXml.writeEndElement();
    psXml.writeStartElement("String_Node_Str",new String[]{"String_Node_Str","String_Node_Str"});
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str",baseName + "String_Node_Str");
    psXml.writeElementValue("String_Node_Str",baseName + "String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str",width);
    psXml.writeElementValue("String_Node_Str",height);
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeEndElement();
    psXml.writeStartElement("String_Node_Str",new String[]{"String_Node_Str","String_Node_Str"});
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str",flaSwfVersion);
    psXml.writeElementValue("String_Node_Str",FLAVersion.swfVersionToPlayer(flaSwfVersion));
    psXml.writeElementValue("String_Node_Str",useAS3 ? "String_Node_Str" : "String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str",swf.compression == SWFCompression.NONE ? "String_Node_Str" : "String_Node_Str");
    psXml.writeElementValue("String_Node_Str",swf.compression == SWFCompression.LZMA ? "String_Node_Str" : "String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str",useNetwork ? 1 : 0);
    psXml.writeElementValue("String_Node_Str",characterClasses.containsKey(0) ? characterClasses.get(0) : "String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    if (greaterThanCC) {
      psXml.writeStartElement("String_Node_Str");
      psXml.writeStartElement("String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeEndElement();
      psXml.writeStartElement("String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeEndElement();
      psXml.writeStartElement("String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeEndElement();
      psXml.writeEndElement();
      psXml.writeElementValueRaw("String_Node_Str",Helper.newLine + "String_Node_Str");
    }
 else {
      psXml.writeStartElement("String_Node_Str");
      psXml.writeStartElement("String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeEndElement();
      psXml.writeStartElement("String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str",new String[]{"String_Node_Str","String_Node_Str"});
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeEndElement();
      psXml.writeStartElement("String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeEndElement();
      psXml.writeEndElement();
      psXml.writeStartElement("String_Node_Str");
      psXml.writeStartElement("String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeEmptyElement("String_Node_Str",new String[]{"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"});
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeEndElement();
      psXml.writeEndElement();
    }
    psXml.writeEndElement();
    psXml.writeStartElement("String_Node_Str",new String[]{"String_Node_Str","String_Node_Str"});
    psXml.writeElementValue("String_Node_Str",width);
    psXml.writeElementValue("String_Node_Str",height);
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeEndElement();
    psXml.writeStartElement("String_Node_Str",new String[]{"String_Node_Str","String_Node_Str"});
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeEndElement();
    psXml.writeStartElement("String_Node_Str",new String[]{"String_Node_Str","String_Node_Str"});
    psXml.writeElementValue("String_Node_Str",width);
    psXml.writeElementValue("String_Node_Str",height);
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeEndElement();
    psXml.writeStartElement("String_Node_Str",new String[]{"String_Node_Str","String_Node_Str"});
    psXml.writeElementValue("String_Node_Str",width);
    psXml.writeElementValue("String_Node_Str",height);
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeEndElement();
    if (!greaterThanCC) {
      psXml.writeStartElement("String_Node_Str",new String[]{"String_Node_Str","String_Node_Str"});
      psXml.writeElementValue("String_Node_Str",width);
      psXml.writeElementValue("String_Node_Str",height);
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeEndElement();
    }
    psXml.writeEndElement();
    psXml.writeEndElement();
  }
 catch (  XMLStreamException ex) {
    Logger.getLogger(XFLConverter.class.getName()).log(Level.SEVERE,null,ex);
  }
  String publishSettingsStr=psXml.toString();
  if (settings.compressed) {
    final String domDocumentF=domDocumentStr;
    final String publishSettingsF=publishSettingsStr;
    final String outfileF=outfile;
    new RetryTask(() -> {
      try (ZipOutputStream out=new ZipOutputStream(new FileOutputStream(outfileF))){
        out.putNextEntry(new ZipEntry("String_Node_Str"));
        out.write(Utf8Helper.getBytes(domDocumentF));
        out.putNextEntry(new ZipEntry("String_Node_Str"));
        out.write(Utf8Helper.getBytes(publishSettingsF));
        for (        String fileName : files.keySet()) {
          out.putNextEntry(new ZipEntry("String_Node_Str" + fileName));
          out.write(files.get(fileName));
        }
        for (        String fileName : datfiles.keySet()) {
          out.putNextEntry(new ZipEntry("String_Node_Str" + fileName));
          out.write(datfiles.get(fileName));
        }
      }
     }
,handler).run();
  }
 else {
    Path.createDirectorySafe(outDir);
    writeFile(handler,Utf8Helper.getBytes(domDocumentStr),outDir.getAbsolutePath() + File.separator + "String_Node_Str");
    writeFile(handler,Utf8Helper.getBytes(publishSettingsStr),outDir.getAbsolutePath() + File.separator + "String_Node_Str");
    File libraryDir=new File(outDir.getAbsolutePath() + File.separator + "String_Node_Str");
    libraryDir.mkdir();
    File binDir=new File(outDir.getAbsolutePath() + File.separator + "String_Node_Str");
    binDir.mkdir();
    for (    String fileName : files.keySet()) {
      writeFile(handler,files.get(fileName),libraryDir.getAbsolutePath() + File.separator + fileName);
    }
    for (    String fileName : datfiles.keySet()) {
      writeFile(handler,datfiles.get(fileName),binDir.getAbsolutePath() + File.separator + fileName);
    }
    writeFile(handler,Utf8Helper.getBytes("String_Node_Str"),outfile);
  }
  if (useAS3 && settings.exportScript) {
    try {
      ScriptExportSettings scriptExportSettings=new ScriptExportSettings(ScriptExportMode.AS,false);
      swf.exportActionScript(handler,Path.combine(outDir.getAbsolutePath(),"String_Node_Str"),scriptExportSettings,parallel,null);
    }
 catch (    Exception ex) {
      logger.log(Level.SEVERE,"String_Node_Str",ex);
    }
  }
}

Fixed version (ground truth):
public void convertSWF(AbortRetryIgnoreHandler handler,SWF swf,String swfFileName,String outfile,XFLExportSettings settings,String generator,String generatorVerName,String generatorVersion,boolean parallel,FLAVersion flaVersion) throws IOException, InterruptedException {
  FileAttributesTag fa=swf.getFileAttributes();
  boolean useAS3=false;
  boolean useNetwork=false;
  if (fa != null) {
    useAS3=fa.actionScript3;
    useNetwork=fa.useNetwork;
  }
  if (!useAS3 && flaVersion.minASVersion() > 2) {
    throw new IllegalArgumentException("String_Node_Str" + flaVersion + "String_Node_Str");
  }
  File file=new File(outfile);
  File outDir=file.getParentFile();
  Path.createDirectorySafe(outDir);
  StringBuilder domDocument=new StringBuilder();
  String baseName=swfFileName;
  File f=new File(baseName);
  baseName=f.getName();
  if (baseName.contains("String_Node_Str")) {
    baseName=baseName.substring(0,baseName.lastIndexOf('.'));
  }
  final HashMap<String,byte[]> files=new HashMap<>();
  final HashMap<String,byte[]> datfiles=new HashMap<>();
  HashMap<Integer,CharacterTag> characters=getCharacters(swf.getTags());
  List<Integer> nonLibraryShapes=getNonLibraryShapes(swf.getTags(),characters);
  Map<Integer,String> characterClasses=getCharacterClasses(swf.getTags());
  Map<Integer,String> characterVariables=getCharacterVariables(swf.getTags());
  String backgroundColor="String_Node_Str";
  SetBackgroundColorTag setBgColorTag=swf.getBackgroundColor();
  if (setBgColorTag != null) {
    backgroundColor=setBgColorTag.backgroundColor.toHexRGB();
  }
  domDocument.append("String_Node_Str").append(flaVersion.xflVersion()).append("String_Node_Str").append(generator).append("String_Node_Str").append(generatorVerName).append("String_Node_Str").append(generatorVersion).append("String_Node_Str");
  domDocument.append("String_Node_Str").append(backgroundColor).append("String_Node_Str");
  domDocument.append("String_Node_Str").append((int)swf.frameRate).append("String_Node_Str");
  double width=twipToPixel(swf.displayRect.getWidth());
  double height=twipToPixel(swf.displayRect.getHeight());
  if (Double.compare(width,550) != 0) {
    domDocument.append("String_Node_Str").append(doubleToString(width)).append("String_Node_Str");
  }
  if (Double.compare(height,400) != 0) {
    domDocument.append("String_Node_Str").append(doubleToString(height)).append("String_Node_Str");
  }
  domDocument.append("String_Node_Str");
  convertFonts(swf.getTags(),domDocument);
  convertLibrary(swf,characterVariables,characterClasses,nonLibraryShapes,backgroundColor,swf.getTags(),characters,files,datfiles,flaVersion,domDocument);
  domDocument.append("String_Node_Str");
  domDocument.append(convertTimeline(0,nonLibraryShapes,backgroundColor,swf.getTags(),swf.getTags(),characters,"String_Node_Str",flaVersion,files));
  domDocument.append("String_Node_Str");
  domDocument.append("String_Node_Str");
  String domDocumentStr=prettyFormatXML(domDocument.toString());
  if (settings.exportScript) {
    for (    Tag t : swf.getTags()) {
      if (t instanceof DoInitActionTag) {
        DoInitActionTag dia=(DoInitActionTag)t;
        int chid=dia.getCharacterId();
        if (characters.containsKey(chid)) {
          if (characters.get(chid) instanceof DefineSpriteTag) {
            DefineSpriteTag sprite=(DefineSpriteTag)characters.get(chid);
            if (sprite.getTags().isEmpty()) {
              String data=convertActionScript(dia);
              String expName=dia.getSwf().getExportName(dia.spriteId);
              expName=expName != null ? expName : "String_Node_Str";
              String expPath=expName;
              final String prefix="String_Node_Str";
              if (expPath.startsWith(prefix)) {
                expPath=expPath.substring(prefix.length());
              }
              String expDir="String_Node_Str";
              if (expPath.contains("String_Node_Str")) {
                expDir=expPath.substring(0,expPath.lastIndexOf('.'));
                expDir=expDir.replace("String_Node_Str",File.separator);
              }
              expPath=expPath.replace("String_Node_Str",File.separator);
              File cdir=new File(outDir.getAbsolutePath() + File.separator + expDir);
              Path.createDirectorySafe(cdir);
              writeFile(handler,Utf8Helper.getBytes(data),outDir.getAbsolutePath() + File.separator + expPath+ "String_Node_Str");
            }
          }
        }
      }
    }
  }
  int flaSwfVersion=swf.version > flaVersion.maxSwfVersion() ? flaVersion.maxSwfVersion() : swf.version;
  boolean greaterThanCC=flaVersion.ordinal() >= FLAVersion.CC.ordinal();
  XFLXmlWriter psXml=new XFLXmlWriter();
  try {
    psXml.writeStartElement("String_Node_Str");
    psXml.writeStartElement("String_Node_Str",new String[]{"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"});
    psXml.writeStartElement("String_Node_Str",new String[]{"String_Node_Str","String_Node_Str"});
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue(greaterThanCC ? "String_Node_Str" : "String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue(greaterThanCC ? "String_Node_Str" : "String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str",baseName + "String_Node_Str");
    psXml.writeElementValue("String_Node_Str",baseName + "String_Node_Str");
    psXml.writeElementValue("String_Node_Str",baseName + "String_Node_Str");
    psXml.writeElementValue("String_Node_Str",baseName + "String_Node_Str");
    psXml.writeElementValue("String_Node_Str",baseName + "String_Node_Str");
    psXml.writeElementValue("String_Node_Str",baseName + "String_Node_Str");
    psXml.writeElementValue("String_Node_Str",baseName + "String_Node_Str");
    psXml.writeElementValue(greaterThanCC ? "String_Node_Str" : "String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str",baseName + "String_Node_Str");
    psXml.writeElementValue("String_Node_Str",baseName + "String_Node_Str");
    psXml.writeEndElement();
    psXml.writeStartElement("String_Node_Str",new String[]{"String_Node_Str","String_Node_Str"});
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str",baseName + "String_Node_Str");
    psXml.writeElementValue("String_Node_Str",baseName + "String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str",width);
    psXml.writeElementValue("String_Node_Str",height);
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeEndElement();
    psXml.writeStartElement("String_Node_Str",new String[]{"String_Node_Str","String_Node_Str"});
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str",flaSwfVersion);
    psXml.writeElementValue("String_Node_Str",FLAVersion.swfVersionToPlayer(flaSwfVersion));
    psXml.writeElementValue("String_Node_Str",useAS3 ? "String_Node_Str" : "String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str",swf.compression == SWFCompression.NONE ? "String_Node_Str" : "String_Node_Str");
    psXml.writeElementValue("String_Node_Str",swf.compression == SWFCompression.LZMA ? "String_Node_Str" : "String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str",useNetwork ? 1 : 0);
    psXml.writeElementValue("String_Node_Str",characterClasses.containsKey(0) ? characterClasses.get(0) : "String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    if (greaterThanCC) {
      psXml.writeStartElement("String_Node_Str");
      psXml.writeStartElement("String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeEndElement();
      psXml.writeStartElement("String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeEndElement();
      psXml.writeStartElement("String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeEndElement();
      psXml.writeEndElement();
      psXml.writeElementValueRaw("String_Node_Str",Helper.newLine + "String_Node_Str");
    }
 else {
      psXml.writeStartElement("String_Node_Str");
      psXml.writeStartElement("String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeEndElement();
      psXml.writeStartElement("String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str",new String[]{"String_Node_Str","String_Node_Str"});
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeEndElement();
      psXml.writeStartElement("String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeEndElement();
      psXml.writeEndElement();
      psXml.writeStartElement("String_Node_Str");
      psXml.writeStartElement("String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeEmptyElement("String_Node_Str",new String[]{"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"});
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeEndElement();
      psXml.writeEndElement();
    }
    psXml.writeEndElement();
    psXml.writeStartElement("String_Node_Str",new String[]{"String_Node_Str","String_Node_Str"});
    psXml.writeElementValue("String_Node_Str",width);
    psXml.writeElementValue("String_Node_Str",height);
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeEndElement();
    psXml.writeStartElement("String_Node_Str",new String[]{"String_Node_Str","String_Node_Str"});
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeEndElement();
    psXml.writeStartElement("String_Node_Str",new String[]{"String_Node_Str","String_Node_Str"});
    psXml.writeElementValue("String_Node_Str",width);
    psXml.writeElementValue("String_Node_Str",height);
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeEndElement();
    psXml.writeStartElement("String_Node_Str",new String[]{"String_Node_Str","String_Node_Str"});
    psXml.writeElementValue("String_Node_Str",width);
    psXml.writeElementValue("String_Node_Str",height);
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeElementValue("String_Node_Str","String_Node_Str");
    psXml.writeEndElement();
    if (!greaterThanCC) {
      psXml.writeStartElement("String_Node_Str",new String[]{"String_Node_Str","String_Node_Str"});
      psXml.writeElementValue("String_Node_Str",width);
      psXml.writeElementValue("String_Node_Str",height);
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeElementValue("String_Node_Str","String_Node_Str");
      psXml.writeEndElement();
    }
    psXml.writeEndElement();
    psXml.writeEndElement();
  }
 catch (  XMLStreamException ex) {
    Logger.getLogger(XFLConverter.class.getName()).log(Level.SEVERE,null,ex);
  }
  String publishSettingsStr=psXml.toString();
  if (settings.compressed) {
    final String domDocumentF=domDocumentStr;
    final String publishSettingsF=publishSettingsStr;
    final String outfileF=outfile;
    new RetryTask(() -> {
      try (ZipOutputStream out=new ZipOutputStream(new FileOutputStream(outfileF))){
        out.putNextEntry(new ZipEntry("String_Node_Str"));
        out.write(Utf8Helper.getBytes(domDocumentF));
        out.putNextEntry(new ZipEntry("String_Node_Str"));
        out.write(Utf8Helper.getBytes(publishSettingsF));
        for (        String fileName : files.keySet()) {
          out.putNextEntry(new ZipEntry("String_Node_Str" + fileName));
          out.write(files.get(fileName));
        }
        for (        String fileName : datfiles.keySet()) {
          out.putNextEntry(new ZipEntry("String_Node_Str" + fileName));
          out.write(datfiles.get(fileName));
        }
      }
     }
,handler).run();
  }
 else {
    Path.createDirectorySafe(outDir);
    writeFile(handler,Utf8Helper.getBytes(domDocumentStr),outDir.getAbsolutePath() + File.separator + "String_Node_Str");
    writeFile(handler,Utf8Helper.getBytes(publishSettingsStr),outDir.getAbsolutePath() + File.separator + "String_Node_Str");
    File libraryDir=new File(outDir.getAbsolutePath() + File.separator + "String_Node_Str");
    libraryDir.mkdir();
    File binDir=new File(outDir.getAbsolutePath() + File.separator + "String_Node_Str");
    binDir.mkdir();
    for (    String fileName : files.keySet()) {
      writeFile(handler,files.get(fileName),libraryDir.getAbsolutePath() + File.separator + fileName);
    }
    for (    String fileName : datfiles.keySet()) {
      writeFile(handler,datfiles.get(fileName),binDir.getAbsolutePath() + File.separator + fileName);
    }
    writeFile(handler,Utf8Helper.getBytes("String_Node_Str"),outfile);
  }
  if (useAS3 && settings.exportScript) {
    try {
      ScriptExportSettings scriptExportSettings=new ScriptExportSettings(ScriptExportMode.AS,false);
      swf.exportActionScript(handler,Path.combine(outDir.getAbsolutePath(),"String_Node_Str"),scriptExportSettings,parallel,null);
    }
 catch (    Exception ex) {
      logger.log(Level.SEVERE,"String_Node_Str",ex);
    }
  }
}