From 9ee775954d74a5387b3fd89e0002e659647e99ac Mon Sep 17 00:00:00 2001 From: aclement Date: Thu, 16 Feb 2006 18:48:49 +0000 Subject: [PATCH] feature: Use ASM for non-woven types: testcode --- .../forAsmDelegateTesting/AnnotatedClass.java | 3 ++ .../AnnotatedFields.java | 5 +++ .../AnnotatedMethods.java | 10 +++++ .../AnnotatedParameters.java | 15 ++++++++ .../AnnotatedWithClassClass.java | 3 ++ .../AnnotatedWithCombinedAnnotation.java | 3 ++ .../AnnotatedWithEnumClass.java | 3 ++ .../AnnotationClassElement.java | 6 +++ .../AnnotationEnumElement.java | 6 +++ .../AnnotationStringElement.java | 6 +++ .../AnonymousClassTest.java | 16 ++++++++ .../forAsmDelegateTesting/AspectFromHell.java | 24 ++++++++++++ .../AttributeTestClassEM01.java | 8 ++++ .../AttributeTestClassEM02.java | 8 ++++ .../CombinedAnnotation.java | 6 +++ .../forAsmDelegateTesting/Complex.java | 13 +++++++ .../ComplexAnnotatedClass.java | 3 ++ .../ComplexAnnotation.java | 13 +++++++ .../ErasureTestData.java | 7 ++++ .../forAsmDelegateTesting/HelloWorld.java | 14 +++++++ .../forAsmDelegateTesting/MarkedType.java | 4 ++ .../MarkerAnnotation.java | 4 ++ .../MarkerAnnotationInvisible.java | 4 ++ .../PossibleGenericsSigs.java | 36 ++++++++++++++++++ weaver/testdata/forAsmDelegateTesting/README | 5 +++ .../SimpleAnnotatedClass.java | 3 ++ .../SimpleAnnotation.java | 7 ++++ .../SimpleAnnotation2.java | 8 ++++ .../SimpleAnnotation3.java | 8 ++++ .../SimpleAnnotation4.java | 7 ++++ .../forAsmDelegateTesting/SimpleAspect.java | 12 ++++++ .../forAsmDelegateTesting/SimpleClass.java | 5 +++ .../forAsmDelegateTesting/SimpleEnum.java | 1 + .../SimpleGenericsProgram.java | 26 +++++++++++++ .../SimpleGenericsUsage.java | 12 ++++++ .../SimpleStringAnnotation.java | 6 +++ .../forAsmDelegateTesting/SimpleType.java | 6 +++ .../forAsmDelegateTesting/SimpleVarargs.java | 12 ++++++ .../forAsmDelegateTesting/VarargsClass.java | 9 +++++ .../VerySimpleAnnotation.java | 6 +++ .../testdata/forAsmDelegateTesting/stuff.jar | Bin 0 -> 30108 bytes 41 files changed, 353 insertions(+) create mode 100644 weaver/testdata/forAsmDelegateTesting/AnnotatedClass.java create mode 100644 weaver/testdata/forAsmDelegateTesting/AnnotatedFields.java create mode 100644 weaver/testdata/forAsmDelegateTesting/AnnotatedMethods.java create mode 100644 weaver/testdata/forAsmDelegateTesting/AnnotatedParameters.java create mode 100644 weaver/testdata/forAsmDelegateTesting/AnnotatedWithClassClass.java create mode 100644 weaver/testdata/forAsmDelegateTesting/AnnotatedWithCombinedAnnotation.java create mode 100644 weaver/testdata/forAsmDelegateTesting/AnnotatedWithEnumClass.java create mode 100644 weaver/testdata/forAsmDelegateTesting/AnnotationClassElement.java create mode 100644 weaver/testdata/forAsmDelegateTesting/AnnotationEnumElement.java create mode 100644 weaver/testdata/forAsmDelegateTesting/AnnotationStringElement.java create mode 100644 weaver/testdata/forAsmDelegateTesting/AnonymousClassTest.java create mode 100644 weaver/testdata/forAsmDelegateTesting/AspectFromHell.java create mode 100644 weaver/testdata/forAsmDelegateTesting/AttributeTestClassEM01.java create mode 100644 weaver/testdata/forAsmDelegateTesting/AttributeTestClassEM02.java create mode 100644 weaver/testdata/forAsmDelegateTesting/CombinedAnnotation.java create mode 100644 weaver/testdata/forAsmDelegateTesting/Complex.java create mode 100644 weaver/testdata/forAsmDelegateTesting/ComplexAnnotatedClass.java create mode 100644 weaver/testdata/forAsmDelegateTesting/ComplexAnnotation.java create mode 100644 weaver/testdata/forAsmDelegateTesting/ErasureTestData.java create mode 100644 weaver/testdata/forAsmDelegateTesting/HelloWorld.java create mode 100644 weaver/testdata/forAsmDelegateTesting/MarkedType.java create mode 100644 weaver/testdata/forAsmDelegateTesting/MarkerAnnotation.java create mode 100644 weaver/testdata/forAsmDelegateTesting/MarkerAnnotationInvisible.java create mode 100644 weaver/testdata/forAsmDelegateTesting/PossibleGenericsSigs.java create mode 100644 weaver/testdata/forAsmDelegateTesting/README create mode 100644 weaver/testdata/forAsmDelegateTesting/SimpleAnnotatedClass.java create mode 100644 weaver/testdata/forAsmDelegateTesting/SimpleAnnotation.java create mode 100644 weaver/testdata/forAsmDelegateTesting/SimpleAnnotation2.java create mode 100644 weaver/testdata/forAsmDelegateTesting/SimpleAnnotation3.java create mode 100644 weaver/testdata/forAsmDelegateTesting/SimpleAnnotation4.java create mode 100644 weaver/testdata/forAsmDelegateTesting/SimpleAspect.java create mode 100644 weaver/testdata/forAsmDelegateTesting/SimpleClass.java create mode 100644 weaver/testdata/forAsmDelegateTesting/SimpleEnum.java create mode 100644 weaver/testdata/forAsmDelegateTesting/SimpleGenericsProgram.java create mode 100644 weaver/testdata/forAsmDelegateTesting/SimpleGenericsUsage.java create mode 100644 weaver/testdata/forAsmDelegateTesting/SimpleStringAnnotation.java create mode 100644 weaver/testdata/forAsmDelegateTesting/SimpleType.java create mode 100644 weaver/testdata/forAsmDelegateTesting/SimpleVarargs.java create mode 100644 weaver/testdata/forAsmDelegateTesting/VarargsClass.java create mode 100644 weaver/testdata/forAsmDelegateTesting/VerySimpleAnnotation.java create mode 100644 weaver/testdata/forAsmDelegateTesting/stuff.jar diff --git a/weaver/testdata/forAsmDelegateTesting/AnnotatedClass.java b/weaver/testdata/forAsmDelegateTesting/AnnotatedClass.java new file mode 100644 index 000000000..033d2e8e5 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/AnnotatedClass.java @@ -0,0 +1,3 @@ +@AnnotationStringElement(stringval="hello") +public class AnnotatedClass { +} diff --git a/weaver/testdata/forAsmDelegateTesting/AnnotatedFields.java b/weaver/testdata/forAsmDelegateTesting/AnnotatedFields.java new file mode 100644 index 000000000..a9cd8e396 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/AnnotatedFields.java @@ -0,0 +1,5 @@ +public class AnnotatedFields { + @SimpleAnnotation3(id=1) int i; + + @SimpleAnnotation3(id=2) String s; +} diff --git a/weaver/testdata/forAsmDelegateTesting/AnnotatedMethods.java b/weaver/testdata/forAsmDelegateTesting/AnnotatedMethods.java new file mode 100644 index 000000000..e7c43a88e --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/AnnotatedMethods.java @@ -0,0 +1,10 @@ +public class AnnotatedMethods { + + @SimpleAnnotation3(id=1) + public void method1() { + } + + @SimpleAnnotation3(id=2) + public void method2() { + } +} diff --git a/weaver/testdata/forAsmDelegateTesting/AnnotatedParameters.java b/weaver/testdata/forAsmDelegateTesting/AnnotatedParameters.java new file mode 100644 index 000000000..9cfb2b80b --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/AnnotatedParameters.java @@ -0,0 +1,15 @@ +public class AnnotatedParameters { + + + public static void main(@SimpleAnnotation(id=1) String args[]) { + } + + public void foo(@SimpleAnnotation(id=2) int arg1, + @SimpleAnnotation(id=3) @AnnotationEnumElement(enumval=SimpleEnum.Red) String arg2) { + try { + throw new RuntimeException("eee"); + } catch (@SimpleAnnotation(id=5) Exception ex) { + } + } + +} diff --git a/weaver/testdata/forAsmDelegateTesting/AnnotatedWithClassClass.java b/weaver/testdata/forAsmDelegateTesting/AnnotatedWithClassClass.java new file mode 100644 index 000000000..a9dc32138 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/AnnotatedWithClassClass.java @@ -0,0 +1,3 @@ +@AnnotationClassElement(clz=Integer.class) +public class AnnotatedWithClassClass { +} diff --git a/weaver/testdata/forAsmDelegateTesting/AnnotatedWithCombinedAnnotation.java b/weaver/testdata/forAsmDelegateTesting/AnnotatedWithCombinedAnnotation.java new file mode 100644 index 000000000..c63e6bcaf --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/AnnotatedWithCombinedAnnotation.java @@ -0,0 +1,3 @@ +@CombinedAnnotation({@SimpleAnnotation(id=4)}) +public class AnnotatedWithCombinedAnnotation { +} diff --git a/weaver/testdata/forAsmDelegateTesting/AnnotatedWithEnumClass.java b/weaver/testdata/forAsmDelegateTesting/AnnotatedWithEnumClass.java new file mode 100644 index 000000000..5f532ff6b --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/AnnotatedWithEnumClass.java @@ -0,0 +1,3 @@ +@AnnotationEnumElement(enumval=SimpleEnum.Red) +public class AnnotatedWithEnumClass { +} diff --git a/weaver/testdata/forAsmDelegateTesting/AnnotationClassElement.java b/weaver/testdata/forAsmDelegateTesting/AnnotationClassElement.java new file mode 100644 index 000000000..629bd2155 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/AnnotationClassElement.java @@ -0,0 +1,6 @@ +import java.lang.annotation.*; + +@Retention(RetentionPolicy.RUNTIME) +public @interface AnnotationClassElement { + Class clz(); +} diff --git a/weaver/testdata/forAsmDelegateTesting/AnnotationEnumElement.java b/weaver/testdata/forAsmDelegateTesting/AnnotationEnumElement.java new file mode 100644 index 000000000..201b34ad2 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/AnnotationEnumElement.java @@ -0,0 +1,6 @@ +import java.lang.annotation.*; + +@Retention(RetentionPolicy.RUNTIME) +public @interface AnnotationEnumElement { + SimpleEnum enumval(); +} diff --git a/weaver/testdata/forAsmDelegateTesting/AnnotationStringElement.java b/weaver/testdata/forAsmDelegateTesting/AnnotationStringElement.java new file mode 100644 index 000000000..dc68cf2e9 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/AnnotationStringElement.java @@ -0,0 +1,6 @@ +import java.lang.annotation.*; + +@Retention(RetentionPolicy.RUNTIME) +public @interface AnnotationStringElement { + String stringval(); +} diff --git a/weaver/testdata/forAsmDelegateTesting/AnonymousClassTest.java b/weaver/testdata/forAsmDelegateTesting/AnonymousClassTest.java new file mode 100644 index 000000000..ca1c50101 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/AnonymousClassTest.java @@ -0,0 +1,16 @@ +public class AnonymousClassTest { + + public void foo() { + + new Runnable() { + public void run() {}; + }.run(); + + + } + + class X {} + + static class Y {} + +} \ No newline at end of file diff --git a/weaver/testdata/forAsmDelegateTesting/AspectFromHell.java b/weaver/testdata/forAsmDelegateTesting/AspectFromHell.java new file mode 100644 index 000000000..def65b428 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/AspectFromHell.java @@ -0,0 +1,24 @@ +import java.util.*; + +public aspect AspectFromHell { + + public void Foo.m1() {} + public int Foo.m2() {return 2;} + public void Foo.m3(String s) {} + public Foo.new(String s) {super();} + public int Foo.x; + public List Foo.y; + + + before(): execution(void Goo.m1()) {} + after(): execution(void Goo.m2(String)) { System.err.println(thisJoinPoint);} + void around(int i): execution(void Goo.m3(..)) && args(i) { } + + class Goo { + void m1() {} + void m2(String s) {} + void m3(int i) {} + } +} + + class Foo { } diff --git a/weaver/testdata/forAsmDelegateTesting/AttributeTestClassEM01.java b/weaver/testdata/forAsmDelegateTesting/AttributeTestClassEM01.java new file mode 100644 index 000000000..e8bb5c7f5 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/AttributeTestClassEM01.java @@ -0,0 +1,8 @@ +public class AttributeTestClassEM01 { + + public static void main(String[]argv) { + class S { + public void sayhello() { System.err.println("hello");} + } + } +} diff --git a/weaver/testdata/forAsmDelegateTesting/AttributeTestClassEM02.java b/weaver/testdata/forAsmDelegateTesting/AttributeTestClassEM02.java new file mode 100644 index 000000000..b152854a6 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/AttributeTestClassEM02.java @@ -0,0 +1,8 @@ +public class AttributeTestClassEM02 { + + Runnable r = new Runnable() { + public void run() { System.err.println("hello");} + }; + public static void main(String[]argv) { + } +} diff --git a/weaver/testdata/forAsmDelegateTesting/CombinedAnnotation.java b/weaver/testdata/forAsmDelegateTesting/CombinedAnnotation.java new file mode 100644 index 000000000..a262c868f --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/CombinedAnnotation.java @@ -0,0 +1,6 @@ +import java.lang.annotation.*; + +@Retention(RetentionPolicy.RUNTIME) +public @interface CombinedAnnotation { + public SimpleAnnotation[] value(); +} diff --git a/weaver/testdata/forAsmDelegateTesting/Complex.java b/weaver/testdata/forAsmDelegateTesting/Complex.java new file mode 100644 index 000000000..88c17cd51 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/Complex.java @@ -0,0 +1,13 @@ +// Class contains everything, for delegate comparing.. + +public class Complex { + + int field1; + String field2; + Foo[] field3; + + + + static class Foo { + } +} diff --git a/weaver/testdata/forAsmDelegateTesting/ComplexAnnotatedClass.java b/weaver/testdata/forAsmDelegateTesting/ComplexAnnotatedClass.java new file mode 100644 index 000000000..1e6214a4a --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/ComplexAnnotatedClass.java @@ -0,0 +1,3 @@ +@ComplexAnnotation(ival=4,bval=2,cval='5',fval=3.0f,dval=33.4,zval=false,jval=56,sval=99) +public class ComplexAnnotatedClass { +} diff --git a/weaver/testdata/forAsmDelegateTesting/ComplexAnnotation.java b/weaver/testdata/forAsmDelegateTesting/ComplexAnnotation.java new file mode 100644 index 000000000..c5a76c71e --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/ComplexAnnotation.java @@ -0,0 +1,13 @@ +import java.lang.annotation.*; + +@Retention(RetentionPolicy.RUNTIME) +public @interface ComplexAnnotation { + int ival(); + byte bval(); + char cval(); + long jval(); + double dval(); + boolean zval(); + short sval(); + float fval(); +} diff --git a/weaver/testdata/forAsmDelegateTesting/ErasureTestData.java b/weaver/testdata/forAsmDelegateTesting/ErasureTestData.java new file mode 100644 index 000000000..493f59a14 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/ErasureTestData.java @@ -0,0 +1,7 @@ +import java.util.*; + +public class ErasureTestData { + + public Vector getData() { return null; } + +} diff --git a/weaver/testdata/forAsmDelegateTesting/HelloWorld.java b/weaver/testdata/forAsmDelegateTesting/HelloWorld.java new file mode 100644 index 000000000..9146fed8c --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/HelloWorld.java @@ -0,0 +1,14 @@ +import java.io.*; + +public class HelloWorld { + public static void main(String[] argv) { + BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); + String name = null; + + try { + System.out.print("Please enter your name> "); + name = in.readLine(); + } catch(IOException e) { return; } + System.out.println("Hello, " + name); + } + } diff --git a/weaver/testdata/forAsmDelegateTesting/MarkedType.java b/weaver/testdata/forAsmDelegateTesting/MarkedType.java new file mode 100644 index 000000000..2b0948438 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/MarkedType.java @@ -0,0 +1,4 @@ +@MarkerAnnotationInvisible +@MarkerAnnotation +public class MarkedType { +} diff --git a/weaver/testdata/forAsmDelegateTesting/MarkerAnnotation.java b/weaver/testdata/forAsmDelegateTesting/MarkerAnnotation.java new file mode 100644 index 000000000..f314a9432 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/MarkerAnnotation.java @@ -0,0 +1,4 @@ +import java.lang.annotation.*; + +@Retention(RetentionPolicy.RUNTIME) +public @interface MarkerAnnotation { } diff --git a/weaver/testdata/forAsmDelegateTesting/MarkerAnnotationInvisible.java b/weaver/testdata/forAsmDelegateTesting/MarkerAnnotationInvisible.java new file mode 100644 index 000000000..9b41a593a --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/MarkerAnnotationInvisible.java @@ -0,0 +1,4 @@ +import java.lang.annotation.*; + +@Retention(RetentionPolicy.CLASS) +public @interface MarkerAnnotationInvisible { } diff --git a/weaver/testdata/forAsmDelegateTesting/PossibleGenericsSigs.java b/weaver/testdata/forAsmDelegateTesting/PossibleGenericsSigs.java new file mode 100644 index 000000000..ee687b280 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/PossibleGenericsSigs.java @@ -0,0 +1,36 @@ +import java.util.*; + +public class PossibleGenericsSigs { + + public void a(List List_String) {} + + public void b(List List_Double) {} + + public void c(List q_extends_Number) {} + + public void d(List q_super_Number) {} + + public void e(List List_q) {} + + public void f(Map Map_q_q_super_Number) {} + + + + > void r(List l) {} + + > T s(Collection col) {return null;} + + static > T t(Collection col) {return null;} + + static > T u(Collection col) {return null;} + + X v(Collection x) {return null;} + + public void w(List>>>> wtf) {} + + static void x(List a,List b) {} + + void y(Map n) {} + + static void z(T[] ts,Collection c) {} +} diff --git a/weaver/testdata/forAsmDelegateTesting/README b/weaver/testdata/forAsmDelegateTesting/README new file mode 100644 index 000000000..e6907208d --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/README @@ -0,0 +1,5 @@ +Rebuilding? + +Just do this: + +ajc -1.5 *.java -outjar stuff.jar diff --git a/weaver/testdata/forAsmDelegateTesting/SimpleAnnotatedClass.java b/weaver/testdata/forAsmDelegateTesting/SimpleAnnotatedClass.java new file mode 100644 index 000000000..8d4e4ac95 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/SimpleAnnotatedClass.java @@ -0,0 +1,3 @@ +@SimpleAnnotation(id=4) +public class SimpleAnnotatedClass { +} diff --git a/weaver/testdata/forAsmDelegateTesting/SimpleAnnotation.java b/weaver/testdata/forAsmDelegateTesting/SimpleAnnotation.java new file mode 100644 index 000000000..94291dc13 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/SimpleAnnotation.java @@ -0,0 +1,7 @@ +import java.lang.annotation.*; + +@Retention(RetentionPolicy.SOURCE) +public @interface SimpleAnnotation { + int id(); + String fruit() default "bananas"; +} diff --git a/weaver/testdata/forAsmDelegateTesting/SimpleAnnotation2.java b/weaver/testdata/forAsmDelegateTesting/SimpleAnnotation2.java new file mode 100644 index 000000000..64c4a77d1 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/SimpleAnnotation2.java @@ -0,0 +1,8 @@ +import java.lang.annotation.*; + +@Retention(RetentionPolicy.CLASS) +public @interface SimpleAnnotation2 { + int id(); + String fruit() default "bananas"; +} + diff --git a/weaver/testdata/forAsmDelegateTesting/SimpleAnnotation3.java b/weaver/testdata/forAsmDelegateTesting/SimpleAnnotation3.java new file mode 100644 index 000000000..2f4d94add --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/SimpleAnnotation3.java @@ -0,0 +1,8 @@ +import java.lang.annotation.*; + +@Retention(RetentionPolicy.RUNTIME) +public @interface SimpleAnnotation3 { + int id(); + String fruit() default "bananas"; +} + diff --git a/weaver/testdata/forAsmDelegateTesting/SimpleAnnotation4.java b/weaver/testdata/forAsmDelegateTesting/SimpleAnnotation4.java new file mode 100644 index 000000000..24a4c5977 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/SimpleAnnotation4.java @@ -0,0 +1,7 @@ +import java.lang.annotation.*; + +public @interface SimpleAnnotation4 { + int id(); + String fruit() default "bananas"; +} + diff --git a/weaver/testdata/forAsmDelegateTesting/SimpleAspect.java b/weaver/testdata/forAsmDelegateTesting/SimpleAspect.java new file mode 100644 index 000000000..b5c4abe2e --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/SimpleAspect.java @@ -0,0 +1,12 @@ +public aspect SimpleAspect { + pointcut p(): call(* *(..)); + + before(): p() { + + } + + int SimpleAspect.i; + + public void SimpleAspect.m() { } + +} diff --git a/weaver/testdata/forAsmDelegateTesting/SimpleClass.java b/weaver/testdata/forAsmDelegateTesting/SimpleClass.java new file mode 100644 index 000000000..9920c4912 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/SimpleClass.java @@ -0,0 +1,5 @@ +public class SimpleClass { + public static void main(String[] argv) { + // Nothing unusual in this class + } +} diff --git a/weaver/testdata/forAsmDelegateTesting/SimpleEnum.java b/weaver/testdata/forAsmDelegateTesting/SimpleEnum.java new file mode 100644 index 000000000..2df536880 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/SimpleEnum.java @@ -0,0 +1 @@ +public enum SimpleEnum { Red,Orange,Yellow,Green,Blue,Indigo,Violet }; diff --git a/weaver/testdata/forAsmDelegateTesting/SimpleGenericsProgram.java b/weaver/testdata/forAsmDelegateTesting/SimpleGenericsProgram.java new file mode 100644 index 000000000..2457a9155 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/SimpleGenericsProgram.java @@ -0,0 +1,26 @@ +import java.util.*; + +class TreasureChest { + + protected Set contents; + + public TreasureChest() { + contents = new HashSet(); + } + + public void add(T o) { + contents.add(o); + } +} + +public class SimpleGenericsProgram { + + public static void main(String []argv) { + TreasureChest tc1 = new TreasureChest(); + TreasureChest tc2 = new TreasureChest(); + + tc1.add("dubloon"); + tc2.add(new Integer("777")); + + } +} diff --git a/weaver/testdata/forAsmDelegateTesting/SimpleGenericsUsage.java b/weaver/testdata/forAsmDelegateTesting/SimpleGenericsUsage.java new file mode 100644 index 000000000..74a8df574 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/SimpleGenericsUsage.java @@ -0,0 +1,12 @@ +import java.util.*; + +public class SimpleGenericsUsage { + + public static void main(String[]argv) { + ArrayList fruits = new ArrayList(); + fruits.add("Oranges"); + fruits.add("Apples"); + fruits.add("Pears"); + System.err.println(fruits.size()+" fruits defined"); + } +} diff --git a/weaver/testdata/forAsmDelegateTesting/SimpleStringAnnotation.java b/weaver/testdata/forAsmDelegateTesting/SimpleStringAnnotation.java new file mode 100644 index 000000000..af3b5ce36 --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/SimpleStringAnnotation.java @@ -0,0 +1,6 @@ +import java.lang.annotation.*; + +@Retention(RetentionPolicy.RUNTIME) +public @interface SimpleStringAnnotation { + String fruit(); +} diff --git a/weaver/testdata/forAsmDelegateTesting/SimpleType.java b/weaver/testdata/forAsmDelegateTesting/SimpleType.java new file mode 100644 index 000000000..2b0563bba --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/SimpleType.java @@ -0,0 +1,6 @@ +class SimpleType { + public Integer i; + + public void setI(Integer i) { this.i=i;} + public Integer getI() { return i;} +} diff --git a/weaver/testdata/forAsmDelegateTesting/SimpleVarargs.java b/weaver/testdata/forAsmDelegateTesting/SimpleVarargs.java new file mode 100644 index 000000000..3994d2cfb --- /dev/null +++ b/weaver/testdata/forAsmDelegateTesting/SimpleVarargs.java @@ -0,0 +1,12 @@ + +public class SimpleVarargs { + public static void main(String[] argv) { + callfoo("a","b","c","d","e"); + } + + public static void callfoo(Object... args) { + for (int i = 0 ; i# z^dDVa^{M;1?|aTY*0K^HpeR6)?=LMc8782A`$GW&1(Fh0!Hw|2L7KLN=~KtR^asD!e=KZy1HU-rKqulv6q4+O+-ZEfSI=V)XoXsPGmKx6Rn zt|TKR(Zh$}8MoI{SYJ_*gxg*M;b&5SFD%2~C4QRbXx3=S61{ru?TW;85ArOxMU0lu zd7S2H6UbV-&YPtJWNjyn!HuE7zPaO85>SsAOt%=)E?P&IwnMT$)Gd5~*zIlPFcKRH(scvzc=mjbz!;cupx4RvY_Z|7WR~}NAlVkz_9XmlM*kM(1E4{3 zm(bfgJX7Gm0YrWO#(x0>m>F3b{*$1Q%&<5JKSKFfztFb1c8C3SA+Bbxfe-=#f+~vU zkY_B8e$Z(7@z|qICMdj@4<5;FI4}uri+f8;ap}Xe+Z&MWciKK2^^o)43Ff?-pd*4oyo|fwHlZTxwY8;}mECT7^DR=>e3l8I9EvKdlr(t_gSzK0 zue`^D_~8e4L3#(8`&X!F z{|;5k$kEj1UsOG1m!&_^BXApi-z~%sP7+yfBbJyDi3piYPWBCi$88KY}}B! zXXHt_-+;K6>pv8TM$nH-IZRJ+FkU*#8m9%a!ls+Cj-Lv|LUatkJjA!_g2cJPv@d#dbrhI6HJX zxG)q5i)vTtG9kR(V?6c8yJRbPrf$V{w|>A3l$Vh)&{>gawRZ578u$7f8J(lDyzR3n zgMTJJmpe$lC(SGC(db4VGhT!*nBrly#%K4nuc733w)h=`5pzuj#LOgqHlJ~kqrypT zU52F=Yh&(kVoPh9W157Ph0WU$8td=V07PfcfP6;pc(z*Br}*h}=2 z6Ypokg}9KKCnhyI6LZ2JrzSt}uIz{t&=yR+ZqX@QNafsIEX_3R7%Yc|l9eLVb;QQV z&Du#F(BQS@5g20Ss zhFOWoFb8!~fB~A?eDo{^^SbHvF=tu#nNpPNTW; zP_2!3t1r&+s)BvC)<&CPlgHU~#8K81^t3{8-brEo3i6?s=Z(wD!*{(Hfc#A_IRCB}6*EWE zKW^pUe2dc`--41ppC3{4ow7CATyFle0D@iU^=eOL2vr2t8#3bwaj<>EcepW~RFyshi0@~btwhi^Fb(#y%( zS(V3(n7g1jxMW*{S;q%37{YKMTK2ORUNkd{A*tmND z*!#Udkb*UQS%Q2=8v0jzNb*v$llt?RNIA8Cvz!R_>I~OK`raZ1m zE0=Q(+iJjpzx}LLig1gItXwHnJ6)6#ha8y7MXcjV{Jy_llYT6tfJJ(eaCud8DW__T zw>+HGLMv^=uB431*wmRyQs&F~I?I|sff4syO8&z-A0e*>zDlrHw-;*rR>NMs?B?AbpYLLl>-Rn%gqy@w(Z@(_q55$-;I-m&e zcx(TP82f)B7PfY>`Zv*9$qY;P&>^Isd__=K|D}=M1RSKC&M#U_Sp=Dn7El{kS^RZ? zKVtfA%fI(K{6-$ak!*;BmFpZM=k2N2n}-*0Q$NAx!P?Ra#Xv3k$)16RF;QM9ArPV) zOuf8d-to~ng_`Z}Pcu*z8dmkKL^HHB1_B20<4qBy>I7dF2px&69;!!>w0X*U>2mOP zOBkxv&By2Udq$o3*+N)YZ3Q8VT$?2y_}!ltjh8zcMcFdq=MKXSv`im7PiC7Fpa&*- zZ_fGy85^XbL8%-IU~_P!oNkR5_DSTj&SCe9hxoi=EK_9Y5Ln9DCfXi5Z(B9ZA;B~f zRC^+IpT_a470g;uohRcKVpcNKc?|F%{x}cbsJj!mccfwezhZqC=^viLmPS@a){g%Y zY^(VvIRx&!N{bmOQ2uBXF_NVwRgC~$zVp7+1)U@U&E_?*yUOgWL_)j`k$`YCYa-PV zzmzMCz3aOx7+oLmoEu}St@!B>PgY7Pk-$dF40u8&7V|2ByyI_dIyP*HW-;fnGP4O- zdkj2W0`x2*0=3I&I|pH}(Xv{ki!^)iR>|ic%Rjvf5trnQGuAG}i`=Z(1`7S>heibn zox78y)7#n^Qj#4{`OrfqFZdz7u9=^(WkhfUfJqR3U6N4_eL_8ic4^w7G?xcioG1Cz zPn7uz{GmF7+enVtcTFk%6%W>btL`1ohvfcWI?=7x-FyhbXXgy`w5$}dq>5-vsxyix z00Bby6uzITd8U(Y5xNn*RRx0(=W>XGp-ud`3yYH@EA9Y?*OymdIsl(bx_TPtuA{Yq zhGF$)c*PZ;ziwG1CBrW-;j=XABKZm=?O&yjNq~Z|AdW7B3l2)bgU^9s1!K;ERkz5# zKS#nme=&X_isNY^gp?7}%NTR1fOj)!!sbSJ3`?^hJ{F=)@%i0N>yNmG`7#(GEkk%7 zJG;F9%={S&b%xJ$Fs7Ikj)|mfW0UsLbZ9-sOG7(oQuyrC2O&fu!hps1^~?X2(7$<; zcR~t|_GZ>5|AW!6`6qq^VVj4+;*h8Sd;va{T&$q-TKgRQdwr(GMnM8j zyyz&Tuh3(Fq1>{tQVu8D8+V>eAdhT-DQtN}x;;mYMB}_OBU78f5f?&EgA&9pmJ#c# zNBgd9shYsoic-$wB6qGGsJ{D_lWf?WwG%1%J<=;Na_T%oyh~9m(l*|U$u|(FQT%G@ zvwMw!cNyVCLY)i=3IcO(k|39~-HQqpT#X+PGH^U2cEWTRmt8n65Ew>-Yzlt{u$yJ$ ztAY1fP;Dx`)?BaeBw(T{(ta>1=R>3ZV5I$5MqmD@$i~{$%Ermz&lyuRa&RP8{l^ir zlKp2W*WcT3YEV(J#%j@Xvqf_f!cy#FBB7At0yC-|c@ zsqT8*h0at)+y0GG$;?R#BZ3u*l%Pv=# zpL}l$@wFcpq8fRq;{02FNd-b6*69UN!xq<`Q_SG9Vwi~4WQiAkSG$5Z8r)Y`t)J9& z^u)6M$PE^k12Ow%cV8~5t4EuM4}71%O-wkRI>)Y&-On^J5A5o`RKQe)eBoRW`FV)P zWarZpNYYP)4gAOP-r$gdd;}sz|NoFx`zKlH4{wW-p46Y;zc5#KFzW~L=OQD{PY&w- z1I2BnSGY01HChUkw~VaI@7;ch=_IcG?jCE)U_Co|e)W6Uk#o(@Q1MHuL4~B^jYTxsY-v&U_R-sIZjsX zIVvd@>YludP5H0TF#bPRH(8Xu+t>kC`$x-zpf}`uc`cQ zZvMpZAwz&w1E=A)unSa=FYWw!A@CasAvT+W7~`-?rPLwT3=U%+`y=1R9*loJ-``{M zfxtuVM#u(KL6~FMfD=Z3GfY>-@7C184s*lr_Iq@0q~!)o`>!DLUdK5Jw5VGkGo+d8 zEDaK>@PWGuR38Ri?%GZyOhz7n$3CR}Lgv>H>fnj$l(at>@PF7dykOotr4Y7Na@+{L z50OTxAzM+wNsBJqO+xbpP7o{U zhL}W?07cy#!}YSH>Zw9f`&&H^=#wkPufc4F%(b4(fFsbQG~5$a)g9BIXkHxW)`2Y* zi_t`0Ht3zet~twHIy9_1-b=g`{Cvv(~Vm++ghrdOjJbWs z=OZGVV;zoXWnGUouKh7O`+m!)WQDiVPMHr$?X%+C!@b9!$e@3VDgJ|nqyOhQlv@@D zc@ILTE44IKG^%b+CGbkS&DTMNqf7A>!4f)(EG!!>kr%_ZOdjxk|0G+a^>YMBB$Lxq z(j6Ec9$)W4CpyveHigV?7$(%F!i8d2hKMVeH4$>A&}H;#kxE;?tsV~JJH?QVL`Hhet2p$tG{KcFZi8$Wc2@T?si|Na(o%On8;D#1Ci9wjSvmB2Ce}0^-llRc# z)x8qBh2;^y1w2-A7Z2|`@HnhuNwVv?$u3(cIXy?;B5)R*{L-Rl&-EB5WmSX8oNj|a z@&@xj%0M&!ezop}u=1c@h(nLY1|-#fWrclsF*F+ab50I{6t2>8eK@Lwv@*&{^RHGv zC(GAANk%xb6d31sV_^K(3*m;{A06DRHQ7igi&7mdF{41c%{f+fP?t7V%Z|3 za0Db2LZ{Hm(5(5189q_vL~uK?lz$sNWwWD!q{$Aoh+(tkGmm2TVMDm_VIv~Q5nn;v z>IAD4#r9#XJ*v;J?p$e~IxaU^ds<67Yfo`~J*|3L2Vx6C$Lw|;4*gCqX=%2sJ~uI< zewz?Mt&K?Uj~PgFSV%(?x3c09LSR2zdI_3~5lZB%7kH6teVI1;2;Mkf59h}yiB=J6 z9M7bY^s~Jycwq)7&@`sJg06SIyijY?RclPDf&-2rsj=eG$r=Om5TZwavc^J9O3KQ} zNx^n`26mozl!-bAYL%gONx9&Mmy`hXXr*0s$8z+ZWQDX=u~(#CzO~Yg21jECT}29- zTcD#n^f@?snlkgO1+OqoVgA;6`lWM6d}kip7~R}g^qwI$=}pj{q50IpiKDiBPL2xa z*}JhAnw`hGU2p4t%@B$6kVF1sdsUzq9Zpy?vmbg_zICn%XvD|H!m7?bdV!1hO^u-t)8-`Knb7iKOx$C~W`hZOeq@iR zM;`Q8e;RLs$qlYXV$W0eAuJ zX8S!ckT1v>g)+0jkjW`zxQH4ug<_@tC2Vru^*82C-eDDe?ApN942@^W2u{wo?u>k| z_(!&S0%m*PHMx91P^gRC1`{qPhPAwZ zyhrEVV4$n10gxm2t%a*Y)ys&3$rL4XcotA<7dj)q*4|;|Mn>c@%rn|!8C9w#b}?T) zVLrX!@jhLB6VGNvT%8LiwPD5xA&oD#Hrm<5Qfs@LS~#Hf4(bXGW@4(QIC%ClMQ{A_ zscMfl@f+0>PEn3hlftb%tBP}6BUKYoY3jtUMk@E&5}j@EDmlWcX*z;$}cXcJ7z^<7Y1yT_Wg%cLK}bmboc4+3z|YY|r9$VmNs{C3DP}4Wl!@UEoe0#`?b% zG8c_0lMI(weKv*5bs8*6xDz>=B0vwD>X14a^EtrJHQ|_kKCTr>Oay$bUNeXBY>{Wk{QsLXcot8VXaAlWsoO_FI z`E_Pac{H&p+jZLKj5%b@`8t6~c^PkRm8W8^KR1 z**I@ZXUas>TJs+vKHP+As(BB?yNl@m{5Lm&@^SNUur)Gp1lZeHi5gj2{?q2DT3DjY zqw;*4Kl1#6VSwNEDOq3Fs^`lxLM9xBpPrv9(-Ft_rh*xW0Z6H7 z2(z@rz&hFb()+GF`r=~v68W!6p^C!4-bzbnM3v-AyeXBGrq0$FgbpJPG+4qSO_Nhy#W^u+_dvZoyPHb&i;XMn?7CpnW6iiXHIUnw&j( z_SI;6Ov#cH=dXPSgOQSn!(Qofbdw9i#ia@-0~22egl8k9FF2&_Li@=1YPV5xf0JkK z(WUMi@F(vvq)u1t>{ zT;GKzHpsR}xU-jEZq{rFZ~1*naU3@riILb!mc_0A>IVZP932%I+_sF5Ma1W_mtQ`F z7H$Z`Apsh27h)0~mvvMTztru|I)Pp(^X%0zN5sIb zqLGZyP$~qyexta;;}QVl;#s_WI_f9|ZV0ybT#QgdMX+V)(+Z11g%x4Cyq&rXwdO^j z8Kt#JU9aMC@M&ERL1G^v#64u;l?$aSuL2f<8GpBoR65HPn)Qt`U^KupdP|=ZQ7Vun zmR@mGggB3`BWizVIy|+PODc1&uHMU-Yx-mq{M@$UL@$ZZ&jSO1!4 zksP04k+^(;W(gInEcCNaO zO8V_I@TvTrq?T`{@R%vpuN_<#TQ#yBV5PYBI1Q|ZhC7?JCN+T?Q`=o!n_r96dp*Y! z#ql`&p{m4DLn(-_H1wsEFE>w$%2OB$^3oi(T-^3$2J2`h+9(|t-tR%aW~x{vm}amz@?_zpcd`|56*tUH@@ z+xzo}5~AixyhU z%*;f?FKjG#kw!ahPJ1+WVdHU!7wPoGSmJ?lx#c8-DaknwYI@zi!WaFTY8@*j{Zn93 z)8rYElaK_+%u?&abe>U{iLG5UrEL9C(C} zO{#2+N9U*M_aSzg?V4G(HTS1s=~k4oB?gm0B-em2oko^r~}{mpgZ3-oy! z403fKs*R%I`+>+a^%WGMb^;Fe5ZvWs@!I~2!dB5dY^K;{{%-cVaNP{I*$jf1o2+AW-B@-9XJC&}YR}?ZqcaKj|Rom9v+L2M*g% z9qOP=Ru`PSKg^nodhfz#J>WhvH))dUStCdX8w%y86fU`(ybFR z-be1_=ZhZX$MEG18F5Ob`>ZiN`q886s4h=}&Am=XSJ&lFd9x^IY zI|mlE7M#ti-~)1h_z?c6W){8$^yCPzW0oEm?_(CU>Q;!)>X5YGUsn8n7w$nV?L{=6 zu=L76WT2_u9oQ>t0$SM%P?dy}iS(zuVI6wWdvHht!w&PVn-YALyNP%R)Nf!)Ilfqm z>mc8vl5C3RX6U=4ONQmPb5DaJ-7uS~=&f@8F!}UpY0n2)oh9%b{nL7bx}A!DTkDod z-9YQtTlx9$U1fIzy~DJ+0W6p&&FJ2VwG0YkdL7YQbbPT%4G`Z&UuL!38kFwnm>% zr!I|KztPRqsM}4jxk+SoC$4aizo2_PKu@ms3F>*8gk@69&AV%kqaA64?MLbD#Bmgq zh!jO_zbRbT?Vbo_r#Fh#%^kWeM>Ytj6H{$u>2e`AhUnfb{|RiY}}!j1Sv{yuJb zAe%^+;jU$|wiX9rrS=1SEZSUbIu;_S0xke*Oqv1FU3rLRA`xqNN|BFdG*jEISx2NJ zeO8&Ju+#wahy@GdTkJAZW@h&IdLbt`v<XzomjCKzAP1yPxYXf2eEs*WpCUiRS;X;&2!lEMjkY%C&o;W(!1E6(al zxy$wo!prZ}(Bm3-u8gNl23sa+G3D`2S#TcDaoNAZZzWFoS&JTAH6vwymR(O?c9ss> z+ETtNVy%4MeyG*>#1%@t%p6C`Fp%mLRz3#67+h*hIP-vTw^Su)iEs<8_iWsuJJ#8U2-?|_6tewL8;5i&FMDy zHnAq~1hWKDJhveVGzKPX2#$svx(k*xMaZT}Mcbm2A6ES0#b9OboQJ9(CszxM-m2af znOI=juCU^0^*y&e&G5i+L4!<1qb^jfyyvCB^o$gpgZg%EXf~0d`7SB<2C=Zw+)$k24S>p0&u=|Q1Rxaga7OFgxhllb1;(DWlo6hwR` zbx)P_&YrzZrY+6%Fe#R4>s^+ISd4Fa>bJA{hp zI@H((fhlFtB?yGEKcAk#i5-zIy~2H5s68yqFyUcI^9s97LMVcLGL{FcAm@1x$%%nlL4wy_uU+cN3Uq2m&E9c9@<%;rvYT z3S{C@!yykaxgJ8#^0@kT4}m?u2GtzY1;JQbJHF^%VYAv%KZf`A{QT7i1=O!Y)`h0# zG}d50DZmVXx72_aPT(;Z;*J1-{*jB3bP85TdC@|C$FQ9p{+9)*qCt+k6N8#T()~0 zB+$@Z7pCEmk#Rks2zEQ)B5P{lk!nMF5vTX2+QJ{Nc*Za{_h|Jrl+NYP5ew>2X+^Ma za|G5`VVi&*icKfXq!ND9|0+J1UEhr`vLHUa*S}RGh%_IOb(R)IgdUmf%aT6D*_9gC0xE*IP>wA*`v`(6!88qmtw2@quX! z^Ye%X2eHtnn^!oLyQ546U)7{lD0-Eaf3TP}Plihj{j#u68@ow!G~B3PkLlZZApa)I#>zqz-z@}%vO2(_1(e2D;)ecd5o zI=N)%K+;;DlDSp{w#8Xl)giWVx{1W$0T-2yx4s9b)pYlCv024%OP=Trl@(R$@wcIZ zTqY+&O>g`_h0+&`j#z8dug%2RVQE8P0d1yB0l7r+Nwvu^@_l=l;2PJx$n{n*MSL%v zbQ8)#b8?_`2+?s}GE5r#u9t32N&_?46p;!kr+P6X6 zOtco;pYk8Xc!FKeIGKF&n)1CZ@~?C;vr|!4>rvo}Q+x2IBD;i)La{MHcRHR&EAQ`s^)L9&dIjA`r z@NNWRz^>z7DlQbU(G0K1D{TFu+{rQ&^S%!=8hA8wKEja4v|tT_1ddZYOf9b<{o5B8 z$dVPFVH4#^69bX-4vSA34~NX(%|Nj}(PG6%tM_GlxM3xU{+_8Lh1+Dh@8L*{Z1UKX|G#!*>y zg!SnA8k0GRcO(;eVa8@3o`FZd2I~rTw(X30nJA8zp?u{chm#&i;;k~N12HLqz|{2% z0dL}Wc@TzTj2NU2j{mb!3{eTCYOwfu

%%b02sr1XI^~!G0@c6?7O_qTu=)MMQNH zCMuu@A~n+aU>fFDDj>C7K5@e_bb?+B=TfGa?pErARGE`#_Ugt-|@YIsPE)x^id)EM>$%G z?q6wSSt*(KYO80DN=`05xd2y+3!hZzdlUiAOi$tFV|!6YjioBDUaNKf&6VL|1O8kD zvuGC7V8L+jWTeCM$(iTp8ZVIJBq38}#N;mxO!mZTOi;o|o1i2u7@=aCUUkP$h+`a4 zYXXn`0*SIs@;MBi0u7!l1Uul9iit5IU4YNR0)0w39;(#bB?H|s#5sF_4oFggviw)8 zy%Ehm|H9T)z9>wI90BJAFMC!1K=QLm`;HOW6r)J*xTWQ0n`m|75~es~R3YmWygwR1 zc(WfC2AW#~`M1V3lRNUos7_+z^JmO0GIPgZ9@7C1Ka#1KyZN zQLuV=_1A5gdmz{hODnwkmV{S-{L8*i5z|L+*_Xd&hVecUHvi|A5YsFCvtpz$ZiB>+ z;fePX4WU3jOu4Qi6uMrZ8e&>kGF9CG*<7lj%dhCWwBAsSgmF;ntIF@3FYvfrZkNB` z^uyObM--sxuZ)gGvFfa~-5K95SB>ic&HMl)uTQA6SL7tRGfbpaLi$!@%&J!#Yv6ZF z%3z0YMhO;vLX-{<+9@v;Uy80*d--sI6NDM-4e}56pW3wV$1YkKW@xlLZ((h zvWNRgy;3ME&BhCC&~gOoFJMp_$U%S^oLA|nl_h(jR7B_tJba+ECT>TrWF+#t^5>gm zgI12ev&Wg^5##TZJig(M08BJ$)T&YDk=$(+9g2bJ24(r{Bg`GTv~D9!g5J>vu^p&d zWOHgwB2_;GTkgHD%>B*=yxK+D*2cCt0Ze;#e$fptIp)Lr(g*Eyiw-0^_=XMKGL(Me z(!rKvj>8tMUY&JB!~V~P&@kWFmO5-z6+5ntYf4+21|}nGR=79v#diZwt|2N{=rADU z1X2RR{m^jpt9^~Sa}Vmns9iU{s$o}=U*?3|4AjF?ZW^ibC;VXAoY79Jq)_T41E?me z>s#cIBqD5vq4FTU-e-P~+m}mlhmP5e5^ZN4MsFGo=R2jf&)TEai^gb7a>3?LG!at( zfrXpp$Sov&0(NLF%Q`>DC>v;cU^TnNHcMXzQ>Y*0=s{(mw6Swvwp8!+e4Q5vG&TJm zOIvf+v5g4ty|DRgIT-G-d(6-KHgMZCbcHC{*xqldn!?cVhJoAoO+1MsC+v0k+~&hN z+{^>z@x05>;IAbn-2Ws+2I7C(hXQ#mnfKZycMn>F#(aY>zVD~srPQXpowUC61i_Q} z!PWU4DUwOR4U4C-ixmCd1*Ewb@744;+E*BFzl$+G%Ptn4`yaK8`r=Cq=1&>?e=Wt9l~dI(^@5qli<5K0zwMJxK2y8|NX{0N$0m2(zsH}TW>q1gj9 zse^m3q+2O=5@~!&OZ#}>u{6OSJzxtR#b6ac>|K>8hhj5=b5Mp?kz{U5hLjH@HXsBN zS^Ss68u4IwcVf%%BU{8|Tok<1$R``@zW4g)FSv|?`ZYZZfX9@6rEqcY>l2n_Pwr*v zInRXbVT%}sHSla=F~&Uhg!5NiamksBi{J=xR;j~Nv1RsS*EATM*^a#Ki{tyoz4~)G zc23teOE@MP9Cb&^n)|YcjbJFx8I$x;r%}#O6i=={Nz5q-~r|mcXlm+;R*)N&iNJj@(j)-UO9;kr3+(h`YnCYf`%KL zN_`-v;0lyLomF_5)0d3Fw-lli(d~e~N6adr@Oe$T-i4#=FMGD18n>E_!-hPU(`SLM%;*wA+e;Xvg`s zn{L2{vlUJJtlG0-W#SCGnByO>E(a~n{;~xpZiMnf zyx2KDalQYWr&*;YjK3RMgzywHfZhAc^>M|orpLDf_HAkM(P7iI5jf|eA-4tlIH3|u z0O8XRCx-CP{A5vNr-F7Vh%BRYNTPD_n{rH26k|4ma_S8t(4@nK-pexkQD!t&)aGyg z=K>aHm&GGL1`OPv9eR@*J8L>w&XSB$+F9~GYj8h@?e;(@RxTF5@W1fLXc;v7>Pv4_ zS5|AA(0X|K!&%nQY*RO|J>e`%cxa`pv%d_OnWau9T>9{e2)aZ8B5n5VA@Ecou&X*V z9{-FHeD|&R67cQ_z5eP5KLRbm|IpOQd1Eur0}c)@2<`;{C)j^p$scK(K^bUkdyegm z9eL(*1_uDZznAyc2)(5DwmEvf<(JRwAUT5@1HfJVO$jyId1{oE0pN2rz3Eem0B||D zQPZrAkrm%`MSo}u0C?rb^HlDRV&e#QHldy5(+yuD9fK%%!d`;mUSXgSnh7ZZmfXl- z_J-dq0e=ZeiL0!}3?wWe1t^j~aSYuMi8!VLSXol01#v@o2k#Oc+tFzcniJ>5hi@IGlNT~5_;idC)F z@f&*BMwX5IZZWPd)mCClpwk}!`!qCx8%q`gn&4QXJD};keJ_y;R6SEnBx3(PzmXW@ z+oPBYSu%8gE?Dv=Y!B~;5r`Je@ZEU_K=)TfaQ}_yAE#bQhFj*nOV!g_V5%^OdN&O& z1Q;V2nkbk=zCauiR#+=JeFjCPQj3IQ%Z8qS{v709F4#d7Eb;ktt-bZ?YW{A3%m+9U z<9UH9QM~O@7q*?v~b)*G>hJV-V79^KJ(-S1re3 z6E(WJxn(m4I+ijnWI?l=AC)?)4niX8VO+{>Z4azF{kVBj zl`IMH^Q$z<{L^}KLlw>*I9qJunI?#?OLP6GyU!beJuOupr2|?Q@-U*E`Hm4r@jhUt zB+r(9^m>K-73N1T=KB%+(A$3v^!$4RaP;^`YjyumtLgmr-fD}Aiu-jxH&aAJP~qGd zUwM@B>kX^8$`+DU(Kxh=ieA5sE{OA--bE&|Lu_O3^^t)QhCiKjpMUho+WB^c(Q1z; zKojDIWNu&4)pcTodh+Z^WtA1}RV<@x8xoA_W{Q*KF$P|rYA1Es`eqIifiOaVs09jW zP}(tmY0`HY*V3VjU-~}qLW3t>5toa|Jsh30l-cs;PcRP!5R|FQcb+e5`SR!oTi+TJ zy2IyaL~iE174tp!Vb}YrM7$P`ea|aZS{I=eswlYKKPnh61a28T*uA&V${YJP{!8M$ zW0g#L7jdLmkl1(+sk~!cNW>wsT!SdH0i5A2Fa1@e3X#ZSco@Zq{Fn^v^;lp10~@+* zej|T7n4w&Y0A?6^vF;E*>M-?;?9X0kWxOAOHx`zp2>Zwq+eiqpSt2m1fo zj{oj*j~;#>0zwIV1M%}Cht`&Ds|vPGZ*ndmhw9e=ciOBBpLLYy=uaW|o!5L0>_NVr zBi1K`jD9j-#l2rwgqLM=26X#_zqm23D=%>zqMtZrP*L9lAqOoi2eOV1zDt-lQEo3! zbOHM;^z44a#5`o9Bxk~Z>sC6c;A|(F#D2;+BqROD3Ol>LtCRh3EXQH>3g;mLWjnEV zsG*3NnCY{*!MAH=0mc!jLhwsKL21?QJr{{(#_OUCIine%%u^tQcBI+sC~IO^sO%sB z`T6|uxzycxg%D-qJ6#vA*6lrzkq>)F=q^ejby;$Cy6|XCB>S){l`2hc7b>)B%@srH z2<5!iW;JDX;LV>V(a_LzN|<++aC59q_NuET^+rE zbfS(yR$x)rXbz{0j0jZT+VNzWy8;w^{)`gW`cP)7VE(se|_X(!}3h26sDYahV;OgdGmC4G<%O&ueF z)cwxCpJ~*I+(t>S>6`A%SLY4v&%CW{pNsFoB56!`i0GAR)?~fwPrwICsS|B`s~-e) zxr~X^v->g{cAY1T$`^UgO-X3K#eQzbK2Ul+VE^e>#B${MXBegw30#Bmo%sG=sUy5o z|L8-oQL(YNH2haYyDX2)kH9SmiM2(EaT)k)ch3ft2n*)#{n2vSO<_O0n{#?55+=cNG>6vi zrH$4WT}a{)*m>6Gf}yjT+BKdDXjt=HXb!P8?0MM0+jHq$=*$M{(S@vdQ@QD-s7ry& zL2Ll;dv3JcRDJ=%*qPtZ(b`UfF@h4fbSHjtWI@x;Mn;vemBvL`722B7QAz(Rpu-e7 zbfa0kX*cV3dH_sg2c?dFM$F3!Dybrll4D{q*x8ZZF;Gi^FipO+)vGQyEvFz=v736p z{TVVl356xhnR?;Np)6Qy6c5y`Pv@Lt7YrdetcGfrL9HnmTqZIjKOQbp=&&;w2<%#$ zBLd%olqD)6>?2}7f?w3FVL>@;#pd9wB`Q&{_!NC$U^lc(Ge&pdLNYNKKeRy&x->anv!71bRywF9N561pIP43%vV0gG zBOxsrpo?l0xA8WL{FK3s*sj|%dS^tuVmH3k@~Y^NjzM26j%ZyG=cagsWU4?;`ed>$ zrqYZ$X}+&~J8w^W8%`@)y~sBouS}Hg`m#sTROL7&5pvepe=CPA3nQvbHICID)dtg- zCdqi1KCPQl_6e4IzA)d)8YZ=#qh<9{1%i~8vmNy@G{(rV-Ot37%dVUCpdvBd&?fd~ zdV0f!%e0r8Nluy3^Wh*ySS4M4onl?kc^~`xi9?-r*47y2X$C>E?vR52ruM}04fXx|>y?F!0IePiQ^w*ou}9>=waBw1Yrh03!ar4S2Bd#BNn z;I%}tDI`WHFJJy-{OGib#rWRG&?3P9c7^;neNuY%7Dk4OuC_-1Gc>vq^ z6a;#v98YV{;_0416HJ#JmJn>8la>4ANW-|@O~__YkkCx5N>&8bm5IW5mND^c&Rm1yxnEgehGsqxWG8LY_xPD*KBzzBb6$)PVPH_Yia#R7A~%3?pab zTj!sez}K>5OofDN4qOu)4BdmGocP0mTf|%>*JEimf}g|vsB&J6`y|dh)vx?78N|1I zMC9pn9x~RXh#;wXCjq!FL{au-_ny2+9C2AT9xUb46*7Za{^FKxPa-YB@vvia8}~A=DACH`V-9F?HLA59i_QUZ!Y6-*a^iBOO&Z?UMe^5`eq5$dU4+Ngus1XniEao2wNPO|h#XsFzU>G{B@~wbAGsEz9Mj^367s_EL`wejJ zy*8}@g-;S(D-*KYGt6?ZbPuZ1I+Bjt7cBrIwm`%{=|HvL&9{Px^z*0Ck;`5nJ_ZE& zQFg&?GljU&pdvr=8UUJ;UWi2NW60JzCVgEQjrCO6QKHdez_jeN{ev42K6xGEoSPsy%0b1w#5yQyCL(Hz|wmi*_UYH4KwLUL2F;c6cmv&r~Dl_??r9ik})F$--HIG0QZvYhZOq z?=EH1IKEPNb2vP?pFE)o3Z0`;FVP&ZOzp4*N=!9+!uG?Snq02rCcUyXQV%DwOrXq^ zGf22%RRBYzPeF@wGGi<8l&2P+<+`whJ=J1CdE5!0u%g*h`&|>1d$aN`;HJh2Z7G4@ zL%{!O|Nf`mH{GhEpZk%ls8P}8d`y_Tg2AX+KhUj`=si~^bedY6Calwq^vv*$qCe+~ zmQhX>Yy(=Sr*N3bQi^J`W+FH;s<6L$S(0?Q�^ zj{x!i_?*XSUhB8#n?a{ub}VeDR?E3%A z2+aXH%FQubJc?%lf{~@XB zPeUr*LgOpJbV;{pt$X(hp~kiu3FJI+XkMcavNqx&sj?#x85ChnTh|D0Fz_?K7UI6D62vY?RIR=^*i@dJ&FMJ zq|)~mfNO|)VllDM7)4nAC#CEJpi;j1zUflh(p;ee{7VNe$^yOw0l9>OK$jM=Gl>}p zBrvhtB)-)kl*U9|UNF^K9%X?Vq-z4tnSm`v3zsiNQHP0!o`h-+7;|7{ODD5*7Gv|p zxZedptxp=FWE1^i19{U02VsTqOYbjlN{9{VJv^m5YC=7f1RqMLOuEN8I~eXYYxY9k z#!)oDuRu9v45?F|T!-S~&ELwecD;J=?&Y=O`$k`(xgWj z&0z=Xh>D^u3O?g6&cmHZBJ2oSXdRc;K&pqV{W*|__9VM}T^#lceC92>&;~{b79+%sxW#|1%Po?lS){zHz-m3T1?ZF4xBHrU%W0C|wE@ zez8xaG%YpO;x)HF-QIti1o)+RO6>Xowk?JADv!Tb$vi@7C&YNbQvzfHhKOyl>Bs2H;`=W9FYLq`*^8bV7za!#*&V5fa z0m^2TkGkSA#og&$PQ@(2a%9COo=B~S<4*vwtG++?{tSH&^`RgdVjAC#x<|1-J>0wk zZ-9dc(C&_wO*YPff+9IqG*Ghqs@xK8m}?G0K%l`=d^z9NG7~kufFZz$z=PbZ zxju&Un{-(dRZywXl7f5zu+K`oPhsUrskOti7ACt1q;9A!8s#As^l5e#s62?RX|m_bZtUPK)SoT zQ$V^~x=XrI={`s!l1fXbgfs|9NlSN&bb|^={s+BR4oAJ~|27L2EY>`{@33cP&z}7} zQ+{_FA*-9yCZ|VpTVvwTwWxthj_8eYtRDY;u8h1MWvtc6VzQLWF!w23^nUCX_xS{x zlKWROsKMde0}Y6upWE<-qB>L|F9}@&drpVhfS^TzThp5HQ6^$*SSQv5nDT-t){{NN`~uGR0VUJ+Hxo?X-2e zm98@|Rh(4Rp7a?DHbYzv;?kdYGdmkUHOe}v)FG|DYmAGZYo#c4Juxe!|%`4mB+%T-9=X4ZHdXJ_;=nM6< zmF@ziXst#^_|-nirnfP#FP2E0z`UTmLrG9M?KG)vms0gKdowkuHzJWp4Gc2+7Z8s^Ood&ejeUFY3DsN!ONg}W4a$o_WgI|-7BPZ>ibfAAb@)nmW(HlnVoi!& zccZ*`e8t#{XRGxXe8vys-wNdGq38Nqlxzk*i3~s#jlHs}jmUy=bjWJ6ex<$^N&Mns z+OGxYdh*uy=nAO>zW5pN^Y6nA9r)XShTD(Iv7hg}qa|lcppMx%@Veb4m0N~jx-wg# z#m=tASvuKgnB{wQuD#CY=tWn4(j?2#9nX%w2n^Q%VbL<9neswZ>G(<0A(X)|*)nJZ zgivJ9XOpe>$lj*Uo|$h)>=ewX!61a>SS+|dS-5CCyWd^o>vKQ_fz&Di+mfxvh;(wRex=A)TtIXOXWj2^9xmpuJeiina)s3%`(0phT{ zKZ$vn|D>FrT#sx?GqQRpLp>QCoI) z4=87$2QoY;Shl+C3twSTsB(*Ds8|lL2FyP(`w$f_K()o5M)DAIEDA|meZTqWS>XyS z<)`r!s~9y;A;#z%AF#d8hh&D5=As?1(|43Tqd+BvguSZ zx*655UK2}IK*7RB5sYZcS^7)0NV6N!&KRmy9KPw}ntN{bBI8@E^V42U-0h;8uXlJl z%o-{263^L@BRM8lQKLhrw7ufi+*SJNV*GOgEVi73q>01fj8V38Dv7Pj>Az=dIP+*> zH>}M|f(G@Hl zlS6S&RSUbh3tz@>i&M49JssI$-K1#CG}fJv!N)&JXp8iwjmfM}gKx%_Un*Xsn!{wk z|7cc@-uoa*tyd>Vsb}^y=rZ%<+zDem$S6bvvxy^acL|z=@1;*xi?caM-e2 zBW6@mIlEdOFKrZ;6mUA#8v5>X4+oS5q$t4}zmrLI-6hUdm-!mkreXTU$fTA`cn7Dz zpkDN$QbNs1BiaV>IWmQkxD9NkfLDzxqn1&R<;7r}ma|uq0A@6Ssj>%~s5Vp^Zob%FWW-k;UI8 zjPk|Z%)${07s5&=D?jSsY3s-aOFndVqJt4LlRHJNRvRxch;2}JZJfh>aQ$8>HHB6RbBvC9QKr}fXSlHl=% zJ+tSrY@Y3`jSad`&}#3i$@C)=UFFgvnRL!Zy{isQh>FyUgm6&*Ihkn% za`^(kAx*;d!Wj;JXe@P-{3zN7qD1a^G5#H^iUUQ~0RWTjcucPjWrRApaa*_JdtB5j zR0;R_`$MvvcLJdeSjuQw2UJ9ORCk2u5R{?k?x)9akR!^sf8wuO9Y1!&E~v2m?yj&9 z{@zb>B0XGECBj_UR!tpIPo-&VV*d0~2g&<-KmF<`vz+!QE?O-!F3H%B6=$pMn~|?c z>iwyj10D%DkP_P`WyZ%qs>TKnBNiU<-8(~?7#WwIjODfvonEYujz^+&<7>v3G2vwoL1I@?|P)}%h+ z<3&>XUL|vQWWkT;0|a}P_`?Tl9!W7;p+yf${B`t7Lr)rHxjtGa`rIQ~a35C;LC=td zUVc!|Y(E)?8WeR}cZ$oiT^7=Q;&?%BS3- zc)hoP4uk@zDeuiI$D$A5vfwJIqj2d7Ae*UH(=kn9pED~_6Q4r}_3-K{kaj4z%=d54 z@Hia(JPc8Uhs!W1R^?Ktqt!!gk#p<)99Q9X&a0%RR-ccNG{HBrf}A19_Zlt5s!3U& zb8x#^BzzF%X)ZB$Q60OIfD)E5>M~j$2lw>qdx<=~O~4@HQN3bzgGnlyqSQc3iKiBR z>IaOO{sD#UCvUNNLa#F2iXwbVd(4_@)gSf*$)#HG!;yDU&!Y!jt)uZ7H?c+6kBmpx zthLveresiaOsPXpp;6VxJcp4fb2e^o_rH_7>)i;=uS(T5kc@eVsGq|qNN$3 z8kJXLh*Q31DG%^k(O|LeF^nJlh`9qv$a{!^kx$KkMnBh?*PoqxEo$>K1o)`Bpb88D zF717GsBM!&{BlThxTYxwjjWk8RGw95NI(tQ%jkRSwA$&JSA_Ql^}O@-EA2lid6Cc` z7fEz5M{@;z1#uNzy*95;>HpO0amQ5RgEju+lnUUN86ksn5BT&u0c1J4#dgV>DK2u5 zk9gmi?Iv+lZ*W=wwBpD-UOTW`j(r}zA0+-Ui&8PN#csyC5B2?)(=Kbf{gfS=p$m6$ zuAJiBW4m1rB(?Ez&5CayHa#RPc)zGSh*iy&F?AlUZ3NVLrJl~Z@YIFzI@1QjQPgc7 zc-8M|D?YKmZ#c0}9i$Rsq$NfeO6l%Upv*}N$y+KqmJYjUhb4pD4Iy7BZ6yt}NQ4EA z4-2)Qc2^+)+pi&rgO{O!F6iml;}e~CRV|Hht3e8Ca7FfQm0P(M2#f)A?X2>I=cUC& zTgEyj?GXaHQ*5t!wodhfUgMjR4+vV>cE zN-^G&VBgN4F!)>?4#!z+gS3di8t#=dg;)mQ^3KTnL3t$2^;A-Z^N^E?wgS13VQAXG zf&=KjkY)I=uj8iWfMb}Iw8Mw=_4qFhv+`+4_Kc>rLb2~XFUNJ{;yXe*RULi(DQn|G z6*^)GR`4GGXubiXy~fjg;`wugSk4~xM@*Lcm|vv&Q%O+YmtW~GubjMKx$=ml%5wBu zSy1A7@kv$21V-IT^FVnR?Gd2hc=*hB36T$X+|1(zE!{q#GR$&GD7IS=_NsE=^K*M|49-w8lt7v_<}cA|XSVl``HS`h1QlX2OY|?4{;) zr2iQ1-C`c_cx4Lizh+Pj;2>9fZ1&?!Sg1$D|Rs-Kx@%51`eal6f)6o zzSKbVX1!Z5gl~tWg8~1%11{L?uH3pk$Gg#!V6SoUVvtV<@D;ciz$cW7xd;A1yU18hmrxt ziY%`&-{#vt$WTqW0{ zd_&P&);c4Z%j{xD$KJ`o9w_g>P^Ui_rCOmUl}7epm22BAmpWUF#oze*Xk1vYzCY(j ze(};I^MVc~Zh1pUaZ9#uwp|@v7#TU_rRhVL5F%kv-P>fjW{hf+2oE;okr0e6tkPBM*L(OEo%FdLP~o;z^H;43d~-!^CMQ8+_fpM+ zginQ53NIx}7PXutsr2^Uu^WjmsTOSxJ<;8u?&Tn!E{8@7h|yK~$LSdMz+4B(y~>P^ zD&s$LY8%c|p96qJcT_O{<-^xiKR*|$e~&qoA3In8MNWVEa=hw{J^DjTeK=a>Y*Bv| ztGC52YL*O`4()@SY<3Nlqe+8C_^=#Ap&~>C+4Pcyz{09Ig|C(k z!rZ;)-o*tr`L=npee-g4*o8E89OJ%b5&()wkn|MmhZ%!B>SeUjDj2ahwi^xlE5phb z6B`xDlCO;43RL-qqVvtN;>9GQtPBxi>EfGbW#g|gPIVpZ(tRB3@y0xt@0#^5OV;o< zT(@Jcv(s9*XpmVFC`Cy>>G_=HnfS^F6Sk1ARL?$*%I3wRzI-ctUTd4e)}A*=L8!|@OGhI~d_odU z9SiW`yP(-THErovU)P5kDj9fO$7_`lHWpj&W<|T4Q()6mARDx3gd9xs)Ph~xHH(GN zkS;>OmhD+*D&(?g*JrXedWQ`ig%m9n%g=Z^A`JU$A4C(F3k+A#x2ot6efJUyqx5yS z+j^?#u##t>To*Is3Vn!Koh>$q(pA$KDflafI=6XfyaMJw`NwV(PN6>V>BRWJXiqMx z{g4l4BNUQxN!U9V)}VX_Cxqx2jpf~u5l8ht(af5gSLEn8%*z*#YR>Lv9jV83y0 z>%%<=aJC%fk&X8Jy5dAFGpr|^vV;&u8QnoXB>m8CTx7Z#BiO$c3b85D>*9Id*DAG# zYu(;aZE`jMiz{DD{E5$nIui_EKd4J5XAVB&E}@?<@Y*PquFvkk90>}`2@a#u`>@Lo zPt0>CV?;y|>+2{fV)~Kc|-QvHDNYfpt?0an*88 zRai_u48{3_^dSpORXVytg_9a@okxox=z_Fe61P?I3{DBo$upLUQe#=q}6FvYox z*${=t-7TZoeN z#)D@=8j#WT_=1#SY8_zgI7EktA%+`iglZf#)KK|BHcJC@6NW_xK$hexJ3GB7yXnNi zyWSYj+~(G#^o>wqqP7yxq?_k^br>KoTfcjw+)7G)c(ypU(E2oWQCBqQ_1(Q*?RN^w;A+8gR&p_Buzi=7kH@Q!d^e|3-&ch%k*j``3qoksWvg&q_l$dQwSyfOgnB#rZmdc1Ij_~kXp9>HPt~!-;7ANf0J(MwY~S+m-T;>7?Arf|`&Ds3{vVKQHIRtI5rH3(()%gsnbHt4BCfo7Ll%$ zzybna2%)fAqos#YTHCv(7St6}ACI;OnkjUi6^UcNeu?oqJoy3tEBDV-PslS6iY$1?!ZBstC|M?jgsLo?#v`{@V-xLTfbCo zB;uM`%U*e0!AguFx;>nfL+Dh+44J}RjSg)5;R`9g?l;*sT+a?>*1wreZlTlX0~`xW zGYipqRnMzx+_?p)4hXp9H?Y*8g*F2vU_3^%1!5#ta+~?o}!V z_~rAzN|y=M<+SIdrc}p4JrYZdBg>%@YdO(KvXs|5fe?&4==ZY{)tc?D6Z-P8?#oY6 z=sYAv!~WH1+=f00w1^D86^8jxH$s;*NmaCLiDkS5)BH2-BAh&O%+0V2N2W)K^Q_Cd zJ7fXQ$q|9!a86CiLcW=XS-o>MLkMKKh7Q5ce?dEByinn(oDMT|be zO)4f*+L~w(4s}r8#P*_!J0=~LVQ<0^X~$ABL$`p{o1~447E2w>5Fx3W=AU?c z+N}b!WMKUyzAr8>*hvy8+$Typoq?~H1>AwN>?e^OTiB!X zR{N9kspmhuRb$~wP7(Nj5cp5t!F34#(_1xw%I=TPAY1gh(K0mtfn{?Kx`{-uBzsPt4rKZF3CRI|Ov=eiN;mM&*(c zi6U#Tu0#r^2TXl;4jN>#5o>4lbHpUeM>^ojq9WerENb;>FUmC<9Djq)Q&2&6?8CZj zi)WWO*QT3^qF`T%+fgwv&Uaq_h@jX*27Q(3UE11?-S9})dsHvY$?s>aQ{~+D;Yl)f zgl*Q&oUE)RCeP9fP2$pX$wkUCOaQ|9yxr+hf=@=uBZoaYsi$#cc!?w+R4JpL?XpK4 z4NZJbye!`d$pvs~Q`w@&?B7Ky+K(zHDnx704*SH&j+WALe{+gPq=gV+_9bMjmyGGz zR9o|>@1akP0@6H@9?ng_wONY%bT8im)?K?J-GlfQ&xZ1pyRSUY9IjPU z1Ow9B-E=_FLq_9h<0KyI#KOr++vtt{E=&%IrgF6iV~P2fRC{dp0hPVgf0jmEa8M3{#`3wlNUKOI?E_;Tbm2Q8D?Z=m+o^YE^B zZz)qR(VgTZKRQcMHNkhl=jD@2`+6kS_^E5=2+${Z@LXOJl#J+VzdDuhrr$~SZJ1K>uAs@8avIoXPWAU92qowPks(<_*BnRjWEH4MnML|~?apdHhA9`h7 z^WU}yGDI-5mMG)ka+l}jHm;aiJ52-D{-Dj=eTq-i*hoRMbtI?VFabjX+Z?9+k4eK=qZvrU z1;pyMf|p#*mqXUm`2CIYopXAjThFY8g!-t(gv@E3N9<8S+w5uMKb*N-!9D2}cn8w$B)gJth zz@8Ix)?e>-S`M=@{HUccU|yujD;(4$Q_Prf%5{jnql1Yj@nxOJ#v#sBne_EYFw)j? zcm-4#0cIX;hP*mf&lgkJsZdG%e%Ec5j=_YBsTIPka(e48+|IVc;dIr5(isZuB|{cT zwNQ4}PanA?iZZ0*+a_;f3kQ0PU216-L+BJl`}!mC*IOU|SU6&6l}#M3lZyX2SzVWf zXqY{A|2biSFRV8-DM(4!=(5qwo}VPA|CuP2+lMI$YmTg-1j3C<0TQQVY+r8p%irmN z0p&*Z;&8Cjo)}ee(NHGOGvH@Ty6{t7;F84xOEE*I0op&6xTbT8_NXt%`Xh_%S*svKrdss)*ZjG zVPMGj3+7LET7W}=UOGT^g9H4I3LYHlFSI{!NKnE3>mc*SLJ+_p!R{^qM|uRJO@A9{ z0VtsG&wB!Ei+<`OfXelQBY|qTUuRNo>=LLgbA$AovOPEusL=WCt|tYO+-`vWAOH^z z1*+_QJ!9OMI8Z!N#QtwO>EJk^V%N8E(tyQlf57=i6&xG~RN?rV=6Pcyz*CanaegMA zz)?Vzc5gooH86(z9pzurIyerfkS5S=Kx`Q}1^nV!f;R(|3%Wg3C;$iCpENhY5!OI7 zI&ODE8YMWwjmXe%C?K*Dw_VqU4v6wcDTzOKD5xsHb;b9MUDE#z>6a)4_+x=`wy%W* zZY-4PFJQl91;DXD3B$Kvk(c#vSbu&+P@e7WE{9|PJKY%kc|fVC*Jq|ThR^YfF?qw# z1#b>YzP#qE-q-`qU(Nsg{Gdd^+p|j;*RQ6(re%-_4*VHF8FJUvfH#K60}k}7rV<E2+=1I;CRXTo3^2|F_yd8K0^gp|UI_y;_J1WGfa8GH&fdnslK6LX`~Ptg&|=ct z9mFUJhVxe+0j;aN?P!mre#iKy2o?N=K*s$y`5Rf82@b;j!0=K6QkB9%Z|Bqn{dJ1{l;U`r7ZGKZ;0RG28&wsAd z95>dW@yByZZ~)MZ`|at+Py63L|Hnfka3Ijc;qCBLNe>(dBwY^<1DajCy)X