From 9b134f3b96b6d5ed4cd0b87843cb6b0b5e1fc4d5 Mon Sep 17 00:00:00 2001 From: Guillermo del Angel Date: Wed, 29 Jun 2011 21:33:41 -0400 Subject: [PATCH 01/41] VariantsToTableFix --- .../walkers/variantutils/VariantsToTable.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java index 71dd5df3f..079fc7aba 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java @@ -24,6 +24,7 @@ package org.broadinstitute.sting.gatk.walkers.variantutils; +import org.broadinstitute.sting.utils.MathUtils; import org.broadinstitute.sting.utils.variantcontext.VariantContext; import org.broadinstitute.sting.commandline.Argument; import org.broadinstitute.sting.commandline.Output; @@ -169,6 +170,30 @@ public class VariantsToTable extends RodWalker { throw new UserException(String.format("Missing field %s in vc %s at %s", field, vc.getSource(), vc)); } + if (field.equals("AF")) { + String afo = val; + + double af; + if (afo.contains(",")) { + String[] afs = afo.split(","); + afs[0] = afs[0].substring(1,afs[0].length()); + afs[afs.length-1] = afs[afs.length-1].substring(0,afs[afs.length-1].length()-1); + + double[] afd = new double[afs.length]; + + for (int k=0; k < afd.length; k++) + afd[k] = Double.valueOf(afs[k]); + + af = MathUtils.arrayMax(afd); + //af = Double.valueOf(afs[0]); + + } + else + af = Double.valueOf(afo); + + val = Double.toString(af); + + } vals.add(val); } From 50c32ce52e85a05fe252058e8ec72495b79adfe6 Mon Sep 17 00:00:00 2001 From: Guillermo del Angel Date: Wed, 29 Jun 2011 21:39:53 -0400 Subject: [PATCH 02/41] VariantsToTableFix --- .../sting/gatk/walkers/variantutils/VariantsToTable.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java index 079fc7aba..2111b0959 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java @@ -173,7 +173,7 @@ public class VariantsToTable extends RodWalker { if (field.equals("AF")) { String afo = val; - double af; + double af=0; if (afo.contains(",")) { String[] afs = afo.split(","); afs[0] = afs[0].substring(1,afs[0].length()); @@ -189,7 +189,8 @@ public class VariantsToTable extends RodWalker { } else - af = Double.valueOf(afo); + if (!afo.equals("NA")) + af = Double.valueOf(afo); val = Double.toString(af); From fac082de64762732cbea08ddc3a47f6a41e47014 Mon Sep 17 00:00:00 2001 From: Guillermo del Angel Date: Sun, 3 Jul 2011 14:32:12 -0400 Subject: [PATCH 03/41] Report only highest AF and AC in multiallelic records in VariantsToTable or else R can't parse table --- .../sting/gatk/walkers/variantutils/VariantsToTable.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java index 2111b0959..d8340b761 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java @@ -170,7 +170,7 @@ public class VariantsToTable extends RodWalker { throw new UserException(String.format("Missing field %s in vc %s at %s", field, vc.getSource(), vc)); } - if (field.equals("AF")) { + if (field.equals("AF") || field.equals("AC")) { String afo = val; double af=0; From 08bc843d4cf630d96941128368467c0e8ebeaa73 Mon Sep 17 00:00:00 2001 From: Guillermo del Angel Date: Mon, 4 Jul 2011 20:23:22 -0400 Subject: [PATCH 04/41] SelectVariants can get a table to boost AF when choosing randomly --- .../walkers/variantutils/SelectVariants.java | 53 ++++++++++++++++++- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java index cbac54326..95e5ed934 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java @@ -25,8 +25,11 @@ package org.broadinstitute.sting.gatk.walkers.variantutils; import org.broadinstitute.sting.commandline.Hidden; +import org.broadinstitute.sting.commandline.Input; import org.broadinstitute.sting.utils.MathUtils; import org.broadinstitute.sting.utils.codecs.vcf.*; +import org.broadinstitute.sting.utils.exceptions.UserException; +import org.broadinstitute.sting.utils.text.XReadLines; import org.broadinstitute.sting.utils.variantcontext.*; import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.broadinstitute.sting.utils.MendelianViolation; @@ -44,6 +47,7 @@ import org.broadinstitute.sting.utils.SampleUtils; import org.apache.log4j.Logger; import java.io.File; +import java.io.FileNotFoundException; import java.lang.annotation.AnnotationFormatError; import java.util.*; @@ -92,6 +96,8 @@ public class SelectVariants extends RodWalker { @Argument(fullName="keepAFSpectrum", shortName="keepAF", doc="Don't include loci found to be non-variant after the subsetting procedure.", required=false) private boolean KEEP_AF_SPECTRUM = false; + @Argument(fullName="afFile", shortName="afFile", doc="The output recal file used by ApplyRecalibration", required=false) + private File AF_FILE = null; @Argument(fullName="family_structure", shortName="family", doc="USE YAML FILE INSTEAD (-SM) !!! string formatted as dad+mom=child where these parameters determine which sample names are examined", required=false) private String FAMILY_STRUCTURE = ""; @@ -156,6 +162,10 @@ public class SelectVariants extends RodWalker { private RandomVariantStructure [] variantArray; + /* Variables used for random selection with AF boosting */ + private ArrayList afBreakpoints = null; + private ArrayList afBoosts = null; + double bkDelta = 0.0; @@ -228,7 +238,29 @@ public class SelectVariants extends RodWalker { SELECT_RANDOM_FRACTION = fractionRandom > 0; if (SELECT_RANDOM_FRACTION) logger.info("Selecting approximately " + fractionRandom + "% of the variants at random from the variant track"); - } + + + if (AF_FILE != null) { + try { + afBreakpoints = new ArrayList(); + afBoosts = new ArrayList(); + logger.info("Reading in AF boost table..."); + for ( final String line : new XReadLines( AF_FILE ) ) { + System.out.println(line); + final String[] vals = line.split("\t"); + double bkp = Double.valueOf(vals[0]); + double afb = Double.valueOf(vals[1]); + afBreakpoints.add(bkp); + afBoosts.add(afb); + + } + bkDelta = afBreakpoints.get(0); + } catch ( FileNotFoundException e ) { + throw new UserException.CouldNotReadInputFile(AF_FILE, e); + } + + } + } /** * Subset VC record if necessary and emit the modified record (provided it satisfies criteria for printing) @@ -300,6 +332,7 @@ public class SelectVariants extends RodWalker { String afo = compVC.getAttributeAsString(VCFConstants.ALLELE_FREQUENCY_KEY); double af; + double afBoost = 1.0; if (afo.contains(",")) { String[] afs = afo.split(","); afs[0] = afs[0].substring(1,afs[0].length()); @@ -317,8 +350,24 @@ public class SelectVariants extends RodWalker { else af = Double.valueOf(afo); + // now boost af by table read from file if desired + //double bkpt = 0.0; + int bkidx = 0; + if (AF_FILE != null) { + for ( Double bkpt : afBreakpoints) { + if (af < bkpt + bkDelta) + break; + else bkidx++; + } + afBoost = afBreakpoints.get(bkidx); + System.out.format("af:%f bkidx:%d afboost:%f\n",af,bkidx,afBoost); + + + + } + //System.out.format("%s .. %4.4f\n",afo.toString(), af); - if (GenomeAnalysisEngine.getRandomGenerator().nextDouble() < fractionRandom * af) + if (GenomeAnalysisEngine.getRandomGenerator().nextDouble() < fractionRandom * af * afBoost) vcfWriter.add(sub, ref.getBase()); } break; // do only one vc From 7a04872a3f45d23efd1e91e41b08b7f30def8b3d Mon Sep 17 00:00:00 2001 From: Guillermo del Angel Date: Mon, 4 Jul 2011 20:33:59 -0400 Subject: [PATCH 05/41] bug fixes --- .../sting/gatk/walkers/variantutils/SelectVariants.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java index 95e5ed934..e7331d646 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java @@ -246,8 +246,10 @@ public class SelectVariants extends RodWalker { afBoosts = new ArrayList(); logger.info("Reading in AF boost table..."); for ( final String line : new XReadLines( AF_FILE ) ) { - System.out.println(line); + //System.out.println(line); final String[] vals = line.split("\t"); + if (vals[0].matches("midpoints")) + continue; double bkp = Double.valueOf(vals[0]); double afb = Double.valueOf(vals[1]); afBreakpoints.add(bkp); From 04df153f47886a341122f50e11b775c6852c52ed Mon Sep 17 00:00:00 2001 From: Guillermo del Angel Date: Mon, 4 Jul 2011 20:45:10 -0400 Subject: [PATCH 06/41] bug fixes --- .../sting/gatk/walkers/variantutils/SelectVariants.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java index e7331d646..bddfed66e 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java @@ -245,11 +245,14 @@ public class SelectVariants extends RodWalker { afBreakpoints = new ArrayList(); afBoosts = new ArrayList(); logger.info("Reading in AF boost table..."); + boolean firstLine = false; for ( final String line : new XReadLines( AF_FILE ) ) { - //System.out.println(line); - final String[] vals = line.split("\t"); - if (vals[0].matches("midpoints")) + if (!firstLine) { + firstLine = true; continue; + } + final String[] vals = line.split("\t"); + double bkp = Double.valueOf(vals[0]); double afb = Double.valueOf(vals[1]); afBreakpoints.add(bkp); From f26ffeaea0d668c90533b32ab2e7299cc7e4e7d5 Mon Sep 17 00:00:00 2001 From: Guillermo del Angel Date: Mon, 4 Jul 2011 20:48:45 -0400 Subject: [PATCH 07/41] bug fixes --- .../sting/gatk/walkers/variantutils/SelectVariants.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java index bddfed66e..2eb35c2be 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java @@ -251,7 +251,7 @@ public class SelectVariants extends RodWalker { firstLine = true; continue; } - final String[] vals = line.split("\t"); + final String[] vals = line.split(" "); double bkp = Double.valueOf(vals[0]); double afb = Double.valueOf(vals[1]); From bb85f232b9e25fc07399276acd4fbcfc22e7cf51 Mon Sep 17 00:00:00 2001 From: Guillermo del Angel Date: Mon, 4 Jul 2011 21:04:49 -0400 Subject: [PATCH 08/41] bug fixes --- .../walkers/variantutils/SelectVariants.java | 89 +++++++++---------- 1 file changed, 42 insertions(+), 47 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java index 2eb35c2be..bbe8cd05e 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java @@ -265,7 +265,7 @@ public class SelectVariants extends RodWalker { } } - } + } /** * Subset VC record if necessary and emit the modified record (provided it satisfies criteria for printing) @@ -326,58 +326,53 @@ public class SelectVariants extends RodWalker { } else { if (SELECT_RANDOM_FRACTION && KEEP_AF_SPECTRUM ) { - Collection compVCs = tracker.getVariantContexts(ref, inputAFRodName, null, context.getLocation(), true, false); - if (compVCs.isEmpty()) - return 0; - // ok we have a comp VC and we need to match the AF spectrum of inputAFRodName. // We then pick a variant with probablity AF*desiredFraction - for (VariantContext compVC : compVCs) { - if ( compVC.hasAttribute(VCFConstants.ALLELE_FREQUENCY_KEY) ) { - String afo = compVC.getAttributeAsString(VCFConstants.ALLELE_FREQUENCY_KEY); - double af; - double afBoost = 1.0; - if (afo.contains(",")) { - String[] afs = afo.split(","); - afs[0] = afs[0].substring(1,afs[0].length()); - afs[afs.length-1] = afs[afs.length-1].substring(0,afs[afs.length-1].length()-1); + if ( sub.hasAttribute(VCFConstants.ALLELE_FREQUENCY_KEY) ) { + String afo = sub.getAttributeAsString(VCFConstants.ALLELE_FREQUENCY_KEY); - double[] afd = new double[afs.length]; + double af; + double afBoost = 1.0; + if (afo.contains(",")) { + String[] afs = afo.split(","); + afs[0] = afs[0].substring(1,afs[0].length()); + afs[afs.length-1] = afs[afs.length-1].substring(0,afs[afs.length-1].length()-1); - for (int k=0; k < afd.length; k++) - afd[k] = Double.valueOf(afs[k]); + double[] afd = new double[afs.length]; - af = MathUtils.arrayMax(afd); - //af = Double.valueOf(afs[0]); + for (int k=0; k < afd.length; k++) + afd[k] = Double.valueOf(afs[k]); - } - else - af = Double.valueOf(afo); + af = MathUtils.arrayMax(afd); + //af = Double.valueOf(afs[0]); - // now boost af by table read from file if desired - //double bkpt = 0.0; - int bkidx = 0; - if (AF_FILE != null) { - for ( Double bkpt : afBreakpoints) { - if (af < bkpt + bkDelta) - break; - else bkidx++; - } - afBoost = afBreakpoints.get(bkidx); - System.out.format("af:%f bkidx:%d afboost:%f\n",af,bkidx,afBoost); - - - - } - - //System.out.format("%s .. %4.4f\n",afo.toString(), af); - if (GenomeAnalysisEngine.getRandomGenerator().nextDouble() < fractionRandom * af * afBoost) - vcfWriter.add(sub, ref.getBase()); } - break; // do only one vc + else + af = Double.valueOf(afo); + + // now boost af by table read from file if desired + //double bkpt = 0.0; + int bkidx = 0; + if (AF_FILE != null) { + for ( Double bkpt : afBreakpoints) { + if (af < bkpt + bkDelta) + break; + else bkidx++; + } + afBoost = afBreakpoints.get(bkidx); + System.out.format("af:%f bkidx:%d afboost:%f\n",af,bkidx,afBoost); + + + + } + + //System.out.format("%s .. %4.4f\n",afo.toString(), af); + if (GenomeAnalysisEngine.getRandomGenerator().nextDouble() < fractionRandom * af * afBoost) + vcfWriter.add(sub, ref.getBase()); } + } } } @@ -461,8 +456,8 @@ public class SelectVariants extends RodWalker { private boolean haveSameGenotypes(Genotype g1, Genotype g2) { if ((g1.isCalled() && g2.isFiltered()) || - (g2.isCalled() && g1.isFiltered()) || - (g1.isFiltered() && g2.isFiltered() && EXCLUDE_FILTERED)) + (g2.isCalled() && g1.isFiltered()) || + (g1.isFiltered() && g2.isFiltered() && EXCLUDE_FILTERED)) return false; List a1s = g1.getAlleles(); @@ -495,7 +490,7 @@ public class SelectVariants extends RodWalker { * @param vc the VariantContext record to subset * @param samples the samples to extract * @return the subsetted VariantContext - */ + */ private VariantContext subsetRecord(VariantContext vc, Set samples) { if ( samples == null || samples.isEmpty() ) return vc; @@ -505,7 +500,7 @@ public class SelectVariants extends RodWalker { if ( samples.contains(genotypePair.getKey()) ) genotypes.add(genotypePair.getValue()); } - + VariantContext sub = vc.subContextFromGenotypes(genotypes, vc.getAlleles()); HashMap attributes = new HashMap(sub.getAttributes()); @@ -515,7 +510,7 @@ public class SelectVariants extends RodWalker { Genotype g = sub.getGenotype(sample); if (g.isNotFiltered() && g.isCalled()) { - + String dp = (String) g.getAttribute("DP"); if (dp != null && ! dp.equals(VCFConstants.MISSING_DEPTH_v3) && ! dp.equals(VCFConstants.MISSING_VALUE_v4) ) { depth += Integer.valueOf(dp); From 9124c84a7ca19714034fe6e78452f30759a20c8c Mon Sep 17 00:00:00 2001 From: Guillermo del Angel Date: Mon, 4 Jul 2011 21:10:44 -0400 Subject: [PATCH 09/41] bug fixes --- .../sting/gatk/walkers/variantutils/SelectVariants.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java index bbe8cd05e..aa8a49175 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java @@ -321,7 +321,7 @@ public class SelectVariants extends RodWalker { if (SELECT_RANDOM_NUMBER) { randomlyAddVariant(++variantNumber, sub, ref.getBase()); } - else if (!SELECT_RANDOM_FRACTION || GenomeAnalysisEngine.getRandomGenerator().nextDouble() < fractionRandom) { + else if (!SELECT_RANDOM_FRACTION || (!KEEP_AF_SPECTRUM && GenomeAnalysisEngine.getRandomGenerator().nextDouble() < fractionRandom)) { vcfWriter.add(sub, ref.getBase()); } else { From 5ab2e83904ea95dd141410476a7aeb5307f67420 Mon Sep 17 00:00:00 2001 From: Guillermo del Angel Date: Thu, 7 Jul 2011 06:15:10 -0400 Subject: [PATCH 10/41] a) Cosmetic modifications to IndelType annotation. b) Add ability to select samples from a file in PrintReads, c) fixes to shaped AF random selection in SelectVariants --- .../sting/gatk/walkers/PrintReadsWalker.java | 39 +++++++++++++++++++ .../gatk/walkers/annotator/IndelType.java | 24 ++++++++++-- .../walkers/variantutils/SelectVariants.java | 18 +++++---- 3 files changed, 69 insertions(+), 12 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java index 07938d322..2b6673003 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java @@ -32,9 +32,14 @@ import org.broadinstitute.sting.gatk.refdata.ReadMetaDataTracker; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.commandline.Argument; import org.broadinstitute.sting.commandline.Output; +import org.broadinstitute.sting.utils.SampleUtils; import org.broadinstitute.sting.utils.baq.BAQ; +import java.io.File; import java.io.PrintStream; +import java.util.Collection; +import java.util.Set; +import java.util.TreeSet; /** * Renders, in SAM/BAM format, all reads from the input data set in the order in which they appear @@ -54,6 +59,13 @@ public class PrintReadsWalker extends ReadWalker { String platform = null; // E.g. ILLUMINA, 454 @Argument(fullName = "number", shortName = "n", doc="Print the first n reads from the file, discarding the rest", required = false) int nReadsToPrint = -1; + @Argument(fullName="sample_file", shortName="sf", doc="File containing a list of samples (one per line). Can be specified multiple times", required=false) + public Set sampleFiles; + @Argument(fullName="sample_name", shortName="sn", doc="Sample name to be included in the analysis. Can be specified multiple times.", required=false) + public Set sampleNames; + + private TreeSet samplesToChoose = new TreeSet(); + private boolean NO_SAMPLES_SPECIFIED = false; /** * The initialize function. @@ -61,6 +73,17 @@ public class PrintReadsWalker extends ReadWalker { public void initialize() { if ( platform != null ) platform = platform.toUpperCase(); + + Collection samplesFromFile = SampleUtils.getSamplesFromFiles(sampleFiles); + samplesToChoose.addAll(samplesFromFile); + + if (sampleNames != null) + samplesToChoose.addAll(sampleNames); + + if(samplesToChoose.isEmpty()) { + NO_SAMPLES_SPECIFIED = true; + } + } /** @@ -87,6 +110,22 @@ public class PrintReadsWalker extends ReadWalker { if ( readPlatformAttr == null || !readPlatformAttr.toString().toUpperCase().contains(platform)) return false; } + if (!NO_SAMPLES_SPECIFIED ) { + // user specified samples to select + String readSample = read.getReadGroup().getSample(); + boolean found = false; + for (String sampleSelected : samplesToChoose) { + if (readSample.equalsIgnoreCase(sampleSelected)) { + found = true; + break; + } + + } + + if (!found) + return false; + } + // check if we've reached the output limit if ( nReadsToPrint == 0 ) { diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/IndelType.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/IndelType.java index ee8b01d7d..af4d2ff28 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/IndelType.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/IndelType.java @@ -24,11 +24,27 @@ public class IndelType implements InfoFieldAnnotation, ExperimentalAnnotation { public Map annotate(RefMetaDataTracker tracker, ReferenceContext ref, Map stratifiedContexts, VariantContext vc) { int run; - if ( vc.isIndel() && vc.isBiallelic() ) { + if (vc.isMixed()) { + Map map = new HashMap(); + map.put(getKeyNames().get(0), String.format("%s", "MIXED")); + return map; + + } + else if ( vc.isIndel() ) { String type=""; - ArrayList inds = IndelUtils.findEventClassificationIndex(vc, ref); - for (int k : inds) { - type = type+ IndelUtils.getIndelClassificationName(k)+"."; + if (!vc.isBiallelic()) + type = "MULTIALLELIC_INDEL"; + else { + if (vc.isInsertion()) + type = "INS."; + else if (vc.isDeletion()) + type = "DEL."; + else + type = "OTHER."; + ArrayList inds = IndelUtils.findEventClassificationIndex(vc, ref); + for (int k : inds) { + type = type+ IndelUtils.getIndelClassificationName(k)+"."; + } } Map map = new HashMap(); map.put(getKeyNames().get(0), String.format("%s", type)); diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java index aa8a49175..80a497d33 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java @@ -96,8 +96,9 @@ public class SelectVariants extends RodWalker { @Argument(fullName="keepAFSpectrum", shortName="keepAF", doc="Don't include loci found to be non-variant after the subsetting procedure.", required=false) private boolean KEEP_AF_SPECTRUM = false; + @Hidden @Argument(fullName="afFile", shortName="afFile", doc="The output recal file used by ApplyRecalibration", required=false) - private File AF_FILE = null; + private File AF_FILE = new File(""); @Argument(fullName="family_structure", shortName="family", doc="USE YAML FILE INSTEAD (-SM) !!! string formatted as dad+mom=child where these parameters determine which sample names are examined", required=false) private String FAMILY_STRUCTURE = ""; @@ -240,7 +241,7 @@ public class SelectVariants extends RodWalker { if (SELECT_RANDOM_FRACTION) logger.info("Selecting approximately " + fractionRandom + "% of the variants at random from the variant track"); - if (AF_FILE != null) { + if (KEEP_AF_SPECTRUM) { try { afBreakpoints = new ArrayList(); afBoosts = new ArrayList(); @@ -328,8 +329,7 @@ public class SelectVariants extends RodWalker { if (SELECT_RANDOM_FRACTION && KEEP_AF_SPECTRUM ) { // ok we have a comp VC and we need to match the AF spectrum of inputAFRodName. // We then pick a variant with probablity AF*desiredFraction - - if ( sub.hasAttribute(VCFConstants.ALLELE_FREQUENCY_KEY) ) { + if ( sub.hasAttribute(VCFConstants.ALLELE_FREQUENCY_KEY) ) { String afo = sub.getAttributeAsString(VCFConstants.ALLELE_FREQUENCY_KEY); double af; @@ -354,21 +354,23 @@ public class SelectVariants extends RodWalker { // now boost af by table read from file if desired //double bkpt = 0.0; int bkidx = 0; - if (AF_FILE != null) { + if (!afBreakpoints.isEmpty()) { for ( Double bkpt : afBreakpoints) { if (af < bkpt + bkDelta) break; else bkidx++; } - afBoost = afBreakpoints.get(bkidx); - System.out.format("af:%f bkidx:%d afboost:%f\n",af,bkidx,afBoost); + if (bkidx >=afBoosts.size()) + bkidx = afBoosts.size()-1; + afBoost = afBoosts.get(bkidx); + //System.out.formatPrin("af:%f bkidx:%d afboost:%f\n",af,bkidx,afBoost); } //System.out.format("%s .. %4.4f\n",afo.toString(), af); - if (GenomeAnalysisEngine.getRandomGenerator().nextDouble() < fractionRandom * af * afBoost) + if (GenomeAnalysisEngine.getRandomGenerator().nextDouble() < fractionRandom * afBoost * afBoost) vcfWriter.add(sub, ref.getBase()); } From d587856f2da597b289c7c9ebdc38a231f82a06ad Mon Sep 17 00:00:00 2001 From: Guillermo del Angel Date: Mon, 11 Jul 2011 14:17:59 -0400 Subject: [PATCH 11/41] Private feature to input a list of family descriptions from a file and to look for MV's on all of these. Feature can also output a detailed description of the violation into a separate file --- .../walkers/variantutils/SelectVariants.java | 58 ++++++++++++++++--- 1 file changed, 51 insertions(+), 7 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java index 80a497d33..c60162728 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java @@ -48,6 +48,7 @@ import org.apache.log4j.Logger; import java.io.File; import java.io.FileNotFoundException; +import java.io.PrintStream; import java.lang.annotation.AnnotationFormatError; import java.util.*; @@ -100,6 +101,10 @@ public class SelectVariants extends RodWalker { @Argument(fullName="afFile", shortName="afFile", doc="The output recal file used by ApplyRecalibration", required=false) private File AF_FILE = new File(""); + @Hidden + @Argument(fullName="family_structure_file", shortName="familyFile", doc="USE YAML FILE INSTEAD (-SM) !!! string formatted as dad+mom=child where these parameters determine which sample names are examined", required=false) + private File FAMILY_STRUCTURE_FILE = null; + @Argument(fullName="family_structure", shortName="family", doc="USE YAML FILE INSTEAD (-SM) !!! string formatted as dad+mom=child where these parameters determine which sample names are examined", required=false) private String FAMILY_STRUCTURE = ""; @@ -121,6 +126,9 @@ public class SelectVariants extends RodWalker { @Argument(fullName="selectIndels", shortName="indels", doc="Select only Indels.", required=false) private boolean SELECT_INDELS = false; + @Hidden + @Argument(fullName="outMVFile", shortName="outMVFile", doc="USE YAML FILE INSTEAD (-SM) !!! string formatted as dad+mom=child where these parameters determine which sample names are examined", required=false) + private String outMVFile = null; /* Private class used to store the intermediate variants in the integer random selection process */ private class RandomVariantStructure { @@ -148,7 +156,7 @@ public class SelectVariants extends RodWalker { private boolean DISCORDANCE_ONLY = false; private boolean CONCORDANCE_ONLY = false; - private MendelianViolation mv; + private Set mvSet = new HashSet(); /* default name for the variant dataset (VCF) */ private final String variantRodName = "variant"; @@ -169,6 +177,8 @@ public class SelectVariants extends RodWalker { double bkDelta = 0.0; + private PrintStream outMVFileStream = null; + /** * Set up the VCF writer, the sample expressions and regexs, and the JEXL matcher @@ -224,10 +234,29 @@ public class SelectVariants extends RodWalker { CONCORDANCE_ONLY = concordanceRodName.length() > 0; if (CONCORDANCE_ONLY) logger.info("Selecting only variants concordant with the track: " + concordanceRodName); - if (MENDELIAN_VIOLATIONS) - mv = new MendelianViolation(getToolkit(), MENDELIAN_VIOLATION_QUAL_THRESHOLD); + if (MENDELIAN_VIOLATIONS) { + if ( FAMILY_STRUCTURE_FILE != null) { + try { + for ( final String line : new XReadLines( FAMILY_STRUCTURE_FILE ) ) { + MendelianViolation mv = new MendelianViolation(line, MENDELIAN_VIOLATION_QUAL_THRESHOLD); + if (samples.contains(mv.getSampleChild()) && samples.contains(mv.getSampleDad()) && samples.contains(mv.getSampleMom())) + mvSet.add(mv); + } + } catch ( FileNotFoundException e ) { + throw new UserException.CouldNotReadInputFile(AF_FILE, e); + } + if (outMVFile != null) + try { + outMVFileStream = new PrintStream(outMVFile); + } + catch (FileNotFoundException e) { + throw new UserException.CouldNotCreateOutputFile(outMVFile, "Can't open output file", e); } + } + else + mvSet.add(new MendelianViolation(getToolkit(), MENDELIAN_VIOLATION_QUAL_THRESHOLD)); + } else if (!FAMILY_STRUCTURE.isEmpty()) { - mv = new MendelianViolation(FAMILY_STRUCTURE, MENDELIAN_VIOLATION_QUAL_THRESHOLD); + mvSet.add(new MendelianViolation(FAMILY_STRUCTURE, MENDELIAN_VIOLATION_QUAL_THRESHOLD)); MENDELIAN_VIOLATIONS = true; } @@ -289,9 +318,24 @@ public class SelectVariants extends RodWalker { for (VariantContext vc : vcs) { if (MENDELIAN_VIOLATIONS) { - if (!mv.isViolation(vc)) { - break; + boolean foundMV = false; + for (MendelianViolation mv : mvSet) { + if (mv.isViolation(vc)) { + foundMV = true; + //System.out.println(vc.toString()); + if (outMVFile != null) + outMVFileStream.format("MV@%s:%d. REF=%s, ALT=%s, AC=%d, momID=%s, dadID=%s, childID=%s, momG=%s, momGL=%s, dadG=%s, dadGL=%s, " + + "childG=%s childGL=%s\n",vc.getChr(), vc.getStart(), + vc.getReference().getDisplayString(), vc.getAlternateAllele(0).getDisplayString(), vc.getChromosomeCount(vc.getAlternateAllele(0)), + mv.getSampleMom(), mv.getSampleDad(), mv.getSampleChild(), + vc.getGenotype(mv.getSampleMom()).toBriefString(), vc.getGenotype(mv.getSampleMom()).getLikelihoods().getAsString(), + vc.getGenotype(mv.getSampleDad()).toBriefString(), vc.getGenotype(mv.getSampleMom()).getLikelihoods().getAsString(), + vc.getGenotype(mv.getSampleChild()).toBriefString(),vc.getGenotype(mv.getSampleChild()).getLikelihoods().getAsString() ); + } } + + if (!foundMV) + break; } if (DISCORDANCE_ONLY) { Collection compVCs = tracker.getVariantContexts(ref, discordanceRodName, null, context.getLocation(), true, false); @@ -329,7 +373,7 @@ public class SelectVariants extends RodWalker { if (SELECT_RANDOM_FRACTION && KEEP_AF_SPECTRUM ) { // ok we have a comp VC and we need to match the AF spectrum of inputAFRodName. // We then pick a variant with probablity AF*desiredFraction - if ( sub.hasAttribute(VCFConstants.ALLELE_FREQUENCY_KEY) ) { + if ( sub.hasAttribute(VCFConstants.ALLELE_FREQUENCY_KEY) ) { String afo = sub.getAttributeAsString(VCFConstants.ALLELE_FREQUENCY_KEY); double af; From 9d59c2cb618c92c52a623fd8a1c98021db650795 Mon Sep 17 00:00:00 2001 From: Guillermo del Angel Date: Fri, 15 Jul 2011 10:13:02 -0400 Subject: [PATCH 16/41] a) Made indel VQSR consensus script operational again, b) Made VariantsToTable more indel-friendly when printing out REF and ALT fields: strip out * from REF and print out alleles in the same way as the VCF so that offline processing is easier --- .../walkers/variantutils/VariantsToTable.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java index d8340b761..e7448b43e 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java @@ -76,17 +76,29 @@ public class VariantsToTable extends RodWalker { // #CHROM POS ID REF ALT QUAL FILTER INFO FORMAT getters.put("CHROM", new Getter() { public String get(VariantContext vc) { return vc.getChr(); } }); getters.put("POS", new Getter() { public String get(VariantContext vc) { return Integer.toString(vc.getStart()); } }); - getters.put("REF", new Getter() { public String get(VariantContext vc) { return vc.getReference().toString(); } }); + getters.put("REF", new Getter() { + public String get(VariantContext vc) { + String x = ""; + if (vc.hasAttribute(VariantContext.REFERENCE_BASE_FOR_INDEL_KEY)) { + Byte refByte = (Byte)(vc.getAttribute(VariantContext.REFERENCE_BASE_FOR_INDEL_KEY)); + x=x+new String(new byte[]{refByte}); + } + return x+vc.getReference().getDisplayString(); + } + }); getters.put("ALT", new Getter() { public String get(VariantContext vc) { StringBuilder x = new StringBuilder(); int n = vc.getAlternateAlleles().size(); - if ( n == 0 ) return "."; + if (vc.hasAttribute(VariantContext.REFERENCE_BASE_FOR_INDEL_KEY)) { + Byte refByte = (Byte)(vc.getAttribute(VariantContext.REFERENCE_BASE_FOR_INDEL_KEY)); + x.append(new String(new byte[]{refByte})); + } for ( int i = 0; i < n; i++ ) { if ( i != 0 ) x.append(","); - x.append(vc.getAlternateAllele(i).toString()); + x.append(vc.getAlternateAllele(i).getDisplayString()); } return x.toString(); } From 9b446020f95f2176092bfddf98a1053e259d7915 Mon Sep 17 00:00:00 2001 From: Khalid Shakir Date: Mon, 18 Jul 2011 21:49:03 -0400 Subject: [PATCH 23/41] Using picard implementations for accessing aggregation directories. Added more utilities to PicardPrivate. Revved picard. --- public/packages/PicardPrivate.xml | 2 ++ .../picard-private-parts-1954.jar | Bin 36047 -> 0 bytes .../picard-private-parts-1954.xml~ | 3 --- .../picard-private-parts-1959.jar | Bin 0 -> 347579 bytes ...1954.xml => picard-private-parts-1959.xml} | 2 +- .../repository/net.sf/picard-1.48.889.xml | 3 --- ...icard-1.48.889.jar => picard-1.49.895.jar} | Bin 1106870 -> 1106752 bytes .../repository/net.sf/picard-1.49.895.xml | 3 +++ settings/repository/net.sf/sam-1.48.889.xml | 3 --- .../{sam-1.48.889.jar => sam-1.49.895.jar} | Bin 536180 -> 536187 bytes settings/repository/net.sf/sam-1.49.895.xml | 3 +++ 11 files changed, 9 insertions(+), 10 deletions(-) delete mode 100644 settings/repository/edu.mit.broad/picard-private-parts-1954.jar delete mode 100644 settings/repository/edu.mit.broad/picard-private-parts-1954.xml~ create mode 100644 settings/repository/edu.mit.broad/picard-private-parts-1959.jar rename settings/repository/edu.mit.broad/{picard-private-parts-1954.xml => picard-private-parts-1959.xml} (58%) delete mode 100644 settings/repository/net.sf/picard-1.48.889.xml rename settings/repository/net.sf/{picard-1.48.889.jar => picard-1.49.895.jar} (95%) create mode 100644 settings/repository/net.sf/picard-1.49.895.xml delete mode 100644 settings/repository/net.sf/sam-1.48.889.xml rename settings/repository/net.sf/{sam-1.48.889.jar => sam-1.49.895.jar} (95%) create mode 100644 settings/repository/net.sf/sam-1.49.895.xml diff --git a/public/packages/PicardPrivate.xml b/public/packages/PicardPrivate.xml index 110b41d3f..581c47979 100644 --- a/public/packages/PicardPrivate.xml +++ b/public/packages/PicardPrivate.xml @@ -7,6 +7,8 @@ + + diff --git a/settings/repository/edu.mit.broad/picard-private-parts-1954.jar b/settings/repository/edu.mit.broad/picard-private-parts-1954.jar deleted file mode 100644 index 67637d3d9311d10767c5758006471a628c5a8a88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36047 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 - - diff --git a/settings/repository/edu.mit.broad/picard-private-parts-1959.jar b/settings/repository/edu.mit.broad/picard-private-parts-1959.jar new file mode 100644 index 0000000000000000000000000000000000000000..ae11e636b1415998685bfacb36398b34f1a1492c GIT binary patch literal 347579 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

+G{xAg?}Hksz=Sb>W44 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

pDq=%+^yW?exD~9Ak$05js!J2lIo5=@x8j3-) zNa3xaA5(iwl~J)o;M z7y8@I-m2sJ8TkNsXK$J2b%v?A{#5TviPiq3pmWoH>nLG>mUB0R#@KWq^$15+m-q4` znM-UF(|2jOQSsoOEjDLaLUR>DPR`0?^GIWFUE`J}Ie1uT7R$m@za=3L-d> zM~<4uHx+N>U$T&{rj!{^6D$d<4Q@KAw?|Ubb|p6I?QkkF)AZxmJ331&j&-smnwcC&aDR-r55=v$LHJMx`f0wf{~^}+ zW0i-ZYirGLhcSL+g|0V@v{fC<&S1Dp{8HMt;5-GDFGrB3`0s9Mu#w7Okc#tJDbkMX~s2GG(!qDHytw6v7#Im%aZS4$I8A&?K$2j8qkgL!-`l@ z%wb5KmX+qeORA13keX%FB{SC;_hJ(0q%?_x6>y^3CxkjUl^Afm+OXnoO`4xnuQ^lh zivfnT(SV7ONolm!_I3?7^=8?>lnL$g^9MZHx;Sr->MM$b4jsao`)fQus09Q|Yhrfu z82B6XJYF{xn4=SAZh?#+*(fpNb|m?DVeA^b*>O0%INzBltUQfoZRW^yHdJZ)hUzr0QyVUk2+nZH&xQdWY;l|ezuQ)=MAYTjyol)&TM12=Gb^x zMK>@zCpd={(`P-%qd@J7i}1qw?sSgPpMmp=ii)}k@2X;EL`}?u8_Kq^%Q9|pKDeV5 z#vNXKH_`jF8DisV7LO}>v^L|9T*_>N8P*>x%kkk$&KW4Vw5nblh`Y|PJ@C_F*CdFjYiviu2)eoF@UI`OYrYTfg{j(J-lH}G#g-3s z*v0yIqc@Wl|CGe~#-U*U4g}%HS<9XIfj?F#e?MO)lg^e?G?((aP?&IEmS9J_YffYrYNxm%w8Db}lZ0`|rH71(_PV^~HgC|$tr3-S=A z!0Q`$?Wf=rxs?oD;KX8PgoV7T&DIM1SlbiFp#^_+ae)kXAmcn6aiVLTIx?H*)Cl)v z$@}(G#~0s1wFUFK7&5=l>qf69YqTtpJHg4KWq`N9H8T9p*;<85Xs5O;-0R}c=zWt? zjKt*kEB|azeW@FrcOXOBONav7$(uN0hBs(bYP1O*(RhN~o+$qgU=L+gx0rYGdAJghBCk@r*OtWwP8OgE<}$@PZH}rL^Dp^cs?P z3@>n;Uq7XOwH_t3+(Q7Z`uLi5oR+P`6`0_d!~YlSr0d(u9otpEOnis%6uwYySC4)z zJ~`!uQiL&^^seMY_44N%;!$F@H$DvHg0*I*BPJ}fY-T!>;$+x3ZA5zGoxf2`i{T@1 z+g&@q7f$hb;KIoSa52miyiheMU+vb9`bwBd7NiyYCghjrCQ%ue<~0KGXj+^!FPg&{ z6zrXx9jBA2sZ@_(23GeCj}Heu{JxelJkI+5Yo(&l_A!u;cdRZA;PdSOpL&pnQdv{!L#8Dm)sb3LjLunl zn5($gQ)di3j7jyq7D>Af8X@70WqzOYVF%)&+&d`Af6|hOs2omv!NXn!Dkw!nI!>Vj{A|5O~tt*xyaa(X+2R=}%d)`a!2=#-u zW2p0BO?5>10!L~F7BkWIuxm0&7=3=F76x4kt$zPFYeZ5xSy?RdD@((nDhUMc^Aua>XUg&TqEAMx-hj)1RL$^QVoC?#3D zc>zS9^A?x=6_!te#$W|xrSzJm8CWG0QI)t@s^EacQuZIw`;aLMKcb_?^mii%iZJL1 zI0&Xb$bwQgIRtGi{f(zDraID|U0wbD{CUFd!GlACfuS5(**o$NutB@0prW9ppe|*Y zSjJt3#)bb1O! zoh8i3R&DJ1Ka{Qta}T+1dzPU=xQU{I~{SBAQayKKa(f;OPS05wO!Sjc@{t77ddfB2ShIuUG5sFCutqUgJ#eR)QA;BbTZ1_7 zHzngRo_(l5k~JR!`UHBFE+NBGm~|`TZKGf!Xe7e*_wSruf*hK)Wh$bq3wF{B$-}%v zVqIE;vb~xDKs96&rj}qg4(vFoULxNEBciO@4*>Q|g8W zt#Hi}#uw%O@Bn2`9Z9MySb+}}H`@8;PBCz;04z7Do#yiSyUOL~vpedk&e_4eFeHM%`$V^rqy-B z`GW&I)Q0|-vwegbo7O@T6I#DZA7{=L>~zw7!**Fdx~bLKpPb{1HiVe8IVNz0rQF){ z;>2D+OD6l%qGa7dJcVuc!TP0CW5BK{xk-pICIs7JpUSCWYkW~j{L{wPEE1S-%+j|< z{Kqm=9MD3fJ-HY*&yLw|a$LB3iDW1I=GVI)Q2##1|DapPd-%1c^lt?xOU34^f`iHHcD_`d_}f2n@)b1SHWy9=adUt+ zRDem8GM>hls%Rp=N1W!Gj0)^U;>?-^bUV zzqm_D2=a0bVdk0YnM_qk98&r#1HL5%IPvUf2cRB%K=fx`Q%gAc<`VR`QWOjzYI;n} z{5Hf|Pwuu&%kJ*Hy^0#lt!k@2q~{WAuwcb9t*AyrP3I0Sp8d`= zaCUM5Q%~LLuy7_03|Ljj{+sY{FsDIGotu@r(dvnqAccu{` z%4Ze=6oREP!hZ#5gu|p9Agi&r1Kfo3_!nHce6IO-goo3f@(`XN(zxckp1V)FXB`@k zw`fRqw9-SIrZ+o}Gq1gmHxfS27q9(5T7F%#;Pj@3pJSgfkPWz_q8MhO?g4=rsmO*} zq1xD{_S&J-1FmZQ0PkwR4>y*LL0-b6V2x5gnJrd^4YfKX;@`0#*$qe_e9 z2;gA#f#&G`6bUm9gy&Ly3$r29@?mwr2x&i42O-2`*%TH;9uoI78V)8i4WAwzougSg zZTbTVpXqTbXFrbc#b*ei-6{b-t`YjP=SER>e4LS7SIGsI>9pF7b|Y49t?1LQ?E@PA zsc_>oxu{LEippVQwLG&iC%6iR*dqPoj2JX?xm9daIXR&SsI2d^$y=0~{-cO9*vn$p z>!TZq77;j!JLAj{3u3sZ`-yG%G@h&XqliyJt5FOLgJ&&fdRRaedtN z2iv0Q2j7ySYi^^WLogR^zXwv`QA=FOxG2%7FFSS|U^RS^Qo1GLuxlNB`<{j>b0C|7oQ>Vb@h0{U_J7Rc< zWTPzsQBpH4X=@RQP@#>0Pctq((dV#9Wmh0C6@&&!9)89^2pbUDPfgb@X6e@@w3xm+w>X-+jsc{|^E&352 zPwLk$5nwgauHUryrg$=uG%c;f#_zDt_Se&jvS6{g=@G4&oqJxISg1HRn$5N5FtGiM zP#2rrvWhda?t=@MJS;LF$=zloEa6Vr{_a05dVkdF*>CiG7GW zFIQKsVy;H4p#{c_1V{+G{ox3QAcJbBSP|?9O~AV|M_@WJid+y1q026LW0o{|9|oH} z1B#?byu6^}$$RbH{dspn-8k%?4vHTC;4Fs3#M>u^-7R<2+d1ctPs$jckK5(TcvodY zLHzK?7O>l3_wUc&4|qts1ynYQ`VPOFXA3w^wwf2*mNLJ{rEn2-v<}@Bc6TDsdBAlP?@%B4Vg)YyXdQ z)PEXJsy6D%;)uTJp#JA*h!lp}mrHBN0-@&H-onD)Q?b7vA)}Vg$<{+JA8pBAZxZ|| z@jc~4<2lUy^XpG(_S9BT3QW^5LRu?x!~Mj?#Kl2P_um(k9@!RjF~*<6V6eEUm%YOM z%IHV2%?vRz2Oy zKTcFiGOky2^~R(LCn_6n7t_#D-xNEEXfe80OuqeDcggZ^tRar z@m+dUCh6Cv3AHyxfK^ef<_I5g3Ovxcc}%#hRZRy<)*}mQPMJG?xu{gZ&`NlM~>>SY^LyVzO$@v^I2zmvBCL$fWw6pT($)Akd83u$UE59Qks&+Z!>aoFU%GP=#OH_$F`fytmy!Fs+LDaE(ufe@6+N9pgMm?rdh+@l5 zjL+j(O!)bEKO@7Zor~;^Iaz^qOLF_=YOS^PZg7FcOO? zILG>XqIKe=iJiB(nT-m;e(72%AcN51>8A|!G>Y$_%&JtbrT>jNfk*-2CrrP}UL<6; zQd5Oo=T8o{Luq;w&3V02$*k&#SfCSy!yLO(y!>BoDoec9M%P~ZJ!h5%t42#7d^7hJ z>n-xM*`I}OTA_Mop4=K?dL)xZhW#sVdJtD(Z?mZ_zNHYCiAB#7PEY#Fu6iL_O3+4* z%Zrel++DzF3#gd6>T6JDVxb3=__i=Vsm!#Y-!5PS`~|Yp!j5g&d$92}Stg%z8r?)5 z7c^FV8pD#sn%3IWqH3ma%d?XB4*{WMqbkwH2BwDi)_Wkh=kF&tk(YT^h6tNpq4UcI zF@&8WPX?X6tzlE_wSL4UKQ;)~#1V6K3>62~Qwc|H{pa{MX!jVsqwLncNvnkY*i%Qa z_x0Ixdzh`s@dbNtiOncP@InYo@WMR%c%RmDA8B9p3`oVo> zKW@ea)O0~&01nFbgqqyfnXGSrw#S3v^lkB;Txz6t&>-fM<4CyR-i%(@C^$o3!VPs4 zqjOecqC6))yDok(_I$+R;FVn{VNBY0>Olt2s@9o;;o`4V4uJl2*t@b2&alME`MlH+)kYNUm$KDVE;;H`V_K#ij?Dx%~Os2O5zd}1x-&4o8 zOg!fA$0_IHbLaC^AA>*`|BmnWd*}Fl^)@?wx9cU>FI{(4F_2xUH;lMC6zrNQsn9V@ zVHq*3DMpjbzk_LPgu)@cP|(R8F&4!^#t<}EO%k`hN`0SbsquB$&)+i5_S#K4psuS1 zz})d`@Ql~qO}s(y4;DjGp8(MKaW}D%raUzL5ixh8!^Yk?IR=3_2bU!z-dcTTB;IOb zuzckGA=Be4{`9p0^z}{jk}vf^H4-o70*eE=Y$os)fd0tu8^{Z+)UiB2CCX8f0RsvC zGrixAYn5|NRkG~aI>kg_Vck<|pN&^+ek4np8oxb+vXK(JL5x+^X*izC`5zg=L=Wt( z#TJXPBpi&l8+uNx(bo?ChOry3{S`6^vjAz-#+I6nxj2zjU``jtA>1nD@a-xDJ&0x4&xwJz^z}n zdHI!IJG)BRMxcNm{Zn#};&Bz($TI%kkTl^B6C+y=Ps9}0!B%VjsR{X8F3)>mB2d&Iw3NH`V1q;2RDIB&z=qqGVV&j0Y_qh`QA~~-K_c;%6`0y166b-I z{fV(6AXw)xpvsHQ!RILl+aRBmr;&J|L{`StnFxSZS&z_@1LaN`bx=&%aK9#}b{vsN z14J>)4gRKhcB_+xc%P}*iE>A&c|%KQZiledZ_O$tK=sDmHi)yMG9SkKQpBs+(SB(T zx~6ak$3Wu=A4bJ7%u2b@wXDmG@VRY4SKU`JOHPJQ?P(57E|MjosWEZCw7fq9ZlTMi z6&Gu7rJghX?5x~z@Rm0ampi89O_L&lo1Y^ZMwu9eo;+$;5T`Pbr16_ks#vKlmoROp_?Dc3mW@_mi-i6^x)9^!u;pi z>Cbb0fc_2|1Q;f&x%T{5D}km`!T++RMkJ!8c_g{#$i!;pRQQPZ>~2fZd*DEWDjN6j# z2=x@D+S4|wp2)nNrh6f?Ez8wF;sl=Go5G$xVjvTPj=4c6#>NrreUr-ON`g=r_Rgvjh zow=y*^w3r|w@_+|mmf9|!<8n)Bmfht=HA*4Pqafn$L5ikU{vhDkMTex;DtFeGbxwf zf`oU?N{0L}AY~ahSU^%MhGZsJH;W=B^V|Jujync_B2ETTX972}_5JS!vyjHo`Sq~| z3$3cjwy|sOkIFe+>0=oRH}N&>@`PyZG-;RDjK1C4;N4$H= zzSZLgMZO($cf_wYE?>Z`UU9e23CR_m)}`|t?zycXsLjwO2S=rtXEo+n-t@uN$FhFhS8 z;g81>r=7D=)le4f0h;u|hMO=ek6sIhUYxpDQD&qV!V|5_JbGr;1g&XMl4%onshkl@ zx?|y6o$Tf_9vc&ivNKZ;PxjWgt2}z~-0(*TPGHsi>cOJD(7-(f3cUh>{sgQ>QbkiF z4c`Al*E>bm+I3mDv2EM7v18k|Z6`anZ9CbqZQJIKZRg~x`m4@gb?UUXZq~YZFW$E1 zoMZMe`qN9f42sF?^DW$jh-ZvG#XmzdST;w`oDsT{LglByzU4&&%M7Z7C0-%tMd^Sy zwt&ClE6b8pN&$FeTd@~VJj@^{Lf^E|>U(YQxJI=WdAx`o z%`we)#%CmRMR)oNVcFO$tZ`WyLhsj-nv!H`{l`eAd?UFSeO1lJrCm!exWAM zLCAo=aS9{>R)i`-ZP{iKW{kLshPcC$^B`>>^>sBqBhZ6CU#~Ap@3g@(-5i{os?VyzYzM)cKv&9;y>lY zG-~LT#}7Vd;HQxLw_5JM%ZY!9;{RDr{O3KgS_9G@dkHaz9KR!BC8nBW+Qjg$tMQ1d z;Rt7zltPwp^#w_@k^S!?Y>$I5aq2qF(xVKR`UN%Qte%}Mhe zNtKO3g%1VfwAmgV>pBzE6NI1L?mN?7%-@rl>FoEa9w$9++pqu=>Z9NW?){OmFX32z z=o@szud_f)cafl;Irk8bFS=fS;g?c)OY<*1ppOl3KzEg(@30#^L|tTz7k$86I{nEJ zo~p3z2!*8Nuv!iMVm|ZV%tXlc#zefGME7&*B=t=35`&tu&cUN(kX1<41}c2&kTrR2 zlX9_Rx@^HRs2WYNGDZtN)?k^G^%{Jt1JlT>*8ZR%Y^i_@aYPjr=6gX|V-%QRs9TaW z#jwK8B8iVl!@V7a)IT;_@=n_E-y#@Ep-PsbsVZG^vM`h)C$=Dn>|#P%VWH+Bf?FDd z88-|F&35Nw2_mCAnCsodQs~5f9QCA&+1V6?Ay=qTfdOz&q924^HK2r*XBP|r zJ>&gGrsY|r-Z7-F*4NrfJB&uA#ob0qcr%G{=VW*rm51}H=ux7r*BclY7v=`^MIVq} z^EO$EMv!GPn96W$*XhnrV484UNIFnGehHM)L{&s=C#|g{#V2}FC68hNPa680-Iwwq~{=!uSItjVTQ z7j4hO%NQSRBD|xBzxiQoE&ai7N@8@4Wa1M;a(Y7pNBG!a9oA0XTLG2jP?m>{6iDbl z4$K>6;+N;^kd!;!p7ZtVzGzS3@6v=|$I+2v`n%tSjkDXP=@L!6sA>v9wJK2{pixvp zUnGoEG;Pk}a}4I^=flmv#f?|iUdRdwQY1&(L9km&jLxX3a#ZYSiqDwPSiE~qHWyLu zhK;*3<$)R~!XGuej=Nnen{y4?c8#{8cdz5AjG700|Db!7*gw=n33|*w&-!HvZ zv#D|GYM$VC($oe+5WwRkF_MX9<_4VZ&YzHz{soo{Eh%O(g1W|~<90oJw@XDDm~@O+M|7)g{I*-J|(F%0yqfbFeQSK6wr zC6a)u(*%=ot6%FK97Cz3J*qNfI8=urJfgR;omLaY@nMsbjOwcPfMefSoq*^lW@wIl zZa|=&g6mWzYDVqnK8J9Jqi=GdA;+z*5faOdo)g8up588Pqh*S0+26crce+(Y+OE0? zcjziJ(@;Y^e``?7cG{wCXsG7YV|R7CK8ZqG8ALjITr}HkjOu9hOY$ZTm%6cOl?y;A zA`R>N4I*SOA0V(Q2mLH*4|Ns4n`vJP;?OD#1o|Xl5Ai2{7l4FB94O}_Ct(hd+M7|E5Yd;GpOLVVBk_zH1`e(v(8R_Wx(~UHBGt-Fx;&V1>Tfc(fY%F+X$R-u zIEM?vJxWktjJP62F(z+~X+>D4YMsEBp^0nH?(8HfHQtUY3@O{MgQOL6I=TJ}eHALa z+PD&fCKjfGk}1xrp+_CK6BraMB4rUB&`{?-RyOF~M&X3hAVGHGwb2R6tA(b6(w+H$ z_01moO;-cxy~`;$k859Am(iEe>PZ<88skhZwoq45ujhvcSF!eHXXoJeOSIg3NGVW8 z?b;-?)mn#QdtaCZc+B!D-r}^;kB%<4Dk9xOoUNVeTQo}tA{DrUZY9YT;dT}J^jXv? z9+peakBukY09He7-#5)Bzu?{6I>fi5=qPe!NkGWw{kaHNXA!P;PqENzaZ$B|2aP<7 z>0F{_;;>JpLE}^l5NYIOc`=jl!v42e?ek`KTDb|)GH@c;AMn6G$%;(CyU;DHA3kt9IPvSY?h&LZ)1KR@O%uw zMURTzTvDI_f6lfMasZhKxB^L@>=lO!$KLHql%3%FOOW>>^S~vO=Rui$d_EF0yn?(0 zz_Ks`DaAOzrtUQ$j^AL4Y_jeKH^~E@>oZk_p4I}ogc5}L+6no!6!xqX=I%so0uF$+ z;%p1@V;pQ~?b(8R8V{ek=+1-Rw4@O(tG#9wglK`AL=shO7$sXGBfJhBTgwil&2qdMsD(NPL<4v%b$1s9hB zZ3pw2eOzwc;2m}&?U)6S6ZLxO5n}*ullQ*Yq3(lp?=Gs?HjInyqAfepLH5S{{Z$4BVJg4?z5ipuLoNUm z%eY0^$_jL#9Epokfj%It0|; z3^7O(X}jux9547N{#s--Mq;pB@)lZnF(33MqXG&-l2-ujmmAiu7s=u49Rc<3Li@vfY0kte9{`rLnb8nVjU!Gw>GiM^;+ckO|r;2l|K|$8|l8y)RX!vdlPH9pYXG zLDoJu`TP3b`OkOE8XKqn@FHAfWq zQ#Fg*bjYVsY;*S7;Z~eY7w=7$#m5VJC;>sPABblLy6`b+VW5^moSyH4dW5CG0OPC- z0Di#mOp%x%#}0kp@~Y+iX3!6vYLA62|2-cR&t8}-lb2{YXJglOQP!gog{P*EsG?gv zL{6S_n2Lv{7XtP8!n%%?x)&EBWM?U+P#C)k2Frv*y!zhtW?gKaLwRRF_MvuwFu8;g z?~Q}8E@Vo#VMA}n;-dYDge6ZZuUWIRGgb?11KXyMcNvv8O>-Hdcc_)b&Bx2js(hA_H(vzt`x3Jp7D4v&VAXG1^2L z+CrM5I?ztt(*@{EB?Is?PqvmvuEpQzl4Ki!sDThC)(1{yC$P-%dwF1beRuke90jPF@o)pf z{`{X1M!L(4pku0KOhHkT(xe)O!OBgh=QcC0=DoHOABu}NGq7sojs7XE&NUR75S1-7 z-3pI5%e#awrx4R9Dc zq&GzVBg)8)&~jM^t~GouX}7b@3dfZs5*@OkBUnPCRQ0lfD2vQ(uz^8TBFQl-6|Y?B zj9-Hc@HSUX+Ut~YasKutwl0y8=$6o~mGP%ypI~F*Sh5q<(CLx^UJ)rI!6BJ<#Dj8z}}i6I(Atdo1b=%S1zgmebl{UE~_Azs{u5X-b9WGc79cY-Y&USb7T@po%h zF0+W89D3hiMKy2dT~((SOk356?b&@7NlB1#(QcQmjcEy<{&Njj2O7@}h=S6#TSFa9O zB>9_$n1G&uE(Q)qF!_mA<0_NyygWBfctlZRLAa!FE=0N2`0|#Fto9){ltkUgD&A(Z zZjE`@Fu}eF=;jLo)s!|cSWWuaLc^38wAqF)hk6^x5J+f@K`ksLObWI{keB9jt82ff=`EJglYAs% z@g3iwci~MU>v@OdWcRRspJ7w;B?4%PGWb_1={EOlf zl>GJ{h$y>$vn)ktB|!#DhP)#Y#~bCe3ZBzso|H*1@m|*{QLCsY)bzxdgK{I9Y)tkLv88HergjhhhJ&Pbi264Q6RX#sPZ0J6SPaZEKG$=SkcM5g@cmV32xrmdo zJ%xd64cRLAAxwWkia3P=;&o*hI5^UrxnHLt1>#kWIehRFc*na?`6Kh<+gpBjw|rEb ziw!TKSDpa{8ng(~mv4 z%*8?1*4-it3MUR84hp2wZpDoHa4U{gf4qG`3PX#tqD<-)fjR7)t}1H_DGp>49ISJw zA#MS7-v-hp|-rWwR1~n zY4A5B3jxl~Pc>QIdB1iy2R zxorxio1F8F{QP)K*m8%D9TW!(z+yP1fojS0%b$O?P z_lmt60rA@>zjWl_jg%yBlJgh5v(ZkRF-O+(c8y)Jceqgw`W8sE81xv~j%9r%W2w;TmQ~l{~%CLFCJQ0~@$)|KLm=T6y!JY!M59=+8^ngDx zW-amsBFz~M#z=WZ0W!ov1_1@vNK-Q(ev*2hSBv3yX6Nc$K5ho)H;s2cTZekh>{Df> zU^Xcuc0x8_ar(BnlCc_-fVh$|ojH?{O-sC8rKs{CzC!d#kYrv+DPIc_d(wA4w*-!s z=}Sx{8l_920{`?f2Bs`P0pkyKf${nGkWFI3Yl)5+=<=gnskIrnIvxHdfpH1*o0V2v z@(rZ2C}vT^QWmL%*$jMlX&=w4ToYE7sf5)e2A{#^Z;f`6cPB^!YaaxfLQKCAD~P|d zjg*4!7GPDj+C`DYc8;!PiVFREYa8QVoe+;CR2RpOa{4ItPD6@6gxTMJ89&?CCodNu zhb2egn>_bnD#*^NK7naf(58Gd#BpyQaW3P}dc*0x-D`CAa(c+|<7~2c_DpQ{>1*Y; zzIAtyHKMW3;tD(~7g&6U3QZR{FN;rnQwAIpz)jRShqWw#PjhG+N1{ZB!|>0c%p|5WsER%EN73$kQPz+nClD73e zEh=3+Br*wz@u@qBK1$YOD8D(P-Do>d&JL4}T1r;hOfO$M44FK$xJyd(IJg<&i*az0 z|HF(;O_^Hl(d9lbcqPw+h!s~Lx+#8!@RT#(Sm`YF40|zEnMt0ms8&PoQ-|4GkyViu z!#W=UpID|%$IE23mvt!3lq$tZWTG6`U=>s|e>Vo8&0<2DyyW<3+qr0EMr0|AXqv3s zY5&N=%1k@g`)EmoAtCOw-0EQ^cAQhPHKp~u*kWz5Iyepo@*K)^M(=exY+Bw_4<1nW zc_|baIEP^dw5*XM;v&+PEdqfY{NWBM1C)rcz!ZK@<pvC=;L7!8X% z#mymq{spu&Xo5_YG?p!*tft1yBWp-7&O6(#EX%%6whElbn=} zS74L?iQkO8}4DL z!KyoGEgJ(A)a=1%!Z2AhSv0S{7f#IYbB7ZqN3iMsB~Ga4gET}6?7;ZVo3exl-B(ah zuokPld>}e)e;k@0?|F8lB#Hqk+O8yx0P4(Q9#&Ip$oH`Oh&3|!zIYiv__ATxBT4WR zKo4?b>`i&Sb4)vAtl6v(cO9r(uFbH(sAq&&)+=a~ zrvbDDy%3@5orgcQ$F4cSVmHUp{oKh=nI-vx(A4di*mD^r{Uu3InKyhN$s%tuXgA=r z=;a>lbWEs=mkYn!fh%hhc`eki7Bf&5u{I~a=;hnGoAQ=#u{8cddBZY8i8458S7~*f z>;piR;2ulj9`{$j{N{>@G@94~Ya_p!c;R?=8vQ#>IN&r;bw*)2_TsT>L%vkhdC5CA zVI#R~JsPWRuzU$NxwlGvbaL;s8E!wovy9{m{@pOZws16QkNanl7DtQ*hgu`(lGD8y z+g~ny55)A|C?%ZEDkwJrjVb!x9BS5Z8S$cki`xQDDr4%8#^96gD4O0l37ruZb$YPF zZ|VgA$K9zX(_QX_eGBY?)W=|d#7PfvzN;j?*g*X$naeoTo2DQO2^$zWs=mM5YYv~ z$y;XpA((vC<`~osvS_atMx!-~!|2SZsBbt%X{F8&oWf!`Cl!=;oSs&4+U^l8#hiku z^=-UEa(V`wdVfn7vZ7{c2lzugFib-64-j6sekkAlXqS--+BGWdb~^nI!D z#fuTzsYJ36qd=ru%<1woQt1--YM~SiVc>&<7O}02tF}Xp+a{j>k0)w%bHGVZ56(gpT;&-O# zUAB1FZ^Eq1gX^!zW*ijv<9|DCBf?}0>~7*p7yofcTOHma3-#JPj{C-BxS43Qr<8+6 z2e%fz4RU`axoWvHXvqLhDKeqEZnfUP7?;(Eg~OCX_`*he(c-&vv*=GPf^6}J;%LR| zWt7qlPWHPTx}Yj08$80Fm#sTcs^D;N801THZHruFy`V|OM;@WRexSn^8Cn30bpugz z@08=x;<(|}jY-AQZ7i5Qz!il{B}|6b7S^ldV073L*BB*+bsCKkbks*YRhN_v9_L@?ID-PA+=ignP8ed zMSy1oOg@R!0|U(vdIivKNwr-{S^J$L)QGj;66t^EKwkptxg6%^VrQt{cgEDFiK!By zu08AzbHsi-l3pEWo6%tAfBzirj(=O+Wq&HUyej!?ToIXS5WOZ3;$y3szU-Q8BTXO? zIj+jJ2k45+{Ywea8UxWtY0>-3LiP8?B<5F5%m!`r(Urw&*^BB(`Eg$Z$0iu&v`VU0 zb5ti6RMWYon+40KXU(K}EK!|6GR;V~iUGO`xxf7YD*)u`PL!%#N^P~sdW}~}vfdJm zd;O|(2EpOlfAEITS*g+2w+#evaAmk;(aaDWsa!_z_Bi)E>oocf#nn{RSwh|tO&^Jv zH7reEB{qVHB9YIwX*s~^9DAZQgg%}c`UF(Tv7awYyalP}c2hnuDxK;H=hD2kEsfV)E^qBpQ!9Hk zRmq<#0>|F((jrIvYA2*^dsn>LlOnv+2&+E?SCi`fO`2!O1ZWcMdfrD24|i^GHB?Y& zQ9!NuA0L`II&aw6%;s^;u|JKR8tXCiCWs2p{ZuOMmnCwz!bW~>2u4m`UpgToWytIakG}hp3d#<@`KC){gcZH->p_2uIBra(P&iAxNbf`!8RADo1t=n=a3vzOrzy<%Qsp$>>_ zurx>Dhy?}}_PhEL;|re|L#hnNDER!@+g4h2_Xl$3bmeosgSaawc!UlC-kx_7Yy+uus;N%;$WzMZ9i?J#S)Ib@v9U#ICZ!yd&X9 z%7qlkgp;fU3-q{t-4#JeBwung$vhb6o|xwTg7e4%JGycC?MH5xb*}gX38tri^FrgFBK*b=KAMzt($w>aF0`PZNUbXT6jE|E+iV zpY{GfC(xsRdJaDfJm0JJ>J5r(BM!i1_O;;&6cJbiA_6ipWN9|>2dy=_!rCUO6~q_d zFK|D9y^r6JL1p2-3xofF@Gi&oBVY25w{x7X?|F_nFR%IadVteL1W^ztg%O6UAe?Z+ zh=}`vLE#G_3`F}n1H_>4m>-s+iCV_V+Z8-boTM6LA_-G?XJZv-C>OP_2_` z(020QiK{IM*;hl9t$0YjY?Fvzf zB2}`Hspmiq97{4vq46f2q0wcGZ4DHM0VcJzYr!<^1oZHU60(7g_Ek;2kE~Wy)l~ZK z4Lh1_SJ|a^nKQ6!uyWc@h~Sg1I1!DFfGeX4VJz6EyJD2qnYYGn@@%ryWTUrL8M4`8 zVT*z8q+)|9WS0%gKW;aFGuKoxO8QEG5N88=0FEbGcbljCO&3A3;CEfz6Us0v_l{u# zXMyV0zJRW8;TrSH^9^U-Oi}_PZxuX!A7qHJAdRH=Jxq!0N_T+37I1pHSVp^i>&Z%| zJBV;SUJoT0AX-(_ipVFVmww&>>=fEK1YZ6yHm+DsISH4N@OZaMsHQ!Y=WQ@KilFNt zEA_4T7$}GA;PHL?+)a4))A)O6vhvzMSc7 zRVq%#kj|>hx0+B2==`|~qj0~q#wK=|jM{U)n}88*T<7eJ2t_{{WBK%K*iTDvvySWv z603|m1Rc-q1zXULKJVj(A7JIt8d;<@nCL=*;fs4@?BTbY<63#=Z}&H4pq4 zN@o7xN>QBq{Ndlyp8grI1V2M~ocLK82tS4ylK*3c{1>y~-(h+#vQkn5zYxCIe2S{! zgS3lF@%D#6YjRlR5efnVc6G}(a;L0PT;~DsO-Z{oPc)Yn zQrQcG%M@;=@FpZSN&fE1LY(_i8B$tJw-No!0EhMPkKwoZah>X#Vo)F;95K!?XA%w# zqqEQ)OMjEmn6_%c znRv-+i<>X_CnXHDW%Lskqi7#388>7;Wof_M^F>S{GqNRl7BD2W18|@*gunh*27#=) z^)L0GvqR{|+4^tLg8y#w30asKILg`oV`a5-Bw_r|wqCH3&Ohu8-)XjG8?>}ACPa|@ zet98KK>lA*n8Zje{+I&Doj0?n6e+G2+z<1@bX^Pz^dF$QmEnxTH^3hXAqbcZmr9VrKl7IoeX5z1sGd7+9?Z$rp*hSW9qqz@}ky@P{$L4X<+RJ4WZ8b)J z2~>?NRR>_DpF||$+4t)w-f*~1cn_`E|oUeaG9 zR?)u>cH+co`~>$6%oB|_GE@mOt=CaBiY*q5m1HsrGi}EBhPp|0Om-4>rulH+X2cg( zqVXCDLk*%3V&~7($#VL9Xb{lr0;q1Oa{37VTd_H<<_ko-GUqFzA zeS}EB(hyk4$Rb9+%Lqa15t;@y-!bqQ#u(s_c?stJG`o~9Ew8T+H@h~-pl?*LGOJXr z%V>414PCu=UsqSVocdjLVuE2LoUrd~y6tow=iKi&eK}qE#PT`q00S&nibHfb{6OCK zVCOsMdSwVfZpb{^)_OBxJ4u5GY$5x4X_;P@5wLFAJa}mWS|smXF}*?`wk>v>5sJ4_ z1wprI6|dvBy-Y5Aid%87;p<+1`xArlVF<$7!t4v(eblnx$A`419>8h5DQG;_5%A&l zXSY&^b^LvWw76olX9-J6>k`UnWXXlu*9CqKo(+%yeg?m#oO}39;UQnkOCru^v&#&| zXSM4@m=!(~T8jxES_>H)bOY+Gu*`=wm@0W|;w?hpt&&j_e1p-A*Ux?<u#NdBI>zI&E-0C2aSvuyAy`ER za>L32Tua+(&?&2RgX!oe_|1c<8VdTYI-b{cQ3CFzvcEyKsm0}3!d^zkZ!;Y4#9mZ1 zvH5%*n7ipxm)=5)80!3(f%_S&0tQjk%&?cwoE%jZC17_(vH9>qo#@DBuLQgON$WsW zYSMy}AFV|Tn_dwDLOeKFr!HuVnQh*V{8{tUAx7DmQ-RtyJ~?WvgCFB2#OP1IL@-Rm zcw{1@+y+dP<~BnY>lQ)N^zT_p3^b8Xo8c_sR9@Q=ROQnC49Yc&j@+(rqR_kwC@JI# zed${EtT--MbIiFYO$o1>LiRZ|FXfv?tQSyZRr3B%5OzkJP^c!@hPVe)$m(pJBTv=&4Ni`ebrdyjanThg(FWk+ z<)l9uMr8#=Hl7_eun^(Y(44_XXsu6wja-Q=&6X*%w8bs1SqQ1y677bOfe zbBL#5Je~yTjaGW;(+L8l5mKFLvFmvq^!l;#-&0sv(C!?|RxqVRFQYQ4OA!6C!!lPx zTf@6rX9uC@M(p`lKG0xO(^?_W8#-}n$l|Ltfb1H0tV(k9(pLj@k$Z+8$$SGVjcKT+ z^1^q0dhh{nB2@zfAUb+yjEkei=IsDyefV zWL_H8wZeTJ;f+9_v+S9t4G(0D8?XbWAa$lm!eF56wQndORE$`$e_v(jR3QhH1J+< z8ps&<$&O2>HR)dolZmp*894Yi8h=t*D=sIcar}~{6atk|iJ(SRMZ0OVCLNG5-NpfJ zcUvqdA5U+<9WV+9Hl!qxNoOg^KgzW9*EFvXF?8^OvvfCHl?@V0lvS2wt2<)i<2fO@ z&oU`nK8#>31^r>E#<+33vmju?3*p^#-}46D~&Ec`8Yb zo_fpB!&EXmjH$w&ayG5xQ57GdKu)vm1(cRpY8K2HtaF4C5bWEN&5?k^-^6^zYpfL! z+i|ni2gHi-zY#V|ji4USd`7E|Uha>D#X-K(J$tWf>E(eM0O>F^GuWr~$U+Gb_XQ3k zO$sCQ>sue5@Hbv5?6gl2hgTzJ!JE4e+%^8*DL+W{n9Il)S6WF9;H<5r5KBcd1riyD z1ri{ic$Onv5y*GZ9g+Yanddx`=y?`FF@@pOdT}UIsQc^rb$S!6iCAp{K@=?Ek(^q|b)geCNWY$G9+0E+BHqeu$tn!_W+;O!MX;cA;Hwty^sB{S zWsgU}GIq)gf|?C}+_V)F^d?&*@#6;_9};c`pmLv;dMb}aqF^1Yp!R?{p z=RXXl4_(|-of_fpa>Z-POo+r1NUNjz$WYSA8ifP&h<#5emPzMJ5};a%qpokV0ddC` zap6C%{xL|yG~tUvq^&u76+fiW-P5uzPA+yc(tuiODX>MFIE~KeW>HnHlFnBpQ{tcu zw#RaTXJa+_RV8^~?CD4rV>>AZU)~c*xRD)N=)x5P;Wm9800T!VWpe9YRKOR!6smwn z8Kaz)(4T>V6+?ht4hHRv$B_Q2|C0|s^8Qc_Fml1oUrH~2liyNF#8Yfp!T*G-V zqjY_N))(=3cybDF`J2)4h{cb(62aJuutI~8tyZ_O-mo!ICH1Z)H%aa7nTE0T}mb0v%Fyroi?91Nljs0~g78&4YRbmbH*^Zwd>v1u2NW*F)s%jZw$%IUAyB9- ztLq`x-~n^}Q1V@&)j47-@ho%@pl+aUXNS{xGyL3ruM!j-k_zg&ATM>9qK)uJL88e0 zr8dP{+=-VbtUv3cci)=Y)ovVd8+!nM#^wrOMC1$#{jG8jEfC{k$^9Z%ZmLIXV5PgS zU?2tW#Pg3K&|EF}uA{^^Np!)eES?)J)N4$=Xr-22vO4@5RuVgF%s^}>amAPT9L!W> z2qLIAPG6Y%-Emh;epRoGpqhO~*qi;4PC2>Fyu0H+v7#;zv9RmiaTZ3k9Wi=2Uq1T= z{(lSHe};!MXUV$1e(qh4KSl0O4E6tq^e<@fuiz0MRS73-6@)L*1l9ze?L%P=V$t3f6-(U%g#%rPub5_M?ct@6FF5zyTZw|(XPt^_JH=!!#j z1r+T&QN`gTPP3gkS1Vh3ep|f7J>Q>?>;N+cKjhuR0f=1}U+rXtFnzF<7siPUPE5NX z27Cbs5lm=AXCi#U&&&_?i$Rx8)IOw?*Q<@H4#ERm%xlS$O7luh5oRe(g$|tqrGTVV z1l_qQtEOnwYC%VfF4JwQ6BR8%yS)-mv8iS2t0dwY4+L z<_g=@6cgnJ&KOp%KHm_{rlHCpqtMMn1e^t#t(>^o_{n3XNF*T6O6hb@sP=MB2=qnN zK$f`x6~$p@^ulUWNJ4`md!+V=X3ciiLR+Y)Md|uKl}j$AwO0uy>lL=D zpuj4Crs06kzC-noW`t9RaNGZQ&Ji>Fnz}l3OBRpdhXR83nJ_F{82XD1mLx#t5V0S$Bb6HlS+ z2ADv7L~NEF0~@0Sw52^5AJ}&R^V2A%+lQfOrf283G_Cq<6vr%IWri`GBJSXY2kF@j zq|;C5r=n-V;)9NxVsO{J9{Q~5Fnd5x-MnLpeheY@;ad_5q!{d+egXm#S$fEDz?abj zi!7G~<5OcTu{X1q=JUQlK~72_s%cPmeSn!pmnU{^J<9_c!tkW?k7TV~@gqd8kBxMG z#1{bwKLUmU^N^F4V2Tm4xgJo?8)P7&*qwo1n!lNa>qp@i1)=`&T)@QQ#KaklzX|7G z8EE1_1M>asC5PK2=!muGtrBb*&M*qyf5-5GUgv?*z0Gj!m`?MtNC#(oypcF-E`ZjT^Sm`y%8_cPW%E z0e`7*H;LCC%G8rL5_wz z4nsXQM$Rn_hqdORQ5<{k|H^rDR%(!RT zcJ@@4`u+lO2mEkV+p09PLVNat#nheOBe~2*Xv5ZES88F{qRHOi7D0BAaL#iD1X=2V{)}LQ_bLD%V~;C_kvf#| zx_S0zSH+?G>E8sae>P1aL!A4fAHmAx$8qt0H8=lD$`!J+bvCheCi&S!|B)^KQ@Dy& z()zJkpnR2VxptVur$~t)0#?t{rHb67{3a1MoG(feh6%s5&_vVTyvo=r@9Wv6odehN zxt#--ww7ku1Ai%uGAn69Dx-wwKAz;0IX z)E4S+@4Fy^=o%|IrW=gfEmq35wrN3rNDkanND5a8Z@T#Y>WCO;CK*y(01@qt74)-_blj;Q>C(HHb3u+8DNli^(kc?A=Z7QU{Z&(+}t?I zr+&W7BO^Dacsfh7n-FsFMGQT{%i>mhZ&Tm$plzRD?llVqno z2qr2|cjSIfphlT^{{U^l?ti@Kc_uw=+2qZQ6cu-N(h;E60oN*C_o8ha`Q-I#Xun<@ zysHbVC}sTC%iV^;GMMt%9dCfimABSqO2_E04M*H$`hOUEr|8PsZ4I}oVpPSpZM$OI z=8R`-R&3k0ZQHhOr(&G^d#!WUZo93E)7rcq7julSe;rSMU)x_Gq>RI<=t7D5C*h$- zQ5~`)4w^$afhSBVOhz)9F*>~`f|MgCf5#s@+%uB!caV6xlk>M`zO;iQBBc?hv(geM z$+^gZq(s8G9U@zhcK*DwIykl{Db>cQdW+8eylf@yWOQ^o(3G$0}z*@i8su=zqmMM0{~Z z0}aE1ki*N2&A?n_AN$A(FRm0xE$ek*|SQS#P- zncgvI31`aHx`^M#uy_$ZCmYSc$-;YZis;otRZ@&QQUYD)$jLQ{v5zqg9HiN%i`W&8 zMbH0FvmOLKqU7?+Bi0uAYsu)pkZ`XQ;Y5XaP_@JB(u4 z?hYNV@>2?5IaBhbDOdy)s(}(~6yl1hs~Ye-fZN!1C&swWM^a||*GRd3u!>>AHcM0= zaY+r*vq*6jmvkqZp!zYbF7CfpJ|I4`5bRlI2qB|{!RwqU__PFn%4 z8grUiF=?+cLX6Xb&1pDefrto>iajzD&sMG&u1>69aD7GdeswlAqg>=H)-#Qgz>LBg zlenGxMvV7-I7c-ev%ZPdd~+)4hF1UF#rhLg_KlyBGe^dZ6h-=9@|i-dW9v(?1j4I8 z-n3dORZX)o9?c#M23`LIvt_-4@tbuVi#5*i4s`~njs%Aasnu$TGz({P$a0fO7nmjJ)&mdq%B8@sEooT&u-N8X4vc zsUNDiwP^!N1d!D^=?G`G_TEUR_Pb=TL5qeN6zuSUOK6CaT98fr)QM3|GW|YA63RK* zox)iaH>XZZf|V_YJzoQj7porj3r!s-L#%e=7gKoy&`>V6V9$)ZY?lLv1D4^0^Vd#w zuJn+6d;T88Q%-1-;~OO3 z;tjM{ZuTJvBdyMx(ooqGM%Wu@FjDH0!y7i;@e`O=$(|#ISAg!>(@(FmJ!coep)|V} z_x7CKFTX1CFut9s-5yQo!%Sj6&JW+NQx`06#p-M1RhBy5L~~%#-m1tfj&!45x&fDc zh@k`ps+1lCmi9z>@l8cE5MY^5Q!$vYS@w*0NR3DL&?>|UT&1Dtvz5Y~ACQ5b5$;>) zxJMROmrgs-E#YE9s6onXPO?E%@STp^d zJVd&)UDOv|?_J)qWoE!xjF?rYIK4E{UPiZz>sZnp<8n~Z&@ipU`6QpwEYYl9XgPH0 z*TFDXclDimx~8uSD8GFOBl-Ye%8#`tk(05924`n3uqD>IGQf*=*;MO1w*F)9vRWNm zl8w}wo@|v-m4q>`L*0C5c_MJ7hn~Q`-U#!6sC!kKDQs`TyIi1u1=vp zC?8&uHe!)@Cqy=+lZQ+`pvl>P0^asE`tX12&B?qRPM=z*}l zq>jlDWlh#O@3L?dOZ%8^lPHlx?6K4tAHiFevirgVr&B5Oe6V{tj-}0&c*3Eee`V_! zBcZehi%a*I3jd1B>%lJEr~mtnRER3Cr!QG0Fe9q{)4cwcz7PgR7>&5J79$6RpWq&} zGD%%Wj~sI}XS8TKS0mG)a-2I9G`9JawKZ zxq+(mm;M7kC-!x3OUie!x+=yyP7ubJo_M7R!|O$Q8%>N>7>s({z;S^etQ?o!EiT{{ z9x(NHDqEpT(>_hr8?fG?1j0}``LpPyxiYW?B z|5$k*sDp8Nu)Q+raDqir)_TGNHazO*^>?QA3MH+TO`^A0g)nHE(@($j1 zcle+xU2`$fx}+%fPa%wNC?oxZ)z9p2^#FCC%S}RK!UXqjA?rx4xFtb;&s4v6H=eml zaqaSpp9PDH?SH|KH%!jYUGsC0#hs11b@-93wB%Yie?b3P&d#50rG99b#sz~3a;v_~ z4tovIqT~EiYI?v(*f9xmYk;R2^E=NihHasYCrV#r;>g*tNn0e zMqe0;|8u2Ej{9>q*_1e5)O%Xc+Xne%u6TqkiWt3>e3qmXv#vfPe7l#xocP?_2KIz%0nkrKDi zW(P5qQ0O#_g1V6$r{osj*ZUo(_&J{dxZbtHy=Ru32(39jd^&U%>Tme1?PUwzL3G|h z&0K%dAiY8-?9WM(JS(9^Q|gK*3^AzRn4d5QY=uSUXg$-hCS(-Hn?iW6?Ngm(X^kYz z;CZ70L>V-BIp!DFgG$m>=COYes6G;&!bR#dF5m(Fj%ZYdzsY<48gq)RCH;*t#uqGv zQ8^`2g1O%JwjTC;Zv}>{2jm?t=jjjT9T(#pBwAC3 z)akJz_beR`iwV4a9+De_r`ewT<6NTMyGc$4ZL1_}_Vj;hqzi60L!~dmgX61CqWv#P zIGP&WQLQWifpdek-G|)pW;yOH@b5uStA?FFb2jSaF3X0~Q^BeDxv>x>beA z!T5`z8<9QM3oWF?k;G;{lHi1|d%m1*`&X3wH9#?vQ#MlUC(kE`j@G#T*q>vN>uEy_ z1=^)yVq!L8+?HIUpJv1)LzBVh968J_!*##}_9}rQwWzh@h3BU!)VQ1kdASYP%xewO zf<(T;w&VN^shqtLbY;VUGg?RT!$%6%Lbw+`FS~mrkTL>a__YW==<=%yd#AL ztp5^<6)RoKkSmnA-6u9k7m<%<2X%?ILWYAw%VDmci6E_^s`4b!duPrpv6V(&W{~$c zHUMi4)DArKZow$+%97GuQ>wCh8}R|r5b|k^6O=wtP*I#k#z^r&bd8gVnvW?`tI_Q_ zkHfHgIDvgmg4H0^B_q5>WM|8{W2Cm~$$fq22rvI-loG42Ug&RURE9BzDegynvQ-m6 zc~AGB#@|2My@dzvFlS$lKa;PHOXUa>6$d7-9g!xlUxaNNxU_K4wOoVlZ9tmvIz6xymR zHnCbzdwIN)%P=_IXoO0=QNal=IClH978LhnfU-g@HD_Uio(hBr)`T%}r;zfjq&8(P z!=v;xbzt7HZg&+-lrBc~tl2E(611Fq#-C9~-Iqdhnh?rASSL*a8$E^&Ck}GDcl-TTPVveXdbYpX z-!x*@R}u~x);Y3w9Vy~nH5+6m8PYmBvT_u%Nyrd+FWZ8yCDIH9y%lr4AYl$&SLrX| zMj4lzsXIfP+5URXvbIFRgr9?D77jS3m2#&lD5@|Ma#+Ohmh&>ZEa09_W3oGqd@ zG;Zm1jB<>i&UaVyDniBT%G^IcQToJ6T=4LU>1#&dONNvigFcR5;DcQie1ABCk@ReoC=-2xYU{pOqI@D@j@uCJOe*ab;El` z=Bb$Css->VKXcW7!Mf(jGtT$f-lGn})YKg#Llavf9QKXyb{}S-s<1s3hkPu!^{_*# zsuwX`W8y_P5XD$3Y4|Na$o$iP{id}c=b1aCM!8)u%ATxagN9k5w}h|N?4Xb0MPB|} z3?v;?ZNRVqioo7lJ!PyYjAz?!h<1Jd<4#nNbIi-{?07*m+3VBlfcaS@6r zDW54jL@>tDU;S)->*~fKpu(K10-JwvkzT6G{4`|0H~)4KCZLRd6H%#@dt3e|vl_dP ze?$yTBxnTUqN*Q2HmbX_9hF)T@ygA{432hq$4mH3KF9eN0eBPvxJB^16z(q5lduxm zUI-ri^%e1l0DC6{$yY}Q!E{BOThxX?+#$C10*dVxKZd3{XxiE1Vv7K>3w~Bo;g5TE zm!`xM2;q#l7b+eBUB6juWn#5>xSmolhotxO5vBs$2~?uHpHUk*Es|XCIheQX<{7@M z8*=-Yhv2%`3+bM~T8M2W$J+%`z2wbl)OC}z=*ufBGfl4N^THC`(Cg_aSHKl&K#7-+Rz;NFmn`^IE7Vbuy%`97I{- z$DOjrgz^kmAM7Mi^AmY;s15_&p7>*G-n2p3=S5ePkuRt#(OhX(S{}^)z}zFkmoL7p zi;An;Ib4xclZ14nB-R=ZJx68A30f*sz z30;4@@%TCNJczi31*M*8BBw@j-5_d=EiO(>xs(~kFV_8rJ=DY~2&4vk=|Enoa_MZ; z%@|K{WVPtUJK$A9{{S0|@@VDvfc;zMd#U@l_6oXdhC=pdbHf!H5EV-apyOxIEh})jN^Q3jBAB%NsW;ph2X@^BbJj00h=AsAa>bi)m_j%@6meRGH=8i92>K^5sf%X+8SisCSHCI90Y z`OwWT>QGdD2ZNO9kN;)!@eduluKxQk+SkWc{zb?Bw}#ul6@C6iorwc&EdO69GC^_8 z>dR@6CoSI=Q48}&e0_a1WuZ9!JUo=kHv+kZ(BOPmdUL#&`kJPQu|Zmkwr;d*A~9|d zL;=XZAW!7|#)Tul;YL7lX=79UM>Q#XoVI67IP5=cCnILf7DJkc=JHcyv z2o9rmVv$tPisc@(PihLTUxX1C`foTKi7;iy^nqO*mF``ho=Cfa+VRB=h?OMn`6^aU zTyvhIu9&rSiQI-svXj9jZ_(^5c4=15zJG{aKxLTzLvb(7!H|IC(5u~7)ck4TL)AA7 z=k!X58<6Q^0gg$k(QK9L&qQjK4csMFK|hqG>+!E>+7L*~k=dxp!+BM8K1VXqY{KZ) zbMpILtUQt@CIow6_}pV7+sx26t6KmYt+E#nB)iIc!kWahNjdggn^<(Z!XqhOB4L9~ zID+6V9Blj`nt4hgony#uA@3CPcf+}6I6;oZ&#mY+RC~)aXc4K?$X@{*ly>4rkQ*4J zzNs5n$B=-ozrs2_HQXblz`cxl3DB~+1g+1-ABM=_DEgW57F+N3sM1EDe1xWu~8z51L?S&t+i?wDSXCjZg6LlS1cDs^rSE z)mwf?Sz}Cy+VlM{8$sJI6PZ$|@rbpr5cccq3;X|JA|q*K?QEr@Z)c`&m4> zBPYy%Fdzp^HALn$Hk{^C;pwe27qm4><{(ox!>b`LCOrfiT|tNks?9e5vSpS zMbd$qc3cr&x9f1vqEyGD`mUh0%&h|-IJ68Z566oCD+&QBs-YWErcmOs&%caNXQM^a zeE=cF#@jU0pW$zHEEa~bd3Zi{4qjYt{Db0nB9)4A*l$z(&T@>y8BkwiQ<8}pnN@za z6BaAqI2)`FaJSF@B+CCB#*}5|+`BJfWD3mxPAC5hRsSC?t$#rEfBicV>J|=4OO79r z#+U0U`oupGiKb!Tl9OG{X8;hW?_ls++uDU)W z6wyZdF~~@!=|MC_WcMUwh+dEaXSp%Cq-!;tE1X!YUaPdVE6{}AA6lG^L2>B}X*S#^ zTVBuW9-AIN9uPh*t2#Ts=@EJ13SrAW-MAuk;rT+qV z_HV*N<_HHWrbb`G@utA!!^qyBVm&?u)$@&Dy@}`QZlCt>KR|U88>*7o$*88r_5$!b zL+@(ea-}}!`?H>Jj`+(F3=N)A&r=`wd`;U;cj=@&wDq4awc8puoK3T>jn;B9)|#R$ zv6SWBp&LM2EOSf&VeaMQ=@;r+S{{l$OL3EhVI9z!Y93L(&iF~SD5pWQ>h449^-as+bKCKc_<;|Bxfl)lFNQKssK zC>ste)@UfHTQ?=%v>D1Xn$3oG=0la=RY z99%UTB01&At=5(&V~uWDA3>D+`co|8nY=ADe^k3WHQx6G;~XayW9EIIVG2@NR zriAkV0Q=|x)3GVdyad)r5Xf(jN4F&%t`;i#o(XvnWtrzBPxp%Q$}}|z<+yeoO#5+9 zTKLpINe+nClWKzQD_g^r$s@-#kRJ3{0eE@PIKe*a=QkJ6*n%o$`dAYQ_-2UgWvMZ> zp^3eeUU=nJ#nv8HcC)14I@kA&_-E@D#dl}4x{%TeDP@L8bogs>w>COUF`4}|tdut! z6}S!=Q{=h$;u6!v6JW0*m8-VBLJy)~NTihLMgV&#Pyr2B6#)o~1T<|Z;W+5%*u=E4 zLHy5+b6~$;l{1IYOyc(M{!AW0shTn$5l8KF)KQ%W9$3Aqjr3eQn4RNV8nCfR&WxkZ zaZse_$+NDfWX2Lc4uT8E*(xQ+vdS`UN_L%|R!*#ms-rlaM5mPs7gO>Tz`Sd5~8)pKeXv6l( zzd~AHoB&^cl++u$f7g(#z!MKQ@mLkrx*URY>f(cz*Pw>^B~Q2xv-Q;B#gF%DBZkzp zaEU^p41ushJ12tF36#9KMR~5#Y2!Tg3MtSOzSW%GL{rGD{vrVv5I&OK{QhDTKx)3C z1}O;!A>-$tteMKk<1kf@R{OVV9(j+XbUoWAYD8z&f@xQ6R~0kk4}+8(mHtf9@`%ACRjyXK&HRjZ@# zLiyEfH2#-yPxlDjgP~e2&f+E%=NU3}_W{!xn8rEJEF>1UH?k|jN%3zrj3mNaVYB2k z{ipOu+Luc}$KOp0@qK6_mcKy&t^PfW8YI6+9$j0)ZgwfaHhe*2J)CV+{A9{^lLsb` zz$=H-9N~y;zn==z*uiA+b~LA=sp0QKZmU@CzUr?BektIoZXdu^Q?y(od;DZMqU))n zJ6Uo0zNv3*?QXXNtKvj_sDFMT)@U972o=TI_M|ez?QzsHl{cjU!&OW5gEqN|>T@Jb7%ExL?COZI84K|&(HY1pZ*! z^us9JYsh9{qHllN(k^Fd?&7ZlR!F03@ys!U?^W_w`F{uL@H$D`nKQ78SPQ>yz?yca<^)Y(qFG0=I!gOUG=7AW{uklY zYn8P-f$Ljr+m-w-Lvkr7$<%xpbVu0Z~)cK-_WoF6x`HnR_@UA84U$ zG4~_WzqSvB5XXC>^Z^iK%QG*G20>%NIJ88p$|BUtBIA@qja$N&a4O9R@aGz3`b(}D zWzF3eTo@8XZcaCl99F`T%~$H68ojSwpm_&h70krEA&TmmL**xJzVbrN3nfa+kFH5# zAKv+}RCtUe8RZ!(vkSQR`lt@USHt-y_95B!q6Y-kSCbY}uDFl@+^NOJMW$wk8K<&z zpCI)a&y=;-;rm zPneCuqBXo5(Q&5b_4BYNHb;o$c%L~nXQ+l(|6$tf%ACx65-1ESwMhiCvmcl`ygNmF zRSZ;9v|b$YJ2eZfpjkr_?Z3G?CGMu?3el1srkFfC3$@eo0a(X_yrgP>BDY3}Ie)WT zWlKVwq>8hi_gLHP7iG3JKhnCHY)2=S?VR${9Ob;e)~Bml@a&V`5D$_ced{NFM@dYn zj@K{}hHwzjaI3sWY6i;J(>;HCqf`AsoC1Y5k>-+!JlZ29xW}ym+ctcDyu1s1pmo5) zrFaUq1-~)2?r*XUTj7WrrU2ylZ-;;@m%U|c8 z&G4J!CnO2!r{WH44;o%HOs-#+a=tiq@o+)S$jdO=KeVQ$<_oPCOYQ zZ_T|I-@MDF>og&FX$4W=kTL|^f%T)ducx!mCsEvcb!9fj6ivOWZq?oCCQr3#o5x6I z+a2`o6}B4=avx6o8=nA{*Z90gM#bmP-dn}m^|Sq+tT;?B{_PK_Iv1qJy{wVqPhX@b zRc?Q8qL4R4*^%F|eJ2+WZv?@`mb?!0pfFXa8ptEd|W{dO20?T^7W?XMeI98w45@I-J^9I*psH z`V;TOXl8KIW^Wm+8jsS-nmt$@4%y~P6`UylxCrWauw1%IEyBu zdeJ!bZ?26bqF29s@$VP$cRWV;;;)I(Vl!Rq$*5KvM$9>+7XDP5&lfRsv}s*SG4jV8 zQB=53F7SwK^uq2mCcSYXR#X5DGjdz*G$zWrH$yoW6gu^7WjUyKYTxyjyy$ph=D4{p z$OW&`ALx&EUDqdW3Eb-4EY`%CN!Ah#Z+eErv)%u$t_*xi=_I&H$3js;cWL+?nA5C2 z=@cy{?34p2B#97{_QrGfJYF{}G6n4k=IP1OHF4D=wLjRj>v&~16ave56ik5a;Z7p$ z2!_-%qeG+*Boq}*l%6I0>#9xo*{lX6TNmbv9DY2P19Q_tbi^<`FTpU==4kjB5$1o4 z?&UM?3;^F)l6GwAa^ZFjD?>6a|E|sDrrplQuhtUt@jS7Y$ku!O=sK|K7yw=yhXp>Z zUU*72rdiR!Z8wb#*ll*SJz|CgoFs)4INg9=o!PQpZ066fZdmccS9)I)S}oHsU8%Kk z%}u=hqzKpt6RJA#I>j|U?I>0iG*#+T%X7*OyIY&DwDV$#RqDqa$&R!OyK;n?-j^uw zJDCR0XXu!~`K}=4Gi&hPw4S<7*I+oF*?%gjrg*t(F=8L0(A9YZpo!BDm=S$W+b<-p zA|0$hoOC>7z;GW*Um4n18=Z<>a&!7)W*c4dOyE!|cy9{(c=OKBq9e0FOKLij^=|dk z@z$iQQs$8^)=?Fn`G(7Zd{8n&s{*->1OM~a4)~!CTctG3&Nc>UAC|`8{KVCZUZ^bM7|!I05gwV*ViN4m;K#r9i|L)1jcJhTFp>)a z6%BTYiWor{>qL+xu#08qh?JpiD-=md6$h^v7j05KW$kaw&l@*(WGrKwA{^=7?ruTD zFlUd6!}=7W8?yURF?o@69JMn8Y~4;Q6(#uHTqi`8w{tJIv`urW2(iakXRgqJkLmV` zz}POue4yQgy-d(6U*a2Z$NzQCk||4{kk6O&FFDdP!}_qT7LUA)(eoBbl(}_M9iQ@L zX_Q&tY06<#Voh<7ygP=($dz4773F5rz}VC~-+!vce-J^DSJ4mouhGio7c)ih-};6B za_3XD(f{{kB|!Dr8S86pFf&ms@u1(y($CN@$Z|LlC#ZqIHhmx@4Si^ulGuN`cNudC zq*g>MFM7J(GDmKaRxY&~V%0&?LZce#$9D-$8Fv})W4EUY9-j9co_CPd!07w7ycw~? zgl&87)W=QFN6*K$tq$3jil;W zJ%58kSlqyOQbq*{x)A$vdPpzg{@kgd$BoLyl^uTi?#fLuCOfisR{Ix=@lhJXiz>Vb zaG0{)aRlvMdw&6$Ip8e7j_eZ%qK}<8b+mue&aDHvH$blgy>kGm(}R%Wri}Zw^S1%t zStOUmR9l$2s&8apn9ylHe7TyZo7Al^P^|F?F@*`8fimXVXV!N)5%G9)fE2m)-oZ)sm=Ux*2xkAfz&xUgXBeA0B-B2jv=l~2 zc;+ESn8DF^d@}HiY-C!_sEFQPH9&K16@WGSJ%zCNQsV9|h|WvE*y_$`aPx}ZCTv?= z-K_N_*zs%d&ud>Iptz#12_!08Q%SUNgwn)ovro&k{Vg9wfL&m_m|XvWIbH?KzgQPB zT#xnmJ8?iJ?=-809iq-|jsxDLxmI_WFW|DSU6Pm-8j<(1pKYRTZU31c<1mb{sYdJH zK2#m%0#Ttf+PWrnRWdngdE~{DqBMONs3Ma~{5wKki~~Zz5BO6}h1E=9WH8WD#YE*t z&E$q)EGku2qghA7)fbI+p6662LYuXlZ~Z6-+1l&ji^E*U@fvt@ldjK2aj=OQ(nFIm zs0MI^xA2(U50DU%5swatXON4wvOr-B-K_wK2@9amhF##kFz?2XykM2(=NOmo13q+k z0HiI6)wPZMiG7U;dJn`5(gSh|Zf>&H`iU}vd9F+e%(b9gCa#A1Au2t#1X1u-`if=u zj(x{CgUQt>EA7_f!^@WHE%2RFw!Nb!L$FXjl$0>W0hW=wOlkv!v^Qr$#4$p)D3!l< zAmq>c;RY^6YeXaxV(mZ}IbL}1)3;q~5-%WTuI_TB9VcX-})!p`B-I?@~! z%h~7m)YYcO&p-pC3u2AFk=-$LtunPQO|fp|QpDa*##2E@)R! z&5s8+VU!efa|j8?&GZ$U{`Q8ckIhN5>zifO^$zQQ>TeOoWay0{%+yDZrf6M4$yrs; z?Fi}P(_gtvHVxT5qdaR{Fs;PJczMi7CTx!msX@D3E^)Y;q$iOI zAR9By5wxZe4sTeNgr`tzVu6`LzZ<=e`LOEu;!qJC-}FK3!V@m2A3H3vL*%mrE9 zU$;O~O~V8vyqO>Np_s<&4BoIzK4~!H<3~g>E!i3qy?KC~wi#!)%Jeo_fPb(dxNOwu zOdNS=d?Q+S1VP;vDc>R2SoY&BKPY-SbAG=lY>3JNqI|S&{>JzE!H?&ZsKsVSwOs$B zIi=DW;e{shHPIJlsiVE3&kYwJ0=S)u?SLg}u&|AToYljP*3t$0e8D^);#fcK=y%lG z12D-$OBmNWyJ6{ObMj*2tU*o-_P75*Fp#JVYn)kUka&Y+D=R;Hq76qkr{SyPh^Vii z$fR|REWfszRK>#za)aclLD55`k9yC5OOJq-UCyTy)9zJX_^v=U=U1dfKRB| z0u!ci_ln2^-H}YbtE@&JJmP9_OVCC0kr@@&jwU&Zl&u+ou6e;{@efuefpx%>3WTQL zoN1!y*c_cf*xl>|&j(WTFd1s?H8$$~@aUVFmItz=n@p~iYC+82mlD5$-Q`LqqU1X= z>eDOvpI13Qh+;noin^d_pP(A-DEvrKb($zeHCZ`-Sp#g@kt-_hKoge;JUjFYG6*&z z{`V@;XbEwSaOhXX%*aADj4UDxob^}N$>(ERzQ=NsU-~T|IjJv9#bi@i*#+GX7?x1_ zuVxPEg)P0(%R8a_1chRt%*P|=(UQ-EIqk#M@C2w}Wvq*$wL;?dNUP$*u(TEN<5clS z2&lbf#JdfQEx%fOU^yO21LC+aoWIW^Ra&*}+260K%$DJwP=x-yN=R^l{qg`|Z=pQB zN1U%c7cN53Iy|XgGi*rvnNvKc@id9Q8?3aqn4vSa(l1?0qtP%Vl-_`0#iz6QEq4<^ zzN+bbu%dFv+m^U?>yiO0{n&ylJUjKa3h3U}SXya#(0XaccdQthZhfzlX3gz(DGQj@ zlHvE=V$EGwhq_&+d0uXA>V0Lu{zy%uVB3)2D;f8 zT(-$VTskT6Daa^C>^lRE{p$yJ&KHopS0eRKCe9nQ-S=ThH!>h`tgdJrI{bLIX6!$= zQI?gQgsBTfxA`o0KMxv6?>)yEx%w>54J)&R`52(sBOZX3@)V*hLVv_d!Rx!eEEvC? zZCgJHA=-9uMo5~Ox^59}0%`$y7{?ZOE}Xua2OSmV(p-D$+NUQ+HM3Cnx7%F77q>~8 z#7_a|^$;XO# z2Z2Q={3CD(Y{^?Kfa;Nn4;#IUbxJiA6|jpSgovf86pEIG$hq@7+0$RdLm2ySkufsA|r*Ian;%L&wF@pfh+sZ3moo9~Ri0Qfr?i&fA ziR&z3MM(Dq`zF(N&5xkem!FpB&TS}jXDU+DEhSW=fNZH^{>O69KZ@9|&)!jnp9TMW z&+nfp#);&;fc)3&niBHA=cE5K#SoYM&jiC$Sz2*T1(|1x5tY>!GzeY{-%)cFU2r#k zI=^Sz_t`WfHOe5{qrRZm3mk#K)u<)zyzN9bd(3Lt==%vQ?1U8QhErkKN19Ag+&!;2 zE33=$I@N~zmitkQ%7@( zbd@YqHM5|e5)(7m2)^*ED*9WTaVC@2h$(m$)fLdzLVRPE0&y~#Ls?gzM!MadzpEoJ z0o{!WylJmMpgsR`rLZJv7oa(}ck&Fdg99eP&FHg!f?%^BvTPA_Lc_-TOQ&3HV=3FK9#@Nzz%Yd%d7<&=0Rd+-6kwt@!G52lVk2-1=?vLnkF>8sa!A2NLb>!3q$0du_oo!HrC5FlK)gFQg6 z;1fUJ-q;dVhRm3h$(p&^VYtET0deyRXMh-`KUjqt#t{mMg^QYwLf1FV9skCEk8n-k zyLB*)PJqY&$B5t#qdv$p2>y}tf}azm*zx<*w^Z1Z(J7QQaJ-wMlKvdYPf-it;`gw^ zA0#}*f$FD>2yyj+2>bTSkKR=;-HnZ(MhxM>48qf2rbS#O8%+!karQN`SzO>HID2=azUi+4^w^h! zz4U*nkN-7QwYGEkS}YQ@wzLEoI+$5o5&xqg_%B!cf6&qYS4;38_ZR*DQHT21^tD3y z-z#<%+HL0o!rfFF`2m}jFq=S{R7|P3&_Tpa54A)D)Wi*AXN&t8lTRP-ZZsV!csjU2 z2qe0$5%eibs!-$&&{?UY^RE><=SembldgA{&+pyL#sXKElgE3sr8J@)s7Qd)7XOC&S*r041xWg zlS{@w68GAI%FORrt=*%e^KbEf z6Ngdacqmbgh-!!KbK(C|j)pMUM=UUK~|D_@k-hvMG;;l%bZ8wM5nV z!Pt<~e@pPAKm}sGo)Y>vgzij!@3?@y=~6aAKP4e@wANTRLF!2srkj z+e+bqi`kE=FGiK1%{W;=92fAVb;St3^hAvcv(JtaOcvn-H)WAoq!zdb*|)r8QG56) zQ00+DbdN`ZS1pT9tck#?k23%{G2~Q^U6c|ch)?YE9J@=zTvVH;XN@okB#14#`4!Y# z9NGCNbxnv_*3it*!4I2=SG!9r!gG-R)z|i6p=iSCPiuWIXM}tfdjOMB0KHVaNy&6| zmQpVr-GX%K9$(`HpUB4%XMiUeba)(&0Hc@Wy@6_UkUu{CyyYcPK6eBS_U3Vkc#zbF zjLZNisV5_fS*?KgalVrxw6i#qQfjij(lrK z>i4hXL;YWl&Ohfv$H%z zJs%+-A&2RwlUlpi{2^bkiV|I!?n4kgBem9?749CmHsg+ZVZ>5YrK!Ea;)-J>@iBZ4 ziaf#UvEVMp<9W^%c~HVe>bf4XvE*rJ^S;WK=`mN6_QO@!eLl-^VfG?t^+9_Mm$jwp zx_Kar$Y(XySC=az=B)ji{yWLeCw0l3Leg(}b@fb3E~F;w>+2r{2hQvVyU0f6HTmj| zYIZ+{K3}1K90(h}-dcHuLmS-tJ;mTRBbfQB93g`Zr~#pGM8rYGXNiTk|BR!QD<-C< zkXy+a{pJL%A0F9sso)hhim?%65&fP+Zyx|U$+!%gI;SnTNRxa2!>(d8nXna7vA7ts z`5r(V<^zFWZ0K-aqsW0v}V0#g|AbIo!8z z%wKO0VB|;#G;^Rcu(Q@TqWd>~?eq_B^H0E|6EaY=viVoU(>DUx{hPf})l@}NMgEZa z0SntVz^n(1@m+)tK|Cwa<39tNC-(*GHwRusW9t#8gv5!1R&=bYe7RXQm|t{wUJpQM zmu1gau9D%sz`SU-x~-Wo`V)vJi7f7pr+Yp>9GrJd?LT^ZeV}w}ypbD%MT)sd2SSKa zUNbAzga?xlCKjtThs%eDG})%0N>hstFn(z*=4s&fkL8RN2grwjMurT;$M}=fDj)1#BmvBa#C#f0EP(n~MmVEzB!PGTl$( zZm?Ivg;iLsaOTsBHU#UH9wG|@!MOouHF8yn^})If#Stf^35+8Tf!I!}Rg)ERcFgfg zdx`q}u{k{z?hwy4$V)^Xe?(!KR$Ef&OQm@+7xO&qhL08ZK$Z4>td^0A8662os2XD_ z{;iQyYkERw#q#WRMAJ z6}1+}q%x%jAghUcp8Y$bu*|HmvWXK#3`Am`YQ=XhYXuAYX2h)4SL)FW<%nthW+`^C zpXv03e>-Vla3h&P;W5rf*jiN9wrXGOXhw?`@vq(m!>yruF&d(!19|(zR&x}eDf-Vd ztzTC;sO}I~YeV;c4O)-fJ_b5OpFG%956e(nvbQTs8TP@?#bUP4AvI#SN57B zqu!SvmIBfs!G8)_tM@xp7FBaN6?Ek;%-40}5mJTh5di}IYX<Xn1+kQ>p z+-k6_A61)o;)hw_$`$kAIhi!0n@XG%1ncYz_XTaQBz88D4HmTxTBcvqPKJp1AL%^i z?G%v|m$)B2X7Lcd&TdA@i#zZdjS-!1&e4`=Yvlv$7dv5VBj@TctyCo3Q z@wdcVoe_@xi_y01KjFlT{lcvrEUBq4EOvgj6l{uW41^h!b0XWIQ;^*$n!f$zWy;vi(jxI>TSzLm*>c^_1s zvV7low|eYZ0U}BttvB-4%|}%BnbsWc1$86vO6ON^F%17C;rS$?1N$L>k#1_2A@Er- z>4M!sshj-IF2Yj2-z^NFS8~b|1DQ|I8lT;-)ok9KjRn5O3pETwn||V6XVwNH3Pz)k zI?;tbjI5pAX0@;K^EF7$O<|sd2dkLb8erc6dr)6U;Fb79FT7zNd+HH-dV)-H_w#;k z3U0>`Y2>v8*S&-=;PDmPdH~~GILjUyn%ldNE+^|Bb;T?L=q;rb!3+@FdFhpH+o5!lgVU{q%$*wootnP)u-zN7cg^1szbl{-_b zwAvC{uWd4KVH1xi>8MPfQ8Z5%KK~aw`cLZdr+@(m;;V~*@}&kq{$Em$FEIH({-VNm zcGmyCuqss4t+AAmKPs6rF=R=d=+#df<;e0Ym}Jb!0g@78sg2Rw`C)Xg#E1Q}nc zg|Wgs#0S{a8%RDOO9&`pl;^gOYU7b_KPfyURKL??#t6GKHYB1~^JC^go5}Me&T}5$ z)+c8oSTwUl6_P#M-ZX|UApr3 zK!N0X{e>~bajK@Q?g3i#A-y0_HA7od-GTc%15Nfz1dDZu<*8ZICAi@aG?>@O4z6{p z3H*g3Db`YCLPe)D8FY_Ho$?WXEJ-Ke=7UxuQ30Zsy{C_lXFmUd_KWvi#-YdGY=qDs z+5tT((hI0d>lz7Z$!h>!q}1WEJj7+ms;T9&TE*J_X7sOhT z{|{&H7#->Rtc}jZwr$(CZDV5Fwrx8db7I@JZQIGr$#3)j?z7K_^JcB?k56~jU0qdo z)dkHd2@CFen-IZ5wu75RYEVtR$R8=;&&fOA*AA@(vtYOrUDHxGw^(uvlYI;{8J^&u z$ng8&5j^iQj}MM8BakiPSu&mB)MRq`#`~n5H1QZ?Ssamk0VLv+R_-Cm!XD?k8nU^# z`hdn(&^N9pf9tQm+fo73rf}$JwcOGHy>~uJ0^U~x4R5g#KzJnlYA`opm$W>HHS3j? za$QorYE_>Dvo6;xkT_)9FCzJI-M_$3t@4Bj;;sSwa06O8KSNvG=?r0XboJ2lF^+*)T=yQAAh;A7m}4Ihea6w=WebU`@4J+=E{W4Wym+sxvK9 zQf1I;*UvjtIpa{{4(%he3lefqS)x4Aja@!1gG=bH1uN2NwIp=LJj14ApK4H;E_5a^ zIf1tsHYbswvDxG2{9YR^E8g}6=N-EID$raLP`6&Vt^;s4nlnZMmpiWt%+N~Z%c5Bz zGWV{`-oZM&)22M&GCuQ)-2qSUi_`3q>kQ4f1NV%AJqC}7!_L-+hTTD=xGFhrK68t) z@_15+XDYkXP-RG;ppmxCYdiRokzIG`2Mks7NSOo)a*F%fUvqMds%;mVeodt&SFU=})kwhYfL_^UYPjy1MW zU4->-=9{j!=@TFQS zthz-2jOI+zHJE z=UsqU2%a<;)95R?5V=wd1nkD>=O?+b}VgvL3NyCh6$?(w_iaa zSrm?qJgE*obOWsvM!AG+p8imkw9Q!_D4e<+yEy1DPS^9kUH@E58D~9as zb8hVK`G057bi{9YB{^IeZNaugkLVEd?74%r&2#$_@l09se*6y;U#LoK>hAAj2LC3r z{BJem-zU#bb{uRBj3VDx*8k+Pged9$bI804skWLc3RDF9=t9KRkaQTrFbH}AK$6t( zHkqRvjogjGu4a?dRdap-`b6`6_*-$r8yXBO>wXfio68KZ=^U?{&$iDu>|X4u_uIO| zJqJ*EZ2|JqBSFms|yK+$;M(N{NKg&^K>^O!HZg+y$5*m zfR7$9X;%{1?}@b$K%^bt$q0n-DHVy0#jId2Vu_2*z|;f>5Btm3%ILvgTXAQTFm-}9 z$2vP<^ZTh>CwU&`L+IG;Wx_dRn@We9Jw@r22JZ9x=)mCeZifmES%5*f5uo-Wm0OCQ z`)lJdUc(RE900Hbg)Z$<{X~~5%6Y#RYj{(F0pRI9JZ|&3vnV+eHn;CzhL*knD zL8W$VDOrY5KB+^_e^T~-J>G$j4vBrgL@(&uu@)2<-kr#yJtZ2Udj~GzG zk8$+DmZy#{}`=|b2?74rZfdBjD)+hN)Sy>$;%#R(!5#lG@2V6~xXw0wjru;xe z5ZP5a?cNY+2n_7RRFIC9Wn0&s7oV(e(stQM#=1o*F8@p1`J<2iw6k+X|K!7@(@bJk zR?_F!%#GjA)4sT&+kQhzK^(aaF z?orb)@k8!yf%8@-$6XX>9`ojC!J78Cc(Z29f$j*Zx3H^@8!j4wL}rG`Ji~T|ye1(W z#)v``gJWpNDj==1Ej&U zuT8~>IC2cVsQqTG%UcPn8{SETCiD)wIg7pS6o(cu3054Y9JUZkMl_0M z9L7YBmK;VIFp*(4#b}7;9OfaO*7!xkG|e#0G|f28oQi>Gl#%eOiXkytb@q(9`gVk5Xse%qmSGBtKCkMU4B-#%D`h(gH3)w9+&`L z6Q7CCI+rDG16~7OOKx3mWA1O)>e6bnDzoa7s*~!2W$5LoWwWXot-J<4yDsA^O?qwe zD)p+Q<;rh?N%62;fBYedJt7<)nWmsgKSAIV^;g@%U34mN3&VuyrrA#y zqbc0>KO(jv^}FA}Kkvo``e4g0C{iKbNu@}HLXZGRCZb43NL&Ppgo@=P6(ki;%bi%| zTHN(=6?%44*725$LrStrQ(P2FL`xOY#p}h*XYq@!<+$xCmZghyx@1k-=X|=I9sPZwh4#7g2WNsEl-KeuRDDO_|~Bt(n9Ma{|yx1Pye0t$A$)aFjUB@dSkCoc{>gueIxgY}!8@MePey`gY``|*R|f5}__ zDfIVWjfwh)I`#_UA2kUrk1jA`VI4e&LyS_P(D2pjETMgnB#r^7N;7I?DnQkg8WS}oT>eDh%&T8l^7&o8-u=J|{M3dL!^WTnu60QK+LzihWT znH~E+OkJMi|NXew`GGT>=SmRagw<|f&H=AHz(SK?qB?0FZm5RV90`r(x?4!&h;_Vc zZlAEy>aEwvg9?h;9a$L45sh(t)J8B+2$ROba`4;SS8@RQ^`OiX0necvvwunSm4?w!+e0e5MfQv$(oAbf0=J2Ka}{-e9lzDXc8>NS`CT%h;%qA$ z4yac1xo#gXJ~CdyxEEaj9nA41rdez}7wL>bJy9f5O=4l2I`-dRHISMX_@ys z(S`Ak=8IX^AhQf8uI9R7Z~50y4~NB3@D+ITdo+tNY|{vLgH*M|eP&yk8SF=nv*kmU zY@AfyC1+fI2%ohO`=?yRRlyE^(`(tVbEl+Wb1R;{{^oM6(-2(m(oAOAa8!RNa7sjn~-7n{N%So6}Rl+Q7x< z386`E`4M1_s{G39^ec>QKvM`M`1XxQ)Ja$IFJ2*Q z%3sT4^Y%_A!(;V-NsiDn79Oa-HpTAj665v^g$Dv}jMlDx=EUwC;364z{UO0rVR5`5 z{0M4oi{(cOthO!8_j#DCpH#oYWsJSWm5ZaNeL-Y>>{3Bnq%>FE zIZjnEU`@{~C~i}OOclNs>o-1%ifOtydO{n9@j}LYA;~?fORnVuT0KWk?jZe@ev>K+ zrIq*;xhP?SAQ)rpxa@>pObw3Eh#bi1HcHB`vEHp(G9Is;+%0{n2^3Rl#$5BNdU7;< zpo!+xQ3v}CHVF^*mRd{}i z4khJm;tfk2nd<*SK$`7K?$ziXk!zENwDA-CkaZ3wD9k!lse`i1uK!_%F@ruAa55Xx zAQ;T)fFLF$}$xDUjX={k@BddtQN6rZ!*lKq6+%sr{ zS>dC=nd!_u6|JRXHdc@6XqoEKP?=$4pimU7)XS*^dIB*Fsf(G-@PbFcoJ%$;=s%8} z9P#uCg``Yrg84DxDc$;F-umD(sBZtOf>kEf0MN~e80Sv0b84wXFC6i8l?r34Ji>>G;p~?_n`2W58 z`e%F?N$X$K@Lf(bzIR{5|4TXjKa8IKW0kM2?XL0-i9?Ebr_i1YvFBcXLSuF*MMlDwuK}VA;mc4G4c0ZNN`si${$=$E~{a$+cgWFHQv**I@s&kwOPllZUt;U>y zb`em2zfqi$;``zX{6GikqRCVT>7qJi6|9B!6rQyM>7qQP6}0>In1M(4X+`Pv>?}HP z6QYOqRG;8UJ*Zx*y;9a%HZpNK(8Z77e$W3+~h$xfUPly(m8p z#E0e-Sx{3j@BNk>|4-FVtU$z#W~CfR=A7nvtVTW9EH7*7h4@@^iL8YTW2OY#(`fn3 z@;{i=CZ>tyWY>`h?GQd7L9?!c&vS3M=O$uN_eR1kZPa& zRgf;+4Yv8sdE_H5kvj9{wiC-_u`Or)CAYi0w4BFBb(71)jjJ2k2rX=-=YI1NJ2$T> zAat@Ggq828#7}78dfiT3r={v(JlA+q1}3Y#_0=i6-Nq?%a0931AVUonTdFk{hksj> zeX=W~yp>0x)R=z#Gy(gVyUS6y=i%P6cX#G(m9@l)-+a_lvqE zi1cT&AYYYBHdp6B^5Zp_GTjwd8|dC;;5OV1wx%Q&%~-CwFUo1w9~R^K&13ESCW#-W z6`VBCo1G%?rE`mejLu8>kEhbR5)$V@OQsb<8BGBZ@Z?87oGCF50e;^tKm`CD zQ^jS%nv{lo|xLMErMAx+WWdwpDk(7~AbfHP?46i*zpKZJd;25*;bperdXDI6Y6P(5ynT%`%T&}aN z{1?-Et?)Dys_=nB+}v4vT!WsCPpyA7j)lp?$Oij{%&Mh=UyZ#-$eb`5fsV_Ol0%)O zN6fuM!c7doH`Ak;-=omKb96z`)2t2_Dxtmq$>#?1nqc%W?29Ck36HZu2BVjQ^~Gr)dTm-QQz13Nj%fShDp;XkFw#tN6DEQoLj#Y1q2aLDhF!++T) zOJ83;XI@LpI6S5u+j#~o?rF$}IhW5Ls%9Q&a?@T@(V_Zf4(_-Ozz|oJF%FU4=OORy z9OY< zhUVrzx&TF9S$OpG2i%YD8OUe6Vs0T1cfew=gv#%T+;_;XyQQFWr0GdMQFE+T=jv)| z!`Oe5+umI#UZb?hT8d3_9p7W}o{@&Bqr~T?kiJS9FlM;EToa2VKF^@-#i?7`H?I|L zc&;Z3bSN!1ZPh6XQ7V%Svqp~KTqs2)D7$X}h4PeC$@{+evM_)$l}N3vBPbW@Axl6R zv`0CnLME$}GXDMDE*hX*Df5ajCle8%iGA-UnG@AyDY8|iMtpA2g{4SOy&V3o(IBQ` zwuCi@plT&iR!LOgSe+0gHi6?SFoEMb%M_N=I9U*o%J~_e%6VC600*x#aJA+auZ+4X z<4xa#_)?$JeAjhzl3ZnU+}vR4whK!37ir{+Uqk=z;d#&N(I-3Y-vP1@u&qyYhJL7V z`BnWg50zm;0#>YDN-tx$u*bjuWeog%ZT`l)e3$wE`uk_f|G(m0%uHsBEX+^$@CPFe@Zd{;u{@pnm1IJ1*F#v_h;^n_xtd79|y?2q;Rl@vlIqB!N6bxm>ex7R@%Z@0b5DGV8z_13wW%#ZA(RiBXvV7 zo@U*=&?IduFfFEBJg389a(1o(3Z3%-a<&+brDh@zSF`Fctjgfynex1-oc&qxO6#?AXw*tohzFG5P$xIP?2@YtsIj55e`Oh(SP0;9TYT7_ zuYdg4DMS3*DNpFiA~1ZPjQIDE_y1E<=-(#&3Km8Nj>iAy`0nB4Y+~~d;+%x}-;X3k zMbHlEA8P~xtF$IkRc))KLQzmHO{k|}Mn>}_GKH*s-dzg~v2@dnp*7Jfzx(|@OCEQ& zFU4VY=wYdgfPv{wj|ZQfPWGFr+&}MsfCWI~P7?atVWBm#TO3w~d97DR_qs#C(eSiJ znTrd%VVq1t9fh66uLZhFavIAVsknc1xSdF9*Xo>-6@nF#SFZVA*<*jd^;KxT;!@V1N?>{mNpz-fpMRU!fBMxxEk*fJ180V}d2FyL#T400-5<4z>l%FT+u$314smovZ$=GiupGS+~^^A%pY{I%TJtBWNQP?`AaKyE)!nM9}i^y8Ap@FsokTT05ok z;~AB*?UQ!W?U>+uk*iKeCz*DMwl{IRLY(2f<^({gsiK`8*o3jn(kbZlTw18`Hns89 z?7I8q{xN#pzWSt3EF&~a2?X%xAW@8*^~UHfl}wBNz*9s&UIDV$12&R2xkT>nd?{tb zf(8+Hs4PizQ*??ue+;%pjEU{=B}6(L7xrF@~f%+)04 zNF(qK!E<^7-ygpIu-IrQ5uo_J;)K_&g2jkgG^WSXZ7;bWnQz~|vhqJ`KhI(B#XC0Ko07c{R(r_j^YsRb2!R(D6O!eG~qr6@Ox_BPX3<=#|G%0QX z`t=b9qIY@->x3I0%+bT21F5XlPEY=V8<4zxb*G~Om+&9Bh`cAbdGUqF?VJ3&2`Vp$ zW#uB@l4g96K!{hbJh7mJQ*H0bKB5KfN}@U(l?Lf{ zR~*+h&W+*aaoaFHkk~5O$SG8aAA>I z&*HFPItwGa%`VoP7-G9wuq~*KDo8lJc+58BxyA-d1JFh$3R1$u3m9=(h0CddXZ8Zz zNr($!iOWOl_|}G3lBOoKERT;l#u>;DdRRuvAzk!uB8>B1Bs;8CbNoyilfto9xs=x_ z#ST#H!Zu5J)M(6p+hb9(oiZPuolOR!LRFkSiZeCJOd_`n%(HEw8ZMsi^jhvDyk)M_ z%;yqg@A5*Ghb6+&7+{_=*8FlAymcH@sL3PvKm-(u^-n@N=H*-E6`1tIGjV^{c~Tu- z7c4|73)mA0eKHTQjHa+f^lW*jHvcGR%huot3V^0UixTI~$ubk>YUt;2GErQ3}O@L)W05qVB>^Lap3&mR53i!08J%f_Tl{t2`EMSw8Z zJaeECU&^_+edI!$(@}Fu9je;l(yQ+v9vT~J18c?y|D4ktXLGT^7bhZc+jd}{ zh^p?jFy4JjZJ)yge5BSwQAb1FcJEriN*W7MeK-`Aj>WhIqQKPUm%dF5~kLm(V zW=f-BPs37Yn{QzNoCQ;5yPFwu(JB~{{m6lF?>EGMi35>_q|23AI-MX!N)-BT{0K8a zZ@hc;x@V>S`bQTN(Fa3Pw+*!8-ushhq1hHzIgPxe+gia4?Q$F;#d;D2{-CP*(dpw?5OOfr0?EC_hAF!M7P)~ z*-WcAP2CR=wXeX%5fEni9U24wmQixVb+&r{q}iO#Z~$VE_$f;awSGd4k1$z?@S#;m z`OGL@|7fQ;*;hd7f;hzvX)?fIHC#!1f+MA>Ha~npq(kT#MQMoJxs@a7lq<@K#q{*M zYmX2?EW$}T`4_bDKNA;iQP)h)ZWaKum4t(WsO;d4Xlk^ ztiK`0wr27!&h{?O%Fd1^1~&hZ64fr;kW~@>ZjpRbbCl)9b=2}JY#)d?C#5$-4<9%L>qa#xSeh$KYf{< z%vyT>zTK+-0Ke6RC`!NRv+W$5@MfnAvB%_8tEp?u-!%cPbw03!;B`-F(KEu20f?sF z)1Ye1qoQb1h9C%Lpc4mMwQk2m23kUBGmNy4B@Ri)blFmrQP&Bt{v;2+vKJ2aNdjnh zZvM*JfV!q=rQU6@4hWcJy(&p%sXF9bDQ}yuQeJ5~H~8t-#6Vd$#oheWsm-3vJyvDA zp(UBeCe?lwuUbX`SP&CMKeZY%%#jNchgq}v#CDUP#cnKk5!a3g-%k|BE3;#8DWsdJz8bBFn_zytR_q7LZWid;i8&#iHZ-G zB*;BR86^4wl(W&AYxiLrqv=cBwb>Dp=Eoiml4TrGr^;r3It)Wdg}MaLR!5d@8Yegk=z48Ah>7AoMP);m%9fLIH%I;*&7mPEk?XMGwXKJhIXa%wB!XTAJimbRn8M0@1Z6e)e%tDi0DvD2a&2{Z<@NTnZ$}PAPfe zJC8>s(9_#Jh$Le8`O`as7k*b>1gIzf;%8t)9-_6t8zQz@>ReJ(@H1V(OUuXMmbiXA zqBHV5$lFbcJO+iOf8q129R9Z>I@#DUf+lZR4u{0)%z_)@Ai01ieJ&X`zfsawgMV^* zLp)N$Qvx}|j~#uK!P?#YKw&6RL@2nIL|j<*HG4ef$47@$8TVH`U@FM&JutS-Qr*16 zRr0x5q#mQw5r;98-Umy@@YywoNbkVIAH4EX$tuXC8zN_B$#-Dy7~ir1+=5Cf>6F2Y zTVV4$KxgFf<*Wn?vIt#kiDe*b?bQKw!3O0$$fqzu5=P9^%~aB{wE5=9;Q;02G6R&;BL1=%iQ!WNsEMel;|b zAHtr7z5oKofprrYTwei4OYY#tfGPxc~Jkb+22PaH&=w9T&@<>+YYSHG1 zpCZNdo4^o?r`n1-p{43t=pIlr7$s=6yorAZ(U!?y_F8&7uW8&_tWbzNu<3CYQKGA}3KLrs){TN}4 zkdVC$45|lUMI>lM0-+lfhh?IH3KJGvmL~)2<5D^P= z+EOX$orZ$9ZJW0rwrn)<+HlbC$so5vAm-BDOdTn7K| zM*JV`8~hA>?#^%Bo1AaB*S`S!{;TK+8ag>U8W=hMzYW8xwV=IKj#Bu|j;A+0Hf2Hs zAZ73nP#8$!Ddzq63M3&o(h+2SKrV(5G6(dH!A#4<{~AKSUKVdTZ*SgJL)?(HsoxI* ziBauP-MF&t*cjn!->}`O_OWi+uu+#zc=YS`GGodBIa<;6^E~ZH5G~j95+5{u{umqP%tak_5^N6xPsYx?!DDSEYZf*w z2cI&(LAQK2LFdt`dpWmuQ9yvrM1L0_=YzLC1o$=NyT>#o_qfZ7r#1W&vwFp&J<818 z9PUF02PKk86MmzTuvEs3Yq-kKm`xgwFlT~SMci(pSm;Cwe#t2%&Fldur;^thbLQz* z)VqHAA=t2+2kq1w^4UHntmZhx(YKoC{IGshSpD7*e#I$hI&J)rDJRXnEQ9{#R>?On z4BI1vL6a_y`qGIYdRn$$vR->{FQrpzTL0>Z`i;tiB}#_&_cB!x>%Do>h*mxLm{AFj z(7nG}hq;V(qufcQ3)}_FfX;x3j2K5oG(a0UL53{Vfa)TWq^SJQ@%FX`Sp!>ccoWRy z)6l&89O8vM0GylX<9Vp?fZo~Gj0%>#s2(_E@lWb)DDK5No3m@Mwwtq^^>*)|K}q7W z3R6-HNrN^~L;wbyo!!R#a(9uJveQb5E!l?aY%5o0%XP2oWDt`zyq&q#^*Z8qU5U*_ z?DcIk8<}`d_Ryi#4)z+pMR+NeaW~NCdkP6BCDuk#y|r*jEg|yROo>v2jPOH^3>)s* zR5Od)D4Hm5t%T?8-BXLm`^unK!<`CKBA#)(F;eOEaqRVK3~;@%opm8) z?8SWDQek^bJED{Too6fqE*m!*=%tj&tNO2c5wR{oZ;)G48=jo8=E0=BVo&fK%l`Z6 ztoU*ZCJ|tYrH|`Z!HCpNXB(=RE|~^Pvhs*0)c)`T4%;*Y(9&W`1YkPM(cq-WB4UHc z1H~Q%&K%Gh(qR*XrgdUu_HSo-LPs-wbr>>aV&Sa}4Rso>k3}>P;XxFfP>q>la_tuw z61yJ&n;R1j?N)<**<(sZ>M;#HD_K|)LK#h>8L2f_BdXlV$a)N%E{=NQ)R?LWV`7;H zgN3nicDFJgP9}~11!}{_LDwjAI#vs5F+x@P=+nr`;AC}MPOS)-Eiy(m`rawn$`hPZ zxsypkN{gIy<#ju;O98fAbMrW}->Vn>+u6Cu%qI5wblPZWHrgI|l4`ZHZOE%LEW)2j zma>5PId`VSDNQB?qk1Wk#18Cr<*}`JeUK#-bHj zV`{|EFZ7je6*60{$)?}z2C7c-Zk7aF*vucXvnnY~dW+1bVq6q){LB=hA296!3UF#V z3fN38L7=AIS0TUC+dY`e@)E(mGPhYyPadIjI$*9#gt_dP+?fY-jt=~nK$QnSj661h zRN{Ir#rDbET3`l|73)tn?H&C{5aZOOg%!KNhhqSh2V<7uD%HPw)^{)5D|tK->|~dI zTp5}gR_bG%qBlns-mss_4>@;O#0laTcffY%UYk~A7h+S!-|oxyCYigik#cHOSJ=4d zONlTJ0aq*qSvo0E`NuyAwx4gSaN%A|jcbe2_JDnH`mE;b?;F3Tq+j%$Qrz0`*k>)A zjpmEg3i21Q2Rtbc*OlFqQ{aQ$?B@7~zEBkk;m>)b^>yJ)<*?WLVm!_~(t~{wZ$-T* z=Qph0$pRmh%BNqkxx|b_ZN9aT?h352&Hu1lIm$9%4D+?UfsSE^uRh6%+fL z$H+nb{EoF{HOots*MqSDgO|_lvTb)OOSJS84ZLyH4q8PXK9}Q8182s{blK#jIM$(>|qu} zVp(?5Ppnh@#Tw{iSyYpICbuJ?`4q#kb_o}jTId!z`xGdfCBDt@-!TDj44~Ok)b!~j zq~;E?UJgLD8XOj5K;fvOk0r|6DcdQs8Pa7ktVxi9h}lwsw5GK?Oxv7XmdmwiCSD|1 zwCl;pz@D;sDhwuZc82QU!k1|qmS%a@8vLRQW;?X3N>Yn#oSaosDFOYO3Rx!WeA|Ch z<-0x8m*ksMUrG``jLt4gR0JK5r5pmBaS_inF2Bx?2}eSQEcR|)0q@P3w~IbHuU%R1 zZdd)mZJQ{=l@EdCTE&4sZX$nL7u79pzK}50N(|{{=$7N*xT#rDC4`q(jY;guNv0h} zo;(y)neHvd#B`GX$cnkkS0dN0X$S8uW#P=!5Cz zSi+utKjZjxTY_G|3E6)si_*B1Ftyp-$pYJkyyPWGE(HaEG3+B^T=b?w=Ynv6Fa*79 zW(21($U(3b@-FJ5elzR1+Y-p462#(a%%B~Yf!kBF-Y&WhamO6VRLSSJcB>PWv@-WY zY>5o_sx&Kn@$|=Q0~TyxgX|rz`TddTAqn_4>~d^;b*g+qSMxQBMN^cqic7F}(cx)1 zHsJ|^hqz=~!39d2)fMsKoW3Kg#kcFy0j$MLqC=)s?0ll){Zq7(#SFw7@Iol1!UvDV z01Gbz@PQ)KGlUQ3@BoWbuxS@j1CDtZb=kmD~JLV?ydeQ)6bk zz#ME!GlfZ7X8%bF?j$w0IVE*b))_E|5hv>ctuw@@-O%}wF@8~$1ky#%puifTc=SGv#;UV=ue9;AiFGJA-#w6yVEnUY;N z&WzIA1i3`_AtZ3AR%{?j$|_M8ij2t;=ej19+2^lyK?HRR`y5A)^t8s+ybQirR zRqi&m*d-Ocmm}rI$;Xc%72@XC)Chu6H5J~$rsL8$x|)AEIH}}unqy#NzI09<@0<|# zL0A@4t0sL&>9?&R#GJuloXLd_87|$?X@l*~8M!qdI}&j5-FF=d~d0@2E(R&ZS7-86827VH3oce|1!t7m-D(hyp(Z zX&J^fJ8j1POb@WnMh3^)<;%mP3f};DB&2E)aUx#9QwG3R6!Z*^#_|Fl8N^IC+sB^a zQkZK~PCrKfO6u5@Qrg$I;s;^G3HguMKi2=1ci_*2|2$G-@v?OJ0a<6(=Pr_U_TYf? z77Q#icNEN#PrfK24ik%~9HtUdG5o}$cwP^MA zC%+qfVL%QK>!Vu>WUYv$YxxF>tLYRksj>O34lK~DGH)Ea928UV5p&cHNr^X3hf|c< z0z~i?NLQ$+FtA^-3-M>E-U+J<@aMqZ8EyKzY_Yo{#y^x%0`U8O@q>qdks};%3xw%YKH!V|vJqornfMT^J`N z6(~f0MA1R=SH@G$V1#G*!aN!*t*&D$m(z;1BKX3EI(vlSQSavwb5bxmV@pMS6E8JO zfHW)Her9WviQ@}6?5cNA%5@rWQ8Z= z5C{C?Pjc8Z)W#Ds3%H@gQsdOjjpOM-^&n#N_k)qKA*xuMMWk@Ys;@nq?}k;L5*Xyw z#jr5PR@No z1T=S+2WNQ`n$2>{sN)n+U&a9X=JOr0(aPf=E6oHzOL}Ms0?wdQg1yy@Q;Fbu_(ZM* zYek;Mq1UQpH>+6NLkT#DHsVL|04BVsf;SMXtSO;V!lVO@K>XbXT9}UDT?O;k19+EO zh0eD>D%Dv%EAdF>QN@Id!FjbB=OD1|y)xC)T^G`TvVN*f6dhIk3JMYIG z1Zxvp4N~n+WGG6~_e5rc#5Y z#LG;0;Cn*t5nH%cVR`Q6Vd#G5f0QMb&hfy_3gybV=!m7=(^wuN==L2g4x=uPr8H(# znsd*T@YR%X%m85YMOto$oXKa3Iz0GzC!tRR>q+$-i*b!itoBW;?NYmQsoRIE-{a^_J-kWT9#*zyXe-!gwFRx*s@Wbu zm_q7}fZuwBuRQo{()GbYR?PCMlz+YyF-)nv;R}T8SKRlY%;tD~i2b>8dTYu0c^3$$ z=lrJ>l?&taDz6azP9M_qOP(_OmasaoLMs(WxVr*jV1O}ywQN6daMS=?jJ~`$an5Y2 z2DB&*)%Eq&A%q<3@^82lA9$4?eHRdAPTfbo5E}0CPMqVzPZC}18$gfXn!^K5a;*4L z+rv-f+K9=z1A;C(CMRZFT)ST?{Z@oe=nC21-uPSxJpg*a?$YYvnZ-*I7G_dTi=`JQ z6!$PH(1Phi`O+S2;6hJONR2);HRIbC1>@%gmr=unkR!X#FrNm|JF6a)BLg zmEqevj7~;Y`A=`nglQxUUj7(4eZsJ)n}MG6KfoOGUJBgMWe)uDaUN(OJBEVx2<$*! zLkvxD3z@2;7tP4H0c+$c=m+AY`dX{jcWAA3lZHGC z0n%f`CZXG?@--!Ro?X$}Z%Q*bt!bWqS*HkKFe5lZq39$@Xb?BbM!s6t^<2n!FM zSBjL(;Do^iK4uHmFJP*0ov%t6cv%*HG3_VA z)lr;6D!&x_gQ7}_xIzY=a!C(XNk!OMH!#i091O0|$Q$nx8}3-gL3qEnTG34<+h#0w ze11;})dc+Qa)P*0l3pg`!0u{&So@P75!M%r>`7!3@d%}1J{y|S( ze(m>UqlH8Ky3gvWlFDJrLhY)f{Zj?Ebj>u(#O2alGP`1J`Mw2L77JXKcD?S^axM(R z7s&Mkq}L)m@Kds4m)wHRFVm8-Cpk}O$Ro1`L>8Mr>HFVVi~?8boocFKm8+T*g~wBl zcWrB5UQK|qRgGgYU&!pqtDV|#qWz+Qw_T9nmSzhE6x1;F2-906@%w3#nGegbbsQ1H z*fwQFcK6>t9PTTF=FxAyDQ~vI;}8kn>K_N#jt$yzWktK-kK7FpjCQ@)b%y*lyC&ms(nB&KFWH~N!K+ z_0pd2o9)Pq^nWlO|CQVldTQwHT27e#4n1LUp~G* zCyGi>M(?)m+y-nhU^tz++g>_eKDIu#R;;IU{N8E&n_kTzvh2emTXw6dP&#AMxP@Dx z-I!hC0$ajPedw8QAoj>Qlh)iApRN(E2fWZ`X@)yJrssUGTuO#^HlB-nBkcpC{e{TJc2XiD_>!l(w9=;H#bG-H3@J`v&R0X+NawumOOFqby6d2C3jPTV63LQcWtK zT&s0OrSCR0S3pzBm|9P%N#ms>RHFGTeP$oppb37LZK^qt<5v*1XedGX2^t^SNKb~{EFQOjFg>inzePkB~aWDPdygJ zW7xO0K=mcsbtLBOQY>JvJ(jzc2`$=ROzpsPakcNytS*`JN=ceU90v%eH4JH?al<=O zX;2oCTD!x2r3dli3CU*oobCOQhfvj?6IQc9PhbO9cQ74nPA5xI$aT%0<{(RBQBc*Z zSt@*w-~gKS(yfWN=)ey!R&P{BQ2m8lm&yD4Y_O<+?tl~4>;ZOGZ|E87*XGche9-}D z_k_d-Glf1kR&V$n^;_WMtPBsyKKKj^gJTm=e#4TK41DTWNam}_PnEuz^fSZb6DZ%l zNj6j8@?G`GN5%&$J>LPkFSUW2*X5p-TkucCUvD9uPZ{+N6Rq*Q6;+b&l{?*CzV7ZO zW@bh-%NTJFLuMA4<4#Oi-a>tOET5QubGPcTqt)(7p*@UGZhC(Ls)0lwoJi{o18NH9 z*z5!jdmm+od5Og&OR$RmAG+Q#JhQIL7OskI+qP}nM#Z*Mv2ELS?%1|%+fD_QFHiT| z=k3#{zaRU$ZvL2i?KRiLm}6`gIm+r1vf81J;Ii3lC5Q^>BGetZmd}(Ojhn@A6~66b zr6xAFi>jfmNxUm&EWoAP1sD#uwAb)aM$hk3>;tFU9{WoPU-p-qj?}|se^dJW633qU zeefJ)J9N?(Uw+v)d1R7RgsBAUDK{>^h7j1z+s-j@SY#$KWvV|lUqu~#UW0cBqh8VS zT46?7xFk8cCe&Wt-L6?~-GW0$uVnM0It8VedWAU$fY*iArMoN|sIwu2e-p!HKN8HX zJ*V1P+b=!Kq@qF&!cTyg%EXoloC})cFp+LzeFyL=k(2D=8 zz8G87qUi@iF(9Uz4YQ?8BslGZ6HuZg-*IG7OmELX_zySAHA0h6PnhQL?XK+{08 zPjOBYlY&}jqfCXWv7lQ?vVbCdpLqYAMROjb3MNO$0!cbHFTj8**-TMv24)=c731&F zy-C|Wl&7fz_omq*Qq>f_|D6lJdApGv2r+I%xG>Y@*Z3H9Ug+5$5$b!m@)quQxt z^*QE1t0FJ*3H?-RebE`1isBEkl-lX!m09LMElT*ensc(#=nvn6Uc+2wP%`edw; zV4a)Rm(hvp|5kd&Iq`v+u;{`Rq{>jD%A}^;sifFgQA)_9n5u4#rod%{F#tm3@iUMa z=$*jm>p?`FV4zwaKaps%^nT= z!2Rw6H7^+6!c@$;5<}==LP(iflO;atpnn+MJsR5grKL~Ta1yzB8u@`h$nUi_3aNic zrhj-4^s#C}9BZVH)s`Ojz~q3|#5YBC@ZtVPd%l5X=Z_evsbVq@p%A!}f7Z}K0=Tp<@z)BhT2 zE>`=O;yZ+91C0U@D58~3z6}zeA$0+$C8-x{8VD!|Vv}w^QZq@1gWH18r{MOfC^wer zWz_aNaMs0oP6 zD-1rFdm4-()B=;KePE~v0&W`YJ}8MvQJm=p&cQKBC&eBqrfgd3TokCD-r=4JUW&WM z@g6EC#~M*>MV`_^`XsE3>LF9bBYo)s10xTK@z$+D3DQmKKBeHAcPmE zFO3&V6X{ky?IJ@!T8SOt%-B<+8F{W1Lz7>WuIMCPQT)xFLScts*H_QNNIPOCn~T_7<#uxd6c$0X;=xi{2ZY5r|hSrZ)+xtLj!;y!m67=Hc59ght=)6X`>uAN0tZF{BR=8S>ar&x zl;>|FxiH!uqN!Bh@+hP^gfG`hgxP4$0TgiSqrK1^rp92CebHaZxv;FmWpD)AXl??q zV1KUB!i0C^gTfo4^`9nwj!Er6Ez?MhQ_M3E7Eg+mRwbe6V?mJ?-dd3 zV^#Rww6x0OFAe@uaC+Ld%2Ql?(nM7hz;00QrtKeC5WtP0WS{yOb7u{+f#eDz_BFB% z1(O|i6|)3L5k@O+_d&Xb6v(6ZYMAc0#N*|xfbMUIRd zE6-Fu8yj@j%H#FG5Z$aH4n9jt%Tdv9MPqN+(FhM=Cof)W&M21Icwr+i#ahF_McEof zBE#adu5O^Q)jHPgrrg}BAr^#6vI`~F0fUI&U7(vA?7&z*!zvTHA^a^rZvuoazZ~Tr zpeLQZ3-)|>SCTHm-wr-{k1^F?D4m*E+9jGEE%c(cDK{vz3eH_$3|)4`QRcqGV@@Gh@F&nMdW z3S+bH^cY6ZK+!#jdWRY^)Y3}TJskE5#=OtXBbP-uZ!U&mM(KmUJ{#!7A@50Cv>vF} zpg7nn0MXhAQQ#$Fu?@DfbGS*KuiyV8D5#H&Y2?oZZ-MIvGZiwxCbal99S0AsB3~!vs@!z}k-IbX zsGY~DcVM3fD!|@RQ@?QgeE(aH^$(!N`St^(|2xM5|HhhpLrwl4U-u2D`3FoR?r7&? zuVnJiT*-gsTYub;S5W^Br?58gY#Rq&vC#ZPin`ntQ10KKg^vPG1IPx#D{izb;suOmv7!veg$Cg5g$0&#NByd>LWa$2T!IB z-X0-z6CHnxh&CZ~_F~y5PH!^-5h`$zUE`(pjYri z9gMt&N1^wd4@DZb64-yJ49^I?dSLYQ4ly+Er!x7F3Z~DTuV1Dq>gq^LNre^3TbVV* zH>jm!E7BIKq;nJGb7w}8LK&@%os|nwDUJ>elK@64Q5WW^mKm!%%cM0<;uVdMmCuTZ zTRf;TWs3IOj0+h0L}`>IOcssV)D@IRbmLvZHRv=)<;GAhlN3;G&us&{a8aSH<%A!1UfNG}KwVQbJ<9b|+E z^s<+NYn4Q2Xr^aQ#pE(6FNjW;3e@;YFi8bFCjDG0jHOmnYEGBKJRAoXkE<=4tYaA3 zo03eP442Z1A4-rCTV_V?uF9b8X+4LSrXA$C8WSp1oQd_8Wt7RITyhX(%%L}|DK~D| zAiHv=l8Ui2R9RbBOt6M13%Sh9A7Y3hFD~RgZ4Hh9;2)RoAnW{(R~5ym_@y~E(aAGb zqz5ZJQ(3m*4cEAvd+MvWn>Ey5YD_9NK7s<4tajDf(_E@}$3E>WM&?8!1`EQ@j%F2A zn&g$kA1oJsIF0cOfVxqkM~DQbE*10qW|W+U$mAf?a3D>8yAknQIF4&8B;LSiAfoby z`i7k*tse0#RsO~@^@u33tUoKTjvU zDuBl|$Z0K7RYsQqC29GH8pYI96z|Ei0%t8*Zc$Bdf3nFhE5pycSWt&o|KO%%PcLU< z9Y?Cre3KtiGMwn+5Q-`_^ymVgRuaojyQgwj zC}ybVeN526)%;zioP@iCfN$vCO=^I8ebFvdiiwVif_F__z)IcZz13jhE>;Ta2Usn2 zT0hB62v`0t>_!o{*RBBm-B>8wU0O_ErCYO3T7wDh6ZJl#X)2CTa@5V(7Y6tixZgpNMzd#R z$#Hk+puR&pAW1!qu2{4qrW$Kna|NNqk9pYC*^CYC!8IIrYLvfmrHM=#!Ln&>jyZT!rv?D1lHO?F4c)X(c7@ z3rS<>Z9y)NmU>ThU>Ti>O!_E`jy$(FrGu+EUm6X;2y=_~<(Za9myp){fz0*UAFD$s zjQ)9}jZm91kz~Yd+UkJb1KjfP4uF;27jk0tqcDRM)?qimJ~M#dl6%vG=k4vu#%m9K z3=6#`_s$KyChD3Heu>|{%I}cu*${S1IDR7P8Y#gipbf8_a^U9_AG6xu#Qd()Q*}j@ zoFaryG~fP=!8Jd2=Lh1EqCQbny1+%{2@CY=@~pj5!tfbo{h&W@vgcE>b9aZFQb&x7 zYkQ&6BH;1$OTgD{qCv;;Jmbk;SuzA!QAmh zIk+tjuM4%~Gm=m&%-EATtnv-TW9<{u8P;PF*M>9a#T}TJlyS<*@n_gNLX2`y5!=Kf z_x7YS<@`vz))c>N1g4!MrAW2RhhCoqw^4{7-UW&iiPS6pfXcv1hJT~t*HPXUwWuc- zC%%$CHCOQ+Eu>pnY;3xWWuhTUCai#GoKD4lG|F)fwd{iybXmxL0G>YsCb@<-UWb<` z#g7~0{=s<+UNiwdYM@VW^Zn%!xUn@XL2RqQy^lbp`t0%~V;$DFokI;s> z-{+7Oh{G~$!8Lf%4)}KxLqPuN_xS$P!x@&qi7rl=qAdl=c0dn38U{ha^OUxEPFi@P z)d=&ZT_v)6p&1(F0b>Ve%E%|%O0Q(nV&kLrO6m=MeeFPkKc?a0k`mn&K6@^nM%Pc~ z)oq!S%R2H@=2bE_GiROBlOZxjWgFygI@|a5z1)KYGH_RRazQxFpiJ=lA8W zq`&Ms))4w@2OJtsI6*_n5cvG8y4f8o-5(wS$PV61i z5hvIkj+Y#Q8rTn_x=V5M&FL%}HwH{x7zurayc70@NS~H>wV(pFln$(eTRTKfpJ<0N4@*w|dbG7<~8}<AD=5t2VG_Jl*2HWao+0Y$v)(b70cFd9_QEclJM zB!#Th!znn2i`Jn+UQu!BBhLClPuOx-qt=8Y3V6#=py~By+s#T<_v?#zF3@VggU=&D zwIOg&P)ynAZdn9P%-DfL+u?^uYHHlv?cv8qXOK*CNgKnvjyWL9Cm*UTC7N<=Qi7v4x?5>W83MkX&R_cdpR0~YvWt;Moi%r z>6Bj>T7(-lT@p^>3%LwhXw+ak2Ib#yl{G3jDD=iv!MbCrpKl7ZgMt9eKzvp z;2bnH`Q$_x3qY)CByT3>@>Z5)!u2?o=5P3cvo`_yVqFWokk~V3PnJ^bbo2S<1~F4J zo^Hd9cQQ<#K+}v5JIrY;BE@lhwB;a`UIZLAWlvkBmWKOFBHnrR5V?fYFv5Cc$Z}np z{44!@A5FE0SbA;L1L}yg1eqE@(X=F(U46nH7@_h-uAWS>XHe3WThbN<`B((&JG$e1 z{h~b5-rKqeYZ4b<0eV*B0vmsRv*N9C1s*6rG0Z@Dvg_oO^w*bMp`!}@_;$YE&#uefY3Iaq0aSiyYx z)Ur$Ust&0$Ry-N9F!x%+>GA2F5s^tEB=|+V{sN0)qUo3vBqlRe0qNWZiHqfGgbmj9 zurSv3_uWzdr{JwrxkuVrWkAek5jK8=x>;<{7}QOfPl+=-8~YRXK!Pa<7aoTg*|Z^v ziz^9PE>5mUq_5;|!2YDcq=(o#%^fX zw;g>o*aG~kW9|pO0XgxfN!_UG?Wh1I?5ET1r2adE5ZvFA30HGOx&@yiA4gD!^J$ta_xDlRu>OFDQxZoz@Mdj zGOTMlc^IWi2T&G|8_nM^XhQ?4)#qGgsW9}yT)wPTMMGhLebJ!!gW3M#aJ^bUJwL>Z z$3)Pmn}Dl8js38Q;NGl??hSMwRsG}*FYwNuus=_J# z^!f8c@QJ7Mvr(kS7CswT?&$rG+PEn<;ec7*c(mh2*U|zlCtd4!*yFPFX&lFqdMou| zd}`0IK+kUvY+WvicHJ%AHtVxoms8yA)Dxp6KfGbA`wtuzpPaX2-Krz>x*UBG{vHwD z2W;z;8{%o-NbpzGs5_>TR~)<}e8UXifW!}Fp6RbBFPxqeU*U9L zfByTP1FWx74bK#|FiDW3u4dQ^gUE+_B~We@V^|(|HKS4<$Kokap31JKfWXzcq0FkbZ)ms49 zrbyjO+iGeJ2aBtHPG0Y8r`-4XRK92Po*PH#QmG5hzrHxDaJ^v|AD2hmC!0d-~6M>RL;CacT* z)831Bj1BZV-45!~sGD?ln1?Wrc?ZqhteY6Yq?>xS&r81dR}RXlaW_4Jkq^P_(1${= zu@A}Y6c6d_z=sCG^oK}Z>YsAIp${2?z7L(e*gwI*`b_dpUPrx{IpM@|Ah%7xX1E+D zBB(R79><_Dk#g33q}@iN;RZUcyV$T6u-Yuh-F%_0R1p!2Zz(KE;VYxQDFLjktL; zlbNbDHtUd6LO5Ad3{p$Dq?J8uvn2+Vi{k}a6=PY~OueeX%*N&Br<{q34J@r>Tln%) zhh3=Eu;S5AQzl(XOxCekihg%aVKE7X!wCz^MO$DteRf@mH7MG}E~I~Ch^WM}Uq~j# zE{(x-OccfIG7iKb6g* zKajt{aEct})*cZOZHHfHa&Zyo2eJMlQ8w*|dUl)dY@Qb?C5O$#3NximIF%QRo+4XG zVb=SDgf|oH1Jino0oSe&3x-aF6OAK_Glj#=;pzymzuY%JTAiv7HKHHki(!MyF3ct# zpX)QQcXk})Xy=fLv5mot;Si?}9g5#Q6%Gv9?C9AFMzKc66Hywt{L;fkulXe+y!U#r zbk~ZwaNuuT)w5D}Io?+`XO`JH&3xk{UbhqFhVckAb6TIdJh2tepkzyJ(9!Yua{!mU zDsAiNu6?D}?R{d4PG^V}z2*RH=AwnpD>M_%>!u(6^-dqZzN>2^Y<;n&5O~zJ*e1FB z8;m4T<1*sWQaZe zn4x$wefQarV2$ar4=H8k=%d~%(XZrsqs)!vv88R`xuzQv8zLJr9m0*^M%6}fqim+S zR@*FWRd>iW%q*x`t-(;eRA52jMm37ijVLi}F^o0TsaKyI=lXi+Xkq{;Ab63!y{uCA1QBC%4{b(j!gdz4S zq%eYLYBQ{($aX({wcy--&0H7oz5n&o2D!#(__VIVvsu_ZORu6rL*NZ0M@2QOfU33U zvpW(3?R8+NWjEbfbupy~{cvyEXaq}|3CeNk=TT}sFO3~d3`#C8bwQjS{JJvSx_qJq z{n0F6hUjl|Le$-2UKO#9Q0RxbOh@zd-2R0I>o1LPAF6tPD#uwv{1U?j<9eWVeF~>t z%=Y`Ltj&|ZVE=9_{!?ndF?h%I{$^k5`X;&{`CnYVptXgWt&NGTvyio&k=4K4zQTmm zz&}hXgNwsu-sawmCpFQAdAm}GDhN=5eNrzA9Lwez0$gvZwjhza{qVPigWL-R6n&!C zyqud4zxeoewtoWZ&U%L(5tTI*jZ~vOe_DZ7F{3c|)p948CHOaC9y2)*GsOoP3a!^m zyxpht8YGF_hY1vJ*|K-QEL(WeVjKrjAfCVn=8V?3)034T6%odE@I)?t1py9iSd3Sp zkO)8bqWKSj(@XAV`C|%wm=MBw!WVA;`t@Bwd;C$Jux2UO&`j*ZM_h zhFz67q=^7=@&t?0Scn+a21&C}yF-J#wyvxPJwr}+p|$MW`Z_MYOcmzZVfa+fzFLht zqq_Ac>di@n)tlwne@mqQsSpIt5vEpsFWd9?MgQ;R`&Wg)$i~>(!q$ZTTSn8yz}8si z`}KdSZT!~|a&(j|R6hek@Xo7xb%1W0D`6ORpq?NKh-e@3pmPFJspok2n6K)z%H(#N*!i{x;hg|+4eEmo8pJdlHg8BAzzE6W^g_me0k}0yMI5oSl@;V0K-JaeH&c-ec}B-hW`iqg^Zn% z%fBeWaH9qPu~YPGaouvO^%26=s8<*QR4|`B>`X&Rsz8<~XDS%{R>5%J8t-9;;p@S> z>*u9nvPO~y(lYOR%8h^Y{;=~0$z-#Ou!g8Zv)peR*nCTyG!*>DQ3p;f)J@wsc*#|a z=YHKGS!zxfB6r@1p4gs+V2t9kp);nsdr<#4LfMoNqCxr!BMRSt+w#vI+=&~N z)ctPlTYR^?{^dClc7335%RXx#qa&VYP1SRYUT1u#lB+= zmwe1HVLXR~C(i6Ak1LE_4pH4`&1qWP)Md+-678bB-@!Vd$B2dYF350fqbVz8<+H$K%~XR%Kh`c5 z-3oM8VYY}zi^<)$71h#Wq!umfMA*usV_gd?C(#SWnzPB2q3ts?x6g2wVxBgYBI}EI zIB0o2og+}svB|~{yFlD6$@{a|))Q6IuHP}kG%!l41GPC4otdYW(4b{YH<7Ze+1G8s zkqtyiwPmR+Jrd1n-ED16F-2sEy0v!S-~IV(h# zDK7Bidixo!c)XF+=r|)aKs=3notvOlUQ3_UE_+{b{Wrh}LKcUp;0PXZNemA0U31$r zdRcGKqALaiaamBsM1ds9pi^!xz!(3MiCa60x@c$=u_1i#hh5|c#1(MHU*!FI?@xGR z0P +h>@&v;Kmw_&&yXw{<`tGtw^*C|d>SLL|V7JW>GMuedyrns{7sl`#k|fqk$t zdEmu}XB@?BpB?G4ldx=p>Is`mOh=qwHxOet_R*cAkPYpdNvq6*hshA&F|+mfywr0i zCuH8Q!)3D$lZHShn_TLaq%=)JJkOxTC3!`SXPZ^Ms1dUeU{5|siyH$^awhK&+8H#| zPrs;o@GJI_nT1yyPy07H0m`iVrzFWN<5ccdftPS+qopBw1oh((Ssxhcs1H zMFF`o_J8Q9{C}=IB1_rlO*k&l$LU>-;}kxyZ{3i-p-}23F6Ewo1{s?UE)Y;=%sb~i z1It=^230-wyOK-D>?&7WGG|noSb7A5yk(v0kjD26qICDObPogJ?ef7SYz(5W@`z7p zQT)OB)aES~737JZdMX+#o)LJZ`WOal+x|c%A?5DI$!_TVKy>_~on09yVZ!y)zvkTS zLvUwskA#uQDD4=Tw z@pr^-;;3L?@h`Qw2CH(Y9jMy0c<$;)dm=Eg6sKc6Qj^gk}#3k?uZQL$hQ zQdnpX>ciAn(lk)#G8iuUt&8f?`;~#7l62>RQ&}ncR=0y)EYh2gveHAlC$bu8fu{J~ zEa(eUKmE0yyj$dS1NOF$r<3J*fsPj71m8lSTgb2b_aq%NIVXK(>omH#`?s>k83jAn zs~-I4e^2J$Y(yiU<7tw++J~D?HN?`UhP$+4zRY0WFuyk2HhG=nX++Ib-*CaXR5l-Z z7=|tJhQ5`!SvG4-IbN7TSa0Ec`2GUud68pjB627t#-?+gF+>rUxIfB>1@!L+_16oK&N6oSi#(nA6nR+k z(1{`pwTIe(9h*(9_C=hJt#YZDC~bgZs-DtH;gV^g$pV-QM;F1LAI0!o)OH9sZWHhx zefwpY5xI%UXtk1GRy`{q6vq>Ksrz60%0sKe}o5!!`&?tk0 zJHdCrgBsTYj451Un9?g@ZgC7Lwegn(q|2M|7{hKP0ScePl%U9)DGWd290n!9sKyM_ z4&#WC(+Cqa2$VI5J!I}Xg<6nHZV@1e7&#${7(4n8EGB~z(>Eg>GPHux`;U9_64z4Es}qV0Xc3zD7%M3I7&4HOU|fqwxgG!Y3cf&?^M(=1vs{g~DL z`eE1YeZRcwt-cvf%jBsT+H|WuC~@_8RMlpy^T~QP_e+%fwDkPEk{ENk(+n^FPTR@J z_F>DnrZ1=fJ|DCpHxpAx;O#FGKfSC}2SNyZrcRH*F>?gXD9~H7;q;Et!-ObE&_qFi zLBvaHdgsug4gKw5cmQ>0x~WFAWQ?Sqpnp9p8CN1Es3;~WrWgWmS~4SfAx$2}v5cmZ zv-U4(Q?-r~((@Qaxk>CLk@j*NX@v3CybBpjl>&6Gqo177aiRx*~SRHufstCYKkvJ#)eB0l*d>ux{?sH zpJ+4>ZMi%f_?QP+&B@HM)QH+hN(e4+C+5cKWR}xPg(Fx*=}v8fp6XQMmyTwo@OZn1N~tjG@1rIaLd z5kpf*F}G;ANFy>`03VxmYA(<;h5Ky$k_!TBX4T&$VDgwcf1;@)J91-74B_{IaII#* ztl%qF{n5vMN3SW=BX_7=ibeHTFc^%LRkT9gSM@0>jOI)O|v~aqMZ2HrNOOHy^lKQNn35LRH;Cwesgu5a5CfS5%SrguQt*q z;$cs~=wf1F%H-l8t|oabN8p208g#Qar~LIm>=NB_*a6Adlvr4pBD+`((c~FNS1#9L zEmUM*_8khWPPh z*@wz_+^SY{K}XgFtDVDls4>=D^8j1mG;g#eeZ#pcnpT?I$`H#{jhEx9PW*a~uqEB` zO`-zWi1-&g?f{^E-G=b4BM^QnE%HJf1k!Hr=jylqgXmi? zTyQ>cieO}HLAa8Cy9tQ$R7$@@-(OuPC?-S|*}sjCi>VNgh#Gz3TX3}kq~~{T%ey!T zSdrWrUjVd*TfMTDAJ%zWqa{@^&J(-(GLqKUM4pSF66JA45daQb(ly)fUO zndv(h(G<|D^Y~#PL{iXAiHeeyUctbCQRvli>4D}-!ZlZpRm2aTh9njCcdyXrpJ#-g zWL)L(bK)UK8ino*QS3nugtvsHWdM~sv$x~pN!djdV3Zp=%A{csEP}@q=wq7~6 zdXhR7#m|FB&1Oyw^38+Iak}oB`IFtaReKXF|3iFLjwl94I>#i?M0p@3BtYOpg-dA( zq`CV{uo$LVglDJR)E8`-~V+nq^YW`Hdlys(_-j3>+9XwNA&oY;RnDS)55 zT71U)$O1@8=##E|K_yi{FIO|iy4}0hN>{38Mt0hFG&pjWVJ5*)(_jqZ^78>50%bUR zsGvTSQ$gn<)^k*3x|LkdZwZR_iHHM24q19!>m$+ znB9nZK`bg-xsqkSFA6bzh}bkRhg8++ly>6&__5FP;|KZw-wG<5IJlU6vxon? z`%tX~>7}yN_SMb2kv&F|P687L8zMR-v>KFWFoz%%l~6}Q=Lap!1X(ynGA)C$XsKjHKZUA6v~)nD-z(<6GEm z4C2|?b%N2OKVTm8>h9#X(Ym#pMzgwiAQ#vIQkI}T{^IUO ze;5gKeeclH2O0Pqhy^~kHI<&tJho3VP??DVcbBhQ1TQsWQkHKUE3ddy7B6+|z!B3W z80IxdLH+HODv+Nt!$(T(0%5~Tt6PWG=$*VBe zZa*`)U8ihj>~?12l793c^1f9RuVwszjeloaA8OYjG-|{4Hv7JNVz=Y-)l1&*<_Nd{ zxcdj*3%EPEuO=QmNLgAB5t_R~+0VcptliL8D=>cRTe`rnsaOYobg{txd&s~Ss4sHw4_W*hBPxq<-A#09z>wOI^4Vg9ySO-wW=|9Ca%Rj6Nm@X3 zxCo8r3aV_eAthPNeoGc*M-6$rlsNKPV}Y(WBYJ@}9{_R=tUx(T4#9$Oo&ZV64}S$p z5xPJwj0*u)h{ewwwE$J55n)Ou=lYpdagt8Q#o#gFG^^XW(@KtM8FPaReCteusXlG2 zgCr-cG?lS!e0;{xapegxlIEyBgj|2zeLYogY~}2P?s>2N1Q6|*jvzajZ|2%MqjfN6 zHBu!?$w@p}xFf{g0~ zP?UHlaAEMqc7Jq)ooBRy=H*6u zl)jY^)2zFQa@FL_xLIklyoYJDU|EO&;*p(wTG$&{zdy>lrw>ZyM< z$7Hw5e$i2S7(_v&(am6;(CFO!;>Hxbd6;l?odS#NV2 z-pBO{iUHNYf@#bNU60e^L_=U_F?uMKk#1s%rZCyK@^+dFiBdy|5iYuS+j@_TvQ$>q z);Q=ij&-`+$N>zi2a>%q1elS{wGpIT3)&3yn1L)rS+qq@Ly1hG;2nmzXDK-`02;6& ziDB**j&;qgIp>X($)W~_AR8ILNc*sq4h0gv=<#JME4eLM49(Uw4HAI0LLOlB?mC!Q z?wqI`)rr#2Hg|n0EEr%LPe`SzXm@X}qb>=n74M zFnfZ=&5Vj~M9^up;oBCzvJf-Xs>pG&o~Y*LTx4iJ{}`LrBv^73CNRf`! zLA^5x$Ek1?F!=(B)9cN)Su3&I~9F(aUPoy+~x%^eBRvy zUvZCMpz}f*#ZuXPw&g#k2uv~+wZCZzAbuiCS6|z=kNY~5=og?DRO8y7SdFlefh-$h zrbiCfR0f*V)0{?{%s(aFi7#dDkb<_P6SAFAT$22Wc(?~3Q1`lPgiwym>mH6aF4#%~ zI@&r|BWQ~a6SkG-#V9EmFU#miV(D9uSn4K{uZORn3elt|z_y?s^uxN0lS$!_JqEqp z(O2=buPMknO|T~|iO3NzqDl@@2kQb08fZUV?fVKE?v_o~sS|m(TtU1C)z%g0o}}xh z3^Ye`PA|mF-XS8(Z8dt$JaH$$UB(uYEUEP4E{*!5V9ci+UnqR{nLiwr~Zv z;x_My&4s&X{Q<>Ir(;;Sp}@zR zGoeX777?G()lSg6( zG3v%nMucm(4W+vq`%r&ELLP*hib(4V%&f`*#dX!^IX!%Jd0PXUO-$q_LqaMNyA7or zLo9|x)YFp~mv<~oVDFNkOVsZDwWW@_3pPEYjyi_%oT2DwljF)=UfsbSM@EiJgP7h+eIKL=W`+%^!FTjcFKKLC@4}VK9jM-yc44 zU!ylaAY-$=0zSy=Pjip%^xbFGPx}bIM0vR5$-ireOka5=fU__#eMKXV;I-p$iQ7-s z(XT0A=y^m>`cYr>w!efO#%~zROJv;d&Z_&Xkn5w__0CseL{%{1^*jy67RD+>^aCMq z_xz$)jJB?1sRX{g;PqF5AA~b7_k&<50orJso^_P*h4ds^G0c z9cTQ7`F3-mXB})2nUN6EaOWR6#B4zDBU2F)Te?`e$qG6jZtnr+= zy~j#<1dmj^^O*92?;mFT%>_~YfK}1Da7i3$p(-x(#ueK*Hk+)^&MqutNk|k$n?-*A zHVR+k`zF%oNrtDe@ne~j=l~sn;BcCPkjY`SYQ@JUHC*OADzTpvDWXSAEF#nTm6HU5 z23{6(mZKSe?JDyq$^<%Z+@)dI*{4dT{foEAA2Oj{g`P?&oVnEc7;fklQVnM8QSX6I zs9EM02TJ_BjHIl0K!tz~r{E=uX_n_n)`o(sl%i{c002J zUdBnz&1D%4J$yyD0>^dwazFFwMU4TOGI49Qe*J(LBxSwf3Wk#^$V8t2I*VaQ5wx%@@lYIPdOs>>`5cb%zzv`}I4#tCY zby==e4DbM(aI&c>DyHQz2hmM(C2lwp52N{V&dGEFMjB|{fnSWUwtvbDcXn1cm3nHL z99)=*%tb#dJR>J>Q@A4w?fWjn4+bMWsH}u+m_0h9gJ&X1hg~|u*<~VEu_si7GS%TR z1Cy7hn!K<5!^pX!^}qv74V@hRFv?+a(wec@JYMq7Ka17*SNLFLJ@b6uR zLHB!bCGvW&I*Qq$j0_Enyis6~lu_7L%Vzdzus0-Zr$~+1Cq0NKj-56)=WN>)HV2@x zMjtq{j;oE1y^;mSdJH&j>|NVwb~QW&w5vv29o~i#*KY@n^qxBWWfNF9g?a-)G*Kk< zPT&)j$rY2HTQYy)USG-k#1wzm0@OMIYQ^8d#NQjucTUZBf}W>ho=;}~b{2ku0(!nb z2zaiJdA4EE9H*LHm5ui7(xU+~4v%)pZBEC8IbgVcCMEGKVYpeX7^_ z2?)Gy#K?+iiJB^3m9|tp(sSH9@tHhM621>jp_k#M(iQ|}fU!8QTo-}&XB$137-y10rR)}i*H&UN3Nhzvqgd<=bc_@V$0ZuP zthe%fYSjvDB3q#AnihVmq~0m^_{yB>nAq3VMTxl1t0+*og5%1kSZod~K@C24Rd7%& za{>>J6oU0U0_e3pnN!y~SLw*ca;WE6)qGI!npS@xToR*IxY9b%(w49GB#u)_$?2$3 zRfb4Ec@`6e_OL8^;CsBMzoWv#bZL3n4E?qGjn|}32jsROR*A@HwL90O0_O?WWNATF zCk2OUWucQtZNYvu$5*zDmx`e&pf8?#7Rcj>PsaX0m@y14iMyEZ&&&`aX#Hdc@D}-S z9da8}|AW)!rp_aYS0eSfDY*1L+Tnx$XPIA6tlKvZ==el%d>p<&)uN?g4y!1OoZ`jr zwD#TYehQUTUP)q3IZ53@IWWnWocta-gBnK{Ij4w0Il5!^lSJ0|ve+|Uft6o0(TXPp zL{)>N2O(ByCQ*fCC!)A?@SJk$Q6TQvKmYrWmYc~&E4QN>U1EU>%UF6=(Lya7VeZd&G0Z_t}`$KQp=f#IqlfBNi&138~w|tjaR=OWAxP z6S%-;h9-aibP5EZ?>XUC7m%N2LNJL!yX1bKg&@+oq4S-=&p#7&9;rIcwDUF>2U|=E zQg%vw$^YoX3E}=AU1lxZ)Y-EDNf>*vSi|)EV1EAp=sKq$&4OsnR(IL9ZQHi3ziivK zZQHhO+paF#?yBi~XJY2g#GQzYe8{(aI2n0%?zO%*vuX_}{diNg!?v{8Et^|eWVgDpWo+}` zixUjrA%rWhtp7RFR%{o;EJE|z(LO%){Fgg5wFu<~< zapo691$Wh^972FtB$8devK@GIecFW@Z-*7QBcXrBP<6me}Yw1?uMGm@Ma=l{9o|#*CC`)=H z3$LIM?&{{%QpRy*3-7gA)nh;(YI<8V`TX9Ln_mf>+Gy~qn+bb7xZA@bj*?3a8@B-& zgWoj6hmRlw0S?OZKp+Vgf8>ZL;o;u}DPdP4VLv8(!zsZ8od6{#D1`7=o_VAMpLkh9 znSY_4Vwsxj3+4BBSw3LDE5jFT5;m3=;*0kzLzsMFPSB%8)^Wlm{Q*RRe4kx&{s;Xj z(jK(RhbO{XV$6_*r3%KhtES-`g5t zeTgiX5;))GJ`k{2-`2CK2iU}O-J?E9ieABcX;B9s47jJgYN5Gu)50*-gDB0E^nC{M zctDqQ>*pM0k3~;ahM4IiTS2a{2FKWC}tlv(AMHErl z=SjE|$G{o(i$M3B71qS-*kp^EURxLO!sQyZz_+63@ON9DWt}_X9RHGT2241j{CoY2 zttW7D0IJuydj6NjE8s(3;n#JKi!lz^8!%2}I&~<4hyS%7Pz)jEJPxlE4(^F9eh(+e zLF4*6Y>ohG^*vgTjm_1w+5uz9ncTw(I*(~b{&?esWKoTU&;)({hE@DeTC9)}R8JA@ zV?5pzAI&4(-%Tyk2>nPEHPjTkHC--`G#%tj)G2K^8KyJ#Cv6+UAYZeUz}v-JS~=<# zMb@&!dyc0kGxjs-Vm?jYCbq`KtMGW_xl}hl3Ibqmnqv7NjGW* z&Wk!)f2f~e7nwFNgt8B9=>@}~JuF@NRdY~hp}<`iBNw?XqzcHbgPYiLG%#PLtms#E zCC8q-Jp4-y6ON7e)&}6;w(~-WtoHg9{MLJ<>suFh&7Kq8z%5EZYhl5gwc37(t84IS zK?W0kkZXY#oDh6U} z;-9AW4MO5&b4WFye`_0k{%MWEYtwmZKPD>p7V~SX|4Z|L`z!eU3|}Hj7=iSx$gePD zobA*5DFDuitJYnja!4@`a#cZC|8mwlo`4skV^0)}4Y*(~aH!cTBNq789tQ?p?{s}+ zO(_D78O~cM-9aD1!?IxlmY7N&=d;Yr}! z9G&Prj^#CrItiVR?E?89YzGVV)NtC|TQ#Souq%Rolymk9MW^ z;ec1~b5bB!#ZvEG(Y<=P_u){%IY9M6z-|lM!u?PDi`eEvs1V{adW!$~PtOhiW?{cRblK+(yn(f*t z16~<0`GtmCu7uNL^m&Q9rFXkte;*5qP3MUmZx%Rbh4yx|NR9F3uZmNHs8GQibdMiK zp&w%ZB5{R*IO-Ie#KATiixGPall_H5Ev<{`+&^*7W&904z?2=&_O}Ys0?mIs!N!_k zl5(cFKz7Rc@cq7jeg{rK3#= zY;DQM8<-cylYLKQZ-34rPY+Dm8%i`aL!vXDZCb>UQqIMcr~@gK9a$3F+lDNWEV#XM+YIQoH^)HA@{697_i;UO z7gX{#wD?v38TW@jk?E6G@>JU`0qls!iav)ItGn;2oQHXzHWSa}o3rQ?KAM}~zL}-j z_vuSKE+@4AoWjB!rpyPQ9d=^xk~a6&zpP&$+C8-pVs+xII$9jJWzxG#P19=D~I`?IfglmJ2P|F(i zKZmhxL;Qw(nUex>)3Bh%%?Ftz4o;yIzFCnquepV_Af=oJ-D4mk)@=#wl-L=!_dDBK zueUa}8pi5c(gJ&x%Gs*y6j-P(4Q>t1EXx;{>H~d6>fS$tM5&r9rdn+=rIsdqu#T}V zb_7dn;|v=KtM=qaxnR{9mKx)g%7R&CdQjk&$~`BwF?S^1D$Q2&V@W>|7j_@l7u)`t zfFrora^xP_SK(WZL5v+)2MK|ev{Ji)3`Gz1atHNtD>cdvs^!12j#{~eTDhajQtb(f zkoLBw@XF4C^_9AMe|skL&6_jimml+mmos;(oct3m^FuyXdTzf>ZI<*StW{F&_dxzD zn?R-{x0Nndu44VxR_{Vuo-W?%NyOLdp-F#w#QrExG;YIHF$s^{-R8CmA#DaIL8@9BYh&7p$Z-es#}iX z4vSZL=p!rC`x(il*qrcuekaV*TXdmgFj4{@kB40$Pxgwl)k9API`l5*{V1*n{0L zL8jmGhw5d%BglD|AZL%|k~8y!=R;Q?O)`tgL~-Spjz$hC5QC+;^Rz;T23}B{sGK(q zYXHLdo!WU@G*$<~mT;CCtde%joT^QG<=@UoXbuh&RMU*?Wvv1lxq(3f3{|r!D;-%m zgIPRFzj#wLJ9U%Vi*0*b4li=l{G*2#FV5xd&Ah0@%bs5;s_D!U4cA}YFb{ju%+m>^ ztK)+L>u2n5!>hhO@wpG7-?MHK8EcBTP+_f)n?m@(mjJz_SDi}wY3yR!*Tu!b?jDr7 zSvOVmVCcbj?uzXrZU>gVU)d6W|0Usp?td@+az*{%!L%jU-ag4liegH71Ozz~LQSaE zW5iE&dt5%!CtC3%CgjpRc`)O=XyEj!b?2Cd%T$u}G3?PsLp?U+yeOrK+El)TIz5{g zv<$c^)GYPvtm;9josb{x(rZ^9<2@d7#_v(u18NuS3Pq;HSIXkZLVUtY!Hg`!4F&dIbTncrj#y_P%l$R z(UNmg!KGE9E*D!_;;amyQ!ZOzy>RXn%n@X-AnVj&CDvb?-?5~EY2MeK$@yG`T?1Eo;5^ zbir(^pnel_A@vjT$>gv2c(;7gspA`Bue^NYd)CBLV87ROVZK$@JG!mVeh0sB^_AY4 z=u>mM|Gco}E51?GZ4o}M%BfV~&7V~RzWDtd->J)6Y5T9_t)~!IWwxUGoc&Sise7%= zuk^Wcc|rNy>#2pSGFLui**8^^>*lcnU5oQvXcg!=!K(VVpH=645L7@nx+r{rwA0=K zJUcUFDvQDpM8nA;x@J-37hIcDK$#Z>K4g7-8BpY7N5G{=<@Ukj#Fu6)(6P|fahXTv zwCb%gMA%jqWwCC-1{uG`3rQ{<74}Qc7_&PW9NAo@@*79$&;fCMheZ5wroV^_&+0f5 z!V&Ux=Wi9vRef*zL&xf>{hhv{%imwnD|s%O*P&*&LKcMLIa$lNfC{?|JN3Ljnt+hx z2A!Spre}joTNmEBg|M2O3(MRn%oEy2Y?fyP)%UZlu!=w*p4)i9A&*x)k+4c>oW%aO z%{zg(F8&;TZ!e}$2`<+MkP4T1?zp3QX8Aw+vgB6n`<( zTbCk%F+YEm%G#-LmS4AzWyg|h$SZ`p6QW(OFGRjhfO;658zq_A>?Tk%~{^!emjs~ng zKsDvtmWkQ!vU*&Vtq@6YO_MGF!+diR@+o3#IJhB8m;!gfx>06SA2ul&YG7 zI_O%Sj(!T-J$j7PLZCBN1&RX7u+Gnd=zZ9;o5`B!+E3ul?e;5Kl11pA#h%aUuGehG zsrPHP)9sXzU*9c>KdWU~gy1&nAP}EX<9l^L5t(=UR(}iF4dWdr^1t=ro(Dd%X-?!Z zM#`PJEC&0$@EnFaP~cZ=4vYO?!0=e^bt1QQuwUvBeFIB^Uv2u&{DNPrBH-U^!_03v8gHMD4gipE`P84F>MwC% zKd8ewqC0ftp5HgfZ&fUQNhirHb5MVrz`kwwn+LC2*HLSX*A{qYygIdcbMex0 zSMnrAn8CFdgI@dxA6}BLS&YN58t)a!bL331M{`6P3p)Cn6bbDeh*Ip?D6?^W99~qr zP`rhxrY+=)uVU{Pe7To!Z{;0}D|vYlSgpBl z@xRR_ELELD6eyKaga+g0lf!rnqIvT95;n3L9JxV!u;DH*NUjR z@{p^g|E_j}%H(V_$)A7z`uxvAuPmbmOmjC@8#`%|>l_txGqvQ!W(QTuf(ji=DOk%( zh(bYWUgE5gpasT|6na&TBe65NETMp>d4*M136ksOdS)Sf_~a*tYwG*3E^5I=9zGUh zv-YqXuwtb1(31)SrgyROAqA6atYA%YTM7Hu!84bIlf=L}m;)q2OpJ!Q1#=mA4fXIQ z=;7qpd*jBf*=QurF+Ar}6g5$4tk%lpOsLfC=qBPE*>K5fWLL}jdFoqyd?GEK^ZRLk zS~-eoYPmTl(Xxs!$|AdxI25#2`h!ZBD`3*Bkp`Ej!k!+Gq#@N-GscUU!aCL!vKOq; zHdHV13Hck-fvV9qtCD6{5^qZ*tjvk|k^Ow7=6X$#xc1n^QmA`U5M&SJdn4HRuWd_hFG z_lhSvF3rZW&|K%>$=4+cK?lEsa!&fKQE5z@O>x*t1|=mm0kZP10Zq7m`@IY(0a zy40XM>&|#}>q&oB=yku;+}V|0S>=0$Tv=OQn{O^}uC~{9o1Lin(WNqVq~Oy4(-J-b zFnfwf6^Wguq0;A9ItoGsAVg8Z*BWHJ`esdLXX@*pO4IHpX>B@6U6Bm&k2}=1x>Tyn zDVuZcfOw-D2|lCFC8XFx!HPsue5R}X5V;n|YwbmrN>B`J>+R=90 zsa<6W9cT;PiM2_05ApBF=9Hlal+U0k-)ByA_43BRPL-wFV}J%Sw%m-NuKe+CmMUq} zKR~@!}hs@`?q(Ai>X2^kt(Ii2@6he2Ti4IfnDipL$?x$veG$$SaWEIdEt<#X!n=o@_ zLE7^6V;#A1zq>Mb(ZBju9`|5#{4t?&grYEsWdoKn?{7HIKBLNGL1L}(7i zm103oMq}fn&6x;~9A#Z0JA{%n3DqqdMaR!*+Y)dP8s(BQ3v`npVFgz@M0;KJ@wP5I zl!qd0WA z0%hz9DMO^3)|vgKo^4<(AI4-?S;JO5(CXQkea~j2w>!#NnTF+ods>3t(FNY%mT#b} zq4G>q{3A8J$hQNCU(gL72z=7DT@EO(`%dlX@CO)pqYmEKN$xnW2WA`rdWXJWzsNCb z;i>rXlmxvcRSykZ(0Z#={~)dejy;vuh2;IQa+bZHh&{Qasldh*ky1`XGbvX$1q#W_MM{vHnSMi9(Y%bSk31>H?SLWVuy~`DPff;0&I5 z*lnaEs9SXri$Q$JVUB1W-G{W^QAUOUk2BIXqPX${G38i3%kxKl2@~cVmdNA7e8JBN zw1p+v?v;kdD>K+L+vN`!dHbasg5NmJC&}(NE${`|`lpPhRNeqykSjlEnq&@ia|MX= zGJ}}CDX{w3fm{xpQZ-0BosrOor#p^8Q2BOEyh5QZk!op~5T}$^&~)AA4d`#3Y5ks@ zW*?X}viDrUWsIodJ^aq6xsCsAWXO%h z>vXg6B{%Vg?+vN;pmghJkI2>~=~j_$Bk%eB_A%*J!%9;7)0w61jBHZ7O!!M%!->vX zx6H-%H3V&!0n%1nuE1EX*L+6YJ#O@s2`50eWeL{71xKeEZfA;Yp~xj1W>5R!wo=FL zVSM$g3#shUsEgcTM3FIA@K4?_9^D#uio93H@L-l>yHeSr74&gKj3Cfgs`dlSVKv)l z1~lCF_{=AATx%ago*ZLbu5heI-Vx%f>hVxp_)DA$M4v*_9ZS{Pt$VB|rqG6PCr#=f z3$Rh#xAt0JR4$Et$_@JxO2|N_o&(l;xdSP^JI(3Wzpz!XLoBA4P3`h|{lRXT+mM`k z9vnacJl>v8#v#7|2Oy2d08`3`;U8h`DXTu*5RuwdPH2J=BfP@&!S1$tL;$$uz9ryO924c#RNrgW44pc2{xs^!8{ z$U+tA3&SbrL-11MiEc_Z7(qk9%Yuh3=q(MP^#16Q#G`yr68eZ`m++25Ag6+Bf|`Zc z_64ewCgVaszv9Bf!H1Ga2;O)N^%M;D(io8(mfDgcBViFk?p%y#UyYmpQDd?&||{0Y3gpftE^BVm3acPJ#06H%e5oiE8)=KL zh`WT89=urW47p8q!?+|_KB6_D9lCXeFWXk^wp*sacZT2^0v_9Ev^{ zGMw-)5tV;6r_4fJjRn>q7i%lSaR{q6HDQ237$R4f&2a*-Hpp|^nRcKnk)D1jg%~g5J zE;5F1kI}D6$yK4!~IghBBs-81qf?9*4&?JJ|^9XO#PKGpM>0Yhh%;;l{hoV%;J zL*ztVP);GRc6W<2%abkr@vLs(_SU!aGa4P8-=Ns`B?R)TFyv*UXfHja_NJBVRlKJq zQ{f4LE!IzpynKs|x~5qg*%B05v6k^EDtn@EI?&c=a;+5lLwVV~Q#-AK%56s{E>lfE z&r`NdEGE`0I8sC|Q>WOh`58W#{jD(CEJF`$qC;|3LB`NV{urQC8!adTl`>VYp=e8+ zvWUz`#)6=`KH9XSEH~3@n8BXX&VGXK>7{P~66JBHG4ZwVbrz+g$oeC*Eo;`8DM|OY zq&wjy^xa@{`FI81X~K(8k3MKZsB0y)6GANT5eU^Td<^&@E%9`u$5Qdcy-0klxf#vG z6+Edx#1#NoIv{`SVMFi@jJCg7He^ib8?iGYJU1AHP9Fb-;Nk_uq%vwlGmN&sdY~{BN(#!bddT$J=ty2 z#>ElN5>7gHy($uiDsJ2RO#9|eNBAd8 zVd!0RJh~fIyW#+a5j8$yh0WS*n9tI6F*JzHUy7sWr%-D^4z%l=%neEQW&$`V)Lf0D z?;r`X*z+H=dH3(rn;6_)@?%XO>)1QKg9`Hp%cRz5nC!vh zkXOp^g-GH`-Mj(&GyRFISCue#A~1%iguOnGa=&P9tu*O~>+BZECKxk;pbhQj0=!)1 zE-)}iX^UT>WVEk7($O0LHNxDV6XY}l75I&ZnyvN&A=(SM@ve-h-Fp?g#khKM9HqF7 zumR?K+X%gJur)MG_>@7mZWGnC>jTTl!qv7d*i%C!CHZnp(Cx`3z(3W%l% zXk@ucgH)8UMG*?S0GncRr9VwA!S6#TiA%q|s|-lFBjsNDj@MqNTh7<)ADY))kGs17 zFCZEe-86dJaS+M@JagnElR9r(Y}x0S%5@mf*>jcEQw& zBw{$v4xWxjJGaqVYf70^O#Xv2NfIvzEnvB2VHsKhPT`0Q3Q~yJLyC~k+q{Fn*b$$+(2%g67ybt1k6!|w9r82ie4Ev;QHvIG{@NN% zVbk_5h54wZp82L;p>$R6%r0-^1uPhJ9=dZo2m4z? z3mJ8|C{&>-`zp>xDD|k-62~$Qj}d*s=#iLP!t=CrpMNGQ4wZ@9z*?K3Vd~DbQg5$M z+(@~`GCb41zTPQRju zL6r=B?vZ>jS3?q?mk%|^I#G&`XtBzuvY4u)NG}_Iq*9LVa}%8dlbv5UNMasKQ#Q>a zw#)wH+$f**&MR>oK1yn$P%mq+Ewy#bns47-GM!_lcwDeZ$)Wm!s8o+|p`z~#q4IL5 zi-L2hW{1R3&5E@_;i6Y@h|6V@XFWR5*;!-WX~PI#rr{xQ)N%lWnwnL}hIqCpL@i*$ zKQblonYu6FxTI9Wjv1NS#OZDUxb-ZbGb7oWtJeKvpuP(am)@%St9d563DZ4O*NwDW zBuFe*AA)OF*pQpGb`^z&OWB-?o|Yk}F`aZSh98$J-Wcf6G_nCy=tmNgjAU?hzPIy+ zt5m%6<@=6OF~vcyhl!eOpSY!L0c7>X5-*DI%&P4o?-~i2W3&#(vXV2SId*LC8yL}2b0C4C zL@KH>2&h!GgJo|w7&*nx*1oA|b^^OaFU^LSKSR=KW%JyLB=$-PUm@<;qsq=6Wmqn& zk0okn6jBM|J7&rQw)bu}jD_4teB&MYPLyq}wL8j8D#Cj-s*=f^U~=CsVt}X zf+`*ldMr!OA5(3%z}$tq8!L^js?uYX&}z0CO{OkmpgFy=Rg${~cNSvDjyVfQlwTKj zE2yPQf4vWnCeztMVJfPy=7l>e>Y}Q5F-a=rcn|;OYmjCM->;*+V@G)#Mc?!NNinu$ zvt>`#=h0u**Y!4oyo{BXa^-PVcFKOA7uLthN57G0_iXE7 zB2l;WwwIKBS~8f~Ht{ggijHt;5SFx@?*>t#`w5iYNSPEP&33$tSiU2i&H&W)<$Bi@ zxQ7f*P>IWKGzdY}wWIn^M*1X2joD9PHw0w8>j6x0uf`2#pWN2F$ryd%#hBp-tnlK% z4BlF=6Cu@#{#XTWqEZuRDLbepBZ}f=kH`~lfJir>1ek2WA3Wz-*>b=%_<$&A&t~F_ zBp_uWhaos+>&FT~AOmtFA#BwohOFJelGMOmmEbA_L5%H@oK(BXNnA)vbuiTuLpK2o z-?M}ht4vn(D%@I=uSzqF z`(WlwGnSL8XleLUteAlFPXd6oA6z6=;h5kHDNIq|0qxaM8+^g>Vz1w(Vy`tkK(j#V zQ7D~Q2+B8ZE)%XTZ%z^@ck6sI+S|;NCfXCm1K#AlFZ0=NL0U4Ncq1d#Hqm7z)Y%>Z zloH=6Ef&CwiAg$?ex7?=du+eR5Nm;ajT3=5eN&4+nBB$ThA<|TSYyB++f?9-Ft(Lt zCULUGAiY>pj|u%cWE8}Tl9RSEazi}F0#jIfz$asHyAv~M0_RKdV3heszmRD@=lN4{ zF0vULc~gu*-gd*?9zP~ml3BLWk_lX9YS;?H7giG9PK0&qGyU$h2n^o-IS6JU>})2? z0SYewK8~pb-{{ygSajcE(le0KJ3KL0UjUD2U!Lh8uWT#y4aYy94xO*%NbV)BN;XFJeMJy+A!NK}e9Y0%6NhYBFv?aywRu4x;u z*-xq)at&@tlC&K^nPg&mG|Z5>!%l>3VBsdrtPaK)_RfGY(VWPS)fZ$(HaOTtq)7}K z@miW-NXq&}U+x6A$YBk$k`&7Qo2dTpQb?RlVSn8g(q8W*gSxXOl>D=@R)k&0>bm ziHrfTJ9iaUYQs+IT#44VX!|TSpurw|Fo|VkX=&7)778h!S!^Y%v60o<%4}|Bm9(LT zGS^O8{m-S?*1QU91LvJ|^=7aJLlpn$4WdXj6Uw0*CrJlcO;&{st84bu_Bm+>Rtu^4aM!*wtJKbvsU!B$29k^Bj&A0qh8!DXoe`F^z&^I z81Im=+^gICp8%78Q5WtYxs%F%q@QYwY7KfbzObK5>-2_xT%VvVO^{d0_27#sY@-Coqu(aw=X#l!x8DaTUMAl+3~P{)4k z663QNg2e?Of<=j>ky3#Up@@=>NHH^FUQOrsncx`q=Z%HPk(a3&BcLGyu>*fc5>YHq z3J*j=t8Hm*ZCbvncGYeAtZe2wIg&#U*Ztmm{h9g6_L}o?^Kc`p^LyKl0y4!g5gi{( zi@fLR1wgbR=+Tb0xCb3uiMk`{ojzrSxL09_zKJo4_DnE3`+v3x}*s<5N}}d}|ocKH7x1@XT`q4#;udD+WDJ=1^=+zX1lokLXZs z41N{%)Q{>=ZH#_3_S}!`P}muLs_VmFIfJ;mG<29{cLa~XAv)7P z6j!Fc<@I6jdLd!qU?_N|SWsRWcp>8H9#C;ikEkz<&?tCDFUsq4G%6hZDo}CEQ7F0k zXw*2yFX|k_PiR=cFv;)2(B8lNe7Xtut)j)R?1vlwAm;6{#pCz*iZ1%E<;jsVyU<3w zycl-{R0?oq)L7_gE#;ce{Nvo4*Eo9j14X1QC5f^urL{9;v`ukdvrY6x>JA0LRInGX!U$}P-2xFyzo5olB$d@`M^e>Du-i;Tlq1{6pSd$Lkh|H!MH(SZ-g?w7^4-inb^4tfQx6<6>E`Fykf{Uom{1%S?KINqf1dRnSYIp4I$W(y%sl zf>TFZv5H4bRC=tAiQJNDo zvAZNr$5PxCVXYy|G0M$Z>_u%p38-AfFEp7()z#mCi$Q}Q32afDd*EIXG;_S7GFh24}wTxyPIZvMK<>J!MUxyMaoLLNaRclR<_ZObqo$nz9qvC7KWi6^& z7iW)jVW%pCYvCJ<)XtF~G)qfWHUt}8{Rm_VabG*paGl405IqMihYh|wSuh$E>K>0F zCrp*jO`7CRrHfhSTR9dQ z2@)h7Omz78bIfHOZ;}^T(l#obskp;-7x=_p)M@i~H>{Lc)`-YkXmZ9~jmwpENy#rh zE*!MD`&CO-b6wLGO(v|BD|xqCX_CyZanf&!Co6kT%1r5P7nrkGi0w+awaomkTylg% zB6C_}rw@&VBh{VPD`?9c9q8d6Z~51(U|6PwjN$_#@SR}jV=+r~dE(H!NA-D*N6PL| zVw@hLExDCwr4uo2-3Oyi?<&_Y46_aT+vlxdNXbF%ac%Do#Zpyi*c+-%HHR8ghcQNt zc;eD}G{zd9Y1o^r^*ch2)l#=KY|S>t8zYY4QfFwiHExVICL3dp=~BBiZwxxpj`>or zXNfXqbV!vG9{Hg+-OtXY5C0;|URm4P`4p^h4=~v>=(PGI zRjZaLO`GpoJ*~MzGz)_FX{CMDLeafw5_aC0%aQ9#tt;tMGo8hqJq0G%E$@(eB%4{u zv|?GatX%@sc{H7X&1kdOt#r#iy3WL8X0hDPZ&!DSKFZD1WNxwCE_Q1_;>~!m-Y#v| zdi0&Z&E#aloAZ@-NISKi;LU`w;ID31y@#I^Wqz{YFKyR(2s}E>kh8#B;u#tu^j-RM z2GYYn{5_i+Aa=(B%OzA7Jn|c%i!Qp$7QkyMSy!}}=(u10#>ic{o(m8!{0mOp_o0cB zEx_k?_jGZmsbpuy+$j<(oofrHM8}Bk@q|xNk<0Rc@uAv9;SF|SubzT5fmdcZX9VYqv&#G6LNq&~0o0=(1IhMk0^+2v$&ZG0!iRF;m zT~*#IH}_@z4}~RP=;1|KL2TiVqPsMByb8W3>v(hw0Q`3&QgVD4Q zx*6WkI&pb?zox0#ABV%yEYU-<@GNt*s45h7lNWS#THC~PRCdj66eoe&D;3D)bkf9J zGTTm0g>4uIv#iqgjKf(*@Ca`8Z4c9m_Qw$&eK<6?f_BXl1c#;(9pl^tY{ys-I<_z= z&svT=P8mQ=J6Dqopoe1$hptu-P{b(&NaEHyOV2<#q(xY<%^|fZY#*PrZx`3b_otk^0rsgNhi4!czbzdg zoeJAU57Dwx4pYOWGgS{$BehM{PN8&&1Clu<7pF#i2D52uMFCZuq5v&G7N_bqltUhi z)v(EMOV-k`$%sq((nt-9S+@Y+oM^>T_N`&~5@6r3d}(`5G-F9d+&*}z8W8QADGL=t zrcfOyFyIhOgpLg1jIWCH(N#|7t|LP>FPSAp;lLQfFh2qlcy35$5Fh0PSwc5U4&&-T zXb>K?0m4P+1R<<5O$y_rC{5v{D35Vd7{D+nid?WgLK>Vv_d8gTPAGVRjwqOs&U!F| zt}wWP4h?|{01)Gt8WH+!bASr6*ON8FogbP9dU)bk-iRIkKFIb`n-F0w|v>uuPSv!<-NYLEC>f zEks70Pga!Fjgx(BW{T^P5_W!_F7=>|Xt$%>>J#n`rMv;DV~=Q9CmU2S{-XTD(~N<( z2?LHv8~|4YyN3D1YHK}6WdyE<{n@bU4t5!%UO(WDj2+X~u;Grb9sSxcBiuL5Q&hjh z49U%luAf$h=*7c$^-MFuCyxfsb7?={gevdp`ltRBA@_wR%qVy5Oq*TS zfAQmXjW(9NJ@W9$QGaEyRu57K6IttCu}s@aZCkEQ$*T7Mu(YoM^Y#UQ-y<6 z@Kz+Jp38_eY0^@U_p&7*9pT9odlm(0DJh8F!Y=GAluVdgx}OWsB}u@x8MW;!9HpB| zaELXVS8CK#^RlHc6P#(~NRT>O<+t&5!xrY8x08+UWl324H6jkuGL=RN?B>9YB5M<6 zhV*44!|k|4X0WielbWKPfuqHh9WKmxTWkOjbu@D)%#?&NFCbboHM!sKE_4Tin(1_S zP90xc)pytWc1A6kt$)Q6Qa(GEii;IxnA7DX+;%fQX3$bmlAF6upnFL307o3Cu&}2F zTsukMmP9>-qUWV;n6bHEgX`%r82bL*2pVEyGhIGxf<|LWjWKO55MhGEBYJ7NaMQA8 zqS3cJkNiWnth^V*yC7p)kbl8U;V+;hEhz9*PX==p!GRB?5$MK!Ji{IzHR}2-Do$E} zf`wST{7AjKnBc{iJGoBDWl%gpudV4-1$~=HnKeKm~I@tq0d4)B1XnQ&!~i2R7n1Uhk_dB1U*Eakzhct=iR4!0*;8?@ABw2ybhqy zG>daY*yiZ-E5+a=LZRNT=LvlY#K3g*4giY8xD; z9U6Q=T5L@0fgzyXenOO)Z13Zco2%5P<4iWFA{v_O5b10=R|~Iq5*d#oGhWd*)J%al zm#H@Le1XrZmN*iw9%#-9$OfrDqb;<5hY=fuh5lTXrWrIKHp zgFOQBeNum$5m&7*&vrWHN@SZ8^mK!wAj+LVZO~MlYX54uhf+}ugHl}=WT`4rR;n;6 zt3YQuwYEe;R6a?5Bulw1=}_?sx*cGY6Oou!7_ylTex~oq?w`wUV@Fb!ZMxC!Y1yd5ohmWP zdX%w2;KQUl^a(?%kLo(}njJ4XqC}sg=8u!`1_UgOki%+jZpy;qTPBe@{6SE^t-X8t9bk=`MqH%P;fnptmTpHGor*{j$Jns-7@W=&=bX#% zhoi~7p=6MHO}y#vrYz?MV!n%g@sY5@k742dtQ(nU&P4<^{4wZ8FU6_aCk48`nNM2q zKtc~Aa7pdiS$V2ZfjQO6n@ko{EO~2=a`f`@+6{m!u9mozbe?ddC`eO!I+Yf=`HaVq z3_GDfge*%tZPH}kgd@hw1<_moRp|XUsHx9F1lwNzl>;R6=!-E{>qbkKJzR>2>&`eu z8-rX#K56|DwuKi9+%I&?ZJ;I>u>{QYL$OZt-ycpE8S3eJ2Z^8?xYA_`NgX~81yiXT zOX^3!Gh=Ob@V!IV#($_n5@Mi}yNj3(_|Wm&DNNdJN0#8G|74|^iohj>tE|H%@G2c} zh|H1~C)%{D#RIRA0WR+)aYw;qn{k;dd*f?^kqWCKODY--tB-;u42#(Z9uZHQob ztZ6pw(K_sPOgHQ~RTY^})W>72oK;6hc?{)4a2o2^q8OWKM*%_X)-q6T*xYCq95S^{ zoIQ!z^#w3&)A_27w;3N&PPb4W3_8%)>ZmkasCx`hcAozs(* zD9+HTLqXA}^q9V!Bbo^c>zHXF(s#jOZas$8HfYsAWvYHJQgs=q0<=mn)ppDXkPVEt zM;t!bHr^rK%I>c?MREgsoFoTYmI5`|Hobzdnh?x;RGh1)HeLW-F`(=*arwkc8>PP0bPNIU-Mu%Ggne5UgNJX~2TLdFy zJBCU)sOEf<$1KNAMe%@9cx5)p}BMm1B#n}1S_Wm@X9!X#C(8IF-KNJ=QuE< zQM`|!h<$Ka=eJc9V>?~=o6#@hv@TH06*+0aHaR9yYEzxcX#85hKrLmMIDBlNH3Qj! zkC@(P5=glqRt9B#bOxE>F}vBVjd;l*|01O<<7WZrvCSNRqVe34R5o(Bbvzxm3z3_P za}Vo(g*@Ujbl@~4NkSI$z~pkA9~!$R>2YRe1iOnMe@AtWe1 zS)%eUbiM^`-JP8r(>HmGFJdNMAsDAE!?q13-wbol7;}$7#+~iLYY7wjO!cIX$AJis z>MOnjtn`n(+gs?pYU!D9CZZw?o9g|)+d&-1!5CGzo#UpIkf5B^&^)G7$dn~mwfRjV zOJ@9j#|-^5 z&S!zJ9!5A-lr>TZ2g=91t?4v`Y(Xx9Qv%Obei|Sa-0ADF4}nJLSyAXFi6JJ7zVpw=B}yblBH zpjL?ZO``tF(N3|bz6F=l-K$oAG<>tZA6^yl-IT1vnEMmyP3^iC7{xC$V$BETf+>q9 z5FQu)cIqmkrhI^<*TaXsJSHD|D5x9#6*q$mI)y9W5T{!!=HOldp(ic%FRlndHg4NM z@Z8iUO_*Q0I#8ZEZk#VtobP+!&|v6#UeXw(%&_si%c=XL)@>Q_#|Lt}c~%M7qUMK0 zI%=jY_@?WP4XFmj{$Kp=qp_aRE~?`75z+fX2+0^%Q?iqZF1t(rYS`l zx8qMZD4{)aiB{OZNqaH(-{AvYn2f9i35YM|77(*Rg#7@jZt{mYWDx#_K!@bH8Whs* z75Ty&HQvsu?iEvsU|gY4Zc%za#*>%YLGbyADgUdB3FN+lSk09@<$@3A8x$9iS|$K4 z+n3s-#Na1glQPZl?iWvj;xPlM!;^`tF=49dNU1(0{K1~Vt-=zr*@(_cfUE5pwS9$PY3;}eqzw)*GcBCL$^BG7QbyrVo=q@oYj7Gh0@d~!tg2%Qa!OLmxCo8nc{ zYnMyulL2GySX8@B5x95S!5ub#(ZWGQfZoieb zqUAQtePU5ENxk#99&vMm&P}Djtk&DVw!qv96~+3Qv~Yf_?Gqm<6nV@rIJaUBRNhF7 zQ{cno@*70ZTnqle`{w4z^c*GgTfc3?NKKDUG$+k$i$9KtGA}pp7cghK_~Ld3#{LC? zmZvK0j?@ej--nnx+SYqBo!x&JtIZm&Pbq#x+m%>4=G_N{CnhwbXA$-XFKT_;30~$w zYS#j41IX5JN>-Z=qyz1epaK9d0KlXXcytvVw=|kxbIVQ1dFNe2D^RTYL`=XZ*j6C$ zEaH3q;BBn{huz7)$o&{9W1`G8v9wu_M;po__%MP*T ziIqVUUDeXQlKA~WRO_pqI)n#q61N8QYE=wtQ+#(L;MX#K1frPrODz_vSQgh=R`hCD0i59}+=u+XlY3|v{VuXSL^oyn3PaWGc4x^^)dDaf_U%$>qJ z=*SJk*DtEt|K^W!ix5OI9GPvY0+JRyW;bb1^e)aoYChhUFca@P>FqOn**M?A??i8W zj$aAI33>X|Os6xtQ`YNF;@D^?(E}z^R-_&G8vUkKy7Wu!kom@nvR?at4h=Nbl)A z$X^&RU@FX`DuKQ+G-=Eyw!6Rs8dwE$pW6UF*I$&!Zyg z%dXIJf;DD?TFscafzIodh6kk+wJ`B%FQ0`;!k5J?Z7>GM`v@-Wi=Ee-{0T8z&A86m zkwKd{*U|#@9%>PHUPP~M*aPi2pQ1*eXdRO1Lw*|KL>Qjo!k9r5K53DU62 zg>-G)2#s-RvdI&|>~Iss5woKFZ4yueuE`?D$W~bbS(Tj9kU`cD3CbC8+8l(*ZVyjW zlbDAkM_MURzFobm1Ef3M)ze)>Ec?XsHoF5r+;#JU;&y-QrU|bXzmcxVhU}zB>%C}G zGRKSW( z)z^bP4Tp5QKST^QJnum7WeZr|%gpT&RNm{oAZ_C`eI+Y?XgB9Dv)9VJh3}A}W->_TT_;Y?@fXlGzd z_aDL2%*58t`M2LrXJ%q;K_~Y6@e4jT`JXKG|0#cVt6nG~iy?n!Y)}v4yOA&ii$n*A z;M_#|hjtEuD$_zjNn~W3VxXI{Ha3>EzhRF-AKFz(s#7VC{d5WFl8&8iYoO~_ubWfy zmC%*WyuEvueq`nFeZPOP_*1#(A5dRkh#P8((U>w%j@QGbopGOBJDqCJv0JYq{#zyyLb`MrZH$n3RNE{F2WD!D4M> zLmP{_B^F#}8XF4dz5Vk|XI-y${|I@>IR@D|Ej&+Buq8ns1L@sX2W*RkQkGB7#y9CO zByDJ-d~@r$h|gy|DsE~V_RyT<$Iq>}`m=C-QN+)fU)}eRRmH)^?UN^%Gjz%S%6%)&qaetGwi?Sp$(9f+ z8`5E{#${HjgL~+`zD2oVe@k=I*N3yNc(Basrqr}&vwlkxfUY^FE;7GoyPl=91z+wz zL>6Uu^aiN3EPsf4oxdEWb{6hI`3e^HOgHn5)LDg02F&3+x=ojtG6>3`Ku*a^pf zl8g9-we6@jQ6OzQ@1k#tN&JBM^f&v`taZ;vg;t)Sh@yqhK}@Mja64e>Zyx-SlPLIJr|1v4L8HFGbuL?W$e;gjM7q(>&M~0bPVZ_JvhOB$L!dq9^{tm?x_CFLXM4 zq`K@g6Q7b} z`Rrv83nf0m6xJe>M|^~yLT}KE-h7*&M*-EQ!#hrvJQpTtw>=)|g=*W3O$#x@+ODZJyk_SAU!kiIPWQU;mp$=RQ)AP8eA2oIUF z2GYp*O~1c};>FcXad(Bh(|9lS4$+rnf?iBbwWN5Rv6y6pBTM;r^axqh2HqtwMw)c? zZDRFFU!^|)|6Nc2%gH47T@2OoTSwu4chCRVaRni3J0}wZLu(U>Ul^Hzv)zASWF~RH zQx*KkAv06f^H2pMaq!I+c_yLo0`MR-iO+@71=4>`R|lI<0X@siDc2A8zi%C`IW|Wh zT*2%5{QJ#L86F{R3!F(Hr=491-AAcug3G0(mMhKMXNFbmNh1H^?Q4^gLS&vwSte2R zFf|~HrdEQ$OZ+8_6R~^c+`spE(hA?+=K1gauFIT*KvMdJg`LP-- z!rZ_^&}hYerK|_DYIiozzBz|pn|c0U*e4TlEv62?`$_6AIr9JU=J(Vpb zEEQ}Xwl(9Vse73`Z&axD+w{oD=2>L{@>u{VieyEb)VkosI)lXFdR}(k+f%;0IG;1B zB@F$d1vWkJ$J|-)AAnJZ$dhdlajJaA!L81hZ{BH+m&>VII$z&E`VbPpF5#dGL0Diw zul#@TFw2J00vx=F&5$@rj~plaWTeLo*7ZN5wL6Q6Xo1a4cC%tV+L0FS>iOw&T@^7l zrZ|C8_hYX_A1>y)n$Jud)4iRkuhiSc4$l52W6jj8jUfR3n6FE8G632YnMv>`T>z=v zH5tv=*ww7J2RCQzN!oB{HZe-6($efiMP+m*OhczpZ0K-bZQz`}>1ErHm1i^yeRGo)t4Ak*m6<0 z3FR5iH7Dv#YHCHc$3omCg%0qcNANZEG!@8lV&Qllt{ZJ!T(HiiUSTMgS+AHlzD{c6 zg1=Y*mQRm6zbR%UPq;iJ)Z_4SpV@W@|DIY5ZmaIyJ|wyyCc&;T5*XdPFwmycs#)p)P*taM~t`xQIK>#(pDa5qhkEx{3CU` zyQMO!rI4qw9>SFU;|!-pYma)QbbEHO73Mx30WO36WqC)K1kecYkD83jPqiL7R&5DB z>lhHp*a}k^iR!h7Y~b) z@HJrL@w*EeI|0vxvE0Mn# zKWAx@Lc0J{5I}NaVB#mj@ngEz`40J`AarNx7kF|;b$zqTUZJV`gZ94{?XtT90{P#9 zjrDuo`F~~UDVdm9{a4Laa&|QNUtRy0_-@%jdgPF}jlZ*sMe|- z4333I6muDovsF|3In{jn! zZDxDuP8gAcCP-2=kuT!&?Wg2pLv1N&Ai~>m(){G`IkN3LoGO+@3qe&&zo*V?x7~fn zhK=Zjgdh%X^KJ8kA3`d&>vB&&>Un;BL0O@JzMC^y(C62@?!l35sfL{{l1Q-(Hk`+On&@5>^* za5y0X4*2dlE!qYiZs4G;J}MGi>we@FNY0TpmM z=}KKPS!FEQ&WKzxo0>O>ZReY0bUWD;1B1yA1ajBvGFf~4U@r%;QI2Zy>YWO=~Bj312t!$OM<(JA9W1LMAk*f zGwrxMNp^prfxUMDJU_ZP0`cD*kAZT7>ZQ%!gx|I8 zQP{H)JWCjJMX>0U_A+S_GUr0RhMvX$JIv*QCfcR7_YDBMV3NLBbUT$6PW}P1flKfQ zB1#}6?6Zrlul3g6-}b1^A5+0Scc4%@K<7-^){z`%VP4wOkFmVi3n@Wbbb`DKFBH0T zUgN>)$$ZDY&CmRHRvbIxbe*0u`8*(ge`f}m}u>1fq=4z&FOeql(80=;(MVLxI zDX=5%KEH8;JS@KcaE)MO)ag-R4IM~z?#hdl16_*Ix3GFARVhi~daOG$mK+Ju8IrWs zCMy~pvXR_l2`OolF=~Z1tzvOyGqA>$yDQrvvR+NDf7pl-!rp4CZ0USDWA(+Vsk)o? zMCjgAy*MW;A_jQn`*O3$x5ip#q=jLu)S-nAl>^*lp(f`qu?ThYo;=!AV8ioVIc zlVH$2#00>O|D0qlhml_MS>6MV`b6wHO0U_1BR_ooR}nA7crQ z*}gBaa;A&4V^F4Ky>j*zZy6TQCe){?Z{>oGaEZs6V7HVh`2;7*o#~K&jESGBRMd(T zOp(nAEp_xFQc~lbX3%Zic0_R53<__bb2pMvx-NBM8GXgn-Ey1eQo9PPYVkwodA_aL z(wereHOk2aCq8AK~OgE zLt!Ez3;4R}OVjDlv4oX|FgSqyrZ{^`DAnOKQSNtU^>DW5Yt++yh1VL(V z%mH!ghS%sbNB^-J7G#0`M@Reay6c7eXh7?gO*TXyQ41wco#n`%m8$DafL9E*SKcXX=VW=&^oC7!$#jz|GzV{ThXmn~ zJ$Iq78-UX3X7B_A#gJC&hoo&R(S|m<0kK$7MzNS4L>nBaQo3prN66Q7whVC+0bK?) zb=PrC`|uQbYhK~Qtg;+)=ikY*SThn^>67SE=^KXA?CF|$LA+Bg+$B;GtTw|~fzTTB z0c#oHJ!M*)B@k?3I{$WE_Ht)55|wxO>|l?F^Baj$BC;VQ6-g!0Vr&WMoSz;nNkJRc zGh5D@d7j`ABNq*uRLPr?4`t6ddLQ{T)#!b}^LEcKuw=OVYRa9F8<2W8^*y(8?{GV{ zGl}=$0fb~YCgcvs>xSz2+WFeCmL2&swzCJy(bJ-VjBzn{Y@gt9F^-yhoX5~{xA_A~ zGIzlv;%=~GkFDpyuMwh%oJV(A#?WH@5|QcE?VKpGN9PrC{)`b&iG{7ZO9dzNIF@pI z?ngMP3_?f?GFfJe(fkc*CGIt4{X`VX9Z+%lQ8#7T1uIIkQ-=~0(-y-Al z-&SuaWHR3Xp2}J2V`D)Zq?8{}+)mN$sPZ>EAHnl?jwBMuaIHhmniG0E0pip?Owf-t z*P^CvzN>*|0k}XY`SohT(Eaf_${Lu`n!T+fVrNs@lv$D1`IsPAn3IM~t>AF4aa#-U zeBl~vOPgykZR#0Vt0Ms)(@`Q)x%y|gZ*e>^*eH3=HnLul6_jsyK+MRnB8_eH5Dj!8 zuQ@_lWlKE6yu+sA(LkW0T_-XHIakoFa`!p*-;V~~^5&h?4+EDOW7>;0woHI=VGSG^ zlEwsgMyJNm&Kf#Kj&c&CH`(KHNj4>%)z?OfAQ16W0jO(H)KyQd90}8AheEPTH#Yn%JGa&sQk%Sqze`6@i>@r1Ao0z&gF6L4dWTCErIWaDwB32XS{j}k8vU8$q4|N4^wFb+?2f9RsmdVXxBTyGUGGNcDYo++RC#* z>l}6z9y{%bVug0nqEE4QMwLq*={zgg**QH}Dk3{PiZFeXK#k19-7(0t8~&8t=*mfv zA7Jf;-BDPkmpglqn7pA(Qxo^Im}-2TSUVmiC&wva;R|@T6`pxS=dms5!Nfkw3=}Fc z?@@YKPuD{ zV1}U64v^O6`NM#feaQ<-H{gpivRALIeiMi zMdP3S$mKcx)^HRmIA-|BJhG&Ghsr|k{47IEG)OnIx8U&}S)MYp3t>=Z6s(y+J2wuM zXO~{0VzjUreObr3$|z!Wh^5=F%3Wf91#0OfD+nYQMrrniJ|9Imk_qb$pR+=;stm@3(xvE>*JP z8nyBsTz=h5s02Csn_dCYVNQ3|Mz{CIIQ?M-HRpz4>}SMb3-L=`@G!5Ra_FRq-gbIhuZJyC!)q;#8@C2RlE5dvyQ|`ckx{Iaqv zCUp%2LIWrme&pcIy9s;nX8uK5B47qWuf-=rCtWqj;78$Q#o5R%465)5l4-3V36AW#2gVtLqe&K(iG>|dP%9tn zsO|Iil)p1QwS}hHy|BK-qJD-IR|(-n9Pd?6P4F8&Rq>pH5BbUy&&#of_6g`pHWQ@F zo0OiDb)TD_Nm_9tedNBvG#C2X@R2N0B-YIXy|*0QL4L|D@F-2Nbm^$?v!cEYJZ`4D zou(~gKwb1#WfEc2fVO-DO*W(Uc!~mdOBi6AHS9qcE)QG2bzL9pZpw6%&-yq;*p`U9 zx79(D38hYlK6ACBhnX(zH!24J(imP4cCNWA73>u? zQy@&5pvxKQD@<1bB7W-u)jT<{9so0wVVV?_UL4!ViYT|aW<{?2fBN6Z(u*rO{K^$zeKgDI0> zSj3K;mAs*EY!F)h=MUN!o66!7z&KXP$;rb5GLG{z^Azpd8=5Dn!8=}^??T5PyuLqg zwN@FnI1jv1-9|b3KJHbF?pm*e-48(B7gWyTyl>HRF83Br?vq%XmOdv=p3gIA8Ssv? zVA0=dVo#`nfAhTHM9k4}wwJ{jx|(fbx{~<%@HUrUfBsvA_^%G>Fj6T`BRBwnJ{$l5 z)2|Bg|J@-Kwy?LhvoIF>Psj8>!y#>39P6KRV2ULGd;M`yti1;b;Uw!n@B2@ZnhCa1 z`OW>Y7b6&YFWmvi0i1D`@n?RtzzE(Ly5VPiw82R3KXil7@@S=Kz9fe6S4{vuxP9`P zhGV@t;1wWuoe{bqR4-*c zdTJi7>nm^#>VD%aiAeFlR>*BqcdqG52i@ZE#VU#hP*)jU#oDs^fAi3B{D}rj`+uOadB|+5<6B$c{bJYNt2*tHd8o~{gUhyG%+E{9NBL^^5VC6I?AMltao*^cfxbMB&tV~QtOOmtZJRE`lN=)29Hzz zWXt_y=SWHzW9SJ$w!W5SzP*3ntTYgVfX4#dY#lG-l;2C(5YJL3N^l8>d z7+W^`_`4AMM3N0*u-@JZQ1(Ux!T`soXkK-J3z$ITzGcdEt4khB-L2a$LpS)yU0x6v$77PV!4 z(A1A!ym>+MJSUi>cc`cB6CgSZp1DyBBi?mk6V z+vE7n+rD%mEg5dq6Lk~qw0LPHB(R918Kkw)5l;e)Ev|IQbR+>hSU%cb8gri;w}OQw zrTGG>NN@V4txP7hE`JpVGsesH+#9vsYz(;TE2wouyPORS9F0NoD zd#cqX*}Q6FaX|{?t0}G8Am93E;iQeg?0LLYnLEYs9$|ce`$)e-=2~m_*X)rJ5|IRF zYUOAMY~d`b1pskSu!#GKsTB*sB?x`@{f+x4oEosXx5bl+R zNa!!8pqx9xq^k@ajO~dh_Eb{&w?|GuG0$@MZ(nuTpOsq167*uM9;{47&LG zISV}Hm6eB@=?YrU%==f8@#PbVSR%_}HBw5DmZG-h%(F3vl^@dzt*L{U1<89#&m8XYy#h3k$*4^{A1p6B>k9sELXh54 zb$BHA}k?r5iV)|?pGi~+=B8- zf@b%uLzJD1#V&9gHtkg_^3A59Aeo!5)mc6KAS(;ZnIZ|J9S1VJZJCQ zCXd}8ipg!?-@UfgWsAopB51XraQ}S<_^+;hwFini$ZtN$#&15!??@4*DI zCqm89;05v% zdTY|Labwf1Y|zE^^>xc?5ij=u&5Jq3avKDb!V(lO3#*%j?H7Za55F5ep;yXUnZo;zayBX@?tr&YZemo|yeOcVFiShovzIS`dqyb&*x9+H7C zt)sIR2-00wf=;1OU<2%`5zUxljiS2HvEBOd)6V zyj%!!2N)Q@ZqC(K8;i{?USc03I6BqYm`$#*EWpP-v{ct6p7U3-sT_IvoL41XGUd2b#RpW{ zt|uv&DbDOED_PezvYEg+7wc!o*UQsSkQ?jz>BMC-NiF7O=W1S|YZ@T6hB#cQEQeFB_ zvl1K3(qo-P)jN?lsIX`$NOL@a(wlXRd&FHTn3Py4+GPZb$ItR}8L`1eHj^-y4T@Tm zI;?J%T$^ncdgdjF4S!gLbo~MawCOXz=_E-`Yn}s&rjksHY3!<(tW2$Ios6Z0V6PnC zt9s@n%JBB|<;4~HQd7VTo5JmqfJt4vOugMo(_vuf-$Ns;tldcahrMVKdPtXu)~7~0pV z;d8mcs*Q0cgvU3u{k_6xcLt%#3xs2PcjvODzm>tD?RNoV-S-AYGpY<_lB~zY`B&6^N-LFZ z@pKyzSQWS#N&?ms^5EjV!H<_ycr%`#p`i!{5NNL#xmeg1aI@P9woS_E1Gi%~j3MTL zgq6co2fLx6E((gV$9cb%0rYQaEwzuK4(-GFv#$^C4hdMxJ|G}>-wez*R#!EjVLn(W z@W@ZylqE*e&v!&pr#?ZPinMk@?Zv!fXKIy4A%Yp_#@KqJkM5QVrt2LBL< zEL(z9W!+j*QWRcLL_NdZc6^H1rylWZ$1)95rYQN6yD*@2UlLet;+E@kyASX77o9VZ zi_wDE)Kc=!m}n>xRyB2^!#PeU@V56NMb)D_sTUytQ9RaB;wZ2Z+~vZZ(Lh8hCwJHQX~746$*moG7R zbjv+G4sFXf^N4kp+B7}NC-y##yylB~*Q9Y`jlzqO zg$vahR7LnA!^{-qAG0j&DV(WEZCD%3ADSx3%A+Bb)cP(0zd2B~P4?>v%8UDGi&8OV zTRuV>sZ|&nOue{a82hU3E7^6X?6%?q&~0+cJr->xYK`WK;>ct)&069nWF1ivG!w5g zA5P1awyqv8yMd^eMwN0hC7+H~-ce;fN^Z)QMxptyNTUxOeu6O%CKS31+0}F8vU0gW zcMA_8uA0H!5#5N_;v>V~5JD;qVo?DA0>k)e~(1ojZC2SR}aXvS!4i%a(c6>ld5;(0i3uD9+ z+B8Oc%*=5+78h>{uC&g=ML2sWHX+W$md97MrmSR^$JJu%&`S>@pY;s#GhGH8az|XQ zEZBN8OKY1aFSyaG_)V({%Gg3jgOQ%#qY!3!xCFi#*T|H)sHCnAHKN!&0a*(i6P=Ka zcml)XfMyDPYa&3TAQftZf_C_MvfY4!i+cqB(8_Mr%C}gsKW6ddb>%FQv*coUB4-!U z*n%Oo!sMG>;5}{Fqt4Y)5o9%_v4b7Bm)&8K3|&U)HJU1v70u*tJ5BpivYd%;`|ABfg|6i!S)XLLCfyIo zG5JK1Mu;@CNPZ**xxYrP+)ERzP#9Bo^92#QQU)P=={`yy>C==}1bYL-`en5EbB3p7 z4zm!EOwNRVl z^bM(#=y*d=840Czt8BvrcC6q~l5&M})LW!61-ENqfjdAEpdC$&kJ8_uAEQ-ihhWBb zmY2ws!s=scXGIgE?mE76gfQ(QD0<1=!^n}x*q9qz*U}(uK%EH!A72myWU1i| z1MRdwP5g1%Dx?1s(xUM>bznCJk2=2<6$@j)a1u(ijsO}$0u+L9+MQ$J0i0n^1iKc8 z!d#a(dd?pgJkO|Hdtumz;+#~w(C8csP}0jDSZ%0-3IY_g! zk6A(}6}(dH)`%G{tbf{L#qAQ@sDfOK>U?dcFI7gxjt_m5&wL4=04YE86$m0umg2zA z!y-D_?#l`3g}opy%y^91#G#Xg)hRsQ8=nQUM?pn(#kio`e0 zyC+#ZZF>fttbqzSR0?w8B+m7)G&QR+_5Dj3wVlvvWGlZ|X}JQnBIux@H^gM8e0DGU z`y6jiM_@ZnX~;(Mosg+Yvpq5PXgsyC-h8*c)Jn5%nEyUV{+F1fvP~(L_G`7*!Tzq_=b4JDX3NPT!5&ANK=ha=7>fparus&5vbK$FsDyJ^fQgo8AjDofdF$ zxF^Suw$F}Cm!eGjB|gmOd3GG95^ORBV%bf(AEoYJ8?u~zNu^tVg=W~#xVSx*C3alq zU)*1P$aqGxa@^+O+J5qrba$QT?vJH5KmSSaxz5X>Z^+?1GKJnVM)`z{=^h>brkuoN zuC%{_vh^Mwt8IS%a>5TvcIL5cJ(GM-N?K2CbU(V2whaRL*w5l@-;usJtnR?Wc0x%0 z$@t~>GG@3nqVjzIBjTzXYJ9)bo{E8T8ZJvwW}c(uV2=5lQsGpce#?W!dzLZ)?Hiu z!y%&zu=b~i!DcWI^?EsD0MMoo|Ae0yH5#1Az*?jkmuB3{#Zr1OozprD{9}We1s-_A z*TtxjlO7)Cr3PJDsQ(pSypNL$xl0`y^n(zgq@gNA6jVo(`kE~jR$-W-nhWvIqRG0` z3y9DXPn8*AQ_T0&_DNdd#rZV1VmbgD$KKT{+(FIl6)y9?ER*C)9^=NUEi564ZZpjUbLEv2$5x;CH`u)D6mSmCOaY? z<}5t~Xk`j!V-bO&{KZgVfTd-HR%dX+(W51WC~{NYCAlJ2AaK4oeSEx@(jPVsq|U&K z*gJOkrqQMACXNW3>a9K`OVMV$Rk}P0FJ|7N*k~?uP?#NjrWp&kSy;|LZ-}yFs zyW}1yZbI^Zb1djEWAK!?Vv419OL?>YI=Pq^3)xmQRCa>e!p*DtKcqB#uY>)Am{pqB0tn2eI-_66{z`(?dC4~0*$%u+HE z81atzmenaR2l>XV8v1=qh($P~Xc*a~H^!a}Utv`k(dko@CLN36yW5)kJn0Y8;)8Xr zOgx{Z!Oz(Llv|n=BFBbt)L8a=mL(J;sn6hN%x9O$N{t}Xcwp<_E81g;-5VaHSewX5 zXTk0tnGR3K7Ej+RHqT43Gf8SSBrlPmH>WjcW007ItXkpfT>_#V_0Xp{ET}F|TW3Re z3Wy z^a@sQQkw;8ovI$j2>#?rfyyvNmLP;rn5?wbYhlg8GMNNw;!}A6#kP_mK2bi(y{8KP zl)wgR>*7BPZlpuO&VqrxgK3yu69{Rf)!=|{>lWEVcfHV+Ghz&whO zx=AO0qpdwV^WxMqq{Y#R$@NSM9kQ~HBUlGPV_*+nHl$?^EXkoqjLObCM!9B_z0w@%VLXhBzJg^{3cOIen$h!+YE{sY( zsbff%moy1^zm8*BjOY?UUESUof?&UxOuR@xLIhZ#L2@em1}53*X2TuZ)awM9L!-Zm z`f_%G^eBElGKY8YLb1t{*!py$no;!4`+f7McHoI=$8;=&=~zO`opbm~*dqEaa&&v# z5g`ONJyqltrbqhSQc4?40tCAj7L)~nO;6XWv49+EDa%;!^e5DOlv)8VA^lnvhAc7p zy1Z>6pnisjash+EDlc-B)z?4cWTFx-M*pgN6M7@1P!f$Q9iBOHJ}T6M|AVh{jLq$P z*L7{%wrz9Owr$&PS8dz2xoX?CZFlu_^LO??`O3@NP%%l z33xdAm8WhNX)?8BGSwgkWvDH!QTh2KVQ15B7(Q7eMk^ZcN#ogO7^fJnJ4~u8tCs0` zCb2tgqBE=TxR5`F?pM4Y;Z(mnu1>J(&^W>}&FO^C$FJA>O*s?T#33_GGHQ0VT$i-V zo^E3WG0F)wM(G&d1R3;ojYAPFIkpNx8|`0j&S)|vL&`wKv0?Kj@-5gXi7tRB1kwB_ z42J$f{ilrjm*6sJ?+Y;?h0bYNJr)Cp2?E}tEe4Js5m&@X*&wX34Rbk}fJwPsb=Qz} zHSj6bp(=7A-59$>I!%zbEWiY@tLSK)hIZ;lzrPF;iJ$#(le!npC>lVyrS%5HDlrI) zxjtIFET(`{jHxNq<`i7wUUF`PK3qw~GxR>` za{+-HW)aRuyTo34)_C@A4Q5(dWtQB427X=2iCTC_tHU6~j7&pYyhO}0;l#6`V}r;I z|3`N(eF~XEuWf^+0*_D!V%s*@9w2lH0iXAGv~F4lydY+g%xP_~L~DPFH8lOSt0Jjr zw0YZDT|{C{F~$(=1GVv65*IED1)L)2GF`qDEI$jj23d6-gPoWJe&%jL2x+G@`)SWM zK%p2Vx^!aCG<)zGp?)C^Dv*U&x`8dc`K$4w+8x50O(#_jd8bRNU9hbGIyuj1VuYEw zEVES2;0<3p>{(hH5;8m4^`J2q*#dH+qO>G3GBjC=0@s~v&W39`nN6Wk6Lx_8ZybRX znOtFW>wzrFd^sSnac-fTQN7YQzm{;)*F%62TQ&95OSkv*U!1IN;#T4*kPg z`u0eIf}q!?5zsDWjq0dF0w#=aL&7nXV~py!iG%1(XAOdn_t|U7b;7zaUE0PDXASKs zde5j{$vzmzEb&!didNpgZU>e89SA~90{Z65Zs};Yvj~?FrVCm4d6#phFswF^maxjp zj3$OW!gLE2l;kAY=bb369c9>FO<7i}1O^?PQB~A`5c-@9lH{dZtQ`sT{zH)znDoWL zCh?dlqW7vptvG&Sn3wE(I7(ASv@SAocd_jTPOqU)SzLXh6*~^}!U1aXak|B8kD3ve z9--EtFF)LbOVbslec^?;w;Y4J z{6pf&j=I4%FO_SlipJI*;fdn=mpNk}iDORHioFCOx_VXL?&M7%JZ_5?kZf5iBhA#J zdL3GOo1LphOu@p+1_1wXzEC0Xc->qA0k}QWR}}i(ncH`s$#2L!UGJ0^BYLvSCPcZo zU?)`Va|I8xdnNXAdpHwZBGJhS?rC57p51Gfn{z7S!q>G6X(@6Ny?K9EX87xZ&gcO% ztYYp7wZM_{oTi2Aq`V0xU_L26CXG{GOu@E!L1Qxz2Rl=Q8fS!Y5CTnDgqL)ORH*)J zI3jZ5-?)z|2lmx~KsmU@%(sei`*Chnqok#yQhobO^=*gHnI=2Aa|Fd_>i5isZEd!l7rr^{mB8%-y4fWPt-Ov%`iEA zdGX~AlxBpHhp#UHL0h@N#VnmBa>u3SM%v6&zR8`L?ktE=bZI$I(t)>zl%dc?^c(vj zWLDBy;a-ggq2r^V0g|5is#w9N>EX=U%!S6la&_#UM#{xSG+#=iU3%hAG{fH)yI4;0 z8W{o>`B;P=uzqB{$Y=B*{LoYPFu&d#Fi-q{(mc$cenIyyUlLA40D$Np*#g}^oBmHZ zwULdn_0NXsh3#x?3~Y`6ZS(Su|C1%@jdSGUXV*MmrD|kgJf@yyWL-z1mB6Skz%<-p z4Sm6o5EsvwHh29C%garCa&lai04D&4!ymcEpD-98TsSW)o@Ru$2;C-;Edb3tv1FFS zW}3{#0$CA!|8r-us!6jN9*W=RA^Ya<-y0w3ozJfoJ+cCoPv<10N7>-NtdjhB_*9RD z6d@*`cK2T|5MSy&{NeLIBOXv+Jd&i3&=!9S(_H82BgcyMByRW%AN3x0=Dk|eYzw~Q zx4$JHE-1c2w^mSaoss8i~6|#--kHET*Gx8z9s~+qn8!5q0tQP!VgQ z?X&xzi1sB%M@~?yKTN>K_@QbeZr>Enk&ImKKoxr8)Wly4AoOtdqzX2Bqvxv-*XUK; ztNT;?kh)}>tP*q^S!jjYRXlB=YGV^*Z+_2XOS%)cN;$RnXEIFTHk2wYcNCqex;OT# zF;MzsXSTMsyf7rYUe1m@dM;Gx*^xzwm5k>&kFzF<{W(huf-Iy=ZqVLhtxg(nHWeSY zzsSyiS70vLxO-P;%3)9v^LZ(=?%gX$OP1Cw2QnX*9{RH3o!aWY@&SelQYjk1x@H)T z0!duYk;HVB5^}=Bt%o--`g-jFmm3gtEDEa9%v5Z3I+ z!edh!aFGsC(_Y(N9%<@Tqs}i4y~w1cHaI2Pe$x_zaT}~-UHOr!pO)Eh#Iy`xRk_TM z71_pGnOcs{S0ycTU$==hOxM}WR-M|No7>r(Tisl*Z*QzDY&YjuSAtSKF(toTKr&ya zm##Du2F6E3Gwa07jm#y|wQ)an%VZnw;0ecKKhJxY5^T?y9vo7;JbYpLa;EhuHA4<0iLW3yT#$efp_ zK_ssKK|}VL9>d$aK>)eM4WN$g zqQz)cdP%&mF=exwLl28R^wGJ0>r}_Uf7v@XGFGMJz);SimJh6 zl{_yG9$%loc4f(koBK&2HZ+xrjkr-bp{;qS!Ob&aHzFmIlF@teba84CZ2{L}!=^(T zy0Rw6%1zF33lDE#X`(SIZi38}g-Cx~zJkcA+{SHk)EIZ@*N_$>YNHPk^FBLqek>3( z*Oc;lvhhH*JZst`=48nxyP;O+Ake=2sA(tP71IP;yvd^o+dTSeXe1HH7{HtEJ?oYD zgtI11^hEAt!vjo9kdBIrt`SPCWE1P!!1NqVfRs|4b0}}&y3`#Y(E&2k9L=pq%UX+x z8xXkzxj?D&sy+9Ydg2d|OIF2p)l7)d3Ojf&z8#XE+#C^F1I*41RttRJfQ#p_Uei%1 z3T+y0_ij!afu8^G9jlK_w9ix9E0x};@Vh`I2Ads8IV{TClC{*{&Ep%d zSiQ=w$uMHx)hrt-l8TZ?7v`ywa94`zY94V$R6fDB@|?1*WseFLd}6JXFd4#+!Tkdb zW+KJ03qOOlz}ROC&ZXmIH}Yq!+vW3HP3X26jEadi7YBxv$=CT_D(_Id#g2iAR9}$Y zI21fV9@1tft);b1b}GqudEHRLu94#Ty0yDFiY>{Ovx8_W)Yg@k4863~_ZT;d9_+Ey zpNPqJ07gCWIr49X^PS;#s;_9tc1N-0-kB_|4^vcr+8J`Q7gT-;{KfaUUEroYSifAN zOKwY5dJ=0znL5R+Hf#pxeL?pKiXXT_ZWP~aw=3_>PF)DXlMW!{Chj%^aWO<0u_i#e zY0g|>%uy{Df#jB=NrSGAwr8JrSeV1m4#!BScQf$>;Vbe&`Zg-2hcc<= zEJ$d*x+<`4x@O8h3HXcd`Fg~wzHey&OOcTl8juIUA*aQa-(h@Ik7gbUsk$NMW(nVo zlK=F^?)AB7`zyUgesUnF9FY$u%H5}?$?`Ars=Q5f=@qjN9_i(StN2Fz8CP~Gcmj8P zi5lJt;*P?w_E~nw2@yzy|DFY+o0`&ST>Yr!Uo_$y+;2YIUu;+LxOd=lr=J%WSBPg= z%9#xZ2(f3_*GvyI_PwU73M?T$N?C+|lM3p305~!6IF41UY<8=@0n3>2;62ERJ_~P} z<0UB`TR!i)xoB8!d6H3ceKg@sG&7`K5!JeNWVn1jq}WvFOyuQy+T#8DP|mwV><~{X zb!&(WxnB9ub4Zi`cw`1T=Cr2OH6~W>dn|qIVz_!6vCe?;G!v-aXMkeh$&+Jb$8XNd zzj&Ovhmf+ZpGDu#|{(H)l-c-3L5lEc5G`M^Uo~3M+8E2 zOk^INbGXGb zORs^lSh#YW{lyU5m3hX#Lp_Hyghw}*Um@v>nZmK-v9K`01 z45)j1Q57rQGr95hZ9d3cb+jaqbc|*Y)lzWOMh4@6TBVS!;{G%ncw3JfNewJ@adS9YrXErU4%JFH>bV}lmg^&g?!PI-c#vO`)HVQ2O zdu-q`^{hw^PSlQDx~RRt)r8OeyAlyYF?l(EH0pQ&9gi9{J6QUX>?8uBWc72iCNwe9 z*O>jA_iE#VAV)6sv>V!B^H$-5bd|*wCpEjts)FO3PERXS)S=hSr48oFvhkoLD7$6> zRep)wgeCn6+_$uwv8sZ!+)mHbKbmCCysAQq8GBk}puDbICsSLof55w*Jkkb?z^;Tv zaEgT83I{8TtSQuGD#HiE^cQdKlh`nr zHt^(t04NiUojtkpLGd$FIEAPtQ$2;A=W!K@q6k6&gYsd-Ng>kt`vAl%p?7};TtfIM zrL5iPoq#4cw?^-Nj8a~(-A@-WYa4qY zn#(C7m4C~b&8kOyg^=IWY+(gQpeg_FtT$M(GLpQz6>=&Ubtzd)RaipXi zCO3q#bkKOJl0lv;p~)$FlCQ=oQHe)H$|HJWD`MG^gYeM+PZ4O0; zW^uya6rcBlNGAcY5YQ0BQ8=wZ3`X=)I-)gR;XqVR@`fBI8)UTr^|( zQc#OQoqj6xGC5j>%17ySe+La>PF`JuLn2duP-ZyC@w|?Xl1oGf z*klXb{DCO=6BRZd=gh<}kGS7C!86#bmPVv#B~|W%ns@4*++u=6CmHdwKD7Vq(O%fW zx4j^FZp|@ya#V%LacUx&+LNXI*oUJXs;~1kIpUTXV!GACzg2-d_O|oW3aeL&YdVZ{ zU)W2?&A>ZtC)L58F}L{0+^!e34RK`;O@F$&35K8zGHnI8?E-vPCx{voyygldsu)m} z9k|pMSm>(ns0%*r5u)ytQadJ9;LgS~3H(%|CnaZ}gLjJfk!Ir&XGh@2Jn#{SUx@x5 z`w{8SPq1N|uu~WmcWklQX(p`TN!R3`15aCwE`&ZCnGe#9vM#I?=gHKBzTE+>O(J2Nb&Jekau%K4T$cy(>1%T zucut&3I;Iy0GLPPjNSdak?jKjBQ+B>gDX(S03cZi{0kRID{V_^PNQ+#4)dLY|z49|BaO5Uvp7Sj>M}3p|dqCMVD4_o>Zq7J&uU)a6nAgqrL; zlTzSAs2ssy+nWlXWV#9)2(?f>T^;qhj7* z!?xuWRGy&TNsvv;BKiV5;g*|OBG2fQ*$araKc$wQz#989nxb}uuYVCe_Gk}-Z-{Pt zz}v%`OQX(d#WCoH>`*uGCNG}McFnuqfN2J1pwn_aZ`CGOkt=`jQP(bYva;s+q=`|D&jwk*Z>vRp0b z%_(oN@=*<;DoQqp%I~VU=v^QgLi&mQQKsw%7uNlEa;JbiB1!QSm`dsN2Ic+PfQz*Z zrzdD>Mc|aj(EZXK2>Zf=f#Sf95*gt-Eo^}gq=q!Ye z8pV$tk{#hvXU8tde*c1E8ZXt2X#GJE0sOc})BaP0`PZS%|G-C(DE(MS%Q^l7l2EEwIzMe^5CMPb|*BL@jKV&w4Yx0b9^P0Z~t%f4GKP2{k3SEk}_PvouN9&!3He7 zn27P4t5PsouNDhbiAiIWKU+GRlxnC3P?5)gzN(@c6sRf!f-L4_3@V!;DCv)}j_&WV z1?X7T>?y{O*RaY2hd>V<$C!!&?g%M4X9W|U6v(IZr;dKpD~%I0EgYDOK#21aq% z)TCybdNf)?U-x%DL>toqrILg|V^j`436A~SbLaE5DjI?YSHJIh^02-jTBSk1N886ev^ubo(gp=@tWSw3C3r3 zp+tJfso6^jz}5`&9J}8>?#a8CGSOK#Tw@7NSZ?=C|{Y6gw$it~GN13=al#l}C z+aweQvCGjZLUOopAH@1pVUq9aSYZ8t!9qk`qOdC%`wg+Vl&;k0Nq8#DQZPXSugdo_ zdsV+9$+1PI zjKA`ts^OmC#!wUXgR3a_qv?jvQl^~*r`n@)LK-oUc!z5#Ta_YF_lf8Vyg+(b_(U3# z?l*%#D@U@=Ad*)Uk!j?iR^Mpgl>?GF;^y zD<@RPd&@)SG)dbB{q@cRlexZgmk*3C2nJtGsT;sIav#9glY-bMo64BsYMLB5C2D>R zH$w_-pFG7B_vH8ELWa&vE8Sj_4Wx4R~Mcf6H;x&s0-$E~R%_72H?K?4ak-wCvL zpr0GpsHrDu`(uXrB05 zv;P9ll#b0fCHPk?i@qlIHf1&?Vt!an=mW8+dy$Z9A?#EVKX1dY9K^3E7=V^kI|eWB zgx(+)Komyto(m!YdtR;tU_vAru@`EqN>MU5@tk#}jo=NH0J)Swra`bHH-FVWsFWHE ze9=d62;$tm;@|<{yR~;`hiJ=gCD5 z09e+8{)ISE+p~j;Z0C!EjI7r)BgLPf+ZIh)U-EKD$z70kc8T@jO33t5j)y1k3ib-t z1bZV$_LBF%p#PMi(SOR&C#&Gz5?}xT2|p7@*#FB3C~WRxYxN(a>OQJkPRJ%0zAbCU znaT^8f`LY*JMO-MlkP$=(`TY=oX>j*)O25Cv-$=ed^3wIAdJa6cV2vN_B^%+*gsbO{P~32W!;P>jL}Bnq8mGC2%u){ z*$Lm%kse)BS<_7%dBWHpfYsPaTB?>+2O|?@#1DP{deMUcT`gcT(O(ys^DoRFX{3%( z=`d8|8KKqV^U)4stI7A8r1k1id9GD2uF!D;lo4LpRIk^}nR-(lT0wwyB_9WcjYllK zd=+O2Mm{(YR%1Cevh7>0Bf3bsa$0Ja=yV**pi!95ba{ZWU}Sh<&A&#+l^e*gUVC2H zR$gyB_Fkd&us|ggZq-F#HkN9#?>S7dXklY~6pFmI*sv4BmV|+1wQEXS^Zx_5s6JdDbIVHQ@iIFzi(;WorJKXpdGlpM==(G3me+b8uJ=fCj$`&Lfr zXuwG|?d*_Fa``UWSwM(Z=fu-0{q4ftV5@Gfu7ZwF-Tt;#7y<+d6%;z|*nZ|N4$Z8( zP4|(|I9+gr8dRfCo0cHEGxdgA$|EyFbBMGgkYRzk!X!{detmf5kxP4lndTt~g_(CS zt&23uxnMF;tBTS3*rl6jES(`)p@ht3%T;!gU|`h>w`X*{V6VL5@r5 zEgK?JrhK^DD>6d;9rkm)6~t zP@#Oq@#W@gg5z@XxHwNrDHpnQ0ZWLq{#e3ajrOW{$DhZ@OWur{J|es6^aNmtUP_Pd`M4hp4N*696~lrZ_K8(R;|I z!(;K&U$!2>voquR(7D~t@YW|z;00AaIFQ!G#{Qu!0|YJQQof)rBvnXlVF+tr=z6F~hKjDK9H9 z@d+saaTRz{DTZIcp65*e+}CMd5yM&{UaBrSr{}T>2vrNfwSXqr!jmjQkqBqTrvl9x zXIS;1ooaZ){t{FC+>k@$?AinL1i=K&7pVJ{Ew3cHBf>6r2NlzRIh;YoHT#>b*Dl;9 zYCbwydfL~}gIE6*CKF@;@E(T2TW26nqNGP$T~GQe-2I+03gvr;5Jyw`3-GIIcWvnV zi(Zt(zWoBi^&P3p1qLuHFkpeiD^$lTg_S2vxNR1MdBH!u51VJ9tW^RKPCo+z+kxnc zm0@#g0Y<5!*ODBfB@&BSqW>aE8u2bP#!jEa&p(H&Rj`&m>}e|&(I;ZH?^g4RvBTJ; z3a*yz+K-gY@(Ca)Ai;w`Q;7+F@V&sN-p=6k5lIt<)&cwYb#zkHK6$7|EQy_?ntg1@ z&`Fx9c)>b`2>O5ln7Qq@hGjB^1M15KPG4jb$E2f($Gptd*H0BU+IzCDNwEdu&xV-F z+A_filO1uWU{{Ed_F0r`u*r>CC2rodLk&!FYxZxxpmLWOCc7DgBPG>uL*(3!zwj+q z>t)Za-iv!8yv479aK%cEV+4BT1RB!Q6#|A}NDo$*zrf7O1%3*U0fR6k$Lvo{tO;n7 zi(4h(qimz5R>q(mfIjwC=E|B6BpzV1w)5K3U{Z>aWkmtl;3oJR_=7Jw2zk#%rx9z_FTQ~&(V4Qr<_jBp| z_wT14`d{7O|7?U>*!^Gh(0}vYI|VF+{Qd#)6#xSO;Qw#0OW3LW^ovOt|KrkfQPhz` z7DV9{wn9%qrJ_O=1T0@iGZyq=pt~!c16io39|h)|r8NCDN83$)U`3e4q`SR>Q{9;XG(3*A*KNIUcD6dK@SWcK%9RnK zqDG`yvSzZgVi=|*vO7f)b(AQ%jBP(&xK}3Z)7UCnbmsQQ1MIlUrHB+V5Jpzdl!*&( zMV5tO_lS#>Hx3kPM4l(1o)Zd6l!5KvqlvUc3@O$33mQXqt|NY#|`(B z>Vf@e^cep6cK$ov`(f5g*czL-n>dpE*IywQ3+w;R_@dRIy_J?QzjMi^Wac;G&=gY? z33y~C3Sq?3LsT|^u*?C=^Fn0WWNbGC+9=0pW80^u@-wf`j53K9Y|31mxCGV%^Y%;X z@-t<(vYav>7+-FiOKq!0|DJ3Y(fZWu`Et(Oc%OKE{<-mfIsAa5Z6nXN=5Y^f*#ubsIaz;TfpvagJhpLw$k;+-MQUI+pN%U4czFW=zX%i zjQ?Ucaq7f&YrCW6{A{uAIS9e`I$Gm4aY{AzY(>Xy8v)#G)9!QYe#N_f+W%;qiA1Th5a1N`SuC{ZmYdUZkkZu6PE9>J+IgyN7!$`t zI=b>Zd@XqLH$b34vt%5IY2}-I5lmz@cYCz1*-twN35bB&9f(VA5JolrNcZN>D$;tc zM~$*(4*&Sjr)5Z#B!WLw)wKS;a8c5#O2?wNPp`gvT;v2I9Z=K?>_8ieZqp!@N5u=j z#eqt#DIRYgOQU0`ptC)tUTAFjYfvt0H7xqKMVYChbYUsnJ+fYuT{-|Vh_wi<^2wYDwUNcX z=&2e=DYU?HwzcI#OnF8=F$E3<0_H#$eu&*lYa@CJ$OwE+9Xmmi-7s~oaqQ}_Rp;KR z=&`J~4e=1=)* zwcHrhNimVpt}bXV&mv3`yU^VPE5I^m7xW)_Ok9k ztwj%uF_KEZxix~dwG>dvGXSy3P)0LUyU|kZxv3}3Oc&L@85Eu&n1Wpk>IlD@T};rK z=Kv#@+`W=e;^G0JYBq@nOhs_S)@sE1gJywu57Bw`($WO#%*+L@=!8^#0P}K~p;tla zi}x0EDs>|H&4NU6n}q9V?2Pn2b(;pAz-2_b;&^Bpt?JpwWC48I&9fi`kEXtzdk_Gx1oT)XUH(2~qzH zNHx6iPGPKXS77Ix&;QCSe=ZwaAfzS_%}6Xqs5g0{oN!$3OI7I#R4cx&Eq?{pmA~sq z`Vdm4el3jP-$NrFdp9ZKyFh%%LgKb3f_YIFB3{_IvY#-kV)UrRUO^{+x0>+!EKHz+d{Y|m zM4*S{q3o5$m9oDwf+xR%2!91C>Fawf-CzaWKUpU8)E3A~J_0GtdHPd|Cn~K0Byhk~ zzQAS_q<_%UwSdsT=jjOhoQOI_xpo^tquzb&2pfy&0;7%(+iZ;>A1!M498e>D53}CQ z(}*n*321MgkhziDHqEM8gnNh{Z@UV{gO)0BWs%eAwM!1?ZY_nVt*M1ghip@0uOk4l ztqpXi<5}EHN7bnWH=ZcnJy_5Q%K;L13wyLOhhT#n+&>ejMnC= z#CLh$K5i7v#^W#{B)<1C|NcuJ-be6{kxR#%Vat6zhI?H{xP?SyMmoea2iIWX(|SzC zWnvdgI@aiz1f%g6dW=X>$s5lc{%~TyFqFsg!R17jMly+S)wy%9urzHtF>I5T(2M{- z$6&m5GLcEe)ywIL$;mQxjj5UIC`u@J&&oYliH(v`UnVUa2KL3PrbWGa@Q|6dl<^=1 z9*n6Llm)hjl8&ARs~thHi;)Zw=9adUa}friXH~AwvVCTRC8cMn;6_2Mw8{vZg#uWW z3mI*8oppK=HT{;JpqYER3bx`ZAjFhmj`-rEMnm*@E<6q05KA8$uZeEPWvX{0YLL)P zZL6&YdJN3h5CW&$6u)6UVfx1hj#9Ry1$TKv;tYEAK2)uq=~gY)mn4iY8SQ=;!7HjV zg%m)H;~}u+6Ak$)`nX|#27U7}XM--lr>};)ea^(UuXeV+`Lwfe@b?a)4K6gMMfLs5-j1<1@fcm8%l2DU z&^;A*n@C{{=Wxn60e|iwpePg#_D<=dFn2-(3=qLFkvMTDC}Vx|p!;l5`1|+TB+X_$ zfOO%cxOU;V#+r#z#fNhRIJxQ9q<@S@b;ubis_gfLAzTc-!PCKXbkdw560@L6VWvX7xTT%px(BI~cw& zrZ0rr=5d|f@|^?3T}`0xi%^)U9!%Js*jFc>G;q_X)lAji1NjnAJ>c>`Rj=P8?mHO5 z=D{C=t_NQA;piIWCXZ|$sJuzTZu27)0C#LrQaFsBjg>?G0B`%tO@9LNC)>|8ngH?> z_D%%~2=@L#XKu^Erl5G)^rrq4&6&JB=9RxPh&NlR0h)6-<_t$F4M_lJ%)H`ja{zdA z2LR>xWrr`s2xo-lMnA%+9Uxwh8fyTKH?qVLGqVR`yN~{z?GE*FV4=u6uw=&R1xJ7T zf^@ODa!WK_H*VrUDRw}r5S2Pa(nTbBSCJOBB1*cAfW9Z=0J)8JaTjCW-&ufq0|{Iz zg2lTpnT4j-sNN}i_#0cJbc+b3KDBv8VGl9Z=@W!g3M6+BW1IyuRY4KG1Ct?I9UT2F ztR4?PL{59CIhJwr(-3~VT#D9(B%?9y#2lCn>Edl4(R_1Cu%5%8EC#17@LmM5u)0N2 zGTW-1V_I{rBgnHS#I#8upJrrsd}DL*iD7>g1fG@8e+uVF;l?Yz7j1i1QWvcKb@T;_ zgcFOj#>i?cj4h&2$oRB%9-p#?#mE^RN)-N&kEeVdLAQF=Fv@bpG36^TZ(3enH~0dI zHFuDQJgT)?ov=Oslpl90>ZLOmsyEJQpS!I4B?}ppqZ6baJdR<(2g(yt8&YnakuHtd zwf)_-*YK0rb5%e*udThY8Bqvy%+@IC2Z?kxcI@$zmn9BrJ0Rw4O?R4E0Anh}7HlqW zPE!T2NBU7lI$AzX&3dv_Qw~qyTl4`AbEkqrx)%sERu<&;Pk;we1Qnv-$Uzj5LFFpMg}m^yUkD*3X#tgOuF+}H*n>FGQYwq>a3=?eDY@l7 zcDh|7{XzO2%eRyzw>V^%ux%0BF1ui+%W?8VEwCD8;PS>YFNdL@_9CSv`w%m zP{o%fkXB>!Dx4_VEMT zwQb_XZXsO6a~Yv-jiPPxjn>iUYOd?l#MZH~jiW=r{O$Y$L5&?s@*AY{Eun7lvKOc) zzWi9QhX)kz1kvg+|y&m!~n$U57;kzj?D#AsV9J9F5v&zFnx=o@x;EW{GbtXScl7Tm0o zIT<#xR0kQ9Kc14Nw6KCMrJdE(9Wp_7b=l;^uJh{#>5$ab1|Bpf?eUYpNQ`1SV-hDt z_HDMZMZut|)-6k|TU7@3<#ltfL<-8otE7@sID3lg^@98|6Z2}?8M#faCS%|=&iI@t zEFeY9R;8aaEwrAu^LKC?nXzo!{J#oS=VMT+V%NaiaGkP5#GGM~)thyM@(m0$?1TA} za4`|3toCa-z4JD*+a;mgCyZ~o@Z-p`+1cr(pfg%PcW2xe;BXvj@ zCU*z~$Os=MB#zjXEL66WRHLBNj$7ABOyXx(NAb05r*XB+YlHnt@8n!`Zx3WqR-gVI zdRxU{tiz3YHdUhSwRwJecFDnFEz{PLSaAKJaV0&FxzNHbj1djz67d~4hH0i*8cL0k zJ19LIAx|7znd~nVUIn8gLZ%$;vDxfVFvE4&;+3u@8R?yTje4f2*@r~W9$1{0$nidt zfZC{7c#YAnZ40H%T9~rIS(v6ayM<15(!0D@q&C~vmM8$fX>_LK^><6WGEy_`NHD z{&x<^FswJC9@DJ}kHs#vkPoUH<||f@?Jjo1S4r0^T93^x_iIf6?W*Oj*K1DzVwB~o zy9cFt9_|JR#L~Aw(HKx8E)l1BV{hXPdBiz#)-^Zl}tV7jnef>lC9J= zpADPL;L(>OE)FlIBvI(J-Esm{cxbgbybLGfg{*U(Y2Q1USXOJO6m%4zHs&pyn2345 zN~+RH@)N_f*&V?`Oy!K*b^LN53q2FgS#vrx(VVj!Iq9m*sSI!xv;C{N^4bb0)jTzn zuT>IVQWNVRnn}>TXcRSB=^R&QC?ircuR=0$=8?{%^H;9IV>vCL^m^U4jtOPQ zAOm+~fNk6q$0E@4t|=iRBN;3NnX%0$LcliLgCyRo>G0HsmrPAL^SGE7W(5d2Jhq*z zRe78ABeiMP$_vg7^x`P3Ok|F&wb-;PXtRs`UCD44o|-(Jr6{4hAng&INO!s3M2ODi zjoRUR)}3a4@?bm7+n~ND#R+^%Wqd!NvfkFXa%EZLoy+i2#XpM#ElCoO&@nm9sfRKd z4)S~k%=_)bQs3&jfBCs|dQ29L7fWXDw42Jb-{4w|K>6?4A7Z2NrHq^6Dn?+_IAKty;`>-f-Efk;T^(Nls9u5l_ezvzOLiCV;hn=WoyyGl0KX}f`F>|uD8nwE zDM9cc=JaPB9M%Y+=c);xI3WWK>LU#C5UESTSe13gYr5Uq2%t#NjgmW__sb|jgoe|Eo!dX4L>-Jb(2)+zn2}Sp zGnaYcxuhU0q9QI5#_)}!O7iRzcY}ZBl$4I?3^kK)CJD>Hsf}{2XjwU>kz47&J(%dk z4fG?cFK&5vG#eKB<@>D(m)Yr_+O270+E&y~?u}E@@LjIN5>vkN9fp#a$Yhu=Q^VA;VwoenMe|iZKle(8UmSdf#4z5ZUX*b%ecib_`%mh%Td;Rn%7bg)G}i~8+Sqw zG)KpIYWX@N-z|5f3zPvDiDyOQIZ2Lhsq5P0cygeLs+%lamgFVq;`tkc47Fd>qsCC6 z!aQ9DlkctU-dMCv5>0hJIT{{aRHb}CD+z;mW;gt9Y^B8Q4MGMvk!Y_(yxtgVFMyK8 zMXoUYV%@alm@DNcu5!15yCC&w*PTe9B%EHku14|2CU)TN95%?=>U-=$zOYYK#GkID z&_ooBc|iYRR&y_)tXMo@?-=fh@Aq>8E2d>q$UaI_-POMSOT~FSO6J1!XGlcvr*g>oPu1{0 z3)KHEPLi;;cCq=ft@`)M^M5@E8XMUEu)gFCEdJBHD_iAD3EKq07Y@!5GG6FaUb6`W z5eU^#(DJCz5oa%I*q=n7mo+DMG7-*c?vrVldL*b@^j zXWG`wmRqiw8-3@^*TYS&A8=YIc4!nl(WpLc@E8JL)GipCy0P$T6hScU^XqT57xhC8 z?@7bVA#xf%lRL~vT+jh1J~e$2h~|mez(561QQZuvVU)`|M?FF9z5t*|w=hB+iQiR~ z<pD4LKMjw65CRWX}{Q#=N85+Cw*D7rEHBCwJoXJmHcK67Rl%4;^wgh zIn7&C=(MK!PV_xq#J%^#TNWQpnW*=kpGm3B`B^Wa{seO0-Ay=-t~<;n*^}CEnwBW8 zvu*{5ihZ!k)d=JO(h zS!&bgOmS1|*A_r4H04ba#`6oN4)7}rDxl#YQDkH9V&iO7s%6J zuJKvOM1*N3B7Gbl398VaSrePF^0gmdV~F0*(CXsIw((p)8KK*GX@fUD4>~%(v+li< zC#VYWpg>sPEucZUT(_IYI$6nEQORM1)fdm;6#h%0<1VJq9r_5NCywFin=CaTQX%TV6vgdM7Db9i8Et}wrAj2;xPDv+ zd<(~^B4c4GtKzJqq%uS7yF(HzTDn4vDs`dhJT%6|zyN(72`!|wrm_gKW&zP6`NvF2 zQu$%&QG1ExwrTvxS@uO1Wx!pg-w`wYoO%G zr6?v9b&VGKQv_3)PbR`}dR=4v3P}^{rP0Wv-1ho)zQ%1?aSeZ|@acyF|IL0S63cZD z9{KU#Jm~NfgV#6QX6HygclOhRjUJX>emDWorjij$u4$~TO)G&F6cj~LtZst}FZlZ6C$;D5zIif0D-Z=8V0vpJqFy_D4n zCyQbv>4w-gkKm6on>ak;AA?50_ldywoJl)~zPCwL$kil&Naky2BWpp=;_9CEY!onS zkAL@AW|k&Lfd=Rm?XqY$XO&7gF^v!Y7=8;4=H9ZqKvJ{XhMzED?Cg#BVgFXk+$;3` zbPISrGJQq=e7ym_bB+f&;Qo5W2f7DjCB$I^n(H;d=J?ZO^2a}9Pnq*wjmy1HNZd#P2Di69jt*KkUynw zXv)dw&rF?Rh?{E7HekrK;~$WJCM*J%D=pPy@d!Vzl~!^ULUxu!#Z_ok^?Ky(qIbq3 zE;4FLsE<*zuoWIP0NVS%wUz%SGd#F^{4V-Av{ru>$^U+M{jzX!{NfA!3Kq6DG( z84yIj%~>@gp8<&Iw6Pzd3QmQz-2+#LGmw-d6yZ<$f!!$>MeWbLkNx;2yH-B#K z6(^<0h7h$ZC>it?0MVLrOB>iztfm-hp~{w)UInz99K$FYEe=Yt45zt!%u*~$2}SV; z2x%pQ<#gTcK5f04_ru=`2Ksu~g3p>0|(>9#HsnZ7I;n)ufEmZW_3=@QTV~8@si*mQ$4CCScr@^A%w1z8UE0tYYb1}7p1BOVw5120;m z->q{5x-cw_Vip^f3@a#?-o|TaEQ!BFE6W&_lS$X`jDD$?9OtnLGlMxN8lOr^!n~4F zr);b}#H7;%yB~wJC_k@POzD=(V^pt~9{KH0ot49~W>kg3ZY@n>ULIL|AZ9o?s;Nki zrSlwhsTo@=&7G79bre;UElcj0-(^E8)ZN}@GA0sK!f0VyI3^wVe>i)`AWO7mTe!=% zZQHhO+qKFzx@_CFZQHhu?s9dZyYOo7bM8GmzBu3e@gmmxy&~qy%$alK$T1`UmAbst zRezwza2s>Y?yWW{%-RKg>x&SR8I_la#5F4brP>&{RhI4>=FCGI!yBzBkrekyr}Y_f z+EhdGQ(O^DKyvb@mfRK_>fB<*p*AFbzv~mIa;F7sHyau^xPtJqn`ulk%U-h@k)g~? z<_5b#T1gU`99c+`+>$7OuRVx!ilXc(bLK{8{AA4Ss~IzGnL|Peg`GCa4)~h^mSa8G z*8}2kS@V@fQK}qMW)PjMKfxBNJG_CJKd9jN3?US(IRldL86QA7<66+L(Jbr2_YC>X zbflW5Rm^jj=P9PZKN(KlT|7(=ld;;s*wv%;p-^u@$A*+fBJV+FPs3}zuZ^3>YSe+EO`Ppz>phd`jZeSBh0wOk6-Uii zugZrISIaYYDm2lhe2tF|{KO)J@#Yaf7J2*f-b`Q^5L6i=7jj&J&K*f73E)9E%kK_C za4g8Ul7^__#@O#ttyC?k9-=N%zoj%!UeF7%yo1<&BUI;kzSK~>N)OV}Ej&)y#C5w1 zu1Z~bkWS{W32?Stm8k2#;+_yO2w|VZOJk{r{3JuWN$A>T>bSb991)o7>!~Xlb;sXL z#s0)K&)kzpi-zp}iAXn=Tq9x7e~G=P`x+`;=%gzs=*dRw{i^ZwQI+r=wN6dWFO;2Z zh5M7Y<9PQ-8DEaRjM*=O%_~V}P@~f8;K?96QALhPj2hT+)+JN5fpdcNPI@WxfYw=* zNZ~$vfM}Xn+*o#BY_vO=R)4_R1I>P)tvhV(4r+JUtUIL217dGq?=2MJmWO{>&L_Cf zQ6AEVR{cOFWL2KnDM@r&O1LZi&iTGr%1O9d{}i+&>`Rl_1rn|cmBMXF7h;btv%6;I z5M5hLYTVv~i1QwrQY6R|%`%))s4*ff_-7Gpp zXelJ{)%$<`(?RhsfY6mOcK0tE@z1Xs{r_tt{&%5P1eh2(nF?80IGI@(xd80##GU_Y ztp5cI=BRHuqqw4eu(!z#vfGjX1tv#<$uh7m8ZUoqDQPC##IdbFKW+s0!NF|Ft?#IM zJS*Ia;p16&+yPmzx|$x3U=h4Uxr8G1?OkUsHuDOyyz0&7KIAy}I?tB+zyH~C{x;;1 zEQ(O7Dm&J(=Yg*#wD&96Wl%0-otHYJ>RSasiAZcGIQ=S-cNBq^0c(oUXNO?n5` zD{G9lrnW61jUgp(U&Aw$< zo*Ty`c^{eI+C+`r7KK)XUW2Ht(VftEyh09MGOse?9%`#d+i~g8qp|iK7;TIHv$mZ!k%?1qOA=U$t zb<);%OVLV$6?cTGbp^+LWuggM(12_T`6;-9C)RW_SwV_}@SWZlD2&6s-zSaG>B-BVfxMm=rs(>g>&Sz#2A;Aj{!H9X}SH7Ld zwMgr)4UX7|mYpXagQqf*rZv{P8pZLRkzkpjV8D0*<4Jk$=7zyr=isi%s@K+Uhnslg zL!tt_o1PJIwW`6KC60BiKhD11GaedU(F0sDjVReH9gDf7x-0%#_MLmU^Ib zfG*=Zeolayj|9@z_?!#p7qLkxw?erqqpMDT=KTdNuK`nr@D4OfT9`X$$3P6lULPWg zGU1jlfw{G;a#gUu~pZHHGuagFzMbY0H-71o%B>uz+Qjc%nP05)uV=zee$|sZ3 z{7p%=h!Bhj)`VOPL323A4pGMkB;I_4nWHrOJ!ubsKkX^^$)o61v@N2OmT^nv22FnA zszj0m(Y(ZaDdCQSB8iW?BG~euN~LJENVbc(NC`tUL^VS$Jga$O8>s@O7xtK#iKwsz zAIXFcsp%^*)$S^gZD^L zO3C3$TXe8Gro%D+peot>O zM&S+VMz#C}Y!dAfEzr{blkJeyyn~?B7xp6${U??Gpa12}L4Ny-%p^BQT&Vd)f}{9i zZxj8ev;W_o_peUZ$mwrB)4wXGud1FsiUuOzTGz+)XoQ?34iC^|nJqu;0ZA~nsBoZW zGAL>o;(*BddRG1NE?t*(@C!rtV@ahdsU?ouC5XUxf)LJUuOsf-l{6k_i?eJl7Uvd& z-j4^Yep)+=_`w#|#CG~PocnZ{Bl6P{j=bR-Qa@DA&d&Ol9^+a%hHCpPYndsXE!T&Q z#_x<^jZrXFZ>_`YAP*m*{pWmhaKck?95w1=tC|!v@%D9Jx(N1Na9wtN*OD}hi|jk4 z@2&XSev-P+tv^G1O(1|9&Je(m*~VN4d4MMp0sQ`&yQuRwo^pX>>bPtAKbqZb{D(FH zOo;|}*y`3x_jsOhfnG0*L>tqQ)?q7#ZP=Pu^AFlWYJ+qJDW+jupMCet@_F1tT%>l! zbMRp<#VM1x5%`=p$01zZ$9RcsZb-i*vX6^}#1bzq zp8p~sL-Zv<-b(9U_uKL;WykQ>QqcF19Ky#M@o@=CG)hvx{Vln>oe?IoAM;s*kaTU5 z0-;Kgla(I&k;`gc>CNe z_J{%!r&*@y7P#ducQ5dJAd_Fd2E`ir7%KV+Eo|atOeku#i<8wJCk(@WH!0HPhH^?c zJHg@F`H@G1v{bPZcKUT(K|yIV zC635t#I10rm!292vUF z>)BtAAL5z8Zy9Js&|*EF-kE6E#b=LLB?dDG7|}9YF{)>eQtu)P!a_{dO`16&dGYQ^ ze7q;vt;xmKRwGS4@)k;wxl3BfY9L%s`UPc3-mqtm0a0mz68TEE8rjIg7U#tDa2xd> zj)uJqp*ETnrt1&$;27Ju!18xWx)J?jD;R{Y5QqN6cT!iM1}{>%O_BGP9RHbv{HK^dbkrtF!azCsF{90 zOaM~EmY~c$sDQ^gydo_ffakF&!sjt4;y2D)HMw}q0mMsD^i7wg1f=EWb4PaX8Q^)e$G;s^D#keI?g0=wsAMfpn+4`A;uv{kyxYT1Kc6cP#A1_t9IIWmgzG$OWWj= z)`QA<$kk{;yO7*7(9!4~`u7mqld1U!Fk_kr;0mg#20fl`I>fmcdKgmk?n-1!x{cb( zrV0b7mrRzE#3|lI?HNt3RulWF&53GM@6Brx@QgWS zjRk9g7lC$?;OL`OZ^@}m?Sip<8UgjxLseQke2kt8-589Gdr$QsTwSG+>`;3wO?xFt z)Dbti;=Ci=8dzr>zV;ZLeAfiy1mlQ9)B*btUT7C316cANaT0Oxr4;D#yCKZ;b|UX-BBDKGPq+>+UAKE zSudd~#d(TX@`th9v7(iT6~@J>#A-3Bm=!ycJyEI{V)(XktS&`9kgD)NnWhM?Q3V*j z!%*3^7(mRdSLkjV%l7|?(7!H@3thVC@vn;m3*x^oJ^tN;3%i<|n>m^Ntvsdt5BF?W zRa+GtHB7!Nn?}4xuG$eC9V2*JiyzGOcl#B%A6Zg*${7 zFpFvx!_w*VHn-8ezmDhY2i|Aiv+Of+|Ia^f3g4PEV-8S!tc+3fGBAhE zm~!oK(penFL{Z)4MB`Hiyq!821f0Q7;b_w_M++l(Q;+XMrhNeUhWj)i2G-$j!98T$ z*rQQAPjPOe0E<)at*t_m)=6rXvH=@Tx`st-yGibv{{CFVF5{~4`cS1C;~~2hX0*1W zW~*-Go}*@54w-e+?>d%OzjW0hySUP{*YX*f+dTY>G4ty-v*1G3Yd2$DyN<@~1!yVe>LhfrncS3nWfvv%zgs&5MN1CU((Eu5VuWs&h+#GVgI{|{xh zukAg>&21#L-~NF86As;b^D-l+{Ssk749=OJ)=UlU>10&g=~`;){fR`%;83>@_(1x5 zTdDrcgo*~7`j4C^6fT=z%SCVtl^w45m9AY$BszRrl63oeADUx=qQRbp6K@S+$NkIl zeH{`RXN2v&Lv^?`BHJbx7hfyhM31T|@{Vk3ha#{>;AtMx9wF`1?22VH9&wDw*Odqw z6h7&HRDVMrxV(Jx`i+?oVJ2($yT*fC};M_C7Ce|Gn&Q#^4_oNu8uj0qx z>6Pas%=>WiqL=rF*nA0RF8@cI*_H*P0U>>xu{O{5SDM*d61Q-ck&C^kG0fE9-QQ7= z_>@co zW9F+VwaqXEH17*ZO9Om(rhAw|M-|^-1f)HR%!1w72qJ(sP&LbMx}!a&CLtz-iBs>% zkAOx3mGT&!a_~9Q1q!CsoD}j0Db%B|MkWH zFTLddu;KsJNV>+)NDm33iuY}m%Gui1s42Du#@k^#{FtN`CMAm!d~S0@E{#r#mzBwz z2|?HwiAV}K6xSda%J#mVTYDa(`0lOyoAa58L^d_9O0q9Pq;tyIlW_Ww?uJXXI*O64 zWqAa|=uP!$ywDQg+Gvm*0mqNStRi#%$s<9! zxjjX%B_-54>6nRwJXPDFCpmK-?zApA;oSggXwD|x0ppF%MTCIK`pT@*CfKf>8A<8oL z$V#Xm*VDJ5_vOnFiqZs=G|1RROk^v?3&l_=Vsa>Yo&z+pcG=@$q_jj?TQyNk0 zkNepNJiq+$q@H8bI0SE$5kCo73G|i__p5{@q-QxQMo-;w*AAXY$Veqn#AxDRMv*7l zE1=}Uaid%!$Ha7}K-{?;DqJux7(XvUY-Qx+#^m9WbC8X2${eOnzC!pMTIrH z^;&%4&tmbj<#eI5Mj!2F!xSs)a1}EEb0}!y_eoM%l?>2DN(H0cpbDkrJ)e`g`O&2l zKQ-FQkOirrw)g|!MV8QCaTK9dEMXW93pjpPP}ONPHwP@EDS3>${bg}90){^&xz&F6 zq@Z==(*Nf1WFnQ(1JYBHUzOVD2HGan=a`7s8UFFaM02S^bJ-p|1)3+GYMvxYD6#?> zEqIHN2xLn3MT^YRSk70PmSK(&Xu9N4qM$;!$l{j z;f3cP)Km2j6P*?0DGU@JHznmsgs;>!SzPaSa=G}2+T>s0+YsLVIo(%u;(bNuUo-6g z%Fg@0fp4TN|AyaGcI3bIsXj{SY_w99sRatd%hCP>={5Ar#Vq8@NkV6;E;w-Pz+dgV zwPoZazEJW8aO`>zk?X&F<4?YuUW`IN0@Izo=Gx2dyUAwh`+R!?+oy6XH9V+|VO_P^ z9(rfRUmrgzP+FzqZB(pRG)-UD!#c@hRK+RebMRK~qC>lH-AcpPuyxNbx#^8LNy~{v z#;Y~MTrPSJUK@YUfGzf$tygIe^}mZJYQbp*8?q4rKQx@ThWZuT<|FJBGk^3!q_KD| z!e};W_ARIh1626xH*X{;(UyinUL7{@_JgPa%QPA`#anV0v&)aguabjg#*<18Fnl=a>wSMUOOkm|VbGjWe6KbD$&E zD^m;aG@hnbmD~N1)mp88eREPu4r7j&t&}`)3F+JKO*(@Siq8~Rs=hq1iP;7dU5W&# zb$JxJq#qJKFkoQW1Yq?fMtUJt&N*I_R4+tHEt$&&m^GPWKgJ`w;7%iE5&@!Ig4Rp! z-Rl<-NP9=vn;vsWaSTB=)`!N~PZ<%Ks$ev6#a}q1>vj1hnA5n&hOwAQ6>2!Enp8-7V7QkO?HpnL%Tr$Rb? z#b5w9izD0DnmIW3{{;YcGjam_jrlT&8mrhjhy!fQzKl}MoQz!T|IMPP(e(8B^0fGv z%{rO6PmGrWhK&kdks^#HMLzsaD3c%wIc{hvsAFKRpJ+kO;&@6H*;1pe-P}s=YShqz zRx_}QHbcrp?SfQeYunPQuG6B{l}7KT(p-Gj`(lM3Ie1v1$-a*8)^*CjHwN^%h2HfI>s%u`^u%ov98!&!+k{ga^+CCRf=!ei2cI4UG7%Q;;g&TQ_TQQoniMJ3Mc95kB zup-AMPC9Fsnwl_3)IXXX%KG#;-sJAmv7g+}iP-R;+$$XQ(B3|NEv%C*fHy>ApJMUn z3RLSeZYB^mXOsFR5n)E*XmgfhO^rHpRMDW)hg)AY(A&CN`>5zzuWmFp#}IHMTNBCR zFAC6&ch}I9=Wg}N#$Ap&35VDp|H-jbTNSK_&KY^QP^#%|>XC}FSIQbj@xC-BVlxgr za?Si2p}Vq6tUyq;mQtnPmo>GNqie)y>UNt|FP)#WD&sdB<8qE^>kzuPRnd7-hGZO& zvzk0uE@}C0fm(c!Iqu9er>|%83$P?PW$j@X*ImfI8-+nqD-uB`t*(lGaJBYsiY8VuMQL538F3*0MI;Wh;{IiI~e| z6bW@n$Xj+BjMg=x!8dLy4P_%5K#z2VR(11>3ig=s?BLDut(SsX6W<79&+r+%(UHRn zCOcA+)a|u9zmFin%gLj-`f2?^z%-M=X<1&tK8szdS!-?n>J>(lA8n#*+8#Xak;d09 z#u8YxWK~dSBWqlPC5I!y4L8btL_~)MmNY7UA?z5P=P*;5Uo1E_Vtj6lIrLnkf>PsC z7I?*J5D;oUSm` z%9KKDV9c=~5OJ1bnhOiUcyC6YRk%=uh@u1435BE~SR3n-2l_;*R~U>{XaH}WL8U+# zpIW&*U3wi1#m0eO7NsKGK(#=sU3kFL*s>q3yH0{;8avBun9fno#6sDU*%K{OScU8J z*nyqiG)IZW!7Q_M-i2GN083RmT>zc}x07=V3pG=!DY&xZ@q~Fs!xBi1vN@iCP#}kVi8zG1BAU?%b9A&csu__ai*?gc!}Su0B^OVJ%Yvmq zwSbyi4>pP`Ae3x~`WpD@=Tg7aI0uA(vuzfPRF!=E-}B(lg|-_Mjpi}bD9tcez6 z+)PF8t{|}`e9>_~Qv4@8{$#aSg)cZ{Py#fznwhqO>9}Mb!tehWWmXFBtzVPGp%J)I z49Xg8{6YJ&miFtbW+W{lrHQMZxWu1wnws4ZK!0tuC5TeDQ$zW+SrWP-XoCW_p^J)e zazwj^-m&@<16jwlC`IViNi#u=6D3D3qB$t##cImw7ojIfBA>SmB|4kx_1T&=kGPb) z0X-?tw6-?Qp}^V6_Q<-HE8AepCUW)OFiBWMIlalrNjp*6XexR_;bH zB}|q%r!_F){%4{;Ob;AV!hNzbW+R5B@3|C(N1$#yHsnsNL(>SR(pYSqh1M-qczEV2 z1_@JFqw$Nbk#$+AG*)44c;YtY-!*?(I!9N1xA%_y20--V(WMgi5LU0d!m@Vr>vhE1 z>Ymyyy<)_PPJlDNl#tkk3>0J$9w`V#W;y70`UXvI!V$?EGo+HkOmabv8Qx7TWkU^fne#?iu?>>SOaoVN7g# zVYCTcU+47)bzWcoph!m}-2#Ywuc@X#4Kzzy*G<|D=d#`u_SaWn7 z)N&KZD8=t1l%vSmfpFVrB_m9hJSn>b)gf}(Rbmx6f2<^)D1WoJlp+3T~ zjisag`7PD;1`G(B<1C!#BLRD zIGF}YX4S5VGchg-(b^f%w_Bx7Oz%#6x*hYzQ~_46TlwPuKD2gYkm+|>SRpSx4PLcu zC8gundtU+J=)9uV)ex|d{tW8zzKvhAs`@EX@oUhkYt0H{$!fzoXTKJflXCx&o0lai zy#)gdf{ACJwn1ZRhcm6hS=Q=6Xc|qGf98=Toqw(vgJ8IVoKM$wk4lAO@8b4lc-8QI z9%)w^&$N34OA+JG6g8a zJv$|U_v5&M{DVImef+r-yuN&)3Kn1|T_IaoIjm3YokM14pUcsQQTA-o5M0AUh8-Ab zM!}icn(|9{)ulT8`iKss+>TUSKY2J2a5$1!eldatL^Jo$v+4&*s#$4E)`~i}`0gP% zEo~!3D|0COfECsA6usK0!5_$oqW2SY3Wp9va{!%ts);#5O}~Sn3QDT_&PSB?wL^of zfjxbA!`K=x4J~YK0fGL)n@MkamI%F*a-Vg8^G}1m@bkX)PCCz1V5btY`)0Yf!NfmqGokp8$EOjjB*Os{%eBGDc-@$bIQDV6 zfy5f)E}l&gyVaqarO za%FD{soeCbExJ9TIo7!{fC)?j?u}wWzjnqRw45pJ_M`DXsj{EdR*J6!YAK}gMO;$+n2q5sq7JEaMIwZ%c z)~&e;*^z$_`2OL4p_?i-KeSI>N2{u+K+N6@b5?<}q-dDxBW)!xr9xjSpvWvamO?#* zOv@~5-^U%u@E}imi)tr^CW$(1q_#CRBBUsORummmOr;-mXP(kK{rThbA9TULUc=y% z;%LKPP?yCQ3jY808fO0YYxsZEMRZo_X;P{E3cst{5;>wR4;#wDZVnfhLrs3Ei@1lK zBwop~bg|tDydDN6-u5HhN?_eYvkj2*_YZA%IA8NUTVKx^NQ`}3ov$d0#38cMgmgq{ z1EvMngs!J$)Vo$$@S?2WRk@(VSHya*NdWK`i*B;wrzDTv^n5T+RZp5qiMvO|McXsJ za{;IgAbD-`0`@kL%Iz{$p>)p^)a@mLdK(E$1uTj;SR$s~i^-nxgVZ!?zkwEVXw!6M zOcg3d^K$wAUd^-?B#*#O1$MsL4S1t9VRlS&YFXGgvGG1moc*vyf^3@^C$Icb1M>;> z*`Ltfu*N+hC&ay_e9|igvK{LHQ3DAyD^`AF_uU)mx@gAVArv1JySG#KlGblcK=BJK z=hb4&Q`QQQD2t_M?33W$Newcp)lWECA5Fx0K0I#bmzynLbnC;(5d||Zf5AD8a^Dz1 zt}~DMbjB`Ra9}xz$vIS!7(a)#j(fd|cQE_KGdxLD+UuDYPS&JJf5baA{)5Pz38IZi zP8V0gW3(+wQRh8iat+F9Dv9CK5i=>r4eG(Bu72dzU_h<6sy+0F7s}tjyBx zSkdum9`+2bwJ}p(=cA-hjq!m}Yb;qlUsgaM+5pSLBTOJ>3nK%c>Npn=;|KwNty9i< zTYs1zsRpjzP=9KOhr?P7gE|o}vxwlaewW)48=|m+9!gVK5@KAQo0U`GK{@o48wq=b zQehdF%nCBmb+YFFOm~$T!81fT)E@26(<>ueey1*RuD45e6|H0UCe>Gg##ZZATC5Ts zifCQy@}_)A5~}rVPq>arxL~@3&aChG+aSDxgK4U;lcgQ6X%$3%0@E?07e<8>LPGhx4U!hn1 zMP&ZRp2`0bI{r16v#~d^{&IzJa58gtHZxUmaWXTq6|uK-b}_PZ`M2w5P4brVk|Jv8 z+I2^Xpe0vI5Zc|ha#2Cv0B+mNWO%?(ydsspsc?j*EKZq}FO;1xQYefC?ij=^k`H*E zkSLo_sD%t-wCnbI5GIHnzM*+P1>+xG4g-N_Ywj*s zb!tp+F$DEnPsGEFg4;rTkN!G{7HWPDbo0lx{vTkKMS{jj( zZMhCrVqbyZnK2&s+H%6Ko}^yf&*JPdWqtwd@OzFp=y`2FfAb93_1b5}n&4O1ZLwzd zY>jRRo@KfIaQYQ&<-X~vVx_q8+GjzZhe;4k%KJTqbUW;X^tOK5@QQ%fu&Er~9;?Pg zpNp622mSQHJHe=YtS~q+;>bgck^xa{_U+v_r^T_LaS?ue@lzk(!0dZRY|rH}lkp?Q zg)^z+XnP-Mz~&gscoTnbXm-dC-&~R2gDQ!SQ{M-B;=TJj+hd;ISD5iAetqHIA4lHf z>%QHy^FSU<;$eZEk;6v-Cul>%1oH^C zr_(g)#?4x^!+BP$jOa^Oh?Q#4;jCIPKiVOokj{*FzbEb!mxByT(Z_L*LzRmdB^yOL zZL?lN>XlkrW!8#IjY^J6kxPe^^5ux!PJ3r4#v!lMd_&_OWD?Ky z=<)sy^B-jKugtj$|6Ymmb(d3pWe)j&nZ5j-Ie*jtHJkunD_Q@Zzo`73CVBv6U@}4{ z6jacg65Yz}Zsp<<%a-pVNDS)%ipt@wP)Wu5exr9Y7I;Eqj&I-khWZ@D_0AL(Ex3&Q`;yHlSWSM?i*CK}y_ zUaboW3%NJDee_2H)1BC9L&uuhj%k-CbI{svY*Q{QWxB$c14bTg9Ba8-47bRCUsRib zIrd>b&p7ROk_qTT{Z#fDWmta#nS-Z|YYBlNTeFD8M&nI*oC<6~S+70%(LQR~pnBKV z(Tn(ucD}HpN={=fv3`B}sIEI?#6eYG-*j8)Gr2~YN=@g*l!ES%8 zY8`#N9jQ@&YU616T2+cf6d2(4c;0Te555W8yk8z*j>|Mp9qUWXZnh8V1^Y-+V6xdS zH+?RNEor1K^!dqc0Rmx6z_|&Jn=vAShMHX-k*w7{Cnn@==V@-_W)5(p^Ypi)?`ck* z;+0?0vyNBpF;(O9EHLHPx${&RFG{sd3@L(rkb7JqC5yhYxkABFd#ysCB0dv-3_#01 zjIuqfQl~;^JE~QK9A_gvKB^2L``Uy|Dx-J|Yj+#r7mnzWIG1^+UtZs*Z%*%wy5-66 zjBZ6S+7vp?BN;+m2)!T>N{g0)bvfcBbPvo@(3Oo~8c2?}=nuatpnn3|#D5expQ*-t zYhsnnPY_5GWP7^NQ1Y&7$va+i56?{E7Y8F2P%DADDbQE%Q&_qUD@|D&uviJCl8z^w zel$?+VJrVlb-};l4oyfp{@goSxv$a(T|1)?E^8IUhnJ}D!C%1i6mA{XI*W~|nRj_L z&yGS&zO<`&t$ot_{_80xJBQLWnEM+5oq5c2XAo<dGAXkMU4qQnm5pS{puY1L$a zODOPlAtiqGLQMZ9t-h#C>P9vI)4%b0F()T`CsGwNH?yx4^ZZwarKs3`QJYZxuC*;S zprbKTh^0%2c zUXNl?LR)`eTYMhk2^^=64*MI6`q3a(2IEX=n-@yauv%1pYbxffE8G3x&~v| zG41q+b}3ydc)V^FrvY1hh`iXK!NtdB!Ui{J+4gWbqHkMK`xlB0+3#_FdERk zt}UIkP_nX9c$rKMk!)}ZSkfZ5>FGl(DDDm%Oh@DC>B6B#hmAg)skvt`%FI~|x|lUR z-sg|R%3Ux1+M$ypC^65iUONcAvU)qZCDw+EJ4)ar2m|7t=@J<`s%8 z6S{q(QR)>Wb3|Sxk?@E&7C6(2esh^7{f1V)TWi27ADP4C3ZuqRPQyN($n2YPz=3hh zosF&z)(jD5$VZcbvB2c}kmw5aR_3`LW8*q6=18OTlu8;edqcaNZ7$6g5)k8thh>8w z74KCl&Ypj|DyP6~QW%K+l(#@E%=XVkObI>!N;UpOOmYOfVt`IxpZ@3g=&xwZoQ!33 z_VHLxjPQP`N5Rgo`wz4w zK2;h`hb0zpUINI_mm}2W2S7=#Jp~cPFUn4}6TokVE-i2Qa!XmeN!+x#j2-(rPZzL4yo)&tgJxf+CJ;GIJ#=IdZIx%R59MYN#&k#g+iT#nL2{=K6i=kocQ&+@jBPe2!tg=E0xNY z8ZCJ7xdwxJmQKF5E)nbp?T-w~K@_ua9axx;sU(hglN^jl5u*a?Hr^d&Hi>M4GJ+Nf zD+&G`n`;9{jhZC56pE~p>lUh`frii_b+B?Tdl#$T4yhDuT>8W%_?Go&cx0^a`tCY= zzywfq6YJ{4%=&aUQVF0^m_!{tdYl%Y>Bri!-~UHpU%bi%c*{Qe-dpYbw zli`1E;)H$(?RduFU4j-@hkLEA~cCS)mE zyvh#rM1#JDc~%9z$M{Vq4+D*^HhilnBrlX(Fn7OG5^|9N7nGG%tHHv_!512ESa7#G zZ#z_R$peuKP>r}#hAXwI4JAoLhZ>1-t5|HNj!}3@yOLjzEiPD%*n=6*yfj^hYn_dq_8@`%rIoa) zT79(lL-YPI!xKMHl}N|NRJunOEkj_|qY z6jBKxbl-~$!xQ`rGloeg!!NG69aglOT9v3SS0^(+c{Jfvv zJR>0!Fv2Y;dcWu7U!fNKq#7J!_KLT`5c`&NK8)&kiCL)P4V9sOfW%B} zFlLCU*#U}&V3qW4I;hy^Kc?eo#REdF{=YE({=sU{*W zAO-v0<4S|i#4bzz#8JX)D>w&doVQmZ(a{@qQoq_*RGX7Hdy`UZjoI`*6W{vsn z8_9o8;-7j8|0?uq|GN~Hq5@Tv8s0G#c4SrUd1?ofNaU~~{3N`-+xuk^jh?&S^(58)7V?vR&fc8HZhV5%u> zn=@eU?&kwG{;E=J5`FgK9b|9+5Jtv5*{)x5*q96Jfg_&6z7$5T)4>$IkJylg>+*p$ zw~(LS5Qoe37>DN_9o*h(1LEGnND+2#l?hbuSk#U6OF*pGTRcV_;04LwzxsgU%~yFy z!L|9&qWgtQ=MiSqKhrVKsN2HTW{e@KRsf9g(3xzl@7wEGe3{meK|^TY>Magj-^wiy zp0&ep$lk*<0xzN=#K$Q;e6Ds^h9dI-i&*?|6YB=jxI;&b7)5GRf4wa+7hioqH<6Omp?kW{Jsh#GfA zG=V%4%%u;Y({nK14uDyHykVu7Vc*&`Y5PTbaRqD^5N{i!{k2G+%{m&>aF;L)-;nyH zi!8@8pxH=`2)&L690C`k0~XmiST>3EQ> zT-`dBlk%9&a(lHv&cc-v@T3oJlq=>OupYl8Mt<8&)y%O6 zlwAC_!QKG8{@iZQ&G11jM=>Y0f{P6yS=?cnV}m!(l^yIjp6FHVbw2iMGrd3v6Mwk1 zk))iTTF42DxGqv<{uOM({N35<7wK?A6IklmzEqJ5#Ed2DklbZ#I&AH=T_K9?pn!#Vz!>rHa);HUq9osbknRl;a+04|D_QM$w6^f;BF z^=T>J+RUPax6f)Y9%R@i)fhA;avKdUytX-IoIlkfw2uj@(@w+>2V+UYkZV7**#ri$gNa zkYsk)%PJ-rr5D6TGK;W=i<|eYAj%o%2DBZyfw&*yfnN{uz%9^f!*;{mu;1c$uOUu} zRuOGFFszLG6wo@Dn^$bm3IP7JYy>Q$!GON22Un`PbD}?bix_Ruh-}gPh+2#G>WHm- z#6Glfgoo(w2<431rkur?Vsi{2QV)lLb40o}g44L4pBb-AN0;u1*@;(p|d<>#h~TAo&1ei9`H{G{J0zeu-Fu{Gm3)k+L_VtWi0`PJ&K zLD{{XRLZjs4)xjixlEPXIMW4(ToPwT~)adMUwN2|0NnM>Iop3goO{$jiQq!{qxj zEVtjXKlZ+&H`yGNZ`DnT6a60L^83%!Z4CFPXS^-8(ayEMiCB=c(evLM1j1@od=yVr3|& zjf3GX%7)t544eI*x^RehR`*Eun+YqhoWCgT?_}-4Bh8ozl}?9)(F!GXQ~SCCjdY8B?|{Sx*3AgW1mN6?nVCR$`rU>J8-u zSz1w{p&WHb*3&<;UNhT+CTvnxx{6~ir};CYfcL!2!)T*~|3sgzS3n^16-lW@^zs$e zOP;BiLy7VfDcQxITiTQI&JLPC!TLnJol~)1aAf8ANdbpEHl7_Fc`rVfTOf$%3_meLl&CS zW`N=_{gz+!2RSt3CT9H!&H<+So&v&MTt!H?bZHl9vYPCI{zF5USFkKu<;a0bHn#_9 zZJysm?@wlf*S&F%l#yOpy*diIL3CCF`tf(|Jn$2F;SQ)vFR&JdFzw%mTSw_RF)c)O z+V<+29LI_>b#p*$@ftO4l;t>R%VLjawZ_m%nKtP&0LBribmPDdse$e6X|dJP(DLB}xW}O;G3*BSzZNLpQLs zBUy(dk6CinxMY%#K;Zjr3D=R}A{N9rmc7a>Wr)tht$|obnB;QzZ2KQTwm0RELAR5h zKRm}FN`JCIPP=W==d1b^L2`nrBnPuUFKE-N48TG=?ZKQQ0xRxS6J^qzVf7r+2{mx# zxi!*YnI(pRX#1V_=98b{xU+!wiFPpTw9>Jj1yoqG{*vU%D(onagU>?k1 z$qUKcR>s(A3wneE?ou!TtrlY+y{5fp(!lkiK=(ER*F?e3BBwfHuiupTDfPU*TP||j&0kvZFFqgwr!hFYJL<{y4PBBUb7*Uyh$tFgk621WUrtxe+O4GgLnMy_f)JPMcet6p#5H+Nx4(kf?AJ< z&e2WRY{Zq=pS`?7Rb03$Le(7!n{JvZ?#KiO45~J^!}!3~oI>ewsqcgbhJKP|hacX! zId<<1E;KorHf5q)-m{u9`}=|KE(a$W!y#0}Gp?gGiie-(u#E0`!rP^z8O3#JV^X+x z=V-49=CI6d+e8RdcPZc6Q-=!SZl(Ag#%O)=7Tm&3$#d(@*2%p#9&I1Cbjl{Jx*TX& zj2D_T+kb-XOJyjn)b0i3TjZB9oT(nT-HAr#@ef8cWYF?SiwaSV3Q?5>lx>+dOp@Pz z?XATvC&kdyYS{#Y975kB9&fB1N%PqduL5RoEZk(X|Cxr3_uUCy85a;LH%ydsm+ z=lt*g&9(8Lmf`1-$o#=Klnn5FP$vC92j&00F#2|F{I8bbe^XVHRbkvv|8r8V?`Yso z3qn-Wlkm&sNw|SDh{ncG7on{92_32C#g<`&tisV@?;4=jl>Zq1Xl?C{_Q&cB2bG;N zLPb-<+OmnEqNz$bviZr}vMEC5i-jeF)<|$Nwaf8%({Y;jdGjmN5%~JW+YQreW2d7R9}r@IB}4Hovp;aAfB2)e%qmCAjoMq1cy<+grU<_uLJ<=IjMd z2Sv`8Ci_$N(5GhaQ78!n`*U{$2XM^&W;=e90_(e2D>eeV%=WAj(1s~Fy_|Y%#;#VyvznSI{D|OioM{{L{h&W z@l7Z4^D%>`%ov1n`_!g*IEeze#7mv@*=4T_gEB51WPve=3^HVA-o${*j7a zxkl+GEWN+>Sgl`ceqqU?SVcth;4q1eVk7@Hc}_`sTf2Bf15XP0n6H29&_I`FG2^jk z9Z7*w%=yO~vR}foY0yq>y)orUZHrfBP%>?fK3HD)UVV;jZe6XO-L>DPi%>#U^eD&l z#Ed3$l!?t`RtbKmjx+=MILm}*N+biX;MV=%^kR@5B}_wwdU@UOkDDalnty|Zcw?FO)yJMOIAi=?#SQTsuKY+ zbJw1uLTegVd|LTIF2=YuCf+V@{y?tRZfxOk%|hN|J*q4kK{jVG<{~PLG`BPlZ4j%D zW4_N`7KoVCw^qa)6JI-t5<|&qlG2=E-k{|g@t@=(}3#1aPQO9XX90Ev99 zzZS2jSTd2MQpBvYt(R_>n7gcCqSM` z7)@Rj?QS$#jI!qLJMv|`1|(!Ym>M~oNU3f#8InypM1gHn-q<22Pqcgw+VB?wU51Xj z8&wp3rjhYs8r#$0zRN*I17`~P;f9K8bNX^yaaw88VQJJxxH6VZqpD<{q$w7#*udd1 zCN3|)A}LR_f@!jlt1aU3NlQG>X`1h?pP*ux(W!h>9?c>%?>oH?0)R$AUcQ$On3NB# zkVsFrDy6b0&nvI(lV2(ymS4E(7Fx<%MtQ3Cx@1Y)H*o|-k*(BkGplj3kc-J!Sb`Ov zN)lKpN2>h$3oOveBqc8fkufud1y(Dn<~TkUcHA|9titJwbYamd_%w%X4wW2FG9!O= zS3_ogHI=kVT+WrFD*ckHkFqj>n91F&0N0@fscm0&K_h!1ymTr?RmeusMhg2X;wa^O z?vM@EiDINyQBTZn*qtB~SO&CZd&RDIjczc`3gJ9Zo6Q>M=91>R~<{y;|3Y9E@Tkmb+1Fxozu6y)mU9#(`8hA4o zUdZEex?}+Qx;8EiSPCp>ej|#?bSs!6hW39eJS$`^QB$RklnTrp*LJf;M)3YZJoj%y1{2Z*;ZAz3xNxJAmaGYoYp=Cin_ceuZ5Wui2~yRk4o|PrnmGh zTX~dCC9MXpvxN@D!G;GMvJnd0K?b3nW);tT0@j>%5Qa za{nBlLP_Fl?}57{y&Ipz&r(+7dCCIPhp9Uf@@65wj2)16F;9*OAm8V9!S$_*-RZMe^vB>rp}~l@>$y zkIgk9mS->5NLt6%xY(t%G9Y%QNy*sVf7*X%YSJkDy!Fz6Ak%ziafR(^i=AS^z_erX zqtvi=>>S7K-K_nXnkr~}{l#dSKfpes1N=+l6?jWs{F6x;5Ib=5T9oXS)a0fyY+j*B z%|o~CCiPn?D|8acc{{g7k0c^6J2$mbN1EK#sEgrnBf3sdZnOoi4-a#wERG>??y-CO zvjyhd3l%$2@Pu6{4!Z+q;80LBs|Mre{E;)?n#^pXU~mUrJb@Pu(44@F>b`OFZ=c(< zwNMJY!;mD=aGRX0EH0_kFF4%h*vkP&Yq{}NKH2IOA?y!S8}SJ}Nrr7CoOhY6CZy=6 zd-TO?k)`siQgS}a@zIRw9az3`69DTu`0Li8XWiL~LRt}lHRdzH)rPq8NVTOoBa#r4=& z8dCMC?_D7rpUq4zdHPG@6QrP;l%;bQpg!RHyCZvb#TIqMwQuskTPfvjRq2X6U)0gk-5ro|LEa2jc+>F5{J5Eu^y?mU zH{S6Zdm#7sYe!Fhpn%uj^0R-Sjv=mY&F&`K1p;Iq7-iaclTc{d3#Hi0#MMvqncZQa zYeU+>8}Fei)HCff#j~0UdHza%Eyv&OJ2~@DlN=q`@b{*gs}H=gHbRT?gPt$g`G?d{ ze){K->%d|71l@K0&F%E8lNfl5wKw3`=72bQv98w{`2CKNh47~iLvd_95}DdJ49Y1c zRhME1CZIBUpmozS*by8XYcg#EX2+nZsI$=l1?0&1p55?Wc9OvF(LTu59ld>o|A>0Z zF(*6a6@Ez`IEJhfYUY%n0ZAwIqTSRkkTUxVb_vbc9m3n3A}G@O2HkYF5rty)sMR1- zDLa>;6#S!4K;AS0GjE@dwv+)XIZOZoMwm>qRTUrfd|eA;($s);gnM*L{BtXFZLpkf zwl#G2#CY?1z`m70pGP2!f3(0m4E$Li#0Un#nWpa@vhSVJW{`a|=5jR(w&?AK7@s7L zfZ&G)lxizj>bmnY8wN4B8(QjZFPdsAXzB(c)WSR(yGV*5X!YTY@LHrD8Wn@8PGk*~ zNUIOBYU2FK?_bqKM3>VfzPpA0xb6NM zFeppqTm@Sd^%EWzHl~1RTOohg%piaqu8ZQQVF0!!tQqmJQbr@*Zf?Nnd8MV*-jPjXXR&doT~OzBIEp?kO&AQh;))T(_5V=~8qw_$f) zR^|+0yiH{v;;6oGJkccS-(e}*M=YbeOohGNzL&oLsaE!~Q9NSTMb{f}dO3}S&oEWw z7$7uEf7^x1l_aybvN0JeNW*646mUM7x_9*@<)mnYUFFU*LKCAogSAv{Zp&0FGwvAq z@3maNrt`4c*?|#h#)w(b`ebAb%8?j_+GgcKI|Rns<$m9f7UWnt#GhoGZKn|#E2ksm zy47j<{Epcb{Es>faiV^hTld~uEMB?&-wiUVlcX3;-6Nf;yHl4=6dEX|>s7uM@BXWV z$@*fT;<{-+3>+Q;TT8PJulco7Ygy8~>X0JZId%3Nqb!0cch9R;^-!6JQTnqaIp3gpy$B}z8vA$8n$?BwnGERarsaCj6IT&Y z>cWWKWi-y*{E(g&ZHBCHTr;h@NV;FQ+qqf1@t~CmmIZ*nf$Xe#kM5pVcYnT_y15gJ zvo1ARo9f~wpMhiE!3z7YT4&bjm@GuJLijqK?K8$p*Ptd3G~9Dx%y$weW+6aYFwr;Z zhvUQF>P2drqxzBXPNDPKLA&j|Y1PS^*Z0$Uo$!_v^D^PRw~fl;W&1QADhMJSXm2x` z-WzlYEU;6!(ghA1d_Qk7gC9)o77uXJ#8H;5;`2u&EU<gWFScMm{|~{7cWc~ z*uhBt#9-VWegZUCsO~aSo2Mil5H^MWIOe;ejQ%vJIl~#4V~`ifufIhcS8uG7&j5y@Sz}4GS?j6KvJw{kpl>=<&&l zktoTI_kOrK&|-E9I}xRI^1H7w+5`K7!g^$Hx5MZXpGUZcJ^lW3sq^%E^NfI|tx&HO z%?dAd$hOJOyJptI!wg4jO(cE5rCDNeNI;99S|mru* zI`J5E9+vQhJD-~G9Tb$BPr?2lM?}dkJQL5^Ff7po06#z0V&TiM07oCoTaXzaQ2l65 zk&u8_z!UT_x$}S5BvOXPKhoc#fYk50B=G;JN&mAH{SWTUf1()wcVSYtvDUYg~8xjpu)P(skZY2>M!Tr`M2Cgux8ixgAZWGi|%mSbz&N2n0Vj1=WSY${@qp;II|u zJE?wa4A6bA#sx&v)zRG1TCjw+&tqq~{PjNiy-E z>2Ol^c=gpLCc~zhF$2&#NH7i929W;+Zu{G1--9OdII?w2O`*HOn#X1dN(Ab=M=3S| z3|{)rZhdr}%CqfSO}Sw`mg<8PncB{wBk1Ky;DzF@2H5T*QtqXaSN%>ybcI{JWiJ_)CX$4h(f3~tK-l{{qc+a;2 zL&A8mH)kHwup*AT%6lT<#rpTgb;QFLfBwk^>q(aAY|n9E6XV)cg{ zHMMdf@|95AA7-J*s&#J(CFrDxUdIg`+@+fp&5E^%qM(sXJX-6Kr276MOZANvunF3= zq>XE56fy%-b_b2FyxC|VC_%**$UMXi2zmrhzeB4S=cuIFi6`ul?FAG2cVAdDPY~)L zii?W2qD1>c%84hUh{?YsiBAAP>e!%|lRJnYfqT>to5mB1X*j-g$0-L%)4G>hdzK@; z4}E%$N+1ZII@TbLeanb6s*f`M|I=hYX*1~iVEp)T4*0)z(f@tK_Mdn2zY~(WG@!oy z=}Y`TW0UPkBV=(szaRcY#H9MVU@}G${qwbnU}m}WiDOdC%u;{T^zy4T&esikR4xOo zn=ELY%ZTa1*{huD)GoUj*4Mk5{#jJyj6d@~cdaF0AkXdq8M<9}x}GyVr@y}MHdnXf zrWqbV5vis&e8AxOVVw>>&SBjjeA@)Ef>fJ5nfZ0vSh~Aa>R9W$Rr*-GyVWws#MEK? zhG{y$^_>D0hi91xeyCeZ)J6PqMwb&xi=<^u9}1$1_^K02r2T9|1eN zoo`96IjPIH(acVX(;OYISvnSnANcKAJ7lrK#A9^x9xaWZV(7lH3&gxd_nuvg{VnaU z>`0d`2tBbo*GC99zqY*8NY@y)Tt~mdm3&vFFz(6Sy+nZAU8qTWk+1X&c!#lPUM(5d zNQGC<_amF{_6%6eK4I4=xG`?0lAl4T*T8R5ac%}d!nIuct9};2twKU9`dxvSG*Awz zK@Mifp5u9<9~8h(o=A{7Vrpb0pY&2WopV3W_8ycW7k10X(Ah&6%P@W*W#gj&WSAJ0 zaOWY5tvPvboYq}>J(nIlw2T^x5)mf-D~&BteER6D$q_^%YFN2-vV|52(a{n8G@KL< zS-cNb%nW;d!G!GnH*ngnl7*X{DV24r>Yn2-Pefr+&4wO!YIbrSO%ywM2ArX9EnR^9 z_C%prh9VRRrg8ZyGK)fF0$yZ7pBXiNEGfogVSoJZ$2~R1xfMiP4xuLL#C*70GuM7U zh|B1@t8Arok1@!_csH{iI*BTAlKHMN$Yz{4>tjavsp6Mou*ql9z!$sp5W*NL;NX}BG$#g$9lrg15qzH<2*TI3hq{^vpF^w3G2Qm~%%6PxBd5w}V zX*MfZ|AX|+BWozPVV{y5NPZOo$y%@rc1FTdHM&=nUP-)KXpD>9qnPV2lD#KAYTVeL zLN9?xFpsD2GOdAIkPCP5h}H^W)6E46h*hyvOyKn)dZjSJb|ahHRidofCmYbQ%7(>6 z8KNvkitBOTF#S3^3$}&s@hCJ$ZIYcv&l%C^@-68Y2=L8Ty1l=3RTS$cq#DvA3|q(u z;3OS^;k90xSuskgoaPkXAM&S(DKr19gF_jD8f*Z!xmD(!=bpl%Ee{4`DdS$jJCu*y zNnpRH%Jj_mt%@E*q5>uewTW1nE(!Vu7MS+ont%C$S^;CsWr{Pz5U*I7j7xLRSdgQf z>6w3*@oLU}5dEtKN)CG>6CEiGEDMP!Hhfx6BJGV@{KmNq+sw>X|x( zm0(pYRBMMUY^(E1f%}*>F&tf1; z$><^M{>Q-6WCe7PCXGENZNse0;2 z109Vj%r#~uiD;r3Z@oGlQ`WCSLIVv&F0W8__A6dcqfH6WPJ{Z$tT83Vc%iLXN|l%< zlH<_*Iwiz#2+c?CGlZd4O`V})GlaF*gsOSqg{UYH|7Hvf0VlqWT|V(?Jhj9E9WgfS?)M?&Y4$5mZ! zTD<0>&}39xVtJ9@2nKhXjR^~&>d_E1w^gPE!XeF|zY}THh#ubVngt8TOz->_LP`ql zZ<&X`WD-1!1}_lBhSt@Hw?3Kl=jP=j3K~*;4aF>$-H>s7E4OkvUUVeSn_h_L`);#b z)rbb@ZuJ#kz9 zh{e^jubu#30x^%`^G{ztJT@?=T%KvJ(J4%Y4;47xRkTL%I)<&$DZ#}474)d;YZw24B%B?~%XaN&G z%?=Bqz`1rpvO!vD%lYIIjv`UAj!_$}0@E3>X9Fq_>i5E$#=R2<;whTSD72++$$tL~ z?Y#^K-Bf`NrOstR!9!^*p9sOz+{c3;0k1&L!`#Rz9|2x5x0h2?_Wj&1qg@iGlGv+a zPcJ71?@2KPsU4EL)=0kb#uHd&aMRD9ih8WRV&GZZUgx!24qSxX^|h~gvA}x}g0C=N z+B=`25&k_>XP@cs`9e<7siTmzw;X4F{zek7v&;r|i*+T`k5oSZ@h>AFgx5RI7w#G% zqAbKdGe_JR^zb4r!B>E97Fu96jP0#$w5@}&YWTYws0 z{E^ha-)&NZ(Z7_+2e@rW(AHAT!3$2JCi;~>=O)Acl_k-da)_zy4?k<1W ztnZ+@C*@YVorAA8;&!~;D=lv*tG@@pvU^y3@B~&=Ub#35SNuZ=jd7-gxCQVl-{dAk zkgSpr-icyAYd@Ip6Xgr5xrqyeNoI&m-yJ}oZh=dTLXXtufkIK_=sa=q-iSJ)wd8}^Y_-TRrjslYSG@1;$ZEEp9))p1L z8BbvzB)DP+y=-e8oCp%581VgVg#*ny2x_DrR)mGl^4>~i|G&Kc?$Tp%yGHUwPi<&F zzCCy)?oC2D$BAywczvaiMaW>|H&BEZGaRZRIVPMC2-yBlcA?a`ia)7(mIBBPtJIXV znW@!9ln>SWA7Yd#m&uU(__%a?FV;CTvAx#a;%zXGxqbyW@5K>@6$O}89!~I8YP+ae4>`>c3zA`T>a2$QNsB3Y6oQ*s6{>>F zNqCgwDyBp2ouAG;PevYc;p-766`YVqf&37C&Z-c{f`2N3#U0?_k)@_?>0=I;_}L{jzGh2MZT{G8#VvDIrO^Xa>h(pM4y9$OqA*K!R)G5+v~snDP;Si zbmGxByCX9!+Pd;i2hu;W^h*AECzM`AsTzOj#ry3;k!(lur~3#*4Z$!wduTyY*pdB&~#kQL#_{ylnAwFx<@TveoY>x&^o))L`M z6$jLz7JJM(k1e-HN5h@MCCcz)y7VRVL1F{c0?OXq=wR5!@vxfJ3!IJry7>AU7hFO( zH)-;hHb?D#t$F0RM6Kw#_gHc!?9sr!LJgU`UhvUP-uf1EC9`u>x;$GRIE+rx#CB%P zU0SDN3=e>erQ5_22wZ9c1pHSR=twq2ej4pYzcazu87gvOomy zKPAzd{^*!E2?ml<351@Y6H^n*TrtefABuurE3{q8?-1m1Fa4u`EA`lsc`kkKdSH6| zHe4D1C^I=dKlgzF@=Z05@?|+1}=pw z8v#Ws56|6=if4>sUSlTnS%nL33GwUU+3QHzY9VH!ebqgL*}MJxEWJ5i;r#NMTq3&w z3WQmHEe*dc_>yt1v(o*KR|4fb+!05VL-KW5_;O-|sR9EHaTGHsnY9Bc(bc$49L=~H&q0ExP|(?RU^4VH`Xuh<68OF#Pw(*y#*Xga%q7zd{l;@GZY4Cx zYJAcouF6_`|Dxj;mm&M3Dy&Rz&j`MCZuPD@x+{ zivH*NVk9wlh&917XBM&3Cv{JOzd(#|FL19`*thwP z&~UR4SXMyp&dB#(1TDZTlx@fD>Vhs@D%QY?OL$=22dPlOE;NGpPO1>rRh~{%vg5j^ zePVk9Xc*Ml%#OY9pPh#8jfjmB$s6I#vMw!!Nv%*)fgE2%p$`bsQ|TA*05_zu0kgfE*R!rwOAO!~d;D009&!qEgj42pS=<826y+s-?847|(S-{# zcH0@|$X$xzEMufIVJzxUeUf1y`^c<4u5U}_^A%`t+LtPoE;uTl1S;-dt12XKJ|;~7 z>6BA^`#AFtCEmraYeEho&y*U9ffd7Bad_Nco2Jzh>Z{PNCC7ut(0l~OrS>w*{LGt&7 zN9_Dae%VDp+PxYOJt3;dcG+???T^OA#tJ!|*ahZAtygY-%Ux&z274*7Z5q*7g84~5 zSRf&{5-~q*Z_N033!@m{FY}>;n@_5b$pqtgV@!&aN8G8^Rgvd#T=wZG@0^kx&A|#f z3VVrBd)UYCE#a|IOlT`Ju9k%&%!=+TgEg2vEZU*Drl8O7o@V0bg?y~-4sgjM_z6v^ z8Jt|Sefa4_l@ZB`0dF-jMz}AGr-fIsQlkmNrAFe#mHuFQ9{<(0aG=-@cF=btC}}- zjnU@0$+)Ehd{mE8`}x!?diE(?^R0on+2U(=x$EY#xvG6*P@)9OEvvGh-8B~E9zhr5 z=BRcud=RvC{OEmy=zWEDbaN+kk$1t ztO6NwN~$v%I#;f^Axo}96+iRS*NL`b&_^cGpQAJulXlS1Tt9; z$Fb&5d(bBt_FkDkYL18zKrq!!2h>3d@Cq(T3heP`)qb*0|H8)j5v`GHPc*A0d_YJ0WX%c%AA1*90jhZvkv4l`?HVk^tRa8FKL~;Q}~*sW@_u* z+YV{c*~1o96tc?=fiajokH?wz7HEb0f95mqh7ZRhrOJX1f|jS-Ki6IRC#h`J>8|g5 z+DnI-#4!rIdJ2cti-oNCwIhV=;sUA^Ae)I^f@3PI7>sDN65!*||CN2nzIF2h@9E32 zNDJ7!F;5r~K$rFSol{)$My?Z7R(Y^S>-7BSx&PD(J)irm@H$zu-E8X~paXig<>ImB zurNg?Hr*Z+FW}23wTbCro%L6XG}ADzP1(fN z+#jxg$U@DjbVZvwbC&Icp6oK|k8C(a1GdK{-cWUAa}IPo68@cJc!BfIsMZJ8>?3!l ztKJ-ShSUIMyg*xSqHza15^Y7VJCcO8{YPI&$<%~#oeIX!z>I$;i1Bar%33kw$#N+- zZQ9L&Ujz`G?$e!GhcB~OXaYEgY@T{6sNH|Xgdi8D+(FPQ8N1Te7!Y9etR0(FEJx)c7J%-$Wq7hWTiB37M#)tYK@h~37p)5vVw4vOzK$DVi?!E0_Ba<049 zzRToML6H5~Y-N>^*V~4swVF>x9S1|df^fMp?+4NA0=kF$@KFj)$ma z0mLYDqT5Y4>)4xz}GWkQ3fnsz^QW_1IftK3%hym7W$ z4nDe@6y?ov`vr9ie!XIOm|0_O_0Qa_;9mWA(9?euvfDSAI@{k0*%tI4Kgj+ci>Chq zL;S~fDzES0_`kRiS^v{aHdDzk0M;)6A|XJINJyH-XeF30YRvXmgc3r(gz z>t?k`GuN#loNH?>o@;xYe}`5p&U0xNJBCky=MvBx`^q&BnVXd-cTW%wfr^)#?Ly&x z02_Y}ars6OF4jVvGTem%z{+#nk9o0ND+a}1eIiHc-(~Swh$7b}pMTMfBUiD+V)2q@ z;H^^CT)4;et~J1*<%Z8dc^8T8b1DShZ0060#Xys)^M|{JdV7Vnv--WDp9A$)6?=Q} zCMBeW?PB4^lESB;kiEQX2XM<4Os&j6!6FbYVW;V4(KAoj|u|6im+3QorVNA zVB#gW%fyBKb#Me?+1DBjvJoZTMUN?u1$(|!H6`_ECZlH_hAL-VNROz283wWBnqU^m z0q!oUW2_b%8_O0I3!Z)uFHXtc&4v#ftr`IY&u8NGNa)pBDO{n$c!8l#1y=!+jsd?l zW873jQLhdSv>Y|D2?p64K3tYKumDH*PS!I*s5=`CSZ*&?C+bp180pX|K$fDVAN@cF zZzQSaOXBx-f||z|1a+RM0HF)8XvLp?Hgk^;})AY}1qAelSv{e#IBSSQX)GEi{du7#C3Zl#idat)}lEfd|U5{E0V~X`iWLp88B3qybdxa zD(WI1VJ+0?7hk<#`b&8T?u5Nii;mGji(%(O2(q+VOy-vm~ho!!1@dE#Sg1g*5QEf{KQ!TshQx^6c_B6J-g9S-C>GqN+jbOi_(Bov=)v9JIY zN-f9$F7#;QRm2*@Df@b>C*=0ynrRv69>`?NiTn)Fzpckv&2jdJBPD-2I`CyZ+SjlO zC)5u7Qao$i26vc)8efdFw(7uB?HtuU@^__GYWKmXW5g7lOQowJ96fR4(UDFw0op;} z{x=wAOD$AtGrtVTo9873fs;MNi^FnYSJ9Ql41jR3B1AXI>oQ_+YH2J=(8AZl?zN_;{SG zP&8uTFWP=C4Un^fR@hXKJ$9_{Q2|x0lNGfrs2>=Xiu7<)+|t%|mALiAS|atFA^pZl zpHC^Fn=8ltW$qh&aYqePlty4x)RTv1ma+b$n^)^UrG;+Tw`nUyR)HT)9Lq33UFvI& z=xl2D4&Os=k3Rj>?=nhHPpj5DH-yEBz@8R}UA;+;GCeG0m};Gjd*)Z=m7>A*4+fgKjpX~l+h>{|B{>9u#-#usvnQE9zemIhw!|e zCZ3svH?keJOC+NiGpJx-Xnxiozx0k-4kR1V!!oHia;YD)+~;YuNVZNWsB&tC_QvGq5P@tAnu{Z+sjVzx#-nc|z&tNEjA{AA?`GJv(9UK>%t zi=~*w27MDhjY` zVfPQoqa)O)hHT__DLDa=rKbjyd$0HQP!%u#Dhs5_9+`t`vypK|ow=6xp&hiM&+XvY z_cS)Am+)G%d(t@ei8lSfd{6nll{s7Foe`R~2pM$*nlEpgVOZ@rDpbJ41-EXsjX zBees6_XnXVRK~?`CAV)nX)hTiGu6mK8N(E}iQJ9|Gj#{_C8TEfgYq0O4Sz!*a0U3+ zCJdndD(0^9P>Q`uE6xrZ3*pZ~UGmTl#-pq>+Csg&aJI%Z^8Hx#fBkuF)~zW>BlOJL`wl4R7d-dR`8 z@b3ixNCr`JIEU12CgaQ;PD<8VVR~LeyU%;P5r|xlr>m?r_z9HL>*pFOpONM%X$?EN zZqc6gml!ssNLG36FykVpE6|lQut_+P{Vjbhfty15M8PzGc9svsQUpotxXp$^z_TaP ze(NK#`5xBX74b)?Sr{kyFBlV+4+S3@l1fO#CP54{XE_D7kA~m?D9#aGBGJRz_#j zp@wco?xySYSp180%ADZsgo-ZCN37si8YL<{yldf7nqiD!;Tl)*m$;sx|^o7rU%$|9i;;P5QX@40eVTpciW{g!@42lti zXkGX}Bb8Vih5qv!4dG9KVJE&R)|Sj;oum@U<$tr#VSP6U8?5it`QLdISDfELn*XOk z_@Ar^Yhxz|b3;c4ng8+pkJ9IV@M*F%p}bI!)_k+q49PQ~Muhy1w65Y%0!6eCWjINQ z^gzryQ;mfG%RomGVA^#)SKg#jtFxHitT99rR;pIvr(s!9wN(C{om8b!)x|^k_xh`o z#gincZnq#k`3KCTI@la_=R7u29A*18SaT#rdW|#buZ+mffSLEuD3Md38KH zy9Yb+pL^(4Um|l6E=g!^Y=so1IkxLO#?M~f;!Za@m{=R9`sh*|rHE|=!_>y-kaNUyI z6^Hgs(<_)>RiVq!!=%2#_&cZxH7E%+E3XiNJ;pcD!K|4*);BWsUwB!z>~4|Mnn#m# z5WXwBn#Kq0fwmaaSBR6Y<7OFsJ1j5sfjtaKTXg5V%y0gE{EM$*5Icr9T@YWZyZ>Oj zcXlr!`1NiAA^44M1|ax}AwA%>iDn7d+)6qL7TiKeWvi7k6kyK8;r;*9NihBQjO0D|hGM_&l)viGS)_HCL=6{20xUpiC*n&{T zUO^~2iLj+zM*PiPdM?4?=H%l{wE8l75LcW%qs^tiCM?fV z7TL>%v*9NVarXOUGc!0Kk(=sxob~(Ck7!aFe?;`!GeC+Bj0H=_B&eVN&5Sg#&h;=8 z=ESzRxY8nssDY}E4HBuWTh=quX2efv>pGDRfG#cz-8C-3%fH(N<4bz`+t9XyteIwudYW4PXZTtFZfF&eBay)XN@ zmNsMWCpXME1dBkHZ~py)v^8ic&imEZz`8ch!Cv8wUIENVxzZ1Lov_FK2ZxVxGGJp! zd%~WY(hJN;?ZlEo#Fwgk8d7to}mHRF#q5A4;rqPR&WeRMkPT zxdC8LLBvIGxG_Z(FLA004V8@U(!yqpodrXI$K~XM{u^gpWzkGJ7!o^wpKZKPtPsQ@ zCNdVgwLMqKYaA<7{phcYB6$;<>DHKvreMVnGgueNe4FUzXT=tf9ZV_u;Nf+L#i~gN z5bXG>D<>-BQ}y2cFsMKD^Wh&JR8yJ3S4R^mY65* zr{1Pu$r1qELug4LFQxyV(Sl78DZc;}U>BvHGkpLjah+a<%w|-Ae`eNSITGR)i`j_L zbJ*d71u$RAh?QC+uZ40WG0JZ2G{#oJZ?fT`~hmvty}qgZjj0mhByZz zMmIL%W&+4V*OB1Y{kRgYWjtFrsQ5Sw^s!`z)xs(#7+R(S{ia(tyTn4`M4MdOG^a!! zn_^p{iL}nx3MZfGL*OfTqOYi2`aAJgrulnnThkcBErawYS&!8n%{xt@WTGz}P0gJx zgw{8SjJ#)9Hj$H_zuz-)HA4Os_!W+-ch~c> zLz&i>dq$bcwp0zqO>*xZHui-?=S^&Ii;(g|<}-;O#fN{UfR08Bny7v3ANYwcIAxlb zA3{C|HX(-6!ev)ke0>$bx<<+J+nyWXWHbY&r9vNi#UKIl#$UqBdu-*0NW(5o9V* ztr)GpztZufWf2O7b3ch6{nB*4Hq=TdH|;aC_Zw5W7|}>n%&vqJB3qKPQfN$dIGjwo zcRBDTMqfB2ujy)R%BkMQ2QQMG;`|-7^b=XU%qqICdfz(#LvW@URFAScLP{KP{r?g6 zj?uYv+uCky+qUf)&e*nXn=`g;+qRt<+qUiGlewL{1Eue^g;X&(p_HfOcvA+1yMu^u#kiH$Onri))zLWr zmootdtOy(F!TMO?2X>ORK88C}V7aZ^Raju+%ut(U^NX}~>ydD4B})_Hnix!RnnoQA z8N3ETs@9~V6t5PZ=DI`#7gOrBX+;i-o%dxY3u4L136mdY3K->Mhx zmI5EOZeD%}a(RN>ByTyTsG!U=P1&?!{b7e~;QSnB(mf|x#pklT2W#*Ypq8mpmq_wK z2&ja0SgXblFeuTYuew?erN3-c(QOK=)@T{Qj}@iXVwv0^?#jr_nPGJn-@N^XJ-#jx zJ>{rxHdb_`oNu-uFABEY%(Y3h9U1qtn*I!8I71$QxFAp=(Byfs-OE~jQy5T0@>0dg zYpjyqQpEIty6|3n&e|It<3mIPCc#SAAD_&yPOP6zugQ8*X1_2jiae-}K#PNJwSYH0 zURxY*HLH<=zC66L7_(i~w0@yk9{#Qmt{Qb+exOD1o4Vu3+Q?|kJIy9aR2C#iI0a6&U zWYO>uw?|2RVRJFT`Pc{i0{Nca{Y%1py0ZHefn!VS$`F6i91zeQN!t+~hK}!ZN7t#b zDI;({D(|$asHO6T8Yy;p5pLZKG|zBWticQLcLlni zgGd+uNO%)5jf$$yvkp4ZnqVdAe??WglOApVO~;RZbymM0O4ZF_&5_nQ)ne?CpX`Zx zl~%vM*7I>(@`8>U#;|6{-X4-j#KAzEq}UYDYL944#yxNg%uLIpW_IH9OMq)fm8Ivr zr5SOAg9S}8G^g7PMxFN;X_?1$+fHk!hqW!fp4Dc%BAY1~3!4iWQ*Taiii)1rv#apD zM_G_x;>0eG?3Q&kOmU5W~$<#8mCM1N)n2N?pL&@DhV+VS}I`dmYxX4K>d2nJ5iM~M8 z+%)>1yOgex+UHvTa%q~zv5lank$I!+>>}%D0BcPob;+Q{D+H|T7(UH?v@e(?@)PlO z?&LMB=fXz^TfVHE#3I0H09dzr9)p(2F-^CQ8{T1;)1*C2ZgU7l!yy?gs=J&&fEx8B zW^TQwj!*F|l_?@tgbf?Vji__a8F!JtA{B0ALV`ed_s`4HHS}MxQH(?IU&Ugk@hi)4Rg@IG2+B1OTHjtJbHHHwyWk-pcN zh1ui7@rq7s8XP?GUk-a9*K7zAYmU3f-Hy-Q>0l{$heY>zI>Fv6=m3_{VyJ?y_M14~_ykzN7B@7*@xg*E5Py0%J0y5ym|#?^ zP;RCP3YpjP!!`~0jB0Jdl$!$1ga$bEvKV~lcuPmR z5VT{#yGB1TMM%VV)ln)C@sw7YOGL9r{>;?zXJOHh?#b0%BWjK;q@0jGj_ZIo;&Ad% zFHv=RL#>nP(Fxo(=jvJu!LI(BEYl;u{?P`7KRs*Nyy^p>GsJlAGHW#I09DAVT*zBh zhvJZ_GaI3#DBm4mQY=c!)NhNXQ}QQ<%y?4Mbv7!h zdpx>(yt%`@BD$+n&!K*>zWz_GW;5H^xcJKrzjgTn^m8CbMd3P~OUGvg>0S!zXUs0A zz;k=m2t&2LHMC=f=`~UF?Ed28p(PS4hOFG=;Y=WP9`Ti7wCiFrkHG*KgKu9?;fvq5IM;r(K$Z?cw zvF=>8XhB=uVXZBoh}U$#do~-<^Q`f^V9J7?g4W-=F=wqU2+07L5Yp!L*(UW(OEQ0dKhJ0FUV7jb-~ReW$^C+xim^* zo)QXVN_teiW$3~VR$ZR$$FFcyfg2%r;8#y8W+kEw5M{(=$BBx^#ngZ2t%%dpZb+B} zrG_PS>C}j6UeIy17ZGV6JRq;1MIwOFop^WjfJ~Px2$s-W^cuoLF!U>P60gb^eCTd4Xxl2TE@d8y&xg zth<7cIiCl)wHUnm&(R&v6URat@T~rGGrrH|r-B4THQI1|V3>%h5rE}<84)yTaQ+10 zF+)G&UA|JDYr^$=8W_zvjBbG75M^!72ZE^D@?y-JCjS5yffC-oCRZsl+r@(4ap0p$ zyj+T+=+prUS?Z?Nb^FX%kDLs~ZKWUflT-fU9T};FeI7C8n~IqIL+i%LOwVmM!BV)K zzo~d#<{?l}heFMDi&7dZo)BF=|I!(_>~~ZBjtt91JWSqC(_Wwe9W76C5uO_bBnQ`; z!eTG~nLq?Q#`9=d=?dCPc6e^}n_vGaKGG`fl-fT(bR9ZMOzAWPExq>2&(dkE?`gLL zL~mPLXU<5{I>^#Lo=)L98PI2u3^i1Q6d#$yDUw*9BtO5yl-YT_(E&wDfO@4(H>Hq4 z-YmQ-9(K-i)y%Y24*1)VXBEexV3oCk1$(@eH_T>bJAP8gb%cnlc3LSXU7Yzflw1Q> z-bb;WuVm9M+>m1Qr3Fl#`Aq>1n9%A$D1xr4X*8r!Arynuwo?P{jggnq?$|G&prISo zN1b`&MItbSL&r%AP5yFH>-`(NOm|bc3AqK!#5hN&NV+CSvL-qg?m3{aWG|t6h36q~ zvgA=lEH?_Mc$H0(^k-Fw8Ay25t-meTTUfBYpt!Vk^cXNp91i9d6%AeaI&bU@wr*Rb zfNBAQXSDyv{*cLx4Vu0MKPVJ}KMv1W(Pa4#aaB=;nDJE#fu0u$>zz{B!{($(C?xd! z)_fqZq*oES_t20Y2XbU(ziUb;?;As;KZfQ zt;{WSKKL$liG1nkluwKc&xI%61Q+UOd5aTX${87aZ-+HD#Dc{-uck!R;07~!WRJ3Q z>jWcPXy}eqWx&^Tqja`&+8Ad#YmzN~Y!7LDsL-A?Q5rIFs#BfoJt|&vZ}rBEFM@xw z8yYKmM*(+3qBA=GVn(;ml|2!0=*tOkIKlr8r8D&Cg@ZrAXmc=`s{Oa3Pa64!Gu!r< z)r-955WVgRDreC4cI<;Uryu|B^n()Iov+10#%5lkO*>-(yU~3kuWF~(g-W!MxmEJ~ zK!$c${u1tDdlK?eK*l2G#^e%{SJg9adU@*ry6O3q=u)U#?LCm*KJsV+SMdc(6jb+T z68~AEdl>P+5;yAucEsH)Yagn6%N}@p=Y??i`93Nd+&y9+@hjR8eEZ^svSKOxe8w+J z6!{dCEq0N+6zldK%V=odjL0*#4eCYa;j7;A&e%+$=!s?lDt6YWN-QEzFmYDS8qY?u ziR*U-zcAHt_>1D&5E;5W;k9TG&0;yExyw2Sn!T2{00Y6;D-Xyq6u~rSxyYm0chM~x zX!NO4{*F5i`;1xASOgCGnsWW=$#2hRyeki!<5`@fv7bMcx1Q%O^d6fXv<7%& zp5@)Ef9TU#$`@YI3QPCp2(67j2qg4Rr*qhyi(G4YTpU3<{l)A{ER^; z|J3j;mwPkpaA@)0SD&g=XQCwH9Zc4Ez*|u*IO6k6vSIJ2@ zq|+ozWf~r}nG!s<0$z;oM!rB$2bRFQ6yPoazI+_4z@lFOp;wWxD@}Js-yd3d$5d&N ze7oaKTbMd#s|$ifD!`UoN$C8~6i@77w|a4QrHzff$Mny|ot>?vwd*s`Uc0g!B5abO0J#MmYP>V$VXkORTPe*^V`?1LO6P*7>zi~j zc|_YeSaWoxABiz=@Pk zO4a^n3N2<1`2*u}_^qLndsAB{D1&*hVkV(je@g1Fy?U12vSeYTF{mMaJy#tH;{PA@6YkSEH|;?DUcbWNjNq zfLK6;C@6j<7Qe^5d_($bQbZo!m;TxweK%Jz9DQ;}e(cBa+-Un7K?VfMHk$>8k!)}5LS*rp8ajmI1ei{CLyU{_zgY3}11f}kE` z7;D>+2NqY+CD4eeC=~CzTJ{OQ2i2yG>QyEOH5MJ-+%bj5PLah~V>J*}?n2=(%8849 zABf|P5Sg?RH6aa0z6L7TkuD-Yf6A68j7{Q_Z_h1 zIHlqnlWkG)(w6m*AwO6wMMM-NDElcYTALSHtz*zq^{FH(w{sU7}@ zyud%S!R%ha(w?7hk_iR?!2R=GjE$V>t<9b24IFIsjp+YR71BlD!Ti4vJM@w^wyriR z|2*0_{Zot-GuAiyzg>$}ivL1pNVaIUC)Pkw2rGT`x(KKs1|a$yK>DLdYYk+;uU~3} zGDLy0iYty07OUT@;Su!;xO)d?$z_7z(HtoHYovm81kUNZ>nh{2*IBdMrt%ugev7^N z&?72|bv%#lEZ9-bS%^HAz*@1_RcN}NT|J_ns^afYJu7ha&ONWoznR(->7aa_V9zd! z)5U45#U!hQYDsIt>M{*)|DA&Z96yy_zs-bQuxk>i>#EH}h)*y1l=VRf?g)0q73VpD zxK*Y%$$Hgf;7ROjaJ5ntoIK6-i|)mM7OBOtUxW-Mx;e>_#SC8uzN|S?Pi8uZbdhWykSUtn zAPPG?)Tj`x9zYOKFrz{*h0+_|H;dlGxr}jF_4T^S!p^V1GbvXkw)BeP<)S)qDInTW zAG|QL+2zo_N}0zem7$W2_yyX?>U%)$);2yGT)_`fY?zS=%8)=jg%6Uc1hNr+t&!Az zH*NyrZk)4?Y+@rp=8C3|~0=96<8bJ4RUlg_cTN8GVZr*QRag&Thy z%8NmQE)?f(A|0v~r;eS%sFc?b&XV(`w4IBp+Z9x`DOE;(ZNYHnH8_bJD~C((W2sjw zmLwV0ueloaKmeo^hVB$o;FFFGAChW~M4>nwS;D^xQ@Mk&@57OfIncXP2jPtM2-mHb zK_zaH{9Lc}*vR+@S+2ACw?#We<3AN@$%%fqJcpmq(R--wO!)o}dzEDk@#^!lFPwg; zF~a{}_Db--qY%Yy?3|tc#X}_dXLBeSJ6N0B{MW|$SJA#o$x?P+55-4kscM}9y(P>+ zzBAV*S4pnZ2!ygAaA+J!BbmmBz!-(*Nw7V6o0J%_VD@Ge-JBdZeM?pkFAt`h!6{HfK~f4Qb9@cp1yxhHQ!a&R1IKF-(xL zurB+;qU$2+P-#^)y;;+^W^gy@dL0b4o%J+~^|oPbdA2Di>WEcSC0anfy9z~1^Fi`y zaQAiN0YxLOd*5vaK6Q5owwh9l`lCyM96a!Z)5w$)4Ks}0m9g?{xDI{L;I`cvWJa=b zYsN~{CS1qqMBMrHHo(-6nT7ibh^ zNoT}<-0q%Uy)2f;E-?6j-bpZ71qZW^6GFg8167+{p` zqS?BuY%8WtxP-T1M8Smhl-Y)ei|~epihKdp7(ZkMhA+@DVhEfWXDGV}AITBp)~Hzy z*>#c$O({YFc7kZxNF1W3Z}?WRH?e;>R)%8xfUAb2u<3!ic*4CAmtVpusCO9Oj=_EZgFx)? zWB9+Bm3E4L)Q^IGI48XS|At?{z|qM;-_Yql9l(D$=PVUV#dQ^gU;XumqY?&qWbk(c zjV#T7Lg!`>a#64)gbWivkQH*Rsn+``SefFCk>+|9;4jgc6-~J2Yd+<(u5`x0B9XW- zr%$%JT&LSSU7jVrj<@-~ff)X{Qi0uw4LQ@??{kC3D36X(j#h-~1x1ll8Mu}25oJ@V z83!~&Th-LvYW1~;b2wbQ`Bh{KxZ*H4gp-rDkm#>_YkgZl>DnAc4th=Nizlv5) zVaQ^hfc0K>c+6L19)HVLX3DJZo}Q{!Zg`ZcyW$cV^R`;vTJaxndCi@R41_*3=-b+d zAkpH&jRQH1GHgrMjw7&^Xw_l-wbFjN5XNq+R2h$66xeMvE~EHGneG;Te44GfMP1UjgCctgT?vU$;MbFJjpC<$?ebaNSWF_@BIfru zaQ&!F%~8o(!TQ8PS(99R*M9ahQOmAim41gofCb(&0Xh4@0h3Ta>9i7bQ?Mda*HPEw z7G2MXAj`%eEi9=KYofrH5TL`-nl_nVWLgTt#wn%4o^k;FSvmg?&OR8*g+wHwR^dh?V1VjeZDA)rPaofwg(Pn725rGr z5&ykCmH{I*ymCn3jc)(A7QB`U&e%|0DbX~W0TQy@Wky++WV+fx^LM9Ad~Gt%e1#8o zOE@cXuiX_lvA}gtZbh~Pn89>AQizLxfX-%^2ZQljrN5p?-g*ZG5?M4K<(K9jj&x*n zdy`84ewH}lRrxns^j%3Wig0**@Wr2r+ljFSmE`fCR^=u;2kMDI#<~@vb|kq*>9?aX z*Ark)07&+ebDW~MYRX@>2~Cj*p8%x49QG0B@L4YV34SSK0cLeC?Y9aw2u#BYy?`Jz z$TCWi@Vvvg&XP)Qd>KuM83xWseN(G5MY+yPJ53gYr$ZdZ5ZK}nc?FIRpAe#yg`JG6 zA)}|u`P$-d6YJ>`N4mc;#}d|8LJ(ihzUl{>;|yU0Arf0ZQ)uzBNf7$V?8-ni(?i(f zC;0IDCZHBGItF40=N*d1*x4H%Af%+XdIfS+IoG@(Mn|#D3dKFjOq^OeAbU%b3>Nl; zQD>ILLO6%QfjB(;Er6G$h%HGBGew!g!rS45R720(eulF#WeA`*&yk1WR+h*Xv}2v`d8qz12*(B(z1}SNbewC7 z9KUq@3D1`w!!?Ld&++1v0mybJSZpl`!}b^Wf0uxRw2`3G{_*e?KSq%DfAR4DT>?(t z+1SBd$=&Y%wBP;1m0bJbO489Lri8=Iytb>d17<0+KOv>&Ia(3w?*zuhdaF_CXiHN{ zQj&dDgpFx6TixFKEYv$vtCL_6TRTks`gQC+ zNs$~h>yH7e=pd|A35JO7LmL`+6NAd54`Hn|&f29$*IE4dPUi||8KTP(pwVc3Wu+!k zGQbT}7C)(7)llIanY?bJiF=v!brofPOKWpsXZpp*G=WgI0If;t?bx8^BPrihY`bXo zDqh1#aqryqkSAv>=8NOcWT&U5oo7gyh6P4$+vsYRIva0(@6ggTnU!8=J&Qg>TzSFN zDV6*b1uWD6<0)Iw9&LVY9FoSSV!;kuVZ%|ZcQrrJJiABa`X}9FEUo#pnpsL~t}V43 zdF|6`t}?H@%@o^anUIW<5~)vX{w$#3xE8cyeOz1fj>{ZEbzQq;OgLK!PKgd$2X%js zM7nfzr_A3J270+rl`-I$>T1VkJCdlFh)xQKG593c3e0!jV!eFnFz!A|@e{`6{Sotp=Qjx)=O^x$;waD#Ho)ImjbGFQv>Q)%jjl$Z zLsTRlfTUd~4>_^ejKW+3HyDKU5ED8Gw?K>6 zpu~T4QN(|71;Mt7wzTeE>lb>!xH#$Sm2KY;qVePm!qy2VCe;PjeH{EpgXlk*^Hs5i zT?IG*fEL344(0w~peh-=IsGdW`!APF@?W!LM*sRn%G~Dvwv4K3s$wsrenqp)oiO>u z0tSd92PtG&G7P4GFo=NZ8v*wdT<&Ar?ZG(n>*&2|A>Z|DV8*e z$6mHhTq@$ffxpd!e1%oJEJ~kWF(V;`s>%H z+Raa)Yri0&zt@M>xXDdV>+D|F+>I=2y>R*V^iF#XM4;ay`Fbf1PJH~Ort3WGZ+SUt zd3|%$dZ~uq-oL-Te}(_udDI7gON>|(;TDj`#acdUFPx!ZfJuwj)mRzome8l#Jx&lb zZ!U~2G2UK%0s}rW7d~5*b3S*N7&k`pSbe(VrqpJ3APZ-_CsEmkQxucOZu`JXiQu|sWq9r`SrmDmbF}yfm3I7;;bnx0k<(pcNr{)9hAF6l8Zan9oRp9}K!YelVNT@4KuY~c z1(EwY-hnbTI%A47B4?{Qdq?RlC=8?}bB~A8vK?tU;V94rW97~;kcMP(--o(t%CS5? zGNC)%Tqv4Wo&g=8n1+mZ+;6rRrI@W`ZB9cgjnDe53Y7iq>(8csAt zCyDOQL?2>q@sdj!+f5f|D|E=oMSMxLyF@K9%;U5vqo!1*{JX%lF5Fi}IO1IbIPsGa zL`Yx`(V{#MUaE8GLjL}Qlcbpt9f^DaNZVb?;J5g`z9?$6xyDElCL2iVm%6}~TVzPS zA#S9neE^~P&-t|7xU@!*KC!~Z2??HBy?R(P6E~n>^%5VtU353ue)`+)KxMeU9&P=) zKXpQRj%4Ko5PlVD3rvYFCB3vxacsc){pA-wJ|CeJCVqjdU(>+CK;>k+RJ@5dnw{i( zu1MK^tdPrfBIqSre*$CdqLwBAfRt{57^%{s!|_^kv7iAV@g3*RM{j9;%z-GC*~?~r zI4next$n064!@+Ir=byBNW6f;@Au(je``vG{iUa3G&JR3r%xAUH=3N8j!lAr^X4o= zTHvjaG*D09@Nm&#C;!L}p|y=S^I#KP#cb~Mf_In}-XKdyBcEgsu z;KqQpi4wVEZ^5BSWuy+gIx~$e=8t~Z^{lU|M)Y1rJ|=Eq7Da08xX)}jdqX0R2^SSe zE;ta_o=LhuP9x`9T2clut!QoGX2Zkt3pblXW?qqbmy&6*aW>7CUa3n0;>ZR z%yl>-DebK$Zn5fILVcWoU$<2Iq3hf)YS|j=)jbBFNeOHH2IRAp5TM&*3;E=7|1#id z;{m%@J|2gp&lIu`vbL=G$$4eXrgzH)yZ-`~W2tZL;@qxUKubV6WIHLq6Lf3+W~TZX z9@mF5Bs{EH#xo{X=uldzYM>>2O($>jT6ciX1)0@4a;dt-8)h5JVmqWmnxON%pD<75 zr1PHcYfYW{;pH5M^Ww^xh2x52OThBodI8xdz*iP7>ca>Q{*_N?9|uoofEdRa)pj1t z(r(4mhET6S#` zE=U9MILKcn@F^zty}!Uo?scQ(dJOp0wHBR&A1{83J3=ZUJ+&T7lXwQ;D+5-6%5{ur zdL=6b93~>GVaPZ75Cae3Cs1F%twbocD1Qn#VJW@)(F`*2H26{ane|5umV+Q;tB84r z#CF@n@h*r7L^5HiKv(+gfqPnmEUBSp&Wk0rb+Yz}XkSt2*ZFUBWd^Bzr(Wgq?Q^04 zvg!^Q_vL9t8`Lu0qfcp(MV-B1i8I)%LG7aWL5dwdL%p?Ot-*ga|i-qH(xX37{$vF7O39yJ0Eg>C;gI7S!SxTF`Ge zx}FiXZQgRWnOj3FEWtN%us@lHw5{wI!9 z(bme?O<&&m2ZrwCE@W%-!$AMhC;r!|QT} zVWnn!k##tR6Q5c>RAc@QnavsPO4U9L8A&!--}zTi*G>Nb8-LYGqbkW4oK7slp1WY; z_1f@QIny7~^?yWQUAwPwbiY5AW2ON!`yA+jIFLo?`kz-JP%@LUTMFH)JM5sQQ2W+7 z=<)CG>Q<5y>RRr$=yU^lx(7dq07Ezu@Knp9Ju@*u`GX~PSAlsjw5rmUTqk z_>pi`$vK&_N9CBLb%@&Jakm(}yeKwirLKI5tL+et&s&|gex|M5XNiF%_IXT5Ew&Tr zU+@!DBh`e&sn+^QLeUlE>LFUmC;^#bm&;GJ{ zEY)8+HZgY9o@de&nPlA_0FjO9r|*IunGNx|xz9)CPkhn~!QCIr$EY@p$J_1_)5jo= z?_OR!8-=NoDx9f;Ks0U*^_-g>9|=NT z=sKH(hvK$$4=mW{#iQXCYWC(CxYu{*P1wEqO{_6GQnddn1jC7a`a;*fIjM`!y;FaI zG6r-U<{3?NOt}MeKG`tjj-)5B z$UaX^sak@A6+f34;v2`vM0FuHjSJ$@159xN90d6g44ilXpq*Q32uuk1Z~`E;`bT~P z0A7S3Dl%oGP*uj6r8RbRRKN%ci7a9CaQqn21UI6d%{4M#VjKkBwnXjKQj^2+g!E3JfCq$?-9Ma(t@){bl^m+==o3%-1Pc%g+BK_%`fI zRcK}R#vF2pcZ;Jlm8=qfa{=G=q22d1oy!x%n(J;S7otM!ox;C33G&?Wl$#mgyuB>lnlHMrFLV<&C-{7{7lSe+S zEm>pyPIMW~TxOtg>kcGh`t@4o=VH@KU!&1~SNCip z*t4IMQdG27?DOKC%rI6OVkJk1xDCpEc*1i@r$$eTr6$S!86pTV5!PI~ovBm|7U|ZT zQT57U!iyn7WW@N)NWaA09fV2velkdXje!Q&9m9|^erj7z$l{?)Vm~*vD-xAYM#rQw zrBMlM=Y5XP$|F@+(m|+{tkp%NVTpoVJ9KPZ|BI1CPl{R35rY^GR+b}%2(04^%KcI8 z9egMLrJx%t!_G(W$rOhfFXUYo|M$T-xo|CoGk*2A&me+BYaq~&ywon+5O*U8YPj-W z!#D$2%Ua4}yFY8AB$JJ?+h#&SbFrz3g*|NCkigBX!GhXeqaLk0jK`d?PtKTAzX|EIkD|JJm# zRKt8x7ID92o>C|4#ncG+3-uAoIU$QfSt!`T_yrUAGyH@>xK^dufHTrsxx)sR%B`zh zHBqaUfT#DAL1RF|!mECjc3r=BpZm_lSigOCrCGtD-ONvuyI)Uw_T0a7Z>_g{d0sdJ zJi2j5i)@tc7aMp1uus@UL~HJc?yzCn#Oyb`WJXVq*n?j!*sJ0+*bxY-XmRuM;_ZIF zIDgF8x5RE^4E$p9B@Fg7?v@RvA7)f7WF0?)+rS?HX5_&rDGzbNi7dd08N4yW5q6^q z9x?VI3Z@_PqKGEHRf3T{cO#32+9=*%#puQvaOBF4DL`u(vf~IQCVC3O(23k7#ibvq z)1VOD=LlCd;vnNTu6LA zSSr_dX*fUNnZIq$NE4v`%_oGF-_@LSI%b~Q(qLV~X|!Z4MXtSkYHUs3B_lM4jaQ46 zg*Q~sND!rC#NFJYBUGC2&=G9cux@CcI&Z?QGNR|(l61+`!Mq{f+(yaVu=#iG4%aHU zi#LO5d>v<^V&ZY>@UPFbGjm%zon_Cmaj~#kczQu{f`Y@cN~YCHVixVDXH{ZLb$#rk z$FTDpOV*d|QHp6X_g^1lHNd^m*cXmZ288N7isdT(TX8Gt0GHyC@#^~^S48S^3$lf* z?6kFI8#s!RG=D4!FW+WPe=~U8qKJn?O|EW{OKco^?n=VhGY*wzPQxPyH2rd#9j~3U zTvOAtQiGtqLP$c{Ks4@vPvk#Pmkq(7_QtCAGIi7(fju}P0!$#lyl+=dRBG65oW6U8_$WgWAVPZ?Xm zpOlup4cex-mP*P>8_!1y^Tg}v{yKl9%z`v6r?fjv7GL|x&5g2Tb&DBfspjO4u01OQ z+N(_1Or?L()IV9KZl5vOxx|P~;Lm0Dmj_9Vja5?&l8dhoz^+X{<#UZlTilkvd1mpt zwg;@DOz51sTrIq5Q6`hkKqV`WNl_rJgi1p;>LmmRm6T%aetH0H_p&=@itT8+MbKSY z&D~ytbO&6^B%Fbh{kh(K$C^qzwJO089Pd(dK&ld1BUletZ}MHw3~6| zno>?0t73K%t5S%>&hkrC^fuWI_eXZV)vyUtWiL9c&_sFx{wmcUP?D#e z|6TUM`d0ZFygeLQVO29-8%#4|m+0BQY*=C)<88ak7DBbzXs9bqPohOs*Ege=StjQE zAwF>SU6Sqe!TG0Wrv~x^);GoPTWBC(QJKZjslMe++F0jLbuV{`x;}w9Hvtk1v#Hpk zM1AvK4pwp|-D~k;-1e)}ho#{1!|>FwQfbw#e@r?saPqv6HtHn#c0+>ej=1xT5x0qp z+gvKAxulfh;;C-(ypoL8VJCkITBKi%9d?RSrRPe6gSJgX)Asg~oJL(k*$#Iuha0$9 z{q1Cbv9f2dr&+P3Bo$lE6~|EsR=cCNJ%tAuO1j%^EN z`t3wg73F5s{1o)uat2uHsT(vXx_ft2=4X(_^7$UI_P6>gV}Ut=2XSL%!IZ2#saj`?0!0@>SFpjRFlm%jB$5DDdtltUH9El<#a$NpF1!_*6E&^&& zFf>(Fn0*EcS}GI!15j#x`oE6sIx&W{l6H_1k)GIqI+J#EMBZtEG6=x}HoD>{eoZ8x zhfOegVc5>qxR4T$-$S>}mv!>RiQa&;*GlJk0IgHjgnC5p6R!wd7P$eY7?Km)1wok{ z{G_LKlF*aB;1m7d!%$aO*`WaS2M~^QIhcPEKJNB2lomS5Y~erOD9{F!npIvE?$DBt zX=$c4TM23r4y5fxA9`?&daKXMQxK@kIl}8BQhvi5ye`OP{z42V#qpB~1S;ct9(fUco?`m>*LCaY&*!e_0A8h_c45RwQ53 z+ZtmC_9*}mJVqW%gAULS2(TN1SjMYG%AMzdIq>*kJ_pMO#Xg&vaXMV}(XE|k{gQuY zLSN$9y&3`3aDPPdijiDmEEi^&NWtk+$Yma>x9T0b=!Db1zc}W&u*_sKaCal{H@TKX zRSdvFkl5{7K2x&ZvOM9Kvc6$NuCBlYC28Zr5`ucqg0NaBs!syR3JT)P%U?NM zkC6J?3r__!LU%?M~a{I+ZIZ=u8+fKz;wmQ@TMtuYH}ac7swgm^LTqKgfi8WNLxQ&7inKncc((mLdOZEt4Kn^&E~iG!$GQG zZX3o;oKHtz2UIY(1k&JQN&+yT?#wgw6ZxAX^_x&0KttAzol(${nwkpSzIWkX@dmg! zyTsT)&RE_3mSusoxWgr*D-y$JdsrJi5uv;PG%F!(MgV(FC|7lgg{O%1RsWG!=oAb$ zEbU9}H)XXh??c*a&GAXmCq={{^UXZbjf$DqENg?L(Xfl^7yPIeDpejKA6}Ie;;LS> z&x$_JJAFCeP~^+pp1Y-7{bUi|%pJdAK2fO+S}EEJ#6$%bxnWFKztW}ppR$0}oTz1k zKP`7u@Bjd0|4XR&lcmWy*qS=%TmOrn{ja1XN>yDI`xw&)EKnpA5VCG?#aRlOo}kt| zv(em2uxb=zLcm{4jdFFA0G2>Ay^opLVvcQdesh!ERaWKS=@8dm` z$9(c>Yx^nMqs68i!gkVRQGEk!+aGNOdp6xsnggr_HxI%L=|j5ezorg&`?EtIR*VgH zO|?ic1S*=1RnD3Pc zi}gz?+V?R6nGc|aRknHP+Cp;+95P>@f0<|vENM?9+x|vzy-b>k3yrnQPw--+_sa0#`QT%UM4!w2eugw+vi5ZbTF;-tg)d z9&n*b7Ef=;DYm)H4m@jAt~fPONBJ$}44qeU&=VyFJ*+ZR&V9)sni;U2KOE&@ELp=; z10@sriLZPUNyD3Up+A16TvAntu2O?Zs(MGMV(IBA3q^$8-Y{GGJXLoKqr4idSffzV zFB#d*AZeoBG9mfK1^aM)G`Q?fzGe>2qGQyq^r#WjtTr&~uiPRzTog`GoaX{Q4MB=U zR-3;|BEss0JYDvZ9BjMKU5O04J@m}th2Ns|;U`3qi^BSW(4sbXX~yya(Zce9!8dD% zXs+^QATuC)%bXp~Nq6clpt*44_#rq%&-ww?f*R?gB*B7GTexfPr7}=6!NndrjQklDz+}q$6x+5NdOxYjs zEGp#aReEALvjB}VwB`}9GnN~M%R+46!3@@r&x#^-bzKTfM2$_hb!9$) |!MVlA< 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 c}t)RlBWI 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 literal 0 HcmV?d00001 diff --git a/settings/repository/edu.mit.broad/picard-private-parts-1954.xml b/settings/repository/edu.mit.broad/picard-private-parts-1959.xml similarity index 58% rename from settings/repository/edu.mit.broad/picard-private-parts-1954.xml rename to settings/repository/edu.mit.broad/picard-private-parts-1959.xml index c702fd6e5..e7c7e3a21 100644 --- a/settings/repository/edu.mit.broad/picard-private-parts-1954.xml +++ b/settings/repository/edu.mit.broad/picard-private-parts-1959.xml @@ -1,3 +1,3 @@ - + diff --git a/settings/repository/net.sf/picard-1.48.889.xml b/settings/repository/net.sf/picard-1.48.889.xml deleted file mode 100644 index 877687930..000000000 --- a/settings/repository/net.sf/picard-1.48.889.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/settings/repository/net.sf/picard-1.48.889.jar b/settings/repository/net.sf/picard-1.49.895.jar similarity index 95% rename from settings/repository/net.sf/picard-1.48.889.jar rename to settings/repository/net.sf/picard-1.49.895.jar index 1b725dde5da26bac05010bc371775cdb890c323c..3ee1f209056b2b0a973d478f5e1ecb1a4971a3c7 100644 GIT binary patch delta 18811 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 (-r<;2kc=Gm3dj>o7~J#BUKJ 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 an}-aP{n(RpaQCM2UD>L=9uFr? + + diff --git a/settings/repository/net.sf/sam-1.48.889.xml b/settings/repository/net.sf/sam-1.48.889.xml deleted file mode 100644 index 8046a0c02..000000000 --- a/settings/repository/net.sf/sam-1.48.889.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/settings/repository/net.sf/sam-1.48.889.jar b/settings/repository/net.sf/sam-1.49.895.jar similarity index 95% rename from settings/repository/net.sf/sam-1.48.889.jar rename to settings/repository/net.sf/sam-1.49.895.jar index 33ae4aa7d2e0652c767092e89fef9e93c92887f2..c55ab0b7274ad3a7f911d12050ec71c44f13b0f5 100644 GIT binary patch delta 7726 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 BJ{bT2 delta 7901 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 diff --git a/settings/repository/net.sf/sam-1.49.895.xml b/settings/repository/net.sf/sam-1.49.895.xml new file mode 100644 index 000000000..0436ce881 --- /dev/null +++ b/settings/repository/net.sf/sam-1.49.895.xml @@ -0,0 +1,3 @@ + + + From 4cf7a2af23b638fda353f5babd40e04d3d90e611 Mon Sep 17 00:00:00 2001 From: Mauricio Carneiro Date: Mon, 18 Jul 2011 23:25:21 -0400 Subject: [PATCH 24/41] Removed broad specific default paths so people from outside the broad can use it. --- .../queue/qscripts/RecalibrateBaseQualities.scala | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/RecalibrateBaseQualities.scala b/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/RecalibrateBaseQualities.scala index fca420816..f8218148e 100755 --- a/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/RecalibrateBaseQualities.scala +++ b/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/RecalibrateBaseQualities.scala @@ -20,14 +20,14 @@ class RecalibrateBaseQualities extends QScript { @Input(doc="input BAM file - or list of BAM files", shortName="i", required=true) var input: File = _ - @Input(doc="path to R resources folder inside the Sting repository", fullName="path_to_r", shortName="r", required=false) - var R: String = new File("/humgen/gsa-scr1/carneiro/stable/R") + @Input(doc="path to R resources folder inside the Sting repository", fullName="path_to_r", shortName="r", required=true) + var R: String = _ - @Input(doc="Reference fasta file", shortName="R", required=false) - var reference: File = new File("/seq/references/Homo_sapiens_assembly19/v1/Homo_sapiens_assembly19.fasta") + @Input(doc="Reference fasta file", shortName="R", required=true) + var reference: File = _ // new File("/seq/references/Homo_sapiens_assembly19/v1/Homo_sapiens_assembly19.fasta") - @Input(doc="dbsnp ROD to use (VCF)", shortName="D", required=false) - var dbSNP: File = new File("/humgen/gsa-hpprojects/GATK/data/dbsnp_132_b37.leftAligned.vcf") + @Input(doc="dbsnp ROD to use (VCF)", shortName="D", required=true) + var dbSNP: File = _ // new File("/humgen/gsa-hpprojects/GATK/data/dbsnp_132_b37.leftAligned.vcf") val queueLogDir: String = ".qlog/" var nContigs: Int = 0 From 2b465ab43b88072457a2c4bd3e69b74f1490062c Mon Sep 17 00:00:00 2001 From: Mauricio Carneiro Date: Mon, 18 Jul 2011 23:30:31 -0400 Subject: [PATCH 25/41] * added optional 'no validation' for the Data Processing pipeline. * some simplifications on the picard classes --- .../qscripts/DataProcessingPipeline.scala | 56 ++++++++++--------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/DataProcessingPipeline.scala b/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/DataProcessingPipeline.scala index d55b86d69..09a069102 100755 --- a/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/DataProcessingPipeline.scala +++ b/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/DataProcessingPipeline.scala @@ -72,6 +72,9 @@ class DataProcessingPipeline extends QScript { @Input(doc="Number of threads BWA should use", fullName="bwa_threads", shortName="bt", required=false) var bwaThreads: Int = 1 + @Input(doc="Dont perform validation on the BAM files", fullName="no_validation", shortName="nv", required=false) + var noValidation: Boolean = false + /**************************************************************************** * Global Variables @@ -242,7 +245,12 @@ class DataProcessingPipeline extends QScript { val preValidateLog = swapExt(bam, ".bam", ".pre.validation") val postValidateLog = swapExt(bam, ".bam", ".post.validation") - add(validate(bam, preValidateLog)) + // Validation is an optional step for the BAM file generated after + // alignment and the final bam file of the pipeline. + if (!noValidation) { + add(validate(bam, preValidateLog), + validate(recalBam, postValidateLog)) + } if (cleaningModel != ConsensusDeterminationModel.KNOWNS_ONLY) add(target(bam, targetIntervals)) @@ -253,8 +261,8 @@ class DataProcessingPipeline extends QScript { recal(dedupedBam, preRecalFile, recalBam), cov(recalBam, postRecalFile), analyzeCovariates(preRecalFile, preOutPath), - analyzeCovariates(postRecalFile, postOutPath), - validate(recalBam, postValidateLog)) + analyzeCovariates(postRecalFile, postOutPath)) + cohortList :+= recalBam } @@ -278,6 +286,13 @@ class DataProcessingPipeline extends QScript { this.isIntermediate = true } + // General arguments to non-GATK tools + trait ExternalCommonArgs extends CommandLineFunction { + this.memoryLimit = 4 + this.isIntermediate = true + } + + case class target (inBams: File, outIntervals: File) extends RealignerTargetCreator with CommandLineGATKArgs { if (cleaningModel != ConsensusDeterminationModel.KNOWNS_ONLY) this.input_file :+= inBams @@ -296,8 +311,8 @@ class DataProcessingPipeline extends QScript { this.targetIntervals = tIntervals this.out = outBam this.rodBind :+= RodBind("dbsnp", "VCF", dbSNP) - if (!indels.isEmpty) - this.rodBind :+= RodBind("indels", "VCF", indels) + if (!qscript.indels.isEmpty) + this.rodBind :+= RodBind("indels", "VCF", qscript.indels) this.consensusDeterminationModel = consensusDeterminationModel this.compress = 0 this.scatterCount = nContigs @@ -328,7 +343,6 @@ class DataProcessingPipeline extends QScript { this.isIntermediate = false this.analysisName = queueLogDir + outBam + ".recalibration" this.jobName = queueLogDir + outBam + ".recalibration" - } @@ -346,48 +360,41 @@ class DataProcessingPipeline extends QScript { this.jobName = queueLogDir + inRecalFile + ".analyze_covariates" } - case class dedup (inBam: File, outBam: File, metricsFile: File) extends MarkDuplicates { + case class dedup (inBam: File, outBam: File, metricsFile: File) extends MarkDuplicates with ExternalCommonArgs { this.input = List(inBam) this.output = outBam this.metrics = metricsFile - this.memoryLimit = 6 - this.isIntermediate = true this.analysisName = queueLogDir + outBam + ".dedup" this.jobName = queueLogDir + outBam + ".dedup" } - case class joinBams (inBams: List[File], outBam: File) extends MergeSamFiles { + case class joinBams (inBams: List[File], outBam: File) extends MergeSamFiles with ExternalCommonArgs { this.input = inBams this.output = outBam - this.memoryLimit = 4 - this.isIntermediate = true this.analysisName = queueLogDir + outBam + ".joinBams" this.jobName = queueLogDir + outBam + ".joinBams" } - case class sortSam (inSam: File, outBam: File, sortOrderP: SortOrder) extends SortSam { + case class sortSam (inSam: File, outBam: File, sortOrderP: SortOrder) extends SortSam with ExternalCommonArgs { this.input = List(inSam) this.output = outBam this.sortOrder = sortOrderP - this.memoryLimit = 4 - this.isIntermediate = true this.analysisName = queueLogDir + outBam + ".sortSam" this.jobName = queueLogDir + outBam + ".sortSam" } - case class validate (inBam: File, outLog: File) extends ValidateSamFile { + case class validate (inBam: File, outLog: File) extends ValidateSamFile with ExternalCommonArgs { this.input = List(inBam) this.output = outLog this.maxRecordsInRam = 100000 this.REFERENCE_SEQUENCE = qscript.reference - this.memoryLimit = 4 this.isIntermediate = false this.analysisName = queueLogDir + outLog + ".validate" this.jobName = queueLogDir + outLog + ".validate" } - case class addReadGroup (inBam: File, outBam: File, readGroup: ReadGroup) extends AddOrReplaceReadGroups { + case class addReadGroup (inBam: File, outBam: File, readGroup: ReadGroup) extends AddOrReplaceReadGroups with ExternalCommonArgs { this.input = List(inBam) this.output = outBam this.RGID = readGroup.id @@ -403,12 +410,7 @@ class DataProcessingPipeline extends QScript { this.jobName = queueLogDir + outBam + ".rg" } - trait BWACommonArgs extends CommandLineFunction { - this.memoryLimit = 4 - this.isIntermediate = true - } - - case class bwa_aln_se (inBam: File, outSai: File) extends CommandLineFunction with BWACommonArgs { + case class bwa_aln_se (inBam: File, outSai: File) extends CommandLineFunction with ExternalCommonArgs { @Input(doc="bam file to be aligned") var bam = inBam @Output(doc="output sai file") var sai = outSai def commandLine = bwaPath + " aln -t " + bwaThreads + " -q 5 " + reference + " -b " + bam + " > " + sai @@ -416,7 +418,7 @@ class DataProcessingPipeline extends QScript { this.jobName = queueLogDir + outSai + ".bwa_aln_se" } - case class bwa_aln_pe (inBam: File, outSai1: File, index: Int) extends CommandLineFunction with BWACommonArgs { + case class bwa_aln_pe (inBam: File, outSai1: File, index: Int) extends CommandLineFunction with ExternalCommonArgs { @Input(doc="bam file to be aligned") var bam = inBam @Output(doc="output sai file for 1st mating pair") var sai = outSai1 def commandLine = bwaPath + " aln -t " + bwaThreads + " -q 5 " + reference + " -b" + index + " " + bam + " > " + sai @@ -424,7 +426,7 @@ class DataProcessingPipeline extends QScript { this.jobName = queueLogDir + outSai1 + ".bwa_aln_pe1" } - case class bwa_sam_se (inBam: File, inSai: File, outBam: File) extends CommandLineFunction with BWACommonArgs { + case class bwa_sam_se (inBam: File, inSai: File, outBam: File) extends CommandLineFunction with ExternalCommonArgs { @Input(doc="bam file to be aligned") var bam = inBam @Input(doc="bwa alignment index file") var sai = inSai @Output(doc="output aligned bam file") var alignedBam = outBam @@ -433,7 +435,7 @@ class DataProcessingPipeline extends QScript { this.jobName = queueLogDir + outBam + ".bwa_sam_se" } - case class bwa_sam_pe (inBam: File, inSai1: File, inSai2:File, outBam: File) extends CommandLineFunction with BWACommonArgs { + case class bwa_sam_pe (inBam: File, inSai1: File, inSai2:File, outBam: File) extends CommandLineFunction with ExternalCommonArgs { @Input(doc="bam file to be aligned") var bam = inBam @Input(doc="bwa alignment index file for 1st mating pair") var sai1 = inSai1 @Input(doc="bwa alignment index file for 2nd mating pair") var sai2 = inSai2 From 7688bda1a63e2c50c906eab2bbd761f4125775c8 Mon Sep 17 00:00:00 2001 From: Mauricio Carneiro Date: Mon, 18 Jul 2011 23:39:47 -0400 Subject: [PATCH 26/41] better progress report for the DPP --- .../queue/qscripts/DataProcessingPipeline.scala | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/DataProcessingPipeline.scala b/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/DataProcessingPipeline.scala index 09a069102..b64ba8952 100755 --- a/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/DataProcessingPipeline.scala +++ b/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/DataProcessingPipeline.scala @@ -138,13 +138,22 @@ class DataProcessingPipeline extends QScript { } } + println("\n\n*** INPUT FILES ***\n") // Creating one file for each sample in the dataset val sampleBamFiles = scala.collection.mutable.Map.empty[String, File] for ((sample, flist) <- sampleTable) { + + println(sample + ":") + for (f <- flist) + println (f) + println() + val sampleFileName = new File(qscript.outputDir + qscript.projectName + "." + sample + ".bam") sampleBamFiles(sample) = sampleFileName add(joinBams(flist, sampleFileName)) } + println("*** INPUT FILES ***\n\n") + return sampleBamFiles.toMap } @@ -211,9 +220,6 @@ class DataProcessingPipeline extends QScript { // Generate a BAM file per sample joining all per lane files if necessary val sampleBamFiles: Map[String, File] = createSampleFiles(bams, realignedBams) - - println("nContigs: " + nContigs) - // Final output list of processed bam files var cohortList: List[File] = List() @@ -221,6 +227,7 @@ class DataProcessingPipeline extends QScript { println("\nFound the following samples: ") for ((sample, file) <- sampleBamFiles) println("\t" + sample + " -> " + file) + println("\n") // If this is a 'knowns only' indel realignment run, do it only once for all samples. val globalIntervals = new File(outputDir + projectName + ".intervals") From e6d306458c8882aa02724ebd591bd0ccc48b2af2 Mon Sep 17 00:00:00 2001 From: Guillermo del Angel Date: Tue, 19 Jul 2011 14:36:20 -0400 Subject: [PATCH 30/41] Merge bug fixes --- .../sting/gatk/walkers/variantutils/VariantsToTable.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java index 3fe626f77..39358dad5 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java @@ -24,11 +24,8 @@ package org.broadinstitute.sting.gatk.walkers.variantutils; -<<<<<<< HEAD import org.broadinstitute.sting.utils.MathUtils; import org.broadinstitute.sting.utils.variantcontext.VariantContext; -======= ->>>>>>> 9de6bab260a6bfca0aabf2c9d650dd2dad3ebe20 import org.broadinstitute.sting.commandline.Argument; import org.broadinstitute.sting.commandline.Output; import org.broadinstitute.sting.gatk.contexts.AlignmentContext; @@ -38,7 +35,6 @@ import org.broadinstitute.sting.gatk.walkers.Requires; import org.broadinstitute.sting.gatk.walkers.RodWalker; import org.broadinstitute.sting.utils.Utils; import org.broadinstitute.sting.utils.exceptions.UserException; -import org.broadinstitute.sting.utils.variantcontext.VariantContext; import org.broadinstitute.sting.utils.variantcontext.VariantContextUtils; import java.io.PrintStream; From 6181d1e4cbd585458139fba909bad28b46effbaf Mon Sep 17 00:00:00 2001 From: Guillermo del Angel Date: Tue, 19 Jul 2011 14:42:11 -0400 Subject: [PATCH 31/41] Fixed integration test for VariantsToTable: now the * in REF column is not output --- .../walkers/variantutils/VariantsToTableIntegrationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTableIntegrationTest.java diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTableIntegrationTest.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTableIntegrationTest.java old mode 100644 new mode 100755 index 72647c8e1..1db712353 --- a/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTableIntegrationTest.java +++ b/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTableIntegrationTest.java @@ -44,7 +44,7 @@ public class VariantsToTableIntegrationTest extends WalkerTest { @Test(enabled = true) public void testComplexVariantsToTable() { WalkerTestSpec spec = new WalkerTestSpec(variantsToTableCmd(" -AMD"), - Arrays.asList("b2a3712c1bfad8f1383ffada8b5017ba")); + Arrays.asList("e8f771995127b727fb433da91dd4ee98")); executeTest("testComplexVariantsToTable", spec).getFirst(); } From 07e716d23a7234743692f5e8a031611f7a72ca3d Mon Sep 17 00:00:00 2001 From: Christopher Hartl Date: Tue, 19 Jul 2011 15:21:47 -0400 Subject: [PATCH 32/41] PickSequenomProbes2 expanded functionality: lowercasing based on sequence uniqueness, preserving reference base prior to indel (not a part of the VC as I thought it was), masking deletion bases with 'N's, flanking insertion with 'N's, output is a fasta formatted file. Renamed to ValidationAmplicons since this is really not for picking sequenom probes, but for generating amplicon sequence from which other applications (like sequenom) can choose PCR primers. Moved from private to public. --- .../validation/ValidationAmplicons.java | 398 ++++++++++++++++++ 1 file changed, 398 insertions(+) create mode 100755 public/java/src/org/broadinstitute/sting/gatk/walkers/validation/ValidationAmplicons.java diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/validation/ValidationAmplicons.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/validation/ValidationAmplicons.java new file mode 100755 index 000000000..3a5213868 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/validation/ValidationAmplicons.java @@ -0,0 +1,398 @@ +package org.broadinstitute.sting.gatk.walkers.validation; + +import net.sf.picard.reference.ReferenceSequenceFileFactory; +import net.sf.samtools.SAMFileHeader; +import net.sf.samtools.SAMSequenceDictionary; +import org.broadinstitute.sting.alignment.Alignment; +import org.broadinstitute.sting.alignment.bwa.BWAConfiguration; +import org.broadinstitute.sting.alignment.bwa.BWTFiles; +import org.broadinstitute.sting.alignment.bwa.c.BWACAligner; +import org.broadinstitute.sting.commandline.Argument; +import org.broadinstitute.sting.utils.variantcontext.VariantContext; +import org.broadinstitute.sting.commandline.Output; +import org.broadinstitute.sting.gatk.contexts.AlignmentContext; +import org.broadinstitute.sting.gatk.contexts.ReferenceContext; +import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; +import org.broadinstitute.sting.gatk.refdata.features.table.TableFeature; +import org.broadinstitute.sting.gatk.walkers.*; +import org.broadinstitute.sting.utils.BaseUtils; +import org.broadinstitute.sting.utils.GenomeLoc; +import org.broadinstitute.sting.utils.Utils; + +import java.io.File; +import java.io.PrintStream; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; + +/** + * Created by IntelliJ IDEA. + * User: chartl + * Date: 6/13/11 + * Time: 2:12 PM + * To change this template use File | Settings | File Templates. + */ +@Requires(value={DataSource.REFERENCE}, referenceMetaData={@RMD(name="ProbeIntervals",type=TableFeature.class), +@RMD(name="ValidateAlleles",type=VariantContext.class),@RMD(name="MaskAlleles",type=VariantContext.class)}) +public class PickSequenomProbes2 extends RodWalker { + + @Argument(doc="Lower case SNPs rather than replacing with 'N'",fullName="lowerCaseSNPs",required=false) + boolean lowerCaseSNPs = false; + + @Argument(doc="Size of the virtual primer to use for lower-casing regions with low specificity",fullName="virtualPrimerSize",required=false) + int virtualPrimerSize = 20; + + @Argument(doc="Monomorphic sites in the mask file will be treated as filtered",fullName="filterMonomorphic",required=false) + boolean filterMonomorphic = false; + + GenomeLoc prevInterval; + GenomeLoc allelePos; + String probeName; + StringBuilder sequence; + StringBuilder rawSequence; + boolean sequenceInvalid; + List invReason; + int indelCounter; + + @Argument(fullName="target_reference",shortName="target_ref",doc="The reference to which reads in the source file should be aligned. Alongside this reference should sit index files " + + "generated by bwa index -d bwtsw. If unspecified, will default " + + "to the reference specified via the -R argument.",required=false) + private File targetReferenceFile = null; + + @Output + PrintStream out; + + BWACAligner aligner = null; + + private SAMFileHeader header = null; + + public void initialize() { + if(targetReferenceFile == null) + targetReferenceFile = getToolkit().getArguments().referenceFile; + BWTFiles bwtFiles = new BWTFiles(targetReferenceFile.getAbsolutePath()); + BWAConfiguration configuration = new BWAConfiguration(); + aligner = new BWACAligner(bwtFiles,configuration); + header = new SAMFileHeader(); + SAMSequenceDictionary referenceDictionary = + ReferenceSequenceFileFactory.getReferenceSequenceFile(targetReferenceFile).getSequenceDictionary(); + header.setSequenceDictionary(referenceDictionary); + header.setSortOrder(SAMFileHeader.SortOrder.unsorted); + } + + public Integer reduceInit() { + prevInterval = null; + sequence = null; + rawSequence = null; + sequenceInvalid = false; + probeName = null; + invReason = null; + indelCounter = 0; + return 0; + } + + public Integer map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { + if ( tracker == null || ! tracker.hasROD("ProbeIntervals")) { return null; } + + GenomeLoc interval = ((TableFeature) tracker.getReferenceMetaData("ProbeIntervals",true).get(0)).getLocation(); + //logger.debug(interval); + if ( prevInterval == null || ! interval.equals(prevInterval) ) { + // we're in a new interval, we should: + // 1) print out previous data + // 2) reset internal data + // 3) instantiate traversal of this interval + + // step 1: + if ( prevInterval != null ) { + // there was a previous interval + validateSequence(); // ensure the sequence in the region is valid + // next line removed in favor of the one after + //lowerRepeats(); // change repeats in sequence to lower case + lowerNonUniqueSegments(); + print(); // print out the fasta sequence + } + + // step 2: + prevInterval = interval; + allelePos = null; + sequence = new StringBuilder(); + rawSequence = new StringBuilder(); + sequenceInvalid = false; + invReason = new LinkedList(); + logger.debug(Utils.join("\t",((TableFeature) tracker.getReferenceMetaData("ProbeIntervals",true).get(0)).getAllValues())); + probeName = ((TableFeature) tracker.getReferenceMetaData("ProbeIntervals",true).get(0)).getValue(1); + indelCounter = 0; + } + + // step 3 (or 1 if not new): + // build up the sequence + + VariantContext mask = tracker.getVariantContext(ref,"MaskAlleles",ref.getLocus()); + VariantContext validate = tracker.getVariantContext(ref,"ValidateAlleles",ref.getLocus()); + + if ( mask == null && validate == null ) { + if ( indelCounter > 0 ) { + sequence.append('N'); + indelCounter--; + } else { + sequence.append(Character.toUpperCase((char) ref.getBase())); + } + rawSequence.append(Character.toUpperCase((char) ref.getBase())); + } else if ( validate != null ) { + // doesn't matter if there's a mask here too -- this is what we want to validate + if ( validate.isFiltered() ) { + logger.warn("You are attempting to validate a filtered site. Why are you attempting to validate a filtered site? You should not be attempting to validate a filtered site."); + sequenceInvalid = true; + invReason.add("SITE_IS_FILTERED"); + } + if ( validate.isIndel() ) { + sequence.append(Character.toUpperCase((char)ref.getBase())); + rawSequence.append(Character.toUpperCase((char)ref.getBase())); + } + sequence.append('['); + sequence.append(validate.getAlternateAllele(0).toString()); + sequence.append('/'); + sequence.append(validate.getReference().toString()); + sequence.append(']'); + // do this to the raw sequence to -- the indeces will line up that way + rawSequence.append('['); + rawSequence.append(validate.getAlternateAllele(0).getBaseString()); + rawSequence.append('/'); + rawSequence.append(validate.getReference().getBaseString()); + rawSequence.append(']'); + allelePos = ref.getLocus(); + if ( indelCounter > 0 ) { + logger.warn("An indel event overlaps the event to be validated. This completely invalidates the probe."); + sequenceInvalid = true; + invReason.add("INDEL_OVERLAPS_VALIDATION_SITE"); + if ( validate.isSNP() ) { + indelCounter--; + } else { + indelCounter -= validate.getEnd()-validate.getStart(); + } + } + } else /* (mask != null && validate == null ) */ { + if ( ! mask.isSNP() && ! mask.isFiltered() && ( ! filterMonomorphic || ! mask.isMonomorphic() )) { + logger.warn("Mask Variant Context on the following warning line is not a SNP. Currently we can only mask out SNPs. This probe will not be designed."); + logger.warn(String.format("%s:%d-%d\t%s\t%s",mask.getChr(),mask.getStart(),mask.getEnd(),mask.isInsertion() ? "INS" : "DEL", Utils.join(",",mask.getAlleles()))); + sequenceInvalid = true; + invReason.add(mask.isInsertion() ? "INSERTION" : "DELETION"); + // note: indelCounter could be > 0 (could have small deletion within larger one). This always selects + // the larger event. + int indelCounterNew = mask.isInsertion() ? 2 : mask.getEnd()-mask.getStart(); + if ( indelCounterNew > indelCounter ) { + indelCounter = indelCounterNew; + } + //sequence.append((char) ref.getBase()); + //sequence.append(mask.isInsertion() ? 'I' : 'D'); + sequence.append("N"); + indelCounter--; + rawSequence.append(Character.toUpperCase((char) ref.getBase())); + } else if ( indelCounter > 0 ) { + // previous section resets the indel counter. Doesn't matter if there's a SNP underlying this, we just want to append an 'N' and move on. + sequence.append('N'); + indelCounter--; + rawSequence.append(Character.toUpperCase((char)ref.getBase())); + } else if ( ! mask.isFiltered() && ( ! filterMonomorphic || ! mask.isMonomorphic() )){ + logger.debug("SNP in mask found at " + ref.getLocus().toString()); + + if ( lowerCaseSNPs ) { + sequence.append(Character.toLowerCase((char) ref.getBase())); + } else { + sequence.append((char) BaseUtils.N); + } + + rawSequence.append(Character.toUpperCase((char) ref.getBase())); + } else if ( mask.isSNP() ) { + logger.debug("SNP in mask found at "+ref.getLocus().toString()+" but was either filtered or monomorphic"); + sequence.append((Character.toUpperCase((char) ref.getBase()))); + rawSequence.append(Character.toUpperCase((char) ref.getBase())); + } + } + + return 1; + } + + public Integer reduce(Integer i, Integer j) { + return 0; + } + + public void onTraversalDone(Integer fin ) { + validateSequence(); + lowerNonUniqueSegments(); + print(); + } + + public void validateSequence() { + // code for ensuring primer sequence is valid goes here + + // validate that there are no masked sites near to the variant site + String seq = sequence.toString(); + int start = seq.indexOf('[') - 4; + int end = seq.indexOf(']') + 5; + + if ( start < 50 ) { + logger.warn("There is not enough sequence before the start position of the probed allele for adequate probe design. This site will not be designed."); + sequenceInvalid = true; + invReason.add("START_TOO_CLOSE"); + } else if ( end > seq.length() - 50 ) { + logger.warn("There is not enough sequence after the end position of the probed allele fore adequate probe design. This site will not be desinged. "); + sequenceInvalid = true; + invReason.add("END_TOO_CLOSE"); + } else { + boolean maskNearVariantSite = false; + for ( int i = start; i < end; i++ ) { + maskNearVariantSite |= (seq.charAt(i) == 'N' || Character.isLowerCase(seq.charAt(i))); + } + + if ( maskNearVariantSite ) { + logger.warn("There is one (or more) mask variants within 4 basepair of the variant given for validation. This site will not be designed."); + sequenceInvalid = true; + invReason.add("VARIANT_TOO_NEAR_PROBE"); + } + } + + if ( seq.indexOf("[") != seq.lastIndexOf("[") ) { + logger.warn("Multiple probe variants were found within this interval. Please fix the definitions of the intervals so they do not overlap."); + sequenceInvalid = true; + invReason.add("MULTIPLE_PROBES"); + } + + if ( seq.indexOf("[") < 0 ) { + logger.warn("No variants in region were found. This site will not be designed."); + sequenceInvalid = true; + invReason.add("NO_VARIANTS_FOUND"); + } + } + + public void lowerNonUniqueSegments() { + if ( ! invReason.contains("MULTIPLE_PROBES") && !invReason.contains("NO_VARIANTS_FOUND") ) { + String leftFlank = rawSequence.toString().split("\\[")[0]; + String rightFlank = rawSequence.toString().split("\\]")[1]; + List badLeft = getBadIndeces(leftFlank); + List badRight = getBadIndeces(rightFlank); + // propagate lowercases into the printed sequence + for ( int idx = 0; idx < leftFlank.length(); idx++ ) { + while ( badLeft.size() > 0 && idx > badLeft.get(0) + virtualPrimerSize ) { + badLeft.remove(0); + } + + if ( badLeft.size() > 0 && badLeft.get(0) <= idx && idx <= badLeft.get(0) + virtualPrimerSize ) { + sequence.setCharAt(idx,Character.toLowerCase(sequence.charAt(idx))); + } + } + + int offset = 1 + rawSequence.indexOf("]"); + for ( int i= 0; i < rightFlank.length(); i++ ) { + int idx = i + offset; + while ( badRight.size() > 0 && i > badRight.get(0) + virtualPrimerSize ) { + //logger.debug("Removing "+badRight.get(0)+" because "+(badRight.get(0)+virtualPrimerSize)+" < "+i); + badRight.remove(0); + } + + if ( badRight.size() > 0 && badRight.get(0) <= i && i <= badRight.get(0) + virtualPrimerSize ) { + //logger.debug("Resetting character on right flank: "+idx+" "+i+" offset="+offset); + //logger.debug(sequence); + sequence.setCharAt(idx,Character.toLowerCase(sequence.charAt(idx))); + //logger.debug(sequence); + } + } + } + } + + private List getBadIndeces(String sequence) { + + List badLeftIndeces = new ArrayList(sequence.length()-virtualPrimerSize); + for ( int i = 0; i < sequence.length()-virtualPrimerSize ; i++ ) { + String toAlign = sequence.substring(i,i+virtualPrimerSize); + Iterable allAlignments = aligner.getAllAlignments(toAlign.getBytes()); + for ( Alignment[] alignments : allAlignments ) { + if ( alignments.length > 1 ) { + if ( alignments[0].getMappingQuality() == 0 ) { + // this region is bad -- multiple MQ alignments + badLeftIndeces.add(i); + } + } + } + } + + return badLeftIndeces; + } + + + /** + * Note- this is an old function - a proxy for identifying regions with low specificity to genome. Saved in case the alignment-based version + * turns out to be worse than just doing a simple repeat-lowering method. + */ + public void lowerRepeats() { + // convert to lower case low-complexity repeats, e.g. tandem k-mers + final int K_LIM = 8; + String seq = sequence.toString(); + StringBuilder newSequence = new StringBuilder(); + int start_pos = 0; + while( start_pos < seq.length() ) { + boolean broke = false; + for ( int length = K_LIM; length > 1; length -- ) { + //logger.debug(String.format("start1: %d end1: %d start2: %d end2: %d str: %d",start_pos,start_pos+length,start_pos+length,start_pos+2*length,seq.length())); + if ( start_pos + 2*length> seq.length() ) { + continue; + } + if ( equalsIgnoreNs(seq.substring(start_pos,start_pos+length),seq.substring(start_pos+length,start_pos+2*length)) ) { + newSequence.append(seq.substring(start_pos,start_pos+length).toLowerCase()); + newSequence.append(seq.substring(start_pos+length,start_pos+2*length).toLowerCase()); + start_pos += 2*length; + broke = true; + break; + } + } + + if ( ! broke ) { + newSequence.append(seq.substring(start_pos,start_pos+1)); + start_pos++; + } + + } + + if ( seq.indexOf("[") != seq.lastIndexOf("[") ) { + return; + } + + sequence = newSequence; + } + + public boolean equalsIgnoreNs(String one, String two) { + if ( one.length() != two.length() ) { return false; } + for ( int idx = 0; idx < one.length(); idx++ ) { + if ( Character.toUpperCase(one.charAt(idx)) != Character.toUpperCase(two.charAt(idx)) ) { + if ( Character.toUpperCase(one.charAt(idx)) != 'N' && Character.toUpperCase(two.charAt(idx)) != 'N' ) { + return false; + } + } + } + + //logger.debug(String.format("one: %s two: %s",one,two)); + + return true; + } + + public void print() { + String valid; + if ( sequenceInvalid ) { + valid = ""; + while ( invReason.size() > 0 ) { + String reason = invReason.get(0); + invReason.remove(reason); + int num = 1; + while ( invReason.contains(reason) ) { + num++; + invReason.remove(reason); + } + valid += String.format("%s=%d,",reason,num); + } + } else { + valid = "Valid"; + } + + String seqIdentity = sequence.toString().replace('n', 'N').replace('i', 'I').replace('d', 'D'); + out.printf(">%s %s %s%n%s%n", allelePos != null ? allelePos.toString() : "multiple", valid, probeName, seqIdentity); + } +} From baae381acb89ab6b57ab05d47e1cc182ecde2db1 Mon Sep 17 00:00:00 2001 From: David Roazen Date: Tue, 19 Jul 2011 18:38:53 -0400 Subject: [PATCH 35/41] Revert "Merge branch 'master' of ssh://gsa1/humgen/gsa-scr1/gsa-engineering/git/unstable" This reverts commit 039a6bb01f345322ce2be50ae3634308bb24e77e, reversing changes made to b9c9973d1c638dfc9f8c19b5eb845e99844f9d29. --- .../sting/gatk/report/GATKReport.java | 6 +- .../sting/gatk/report/GATKReportTable.java | 26 ++- .../sting/gatk/walkers/PrintReadsWalker.java | 44 ++++- .../gatk/walkers/annotator/IndelType.java | 24 ++- .../walkers/diffengine/BAMDiffableReader.java | 10 +- .../gatk/walkers/diffengine/DiffEngine.java | 38 ++-- .../walkers/diffengine/DiffObjectsWalker.java | 1 + .../walkers/diffengine/VCFDiffableReader.java | 8 +- .../walkers/variantutils/CombineVariants.java | 23 ++- .../walkers/variantutils/SelectVariants.java | 177 ++++++++++++++---- .../walkers/variantutils/VariantsToTable.java | 46 ++++- .../variantcontext/VariantContextUtils.java | 60 ++++-- .../DiffObjectsIntegrationTest.java | 4 +- .../CombineVariantsIntegrationTest.java | 6 +- .../VariantsToTableIntegrationTest.java | 2 +- public/packages/PicardPrivate.xml | 2 + .../qscripts/DataProcessingPipeline.scala | 60 +++--- .../qscripts/RecalibrateBaseQualities.scala | 12 +- .../picard-private-parts-1954.jar | Bin 36047 -> 0 bytes .../picard-private-parts-1954.xml~ | 3 - .../picard-private-parts-1959.jar | Bin 0 -> 347579 bytes ...1954.xml => picard-private-parts-1959.xml} | 2 +- .../repository/net.sf/picard-1.48.889.xml | 3 - ...icard-1.48.889.jar => picard-1.49.895.jar} | Bin 1106870 -> 1106752 bytes .../repository/net.sf/picard-1.49.895.xml | 3 + settings/repository/net.sf/sam-1.48.889.xml | 3 - .../{sam-1.48.889.jar => sam-1.49.895.jar} | Bin 536180 -> 536187 bytes settings/repository/net.sf/sam-1.49.895.xml | 3 + 28 files changed, 415 insertions(+), 151 deletions(-) mode change 100644 => 100755 public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTableIntegrationTest.java delete mode 100644 settings/repository/edu.mit.broad/picard-private-parts-1954.jar delete mode 100644 settings/repository/edu.mit.broad/picard-private-parts-1954.xml~ create mode 100644 settings/repository/edu.mit.broad/picard-private-parts-1959.jar rename settings/repository/edu.mit.broad/{picard-private-parts-1954.xml => picard-private-parts-1959.xml} (58%) delete mode 100644 settings/repository/net.sf/picard-1.48.889.xml rename settings/repository/net.sf/{picard-1.48.889.jar => picard-1.49.895.jar} (95%) create mode 100644 settings/repository/net.sf/picard-1.49.895.xml delete mode 100644 settings/repository/net.sf/sam-1.48.889.xml rename settings/repository/net.sf/{sam-1.48.889.jar => sam-1.49.895.jar} (95%) create mode 100644 settings/repository/net.sf/sam-1.49.895.xml diff --git a/public/java/src/org/broadinstitute/sting/gatk/report/GATKReport.java b/public/java/src/org/broadinstitute/sting/gatk/report/GATKReport.java index f4c565318..59d496828 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/report/GATKReport.java +++ b/public/java/src/org/broadinstitute/sting/gatk/report/GATKReport.java @@ -100,7 +100,11 @@ public class GATKReport { * @param tableDescription the description of the table */ public void addTable(String tableName, String tableDescription) { - GATKReportTable table = new GATKReportTable(tableName, tableDescription); + addTable(tableName, tableDescription, true); + } + + public void addTable(String tableName, String tableDescription, boolean sortByPrimaryKey) { + GATKReportTable table = new GATKReportTable(tableName, tableDescription, sortByPrimaryKey); tables.put(tableName, table); } diff --git a/public/java/src/org/broadinstitute/sting/gatk/report/GATKReportTable.java b/public/java/src/org/broadinstitute/sting/gatk/report/GATKReportTable.java index 0e503f92a..f7ea25696 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/report/GATKReportTable.java +++ b/public/java/src/org/broadinstitute/sting/gatk/report/GATKReportTable.java @@ -3,9 +3,7 @@ package org.broadinstitute.sting.gatk.report; import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; import java.io.PrintStream; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.TreeSet; +import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -96,8 +94,9 @@ public class GATKReportTable { private String tableDescription; private String primaryKeyName; - private TreeSet primaryKeyColumn; + private Collection primaryKeyColumn; private boolean primaryKeyDisplay; + boolean sortByPrimaryKey = true; private LinkedHashMap columns; @@ -121,12 +120,17 @@ public class GATKReportTable { * @param tableDescription the description of the table */ public GATKReportTable(String tableName, String tableDescription) { - if (!isValidName(tableName)) { + this(tableName, tableDescription, true); + } + + public GATKReportTable(String tableName, String tableDescription, boolean sortByPrimaryKey) { + if (!isValidName(tableName)) { throw new ReviewedStingException("Attempted to set a GATKReportTable name of '" + tableName + "'. GATKReportTable names must be purely alphanumeric - no spaces or special characters are allowed."); } this.tableName = tableName; this.tableDescription = tableDescription; + this.sortByPrimaryKey = sortByPrimaryKey; columns = new LinkedHashMap(); } @@ -137,20 +141,14 @@ public class GATKReportTable { * @param primaryKeyName the name of the primary key column */ public void addPrimaryKey(String primaryKeyName) { - if (!isValidName(primaryKeyName)) { - throw new ReviewedStingException("Attempted to set a GATKReportTable primary key name of '" + primaryKeyName + "'. GATKReportTable primary key names must be purely alphanumeric - no spaces or special characters are allowed."); - } - - this.primaryKeyName = primaryKeyName; - - primaryKeyColumn = new TreeSet(); - primaryKeyDisplay = true; + addPrimaryKey(primaryKeyName, true); } /** * Add an optionally visible primary key column. This becomes the unique identifier for every column in the table, and will always be printed as the first column. * * @param primaryKeyName the name of the primary key column + * @param display should this primary key be displayed? */ public void addPrimaryKey(String primaryKeyName, boolean display) { if (!isValidName(primaryKeyName)) { @@ -159,7 +157,7 @@ public class GATKReportTable { this.primaryKeyName = primaryKeyName; - primaryKeyColumn = new TreeSet(); + primaryKeyColumn = sortByPrimaryKey ? new TreeSet() : new LinkedList(); primaryKeyDisplay = display; } diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java index a189c00b5..57ea5166a 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java @@ -30,10 +30,16 @@ import net.sf.samtools.SAMReadGroupRecord; import net.sf.samtools.SAMRecord; import org.broadinstitute.sting.commandline.Argument; import org.broadinstitute.sting.commandline.Output; -import org.broadinstitute.sting.gatk.contexts.ReferenceContext; -import org.broadinstitute.sting.gatk.refdata.ReadMetaDataTracker; +import org.broadinstitute.sting.utils.SampleUtils; import org.broadinstitute.sting.utils.baq.BAQ; +import java.io.File; +import java.util.Collection; +import java.util.Set; +import java.util.TreeSet; + +import org.broadinstitute.sting.gatk.contexts.ReferenceContext; +import org.broadinstitute.sting.gatk.refdata.ReadMetaDataTracker; /** * Renders, in SAM/BAM format, all reads from the input data set in the order in which they appear * in the input file. It can dynamically merge the contents of multiple input BAM files, resulting @@ -52,6 +58,13 @@ public class PrintReadsWalker extends ReadWalker { String platform = null; // E.g. ILLUMINA, 454 @Argument(fullName = "number", shortName = "n", doc="Print the first n reads from the file, discarding the rest", required = false) int nReadsToPrint = -1; + @Argument(fullName="sample_file", shortName="sf", doc="File containing a list of samples (one per line). Can be specified multiple times", required=false) + public Set sampleFiles; + @Argument(fullName="sample_name", shortName="sn", doc="Sample name to be included in the analysis. Can be specified multiple times.", required=false) + public Set sampleNames; + + private TreeSet samplesToChoose = new TreeSet(); + private boolean NO_SAMPLES_SPECIFIED = false; /** * The initialize function. @@ -59,6 +72,17 @@ public class PrintReadsWalker extends ReadWalker { public void initialize() { if ( platform != null ) platform = platform.toUpperCase(); + + Collection samplesFromFile = SampleUtils.getSamplesFromFiles(sampleFiles); + samplesToChoose.addAll(samplesFromFile); + + if (sampleNames != null) + samplesToChoose.addAll(sampleNames); + + if(samplesToChoose.isEmpty()) { + NO_SAMPLES_SPECIFIED = true; + } + } /** @@ -85,6 +109,22 @@ public class PrintReadsWalker extends ReadWalker { if ( readPlatformAttr == null || !readPlatformAttr.toString().toUpperCase().contains(platform)) return false; } + if (!NO_SAMPLES_SPECIFIED ) { + // user specified samples to select + String readSample = read.getReadGroup().getSample(); + boolean found = false; + for (String sampleSelected : samplesToChoose) { + if (readSample.equalsIgnoreCase(sampleSelected)) { + found = true; + break; + } + + } + + if (!found) + return false; + } + // check if we've reached the output limit if ( nReadsToPrint == 0 ) { diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/IndelType.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/IndelType.java index 12b48473d..2fd62ddf3 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/IndelType.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/IndelType.java @@ -24,11 +24,27 @@ public class IndelType implements InfoFieldAnnotation, ExperimentalAnnotation { public Map annotate(RefMetaDataTracker tracker, ReferenceContext ref, Map stratifiedContexts, VariantContext vc) { int run; - if ( vc.isIndel() && vc.isBiallelic() ) { + if (vc.isMixed()) { + Map map = new HashMap(); + map.put(getKeyNames().get(0), String.format("%s", "MIXED")); + return map; + + } + else if ( vc.isIndel() ) { String type=""; - ArrayList inds = IndelUtils.findEventClassificationIndex(vc, ref); - for (int k : inds) { - type = type+ IndelUtils.getIndelClassificationName(k)+"."; + if (!vc.isBiallelic()) + type = "MULTIALLELIC_INDEL"; + else { + if (vc.isInsertion()) + type = "INS."; + else if (vc.isDeletion()) + type = "DEL."; + else + type = "OTHER."; + ArrayList inds = IndelUtils.findEventClassificationIndex(vc, ref); + for (int k : inds) { + type = type+ IndelUtils.getIndelClassificationName(k)+"."; + } } Map map = new HashMap(); map.put(getKeyNames().get(0), String.format("%s", type)); diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/diffengine/BAMDiffableReader.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/diffengine/BAMDiffableReader.java index 15b16ca6b..a1c043365 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/diffengine/BAMDiffableReader.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/diffengine/BAMDiffableReader.java @@ -29,9 +29,7 @@ import net.sf.samtools.SAMRecord; import net.sf.samtools.SAMRecordIterator; import net.sf.samtools.util.BlockCompressedInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; +import java.io.*; import java.util.Arrays; @@ -102,8 +100,10 @@ public class BAMDiffableReader implements DiffableReader { final byte[] BAM_MAGIC = "BAM\1".getBytes(); final byte[] buffer = new byte[BAM_MAGIC.length]; try { - FileInputStream fstream = new FileInputStream(file); - new BlockCompressedInputStream(fstream).read(buffer,0,BAM_MAGIC.length); + InputStream fstream = new BufferedInputStream(new FileInputStream(file)); + if ( !BlockCompressedInputStream.isValidFile(fstream) ) + return false; + new BlockCompressedInputStream(fstream).read(buffer, 0, BAM_MAGIC.length); return Arrays.equals(buffer, BAM_MAGIC); } catch ( IOException e ) { return false; diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/diffengine/DiffEngine.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/diffengine/DiffEngine.java index e3910ef11..89e20dad1 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/diffengine/DiffEngine.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/diffengine/DiffEngine.java @@ -143,7 +143,7 @@ public class DiffEngine { * Not that only pairs of the same length are considered as potentially equivalent * * @param params determines how we display the items - * @param diffs + * @param diffs the list of differences to summarize */ public void reportSummarizedDifferences(List diffs, SummaryReportParams params ) { printSummaryReport(summarizeDifferences(diffs), params ); @@ -207,14 +207,7 @@ public class DiffEngine { } protected void printSummaryReport(List sortedSummaries, SummaryReportParams params ) { - GATKReport report = new GATKReport(); - final String tableName = "diffences"; - report.addTable(tableName, "Summarized differences between the master and test files.\nSee http://www.broadinstitute.org/gsa/wiki/index.php/DiffEngine for more information"); - GATKReportTable table = report.getTable(tableName); - table.addPrimaryKey("Difference", true); - table.addColumn("NumberOfOccurrences", 0); - table.addColumn("SpecificDifference", 0); - + List toShow = new ArrayList(); int count = 0, count1 = 0; for ( Difference diff : sortedSummaries ) { if ( diff.getCount() < params.minSumDiffToShow ) @@ -230,10 +223,26 @@ public class DiffEngine { break; } - table.set(diff.getPath(), "NumberOfOccurrences", diff.getCount()); - table.set(diff.getPath(), "SpecificDifference", diff.valueDiffString()); + toShow.add(diff); } + // if we want it in descending order, reverse the list + if ( ! params.descending ) { + Collections.reverse(toShow); + } + + // now that we have a specific list of values we want to show, display them + GATKReport report = new GATKReport(); + final String tableName = "diffences"; + report.addTable(tableName, "Summarized differences between the master and test files.\nSee http://www.broadinstitute.org/gsa/wiki/index.php/DiffEngine for more information", false); + GATKReportTable table = report.getTable(tableName); + table.addPrimaryKey("Difference", true); + table.addColumn("NumberOfOccurrences", 0); + table.addColumn("ExampleDifference", 0); + for ( Difference diff : toShow ) { + table.set(diff.getPath(), "NumberOfOccurrences", diff.getCount()); + table.set(diff.getPath(), "ExampleDifference", diff.valueDiffString()); + } table.write(params.out); } @@ -252,7 +261,7 @@ public class DiffEngine { * commonPostfixLength: how many parts are shared at the end, suppose its 2 * We want to create a string *.*.C.D * - * @param parts + * @param parts the separated path values [above without .] * @param commonPostfixLength * @return */ @@ -351,6 +360,7 @@ public class DiffEngine { int maxItemsToDisplay = 0; int maxCountOneItems = 0; int minSumDiffToShow = 0; + boolean descending = true; public SummaryReportParams(PrintStream out, int maxItemsToDisplay, int maxCountOneItems, int minSumDiffToShow) { this.out = out; @@ -358,5 +368,9 @@ public class DiffEngine { this.maxCountOneItems = maxCountOneItems; this.minSumDiffToShow = minSumDiffToShow; } + + public void setDescending(boolean descending) { + this.descending = descending; + } } } diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/diffengine/DiffObjectsWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/diffengine/DiffObjectsWalker.java index 8e362dcc4..fba6549fb 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/diffengine/DiffObjectsWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/diffengine/DiffObjectsWalker.java @@ -112,6 +112,7 @@ public class DiffObjectsWalker extends RodWalker { } DiffEngine.SummaryReportParams params = new DiffEngine.SummaryReportParams(out, MAX_DIFFS, MAX_COUNT1_DIFFS, minCountForDiff); + params.setDescending(false); diffEngine.reportSummarizedDifferences(diffs, params); } } \ No newline at end of file diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/diffengine/VCFDiffableReader.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/diffengine/VCFDiffableReader.java index df2a5cda1..77a992ce0 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/diffengine/VCFDiffableReader.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/diffengine/VCFDiffableReader.java @@ -72,13 +72,19 @@ public class VCFDiffableReader implements DiffableReader { } String line = lineReader.readLine(); - int count = 0; + int count = 0, nRecordsAtPos = 1; + String prevName = ""; while ( line != null ) { if ( count++ > maxElementsToRead && maxElementsToRead != -1) break; VariantContext vc = (VariantContext)vcfCodec.decode(line); String name = vc.getChr() + ":" + vc.getStart(); + if ( name.equals(prevName) ) { + name += "_" + ++nRecordsAtPos; + } else { + prevName = name; + } DiffNode vcRoot = DiffNode.empty(name, root); // add fields diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariants.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariants.java index 837f352f8..9c2a520ef 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariants.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariants.java @@ -25,6 +25,7 @@ package org.broadinstitute.sting.gatk.walkers.variantutils; +import org.apache.poi.hpsf.Variant; import org.broadinstitute.sting.commandline.Argument; import org.broadinstitute.sting.commandline.Hidden; import org.broadinstitute.sting.commandline.Output; @@ -149,7 +150,7 @@ public class CombineVariants extends RodWalker { // get all of the vcf rods at this locus // Need to provide reference bases to simpleMerge starting at current locus - Collection vcs = tracker.getAllVariantContexts(ref, null,context.getLocation(), true, false); + Collection vcs = tracker.getAllVariantContexts(ref, null, context.getLocation(), true, false); if ( sitesOnlyVCF ) { vcs = VariantContextUtils.sitesOnlyVariantContexts(vcs); @@ -172,17 +173,25 @@ public class CombineVariants extends RodWalker { if (minimumN > 1 && (vcs.size() - numFilteredRecords < minimumN)) return 0; - VariantContext mergedVC; + List mergedVCs = new ArrayList(); if ( master ) { - mergedVC = VariantContextUtils.masterMerge(vcs, "master"); + mergedVCs.add(VariantContextUtils.masterMerge(vcs, "master")); } else { - mergedVC = VariantContextUtils.simpleMerge(getToolkit().getGenomeLocParser(),vcs, priority, filteredRecordsMergeType, - genotypeMergeOption, true, printComplexMerges, ref.getBase(), SET_KEY, filteredAreUncalled, MERGE_INFO_WITH_MAX_AC); + Map> VCsByType = VariantContextUtils.separateVariantContextsByType(vcs); + // iterate over the types so that it's deterministic + for ( VariantContext.Type type : VariantContext.Type.values() ) { + if ( VCsByType.containsKey(type) ) + mergedVCs.add(VariantContextUtils.simpleMerge(getToolkit().getGenomeLocParser(), VCsByType.get(type), + priority, filteredRecordsMergeType, genotypeMergeOption, true, printComplexMerges, + ref.getBase(), SET_KEY, filteredAreUncalled, MERGE_INFO_WITH_MAX_AC)); + } } - //out.printf(" merged => %s%nannotated => %s%n", mergedVC, annotatedMergedVC); + for ( VariantContext mergedVC : mergedVCs ) { + // only operate at the start of events + if ( mergedVC == null ) + continue; - if ( mergedVC != null ) { // only operate at the start of events HashMap attributes = new HashMap(mergedVC.getAttributes()); // re-compute chromosome counts VariantContextUtils.calculateChromosomeCounts(mergedVC, attributes, false); diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java index 1db692e9f..ac6797609 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariants.java @@ -24,6 +24,16 @@ package org.broadinstitute.sting.gatk.walkers.variantutils; +import org.broadinstitute.sting.commandline.Hidden; +import org.broadinstitute.sting.commandline.Input; +import org.broadinstitute.sting.utils.MathUtils; +import org.broadinstitute.sting.utils.codecs.vcf.*; +import org.broadinstitute.sting.utils.exceptions.UserException; +import org.broadinstitute.sting.utils.text.XReadLines; +import org.broadinstitute.sting.utils.variantcontext.*; +import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; +import org.broadinstitute.sting.utils.MendelianViolation; +import org.broadinstitute.sting.utils.variantcontext.VariantContext; import org.broadinstitute.sting.commandline.Argument; import org.broadinstitute.sting.commandline.Hidden; import org.broadinstitute.sting.commandline.Output; @@ -44,6 +54,9 @@ import org.broadinstitute.sting.utils.variantcontext.VariantContext; import org.broadinstitute.sting.utils.variantcontext.VariantContextUtils; import java.io.File; +import java.io.FileNotFoundException; +import java.io.PrintStream; +import java.lang.annotation.AnnotationFormatError; import java.util.*; /** @@ -91,6 +104,13 @@ public class SelectVariants extends RodWalker { @Argument(fullName="keepAFSpectrum", shortName="keepAF", doc="Don't include loci found to be non-variant after the subsetting procedure.", required=false) private boolean KEEP_AF_SPECTRUM = false; + @Hidden + @Argument(fullName="afFile", shortName="afFile", doc="The output recal file used by ApplyRecalibration", required=false) + private File AF_FILE = new File(""); + + @Hidden + @Argument(fullName="family_structure_file", shortName="familyFile", doc="USE YAML FILE INSTEAD (-SM) !!! string formatted as dad+mom=child where these parameters determine which sample names are examined", required=false) + private File FAMILY_STRUCTURE_FILE = null; @Argument(fullName="family_structure", shortName="family", doc="USE YAML FILE INSTEAD (-SM) !!! string formatted as dad+mom=child where these parameters determine which sample names are examined", required=false) private String FAMILY_STRUCTURE = ""; @@ -113,6 +133,9 @@ public class SelectVariants extends RodWalker { @Argument(fullName="selectIndels", shortName="indels", doc="Select only Indels.", required=false) private boolean SELECT_INDELS = false; + @Hidden + @Argument(fullName="outMVFile", shortName="outMVFile", doc="USE YAML FILE INSTEAD (-SM) !!! string formatted as dad+mom=child where these parameters determine which sample names are examined", required=false) + private String outMVFile = null; /* Private class used to store the intermediate variants in the integer random selection process */ private class RandomVariantStructure { @@ -140,7 +163,7 @@ public class SelectVariants extends RodWalker { private boolean DISCORDANCE_ONLY = false; private boolean CONCORDANCE_ONLY = false; - private MendelianViolation mv; + private Set mvSet = new HashSet(); /* default name for the variant dataset (VCF) */ private final String variantRodName = "variant"; @@ -155,8 +178,14 @@ public class SelectVariants extends RodWalker { private RandomVariantStructure [] variantArray; + /* Variables used for random selection with AF boosting */ + private ArrayList afBreakpoints = null; + private ArrayList afBoosts = null; + double bkDelta = 0.0; + private PrintStream outMVFileStream = null; + /** * Set up the VCF writer, the sample expressions and regexs, and the JEXL matcher @@ -212,10 +241,29 @@ public class SelectVariants extends RodWalker { CONCORDANCE_ONLY = concordanceRodName.length() > 0; if (CONCORDANCE_ONLY) logger.info("Selecting only variants concordant with the track: " + concordanceRodName); - if (MENDELIAN_VIOLATIONS) - mv = new MendelianViolation(getToolkit(), MENDELIAN_VIOLATION_QUAL_THRESHOLD); + if (MENDELIAN_VIOLATIONS) { + if ( FAMILY_STRUCTURE_FILE != null) { + try { + for ( final String line : new XReadLines( FAMILY_STRUCTURE_FILE ) ) { + MendelianViolation mv = new MendelianViolation(line, MENDELIAN_VIOLATION_QUAL_THRESHOLD); + if (samples.contains(mv.getSampleChild()) && samples.contains(mv.getSampleDad()) && samples.contains(mv.getSampleMom())) + mvSet.add(mv); + } + } catch ( FileNotFoundException e ) { + throw new UserException.CouldNotReadInputFile(AF_FILE, e); + } + if (outMVFile != null) + try { + outMVFileStream = new PrintStream(outMVFile); + } + catch (FileNotFoundException e) { + throw new UserException.CouldNotCreateOutputFile(outMVFile, "Can't open output file", e); } + } + else + mvSet.add(new MendelianViolation(getToolkit(), MENDELIAN_VIOLATION_QUAL_THRESHOLD)); + } else if (!FAMILY_STRUCTURE.isEmpty()) { - mv = new MendelianViolation(FAMILY_STRUCTURE, MENDELIAN_VIOLATION_QUAL_THRESHOLD); + mvSet.add(new MendelianViolation(FAMILY_STRUCTURE, MENDELIAN_VIOLATION_QUAL_THRESHOLD)); MENDELIAN_VIOLATIONS = true; } @@ -227,6 +275,33 @@ public class SelectVariants extends RodWalker { SELECT_RANDOM_FRACTION = fractionRandom > 0; if (SELECT_RANDOM_FRACTION) logger.info("Selecting approximately " + fractionRandom + "% of the variants at random from the variant track"); + + + if (KEEP_AF_SPECTRUM) { + try { + afBreakpoints = new ArrayList(); + afBoosts = new ArrayList(); + logger.info("Reading in AF boost table..."); + boolean firstLine = false; + for ( final String line : new XReadLines( AF_FILE ) ) { + if (!firstLine) { + firstLine = true; + continue; + } + final String[] vals = line.split(" "); + + double bkp = Double.valueOf(vals[0]); + double afb = Double.valueOf(vals[1]); + afBreakpoints.add(bkp); + afBoosts.add(afb); + + } + bkDelta = afBreakpoints.get(0); + } catch ( FileNotFoundException e ) { + throw new UserException.CouldNotReadInputFile(AF_FILE, e); + } + + } } /** @@ -250,9 +325,24 @@ public class SelectVariants extends RodWalker { for (VariantContext vc : vcs) { if (MENDELIAN_VIOLATIONS) { - if (!mv.isViolation(vc)) { - break; + boolean foundMV = false; + for (MendelianViolation mv : mvSet) { + if (mv.isViolation(vc)) { + foundMV = true; + //System.out.println(vc.toString()); + if (outMVFile != null) + outMVFileStream.format("MV@%s:%d. REF=%s, ALT=%s, AC=%d, momID=%s, dadID=%s, childID=%s, momG=%s, momGL=%s, dadG=%s, dadGL=%s, " + + "childG=%s childGL=%s\n",vc.getChr(), vc.getStart(), + vc.getReference().getDisplayString(), vc.getAlternateAllele(0).getDisplayString(), vc.getChromosomeCount(vc.getAlternateAllele(0)), + mv.getSampleMom(), mv.getSampleDad(), mv.getSampleChild(), + vc.getGenotype(mv.getSampleMom()).toBriefString(), vc.getGenotype(mv.getSampleMom()).getLikelihoods().getAsString(), + vc.getGenotype(mv.getSampleDad()).toBriefString(), vc.getGenotype(mv.getSampleMom()).getLikelihoods().getAsString(), + vc.getGenotype(mv.getSampleChild()).toBriefString(),vc.getGenotype(mv.getSampleChild()).getLikelihoods().getAsString() ); + } } + + if (!foundMV) + break; } if (DISCORDANCE_ONLY) { Collection compVCs = tracker.getVariantContexts(ref, discordanceRodName, null, context.getLocation(), true, false); @@ -283,46 +373,59 @@ public class SelectVariants extends RodWalker { if (SELECT_RANDOM_NUMBER) { randomlyAddVariant(++variantNumber, sub, ref.getBase()); } - else if (!SELECT_RANDOM_FRACTION || GenomeAnalysisEngine.getRandomGenerator().nextDouble() < fractionRandom) { + else if (!SELECT_RANDOM_FRACTION || (!KEEP_AF_SPECTRUM && GenomeAnalysisEngine.getRandomGenerator().nextDouble() < fractionRandom)) { vcfWriter.add(sub, ref.getBase()); } else { if (SELECT_RANDOM_FRACTION && KEEP_AF_SPECTRUM ) { - Collection compVCs = tracker.getVariantContexts(ref, inputAFRodName, null, context.getLocation(), true, false); - if (compVCs.isEmpty()) - return 0; - // ok we have a comp VC and we need to match the AF spectrum of inputAFRodName. // We then pick a variant with probablity AF*desiredFraction - for (VariantContext compVC : compVCs) { - if ( compVC.hasAttribute(VCFConstants.ALLELE_FREQUENCY_KEY) ) { - String afo = compVC.getAttributeAsString(VCFConstants.ALLELE_FREQUENCY_KEY); + if ( sub.hasAttribute(VCFConstants.ALLELE_FREQUENCY_KEY) ) { + String afo = sub.getAttributeAsString(VCFConstants.ALLELE_FREQUENCY_KEY); - double af; - if (afo.contains(",")) { - String[] afs = afo.split(","); - afs[0] = afs[0].substring(1,afs[0].length()); - afs[afs.length-1] = afs[afs.length-1].substring(0,afs[afs.length-1].length()-1); + double af; + double afBoost = 1.0; + if (afo.contains(",")) { + String[] afs = afo.split(","); + afs[0] = afs[0].substring(1,afs[0].length()); + afs[afs.length-1] = afs[afs.length-1].substring(0,afs[afs.length-1].length()-1); - double[] afd = new double[afs.length]; + double[] afd = new double[afs.length]; - for (int k=0; k < afd.length; k++) - afd[k] = Double.valueOf(afs[k]); + for (int k=0; k < afd.length; k++) + afd[k] = Double.valueOf(afs[k]); - af = MathUtils.arrayMax(afd); - //af = Double.valueOf(afs[0]); + af = MathUtils.arrayMax(afd); + //af = Double.valueOf(afs[0]); - } - else - af = Double.valueOf(afo); - - //System.out.format("%s .. %4.4f\n",afo.toString(), af); - if (GenomeAnalysisEngine.getRandomGenerator().nextDouble() < fractionRandom * af) - vcfWriter.add(sub, ref.getBase()); } - break; // do only one vc + else + af = Double.valueOf(afo); + + // now boost af by table read from file if desired + //double bkpt = 0.0; + int bkidx = 0; + if (!afBreakpoints.isEmpty()) { + for ( Double bkpt : afBreakpoints) { + if (af < bkpt + bkDelta) + break; + else bkidx++; + } + if (bkidx >=afBoosts.size()) + bkidx = afBoosts.size()-1; + afBoost = afBoosts.get(bkidx); + //System.out.formatPrin("af:%f bkidx:%d afboost:%f\n",af,bkidx,afBoost); + + + + } + + //System.out.format("%s .. %4.4f\n",afo.toString(), af); + if (GenomeAnalysisEngine.getRandomGenerator().nextDouble() < fractionRandom * afBoost * afBoost) + vcfWriter.add(sub, ref.getBase()); } + } } } @@ -406,8 +509,8 @@ public class SelectVariants extends RodWalker { private boolean haveSameGenotypes(Genotype g1, Genotype g2) { if ((g1.isCalled() && g2.isFiltered()) || - (g2.isCalled() && g1.isFiltered()) || - (g1.isFiltered() && g2.isFiltered() && EXCLUDE_FILTERED)) + (g2.isCalled() && g1.isFiltered()) || + (g1.isFiltered() && g2.isFiltered() && EXCLUDE_FILTERED)) return false; List a1s = g1.getAlleles(); @@ -440,7 +543,7 @@ public class SelectVariants extends RodWalker { * @param vc the VariantContext record to subset * @param samples the samples to extract * @return the subsetted VariantContext - */ + */ private VariantContext subsetRecord(VariantContext vc, Set samples) { if ( samples == null || samples.isEmpty() ) return vc; @@ -450,7 +553,7 @@ public class SelectVariants extends RodWalker { if ( samples.contains(genotypePair.getKey()) ) genotypes.add(genotypePair.getValue()); } - + VariantContext sub = vc.subContextFromGenotypes(genotypes, vc.getAlleles()); HashMap attributes = new HashMap(sub.getAttributes()); @@ -460,7 +563,7 @@ public class SelectVariants extends RodWalker { Genotype g = sub.getGenotype(sample); if (g.isNotFiltered() && g.isCalled()) { - + String dp = (String) g.getAttribute("DP"); if (dp != null && ! dp.equals(VCFConstants.MISSING_DEPTH_v3) && ! dp.equals(VCFConstants.MISSING_VALUE_v4) ) { depth += Integer.valueOf(dp); diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java index 8d90af65a..39358dad5 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTable.java @@ -24,6 +24,8 @@ package org.broadinstitute.sting.gatk.walkers.variantutils; +import org.broadinstitute.sting.utils.MathUtils; +import org.broadinstitute.sting.utils.variantcontext.VariantContext; import org.broadinstitute.sting.commandline.Argument; import org.broadinstitute.sting.commandline.Output; import org.broadinstitute.sting.gatk.contexts.AlignmentContext; @@ -33,7 +35,6 @@ import org.broadinstitute.sting.gatk.walkers.Requires; import org.broadinstitute.sting.gatk.walkers.RodWalker; import org.broadinstitute.sting.utils.Utils; import org.broadinstitute.sting.utils.exceptions.UserException; -import org.broadinstitute.sting.utils.variantcontext.VariantContext; import org.broadinstitute.sting.utils.variantcontext.VariantContextUtils; import java.io.PrintStream; @@ -74,17 +75,29 @@ public class VariantsToTable extends RodWalker { // #CHROM POS ID REF ALT QUAL FILTER INFO FORMAT getters.put("CHROM", new Getter() { public String get(VariantContext vc) { return vc.getChr(); } }); getters.put("POS", new Getter() { public String get(VariantContext vc) { return Integer.toString(vc.getStart()); } }); - getters.put("REF", new Getter() { public String get(VariantContext vc) { return vc.getReference().toString(); } }); + getters.put("REF", new Getter() { + public String get(VariantContext vc) { + String x = ""; + if (vc.hasAttribute(VariantContext.REFERENCE_BASE_FOR_INDEL_KEY)) { + Byte refByte = (Byte)(vc.getAttribute(VariantContext.REFERENCE_BASE_FOR_INDEL_KEY)); + x=x+new String(new byte[]{refByte}); + } + return x+vc.getReference().getDisplayString(); + } + }); getters.put("ALT", new Getter() { public String get(VariantContext vc) { StringBuilder x = new StringBuilder(); int n = vc.getAlternateAlleles().size(); - if ( n == 0 ) return "."; + if (vc.hasAttribute(VariantContext.REFERENCE_BASE_FOR_INDEL_KEY)) { + Byte refByte = (Byte)(vc.getAttribute(VariantContext.REFERENCE_BASE_FOR_INDEL_KEY)); + x.append(new String(new byte[]{refByte})); + } for ( int i = 0; i < n; i++ ) { if ( i != 0 ) x.append(","); - x.append(vc.getAlternateAllele(i).toString()); + x.append(vc.getAlternateAllele(i).getDisplayString()); } return x.toString(); } @@ -168,6 +181,31 @@ public class VariantsToTable extends RodWalker { throw new UserException(String.format("Missing field %s in vc %s at %s", field, vc.getSource(), vc)); } + if (field.equals("AF") || field.equals("AC")) { + String afo = val; + + double af=0; + if (afo.contains(",")) { + String[] afs = afo.split(","); + afs[0] = afs[0].substring(1,afs[0].length()); + afs[afs.length-1] = afs[afs.length-1].substring(0,afs[afs.length-1].length()-1); + + double[] afd = new double[afs.length]; + + for (int k=0; k < afd.length; k++) + afd[k] = Double.valueOf(afs[k]); + + af = MathUtils.arrayMax(afd); + //af = Double.valueOf(afs[0]); + + } + else + if (!afo.equals("NA")) + af = Double.valueOf(afo); + + val = Double.toString(af); + + } vals.add(val); } diff --git a/public/java/src/org/broadinstitute/sting/utils/variantcontext/VariantContextUtils.java b/public/java/src/org/broadinstitute/sting/utils/variantcontext/VariantContextUtils.java index 5a5671056..212600360 100755 --- a/public/java/src/org/broadinstitute/sting/utils/variantcontext/VariantContextUtils.java +++ b/public/java/src/org/broadinstitute/sting/utils/variantcontext/VariantContextUtils.java @@ -289,8 +289,8 @@ public class VariantContextUtils { /** * Returns a newly allocated VC that is the same as VC, but without genotypes - * @param vc - * @return + * @param vc variant context + * @return new VC without genotypes */ @Requires("vc != null") @Ensures("result != null") @@ -303,8 +303,8 @@ public class VariantContextUtils { /** * Returns a newly allocated list of VC, where each VC is the same as the input VCs, but without genotypes - * @param vcs - * @return + * @param vcs collection of VCs + * @return new VCs without genotypes */ @Requires("vcs != null") @Ensures("result != null") @@ -362,9 +362,9 @@ public class VariantContextUtils { * information per genotype. The master merge will add the PQ information from each genotype record, where * appropriate, to the master VC. * - * @param unsortedVCs - * @param masterName - * @return + * @param unsortedVCs collection of VCs + * @param masterName name of master VC + * @return master-merged VC */ public static VariantContext masterMerge(Collection unsortedVCs, String masterName) { VariantContext master = findMaster(unsortedVCs, masterName); @@ -435,11 +435,15 @@ public class VariantContextUtils { * If uniqifySamples is true, the priority order is ignored and names are created by concatenating the VC name with * the sample name * - * @param unsortedVCs - * @param priorityListOfVCs - * @param filteredRecordMergeType - * @param genotypeMergeOptions - * @return + * @param genomeLocParser loc parser + * @param unsortedVCs collection of unsorted VCs + * @param priorityListOfVCs priority list detailing the order in which we should grab the VCs + * @param filteredRecordMergeType merge type for filtered records + * @param genotypeMergeOptions merge option for genotypes + * @param annotateOrigin should we annotate the set it came from? + * @param printMessages should we print messages? + * @param inputRefBase the ref base + * @return new VariantContext */ public static VariantContext simpleMerge(GenomeLocParser genomeLocParser, Collection unsortedVCs, List priorityListOfVCs, FilteredRecordMergeType filteredRecordMergeType, GenotypeMergeType genotypeMergeOptions, @@ -448,6 +452,24 @@ public class VariantContextUtils { return simpleMerge(genomeLocParser, unsortedVCs, priorityListOfVCs, filteredRecordMergeType, genotypeMergeOptions, annotateOrigin, printMessages, inputRefBase, "set", false, false); } + /** + * Merges VariantContexts into a single hybrid. Takes genotypes for common samples in priority order, if provided. + * If uniqifySamples is true, the priority order is ignored and names are created by concatenating the VC name with + * the sample name + * + * @param genomeLocParser loc parser + * @param unsortedVCs collection of unsorted VCs + * @param priorityListOfVCs priority list detailing the order in which we should grab the VCs + * @param filteredRecordMergeType merge type for filtered records + * @param genotypeMergeOptions merge option for genotypes + * @param annotateOrigin should we annotate the set it came from? + * @param printMessages should we print messages? + * @param inputRefBase the ref base + * @param setKey the key name of the set + * @param filteredAreUncalled are filtered records uncalled? + * @param mergeInfoWithMaxAC should we merge in info from the VC with maximum allele count? + * @return new VariantContext + */ public static VariantContext simpleMerge(GenomeLocParser genomeLocParser, Collection unsortedVCs, List priorityListOfVCs, FilteredRecordMergeType filteredRecordMergeType, GenotypeMergeType genotypeMergeOptions, boolean annotateOrigin, boolean printMessages, byte inputRefBase, String setKey, @@ -470,7 +492,7 @@ public class VariantContextUtils { if ( ! filteredAreUncalled || vc.isNotFiltered() ) VCs.add(VariantContext.createVariantContextWithPaddedAlleles(vc,inputRefBase,false)); } - if ( VCs.size() == 0 ) // everything is filtered out and we're filteredareUncalled + if ( VCs.size() == 0 ) // everything is filtered out and we're filteredAreUncalled return null; // establish the baseline info from the first VC @@ -615,6 +637,17 @@ public class VariantContextUtils { return merged; } + public static Map> separateVariantContextsByType(Collection VCs) { + HashMap> mappedVCs = new HashMap>(); + for ( VariantContext vc : VCs ) { + if ( !mappedVCs.containsKey(vc.getType()) ) + mappedVCs.put(vc.getType(), new ArrayList()); + mappedVCs.get(vc.getType()).add(vc); + } + + return mappedVCs; + } + private static class AlleleMapper { private VariantContext vc = null; private Map map = null; @@ -834,6 +867,7 @@ public class VariantContextUtils { /** * create a genome location, given a variant context + * @param genomeLocParser parser * @param vc the variant context * @return the genomeLoc */ diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/diffengine/DiffObjectsIntegrationTest.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/diffengine/DiffObjectsIntegrationTest.java index cca1eccb4..77159d9c2 100644 --- a/public/java/test/org/broadinstitute/sting/gatk/walkers/diffengine/DiffObjectsIntegrationTest.java +++ b/public/java/test/org/broadinstitute/sting/gatk/walkers/diffengine/DiffObjectsIntegrationTest.java @@ -52,8 +52,8 @@ public class DiffObjectsIntegrationTest extends WalkerTest { @DataProvider(name = "data") public Object[][] createData() { - new TestParams(testDir + "diffTestMaster.vcf", testDir + "diffTestTest.vcf", "fb7f4e011487ca56bce865ae5468cdc5"); - new TestParams(testDir + "exampleBAM.bam", testDir + "exampleBAM.simple.bam", "423cec3befbf0a72d8bc3757ee628fc4"); + new TestParams(testDir + "diffTestMaster.vcf", testDir + "diffTestTest.vcf", "4d9f4636de05b93c354d05011264546e"); + new TestParams(testDir + "exampleBAM.bam", testDir + "exampleBAM.simple.bam", "37e6efd833b5cd6d860a9df3df9713fc"); return TestParams.getTests(TestParams.class); } diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariantsIntegrationTest.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariantsIntegrationTest.java index 00ee44f75..904a5b29b 100755 --- a/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariantsIntegrationTest.java +++ b/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariantsIntegrationTest.java @@ -80,9 +80,9 @@ public class CombineVariantsIntegrationTest extends WalkerTest { @Test public void combineTrioCalls() { combine2("CEU.trio.2010_03.genotypes.vcf.gz", "YRI.trio.2010_03.genotypes.vcf.gz", "", "1d5a021387a8a86554db45a29f66140f", false); } // official project VCF files in tabix format @Test public void combineTrioCallsMin() { combine2("CEU.trio.2010_03.genotypes.vcf.gz", "YRI.trio.2010_03.genotypes.vcf.gz", " -minimalVCF", "20163d60f18a46496f6da744ab5cc0f9", false); } // official project VCF files in tabix format - @Test public void combine2Indels() { combine2("CEU.dindel.vcf4.trio.2010_06.indel.genotypes.vcf", "CEU.dindel.vcf4.low_coverage.2010_06.indel.genotypes.vcf", "", "5b82f37df1f5ba40f0474d71c94142ec", false); } + @Test public void combine2Indels() { combine2("CEU.dindel.vcf4.trio.2010_06.indel.genotypes.vcf", "CEU.dindel.vcf4.low_coverage.2010_06.indel.genotypes.vcf", "", "f1cf095c2fe9641b7ca1f8ee2c46fd4a", false); } - @Test public void combineSNPsAndIndels() { combine2("CEU.trio.2010_03.genotypes.vcf.gz", "CEU.dindel.vcf4.low_coverage.2010_06.indel.genotypes.vcf", "", "c58dca482bf97069eac6d9f1a07a2cba", false); } + @Test public void combineSNPsAndIndels() { combine2("CEU.trio.2010_03.genotypes.vcf.gz", "CEU.dindel.vcf4.low_coverage.2010_06.indel.genotypes.vcf", "", "e144b6283765494bfe8189ac59965083", false); } @Test public void uniqueSNPs() { combine2("pilot2.snps.vcf4.genotypes.vcf", "yri.trio.gatk_glftrio.intersection.annotated.filtered.chr1.vcf", "", "89f55abea8f59e39d1effb908440548c", true); } @@ -100,7 +100,7 @@ public class CombineVariantsIntegrationTest extends WalkerTest { " -priority NA19240_BGI,NA19240_ILLUMINA,NA19240_WUGSC,denovoInfo" + " -genotypeMergeOptions UNIQUIFY -L 1"), 1, - Arrays.asList("8b78339ccf7a5a5a837f79e88a3a38e5")); + Arrays.asList("1de95f91ca15d2a8856de35dee0ce33e")); executeTest("threeWayWithRefs", spec); } diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTableIntegrationTest.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTableIntegrationTest.java old mode 100644 new mode 100755 index 72647c8e1..1db712353 --- a/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTableIntegrationTest.java +++ b/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/VariantsToTableIntegrationTest.java @@ -44,7 +44,7 @@ public class VariantsToTableIntegrationTest extends WalkerTest { @Test(enabled = true) public void testComplexVariantsToTable() { WalkerTestSpec spec = new WalkerTestSpec(variantsToTableCmd(" -AMD"), - Arrays.asList("b2a3712c1bfad8f1383ffada8b5017ba")); + Arrays.asList("e8f771995127b727fb433da91dd4ee98")); executeTest("testComplexVariantsToTable", spec).getFirst(); } diff --git a/public/packages/PicardPrivate.xml b/public/packages/PicardPrivate.xml index 110b41d3f..581c47979 100644 --- a/public/packages/PicardPrivate.xml +++ b/public/packages/PicardPrivate.xml @@ -7,6 +7,8 @@ + + diff --git a/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/DataProcessingPipeline.scala b/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/DataProcessingPipeline.scala index 6a47d4b97..1f4f79993 100755 --- a/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/DataProcessingPipeline.scala +++ b/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/DataProcessingPipeline.scala @@ -72,6 +72,9 @@ class DataProcessingPipeline extends QScript { @Input(doc="Number of threads BWA should use", fullName="bwa_threads", shortName="bt", required=false) var bwaThreads: Int = 1 + @Input(doc="Dont perform validation on the BAM files", fullName="no_validation", shortName="nv", required=false) + var noValidation: Boolean = false + /**************************************************************************** * Global Variables @@ -135,7 +138,7 @@ class DataProcessingPipeline extends QScript { } } - println("\n\n*** DEBUG ***\n") + println("\n\n*** INPUT FILES ***\n") // Creating one file for each sample in the dataset val sampleBamFiles = scala.collection.mutable.Map.empty[String, File] for ((sample, flist) <- sampleTable) { @@ -149,7 +152,7 @@ class DataProcessingPipeline extends QScript { sampleBamFiles(sample) = sampleFileName add(joinBams(flist, sampleFileName)) } - println("*** DEBUG ***\n\n") + println("*** INPUT FILES ***\n\n") return sampleBamFiles.toMap } @@ -246,7 +249,12 @@ class DataProcessingPipeline extends QScript { val preValidateLog = swapExt(bam, ".bam", ".pre.validation") val postValidateLog = swapExt(bam, ".bam", ".post.validation") - add(validate(bam, preValidateLog)) + // Validation is an optional step for the BAM file generated after + // alignment and the final bam file of the pipeline. + if (!noValidation) { + add(validate(bam, preValidateLog), + validate(recalBam, postValidateLog)) + } if (cleaningModel != ConsensusDeterminationModel.KNOWNS_ONLY) add(target(bam, targetIntervals)) @@ -257,8 +265,8 @@ class DataProcessingPipeline extends QScript { recal(dedupedBam, preRecalFile, recalBam), cov(recalBam, postRecalFile), analyzeCovariates(preRecalFile, preOutPath), - analyzeCovariates(postRecalFile, postOutPath), - validate(recalBam, postValidateLog)) + analyzeCovariates(postRecalFile, postOutPath)) + cohortList :+= recalBam } @@ -282,6 +290,13 @@ class DataProcessingPipeline extends QScript { this.isIntermediate = true } + // General arguments to non-GATK tools + trait ExternalCommonArgs extends CommandLineFunction { + this.memoryLimit = 4 + this.isIntermediate = true + } + + case class target (inBams: File, outIntervals: File) extends RealignerTargetCreator with CommandLineGATKArgs { if (cleaningModel != ConsensusDeterminationModel.KNOWNS_ONLY) this.input_file :+= inBams @@ -300,8 +315,8 @@ class DataProcessingPipeline extends QScript { this.targetIntervals = tIntervals this.out = outBam this.rodBind :+= RodBind("dbsnp", "VCF", dbSNP) - if (!indels.isEmpty) - this.rodBind :+= RodBind("indels", "VCF", indels) + if (!qscript.indels.isEmpty) + this.rodBind :+= RodBind("indels", "VCF", qscript.indels) this.consensusDeterminationModel = consensusDeterminationModel this.compress = 0 this.scatterCount = nContigs @@ -332,7 +347,6 @@ class DataProcessingPipeline extends QScript { this.isIntermediate = false this.analysisName = queueLogDir + outBam + ".recalibration" this.jobName = queueLogDir + outBam + ".recalibration" - } @@ -350,48 +364,41 @@ class DataProcessingPipeline extends QScript { this.jobName = queueLogDir + inRecalFile + ".analyze_covariates" } - case class dedup (inBam: File, outBam: File, metricsFile: File) extends MarkDuplicates { + case class dedup (inBam: File, outBam: File, metricsFile: File) extends MarkDuplicates with ExternalCommonArgs { this.input = List(inBam) this.output = outBam this.metrics = metricsFile - this.memoryLimit = 6 - this.isIntermediate = true this.analysisName = queueLogDir + outBam + ".dedup" this.jobName = queueLogDir + outBam + ".dedup" } - case class joinBams (inBams: List[File], outBam: File) extends MergeSamFiles { + case class joinBams (inBams: List[File], outBam: File) extends MergeSamFiles with ExternalCommonArgs { this.input = inBams this.output = outBam - this.memoryLimit = 4 - this.isIntermediate = true this.analysisName = queueLogDir + outBam + ".joinBams" this.jobName = queueLogDir + outBam + ".joinBams" } - case class sortSam (inSam: File, outBam: File, sortOrderP: SortOrder) extends SortSam { + case class sortSam (inSam: File, outBam: File, sortOrderP: SortOrder) extends SortSam with ExternalCommonArgs { this.input = List(inSam) this.output = outBam this.sortOrder = sortOrderP - this.memoryLimit = 4 - this.isIntermediate = true this.analysisName = queueLogDir + outBam + ".sortSam" this.jobName = queueLogDir + outBam + ".sortSam" } - case class validate (inBam: File, outLog: File) extends ValidateSamFile { + case class validate (inBam: File, outLog: File) extends ValidateSamFile with ExternalCommonArgs { this.input = List(inBam) this.output = outLog this.maxRecordsInRam = 100000 this.REFERENCE_SEQUENCE = qscript.reference - this.memoryLimit = 4 this.isIntermediate = false this.analysisName = queueLogDir + outLog + ".validate" this.jobName = queueLogDir + outLog + ".validate" } - case class addReadGroup (inBam: File, outBam: File, readGroup: ReadGroup) extends AddOrReplaceReadGroups { + case class addReadGroup (inBam: File, outBam: File, readGroup: ReadGroup) extends AddOrReplaceReadGroups with ExternalCommonArgs { this.input = List(inBam) this.output = outBam this.RGID = readGroup.id @@ -407,12 +414,7 @@ class DataProcessingPipeline extends QScript { this.jobName = queueLogDir + outBam + ".rg" } - trait BWACommonArgs extends CommandLineFunction { - this.memoryLimit = 4 - this.isIntermediate = true - } - - case class bwa_aln_se (inBam: File, outSai: File) extends CommandLineFunction with BWACommonArgs { + case class bwa_aln_se (inBam: File, outSai: File) extends CommandLineFunction with ExternalCommonArgs { @Input(doc="bam file to be aligned") var bam = inBam @Output(doc="output sai file") var sai = outSai def commandLine = bwaPath + " aln -t " + bwaThreads + " -q 5 " + reference + " -b " + bam + " > " + sai @@ -420,7 +422,7 @@ class DataProcessingPipeline extends QScript { this.jobName = queueLogDir + outSai + ".bwa_aln_se" } - case class bwa_aln_pe (inBam: File, outSai1: File, index: Int) extends CommandLineFunction with BWACommonArgs { + case class bwa_aln_pe (inBam: File, outSai1: File, index: Int) extends CommandLineFunction with ExternalCommonArgs { @Input(doc="bam file to be aligned") var bam = inBam @Output(doc="output sai file for 1st mating pair") var sai = outSai1 def commandLine = bwaPath + " aln -t " + bwaThreads + " -q 5 " + reference + " -b" + index + " " + bam + " > " + sai @@ -428,7 +430,7 @@ class DataProcessingPipeline extends QScript { this.jobName = queueLogDir + outSai1 + ".bwa_aln_pe1" } - case class bwa_sam_se (inBam: File, inSai: File, outBam: File) extends CommandLineFunction with BWACommonArgs { + case class bwa_sam_se (inBam: File, inSai: File, outBam: File) extends CommandLineFunction with ExternalCommonArgs { @Input(doc="bam file to be aligned") var bam = inBam @Input(doc="bwa alignment index file") var sai = inSai @Output(doc="output aligned bam file") var alignedBam = outBam @@ -437,7 +439,7 @@ class DataProcessingPipeline extends QScript { this.jobName = queueLogDir + outBam + ".bwa_sam_se" } - case class bwa_sam_pe (inBam: File, inSai1: File, inSai2:File, outBam: File) extends CommandLineFunction with BWACommonArgs { + case class bwa_sam_pe (inBam: File, inSai1: File, inSai2:File, outBam: File) extends CommandLineFunction with ExternalCommonArgs { @Input(doc="bam file to be aligned") var bam = inBam @Input(doc="bwa alignment index file for 1st mating pair") var sai1 = inSai1 @Input(doc="bwa alignment index file for 2nd mating pair") var sai2 = inSai2 diff --git a/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/RecalibrateBaseQualities.scala b/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/RecalibrateBaseQualities.scala index fca420816..f8218148e 100755 --- a/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/RecalibrateBaseQualities.scala +++ b/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/RecalibrateBaseQualities.scala @@ -20,14 +20,14 @@ class RecalibrateBaseQualities extends QScript { @Input(doc="input BAM file - or list of BAM files", shortName="i", required=true) var input: File = _ - @Input(doc="path to R resources folder inside the Sting repository", fullName="path_to_r", shortName="r", required=false) - var R: String = new File("/humgen/gsa-scr1/carneiro/stable/R") + @Input(doc="path to R resources folder inside the Sting repository", fullName="path_to_r", shortName="r", required=true) + var R: String = _ - @Input(doc="Reference fasta file", shortName="R", required=false) - var reference: File = new File("/seq/references/Homo_sapiens_assembly19/v1/Homo_sapiens_assembly19.fasta") + @Input(doc="Reference fasta file", shortName="R", required=true) + var reference: File = _ // new File("/seq/references/Homo_sapiens_assembly19/v1/Homo_sapiens_assembly19.fasta") - @Input(doc="dbsnp ROD to use (VCF)", shortName="D", required=false) - var dbSNP: File = new File("/humgen/gsa-hpprojects/GATK/data/dbsnp_132_b37.leftAligned.vcf") + @Input(doc="dbsnp ROD to use (VCF)", shortName="D", required=true) + var dbSNP: File = _ // new File("/humgen/gsa-hpprojects/GATK/data/dbsnp_132_b37.leftAligned.vcf") val queueLogDir: String = ".qlog/" var nContigs: Int = 0 diff --git a/settings/repository/edu.mit.broad/picard-private-parts-1954.jar b/settings/repository/edu.mit.broad/picard-private-parts-1954.jar deleted file mode 100644 index 67637d3d9311d10767c5758006471a628c5a8a88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36047 zcmbTe1ym$KmIX>T?(W{WyE`;a;qLAfP`Eel?%L3}ySuy7xH~lNH1>OTW@lz+|Lp$# zc{1zdIrZX2WJTtCFYdirin8DkaA06CU|=AvGeNL_+F-#TzyRW^A`H^<5=`%7U|@=W zGlc{B!n~KL6tJueJ_WCPtwD zsR{AFYvO7IvNCeEvIqXXKNv9TKmC2We`Xwj0s{;EGce)*y|IF^lfA8(vzaW=-VLb! z7oR|9F?&-p6Ll6w6I&xEr)-U9H~gQN??WjZP5d#b1M;>6yGaxgS(?J6-?Cfoe~?>~ z<5z6c7dlF0gbRGlaFigU%9}~~91NzH3m=@6opQl()F88#HUGZZU0PhctmZ+-NA^m^RjdY}Gye`W$hHsT5Kac_fs+|!xl#x@b6n)I-eBYehj#xOMuH;r@_ zDe#ELa^{|Nrwp-cq2BuulW+$_Ai@%FBag1mC+L@lm@JX%#^^WGjZZFT^;XZYm%Ytm zpN_n7GrezTea(?#lDhRFWIA=14vZ({OUX&g^rYp>$(Wr<_88J-O%$KcRyh2;<#;5? z-T-h1@-S~0F4C*pBKlC7ADJto&$A^ur7tYhCJwJ0fSgoJR+69?Hl$crIcyDT0OJo9 z%knS9-c&HQspA$LUy=E$(4*#b_??g3NAu-piFn%m)WuBu>W>Qq_F5iP3zM4P63x3T z;W?`fu`B>v@s4(^X!P7>h@osvYSJlLBOQkn_z6vUNNT{9HWQOkU!AH3}`8 zW*RFF;Et+kK5?i`n$KD7)Hv+6I+4wV8kxP~Zshdus-*>RB@c9mq#a3 z9A6;`5Qi^O$_iALJl{FUn}>Kwtr3`N83`~?5IkIDT&;gwp33yUh!6DK1yb=J+Ag>k|0TmKc_uC<3= zcOoP5lwVUA=iSqqgTIDC6f^qwT*OT;11t8p2WGcnXsXRN{KZZjd8|M5RjxlNIquJW zcX_reRtbbxuxcE4%%wC_w~4qSj1O|C4`RfX7;mI7nk|L9|HDR zqh^NHIVB+*d3pZIg#-xu=l;yq75?xs21p?T?+S>oawtRHwi!52Jid8*cHrFud{CQ% zF5umLUU*Q=DEaQbegYj=>-N1bU}U_4>{szYuPmFaSK(6MWo~V(d;_NuUeyb>b{?VL zNeth^gm9nO-uw96kM7m_O){xt561oNu>xGi@OZ^CmQ+{ucGhJ`(<{n-_2|S~y53!a zUZ{SR8Jc+eY4^Wf-($YG-Zz-~S&SUwVX*fm0|jC6KdoR|+cq=^__ianEJ%pm!|;iM z->by8e4g+8WbGpEV=k=C$r;J+%Ta?l=BQr9WT3@Zqxx!m6D&M{WC!usA1;J8v?)0axl1w=Bc4A(hdWl+atCaD(t^;E^S}faddq2}8 zN^Yv3xhxP`Ra!TXEm-dWcc|6MH;e@e>@07&%oy0(n)|FHK}1BFO z`0AQb18Sy~)~*yu+4xs3DK9mtTV5|ufW#g2dI>vV~&K6bI+y|+vr=P2A26yjCg?2T(gq3P}Q@%%pxXrqvuT42OZV3-}pLE<_ zS%jH4nxV!@q4NmQZsftNo%;>P>`=mOg#HL`=UuI&^$c;*;&wsjo4z}JYi}p(1Z>RW zFE`5BXAjIrR^e6mPe5+-yo=rPYv^yUj_dlw;~0nv5npw>2R}d3I-TL&?r;$8{@Oo6 zG<_nGwN=Ou_QJnH%u-a!DHmVqUuLCMcvPm6E%kRrGLp&eL1A;rP!8gJWI_H;?j_mc z6ykwZ_?A6#ednB2P^ixCN;H4H;5SQ>G|AfCxAzSFbMWBAbIcRdj6c7NR%+;(_P1F> z`{EX1t@T`vwvgiBCRh1W#K@znWA&U}l&a&_QTb@9VZgWP&KNhTIhV7Yz;5Kr>$=YA z^6O9NM`9sQsPR6!ZrjBg$gk{v7Gb{&>PlRc`O8_4GC!dIk>me0BNP3*3~6Bow0HJ! zF#CIU{qOYw?f=@=#2#p34>C0Zn*75L%zsoOo@rVLLZ86EAU=bEiTt1Zd^J`9IslBE zO)LRs&LArjr@yA@LPdZ=pD>CKoq@6l2IhTHIQ0ECrM?pSCu!!wxCW42)0*0%u`}MKeW(SwOxy8}1mp$|z3M9n+8ET{MAaJODT<+!~8y&Gs|BXaL zL1)IAz#xT8x$`=kmZ zI(+yn!%Sl{D`7%Ds~6zu>dUA9yhHw4L-|9oIdUL?fkEMcfpPu2+4)BS_8(IsVP$J3 zX$CX{89Cd7{yHa>njYS&e@dsR%!A3BggEKX2$4ZQrAea5(RRO)$i_>-j2K!9>lm2p zCsolshr!u;#G!z_lrOQ!{ zh7A~ejQBj}cwMw^@jTilTEqzbhWI9k4U74RB`zBP1Z**7S8bn3Vv9DhIv) zmeqH+2cGd2LkPV;lGT@SkAn2f3>#|)8>qUS%Bt_Uqt?gnbXf=Kwcp>5 z_loJ$uPxxKBtgZ%8ieeZRgtR&y#m+L_b@!WYv||}B0DXa5go!vN(2sT_L6w{=-qc+k`a2VN+P47*CcjK$xO<1hIV+kj~PnrY1Zp?XL!h;%+^zSHN`|-h@vkHRBaUAA+BJKP=!A8YCK6p7P)UCDNZE5Hg^f`_>dD9=ttK zs_d%ol#aAl${axVIyENcFb>#r$*|fM3Z(?T;EuNr4g;E+hJBQe|*fY zOw?dZz&)(3L*mw4&frNMoW4WJZgOimujR7_VewAkxG}?;wwxs>(u8wPAkc)w0j!Z1 zUvmnMHyJ@si|?laUU@CtC^6t2#$#e}uFUqX!3&O1p15uHtv$hf{JgoCsfE5Zd%)zvpL$bHhI zl|S33MjC!eVkML_-MjBn2Y?$yv8N=Z+XXzn2`3}W{!Vp%X7f(WGMUb8S(3*&g;%6m zWn=#A8A_KMWuj}^5;WqTD$pX%7LY%0omXuuXIzO3z?bAj9OB(0Wx#|?9FjN@b&UG% zFj*YDu~Y zyiBtJ21kI2g|a292WEz-3eU&B11FQOrg-LqkQ8 z4Jc%p?5mC%E~lt$IfObq7HoN{d9=KG2$4MTsjh`2|jOJDQSFUKP`f1+~4Yid8dC;N@MzhpLAhs`>qQ(I}QHL$D& zG4ROVhTXgvWt53-EnkquViLPj^~o8mykJJkb@_HzFq7w#)5TVeo)V3N#-~<#+1BN6M5z6P}03R{_hFWDhY(wJTB zb6c!HEe(1hT0NE(iAyo5pfNLUR>^`0?|hxH*@I>dX{6>(FLG3EPryn)jAYQRUz4y<)(u zP<;7xX(Zf5)vM2OZCri39C6n=#y5-3nen6I5zS8}B{yLLgxN#~^Fq+rc6vZyaFix& z0o!xEbm1q7tsl7h(>pF=i=IT)&E}OpS7BIjM?|xb83q@O9v`2bK1^PRv$J`QhGt$v z>K^)Ehoeh8VqT=*SDzGy#V2Nm>Y?;?o`2DP@6PQL>x?5}ofe0P?(UJ{u7x}2r&DnJ z5`kkl1;NT{@j26Uir3wo<+6p_XPB@9t64qyu}@hL%*KStR-h(T$CD%#yLT4aB35_? z-0eAli249i--h_cGfoJ>919<#!~`Z%@!KHv5L#9MVp_B(=bVJ9aU$%^-GUl!+&}iP z`r68l@89A>+Os?$QainA_wemv80bIvZ;QfdswM!g^E2!D`RIByT21E;Y}!&x$ho<- zuc*|WX^I+xLg9Vn`~uW?O%k;S6Q7dUwJT#yjPrxFHhT4ei?j)89jOmj!(KQlpVg~> zYU9@2Hg#ZA=(k%~qs>3`oj0x}rV-V6oqxjDdB&)&BxWN&3+(i|id(WSKNBmx@3U@S zvc{gbUa`sEu0r6Z-oE4IXG=_L#D;`s;oGLK)fnI4PAzqkv)&Pzz*H5SykkofoG!p7 z9w?<0(6!s5QQ_J;xq2E{G<=&u-IO6T?HI(BLRTsOlvI0o@RnxZyGR-WiH4N_W!ua9$YUE+P04IIf)!AvRPIOFfc_V+ zYzm-#4p%pJ@uNv?P$eG)UOx6*pgb#rFEIWc3eUJJ(K)kR>(3$nQpuvp-URv?n^m}gy@X&cBJ0e;7Mk!-rol)U}PijgQ`%u#VQCbV$;D$JSTcfpJM zhY^Al(+&&Ug~7o{^{}%9-hP^a)Zp4>vk6UkE$}^zrI-0RMDy8g zLt1oyk*V6MS<~GUJJznxav7|JcLGUcEpPOArtXVI>LKq26N%4*G5J6DyY+^aVvL&Z zkj#lpev)4kLlcS5bp_A2N)4AU+wlD0MEl+A^CI}fFkWQ7YoD@=SzcO-lC>J@qylS6 zRXg5I-b8FlgEgN=l~K4ajj;=pno-=cP0*X}PMP=`+42RBEONJw*3Q(3gsR|C@$0Z+ z3S*xe>$u+G*{=`q|GEL`~y`7|AFKG0ww>yqR0POiHI0GIfIN$oc|k|`!_6C z-9}|i9Yvt8?qEd5n1~YjhNOYL$vcfR^fDf>cy6e*m$k+rga`zfzfq3ldYM`j4o5P$@IyEHVBVAbxsQ1DXpf~xn+iosSKrx zIT?j2b=I<9AttrwOk)=@YN^cGY~zSNOQ8E7Dr{rFbJSR~>bj<||Q>Sp=5bP8Pzs>{TlgunU8_ zOvl7D5ZixX>xLQ*I3%ybDl;2!$+ep@YE#6FI3RI<68y2FttMdcQ|~7BGEE{~HPe10 z%SvONkk?Zy;B>B!tah*!hFfZ*C{Bl{*{SK|^xm!$c-Gda-B^Xq`druqKF+9#x#ob6 zH0tX>8Mi{>E!$5^0~%v(@@5vxu#VMk*rk zU{^7TD)agY4QN*_ zkmMz|-l+3$(~ zLy5e#c4{=r7$KT>om~PzR7_i=df#5QH0edz2Ug5YaSw)gL_)}!|M>Oz=z@C67$xUh zqXUR;e1N5P`AZv`Vgum!;i%g&I1d;s*YPic!uTp00sF+pD3mua3IWg_${aEKc^`>@ z8s4YuuEo6;v3ikdM6o9blzIggIdc9N1h-iV+4XnRaVe9a8MzNSE!Jqad4Tg|5p)L3 zK`e&r3`IYC;w>^m1F|TO-)wQDbrmpV=d;g7K~@BVIKil7 zc8}D$f}Ap>e)2o=FilJ_j>L(+!hVUEMJ!H1IO2H+lCchsCi^I<87x__wwT>HXw8#0Qo>ccQ{>EX&j787!m~NZXzF9fjX`@Dck~M3Xf=;2UZh1Z|e~W zXu%xFWc6JpI`qpnqbQO|Lz-yljO zC~xw$q6_25iyrmEJ3WE#GM_kM(5sd``NW!fVW4qJqGYDUDS&dZXjIXRA1_;C6W*!T z?^l@7B?R|66qDgB^mM#is-iF;;h6vZ8}lWESohJ-DPxGOFsQg1a^|h~{{gHc`*#8G z?_iyUnXT2|5xc)4ZLp&{TrYnjDA^x8=ig#E|J8xyA1{A_bCk`DOwIm=<#ek5QpS+P zc+Xg)?GOr#kx4 zA)-$?da|j7V_3OrNh?&uR6PCs+q?KBD@W-4_Z!DII`_Oi`ioyu#@dn$=Ij$gSHhB* zMAq&FM)Lg~x|%bniP0g!+Ri3Q{T3|VjQ1(*{EM?eRLbY!A!dY?EyVp1XWcW`6kQ2q zjCLAkiF2?$b0o%^^Rxb;%4sQmE-TA;ob0yN4(zrps>S@W1vnuIePii5u7*{=iJB*( zvUj`8ih_SZPO}9-#n{P*)E9J0&$~?5*X7T7f6FtUaXsHg67y031=>5!KTObYCBh$m zHn^(v-xLp_EuEN&YtUm!T+_yU=QnVXn#;OVUf0_1VmQi+n_Y7K#=-YaPr>Sc-rAs} zRs*!atx7p+Fi}{JaVKw~@IJ9tZ*_(d*rgGB)9q2ooafKySGoqB2;*cRwMY+qF6Gei z^xD0OfKnJ*ysm3dUm?T%HUA~f<}ryFK~JDlS_8t|b#mgSvgbCdf`^OWCs#CQ;7s_5 z|4K?gNmKxPIfjRpD?Ua(xXo09&!Sk5Xy1EvgLci~is7=Shj3MSZ;{hYrD4Zz^@_nC zM|)ILd~OH0nx(gaQu=LxD$@Ai`IE|`;y%_z-eRc6Ntg%i6LOe%mXak#m7B;5F_P%_ zTad4eT#3yJ=;^^A$rjavw#^uQfmk4HXFqFHp#A9?27dT4gmuKv6sLp}JTm6fmtn&K}u_U>K}h2nwz_gzy{ zjANO)%l81}WfM40g_~omaxM}jQKI;X>X%KGQ3IN#D})WG$Q@Cd29qCGyz!Zcci(1s z+~pZjklky18#F^u?yMp7jVellvBjs3NxxumBv~Zc9RKL{uP^D5MlYp1NM?2bl{|+!zl5)oTo{MdIj37i| zKuq~dAyR1M!jbJX}fo(v%s*&9FsyCLkg-~{q_;9v0HBK?OCrh!I z1#mGj^Kl*sV=4>d0XV6njEGzJOEQ)!tZazA&KH~_eynwjI-?TxVr!_TByNwvqxv%R zGw+%iHH+TJy9mKVo5`U?vNrLp_~Y*yioasx3RXW~`2NJxdT1~(&VLt>|51_t4H7r| zJ4XK3N;Fx`PD4c!#TV6|z<1li1D_i~T#M#8zes%Z96M7Gz1xtbje;6E|Fzvio ztX~D|Fs_L?Rt_1dbWdig4gR5pZOhdZ`|lrDrnJl`Wgn}jbS~gQv6@~_lYmSj~GJyMkxp6}Mw~~=fVVu^8AXzG6h;!4JSZS-eE;PU+8+uNKFJY;$MA7V7(}NFZ zFIrfALl5`HI+tIb_Mmj8;9$P9v~S~4ck5@p^UDCY3vG%zCat7j3~l53oeZlc<^sk% zuNu}p2WpE1kj}(&jUpsLPu^P9a3;L4IR-?k;C{d}dy)^;a2TJ~vq2!ayVT(AYm$+#C0Z4(lO z%NqRM7ADCyY0}Kz+tR{Lm1M7EwZtfs)bRmdj&2&=cTjFcCfC~k%97-3KIt1=zv^xj zRE~0ExqK%+H|K#YlbP1Meu;E;Rb*U<6Sdi!3 zFCJ&~Hhr4I(nVUfI@99n<_Jr((!_TGVU(k)F{Xy*#>BR}V1&P3jtQd9^K6WfH@w2; zmkeV`JHI{{cJ{W0PjS`wkrgAYldMXj+w~gD$GjBGW@)`6HcY#CK-II^XJ8~MwihSC1?h9gdkS4_0~d0=W=CKCIUM~( z(sd%x?ET|UD7r!c17rE$!_hx4jQ>W`Y3SGzSp3m9d8Kbma@$mQ#^|jz1P?8nP-QYU zH`R)vFHr*b$QOoaq-EG182XC+lk0eK0SjQ8>S13{N=UXp z!G>eI@4=E2xeFiUDR$jXyLYZ+!_bp@e0*g2P2KYyy|TUEcl+I;gK2pS`eRIyJFr!7 zmwISnnU0PckAu`x#I;gPMXiHi4-t~ zMK?k)?k2=Y26?F72@>_2fSy`n6po(?LL6qbn>Y$$vg*|<<$7ru&CPYG40PA4^BQf1 zbZaBwA5>W^s;y><*aya{4qAp~%@CE^(^S4LceaS)lS!WGQq*U;vE9m#j+v?7z^5dR zS7^&`f^G|q&E-pe@X1y6*h#KWJ^?w%WpB;av>KhD;UU`% z=QWN%U78?%*STv5CgoPf_fgSN(4feQel5W`0}q~O#}Ou%!3g)mkIobxU~APm1`Rgh zB=+saCq(qXNoqL&z>caiQOs$;q$4SDJ9aY=+#SF9ZGpW>4v9s-aR;Mud8A7GAPvGy^<+rn8it>*A9YQ<|duNp@jAN!o z%l2WsH7Wsa=Q17}LIuki8b4J;v7>Fp8SVxp!^7X<$NRHylXh!bNc{59Npe>kq#-sY zm{eRl3Mm8ZU6$tF!@lCeAw1uHRTF%w;ewdUGaZH5!+MHtCQM z)?@fgdCa!eJLY@Z9scn3bqFIjKmXd2gbHxC zN&dJKr%w&c3N|>K5;agr+ksFyy%q@kkw*wok*Np|C+?d)@K5w!m9Phh#!;R-5A zUzdMShqDw=hqG2thqL`TXD{1r>5tuWTZkMVj(Vomp4dSQn&?6dntVt6I^paNu2fG| z_h~~;k_&~+>ke^XGG`eIO(#Ah3X@yPKGf2NfX@+`m$`R>D*P}MXWqz|O}zTCOitd5 z$R^$NU-mb-AhZS-aoA0k)g5k+6)T}4hT7{Qt-%a6uUO1#m#wQiEGs-v_F zUJ`qm<;K2S!j_h}^3$gqJ0{Z6{HF1+;Nhy=e$@ucYv}^k7R3tDZ$ zPJd1K*xv%BjF;3jS#e!9weeTBUFC8D1u_j0zExD3 zCD58Vu|M#OXNE-)woM>zNK^X0Sl-fW#)#L^xL_e0!yd&Cv%Ye7rTw@j^Q_8@&sS_(HkEJ+S*OdRlne>{fp?j^Yb=>ws3JS?aR=>wzGst6x%r#d1g^@;*y1ln=w zpr)Y2)f!e&Hb|It(fv}IxL_a=ZW?83OUQ$~Fc2o{Fw=jVHcZHgnUY;iDxjRd=-93y zt7NnTd>C6ka(8`h^KA=>&h^z-Xh*Y|z>#22{g?CP73)au%~Uj#GNY}xjP zcv}PXU4vC#>3Xiggm-$7VyUVA$YNm|93lb$imlkIHQOmH^XY-c=7V=7=g6YMc53#~ z_MyOC?#U6Kxjo4bA7`)LM_qp+PeQIvk(cr{q`&_P?xADjSVeJC_HpYkTOwL~FeYGRN)tkIhOP2tm@`qB96<*#~V;`;WaAz$?aZ zc)r`@-bjA#jpg!u_sYE?s9rZe_?mwsl$pGSbi?uRt(yN(gAq7Zs3C4(at!Vg9JvIC zeI(B0CWS!dvEfw&RJ-v`IrT%leEQT@T`JrxXJ)nE!1_V5g;*zaNBj>&{4WXrTYTiI zChQ-H`5!U${}Ip809iTzC!SNN;o**9f%`EDOjxmnLQ8Ncpfnv7Beneuk3j>X49eF* z4=9*}Dll_(OF&4UuywPrQj}HlDsNb{hPT!!PqDUwl;La;iNLlL_~m2JXf5zj&A<5g zX1=^($^|jUKka)t+2sI zcnI42DVJE#J8a4A#zBMTVo1PuJ@UofqdN+D{3(oh{z?hUWhNH-isZX@R4Vf5Q%h8+ znRj0-p7&g=mis_#x_c50(z7GZ_uYfywmulkO?*6Eg@Pw2Rtt(>q7y3lO zQEcy+6`^V2ZjwD3p^VzCP_kE_46Cl={?yl!9<~mrg-{ER>nvo0haDVy!p9wmNRKWA zDwYAUjMV-KFPR~DG@0M*97Po53(c7sgfb6738&xev?N#;ey-L^b2a>e=%t07N9Z(Q zyAvFbplGiMn$(T<(52Dg67{ag?6gZUvQ*M(mNRBLpYsCzl&4^ajUPAF*{B*+&ik~1 zB#xGX2S0dUk`Wf{$uVE|ILMKK<7rvnZav+n)0o0YA4}EH$&-nuE~lOqM2nVUT4-Xo zD69)8X%au3?kowVleU}%imQy$W3p^{R~BBi(>=jGB43RcU9irL_AQWt~|uuo(HR$x4Z?cPN%U#yp*56HAv! zUd$o~AH9vixFO6a;n$jr%31$gvnghWDLQbM_lO7oJ;vV$3pEB8W(^+QNsQRRIdW^*FoOfdVa z0UJ$_8f1`6+MHSW>^l+%BZBmx+E65`glSfhrs*B9#seR>N3PDB-K?Z(F%OCNdd9p^ zPNy$wNHlE}Y7lja2tQ0JdJqnxAV@7baS~TTO^rm78nj@lEW4~z|GXa?LGUv%MY`oj zNOHl|)v*(WD&Mv^XXvQzmo+o*;IsMil}wPajr?8!?0C5xzm7Oi4dp)V?8Z&26oMjU z%1DP}RW>qBy)S{zwK^c%9r;|k_Z+NU4s^K$zOLNZjYyIsk3Z0;~0QwS=8ys zTsGM1En6~bu1Qjs5k!G9``LVq`KhZOj<;4#1YX;Yjfm9+PE0PFnJU=Hb z?^|pj*lsQpO$}+elK|;yvj+T$=uj1}yk13miLWDqR>l3Na)>6QW+(lF=J`Hbi^7+< z8Wsl#?Wh&Kv#Et7!|C^zCvmlZF2jXCE2z|id+!rXiHc1c7*KW$>@c(W6bQZ+e5LUk zt*p`e>#04!Z~HskdoU5C#4}T z`vRMsuy96DJNeAif9;Oz)eo^BV7Yl9fM@oa3D=lu2@Q&-Xqd3i4<4Lw(dXyk5Ih24 zPjOAQAa7Zjta6ttCvJ=b%p9AHv+Bod6nXCB7NzD`m75Ol5>AI8pJzqWMs#8vQfkBr zXCwxXIZvl}FQ26i%~^bs=-o06zNc$M9X~D2>(H7P9vjtUn`oUW;WN!nl(=Vk(4Y^0 ztxZ%Dg

}{_1A8*D`&mw)g$&SKim?;nE-}O-*XGo2GTRVe^woE?LNP7pvwXm@X_% zlhs_sFkmTRcCLw8vZGLQLfbryPtyU)jOw)MOH?El;adm^-CgM@!)h+W#Sdtocp9wy z&J*ouJ9Epj^azzzJ!xALq&KJ5nD?V3rBQ)2bD|4}hIWw&uDMuV@JYJXBa4UXVva@& zmSS_VsnYoQW`sg_>?Tw*>`HA#QH*b_pG*0cRmlM+0%sE+(N- ztRx@zV{9%hTjK3H3c4tw-M;u+CpakqN(-iBQRG_xCHrF+cu;j%*FE4!$pg-x{cznN zI^_Kd^(kX64IfxB^mDN{A9r32?uO5*BXYtO*?dRPQ9RC-HcW!*wifr4O`;6jJlBoj zAjYXpXFtC9^m9aq^9*voxXBzT8?;pIjaUgBC!&cUos1%0tRhU-fO7`ph$krIYD5I> z5zOkD#C(^u?P@3M3EuP@1hX(KZTPRq?R06BC%Yqw-JcD^DSUubi0K^&AJd#UAApTD zaX$k=44Gxowzg&~bu`MJj0wvmZ7TP;A)f4fOA$!R{Ml8XvDi#yN-443k706Nv-gv} z7fxmC%~m{<-)GpYFTE9dc+@f9Bu5xyf8d3VJcSzVIU?-B7F=UUIFKj4{B%c48F88u zG^w2DS)>g<`fPiG2zPDuI^nc&&t6+Is=dr~R1=jLRcuvZYw!6<)$YVNqawut3zM)y zk&W+Wa*3dfBPPP8zQzLGa2ppdR@uiJ>-LI(VvnVw2ezzh+Ja=7>>ej4)YyTO!b%jv zJrdrx8OGxhQgu|S%b%A~hEtjG6vZdKEzQZw_5g2mG}TxmE2vWy{3d;Ti1j;7&lzdr zZ40si_R3!GMhmuqO=<5qM%@+-&707F7Hj{1o$q=j(Y0@mIOI3ABSMWArW{N5-Qmzz58uNj&WZty0XdSnq?<7fc2vfh1 za^K$^PIjzR&u+fIzJm+HSO3x+l1FUk=rAsM3^o$a?s^=xu;ev3NZvb_*)=kQumS3h@d&s5xPAgNuaXq1HevAWl z5@#Lm<|_-AK(n1rA7b|H$Qj(N>WsAghtV-^-b&*J(#C@(74OGLO^2VuP>pdB*T{_uM)~B+4>(Io_m1w)B$#ja?bvQVWFQ7`#c33Mau4Wu9FXfuxnNSha-1C6z%Y zYMf*M&G#&WM)#K-W$cMPP4guI@n=MfBm)7dqZP$Q7stNMj|t+4JN!RVkia)X4MX?T zlB{XQ3(jzCUV{mReK{j!**ltVlDQ}~GK3UbM$rqOi8VB<9SEb*zNqF%-sWi)B{HNY4)00W@gpNYJ7 zt{vLY-a?G?9@5aJbKQ6#$FO-h%qwk{D=x+NAI>_2gY6-Q#H(&HvJUB{&rSw~wwVbq%uv~uH-*BQ`6=Y_Ukwnnn+ z5Y6N2JlbrYT}->EJ8pZPPPF&JO$|+)#$?oL&L!G8`ML9=)m%)-Fy(~fP7LV~amJ0{ zF_ElAz9-pk#k~JP>V06PLK2!P-R+(6$(RAH+0#4z*Y{9|)AkQaa)A%Sc_dCW`!pJj zW6V(MwoHPCS`dZZ!Vs)Qft=1YL{3)ofm3g!JTA5s`JwfUP&=`L6g7c$(47=s~L@aGT~i}70IvVI281M3*5fJ(Z*$wUD0~X=J(S8*giu{6Hpbmf> zu(msoBQPXS4^NbasO(%-udHlpv_9|jxf+DlE6-i1TBRcX4gXuG&2!CyHHcI?Rbp{> zBFpFb;oz)udjHYS_Z_oG`<2=RGDgZB5CSbpd&RC=8x=QU zKg5T&nLHabA8?aXbJG=sOr90*kdpU>m$ih-)skgOal=a$P)<4t6YfJ5$R585{OS>8 zWXBX+Baa0mhEnaXoI^7IkFPC!dt*7*%)S6c8DQn2gPq@ zRjXK?(hz3AQWAYqmdrZ(5JKRpQ9V_u2x3oC-AgeVNXYB0^n!k_#aJTq{w9gQw%VG` zTm}%tTg>+cjU21&L8$J1UM;7TGCdNN(J;qXxvy2!Y<|Mw;v=5Z44Cfk-ai#M za_vf1n8*r`PHI&!0W)p7adcxb!^+_kr8?Heu2;{=MsKal*A0kx~raJFoKr7fc zN$NrlZuWH{%`WW$sdfNwDFMNTXy5r!mlVN)Lx#tQdWjxbmSV)Z(A>~ghvRxoKCcot ztEL+A)wHCkEYEsInGD@oS0013PDOWdTrNj$5T=H__c^FD7T*eppG%%1 zVJwm0S|`18Q72Z^KPv@XUunQLQ6y&!oTJ$xcxEyb7k1Ugo=TFp~=rWrWPv42_Rp}UPXpy+V^S>h*eYLv`K{uoPe zfZD!^U2?dfmZ_*X^9f`+>+R6Ku+N>{6o9fw%`UY>qZx|`mm}65kZc+MXB{f}q$xu8 z8Sa6k!jRY#!?xcwq{t&z(1aNi_cHvNd#N&K6he|vz6oVeN zg&Z4s`41zsT7a*vqTT@D_7Uk5hinhNSGc0dZU_)Tpn)+?4w}Z$?fV4#o$gNnfvehu zhh4((4zI@Wjs}NA+A)LN$_1_@GVQ#Uo3tcHUzv`lnIaL<|~R z<|c2xGwI<+;=5Npi>2=N<%y6nmu7D}y&ZNvTV56Y)QotHjld-aGB|L}E#z8}h$3U3 zJ(NK<(@9e)lW)u>Fl8#xAaHZ#WZ}=Jey66jSR!b=^b4_oOQW~U9V*QH0*^4XKoVkS+1*ta!pbZu@f3q$@k2tG6@wE~G7K z&J{4ZlM3EHQ;W}x(=0MN&$IqH+dm}m2sBbTK~*!H1EgzFwHl>qr*DR^ArXPD3M2by`@JA~L~ z7s~TXV)|{WA^TTQ0o+-1kPi&~!Y^Y#t>6P@KVrq1cle`SHo zU?-y2{v<7=KZV`@2T{sD7j^&fXBU5yN5@QBe`di5o^FiEZ)!aKK}T%3&R*EwB%6mp z+k&z_ys!LazMvrArCMYHZtTY}>YN+qP{xX`D1^W7}?QJ89BCJ!((yJ@_+x=n{`CWSgq8p#9^QrnMD*} z=HkTXCEUu7BvB|ShVz)AzRhcz7A;~^wKdpUyjc`4m^jKfHS+ReqTYI|fGM2{1%>&7skZiav3E!Qd zw(95{)nDlLK*evp7Jj}6X-4|t+%oEP6&weU)d0v)c`y5}q zn!rEKa=^~vIw!jBICbZ8?@7YhpONJ}1>5{BH(u+DJ|Q=z=GEUi3TLSb3f6iIoBa`z6=ns*YwogVP1FmzYvqQ)zw}WTq!;u$(n6lMJQ4`r{*lB z|2*V)B5963KU=A_xB$Z{sRXbH(?Mt1or8Qjm)7;hG9P!3hY&dej6l~yumPKD$lcLQ zqC1t%A{gvxnUM(&XxYnAzmAO-?(JO_ssexKJ)FpAHg?31Do`L#`0zy^DguQ-G}S0i znUkSqd+93K-@(inF4^A!^DohZPv!X;-FK^fB%hNooX53)&GjXr>t%pn%DbLy{`9;iU+4RYG!DO&!A`ya^6sNDcKZ*j703C^>sr z%%v1>Jg>dVvOffq2<%&vu?~`B6=L0V)T9sLx2xUh> z0<#=5+=WUZAjNhymUlSl6SUwU{3FywEK z?Nm|6uP$Ibmto<47skF1L@4Wrz3oQ~qJLucsgJj)*l2Vzf>l?hmIb&7a`qCQK|fx4 zlNVQ_Q_4MPTVNl^aLpABaTVnz&Yq5N!QV!!TuS6}a zGrz!{%YGKE15U1?+a5lQ2ip%*ZM;p$N=v3hr($PnfiP1f9-DB?*?#FLpP&#QBVeG| zZoY}T1%81Gw93Ii!ZQiSr>xh^U2bm4Oh4Lp3v9HrXK*?YM};V_VGYoPSMAz>lL~B{ z1P!(!>!SLAlpBJ{Yd^wsNet%_uk0OG+rj6IDKKrwc$OU>?+tjRk&BrI z1IE5WPK7JyapBW0R-j1{k}k~3^#usFi0dQVyE}1xHP2Imk%OR ztm4V3>j*2A|8E^u?2ak9NRS%fBglwjq!d12j|G@@&56i(Pw| z{kSf(#=~&IDHq;vgS8_|H!Ba+7kST7Gx2UDxo9L=Hwv-0Ii*hFb}w#y#kvnRQ8h|E z68lE=*0K+?5T-p?{9{Hn{q1;sd+=~uM*eO-cNDcqtT*0hmkX9=fKu-e+#Kcpu;-J= z{pE_ZA#{ANF&Z%i^ZRVal;e(e16d)mVP!grD9$)ZlqJ<|0d?v3WxSReA`cG8l104= zfQ8Y)Q-(5)7>MzXZxC@Kx%X)GeE7Qd>2!|4B#|Gdqk!`rQZhPBySL+bJOmqc?ViF; z2of@ZnW8^TW~IML$o^P!3Q_|2`UPLJ9^#x42se5G1({XPT4g8XSvQ{G z)(0!0ea4vd0|>i>cDGPDDqbPmQ=_}-nAebMdp2?9ns7_jNBE)sD6q_8fKhOy)BL>R zQK0CJW<_!aQAmx@4*%WmQBm``6diL?kt4jXdahz4{j>tlplR5YbaJo^T0QTIMz!!F zQ|nWN=tA4dtSmWiCFbJ9xAJH7c(#PW*rjc3RAel)p`- zNz2E8KuJ|NOTaj6&oQlO3C|AuNoyl@6oFK`d6}^c8&4B_%__hKAZQj2hchHnE2R~d z7p*{YzdAs)sVm6>ie}77jz}=lqz7QFTM102>bHE~=PCg|Pps9PRt`)4wy}^v~1>B-# z8+jHhp zwhO7OWv5hP%Y43i3}2fNOr9jkYZTe|MvtLjh}t8g{L$`jVBbrbIN5& zs(8sY!~LAF{7&5v3oF4ZG2kSa(~N?RjKGCDoe{3Hd=ZlMNAX9qgsFoySp^U5clMi|;RaihELMmruEe=uD6|muf=o-GNCZNLIsl#E zk=srr8rO+e(F;I11CU`YC z*PP?)ppOXfw+YSj9?tWg_Vb=7h{N*+)PpjXf!!JuanAE3CYy{1pjZ25m9TDAOd*+K zJeVA#ZF-tTW(@xh3kRUaN&2y9QZ++;t|89y`Uc2-L-{=5!`&4Mh$KrGSv#vg>~E zbg4TgDmM&%v*7^L)m-2KRON{P@qmo^_?~=-os2j$aZ~Rj&W9_!tK0m+`p9@w@#F_= zgAUkK9G>0an1@MOgH8VFn1?Lgi`;F3k=B}?W_QI?@v^$6b^hVP%ezSfPtjdgrLv7U zKI&Q}ulB?hKx}r?M&L{-bA7esf?7=~8_V^RIyBz=@(%z$p?(}JhkL%&3V*>1vG!A85jW6YyOKo5bvG4^)hS|rwWIDc_GM*ih z6Xf479!ZFk5Nc2PI5EJU=Cwt38>1Jp4=eliA7<50pC;rC(*tpdbJ45rbE5G!Pw^TU z1KU~~!BsiH4FTh-LBrjp+9pGGWy0W-5QJb|D{k3Tz5&d_Dr7j9lirMRt{5OH9uV)` zq_1t>hDtYF&z{6BJW#o0(0fob@=qwj=wa~XU3%-!!2@dqK*xzCz$*j?J2@tSTU6{% zngIapeFQO+7d$$WL1QXI0(CGVtJZu1!B!rFe2`yvCz3lDEb;1yM0nqdcsKC#1@Sv8 zqDa|TtRfHqfbOg3kjVe{jYrY~lh>L4I6ehOw=xSn4w%EHsfp=Tx+zGb3ZV5#*07R0`ZEXynQZpacZ^qZN zKLJP(pa`>T^}uyw!d}@5#O&(gg$ZV9U!IePNn}K6U&ZX;VfDTnH)zD{ecf|9$%p(t z^GP8OA7-7Fr8gEL&Bkd>9Ot!CNe(~D#a(w#%rd`_7kd}&L>VGwQnrml^)xx~SBX`U zTKYb*%D0x)6|ya5nX3ln?=qYzmw_5!iyjr7QbTfxY3Q)GQp0VM0-mt0Cg2RYr%$~U zSfbZYC)Pox)mAOCRX>l$wB@q{ic7AMS}#^vS!HWc^2MWgQqwIF#*$4{$m}AF@-@SC zdXB=SSaL28x@;Isyb3-_Wh_5WMoy2!|ZI>X&6b3gJ>`~OEn#;m$+#}v7|gF zA-|-`Z;vVJDi!D4PCQ&?RWeH&#LLt5HWTz%G$VR%^+_jAa0xeAMQi;%Q1C zW;wtEqnnxm!9jJyHr$6$1k~1?MudzKKkN#!=1?n;%zZgppEk(T4X)BBbQ<_Rn9Fme zFE=-ap9{1=L<@k8(z+oWW|)b?oB{QfO<|C3-o_c`de^LYv?$=)t5%T5Wt{+17~OJ9 zPZF)gbtj8M!5%!X!?a=oUgyG0af_ie#qYA5$gi4w6f8#?_j8KxhZ~%M1%@$2;=zfu z1fNRb1K01t5azCQqnK-sWcRrXFZJUhgwJL@sq{_Sb_R}ydsHG4`uI#1U7%p$5vSw$ z@Pfu&jQUg@1;-^$c8WC;vwW52pf~HF=fab`cOFf~+7nUU2CV$PfppW&qm|kif?nJ^Rg^W9~TyMbD z$ByN!LSyV9s~Fu$tHg=>2BT8ggxvz1W&MG~MQo3k9nH0u8;4V+o`42_)1yo*NDWwUqzrJ}P-CC9l#nCv{U30IyGBTdNi=Jl&uslwX z`J5DFiQtF;4Z0-(LViH6B7EEK0=I(V+wU$~09bt$c@Uj zEL~0?4$&63lt`$RB5qygA*!o1YSc`->CkO38hCcHjGGeE#IT?3njO$Udq17IMDnL5 z3E(%v-`B15ukuQk_V4)#934z8ezL-U-;dAKKl`V>TAPYrwNMoQxt^}QgQ1MBo&BGl zn~_T6)|kdCI@#^_tb1G|i>}B(_)n^-L95%vPEj!BZE<#_m&# zsiPwnY4y;EWO*S7a*8qjJ$T6)Jdk+}NceF!8xv4`AyAvrUj}l^WV)|LN0!X{k+_cU zww~9{T)jEZn4cDty+1{ zQ<;hFKeDT_D;ZYZpQtU+WerBc0$C7z5mtM$u(fqX0c3wC^ex1acLp>L}sd!iMqK*yiD|xgUhELN2o=lhe9sSCV6`3+4&3 zsNZNFi~uP#)aK-35>-;%&epyvU#Cg8YDNk9O|djTN9KxhI+ejw{S+Y=y=q}(kbz0o zS`ouZMe~}oPRnvB>0n-;fx!qa3~d@VU}T`9l2kd(vLL?A$$syv$of?W?a}l|m_ycU zTp9bGQ0+syLJn1GBf?JI$EUQiqBES$ZSZ9Iq1_nO4_NR6h$jl*+Q3x7frqym7x>}t zDneTQgqzcEyCiwXElkv`rBg>q@!-F$P0B>wC)XAbKu#H=8C8w;fq&f44AYN{6!vm% zX8*9&S)2KeK(webrPHB@VhMlnacQ2Qw=Ntd07>p-H8>C}ZUEB%9+IN1>Pq>(WZaEv zU5}c`+Kv65iG22|BrmC-R_M|NIp3AT|AU{f^XH*0q>Om6I>?+a2R)TimsuKb`PS>Z zM4J{N^$94&v6F2DdA~XJ$WtwsLUBhsUtpKg>1|(dRqb97XeiRwAbAm|jcGIrFw}D< zBW8T?4?m&$V`D3eYYSl)|7?QrM&8WGf z6%}3AbKD*jfd;&IBTm3%F1(viSNWw3_Ig(n5^8!u#;uY1+z^^DV*rLz3MVRqueocw z7X~y0m0quoLQ<57^vU4~o_wQx67&XzatB+0yz>mn zUPdJUS}U5z^b}wZ^BSztG4{;dY;GfEds0!-fyN$df80=z{5m1zK_{oC%uBZ>%Feek55JLB zZaj5y9BJu-=n_GuxYwZOjPSz+OB2W{f@17Xq5VNyTOt|qHaLr_j+<#^D<0>IzKUP< zbdYe6Tl)wyFC@t9??m2v3Q(B!9z$nP7=|q^xKt%PFTW%ETw&m(GeGg5C-R_O%wx`TY`qI}_5w9I=3 zy1FMB6LwVDT+h?mb;J}-oemdZ4cel-2V5)YrKh+@ZqWW>ii~`g^+k-}5v<-Vj9JCM zAV~9`y&cssu=Rr3?R{6-&6jGHZbft&A^3e*6UzJzB4|ND-9)g*4xZgNVgn6<=vs5M zWaBU4dyF1;P{-de(W1y>AL@JGeijx;K6aBsE`RTlyo1AH1Jt|WTWi};u-3-~GCwtP z{fYTOCFEw)On*rcYRk}#FR9%v`g2@tG440)p@Hcsy?50SC19mA zxxz1AQeqSmHp`ve3Q3G}XF1*-=L>9Nclh|?!XG9>G0>t1t4MMnGg;EFQxkDf-_kXN zWwE<>bkulbft@Ono1?}&7Y*$$6N;_aoY5u>TQuJ7zdX4BDzhJ>VvQkqT2E;*aBP#% z*skUYki&{~&ri0^u8_!l1C(rsV0vD*EPW=U@($s=N1J}Qf+_dMQmPZVJ0Q7d7Vnr0 z?F5yTlPxfJ*=&ut{^HT8(*K3iv~sSI`y=O6wCP!LghS%fQN;B;mb5tgl;?=0#IVyy zJIPKmC!J>CyOxyPND^zya+wx_APK)@F}Yjvbe=K$pQ(GkpIdqniaEarN$b2iR51M0 zEAFpzi-4((g|(@{pJtXn3{uLA>KOA#-!vKd{9`P6Hv=oNLs0Pid(HIgP;(bjf>IdY zvCvDV^P+Fp3Nr{W*zqm3icb-*rk{$d6(4Li+RCd-0VK~2$}d+(dmeaCRZB~aqd}{{ zWmE%mjh(GA+*RCVFm!XDJwH(UV6T+=2JHE{V28hv06yn~d%l+d$cFx6&kJm$*tduF z>GSq0A0DCrlh)g~1#w;vG;LiF8n6q<4z=*=jU)Pw&SUGLd*t%R_uMZq@ydpn`lV-= zyYBR$sGn%IfVW@`G7P@vM)3CG45I3Nt&Py_%N{`0{aP9!AHf|@H*~KCzzw@eTJ>R9 zy9Q_;&_%P4#vgGx{LM!^8Kh{a9^wWIx}^Ec1&vO*x>^vW97D5g&{K)WFJ7BB(>zKOKS7-F>3o~LF5$UXY7j( z5uws}?6#(JFXv=NH7vRu>NAv3SBlCB4DfQ$gN#g80rf0A=lRQl7%m16rbT_L7A=i) z9>dHKS@W_)o^A^Z0}^LhFj`A9DR%ej`NT3ALJ(|brADC$@sTD;GX1P}L6@5>OT4Cr zO8O$yCR9He3((Jg>>KCO@u|}9(Anu%NasI_9Eq}AFYvCS)MOH0T#I#>88K`XA9t`e zILSk2T58%^wrY1cXzVc@arP8ZnjfsEqK4y{#2PcCD9h8aInls?kyzQ59U~w9g%B zyu5DfOA4kB+5^bcQ8&xA@%cO<0Z7N|It@Ef10SM%@4Q608_dOb02Z%Q8#6h!pYasT zoXIlu$j>qyZ;2nEy)h4%x%>gXi}kBePGz1X86N9w2#Q_rM~RyQD63RJcV=Vv ziV_UfO1Lh}{fioPCb13^cF5Jz{KKND{1PLjS_%Ewq|+-HL1#p!tygj!l=(4JRic3P zO}6;;z*pCLU&jtKzIW0fHUt6Oo0V{zs8C;|k1s|6tO8}aEPaDauRfS^8k3vDlQ$lv z(_?fky9BpB9l+S>$*RiS`00&OTnLzH48~A|SuLfR9z}Tt&b?>tjkSxdyC{T{+L8d@ zlGu%b*g%a6rv1DP93L+Mn);Rw&4|8h8!=uM6Q!h$8*04lR`4(vjw`C4Po*!6C%lxE z&fV)ID9a`ne>M16FAIxWn!S*t60sqN46#Ix@y0k@&D@+Kalel|KW-c~X>jMAX?4lx z(iU;GzTCLO>f`i)+@;$uO8#c~O4uofU4DJ-OD#J(?mUh$I`#&e-PprXibj^VE}jJ^ zYeTpVYhE;gjcLx5!!^S#)Ho?cM9}a0(}=5~LT`BK8=YtpX^4C|F+4TgRVTkLpY!Dx z73cCMBRuFBHA&n?wFnB=$sfU=+LBx%)15AwrP;=G1mdG%E_8kQw$o+8?8$aL-9Irl z30kG=WAnKi0XysZHHZ!mHkcFh;yfWZKf+`?3AlaVL^DuWcASd;$n6vzcV!?x^tPd7 zqqR6bzTTW*J6i`r4?^**(>dM=FdCuKDI2TcYL9j&^NeJ5q|y^y&H?1*4tLc7S_zVa zmr;Q$NcxLt7dkpNnY3V(+~;w&Jm=^68gHc814ZDe;g}=yB)Et*O}>+Ne8USDRx|S$ ziEhd@@s{@*80-+dxytejmWbz`>R2g#Z#P`;DopGnxpvT=!8|1%A+jwrI;%E_@d=0m z($%w6c~`M!lzjnN$(TgEg_R5WVPpAUJ`I>^>yuM46)K(6(j7V@TyR*#oVLx0Ncny^ zDV6{uo2N?Hdp~rI`1~Q=(-1bs=`2tg#YFHm2F%!0QBcnKLR9TRq!CAYx?RkQg*U`K z3XqEQ59QP`$heOV^rSZkji57`$mR;gTvJ)7pj^Ve?3 z#aXA|h!=^;fg1~&=h6=bZRfukm8p+zMNW%dlDlPb3~l70xQ>Lc;CN!VTU(UzwBx@< z0;<3{Q*3yq2hv!Qc|as{ZZK$p&D0ty*+9QJU@Hg=_STw)r6L4}=r zcm#4l$ElJR!ZuPZzGn`V>FfPMUhoF#ni6`-eYzgJ$i8Ki?F&DzrBypA$iQrJj6d#up;2sV> z8F@bA%lAFxQF37YRsN z+m9q>fHi?3FUi(R=HOt0DAiwK|GXam?reNMsdei9nny5_@thFjb47x#krPnqN+UygI)=i4lE!JR^g$Y>mxGAj-gm9@=Kg z&LozVW+_F!l}6UIE@4Ck&Ffg)R!Pw+>2F<=NkZT>wWOO0K~bseN@>^Q`JJpZg?^h1*>|% zWlw4fAz-{9ahqDS;gv+vz#GAs$d{>U@~pvIarldq2B8LW;|pyh+)ewNN@)PJ|GcY347^X zt3-ZcE03=v|8`t_zje`cc?)4BA_~=zMUChPPG)5USBpjpTjP`ls7PuX>x@f_AEScG zSV+)$1+9T5JKDi$k%s%q;r_uf3!{Z(b7Oqo>67Y-M0fghBRfB8B#dL&H@`tNW3}QS z3e@Z#iM}uyg6Q%@AHL9vx0(XP3X!fW4X%0PY}<|QsmfyE9*L(&2Xbni?`W9)3UlIF z9>?R5>g4iIQCl>uAT^lsla^WYQA%2l^|7_gqa8 z<=2nI2W#zOF}}%LG;A+sU##!hhl?p1U(~R^(Vk0x4VOIrw!e&yK7?=5ByZ$4rJt%@ zlxY6SZLL>t42v=scC>voDuzg{;hg2G$U&vS;;uIm%V&}OO6b}~&$v)UE~_aExjbcR zPfx)4TvU-tm>VCg!E6T_Xe4dWqUoIlk?$6F$duKphU}1G$4XscLavJ?m+4cgew)j){iPDK~QygV9FNNu+;P8OD&eiE3DIrZ*9B6t2IG@8{EQv0*> z>MowtAcWt#B#@=E++Y|=&M6sqcsQ*oF9U|ja3JVPi@)e&B{jBk->i`lYYrR3^aKwc zi|d-bg%W4IPPhi;Vrkx?u67KWxuN8)h5CDqGOEl%A17k0>6>~t2XQi}j}SKS_C#OU z9t7|YW%OHMJC^LnQ_@7O)z1ApZ{&t?%oK3E0ZTqN#gr;Y8LS_N7R!B_!EHYfrrBXQV=z-RexXrcqVWLJs1L$@$$S+Zi6d@MA5+#3 zZ4wx?7k{gZFwXiGX*9NzX}}pX!NbY!4uJd~sB5E0exm5hG!CpoaJqeo3D=u%WC~m% zX{HL$GY9hE9Pn9P8C%;`JSf@9{CoBYfIT{Jy&U)|VsFh$+G5q5&n@}2*z#QPa!OF} zgjPYVoe`2@*nm4Sk>{ z>K->HA#Y(QamRK{f}25tpTUdb8bT7|*d%BNd(J8<9@Ok@AX!P^mxNIsV4GJrw@)E4 z*Mzw;)QsuwLQt7m^=NI-%lFRpUgR&a*4npT)IhT;s~*`HBBSIwo{!3ME!wU(rwtxo zbx@-*gD|A)WQ5}ZcSmbPLAcav-4+6APn3D3nr`Q)-o|N8M9p#c4AEg_1tqHmQJ!S= zAG*%U3*~en(-QLUX<$0%d=1BZVm#rFi0V5q-L;%ma&Lr@%=g0m3Z5jPYg$2;(XGfz z$sSf_b&}GgPHoN)Lt&tq+D)#iyjN57@rE%g)lL#-d{BMeK|;{uO_jmSmDPfX&SzR_ zs;p%X20rBoI`zBh5ulNH!bl8bCDw&Nh_oX(SD_X|uq!LNRob2>t_~`el7{`9#ytPV zahr*lJzW1uYSw+T`*E3e=^ZV=G?;K~b4s@n5*#xvr+T}+Ej1*qME;TlcV0)g5L9BM zEl|`Kd=sMn$`9Nj3(?E|xGyM6NAb!*OJIWAmq#h+Y^3w(M>88*B=p% zY?9@0#>z?6;CaJty4D1^*&{-unRhpc-3t8}KSglbY$cF0HHpO;o4c68P_631E;GJ= zTVqu{ZRbKAo2}mAe09iK($}tFYasMcb;+Y3S2%2A=SL6nfgBedW^-3n%8(6*y}$G> z(bmjImg0+*oV8C&am@uG@~kCW;E{Bf_v;QUmy%8@buB@DQGNf50zcQ~Z7KY#LDl9} ziO=~@+Kqo7M)liqM(CBL*xJtZ4?Ty1x-^0;+=~>Mg(~C>Uni7_pl?zmB{MIz7AcBg zSPEj==jDUbFsS9#*44aw5|3N$FXEzvllO<-Q!K{ndO1wMX%4%`#~K~hMq@9JS10T~ z5Fg{bk{bWMEFQ3-lV$R$G_r@K$KkTl*OK}~vT)fhM$Lmp2zfH1a5OlLhs-E1+sZaa&3 z*KHv*KP1*^llW2JUXl!*+?jDlhNUgYlI$qyx${zwN*Pf`x#e(aY?6b&;4|!X>)qP} z6{Bn%yWW~a#qOECE#)fSLG=cYIr1=b3gcKo!B9r~7rVgt?on%jXw&Lg`U9e?uKGk>Ou<9Oi@x{ZzW>yL%LMcZthbQM*@& zYSSO$EDx=o@wfXzwV++84kL?|xXRpQd+4vVEKFN1Qqof7&6e#PX4mQ>q+5|I#j$UK z&>KFMjtTm!beh4@oXgegMe6RRnUBIff|)XWsxCiel}93~oD5uDKw_40a;VC570@%k z5NeyNNOKA$UeEhPV_!#z$$%n0*6%#%ixS>iC`+Li`TmSMGavHJJQvU;mU#%?6sbPU z-K3;8`Gq+kLb>oIF(+98+QDutLQS>9`3CYJ@;FP#GNHdB*a|PsfztJs71ce-*94da zu0U(!f&*a5)BpuvZvt6fd-@eQ-)oSQVsIB4_2_urhmo1xRKNaWlXX_X{xJx)?p#PK z!UJvIdtgm&jtamL08d_DM1u%?fsi&jA>2N?2vIgkU6^U?2@|BZr;`xd?NSwB;ASE3 z_upW@Yv7HJI%5tZdMk#j{&v_;1p7k{Yv`4z%L<-p=4I|k+0TIc@O{q+W)@Rlzz|R zsPLM->JQte{FC&w4C2e_T%|ghg$2;g28JO+)Ecd4IFgwofZE2|gKP&l z)1MkCA~YX}zGg~;%|Y@{AzKc|zX=lPwyU_3b~JNtcywAdNO7OX(fJy~j#WOYvkm2$ zL~d@?ttX;rscY$|#x%UV!4%A4=F{@*n;Tbsdc|+WqQM9~eP=PLL3TY)B=2~%0^tFS z?IZ(itxE3%l1WUy*mXPnHh-RRo$^?&;oD?UXnfHs;>wvz0OIKIXO-zo_f~5cEAwUZ z1wVE>?sQLjM71iSBMII0j(if zEE?Xy-fv*@biQ#>ZOz4-iBa@gU_nv31`Y;=19;uE4zb+)6{pR9&D)oOS&NP4PfDvK zkmBtmwY%p|?mMmSw(yCEa>->TDr|UY8uo(ABy-#7u_$+9(?fvICZ><-i9;y`urXsn zY$T3u8mFQ3dLo;kR(@mI6;A~_`Hr1ZaIE~-461Lp2)B5T-|tB4(2r>I5uU>s`pV_=BiB}9?6?>Z9b6wtgOla6GB9k1uNLNne=wCFu3s~L^B2$e?9^n- z0(Esr>pjL7Ux4mq^coFy8;alY(Q6xdrP4gSJbVT8VL%nGLFlvsc85QvV4+lz^Qv4l z>v*pgQMbL0go&9=D4&Kfrza*MK~(FfYX&JU=dNT^8%HZj38gfyGAWTkK_O9ns(wpg zzISy`FT<7ONVEuu^MTAflzphOrnq8Tw97S;fgr_In6(2{lB=K9m0vR1#dtN{(~OV8 zciGg)7jAD}kQBAB>Nd?<0u2+}FI)bGN3Ya>%RvuP8D1_%VwP1k~l z`)mFo#X}CY4#mih6?lGc>oe4k9{z4=2YBnMjsB{Fu!08wVENyA__r6e68)dH zhzDnc`B$FABq~+x&rqQ0g{V`=c>aRmc%iE3H1s7dxyUJcVxubP%RrX{5kjC-LPw&MMA^j!3%TsKiTh{|U8)B>OK0|^Vrw65L!G|X3oCpmE{?c&KRiU{* zz(a6AInYDWfs?vTJNW=)BMa_Sbn-DlA{%Bi6*p@(=dSTg+5zSc>)<2=)}-W!)ldTM z)pQZv8&{>jsNcp!c{H-bI$yKOOAyb@WWmM4!U1=7jI)n^8hUra?cu{u&$=?dhJj;s zc7%RE{HhI`^1#g=rG_P!~YQQ@@KVt7?}8h*SnG15^T z&Hip8i5J>;%pwh0`C6rMF*zHRF0;E&qz_TJj*Ni8ge7U@xz~r?YKQUom~Q%EAz-IZ zD5D}aN>YuiTeQDuyT;t`WPz96eNO2^BL%3OKRc?Cq8p*9beJXd@ZM7%o=cJx0t~cy zpM>^+gWb%Wd4ww2I5RW_fw~x8b5uW>oQ3i=woHymbF`eejjL2b83l1qN07~u*q~@P zYjtj)J^q+PzpIxW=vW(y$>Owrx)mie`Y;-T z)%*0p-nf%?(JP6ydih-d0*9%#JJI@#Z`mfx_)TaPhypv!)jL_sLKS`DLLb2W(8sqn z3xftW1;T(F!{tly8tZ|lAR>wL!p{|CU}**C0?^LRqO!$Ppzaq(~~kNKuDU zjo&#fagbD)vz+Eq4tGq|PlrJ?kK_hbHrWl{3DHx77DYrPzSm$FeM-U_OdU%|wHh}V zi4e`CAfaSGa+$X3A7+KBYy>Yjm6(f}0Boe=y&8_Iie+0hmnbvSODAv&hvM(PB}()k z;=-~wZdHNFLcMYEX~MY#D9r%BN_ z?<)}&%@zh*2N~q2KB1vM)ne15`APBi>b=BBTAhN>u}x|YY+8bNA*NW$7im%E%~e~DE8v?& zQOxJvxLyTY{hPPa=km~0;sE?B4~u%)?T0B>4|{$+Gyz}bd>#@P+~fzU1HXcPn!RA( z@QUW%zt3;JBl)V@uYInJ<=qX9<=xNCc&zfMpR=*14&D&Gtl5r3CshO;D+J(&BM`dK7;+P>u^UsHVMzVlR)r9r_BiPhrM9`lmf4peoP z>B10}7l`6u+G}`FVLFuyufC#Ybhh?${$=81d!fKqr7AekdO$>1LZtNDk&QIc&?6TJ zLWIyBxh{-H?HkqYQZZ<}6Zta%f|i$u@zIEEyhP)~&uMw+H`yI#s%f6jWh~)OusNi6 z^z&{%1gYei)Z}R?nMCU zA>r?-44I*+)LzJks3}6*3x;RcbQLyVuXpgrTNR7!(asxQJhmtMIqx^vOmibVP&PYW zEHMqMKURI6s#p?haL_27ZnxCV46-`D6U^Rdfs9Je2LW~yA$Joczl#N42Al-oY>%3# zO{zRf2b?ZxEtm;;WI_apdghUsq6PvC(N4EQ81Sqpo?;@z zU!Xd}&T)Uk3ZT8CZmpCH$(S4FVJvI&W5gD*8%k6oqKqb-1eA)>XFIglyHLJI7XSR! zbnYo8Q=3XC$DD2$D`)vvjUCerK{tdtS|0Z|4;|+xR?1#*Qzkh+OM!6QD!{gd)g-vu zupQUW8KIFf^+Y@mt*q-^X3x675Ail*$rBYcc!6QtPH@7UmP@u`fi2F|ZXkvzHOFj+ z(X*8qLfsg^hO=48vWw-K@0_Y*K8p@+mubG4>MJ)fE61%fN=6Y;kBM(kuC1a%)Ks5d zK%~@p9&~tPZC)O?C0woFU0YP(5AFzZF+kP~z*D|CVC zjJ>xOztYaLosBys4S!G!ubbPjsk#=kM|#C!eh0GqD46kCFyadl(lcSXH#EEpO%xgC z*aJ(&W+5^)a8@(S)hf#pqW#5d7Eelkztl-7WGGIsU1Vel2&1x7iY;9vMzPY}nYWhu;~D0;+igTnn#N z*(KivZaU(We9JS^R#U%F(|D!&%4ca_Z3xd_!TJshQS86azPEnjwfq0xbAPn{FE5#&WqtRt`K$Wt2lBtZ ze3$k1)zSYy%ldnA=08XGce~xM>6!l&UEr(mKgs=#CFNg}HUDVFzt1=P1Mc#5S^e8) z{20x@m{?wYhkm{h{R;AHDzP6R9w`46PJf0NVaXOQn#rC(E9`~ZQ$|A(jkF${n7{;!EHe#ZDd zV}IqV|ACQ7{9iGCUSq#5uHXCVS9aVV;-jelLHyr4{?C5;nJf248~%0g`}?Y6f4yP; z=h6L{o9$=0ziw*ZS>Apx-)D{g|0MS}&bPlW=wDgi{uEx|JNCbd{_h-cKic*Cp!`ZX z_7gbUKlIm+dG+&{|4KmiE6}eTPCtNlUv>2Vc3^%0{k4z$%;@wh!mmUdKM?W-{wu=I zP5H^E;a7}b*(rWtObPx2#;-L3U!yjDJmBwZ z;#cq3AA*^+|KS1u8svZLEBh - - diff --git a/settings/repository/edu.mit.broad/picard-private-parts-1959.jar b/settings/repository/edu.mit.broad/picard-private-parts-1959.jar new file mode 100644 index 0000000000000000000000000000000000000000..ae11e636b1415998685bfacb36398b34f1a1492c GIT binary patch literal 347579 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

+G{xAg?}Hksz=Sb>W44 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

pDq=%+^yW?exD~9Ak$05js!J2lIo5=@x8j3-) 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 |!MVlA< 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 c}t)RlBWI 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 literal 0 HcmV?d00001 diff --git a/settings/repository/edu.mit.broad/picard-private-parts-1954.xml b/settings/repository/edu.mit.broad/picard-private-parts-1959.xml similarity index 58% rename from settings/repository/edu.mit.broad/picard-private-parts-1954.xml rename to settings/repository/edu.mit.broad/picard-private-parts-1959.xml index c702fd6e5..e7c7e3a21 100644 --- a/settings/repository/edu.mit.broad/picard-private-parts-1954.xml +++ b/settings/repository/edu.mit.broad/picard-private-parts-1959.xml @@ -1,3 +1,3 @@ - + diff --git a/settings/repository/net.sf/picard-1.48.889.xml b/settings/repository/net.sf/picard-1.48.889.xml deleted file mode 100644 index 877687930..000000000 --- a/settings/repository/net.sf/picard-1.48.889.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/settings/repository/net.sf/picard-1.48.889.jar b/settings/repository/net.sf/picard-1.49.895.jar similarity index 95% rename from settings/repository/net.sf/picard-1.48.889.jar rename to settings/repository/net.sf/picard-1.49.895.jar index 1b725dde5da26bac05010bc371775cdb890c323c..3ee1f209056b2b0a973d478f5e1ecb1a4971a3c7 100644 GIT binary patch delta 18811 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 (-r<;2kc=Gm3dj>o7~J#BUKJ zgb7BI|En0+OY>j7=Kl|RB@qaNLVi<(VxVL!xDPv58x*{qXo~t)Xqx$d&=j+j=vU!{ zB26K?qshQ=rouTQ_z0;Je2`swZwYUOVIx>CD#kj(;e-e>ouoRkMi@E)`wYfH-DvC> zm;+D>>+!)7)*N|Sp?_dM1*cuBi3eF*%n!Z_?;^KiOCd*zP!He)(-G%)<%6XWgr3hw zi%0*$(DMW4BDl;X5C+|BE~>i1Rs|<`b07$dqFmr(n86E#Vxr7M^_iF@9ZCBLgO`$Y zMdspnxn{QE(?7AoQEP@-_;s{r@EN+7;aqHyG+2a79#lgnI1 zi7uZkgTe5lpDb1Qm}>{}s=@S=0j3#9UGV8VsF^@cAlE}r+#yS$GvH{7bXS~#0oIl~ zLk9_BKGY-_b?v!s8b=ZqJjR0rL0Q-r?nLz!*m`MnBvX>mQLuc3q)!PW3*gz2%`UK{ zgO+}uEfu(ym?xVNFGZv3pmCu_$%;mVB$I_)qd@3$^pOO!RTr`dYDF3e9zr9eEYwIQ z8rk-RxN>DeKSIw?vRKjO$Y)DW(53trMVF@Fi4f3b32-(*KJrtvlEHh0TD5X$)ru_T zTB%?F3O{MU64b9qE5So(g_MO_xe@6Lk-1KvNibwEtMr~HBUs#UH(mQ;xe2Q6`f6#x z-IM?w7XeBw=j>y^1uLMYBcmbBVNjW2%KeTjX@V{}tthD?CzYVm!7;K>vK6FD!KEE= z5L`OKM6nW9D+Zt&0Yk7Iba~-aKe`zgF&;z+#)URiAcoJx23rcR&%`33Juq_lzqA5U z9c*&{NX)|Fuuwy*=AW|m0;58yRm=+5_u()!*MK5g5=y+eDH`GlgAV^5EiiWg+ zoPdMWLK>2FFlCD+0nQYHay2DYdt`5%)qJp7vc%=n90X(HPVfe4MHh^HU>#J zCm7sF^`IT3=8xI%rPyRaD-=sc=p*OV8n&QFN`6s#ud>SORo9Ux;ax}3T%-Tr$gu^< zRk)OeXGb<(Wo^Renv!S|tp=y}HQ+r`O;Ux{A~j$^TbS2;VS$0YkFQ@Ua+l#eP)iY^ zA~ncw04-Wf2>kJYFR+AI#2OD+=qL}Oh71Rt=MRo5AOTSONGSGVFRtPyz{^&w{9dy9 z7qe0<>CAwDi?;td30s7dauo9Y&g2b?Iq82QhaCrq=*S@FR$)!mR$I|Bj5YyJH6?zu z840Gb4ln)R6EBX8;@SWIE%9zqG`XaT2{I%Yycd8IB*7$jS#}!cK}=HtEV z1IxW+A0(LVu&}l+Fk!esEnl40)hX52j#yfcI2Oj8{mc*$43JM!wbW?~| zKJO$!2R8mdU=bze^ci$=RhV`PC8xwSM>Ev>uOU9*Y=da2#D)xvd^y>ti2H@o1) zF3fhuATQkx(zNp=EnWBZ8ZPtHdSD*F6XBV33xjp5IHsiT)&Zh6$j|ygyn`4}-P%>0njNWYH3jhVxC>pa zWyHDNzXPrJ#QUe46RowxOAwD)*5+0DNm_pY{Blnqj-KenS@VkXvMXzSUUp|^veX9q z)?DjTajdO#)tr9>h>!Fv*=P%7hFey%{nke&{l z`GI0gjO_>ExJ~VCVM6^oU2WO!T;7Q}y1aj&Oa76CJbttoR|YP<92si+SG=>xonUJ& z4m(Y$HaCeM(mt;D`R9=^dtqtBHXpT?WO3JJnay5fgSRi&;l)eqblW)ln^`usIP3hB zW;-WpdGl;u!gr4s+GY!D#xApU701@svTY&4PsSa##iH-mAG9?S$Md-}5BF;U;oU-u zFL2!$SNB#vbYf&a+yjF5GzNRb@3vUMA@#Vegy@GA7j4hPIc)l6+gUxonDqC+=YM*F z-#pdKrJwA@R@{`!+c({|1&E{D^MBhm2lE5lsj}R&1g||TD-RQFdIriZ`KxPtb~U*b z@8TVi@)8|KTi!_a5w`AcA}jCJ7PXSQ3+I3ABpYlTPuoxaQ76F-IyO9Bu7gc1J6^7j zx9Hf*c)1GpA1gapu7)wrx(t@<@|JmnRu8md{i%gU|a-8{z3ZFNLatqG6!5Fy@udE*fW-kzki*plTK4r-qa z8e-?|NLG|Dks=S|ElDYI7mjl+MgEbuG@SslkaN}qMTBOeJdC%DnW%{Pd!pQux73)V zn3Fz9al)HPax4cmoD89Zd?rs;kS|V_+w+#-DM}?}irj{`Tqvwmn5wiSPL-oMXx~)u zD)MokrYJUan%tYWT$-j>8a7?#Z=TrH>Ch>N{BXKL6_cvqEKZeMbI{XNrFS4+8}OF& z8A|WGo1rMya;7|p-_=2?-QLxg)5izE2Vk@;&L7Ci@GSs#nT zX3kOQRsu}*cNC)xat9au6tOX6O=$qC9E%`7)-+8v`+iY)q$+LaB=R78)@ z1ksJ2A*e=C2e+8@aLY89fUv|kN!^#p>!Cj?7o(LaGwm?yZSXZKjPd^>ammNriKk4Fgn*wLEOtjc0#bUsd5owwKr zLI6q)Cwwc5TP!!^Oe+Lx)7234SgJW8eOe%loP7sIqhp}FUidj^94L&%S?Sh`1ioKO z7$eIUf#zM8D4zad33%FXSuuFRGVt_1gyRrDh42mA5bn>6OJ#4a+Q<=;pS5#=7=hv( z^5J^~YT7?)9UHV%<|}NLz7)9JJLLe`*v+Mit2fYq%AHsY+YRQ zOW+y!r=4@S==;xg3a%mDa{Agf;QnR3lq^wfceF0Sxl_f z&Ehn4*=&Th23SI@wmd6cm<;bgv-&|NEnHU{Nj;dyDw$s>W1*{{{U}`X=IxnXwOY3L zk`foVI#l(Z$fC1gg34Z{wB`bZiYcvUCu%K4Q>DBbK)+2A1h?mC-C5VwipmKHnw=^@ zK&4^77J?2S=*d8B$Z{xwUoY(JeVi(9KWZ3x0DmRDeL<#i>v z*Z>SG2REodWGR0#c^Xqa6bO3NfO(^kk9i&N8CckyP*dlX*-EE{`$~$Op$KmksgNZ` z>twcbo#K|$2;1ILfra(bSy(|!ow0~GXgwhO)Uyb|mF4yX?xWYsX0BLlavRQ=)O8`NYY-Ds3oHL}kz~#l~8|4ywnEb&S z^g9ld0~VNE9e-IVU77!H%JO^MZ$Lk@goECX<^86lD3^BU3KCrj!Qz}56Eim{i7|Q; zkVn@Q<|w-FNr;~l zQQOw6Z8q5GnJs&9^NQ|%{t8igO+`JSm~<17cS434BH1R&aORa5=383h7v4stD@EPt-vp%v;ej7HMp`< zTNT&cLD1n41l3`sLk%XTFEq2wHUOQfCqVUL3`Ul{O>yW}%ZSc0tnjcja_Y9P4H3T` zH@oQCEButj32SI`#0tR+uwqUwy7~%BK_}Fo*yinWbq$1|PgeGltCER~(`>unSG3EK?bMH6NE4s`oY2gsETFPyv{BBr!J$c4n+m z%Xewqb@kS-xjG!?6D+-*h>oND}DaNYY6P(D9xbp16QiNa$b0XTEDu|MX8r@iO zwh~1}H-!H?ajjg7`0nDm@Rbai-zsGrc7rD-|Kb3ZVeyxZwxXW!*#q!NTO9C;Y~&uL zlV&1lb)Eq6d&E}?K~E7h=01YlSoVET5XTwsnwY%+YX4k-;tKS7Hs?8bDS58~pM!As zcLIK3uk6d+@a0~~i9wL~u{h_nx*E1J7qVA^#%N$=_9<>Cx|{spu+Gv7{A*g1wJ5BM zE-S;28lBuc0e-cD{0~$Ge8&#{>ORnNMYsTEKZgZSnOsG5<w!xH*#aY#+QHbxu z;&YW)tK2WQ^`_E z>8*hF%Q2kG!d8;U0#FAF40Xp}R?5y{4lb_Dc{cuttQIfNZK z0Np-rs=yqpmd6P4$#zhcU{ww&$zoI1wmOf&RxHj|4`FeK;EWiP#gaonze>$|9g=aQ zZ!W_M4#}R}YlD_~-Pm9x1WOZ#&v4T3QnDES*B0htQ`yYlfnPs=4$rJ)F3Be6DC@3I z2-#Dy5K@{?e_YVFIoIcUL%?8Z=p^Wm>OzqGgW0<%cV0aVoT6(9(25ANiKW#79V-8! zcrxM-fNyM33|`Q}Y$%#;S0H?KYXP?nH@ooJi>orZPWRt^+7W`qc_{2}i}>YOvm;6d z=y3$N1Y}{Wr?}w$7LNQlm!hlf|6R_k%t3q)yywo~p1U|!;WY36DPK!f0^Wi_fiQLa zWu@%hUPz;7^DikPc4qefW_T6Ir%(bM$k;hwk8yN1>%3XVRv%UHlRC7>+6)&$u=qOR zZ+(yW?rhU1Q0E2U^O?Zua=jD&O6Gq|nQ6KmgB5LggM}}M8C<@1V}lJAE$i}&Z01|( z?H7B#ep8YVEY2IMYnCD^8+&_9ajNM!a4Zq1z#P}|8C=VU<;rn|ZAN~{+<2IMusHXU zE~q%^3gm`So{N>;p~YcukAp~l2zvth(HOyoo&+aEo`4v_)>v$fP+AirEMEMSf%nvf zqiNBxFzB&Va&parW`Yag8(2bp_)P&nR78HCkza6Y0gr2KDOq%C5u4b&P9Hx)usC<+ zQ(hX?)$n`tc0gT}B=;2(IVF|s^h#W(nOU%vTz1-cANIVgpHSt;8y^I%bk zhX8B;8Dr`XDGy8eLIn8CO3Ay#XrAoLte2sC$K)wG6#eMpzulL32l30WeiIc-uH}Ix z+YD^;S)8*C*1)2@Wz1Os{ow8ZnOM?UWhg#4Tl&pDSLk{u&J*QDmUC8_C|BRKuQow! zU~%5FpR0~cec19^@T+}XWOC2_T4quBN#KSh(8KzjTj@Wb{|HM>2;s$q@(RP6m0;Y}v7wijgo%qdng!!;5YPqkAjX&?fy z1UZRMp2g9bJRdlHD&!=e2TrGR1*p||Ie@?Q!I$r>$DeXZmHC(e;p=w>uiv%o<{qVg z_Rg6U83jWXi}T27d`=Ms>hVDqmohb>8>}_4I6LJcYjZ(a{=O+VYkUMMV{uk}_$$Hh z_C;CE>c6t;*x3t;r*2&U{nx%O1|RGL@9IM@D*pI8vZ-esBOJLvaUK|*3A=L*GE!VoDF|fS#Xlwsh%Ztk<@$&;_QAwc1vq;cxJdw!`eei<-J>UIpM!~Xnf5g^xL&< z#-g=$>}BBA7=D}z#sW7Rn{^p{hbKf!5RwnuMsx#ST42{MgGC5>j-X#+1jzr2%zvN8 z>Ry3Xj}D@BRtIpIW7>=g+dpcsJG`NQQr;=;|$b7%D(`-GTXB zRgBDU@q}o>Us#-{feI55A6CuXtu`L=++EYJ0;}Pv2nuBNQ{lSCqTNb#+(FQcSprme zGeWp>REqBRVUR7cG;~t9Z@R#*l5X>3zSos#zcOpd>q9UtVsSpMuQMOvA<7{>R4ayLr06=_C~A>Ej=E@VZ=^lYTYYJ9E(HRg^zIAgKHA2&#Y=GsGrze}?P5({QkXCD_U2*DN7l z4(D8d%Lh`!B|(~e61@2yZg=pR$Z``vA1@0H{chO2S>9!vmi4>|-o}|~Fv3s6)*CH= z%N*7C)Kq_I-j;X}hsC)&>%mqWQPZx$2;{pwk4UL4{&?^a-Z5gS>xAT4y@;z1JAPY< z)0?+J;=o7_b7!sQ8r&JKM!CHacfekKW0nJ-Y;b$o#Kzx|U3mhn>JzY*t=tF+v|>|) zH{-r7Kmw^XHq>BwJ%E5)h6}0qzW~&yGlHtKeSg6l6I3_bKmEKr3JI5Av&~5` an}-aP{n(RpaQCM2UD>L=9uFr? + + diff --git a/settings/repository/net.sf/sam-1.48.889.xml b/settings/repository/net.sf/sam-1.48.889.xml deleted file mode 100644 index 8046a0c02..000000000 --- a/settings/repository/net.sf/sam-1.48.889.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/settings/repository/net.sf/sam-1.48.889.jar b/settings/repository/net.sf/sam-1.49.895.jar similarity index 95% rename from settings/repository/net.sf/sam-1.48.889.jar rename to settings/repository/net.sf/sam-1.49.895.jar index 33ae4aa7d2e0652c767092e89fef9e93c92887f2..c55ab0b7274ad3a7f911d12050ec71c44f13b0f5 100644 GIT binary patch delta 7726 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 BJ{bT2 delta 7901 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 diff --git a/settings/repository/net.sf/sam-1.49.895.xml b/settings/repository/net.sf/sam-1.49.895.xml new file mode 100644 index 000000000..0436ce881 --- /dev/null +++ b/settings/repository/net.sf/sam-1.49.895.xml @@ -0,0 +1,3 @@ + + + From 92c7cfa1c81ad1c91e44eb8cc4cf769c1c5c9d4e Mon Sep 17 00:00:00 2001 From: Christopher Hartl Date: Tue, 19 Jul 2011 20:11:31 -0400 Subject: [PATCH 36/41] BWA bindings and tests moved to public (was required for ValidationAmplicons) Integration tests for ValidationAmplicons. New argument to disable BWA, lowercase letters only for repetitiveness instead. --- public/c/SeparateQltout.cc | 70 +++ public/c/bwa/Makefile | 21 + public/c/bwa/build_linux.sh | 7 + public/c/bwa/build_mac.sh | 7 + public/c/bwa/bwa_gateway.cpp | 268 +++++++++++ public/c/bwa/bwa_gateway.h | 82 ++++ public/c/bwa/libbwa.so.1 | Bin 0 -> 380907 bytes ...tute_sting_alignment_bwa_c_BWACAligner.cpp | 437 ++++++++++++++++++ ...titute_sting_alignment_bwa_c_BWACAligner.h | 61 +++ public/c/libenvironhack/Makefile | 10 + public/c/libenvironhack/libenvironhack.c | 37 ++ public/c/libenvironhack/libenvironhack.dylib | Bin 0 -> 28904 bytes .../sting/alignment/Aligner.java | 52 +++ .../sting/alignment/Alignment.java | 221 +++++++++ .../alignment/AlignmentValidationWalker.java | 157 +++++++ .../sting/alignment/AlignmentWalker.java | 133 ++++++ .../alignment/CountBestAlignmentsWalker.java | 125 +++++ .../sting/alignment/bwa/BWAAligner.java | 38 ++ .../sting/alignment/bwa/BWAConfiguration.java | 44 ++ .../sting/alignment/bwa/BWTFiles.java | 240 ++++++++++ .../sting/alignment/bwa/c/BWACAligner.java | 258 +++++++++++ .../sting/alignment/bwa/c/BWAPath.java | 101 ++++ .../bwa/java/AlignerTestHarness.java | 165 +++++++ .../bwa/java/AlignmentMatchSequence.java | 151 ++++++ .../alignment/bwa/java/AlignmentState.java | 13 + .../alignment/bwa/java/BWAAlignment.java | 190 ++++++++ .../alignment/bwa/java/BWAJavaAligner.java | 392 ++++++++++++++++ .../sting/alignment/bwa/java/LowerBound.java | 88 ++++ .../sting/alignment/package-info.java | 4 + .../alignment/reference/bwt/AMBWriter.java | 68 +++ .../alignment/reference/bwt/ANNWriter.java | 95 ++++ .../sting/alignment/reference/bwt/BWT.java | 172 +++++++ .../alignment/reference/bwt/BWTReader.java | 86 ++++ .../bwt/BWTSupplementaryFileGenerator.java | 60 +++ .../alignment/reference/bwt/BWTWriter.java | 71 +++ .../sting/alignment/reference/bwt/Bases.java | 108 +++++ .../sting/alignment/reference/bwt/Counts.java | 151 ++++++ .../reference/bwt/CreateBWTFromReference.java | 200 ++++++++ .../reference/bwt/SequenceBlock.java | 41 ++ .../alignment/reference/bwt/SuffixArray.java | 159 +++++++ .../reference/bwt/SuffixArrayReader.java | 82 ++++ .../reference/bwt/SuffixArrayWriter.java | 67 +++ .../packing/BasePackedInputStream.java | 92 ++++ .../packing/BasePackedOutputStream.java | 140 ++++++ .../packing/CreatePACFromReference.java | 64 +++ .../reference/packing/PackUtils.java | 135 ++++++ .../packing/UnsignedIntPackedInputStream.java | 102 ++++ .../UnsignedIntPackedOutputStream.java | 118 +++++ .../walkers/sequenom/CreateSequenomMask.java | 50 -- .../walkers/sequenom/PickSequenomProbes.java | 334 ------------- .../validation/ValidationAmplicons.java | 40 +- .../alignment/AlignerIntegrationTest.java | 27 ++ .../PickSequenomProbesIntegrationTest.java | 34 -- .../ValidationAmpliconsIntegrationTest.java | 56 +++ 54 files changed, 5492 insertions(+), 432 deletions(-) create mode 100644 public/c/SeparateQltout.cc create mode 100644 public/c/bwa/Makefile create mode 100755 public/c/bwa/build_linux.sh create mode 100644 public/c/bwa/build_mac.sh create mode 100644 public/c/bwa/bwa_gateway.cpp create mode 100644 public/c/bwa/bwa_gateway.h create mode 100755 public/c/bwa/libbwa.so.1 create mode 100644 public/c/bwa/org_broadinstitute_sting_alignment_bwa_c_BWACAligner.cpp create mode 100644 public/c/bwa/org_broadinstitute_sting_alignment_bwa_c_BWACAligner.h create mode 100644 public/c/libenvironhack/Makefile create mode 100644 public/c/libenvironhack/libenvironhack.c create mode 100755 public/c/libenvironhack/libenvironhack.dylib create mode 100644 public/java/src/org/broadinstitute/sting/alignment/Aligner.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/Alignment.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/AlignmentValidationWalker.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/AlignmentWalker.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/CountBestAlignmentsWalker.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/bwa/BWAAligner.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/bwa/BWAConfiguration.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/bwa/BWTFiles.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/bwa/c/BWACAligner.java create mode 100755 public/java/src/org/broadinstitute/sting/alignment/bwa/c/BWAPath.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/bwa/java/AlignerTestHarness.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/bwa/java/AlignmentMatchSequence.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/bwa/java/AlignmentState.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/bwa/java/BWAAlignment.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/bwa/java/BWAJavaAligner.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/bwa/java/LowerBound.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/package-info.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/reference/bwt/AMBWriter.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/reference/bwt/ANNWriter.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/reference/bwt/BWT.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/reference/bwt/BWTReader.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/reference/bwt/BWTSupplementaryFileGenerator.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/reference/bwt/BWTWriter.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/reference/bwt/Bases.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/reference/bwt/Counts.java create mode 100755 public/java/src/org/broadinstitute/sting/alignment/reference/bwt/CreateBWTFromReference.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/reference/bwt/SequenceBlock.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/reference/bwt/SuffixArray.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/reference/bwt/SuffixArrayReader.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/reference/bwt/SuffixArrayWriter.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/reference/packing/BasePackedInputStream.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/reference/packing/BasePackedOutputStream.java create mode 100755 public/java/src/org/broadinstitute/sting/alignment/reference/packing/CreatePACFromReference.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/reference/packing/PackUtils.java create mode 100644 public/java/src/org/broadinstitute/sting/alignment/reference/packing/UnsignedIntPackedInputStream.java create mode 100755 public/java/src/org/broadinstitute/sting/alignment/reference/packing/UnsignedIntPackedOutputStream.java delete mode 100755 public/java/src/org/broadinstitute/sting/gatk/walkers/sequenom/CreateSequenomMask.java delete mode 100755 public/java/src/org/broadinstitute/sting/gatk/walkers/sequenom/PickSequenomProbes.java create mode 100644 public/java/test/org/broadinstitute/sting/alignment/AlignerIntegrationTest.java delete mode 100755 public/java/test/org/broadinstitute/sting/gatk/walkers/sequenom/PickSequenomProbesIntegrationTest.java create mode 100755 public/java/test/org/broadinstitute/sting/gatk/walkers/validation/ValidationAmpliconsIntegrationTest.java diff --git a/public/c/SeparateQltout.cc b/public/c/SeparateQltout.cc new file mode 100644 index 000000000..7644c9603 --- /dev/null +++ b/public/c/SeparateQltout.cc @@ -0,0 +1,70 @@ +#include "MainTools.h" +#include "Basevector.h" +#include "lookup/LookAlign.h" +#include "lookup/SerialQltout.h" + +unsigned int MatchingEnd(look_align &la, vecbasevector &candidates, vecbasevector &ref) { + //la.PrintParseable(cout); + + for (int i = 0; i < candidates.size(); i++) { + look_align newla = la; + + if (newla.rc1) { candidates[i].ReverseComplement(); } + newla.ResetFromAlign(newla.a, candidates[i], ref[la.target_id]); + + //newla.PrintParseable(cout, &candidates[i], &ref[newla.target_id]); + //cout << newla.Errors() << " " << la.Errors() << endl; + + if (newla.Errors() == la.Errors()) { + return i; + } + } + + //FatalErr("Query id " + ToString(la.query_id) + " had no matches."); + + return candidates.size() + 1; +} + +int main(int argc, char **argv) { + RunTime(); + + BeginCommandArguments; + CommandArgument_String(ALIGNS); + CommandArgument_String(FASTB_END_1); + CommandArgument_String(FASTB_END_2); + CommandArgument_String(REFERENCE); + + CommandArgument_String(ALIGNS_END_1_OUT); + CommandArgument_String(ALIGNS_END_2_OUT); + EndCommandArguments; + + vecbasevector ref(REFERENCE); + vecbasevector reads1(FASTB_END_1); + vecbasevector reads2(FASTB_END_2); + + ofstream aligns1stream(ALIGNS_END_1_OUT.c_str()); + ofstream aligns2stream(ALIGNS_END_2_OUT.c_str()); + + basevector bv; + + SerialQltout sqltout(ALIGNS); + look_align la; + while (sqltout.Next(la)) { + vecbasevector candidates(2); + candidates[0] = reads1[la.query_id]; + candidates[1] = reads2[la.query_id]; + + unsigned int matchingend = MatchingEnd(la, candidates, ref); + if (matchingend < 2) { + bv = (matchingend == 0) ? reads1[la.query_id] : reads2[la.query_id]; + + //la.PrintParseable(cout, &bv, &ref[la.target_id]); + la.PrintParseable(((matchingend == 0) ? aligns1stream : aligns2stream), &bv, &ref[la.target_id]); + } + } + + aligns1stream.close(); + aligns2stream.close(); + + return 0; +} diff --git a/public/c/bwa/Makefile b/public/c/bwa/Makefile new file mode 100644 index 000000000..6399a0e6d --- /dev/null +++ b/public/c/bwa/Makefile @@ -0,0 +1,21 @@ +CXX=g++ +CXXFLAGS=-g -Wall -O2 -m64 -fPIC + +.cpp.o: + $(CXX) -c $(CXXFLAGS) -I$(BWA_HOME) -I$(JAVA_INCLUDE) $< -o $@ + +all: init lib + +init: + @echo Please make sure the following platforms are set correctly on your machine. + @echo BWA_HOME=$(BWA_HOME) + @echo JAVA_INCLUDE=$(JAVA_INCLUDE) + @echo TARGET_LIB=$(TARGET_LIB) + @echo EXTRA_LIBS=$(EXTRA_LIBS) + @echo LIBTOOL_COMMAND=$(LIBTOOL_COMMAND) + +lib: org_broadinstitute_sting_alignment_bwa_c_BWACAligner.o bwa_gateway.o + $(LIBTOOL_COMMAND) $? -o $(TARGET_LIB) -L$(BWA_HOME) -lbwacore $(EXTRA_LIBS) + +clean: + rm *.o libbwa.* diff --git a/public/c/bwa/build_linux.sh b/public/c/bwa/build_linux.sh new file mode 100755 index 000000000..c713f3963 --- /dev/null +++ b/public/c/bwa/build_linux.sh @@ -0,0 +1,7 @@ +#!/bin/sh +export BWA_HOME="/humgen/gsa-scr1/hanna/src/bwa" +export JAVA_INCLUDE="/broad/tools/Linux/x86_64/pkgs/jdk_1.6.0_12/include -I/broad/tools/Linux/x86_64/pkgs/jdk_1.6.0_12/include/linux" +export TARGET_LIB="libbwa.so" +export EXTRA_LIBS="-lc -lz -lstdc++ -lpthread" +export LIBTOOL_COMMAND="g++ -shared -Wl,-soname,libbwa.so" +make diff --git a/public/c/bwa/build_mac.sh b/public/c/bwa/build_mac.sh new file mode 100644 index 000000000..bfed900bb --- /dev/null +++ b/public/c/bwa/build_mac.sh @@ -0,0 +1,7 @@ +#!/bin/sh +export BWA_HOME="/Users/mhanna/src/bwa" +export JAVA_INCLUDE="/System/Library/Frameworks/JavaVM.framework/Headers" +export TARGET_LIB="libbwa.dylib" +export EXTRA_LIBS="-lc -lz -lsupc++" +export LIBTOOL_COMMAND="libtool -dynamic" +make diff --git a/public/c/bwa/bwa_gateway.cpp b/public/c/bwa/bwa_gateway.cpp new file mode 100644 index 000000000..3f6850e37 --- /dev/null +++ b/public/c/bwa/bwa_gateway.cpp @@ -0,0 +1,268 @@ +#include +#include + +#include "bwase.h" +#include "bwa_gateway.h" + +BWA::BWA(const char* ann_filename, + const char* amb_filename, + const char* pac_filename, + const char* forward_bwt_filename, + const char* forward_sa_filename, + const char* reverse_bwt_filename, + const char* reverse_sa_filename) +{ + // Load the bns (?) and reference + bns = bns_restore_core(ann_filename,amb_filename,pac_filename); + reference = new ubyte_t[bns->l_pac/4+1]; + rewind(bns->fp_pac); + fread(reference, 1, bns->l_pac/4+1, bns->fp_pac); + fclose(bns->fp_pac); + bns->fp_pac = NULL; + + // Load the BWTs (both directions) and suffix arrays (both directions) + bwts[0] = bwt_restore_bwt(forward_bwt_filename); + bwt_restore_sa(forward_sa_filename, bwts[0]); + bwts[1] = bwt_restore_bwt(reverse_bwt_filename); + bwt_restore_sa(reverse_sa_filename, bwts[1]); + load_default_options(); + + // initialize the bwase subsystem + bwase_initialize(); +} + +BWA::~BWA() { + delete[] reference; + bns_destroy(bns); + bwt_destroy(bwts[0]); + bwt_destroy(bwts[1]); +} + +void BWA::find_paths(const char* bases, const unsigned read_length, bwt_aln1_t*& paths, unsigned& num_paths, unsigned& best_path_count, unsigned& second_best_path_count) +{ + bwa_seq_t* sequence = create_sequence(bases, read_length); + + // Calculate the suffix array interval for each sequence, storing the result in sequence->aln (and sequence->n_aln). + // This method will destroy the contents of seq and rseq. + bwa_cal_sa_reg_gap(0,bwts,1,sequence,&options); + + paths = new bwt_aln1_t[sequence->n_aln]; + memcpy(paths,sequence->aln,sequence->n_aln*sizeof(bwt_aln1_t)); + num_paths = sequence->n_aln; + + // Call aln2seq to initialize the type of match present. + bwa_aln2seq(sequence->n_aln,sequence->aln,sequence); + best_path_count = sequence->c1; + second_best_path_count = sequence->c2; + + bwa_free_read_seq(1,sequence); +} + +Alignment* BWA::generate_single_alignment(const char* bases, const unsigned read_length) { + bwa_seq_t* sequence = create_sequence(bases,read_length); + + // Calculate paths. + bwa_cal_sa_reg_gap(0,bwts,1,sequence,&options); + + // Check for no alignments found and return null. + if(sequence->n_aln == 0) { + bwa_free_read_seq(1,sequence); + return NULL; + } + + // bwa_cal_sa_reg_gap destroys the bases / read length. Copy them back in. + copy_bases_into_sequence(sequence,bases,read_length); + + // Pick best alignment and propagate its information into the sequence. + bwa_aln2seq(sequence->n_aln,sequence->aln,sequence); + + // Generate the best alignment from the sequence. + Alignment* alignment = new Alignment; + *alignment = generate_final_alignment_from_sequence(sequence); + + bwa_free_read_seq(1,sequence); + + return alignment; +} + +void BWA::generate_alignments_from_paths(const char* bases, + const unsigned read_length, + bwt_aln1_t* paths, + const unsigned num_paths, + const unsigned best_count, + const unsigned second_best_count, + Alignment*& alignments, + unsigned& num_alignments) +{ + bwa_seq_t* sequence = create_sequence(bases,read_length); + + sequence->aln = paths; + sequence->n_aln = num_paths; + + // (Ab)use bwa_aln2seq to propagate values stored in the path out into the sequence itself. + bwa_aln2seq(sequence->n_aln,sequence->aln,sequence); + + // But overwrite key parts of the sequence in case the user passed back only a smaller subset + // of the paths. + sequence->c1 = best_count; + sequence->c2 = second_best_count; + sequence->type = sequence->c1 > 1 ? BWA_TYPE_REPEAT : BWA_TYPE_UNIQUE; + + num_alignments = 0; + for(unsigned i = 0; i < (unsigned)sequence->n_aln; i++) + num_alignments += (sequence->aln + i)->l - (sequence->aln + i)->k + 1; + + alignments = new Alignment[num_alignments]; + unsigned alignment_idx = 0; + + for(unsigned path_idx = 0; path_idx < (unsigned)num_paths; path_idx++) { + // Stub in a 'working' path, so that only the desired alignment is local-aligned. + const bwt_aln1_t* path = paths + path_idx; + bwt_aln1_t working_path = *path; + + // Loop through all alignments, aligning each one individually. + for(unsigned sa_idx = path->k; sa_idx <= path->l; sa_idx++) { + working_path.k = working_path.l = sa_idx; + sequence->aln = &working_path; + sequence->n_aln = 1; + + sequence->sa = sa_idx; + sequence->strand = path->a; + sequence->score = path->score; + + // Each time through bwa_refine_gapped, seq gets reversed. Revert the reverse. + // TODO: Fix the interface to bwa_refine_gapped so its easier to work with. + if(alignment_idx > 0) + seq_reverse(sequence->len, sequence->seq, 0); + + // Copy the local alignment data into the alignment object. + *(alignments + alignment_idx) = generate_final_alignment_from_sequence(sequence); + + alignment_idx++; + } + } + + sequence->aln = NULL; + sequence->n_aln = 0; + + bwa_free_read_seq(1,sequence); +} + +Alignment BWA::generate_final_alignment_from_sequence(bwa_seq_t* sequence) { + // Calculate the local coordinate and local alignment. + bwa_cal_pac_pos_core(bwts[0],bwts[1],sequence,options.max_diff,options.fnr); + bwa_refine_gapped(bns, 1, sequence, reference, NULL); + + // Copy the local alignment data into the alignment object. + Alignment alignment; + + // Populate basic path info + alignment.edit_distance = sequence->nm; + alignment.num_mismatches = sequence->n_mm; + alignment.num_gap_opens = sequence->n_gapo; + alignment.num_gap_extensions = sequence->n_gape; + alignment.num_best = sequence->c1; + alignment.num_second_best = sequence->c2; + + // Final alignment position. + alignment.type = sequence->type; + bns_coor_pac2real(bns, sequence->pos, pos_end(sequence) - sequence->pos, &alignment.contig); + alignment.pos = sequence->pos - bns->anns[alignment.contig].offset + 1; + alignment.negative_strand = sequence->strand; + alignment.mapping_quality = sequence->mapQ; + + // Cigar step. + alignment.cigar = NULL; + if(sequence->cigar) { + alignment.cigar = new uint16_t[sequence->n_cigar]; + memcpy(alignment.cigar,sequence->cigar,sequence->n_cigar*sizeof(uint16_t)); + } + alignment.n_cigar = sequence->n_cigar; + + // MD tag with a better breakdown of differences in the cigar + alignment.md = strdup(sequence->md); + delete[] sequence->md; + sequence->md = NULL; + + return alignment; +} + +void BWA::load_default_options() +{ + options.s_mm = 3; + options.s_gapo = 11; + options.s_gape = 4; + options.mode = 3; + options.indel_end_skip = 5; + options.max_del_occ = 10; + options.max_entries = 2000000; + options.fnr = 0.04; + options.max_diff = -1; + options.max_gapo = 1; + options.max_gape = 6; + options.max_seed_diff = 2; + options.seed_len = 2147483647; + options.n_threads = 1; + options.max_top2 = 30; + options.trim_qual = 0; +} + +void BWA::set_max_edit_distance(float edit_distance) { + if(edit_distance > 0 && edit_distance < 1) { + options.fnr = edit_distance; + options.max_diff = -1; + } + else { + options.fnr = -1.0; + options.max_diff = (int)edit_distance; + } +} + +void BWA::set_max_gap_opens(int max_gap_opens) { options.max_gapo = max_gap_opens; } +void BWA::set_max_gap_extensions(int max_gap_extensions) { options.max_gape = max_gap_extensions; } +void BWA::set_disallow_indel_within_range(int indel_range) { options.indel_end_skip = indel_range; } +void BWA::set_mismatch_penalty(int penalty) { options.s_mm = penalty; } +void BWA::set_gap_open_penalty(int penalty) { options.s_gapo = penalty; } +void BWA::set_gap_extension_penalty(int penalty) { options.s_gape = penalty; } + +/** + * Create a sequence with a set of reasonable initial defaults. + * Will leave seq and rseq empty. + */ +bwa_seq_t* BWA::create_sequence(const char* bases, const unsigned read_length) +{ + bwa_seq_t* sequence = new bwa_seq_t; + + sequence->tid = -1; + + sequence->name = 0; + + copy_bases_into_sequence(sequence, bases, read_length); + + sequence->qual = 0; + sequence->aln = 0; + sequence->md = 0; + + sequence->cigar = NULL; + sequence->n_cigar = 0; + + sequence->multi = NULL; + sequence->n_multi = 0; + + return sequence; +} + +void BWA::copy_bases_into_sequence(bwa_seq_t* sequence, const char* bases, const unsigned read_length) +{ + // seq, rseq will ultimately be freed by bwa_cal_sa_reg_gap + sequence->seq = new ubyte_t[read_length]; + sequence->rseq = new ubyte_t[read_length]; + for(unsigned i = 0; i < read_length; i++) sequence->seq[i] = nst_nt4_table[(unsigned)bases[i]]; + memcpy(sequence->rseq,sequence->seq,read_length); + + // BWA expects the read bases to arrive reversed. + seq_reverse(read_length,sequence->seq,0); + seq_reverse(read_length,sequence->rseq,1); + + sequence->full_len = sequence->len = read_length; +} diff --git a/public/c/bwa/bwa_gateway.h b/public/c/bwa/bwa_gateway.h new file mode 100644 index 000000000..0ef0a129b --- /dev/null +++ b/public/c/bwa/bwa_gateway.h @@ -0,0 +1,82 @@ +#ifndef BWA_GATEWAY +#define BWA_GATEWAY + +#include + +#include "bntseq.h" +#include "bwt.h" +#include "bwtaln.h" + +class Alignment { + public: + uint32_t type; + int contig; + bwtint_t pos; + bool negative_strand; + uint32_t mapping_quality; + + uint16_t *cigar; + int n_cigar; + + uint8_t num_mismatches; + uint8_t num_gap_opens; + uint8_t num_gap_extensions; + uint16_t edit_distance; + + uint32_t num_best; + uint32_t num_second_best; + + char* md; +}; + +class BWA { + private: + bntseq_t *bns; + ubyte_t* reference; + bwt_t* bwts[2]; + gap_opt_t options; + + void load_default_options(); + bwa_seq_t* create_sequence(const char* bases, const unsigned read_length); + void copy_bases_into_sequence(bwa_seq_t* sequence, const char* bases, const unsigned read_length); + Alignment generate_final_alignment_from_sequence(bwa_seq_t* sequence); + + public: + BWA(const char* ann_filename, + const char* amb_filename, + const char* pac_filename, + const char* forward_bwt_filename, + const char* forward_sa_filename, + const char* reverse_bwt_filename, + const char* reverse_sa_filename); + ~BWA(); + + // Parameterize the aligner. + void set_max_edit_distance(float edit_distance); + void set_max_gap_opens(int max_gap_opens); + void set_max_gap_extensions(int max_gap_extensions); + void set_disallow_indel_within_range(int indel_range); + void set_mismatch_penalty(int penalty); + void set_gap_open_penalty(int penalty); + void set_gap_extension_penalty(int penalty); + + // Perform the alignment + Alignment* generate_single_alignment(const char* bases, + const unsigned read_length); + void find_paths(const char* bases, + const unsigned read_length, + bwt_aln1_t*& paths, + unsigned& num_paths, + unsigned& best_path_count, + unsigned& second_best_path_count); + void generate_alignments_from_paths(const char* bases, + const unsigned read_length, + bwt_aln1_t* paths, + const unsigned num_paths, + const unsigned best_count, + const unsigned second_best_count, + Alignment*& alignments, + unsigned& num_alignments); +}; + +#endif // BWA_GATEWAY diff --git a/public/c/bwa/libbwa.so.1 b/public/c/bwa/libbwa.so.1 new file mode 100755 index 0000000000000000000000000000000000000000..bfa3c28473de8485fed89f8458be2a2bda1cdc4a GIT binary patch literal 380907 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�hQB+h<*i^cqfi4&9%JO8 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

<>pb~gv8^Jx4*#rM^_Q95m|2RtS4Jy~ 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 literal 0 HcmV?d00001 diff --git a/public/c/bwa/org_broadinstitute_sting_alignment_bwa_c_BWACAligner.cpp b/public/c/bwa/org_broadinstitute_sting_alignment_bwa_c_BWACAligner.cpp new file mode 100644 index 000000000..1ccbef0d4 --- /dev/null +++ b/public/c/bwa/org_broadinstitute_sting_alignment_bwa_c_BWACAligner.cpp @@ -0,0 +1,437 @@ +#include +#include +#include + +#include "bntseq.h" +#include "bwt.h" +#include "bwtaln.h" +#include "bwa_gateway.h" +#include "org_broadinstitute_sting_alignment_bwa_c_BWACAligner.h" + +typedef void (BWA::*int_setter)(int value); +typedef void (BWA::*float_setter)(float value); + +static jobject convert_to_java_alignment(JNIEnv* env, const jbyte* read_bases, const jsize read_length, const Alignment& alignment); +static jstring get_configuration_file(JNIEnv* env, jobject configuration, const char* field_name); +static void set_int_configuration_param(JNIEnv* env, jobject configuration, const char* field_name, BWA* bwa, int_setter setter); +static void set_float_configuration_param(JNIEnv* env, jobject configuration, const char* field_name, BWA* bwa, float_setter setter); +static void throw_config_value_exception(JNIEnv* env, const char* field_name, const char* message); + +JNIEXPORT jlong JNICALL Java_org_broadinstitute_sting_alignment_bwa_c_BWACAligner_create(JNIEnv* env, jobject instance, jobject bwtFiles, jobject configuration) +{ + jstring java_ann = get_configuration_file(env,bwtFiles,"annFile"); + if(java_ann == NULL) return 0L; + jstring java_amb = get_configuration_file(env,bwtFiles,"ambFile"); + if(java_amb == NULL) return 0L; + jstring java_pac = get_configuration_file(env,bwtFiles,"pacFile"); + if(java_pac == NULL) return 0L; + jstring java_forward_bwt = get_configuration_file(env,bwtFiles,"forwardBWTFile"); + if(java_forward_bwt == NULL) return 0L; + jstring java_forward_sa = get_configuration_file(env,bwtFiles,"forwardSAFile"); + if(java_forward_sa == NULL) return 0L; + jstring java_reverse_bwt = get_configuration_file(env,bwtFiles,"reverseBWTFile"); + if(java_reverse_bwt == NULL) return 0L; + jstring java_reverse_sa = get_configuration_file(env,bwtFiles,"reverseSAFile"); + if(java_reverse_sa == NULL) return 0L; + + const char* ann_filename = env->GetStringUTFChars(java_ann,JNI_FALSE); + if(env->ExceptionCheck()) return 0L; + const char* amb_filename = env->GetStringUTFChars(java_amb,JNI_FALSE); + if(env->ExceptionCheck()) return 0L; + const char* pac_filename = env->GetStringUTFChars(java_pac,JNI_FALSE); + if(env->ExceptionCheck()) return 0L; + const char* forward_bwt_filename = env->GetStringUTFChars(java_forward_bwt,JNI_FALSE); + if(env->ExceptionCheck()) return 0L; + const char* forward_sa_filename = env->GetStringUTFChars(java_forward_sa,JNI_FALSE); + if(env->ExceptionCheck()) return 0L; + const char* reverse_bwt_filename = env->GetStringUTFChars(java_reverse_bwt,JNI_FALSE); + if(env->ExceptionCheck()) return 0L; + const char* reverse_sa_filename = env->GetStringUTFChars(java_reverse_sa,JNI_FALSE); + if(env->ExceptionCheck()) return 0L; + + BWA* bwa = new BWA(ann_filename, + amb_filename, + pac_filename, + forward_bwt_filename, + forward_sa_filename, + reverse_bwt_filename, + reverse_sa_filename); + + Java_org_broadinstitute_sting_alignment_bwa_c_BWACAligner_updateConfiguration(env,instance,(jlong)bwa,configuration); + if(env->ExceptionCheck()) return 0L; + + env->ReleaseStringUTFChars(java_ann,ann_filename); + if(env->ExceptionCheck()) return 0L; + env->ReleaseStringUTFChars(java_amb,amb_filename); + if(env->ExceptionCheck()) return 0L; + env->ReleaseStringUTFChars(java_pac,pac_filename); + if(env->ExceptionCheck()) return 0L; + env->ReleaseStringUTFChars(java_forward_bwt,forward_bwt_filename); + if(env->ExceptionCheck()) return 0L; + env->ReleaseStringUTFChars(java_forward_sa,forward_sa_filename); + if(env->ExceptionCheck()) return 0L; + env->ReleaseStringUTFChars(java_reverse_bwt,reverse_bwt_filename); + if(env->ExceptionCheck()) return 0L; + env->ReleaseStringUTFChars(java_reverse_sa,reverse_sa_filename); + if(env->ExceptionCheck()) return 0L; + + return (jlong)bwa; +} + +JNIEXPORT void JNICALL Java_org_broadinstitute_sting_alignment_bwa_c_BWACAligner_destroy(JNIEnv* env, jobject instance, jlong java_bwa) +{ + BWA* bwa = (BWA*)java_bwa; + delete bwa; +} + +JNIEXPORT void JNICALL Java_org_broadinstitute_sting_alignment_bwa_c_BWACAligner_updateConfiguration(JNIEnv *env, jobject instance, jlong java_bwa, jobject configuration) { + BWA* bwa = (BWA*)java_bwa; + set_float_configuration_param(env, configuration, "maximumEditDistance", bwa, &BWA::set_max_edit_distance); + if(env->ExceptionCheck()) return; + set_int_configuration_param(env, configuration, "maximumGapOpens", bwa, &BWA::set_max_gap_opens); + if(env->ExceptionCheck()) return; + set_int_configuration_param(env, configuration, "maximumGapExtensions", bwa, &BWA::set_max_gap_extensions); + if(env->ExceptionCheck()) return; + set_int_configuration_param(env, configuration, "disallowIndelWithinRange", bwa, &BWA::set_disallow_indel_within_range); + if(env->ExceptionCheck()) return; + set_int_configuration_param(env, configuration, "mismatchPenalty", bwa, &BWA::set_mismatch_penalty); + if(env->ExceptionCheck()) return; + set_int_configuration_param(env, configuration, "gapOpenPenalty", bwa, &BWA::set_gap_open_penalty); + if(env->ExceptionCheck()) return; + set_int_configuration_param(env, configuration, "gapExtensionPenalty", bwa, &BWA::set_gap_extension_penalty); + if(env->ExceptionCheck()) return; +} + +JNIEXPORT jobjectArray JNICALL Java_org_broadinstitute_sting_alignment_bwa_c_BWACAligner_getPaths(JNIEnv *env, jobject instance, jlong java_bwa, jbyteArray java_bases) +{ + BWA* bwa = (BWA*)java_bwa; + + const jsize read_length = env->GetArrayLength(java_bases); + if(env->ExceptionCheck()) return NULL; + + jbyte *read_bases = env->GetByteArrayElements(java_bases,JNI_FALSE); + if(read_bases == NULL) return NULL; + + bwt_aln1_t* paths = NULL; + unsigned num_paths = 0; + + unsigned best_path_count, second_best_path_count; + bwa->find_paths((const char*)read_bases,read_length,paths,num_paths,best_path_count,second_best_path_count); + + jobjectArray java_paths = env->NewObjectArray(num_paths, env->FindClass("org/broadinstitute/sting/alignment/bwa/c/BWAPath"), NULL); + if(java_paths == NULL) return NULL; + + for(unsigned path_idx = 0; path_idx < (unsigned)num_paths; path_idx++) { + bwt_aln1_t& path = *(paths + path_idx); + + jclass java_path_class = env->FindClass("org/broadinstitute/sting/alignment/bwa/c/BWAPath"); + if(java_path_class == NULL) return NULL; + + jmethodID java_path_constructor = env->GetMethodID(java_path_class, "", "(IIIZJJIII)V"); + if(java_path_constructor == NULL) return NULL; + + // Note that k/l are being cast to long. Bad things will happen if JNI assumes that they're ints. + jobject java_path = env->NewObject(java_path_class, + java_path_constructor, + path.n_mm, + path.n_gapo, + path.n_gape, + path.a, + (jlong)path.k, + (jlong)path.l, + path.score, + best_path_count, + second_best_path_count); + if(java_path == NULL) return NULL; + + env->SetObjectArrayElement(java_paths,path_idx,java_path); + if(env->ExceptionCheck()) return NULL; + + env->DeleteLocalRef(java_path_class); + if(env->ExceptionCheck()) return NULL; + } + + delete[] paths; + + env->ReleaseByteArrayElements(java_bases,read_bases,JNI_FALSE); + + return env->ExceptionCheck() ? NULL : java_paths; +} + +JNIEXPORT jobjectArray JNICALL Java_org_broadinstitute_sting_alignment_bwa_c_BWACAligner_convertPathsToAlignments(JNIEnv *env, jobject instance, jlong java_bwa, jbyteArray java_bases, jobjectArray java_paths) +{ + BWA* bwa = (BWA*)java_bwa; + + const jsize read_length = env->GetArrayLength(java_bases); + if(env->ExceptionCheck()) return NULL; + + jbyte *read_bases = env->GetByteArrayElements(java_bases,JNI_FALSE); + if(read_bases == NULL) return NULL; + + const jsize num_paths = env->GetArrayLength(java_paths); + bwt_aln1_t* paths = new bwt_aln1_t[num_paths]; + unsigned best_count = 0, second_best_count = 0; + + for(unsigned path_idx = 0; path_idx < (unsigned)num_paths; path_idx++) { + jobject java_path = env->GetObjectArrayElement(java_paths,path_idx); + jclass java_path_class = env->GetObjectClass(java_path); + if(java_path_class == NULL) return NULL; + + bwt_aln1_t& path = *(paths + path_idx); + + jfieldID mismatches_field = env->GetFieldID(java_path_class, "numMismatches", "I"); + if(mismatches_field == NULL) return NULL; + path.n_mm = env->GetIntField(java_path,mismatches_field); + if(env->ExceptionCheck()) return NULL; + + jfieldID gap_opens_field = env->GetFieldID(java_path_class, "numGapOpens", "I"); + if(gap_opens_field == NULL) return NULL; + path.n_gapo = env->GetIntField(java_path,gap_opens_field); + if(env->ExceptionCheck()) return NULL; + + jfieldID gap_extensions_field = env->GetFieldID(java_path_class, "numGapExtensions", "I"); + if(gap_extensions_field == NULL) return NULL; + path.n_gape = env->GetIntField(java_path,gap_extensions_field); + if(env->ExceptionCheck()) return NULL; + + jfieldID negative_strand_field = env->GetFieldID(java_path_class, "negativeStrand", "Z"); + if(negative_strand_field == NULL) return NULL; + path.a = env->GetBooleanField(java_path,negative_strand_field); + if(env->ExceptionCheck()) return NULL; + + jfieldID k_field = env->GetFieldID(java_path_class, "k", "J"); + if(k_field == NULL) return NULL; + path.k = env->GetLongField(java_path,k_field); + if(env->ExceptionCheck()) return NULL; + + jfieldID l_field = env->GetFieldID(java_path_class, "l", "J"); + if(l_field == NULL) return NULL; + path.l = env->GetLongField(java_path,l_field); + if(env->ExceptionCheck()) return NULL; + + jfieldID score_field = env->GetFieldID(java_path_class, "score", "I"); + if(score_field == NULL) return NULL; + path.score = env->GetIntField(java_path,score_field); + if(env->ExceptionCheck()) return NULL; + + jfieldID best_count_field = env->GetFieldID(java_path_class, "bestCount", "I"); + if(best_count_field == NULL) return NULL; + best_count = env->GetIntField(java_path,best_count_field); + if(env->ExceptionCheck()) return NULL; + + jfieldID second_best_count_field = env->GetFieldID(java_path_class, "secondBestCount", "I"); + if(second_best_count_field == NULL) return NULL; + second_best_count = env->GetIntField(java_path,second_best_count_field); + if(env->ExceptionCheck()) return NULL; + } + + Alignment* alignments = NULL; + unsigned num_alignments = 0; + bwa->generate_alignments_from_paths((const char*)read_bases,read_length,paths,num_paths,best_count,second_best_count,alignments,num_alignments); + + jobjectArray java_alignments = env->NewObjectArray(num_alignments, env->FindClass("org/broadinstitute/sting/alignment/Alignment"), NULL); + if(java_alignments == NULL) return NULL; + + for(unsigned alignment_idx = 0; alignment_idx < (unsigned)num_alignments; alignment_idx++) { + Alignment& alignment = *(alignments + alignment_idx); + jobject java_alignment = convert_to_java_alignment(env,read_bases,read_length,alignment); + if(java_alignment == NULL) return NULL; + env->SetObjectArrayElement(java_alignments,alignment_idx,java_alignment); + if(env->ExceptionCheck()) return NULL; + } + + delete[] alignments; + delete[] paths; + + env->ReleaseByteArrayElements(java_bases,read_bases,JNI_FALSE); + + return env->ExceptionCheck() ? NULL : java_alignments; +} + +JNIEXPORT jobject JNICALL Java_org_broadinstitute_sting_alignment_bwa_c_BWACAligner_getBestAlignment(JNIEnv *env, jobject instance, jlong java_bwa, jbyteArray java_bases) { + BWA* bwa = (BWA*)java_bwa; + + const jsize read_length = env->GetArrayLength(java_bases); + if(env->ExceptionCheck()) return NULL; + + jbyte *read_bases = env->GetByteArrayElements(java_bases,JNI_FALSE); + if(read_bases == NULL) return NULL; + + Alignment* best_alignment = bwa->generate_single_alignment((const char*)read_bases,read_length); + jobject java_best_alignment = (best_alignment != NULL) ? convert_to_java_alignment(env,read_bases,read_length,*best_alignment) : NULL; + delete best_alignment; + + env->ReleaseByteArrayElements(java_bases,read_bases,JNI_FALSE); + + return java_best_alignment; +} + +static jobject convert_to_java_alignment(JNIEnv *env, const jbyte* read_bases, const jsize read_length, const Alignment& alignment) { + unsigned cigar_length; + if(alignment.type == BWA_TYPE_NO_MATCH) cigar_length = 0; + else if(!alignment.cigar) cigar_length = 1; + else cigar_length = alignment.n_cigar; + + jcharArray java_cigar_operators = env->NewCharArray(cigar_length); + if(java_cigar_operators == NULL) return NULL; + jintArray java_cigar_lengths = env->NewIntArray(cigar_length); + if(java_cigar_lengths == NULL) return NULL; + + if(alignment.cigar) { + for(unsigned cigar_idx = 0; cigar_idx < (unsigned)alignment.n_cigar; ++cigar_idx) { + jchar cigar_operator = "MIDS"[alignment.cigar[cigar_idx]>>14]; + jint cigar_length = alignment.cigar[cigar_idx]&0x3fff; + + env->SetCharArrayRegion(java_cigar_operators,cigar_idx,1,&cigar_operator); + if(env->ExceptionCheck()) return NULL; + env->SetIntArrayRegion(java_cigar_lengths,cigar_idx,1,&cigar_length); + if(env->ExceptionCheck()) return NULL; + } + } + else { + if(alignment.type != BWA_TYPE_NO_MATCH) { + jchar cigar_operator = 'M'; + env->SetCharArrayRegion(java_cigar_operators,0,1,&cigar_operator); + if(env->ExceptionCheck()) return NULL; + env->SetIntArrayRegion(java_cigar_lengths,0,1,&read_length); + if(env->ExceptionCheck()) return NULL; + } + } + delete[] alignment.cigar; + + jclass java_alignment_class = env->FindClass("org/broadinstitute/sting/alignment/Alignment"); + if(java_alignment_class == NULL) return NULL; + + jmethodID java_alignment_constructor = env->GetMethodID(java_alignment_class, "", "(IIZI[C[IILjava/lang/String;IIIII)V"); + if(java_alignment_constructor == NULL) return NULL; + + jstring java_md = env->NewStringUTF(alignment.md); + if(java_md == NULL) return NULL; + delete[] alignment.md; + + jobject java_alignment = env->NewObject(java_alignment_class, + java_alignment_constructor, + alignment.contig, + alignment.pos, + alignment.negative_strand, + alignment.mapping_quality, + java_cigar_operators, + java_cigar_lengths, + alignment.edit_distance, + java_md, + alignment.num_mismatches, + alignment.num_gap_opens, + alignment.num_gap_extensions, + alignment.num_best, + alignment.num_second_best); + if(java_alignment == NULL) return NULL; + + env->DeleteLocalRef(java_alignment_class); + if(env->ExceptionCheck()) return NULL; + + return java_alignment; +} + +static jstring get_configuration_file(JNIEnv* env, jobject configuration, const char* field_name) { + jclass configuration_class = env->GetObjectClass(configuration); + if(configuration_class == NULL) return NULL; + + jfieldID configuration_field = env->GetFieldID(configuration_class, field_name, "Ljava/io/File;"); + if(configuration_field == NULL) return NULL; + + jobject configuration_file = (jobject)env->GetObjectField(configuration,configuration_field); + + jclass file_class = env->FindClass("java/io/File"); + if(file_class == NULL) return NULL; + + jmethodID path_extractor = env->GetMethodID(file_class,"getAbsolutePath", "()Ljava/lang/String;"); + if(path_extractor == NULL) return NULL; + + jstring path = (jstring)env->CallObjectMethod(configuration_file,path_extractor); + if(path == NULL) return NULL; + + env->DeleteLocalRef(configuration_class); + env->DeleteLocalRef(file_class); + env->DeleteLocalRef(configuration_file); + + return path; +} + +static void set_int_configuration_param(JNIEnv* env, jobject configuration, const char* field_name, BWA* bwa, int_setter setter) { + jclass configuration_class = env->GetObjectClass(configuration); + if(configuration_class == NULL) return; + + jfieldID configuration_field = env->GetFieldID(configuration_class, field_name, "Ljava/lang/Integer;"); + if(configuration_field == NULL) return; + + jobject boxed_value = env->GetObjectField(configuration,configuration_field); + if(env->ExceptionCheck()) return; + + if(boxed_value != NULL) { + jclass int_box_class = env->FindClass("java/lang/Integer"); + if(int_box_class == NULL) return; + + jmethodID int_extractor = env->GetMethodID(int_box_class,"intValue", "()I"); + if(int_extractor == NULL) return; + + jint value = env->CallIntMethod(boxed_value,int_extractor); + if(env->ExceptionCheck()) return; + + if(value < 0) + { + throw_config_value_exception(env,field_name,"cannot be set to a negative value"); + return; + } + + (bwa->*setter)(value); + + env->DeleteLocalRef(int_box_class); + } + + env->DeleteLocalRef(boxed_value); + env->DeleteLocalRef(configuration_class); +} + +static void set_float_configuration_param(JNIEnv* env, jobject configuration, const char* field_name, BWA* bwa, float_setter setter) +{ + jclass configuration_class = env->GetObjectClass(configuration); + if(configuration_class == NULL) return; + + jfieldID configuration_field = env->GetFieldID(configuration_class, field_name, "Ljava/lang/Float;"); + if(configuration_field == NULL) return; + + jobject boxed_value = env->GetObjectField(configuration,configuration_field); + if(boxed_value != NULL) { + jclass float_box_class = env->FindClass("java/lang/Float"); + if(float_box_class == NULL) return; + + jmethodID float_extractor = env->GetMethodID(float_box_class,"floatValue", "()F"); + if(float_extractor == NULL) return; + + jfloat value = env->CallFloatMethod(boxed_value,float_extractor); + if(env->ExceptionCheck()) return; + + if(value < 0) + { + throw_config_value_exception(env,field_name,"cannot be set to a negative value"); + return; + } + + (bwa->*setter)(value); + + env->DeleteLocalRef(float_box_class); + } + + env->DeleteLocalRef(boxed_value); + env->DeleteLocalRef(configuration_class); +} + +static void throw_config_value_exception(JNIEnv* env, const char* field_name, const char* message) +{ + char* buffer = new char[strlen(field_name)+1+strlen(message)+1]; + sprintf(buffer,"%s %s",field_name,message); + jclass sting_exception_class = env->FindClass("org/broadinstitute/sting/utils/StingException"); + if(sting_exception_class == NULL) return; + env->ThrowNew(sting_exception_class, buffer); + delete[] buffer; +} diff --git a/public/c/bwa/org_broadinstitute_sting_alignment_bwa_c_BWACAligner.h b/public/c/bwa/org_broadinstitute_sting_alignment_bwa_c_BWACAligner.h new file mode 100644 index 000000000..0c44e430a --- /dev/null +++ b/public/c/bwa/org_broadinstitute_sting_alignment_bwa_c_BWACAligner.h @@ -0,0 +1,61 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class org_broadinstitute_sting_alignment_bwa_c_BWACAligner */ + +#ifndef _Included_org_broadinstitute_sting_alignment_bwa_c_BWACAligner +#define _Included_org_broadinstitute_sting_alignment_bwa_c_BWACAligner +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: org_broadinstitute_sting_alignment_bwa_c_BWACAligner + * Method: create + * Signature: (Lorg/broadinstitute/sting/alignment/bwa/BWTFiles;Lorg/broadinstitute/sting/alignment/bwa/BWAConfiguration;)J + */ +JNIEXPORT jlong JNICALL Java_org_broadinstitute_sting_alignment_bwa_c_BWACAligner_create + (JNIEnv *, jobject, jobject, jobject); + +/* + * Class: org_broadinstitute_sting_alignment_bwa_c_BWACAligner + * Method: updateConfiguration + * Signature: (JLorg/broadinstitute/sting/alignment/bwa/BWAConfiguration;)V + */ +JNIEXPORT void JNICALL Java_org_broadinstitute_sting_alignment_bwa_c_BWACAligner_updateConfiguration + (JNIEnv *, jobject, jlong, jobject); + +/* + * Class: org_broadinstitute_sting_alignment_bwa_c_BWACAligner + * Method: destroy + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_org_broadinstitute_sting_alignment_bwa_c_BWACAligner_destroy + (JNIEnv *, jobject, jlong); + +/* + * Class: org_broadinstitute_sting_alignment_bwa_c_BWACAligner + * Method: getPaths + * Signature: (J[B)[Lorg/broadinstitute/sting/alignment/bwa/c/BWAPath; + */ +JNIEXPORT jobjectArray JNICALL Java_org_broadinstitute_sting_alignment_bwa_c_BWACAligner_getPaths + (JNIEnv *, jobject, jlong, jbyteArray); + +/* + * Class: org_broadinstitute_sting_alignment_bwa_c_BWACAligner + * Method: convertPathsToAlignments + * Signature: (J[B[Lorg/broadinstitute/sting/alignment/bwa/c/BWAPath;)[Lorg/broadinstitute/sting/alignment/Alignment; + */ +JNIEXPORT jobjectArray JNICALL Java_org_broadinstitute_sting_alignment_bwa_c_BWACAligner_convertPathsToAlignments + (JNIEnv *, jobject, jlong, jbyteArray, jobjectArray); + +/* + * Class: org_broadinstitute_sting_alignment_bwa_c_BWACAligner + * Method: getBestAlignment + * Signature: (J[B)Lorg/broadinstitute/sting/alignment/Alignment; + */ +JNIEXPORT jobject JNICALL Java_org_broadinstitute_sting_alignment_bwa_c_BWACAligner_getBestAlignment + (JNIEnv *, jobject, jlong, jbyteArray); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/public/c/libenvironhack/Makefile b/public/c/libenvironhack/Makefile new file mode 100644 index 000000000..302ff8e31 --- /dev/null +++ b/public/c/libenvironhack/Makefile @@ -0,0 +1,10 @@ +CC=gcc +CCFLAGS=-Wall -dynamiclib -arch i386 -arch x86_64 + +libenvironhack.dylib: libenvironhack.c + $(CC) $(CCFLAGS) -init _init_environ $< -o $@ + +all: libenvironhack.dylib + +clean: + rm -f libenvironhack.dylib diff --git a/public/c/libenvironhack/libenvironhack.c b/public/c/libenvironhack/libenvironhack.c new file mode 100644 index 000000000..8b2a2640e --- /dev/null +++ b/public/c/libenvironhack/libenvironhack.c @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2010, The Broad Institute + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +/* +LSF 7.0.6 on the mac is missing the unsatisfied exported symbol for environ which was removed on MacOS X 10.5+. +nm $LSF_LIBDIR/liblsf.dylib | grep environ +See "man environ" for more info, along with http://lists.apple.com/archives/java-dev/2007/Dec/msg00096.html +*/ + +#include + +char **environ = (char **)0; + +void init_environ(void) { + environ = (*_NSGetEnviron()); +} diff --git a/public/c/libenvironhack/libenvironhack.dylib b/public/c/libenvironhack/libenvironhack.dylib new file mode 100755 index 0000000000000000000000000000000000000000..a45e038b49f238f1ce5138fed4d11dbebccb03b1 GIT binary patch literal 28904 zcmeI4O-!6c7{_OEp=)i+8ZkkwWiJ@x2T0OHZbAbVv{nK%HX%CQg)O^w7YHm0wTY`l z10mI3y{bnKJsHyw)1+M5gL?B~43{RD)WjGM+QhE^|2yyO7YM1nDE^;h_L*lso_F5g z>?S*(H||{d+8EP-un*xrW8zR;_*MdUd!$FM$lUKh$hL1ItsaeRDoPV++Yt zF752C^~sv`*!Wxema|rkMU9!jlL;q91pX$B;>%Fa28F|NHu%`JflazNUAp`N)N1iKK1&-eZMFD(V4YgIIkI#s8YGTw#xV$5jbB`P z6nQK0rS<68^=pVaiEn%yL-3}w2#A0Ph=2%)fCz|y2#A0Ph=2%)z}_M78)fgjj^0EB zL_h>YKmYKm53ko34J=_#u z&RMme$ZJ6T2Kb94u){r{;b#48%4X8ZiS(@D&V4&qm`~YMc4{I!HHnPe3^LrNetUL) zYTV|gr_asLxUx2%9MAaLHr(fKY<4PJs95&o$nkWc-)(|7b8wqWC-T!1^KO%VZ4+gQ zfCz|y2#A0Ph=2%)fCz|y2#CPHj=;C>{C|XFZ;sJ<_PU5cHqZZ49zj^fcz)YE09e2k zW6Vit^E@}l`FwWKbw}JQL-O%=R`IvgKHkb5WF;n0)OKtmj z=7bV+%FwRn#`fX0%Cg)24Xt(lXz$cMawFp{cOfLgM~41PXa`4SkX7HVyS*EMXKeV~ zkHUUN^dE`8JE8lNmW}22Z@+Qr^FOW}Yk2W{GUWXQtqJ$LEkb8tSKpoB`<-R^Tdd{` zvqlyYwf#aKEMLAm0X9+b``?XlH+LtX_?CLQKY>&vA|L`HAOa#F0wN#+{|5rSBPT9C zzVu6})H_mYe+O^e+-6Gc=MgzIuyS*gf3XKv&A>|I+lXDiR%)MwhM?B#P(Q7eN+qt# zQzGYwO=KY+i67V(yM#aN&miqE!j~vRd61%0GQ~{ z0r+)#e->alT;J?LnPx1S`t{jC+HmaGKVO6G&jKJCtVeQ9GJ%!Zd)dQZ*`vSHj(ubP E0>D0Q!T getAllAlignments(final byte[] bases); + + /** + * Get a iterator of aligned reads, batched by mapping quality. + * @param read Read to align. + * @param newHeader Optional new header to use when aligning the read. If present, it must be null. + * @return Iterator to alignments. + */ + public Iterable alignAll(final SAMRecord read, final SAMFileHeader newHeader); +} + + diff --git a/public/java/src/org/broadinstitute/sting/alignment/Alignment.java b/public/java/src/org/broadinstitute/sting/alignment/Alignment.java new file mode 100644 index 000000000..ebbc8c1b8 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/Alignment.java @@ -0,0 +1,221 @@ +package org.broadinstitute.sting.alignment; + +import net.sf.samtools.*; +import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; +import org.broadinstitute.sting.utils.BaseUtils; +import org.broadinstitute.sting.utils.Utils; + +/** + * Represents an alignment of a read to a site in the reference genome. + * + * @author mhanna + * @version 0.1 + */ +public class Alignment { + protected int contigIndex; + protected long alignmentStart; + protected boolean negativeStrand; + protected int mappingQuality; + + protected char[] cigarOperators; + protected int[] cigarLengths; + + protected int editDistance; + protected String mismatchingPositions; + + protected int numMismatches; + protected int numGapOpens; + protected int numGapExtensions; + protected int bestCount; + protected int secondBestCount; + + /** + * Gets the index of the given contig. + * @return the inde + */ + public int getContigIndex() { return contigIndex; } + + /** + * Gets the starting position for the given alignment. + * @return Starting position. + */ + public long getAlignmentStart() { return alignmentStart; } + + /** + * Is the given alignment on the reverse strand? + * @return True if the alignment is on the reverse strand. + */ + public boolean isNegativeStrand() { return negativeStrand; } + + /** + * Gets the score of this alignment. + * @return The score. + */ + public int getMappingQuality() { return mappingQuality; } + + /** + * Gets the edit distance; will eventually end up in the NM SAM tag + * if this alignment makes it that far. + * @return The edit distance. + */ + public int getEditDistance() { return editDistance; } + + /** + * A string representation of which positions mismatch; contents of MD tag. + * @return String representation of mismatching positions. + */ + public String getMismatchingPositions() { return mismatchingPositions; } + + /** + * Gets the number of mismatches in the read. + * @return Number of mismatches. + */ + public int getNumMismatches() { return numMismatches; } + + /** + * Get the number of gap opens. + * @return Number of gap opens. + */ + public int getNumGapOpens() { return numGapOpens; } + + /** + * Get the number of gap extensions. + * @return Number of gap extensions. + */ + public int getNumGapExtensions() { return numGapExtensions; } + + /** + * Get the number of best alignments. + * @return Number of top scoring alignments. + */ + public int getBestCount() { return bestCount; } + + /** + * Get the number of second best alignments. + * @return Number of second best scoring alignments. + */ + public int getSecondBestCount() { return secondBestCount; } + + /** + * Gets the cigar for this alignment. + * @return sam-jdk formatted alignment. + */ + public Cigar getCigar() { + Cigar cigar = new Cigar(); + for(int i = 0; i < cigarOperators.length; i++) { + CigarOperator operator = CigarOperator.characterToEnum(cigarOperators[i]); + cigar.add(new CigarElement(cigarLengths[i],operator)); + } + return cigar; + } + + /** + * Temporarily implement getCigarString() for debugging; the TextCigarCodec is unfortunately + * package-protected. + * @return + */ + public String getCigarString() { + Cigar cigar = getCigar(); + if(cigar.isEmpty()) return "*"; + + StringBuilder cigarString = new StringBuilder(); + for(CigarElement element: cigar.getCigarElements()) { + cigarString.append(element.getLength()); + cigarString.append(element.getOperator()); + } + return cigarString.toString(); + } + + /** + * Stub for inheritance. + */ + public Alignment() {} + + /** + * Create a new alignment object. + * @param contigIndex The contig to which this read aligned. + * @param alignmentStart The point within the contig to which this read aligned. + * @param negativeStrand Forward or reverse alignment of the given read. + * @param mappingQuality How good does BWA think this mapping is? + * @param cigarOperators The ordered operators in the cigar string. + * @param cigarLengths The lengths to which each operator applies. + * @param editDistance The edit distance (cumulative) of the read. + * @param mismatchingPositions String representation of which bases in the read mismatch. + * @param numMismatches Number of total mismatches in the read. + * @param numGapOpens Number of gap opens in the read. + * @param numGapExtensions Number of gap extensions in the read. + * @param bestCount Number of best alignments in the read. + * @param secondBestCount Number of second best alignments in the read. + */ + public Alignment(int contigIndex, + int alignmentStart, + boolean negativeStrand, + int mappingQuality, + char[] cigarOperators, + int[] cigarLengths, + int editDistance, + String mismatchingPositions, + int numMismatches, + int numGapOpens, + int numGapExtensions, + int bestCount, + int secondBestCount) { + this.contigIndex = contigIndex; + this.alignmentStart = alignmentStart; + this.negativeStrand = negativeStrand; + this.mappingQuality = mappingQuality; + this.cigarOperators = cigarOperators; + this.cigarLengths = cigarLengths; + this.editDistance = editDistance; + this.mismatchingPositions = mismatchingPositions; + this.numMismatches = numMismatches; + this.numGapOpens = numGapOpens; + this.numGapExtensions = numGapExtensions; + this.bestCount = bestCount; + this.secondBestCount = secondBestCount; + } + + /** + * Creates a read directly from an alignment. + * @param alignment The alignment to convert to a read. + * @param unmappedRead Source of the unmapped read. Should have bases, quality scores, and flags. + * @param newSAMHeader The new SAM header to use in creating this read. Can be null, but if so, the sequence + * dictionary in the + * @return A mapped alignment. + */ + public static SAMRecord convertToRead(Alignment alignment, SAMRecord unmappedRead, SAMFileHeader newSAMHeader) { + SAMRecord read; + try { + read = (SAMRecord)unmappedRead.clone(); + } + catch(CloneNotSupportedException ex) { + throw new ReviewedStingException("Unable to create aligned read from template."); + } + + if(newSAMHeader != null) + read.setHeader(newSAMHeader); + + // If we're realigning a previously aligned record, strip out the placement of the alignment. + read.setReferenceName(SAMRecord.NO_ALIGNMENT_REFERENCE_NAME); + read.setAlignmentStart(SAMRecord.NO_ALIGNMENT_START); + read.setMateReferenceName(SAMRecord.NO_ALIGNMENT_REFERENCE_NAME); + read.setMateAlignmentStart(SAMRecord.NO_ALIGNMENT_START); + + if(alignment != null) { + read.setReadUnmappedFlag(false); + read.setReferenceIndex(alignment.getContigIndex()); + read.setAlignmentStart((int)alignment.getAlignmentStart()); + read.setReadNegativeStrandFlag(alignment.isNegativeStrand()); + read.setMappingQuality(alignment.getMappingQuality()); + read.setCigar(alignment.getCigar()); + if(alignment.isNegativeStrand()) { + read.setReadBases(BaseUtils.simpleReverseComplement(read.getReadBases())); + read.setBaseQualities(Utils.reverse(read.getBaseQualities())); + } + read.setAttribute("NM",alignment.getEditDistance()); + read.setAttribute("MD",alignment.getMismatchingPositions()); + } + + return read; + } +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/AlignmentValidationWalker.java b/public/java/src/org/broadinstitute/sting/alignment/AlignmentValidationWalker.java new file mode 100644 index 000000000..16e713bf6 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/AlignmentValidationWalker.java @@ -0,0 +1,157 @@ +/* + * Copyright (c) 2010 The Broad Institute + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package org.broadinstitute.sting.alignment; + +import org.broadinstitute.sting.gatk.refdata.ReadMetaDataTracker; +import org.broadinstitute.sting.gatk.walkers.ReadWalker; +import org.broadinstitute.sting.gatk.contexts.ReferenceContext; +import org.broadinstitute.sting.utils.BaseUtils; +import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; +import org.broadinstitute.sting.commandline.Argument; +import org.broadinstitute.sting.alignment.bwa.c.BWACAligner; +import org.broadinstitute.sting.alignment.bwa.BWAConfiguration; +import org.broadinstitute.sting.alignment.bwa.BWTFiles; +import net.sf.samtools.SAMRecord; + +import java.util.Iterator; + +/** + * Validates consistency of the aligner interface by taking reads already aligned by BWA in a BAM file, stripping them + * of their alignment data, realigning them, and making sure one of the best resulting realignments matches the original + * alignment from the input file. + * + * @author mhanna + * @version 0.1 + */ +public class AlignmentValidationWalker extends ReadWalker { + /** + * The supporting BWT index generated using BWT. + */ + @Argument(fullName="BWTPrefix",shortName="BWT",doc="Index files generated by bwa index -d bwtsw",required=false) + private String prefix = null; + + /** + * The instance used to generate alignments. + */ + private BWACAligner aligner = null; + + /** + * Create an aligner object. The aligner object will load and hold the BWT until close() is called. + */ + @Override + public void initialize() { + if(prefix == null) + prefix = getToolkit().getArguments().referenceFile.getAbsolutePath(); + BWTFiles bwtFiles = new BWTFiles(prefix); + BWAConfiguration configuration = new BWAConfiguration(); + aligner = new BWACAligner(bwtFiles,configuration); + } + + /** + * Aligns a read to the given reference. + * @param ref Reference over the read. Read will most likely be unmapped, so ref will be null. + * @param read Read to align. + * @return Number of reads aligned by this map (aka 1). + */ + @Override + public Integer map(ReferenceContext ref, SAMRecord read, ReadMetaDataTracker metaDataTracker) { + //logger.info(String.format("examining read %s", read.getReadName())); + + byte[] bases = read.getReadBases(); + if(read.getReadNegativeStrandFlag()) bases = BaseUtils.simpleReverseComplement(bases); + + boolean matches = true; + Iterable alignments = aligner.getAllAlignments(bases); + Iterator alignmentIterator = alignments.iterator(); + + if(!alignmentIterator.hasNext()) { + matches = read.getReadUnmappedFlag(); + } + else { + Alignment[] alignmentsOfBestQuality = alignmentIterator.next(); + for(Alignment alignment: alignmentsOfBestQuality) { + matches = (alignment.getContigIndex() == read.getReferenceIndex()); + matches &= (alignment.getAlignmentStart() == read.getAlignmentStart()); + matches &= (alignment.isNegativeStrand() == read.getReadNegativeStrandFlag()); + matches &= (alignment.getCigar().equals(read.getCigar())); + matches &= (alignment.getMappingQuality() == read.getMappingQuality()); + if(matches) break; + } + } + + if(!matches) { + logger.error("Found mismatch!"); + logger.error(String.format("Read %s:",read.getReadName())); + logger.error(String.format(" Contig index: %d",read.getReferenceIndex())); + logger.error(String.format(" Alignment start: %d", read.getAlignmentStart())); + logger.error(String.format(" Negative strand: %b", read.getReadNegativeStrandFlag())); + logger.error(String.format(" Cigar: %s%n", read.getCigarString())); + logger.error(String.format(" Mapping quality: %s%n", read.getMappingQuality())); + for(Alignment[] alignmentsByScore: alignments) { + for(int i = 0; i < alignmentsByScore.length; i++) { + logger.error(String.format("Alignment %d:",i)); + logger.error(String.format(" Contig index: %d",alignmentsByScore[i].getContigIndex())); + logger.error(String.format(" Alignment start: %d", alignmentsByScore[i].getAlignmentStart())); + logger.error(String.format(" Negative strand: %b", alignmentsByScore[i].isNegativeStrand())); + logger.error(String.format(" Cigar: %s", alignmentsByScore[i].getCigarString())); + logger.error(String.format(" Mapping quality: %s%n", alignmentsByScore[i].getMappingQuality())); + } + } + throw new ReviewedStingException(String.format("Read %s mismatches!", read.getReadName())); + } + + return 1; + } + + /** + * Initial value for reduce. In this case, validated reads will be counted. + * @return 0, indicating no reads yet validated. + */ + @Override + public Integer reduceInit() { return 0; } + + /** + * Calculates the number of reads processed. + * @param value Number of reads processed by this map. + * @param sum Number of reads processed before this map. + * @return Number of reads processed up to and including this map. + */ + @Override + public Integer reduce(Integer value, Integer sum) { + return value + sum; + } + + /** + * Cleanup. + * @param result Number of reads processed. + */ + @Override + public void onTraversalDone(Integer result) { + aligner.close(); + super.onTraversalDone(result); + } + +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/AlignmentWalker.java b/public/java/src/org/broadinstitute/sting/alignment/AlignmentWalker.java new file mode 100644 index 000000000..e97d7a56f --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/AlignmentWalker.java @@ -0,0 +1,133 @@ +/* + * Copyright (c) 2010 The Broad Institute + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package org.broadinstitute.sting.alignment; + +import org.broadinstitute.sting.gatk.io.StingSAMFileWriter; +import org.broadinstitute.sting.gatk.refdata.ReadMetaDataTracker; +import org.broadinstitute.sting.commandline.Argument; +import org.broadinstitute.sting.commandline.Output; +import org.broadinstitute.sting.gatk.walkers.ReadWalker; +import org.broadinstitute.sting.gatk.walkers.WalkerName; +import org.broadinstitute.sting.gatk.contexts.ReferenceContext; +import org.broadinstitute.sting.alignment.bwa.c.BWACAligner; +import org.broadinstitute.sting.alignment.bwa.BWAConfiguration; +import org.broadinstitute.sting.alignment.bwa.BWTFiles; +import net.sf.samtools.*; +import net.sf.picard.reference.ReferenceSequenceFileFactory; + +import java.io.File; +import java.io.PrintStream; + +/** + * Aligns reads to a given reference using Heng Li's BWA aligner, presenting the resulting alignments in SAM or BAM format. + * Mimics the steps 'bwa aln' followed by 'bwa samse' using the BWA/C implementation. + * + * @author mhanna + * @version 0.1 + */ +@WalkerName("Align") +public class AlignmentWalker extends ReadWalker { + @Argument(fullName="target_reference",shortName="target_ref",doc="The reference to which reads in the source file should be aligned. Alongside this reference should sit index files " + + "generated by bwa index -d bwtsw. If unspecified, will default " + + "to the reference specified via the -R argument.",required=false) + private File targetReferenceFile = null; + + @Output + private StingSAMFileWriter out = null; + + /** + * The actual aligner. + */ + private BWACAligner aligner = null; + + /** + * New header to use, if desired. + */ + private SAMFileHeader header; + + /** + * Create an aligner object. The aligner object will load and hold the BWT until close() is called. + */ + @Override + public void initialize() { + if(targetReferenceFile == null) + targetReferenceFile = getToolkit().getArguments().referenceFile; + BWTFiles bwtFiles = new BWTFiles(targetReferenceFile.getAbsolutePath()); + BWAConfiguration configuration = new BWAConfiguration(); + aligner = new BWACAligner(bwtFiles,configuration); + + // Take the header of the SAM file, tweak it by adding in the reference dictionary and specifying that the target file is unsorted. + header = getToolkit().getSAMFileHeader().clone(); + SAMSequenceDictionary referenceDictionary = + ReferenceSequenceFileFactory.getReferenceSequenceFile(targetReferenceFile).getSequenceDictionary(); + header.setSequenceDictionary(referenceDictionary); + header.setSortOrder(SAMFileHeader.SortOrder.unsorted); + + out.writeHeader(header); + } + + /** + * Aligns a read to the given reference. + * @param ref Reference over the read. Read will most likely be unmapped, so ref will be null. + * @param read Read to align. + * @return Number of alignments found for this read. + */ + @Override + public Integer map(ReferenceContext ref, SAMRecord read, ReadMetaDataTracker metaDataTracker) { + SAMRecord alignedRead = aligner.align(read,header); + out.addAlignment(alignedRead); + return 1; + } + + /** + * Initial value for reduce. In this case, alignments will be counted. + * @return 0, indicating no alignments yet found. + */ + @Override + public Integer reduceInit() { return 0; } + + /** + * Calculates the number of alignments found. + * @param value Number of alignments found by this map. + * @param sum Number of alignments found before this map. + * @return Number of alignments found up to and including this map. + */ + @Override + public Integer reduce(Integer value, Integer sum) { + return value + sum; + } + + /** + * Cleanup. + * @param result Number of reads processed. + */ + @Override + public void onTraversalDone(Integer result) { + aligner.close(); + super.onTraversalDone(result); + } + +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/CountBestAlignmentsWalker.java b/public/java/src/org/broadinstitute/sting/alignment/CountBestAlignmentsWalker.java new file mode 100644 index 000000000..1a1e1197d --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/CountBestAlignmentsWalker.java @@ -0,0 +1,125 @@ +/* + * Copyright (c) 2010 The Broad Institute + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package org.broadinstitute.sting.alignment; + +import org.broadinstitute.sting.gatk.refdata.ReadMetaDataTracker; +import org.broadinstitute.sting.gatk.walkers.ReadWalker; +import org.broadinstitute.sting.gatk.contexts.ReferenceContext; +import org.broadinstitute.sting.alignment.bwa.BWTFiles; +import org.broadinstitute.sting.alignment.bwa.BWAConfiguration; +import org.broadinstitute.sting.alignment.bwa.c.BWACAligner; +import org.broadinstitute.sting.commandline.Argument; +import org.broadinstitute.sting.commandline.Output; +import net.sf.samtools.SAMRecord; + +import java.util.*; +import java.io.PrintStream; + +/** + * Counts the number of best alignments as presented by BWA and outputs a histogram of number of placements vs. the + * frequency of that number of placements. + * + * @author mhanna + * @version 0.1 + */ +public class CountBestAlignmentsWalker extends ReadWalker { + /** + * The supporting BWT index generated using BWT. + */ + @Argument(fullName="BWTPrefix",shortName="BWT",doc="Index files generated by bwa index -d bwtsw",required=false) + private String prefix = null; + + @Output + private PrintStream out = null; + + /** + * The actual aligner. + */ + private Aligner aligner = null; + + private SortedMap alignmentFrequencies = new TreeMap(); + + /** + * Create an aligner object. The aligner object will load and hold the BWT until close() is called. + */ + @Override + public void initialize() { + if(prefix == null) + prefix = getToolkit().getArguments().referenceFile.getAbsolutePath(); + BWTFiles bwtFiles = new BWTFiles(prefix); + BWAConfiguration configuration = new BWAConfiguration(); + aligner = new BWACAligner(bwtFiles,configuration); + } + + /** + * Aligns a read to the given reference. + * @param ref Reference over the read. Read will most likely be unmapped, so ref will be null. + * @param read Read to align. + * @return Number of alignments found for this read. + */ + @Override + public Integer map(ReferenceContext ref, SAMRecord read, ReadMetaDataTracker metaDataTracker) { + Iterator alignmentIterator = aligner.getAllAlignments(read.getReadBases()).iterator(); + if(alignmentIterator.hasNext()) { + int numAlignments = alignmentIterator.next().length; + if(alignmentFrequencies.containsKey(numAlignments)) + alignmentFrequencies.put(numAlignments,alignmentFrequencies.get(numAlignments)+1); + else + alignmentFrequencies.put(numAlignments,1); + } + return 1; + } + + /** + * Initial value for reduce. In this case, validated reads will be counted. + * @return 0, indicating no reads yet validated. + */ + @Override + public Integer reduceInit() { return 0; } + + /** + * Calculates the number of reads processed. + * @param value Number of reads processed by this map. + * @param sum Number of reads processed before this map. + * @return Number of reads processed up to and including this map. + */ + @Override + public Integer reduce(Integer value, Integer sum) { + return value + sum; + } + + /** + * Cleanup. + * @param result Number of reads processed. + */ + @Override + public void onTraversalDone(Integer result) { + aligner.close(); + for(Map.Entry alignmentFrequency: alignmentFrequencies.entrySet()) + out.printf("%d\t%d%n", alignmentFrequency.getKey(), alignmentFrequency.getValue()); + super.onTraversalDone(result); + } +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/bwa/BWAAligner.java b/public/java/src/org/broadinstitute/sting/alignment/bwa/BWAAligner.java new file mode 100644 index 000000000..ddbf784f5 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/bwa/BWAAligner.java @@ -0,0 +1,38 @@ +package org.broadinstitute.sting.alignment.bwa; + +import org.broadinstitute.sting.alignment.Aligner; + +/** + * Align reads using BWA. + * + * @author mhanna + * @version 0.1 + */ +public abstract class BWAAligner implements Aligner { + /** + * The supporting files used by BWA. + */ + protected BWTFiles bwtFiles; + + /** + * The current configuration for the BWA aligner. + */ + protected BWAConfiguration configuration; + + /** + * Create a new BWAAligner. Purpose of this call is to ensure that all BWA constructors accept the correct + * parameters. + * @param bwtFiles The many files representing BWTs persisted to disk. + * @param configuration Configuration parameters for the alignment. + */ + public BWAAligner(BWTFiles bwtFiles, BWAConfiguration configuration) { + this.bwtFiles = bwtFiles; + this.configuration = configuration; + } + + /** + * Update the configuration passed to the BWA aligner. + * @param configuration New configuration to set. + */ + public abstract void updateConfiguration(BWAConfiguration configuration); +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/bwa/BWAConfiguration.java b/public/java/src/org/broadinstitute/sting/alignment/bwa/BWAConfiguration.java new file mode 100644 index 000000000..73441cb6a --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/bwa/BWAConfiguration.java @@ -0,0 +1,44 @@ +package org.broadinstitute.sting.alignment.bwa; + +/** + * Configuration for the BWA/C aligner. + * + * @author mhanna + * @version 0.1 + */ +public class BWAConfiguration { + /** + * The maximum edit distance used by BWA. + */ + public Float maximumEditDistance = null; + + /** + * How many gap opens are acceptable within this alignment? + */ + public Integer maximumGapOpens = null; + + /** + * How many gap extensions are acceptable within this alignment? + */ + public Integer maximumGapExtensions = null; + + /** + * Do we disallow indels within a certain range from the start / end? + */ + public Integer disallowIndelWithinRange = null; + + /** + * What is the scoring penalty for a mismatch? + */ + public Integer mismatchPenalty = null; + + /** + * What is the scoring penalty for a gap open? + */ + public Integer gapOpenPenalty = null; + + /** + * What is the scoring penalty for a gap extension? + */ + public Integer gapExtensionPenalty = null; +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/bwa/BWTFiles.java b/public/java/src/org/broadinstitute/sting/alignment/bwa/BWTFiles.java new file mode 100644 index 000000000..cd7800900 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/bwa/BWTFiles.java @@ -0,0 +1,240 @@ +package org.broadinstitute.sting.alignment.bwa; + +import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; +import org.broadinstitute.sting.utils.Utils; +import org.broadinstitute.sting.alignment.reference.packing.PackUtils; +import org.broadinstitute.sting.alignment.reference.bwt.BWT; +import org.broadinstitute.sting.alignment.reference.bwt.BWTWriter; +import org.broadinstitute.sting.alignment.reference.bwt.SuffixArray; +import org.broadinstitute.sting.alignment.reference.bwt.SuffixArrayWriter; +import org.broadinstitute.sting.alignment.reference.bwt.ANNWriter; +import org.broadinstitute.sting.alignment.reference.bwt.AMBWriter; + +import java.io.File; +import java.io.IOException; + +import net.sf.samtools.SAMSequenceDictionary; +import net.sf.samtools.SAMSequenceRecord; +import net.sf.samtools.util.StringUtil; + +/** + * Support files for BWT. + * + * @author mhanna + * @version 0.1 + */ +public class BWTFiles { + /** + * ANN (?) file name. + */ + public final File annFile; + + /** + * AMB (?) file name. + */ + public final File ambFile; + + /** + * Packed reference sequence file. + */ + public final File pacFile; + + /** + * Reverse of packed reference sequence file. + */ + public final File rpacFile; + + /** + * Forward BWT file. + */ + public final File forwardBWTFile; + + /** + * Forward suffix array file. + */ + public final File forwardSAFile; + + /** + * Reverse BWT file. + */ + public final File reverseBWTFile; + + /** + * Reverse suffix array file. + */ + public final File reverseSAFile; + + /** + * Where these files autogenerated on the fly? + */ + public final boolean autogenerated; + + /** + * Create a new BWA configuration file using the given prefix. + * @param prefix Prefix to use when creating the configuration. Must not be null. + */ + public BWTFiles(String prefix) { + if(prefix == null) + throw new ReviewedStingException("Prefix must not be null."); + annFile = new File(prefix + ".ann"); + ambFile = new File(prefix + ".amb"); + pacFile = new File(prefix + ".pac"); + rpacFile = new File(prefix + ".rpac"); + forwardBWTFile = new File(prefix + ".bwt"); + forwardSAFile = new File(prefix + ".sa"); + reverseBWTFile = new File(prefix + ".rbwt"); + reverseSAFile = new File(prefix + ".rsa"); + autogenerated = false; + } + + /** + * Hand-create a new BWTFiles object, specifying a unique file object for each type. + * @param annFile ANN (alternate dictionary) file. + * @param ambFile AMB (holes) files. + * @param pacFile Packed representation of the forward reference sequence. + * @param forwardBWTFile BWT representation of the forward reference sequence. + * @param forwardSAFile SA representation of the forward reference sequence. + * @param rpacFile Packed representation of the reversed reference sequence. + * @param reverseBWTFile BWT representation of the reversed reference sequence. + * @param reverseSAFile SA representation of the reversed reference sequence. + */ + private BWTFiles(File annFile, + File ambFile, + File pacFile, + File forwardBWTFile, + File forwardSAFile, + File rpacFile, + File reverseBWTFile, + File reverseSAFile) { + this.annFile = annFile; + this.ambFile = ambFile; + this.pacFile = pacFile; + this.forwardBWTFile = forwardBWTFile; + this.forwardSAFile = forwardSAFile; + this.rpacFile = rpacFile; + this.reverseBWTFile = reverseBWTFile; + this.reverseSAFile = reverseSAFile; + autogenerated = true; + } + + /** + * Close out this files object, in the process deleting any temporary filse + * that were created. + */ + public void close() { + if(autogenerated) { + boolean success = true; + success = annFile.delete(); + success &= ambFile.delete(); + success &= pacFile.delete(); + success &= forwardBWTFile.delete(); + success &= forwardSAFile.delete(); + success &= rpacFile.delete(); + success &= reverseBWTFile.delete(); + success &= reverseSAFile.delete(); + + if(!success) + throw new ReviewedStingException("Unable to clean up autogenerated representation"); + } + } + + /** + * Create a new set of BWT files from the given reference sequence. + * @param referenceSequence Sequence from which to build metadata. + * @return A new object representing encoded representations of each sequence. + */ + public static BWTFiles createFromReferenceSequence(byte[] referenceSequence) { + byte[] normalizedReferenceSequence = new byte[referenceSequence.length]; + System.arraycopy(referenceSequence,0,normalizedReferenceSequence,0,referenceSequence.length); + normalizeReferenceSequence(normalizedReferenceSequence); + + File annFile,ambFile,pacFile,bwtFile,saFile,rpacFile,rbwtFile,rsaFile; + try { + // Write the ann and amb for this reference sequence. + annFile = File.createTempFile("bwt",".ann"); + ambFile = File.createTempFile("bwt",".amb"); + + SAMSequenceDictionary dictionary = new SAMSequenceDictionary(); + dictionary.addSequence(new SAMSequenceRecord("autogenerated",normalizedReferenceSequence.length)); + + ANNWriter annWriter = new ANNWriter(annFile); + annWriter.write(dictionary); + annWriter.close(); + + AMBWriter ambWriter = new AMBWriter(ambFile); + ambWriter.writeEmpty(dictionary); + ambWriter.close(); + + // Write the encoded files for the forward version of this reference sequence. + pacFile = File.createTempFile("bwt",".pac"); + bwtFile = File.createTempFile("bwt",".bwt"); + saFile = File.createTempFile("bwt",".sa"); + + writeEncodedReferenceSequence(normalizedReferenceSequence,pacFile,bwtFile,saFile); + + // Write the encoded files for the reverse version of this reference sequence. + byte[] reverseReferenceSequence = Utils.reverse(normalizedReferenceSequence); + + rpacFile = File.createTempFile("bwt",".rpac"); + rbwtFile = File.createTempFile("bwt",".rbwt"); + rsaFile = File.createTempFile("bwt",".rsa"); + + writeEncodedReferenceSequence(reverseReferenceSequence,rpacFile,rbwtFile,rsaFile); + } + catch(IOException ex) { + throw new ReviewedStingException("Unable to write autogenerated reference sequence to temporary files"); + } + + // Make sure that, at the very least, all temporary files are deleted on exit. + annFile.deleteOnExit(); + ambFile.deleteOnExit(); + pacFile.deleteOnExit(); + bwtFile.deleteOnExit(); + saFile.deleteOnExit(); + rpacFile.deleteOnExit(); + rbwtFile.deleteOnExit(); + rsaFile.deleteOnExit(); + + return new BWTFiles(annFile,ambFile,pacFile,bwtFile,saFile,rpacFile,rbwtFile,rsaFile); + } + + /** + * Write the encoded form of the reference sequence. In the case of BWA, the encoded reference + * sequence is the reference itself in PAC format, the BWT, and the suffix array. + * @param referenceSequence The reference sequence to encode. + * @param pacFile Target for the PAC-encoded reference. + * @param bwtFile Target for the BWT representation of the reference. + * @param suffixArrayFile Target for the suffix array encoding of the reference. + * @throws java.io.IOException In case of issues writing to the file. + */ + private static void writeEncodedReferenceSequence(byte[] referenceSequence, + File pacFile, + File bwtFile, + File suffixArrayFile) throws IOException { + PackUtils.writeReferenceSequence(pacFile,referenceSequence); + + BWT bwt = BWT.createFromReferenceSequence(referenceSequence); + BWTWriter bwtWriter = new BWTWriter(bwtFile); + bwtWriter.write(bwt); + bwtWriter.close(); + + SuffixArray suffixArray = SuffixArray.createFromReferenceSequence(referenceSequence); + SuffixArrayWriter suffixArrayWriter = new SuffixArrayWriter(suffixArrayFile); + suffixArrayWriter.write(suffixArray); + suffixArrayWriter.close(); + } + + /** + * Convert the given reference sequence into a form suitable for building into + * on-the-fly sequences. + * @param referenceSequence The reference sequence to normalize. + * @throws org.broadinstitute.sting.utils.exceptions.ReviewedStingException if normalized sequence cannot be generated. + */ + private static void normalizeReferenceSequence(byte[] referenceSequence) { + StringUtil.toUpperCase(referenceSequence); + for(byte base: referenceSequence) { + if(base != 'A' && base != 'C' && base != 'G' && base != 'T') + throw new ReviewedStingException(String.format("Base type %c is not supported when building references on-the-fly",(char)base)); + } + } +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/bwa/c/BWACAligner.java b/public/java/src/org/broadinstitute/sting/alignment/bwa/c/BWACAligner.java new file mode 100644 index 000000000..8631c42d8 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/bwa/c/BWACAligner.java @@ -0,0 +1,258 @@ +package org.broadinstitute.sting.alignment.bwa.c; + +import net.sf.samtools.SAMRecord; +import net.sf.samtools.SAMFileHeader; +import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; +import org.broadinstitute.sting.alignment.Alignment; +import org.broadinstitute.sting.alignment.bwa.BWAConfiguration; +import org.broadinstitute.sting.alignment.bwa.BWTFiles; +import org.broadinstitute.sting.alignment.bwa.BWAAligner; + +import java.util.*; + +/** + * An aligner using the BWA/C implementation. + * + * @author mhanna + * @version 0.1 + */ +public class BWACAligner extends BWAAligner { + static { + System.loadLibrary("bwa"); + } + + /** + * A pointer to the C++ object representing the BWA engine. + */ + private long thunkPointer = 0; + + public BWACAligner(BWTFiles bwtFiles, BWAConfiguration configuration) { + super(bwtFiles,configuration); + if(thunkPointer != 0) + throw new ReviewedStingException("BWA/C attempting to reinitialize."); + + if(!bwtFiles.annFile.exists()) throw new ReviewedStingException("ANN file is missing; please rerun 'bwa aln' to regenerate it."); + if(!bwtFiles.ambFile.exists()) throw new ReviewedStingException("AMB file is missing; please rerun 'bwa aln' to regenerate it."); + if(!bwtFiles.pacFile.exists()) throw new ReviewedStingException("PAC file is missing; please rerun 'bwa aln' to regenerate it."); + if(!bwtFiles.forwardBWTFile.exists()) throw new ReviewedStingException("Forward BWT file is missing; please rerun 'bwa aln' to regenerate it."); + if(!bwtFiles.forwardSAFile.exists()) throw new ReviewedStingException("Forward SA file is missing; please rerun 'bwa aln' to regenerate it."); + if(!bwtFiles.reverseBWTFile.exists()) throw new ReviewedStingException("Reverse BWT file is missing; please rerun 'bwa aln' to regenerate it."); + if(!bwtFiles.reverseSAFile.exists()) throw new ReviewedStingException("Reverse SA file is missing; please rerun 'bwa aln' to regenerate it."); + + thunkPointer = create(bwtFiles,configuration); + } + + /** + * Create an aligner object using an array of bytes as a reference. + * @param referenceSequence Reference sequence to encode ad-hoc. + * @param configuration Configuration for the given aligner. + */ + public BWACAligner(byte[] referenceSequence, BWAConfiguration configuration) { + this(BWTFiles.createFromReferenceSequence(referenceSequence),configuration); + // Now that the temporary files are created, the temporary files can be destroyed. + bwtFiles.close(); + } + + /** + * Update the configuration passed to the BWA aligner. + * @param configuration New configuration to set. + */ + @Override + public void updateConfiguration(BWAConfiguration configuration) { + if(thunkPointer == 0) + throw new ReviewedStingException("BWA/C: attempting to update configuration of uninitialized aligner."); + updateConfiguration(thunkPointer,configuration); + } + + /** + * Close this instance of the BWA pointer and delete its resources. + */ + @Override + public void close() { + if(thunkPointer == 0) + throw new ReviewedStingException("BWA/C close attempted, but BWA/C is not properly initialized."); + destroy(thunkPointer); + } + + /** + * Allow the aligner to choose one alignment randomly from the pile of best alignments. + * @param bases Bases to align. + * @return An align + */ + @Override + public Alignment getBestAlignment(final byte[] bases) { + if(thunkPointer == 0) + throw new ReviewedStingException("BWA/C getBestAlignment attempted, but BWA/C is not properly initialized."); + return getBestAlignment(thunkPointer,bases); + } + + /** + * Get the best aligned read, chosen randomly from the pile of best alignments. + * @param read Read to align. + * @param newHeader New header to apply to this SAM file. Can be null, but if so, read header must be valid. + * @return Read with injected alignment data. + */ + @Override + public SAMRecord align(final SAMRecord read, final SAMFileHeader newHeader) { + if(bwtFiles.autogenerated) + throw new UnsupportedOperationException("Cannot create target alignment; source contig was generated ad-hoc and is not reliable"); + return Alignment.convertToRead(getBestAlignment(read.getReadBases()),read,newHeader); + } + + /** + * Get a iterator of alignments, batched by mapping quality. + * @param bases List of bases. + * @return Iterator to alignments. + */ + @Override + public Iterable getAllAlignments(final byte[] bases) { + final BWAPath[] paths = getPaths(bases); + return new Iterable() { + public Iterator iterator() { + return new Iterator() { + /** + * The last position accessed. + */ + private int position = 0; + + /** + * Whether all alignments have been seen based on the current position. + * @return True if any more alignments are pending. False otherwise. + */ + public boolean hasNext() { return position < paths.length; } + + /** + * Return the next cross-section of alignments, based on mapping quality. + * @return Array of the next set of alignments of a given mapping quality. + */ + public Alignment[] next() { + if(position >= paths.length) + throw new UnsupportedOperationException("Out of alignments to return."); + int score = paths[position].score; + int startingPosition = position; + while(position < paths.length && paths[position].score == score) position++; + return convertPathsToAlignments(bases,Arrays.copyOfRange(paths,startingPosition,position)); + } + + /** + * Unsupported. + */ + public void remove() { throw new UnsupportedOperationException("Cannot remove from an alignment iterator"); } + }; + } + }; + } + + /** + * Get a iterator of aligned reads, batched by mapping quality. + * @param read Read to align. + * @param newHeader Optional new header to use when aligning the read. If present, it must be null. + * @return Iterator to alignments. + */ + @Override + public Iterable alignAll(final SAMRecord read, final SAMFileHeader newHeader) { + if(bwtFiles.autogenerated) + throw new UnsupportedOperationException("Cannot create target alignment; source contig was generated ad-hoc and is not reliable"); + final Iterable alignments = getAllAlignments(read.getReadBases()); + return new Iterable() { + public Iterator iterator() { + final Iterator alignmentIterator = alignments.iterator(); + return new Iterator() { + /** + * Whether all alignments have been seen based on the current position. + * @return True if any more alignments are pending. False otherwise. + */ + public boolean hasNext() { return alignmentIterator.hasNext(); } + + /** + * Return the next cross-section of alignments, based on mapping quality. + * @return Array of the next set of alignments of a given mapping quality. + */ + public SAMRecord[] next() { + Alignment[] alignmentsOfQuality = alignmentIterator.next(); + SAMRecord[] reads = new SAMRecord[alignmentsOfQuality.length]; + for(int i = 0; i < alignmentsOfQuality.length; i++) { + reads[i] = Alignment.convertToRead(alignmentsOfQuality[i],read,newHeader); + } + return reads; + } + + /** + * Unsupported. + */ + public void remove() { throw new UnsupportedOperationException("Cannot remove from an alignment iterator"); } + }; + } + }; + } + + /** + * Get the paths associated with the given base string. + * @param bases List of bases. + * @return A set of paths through the BWA. + */ + public BWAPath[] getPaths(byte[] bases) { + if(thunkPointer == 0) + throw new ReviewedStingException("BWA/C getPaths attempted, but BWA/C is not properly initialized."); + return getPaths(thunkPointer,bases); + } + + /** + * Create a pointer to the BWA/C thunk. + * @param files BWT source files. + * @param configuration Configuration of the aligner. + * @return Pointer to the BWA/C thunk. + */ + protected native long create(BWTFiles files, BWAConfiguration configuration); + + /** + * Update the configuration passed to the BWA aligner. For internal use only. + * @param thunkPointer pointer to BWA object. + * @param configuration New configuration to set. + */ + protected native void updateConfiguration(long thunkPointer, BWAConfiguration configuration); + + /** + * Destroy the BWA/C thunk. + * @param thunkPointer Pointer to the allocated thunk. + */ + protected native void destroy(long thunkPointer); + + /** + * Do the extra steps involved in converting a local alignment to a global alignment. + * @param bases ASCII representation of byte array. + * @param paths Paths through the current BWT. + * @return A list of alignments. + */ + protected Alignment[] convertPathsToAlignments(byte[] bases, BWAPath[] paths) { + if(thunkPointer == 0) + throw new ReviewedStingException("BWA/C convertPathsToAlignments attempted, but BWA/C is not properly initialized."); + return convertPathsToAlignments(thunkPointer,bases,paths); + } + + /** + * Caller to the path generation functionality within BWA/C. Call this method's getPaths() wrapper (above) instead. + * @param thunkPointer pointer to the C++ object managing BWA/C. + * @param bases ASCII representation of byte array. + * @return A list of paths through the specified BWT. + */ + protected native BWAPath[] getPaths(long thunkPointer, byte[] bases); + + /** + * Do the extra steps involved in converting a local alignment to a global alignment. + * Call this method's convertPathsToAlignments() wrapper (above) instead. + * @param thunkPointer pointer to the C++ object managing BWA/C. + * @param bases ASCII representation of byte array. + * @param paths Paths through the current BWT. + * @return A list of alignments. + */ + protected native Alignment[] convertPathsToAlignments(long thunkPointer, byte[] bases, BWAPath[] paths); + + /** + * Gets the best alignment from BWA/C, randomly selected from all best-aligned reads. + * @param thunkPointer Pointer to BWA thunk. + * @param bases bases to align. + * @return The best alignment from BWA/C. + */ + protected native Alignment getBestAlignment(long thunkPointer, byte[] bases); +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/bwa/c/BWAPath.java b/public/java/src/org/broadinstitute/sting/alignment/bwa/c/BWAPath.java new file mode 100755 index 000000000..347d4344f --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/bwa/c/BWAPath.java @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2009 The Broad Institute + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +package org.broadinstitute.sting.alignment.bwa.c; + +/** + * Models a BWA path. + * + * @author mhanna + * @version 0.1 + */ +public class BWAPath { + /** + * Number of mismatches encountered along this path. + */ + public final int numMismatches; + + /** + * Number of gap opens encountered along this path. + */ + public final int numGapOpens; + + /** + * Number of gap extensions along this path. + */ + public final int numGapExtensions; + + /** + * Whether this alignment was found on the positive or negative strand. + */ + public final boolean negativeStrand; + + /** + * Starting coordinate in the BWT. + */ + public final long k; + + /** + * Ending coordinate in the BWT. + */ + public final long l; + + /** + * The score of this path. + */ + public final int score; + + /** + * The number of best alignments seen along this path. + */ + public final int bestCount; + + /** + * The number of second best alignments seen along this path. + */ + public final int secondBestCount; + + /** + * Create a new path with the given attributes. + * @param numMismatches Number of mismatches along path. + * @param numGapOpens Number of gap opens along path. + * @param numGapExtensions Number of gap extensions along path. + * @param k Index to first coordinate within BWT. + * @param l Index to last coordinate within BWT. + * @param score Score of this alignment. Not the mapping quality. + */ + public BWAPath(int numMismatches, int numGapOpens, int numGapExtensions, boolean negativeStrand, long k, long l, int score, int bestCount, int secondBestCount) { + this.numMismatches = numMismatches; + this.numGapOpens = numGapOpens; + this.numGapExtensions = numGapExtensions; + this.negativeStrand = negativeStrand; + this.k = k; + this.l = l; + this.score = score; + this.bestCount = bestCount; + this.secondBestCount = secondBestCount; + } + +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/bwa/java/AlignerTestHarness.java b/public/java/src/org/broadinstitute/sting/alignment/bwa/java/AlignerTestHarness.java new file mode 100644 index 000000000..ae6e22221 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/bwa/java/AlignerTestHarness.java @@ -0,0 +1,165 @@ +package org.broadinstitute.sting.alignment.bwa.java; + +import org.broadinstitute.sting.alignment.Aligner; +import org.broadinstitute.sting.alignment.Alignment; +import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; +import org.broadinstitute.sting.utils.BaseUtils; + +import java.io.File; +import java.io.FileNotFoundException; + +import net.sf.samtools.*; +import net.sf.picard.reference.IndexedFastaSequenceFile; + +/** + * A test harness to ensure that the perfect aligner works. + * + * @author mhanna + * @version 0.1 + */ +public class AlignerTestHarness { + public static void main( String argv[] ) throws FileNotFoundException { + if( argv.length != 6 ) { + System.out.println("PerfectAlignerTestHarness "); + System.exit(1); + } + + File referenceFile = new File(argv[0]); + File bwtFile = new File(argv[1]); + File rbwtFile = new File(argv[2]); + File suffixArrayFile = new File(argv[3]); + File reverseSuffixArrayFile = new File(argv[4]); + File bamFile = new File(argv[5]); + + align(referenceFile,bwtFile,rbwtFile,suffixArrayFile,reverseSuffixArrayFile,bamFile); + } + + private static void align(File referenceFile, File bwtFile, File rbwtFile, File suffixArrayFile, File reverseSuffixArrayFile, File bamFile) throws FileNotFoundException { + Aligner aligner = new BWAJavaAligner(bwtFile,rbwtFile,suffixArrayFile,reverseSuffixArrayFile); + int count = 0; + + SAMFileReader reader = new SAMFileReader(bamFile); + reader.setValidationStringency(SAMFileReader.ValidationStringency.SILENT); + + int mismatches = 0; + int failures = 0; + + for(SAMRecord read: reader) { + count++; + if( count > 200000 ) break; + //if( count < 366000 ) continue; + //if( count > 2 ) break; + //if( !read.getReadName().endsWith("SL-XBC:1:82:506:404#0") ) + // continue; + //if( !read.getReadName().endsWith("SL-XBC:1:36:30:1926#0") ) + // continue; + //if( !read.getReadName().endsWith("SL-XBC:1:60:1342:1340#0") ) + // continue; + + SAMRecord alignmentCleaned = null; + try { + alignmentCleaned = (SAMRecord)read.clone(); + } + catch( CloneNotSupportedException ex ) { + throw new ReviewedStingException("SAMRecord clone not supported", ex); + } + + if( alignmentCleaned.getReadNegativeStrandFlag() ) + alignmentCleaned.setReadBases(BaseUtils.simpleReverseComplement(alignmentCleaned.getReadBases())); + + alignmentCleaned.setReferenceIndex(SAMRecord.NO_ALIGNMENT_REFERENCE_INDEX); + alignmentCleaned.setAlignmentStart(SAMRecord.NO_ALIGNMENT_START); + alignmentCleaned.setMappingQuality(SAMRecord.NO_MAPPING_QUALITY); + alignmentCleaned.setCigarString(SAMRecord.NO_ALIGNMENT_CIGAR); + + // Clear everything except flags pertaining to pairing and set 'unmapped' status to true. + alignmentCleaned.setFlags(alignmentCleaned.getFlags() & 0x00A1 | 0x000C); + + Iterable alignments = aligner.getAllAlignments(alignmentCleaned.getReadBases()); + if(!alignments.iterator().hasNext() ) { + //throw new StingException(String.format("Unable to align read %s to reference; count = %d",read.getReadName(),count)); + System.out.printf("Unable to align read %s to reference; count = %d%n",read.getReadName(),count); + failures++; + } + + Alignment foundAlignment = null; + for(Alignment[] alignmentsOfQuality: alignments) { + for(Alignment alignment: alignmentsOfQuality) { + if( read.getReadNegativeStrandFlag() != alignment.isNegativeStrand() ) + continue; + if( read.getAlignmentStart() != alignment.getAlignmentStart() ) + continue; + + foundAlignment = alignment; + } + } + + if( foundAlignment != null ) { + //System.out.printf("%s: Aligned read to reference at position %d with %d mismatches, %d gap opens, and %d gap extensions.%n", read.getReadName(), foundAlignment.getAlignmentStart(), foundAlignment.getMismatches(), foundAlignment.getGapOpens(), foundAlignment.getGapExtensions()); + } + else { + System.out.printf("Error aligning read %s%n", read.getReadName()); + + mismatches++; + + IndexedFastaSequenceFile reference = new IndexedFastaSequenceFile(referenceFile); + + System.out.printf("read = %s, position = %d, negative strand = %b%n", formatBasesBasedOnCigar(read.getReadString(),read.getCigar(),CigarOperator.DELETION), + read.getAlignmentStart(), + read.getReadNegativeStrandFlag()); + int numDeletions = numDeletionsInCigar(read.getCigar()); + String expectedRef = new String(reference.getSubsequenceAt(reference.getSequenceDictionary().getSequences().get(0).getSequenceName(),read.getAlignmentStart(),read.getAlignmentStart()+read.getReadLength()+numDeletions-1).getBases()); + System.out.printf("expected ref = %s%n", formatBasesBasedOnCigar(expectedRef,read.getCigar(),CigarOperator.INSERTION)); + + for(Alignment[] alignmentsOfQuality: alignments) { + for(Alignment alignment: alignmentsOfQuality) { + System.out.println(); + + Cigar cigar = ((BWAAlignment)alignment).getCigar(); + + System.out.printf("read = %s%n", formatBasesBasedOnCigar(read.getReadString(),cigar,CigarOperator.DELETION)); + + int deletionCount = ((BWAAlignment)alignment).getNumberOfBasesMatchingState(AlignmentState.DELETION); + String alignedRef = new String(reference.getSubsequenceAt(reference.getSequenceDictionary().getSequences().get(0).getSequenceName(),alignment.getAlignmentStart(),alignment.getAlignmentStart()+read.getReadLength()+deletionCount-1).getBases()); + System.out.printf("actual ref = %s, position = %d, negative strand = %b%n", formatBasesBasedOnCigar(alignedRef,cigar,CigarOperator.INSERTION), + alignment.getAlignmentStart(), + alignment.isNegativeStrand()); + } + } + + //throw new StingException(String.format("Read %s was placed at incorrect location; count = %d%n",read.getReadName(),count)); + } + + + if( count % 1000 == 0 ) + System.out.printf("%d reads examined.%n",count); + } + + System.out.printf("%d reads examined; %d mismatches; %d failures.%n",count,mismatches,failures); + } + + private static String formatBasesBasedOnCigar( String bases, Cigar cigar, CigarOperator toBlank ) { + StringBuilder formatted = new StringBuilder(); + int readIndex = 0; + for(CigarElement cigarElement: cigar.getCigarElements()) { + if(cigarElement.getOperator() == toBlank) { + int number = cigarElement.getLength(); + while( number-- > 0 ) formatted.append(' '); + } + else { + int number = cigarElement.getLength(); + while( number-- > 0 ) formatted.append(bases.charAt(readIndex++)); + } + } + return formatted.toString(); + } + + private static int numDeletionsInCigar( Cigar cigar ) { + int numDeletions = 0; + for(CigarElement cigarElement: cigar.getCigarElements()) { + if(cigarElement.getOperator() == CigarOperator.DELETION) + numDeletions += cigarElement.getLength(); + } + return numDeletions; + } +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/bwa/java/AlignmentMatchSequence.java b/public/java/src/org/broadinstitute/sting/alignment/bwa/java/AlignmentMatchSequence.java new file mode 100644 index 000000000..879ecb5fb --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/bwa/java/AlignmentMatchSequence.java @@ -0,0 +1,151 @@ +package org.broadinstitute.sting.alignment.bwa.java; + +import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; + +import java.util.Deque; +import java.util.ArrayDeque; +import java.util.Iterator; + +import net.sf.samtools.Cigar; +import net.sf.samtools.CigarElement; +import net.sf.samtools.CigarOperator; + +/** + * Represents a sequence of matches. + * + * @author mhanna + * @version 0.1 + */ +public class AlignmentMatchSequence implements Cloneable { + /** + * Stores the particular match entries in the order they occur. + */ + private Deque entries = new ArrayDeque(); + + /** + * Clone the given match sequence. + * @return A deep copy of the current match sequence. + */ + public AlignmentMatchSequence clone() { + AlignmentMatchSequence copy = null; + try { + copy = (AlignmentMatchSequence)super.clone(); + } + catch( CloneNotSupportedException ex ) { + throw new ReviewedStingException("Unable to clone AlignmentMatchSequence."); + } + + copy.entries = new ArrayDeque(); + for( AlignmentMatchSequenceEntry entry: entries ) + copy.entries.add(entry.clone()); + + return copy; + } + + public Cigar convertToCigar(boolean negativeStrand) { + Cigar cigar = new Cigar(); + Iterator iterator = negativeStrand ? entries.descendingIterator() : entries.iterator(); + while( iterator.hasNext() ) { + AlignmentMatchSequenceEntry entry = iterator.next(); + CigarOperator operator; + switch( entry.getAlignmentState() ) { + case MATCH_MISMATCH: operator = CigarOperator.MATCH_OR_MISMATCH; break; + case INSERTION: operator = CigarOperator.INSERTION; break; + case DELETION: operator = CigarOperator.DELETION; break; + default: throw new ReviewedStingException("convertToCigar: cannot process state: " + entry.getAlignmentState()); + } + cigar.add( new CigarElement(entry.count,operator) ); + } + return cigar; + } + + /** + * All a new alignment of the given state. + * @param state State to add to the sequence. + */ + public void addNext( AlignmentState state ) { + AlignmentMatchSequenceEntry last = entries.peekLast(); + // If the last entry is the same as this one, increment it. Otherwise, add a new entry. + if( last != null && last.alignmentState == state ) + last.increment(); + else + entries.add(new AlignmentMatchSequenceEntry(state)); + } + + /** + * Gets the current state of this alignment (what's the state of the last base?) + * @return State of the most recently aligned base. + */ + public AlignmentState getCurrentState() { + if( entries.size() == 0 ) + return AlignmentState.MATCH_MISMATCH; + return entries.peekLast().getAlignmentState(); + } + + /** + * How many bases in the read match the given state. + * @param state State to test. + * @return number of bases which match that state. + */ + public int getNumberOfBasesMatchingState(AlignmentState state) { + int matches = 0; + for( AlignmentMatchSequenceEntry entry: entries ) { + if( entry.getAlignmentState() == state ) + matches += entry.count; + } + return matches; + } + + /** + * Stores an individual match sequence entry. + */ + private class AlignmentMatchSequenceEntry implements Cloneable { + /** + * The state of the alignment throughout a given point in the sequence. + */ + private final AlignmentState alignmentState; + + /** + * The number of bases having this particular state. + */ + private int count; + + /** + * Create a new sequence entry with the given state. + * @param alignmentState The state that this sequence should contain. + */ + AlignmentMatchSequenceEntry( AlignmentState alignmentState ) { + this.alignmentState = alignmentState; + this.count = 1; + } + + /** + * Clone the given match sequence entry. + * @return A deep copy of the current match sequence entry. + */ + public AlignmentMatchSequenceEntry clone() { + try { + return (AlignmentMatchSequenceEntry)super.clone(); + } + catch( CloneNotSupportedException ex ) { + throw new ReviewedStingException("Unable to clone AlignmentMatchSequenceEntry."); + } + } + + /** + * Retrieves the current state of the alignment. + * @return The state of the current sequence. + */ + AlignmentState getAlignmentState() { + return alignmentState; + } + + /** + * Increment the count of alignments having this particular state. + */ + void increment() { + count++; + } + } +} + diff --git a/public/java/src/org/broadinstitute/sting/alignment/bwa/java/AlignmentState.java b/public/java/src/org/broadinstitute/sting/alignment/bwa/java/AlignmentState.java new file mode 100644 index 000000000..92c603335 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/bwa/java/AlignmentState.java @@ -0,0 +1,13 @@ +package org.broadinstitute.sting.alignment.bwa.java; + +/** + * The state of a given base in the alignment. + * + * @author mhanna + * @version 0.1 + */ +public enum AlignmentState { + MATCH_MISMATCH, + INSERTION, + DELETION +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/bwa/java/BWAAlignment.java b/public/java/src/org/broadinstitute/sting/alignment/bwa/java/BWAAlignment.java new file mode 100644 index 000000000..c59546bbb --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/bwa/java/BWAAlignment.java @@ -0,0 +1,190 @@ +package org.broadinstitute.sting.alignment.bwa.java; + +import org.broadinstitute.sting.alignment.Alignment; +import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; +import net.sf.samtools.Cigar; + +/** + * An alignment object to be used incrementally as the BWA aligner + * inspects the read. + * + * @author mhanna + * @version 0.1 + */ +public class BWAAlignment extends Alignment implements Cloneable { + /** + * Track the number of alignments that have been created. + */ + private static long numCreated; + + /** + * Which number alignment is this? + */ + private long creationNumber; + + /** + * The aligner performing the alignments. + */ + protected BWAJavaAligner aligner; + + /** + * The sequence of matches/mismatches/insertions/deletions. + */ + private AlignmentMatchSequence alignmentMatchSequence = new AlignmentMatchSequence(); + + /** + * Working variable. How many bases have been matched at this point. + */ + protected int position; + + /** + * Working variable. How many mismatches have been encountered at this point. + */ + private int mismatches; + + /** + * Number of gap opens in alignment. + */ + private int gapOpens; + + /** + * Number of gap extensions in alignment. + */ + private int gapExtensions; + + /** + * Working variable. The lower bound of the alignment within the BWT. + */ + protected long loBound; + + /** + * Working variable. The upper bound of the alignment within the BWT. + */ + protected long hiBound; + + protected void setAlignmentStart(long position) { + this.alignmentStart = position; + } + + protected void setNegativeStrand(boolean negativeStrand) { + this.negativeStrand = negativeStrand; + } + + /** + * Cache the score. + */ + private int score; + + public Cigar getCigar() { + return alignmentMatchSequence.convertToCigar(isNegativeStrand()); + } + + /** + * Gets the current state of this alignment (state of the last base viewed).. + * @return Current state of the alignment. + */ + public AlignmentState getCurrentState() { + return alignmentMatchSequence.getCurrentState(); + } + + /** + * Adds the given state to the current alignment. + * @param state State to add to the given alignment. + */ + public void addState( AlignmentState state ) { + alignmentMatchSequence.addNext(state); + } + + /** + * Gets the BWA score of this alignment. + * @return BWA-style scores. 0 is best. + */ + public int getScore() { + return score; + } + + public int getMismatches() { return mismatches; } + public int getGapOpens() { return gapOpens; } + public int getGapExtensions() { return gapExtensions; } + + public void incrementMismatches() { + this.mismatches++; + updateScore(); + } + + public void incrementGapOpens() { + this.gapOpens++; + updateScore(); + } + + public void incrementGapExtensions() { + this.gapExtensions++; + updateScore(); + } + + /** + * Updates the score based on new information about matches / mismatches. + */ + private void updateScore() { + score = mismatches*aligner.MISMATCH_PENALTY + gapOpens*aligner.GAP_OPEN_PENALTY + gapExtensions*aligner.GAP_EXTENSION_PENALTY; + } + + /** + * Create a new alignment with the given parent aligner. + * @param aligner Aligner being used. + */ + public BWAAlignment( BWAJavaAligner aligner ) { + this.aligner = aligner; + this.creationNumber = numCreated++; + } + + /** + * Clone the alignment. + * @return New instance of the alignment. + */ + public BWAAlignment clone() { + BWAAlignment newAlignment = null; + try { + newAlignment = (BWAAlignment)super.clone(); + } + catch( CloneNotSupportedException ex ) { + throw new ReviewedStingException("Unable to clone BWAAlignment."); + } + newAlignment.creationNumber = numCreated++; + newAlignment.alignmentMatchSequence = alignmentMatchSequence.clone(); + + return newAlignment; + } + + /** + * How many bases in the read match the given state. + * @param state State to test. + * @return number of bases which match that state. + */ + public int getNumberOfBasesMatchingState(AlignmentState state) { + return alignmentMatchSequence.getNumberOfBasesMatchingState(state); + } + + /** + * Compare this alignment to another alignment. + * @param rhs Other alignment to which to compare. + * @return < 0 if this < other, == 0 if this == other, > 0 if this > other + */ + public int compareTo(Alignment rhs) { + BWAAlignment other = (BWAAlignment)rhs; + + // If the scores are different, disambiguate using the score. + if(score != other.score) + return score > other.score ? 1 : -1; + + // Otherwise, use the order in which the elements were created. + if(creationNumber != other.creationNumber) + return creationNumber > other.creationNumber ? -1 : 1; + + return 0; + } + + public String toString() { + return String.format("position: %d, strand: %b, state: %s, mismatches: %d, gap opens: %d, gap extensions: %d, loBound: %d, hiBound: %d, score: %d, creationNumber: %d", position, negativeStrand, alignmentMatchSequence.getCurrentState(), mismatches, gapOpens, gapExtensions, loBound, hiBound, getScore(), creationNumber); + } +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/bwa/java/BWAJavaAligner.java b/public/java/src/org/broadinstitute/sting/alignment/bwa/java/BWAJavaAligner.java new file mode 100644 index 000000000..81186c53e --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/bwa/java/BWAJavaAligner.java @@ -0,0 +1,392 @@ +package org.broadinstitute.sting.alignment.bwa.java; + +import org.broadinstitute.sting.alignment.reference.bwt.*; +import org.broadinstitute.sting.alignment.bwa.BWAAligner; +import org.broadinstitute.sting.alignment.bwa.BWAConfiguration; +import org.broadinstitute.sting.alignment.Alignment; +import org.broadinstitute.sting.utils.BaseUtils; +import org.broadinstitute.sting.utils.Utils; + +import java.io.File; +import java.util.*; + +import net.sf.samtools.SAMRecord; +import net.sf.samtools.SAMFileHeader; + +/** + * Create imperfect alignments from the read to the genome represented by the given BWT / suffix array. + * + * @author mhanna + * @version 0.1 + */ +public class BWAJavaAligner extends BWAAligner { + /** + * BWT in the forward direction. + */ + private BWT forwardBWT; + + /** + * BWT in the reverse direction. + */ + private BWT reverseBWT; + + /** + * Suffix array in the forward direction. + */ + private SuffixArray forwardSuffixArray; + + /** + * Suffix array in the reverse direction. + */ + private SuffixArray reverseSuffixArray; + + /** + * Maximum edit distance (-n option from original BWA). + */ + private final int MAXIMUM_EDIT_DISTANCE = 4; + + /** + * Maximum number of gap opens (-o option from original BWA). + */ + private final int MAXIMUM_GAP_OPENS = 1; + + /** + * Maximum number of gap extensions (-e option from original BWA). + */ + private final int MAXIMUM_GAP_EXTENSIONS = 6; + + /** + * Penalty for straight mismatches (-M option from original BWA). + */ + public final int MISMATCH_PENALTY = 3; + + /** + * Penalty for gap opens (-O option from original BWA). + */ + public final int GAP_OPEN_PENALTY = 11; + + /** + * Penalty for gap extensions (-E option from original BWA). + */ + public final int GAP_EXTENSION_PENALTY = 4; + + /** + * Skip the ends of indels. + */ + public final int INDEL_END_SKIP = 5; + + public BWAJavaAligner( File forwardBWTFile, File reverseBWTFile, File forwardSuffixArrayFile, File reverseSuffixArrayFile ) { + super(null,null); + forwardBWT = new BWTReader(forwardBWTFile).read(); + reverseBWT = new BWTReader(reverseBWTFile).read(); + forwardSuffixArray = new SuffixArrayReader(forwardSuffixArrayFile,forwardBWT).read(); + reverseSuffixArray = new SuffixArrayReader(reverseSuffixArrayFile,reverseBWT).read(); + } + + /** + * Close this instance of the BWA pointer and delete its resources. + */ + @Override + public void close() { + throw new UnsupportedOperationException("BWA aligner can't currently be closed."); + } + + /** + * Update the current parameters of this aligner. + * @param configuration New configuration to set. + */ + public void updateConfiguration(BWAConfiguration configuration) { + throw new UnsupportedOperationException("Configuration of the BWA aligner can't currently be changed."); + } + + /** + * Allow the aligner to choose one alignment randomly from the pile of best alignments. + * @param bases Bases to align. + * @return An align + */ + public Alignment getBestAlignment(final byte[] bases) { throw new UnsupportedOperationException("BWAJavaAligner does not yet support the standard Aligner interface."); } + + /** + * Align the read to the reference. + * @param read Read to align. + * @param header Optional header to drop in place. + * @return A list of the alignments. + */ + public SAMRecord align(final SAMRecord read, final SAMFileHeader header) { throw new UnsupportedOperationException("BWAJavaAligner does not yet support the standard Aligner interface."); } + + /** + * Get a iterator of alignments, batched by mapping quality. + * @param bases List of bases. + * @return Iterator to alignments. + */ + public Iterable getAllAlignments(final byte[] bases) { throw new UnsupportedOperationException("BWAJavaAligner does not yet support the standard Aligner interface."); } + + /** + * Get a iterator of aligned reads, batched by mapping quality. + * @param read Read to align. + * @param newHeader Optional new header to use when aligning the read. If present, it must be null. + * @return Iterator to alignments. + */ + public Iterable alignAll(final SAMRecord read, final SAMFileHeader newHeader) { throw new UnsupportedOperationException("BWAJavaAligner does not yet support the standard Aligner interface."); } + + + public List align( SAMRecord read ) { + List successfulMatches = new ArrayList(); + + Byte[] uncomplementedBases = normalizeBases(read.getReadBases()); + Byte[] complementedBases = normalizeBases(Utils.reverse(BaseUtils.simpleReverseComplement(read.getReadBases()))); + + List forwardLowerBounds = LowerBound.create(uncomplementedBases,forwardBWT); + List reverseLowerBounds = LowerBound.create(complementedBases,reverseBWT); + + // Seed the best score with any score that won't overflow on comparison. + int bestScore = Integer.MAX_VALUE - MISMATCH_PENALTY; + int bestDiff = MAXIMUM_EDIT_DISTANCE+1; + int maxDiff = MAXIMUM_EDIT_DISTANCE; + + PriorityQueue alignments = new PriorityQueue(); + + // Create a fictional initial alignment, with the position just off the end of the read, and the limits + // set as the entire BWT. + alignments.add(createSeedAlignment(reverseBWT)); + alignments.add(createSeedAlignment(forwardBWT)); + + while(!alignments.isEmpty()) { + BWAAlignment alignment = alignments.remove(); + + // From bwtgap.c in the original BWT; if the rank is worse than the best score + the mismatch PENALTY, move on. + if( alignment.getScore() > bestScore + MISMATCH_PENALTY ) + break; + + Byte[] bases = alignment.isNegativeStrand() ? complementedBases : uncomplementedBases; + BWT bwt = alignment.isNegativeStrand() ? forwardBWT : reverseBWT; + List lowerBounds = alignment.isNegativeStrand() ? reverseLowerBounds : forwardLowerBounds; + + // if z < D(i) then return {} + int mismatches = maxDiff - alignment.getMismatches() - alignment.getGapOpens() - alignment.getGapExtensions(); + if( alignment.position < lowerBounds.size()-1 && mismatches < lowerBounds.get(alignment.position+1).value ) + continue; + + if(mismatches == 0) { + exactMatch(alignment,bases,bwt); + if(alignment.loBound > alignment.hiBound) + continue; + } + + // Found a valid alignment; store it and move on. + if(alignment.position >= read.getReadLength()-1) { + for(long bwtIndex = alignment.loBound; bwtIndex <= alignment.hiBound; bwtIndex++) { + BWAAlignment finalAlignment = alignment.clone(); + + if( finalAlignment.isNegativeStrand() ) + finalAlignment.setAlignmentStart(forwardSuffixArray.get(bwtIndex) + 1); + else { + int sizeAlongReference = read.getReadLength() - + finalAlignment.getNumberOfBasesMatchingState(AlignmentState.INSERTION) + + finalAlignment.getNumberOfBasesMatchingState(AlignmentState.DELETION); + finalAlignment.setAlignmentStart(reverseBWT.length() - reverseSuffixArray.get(bwtIndex) - sizeAlongReference + 1); + } + + successfulMatches.add(finalAlignment); + + bestScore = Math.min(finalAlignment.getScore(),bestScore); + bestDiff = Math.min(finalAlignment.getMismatches()+finalAlignment.getGapOpens()+finalAlignment.getGapExtensions(),bestDiff); + maxDiff = bestDiff + 1; + } + + continue; + } + + //System.out.printf("Processing alignments; queue size = %d, alignment = %s, bound = %d, base = %s%n", alignments.size(), alignment, lowerBounds.get(alignment.position+1).value, alignment.position >= 0 ? (char)bases[alignment.position].byteValue() : ""); + /* + System.out.printf("#1\t[%d,%d,%d,%c]\t[%d,%d,%d]\t[%d,%d]\t[%d,%d]%n",alignments.size(), + alignment.negativeStrand?1:0, + bases.length-alignment.position-1, + alignment.getCurrentState().toString().charAt(0), + alignment.getMismatches(), + alignment.getGapOpens(), + alignment.getGapExtensions(), + lowerBounds.get(alignment.position+1).value, + lowerBounds.get(alignment.position+1).width, + alignment.loBound, + alignment.hiBound); + */ + + // Temporary -- look ahead to see if the next alignment is bounded. + boolean allowDifferences = mismatches > 0; + boolean allowMismatches = mismatches > 0; + + if( allowDifferences && + alignment.position+1 >= INDEL_END_SKIP-1+alignment.getGapOpens()+alignment.getGapExtensions() && + read.getReadLength()-1-(alignment.position+1) >= INDEL_END_SKIP+alignment.getGapOpens()+alignment.getGapExtensions() ) { + if( alignment.getCurrentState() == AlignmentState.MATCH_MISMATCH ) { + if( alignment.getGapOpens() < MAXIMUM_GAP_OPENS ) { + // Add a potential insertion extension. + BWAAlignment insertionAlignment = createInsertionAlignment(alignment); + insertionAlignment.incrementGapOpens(); + alignments.add(insertionAlignment); + + // Add a potential deletion by marking a deletion and augmenting the position. + List deletionAlignments = createDeletionAlignments(bwt,alignment); + for( BWAAlignment deletionAlignment: deletionAlignments ) + deletionAlignment.incrementGapOpens(); + alignments.addAll(deletionAlignments); + } + } + else if( alignment.getCurrentState() == AlignmentState.INSERTION ) { + if( alignment.getGapExtensions() < MAXIMUM_GAP_EXTENSIONS && mismatches > 0 ) { + // Add a potential insertion extension. + BWAAlignment insertionAlignment = createInsertionAlignment(alignment); + insertionAlignment.incrementGapExtensions(); + alignments.add(insertionAlignment); + } + } + else if( alignment.getCurrentState() == AlignmentState.DELETION ) { + if( alignment.getGapExtensions() < MAXIMUM_GAP_EXTENSIONS && mismatches > 0 ) { + // Add a potential deletion by marking a deletion and augmenting the position. + List deletionAlignments = createDeletionAlignments(bwt,alignment); + for( BWAAlignment deletionAlignment: deletionAlignments ) + deletionAlignment.incrementGapExtensions(); + alignments.addAll(deletionAlignments); + } + } + } + + // Mismatches + alignments.addAll(createMatchedAlignments(bwt,alignment,bases,allowDifferences&&allowMismatches)); + } + + return successfulMatches; + } + + /** + * Create an seeding alignment to use as a starting point when traversing. + * @param bwt source BWT. + * @return Seed alignment. + */ + private BWAAlignment createSeedAlignment(BWT bwt) { + BWAAlignment seed = new BWAAlignment(this); + seed.setNegativeStrand(bwt == forwardBWT); + seed.position = -1; + seed.loBound = 0; + seed.hiBound = bwt.length(); + return seed; + } + + /** + * Creates a new alignments representing direct matches / mismatches. + * @param bwt Source BWT with which to work. + * @param alignment Alignment for the previous position. + * @param bases The bases in the read. + * @param allowMismatch Should mismatching bases be allowed? + * @return New alignment representing this position if valid; null otherwise. + */ + private List createMatchedAlignments( BWT bwt, BWAAlignment alignment, Byte[] bases, boolean allowMismatch ) { + List newAlignments = new ArrayList(); + + List baseChoices = new ArrayList(); + Byte thisBase = bases[alignment.position+1]; + + if( allowMismatch ) + baseChoices.addAll(Bases.allOf()); + else + baseChoices.add(thisBase); + + if( thisBase != null ) { + // Keep rotating the current base to the last position until we've hit the current base. + for( ;; ) { + baseChoices.add(baseChoices.remove(0)); + if( thisBase.equals(baseChoices.get(baseChoices.size()-1)) ) + break; + + } + } + + for(byte base: baseChoices) { + BWAAlignment newAlignment = alignment.clone(); + + newAlignment.loBound = bwt.counts(base) + bwt.occurrences(base,alignment.loBound-1) + 1; + newAlignment.hiBound = bwt.counts(base) + bwt.occurrences(base,alignment.hiBound); + + // If this alignment is valid, skip it. + if( newAlignment.loBound > newAlignment.hiBound ) + continue; + + newAlignment.position++; + newAlignment.addState(AlignmentState.MATCH_MISMATCH); + if( bases[newAlignment.position] == null || base != bases[newAlignment.position] ) + newAlignment.incrementMismatches(); + + newAlignments.add(newAlignment); + } + + return newAlignments; + } + + /** + * Create a new alignment representing an insertion at this point in the read. + * @param alignment Alignment from which to derive the insertion. + * @return New alignment reflecting the insertion. + */ + private BWAAlignment createInsertionAlignment( BWAAlignment alignment ) { + // Add a potential insertion extension. + BWAAlignment newAlignment = alignment.clone(); + newAlignment.position++; + newAlignment.addState(AlignmentState.INSERTION); + return newAlignment; + } + + /** + * Create new alignments representing a deletion at this point in the read. + * @param bwt source BWT for inferring deletion info. + * @param alignment Alignment from which to derive the deletion. + * @return New alignments reflecting all possible deletions. + */ + private List createDeletionAlignments( BWT bwt, BWAAlignment alignment) { + List newAlignments = new ArrayList(); + for(byte base: Bases.instance) { + BWAAlignment newAlignment = alignment.clone(); + + newAlignment.loBound = bwt.counts(base) + bwt.occurrences(base,alignment.loBound-1) + 1; + newAlignment.hiBound = bwt.counts(base) + bwt.occurrences(base,alignment.hiBound); + + // If this alignment is valid, skip it. + if( newAlignment.loBound > newAlignment.hiBound ) + continue; + + newAlignment.addState(AlignmentState.DELETION); + + newAlignments.add(newAlignment); + } + + return newAlignments; + } + + /** + * Exactly match the given alignment against the given BWT. + * @param alignment Alignment to match. + * @param bases Bases to use. + * @param bwt BWT to use. + */ + private void exactMatch( BWAAlignment alignment, Byte[] bases, BWT bwt ) { + while( ++alignment.position < bases.length ) { + byte base = bases[alignment.position]; + alignment.loBound = bwt.counts(base) + bwt.occurrences(base,alignment.loBound-1) + 1; + alignment.hiBound = bwt.counts(base) + bwt.occurrences(base,alignment.hiBound); + if( alignment.loBound > alignment.hiBound ) + return; + } + } + + /** + * Make each base into A/C/G/T or null if unknown. + * @param bases Base string to normalize. + * @return Array of normalized bases. + */ + private Byte[] normalizeBases( byte[] bases ) { + Byte[] normalBases = new Byte[bases.length]; + for(int i = 0; i < bases.length; i++) + normalBases[i] = Bases.fromASCII(bases[i]); + return normalBases; + } +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/bwa/java/LowerBound.java b/public/java/src/org/broadinstitute/sting/alignment/bwa/java/LowerBound.java new file mode 100644 index 000000000..3784643c0 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/bwa/java/LowerBound.java @@ -0,0 +1,88 @@ +package org.broadinstitute.sting.alignment.bwa.java; + +import java.util.List; +import java.util.ArrayList; + +import org.broadinstitute.sting.alignment.reference.bwt.BWT; + +/** + * At any point along the given read, what is a good lower bound for the + * total number of differences? + * + * @author mhanna + * @version 0.1 + */ +public class LowerBound { + /** + * Lower bound of the suffix array. + */ + public final long loIndex; + + /** + * Upper bound of the suffix array. + */ + public final long hiIndex; + + /** + * Width of the bwt from loIndex -> hiIndex, inclusive. + */ + public final long width; + + /** + * The lower bound at the given point. + */ + public final int value; + + /** + * Create a new lower bound with the given value. + * @param loIndex The lower bound of the BWT. + * @param hiIndex The upper bound of the BWT. + * @param value Value for the lower bound at this site. + */ + private LowerBound(long loIndex, long hiIndex, int value) { + this.loIndex = loIndex; + this.hiIndex = hiIndex; + this.width = hiIndex - loIndex + 1; + this.value = value; + } + + /** + * Create a non-optimal bound according to the algorithm specified in Figure 3 of the BWA paper. + * @param bases Bases of the read to use when creating a new BWT. + * @param bwt BWT to check against. + * @return A list of lower bounds at every point in the reference. + * + */ + public static List create(Byte[] bases, BWT bwt) { + List bounds = new ArrayList(); + + long loIndex = 0, hiIndex = bwt.length(); + int mismatches = 0; + for( int i = bases.length-1; i >= 0; i-- ) { + Byte base = bases[i]; + + // Ignore non-ACGT bases. + if( base != null ) { + loIndex = bwt.counts(base) + bwt.occurrences(base,loIndex-1) + 1; + hiIndex = bwt.counts(base) + bwt.occurrences(base,hiIndex); + } + + if( base == null || loIndex > hiIndex ) { + loIndex = 0; + hiIndex = bwt.length(); + mismatches++; + } + bounds.add(0,new LowerBound(loIndex,hiIndex,mismatches)); + } + + return bounds; + } + + /** + * Create a string representation of this bound. + * @return String version of this bound. + */ + public String toString() { + return String.format("LowerBound: w = %d, value = %d",width,value); + } +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/package-info.java b/public/java/src/org/broadinstitute/sting/alignment/package-info.java new file mode 100644 index 000000000..60cf1e425 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/package-info.java @@ -0,0 +1,4 @@ +/** + * Analyses used to validate the correctness and performance the BWA Java bindings. + */ +package org.broadinstitute.sting.alignment; \ No newline at end of file diff --git a/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/AMBWriter.java b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/AMBWriter.java new file mode 100644 index 000000000..1d97fec79 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/AMBWriter.java @@ -0,0 +1,68 @@ +package org.broadinstitute.sting.alignment.reference.bwt; + +import net.sf.samtools.SAMSequenceDictionary; +import net.sf.samtools.SAMSequenceRecord; + +import java.io.PrintStream; +import java.io.File; +import java.io.IOException; +import java.io.OutputStream; + +/** + * Writes .amb files - a file indicating where 'holes' (indeterminant bases) + * exist in the contig. Currently, only empty, placeholder AMBs are supported. + * + * @author mhanna + * @version 0.1 + */ +public class AMBWriter { + /** + * Number of holes is fixed at zero. + */ + private static final int NUM_HOLES = 0; + + /** + * Input stream from which to read BWT data. + */ + private final PrintStream out; + + /** + * Create a new ANNWriter targeting the given file. + * @param file file into which ANN data should be written. + * @throws java.io.IOException if there is a problem opening the output file. + */ + public AMBWriter(File file) throws IOException { + out = new PrintStream(file); + } + + /** + * Create a new ANNWriter targeting the given OutputStream. + * @param stream Stream into which ANN data should be written. + */ + public AMBWriter(OutputStream stream) { + out = new PrintStream(stream); + } + + /** + * Write the contents of the given dictionary into the AMB file. + * Assumes that there are no holes in the dictionary. + * @param dictionary Dictionary to write. + */ + public void writeEmpty(SAMSequenceDictionary dictionary) { + long genomeLength = 0L; + for(SAMSequenceRecord sequence: dictionary.getSequences()) + genomeLength += sequence.getSequenceLength(); + + int sequences = dictionary.getSequences().size(); + + // Write the header + out.printf("%d %d %d%n",genomeLength,sequences,NUM_HOLES); + } + + /** + * Close the given output stream. + */ + public void close() { + out.close(); + } +} \ No newline at end of file diff --git a/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/ANNWriter.java b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/ANNWriter.java new file mode 100644 index 000000000..17296c31c --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/ANNWriter.java @@ -0,0 +1,95 @@ +package org.broadinstitute.sting.alignment.reference.bwt; + +import net.sf.samtools.SAMSequenceDictionary; +import net.sf.samtools.SAMSequenceRecord; + +import java.io.PrintStream; +import java.io.File; +import java.io.IOException; +import java.io.OutputStream; + +/** + * Writes .ann files - an alternate sequence dictionary format + * used by BWA/C. For best results, the input sequence dictionary + * should be created with Picard's CreateSequenceDictionary.jar, + * TRUNCATE_NAMES_AT_WHITESPACE=false. + * + * @author mhanna + * @version 0.1 + */ +public class ANNWriter { + /** + * BWA uses a fixed seed of 11, written into every file. + */ + private static final int BNS_SEED = 11; + + /** + * A seemingly unused value that appears in every contig in the ANN. + */ + private static final int GI = 0; + + /** + * Input stream from which to read BWT data. + */ + private final PrintStream out; + + /** + * Create a new ANNWriter targeting the given file. + * @param file file into which ANN data should be written. + * @throws IOException if there is a problem opening the output file. + */ + public ANNWriter(File file) throws IOException { + out = new PrintStream(file); + } + + /** + * Create a new ANNWriter targeting the given OutputStream. + * @param stream Stream into which ANN data should be written. + */ + public ANNWriter(OutputStream stream) { + out = new PrintStream(stream); + } + + /** + * Write the contents of the given dictionary into the ANN file. + * Assumes that no ambs (blocks of indeterminate base) are present in the dictionary. + * @param dictionary Dictionary to write. + */ + public void write(SAMSequenceDictionary dictionary) { + long genomeLength = 0L; + for(SAMSequenceRecord sequence: dictionary.getSequences()) + genomeLength += sequence.getSequenceLength(); + + int sequences = dictionary.getSequences().size(); + + // Write the header + out.printf("%d %d %d%n",genomeLength,sequences,BNS_SEED); + + for(SAMSequenceRecord sequence: dictionary.getSequences()) { + String fullSequenceName = sequence.getSequenceName(); + String trimmedSequenceName = fullSequenceName; + String sequenceComment = "(null)"; + + long offset = 0; + + // Separate the sequence name from the sequence comment, based on BWA's definition. + // BWA's definition appears to accept a zero-length contig name, so mimic that behavior. + if(fullSequenceName.indexOf(' ') >= 0) { + trimmedSequenceName = fullSequenceName.substring(0,fullSequenceName.indexOf(' ')); + sequenceComment = fullSequenceName.substring(fullSequenceName.indexOf(' ')+1); + } + + // Write the sequence GI (?), name, and comment. + out.printf("%d %s %s%n",GI,trimmedSequenceName,sequenceComment); + // Write the sequence offset, length, and ambs (currently fixed at 0). + out.printf("%d %d %d%n",offset,sequence.getSequenceLength(),0); + } + } + + /** + * Close the given output stream. + */ + public void close() { + out.close(); + } +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/BWT.java b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/BWT.java new file mode 100644 index 000000000..7f8c48253 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/BWT.java @@ -0,0 +1,172 @@ +package org.broadinstitute.sting.alignment.reference.bwt; + +import org.broadinstitute.sting.alignment.reference.packing.PackUtils; +import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; + +/** + * Represents the Burrows-Wheeler Transform of a reference sequence. + * + * @author mhanna + * @version 0.1 + */ +public class BWT { + /** + * Write an occurrence table after every SEQUENCE_BLOCK_SIZE bases. + * For this implementation to behave correctly, SEQUENCE_BLOCK_SIZE % 8 == 0 + */ + public static final int SEQUENCE_BLOCK_SIZE = 128; + + /** + * The inverse SA, used as a placeholder for determining where the special EOL character sits. + */ + protected final long inverseSA0; + + /** + * Cumulative counts for the entire BWT. + */ + protected final Counts counts; + + /** + * The individual sequence blocks, modelling how they appear on disk. + */ + protected final SequenceBlock[] sequenceBlocks; + + /** + * Creates a new BWT with the given inverse SA, counts, and sequence (in ASCII). + * @param inverseSA0 Inverse SA entry for the first element. Will be missing from the BWT sequence. + * @param counts Cumulative count of bases, in A,C,G,T order. + * @param sequenceBlocks The full BWT sequence, sans the '$'. + */ + public BWT( long inverseSA0, Counts counts, SequenceBlock[] sequenceBlocks ) { + this.inverseSA0 = inverseSA0; + this.counts = counts; + this.sequenceBlocks = sequenceBlocks; + } + + /** + * Creates a new BWT with the given inverse SA, occurrences, and sequence (in ASCII). + * @param inverseSA0 Inverse SA entry for the first element. Will be missing from the BWT sequence. + * @param counts Count of bases, in A,C,G,T order. + * @param sequence The full BWT sequence, sans the '$'. + */ + public BWT( long inverseSA0, Counts counts, byte[] sequence ) { + this(inverseSA0,counts,generateSequenceBlocks(sequence)); + } + + /** + * Extract the full sequence from the list of block. + * @return The full BWT string as a byte array. + */ + public byte[] getSequence() { + byte[] sequence = new byte[(int)counts.getTotal()]; + for( SequenceBlock block: sequenceBlocks ) + System.arraycopy(block.sequence,0,sequence,block.sequenceStart,block.sequenceLength); + return sequence; + } + + /** + * Get the total counts of bases lexicographically smaller than the given base, for Ferragina and Manzini's search. + * @param base The base. + * @return Total counts for all bases lexicographically smaller than this base. + */ + public long counts(byte base) { + return counts.getCumulative(base); + } + + /** + * Get the total counts of bases lexicographically smaller than the given base, for Ferragina and Manzini's search. + * @param base The base. + * @param index The position to search within the BWT. + * @return Total counts for all bases lexicographically smaller than this base. + */ + public long occurrences(byte base,long index) { + SequenceBlock block = getSequenceBlock(index); + int position = getSequencePosition(index); + long accumulator = block.occurrences.get(base); + for(int i = 0; i <= position; i++) { + if(base == block.sequence[i]) + accumulator++; + } + return accumulator; + } + + /** + * The number of bases in the BWT as a whole. + * @return Number of bases. + */ + public long length() { + return counts.getTotal(); + } + + /** + * Create a new BWT from the given reference sequence. + * @param referenceSequence Sequence from which to derive the BWT. + * @return reference sequence-derived BWT. + */ + public static BWT createFromReferenceSequence(byte[] referenceSequence) { + SuffixArray suffixArray = SuffixArray.createFromReferenceSequence(referenceSequence); + + byte[] bwt = new byte[(int)suffixArray.length()-1]; + int bwtIndex = 0; + for(long suffixArrayIndex = 0; suffixArrayIndex < suffixArray.length(); suffixArrayIndex++) { + if(suffixArray.get(suffixArrayIndex) == 0) + continue; + bwt[bwtIndex++] = referenceSequence[(int)suffixArray.get(suffixArrayIndex)-1]; + } + + return new BWT(suffixArray.inverseSA0,suffixArray.occurrences,bwt); + } + + /** + * Gets the base at a given position in the BWT. + * @param index The index to use. + * @return The base at that location. + */ + protected byte getBase(long index) { + if(index == inverseSA0) + throw new ReviewedStingException(String.format("Base at index %d does not have a text representation",index)); + + SequenceBlock block = getSequenceBlock(index); + int position = getSequencePosition(index); + return block.sequence[position]; + } + + private SequenceBlock getSequenceBlock(long index) { + // If the index is above the SA-1[0], remap it to the appropriate coordinate space. + if(index > inverseSA0) index--; + return sequenceBlocks[(int)(index/SEQUENCE_BLOCK_SIZE)]; + } + + private int getSequencePosition(long index) { + // If the index is above the SA-1[0], remap it to the appropriate coordinate space. + if(index > inverseSA0) index--; + return (int)(index%SEQUENCE_BLOCK_SIZE); + } + + /** + * Create a set of sequence blocks from one long sequence. + * @param sequence Sequence from which to derive blocks. + * @return Array of sequence blocks containing data from the sequence. + */ + private static SequenceBlock[] generateSequenceBlocks( byte[] sequence ) { + Counts occurrences = new Counts(); + + int numSequenceBlocks = PackUtils.numberOfPartitions(sequence.length,SEQUENCE_BLOCK_SIZE); + SequenceBlock[] sequenceBlocks = new SequenceBlock[numSequenceBlocks]; + + for( int block = 0; block < numSequenceBlocks; block++ ) { + int blockStart = block*SEQUENCE_BLOCK_SIZE; + int blockLength = Math.min(SEQUENCE_BLOCK_SIZE, sequence.length-blockStart); + byte[] subsequence = new byte[blockLength]; + + System.arraycopy(sequence,blockStart,subsequence,0,blockLength); + + sequenceBlocks[block] = new SequenceBlock(blockStart,blockLength,occurrences.clone(),subsequence); + + for( byte base: subsequence ) + occurrences.increment(base); + } + + return sequenceBlocks; + } +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/BWTReader.java b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/BWTReader.java new file mode 100644 index 000000000..64a595419 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/BWTReader.java @@ -0,0 +1,86 @@ +package org.broadinstitute.sting.alignment.reference.bwt; + +import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; +import org.broadinstitute.sting.alignment.reference.packing.UnsignedIntPackedInputStream; +import org.broadinstitute.sting.alignment.reference.packing.BasePackedInputStream; +import org.broadinstitute.sting.alignment.reference.packing.PackUtils; + +import java.io.*; +import java.nio.ByteOrder; +/** + * Reads a BWT from a given file. + * + * @author mhanna + * @version 0.1 + */ +public class BWTReader { + /** + * Input stream from which to read BWT data. + */ + private FileInputStream inputStream; + + /** + * Create a new BWT reader. + * @param inputFile File in which the BWT is stored. + */ + public BWTReader( File inputFile ) { + try { + this.inputStream = new FileInputStream(inputFile); + } + catch( FileNotFoundException ex ) { + throw new ReviewedStingException("Unable to open input file", ex); + } + } + + /** + * Read a BWT from the input stream. + * @return The BWT stored in the input stream. + */ + public BWT read() { + UnsignedIntPackedInputStream uintPackedInputStream = new UnsignedIntPackedInputStream(inputStream, ByteOrder.LITTLE_ENDIAN); + BasePackedInputStream basePackedInputStream = new BasePackedInputStream(Integer.class, inputStream, ByteOrder.LITTLE_ENDIAN); + + long inverseSA0; + long[] count; + SequenceBlock[] sequenceBlocks; + + try { + inverseSA0 = uintPackedInputStream.read(); + count = new long[PackUtils.ALPHABET_SIZE]; + uintPackedInputStream.read(count); + + long bwtSize = count[PackUtils.ALPHABET_SIZE-1]; + sequenceBlocks = new SequenceBlock[PackUtils.numberOfPartitions(bwtSize,BWT.SEQUENCE_BLOCK_SIZE)]; + + for( int block = 0; block < sequenceBlocks.length; block++ ) { + int sequenceStart = block* BWT.SEQUENCE_BLOCK_SIZE; + int sequenceLength = (int)Math.min(BWT.SEQUENCE_BLOCK_SIZE,bwtSize-sequenceStart); + + long[] occurrences = new long[PackUtils.ALPHABET_SIZE]; + byte[] bwt = new byte[sequenceLength]; + + uintPackedInputStream.read(occurrences); + basePackedInputStream.read(bwt); + + sequenceBlocks[block] = new SequenceBlock(sequenceStart,sequenceLength,new Counts(occurrences,false),bwt); + } + } + catch( IOException ex ) { + throw new ReviewedStingException("Unable to read BWT from input stream.", ex); + } + + return new BWT(inverseSA0, new Counts(count,true), sequenceBlocks); + } + + /** + * Close the input stream. + */ + public void close() { + try { + inputStream.close(); + } + catch( IOException ex ) { + throw new ReviewedStingException("Unable to close input file", ex); + } + } +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/BWTSupplementaryFileGenerator.java b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/BWTSupplementaryFileGenerator.java new file mode 100644 index 000000000..f24baf766 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/BWTSupplementaryFileGenerator.java @@ -0,0 +1,60 @@ +package org.broadinstitute.sting.alignment.reference.bwt; + +import net.sf.picard.reference.ReferenceSequenceFileFactory; +import net.sf.picard.reference.ReferenceSequenceFile; +import net.sf.samtools.SAMSequenceDictionary; + +import java.io.File; +import java.io.IOException; + +/** + * Generate BWA supplementary files (.ann, .amb) from the command line. + * + * @author mhanna + * @version 0.1 + */ +public class BWTSupplementaryFileGenerator { + enum SupplementaryFileType { ANN, AMB } + + public static void main(String[] args) throws IOException { + if(args.length < 3) + usage("Incorrect number of arguments supplied"); + + File fastaFile = new File(args[0]); + File outputFile = new File(args[1]); + SupplementaryFileType outputType = null; + try { + outputType = Enum.valueOf(SupplementaryFileType.class,args[2]); + } + catch(IllegalArgumentException ex) { + usage("Invalid output type: " + args[2]); + } + + ReferenceSequenceFile sequenceFile = ReferenceSequenceFileFactory.getReferenceSequenceFile(fastaFile); + SAMSequenceDictionary dictionary = sequenceFile.getSequenceDictionary(); + + switch(outputType) { + case ANN: + ANNWriter annWriter = new ANNWriter(outputFile); + annWriter.write(dictionary); + annWriter.close(); + break; + case AMB: + AMBWriter ambWriter = new AMBWriter(outputFile); + ambWriter.writeEmpty(dictionary); + ambWriter.close(); + break; + default: + usage("Unsupported output type: " + outputType); + } + } + + /** + * Print usage information and exit. + */ + private static void usage(String message) { + System.err.println(message); + System.err.println("Usage: BWTSupplementaryFileGenerator "); + System.exit(1); + } +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/BWTWriter.java b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/BWTWriter.java new file mode 100644 index 000000000..b3867ebfe --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/BWTWriter.java @@ -0,0 +1,71 @@ +package org.broadinstitute.sting.alignment.reference.bwt; + +import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; +import org.broadinstitute.sting.alignment.reference.packing.UnsignedIntPackedOutputStream; +import org.broadinstitute.sting.alignment.reference.packing.BasePackedOutputStream; + +import java.io.*; +import java.nio.ByteOrder; + +/** + * Writes an in-memory BWT to an outputstream. + * + * @author mhanna + * @version 0.1 + */ +public class BWTWriter { + /** + * Input stream from which to read BWT data. + */ + private final OutputStream outputStream; + + /** + * Create a new BWT writer. + * @param outputFile File in which the BWT is stored. + */ + public BWTWriter( File outputFile ) { + try { + this.outputStream = new BufferedOutputStream(new FileOutputStream(outputFile)); + } + catch( FileNotFoundException ex ) { + throw new ReviewedStingException("Unable to open output file", ex); + } + } + + /** + * Write a BWT to the output stream. + * @param bwt Transform to be written to the output stream. + */ + public void write( BWT bwt ) { + UnsignedIntPackedOutputStream intPackedOutputStream = new UnsignedIntPackedOutputStream(outputStream, ByteOrder.LITTLE_ENDIAN); + BasePackedOutputStream basePackedOutputStream = new BasePackedOutputStream(Integer.class, outputStream, ByteOrder.LITTLE_ENDIAN); + + try { + intPackedOutputStream.write(bwt.inverseSA0); + intPackedOutputStream.write(bwt.counts.toArray(true)); + + for( SequenceBlock block: bwt.sequenceBlocks ) { + intPackedOutputStream.write(block.occurrences.toArray(false)); + basePackedOutputStream.write(block.sequence); + } + + // The last block is the last set of counts in the structure. + intPackedOutputStream.write(bwt.counts.toArray(false)); + } + catch( IOException ex ) { + throw new ReviewedStingException("Unable to read BWT from input stream.", ex); + } + } + + /** + * Close the input stream. + */ + public void close() { + try { + outputStream.close(); + } + catch( IOException ex ) { + throw new ReviewedStingException("Unable to close input file", ex); + } + } +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/Bases.java b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/Bases.java new file mode 100644 index 000000000..bc0a5b63d --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/Bases.java @@ -0,0 +1,108 @@ +package org.broadinstitute.sting.alignment.reference.bwt; + +import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; + +import java.util.*; + +/** + * Enhanced enum representation of a base. + * + * @author mhanna + * @version 0.1 + */ +public class Bases implements Iterable +{ + public static byte A = 'A'; + public static byte C = 'C'; + public static byte G = 'G'; + public static byte T = 'T'; + + public static final Bases instance = new Bases(); + + private static final List allBases; + + /** + * Representation of the base broken down by packed value. + */ + private static final Map basesByPack = new HashMap(); + + static { + List bases = new ArrayList(); + bases.add(A); + bases.add(C); + bases.add(G); + bases.add(T); + allBases = Collections.unmodifiableList(bases); + + for(int i = 0; i < allBases.size(); i++) + basesByPack.put(i,allBases.get(i)); + } + + /** + * Create a new base with the given ascii representation and + * pack value. + */ + private Bases() { + } + + /** + * Return all possible bases. + * @return Byte representation of all bases. + */ + public static Collection allOf() { + return allBases; + } + + /** + * Gets the number of known bases. + * @return The number of known bases. + */ + public static int size() { + return allBases.size(); + } + + /** + * Gets an iterator over the total number of known base types. + * @return Iterator over all known bases. + */ + public Iterator iterator() { + return basesByPack.values().iterator(); + } + + /** + * Get the given base from the packed representation. + * @param pack Packed representation. + * @return base. + */ + public static byte fromPack( int pack ) { return basesByPack.get(pack); } + + /** + * Convert the given base to its packed value. + * @param ascii ASCII representation of the base. + * @return Packed value. + */ + public static int toPack( byte ascii ) + { + for( Map.Entry entry: basesByPack.entrySet() ) { + if( entry.getValue().equals(ascii) ) + return entry.getKey(); + } + throw new ReviewedStingException(String.format("Base %c is an invalid base to pack", (char)ascii)); + } + + /** + * Convert the ASCII representation of a base to its 'normalized' representation. + * @param base The base itself. + * @return The byte, if present. Null if unknown. + */ + public static Byte fromASCII( byte base ) { + Byte found = null; + for( Byte normalized: allBases ) { + if( normalized.equals(base) ) { + found = normalized; + break; + } + } + return found; + } +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/Counts.java b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/Counts.java new file mode 100644 index 000000000..268b11ac4 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/Counts.java @@ -0,0 +1,151 @@ +package org.broadinstitute.sting.alignment.reference.bwt; + +import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; + +import java.util.HashMap; +import java.util.Map; + +/** + * Counts of how many bases of each type have been seen. + * + * @author mhanna + * @version 0.1 + */ +public class Counts implements Cloneable { + /** + * Internal representation of counts, broken down by ASCII value. + */ + private Map counts = new HashMap(); + + /** + * Internal representation of cumulative counts, broken down by ASCII value. + */ + private Map cumulativeCounts = new HashMap(); + + /** + * Create an empty Counts object with values A=0,C=0,G=0,T=0. + */ + public Counts() + { + for(byte base: Bases.instance) { + counts.put(base,0L); + cumulativeCounts.put(base,0L); + } + } + + /** + * Create a counts data structure with the given initial values. + * @param data Count data, broken down by base. + * @param cumulative Whether the counts are cumulative, (count_G=numA+numC+numG,for example). + */ + public Counts( long[] data, boolean cumulative ) { + if(cumulative) { + long priorCount = 0; + for(byte base: Bases.instance) { + long count = data[Bases.toPack(base)]; + counts.put(base,count-priorCount); + cumulativeCounts.put(base,priorCount); + priorCount = count; + } + } + else { + long priorCount = 0; + for(byte base: Bases.instance) { + long count = data[Bases.toPack(base)]; + counts.put(base,count); + cumulativeCounts.put(base,priorCount); + priorCount += count; + } + } + } + + /** + * Convert to an array for persistence. + * @param cumulative Use a cumulative representation. + * @return Array of count values. + */ + public long[] toArray(boolean cumulative) { + long[] countArray = new long[counts.size()]; + if(cumulative) { + int index = 0; + boolean first = true; + for(byte base: Bases.instance) { + if(first) { + first = false; + continue; + } + countArray[index++] = getCumulative(base); + } + countArray[countArray.length-1] = getTotal(); + } + else { + int index = 0; + for(byte base: Bases.instance) + countArray[index++] = counts.get(base); + } + return countArray; + } + + /** + * Create a unique copy of the current object. + * @return A duplicate of this object. + */ + public Counts clone() { + Counts other; + try { + other = (Counts)super.clone(); + } + catch(CloneNotSupportedException ex) { + throw new ReviewedStingException("Unable to clone counts object", ex); + } + other.counts = new HashMap(counts); + other.cumulativeCounts = new HashMap(cumulativeCounts); + return other; + } + + /** + * Increment the number of bases seen at the given location. + * @param base Base to increment. + */ + public void increment(byte base) { + counts.put(base,counts.get(base)+1); + boolean increment = false; + for(byte cumulative: Bases.instance) { + if(increment) cumulativeCounts.put(cumulative,cumulativeCounts.get(cumulative)+1); + increment |= (cumulative == base); + } + } + + /** + * Gets a count of the number of bases seen at a given location. + * Note that counts in this case are not cumulative (counts for A,C,G,T + * are independent). + * @param base Base for which to query counts. + * @return Number of bases of this type seen. + */ + public long get(byte base) { + return counts.get(base); + } + + /** + * Gets a count of the number of bases seen before this base. + * Note that counts in this case are cumulative. + * @param base Base for which to query counts. + * @return Number of bases of this type seen. + */ + public long getCumulative(byte base) { + return cumulativeCounts.get(base); + } + + /** + * How many total bases are represented by this count structure? + * @return Total bases represented. + */ + public long getTotal() { + int accumulator = 0; + for(byte base: Bases.instance) { + accumulator += get(base); + } + return accumulator; + } +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/CreateBWTFromReference.java b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/CreateBWTFromReference.java new file mode 100755 index 000000000..92bb713f0 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/CreateBWTFromReference.java @@ -0,0 +1,200 @@ +/* + * Copyright (c) 2009 The Broad Institute + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITHoc THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +package org.broadinstitute.sting.alignment.reference.bwt; + +import net.sf.picard.reference.ReferenceSequenceFile; +import net.sf.picard.reference.ReferenceSequenceFileFactory; +import net.sf.picard.reference.ReferenceSequence; + +import java.io.*; + +import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; +import org.broadinstitute.sting.alignment.reference.packing.PackUtils; + +/** + * Create a suffix array data structure. + * + * @author mhanna + * @version 0.1 + */ +public class CreateBWTFromReference { + private byte[] loadReference( File inputFile ) { + // Read in the first sequence in the input file + ReferenceSequenceFile reference = ReferenceSequenceFileFactory.getReferenceSequenceFile(inputFile); + ReferenceSequence sequence = reference.nextSequence(); + return sequence.getBases(); + } + + private byte[] loadReverseReference( File inputFile ) { + ReferenceSequenceFile reference = ReferenceSequenceFileFactory.getReferenceSequenceFile(inputFile); + ReferenceSequence sequence = reference.nextSequence(); + PackUtils.reverse(sequence.getBases()); + return sequence.getBases(); + } + + private Counts countOccurrences( byte[] sequence ) { + Counts occurrences = new Counts(); + for( byte base: sequence ) + occurrences.increment(base); + return occurrences; + } + + private long[] createSuffixArray( byte[] sequence ) { + return SuffixArray.createFromReferenceSequence(sequence).sequence; + } + + private long[] invertSuffixArray( long[] suffixArray ) { + long[] inverseSuffixArray = new long[suffixArray.length]; + for( int i = 0; i < suffixArray.length; i++ ) + inverseSuffixArray[(int)suffixArray[i]] = i; + return inverseSuffixArray; + } + + private long[] createCompressedSuffixArray( int[] suffixArray, int[] inverseSuffixArray ) { + long[] compressedSuffixArray = new long[suffixArray.length]; + compressedSuffixArray[0] = inverseSuffixArray[0]; + for( int i = 1; i < suffixArray.length; i++ ) + compressedSuffixArray[i] = inverseSuffixArray[suffixArray[i]+1]; + return compressedSuffixArray; + } + + private long[] createInversedCompressedSuffixArray( int[] compressedSuffixArray ) { + long[] inverseCompressedSuffixArray = new long[compressedSuffixArray.length]; + for( int i = 0; i < compressedSuffixArray.length; i++ ) + inverseCompressedSuffixArray[compressedSuffixArray[i]] = i; + return inverseCompressedSuffixArray; + } + + public static void main( String argv[] ) throws IOException { + if( argv.length != 5 ) { + System.out.println("USAGE: CreateBWTFromReference .fasta "); + return; + } + + String inputFileName = argv[0]; + File inputFile = new File(inputFileName); + + String bwtFileName = argv[1]; + File bwtFile = new File(bwtFileName); + + String rbwtFileName = argv[2]; + File rbwtFile = new File(rbwtFileName); + + String saFileName = argv[3]; + File saFile = new File(saFileName); + + String rsaFileName = argv[4]; + File rsaFile = new File(rsaFileName); + + CreateBWTFromReference creator = new CreateBWTFromReference(); + + byte[] sequence = creator.loadReference(inputFile); + byte[] reverseSequence = creator.loadReverseReference(inputFile); + + // Count the occurences of each given base. + Counts occurrences = creator.countOccurrences(sequence); + System.out.printf("Occurrences: a=%d, c=%d, g=%d, t=%d%n",occurrences.getCumulative(Bases.A), + occurrences.getCumulative(Bases.C), + occurrences.getCumulative(Bases.G), + occurrences.getCumulative(Bases.T)); + + // Generate the suffix array and print diagnostics. + long[] suffixArrayData = creator.createSuffixArray(sequence); + long[] reverseSuffixArrayData = creator.createSuffixArray(reverseSequence); + + // Invert the suffix array and print diagnostics. + long[] inverseSuffixArray = creator.invertSuffixArray(suffixArrayData); + long[] reverseInverseSuffixArray = creator.invertSuffixArray(reverseSuffixArrayData); + + SuffixArray suffixArray = new SuffixArray( inverseSuffixArray[0], occurrences, suffixArrayData ); + SuffixArray reverseSuffixArray = new SuffixArray( reverseInverseSuffixArray[0], occurrences, reverseSuffixArrayData ); + + /* + // Create the data structure for the compressed suffix array and print diagnostics. + int[] compressedSuffixArray = creator.createCompressedSuffixArray(suffixArray.sequence,inverseSuffixArray); + int reconstructedInverseSA = compressedSuffixArray[0]; + for( int i = 0; i < 8; i++ ) { + System.out.printf("compressedSuffixArray[%d] = %d (SA-1[%d] = %d)%n", i, compressedSuffixArray[i], i, reconstructedInverseSA); + reconstructedInverseSA = compressedSuffixArray[reconstructedInverseSA]; + } + + // Create the data structure for the inverse compressed suffix array and print diagnostics. + int[] inverseCompressedSuffixArray = creator.createInversedCompressedSuffixArray(compressedSuffixArray); + for( int i = 0; i < 8; i++ ) { + System.out.printf("inverseCompressedSuffixArray[%d] = %d%n", i, inverseCompressedSuffixArray[i]); + } + */ + + // Create the BWT. + BWT bwt = BWT.createFromReferenceSequence(sequence); + BWT reverseBWT = BWT.createFromReferenceSequence(reverseSequence); + + byte[] bwtSequence = bwt.getSequence(); + System.out.printf("BWT: %s... (length = %d)%n", new String(bwtSequence,0,80),bwt.length()); + + BWTWriter bwtWriter = new BWTWriter(bwtFile); + bwtWriter.write(bwt); + bwtWriter.close(); + + BWTWriter reverseBWTWriter = new BWTWriter(rbwtFile); + reverseBWTWriter.write(reverseBWT); + reverseBWTWriter.close(); + + /* + SuffixArrayWriter saWriter = new SuffixArrayWriter(saFile); + saWriter.write(suffixArray); + saWriter.close(); + + SuffixArrayWriter reverseSAWriter = new SuffixArrayWriter(rsaFile); + reverseSAWriter.write(reverseSuffixArray); + reverseSAWriter.close(); + */ + + File existingBWTFile = new File(inputFileName+".bwt"); + BWTReader existingBWTReader = new BWTReader(existingBWTFile); + BWT existingBWT = existingBWTReader.read(); + + byte[] existingBWTSequence = existingBWT.getSequence(); + System.out.printf("Existing BWT: %s... (length = %d)%n",new String(existingBWTSequence,0,80),existingBWT.length()); + + for( int i = 0; i < bwt.length(); i++ ) { + if( bwtSequence[i] != existingBWTSequence[i] ) + throw new ReviewedStingException("BWT mismatch at " + i); + } + + File existingSAFile = new File(inputFileName+".sa"); + SuffixArrayReader existingSuffixArrayReader = new SuffixArrayReader(existingSAFile,existingBWT); + SuffixArray existingSuffixArray = existingSuffixArrayReader.read(); + + for(int i = 0; i < suffixArray.length(); i++) { + if( i % 10000 == 0 ) + System.out.printf("Validating suffix array entry %d%n", i); + if( suffixArray.get(i) != existingSuffixArray.get(i) ) + throw new ReviewedStingException(String.format("Suffix array mismatch at %d; SA is %d; should be %d",i,existingSuffixArray.get(i),suffixArray.get(i))); + } + } + +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/SequenceBlock.java b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/SequenceBlock.java new file mode 100644 index 000000000..13714de1e --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/SequenceBlock.java @@ -0,0 +1,41 @@ +package org.broadinstitute.sting.alignment.reference.bwt; + +/** + * Models a block of bases within the BWT. + */ +public class SequenceBlock { + /** + * Start position of this sequence within the BWT. + */ + public final int sequenceStart; + + /** + * Length of this sequence within the BWT. + */ + public final int sequenceLength; + + + /** + * Occurrences of each letter up to this sequence block. + */ + public final Counts occurrences; + + /** + * Sequence for this segment. + */ + public final byte[] sequence; + + /** + * Create a new block within this BWT. + * @param sequenceStart Starting position of this sequence within the BWT. + * @param sequenceLength Length of this sequence. + * @param occurrences How many of each base has been seen before this sequence began. + * @param sequence The actual sequence from the BWT. + */ + public SequenceBlock( int sequenceStart, int sequenceLength, Counts occurrences, byte[] sequence ) { + this.sequenceStart = sequenceStart; + this.sequenceLength = sequenceLength; + this.occurrences = occurrences; + this.sequence = sequence; + } +} \ No newline at end of file diff --git a/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/SuffixArray.java b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/SuffixArray.java new file mode 100644 index 000000000..dba3633d1 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/SuffixArray.java @@ -0,0 +1,159 @@ +package org.broadinstitute.sting.alignment.reference.bwt; + +import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; + +import java.util.Comparator; +import java.util.TreeSet; + +import net.sf.samtools.util.StringUtil; + +/** + * An in-memory representation of a suffix array. + * + * @author mhanna + * @version 0.1 + */ +public class SuffixArray { + public final long inverseSA0; + public final Counts occurrences; + + /** + * The elements of the sequence actually stored in memory. + */ + protected final long[] sequence; + + /** + * How often are individual elements in the sequence actually stored + * in memory, as opposed to being calculated on the fly? + */ + protected final int sequenceInterval; + + /** + * The BWT used to calculate missing portions of the sequence. + */ + protected final BWT bwt; + + public SuffixArray(long inverseSA0, Counts occurrences, long[] sequence) { + this(inverseSA0,occurrences,sequence,1,null); + } + + /** + * Creates a new sequence array with the given inverse SA, occurrences, and values. + * @param inverseSA0 Inverse SA entry for the first element. + * @param occurrences Cumulative number of occurrences of A,C,G,T, in order. + * @param sequence The full suffix array. + * @param sequenceInterval How frequently is the sequence interval stored. + * @param bwt bwt used to infer the remaining entries in the BWT. + */ + public SuffixArray(long inverseSA0, Counts occurrences, long[] sequence, int sequenceInterval, BWT bwt) { + this.inverseSA0 = inverseSA0; + this.occurrences = occurrences; + this.sequence = sequence; + this.sequenceInterval = sequenceInterval; + this.bwt = bwt; + + if(sequenceInterval != 1 && bwt == null) + throw new ReviewedStingException("A BWT must be provided if the sequence interval is not 1"); + } + + /** + * Retrieves the length of the sequence array. + * @return Length of the suffix array. + */ + public long length() { + if( bwt != null ) + return bwt.length()+1; + else + return sequence.length; + } + + /** + * Get the suffix array value at a given sequence. + * @param index Index at which to retrieve the suffix array vaule. + * @return The suffix array value at that entry. + */ + public long get(long index) { + int iterations = 0; + while(index%sequenceInterval != 0) { + // The inverseSA0 ('$') doesn't have a usable ASCII representation; it must be treated as a special case. + if(index == inverseSA0) + index = 0; + else { + byte base = bwt.getBase(index); + index = bwt.counts(base) + bwt.occurrences(base,index); + } + iterations++; + } + return (sequence[(int)(index/sequenceInterval)]+iterations) % length(); + } + + /** + * Create a suffix array from a given reference sequence. + * @param sequence The reference sequence to use when building the suffix array. + * @return a constructed suffix array. + */ + public static SuffixArray createFromReferenceSequence(byte[] sequence) { + // The builder for the suffix array. Use an integer in this case because + // Java arrays can only hold an integer. + TreeSet suffixArrayBuilder = new TreeSet(new SuffixArrayComparator(sequence)); + + Counts occurrences = new Counts(); + for( byte base: sequence ) + occurrences.increment(base); + + // Build out the suffix array using a custom comparator. + for( int i = 0; i <= sequence.length; i++ ) + suffixArrayBuilder.add(i); + + // Copy the suffix array into an array. + long[] suffixArray = new long[suffixArrayBuilder.size()]; + int i = 0; + for( Integer element: suffixArrayBuilder ) + suffixArray[i++] = element; + + // Find the first element in the inverse suffix array. + long inverseSA0 = -1; + for(i = 0; i < suffixArray.length; i++) { + if(suffixArray[i] == 0) + inverseSA0 = i; + } + if(inverseSA0 < 0) + throw new ReviewedStingException("Unable to find first inverse SA entry in generated suffix array."); + + return new SuffixArray(inverseSA0,occurrences,suffixArray); + } + + /** + * Compares two suffix arrays of the given sequence. Will return whichever string appears + * first in lexicographic order. + */ + private static class SuffixArrayComparator implements Comparator { + /** + * The data source for all suffix arrays. + */ + private final String sequence; + + /** + * Create a new comparator. + * @param sequence Reference sequence to use as basis for comparison. + */ + public SuffixArrayComparator( byte[] sequence ) { + // Processing the suffix array tends to be easier as a string. + this.sequence = StringUtil.bytesToString(sequence); + } + + /** + * Compare the two given suffix arrays. Criteria for comparison is the lexicographic order of + * the two substrings sequence[lhs:], sequence[rhs:]. + * @param lhs Left-hand side of comparison. + * @param rhs Right-hand side of comparison. + * @return How the suffix arrays represented by lhs, rhs compare. + */ + public int compare( Integer lhs, Integer rhs ) { + String lhsSuffixArray = sequence.substring(lhs); + String rhsSuffixArray = sequence.substring(rhs); + return lhsSuffixArray.compareTo(rhsSuffixArray); + } + } + +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/SuffixArrayReader.java b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/SuffixArrayReader.java new file mode 100644 index 000000000..c10984145 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/SuffixArrayReader.java @@ -0,0 +1,82 @@ +package org.broadinstitute.sting.alignment.reference.bwt; + +import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; +import org.broadinstitute.sting.alignment.reference.packing.UnsignedIntPackedInputStream; +import org.broadinstitute.sting.alignment.reference.packing.PackUtils; + +import java.io.*; +import java.nio.ByteOrder; + +/** + * A reader for suffix arrays in permanent storage. + * + * @author mhanna + * @version 0.1 + */ +public class SuffixArrayReader { + /** + * Input stream from which to read suffix array data. + */ + private FileInputStream inputStream; + + /** + * BWT to use to fill in missing data. + */ + private BWT bwt; + + /** + * Create a new suffix array reader. + * @param inputFile File in which the suffix array is stored. + * @param bwt BWT to use when filling in missing data. + */ + public SuffixArrayReader(File inputFile, BWT bwt) { + try { + this.inputStream = new FileInputStream(inputFile); + this.bwt = bwt; + } + catch( FileNotFoundException ex ) { + throw new ReviewedStingException("Unable to open input file", ex); + } + } + + /** + * Read a suffix array from the input stream. + * @return The suffix array stored in the input stream. + */ + public SuffixArray read() { + UnsignedIntPackedInputStream uintPackedInputStream = new UnsignedIntPackedInputStream(inputStream, ByteOrder.LITTLE_ENDIAN); + + long inverseSA0; + long[] occurrences; + long[] suffixArray; + int suffixArrayInterval; + + try { + inverseSA0 = uintPackedInputStream.read(); + occurrences = new long[PackUtils.ALPHABET_SIZE]; + uintPackedInputStream.read(occurrences); + // Throw away the suffix array size in bytes and use the occurrences table directly. + suffixArrayInterval = (int)uintPackedInputStream.read(); + suffixArray = new long[(int)((occurrences[occurrences.length-1]+suffixArrayInterval-1)/suffixArrayInterval)]; + uintPackedInputStream.read(suffixArray); + } + catch( IOException ex ) { + throw new ReviewedStingException("Unable to read BWT from input stream.", ex); + } + + return new SuffixArray(inverseSA0, new Counts(occurrences,true), suffixArray, suffixArrayInterval, bwt); + } + + + /** + * Close the input stream. + */ + public void close() { + try { + inputStream.close(); + } + catch( IOException ex ) { + throw new ReviewedStingException("Unable to close input file", ex); + } + } +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/SuffixArrayWriter.java b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/SuffixArrayWriter.java new file mode 100644 index 000000000..972fc2a15 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/reference/bwt/SuffixArrayWriter.java @@ -0,0 +1,67 @@ +package org.broadinstitute.sting.alignment.reference.bwt; + +import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; +import org.broadinstitute.sting.alignment.reference.packing.UnsignedIntPackedOutputStream; + +import java.io.*; +import java.nio.ByteOrder; + +/** + * Javadoc goes here. + * + * @author mhanna + * @version 0.1 + */ +public class SuffixArrayWriter { + /** + * Input stream from which to read suffix array data. + */ + private OutputStream outputStream; + + /** + * Create a new suffix array reader. + * @param outputFile File in which the suffix array is stored. + */ + public SuffixArrayWriter( File outputFile ) { + try { + this.outputStream = new BufferedOutputStream(new FileOutputStream(outputFile)); + } + catch( FileNotFoundException ex ) { + throw new ReviewedStingException("Unable to open input file", ex); + } + } + + /** + * Write a suffix array to the output stream. + * @param suffixArray suffix array to write. + */ + public void write(SuffixArray suffixArray) { + UnsignedIntPackedOutputStream uintPackedOutputStream = new UnsignedIntPackedOutputStream(outputStream, ByteOrder.LITTLE_ENDIAN); + + try { + uintPackedOutputStream.write(suffixArray.inverseSA0); + uintPackedOutputStream.write(suffixArray.occurrences.toArray(true)); + // How frequently the suffix array entry is placed. + uintPackedOutputStream.write(1); + // Length of the suffix array. + uintPackedOutputStream.write(suffixArray.length()-1); + uintPackedOutputStream.write(suffixArray.sequence,1,suffixArray.sequence.length-1); + } + catch( IOException ex ) { + throw new ReviewedStingException("Unable to read BWT from input stream.", ex); + } + } + + + /** + * Close the input stream. + */ + public void close() { + try { + outputStream.close(); + } + catch( IOException ex ) { + throw new ReviewedStingException("Unable to close input file", ex); + } + } +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/reference/packing/BasePackedInputStream.java b/public/java/src/org/broadinstitute/sting/alignment/reference/packing/BasePackedInputStream.java new file mode 100644 index 000000000..6681e37ec --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/reference/packing/BasePackedInputStream.java @@ -0,0 +1,92 @@ +package org.broadinstitute.sting.alignment.reference.packing; + +import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; + +import java.io.*; +import java.nio.ByteOrder; +import java.nio.ByteBuffer; +import java.nio.channels.FileChannel; + +/** + * Reads a packed version of the input stream. + * + * @author mhanna + * @version 0.1 + */ +public class BasePackedInputStream { + /** + * Type of object to unpack. + */ + private final Class type; + + /** + * Ultimate source for packed bases. + */ + private final FileInputStream targetInputStream; + + /** + * Channel source for packed bases. + */ + private final FileChannel targetInputChannel; + + /** + * A fixed-size buffer for word-packed data. + */ + private final ByteOrder byteOrder; + + /** + * How many bases are in a given packed word. + */ + private final int basesPerPackedWord = PackUtils.bitsInType(Integer.class)/PackUtils.BITS_PER_BASE; + + /** + * How many bytes in an integer? + */ + private final int bytesPerInteger = PackUtils.bitsInType(Integer.class)/PackUtils.BITS_PER_BYTE; + + + public BasePackedInputStream( Class type, File inputFile, ByteOrder byteOrder ) throws FileNotFoundException { + this(type,new FileInputStream(inputFile),byteOrder); + } + + public BasePackedInputStream( Class type, FileInputStream inputStream, ByteOrder byteOrder ) { + if( type != Integer.class ) + throw new ReviewedStingException("Only bases packed into 32-bit words are currently supported by this input stream. Type specified: " + type.getName()); + this.type = type; + this.targetInputStream = inputStream; + this.targetInputChannel = inputStream.getChannel(); + this.byteOrder = byteOrder; + } + + /** + * Read the entire contents of the input stream. + * @param bwt array into which bases should be read. + * @throws IOException if an I/O error occurs. + */ + public void read(byte[] bwt) throws IOException { + read(bwt,0,bwt.length); + } + + /** + * Read the next length bases into the bwt array, starting at the given offset. + * @param bwt array holding the given data. + * @param offset target position in the bases array into which bytes should be written. + * @param length number of bases to read from the stream. + * @throws IOException if an I/O error occurs. + */ + public void read(byte[] bwt, int offset, int length) throws IOException { + int bufferWidth = ((bwt.length+basesPerPackedWord-1)/basesPerPackedWord)*bytesPerInteger; + ByteBuffer buffer = ByteBuffer.allocate(bufferWidth).order(byteOrder); + targetInputChannel.read(buffer); + targetInputChannel.position(targetInputChannel.position()+buffer.remaining()); + buffer.flip(); + + int packedWord = 0; + int i = 0; + while(i < length) { + if(i % basesPerPackedWord == 0) packedWord = buffer.getInt(); + int position = basesPerPackedWord - i%basesPerPackedWord - 1; + bwt[offset+i++] = PackUtils.unpackBase((byte)((packedWord >> position*PackUtils.BITS_PER_BASE) & 0x3)); + } + } +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/reference/packing/BasePackedOutputStream.java b/public/java/src/org/broadinstitute/sting/alignment/reference/packing/BasePackedOutputStream.java new file mode 100644 index 000000000..c62f40e51 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/reference/packing/BasePackedOutputStream.java @@ -0,0 +1,140 @@ +package org.broadinstitute.sting.alignment.reference.packing; + +import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; + +import java.io.*; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; + +/** + * A general-purpose stream for writing packed bases. + * + * @author mhanna + * @version 0.1 + */ +public class BasePackedOutputStream { + /** + * Type of object to pack. + */ + private final Class type; + + /** + * How many bases can be stored in the given data structure? + */ + private final int basesPerType; + + /** + * Ultimate target for the packed bases. + */ + private final OutputStream targetOutputStream; + + /** + * A fixed-size buffer for word-packed data. + */ + private final ByteBuffer buffer; + + public BasePackedOutputStream( Class type, File outputFile, ByteOrder byteOrder ) throws FileNotFoundException { + this(type,new BufferedOutputStream(new FileOutputStream(outputFile)),byteOrder); + } + + /** + * Write packed bases to the given output stream. + * @param type Type of data to pack bases into. + * @param outputStream Output stream to which to write packed bases. + * @param byteOrder Switch between big endian / little endian when reading / writing files. + */ + public BasePackedOutputStream( Class type, OutputStream outputStream, ByteOrder byteOrder) { + this.targetOutputStream = outputStream; + this.type = type; + basesPerType = PackUtils.bitsInType(type)/PackUtils.BITS_PER_BASE; + this.buffer = ByteBuffer.allocate(basesPerType/PackUtils.ALPHABET_SIZE).order(byteOrder); + } + + /** + * Writes the given base to the output stream. Will write only this base; no packing will be performed. + * @param base List of bases to write. + * @throws IOException if an I/O error occurs. + */ + public void write( int base ) throws IOException { + write( new byte[] { (byte)base } ); + } + + /** + * Writes an array of bases to the target output stream. + * @param bases List of bases to write. + * @throws IOException if an I/O error occurs. + */ + public void write( byte[] bases ) throws IOException { + write(bases,0,bases.length); + } + + /** + * Writes a subset of the array of bases to the output stream. + * @param bases List of bases to write. + * @param offset site at which to start writing. + * @param length number of bases to write. + * @throws IOException if an I/O error occurs. + */ + public void write( byte[] bases, int offset, int length ) throws IOException { + int packedBases = 0; + int positionInPack = 0; + + for( int base = offset; base < offset+length; base++ ) { + packedBases = packBase(bases[base], packedBases, positionInPack); + + // Increment the packed counter. If all possible bases have been squeezed into this byte, write it out. + positionInPack = ++positionInPack % basesPerType; + if( positionInPack == 0 ) { + writePackedBases(packedBases); + packedBases = 0; + } + } + + if( positionInPack > 0 ) + writePackedBases(packedBases); + } + + /** + * Flush the contents of the OutputStream to disk. + * @throws IOException if an I/O error occurs. + */ + public void flush() throws IOException { + targetOutputStream.flush(); + } + + /** + * Closes the given output stream. + * @throws IOException if an I/O error occurs. + */ + public void close() throws IOException { + targetOutputStream.close(); + } + + /** + * Pack the given base into the basepack. + * @param base The base to pack. + * @param basePack Target for the pack operation. + * @param position Position within the pack to which to add the base. + * @return The packed integer. + */ + private int packBase( byte base, int basePack, int position ) { + basePack |= (PackUtils.packBase(base) << 2*(basesPerType-position-1)); + return basePack; + } + + /** + * Write the given packed base structure to the output file. + * @param packedBases Packed bases to write. + * @throws IOException on error writing to the file. + */ + private void writePackedBases(int packedBases) throws IOException { + buffer.rewind(); + if( type == Integer.class ) + buffer.putInt(packedBases); + else if( type == Byte.class ) + buffer.put((byte)packedBases); + else + throw new ReviewedStingException("Cannot pack bases into type " + type.getName()); + targetOutputStream.write(buffer.array()); + } +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/reference/packing/CreatePACFromReference.java b/public/java/src/org/broadinstitute/sting/alignment/reference/packing/CreatePACFromReference.java new file mode 100755 index 000000000..8211c97d8 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/reference/packing/CreatePACFromReference.java @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2009 The Broad Institute + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +package org.broadinstitute.sting.alignment.reference.packing; + +import net.sf.picard.reference.ReferenceSequenceFile; +import net.sf.picard.reference.ReferenceSequenceFileFactory; +import net.sf.picard.reference.ReferenceSequence; + +import java.io.*; +import java.nio.ByteOrder; + +/** + * Generate a .PAC file from a given reference. + * + * @author hanna + * @version 0.1 + */ + +public class CreatePACFromReference { + public static void main( String argv[] ) throws IOException { + if( argv.length != 3 ) { + System.out.println("USAGE: CreatePACFromReference .fasta "); + return; + } + + // Read in the first sequence in the input file + String inputFileName = argv[0]; + File inputFile = new File(inputFileName); + ReferenceSequenceFile reference = ReferenceSequenceFileFactory.getReferenceSequenceFile(inputFile); + ReferenceSequence sequence = reference.nextSequence(); + + // Target file for output + PackUtils.writeReferenceSequence( new File(argv[1]), sequence.getBases() ); + + // Reverse the bases in the reference + PackUtils.reverse(sequence.getBases()); + + // Target file for output + PackUtils.writeReferenceSequence( new File(argv[2]), sequence.getBases() ); + } +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/reference/packing/PackUtils.java b/public/java/src/org/broadinstitute/sting/alignment/reference/packing/PackUtils.java new file mode 100644 index 000000000..beed21b49 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/reference/packing/PackUtils.java @@ -0,0 +1,135 @@ +package org.broadinstitute.sting.alignment.reference.packing; + +import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; + +import java.io.File; +import java.io.IOException; +import java.io.OutputStream; +import java.io.FileOutputStream; +import java.nio.ByteOrder; + +/** + * Utilities designed for packing / unpacking bases. + * + * @author mhanna + * @version 0.1 + */ +public class PackUtils { + /** + * How many possible bases can be encoded? + */ + public static final int ALPHABET_SIZE = 4; + + /** + * How many bits does it take to store a single base? + */ + public static final int BITS_PER_BASE = (int)(Math.log(ALPHABET_SIZE)/Math.log(2)); + + /** + * How many bits fit into a single byte? + */ + public static final int BITS_PER_BYTE = 8; + + /** + * Writes a reference sequence to a PAC file. + * @param outputFile Filename for the PAC file. + * @param referenceSequence Reference sequence to write. + * @throws IOException If there's a problem writing to the output file. + */ + public static void writeReferenceSequence( File outputFile, byte[] referenceSequence ) throws IOException { + OutputStream outputStream = new FileOutputStream(outputFile); + + BasePackedOutputStream basePackedOutputStream = new BasePackedOutputStream(Byte.class, outputStream, ByteOrder.BIG_ENDIAN); + basePackedOutputStream.write(referenceSequence); + + outputStream.write(referenceSequence.length%PackUtils.ALPHABET_SIZE); + + outputStream.close(); + } + + + /** + * How many bits can a given type hold? + * @param type Type to test. + * @return Number of bits that the given type can hold. + */ + public static int bitsInType( Class type ) { + try { + long typeSize = type.getField("MAX_VALUE").getLong(null) - type.getField("MIN_VALUE").getLong(null)+1; + long intTypeSize = (long)Integer.MAX_VALUE - (long)Integer.MIN_VALUE + 1; + if( typeSize > intTypeSize ) + throw new ReviewedStingException("Cannot determine number of bits available in type: " + type.getName()); + return (int)(Math.log(typeSize)/Math.log(2)); + } + catch( NoSuchFieldException ex ) { + throw new ReviewedStingException("Cannot determine number of bits available in type: " + type.getName(),ex); + } + catch( IllegalAccessException ex ) { + throw new ReviewedStingException("Cannot determine number of bits available in type: " + type.getName(),ex); + } + } + + /** + * Gets the two-bit representation of a base. A=00b, C=01b, G=10b, T=11b. + * @param base ASCII value for the base to pack. + * @return A byte from 0-3 indicating the base's packed value. + */ + public static byte packBase(byte base) { + switch( base ) { + case 'A': + return 0; + case 'C': + return 1; + case 'G': + return 2; + case 'T': + return 3; + default: + throw new ReviewedStingException("Unknown base type: " + base); + } + } + + /** + * Converts a two-bit representation of a base into an ASCII representation of a base. + * @param pack Byte from 0-3 indicating which base is represented. + * @return An ASCII value representing the packed base. + */ + public static byte unpackBase(byte pack) { + switch( pack ) { + case 0: + return 'A'; + case 1: + return 'C'; + case 2: + return 'G'; + case 3: + return 'T'; + default: + throw new ReviewedStingException("Unknown pack type: " + pack); + } + } + + /** + * Reverses an unpacked sequence of bases. + * @param bases bases to reverse. + */ + public static void reverse( byte[] bases ) { + for( int i = 0, j = bases.length-1; i < j; i++, j-- ) { + byte temp = bases[j]; + bases[j] = bases[i]; + bases[i] = temp; + } + } + + /** + * Given a structure of size size that should be split + * into partitionSize partitions, how many partitions should + * be created? Size of last partition will be <= partitionSize. + * @param size Total size of the data structure. + * @param partitionSize Size of an individual partition. + * @return Number of partitions that would be created. + */ + public static int numberOfPartitions( long size, long partitionSize ) { + return (int)((size+partitionSize-1) / partitionSize); + } +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/reference/packing/UnsignedIntPackedInputStream.java b/public/java/src/org/broadinstitute/sting/alignment/reference/packing/UnsignedIntPackedInputStream.java new file mode 100644 index 000000000..c07766ee1 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/reference/packing/UnsignedIntPackedInputStream.java @@ -0,0 +1,102 @@ +package org.broadinstitute.sting.alignment.reference.packing; + +import java.io.*; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.channels.FileChannel; + +/** + * Read a set of integers packed into + * + * @author mhanna + * @version 0.1 + */ +public class UnsignedIntPackedInputStream { + /** + * Ultimate target for the occurrence array. + */ + private final FileInputStream targetInputStream; + + /** + * Target channel from which to pull file data. + */ + private final FileChannel targetInputChannel; + + /** + * The byte order in which integer input data appears. + */ + private final ByteOrder byteOrder; + + /** + * How many bytes are required to store an integer? + */ + private final int bytesPerInteger = PackUtils.bitsInType(Integer.class)/PackUtils.BITS_PER_BYTE; + + /** + * Create a new PackedIntInputStream, writing to the given target file. + * @param inputFile target input file. + * @param byteOrder Endianness to use when writing a list of integers. + * @throws java.io.IOException if an I/O error occurs. + */ + public UnsignedIntPackedInputStream(File inputFile, ByteOrder byteOrder) throws IOException { + this(new FileInputStream(inputFile),byteOrder); + } + + /** + * Read ints from the given InputStream. + * @param inputStream Input stream from which to read ints. + * @param byteOrder Endianness to use when writing a list of integers. + */ + public UnsignedIntPackedInputStream(FileInputStream inputStream, ByteOrder byteOrder) { + this.targetInputStream = inputStream; + this.targetInputChannel = inputStream.getChannel(); + this.byteOrder = byteOrder; + } + + /** + * Read a datum from the input stream. + * @return The next input datum in the stream. + * @throws IOException if an I/O error occurs. + */ + public long read() throws IOException { + long[] data = new long[1]; + read(data); + return data[0]; + } + + /** + * Read the data from the input stream. + * @param data placeholder for input data. + * @throws IOException if an I/O error occurs. + */ + public void read( long[] data ) throws IOException { + read( data, 0, data.length ); + } + + /** + * Read the data from the input stream, starting at the given offset. + * @param data placeholder for input data. + * @param offset place in the array to start reading in data. + * @param length number of ints to read in. + * @throws IOException if an I/O error occurs. + */ + public void read( long[] data, int offset, int length ) throws IOException { + ByteBuffer readBuffer = ByteBuffer.allocate(bytesPerInteger*length).order(byteOrder); + + targetInputChannel.read(readBuffer,targetInputChannel.position()); + readBuffer.flip(); + targetInputChannel.position(targetInputChannel.position()+readBuffer.remaining()); + + int i = 0; + while(i < length) + data[offset+i++] = readBuffer.getInt() & 0xFFFFFFFFL; + } + + /** + * Closes the given output stream. + * @throws IOException if an I/O error occurs. + */ + public void close() throws IOException { + targetInputStream.close(); + } +} diff --git a/public/java/src/org/broadinstitute/sting/alignment/reference/packing/UnsignedIntPackedOutputStream.java b/public/java/src/org/broadinstitute/sting/alignment/reference/packing/UnsignedIntPackedOutputStream.java new file mode 100755 index 000000000..9d7853695 --- /dev/null +++ b/public/java/src/org/broadinstitute/sting/alignment/reference/packing/UnsignedIntPackedOutputStream.java @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2009 The Broad Institute + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +package org.broadinstitute.sting.alignment.reference.packing; + +import java.io.*; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; + +/** + * Writes an list of integers to the output file. + * + * @author mhanna + * @version 0.1 + */ +public class UnsignedIntPackedOutputStream { + /** + * Ultimate target for the occurrence array. + */ + private final OutputStream targetOutputStream; + + /** + * A fixed-size buffer for int-packed data. + */ + private final ByteBuffer buffer; + + /** + * Create a new PackedIntOutputStream, writing to the given target file. + * @param outputFile target output file. + * @param byteOrder Endianness to use when writing a list of integers. + * @throws IOException if an I/O error occurs. + */ + public UnsignedIntPackedOutputStream(File outputFile, ByteOrder byteOrder) throws IOException { + this(new FileOutputStream(outputFile),byteOrder); + } + + /** + * Write packed ints to the given OutputStream. + * @param outputStream Output stream to which to write packed ints. + * @param byteOrder Endianness to use when writing a list of integers. + */ + public UnsignedIntPackedOutputStream(OutputStream outputStream, ByteOrder byteOrder) { + this.targetOutputStream = outputStream; + buffer = ByteBuffer.allocate(PackUtils.bitsInType(Integer.class)/PackUtils.BITS_PER_BYTE).order(byteOrder); + } + + /** + * Write the data to the output stream. + * @param datum datum to write. + * @throws IOException if an I/O error occurs. + */ + public void write( long datum ) throws IOException { + buffer.rewind(); + buffer.putInt((int)datum); + targetOutputStream.write(buffer.array()); + } + + /** + * Write the data to the output stream. + * @param data data to write. occurrences.length must match alphabet size. + * @throws IOException if an I/O error occurs. + */ + public void write( long[] data ) throws IOException { + for(long datum: data) + write(datum); + } + + /** + * Write the given chunk of data to the input stream. + * @param data data to write. + * @param offset position at which to start. + * @param length number of ints to write. + * @throws IOException if an I/O error occurs. + */ + public void write( long[] data, int offset, int length ) throws IOException { + for( int i = offset; i < offset+length; i++ ) + write(data[i]); + } + + /** + * Flush the contents of the OutputStream to disk. + * @throws IOException if an I/O error occurs. + */ + public void flush() throws IOException { + targetOutputStream.flush(); + } + + /** + * Closes the given output stream. + * @throws IOException if an I/O error occurs. + */ + public void close() throws IOException { + targetOutputStream.close(); + } + +} diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/sequenom/CreateSequenomMask.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/sequenom/CreateSequenomMask.java deleted file mode 100755 index c1c17bda5..000000000 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/sequenom/CreateSequenomMask.java +++ /dev/null @@ -1,50 +0,0 @@ -package org.broadinstitute.sting.gatk.walkers.sequenom; - -import org.broadinstitute.sting.utils.variantcontext.VariantContext; -import org.broadinstitute.sting.gatk.contexts.AlignmentContext; -import org.broadinstitute.sting.gatk.contexts.ReferenceContext; -import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; -import org.broadinstitute.sting.gatk.walkers.RodWalker; -import org.broadinstitute.sting.commandline.Output; -import org.broadinstitute.sting.utils.GenomeLoc; - -import java.io.PrintStream; - -/** - * Create a mask for use with the PickSequenomProbes walker. - */ -public class CreateSequenomMask extends RodWalker { - @Output - PrintStream out; - - public void initialize() {} - - public Integer map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { - if ( tracker == null ) - return 0; - - int result = 0; - for ( VariantContext vc : tracker.getAllVariantContexts(ref) ) { - if ( vc.isSNP() ) { - GenomeLoc loc = context.getLocation(); - out.println(loc.getContig() + "\t" + (loc.getStart()-1) + "\t" + loc.getStop()); - result = 1; - break; - } - } - - return result; - } - - public Integer reduceInit() { - return 0; - } - - public Integer reduce(Integer value, Integer sum) { - return value + sum; - } - - public void onTraversalDone(Integer sum) { - logger.info("Found " + sum + " masking sites."); - } -} \ No newline at end of file diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/sequenom/PickSequenomProbes.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/sequenom/PickSequenomProbes.java deleted file mode 100755 index fde233b5d..000000000 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/sequenom/PickSequenomProbes.java +++ /dev/null @@ -1,334 +0,0 @@ -/* - * Copyright (c) 2010 The Broad Institute - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -package org.broadinstitute.sting.gatk.walkers.sequenom; - -import net.sf.samtools.util.CloseableIterator; -import org.broad.tribble.bed.BEDCodec; -import org.broad.tribble.dbsnp.DbSNPCodec; -import org.broadinstitute.sting.utils.variantcontext.Allele; -import org.broadinstitute.sting.utils.variantcontext.VariantContext; -import org.broadinstitute.sting.gatk.contexts.AlignmentContext; -import org.broadinstitute.sting.gatk.contexts.ReferenceContext; -import org.broadinstitute.sting.gatk.refdata.*; -import org.broadinstitute.sting.gatk.refdata.tracks.RMDTrack; -import org.broadinstitute.sting.gatk.refdata.tracks.builders.RMDTrackBuilder; -import org.broadinstitute.sting.gatk.refdata.utils.GATKFeature; -import org.broadinstitute.sting.gatk.refdata.utils.LocationAwareSeekableRODIterator; -import org.broadinstitute.sting.gatk.refdata.utils.RODRecordList; -import org.broadinstitute.sting.gatk.refdata.utils.helpers.DbSNPHelper; -import org.broadinstitute.sting.gatk.walkers.*; -import org.broadinstitute.sting.utils.GenomeLoc; -import org.broadinstitute.sting.utils.GenomeLocParser; -import org.broadinstitute.sting.commandline.Argument; -import org.broadinstitute.sting.commandline.Output; - -import java.io.File; -import java.util.*; -import java.io.PrintStream; - - -/** - * Generates Sequenom probe information given a single variant track. Emitted is the variant - * along with the 200 reference bases on each side of the variant. - */ -@WalkerName("PickSequenomProbes") -@Requires(value={DataSource.REFERENCE}) -@Reference(window=@Window(start=-200,stop=200)) -public class PickSequenomProbes extends RodWalker { - @Output - PrintStream out; - - @Argument(required=false, shortName="snp_mask", doc="positions to be masked with N's") - protected String SNP_MASK = null; - @Argument(required=false, shortName="project_id",doc="If specified, all probenames will be prepended with 'project_id|'") - String project_id = null; - @Argument(required = false, shortName="omitWindow", doc = "If specified, the window appender will be omitted from the design files (e.g. \"_chr:start-stop\")") - boolean omitWindow = false; - @Argument(required = false, fullName="usePlinkRODNamingConvention", shortName="nameConvention",doc="Use the naming convention defined in PLINKROD") - boolean useNamingConvention = false; - @Argument(required = false, fullName="noMaskWindow",shortName="nmw",doc="Do not mask bases within X bases of an event when designing probes") - int noMaskWindow = 0; - @Argument(required = false, shortName="counter", doc = "If specified, unique count id (ordinal number) is added to the end of each assay name") - boolean addCounter = false; - - private byte [] maskFlags = new byte[401]; - - private LocationAwareSeekableRODIterator snpMaskIterator=null; - - private GenomeLoc positionOfLastVariant = null; - - private int cnt = 0; - private int discarded = 0; - - VariantCollection VCs ; // will keep a set of distinct variants at a given site - private List processedVariantsInScope = new LinkedList(); - - public void initialize() { - if ( SNP_MASK != null ) { - logger.info("Loading SNP mask... "); - ReferenceOrderedData snp_mask; - //if ( SNP_MASK.contains(DbSNPHelper.STANDARD_DBSNP_TRACK_NAME)) { - RMDTrackBuilder builder = new RMDTrackBuilder(getToolkit().getReferenceDataSource().getReference().getSequenceDictionary(),getToolkit().getGenomeLocParser(),getToolkit().getArguments().unsafe); - RMDTrack track = builder.createInstanceOfTrack(BEDCodec.class, new File(SNP_MASK)); - snpMaskIterator = new SeekableRODIterator(track.getHeader(), - track.getSequenceDictionary(), - getToolkit().getReferenceDataSource().getReference().getSequenceDictionary(), - getToolkit().getGenomeLocParser(), - track.getIterator()); - //} else { - // // TODO: fix me when Plink is back - // throw new IllegalArgumentException("We currently do not support other snp_mask tracks (like Plink)"); - //} - - } - VCs = new VariantCollection(); - } - - - public String map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { - if ( tracker == null ) - return ""; - - logger.debug("Probing " + ref.getLocus() + " " + ref.getWindow()); - - VCs.clear(); - VCs.addAll( tracker.getAllVariantContexts(ref), ref.getLocus() ); - - discarded += VCs.discarded(); - - if ( VCs.size() == 0 ) { - logger.debug(" Context empty"); - return ""; - } - - if ( VCs.size() > 1 ) { - logger.debug(" "+VCs.size()+ " variants at the locus"); - } - -// System.out.print("At locus "+ref.getLocus()+": "); -// for ( VariantContext vc : VCs ) { -// System.out.println(vc.toString()); -// } - - // little optimization: since we may have few events at the current site on the reference, - // we are going to make sure we compute the mask and ref bases only once for each location and only if we need to - boolean haveMaskForWindow = false; - boolean haveBasesForWindow = false; - String leading_bases = null; - String trailing_bases = null; - - StringBuilder assaysForLocus = new StringBuilder(""); // all assays for current locus will be collected here (will be multi-line if multiple events are assayed) - - // get all variant contexts!!!! - for ( VariantContext vc : VCs ) { - - // we can only deal with biallelic sites for now - if ( !vc.isBiallelic() ) { - logger.debug(" Not biallelic; skipped"); - continue; - } - - // we don't want to see the same multi-base event (deletion, DNP etc) multiple times. - // All the vcs we are currently seeing are clearly on the same contig as the current reference - // poisiton (or we would not see them at all!). All we need to check is if the vc starts at the - // current reference position (i.e. it is the first time we see it) or not (i.e. we saw it already). - if ( ref.getLocus().getStart() != vc.getStart() ) - continue; - - if ( ! haveMaskForWindow ) { - String contig = context.getLocation().getContig(); - int offset = context.getLocation().getStart(); - int true_offset = offset - 200; - - // we have variant; let's load all the snps falling into the current window and prepare the mask array. - // we need to do it only once per window, regardless of how many vcs we may have at this location! - if ( snpMaskIterator != null ) { - // clear the mask - for ( int i = 0 ; i < 401; i++ ) - maskFlags[i] = 0; - - RODRecordList snpList = snpMaskIterator.seekForward(getToolkit().getGenomeLocParser().createGenomeLoc(contig,offset-200,offset+200)); - if ( snpList != null && snpList.size() != 0 ) { - Iterator snpsInWindow = snpList.iterator(); - int i = 0; - while ( snpsInWindow.hasNext() ) { - GenomeLoc snp = snpsInWindow.next().getLocation(); - // we don't really want to mask out multi-base indels - if ( snp.size() > 1 ) - continue; - logger.debug(" SNP at "+snp.getStart()); - int offsetInWindow = (int)(snp.getStart() - true_offset); - maskFlags[offsetInWindow] = 1; - } - } - } - haveMaskForWindow = true; // if we use masking, we will probably need to recompute the window... - } - - if ( ! haveBasesForWindow ) { - byte[] context_bases = ref.getBases(); - for (int i = 0; i < 401; i++) { - if ( maskFlags[i] == 1 && ( i < 200 - noMaskWindow || i > 200 + getNoMaskWindowRightEnd(vc,noMaskWindow) ) ) { - context_bases[i] = 'N'; - } - } - leading_bases = new String(Arrays.copyOfRange(context_bases, 0, 200)); - trailing_bases = new String(Arrays.copyOfRange(context_bases, 201, 401)); - // masked bases are not gonna change for the current window, unless we use windowed masking; - // in the latter case the bases (N's) will depend on the event we are currently looking at, - // so we better recompute.. - if ( noMaskWindow == 0 ) haveBasesForWindow = true; - } - - - // below, build single assay line for the current VC: - - String assay_sequence; - if ( vc.isSNP() ) - assay_sequence = leading_bases + "[" + (char)ref.getBase() + "/" + vc.getAlternateAllele(0).toString() + "]" + trailing_bases; - else if ( vc.isMNP() ) - assay_sequence = leading_bases + "[" + new String(vc.getReference().getBases()) + "/" + new String(vc.getAlternateAllele(0).getBases())+"]"+trailing_bases.substring(vc.getReference().length()-1); - else if ( vc.isInsertion() ) - assay_sequence = leading_bases + (char)ref.getBase() + "[-/" + vc.getAlternateAllele(0).toString() + "]" + trailing_bases; - else if ( vc.isDeletion() ) - assay_sequence = leading_bases + (char)ref.getBase() + "[" + new String(vc.getReference().getBases()) + "/-]" + trailing_bases.substring(vc.getReference().length()); - else - continue; - - StringBuilder assay_id = new StringBuilder(); - if ( project_id != null ) { - assay_id.append(project_id); - assay_id.append('|'); - } - if ( useNamingConvention ) { - assay_id.append('c'); - assay_id.append(context.getLocation().toString().replace(":","_p")); - } else { - assay_id.append(context.getLocation().toString().replace(':','_')); - } - if ( vc.isInsertion() ) assay_id.append("_gI"); - else if ( vc.isDeletion()) assay_id.append("_gD"); - - if ( ! omitWindow ) { - assay_id.append("_"); - assay_id.append(ref.getWindow().toString().replace(':', '_')); - } - ++cnt; - if ( addCounter ) assay_id.append("_"+cnt); - - assaysForLocus.append(assay_id); - assaysForLocus.append('\t'); - assaysForLocus.append(assay_sequence); - assaysForLocus.append('\n'); - } - return assaysForLocus.toString(); - } - - public String reduceInit() { - return ""; - } - - public String reduce(String data, String sum) { - out.print(data); - return ""; - } - - private int getNoMaskWindowRightEnd(VariantContext vc, int window) { - if ( window == 0 ) { - return 0; - } - - if ( vc.isInsertion() ) { - return window-1; - } - - int max = 0; - for (Allele a : vc.getAlleles() ) { - if ( vc.isInsertion() ) { - logger.debug("Getting length of allele "+a.toString()+" it is "+a.getBases().length+" (ref allele is "+vc.getReference().toString()+")"); - } - if ( a.getBases().length > max ) { - max = a.getBases().length; - } - } - return max+window-1; - } - - public void onTraversalDone(String sum) { - logger.info(cnt+" assay seqences generated"); - logger.info(discarded+" events were found to be duplicates and discarded (no redundant assays generated)"); - } - - static class EventComparator implements Comparator { - - public int compare(VariantContext o1, VariantContext o2) { - // if variants start at different positions, they are different. All we actually - // care about is detecting the variants that are strictly the same; the actual ordering of distinct variants - // (which one we deem less and which one greater) is utterly unimportant. We just need to be consistent. - if ( o1.getStart() < o2.getStart() ) return -1; - if ( o1.getStart() > o2.getStart() ) return 1; - - if ( o1.getType() != o2.getType() ) return o1.getType().compareTo(o2.getType()); - - int refComp = o1.getReference().compareTo(o2.getReference()); - if ( refComp != 0 ) return refComp; - - return o1.getAlternateAllele(0).compareTo(o2.getAlternateAllele(0)); - - } - } - - static class VariantCollection implements Iterable { - TreeSet variants = new TreeSet(new EventComparator()); - int discarded = 0; - - public void add(VariantContext vc, GenomeLoc current) { - if ( vc.getStart() != current.getStart() ) return; // we add only variants that start at current locus - // note that we do not check chr here, since the way this class is used, the mathod is always called with - // VCs coming from the same metadata tracker, so they simply can not be on different chrs! - if ( !vc.isBiallelic() ) { - logger.info(" Non-biallelic variant encountered; skipped"); - return; - } - if ( variants.add(vc) == false ) discarded++; - } - - public void addAll(Collection c, GenomeLoc current) { - for ( VariantContext vc : c ) add(vc,current); - } - - public void clear() { - variants.clear(); - discarded = 0; - } - - public int discarded() { return discarded; } - - public int size() { return variants.size(); } - - public Iterator iterator() { return variants.iterator(); } - } -} diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/validation/ValidationAmplicons.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/validation/ValidationAmplicons.java index 3a5213868..466c1aee3 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/validation/ValidationAmplicons.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/validation/ValidationAmplicons.java @@ -34,7 +34,7 @@ import java.util.List; */ @Requires(value={DataSource.REFERENCE}, referenceMetaData={@RMD(name="ProbeIntervals",type=TableFeature.class), @RMD(name="ValidateAlleles",type=VariantContext.class),@RMD(name="MaskAlleles",type=VariantContext.class)}) -public class PickSequenomProbes2 extends RodWalker { +public class ValidationAmplicons extends RodWalker { @Argument(doc="Lower case SNPs rather than replacing with 'N'",fullName="lowerCaseSNPs",required=false) boolean lowerCaseSNPs = false; @@ -45,6 +45,9 @@ public class PickSequenomProbes2 extends RodWalker { @Argument(doc="Monomorphic sites in the mask file will be treated as filtered",fullName="filterMonomorphic",required=false) boolean filterMonomorphic = false; + @Argument(doc="Do not use BWA, lower-case repeats only",fullName="doNotUseBWA",required=false) + boolean doNotUseBWA = false; + GenomeLoc prevInterval; GenomeLoc allelePos; String probeName; @@ -67,16 +70,18 @@ public class PickSequenomProbes2 extends RodWalker { private SAMFileHeader header = null; public void initialize() { - if(targetReferenceFile == null) - targetReferenceFile = getToolkit().getArguments().referenceFile; - BWTFiles bwtFiles = new BWTFiles(targetReferenceFile.getAbsolutePath()); - BWAConfiguration configuration = new BWAConfiguration(); - aligner = new BWACAligner(bwtFiles,configuration); - header = new SAMFileHeader(); - SAMSequenceDictionary referenceDictionary = - ReferenceSequenceFileFactory.getReferenceSequenceFile(targetReferenceFile).getSequenceDictionary(); - header.setSequenceDictionary(referenceDictionary); - header.setSortOrder(SAMFileHeader.SortOrder.unsorted); + if ( ! doNotUseBWA ) { + if(targetReferenceFile == null) + targetReferenceFile = getToolkit().getArguments().referenceFile; + BWTFiles bwtFiles = new BWTFiles(targetReferenceFile.getAbsolutePath()); + BWAConfiguration configuration = new BWAConfiguration(); + aligner = new BWACAligner(bwtFiles,configuration); + header = new SAMFileHeader(); + SAMSequenceDictionary referenceDictionary = + ReferenceSequenceFileFactory.getReferenceSequenceFile(targetReferenceFile).getSequenceDictionary(); + header.setSequenceDictionary(referenceDictionary); + header.setSortOrder(SAMFileHeader.SortOrder.unsorted); + } } public Integer reduceInit() { @@ -106,8 +111,11 @@ public class PickSequenomProbes2 extends RodWalker { // there was a previous interval validateSequence(); // ensure the sequence in the region is valid // next line removed in favor of the one after - //lowerRepeats(); // change repeats in sequence to lower case - lowerNonUniqueSegments(); + if ( doNotUseBWA ) { + lowerRepeats(); // change repeats in sequence to lower case + } else { + lowerNonUniqueSegments(); + } print(); // print out the fasta sequence } @@ -218,7 +226,11 @@ public class PickSequenomProbes2 extends RodWalker { public void onTraversalDone(Integer fin ) { validateSequence(); - lowerNonUniqueSegments(); + if ( doNotUseBWA ) { + lowerRepeats(); + } else { + lowerNonUniqueSegments(); + } print(); } diff --git a/public/java/test/org/broadinstitute/sting/alignment/AlignerIntegrationTest.java b/public/java/test/org/broadinstitute/sting/alignment/AlignerIntegrationTest.java new file mode 100644 index 000000000..dafaf3ffe --- /dev/null +++ b/public/java/test/org/broadinstitute/sting/alignment/AlignerIntegrationTest.java @@ -0,0 +1,27 @@ +package org.broadinstitute.sting.alignment; + +import org.testng.annotations.Test; +import org.broadinstitute.sting.WalkerTest; + +import java.util.Arrays; + +/** + * Integration tests for the aligner. + * + * @author mhanna + * @version 0.1 + */ +public class AlignerIntegrationTest extends WalkerTest { + @Test + public void testBasicAlignment() { + String md5 = "34eb4323742999d6d250a0aaa803c6d5"; + WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( + "-R " + GATKDataLocation + "bwa/human_b36_both.fasta" + + " -T Align" + + " -I " + validationDataLocation + "NA12878_Pilot1_20.trimmed.unmapped.bam" + + " -o %s", + 1, // just one output file + Arrays.asList(md5)); + executeTest("testBasicAlignment", spec); + } +} diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/sequenom/PickSequenomProbesIntegrationTest.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/sequenom/PickSequenomProbesIntegrationTest.java deleted file mode 100755 index 850a3113e..000000000 --- a/public/java/test/org/broadinstitute/sting/gatk/walkers/sequenom/PickSequenomProbesIntegrationTest.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.broadinstitute.sting.gatk.walkers.sequenom; - -import org.broadinstitute.sting.WalkerTest; -import org.testng.annotations.Test; - -import java.util.Arrays; - -public class PickSequenomProbesIntegrationTest extends WalkerTest { - @Test - public void testProbes() { - String testVCF = validationDataLocation + "complexExample.vcf4"; - String testArgs = "-R " + b36KGReference + " -T PickSequenomProbes -L 1:10,000,000-11,000,000 -B:input,VCF "+testVCF+" -o %s"; - WalkerTestSpec spec = new WalkerTestSpec(testArgs, 1, - Arrays.asList("6b5409cc78960f1be855536ed89ea9dd")); - executeTest("Test probes", spec); - } - - @Test - public void testProbesUsingDbSNPMask() { - - String md5 = "46d53491af1d3aa0ee1f1e13d68b732d"; - String testVCF = validationDataLocation + "pickSeqIntegrationTest.vcf"; - - String testArgs = "-snp_mask " + validationDataLocation + "pickSeqIntegrationTest.bed -R " - + b36KGReference + " -omitWindow -nameConvention " - + "-project_id 1kgp3_s4_lf -T PickSequenomProbes -B:input,VCF "+testVCF+" -o %s"; - WalkerTestSpec spec1 = new WalkerTestSpec(testArgs, 1, Arrays.asList(md5)); - executeTest("Test probes", spec1); - - testArgs += " -nmw 1"; - WalkerTestSpec spec2 = new WalkerTestSpec(testArgs, 1, Arrays.asList(md5)); - executeTest("Test probes", spec2); - } -} diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/validation/ValidationAmpliconsIntegrationTest.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/validation/ValidationAmpliconsIntegrationTest.java new file mode 100755 index 000000000..6528f5795 --- /dev/null +++ b/public/java/test/org/broadinstitute/sting/gatk/walkers/validation/ValidationAmpliconsIntegrationTest.java @@ -0,0 +1,56 @@ +package org.broadinstitute.sting.gatk.walkers.validation; + +import org.broadinstitute.sting.WalkerTest; +import org.testng.annotations.Test; + +import java.util.Arrays; + +/** + * Created by IntelliJ IDEA. + * User: Ghost + * Date: 7/19/11 + * Time: 7:39 PM + * To change this template use File | Settings | File Templates. + */ +public class ValidationAmpliconsIntegrationTest extends WalkerTest { + + @Test + public void testWikiExample() { + String siteVCF = validationDataLocation + "sites_to_validate.vcf"; + String maskVCF = validationDataLocation + "amplicon_mask_sites.vcf"; + String intervalTable = validationDataLocation + "amplicon_interval_table1.table"; + String testArgs = "-R " + b37KGReference + " -T ValidationAmplicons -B:ValidateAlleles,VCF "+siteVCF+" -o %s"; + testArgs += " -B:ProbeIntervals,table "+intervalTable+" -BTI ProbeIntervals -B:MaskAlleles,VCF "+maskVCF; + testArgs += " --virtualPrimerSize 30"; + WalkerTestSpec spec = new WalkerTestSpec(testArgs, 1, + Arrays.asList("27f9450afa132888a8994167f0035fd7")); + executeTest("Test probes", spec); + } + + @Test + public void testWikiExampleNoBWA() { + String siteVCF = validationDataLocation + "sites_to_validate.vcf"; + String maskVCF = validationDataLocation + "amplicon_mask_sites.vcf"; + String intervalTable = validationDataLocation + "amplicon_interval_table1.table"; + String testArgs = "-R " + b37KGReference + " -T ValidationAmplicons -B:ValidateAlleles,VCF "+siteVCF+" -o %s"; + testArgs += " -B:ProbeIntervals,table "+intervalTable+" -BTI ProbeIntervals -B:MaskAlleles,VCF "+maskVCF; + testArgs += " --virtualPrimerSize 30 --doNotUseBWA"; + WalkerTestSpec spec = new WalkerTestSpec(testArgs, 1, + Arrays.asList("f2611ff1d9cd5bedaad003251fed8bc1")); + executeTest("Test probes", spec); + } + + @Test + public void testWikiExampleMonoFilter() { + String siteVCF = validationDataLocation + "sites_to_validate.vcf"; + String maskVCF = validationDataLocation + "amplicon_mask_sites.vcf"; + String intervalTable = validationDataLocation + "amplicon_interval_table1.table"; + String testArgs = "-R " + b37KGReference + " -T ValidationAmplicons -B:ValidateAlleles,VCF "+siteVCF+" -o %s"; + testArgs += " -B:ProbeIntervals,table "+intervalTable+" -BTI ProbeIntervals -B:MaskAlleles,VCF "+maskVCF; + testArgs += " --virtualPrimerSize 30 --filterMonomorphic"; + WalkerTestSpec spec = new WalkerTestSpec(testArgs, 1, + Arrays.asList("77b3f30e38fedad812125bdf6cf3255f")); + executeTest("Test probes", spec); + } + +} From fb2d475c2285c10fd6a66aff1dc0d6c1dd6c1b90 Mon Sep 17 00:00:00 2001 From: Guillermo del Angel Date: Tue, 19 Jul 2011 20:13:56 -0400 Subject: [PATCH 37/41] Bug fix to prevent null pointer --- .../sting/gatk/walkers/PrintReadsWalker.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java index 57ea5166a..78b6e7c04 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java @@ -59,7 +59,7 @@ public class PrintReadsWalker extends ReadWalker { @Argument(fullName = "number", shortName = "n", doc="Print the first n reads from the file, discarding the rest", required = false) int nReadsToPrint = -1; @Argument(fullName="sample_file", shortName="sf", doc="File containing a list of samples (one per line). Can be specified multiple times", required=false) - public Set sampleFiles; + public Set sampleFile; @Argument(fullName="sample_name", shortName="sn", doc="Sample name to be included in the analysis. Can be specified multiple times.", required=false) public Set sampleNames; @@ -73,10 +73,13 @@ public class PrintReadsWalker extends ReadWalker { if ( platform != null ) platform = platform.toUpperCase(); - Collection samplesFromFile = SampleUtils.getSamplesFromFiles(sampleFiles); - samplesToChoose.addAll(samplesFromFile); + Collection samplesFromFile; + if (!sampleFile.isEmpty()) { + samplesFromFile = SampleUtils.getSamplesFromFiles(sampleFile); + samplesToChoose.addAll(samplesFromFile); + } - if (sampleNames != null) + if (!sampleNames.isEmpty()) samplesToChoose.addAll(sampleNames); if(samplesToChoose.isEmpty()) { From e8409c80fa9c771dd79c515cdb8273e2d7645b07 Mon Sep 17 00:00:00 2001 From: Guillermo del Angel Date: Tue, 19 Jul 2011 21:59:24 -0400 Subject: [PATCH 38/41] Further protection vs null pointers in PrintReadsWalker --- .../broadinstitute/sting/gatk/walkers/PrintReadsWalker.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java index 78b6e7c04..b10486e50 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java @@ -59,9 +59,9 @@ public class PrintReadsWalker extends ReadWalker { @Argument(fullName = "number", shortName = "n", doc="Print the first n reads from the file, discarding the rest", required = false) int nReadsToPrint = -1; @Argument(fullName="sample_file", shortName="sf", doc="File containing a list of samples (one per line). Can be specified multiple times", required=false) - public Set sampleFile; + public Set sampleFile = new TreeSet(); @Argument(fullName="sample_name", shortName="sn", doc="Sample name to be included in the analysis. Can be specified multiple times.", required=false) - public Set sampleNames; + public Set sampleNames = new TreeSet(); private TreeSet samplesToChoose = new TreeSet(); private boolean NO_SAMPLES_SPECIFIED = false; From a2d90a35903d28ea4e7ab7017e712a008bc12712 Mon Sep 17 00:00:00 2001 From: Guillermo del Angel Date: Wed, 20 Jul 2011 10:23:10 -0400 Subject: [PATCH 39/41] Bug fix: reverted logic so that default behavior skips over sample lookup --- .../sting/gatk/walkers/PrintReadsWalker.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java index b10486e50..2b7db8d34 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java @@ -64,7 +64,7 @@ public class PrintReadsWalker extends ReadWalker { public Set sampleNames = new TreeSet(); private TreeSet samplesToChoose = new TreeSet(); - private boolean NO_SAMPLES_SPECIFIED = false; + private boolean SAMPLES_SPECIFIED = false; /** * The initialize function. @@ -82,8 +82,8 @@ public class PrintReadsWalker extends ReadWalker { if (!sampleNames.isEmpty()) samplesToChoose.addAll(sampleNames); - if(samplesToChoose.isEmpty()) { - NO_SAMPLES_SPECIFIED = true; + if(!samplesToChoose.isEmpty()) { + SAMPLES_SPECIFIED = true; } } @@ -112,7 +112,7 @@ public class PrintReadsWalker extends ReadWalker { if ( readPlatformAttr == null || !readPlatformAttr.toString().toUpperCase().contains(platform)) return false; } - if (!NO_SAMPLES_SPECIFIED ) { + if (SAMPLES_SPECIFIED ) { // user specified samples to select String readSample = read.getReadGroup().getSample(); boolean found = false; From 7140280bf640fe2e46de52c51888134210dddf6e Mon Sep 17 00:00:00 2001 From: Guillermo del Angel Date: Wed, 20 Jul 2011 10:44:37 -0400 Subject: [PATCH 40/41] Further bug fixes/cleanups for PrintReadsWalker --- .../sting/gatk/walkers/PrintReadsWalker.java | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java index 2b7db8d34..7e1dcd707 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/PrintReadsWalker.java @@ -114,17 +114,9 @@ public class PrintReadsWalker extends ReadWalker { } if (SAMPLES_SPECIFIED ) { // user specified samples to select - String readSample = read.getReadGroup().getSample(); - boolean found = false; - for (String sampleSelected : samplesToChoose) { - if (readSample.equalsIgnoreCase(sampleSelected)) { - found = true; - break; - } - - } - - if (!found) + // todo - should be case-agnostic but for simplicity and speed this is ignored. + // todo - can check at initialization intersection of requested samples and samples in BAM header to further speedup. + if (!samplesToChoose.contains(read.getReadGroup().getSample())) return false; }