1 Introduction

This document seeks to lay out my process in poking at the DNAsequencing results of a series of Pseudomonas aeruginosa PA14 and PAK strains.

If I understand Dr. Lee and co.’s goal, they wish to ensure that these strains are still reasonably close to the associated reference strains. I therefore am running my default trimming/mapping/variant search methods.

I have a single command that can run all of these commands at the same time, but I have been actively breaking my tools recently; so I decided to run them one at a time with the assumption that something would not work (but everything did work on the first try, so that was nice).

1.1 Downloading and sorting the data

I downloaded the .zip archive file using the link in Dr. Lee’s email. I did not save it though, so if we need to download the data again, we will have to go to him. I created my usual work directory ‘preprocessing/’ within this tree and moved it there. I unzipped it and moved each pair of reads to a directory which follows Dr. Lee’s desired naming convention.

I then created the directories: ‘reference/’ and ‘sample_sheets/’. The sample_sheets remained empty for a while, but I immediately downloaded the full genbank flat file for the Pseudomonas PAK strain from NCBI, found here:

https://www.ncbi.nlm.nih.gov/nuccore/NZ_CP020659

Note, that when downloading, one must hit the ‘customize view’ button on the right and ensure that the entire sequence and all annotations are included. Then hit the ‘send to’ button and send it to a file. This file I copied to reference/paeruginosa_pak.gb.

1.2 Creation of the pak reference

Given the full PAK genbank file, I converted it to the expected fasta/gff file for mapping:

cd reference
cyoa --method gb2gff --input paeruginosa_pak.gb

This command created a series of fasta and gff files which provide the coordinates for the various annotations (genes/cds/rRNA/intercds) and sequence for the genome, CDS nucleotides, and amino acids. I then copied the genome/gff files to my global reference directory and prepared it for usage by my favorite mapper:

cd ~/libraries/genome
cyoa --method indexhisat --species paeruginosa_pak

Now all of the pieces are in place for me to play. Each of the following steps was performed twice, once for the PA14 samples, once for the PAK samples. The only difference in the invocations was due to the fact that the PAK annotations provide different tags. E.g. I used the ‘Alias’ tag for PA14 and the ‘locus_tag’ tag for PAK. As a result I am only going to write down in this document the PA14 invocations and assume the reader can figure out the difference.

1.3 Trimming

I have a couple of trimming methods, in this instance I just used the default and will operate under the assumption that it is sufficient until I see otherwise.

cd preprocessing
start=$(pwd)
for i in $(/bin/ls -d PA14*); do
    cd $i
    cyoa --method trim --input $(/bin/ls *.fastq.gz | tr '\n' ':' | sed 's/:$//g')
    cd $start
done

The above command line invocation produced a series of trimming jobs which when examined look like this (I am only showing examples from PA14_exoUTY, and am leaving off the beginning and end).

1.3.1 Resulting trimmer script

## This is a portion of file:
##  preprocessing/PA14_exoUTY/scripts/01trim_7_UTY_S138_R1_001.sh

module add trimomatic
mkdir -p outputs/01trimomatic
## Note that trimomatic prints all output and errors to STDERR, so send both to output
trimmomatic PE \
  -threads 1 \
  -phred33 \
  7_UTY_S138_R1_001.fastq.gz 7_UTY_S138_R2_001.fastq.gz \
  7_UTY_S138_R1_001-trimmed_paired.fastq 7_UTY_S138_R1_001-trimmed_unpaired.fastq \
  7_UTY_S138_R2_001-trimmed_paired.fastq 7_UTY_S138_R2_001-trimmed_unpaired.fastq \
   ILLUMINACLIP:/fs/cbcb-software/RedHat-8-x86_64/local/cyoa/202302/prefix/lib/perl5/auto/share/dist/Bio-Adventure/genome/adapters.fa:2:20:10:2:keepBothReads  \
  SLIDINGWINDOW:4:20 MINLEN:50 \
  1>outputs/01trimomatic/7_UTY_S138_R1_001-trimomatic.stdout \
  2>outputs/01trimomatic/7_UTY_S138_R1_001-trimomatic.stderr
excepted=$( { grep "Exception" "outputs/01trimomatic/7_UTY_S138_R1_001-trimomatic.stdout" || test $? = 1; } )

One thing I did not include in the above: upon completion, the script aggressively compresses the trimmed output and symbolically links it to r1_trimmed.fastq.xz and r2_trimmed.fastq.xz. Thus any following steps can use the same input name (r1_trimmed.fastq.xz:r2_trimmed.fastq.xz).

1.4 Mapping

My default mappers run the actual alignment, convert it to a compressed/indexed bam, and count it against the reference genome. In this context, the counting is a little silly, but does have the potential to help find duplications and such.

cd preprocessing
start=$(pwd)
for i in $(/bin/ls -d PA14*); do
    cd $i
    cyoa --method hisat --input r1_trimmed.fastq.xz:r2_trimmed.fastq.xz \
         --species paeruginosa_pa14 --gff_type gene --gff_tag Alias
    cd $start
done

## Here is what I ran for PAK
cd preprocessing
start=$(pwd)
for i in $(/bin/ls -d PAK*); do
    cd $i
    cyoa --method hisat --input r1_trimmed.fastq.xz:r2_trimmed.fastq.xz \
         --species paeruginosa_pak --gff_type gene --gff_tag locus_tag
    cd $start
done

1.4.1 The resulting mapper script run by the cluster

Similarly, I am just putting the meaty part.

module add hisat2 samtools htseq bamtools
mkdir -p outputs/40hisat2_paeruginosa_pa14
hisat2 -x ${HOME}/libraries/genome/indexes/paeruginosa_pa14  \
  -p 8 \
  -q   -1 <(less /home/trey/sshfs/scratch/atb/dnaseq/paeruginosa_strains_202304/preprocessing/PA14_exoUTY/r1_trimmed.fastq.xz) -2 <(less /home/trey/sshfs/scratch/atb/dnaseq/paeruginosa_strains_202304/preprocessing/PA14_exoUTY/r2_trimmed.fastq.xz)  \
  --phred33 \
  --un outputs/40hisat2_paeruginosa_pa14/unaldis_paeruginosa_pa14_genome.fastq \
  --al outputs/40hisat2_paeruginosa_pa14/aldis_paeruginosa_pa14_genome.fastq \
  --un-conc outputs/40hisat2_paeruginosa_pa14/unalcon_paeruginosa_pa14_genome.fastq \
  --al-conc outputs/40hisat2_paeruginosa_pa14/alcon_paeruginosa_pa14_genome.fastq \
  -S outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.sam \
  2>outputs/40hisat2_paeruginosa_pa14/hisat2_paeruginosa_pa14_genome_PA14_exoUTY.stderr \
  1>outputs/40hisat2_paeruginosa_pa14/hisat2_paeruginosa_pa14_genome_PA14_exoUTY.stdout

1.4.2 Conversion to bam script

The above cyoa invocation also creates this script. It is a little long because it does some checks and creates a couple of filtered versions of the output.

module add samtools bamtools

echo "Starting samtools"
if [[ -f "outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam" && -f "outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.sam" ]]; then
  echo "Both the bam and sam files exist, rerunning."
elif [[ -f "outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam" ]]; then
  echo "The output file exists, quitting."
  exit 0
elif [[ ! -f "outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.sam" ]]; then
  echo "Could not find the samtools input file."
  exit 1
fi

## If a previous sort file exists due to running out of memory,
## then we need to get rid of them first.
## hg38_100_genome-sorted.bam.tmp.0000.bam
if [[ -f "outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam.tmp.000.bam" ]]; then
  rm -f outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam.tmp.*.bam
fi
samtools view -u -t ${HOME}/libraries/genome/paeruginosa_pa14.fasta \
  -S outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.sam -o outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam  \
  2>outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam_samtools.stderr \
  1>outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam_samtools.stdout

echo "First samtools command finished with $?"
samtools sort -l 9 outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam \
  -o outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome-sorted.bam \
  2>>outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam_samtools.stderr \
  1>>outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam_samtools.stdout
rm outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam
rm outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.sam
mv outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome-sorted.bam outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam
samtools index outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam \
  2>>outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam_samtools.stderr \
  1>>outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam_samtools.stdout
echo "Second samtools command finished with $?"
bamtools stats -in outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam \
  2>>outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam_samtools.stats 1>&2
echo "Bamtools finished with $?"

## The following will fail if this is single-ended.
samtools view -b -f 2 \
  -o outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome-paired.bam \
  outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam \
  2>>outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam_samtools.stderr \
  1>>outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam_samtools.stdout
samtools index outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome-paired.bam \
  2>>outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam_samtools.stderr \
  1>>outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam_samtools.stdout
bamtools stats -in outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome-paired.bam \
  2>>outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam_samtools.stats 1>&2

bamtools filter -tag XM:0 \
  -in outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam \
  -out outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome-sorted_nomismatch.bam \
  2>>outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam_samtools.stats 1>&2
echo "bamtools filter finished with: $?"
samtools index \
  outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome-sorted_nomismatch.bam \
  2>>outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam_samtools.stderr \
  1>>outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome.bam_samtools.stdout
echo "final samtools index finished with: $?"

1.4.3 Counting against the genome

Note that this step is not really useful for a dnaseq dataset in most instances. I also have the default orientation set to reverse because most of the samples off our sequencer are reversed; but that is likely not true for this dataset. If it turns out we actually care about these counts, I may need to come back and rerun these.

module add htseq

htseq-count \
  -q -f bam \
  -s reverse -a 0 \
   --type all  --idattr Alias \
  outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome-paired.bam \
  /home/trey/libraries/genome/paeruginosa_pa14.gff \
  2>outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome-paired_sreverse_all_Alias.stderr \
  1>outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome-paired_sreverse_all_Alias.count
xz -f -9e outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome-paired_sreverse_all_Alias.count

2 Creating a sample sheet

In order to play further with the data, I will need a sample sheet. So I will start out by creating a blank one in excel (libreoffice) which contains only the samplenames in the same format as my directories in preprocessing/.

Once completed, I can use it as the input for my hpgltools package and it should extract the interesting information from the preprocessing logs and fill out the sample sheet accordingly. Lets see if it works!

Here is the before:

knitr::kable(extract_metadata("sample_sheets/all_samples.xlsx"))
## Did not find the condition column in the sample sheet.
## Filling it in as undefined.
## Did not find the batch column in the sample sheet.
## Filling it in as undefined.
sampleid condition batch
PA14_exoUTY PA14_exoUTY undefined undefined
PA14_JC PA14_JC undefined undefined
PA14_lux PA14_lux undefined undefined
PA14_NBH PA14_NBH undefined undefined
PA14_pscD_A5 PA14_pscD_A5 undefined undefined
PA14_pscdD_E4 PA14_pscdD_E4 undefined undefined
PA14_xcp PA14_xcp undefined undefined
PA14_xcp_pscD PA14_xcp_pscD undefined undefined
PAK PAK undefined undefined
PAK_pscC PAK_pscC undefined undefined
PAK_xcp PAK_xcp undefined undefined
PAK_xcp_pscC PAK_xcp_pscC undefined undefined

Like I said, not much going on. Lets see what it looks like after I run the gatherer on it… (Note, I have been meaning to change this to drop the unused columns, but not yet).

modified <- gather_preprocessing_metadata("sample_sheets/all_samples.xlsx")
## Did not find the condition column in the sample sheet.
## Filling it in as undefined.
## Did not find the batch column in the sample sheet.
## Filling it in as undefined.
## Starting assembly_fasta_nt.
## Example filename: preprocessing/PA14_exoUTY/unicycler_assembly.fasta.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for: preprocessing/PA14_exoUTY/unicycler_assembly.fasta.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for: preprocessing/PA14_JC/unicycler_assembly.fasta.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for: preprocessing/PA14_lux/unicycler_assembly.fasta.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for: preprocessing/PA14_NBH/unicycler_assembly.fasta.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for: preprocessing/PA14_pscD_A5/unicycler_assembly.fasta.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for: preprocessing/PA14_pscdD_E4/unicycler_assembly.fasta.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for: preprocessing/PA14_xcp/unicycler_assembly.fasta.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for: preprocessing/PA14_xcp_pscD/unicycler_assembly.fasta.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for: preprocessing/PAK/unicycler_assembly.fasta.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for: preprocessing/PAK_pscC/unicycler_assembly.fasta.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for: preprocessing/PAK_xcp/unicycler_assembly.fasta.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for: preprocessing/PAK_xcp_pscC/unicycler_assembly.fasta.
## Starting assembly_genbank_annotated.
## Example filename: preprocessing/PA14_exoUTY/outputs/*mergeannot/PA14_exoUTY.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*mergeannot/PA14_exoUTY.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_JC/outputs/*mergeannot/PA14_JC.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_lux/outputs/*mergeannot/PA14_lux.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_NBH/outputs/*mergeannot/PA14_NBH.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*mergeannot/PA14_pscD_A5.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*mergeannot/PA14_pscdD_E4.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_xcp/outputs/*mergeannot/PA14_xcp.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*mergeannot/PA14_xcp_pscD.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for: preprocessing/PAK/outputs/*mergeannot/PAK.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_pscC/outputs/*mergeannot/PAK_pscC.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_xcp/outputs/*mergeannot/PAK_xcp.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*mergeannot/PAK_xcp_pscC.gbk.
## Starting assembly_genbank_stripped.
## Example filename: preprocessing/PA14_exoUTY/outputs/*mergeannot/PA14_exoUTY_stripped.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*mergeannot/PA14_exoUTY_stripped.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_JC/outputs/*mergeannot/PA14_JC_stripped.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_lux/outputs/*mergeannot/PA14_lux_stripped.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_NBH/outputs/*mergeannot/PA14_NBH_stripped.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*mergeannot/PA14_pscD_A5_stripped.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*mergeannot/PA14_pscdD_E4_stripped.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_xcp/outputs/*mergeannot/PA14_xcp_stripped.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*mergeannot/PA14_xcp_pscD_stripped.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK/outputs/*mergeannot/PAK_stripped.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_pscC/outputs/*mergeannot/PAK_pscC_stripped.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_xcp/outputs/*mergeannot/PAK_xcp_stripped.gbk.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*mergeannot/PAK_xcp_pscC_stripped.gbk.
## Starting assembly_cds_amino_acids.
## Example filename: preprocessing/PA14_exoUTY/outputs/*merge_cds_predictions/PA14_exoUTY.faa.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*merge_cds_predictions/PA14_exoUTY.faa.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_JC/outputs/*merge_cds_predictions/PA14_JC.faa.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_lux/outputs/*merge_cds_predictions/PA14_lux.faa.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_NBH/outputs/*merge_cds_predictions/PA14_NBH.faa.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*merge_cds_predictions/PA14_pscD_A5.faa.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*merge_cds_predictions/PA14_pscdD_E4.faa.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_xcp/outputs/*merge_cds_predictions/PA14_xcp.faa.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*merge_cds_predictions/PA14_xcp_pscD.faa.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK/outputs/*merge_cds_predictions/PAK.faa.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_pscC/outputs/*merge_cds_predictions/PAK_pscC.faa.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_xcp/outputs/*merge_cds_predictions/PAK_xcp.faa.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*merge_cds_predictions/PAK_xcp_pscC.faa.
## Starting assembly_cds_nucleotides.
## Example filename: preprocessing/PA14_exoUTY/outputs/*merge_cds_predictions/PA14_exoUTY.ffn.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*merge_cds_predictions/PA14_exoUTY.ffn.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_JC/outputs/*merge_cds_predictions/PA14_JC.ffn.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_lux/outputs/*merge_cds_predictions/PA14_lux.ffn.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_NBH/outputs/*merge_cds_predictions/PA14_NBH.ffn.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*merge_cds_predictions/PA14_pscD_A5.ffn.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*merge_cds_predictions/PA14_pscdD_E4.ffn.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_xcp/outputs/*merge_cds_predictions/PA14_xcp.ffn.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*merge_cds_predictions/PA14_xcp_pscD.ffn.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK/outputs/*merge_cds_predictions/PAK.ffn.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_pscC/outputs/*merge_cds_predictions/PAK_pscC.ffn.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_xcp/outputs/*merge_cds_predictions/PAK_xcp.ffn.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*merge_cds_predictions/PAK_xcp_pscC.ffn.
## Starting assembly_gff.
## Example filename: preprocessing/PA14_exoUTY/outputs/*merge_cds_predictions/PA14_exoUTY.gff.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*merge_cds_predictions/PA14_exoUTY.gff.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_JC/outputs/*merge_cds_predictions/PA14_JC.gff.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_lux/outputs/*merge_cds_predictions/PA14_lux.gff.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_NBH/outputs/*merge_cds_predictions/PA14_NBH.gff.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*merge_cds_predictions/PA14_pscD_A5.gff.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*merge_cds_predictions/PA14_pscdD_E4.gff.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_xcp/outputs/*merge_cds_predictions/PA14_xcp.gff.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*merge_cds_predictions/PA14_xcp_pscD.gff.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK/outputs/*merge_cds_predictions/PAK.gff.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_pscC/outputs/*merge_cds_predictions/PAK_pscC.gff.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_xcp/outputs/*merge_cds_predictions/PAK_xcp.gff.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*merge_cds_predictions/PAK_xcp_pscC.gff.
## Starting assembly_tsv.
## Example filename: preprocessing/PA14_exoUTY/outputs/*merge_cds_predictions/PA14_exoUTY.tsv.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*merge_cds_predictions/PA14_exoUTY.tsv.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_JC/outputs/*merge_cds_predictions/PA14_JC.tsv.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_lux/outputs/*merge_cds_predictions/PA14_lux.tsv.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_NBH/outputs/*merge_cds_predictions/PA14_NBH.tsv.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*merge_cds_predictions/PA14_pscD_A5.tsv.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*merge_cds_predictions/PA14_pscdD_E4.tsv.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_xcp/outputs/*merge_cds_predictions/PA14_xcp.tsv.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*merge_cds_predictions/PA14_xcp_pscD.tsv.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK/outputs/*merge_cds_predictions/PAK.tsv.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_pscC/outputs/*merge_cds_predictions/PAK_pscC.tsv.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_xcp/outputs/*merge_cds_predictions/PAK_xcp.tsv.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*merge_cds_predictions/PAK_xcp_pscC.tsv.
## Starting assembly_xls.
## Example filename: preprocessing/PA14_exoUTY/outputs/*mergeannot/PA14_exoUTY.xlsx.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*mergeannot/PA14_exoUTY.xlsx.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_JC/outputs/*mergeannot/PA14_JC.xlsx.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_lux/outputs/*mergeannot/PA14_lux.xlsx.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_NBH/outputs/*mergeannot/PA14_NBH.xlsx.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*mergeannot/PA14_pscD_A5.xlsx.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*mergeannot/PA14_pscdD_E4.xlsx.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_xcp/outputs/*mergeannot/PA14_xcp.xlsx.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*mergeannot/PA14_xcp_pscD.xlsx.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for: preprocessing/PAK/outputs/*mergeannot/PAK.xlsx.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_pscC/outputs/*mergeannot/PAK_pscC.xlsx.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_xcp/outputs/*mergeannot/PAK_xcp.xlsx.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*mergeannot/PAK_xcp_pscC.xlsx.
## Starting input_r1.
## Example filename: preprocessing/PA14_exoUTY/scripts/*trim_*.sh.
## Starting input_r2.
## Example filename: preprocessing/PA14_exoUTY/scripts/*trim_*.sh.
## Starting trimomatic_input.
## Example filename: preprocessing/PA14_exoUTY/outputs/*trimomatic/*-trimomatic.stderr.
## Starting trimomatic_output.
## Example filename: preprocessing/PA14_exoUTY/outputs/*trimomatic/*-trimomatic.stderr.
## Starting trimomatic_ratio.
## The numerator column is: trimomatic_output.
## The denominator column is: trimomatic_input.
## Starting host_filter_species.
## Example filename: preprocessing/PA14_exoUTY/host_species.txt.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: host_filter_species.
## Starting hisat_genome_single_concordant.
## Example filename: preprocessing/PA14_exoUTY/outputs/*/hisat2_*.stderr.
## Starting hisat_genome_multi_concordant.
## Example filename: preprocessing/PA14_exoUTY/outputs/*/hisat2_*.stderr.
## Starting hisat_genome_single_all.
## Example filename: preprocessing/PA14_exoUTY/outputs/*/hisat2_*.stderr.
## Starting hisat_genome_multi_all.
## Example filename: preprocessing/PA14_exoUTY/outputs/*/hisat2_*.stderr.
## Starting hisat_count_table.
## Example filename: preprocessing/PA14_exoUTY/outputs/*/*_*_genome*.count.xz.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*/*_*_genome*.count.xz.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_pscC/outputs/*/*_*_genome*.count.xz.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for: preprocessing/PAK_xcp/outputs/*/*_*_genome*.count.xz.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*/*_*_genome*.count.xz.
## Starting jellyfish_count_table.
## Example filename: preprocessing/PA14_exoUTY/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_JC/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_lux/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_NBH/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_xcp/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_pscC/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_xcp/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_filename_search(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*jellyfish_*/*_matrix.csv.xz.
## Starting jellyfish_observed.
## Example filename: preprocessing/PA14_exoUTY/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_JC/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_lux/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_NBH/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_pscC/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp/outputs/*jellyfish_*/*_matrix.csv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*jellyfish_*/*_matrix.csv.xz.
## Starting kraken_viral_classified.
## Example filename: preprocessing/PA14_exoUTY/outputs/*kraken_viral*/kraken.stderr.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: kraken_viral_classified.
## Starting kraken_viral_unclassified.
## Example filename: preprocessing/PA14_exoUTY/outputs/*kraken_viral*/kraken.stderr.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: kraken_viral_unclassified.
## Starting kraken_first_viral_species.
## Example filename: preprocessing/PA14_exoUTY/outputs/*kraken_viral*/kraken_report.txt.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: kraken_first_viral_species.
## Starting kraken_first_viral_species_reads.
## Example filename: preprocessing/PA14_exoUTY/outputs/*kraken_viral*/kraken_report.txt.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: kraken_first_viral_species_reads.
## Starting kraken_standard_classified.
## Example filename: preprocessing/PA14_exoUTY/outputs/*kraken_standard*/kraken.stderr.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: kraken_standard_classified.
## Starting kraken_standard_unclassified.
## Example filename: preprocessing/PA14_exoUTY/outputs/*kraken_standard*/kraken.stderr.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: kraken_standard_unclassified.
## Starting kraken_first_standard_species.
## Example filename: preprocessing/PA14_exoUTY/outputs/*kraken_standard*/kraken_report.txt.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: kraken_first_standard_species.
## Starting kraken_first_standard_species_reads.
## Example filename: preprocessing/PA14_exoUTY/outputs/*kraken_standard*/kraken_report.txt.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: kraken_first_standard_species_reads.
## Starting possible_host_species.
## Example filename: preprocessing/PA14_exoUTY/outputs/*filter_kraken_host/*.log.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*filter_kraken_host/*.log.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_JC/outputs/*filter_kraken_host/*.log.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_lux/outputs/*filter_kraken_host/*.log.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_NBH/outputs/*filter_kraken_host/*.log.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*filter_kraken_host/*.log.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*filter_kraken_host/*.log.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp/outputs/*filter_kraken_host/*.log.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*filter_kraken_host/*.log.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK/outputs/*filter_kraken_host/*.log.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_pscC/outputs/*filter_kraken_host/*.log.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp/outputs/*filter_kraken_host/*.log.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*filter_kraken_host/*.log.
## Starting pernt_mean_coverage.
## Example filename: preprocessing/PA14_exoUTY/outputs/??assembly_coverage_*/base_coverage.tsv.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: pernt_mean_coverage.
## Starting pernt_median_coverage.
## Example filename: preprocessing/PA14_exoUTY/outputs/??assembly_coverage_*/base_coverage.tsv.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: pernt_median_coverage.
## Starting pernt_min_coverage.
## Example filename: preprocessing/PA14_exoUTY/outputs/??assembly_coverage_*/base_coverage.tsv.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: pernt_min_coverage.
## Starting pernt_max_coverage.
## Example filename: preprocessing/PA14_exoUTY/outputs/??assembly_coverage_*/base_coverage.tsv.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: pernt_max_coverage.
## Starting salmon_mapped.
## Example filename: preprocessing/PA14_exoUTY/outputs/*salmon_*/salmon.stderr.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: salmon_mapped.
## Starting shovill_contigs.
## Example filename: preprocessing/PA14_exoUTY/outputs/*shovill_*/shovill.log.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: shovill_contigs.
## Starting shovill_length.
## Example filename: preprocessing/PA14_exoUTY/outputs/*shovill_*/shovill.log.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: shovill_length.
## Starting shovill_estlength.
## Example filename: preprocessing/PA14_exoUTY/outputs/*shovill_*/shovill.log.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: shovill_estlength.
## Starting shovill_minlength.
## Example filename: preprocessing/PA14_exoUTY/outputs/*shovill_*/shovill.log.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: shovill_minlength.
## Starting unicycler_lengths.
## Example filename: preprocessing/PA14_exoUTY/outputs/*unicycler/*final_assembly.fasta.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: unicycler_lengths.
## Starting unicycler_relative_coverage.
## Example filename: preprocessing/PA14_exoUTY/outputs/*unicycler/*final_assembly.fasta.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: unicycler_relative_coverage.
## Starting filtered_relative_coverage.
## Example filename: preprocessing/PA14_exoUTY/outputs/??filter_depth/final_assembly.fasta.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: filtered_relative_coverage.
## Starting phastaf_num_hits.
## Example filename: preprocessing/PA14_exoUTY/outputs/*phastaf_*/phage.bed.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*phastaf_*/phage.bed.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_JC/outputs/*phastaf_*/phage.bed.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_lux/outputs/*phastaf_*/phage.bed.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_NBH/outputs/*phastaf_*/phage.bed.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*phastaf_*/phage.bed.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*phastaf_*/phage.bed.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp/outputs/*phastaf_*/phage.bed.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*phastaf_*/phage.bed.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK/outputs/*phastaf_*/phage.bed.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_pscC/outputs/*phastaf_*/phage.bed.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp/outputs/*phastaf_*/phage.bed.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*phastaf_*/phage.bed.
## Starting phageterm_dtr_length.
## Example filename: preprocessing/PA14_exoUTY/outputs/*phageterm_*/phageterm_final_dtr.fasta.
## Warning in dispatch_fasta_lengths(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*phageterm_*/phageterm_final_dtr.fasta.
## Warning in dispatch_fasta_lengths(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_JC/outputs/*phageterm_*/phageterm_final_dtr.fasta.
## Warning in dispatch_fasta_lengths(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_lux/outputs/*phageterm_*/phageterm_final_dtr.fasta.
## Warning in dispatch_fasta_lengths(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_NBH/outputs/*phageterm_*/phageterm_final_dtr.fasta.
## Warning in dispatch_fasta_lengths(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*phageterm_*/phageterm_final_dtr.fasta.
## Warning in dispatch_fasta_lengths(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*phageterm_*/phageterm_final_dtr.fasta.
## Warning in dispatch_fasta_lengths(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_xcp/outputs/*phageterm_*/phageterm_final_dtr.fasta.
## Warning in dispatch_fasta_lengths(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*phageterm_*/phageterm_final_dtr.fasta.
## Warning in dispatch_fasta_lengths(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK/outputs/*phageterm_*/phageterm_final_dtr.fasta.
## Warning in dispatch_fasta_lengths(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_pscC/outputs/*phageterm_*/phageterm_final_dtr.fasta.
## Warning in dispatch_fasta_lengths(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_xcp/outputs/*phageterm_*/phageterm_final_dtr.fasta.
## Warning in dispatch_fasta_lengths(meta, input_file_spec, verbose = verbose, :
## The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*phageterm_*/phageterm_final_dtr.fasta.
## Starting prodigal_positive_strand.
## Example filename: preprocessing/PA14_exoUTY/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_JC/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_lux/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_NBH/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_pscC/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*prodigal_*/predicted_cds.gff.
## Starting prodigal_negative_strand.
## Example filename: preprocessing/PA14_exoUTY/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_JC/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_lux/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_NBH/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_pscC/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp/outputs/*prodigal_*/predicted_cds.gff.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*prodigal_*/predicted_cds.gff.
## Starting glimmer_positive_strand.
## Example filename: preprocessing/PA14_exoUTY/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_JC/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_lux/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_NBH/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_pscC/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*glimmer/glimmer3.predict.
## Starting glimmer_negative_strand.
## Example filename: preprocessing/PA14_exoUTY/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_JC/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_lux/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_NBH/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_pscC/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp/outputs/*glimmer/glimmer3.predict.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*glimmer/glimmer3.predict.
## Starting phanotate_positive_strand.
## Example filename: preprocessing/PA14_exoUTY/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_JC/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_lux/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_NBH/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_pscC/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*phanotate/*_phanotate.tsv.xz.
## Starting phanotate_negative_strand.
## Example filename: preprocessing/PA14_exoUTY/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_JC/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_lux/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_NBH/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_pscC/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp/outputs/*phanotate/*_phanotate.tsv.xz.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*phanotate/*_phanotate.tsv.xz.
## Starting final_gc_content.
## Example filename: preprocessing/PA14_exoUTY/outputs/*prokka/PA14_exoUTY.fna.
## Warning in dispatch_gc(meta, input_file_spec, basedir = basedir, verbose =
## verbose): The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*prokka/PA14_exoUTY.fna.
## Warning in dispatch_gc(meta, input_file_spec, basedir = basedir, verbose =
## verbose): The input file is NA for:
## preprocessing/PA14_JC/outputs/*prokka/PA14_JC.fna.
## Warning in dispatch_gc(meta, input_file_spec, basedir = basedir, verbose =
## verbose): The input file is NA for:
## preprocessing/PA14_lux/outputs/*prokka/PA14_lux.fna.
## Warning in dispatch_gc(meta, input_file_spec, basedir = basedir, verbose =
## verbose): The input file is NA for:
## preprocessing/PA14_NBH/outputs/*prokka/PA14_NBH.fna.
## Warning in dispatch_gc(meta, input_file_spec, basedir = basedir, verbose =
## verbose): The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*prokka/PA14_pscD_A5.fna.
## Warning in dispatch_gc(meta, input_file_spec, basedir = basedir, verbose =
## verbose): The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*prokka/PA14_pscdD_E4.fna.
## Warning in dispatch_gc(meta, input_file_spec, basedir = basedir, verbose =
## verbose): The input file is NA for:
## preprocessing/PA14_xcp/outputs/*prokka/PA14_xcp.fna.
## Warning in dispatch_gc(meta, input_file_spec, basedir = basedir, verbose =
## verbose): The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*prokka/PA14_xcp_pscD.fna.
## Warning in dispatch_gc(meta, input_file_spec, basedir = basedir, verbose =
## verbose): The input file is NA for: preprocessing/PAK/outputs/*prokka/PAK.fna.
## Warning in dispatch_gc(meta, input_file_spec, basedir = basedir, verbose =
## verbose): The input file is NA for:
## preprocessing/PAK_pscC/outputs/*prokka/PAK_pscC.fna.
## Warning in dispatch_gc(meta, input_file_spec, basedir = basedir, verbose =
## verbose): The input file is NA for:
## preprocessing/PAK_xcp/outputs/*prokka/PAK_xcp.fna.
## Warning in dispatch_gc(meta, input_file_spec, basedir = basedir, verbose =
## verbose): The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*prokka/PAK_xcp_pscC.fna.
## Starting interpro_signalp_hits.
## Example filename: preprocessing/PA14_exoUTY/outputs/*interproscan_*/PA14_exoUTY.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*interproscan_*/PA14_exoUTY.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_JC/outputs/*interproscan_*/PA14_JC.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_lux/outputs/*interproscan_*/PA14_lux.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_NBH/outputs/*interproscan_*/PA14_NBH.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*interproscan_*/PA14_pscD_A5.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*interproscan_*/PA14_pscdD_E4.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp/outputs/*interproscan_*/PA14_xcp.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*interproscan_*/PA14_xcp_pscD.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK/outputs/*interproscan_*/PAK.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_pscC/outputs/*interproscan_*/PAK_pscC.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp/outputs/*interproscan_*/PAK_xcp.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*interproscan_*/PAK_xcp_pscC.faa.tsv.
## Starting interpro_phobius_hits.
## Example filename: preprocessing/PA14_exoUTY/outputs/*interproscan_*/PA14_exoUTY.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*interproscan_*/PA14_exoUTY.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_JC/outputs/*interproscan_*/PA14_JC.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_lux/outputs/*interproscan_*/PA14_lux.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_NBH/outputs/*interproscan_*/PA14_NBH.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*interproscan_*/PA14_pscD_A5.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*interproscan_*/PA14_pscdD_E4.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp/outputs/*interproscan_*/PA14_xcp.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*interproscan_*/PA14_xcp_pscD.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK/outputs/*interproscan_*/PAK.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_pscC/outputs/*interproscan_*/PAK_pscC.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp/outputs/*interproscan_*/PAK_xcp.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*interproscan_*/PAK_xcp_pscC.faa.tsv.
## Starting interpro_pfam_hits.
## Example filename: preprocessing/PA14_exoUTY/outputs/*interproscan_*/PA14_exoUTY.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*interproscan_*/PA14_exoUTY.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_JC/outputs/*interproscan_*/PA14_JC.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_lux/outputs/*interproscan_*/PA14_lux.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_NBH/outputs/*interproscan_*/PA14_NBH.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*interproscan_*/PA14_pscD_A5.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*interproscan_*/PA14_pscdD_E4.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp/outputs/*interproscan_*/PA14_xcp.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*interproscan_*/PA14_xcp_pscD.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK/outputs/*interproscan_*/PAK.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_pscC/outputs/*interproscan_*/PAK_pscC.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp/outputs/*interproscan_*/PAK_xcp.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*interproscan_*/PAK_xcp_pscC.faa.tsv.
## Starting interpro_tmhmm_hits.
## Example filename: preprocessing/PA14_exoUTY/outputs/*interproscan_*/PA14_exoUTY.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*interproscan_*/PA14_exoUTY.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_JC/outputs/*interproscan_*/PA14_JC.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_lux/outputs/*interproscan_*/PA14_lux.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_NBH/outputs/*interproscan_*/PA14_NBH.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*interproscan_*/PA14_pscD_A5.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*interproscan_*/PA14_pscdD_E4.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp/outputs/*interproscan_*/PA14_xcp.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*interproscan_*/PA14_xcp_pscD.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK/outputs/*interproscan_*/PAK.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_pscC/outputs/*interproscan_*/PAK_pscC.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp/outputs/*interproscan_*/PAK_xcp.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*interproscan_*/PAK_xcp_pscC.faa.tsv.
## Starting interpro_cdd_hits.
## Example filename: preprocessing/PA14_exoUTY/outputs/*interproscan_*/PA14_exoUTY.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*interproscan_*/PA14_exoUTY.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_JC/outputs/*interproscan_*/PA14_JC.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_lux/outputs/*interproscan_*/PA14_lux.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_NBH/outputs/*interproscan_*/PA14_NBH.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*interproscan_*/PA14_pscD_A5.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*interproscan_*/PA14_pscdD_E4.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp/outputs/*interproscan_*/PA14_xcp.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*interproscan_*/PA14_xcp_pscD.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK/outputs/*interproscan_*/PAK.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_pscC/outputs/*interproscan_*/PAK_pscC.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp/outputs/*interproscan_*/PAK_xcp.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*interproscan_*/PAK_xcp_pscC.faa.tsv.
## Starting interpro_smart_hits.
## Example filename: preprocessing/PA14_exoUTY/outputs/*interproscan_*/PA14_exoUTY.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*interproscan_*/PA14_exoUTY.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_JC/outputs/*interproscan_*/PA14_JC.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_lux/outputs/*interproscan_*/PA14_lux.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_NBH/outputs/*interproscan_*/PA14_NBH.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*interproscan_*/PA14_pscD_A5.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*interproscan_*/PA14_pscdD_E4.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp/outputs/*interproscan_*/PA14_xcp.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*interproscan_*/PA14_xcp_pscD.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK/outputs/*interproscan_*/PAK.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_pscC/outputs/*interproscan_*/PAK_pscC.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp/outputs/*interproscan_*/PAK_xcp.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*interproscan_*/PAK_xcp_pscC.faa.tsv.
## Starting interpro_gene3d_hits.
## Example filename: preprocessing/PA14_exoUTY/outputs/*interproscan_*/PA14_exoUTY.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*interproscan_*/PA14_exoUTY.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_JC/outputs/*interproscan_*/PA14_JC.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_lux/outputs/*interproscan_*/PA14_lux.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_NBH/outputs/*interproscan_*/PA14_NBH.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*interproscan_*/PA14_pscD_A5.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*interproscan_*/PA14_pscdD_E4.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp/outputs/*interproscan_*/PA14_xcp.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*interproscan_*/PA14_xcp_pscD.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK/outputs/*interproscan_*/PAK.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_pscC/outputs/*interproscan_*/PAK_pscC.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp/outputs/*interproscan_*/PAK_xcp.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*interproscan_*/PAK_xcp_pscC.faa.tsv.
## Starting interpro_superfamily_hits.
## Example filename: preprocessing/PA14_exoUTY/outputs/*interproscan_*/PA14_exoUTY.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_exoUTY/outputs/*interproscan_*/PA14_exoUTY.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_JC/outputs/*interproscan_*/PA14_JC.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_lux/outputs/*interproscan_*/PA14_lux.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_NBH/outputs/*interproscan_*/PA14_NBH.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscD_A5/outputs/*interproscan_*/PA14_pscD_A5.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_pscdD_E4/outputs/*interproscan_*/PA14_pscdD_E4.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp/outputs/*interproscan_*/PA14_xcp.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PA14_xcp_pscD/outputs/*interproscan_*/PA14_xcp_pscD.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK/outputs/*interproscan_*/PAK.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_pscC/outputs/*interproscan_*/PAK_pscC.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp/outputs/*interproscan_*/PAK_xcp.faa.tsv.
## Warning in dispatch_count_lines(meta, search, input_file_spec, verbose =
## verbose, : The input file is NA for:
## preprocessing/PAK_xcp_pscC/outputs/*interproscan_*/PAK_xcp_pscC.faa.tsv.
## Starting tRNA_hits.
## Example filename: preprocessing/PA14_exoUTY/outputs/*prokka_*/PA14_exoUTY.log.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: tRNA_hits.
## Starting aragorn_tRNAs.
## Example filename: preprocessing/PA14_exoUTY/outputs/*aragorn/aragorn.txt.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: aragorn_tRNAs.
## Starting ictv_taxonomy.
## Example filename: preprocessing/PA14_exoUTY/outputs/*classify_*/*_filtered.tsv.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: ictv_taxonomy.
## Starting ictv_accession.
## Example filename: preprocessing/PA14_exoUTY/outputs/*classify_*/*_filtered.tsv.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: ictv_accession.
## Starting ictv_genus.
## Example filename: preprocessing/PA14_exoUTY/outputs/*classify_*/*_filtered.tsv.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: ictv_genus.
## Starting notes.
## Example filename: preprocessing/PA14_exoUTY/notes.txt.
## The first filename does not exist, assuming this method was not performed.
## Not including new entries for: notes.
## Writing new metadata to: sample_sheets/all_samples_modified.xlsx
## Deleting the file sample_sheets/all_samples_modified.xlsx before writing the tables.
knitr::kable(extract_metadata("sample_sheets/all_samples_modified.xlsx"))
## Did not find the condition column in the sample sheet.
## Filling it in as undefined.
## Did not find the batch column in the sample sheet.
## Filling it in as undefined.
rownames assemblyfastant assemblygenbankannotated assemblygenbankstripped assemblycdsaminoacids assemblycdsnucleotides assemblygff assemblytsv assemblyxls inputr1 inputr2 trimomaticinput trimomaticoutput trimomaticpercent hisatgenomesingleconcordant hisatgenomemulticoncordant hisatgenomesingleall hisatgenomemultiall hisatcounttable jellyfishcounttable jellyfishobserved possiblehostspecies phastafnumhits phagetermdtrlength prodigalpositivestrand prodigalnegativestrand glimmerpositivestrand glimmernegativestrand phanotatepositivestrand phanotatenegativestrand finalgccontent interprosignalphits interprophobiushits interpropfamhits interprotmhmmhits interprocddhits interprosmarthits interprogene3dhits interprosuperfamilyhits condition batch
PA14_exoUTY PA14_exoUTY 0 0 4706372 4350712 0.924 4280240 25722 34468 25722 preprocessing/PA14_exoUTY/outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome-paired_sreverse_all_Alias.count.xz 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 undefined undefined
PA14_JC PA14_JC 0 0 5786839 5336197 0.922 5275687 32239 23521 32239 preprocessing/PA14_JC/outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome-paired_sreverse_all_Alias.count.xz 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 undefined undefined
PA14_lux PA14_lux 0 0 6622570 6099776 0.921 6028065 36827 24917 36827 preprocessing/PA14_lux/outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome-paired_sreverse_all_Alias.count.xz 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 undefined undefined
PA14_NBH PA14_NBH 0 0 5151127 4581433 0.889 4516421 26915 32560 26915 preprocessing/PA14_NBH/outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome-paired_sreverse_all_Alias.count.xz 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 undefined undefined
PA14_pscD_A5 PA14_pscD_A5 0 0 5898210 5417082 0.918 5359077 32852 21806 32852 preprocessing/PA14_pscD_A5/outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome-paired_sreverse_all_Alias.count.xz 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 undefined undefined
PA14_pscdD_E4 PA14_pscdD_E4 0 0 0 0 NaN 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 undefined undefined
PA14_xcp PA14_xcp 0 0 5683132 5214875 0.918 5134054 30352 39479 30352 preprocessing/PA14_xcp/outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome-paired_sreverse_all_Alias.count.xz 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 undefined undefined
PA14_xcp_pscD PA14_xcp_pscD 0 0 2026150 1514509 0.747 1471930 10238 27094 10238 preprocessing/PA14_xcp_pscD/outputs/40hisat2_paeruginosa_pa14/paeruginosa_pa14_genome-paired_sreverse_all_Alias.count.xz 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 undefined undefined
PAK PAK 0 0 4779558 4318745 0.904 4049183 1093 179265 1093 preprocessing/PAK/outputs/40hisat2_paeruginosa_pak/paeruginosa_pak_genome-paired_sreverse_all_locus_tag.count.xz 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 undefined undefined
PAK_pscC PAK_pscC 0 0 5734960 5271470 0.919 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 undefined undefined
PAK_xcp PAK_xcp 0 0 4843414 4443669 0.917 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 undefined undefined
PAK_xcp_pscC PAK_xcp_pscC 0 0 5195158 4611474 0.888 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 undefined undefined

Lets go one small step further. I have a series of modified genomes as well as the reference. We can do a quickie tree of them: First I will copy each modified genome to the tree/ directory and rename them to the sampleID.

start=$(pwd)
mkdir tree
cd preprocessing
for i in $(/bin/ls -d PA*); do
    cp $i/outputs/50*/modified.fasta ${start}/tree/${i}.fasta
done
cp ~/libraries/genome/paeruginosa_pa14.fa ${start}/tree
cp ~/libraries/genome/paeruginosa_pak.fa ${start}/tree

Oh, it turns out that at the time of this writing, I forgot to run 3 samples, so this section will need to be redone. But I can at least run it for the samples that I didn’t forget.

funkytown <- genomic_sequence_phylo("tree", root = "paeruginosa_pa14")
## Reading tree/PA14_exoUTY.fasta
## Reading tree/PA14_JC.fasta
## Reading tree/PA14_lux.fasta
## Reading tree/PA14_NBH.fasta
## Reading tree/PA14_pscD_A5.fasta
## Reading tree/PA14_pscD_E4.fasta
## Reading tree/PA14_xcp_pscD.fasta
## Reading tree/paeruginosa_pa14.fasta
## Reading tree/paeruginosa_pak.fasta
## Reading tree/PAK.fasta
plot(funkytown$phy)

pander::pander(sessionInfo())

R version 4.2.0 (2022-04-22)

Platform: x86_64-pc-linux-gnu (64-bit)

locale: LC_CTYPE=en_US.UTF-8, LC_NUMERIC=C, LC_TIME=en_US.UTF-8, LC_COLLATE=en_US.UTF-8, LC_MONETARY=en_US.UTF-8, LC_MESSAGES=en_US.UTF-8, LC_PAPER=en_US.UTF-8, LC_NAME=C, LC_ADDRESS=C, LC_TELEPHONE=C, LC_MEASUREMENT=en_US.UTF-8 and LC_IDENTIFICATION=C

attached base packages: stats4, stats, graphics, grDevices, utils, datasets, methods and base

other attached packages: hpgltools(v.1.0), testthat(v.3.1.7), reticulate(v.1.28), SummarizedExperiment(v.1.28.0), GenomicRanges(v.1.50.2), GenomeInfoDb(v.1.34.9), IRanges(v.2.32.0), S4Vectors(v.0.36.2), MatrixGenerics(v.1.10.0), matrixStats(v.0.63.0), Biobase(v.2.58.0) and BiocGenerics(v.0.44.0)

loaded via a namespace (and not attached): rappdirs(v.0.3.3), rtracklayer(v.1.58.0), tidyr(v.1.3.0), ggplot2(v.3.4.2), clusterGeneration(v.1.3.7), bit64(v.4.0.5), knitr(v.1.42), DelayedArray(v.0.24.0), data.table(v.1.14.8), KEGGREST(v.1.38.0), RCurl(v.1.98-1.12), doParallel(v.1.0.17), generics(v.0.1.3), GenomicFeatures(v.1.50.4), callr(v.3.7.3), RhpcBLASctl(v.0.23-42), cowplot(v.1.1.1), usethis(v.2.1.6), RSQLite(v.2.3.1), shadowtext(v.0.1.2), bit(v.4.0.5), enrichplot(v.1.18.3), xml2(v.1.3.3), httpuv(v.1.6.9), viridis(v.0.6.2), xfun(v.0.38), hms(v.1.1.3), jquerylib(v.0.1.4), evaluate(v.0.20), promises(v.1.2.0.1), fansi(v.1.0.4), restfulr(v.0.0.15), progress(v.1.2.2), caTools(v.1.18.2), dbplyr(v.2.3.2), igraph(v.1.4.1), DBI(v.1.1.3), htmlwidgets(v.1.6.2), purrr(v.1.0.1), ellipsis(v.0.3.2), dplyr(v.1.1.1), backports(v.1.4.1), annotate(v.1.76.0), aod(v.1.3.2), biomaRt(v.2.54.1), vctrs(v.0.6.1), remotes(v.2.4.2), cachem(v.1.0.7), withr(v.2.5.0), ggforce(v.0.4.1), HDO.db(v.0.99.1), GenomicAlignments(v.1.34.1), treeio(v.1.22.0), prettyunits(v.1.1.1), kmer(v.1.1.2), DOSE(v.3.24.2), ape(v.5.7-1), lazyeval(v.0.2.2), crayon(v.1.5.2), genefilter(v.1.80.3), edgeR(v.3.40.2), pkgconfig(v.2.0.3), tweenr(v.2.0.2), nlme(v.3.1-162), pkgload(v.1.3.2), devtools(v.2.4.5), rlang(v.1.1.0), lifecycle(v.1.0.3), miniUI(v.0.1.1.1), downloader(v.0.4), filelock(v.1.0.2), BiocFileCache(v.2.6.1), rprojroot(v.2.0.3), polyclip(v.1.10-4), graph(v.1.76.0), Matrix(v.1.5-4), aplot(v.0.1.10), boot(v.1.3-28.1), processx(v.3.8.0), png(v.0.1-8), viridisLite(v.0.4.1), rjson(v.0.2.21), bitops(v.1.0-7), gson(v.0.1.0), KernSmooth(v.2.23-20), pander(v.0.6.5), Biostrings(v.2.66.0), blob(v.1.2.4), phylogram(v.2.1.0), stringr(v.1.5.0), qvalue(v.2.30.0), remaCor(v.0.0.11), gridGraphics(v.0.5-1), scales(v.1.2.1), memoise(v.2.0.1), GSEABase(v.1.60.0), magrittr(v.2.0.3), plyr(v.1.8.8), gplots(v.3.1.3), zlibbioc(v.1.44.0), compiler(v.4.2.0), scatterpie(v.0.1.8), BiocIO(v.1.8.0), RColorBrewer(v.1.1-3), lme4(v.1.1-32), Rsamtools(v.2.14.0), cli(v.3.6.1), XVector(v.0.38.0), urlchecker(v.1.0.1), patchwork(v.1.1.2), ps(v.1.7.4), MASS(v.7.3-58.3), mgcv(v.1.8-41), tidyselect(v.1.2.0), stringi(v.1.7.12), highr(v.0.10), yaml(v.2.3.7), GOSemSim(v.2.24.0), locfit(v.1.5-9.7), ggrepel(v.0.9.3), grid(v.4.2.0), sass(v.0.4.5), fastmatch(v.1.1-3), tools(v.4.2.0), parallel(v.4.2.0), rstudioapi(v.0.14), foreach(v.1.5.2), gridExtra(v.2.3), farver(v.2.1.1), ggraph(v.2.1.0), digest(v.0.6.31), shiny(v.1.7.4), Rcpp(v.1.0.10), broom(v.1.0.4), later(v.1.3.0), httr(v.1.4.5), AnnotationDbi(v.1.60.2), Rdpack(v.2.4), colorspace(v.2.1-0), brio(v.1.1.3), XML(v.3.99-0.14), fs(v.1.6.1), splines(v.4.2.0), yulab.utils(v.0.0.6), PROPER(v.1.30.0), tidytree(v.0.4.2), graphlayouts(v.0.8.4), ggplotify(v.0.1.0), plotly(v.4.10.1), sessioninfo(v.1.2.2), xtable(v.1.8-4), jsonlite(v.1.8.4), nloptr(v.2.0.3), ggtree(v.3.6.2), tidygraph(v.1.2.3), ggfun(v.0.0.9), R6(v.2.5.1), RUnit(v.0.4.32), profvis(v.0.3.7), pillar(v.1.9.0), htmltools(v.0.5.5), mime(v.0.12), glue(v.1.6.2), fastmap(v.1.1.1), minqa(v.1.2.5), clusterProfiler(v.4.6.2), BiocParallel(v.1.32.6), codetools(v.0.2-19), fgsea(v.1.24.0), pkgbuild(v.1.4.0), mvtnorm(v.1.1-3), utf8(v.1.2.3), lattice(v.0.20-45), bslib(v.0.4.2), tibble(v.3.2.1), sva(v.3.46.0), pbkrtest(v.0.5.2), curl(v.5.0.0), gtools(v.3.9.4), zip(v.2.2.2), GO.db(v.3.16.0), openxlsx(v.4.2.5.2), survival(v.3.5-5), limma(v.3.54.2), rmarkdown(v.2.21), desc(v.1.4.2), munsell(v.0.5.0), GenomeInfoDbData(v.1.2.9), iterators(v.1.0.14), variancePartition(v.1.28.9), reshape2(v.1.4.4), gtable(v.0.3.3) and rbibutils(v.2.2.13)

message("This is hpgltools commit: ", get_git_commit())
## If you wish to reproduce this exact build of hpgltools, invoke the following:
## > git clone http://github.com/abelew/hpgltools.git
## > git reset 367a6c7f6eb2f7364d1dc34f49e28f6a538747ec
## This is hpgltools commit: Mon Apr 17 16:38:05 2023 -0400: 367a6c7f6eb2f7364d1dc34f49e28f6a538747ec
this_save <- paste0(gsub(pattern = "\\.Rmd", replace = "", x = rmd_file), "-v", ver, ".rda.xz")
message("Saving to ", this_save)
## Saving to index-v20230420.rda.xz
tmp <- sm(saveme(filename = this_save))
LS0tCnRpdGxlOiAiUXVlcnlpbmcgYSBzZXQgb2YgUHNldWRvbW9uYXMgc3RyYWlucy4iCmF1dGhvcjogImF0YiBhYmVsZXdAZ21haWwuY29tIgpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiCm91dHB1dDoKICBodG1sX2RvY3VtZW50OgogICAgY29kZV9kb3dubG9hZDogdHJ1ZQogICAgY29kZV9mb2xkaW5nOiBzaG93CiAgICBmaWdfY2FwdGlvbjogdHJ1ZQogICAgZmlnX2hlaWdodDogNwogICAgZmlnX3dpZHRoOiA3CiAgICBoaWdobGlnaHQ6IHplbmJ1cm4KICAgIGtlZXBfbWQ6IGZhbHNlCiAgICBtb2RlOiBzZWxmY29udGFpbmVkCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUKICAgIHNlbGZfY29udGFpbmVkOiB0cnVlCiAgICB0aGVtZTogcmVhZGFibGUKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OgogICAgICBjb2xsYXBzZWQ6IGZhbHNlCiAgICAgIHNtb290aF9zY3JvbGw6IGZhbHNlCiAgcm1kZm9ybWF0czo6cmVhZHRoZWRvd246CiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlCiAgICBjb2RlX2ZvbGRpbmc6IHNob3cKICAgIGRmX3ByaW50OiBwYWdlZAogICAgZmlnX2NhcHRpb246IHRydWUKICAgIGZpZ19oZWlnaHQ6IDcKICAgIGZpZ193aWR0aDogNwogICAgaGlnaGxpZ2h0OiB6ZW5idXJuCiAgICB3aWR0aDogMzAwCiAgICBrZWVwX21kOiBmYWxzZQogICAgbW9kZTogc2VsZmNvbnRhaW5lZAogICAgdG9jX2Zsb2F0OiB0cnVlCiAgQmlvY1N0eWxlOjpodG1sX2RvY3VtZW50OgogICAgY29kZV9kb3dubG9hZDogdHJ1ZQogICAgY29kZV9mb2xkaW5nOiBzaG93CiAgICBmaWdfY2FwdGlvbjogdHJ1ZQogICAgZmlnX2hlaWdodDogNwogICAgZmlnX3dpZHRoOiA3CiAgICBoaWdobGlnaHQ6IHplbmJ1cm4KICAgIGtlZXBfbWQ6IGZhbHNlCiAgICBtb2RlOiBzZWxmY29udGFpbmVkCiAgICB0b2NfZmxvYXQ6IHRydWUKLS0tCgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgpib2R5LCB0ZCB7CiAgZm9udC1zaXplOiAxNnB4Owp9CmNvZGUucnsKICBmb250LXNpemU6IDE2cHg7Cn0KcHJlIHsKIGZvbnQtc2l6ZTogMTZweAp9Cjwvc3R5bGU+CgpgYGB7ciBvcHRpb25zLCBpbmNsdWRlPUZBTFNFfQpsaWJyYXJ5KGhwZ2x0b29scykKbGlicmFyeShyZXRpY3VsYXRlKQp0dCA8LSBkZXZ0b29sczo6bG9hZF9hbGwoIn4vaHBnbHRvb2xzIikKa25pdHI6Om9wdHNfa25pdCRzZXQoCiAgd2lkdGggPSAxMjAsIHByb2dyZXNzID0gVFJVRSwgdmVyYm9zZSA9IFRSVUUsIGVjaG8gPSBUUlVFKQprbml0cjo6b3B0c19jaHVuayRzZXQoZXJyb3IgPSBUUlVFLCBkcGkgPSA5NikKbHVhX2ZpbHRlcnMgPC0gcm1hcmtkb3duOjpwYW5kb2NfbHVhX2ZpbHRlcl9hcmdzKCJwYW5kb2Mtem90eHQubHVhIikKb2xkX29wdGlvbnMgPC0gb3B0aW9ucygKICBkaWdpdHMgPSA0LCBzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UsIGtuaXRyLmR1cGxpY2F0ZS5sYWJlbCA9ICJhbGxvdyIpCmdncGxvdDI6OnRoZW1lX3NldChnZ3Bsb3QyOjp0aGVtZV9idyhiYXNlX3NpemUgPSAxMCkpCnJ1bmRhdGUgPC0gZm9ybWF0KFN5cy5EYXRlKCksIGZvcm1hdCA9ICIlWSVtJWQiKQpwcmV2aW91c19maWxlIDwtICIiCnZlciA8LSBmb3JtYXQoU3lzLkRhdGUoKSwgIiVZJW0lZCIpCgojI3RtcCA8LSBzbShsb2FkbWUoZmlsZW5hbWU9cGFzdGUwKGdzdWIocGF0dGVybj0iXFwuUm1kIiwgcmVwbGFjZT0iIiwgeD1wcmV2aW91c19maWxlKSwgIi12IiwgdmVyLCAiLnJkYS54eiIpKSkKcm1kX2ZpbGUgPC0gImluZGV4LlJtZCIKYGBgCgojIEludHJvZHVjdGlvbgoKVGhpcyBkb2N1bWVudCBzZWVrcyB0byBsYXkgb3V0IG15IHByb2Nlc3MgaW4gcG9raW5nIGF0IHRoZQpETkFzZXF1ZW5jaW5nIHJlc3VsdHMgb2YgYSBzZXJpZXMgb2YgUHNldWRvbW9uYXMgYWVydWdpbm9zYSBQQTE0IGFuZApQQUsgc3RyYWlucy4KCklmIEkgdW5kZXJzdGFuZCBEci4gTGVlIGFuZCBjby4ncyBnb2FsLCB0aGV5IHdpc2ggdG8gZW5zdXJlIHRoYXQgdGhlc2UKc3RyYWlucyBhcmUgc3RpbGwgcmVhc29uYWJseSBjbG9zZSB0byB0aGUgYXNzb2NpYXRlZCByZWZlcmVuY2UKc3RyYWlucy4gIEkgdGhlcmVmb3JlIGFtIHJ1bm5pbmcgbXkgZGVmYXVsdCB0cmltbWluZy9tYXBwaW5nL3ZhcmlhbnQKc2VhcmNoIG1ldGhvZHMuCgpJIGhhdmUgYSBzaW5nbGUgY29tbWFuZCB0aGF0IGNhbiBydW4gYWxsIG9mIHRoZXNlIGNvbW1hbmRzIGF0IHRoZSBzYW1lCnRpbWUsIGJ1dCBJIGhhdmUgYmVlbiBhY3RpdmVseSBicmVha2luZyBteSB0b29scyByZWNlbnRseTsgc28gSQpkZWNpZGVkIHRvIHJ1biB0aGVtIG9uZSBhdCBhIHRpbWUgd2l0aCB0aGUgYXNzdW1wdGlvbiB0aGF0IHNvbWV0aGluZwp3b3VsZCBub3Qgd29yayAoYnV0IGV2ZXJ5dGhpbmcgZGlkIHdvcmsgb24gdGhlIGZpcnN0IHRyeSwgc28gdGhhdCB3YXMgbmljZSkuCgojIyBEb3dubG9hZGluZyBhbmQgc29ydGluZyB0aGUgZGF0YQoKSSBkb3dubG9hZGVkIHRoZSAuemlwIGFyY2hpdmUgZmlsZSB1c2luZyB0aGUgbGluayBpbiBEci4gTGVlJ3MgZW1haWwuCkkgZGlkIG5vdCBzYXZlIGl0IHRob3VnaCwgc28gaWYgd2UgbmVlZCB0byBkb3dubG9hZCB0aGUgZGF0YSBhZ2Fpbiwgd2UKd2lsbCBoYXZlIHRvIGdvIHRvIGhpbS4gIEkgY3JlYXRlZCBteSB1c3VhbCB3b3JrIGRpcmVjdG9yeQoncHJlcHJvY2Vzc2luZy8nIHdpdGhpbiB0aGlzIHRyZWUgYW5kIG1vdmVkIGl0IHRoZXJlLiAgSSB1bnppcHBlZCBpdAphbmQgbW92ZWQgZWFjaCBwYWlyIG9mIHJlYWRzIHRvIGEgZGlyZWN0b3J5IHdoaWNoIGZvbGxvd3MgRHIuIExlZSdzCmRlc2lyZWQgbmFtaW5nIGNvbnZlbnRpb24uCgpJIHRoZW4gY3JlYXRlZCB0aGUgZGlyZWN0b3JpZXM6ICdyZWZlcmVuY2UvJyBhbmQgJ3NhbXBsZV9zaGVldHMvJy4KVGhlIHNhbXBsZV9zaGVldHMgcmVtYWluZWQgZW1wdHkgZm9yIGEgd2hpbGUsIGJ1dCBJIGltbWVkaWF0ZWx5CmRvd25sb2FkZWQgdGhlIF9mdWxsXyBnZW5iYW5rIGZsYXQgZmlsZSBmb3IgdGhlIFBzZXVkb21vbmFzIFBBSyBzdHJhaW4KZnJvbSBOQ0JJLCBmb3VuZCBoZXJlOgoKaHR0cHM6Ly93d3cubmNiaS5ubG0ubmloLmdvdi9udWNjb3JlL05aX0NQMDIwNjU5CgpOb3RlLCB0aGF0IHdoZW4gZG93bmxvYWRpbmcsIG9uZSBtdXN0IGhpdCB0aGUgJ2N1c3RvbWl6ZSB2aWV3JyBidXR0b24Kb24gdGhlIHJpZ2h0IGFuZCBlbnN1cmUgdGhhdCB0aGUgZW50aXJlIHNlcXVlbmNlIGFuZCBhbGwgYW5ub3RhdGlvbnMKYXJlIGluY2x1ZGVkLiAgVGhlbiBoaXQgdGhlICdzZW5kIHRvJyBidXR0b24gYW5kIHNlbmQgaXQgdG8gYSBmaWxlLgpUaGlzIGZpbGUgSSBjb3BpZWQgdG8gcmVmZXJlbmNlL3BhZXJ1Z2lub3NhX3Bhay5nYi4KCiMjIENyZWF0aW9uIG9mIHRoZSBwYWsgcmVmZXJlbmNlCgpHaXZlbiB0aGUgZnVsbCBQQUsgZ2VuYmFuayBmaWxlLCBJIGNvbnZlcnRlZCBpdCB0byB0aGUgZXhwZWN0ZWQKZmFzdGEvZ2ZmIGZpbGUgZm9yIG1hcHBpbmc6CgpgYGB7YmFzaCBjb252ZXJ0X2diLCBldmFsPUZBTFNFfQpjZCByZWZlcmVuY2UKY3lvYSAtLW1ldGhvZCBnYjJnZmYgLS1pbnB1dCBwYWVydWdpbm9zYV9wYWsuZ2IKYGBgCgpUaGlzIGNvbW1hbmQgY3JlYXRlZCBhIHNlcmllcyBvZiBmYXN0YSBhbmQgZ2ZmIGZpbGVzIHdoaWNoIHByb3ZpZGUgdGhlCmNvb3JkaW5hdGVzIGZvciB0aGUgdmFyaW91cyBhbm5vdGF0aW9ucyAoZ2VuZXMvY2RzL3JSTkEvaW50ZXJjZHMpIGFuZApzZXF1ZW5jZSBmb3IgdGhlIGdlbm9tZSwgQ0RTIG51Y2xlb3RpZGVzLCBhbmQgYW1pbm8gYWNpZHMuICBJIHRoZW4KY29waWVkIHRoZSBnZW5vbWUvZ2ZmIGZpbGVzIHRvIG15IGdsb2JhbCByZWZlcmVuY2UgZGlyZWN0b3J5IGFuZApwcmVwYXJlZCBpdCBmb3IgdXNhZ2UgYnkgbXkgZmF2b3JpdGUgbWFwcGVyOgoKYGBge2Jhc2ggaW5kZXhfcGFrLCBldmFsPUZBTFNFfQpjZCB+L2xpYnJhcmllcy9nZW5vbWUKY3lvYSAtLW1ldGhvZCBpbmRleGhpc2F0IC0tc3BlY2llcyBwYWVydWdpbm9zYV9wYWsKYGBgCgpOb3cgYWxsIG9mIHRoZSBwaWVjZXMgYXJlIGluIHBsYWNlIGZvciBtZSB0byBwbGF5LiAgRWFjaCBvZiB0aGUKZm9sbG93aW5nIHN0ZXBzIHdhcyBwZXJmb3JtZWQgdHdpY2UsIG9uY2UgZm9yIHRoZSBQQTE0IHNhbXBsZXMsIG9uY2UKZm9yIHRoZSBQQUsgc2FtcGxlcy4gIFRoZSBvbmx5IGRpZmZlcmVuY2UgaW4gdGhlIGludm9jYXRpb25zIHdhcyBkdWUKdG8gdGhlIGZhY3QgdGhhdCB0aGUgUEFLIGFubm90YXRpb25zIHByb3ZpZGUgZGlmZmVyZW50IHRhZ3MuICBFLmcuIEkKdXNlZCB0aGUgJ0FsaWFzJyB0YWcgZm9yIFBBMTQgYW5kIHRoZSAnbG9jdXNfdGFnJyB0YWcgZm9yIFBBSy4gIEFzIGEKcmVzdWx0IEkgYW0gb25seSBnb2luZyB0byB3cml0ZSBkb3duIGluIHRoaXMgZG9jdW1lbnQgdGhlIFBBMTQKaW52b2NhdGlvbnMgYW5kIGFzc3VtZSB0aGUgcmVhZGVyIGNhbiBmaWd1cmUgb3V0IHRoZSBkaWZmZXJlbmNlLgoKIyMgVHJpbW1pbmcKCkkgaGF2ZSBhIGNvdXBsZSBvZiB0cmltbWluZyBtZXRob2RzLCBpbiB0aGlzIGluc3RhbmNlIEkganVzdCB1c2VkIHRoZQpkZWZhdWx0IGFuZCB3aWxsIG9wZXJhdGUgdW5kZXIgdGhlIGFzc3VtcHRpb24gdGhhdCBpdCBpcyBzdWZmaWNpZW50CnVudGlsIEkgc2VlIG90aGVyd2lzZS4KCmBgYHtiYXNoIGN5b2FfdHJpbSwgZXZhbD1GQUxTRX0KY2QgcHJlcHJvY2Vzc2luZwpzdGFydD0kKHB3ZCkKZm9yIGkgaW4gJCgvYmluL2xzIC1kIFBBMTQqKTsgZG8KICAgIGNkICRpCiAgICBjeW9hIC0tbWV0aG9kIHRyaW0gLS1pbnB1dCAkKC9iaW4vbHMgKi5mYXN0cS5neiB8IHRyICdcbicgJzonIHwgc2VkICdzLzokLy9nJykKICAgIGNkICRzdGFydApkb25lCmBgYAoKVGhlIGFib3ZlIGNvbW1hbmQgbGluZSBpbnZvY2F0aW9uIHByb2R1Y2VkIGEgc2VyaWVzIG9mIHRyaW1taW5nIGpvYnMKd2hpY2ggd2hlbiBleGFtaW5lZCBsb29rIGxpa2UgdGhpcyAoSSBhbSBvbmx5IHNob3dpbmcgZXhhbXBsZXMgZnJvbQpQQTE0X2V4b1VUWSwgYW5kIGFtIGxlYXZpbmcgb2ZmIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCkuCgojIyMgUmVzdWx0aW5nIHRyaW1tZXIgc2NyaXB0CgpgYGB7YmFzaCB0cmltb21hdGljLCBldmFsPUZBTFNFfQojIyBUaGlzIGlzIGEgcG9ydGlvbiBvZiBmaWxlOgojIyAgcHJlcHJvY2Vzc2luZy9QQTE0X2V4b1VUWS9zY3JpcHRzLzAxdHJpbV83X1VUWV9TMTM4X1IxXzAwMS5zaAoKbW9kdWxlIGFkZCB0cmltb21hdGljCm1rZGlyIC1wIG91dHB1dHMvMDF0cmltb21hdGljCiMjIE5vdGUgdGhhdCB0cmltb21hdGljIHByaW50cyBhbGwgb3V0cHV0IGFuZCBlcnJvcnMgdG8gU1RERVJSLCBzbyBzZW5kIGJvdGggdG8gb3V0cHV0CnRyaW1tb21hdGljIFBFIFwKICAtdGhyZWFkcyAxIFwKICAtcGhyZWQzMyBcCiAgN19VVFlfUzEzOF9SMV8wMDEuZmFzdHEuZ3ogN19VVFlfUzEzOF9SMl8wMDEuZmFzdHEuZ3ogXAogIDdfVVRZX1MxMzhfUjFfMDAxLXRyaW1tZWRfcGFpcmVkLmZhc3RxIDdfVVRZX1MxMzhfUjFfMDAxLXRyaW1tZWRfdW5wYWlyZWQuZmFzdHEgXAogIDdfVVRZX1MxMzhfUjJfMDAxLXRyaW1tZWRfcGFpcmVkLmZhc3RxIDdfVVRZX1MxMzhfUjJfMDAxLXRyaW1tZWRfdW5wYWlyZWQuZmFzdHEgXAogICBJTExVTUlOQUNMSVA6L2ZzL2NiY2Itc29mdHdhcmUvUmVkSGF0LTgteDg2XzY0L2xvY2FsL2N5b2EvMjAyMzAyL3ByZWZpeC9saWIvcGVybDUvYXV0by9zaGFyZS9kaXN0L0Jpby1BZHZlbnR1cmUvZ2Vub21lL2FkYXB0ZXJzLmZhOjI6MjA6MTA6MjprZWVwQm90aFJlYWRzICBcCiAgU0xJRElOR1dJTkRPVzo0OjIwIE1JTkxFTjo1MCBcCiAgMT5vdXRwdXRzLzAxdHJpbW9tYXRpYy83X1VUWV9TMTM4X1IxXzAwMS10cmltb21hdGljLnN0ZG91dCBcCiAgMj5vdXRwdXRzLzAxdHJpbW9tYXRpYy83X1VUWV9TMTM4X1IxXzAwMS10cmltb21hdGljLnN0ZGVycgpleGNlcHRlZD0kKCB7IGdyZXAgIkV4Y2VwdGlvbiIgIm91dHB1dHMvMDF0cmltb21hdGljLzdfVVRZX1MxMzhfUjFfMDAxLXRyaW1vbWF0aWMuc3Rkb3V0IiB8fCB0ZXN0ICQ/ID0gMTsgfSApCmBgYAoKT25lIHRoaW5nIEkgZGlkIG5vdCBpbmNsdWRlIGluIHRoZSBhYm92ZTogdXBvbiBjb21wbGV0aW9uLCB0aGUgc2NyaXB0CmFnZ3Jlc3NpdmVseSBjb21wcmVzc2VzIHRoZSB0cmltbWVkIG91dHB1dCBhbmQgc3ltYm9saWNhbGx5IGxpbmtzIGl0CnRvIHIxX3RyaW1tZWQuZmFzdHEueHogYW5kIHIyX3RyaW1tZWQuZmFzdHEueHouICBUaHVzIGFueSBmb2xsb3dpbmcKc3RlcHMgY2FuIHVzZSB0aGUgc2FtZSBpbnB1dCBuYW1lIChyMV90cmltbWVkLmZhc3RxLnh6OnIyX3RyaW1tZWQuZmFzdHEueHopLgoKIyMgTWFwcGluZwoKTXkgZGVmYXVsdCBtYXBwZXJzIHJ1biB0aGUgYWN0dWFsIGFsaWdubWVudCwgY29udmVydCBpdCB0byBhCmNvbXByZXNzZWQvaW5kZXhlZCBiYW0sIGFuZCBjb3VudCBpdCBhZ2FpbnN0IHRoZSByZWZlcmVuY2UgZ2Vub21lLiAgSW4KdGhpcyBjb250ZXh0LCB0aGUgY291bnRpbmcgaXMgYSBsaXR0bGUgc2lsbHksIGJ1dCBkb2VzIGhhdmUgdGhlCnBvdGVudGlhbCB0byBoZWxwIGZpbmQgZHVwbGljYXRpb25zIGFuZCBzdWNoLgoKCmBgYHtiYXNoIGhpc2F0X2N5b2EsIGV2YWw9RkFMU0V9CmNkIHByZXByb2Nlc3NpbmcKc3RhcnQ9JChwd2QpCmZvciBpIGluICQoL2Jpbi9scyAtZCBQQTE0Kik7IGRvCiAgICBjZCAkaQogICAgY3lvYSAtLW1ldGhvZCBoaXNhdCAtLWlucHV0IHIxX3RyaW1tZWQuZmFzdHEueHo6cjJfdHJpbW1lZC5mYXN0cS54eiBcCiAgICAgICAgIC0tc3BlY2llcyBwYWVydWdpbm9zYV9wYTE0IC0tZ2ZmX3R5cGUgZ2VuZSAtLWdmZl90YWcgQWxpYXMKICAgIGNkICRzdGFydApkb25lCgojIyBIZXJlIGlzIHdoYXQgSSByYW4gZm9yIFBBSwpjZCBwcmVwcm9jZXNzaW5nCnN0YXJ0PSQocHdkKQpmb3IgaSBpbiAkKC9iaW4vbHMgLWQgUEFLKik7IGRvCiAgICBjZCAkaQogICAgY3lvYSAtLW1ldGhvZCBoaXNhdCAtLWlucHV0IHIxX3RyaW1tZWQuZmFzdHEueHo6cjJfdHJpbW1lZC5mYXN0cS54eiBcCiAgICAgICAgIC0tc3BlY2llcyBwYWVydWdpbm9zYV9wYWsgLS1nZmZfdHlwZSBnZW5lIC0tZ2ZmX3RhZyBsb2N1c190YWcKICAgIGNkICRzdGFydApkb25lCmBgYAoKIyMjIFRoZSByZXN1bHRpbmcgbWFwcGVyIHNjcmlwdCBydW4gYnkgdGhlIGNsdXN0ZXIKClNpbWlsYXJseSwgSSBhbSBqdXN0IHB1dHRpbmcgdGhlIG1lYXR5IHBhcnQuCgpgYGB7YmFzaCBoaXNhdF9tYXBwZXIsIGV2YWw9RkFMU0V9Cm1vZHVsZSBhZGQgaGlzYXQyIHNhbXRvb2xzIGh0c2VxIGJhbXRvb2xzCm1rZGlyIC1wIG91dHB1dHMvNDBoaXNhdDJfcGFlcnVnaW5vc2FfcGExNApoaXNhdDIgLXggJHtIT01FfS9saWJyYXJpZXMvZ2Vub21lL2luZGV4ZXMvcGFlcnVnaW5vc2FfcGExNCAgXAogIC1wIDggXAogIC1xICAgLTEgPChsZXNzIC9ob21lL3RyZXkvc3NoZnMvc2NyYXRjaC9hdGIvZG5hc2VxL3BhZXJ1Z2lub3NhX3N0cmFpbnNfMjAyMzA0L3ByZXByb2Nlc3NpbmcvUEExNF9leG9VVFkvcjFfdHJpbW1lZC5mYXN0cS54eikgLTIgPChsZXNzIC9ob21lL3RyZXkvc3NoZnMvc2NyYXRjaC9hdGIvZG5hc2VxL3BhZXJ1Z2lub3NhX3N0cmFpbnNfMjAyMzA0L3ByZXByb2Nlc3NpbmcvUEExNF9leG9VVFkvcjJfdHJpbW1lZC5mYXN0cS54eikgIFwKICAtLXBocmVkMzMgXAogIC0tdW4gb3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L3VuYWxkaXNfcGFlcnVnaW5vc2FfcGExNF9nZW5vbWUuZmFzdHEgXAogIC0tYWwgb3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L2FsZGlzX3BhZXJ1Z2lub3NhX3BhMTRfZ2Vub21lLmZhc3RxIFwKICAtLXVuLWNvbmMgb3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L3VuYWxjb25fcGFlcnVnaW5vc2FfcGExNF9nZW5vbWUuZmFzdHEgXAogIC0tYWwtY29uYyBvdXRwdXRzLzQwaGlzYXQyX3BhZXJ1Z2lub3NhX3BhMTQvYWxjb25fcGFlcnVnaW5vc2FfcGExNF9nZW5vbWUuZmFzdHEgXAogIC1TIG91dHB1dHMvNDBoaXNhdDJfcGFlcnVnaW5vc2FfcGExNC9wYWVydWdpbm9zYV9wYTE0X2dlbm9tZS5zYW0gXAogIDI+b3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L2hpc2F0Ml9wYWVydWdpbm9zYV9wYTE0X2dlbm9tZV9QQTE0X2V4b1VUWS5zdGRlcnIgXAogIDE+b3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L2hpc2F0Ml9wYWVydWdpbm9zYV9wYTE0X2dlbm9tZV9QQTE0X2V4b1VUWS5zdGRvdXQKYGBgCgojIyMgQ29udmVyc2lvbiB0byBiYW0gc2NyaXB0CgpUaGUgYWJvdmUgY3lvYSBpbnZvY2F0aW9uIGFsc28gY3JlYXRlcyB0aGlzIHNjcmlwdC4gIEl0IGlzIGEgbGl0dGxlCmxvbmcgYmVjYXVzZSBpdCBkb2VzIHNvbWUgY2hlY2tzIGFuZCBjcmVhdGVzIGEgY291cGxlIG9mIGZpbHRlcmVkCnZlcnNpb25zIG9mIHRoZSBvdXRwdXQuCgpgYGB7YmFzaCBzYW0yYmFtX3NjcmlwdCwgZXZhbD1GQUxTRX0KbW9kdWxlIGFkZCBzYW10b29scyBiYW10b29scwoKZWNobyAiU3RhcnRpbmcgc2FtdG9vbHMiCmlmIFtbIC1mICJvdXRwdXRzLzQwaGlzYXQyX3BhZXJ1Z2lub3NhX3BhMTQvcGFlcnVnaW5vc2FfcGExNF9nZW5vbWUuYmFtIiAmJiAtZiAib3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTRfZ2Vub21lLnNhbSIgXV07IHRoZW4KICBlY2hvICJCb3RoIHRoZSBiYW0gYW5kIHNhbSBmaWxlcyBleGlzdCwgcmVydW5uaW5nLiIKZWxpZiBbWyAtZiAib3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTRfZ2Vub21lLmJhbSIgXV07IHRoZW4KICBlY2hvICJUaGUgb3V0cHV0IGZpbGUgZXhpc3RzLCBxdWl0dGluZy4iCiAgZXhpdCAwCmVsaWYgW1sgISAtZiAib3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTRfZ2Vub21lLnNhbSIgXV07IHRoZW4KICBlY2hvICJDb3VsZCBub3QgZmluZCB0aGUgc2FtdG9vbHMgaW5wdXQgZmlsZS4iCiAgZXhpdCAxCmZpCgojIyBJZiBhIHByZXZpb3VzIHNvcnQgZmlsZSBleGlzdHMgZHVlIHRvIHJ1bm5pbmcgb3V0IG9mIG1lbW9yeSwKIyMgdGhlbiB3ZSBuZWVkIHRvIGdldCByaWQgb2YgdGhlbSBmaXJzdC4KIyMgaGczOF8xMDBfZ2Vub21lLXNvcnRlZC5iYW0udG1wLjAwMDAuYmFtCmlmIFtbIC1mICJvdXRwdXRzLzQwaGlzYXQyX3BhZXJ1Z2lub3NhX3BhMTQvcGFlcnVnaW5vc2FfcGExNF9nZW5vbWUuYmFtLnRtcC4wMDAuYmFtIiBdXTsgdGhlbgogIHJtIC1mIG91dHB1dHMvNDBoaXNhdDJfcGFlcnVnaW5vc2FfcGExNC9wYWVydWdpbm9zYV9wYTE0X2dlbm9tZS5iYW0udG1wLiouYmFtCmZpCnNhbXRvb2xzIHZpZXcgLXUgLXQgJHtIT01FfS9saWJyYXJpZXMvZ2Vub21lL3BhZXJ1Z2lub3NhX3BhMTQuZmFzdGEgXAogIC1TIG91dHB1dHMvNDBoaXNhdDJfcGFlcnVnaW5vc2FfcGExNC9wYWVydWdpbm9zYV9wYTE0X2dlbm9tZS5zYW0gLW8gb3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTRfZ2Vub21lLmJhbSAgXAogIDI+b3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTRfZ2Vub21lLmJhbV9zYW10b29scy5zdGRlcnIgXAogIDE+b3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTRfZ2Vub21lLmJhbV9zYW10b29scy5zdGRvdXQKCmVjaG8gIkZpcnN0IHNhbXRvb2xzIGNvbW1hbmQgZmluaXNoZWQgd2l0aCAkPyIKc2FtdG9vbHMgc29ydCAtbCA5IG91dHB1dHMvNDBoaXNhdDJfcGFlcnVnaW5vc2FfcGExNC9wYWVydWdpbm9zYV9wYTE0X2dlbm9tZS5iYW0gXAogIC1vIG91dHB1dHMvNDBoaXNhdDJfcGFlcnVnaW5vc2FfcGExNC9wYWVydWdpbm9zYV9wYTE0X2dlbm9tZS1zb3J0ZWQuYmFtIFwKICAyPj5vdXRwdXRzLzQwaGlzYXQyX3BhZXJ1Z2lub3NhX3BhMTQvcGFlcnVnaW5vc2FfcGExNF9nZW5vbWUuYmFtX3NhbXRvb2xzLnN0ZGVyciBcCiAgMT4+b3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTRfZ2Vub21lLmJhbV9zYW10b29scy5zdGRvdXQKcm0gb3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTRfZ2Vub21lLmJhbQpybSBvdXRwdXRzLzQwaGlzYXQyX3BhZXJ1Z2lub3NhX3BhMTQvcGFlcnVnaW5vc2FfcGExNF9nZW5vbWUuc2FtCm12IG91dHB1dHMvNDBoaXNhdDJfcGFlcnVnaW5vc2FfcGExNC9wYWVydWdpbm9zYV9wYTE0X2dlbm9tZS1zb3J0ZWQuYmFtIG91dHB1dHMvNDBoaXNhdDJfcGFlcnVnaW5vc2FfcGExNC9wYWVydWdpbm9zYV9wYTE0X2dlbm9tZS5iYW0Kc2FtdG9vbHMgaW5kZXggb3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTRfZ2Vub21lLmJhbSBcCiAgMj4+b3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTRfZ2Vub21lLmJhbV9zYW10b29scy5zdGRlcnIgXAogIDE+Pm91dHB1dHMvNDBoaXNhdDJfcGFlcnVnaW5vc2FfcGExNC9wYWVydWdpbm9zYV9wYTE0X2dlbm9tZS5iYW1fc2FtdG9vbHMuc3Rkb3V0CmVjaG8gIlNlY29uZCBzYW10b29scyBjb21tYW5kIGZpbmlzaGVkIHdpdGggJD8iCmJhbXRvb2xzIHN0YXRzIC1pbiBvdXRwdXRzLzQwaGlzYXQyX3BhZXJ1Z2lub3NhX3BhMTQvcGFlcnVnaW5vc2FfcGExNF9nZW5vbWUuYmFtIFwKICAyPj5vdXRwdXRzLzQwaGlzYXQyX3BhZXJ1Z2lub3NhX3BhMTQvcGFlcnVnaW5vc2FfcGExNF9nZW5vbWUuYmFtX3NhbXRvb2xzLnN0YXRzIDE+JjIKZWNobyAiQmFtdG9vbHMgZmluaXNoZWQgd2l0aCAkPyIKCiMjIFRoZSBmb2xsb3dpbmcgd2lsbCBmYWlsIGlmIHRoaXMgaXMgc2luZ2xlLWVuZGVkLgpzYW10b29scyB2aWV3IC1iIC1mIDIgXAogIC1vIG91dHB1dHMvNDBoaXNhdDJfcGFlcnVnaW5vc2FfcGExNC9wYWVydWdpbm9zYV9wYTE0X2dlbm9tZS1wYWlyZWQuYmFtIFwKICBvdXRwdXRzLzQwaGlzYXQyX3BhZXJ1Z2lub3NhX3BhMTQvcGFlcnVnaW5vc2FfcGExNF9nZW5vbWUuYmFtIFwKICAyPj5vdXRwdXRzLzQwaGlzYXQyX3BhZXJ1Z2lub3NhX3BhMTQvcGFlcnVnaW5vc2FfcGExNF9nZW5vbWUuYmFtX3NhbXRvb2xzLnN0ZGVyciBcCiAgMT4+b3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTRfZ2Vub21lLmJhbV9zYW10b29scy5zdGRvdXQKc2FtdG9vbHMgaW5kZXggb3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTRfZ2Vub21lLXBhaXJlZC5iYW0gXAogIDI+Pm91dHB1dHMvNDBoaXNhdDJfcGFlcnVnaW5vc2FfcGExNC9wYWVydWdpbm9zYV9wYTE0X2dlbm9tZS5iYW1fc2FtdG9vbHMuc3RkZXJyIFwKICAxPj5vdXRwdXRzLzQwaGlzYXQyX3BhZXJ1Z2lub3NhX3BhMTQvcGFlcnVnaW5vc2FfcGExNF9nZW5vbWUuYmFtX3NhbXRvb2xzLnN0ZG91dApiYW10b29scyBzdGF0cyAtaW4gb3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTRfZ2Vub21lLXBhaXJlZC5iYW0gXAogIDI+Pm91dHB1dHMvNDBoaXNhdDJfcGFlcnVnaW5vc2FfcGExNC9wYWVydWdpbm9zYV9wYTE0X2dlbm9tZS5iYW1fc2FtdG9vbHMuc3RhdHMgMT4mMgoKYmFtdG9vbHMgZmlsdGVyIC10YWcgWE06MCBcCiAgLWluIG91dHB1dHMvNDBoaXNhdDJfcGFlcnVnaW5vc2FfcGExNC9wYWVydWdpbm9zYV9wYTE0X2dlbm9tZS5iYW0gXAogIC1vdXQgb3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTRfZ2Vub21lLXNvcnRlZF9ub21pc21hdGNoLmJhbSBcCiAgMj4+b3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTRfZ2Vub21lLmJhbV9zYW10b29scy5zdGF0cyAxPiYyCmVjaG8gImJhbXRvb2xzIGZpbHRlciBmaW5pc2hlZCB3aXRoOiAkPyIKc2FtdG9vbHMgaW5kZXggXAogIG91dHB1dHMvNDBoaXNhdDJfcGFlcnVnaW5vc2FfcGExNC9wYWVydWdpbm9zYV9wYTE0X2dlbm9tZS1zb3J0ZWRfbm9taXNtYXRjaC5iYW0gXAogIDI+Pm91dHB1dHMvNDBoaXNhdDJfcGFlcnVnaW5vc2FfcGExNC9wYWVydWdpbm9zYV9wYTE0X2dlbm9tZS5iYW1fc2FtdG9vbHMuc3RkZXJyIFwKICAxPj5vdXRwdXRzLzQwaGlzYXQyX3BhZXJ1Z2lub3NhX3BhMTQvcGFlcnVnaW5vc2FfcGExNF9nZW5vbWUuYmFtX3NhbXRvb2xzLnN0ZG91dAplY2hvICJmaW5hbCBzYW10b29scyBpbmRleCBmaW5pc2hlZCB3aXRoOiAkPyIKYGBgCgojIyMgQ291bnRpbmcgYWdhaW5zdCB0aGUgZ2Vub21lCgpOb3RlIHRoYXQgdGhpcyBzdGVwIGlzIG5vdCByZWFsbHkgdXNlZnVsIGZvciBhIGRuYXNlcSBkYXRhc2V0IGluIG1vc3QKaW5zdGFuY2VzLiAgSSBhbHNvIGhhdmUgdGhlIGRlZmF1bHQgb3JpZW50YXRpb24gc2V0IHRvIHJldmVyc2UgYmVjYXVzZQptb3N0IG9mIHRoZSBzYW1wbGVzIG9mZiBvdXIgc2VxdWVuY2VyIGFyZSByZXZlcnNlZDsgYnV0IHRoYXQgaXMgbGlrZWx5Cm5vdCB0cnVlIGZvciB0aGlzIGRhdGFzZXQuICBJZiBpdCB0dXJucyBvdXQgd2UgYWN0dWFsbHkgY2FyZSBhYm91dAp0aGVzZSBjb3VudHMsIEkgbWF5IG5lZWQgdG8gY29tZSBiYWNrIGFuZCByZXJ1biB0aGVzZS4KCmBgYHtiYXNoIGNvdW50aW5nX3NjcmlwdCwgZXZhbD1GQUxTRX0KbW9kdWxlIGFkZCBodHNlcQoKaHRzZXEtY291bnQgXAogIC1xIC1mIGJhbSBcCiAgLXMgcmV2ZXJzZSAtYSAwIFwKICAgLS10eXBlIGFsbCAgLS1pZGF0dHIgQWxpYXMgXAogIG91dHB1dHMvNDBoaXNhdDJfcGFlcnVnaW5vc2FfcGExNC9wYWVydWdpbm9zYV9wYTE0X2dlbm9tZS1wYWlyZWQuYmFtIFwKICAvaG9tZS90cmV5L2xpYnJhcmllcy9nZW5vbWUvcGFlcnVnaW5vc2FfcGExNC5nZmYgXAogIDI+b3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTRfZ2Vub21lLXBhaXJlZF9zcmV2ZXJzZV9hbGxfQWxpYXMuc3RkZXJyIFwKICAxPm91dHB1dHMvNDBoaXNhdDJfcGFlcnVnaW5vc2FfcGExNC9wYWVydWdpbm9zYV9wYTE0X2dlbm9tZS1wYWlyZWRfc3JldmVyc2VfYWxsX0FsaWFzLmNvdW50Cnh6IC1mIC05ZSBvdXRwdXRzLzQwaGlzYXQyX3BhZXJ1Z2lub3NhX3BhMTQvcGFlcnVnaW5vc2FfcGExNF9nZW5vbWUtcGFpcmVkX3NyZXZlcnNlX2FsbF9BbGlhcy5jb3VudApgYGAKCiMjIFZhcmlhbnQgc2VhcmNoCgpJIHRlbmQgdG8gbGlrZSB0byB1c2UgZnJlZWJheWVzIGZvciB0aGlzLiAgSXQgaXMgYSBsaXR0bGUKY29uc2VydmF0aXZlLCBidXQgSSB0aGluayBpdCBzZWVtcyB0byB3b3JrIHF1aXRlIHdlbGwuICBJIGNhbiBhbHNvIHVzZQptcGlsZXVwIGFuZCBzbmlwcHkuICBmcmVlYmF5ZXMgYW5kIG1waWxldXAgYXJlIHNldHVwIHRvIGZlZWQgYQpwb3N0LXByb2Nlc3Npbmcgc2NyaXB0IHdoaWNoIEkgdGhpbmsgaXMga2luZCBvZiBmdW4gYW5kIHdpbGwgYmUKZGVjcmliZWQgbW9tZW50YXJpbHkuCgpgYGB7YmFzaCBjeW9hX2ZyZWViYXllcywgZXZhbD1GQUxTRX0KY2QgcHJlcHJvY2Vzc2luZwpzdGFydD0kKHB3ZCkKZm9yIGkgaW4gJCgvYmluL2xzIC1kIFBBMTQqKTsgZG8KICAgIGNkICRpCiAgICBjeW9hIC0tbWV0aG9kIGZyZWViYXllcyBcCiAgICAgICAgIC0taW5wdXQgb3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTRfZ2Vub21lLXBhaXJlZC5iYW0gXAogICAgICAgICAtLXNwZWNpZXMgcGFlcnVnaW5vc2FfcGExNCAtLWdmZl90eXBlIGdlbmUgLS1nZmZfdGFnIEFsaWFzIC0taW50cm9uIDAKICAgIGNkICRzdGFydApkb25lCmBgYAoKIyMjIEZyZWViYXllcyBzY3JpcHQKClVubGlrZSBoaXNhdCwgSSBpbmNsdWRlIHRoZSBjb252ZXJzaW9uIHRvIHRoZQpiaW5hcnkvY29tcHJlc3NlZC9pbmRleGVkIGZvcm1hdCB3aXRoIHRoZSBpbnZvY2F0aW9uIG9mIHRoZSB2YXJpYW50CnNlYXJjaC4gIEkgYWxzbyBpbmNsdWRlIHRoZSBkdXBsaWNhdGUgc2VhcmNoIGZ1bmN0aW9uYWxpdHkgZnJvbSBnYXRrLgoKYGBge2Jhc2ggZnJlZWJheWVzX3NjcmlwdCwgZXZhbD1GQUxTRX0KbW9kdWxlIGFkZCBnYXRrIGZyZWViYXllcyBsaWJnc2wgbGliaHRzIHNhbXRvb2xzIGJjZnRvb2xzIHZjZnRvb2xzCgpta2RpciAtcCBvdXRwdXRzLzUwZnJlZWJheWVzX3BhZXJ1Z2lub3NhX3BhMTQKZ2F0ayBNYXJrRHVwbGljYXRlcyBcCiAgLUkgb3V0cHV0cy80MGhpc2F0Ml9wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTRfZ2Vub21lLmJhbSBcCiAgLU8gb3V0cHV0cy81MGZyZWViYXllc19wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTRfZ2Vub21lX2RlZHVwbGljYXRlZC5iYW0gXAogIC1NIG91dHB1dHMvNTBmcmVlYmF5ZXNfcGFlcnVnaW5vc2FfcGExNC9kZWR1cGxpY2F0aW9uX3N0YXRzLnR4dCAtLVJFTU9WRV9EVVBMSUNBVEVTIHRydWUgLS1DT01QUkVTU0lPTl9MRVZFTCA5IFwKICAyPm91dHB1dHMvNTBmcmVlYmF5ZXNfcGFlcnVnaW5vc2FfcGExNC9kZWR1cGxpY2F0aW9uLnN0ZGVyciBcCiAgMT5vdXRwdXRzLzUwZnJlZWJheWVzX3BhZXJ1Z2lub3NhX3BhMTQvZGVkdXBsaWNhdGlvbi5zdGRvdXQKZWNobyAiRmluaXNoZWQgZ2F0ayBkZWR1cGxpY2F0aW9uLiIgPj4gb3V0cHV0cy81MGZyZWViYXllc19wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTQuc3Rkb3V0CnNhbXRvb2xzIGluZGV4IG91dHB1dHMvNTBmcmVlYmF5ZXNfcGFlcnVnaW5vc2FfcGExNC9wYWVydWdpbm9zYV9wYTE0X2dlbm9tZV9kZWR1cGxpY2F0ZWQuYmFtCmVjaG8gIkZpbmlzaGVkIHNhbXRvb2xzIGluZGV4LiIgPj4gb3V0cHV0cy81MGZyZWViYXllc19wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTQuc3Rkb3V0CmZyZWViYXllcyAtZiAvaG9tZS90cmV5L2xpYnJhcmllcy9nZW5vbWUvcGFlcnVnaW5vc2FfcGExNC5mYXN0YSBcCiAgLXYgb3V0cHV0cy81MGZyZWViYXllc19wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTQudmNmIFwKICBvdXRwdXRzLzUwZnJlZWJheWVzX3BhZXJ1Z2lub3NhX3BhMTQvcGFlcnVnaW5vc2FfcGExNF9nZW5vbWVfZGVkdXBsaWNhdGVkLmJhbSBcCiAgMT4+b3V0cHV0cy81MGZyZWViYXllc19wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTQuc3Rkb3V0IFwKICAyPj5vdXRwdXRzLzUwZnJlZWJheWVzX3BhZXJ1Z2lub3NhX3BhMTQvcGFlcnVnaW5vc2FfcGExNC5zdGRlcnIKZWNobyAiRmluaXNoZWQgZnJlZWJheWVzLiIgPj4gb3V0cHV0cy81MGZyZWViYXllc19wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTQuc3Rkb3V0CmJjZnRvb2xzIGNvbnZlcnQgb3V0cHV0cy81MGZyZWViYXllc19wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTQudmNmIFwKICAtT2IgLW8gb3V0cHV0cy81MGZyZWViYXllc19wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTQuYmNmIFwKICAyPj5vdXRwdXRzLzUwZnJlZWJheWVzX3BhZXJ1Z2lub3NhX3BhMTQvcGFlcnVnaW5vc2FfcGExNC5zdGRlcnIgXAogIDE+Pm91dHB1dHMvNTBmcmVlYmF5ZXNfcGFlcnVnaW5vc2FfcGExNC9wYWVydWdpbm9zYV9wYTE0LnN0ZG91dAplY2hvICJGaW5pc2hlZCBiY2Z0b29scyBjb252ZXJ0LiIgPj4gb3V0cHV0cy81MGZyZWViYXllc19wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTQuc3Rkb3V0CmJjZnRvb2xzIGluZGV4IG91dHB1dHMvNTBmcmVlYmF5ZXNfcGFlcnVnaW5vc2FfcGExNC9wYWVydWdpbm9zYV9wYTE0LmJjZiBcCiAgMj4+b3V0cHV0cy81MGZyZWViYXllc19wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTQuc3RkZXJyIFwKICAxPj5vdXRwdXRzLzUwZnJlZWJheWVzX3BhZXJ1Z2lub3NhX3BhMTQvcGFlcnVnaW5vc2FfcGExNC5zdGRvdXQKZWNobyAiRmluaXNoZWQgYmNmdG9vbHMgaW5kZXguIiA+PiBvdXRwdXRzLzUwZnJlZWJheWVzX3BhZXJ1Z2lub3NhX3BhMTQvcGFlcnVnaW5vc2FfcGExNC5zdGRvdXQKcm0gb3V0cHV0cy81MGZyZWViYXllc19wYWVydWdpbm9zYV9wYTE0L3BhZXJ1Z2lub3NhX3BhMTQudmNmCmBgYAoKVGhlIHJlc3VsdCBmcm9tIHRoZSBhYm92ZSBmcmVlYmF5ZXMgc2NyaXB0IGlzIGEgYmNmIGNvbnRhaW5pbmcgdGhlCmhpZ2gtcXVhbGl0eSBvYnNlcnZlZCB2YXJpYW50cy4gIFRoZSBjeW9hIGludm9jYXRpb24gYWxzbyBjcmVhdGVzIHRoZQpmb2xsb3dpbmcgc2NyaXB0LCB3aGljaCB3aWxsIHJlcXVpcmUgYSBiaXQgb2YgZXhwbGFuYXRpb24uCgpgYGB7cGVybCBjcmVhdGVfdmFyaWFudF9mdW4sIGV2YWw9RkFMU0V9CnVzZSBCaW86OkFkdmVudHVyZTo6U05QOwpteSAkcmVzdWx0ID0gJGgtPkJpbzo6QWR2ZW50dXJlOjpTTlA6OlNOUF9SYXRpb19Xb3JrZXIoCiAgaW5wdXQgPT4gJ291dHB1dHMvNTBmcmVlYmF5ZXNfcGFlcnVnaW5vc2FfcGExNC9wYWVydWdpbm9zYV9wYTE0LmJjZicsCiAgc3BlY2llcyA9PiAncGFlcnVnaW5vc2FfcGExNCcsCiAgdmNmX21ldGhvZCA9PiAnZnJlZWJheWVzJywKICB2Y2ZfY3V0b2ZmID0+ICc1JywKICB2Y2ZfbWlucGN0ID0+ICcwLjgnLAogIGdmZl90YWcgPT4gJ0FsaWFzJywKICBnZmZfdHlwZSA9PiAnZ2VuZScsCiAgb3V0cHV0X2RpciA9PiAnb3V0cHV0cy81MGZyZWViYXllc19wYWVydWdpbm9zYV9wYTE0JywKICBvdXRwdXQgPT4gJ291dHB1dHMvNTBmcmVlYmF5ZXNfcGFlcnVnaW5vc2FfcGExNC9hbGxfdGFncy50eHQnLAogIG91dHB1dF9jb3VudCA9PiAnb3V0cHV0cy81MGZyZWViYXllc19wYWVydWdpbm9zYV9wYTE0L2NvdW50LnR4dCcsCiAgb3V0cHV0X2dlbm9tZSA9PiAnb3V0cHV0cy81MGZyZWViYXllc19wYWVydWdpbm9zYV9wYTE0L21vZGlmaWVkLmZhc3RhJywKICBvdXRwdXRfYnlfZ2VuZSA9PiAnb3V0cHV0cy81MGZyZWViYXllc19wYWVydWdpbm9zYV9wYTE0L3ZhcmlhbnRzX2J5X2dlbmUudHh0JywKICBvdXRwdXRfcGttID0+ICdvdXRwdXRzLzUwZnJlZWJheWVzX3BhZXJ1Z2lub3NhX3BhMTQvcGttLnR4dCcsCik7CmBgYAoKVGhlIGZ1bmN0aW9uICdTTlBfUmF0aW9fV29ya2VyKCknIHJlYWRzIHRoZSByZWZlcmVuY2UgZ2Vub21lLCB0aGUgc2V0Cm9mIHZhcmlhbnRzLCBhbmQgdGhlIGdlbm9tZSBhbm5vdGF0aW9ucyBpbiBvcmRlciB0byBjcmVhdGUgYSBuZXcgY29weQpvZiB0aGUgZ2Vub21lIChtb2RpZmllZC5mYXN0YSkgd2hpY2ggc2hvdWxkIGJlIGVxdWl2YWxlbnQgdG8gdGhlIGlucHV0CnJlYWRzLiAgSXQgYWxzbyByZXdyaXRlcyB0aGUgYmNmIGRhdGEgaW50byBhIG1hdHJpeCB3aGljaCBpcyBlYXNpZXIgdG8KcGxheSB3aXRoIGluIFIvcHl0aG9uIChhbGxfdGFncy50eHQpLiAgRmluYWxseSwgaXQgdXNlcyB0aGUgYW5ub3RhdGlvbgppbmZvcm1hdGlvbiB0byBleHBsaWNpdGx5IHNob3cgdGhlIGFtaW5vIGFjaWQgc3Vic3RpdGlvbnMgb2JzZXJ2ZWQgaW4KZXZlcnkgT1JGICh2YXJpYW50c19ieV9nZW5lLnR4dCkuICBJbiB0aGVvcnkgaXQgc2hvdWxkIGFsc28gZ2l2ZSBhCnJwa20tZXNxdWUgY29weSBvZiB0aGUgdmFyaWFudHMgb2JzZXJ2ZWQgLyBPUkYsIGJ1dCBJIHR1cm5lZCB0aGF0IG9mZgpiZWNhdXNlIGl0IGRvZXNuJ3Qgc2VlbSB2ZXJ5IHVzZWZ1bCBhbmQgaXQgaXMgYSBsaXR0bGUgdHJpY2t5IHRvIGdldApyaWdodC4KCiMgQ3JlYXRpbmcgYSBzYW1wbGUgc2hlZXQKCkluIG9yZGVyIHRvIHBsYXkgZnVydGhlciB3aXRoIHRoZSBkYXRhLCBJIHdpbGwgbmVlZCBhIHNhbXBsZSBzaGVldC4KU28gSSB3aWxsIHN0YXJ0IG91dCBieSBjcmVhdGluZyBhIGJsYW5rIG9uZSBpbiBleGNlbCAobGlicmVvZmZpY2UpCndoaWNoIGNvbnRhaW5zIG9ubHkgdGhlIHNhbXBsZW5hbWVzIGluIHRoZSBzYW1lIGZvcm1hdCBhcyBteQpkaXJlY3RvcmllcyBpbiBwcmVwcm9jZXNzaW5nLy4KCk9uY2UgY29tcGxldGVkLCBJIGNhbiB1c2UgaXQgYXMgdGhlIGlucHV0IGZvciBteSBocGdsdG9vbHMgcGFja2FnZSBhbmQKaXQgc2hvdWxkIGV4dHJhY3QgdGhlIGludGVyZXN0aW5nIGluZm9ybWF0aW9uIGZyb20gdGhlIHByZXByb2Nlc3NpbmcKbG9ncyBhbmQgZmlsbCBvdXQgdGhlIHNhbXBsZSBzaGVldCBhY2NvcmRpbmdseS4gIExldHMgc2VlIGlmIGl0IHdvcmtzIQoKSGVyZSBpcyB0aGUgYmVmb3JlOgoKYGBge3Igc2FtcGxlX3NoZWV0X3N0YXJ0fQprbml0cjo6a2FibGUoZXh0cmFjdF9tZXRhZGF0YSgic2FtcGxlX3NoZWV0cy9hbGxfc2FtcGxlcy54bHN4IikpCmBgYAoKTGlrZSBJIHNhaWQsIG5vdCBtdWNoIGdvaW5nIG9uLiAgTGV0cyBzZWUgd2hhdCBpdCBsb29rcyBsaWtlIGFmdGVyIEkKcnVuIHRoZSBnYXRoZXJlciBvbiBpdC4uLiAoTm90ZSwgSSBoYXZlIGJlZW4gbWVhbmluZyB0byBjaGFuZ2UgdGhpcyB0bwpkcm9wIHRoZSB1bnVzZWQgY29sdW1ucywgYnV0IG5vdCB5ZXQpLgoKYGBge3Igc2FtcGxlX3NoZWV0X3Bvc3R9Cm1vZGlmaWVkIDwtIGdhdGhlcl9wcmVwcm9jZXNzaW5nX21ldGFkYXRhKCJzYW1wbGVfc2hlZXRzL2FsbF9zYW1wbGVzLnhsc3giKQprbml0cjo6a2FibGUoZXh0cmFjdF9tZXRhZGF0YSgic2FtcGxlX3NoZWV0cy9hbGxfc2FtcGxlc19tb2RpZmllZC54bHN4IikpCmBgYAoKTGV0cyBnbyBvbmUgc21hbGwgc3RlcCBmdXJ0aGVyLiAgSSBoYXZlIGEgc2VyaWVzIG9mIG1vZGlmaWVkIGdlbm9tZXMKYXMgd2VsbCBhcyB0aGUgcmVmZXJlbmNlLiAgV2UgY2FuIGRvIGEgcXVpY2tpZSB0cmVlIG9mIHRoZW06CkZpcnN0IEkgd2lsbCBjb3B5IGVhY2ggbW9kaWZpZWQgZ2Vub21lIHRvIHRoZSB0cmVlLyBkaXJlY3RvcnkgYW5kCnJlbmFtZSB0aGVtIHRvIHRoZSBzYW1wbGVJRC4KCmBgYHtiYXNoIGNvcHlfbW9kaWZpZWQsIGV2YWw9RkFMU0V9CnN0YXJ0PSQocHdkKQpta2RpciB0cmVlCmNkIHByZXByb2Nlc3NpbmcKZm9yIGkgaW4gJCgvYmluL2xzIC1kIFBBKik7IGRvCiAgICBjcCAkaS9vdXRwdXRzLzUwKi9tb2RpZmllZC5mYXN0YSAke3N0YXJ0fS90cmVlLyR7aX0uZmFzdGEKZG9uZQpjcCB+L2xpYnJhcmllcy9nZW5vbWUvcGFlcnVnaW5vc2FfcGExNC5mYSAke3N0YXJ0fS90cmVlCmNwIH4vbGlicmFyaWVzL2dlbm9tZS9wYWVydWdpbm9zYV9wYWsuZmEgJHtzdGFydH0vdHJlZQpgYGAKCk9oLCBpdCB0dXJucyBvdXQgdGhhdCBhdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIEkgZm9yZ290IHRvIHJ1biAzCnNhbXBsZXMsIHNvIHRoaXMgc2VjdGlvbiB3aWxsIG5lZWQgdG8gYmUgcmVkb25lLiAgQnV0IEkgY2FuIGF0IGxlYXN0CnJ1biBpdCBmb3IgdGhlIHNhbXBsZXMgdGhhdCBJIGRpZG4ndCBmb3JnZXQuCgpgYGB7ciBxdWlja190cmVlfQpmdW5reXRvd24gPC0gZ2Vub21pY19zZXF1ZW5jZV9waHlsbygidHJlZSIsIHJvb3QgPSAicGFlcnVnaW5vc2FfcGExNCIpCnBsb3QoZnVua3l0b3duJHBoeSkKYGBgCgoKYGBge3Igc2F2ZW1lfQpwYW5kZXI6OnBhbmRlcihzZXNzaW9uSW5mbygpKQptZXNzYWdlKCJUaGlzIGlzIGhwZ2x0b29scyBjb21taXQ6ICIsIGdldF9naXRfY29tbWl0KCkpCnRoaXNfc2F2ZSA8LSBwYXN0ZTAoZ3N1YihwYXR0ZXJuID0gIlxcLlJtZCIsIHJlcGxhY2UgPSAiIiwgeCA9IHJtZF9maWxlKSwgIi12IiwgdmVyLCAiLnJkYS54eiIpCm1lc3NhZ2UoIlNhdmluZyB0byAiLCB0aGlzX3NhdmUpCnRtcCA8LSBzbShzYXZlbWUoZmlsZW5hbWUgPSB0aGlzX3NhdmUpKQpgYGAK