From bf99c85dfbdd201c423847bdb9f5a31abb8a613d Mon Sep 17 00:00:00 2001 From: christopher-hakkaart Date: Sun, 5 May 2024 14:33:22 +0200 Subject: [PATCH 01/25] Adding fastp --- conf/modules.config | 16 +- modules.json | 9 +- modules/nf-core/fastp/environment.yml | 7 + modules/nf-core/fastp/main.nf | 120 +++ modules/nf-core/fastp/meta.yml | 75 ++ modules/nf-core/fastp/tests/main.nf.test | 725 ++++++++++++++++++ modules/nf-core/fastp/tests/main.nf.test.snap | 330 ++++++++ .../fastp/tests/nextflow.interleaved.config | 5 + .../fastp/tests/nextflow.save_failed.config | 5 + modules/nf-core/fastp/tests/tags.yml | 2 + modules/nf-core/fastqc/main.nf | 6 + nextflow.config | 63 +- nextflow_schema.json | 17 +- .../nf-core/utils_nfcore_pipeline/main.nf | 8 +- workflows/demo.nf | 15 + 15 files changed, 1367 insertions(+), 36 deletions(-) create mode 100644 modules/nf-core/fastp/environment.yml create mode 100644 modules/nf-core/fastp/main.nf create mode 100644 modules/nf-core/fastp/meta.yml create mode 100644 modules/nf-core/fastp/tests/main.nf.test create mode 100644 modules/nf-core/fastp/tests/main.nf.test.snap create mode 100644 modules/nf-core/fastp/tests/nextflow.interleaved.config create mode 100644 modules/nf-core/fastp/tests/nextflow.save_failed.config create mode 100644 modules/nf-core/fastp/tests/tags.yml diff --git a/conf/modules.config b/conf/modules.config index e3ea8fa..d00fc52 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -20,6 +20,20 @@ process { withName: FASTQC { ext.args = '--quiet' + publishDir = [ + path: { "${params.outdir}/fastqc/${meta.id}" }, + mode: params.publish_dir_mode, + pattern: "*.{html,json}" + ] + } + + + withName: 'FASTP' { + publishDir = [ + path: { "${params.outdir}/fastp/${meta.id}" }, + mode: params.publish_dir_mode, + pattern: "*.{html,json,log}" + ] } withName: CUSTOM_DUMPSOFTWAREVERSIONS { @@ -33,7 +47,7 @@ process { withName: 'MULTIQC' { ext.args = { params.multiqc_title ? "--title \"$params.multiqc_title\"" : '' } publishDir = [ - path: { "${params.outdir}/multiqc" }, + path: { "${params.outdir}/${$params.multiqc_title}_multiqc" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] diff --git a/modules.json b/modules.json index 83ecb34..a1e9750 100644 --- a/modules.json +++ b/modules.json @@ -5,9 +5,14 @@ "https://github.com/nf-core/modules.git": { "modules": { "nf-core": { + "fastp": { + "branch": "master", + "git_sha": "95cf5fe0194c7bf5cb0e3027a2eb7e7c89385080", + "installed_by": ["modules"] + }, "fastqc": { "branch": "master", - "git_sha": "f4ae1d942bd50c5c0b9bd2de1393ce38315ba57c", + "git_sha": "285a50500f9e02578d90b3ce6382ea3c30216acd", "installed_by": ["modules"] }, "multiqc": { @@ -26,7 +31,7 @@ }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", + "git_sha": "92de218a329bfc9a9033116eb5f65fd270e72ba3", "installed_by": ["subworkflows"] }, "utils_nfvalidation_plugin": { diff --git a/modules/nf-core/fastp/environment.yml b/modules/nf-core/fastp/environment.yml new file mode 100644 index 0000000..70389e6 --- /dev/null +++ b/modules/nf-core/fastp/environment.yml @@ -0,0 +1,7 @@ +name: fastp +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::fastp=0.23.4 diff --git a/modules/nf-core/fastp/main.nf b/modules/nf-core/fastp/main.nf new file mode 100644 index 0000000..4fc19b7 --- /dev/null +++ b/modules/nf-core/fastp/main.nf @@ -0,0 +1,120 @@ +process FASTP { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/fastp:0.23.4--h5f740d0_0' : + 'biocontainers/fastp:0.23.4--h5f740d0_0' }" + + input: + tuple val(meta), path(reads) + path adapter_fasta + val save_trimmed_fail + val save_merged + + output: + tuple val(meta), path('*.fastp.fastq.gz') , optional:true, emit: reads + tuple val(meta), path('*.json') , emit: json + tuple val(meta), path('*.html') , emit: html + tuple val(meta), path('*.log') , emit: log + path "versions.yml" , emit: versions + tuple val(meta), path('*.fail.fastq.gz') , optional:true, emit: reads_fail + tuple val(meta), path('*.merged.fastq.gz'), optional:true, emit: reads_merged + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def adapter_list = adapter_fasta ? "--adapter_fasta ${adapter_fasta}" : "" + def fail_fastq = save_trimmed_fail && meta.single_end ? "--failed_out ${prefix}.fail.fastq.gz" : save_trimmed_fail && !meta.single_end ? "--failed_out ${prefix}.paired.fail.fastq.gz --unpaired1 ${prefix}_1.fail.fastq.gz --unpaired2 ${prefix}_2.fail.fastq.gz" : '' + // Added soft-links to original fastqs for consistent naming in MultiQC + // Use single ended for interleaved. Add --interleaved_in in config. + if ( task.ext.args?.contains('--interleaved_in') ) { + """ + [ ! -f ${prefix}.fastq.gz ] && ln -sf $reads ${prefix}.fastq.gz + + fastp \\ + --stdout \\ + --in1 ${prefix}.fastq.gz \\ + --thread $task.cpus \\ + --json ${prefix}.fastp.json \\ + --html ${prefix}.fastp.html \\ + $adapter_list \\ + $fail_fastq \\ + $args \\ + 2> >(tee ${prefix}.fastp.log >&2) \\ + | gzip -c > ${prefix}.fastp.fastq.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + fastp: \$(fastp --version 2>&1 | sed -e "s/fastp //g") + END_VERSIONS + """ + } else if (meta.single_end) { + """ + [ ! -f ${prefix}.fastq.gz ] && ln -sf $reads ${prefix}.fastq.gz + + fastp \\ + --in1 ${prefix}.fastq.gz \\ + --out1 ${prefix}.fastp.fastq.gz \\ + --thread $task.cpus \\ + --json ${prefix}.fastp.json \\ + --html ${prefix}.fastp.html \\ + $adapter_list \\ + $fail_fastq \\ + $args \\ + 2> >(tee ${prefix}.fastp.log >&2) + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + fastp: \$(fastp --version 2>&1 | sed -e "s/fastp //g") + END_VERSIONS + """ + } else { + def merge_fastq = save_merged ? "-m --merged_out ${prefix}.merged.fastq.gz" : '' + """ + [ ! -f ${prefix}_1.fastq.gz ] && ln -sf ${reads[0]} ${prefix}_1.fastq.gz + [ ! -f ${prefix}_2.fastq.gz ] && ln -sf ${reads[1]} ${prefix}_2.fastq.gz + fastp \\ + --in1 ${prefix}_1.fastq.gz \\ + --in2 ${prefix}_2.fastq.gz \\ + --out1 ${prefix}_1.fastp.fastq.gz \\ + --out2 ${prefix}_2.fastp.fastq.gz \\ + --json ${prefix}.fastp.json \\ + --html ${prefix}.fastp.html \\ + $adapter_list \\ + $fail_fastq \\ + $merge_fastq \\ + --thread $task.cpus \\ + --detect_adapter_for_pe \\ + $args \\ + 2> >(tee ${prefix}.fastp.log >&2) + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + fastp: \$(fastp --version 2>&1 | sed -e "s/fastp //g") + END_VERSIONS + """ + } + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + def is_single_output = task.ext.args?.contains('--interleaved_in') || meta.single_end + def touch_reads = is_single_output ? "${prefix}.fastp.fastq.gz" : "${prefix}_1.fastp.fastq.gz ${prefix}_2.fastp.fastq.gz" + def touch_merged = (!is_single_output && save_merged) ? "touch ${prefix}.merged.fastq.gz" : "" + """ + touch $touch_reads + touch "${prefix}.fastp.json" + touch "${prefix}.fastp.html" + touch "${prefix}.fastp.log" + $touch_merged + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + fastp: \$(fastp --version 2>&1 | sed -e "s/fastp //g") + END_VERSIONS + """ +} diff --git a/modules/nf-core/fastp/meta.yml b/modules/nf-core/fastp/meta.yml new file mode 100644 index 0000000..c22a16a --- /dev/null +++ b/modules/nf-core/fastp/meta.yml @@ -0,0 +1,75 @@ +name: fastp +description: Perform adapter/quality trimming on sequencing reads +keywords: + - trimming + - quality control + - fastq +tools: + - fastp: + description: | + A tool designed to provide fast all-in-one preprocessing for FastQ files. This tool is developed in C++ with multithreading supported to afford high performance. + documentation: https://github.com/OpenGene/fastp + doi: 10.1093/bioinformatics/bty560 + licence: ["MIT"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information. Use 'single_end: true' to specify single ended or interleaved FASTQs. Use 'single_end: false' for paired-end reads. + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FastQ files of size 1 and 2 for single-end and paired-end data, + respectively. If you wish to run interleaved paired-end data, supply as single-end data + but with `--interleaved_in` in your `modules.conf`'s `ext.args` for the module. + - adapter_fasta: + type: file + description: File in FASTA format containing possible adapters to remove. + pattern: "*.{fasta,fna,fas,fa}" + - save_trimmed_fail: + type: boolean + description: Specify true to save files that failed to pass trimming thresholds ending in `*.fail.fastq.gz` + - save_merged: + type: boolean + description: Specify true to save all merged reads to the a file ending in `*.merged.fastq.gz` +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: The trimmed/modified/unmerged fastq reads + pattern: "*fastp.fastq.gz" + - json: + type: file + description: Results in JSON format + pattern: "*.json" + - html: + type: file + description: Results in HTML format + pattern: "*.html" + - log: + type: file + description: fastq log file + pattern: "*.log" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - reads_fail: + type: file + description: Reads the failed the preprocessing + pattern: "*fail.fastq.gz" + - reads_merged: + type: file + description: Reads that were successfully merged + pattern: "*.{merged.fastq.gz}" +authors: + - "@drpatelh" + - "@kevinmenden" +maintainers: + - "@drpatelh" + - "@kevinmenden" diff --git a/modules/nf-core/fastp/tests/main.nf.test b/modules/nf-core/fastp/tests/main.nf.test new file mode 100644 index 0000000..6f1f489 --- /dev/null +++ b/modules/nf-core/fastp/tests/main.nf.test @@ -0,0 +1,725 @@ +nextflow_process { + + name "Test Process FASTP" + script "../main.nf" + process "FASTP" + tag "modules" + tag "modules_nfcore" + tag "fastp" + + test("test_fastp_single_end") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + + input[0] = Channel.of([ + [ id:'test', single_end:true ], + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + ]) + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + def html_text = [ "Q20 bases:12.922000 K (92.984097%)", + "single end (151 cycles)" ] + def log_text = [ "Q20 bases: 12922(92.9841%)", + "reads passed filter: 99" ] + def read_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", + "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", + "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE + { assert path(process.out.reads.get(0).get(1)).linesGzip.contains(read_line) } + } + }, + { html_text.each { html_part -> + { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } + } + }, + { assert snapshot(process.out.json).match("test_fastp_single_end_json") }, + { log_text.each { log_part -> + { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } + } + }, + { + assert snapshot( + ( + [process.out.reads[0][0].toString()] + // meta + process.out.reads.collect { file(it[1]).getName() } + + process.out.json.collect { file(it[1]).getName() } + + process.out.html.collect { file(it[1]).getName() } + + process.out.log.collect { file(it[1]).getName() } + + process.out.reads_fail.collect { file(it[1]).getName() } + + process.out.reads_merged.collect { file(it[1]).getName() } + ).sort() + ).match("test_fastp_single_end-_match") + }, + { assert snapshot(process.out.versions).match("versions_single_end") } + ) + } + } + + test("test_fastp_single_end-stub") { + + options '-stub' + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + + input[0] = Channel.of([ + [ id:'test', single_end:true ], + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + ]) + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + + assertAll( + { assert process.success }, + { + assert snapshot( + ( + [process.out.reads[0][0].toString()] + // meta + process.out.reads.collect { file(it[1]).getName() } + + process.out.json.collect { file(it[1]).getName() } + + process.out.html.collect { file(it[1]).getName() } + + process.out.log.collect { file(it[1]).getName() } + + process.out.reads_fail.collect { file(it[1]).getName() } + + process.out.reads_merged.collect { file(it[1]).getName() } + ).sort() + ).match("test_fastp_single_end-for_stub_match") + }, + { assert snapshot(process.out.versions).match("versions_single_end_stub") } + ) + } + } + + test("test_fastp_paired_end") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + ]) + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + def html_text = [ "Q20 bases:25.719000 K (93.033098%)", + "The input has little adapter percentage (~0.000000%), probably it's trimmed before."] + def log_text = [ "No adapter detected for read1", + "Q30 bases: 12281(88.3716%)"] + def json_text = ['"passed_filter_reads": 198'] + def read1_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", + "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", + "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE + { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } + } + }, + { read2_lines.each { read2_line -> + { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } + } + }, + { html_text.each { html_part -> + { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } + } + }, + { json_text.each { json_part -> + { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } + } + }, + { log_text.each { log_part -> + { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } + } + }, + { + assert snapshot( + ( + [process.out.reads[0][0].toString()] + // meta + process.out.reads.collect { it[1].collect { item -> file(item).getName() } } + + process.out.json.collect { file(it[1]).getName() } + + process.out.html.collect { file(it[1]).getName() } + + process.out.log.collect { file(it[1]).getName() } + + process.out.reads_fail.collect { file(it[1]).getName() } + + process.out.reads_merged.collect { file(it[1]).getName() } + ).sort() + ).match("test_fastp_paired_end_match") + }, + { assert snapshot(process.out.versions).match("versions_paired_end") } + ) + } + } + + test("test_fastp_paired_end-stub") { + + options '-stub' + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + ]) + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + assertAll( + { assert process.success }, + { + assert snapshot( + ( + [process.out.reads[0][0].toString()] + // meta + process.out.reads.collect { it[1].collect { item -> file(item).getName() } } + + process.out.json.collect { file(it[1]).getName() } + + process.out.html.collect { file(it[1]).getName() } + + process.out.log.collect { file(it[1]).getName() } + + process.out.reads_fail.collect { file(it[1]).getName() } + + process.out.reads_merged.collect { file(it[1]).getName() } + ).sort() + ).match("test_fastp_paired_end-for_stub_match") + }, + { assert snapshot(process.out.versions).match("versions_paired_end-stub") } + ) + } + } + + test("fastp test_fastp_interleaved") { + + config './nextflow.interleaved.config' + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ] + ]) + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + def html_text = [ "Q20 bases:25.719000 K (93.033098%)", + "paired end (151 cycles + 151 cycles)"] + def log_text = [ "Q20 bases: 12922(92.9841%)", + "reads passed filter: 162"] + def read_lines = [ "@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", + "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", + "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE + { assert path(process.out.reads.get(0).get(1)).linesGzip.contains(read_line) } + } + }, + { html_text.each { html_part -> + { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } + } + }, + { assert snapshot(process.out.json).match("fastp test_fastp_interleaved_json") }, + { log_text.each { log_part -> + { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } + } + }, + { + assert snapshot( + ( + [process.out.reads[0][0].toString()] + // meta + process.out.reads.collect { file(it[1]).getName() } + + process.out.json.collect { file(it[1]).getName() } + + process.out.html.collect { file(it[1]).getName() } + + process.out.log.collect { file(it[1]).getName() } + + process.out.reads_fail.collect { file(it[1]).getName() } + + process.out.reads_merged.collect { file(it[1]).getName() } + ).sort() + ).match("test_fastp_interleaved-_match") + }, + { assert snapshot(process.out.versions).match("versions_interleaved") } + ) + } + } + + test("fastp test_fastp_interleaved-stub") { + + options '-stub' + + config './nextflow.interleaved.config' + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ] + ]) + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + assertAll( + { assert process.success }, + { + assert snapshot( + ( + [process.out.reads[0][0].toString()] + // meta + process.out.reads.collect { file(it[1]).getName() } + + process.out.json.collect { file(it[1]).getName() } + + process.out.html.collect { file(it[1]).getName() } + + process.out.log.collect { file(it[1]).getName() } + + process.out.reads_fail.collect { file(it[1]).getName() } + + process.out.reads_merged.collect { file(it[1]).getName() } + ).sort() + ).match("test_fastp_interleaved-for_stub_match") + }, + { assert snapshot(process.out.versions).match("versions_interleaved-stub") } + ) + } + } + + test("test_fastp_single_end_trim_fail") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = true + save_merged = false + + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + ]) + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + def html_text = [ "Q20 bases:12.922000 K (92.984097%)", + "single end (151 cycles)"] + def log_text = [ "Q20 bases: 12922(92.9841%)", + "reads passed filter: 99" ] + def read_lines = [ "@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", + "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", + "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE + { assert path(process.out.reads.get(0).get(1)).linesGzip.contains(read_line) } + } + }, + { failed_read_lines.each { failed_read_line -> + { assert path(process.out.reads_fail.get(0).get(1)).linesGzip.contains(failed_read_line) } + } + }, + { html_text.each { html_part -> + { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } + } + }, + { assert snapshot(process.out.json).match("test_fastp_single_end_trim_fail_json") }, + { log_text.each { log_part -> + { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } + } + }, + { assert snapshot(process.out.versions).match("versions_single_end_trim_fail") } + ) + } + } + + test("test_fastp_paired_end_trim_fail") { + + config './nextflow.save_failed.config' + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = true + save_merged = false + + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true)] + ]) + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + def html_text = [ "Q20 bases:25.719000 K (93.033098%)", + "The input has little adapter percentage (~0.000000%), probably it's trimmed before."] + def log_text = [ "No adapter detected for read1", + "Q30 bases: 12281(88.3716%)"] + def json_text = ['"passed_filter_reads": 162'] + def read1_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", + "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", + "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE + { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } + } + }, + { read2_lines.each { read2_line -> + { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } + } + }, + { failed_read2_lines.each { failed_read2_line -> + { assert path(process.out.reads_fail.get(0).get(1).get(2)).linesGzip.contains(failed_read2_line) } + } + }, + { html_text.each { html_part -> + { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } + } + }, + { json_text.each { json_part -> + { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } + } + }, + { log_text.each { log_part -> + { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } + } + }, + { assert snapshot(process.out.versions).match("versions_paired_end_trim_fail") } + ) + } + } + + test("test_fastp_paired_end_merged") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = false + save_merged = true + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + ]) + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + def html_text = [ "
"] + def log_text = [ "Merged and filtered:", + "total reads: 75", + "total bases: 13683"] + def json_text = ['"merged_and_filtered": {', '"total_reads": 75', '"total_bases": 13683'] + def read1_lines = [ "@ERR5069949.1066259 NS500628:121:HK3MMAFX2:1:11312:18369:8333/1", + "CCTTATGACAGCAAGAACTGTGTATGATGATGGTGCTAGGAGAGTGTGGACACTTATGAATGTCTTGACACTCGTTTATAAAGTTTATTATGGTAATGCTTTAGATCAAGCCATTTCCATGTGGGCTCTTATAATCTCTGTTACTTC", + "AAAAAEAEEAEEEEEEEEEEEEEEEEAEEEEAEEEEEEEEAEEEEEEEEEEEEEEEEE/EAEEEEEE/6EEEEEEEEEEAEEAEEE/EE/AEEAEEEEEAEEEA/EEAAEAE + { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } + } + }, + { read2_lines.each { read2_line -> + { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } + } + }, + { read_merged_lines.each { read_merged_line -> + { assert path(process.out.reads_merged.get(0).get(1)).linesGzip.contains(read_merged_line) } + } + }, + { html_text.each { html_part -> + { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } + } + }, + { json_text.each { json_part -> + { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } + } + }, + { log_text.each { log_part -> + { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } + } + }, + { + assert snapshot( + ( + [process.out.reads[0][0].toString()] + // meta + process.out.reads.collect { it[1].collect { item -> file(item).getName() } } + + process.out.json.collect { file(it[1]).getName() } + + process.out.html.collect { file(it[1]).getName() } + + process.out.log.collect { file(it[1]).getName() } + + process.out.reads_fail.collect { file(it[1]).getName() } + + process.out.reads_merged.collect { file(it[1]).getName() } + ).sort() + ).match("test_fastp_paired_end_merged_match") + }, + { assert snapshot(process.out.versions).match("versions_paired_end_merged") } + ) + } + } + + test("test_fastp_paired_end_merged-stub") { + + options '-stub' + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = false + save_merged = true + + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + ]) + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + assertAll( + { assert process.success }, + { + assert snapshot( + ( + [process.out.reads[0][0].toString()] + // meta + process.out.reads.collect { it[1].collect { item -> file(item).getName() } } + + process.out.json.collect { file(it[1]).getName() } + + process.out.html.collect { file(it[1]).getName() } + + process.out.log.collect { file(it[1]).getName() } + + process.out.reads_fail.collect { file(it[1]).getName() } + + process.out.reads_merged.collect { file(it[1]).getName() } + ).sort() + ).match("test_fastp_paired_end_merged-for_stub_match") + }, + { assert snapshot(process.out.versions).match("versions_paired_end_merged_stub") } + ) + } + } + + test("test_fastp_paired_end_merged_adapterlist") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = Channel.of([ file(params.modules_testdata_base_path + 'delete_me/fastp/adapters.fasta', checkIfExists: true) ]) + save_trimmed_fail = false + save_merged = true + + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + ]) + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + def html_text = [ "
"] + def log_text = [ "Merged and filtered:", + "total reads: 75", + "total bases: 13683"] + def json_text = ['"merged_and_filtered": {', '"total_reads": 75', '"total_bases": 13683',"--adapter_fasta"] + def read1_lines = ["@ERR5069949.1066259 NS500628:121:HK3MMAFX2:1:11312:18369:8333/1", + "CCTTATGACAGCAAGAACTGTGTATGATGATGGTGCTAGGAGAGTGTGGACACTTATGAATGTCTTGACACTCGTTTATAAAGTTTATTATGGTAATGCTTTAGATCAAGCCATTTCCATGTGGGCTCTTATAATCTCTGTTACTTC", + "AAAAAEAEEAEEEEEEEEEEEEEEEEAEEEEAEEEEEEEEAEEEEEEEEEEEEEEEEE/EAEEEEEE/6EEEEEEEEEEAEEAEEE/EE/AEEAEEEEEAEEEA/EEAAEAE + { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } + } + }, + { read2_lines.each { read2_line -> + { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } + } + }, + { read_merged_lines.each { read_merged_line -> + { assert path(process.out.reads_merged.get(0).get(1)).linesGzip.contains(read_merged_line) } + } + }, + { html_text.each { html_part -> + { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } + } + }, + { json_text.each { json_part -> + { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } + } + }, + { log_text.each { log_part -> + { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } + } + }, + { assert snapshot(process.out.versions).match("versions_paired_end_merged_adapterlist") } + ) + } + } +} diff --git a/modules/nf-core/fastp/tests/main.nf.test.snap b/modules/nf-core/fastp/tests/main.nf.test.snap new file mode 100644 index 0000000..3e87628 --- /dev/null +++ b/modules/nf-core/fastp/tests/main.nf.test.snap @@ -0,0 +1,330 @@ +{ + "fastp test_fastp_interleaved_json": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,b24e0624df5cc0b11cd5ba21b726fb22" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-18T16:19:15.063001" + }, + "test_fastp_paired_end_merged-for_stub_match": { + "content": [ + [ + [ + "test_1.fastp.fastq.gz", + "test_2.fastp.fastq.gz" + ], + "test.fastp.html", + "test.fastp.json", + "test.fastp.log", + "test.merged.fastq.gz", + "{id=test, single_end=false}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-17T18:10:13.467574" + }, + "versions_interleaved": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:56:24.615634793" + }, + "test_fastp_single_end_json": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,c852d7a6dba5819e4ac8d9673bedcacc" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-18T16:18:43.526412" + }, + "versions_paired_end": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:55:42.333545689" + }, + "test_fastp_paired_end_match": { + "content": [ + [ + [ + "test_1.fastp.fastq.gz", + "test_2.fastp.fastq.gz" + ], + "test.fastp.html", + "test.fastp.json", + "test.fastp.log", + "{id=test, single_end=false}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T12:03:06.431833729" + }, + "test_fastp_interleaved-_match": { + "content": [ + [ + "test.fastp.fastq.gz", + "test.fastp.html", + "test.fastp.json", + "test.fastp.log", + "{id=test, single_end=true}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-18T16:19:15.111894" + }, + "test_fastp_paired_end_merged_match": { + "content": [ + [ + [ + "test_1.fastp.fastq.gz", + "test_2.fastp.fastq.gz" + ], + "test.fastp.html", + "test.fastp.json", + "test.fastp.log", + "test.merged.fastq.gz", + "{id=test, single_end=false}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T12:08:44.496251446" + }, + "versions_single_end_stub": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:55:27.354051299" + }, + "versions_interleaved-stub": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:56:46.535528418" + }, + "versions_single_end_trim_fail": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:59:03.724591407" + }, + "test_fastp_paired_end-for_stub_match": { + "content": [ + [ + [ + "test_1.fastp.fastq.gz", + "test_2.fastp.fastq.gz" + ], + "test.fastp.html", + "test.fastp.json", + "test.fastp.log", + "{id=test, single_end=false}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-17T18:07:15.398827" + }, + "versions_paired_end-stub": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:56:06.50017282" + }, + "versions_single_end": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:55:07.67921647" + }, + "versions_paired_end_merged_stub": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:59:47.350653154" + }, + "test_fastp_interleaved-for_stub_match": { + "content": [ + [ + "test.fastp.fastq.gz", + "test.fastp.html", + "test.fastp.json", + "test.fastp.log", + "{id=test, single_end=true}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-17T18:08:06.127974" + }, + "versions_paired_end_trim_fail": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:59:18.140484878" + }, + "test_fastp_single_end-for_stub_match": { + "content": [ + [ + "test.fastp.fastq.gz", + "test.fastp.html", + "test.fastp.json", + "test.fastp.log", + "{id=test, single_end=true}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-17T18:06:00.244202" + }, + "test_fastp_single_end-_match": { + "content": [ + [ + "test.fastp.fastq.gz", + "test.fastp.html", + "test.fastp.json", + "test.fastp.log", + "{id=test, single_end=true}" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-03-18T16:18:43.580336" + }, + "versions_paired_end_merged_adapterlist": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T12:05:37.845370554" + }, + "versions_paired_end_merged": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-01T11:59:32.860543858" + }, + "test_fastp_single_end_trim_fail_json": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,9a7ee180f000e8d00c7fb67f06293eb5" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-01-17T18:08:41.942317" + } +} \ No newline at end of file diff --git a/modules/nf-core/fastp/tests/nextflow.interleaved.config b/modules/nf-core/fastp/tests/nextflow.interleaved.config new file mode 100644 index 0000000..4be8dbd --- /dev/null +++ b/modules/nf-core/fastp/tests/nextflow.interleaved.config @@ -0,0 +1,5 @@ +process { + withName: FASTP { + ext.args = "--interleaved_in -e 30" + } +} diff --git a/modules/nf-core/fastp/tests/nextflow.save_failed.config b/modules/nf-core/fastp/tests/nextflow.save_failed.config new file mode 100644 index 0000000..53b61b0 --- /dev/null +++ b/modules/nf-core/fastp/tests/nextflow.save_failed.config @@ -0,0 +1,5 @@ +process { + withName: FASTP { + ext.args = "-e 30" + } +} diff --git a/modules/nf-core/fastp/tests/tags.yml b/modules/nf-core/fastp/tests/tags.yml new file mode 100644 index 0000000..c1afcce --- /dev/null +++ b/modules/nf-core/fastp/tests/tags.yml @@ -0,0 +1,2 @@ +fastp: + - modules/nf-core/fastp/** diff --git a/modules/nf-core/fastqc/main.nf b/modules/nf-core/fastqc/main.nf index 9e19a74..d79f1c8 100644 --- a/modules/nf-core/fastqc/main.nf +++ b/modules/nf-core/fastqc/main.nf @@ -25,6 +25,11 @@ process FASTQC { def old_new_pairs = reads instanceof Path || reads.size() == 1 ? [[ reads, "${prefix}.${reads.extension}" ]] : reads.withIndex().collect { entry, index -> [ entry, "${prefix}_${index + 1}.${entry.extension}" ] } def rename_to = old_new_pairs*.join(' ').join(' ') def renamed_files = old_new_pairs.collect{ old_name, new_name -> new_name }.join(' ') + + def memory_in_mb = MemoryUnit.of("${task.memory}").toUnit('MB') + // FastQC memory value allowed range (100 - 10000) + def fastqc_memory = memory_in_mb > 10000 ? 10000 : (memory_in_mb < 100 ? 100 : memory_in_mb) + """ printf "%s %s\\n" $rename_to | while read old_name new_name; do [ -f "\${new_name}" ] || ln -s \$old_name \$new_name @@ -33,6 +38,7 @@ process FASTQC { fastqc \\ $args \\ --threads $task.cpus \\ + --memory $fastqc_memory \\ $renamed_files cat <<-END_VERSIONS > versions.yml diff --git a/nextflow.config b/nextflow.config index d32d68c..a663bdb 100644 --- a/nextflow.config +++ b/nextflow.config @@ -9,44 +9,49 @@ // Global default params, used in configs params { - // TODO nf-core: Specify your pipeline's command line flags // Input options - input = null + input = null + // References - genome = null - igenomes_base = 's3://ngi-igenomes/igenomes/' - igenomes_ignore = false - fasta = null// MultiQC options - multiqc_config = null - multiqc_title = null - multiqc_logo = null - max_multiqc_email_size = '25.MB' + genome = null + igenomes_base = 's3://ngi-igenomes/igenomes/' + igenomes_ignore = false + fasta = null // MultiQC options + multiqc_config = null + multiqc_title = null + multiqc_logo = null + max_multiqc_email_size = '25.MB' multiqc_methods_description = null + + // FASTP options + adapters = null + save_trimmed_fail = false + save_merged = false + // Boilerplate options - outdir = null - publish_dir_mode = 'copy' - email = null - email_on_fail = null - plaintext_email = false - monochrome_logs = false - hook_url = null - help = false - version = false + outdir = null + publish_dir_mode = 'copy' + email = null + email_on_fail = null + plaintext_email = false + monochrome_logs = false + hook_url = null + help = false + version = false // Config options - config_profile_name = null - config_profile_description = null - custom_config_version = 'master' - custom_config_base = "https://raw.githubusercontent.com/nf-core/configs/${params.custom_config_version}" - config_profile_contact = null - config_profile_url = null + config_profile_name = null + config_profile_description = null + custom_config_version = 'master' + custom_config_base = "https://raw.githubusercontent.com/nf-core/configs/${params.custom_config_version}" + config_profile_contact = null + config_profile_url = null // Max resource options - // Defaults only, expecting to be overwritten - max_memory = '128.GB' - max_cpus = 16 - max_time = '240.h' + max_memory = '48.GB' + max_cpus = 16 + max_time = '1.h' // Schema validation default options validationFailUnrecognisedParams = false diff --git a/nextflow_schema.json b/nextflow_schema.json index 2696051..f8dbc16 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -140,7 +140,7 @@ "max_memory": { "type": "string", "description": "Maximum amount of memory that can be requested for any single job.", - "default": "128.GB", + "default": "48.GB", "fa_icon": "fas fa-memory", "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", "hidden": true, @@ -149,7 +149,7 @@ "max_time": { "type": "string", "description": "Maximum amount of time that can be requested for any single job.", - "default": "240.h", + "default": "1.h", "fa_icon": "far fa-clock", "pattern": "^(\\d+\\.?\\s*(s|m|h|d|day)\\s*)+$", "hidden": true, @@ -285,5 +285,16 @@ { "$ref": "#/definitions/generic_options" } - ] + ], + "properties": { + "adapters": { + "type": "string" + }, + "save_trimmed_fail": { + "type": "boolean" + }, + "save_merged": { + "type": "boolean" + } + } } diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf index a8b55d6..14558c3 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf @@ -65,9 +65,15 @@ def checkProfileProvided(nextflow_cli_args) { // Citation string for pipeline // def workflowCitation() { + def temp_doi_ref = "" + String[] manifest_doi = workflow.manifest.doi.tokenize(",") + // Using a loop to handle multiple DOIs + // Removing `https://doi.org/` to handle pipelines using DOIs vs DOI resolvers + // Removing ` ` since the manifest.doi is a string and not a proper list + for (String doi_ref: manifest_doi) temp_doi_ref += " https://doi.org/${doi_ref.replace('https://doi.org/', '').replace(' ', '')}\n" return "If you use ${workflow.manifest.name} for your analysis please cite:\n\n" + "* The pipeline\n" + - " ${workflow.manifest.doi}\n\n" + + temp_doi_ref + "\n" + "* The nf-core framework\n" + " https://doi.org/10.1038/s41587-020-0439-x\n\n" + "* Software dependencies\n" + diff --git a/workflows/demo.nf b/workflows/demo.nf index 4881298..77db437 100644 --- a/workflows/demo.nf +++ b/workflows/demo.nf @@ -5,6 +5,7 @@ */ include { FASTQC } from '../modules/nf-core/fastqc/main' +include { FASTP } from '../modules/nf-core/fastp/main' include { MULTIQC } from '../modules/nf-core/multiqc/main' include { paramsSummaryMap } from 'plugin/nf-validation' include { paramsSummaryMultiqc } from '../subworkflows/nf-core/utils_nfcore_pipeline' @@ -36,6 +37,20 @@ workflow DEMO { ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}) ch_versions = ch_versions.mix(FASTQC.out.versions.first()) + // + // MODULE: Run Fastp + // + ch_adapters = params.adapters ? params.adapters : [] + + FASTP ( + ch_samplesheet, + ch_adapters, + params.save_trimmed_fail, + params.save_merged + ) + ch_multiqc_files = ch_multiqc_files.mix(FASTP.out.json.collect{it[1]}.ifEmpty([])) + ch_versions = ch_versions.mix(FASTP.out.versions.first()) + // // Collate and save software versions // From 492e27cd51320ff68f7e6ddcd5481b6d27bca584 Mon Sep 17 00:00:00 2001 From: christopher-hakkaart Date: Sun, 5 May 2024 14:40:45 +0200 Subject: [PATCH 02/25] Fix output names --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index d00fc52..08b03f8 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -47,7 +47,7 @@ process { withName: 'MULTIQC' { ext.args = { params.multiqc_title ? "--title \"$params.multiqc_title\"" : '' } publishDir = [ - path: { "${params.outdir}/${$params.multiqc_title}_multiqc" }, + path: { "${params.outdir}/multiqc" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] From c295933b4f75648f395c77fee52896e014e5817e Mon Sep 17 00:00:00 2001 From: christopher-hakkaart Date: Sun, 5 May 2024 14:47:47 +0200 Subject: [PATCH 03/25] Update schema --- nextflow_schema.json | 42 +++++++++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index f8dbc16..b1382bd 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -74,6 +74,30 @@ } } }, + "fastp_options": { + "title": "Fastp options", + "type": "object", + "description": "Parameters for running fastp", + "default": "", + "properties": { + "adapters": { + "type": "string", + "fa_icon": "fas fa-cut", + "description": "Fasta file with adapter sequences to be trimmed." + }, + "save_trimmed_fail": { + "type": "boolean", + "fa_icon": "far fa-save", + "description": "Option to save trimmed reads." + }, + "save_merged": { + "type": "boolean", + "fa_icon": "far fa-save", + "description": "Option to save merged reads." + } + }, + "fa_icon": "fas fa-cut" + }, "institutional_config_options": { "title": "Institutional config options", "type": "object", @@ -216,7 +240,7 @@ "hook_url": { "type": "string", "description": "Incoming hook URL for messaging service", - "fa_icon": "fas fa-people-group", + "fa_icon": "fas fa-broadcast-tower", "help_text": "Incoming hook URL for messaging service. Currently, MS Teams and Slack are supported.", "hidden": true }, @@ -276,6 +300,9 @@ { "$ref": "#/definitions/reference_genome_options" }, + { + "$ref": "#/definitions/fastp_options" + }, { "$ref": "#/definitions/institutional_config_options" }, @@ -285,16 +312,5 @@ { "$ref": "#/definitions/generic_options" } - ], - "properties": { - "adapters": { - "type": "string" - }, - "save_trimmed_fail": { - "type": "boolean" - }, - "save_merged": { - "type": "boolean" - } - } + ] } From ab850832668ac109833f6c05ce08359f524fac0d Mon Sep 17 00:00:00 2001 From: christopher-hakkaart Date: Sun, 5 May 2024 15:11:54 +0200 Subject: [PATCH 04/25] Fixing TODOs --- README.md | 12 +++--------- conf/base.config | 7 ------- conf/test.config | 2 -- main.nf | 3 --- 4 files changed, 3 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 7912819..ea41004 100644 --- a/README.md +++ b/README.md @@ -19,20 +19,14 @@ ## Introduction -**nf-core/demo** is a bioinformatics pipeline that ... - - +**nf-core/demo** is a simple nf-core style bioinformatics pipeline for workshops and demonstrations. It was created using the nf-core template and is designed to run quickly using small test data files. - 1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/)) -2. Present QC for raw reads ([`MultiQC`](http://multiqc.info/)) +2. Adapter and quality trimming ([`Fastp`](https://github.com/OpenGene/fastp)) +3. Present QC for raw reads ([`MultiQC`](http://multiqc.info/)) ## Usage diff --git a/conf/base.config b/conf/base.config index 4639378..7e48216 100644 --- a/conf/base.config +++ b/conf/base.config @@ -10,7 +10,6 @@ process { - // TODO nf-core: Check the defaults for all processes cpus = { check_max( 1 * task.attempt, 'cpus' ) } memory = { check_max( 6.GB * task.attempt, 'memory' ) } time = { check_max( 4.h * task.attempt, 'time' ) } @@ -20,12 +19,6 @@ process { maxErrors = '-1' // Process-specific resource requirements - // NOTE - Please try and re-use the labels below as much as possible. - // These labels are used and recognised by default in DSL2 files hosted on nf-core/modules. - // If possible, it would be nice to keep the same label naming convention when - // adding in your local modules too. - // TODO nf-core: Customise requirements for specific processes. - // See https://www.nextflow.io/docs/latest/config.html#config-process-selectors withLabel:process_single { cpus = { check_max( 1 , 'cpus' ) } memory = { check_max( 6.GB * task.attempt, 'memory' ) } diff --git a/conf/test.config b/conf/test.config index 0d5e11e..802af2b 100644 --- a/conf/test.config +++ b/conf/test.config @@ -20,8 +20,6 @@ params { max_time = '6.h' // Input data - // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets - // TODO nf-core: Give any required params for the test so that command line flags are not needed input = 'https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/samplesheet/samplesheet_test_illumina_amplicon.csv' // Genome references diff --git a/main.nf b/main.nf index 0351d8e..b7a507c 100644 --- a/main.nf +++ b/main.nf @@ -29,9 +29,6 @@ include { getGenomeAttribute } from './subworkflows/local/utils_nfcore_demo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -// TODO nf-core: Remove this line if you don't need a FASTA file -// This is an example of how to use getGenomeAttribute() to fetch parameters -// from igenomes.config using `--genome` params.fasta = getGenomeAttribute('fasta') /* From 86b11d19ce1ee1ad61ea8e2c70ce564a586a9acd Mon Sep 17 00:00:00 2001 From: christopher-hakkaart Date: Mon, 6 May 2024 08:04:42 +0200 Subject: [PATCH 05/25] Fixing more TODOs --- CITATIONS.md | 4 ++++ README.md | 20 ++++++-------------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/CITATIONS.md b/CITATIONS.md index a24cac2..b5d0459 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -14,6 +14,10 @@ > Andrews, S. (2010). FastQC: A Quality Control Tool for High Throughput Sequence Data [Online]. +- [fastp](https://www.ncbi.nlm.nih.gov/pubmed/30423086/) + + > Chen S, Zhou Y, Chen Y, Gu J. fastp: an ultra-fast all-in-one FASTQ preprocessor. Bioinformatics. 2018 Sep 1;34(17):i884-i890. doi: 10.1093/bioinformatics/bty560. PubMed PMID: 30423086; PubMed Central PMCID: PMC6129281. + - [MultiQC](https://pubmed.ncbi.nlm.nih.gov/27312411/) > Ewels P, Magnusson M, Lundin S, Käller M. MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics. 2016 Oct 1;32(19):3047-8. doi: 10.1093/bioinformatics/btw354. Epub 2016 Jun 16. PubMed PMID: 27312411; PubMed Central PMCID: PMC5039924. diff --git a/README.md b/README.md index ea41004..246d574 100644 --- a/README.md +++ b/README.md @@ -33,26 +33,22 @@ > [!NOTE] > If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data. - - Now, you can run the pipeline using: - - ```bash nextflow run nf-core/demo \ -profile \ @@ -74,11 +70,9 @@ For more details about the output files and reports, please refer to the ## Credits -nf-core/demo was originally written by Christopher Hakkaart. +nf-core/demo was originally written by Chris Hakkaart ([@christopher-hakkaart](https://github.com/christopher-hakkaart)). -We thank the following people for their extensive assistance in the development of this pipeline: - - + ## Contributions and Support @@ -91,8 +85,6 @@ For further information or help, don't hesitate to get in touch on the [Slack `# - - An extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file. You can cite the `nf-core` publication as follows: From 0237bd9e909d7dbe4128b015493ae9ce91ca5617 Mon Sep 17 00:00:00 2001 From: christopher-hakkaart Date: Mon, 6 May 2024 11:11:36 +0200 Subject: [PATCH 06/25] Fix more TODOs --- conf/test_full.config | 2 -- docs/output.md | 18 ++++++++++++-- docs/usage.md | 24 +++++++------------ .../local/utils_nfcore_demo_pipeline/main.nf | 15 +++++------- 4 files changed, 31 insertions(+), 28 deletions(-) diff --git a/conf/test_full.config b/conf/test_full.config index 26af182..31a8ee5 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -15,8 +15,6 @@ params { config_profile_description = 'Full test dataset to check pipeline function' // Input data for full size test - // TODO nf-core: Specify the paths to your full test data ( on nf-core/test-datasets or directly in repositories, e.g. SRA) - // TODO nf-core: Give any required params for the test so that command line flags are not needed input = 'https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/samplesheet/samplesheet_full_illumina_amplicon.csv' // Genome references diff --git a/docs/output.md b/docs/output.md index c8b9d43..f8f0f90 100644 --- a/docs/output.md +++ b/docs/output.md @@ -6,13 +6,12 @@ This document describes the output produced by the pipeline. Most of the plots a The directories listed below will be created in the results directory after the pipeline has finished. All paths are relative to the top-level results directory. - - ## Pipeline overview The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes data using the following steps: - [FastQC](#fastqc) - Raw read QC +- [fastp](#fastp) - Adapter and quality trimming - [MultiQC](#multiqc) - Aggregate report describing results and QC from the whole pipeline - [Pipeline information](#pipeline-information) - Report metrics generated during the workflow execution @@ -39,6 +38,21 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d The FastQC plots displayed in the MultiQC report shows _untrimmed_ reads. They may contain adapter sequence and potentially regions with low quality. ::: +### fastp + +
+Output files + +- `fastp/` + - `*.fastp.html`: Trimming report in html format. + - `*.fastp.json`: Trimming report in json format. + - `*.fastp.log`: Trimming log file. + - `*.fastq.gz`: If `--save_trimmed` is specified, FastQ files **after** adapter trimming will be placed in this directory. + +
+ +[fastp](https://github.com/OpenGene/fastp) is a tool designed to provide fast, all-in-one preprocessing for FastQ files. It has been developed in C++ with multithreading support to achieve higher performance. fastp can be used in this pipeline for standard adapter trimming and quality filtering. + ### MultiQC
diff --git a/docs/usage.md b/docs/usage.md index cd4d789..bc953b2 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -6,8 +6,6 @@ ## Introduction - - ## Samplesheet input You will need to create a samplesheet with information about the samples you would like to analyse before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 columns, and a header row as shown in the examples below. @@ -18,30 +16,26 @@ You will need to create a samplesheet with information about the samples you wou ### Multiple runs of the same sample -The `sample` identifiers have to be the same when you have re-sequenced the same sample more than once e.g. to increase sequencing depth. The pipeline will concatenate the raw reads before performing any downstream analysis. Below is an example for the same sample sequenced across 3 lanes: +The `sample` identifiers have to be the same when you have re-sequenced the same sample more than once e.g. to increase sequencing depth. The pipeline will concatenate the raw reads before performing any downstream analysis. Below is an example for the same sample sequenced across 2 lanes: ```csv title="samplesheet.csv" sample,fastq_1,fastq_2 -CONTROL_REP1,AEG588A1_S1_L002_R1_001.fastq.gz,AEG588A1_S1_L002_R2_001.fastq.gz -CONTROL_REP1,AEG588A1_S1_L003_R1_001.fastq.gz,AEG588A1_S1_L003_R2_001.fastq.gz -CONTROL_REP1,AEG588A1_S1_L004_R1_001.fastq.gz,AEG588A1_S1_L004_R2_001.fastq.gz +SAMPLE3_SE,https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/illumina/amplicon/sample1_R1.fastq.gz, +SAMPLE3_SE,https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/illumina/amplicon/sample2_R1.fastq.gz, ``` ### Full samplesheet -The pipeline will auto-detect whether a sample is single- or paired-end using the information provided in the samplesheet. The samplesheet can have as many columns as you desire, however, there is a strict requirement for the first 3 columns to match those defined in the table below. +The pipeline will auto-detect whether a sample is single- or paired-end using the information provided in the samplesheet. -A final samplesheet file consisting of both single- and paired-end data may look something like the one below. This is for 6 samples, where `TREATMENT_REP3` has been sequenced twice. +A final samplesheet file consisting of both single- and paired-end data may look something like the one below. This is for 3 samples, where `SAMPLE3_SE` has been sequenced twice. ```csv title="samplesheet.csv" sample,fastq_1,fastq_2 -CONTROL_REP1,AEG588A1_S1_L002_R1_001.fastq.gz,AEG588A1_S1_L002_R2_001.fastq.gz -CONTROL_REP2,AEG588A2_S2_L002_R1_001.fastq.gz,AEG588A2_S2_L002_R2_001.fastq.gz -CONTROL_REP3,AEG588A3_S3_L002_R1_001.fastq.gz,AEG588A3_S3_L002_R2_001.fastq.gz -TREATMENT_REP1,AEG588A4_S4_L003_R1_001.fastq.gz, -TREATMENT_REP2,AEG588A5_S5_L003_R1_001.fastq.gz, -TREATMENT_REP3,AEG588A6_S6_L003_R1_001.fastq.gz, -TREATMENT_REP3,AEG588A6_S6_L004_R1_001.fastq.gz, +SAMPLE1_PE,https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/illumina/amplicon/sample1_R1.fastq.gz,https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/illumina/amplicon/sample1_R2.fastq.gz +SAMPLE2_PE,https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/illumina/amplicon/sample2_R1.fastq.gz,https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/illumina/amplicon/sample2_R2.fastq.gz +SAMPLE3_SE,https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/illumina/amplicon/sample1_R1.fastq.gz, +SAMPLE3_SE,https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/illumina/amplicon/sample2_R1.fastq.gz, ``` | Column | Description | diff --git a/subworkflows/local/utils_nfcore_demo_pipeline/main.nf b/subworkflows/local/utils_nfcore_demo_pipeline/main.nf index 9457ca2..326c1ae 100644 --- a/subworkflows/local/utils_nfcore_demo_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_demo_pipeline/main.nf @@ -198,9 +198,7 @@ def genomeExistsError() { // Generate methods description for MultiQC // def toolCitationText() { - // TODO nf-core: Optionally add in-text citation tools to this list. - // Can use ternary operators to dynamically construct based conditions, e.g. params["run_xyz"] ? "Tool (Foo et al. 2023)" : "", - // Uncomment function in methodsDescriptionText to render in MultiQC report + def citation_text = [ "Tools used in the workflow included:", "FastQC (Andrews 2010),", @@ -212,12 +210,11 @@ def toolCitationText() { } def toolBibliographyText() { - // TODO nf-core: Optionally add bibliographic entries to this list. - // Can use ternary operators to dynamically construct based conditions, e.g. params["run_xyz"] ? "
  • Author (2023) Pub name, Journal, DOI
  • " : "", // Uncomment function in methodsDescriptionText to render in MultiQC report def reference_text = [ "
  • Andrews S, (2010) FastQC, URL: https://www.bioinformatics.babraham.ac.uk/projects/fastqc/).
  • ", - "
  • Ewels, P., Magnusson, M., Lundin, S., & Käller, M. (2016). MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics , 32(19), 3047–3048. doi: /10.1093/bioinformatics/btw354
  • " + "
  • Chen, S., Zhou, Y., Chen, Y., & Gu, J. (2018). fastp: an ultra-fast all-in-one FASTQ preprocessor. Bioinformatics , 34(17), i884-i890. doi: /10.1093/bioinformatics/bty560
  • ", + "
  • Ewels, P., Magnusson, M., Lundin, S., & Käller, M. (2016). MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics , 32(19), 3047-3048. doi: /10.1093/bioinformatics/btw354
  • " ].join(' ').trim() return reference_text @@ -237,9 +234,9 @@ def methodsDescriptionText(mqc_methods_yaml) { meta["tool_citations"] = "" meta["tool_bibliography"] = "" - // TODO nf-core: Only uncomment below if logic in toolCitationText/toolBibliographyText has been filled! - // meta["tool_citations"] = toolCitationText().replaceAll(", \\.", ".").replaceAll("\\. \\.", ".").replaceAll(", \\.", ".") - // meta["tool_bibliography"] = toolBibliographyText() + // nf-core: Only uncomment below if logic in toolCitationText/toolBibliographyText has been filled! + meta["tool_citations"] = toolCitationText().replaceAll(", \\.", ".").replaceAll("\\. \\.", ".").replaceAll(", \\.", ".") + meta["tool_bibliography"] = toolBibliographyText() def methods_text = mqc_methods_yaml.text From a26130a0147fe8631345e3e6d197f27a439a4159 Mon Sep 17 00:00:00 2001 From: christopher-hakkaart Date: Mon, 6 May 2024 12:05:55 +0200 Subject: [PATCH 07/25] Add metro --- .github/workflows/ci.yml | 3 --- README.md | 9 ++++---- docs/images/nf-core-demo-subway.png | Bin 0 -> 22689 bytes docs/images/nf-core-demo-subway.svg | 33 ++++++++++++++++++++++++++++ 4 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 docs/images/nf-core-demo-subway.png create mode 100644 docs/images/nf-core-demo-subway.svg diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4556f7e..3e58e5f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,8 +39,5 @@ jobs: uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 - name: Run pipeline with test data - # TODO nf-core: You can customise CI pipeline run tests as required - # For example: adding multiple test runs with different parameters - # Remember that you can parallelise this by using strategy.matrix run: | nextflow run ${GITHUB_WORKSPACE} -profile test,docker --outdir ./results diff --git a/README.md b/README.md index 246d574..c54af46 100644 --- a/README.md +++ b/README.md @@ -21,12 +21,11 @@ **nf-core/demo** is a simple nf-core style bioinformatics pipeline for workshops and demonstrations. It was created using the nf-core template and is designed to run quickly using small test data files. - +![nf-core/demo metro map](docs/images/nf-core-demo_subway.png) -1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/)) -2. Adapter and quality trimming ([`Fastp`](https://github.com/OpenGene/fastp)) -3. Present QC for raw reads ([`MultiQC`](http://multiqc.info/)) +1. Read QC ([`FASTQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/)) +2. Adapter and quality trimming ([`FASTP`](https://github.com/OpenGene/fastp)) +3. Present QC for raw reads ([`MULTIQC`](http://multiqc.info/)) ## Usage diff --git a/docs/images/nf-core-demo-subway.png b/docs/images/nf-core-demo-subway.png new file mode 100644 index 0000000000000000000000000000000000000000..8006ca83ab6b1292932647f7ad2b540d2cbb75d3 GIT binary patch literal 22689 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 i + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From aba2cb489ac9a566c13db18b38f237e3526a810b Mon Sep 17 00:00:00 2001 From: christopher-hakkaart Date: Mon, 6 May 2024 12:07:37 +0200 Subject: [PATCH 08/25] Remove TODO --- assets/methods_description_template.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/assets/methods_description_template.yml b/assets/methods_description_template.yml index 8099274..1e32f22 100644 --- a/assets/methods_description_template.yml +++ b/assets/methods_description_template.yml @@ -3,7 +3,6 @@ description: "Suggested text and references to use when describing pipeline usag section_name: "nf-core/demo Methods Description" section_href: "https://github.com/nf-core/demo" plot_type: "html" -## TODO nf-core: Update the HTML below to your preferred methods description, e.g. add publication citation for this pipeline ## You inject any metadata in the Nextflow '${workflow}' object data: |

    Methods

    From 928b8835cd3fae70dadb7de842ed217fbb70d95d Mon Sep 17 00:00:00 2001 From: christopher-hakkaart Date: Mon, 6 May 2024 12:10:02 +0200 Subject: [PATCH 09/25] Fix subway --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c54af46..1bd32f0 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ **nf-core/demo** is a simple nf-core style bioinformatics pipeline for workshops and demonstrations. It was created using the nf-core template and is designed to run quickly using small test data files. -![nf-core/demo metro map](docs/images/nf-core-demo_subway.png) +![nf-core/demo metro map](docs/images/nf-core-demo-subway.png) 1. Read QC ([`FASTQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/)) 2. Adapter and quality trimming ([`FASTP`](https://github.com/OpenGene/fastp)) From 226619177823b97c9d2c0e9614ca28b198b56387 Mon Sep 17 00:00:00 2001 From: christopher-hakkaart Date: Mon, 6 May 2024 12:17:11 +0200 Subject: [PATCH 10/25] Fix subway again --- docs/images/nf-core-demo-subway.png | Bin 22689 -> 22934 bytes docs/images/nf-core-demo-subway.svg | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/images/nf-core-demo-subway.png b/docs/images/nf-core-demo-subway.png index 8006ca83ab6b1292932647f7ad2b540d2cbb75d3..1a2ebcdb44a20c13f834c87885f4319e268f5722 100644 GIT binary patch delta 21797 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 delta 21565 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 WfLnq_G4S6W2xM(xZ(e8WP5KZ0mHs3E diff --git a/docs/images/nf-core-demo-subway.svg b/docs/images/nf-core-demo-subway.svg index 9b009e1..90706b8 100644 --- a/docs/images/nf-core-demo-subway.svg +++ b/docs/images/nf-core-demo-subway.svg @@ -22,7 +22,7 @@ - + From f5d3f04aefadb5e32932230dc50ff61abec6b67c Mon Sep 17 00:00:00 2001 From: mashehu Date: Wed, 8 May 2024 13:58:59 +0200 Subject: [PATCH 11/25] Template update for nf-core/tools version 2.13.2.dev0 --- .editorconfig | 6 +- .github/PULL_REQUEST_TEMPLATE.md | 2 +- .github/workflows/awsfulltest.yml | 10 +- .github/workflows/awstest.yml | 12 +- .github/workflows/ci.yml | 4 +- .github/workflows/download_pipeline.yml | 22 ++- .github/workflows/fix-linting.yml | 6 +- .github/workflows/linting.yml | 18 +- .github/workflows/linting_comment.yml | 2 +- .github/workflows/release-announcements.yml | 6 +- .nf-core.yml | 1 + .pre-commit-config.yaml | 3 + README.md | 2 +- assets/nf-core-demo_logo_light.png | Bin 70502 -> 70504 bytes conf/base.config | 3 - conf/modules.config | 8 - conf/test.config | 2 +- conf/test_full.config | 2 +- docs/images/nf-core-demo_logo_dark.png | Bin 24773 -> 24802 bytes docs/images/nf-core-demo_logo_light.png | Bin 21507 -> 21507 bytes docs/usage.md | 2 + modules.json | 4 +- modules/nf-core/fastqc/main.nf | 6 + nextflow.config | 176 +++++++++--------- nextflow_schema.json | 7 + pyproject.toml | 15 -- .../local/utils_nfcore_demo_pipeline/main.nf | 16 +- .../nf-core/utils_nfcore_pipeline/main.nf | 8 +- workflows/demo.nf | 46 +++-- 29 files changed, 220 insertions(+), 169 deletions(-) delete mode 100644 pyproject.toml diff --git a/.editorconfig b/.editorconfig index dd9ffa5..72dda28 100644 --- a/.editorconfig +++ b/.editorconfig @@ -28,10 +28,6 @@ indent_style = unset [/assets/email*] indent_size = unset -# ignore Readme -[README.md] -indent_style = unset - -# ignore python +# ignore python and markdown [*.{py,md}] indent_style = unset diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 25cb277..ff0fbb1 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -18,7 +18,7 @@ Learn more about contributing: [CONTRIBUTING.md](https://github.com/nf-core/demo - [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/nf-core/demo/tree/master/.github/CONTRIBUTING.md) - [ ] If necessary, also make a PR on the nf-core/demo _branch_ on the [nf-core/test-datasets](https://github.com/nf-core/test-datasets) repository. - [ ] Make sure your code lints (`nf-core lint`). -- [ ] Ensure the test suite passes (`nf-test test main.nf.test -profile test,docker`). +- [ ] Ensure the test suite passes (`nextflow run . -profile test,docker --outdir `). - [ ] Check for unexpected warnings in debug mode (`nextflow run . -profile debug,test,docker --outdir `). - [ ] Usage Documentation in `docs/usage.md` is updated. - [ ] Output Documentation in `docs/output.md` is updated. diff --git a/.github/workflows/awsfulltest.yml b/.github/workflows/awsfulltest.yml index d6b0d34..ba146cd 100644 --- a/.github/workflows/awsfulltest.yml +++ b/.github/workflows/awsfulltest.yml @@ -8,12 +8,12 @@ on: types: [published] workflow_dispatch: jobs: - run-tower: + run-platform: name: Run AWS full tests if: github.repository == 'nf-core/demo' runs-on: ubuntu-latest steps: - - name: Launch workflow via tower + - name: Launch workflow via Seqera Platform uses: seqeralabs/action-tower-launch@v2 # TODO nf-core: You can customise AWS full pipeline tests as required # Add full size test data (but still relatively small datasets for few samples) @@ -33,7 +33,7 @@ jobs: - uses: actions/upload-artifact@v4 with: - name: Tower debug log file + name: Seqera Platform debug log file path: | - tower_action_*.log - tower_action_*.json + seqera_platform_action_*.log + seqera_platform_action_*.json diff --git a/.github/workflows/awstest.yml b/.github/workflows/awstest.yml index b4805e9..83eb92a 100644 --- a/.github/workflows/awstest.yml +++ b/.github/workflows/awstest.yml @@ -5,13 +5,13 @@ name: nf-core AWS test on: workflow_dispatch: jobs: - run-tower: + run-platform: name: Run AWS tests if: github.repository == 'nf-core/demo' runs-on: ubuntu-latest steps: - # Launch workflow using Tower CLI tool action - - name: Launch workflow via tower + # Launch workflow using Seqera Platform CLI tool action + - name: Launch workflow via Seqera Platform uses: seqeralabs/action-tower-launch@v2 with: workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }} @@ -27,7 +27,7 @@ jobs: - uses: actions/upload-artifact@v4 with: - name: Tower debug log file + name: Seqera Platform debug log file path: | - tower_action_*.log - tower_action_*.json + seqera_platform_action_*.log + seqera_platform_action_*.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4556f7e..1c32fe6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,10 +28,10 @@ jobs: - "latest-everything" steps: - name: Check out pipeline code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 - name: Install Nextflow - uses: nf-core/setup-nextflow@v1 + uses: nf-core/setup-nextflow@v2 with: version: "${{ matrix.NXF_VER }}" diff --git a/.github/workflows/download_pipeline.yml b/.github/workflows/download_pipeline.yml index 08622fd..2d20d64 100644 --- a/.github/workflows/download_pipeline.yml +++ b/.github/workflows/download_pipeline.yml @@ -14,6 +14,8 @@ on: pull_request: types: - opened + - edited + - synchronize branches: - master pull_request_target: @@ -28,11 +30,14 @@ jobs: runs-on: ubuntu-latest steps: - name: Install Nextflow - uses: nf-core/setup-nextflow@v1 + uses: nf-core/setup-nextflow@v2 - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5 + - name: Disk space cleanup + uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 + + - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 with: - python-version: "3.11" + python-version: "3.12" architecture: "x64" - uses: eWaterCycle/setup-singularity@931d4e31109e875b13309ae1d07c70ca8fbc8537 # v7 with: @@ -65,8 +70,17 @@ jobs: - name: Inspect download run: tree ./${{ env.REPOTITLE_LOWERCASE }} - - name: Run the downloaded pipeline + - name: Run the downloaded pipeline (stub) + id: stub_run_pipeline + continue-on-error: true env: NXF_SINGULARITY_CACHEDIR: ./ NXF_SINGULARITY_HOME_MOUNT: true run: nextflow run ./${{ env.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ env.REPO_BRANCH }}) -stub -profile test,singularity --outdir ./results + - name: Run the downloaded pipeline (stub run not supported) + id: run_pipeline + if: ${{ job.steps.stub_run_pipeline.status == failure() }} + env: + NXF_SINGULARITY_CACHEDIR: ./ + NXF_SINGULARITY_HOME_MOUNT: true + run: nextflow run ./${{ env.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ env.REPO_BRANCH }}) -profile test,singularity --outdir ./results diff --git a/.github/workflows/fix-linting.yml b/.github/workflows/fix-linting.yml index 962d6f6..600cd15 100644 --- a/.github/workflows/fix-linting.yml +++ b/.github/workflows/fix-linting.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: # Use the @nf-core-bot token to check out so we can push later - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 with: token: ${{ secrets.nf_core_bot_auth_token }} @@ -32,9 +32,9 @@ jobs: GITHUB_TOKEN: ${{ secrets.nf_core_bot_auth_token }} # Install and run pre-commit - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5 + - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 with: - python-version: 3.11 + python-version: "3.12" - name: Install pre-commit run: pip install pre-commit diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 073e187..a3fb254 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -14,12 +14,12 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 - - name: Set up Python 3.11 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5 + - name: Set up Python 3.12 + uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 with: - python-version: 3.11 + python-version: "3.12" cache: "pip" - name: Install pre-commit @@ -32,14 +32,14 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out pipeline code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 - name: Install Nextflow - uses: nf-core/setup-nextflow@v1 + uses: nf-core/setup-nextflow@v2 - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5 + - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 with: - python-version: "3.11" + python-version: "3.12" architecture: "x64" - name: Install dependencies @@ -60,7 +60,7 @@ jobs: - name: Upload linting log file artifact if: ${{ always() }} - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4 + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4 with: name: linting-logs path: | diff --git a/.github/workflows/linting_comment.yml b/.github/workflows/linting_comment.yml index b706875..40acc23 100644 --- a/.github/workflows/linting_comment.yml +++ b/.github/workflows/linting_comment.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Download lint results - uses: dawidd6/action-download-artifact@f6b0bace624032e30a85a8fd9c1a7f8f611f5737 # v3 + uses: dawidd6/action-download-artifact@09f2f74827fd3a8607589e5ad7f9398816f540fe # v3 with: workflow: linting.yml workflow_conclusion: completed diff --git a/.github/workflows/release-announcements.yml b/.github/workflows/release-announcements.yml index d468aea..03ecfcf 100644 --- a/.github/workflows/release-announcements.yml +++ b/.github/workflows/release-announcements.yml @@ -12,7 +12,7 @@ jobs: - name: get topics and convert to hashtags id: get_topics run: | - curl -s https://nf-co.re/pipelines.json | jq -r '.remote_workflows[] | select(.full_name == "${{ github.repository }}") | .topics[]' | awk '{print "#"$0}' | tr '\n' ' ' >> $GITHUB_OUTPUT + echo "topics=$(curl -s https://nf-co.re/pipelines.json | jq -r '.remote_workflows[] | select(.full_name == "${{ github.repository }}") | .topics[]' | awk '{print "#"$0}' | tr '\n' ' ')" >> $GITHUB_OUTPUT - uses: rzr/fediverse-action@master with: @@ -25,13 +25,13 @@ jobs: Please see the changelog: ${{ github.event.release.html_url }} - ${{ steps.get_topics.outputs.GITHUB_OUTPUT }} #nfcore #openscience #nextflow #bioinformatics + ${{ steps.get_topics.outputs.topics }} #nfcore #openscience #nextflow #bioinformatics send-tweet: runs-on: ubuntu-latest steps: - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5 + - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 with: python-version: "3.10" - name: Install dependencies diff --git a/.nf-core.yml b/.nf-core.yml index 3805dc8..ef7b7ab 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -1 +1,2 @@ repository_type: pipeline +nf_core_version: "2.13.2.dev0" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index af57081..4dc0f1d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,6 +3,9 @@ repos: rev: "v3.1.0" hooks: - id: prettier + additional_dependencies: + - prettier@3.2.5 + - repo: https://github.com/editorconfig-checker/editorconfig-checker.python rev: "2.7.3" hooks: diff --git a/README.md b/README.md index 7912819..9a70485 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ [![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/) [![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/) [![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/) -[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://tower.nf/launch?pipeline=https://github.com/nf-core/demo) +[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/nf-core/demo) [![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23demo-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/demo)[![Follow on Twitter](http://img.shields.io/badge/twitter-%40nf__core-1DA1F2?labelColor=000000&logo=twitter)](https://twitter.com/nf_core)[![Follow on Mastodon](https://img.shields.io/badge/mastodon-nf__core-6364ff?labelColor=FFFFFF&logo=mastodon)](https://mstdn.science/@nf_core)[![Watch on YouTube](http://img.shields.io/badge/youtube-nf--core-FF0000?labelColor=000000&logo=youtube)](https://www.youtube.com/c/nf-core) diff --git a/assets/nf-core-demo_logo_light.png b/assets/nf-core-demo_logo_light.png index 0ef9fa5dd6448acf82a09f81e9170b43f09e8d46..2543e503f6ce36751c848248e716828ce00829f5 100644 GIT binary patch delta 27283 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 xSfijA6{pNM@e*hZiRE_`u diff --git a/conf/base.config b/conf/base.config index 4639378..6c54c80 100644 --- a/conf/base.config +++ b/conf/base.config @@ -59,7 +59,4 @@ process { errorStrategy = 'retry' maxRetries = 2 } - withName:CUSTOM_DUMPSOFTWAREVERSIONS { - cache = false - } } diff --git a/conf/modules.config b/conf/modules.config index e3ea8fa..d203d2b 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -22,14 +22,6 @@ process { ext.args = '--quiet' } - withName: CUSTOM_DUMPSOFTWAREVERSIONS { - publishDir = [ - path: { "${params.outdir}/pipeline_info" }, - mode: params.publish_dir_mode, - pattern: '*_versions.yml' - ] - } - withName: 'MULTIQC' { ext.args = { params.multiqc_title ? "--title \"$params.multiqc_title\"" : '' } publishDir = [ diff --git a/conf/test.config b/conf/test.config index 0d5e11e..9c230e5 100644 --- a/conf/test.config +++ b/conf/test.config @@ -22,7 +22,7 @@ params { // Input data // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets // TODO nf-core: Give any required params for the test so that command line flags are not needed - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/samplesheet/samplesheet_test_illumina_amplicon.csv' + input = params.pipelines_testdata_base_path + 'viralrecon/samplesheet/samplesheet_test_illumina_amplicon.csv' // Genome references genome = 'R64-1-1' diff --git a/conf/test_full.config b/conf/test_full.config index 26af182..479ef3c 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -17,7 +17,7 @@ params { // Input data for full size test // TODO nf-core: Specify the paths to your full test data ( on nf-core/test-datasets or directly in repositories, e.g. SRA) // TODO nf-core: Give any required params for the test so that command line flags are not needed - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/samplesheet/samplesheet_full_illumina_amplicon.csv' + input = params.pipelines_testdata_base_path + 'viralrecon/samplesheet/samplesheet_full_illumina_amplicon.csv' // Genome references genome = 'R64-1-1' diff --git a/docs/images/nf-core-demo_logo_dark.png b/docs/images/nf-core-demo_logo_dark.png index 5e22400718cf36ae8245720c95734200bb455901..44f9995555ec59c4889badcc89511d95f9e0cb0e 100644 GIT binary patch delta 24181 zcmX`SWmr_-`#n5_faD+`-5}BoNJ+zh($X-1q(ey~4TomvknWI{WvF^3k>gz`P*^O3Hfd()sLS?i)vkq51vRFQ4OFhirl9acy zeI(?f9;9^BfJ(El2c?0G$2}86wZ^sDsyDR>r@eA^SC5axStIte^*_j9_F=x@0~IhO znvvL~j)_g{dk1hnq@jl=gmUJ{nK+KmD(f~2C8GDXXshiY3DgD{aAFW|5 z`v3I_0<~Rzs!pq3e2_q_e^DHJLJXueUxGk8OC%A}AOsE+sofKLf+#up`*<8?NO%11 zpK+htYtVl^x~=t9i*C~p_^Q|;?GVI)l-la06d>V5PSC=O%>q~tGBs$Q{-Ucj>3==- zV!96%$PX2NJln-D^WdjQpoF5@!0LgSGrdsJgl<hw8dEfsWs`W7z*6<&zhg;evMMFa$(HpdJ|vbgii=$m-BBJz)SIGfQq_Bk9% zHOTfI9KZpXWTS~0L+HI@Q||_1r2buWdN4dVymI#fn+?Aud@|w9JE=Pjsp?mMXRmVSD!x z0bF6g%?iQ#qjt#_mAWPV{~GT;*AyAB1?r_h-@wOC?8-zY-7MYDP+58rf5q#4ZTYf= zZ*JeP*8E|{z27L}xndA2DuOBujP<!Ejqz@D4RR&s;sQ^pVq@-#2ukdw#&zMvMBFUUq=lF7f9Z{{S@e!r|FO`}9R?ReC` z`!4vuwlI}(7<<2MWZxocFKGxQf_CA5u%`l#V`TMLLuc~wt9Zx7YZFH%{})ySBn}(v zIcCou4YN7E7~oeW^qj$Ha(TJcC8_5RZYqt>*G2q;eta+*zJI|qB*uy#>%Yd+$e*1F z*&oboCUO>$%ARD(ZB!_*H&oTub^^EvkC;(Y(3jtPY6Guw6!GRn1aDKCE-$r}{UA4y z7Mbs6R9Nwo=IxjMoqYFk>?um^R~vX40+u)3@jtEu>hr?sz2%iK4BTCtjXD5Q**_dA zi=;II>rOWn8Q@x#Z=j8EtET@IPryVP3JNc}*%>f2n=FUzRH&b#p#`?-Qzq-`pJ z@IQ3g!(FWh8Wx}bykV<5vS<^wv}NUD65u~16#c!f=D!to|C|P=KZkV77c}i@zw`&; z{Yu142$LF-J!bSAD?7W*tNUV?+ai{Tq~ezOr(^KsmE`r(2=;3q_tiJgzCz58GkG(T zJ_M(J76iUaf-2c`QQJeYPQ|QW#7u=3kd__{0x|LZ8-X_D-zUW6v^#cKPf34rB9Gz2 z`!TI(_MB+~ZSoa}?1eVCS<~O$?`|tscwFq4#^qA|3+UeulI4#PNM2;wZj8@3qcD=_ z7X|_ijwNkKAfWMu%0iWpp-3Gal-&Q8QS#fyjVpi^8OQIpNAF$5(lQC2v>v343$|z;aKYQ%-o3Lk*UOp}_(Lh+bac{XEH4Hu0GK)R%L; zz|5_0A^pMllCpe3@6bmpZ8rL+1bf1<4~K&Q%pUOFqulbVJ7>7Holb&_abnc2iCWbNwSaB3r) zTNB02Cxbs+SRJ=)+?-WuWTeJxzF}~w#N&DHA&@tiM-fq}D0CXO!C}G@xnL-`wj4{mp3nACFq4U6Of>xj+1jemDIlV)TGT_G5TwT@#YwMUg=GW6 z&xq3~GiJyU)}wbS*|*uQaSZ%Y`Ow@z{o@-utMk!3F!6}u-s0}Dfphz|v}A)X^pe>0 zJicG&tkZQoLOuj|o$@wlwvqz#r@#lQAQZ6R<})cxdO-)jOP-?Ywz}#O_ZoQ_I#+ic zHQ`q#bZ*SwAXVb;hPMaB!fAQ!H%0m`N3!P-hxm&Qy-kbvm1AzZA>%C#GfVfrCf@Vh zRxvc*59>d1g(9URu#!hz<9cV{U|hytiqFM+XXz)Ao6kQ1RgB=7WGEiiGMzq}d*{Q! z{os_aVnuq^r_$Y^zyuWD)QKgn~ zba6vu0kDxYruczy!Z!CwZW6O*T2$+ktf?=5LJ-;yV z#p>!iOUb(Z&Z6DF#|FcJX?hZ;kbwt z$+w9%rI&%Sas68h)e@ssZdDAL4aGmh2Ln1TV-u_a=|?=09E>5q@!`5OTcM@%$R)}m zg0%0)(d>^OlX~o)GJB;fojXwMO}(-(Mg-`(iYlAT?7dr3efE{7S5l3w!d1^vuUDOn zIspY#<6Xn;3Qbc$ftIwqht>Td&XMMAO0=dm_u}nN)Qdo;SFlPCkvTpLm935^cINml zyUH_o$KION4_f6Ftyq;)bZR-O7LLc#ZO74lgoTEj9-bK--1ZX|R*HzzpmYL|F#rm{ z-iWXs^>yWUrR-v1$j>@d-i7^f(ScAoHRmGPmQ5`zqAXb*Q;X)zq6+??9e(2EG)e}5is1ylJB23SfHta}z9;j-`&Iux&qS7y2x~d)i9+;ULVTt6 z__W-CUTp8wF}4E5(V1$T?NUUvX3TDIIx#c$ah)o(ArPVKlPeL8kg`?20`2fHdDm&} z&P3nberqz93`u$&AbLdIwjSCo06GVorWxoBvy!*D;)^(~9Ml6JMTsSbM~Q6h0D_G; z=*%3)=4hKE&Y~G~N8a>3MO&tx(t-A|XCjk+Q6jh9Q6I&oaSHL|>i}J^T!}EmI^QI1 ze_E^Uqu<9-%l*@0@By+F{~wzEgBQ_{&1> z(fAQWbI$OYNs|^as9^WuDJZa85}*Hsg8fGHO^a8+o&7}4O;L<|U+3)w`2o4McudbF zt}#TwDP-#A)i~sLLIZmE2{)({IQr5Ur$`+7Eupx%A_bsZPq%d8qM)GAk7pTrD(y=q z&5LzbwWKd`m$JNTyo0c2#p%R8!K-v0*q{CLDDJv5+EZ0~XtvYq12kyb5)XKCb=_K9 zG(9BrIV7Thq2!FunqbSrd%@_ra zZ9mp!`v8QF?b?Ix<7A+qt3bq2+-Oq>n1?rYgou>vxT~wnK{2r{Ct#j`;Cn-@ArbY$ z&@B{-{P63o{ly*lr^Qk!bvE9*O5(41`MxE!QE^evE1$|SI>rO>r<46XVpktBS*&6- zJ-IVGe`Ss64CTz*I%_C!*Jjwbx&Qt3-lOM>Hy|@vsZFkte*Yw{AHGU7hY1;b{OQ}%5E)p0Sr%etC+6M z1eJ}vwns;fZX8w4vd9`K-w3mS)Dq0l+8&H8lQ{1PBV&Ht9M|-FXS0c=s)Klo@CeN9Si zZ#&Wr>l*F9Js|IAd4u12lvj(xa~sh(#MwXmZNO{3qom*<%xCbo-`PVRT=lor&qraa zo6jZc$8l(B1z-1=L3={0v8+WkYvBh!2Xg;5*;D;y7f!I0pLtfQn6ZNA&3QD~p(OsL zxS@1OH6;5B$|KbR2uO z8k~Mxa77wA9ZwmI z8k@0ixkYi_DP1H$$Q9(-M0eM$D(#mKs<=kp7euU)1p&ypV)gu#cdWqK8&rnJ<6YZ%{ zNdg3SE(Id>sUj|G#`V_FN~L8>Y{J3&u8>og_ALPd;wgQH%11Kl^VxZ0v0q?CPl5IzF?UCH9 zSd-zmX|vSix#uPTRpN_EjFXpVAJ+BH7J&L=tlwHn?90~8pAsMvwM7$0jU!!#^zRew z5m^V;d}Y{q-J7b@HxsG9~~Lu>qey#uK#(loXwUj_U|S90UELb_^1)^wHr4d(8MUHy9Y8P}n`S9*)O#gZ4D@3VkOYnnnnH8a3l zWW=X|5Xm&y2I>RfWUe}Qv5Pr6$*_6TVrHfSln zB9ZiGlDE9@aS6q|!1NNaRR8y!7Zxw?VNCoMd-teps19d5PA^4!y9jEZ5H6*)2W!p? zoORIRSt4wa-T|6!xN)U5FVUhamH>&&dTZPj^}LX;=(fy*4%^^$CAx`l)g1B|QA`Mr zIk~@D#2UXC$;SOr$@Dx3>BVKvfkMb5zc6R$(Y?|7MPIlX}^rutf)bETAa6d-PtxOe?2V9 z`pN^d#RNHS5;ekFmV#o7oEpiN*~~Nt_|j&*smh@boafzic7Pm?I@exXckMqQ4vx!FLNR^oj5pr zZbxpd#H#6A>oXt#GHpKFl_e?ltg4h%Z&d)F$rHPB438uEuhnbHfiMDUxWb8{!c3G5 zF8`Zggk-;D=zyp_s$oo}Mqg*jvpbF$?F$yO|2fr#pDf`wyve#g4GceO~-b zBf+%9YyFfK89__YoIz>D1h0uKo0lYB{V9||o5uAeA0L2YiJb*wrDCHP=T;fkh_JIw z6RV@Md}W11BSG>1Xtb1U_r5+ze-jq{ym*eh*p&T1frDaA{|k8hqyq6hGf%?23)ki= zi6k5o9it$E{7TGUrj7s>(b)n88^97pW*cOFJkj`v)pHed*D|}B{smyTo*b^w=Ja@(bW0h)#o|4ZE6Ed3SsHD z!J4Ty_Qmd7s#ONT!NEQ@MN;^&p(Qkik-E>hFp2C(-HLv%|52V%!CAAS=j-R;DoEC_ zBd|Z1BU)YhAp{Sb%fQ+HJi4;(60hogP&+Uj>2&lqM_CCY!I3>#X_+>B=7Oi)Z6*VF zpZ>2Rp-GYk!!+o%&kiXvYHk+D5pzBHny%$7P_xwig9}WYMT9o`=zG$g+Sp(|7%5P7 za~P?``{>1a``djLf>l9F6*@|F71n>Dd7fv2Rcgs)b%X>RvAgdU(E6tMEwBtlElnoR zy;Y!!82Vwmd`RWwKzbiM1-Gr(l>-4ui!FUQ7ScF@F{;+fk88H`M)-6}WqQ}P7f?`B zLqk0}zA8)j!)@cS;o22Mb(;L;)G^&+*Wn>GOkm8XDFd7X^27l3Q zk3;6V&I+L2c^sL#rU^T)MZi$(=$BV=_<`v?JLm&QX*BDj zff5`4Lb$pA=^HExwxH`Ritck)_*}WA?S)!niN+NtTb=j7Eu9i)O{-EDmioIogvv%`NQJpfWDY?r+be zccx|C!zmt{0FmE5q20`$S*8yj@#LM0=IM9e*a)2QYg5vP!tB~uHVdh4CUjOR z$OXGkN3QR;;QXU}V33HtBIkz={ZC$XBc_mbEzd7egt>z zE#EFXp`a#X@n?A_phDcS_GfP0W1TW8{I=_!vP<=w z`((+^k|OV{q;J+&$(ACPC`xD=vCawx^V^zzr1FFF8z9%?z8Q5xKs)Qk`P}|G_Yvm5 z^v`&mofj_2=jj2fsMNa%`7%6dY_ag3@b-r>^tPCJ;amu$H$Omg_*_Z(U9Lm9 z%jePNK}AVnS4Zm~%QWBO4c2`a;W+d0b{AnD#@MB_SMqvhW{)q6qaF%=ufvgiOt3kjE13v}eIn4{fbu z#NdwYrx&1&idaXp^luSx6(Sy1Rq0yM%u^$dH9k@SfvOMN=*xDlONTea8GA7Nenm9?uuI!#w&V3Pnre#(>jKWRN?$FsptG`3buKxQ`9-Mfx5F|M;ntQcI zU)|-%lj^ll9J{fCDkfg2S0JXS82_4lg}IW9Pal&=E7} zB3I&|&X24q4l`OD*`@aUY{2@h<%UrUi(=zCx5%@lrIDa3a%=lbimLPOcMt^%i(B-v zRCG_S4YQ6NHUjK3Qd#?9eJHZLzMKSXjS;XmO zdTYDM+`4_wx3@JgB($?~-K#*aHZ^U%I7PN0vW|D>iUem@t) zoY^lib3XLhgo5mFZkQr%W98G*lIybIQDGw%qd#Z^TYTl8DCmom(Srp$L)gUC}q zYh1pqu(L<85ZtWZ7zj1QYHdCDjQ)-p6`?j>pIy#9mE98x*lquVHmr$WeFFQjOk9qh zT7pdMS;MlAb8mw@tYR$tiP@j@I{D3Wt4Jt-C*_p1rbBBZa1eL*?!BlhaMa8=Xy9}( zaatAaEb480_2|h}MM|Yj9!axHkx6r+$Js@sllxQBb9ZYHpffi9b5Jgon}q%b%TC&! zy->qYqC;aznq7w)T17T!9nV-ZiHMNLhv;#dLB$QqLR?}3%VMrQjh4@k5s4a<+F~nd zHLFyN^G@!A?b3pud(TH#w%Wz`C)~DS*(E2f z>i#>m!>5csNFn$2&1YvY8?58>`wxc* z3sh={;KGbd__}^9MZkP)e1APe0;|Frv&9~|P2k>k|4m&#;$=C2@^hvYN)V zahE_&Jb1bD7`E#tByZVb@6v4R!0ZD!Oc|NQdk&TTHLLdmc6>Y(L-BG&1S0(=FvA3c zkANtorf!jtstCu_za>M#M(|@I3hH3SUd0qWDQQ)^7jrooA4phht(zlQ_(wu)y3eiI zvL>$&yfpsvOj}|8!C1KEsT~lf5FCT0QYi)rr^H<1oM5o1BxoC<>mmZSmq&*&2)_Uz^dm z7)ACj;&1RWXNsL>Q7|{ueyF^Vk?%d7Um*^7?ftK(0MvyO&HLPMRgEQbW*=THUrCnc zxwwKM`K?&hEXFX=lt9LEu0eCdRkjd@r-RHfl5upkv3X)mVEu%DLc(@P=Uzh{Xc#Po z@qc(#Fo{qItX$()sIVD7l!s2cj?uB8;|LSm17Z3l;6JMo+T%>Q_)K@TCus-@+~yQ+ zGdM+|PYmQNDz@Tt+IL2;MlB^q{_489H4}ZV-s{w)2*|t_{(z5BUJPa9vZf8j@g0U@ zqHi^=vkED3K2_#N=sPILqR$#g+NW^r_e<3kco{bKuKbc&ou??FBCe2XL2ZOAfV)!X zOIeDz{n=yk zZ`!OX&^|_aIaO2qMlx3@zuBPZghDf;Vl9|7EPd;xhHaamu*u^1enG_=s9hMowfeDf zgneuH+u2lJTNbsLU&9}#x%C~J3vQ%xm8(ci1sf`n{)`j)&kKw$hLSW-#&s~9OmYsF zBO+W_^}moJzEdrH+3T(XnDZl!9PP*Ye0OJK($a$_Tv($=iJ>#q(PM%b&e%TkYmv85 zZ+{E>u>z>$xOTq^RpYDRxs&nA#-fvp9zsbOdHPEG7V-el&qfs|ier?5>6##$`&)Yo zCsX{KY2|*Uev72QJNxV1l$45_Xc_A#bGR$k&2?16bFBof4+tyZr_q-8TXu#J!6HqY zh5ft2STF44?_n~y()!q@3)@aE5zaar6iJ$@axEqNjC2nRxPsVomWgnW z80A!5>+T@glv(qgvbEMu9p-Ne2vX8MJA`);mR3~KCf%?=LKNfdvTHmydVQ(QrBAHpPCW zPKGT}(f(GwEs<_WsrF$mG@vI1rf(RT5%v~TX(ws<%i(Y+oh>>{_gR8$i&tZb5f71f zD)L9Q{1%*ctXy;M$3k_C-tj)SmBE}z??cVA^P&!rd;lsiDbGBm9Q6{6a2`p10H^iA#?5>wQkv(vp*^mti$1x`N;B0~2*X zv7IUKDbxGzDKXiUd}$i*yMFxE@}Tm{yb~Xb1NBIeDv(IOv3m>dz-6NumOP!h1@oI2 z7X1SDi_nxeS--@W`}GyLT*i0o724}OpBSf@mg)X9JNf{()vAyVrBpon67>4QUVXo=lR~cCVWjv~6PGb$%wT7&ED2`pW-1yF*-nwf7;hFfu(Ki(yDZnuF#Ak+y006{)>up? zRc+K*4zoY1r! zK@|C&>ytbb(H-9P@8`=3|{RMUBN{Q}AH z1S(qN?}3hp<(O5IfSyRVvK>OtmkYx`G>?`Oh(xYW-{5}H-78q=qhXw#B|9mRDP=d47E-!uCA)hHagnso6S#9dOO$g_O^{5uv)6F zEw9M1ez5cx_p1(X%LFvYR!rq+nnf%?zJDPh34XFB@#XWc)6TFRF2*1npEd74to#nGPZLceoZ}D$==U#= zFHx1Ta@QlD;~H{s!QH9t?{G4w2TU*%As%=%*bKa^j4&`x9g= zEq2zcZPf(IxG=WVhG(a~6_NevdRWU*C#P8|-3SbPg4yQZTSQ4=!c^d_U0!&0)OO~p zJo+XyYc&`IX2OUzzRFz}hLhZ@#bYX~;AC9;bl<)*Nu>g}1q;DD!HIT4j%(sg8z-O{ zIIPI#rit;N$!M17+4Xk`DW;W-D}9Kkb&<)I(FKs~bv5b4R!=~ftFd(6YX)O)e1ih< zb*hkl6C{;#Q<>h#qYUS5X;WSfc~)yfUX42<-6w6eY@FaZ|2IjN9s8w)vhM^A|D)=^ zx*z?Kr_mF)x_Xef!ZHJLEdqSxqVd7SW$}&o*gKv~PgBw;5`VpSY774BKAV?gY2)e! zG;7}^xCU3hMvZTkZ1_$xU7Fh(l0{mQ8&8Wj?xoj$<)nAhJ0XH2cyp$Tp?}iOv(1~@@wxYo^g=8tJ_#1WBlin zcahp46yCqFX)ILW*aOp0dtlr)Y7_M&vOl2f&iEs$n#oh$HCnW>QWDchj{v%NBlBh0 zeUlOWeJy^=OdOA)>5d;+o2}rz8~M@AeElb!@JAtd&Ww@~su+f`wiPzO~Iz=G*v;kNlE>^hKb?yHx}(Mt2O@$eTRi-y;DYX>BO zh0<>L0`$emJq%E+*@$4N>L1qiv_;QcW0W2`aSFk6tEjnu?>B<|+|a=Nm~}esAI>pu znpjVOCWl^-ATR_pTX7UhO-PC(mn$7RE%#1MDBsw{9;LD9oA)pj$mmu2M}KPLag?3< z@okZq7_~cLEYNo?ssv!^A^F+AIq7=P;Kmi;q?t3MB%Wj;a?<9L>BC z<#L?T|8p}VkUwh`eDw%6y0mz4myxbZ@qGeLN%Z1ra(fBTEbS|U|L_6x-n`QOh}F4~ z0Ug66OWf;kedS?ktAU*(5zlQx-Ox~F2VCx1emm$cm?IrH;aL{9+leMyYo0Y-!w)4u zsDQlF_-1{CNxs6VD{i&hQ&D%^IhUw zpcR3LJR}c^hSzV`fF*vx(LP;9h5`K{ChnX#7 zMwMO;z^g*Q%xPYopGF@1mXe;36Sd-8tsG~G@s5 zWtEpu(wJIu>|=WN0!~ZA(P#>0SsX(;NWZtsY%z7_oHA;`Rk{7?Obx1LRf~BeVb-8+ zI1C>toOLbx6#5K&t;w_>))&1TTY4V8@!iUhG78BI>91VNJ(O7TCLrvd-R}S?7}W(Q zwPYctE){0)nWmp=D^=w_X1hK%BJP1o|6kML)Rk&Ob-OTP0^;FFFq6*{%<10v5HQo% z*;Y#jr-d6YlrvzL)ZU5Ozz?^iLwAAz)PUuKR6ny45JK5PUeGXkX9RlmQ`CtIoU{-S ze^}a(VEi}Mj0ZcCW;Wxx>Hpdw)A_57cdYf4wt1wR&jijqpl(<(+$(KBtOPwR8`Y`y z_C72YmTKsE+?pzxw&FM8=A_c_+gK`?z#To8+>u|tFIc>2@lZ2y`tJ2Ou4JOFblA5j zWZaASvX7*gsSUNjWKq>R(9?Y{At1Z9ceWZ*>gEyc%g#P~E`2>&93y}7&^;RN5jUS6 zEG7%h%#L%k)5EhZfmG)b_83AEL$Yuf?$)6;-86wiIK-webf&DzD30}=zBeDQpNWx= z+Pc5Vq%%HCD3cgEh2S}7pY3tm3EMvm6sZ$*Z03{gYpH)dYUlj~Y*WuW?t7idjqL3R zQVUbZ^TsetDhb57n8zAk44z3f%+gmGf7vzhIHFW2>SU={$Agb7bAB8Kb=7A|_i?u_mXo(Wz;8a7DC=cIE2XU$@At5m$Myt-I z&5=BiRxcd7(OC_|WUo~o>(F)UJg2nVB^0|%IdenE!l_rL|6U?V^>9seSo+7eHU#emh*hE%vsVE z85X;8h|4{85o^z9#+0?zJIb>}LF#D%D>X%v6%+R4Bz_==60L1jTr>m`S^IcEe^36f zBQX2u{Yb(YHyODur<5(N9p@LmI|SkreZ&)Ne2bcH4J_;c&q!S<@`l|0qZilu0RoYJ zy$T5#T3Qfp(3H%lZKy>+#L2RKT+1|@Tc=Omo@xAT<)ZeK2<#}1$(Bl~ZpDJDwJA@a zDp5rnz$tp2xd3~Kc0R4KZYV2voY_nr}aQutzNY;O`UVaW7Eb8_IKhFa{c0 zG(SdtM9sQET&4cE@qyuD3K^&+BK{yx_kHDC{PPK6g7cLQFFu+zLp2kLA}NWs>H;eR z3#G_LST`TK^N+rNr6WDnLLVP~%vQ{GsYdS5yYLA2^}gohJ&C zi>db|WRuHCNVzhsKEvSyLo7K*GX8C|#u9_)qn*Vluj?COI!L1-i~HdEpP{*NkIzkB zr3u!vKvBAsj=))XH!1!{gECpPchDaoC8%`$AL_YhgKREgB0DN+#jhE|w92#rI>t(J z`JMUR4WJ?>ROtC39i|Dd?h-}rxjxQOZYA;xSvMgtF2bC~a%~iS+Dow&mpu2QKXwW9 zum75%KU^*)yQJZP+Q7=;wlp`Vb}olD-Gn^2v*~mxX2&u#f1UwM+oek8uR48x{beSC znR_gNf|t2qZcdNN3a2gKPTS(?`#7Aj18*Fix_A_745D7%LW;wU#!sauPb^N%hR;2 zC3om7E)$Gs14zHN4LRAzX^Rl0D~egQwG|uSE4bQgwsZPpRM%Mg%_ma&>e*y95+a3u zvV8MtofMt}khF;fdtpk6BcyTlNGAK?aRO`X(PwCnus}J_$d4|1C32M9s|h?NE)hL4 zSH#b07gor(f8OE%lJU-aMe?&#j3=zu??3mU9vM^1Jo#GE$H4XeONPG$)o)FOGxh=s zECG@L2|1iM&(6-$xBMB9V$4Ufc_HZ}Gq5=_Tl+i!O&ZrU9-$jp6NI2MEpC;?@mP2I zPH>g$+)qhM88|+AKi*9KGPDq3!-#>6E*_qK8x1MS7CiDy?Ykjx;ie!Wo}_0w$>bV2 z`h9q4EE>5h-DUoS%k~Cl(&h=_hBds@B+i`|vRD(L?(l_bds2pbf)Vc6e1`0^t@Y(6 zG#G#^4q+D-SVC@;Q!#TO{rf%Sr^npVZDgrT@`uISugFKCy9Le|ik_v>>(Kv>FPOxU zr@-S)JrT36M}TSnR+DftzQ~1%f%{UjmHX?I$thZtb=HDZfQ?$%A!}uQ-30C3P~BHH zMt;hA?2Sa0Ma0D)Ve`Mg##Y;C27`%QY=B%pz9$Ak-z!8&^4Oup_#wFH_yHW8bkHui zu5B{%GJUo}uR2@QwYUKq&F_D+*Wvc}mndry+^gU{=$>?o1%ykLxp)R@SQ{PHfv^3_ z@@YX43dT8eWo8y;N2ffkBl@k6POE84`kuR04T>)BC!M3QTUT!`U5u=bQ5Wbnz$#O= zg+XQM$LDgsdy&)CH})mpDY+B>Gr$h^mFzLuA0o}ZP2npATDWC6ld=wlPzFzbMH#cs zymT6YrfKtR3ve>Qw|!m{Q~-{DyKxnkRbY9c=qd{8G=o5=?zhkDw3IMHa(kAZ3Ou|Z zdh+nP72K~ijm?TxyMOEoyVn9rEGX^&*PV5aYk2SsgqfXdn5J9BgaXfE?X}Gw{mvs+ zpkw}*v$KgvX!_vD*WB8SJ%kew6_T>FET^Ql3` z_dPs>(lLi{E)GhDzZN(T7b9w|F0zeAO8;4j3)n~7#E8{^E#lb_=71TpLkdeNI&PEm zA~Der^@Q0&N>pR~>)kCVZxPC-obl7oy;#WIg{Ii0 zb&6{3gE|2r;d=q4{208ElJVR5w6MoQO|wr8X!3c`!Zj1>!TqI2UXI17@-@X!^V^v8&@*9y(r{R1{ryhZ?1&6#?@?-35X zRH=tBUNTKLpRXvA3}q)qc;y=BA@6(M0y)${6AeOm5x;p4W9`JfH$UtyTfsx)5;Y&+ zDkO{8b?`t~sSbXAXDk)|>U;kIKw?e>vF>(&agQ;6yVbp3v?-7WC86&v;gUh{beJBv z^EwFP9C>~2x7CGcH$?u=@Jx)-ih>f1DGHZuT*DzLLCVL1iq|BCWXqm{9>9?3fK3t4 zlS#-IvW2*>@=;1y2R*^0Kg*QWJ8er8j~s-vd@$vVF=IO5Z`GBt)E22 zw+Y<=?}wBTN)dV`t4p}ZqgaD-fg^aX{?Cf}cf?>*B|!Z}1sfV>FHUUCg)1d!7M2z* zJK94#*W4s^6UHm`Y6{pI?c7`m?h=Uz_@3@X9w3BvCnB>hckph=8#zJ6l2dG7gq?D4p+>wdqk`<=O4 zOlu36vd-S}kH}3JHW9YQYefBiUxeB4zgjSs_3}RBr;JYq8LCW;}$x?x}PP1{t*diwfAVf$iU4n}j6%ok!J{uASiT{-c0$;ITi{kKB@pBI6;r(uH+sL6nVn*p%>Pk<0k*9>J&Ph2M&MUH2MZ`11~-ek`{1c_YwX9+j2ex);;2z>zb=MxR^~ zKr?lrcl>Uk(OD@+sVL!cv%GJprPX?Sz#5pSR?Cx1MugeXX!tx(*$5yPv-Hw*(gVTL zJHVoMcPTup3jQ3^y4y{S{>B;OZUiz5PkF5GjN#BlRznu;~ zb-0<8EWldkbSUNiMl*$3@5CidMNcrYq1#7Z(tAW;%C4F#8rYvePS(!a8O)Uf{r1+F zqpdR0G6+QfM?y`Sx$A5Adk(%(o28RXRT4PbOZ)*75pcVVrzN2E3h7}A%wJxqjyw50 zo~}jHY?m6CNCp(jPSS)?tn=o|q}w^los+J8R7IpP%sREy{FpOMG|PLR094Xe_D2Q= zC$15b6d>3SxTM9IAakGzJkm1_TO52BxHN2D`12St$d7AuBAl z`6I%=itXWh7jOkoJ0QKD_ONR|v@<9%8(6GKrgtB}h|xnbP&xaxy?(8E;dk0&0>aQr z?CT-q;EsliG+)P|C6{xlj!$Bzt{_*W!nrcUuyfcaem_G<`Rb;8G;_ZUQAf7nChJ`d zJLn<1dU`CFE8rj%zMB5K0OnE2<``q4^@;d0b<>?}h)^FzwQpf{l(R2!mbK4Rw}(&a zc@Krn&-4v_fO!aetv{4f31c)L48BmN7>Uqi-iWZES@P-ZjRTnaD`ee$FGCx--%Y}_ z@XG2Q6wayzYb}(dXQXW5;g>Ua=}mUXVhe|gajK(IkM|Jd@K^^@B>ZlU{u>?{ZfJEL zI|{MNzI$ikD^9r&R+toCBZz%fWQ8b59)J@wlNDN0$*I(;cUBS3dbES{l2YkD$Bu7HueB%?}Z5sG*>bc`o*$h}&bt z+8LfU*h3)=Q$0OrZ0OdF1b`3&39SpyvtZy$mQ32j8waXhK62urkQc0g{0GSb4rR|Ia1v%FC$^8}Vh7 z-|nl!5X`QbprFCyn1HP?d-^~!+)%w3DAG`^2_io%@~(|yFTP3-Okl5^CbAkwyf%3I zI5)unN-Wic_B}2J1sl4szv;&kY#QYQFY)Mi+! zPcC;WC)kSYq&2xw7_;tZy^JHz;YNJo-CMOq^LiABtm`78qT)Ez1NbdJbD=qfn*?vDEHjAS}nI{v}l zrl8qroxGmS6H9N8CZHk_o7HNKpUd1Hp(l3iE*;+n1H;S-mU!FYnfOFN97oapiq8{C z4t9TL`;M{JloYD z`y0x6-cPnUyfSyaPIjNS4(0?Sh;|dTkYe~gZ(+ilbEQ!Gv+|87z0)#AXGFNWJB!nQ zUk!9MHhpqxu8lo7Sv6>Qx*|;KjpK>1l1)<$yqfw3`}6FV0M*#353CSfNm{EM1DK}R zUsts1b>+2<-~AnqtY*sE&$lxg5o3p82X9YEvDQ%G$6!X-@)&1Nn5ba?2g1;Wiv+!} zgVw289yBNv#~IVyRSbV0&kAwO$giKCowez;x}8RK0lTg{C@4r`fm5GC9lb?U)m#n2 zV8A#JD4?mHGfl|4AiQ zgFL>FD6rp!rdqXlu&4Ry+<0cNcz8!ukOWANmu!#>MyUCBP+-ec8hR|0ek)>J5&xBS6{W=8S z?r3la0mA+&-qxbtMZ;HztNYmexNm!{Sc7MV#9QHb!Ka*6QP|q!m@s23KbU(xm@B%n zx_a0(PRDGS!2DsDkZC zWL@K~*TL+zeeGor))HtMkj3$VFKPMH_nc2QW@wPvcL=kSVS9mQ9>S9&0LSpzE&G#RocIwjJK-O5^pS&t3m%Fp_n1qH0`wllfMTv|&)*ViCHkk6t=2 zJ94A#Wnye#Z?~ELNZ(JUcCU?6y*q8)4x<@>{9FRjM>`21if_(78@r!jVYWD5&JOc= z(PE(+<%>&N6UF5GuNHE3mUcRbt$0eE#4PP0={-y7u*%2>nL_PT@(lrl!fPvdv48iI z+80CW(q)*4hv@9o$zK3D5UP=lwwFB5GFaN?K{(Bv~=)H!7z2JBu$<9?ql#~k5{ss zUldgd?fnX+ic30UC^p%Q2vx!9NVd66{N}7aAj~oX2?;YJ&s6YvT{Skgk&J7{Y+G5I zBlrj$R;hyU!%|Fsuux?eYI682w&Fa*xg$d$N5b_iF5lId=~CA7+@5Aai-`m12kl&{l0ndZPlS`Xv1-%meWokEtRTcgR;tmu3-jt>w!_p~i znFO+o6f4jS9^2g2dDYbO9k40r2;k;?O8&;yS6T(*`2Lcmpw2ntV;mt2ef`KLq*Mtv zYxA88uT_`qxD&q(dHNNnt*^(AXZfJnB(H0yO?)FExZGQ2Y@2Su28+{5!? z@(&ZHQZPv(e|<#5xlNp6Q5v?Id{y@V5MGK*}~Z z*#6u_88bR+s44&KBMu3U$EC^PmA$tR3r{|>6p^1T)@!rZHWOkFc9gFtz&m|8tNn(W z)6V{;;sEUX>NFO0WDMzdRDzM9P=^Vw)PcUE8F=jKH}@8Yi5y5ua*L#ez*^zJ6Wh@J zY&Td9;5D7)b3d^X{Z2+T%RwPhlDb({QZyM5pSr1mmpHd_us`D>j3VgEiD;%&;O>ja z!Pj3w$1eB80kb!3nvEtk#;+~ep~uOa)(=Dgq3&Yt*KS*%l53!lJVUTsCT}R@ic%TZ zzKs1#8gn8+R%FwR{8jZD_X5ezj7tY0{)m4^df+vJT|Bx5eg(?jQfwE$k)2CK=I+4y z*o&)LiCd+TcNzK=CP3Pz)RT@y-X5;m$2V4_mxM4R79tsph&+8vaG;b178UljDufJ3 zl^;{z-T8BGQGX(1i?~67^t*4J59OI!#n+BeNu$tc5Rz+>XKq6P=pYQHG}$k~(jl&| z@YZ4My>e8L-15h^TBbT)75G{4#d!I0sbstw$)hN>^D>Xexf@?RkZpO4qLSx#{FuZQ zPzwCiQ8kW7R)V$asFX*2JJ4sbSvQphTG|SrdlWfk2$txv`PJB?ecKIThjOKaqapR8 znX$CHD)|dVaBl$2`_agZ4DU0r{x99#$;EG`ywZPDGlv8W6kE%#sN7YFgttxoLZD!^ zs(V9j*gBw|t1-1|yU}~@QJs8FiFz`3p+TP;myGd?1kSERpNCCVAl{&7rFFtyk#{k$k8X`u;Xx&MB3f;nZ$ zCjR79UE5|4qC?);)>QMN-dEA+5#t6{mYUR;vLNxuD|p|KuE>5pQv160VdVW&>+nOl z!#SfXgmhxHu#Ffx%=g2NJ13ZL9sm6wX*}yduQ5SZXZZ7$d$~vR46v5Uy}uor65QIs zKpVfO1`?NxmLg`lQd%J1Kq5Ly0VfidfCFdq%L0Htn(Q>2mYVf+wVejoS;7D(xLzdO zGw(^B1ur*|Ol7E!`Cw-k?VNam4eR4~8KMS~WIK-sF{JTf377~_b{UjP0#hLL>1+pU zav#Zh;<5QDCvi5%U5wlV?<~q3Itylu)@#a9t5@vpogk&dt~7wW-IdQN6AB)GwrGEm ztz%Zoz9jm?r}5@JD*sb?*547pb_TlU;eGh6klBC;jT0x{G$P6$#pI6?ue} z)MmZYne=;keAhcO2-@t6i^o$mfh|_(+~@pq8eKkeL|{+dgp%Zebni3p&I~}W z@Qk5m1z-m__3IEnJ3CtgTallQQqQX^X|)3!_Wp93751mIitP*7rANY^AH7QGW+#^> zbaKj9etmji++5)|H>k`Cxh&p#TUD-Dza$bqX5YLUg_Pa$Pq9?N#%y(_LJLkfTEjKd zJ248*9%n2Ba-Y%drZUgu?syiv;HV*~n*vRq779mp!y@IxWy@wo= zG>k!l;3WtndGO*E-B~(E$R~I|f9e=x6TdMQ(3lE#6m@hc>PwTBAyz0*`dlK~P}x@t z)1h)QAO3zH1>N)hn1sKyOd{Z}{-m3VAI8(Q(e&jns8-J3kQ<|e8GYmr1#@*N=+`vM z;sR-zG(_4wtNe7q*NKN{C4oz^;bUn;tEZI_P9Flig<}NZ>bLuBCjlq86w*!E{VmAX-COs(wy$EmHjQoz{TJKcT8PQbxx!QU?)9&k) zvs$^jWvH6g;LXSAwvO1B5OaBYZf?E6a?Gp!fEkwi83Hq;dQ%%p*lX?@djZl)1O5v$ zV@4kCc~<#-doO+<*08kJ(A)T9>x}Yx?p(mPt>7k~B<}dCyR-8}g>zH7Vxx zv1pDoF$7dI0tO-t@Xl|Du^V|kXRT9fvC2F_8oezz1R3F-kOG;TY1Fub%0sEO3~*?g z69<%pdI&NxV$5`61-m(b`v?5(gVihMilzrTQts@=)ZAsTtW#5Bop)h64(Eo#P(JOd zTiz7VErsa&$ST~}se{aPIVWpBC`n;;GSF-mvkhE+C7r)PcgYAtTz^PL2_ z9bcWFrXFoVRH0DCbmo_Zqny>$U9l@&8pU1ep;|z&wRW7d+IKWB$Ocyybp*>yXZ#^p zy6+JL@z_H1B0Wj*t&)mt4_#7iZ=WILqlA?GRQ4SbSi8;%Z9?qRn353ka!hq3r4Cfsk;Tdz0(7>@ZqPbW1otWs&R&^qXVh1* z=WUvRyV+sqe$btd3`dHV_0{k_a@1YSU-5)NJtx<#zMi9iMNZ1ZzrWfK1567d=d#vs!aTf0vNb#ue9VX0nJwhcOj+_dz z#fXT*Vw`m`_DTMfPhKc(C{3)ryrJ4pNv+BT3D01>F2L`5SPE$XaAGcinP|iJ{TCciPtrpXfUg z$N}7L`1`;VykcMfIbcl}`O4%C%%STAuGmlv8moogJgHy1N4P6x*uTe6tNe!AX5P#7 zRD2#e%bWWUy;Az+^C9LzB%zJvxlJB5%j}@CWm(?=ctoYOj?Vh%fXzjDb@2`C=?yh~ z2w@oDEA}twyH-+KK+|(CnrXpV)dVN)NgM~tGiM-~0hW|IL`@FtV?WStZDi(8Ps>L( zS5M29vm>aY0Dpj2Q<)mu~!X8p$0;nTiwo={N+FJiWEYk9cz)&wZE&75iWcEBEHbbf64=g+lagm(#l15c93a_ijJ zWvhJu1M?A}@4l|^X6>hIH~nGL&i2IkrXsuJv$B)JrEF+WE`b1yv9G*&W%foEKqd{s z?BOhLxgQ*T&V`D>b+V1}17_(h3b~e_7Rba$I=j6RfGK%-9zXemej=stI2 zPH!{F;+N{{vtl>%_#2Ceu>0&p}tmU4x>!I0(2BFhG!mo1L8P^wFZd44nwgj0NW=$X!Rdh!N8_U@W(b%7$lGBC}mH$ zvKKjrnQyNs(<5T$QT$Pk3VuZQyPJ(DL)lzCmNM@#{_AifOB^&usOB?R zSoBAPv;xjt*6+idS34Al3<4h+i{8*;{`vrRib12ixIDHw9;mdBlIC&UK6UIMGZH5* zX77n5H&}N%L(V{kZYh4wy>YS)TMce@MuSw`9}7BF9W^CD~oVn$YMb0%vuMu)Px552wso!+@Zg#~0Sd zI_JROdtlYY8}=Y);?YN5+B;#@VGe-pyY+|7^GZ_KSz=Q)-&uII;MMF@Y_hxqCHb)yAi$ib-?gS`O+^x7*~6vu7sz%$eB}qoyKcvzGun?YnVE4RE!U_1~U5Y(#+eyH}(6kY!0uT0*~eQ73j0Z zT6fPGU5B=lZu<9&qtL!!!yN-=5WUypgy37Ll zVA@~_B-HLQ(IqQ2hCX~Id_C7l?QZ(_wq@XZLE~NLG>E)6IorwLv(Dsp0ZJf(HZwkx5ckl2E7+T1r)Vzom;!#r|XAuB|I; z{+Nr2^ry5z@%rmf`o02*{^Hcj>q%`P>19Uk8p5wD2jE%2uWl?cnICr_xZ{h=n?wgJ zdvp8TP=8RB64&M)0ap38o@#1_y|&CSI;j@2iC7hMT$NamoGUk@CHJt}I5PcoR`&kE zfygekmzus|KfCoh9uS|8SU0s5U5?bE*C+l9_=AH#&FH4V_DyeG~Gh81_ zyl~W{rKQDjhmgl6SIaS2I%6LpbsT1fOWIyR_T@2181dYu5(DsjO@LC++-Fk9$OCuh z>HGBCvn0A71+G@7QwnZre;xxxDRKYp=EFpPDohI%UA_P$QE9?){(tvkW>)$Ih5Bt{ z(bJx@ai1*sRFo@f)N%)rSm4B&upQZ?A3Z*Ak6;nM9_se4gTH_jn*IaP9D$)K7+CS{ zr|ZWjjYI*&@D9K&d^#7vEFI2)I)V}Kr=i$MJ?3>Kh~wd4oG%IrrW?R}gN_K;6ln}R z5T3dzpbjixc#k4&x;u^l$YxcggNLIA;b?215f4fg4l2F$9Xb2ADQ|fZ%%1}OTW~gz zxcBmFEAP2_{lYYjETWa#`w}yNkx~P|v^G4B1#O8Ey(VZ9;Y=;n6z$E-_{%aFM08}W z%0)b1q0^?)Ryeqls3fTN(J|Rv#nG{bbo$!Th-CyVIHEUVORxV<`SK;@G)~@$|L39; z*VB%@)r1}8EdBD0=}BrF$@m~l@|k(Anf4kN@x#9%fW)maRn}EEi~n?uRX5QEdrpY(EvXZ&9(#gxDK9**Dk9u6thsfg~I zBjVDGMB@x97jDbE!hRIJytFz-_oXR>(!U}8D1PR%fYzw-^~EF_7t@0L{&?o;JhHa^ z_6h1KMYYB&otC6;mM>Af zl>Y|En%uLp(07sabEwIygahPKN0}ggEKd*0wS{fM8lN%GfQclSJF@)c@IU z8=mJZ6z3Buj;wlCOxxlOGRR=@VeA76K1Fo~JP$236ebquWUzjkJ;M6GaE!-*c3_j) z&&>TQ^LA=?;-Yw(1%@x^%TtVR9{!!gXYC-j{~x@4Uts|OF&vd0Ag=lHmOG>wu+;*E zLJ7?YKFNLGm*M2j3pUP%0|gHx{Ri#i$bX@UuJQg)RDhPu9ra z)xj(NEtD}Q|C||rLB1N3YLvI7o^WC!in~peu%U=x&cj?pfXG}5wA9foOQxD8Ahh;g zjC|tx-x$627$U0pX14DWgT{! z9wv4XVmv&;5T-OTk8V(vFsx77j+*zZCnN&Q2B6#@;cZs1%+(qpN^*W$H}Sa zbZ%vb#E{F*0-vnMXH{vpZb_<2HDIJzSAOi2oL$ z#*{AVtahmTYjwQOYjnM?0d08GqF|7`s_INC7`>7HOUEv|&@i1Kd5Q^O&|P9V0oV#i zA3Ibu**_N&(tU}7+vhc%Bjx9{_93;dW9ouz*$S(Z=1XJ7E?U^%=H+3X@yX$fWO`YPljyJX}D_Jl#{IvfpXEu3Mfi&Yh#KeMy z!yNqMw(EU|?==11sy5G$i@JT~6xaB9zV3^MJXvB##=Su&X61OvRwbDVoUjc1o<__p0U?7M7{R5 z(R+s;oA(9XgE6OcWoy^i@20k7!AIG#15YxVW6#Jogzt+J(AK3(0~IQSV8kt3@_ymZ z@LplJ8{ca#ts zD7UyS>G!CLI-A_RP;T7b9dg$q%i@6ht5I;LXzht+x^9jmlrcKv(_*)QtuH=4# zZ>eZZIh9c46~M4xj@WP;GDg>%5XX+bh2IijVQ??Q#@{s~mh=!q$~TW^kJrkTu*W)U zVN6i&<#`JVi_`aK95SDR1PQP583>Y31@e88XDcVWobD&G;KUrfgv}-J>fQ~8t=z70UY^VcgK0DYNVA#HZ()te~liH?J;;{KM~2%c=KC)bh`&eEG8Ea z7l~pQ-?mU~;O8!*h}Z5p{!UATKcDzAI&b&Jw#D}|0d{!gC*$DJJ60J};=*@G{x*I; z7hEP(JG$+WgV1RhIIK?5pap`t>Kk8q%}~X_(zo#vHdylx(5(z8pmw7V2!%@9`~2Katv?D*;bF3f_>|TjUvww4oLm!^1tmF z6ZKhg2lKbuyGUwgnNmqek50YL-fON>DAg*2E`(shJa97Hre^4ab50!swccWaa8*{Ce+jbg92kW>CC>5=psu?K1xoAjKg|^mR z*I9Q+m6snx6K+Gh_ijnH&&8vh1R!lBDQ(=`3*;$^m944pqTxoT{?M}S+LlYFM-feX zy9*WIMg=;U3B0YWQ+TdZ-bP_-RI`XYV436u{7Ce6C}XX_A~BG~1<(@~g^u|q0rTIT z2XcX7f9^ro`9hRSwJ({6m(vopZBc2J^UG^Oz%%{tW1k)DcM?BpR+pS~_+^FzIkQ&) zzZOsc-hjgB&fUDUoHzh-u!mx%y0c`ucPR)kHOU;Do-RzS|=S4ULVQNXc+61;1DZC(8#02C79wtYY1@5dCAu7#41A#teiIO$mb`(!Z}Y zw{m=zHrJWUa<8NiLH+^b1O{uD{ki>ESSPBa?(WJqq!NxvS^*yEio9tdbqP&k__y8A9UZQScr29*^Xs}3x>9ET#kHG|N@PrRiYlV!@dM|A%J8ISzIzwzFbZz% zGsv3~*9zsVg3CQ68hsKI2MfAGVi$K7z;n$i31$J6X`S4gS`Cd2bUD!C)-#rBL#?qve;ZfljDtJEqA8u1 z1Q*I4L{F=;u|efG=81kNXI^IK9sm(Upw(iz*#OcRIl?<~{(Cktg-}Gp_guCc==6&kwg{3h zBw$@lpO?KaEb!u2lVWhxT+2~3$doiPeY^7fn5lg`2WfqsCHfa{Y6EB)sE&G(lk!R)u*xaqwS12$H-w}VX!nh!FSP|DEmI9 zP<^smIjGxO_XIg^Jz#4F5Lou!$q-_~3xT z$#*K)y`w?1CZG#Ig`$8u`MEcMlHc3(*q}>w-Y6(2UJ9xI-XnI$3Q|@ith+7uzk@P@ zYS?Jy?Be#KaHwWwpMQ0n7tkpLZq(@+#^f*}oxRjSR@lQS7-?4Zy!U#o(*DK2B}AWL zL`9y}EX(es>>T4&bUHlo(<=GDj}poDfBXqmAb88FI*uzKWcLs6$x^RV9Ou5$Bl|2P zcvqA=X!$Y1kM8H(|JrH1KU`Nvt3vRU35Bd(TTi*AyqoP$!6Zl9q{gvQ*XZGwMjq8u z_?p`siH9q%Y1z|@GZ1oyakyx#(ImMrM@eZ9%3X!P-~v zh8TqKXXrj+Ih~C{FQ+Qqsa*2^vI(IZ6yXZ?8rbsGKbYW30bLp9Z+<%kekHJ@>f5Bi zuSQ9)INBO~-*hu=^@UyZ{$E&Iw;*4ril&W|89P3c7N?_fF#K?zGpQn{K`&kq zrJ_p#uQ7z>X!p$GC`xkXP7>#=CP}2``nU+zu<)VP|+6=zV%cDNevxRfA_hv33+s=@7 zj2Ij3vd0@JCv|C%t|EoeN&qaihGMoe)nORO2fF0f&I}0k_0w&8>IY=|P=&kLA*vwU ztw5IANn*xtY|OV>k1^WSzEjWKO#Y#g^k(cQwsWj#yUf*$6(6S_QAS7l=U>eUdgs;shR zM5ZqX0>){6;dAW!O;kTjMbf~&xkX+NiJLmKB1Y(-;x_8JUY3hZdtMqBmyMX7bl+Y1 zWL~rC&BJpgQrjy6!UF2(v>j{k2SwpUL)&sO>R+6poui*(kEZ>PTGGgzr|=5Gavn=> zsUl0gn9BXk&VdJUJqn}i{^X8r3Hrh#9hY=k$Siw*_8v%PvqWX2tu-uHlC2_ySTg=m zi!(3CjpS1i7HsDGHA31gTf17={6ZLf~1ZF4CJq`qs}2OtWx z3qye<(eD(iOToJcGUSXezBS}f1=x#f;K&$F>tTdv^^5+L~O5`};c!&Fv)n(w?t za0P6UR)#=3H$11gY-euFt_hp<9a9E}_r#xSuLfoQ2Bp@&T0dSQqy<`&v&#ywGj7Sm zNogMv6kqILK8nJ&Mk8O;rxj^EiMfN*Nq7>bRr0{eJ-&*4P>3mpY)Ybc#rzl$$v!SS zt5bW1YQN(;VIIZl@nxQj>N#nL^_Fo^UyDnq6~iz;Nh91WS`*geyIw+zSLYKqEeb&L zWd(o2D6_`VO{-zRda}<{Ohu_G^+B?}yLdV)xX3N9G`@G~+Qv&zn!ox5{E?Lbp4kSD z2-8$=jZv4jrSzVT7u&p2I8L^jpGP|yZLp1?4xu_8pQ5{_%(TQoAXJQY(2q-O6N&8x z#y~S+1rqbs`uh5zgkG5OGoNrzYuYt+p}lSH0bB;*?+f4|_d9aoW>O=bpzFCq-H=Fd1ahjYT9sxL}g}`|)93q=OiD561-A1M8i z>MWnN?~l#1X89E?)QkN{mK4Lbb4wo_US#K3NYPD}cG^FS3Jn=BFnm-$Ykf7}{gZ}h zm+h15en1S-5Q~~?1cBz2&rEVF8Z{UFmF#(T-;(M9Ash1>Ohx0-NxyIG$)Cq}E&~;3 z6@+UBOA)ymY_1)qtu!|S;pr_1)kq}1@I>9oUJ3yDd~|qssfWG?8{fUB_l4!tvjC-u z11pUMZ10(~UK|Y{8GLK=+8KTIFD~B8`&0P<>4vs&CIo>Q*C0WpjIpfW8^a7k^{y05BAaLp$C5cn`!gk6yJ)n_pF@y%~$^>Hprxe z69b;G2q)!XjUx$(HUsc9Ta#x^f^G9IhY~W6!jv9G@aKzPMrkh<<_GwhEIBk4vpUNc z%>9s2Q1)yc`)b>u_4qUNBdBJP;GaU>Gm8j!x3V|Hp+f7~{~XtUn`!@;E+8ii&}P;? z4qs+f$Sj}=eVu-|K2jwI0`*p=z3UdOSCIdS8OR z%2VmPja!NhXC8Ug!JYR!H|n2{IqmNA;NTYWX3Ts_+8yZenm zC03!ulCQ%d1~aH2Z#I4S`j>Ojne<_Oq@>V5mj*$e78Zx%8_AI?q&daB4CNgOvOA*& zG0DhJyp+w~K5fd`5F914iCxEvO}`9uFs}0YW1^o$>iiyWt}iHlX4fNJPt(WxQH_FG zAh_peO}TceC;go7-pIw!p~bv#{gaS~F$Sz_<9KuQ&;7I2&}IqbzWDYa2kW!}P;75d zXO}%6M!VIb=(ZsEgF4jf*Q#)r7E54ffoq*fU!W{v-)F5J;Me}*Gd%Src5I?(bKoUa zwCx61Nu}qQaakqRZDvqrr6sNL4l#RXujLW1Ucuzs6`=_wxT6M)1e;~^l(JiP6HW;U z1;I{NG}Y-Y#)^ak6Pf3&JloN+?-{ zZYvSs5q@MUU9nslp;gB&^-4Ou^%xS1Hg)OO$hd!yV}|^SD7-B)#p*(p&YwFwMi1{C zPcCRYoZPg3yp`em59fE>I#M{Q8y-K8Od>$%m(uy>g)Tbd2EycfhC43pR|%z>^`3~$ zkB?IhKQWi%gi^(VKZ*WVnYrxReR5d&nH6YvKlnLdINftc9I@EM@#-R*Vbsc;D?7=pMGL2TL;GCrL28G1^;798-9H!XZES3? z>#w5vn-7>rcS|#ri9)0Jta3H3Ru1vrg^JSH?p@s?$%+haK%XJW4}|KhWXT+Bs1 z#Gm}L;gam>`!7Wh}dlulHo`r<^;olyAc12&SPQ+(#@R zX^T5alR03Ik@%lIBzlh4Hbl{=(@}ukBy#V~VXS&!%Uhi<$SCl#ywAyks-S^q#1tY~ zpR9iZRqOhcE3%&j#{!(l@gofG%I$KWMHihAwMhNfQNOQPOHT_KvhaqS=wJ!($G&LW z@|4fQXaM65D`qob>hS&%hPLY<=Qeu|WbE?a69FCm!og%@tNQqus&rAWkBeu9&|9$b zyfy3G8R>fei6hx3o+-a?u{e|n-XehEVmPguc~zv#CE?n{(bdt8%L9ODkv?sS1) zx6Yw{8S@m5lxf9z1{l4*mR{kDX6D@XYSqeTy$)Jpk}d*=i#5M#<{9>7Xu4N-vSW!U z7jOEr>F%f3K=-4v)4*-U0n$$a1#n;BCiC%H5ttCvOm{6{8Xr;yM0xj!gDiqwg|o#X z)jx_^Th*giXq;IX+IjZ5foi|?oo%(jKkCIw9Smj9!3B482b~`}Cj9vqxmGIA#KI2& zmNBZ0Y^F!!S#dCx$5R$|^HwMS`}OPBsoJ4(0tb;{9J_ar7+jy(U!j}>v>)9g!5U}J zbfp3bBz~-Oa^TTDdviZhW~1@RUn8k;7Xkb{uYZ@pp9Bn?Gd}8UbgjCiM~{E|aZV_n z4vuWs3$;=ba){B4g;usvx^CXwY`>4D8N&IK)K<|*y8VK9RaeI@J~jDsb93`!vhO?G zB8g&M8*`6d9Rp;Ep17PoQ5}0LZXTq)=`f8U+H@lIRch~`F0f3;Y|`Mrd*a5x!w^-d zRld-*iXkj<6C<1J z8zkSuP=lgzUz_;!H94~QiQi8Z%v+C z{CEB+xa{Voqi}s8B|Lx}2%qx&Z(?+$49gt2;uy&Rlm(3Mq9D@f6tBgvUdR{zGQMJf zHDjgJ*5fAetHW$qz~Trf@?83#OD|;jsNF|Jnk0B$!Mt2APl=n%mWxAP?g}SA@@Wi7Z*%{OkKlPc9rIK4tfW1z)dt|-`ZpTZk)rNL6TdEd*Q%roea^7yQS4WKUind@jF0##Mz2uM%={_>hN=E)UBNe$&2Y(Cu>Jn*G$V=pnsS~4X0`r2TgB8PT$hx zVAEO|!L)jrcS0KhVR47p732R^p4*OPnfvGWz{Xj_+M2DCE`aa8e}>6 zXcI3O9*)^pm(6I+quQFI!GB0|l3Mu$3-CHU(|;~lNfX5Ek5H0Ie&<3A zB91OjXEF0Q3a3OZ#T~6Z-ZzqTiFOXa}q(& zD_OThUno~B=mkf)sCTNN?fPg*73D7Dnr`O3bU3ig{AQ0BJwlyP_q{^u6LN}}tRR#u z5iaEdls?h5*yCEj=eWw7C5|Dxu%L_x9}pJpX55OO^=WWY^>7xGYQT{ zNn@X+1s-47Yka07&Z=W#Rfmfc(Evl${PvR*T`WI7VvR#)3#a=*8BZ_U1_Ov4H8)WW zGV;2%f!`ngjArMhRflgvRiC7v7ZX5j$2UJCiA-P9K#}v)7Z?*5Ecw;Ez(b?i>BRahVgI<@}Ur)n({@GIg zaM9>K)}$?^y$n%{uDgvUuA&bNMN~_X6n*ls0Inz1(}mAJ=YR5qoua9dV9lX7p?~$< zDN15ZUic*|MS^6>@(Oh>M683WgJ0H=zvc{{Ro5+d-8B_BgaKk=Ys5HG@FPCA-w+bi%A9mOWWa9to>X-H$ckZ z(p{NHlz%F)a5h%5MkV8W8>`4~dZH>FT-`2zU`PDKW#!@%Q`goB@kVJzGm($dQHbjBlT$Q!j;nCcLTwlQc}36lnF zjY_W-(kyZe`Ral)TE`gQQUyofkJ6YCMiZG_Jn^$VBiTMviM0jUKO}tGH5F;N8`~D4 zYi)YbFivKC^9C3&=2k$JjK}O-`5ZFz{xOyAUY+%CHWNrvaB(HNI2tf=+03*6hQ>c~ z)cdMo<`rx0$Q2qXmg!Q+z5kw&$qL9btd-ZK_gOuBWi2bIW!HxcVaU=rE%=t>V^Mx~ zcy34B4QOj;F#)R}!@qKmMzRxmjkjiiLcO456>@pxIDp`6H+sZL%w+hKqJ`t^)tKy? zsaE57OnBeWiQbb|-o>@cHmu412Cy@hz~6N;EK~bQDZe4{Mp9$r5AdUR+Mw0n#{vv^ zG9ycmWp!>!Uw7EiZH>|pm3Xa|gKw@*370$lqP0BlOAY>NDK$*$tcNaSvevx7a{ej8 z=}4_99uZ&0Thfec7ky+#Ix`Xk-2PkX&B$ib4V6(05vYq)KBPSUK$^P`9a%J*^!ii~ zox^;`raL%BE+PFqzHG#U^Q~3)U;TI0uX_uNiw>FlQwQVOA-GCBHgB}cVu-5y{$vwh z>uPqj(+>`n+UX}^)P)KjTgt}yO6Zzh2MFF4Yq4fEw!D@HVPQAO$*H4e8W^r)THg=J zWUVc6fUI%tC3!PUzi)_2hnLhdW+ITSn-<&6{-!DDfcO;<4gts-y<^M*>LMpfFl+BQ zK+w%{S3;{+%lnH-eE6-b+RP*_{k`|TTPVcr&Nz>^7)%Ne``uc-kF^h%mr(D{t&jNFOY+Go~j1EzMfx5EOAXqi2ut>OJER3G zeJ^(hiah-dv$%N}!;r@9)bbOm5kqO_6No)a5NY$0L9ZreVyUfQ5edNOy!AJ60Mm-Y z%#`|e&t_u1*)qai?oHUk3xdrg(ZKBBp?Rj^)!u3!(`*blP?;djfwj3-jB z&RC<{UiKPmHk?DPa9?d&ru#-*wc@9M_G2x(Zf?-_B6n>vUVcS|d1@Wkzput_=$ z{oHoZ%u7mEQcIgEvJR4*b-w)I9MNk(#SkU?9(v~2X$vOy6#Qo* zO;d@if!XjKEP zRfLQp%njGL!azxt%_-)xcx>ufhmsRzDsF{NpV`WY1g&9wWd{1);qR21v}iB5Zn=3N zRocZv@pN7q5`S72Az)o5#4k=p1dE!A>e2Z^m5mDXSK|%L4B>5ss?}Q1#W*=?(@w;7B|?@j4RJlUk6^m)|8kc zV~o$L3De~i?zKQ#d%Tf1-;^YxwGCXJlIdO3@Y-Qy*i|)a9vgcg0;}ZlcB<+^!k`{( zn`IN{Y^P(_Gy9_%>!$rVDZ_IaxrHt7T`|39*`?VK^5L8dZidrL#WzekX%R}SHq&9E zj3k@5LYn^a1k8W)BgJSkvU#CQ_DsyyyZQrNOBXhobs+eVUIpnEVWl*Jwp>-|v?IrX zzhl(D(nl#D<~63@(cMdC8uGi@MbKh&(7 zF^5U!8Li9bCfrP4f2TiOs=ebDP&9=@3-Yei=-{R3pIemX7k$$#G5~x_Q|bx-rT}_3 zzMAHS3YdU2Y%??wro)W^Z1!$?)H)qRNDYwLJ0O{F?Ez}WUyHOJa8NMYdW-Sg+}{^3VRYlgB$8)q{g!3;|T)AB93R!aq*;U zD5i;&thhqLROj&_%_u{-nVlfe(595Bzh%5+9!^8YF6mUflvGvFG!jo)vR*8?;bj51 z@D1Qd5AZH`S+Ny{(& z!$~j$6cjm^!|toI$tSBsp-kAk^Q(z#SajlSj62_eP_@+lR+TT^<)z=!y~8J9(~B zVDHo1zh9)y=>26rv5_M<;$Od9_dY#YArHkb@o}3c3cfgYuj@tScky_C<4|?OF6IWv z&Y~!JE`edii-bk2BSE%`+MC z&9~A7g!|S$-x}M^^x=E^yKVQZM%oLu33coAnt#-+NdH6gFr0ptvQ?fueDcS2vM)NI zF*wk@w84;flCmK6BJ5HspVQ!Ssx)Fx$TMudIXgSK*GiKj!++DU76mWGck&`^*Glsy zDtfkUoO~;?kGUU9ZuP?fNLmCp!+K#4oqV&-C<;wO;l(*Y1l_7I&uX~;bq~;JI(+9V zl-+a5DTBv9*77QEkcYlb#gp*7qdd6B-P-LQjUA9;eOBBX=bY$D%3aHGbh&Grt6)t0 zrP$1_$n2fv7!Q7FnAQ8B3^907C0mh$AYJEg{ux$Ax9`gCh*~K){-dUeyc9Lmtw1JZ z`E}q#(H`-vaBXOb^R=H`^-X4sFO~WSEAg8; zw1HGBjm&u^HAO-D7Tste(IBmD&Au=%HG{Ltu_poVAS|KV)I;A0&+0$^ zcf$i66O!j%5=V`8j_(o%esno#ZG>l(=KJIC7=!@4dfmPC?9b&_D@D^{;7;_ zKT8_ei!G65_79658SV@)q-A*t%L!VRcbl1v9*`n&4~*aPntV~76#gY|^mg%}I%~yv z)8SgRJ*2hYm@DQXu!8w}UrbO}Y7?6M5c{_6rI;gt{-j%+j#t@cWbzan@iKA{hH#)8 zwnx$Jb8BLe*U5_U%0fXFrXD_iY#?sMBP8-4q5JDS9IP9P z<4@{uqFK`Iah$ub(#8X<~mnjROJk2Ex~w##~<; z&32b?XQMSYzj<-2E?djonLMyPayp*yN83d4+-K|inTRqV-qJW8gTZ%3qsTP~c?E`G z0j(F;1_}=}rmgCG-hV%~9%o?Wd&tF73cmrIH`bWGEOa@{Pm;`M`R(b1 z_}~*P(sIM?e;y<_TgPn5wX8eUT=oW?+oBAJ<;&VqW?e~ zqLjWF8uflRr!fxb|AXJ!5i`_lq7Jg%YsZf(vwQXY2Aiq;0rnAjdG&nB#C}~#@eIMV z$ogeFb7l{SBW1H6HEe_H@}G|T`)Tpp&Gk8snZU`;M~%WM>uCBzSWXs)$WE;)cRy@Mx{Xbbr6?$s}T0wx@V<-kC&01CV*j@NL}VjV6OY| zjkibMd>j#73ceZKe3qKpM_(c3q5W@CV^=P|IoAlXKT>i1ceB-mb^Y$Fe3Las^F&=4 z$gZ8)vhrkeWyE4!f+*da9sS`mcsrAp<%$08JV$oK%uzMoHSX5hFe&p>*bkSEZvJ5P ztYhkO4*JqIh`ML*md|h%>oNaZ%3DkM@Ow+PHm&72M@L#Jyc85Z_6cs_H<*ql z9M%3>C5Mc(IS|SbH}gS(?2n{Q(NJ~cZ+8Sh{lKRa?bj6##{Vc^N?Mis{01nMX^s4; zlBV<{S+~&J^n#bf#7Px>{8TTP)e*<2U61i+hVr^=RBObbb=XYcQtZE8P47~k1V|4p zWKMfz!!pU%v5}$GLeimOnOO7En1 z$907}thSG+^iE$Lf2JL1=5P`dCe(9DyRBh@@HD+mQpnQ zT-vpX!ElNf;nk>|Xqnl`br60xmop35F`t=}gd_j1=e)Q#t!!E{K3ur7ayrqZdUiMtoRtPrKxFJi`~6bUbMJaz z5OmVltLtr6Numx?bOAjvj~A)c4$C4dPmsa zU9ns)yLBmIGpID7V6pm4n{pt72xz|-FL0yCjCjUJl4b;!E%D^*mEY>z3D_L(XHpR< zUJ#yp&@6mj^V0WU#MYaI5Udv{soX!TQk)!edIeow-+o<*2=en?-*hC4av2?=fra1F zBQq<7n_Z)n(+_Ub5J6jynPH&|WOMV@A61H$OjrogxeH0)x~GH%!=qE1sV=Zz8H4t! zFJF7knhE9XhtC+w6KQKkde>nVfb8_wh(nJ5$dFwjwrHY-&944Mlg#jVH;)1r%+tpj z$)!N%XF$7yZy-Sy2mFCQ+p$EfST3~o1{Rk-XuM@$31>fVb=ha#e|>?={jag_>3@CA zF!Lu|-1Viy@129Ce$mG|K625UIB@m516AK>F`TViCU!YRk3@qht$t~WV_7;_;w$7nu53xU=54Hm6MdnF0)!K&9 zBXOgpI7Xt3i2}a`&Z9IMb(|_Ies;FRT#lH<%H4~ZcV~Eu#q+lkkO@EU6*k>>X|gV* zN_vKC>Qd#&Cx)|iWb#68xG_`8n(T8OWH=9A9ua{QFwc73`p%Nw;n7ZbhGzWG#T+Gq!r=k#Up zz_LmRFdaTsOTwv1{{o;(i}xIn>EMlxx0pO860z1NsQS_&-s0Myh$I}lZw*Ea(EZ#qiys{Y1~s%r@_m^^?q8Zl0gD1#j>*ff z`^G-FugN}Nr9*Be$DR&>PwS8+CpJb_%s%9heLzF)xqWU0N}9%KQadk#S$B9esiBE& zKF#@qihi{!TvHXD`tawZa8%?3cBZjdN=LHaCe$X2_lE&%V=OMH%6YLrJ}Q!6 z;UHWy?CQ`~G%&mWBl%_V9_P@(RjrC(;#vZ44_VJXXmYX-l_vjV_%|+C^Xf9Z8vEjM zI4DJt`S&3W(wRBx3n#$1;<~~SFadt7o zBu>Z;qaG`^>GJ4lJV%{G!Ojy2Y4nv#%SBAZANn@*qp}}Gha9dL0K`&xrCi)7_)ND$ zXY0MAxKNhYAF}n1vgG(AxEXM7@?Woc-T=O4F)Zm(?ok9tbAX|64l5clk8?^Bj(Ry^ zsg9O=_GUoN@+)CD87)k;zS*m-W*LNw1kmMy-R8&19RN3g0+dSql!kPS zk?Y0qR86_mX53{DL);*CZO{uwh5=BlM`cb&I!6{rbdmIoc5L=aySlo@HMq>Y_@JP zUlMnepZQQx9psj`3|TwV@(i;0ayw?;_%^g*&%K9zaB!f%y6-xg_cm$d18nZZLgb!~*FuYP@))8r8AS#OTdn3it}-`AMTcUW%vtPvCxgeJ~B(NY*bW-&<_tdwejuvotq ztdPd%dFe)dyD<~db2DgRvEtGA7c-avKL>=Ph{^>Ruk%KQ%hRjQSX`~tsW*UFjl`48 z;eki)elkAJDWq8ur{^BT_`+Rj#v=d-c=?+5By4(OawaCbX9aI9oSn~Bh3hqGM+X0F z8-Iyv{<4wM35GPEPa8X>{mZu+1ydfo!3<+v>w7dwARByf9$#7&)mPXe?*?}&KV6J| ziQ>`u-^6Q5oa#K%>Z<*qd^t(_n^2o~TV630jR(2%6RbhxD6Yn4qy2|jfpK&!veC_d zDd*+4cA?DX-|At)5jc__C{{Yu`TV&N$LVu`t*oXmgYkVor9v9bhzGsx9*T#kGoM9N zYJ;4;*vysRh&mkS+Wpie`GYTSgiH=?_QAwD*KU15=949q3g=E%aaHWKj%3WPe{>Yh z8@Aop=`mO@$c&cxHnrX9vsu3i%4~}s-W}DDxDXu>|k+9 znN`iKfBH3Fu-E%%wMkFCC(4n-|3+!6;%-+C-gFkO;p1yU8 z>Ydp~FzoB*dJ*KUk<06+Muu_LI-_s+-6ejIjNj^Y^A9E2UqUUeMoZ%0?4UbReXN_$ z^l~rcWY-w6Au-KVQUxEwv((KL^O1_785GgtvT(8e(_+Y_jn!;M5Bs(zj*7DClpe%ak8@7I6P&D-b~J-fL7 z!R7(gmi-UyyJmcDrHb>|3O-g>cX*?bow|A_X-&qstzk(w@3==)(qz7(GjP0{_pJZe zM6UcJF}CNP5#iZhx7Y@Y+p@CcPc*V2fbZt&k#Ky5GUY`=geJ;C+iU-PDa^(rd}g1~ zx$vk)?hgft8Q#mrMA3debEUrW^kMHLgs`>@`is%N%T`Hkf0H*^LN10r_x|J1J~oOw zVmMS;@KWniNyA?8!0AAz(c9wkVm|T5K&W2u$+chS{#}~IY4qlmQIqVKeQ?^OfPnxZ#!Ch| zdqZ2G_!iU_sA|>L68dh`I2mRQpyJ;VA^+>#|G)bQhI#M= zSsPb#WsX_cm8GI`PcQf*kVjiCy}tQjeB5(~_E}`n7`$E-!Qq|evpv^e=d8LnqTtD0 zVn6JaEr^P-@=`%jq~c~cPB_T}It``hSZhLRdj;Fvj`+zX*EKXmi6x~Y_l`(afSLzI zVRyaYi$M#UCy^1Vh=u*=(VjR{N@;1SX?KlxrXtg@v%|a3h`oa+=xt5Vc7*9eDih^^xmnTfEw*o9%j9)vn%U#l@fB(f#ZQzv2)kxS5-ykTsKM9ci`vEz8$MYK86l; zA9b|cPFem37s8jM>yoRfP`vIKv7{}M*q6!%_HK4|j*bh)<#x#T2|s-SYkp*-K=Q>a-x!t&;HJwv{`Mt`4R z3OW4#CsmW*ZxuQkacr4gUOXZP#n7XJsOFBY4v7YXEh+iycCIUXjMzuz*Q7->uk^Zu zt9h9q-;HH2jIM#fb6lq4y7r>npklZww21e=P1WmaUV!m>6UaGsTV7N5h=0y7n5J`2 zsVT%=F1ZIEQWJO(vfC#nBqm!FEnuyG(nwTfyjV;a8m1@{4kl&MsU-^i#kt~#8uoh#p zCO!vtVS?LP>nD&6ysO2GwRNhaHRgx`yYLLM6pG%7Sin-oMtR+=2f{laQdy+r=!GGk z)x(HHI6&ZEk2jL?i7gxz(Y_Jl9|QEcoljd>ayq4c@#I+{`qlji&j8A%vIr&M-ANE- z(wmfDdQW+(Ux{KWj1{B?FyURyBZCupFD#9B#!qM~&)GQlH;`&%^^zmX#bV^46Q_3m@ZX)-)5-y8 zFfowQ4rg^*2+GkKD$iB}1GF=C)0eWm=$hlKYo#t)k)!UkVpC}RXA)vvB3y{cYLAsf zpFm#jjen1dJ1#;AT!H8RX=JUZKpuO%+L`HBG(vtD*)@NUTevm8;aWH$v&utR2H?~L9bc)-KtU%2KA-7rjLNYrxz%Y5DwFtM&#SaqX>NW5!|E}1C?$o%T>;Z|o6F^@NDt@X<}cFn zXRoa^I7Ft+%(lOiz-fq#ja6(`{!O1Rb66{cPfcI(M7xrea#`#8`$0C}$iX`>vw=tG zUFjH?D|?edRZE(b8v~Uwg%oOAy%@;eyxjXz0_U8m=;=H4>aA;#C*hgHNU5UJBm4Nx zQa_iK4s*{fDa`y~@wD+DZ@vmXCDk%wU!d000c)RR{-&k`n`HT(EJHsVm9nn`re@ zBoH%SNGvXcmdF0>HNmk{$(de3!fjy*!>w8EtF8fz3Kv<+%&#T)qq%b1R7<#?V2w2x z<)*69Rx8&R+S`j9HQ1x6sM%di6IP&3IVB30W9R8L6?Wl(ivXM(>2^KGcbFGV4-k9y zO%MVWjyrai?w_X9s~lasKoonVhtRG933_lP4EOQq4_YBd1{pD3**qVMWW^hES0`KP z8;2>>5X}C$pT))LZs?IOt!FY7wYqD5q+5?YgPGNxJu`NQ*f?$&bphcQBBbU2{Kll7 z+tXUfe8aAqANI6-GZur)+^vDR$>Em4ULA#OoZbfuCK+0m-6!+map~8}bB{zn<8XbU zgnac6%J!DQVd$!ThYrrx2vRbx5ie0nG`c-@PB_J^z$0e{hFr12A$2Jc(VJ=yKQ>94 z;RoBxP+cj^aVd+bK=M&o->v*V$K+A>OvAxiYt68%240-mw2m(cJ=0R;_(mi4O>crQ z&+`YwJj7x@^bXoB(xX^x!t+DeOCKAo2@hCZjq!20Qchjj9&^Xjs=`db)Mu)@UuW}_ zr|0-PW{np8-0V=*17?3e?jH^}oxZUH8~ltlbdQKl(H`%in}&4Cx4Djw)@tA&J?L%u z&RCukiJ6K|#Bu7Zq0bh`Twh5M3jajDi^zq$ME*=gxrdE8A9xOQ(3@D^B&)n5nj(Eh zQYO)wCpoOGeJ`}ogecKIJ7^X{LM8zP^SdVwl?KRRFSS{rLF!%H57|K(O|6x$@9%Mu~p4n0f{EXvmSOk)pv#^%_~ik7aa>L&k0pQ$@qo^2a`3KeqEn$Y8b*ryz>337>sN?F}O0%kL@ z3(U9Y!Eumt?8%;7+U}@^Fy8A%~qC!uvmE#cMAv!Cp1eH!eW26%6^H zuNygbUQ^4gb$f8Pt2Hy6OBDXi+HyOrTg$rVvFx^0WvkjkE}Z+Q;|^fTU<^u)%D}@D zZV|WI?~41%gv>Fi_HnVXz4FDvlIR^$0ZNoM)*YIJX;Z@H+Coo09R1qAURp|u*(0$S zid=Gp%I{Kl5e<0_#cPZp>@<;0;G?v@@|YE-n~+S&|# z{o0k~q+;=VytmQmCah2@z>SsR(6H%IWcxh4u4^CkR}-(GhNi*Wgp%IJ#b4~aR3rL3ZkrC(1z(GdrW`+}p^9_it#KJX*f% zOG1rB*I+&vkN{=5ceyYzxW!T6b7HD0M_~TXA{#`Ia#k|h8EfWrak!q5V4D21c83^= zYpy3FCAFr-9{so@i_qllHKnjvFRESwLvM(R4C+o{;|TBvD=gF8Ql)2WhQsRJH755& z(*FB&sL+pcF~;>W2`3CP%dJqbq5MO|=<>0vk-<*E7o+QJRYwQ>cQcsMB%DiOrI~!} z$w!^CSk!El?$HkOU}!OHUkbE&d(>e@RR}XKs72=D;DfQIpF7qAD`ryc`#)X_?l!M?zqS0%m^BY(1 zDc{1Z$I{^=W#%jQ|m~*%Wca`AL~=$A-uLSX~X5T{QLN)rZ(3v zQqCqi)uQE#myr=Rd~8$CT&$>BM0tIpp>?5g%xzqVWuX>#X8&S*f2qyFyZMult!0ls z?UV7~0C~*H6W8OiuOQVQ#W&d7toiab#BBW-<{x3s^6!xF6BpcWzp(CV{WZSGHv0L# zF!*9Cbe{g~V1CS6Q{?O#Penk24`9mq;O)8OTJwD9Ke2z9uP5C<2)?+{GU7NC*R5NL zag{0yugqprUBd8F_LkP&{dNxO-bMxns}Z|inX$s$2N%*<7Fo(dCx9Y=VzTbUS_kj$MBT|K#iF9*DtNTKcM{aZD7GpvJxe*}kg@ zI(K_iP!8G3JicSsiBJW;bYjd!F|;HOP79dJD3Z*NiET#1jIz~5$`~kVGhaHYAHK+B zhRuxbLHeZnpG)HfaloHy^71xZ92#)v3(U{msF6`e>KsY9Cf4VJsh`U@734aH%RLiW zw3MrpqgJv*+P_s<$9B;3?#p6Uf+0S0Z=S!@M_UlBK`c62cZ=bu7O#GAh5JqZ9r7e$HELw%s9l za&};%ws)M~x3PbSaphy}*0Q(up-J9^uI1r7@SBPjHwzAC!OV0{jR1hjvULwpT3B&+ zmr24i^lDl;3A&J}_~46%Qq)qI5Te0{l;Q8jnyo-V&)c0fRvvE8SxEKA^v*$EPu-3P z>-}33Cj%@Q1{1Jk!;o?o`Wb;exF65_Cv&Sz?@7=q0pgPo+LB=umN) zVbn8IgvwyqR}eq)zK!m&JPdszx3_PVPnj#xq%jHQO;>!~PsgJP)eI)=RV7r=HU$KM z2RI{G-wZ(ckv$m}AQlzP-53SusH0flOkj;|-b~GrIG|S-VO^i$r$3uFo#i1Z?qc1( z>x`B4o3f5M?l<`B?kydoC%Rb1Im{HFl(RC{rGZ;53Ti`wX~X*qoTzjp%~Z_-Wkf~C zumTQ*4TI!rz4z(w8a=ncTC|H4nr=v)pSWG1X!oy|8zD9o-8j5;q7kHkvti>}r zM2`kof(VAn10nR+PXAHH%)gU52X2UMV11`zLax$*UG35or|ysrJOkF}#Y*Wz6KpLH z_R?`6Jx<`W4tlq4_3hX9dkB9+ZJC0ohR)B^-&=1{S3YQTpT}ZOpi}V1i1FO0xCIje zyh<&vyHpQx1b$?!(C-n9w}J`^=u`zb9-t)EE zzufyxP1n|aX&-Va48tn3kV_AU^e-7mr=q-;%M05Xs6?P7v8A+0wzDrCKKbg`htZWgUi0~FM!#hsnw~-qfI3AENTeH9=xPz(L zT~h^A|GW42fVOxfP|}u?gm{p zLwed<=KQXEA|lelIe>1_3*Bud02c@S;Dt&CIA#K)$%>QCl;zO-xCdTS@n@Pf5oAzL zK|sz8ONepz#h*D&cZ-VrE-{(Y+o-dkq4hAFYgtAFK+H^_{cQizGTpe9wW*EMLYM;D zlm@<3C>~cYIqpLk4s|Bq(5M+n!B00+LzZKOW;3|qjc#0R#88fp5&Qf_%S~sj$@uzJ ztIJYonAs}!nRAQo&>kSn6C%!SDuO%S`?x5;hyoQG%amR0bL?d4H9tK2bz1EYFW-`w zG=bAP>lm{IusryW@9?f{yY~##NK2=RyaC(!@G`P>L|iZhl-+Qxpe6*f z!j7IO$+?F2A{e5u@pYVp)49Hh(9bh}ufd$&Na!D}RTobq`MTW2@5qliA~Lsq0>&Pd zgRV3%0w0E>gTI=H+XjSHT2w<`Ep9=J=VyvJXP?;#0Up$>3}yKO zl)ZUyEdrmT2c0euA(b2R=0ak zAZLkxUdLG72+~Z3*rR%~to0{uo-_$SdeNDRHSn+C_kV9`6DDIni4m{CS-E~D!Kf}-2P z2@v>9vMbBR20a4M_!MXd($?0lKAQYfi?zOP^ru_)siKoyayq!52gKgAfI4ngbU7V2 ze-LgyE=1W~ybkMA!z8#1TnbQ0=&fUTVHR2w<3JUH3(b=tvc*RDfYEh$|Kh@4f&H0S z!>IQ;=lH0CiicM&vD)iFC8`fUHuEe?y1fa&GNm8!MaVXy-K^**N5|SmNY419#ZW#~ zoNg>(X3*fErmIs42Fol$i)lchW~{J3#b$}+Sw=N49fbm)CBwMWt)@lJ8rJAtV0 zL1QMRG9ls!bt-ygG}8}bY1|8lxJ7Bk)PPAx>2YJZMgYO z*7_N2sv|iuSiQv7$dM41&fx-Y{H_YBta7oCrpc-{a_KR3eQw$2CoK{ys4OC9fh#Dl~;f3Cm_~5^# zOLGr8fR%E>DZNm+SQp}A$C@JZI4diKyC;_6G=&PP36-4;`*8N|`H}%~{p`TT#b$59 z&`nt7-^>)Y=?$6-Ht{80KW@QOaDpT;`HR6!m>?Es#LVs)ylof~$vt4^T%5fIMsUU@ zckJW%_?E+s(xP&9CUz2LR$Jg0#22PBS$hhqU>pk-?a!pE0MVJppvy3dgquGge~g7P zqO5StkE5xxWX7>6(#W<6C;HV!_|y&;-ZKJlj|kS=U&nH~zs0A+wd9M@Xu>U;1Y60% zZb-iFwISP19`%x*c)@a0E%~xlrefm4z?u=g#qY1VT+4R~1iT<@a3w}_!Ni*&ooxps z)p?1@2heC!*d(pF^!$Bh-ORAGUQqrZfFrhrzV_wr*$rZSOmlB9OnC3X5XxMYenwzl z_eBs;DtDk&K{r4cja0FuNo03_yJcDOQ6c?}wiMkMTnz13FUjD)>`Vv)5g|oHe{=_% zq*C08pRSace2*sR?@Q}gFE~&GcAEQ;it}qY&ZgkWVjZIyu_%Moc|i2z$$v-Rgl<3G znDKKEzsf=)$;3a0Da(KiXwz1K?qk(ivtH$rAETCJa!OzwzUTo>9bJq7Mtr!qZA`lf zz>% diff --git a/docs/images/nf-core-demo_logo_light.png b/docs/images/nf-core-demo_logo_light.png index c9d0c4b90dbc58dd31cdb43e995b813c69205420..b945f8cdd07254b43db5264467edd72ab9090176 100644 GIT binary patch delta 20682 zcmYIvbyQr<6XgsH?(P8wm!QFd2Dd;$2oO9#aCd)5aCdhL?(Pmj1_>5|Ly+L^?0mo7 zb9T;|zh?TquI}opTV3}C{s0I50M|5w%|5q^Kf}x_J8v4CW~5NJ=`UGv3Grg1QK78w z0`yqG8&JxIZNWLyWF(K}CsbiZ0c3(Sm*DRoXl(Y|qlL zMM{vm6z1@}m>tu5ZMWSlH`%P{S_+GR|NdH7Kz{w#t6n2KzTyx&-tB7|FdphDu$l9N z31=G_K+j(kjV7&bz1RrJIaIz}8T{uAQiP8>=%BkV0eUu{FluRl#0Sd`!_t}s#0M(RIS}V`svBOQXj3j5r28KMZSE~3|H1QmA zCNwrVpC4<7St<0|HbXnFTL$VMQ=LGlp#*{s&5Gj~C*FH`Yi`hIz_u7I89sGBWU9u6 zV>`nBm)%Un(6RyB)hqzmPM_c>W%1!>-KO;4k`R&HJXogozD=3>SpI&7Me={I6>`q; zVf1uxPvQQ92+}csD6TMz%-J%1`nH|Fe`G zFH@US9|`Q+V!zR6St4~H_y2|r)IJYxl-~G3~bY<~N3%H-a z5`HCYn@^py+*fSxYv7Z+3bF?Hg~v!eUX%YAqeo!t%NW}^kN=2TX(i7dLTYs|yfMo&4aK}E$K)=oyf$A~O80QDyF?thc*g z!W3%XesxhYG*V9$RRY^5{F;;QIwp*9=V;o~%1jbYJ@w@)^5EgYhD(fS(-;>=+lb3s z*`h?n;q7-nNA{x(I0bNUG^s5OMD%`MFyh)$N`vqxKf-XW>E74e_cYjb*RMy7b&pR` zDfe3A0f$3)$`N5_2x~Vquaw#Gp%s`W3zM0hhZbq#Cm&;PXd{98?cThHHyiNfDwA~G zeh+fBJ#~}|v1{PXuKKo#wuuX>Nb2Ruuh+6EMAN{@-~(2zNj=(8*FX;K+^3k3T-5c# zE+t40@(cY0gmjYrj@A8d7Swisd?op$om2~$>kY|IRI99$6biXoXst|Gi&1Cowy=`c z3$GLnD5hHJ8# z|NduTqMF_}nha5Ozd-U%{qHHD#rueF)Q+Ku7#O+N{yGEJH>xCh?%xHjMmp;Q+4O*} z0A^f*k9~gcy3`uelv&y>KU-{+E?Di{Ae#rwDOF`yncZ)3w58d)X_W=bK*pG&3BRlF^-lg z($ZfL>_M4W)EzFNC$I4 zjTX{fCTU@LU%KZ_RLQ+4L8;+Rkt=k(B;)M_n^gvsRqco+`qXxBf7i;C1bg=UT7LOP z)82NEm~dslxx>{NT?x*2Pm8EInfX*bW!a@znyogn^Nbi9^Tx4KLPL1t(6P1S$BIMa zY{kFT`bvxd#EtDa8htb)Idq^HJTl!3x|?xx_1K^`6q5YAWK?=OVwvJ${mtC*bBl$k z2vVd^b(<%QY;LnD0o{4V-B!YH9yBjehG#f#$9(p};WmX<)Px_!eqM;>zX{|J7 zZ`?ihdX#>Xf5;e51%PV>w&Jns!Sswh4?Bj|O6kV;@9~FX7s1e|%3>nFI7BIwA)|7{ z)<5YhA?L7H4Iy7Tha>YZDk)xW28Y!9YNiKVww@Ux!MlbCUUfun%TrNi9Zh%9_koOB zde-+but~(0*x+A9dx|Vq0X?y1d=5`XMQZ!mO)|5{QW%qqw!q(j`YJw+zq6@<>xKMC zyE9(Axdc-};U`G_!pdwS4`rgbSbq!rOEi-Q>9yX``>8`?Df3SzsNsf{mLjc4z3DwL z(%)8j@L;ee(82FE`D#-K8grFQRCJvF8Kzq;Tk^t+AnMP`T<;Bd;eOm#h5} z&Bddy@J^p3z;8;()Kwsjjk|5(FgS$+6XB2g;1$NGwW28TL1oqk6+Usb??NP4wlnza zy=tY-N*Pj$6H`|g*!8afTbS%K6`!7D)sAk$6`l4E!~h-~C7g)I=F`Zf*i|H(W%&w^K@#M$s0T zh9H?8s^qMd@O>)!otK93&gQ*lx?V6gX2((1#)||8C9j=WTSSeH$GPSGszm($J7i+D zC`|>@7Y)i|fgVfndF~VC6$)T zv#1x}66);w_v&F{%ImK`YJ}7$s;zM5z*IvbGPJlRPNE_s+3gIZ_qm^cU!$bT8PXu zGb_4e1?~}&yauh_B9g~6RY6yp!LeMvVw39x8A?_B4bGE0qV>0*Son%}-Z{w@kVF6@ zFxj%Xpd(D?*BTx5sTakHtuXO_=si6%N&T~2$oTA8Zy!FmRH&*|@)OGnNh1>LqZdXjWD* zoIf?NE`Ua`v9bSd3If>D1LVe%b|!^&#TxP~(r%IA+m5Y&=#BHkCOy8e#S_HkUSDuC z5Xdl`J?+ZM%4!slz}-oPF=6Q)jnm?3EwSSjdBvBN$clm`z% zu#yIXmGJEcN8rxemy^a9iSh=imc)-XtiWM1{ayGNJ`E-q1r>}4&Wyt1(jEOaPy8K* zw!@A3g1&W((%}^`xH(JZt&Bw>{)(V{?hl8vEj9TeTCXjriO4Y=quc}Z>K&T{q3n{f z7L62MB(4^;hoI1Fp!c~;o%M;xrV3w-6w)qajEy_O2E3a@=0e|1g`-oyaMHje94 z4y2b2Odojjw+HlyLv9gej<4&MycR02}Nn~ zh0q}QM|cn7A3ttMQ2!)1LZqteL}HR4I8&KTW8MbQ5FS%3QmT}!DQahNU`veWCYrl_ zPwW%G^JY!V2UAI|LHGHP=HBW!dC{a4;8jUkH&^E=6KDV-Y%?D8lDknoc=i`sAe=3} z|I@`{u)9CN$u%Y_qu>2gP?a=9a70U3PFw3z-ipTI5fKFVp1re4pNg&38CKXJiikc? z=2^n{4-*@2n+tYi50ry!LrCPxwDAzM7=ZxsgvThv1;Z8PG<42AaRbAv6ag{vh9oKY{C=NP)dvu>)2)5C7v)X2#&vFMAXiV z%iKY~1yaU@so9qn0gO9YKNMVZpQWCNXWD=qt@DR}ibZQBQwGcLAw!x@OX7%&wU)h% zYve3Rs&;0|7Ub!`-y+7XoTP@9AGyg|@2{+{ZqI^F_Z$#Yr7BA3{b0hcpaPu#HcUA*Az|aK)7_w-E7XByC+g71$by}FvLNyk!cpCS-jb^lVy+VhX3lq{Z@ z&Lvb*D^R`|aAUskkl+0IZU`T|2zCMqg>M6|Kmo3QdRd z4%Qqo^+i0-mE|DrwHb80Yut--iQ%n!Fr2)#Iw>)8v${fT)H3?O{9<>%4V0*6i|iR0 z2Ap+*5q?;|IZEY5w#sku>`j14yJ3=CEHTEjhiD`4P4akq(2~3oiFJC|u6OlZr!|WN zNeD&XDU&XT{3N=_aA7#{cO4)ynUT`{{@oI$vi>|H~tZ6%bJ3X=}61Bs`@zD0*pt?HEm>d*V*Gb*fvJR$vO zJ+jp#=M;N!+vuQ3sx**&xOIoxKuuGd6h!AOM^smk^jTe}Q|rYVuknmeIa|LK>)au| zYJR_bW*k~ae?N0@`OQZM?7(caXQ#jXjza{hNzeLKf1CLAm_e-2#i9DSPsP#YT^5_U zE3{i?B2xcOHw)u{U9wwWVyUFl*1+MN6VKg52e+5gyA3AsM(06&`bm?aWtF~LhL~Ye zC`G$MrO%D0lqUWEypn>fD$ug;z#9zr;rgHpHD zkJKU&N`UG*Xr*0%?AS|5a)BQom0g|kHXuYRFlYDT?h`!S9Hz$cuRuF0yG-`j3ibA=H!r4Rn=p<{+~b6ynA`_ z5hnL6?~)w8FLnEuT>+v$zIiASCrgolm|rQN7G>G3Y*A5UNx&kPYiHK~`y?vJ@#Tpl z2S*>r%op2L#xY60_vXfB{;^{$zWj)-nN`nEU!10Ss~+Gf;VJWga3 zt4X~bLF$PsPpfuJ4@aVVuOaT?{Js{*kOuXd-b1orfuIG!W_2QsACZinbV>k3gFgf` zD;=(mqCWKET)Sj9<78&AeSNe-z77&q8h5w<`Y22>#KfNEw2zo^kl}47=ur~m!yUeY zqJSzuT3RL;vf`BXcsI-VnXY+X;CCIWseAGH1XXd0xbU0T0-{@HV^GYjj?>YR*bx(v zM7C)cdVSGvyD|DA-wNO!p4_z&|1APgZF`jBaFtWq_U(^sZhX@8DG=6=4V5UHCJvEm zk5Y$n{p(f?-yi{XG|!&>m?x}Ta+9zp3pHsRZj<28pu%5AvGyMREEoINCrH=yNWS#^ zjQ**GOC)NbyO3zX{O67%6WEc#&$`6e1JCSj;0X>UCZ)KDNJoA`T<8uN2%g}IN#b_6 zuDxuqSzHJs&1n7DLV&`p5|WA5!(I3NJF0TfpPB_1C!iyG>pANU3HLu8mSK!N4>J*u znQ!Gyt}zzvzK>R8)K7on;29^;@otdpFkEmvi$~0B`FGsRNwCu0)u$kY+)e3dvJ_4| zL1T(~pCL~5%!iUQ?0BwVc)3*oQ(oFJ&M`&Yjb<0U3m5+n3=Tge-PUv6(o}q>bmr)SQ868mmQKI6Pz}ZGT%_^F zU(#Hq8+S6EJUo2d=5hY)_*t$?H-E4DEm>brPmen4>a=tMHDSbHHX!_py||@?(C61@ zjx$6#AtSA7*xi$#lbTJ(YMby5$zO(a@I}aFAx3Xe-m!6Y)~=(W z#eMP{iQw)knVjuT!e?N?+~qm@*K0HlJAAO{KeF>Rhdf_SF9orjHR|X!*}$Cmc0Jk* zA8LPNVJf*#l+SD%iRv&Pt_(RA0#x~xRmjkJA<%*n~^n$pad z%m2mm<+@wTai+*X%k$vn&6~#7+rlwU9q*Z)T|OO<*UWf~$T~oIjQW_OqV+k;FvpwY zp$!c&DIOIRCf>G^xY@0e6VJ3Cl9BfDr-_I<>vVOBW?7CUV>H(5ET_Sn&A3ySyl-ps zJqT}l6_xu?8@wkfmM*T3oY~8`6a3%3bweBN(h?WoNLczple6bcIRO<~BD-LS%v;D) z<+N8Cv?Qp037AC`IUXR9AZ37}9Wn^<{rqXs^IB z`G*|TfP>08#m9z5PMtVw%rb1P zxT5-D4tno;;bS*KF2C(qrA|hn^A>~&>D5PQ^7`rw$z_ES#e*%af_|Utj+yWXgS|Di zpU_TGk=)`PscB#m$sJ;h#Rgj|`#iAMX4tJ1C?AT5d-as{%kqU|f6#sCZ@Dwq@ zuUzhIT$!AEH+MQg3+aYXiO8qGuIGCiNu}=d-k{q3US|+}NZmV*-#;gP;!*pV zuQ7q=lC0Y6gjLlVd9E7!q#w{Ykpbo|9mC_21i2`??7DA+{WRf`1O8gwG+!GKjkp3{aiYfbfg;C+MMV1kU za43H+A)(K)eoRmPw#QY8T}U9x7vk<003#XO$(WM(d?MKkkY)Oa`^~}+!uOtyR^4Mi zY)Xf7UWsEOqp(mB8_I=2lO&V5)E|AZakoa6X1n+ELMgRSBy!$$=^^kUc8}}#aYDdR zb>lBAetf3`5w(luV*?Zx>v(M6+GfbBsjgHsqXtp}Kbq5!j63w%#s4WzTE<&!O&_BQ zQQN=Qkg}EiFG_4iTU>f_JFxL$%Y_3Q%q72DhLsOmw zO9Xtb);mARcz7Vg`0LZ>{x`N*uJ*Q1ysOScRhf}@jGR(wgA$KY(nuGB8}dCf{c?cKUv~>->8AQieep(?0zgN%5h&sA z%8}BZw#lL7Zkt^+A`FVO4fwX*EhpQ=gK*wgKB^JXunV$wl}p4sVdv_tl8ZANXjzCM z?0+D);n6Ldq#iNNaq5|<^!}ZSV6PYV9|>=MNO}Rr<~cS7&uXnt$-foie|leg0!D zx{Qn}0h>~IQ*foCFTM1L;Ubmkymo!UK{MZl!eSjoGNMe!cU7H{3tgmwo ztLQUjp*vU!jPETOMy=E2%f7u*TpYhKgn!U!?Bu81_RJ?=^T+8{3g~jYAP2yjyv;U4 zl^N@$#*Qcw$97CXsmu0=A$HZJb75*&^%2tBUzSJCTwm9kO+V_c6x4YM|cSUL*@5+yOThAGi9IrEpF{ZG!&bdG@=2y>A zG&@;;4$FIFrRQaOntzk2il;YR$j!3@hnsShe7yOLW^&#z8rS2h(t5Fq-4p&iPW+0( zWcaO_#oxzzK#Zl1e_F+>wXMpB{2=*w?-M>_BH^nuj(Z^0gs7O|sFB0Oa~~ zV1NSmkDyxBxYWbEk2>5bVBkl}sPTs|$}|(#4?RG2l48-f%A3>tIJNzFNe(Y^ZO(TR zX7+^lT)hZ8w~*NuBLBM+`euVhbSreBR^)XiodZ8d5kEVou&-mq*b?(utL`FNA6VQL zdVh5WY!?jG?e{IxgPFvw&oO0}cQ*g3F5$*y!o?sx9dt3K*LvX@>LEqcM)V}UL_K5IUGE>P zYWye}xD{tzJCjgzZNTLjVcDF#Ln3jQko#i9?x+`VO~FRsSn6kB*NFI*GTumJ1kSK15boOh_%xH3c1%e8!flcD;8UI9-@y3V1E;hR^8of$Usz1B z+JGzjG{g$Au$f1}AI2Tkh*#z)+S(^e6lgV?h*SaYB`@r4=PvdlXaP}_*5fL?xmj)__NFr>9B|f20LwSjsL@dH- z4bHinPudf?5pssgHuSPU61k><+~+?7BSd~AvgPJql(PBn?Y6!w-pkM54`5{bFPmTf zL?*6FYP`z8k2qAR+rc4_yeZdMZo+APKP3n)V44j#kt!5PG%uwPdJS}%xB1z}BzIGp zh?S{#!EbJ6Z+|gC7xU(3`yh)fL8SUdx{UQs5Psi*)OAG=oy9PBGO6dsdOEGfW@!$a zPyg%NCygUx{AR=9K%9^rO)8}}Xb^MI&e8Rtc#knJSEcoGF}VE`)D?7PRbUXRqZJ^- zSgNWKZOpDb)g?*^G}&B5=}2qLKvV@jh}3&v<1mnulqkgux>5x2RL*@*=%ESSn#Ev@ z`z1$g95@>~gnk&lE<{_cARJsfBr|!Fk&Q$nVKIgr;#>0RdzlNxF|n?=;~>^cdLs|! z{4cp$ORMV0X5Wxp4~OltE@Rwzi3elnukp?;Z)=yOVz?F+Al&ya0P^0`J=B?t` zr)(O{n8--$E5S^SP!~23y&!R3qp@C_I`aB26_hySfMwc2EYz)G<9yJGZHs?zW09JI z6&Hhv$Y_01lG&!vQ4Zn~oJ1*+g_^^g~Kv6mrq29N!%=rYW z{-U8;6-v^jPulw1{x__eg!t+pVlMFaNFtWV)QuqmfPqYm?;ab8f+oVX)oaqBy?phJ zV)5q*J4U6Let2S>xpeXSk>nT;+Ct2RT>=Yv4f@_cba4k~d{jik4#+x!IW^5(6v1D| zU$UhJ3(E>Q)IcLR@0+-{(2Dj(`UPijLDp|UF z4d!1~z!DrU@vhR?BMbT;x3CmfO|rhRPzYpEeu%a3cqjM;gbQMBp6^dhU{5$IXr7iB za4QzaX9xK^>5C;r;YIKMD#I3#INdcW_0&1fUodUQqAzEKQq*~vPGww`Sb@6K0znf;7LOhE5VNH|q&MDIYkTk&X1rUa`ci%>3=v}cT1R##gRq!#J#M`6((x-K<{SWgq=*_PXH%vAm{}a z-M{KhCMm^;#pthjD6W)deJ#LHZ$A5*27oyU&C5P&&wUQF#ve-Mk-ldXs)2?Pu!kL` znL7*QkEkV->gHT#mzgU1{w4Gu56yVhiy*H|94B^H!Q}}jdHJYHYghHDI8yf8E2f_n zzFWNSZHLr-N?>@G@i{}*veQoOx0+Z!f%h6Gp1Ba-F+Vh(nT3-OeHP@Q(~lK;0#xW> zh-Nb|kXf0=n@YmN$|eNDBzE1z2tbk9$d$*zXB|&Y+^k?NszmI zj5XQxVAd-PE^Fh~va5{Js4sNDgK2#iOG<{09EmUr$`ZfkOmH?O zhsKFAUrjPY`q4Prc*hXHyFL7`Y)&rW&xcOJQO%~hR!vAvFe1nl-iZf__XzV2fIgIj zHzn)l&R<075XR!)xb;kyBGuFOj>R`bCx}+rZhe=Jrzg#$OwoQr1&6xPOf_zSDZ{e2 z6HUl(hIHLlTr?mL!wwh2+To}?{;Et>qSa(R$^`6lHv_35afMpUtuP7xhq6nk;$&P5 z*!&LH5TROyn-bJ>dj@PVAqdvYT|>`BMxXD$vp;&}|6L#bKL z?X>?Uo6>Sx?81RTYUBtTuj9XBu7`@wM3ue38Ho4U+@^7%^rfU7kf(RBnwMMcN)c`@NIC#$(WUpSZP|xpK zl+^!;5V8tRixikTM7X)i1lcdXUiopK!>Cnuf`x-q4M{tVQu#}Wp0-d(^hs^d=u9YF zBrP|B3O#MS*J2P6gzasWj~$9KWoB0a{VOIhPk%s{91~3;V5_Fh9rZS@etMm-9TXFt zI3{lEByFs62-p`kqRrT^;(nj-CI9 zS2tOlpBqyPN|2zyyN8sK-HUp(F4~Vw0bS*bdK@Vv81Aa^V)DmCn&k%aY{k=w@TMF7 z`QKm))GEl7K+)T_UeTM(qfgthEra{-K%rTnfTL?tfP8O7x*PGocOuw4exk2XkT!Hf zbhF_|Sr#j*;ZGhjt3Tl|;q4wZt$(mNGNQFpb>xk=8$s#)7k~M2SLzS&^`F8Md>;8mHrJf}nHZ4Y?z-0C`z5ym`j zzz79I^NERDs&_L%1M~!%vRjCzYjARC6xx4fDFQv&S?N~Z_eW^XXa~QC0UshF;-`zW z@%v18uBJ+%t=xa&Acir+rQi?t;= z95d!#_0@1*8sC;m@;_Yp`}_aGSi^?&z5?#7uLNm?es4QXMkPixn!4ozQ3e=q`>`4XFj5swq4f*oh-l16vxGyzD}IqG?-mfe)uT zEY-0r+dKxK+ca8diK*%q@#qy`ALNjs&aGrc%P{CmV!`S_{gzmap;JTXuqurNl)p z7V{`}ueR0Q%AI@D$$4de?og8eb!iXpCROr;W7c&A$0v5{aPV5j-aVTK;q6tjnkJ+DC5T);Y+BxpVnP17L`102dX{?Qs4+4uL!w?U&TxH*4c#iG#fhit2Z z3=)|i7bH0zlq7vmn3ZG>FHF?&&+3R5_1E>W;q)ql!NlN)!4ZLlN~!qL$tq2bloQtN zx^9rYx3&-dBH2K<+mqaZZ45hTxrGcsTV9PJ86sj*E=AA6+x`yZAw z486k=uzzGEr)>QkHTI1sOqHAev$gYoHwWrvMX>2p1PRnQn}S^-2t8}h zGVgzuDVC}~eH2T%eGL z^!eW?zA+GB$0!n9L?W1Xhnnfd7uL&vX+TpW+_PdOo{t5{7jz#E4mx7@4$1zLepV|> zCV2016Zi#VQbbRhm^0hyn`OHNl6y=eG6j>C$q{G9sJZbj4Ya*l|FKAcz*N6xPO7E( zWut>^&hieQz@15+FE|uYG(jMMic1!s9gYfy$N{-6J<$4@3QBx(oTEpVgzw6bPQy_u zjYEsMyL$@-Hm_~FQSB`WqIWHvy`zH*Y0nFbr=sVO>7(j;>OqS!Wz^!j?DsfPDd^sP z_0s2`&Bvr(K8^7Lql@E{KBVW7IOO9NryR!avTLpkE~=b|W$?X>6I6u2yXFLi_;c8A z00_v6Hg2i$PHr~izeSuJ85ybH+!ncn)hG}(P(!$8_9fD31MUVDcgj?TxzpjPh!gF; zj&cygdyE&Aki1Q6n?>uTjX&fU1tdWNduppW_-~HOPGn9;^Nu4IH04(14~h4h35&!$ zF4>IeC#*3|k#@`5qZp2;XP@c%q#a=HM<$;%orlKJlo=wPue`}Iqa0In`&q{*FW@|% zGO&pB#?)+yrWFx{%OyLcEaMJ`1*z&4>b4Flt1)7wl=|$%Cj`CbzZ4Y5=&)}=_s+ZP z#E}EoCz8}rxwhu^_VzrG6YCc6*-9->z>?otC>4!lLTw4f?s4{Afd}>KJ`l2NJ!>u3 zuUhfAJ>YGhSUzOyLi*YE3!ljONkleF*7=^A)7d8&5wS+!q3S&5?%MMn{%VKgN+^nK z8Zv&RBA+DxX|(RytuM9LsDZA)0``jFi8@T(S845;LfU&t{p%+%C~f|5YyWc_vQpHS zBE_9}Nq!yBS&_nvHMb{8_bvnm^x z6PNmD-+hKqX0A2Z+I(Ba507Gu=qS3BX(R|4BNprNk`{ODe zoLddD3SLjU_z(pnxK}cr6uj@%MzBWe^2kk`pjtYG6~2EZKO&#z?!iAyOzni`w2Fg0FnfE5GAn^csyO z+9P{yhc0No{#nfTAQR>_gQqxdyF&H*HE*#CH*^lLVEODB{Tns*l(o+z-xk18n$xea z5JXtt*l{K)g-!nbN3!F1H|g)cE*N&Zf)ze~UEz&OIV&C2n#!2f*X^_M>z{F&c=gEp ziRnt!2GpKZfR-G)w_=Uyep8JZ!HvS!Wra^dK7X=f3eeOXjh%k6chAMA)$@NWS134Jv4c)5@S(5zgcX5k@5G@T84% zC!Zt5+sT^6IOm4aw*nr8>SE=wSg#1vBSN*03RLickt>7?J5R!&N?16WFZ#@c(IFAt zpmou`Y?s=J;jiPZ=C>Yn-PB~Ik4^htm%K|q9TWpR>l$}#wV#l*bIkp>Lql&QS`VIz z)cvjP)q=o=@>(D=eDiDXer<$1^$6PQOj{2gwmF9+#ho*wRvyj0RZyI`D{~}(dbY3I z+Q9{U6+e@2z5fP|A?oG)6jp(RAi}6J$(qb+H@$5+3+MMG$0YtVLtV*`J~b@a0^{;~ z4Sf?kIg#V{eN}|Y39bnmd~1wDYt_C}C>E$~lZ+X5h-?5x!xNmlW2qy za~YsN8Y8Bv2&b=b<-j8iXUW)5Aa9)qIqBbgW&cH(DsmNEOVN#D?@gN_D#LujPW#LOV{VyI*3CU@CxA zqX1PJB!>vRXK%e$M@~P*jGwQE;77O-WJ@|? zibJ%Sg+MvT7}L2(j^`1*P7P_9hb01ardS#!OD~MJErdOy=4YWqOs1dPzzogkT7hai z|3FpbBReY2P&>qJ-1vPv8xjxM5frpL(V%WpmXsINHvrT`EGOq!*W0oH*u|E#C-QTd zSS?v2tLY|r)PZl3*&fP`>)XWX8LIvBAQJM!&e+s;O()L81y1_srj+&kh?%k?sga;c zAJr-Y`SH$4f932$w9tRM>BZgD|IVQP+5hISDN{xd2@_BP>!=~^7%hl2%K@0EkRMSM z6u*WfjKQq9EMVPtMx~*E2LFG~APKWFxWB4K>?B2P^&_(v=}Kl4PFmx)5C-?4s~m> z3M0U9<#(f%+| zo(oxBF*VklxnM!hRXDIraDjIoBF(P%gtSSuFV0kkd49tI3tUpspv&P#3<5b(qa>yG%85y z?A}$OZtyjG-HEW$Uwx05fwRF&8!rt7f`4pf%^`e->+kyZQlQ7FGE4>@ZV$Hea0>c= z6D2gZC-*BjdP;pJLww81W|W(U#)x5V`ro;i3+=cbV{dwUR|*iddCorjZ#_}5kk z1sb-k5&1Zd-)@5k?b;rx_nlWWJiRd0Sc-oANJovV-mU`}YmDg@Ft*1A)pi10hv)2y zUv3XOsN306&sJH#Vz$huR8Kd@GV9Z-bg^f*MsX0MUlXP#$ah5hrzBWn$^!{EH1A*_ zI49l{eY;tiuj_L3QrZ9td}x>(c6oEvmfZ`AeCOPiWO=?G9H_%#^6 ziabT(j?U0l;yVR#_uWhhkbzwj^FI+~*;jZON|!r6H17t%??Z{$Ip39~t>|icdgP61 z7}ABD+iN3+kyA_?4F!Hbql;Woh*0S=icmPNpq>zxH=GPy2H-A;*xV>Gi{Vzqs zy-==`YBRq6$*g&cU#(K5cF1!QVm0(xgI(YK;A&1~xH#b}!drvR#8*l67Q{XD4bM+s zFmf~X1>r^{9x&*aAnwU7S-U<6Mgxd6vyx8nBGuZJtFf-S|N9-T*RTl))dJ0eZ(ldT ziYVgXE?DFlw(ktmV^^8dP>YcKPuD0amrx+8pU@%728_c6rZ$A25k%DUyAC9pK_hPD z56B-NxNbZxA3uP&Vkb=NCtKM;7(Hqn*HDV$M-Z7!>X#})O{51RYvAQrJ)GUL!!yvmHELy z^iQ4xKs;sk6Gv=e!t4(LOJ{jvqD5VZoO}aeLu#l;^<+#aKm?nDlLgmKj3B(YMIp^g z5j&#M60itlT_4nq(|>vb>QfO7C62@iFw~|TmKsW>jpvmy(ZNeob`-HxF!lQ_Z-beO zV5lXn5$~-bolO`wECTbYP%C9e{$Rt6&6xrhUQq;ZOwzj{*F=QE<33T3ASlff6VDId zuMv8#`}FYA5-LJ0Gi?mYR=8X-ueatGX2a}H`C@hBHhJ_B$bJvz>U#G2yEXXn?5f*} z0d_GD){=2V^9un#67?ALad{Iq;)uYbfZO6e2!C<)=4k=Zoxo2MAvHa>8r`ou92j|I z4)4lea9LDO0B0tIG0lxt7U{7L( z6B{o&^g!c`LKHo#P@eMafrfi0Z98e{Y??da-9M^Zf?WiScqtQK;k9G6e3w~1|4;UmWMc5aieL$_|5 zr%aSs=Hxs%deH+61@P`jKz2x6l~~PMv`}$64^}_x2%iStURL-cT=9gO#f%oP%fa4j zq!&BbjM~fER%R5&`dI6RcuNV}&XIj56`}BrD`O7lK&f$jdRe1catB2HmVQLVHcCO( z-5e-^Ss^z%ZR#&pM3s%h6vmT?_HW{uYIGQ&HwD+CFW7#ckGgWy6dQFo8MKgK7aTNq zzMuqQs&S15hTgjQu2oVeJU`9Cl^fFv+&Gxb$4kBjU?Tm@2e8BQ!17y&_ZITA`RxsR zjUN}H;EUd9QOygY1cK)ijy0aNrNzi)ru7OOcwraV^d5MATXI{z6a;Z{3eR$+!E3TF z)d}i~SGC#lHQsA$I6VR&%0K&BuVv+v1bkETXKR^@)Y;m^ z;Fe@doU_JLQB9burK8O&uibQGt%oMwTg_4Tab;o{Dxmw2!Dk6M<)mK=y_~?strG_a5H{2Rfv^!i5b|3prGy#98rN$P zJMd@Falugez{&u7sr z#_x>aN*$J>uJf)F0A(dZ7u+L=ch}T-y{7`8{5QY7d5D!4NV7mg%AEbDNA}I@_y^aw zvF`13xcBNn~Ind|DU#_5rD@^EtK zj0->1p|(mj$THh~Dk#(Mz@wZr8{{Qe>~cq>nL7Ur0EAO@MIUP8N*_H%pHjxTh^(eW znmhP0iGL`fobklA5pnt;E#?oH5M3mxS*knFp?=@>uw!a9`?-=Vz3mVm1JY7F_t@1X z^V8&fg2$#q8OPzoljS#SH>${|2Zc|eBdU?yDVpVT;<>Jnv3mg#gjAEtm5^;=g)T(2 z0~Io3G1B3)_j}P&-c)`rP&L`34_4HTSoj5BG}&a2GJDZMv6vr(aq0mojQbn7w@SfF zwNb|9|5L%02QvNs@sE&}bIh5mHAm!FKUC^(vOJOFoDG`=4$C|D! zZRF^{zKWa)MOirtxsqJJr~UW&W83@lJkR@eyr1{;e8ULiy)CyeDg*nP`&00>_+LdGZgWC}CZb4w!YRk-_F1_sOxX zK@-pEA&D$WbqoaF2i!?Sh=X@xUR{Vt( zo`w$UE!#unLG8`oLwT1GScQVHT2(I@1-gPl+`~N7=iqa7` zy_*gvoM^%bBBJ1$68M)2W&C~xfy|@(=u3`?zd>e1eqwkiPNuBtK2~cS(x*-1)g07Y zO5!y?qo5XD-;F^)0Rh|)fUIOVy@A`6Ep%j#O$|@JaKGj4ADfH*t^vvG>_zUDF{)8A2hMH z`MMWb#=Dj2Y2CPL%OvrZQ zE}o^mi@umRNM>{U5)Rs|q#H?G2~7O03O((HVRx2weE_}L#h=ci8e}~J36F1B6lZ%p zn~X%+BOu6Aq4kZjsP#ph(-BorL{U8Pa|JiI4brifR&E_oa?N95t8NfN8X)T zdFo8_;yf3FU37ElX|v{leYQM@&=}SfR=CHnSrj57))X7NTn5u{YPB}EovV!aMKXQS z@Q=neUtX0F5k?OGE9?}mtjke$8d*dk=e9Vz{j{HZtdtjniW2{I$Ly<$5$aUr-s=Ve zB3YG`UhM1MLt{RBtrA9#>8$f$Q+GKWiwe^9f9RQNAqhy)D%`s1KkwZjtrZl)XH8?G zV&vL+xy?DK08;%o(m6F99Slad=I*%Vn44zOk3z==ber#+k^I4CmF~&;{r(?(wFD`U z`tXJMofSIitgbX17~jrWF&6X8HwAL|tgjoWyS}WNP4;F)m{)G+9WM7emgjRLH@|S% ztz(`k`)a}dRcdP%TXzv93553<-kCli`+FlS>o>EQ9y%Xw`sdU#f)0hcm3!gvZ9ig9 ztfb=FN?s$MJUd~)J>eQ2fHQV_Z>`)iTcN}|NvJ#$VcoRp7_KWv80IJ5Mc$4-qQu9u zezf+C;~3Oi@9&3g95TSgB-s{?);jmzr#sA9&%eJfyJ@F2IW}I*eP?euh`8t(<=I7i zq+LYnvt63g(D1$wCM6;9E&KK`3Q3xQch}9EQKa=|l)?*g0+`_1@VM7ky^F&Z80s6H z(zt5J{x^j17X5w$#*|xmi9BI0_DHB47iBn`dk1K;K>7Ty$96ZPPNNhGQvYg2hj zz}Rx0iyp;9;`fyjb&!VgbxlyC1V~$~+bn7X$ng4Zn~I}5mh*9KZMSvBY)pA>?E48p zNC8>HJIE5S|EY@V`0o>;j5o}S@$~VTpZ39ChoT}ew^HBJezi{&prHG8l zN8NGhEKxu?ZPPn6wtL5=%TKkS##GiXTLHkCvMzWP;gCq{3G!} zsZX7%m*XL2)PGgAK;f8CvOjp94)7s^LobrLP=9T2^P;TY{^cexCmUb@Mf7#l-v}(n zGVG1+62GskD?l!K;}@QdktE9gMF7gp`{1Pepo1VZ`tB@5;YO07LA~*>UpNGO|;lXgkHvg@J(=o=_9lz#xs5P{#HC(Hn9PqOiO>FnzeYw?nt zL$5! zQ|}unf$9K5pn^q@IjW@r17Q!2(^ar#dHa*d2^p-0<(b^V%*BAaj1xM+kz$w41p`Q0tnqmmF^Sh*^8i=z@f57+J>Pob`wXN=Y|7K&~;PxYBEW_{heZX}SvPiNUiWkGR3 zqX9X;0?BJvv;clO27 zHD8y4vzY(l<#j;N0W`}IXn4VTCL1&uNaZ>5^-c%KB1zd~YF#QU)2N~ru@;tG?p);* zaWpY$AckfS#hJf3Fb~PF$xS(TWcthI-8P(DFvJB{LuvfF1Z5ATU#ci2m=ejC8WApL zp28R`j;2D|+NxAsZM{}iEkYztqw$pU_zwuWV@Krtx3rdm5#kw!BCnCVaiKWOZ|z(+ zk_4PY-bE{(x!?QGRod^-aitcIs{v)}6k6lh(q#bWNjB142Ebwmyx*{OUx|3g;_Jr*LH~AC|%I~`F8O^4~HGnSpb+WJ@-#{_YcY-e_Ndbc*0_Qb!Up4a+7m%@AgMmW$ zEIFb+Zu6`v9z`pbrL~F{$drmGGJH;g!^M3TK;PAni!`hR@$CR?ssJRoc&7+JkAcp8;XNa*3*Ro%M%zD@=5W`@jY7tu357M z=d7V)Y_f}%^s8Uda9&mSFU;lBfBLj`=vSXHVYiFb*a79_F99!2FRx@Y=+hDk1l}2P z^fr;#Q}ySsakltrRl2Y;uY3NngwEThq(y`J3m2p!yk(YMaO3dKGRAn4nB<|rC{F}d zBCXX9BNWIaJ>J?_hB~j&GOLHC9go_vV@JmkVt97g^j@ezjlB}&fXNnl-lGy0Res@E z;8P2!SF)+CXec4M^PtRxY&&ls5%Ge1#@IydTP$GnDt^^_Ur`rOo45xVFU4=5$WXAv z6*+&!!9g9dD-F~kU-pY?=Su6&=GefK>Mb?EjMs91gH?be?V>bUe0Iio!zsfzSN#y! zD9Dxh$O-w8j`2%p>P+ZO&-4R*Bz_v*tLa~6 zBp`rL?2JT$bH_*z5%gI$$GrIgSYP$1rC^LjUV&=MESiiA-33ZhDdsgX@`q4JCz0n` zjV9^ne`_fy_b-6Zo&~T2Mvs#dI}ErM6YBG?yr(9>SESE*6Jw7n_xL-cQ(Fm)Hmo-t z{T&S_SxdcoGybk17L-B;lY~qtQjxBTDu+~32DTxI_K3qh@|EVOQ?%COs5{hFWQXOv z((Sfy-zo~ED|?!^*3Zlw3RNB(sz&*wwpyU{3L}#*QIyFYvF$=425CV!bc2X=ceix?&;9*9pXbGX zwWn6hnl)>#EA%@|=y#abaCm4zUNKullw1E=Jd4vsab;7XQ@wt zV&oYz=MVmqeoklOo%>pA6cQ;^uqohFO{F;16AwU%sWkP-Sf1RcMAxXnMpNfGD!)Mx z_#QzRUlTB*mff^B-~IaK?;&AF620DkZGFR~Zx>ywC^6!xE)akxNlr4EU;_TY z|E?MGzdN`b{-L>BdC{D@N|}VAq*UAJUuEawc)X!Wcm{vNz4YQy{l5VY4n)2DVhCTw z_emwR={(&7UoOnoS1m%5{_Gb?O=1g>_nXt!wqJjf2P2a;FEQp(YeOwDnAvx`=2t}U z)r+KW6$UbJwtnV&Kdmf8rYp|%|LL!IOm4QZhOc=?X+?CA^VO}~{D}Ym>|qWbKK5F1 z6&blcKCYF4D8K))r$kqRoUWv4~6* z09Hg7`+O5RR^9)`0?!isSUgcN-$A!2WKTh=MsjA$7>kjkYO1AbAhoNmp!iC2{l*D? zz54%q%o4C(+9FLk9hmhnCyG0|D;Nz)+!A0Xg2K$1+esaNB0yK7JvC<4$O95+o<3G= z@6={yv$a-P-5aJ!_$M(AvXl0w_HOB;y5WPW9jvKzBVv9*4vS0Dt`mf<-~MBj>r38# zehy`?i?!d$ajN z!Zb~0vJ^xn8teCgzgC1q3yR@vD|O%f zpkaVpsOT9ZBkNk6^!}M1#SkeC)axLOMNXPELpP_W!`_PEQ_rxl?7dawa$2x8B_Inh z+!#>k@;Spb9~nr>yyVVuo!CaJ2HPpC8k+smegxKaNaWaL!UzF)pCp6 z-%`Sy%cgqjn_!k6Q)`+d=WNrP!fzydC*eT_SR2}p#_%C`@_I5;aCEIU7 zZ>Wvknx|QohnrzVKC)))Hw%{3?uJi>HZ+rksX<~-eocW3E^gm-Of2ArkR7gI1u6b0 z(nK2R3ibpc0dd}NrdTJ$p$vR05*Lm@)iVAE#1sGH@a^c`KXdq(Izf3V zp*0&8B#9}&PS|jdB73)g97&h;<-cIRbotoacQBUl@s^VwVQo8V`8t-f$WnuBd4w6Dvw+Fj0H@ij0--cd32Q(H52f9<-ID)KdlcVFQW6ZqX~By@x}19#ngBs;e4 z%CqLXo$U!gh&?065}ja#ehfSnxWr;-n5(q&ldCH*#4T(bbwG2oA&vdI|LXTnrOV8? zHwxjC@t0llnW}*rhIa=gmn%U)4NP^gHVq_mU32Tr$mJ@Hzx<)iFDc&iCTL~!2+XzL zt*FFAuM737J_JOr#qhILQ}cG9C&!nsU1;Nv`-`Q)z);ktA2@e|(Y&1x7Paj$f}Q~Y z;W!0uD6ndf5|6*LMuQzvNeJaDwR0L#9(YD&sbTxblR~a9(a@s3WG9vH8cH$-pEwMY zR7GbH@inILE9QjozLoXFP)6s&pP`gDkZ+39^og4^|CAunTyDnEa2j;4w|&pfLU;2G z&G?GZ*;E753?BK{zMucYgXAGj&mC3t{FJse{d-G=VlN?%utZ72Y!fV}o9O{W&*2MY zhC%c4hu82>FMbxU0%MP^FWVHxHY#*zB&vq|CnmjwE*SLn<@&B(XsiBnB-!WR#ce`n z2U;F3+kF6n>BOISMogu~_=H!v^tIiM+RUrVEjCN0HsG~S%afU2lV1i$4T;@3bN`lY z82UORc)$wDU;Z-nezFZGFzyg8>hb5jSh@O<31W!^B`SfErT_hE|4%T{=0d+ndOf4@ zm=#6(`X^`G1zl)(PWBfQ!0&&JGd_nn7k%|qarT_T`^*wJ}3)U1A5aL5^{hRZuvIs2Dloc!rj^Bb?>=x?Z*@B zY|}3lMEv86`H)Qg!I{nyqBLL%mGu+C6`()SUm*{Az? z%_IS@L31i;c3-X7LCt(dww^>noEI(b5pQtqHshTS2kgC0yCcU3esGFqh(vk{e8yCt zpM_n$Api^faOe-zNb^kevJOUap6(N+3b74uj7SxljObz1rdQ0MGY%24mq*O~TyS+) z2vLU-3VcaNyf)46#>R*}w!j(c4TijUYhI`UOJ!U@xUAeI)*F?VUP)X9pFFlK)t&BN z$ee|otG?p|#6p&fsxhpYN`IP&6|5t$JDK(Hc8ha!Uzt5oD)qW7xUD8(Y8hSJ^Zv+J9P2GwJ3=sh)`YAJwe;VngK1rt;kV zu=XGS5!Iv~v9S9R*p|Kb{xTxqC2O#)IMU)iMF@MZ5%uUNog%|!I${6y^u7;xuAI4S z%7J=>&7i$8X+q+1jQ!`AG%DIylW3m%zh%i)H*EP|WT#kPwUy#*eSYVHXAcIbuNsr= zz61)xDaE`yC*A9;&^)`I`U%Tf@3DJ<78?vwE|2*6fz=5`hQ2WTIXXW)^4V%6N|#kl zoEw@l#s(Xn$-w&YdbbyEyw27Ul-++S@af_3- z#%sY|2Kc<5U>X-Ed*+rTxY4zL@&l2jrPI+tm5!rF`JFB!-sC*)wu1RCuQaIqYTKsB!+j2B?h4 zXej!F7l((3mHtV=d}kZB;9f?xz$X!#ldAm`{*h&wNK3z0(^g$y#o1PR2EY0=$)d1}^j!A%cGW}(zwy56|Cqk5 z-8a$hn7zNuB#d|<3-)$Kxy3R?+IWwrf=8|V7lksqP+>R{OBO{3wJj)hDC`PP+J_!D zA|@TK3M_p8!R^66P@Pf?h<^%Nz=b6CPYYO2P!3okV?_kPg#`rzlYvXv7`dH;lbE#JVGf64fm1Hkl&x~(4bC&ssIu-8lNv`tH zU(FS$q`m<7O=Gbj_3p92c8U>?C7l|;FcY1|X8@!3_t1N(^cZJZ?!$3Qm!WXllT zR#&=cLVAloiiT81IQ4ij_r!-&QGRumu&sSVP?qrq3euz0FvQugC4QA7b!OxKd0eVh ztDmCtygViB+`7>ADVAU7KuIPjG_JX^BwRM32?1wF9CVTK1=DUjEFyN5SPiAl(8a?# zdBiwz!pfSEW(cyWN^6YjVo*&|VJ8blGL1rdmAY!hXk##8etDszY+i3rMMB9M|4eC( z>Pj1Il(_Yk75kIih1iEc98@sWF*^>!d4~62L>bqTummv@UnHDjEXHWfuti`;9p9&q z&1qL9l)ZC!pOa_1xyHO>0FWyb-dMsNi?D?h=v^V&E0v0u{5Dxu1r6%DFLpZu3*UO^ z*U6dErW~wQY>Bh|ZY}Az3sRcez89wJsopr;gk6STWV*s-=3l}}U$xum{R-Hvf3_LO zHf_cgS2&E6{B(}0$FDi};heU=T|ws7l9CM-n*05#o!Z6ejhZolf)e~DPR10^ye9UI3gyFgt@Q| zv8S%{&c9daPk$xe`(R z5ER;(x0BkmwJgC%Esm4Tk?~VxdUT)1`h)kE|FRX4qGgI1Ujg&8+>V1~nq<hLyzegv3OV)5lE0vC-a(c=H_l)T%tKxHcFPled{^6U0x8elgkW6$FRGCg=67>|MrXh5g7xL0F8jFy z=PFIc7@2}=0i_Rja-4QEHQt8Tpl>-Q7!#92d1+CCo!>y_6}`X97BtU_jRtogpJ)Qz zn#yw9`Js~a1`gvDAT>BHW@I`bvaRmj*et4ngIMO2l{nG{4Xs?2*axD-HzKHfT%?@2e;Zt-Ty?;F|T!J}|yH=Zt`-@`QYT z4?sZMesG`6Cl=4d*yt~WGOA{489hU3;b3O`8gkpBvdUCf3XdJjuXp5{$0Il^KJ znuCB**YW+n1u@Oq%=KC(AI$VBJyjU99y#R?dZ7!OC3NM6p32IYU5FmD#MO@b`CL0O zqKd56(k`3<9EeD?Zp|f?(qF(*v~ChR682?%*>xB-zPIR^UUN?bdCC5~%3l&HAQD^| z54@BVK-T#OLb2fDUQSZX!d;NPsi|pY|1<%-n+}7xToNJRB1Sc|@7A7>u2kA`dPY2K zWwOsm5!sW1gw}K{mNS@+4Y_2Qv#P>VOpnqYJN); zgpEh!^Zk{$E|Wm33z(h^gMzdy`qHQ)nrF$V7gk(t|FO|VXPl&s8Qpgsrkt64A~OD1 zVa4EsL#DP>t+GLeEyrc}D0Z&VEW4>?8KbQ9GRNGfx-F~BOeonr&_gP?*P7ie)Yo2XKme0@8 zL*{5najPYBfxf@KvEWqy@79U7uHLh}xmc0vtC{wvx4Y?YvIxZDS4v5=fz^ulo&iC= z=Z#igyfR(J)Du*p5A=|EPa%BZ9W7x28Cr;u5#Ea_ue>ucxV|`eC2`7%gFSt$Kt6hV z3U2WP8`fVY5*OKXz+S%?!L5gt;94^|F262ADCDbtXu4>KGANE>v6gzK|jOc83Ff)_j{+3jC0SJhc-Ydvus>>|ZrO{p%0 z>Cw~I#T}E$P@bh!INd^Qe#tOp+-TIuP3h3weF1fPx*TlR3CLPJs;_}7D&!~-e8}Mp z675bK2&Km_RBju>#D|>b9#rAIjCXprp5AYpAemNzwTqWHw2191mSje;50+m{Pw$4L z+TQ{*rVyP&c*GGqsN0oFHlCgY>;u;n4RH>wmqAANCgad8vNdHIRe4Z6hl z7(pDAd-r3}3u*jLD9f-$*3?=_#F-Px^VEYC;KTy?C5kjmA0rz^y+7Ym$q7coK|3G; zu#mUG!gQYJR$&2~h))7j%OsN%>71|Va8FnHbXFp5oUgyow{Z!kexCHi-Kchn=XP#0 zbmI-2_0fhM$7z4e?Q?2ZdF{1LsZ3hFCvp4)ni17{n7dt073b$=YgHYbN|z-R@_9%} zqDmU^X4EY@R_t^dRV!$-7)2O)2e1ZSmn!3f^W6sIjZWf|hF{W&oRy#I9_73`DY1jK zizhI?dXiMgn9hM~@cKAly}{+%8Z}H7jprd7ZdfCB315O8-V4)0FcAczwZ5(<3w_V%`Apurw%1bBJD zsvOiDy$k29f+c@7IP=4STGH33_<~QI$5#d0Y5QK)fXjCN{M73uar~3+AH(r#=Tg$C z;{Cjvai)yAg+HQYr&rD<;LFP?inK9HHI|I|2~*wv&$p?Ui^4hyse$5#qjh=Ac)&Xb zx05#i!=gijtW)m5Z(A$kv0jN`Tr#C#(g4rV$%1Dz5&7lzYvosal}x} zKH@>wuk%!`pZ4YJ?R*&;^%JzA2i>RTRqwg!ym(nYjsi?ISXZLoPb2SwAXvJ|=oAsl zpPwzn3ItgcF*WN1=j^Y#x;bRo<#p+FzwA`eMZZ?1P@$orsf2GBsq#L2ZqPdcw{Q2D zMaL*lGZ?2>6l> zYi?Ey*jdv_5BnEA5+v!0Jcopep{Tp!^%Ohq^WeaQZLWf~j-NA^Yi# z@*OAWaUw3U(WW*ujra9UNq}zFono9GX8T~#ImJd7IbtXBZr827)$`~UXUG|@T{Sc# zgRp~TiTFbfYoKX|39HcV4-R&*7cg=5lA-tLy9^GI-DuQowjfd4!66E;2Zk5?D+@z) zrCPn0SVq8hSg?{JD5$?+!Bgq7pfxL*;qYrtrpBm+h&J=IvvIZd+pjEvxmNGFwDkn} zUjB&m00TJG-yjw)WSZYsH#~Pajq2s*8gW@@Xn)$36>kR~+g-E9)nFgA%eQUtM@A+y zIn2?1VL(%X1h|E|8CM4|4Dv&-g=sz9-K5k?ZbTh^yCW?c|4)pHVS%gwzE-vsLVB9%jSPa?|t7mKOVy zYO>f*qqna5nwm+cHm7BKVf;B{2;@5aD*d0Z?&*g~OELH&XAEL+9OK){o<&0djck9; zRhEi#TxT=m`BNRj{kNt^+$2lt`y7ct#NkzHZv`363Tt`ORyTHcIpP35nhex~)$lglF&DTD8rsjb|f#<+($%f;I#q{V`UqB*&=D zR0pf*0!bQM&U9lAmR0Y5iP=*ojkRl9IyfBuFTSBHoP|$g2USLDDpq*S!g_>CO01;Ca8Doxgk(iujlOR_doRc}c z3+a>~d%4ST6=JUaZ__Dy@OSvi?*fXQAz?%W9MJfne0C}7Zr9o4hpLES8EV)Rp7%tH z9iedoCVEyEHa}(fRbZNAYP!j+AxrHOrs1Ce5s_d>AXyi&A7hM=#3PD=YY3F=wejos zZ$?rp-0b;Rqo}W8WQK@+*0MdZuO5Kn?HV)RH<@9!tL$XnJzWC05sLcRRE2*mB{pGz zz(zW}hL7@aCVu4Rn%7#+NpVRpP-;gi#qC)KE3U{7Q&9QqIdoD-kJodRkqQ&&9S`!n z$Aw=A-jNLI)Q7Ap@OlKD?&-OC62Bl_P{NxqrjNB223M|yhrBThJV^r9)SJgh!8C5| zE5T#}TRYZ4D-8YA*glg2wNWF?Bb8hl;Z!u21AiwcZ))7x&1F$|tsqgcaP@3Kj>uVH zsvYuP)dIS#F&{)65kZY6>ZugBSC@7nXIx!v<Y4JE<2Td#A{N@dzI_CiJW z7+HemVT6vflN_|lL$MX__|KQijR+83=#ng1!Pxj47vQW6Jz+pyvhAd=m*>ircO_&7 z-AAXO7!YHhW;{DzzZdFe<-@gl_h+!OdRsSK8~prKmxVBRW%GTsxcoYKI^zfqOcc{( z8`*D(kdJjnS9Lj$um619#VkeKZDxw~{2#Z)o4Kc;CPaB!1P#XcwH?5UMc+8=1+ zkHhPGB5~w4tehkpw#pFPn9~v0jvRghRwAbtK5Q7`iqm{LAYkEd<}Z9Ti}D*yW28M) zX8A&o47lx1BgaRP*!%jT@#GGKdQUq@VKi)OkP}+~~U)R~0{Th{vGIeUu76f->LED#V+LFUJ z(rxnMFgfS*+G?^WT8+tQvR!}Zr4K}agM-roeB492q~+ZM8=`jXYBt>-TCx0VcZG4~ zt+=yJ4V=~s4cYn0ASV$d0)`!xIt)sDT1P(M~^6wpN(V5d+;CWuBma+8Kk4~|x zf95&=;=JyUdYeDV0h0#l8^s?&%^yU_KXbpv#g<_42~NA+$Ue?*IFG<*CS&sM^sm1( zMQ~*(k=C#62VILg60)Pr&db}exek5qcY8duE|-V=yrQLowm5@n%5J__16EggW)*HQ z^@oRrRyCE{`LGx70F$YG9(k<`HMg<-C5;^yS|5xU5f)woF!d(ym_n(WE>*^pm&9x9 zjj=$nKI<9WhL@t*p&X9v5TAzU2F0@UUb@n*Pfg3z&S-|t=;F0LtAw!WNFR*I>d^~{ znt=kSm_U>(@vsa+5Tc)Q{{YPpjIgAjOf z!2QSADnWYm1xMbSMqY5Uhv28Tz`U%a)YBFH`pNil>T}jEksKDNe2<~@v790 zW78vJ$tzd$MUT%8$w4Uv%`|0!Wym_Ky`M7HMYs1F-})iKoi{gne=y(m@Q+0;4_=3g zzHWlR_cya+pHt5Q5N6BMXV(ml=4S{aaU|Q&xi|-d=7RF!MWsYg3GQ7Q z>>X2oZ-8hGs{f%?zc9qE6)mw@KEPx7F&uOg#uye9zC?_M8Pad?>z@W;d@UnXZyiSU zR;cRshJA3a(01~*bCE{a(?NWo)nEEJ9Qt7y{Gz8qJT!>+!(I*cw@uGtWUulv_E6@= ziu=TSswhoCH{RQ+Q>2Q5n}5XBP1v1P->wjHoYwDSJJLPzQ43IyY~zp8(a_Lv&>qsL zg0obt>|v5sgjY=}R8`C9an`6ImFecxo^oJPgMUB##k%c_8mYp?u&@0KSf%@)VzO-2u5wW?S69Aapzv_#$;!n$mc1%zQxp6FAMDgR z#GuJ!CY){)(oFuxAio5%pE|D^=&pLg#k8hO>`u|kevaVQj ztv5yBE>Fkoo3bspycv??*a}yXuvfUF2k=SE8v>H|r05mH-Y>F+u~8UE6>h*t+ammR zO-(O%m9?lCu^?CEN>6`t1hJ2J`~%ZxEggK6R=0y8Cu7P0FU1QCqI_*T$tIQIq@~mw zM~Jqm(mi@&sd4^(vZT z^&=m`rzjlJ#5D8}$(X}?%GRq4pO=yK>1|W*KdDZ^Vih)7hDvwOFiFk+yzxSobbGGn$l?#76#g2BpD?DF`$~-Q-!VoG}XIE*(<-k#I36X@mLv?5%>g@e7@w zv#nN}*%rMlESABiqo6kVKjev-#_0)e*WShtD-{d~oE4#Qx>ga0mJbX%8?G@ZNxRrMl!TDsr)x-M;t<%a&dz*%4 z#1P)0AG8#E)ITtJhqyrcJ;P?sAGb#8(xPbnV0 z%w}I52QshY~^#Ewn=Ry0uoIt*AmCy>%V-j6@L^k4F2}tBF`!<%lI8?_W9h4Nz$;D>} z`dn3MXo`bv+Ba$UOWzOvVWiqh_Zp4a8BCxkFle^>s7t4(l6ax}Y*wIW0I9O)IJ6MXL6pB2(a9J(5d%=wv?>3C%~b4s&)O(X?vy zv@O=f)2orxF{)*5(trFavzZ=U75D!NQI)3&JT<#a64q^{FGgd zzF@w8-s!0p)mf6+$P@9VQMg#S_a}`7hgI%U@}X+jm0j{JVj=L5@*yMaqFr;jC8>L} z<8V1HAJzB5*t>2=BeB?v-!^afNF+DfdAAQsR*q)VHVx@Vkme$h*n?chG*K(RG)eAB zYUAw0u=^w05?B7^fYitB9?dzIy|;)vNdZqhmKi!Zkr|zkl3E-a3i884dT(Xs3!rc) z^B|D|i_>N}On4V9-^-GsU74_c0d-DXND&Ab8j3B}L^g*_AXFi0$~?Y7hE9~U$XtmB%K%O;zB+gXDaRqbbD z7zO3UUdxvm7(5O#5_<`{QC$W}-){92U+te1?iQ@tXLT z9;Fv1G^>Zc12^nl1d!*!nBFnkoznFYLa;l^Nj|>K{O1Gam0(7! zL3-1^h~A=_f!py_r8Fs|)v7L%4SI&zRw{Y)9#I%54D|*LiK29+E<(`y>lhi*#(`X& zwc|e}mapZENS$yzM9zha@MrddFdOyuKQ(T|{}YCUoZJ|Ldy^z@oEeY1PMxK!Bzjm&+o!n*2)lOVe!Oh5X-v%*gJv*-_V?0(pasM-XaOegB^3%n@rG2}h)3P@8QYY(N zm0vern)DnHDAOhoVc<}zy>1Nl*cD&v7QcsuzY6@-E%Z8U^7 zz=LIbg-zl({Iki~(8W5mGe2}7O%8uyEKtXOBY07Lw{cM%#iF)ffYr7jC0G*2`n|7c z4+-?{zg2Sgv5q!2e%$iKq3XCUXi2S?@V=s&fg$V)OCbR(Zg_8DBY zkKf#U`J}2VkS{_M8ZNcBAobp_U1k%Gw-crR^~Rb1pOPLcegT}TU*nxIMKGC^oAI{| zaI2;|se0%z> zYE8lKah;o=d*qbHuBT-_sL=krE%p8y3=F?$9!$~*kYF@kx1Z2}&O8&vKW);uIN3U! zD%m?CNkHG6>gQBV9mi@!8auI@9Bm++=?Ii z%wu3;I@>Z7uvu`+M{Sk^q-i^A0FXpCSGV#N75lrB-mT9ev|Rn+8<)uPEMOa2O!Y-%6Jw2;TqY`$ey6F7g$4 zucd5Bv7b>Xe%d5|z=-d~yNyROjkRU!Ao>`DcfMAf0y zv4FgOfwoPA_;smJn$}9!c9lKO_15JGCR)84ropo4xHBlMFiWZVpAT^$2usT1_<#-r zCJN=^7EQJOZ>A>mM{w$tWtaSgkz=Q7x~XTX4oNCZATk6~>##;==m-sFst_v-Fq4*g zUg|K>x1H7hF`T(!07g#udgnU1Ua8?Bp5tS9Z+D0E}VbGjBAqtbi)=!C6m#zOZSp>y+EKVr_bc~n902> zn_mCH(CwXQJrOl)_wVX$KWUhl+7pL}@-{n@BHkQvz12Xs?+^a*{zR_dZPZ+!(ZACu z%_uuWV%Q*XbK>yHpXcI3)ojxWE^7;m9e7tam`Ce{5|kxOIKo2@$_cEV6|+*eFXh{W zs(rgx8Snw0;|~KR3chV`jgDbNOUwd~{BKTf<=oYFpgO$uqS6 zdI%Ze3G|rE7+CP(wPN_h(GCY-amo#<$a?>0Y3*ulCwDcmNU;i1V^;igf*zZ{ib`YV z824C@9{U?svHck5k`!@;wa(B7I&RRpQya|XuLkar#h}YbGD@kG25aK|v#iTvL5k(e zvTJaQT}$z1c{xHb zo@01MhW9`eHIf(4psJyr=Qtc8XAB~2XfRwn%k&K~wBU5U1WH;sm6)+jC$MT>%xI_K zdG_;P%(*(V*gL^J)%H40wN>3>{}#O_>$JtMHk7NP@6a+_)?G&Y#G>6`i3?=r{(=WT z`r}LuuwQe;82>YF^;g}Et-xijBOABm9`sH^G8-P_@jH$&|C+lGruRJ(-$CR^?|y8s z&LI69=bt%9Dm`buzO#)75UxLBR<{0kAT%YpJ+OouPQqMKd?(YG8M7!ceElGnLpG(a z7<5K+B?5m=iX3z2C6ubh422#|f~^{zn-k9g(jyNMCgj+SmBIPHW9suz)JzLcVZLjh z|DScr^GGsU&mcbOi*fkxg9Jz~vOIhFFN~0KkUzEyS1@5nH87)a;<+~yb7w%*zEbZ_ zshA)GiBs3{0YLTLMC^O#pN+jS9hrLOw0xoMQfESat z%$+sfkbWhb>?~`Y;87S!+Ya_A(H1LDL?_3|j)~GgEmp%BMhC-QbNJ$ovY=z?Qn2Hp zFhB-OKo?>jQ$H8>wmJ9wd7nFz#A9Q%1LyyVK4v*=3eZW4E-v}=*Sx|)C6I8F>G!KQ zyn)6>i8ZEg$Vx`O*%?f86UY+|iplxF;L4h-6qGVj5JXoc??)Yf5LQ^MoW?FQV6^>Ft= z(E~?pz!{@OV>#eW5m^jlvE;3cnAEN5A{aV)V?Vc1+Rp$t55@k90|MU?C-Ui2F>ypd z#hgM6kQ6NcW$(4t2xZ4*y7Y?&dZQZ=Cj2V#Jf!FMZIeH zn&8ssc`ITP>nZH_EfE?)3^BV`o#{m<=JDQ3Er%;bPE?;+!-#m4K|%$lY^%x};(pzz z+wW|Cpc|1Yh+^;hL04;QhEhO(ShtjS7pxO8ye_d~6((+?Rl9;%_@~S*=2D^EpDc(3 z@yB9cn0G56-#B8<(IO+0j{RH=%s*sZsq57Aj`BXO52F*nwGpt9H*ED+EASWY=m1q8 zD*fRgvvBPzifTJ#L8MCDFEyvsQ>YJERN%r30-D{cf}lP1u<`xtWdVYMwS)FhFqR>@ zscPfhp%=o*IsDt4#MZsfV^2UHhGmn7{7?UBSp>fc2CMVM71Uky>!|K?rndX7Cc8r{ zHw}C76p}sM#yT&`6b3)ot%$|4!-66GPQAi?-)6WWOK#!89jd|;)E*~TC(PkFN;p^; zJDOvJX0G3QK`1gxKt{42D|G@axHG}k|4o5VECgeAGaC&}=f|S1@WzJ^x1lcT5-n7M zL2Ldi8Xp<)$^;3>Rk(&i7GfZ` zK-sqjv;1$7)d&yNL3DT`a2wdL;E4SR^<~y+Cg@BW352(Ohat?nL>T)kx>r>0=Z|5cI$F)Ur6bU+)vVw zp^i20phpVftJ19_m-M1QOlHDE!3{dXld)os%c7+I#FY%U(bM2CoNO*aZ3abq$Ar82 z3@8iXa2=Jw!tGKn$i;#eM~RpSxkBTeNCD{~Y-#*FcN*HU$^O2eH!0|iF$!ODD)bigCkV!zKQ$|8R)ZU0&WRm=PT@x=I`3@I|1 zjYzpVFPC*0%xa(G5_mA#BaK;moaFvpL1}OoJoO!E@SWIQ`qNg)^@*QQ z06LT>lWm4JNy!;FrVESZLq6D1J3)1mCW{L$e=D!*UpJ?37Fr6TBGi-Um!vIowto|@ zu^7vK{GR4FEj#_SUBv&oH>J*7C~wkF%Q-<3O3@?!h#P#FW_Zg1^0e9U4fZe9tMo5f zb-l@fVws)R5?0g3y`3{S5e$#V<_`=M@HpNvm|#z>ND`pJ`yq`p(XI_c#uWJwN=Cqb ziG|jHv;v_h>eX@?vB~YYt!}BNN5{Nv2$Tm{`5CT#+y^$Wv1hER$*FsD^Qg}ey;7ab z<*@xV#$e!0&HObje?+1A;b%V@E3Jome}kaohylmTSDHkt@jQ0`O$_Bi`|&A_hJR@`RQ}@Q9uKO;!tAY_1hW^i4>iyq8xqi6qOZNid^nQ)rz1o+js_tr8 zU1?1CF=&W(g`^J`MNBenHW(UqX&$@EgsS$-tx@r8oMJ*y&y+o^O^eXm2gxpKZi&wT zR)G%|G=;Jo2)FXCZ>`IF&Jt77>#I}h|LmZhA^bnajn?jsnF|7#lHqsjHUK**xw3Ta z4iDJVsN@G%4c^^xRCM{1L)r=X$08 z;}p&oW3-X{GkgnoY){j!(yDIA=jo|*O)Ev+F9?)wo@szGQiV&}!?RD7Urr)`=9N%@S_{+#L{`Wr=nl(^S<3rv9&-lyx zf8rGWV~+mn_YewV$7ir%sgV8lA4xO6IAuYUIpvqAEc7D=?|l&pdXEC^z;6kh3#kc1w05x@k zd+mYG8cOmMj5i1p0K8&FZ1w@YYNCV!An^?YP4QBNw&1*f6a&g)}g}S$y(5j zSkgl27`OmAX5R%9z+%w(_8qDTo<2_hv}RB6{>s_S{vsZ*ecWv=HWwFN_hQ82li!K} zK}n7QL{K)Ifmh;)&F$|28&IxASDzYUBE+-nyc-!Z0vN-Y+J$s61F!Vd?!}Cc#$d4m zOz5aM614-bYq$}cUby`;k=4z&Hpz`Jq_S>)v`=@{u-=I~hRO3EnbR0FqqxcFp*R?W z8XYg1b_zSi9daN7P?2$L;*Qz{$Prx1BcFMri^R>Zi`j_Q@9uDt=3xY?$)~XFMzmR= z_z?VNi#JdEQ^z!=-4XmJrL=SKQyoqce~Ld%Pyi6CUU6I*DI$5Lw!hLT5D!LFZAsM( zDA~uUrbP05mjs5r@C0U-Tw+S8uXvKn;f7llm~mr7o;0C zJO$$~8eO#Ba!8&dZGVb9n28FIhR%uG@T$m=11?|iWY=Npi&pQnlqx)rOF>l|K5Oy{ zfmo0oHN-}EN5%T;W@m0_%-9HOdRhyEF7bgex-0&+?$elGz8B@lwuYb9I%+f1n%d7k z!8`cmI)n@IP8NLap=K{t|Z(;{4e0`8W0PbJbCWqN*T!&7ZK@XJ&hNg@OY+3RODi5RS1zPQLoMD6o(udA1#Zk9>Omv#JEH>A zPxk7xK71oJLS)Lge^lzN?z_NjK{Q%NbsxcKeJ<~Vc;z&INMdy=%1k1uk25qH^mV+Z9JxQ!whuHSoq2wyw(;c5R zwgZ1Rc%beE9PnmUQh&yV6v7`l90$aQ)9c0&TgSG~-M#3RuAFPH-|c%EKwHvU6PoWK zNV-6o(@>wb`r;U}>$CQm+KnwJ7|Ls+TK3NO;u&dL|Bxc^`|hQxzV<{yS*GMPrtIl2 z9$+HhTkz(4)pZU=Y}V*^;!~5UZJr~aIh25k3?^F5Hg!bYAO^OD$P~Wrh)g|s255X~ z6`a0%QKvmAp7qs25$L^pX)T>jI)5?&T>OaxnimC<=PkIi$b`uvHI?`(NpM-Web(NR zNgFxJpp!)JkO+|tSv`wGO?l*jWu6x4kAy7W0KFO^1MDgcMYlA9tAclY{}f#y>c<|Wd0SAS0I@%Z0xgvCS2zbbM)HX(>(`y3xE>mj+xIcw$qN1|uN^$S zb_kP&L8mTS#;KOXZvQ?b>G470Dn`LMZUWjS)ZOppcnZi@tvENYX?9kr;Fu*%_IIy} z3s?s;j0DV}*@$8|inxD}5ra1cOLaWzDpfRj%p!&D`K6NVu;65lCjO$%37EtW>Rm6 zEXiw`3T25%lquxZXplsF_dEa1A9FwFH|Lz|T-Q10eo$-BZ6Y4#8!_6pU2aR!#5V4X zN7I}2&U->Jv>y8X;o5+;$RI6-8MS1U9sR?Tne)wKBFE<(RFv;_0p`mq)ukHl z6R*EaoA-}ra@AqJ8{^PGYPqOo{2tYRDJJo|0OW0|wCX^oQ>TAvLy^=HWK{t=$@oy! zxvub?`Z1tP?Kg$Ckevd3*fVvquki?mQnGA*$)?KXprDU-{wrIO!A&k34#l-(`F)%J zjpL#i4UCQ5@!b~vo+M4_YOuDXBGzFo-|dWVeGu2&CyM7uCKi*-kfpWrdrt*q+WRg2 zQ(6>OnmPSTW^_X~(MS-9=dG{PdfKuaDXBbp=;WO%$@j_j5lptafj`UQ9cF14Hq);$ znHf|CtX}A@Y-N9rpvgm8PFjxo`M$SXb=G z5ZA&<__8-`H7R8SdcHOC{O;@dLXdgyu}7{;Ua3s&IfOkTmyCQ$hu#?ssDQo6siO6h z5YLW3M^%M|N01%6K_T4B;2jU8pc>)SGSHa|u4e(T6s7)pJ> z<6a@g&2I#HGkDU{8*6|LzL?X3Q-OhTI4aE-Lpguo;=>$r(1@0(n-%VKX>DdMbl#2> zerdqxvoW#Rt%8sZ$>-ns!z)v3YDR{;d@*r$xXq9Do(!|-k_M!DHJJ3O5CV~~n}b-t zNV;ZomYj&u-oBWNU47WCTX%b&RkwcEjly=NRS$o=k+pb1Ci&9}w5dZ-ghRy!#>L8V z$W`;HLa&yZTNv8z2%vqMZ7}`5>@0#zgGx*x_T&^}K07bT%KpBX8(|rV@ zv?Tt4VW(lc?a>UqulL=?fnULaKP&XInx(XeVEFpEI8$M90h>-xQTXCT3_bnAGEwCr zay&7HRsU{N39(w=-I5|Szj#8fWlX2|L=O32>;%I{A*(`z0jy(d&{O*l}icX&8A{X zPcPo>Gv!I;y<9--C$fC#-0z}e-7tS}s7y8%E$}Zg;7?(+5!EyFwyHcezD@1{_;y`HX(S>KL)iHRPX~jDrtiV);=Bn2|xBs{iMcpdC+uM z{9P34{b8$59i1e}UZ+EM-g4JB|B6@FIvfe}F=UT_9r!n;3!|}-0*fOCpD_odDs=hz z*ATt)6{nZ$-+Yg;Aw4masF6F=WuA4~K*v)HUP2EQ7bc7axDP1YwpY(>%20I&i&JG` z!T(Ft-e?H5D& ziFoc4Vs{oJZ)ElUPc%Kx?xxMzh$*Oi^84iIqcMc=JQ(l}BNC!WB=;Q<>7J zIhxZHtS?Y!WIlWym{@Yb^~v0<8lw~2YlEw9)L=G|yV05`zm=osAc%v#P!N&iRVj!k zNShYCsgtnmmuC!Dj}=wWkPUQ89Pr;WU<_>X?u<{2#b%xU#n#79_gXOSXuWM6Nv&wx zBJ2YSqwaV&y2dyIecWQXUDE2z(4z93)XwV}JbPC;JAKa5>tltMA{C1p3oEEVrc3F! zsKo1I+s5(^yjK`LF!ng=so>QaueP+V6@?iu1|@-iad7#eo(cz9GE%ucyK+pOImVpc zFOEgK4iZB*?2MEe^?hYty;Ugp(ZJUS6ld70ad@&Et06|skj5mf$4!(Nq9#jWXfi42OGAHDVmq+ zEI7r9O0(}tH5C_{Whq3Q4EE)NXP}D8$LEb8zMyV9=oI81hiXq&r_U=Aqxnf7SGOX} z+qa#tH%`rt=u;^5Ferb$`lk}AaeUJmS2CkeL^gill>6$-IhcR7dclU9VlXWL1uSer z^$u@3%l$e51p3V<3+=*hTCeR}zPS4yxoX)wUKJhwN#Iw0&I@o$8?Vo4pB4TRiZsqu z*$6(zgzfb=toMjOJRX5y7;8Gv4z5@eLXpW;CkKsNBx!-Cssv%|q=Zm=m3n9S?~xYK zF``(@`L)e1(efSJ&z_vy z{2o=Ci=9zqTs<;F{n!HY(U2+)-zHDC$ZHl-np^t! z%+<*w&xX4|b+F@)vzK=^vH_iz7-u)sbyhz&%A_~h!OsE_@wSV{B#7}g9`X03HA211}kb;i6ZJGv)$ zkAByNuCI*rb0drXb%O#&Mxv6jD=t{sWIq9d`3=SyJmSC&@K<_{3^@U|6^T`Z8zXm4 z9N)G`K&@SvT;&Nb+CfW5aacdYE8Sy3-U-(wN2x!?lJ1{}n)h-lcXXPJEE_mtlJ`WF z80B-v(H{}ken|ck^`pelzO7Omm&9;L)9YC2KsrtGrRX7Dx8_#LnCk+gncR$vg92?2 z!X6BN(*Z*0+Sx;jmWR378#TQ3O9G2p{Y$|bpqpCzqaub;hy3(m%%t>i9HRoQCeF>4 z9x~4*$36&<&>VW_?6q?$K>g=!;mhuSc6Bv}KG!ZD`Hj>9d8_K-hvy%Gnq`kFvwZNu z!c#6#B|EkmCRZss2|)s!qqwn^r4tiOktsQ-wZQs}@V2LbKuNXoj=*q#mY2AaG~J4E z41R3J8A4u~rSzallCe6hO~9qRo7CH_fzn(t=Otky!96~f1pS$SW)L$7lZ-6IZUsP= zdBHAQO3qtk$_YuE5#U0r*xu87Rkj&l<0=PiW!7<`#|UN|ouirEB>RYSbsJ>x${1=xr5JnPj;~9yrShWKPNBvL_}v`ujcd1J!WP#Ou0Z57BhRaMKLw ziGAHa`q4ih6>v=;w+d7iSq|O(BOM-a;JjSwy0u5ix5XSZ1+~2MeFU=9QZ2FYo^aDF z6|Dnn{rFG20nJ;7ii9nC-0CuMq-9?ewRSMU;EpxF$euYcFlGzr`?X-lS_A^quCGDx zfJSb?4MGWt<)%oi?f^E}u`uOv|2w(xIE`zDJL_91_&!bK`F22UDvQMdz!kh@iAn
  • If available, make sure to update the text to include the Zenodo DOI of version of the pipeline used.
  • " + if (meta.manifest_map.doi) { + // Using a loop to handle multiple DOIs + // Removing `https://doi.org/` to handle pipelines using DOIs vs DOI resolvers + // Removing ` ` since the manifest.doi is a string and not a proper list + def temp_doi_ref = "" + String[] manifest_doi = meta.manifest_map.doi.tokenize(",") + for (String doi_ref: manifest_doi) temp_doi_ref += "(doi: ${doi_ref.replace("https://doi.org/", "").replace(" ", "")}), " + meta["doi_text"] = temp_doi_ref.substring(0, temp_doi_ref.length() - 2) + } else meta["doi_text"] = "" + meta["nodoi_text"] = meta.manifest_map.doi ? "" : "
  • If available, make sure to update the text to include the Zenodo DOI of version of the pipeline used.
  • " // Tool references meta["tool_citations"] = "" diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf index a8b55d6..14558c3 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf @@ -65,9 +65,15 @@ def checkProfileProvided(nextflow_cli_args) { // Citation string for pipeline // def workflowCitation() { + def temp_doi_ref = "" + String[] manifest_doi = workflow.manifest.doi.tokenize(",") + // Using a loop to handle multiple DOIs + // Removing `https://doi.org/` to handle pipelines using DOIs vs DOI resolvers + // Removing ` ` since the manifest.doi is a string and not a proper list + for (String doi_ref: manifest_doi) temp_doi_ref += " https://doi.org/${doi_ref.replace('https://doi.org/', '').replace(' ', '')}\n" return "If you use ${workflow.manifest.name} for your analysis please cite:\n\n" + "* The pipeline\n" + - " ${workflow.manifest.doi}\n\n" + + temp_doi_ref + "\n" + "* The nf-core framework\n" + " https://doi.org/10.1038/s41587-020-0439-x\n\n" + "* Software dependencies\n" + diff --git a/workflows/demo.nf b/workflows/demo.nf index 4881298..1ca3e93 100644 --- a/workflows/demo.nf +++ b/workflows/demo.nf @@ -40,22 +40,44 @@ workflow DEMO { // Collate and save software versions // softwareVersionsToYAML(ch_versions) - .collectFile(storeDir: "${params.outdir}/pipeline_info", name: 'nf_core_pipeline_software_mqc_versions.yml', sort: true, newLine: true) - .set { ch_collated_versions } + .collectFile( + storeDir: "${params.outdir}/pipeline_info", + name: 'nf_core_pipeline_software_mqc_versions.yml', + sort: true, + newLine: true + ).set { ch_collated_versions } // // MODULE: MultiQC // - ch_multiqc_config = Channel.fromPath("$projectDir/assets/multiqc_config.yml", checkIfExists: true) - ch_multiqc_custom_config = params.multiqc_config ? Channel.fromPath(params.multiqc_config, checkIfExists: true) : Channel.empty() - ch_multiqc_logo = params.multiqc_logo ? Channel.fromPath(params.multiqc_logo, checkIfExists: true) : Channel.empty() - summary_params = paramsSummaryMap(workflow, parameters_schema: "nextflow_schema.json") - ch_workflow_summary = Channel.value(paramsSummaryMultiqc(summary_params)) - ch_multiqc_custom_methods_description = params.multiqc_methods_description ? file(params.multiqc_methods_description, checkIfExists: true) : file("$projectDir/assets/methods_description_template.yml", checkIfExists: true) - ch_methods_description = Channel.value(methodsDescriptionText(ch_multiqc_custom_methods_description)) - ch_multiqc_files = ch_multiqc_files.mix(ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) - ch_multiqc_files = ch_multiqc_files.mix(ch_collated_versions) - ch_multiqc_files = ch_multiqc_files.mix(ch_methods_description.collectFile(name: 'methods_description_mqc.yaml', sort: false)) + ch_multiqc_config = Channel.fromPath( + "$projectDir/assets/multiqc_config.yml", checkIfExists: true) + ch_multiqc_custom_config = params.multiqc_config ? + Channel.fromPath(params.multiqc_config, checkIfExists: true) : + Channel.empty() + ch_multiqc_logo = params.multiqc_logo ? + Channel.fromPath(params.multiqc_logo, checkIfExists: true) : + Channel.empty() + + summary_params = paramsSummaryMap( + workflow, parameters_schema: "nextflow_schema.json") + ch_workflow_summary = Channel.value(paramsSummaryMultiqc(summary_params)) + + ch_multiqc_custom_methods_description = params.multiqc_methods_description ? + file(params.multiqc_methods_description, checkIfExists: true) : + file("$projectDir/assets/methods_description_template.yml", checkIfExists: true) + ch_methods_description = Channel.value( + methodsDescriptionText(ch_multiqc_custom_methods_description)) + + ch_multiqc_files = ch_multiqc_files.mix( + ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) + ch_multiqc_files = ch_multiqc_files.mix(ch_collated_versions) + ch_multiqc_files = ch_multiqc_files.mix( + ch_methods_description.collectFile( + name: 'methods_description_mqc.yaml', + sort: true + ) + ) MULTIQC ( ch_multiqc_files.collect(), From a04979805f7504044be7769f309a11eee3d2b321 Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Wed, 8 May 2024 13:58:07 +0000 Subject: [PATCH 12/25] Template update for nf-core/tools version 2.14.0 --- .nf-core.yml | 2 +- assets/nf-core-demo_logo_light.png | Bin 70504 -> 70502 bytes docs/images/nf-core-demo_logo_dark.png | Bin 24802 -> 24773 bytes docs/images/nf-core-demo_logo_light.png | Bin 21507 -> 21507 bytes 4 files changed, 1 insertion(+), 1 deletion(-) diff --git a/.nf-core.yml b/.nf-core.yml index ef7b7ab..d6daa40 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -1,2 +1,2 @@ repository_type: pipeline -nf_core_version: "2.13.2.dev0" +nf_core_version: "2.14.0" diff --git a/assets/nf-core-demo_logo_light.png b/assets/nf-core-demo_logo_light.png index 2543e503f6ce36751c848248e716828ce00829f5..0ef9fa5dd6448acf82a09f81e9170b43f09e8d46 100644 GIT binary patch delta 27344 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 xSfijA6{pNM@e*hZiRE_`u delta 27283 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 delta 24181 zcmX`SWmr_-`#n5_faD+`-5}BoNJ+zh($X-1q(ey~4TomvknWI{WvF^3k>gz`P*^O3Hfd()sLS?i)vkq51vRFQ4OFhirl9acy zeI(?f9;9^BfJ(El2c?0G$2}86wZ^sDsyDR>r@eA^SC5axStIte^*_j9_F=x@0~IhO znvvL~j)_g{dk1hnq@jl=gmUJ{nK+KmD(f~2C8GDXXshiY3DgD{aAFW|5 z`v3I_0<~Rzs!pq3e2_q_e^DHJLJXueUxGk8OC%A}AOsE+sofKLf+#up`*<8?NO%11 zpK+htYtVl^x~=t9i*C~p_^Q|;?GVI)l-la06d>V5PSC=O%>q~tGBs$Q{-Ucj>3==- zV!96%$PX2NJln-D^WdjQpoF5@!0LgSGrdsJgl<hw8dEfsWs`W7z*6<&zhg;evMMFa$(HpdJ|vbgii=$m-BBJz)SIGfQq_Bk9% zHOTfI9KZpXWTS~0L+HI@Q||_1r2buWdN4dVymI#fn+?Aud@|w9JE=Pjsp?mMXRmVSD!x z0bF6g%?iQ#qjt#_mAWPV{~GT;*AyAB1?r_h-@wOC?8-zY-7MYDP+58rf5q#4ZTYf= zZ*JeP*8E|{z27L}xndA2DuOBujP<!Ejqz@D4RR&s;sQ^pVq@-#2ukdw#&zMvMBFUUq=lF7f9Z{{S@e!r|FO`}9R?ReC` z`!4vuwlI}(7<<2MWZxocFKGxQf_CA5u%`l#V`TMLLuc~wt9Zx7YZFH%{})ySBn}(v zIcCou4YN7E7~oeW^qj$Ha(TJcC8_5RZYqt>*G2q;eta+*zJI|qB*uy#>%Yd+$e*1F z*&oboCUO>$%ARD(ZB!_*H&oTub^^EvkC;(Y(3jtPY6Guw6!GRn1aDKCE-$r}{UA4y z7Mbs6R9Nwo=IxjMoqYFk>?um^R~vX40+u)3@jtEu>hr?sz2%iK4BTCtjXD5Q**_dA zi=;II>rOWn8Q@x#Z=j8EtET@IPryVP3JNc}*%>f2n=FUzRH&b#p#`?-Qzq-`pJ z@IQ3g!(FWh8Wx}bykV<5vS<^wv}NUD65u~16#c!f=D!to|C|P=KZkV77c}i@zw`&; z{Yu142$LF-J!bSAD?7W*tNUV?+ai{Tq~ezOr(^KsmE`r(2=;3q_tiJgzCz58GkG(T zJ_M(J76iUaf-2c`QQJeYPQ|QW#7u=3kd__{0x|LZ8-X_D-zUW6v^#cKPf34rB9Gz2 z`!TI(_MB+~ZSoa}?1eVCS<~O$?`|tscwFq4#^qA|3+UeulI4#PNM2;wZj8@3qcD=_ z7X|_ijwNkKAfWMu%0iWpp-3Gal-&Q8QS#fyjVpi^8OQIpNAF$5(lQC2v>v343$|z;aKYQ%-o3Lk*UOp}_(Lh+bac{XEH4Hu0GK)R%L; zz|5_0A^pMllCpe3@6bmpZ8rL+1bf1<4~K&Q%pUOFqulbVJ7>7Holb&_abnc2iCWbNwSaB3r) zTNB02Cxbs+SRJ=)+?-WuWTeJxzF}~w#N&DHA&@tiM-fq}D0CXO!C}G@xnL-`wj4{mp3nACFq4U6Of>xj+1jemDIlV)TGT_G5TwT@#YwMUg=GW6 z&xq3~GiJyU)}wbS*|*uQaSZ%Y`Ow@z{o@-utMk!3F!6}u-s0}Dfphz|v}A)X^pe>0 zJicG&tkZQoLOuj|o$@wlwvqz#r@#lQAQZ6R<})cxdO-)jOP-?Ywz}#O_ZoQ_I#+ic zHQ`q#bZ*SwAXVb;hPMaB!fAQ!H%0m`N3!P-hxm&Qy-kbvm1AzZA>%C#GfVfrCf@Vh zRxvc*59>d1g(9URu#!hz<9cV{U|hytiqFM+XXz)Ao6kQ1RgB=7WGEiiGMzq}d*{Q! z{os_aVnuq^r_$Y^zyuWD)QKgn~ zba6vu0kDxYruczy!Z!CwZW6O*T2$+ktf?=5LJ-;yV z#p>!iOUb(Z&Z6DF#|FcJX?hZ;kbwt z$+w9%rI&%Sas68h)e@ssZdDAL4aGmh2Ln1TV-u_a=|?=09E>5q@!`5OTcM@%$R)}m zg0%0)(d>^OlX~o)GJB;fojXwMO}(-(Mg-`(iYlAT?7dr3efE{7S5l3w!d1^vuUDOn zIspY#<6Xn;3Qbc$ftIwqht>Td&XMMAO0=dm_u}nN)Qdo;SFlPCkvTpLm935^cINml zyUH_o$KION4_f6Ftyq;)bZR-O7LLc#ZO74lgoTEj9-bK--1ZX|R*HzzpmYL|F#rm{ z-iWXs^>yWUrR-v1$j>@d-i7^f(ScAoHRmGPmQ5`zqAXb*Q;X)zq6+??9e(2EG)e}5is1ylJB23SfHta}z9;j-`&Iux&qS7y2x~d)i9+;ULVTt6 z__W-CUTp8wF}4E5(V1$T?NUUvX3TDIIx#c$ah)o(ArPVKlPeL8kg`?20`2fHdDm&} z&P3nberqz93`u$&AbLdIwjSCo06GVorWxoBvy!*D;)^(~9Ml6JMTsSbM~Q6h0D_G; z=*%3)=4hKE&Y~G~N8a>3MO&tx(t-A|XCjk+Q6jh9Q6I&oaSHL|>i}J^T!}EmI^QI1 ze_E^Uqu<9-%l*@0@By+F{~wzEgBQ_{&1> z(fAQWbI$OYNs|^as9^WuDJZa85}*Hsg8fGHO^a8+o&7}4O;L<|U+3)w`2o4McudbF zt}#TwDP-#A)i~sLLIZmE2{)({IQr5Ur$`+7Eupx%A_bsZPq%d8qM)GAk7pTrD(y=q z&5LzbwWKd`m$JNTyo0c2#p%R8!K-v0*q{CLDDJv5+EZ0~XtvYq12kyb5)XKCb=_K9 zG(9BrIV7Thq2!FunqbSrd%@_ra zZ9mp!`v8QF?b?Ix<7A+qt3bq2+-Oq>n1?rYgou>vxT~wnK{2r{Ct#j`;Cn-@ArbY$ z&@B{-{P63o{ly*lr^Qk!bvE9*O5(41`MxE!QE^evE1$|SI>rO>r<46XVpktBS*&6- zJ-IVGe`Ss64CTz*I%_C!*Jjwbx&Qt3-lOM>Hy|@vsZFkte*Yw{AHGU7hY1;b{OQ}%5E)p0Sr%etC+6M z1eJ}vwns;fZX8w4vd9`K-w3mS)Dq0l+8&H8lQ{1PBV&Ht9M|-FXS0c=s)Klo@CeN9Si zZ#&Wr>l*F9Js|IAd4u12lvj(xa~sh(#MwXmZNO{3qom*<%xCbo-`PVRT=lor&qraa zo6jZc$8l(B1z-1=L3={0v8+WkYvBh!2Xg;5*;D;y7f!I0pLtfQn6ZNA&3QD~p(OsL zxS@1OH6;5B$|KbR2uO z8k~Mxa77wA9ZwmI z8k@0ixkYi_DP1H$$Q9(-M0eM$D(#mKs<=kp7euU)1p&ypV)gu#cdWqK8&rnJ<6YZ%{ zNdg3SE(Id>sUj|G#`V_FN~L8>Y{J3&u8>og_ALPd;wgQH%11Kl^VxZ0v0q?CPl5IzF?UCH9 zSd-zmX|vSix#uPTRpN_EjFXpVAJ+BH7J&L=tlwHn?90~8pAsMvwM7$0jU!!#^zRew z5m^V;d}Y{q-J7b@HxsG9~~Lu>qey#uK#(loXwUj_U|S90UELb_^1)^wHr4d(8MUHy9Y8P}n`S9*)O#gZ4D@3VkOYnnnnH8a3l zWW=X|5Xm&y2I>RfWUe}Qv5Pr6$*_6TVrHfSln zB9ZiGlDE9@aS6q|!1NNaRR8y!7Zxw?VNCoMd-teps19d5PA^4!y9jEZ5H6*)2W!p? zoORIRSt4wa-T|6!xN)U5FVUhamH>&&dTZPj^}LX;=(fy*4%^^$CAx`l)g1B|QA`Mr zIk~@D#2UXC$;SOr$@Dx3>BVKvfkMb5zc6R$(Y?|7MPIlX}^rutf)bETAa6d-PtxOe?2V9 z`pN^d#RNHS5;ekFmV#o7oEpiN*~~Nt_|j&*smh@boafzic7Pm?I@exXckMqQ4vx!FLNR^oj5pr zZbxpd#H#6A>oXt#GHpKFl_e?ltg4h%Z&d)F$rHPB438uEuhnbHfiMDUxWb8{!c3G5 zF8`Zggk-;D=zyp_s$oo}Mqg*jvpbF$?F$yO|2fr#pDf`wyve#g4GceO~-b zBf+%9YyFfK89__YoIz>D1h0uKo0lYB{V9||o5uAeA0L2YiJb*wrDCHP=T;fkh_JIw z6RV@Md}W11BSG>1Xtb1U_r5+ze-jq{ym*eh*p&T1frDaA{|k8hqyq6hGf%?23)ki= zi6k5o9it$E{7TGUrj7s>(b)n88^97pW*cOFJkj`v)pHed*D|}B{smyTo*b^w=Ja@(bW0h)#o|4ZE6Ed3SsHD z!J4Ty_Qmd7s#ONT!NEQ@MN;^&p(Qkik-E>hFp2C(-HLv%|52V%!CAAS=j-R;DoEC_ zBd|Z1BU)YhAp{Sb%fQ+HJi4;(60hogP&+Uj>2&lqM_CCY!I3>#X_+>B=7Oi)Z6*VF zpZ>2Rp-GYk!!+o%&kiXvYHk+D5pzBHny%$7P_xwig9}WYMT9o`=zG$g+Sp(|7%5P7 za~P?``{>1a``djLf>l9F6*@|F71n>Dd7fv2Rcgs)b%X>RvAgdU(E6tMEwBtlElnoR zy;Y!!82Vwmd`RWwKzbiM1-Gr(l>-4ui!FUQ7ScF@F{;+fk88H`M)-6}WqQ}P7f?`B zLqk0}zA8)j!)@cS;o22Mb(;L;)G^&+*Wn>GOkm8XDFd7X^27l3Q zk3;6V&I+L2c^sL#rU^T)MZi$(=$BV=_<`v?JLm&QX*BDj zff5`4Lb$pA=^HExwxH`Ritck)_*}WA?S)!niN+NtTb=j7Eu9i)O{-EDmioIogvv%`NQJpfWDY?r+be zccx|C!zmt{0FmE5q20`$S*8yj@#LM0=IM9e*a)2QYg5vP!tB~uHVdh4CUjOR z$OXGkN3QR;;QXU}V33HtBIkz={ZC$XBc_mbEzd7egt>z zE#EFXp`a#X@n?A_phDcS_GfP0W1TW8{I=_!vP<=w z`((+^k|OV{q;J+&$(ACPC`xD=vCawx^V^zzr1FFF8z9%?z8Q5xKs)Qk`P}|G_Yvm5 z^v`&mofj_2=jj2fsMNa%`7%6dY_ag3@b-r>^tPCJ;amu$H$Omg_*_Z(U9Lm9 z%jePNK}AVnS4Zm~%QWBO4c2`a;W+d0b{AnD#@MB_SMqvhW{)q6qaF%=ufvgiOt3kjE13v}eIn4{fbu z#NdwYrx&1&idaXp^luSx6(Sy1Rq0yM%u^$dH9k@SfvOMN=*xDlONTea8GA7Nenm9?uuI!#w&V3Pnre#(>jKWRN?$FsptG`3buKxQ`9-Mfx5F|M;ntQcI zU)|-%lj^ll9J{fCDkfg2S0JXS82_4lg}IW9Pal&=E7} zB3I&|&X24q4l`OD*`@aUY{2@h<%UrUi(=zCx5%@lrIDa3a%=lbimLPOcMt^%i(B-v zRCG_S4YQ6NHUjK3Qd#?9eJHZLzMKSXjS;XmO zdTYDM+`4_wx3@JgB($?~-K#*aHZ^U%I7PN0vW|D>iUem@t) zoY^lib3XLhgo5mFZkQr%W98G*lIybIQDGw%qd#Z^TYTl8DCmom(Srp$L)gUC}q zYh1pqu(L<85ZtWZ7zj1QYHdCDjQ)-p6`?j>pIy#9mE98x*lquVHmr$WeFFQjOk9qh zT7pdMS;MlAb8mw@tYR$tiP@j@I{D3Wt4Jt-C*_p1rbBBZa1eL*?!BlhaMa8=Xy9}( zaatAaEb480_2|h}MM|Yj9!axHkx6r+$Js@sllxQBb9ZYHpffi9b5Jgon}q%b%TC&! zy->qYqC;aznq7w)T17T!9nV-ZiHMNLhv;#dLB$QqLR?}3%VMrQjh4@k5s4a<+F~nd zHLFyN^G@!A?b3pud(TH#w%Wz`C)~DS*(E2f z>i#>m!>5csNFn$2&1YvY8?58>`wxc* z3sh={;KGbd__}^9MZkP)e1APe0;|Frv&9~|P2k>k|4m&#;$=C2@^hvYN)V zahE_&Jb1bD7`E#tByZVb@6v4R!0ZD!Oc|NQdk&TTHLLdmc6>Y(L-BG&1S0(=FvA3c zkANtorf!jtstCu_za>M#M(|@I3hH3SUd0qWDQQ)^7jrooA4phht(zlQ_(wu)y3eiI zvL>$&yfpsvOj}|8!C1KEsT~lf5FCT0QYi)rr^H<1oM5o1BxoC<>mmZSmq&*&2)_Uz^dm z7)ACj;&1RWXNsL>Q7|{ueyF^Vk?%d7Um*^7?ftK(0MvyO&HLPMRgEQbW*=THUrCnc zxwwKM`K?&hEXFX=lt9LEu0eCdRkjd@r-RHfl5upkv3X)mVEu%DLc(@P=Uzh{Xc#Po z@qc(#Fo{qItX$()sIVD7l!s2cj?uB8;|LSm17Z3l;6JMo+T%>Q_)K@TCus-@+~yQ+ zGdM+|PYmQNDz@Tt+IL2;MlB^q{_489H4}ZV-s{w)2*|t_{(z5BUJPa9vZf8j@g0U@ zqHi^=vkED3K2_#N=sPILqR$#g+NW^r_e<3kco{bKuKbc&ou??FBCe2XL2ZOAfV)!X zOIeDz{n=yk zZ`!OX&^|_aIaO2qMlx3@zuBPZghDf;Vl9|7EPd;xhHaamu*u^1enG_=s9hMowfeDf zgneuH+u2lJTNbsLU&9}#x%C~J3vQ%xm8(ci1sf`n{)`j)&kKw$hLSW-#&s~9OmYsF zBO+W_^}moJzEdrH+3T(XnDZl!9PP*Ye0OJK($a$_Tv($=iJ>#q(PM%b&e%TkYmv85 zZ+{E>u>z>$xOTq^RpYDRxs&nA#-fvp9zsbOdHPEG7V-el&qfs|ier?5>6##$`&)Yo zCsX{KY2|*Uev72QJNxV1l$45_Xc_A#bGR$k&2?16bFBof4+tyZr_q-8TXu#J!6HqY zh5ft2STF44?_n~y()!q@3)@aE5zaar6iJ$@axEqNjC2nRxPsVomWgnW z80A!5>+T@glv(qgvbEMu9p-Ne2vX8MJA`);mR3~KCf%?=LKNfdvTHmydVQ(QrBAHpPCW zPKGT}(f(GwEs<_WsrF$mG@vI1rf(RT5%v~TX(ws<%i(Y+oh>>{_gR8$i&tZb5f71f zD)L9Q{1%*ctXy;M$3k_C-tj)SmBE}z??cVA^P&!rd;lsiDbGBm9Q6{6a2`p10H^iA#?5>wQkv(vp*^mti$1x`N;B0~2*X zv7IUKDbxGzDKXiUd}$i*yMFxE@}Tm{yb~Xb1NBIeDv(IOv3m>dz-6NumOP!h1@oI2 z7X1SDi_nxeS--@W`}GyLT*i0o724}OpBSf@mg)X9JNf{()vAyVrBpon67>4QUVXo=lR~cCVWjv~6PGb$%wT7&ED2`pW-1yF*-nwf7;hFfu(Ki(yDZnuF#Ak+y006{)>up? zRc+K*4zoY1r! zK@|C&>ytbb(H-9P@8`=3|{RMUBN{Q}AH z1S(qN?}3hp<(O5IfSyRVvK>OtmkYx`G>?`Oh(xYW-{5}H-78q=qhXw#B|9mRDP=d47E-!uCA)hHagnso6S#9dOO$g_O^{5uv)6F zEw9M1ez5cx_p1(X%LFvYR!rq+nnf%?zJDPh34XFB@#XWc)6TFRF2*1npEd74to#nGPZLceoZ}D$==U#= zFHx1Ta@QlD;~H{s!QH9t?{G4w2TU*%As%=%*bKa^j4&`x9g= zEq2zcZPf(IxG=WVhG(a~6_NevdRWU*C#P8|-3SbPg4yQZTSQ4=!c^d_U0!&0)OO~p zJo+XyYc&`IX2OUzzRFz}hLhZ@#bYX~;AC9;bl<)*Nu>g}1q;DD!HIT4j%(sg8z-O{ zIIPI#rit;N$!M17+4Xk`DW;W-D}9Kkb&<)I(FKs~bv5b4R!=~ftFd(6YX)O)e1ih< zb*hkl6C{;#Q<>h#qYUS5X;WSfc~)yfUX42<-6w6eY@FaZ|2IjN9s8w)vhM^A|D)=^ zx*z?Kr_mF)x_Xef!ZHJLEdqSxqVd7SW$}&o*gKv~PgBw;5`VpSY774BKAV?gY2)e! zG;7}^xCU3hMvZTkZ1_$xU7Fh(l0{mQ8&8Wj?xoj$<)nAhJ0XH2cyp$Tp?}iOv(1~@@wxYo^g=8tJ_#1WBlin zcahp46yCqFX)ILW*aOp0dtlr)Y7_M&vOl2f&iEs$n#oh$HCnW>QWDchj{v%NBlBh0 zeUlOWeJy^=OdOA)>5d;+o2}rz8~M@AeElb!@JAtd&Ww@~su+f`wiPzO~Iz=G*v;kNlE>^hKb?yHx}(Mt2O@$eTRi-y;DYX>BO zh0<>L0`$emJq%E+*@$4N>L1qiv_;QcW0W2`aSFk6tEjnu?>B<|+|a=Nm~}esAI>pu znpjVOCWl^-ATR_pTX7UhO-PC(mn$7RE%#1MDBsw{9;LD9oA)pj$mmu2M}KPLag?3< z@okZq7_~cLEYNo?ssv!^A^F+AIq7=P;Kmi;q?t3MB%Wj;a?<9L>BC z<#L?T|8p}VkUwh`eDw%6y0mz4myxbZ@qGeLN%Z1ra(fBTEbS|U|L_6x-n`QOh}F4~ z0Ug66OWf;kedS?ktAU*(5zlQx-Ox~F2VCx1emm$cm?IrH;aL{9+leMyYo0Y-!w)4u zsDQlF_-1{CNxs6VD{i&hQ&D%^IhUw zpcR3LJR}c^hSzV`fF*vx(LP;9h5`K{ChnX#7 zMwMO;z^g*Q%xPYopGF@1mXe;36Sd-8tsG~G@s5 zWtEpu(wJIu>|=WN0!~ZA(P#>0SsX(;NWZtsY%z7_oHA;`Rk{7?Obx1LRf~BeVb-8+ zI1C>toOLbx6#5K&t;w_>))&1TTY4V8@!iUhG78BI>91VNJ(O7TCLrvd-R}S?7}W(Q zwPYctE){0)nWmp=D^=w_X1hK%BJP1o|6kML)Rk&Ob-OTP0^;FFFq6*{%<10v5HQo% z*;Y#jr-d6YlrvzL)ZU5Ozz?^iLwAAz)PUuKR6ny45JK5PUeGXkX9RlmQ`CtIoU{-S ze^}a(VEi}Mj0ZcCW;Wxx>Hpdw)A_57cdYf4wt1wR&jijqpl(<(+$(KBtOPwR8`Y`y z_C72YmTKsE+?pzxw&FM8=A_c_+gK`?z#To8+>u|tFIc>2@lZ2y`tJ2Ou4JOFblA5j zWZaASvX7*gsSUNjWKq>R(9?Y{At1Z9ceWZ*>gEyc%g#P~E`2>&93y}7&^;RN5jUS6 zEG7%h%#L%k)5EhZfmG)b_83AEL$Yuf?$)6;-86wiIK-webf&DzD30}=zBeDQpNWx= z+Pc5Vq%%HCD3cgEh2S}7pY3tm3EMvm6sZ$*Z03{gYpH)dYUlj~Y*WuW?t7idjqL3R zQVUbZ^TsetDhb57n8zAk44z3f%+gmGf7vzhIHFW2>SU={$Agb7bAB8Kb=7A|_i?u_mXo(Wz;8a7DC=cIE2XU$@At5m$Myt-I z&5=BiRxcd7(OC_|WUo~o>(F)UJg2nVB^0|%IdenE!l_rL|6U?V^>9seSo+7eHU#emh*hE%vsVE z85X;8h|4{85o^z9#+0?zJIb>}LF#D%D>X%v6%+R4Bz_==60L1jTr>m`S^IcEe^36f zBQX2u{Yb(YHyODur<5(N9p@LmI|SkreZ&)Ne2bcH4J_;c&q!S<@`l|0qZilu0RoYJ zy$T5#T3Qfp(3H%lZKy>+#L2RKT+1|@Tc=Omo@xAT<)ZeK2<#}1$(Bl~ZpDJDwJA@a zDp5rnz$tp2xd3~Kc0R4KZYV2voY_nr}aQutzNY;O`UVaW7Eb8_IKhFa{c0 zG(SdtM9sQET&4cE@qyuD3K^&+BK{yx_kHDC{PPK6g7cLQFFu+zLp2kLA}NWs>H;eR z3#G_LST`TK^N+rNr6WDnLLVP~%vQ{GsYdS5yYLA2^}gohJ&C zi>db|WRuHCNVzhsKEvSyLo7K*GX8C|#u9_)qn*Vluj?COI!L1-i~HdEpP{*NkIzkB zr3u!vKvBAsj=))XH!1!{gECpPchDaoC8%`$AL_YhgKREgB0DN+#jhE|w92#rI>t(J z`JMUR4WJ?>ROtC39i|Dd?h-}rxjxQOZYA;xSvMgtF2bC~a%~iS+Dow&mpu2QKXwW9 zum75%KU^*)yQJZP+Q7=;wlp`Vb}olD-Gn^2v*~mxX2&u#f1UwM+oek8uR48x{beSC znR_gNf|t2qZcdNN3a2gKPTS(?`#7Aj18*Fix_A_745D7%LW;wU#!sauPb^N%hR;2 zC3om7E)$Gs14zHN4LRAzX^Rl0D~egQwG|uSE4bQgwsZPpRM%Mg%_ma&>e*y95+a3u zvV8MtofMt}khF;fdtpk6BcyTlNGAK?aRO`X(PwCnus}J_$d4|1C32M9s|h?NE)hL4 zSH#b07gor(f8OE%lJU-aMe?&#j3=zu??3mU9vM^1Jo#GE$H4XeONPG$)o)FOGxh=s zECG@L2|1iM&(6-$xBMB9V$4Ufc_HZ}Gq5=_Tl+i!O&ZrU9-$jp6NI2MEpC;?@mP2I zPH>g$+)qhM88|+AKi*9KGPDq3!-#>6E*_qK8x1MS7CiDy?Ykjx;ie!Wo}_0w$>bV2 z`h9q4EE>5h-DUoS%k~Cl(&h=_hBds@B+i`|vRD(L?(l_bds2pbf)Vc6e1`0^t@Y(6 zG#G#^4q+D-SVC@;Q!#TO{rf%Sr^npVZDgrT@`uISugFKCy9Le|ik_v>>(Kv>FPOxU zr@-S)JrT36M}TSnR+DftzQ~1%f%{UjmHX?I$thZtb=HDZfQ?$%A!}uQ-30C3P~BHH zMt;hA?2Sa0Ma0D)Ve`Mg##Y;C27`%QY=B%pz9$Ak-z!8&^4Oup_#wFH_yHW8bkHui zu5B{%GJUo}uR2@QwYUKq&F_D+*Wvc}mndry+^gU{=$>?o1%ykLxp)R@SQ{PHfv^3_ z@@YX43dT8eWo8y;N2ffkBl@k6POE84`kuR04T>)BC!M3QTUT!`U5u=bQ5Wbnz$#O= zg+XQM$LDgsdy&)CH})mpDY+B>Gr$h^mFzLuA0o}ZP2npATDWC6ld=wlPzFzbMH#cs zymT6YrfKtR3ve>Qw|!m{Q~-{DyKxnkRbY9c=qd{8G=o5=?zhkDw3IMHa(kAZ3Ou|Z zdh+nP72K~ijm?TxyMOEoyVn9rEGX^&*PV5aYk2SsgqfXdn5J9BgaXfE?X}Gw{mvs+ zpkw}*v$KgvX!_vD*WB8SJ%kew6_T>FET^Ql3` z_dPs>(lLi{E)GhDzZN(T7b9w|F0zeAO8;4j3)n~7#E8{^E#lb_=71TpLkdeNI&PEm zA~Der^@Q0&N>pR~>)kCVZxPC-obl7oy;#WIg{Ii0 zb&6{3gE|2r;d=q4{208ElJVR5w6MoQO|wr8X!3c`!Zj1>!TqI2UXI17@-@X!^V^v8&@*9y(r{R1{ryhZ?1&6#?@?-35X zRH=tBUNTKLpRXvA3}q)qc;y=BA@6(M0y)${6AeOm5x;p4W9`JfH$UtyTfsx)5;Y&+ zDkO{8b?`t~sSbXAXDk)|>U;kIKw?e>vF>(&agQ;6yVbp3v?-7WC86&v;gUh{beJBv z^EwFP9C>~2x7CGcH$?u=@Jx)-ih>f1DGHZuT*DzLLCVL1iq|BCWXqm{9>9?3fK3t4 zlS#-IvW2*>@=;1y2R*^0Kg*QWJ8er8j~s-vd@$vVF=IO5Z`GBt)E22 zw+Y<=?}wBTN)dV`t4p}ZqgaD-fg^aX{?Cf}cf?>*B|!Z}1sfV>FHUUCg)1d!7M2z* zJK94#*W4s^6UHm`Y6{pI?c7`m?h=Uz_@3@X9w3BvCnB>hckph=8#zJ6l2dG7gq?D4p+>wdqk`<=O4 zOlu36vd-S}kH}3JHW9YQYefBiUxeB4zgjSs_3}RBr;JYq8LCW;}$x?x}PP1{t*diwfAVf$iU4n}j6%ok!J{uASiT{-c0$;ITi{kKB@pBI6;r(uH+sL6nVn*p%>Pk<0k*9>J&Ph2M&MUH2MZ`11~-ek`{1c_YwX9+j2ex);;2z>zb=MxR^~ zKr?lrcl>Uk(OD@+sVL!cv%GJprPX?Sz#5pSR?Cx1MugeXX!tx(*$5yPv-Hw*(gVTL zJHVoMcPTup3jQ3^y4y{S{>B;OZUiz5PkF5GjN#BlRznu;~ zb-0<8EWldkbSUNiMl*$3@5CidMNcrYq1#7Z(tAW;%C4F#8rYvePS(!a8O)Uf{r1+F zqpdR0G6+QfM?y`Sx$A5Adk(%(o28RXRT4PbOZ)*75pcVVrzN2E3h7}A%wJxqjyw50 zo~}jHY?m6CNCp(jPSS)?tn=o|q}w^los+J8R7IpP%sREy{FpOMG|PLR094Xe_D2Q= zC$15b6d>3SxTM9IAakGzJkm1_TO52BxHN2D`12St$d7AuBAl z`6I%=itXWh7jOkoJ0QKD_ONR|v@<9%8(6GKrgtB}h|xnbP&xaxy?(8E;dk0&0>aQr z?CT-q;EsliG+)P|C6{xlj!$Bzt{_*W!nrcUuyfcaem_G<`Rb;8G;_ZUQAf7nChJ`d zJLn<1dU`CFE8rj%zMB5K0OnE2<``q4^@;d0b<>?}h)^FzwQpf{l(R2!mbK4Rw}(&a zc@Krn&-4v_fO!aetv{4f31c)L48BmN7>Uqi-iWZES@P-ZjRTnaD`ee$FGCx--%Y}_ z@XG2Q6wayzYb}(dXQXW5;g>Ua=}mUXVhe|gajK(IkM|Jd@K^^@B>ZlU{u>?{ZfJEL zI|{MNzI$ikD^9r&R+toCBZz%fWQ8b59)J@wlNDN0$*I(;cUBS3dbES{l2YkD$Bu7HueB%?}Z5sG*>bc`o*$h}&bt z+8LfU*h3)=Q$0OrZ0OdF1b`3&39SpyvtZy$mQ32j8waXhK62urkQc0g{0GSb4rR|Ia1v%FC$^8}Vh7 z-|nl!5X`QbprFCyn1HP?d-^~!+)%w3DAG`^2_io%@~(|yFTP3-Okl5^CbAkwyf%3I zI5)unN-Wic_B}2J1sl4szv;&kY#QYQFY)Mi+! zPcC;WC)kSYq&2xw7_;tZy^JHz;YNJo-CMOq^LiABtm`78qT)Ez1NbdJbD=qfn*?vDEHjAS}nI{v}l zrl8qroxGmS6H9N8CZHk_o7HNKpUd1Hp(l3iE*;+n1H;S-mU!FYnfOFN97oapiq8{C z4t9TL`;M{JloYD z`y0x6-cPnUyfSyaPIjNS4(0?Sh;|dTkYe~gZ(+ilbEQ!Gv+|87z0)#AXGFNWJB!nQ zUk!9MHhpqxu8lo7Sv6>Qx*|;KjpK>1l1)<$yqfw3`}6FV0M*#353CSfNm{EM1DK}R zUsts1b>+2<-~AnqtY*sE&$lxg5o3p82X9YEvDQ%G$6!X-@)&1Nn5ba?2g1;Wiv+!} zgVw289yBNv#~IVyRSbV0&kAwO$giKCowez;x}8RK0lTg{C@4r`fm5GC9lb?U)m#n2 zV8A#JD4?mHGfl|4AiQ zgFL>FD6rp!rdqXlu&4Ry+<0cNcz8!ukOWANmu!#>MyUCBP+-ec8hR|0ek)>J5&xBS6{W=8S z?r3la0mA+&-qxbtMZ;HztNYmexNm!{Sc7MV#9QHb!Ka*6QP|q!m@s23KbU(xm@B%n zx_a0(PRDGS!2DsDkZC zWL@K~*TL+zeeGor))HtMkj3$VFKPMH_nc2QW@wPvcL=kSVS9mQ9>S9&0LSpzE&G#RocIwjJK-O5^pS&t3m%Fp_n1qH0`wllfMTv|&)*ViCHkk6t=2 zJ94A#Wnye#Z?~ELNZ(JUcCU?6y*q8)4x<@>{9FRjM>`21if_(78@r!jVYWD5&JOc= z(PE(+<%>&N6UF5GuNHE3mUcRbt$0eE#4PP0={-y7u*%2>nL_PT@(lrl!fPvdv48iI z+80CW(q)*4hv@9o$zK3D5UP=lwwFB5GFaN?K{(Bv~=)H!7z2JBu$<9?ql#~k5{ss zUldgd?fnX+ic30UC^p%Q2vx!9NVd66{N}7aAj~oX2?;YJ&s6YvT{Skgk&J7{Y+G5I zBlrj$R;hyU!%|Fsuux?eYI682w&Fa*xg$d$N5b_iF5lId=~CA7+@5Aai-`m12kl&{l0ndZPlS`Xv1-%meWokEtRTcgR;tmu3-jt>w!_p~i znFO+o6f4jS9^2g2dDYbO9k40r2;k;?O8&;yS6T(*`2Lcmpw2ntV;mt2ef`KLq*Mtv zYxA88uT_`qxD&q(dHNNnt*^(AXZfJnB(H0yO?)FExZGQ2Y@2Su28+{5!? z@(&ZHQZPv(e|<#5xlNp6Q5v?Id{y@V5MGK*}~Z z*#6u_88bR+s44&KBMu3U$EC^PmA$tR3r{|>6p^1T)@!rZHWOkFc9gFtz&m|8tNn(W z)6V{;;sEUX>NFO0WDMzdRDzM9P=^Vw)PcUE8F=jKH}@8Yi5y5ua*L#ez*^zJ6Wh@J zY&Td9;5D7)b3d^X{Z2+T%RwPhlDb({QZyM5pSr1mmpHd_us`D>j3VgEiD;%&;O>ja z!Pj3w$1eB80kb!3nvEtk#;+~ep~uOa)(=Dgq3&Yt*KS*%l53!lJVUTsCT}R@ic%TZ zzKs1#8gn8+R%FwR{8jZD_X5ezj7tY0{)m4^df+vJT|Bx5eg(?jQfwE$k)2CK=I+4y z*o&)LiCd+TcNzK=CP3Pz)RT@y-X5;m$2V4_mxM4R79tsph&+8vaG;b178UljDufJ3 zl^;{z-T8BGQGX(1i?~67^t*4J59OI!#n+BeNu$tc5Rz+>XKq6P=pYQHG}$k~(jl&| z@YZ4My>e8L-15h^TBbT)75G{4#d!I0sbstw$)hN>^D>Xexf@?RkZpO4qLSx#{FuZQ zPzwCiQ8kW7R)V$asFX*2JJ4sbSvQphTG|SrdlWfk2$txv`PJB?ecKIThjOKaqapR8 znX$CHD)|dVaBl$2`_agZ4DU0r{x99#$;EG`ywZPDGlv8W6kE%#sN7YFgttxoLZD!^ zs(V9j*gBw|t1-1|yU}~@QJs8FiFz`3p+TP;myGd?1kSERpNCCVAl{&7rFFtyk#{k$k8X`u;Xx&MB3f;nZ$ zCjR79UE5|4qC?);)>QMN-dEA+5#t6{mYUR;vLNxuD|p|KuE>5pQv160VdVW&>+nOl z!#SfXgmhxHu#Ffx%=g2NJ13ZL9sm6wX*}yduQ5SZXZZ7$d$~vR46v5Uy}uor65QIs zKpVfO1`?NxmLg`lQd%J1Kq5Ly0VfidfCFdq%L0Htn(Q>2mYVf+wVejoS;7D(xLzdO zGw(^B1ur*|Ol7E!`Cw-k?VNam4eR4~8KMS~WIK-sF{JTf377~_b{UjP0#hLL>1+pU zav#Zh;<5QDCvi5%U5wlV?<~q3Itylu)@#a9t5@vpogk&dt~7wW-IdQN6AB)GwrGEm ztz%Zoz9jm?r}5@JD*sb?*547pb_TlU;eGh6klBC;jT0x{G$P6$#pI6?ue} z)MmZYne=;keAhcO2-@t6i^o$mfh|_(+~@pq8eKkeL|{+dgp%Zebni3p&I~}W z@Qk5m1z-m__3IEnJ3CtgTallQQqQX^X|)3!_Wp93751mIitP*7rANY^AH7QGW+#^> zbaKj9etmji++5)|H>k`Cxh&p#TUD-Dza$bqX5YLUg_Pa$Pq9?N#%y(_LJLkfTEjKd zJ248*9%n2Ba-Y%drZUgu?syiv;HV*~n*vRq779mp!y@IxWy@wo= zG>k!l;3WtndGO*E-B~(E$R~I|f9e=x6TdMQ(3lE#6m@hc>PwTBAyz0*`dlK~P}x@t z)1h)QAO3zH1>N)hn1sKyOd{Z}{-m3VAI8(Q(e&jns8-J3kQ<|e8GYmr1#@*N=+`vM z;sR-zG(_4wtNe7q*NKN{C4oz^;bUn;tEZI_P9Flig<}NZ>bLuBCjlq86w*!E{VmAX-COs(wy$EmHjQoz{TJKcT8PQbxx!QU?)9&k) zvs$^jWvH6g;LXSAwvO1B5OaBYZf?E6a?Gp!fEkwi83Hq;dQ%%p*lX?@djZl)1O5v$ zV@4kCc~<#-doO+<*08kJ(A)T9>x}Yx?p(mPt>7k~B<}dCyR-8}g>zH7Vxx zv1pDoF$7dI0tO-t@Xl|Du^V|kXRT9fvC2F_8oezz1R3F-kOG;TY1Fub%0sEO3~*?g z69<%pdI&NxV$5`61-m(b`v?5(gVihMilzrTQts@=)ZAsTtW#5Bop)h64(Eo#P(JOd zTiz7VErsa&$ST~}se{aPIVWpBC`n;;GSF-mvkhE+C7r)PcgYAtTz^PL2_ z9bcWFrXFoVRH0DCbmo_Zqny>$U9l@&8pU1ep;|z&wRW7d+IKWB$Ocyybp*>yXZ#^p zy6+JL@z_H1B0Wj*t&)mt4_#7iZ=WILqlA?GRQ4SbSi8;%Z9?qRn353ka!hq3r4Cfsk;Tdz0(7>@ZqPbW1otWs&R&^qXVh1* z=WUvRyV+sqe$btd3`dHV_0{k_a@1YSU-5)NJtx<#zMi9iMNZ1ZzrWfK1567d=d#vs!aTf0vNb#ue9VX0nJwhcOj+_dz z#fXT*Vw`m`_DTMfPhKc(C{3)ryrJ4pNv+BT3D01>F2L`5SPE$XaAGcinP|iJ{TCciPtrpXfUg z$N}7L`1`;VykcMfIbcl}`O4%C%%STAuGmlv8moogJgHy1N4P6x*uTe6tNe!AX5P#7 zRD2#e%bWWUy;Az+^C9LzB%zJvxlJB5%j}@CWm(?=ctoYOj?Vh%fXzjDb@2`C=?yh~ z2w@oDEA}twyH-+KK+|(CnrXpV)dVN)NgM~tGiM-~0hW|IL`@FtV?WStZDi(8Ps>L( zS5M29vm>aY0Dpj2Q<)mu~!X8p$0;nTiwo={N+FJiWEYk9cz)&wZE&75iWcEBEHbbf64=g+lagm(#l15c93a_ijJ zWvhJu1M?A}@4l|^X6>hIH~nGL&i2IkrXsuJv$B)JrEF+WE`b1yv9G*&W%foEKqd{s z?BOhLxgQ*T&V`D>b+V1}17_(h3b~e_7Rba$I=j6RfGK%-9zXemej=stI2 zPH!{F;+N{{vtl>%_#2Ceu>0&p}tmU4x>!I0(2BFhG!mo1L8P^wFZd44nwgj0NW=$X!Rdh!N8_U@W(b%7$lGBC}mH$ zvKKjrnQyNs(<5T$QT$Pk3VuZQyPJ(DL)lzCmNM@#{_AifOB^&usOB?R zSoBAPv;xjt*6+idS34Al3<4h+i{8*;{`vrRib12ixIDHw9;mdBlIC&UK6UIMGZH5* zX77n5H&}N%L(V{kZYh4wy>YS)TMce@MuSw`9}7BF9W^CD~oVn$YMb0%vuMu)Px552wso!+@Zg#~0Sd zI_JROdtlYY8}=Y);?YN5+B;#@VGe-pyY+|7^GZ_KSz=Q)-&uII;MMF@Y_hxqCHbF$=425CV!bc2X=ceix?&;9*9pXbGX zwWn6hnl)>#EA%@|=y#abaCm4zUNKullw1E=Jd4vsab;7XQ@wt zV&oYz=MVmqeoklOo%>pA6cQ;^uqohFO{F;16AwU%sWkP-Sf1RcMAxXnMpNfGD!)Mx z_#QzRUlTB*mff^B-~IaK?;&AF620DkZGFR~Zx>ywC^6!xE)akxNlr4EU;_TY z|E?MGzdN`b{-L>BdC{D@N|}VAq*UAJUuEawc)X!Wcm{vNz4YQy{l5VY4n)2DVhCTw z_emwR={(&7UoOnoS1m%5{_Gb?O=1g>_nXt!wqJjf2P2a;FEQp(YeOwDnAvx`=2t}U z)r+KW6$UbJwtnV&Kdmf8rYp|%|LL!IOm4QZhOc=?X+?CA^VO}~{D}Ym>|qWbKK5F1 z6&blcKCYF4D8K))r$kqRoUWv4~6* z09Hg7`+O5RR^9)`0?!isSUgcN-$A!2WKTh=MsjA$7>kjkYO1AbAhoNmp!iC2{l*D? zz54%q%o4C(+9FLk9hmhnCyG0|D;Nz)+!A0Xg2K$1+esaNB0yK7JvC<4$O95+o<3G= z@6={yv$a-P-5aJ!_$M(AvXl0w_HOB;y5WPW9jvKzBVv9*4vS0Dt`mf<-~MBj>r38# zehy`?i?!d$ajN z!Zb~0vJ^xn8teCgzgC1q3yR@vD|O%f zpkaVpsOT9ZBkNk6^!}M1#SkeC)axLOMNXPELpP_W!`_PEQ_rxl?7dawa$2x8B_Inh z+!#>k@;Spb9~nr>yyVVuo!CaJ2HPpC8k+smegxKaNaWaL!UzF)pCp6 z-%`Sy%cgqjn_!k6Q)`+d=WNrP!fzydC*eT_SR2}p#_%C`@_I5;aCEIU7 zZ>Wvknx|QohnrzVKC)))Hw%{3?uJi>HZ+rksX<~-eocW3E^gm-Of2ArkR7gI1u6b0 z(nK2R3ibpc0dd}NrdTJ$p$vR05*Lm@)iVAE#1sGH@a^c`KXdq(Izf3V zp*0&8B#9}&PS|jdB73)g97&h;<-cIRbotoacQBUl@s^VwVQo8V`8t-f$WnuBd4w6Dvw+Fj0H@ij0--cd32Q(H52f9<-ID)KdlcVFQW6ZqX~By@x}19#ngBs;e4 z%CqLXo$U!gh&?065}ja#ehfSnxWr;-n5(q&ldCH*#4T(bbwG2oA&vdI|LXTnrOV8? zHwxjC@t0llnW}*rhIa=gmn%U)4NP^gHVq_mU32Tr$mJ@Hzx<)iFDc&iCTL~!2+XzL zt*FFAuM737J_JOr#qhILQ}cG9C&!nsU1;Nv`-`Q)z);ktA2@e|(Y&1x7Paj$f}Q~Y z;W!0uD6ndf5|6*LMuQzvNeJaDwR0L#9(YD&sbTxblR~a9(a@s3WG9vH8cH$-pEwMY zR7GbH@inILE9QjozLoXFP)6s&pP`gDkZ+39^og4^|CAunTyDnEa2j;4w|&pfLU;2G z&G?GZ*;E753?BK{zMucYgXAGj&mC3t{FJse{d-G=VlN?%utZ72Y!fV}o9O{W&*2MY zhC%c4hu82>FMbxU0%MP^FWVHxHY#*zB&vq|CnmjwE*SLn<@&B(XsiBnB-!WR#ce`n z2U;F3+kF6n>BOISMogu~_=H!v^tIiM+RUrVEjCN0HsG~S%afU2lV1i$4T;@3bN`lY z82UORc)$wDU;Z-nezFZGFzyg8>hb5jSh@O<31W!^B`SfErT_hE|4%T{=0d+ndOf4@ zm=#6(`X^`G1zl)(PWBfQ!0&&JGd_nn7k%|qarT_T`^*wJ}3)U1A5aL5^{hRZuvIs2Dloc!rj^Bb?>=x?Z*@B zY|}3lMEv86`H)Qg!I{nyqBLL%mGu+C6`()SUm*{Az? z%_IS@L31i;c3-X7LCt(dww^>noEI(b5pQtqHshTS2kgC0yCcU3esGFqh(vk{e8yCt zpM_n$Api^faOe-zNb^kevJOUap6(N+3b74uj7SxljObz1rdQ0MGY%24mq*O~TyS+) z2vLU-3VcaNyf)46#>R*}w!j(c4TijUYhI`UOJ!U@xUAeI)*F?VUP)X9pFFlK)t&BN z$ee|otG?p|#6p&fsxhpYN`IP&6|5t$JDK(Hc8ha!Uzt5oD)qW7xUD8(Y8hSJ^Zv+J9P2GwJ3=sh)`YAJwe;VngK1rt;kV zu=XGS5!Iv~v9S9R*p|Kb{xTxqC2O#)IMU)iMF@MZ5%uUNog%|!I${6y^u7;xuAI4S z%7J=>&7i$8X+q+1jQ!`AG%DIylW3m%zh%i)H*EP|WT#kPwUy#*eSYVHXAcIbuNsr= zz61)xDaE`yC*A9;&^)`I`U%Tf@3DJ<78?vwE|2*6fz=5`hQ2WTIXXW)^4V%6N|#kl zoEw@l#s(Xn$-w&YdbbyEyw27Ul-++S@af_3- z#%sY|2Kc<5U>X-Ed*+rTxY4zL@&l2jrPI+tm5!rF`JFB!-sC*)wu1RCuQaIqYTKsB!+j2B?h4 zXej!F7l((3mHtV=d}kZB;9f?xz$X!#ldAm`{*h&wNK3z0(^g$y#o1PR2EY0=$)d1}^j!A%cGW}(zwy56|Cqk5 z-8a$hn7zNuB#d|<3-)$Kxy3R?+IWwrf=8|V7lksqP+>R{OBO{3wJj)hDC`PP+J_!D zA|@TK3M_p8!R^66P@Pf?h<^%Nz=b6CPYYO2P!3okV?_kPg#`rzlYvXv7`dH;lbE#JVGf64fm1Hkl&x~(4bC&ssIu-8lNv`tH zU(FS$q`m<7O=Gbj_3p92c8U>?C7l|;FcY1|X8@!3_t1N(^cZJZ?!$3Qm!WXllT zR#&=cLVAloiiT81IQ4ij_r!-&QGRumu&sSVP?qrq3euz0FvQugC4QA7b!OxKd0eVh ztDmCtygViB+`7>ADVAU7KuIPjG_JX^BwRM32?1wF9CVTK1=DUjEFyN5SPiAl(8a?# zdBiwz!pfSEW(cyWN^6YjVo*&|VJ8blGL1rdmAY!hXk##8etDszY+i3rMMB9M|4eC( z>Pj1Il(_Yk75kIih1iEc98@sWF*^>!d4~62L>bqTummv@UnHDjEXHWfuti`;9p9&q z&1qL9l)ZC!pOa_1xyHO>0FWyb-dMsNi?D?h=v^V&E0v0u{5Dxu1r6%DFLpZu3*UO^ z*U6dErW~wQY>Bh|ZY}Az3sRcez89wJsopr;gk6STWV*s-=3l}}U$xum{R-Hvf3_LO zHf_cgS2&E6{B(}0$FDi};heU=T|ws7l9CM-n*05#o!Z6ejhZolf)e~DPR10^ye9UI3gyFgt@Q| zv8S%{&c9daPk$xe`(R z5ER;(x0BkmwJgC%Esm4Tk?~VxdUT)1`h)kE|FRX4qGgI1Ujg&8+>V1~nq<hLyzegv3OV)5lE0vC-a(c=H_l)T%tKxHcFPled{^6U0x8elgkW6$FRGCg=67>|MrXh5g7xL0F8jFy z=PFIc7@2}=0i_Rja-4QEHQt8Tpl>-Q7!#92d1+CCo!>y_6}`X97BtU_jRtogpJ)Qz zn#yw9`Js~a1`gvDAT>BHW@I`bvaRmj*et4ngIMO2l{nG{4Xs?2*axD-HzKHfT%?@2e;Zt-Ty?;F|T!J}|yH=Zt`-@`QYT z4?sZMesG`6Cl=4d*yt~WGOA{489hU3;b3O`8gkpBvdUCf3XdJjuXp5{$0Il^KJ znuCB**YW+n1u@Oq%=KC(AI$VBJyjU99y#R?dZ7!OC3NM6p32IYU5FmD#MO@b`CL0O zqKd56(k`3<9EeD?Zp|f?(qF(*v~ChR682?%*>xB-zPIR^UUN?bdCC5~%3l&HAQD^| z54@BVK-T#OLb2fDUQSZX!d;NPsi|pY|1<%-n+}7xToNJRB1Sc|@7A7>u2kA`dPY2K zWwOsm5!sW1gw}K{mNS@+4Y_2Qv#P>VOpnqYJN); zgpEh!^Zk{$E|Wm33z(h^gMzdy`qHQ)nrF$V7gk(t|FO|VXPl&s8Qpgsrkt64A~OD1 zVa4EsL#DP>t+GLeEyrc}D0Z&VEW4>?8KbQ9GRNGfx-F~BOeonr&_gP?*P7ie)Yo2XKme0@8 zL*{5najPYBfxf@KvEWqy@79U7uHLh}xmc0vtC{wvx4Y?YvIxZDS4v5=fz^ulo&iC= z=Z#igyfR(J)Du*p5A=|EPa%BZ9W7x28Cr;u5#Ea_ue>ucxV|`eC2`7%gFSt$Kt6hV z3U2WP8`fVY5*OKXz+S%?!L5gt;94^|F262ADCDbtXu4>KGANE>v6gzK|jOc83Ff)_j{+3jC0SJhc-Ydvus>>|ZrO{p%0 z>Cw~I#T}E$P@bh!INd^Qe#tOp+-TIuP3h3weF1fPx*TlR3CLPJs;_}7D&!~-e8}Mp z675bK2&Km_RBju>#D|>b9#rAIjCXprp5AYpAemNzwTqWHw2191mSje;50+m{Pw$4L z+TQ{*rVyP&c*GGqsN0oFHlCgY>;u;n4RH>wmqAANCgad8vNdHIRe4Z6hl z7(pDAd-r3}3u*jLD9f-$*3?=_#F-Px^VEYC;KTy?C5kjmA0rz^y+7Ym$q7coK|3G; zu#mUG!gQYJR$&2~h))7j%OsN%>71|Va8FnHbXFp5oUgyow{Z!kexCHi-Kchn=XP#0 zbmI-2_0fhM$7z4e?Q?2ZdF{1LsZ3hFCvp4)ni17{n7dt073b$=YgHYbN|z-R@_9%} zqDmU^X4EY@R_t^dRV!$-7)2O)2e1ZSmn!3f^W6sIjZWf|hF{W&oRy#I9_73`DY1jK zizhI?dXiMgn9hM~@cKAly}{+%8Z}H7jprd7ZdfCB315O8-V4)0FcAczwZ5(<3w_V%`Apurw%1bBJD zsvOiDy$k29f+c@7IP=4STGH33_<~QI$5#d0Y5QK)fXjCN{M73uar~3+AH(r#=Tg$C z;{Cjvai)yAg+HQYr&rD<;LFP?inK9HHI|I|2~*wv&$p?Ui^4hyse$5#qjh=Ac)&Xb zx05#i!=gijtW)m5Z(A$kv0jN`Tr#C#(g4rV$%1Dz5&7lzYvosal}x} zKH@>wuk%!`pZ4YJ?R*&;^%JzA2i>RTRqwg!ym(nYjsi?ISXZLoPb2SwAXvJ|=oAsl zpPwzn3ItgcF*WN1=j^Y#x;bRo<#p+FzwA`eMZZ?1P@$orsf2GBsq#L2ZqPdcw{Q2D zMaL*lGZ?2>6l> zYi?Ey*jdv_5BnEA5+v!0Jcopep{Tp!^%Ohq^WeaQZLWf~j-NA^Yi# z@*OAWaUw3U(WW*ujra9UNq}zFono9GX8T~#ImJd7IbtXBZr827)$`~UXUG|@T{Sc# zgRp~TiTFbfYoKX|39HcV4-R&*7cg=5lA-tLy9^GI-DuQowjfd4!66E;2Zk5?D+@z) zrCPn0SVq8hSg?{JD5$?+!Bgq7pfxL*;qYrtrpBm+h&J=IvvIZd+pjEvxmNGFwDkn} zUjB&m00TJG-yjw)WSZYsH#~Pajq2s*8gW@@Xn)$36>kR~+g-E9)nFgA%eQUtM@A+y zIn2?1VL(%X1h|E|8CM4|4Dv&-g=sz9-K5k?ZbTh^yCW?c|4)pHVS%gwzE-vsLVB9%jSPa?|t7mKOVy zYO>f*qqna5nwm+cHm7BKVf;B{2;@5aD*d0Z?&*g~OELH&XAEL+9OK){o<&0djck9; zRhEi#TxT=m`BNRj{kNt^+$2lt`y7ct#NkzHZv`363Tt`ORyTHcIpP35nhex~)$lglF&DTD8rsjb|f#<+($%f;I#q{V`UqB*&=D zR0pf*0!bQM&U9lAmR0Y5iP=*ojkRl9IyfBuFTSBHoP|$g2USLDDpq*S!g_>CO01;Ca8Doxgk(iujlOR_doRc}c z3+a>~d%4ST6=JUaZ__Dy@OSvi?*fXQAz?%W9MJfne0C}7Zr9o4hpLES8EV)Rp7%tH z9iedoCVEyEHa}(fRbZNAYP!j+AxrHOrs1Ce5s_d>AXyi&A7hM=#3PD=YY3F=wejos zZ$?rp-0b;Rqo}W8WQK@+*0MdZuO5Kn?HV)RH<@9!tL$XnJzWC05sLcRRE2*mB{pGz zz(zW}hL7@aCVu4Rn%7#+NpVRpP-;gi#qC)KE3U{7Q&9QqIdoD-kJodRkqQ&&9S`!n z$Aw=A-jNLI)Q7Ap@OlKD?&-OC62Bl_P{NxqrjNB223M|yhrBThJV^r9)SJgh!8C5| zE5T#}TRYZ4D-8YA*glg2wNWF?Bb8hl;Z!u21AiwcZ))7x&1F$|tsqgcaP@3Kj>uVH zsvYuP)dIS#F&{)65kZY6>ZugBSC@7nXIx!v<Y4JE<2Td#A{N@dzI_CiJW z7+HemVT6vflN_|lL$MX__|KQijR+83=#ng1!Pxj47vQW6Jz+pyvhAd=m*>ircO_&7 z-AAXO7!YHhW;{DzzZdFe<-@gl_h+!OdRsSK8~prKmxVBRW%GTsxcoYKI^zfqOcc{( z8`*D(kdJjnS9Lj$um619#VkeKZDxw~{2#Z)o4Kc;CPaB!1P#XcwH?5UMc+8=1+ zkHhPGB5~w4tehkpw#pFPn9~v0jvRghRwAbtK5Q7`iqm{LAYkEd<}Z9Ti}D*yW28M) zX8A&o47lx1BgaRP*!%jT@#GGKdQUq@VKi)OkP}+~~U)R~0{Th{vGIeUu76f->LED#V+LFUJ z(rxnMFgfS*+G?^WT8+tQvR!}Zr4K}agM-roeB492q~+ZM8=`jXYBt>-TCx0VcZG4~ zt+=yJ4V=~s4cYn0ASV$d0)`!xIt)sDT1P(M~^6wpN(V5d+;CWuBma+8Kk4~|x zf95&=;=JyUdYeDV0h0#l8^s?&%^yU_KXbpv#g<_42~NA+$Ue?*IFG<*CS&sM^sm1( zMQ~*(k=C#62VILg60)Pr&db}exek5qcY8duE|-V=yrQLowm5@n%5J__16EggW)*HQ z^@oRrRyCE{`LGx70F$YG9(k<`HMg<-C5;^yS|5xU5f)woF!d(ym_n(WE>*^pm&9x9 zjj=$nKI<9WhL@t*p&X9v5TAzU2F0@UUb@n*Pfg3z&S-|t=;F0LtAw!WNFR*I>d^~{ znt=kSm_U>(@vsa+5Tc)Q{{YPpjIgAjOf z!2QSADnWYm1xMbSMqY5Uhv28Tz`U%a)YBFH`pNil>T}jEksKDNe2<~@v790 zW78vJ$tzd$MUT%8$w4Uv%`|0!Wym_Ky`M7HMYs1F-})iKoi{gne=y(m@Q+0;4_=3g zzHWlR_cya+pHt5Q5N6BMXV(ml=4S{aaU|Q&xi|-d=7RF!MWsYg3GQ7Q z>>X2oZ-8hGs{f%?zc9qE6)mw@KEPx7F&uOg#uye9zC?_M8Pad?>z@W;d@UnXZyiSU zR;cRshJA3a(01~*bCE{a(?NWo)nEEJ9Qt7y{Gz8qJT!>+!(I*cw@uGtWUulv_E6@= ziu=TSswhoCH{RQ+Q>2Q5n}5XBP1v1P->wjHoYwDSJJLPzQ43IyY~zp8(a_Lv&>qsL zg0obt>|v5sgjY=}R8`C9an`6ImFecxo^oJPgMUB##k%c_8mYp?u&@0KSf%@)VzO-2u5wW?S69Aapzv_#$;!n$mc1%zQxp6FAMDgR z#GuJ!CY){)(oFuxAio5%pE|D^=&pLg#k8hO>`u|kevaVQj ztv5yBE>Fkoo3bspycv??*a}yXuvfUF2k=SE8v>H|r05mH-Y>F+u~8UE6>h*t+ammR zO-(O%m9?lCu^?CEN>6`t1hJ2J`~%ZxEggK6R=0y8Cu7P0FU1QCqI_*T$tIQIq@~mw zM~Jqm(mi@&sd4^(vZT z^&=m`rzjlJ#5D8}$(X}?%GRq4pO=yK>1|W*KdDZ^Vih)7hDvwOFiFk+yzxSobbGGn$l?#76#g2BpD?DF`$~-Q-!VoG}XIE*(<-k#I36X@mLv?5%>g@e7@w zv#nN}*%rMlESABiqo6kVKjev-#_0)e*WShtD-{d~oE4#Qx>ga0mJbX%8?G@ZNxRrMl!TDsr)x-M;t<%a&dz*%4 z#1P)0AG8#E)ITtJhqyrcJ;P?sAGb#8(xPbnV0 z%w}I52QshY~^#Ewn=Ry0uoIt*AmCy>%V-j6@L^k4F2}tBF`!<%lI8?_W9h4Nz$;D>} z`dn3MXo`bv+Ba$UOWzOvVWiqh_Zp4a8BCxkFle^>s7t4(l6ax}Y*wIW0I9O)IJ6MXL6pB2(a9J(5d%=wv?>3C%~b4s&)O(X?vy zv@O=f)2orxF{)*5(trFavzZ=U75D!NQI)3&JT<#a64q^{FGgd zzF@w8-s!0p)mf6+$P@9VQMg#S_a}`7hgI%U@}X+jm0j{JVj=L5@*yMaqFr;jC8>L} z<8V1HAJzB5*t>2=BeB?v-!^afNF+DfdAAQsR*q)VHVx@Vkme$h*n?chG*K(RG)eAB zYUAw0u=^w05?B7^fYitB9?dzIy|;)vNdZqhmKi!Zkr|zkl3E-a3i884dT(Xs3!rc) z^B|D|i_>N}On4V9-^-GsU74_c0d-DXND&Ab8j3B}L^g*_AXFi0$~?Y7hE9~U$XtmB%K%O;zB+gXDaRqbbD z7zO3UUdxvm7(5O#5_<`{QC$W}-){92U+te1?iQ@tXLT z9;Fv1G^>Zc12^nl1d!*!nBFnkoznFYLa;l^Nj|>K{O1Gam0(7! zL3-1^h~A=_f!py_r8Fs|)v7L%4SI&zRw{Y)9#I%54D|*LiK29+E<(`y>lhi*#(`X& zwc|e}mapZENS$yzM9zha@MrddFdOyuKQ(T|{}YCUoZJ|Ldy^z@oEeY1PMxK!Bzjm&+o!n*2)lOVe!Oh5X-v%*gJv*-_V?0(pasM-XaOegB^3%n@rG2}h)3P@8QYY(N zm0vern)DnHDAOhoVc<}zy>1Nl*cD&v7QcsuzY6@-E%Z8U^7 zz=LIbg-zl({Iki~(8W5mGe2}7O%8uyEKtXOBY07Lw{cM%#iF)ffYr7jC0G*2`n|7c z4+-?{zg2Sgv5q!2e%$iKq3XCUXi2S?@V=s&fg$V)OCbR(Zg_8DBY zkKf#U`J}2VkS{_M8ZNcBAobp_U1k%Gw-crR^~Rb1pOPLcegT}TU*nxIMKGC^oAI{| zaI2;|se0%z> zYE8lKah;o=d*qbHuBT-_sL=krE%p8y3=F?$9!$~*kYF@kx1Z2}&O8&vKW);uIN3U! zD%m?CNkHG6>gQBV9mi@!8auI@9Bm++=?Ii z%wu3;I@>Z7uvu`+M{Sk^q-i^A0FXpCSGV#N75lrB-mT9ev|Rn+8<)uPEMOa2O!Y-%6Jw2;TqY`$ey6F7g$4 zucd5Bv7b>Xe%d5|z=-d~yNyROjkRU!Ao>`DcfMAf0y zv4FgOfwoPA_;smJn$}9!c9lKO_15JGCR)84ropo4xHBlMFiWZVpAT^$2usT1_<#-r zCJN=^7EQJOZ>A>mM{w$tWtaSgkz=Q7x~XTX4oNCZATk6~>##;==m-sFst_v-Fq4*g zUg|K>x1H7hF`T(!07g#udgnU1Ua8?Bp5tS9Z+D0E}VbGjBAqtbi)=!C6m#zOZSp>y+EKVr_bc~n902> zn_mCH(CwXQJrOl)_wVX$KWUhl+7pL}@-{n@BHkQvz12Xs?+^a*{zR_dZPZ+!(ZACu z%_uuWV%Q*XbK>yHpXcI3)ojxWE^7;m9e7tam`Ce{5|kxOIKo2@$_cEV6|+*eFXh{W zs(rgx8Snw0;|~KR3chV`jgDbNOUwd~{BKTf<=oYFpgO$uqS6 zdI%Ze3G|rE7+CP(wPN_h(GCY-amo#<$a?>0Y3*ulCwDcmNU;i1V^;igf*zZ{ib`YV z824C@9{U?svHck5k`!@;wa(B7I&RRpQya|XuLkar#h}YbGD@kG25aK|v#iTvL5k(e zvTJaQT}$z1c{xHb zo@01MhW9`eHIf(4psJyr=Qtc8XAB~2XfRwn%k&K~wBU5U1WH;sm6)+jC$MT>%xI_K zdG_;P%(*(V*gL^J)%H40wN>3>{}#O_>$JtMHk7NP@6a+_)?G&Y#G>6`i3?=r{(=WT z`r}LuuwQe;82>YF^;g}Et-xijBOABm9`sH^G8-P_@jH$&|C+lGruRJ(-$CR^?|y8s z&LI69=bt%9Dm`buzO#)75UxLBR<{0kAT%YpJ+OouPQqMKd?(YG8M7!ceElGnLpG(a z7<5K+B?5m=iX3z2C6ubh422#|f~^{zn-k9g(jyNMCgj+SmBIPHW9suz)JzLcVZLjh z|DScr^GGsU&mcbOi*fkxg9Jz~vOIhFFN~0KkUzEyS1@5nH87)a;<+~yb7w%*zEbZ_ zshA)GiBs3{0YLTLMC^O#pN+jS9hrLOw0xoMQfESat z%$+sfkbWhb>?~`Y;87S!+Ya_A(H1LDL?_3|j)~GgEmp%BMhC-QbNJ$ovY=z?Qn2Hp zFhB-OKo?>jQ$H8>wmJ9wd7nFz#A9Q%1LyyVK4v*=3eZW4E-v}=*Sx|)C6I8F>G!KQ zyn)6>i8ZEg$Vx`O*%?f86UY+|iplxF;L4h-6qGVj5JXoc??)Yf5LQ^MoW?FQV6^>Ft= z(E~?pz!{@OV>#eW5m^jlvE;3cnAEN5A{aV)V?Vc1+Rp$t55@k90|MU?C-Ui2F>ypd z#hgM6kQ6NcW$(4t2xZ4*y7Y?&dZQZ=Cj2V#Jf!FMZIeH zn&8ssc`ITP>nZH_EfE?)3^BV`o#{m<=JDQ3Er%;bPE?;+!-#m4K|%$lY^%x};(pzz z+wW|Cpc|1Yh+^;hL04;QhEhO(ShtjS7pxO8ye_d~6((+?Rl9;%_@~S*=2D^EpDc(3 z@yB9cn0G56-#B8<(IO+0j{RH=%s*sZsq57Aj`BXO52F*nwGpt9H*ED+EASWY=m1q8 zD*fRgvvBPzifTJ#L8MCDFEyvsQ>YJERN%r30-D{cf}lP1u<`xtWdVYMwS)FhFqR>@ zscPfhp%=o*IsDt4#MZsfV^2UHhGmn7{7?UBSp>fc2CMVM71Uky>!|K?rndX7Cc8r{ zHw}C76p}sM#yT&`6b3)ot%$|4!-66GPQAi?-)6WWOK#!89jd|;)E*~TC(PkFN;p^; zJDOvJX0G3QK`1gxKt{42D|G@axHG}k|4o5VECgeAGaC&}=f|S1@WzJ^x1lcT5-n7M zL2Ldi8Xp<)$^;3>Rk(&i7GfZ` zK-sqjv;1$7)d&yNL3DT`a2wdL;E4SR^<~y+Cg@BW352(Ohat?nL>T)kx>r>0=Z|5cI$F)Ur6bU+)vVw zp^i20phpVftJ19_m-M1QOlHDE!3{dXld)os%c7+I#FY%U(bM2CoNO*aZ3abq$Ar82 z3@8iXa2=Jw!tGKn$i;#eM~RpSxkBTeNCD{~Y-#*FcN*HU$^O2eH!0|iF$!ODD)bigCkV!zKQ$|8R)ZU0&WRm=PT@x=I`3@I|1 zjYzpVFPC*0%xa(G5_mA#BaK;moaFvpL1}OoJoO!E@SWIQ`qNg)^@*QQ z06LT>lWm4JNy!;FrVESZLq6D1J3)1mCW{L$e=D!*UpJ?37Fr6TBGi-Um!vIowto|@ zu^7vK{GR4FEj#_SUBv&oH>J*7C~wkF%Q-<3O3@?!h#P#FW_Zg1^0e9U4fZe9tMo5f zb-l@fVws)R5?0g3y`3{S5e$#V<_`=M@HpNvm|#z>ND`pJ`yq`p(XI_c#uWJwN=Cqb ziG|jHv;v_h>eX@?vB~YYt!}BNN5{Nv2$Tm{`5CT#+y^$Wv1hER$*FsD^Qg}ey;7ab z<*@xV#$e!0&HObje?+1A;b%V@E3Jome}kaohylmTSDHkt@jQ0`O$_Bi`|&A_hJR@`RQ}@Q9uKO;!tAY_1hW^i4>iyq8xqi6qOZNid^nQ)rz1o+js_tr8 zU1?1CF=&W(g`^J`MNBenHW(UqX&$@EgsS$-tx@r8oMJ*y&y+o^O^eXm2gxpKZi&wT zR)G%|G=;Jo2)FXCZ>`IF&Jt77>#I}h|LmZhA^bnajn?jsnF|7#lHqsjHUK**xw3Ta z4iDJVsN@G%4c^^xRCM{1L)r=X$08 z;}p&oW3-X{GkgnoY){j!(yDIA=jo|*O)Ev+F9?)wo@szGQiV&}!?RD7Urr)`=9N%@S_{+#L{`Wr=nl(^S<3rv9&-lyx zf8rGWV~+mn_YewV$7ir%sgV8lA4xO6IAuYUIpvqAEc7D=?|l&pdXEC^z;6kh3#kc1w05x@k zd+mYG8cOmMj5i1p0K8&FZ1w@YYNCV!An^?YP4QBNw&1*f6a&g)}g}S$y(5j zSkgl27`OmAX5R%9z+%w(_8qDTo<2_hv}RB6{>s_S{vsZ*ecWv=HWwFN_hQ82li!K} zK}n7QL{K)Ifmh;)&F$|28&IxASDzYUBE+-nyc-!Z0vN-Y+J$s61F!Vd?!}Cc#$d4m zOz5aM614-bYq$}cUby`;k=4z&Hpz`Jq_S>)v`=@{u-=I~hRO3EnbR0FqqxcFp*R?W z8XYg1b_zSi9daN7P?2$L;*Qz{$Prx1BcFMri^R>Zi`j_Q@9uDt=3xY?$)~XFMzmR= z_z?VNi#JdEQ^z!=-4XmJrL=SKQyoqce~Ld%Pyi6CUU6I*DI$5Lw!hLT5D!LFZAsM( zDA~uUrbP05mjs5r@C0U-Tw+S8uXvKn;f7llm~mr7o;0C zJO$$~8eO#Ba!8&dZGVb9n28FIhR%uG@T$m=11?|iWY=Npi&pQnlqx)rOF>l|K5Oy{ zfmo0oHN-}EN5%T;W@m0_%-9HOdRhyEF7bgex-0&+?$elGz8B@lwuYb9I%+f1n%d7k z!8`cmI)n@IP8NLap=K{t|Z(;{4e0`8W0PbJbCWqN*T!&7ZK@XJ&hNg@OY+3RODi5RS1zPQLoMD6o(udA1#Zk9>Omv#JEH>A zPxk7xK71oJLS)Lge^lzN?z_NjK{Q%NbsxcKeJ<~Vc;z&INMdy=%1k1uk25qH^mV+Z9JxQ!whuHSoq2wyw(;c5R zwgZ1Rc%beE9PnmUQh&yV6v7`l90$aQ)9c0&TgSG~-M#3RuAFPH-|c%EKwHvU6PoWK zNV-6o(@>wb`r;U}>$CQm+KnwJ7|Ls+TK3NO;u&dL|Bxc^`|hQxzV<{yS*GMPrtIl2 z9$+HhTkz(4)pZU=Y}V*^;!~5UZJr~aIh25k3?^F5Hg!bYAO^OD$P~Wrh)g|s255X~ z6`a0%QKvmAp7qs25$L^pX)T>jI)5?&T>OaxnimC<=PkIi$b`uvHI?`(NpM-Web(NR zNgFxJpp!)JkO+|tSv`wGO?l*jWu6x4kAy7W0KFO^1MDgcMYlA9tAclY{}f#y>c<|Wd0SAS0I@%Z0xgvCS2zbbM)HX(>(`y3xE>mj+xIcw$qN1|uN^$S zb_kP&L8mTS#;KOXZvQ?b>G470Dn`LMZUWjS)ZOppcnZi@tvENYX?9kr;Fu*%_IIy} z3s?s;j0DV}*@$8|inxD}5ra1cOLaWzDpfRj%p!&D`K6NVu;65lCjO$%37EtW>Rm6 zEXiw`3T25%lquxZXplsF_dEa1A9FwFH|Lz|T-Q10eo$-BZ6Y4#8!_6pU2aR!#5V4X zN7I}2&U->Jv>y8X;o5+;$RI6-8MS1U9sR?Tne)wKBFE<(RFv;_0p`mq)ukHl z6R*EaoA-}ra@AqJ8{^PGYPqOo{2tYRDJJo|0OW0|wCX^oQ>TAvLy^=HWK{t=$@oy! zxvub?`Z1tP?Kg$Ckevd3*fVvquki?mQnGA*$)?KXprDU-{wrIO!A&k34#l-(`F)%J zjpL#i4UCQ5@!b~vo+M4_YOuDXBGzFo-|dWVeGu2&CyM7uCKi*-kfpWrdrt*q+WRg2 zQ(6>OnmPSTW^_X~(MS-9=dG{PdfKuaDXBbp=;WO%$@j_j5lptafj`UQ9cF14Hq);$ znHf|CtX}A@Y-N9rpvgm8PFjxo`M$SXb=G z5ZA&<__8-`H7R8SdcHOC{O;@dLXdgyu}7{;Ua3s&IfOkTmyCQ$hu#?ssDQo6siO6h z5YLW3M^%M|N01%6K_T4B;2jU8pc>)SGSHa|u4e(T6s7)pJ> z<6a@g&2I#HGkDU{8*6|LzL?X3Q-OhTI4aE-Lpguo;=>$r(1@0(n-%VKX>DdMbl#2> zerdqxvoW#Rt%8sZ$>-ns!z)v3YDR{;d@*r$xXq9Do(!|-k_M!DHJJ3O5CV~~n}b-t zNV;ZomYj&u-oBWNU47WCTX%b&RkwcEjly=NRS$o=k+pb1Ci&9}w5dZ-ghRy!#>L8V z$W`;HLa&yZTNv8z2%vqMZ7}`5>@0#zgGx*x_T&^}K07bT%KpBX8(|rV@ zv?Tt4VW(lc?a>UqulL=?fnULaKP&XInx(XeVEFpEI8$M90h>-xQTXCT3_bnAGEwCr zay&7HRsU{N39(w=-I5|Szj#8fWlX2|L=O32>;%I{A*(`z0jy(d&{O*l}icX&8A{X zPcPo>Gv!I;y<9--C$fC#-0z}e-7tS}s7y8%E$}Zg;7?(+5!EyFwyHcezD@1{_;y`HX(S>KL)iHRPX~jDrtiV);=Bn2|xBs{iMcpdC+uM z{9P34{b8$59i1e}UZ+EM-g4JB|B6@FIvfe}F=UT_9r!n;3!|}-0*fOCpD_odDs=hz z*ATt)6{nZ$-+Yg;Aw4masF6F=WuA4~K*v)HUP2EQ7bc7axDP1YwpY(>%20I&i&JG` z!T(Ft-e?H5D& ziFoc4Vs{oJZ)ElUPc%Kx?xxMzh$*Oi^84iIqcMc=JQ(l}BNC!WB=;Q<>7J zIhxZHtS?Y!WIlWym{@Yb^~v0<8lw~2YlEw9)L=G|yV05`zm=osAc%v#P!N&iRVj!k zNShYCsgtnmmuC!Dj}=wWkPUQ89Pr;WU<_>X?u<{2#b%xU#n#79_gXOSXuWM6Nv&wx zBJ2YSqwaV&y2dyIecWQXUDE2z(4z93)XwV}JbPC;JAKa5>tltMA{C1p3oEEVrc3F! zsKo1I+s5(^yjK`LF!ng=so>QaueP+V6@?iu1|@-iad7#eo(cz9GE%ucyK+pOImVpc zFOEgK4iZB*?2MEe^?hYty;Ugp(ZJUS6ld70ad@&Et06|skj5mf$4!(Nq9#jWXfi42OGAHDVmq+ zEI7r9O0(}tH5C_{Whq3Q4EE)NXP}D8$LEb8zMyV9=oI81hiXq&r_U=Aqxnf7SGOX} z+qa#tH%`rt=u;^5Ferb$`lk}AaeUJmS2CkeL^gill>6$-IhcR7dclU9VlXWL1uSer z^$u@3%l$e51p3V<3+=*hTCeR}zPS4yxoX)wUKJhwN#Iw0&I@o$8?Vo4pB4TRiZsqu z*$6(zgzfb=toMjOJRX5y7;8Gv4z5@eLXpW;CkKsNBx!-Cssv%|q=Zm=m3n9S?~xYK zF``(@`L)e1(efSJ&z_vy z{2o=Ci=9zqTs<;F{n!HY(U2+)-zHDC$ZHl-np^t! z%+<*w&xX4|b+F@)vzK=^vH_iz7-u)sbyhz&%A_~h!OsE_@wSV{B#7}g9`X03HA211}kb;i6ZJGv)$ zkAByNuCI*rb0drXb%O#&Mxv6jD=t{sWIq9d`3=SyJmSC&@K<_{3^@U|6^T`Z8zXm4 z9N)G`K&@SvT;&Nb+CfW5aacdYE8Sy3-U-(wN2x!?lJ1{}n)h-lcXXPJEE_mtlJ`WF z80B-v(H{}ken|ck^`pelzO7Omm&9;L)9YC2KsrtGrRX7Dx8_#LnCk+gncR$vg92?2 z!X6BN(*Z*0+Sx;jmWR378#TQ3O9G2p{Y$|bpqpCzqaub;hy3(m%%t>i9HRoQCeF>4 z9x~4*$36&<&>VW_?6q?$K>g=!;mhuSc6Bv}KG!ZD`Hj>9d8_K-hvy%Gnq`kFvwZNu z!c#6#B|EkmCRZss2|)s!qqwn^r4tiOktsQ-wZQs}@V2LbKuNXoj=*q#mY2AaG~J4E z41R3J8A4u~rSzallCe6hO~9qRo7CH_fzn(t=Otky!96~f1pS$SW)L$7lZ-6IZUsP= zdBHAQO3qtk$_YuE5#U0r*xu87Rkj&l<0=PiW!7<`#|UN|ouirEB>RYSbsJ>x${1=xr5JnPj;~9yrShWKPNBvL_}v`ujcd1J!WP#Ou0Z57BhRaMKLw ziGAHa`q4ih6>v=;w+d7iSq|O(BOM-a;JjSwy0u5ix5XSZ1+~2MeFU=9QZ2FYo^aDF z6|Dnn{rFG20nJ;7ii9nC-0CuMq-9?ewRSMU;EpxF$euYcFlGzr`?X-lS_A^quCGDx zfJSb?4MGWt<)%oi?f^E}u`uOv|2w(xIE`zDJL_91_&!bK`F22UDvQMdz!kh@iAn

    -d?*!@@(fvH!4c6lj&F!0F&+(=tgh*bol#8o9gp0w zAuSg=s)SXfcnK&4um0IvVS``CgC}Z=br@~?rH`0;{o{;d1FGF)oN;uIey;0Q zjHy(Tf8j7N+y$4heeqD*W(Xb$@9Rx1n_U1eA8J>d^i*e(hh4AR%GH91+!DHsT<5KW zfs<-{5~+IhqqcIqFphgZU||I`XsQl>44{2BZrz_TZ3bkd5>=ct4T;tN$b;cs&_*8D zsa&mT*K?Zax?{m;rE7~m=Mmn|Jo1)qa(xRIu|=+OMQI5<+iB5 z;XPa2Srd+o&DjLKuc9cbzF5cg+1}!qY#>5!gZ|hR6nzd`31M!G$-yKC$zwwjRj$~4 zTF>8DnVUUk+xnNJb6$OsA(_dMt9DC)E@BC{udmS?-zQ0D;fY5V#CoCmxc=1p2fjKG yw592)kU8k>Ipa%|G_sYQUuOGk6PFztUD^^HKeC$9kkM@mfe*n3^f;`268{hD1*Gl( delta 20682 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 Date: Thu, 9 May 2024 11:41:26 +0000 Subject: [PATCH 13/25] Template update for nf-core/tools version 2.14.1 --- .github/workflows/linting.yml | 1 - .nf-core.yml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index a3fb254..1fcafe8 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -20,7 +20,6 @@ jobs: uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 with: python-version: "3.12" - cache: "pip" - name: Install pre-commit run: pip install pre-commit diff --git a/.nf-core.yml b/.nf-core.yml index d6daa40..e0b85a7 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -1,2 +1,2 @@ repository_type: pipeline -nf_core_version: "2.14.0" +nf_core_version: "2.14.1" From 1fc55bba343d7a65160d1d1d9c7e638b91da96dd Mon Sep 17 00:00:00 2001 From: christopher-hakkaart Date: Fri, 31 May 2024 09:32:39 +0200 Subject: [PATCH 14/25] Change fastp to fq --- CITATIONS.md | 4 +- conf/modules.config | 6 +- conf/test.config | 2 - conf/test_full.config | 6 +- modules.json | 8 +- modules/nf-core/fastp/main.nf | 120 --- modules/nf-core/fastp/meta.yml | 75 -- modules/nf-core/fastp/tests/main.nf.test | 725 ------------------ modules/nf-core/fastp/tests/main.nf.test.snap | 330 -------- .../fastp/tests/nextflow.interleaved.config | 5 - .../fastp/tests/nextflow.save_failed.config | 5 - modules/nf-core/fastp/tests/tags.yml | 2 - .../{fastp => fq/lint}/environment.yml | 4 +- modules/nf-core/fq/lint/main.nf | 33 + modules/nf-core/fq/lint/meta.yml | 31 + modules/nf-core/fq/lint/tests/main.nf.test | 63 ++ .../nf-core/fq/lint/tests/main.nf.test.snap | 52 ++ modules/nf-core/fq/lint/tests/tags.yml | 2 + workflows/demo.nf | 20 +- 19 files changed, 200 insertions(+), 1293 deletions(-) delete mode 100644 modules/nf-core/fastp/main.nf delete mode 100644 modules/nf-core/fastp/meta.yml delete mode 100644 modules/nf-core/fastp/tests/main.nf.test delete mode 100644 modules/nf-core/fastp/tests/main.nf.test.snap delete mode 100644 modules/nf-core/fastp/tests/nextflow.interleaved.config delete mode 100644 modules/nf-core/fastp/tests/nextflow.save_failed.config delete mode 100644 modules/nf-core/fastp/tests/tags.yml rename modules/nf-core/{fastp => fq/lint}/environment.yml (62%) create mode 100644 modules/nf-core/fq/lint/main.nf create mode 100644 modules/nf-core/fq/lint/meta.yml create mode 100644 modules/nf-core/fq/lint/tests/main.nf.test create mode 100644 modules/nf-core/fq/lint/tests/main.nf.test.snap create mode 100644 modules/nf-core/fq/lint/tests/tags.yml diff --git a/CITATIONS.md b/CITATIONS.md index b5d0459..2edc275 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -14,9 +14,7 @@ > Andrews, S. (2010). FastQC: A Quality Control Tool for High Throughput Sequence Data [Online]. -- [fastp](https://www.ncbi.nlm.nih.gov/pubmed/30423086/) - - > Chen S, Zhou Y, Chen Y, Gu J. fastp: an ultra-fast all-in-one FASTQ preprocessor. Bioinformatics. 2018 Sep 1;34(17):i884-i890. doi: 10.1093/bioinformatics/bty560. PubMed PMID: 30423086; PubMed Central PMCID: PMC6129281. +- [fq](https://github.com/stjude-rust-labs/fq) - [MultiQC](https://pubmed.ncbi.nlm.nih.gov/27312411/) diff --git a/conf/modules.config b/conf/modules.config index 08b03f8..b9a8299 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -28,11 +28,11 @@ process { } - withName: 'FASTP' { + withName: 'FQ_LINT' { publishDir = [ - path: { "${params.outdir}/fastp/${meta.id}" }, + path: { "${params.outdir}/fq/${meta.id}" }, mode: params.publish_dir_mode, - pattern: "*.{html,json,log}" + pattern: "*.{txt}" ] } diff --git a/conf/test.config b/conf/test.config index 802af2b..0e7f044 100644 --- a/conf/test.config +++ b/conf/test.config @@ -22,6 +22,4 @@ params { // Input data input = 'https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/samplesheet/samplesheet_test_illumina_amplicon.csv' - // Genome references - genome = 'R64-1-1' } diff --git a/conf/test_full.config b/conf/test_full.config index 31a8ee5..6346afd 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -14,9 +14,7 @@ params { config_profile_name = 'Full test profile' config_profile_description = 'Full test dataset to check pipeline function' - // Input data for full size test - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/samplesheet/samplesheet_full_illumina_amplicon.csv' + // Input data + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/samplesheet/samplesheet_test_illumina_amplicon.csv' - // Genome references - genome = 'R64-1-1' } diff --git a/modules.json b/modules.json index a1e9750..ebbe0cd 100644 --- a/modules.json +++ b/modules.json @@ -5,14 +5,14 @@ "https://github.com/nf-core/modules.git": { "modules": { "nf-core": { - "fastp": { + "fastqc": { "branch": "master", - "git_sha": "95cf5fe0194c7bf5cb0e3027a2eb7e7c89385080", + "git_sha": "285a50500f9e02578d90b3ce6382ea3c30216acd", "installed_by": ["modules"] }, - "fastqc": { + "fq/lint": { "branch": "master", - "git_sha": "285a50500f9e02578d90b3ce6382ea3c30216acd", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["modules"] }, "multiqc": { diff --git a/modules/nf-core/fastp/main.nf b/modules/nf-core/fastp/main.nf deleted file mode 100644 index 4fc19b7..0000000 --- a/modules/nf-core/fastp/main.nf +++ /dev/null @@ -1,120 +0,0 @@ -process FASTP { - tag "$meta.id" - label 'process_medium' - - conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/fastp:0.23.4--h5f740d0_0' : - 'biocontainers/fastp:0.23.4--h5f740d0_0' }" - - input: - tuple val(meta), path(reads) - path adapter_fasta - val save_trimmed_fail - val save_merged - - output: - tuple val(meta), path('*.fastp.fastq.gz') , optional:true, emit: reads - tuple val(meta), path('*.json') , emit: json - tuple val(meta), path('*.html') , emit: html - tuple val(meta), path('*.log') , emit: log - path "versions.yml" , emit: versions - tuple val(meta), path('*.fail.fastq.gz') , optional:true, emit: reads_fail - tuple val(meta), path('*.merged.fastq.gz'), optional:true, emit: reads_merged - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - def adapter_list = adapter_fasta ? "--adapter_fasta ${adapter_fasta}" : "" - def fail_fastq = save_trimmed_fail && meta.single_end ? "--failed_out ${prefix}.fail.fastq.gz" : save_trimmed_fail && !meta.single_end ? "--failed_out ${prefix}.paired.fail.fastq.gz --unpaired1 ${prefix}_1.fail.fastq.gz --unpaired2 ${prefix}_2.fail.fastq.gz" : '' - // Added soft-links to original fastqs for consistent naming in MultiQC - // Use single ended for interleaved. Add --interleaved_in in config. - if ( task.ext.args?.contains('--interleaved_in') ) { - """ - [ ! -f ${prefix}.fastq.gz ] && ln -sf $reads ${prefix}.fastq.gz - - fastp \\ - --stdout \\ - --in1 ${prefix}.fastq.gz \\ - --thread $task.cpus \\ - --json ${prefix}.fastp.json \\ - --html ${prefix}.fastp.html \\ - $adapter_list \\ - $fail_fastq \\ - $args \\ - 2> >(tee ${prefix}.fastp.log >&2) \\ - | gzip -c > ${prefix}.fastp.fastq.gz - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - fastp: \$(fastp --version 2>&1 | sed -e "s/fastp //g") - END_VERSIONS - """ - } else if (meta.single_end) { - """ - [ ! -f ${prefix}.fastq.gz ] && ln -sf $reads ${prefix}.fastq.gz - - fastp \\ - --in1 ${prefix}.fastq.gz \\ - --out1 ${prefix}.fastp.fastq.gz \\ - --thread $task.cpus \\ - --json ${prefix}.fastp.json \\ - --html ${prefix}.fastp.html \\ - $adapter_list \\ - $fail_fastq \\ - $args \\ - 2> >(tee ${prefix}.fastp.log >&2) - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - fastp: \$(fastp --version 2>&1 | sed -e "s/fastp //g") - END_VERSIONS - """ - } else { - def merge_fastq = save_merged ? "-m --merged_out ${prefix}.merged.fastq.gz" : '' - """ - [ ! -f ${prefix}_1.fastq.gz ] && ln -sf ${reads[0]} ${prefix}_1.fastq.gz - [ ! -f ${prefix}_2.fastq.gz ] && ln -sf ${reads[1]} ${prefix}_2.fastq.gz - fastp \\ - --in1 ${prefix}_1.fastq.gz \\ - --in2 ${prefix}_2.fastq.gz \\ - --out1 ${prefix}_1.fastp.fastq.gz \\ - --out2 ${prefix}_2.fastp.fastq.gz \\ - --json ${prefix}.fastp.json \\ - --html ${prefix}.fastp.html \\ - $adapter_list \\ - $fail_fastq \\ - $merge_fastq \\ - --thread $task.cpus \\ - --detect_adapter_for_pe \\ - $args \\ - 2> >(tee ${prefix}.fastp.log >&2) - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - fastp: \$(fastp --version 2>&1 | sed -e "s/fastp //g") - END_VERSIONS - """ - } - - stub: - def prefix = task.ext.prefix ?: "${meta.id}" - def is_single_output = task.ext.args?.contains('--interleaved_in') || meta.single_end - def touch_reads = is_single_output ? "${prefix}.fastp.fastq.gz" : "${prefix}_1.fastp.fastq.gz ${prefix}_2.fastp.fastq.gz" - def touch_merged = (!is_single_output && save_merged) ? "touch ${prefix}.merged.fastq.gz" : "" - """ - touch $touch_reads - touch "${prefix}.fastp.json" - touch "${prefix}.fastp.html" - touch "${prefix}.fastp.log" - $touch_merged - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - fastp: \$(fastp --version 2>&1 | sed -e "s/fastp //g") - END_VERSIONS - """ -} diff --git a/modules/nf-core/fastp/meta.yml b/modules/nf-core/fastp/meta.yml deleted file mode 100644 index c22a16a..0000000 --- a/modules/nf-core/fastp/meta.yml +++ /dev/null @@ -1,75 +0,0 @@ -name: fastp -description: Perform adapter/quality trimming on sequencing reads -keywords: - - trimming - - quality control - - fastq -tools: - - fastp: - description: | - A tool designed to provide fast all-in-one preprocessing for FastQ files. This tool is developed in C++ with multithreading supported to afford high performance. - documentation: https://github.com/OpenGene/fastp - doi: 10.1093/bioinformatics/bty560 - licence: ["MIT"] -input: - - meta: - type: map - description: | - Groovy Map containing sample information. Use 'single_end: true' to specify single ended or interleaved FASTQs. Use 'single_end: false' for paired-end reads. - e.g. [ id:'test', single_end:false ] - - reads: - type: file - description: | - List of input FastQ files of size 1 and 2 for single-end and paired-end data, - respectively. If you wish to run interleaved paired-end data, supply as single-end data - but with `--interleaved_in` in your `modules.conf`'s `ext.args` for the module. - - adapter_fasta: - type: file - description: File in FASTA format containing possible adapters to remove. - pattern: "*.{fasta,fna,fas,fa}" - - save_trimmed_fail: - type: boolean - description: Specify true to save files that failed to pass trimming thresholds ending in `*.fail.fastq.gz` - - save_merged: - type: boolean - description: Specify true to save all merged reads to the a file ending in `*.merged.fastq.gz` -output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - reads: - type: file - description: The trimmed/modified/unmerged fastq reads - pattern: "*fastp.fastq.gz" - - json: - type: file - description: Results in JSON format - pattern: "*.json" - - html: - type: file - description: Results in HTML format - pattern: "*.html" - - log: - type: file - description: fastq log file - pattern: "*.log" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - - reads_fail: - type: file - description: Reads the failed the preprocessing - pattern: "*fail.fastq.gz" - - reads_merged: - type: file - description: Reads that were successfully merged - pattern: "*.{merged.fastq.gz}" -authors: - - "@drpatelh" - - "@kevinmenden" -maintainers: - - "@drpatelh" - - "@kevinmenden" diff --git a/modules/nf-core/fastp/tests/main.nf.test b/modules/nf-core/fastp/tests/main.nf.test deleted file mode 100644 index 6f1f489..0000000 --- a/modules/nf-core/fastp/tests/main.nf.test +++ /dev/null @@ -1,725 +0,0 @@ -nextflow_process { - - name "Test Process FASTP" - script "../main.nf" - process "FASTP" - tag "modules" - tag "modules_nfcore" - tag "fastp" - - test("test_fastp_single_end") { - - when { - params { - outdir = "$outputDir" - } - process { - """ - adapter_fasta = [] - save_trimmed_fail = false - save_merged = false - - input[0] = Channel.of([ - [ id:'test', single_end:true ], - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] - ]) - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged - """ - } - } - - then { - def html_text = [ "Q20 bases:12.922000 K (92.984097%)", - "single end (151 cycles)" ] - def log_text = [ "Q20 bases: 12922(92.9841%)", - "reads passed filter: 99" ] - def read_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", - "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", - "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE - { assert path(process.out.reads.get(0).get(1)).linesGzip.contains(read_line) } - } - }, - { html_text.each { html_part -> - { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } - } - }, - { assert snapshot(process.out.json).match("test_fastp_single_end_json") }, - { log_text.each { log_part -> - { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } - } - }, - { - assert snapshot( - ( - [process.out.reads[0][0].toString()] + // meta - process.out.reads.collect { file(it[1]).getName() } + - process.out.json.collect { file(it[1]).getName() } + - process.out.html.collect { file(it[1]).getName() } + - process.out.log.collect { file(it[1]).getName() } + - process.out.reads_fail.collect { file(it[1]).getName() } + - process.out.reads_merged.collect { file(it[1]).getName() } - ).sort() - ).match("test_fastp_single_end-_match") - }, - { assert snapshot(process.out.versions).match("versions_single_end") } - ) - } - } - - test("test_fastp_single_end-stub") { - - options '-stub' - - when { - params { - outdir = "$outputDir" - } - process { - """ - adapter_fasta = [] - save_trimmed_fail = false - save_merged = false - - input[0] = Channel.of([ - [ id:'test', single_end:true ], - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] - ]) - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged - """ - } - } - - then { - - assertAll( - { assert process.success }, - { - assert snapshot( - ( - [process.out.reads[0][0].toString()] + // meta - process.out.reads.collect { file(it[1]).getName() } + - process.out.json.collect { file(it[1]).getName() } + - process.out.html.collect { file(it[1]).getName() } + - process.out.log.collect { file(it[1]).getName() } + - process.out.reads_fail.collect { file(it[1]).getName() } + - process.out.reads_merged.collect { file(it[1]).getName() } - ).sort() - ).match("test_fastp_single_end-for_stub_match") - }, - { assert snapshot(process.out.versions).match("versions_single_end_stub") } - ) - } - } - - test("test_fastp_paired_end") { - - when { - params { - outdir = "$outputDir" - } - process { - """ - adapter_fasta = [] - save_trimmed_fail = false - save_merged = false - - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] - ]) - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged - """ - } - } - - then { - def html_text = [ "Q20 bases:25.719000 K (93.033098%)", - "The input has little adapter percentage (~0.000000%), probably it's trimmed before."] - def log_text = [ "No adapter detected for read1", - "Q30 bases: 12281(88.3716%)"] - def json_text = ['"passed_filter_reads": 198'] - def read1_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", - "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", - "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE - { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } - } - }, - { read2_lines.each { read2_line -> - { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } - } - }, - { html_text.each { html_part -> - { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } - } - }, - { json_text.each { json_part -> - { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } - } - }, - { log_text.each { log_part -> - { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } - } - }, - { - assert snapshot( - ( - [process.out.reads[0][0].toString()] + // meta - process.out.reads.collect { it[1].collect { item -> file(item).getName() } } + - process.out.json.collect { file(it[1]).getName() } + - process.out.html.collect { file(it[1]).getName() } + - process.out.log.collect { file(it[1]).getName() } + - process.out.reads_fail.collect { file(it[1]).getName() } + - process.out.reads_merged.collect { file(it[1]).getName() } - ).sort() - ).match("test_fastp_paired_end_match") - }, - { assert snapshot(process.out.versions).match("versions_paired_end") } - ) - } - } - - test("test_fastp_paired_end-stub") { - - options '-stub' - - when { - params { - outdir = "$outputDir" - } - process { - """ - adapter_fasta = [] - save_trimmed_fail = false - save_merged = false - - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] - ]) - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged - """ - } - } - - then { - assertAll( - { assert process.success }, - { - assert snapshot( - ( - [process.out.reads[0][0].toString()] + // meta - process.out.reads.collect { it[1].collect { item -> file(item).getName() } } + - process.out.json.collect { file(it[1]).getName() } + - process.out.html.collect { file(it[1]).getName() } + - process.out.log.collect { file(it[1]).getName() } + - process.out.reads_fail.collect { file(it[1]).getName() } + - process.out.reads_merged.collect { file(it[1]).getName() } - ).sort() - ).match("test_fastp_paired_end-for_stub_match") - }, - { assert snapshot(process.out.versions).match("versions_paired_end-stub") } - ) - } - } - - test("fastp test_fastp_interleaved") { - - config './nextflow.interleaved.config' - when { - params { - outdir = "$outputDir" - } - process { - """ - adapter_fasta = [] - save_trimmed_fail = false - save_merged = false - - input[0] = Channel.of([ - [ id:'test', single_end:true ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ] - ]) - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged - """ - } - } - - then { - def html_text = [ "Q20 bases:25.719000 K (93.033098%)", - "paired end (151 cycles + 151 cycles)"] - def log_text = [ "Q20 bases: 12922(92.9841%)", - "reads passed filter: 162"] - def read_lines = [ "@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", - "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", - "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE - { assert path(process.out.reads.get(0).get(1)).linesGzip.contains(read_line) } - } - }, - { html_text.each { html_part -> - { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } - } - }, - { assert snapshot(process.out.json).match("fastp test_fastp_interleaved_json") }, - { log_text.each { log_part -> - { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } - } - }, - { - assert snapshot( - ( - [process.out.reads[0][0].toString()] + // meta - process.out.reads.collect { file(it[1]).getName() } + - process.out.json.collect { file(it[1]).getName() } + - process.out.html.collect { file(it[1]).getName() } + - process.out.log.collect { file(it[1]).getName() } + - process.out.reads_fail.collect { file(it[1]).getName() } + - process.out.reads_merged.collect { file(it[1]).getName() } - ).sort() - ).match("test_fastp_interleaved-_match") - }, - { assert snapshot(process.out.versions).match("versions_interleaved") } - ) - } - } - - test("fastp test_fastp_interleaved-stub") { - - options '-stub' - - config './nextflow.interleaved.config' - when { - params { - outdir = "$outputDir" - } - process { - """ - adapter_fasta = [] - save_trimmed_fail = false - save_merged = false - - input[0] = Channel.of([ - [ id:'test', single_end:true ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ] - ]) - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged - """ - } - } - - then { - assertAll( - { assert process.success }, - { - assert snapshot( - ( - [process.out.reads[0][0].toString()] + // meta - process.out.reads.collect { file(it[1]).getName() } + - process.out.json.collect { file(it[1]).getName() } + - process.out.html.collect { file(it[1]).getName() } + - process.out.log.collect { file(it[1]).getName() } + - process.out.reads_fail.collect { file(it[1]).getName() } + - process.out.reads_merged.collect { file(it[1]).getName() } - ).sort() - ).match("test_fastp_interleaved-for_stub_match") - }, - { assert snapshot(process.out.versions).match("versions_interleaved-stub") } - ) - } - } - - test("test_fastp_single_end_trim_fail") { - - when { - params { - outdir = "$outputDir" - } - process { - """ - adapter_fasta = [] - save_trimmed_fail = true - save_merged = false - - input[0] = Channel.of([ - [ id:'test', single_end:true ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] - ]) - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged - """ - } - } - - then { - def html_text = [ "Q20 bases:12.922000 K (92.984097%)", - "single end (151 cycles)"] - def log_text = [ "Q20 bases: 12922(92.9841%)", - "reads passed filter: 99" ] - def read_lines = [ "@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", - "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", - "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE - { assert path(process.out.reads.get(0).get(1)).linesGzip.contains(read_line) } - } - }, - { failed_read_lines.each { failed_read_line -> - { assert path(process.out.reads_fail.get(0).get(1)).linesGzip.contains(failed_read_line) } - } - }, - { html_text.each { html_part -> - { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } - } - }, - { assert snapshot(process.out.json).match("test_fastp_single_end_trim_fail_json") }, - { log_text.each { log_part -> - { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } - } - }, - { assert snapshot(process.out.versions).match("versions_single_end_trim_fail") } - ) - } - } - - test("test_fastp_paired_end_trim_fail") { - - config './nextflow.save_failed.config' - when { - params { - outdir = "$outputDir" - } - process { - """ - adapter_fasta = [] - save_trimmed_fail = true - save_merged = false - - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true)] - ]) - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged - """ - } - } - - then { - def html_text = [ "Q20 bases:25.719000 K (93.033098%)", - "The input has little adapter percentage (~0.000000%), probably it's trimmed before."] - def log_text = [ "No adapter detected for read1", - "Q30 bases: 12281(88.3716%)"] - def json_text = ['"passed_filter_reads": 162'] - def read1_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", - "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", - "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE - { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } - } - }, - { read2_lines.each { read2_line -> - { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } - } - }, - { failed_read2_lines.each { failed_read2_line -> - { assert path(process.out.reads_fail.get(0).get(1).get(2)).linesGzip.contains(failed_read2_line) } - } - }, - { html_text.each { html_part -> - { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } - } - }, - { json_text.each { json_part -> - { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } - } - }, - { log_text.each { log_part -> - { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } - } - }, - { assert snapshot(process.out.versions).match("versions_paired_end_trim_fail") } - ) - } - } - - test("test_fastp_paired_end_merged") { - - when { - params { - outdir = "$outputDir" - } - process { - """ - adapter_fasta = [] - save_trimmed_fail = false - save_merged = true - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] - ]) - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged - """ - } - } - - then { - def html_text = [ "

    "] - def log_text = [ "Merged and filtered:", - "total reads: 75", - "total bases: 13683"] - def json_text = ['"merged_and_filtered": {', '"total_reads": 75', '"total_bases": 13683'] - def read1_lines = [ "@ERR5069949.1066259 NS500628:121:HK3MMAFX2:1:11312:18369:8333/1", - "CCTTATGACAGCAAGAACTGTGTATGATGATGGTGCTAGGAGAGTGTGGACACTTATGAATGTCTTGACACTCGTTTATAAAGTTTATTATGGTAATGCTTTAGATCAAGCCATTTCCATGTGGGCTCTTATAATCTCTGTTACTTC", - "AAAAAEAEEAEEEEEEEEEEEEEEEEAEEEEAEEEEEEEEAEEEEEEEEEEEEEEEEE/EAEEEEEE/6EEEEEEEEEEAEEAEEE/EE/AEEAEEEEEAEEEA/EEAAEAE - { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } - } - }, - { read2_lines.each { read2_line -> - { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } - } - }, - { read_merged_lines.each { read_merged_line -> - { assert path(process.out.reads_merged.get(0).get(1)).linesGzip.contains(read_merged_line) } - } - }, - { html_text.each { html_part -> - { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } - } - }, - { json_text.each { json_part -> - { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } - } - }, - { log_text.each { log_part -> - { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } - } - }, - { - assert snapshot( - ( - [process.out.reads[0][0].toString()] + // meta - process.out.reads.collect { it[1].collect { item -> file(item).getName() } } + - process.out.json.collect { file(it[1]).getName() } + - process.out.html.collect { file(it[1]).getName() } + - process.out.log.collect { file(it[1]).getName() } + - process.out.reads_fail.collect { file(it[1]).getName() } + - process.out.reads_merged.collect { file(it[1]).getName() } - ).sort() - ).match("test_fastp_paired_end_merged_match") - }, - { assert snapshot(process.out.versions).match("versions_paired_end_merged") } - ) - } - } - - test("test_fastp_paired_end_merged-stub") { - - options '-stub' - - when { - params { - outdir = "$outputDir" - } - process { - """ - adapter_fasta = [] - save_trimmed_fail = false - save_merged = true - - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] - ]) - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged - """ - } - } - - then { - assertAll( - { assert process.success }, - { - assert snapshot( - ( - [process.out.reads[0][0].toString()] + // meta - process.out.reads.collect { it[1].collect { item -> file(item).getName() } } + - process.out.json.collect { file(it[1]).getName() } + - process.out.html.collect { file(it[1]).getName() } + - process.out.log.collect { file(it[1]).getName() } + - process.out.reads_fail.collect { file(it[1]).getName() } + - process.out.reads_merged.collect { file(it[1]).getName() } - ).sort() - ).match("test_fastp_paired_end_merged-for_stub_match") - }, - { assert snapshot(process.out.versions).match("versions_paired_end_merged_stub") } - ) - } - } - - test("test_fastp_paired_end_merged_adapterlist") { - - when { - params { - outdir = "$outputDir" - } - process { - """ - adapter_fasta = Channel.of([ file(params.modules_testdata_base_path + 'delete_me/fastp/adapters.fasta', checkIfExists: true) ]) - save_trimmed_fail = false - save_merged = true - - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] - ]) - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged - """ - } - } - - then { - def html_text = [ "
    "] - def log_text = [ "Merged and filtered:", - "total reads: 75", - "total bases: 13683"] - def json_text = ['"merged_and_filtered": {', '"total_reads": 75', '"total_bases": 13683',"--adapter_fasta"] - def read1_lines = ["@ERR5069949.1066259 NS500628:121:HK3MMAFX2:1:11312:18369:8333/1", - "CCTTATGACAGCAAGAACTGTGTATGATGATGGTGCTAGGAGAGTGTGGACACTTATGAATGTCTTGACACTCGTTTATAAAGTTTATTATGGTAATGCTTTAGATCAAGCCATTTCCATGTGGGCTCTTATAATCTCTGTTACTTC", - "AAAAAEAEEAEEEEEEEEEEEEEEEEAEEEEAEEEEEEEEAEEEEEEEEEEEEEEEEE/EAEEEEEE/6EEEEEEEEEEAEEAEEE/EE/AEEAEEEEEAEEEA/EEAAEAE - { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } - } - }, - { read2_lines.each { read2_line -> - { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } - } - }, - { read_merged_lines.each { read_merged_line -> - { assert path(process.out.reads_merged.get(0).get(1)).linesGzip.contains(read_merged_line) } - } - }, - { html_text.each { html_part -> - { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } - } - }, - { json_text.each { json_part -> - { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } - } - }, - { log_text.each { log_part -> - { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } - } - }, - { assert snapshot(process.out.versions).match("versions_paired_end_merged_adapterlist") } - ) - } - } -} diff --git a/modules/nf-core/fastp/tests/main.nf.test.snap b/modules/nf-core/fastp/tests/main.nf.test.snap deleted file mode 100644 index 3e87628..0000000 --- a/modules/nf-core/fastp/tests/main.nf.test.snap +++ /dev/null @@ -1,330 +0,0 @@ -{ - "fastp test_fastp_interleaved_json": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.json:md5,b24e0624df5cc0b11cd5ba21b726fb22" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-18T16:19:15.063001" - }, - "test_fastp_paired_end_merged-for_stub_match": { - "content": [ - [ - [ - "test_1.fastp.fastq.gz", - "test_2.fastp.fastq.gz" - ], - "test.fastp.html", - "test.fastp.json", - "test.fastp.log", - "test.merged.fastq.gz", - "{id=test, single_end=false}" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-01-17T18:10:13.467574" - }, - "versions_interleaved": { - "content": [ - [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-01T11:56:24.615634793" - }, - "test_fastp_single_end_json": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.json:md5,c852d7a6dba5819e4ac8d9673bedcacc" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-18T16:18:43.526412" - }, - "versions_paired_end": { - "content": [ - [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-01T11:55:42.333545689" - }, - "test_fastp_paired_end_match": { - "content": [ - [ - [ - "test_1.fastp.fastq.gz", - "test_2.fastp.fastq.gz" - ], - "test.fastp.html", - "test.fastp.json", - "test.fastp.log", - "{id=test, single_end=false}" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-01T12:03:06.431833729" - }, - "test_fastp_interleaved-_match": { - "content": [ - [ - "test.fastp.fastq.gz", - "test.fastp.html", - "test.fastp.json", - "test.fastp.log", - "{id=test, single_end=true}" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-18T16:19:15.111894" - }, - "test_fastp_paired_end_merged_match": { - "content": [ - [ - [ - "test_1.fastp.fastq.gz", - "test_2.fastp.fastq.gz" - ], - "test.fastp.html", - "test.fastp.json", - "test.fastp.log", - "test.merged.fastq.gz", - "{id=test, single_end=false}" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-01T12:08:44.496251446" - }, - "versions_single_end_stub": { - "content": [ - [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-01T11:55:27.354051299" - }, - "versions_interleaved-stub": { - "content": [ - [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-01T11:56:46.535528418" - }, - "versions_single_end_trim_fail": { - "content": [ - [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-01T11:59:03.724591407" - }, - "test_fastp_paired_end-for_stub_match": { - "content": [ - [ - [ - "test_1.fastp.fastq.gz", - "test_2.fastp.fastq.gz" - ], - "test.fastp.html", - "test.fastp.json", - "test.fastp.log", - "{id=test, single_end=false}" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-01-17T18:07:15.398827" - }, - "versions_paired_end-stub": { - "content": [ - [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-01T11:56:06.50017282" - }, - "versions_single_end": { - "content": [ - [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-01T11:55:07.67921647" - }, - "versions_paired_end_merged_stub": { - "content": [ - [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-01T11:59:47.350653154" - }, - "test_fastp_interleaved-for_stub_match": { - "content": [ - [ - "test.fastp.fastq.gz", - "test.fastp.html", - "test.fastp.json", - "test.fastp.log", - "{id=test, single_end=true}" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-01-17T18:08:06.127974" - }, - "versions_paired_end_trim_fail": { - "content": [ - [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-01T11:59:18.140484878" - }, - "test_fastp_single_end-for_stub_match": { - "content": [ - [ - "test.fastp.fastq.gz", - "test.fastp.html", - "test.fastp.json", - "test.fastp.log", - "{id=test, single_end=true}" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-01-17T18:06:00.244202" - }, - "test_fastp_single_end-_match": { - "content": [ - [ - "test.fastp.fastq.gz", - "test.fastp.html", - "test.fastp.json", - "test.fastp.log", - "{id=test, single_end=true}" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-18T16:18:43.580336" - }, - "versions_paired_end_merged_adapterlist": { - "content": [ - [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-01T12:05:37.845370554" - }, - "versions_paired_end_merged": { - "content": [ - [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-01T11:59:32.860543858" - }, - "test_fastp_single_end_trim_fail_json": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.json:md5,9a7ee180f000e8d00c7fb67f06293eb5" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-01-17T18:08:41.942317" - } -} \ No newline at end of file diff --git a/modules/nf-core/fastp/tests/nextflow.interleaved.config b/modules/nf-core/fastp/tests/nextflow.interleaved.config deleted file mode 100644 index 4be8dbd..0000000 --- a/modules/nf-core/fastp/tests/nextflow.interleaved.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - withName: FASTP { - ext.args = "--interleaved_in -e 30" - } -} diff --git a/modules/nf-core/fastp/tests/nextflow.save_failed.config b/modules/nf-core/fastp/tests/nextflow.save_failed.config deleted file mode 100644 index 53b61b0..0000000 --- a/modules/nf-core/fastp/tests/nextflow.save_failed.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - withName: FASTP { - ext.args = "-e 30" - } -} diff --git a/modules/nf-core/fastp/tests/tags.yml b/modules/nf-core/fastp/tests/tags.yml deleted file mode 100644 index c1afcce..0000000 --- a/modules/nf-core/fastp/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -fastp: - - modules/nf-core/fastp/** diff --git a/modules/nf-core/fastp/environment.yml b/modules/nf-core/fq/lint/environment.yml similarity index 62% rename from modules/nf-core/fastp/environment.yml rename to modules/nf-core/fq/lint/environment.yml index 70389e6..66145f4 100644 --- a/modules/nf-core/fastp/environment.yml +++ b/modules/nf-core/fq/lint/environment.yml @@ -1,7 +1,7 @@ -name: fastp +name: fq_lint channels: - conda-forge - bioconda - defaults dependencies: - - bioconda::fastp=0.23.4 + - bioconda::fq=0.9.1 diff --git a/modules/nf-core/fq/lint/main.nf b/modules/nf-core/fq/lint/main.nf new file mode 100644 index 0000000..efdb254 --- /dev/null +++ b/modules/nf-core/fq/lint/main.nf @@ -0,0 +1,33 @@ +process FQ_LINT { + tag "$meta.id" + label 'process_low' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/fq:0.9.1--h9ee0642_0': + 'biocontainers/fq:0.9.1--h9ee0642_0' }" + + input: + tuple val(meta), path(fastq) + + output: + tuple val(meta), path("*.fq_lint.txt"), emit: lint + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + fq lint \\ + $args \\ + $fastq > ${prefix}.fq_lint.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + fq: \$(echo \$(fq lint --version | sed 's/fq-lint //g')) + END_VERSIONS + """ +} diff --git a/modules/nf-core/fq/lint/meta.yml b/modules/nf-core/fq/lint/meta.yml new file mode 100644 index 0000000..aaa7caa --- /dev/null +++ b/modules/nf-core/fq/lint/meta.yml @@ -0,0 +1,31 @@ +name: "fq_lint" +description: fq lint is a FASTQ file pair validator. +keywords: + - lint + - fastq +tools: + - "fq": + description: "fq is a library to generate and validate FASTQ file pairs." + homepage: "https://github.com/stjude-rust-labs/fq" + documentation: "https://github.com/stjude-rust-labs/fq" + tool_dev_url: "https://github.com/stjude-rust-labs/fq" + licence: "['MIT']" +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - fastq: + type: file + description: FASTQ file list + pattern: "*.fastq{,.gz}" +output: + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@adamrtalbot" +maintainers: + - "@adamrtalbot" diff --git a/modules/nf-core/fq/lint/tests/main.nf.test b/modules/nf-core/fq/lint/tests/main.nf.test new file mode 100644 index 0000000..bd83324 --- /dev/null +++ b/modules/nf-core/fq/lint/tests/main.nf.test @@ -0,0 +1,63 @@ +nextflow_process { + + name "Test Process FQ_LINT" + script "../main.nf" + process "FQ_LINT" + + tag "modules" + tag "modules_nfcore" + tag "fq" + tag "fq/lint" + + test("test_fq_lint_success") { + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ [ id:'test', single_end:false ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ] + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert process.out.lint.get(0).get(1) ==~ ".*/test.fq_lint.txt" }, + { assert path(process.out.lint.get(0).get(1)).getText().contains("fq-lint start") }, + { assert path(process.out.lint.get(0).get(1)).getText().contains("read 100 records") }, + { assert path(process.out.lint.get(0).get(1)).getText().contains("fq-lint end") }, + ) + } + + } + + test("test_fq_lint_fail") { + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ [ id:'test', single_end:false ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), + file(params.test_data['candidatus_portiera_aleyrodidarum']['illumina']['test_2_fastq_gz'], checkIfExists: true) ] + ] + """ + } + } + + then { + assertAll ( + { assert !process.success }, + { assert snapshot(process.out).match() }, + ) + } + + } + +} diff --git a/modules/nf-core/fq/lint/tests/main.nf.test.snap b/modules/nf-core/fq/lint/tests/main.nf.test.snap new file mode 100644 index 0000000..18be683 --- /dev/null +++ b/modules/nf-core/fq/lint/tests/main.nf.test.snap @@ -0,0 +1,52 @@ +{ + "test_fq_lint_fail": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "lint": [ + + ], + "versions": [ + + ] + } + ], + "timestamp": "2023-10-17T11:27:49.533776" + }, + "test_fq_lint_success": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fq_lint.txt:md5,ad97318ef85cf80dcc6312cfa726709c" + ] + ], + "1": [ + "versions.yml:md5,10ce0730904e55dc8827a894c7042c8c" + ], + "lint": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fq_lint.txt:md5,ad97318ef85cf80dcc6312cfa726709c" + ] + ], + "versions": [ + "versions.yml:md5,10ce0730904e55dc8827a894c7042c8c" + ] + } + ], + "timestamp": "2023-10-17T11:27:38.071998" + } +} \ No newline at end of file diff --git a/modules/nf-core/fq/lint/tests/tags.yml b/modules/nf-core/fq/lint/tests/tags.yml new file mode 100644 index 0000000..9c9c323 --- /dev/null +++ b/modules/nf-core/fq/lint/tests/tags.yml @@ -0,0 +1,2 @@ +fq/lint: + - modules/nf-core/fq/lint/** diff --git a/workflows/demo.nf b/workflows/demo.nf index 77db437..ba02e41 100644 --- a/workflows/demo.nf +++ b/workflows/demo.nf @@ -5,7 +5,7 @@ */ include { FASTQC } from '../modules/nf-core/fastqc/main' -include { FASTP } from '../modules/nf-core/fastp/main' +include { FQ_LINT } from '../modules/nf-core/fq/lint/main' include { MULTIQC } from '../modules/nf-core/multiqc/main' include { paramsSummaryMap } from 'plugin/nf-validation' include { paramsSummaryMultiqc } from '../subworkflows/nf-core/utils_nfcore_pipeline' @@ -29,7 +29,7 @@ workflow DEMO { ch_multiqc_files = Channel.empty() // - // MODULE: Run FastQC + // MODULE: Run FASTQC // FASTQC ( ch_samplesheet @@ -38,18 +38,12 @@ workflow DEMO { ch_versions = ch_versions.mix(FASTQC.out.versions.first()) // - // MODULE: Run Fastp + // MODULE: Run FQ_LINT // - ch_adapters = params.adapters ? params.adapters : [] - - FASTP ( - ch_samplesheet, - ch_adapters, - params.save_trimmed_fail, - params.save_merged + FQ_LINT ( + ch_samplesheet ) - ch_multiqc_files = ch_multiqc_files.mix(FASTP.out.json.collect{it[1]}.ifEmpty([])) - ch_versions = ch_versions.mix(FASTP.out.versions.first()) + ch_versions = ch_versions.mix(FQ_LINT.out.versions.first()) // // Collate and save software versions @@ -59,7 +53,7 @@ workflow DEMO { .set { ch_collated_versions } // - // MODULE: MultiQC + // MODULE: MULTIQC // ch_multiqc_config = Channel.fromPath("$projectDir/assets/multiqc_config.yml", checkIfExists: true) ch_multiqc_custom_config = params.multiqc_config ? Channel.fromPath(params.multiqc_config, checkIfExists: true) : Channel.empty() From f1eb416e6b2d9dcd7c60edaa08a13eb295dc99cd Mon Sep 17 00:00:00 2001 From: christopher-hakkaart Date: Fri, 31 May 2024 12:25:18 +0200 Subject: [PATCH 15/25] Change module to Seqtk --- modules.json | 5 ++ modules/nf-core/seqtk/trim/environment.yml | 7 ++ modules/nf-core/seqtk/trim/main.nf | 38 +++++++++ modules/nf-core/seqtk/trim/meta.yml | 44 +++++++++++ modules/nf-core/seqtk/trim/tests/main.nf.test | 65 ++++++++++++++++ .../seqtk/trim/tests/main.nf.test.snap | 78 +++++++++++++++++++ modules/nf-core/seqtk/trim/tests/tags.yml | 2 + workflows/demo.nf | 6 +- 8 files changed, 242 insertions(+), 3 deletions(-) create mode 100644 modules/nf-core/seqtk/trim/environment.yml create mode 100644 modules/nf-core/seqtk/trim/main.nf create mode 100644 modules/nf-core/seqtk/trim/meta.yml create mode 100644 modules/nf-core/seqtk/trim/tests/main.nf.test create mode 100644 modules/nf-core/seqtk/trim/tests/main.nf.test.snap create mode 100644 modules/nf-core/seqtk/trim/tests/tags.yml diff --git a/modules.json b/modules.json index ebbe0cd..d8a849e 100644 --- a/modules.json +++ b/modules.json @@ -19,6 +19,11 @@ "branch": "master", "git_sha": "b7ebe95761cd389603f9cc0e0dc384c0f663815a", "installed_by": ["modules"] + }, + "seqtk/trim": { + "branch": "master", + "git_sha": "71c669747731cbc360dc220069c9f83015558c07", + "installed_by": ["modules"] } } }, diff --git a/modules/nf-core/seqtk/trim/environment.yml b/modules/nf-core/seqtk/trim/environment.yml new file mode 100644 index 0000000..389a3a9 --- /dev/null +++ b/modules/nf-core/seqtk/trim/environment.yml @@ -0,0 +1,7 @@ +name: seqtk_trim +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::seqtk=1.4 diff --git a/modules/nf-core/seqtk/trim/main.nf b/modules/nf-core/seqtk/trim/main.nf new file mode 100644 index 0000000..0f7e4d7 --- /dev/null +++ b/modules/nf-core/seqtk/trim/main.nf @@ -0,0 +1,38 @@ +process SEQTK_TRIM { + tag "$meta.id" + label 'process_low' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/seqtk:1.4--he4a0461_1' : + 'biocontainers/seqtk:1.4--he4a0461_1' }" + + input: + tuple val(meta), path(reads) + + output: + tuple val(meta), path("*.fastq.gz"), emit: reads + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + printf "%s\\n" $reads | while read f; + do + seqtk \\ + trimfq \\ + $args \\ + \$f \\ + | gzip --no-name > ${prefix}_\$(basename \$f) + done + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + seqtk: \$(echo \$(seqtk 2>&1) | sed 's/^.*Version: //; s/ .*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/seqtk/trim/meta.yml b/modules/nf-core/seqtk/trim/meta.yml new file mode 100644 index 0000000..1177057 --- /dev/null +++ b/modules/nf-core/seqtk/trim/meta.yml @@ -0,0 +1,44 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/yaml-schema.json +name: seqtk_trim +description: Trim low quality bases from FastQ files +keywords: + - trimfq + - fastq + - seqtk +tools: + - "seqtk": + description: "Seqtk is a fast and lightweight tool for processing sequences in the FASTA or FASTQ format" + homepage: https://github.com/lh3/seqtk + documentation: https://docs.csc.fi/apps/seqtk/ + tool_dev_url: https://github.com/lh3/seqtk + licence: ["MIT"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: List of input FastQ files + pattern: "*.{fastq.gz}" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - reads: + type: file + description: Filtered FastQ files + pattern: "*.{fastq.gz}" + +authors: + - "@laramiellindsey" diff --git a/modules/nf-core/seqtk/trim/tests/main.nf.test b/modules/nf-core/seqtk/trim/tests/main.nf.test new file mode 100644 index 0000000..d99b6b2 --- /dev/null +++ b/modules/nf-core/seqtk/trim/tests/main.nf.test @@ -0,0 +1,65 @@ +nextflow_process { + + name "Test Process SEQTK_TRIM" + script "modules/nf-core/seqtk/trim/main.nf" + process "SEQTK_TRIM" + + tag "modules" + tag "modules_nfcore" + tag "seqtk" + tag "seqtk/trim" + + test("Single-end") { + + when { + params { + outdir = $outputDir + } + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match()} + ) + } + + } + +test("Paired-end") { + + when { + params { + outdir = $outputDir + } + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) + ] + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match()} + ) + } + + } + +} diff --git a/modules/nf-core/seqtk/trim/tests/main.nf.test.snap b/modules/nf-core/seqtk/trim/tests/main.nf.test.snap new file mode 100644 index 0000000..da181dc --- /dev/null +++ b/modules/nf-core/seqtk/trim/tests/main.nf.test.snap @@ -0,0 +1,78 @@ +{ + "Single-end": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test_test_1.fastq.gz:md5,4161df271f9bfcd25d5845a1e220dbec" + ] + ], + "1": [ + "versions.yml:md5,d061ca0231d089b087e22d2001cd7c32" + ], + "reads": [ + [ + { + "id": "test", + "single_end": true + }, + "test_test_1.fastq.gz:md5,4161df271f9bfcd25d5845a1e220dbec" + ] + ], + "versions": [ + "versions.yml:md5,d061ca0231d089b087e22d2001cd7c32" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-03T06:10:55.544977" + }, + "Paired-end": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_test_1.fastq.gz:md5,4161df271f9bfcd25d5845a1e220dbec", + "test_test_2.fastq.gz:md5,2ebae722295ea66d84075a3b042e2b42" + ] + ] + ], + "1": [ + "versions.yml:md5,d061ca0231d089b087e22d2001cd7c32" + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_test_1.fastq.gz:md5,4161df271f9bfcd25d5845a1e220dbec", + "test_test_2.fastq.gz:md5,2ebae722295ea66d84075a3b042e2b42" + ] + ] + ], + "versions": [ + "versions.yml:md5,d061ca0231d089b087e22d2001cd7c32" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-05-03T06:11:38.487227" + } +} \ No newline at end of file diff --git a/modules/nf-core/seqtk/trim/tests/tags.yml b/modules/nf-core/seqtk/trim/tests/tags.yml new file mode 100644 index 0000000..250a138 --- /dev/null +++ b/modules/nf-core/seqtk/trim/tests/tags.yml @@ -0,0 +1,2 @@ +seqtk/trim: + - "modules/nf-core/seqtk/trim/**" diff --git a/workflows/demo.nf b/workflows/demo.nf index ba02e41..9fb4e72 100644 --- a/workflows/demo.nf +++ b/workflows/demo.nf @@ -5,7 +5,7 @@ */ include { FASTQC } from '../modules/nf-core/fastqc/main' -include { FQ_LINT } from '../modules/nf-core/fq/lint/main' +include { SEQTK_TRIM } from '../modules/nf-core/seqtk/trim/main' include { MULTIQC } from '../modules/nf-core/multiqc/main' include { paramsSummaryMap } from 'plugin/nf-validation' include { paramsSummaryMultiqc } from '../subworkflows/nf-core/utils_nfcore_pipeline' @@ -40,10 +40,10 @@ workflow DEMO { // // MODULE: Run FQ_LINT // - FQ_LINT ( + SEQTK_TRIM ( ch_samplesheet ) - ch_versions = ch_versions.mix(FQ_LINT.out.versions.first()) + ch_versions = ch_versions.mix(SEQTK_TRIM.out.versions.first()) // // Collate and save software versions From bcc256a0c71186462a96a51e07196b04a13ed14a Mon Sep 17 00:00:00 2001 From: christopher-hakkaart Date: Fri, 31 May 2024 12:38:33 +0200 Subject: [PATCH 16/25] Add skip param --- CITATIONS.md | 2 +- modules.json | 31 +++++---- modules/nf-core/fq/lint/environment.yml | 7 --- modules/nf-core/fq/lint/main.nf | 33 ---------- modules/nf-core/fq/lint/meta.yml | 31 --------- modules/nf-core/fq/lint/tests/main.nf.test | 63 ------------------- .../nf-core/fq/lint/tests/main.nf.test.snap | 52 --------------- modules/nf-core/fq/lint/tests/tags.yml | 2 - nextflow.config | 6 +- nextflow_schema.json | 27 -------- workflows/demo.nf | 12 ++-- 11 files changed, 29 insertions(+), 237 deletions(-) delete mode 100644 modules/nf-core/fq/lint/environment.yml delete mode 100644 modules/nf-core/fq/lint/main.nf delete mode 100644 modules/nf-core/fq/lint/meta.yml delete mode 100644 modules/nf-core/fq/lint/tests/main.nf.test delete mode 100644 modules/nf-core/fq/lint/tests/main.nf.test.snap delete mode 100644 modules/nf-core/fq/lint/tests/tags.yml diff --git a/CITATIONS.md b/CITATIONS.md index 2edc275..934aa07 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -14,7 +14,7 @@ > Andrews, S. (2010). FastQC: A Quality Control Tool for High Throughput Sequence Data [Online]. -- [fq](https://github.com/stjude-rust-labs/fq) +- [seqtk](https://github.com/lh3/seqtk) - [MultiQC](https://pubmed.ncbi.nlm.nih.gov/27312411/) diff --git a/modules.json b/modules.json index d8a849e..4634b34 100644 --- a/modules.json +++ b/modules.json @@ -8,22 +8,23 @@ "fastqc": { "branch": "master", "git_sha": "285a50500f9e02578d90b3ce6382ea3c30216acd", - "installed_by": ["modules"] - }, - "fq/lint": { - "branch": "master", - "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "multiqc": { "branch": "master", "git_sha": "b7ebe95761cd389603f9cc0e0dc384c0f663815a", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "seqtk/trim": { "branch": "master", "git_sha": "71c669747731cbc360dc220069c9f83015558c07", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] } } }, @@ -32,20 +33,26 @@ "utils_nextflow_pipeline": { "branch": "master", "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "utils_nfcore_pipeline": { "branch": "master", "git_sha": "92de218a329bfc9a9033116eb5f65fd270e72ba3", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "utils_nfvalidation_plugin": { "branch": "master", "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] } } } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/fq/lint/environment.yml b/modules/nf-core/fq/lint/environment.yml deleted file mode 100644 index 66145f4..0000000 --- a/modules/nf-core/fq/lint/environment.yml +++ /dev/null @@ -1,7 +0,0 @@ -name: fq_lint -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::fq=0.9.1 diff --git a/modules/nf-core/fq/lint/main.nf b/modules/nf-core/fq/lint/main.nf deleted file mode 100644 index efdb254..0000000 --- a/modules/nf-core/fq/lint/main.nf +++ /dev/null @@ -1,33 +0,0 @@ -process FQ_LINT { - tag "$meta.id" - label 'process_low' - - conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/fq:0.9.1--h9ee0642_0': - 'biocontainers/fq:0.9.1--h9ee0642_0' }" - - input: - tuple val(meta), path(fastq) - - output: - tuple val(meta), path("*.fq_lint.txt"), emit: lint - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - """ - fq lint \\ - $args \\ - $fastq > ${prefix}.fq_lint.txt - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - fq: \$(echo \$(fq lint --version | sed 's/fq-lint //g')) - END_VERSIONS - """ -} diff --git a/modules/nf-core/fq/lint/meta.yml b/modules/nf-core/fq/lint/meta.yml deleted file mode 100644 index aaa7caa..0000000 --- a/modules/nf-core/fq/lint/meta.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: "fq_lint" -description: fq lint is a FASTQ file pair validator. -keywords: - - lint - - fastq -tools: - - "fq": - description: "fq is a library to generate and validate FASTQ file pairs." - homepage: "https://github.com/stjude-rust-labs/fq" - documentation: "https://github.com/stjude-rust-labs/fq" - tool_dev_url: "https://github.com/stjude-rust-labs/fq" - licence: "['MIT']" -input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - fastq: - type: file - description: FASTQ file list - pattern: "*.fastq{,.gz}" -output: - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" -authors: - - "@adamrtalbot" -maintainers: - - "@adamrtalbot" diff --git a/modules/nf-core/fq/lint/tests/main.nf.test b/modules/nf-core/fq/lint/tests/main.nf.test deleted file mode 100644 index bd83324..0000000 --- a/modules/nf-core/fq/lint/tests/main.nf.test +++ /dev/null @@ -1,63 +0,0 @@ -nextflow_process { - - name "Test Process FQ_LINT" - script "../main.nf" - process "FQ_LINT" - - tag "modules" - tag "modules_nfcore" - tag "fq" - tag "fq/lint" - - test("test_fq_lint_success") { - when { - params { - outdir = "$outputDir" - } - process { - """ - input[0] = [ [ id:'test', single_end:false ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ] - ] - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert process.out.lint.get(0).get(1) ==~ ".*/test.fq_lint.txt" }, - { assert path(process.out.lint.get(0).get(1)).getText().contains("fq-lint start") }, - { assert path(process.out.lint.get(0).get(1)).getText().contains("read 100 records") }, - { assert path(process.out.lint.get(0).get(1)).getText().contains("fq-lint end") }, - ) - } - - } - - test("test_fq_lint_fail") { - when { - params { - outdir = "$outputDir" - } - process { - """ - input[0] = [ [ id:'test', single_end:false ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['candidatus_portiera_aleyrodidarum']['illumina']['test_2_fastq_gz'], checkIfExists: true) ] - ] - """ - } - } - - then { - assertAll ( - { assert !process.success }, - { assert snapshot(process.out).match() }, - ) - } - - } - -} diff --git a/modules/nf-core/fq/lint/tests/main.nf.test.snap b/modules/nf-core/fq/lint/tests/main.nf.test.snap deleted file mode 100644 index 18be683..0000000 --- a/modules/nf-core/fq/lint/tests/main.nf.test.snap +++ /dev/null @@ -1,52 +0,0 @@ -{ - "test_fq_lint_fail": { - "content": [ - { - "0": [ - - ], - "1": [ - - ], - "lint": [ - - ], - "versions": [ - - ] - } - ], - "timestamp": "2023-10-17T11:27:49.533776" - }, - "test_fq_lint_success": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fq_lint.txt:md5,ad97318ef85cf80dcc6312cfa726709c" - ] - ], - "1": [ - "versions.yml:md5,10ce0730904e55dc8827a894c7042c8c" - ], - "lint": [ - [ - { - "id": "test", - "single_end": false - }, - "test.fq_lint.txt:md5,ad97318ef85cf80dcc6312cfa726709c" - ] - ], - "versions": [ - "versions.yml:md5,10ce0730904e55dc8827a894c7042c8c" - ] - } - ], - "timestamp": "2023-10-17T11:27:38.071998" - } -} \ No newline at end of file diff --git a/modules/nf-core/fq/lint/tests/tags.yml b/modules/nf-core/fq/lint/tests/tags.yml deleted file mode 100644 index 9c9c323..0000000 --- a/modules/nf-core/fq/lint/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -fq/lint: - - modules/nf-core/fq/lint/** diff --git a/nextflow.config b/nextflow.config index a663bdb..6c42d72 100644 --- a/nextflow.config +++ b/nextflow.config @@ -24,10 +24,8 @@ params { multiqc_methods_description = null - // FASTP options - adapters = null - save_trimmed_fail = false - save_merged = false + // Trimming + skip_trim = false // Boilerplate options outdir = null diff --git a/nextflow_schema.json b/nextflow_schema.json index b1382bd..b140407 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -74,30 +74,6 @@ } } }, - "fastp_options": { - "title": "Fastp options", - "type": "object", - "description": "Parameters for running fastp", - "default": "", - "properties": { - "adapters": { - "type": "string", - "fa_icon": "fas fa-cut", - "description": "Fasta file with adapter sequences to be trimmed." - }, - "save_trimmed_fail": { - "type": "boolean", - "fa_icon": "far fa-save", - "description": "Option to save trimmed reads." - }, - "save_merged": { - "type": "boolean", - "fa_icon": "far fa-save", - "description": "Option to save merged reads." - } - }, - "fa_icon": "fas fa-cut" - }, "institutional_config_options": { "title": "Institutional config options", "type": "object", @@ -300,9 +276,6 @@ { "$ref": "#/definitions/reference_genome_options" }, - { - "$ref": "#/definitions/fastp_options" - }, { "$ref": "#/definitions/institutional_config_options" }, diff --git a/workflows/demo.nf b/workflows/demo.nf index 9fb4e72..7fa9299 100644 --- a/workflows/demo.nf +++ b/workflows/demo.nf @@ -38,12 +38,14 @@ workflow DEMO { ch_versions = ch_versions.mix(FASTQC.out.versions.first()) // - // MODULE: Run FQ_LINT + // MODULE: Run SEQTK_TRIM // - SEQTK_TRIM ( - ch_samplesheet - ) - ch_versions = ch_versions.mix(SEQTK_TRIM.out.versions.first()) + if (!params.skip_trim) { + SEQTK_TRIM ( + ch_samplesheet + ) + ch_versions = ch_versions.mix(SEQTK_TRIM.out.versions.first()) + } // // Collate and save software versions From 40db1d7b1146f84526b34a86b5e7b48de315586a Mon Sep 17 00:00:00 2001 From: christopher-hakkaart Date: Fri, 31 May 2024 12:42:49 +0200 Subject: [PATCH 17/25] Update schema --- nextflow_schema.json | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/nextflow_schema.json b/nextflow_schema.json index b140407..1c51049 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -74,6 +74,20 @@ } } }, + "process_skipping_options": { + "title": "Process skipping options", + "type": "object", + "description": "Options to skip various steps within the workflow.", + "default": "", + "fa_icon": "fas fa-forward", + "properties": { + "skip_trim": { + "type": "boolean", + "description": "Skip trimming fastq files with seqtk", + "fa_icon": "fas fa-chevron-circle-right" + } + } + }, "institutional_config_options": { "title": "Institutional config options", "type": "object", @@ -276,6 +290,9 @@ { "$ref": "#/definitions/reference_genome_options" }, + { + "$ref": "#/definitions/process_skipping_options" + }, { "$ref": "#/definitions/institutional_config_options" }, From a3624b32769d52412a66abd1fcfae8f14369b7b0 Mon Sep 17 00:00:00 2001 From: christopher-hakkaart Date: Fri, 31 May 2024 13:07:39 +0200 Subject: [PATCH 18/25] Adding docs --- docs/output.md | 11 ++++------- workflows/demo.nf | 1 + 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/docs/output.md b/docs/output.md index f8f0f90..92dc0c4 100644 --- a/docs/output.md +++ b/docs/output.md @@ -11,7 +11,7 @@ The directories listed below will be created in the results directory after the The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes data using the following steps: - [FastQC](#fastqc) - Raw read QC -- [fastp](#fastp) - Adapter and quality trimming +- [seqtk](#seqtk) - Processing sequences in the FASTA or FASTQ format. - [MultiQC](#multiqc) - Aggregate report describing results and QC from the whole pipeline - [Pipeline information](#pipeline-information) - Report metrics generated during the workflow execution @@ -38,20 +38,17 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d The FastQC plots displayed in the MultiQC report shows _untrimmed_ reads. They may contain adapter sequence and potentially regions with low quality. ::: -### fastp +### seqtk
    Output files - `fastp/` - - `*.fastp.html`: Trimming report in html format. - - `*.fastp.json`: Trimming report in json format. - - `*.fastp.log`: Trimming log file. - - `*.fastq.gz`: If `--save_trimmed` is specified, FastQ files **after** adapter trimming will be placed in this directory. + - `*.fastq.gz`: Trimmed FASTQ files.
    -[fastp](https://github.com/OpenGene/fastp) is a tool designed to provide fast, all-in-one preprocessing for FastQ files. It has been developed in C++ with multithreading support to achieve higher performance. fastp can be used in this pipeline for standard adapter trimming and quality filtering. +[seqtk](https://github.com/lh3/seqtk) is a fast and lightweight tool for processing sequences in the FASTA or FASTQ format. It seamlessly parses both FASTA and FASTQ files which can also be optionally compressed by gzip. ### MultiQC diff --git a/workflows/demo.nf b/workflows/demo.nf index 7fa9299..a5e06f5 100644 --- a/workflows/demo.nf +++ b/workflows/demo.nf @@ -44,6 +44,7 @@ workflow DEMO { SEQTK_TRIM ( ch_samplesheet ) + ch_trimmed = SEQTK_TRIM.out.reads ch_versions = ch_versions.mix(SEQTK_TRIM.out.versions.first()) } From fe9e6100e496c8e273e7a8ad74607abe3ace5291 Mon Sep 17 00:00:00 2001 From: christopher-hakkaart Date: Fri, 31 May 2024 13:56:27 +0200 Subject: [PATCH 19/25] Update images --- README.md | 2 +- docs/images/nf-core-demo-subway.png | Bin 22934 -> 20299 bytes docs/images/nf-core-demo-subway.svg | 40 +++++++++++++--------------- 3 files changed, 19 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 1bd32f0..6829942 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ ![nf-core/demo metro map](docs/images/nf-core-demo-subway.png) 1. Read QC ([`FASTQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/)) -2. Adapter and quality trimming ([`FASTP`](https://github.com/OpenGene/fastp)) +2. Adapter and quality trimming ([`SEQTK_TRIM`](https://github.com/lh3/seqtk)) 3. Present QC for raw reads ([`MULTIQC`](http://multiqc.info/)) ## Usage diff --git a/docs/images/nf-core-demo-subway.png b/docs/images/nf-core-demo-subway.png index 1a2ebcdb44a20c13f834c87885f4319e268f5722..e7914fec0302792b1724b6b8e327f6adbf44fd90 100644 GIT binary patch literal 20299 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 GAL2hv?au!I literal 22934 zcmd3NRZv__@b88M2*Cmb2%g~X&ax0BxVsbF7J@q)LV~;NBEdD-;*#LHxCRLB?kw`( zeE0R%eYkZW?o@4UovAa^eWrVQdVbvpL zPU?fE*R#Vmj4x!h&&jg1jIt>p1GRB0~Wbdvim85zgYk#t4DUck0ZwPk%i za|vDj)ZNqHX8BTsh|<#i$NfxKI2{U-qyP6UAyN(i7(@Bi^@)Zk0@b+9!N>IO-g0YN z#{_(Rd1;FR_`W^sTFM5stRIf`(^oh+IKm=5~ zZnGnqOc4h@0~FFa3GSEoI2b%J@UyjLiH$1wm+*y^FkSvNzogYL*au4nMk`QyZ^Wq~ zM-adLM*)*icsufZK+>~TwfSozWqo~{(&B~dqn{Kr`T4Z1umhv}Y)KK6lm-C!jKQh` z_`=jvTB{-!lh_nztyA;4S$c8Cih4y^uMlhhhdkMnX+kuM62$cKf=+ZhpX&1RG71j> zXne7T0pPUMZE`7SVBzO{P2^Y4H>icmtVF7XSm>q_;yo&|^_yAo0`1nP)4P6BLOl<;124i4Vl7i0wcBtJ1 z08@F+ym;%Mx4S46JGf|RxJX5tdWriCApUG?Bx9C~mzTGqlX~;g=SNUbkW6u)YBESC zF5TAlVdtQBR9GTLOc?-B#e4?^08mLNL3emGSv0#+Z}h5l4~Br(U^~`P&0ubUnV?{*gkrvzFy(&3CRpTAB=13_kv66 znrSynjW5HR^5_caK*>Q~V_DjTj+Qf)*~dj1svEnnfK)R#clVLHiVYFjeF+MAoH*`| zE{zP*(9ti`RtXJ8TVUMVm&osX*_}XNe*(4V;7+^?ow=)!PbeW6K$*TV)LT%2K}V>l zgD@XEx+*iBuXmwwqXFV)>DeC9OhLSv!E zDm>PumQw7?YUOi{_%t4C<{ViTJA7wzkB+iI0xQ0zthOTpV!-w4{*aJl=#;HHte$M)$|fexXMVNA zFyiTp`JigZItDxfQ|G{cc+O{pqt*DKbF^Uz76JftqOxUu@*AJAuTm|%D_7Q?G_2~b zT1G4J1%jRyvYZg)XauMl;g$Swdxx_>U9~)YY?>ES{X40;`Fj%yO5DL5ZTrtL69Ss! zpAL-sh<;dF7@XhucC`N5m=(yATl6&L9rtkK+!f>gTiaF$x~Q4N9ltBML6PE37orAo2 z_foCS%}xu%Pd8ie$kzbCn_SCv4`8qlhwZ*53Lrlfv;<)`aA#+)i^LXf0fJWAG|eSe ze_D@w`)dCzJM6gC1r>u^fUC4N$&f}gOc}YU!c3$0pV^-Z;zJ~HWCaio$%!pRe0RW5=3gJaTlPKG9pGFe| zrsCiBa&|aF`e5ZOwNx8ZWh*p3B2@;G;8z@tkS;}}g+{5fa1zO`fd9m1Sk31pOKZ2R8^>

    OrY>@dnXYJ)q0`UpJ4s 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 + + + - - - - - - + + + - - - - - - - - - - - - + + + + + - + + + + - - + + - + From cf9e948b9c420d4f0c62ae8411cd68926a5d748f Mon Sep 17 00:00:00 2001 From: christopher-hakkaart Date: Fri, 31 May 2024 15:50:15 +0200 Subject: [PATCH 20/25] Prepare for sync --- conf/modules.config | 4 ++-- modules.json | 26 +++++++------------------- 2 files changed, 9 insertions(+), 21 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index b9a8299..676a80f 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -28,11 +28,11 @@ process { } - withName: 'FQ_LINT' { + withName: 'SEQTK_TRIM' { publishDir = [ path: { "${params.outdir}/fq/${meta.id}" }, mode: params.publish_dir_mode, - pattern: "*.{txt}" + pattern: "*.{fastq.gz}" ] } diff --git a/modules.json b/modules.json index 4634b34..67933c1 100644 --- a/modules.json +++ b/modules.json @@ -8,23 +8,17 @@ "fastqc": { "branch": "master", "git_sha": "285a50500f9e02578d90b3ce6382ea3c30216acd", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "multiqc": { "branch": "master", "git_sha": "b7ebe95761cd389603f9cc0e0dc384c0f663815a", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "seqtk/trim": { "branch": "master", "git_sha": "71c669747731cbc360dc220069c9f83015558c07", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] } } }, @@ -33,26 +27,20 @@ "utils_nextflow_pipeline": { "branch": "master", "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "utils_nfcore_pipeline": { "branch": "master", "git_sha": "92de218a329bfc9a9033116eb5f65fd270e72ba3", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "utils_nfvalidation_plugin": { "branch": "master", "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] } } } } } -} \ No newline at end of file +} From 3aebf65c550a28bf8972b1c33e8ea7665e940cf1 Mon Sep 17 00:00:00 2001 From: christopher-hakkaart Date: Fri, 31 May 2024 15:50:33 +0200 Subject: [PATCH 21/25] Template update for nf-core/tools version 2.14.1 --- assets/nf-core-demo_logo_light.png | Bin 70502 -> 70504 bytes docs/images/nf-core-demo_logo_dark.png | Bin 24773 -> 24802 bytes docs/images/nf-core-demo_logo_light.png | Bin 21507 -> 21507 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/nf-core-demo_logo_light.png b/assets/nf-core-demo_logo_light.png index 0ef9fa5dd6448acf82a09f81e9170b43f09e8d46..2543e503f6ce36751c848248e716828ce00829f5 100644 GIT binary patch delta 27283 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 xSfijA6{pNM@e*hZiRE_`u diff --git a/docs/images/nf-core-demo_logo_dark.png b/docs/images/nf-core-demo_logo_dark.png index 5e22400718cf36ae8245720c95734200bb455901..44f9995555ec59c4889badcc89511d95f9e0cb0e 100644 GIT binary patch delta 24181 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 diff --git a/docs/images/nf-core-demo_logo_light.png b/docs/images/nf-core-demo_logo_light.png index c9d0c4b90dbc58dd31cdb43e995b813c69205420..b945f8cdd07254b43db5264467edd72ab9090176 100644 GIT binary patch delta 20682 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 From 39a88e7d53fb252a61e6d13698ffee40dccea333 Mon Sep 17 00:00:00 2001 From: christopher-hakkaart Date: Tue, 11 Jun 2024 10:13:51 +0200 Subject: [PATCH 22/25] Update output docs --- docs/output.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/output.md b/docs/output.md index 92dc0c4..411fdf5 100644 --- a/docs/output.md +++ b/docs/output.md @@ -43,7 +43,7 @@ The FastQC plots displayed in the MultiQC report shows _untrimmed_ reads. They m

    Output files -- `fastp/` +- `fq/` - `*.fastq.gz`: Trimmed FASTQ files.
    From 7ce6e7fdbfd5c0cb9f7a81a46a70debee6b1ece4 Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Wed, 12 Jun 2024 20:58:50 +0200 Subject: [PATCH 23/25] Update nextflow.config --- nextflow.config | 1 - 1 file changed, 1 deletion(-) diff --git a/nextflow.config b/nextflow.config index 7a3b005..28b04a5 100644 --- a/nextflow.config +++ b/nextflow.config @@ -24,7 +24,6 @@ params { max_multiqc_email_size = '25.MB' multiqc_methods_description = null - // Trimming skip_trim = false From 1e85529ae0380cf1917f7c4000958ff7c2f0abe5 Mon Sep 17 00:00:00 2001 From: christopher-hakkaart Date: Wed, 19 Jun 2024 16:01:44 +0200 Subject: [PATCH 24/25] Add change log --- CHANGELOG.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd9cb42..4b635d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,14 +3,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v1.0dev - [date] +## 1.0.0 2024-06-19 -Initial release of nf-core/demo, created with the [nf-core](https://nf-co.re/) template. +### Credits + +Special thanks to the following for their reviews and assistance: + +- [Maxime Garcia](https://github.com/maxulysse) +- [Friederike Hanssen](https://github.com/FriederikeHanssen) ### `Added` -### `Fixed` +- `nf-core/seqtk/trim` module +- `skip_trim` parameter -### `Dependencies` +## v1.0dev - 2024-05-5 -### `Deprecated` +Initial release of nf-core/demo, created with the [nf-core](https://nf-co.re/) template. From 2ce1fb7f5f1d902050f928997da4378494df280f Mon Sep 17 00:00:00 2001 From: christopher-hakkaart Date: Thu, 20 Jun 2024 10:08:20 +0200 Subject: [PATCH 25/25] Bump version --- assets/multiqc_config.yml | 4 ++-- nextflow.config | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 16a6e09..1a9c348 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -1,7 +1,7 @@ report_comment: > - This report has been generated by the nf-core/demo + This report has been generated by the nf-core/demo analysis pipeline. For information about how to interpret these results, please see the - documentation. + documentation. report_section_order: "nf-core-demo-methods-description": order: -1000 diff --git a/nextflow.config b/nextflow.config index 28b04a5..d42b49e 100644 --- a/nextflow.config +++ b/nextflow.config @@ -241,7 +241,7 @@ manifest { description = """An nf-core demo pipeline""" mainScript = 'main.nf' nextflowVersion = '!>=23.04.0' - version = '1.0dev' + version = '1.0.0' doi = '' }

    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 diff --git a/docs/usage.md b/docs/usage.md index cd4d789..61781ef 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -156,6 +156,8 @@ If `-profile` is not specified, the pipeline will run locally and expect all sof - A generic configuration profile to be used with [Charliecloud](https://hpc.github.io/charliecloud/) - `apptainer` - A generic configuration profile to be used with [Apptainer](https://apptainer.org/) +- `wave` + - A generic configuration profile to enable [Wave](https://seqera.io/wave/) containers. Use together with one of the above (requires Nextflow ` 24.03.0-edge` or later). - `conda` - A generic configuration profile to be used with [Conda](https://conda.io/docs/). Please only use Conda as a last resort i.e. when it's not possible to run the pipeline with Docker, Singularity, Podman, Shifter, Charliecloud, or Apptainer. diff --git a/modules.json b/modules.json index 83ecb34..20a5d9e 100644 --- a/modules.json +++ b/modules.json @@ -7,7 +7,7 @@ "nf-core": { "fastqc": { "branch": "master", - "git_sha": "f4ae1d942bd50c5c0b9bd2de1393ce38315ba57c", + "git_sha": "285a50500f9e02578d90b3ce6382ea3c30216acd", "installed_by": ["modules"] }, "multiqc": { @@ -26,7 +26,7 @@ }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", + "git_sha": "92de218a329bfc9a9033116eb5f65fd270e72ba3", "installed_by": ["subworkflows"] }, "utils_nfvalidation_plugin": { diff --git a/modules/nf-core/fastqc/main.nf b/modules/nf-core/fastqc/main.nf index 9e19a74..d79f1c8 100644 --- a/modules/nf-core/fastqc/main.nf +++ b/modules/nf-core/fastqc/main.nf @@ -25,6 +25,11 @@ process FASTQC { def old_new_pairs = reads instanceof Path || reads.size() == 1 ? [[ reads, "${prefix}.${reads.extension}" ]] : reads.withIndex().collect { entry, index -> [ entry, "${prefix}_${index + 1}.${entry.extension}" ] } def rename_to = old_new_pairs*.join(' ').join(' ') def renamed_files = old_new_pairs.collect{ old_name, new_name -> new_name }.join(' ') + + def memory_in_mb = MemoryUnit.of("${task.memory}").toUnit('MB') + // FastQC memory value allowed range (100 - 10000) + def fastqc_memory = memory_in_mb > 10000 ? 10000 : (memory_in_mb < 100 ? 100 : memory_in_mb) + """ printf "%s %s\\n" $rename_to | while read old_name new_name; do [ -f "\${new_name}" ] || ln -s \$old_name \$new_name @@ -33,6 +38,7 @@ process FASTQC { fastqc \\ $args \\ --threads $task.cpus \\ + --memory $fastqc_memory \\ $renamed_files cat <<-END_VERSIONS > versions.yml diff --git a/nextflow.config b/nextflow.config index d32d68c..60117ea 100644 --- a/nextflow.config +++ b/nextflow.config @@ -16,7 +16,8 @@ params { genome = null igenomes_base = 's3://ngi-igenomes/igenomes/' igenomes_ignore = false - fasta = null// MultiQC options + + // MultiQC options multiqc_config = null multiqc_title = null multiqc_logo = null @@ -24,15 +25,16 @@ params { multiqc_methods_description = null // Boilerplate options - outdir = null - publish_dir_mode = 'copy' - email = null - email_on_fail = null - plaintext_email = false - monochrome_logs = false - hook_url = null - help = false - version = false + outdir = null + publish_dir_mode = 'copy' + email = null + email_on_fail = null + plaintext_email = false + monochrome_logs = false + hook_url = null + help = false + version = false + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/' // Config options config_profile_name = null @@ -68,103 +70,109 @@ try { } // Load nf-core/demo custom profiles from different institutions. -// Warning: Uncomment only if a pipeline-specific institutional config already exists on nf-core/configs! -// try { -// includeConfig "${params.custom_config_base}/pipeline/demo.config" -// } catch (Exception e) { -// System.err.println("WARNING: Could not load nf-core/config/demo profiles: ${params.custom_config_base}/pipeline/demo.config") -// } +try { + includeConfig "${params.custom_config_base}/pipeline/demo.config" +} catch (Exception e) { + System.err.println("WARNING: Could not load nf-core/config/demo profiles: ${params.custom_config_base}/pipeline/demo.config") +} profiles { debug { - dumpHashes = true - process.beforeScript = 'echo $HOSTNAME' - cleanup = false + dumpHashes = true + process.beforeScript = 'echo $HOSTNAME' + cleanup = false nextflow.enable.configProcessNamesValidation = true } conda { - conda.enabled = true - docker.enabled = false - singularity.enabled = false - podman.enabled = false - shifter.enabled = false - charliecloud.enabled = false - channels = ['conda-forge', 'bioconda', 'defaults'] - apptainer.enabled = false + conda.enabled = true + docker.enabled = false + singularity.enabled = false + podman.enabled = false + shifter.enabled = false + charliecloud.enabled = false + conda.channels = ['conda-forge', 'bioconda', 'defaults'] + apptainer.enabled = false } mamba { - conda.enabled = true - conda.useMamba = true - docker.enabled = false - singularity.enabled = false - podman.enabled = false - shifter.enabled = false - charliecloud.enabled = false - apptainer.enabled = false + conda.enabled = true + conda.useMamba = true + docker.enabled = false + singularity.enabled = false + podman.enabled = false + shifter.enabled = false + charliecloud.enabled = false + apptainer.enabled = false } docker { - docker.enabled = true - conda.enabled = false - singularity.enabled = false - podman.enabled = false - shifter.enabled = false - charliecloud.enabled = false - apptainer.enabled = false - docker.runOptions = '-u $(id -u):$(id -g)' + docker.enabled = true + conda.enabled = false + singularity.enabled = false + podman.enabled = false + shifter.enabled = false + charliecloud.enabled = false + apptainer.enabled = false + docker.runOptions = '-u $(id -u):$(id -g)' } arm { - docker.runOptions = '-u $(id -u):$(id -g) --platform=linux/amd64' + docker.runOptions = '-u $(id -u):$(id -g) --platform=linux/amd64' } singularity { - singularity.enabled = true - singularity.autoMounts = true - conda.enabled = false - docker.enabled = false - podman.enabled = false - shifter.enabled = false - charliecloud.enabled = false - apptainer.enabled = false + singularity.enabled = true + singularity.autoMounts = true + conda.enabled = false + docker.enabled = false + podman.enabled = false + shifter.enabled = false + charliecloud.enabled = false + apptainer.enabled = false } podman { - podman.enabled = true - conda.enabled = false - docker.enabled = false - singularity.enabled = false - shifter.enabled = false - charliecloud.enabled = false - apptainer.enabled = false + podman.enabled = true + conda.enabled = false + docker.enabled = false + singularity.enabled = false + shifter.enabled = false + charliecloud.enabled = false + apptainer.enabled = false } shifter { - shifter.enabled = true - conda.enabled = false - docker.enabled = false - singularity.enabled = false - podman.enabled = false - charliecloud.enabled = false - apptainer.enabled = false + shifter.enabled = true + conda.enabled = false + docker.enabled = false + singularity.enabled = false + podman.enabled = false + charliecloud.enabled = false + apptainer.enabled = false } charliecloud { - charliecloud.enabled = true - conda.enabled = false - docker.enabled = false - singularity.enabled = false - podman.enabled = false - shifter.enabled = false - apptainer.enabled = false + charliecloud.enabled = true + conda.enabled = false + docker.enabled = false + singularity.enabled = false + podman.enabled = false + shifter.enabled = false + apptainer.enabled = false } apptainer { - apptainer.enabled = true - apptainer.autoMounts = true - conda.enabled = false - docker.enabled = false - singularity.enabled = false - podman.enabled = false - shifter.enabled = false - charliecloud.enabled = false + apptainer.enabled = true + apptainer.autoMounts = true + conda.enabled = false + docker.enabled = false + singularity.enabled = false + podman.enabled = false + shifter.enabled = false + charliecloud.enabled = false + } + wave { + apptainer.ociAutoPull = true + singularity.ociAutoPull = true + wave.enabled = true + wave.freeze = true + wave.strategy = 'conda,container' } gitpod { - executor.name = 'local' - executor.cpus = 4 - executor.memory = 8.GB + executor.name = 'local' + executor.cpus = 4 + executor.memory = 8.GB } test { includeConfig 'conf/test.config' } test_full { includeConfig 'conf/test_full.config' } diff --git a/nextflow_schema.json b/nextflow_schema.json index 2696051..5c80331 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -265,6 +265,13 @@ "description": "Validation of parameters in lenient more.", "hidden": true, "help_text": "Allows string values that are parseable as numbers or booleans. For further information see [JSONSchema docs](https://github.com/everit-org/json-schema#lenient-mode)." + }, + "pipelines_testdata_base_path": { + "type": "string", + "fa_icon": "far fa-check-circle", + "description": "Base URL or local path to location of pipeline test dataset files", + "default": "https://raw.githubusercontent.com/nf-core/test-datasets/", + "hidden": true } } } diff --git a/pyproject.toml b/pyproject.toml deleted file mode 100644 index 5611062..0000000 --- a/pyproject.toml +++ /dev/null @@ -1,15 +0,0 @@ -# Config file for Python. Mostly used to configure linting of bin/*.py with Ruff. -# Should be kept the same as nf-core/tools to avoid fighting with template synchronisation. -[tool.ruff] -line-length = 120 -target-version = "py38" -cache-dir = "~/.cache/ruff" - -[tool.ruff.lint] -select = ["I", "E1", "E4", "E7", "E9", "F", "UP", "N"] - -[tool.ruff.lint.isort] -known-first-party = ["nf_core"] - -[tool.ruff.lint.per-file-ignores] -"__init__.py" = ["E402", "F401"] diff --git a/subworkflows/local/utils_nfcore_demo_pipeline/main.nf b/subworkflows/local/utils_nfcore_demo_pipeline/main.nf index 9457ca2..c3216bf 100644 --- a/subworkflows/local/utils_nfcore_demo_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_demo_pipeline/main.nf @@ -140,6 +140,10 @@ workflow PIPELINE_COMPLETION { imNotification(summary_params, hook_url) } } + + workflow.onError { + log.error "Pipeline failed. Please refer to troubleshooting docs: https://nf-co.re/docs/usage/troubleshooting" + } } /* @@ -230,8 +234,16 @@ def methodsDescriptionText(mqc_methods_yaml) { meta["manifest_map"] = workflow.manifest.toMap() // Pipeline DOI - meta["doi_text"] = meta.manifest_map.doi ? "(doi: ${meta.manifest_map.doi})" : "" - meta["nodoi_text"] = meta.manifest_map.doi ? "": "