From dc287772c5c1c3d9b44ad994172ec33522196b49 Mon Sep 17 00:00:00 2001 From: 875867418 Date: Sat, 25 Feb 2017 12:06:42 +0800 Subject: [PATCH 01/18] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=AC=AC=E4=B8=80?= =?UTF-8?q?=E5=91=A8=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- group10/875867419/.classpath | 6 + group10/875867419/.gitignore | 1 + group10/875867419/.project | 17 ++ .../src/com/work/week01/MyArrayList.java | 203 ++++++++++++++++++ .../src/com/work/week01/MyBinaryTree.java | 82 +++++++ .../src/com/work/week01/MyIterator.java | 6 + .../src/com/work/week01/MyLinkedList.java | 169 +++++++++++++++ .../875867419/src/com/work/week01/MyList.java | 11 + .../src/com/work/week01/MyQueue.java | 38 ++++ .../src/com/work/week01/MyStack.java | 43 ++++ ...4\344\270\232\345\234\260\345\235\200.txt" | 1 + 11 files changed, 577 insertions(+) create mode 100644 group10/875867419/.classpath create mode 100644 group10/875867419/.gitignore create mode 100644 group10/875867419/.project create mode 100644 group10/875867419/src/com/work/week01/MyArrayList.java create mode 100644 group10/875867419/src/com/work/week01/MyBinaryTree.java create mode 100644 group10/875867419/src/com/work/week01/MyIterator.java create mode 100644 group10/875867419/src/com/work/week01/MyLinkedList.java create mode 100644 group10/875867419/src/com/work/week01/MyList.java create mode 100644 group10/875867419/src/com/work/week01/MyQueue.java create mode 100644 group10/875867419/src/com/work/week01/MyStack.java create mode 100644 "group10/875867419/src/com/work/week01/\345\215\232\346\226\207\344\275\234\344\270\232\345\234\260\345\235\200.txt" diff --git a/group10/875867419/.classpath b/group10/875867419/.classpath new file mode 100644 index 0000000000..d171cd4c12 --- /dev/null +++ b/group10/875867419/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/group10/875867419/.gitignore b/group10/875867419/.gitignore new file mode 100644 index 0000000000..ae3c172604 --- /dev/null +++ b/group10/875867419/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/group10/875867419/.project b/group10/875867419/.project new file mode 100644 index 0000000000..b6d8ce6204 --- /dev/null +++ b/group10/875867419/.project @@ -0,0 +1,17 @@ + + + coding2017 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/group10/875867419/src/com/work/week01/MyArrayList.java b/group10/875867419/src/com/work/week01/MyArrayList.java new file mode 100644 index 0000000000..d005800d39 --- /dev/null +++ b/group10/875867419/src/com/work/week01/MyArrayList.java @@ -0,0 +1,203 @@ +package com.work.week01; + +import java.io.Serializable; +import java.util.Arrays; + +/** + * 实现List接口,以数组的方式实现自己的ArrayList + * @author denghuaijun + * + * @param + */ +public class MyArrayList implements MyList,Serializable { + + private static final long serialVersionUID = 4145346362382387995L; + + /** + * 设置默认大小 + */ + private static final int DEFAULT_CAPACITY = 10; + + /** + * 设置默认空数组 + */ + private static final Object[] EMPTY_ELEMENTDATA = {}; + + transient Object[] elementData; + + /** + * 大小 + */ + private int size; + + public MyArrayList(){ + this.elementData = EMPTY_ELEMENTDATA; + } + + public MyArrayList(int capacity){ + if(capacity > 0){ + this.elementData = new Object[capacity]; + }else if(capacity == 0){ + this.elementData = EMPTY_ELEMENTDATA; + }else{ + throw new IllegalArgumentException("非法参数"); + } + } + + private void ensureCapacity(int minCapacity){ + if(this.elementData == EMPTY_ELEMENTDATA){ + minCapacity = Math.max(minCapacity, DEFAULT_CAPACITY); + } + if(minCapacity > elementData.length){//索引位置大于现有数组长度 + grow(minCapacity); + } + } + + private void grow(int minCapacity){ + int oldCapacity = elementData.length; + int newCapacity = oldCapacity + (oldCapacity >> 1); + if(newCapacity < minCapacity){ + newCapacity = minCapacity; + } + elementData = Arrays.copyOf(elementData, newCapacity); + } + + @Override + public boolean add(E element) { + ensureCapacity(size + 1); + elementData[size++] = element; + return true; + } + + @Override + public void add(int index, E element) { + //确认index是否越界 + checkAddRange(index); + //确认数组长度是否足够 + ensureCapacity(size + 1); + System.arraycopy(elementData, index, elementData, index + 1, size - index); + elementData[index] = element; + size++; + } + + private void checkAddRange(int index){ + if(index < 0 || index > size){//index == size 则在数组最后加元素 + throw new IndexOutOfBoundsException("数组越界"); + } + } + + @SuppressWarnings("unchecked") + @Override + public E get(int index) { + checkRange(index); + return (E) elementData[index]; + } + + private void checkRange(int index){ + if(index < 0 || index >= size){ + throw new IndexOutOfBoundsException("数组越界"); + } + } + + @SuppressWarnings("unchecked") + @Override + public E remove(int index) { + checkRange(index); + E element = (E) elementData[index]; + int numMoved = size - index - 1; + if(numMoved > 0){ + System.arraycopy(elementData, index + 1, elementData, index, numMoved); + } + elementData[size--] = null; + return element; + } + + @Override + public int size() { + return size; + } + + @Override + public boolean isEmpty() { + return size == 0; + } + + public int indexOf(Object o) { + if(o == null){ + for(int i=0;i=0;i--){ + if(elementData[i] == null){ + return i; + } + } + }else{ + for(int i=size-1;i>=0;i--){ + if(o.equals(elementData[i])){ + return i; + } + } + } + return -1; + } + + @Override + public MyIterator iterator() { + return new MyIter(); + } + + private class MyIter implements MyIterator{ + + int flag = -1; + + public MyIter(){ + flag = size; //数组长度 + } + + @Override + public boolean hasNext() { + return flag > 0; + } + + @SuppressWarnings("unchecked") + @Override + public E next() { + if(!hasNext()){ + throw new IndexOutOfBoundsException("索引值超出数组范围"); + } + return (E) elementData[size-(flag--)]; + } + + } + public static void main(String[] args) { + MyArrayList array = new MyArrayList(); + array.add("1"); + array.add("2"); + array.add("3"); + array.add("4"); + array.remove(2); + array.add(2, "1"); + System.out.println("size="+array.size()); + System.out.println("indexOf(3)="+array.indexOf("3")); + System.out.println("lastIndexOf(1)="+array.lastIndexOf("1")); + MyIterator itr = array.iterator(); + while(itr.hasNext()){ + System.out.println(itr.next()); + } + } +} diff --git a/group10/875867419/src/com/work/week01/MyBinaryTree.java b/group10/875867419/src/com/work/week01/MyBinaryTree.java new file mode 100644 index 0000000000..8c6f057648 --- /dev/null +++ b/group10/875867419/src/com/work/week01/MyBinaryTree.java @@ -0,0 +1,82 @@ +package com.work.week01; + +public class MyBinaryTree { + + private MyBinaryTreeNode parent; + + public MyBinaryTree(){ + this.parent = new MyBinaryTreeNode(null, null, null); + } + + public void insertNode(E element){ + MyBinaryTreeNode node = new MyBinaryTreeNode(element, null, null); + if(parent.element == null){ + parent = node; + return; + } + insertNode(parent, node); + } + + private void insertNode(MyBinaryTreeNode parentNode, MyBinaryTreeNode newNode){ + if(parentNode.compareTo(newNode) <= 0){// + if(parentNode.right == null){ + parentNode.right = newNode; + }else{ + insertNode(parentNode.right, newNode); + } + }else{ + if(parentNode.left == null){ + parentNode.left = newNode; + }else{ + insertNode(parentNode.left, newNode); + } + } + } + + private void printNode(MyBinaryTreeNode node, int count){ + if(node.left != null){ + printNode(node.left, count++); + } + if(node.right != null){ + printNode(node.right, count++); + } + for(int i=0;i implements Comparable> { + + private T element; + private MyBinaryTreeNode left; + private MyBinaryTreeNode right; + + public MyBinaryTreeNode(T element, MyBinaryTreeNode left, MyBinaryTreeNode right){ + this.element = element; + this.left = left; + this.right = right; + } + + @Override + public int compareTo(MyBinaryTreeNode o) { + Integer src = (Integer) this.element; + Integer dest = (Integer) o.element; + return src.compareTo(dest); + } + } + + public static void main(String[] args) { + MyBinaryTree tree = new MyBinaryTree(); + tree.insertNode(5); + tree.insertNode(7); + tree.insertNode(3); + tree.insertNode(9); + tree.insertNode(4); + tree.printTree(); + } +} diff --git a/group10/875867419/src/com/work/week01/MyIterator.java b/group10/875867419/src/com/work/week01/MyIterator.java new file mode 100644 index 0000000000..78abc20f23 --- /dev/null +++ b/group10/875867419/src/com/work/week01/MyIterator.java @@ -0,0 +1,6 @@ +package com.work.week01; + +public interface MyIterator { + boolean hasNext(); + E next(); +} diff --git a/group10/875867419/src/com/work/week01/MyLinkedList.java b/group10/875867419/src/com/work/week01/MyLinkedList.java new file mode 100644 index 0000000000..675323a249 --- /dev/null +++ b/group10/875867419/src/com/work/week01/MyLinkedList.java @@ -0,0 +1,169 @@ +package com.work.week01; + +import java.io.Serializable; + + +public class MyLinkedList implements MyList, Serializable{ + + private static final long serialVersionUID = 8700137302944494769L; + + transient int size = 0; + + transient MyNode head; + transient MyNode last; + + public MyLinkedList(){ + head = new MyNode(null, null); + last = new MyNode(null, null); + } + + @Override + public boolean add(E element) { + if(head.element == null){ + head = new MyNode(element, null); + last = head; + }else{ + MyNode node = new MyNode(element, null); + last.next = node; + last = node; + } + size++; + return true; + } + + @Override + public void add(int index, E element) { + if(index < 0 || index -size > 0){ + throw new IndexOutOfBoundsException("超出链表长度"); + } + if(index == 0){ + MyNode node = new MyNode(element, null); + node.next = head; + head = node; + }else{ + MyNode leftNode = getIndexNode(index-1); + MyNode node = new MyNode(element, null); + node.next = leftNode.next; + leftNode.next = node; + } + size++; + } + + private MyNode getIndexNode(int index){ + MyNode node = head; + for(int i=0; i= 0){ + throw new IndexOutOfBoundsException("超出链表长度"); + } + MyNode node = getIndexNode(index); + return node.element; + } + + @Override + public E remove(int index) { + if(index < 0 || index >= size){ + throw new IndexOutOfBoundsException("超出链表长度"); + } + if(index == 0){//移除头结点 + MyNode node = head; + head = head.next; + node.next = null; + size--; + return node.element; + }else{ + MyNode leftNode = getIndexNode(index-1); + MyNode node = leftNode.next; //欲移除的节点 + leftNode.next = node.next; + node.next = null; + size--; + return node.element; + } + } + + @Override + public int size() { + return size; + } + + @Override + public boolean isEmpty() { + return size == 0; + } + + public void addFirst(E element){ + add(0, element); + } + + public void addLast(E element){ + add(size, element); + } + + public void removeFirst(){ + remove(0); + } + + public void removeLast(){ + remove(size-1); + } + + private static class MyNode{ + E element; + MyNode next; + + MyNode(E element, MyNode next) { + this.element = element; + this.next = next; + } + + } + + @Override + public MyIterator iterator() { + return new MyIter(); + } + + private class MyIter implements MyIterator{ + + int flag = 0; + + public MyIter(){ + flag = size; + } + + @Override + public boolean hasNext() { + return flag > 0; + } + + @Override + public E next() { + if(!hasNext()){ + throw new IndexOutOfBoundsException("索引值超出链表范围"); + } + return get(size-(flag--)); + } + } + + public static void main(String[] args) { + MyLinkedList link = new MyLinkedList(); + link.add("1"); + link.add("2"); + link.add("3"); + link.add("4"); + link.add(3, "1"); + link.removeFirst(); + System.out.println("size="+link.size()); + MyIterator itr = link.iterator(); + while(itr.hasNext()){ + System.out.println(itr.next()); + } + link.remove(4); + } +} diff --git a/group10/875867419/src/com/work/week01/MyList.java b/group10/875867419/src/com/work/week01/MyList.java new file mode 100644 index 0000000000..f7cc918888 --- /dev/null +++ b/group10/875867419/src/com/work/week01/MyList.java @@ -0,0 +1,11 @@ +package com.work.week01; + +public interface MyList{ + boolean add(E element); + void add(int index, E element); + E get(int index); + E remove(int index); + int size(); + boolean isEmpty(); + MyIterator iterator(); +} diff --git a/group10/875867419/src/com/work/week01/MyQueue.java b/group10/875867419/src/com/work/week01/MyQueue.java new file mode 100644 index 0000000000..97bca5399a --- /dev/null +++ b/group10/875867419/src/com/work/week01/MyQueue.java @@ -0,0 +1,38 @@ +package com.work.week01; + +public class MyQueue { + private MyArrayList elementData; + + public MyQueue(){ + elementData = new MyArrayList(); + } + + public void enQueue(E element){//入队 + elementData.add(element); + } + + public E deQuene(){//出队 先进先出 + return elementData.remove(0); + } + + public int size(){ + return elementData.size(); + } + + public boolean isEmpty(){ + return elementData.isEmpty(); + } + + public static void main(String[] args) { + MyQueue queue = new MyQueue(); + queue.enQueue("1"); + queue.enQueue("2"); + queue.enQueue("3"); + queue.enQueue("4"); + queue.enQueue("5"); + System.out.println("size="+queue.size()); + while(!queue.isEmpty()){ + System.out.println(queue.deQuene()); + } + } +} diff --git a/group10/875867419/src/com/work/week01/MyStack.java b/group10/875867419/src/com/work/week01/MyStack.java new file mode 100644 index 0000000000..f82bbe04c1 --- /dev/null +++ b/group10/875867419/src/com/work/week01/MyStack.java @@ -0,0 +1,43 @@ +package com.work.week01; + +public class MyStack { + private MyArrayList elementData; + + public MyStack(){ + elementData = new MyArrayList<>(); + } + + public void push(E element){ + elementData.add(element); + } + + public E pop(){ //移除栈顶元素 后进先出 + return elementData.remove(elementData.size() - 1); + } + + public E peek(){ //获取栈顶元素 + return elementData.get(elementData.size() - 1); + } + + public int size(){ + return elementData.size(); + } + + public boolean isEmpty(){ + return elementData.isEmpty(); + } + + public static void main(String[] args) { + MyStack stack = new MyStack(); + stack.push("1"); + stack.push("2"); + stack.push("3"); + stack.push("4"); + stack.push("5"); + System.out.println("size="+stack.size()); + System.out.println("peek栈顶元素="+stack.peek()); + while(!stack.isEmpty()){ + System.out.println("pop栈顶元素"+stack.pop()); + } + } +} diff --git "a/group10/875867419/src/com/work/week01/\345\215\232\346\226\207\344\275\234\344\270\232\345\234\260\345\235\200.txt" "b/group10/875867419/src/com/work/week01/\345\215\232\346\226\207\344\275\234\344\270\232\345\234\260\345\235\200.txt" new file mode 100644 index 0000000000..5c63425fba --- /dev/null +++ "b/group10/875867419/src/com/work/week01/\345\215\232\346\226\207\344\275\234\344\270\232\345\234\260\345\235\200.txt" @@ -0,0 +1 @@ +博文作业地址:https://my.oschina.net/u/3080511/blog/846172 \ No newline at end of file From ea664afb3f3ae64eead08ab0014ab700258b94d0 Mon Sep 17 00:00:00 2001 From: Mori <1363044717@qq.com> Date: Sat, 25 Feb 2017 19:27:24 +0800 Subject: [PATCH 02/18] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E4=BA=A4=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ArrayList.java" | 119 +++++++++++++ .../BinaryTreeNode.java" | 68 ++++++++ .../Iterator.java" | 6 + .../JavaTest.java" | 62 +++++++ .../LinkedList.java" | 165 ++++++++++++++++++ .../List.java" | 10 ++ .../Queue.java" | 30 ++++ .../Stack.java" | 30 ++++ 8 files changed, 490 insertions(+) create mode 100644 "group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/ArrayList.java" create mode 100644 "group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/BinaryTreeNode.java" create mode 100644 "group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/Iterator.java" create mode 100644 "group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/JavaTest.java" create mode 100644 "group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/LinkedList.java" create mode 100644 "group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/List.java" create mode 100644 "group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/Queue.java" create mode 100644 "group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/Stack.java" diff --git "a/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/ArrayList.java" "b/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/ArrayList.java" new file mode 100644 index 0000000000..620e8ead95 --- /dev/null +++ "b/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/ArrayList.java" @@ -0,0 +1,119 @@ +package com.coding.basic; + +import java.lang.reflect.Array; +import java.util.Arrays; +import java.util.NoSuchElementException; + +public class ArrayList implements List { + + private int size = 0; + + private Object[] elementData; + + //榛樿瀹归噺 + private static final int DEFAULT_CAPACITY = 10; + + public ArrayList(int capacity){ + if(capacity >= 0){ + elementData = new Object[capacity]; + }else { + throw new IllegalArgumentException("Illegal Capacity: " + + capacity); + } + + } + public ArrayList(){ + this(DEFAULT_CAPACITY); + } + + /** + * 淇濊瘉闆嗗悎瀹归噺 + * @param minCapacity + */ + private void ensureCapacity(int minCapacity){ + int oldCapacity = elementData.length; + if(minCapacity > oldCapacity){ + //鎵╁ + int newCapacity = oldCapacity + (oldCapacity >> 1) + 1; + if(minCapacity - newCapacity > 0){ + newCapacity = minCapacity; + } + elementData = Arrays.copyOf(elementData, newCapacity); + } + } + private void checkIndexRange(int index) + { + if(index >= size || index < 0) + { + throw new IndexOutOfBoundsException("Index out of bounds, index : " + index); + } + } + public void add(E o){ + ensureCapacity(size+1); + elementData[size++] = o; + } + public void add(int index, E o){ + checkIndexRange(index);//妫鏌ヤ笅鏍 + ensureCapacity(size+1);//淇濊瘉鏁扮粍瀹归噺 + System.arraycopy(elementData,index,elementData,index + 1,size-index);//鏁扮粍澶嶅埗,鎶奿ndex鍚庣殑鍏冪礌鍏ㄩ儴鍚戝悗绉讳竴浣 + elementData[index] = o;//鎻掑叆鍏冪礌鍊 + size++;//鍏冪礌size鍔犱竴 + } + + @Override + public E get(int index) { + checkIndexRange(index);//妫鏌ヤ笅鏍 + return (E)elementData[index]; + } + + @Override + public E remove(int index) { + E e = this.get(index); + int numMoved = size - index - 1; + if(numMoved > 0) + { + System.arraycopy(elementData, index+1, elementData, index, numMoved);//鏁扮粍澶嶅埗,鎶奿ndex鍚庣殑鍏冪礌鍏ㄩ儴鍚戝墠绉讳竴浣 + } + elementData[--size] = null;//鏈鍚庝竴浣嶈祴鍊间负null锛宻ize-1 + return e; + } + + + public int size(){ + return size; + } + + @Override + public boolean isEmpty() { + return size == 0; + } + + public Iterator iterator(){ + return new ArrayListIterator(this); + } + + private class ArrayListIterator implements Iterator{ + + private Object [] array; + private int endIndex = 0; + private int index = 0; + + public ArrayListIterator(ArrayList list){ + this.array=list.elementData; + this.endIndex = list.size(); + } + @Override + public boolean hasNext() { + return this.index < this.endIndex; + } + + @Override + public E next() { + if(!this.hasNext()) { + throw new NoSuchElementException();//娌℃湁鍏冪礌浜 + } else { + return (E)Array.get(this.array, this.index++); + } + } + } +} diff --git "a/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/BinaryTreeNode.java" "b/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/BinaryTreeNode.java" new file mode 100644 index 0000000000..a1653b6e9f --- /dev/null +++ "b/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/BinaryTreeNode.java" @@ -0,0 +1,68 @@ +package com.coding.basic; + + +public class BinaryTreeNode implements Comparable { + public BinaryTreeNode(Object data) { + this.data = data; + } + + private Object data; + private BinaryTreeNode left; + private BinaryTreeNode right; + + public Object getData() { + return data; + } + + public void setData(Object data) { + this.data = data; + } + + public BinaryTreeNode getLeft() { + return left; + } + + public void setLeft(BinaryTreeNode left) { + this.left = left; + } + + public BinaryTreeNode getRight() { + return right; + } + + public void setRight(BinaryTreeNode right) { + this.right = right; + } + + public BinaryTreeNode insert(Object o) { + //宸﹀瓙鑺傜偣鐨勫兼案杩滄瘮鐖惰妭鐐圭殑鍊煎皬 + //鍙冲瓙鑺傜偣鐨勫兼案杩滄瘮鐖惰妭鐐圭殑鍊煎ぇ + BinaryTreeNode node = new BinaryTreeNode(o); + insertNode(node); + return node; + } + private void insertNode(BinaryTreeNode node){ + insertNode(this,node); + } + private void insertNode(BinaryTreeNode parentNode, BinaryTreeNode node) { + if (parentNode.compareTo(node) <= 0) {//鏁板瓧澶т簬鐖惰妭鐐 + if (parentNode.right == null) { + parentNode.right = node; + return; + } + insertNode(parentNode.right, node); + } else { + if (parentNode.left == null) { + parentNode.left = node; + return; + } + insertNode(parentNode.left, node); + } + } + + @Override + public int compareTo(BinaryTreeNode o) { + Integer i = (Integer) this.data; + return i.compareTo((Integer) o.data); + } +} diff --git "a/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/Iterator.java" "b/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/Iterator.java" new file mode 100644 index 0000000000..09e5b73661 --- /dev/null +++ "b/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/Iterator.java" @@ -0,0 +1,6 @@ +package com.coding.basic; + +public interface Iterator { + public boolean hasNext(); + public E next(); +} diff --git "a/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/JavaTest.java" "b/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/JavaTest.java" new file mode 100644 index 0000000000..208fa8390d --- /dev/null +++ "b/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/JavaTest.java" @@ -0,0 +1,62 @@ +package com.coding.basic; + +import org.junit.Assert; +import org.junit.Test; + +/** + * Created by Mori on 2017/2/21. + */ +public class JavaTest { + @Test + public void testBinaryTreeNode(){ + BinaryTreeNode node = new BinaryTreeNode(5); + node.insert(4);//宸 + node.insert(7);//鍙 + node.insert(2);//宸﹀乏 + node.insert(6);//鍙冲乏 + node.insert(5);//鍙冲乏宸 + node.insert(6);//鍙冲乏鍙 + System.out.println(node.getData()); + System.out.println(node.getLeft().getData()); + System.out.println(node.getRight().getData()); + System.out.println(node.getLeft().getLeft().getData()); + System.out.println(node.getRight().getLeft().getData()); + System.out.println(node.getRight().getLeft().getLeft().getData()); + System.out.println(node.getRight().getLeft().getRight().getData()); + } + @Test + public void testArrayList(){ + ArrayList list =new ArrayList<>(); + list.add(1); + list.add(2); + list.add(3); + list.add(5); + Assert.assertEquals((Object) list.get(2),3); + Assert.assertEquals((Object) list.remove(2),3); + Assert.assertEquals((Object) list.get(2),5); + Iterator listIterator = list.iterator(); + while (listIterator.hasNext()){ + System.out.println(listIterator.next()); + } + } + @Test + public void testLinkedList(){ + LinkedList linkedList = new LinkedList<>(); + linkedList.add(1); + linkedList.add(2); + linkedList.add(5); + linkedList.addFirst(10); + linkedList.add(1,6); + // linkedList.removeLast(); + //linkedList.removeFirst(); + Iterator linkedListIterator = linkedList.iterator(); + while (linkedListIterator.hasNext()){ + System.out.println(linkedListIterator.next()); + } + System.out.println("----"); + System.out.println(linkedList.remove(0)); + System.out.println(linkedList.remove(2)); + //System.out.println(linkedList.get(3)); + //System.out.println(linkedList.get(4)); + } +} \ No newline at end of file diff --git "a/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/LinkedList.java" "b/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/LinkedList.java" new file mode 100644 index 0000000000..760fec91e9 --- /dev/null +++ "b/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/LinkedList.java" @@ -0,0 +1,165 @@ +package com.coding.basic; + +import jdk.nashorn.internal.ir.ReturnNode; + +import java.lang.reflect.Array; +import java.util.NoSuchElementException; + +public class LinkedList implements List { + + private Node head;//閾捐〃鐨勫ご + private Node tail;//閾捐〃鐨勭粨灏 + private int size;//璁板綍褰撳墠鍏冪礌鐨剆ize + + public void add(E e) { + Node node = new Node(e); + if (head == null) { + head = node; + } else { + tail.next = node; + } + tail = node; + tail.next = null; + size++; + } + + private void checkIndexRange(int index) { + if (index < 0 || index >= size) { + throw new IndexOutOfBoundsException(); + } + } + + public void add(int index, E e) { + checkIndexRange(index); + Node node = new Node(e); + Node temp = head; + Node temp2 = null; + for (int i = 0; i < index - 1; i++) { + temp = temp.next; + } + temp2 = temp.next; + temp.next = node; + node.next = temp2; + size++; + } + + @Override + public E get(int index) { + checkIndexRange(index); + Node temp = head; + + for (int i = 0; i < index; i++) { + temp = temp.next; + } + return (E) temp.data; + } + + @Override + public E remove(int index) { + checkIndexRange(index); + if (index == 0) { + E e = removeFirst(); + return e; + } + if (index == size) { + E e = removeLast(); + return e; + } + Node temp = head; + Node temp2 = null; + for (int i = 0; i < index - 1; i++) { + temp = temp.next; + } + E e = (E) temp.next.data; + temp2 = temp.next.next; + temp.next = null; + temp.next = temp2; + size--; + return e; + } + + public int size() { + return size; + } + + @Override + public boolean isEmpty() { + return size == 0; + } + + public void addFirst(E e) { + Node node = new Node(e); + node.next = head; + head = node; + size++; + } + + public void addLast(E e) { + this.add(e); + } + + public E removeFirst() { + E e = (E) head.data; + head = head.next; + size--; + return e; + } + + public E removeLast() { + Node temp = head; + for (int i = 0; i < size - 1; i++) { + temp = temp.next; + } + temp.next = null; + E e = (E) tail.data; + tail = temp; + size--; + return e; + } + + public Iterator iterator() { + return new LinkedListIterator(this); + } + + private static class Node { + E data; + Node next; + public Node(E e) { + this.data = e; + } + } + private class LinkedListIterator implements Iterator{ + + private Node head;//閾捐〃鐨勫ご + private Node tail;//閾捐〃鐨勭粨灏 + private Node node;//褰撳墠閬嶅巻鐨刵ode + private int index; + private int endIndex; + + public LinkedListIterator(LinkedList list){ + this.head=list.head; + this.tail=list.tail; + this.endIndex = list.size(); + node=head; + } + @Override + public boolean hasNext() { + return this.index < this.endIndex; + } + + @Override + public E next() { + if(!this.hasNext()) { + throw new NoSuchElementException();//娌℃湁鍏冪礌浜 + } else { + if(index == 0){ + node = head; + }else { + node = node.next; + } + index++; + return (E)node.data; + } + } + } +} diff --git "a/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/List.java" "b/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/List.java" new file mode 100644 index 0000000000..899ba2bd3e --- /dev/null +++ "b/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/List.java" @@ -0,0 +1,10 @@ +package com.coding.basic; + +public interface List { + public void add(E o); + public void add(int index, E o); + public E get(int index); + public E remove(int index); + public int size(); + boolean isEmpty(); +} diff --git "a/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/Queue.java" "b/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/Queue.java" new file mode 100644 index 0000000000..a8d5741846 --- /dev/null +++ "b/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/Queue.java" @@ -0,0 +1,30 @@ +package com.coding.basic; + +public class Queue { + + private LinkedList elementData = new LinkedList(); + + /** + * 杩涢槦鍒 + * @param o + */ + public void enQueue(E o){ + elementData.addLast(o);//娣诲姞鍒伴槦灏 + } + + /** + * 鍑洪槦鍒 + * @return + */ + public E deQueue(){ + return elementData.removeFirst();//绉婚櫎闃熼 + } + + public boolean isEmpty(){ + return elementData.isEmpty(); + } + + public int size(){ + return elementData.size(); + } +} diff --git "a/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/Stack.java" "b/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/Stack.java" new file mode 100644 index 0000000000..de407c8548 --- /dev/null +++ "b/group10/1363044717/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232(\346\225\260\346\215\256\347\273\223\346\236\204)/Stack.java" @@ -0,0 +1,30 @@ +package com.coding.basic; + +public class Stack { + + private ArrayList elementData = new ArrayList(); + public void push(E o){ + elementData.add(o); + } + + /** + * 绉婚櫎鏍堥《骞惰繑鍥炰粬 + * @return + */ + public E pop(){ + return elementData.remove(elementData.size()-1); + } + /** + * 寰楀埌鏍堥《鍏冪礌 + * @return + */ + public E peek(){ + return elementData.get(elementData.size()-1); + } + public boolean isEmpty(){ + return elementData.isEmpty(); + } + public int size(){ + return elementData.size(); + } +} From 4baf9c1add0b51d5ec268a12821a5f6c61e51e10 Mon Sep 17 00:00:00 2001 From: AllenLink <3168592570@qq.com> Date: Sat, 25 Feb 2017 23:03:19 +0800 Subject: [PATCH 03/18] FirstHomework --- group10/3314793852/.classpath | 6 + group10/3314793852/.gitignore | 1 + group10/3314793852/.project | 17 +++ .../3314793852/src/myList/MyArrayList.java | 103 +++++++++++++++ .../src/myList/MyBinarySearchTree.java | 113 ++++++++++++++++ group10/3314793852/src/myList/MyIterator.java | 40 ++++++ .../3314793852/src/myList/MyLinkedList.java | 122 ++++++++++++++++++ group10/3314793852/src/myList/MyQueue.java | 60 +++++++++ group10/3314793852/src/myList/MyStack.java | 48 +++++++ group10/3314793852/src/myList/Test.java | 26 ++++ 10 files changed, 536 insertions(+) create mode 100644 group10/3314793852/.classpath create mode 100644 group10/3314793852/.gitignore create mode 100644 group10/3314793852/.project create mode 100644 group10/3314793852/src/myList/MyArrayList.java create mode 100644 group10/3314793852/src/myList/MyBinarySearchTree.java create mode 100644 group10/3314793852/src/myList/MyIterator.java create mode 100644 group10/3314793852/src/myList/MyLinkedList.java create mode 100644 group10/3314793852/src/myList/MyQueue.java create mode 100644 group10/3314793852/src/myList/MyStack.java create mode 100644 group10/3314793852/src/myList/Test.java diff --git a/group10/3314793852/.classpath b/group10/3314793852/.classpath new file mode 100644 index 0000000000..fb5011632c --- /dev/null +++ b/group10/3314793852/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/group10/3314793852/.gitignore b/group10/3314793852/.gitignore new file mode 100644 index 0000000000..ae3c172604 --- /dev/null +++ b/group10/3314793852/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/group10/3314793852/.project b/group10/3314793852/.project new file mode 100644 index 0000000000..e09255853a --- /dev/null +++ b/group10/3314793852/.project @@ -0,0 +1,17 @@ + + + FirstWeek + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/group10/3314793852/src/myList/MyArrayList.java b/group10/3314793852/src/myList/MyArrayList.java new file mode 100644 index 0000000000..7b5a883190 --- /dev/null +++ b/group10/3314793852/src/myList/MyArrayList.java @@ -0,0 +1,103 @@ +package myList; + +/* + * ArrayList的底层是一个数组,通过重新创建新数组的方法,动态扩大数组的容量。 + * 该ArrayList不允许隔空插入数据。 + */ + +public class MyArrayList { + private int theSize; //当前大小 + private static final int DEFAULT_CAPACITY=10; //默认容量 + private Object[] theArr=new Object[10]; //底层数组 + + //初始化 + public MyArrayList(){ + clear(); + } + + //清空 + public void clear(){ + theSize=0; + capacityBigger(DEFAULT_CAPACITY); + } + + //获取大小 + public int size(){ + return theSize; + } + + //获取底层数组 + public Object[] getArr(){ + return theArr; + + } + //插入,直接插入到数组尾部。 + public void add(Object a){ + add(theSize, a); + } + + //根据下标获取数据 + public Object get(int i){ + if(i<0||i>=theSize){ + throw new ArrayIndexOutOfBoundsException(); + } + return theArr[i]; + } + + //插入,根据指定下标插入。 + public void add(int i,Object a){ + + if(theSize==theArr.length){ //开始容量为10,每当成功添加了一个数据时,则size+1,当size和数组的大小相同时,则调用数组扩大方法,动态扩大数组的大小。 + capacityBigger(size()); + } + for(int j=theSize-1;j>=i;j--){ + theArr[j+1]=theArr[j]; + } + theArr[i]=a; + + theSize++; + } + + //删除,根据下标删除数据。 + public void remove(int i){ + + for(int j=i;j0){ + return contains(x,aNode.left); + } + else if(comparaResult<0){//当数据大于当前节点的数据时,则该数据应该在当前节点的右孩子节点中。 + return contains(x,aNode.right); + } + else{ //当数据等于当前节点的数据时,则该数据应该在当前节点中。 + return true; + } + } + + //插入数据。 + public void insert(Object x){ + root=insert(x,root); + } + + public BinaryNode insert(Object x,BinaryNode aNode){ + + if(aNode==null){//当前为新的数据节点,因为是叶子节点,所以左右节点为null. + return new BinaryNode(x,null,null); + } + + //和当前的节点进行比较。 + Integer comparaResult=(Integer)aNode.element-(Integer)x; + + //当数据小于当前节点的数据时,则该数据应该在当前节点的左孩子节点中。 + if(comparaResult>0){ + aNode.left= insert(x,aNode.left); + } + else if(comparaResult<0){//当数据大于当前节点的数据时,则该数据应该在当前节点的右孩子节点中。 + aNode.right=insert(x,aNode.right); + } + else{ //当数据等于当前节点的数据时,则该数据应该在当前节点中,则不做任何操作。 + ; + } + return aNode; + } + + //打印出二叉树。 + public void getData(){ + getData(root); + } + public void getData(BinaryNode root){ + if (root != null) { + //左孩子 + this.getData(root.left); + + //右孩子 + this.getData(root.right); + //父节点 + this.print(root); + } + + } + + //打印节点。 + public void print(BinaryNode root){ + System.out.println( + (Integer)(root.element) + ); + } + } diff --git a/group10/3314793852/src/myList/MyIterator.java b/group10/3314793852/src/myList/MyIterator.java new file mode 100644 index 0000000000..8c97809af8 --- /dev/null +++ b/group10/3314793852/src/myList/MyIterator.java @@ -0,0 +1,40 @@ + + package myList; + + public class MyIterator { + + private Object aData; + private int i=0; + private int l=0; + MyLinkedList.Node node; + public MyIterator(Object aDate){ + this.aData=aDate; + } + + public boolean hasNext(){ + if(aData instanceof MyArrayList){//MyArrayList的Iterator + + Object[] arr=((MyArrayList) aData).getArr(); + int a=((MyArrayList)aData).size(); + return a>i; + } + else{//MyLinkedList的Iterator + node=((MyLinkedList)aData).getHeadNode();//获得头节点 + int a=((MyLinkedList)aData).size(); + return a>l; + } + + + } + public Object next(){ + if(aData instanceof MyArrayList){//MyArrayList的Iterator + + Object[] arr=((MyArrayList) aData).getArr(); + return arr[++i]; + } + else{//MyLinkedList的Iterator + l++; + return node.getDate(); + } + } + } diff --git a/group10/3314793852/src/myList/MyLinkedList.java b/group10/3314793852/src/myList/MyLinkedList.java new file mode 100644 index 0000000000..0bad8c8953 --- /dev/null +++ b/group10/3314793852/src/myList/MyLinkedList.java @@ -0,0 +1,122 @@ + package myList; + + /* + * 该单链表是有头节点的。 + */ + + public class MyLinkedList { + + private int theSize; //链表的大小。 + private Node headNode; //头节点 + + //节点的类。 + public static class Node{ + + private Object data; + private Node node; + + public Node(){ + + } + + public Node(Object data, Node node) { + this.data = data; + this.node = node; + } + public Object getDate(){ + return data; + } + + } + + //构造方法,初始化时,生成一个有头节点的空单链表。 + public MyLinkedList(){ + clear(); + } + + //获得头节点 + public Node getHeadNode(){ + return headNode; + } + + //链表清空 + public void clear(){ + headNode=new Node(null,null); //头结点初始化,数据date和指针node全部设置为null. + theSize=0; //表的大小归零 + } + + //获取表的大小 + public int size(){ + return theSize; + } + + //添加节点到链表尾部。 + public void add(Object aData){ + add(theSize+1,aData); + } + + //添加节点到指定位置。 + public void add(int idx,Object aDate){ + + //创建一个新的节点 + Node newNode=new Node(); + newNode.data=aDate; + + //遍历链表,找到指定位置的节点,并将新节点插到指定位置节点的前面一个位置。 + Node p,q; + p=headNode; + + for(int i=1;i(arr.length-1)){//当tail已经到达数组尾部时,而数组的头部还为空时,则将新的数组插入到数组的头部。 + tail=0; + } + theSize++; + } + } + + //pop,出队列。 + public Object pop(){ + Object a=null; + if(theSize!=0){ //如果队列为空,则不能进行出队列的操作。 + a=arr[head]; + arr[head]=null; + head++; + if(head>(arr.length-1)){ + head=0; + } + theSize--; + } + return a; + } + + //打印出队列。 + public void print(){ + for(int i=0;i Date: Sun, 26 Feb 2017 11:55:50 +0800 Subject: [PATCH 04/18] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=BB=93=E6=9E=84ArryList=E3=80=81LinkedList=E3=80=81Stack?= =?UTF-8?q?=E3=80=81Queue=E3=80=81BinaryTreeNode,ArrayList=E5=92=8CLinkedL?= =?UTF-8?q?ist=E5=AE=9E=E7=8E=B0=E4=BA=86Iterator?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- group10/569420966/struct/pom.xml | 12 ++ .../main/java/com/myutil/BinaryTreeNode.java | 167 ++++++++++++++++++ .../src/main/java/com/myutil/Iterator.java | 28 +++ .../struct/src/main/java/com/myutil/List.java | 52 ++++++ .../src/main/java/com/myutil/Queue.java | 44 +++++ .../src/main/java/com/myutil/Stack.java | 61 +++++++ 6 files changed, 364 insertions(+) create mode 100644 group10/569420966/struct/pom.xml create mode 100644 group10/569420966/struct/src/main/java/com/myutil/BinaryTreeNode.java create mode 100644 group10/569420966/struct/src/main/java/com/myutil/Iterator.java create mode 100644 group10/569420966/struct/src/main/java/com/myutil/List.java create mode 100644 group10/569420966/struct/src/main/java/com/myutil/Queue.java create mode 100644 group10/569420966/struct/src/main/java/com/myutil/Stack.java diff --git a/group10/569420966/struct/pom.xml b/group10/569420966/struct/pom.xml new file mode 100644 index 0000000000..2fc5902e7a --- /dev/null +++ b/group10/569420966/struct/pom.xml @@ -0,0 +1,12 @@ + + + 4.0.0 + + com.rishy + struct + 1.0-SNAPSHOT + + + \ No newline at end of file diff --git a/group10/569420966/struct/src/main/java/com/myutil/BinaryTreeNode.java b/group10/569420966/struct/src/main/java/com/myutil/BinaryTreeNode.java new file mode 100644 index 0000000000..0e862a199d --- /dev/null +++ b/group10/569420966/struct/src/main/java/com/myutil/BinaryTreeNode.java @@ -0,0 +1,167 @@ +package com.myutil; + +import java.util.Random; + +/** + * 浜屽弶鏍 + */ +public class BinaryTreeNode> { + private T element; + private BinaryTreeNode left; + private BinaryTreeNode right; + + public T getElement() { + return element; + } + + public void setElement(T element) { + this.element = element; + } + + public BinaryTreeNode getLeft() { + return left; + } + + public void setLeft(BinaryTreeNode left) { + this.left = left; + } + + public BinaryTreeNode getRight() { + return right; + } + + public void setRight(BinaryTreeNode right) { + this.right = right; + } + + /** + * 灏嗗厓绱犳彃鍏ヤ簩鍙夋爲 + * + * @param element 鍏冪礌 + * @return 鎻掑叆鍚庣殑鑺傜偣 + */ + public BinaryTreeNode insert(T element) { + if (element == null) { + throw new IllegalArgumentException("Element must be not null."); + } + + BinaryTreeNode currentNode = null; + if (this.element == null) { + currentNode = this; + currentNode.element = element; + } else { + currentNode = compareToElement(element, this); + } + + return currentNode; + } + + private BinaryTreeNode compareToElement(T element, BinaryTreeNode curr) { + if (element.compareTo(curr.element) == -1) { + if (curr.left == null) { + BinaryTreeNode node = new BinaryTreeNode<>(); + node.element = element; + curr.left = node; + return node; + } else { + return compareToElement(element, curr.left); + } + } else { + if (curr.right == null) { + BinaryTreeNode node = new BinaryTreeNode<>(); + node.element = element; + curr.right = node; + return node; + } else { + return compareToElement(element, curr.right); + } + } + } + + /** + * 鍏堝簭閬嶅巻 + * + * @return 鎸夊厛搴忛亶鍘嗛『搴忓睍绀鸿妭鐐瑰 + */ + public String preOrderTraversal() { + return concatPreOrder(this); + } + + private String concatPreOrder(BinaryTreeNode node) { + StringBuilder ret = new StringBuilder(); + if (node.left != null) { + ret.append(concatPreOrder(node.left)); + } + + ret.append(node.element).append(" "); + + if (node.right != null) { + ret.append(concatPreOrder(node.right)); + } + + return ret.toString(); + } + + /** + * 涓簭閬嶅巻 + * + * @return 鎸変腑搴忛亶鍘嗛『搴忓睍绀鸿妭鐐瑰 + */ + public String inOrderTraversal() { + return concatInOrder(this); + } + + private String concatInOrder(BinaryTreeNode node) { + StringBuilder ret = new StringBuilder(); + + ret.append(node.element).append(" "); + + if (node.left != null) { + ret.append(concatInOrder(node.left)); + } + + if (node.right != null) { + ret.append(concatInOrder(node.right)); + } + + return ret.toString(); + } + + /** + * 鍚庡簭閬嶅巻 + * + * @return 鎸夊悗搴忛亶鍘嗛『搴忓睍绀鸿妭鐐瑰 + */ + public String postOrderTraversal() { + return concatPostOrder(this); + } + + private String concatPostOrder(BinaryTreeNode node) { + StringBuilder ret = new StringBuilder(); + + if (node.right != null) { + ret.append(concatPostOrder(node.right)); + } + + ret.append(node.element).append(" "); + + if (node.left != null) { + ret.append(concatPostOrder(node.left)); + } + + return ret.toString(); + } + + public static void main(String[] args) { + BinaryTreeNode binaryTree = new BinaryTreeNode<>(); + Random random = new Random(); + for (int i = 0; i < 5; i++) { + binaryTree.insert(random.nextInt(100)); + } + + + System.out.println(binaryTree.preOrderTraversal()); + System.out.println(binaryTree.inOrderTraversal()); + System.out.println(binaryTree.postOrderTraversal()); + } +} diff --git a/group10/569420966/struct/src/main/java/com/myutil/Iterator.java b/group10/569420966/struct/src/main/java/com/myutil/Iterator.java new file mode 100644 index 0000000000..412a1ef0aa --- /dev/null +++ b/group10/569420966/struct/src/main/java/com/myutil/Iterator.java @@ -0,0 +1,28 @@ +package com.myutil; + +/** + * 杩唬鍣 + */ +public interface Iterator { + + /** + * 鏄惁鏈変笅涓涓厓绱 + * + * @return true-鏈 false-鏃 + */ + boolean hasNext(); + + /** + * 鑾峰彇涓嬩竴涓厓绱 + * + * @return 涓嬩竴涓厓绱 + */ + T next(); + + /** + * 鍒犻櫎褰撳墠杩唬鐨勫厓绱 + * + * @return 琚垹闄ょ殑鍏冪礌 + */ + T remove(); +} diff --git a/group10/569420966/struct/src/main/java/com/myutil/List.java b/group10/569420966/struct/src/main/java/com/myutil/List.java new file mode 100644 index 0000000000..8dced86dc7 --- /dev/null +++ b/group10/569420966/struct/src/main/java/com/myutil/List.java @@ -0,0 +1,52 @@ +package com.myutil; + +/** + * 鍒楄〃鍩烘湰鎿嶄綔 + */ +public interface List { + /** + * 娣诲姞涓涓厓绱犲埌鍒楄〃 + * + * @param element 鍏冪礌 + */ + void add(T element); + + /** + * 娣诲姞涓涓厓绱犺嚦鎸囧畾浣嶇疆 + * + *
+     *     鎸囧畾浣嶇疆鑼冨洿锛 index >= 0 && index < size
+     *     鍚﹀垯鍥炴姏鍑洪潪娉曞弬鏁板紓甯
+     * 
+ * + * @param element 鍏冪礌 + * @param index 鎸囧畾浣嶇疆 + */ + void add(T element, int index); + + /** + * 鍒犻櫎鎸囧畾浣嶇疆鍏冪礌 + * + *
+     *     鎸囧畾浣嶇疆鑼冨洿锛 index >= 0 && index < size
+     *     鍚﹀垯鍥炴姏鍑洪潪娉曞弬鏁板紓甯
+     * 
+ * + * @param index 鎸囧畾浣嶇疆 + * @return 鍒犻櫎鐨勫厓绱犵殑寮曠敤 + */ + T remove(int index); + + /** + * 鑾峰彇鎸囧畾浣嶇疆鍏冪礌 + * @param index 鎸囧畾浣嶇疆 + * @return 鎸囧畾浣嶇疆鐨勫厓绱 + */ + T get(int index); + + /** + * 鑾峰彇褰撳墠鍒楄〃鐨勫ぇ灏 + * @return 褰撳墠鍒楄〃鐨勫ぇ灏 + */ + int size(); +} diff --git a/group10/569420966/struct/src/main/java/com/myutil/Queue.java b/group10/569420966/struct/src/main/java/com/myutil/Queue.java new file mode 100644 index 0000000000..9097caa7f4 --- /dev/null +++ b/group10/569420966/struct/src/main/java/com/myutil/Queue.java @@ -0,0 +1,44 @@ +package com.myutil; + +/** + * 闃熷垪 + */ +public class Queue { + private LinkedList elementList = new LinkedList<>(); + + /** + * 杩涘叆闃熷垪 + * + * @param element 杩涘叆闃熷垪鐨勫厓绱 + */ + public void enQueue(T element) { + elementList.add(element); + } + + /** + * 鍑洪槦鍒 + * + * @return 鍑洪槦鍒楃殑鍏冪礌 + */ + public T deQueue() { + return elementList.removeFirst(); + } + + /** + * 闃熷垪鏄惁涓虹┖ + * + * @return true-鏄 false-鍚 + */ + public boolean isEmpty() { + return elementList.size() == 0; + } + + /** + * 鑾峰彇闃熷垪鐨勫ぇ灏 + * + * @return 闃熷垪鐨勫ぇ灏 + */ + public int size() { + return elementList.size(); + } +} diff --git a/group10/569420966/struct/src/main/java/com/myutil/Stack.java b/group10/569420966/struct/src/main/java/com/myutil/Stack.java new file mode 100644 index 0000000000..d78ae2b39a --- /dev/null +++ b/group10/569420966/struct/src/main/java/com/myutil/Stack.java @@ -0,0 +1,61 @@ +package com.myutil; + +/** + * 鏍 + */ +public class Stack { + private ArrayList elementList = new ArrayList<>(); + + /** + * 鍏ユ爤 + * + * @param element 鍏ユ爤鐨勫厓绱 + */ + public void push(T element) { + elementList.add(element); + } + + /** + * 鍑烘爤 + * + * @return 鍑烘爤鐨勫厓绱 + */ + public T pop() { + if (elementList.size() == 0) { + throw new ArrayIndexOutOfBoundsException("Stack is empty, don't to pop()."); + } + T element = elementList.get(elementList.size() - 1); + elementList.remove(elementList.size() - 1); + return element; + } + + /** + * 鑾峰彇鏍堥《鍏冪礌 + * + * @return 鏍堥《鍏冪礌 + */ + public T peek() { + if (elementList.size() == 0) { + throw new ArrayIndexOutOfBoundsException("Stack is empty, don't to peek()."); + } + return elementList.get(elementList.size() - 1); + } + + /** + * 鏄惁涓虹┖鏍 + * + * @return true-鏄 false-鍚 + */ + public boolean isEmpty() { + return elementList.size() == 0; + } + + /** + * 鑾峰彇褰撳墠鏍堝ぇ灏 + * + * @return 褰撳墠鏍堝ぇ灏 + */ + public int size() { + return elementList.size(); + } +} From dfff89fd197f71909c79708486eb128a224ad163 Mon Sep 17 00:00:00 2001 From: Rishy <569420966@qq.com> Date: Sun, 26 Feb 2017 11:56:36 +0800 Subject: [PATCH 05/18] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=BB=93=E6=9E=84ArryList=E3=80=81LinkedList=E3=80=81Stack?= =?UTF-8?q?=E3=80=81Queue=E3=80=81BinaryTreeNode,ArrayList=E5=92=8CLinkedL?= =?UTF-8?q?ist=E5=AE=9E=E7=8E=B0=E4=BA=86Iterator?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/myutil/ArrayList.java | 162 ++++++++++++++ .../src/main/java/com/myutil/LinkedList.java | 207 ++++++++++++++++++ 2 files changed, 369 insertions(+) create mode 100644 group10/569420966/struct/src/main/java/com/myutil/ArrayList.java create mode 100644 group10/569420966/struct/src/main/java/com/myutil/LinkedList.java diff --git a/group10/569420966/struct/src/main/java/com/myutil/ArrayList.java b/group10/569420966/struct/src/main/java/com/myutil/ArrayList.java new file mode 100644 index 0000000000..19f0fdc26f --- /dev/null +++ b/group10/569420966/struct/src/main/java/com/myutil/ArrayList.java @@ -0,0 +1,162 @@ +package com.myutil; + + +import java.text.MessageFormat; +import java.util.NoSuchElementException; + +/** + * 鏁扮粍鍒楄〃 + */ +public class ArrayList implements List { + private Object[] elementData; + private int size = 0; + private static final int DEFAULT_SIZE = 10; + + /** + * 鍒ゆ柇杈圭晫 + *

+ *

+     *      鑻 index < 0 鎴栬 index > size 鍒欐姏鍑洪潪娉曞弬鏁板紓甯
+     * 
+ * + * @param index 褰撳墠绱㈠紩 + */ + private void judgeRange(int index) { + if (index < 0) { + throw new IllegalArgumentException( + MessageFormat.format("Index is must be great or equal then 0. index:{0}", index)); + } + if (index >= this.size) { + throw new IllegalArgumentException( + MessageFormat.format("Index is must be less then size(). index:{0}", index)); + } + if (this.size == Integer.MAX_VALUE) { + throw new IllegalArgumentException("Array already can not Expansion."); + } + } + + /** + * 鎵╁厖鏁扮粍瀹归噺 + *

+ *

+     *     鑻 size >= elementData.length 鍒欏鏁扮粍杩涜鎵╁
+     *     鎵╁鑷冲師(elementData.length+1) * 2
+     * 
+ */ + private void capacityExpansion() { + if (this.size >= elementData.length) { + Object[] tmpData = new Object[(elementData.length + 1) * 2]; + System.arraycopy(elementData, 0, tmpData, 0, elementData.length); + elementData = tmpData; + } + } + + public ArrayList() { + elementData = new Object[DEFAULT_SIZE]; + } + + public ArrayList(int capacity) { + if (capacity < 0) { + throw new IllegalArgumentException( + MessageFormat.format("Capacity is must be great or equal 0. capacity:{0}", capacity)); + } + this.elementData = new Object[capacity]; + } + + public void add(T element) { + capacityExpansion(); + elementData[this.size] = element; + this.size++; + } + + public void add(T element, int index) { + judgeRange(index); + capacityExpansion(); + if (this.size - index > 0) { + System.arraycopy(elementData, index, elementData, index + 1, this.size - index); + } + elementData[index] = element; + this.size++; + } + + public T remove(int index) { + judgeRange(index); + T tmpObject = (T) elementData[index]; + if (this.size - index > 0) { + System.arraycopy(elementData, index + 1, elementData, index, this.size - index - 1); + } + this.size--; + return tmpObject; + } + + public T get(int index) { + judgeRange(index); + return (T) elementData[index]; + } + + public int size() { + return this.size; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("["); + for (int i = 0; i < this.size; i++) { + sb.append((T) elementData[i]); + if (i < this.size - 1) { + sb.append(","); + } + } + sb.append("]"); + + return sb.toString(); + } + + /** + * 鑾峰彇杩唬鍣 + * + * @return 杩唬鍣 + */ + public Iterator iterator() { + return new ArrayListIterator(); + } + + private class ArrayListIterator implements Iterator { + int position = 0; + int lastRet = -1; + + public boolean hasNext() { + return position < ArrayList.this.size(); + } + + public T next() { + if (position >= size) { + throw new NoSuchElementException(); + } + int i = position; + T element = ArrayList.this.get(position++); + lastRet = i; + return element; + } + + public T remove() { + if (lastRet < 0) { + throw new IllegalStateException(); + } + T removeElement = ArrayList.this.remove(lastRet); + position = lastRet; + lastRet = -1; + return removeElement; + } + } + + public static void main(String[] args) { + ArrayList ids = new ArrayList<>(); + for (int i = 0; i < 11; i++) { + ids.add(i); + } + Iterator iterator = ids.iterator(); + System.out.println(ids); + } +} diff --git a/group10/569420966/struct/src/main/java/com/myutil/LinkedList.java b/group10/569420966/struct/src/main/java/com/myutil/LinkedList.java new file mode 100644 index 0000000000..dcbce429ec --- /dev/null +++ b/group10/569420966/struct/src/main/java/com/myutil/LinkedList.java @@ -0,0 +1,207 @@ +package com.myutil; + +import java.text.MessageFormat; +import java.util.NoSuchElementException; + +/** + * 閾捐〃鍒楄〃 + */ +public class LinkedList implements List { + private Node header = new Node(); + private int size = 0; + + private Node lastNode() { + return findNode(this.size); + } + + private Node findNode(int index) { + int current = 0; + Node targetNode = header; + while (current < index) { + targetNode = targetNode.next; + current++; + } + return targetNode; + } + + /** + * 鍒ゆ柇杈圭晫 + *

+ *

+     *      鑻 index < 0 鎴栬 index > size 鍒欐姏鍑洪潪娉曞弬鏁板紓甯
+     * 
+ * + * @param index 褰撳墠绱㈠紩 + */ + private void judgeRange(int index) { + if (index < 0) { + throw new IllegalArgumentException( + MessageFormat.format("Index is must be great or equal then 0. index:{0}", index)); + } + if (index >= this.size) { + throw new IllegalArgumentException( + MessageFormat.format("Index is must be less then size(). index:{0}", index)); + } + if (this.size == Integer.MAX_VALUE) { + throw new IllegalArgumentException("Array already can not Expansion."); + } + } + + public LinkedList() { + + } + + @Override + public void add(T element) { + Node lastNode = lastNode(); + Node addNode = new Node(); + addNode.element = element; + lastNode.next = addNode; + this.size++; + } + + @Override + public void add(T element, int index) { + judgeRange(index); + Node targetNode = findNode(index); + Node addNode = new Node(); + addNode.element = element; + addNode.next = targetNode.next; + targetNode.next = addNode; + this.size++; + } + + @Override + public T remove(int index) { + judgeRange(index); + Node targetNode = findNode(index); + Node removeNode = targetNode.next; + targetNode.next = targetNode.next.next; + T element = (T) removeNode.element; + this.size--; + return element; + } + + @Override + public T get(int index) { + judgeRange(index); + return (T) findNode(index).next.element; + } + + @Override + public int size() { + return this.size; + } + + /** + * 娣诲姞涓涓厓绱犲埌鏈寮濮嬬殑浣嶇疆 + * + * @param element 鍏冪礌 + */ + public void addFirst(T element) { + add(element, 0); + } + + /** + * 娣诲姞涓涓厓绱犲埌鏈鍚 + * + * @param element 鍏冪礌 + */ + public void addLast(T element) { + add(element, this.size - 1); + } + + /** + * 鍒犻櫎绗竴涓厓绱 + * + * @return 绗竴涓厓绱 + */ + public T removeFirst() { + if (this.size == 0) { + throw new ArrayIndexOutOfBoundsException("This list is empty, don't to remove."); + } + + return remove(0); + } + + /** + * 鍒犻櫎鏈鍚庝竴涓厓绱 + * + * @return 鏈鍚庝竴涓厓绱 + */ + public T removeLast() { + if (this.size == 0) { + throw new ArrayIndexOutOfBoundsException("This list is empty, don't to remove."); + } + return remove(this.size - 1); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("["); + Node indexNode = header.next; + while (indexNode != null) { + sb.append((T) indexNode.element); + if (indexNode.next != null) { + sb.append(","); + } + indexNode = indexNode.next; + } + sb.append("]"); + + return sb.toString(); + } + + /** + * 鑾峰彇杩唬鍣 + * + * @return 杩唬鍣 + */ + public Iterator iterator() { + return new LinkedListIterator(); + } + + private class LinkedListIterator implements Iterator { + int position = 0; + int lastRet = -1; + + public boolean hasNext() { + return position < LinkedList.this.size(); + } + + public T next() { + if (position >= size) { + throw new NoSuchElementException(); + } + int i = position; + T element = LinkedList.this.get(position++); + lastRet = i; + return element; + } + + public T remove() { + if (lastRet < 0) { + throw new IllegalStateException(); + } + T removeElement = LinkedList.this.remove(lastRet); + position = lastRet; + lastRet = -1; + return removeElement; + } + } + + private static class Node { + T element; + Node next; + } + + public static void main(String[] args) { + LinkedList ids = new LinkedList<>(); + for (int i = 0; i < 11; i++) { + ids.add(i); + } + Iterator iterator = ids.iterator(); + System.out.println(ids); + } +} From e2496514fb6252d426cd4463e99cf51240631b70 Mon Sep 17 00:00:00 2001 From: Kelly <205301442@qq.com> Date: Sun, 26 Feb 2017 18:44:31 +0800 Subject: [PATCH 06/18] first week job --- .../src/com/coding/week1/ArrayList.java | 96 +++++++++++ .../src/com/coding/week1/BinaryTreeNode.java | 53 ++++++ .../src/com/coding/week1/Iterator.java | 6 + .../src/com/coding/week1/LinkedList.java | 162 ++++++++++++++++++ .../205301442/src/com/coding/week1/List.java | 9 + .../205301442/src/com/coding/week1/Queue.java | 23 +++ .../205301442/src/com/coding/week1/Stack.java | 28 +++ .../test/com/coding/week1/AllTests.java | 11 ++ .../test/com/coding/week1/TestArrayList.java | 31 ++++ .../com/coding/week1/TestBiranyTreeNode.java | 21 +++ .../test/com/coding/week1/TestLinkedList.java | 42 +++++ .../test/com/coding/week1/TestQueue.java | 17 ++ .../test/com/coding/week1/TestStack.java | 23 +++ 13 files changed, 522 insertions(+) create mode 100644 group10/205301442/src/com/coding/week1/ArrayList.java create mode 100644 group10/205301442/src/com/coding/week1/BinaryTreeNode.java create mode 100644 group10/205301442/src/com/coding/week1/Iterator.java create mode 100644 group10/205301442/src/com/coding/week1/LinkedList.java create mode 100644 group10/205301442/src/com/coding/week1/List.java create mode 100644 group10/205301442/src/com/coding/week1/Queue.java create mode 100644 group10/205301442/src/com/coding/week1/Stack.java create mode 100644 group10/205301442/test/com/coding/week1/AllTests.java create mode 100644 group10/205301442/test/com/coding/week1/TestArrayList.java create mode 100644 group10/205301442/test/com/coding/week1/TestBiranyTreeNode.java create mode 100644 group10/205301442/test/com/coding/week1/TestLinkedList.java create mode 100644 group10/205301442/test/com/coding/week1/TestQueue.java create mode 100644 group10/205301442/test/com/coding/week1/TestStack.java diff --git a/group10/205301442/src/com/coding/week1/ArrayList.java b/group10/205301442/src/com/coding/week1/ArrayList.java new file mode 100644 index 0000000000..db50f7ef46 --- /dev/null +++ b/group10/205301442/src/com/coding/week1/ArrayList.java @@ -0,0 +1,96 @@ +package com.coding.week1; + + + + +public class ArrayList implements List{ + private int size = 0; + + private Object[] elementData = {}; + + public void add(Object o){ + extendIndex(); + elementData[size] = o; + size++; + } + public void add(int index, Object o){ + + if(index>size){ + System.out.println("Exception in thread \""+Thread.currentThread()+"\" java.lang.IndexOutOfBoundsException:Index:"+index+",Size:"+size); + return; + } + int length = elementData.length; + if(size==elementData.length){ + length=elementData.length+1; + } + Object[] newElement = new Object[length]; + System.arraycopy(elementData, 0, newElement, 0, index); + System.arraycopy(elementData, index, newElement,index+1,size-index ); + newElement[index]=o; + elementData = newElement; + size++; + } + + public Object get(int index){ + boolean isRange=rangeCheck(index); + if(!isRange){ + return null; + } + return elementData[index]; + } + + public Object remove(int index){ + boolean isRange=rangeCheck(index); + if(!isRange){ + return null; + } + Object rmData = elementData[index]; + Object[] newElement = new Object[elementData.length]; + System.arraycopy(elementData, 0, newElement, 0, index);; + System.arraycopy(elementData, index+1, newElement,index,size-index-1 ); + elementData = newElement; + size--; + return rmData; + } + + public int size(){ + return size; + } + + public com.coding.week1.Iterator iterator(){ + return new Ito(); + } + public boolean rangeCheck(int index){ + + if(index>size-1||index<0){ + System.err.println("Exception in thread \""+Thread.currentThread()+"\" java.lang.IndexOutOfBoundsException:Index:"+index+",Size:"+size); + return false; + } + return true; + } + public void extendIndex(){ + Object[] newElement = new Object[elementData.length+1]; + System.arraycopy(elementData, 0, newElement, 0, size); + elementData = newElement; + + } + public class Ito implements com.coding.week1.Iterator{ + int cursor; + @Override + public boolean hasNext() { + if(cursor!=size){ + return true; + } + return false; + } + + @Override + public Object next() { + Object o=elementData[cursor]; + cursor++; + return o; + } + } + + +} diff --git a/group10/205301442/src/com/coding/week1/BinaryTreeNode.java b/group10/205301442/src/com/coding/week1/BinaryTreeNode.java new file mode 100644 index 0000000000..547e09d42f --- /dev/null +++ b/group10/205301442/src/com/coding/week1/BinaryTreeNode.java @@ -0,0 +1,53 @@ +package com.coding.week1; + +public class BinaryTreeNode { + + private Object data; + private BinaryTreeNode left; + private BinaryTreeNode right; + public BinaryTreeNode(Object data){ + this.data = data; + } + public Object getData() { + return data; + } + public void setData(Object data) { + this.data = data; + } + public BinaryTreeNode getLeft() { + return left; + } + public void setLeft(BinaryTreeNode left) { + this.left = left; + } + public BinaryTreeNode getRight() { + return right; + } + public void setRight(BinaryTreeNode right) { + this.right = right; + } + + public BinaryTreeNode insert(Object o){ + BinaryTreeNode newBTN = new BinaryTreeNode(o); + Integer insert = (Integer)o; + + BinaryTreeNode cursor = this; + while(true){ + if(insert.compareTo((Integer)cursor.data)==-1){ + if(cursor.left==null){ + cursor.left = newBTN; + break; + } + cursor = cursor.left; + }else if(insert.compareTo((Integer)cursor.data)==1){ + if(cursor.right==null){ + cursor.right = newBTN; + break; + } + cursor = cursor.right; + } + } + return newBTN; + } + +} diff --git a/group10/205301442/src/com/coding/week1/Iterator.java b/group10/205301442/src/com/coding/week1/Iterator.java new file mode 100644 index 0000000000..7f6f333443 --- /dev/null +++ b/group10/205301442/src/com/coding/week1/Iterator.java @@ -0,0 +1,6 @@ +package com.coding.week1; + +public interface Iterator { + public boolean hasNext(); + public Object next(); +} diff --git a/group10/205301442/src/com/coding/week1/LinkedList.java b/group10/205301442/src/com/coding/week1/LinkedList.java new file mode 100644 index 0000000000..2c14a0e9cb --- /dev/null +++ b/group10/205301442/src/com/coding/week1/LinkedList.java @@ -0,0 +1,162 @@ +package com.coding.week1; + +public class LinkedList implements List { + private int size; + private Node first; + private Node last; + public static class Node{ + Object data; + Node next; + Node prev; + public Node(Node prev,Object data,Node next){ + this.data = data; + this.next = next; + this.prev = prev; + } + } + + @Override + public void add(Object o) { + final Node l = last; + Node newNode = new Node(last,o,null); + last = newNode; + if(first==null){ + first = newNode; + }else{ + l.next = newNode; + } + size++; + + } + + @Override + public void add(int index, Object o) { + + if(index>size){ + System.out.println("Exception in thread \""+Thread.currentThread()+"\" java.lang.IndexOutOfBoundsException:Index:"+index+",Size:"+size); + return; + } + Node newNode = new Node(null,o,null); + Node nodePre = node(index-1); + Node oldNode = node(index); + if(nodePre!=null){ + nodePre.next =newNode; + newNode.prev = nodePre; + }else{ + first = newNode; + } + if(oldNode!=null){ + oldNode.prev = newNode; + newNode.next = oldNode; + }else{ + last = newNode; + } + size++; + } + + @Override + public Object get(int index) { + if(!rangeCheck(index)){ + return null; + } + + return node(index).data; + } + + @Override + public Object remove(int index) { + if(!rangeCheck(index)){ + return null; + } + Node prevNode = node(index-1); + Node nextNode = node(index+1); + Node rmNode = node(index); + if(prevNode!=null){ + prevNode.next = nextNode; + }else{ + first=nextNode; + } + if(nextNode!=null){ + nextNode.prev = prevNode; + }else{ + last = prevNode; + } + size--; + return rmNode.data; + } + + @Override + public int size() { + // TODO Auto-generated method stub + return size; + } + public Object head(){ + return first.data; + } + public Object last(){ + return last.data; + } + public void addFirst(Object o){ + add(0,o); + } + public void addLast(Object o){ + add(size,o); + } + public Object removeFirst(){ + Node f = first; + remove(0); + return f.data; + } + public Object removeLast(){ + Node l = last; + remove(size-1); + return l.data; + } + public Node node(int index){ + if(index<0){ + return null; + } + Node x =null; + if(index<(size<<1)){ + x = first; + for(int i=0;iindex;i--){ + x = x.prev; + } + } + return x; + } + public boolean rangeCheck(int index){ + + if(index>size-1||index<0){ + System.err.println("Exception in thread \""+Thread.currentThread()+"\" java.lang.IndexOutOfBoundsException:Index:"+index+",Size:"+size); + return false; + } + return true; + } + public Ito iterator(){ + return new Ito(); + } + public class Ito implements Iterator{ + int cursor; + @Override + public boolean hasNext() { + if(cursor!=size){ + return true; + } + return false; + } + + @Override + public Object next() { + Object o=node(cursor).data; + cursor++; + return o; + } + + } +} diff --git a/group10/205301442/src/com/coding/week1/List.java b/group10/205301442/src/com/coding/week1/List.java new file mode 100644 index 0000000000..e06b7c8ab9 --- /dev/null +++ b/group10/205301442/src/com/coding/week1/List.java @@ -0,0 +1,9 @@ +package com.coding.week1; + +public interface List { + public void add(Object o); + public void add(int index,Object o); + public Object get(int index); + public Object remove(int index); + public int size(); +} diff --git a/group10/205301442/src/com/coding/week1/Queue.java b/group10/205301442/src/com/coding/week1/Queue.java new file mode 100644 index 0000000000..e3c4a44a42 --- /dev/null +++ b/group10/205301442/src/com/coding/week1/Queue.java @@ -0,0 +1,23 @@ +package com.coding.week1; + +public class Queue { + ArrayList list = new ArrayList(); + public void enQueue(Object o){ + list.add(o); + } + + public Object deQueue(){ + return list.remove(0); + } + + public boolean isEmpty(){ + if(list.size()==0){ + return true; + } + return false; + } + + public int size(){ + return list.size(); + } +} diff --git a/group10/205301442/src/com/coding/week1/Stack.java b/group10/205301442/src/com/coding/week1/Stack.java new file mode 100644 index 0000000000..307b3630df --- /dev/null +++ b/group10/205301442/src/com/coding/week1/Stack.java @@ -0,0 +1,28 @@ +package com.coding.week1; + +public class Stack { + private ArrayList elementData = new ArrayList(); + + public void push(Object o){ + elementData.add(o); + } + + public Object pop(){ + int top = elementData.size()-1; + return elementData.remove(top); + } + + public Object peek(){ + int top = elementData.size()-1; + return elementData.get(top); + } + public boolean isEmpty(){ + if(elementData.size()==0){ + return true; + } + return false; + } + public int size(){ + return elementData.size(); + } +} diff --git a/group10/205301442/test/com/coding/week1/AllTests.java b/group10/205301442/test/com/coding/week1/AllTests.java new file mode 100644 index 0000000000..e72687d19a --- /dev/null +++ b/group10/205301442/test/com/coding/week1/AllTests.java @@ -0,0 +1,11 @@ +package com.coding.week1; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; + +@RunWith(Suite.class) +@SuiteClasses({ TestArrayList.class, TestLinkedList.class, TestQueue.class, TestStack.class }) +public class AllTests { + +} diff --git a/group10/205301442/test/com/coding/week1/TestArrayList.java b/group10/205301442/test/com/coding/week1/TestArrayList.java new file mode 100644 index 0000000000..0c7040d335 --- /dev/null +++ b/group10/205301442/test/com/coding/week1/TestArrayList.java @@ -0,0 +1,31 @@ +package com.coding.week1; + +import static org.junit.Assert.*; +import org.junit.Test; + +public class TestArrayList { + ArrayList arrayList =new ArrayList(); + + @Test + public void Test(){ + //add + arrayList.add("MM"); + arrayList.add(1,"YY"); + arrayList.add(2,"ZZ"); + //get + assertEquals((String)arrayList.get(0), "MM"); + assertEquals(arrayList.size(),3 ); + //remove + assertEquals(arrayList.remove(2), "ZZ"); + assertEquals(arrayList.size(),2 ); + //iterator + Iterator ito = arrayList.iterator(); + int i=0; + while(ito.hasNext()){ + assertEquals(ito.next(), arrayList.get(i)); + i++; + } + } + + +} diff --git a/group10/205301442/test/com/coding/week1/TestBiranyTreeNode.java b/group10/205301442/test/com/coding/week1/TestBiranyTreeNode.java new file mode 100644 index 0000000000..5968ebf562 --- /dev/null +++ b/group10/205301442/test/com/coding/week1/TestBiranyTreeNode.java @@ -0,0 +1,21 @@ +package com.coding.week1; + +import static org.junit.Assert.*; + +import org.junit.Test; + +public class TestBiranyTreeNode { + + @Test + public void test() { + BinaryTreeNode node = new BinaryTreeNode(5); + node.insert(2); + node.insert(7); + node.insert(1); + node.insert(6); + System.out.println(" "+node.getData()); + System.out.println(" "+node.getLeft().getData()+" "+node.getRight().getData()); + System.out.println(node.getLeft().getLeft().getData()+" null "+node.getRight().getLeft().getData()+" null"); + } + +} diff --git a/group10/205301442/test/com/coding/week1/TestLinkedList.java b/group10/205301442/test/com/coding/week1/TestLinkedList.java new file mode 100644 index 0000000000..db6524ac53 --- /dev/null +++ b/group10/205301442/test/com/coding/week1/TestLinkedList.java @@ -0,0 +1,42 @@ +package com.coding.week1; + +import static org.junit.Assert.*; + + +import org.junit.Test; + +public class TestLinkedList { + LinkedList linkedList = new LinkedList(); + + @Test + public void test() { + //add + linkedList.add("AA"); + linkedList.add(0,"BB"); + linkedList.add(1,"CC"); + linkedList.add(3,"DD"); + + assertEquals(linkedList.get(0), "BB"); + assertEquals(linkedList.get(1), "CC"); + assertEquals(linkedList.get(2), "AA"); + assertEquals(linkedList.last(), "DD"); + //add first last + linkedList.addFirst("EE"); + assertEquals(linkedList.get(0), "EE"); + linkedList.addLast("FF"); + assertEquals(linkedList.get(5), "FF"); + //remove + assertEquals(linkedList.remove(1), "BB"); + assertEquals(linkedList.removeFirst(), "EE"); + assertEquals(linkedList.removeLast(), "FF"); + //iterator + Iterator ito = linkedList.iterator(); + int i=0; + while(ito.hasNext()){ + assertEquals(linkedList.get(i), ito.next()); + i++; + } + assertEquals(i, linkedList.size()); + } + +} diff --git a/group10/205301442/test/com/coding/week1/TestQueue.java b/group10/205301442/test/com/coding/week1/TestQueue.java new file mode 100644 index 0000000000..525eaf5886 --- /dev/null +++ b/group10/205301442/test/com/coding/week1/TestQueue.java @@ -0,0 +1,17 @@ +package com.coding.week1; + +import static org.junit.Assert.*; + +import org.junit.Test; + +public class TestQueue { + + @Test + public void test() { + Queue queue = new Queue(); + queue.enQueue("MM"); + assertEquals(queue.deQueue(), "MM"); + assertEquals(queue.isEmpty(), true); + } + +} diff --git a/group10/205301442/test/com/coding/week1/TestStack.java b/group10/205301442/test/com/coding/week1/TestStack.java new file mode 100644 index 0000000000..ababf23df6 --- /dev/null +++ b/group10/205301442/test/com/coding/week1/TestStack.java @@ -0,0 +1,23 @@ +package com.coding.week1; + +import static org.junit.Assert.*; + +import org.junit.Test; + +public class TestStack { + + @Test + public void test() { + Stack stack = new Stack(); + stack.push("AA"); + stack.push("BB"); + stack.push("CC"); + stack.push("DD"); + assertEquals(stack.pop(), "DD"); + assertEquals(stack.pop(), "CC"); + assertEquals(stack.peek(), "BB"); + assertEquals(stack.size(), 2); + assertEquals(stack.isEmpty(),false); + } + +} From 234c38a7b62f48da98a1495cef157da268e3ba90 Mon Sep 17 00:00:00 2001 From: shixin <353261578@qq.com> Date: Sun, 26 Feb 2017 20:10:48 +0800 Subject: [PATCH 07/18] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- group10/353261578/.classpath | 8 ++ group10/353261578/.gitignore | 1 + group10/353261578/.project | 17 +++ .../src/com/sx/structures/BinaryNode.java | 44 ++++++++ .../src/com/sx/structures/BinaryTree.java | 74 ++++++++++++ .../src/com/sx/structures/Iterator.java | 6 + .../src/com/sx/structures/MyArrayList.java | 83 ++++++++++++++ .../src/com/sx/structures/MyLinkedList.java | 105 ++++++++++++++++++ .../src/com/sx/structures/MyList.java | 13 +++ .../src/com/sx/structures/MyQueue.java | 25 +++++ .../src/com/sx/structures/MyStack.java | 37 ++++++ .../test/com/test/BinaryTreeTest.java | 31 ++++++ .../test/com/test/MyArrayListTest.java | 64 +++++++++++ .../test/com/test/MyLinkedListTest.java | 83 ++++++++++++++ .../353261578/test/com/test/StaQueTest.java | 44 ++++++++ 15 files changed, 635 insertions(+) create mode 100644 group10/353261578/.classpath create mode 100644 group10/353261578/.gitignore create mode 100644 group10/353261578/.project create mode 100644 group10/353261578/src/com/sx/structures/BinaryNode.java create mode 100644 group10/353261578/src/com/sx/structures/BinaryTree.java create mode 100644 group10/353261578/src/com/sx/structures/Iterator.java create mode 100644 group10/353261578/src/com/sx/structures/MyArrayList.java create mode 100644 group10/353261578/src/com/sx/structures/MyLinkedList.java create mode 100644 group10/353261578/src/com/sx/structures/MyList.java create mode 100644 group10/353261578/src/com/sx/structures/MyQueue.java create mode 100644 group10/353261578/src/com/sx/structures/MyStack.java create mode 100644 group10/353261578/test/com/test/BinaryTreeTest.java create mode 100644 group10/353261578/test/com/test/MyArrayListTest.java create mode 100644 group10/353261578/test/com/test/MyLinkedListTest.java create mode 100644 group10/353261578/test/com/test/StaQueTest.java diff --git a/group10/353261578/.classpath b/group10/353261578/.classpath new file mode 100644 index 0000000000..ebfd4f69f3 --- /dev/null +++ b/group10/353261578/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/group10/353261578/.gitignore b/group10/353261578/.gitignore new file mode 100644 index 0000000000..ae3c172604 --- /dev/null +++ b/group10/353261578/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/group10/353261578/.project b/group10/353261578/.project new file mode 100644 index 0000000000..251ba32e96 --- /dev/null +++ b/group10/353261578/.project @@ -0,0 +1,17 @@ + + + 353261578Learning + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/group10/353261578/src/com/sx/structures/BinaryNode.java b/group10/353261578/src/com/sx/structures/BinaryNode.java new file mode 100644 index 0000000000..a5d2e45bdd --- /dev/null +++ b/group10/353261578/src/com/sx/structures/BinaryNode.java @@ -0,0 +1,44 @@ +package com.sx.structures; + +public class BinaryNode implements Comparable{ + private Object data; + private BinaryNode left; + private BinaryNode right; + + public BinaryNode() { + } + public BinaryNode(Object o){ + data = o; + left = null; + right = null; + } + + public Object getData() { + return data; + } + public void setData(Object data) { + this.data = data; + } + public BinaryNode getLeft() { + return left; + } + public void setLeft(BinaryNode left) { + this.left = left; + } + public BinaryNode getRight() { + return right; + } + public void setRight(BinaryNode right) { + this.right = right; + } + @Override + public int compareTo(BinaryNode o) { + Integer to = (Integer)this.data; + Integer co = (Integer)o.data; + if(toco) + return 1; + return 0; + } +} diff --git a/group10/353261578/src/com/sx/structures/BinaryTree.java b/group10/353261578/src/com/sx/structures/BinaryTree.java new file mode 100644 index 0000000000..7af8f8edd5 --- /dev/null +++ b/group10/353261578/src/com/sx/structures/BinaryTree.java @@ -0,0 +1,74 @@ +package com.sx.structures; + +public class BinaryTree { + + private BinaryNode root; + + public BinaryTree(Object o) { + root = new BinaryNode(o); + } + + public void insert(Object o) { + BinaryNode node = new BinaryNode(o); + insert(root, node); + } + + private void insert(BinaryNode root, BinaryNode node) { + if (node.compareTo(root) > 0) { + if (root.getRight() == null) { + root.setRight(node); + return; + } + insert(root.getRight(), node); + } else { + if (root.getLeft() == null) { + root.setLeft(node); + return; + } + insert(root.getLeft(), node); + } + + } + + public void preOrder(BinaryNode root){ + order(root); + if(root.getLeft()!=null) + preOrder(root.getLeft()); + if(root.getRight()!=null) + preOrder(root.getRight()); + } + + public void postOrder(BinaryNode root){ + if(root.getLeft()!=null) + postOrder(root.getLeft()); + if(root.getRight()!=null) + postOrder(root.getRight()); + order(root); + } + + public void inOrder(BinaryNode root){ + if(root.getLeft()!=null) + inOrder(root.getLeft()); + order(root); + if(root.getRight()!=null) + inOrder(root.getRight()); + } + + /** + * 鏈疄鐜 + * @param root + * @param node + * @return + */ + private boolean remove(BinaryNode root, BinaryNode node){ + return false; + } + + public BinaryNode getRoot(){ + return root; + } + + private void order(BinaryNode root){ + System.out.print(root.getData()+" "); + } +} diff --git a/group10/353261578/src/com/sx/structures/Iterator.java b/group10/353261578/src/com/sx/structures/Iterator.java new file mode 100644 index 0000000000..9965e652bc --- /dev/null +++ b/group10/353261578/src/com/sx/structures/Iterator.java @@ -0,0 +1,6 @@ +package com.sx.structures; + +public interface Iterator { + boolean hasNext(); + Object next(); +} diff --git a/group10/353261578/src/com/sx/structures/MyArrayList.java b/group10/353261578/src/com/sx/structures/MyArrayList.java new file mode 100644 index 0000000000..952776b5cb --- /dev/null +++ b/group10/353261578/src/com/sx/structures/MyArrayList.java @@ -0,0 +1,83 @@ +package com.sx.structures; + +public class MyArrayList implements MyList { + + private int size; + private int ex=10; + private int last=-1; + private Object [] arr; + + public MyArrayList() { + size = 10; + arr = new Object[size]; + } + + @Override + public void add(Object o) { + last++; + if(last==size){ + size += ex; + Object[] temp = new Object[size]; + System.arraycopy(arr, 0, temp, 0, arr.length); + arr = temp; + } + arr[last]=o; + } + + @Override + public void add(int index, Object o) { + add(o); + for(int i=arr.length-1;i>index;i--) + arr[i]=arr[i-1]; + arr[index]=o; + } + + @Override + public Object get(int index) { + return arr[index]; + } + + @Override + public Object remove(int index) { + Object element = arr[index]; + for(int i=index;ilist.size()) + return false; + return true; + } + + @Override + public Object next() { + if(hasNext()) + return list.get(p-1); + return -1; + } + + } + +} diff --git a/group10/353261578/src/com/sx/structures/MyLinkedList.java b/group10/353261578/src/com/sx/structures/MyLinkedList.java new file mode 100644 index 0000000000..3d9932ee92 --- /dev/null +++ b/group10/353261578/src/com/sx/structures/MyLinkedList.java @@ -0,0 +1,105 @@ +package com.sx.structures; + +public class MyLinkedList implements MyList{ + private Node head; + private int size = 0; + + public MyLinkedList() { + head = new Node(); + } + @Override + public void add(Object o) { + Node node = createNode(o); + Node pre = head; + while(pre.next!=null){ + pre = pre.next; + } + pre.next = node; + size++; + } + + @Override + public void add(int index, Object o) { + if(index < 0){ + System.out.println("锟斤拷锟斤拷越锟斤拷");return; + } + Node node = createNode(o); + Node pointer = head; + while(index>0){ + pointer = pointer.next; + index--; + } + node.next = pointer.next; + pointer.next = node; + size++; + } + + @Override + public Object get(int index) { + Node pointer = head; + while(index>=0){ + pointer = pointer.next; + index--; + } + return pointer.data; + } + + @Override + public Object remove(int index) { + Object data = null; + Node pre = head; + while(index>0){ + pre = pre.next; + index--; + } + data = pre.next.data; + pre.next = pre.next.next; + size--; + return data; + } + + @Override + public int size() { + return size; + } + + public void addFirst(Object o){ + add(0, o); + } + public void addLast(Object o){ +// Node node = createNode(o); +// Node p = head; +// while(p.next!=null) +// p = p.next; +// p.next = node; +// size++; + add(o); + } + public Object removeFirst(){ + return remove(0); + } + public Object removeLast(){ + Object data = null; + Node re = head; + Node pre = head; + while(re.next!=null){ + re = re.next; + pre = re; + } + data = re.data; + re=null; + pre.next = null; + size--; + return data; + } + private Node createNode(Object o){ + Node node = new Node(); + node.data=o; + return node; + } + private static class Node{ + Object data = null; + Node next = null; + } + +} diff --git a/group10/353261578/src/com/sx/structures/MyList.java b/group10/353261578/src/com/sx/structures/MyList.java new file mode 100644 index 0000000000..c880f5c8ff --- /dev/null +++ b/group10/353261578/src/com/sx/structures/MyList.java @@ -0,0 +1,13 @@ +package com.sx.structures; + +public interface MyList { + public void add(Object o); + + public void add(int index, Object o); + + public Object get(int index); + + public Object remove(int index); + + public int size(); +} diff --git a/group10/353261578/src/com/sx/structures/MyQueue.java b/group10/353261578/src/com/sx/structures/MyQueue.java new file mode 100644 index 0000000000..9d0cf9018b --- /dev/null +++ b/group10/353261578/src/com/sx/structures/MyQueue.java @@ -0,0 +1,25 @@ +package com.sx.structures; + +public class MyQueue { + private MyLinkedList elements ; + public MyQueue() { + elements = new MyLinkedList(); + } + + public void enQueue(Object o){ + elements.add(o); + } + + public Object deQueue(){ + return elements.removeFirst(); + } + + public boolean isEmpty(){ + if(size()>0) + return false; + return true; + } + public int size(){ + return elements.size(); + } +} diff --git a/group10/353261578/src/com/sx/structures/MyStack.java b/group10/353261578/src/com/sx/structures/MyStack.java new file mode 100644 index 0000000000..b81930604d --- /dev/null +++ b/group10/353261578/src/com/sx/structures/MyStack.java @@ -0,0 +1,37 @@ +package com.sx.structures; + +public class MyStack { + private int pointer; + private MyArrayList element; + public MyStack() { + element = new MyArrayList(); + pointer = -1; + } + + public void push(Object o){ + pointer++; + element.add(pointer); + } + public Object pop(){ + if(pointer<0) + return -1; + Object p = element.get(pointer); + pointer--; + return p; + } + /** + *鍙繑鍥炴爤椤跺厓绱 + * @return + */ + public Object peek(){ + if(pointer<0) + return -1; + return element.get(pointer); + } + public boolean isEmpty(){ + if(pointer<0) + return true; + return false; + } + +} diff --git a/group10/353261578/test/com/test/BinaryTreeTest.java b/group10/353261578/test/com/test/BinaryTreeTest.java new file mode 100644 index 0000000000..714c71798c --- /dev/null +++ b/group10/353261578/test/com/test/BinaryTreeTest.java @@ -0,0 +1,31 @@ +package com.test; + + +import org.junit.Test; + +import com.sx.structures.BinaryTree; + +public class BinaryTreeTest { + + private BinaryTree bt; + + @Test + public void test() { + bt = new BinaryTree(55); + bt.insert(23); + bt.insert(44); + bt.insert(16); + bt.insert(78); + bt.insert(99); + //鍏堝簭 + System.out.println("鍏堝簭閬嶅巻锛"); + bt.preOrder(bt.getRoot()); + //涓簭閬嶅巻 + System.out.println("\n涓簭閬嶅巻锛"); + bt.inOrder(bt.getRoot()); + //鍚庡簭 + System.out.println("\n鍚庡簭閬嶅巻锛"); + bt.postOrder(bt.getRoot()); + } + +} diff --git a/group10/353261578/test/com/test/MyArrayListTest.java b/group10/353261578/test/com/test/MyArrayListTest.java new file mode 100644 index 0000000000..9c8369f91b --- /dev/null +++ b/group10/353261578/test/com/test/MyArrayListTest.java @@ -0,0 +1,64 @@ +package com.test; + + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import com.sx.structures.MyArrayList; +import com.sx.structures.MyList; + +public class MyArrayListTest { + + private MyArrayList list ; + + @Test + public void testAddObject() { + for(int j=0;j<12;j++){ + list.add(j); + } + } + + @Test + public void testAddIntObject() { + list.add(5, 12); + list.add(10, 11); + } + + @Test + public void testGet() { + System.out.println(list.get(5)); + } + + @Test + public void testRemove() { + System.out.println("\nremoved 5锛"+list.remove(5)+"."); + } + + @Test + public void testSize() { + System.out.println("\nlist.size:"+list.size()); + } + + @After + public void Print(){ + System.out.println("鏈缁堢粨鏋滐細List:"); + PrintList(list); + } + @Before + public void createlist(){ + list = new MyArrayList(); + for(int j=0;j<12;j++){ + list.add(j); + } + System.out.println("鍒濆list:"); + PrintList(list); + } + + public static void PrintList(MyList list){ + for (int i = 0; i < list.size(); i++) { + System.out.print(list.get(i)+" "); + } + } + +} diff --git a/group10/353261578/test/com/test/MyLinkedListTest.java b/group10/353261578/test/com/test/MyLinkedListTest.java new file mode 100644 index 0000000000..62dcbbc8d1 --- /dev/null +++ b/group10/353261578/test/com/test/MyLinkedListTest.java @@ -0,0 +1,83 @@ +package com.test; + + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import com.sx.structures.MyLinkedList; +import com.sx.structures.MyList; + +public class MyLinkedListTest { + + private MyLinkedList list; + + @Test + public void testAddObject() { + list.add(3); + } + + @Test + public void testAddIntObject() { + list.add(0,"t-0"); + list.add(1, "t-1"); + } + + @Test + public void testGet() { + System.out.println(list.get(1)); + } + + @Test + public void testRemove() { + list.remove(0); + } + + @Test + public void testSize() { + System.out.println(); + System.out.println(" list-size="+list.size()); + } + + @Test + public void testAddFirst() { + list.addFirst("t-1"); + } + + @Test + public void testAddLast() { + list.addLast("T-last"); + } + + @Test + public void testRemoveFirst() { + list.removeFirst(); + } + + @Test + public void testRemoveLast() { + list.removeLast(); + } + + @After + public void Print(){ + System.out.println("\n鎿嶄綔涔嬪悗锛孡ist:"); + PrintList(list); + } + @Before + public void createlist(){ + list = new MyLinkedList(); + for(int j=0;j<11;j++){ + list.add(j); + } + System.out.println("鍒濆list:"); + PrintList(list); + } + + public static void PrintList(MyList list){ + for (int i = 0; i < list.size(); i++) { + System.out.print(list.get(i)+" "); + } + } + +} diff --git a/group10/353261578/test/com/test/StaQueTest.java b/group10/353261578/test/com/test/StaQueTest.java new file mode 100644 index 0000000000..fef9ba8ff7 --- /dev/null +++ b/group10/353261578/test/com/test/StaQueTest.java @@ -0,0 +1,44 @@ +package com.test; + + +import org.junit.Test; + +import com.sx.structures.MyQueue; +import com.sx.structures.MyStack; + +public class StaQueTest { + private MyStack s; + private MyQueue queue; + + @Test + public void Stacktest() { + + s = new MyStack(); + + for(int i=0;i<10;i++){ + s.push(i); + } + System.out.println("\npop:"); + while(s.isEmpty()==false){ + System.out.println("-"+s.isEmpty()+":"+s.pop()); + } + + System.out.println("\n"+"-"+s.isEmpty()+":"+s.pop()); + + System.out.println("\npeek"); + for(int i=1;i<3;i++){ + System.out.print(s.peek()+" "); + } + } + + @Test + public void queueTest(){ + queue = new MyQueue(); + for(int i=0;i<10;i++) + queue.enQueue(i); + while(queue.size()>0) + System.out.print(queue.deQueue()+" "); + } + + +} From 70f8492f7b314c5828ad9c9ec1345d7bba0fd830 Mon Sep 17 00:00:00 2001 From: Allen1218 <584709796@qq.com> Date: Sun, 26 Feb 2017 20:23:28 +0800 Subject: [PATCH 08/18] this is a test by Allen. --- group10/584709796/.classpath | 6 ++++++ group10/584709796/.gitignore | 1 + group10/584709796/.project | 17 +++++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 group10/584709796/.classpath create mode 100644 group10/584709796/.gitignore create mode 100644 group10/584709796/.project diff --git a/group10/584709796/.classpath b/group10/584709796/.classpath new file mode 100644 index 0000000000..d171cd4c12 --- /dev/null +++ b/group10/584709796/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/group10/584709796/.gitignore b/group10/584709796/.gitignore new file mode 100644 index 0000000000..ae3c172604 --- /dev/null +++ b/group10/584709796/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/group10/584709796/.project b/group10/584709796/.project new file mode 100644 index 0000000000..5c4e7104ad --- /dev/null +++ b/group10/584709796/.project @@ -0,0 +1,17 @@ + + + 584709796Learning + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + From 0fdf9c067af5fc2474438a00891fcdf0bc09d826 Mon Sep 17 00:00:00 2001 From: YouHmilyForProgramming <706097141@qq.com> Date: Sun, 26 Feb 2017 21:21:37 +0800 Subject: [PATCH 09/18] =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/hmily/learning/BinaryTreeNode.java | 31 +++++++ .../src/com/hmily/learning/Iterator.java | 7 ++ .../src/com/hmily/learning/LinkedList.java | 91 +++++++++++++++++++ .../learning/src/com/hmily/learning/List.java | 8 ++ .../src/com/hmily/learning/MyArrayList.java | 91 +++++++++++++++++++ .../src/com/hmily/learning/MyQueue.java | 23 +++++ .../src/com/hmily/learning/MyStack.java | 26 ++++++ .../learning/src/com/hmily/test/MyTest.java | 9 ++ 8 files changed, 286 insertions(+) create mode 100644 group10/706097141/learning/src/com/hmily/learning/BinaryTreeNode.java create mode 100644 group10/706097141/learning/src/com/hmily/learning/Iterator.java create mode 100644 group10/706097141/learning/src/com/hmily/learning/LinkedList.java create mode 100644 group10/706097141/learning/src/com/hmily/learning/List.java create mode 100644 group10/706097141/learning/src/com/hmily/learning/MyArrayList.java create mode 100644 group10/706097141/learning/src/com/hmily/learning/MyQueue.java create mode 100644 group10/706097141/learning/src/com/hmily/learning/MyStack.java create mode 100644 group10/706097141/learning/src/com/hmily/test/MyTest.java diff --git a/group10/706097141/learning/src/com/hmily/learning/BinaryTreeNode.java b/group10/706097141/learning/src/com/hmily/learning/BinaryTreeNode.java new file mode 100644 index 0000000000..202214a4a4 --- /dev/null +++ b/group10/706097141/learning/src/com/hmily/learning/BinaryTreeNode.java @@ -0,0 +1,31 @@ +package com.hmily.learning; +public class BinaryTreeNode { + + private Object data; + private BinaryTreeNode left; + private BinaryTreeNode right; + + public Object getData() { + return data; + } + public void setData(Object data) { + this.data = data; + } + public BinaryTreeNode getLeft() { + return left; + } + public void setLeft(BinaryTreeNode left) { + this.left = left; + } + public BinaryTreeNode getRight() { + return right; + } + public void setRight(BinaryTreeNode right) { + this.right = right; + } + + public BinaryTreeNode insert(Object o){ + return null; + } + +} diff --git a/group10/706097141/learning/src/com/hmily/learning/Iterator.java b/group10/706097141/learning/src/com/hmily/learning/Iterator.java new file mode 100644 index 0000000000..b81f51fc43 --- /dev/null +++ b/group10/706097141/learning/src/com/hmily/learning/Iterator.java @@ -0,0 +1,7 @@ +package com.hmily.learning; + +public interface Iterator { + public boolean hasNext(); + public Object next(); + +} diff --git a/group10/706097141/learning/src/com/hmily/learning/LinkedList.java b/group10/706097141/learning/src/com/hmily/learning/LinkedList.java new file mode 100644 index 0000000000..7ebcb01d0f --- /dev/null +++ b/group10/706097141/learning/src/com/hmily/learning/LinkedList.java @@ -0,0 +1,91 @@ +package com.hmily.learning; +/** + * 不会写 + * @author zyzhmily + * + */ +public class LinkedList implements List { + + //链表头 + private Node head; + //链表尾 + private Node tail; + //链表大小 + private int size; + + public void add(Object o){ + Node t = tail; + Node node = new Node(o, null); + tail = node; + if (t == null) { + head = node; + } else { + t.next = node; + } + size++; + } + public void add(int index , Object o){ + if(index<0||index>size()){ + throw new IndexOutOfBoundsException(); + } + if (index == size) { + add(o); + } else { + Node node = head; + for (int i = 0; i < index-1; i++) { + node = node.next; + } + Node newNode = new Node(o, node); + node.next = newNode; + newNode.next = node; + size++; + } + } + public Object get(int index){ + if(index<0||index>size()){ + throw new IndexOutOfBoundsException(); + } + Node node=head; + for(int i=0;isize()){ + throw new IndexOutOfBoundsException(); + } + return null; + } + + public int size(){ + return this.size; + } + + public void addFirst(Object o){ + Node newNode = new Node(o,null); + newNode.next=head.next; + } + public void addLast(Object o){ + add(o); + } + public Object removeFirst(){ + return null; + } + public Object removeLast(){ + return null; + } + public Iterator iterator(){ + return null; + } + + + private static class Node{ + Object data; + Node next; + public Node(Object data, Node next) { + this.data = data; + this.next = next; + } + } +} diff --git a/group10/706097141/learning/src/com/hmily/learning/List.java b/group10/706097141/learning/src/com/hmily/learning/List.java new file mode 100644 index 0000000000..02ef056bd3 --- /dev/null +++ b/group10/706097141/learning/src/com/hmily/learning/List.java @@ -0,0 +1,8 @@ +package com.hmily.learning; +public interface List { + public void add(Object o); + public void add(int index, Object o); + public Object get(int index); + public Object remove(int index); + public int size(); +} diff --git a/group10/706097141/learning/src/com/hmily/learning/MyArrayList.java b/group10/706097141/learning/src/com/hmily/learning/MyArrayList.java new file mode 100644 index 0000000000..46e1c564af --- /dev/null +++ b/group10/706097141/learning/src/com/hmily/learning/MyArrayList.java @@ -0,0 +1,91 @@ +package com.hmily.learning; + +public class MyArrayList implements List,Iterator{ + + private int size = 0; + + private Object[] elementData = new Object[100]; + + /** + * 添加元素 + */ + public void add(Object o){ + if(size==elementData.length){ + Object[] newElementData = new Object[elementData.length+1]; + for(int i=0;iindex;i--){ + elementData[i]=elementData[i-1]; + } + elementData[index]=o; + size++; + } + /** + * 获取元素 + */ + public Object get(int index){ + if(index>=size()||index<0){ + throw new ArrayIndexOutOfBoundsException(); + } + return elementData[index]; + } + /** + * 移除元素 + */ + public Object remove(int index){ + if(index<0||index>size()){ + throw new ArrayIndexOutOfBoundsException(); + } + Object o=elementData[index]; + for(int i=index;i Date: Sun, 26 Feb 2017 21:54:24 +0800 Subject: [PATCH 10/18] =?UTF-8?q?=E6=96=87=E7=AB=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- group10/205301442/test/com/coding/week1/AllTests.java | 2 +- .../\346\226\207\347\253\240\345\234\260\345\235\200.txt" | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 "group10/205301442/\346\226\207\347\253\240\345\234\260\345\235\200.txt" diff --git a/group10/205301442/test/com/coding/week1/AllTests.java b/group10/205301442/test/com/coding/week1/AllTests.java index e72687d19a..fb54214d4d 100644 --- a/group10/205301442/test/com/coding/week1/AllTests.java +++ b/group10/205301442/test/com/coding/week1/AllTests.java @@ -5,7 +5,7 @@ import org.junit.runners.Suite.SuiteClasses; @RunWith(Suite.class) -@SuiteClasses({ TestArrayList.class, TestLinkedList.class, TestQueue.class, TestStack.class }) +@SuiteClasses({ TestArrayList.class, TestLinkedList.class, TestQueue.class, TestStack.class,TestBiranyTreeNode.class }) public class AllTests { } diff --git "a/group10/205301442/\346\226\207\347\253\240\345\234\260\345\235\200.txt" "b/group10/205301442/\346\226\207\347\253\240\345\234\260\345\235\200.txt" new file mode 100644 index 0000000000..f40c89adb9 --- /dev/null +++ "b/group10/205301442/\346\226\207\347\253\240\345\234\260\345\235\200.txt" @@ -0,0 +1,2 @@ +第一周: +《cpu的好伙伴》 http://blog.csdn.net/kellyfun/article/details/57504808 \ No newline at end of file From 678cebc787816059c4d99894faab62b85841d7bc Mon Sep 17 00:00:00 2001 From: Kelly <205301442@qq.com> Date: Sun, 26 Feb 2017 21:58:07 +0800 Subject: [PATCH 11/18] wenzhang --- .../\346\226\207\347\253\240\345\234\260\345\235\200.txt" | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git "a/group10/205301442/\346\226\207\347\253\240\345\234\260\345\235\200.txt" "b/group10/205301442/\346\226\207\347\253\240\345\234\260\345\235\200.txt" index f40c89adb9..fab8d99a58 100644 --- "a/group10/205301442/\346\226\207\347\253\240\345\234\260\345\235\200.txt" +++ "b/group10/205301442/\346\226\207\347\253\240\345\234\260\345\235\200.txt" @@ -1,2 +1 @@ -第一周: -《cpu的好伙伴》 http://blog.csdn.net/kellyfun/article/details/57504808 \ No newline at end of file +first week: http://blog.csdn.net/kellyfun/article/details/57504808 \ No newline at end of file From 81b67988584d6bb5e199077d0c54a3bc0d949563 Mon Sep 17 00:00:00 2001 From: szlele <595128841@qq.com> Date: Sun, 26 Feb 2017 23:12:25 +0800 Subject: [PATCH 12/18] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- group10/595128841/Readme.txt | 1 + group10/595128841/src/org/le/ArrayList.java | 144 +++++++++ group10/595128841/src/org/le/LinkedList.java | 299 +++++++++++++++++++ group10/595128841/src/org/le/List.java | 19 ++ 4 files changed, 463 insertions(+) create mode 100644 group10/595128841/Readme.txt create mode 100644 group10/595128841/src/org/le/ArrayList.java create mode 100644 group10/595128841/src/org/le/LinkedList.java create mode 100644 group10/595128841/src/org/le/List.java diff --git a/group10/595128841/Readme.txt b/group10/595128841/Readme.txt new file mode 100644 index 0000000000..a5206d5b31 --- /dev/null +++ b/group10/595128841/Readme.txt @@ -0,0 +1 @@ +绗竴娆℃枃绔犲湴鍧锛歨ttp://www.jianshu.com/p/089ac95363d4 濡備綍鑷繁瀹炵幇涓涓畝鍗曠殑ArrayList \ No newline at end of file diff --git a/group10/595128841/src/org/le/ArrayList.java b/group10/595128841/src/org/le/ArrayList.java new file mode 100644 index 0000000000..571362606b --- /dev/null +++ b/group10/595128841/src/org/le/ArrayList.java @@ -0,0 +1,144 @@ +/** + * + */ +package org.le; + +/** + * @author yue + * @time 2017骞2鏈19鏃 + */ +public class ArrayList implements List { + + private Object[] elementData; + + private int size; + + public ArrayList(int initCapcity){ + if(initCapcity < 0){ + throw new IllegalArgumentException("initCapcity 蹇呴』澶т簬0"); + } + elementData = new Object[initCapcity]; + } + + public ArrayList(){ + elementData = new Object[10]; + } + + @Override + public void add(Object obj) { + grow(size + 1); + elementData[size++] = obj; + } + + @Override + public void add(int index, Object obj) { + rangeCheckForAdd(index); + grow(size + 1); + System.arraycopy(elementData, index, elementData, index+1, size - index); + elementData[index] = obj; + size ++; + } + + @Override + public void remove(Object obj) { + if(obj == null){ + for (int i = 0; i < size; i++) { + if(elementData[i] == null){ + fastRemove(i); + } + } + }else{ + for (int i = 0; i < size; i++) { + if(obj.equals(elementData[i])){ + fastRemove(i); + } + } + } + } + + @Override + public E remove(int index) { + rangeCheck(index); + int movedNum = size - index - 1; + E oldElement = elementData(index); + System.arraycopy(elementData, index+1, elementData, index, movedNum); + elementData[--size] = null; + return oldElement; + } + + @Override + public E get(int index) { + rangeCheck(index); + return elementData(index); + } + + @Override + public E set(int index, E obj) { + rangeCheck(index); + E oldElement = elementData(index); + elementData[index] = obj; + return oldElement; + } + + @Override + public int indexOf(E obj) { + if(obj == null){ + for (int i = 0; i < size; i++) { + if(elementData[i] == null){ + return i; + } + } + }else{ + for (int i = 0; i < size; i++) { + if(obj.equals(elementData[i])){ + return i; + } + } + } + return -1; + } + + /** + * 鏁扮粍鎵╁ + * @param minCapacity + */ + private void grow(int minCapacity) { + if(minCapacity <= elementData.length){ + return; + } + int oldCapacity = elementData.length; + int newCapacity = minCapacity + (oldCapacity >> 1); + if(newCapacity < minCapacity){ + newCapacity = minCapacity; + } + if(minCapacity > Integer.MAX_VALUE){ + newCapacity = Integer.MAX_VALUE; + } + Object[] newArray = new Object[newCapacity]; + System.arraycopy(elementData, 0, newArray, 0, newCapacity); + elementData = newArray; + } + + @SuppressWarnings("unchecked") + private E elementData(int index){ + return (E) elementData[index]; + } + + private void fastRemove(int i) { + int numMoved = size - i -1; + if(numMoved > 0){ + System.arraycopy(elementData, i+1, elementData, i, numMoved); + } + elementData[-- size] = null; + } + + private void rangeCheck(int index){ + if(index >= size || index <0) + throw new IndexOutOfBoundsException("index:"+index+",size:"+size); + } + + private void rangeCheckForAdd(int index){ + if(index > size || index <0) + throw new IndexOutOfBoundsException("index:"+index+",size:"+size); + } +} diff --git a/group10/595128841/src/org/le/LinkedList.java b/group10/595128841/src/org/le/LinkedList.java new file mode 100644 index 0000000000..fbe95017cb --- /dev/null +++ b/group10/595128841/src/org/le/LinkedList.java @@ -0,0 +1,299 @@ +/** + * + */ +package org.le; + +import java.util.NoSuchElementException; + +/** + * @author yue + * @time 2017骞2鏈19鏃 + */ +public class LinkedList implements List { + + private int size = 0; + + private Node first; + + private Node last; + + private static class Node{ + E item; + Node prev; + Node next; + Node(Node prev,E item, Node next) { + super(); + this.item = item; + this.prev = prev; + this.next = next; + } + } + + public LinkedList(){ + + } + + /** + * 澶撮儴鎻掑叆 + */ + private void linkFirst(E e){ + final Node f = first; + final Node newNode = new Node(null,e,f); + first = newNode; + if(f == null) + last = newNode; + else + f.prev = newNode; + size ++; + } + + /** + * 灏鹃儴鎻掑叆 + */ + private void linkLast(E e){ + final Node l = last; + final Node newNode = new Node<>(l,e,null); + last = newNode; + if(last == null) + first = newNode; + else + l.next = newNode; + size ++; + } + + /** + * 鏌愪釜涓嶄负null鍏冪礌涔嬪墠鎻掑叆 + */ + private void linkBefore(E e,Node succ){ + final Node pred = succ.prev; + final Node newNode = new Node<>(pred,e,succ); + succ.prev = newNode; + if(pred == null) + first = newNode; + else + pred.next = newNode; + size ++; + } + + /** + * 鍒犻櫎澶撮儴鍏冪礌 + */ + private E unlinkFirst(Node f){ + final E element = f.item; + final Node next = f.next; + f.item = null; + f.next = null; + first = next; + if(next == null) + last = null; + else + next.prev = null; + size -- ; + return element; + } + /** + * 鍒犻櫎灏鹃儴鍏冪礌 + * @param l + * @return + */ + private E unlinkLast(Node l){ + final E element = l.item; + final Node prev = l.prev; + l.item = null; + l.prev = null; + last = prev; + if(prev == null) + first = null; + else + prev.next = null; + size -- ; + return element; + } + + /** + * 鍒犻櫎鎸囧畾鑺傜偣 + * @param e + * @return + */ + private E unlink(Node e){ + final Node prev = e.prev; + final E element = e.item; + final Node next = e.next; + + if(prev == null){ + first = next; + }else{ + prev.next = next; + e.prev = null; + } + + if(next == null){ + last = prev; + }else{ + next.prev = prev; + e.next = null; + } + e.item = null; + size -- ; + return element; + } + + /** + * 璇ユ柟娉曢粯璁ゅ湪灏鹃儴娣诲姞 + */ + @Override + public void add(E e) { + linkLast(e); + } + + /** + * + */ + @Override + public void add(int index, E e) { + checkPositionIndex(index); + if(index == size){ + linkLast(e); + }else{ + linkBefore(e, node(index)); + } + } + + private Node node(int index) { + //灏忎簬瀹归噺涓鍗 + if(index < (size >> 1)){ + Node x = first; + for(int i = 0; i < index; i++){ + x = x.next; + } + return x; + }else{ + Node x = last; + for(int i = size - 1; i > index; i --){ + x = x.prev; + } + return x; + } + } + + private void checkPositionIndex(int index){ + if(index <0 || index > size){ + throw new IndexOutOfBoundsException("绱㈠紩瓒婄晫锛歩ndex锛"+index+"锛宻ize锛"+size); + } + } + + private void checkElementIndex(int index){ + if(index <0 || index >= size){ + throw new IndexOutOfBoundsException("绱㈠紩瓒婄晫锛歩ndex锛"+index+"锛宻ize锛"+size); + } + } + + /** + * + */ + @Override + public void remove(E obj) { + if(obj == null){ + for(Node x = first;x != null; x = x.next){ + if(x.item == null){ + unlink(x); + } + } + }else{ + for(Node x = first;x != null;x = x.next){ + if(obj.equals(x.item)){ + unlink(x); + } + } + } + } + + /** + * + */ + @Override + public E remove(int index) { + checkElementIndex(index); + return unlink(node(index)); + } + + /** + * + */ + @Override + public E get(int index) { + checkElementIndex(index); + return node(index).item; + } + + /** + * + */ + @Override + public E set(int index, E obj) { + checkElementIndex(index); + Node x = node(index); + E oldVal = x.item; + x.item = obj; + return oldVal; + } + + /** + * + */ + @Override + public int indexOf(E obj) { + int index = 0; + if(obj == null){ + for(Node x = first;x != null;x = x.next){ + if(x.item == null) + return index; + index ++; + } + }else{ + for(Node x = first; x != null; x = x.next){ + if(obj.equals(x.item)) + return index; + index ++; + } + } + return -1; + } + /** + * 寮瑰嚭鏍堥《鐨勫厓绱狅紝涓嶅垹闄ゅ厓绱 + * @param e + * @return + */ + public E peek(){ + final Node e = first; + return e == null ? null : e.item; + } + + /** + * 寮瑰嚭鏍堥《鍏冪礌锛屽垹闄ゅ厓绱 + * @return + */ + public E poll(){ + final Node e = first; + return (e == null) ? null : unlinkFirst(e); + } + /** + * 鍏ユ爤锛屾爤椤 + * @param e + */ + public void push(E e){ + linkFirst(e); + } + + /** + * 鍑烘爤锛屽垹闄ゅ苟杩斿洖鏍堥《鍏冪礌 + * @return + */ + public E pop(){ + final Node f = first; + if(f == null) + throw new NoSuchElementException(); + return unlinkFirst(f); + } + +} diff --git a/group10/595128841/src/org/le/List.java b/group10/595128841/src/org/le/List.java new file mode 100644 index 0000000000..5fa9d6799a --- /dev/null +++ b/group10/595128841/src/org/le/List.java @@ -0,0 +1,19 @@ +package org.le; + +public interface List { + + void add(E obj); + + void add(int index,E obj); + + void remove(E obj); + + E remove(int index); + + E get(int index); + + E set(int index,E obj); + + int indexOf(E obj); + +} From e8b73f6460745d2751f57376047c92395a77f9a5 Mon Sep 17 00:00:00 2001 From: cheungchan <1377699408@qq.com> Date: Sun, 26 Feb 2017 23:40:35 +0800 Subject: [PATCH 13/18] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96gitigore?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- group05/1377699408/.gitignore | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 group05/1377699408/.gitignore diff --git a/group05/1377699408/.gitignore b/group05/1377699408/.gitignore new file mode 100644 index 0000000000..5deea7e781 --- /dev/null +++ b/group05/1377699408/.gitignore @@ -0,0 +1,4 @@ +/bin +.classpath +.project +.settings/ From cf1bdfba408881e172efc2c468140ef5d529da3e Mon Sep 17 00:00:00 2001 From: cheungchan <1377699408@qq.com> Date: Sun, 26 Feb 2017 23:40:53 +0800 Subject: [PATCH 14/18] =?UTF-8?q?ArrayList=E5=92=8C=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20170226/src/list/ArrayList.java" | 54 +++++++++++++++++ .../20170226/src/test/ArrayListTest.java" | 59 +++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 "group05/1377699408/\344\275\234\344\270\232/20170226/src/list/ArrayList.java" create mode 100644 "group05/1377699408/\344\275\234\344\270\232/20170226/src/test/ArrayListTest.java" diff --git "a/group05/1377699408/\344\275\234\344\270\232/20170226/src/list/ArrayList.java" "b/group05/1377699408/\344\275\234\344\270\232/20170226/src/list/ArrayList.java" new file mode 100644 index 0000000000..f015ad8623 --- /dev/null +++ "b/group05/1377699408/\344\275\234\344\270\232/20170226/src/list/ArrayList.java" @@ -0,0 +1,54 @@ +package list; + +import java.util.Arrays; + +public class ArrayList { + private transient static int INITIAL_SIZE = 10; + private transient int arrayLength; + private transient int size; + private transient E[] array; + public ArrayList(){ + array = (E[]) new Object[INITIAL_SIZE]; + arrayLength = INITIAL_SIZE; + } + public ArrayList(int size){ + if(size<=0){ + throw new IllegalArgumentException("鍙傛暟涓嶅彲浠ュ皬浜0"); + } + array = (E[])new Object[size]; + arrayLength = array.length; + ensureCapacity(size); + this.size = size; + } + public int size(){ + return size; + } + public void add(E e){ + ensureCapacity(size+1); + array[size] = e; + size++; + } + public E get(int index){ + if(index<0 || index > size){ + throw new IllegalArgumentException("绱㈠紩瓒婄晫"); + } + return array[index]; + + } + public E set(int index, E e){ + if(index<0 || index>size){ + throw new IllegalArgumentException("绱㈠紩瓒婄晫"); + } + E result = array[index]; + array[index] = e; + return result; + } + private void ensureCapacity(int size){ + E[] oldArray = array; + int oldSize = arrayLength; + while(size>arrayLength){ + arrayLength = arrayLength + (arrayLength >> 1); + array = Arrays.copyOf(oldArray, arrayLength); + } + } +} diff --git "a/group05/1377699408/\344\275\234\344\270\232/20170226/src/test/ArrayListTest.java" "b/group05/1377699408/\344\275\234\344\270\232/20170226/src/test/ArrayListTest.java" new file mode 100644 index 0000000000..e0d277eb10 --- /dev/null +++ "b/group05/1377699408/\344\275\234\344\270\232/20170226/src/test/ArrayListTest.java" @@ -0,0 +1,59 @@ +package test; + +import junit.framework.TestCase; +import list.ArrayList; + +public class ArrayListTest extends TestCase { + + protected void setUp() throws Exception { + super.setUp(); + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + public void testArrayList() { + ArrayList a = new ArrayList(); + assertEquals(a.size(), 0); + } + + public void testArrayListInt() { + ArrayList a = new ArrayList(9); + assertEquals(a.size(), 9); + } + + public void testSize() { + ArrayList a = new ArrayList(9); + assertEquals(a.size(), 9); + ArrayList a2 = new ArrayList(100); + assertEquals(a2.size(), 100); + } + + public void testAdd() { + ArrayList a = new ArrayList(); + for (int i = 0; i < 1000; i++) { + a.add(5); + assertEquals(a.size(), i+1); + assertEquals(a.get(i), new Integer(5)); + } + } + + public void testGet() { + ArrayList a = new ArrayList(); + a.add(6); + assertEquals(a.get(0), new Integer(6)); + + } + + public void testSet() { + ArrayList a = new ArrayList(); + for (int i = 0; i < 100; i++) { + a.add(56); + } + a.set(5, 66); + assertEquals(a.get(5), new Integer(66)); + assertEquals(a.get(7), new Integer(56)); + } + +} From 88144c6cbbe850c81c94a0c6ebc853d9401c1279 Mon Sep 17 00:00:00 2001 From: Liu yu Date: Mon, 27 Feb 2017 00:19:23 +0800 Subject: [PATCH 15/18] data structure --- group10/364298692/cs/.classpath | 6 ++ group10/364298692/cs/.project | 17 ++++ .../cs/.settings/org.eclipse.jdt.core.prefs | 11 +++ .../cs/src/com/coding/basic/ArrayList.java | 75 +++++++++++++++ .../src/com/coding/basic/BinaryTreeNode.java | 32 +++++++ .../cs/src/com/coding/basic/Iterator.java | 7 ++ .../cs/src/com/coding/basic/LinkedList.java | 92 +++++++++++++++++++ .../cs/src/com/coding/basic/List.java | 9 ++ .../cs/src/com/coding/basic/Queue.java | 19 ++++ .../cs/src/com/coding/basic/Stack.java | 22 +++++ 10 files changed, 290 insertions(+) create mode 100644 group10/364298692/cs/.classpath create mode 100644 group10/364298692/cs/.project create mode 100644 group10/364298692/cs/.settings/org.eclipse.jdt.core.prefs create mode 100644 group10/364298692/cs/src/com/coding/basic/ArrayList.java create mode 100644 group10/364298692/cs/src/com/coding/basic/BinaryTreeNode.java create mode 100644 group10/364298692/cs/src/com/coding/basic/Iterator.java create mode 100644 group10/364298692/cs/src/com/coding/basic/LinkedList.java create mode 100644 group10/364298692/cs/src/com/coding/basic/List.java create mode 100644 group10/364298692/cs/src/com/coding/basic/Queue.java create mode 100644 group10/364298692/cs/src/com/coding/basic/Stack.java diff --git a/group10/364298692/cs/.classpath b/group10/364298692/cs/.classpath new file mode 100644 index 0000000000..fceb4801b5 --- /dev/null +++ b/group10/364298692/cs/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/group10/364298692/cs/.project b/group10/364298692/cs/.project new file mode 100644 index 0000000000..8536996016 --- /dev/null +++ b/group10/364298692/cs/.project @@ -0,0 +1,17 @@ + + + cs + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/group10/364298692/cs/.settings/org.eclipse.jdt.core.prefs b/group10/364298692/cs/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..3a21537071 --- /dev/null +++ b/group10/364298692/cs/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/group10/364298692/cs/src/com/coding/basic/ArrayList.java b/group10/364298692/cs/src/com/coding/basic/ArrayList.java new file mode 100644 index 0000000000..71761666aa --- /dev/null +++ b/group10/364298692/cs/src/com/coding/basic/ArrayList.java @@ -0,0 +1,75 @@ +package com.coding.basic; + +import java.util.Arrays; + +public class ArrayList implements List{ + + private int size = 0; + + private Object[] elementData; + + public ArrayList(int initialCapacity){ + elementData = new Object[initialCapacity]; + } + + public ArrayList(){ + elementData = new Object[10]; + } + + public void ensureCapacity(int minCapacity){ + int oldCapacity = elementData.length; + if(minCapacity > oldCapacity){ + Object[] oldData = elementData; + int newCapacity = (oldCapacity * 3) / 2 + 1; + if(minCapacity > newCapacity){ + newCapacity = minCapacity; + } + elementData = Arrays.copyOf(elementData, newCapacity); + } + } + + public void add(Object o){ + ensureCapacity(size + 1); + elementData[size] = o; + size++; + } + public void add(int index, Object o){ + ensureCapacity(size + 1); + for(int i = size-1; i >= index; i--){ + elementData[i+1] = elementData[i]; + } + elementData[index] = o; + size++; + } + + public Object get(int index){ + if(index > size-1){ + return null; + }else{ + return elementData[index]; + } + } + + public Object remove(int index){ + if(index > size-1){ + return null; + }else{ + Object obj = elementData[index]; + for(int i=index; i size-1){ + return null; + }else{ + Node node = head; + for(int i = 0; i < index; i++){ + node = node.next; + } + return node.data; + } + } + public Object remove(int index){ + if(index > size-1){ + return null; + }else if(index == 0){ + Object obj = head.data; + head = head.next; + size--; + return obj; + }else{ + Node node = head; + //获得被删掉节点的前一个节点 + for(int i = 0; i < index-1; i++){ + node = node.next; + } + Object obj = node.next.data; + node.next = node.next.next; + size--; + return obj; + } + } + + public int size(){ + return size; + } + + public void addFirst(Object o){ + Node newHead = new Node(); + newHead.data = o; + newHead.next = head; + head = newHead; + size++; + } + public void addLast(Object o){ + Node node = head; + while(node.next != null){ + node = node.next; + } + Node newNode = new Node(); + newNode.data = o; + node.next = newNode; + size++; + } + public Object removeFirst(){ + return remove(0); + } + public Object removeLast(){ + return remove(size); + } + public Iterator iterator(){ + return null; + } + + + private static class Node{ + Object data; + Node next; + } +} diff --git a/group10/364298692/cs/src/com/coding/basic/List.java b/group10/364298692/cs/src/com/coding/basic/List.java new file mode 100644 index 0000000000..10d13b5832 --- /dev/null +++ b/group10/364298692/cs/src/com/coding/basic/List.java @@ -0,0 +1,9 @@ +package com.coding.basic; + +public interface List { + public void add(Object o); + public void add(int index, Object o); + public Object get(int index); + public Object remove(int index); + public int size(); +} diff --git a/group10/364298692/cs/src/com/coding/basic/Queue.java b/group10/364298692/cs/src/com/coding/basic/Queue.java new file mode 100644 index 0000000000..36e516e266 --- /dev/null +++ b/group10/364298692/cs/src/com/coding/basic/Queue.java @@ -0,0 +1,19 @@ +package com.coding.basic; + +public class Queue { + + public void enQueue(Object o){ + } + + public Object deQueue(){ + return null; + } + + public boolean isEmpty(){ + return false; + } + + public int size(){ + return -1; + } +} diff --git a/group10/364298692/cs/src/com/coding/basic/Stack.java b/group10/364298692/cs/src/com/coding/basic/Stack.java new file mode 100644 index 0000000000..a5a04de76d --- /dev/null +++ b/group10/364298692/cs/src/com/coding/basic/Stack.java @@ -0,0 +1,22 @@ +package com.coding.basic; + +public class Stack { + private ArrayList elementData = new ArrayList(); + + public void push(Object o){ + } + + public Object pop(){ + return null; + } + + public Object peek(){ + return null; + } + public boolean isEmpty(){ + return false; + } + public int size(){ + return -1; + } +} From 6e681b2f8da07d22cfb1523ada7bdc8c2f658303 Mon Sep 17 00:00:00 2001 From: ChristopherYue Date: Mon, 27 Feb 2017 01:55:13 +0800 Subject: [PATCH 16/18] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=86ArrayList=20?= =?UTF-8?q?=E5=92=8C=20LinkedList?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/coding/basic/ArrayList.java | 89 +++++++++++ .../src/com/coding/basic/ArrayListTest.java | 66 ++++++++ .../src/com/coding/basic/LinkedList.java | 143 ++++++++++++++++++ .../src/com/coding/basic/LinkedListTest.java | 100 ++++++++++++ .../630505243/src/com/coding/basic/List.java | 9 ++ 5 files changed, 407 insertions(+) create mode 100644 group10/630505243/src/com/coding/basic/ArrayList.java create mode 100644 group10/630505243/src/com/coding/basic/ArrayListTest.java create mode 100644 group10/630505243/src/com/coding/basic/LinkedList.java create mode 100644 group10/630505243/src/com/coding/basic/LinkedListTest.java create mode 100644 group10/630505243/src/com/coding/basic/List.java diff --git a/group10/630505243/src/com/coding/basic/ArrayList.java b/group10/630505243/src/com/coding/basic/ArrayList.java new file mode 100644 index 0000000000..396dc96ae7 --- /dev/null +++ b/group10/630505243/src/com/coding/basic/ArrayList.java @@ -0,0 +1,89 @@ +package com.coding.basic; + +public class ArrayList implements List { + + private int size = 0; + + private Object[] elementData = new Object[100]; + + public void add(Object o){ + if(o!=null){ + elementData[size] = o; + if(size<100-1){ + size++; + }else{ + Object[] temp = new Object[(size+1)+100]; + System.arraycopy(elementData, 0, temp, 0, size); + elementData = temp; + size++; + } + } + + } + public void add(int index, Object o){ + if(index<=size){ + + if(index=index;i--){ + if(i==index){ + temps[index] = tmp; + }else{ + temps[i]=temps[i-1]; + } + } + elementData = temps; + + }else if(index==elementData.length-1){ + //新增元素位置处于数组右边界 + Object[] temp = new Object[(size+1)+100]; + System.arraycopy(elementData, 0, temp, 0, size); + elementData = temp; + elementData[index] = o; + } + } + } + + public Object get(int index){ + if(index<=size){ + return elementData[index]; + }else{ + return null; + } + } + + public Object remove(int index){ + Object rtnObj = null; + if(index<=size){ + if(index Date: Mon, 27 Feb 2017 10:43:30 +0800 Subject: [PATCH 17/18] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E7=AC=AC=E4=B8=80=E5=91=A8=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- group10/364298692/article.md | 3 +++ group10/364298692/cs/.gitignore | 1 + .../cs/src/com/coding/basic/BinaryTreeNode.java | 11 ++++++++++- .../364298692/cs/src/com/coding/basic/Queue.java | 12 ++++++++---- .../364298692/cs/src/com/coding/basic/Stack.java | 13 ++++++++----- 5 files changed, 30 insertions(+), 10 deletions(-) create mode 100644 group10/364298692/article.md create mode 100644 group10/364298692/cs/.gitignore diff --git a/group10/364298692/article.md b/group10/364298692/article.md new file mode 100644 index 0000000000..01af1f5151 --- /dev/null +++ b/group10/364298692/article.md @@ -0,0 +1,3 @@ +# 每周文章链接 +## week01 计算机的组成 + diff --git a/group10/364298692/cs/.gitignore b/group10/364298692/cs/.gitignore new file mode 100644 index 0000000000..ae3c172604 --- /dev/null +++ b/group10/364298692/cs/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/group10/364298692/cs/src/com/coding/basic/BinaryTreeNode.java b/group10/364298692/cs/src/com/coding/basic/BinaryTreeNode.java index d7ac820192..b89fa26363 100644 --- a/group10/364298692/cs/src/com/coding/basic/BinaryTreeNode.java +++ b/group10/364298692/cs/src/com/coding/basic/BinaryTreeNode.java @@ -26,7 +26,16 @@ public void setRight(BinaryTreeNode right) { } public BinaryTreeNode insert(Object o){ - return null; + BinaryTreeNode node = new BinaryTreeNode(); + node.data = o; + if(data.hashCode() > o.hashCode()){ + this.right = node; + }else{ + this.left = node; + } + return this; } + + } diff --git a/group10/364298692/cs/src/com/coding/basic/Queue.java b/group10/364298692/cs/src/com/coding/basic/Queue.java index 36e516e266..1a96515399 100644 --- a/group10/364298692/cs/src/com/coding/basic/Queue.java +++ b/group10/364298692/cs/src/com/coding/basic/Queue.java @@ -2,18 +2,22 @@ public class Queue { - public void enQueue(Object o){ + private LinkedList linkedList; + + public void enQueue(Object o){ + linkedList.addLast(o); } public Object deQueue(){ - return null; + Object obj = linkedList.removeFirst(); + return obj; } public boolean isEmpty(){ - return false; + return linkedList.size() == 0; } public int size(){ - return -1; + return linkedList.size(); } } diff --git a/group10/364298692/cs/src/com/coding/basic/Stack.java b/group10/364298692/cs/src/com/coding/basic/Stack.java index a5a04de76d..7043ba9386 100644 --- a/group10/364298692/cs/src/com/coding/basic/Stack.java +++ b/group10/364298692/cs/src/com/coding/basic/Stack.java @@ -3,20 +3,23 @@ public class Stack { private ArrayList elementData = new ArrayList(); - public void push(Object o){ + public void push(Object o){ + elementData.add(elementData.size(), o); } public Object pop(){ - return null; + Object obj = elementData.remove(elementData.size()-1); + return obj; } public Object peek(){ - return null; + Object obj = elementData.get(0); + return obj; } public boolean isEmpty(){ - return false; + return elementData.size()==0; } public int size(){ - return -1; + return elementData.size(); } } From a6b0c79ed412d4819d403254b12d6801a47cb377 Mon Sep 17 00:00:00 2001 From: Allen1218 <584709796@qq.com> Date: Mon, 27 Feb 2017 12:47:41 +0800 Subject: [PATCH 18/18] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A=EF=BC=8Cby=EF=BC=9A584709796=EF=BC=8C=E5=8F=B2?= =?UTF-8?q?=E6=A0=8B=E6=A0=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- group10/584709796/{ => worka}/.classpath | 1 + group10/584709796/{ => worka}/.gitignore | 2 +- group10/584709796/{ => worka}/.project | 2 +- .../.settings/org.eclipse.jdt.core.prefs | 11 ++ .../worka/src/com/coding/basic/ArrayList.java | 75 ++++++++ .../src/com/coding/basic/BinaryTreeNode.java | 32 ++++ .../worka/src/com/coding/basic/DemoTest.java | 72 ++++++++ .../worka/src/com/coding/basic/Iterator.java | 7 + .../src/com/coding/basic/LinkedList.java | 168 ++++++++++++++++++ .../worka/src/com/coding/basic/List.java | 9 + .../worka/src/com/coding/basic/Queue.java | 24 +++ .../worka/src/com/coding/basic/ReadMe.txt | 11 ++ .../worka/src/com/coding/basic/Stack.java | 49 +++++ ...46\214\207\344\273\244\343\200\201cpu.pdf" | Bin 0 -> 180260 bytes liuxin/src/com/coding/basic/Stack.java | 44 ++--- 15 files changed, 483 insertions(+), 24 deletions(-) rename group10/584709796/{ => worka}/.classpath (59%) rename group10/584709796/{ => worka}/.gitignore (85%) rename group10/584709796/{ => worka}/.project (87%) create mode 100644 group10/584709796/worka/.settings/org.eclipse.jdt.core.prefs create mode 100644 group10/584709796/worka/src/com/coding/basic/ArrayList.java create mode 100644 group10/584709796/worka/src/com/coding/basic/BinaryTreeNode.java create mode 100644 group10/584709796/worka/src/com/coding/basic/DemoTest.java create mode 100644 group10/584709796/worka/src/com/coding/basic/Iterator.java create mode 100644 group10/584709796/worka/src/com/coding/basic/LinkedList.java create mode 100644 group10/584709796/worka/src/com/coding/basic/List.java create mode 100644 group10/584709796/worka/src/com/coding/basic/Queue.java create mode 100644 group10/584709796/worka/src/com/coding/basic/ReadMe.txt create mode 100644 group10/584709796/worka/src/com/coding/basic/Stack.java create mode 100644 "group10/584709796/worka/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232\357\274\232\345\206\205\345\255\230\343\200\201\346\214\207\344\273\244\343\200\201cpu.pdf" diff --git a/group10/584709796/.classpath b/group10/584709796/worka/.classpath similarity index 59% rename from group10/584709796/.classpath rename to group10/584709796/worka/.classpath index d171cd4c12..ece376cba2 100644 --- a/group10/584709796/.classpath +++ b/group10/584709796/worka/.classpath @@ -1,6 +1,7 @@ + diff --git a/group10/584709796/.gitignore b/group10/584709796/worka/.gitignore similarity index 85% rename from group10/584709796/.gitignore rename to group10/584709796/worka/.gitignore index ae3c172604..3e2fcc7171 100644 --- a/group10/584709796/.gitignore +++ b/group10/584709796/worka/.gitignore @@ -1 +1 @@ -/bin/ +/bin/ diff --git a/group10/584709796/.project b/group10/584709796/worka/.project similarity index 87% rename from group10/584709796/.project rename to group10/584709796/worka/.project index 5c4e7104ad..2858b5b710 100644 --- a/group10/584709796/.project +++ b/group10/584709796/worka/.project @@ -1,6 +1,6 @@ - 584709796Learning + 2017Learning diff --git a/group10/584709796/worka/.settings/org.eclipse.jdt.core.prefs b/group10/584709796/worka/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..bb35fa0a87 --- /dev/null +++ b/group10/584709796/worka/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/group10/584709796/worka/src/com/coding/basic/ArrayList.java b/group10/584709796/worka/src/com/coding/basic/ArrayList.java new file mode 100644 index 0000000000..7d06acbe10 --- /dev/null +++ b/group10/584709796/worka/src/com/coding/basic/ArrayList.java @@ -0,0 +1,75 @@ +//鍒氬紑濮嬪JAVA锛岀幇鍦ㄥ鍒癑AVA鍩虹绫诲簱鑰愬姏锛岃凯浠e櫒杩樻病瀛 + +package com.coding.basic; + +public class ArrayList implements List { + + private int size =0; + + private Object[] elementData = new Object[100]; + + public int getSize() {//寰楀埌鏁扮粍澶у皬 + return size; + } + public void setSize(int size) {//璁剧疆鏁扮粍鐨勯暱搴 + this.size = size; + } + + public void ExtendArray(int size){ //鎻掑叆鍏冪礌鏃讹紝鏁扮粍闀垮害鍔1锛岀‘淇濇暟缁勪笉瓒婄晫 + this.size=size+1; + } + + public void add(Object o){//鍦ㄦ湯灏炬坊鍔犲厓绱 + int length=getSize(); + elementData[length] = o; + ExtendArray(length); + } + + public void add(int index, Object o){ + int length=getSize(); + + for(int k=length-1;k>=index-1;k--){//鍏冪礌鍚庣Щ + elementData[k+1]=elementData[k]; + } + elementData[index-1]=o; + ExtendArray(length);//鎻掍竴涓厓绱狅紝鎵╁厖涓娆 + } + + public Object get(int index){//鑾峰彇鍏冪礌 + int length=getSize(); + if(index+1>length||index<0){ + System.out.println("鏂规硶 get(int index)鐨刬ndex涓嶅湪鏁扮粍绱㈠紩鐨勮寖鍥村唴"); + } + return (Object)elementData[index]; + } + + public Object remove(int index){//绉婚櫎鍏冪礌 + int length=getSize(); + if(index+1>length||index<0){ + System.out.println("鏂规硶 remove(int index)鐨刬ndex涓嶅湪鏁扮粍绱㈠紩鐨勮寖鍥村唴"); + } + Object ss=(Object)elementData[index]; + + for(int k=index;ksC9O?tfW&FcXArtG5J61xbAFU8$CuDxKh!P(kgQ%;cxU!>xBLFBZuFOHm@sw9wnUj$7j~p8E zh86&$$I@j1js{Geguv^Etb)Cbkutzhn*nHU1{Hv-BZK5?pgo0td3$;wR6$f`>Sw2ieRuw4#>KQtA$w{fxs*7xM8rymT;3@Y{p z)(*Ch?Kg5`5LRXo0XUl*0hGjrfTgP#7&-v6{P5Wi8#xd%{%+34f`6J*%-qTmV9y|C z1#Gnlz{tiJz#s##Hgz;3WMSrDd6aT+v<2ka=+Ma5FctaMLTF`H8pH)BE23VrAq_Yk>F? z-^=^k)3g1#g8im~mN$31);^GVgcb*H-0ono`yT|26gll9>$IYQDH|89SNf^)Z<@Wy zQsuwDOXc%Axt{8*Xt*kFc$nK$e=c_W@;9 zn%&DK*XMA;#x-Pjl2T>`$1dvg!cA3^%YxpGm>lr~U(N!2$ulwgnOtHzRuL<{s!GA& zZRpeoM(fF~yWU_9$L+M;m80{Ij@G&#jdg7TIl7$)7A2-qKYSSY6jOf^tI+cT%0IBa zZsK{gk`ui*NclPV-LqT9uII*aWl*IDtsb|>#WOFx8t%S#%G&oOA!!rAq=wv8-MBiy z+F#7Uw;ha36{pb#CT@$Gllf4)`yx=Z)Vj}eabjeY_#du(f z2c0I#vFLpe?MHeh>UwH-==`-7x-fU@u?p?umc7`JHsx@FA5PcPJ1OkxoSc8OoJw_!&cX!!V z>~)lzHMK*7QS?R6bTW)?v{+=(2z_#cw#ax2B%bV9QV9t;ivps-NRWHXp!?e6^WVTIzp0% zox63cW5@VAGmdbP`%PDO1Ub=}kSea?)?m$+rzNolH0EW!S!L1*sQ_}3a@MvaE2=Qn zCNDIrLtLc7upE-k;q$3oCVM((7a_GU%T3(34nmZqYT@|882HV(i>1V7!&h%G#S_(B69*XIT9-%QI6W; z!Z;h!pt3*af(N^EkkK93NnfW;l$bC_yJ3r(UtneW4`$oUOni-Gd43gc>ZPNBGiKvwq2;}x}7-#7X6!6N* z(nDL>Gc8fM6%ESu!0MC@tm)HU*G9?CQ62h(n}R-koM9C`gdA{YNIT;04gmqosNBhD z-grlPT$%6EN@Gguf@1pbCfzl6`|pPpaW!VOSu3c&)L6)_ZIy6w%6Jig>7FyLA!K)u zAiW;`;&k3%-M&VRYX?_ZAYZs%l8vR%WyYnrrF|_SzwK2=_$TFo*ISXETb1ZtB6ULs zZ?@UYcSOC7T&?emwra88nw2w4rzK>NQ)1U^?X?U?Tb;b3c?LjXAu&q?4Wz}e+(p)? z_uNWZ(aNro>#05zDaxXjtI5@?<`0xBm>eJ_J0hDOdDY*GHdievS7~BbZ-Ml_p9+O! zL)EU|q{*ajsJGCkm%QKDWKeXgY-o39J*fc{CQJhGsm)l2zJ=P+PX-2^^1iR;BUB1c zWG^*WLzrs%JCC<2*kN+(_EhL~ur8Cu!?X5a(;Ll5p<4fZ(h-NU^GjIix?cXg8c(=?1=tTkkOgdXQ(9pBkZ3@VI)X5 zwmm~Q)((g0fI8bI@g*J*cj67H%h)+NFm% z@uI`a)6gI_V@C7>i}1Zm^|~8N4+0g!Ro?~NU;)(S^a-e4Mlg;I88;5BliEG0oo#FuH1hY`M4aZG-8cXviZl4PCy z5drEb#(#<2nE&&Y8ngqL@QQ+1QTjq8>&tTP4;!NUEv)| z+)t&7>UJ&9q0}3X9RbMpANXD+<7$KIR+EABLw(_@*anT!uB?Ll07rBy8+b5nu0!s) zDQ9HHOi!k`&H5!JLI$^z)`JQmv=Y3Gx*;Rcv_%T1Z&kUDII4+K+xQRK3O7RikDz`YhWgqlQM$Wtsj^^J6T`n8FQ&cVR7JeNxJTXip9bLy3)7#FkspJI|;%O zC9h;YqZ<(gd<|zD%oFMjT|8qDjH@z$cpFtaNn_~nx!M)lE@!rRzU9;RCV~;qXF>)b zI~W7UdOWG@mLV<$r;2&nwxJ5if%MysG>FJ3->&m)yanJ@x05L(>X>ky*J-eLFg{4& zsLofl9A>P>9V9a5-`MB6=n<@Ky*bfK#c^!9SP`ey%QX6GhP#dT=|~((`b_}HS+YUM zvksh0P?_7ssFfv>-K|s~oq3r%XKA|)EBPti^YL3$+?((ZIHcn(xTi!qmUyPzG;~6J z!<|GzAFF3!wCMM0Cd?%$*?B71M2UEkgS2`<8pT#k`5;FD+#_wNjH+ruBX%fqXW7!W z>31euW0a?J%30xWV50G4VEG?dsB=333X8}?O%!=M9EL@M7JYJgvYwqRp(=v_U*oy@ zjqeJ52>Eu~%=Z3j8@O?wC)Y-m{7^R)#N4~T*GXe$hjSsa zOfE1x<#U!8982D13tqMTFvC))PgO_bkbXj9;^NV=GKDN4(5OUev}XaI2hTR+dA6V6aE1}&Fvi=h0P4?frtwT zyZ^XnVrBx08#|f-aUk;(di@>2Jxcyf+g~L=A>b!f|4BU{)-!c@tV|LJ`^}96txc@} zgp3S=4n~h~nv;tO2q%Bs(=ju#1K9yv34pn&nIj=P7Yl=+v+0vsgshBAK-lm4;|DVv zJLglS>OXR_GBPq~{2|56#t4Lz29E{-HU)@F0k747(oflio=`9yP@3?uE<$ETM#jf# z{tEveVfbHK`zKCk5Rzq(v$20|V8vi$K*;pFi5_wJzZDV|{HxHTq5mTE*C+sn0^={& z3knH~h>Fr|RD`d$y!+*JNn@ZH%^lt7B>u3Yv4OSYV>u3lOpkb9i9y9i)!O_KY7?@u zJf-}u_fwuH9kdCVo`?xu!e4yKQ_4>b{|v&vYVtE^g(XEEt9^`H<{$LIQ)__9DmLPh zBC-ay3_o>c5K#vz2Xq?np|YC;&_$2L4k6PIZsk$zS8x$BJux&4>Ok$Ep8rMr-w7Xi zdt-n-(Cw5zs{v9;N&r)HVBd426a*4PfJbi0$=22i@cJ?I{z6hb)$+5YfA+{qRj`rq{R4zRe)1$VJc^K)LnYo?@ zPsYd2{x2z3CPpUaM}PfXjJT#Ps7r?9h@-Z0Z1YbtLFeflwrI6un$%)?p3Tc37=-kK zUl|e{Uz|)8R2(QuJIG>=D#$O*sbi%l#gFxKd-g0(MkOwE5zm%v*GUQ@g(l?XOh7(( z-`1tJ-q)u_APj@tk6623e0NY`;1^UTaCt|3Cb_a^<0L<{wQza~evU#@Kg)S`>ckPl zd`Z&1XgL_hIaiR;YP!Rq+kGg819^Wn=&=`xG#mWlO;MqI)6Qj_tTdBJW|-+%@G6S= zb8|%xwWYa1tm>Cj#_0yH$QXuQ1wE%qJQV3MBQNWuq&#>$9Rhm7$~t#sTMT0ju9#pDv9OK zU!K}#g*oLBX$-5`-f)B9@>ssn)!7T!bv7;kz8%Z3vKvN|jiaiW$XT) zY+3ny-);0|-wUHvOMcogjBgQwhBr4lr)Z&Y@bpy3<4kD!Sh6ftVAJMyB-!?93|C3u zNYHjN5W(#uC9D&D2-gYioFgIO9b|)LN8{`|I0j~E^QnZ{bnx9AtZ(zz#?p+_;*HpK z#_4IheABMr57!{&3HLE@{k0t2jiqA0ipp}@d=|CkedUehfs>G7d_(jCWaaB(vi zR-%Fy)t&gHO^`AV{uPcay|c|2SS8v8aSMjAiokMUH2%8((rUHaoHbQJk{@no2Ex5B zLX`8yvz{FI2HLKyl@l{|GrMj#M~93SeBW(tuSx2F0%s{iCK?APHiwf%-Q>AaN6kE0 zxZSjr?|O@s=;x8hHuIOKtq!SPVPA2L!^?s`@bn?j-4F1Cv*Oj4X)jQUwso+e+;NBF zWT=C*+ZArFS!jgK1-WZ$em1aVesZe~yT zv|GM4K%BB}NPbT=Y?)xEANzHz*nT8la~et@NaXXg_H^-XW@9^$c4r#Vv}JF{Y7$^B zO#?8ZOe00CZ)|XqNSq*ZhDOf$+K7#4oy|u3#GrO?L*5+ix?=Kd(vu%?!i*vPxJo&-jRk?ALbr&t(zA|J}y z`*XebS66Ev9_~&Tb~@K?M))80zu$d&1t~!^D1|V&+GPJ zXRyho&;VP$^X6+Mex)tw7?qRz!`+^`E%GTt+UVSHXTR106>rN!OvcS;j`PzUf=a#6 ziNYg}#QXEqua$gh@-N=-v^)x6YSbdzC;*D79& zRksIhZz!5J{(v=4wWpF`(TC>&P&d869Ie;`3J_S3Ojq;{U&{($?rh@NUMd-cI;56f zwg?R@@|D}1^P-7s3d1K>#FT8kb1g?ofas98ZjZ37ExK6phQbl$pT?F|&7mUm5E5fS zMCEM6X7Z8=mVoVxgdvc?H2soWxi`jo7NX|7`j9K`5s|u1g~ju!qIx-nR$`Qh8KCB% zT2SZk#&%1}v16U*L3Jur#A8onXvJhtOfGyqzw24htI10cN{zzP5)^Iq4n<3b4yQ{|sNKLMCb*i2MC>@s7(_t0PO(MO?Ws7P6@v`5 z)8P+EFFPeNR1c2WipvRY-}WHPeAXacrA9j+k3O$JLN4l$7V`n1@iT&>Ti{S~#eids zj}uALaK(u9T7M*V6vp-#g-yVfvLH=LLWxx91PRIDgvl|d)W8Ri8lOR!66^Gc3APfJ zfT)?!K%c_jitBbHlZ??oMAM0Qe#kH`SUIV}hNL;9OJ%l{42V?d=R(W2|3Cz8WYd?u z+oq=OR}XdG#4s|bB$wiUo`NVdo{L?&Eu1h9O-WIWVcZqcy`9xX!3oeO4d@~`LJkLs zB~yPFNb81=tiYr#S=7IpwQES{hKsCVpr62kxR97mZ~cxpDqU{dK%(7T!1o=};!a=k zdvx*%b<6NvYjalBX=U}=@cRzfw_y8D^a6E2$P81T3VF33oyO!N?+US?#Y>ct~K>XmB&_H?@#R znb63}ot9VmL)xAN1z8$6uUHC47+%=qaXvK7;?KtnLgia8_>Co_ z3VwahN^)-yQ%_h;<(6q*&{^Kg8ZnQ`LxZGU2~~~=M@Hg?R}zV&Y~RT>?YErOT0-^Z zp!17zzRqbss*`mbKW)7xncA`VTW+n5E-j(j=O}ZyF>03IO0M_cqChZPQ9pmb?_iKQ z3O40$y*))rlBO?OFY`IU6E)PoJT4_5%oHZbo)^`z7qXphPGj#|_ zDy?{vSlgbiSYq772#u#EkFEjZE51o?E+V8wK-e96*zoWIv<;LX7j(5$?Ybw!~LQ4i^qjq74| zm|H(xZUDvprm&TEA7fu;VLQX8EZ#L&(+}88$~@KDBt97811d($Vq#2Mf5P zZcIcT(B#Ad*YOVc*3Gli)OOjSc)4eq{UPXORk=~-%*zpN5903gTl-RWwVN-I3a`g-q0A0A*~Dt_)I~v8D`HNROhx>S?HINPXgtaj z&^jJu$BqME#%sx`dr+Z5>TT1z z)@27N-?i!D$|UuX=tt9yE13d(deGHuyCAr!9nq#XLSYTQwlR6D$A1I;u=M)%L6-kJ z{D#|M3|Ievn9D@XyON6CxwhyiO)v7mZW3W|<>ML^u07Tdo>hLKgX-WAEqtV%N6)cxgJ22jgkjR1J(!NI<{2r2%HO^n588h{5_S0yDnx6IRLo?NwZF4~NYOHV4lWUwwlk|3u821RDXin3Wuh!ta#o z#F(eP_O84-5=k)|l8-L_5RMiHenHx1;ug&CWuLH}A*rO!oE&W-@vI~vgRj9Uc-v5< zw#ldnWa8y;Y8xz9(%AbfDLnwY>z>qga%Ds!Da^}2s;;Y|`0losgcYxqjQ~fSm~@f2 zJLWR?5~}AGHl?--hl(JmBjB+zMOBP@4$YbjD(>V93U&oS_tbq6v723}vHC2GxStt{ zK6Y0xDh)pOHt>Enf;Pwy0awcKq5cAvMW(gmdtViQx3OPeq{=IM42n6ztRh!4mX|9P z7WRqx)1V)LoeTb>zpbhOfQnyN+!`=HEKN0&)o{5nHZ-&SaPDFUYFDunfhk-w7nFE? zYFccczCq_>CwuIRn&($aq;J)8Y$cEurZBW5P&8Vg>|2WdWe*pBb#z+xPNY_0%$)w= zE6xIcIruc>)V5C{KZ|4)v`9KB50ubbCB(LO6r9;o&n(A@UYBWi3dtJl;k$gcd4|tR ztu(M0ZahLsd%%ei_P(ltb=sRt7aL7EX8h~*DWzIRMIN;iR}lG*<}k@j8;+}ayJdPI zkEL}o`dlp7@-jxAXSqL`?d-OV7ECE8bEP&F zHx-Vf9664Njj3MI9wDp|W7oYQJkXOpE<~z*!^(p!O%bN$hOqj9Qk01ZEZZ zoL)-!FU(IN6Lw`lgHj?`jOV1sV72F;rb4v8eha=uwW=)f=`&_T+@6Q#i=FP|;c4*C zz%zIF5&*KIB*S{RT=W@i!{{@%*%r^qR+Oq4caqZhU@p2NgTa(hzL)6FRht(NECfaK z#G}4^%`cVelaN|gGMA0-)Q%wLF|iOpJKV<{{1EX)1tWZR!?VOQRQ&jL7S7aJo)fQA zISQTLX7&8K7E0v1FT-;Jb_f+W$2r{YBfUYIHSu}aL?U(at4dIU7_$r~h_yQnig}3S zu|{{)3EWBZYkAWaFO}c|X$c%1yoDboH7%M*mx}Z9-q9gViG)z_ps!kxMKpEG%+)OB z%qex%;#}Fmp?fzM&`Wq>;tY_a+D#Hulv0i8kPgjN;(Q%@CP&3;GQoP5vw#z@WzbK>^uBsb*@ozD&=m==HD`bIRHlBk!H=<;=7r&yszS z(#J8WwRLpI?m_8LDXkF-vn%3qnf$p7`p~SFCC`_tXu&W0HLv`PEBLf-=3*eZJ_t#zYXU6nBoTAyA-KaGE+%tV zXJ4WToXo0KpR>%A;8g*O&{ z164+P?H7h;>{nt zeKf*7vag8mT?(I)w$-M_ZJ&{vr1O1>t8}RJ2~7=5(^TT=vl7#k zXjZOQon9O^()s84KoqbpJ*X_g5=ljvO^!_wbqRn{scSlUj(SEJ=0-7W zyy+pW`R$AS{svT84;CfWO9>U`^bS4UPgaE3A{H=5WoMoOF6wIY!yH90NUe2Oi4~I9 zXN&5|)_nJ+$aL2vZZQg6Q=Ht3?vc`V=PF3fS-^4YV<1a4r%MUq6}_Qcam?n?_Iz<{ z*xIZ+Qpr$50lcU?AJN2#_`~<*Va!o0&n7>3{tvmVQ!ndL041l)i^5de`Pyz=XnIig z&S+#8;1Z~07jl&heUva9p~mxflZ_5O3gGGAg;ZJdPPJOm5ysKg_;`!Du%f1H8f{E_G9 z&MB~P;K>m-Ep+aY3=_jgZY!K{8umc0Mq~T%;b;L5&t1(@@a$k z=P9+Pl7AZJUo(^J%uh#Yer+qqE6>T{Fd=$H#l1Po{V?wSa?Jxxbe5);8ad>YYLzIE zOcYHMDqP{A^_4Izc@>qGrSS}l>2UJ<;p5kDoEo?f`>hf-ygqS1%)E*Q)Nfl4*K{AI zvh%zuuVgR1FPSqgyx_lH*{;&nt)06{LsgXw>voJ~6Yyc7>R+|ze%5jKybH=CpR9+H zJchQyYq7nUXs>A};N2M_Lcu#SvVJU0&vZG97mhe;AKCgyFQ#UhMTpT%hmnT^$mg87 z8*WhnoL442k{Wq@)RO0KM|1XW4z9h*Wxt;BXzAuD+xABgYq3l+Z|f+17n)Q!OWVWb zusbMymez%a(19AS@193&MmqC7>!9dX3F%(s>KuvAGTP@@0?A?WUIK~4*B5qrv9LTd zTcrrj?Wo0Mo{du;$y5jyiCqB|GQDJLgmlpmWNZ}m8ADf(zi_Y4Bws>3Sm?}$DHB<< zCdp5k^9!s}&DR1o}#s(@YOh>&j~5RPr}I&VEHQEB~toQf8fi-4&3Tn_Ed zL+sMW`VRD%AY=nh74A5hw3uV7>f}JsIvf=={lh3aT15m1EacMpS(n$siefLTbaA<2+(H&}g z40A0Hlkptd4x9wEI%VcF4Mzur0|ZO4QMS)vPUDgn$22yLhI|jbj$v@$t%C8tXxmO* zGGB&s=tMyd3%xjc03qIWdG(L;$rh}-1n1fh@7=ze=xPUl-5IX5l8gc+L2m@b31D=|E%pnWRVFY3i%;5n1Hvw@3 zsQ@7a%Gm(ZjDdH|AdDbPAS^$H%x$bifUmbvif}VCGI206GjlL8GqbUB(J*pSFfvjA zv&q^R|C=1ZQNq~C2=ISb{qK_*>*L1UpEdw)4l>9aS|~fdW{@Lfc^oPq_g;Z-R&uic zH|Iq-*x3F{$KKa{9f7Cr=4@tX+aeoSQcxltuUJa$+XH;dXOl(&^&L2_;fVW%^=&)7 zv-4M%uWDbK4&1$}*P^ElvhBWAz12GIj`C5#CM6A<)Z34el7OJrlFCt{LMj&lH&>*j zD~h3#?BBl`YBoK0=X%d$I--QerWl*t;^tHqiz*kQBnjs{IG(-du7EOdXMEP18LNX2_20^KjAdga8z1_Fh1o0b;P@5V9Y1Ku(Pj78G8o&pld9n7@XyE)-n>HyOD28M3*=2GXmP z(XD_)#ZWu+K7~L*WJsj|yJ#qGCAUzxyu53&Fzj4rR(T7-H{y;%IfOZTB%lYVW6 zN)?%S5;Kd80(xi_sfA>uS5g=NV9gYWabkBYyM}^#N>jCY!+qNhlc|joVEoFCdF~<6 zJtR45#=tEzr=l#mG06~XbVngq(9U@3-L`1!4vkSSZs8Hd=c3sivY5hxUIgPlO2OmM zk&#_yA<>X=?jU;N*k2VmL=;29Ng`UiB*rhvKL+thnso&duB)sW3Jrs|N|{GPt3qM7 zL|;qmPeVXz#a>BZ8`pqi+xntJcm`FPNw7g`i?N;;m5>_wR6|SV;ul_qMZX*O=|e#E z62-&J%@#tk7c(M8g?CC?4v0Vrq9_tZrm|y-Y|OhySMe8#S&4oY>lHl%8z1W{F)xaa zq%02=Nd!t*7s;JiF&2>KN3BwrXGR5YL(Ry3YEJ#E$bfPio>;L&cwUq|N7++|9Vuo7 zrlyTmY{Nhl`YeIaK^BD>gcxMzg(fYN9~=}Kjf5x$%qUDcDe*L-Q#oOojLBsfq!wDU zFIV;{=6Qe+tbdMnsFJZFOy;OA6}1>{-}oxF(6B&hheAgOR@)*Y2r>2Ws2D2)Da`1H zDiTp=O62JvNIs^3GH|@$-C(33yj;W{LT`gKXj+tdlmcW|f#E)-b}epc*qlx{gNUM} zHi1x76N)ie5kYPeA*ig0!1)ryhN4-0p zV#pAW1lSl9t;;Uk+6AR_n1uAG(40ofu^xzGnfpdCkHb}90gP>j83!myoh5SU?Su@` zL3u{Qk=G;_WcF1d`1{0QpCg->htGsz`pwdeLM;k)IEgS>$fFi~?-Y3^7cDvd0UKaE ziCwHHmasDC$K5URZ0@-S=|>DORSS(~p%K6A>W)i`s{A$*W)uRUG+!x^a*+2gu<*pt z)DqgrB&TKk?BZ-wLP-bX$ZSS)ItIefeQlu2G!mNI@s3=farIXU-sOlM6|6^YH-6Md z>;a=Egjd9n$uJLTM4g~$4xuGii13MkrHA%}d`oF4veK*+DT$gUM`DppdxCf9`CGb&dKOT6mg(mM~x>vCDdu=sQfS|8S9v z3|Lp+M<|#!i9nn7aa8sU-10gmlBufi!^L zk_jSmgK@0Tpc2eo)j-v0{r}=hPDXTK3VT+q$M@(MQf|4Lvpq43# zMkD*hu#Ur=k+XDu;0zC4TUW46APjk?hhk9|3&DYuByq$xctodx*7K1Blmo>RR?H9S z=zdZw)TUiRcd~Yw+%A$Hk^^N@z%O<3BFt58Di@myg1rzbx9vGz&IYCnUXIRbb`M;@ z=sOLmi>=5rD70Gy-5?giLNlc49G1xU zP(%67R9($TenhIa2q$m-_QlOg{a!0fFbBAD3Xh7fNv4N;hZ-YEt-{^*o=V|8L%?v! zia;d+dngJ1`?_AS6j| z`i->hL7ma~ZDATAjHIEGM1rK?f^{rZL6z?`cE}qSQE9{nZF|&!th)Q{wHXBH1$U=Ngo?2v*+)L)yFvgn;-N(qyZ=(RGIBZ*{R@K| zqO-U3yw7r=;a>$Gm0*{{jG+XI1{$xUUi&{_U*vqHvhFZNZuKt{M7ij9$zomQyF!Q~ zhY2Ft6yFmb%GUA;CYn`r1??JT_3bngaV-PkKuSehqY7h&3iW)h$z~xq)SU}f7EyrV zS=w$nO(0Oyk+jTpWEU8lXj zw)Va}W}=s;{Ji6~zdvx!l)G1pha5xh?MQ^99Nqkp`(Y?Wtmp$XSt zEV8=#dF|+%6W&BX8v$~`R9elid$LikdKo;ght?)IGQF)W>YI|}7e1t}lm}SBeM(m> z^R#+vs9%=nU}nk5F8#oq6z@rIq~M6@uL->d!amh_lj6BWGV<~`dq>WNX&&1epl^d; z)eWsjOxwcfWyCk7%j;m&y0d75_wjz7=He6Msl|OYO=Ei$LHrGR>+SZ%5(!4+!)8N! zB9j@9@Kv=xx6}DDe-cuxH>q2T%PQZB%jUY8vTx4ZUQ&Z0z!-%4 zQ@;RQBE_$Ws{|1!D&dbGD`XLuD&R`ReH00m{;wZ-B9c;ZKRh9uzRau#-}UNWbl`GluHz<@S;eUCH1J{Bun>48HGM@XT@ta>Je=Pyokbln9s=CX(`k+~c*5dFDHBC&uv#$)vP$^2nsra*WBO$oF_{3b5H7dS&P3 zXz*}4b+F?4ZMHa^=MEZVaIp-!{E5ptC<2tYAXVGt3 zWO2E4{QOOhh3E4wYwm=V9E+PV0q6;+!B;$X%=I?QT_2TBt#}C}x~@J^<$$V+RZCe! ztP8fV;2uE|m~1FgdPlfwFQ2a^0TrbpY(-6F{#vnNJOh){i%CVAE8qvZo*Y`oX!80$!IFt?L-Tf(#Twzme}pHtmY z+El1cSTE*gJuv&`rbp(-<~lSM3%pk<={-}bnHgYbspP=IV4DnP@GdqS0$gub>Op*3E4V6Sac(x3Yyt1eA@g$buu98sNvSHjNMh!^Af zzAWDZ*Mb=7$XIZC<_}v0*^#mF8o{)uJ!4sS@MDrpN`GFm4AQ&M_e6dZM8qX;)EFE{ zWkEYrWg_<{oQ(*v;~Q>|Rba1%W5Uzd-o0Pw?rr5gMhCOW9K`8V$Fn4Rz{VRaCT?#a zMw)7^MOIX<9@u+XJ2^QptoNMJ-GYaSoxJE_TQhHcd7Oh_w)>RGgP;Kl*$G3OFYQes zhwTUl0&j>+cl+rrMpHP;p~vzp>=K7lbrVQ%BPLcvm1(JNmW(m|x0&5d1rL|S`ayvi zszZg+0kj$ADSCygg4=iUFW)?{V6;9Q6|lHqYIsntfZVjz3Cm+wVH>hP-=ptPk}=xjR3uN}nVbi=Zd~XFIlae-u2`(`mZ?!5U*Ox98{a?y<6a#Zj?QL!rp^Z5p5)Uk z{2Vh}cB|Xp9BsdT8-wt-E-aHy{hVej&(|cdG52ELaTx=HJvC9hBO}1MWC0xvP*@BW z=O#-2Ez|^~=y}f~->I>U{wWFM7~e|ypbqa&6|r%hY3f4be%smB;w+BqdZV~^uaEot zwc8H_cO}nG*2R~~EJo;?1Y~9SYxfq*pC`J5O=xo`o(LNmrNY-!@FXn6y@cOa8l2$A z#KmDTTWp3}Gy#UI9mLf>mtJAYU4rj1xhUJhoN~+O>>*k#O|GghwEYuYdwC)q6K);A z8*p$~2yhw*aA^o|O9=3A2=Gz}@IeUhJqU1ENN^fRaA`7vk5I~kb{h6 zNT_a!ONHb(4*X8zS-lLBWU+^JLGxd z5y$0*1|YXg<#N_T&vDD<`^_u7Yi9o|Y~E%t;VYaLJC=^Gn>QU6Z<;EN$L=BDn9sGx zwcpBm=O-+g_7Fb5?CX?&IpTw}wYd>=<<@}o7Jp?fe-Gh)XFADseMNZ5$oLI{3i;}Y zZ)@mWCWJpj{TmhdKn9eOYy})i@D2F@l9}~y4T=2sT#%=Q{&sZ(nNZ3Lk{L2_52*T^ z(iA-b)F=z2ZF5x6!_-xVli? zLvHRj0Oy#^#O-c`7CQk1BXR^Pl4E^N#BOr&_KCSo9@7nIXH4VgNC+*sn=v58na#w> zkC)}+x$FmwRNN&$6E9jD3ipVL;F9onTtb%&tNmNXt?aDhm#kb5H=fvK8jSAf@iEdH@+4b^?_2H14xX$0Jg1P1;GLuWlT5mZSjM@KLg6*U!7ImMnepc_Tzw~cuBV4Gavy^>5zMZ5Mlzd@q*~Fc+xkSUN&r=su7^Gg zt!|eWa9Z#;c%wsMdlt~6jnyR^xX$;Lf;AD5!Fp+u-gZHFVS~9v9I>{lg5FNTdvax+ z=I+{W2Db?&K4QNZ$AqQnXdK!4+Q!T%Yd6UnZ8NaMG}V#ta`U#WF0oY`I!EZHYi|@X zSEwZq}#aC(_66(p}_VPB)}Qea7&Rf^T)b(77zQHEg(8 zR4Ki?AA4Xwt8Ri$yoReUyl~9GeOrtVz$?%y1ZF#%3RXEzs9E>)&`fN99YrUb!H<=W z*Z1behth^Q$|pzcc10<-29@^op$qJ4-~WNP@e}hQ_REk?4eTuJEtHCe>hM+doiM$8 z8t?duOVvi;j}p)LRz3%e73$5_U9BLR&o6=2iEQ}lTHT|O-vG3WNMpFE_<;uXG zY&z(O!oMC@c<%H~HQdbtS8q)z!AXIw5hD>MQCHk+)cauFX+fQwe?qrQI{#LloT6j{ zo-HNGY3k!}CTpeL%|`K;{MXWYOd(G9Z3c9+EbAe!tRBpccl(z_ZBY5%ExfHxJRh9U z-ZmeL*z99NX&Sj-&mIv3d*94nH0;L7fKXzG4;Z&{+G<~c*&0Lrrz`F>NxGZ*qM|Vq zS^mC9It6kr#(2%NBHps%OQi8)o(qP!R%fQ}^+1buxN0!eyW>x$4#}>r?i1~C+b>F) zHpg|lx(9=l*3MHn`az~#%T$GRy15jASN{6!n(BL8*iT&kda1=@&{R{rxbTbhX`{$& zhC~?6vs1NfvqTu*7HzQ0um^bR=Jcnk7V}?Ch1Fs!yR_{RL}Gh53GC@)%pX6WfUNAX z!aFJ(OyE5l0AxT`n!Ivq6V7PQx^e)6jjZx56g&k4eItNFQt}>#Hkc7`djbVP7F^1z~ABAkgES-N)?qg4e{!E!R=5v(D1qLQsz{St$}uR3*N`E`B>_ z3v8KRPZC@E&*RHG?bIi zDfTwR%*@Qp%)HIa%)CwGbMBpY&zqVz|E5Y+U$s`NTHP(Rv?MJpqZ_Dz{YmgDzvkvQ zx}vz;9I=WW18W2o@;S$1)%qXxVrjDkC$GHs=S&)JkQx<4>hu{DL*nF9c!T8Ewm5pxILU zjRd^>C~u%*?u{n7$-Zte#)VWqSA6OJzciy-V{UnK_heqWAy(qZiKLM$I3cKa4yMY_ z0<_52Q7C1~6C>OE<+}CE`ff30wF-b(j&@J>4HS*w7=bGH`dzFj&V83G3AQklonnkz zGjEZd)^c*p`hZ`DM?BM}rP^+l_FK3e$v+}(j~aa$c$l5$wZV5jXOXQ_1zOJse$Gs@ zQll5VZ+x@LsX!IrMi#37)hPzH#{rou*uiCY=_5I{;rPZ^M4%M`JpxtwtRKKA=QptV zY~;poi{J#Pg_v!0d6`1g=3 z8BD!U*S48#WU^4c#j%HF-^pOth%o~RtQTyBs&>T699fC9=0igWj@8egDTMt;bhfNb z(m{h@4v)&x#2jP_nuW)Xu(@wuE}ctblJlV-uTW=9-`-3#)a*xiTqCS?NKZ_dO9dgT z>=dj2pXtgTp8Cy^wBK3~Q+f&G?{rDNx)<#qowV@7YNEqR528fVJpW(G6R~KYu6&<8 zD{4X*O@haZD%lmB_Md>cnoU;+LWQ(0e^1NS$$)l z&BfhK4kj#nLt3NO89rSt@_kLf+v5p2{JL+oSgn<{d1`qHS8z3%ando0`(op^{n22M zjx?N+AU$=j^8hlYN4a~$(wS2|J-togVXaGXRi2hw=Y`GJe%NRZ724|+1G!= zEAVaO;lWmX(0sq(S-@hFfPeL(9YWLdJ%RiBsLTr%#z#h zHd^QWic+v?LeTfk`ChvCeWeq*Y1w`uc_T`DP?3Z0*p+CBx9Qbu{ymX6mPxQ@>LC~5 zWLdD&&igT9y>!_IckN)#e}ZE$P~6K{J@P%a)#)|}k~Y%5tZ92^(xqQj|8v9jq6PDW z7VUQ(iaY%BoN{HI`=A8cC_&|*IsBs{+F3<=zT}n6F@F$qsB}0-=Amx?|t6?`H05H2J~OM!~Z#=p{p=z)yIU;_Dt)tN`&=wg-AF{mU?#z zM)nyjvK&&F9KWA?_ky-{1%sxlpNZAz%i3KO{}UuAB7l&odv}<*!q6DNw0$Z$hsk9> ziy6PcKuJTtZ>W#Xz%MJrj(F%!y3og)cCL$aC3d9lHk4t;)ORS+CpZ2!kT_-Q(<560f>yC7?=xf^F|^Tnwh2mX-g_dmQt``d6M zsDXh>l3b9;UobCA;MA^u!>ARjuE1Fd(Q0vq&SbsOXxXcDp_fBp@F{33mfB(_znf?1 zqWr3xaZ62n=erob@!W4V>$o{R<-A!-Ukd^!NjK`LSq`qwJA%~2oj(Yu0Q2uXFVfMBv)`PF!(%Sqsip{?LI_18)@fiKzF&tVcLkF*x4epT2TK) z(^)&D*V>9Q$g#svvx4EY}Z+<6A|n6xU?3ufBoZ0DSuUe ztp)ZgVv_dj^9j>jHB_G_LAU}}&VBkE_lC4G zkc34lf15hu2&kgt8R(AlSS-8vPI=Zr>&15$(qOq@V8cc%s%@Q2T;&~jD2Ne1?F7Cc zt`SW3^F*$I2mRJxr12;x!g(=c%xmsY8eeDHaUyrTd{;0aN;M+-ZPxas(2amg{0myB z2wAj*(NCwuHv{>VOI>DjUw@l;i7zo3B0t}Vh{uA;;zQq!be?KNr2{~Yz6eN5Hge1`l*~9cr#2K?gAobCW2Zqe~!J~ zSj7ZR1F2C2K1}>vLAg`4E7J#}UgKKh;RoV9efKBM7O6L=TNZxXUw>8X3)=8IBw~t@ z!91Jj9=k%z6ZxRn%US_zRn5_}p*R7%ToDA)t2NhFUQ6IWuc)i?LpKB`yO0GLAMneu zx`Y@wJ5(r8<%{xckv2C>k!s~4`7OF(KtjKE6j*cEwv?1?IpF19zsoygG(7X@Y-FyEokO}lR^rOE0>Iu|8w=^XC?37fzV6f66p zifzAF_CSH$bRyu37dFX`>%XfTB)@&t2>}!f_RAM7z_)`XDyVNOy~@5Ij23flvm8%4 za*MA8(k^<{PH8((++jC`fuwcD1v=5ZXe+WSdg_65K*4Pe9r1QT!Tj}~C&irw9Y5Kd zezsuI7Q1hY9qR%YuJB*dyg2Q0DtgDuI>is$AEB)M0QyQ7=y(H_MQ2T_8^K6rIc`Sm zcYdp4zMmRTDh>J1v)<$^u>EA$e$<0XJroXwn_@vs=Q(f0ez~2$HsF0BPm1szk?#~& zOFP2{1K+?p^93TA?qH9lJ^mr%sYWAK zqC7j)7EEMC{k~ohR$JhPvObm+ZBeCBZU=7Vmf|r-cI6H-kn^(X4g8JjR+dlb6+I)* zZcrI?v-q>HnD+|dj-F527eDp(pi27Cj!)bdhEZVy6GX&ul6oo7pzvTodk2wCyiM_{ z=@Xb(>_0#Y?EL(SQ>pZ@&3^oKQS23?QdzJUAH@1d`zGl=N&qixF<4D$WnIlyr2cUo}lA?~jPy45?M6~qvD72cW^L=kv}_%C?)oY^7%c+1~Y zc!4V58+Cc)9Vov+?gJv)n%%$_c=i1cpbNb6e^CDhOo3P359&Wa_(7oxy#5P(8!wMq zgXA~peL!|wv+l5&9nz1tx*syo1YT`F7_t5f=s&2B%zuGz;pGwUM=@$2klaVHkE#hj z-V%NkLlN)|xjb6=c*NiXx+l6l;uQ4-oxCT=Z&3PxIJRaRKP1RL-rDvQ+M^5jrd}RZ z!e+ju{5L51px`p!{taQ5M~v{9Z#Dmcj{-3t)W6|_Gv|Z)7ifRTrSSo&ZO!Uq2>6y> z9{ney@uQBSkGJ$6f0chXRt1x3WEjf?xm73|b#h?MME<;lnqqAJo5L4dCNdeS0)h_<)z`cjLc1s}G2l z@017KzWV^FJQtF|NSfL`XvQK2=?L}S2? zyHWOub7k3tcw zuloIJ15gEPX0_T87f5Wq$92wgW`>0LHZaDtqomdGn3T1{M%9DI+bRQUG5)E>zsqf^ zYjYN|d1k$rA^#rAzQkzkjD)iql^){DP@XgnsyT}Hsm=Eq(caf-Eh_h^snHtK0*0+3 zbZzEdUzu>VB|B&b9jt~Hk2^z-M^67y7v2Tf*kJ-hxiN&OF-i@n@bEINUGP~{?1L&+ zV-!<&?j}6*fZlHCR?R+kH4%_C!4{L+xR}k}Z%vyy-&XNeZz^NjVMVTBWpV~LwObw) zcRTr1lD`JDP!Tk1zK)LyrCvp%+ko$oH)!pO2NF6)22`uI%?>Y)tn)Y2h#Jx28`C01 zINHqdC&X08@3xW|ml6rxJ$n5|&DcK&JYO1W7Da7Lv6)JY4!CFyw$}|%MM+OU_Jk9 z%#|#Yq;crAX%Gn@8BiNYRPsUBPA0=nVkjK#U+pIu*>ddX?TQ)wxDA`)n*UeTAoEqr zoLyMsV1Ks}>&h9!Rfal3m3!1uRE@rMs1dzkywDi$@TPo|W@{%In;3`jsf)~iYAI4ocsys+!>==%WG zRhj&y2O5qP1=DZG!Y^O?dUpZ`dxJf+cUu`Y9eDZ%tJ4xhjElzYTzSxq?s__FpU1Vt zPsKkPT&@E`BcSDPO{5tw{-Mcy7KTPSj1g@syjts=M`{>TNm%2DF0p9nv1m!8NEx?z zUpUd$B&3W21{u~_jWDn-Fo*}8mSQ5Z@42+wSgF+*UwB&wl|EYPwYolq_!dsjdEnpL z)Ii_W!Tx*xRZVHGu}oU6n%1gqV`}`^2inccixV+(AR%R?SPJ-ptfaK~=Tg>Y&*+Qk z&Tkb|ZEl;Zt6^q9d5itS??tIMmgrq70%4o@kI&=12n*5-|KaVcAQppK?wszhUPSFQ zL?Win!gYt87d&Bg3Y` zVr`E^-Cw>Ge5vV-C4VU%rgrd7qaNn226agpJ)BXxU6A@GOE_UflAcb4{VixZE`vkp z@0oAtm-*Y&Xyigx0lc&(T%zW53G^TE#ux)CmwR5XOFuG&WZbehGGXm0eFQj6TKiu; zs3qiNztae(sF>?nS>f@8R@A8wTN{0sdO+?WaJ)(QOC!?rR`>DHzXVBl;{Kxr6erEX zFeHA(EBj*76~D=12li!%X*~hlm6TQ&T9vfh z{oK`WyZZSv2G%V#9Fs9hth<+`k{!|{DyqjCJ z$0RMZiK$!V;kxj@y1%_8^k3b-m&eBOA6i*4@FKy&4o`1>nTrYpLhizLQJ_*8_-a~O zdXg$kkd(-qdU~Sd3&kbYX4|KDOj2Ptdvb^O#Bgml@%a-evBqA%m{zwGOZh|$7-Ft@ z59#~H69k=iM%>F&MgHX~?Qzq8x~kI=Cnjblw_8f=lO(Pr6$(=cjRaVDV-BtU9Jk+3?>O)O6LAU*Z84RUYQUqF-1PHI^0Oqmib|*usf=GQNdstMKE)## z(F~}nB^Wvgs;JdulWDI$V2e~yQQ6_r$>3`aWiNHq_4F7X;^XJuv~HBSiXdR;GEV>T zdFKw^(80&~D>^tLTK}U5v*ubO%*;5!lTp|U=I!NWXMTG9h!YM3C#B-yMMOQ}Lcl-6 zb8`?(MxRQo7nv5}8N-o{Fz;zas96+KxJPh~$0twKwZ>DD6f_pwbG)O@iHBk&atM0Q za(e%E8h38#KSGgnh5#xq?%T&S;SJ8@kyU~8ThLVl29C0!jO%z3>ev)^Z|Xoe?ynS5 z9M)jOc+c%opp=4=;;*-%{om*j*>3_%n3%?W-g?Ygd3oCXsLVRy9U{WluLmC?1M%;M zZ#^;lUtSx2|3sfslZ_)v5lvB1e8jW`kJB9=WqpK@6E=km!Hm<(1nwGMH(*GH$Al@^ zg*^SMIVnVWI?UODNNq3aUE4o2>o`wJ zUhAs6;fgS7!_c{o&4IMJkphLT{PlcrXZ6QkY6MluNb%u(V#LSHP1C()^ZpA7H8%zO z_#+l#OA!_eu+Gut|b|I}(gK2(Z4_3dbW%4nhAalg8Ez_Ek20 zevysv{Z3zFF30oWbq$Y5Fz19er0ij4P(a0ZCT?nIM_dJon8RggQwSmoUtzkltxVri z(oxZHLjbD#SC2G`np)eX@Q*!{ z3(!8gBe#+fI-La^Q@il*nq`?J^Ofi)3>D9>1e>MOnffR2wBsEumqoP)jdSb^PR?hM zO)1~TSDR+g>IS)+jyJWq=%pw?A?jVX!oQUp3TeR4*N?%< zrvWw8Q}-S?;}ZhoQe8bX%zo*PX=u^Vw3O3N8%-DkK6DW;|Vf$C@ZMn`~){ZtXny>m&21b!>$7hz0XXNj2`x_cYeYfUf@sMrr z@Rxyowt;h-Mf(kkt5 zIqQ9h*d?ri-J2J}!`Y_UQLo5^t@Laai(JQsJztx;YY-D4=(0vK zBDw~-wuT3VhSmDx=Pp8LyVW2G(%=>BvFt6pQw@2z& z&@uzxveN!DP(Ee-u+-W*a>DjCu2(Aho)l&!$66}yCpr-a6t}W51m7K{ygeJuqd8I} z958*EFIb*^8AqC;y`+egtmpC_ot^uU#P&Aak zN&3yv|Ma@ysF2vPfJ0GZA1oS0%~$q#d41VC5|VsiGiy;*{H;8brM;Z~ysAObMa|YW z7raB!cHEX;7gVDOmicw6LC6}2x1x2Dg3R}#3kpy-4HDN~>kCM#MA#`V&uQV$(qS&< z&(oP^YIh6>dFQG~npw=Iv66LmRrVHG!Q*^9%oHuR0^-Gsb(>=-R9NfpfvJi=0_BSJDDwnOJk+Dcl%ld7vKN-%6WQ|kFO^4kLlWhgx~cD9x!3e+l2WXybX@72t8bw!H+o{oai?zi-1iw0~i zCT8j{nfD1^$e^y#Fhas&%^Xv2aaUIt)2Tm0Qs#=5{gEYHw!8vnO7&;UNVgH;$EPcm zM)vUl%rH09)i7{IHEaLxNs^)x-np!uSw?f@%g#3bYTnS!eO2Z>I z=y{VYUwo@I}~GI-IDY7%fc9I^2P*6XTP!9X16qF zPoIf%**CN<}2QZuvvMJyrW#eDjDX&H^#&XG;Ooc?&|&a1>}>D-vce5R=( z#+sJfl{NxEQ<9^blTLaMoM`*?^h;vmsHLix7$s^tDBThlvy?j@+v%8bcT9IExfO+y zL)Rf|5-M6Ce;Ml38SGi7O90zJZKPgwb%SgNF7DXyn%Oe#K{U-hS3qWMs7@59FV!At zS+6)VvBifqQ$kxm%LDTAj2S;6z$?Ld`r`&y$di{olN_yFy`37vKf#5XJSgtmIPG3x zk-lQ-j#ux@%j!(V?VYZNSvfusmHe?HdXpS!Tw=;%S<8Dp+JkNMNPAmJ;htAgu7~EU(Z-;P1HK6XNSD>b$J}VK7Scb_QuL| zS;F=ghcc`C5k7BOFEkT;L<0i8L%MN2`RU@};xENe0&vL;7K?y}@w zRnE7(K4yY?<}I2DVM}UU*1`y!F*nXeV^C4UrdhzG$sUPT#mwfDGBVm8>l)h}>tJ0- z!h*(v#=h5W8ek)3BIU}y2xKpa{u$jJ?JHiv91k_}%hY#tKB*1Nerjc*b)e4Z#dn7o zx6`xDa{n=CCoysX`X>A2l!~De#Zzx;i1=`5s0`<{0R9!{^sK$C9UDE#j3t?STd%iWp?#Vo*Dv0Jbw1qfuF5R}#!r5*3JkquV0v%D zM5{l~apj@vm1vr`#x1i5S=l`d1Uvm!D%zgtWe_d~!>QZUeB=X?ExgH$OqMB^F|(O3 zxXSEhGagl8RHmKvm7%odNwi#MyVGNMD0;Ar5~)zV4APsKcu+V(mBGOJ))|yw>>|z86qu< zYQ?Pbq;MGeUHbd5--6&v#pFwc{7Z%Yldj-(tJq_N{joMiBwK8YNZ%L5_;QcBpKJ2-ALQjS2{pu+` zY&X9?rRYRad%`Ovd~f zG2wayg)RpNpVCY|4YJ1y_psr;YW&^$v(&!l1>)~{cCd!)Y&})Y<5y9GmWO?kQNneA zG!e&G7dX+C3I}IA!3Cjy^8_!=Vty63%5Zwnc3UsFxo1d?mqa2Z_PTdBy=Yw3)4&4U~Aet;Nkl*efII z&JlKe#ANu+#4XHUF&Y<>R$!~EZE}^pnT8lBgmR^yH%WNwU|<0It{ZGHzfhf1P%xfh zX=IHA!>(mBJE8^n;B$Oc@Sic>Ig_=05z^x)5;zaWIP?T9kbvW+R!I7;_b<1XHJSqY z&uN^wjC2@mlPUZgL)!bn8wg|Nh?B5D(6Y9fzx0hwZZn0#O5~EOGTw@L$o{-rU7*%6 zIDNfrx^?0_khr0e7Wur??5NSkrntHq&sg93q%*&H-9pd$v~+z@y}i1!KD*vX|1P#P z9uyjJ#-YN={0Y;u@c8%6O*Z%FhD!ReCBGgYckuHpj>AOp$|ygHHjH@y{m+dDsR1 zc+&6dow(t#H;wAHv@#eMjM*#QTQ5Inbkjbf3v82r>X%QI-&@DNEYq&g8QnA6Bid8k zgWbd3qu+x!R=jDtRfQ=gpTl#F*>kSa~q^-+v=M?R0$4ecqTYJU*CyBaxbpO3;&| zwcqD%3LahKLtogDrdD?<|?b-31CF`9!yXzx)cWv9z_OG2N4r-S&(>|Ofud*aXBRp{Ow#7%+{rqAJ!}M zig*rqH=ZVnt+-~dOwcUJv3re~HKC*S@&IMv$oxY0(ZajB10y0oY#EJtl3|kG4fIUb z%{q)>wMPpU!FfY;$JTo~x;ut53??1??7$lXPxkawLQBf58jh{zIObSOW=m?V;#&xJ zk0Xv7=Xz5L9nk284q*qr^vXlN)rd=&A|8b*9!l64TRCL2&pqcz z31d3xcq?9q#L9)Z$o-%$wjc!g64Uo%mhw|-TM+)AALlR~#B_qI#D2@_)s8d{;GiwS2s=U`P69LMZB((Bbrz7c8k5;_(5=L+5AM<*A`dl$GEEmQ}A@ z;NrJtY=t+}77V8e{jGQRTyTO7pIa(zcyYo{X6J$Od^#E7CLXJidcBb4A;v`Tj_VV0 z(EIK7k5*j0r6l6AA!!~6y6irJc*q^C9*+rIyi+|};vv}I@_C#+zFuCGY_%7m-Z|V1 z5ioR{{WOl+N+con{eAIiJtJJ;lR%gOm@iV)`;Q&sQ9_~ArH3E9+QAnDelSbjL_$?l zWJ5WHQ}u@z293jGigDEX688x5CJDm9JfRGDenyK?t`@_W>|Je>*@RX|O@;VRO@u$z zco%6U@gf`XxE0lznL6ezy0zvxFds#4Pbll%FzBA+z3eZ^Nf6V3S8qL`2qAYGCHPfH9cecg8EbP|E zX9YO4QJ9Sg1*9+!&C_Tcm_U5zNk}BrOds<*+3qC5Az;$JE(Qa#O!fF{We%i=?MrTk zVsE0LkDKDNA|kcQj!!9K!p-n|NV-&5`OwUb=q1|N%Ju|ff83GgK6-mJ8`!txVokWF zyC8MJ-GoSX%FX2jVX(gyK(RnuVSgLm!S-_2q41@2%=L(l0WotOCL~;{w{l2NqX`mc zHP_%#ENafHFyoM~u{#v^(^l<$F>WL3eme(rH#NUC)1d}AKWE6w8QV#P>HDlFJ&W;; zZO%dB%-l)V^-Bxat?M3}_=IcG)OXp8uJr!s?E-k#>YE8Qo_ApA>LE#POlTXsz8-LQ zXl{<96+amTsnWGsD<$>BTwm`EWpH6`WIXr8*gbKh@QFb)1MaXLUsF*JNxhc+V?{ck z!LZgYbskP6XYPy*n)XarY|b|G**Xlc-KCJ-g87g_0$g2aaW!VhF)$)5B~m?pj*lv$L}sNq#;&ysr((z>j|>feW&+v2j5P;1dwgr1h8qSdrz% zqQ(vq?z&=t$y}gZY}Mm|f&pjgcsv_!@GT8CX!*GM>+=Ch5a@GL>R~{K>8>}y<3$-t z8S-;1x2p0P)Xp!ZwI*$IlbYFixzd}bg79)8;nS@;oU5f+FFTjBxZf-2GV1C8LSu1G zxz=uN^@G>~y}@NlohmBucV*$VTHiQ0uzl!!=2W_{c7IFN|nONmI^u(f=F zHw$9*Z9kI0kt4h2Ek}SfTl1NcR9WfLw`f=0C(Aa(c5pAZ0)kZWk87ixn6%78PMQGI zMtNqMu>-%5G)#OkS8QsY&(_=q^m^Ex;y3E1L}VDY3_syt$~z7yLv8q2v{>yjEYsOBMA>rWJ@3+XBo>HNB{8XeR^;Th7I3{&h&B>r|3uCo z7pPhz%?iuu63lf`xbfn=*=71CxkTanJ&C4j|BzNQcVWD?6MVf#>pd?0^m;*MS3xap zbk>1dW@Or=HWdY}%Uuo&r80|YQE_i!a=oEnNk9MZsdV;h&jRH|&Cr6W9q>YANbkL=|3rk3T%s=NNXF&y#L2w|ozt zzx!|U-t!i&MYfj#(9ak`MvpLoTITTzd*dyX%^ci~kicI6l){yK_hN)_fCJ6XnYiT< zJShhpt#X^$Mi=YqhCUM${>kRXrc1X4R)%e!F_SI__p@G+3)-z#lF?EDyIO`ihFZI- znt3#}Q8lm3ANWwa-`sy3eZGZ~=yHYhhjFy(sd2-jTI6PQvUBQRXXy~x6H`a!Q;Q}Dj}xX!gi{js|%oa?_4%~wg32k&4e&xXS?gww*DETKYLhZ z;aW*D%ARvqCZY$3G!OrLqjb``*n;NprhFN;B~*3x*D1c1jxK+R)`XkM#?ZZa=X9|m zR-+YX;5)Jg zdQh)i21Pe$jLTjY_Gw^)7hBk>aKXInDx^_F>yQM==sS%0b~;kza*}-4d50xU%&lX$!xml`L=RD%<0Nk7nt61v|hTh|6bGh)`i$= zzw9YArd_(FrJ~xtP$!GO7tsiENnBrU@aWx%>xDom59w;0iUaE z#!7_-aq#%=6qOHZTQs0DuCz`IJ)n_wk|~gS%iaX6k!s7dhpNAOk--z)U!P_eL3dmufcdt6ls!cO4 zXf~kj0;~ca$xThfgJCNjC2X9xb0Ic+_w2AGv{b!G!)?Xo4?T@VeMulPDZhWG(#DCsX zlMreM3#fiVER)wP5Ra8{FkleLRQWB&;j+argV}_;A!CPB^uv*A`qN~%K9hQd)(Atb z&X)EB{ex4#Cy6I8CPfvPbR)3N}A$+c3wH$u( zaJ%k!=A5)wAm~am-&$RF`^~+~(k$R>xAYP}zMV&5vz)995PLR6o|(4`TlKIp1ci6C zbCM=q z6d{d|deApqm8n=@z~B_kZ}XczW`)yHbMG#j(a?qozmcb!*~*eYf^jB!CfV!nZ`tt! z)In^})KOm_e~L(Fhe%U;g`eo-F=x9`G%C5$x|fC#G813AU@LqoVj<{3`wi=QioDzI zWXRpo=p%0Kr8Y1s8|C-T_sq+@q$p~9O~!SSjuI<}(d)(SEPU#F-oE+F>;~JKpk1k1 zs9UaYtYNK7*d*)>P%WIZDW=S2*OB>S1U~pkMyKQ)aB3xv{06Yv+=Bu$re2ryfO7w<_MMwy}G+PtCOp^tG=s0yLJS!F)mq; zi^6<+7CDdli$0D^*7s~-%(QxiKbSBr9{Jx2HkD$Mzvr?WX&BFoKmGoS7Y0I{A=_nF z%r5w;nl%DrHI5*xfUg;-ussM5$GMi5H6>ZvTmUzpB6b-2>7EISK-SMK6};2h?%cl? z6pg6u=f8)@C|C{35bS(8y!m2`+vqmXwsKI(Ea-k!8a};Xy^g zBAfWIozE($3IdyK3E7bbDEp3|zTAP+0|gX}>88foRgP+?#z3y9Mar5v2}b5QOe&w? z3hD*v84t;OIMTVrIL-R|1F(C+E4zF2O!7uY{tv~4_D z)fZTjT|qSdi2k#1aAOg{qj+-3B^nZ3BpR`1gMMc1Ln+Yp%$Jds+?br0%KSR~vsxr_ z*lfENb^FHKokWFM2lgWI4sX40kq{|Dtn@1G@}XuPGLw`yyrx-X=6Ts?QJqYGWZ;L5 z4X2-}Nw_>@f}I-5iIcD)ZIk747Ee5gXh3LLis}}Jb}6UOLIy6BNFf^*>V%XCuSM(SYi;R~GCY(c zRQ@gpY?QR@nfl@;2j68V?l;JoHSbJ!1Oz34qs;P!C z-5v~ut}27+axjtu)JhFvj&VI5+=VhbhrssAe0J%~b9_O?WK;ap%#Nu5*N(an53^d> z_o8Jl5V# zrNze-#A@nRNjSd{%W=wQP6PFEAN43N&T(wLl~Qls_c}KFeC+i1EPiSaqqSs~itG`zKye!=En1TH|H>|}RWP!*P9oLGn zT5C=>;d8u%<_V!u<(94HSg(6{V#*=!A9q2P_9hMO)OBFUMPtNXZ^JtQ45kAlq# zNyiVsh(|53axN}#of~oR5*eO5Ul>I)Y4IDIgu1h^Mr|qKtrK7gi8wxo{=PC)F)ASZ z%s14}kH8Qe`#c`H#bsvkBxz+SjRs#x3 zmELIRj!h~~}k3Oo?bDDkge~es=8a3l4qLllC!Rw+dVU^>B z_!s&*jvk_3Z>KYm=PU6R-A+oaU)2*jd6fM2r}iP5_BcBim5fns&uQ!|xo-x3%I-DF zCycx=E;r9M_#ZrkOm+mD6DFTlg;}Ny3jd+7^xgWz-#>Iy(noV~_R{{s%hwpDZ+f!T zs7YK!j2`8=vCsZ%$>`=|vx)Gbi4!EDlY0&LjFG3$CP7-bdp#H-2I1IGh?IAQu}s%Q zwmpNj)T1fY>o4%l)*=}#r<$vQ0)}0LBrq|=BE2W@OCef>90gu_SaUjw+#R1tuGCVo z(`MfcrT5Z@bdZl2*FD9grMy3YQNJgVy zD{9o#loH*emI(2yM74((2@Zk&@Mh4CL=x5UvcqP06^{Vil;puuSUB|qfzZ@ zp`8h&=GAR#2EOZ4xn23LRmoko34dJ*K6;INR{#{vNs$p}w&#}T`f^MT@rtW>#Vfqx zDn1wqE3OJFJHv{r!oAu4L%2tgpVUo?uOMcM1B1m=L*TCBKtbt1@n1qlhpDWjcA!cS zc2uPE179Nkp9wrNk8}l#*euZqfbv;sNl3Iqm{B^UO&O*_Y(F}X#uBXXE?l!RmQ_U} zMx*88+2wcn_^3};EJ=@TjbDG}i*z~>aJs{@(yZMSvu7IOKjp~K=}>ZIIexh(6fd{V zk2wRWvFppbB2HeuoawyD7mt+RTiR|{>OvYrkAO!f;MEnKd2o_U4S*u0;ji~oTSc;^ z;j^-ZF0+blvWlIuR(OMKrMs;-sHbyKv1hO}d|Flv8dTmGbhq-LPrb0!!j^(9iS#gP zVQYb{0Lry$3<`&nV@T4YBd8^%=+)OjrhfUQGT;;i`q9@DbpBJ~Xni^%%ALz6^-VfH zseck{oz&}*8{1(?EPk;{3I_e6M+#>BVp0lD@QY)mAn}VjDP;AFq7(u+)=8n9UmPQa zzyhIgSR6ZMOjVVRB#xM!?!MxToxe$@Myi_?7fRCPwE5f@FV5Re|*L)J@0J_7YzS}F#~c! z=reir1PfkhU1%d$IF~zb(?4xG8sRJgPDkVjaceYwkw`(WU&K<#A$WL)i(rzr$u`n% z!?qHm+wY1Sv|dkX`1@xmj$kqPEQJnT$PxvWC#cn?HL_-lX1nGY4flfPq-I#dXb63~ zrZoJyY*V<>puq<){&|0}9~P8F3vE_MRrD!~l(C}w)28cNGiuE`QBW8pq9IdKD{En^ptA9t4{P&~8}-b&CTifaTyN zWHDJyHU}OEJQ+9?(BohU-z{g1S2WHh3w%WD7a1w&XcEn1f;zv*OQC>2fYL|?0sl9T znJ1nQVKitLzJ`>@OLEHbf2Av}R;R?QPT8wd0$tZDT~_=tUsdcjIH)w<0nw+5)NB;T zU4UckWd2Q<*`p&+Rv504y-!+s=F`lah+RoQS6*{TfY&$Na{0qQTY^`s%UdI(0xOxN zH2FkujlA~ku9<$jEqOgy1*#C$Kfo$!d`v!V60i|zoJN-+ZmKrbuxYhr3?7r3CoIED zglki4h5PY?sn>)Lgwyy7!C(+Ts;JTv(@dk#n4Tmsj&w|jrWuvMrJYVDfvVxzXw>Y? z3prOV-O|w3umr6`tAw?#mFdlBlW<%50d#-*N%VNSuVHt?@14hlqYWQ9-xrQI3^+d* zK6mvue2u<$ev^(&##5XVQ}gjW=bY5l&NZ%=h2N#$72ZvMB7BlIR%(cVUvx{sq+g6H ze58>=m8wGWi!o3kf)GU5h6ESFEDYA2mKL1plmMy{j@{{Yxtv6+(IAvg$Ksmw zPe2B_QpsQ-AoWSRrK8eusb5k_y>bI?z=VE4&B!%!0BIe&nrUC;XvKrI{(Fc$>ZjR|Y;W2}eYKfJK{%pDMM!=DU) z&OHU#is9eN(>7bMWeWx!-E=+@%6w!&q(julE-<)#cF!-8x_08&z0j^i_21tTTtH8hNfB; zqWP9(=xWP4%R~4{d<5^eyoSHWmj5Q0YMXheGl4tD)88_X;hp<@mKH(_UWcIt6!hr> z04mv&r^~$~lc-DwTzL#wf#nI=WXW3`mOSC@u(|ReF;48Q%EQ+juT01Wl9 z@f=jnY+^4s`%P0r^~l|^ujj>uG@6?wfkQ9Zqs#8l`Sj3 zU4E^+1mBGdc>M48OzGKKey;rNzKysBx8em)Z={tO?HeWN9q6bQuQ`O0aH_v(&ZUyq z3oFHyo*U!KllOYmYlVa1!|@Nr4?Q1*RjwGHj7Rg4d~9?)otz)LDz-e?oveBpVYjE+ zGtKj!>qC*-8ON`N-*Gb%fcN`5r<)+I}L^*)JKbxMQf->SOe4BBOhR=O-v+GSC07pU}9=q1s-rIJBu zr5CPtdW1+kTJ4NxaM%Mw%vF=Y5iyiGuhN?`3q*!R_T}ga0`;-$1aH)|JoCsksUe$`Pn8ye#Zarz#q4M_)2|OYwlw2lK;=w zx4^eio%zn0x1^CYdX3(ik@c`-*^+EYwq-lf7$e$row*rm14nm${j{ymY<_fh_~Ym?`s?w-O)oUP zp8rGB`6jEAQc!?)rts5k?#OoJuZ!Q9GdGBID1pR$5~(1Ck*E!0P_PbSI^CFv z$Lnb1rfC%aCauvzL;7)ImU>~h*t8rGCIx1Wgbu0TH$%k*^q_8UNrl59+HSKUM2Sw~ z;NECBxK|ICsOaG+J&ctx9X&3$BE5C0^>i!KS`-OIiR3j{#yfUvGP z>Mp0S`a0nzf*M!P9+%5`*^WgsG9)rq^O;OEiU_Iw|42~)zcp&95+kNX?uO-umP-ZA z8j(ZE!4e@#0vgfpUq7|~YfmHJdE5yqsC=INRaATx<_g+vwn7^ctekE>!g=>ekYM=1?%aO$|mO&xN6- z=s)0Yz%(Y=+>&I=NDVeNX(9z5L+3E^PBk;J6!;mD9;quLq=I`J#dJC6c)>xx?X3DvYq4S8m^ctRLh@IE~i&ApUTS;mYNS?-ZBf%t|7hI{N zrO{NN(smH0F1!))c-Pz{6)20;n5mbsXtmqY4GAX}uVRh|n$Hk1N;atG*2J_wfq{_e zTFZ6T>*Z@R?8Nv4HU=})v=PdeEIxag&D+a`yq&<3apZ_)>1qVk8=5EqY$BM zLH&5LmZk#!ALi+VbK;v<-SF3$mGA!J{R4k^zO$%)Kj04wi9}%I@tf~_u&twh`LQn! zp81EHZ)^7kqGqg#GkXtRz3YmVg@HS-`}E&jao{ZzSBd1%zkK1r$vvA|u4{~ZfBWZ0 zzwnciU(EsKTh5>1j$p~0MZ2G+@)(#kd51t;QUO_)1}rO^OrkE8MI8enF)z|0So{vR8>A$Wm^`uT0TvU{86YEF zRVm4NG?hP;pUmU!CdSe*ASh zfo*F{2TqJzzXjNgb{;d^d6hQ&e#aCPk*y2Nub#1~v?AEB$^$Q4MLu`>^dibZa9DE6 zQKX2L@>2>Tde3KseG4Tc?Aw?lrM_E>75~Hep?WsTJm-DZ_np9e^e+PUl>eK7=eZO7 zvjR4_p5UJnzTtU7;l3iw+2@=Gl({H(qi3skJA0dXHp*>MHh4#(pX6^8xXr@2xY>NQ zZQR4@(GhBt*}$#iIW1ab+daM1S{s+((?Uv2c~T08!B8|Goy1l!S4|-aQMRaNRsu?c z!YG0jrWmwgjU$MvjRr6_A)kBcrI#=sn;>qWpzfwP6r}7PIcT?uxU=ew1l5J}dv%8* z@R}$HSZ}+r-r{&32)LwpA<0vp1x7H*|>E-&wGFvbE*RG@+u5Qnwair%uR&x?Jn6O5hKl$NZ?1P)!YK%)H zOxbwLr#|{O#<9IAT(V%HK#?3ZiUpe++sntCI_6LynrmEvV!ORvUd8p>?`8K{pD{ty z-;_X?Q>)SC=B?~C!lY|EJ0ncF?qzoiv#zJ8r_7IAU!WGy3+4r@+b(mwz%dN(;CKs# zP@T!_Hkr&OSu`UGw~~}qT`!1cOU&V*u!M>U5Un*9Kpf;*K9F-&T*EHLz!)ix{)$xn9)Xy{0fB85XmfshjEOOr7~q8 zCo{HWj~G6YafG4}CS#%{6s_a2j&QLDKDvi)oZVN7>L1QC*DYUu^Ct?PWQZI5ke_;* zUw$OP{wz1X6RpE{^2y~-(UTa>2-N3vpAM<_CWhsb3@r^S7fv-b5yEI1#|5jYoX>>QAnE zr*;pFV26>nA9X}M_)AYNuR#mTZ=$;8PYG!FFOaQ0uzVxUka6zO7>UB3UtByZxW?f0Bz<0#Zw@C z3uS?nLK87PH4{E1Tc9Frx-nmrbQ8X)q=&<>b>KtN!ug--5$GgI>@FYjkyan+;gb^) zp{tRlau^|<#3~D0l)%KNa_8WI{4{e4qF!J6N7dlyrXa zgsCj0EMhgSBKAn^4naf+|=gsaV7}{v-SZ__4xw;O#NkZo$83D^m$I zF`Jl6uzKQbf}TyFgbbY$-=TXjX?iftsb$Xsx?Yb2bLD11x0N+)1I`MJETFRjf)v1> zl|6rDz}4xQnamKzoEZ!hfaJQ)WvWh8STaOa-aq&DguFCeS(<@_3rE@Do}8hWjxrLW zCdQYl%ZCVV?JISLVw|h3y|ta@O`=((`DmS1NAo31S)&|bSBP@D?5Z_{>SCQ-IYhOK zMGcjT7H3EfAzK~Zbnsmvidc*QVXMfap#jn=&Gu5Kw!-f;EVx+?ImUj7u{vO}I2&@Xgge z<9MElT3%~gYipZfO zV}X3azr2#Ln}o^e6gKnWm0Q5{(J@kW!})h9N$yd^DO%ooE5R(xPCYHx2x?Igh!%}|)#487|s2QkfJ(8I|xI4>44onxwA zJR+B?j!_JKrV-$9x>TeJEwy!d)g?=W2r*qU{fXCi|Lt!OI=1&)&5fNAhb0zUxpl=A zkM6tX^0p$n>iG8&|JLiswtpy@OL}&wk^XBQeeA=Y>}`1VtIog8a@+%yN;S~~RoY7C zNJd1O_YtBJ4FV&?MrmP%c=HvDMoc20Cykgy8tIK&KhO<(#|LLR>e#-d<0;Kvjeq$eJs8%m9}+wqo$Bbt`Wrb!<%Iev`ib6IeDW=>@shNfCP zg@GyzW@6%01@g-(Z{Xht&la{M`ud7FV3Er*+2UmG4)zZ2K6W;DIJcM+^xSNYrgBPy zCo{&4iKCf^1YwPUv|O9H&%ECJW%h}NLpfnFcQ!+78l^>_!_o z+o>I-4r<>Jo)unhup~uSz0~cDxK??>^-6ar5?-a^(=2SGhuk%_5j8fdj76m^QAq>k z;Pgx?v&vzGQ8C7+mG{ykJXk-eY!S+5`bvCHwr5w>z8qRQHv`GO@PWAL44$$BqeHS* zj4}!${R7DiE7m8HVp^jzEZ(GqgoYZpMy-}-1$jR0K;huz1-BeP_Cz%f?ZiT~>dLJ* z7M@{}^>VS21Dp|68m52HGu!{rnGe2y+pt~p1u|CTXtGC@V3TF}Y?kl3Hn(y0=J}g9 zU*Egp! zY=KBu+)u!^%FoCdxbmZCfE(Cmi-iaVKtCi?9*p@3Le_6&7IUW-LDU-59QHu^_B_SZ z;^Jfw#xEL~NO2%xSe;1CSEX!66aaV@1sA@ z@0IS8?+Jg6e%g23^;7!i_Fu^F)BnM^oRh+&IE81o&-6XvhxW4q)^vh(56zf>Pk78H z{jH{6y3aJMj?$y1Yv>tzpKG805!Yj;$IJ`janro{2lTJ$Gt&EJw|H8>2FGcEo`w?c z9k|NpvHf@_>!$LG2Zri$mYrKXyF3RyZ(+OF6Z{Eeu%17S6$sd*M-3xXUxQ6le2=dR zB6uRgtD=$$mhB4KrtDJoW6S-0w|iDZd2vpp^WuK-Es>E$UBojH=fyK3FMh-3VX1vU zS4^Ys%-bLzo1tv7O|vm)ZO8^AG2we@>xuLX7@UdW+t9gbY{X4W!&;~%jM2yn>(=)`-q1xN2=?T=c@fZ(()nIy@06SuM&k!%UfPc*rD@%G) z*^0mLVuYh9Fub7v8F4gd>;;Wu)jhMZXEydsWKXx5${yKY_G^x^RU?5<^5UpV;MMrJ zi}zM@Ee#Fk1PzvmCJnFSFVNPldpF(Fqu9`w$e7dd0X2p$*Ilz+5OyZ?;hX&(tRs;uiig!@9>wrU-CUNyud!o z9rGUZy;6K-U~%*5&1W{B-5d;Po`PI*x2l`DC&d2NN{~{R)@Xl_^7mZ)YXByf%WV=d zSa&ACu5w}-kN{?IOBE=w;bo~DOdL+UkYExE=&Q#!W@e+{o_bTaLSN^>=;7!KQ6^eF zhm`n~DDJEK=K4`TtZ41maZ`UI$d!JQl!QdxwM|63L|k!zJF>(-(t~;ym}Xt__nUKm zG~%E2)Bf+$Kc;xf#0*hg_>h?w{8ykW8XN6H|H$OAtcl=lnHpm9x+>?JpJ-*av=oEox7#m%<;5A~v6V*T_sYYMU} zQ_5?Y(H74CQFp+3iUdMgA!Ae)= z(livJuFQ;TXqB%wgvRPOgwXm8;f^5g9_*wBoBK61&|hlR=^hQ+6f4=T5V|~fMTlCL zzCxo`dwW7;HCCn;XQ*yI{=T<{%;(4l%}juxnI>XIH)mx`qb1o1Hrm-E&T6!w7DXUw zXt4a1kHxC^m6%Un@{b%bUNvF7T!Ji^y0FX(mdGOh(mlLi8r^j2(C*0>Gd70j7<=Zk z?I#~!)z_#-^P#DKUNN!lQ-Ay6_wE_6I7-5nVy28d{aaTRM+UE1U0D7gm+#p6-D6J| ziU)p)E>C}P{I5^y9B=Xl%pAXFYW9RXS#~=#fn_+8b?VCLYrn9erPb$4TxPmfZB}Df z(|dR9{OX3wW_BLjblFFrD{M^U<12TqDJlxfV-ep)QM7=Ow1ujps~(zXsW>L=Fv-!j zicnai1Qka~_&MtGF(%9rgf>l(bOT*XfGFTFuKe=}=xwt4Y7~qszaqVS&>ec=%Fm8N zFP{d`+B+QG7Ttx#O5Ha6oF{q2>jb_70)z|jb-atpRepwv^wfm>#zYlu8y=Zc^2wJm z4P;>P`31yn)tta=QL=^W92*#@R=T^5itcY~XW*F67mrmzImYA$K0k%W{>G`wDZ^<2!^~i; zG8ada@u~P+{80RCoYUeXaaxB>90Wj1OOcfA9Y)!dH_BLolzP@5DEiV7SAU%~9dY)@ zqV@i6EfQTN`6bsJo=Tab>LkJCG|!oksZ89JJ;ZCN+bbpJCP}jTt#O~8Df@{3sI{Xw z=R+etH0hi2&G`=b&iXjt(b&g1} zn^j>61rDsi_v%So`Y=4)2*S_TVgHxgc$XY^6=F07;T^2m@7`jp()!3N40d26qBmYU});iXxFPdI7 z|1UG=H7T+hR@K$?Wp>`;u)C}QDQu6}RDK;Z#;)VWTBe>zHdF-pvXXcmH>un!`fa3QYzC*i_uw%lIj!kX1U z;Tw7iix13+)tBSoTQ(-!5$$lgT(VycMEu!wq`tn+Oq(L+XgZRtkG0n4x=WGPRaB0$ zxMVr5scsF?nrfFZ0HNIo(U4TEx)57W+s(4Qvaia& zMmmeJL=ujj6a5Fej@OiIzWR$JdA|L1i?i#Y@xRD64l=N(n9(1$6!L>G5_SipL!mZ}bZ0vV(m=M+_v*3alUPSkidVgEj5w z#ma$bN4LZy0TG#jh|EAlW*|J*KN7u%E5AJkO;Sw(N}wh|VBpG|$Kf1_`z{s^BCI>6 zT(EY-7DYL65P799Xqk^|mKtT;?l1N&S1Q?nP4xv*4&>k- z_^^9@dzfeuM*m75cws0*i|~1DlWkyrQq>~faUBHxIEhes9puqE#s>2>d7p;|3Xcz3 zbUQrbe1`POG`IEEdiBg|2NhIZhUMv^mH%9ON1f z2um2((DGGJ=!?cRv-2z=Tx_bO0OrzjARs6Y@)oTF0X?>$(I`qknq2aM@ zW4p$fvGsgkvoFzT5xN>Vfn*-#K%-4eV7zv25k57A21NJYt5s45bbnILkn&}M@iG@E zzYAX;U)>^b!sys~!Png9AQbP=h$~gg@IdAn(w1rKCVSmvuX_;B&2s$1b2WuRJD<6=fgM;H6tBm8gu$A%1$rn$7B6B`fsen+%)H`n- z7~S{+)qDOo)N1_A;cx!@Z;l6iexJ|RZhXdrdZ;Lz9{+>F%wiHBpR`W2W~^v#9BHDK zj`$YnkB-%~r6bL_qFd?)(~-XZI!8Lv#>VQ0xx@uIx3{IU znRt7?4NbMpx6y6TrVMT9jt>s1LnA}65)-K-y z+IkPk=Y=&~5c!thhs9iP8%0+w01lrD`9DMySnd5BwfBH!GS$>xcU@evTNANlT#AN} z&0c3qgb+y#G7>ByUt@X#ONZ*a0=>posV<(WW=+=eChM@u@m`c87n%iL_`l=U0vg%s zY`USa{tnOe4-BlGjw)7j>x$(rS7+2~W`p(XOE(SDw5OwYxp}Z`;i8Sht)+EM{^o(@ z&Pq#wVBC5;a%bq@ZM7#Gwr;s~U|_7{j^!QeHARiby>iSkg6^Bj>ZLW7%<{n1S=@-V z(v`TaSr0e1EqgY#2IKKy=NP*B;l^kc4@(rq{BJDD3iJg@Rw9xtPw;TFk!&s6l^BSG zEbPU?@w7-pl1Su%NaTU2#NjlB`DI@aND0*=J(@fIP_ zNE2C-%NeT~F+c`C#K)lVCGtZC0RkJ48W+UI)j5UuiikI+nbgSunvLt*<08?XB9Rm# zks6{x0x=3{QbcG{lv0rjlb&JH5GDu1WTGTiQxg|y5GK$goh}tGg3_ulyQXt<5WP87 zP5*$=>K!G$p(K`o|MR7h(qw6>G*{x9SfrEsEZ&%?@#)*lO}BQY!>^lYrTzM(rGX8Uh3o1RP0rx_|Or)jdR#)KI@Jz2!84$FIum73rP zzI4SVFm$c z0S!F*g@Kzj#b#-~Y`N2=7tCz;&}Vm8Y`}=_-e$X6^#e}zk?SL zRdnefHgPUQ2q3!yeEyk%`P90B`H?F&9g!kykErb0D>rTYF66VopPqw1Q3oopXXEo! zfN7yv%FVRAE594OWEX3P@r$c>T2a`UuqEk4C}~dcNr&C7QDGF&kYd6$pMYyFtE{0Q zgEtZj$7zk_?_mRww=yfm0Ntbgv5#Q>dVGVA=yz5 z;;#qXh8DwZ2o8_x>oltGpY_&(|Ib-<|IyUxyKdU?+OF4jUVrDS>q<9WcJS^`+;w9g zbNH)!58wXL?Bnbq%|qXR|MQdB=s5qE<$mTlOl$R2nXaqSTDp^D zO|_UCpfK}fb*azgr!*$*A~M*ek)$aNR{z%U8j-ss@NFf)j!9*ltc?#mXT0!8w_x~@ zP1st;d7++2VTwp$3SsKR5*8!3B_ePydLiD(EH26~W5JsHSe*M=s^$Dg$AJ)A%s`VQ zSZy|UcHq$wx^)p5>Cy}xz{8+^uLlWO({Qg8Z>y(}--ZWc`9JJ^3wTu3z3*Ck&tuP? z_e>u1NM?4DnaoTwc}@Z*AQ?0uVgSV;1PKuGAc4F{f*2Lav5L^zLaX&CQt^6Et=d*G zVnnR1RDS4B1I%pup|;7 zje@H*D(cD|GbrOkFfyLJ9$R%)P~I&IYvnQdQCXD#qzG=di|tpG%h>^zu>#5teyE2% z^aX3{e|VWTnc)W%4aSL;j7wEK{1@jp1!(~>tQ54fJx-cJTpPks|_ama6}vE2-H`6$*v_| zT(xP(;KK`NM5}Y_E}K%kGb8S7M^V5NrZpy8-<2J6u2_{^QCSfZ>xSMKZR@@H^%M7O z%eI$Iy|X$I2#0BoxvE24*HY=RZJT;{ps0Su;;yIu*QUiD7n^BWq0mo4m!tHF^xk#} z*JML5*BRkMh=?ahwFy_|{3MtjeFW3vh9J`!zN-@C)2ARGXaxDZgd}QDbq=z58*7*u@FaT|43@+))}b7SF}XgXtwFJ#-k%)6AlqIoRNIq6(teZ9 zm@J`dN@$SjA|KUnFN#Ezxy6A!e8p?wu zw1hZA!C+9KW6EwtAc_Oy_-B=)ie6b8dtmysojMX9I<{#@`-pDnM5|M~5szdn>kgq8 zM)Q_EBYlo1JvP>Q-Onz|G!2i=Tu>7#TAuC7E~|7~FPbw|I=|2>>#aq;U__?b;-jy= zdT~55V_sHl_0*+J5p=Pk96su8zwg34*3Cj+I#S1kpFv-$bTyj3L=s$I5=qvF3Y70h zP`)2Q?S7vWv9Rz+ft_tIuy=OW+*Pyp_9~+ku@~rErFuH5r@eZr4_8o1ON`zv0oop* zfw1DEYkh-0!RIoQhQqC`=&35;!)s+nX_$(jcRup^5y$IldpE5e)dlv5q$|k@xXSfH zNtID0<8@u8ryKRx>jizd#Ml_19f6U65D2@>lyP_}>0{brwJIi*JTiF*~vS_jx^5pnSg+DHm^2D4hS6)uOH|CGuZMs{&N4dS| z_K?|CYK_Jh#+M}4B(9BJ8{ckwu;|gmAH}!xEHSAnK%Nl-G)OD>RdA)_-+ z!2~P3;-b{WwlDw8cBjRxq5QZ|;`5dVB`U@DMd;edU}P*JDv`>F z5IIB@Qcab|E=yMq_T3a8!cMYN3#kIy+EQ16-hVtr0rD%>PxA{U+2HnA#s^gxJIEMK zhpgr-tJR$TysAb0zN&TTtS_tpYPTqtD<*3VDQ!`|T#d$pio8v?ol(VGXNr33Xi}~dVEyU=3LoDq zlk3V66zA4dXK@5v4K{^2>=3@cj(gs^ka`TINcAl2LkV|X+~Zbhxl~$q7m{!x30GZQ zaj`h>CGB>g+3Q4y73o+Rf%lRwE7Gw72iD`{_Or)f&;Fz8`B?VR*z~oVxzoQ3z;0}E zCeokjh9a3Cj0w97inpwqf0Ytk^R<_s+1%V)kezESD9F2a-Mr;(Q@<%IyXX2DixN(U z%OXBH_0sJd7M5KQjg?>0e*f0H1G0}^a@$v~sGGNXcYWRRO?TzmZ65aXj;Z&B*}CV5 zpH6CRSU5lFLK~LP&ncQMe41>@c2m8ZgKplDxz#l&4xHv4o}0-+{p`vt#qBv+x`Wg| zPN)Gr+2qk96(#EJ)iRGc`vAUtCM^K=alzwkP5dbFw{NpGcXL<-d=L*_9f%Vx=HZgQb=+o%7S|-)8?gTg>jv^1njNYV6Ae9i!+z39O6#bOk$T!0y*&vsY&#yU3Zv)hxl!7Z%q#i)v@^TP7F2@kSzA zFvl4w8fz?HQS#N9!)3WK-E&i~&7XXvWlk)*u064)UFa^z=~+E^?KA4l}L_!_Y*t!}RLi~+!DzBTU(r6&kB zPuO5qY#u{?+-5eilT=Tz34$b(inmISphPifXmFg+E|ya7mEtF1GsaQNjp`9IQIgGy z*<%ZZb3s)lX{Hk2sgTv33ch!t`1rnsj}NhYGN1jrB&k^8nx`1lwcBDB+iPJcuJlek z1Gw(FT#@3;)mb!Vg1AYh_1#wGgz-I2rf|c zKFPg=%?}Ee1j3ObDMIHO15%@64(Ce;>Aa*{CgCu;B$gkWY?jUD0)D*JM)p%`r-O7K z{VCN^ww@Apd3_<5>vH#Qw=f20zguKVr)X*ir7Qm7wzJ1+>|%cHmt@pS?f7LQjPvP{ z8oO@EpJ#XG*?oD$;q*K5^U~KX@%szX+a>Bb*0dgC+-9sT(6rOZcHzW!dqGYxVw*Zy zcFhg*7Hx{>&0Ij|wltLXT~@bJykqib`}pbAAC6tra@!cadv3L#h9~bCyL?8IU|c*? z2(x_^=;#UPs3JV4>ga^YM0_p-zhT!2tH284A08uYtNX;e?>1DRN2oZn@=@iHO@7H_ zDl9-ea~5Bs%W@l>C49K;G6*~b^;_Y9!sr|+J@c;~PpWw9h=ZSkPMTa-$}2oqdqpq5 z0;RT)^+IjgwOQUQUy-R$E^sQYkVo+Dn7uEX~N|%}%<$0cY-b;Nw(q8Fq z(>Hv3{QC+YA`eR6G~MsL-}j*Z`_dDp33i( zYiqb)TBZ7dnCf40iRwops$W#3`c5bJlSyx0jlJ*&!tOmE)Zd`|ll~Uxu0m72R3q1T z>ijPno-O!=&$vV0>ABS_&U7vC2yRbSz)k#0fVgC50JUIyGH&vD6_3|jseZlZ_xVC5 z36Nwo=yf^?Lo&Au!zN7iHk?H+EQE)aN2}8TZ*v}Q?WAoc@qFz4TIy-m{UPK+5A&3hsLNp+re_J;f#+iE`qjaT+I^!!&H(9HmjSNw1OO01~md19PcR6-=c6xUf?FjEE9xKni)wDhL z)?(3WYN1;kTbw%736y3yEK?(Dg(KG)a41Cu0fofk0b-YJ0ejFJ2w+;j{c$N8L1(%( zne>E1ie!{b#!xJp6^lio4dFL|}oG#DRiJ>Uo-OAYmfW2a@(^63m7| zQM2-?y;H`V>ahdQlFnEWJ87Gp^jBQ&rT2O1Gv1$ie~VV{YoQ8MZ~v2uJxm=abnS#` z_-X1O#UvXw+>(?l))doZ@mR4?i~-UC)7D6ZbO_a4!f;AfNR*C6--`%8okfR zm%T2J(Xkk1djU!;8QULwHg+^-jIAx39yOg{`+i>EiOFM_^lZ}VHiCQzz-!MjABIxQ zrZ4vPspnVN5G(xwpbDQ*=ULNVbF&jIQo1>iGDAu~{{!z#*XWRDOS9Dr*!Y*l>~J2M z3)WT?vkTbR#DpDkcC&UOpWVMU?PW3Vz46?-F!Qqc(_`7wAAf5the2&PBK%`--fW~B z67885iE2AyrDN!Z55G|3iR8?t2Nndfq@&MeMe1n5^4Qd?vEx%8gr|O$f5B|DC%Qmh zFh2P{{qC)^b8TWcEap0jva%;n(Z9}6-0XLctUaIpNw{?KNl~~oVP#`R%hY`FG+LPI z>2+lE0i`7(xi&&0`RJGVYDyM6hvwvsT80tgHkfHHqn_<*nAk7=5vpcGQ(0+90 zbF0IdDnK`}zOwZ5Iy~Ov88W^wW#h$}l>e$;#6rKFT~=1`+ape+R9H$&!cmXOJN2a* zk6tmWX=Y_XT~rQS5}G^pq`koF$W1_nBl(eeQ`Pj7Skz@QThS$Y3TzFZ_TRFjF%}Ye8%Yi+BR3_Zl-P8h+yHYxjK8oy7%h~X=4i5TBG;KT zPhg%x#0rSp&c8}#A1{<7?f&}v(2qZFw*_ruHqpkyOuG6!d)MZg^Z#H}SWOpLtlxz6h!F2wLCfQ`Q#$B-s7tXx6_ZH#m z&ZOCFF~@Ua7cRQsq7B>i8)M}ivx=-X`-Sn!c_Yg@zFS;eziLjN&E}X@TD4$kSjbpMke&x2KCRRWLtk|4DU)3=?8L&@jGIesP` zGIfZ~KNCm#2jWQNFNdUzIF5fHj)VO9kVB2b{$^?BE}C_gStiVd*)2RHyd%6L-XxyZ z{aXLBq1otz`MUAz(hBK5Zr)doTxLAj{bKt^;gz+{T=h(-!rqmb>5se=goQZe`KEfe`4M|Z_bqv;hjfh)E7I3#Ibqn03JbW34 zS8#U~-Y!F0kHB@Leh$|O9+r`Xpx=V<>)|@#uH^7a4zJ?yDh{*1dg1$UMGkM^uE-@5 z;7<$|h>f~5SR_N_cN(nAz|j*AU8=zbQb^O`Msm$GjsyumqQNGzo!+LwR$-6e;$^}9 zYIWbyU`p(|-)pcyjQUy)M)~OTG+38`qbC;qG7UBmr@l>tjbzp|jzm0qQG-q7V*QW? zTj?VG6QE3WBGR%L1rF;0JB%(48+dpjhmAbEoWl}_=Wy7h$xww=8LF@hqE@Nee4E#|N#BizQ})f{Gb+1iZ#9A>}4<}%*E z;j9e&Y)(gob27rcJnmOG?B_Tt&HN0UUbA~k@TNjK?)zlaQwe%KK*N(Onz#dsP5%-lAF_i&7IyqQaSVHC0yVe1ip zgbeeiPWYX`z6NdwFq`qdkB2H`G5jqYYXD(wprqg}d(#Fx!qeyg4tqC5HX>|*bp4n3 z`z&Vt-{pgGzMgDGo>V6Q|xMy(eiqneC{xKtU{I6|)C z_#-@AAx%7gOv?QTQ;?%Nw6xV|?*@>2h4aSfZ06<2N~K#Xqb^QygqIe39^^Uh!`l%U zR@w?#$K#G@AZc7abgT z0B#3=KgdgPlylk7-wtwls1({YT59f@9xH#7^8qf+QC`wLC|QMT%-_ZWY zrF4dR$8 zRF!nwSyJufB|D(GYOYjxGoA*yt8i|wnbusD4#VsP#(!Ey4=L4^RW(X;cc-#wpnqUw zbg)yocwlI7V5n`RXQ01ancLf|EbUp}Ju<8;?HukLx~8+Eyt${Zb68p2xkXtz(AU+|WQ1M5FaV`=C5&An|y^;dNc4FgfBEw8FlqKkUkhX#fR zx<+DW!mBHJTtwwDFTZk8^K??p%xN5I+tSm&URl!B)zjXolqpw^wDtFPj)J41p5cN1 zxN=ob`^dnM($qH8(b+$uRMjP_TLv~OeQl%4=HX6dq#HTv8o-;jVP&v$sIO;aq_aa= zH;Ol%%DiPwbMbbFKMW2HbZl-PQF{87E!{os-5GJ=_w={-Ztg(TkpZQnXLzs|3AFWh zAXX0$+JS}S%M~S^_&|T}s1ogoDV=@mSgbR&`qS9wWQn79usjcS4v!2WcMw%Z@`yf7 zYZm7q+JjU^I{R3`4D}$@j)5)xy#sBTiGt}imDSE61^FF7QgAnq3~nA#Iy$dm!Uaxu zXYb%=a)j1+fY-}5Xkb5TzyPb2)C#TJfaiC3i=2L+Zeu&two}|AJ|;dR{s8tV@sRkP z3|b7kXZrc~oOb6~X?31OjnmTwbXB^`beHHZgj)yfHq;bW2i0Doo9?Io1H(PmGRy`3 z5NcFEr=gBLNvZ(2=l&B38)Z2OO{EAQy)6>nuEtQ{4ni){>znYbsA``6OW}_+q^6n| zEnZq#Nyzr}Xx{?w75X};EySSmHbR9j3wIL{qo+N9?-A|+yjR!@_#48#fcFXS0e)Zj z2=K=uI1pVT##y3UoDcXC@iM?o;*Ef}iQ9-Ej)|uMe;|Gecv3fvvCW8XgowJ$x>3N_ z>8=BOz3!`kzoxq#@Ey840DoQgb-;J(Tn%`YVFd7I!)CzO7`6bu)^H0E4BHL20^VWR3HXb~e<9TPP2)F- zXner<1mFp2E)k@QB#g+UZ%8LG;`+068t?}uP&T!gwh+;Dtr;U(vuw5!(QGqE0msak z<(O;C-va!gc|YLC%+CS-q4_Z27tAjMe#Lx*2Q*>H2LImk<{H5agl%_hIh7%H2QoZS31f zKIHBcbE$#5HtyzdH=yPJT&}>r1J3X%a>ZtHdiX~0DRFVa`(8=x!^ zO23HIDWT5A;1Rz60&ogHe~0P^d)2z2sO3&;wyS>a3e}%6q53oLQ2lu~s{Z^g)xTt+ z>Mwqf=pbCWq?#BYcG{{V1}G3+)2pW6R?N78|B3p%u2}Pvnm?iX9rtoPUDrg{Pr827 zbxM6&zjpn|`W@@{s!!c=cc8nvd%pVABlYCOI=~ zcJHTsuD)pB93E=#5A|Qr-_*ahf24m$|K9%n{fGO1(f{rM8OR!l4$M|L9^@|ka+TuX z4AtM{Q2n9#sy}>4#oJu2`7^l2(arsY+759kttCG}=?T2#nrRokfxajZpUBl;WlztI225Hc)9 zYkj}r6~iB3{%9;W4jLbp@}z2MwzNUIO?pxKwRFm)n65J&kW1vl^1qoSv&-x;7n)a@ zx0?@`e_}puskSs*R$Fei+;4fw@`+Vvonc*Jz0rEWddg<8&9ODw7TbDlU$O0lZnG7x znQZ+DwjOqN>HvK|wTpfX``6Sifx?=R+d&Fm2T80wiY&%t#85BBV=|e!B@#9QmnMuTeeQdR>{~JnI5>e z@O83!;LL_)t7R^}T4qOVwo>MVpP$-80&GacCv`nv$)n^6bQp8Bz1hs{Y13y`Z2N)3~2U@ZhzE-gx1>DRtx#C3f@KV977H$;|p!I$h9f>4{@Sr*uZ!b z7{iEv5pr@7u_5j-;tqqq1K{rf_&Wgp4ghl)m=A!b141sW7d8l63|op)HGtmBEalIp z%1bK<`351g`N-p1ND|{k%CuF<(C7J@KJSG_>;8_Eyl|3ffyiXDcN8Ch)fcYb)@#0&^?kq%|*x z@vHH+@c*tBLB?+pCumN9<^*U?po}(v?gVH|fX060Z2~m*gU1QbxfOI?fOIE7hiSqD z=uCj$31SA7lc4e%sJsRWCqdyP^yM{Rz9tmH7UMYvzch7{m_YlakcE7E;QLbl8+1>C z?k|NRghgRXpe6F(=wwFer?#Q>__44Y?^dRc3s|ox?G&h;0=46yb`aElFDya$6^PLcyq47Wgw=TN#QQ#Q zV*`b485G8~m@6}4-Hup$c&t9W8-U$}n0csKUg)$pGk2g?0BXn?Nq}0HFdx_p5Pli_ z7Cf&6yb7tT2D~QKA*=)33AhXXdf0Bn-2jgI0B?qW4eYf@eH1OBo>N^!yuxz$Yv8vL zrtxzD%}X68W=)rxo{ttJw+gOf^l{eM%qo}VaTF> z>Jw1t0)>N`G`fTZ@EN5hPVETNehbtFKxrE&jZgEj1@TA0hi#gVc|6C*f&DU1yP4$$ zRG7p!!uG1V1MZI_wile(Q)~w=0ZrHgO?X+Ow2kLR)qvwj|1~aMRRi{L`K<%o!KJ+i z8o+eCOXxxP2H1^Uo_nBgdxT-G4SO=QVVo4Bc8#NUjiXH+N1Hm1)FBP%BG<#IQE*TN zjbP>L<+W@vdZ*=F54|XxZQ#Nyv_jujPyHU;$iiB{ZLsTL+kxK!zY{oJ@Yln31McDa z*#z!naF!4T0T00r!(IzJiuz#E>QvKoIW%#Jc0iijkUFEfhZr?&y$c#P4&ItLZ{1w? zG2Y-Z>qd!Fp^vcLp9voK7L1S>RG)efDQrNAZv&lir1S_R{YZxPccJ|HkfLA9^X)`N zjApK7s*Y^qye&rf5^&Ly`s%diGo2jQG-?ws#dI!~q~`N_!Z6n&tdnbdCvibC$DtW7 zgZsOn8IOP}!(m#smQy_fIljy5^#Ck1Ul>8yDC&h>Yv+z@F-{}K3%rHug3flM25m%G zFRwF)(C!`2h^(faPH@nrX*Z)Upq=nCJ;&IZ+*@#{OZ;;k1u4A1Yuj3_rS3v+#W+>tF$uDGFEec9@Rw-I z()m%bf3IQk{HQtSxlY&OHlFL_8M*#BPuWV?h||g1X-!6JIkuOVAGA@}ptS*gyzVD> z3D~FWe?Fc9u&hlwQ>NQAEnp?{z;wy6|?bx@;_8i>F%T^9b^JL~C)zdA}}@GQN^S*m(x@@*%?ZU}G>MsesX;6cQK{{0Dho zAJtZJ-czmh~r^dj*pkP3FBo5hhaPn>u^|)!!RC)A$zOd zd(uNTZ6`CEf9BNrRoz#wK5pH6>sHm%$NLC^7#)BRg$^P)*l!_(-ADx?7F9!tL!Y8L z&_zA|1_Ao7aQ;X@KSB3UqUZzBw^5SlZ$y8C-WL6>=ql1(ZW_ux}rYh0zQCdoeN~jvD7SU84NLNKQQjMsJf)yKSs1~XPX{k1< z6X_@`WkW})KB^Dtsgu-6WI&>r!WbX^{1`2ue1zJp02dN{KLt`B;3UxL2%RtjJwWcE zwjsbdz(v3%z!kuCz)ip%D4zxCJ-`%)X)c}RFb`Pbfaw*elMU$_cRi0p&Gl^heJP~t z99|&weNf%^#gJbBX&fMttwU%Qq7$P$O}%|=rR8bMO9h95R!7T1D|2kEW#ia-%jU5cEgLNe+8t}P5Qtl;mblhvQm&wt zX^|eAB@jcoIAQW3Y(gA(z6qZ#g+LQv8lY^I5may} zz+(awa!70~A!vrO82oiR(Cxu%b+CO*3$7d2zZ@+};H4ShZk%rk0Bk^;0H=V)IN!KL zFbreEaJNqJW(mC+9lS8m$`PMuF9oUbKvnPVa6#^Xx-o})zhY9%d;V^>T83i_2@EY*t zin%$-+o%b~juEtBpqmBP*j_La!M+lk3PLu#{W@r?Iv8sO;55`Z1K@2FW3(xSAZV{Z z4-2lZf<7>UsgH8*h2n^ zz2?goV1T_=G!+t%`?xIBtq{}?m1q46&-ZJuTN^N%bgeZQFb4w!QtaEvyhZVb12^wG z=Z{Tegzk4P5d{4P&{E-bQ1*QJ6@qX-6Ye+od0!0j2b{<{k&V%!JRv3E=VjPh5ga$n z$<8&vI?&+nJ6|+qpFl5Phvo|Kh!H+_I9Z(lJ3Ublvgs3ra9tR>4$gr9tOFQsSO+jB zP873f5)<49-C=NYIiYMyClDW-#o%r8L>yelg={?NZ}~kz_}a;hA9hW#-}9)B;NHeb`_w6UEW>mC@FGZWDYtRSs3{R`oqYdMgB~*H}cQKheQ(bVe!YJ zKM>c8kBRf1L*VQ9x@ICU{__l3K#?20*nJD0QaGM9;6Qe zk2oxF>0=I008cq!dIRdnAl>AypCD0v8=HRbFhbv>I79>D0kBv9UJ0bBfDE<{p;?HI z-3Zcep&Zz+m!Jw%iyBZnvLXhZLPO{R8b#O9Z8U+V(HvSuTcT*R%Xrf0G7cDh#-Yz{ zBFcE!SaLL9{{pCdqx@*L0XFN#Y@<})peqluHl`Uf>!yH;GbS2S^ou}I z#%N=_{tluH&kb9~2>k@)A;Y@ih5j<+Z5W;yp6agywQ5*2EbGqzwPctz%a) zbK|qxIysbf7#KsJ9`tMIG*}HT{o#KyD~%-I=|JS$93rt>+>2t!_Zq%RzLoGbu&Wf2 zkGzfS4(I^sF~BbLpl9F$H6=q@!sV#}m4F%m?DX{wfEEDQoZbR(02mH^T-wiJ5O9_Q zrY`_SIGV?04%Yx+8~WRTyMRgV{@s_5bJR+LtFi5+E)G_}z|kQH=O7(` z_#)sOxxzG#hq!?6L(ZoajVln=KGorG>VW*8Aw;cHe+%c{zXM%F5M79gE~1Do;y@P% z(VoadL5(DUMyk-;VlC+9U80vXah4zS$C$(DeCG~Jx`wUKNpPNv0ow}~_lR=1U>S{h&{roKcET8%% z^-JJ%g92X=DUSr(6>G#Av}(>bI&RN?iLI{tkJZ z=nnV-WCq=v!EQcZAfTEO;2P}54EAFNdohE(n89AmU@wheqh_!TGuTXH2@CTBE+3bh z2}0ydN7N^77GUR8QyS#YL7ExL-w93o0J(2aE*}6RZYm&&NqP&}k@=?JtW4VU<-vSqWfN3$c*-tSYrcV25#sc|gAYX4k&p4`^?ZXUXvf4+P zK9kFSmFYM6>|@NJ>7@M@bJjFqA7?H=$pDn^v`>(_0cHf+zYisc><^jCKtF=M&e<2B z%tiZS=9=k}{RwjeNX$6?5shWG)*B~WYH zp@#T{qmtP&BS(!l!Yp>wdv``=5&X{n`X{( zFiZ^_W4RrFWX{GCGfN$PP`<#?&or0|9fJ^?9Fxr5ZL!VqAQ+o)j7R6)XLdVgn7M6n zfW)U9bIdBlizJ@&=9*8FoHLGP=DGPi#1FQ`!;V!FKZDrqcurai#Q_qJI<~y|=3>WL zZ>C94xV`F(@XBG-&_Y+HbKQH-taMy}F;@8nlsaT#60HQ4bmupF*=|m zE|cvT0SU0Q&T$!NHmA;UjbXUh$k8_-Zg$*;HidD!<8D}d-?YroxRZg$o}k593snKuZ%>C`imtkqd4JT6N#)*zlW$0x9T9&fh91LrNKJI+S1 z%;4Pd>amqppJF9oNy2)xq~cLnGMsIAM9xk;BBwPpy4oxl-D7M&775m@C5O;?M9a-Y z{zShPnbXDeTcVvlX3KJz&?SUcW64-5v1ITp^EMKDZUZTuWa=$7&H?XkOFfpVrGeN$ zJF!n<6_yr|)~&;d+iZ*%;S<(l&fW2USIcN zd%%AI`&j=7H=~Kg;?Y4q86EU>H#lnW_WsM9Uls7oc@@^f5Z+)0Vb56?(z`7=)V?hZ zw`t47Z5ofb#NMf{S=WZoWFB?JdGovWxe~q8UAdnnduO}yT`7>0>q_^|a(CsfEU&z) z$d&D#@1k8&?~<|BRlu}#9dQ+USD<7usilOH8drsP&8Wee?W%R@yzAz1SDp7om)>Rc zp{_<(vrpXB=4$uFndV(4X0@x+W%DHhKW;-!m(>+8^mn;jr+g`0KG$hqde=$U8DAFk z)$Gge8gQNW7IB;pxrTkxu5+$YUqRPJ*HvF3)Exug1%Av|Y};pl7`Vu;R$Z4|6Fz0v z71w=VMb~xbyiaG;0JoRAZn_?NuVC6&*LBDBh-rY97og>PuE#!O*OcptubEw8*|n@| z+V#}e&c*qjEN{Lw#gpwbVXgv~Y`Gq3;EFBZQxLdrlY0sSH*H0p;=mmn?NJ8q*^YQB z0#i1PM;Dm3)k6NPP4B4-%(H8>tHJ#{^srd2E4o z+$OdM+@|fE{fT$lcG2SwyZ{>xdQ^68vRxv!#I959icEZz?FzPYD1SL<^8$Y&w0Yb0 zkOvTYX4_5djcs>`Hzr=%b`R5>r!^5znrMfg9Rc8KPB@#o=3Seh*`*%J zXM;EzVr*UcTt11-qdoE7qOO&mB*-W8sB5h!)w|xc-jm^TbMcEFi7#M9JvqKpR&h@r z%mOG+_Eex>Yg~`aciNiRbJ%yrn$lC^Gg)SO)X=6C@6&MXEwZNfRQgh^Sv@rjW6kcV zhk4=ZY1kI)tkRwq-+606Pls=q#G`mG2Ql%eJ9JmPy~ZSJ}3Td=nGT=PAK_=fK>o?pHv zR#VSy-%~EO_1yJsaJ0K;(wD+&4aW5V`c3Sa@oicIJ#&7_da7s9&~H86vuvobp6OWy z`h3qb*gd9W>m_l#fR45f_dGXPAl|~UI|6ILz1yF}?xL-u?gW1-C+Dl~WPgTn$erew zSjXI%{v7E2Fi7&2d!IkAYs#GqG}jJ^$KCmUnRUV~_a6qj$X{Z;@234~>qGYuf2H-2 zTjQ^>F1Ty`_14F3y}!Zw#NFs`u|9RT`8%u|?oPi2uMu7=StG7>m$+dU0qZ8k%yg^m zHvbL0GxrbTvxEOOq3?EA;=NFJ4cVo;?17F8-Sv)m|0LcQ`N{6xKhxa+^c<$WL)|Sv zFGAgT|1z=O)$R^hcb*9?+0x-2U@YAh_YlK$MYzv_RS$D}2ACt=4m?Nj*#!IsoC5q? zTt4Hz$mYYU3i*KuOb2$8lft5KZ_wR`{ZDs4@jtLP0GWeqxR;pA-E;00*s-Vyy@+XCKA^|t zp-c%ruXQiG*WhFX{wmOhEx!Yw86Wv?V>-|&^kZbLzs#=npQpd&Z~9$&zxE&o>cv(O#}p9%vmeE#aFG#7Xf==8Zq4D*Pkw>)tHA9yyrXBfkK z23tgE2a7#q;3S@3fdN7fVY=E#Ea9AOw?1j&92B@-wy-&#hjmZOt>@ zTVT?7CVC5P>z@0)#npwLhyD?6hhOV?)T_jj@2$Z6d}^`1@GSJ|*b^>ywq;MX+fS?| z{3+FrJdd}ZRk;>uo6&y(Iddz|N~cg>#Y+2}R0e${;6vk9jR(vCHep?sV66eha2 znatT`b|&I}d)v9wH0+HbhgdS^q}Rmx+aM>sHlc?kC*?(aM(%a9J`H<}-T-^PX8jVL z%KA0Xb48srNkhbb>rFuou`(y~FI&340-v z3O2?*iy)_ddoh#IJ8D-l66leA=0N1eK2>1%nf7L;r1zHaM9IzKUuHG3T+^QYR4%;DZK{Eq|V*I!8R>o1D@`YR&3IJy=^l3#qKkzag$gZ$zvE7}_E zLLWwZqW=IDkY96sOn%K(8T+kRDbmIMpV(iZdh!c21Npt#=g>zU%0j<~5Gp~Rp;Xj> zyeJ?2J_H>)js6H#ql@U@p-<2y2%n-W=o+d+KSH;V0ZpKvq3@wZ^jGKv`fId`y3q#u zHR=&jqHOf9M5jdk=$hz^=x6A^h<+}5jD8u>7I7T?DqUePzjr^L5Kd&T48AB$?mKN0^#R41Mk|5S8T{AW>OQBzb* z)Z3ze6ZQ3|bkRuEH=;bEOEI39J}NTi_hSaBJu&|_<{b5Q%nxI(Q18b4rI@5cOUcM{c#KS`ndvGK8Ap#rgqv2Rm-u?w+(P4&n9Anu3MnYi^mBI-}~ zr0z+jzSxttCzG1l^Q}GKqW*kO&Ym1<9*ICMZRAO5I{wW}c_W85gcJiPwOn7`Sl(9N zS#B+NmHWz1mJgHM~2IaCfpl#G%g5hbVOh@!qjeFyELim8uL1o_U8m@22rQ5028RikL? z6RHlyPzK6?_D~Jf=O~_hTPT4#P8~;IrMjptXtSGgps$hd480BV&O#~TpNfBq-hnYa zLJMSMa1tLWNXfRh%kOm7+>lWvQ}NQdNPfP*to_LT-ghr>avKRn4k)l}Tk& zxm5wxDdm*vwCarNymDGKtQu8aRnDr$RJT;)stMJ7<-F>l>XB+e^;q>pxuklk+E8sO zSJaepN)V>GFw2GcU|3>NztcK1yKd4E=nFHM@ORyqY6=dlp;!r zK8rdURgVl&`Y1iZ|JiaLW)hZiCW=Iejt3-hNCjk|LOOv?rqk$5dLNxj=hJe!h^FZy zw1%#w^^o64x6z%n74EudAAJ(a4FEkvpQA6*m*^|>b^0cKhrUNo(bM!SJx?#uEA$$@ zPQOqfg;)`%NK~XK(iK^XY=u%$40+k~IfYbFpeV$@2a7%t-9>)&w|kqk>=5$N|AO!l z`b!7}Fzf#c9Y8A(WKoq-mFQqpbyPKyM>R$@qC-dovxxko3Cc!M2vw>9l}MzOKw1N+ zN1`GVpnX?fWr;SvQmsuQz;vZHwX#N=L1>J6t)#L+n-jd(qRk85X^4A#n{+oj5 zN66Qkf|n8IfzK22!Qbck$9aPsuQJTOF#cEZB)sP57oQJxG}&xkc)G3bvbMh}UprSN*Dh|;>uXYt^v&*X zD;F;BH%Li+{yJRF;j;L$bSCT?#=T=&B1i@8XbM<4y)OMyzJ%j=mA&zEZB;v1`AmD3 z(0t1KWquAm*Io$T+tQ9;Td9iBUKaZ6s@>XaRSDV~L}ol+(05g`_I6d8_O8(Wsxq~c zRr|CLs&ch6LI1${gQ_C!GMT?Z|APCYwX3A=5$&^}odbVW8trooBDV_NbXBc(i_kjV ztfo#kkL^`s)GcY6bt{^7-I~UvTgTVL&qIApG5AD&4SJO>!*yeWzBoUvafkW{-Vf+r zXiin5mvpg{ZJrIA+pqIi;rBTiX--#*HD{{hc)qc0HRr1ng|Z6rP`QI2!t&JXA~1sM z8gD23{YKsHsy1B$L8mUc%Bo8fuBTNlUFNp+Rij*SD&Zx?G|Q9(+3kx_puj z>Eu=CbVXGcbu{T`2UK0s9l;>JjL*BG(*)-*x0Y62*VR_t)aivjt?G`hk&Nx0u5HJ4 z8Qb2Jt`m+`T?VIw;-4Cvn;p^&7`;Tyaa&s%#ANFY=?;qUz!PHB8TioApb&4ikcTbb0o6?L{ zr)#cOXKmXv;&w6cm~mTU)!D&0jO8WVAM^8%--mGgXl_+Y@j9UyuPzAAdz?Q}U5MwO zu)gMgb#ait@V22{&BJOXsryJUzXbk?_eH_IGv;}rx*{lx$JILCziXaU*9GOq@vM1T zZQQmW;^e5Ms!iK;jO~M86LGzb>SoPmbvr)ANB?2;zeXr_Klult)!0>p|5a1+yM4YA zxeNW8JV!B*=P2J3kBfgI8X`|n&XOl6!{iCdL-GXWFUS*=zl`zhPNIs*bCE~nxyb(} z&qe;6JQw*3@?7K>__@fgRQz0I*FOAQWY@RwbCF$A{9I($emK#Npv$4B2l7Isl~lAo5Jk)M|r%7+1?@~iSOxl(>hJ}z5^5)<TkM?(I=cOT?sL)e9KAVi>C^dX8w`%xa8uRlUE6aze!pgo9&5Ra4) zzJk;c63`I{Uquz@yTEA`(x4=;xmuJ={^>9kSs}cO+z`?b1L5oFK7@1_`xodvQM@P~ zeS`elmOC`o{mHxXO7E6VmOdz*DV>wbN*7C)rGwJJ($&&urO)BcmQ+SZ(7X2+(Fvtn z_*q8j-O$sF{YCrb`)lc<(#eA(G+jE0pKO#)?$?v28|<@64{% zxK(H?Hxxb`hjvIfIC5}ge?C2gTj2xr%7+1{cW%F4k%ilWR-V&Wpyf=U=LqI7?}Y!Y zP&hbJ`fPtbjGztp_La`i7hwc07}urJMY>2jh@Y~QKA`0o`-_0bT>Q+XbOz`d{N$x{ zZoj zMlr5FuO3#9s;{cY)VI{*>IwCI^+WX|^@92_uSwj4B1QcKL;X~}LDOsvd{4buMzQw8 zNtBZut8uWcpiWu43fdCbR#|jeJhqOqq_R}{qV#!L25v!dUs*|NVEH7J&Z*>dzN$z? ztB&k1QfX+ps#c|k(5T2#wL$1qRH*V**3wCp3wmq-`#N%PMCDVRR1K(xROcZ7qUzFq zz3PhUy6UFt4upHEDb+OHsG3#HtCmzNiY#bpO|^dThUx{K3~ouRj#DS95gUAm<8jGAbSN2RpR%7|PaEAL|4QBEo!;FPDaFHp`X=ah@eW#y{!8RlR4T)9QY!RrQ-y#2Lh^&r(+;Fa~pKDwx^p{%8>16t^$Ys)NZROTpS%K9LmDeEsA zEISLi7s^J;E|*;^y8-r{Qg*xSZrNnngR+_Z^0K+I#j@qH)emo#J;VMF`&?|hz|Hfr zEg}=(`$z)oEkRDZ!IyR(i8!*Gtc6YgjCN2hsFOT1$NvkC^7@bnkd)_xa1z1*gdqs$ zAY6oS3BnZ!*CE`5a0kM@ycc;>5T+r_LYRlJ1Yrfj8ie({b^I@b(S~Rv`8UN1!YBXV--MHe_LC5T=_gs2T37$3;Q5^ zM2B6+hw2bsC80D}P7;-M5 zd@Qfx^%e5jDJA^neM!pMY%*p9>>6i8^c@6*ETq|$@7>;H_wh^>tT((b8rk|73 zplrLpJ`1=Y3;K+pZHxdehxL68a075#7V;0g9X^ne`Mb@(;B>zNwFk zeziUQrfbrd@)16Vg=s3M@38bAdu65>Ht5V|ib4Ec9iu|RGd&oX70op5rL zwTJ0AIy4tay$XO%){MXRME>m_{qs3%icaHyLq~C3t3lxqK*>emjJBd~7*V_7Pha=SvmgeYfMCeedj(T!r@PB+7R!k}(LkB;$f` z6@S~HT$_Bty%?Eb*(+u-m))^gTrSa|kMTabP(%+K25X+eos2K+`i@=b0;-r&K$ zyCaf(lY2M$Cifol?v51lzK%5VrjDY56w{3ijyk{f(|698v zbQO(-J_CAh2$g5%zqQ4NObtLDyei71If|5E?_?g~@AEYvuFb3s=H%nB{XX9w-xh9( zZ-;9Ea+2kIJ-%oB;%;#_`WSmpR1*86*l|=! z-W-wwNaWth@r_{p2&fN!kh(XbeeXNLJLOh!&|-ldMpy zVQongiX{J5CAG3D6%rCwR#v6Kn1og7pCs9mgd~-JNs?8eR+{-e&--3u?B8~Ozt_)w z-Oqi#pYxpOJm)!o?z!iFeP>h7Cpn)~^{e_h>vDGH?8(`mbBN;zHuM)Y(*39Xr={%q z{(NB;_zR5hFZ350>o4{fi)Sy2H%{ub$|R{xx_I`I$;fy`{HrV@ZnU?Gy}OR)1S!4H znA&yaJpEssXaCbQFQ=txUo|&6a=U>R~^mg%2g}pHa8ZNIi((Z|}!+R3AGerE4M{?Tcw5>W)G}@|ObmUwh+|a5+<$3|_sDF3K@YjpH zw5!vuHGbN4Y28hj)-$cANv8EqyV0bj^-1evGSY5MyVa!92Bi%)nQ24QZZnmBav%1* zdEWQ5_fT24nCzZE{mheDHBV;My!!v(91xvV`pLC#d>vrCJpJ2LT}=Dz?p2a{oN&12 zzAF7AIWIdeyXN+q2eOZ3x6H0C%#bQWvNu&pW*25}lC!YpmYQ2MUv?;3`{a<%k&P&S zcHQ{eT`ctDnpdU2*y?`l)DrUYq^vyb$`R=ue^yDVWy+HDytjX#>*+nkxMDsho^& zGrlz^W*p2oXsYw~rB3>f=D03$UMXjPX1O~2ACs&3E3w=>v=L8{a$*sFY^)QQ(7LS>EA?6($ft+J)ozD^z;NhJ&m58PEXH}o<7uMVoB>@ zsDq;pKcj5@dqe7ZRQ9R(cspKuWOLtU8$`S-Fy0BG)>q zBU<&rhFJ}j)g!e@kK-*KwHK#|rQ_`6WaVb&sJ50SB~h|k(z>KwpLV^}c|e-<$h6<2 z>2!SsbR0XgX5tuPrkI&2X686%j+vR6neCYEF*C)?%*@OM%mhIS-p$-5rGyAb(u3E& zkQncd+u^n^8uhfr@ZH+Deou91FbneX&kSO7{m41D=HI>^G(AM?Hmi)r3<&hb~2=?eLoH6AtGeO>|XH@ zwQzc}{te!tad7pF*+nCz^<`M%Pv_WXXs1d=vT$Fmq;6ui{ z&VM2o?V3-$dp{R#By2Y=>g01w*E zkK6z$cG~?GIA?(`gdWiLH?EcNIqn3Kc=M88%#g5NXu5FEw?Ii!BP`J5)p)3yl#jem zR5)DpOd3gpL|-zs1sqHu3fQx33DMSrS!K8??w~DKt;?z!mxu`YLR|G_A zsAu{$>qGGUg_Q`{&0%$;6xeS<=LH$aJWtGn;BEN)J!M!cGOMl@H7NneCv*az2i;Na(w4h zfn`HEAQAsef1K`p^oo&|&zO1ueK534eYOu2d?tI<00VM-_n8Tu#j040{-x9kf7LwZ z___3>(_nH#g;!ILHQVF&@XY7@;u%;D&i4TBaK1^mx`K(}(vj4J$!YRrI;-|NDLc@6 zK!x@z>a^Z$9tyWnEr9+QdjOUE_xbtBiV!NTO1CxiZl2TKB!pjS`Sp4~$6*~lvE);Y z;{bqd-D^WoLe`SzjSP}ry&ZPXDz{P`VrQmQA|K)(a}=6XE55u5RP!b)!+9bWNXnQq zQD}n!)9z&Iyi#9)-6{gcXq$LH0Lpl+y6cc?$nF~5T$}Q?4LKVSQvM`Al+(NgEVIej zPId&nJV$#=pX=(cd#Pg3f;ttZ3!+bm8s*@MZ0bs4mQ!;}u|iXiZy}#FCf2<+MQo9r zjic3ZxX+?h0$QhuuQfbwds_AHGKDUZGk1UjCg{^ylb$T^ZM=KP|k z=z!rB%16&@<@1jVDvFm4^^a0C>0Mp_)>}5(tbB$5kT-+V5J& zcu&D)O+#Zgk9`_dVhhiscYTjE(t*8^T7oO5zfuFYrkZyF5AV{#W(?JawpYQki&))@ zc-xDC+n`NVN+u{tn$Z8oOi}dRjb7K=6f(EDf!IcPLNqH8CBkriGAfrhQbw2*Z) z9gthL31#KAU-Uhrb?l_uxjW$UC1tz>JUGOc35qpI4I{JQ&@sz0ZFY&B{xE+hW@rw| z;RkB=fW)r0u2^S@3_&aIKGd#gG?1{6`B)aBQlauTrOvWdAj?Hl1dE$+tnfp&P&%d_ z;_OqTcum6q5pLz7`bitMl!|nkJY1^TMpbc9u*GN#@Obgo`Rhaih2o?R&BOQV2p%L$1Ud!nOm5+OYp}-WaHoa(utq9_!R+Q< zA7uwB`i1wh#F#XTqlVN@ArrW9i>RUWgQpFTI42(W8I4`LQ_dI__bj51KQ%sBWac)U zn;Ru^@G`)ZrCDd2y*Cjons<-p_cVQG;EQh?vWT;>FSnwCn@#$HR_51-9-En`)yV~Q zkA7;8Qm4dA3o|?=bm{T=VW8a2pY?z|ZGxBwtZKK|PWc1MlxE(QKJzRB!#xC};9^UU z6)LVTD^TDj#RVBq3ZuhboS6M9SE1)W&FX2u7%}Ty&cJ2C_kkjo1UVY$UlI;D(H z?QhMSZ^}D9HFy-S`lW9-STDa5jR-Ja^Ak)KbQ|~W*^%0D&cL=#meas1>*=8s+sRy&GFRJlRjPhJ4k_6G+Rzeg)szg^%&m7|dTIWlVARnb zgnlF$K7`uf)vtv9`uThJGKzem*$IWWI6?By^~p0YA=MXgJnmmr855QZOCI1hb{Nwz z1__P&gE&SmFfuh7TRICZtr-2+zqm0oy6bwDmH~De5qY$RJnmZllV;&6bEq0WHHI8o z-=_E~cN#4t0c!2sk6)TU&NpSIq21_;$Mst5bhJYYw&=RfeQl-~N7C94BLqK0cJ+7B z%h)RnS)2%gwi!fccrE_dIC?i$8E>bkhwRjG^SNFyPf=mk9XVdumL)eOUL}gp4eU(U z!8Pwi7LeT7X-A+P4~xo7OGWMz=-1AahhJZve&yW3ccQLFo95LcIDP2SWJdGHxn9`a8n3|TU8gPf^jSR?lrRr1c1!j^apy zE^3!~ygaHm-E(WkZOY7k*vxZw4uGRM3K$skG^H3Om%{q&Vo6$`U4c%lb~k!2QVMp) zpA(9k|13mb^jQb1nfuXSM1(|hnTLp3^$3+ZNh`4lHLVP3l~jKn+Krk6=Jl&5{_CfV z@R$d}PQ*-@dp+KCk>hX4j6*ycfs4>K!AoG*Y|4ZFn+TUij$l=(SAa_?#e2>x9_X^Z z)K$!8)C4@@I}7)n?Bq#5b&4RiF3m^ee zXFsJuKUy*5UKO%0M6YpPN)MyW8zH>1Ut;uVh6bJwnZ$rraR#dWensMlLy-;m_%fz< zJKGKRsIkcpb>V*$+J^gz{fa=^BY?B}`B9MNCrj^xc%->j#GAx(d&ITe%hn->!kh@l&Om_0L&14;(?nP|f^Aif zPM)a+H90XZ>=#JLjQuboO0QOe_7;M-W`e&!i!rOMeCUq)dVDuEoOM@M&=BiwaGLY0 z1AhK4p{zhh(j2?4XELO!OqWdnR^((m6~t1;myLK$Ij@5*pD#W{V+pE<08jMd&r&MM z!l1xX%v4t_kNjO#z}=bu$0d1a{%k{EE`yVQn+9FPVb8Z=W^ll&`d@-YXA+pDM zRGM?fR)QTFIvezyiCQWkV2;|xoR=y*n}Jc1nHdSyJOw!kOIX}#=7=b?n8C&W;TM+` zav235;-<;2mEfb~7DaD5*ersk_`3GcMuFF#cDx|Xb39u}xKsgB7k!@#n2g}HGR*o)Lz^&%)8QV+SWl%6t1POTl!o8!+{O>UMUM8_4N>)az1*o@j1+}6jYD(gk?XSL`y=rXBCHi#3V z0Iw;wt-VW*@cAEOxj@GLT%UN?6TL)LKH7|SxHd3o}EMtXO<6-=8%%Wo0DLzN!RCriAJ zUlus@P$k(l zQ*Cd{+Sk^5S z5MlP>5dveUcj@$W9I|!G4OO`F%k|NwdFEV)==soyEkYCGDAgkw&+MJw#ve+T!(kpj zgdaYi@JrsCX6AR5qoTIE%NwN%y*Seor>03_)f=NLqEn5 z+Nhk?1zx~-BO*X#6%1PE2%q~Mec^+9$MS@qq?pmJpIU{iWdmgY*(nb`>2aOR23UyY z3%&W^`?Kptx(#@Iv1l&>HebC7@6m7hgzkTd$yzj%LNx5S%ktZjj`YEKZqu-fq}+3p zPa8BscG%_avgk4yW~Fwo5IRu$eu+QGI~c-;lc6$IDTs$-kkYgyOGOj)T+vfHI-QOc z^(<<1zPBb_^E;-7!1L=1PL-gn*d-)I9y?_4)h;#W`umW&f)$;iP+^RF1)%=2#kC+- z{x$fJIcw&5Ev3~}bjM`-U_1|y&%YX^S=37T`J!Q01}LI|<#VX@Zsa=D%FLgngy zf=ZM22}|@|>GovW+$IM#vb&#wS-hR!T8H*cUj8844gPKod>vjp!kCduI$FiQFIox@3(#`cn;&qHK*5p3rS<|d@i_?os_B_t5rUGs@g5unmr?%FkGWB{4 zf0*av7$(ccWax&wIN`?*MNHJ6SsBqdKD-yfZm&(IOMxmVo1YJamEaiE%j7zp@^O%?LUtAD{EK&>3((4CMZ<;;S) z(Of?~H;no)Oe-Gz*!2o)z~(^M=%8>iDoZg8E~LUdVi(p)iEQ&(I;>Ebj6oz+ae?j1 zboIcirvy`C)6?p1jBhfx-caCFQUCpN^nYo?42U#d$ zmS?@EhSr5>Jn}ZPiXMEdgQoHHtZsoaPB=Le^`sqWfavs7ZedYRNXGbFX5|Dxl3QBDudfl#>jd;b2X2s z?hG7hN*_n{JHMgx*aStTQl6f)=~aY5L-aHA!XnBwlqRH&&>t z|31RV2#~{Lyl&D}G68zs-hRU+JI4y?wdlcUZLhXg^QZhvlM`{4fH|Hpf4JB=nSN*f zYJZ=nDvS5g!O0P{_jihzdWm7D^Z``zC zrd{YmodM@HaVE{YGVv;>8GXj1^yEc?8`)=hQ`Y8HoJd8%f{8jVLdO`6=LjQ`+qp0} zz{-v5J-$t0ihkZjNq#{qLV7^PHEVqbQ;lCYf)`_&o2&b58%d4qLngmIQI)qQZKB@;Vh^!q7C1TyV#&BCM*|f(l^p<1dSvf*)<@8F+nFX!Wg-8Q@$i#lXgh@9QBDCe7n5Btm5axem?VEI znNB<_;$EnTO8BLiniZ7wO+vQe?kDUjBFd(qJ?&DSv3eGJH}&iHXU+~{pH;S%MR!PI zrXMv$*NIPY!NXlg`PbfmUfxhDz1+cM|pP`RiTNNW;liDLYec@Y}Ou8_31`PBEJ?QX_sw}O^V)K|O2+57aidR!IvyUJ zOsm1_gyXHn=}mMkv&YYb$Gq?~1OB*S?L0`FTO{cp)KuZL|5Q=KI2w{LDUhItbuN6fAK?4`>-_T~9pV+61FaLQ>e zEzFtPB`%@G+zB-~n1K8mb?qc#7C1Z~{iL%8QT7~`+)WOpp2S`!y;fwZtYYCOnsp>z zi76DdEFgj_Q1rsG06XAgb#TC z(;Mj&`Noq3442?+*$;M!-~|3T#<-Zr?3s2BAl+RVeDQNVa>T=$OC;pj67_mFZuCegqhfY43(``V-YPEZzC_&lDVu{U9zghBSs+uirNHUQ^(` zaq5{;6S^VfsCJhj>4HD}Y%I!z0M4;D(`Ax2OK_d>?c0ryBGN-L7aFOfY(IR6`F1p> zpq}7fD+SHxv^`>cB&E;;Zk9q*A#K2fDlGUdL@;6o^RS7?#V~+*g)l#|ho`5$6LHPe^aCia}|8wV2km(1F}Oh^j7KvrVNdW z{(T;!z@thbMw^}Gknj=PhFQnJ=8|=NCrb}*;|C-8+Sp}SM637I9k0|G&N=4X zBH(zzigdd>9Fy0J7Jpu6v(^W@dLaO!{tidb$mp57N;yXNWdr)z~Dcg9qY_F3;3`}Eg!|l|eTyPzvuHiQNVh?e9Z()+ld{fY(+jkaaL?ER4UHywK zuBB0DXF#*+f+jKDYxQ26@VnaRc<7#jr68@_pOs;fPMqREG0gq^Vjq#R>Ks zAR(!N>p9)KVaumIZ?aE^{w?sag}OyqMi@xVEUZ&Ou`dEV#t?lfm5rj&=`i1aF16Rw9(gq(vqq$)1zavk``6Vzh&?mCuAOr zh#!h%R~VCG9*j>W+c&D6DPzPLr!X#DvOq{Cso{_yOTIacnL8L5U4}oo~Cq?4r3)_q=)!urJD>@)VXuYN+%0;O2@P?3( z&(W(h^EQRBAs%a1k}E%8?3sfJXM4ypg5<_8o|(Ry3NRULr^z;G_e2R8P2?aZ7({*| z1q>D12{jBLFNp{>3?eTfiyE5X#!PO9oQ9EHb0RO{iSCAT5PNKgcw&hf+Tg}izDo;{ zr(x|=DZI*()X)QlbU>_8B-c*3F*YD3Ng;$jWKPV7WI;Q_j&PD2FWi*Q83TmDt0yAB zWDEx#|9~A;B#At_un;*maqMkQ2)l6S@B3}abyhDc=>@Z-iJx8usN1}W$PvgIJXW>d*62JJY>0FoIT zbcF+U#W?+Y{D7hL>yWu{5_@&rm}fg7Y>;WZfFUd)QV=BtR31R)qyY>qfe>=cfSu4p zD9H>dKx~$S_+S9}i4)ljT{O=PHwGO<3HOj1>P$#}8h^~zCF3X)yPuNHC(L9){G>c{> zdDOM8=F*SwE~}hR>wq$y^J(B7{_x@hwmZDhXN6uMudl+JLNmtb2<;87@@K)kd6DF} z_jMCy=>?2_<6MygR%T z$DPq%=^(u%&YJ?JSv6@E)Dw1eggt+v>_0p7?-NfqzDvGK*6_tG+*4ff*WIyS)SVd> zn9!zGbPnc!K&{T*7QW0%XD+(-&u#l?>I{7}DZjksD^UXsuU53l**XQy73kh_G|e^W zv;e!0?fu8sxN=G98__2k_P9S@2vdU{$*($NaD#NlYq#FEygK->R3+=JTBLyo6lpp5 zIeML6E!5BUv{h+%gm2um#+aR>%B@aTJXfaJ8V;6Yoa5Uk0S$=DcFt`Xh7>Di&OsTV z|LqDpXVNy1IcIC>>r~ON>^bLaSpgTFoO9PK`KwpX=&I|1=d~|q>=hlOE(fi!Yr^L! zF2${5Z#`P)6}BqPI?WcVPUny=xvfiU$B?Zns~P8w=lBoYE|sktyqoy;25Y_N$n4X+ z$M_BkYZq%f=ZNRf4|yH~<1Uje{pYgh5RGH)$I4Ag=T?mi>PduO{6q>``>5rb);sNi2yOk(?KwmzG+AWMgP*7~k> z-xkx&8<(tRnE7k7QnHrlPcaHI-)6kcWNLMmDy6($FkUcbyS%MB*$O2Qi)<#MwWDpW zwIqQv=|^<77|B5u2^K~Z_86_<<4YA?XvrcK^%hpxt!x#MoP+gFR??`zZYKt5Em7cf z`UzL-#Qwp#xl6s-eoM1;LG#I$dop@Ob;o!J?_BVy|4ZIZMU4*NtTbEoaj zn(OR>v@Pn`o^@=R;d1k^b&XkNr>Qlej!v2=CTZ8G@@^U2*>T+I0Al@=~#1!hbUWCulLp=S=c**Jsudl~{3T0=Dgy8S` z2<;69eTnl5iDCyg_ydLRH>{swdML9144t2(uc9VQ5?HM*`UIG!CVCP??N#-oYIG3I zb{HX^O7Hv+$O=CTU(P1<3J4}UJWVLWE%zq;?~HXcQ;Wlp?!l_ww!et&waUl$y^!m;S#r*uTlsxqWVa>nbN}@y6ufw zYq8687Z@zMB=(W_k*mV~SZC|9eun;f{T2Bqco|XOSH`NuXyUvsuAiyVke$c|q1C#) z*4LAZ7Ei}WqQ&sAw7GdF24v15h8yL3q9&{{PpuUO13TrvVf4UJaJIS z=hjdTVuVv7ln`+04^+?aSxYIj+5QMd)G`8%z_%bY-Ib~gRpRsOj^_eJW%&t8A{;rzR8$s>MOGawiAup~nt^y)X^oCiQ{ z3Q*@9|H0?^EZZxx2wth*SOi?TbXkPt-b8)Gz3*wX{e;j>&jBCY^p!5iNf1#JTcLmN z3Vap!Ss@?Gl>;B1J2|)r=QmO}Dd|^qBFQ1tk>6Z;VpY)0Jz-Tur_d()C|lxEAYCUgTqk_JPN2L-Lv;)Np^YM_ zjUuWY`$IccNIUkYHg;fJALty}MhZFt+DOCOSRmcZzF)`UUdQq<#ey-#5;Mi3FvT*} zM8ecWQrARc*F__L?YBg($z%b*F^HwM1HP`B)axRzV>Cj{uIj7 zC4#?6h?opIh!K;C5LF2gRf!Q*L4X7?LJ%J_ibpqqhvBnZ7rI*)f?F59TNel;yLCak zbz!-6LAZ6Hx#<#LcaiRXX5annviliv_p|KoXZqdGHoKn*%zyuZBPYr6LLT)FG4koV z_||9hX`3DC3g>rnMp$x2P;v$!8D3;8h|t)C&{z<;mKnKLFJ#HK&kTH<1;q|KkRwtg zeSlEL0QA@`WY)FM3~ZYP*)H`rhqOp~0ilcna$zk}nkKb&mcODD{A{n-*f)>h@__|| zwCXcVf|bAoy?RwVXI$>Uj9xl@m8ug}SZ53mU*4XUDw8?WeX{<2?l5VuFlkv1EEzuq zy{~WqatsLM-D(VY#@!HA;OBlXdSqpOqS<^r(34#^mndyP^}i}zHhCYBoO=o{Av_^o zHa#AZz590Od(7(TI{cJ+k{!NekLyE*0X-kMDM#^g>{-f}kzd*h#7kYd8+m$K6weAOxIx&7Z zQq)4opk2t|Rfs4~-wt?RF75U-!j);1tK$zIE@J!)q^OAyQH;J^nr%DcZ9A0hY51!{ zfa~oK9(Q8=cBH8F5K)4@9YdiUdg5us7*O!pbbm~^A8?SwkO4>m3djMoNCC6R0o@_p zNPU}deY%wTw&eN@aEzD$%!nUwBE*onNCDF!-I#s4-}M;~7%`(TrGCJX6GO%!1q_FD zf1|b;nBLG!hYl0qJ>dV^>#reE^S?XNxIl&J_!H7k{QANR%MZsuA!Qbb4dFFb-=0J}j zw_qVO{>Ze_}C zXNfG#U4Q;Ua}Tx`;ExOT$I@5iY>95@)ATHqUc8En!jfULu5-Y|M<#{;iWGFg;|6aW z5^mgPaU3?opNYz~D6EiCN`nq2p13KpM{7YvcP35u=i1+s$d+%i%$FCFtEPu$IDVNl zaunh3kZ~q`4Ek7h{Fx)u9X1fYs}P^2E)EnvcCp1WHF@cBlDHXNenpTA9o+1W6c;dY zMGhFp5_8O93?AAeMe8*c@yQrWxuQE_2V98Cki(1AQGTN_qVc^t9K`t@u%!4%?oSyl z@|H#TNTej{IDi>h3h+AhRuyM;)>>-8!QfR{&XhnrxXE)Pjj~JJ)q8ou%n&K8l`0Zs znb%!my^=NA%l^Vf)*lq5e3_=ci|d%Y_ziL*NA}8~R*XtOIGGF^lZ~5=j+300EQMA) z3>G_3^=F4%j5yVBj3t@8z!dRF?0rP|X2F5wD`SQMY>p>weVT zyPddPkhhthcri5};65+540Gi-%a*FG*i5VeTVzRU?0&BjQ{jH6y`es-LRIFlzN`Do zV@1J#28yDDuxm&T?E)B41>8e^U#wW7XlZMYdU%%($c@_h~qZ?fThB9#2f@ z2AumnYJCZgEOD?eoY9t%m@}e;SFM1-Wws3?S+Hn12d$i^xT6tfeQ2jkZ9F|+nZs-> zy+X`X?%A+(*E5gux_LJrKYV`c7af2zs$rU~tYCuHp2Bgcz<9|~z-PI+Z9`phBY)D{ z>Y2Bohze7;=)7FD8b1h{zHh{p=11T4d~7Q#0*^$Rg<>Ld|3_)SpDyky`>SF{nNZ;_l~<1U3vN6X`nb0^c68Zqr3-zz0i*3B{(f zwDfy?z)(<8Be$B!p#Q4n_r)kp7YCnEWHfGtz+>xsTSCyn^S zmg<9dMS1Y%n^^(d^W?6NN+%~(Yo3B;Y z=p(ULBP9aI?4Q-B>CM-!VR0Jh5mXh4tZ>V?!<&f)u9=sR=6QARE(6ssYUW=M0o+2| z3Rj0W*wSV{&vs>URAOcpB_#}KNm!K0l&D&cpPMqQ#Cnx{7E~8}gwc=lj$ID-L@J^p zlg zJv_M7on~8ilgw>SK6F)0Z7L?~UL5ULt8=@Lo|rn$lcca|OP)Q@6X6#np{f1uqK}-?B<)|g2Png7@c0yplQ?}xeJ$<&#d`8xYp6Oy}4PLd(ZLYi{%Q&7lA$D2$ zqhDmv{J3mwR*L7s3Vr0gLFj0=hKOzu^sN57DsBHC&+5@Y$LE{7Y+|8bf!}#i8&VQd zI?NnZS+K0T+2F!isu@_|VVN1>m3!m6nLAHWEsD3Y9%w2ybU>Tbkm=L8tuC#w%}Dd*00LY7T|F;(ksXMUJQY`Qh!o() z{p~@*Td_#ufpTI;eA(R94PnO(YZGTN9Udgr*%gp?4hU@3`ER%@V9 za5AQQ>Ll*Y#lSv#{`-2~WTFw#F-Qtitn-qEOMgFMMI-6^=qw?WPMUVquQKNlJ5(2& zDs&$&*W5e&QM&QFp4KE$g+8*JgAO4ya?xsP**NdC6XwAi1+el5T3rtOgR%;c!=kIbs6R-5X+lQNrs zGVa;8T~sE=l`u{xPy+mUR&l@A!8#>$F~3x0su8d|kwQZYrp59OMcuu~(`iNc z+}$%8G+C|YQa^;EgMEtDH9H-UPI6ujiYd$v-@C!J;+O;*@IWUV$X-ynaP7h7lBJO) zS=;YA+Oy2ronI5^mXyB$8NshbhZ45-Y*vLehm|5C@pY^#XS#!tFjS77Rz14 z0_Lw|a+^>y#f}5Wiyx7reWPy7XJB=(nWi;-Cr%;HR_V+2;kQrcHR5?RM`JF#D+kN( zFLXHCoJag7!p!^8o2VP^tqttf|sgKtr8o}uc7F#NOhp> z5MAYHww%$GHFd8Xmx)Z+rfI-(42+sc?H(B{(w)9HP!Dmzx_axTDqOPvD^Vdz%GGX(>g8hfQ_&aQJiV zwwy)7Dgos?hlC{Qh<)!$^N95wI~Q1{*5oP+dDE~Ic^$2e-3)eb99n@4OeJal-Vd>~ zCC7P-H2RP>b?S~~Zt?UzBW4|!ZRhjI_ddx&oq|O03PjB+q9}TPI8GFflw*^j-vvOI;vk@BDQDOe- zx-;sQAg+5l`(ljLBW%{$iPDj+d=(pMkp(R|g&5L6%Lehx0 z6q*&+lYqfmOZDy^TObZFk$pb$iE?6`TT5R-yfOR(z0pdc&@jcYJTU4qqn3>n5hLgI z?YXeiNMAap6YU+wCk{Q2N*rrt?Dsb~5l&0Re0i&qXJG!z$H+Q&I7;ctg{)>JJAb#S z5HPK1mM6RaJ z`(BfkGoa|am70NBhfSDfNeAw-S7a>=0kT&o3o*l^&xNtvd~|IJziy=Jb+>}k%DlHo zyu~}}Cr+GYz^yB$<(FHgjUcodFL4{Uv&lU2G)2QNo#~D;VxJNkl%_>psiH}>+@p9D zU5fcZTgTPPQ_W`b9*i{H+lAkR_Z$X)>o4I)wB{CTE!aQ*u=<+Go7?khcJVfcwRAIi z`Zg-`Xmd)-IkT<^OX$GnlVmf&#YAxde5MUsM7!5Pl+83$4wQ<)>8$H9aGv5ON|c-X zz&iQRDCTymAcIxTgda#BTge0}k2U+yTGUXKFH>4A+>-j&e=HBXS)4?ui=b74zNfHx zI`{H=PnKqB7CH&3Sd}IxEm_>#-n(n+l9`?d=<~K*xfLFz(n66R{zwX7(eeV!eTj|w!pQ7U#S$1J$`Ev&vJ{a)8&{9 z+#Xc&64ox6jDX3Mi9^Gq^}bm@9RIQtB?2{%iS2?&JKoO3xw!;BWRRJ}huH3|`oe?cwDTzX@kp3f&i6TrFda#vA&MCSLXs#Yz(sE0(w*E?u@ZM)I4_fX2$vS@mn7qpZcBZ-Z|JkFXSP_)8$q_lM z!}wh3!oOOx6YDe*ihIVQd8`y<-pjUbX7$lKf5k=<#?)gT7p~fhbKl&7m2hoDMsc+X zydTC;DP;R3u#+sIos^ZlRl}2ri)$o-=;#MfV`dx`tQEPkFI;Oq<#B*6EB$ zs4yO*LY3K<)hS=<@@e0VJ6V5NwrE9`;xiY&B=LH3MXxZq)DTLa% zi>GgSnQod|Fb$LXiCVe~n>P3d$@nyT)|51GMTcGc{jP49Aa3Y2-NAorIqDIud$Df_ z%l!D$dlBQ(_U=&qjDPp$Bp#NfgoJZ0?}M#9#`lxr1boH26fF&-1UX?5z+#{-RP?)N zyCvQx^!5+%P5*B!!+7vBzA%?iYJ>?T{lCui6sgb+(ael2UIkTWYvdL5oAipS)dqZ8 ziWyv4HfwXOVMX|RWnK%2X-^tWX>_X>EP z&C{YvMyS{STX7M6Iw5*eSrG!Qjf$WzgDra{^i*!wy(*kq{!&Nl9zlW-fO@PDY2yBj ziPX@LJt!&9!o3jEsgvT(mFwgbKa2S=HY2sw=GnNpL4JaX8=Y@w!M1qP&g&Cd&U)_o zbTpq4@cwjm%|%1f-s)U<4R+Ol=HYs((RzlHz}5mV%Ls%&oxgO38Q#={G|NALDd9r# z-*{lh$H}NJ4iN~9L2pLAQ9~+7`e7`ab6ls6D z#2!j~zr12AXx2Z&WY?wr(0ax3&dD0I3+cVGaH!eZ4)y|oL_rXZZv*<3@VVtyY;=1s zr?M$D!TUKJ|G{@pJCh&~tI(!}#|8zf=qUVS8UMa$WjN63!XMct#w|A%n)k=mSdU7I z7kh{xJ^r^-aUCBcK$tK*n`{Y5ZS;rk#8uv+f-ti4S>fXy$Jcl%dEXP+PRlv^bME~y z*Esh}bPxVc@eiZDq(iE^e5(rD>l$po9PSEJJZ&D;U!@M)ZxDy8kB3Smz1n2b?-f0e zZqNs?sSo54{7OykBic8I`!yTh59s$crfdg%UpWdbJv{Z%+JVfA;#;qoY4Z;wT_2y$ z;wuT^VT`N|9USeA^sN4YHu~o9Ff2?QgbalLKn+3$4MKKy4lP1LW(`6nRt6AYWYQpH zW@aX2W%#GW`cM5oHUFV=YW$`BcL~&*iR~ZiU&Qe*AJf0$K~h=SSpIed;$UZDB4lG@ z|0n%}85uzo7LX30(q9DXm6?O{FJjjqWMgC`R#r9;g%!m8SH^!z|B?D{ zdp5>@TY>BVak8=eW6@s((usxTuNLee!$IgDEB;dh;`-NSc95)pwPyb>8~(cKf43PV zgX6E3AWwlb{mcKqsQ>D~`PbrqeaH@S+279o=}7C}QTfkMaQ@d&fZPiz{GXry3vNmxvC1m7eWa8t4hxwnEfNQ!}@{+Y?Gjhr4!2Kg=G*N@Ay_q}~**7w_+my@fN z!P%sPG(-Y~Mjsve&dy99d~d3#$*d@!mgcvUrz=-)E-&8K>&bhwt3m>L`VT&D?o4gO z8{qstVz|$%Cnr8!S$|6K!QjqA(o68p z)BEk6>y1EpXKQb8^ZU6qpm5OTVnf~Q{ra-<<)&sq6(=8O!KO29qs;q6k-c?np|?C( zNn+#5Adw*aRdv1PaYLfO`E}XqK5vQ_Q{IsS9STnkqSm0ViROhsXR+O~RYrh~S^5AAT+UhVyKcVH=y>9zZ^ zJ!VSk=MG)~u?+?ptQ*bT?>w!PU!+c6Mn9O5+2{q*QTqOf6)kb+v9eI!{8)C+-_?@+ zMMO`mwq0*1K86ot`0G1*m@?&8#vs*xrcg52P+$sEsKR%g#NltIiKSQ4iK#NqvYqVI znlkF{7@*LvEZF_KG=?FZ)BMxyk}vyugL z?e$~2fS)py$XF+#Qi+)Ap?cP+BV#6+kme$k(4p(`d^ld{|AVpfeoOKV|9;zsqiyDD zo4HcUiTKHem8F^GUPU-^i<@C(Wx1$anF^()nTk1aLS|x$f}5PEh^VLtsL1r|_c)%P zp5yu9`48^vKF<3-$MrtnuWw%v@Hwqde{??i{0qriZ*EF_)HBufEBo=A#@xg1LL0>##Ij|*=o%C{nS_IaQ!nc|9sfnLwH9F_xf_K|3t@c!?PJvRxR=Ydl#L*<|bD$ zQzBBrJ9v{{o}pW&3X3~?ZXSB9zncGf;)pvkh2oxP`Uc}(SMGaZI6D4!|9Q=`-xog4 zolr2ceDyc;b6O)rxmWoV=gNU-WzNfOdu{i&VuATO9bY3x4yJ2OY-a8mdF$FREFI=5oxdad5O*Uv6?EpAZC zNsz=QvljuG4L{-7qw~KH1ebD>aCdI7j&JIKsrK)$?zB=ZFF6tfd%Ti<84xuX>=u9T z)u)VzxQOI2&8P_du`_yCPW7ERdgXD?KYfcgk8drOyij|Z8|V1u_8#!bmHMD}Co{iI z#XV?Tx-}f_+m=$j<4sVR?Cl3b?}qN`HJsi(WY}Th^nK44tRe4i`tgr@Ru{1Kx_e&@ zE1xkQ`g;rXy`uZO9_Um|S3pzsrZAqVqStAg4NXbXU+GnAGD@W1bF3%$SdQmke(v-( z!AaNF(&zL3cJB9LH`R&s-Rny4!t5=TL z>|@%8mADkt=br9?>@ZAU1;h+O?Be1zX#t&{(wn%Qy+rtvp|7@b+gAhsgeH7DKvd6A z8lmm&FZd#JN%~1-6=-VjlU*8Zw~sZd)Lr><<$u3~RL!I;P1j2=Yjj2n4Hm`G@4t`% zN6z35!^#s9-n>fq`KdnPRei;$5@dP_*5n|6UhhG7@c}b8Ux(Bxzs{>&2R>QI=#{)G zFF)$+xBTrc?0tSjT7FGaFMmXRyIdE99xh;g`qIysGTi z5zT?buW3g(7Vh8o=&t>$(^Myc4MIQNP3S90?zg_*pOXB*v-iR0yGqYKjH{uquV+=Q zX9-k#Op^8Tngi=dv9mIyQ|ci{%j5QeZofJ&qphrdS(J06DW^Nz?u~Rvf`&zhFz~1P z?wxN2w2#=E7MdVO-#<5{*mNkdpN=3;dhIJ%o`=S?X%U-P~VQ* z6&|OA#(@nTmr8x@zS#Tp9qDb%QMX7Yst+ZXXp{R~q`c;0#WIb91eTdPgotJoM zo<3EH>6AuetBUGP-vS{#;Y1EwTBnu&blK_(GCHp@Fceck?pysetgnKu{y-ruPm>hkx~$nU&!RgjS* zOG-l_jNtSm0I2={3bVY(;@-;@ez{?PF&SU>zckXHdG{x@qv0IOs7w1)AJ~IjQPzO! zPE=_k)u~&O?lL=?xax%^uRiRjWhVn6BOWV=4O!kY z4F*KH^B3B%SnV1LBL7&{xk31?f8U4(E+m7Y{mD7dTh{Sc^Od*2`K5kTe8UNd9>PdCk-;5gB@p7rEi3r|z-Q z?~RIPZi=GOLWgXj$5@qs6tjLe5~Jn3CAycEwQXgw6DxM(Ap~%y74zC07dZ-5_BY;=0a>N-B68Qh6vK* zQ#aO`9&mo)MvLDDXKj~cwM)prDHJQrsaYSm@tCaCq?PtEuv8@9$R+LkehI~Zela*_XHbDIVeDAjCC}35WzT|+Fu2*A@y}mI z{!WJ3ZMtTem#fPKc7U=uQU-M2<$&Z0)o)YTLBnHv5k)J5_OL9P7>H^T{YO%)#jE+m zgxZZasOtoF2o31UAsZ_NjZizpQ@iowJnWPtj_umUA>EAzqBL^a4Cz|gp{Db|Ds{Yu zCnClUw_mhAmd&ZV%a65p7w)ina!csB7E&oG6=wN7*6G< zPTtaFZLC9@s+)zd3RCD`LA^cS!>iRCM zJQ<11EsOC5PAjL>JUDn_X40-C?RQxP-lM(GKflsRP(ep|j|KWkk6ClAzV(-vg|f_ZNhE{5nJ(7SNM zEM_xyn1z9rJpS{!jd(Sr>3ke~faBR%94fk>B#dij#lNV*?{AE?T*0Rx25cU9Na|{1 z)z>xglJa*$YQza|AGy_GDQa=j*Om)5ga(}*_#c?2N@3>Fw6*<{=^rfjdoj;k z6;v8RAP07k(@jn6%LZ)v|5eX>4`l0HGcDajjBH$UU3FcY>a)E-1}cfE4_|*|2V6ml ztX7}1AO)!=@8qRC*m}J*Cmvzv~slvG0sT8 z1zzhzmdUc$w&Q6a#~tR{+iXhFX(v-$UTM!qAE+4KH`H~N>flqx;a2?oQVZCzP4mCPm6iPG!V?(yFUMFW`ErJIkV}j9+N~}ROMu3*PE{v}7xL$YEs93DBYkc2wv~sO?5AS%CITAR{yg;ax zcK4BvDU8_n%jt1r-vlpitGBAy^siOLr|oFM*iP6{&NY~8db#TZOO#5+mH1f??`M4q zDJozU&3~UmRcpX~EV1=TQJ-E|mE&S6upgKaOm_+=DemO}C>LCfT25fEC0j*{u zJ`4JXJ6t8HmqK7ej(UhX_qVv6g0RKbFcgEMjrx-F)jH^q*A%?m$k})uZaP1v_hDpx&B8j^hA|+3~OzshE~Bv{K;M| z?1Z-1{QJ#XOKaU;sfV&@^e}MexlQv=6>+D4l|fZqgz+Efp(f&4u6GtS6j8lUZ|JJf z)e90})IE*wlI#j!(N3@mk`W|UK+FVa3O2|ocbI#cxT`0py?KsEsPL%@H=X!s%mO27 zTJ?LgdS>e1&&`!QFKjLAjIU#@MgvlhlxexUwVF~Ij^bSnok96pQ44v;M4zSEv=D_E zT%TS_ZuR(Ny=C;xR&qiig`J{X)Q0~`T*YIgR1&>04QoA;EsJs;QCb5a*u2_tf!?2g zQ$cQa>SZ1j5pu#ERJ&)${f|DxD*ZL{d8}&KLi(fR?&osT=~FSK9wsY8@r_jx&RbAX z>N${xd7Q>ojMrOU(i{b>bhWng8f`DgcI@D*sOx2f6Jze_5{4937r#N}jxew!6?m%+J;C zb8RJ>wR9P`i8I=!j*#9~zXzn@O%nxNy>;34rw3RA4&g&0`!cCtOuqx9xap?BXJ)9v zlZ^D{%(8dm)>~af8JPV`(yXrzD@2u%25LCk(p7M2uzIp7TN3FOP2Jj zrPu)fqdZhVV%=>l+$(O)!D|feQBO1RLBT~_V4JRlIOsoJN4PaA1S@48kPm;Xx_r4T z7`E>h2=@k(w&GAhAGIeo*hU@=2z*&Wnu<{ZnA~t%y~UUiM>lerS5}Hez-yE46DOYp zA6!TFc$p8Mx4Z%UJZ?3^;Xc)<(=GgCWD9$&QZxwP9{j@tVJaBp<49O6t*+Oe@z308 zX?n~LA5WYBT@cG{VI}LWUqcsPVnsf8h&j`=!bciwdu*(N7Z|Xv+p3J{8&i)|(%2t4 z@BIK}GWPL2KaJI~y5!RBu02=k5*;9oc4iF2Il?0aQC1Yu=t@<`M$V(rm)FHHm?U_= z3E_*`tm1PA13fuD`gugM7$DG4x#u5o9A2!Vo{=tde$7n1MFLTU7rQTIUfGzoc{*}@ zL-~4904hn6_ef{G|T+76Ff6VA9Y+I*~gvA~M*p1zCb$F&>@(-Kg2kzd<$C?4kdhBuUB&;fF z=Al;4PdfDNm^$zwMM8|)E6Ye=z3|zBs zBAmIU-5#5_>{b<0UGc(SXBC#DNO5}Og{C`l&IX@fJ3{`m`B+x5avh%eF={Z5Z9OIG zTA`0?W^-n^PwWeWc^%1H8>#Ou7Bv;AM<#sD?*Tpp2IGp>RkyJIDo!5J8RFGS`(5kO zX`9t(O4TYtFWh1xI56;a)|hwq+NB$Fd0|cnTgW$m2bMRTKQkYL3(*dE?&C;~N z0&=4iCH1AwxMq(#BEg`3$DQ`dVVbqV$lHZX?mL3IFx)g>E`y}qg{866~=y1nv?g%V#rcHkOzcDwWeXYLf4fP{&CXVq?QMTF@#9c=~nS4wA^A7 zOmF~|Ifx9|Mb%lhUacBSZvsjGGAR7T;2gO#^KiDWN{y`a-Y0`}%kr$0U^l^H$?ljG z54>P`y>ND}1ckHW4%jLnlew2E&MRuYv87BS9d{`N>D7E0|C!&V)`M+>4#3;o{Kr3? z6v*W(EmLfTr7=rpVCefSRn3o-9$w7-stmkW zxS_=^O0(r$)|8ByzGYtZhe6rSL!`yr!302@er1F!k&n8<%w@PcvT$)iYK1;Iph%Vb z5Jx&EgW7&N_eEEAJ*(Yc!)ZM2(k+AW6hGfmEZqF`2sKzGG)%_>@CM_2bJ;}R|m}dF0X~GYtwM9Dus-Fdn#>$FGReTeX9L9&|7uUjpd6h z)+;~@u1K)6r|(dtusi3^aW5_DjHX=nGS}HuGmG7bDn;BSJ|S)%m$7XC?M-;_Q5X@Gm8(^n z%&-{qusxc_%S!^!2Do8&+c2}no`{r(Z;mIlSTC4C9#q6#9=5XFaTV}z!$e+n!U_1y zcvNAz*4=I?fo4Bz$AphTb5>}_gLaA1nr0sZvyEK`A<4P?yYr_Zf_~rRAaL*;b2k3# zp%q@vcD<3Xu?dxAW}tz?E#Ro%iSbU{1M+C?NZ<@>G!ok2)N8$NKj`g7SewGVj4}#Z z&pKDbHv7|Apog+1Zy$fdQ;99ni|on9X@Hl~Bp}#4vzp{1Oe8yEa0YD73es*Bois8a;wRN zE5|A#`R4pPDQ6RrdRg9=YW(BtsR|mq~9HS+uR6re%$`+TR1GQpT(j>NBkM3ZQLhct7%o-Y zA;n!d&C5E>m{)o|c&p>#g~F4jQ|=`zSJ;)D^3i?0DlZ=EEn$PptN_M0pkw-k83`)1 zw8F2atLZrt{B!Ff{i$d;&a>plzg+L}D9JN~Q_abdyd2+1Z*aF3oxU@*?z1KFpVyep zearQ(4`Ck}@9S=S4)EqSt|2bFV6kScW(qrYPV8Abelc1_5TP(LI$SpMK~>k} zX3LdrF2W=8Eln@Bx0D$p`w^`HK%<riL zs>bjiQQ2*L0KV#DD7q@pgAxK*-*CExTH!A4LuKs zOU{4LrnlbaEQZ)uuHrh!64nR&Ot=fr-Yy4HY29P>D|Ku=`q<)Wh`X^)T!5=aoO|8I zqD6{L#-pw?G1F8g7X*gkmcB&AcFlTOV}^$oXN5Nv$cp`yPJfHX&1Ded+ATSqj&Ylo zP5L`r7)r7|4k8l`T9e(}I;b|&KWH0n=54Cpf&+0TbM|zu^EM#Jva6+6y*04+Q7dBK zucLQ{PC^PtT^Lz8!ye^t$C*h*%#e`3DQW!k< z>GZMqCyjOsd67x&N1qi(bUxQ3Iem7^5XyI+U4nNJ;EIIeq;yzp3+0~@?O-^hzxGp83$ko}apGjZ8Cp4sG|5ChmLOQ1PZX0xJs3Mews(~j}% zq{o+VC5mjG2ifq722;6^8R;EtL;N@>D=v!t8k;eJ$|Qo;Ru7bQg1o|UgZ+XJ0Y;de zf?A!)n1JWMs}C^Do1G_6qDRm<%|+|_OP0#C|GI2C+JZH!9`WQyvBlxejCVl7PPb4U zg@tX_8Xjj5dw5mS&=)XEcZd>3Bgt1Cn!GB}>-NE&<5<#-)FieB6%1#b$~bls># zg{sMnvO)!7v$o4SwK{u()ou^==EOl~3-zRM zPNS@;IwYdumnHBP%I{a0ka{`i#h2Rm0H?{^>1$4*lB296I(uG+J$VkDm*d&VZuRgp zD0PD)rpA$;Z>bfklf5xuX96(YAg?~Xxe%YG{FkuvYK)EB;aCTHMdJ$0kq{P)%*J_1 z!M~@f6n`gccO2$Tw`dEDU_BQUX`k#6B|0?SyE5kNiktC#_s~A2Wlx2&t|xv;51+b7 zB3=*ALw6ByR!qw*h}oRvzR8(-R9R5y((NrL|vyx^M1SI|Q` z9SaI^&8t2ljCQ?ay1Z({`0137-sHx0noON))I>bFbF$uNBV`26@1Hj*2B}gb3uO6@ zL$SUWeHt3?r{E$cvOEa{r=-5i!}ZjUiqe>!>nT-26?!GKzPR9@(#+4qN z1QYB9kaAa8Pxu{CFrVWD4iM{^ai<__oq{_5M$%lcQNJ6uGOIdV*fkrRWzw{w_O)$w zI0PHTsv0ms#j`KppuCIgyUpjlR#OaO4tFH`b0MYdR70o06Zwhj`uKl_2~Mbe5}WIU|BN)i+`|dm>Ns0@iwuZx3%?J*Akq zR2cDaLsKm}y|M6C1OEt*R18#yWtM6waBBmfL@=wKAkxK^fs0i=#xvkyl-T!19d(^jt~N|lX;@@hm{ zX>hQO9gU-8%8mdlSwhD2G+Izr4zEXZ=k?*KB_EN*1v|bPPpdvtiAQuihbca;7GRpF zTss)vzy)T>{e_*R99?w|x4P_qT)g4{5CI-vCq<;0$c_#>VCQ#coENjoVI34bR z9SbY67RGS(U^&Yf8>N*Wq`rHkvvD9fljuO^7d@Drc6}7-hPP!@ z#Dh&EK(n`Iqs)c4mFVQ(IVR+r!DRL}07K#Hk>MirbX%pv6z`xBx!Dv2n(g>$e!>W_ zuh<)LniW>o@lj>2WE`4pytJoK0|acZxh&;c8M3615)oc0h7C83gM1t^+bQ-DEabs+Gl7!XK)s zPEqBJHyn)$UR8rg#DJF75HCt60pP)0KhM)NSOMsW<@i$(3{YX$y_8bdbXL%^v8hz* zP%g6w&HGod52uQnoT;5H%pqIb)yzBzQT&>tFLuo!Hb%NdYfe1z zlSDltXIZbW!zI10!!6#ntN`Z((hT}G2;z$ z=U&!YefATUk{47QE~HnGzp3ygS=>PyI>{2#r=$q~MuvZl1Ge&~A-kD5nGN6)DlpR| za6ToLN=NiPs@+)msGeACB;}>+9JCHcXI+G&>~qQ21G7sT6~m)k5M7BxjS;m_bLhbO zOY$RIvc5+ST|qxajJ1gxoDB?3RDi95wG$;+{ixh#uRz`W=c|zJ&QZUJg82Hm&?nSy zlauZ^l3r2ZqkuQ5j5FsG@5Fvr1h{0dUvm$yTGkd}t;wD9M|X{I2d3k=7e;tw!qA87 z9>a~0kEBBk-*c92W|wn-Gj|Nec|X`*pjDH2eJvXI*2t4DLS;n;=_t%S@?{J`a)Dt> zhCEC#^HZhkjY|Ablb!1n1&q4DE7~L1rej8S_=I@0DoLy+HjOr^jOkU2xum0Y(Th%p z<6P5g2P1xJS z3cqLWTz7yoZ7>~ij4Z&MaIt$*9(9x)LJApnr9PDXz{AAPpLY4XVzC&xAYq3xpe^yw zi6Bp8k3#;ebJLi zWa_YU#6|JLHl9oOFT!;~eb?>J7UI`>41btJ)<2!tpKSW;suAqm*orTt;XXBuNXH(} zvRMgF3BIUy(#6|46UH{%Keq#aovr`zMH#C_Ph}mbNs)KO+YR<>%}l$N^`{u`MS0|Y zSlDnwEuUBKwLDaCcuJ|w6) zG929KrohB9YIfRO>SlEjqe|>(Z<+d!x(kKtw;G5BeGpE6w5bM20$v7SK%Hm!_b@9h zRbR%J*Ipw{S|XMT?FY3JkBF65-<6+YM56Zn^<Hp%d)WEBW_i; z9-KikzfaEiu2Q8Bc`xnM?{hLs*<%^@x1&E8D%m&?{H{@g zN;Tvs6vY=H5h@S}Zq+fDHl_|5`Czj-WBHtVDZysN4;XZDDbh5pv3>jSfEZk&XnL%0 zDJyd%87O*f5BRqeLB9gKn`cnvi}N$X4tnHHb`F}SmGZhK_=X=%XH5-r+_q63*?Fm8 zqeipo85PGiH^trHteo;z@vjy>@|74aGsk_;eNi58wC`X6Yc;fS#hClmEoiy@^w1>+ zxa~?kOzWEYl+hd>aAUdlUHS8QJ;{?s;!NW!v%c}%ShxF(7)IlAeLy3`1P;?^VL&wb z{R&F_YlN!t8?~+;uB=>372#m$E?Doz=G4pf2eyDB>u zS!v~C2~sA7e=D0L@M4T)ktwEE*bLSdfd5W*XZD(FKFe&(j19}q+GRb-i0p)J&c|kR ziWsCJOF?^3RR6ZB_>l$7f32JaKcwub?_xia`=7Uwo4l*eKl|Wz7lzqf#~=YCpZ1(U zqAI&8EQBi{&-Oj{S1Ewkz}^bMnU~po1vm2hJ+jXsteR>A**6Q> zA^KO91UdCpo#s1(HjAI)Hk5@lYF8ebuOjwNQj^E|rj+Q|LPU;(H`w1nAe)XTsOd3W zaPAZGx)#dn3N>0-WqVi$hC?NvJt)yqoY(lV;x$g`AN&PcC6pv|Qb6c4|BUx&58Tj& z!4cb5=AaX8`M8W2mAP^~k#-XamXkI)(ogfruT(7ruis#MDInSwc1PKCth0&};{~tp zUymhE?Y{&}jG4E_HBrbJMllcZ|LSubnT8$E^4_smkq+==hf;+9ZIk5wV zqq2e@LH*Q@tk&u^W1W`BS;5$L{@;fRFvrqVWSu<$UwmRCMr#5^;5sRYvS+sNFG=jT zhkr0IxvCml7CGc@6To0&9zXPG@D5q&oUd*Bt$$^-g~s2yq<9nYX?w;X%k1R#F7FRi zzrh&YiN*Udr7eXCGhxjG>w(+Q^XmB0omA4ZP1Sc4pEiYq@rWuDT z)l=k?laTA#-ASb@*=JRR`YMzBZQ@+%*0U&=NmpC|f;8jdkhaq zo}B#I)e#(&xV6&w7ZqF;?LvTCYw$Z(bCGu3D}Fd$6xN-0Jor+Ok=fU3Y|V6P8Gne% zed@rDFVACDdc!NL8~R!*4HW>CeU$jRG4gF_qY|$qiELmS>CDa=vGo?$uB`$wc7eqbG~-pcXfxt-rErn$;ahzJh5%s9#{}cqtbwlM z!A1L&kZnke2fWvz74%=crK#_vUlZiG-dHz)9_+QJsXsm)%A5lg(E>4YbY1$0(Lte3XjR~cr5AT|1nOWn%C;Ey_X`3P{LwB_Q!U|#lPmm zzof(a_fVWj@J{bwyiN3pndGRYw5l%RI?IPdbmaZh9)Ye<@AgB<;lk0ev*Lcs`pTQZ zk!y_(+T1J#lmTwM;hx5ZO#s?)Rv~65a_Uw$TQHOKBPnsr|Jqs%M1k!Pn<1=)+kHc< z1fIV!EcjUp+eY0(=$L;(Yihp&E_0pHfSXP(XH`XQkOW#pu(Lkyo~(l05szBH%}R=D zTF#)qQYov+wJg)eN*LjG-yGwT5kWU2d-USjpVD!*I%c2JLy~T6OwjfRy3K9w=7YYM zbOGk_qf=_GK`GFUCi@%jb># zGFfG1^ew?NgRd8jRKKHYMvnJA3}HT8Ej4Hw2q4OrC{NGdc9Dt{S7Zjy(}A zdqa=$$t2MXW*w$HyTy{CFac)nAhhpmi1-{$7JTsT7`ktXEj4wn2tkl-4Y7y|!w%u_ zFqJ6lo1DLEF|FG@yboye_^tVx_#feC$l$6q+qacc+DPL!ap5Z5zv!iH1>T08 z%yS*%l3?l=BrQThmSzNQv-^2;4Yjyxs7;~k+3bL(;2H)~Lc<#-ux`h*39L|~OLaZe z25R0WDi7-XTK{GOZ*Z+7>N)-!x%v|2EUv(L2ugVA2W9!4o0>H7%$j)YwEcBidIlJP z)b2(xrKeWIU4nw;2WvEpbpV?l^n`bIOpQ-Q+9aWhrAc5)d?Ofu_dnbkuRN@$J^9IL z5lqgpjP@F&-NK;#@bG?i(?;oTT5QpIc7i)0VqZhAJf9Z}VHUGSjl9+4qdb3B#dqXXkgR9TxYt(ZRw_I8+?+}B zl?N}Ezqnps05;nA74?wTT{{b@R&o4n9Xx0LS9Jig$SgPI?j=R?#5niAQ{Emf>(0IV z<{oVxbe?ICdFY7UB3;8asy%WV0&g|Ge$gyGywsJXfW0jhm9>$F?i%k?wNmBFoTZpd zH-*t3_1~3|7k29aUjc2lO5uxEs;$=+V*Z1BqObbVuE%J@8-F!Tm|@jz6lLSFRX{Bd z8f-fK(nCkrL%k9`C8@Q|8@2LG(!-F&!E||Ju3QlLY#4#%A)9w6iB*jpB1xBtk}`YyJ+Hf z8gXICQzfx6!u*<}3jWFZv4%O5>Kb@&Caq8<+CQ}`Jn`$@VnBm>kjB-d+AXq}f$7TX z!Rb%$bYIO*;Lg+dUox zOu1Ftib&)i)^dq7FaRCkmZ=Vzt7O(up`=%m|3n8jg{aFchfvM_ zq9owdGVJ|y#8VMB1Pm1??off4nxV2<9w|1@)ML{(oX*u&PE{1R_uy*1*rSJuxaP+$ zDTTjHs&F}d`bsM{E1<6pI+<-34UPQ!(odG<*L{Lqq(c*M36Ffy0%2XRWyc8ruIbP@ z{9q;WmT16GX33*wa_)GP-mtO`zWkG7W8G@k65}-`{Bo-L2w9OeIv$1y0vmnxTVjpb z^fOv^Ac{LXz>2eqJg3;9gjmC+MVGL9k@}LbH4?*h{z3@G$|b{cwoK4@r2g#v4P z0WC9ET|TEhyWGFP>VvO0OAjc>iNJEmx6u>q=po(Q^sEHqRn`+pITGlXkM1ZQ}I7n`sSg4p14_Pxu_v(WL<1(5DxxEBctk3!NLiks&2Y)Q7Dgm)`fyXf+3< z3tVP60o=4+ub*FieLKYyC!4V(`1AmnDc)`MD%NToz6zM5HF9;M0tX@2U=&(zY&?UB zAU_A!h0KinQAOby!(DS96-xyL+1{FFQnS&m{&H=!K@rR@xBC_S`E@$0XwdBe7G;eO+D93(ccM0a5K8VdwD0*r|v{ZJO>a z63L31NXIqJPj7sMVC4Lnb#qCSq^m{_`|TYFP~{i8m)A#WxeCcS8@J@dPrNj;%9eAQ zV4Wq?F*d^X6$|j&7}CDYUVdF`qiYm8lYf)D={7D0ap~nnuPLeIw<1o1-iXSxFXiOkK31xkeouK zm#h<{(DS0|pSnk=DsE*|RrCyE*0fg25+T=>PTzI9Ll;;WSD3^1iN`Pl2WnVHeEidn zkO$S#A-i)#GkuI5{IHZZo#c5J!hDhl-?<~GZ?JI@h zIRA4cqaNZ&SV=S#$;98G!V%x_PZq8~Ps<(^JVjc;J-We{Y=$pxT-E@IKfCTm*8k$C zHh#cAgx6>n;JXob4ZJvC>G_T<{Ff^^^-F1^Hyr4CO=+sJZNEV;OLnIq_ML)evS%*T zj@+&x1vNqSja&dr9}H5E;YsPWH|9PdwBSC;afp&uray3siUGqI>~YO#OKSP~xWHid zGs>=@zuwXQsNB0C*sn$d$P&&vKNhUa6U;G-xOPm4qc+!daXoiCV+#i)wRlT|j;-N! zgs%$*!Xr~8St4VSTMLn|+oz6>gT@(4Ne8tF0t6kG%ejAiS1*s0Omp9mo1LU@Dw1Zn zSc@_AsXi;;&urbJTq z(t>pQ^dxS@oi>M-`aRztU4u4Cuenl!1px;L+Y`tNWqMfB$2iG-mXFmDRM!}xVaqv0xTg@e(YIHSst#aCX)%5IC(TvVOp9dw>oe)#`+P~J|OHi85 z=vC8URMh6SnHLy#Bezagu=c8nRv&NhyYY4K1EY@ZiFirZ&uQEaS)N=!TXCZGz%VE1 z@ov&{GxFj*B9X00_9Q>6T9BW-Fx4YMLNM$fG)VUzCqY7%nW%V9`7ww`rV zRZrLs3-F?*R9@#j1d--*3sk}GtWurT=YD^Wj@tvlicJbE=eh(#Vqr#7rLoS49T&k3 z%}N=BO>?~5zv^U$qbZ$7U2q9phZ&tw%bJx2x`!*$g?rB+qAU^yOi7CPO%%cWl1Pee z?KQ3~T_s4O52`UJIn`vA`+L+AyWY+5Hotum4wR~zdQk!|&;i7v+Pfcl3%Y+#hUYOi ze)8xc5f8yH7>x}q9w##Vd;$j}9CjDNuf5d*(#qzM((e%@KLut1RyPnDM7JQ5&L{`zaOy75r4NvbjtJx zZm%}~ymVjysBNCcl$zi@fZb~?{=ouXAkVE7HC{=RWdr*e?>fqgz45md3xx)~HR$Y&;Y~38D-A$GuJRqjGZ)BKS7xx6h=zSNh zCkz=AkquD(0e05in{9|cqB^N=ezT0s>uCMxcnLi0(r|lVufS zSzd)Nr{;L~_N3DVV>Rt;(e8g4e_%T!Za*7di5b;heElucEqSt4BtP8&`UoBR7%fx@ zmacjU-r|1fvD15O3tLI+@~$MI5k2?Ls5AhGWyjTXPsE4mXXln_N|R%w(O=eJQdXj<=&HD zh%vI1S^UM4+Untnem;;d77Z)R>g0_zzT!~>hQ+x`-{l(ha#~{l<&#C@u9DH4W#PIg zbCGOt5~Oppd-vU9gRuTqoEZZ$b1i85-E9>=9a8ZCrY=$@8^-(cHo}@V?mu#wU#h0O_T{&( zrE_^_%ul=^x1A<>NzuK4#qE-v3)tRiRGv~m_^_==2w-_X4F zk~$K1=}@|Qo)N(90m=E4{|{qBh~Zx!pM9hS$0|jP`{Hj$j(4@v1AF4Yz(7DZXi^^n z*SwqoL%lD~4l+f{1^kLu)u5dF%N7k)e;a1)bdl_8ax_8$Nj`H0w!28&y#*pZGHigz-O(IzC7Xdx?6j7;{O0gK)Ao< zFxdI|^+eu&%JVqSuhDKe@b?ihpJN**FCQ>o@V*F6vvO@<-GK8jUh{3h9N;jN#W41w z_g-_xpWHrzbt|mbu}p+DBBTdBZtxA@H6cFBhu8c0_tD0vPJrs*_qqU0_$c2&X|PVf z{sy2sc<(+w2Z!H-n~y`C{QG#pXT#w?o=+D1ncQdAqS>0KU%?1#^ceL6Fy_z5!JJ~6 zt#oXfX!W%B0+EZWTzCd$Kf?yC8~bZ_R` zKc4N;Ywr?|6}Oo$SE1efxzxHRe?$KmRy^0Z9JHT@w^tbAHB`s!k>AS}#lE~=?P3`7 zvMt{>-1&9KQuxTX(TnEuV_s^$^0a}U=5gvBuP=9rvc2NH+Qn^vt_FPO?QS>MCdNbl zeTg^>V}|dbTe*B_YpFR|N?yEJ87r4(p(pg2@7txv+67LJHuB%4%F`5X2ip;thCr|7 zbv~9&z2@n7G9xdS;l}G^+-`pD+Y1()->c7FG?$0f&ZYHQ^Eo}rfqwVt@!{!3129MM zeLybf$5EP_D}!lZh-QAAq(`3~s*n9a04LP3=&}A92bG2Id4W$D`@Fz+j?Zobo#B0b z{96k?DhGY=cEC@^?dv|8?Gu0wh4Bo~ZofD9mmHe;!vHqyzXiJm<~IL6WEZ93ImF)? zfPEF1PoHLcB6#hKea845KiD3G{!COB`{n?T*r%HJIYS%JXI{pEos^gBFy|H8O((t1 zVqjk(eD4BmS+MZ{SFrx6)66!5wyPYvvUBYKui-fX*fCrnSMYbIV9XG&pmeAg zqW1H458wm)#9XYrkVYRVZ`%`f6uZPzOWBHKaK$PmA8RlE+7rB6Z7jAn|A-UGM00A z{JhUWD(#70Yj%Jc{HQhBP3tg^m^`#s9!fna}CJpLXvv@#mmQ2YTahj;Z#64oWBwzW+Nw zvok4RQw`H&Z5d3%AnRccv7W~K&(H9UtMRlEUO`@fEdexArQJM_*8x>DKe2+B&uu@s zMx>9ZtI6&L85Y;5h>en%-8Hg?tRfXMMtl;HfDEvdVPdoAD7lS%iQGuO$*!BpwWLg{ z+= z$Xm&FasfGqTuiPeTgesVO7b?cguzNFkH`&QTm$1)^8I%EWNy1u+$q?(oAteSk zPc5;q$3i}PhAbYlJ76iENO4%$5p``=-WKUR#&bgvb6LJETJlu7Lo61vMQKaabi~C| zT#@REu*E_=&lf3{C}D{dPh1e@ExKtrSM_L#+e%xP7cb$X99xuj(iEs?r+t}e8+KZb zKTXt*O$=2kt8J^egj`~!B1+1U`eaazRN@atRZPQyxI%^PK#VYCSoQ?=N&=^$!azm! z7>SrC+Ak?Q@_u8HCb8oQd|9ezOW@BGeK@Lbi6c4V4#KG;(m5_-HCMKPg|}H|Ar5<_ zQX>Jq%hD{CS7FeUSh&hQLvcH*F`gKu@^DoDpOs$CWWz`E0*H~UGFeR~-sCE+pDTg%??eH8| zKvEQ~y9&1+lR^0_lMHg6d@)y!`t+2<@YURU>3ljVb=oQSD1?jB*PGw8L^PHMZtN4LJAg{ zRZwJ>Ls49P>RA+JBgJu%pl7aq6VXDFhIw8n+V+Ih?HBTsb3MlaFB`JdSjm=McG(L^+fP}QRHV=tnNgVO_bEN zMT@?$W&X6wPbI`lzcMSMLL4O_LIHK4s76YYx{^vD*FwRKAURwm>wGbzJgus5X$h`z z70zRUbyu|SDcj0RC6=E`1F#}omE($ea0HFGOecBDa&uJ)Pf5b;0t?Ai){Gphlw@XV z7r9EhV!TP&U6ztd+&&Bi1p|H^rCmTW z+Gsq!!n&J=vU%{*JWokEPt9dsZedO8t9&UBeMN7sYROf486+i8iBCY6*s0EN3D|}i zq;6N9lhZ#SLG83noFhl!rxqmEQ_eB<0AW6R6s3=6iRRyz%4x(H*cq}s8?xM3~f z3qJEyjS{L2*0gNXRT#B}^(Cp(Pw5m|2Kw_=FP^d+B#ld3f>Tmi=zh>HLCP-xZ(HcD zQmPA!Op+9pjV7(hP^4MHGUZZFQb<|J7-_Xi%b2%R5p7pgefX4Xz_PHD%c4dgY{pVo zNqi;Z(?Kb|=&LL~T~(&6#C6kn{@+M?j3~=u#{phB7fc2unk|pS{Bp?e_ zTc+Sii{KRs(4pk^K=7-C&_ccpm^+SLQ>5}wGv$0oNn)uxJYhx2HM1u^BgM6$u#u#N z1(sH%QeyFxr6uJ=sTJpo`HP5@__Cga+*ekDucWE3Fc>JyL8e)02|Kk*ASLXo=?e-0 zNe-z&R|?EtpkzK^37~;hKxVr*DHb!!1+W^WngdosnJ#lxj`W&jwoRtHvI{g>pkfg! zda^zIE3S@L^7`+@MfUyNZ|+4 zuyqrrybPGP2-vh9fmM1)z!n1B`{;&w!Sjyi%2jg3&B;rrE99aSQ{lr=JneP0oaqW| zt4OMiQV%Hqj0sp_E&;m_WU7>qSlkfiW%GoHzSCEbm z}yL=S1t9O*}}gSh?R9L){Sz_=%g#dNUg>brB7h&;M;}uOkOq|YZvssGOF`YO1E9S zR2x<*eH>H@Mh|u-gsc>!rmAZwoHT{cvd(Zh#-3%dVwCGT zJhi3^)w(~^t*-Et)`eeGdI@XF_cx$CsukhYsEKfxT8~BLDa?Go()U^vEfj?XD%-Jz z^;%)`SXOz7fK`^2zR{wpE5l{wLx@>v4ry80!r-4QiFzefx+pB;ib^R7YA6fKHBmm; zM0pJoLD!y=5N0Z?!M*}3#7bw)7wfx3%?H>mnJftfbl5g^RO?{DWfoC4oxsX0v)Di? zIjP)`HcXI~kklNf@l3K|NteNAE6=8*EC6YhW;V8m`oUJVm-Z!TIMbA1t#(VUY~|`H zp9Qv#vt0)_4TmWBEv(#{^0PNsa9)YbO-myEvs! zNo$Vs=vS0CT~cTwY))TMUMzHJEcnhPu+|9(cmc4)h!s|NDw`1LRV)hq9EuvQ&<9093z2{y zq)DjkSx?jr6^{i9Z?PH~k5`o+FH*LEulBw`M@Vc}QVUr6!8}pR7n(pyF5Z8lEFnkW zC|34JAXd;N#qHo{!MZXcnWtM)Q@17sOE2%wkbYC(V(=K)YCR|KY<4p}4BVNJ%ny|9 zrDDE?wxLCtgYCCi@m0113AM|_A$V6a>?&n-^#SWZH?{vtO4B$3O1bCRuU3jOW(mr& z)a9ljE6ul1zOQU^*xiK7Rh$(l3E+ubUUOW`m!!~fA^kaZoIsWN*-8UU>{ISU~gL5G;w4PG2TJM$N`{5% z8Hjy`KuOP7?Gc8`cJkF;gj}n0DHn?npY=%4v0M=)LdFK7JnWqNB0m%o))#Xm`2}F$ zyf3XhU+o_SYK;{O850TK2#{=qJ)A_rEaQpVS&&*c5w%NVEQylJzS1~SwpUfXK(z~= zOCG8cPiZ3QtB`t8jy@JKxz`n|otseT1lWbDijm3vqoT<5Q*1{nln5w&VQD6!#YEsw z?qUT>cZ5odB`Fl8)XO6G!#y?fq8P7i!xbUCr|Jud0J^|SDaKKwcExz4C)pR87-qy3 zK3HGPE_f__wPq+Oi6m=6c@D(A_B(l9O1{@+%f|11Bk@4NxK=VKbPz<=UTmx#$!0 zi<4qGyFB7_VZ%vFK~8q^3$IKJE9ifZK}eKL{@vJ+^T7O>QgCzQ3)8!Q|*^;lczvs;sO&y3Vr6#~|tg)9{( z^#ov!0`DVuZ@^x16!h@qDd2y~cEO-m>>meg28fE|=%oU|pM8widE#S$7dyS5@g5>D^ zw5^I*E5e?u#84n03)HHuPt`4@RFPTP5{0%wfChYozQ^eP!H zSi@vAmF?Yh@10{C&QX@V(<86jJ7E)F&7JJ8sCEZk5zgk^PI)<_yF~0nc0=lRrGXsC zPMN_P271h>RB|6b&(<%lK5_T4_@KIYxKHKCQgA}IU--l7BBf7+tLn+`A(lFjo**7! zX(KF+U(jY>k5hHsmxMs}J1APLt3LV!JT>7b?GvA6aT+jNf0PKEM95YGUMdYib4sdA z)cGS$d!e!|UA5|$p-7xH@0Gj!pZjO zUh35?mwHq2u~q?G8SR-!V!%1y?$t4@n0X(d4I;sVzREFE-Umryr4T@?P+soj$n$RH zl(RBF9h`cT`#OPw&{FGgxyJ;j;^2&6=F5luSJ*c&2&^Il0zd&Rbd4ZvyoYkK9wp7lzPq97eRbzJY3r8YD5(+T=__CD8H09^ zYf!KOd;-2qu(QD1oSh)bc1&#{V`8;Zl)km@ReW|vUhb`Dr|rQ?wNeUjyJin&)XY7x zy=5YqEoaoM z=)$xi@^#UojxZrZ(u*9a-I4BZK0pX8Qy8mDx@ACy0XM}NSl8K%Wilm`JK$xMJY^u> zGP=f*akHsL>!xsJP};;!{mSypL}mkf=_ryM3@}!pcNfV!3ymb(x#1W8D-bH4WuoyA z?Ps^i?t=V-XV)J~)O3Tq_}>co==8`sosd_s$E(AUI2 z=|l8k`a}8{eS-d&{*>;fFBD!=xVUg%;roT36n1N$*KX4OS$jaI`nmdRhG!dbquS_i z3^$sM@kXaH-B{N+x$)IeZPXZbMysRE(KnC2XY>=JpK037sF^e?&HiSiIo517S2ib_ zGtE<)XEtBmJg<3i^Rnhu%}+Kz)BIxdpT>&Iu2}Zj)~i}?Z(Y~=Wb5;-TU-Cwy07*9 z)~?pmBrB${e~~zaM!`N9Q@S5`w#x^ zne8vEdf`1UeDZ~ZFZ||kbT~O&K3qRMdU)C46$^a}QwygroVW1$g-aLSy!eL2rxzC) zJ{#o590t#$+m4IDdkYT;41P@eg7!bO|H&{ID-4zz^~PYM(P%LYu3;EF5n*t2bld2T z(d$P)g)lfIFxX}oT$^HWTXTE!tq6nLmi<@wMa}a>H#5gC99~ z-@${=R1gMzhQSiU;K<>z!|jE5p|dc(aMr@>7A{!0e335h7Z@aq?^xWvIKOz#;`+tu z#mT}$h3_mD3tugKV&Ue6uPyw;!rw1^b>S-uUtYNBb*C+?TNoEqd?tO>kr$3Uf8;ku zo;~u7BVRf4iPd!V>y8pIce`@rp;eEd)WZz9soxSh#v;BMaK19ggd-gxM_p^Ji-~aZ#%Xa^0 z_YZbovFGP|p4ju~?#gas&)+}!yChF4^yD}8T>9iSPhQ=ApnYHap7wXzceZb8 z|6TiU+c&m9*Zyq#Bjc}rBCE*+nPl2wimV~iWGz`o){`0XXXHe35;>V{ zAg7RxWR^+aQ^{%MWlUq7L0-<3#+l?S@=B&SUQNzs40SHqL|#MABd;Z|Bb&(<@_KSU zxq$pR*-9=X^W+WWBC?HKObXg#+T+?2+K?SS?)xlH>P?V$FI_6zM_wO?xgOFN|fO8d3;to9r2x7zQt=d^#*ey{yO zdtQ4%JFNXtJE9%c7PLj3Fd0?QHC-o{>xORXmTv2g?&_ZIlPk!Z^gs{wh)JwS7Zd7C~!-cJ5PA0+S4hxB26L?0&~Bp=d7w1(Cs zN3=0=lq`@%eK}>Mt*_9Q(Sp8OpP(kwG?R3Q4r{CF2<^}*t)orRd$mWloKNqg_tOXH z_vrWOgY*YX=I){oYdh&9O!7X;WbfnJ544B0A8LPZTi&P*XoK2)+K_g?#^~?n<*QzG-uY*oJ}^3Z z!D>b@r}oo?#%yMn)0l>A)|b;rJ$)LmnOsf-6%Q#t*CWzzefjcD^iI0?{*REMo7b=g zZ@y;ef;*{s#^vl|?DRXS&O!v{sW9r zxc{uM_^(WQO*7f|&#b*UCIwGnoU?)KUfjbZ+SyFnj)?o?Ea$xp!ncsCm|ShJo~mk1 z!B-93ew|`g{MqC-R=S^@b6dFIq~vz{5uJ5nw_26qoTHF@y2(J%s z4D~SF?@;GXdeR-|YMYp#)3nL?L-Qw2&fhb?=bm{oIeT<|?^I`|IlgY~`sp>*O4)2z z#@4OPqO+!Lo9r&wmSI}DMMaF=FLT|2nZR~jE0|%>70Go>^8JAD_YjQFIhQ$?l?xR& z)b6Bz_VvD`9uPB_-2Gs@d(Un%yJ7c+sScf=*+^v{5jDrx&7j~$y1HO$7F!9dpxQZx zDV_rb^SiokYXyVFsCH5sTEoOL!wp|Q{w4Vu(?MUH3qKWpDg1hPZ}>#`bZ8EJi#AD} z)=7gl=YmFSj#-0Rs}&SV{++ab+jTLGgHs)`TGCjl0@ayxr z$1-%?FfaEFyBZAY#;EIvN84oTU5ySqvqVQ#<(&3?mb? zG1r+4C!@)@)1GS^jn?Gy%abeGABsQR{&f85_Wj`l@%P(5j(^gACjLeH`SABqGTy$E z_T3t`#+S3_Z9x#W$M2%tyVIin+(44VNgTAs+siG#ILT<_T=OFHD)Va7WF%Q3OxoX0 zR&)$%a4faAF|xjn+)Q?nePoeX`v@Ijp#m9h)I0UL`lkA}`i{C;=QWGezI}MvY#;68 zHREWQc82M25{$R?vHlar?qajEoWG3rwwk4D{e1G`(9~FAoy^uY9Ib7b-N2DtJCU+U zcy69e!h!jC_uF>Pt1!>9jQD7L^zLipqjvm4K~N%@pD9;QrZ6F6*4R{gtb&u&98J%# zd1;!J9c(^U8irnInj-~6*M>DdLHf{8VWhzVMK&R9UjF7|AH7C~_zZpE11!LX?J4sdRO8rm zO*Z7YxG~k4nw#1*b>oyVHASlKHyK*0RQvihY;{x^9r`xyBg+^@R9m)e73=&O?tKjd$x`x@P^l=`v4ihqNu?GwVV+RVnx-|zkaM9C+ffonUZjr} z`v*&Q!Z2fdhRZ0)GIh@^7|9!KYp_R#KdJd@EF@njtpv)bI~x@8+S|&&kmnEtPOvQ zvECTN#t_3seWXsK`fUB&`o6k;ZvCqI)%6>gS}{6Y{3Q&J{w;<}IeYrCLFWv5y>YWq zFjAp+Al@Ue^xQlX^qeCPJvLiB@en7X8O%!zA=4G10XPL=PU9GoxMI}6<(|i^?SfPC zqL`uR1eWGGcF8e>B`#P?*Ef4kQan{M+ic>w{uwOH@zclfa~Z==m293Hx>>(le^}qI z>pS#o^y~E-b-km{>6`Rzx~^AF^#mIc?vNJf;$I>#n7DJ|ir0yE2qM_chPYdZb4CpF z^GtP$aU3HmT25>+!B9J=#z#>7ny!B_lLQ+1|(KU^4=ux(%}cK5sl z@UhuL4|48BnwD|s3`X!+enzIiuDA`uY&^E`3V;ZJuXnMK0 zUXJLsY=*P~A5(?#=ao#dO_RIkPJN#KVW8kpYoJam1Ny8x>z!G7dHu{a=U2AW&tLQ7 z)jytmX7w|Z{%z)6jeE@RHy$&eY#cCu*|5t~wF!O5^g>Ri4oAhD)3~N}eXGzKTh1AL zh#GfHOsyofaG(Z?8N z-ou%eNwpK1u-ow9{N1w~4n24`QwwCClPKLeKO^{-V}q+?$ z-fmA&_TN{FomkV@3enU{eh^uXRdH;uQVs&0*)f`_m5X6y>u%j~?AJ3oE@-1Ph+M~Z z3M^j_m?$u`LW{<+>sn5MEiT#0vcPcp4yG!<%OqYOAv5c%A)TNb3+z!t;Sc&wAxJDM zsv9MD4UT-8`k`yY)l#vLgg%b2*&1B@16xbaFbP7|v+-!=NoncTRdZuCu^Mg(?$PtIb{aj0el)`n?VSU;^h z%x?9Ird^5sATV9W(c`{a!Qpk9>^_6(DudMtDeLBpLNTHV(+zIXVPkD99%lLT5WBxqN z8q(uhTyPB6(n_^TRqvz4xKO;PQD`=+H5#%E(6zMC(+a;?uHGGcZ;GoLlPT`v0{K0;i{UluUmWNfOm3Kx#+yOdVkGl~WXDvScg+m&+7;wEF$Dt;rXT)Cm@4z8jJoeR7>qRQH0 zy>GmJX(hB;;ioi)#gMHAf6G=$LIKaHx=fsGq%#5v)~sob&>7zJwXB)tbA{1UO6M?m zzRf^$yu{b$V!w9vw&B(=N^_!0QgdDHgnDfypYw>#`7fE&Gs&_PTN~-R zn#7gGKCG}{F{ZCFAveZYEV?!*UF&-tTC)r92uh#S-f0(|f?Y{ylU5rpeU}~EYl4#Y z@B0(aYz3uBKd@UfB|UHroYD*ORCrt&V*SsPuzq{zI?7P;fEHC#}OP1?a z3zI{d)6tyeg@U0)PSHLgD0RYeq^*vPfLo02;=iyNf0V7f2bo0Sny$?zzFeEJn5?Uq zOujRNRe<>}O6xXbg@Ka?Vr%$>N^R{*y7EM~e|dabu`e*UC#4^mD^}<__2X5o<(;Bl zdF2TAoi-N_k^|(2EHuJ+gw5&ny0++qW0_Czx-mY>>&7b9dX~;sckAAN=IdEsFSiqi zMrX1~J|m(uI^$!foo2Snp1qvm_9V|Yi?0rx+N*rKczVS#PdknG6)+0?9qY>=ZL%7$ zJi{@lrgZ#&)Ai*+k{#upl`r3WnfdZ%=DT0rcUM(+_1#_7J$;VmlIGCp0F92(NFyX6 zA;ckZSOzS>HXs9Qa|B?^G6J*q0)`0hhK<3nv0k&-90JTj#BRi{i6vMgkT92x_fPGY zud1uNN1|i8y1V*#ncwmIe!uU_SJNFN+T`OsWkw&S*^e!^OqYjeOAa<~0_PGEDJW)% z!)_5LTE^5m+XRDOvfX*XqWTx(P*syakV-{JdRr?neFBUidfDzZ3g^#)#ama$VNx&Z zXmg+Y7x4R2u&U@yEzSEc;!&!X&5U%qNS?1Vd|4o8y^kHm@KemaOZO3>ep1#dkxyoBfI=I#_ z^A2&A9RK%}-`f->;!`iaIAsP3(N4nX$RC`1yl|LhPRQ2mQnC}n*z^usQ1n!PxveQ1#U0+8=*ti z6T#_l&T@gfixbHSA!s0u`xkxWb*ceY(Vf(?bySzY-v2xIH#t8$x0YK=hJ!sDC=`+5 z0s?CTNMts8tX44J0tR@J`OK`M{)44A7;lCe{-eUCN|&8)eIZ8K_G{!aK+X>u9Z9*&;2j(#=pqgpH+>5!Hq$T}Bx9Sp)v3pJ|O+aZnYn=#vh_}<#m zo@xM=d^h(ss1CVZG&VtpXc!rRb$77Zef!3v@Yg@WgYYWq6pbFr7Z7@E1v5ayW!wC< zh$&Ez{w;~8b5oz%_(krMS>+s8g1v&-eZP!8;PU2Q2l>C1{0SN1-wg6P&*XE@LcDw> zi~eN!kOd}Loq*l0O(Tue56r;B+huhAgqJ*k3QcN?TQEC?nT$?($>oG9;2|db)n5X3 zJ(aDbm)p5=HKUl!939)6z-#s*&>oP3QJY;||I{25`gd^N`7A8ornPI!Si29|{LM~%UKgj(oTdVGQjMupbi>)MEXE$9Lc2_bq8}Hyc zBT^ncmogTusQ7cpt>HW|{ENZ+9z-FIJqZ~71;HQ3B8nS{Yx07M+nY69Jy&P#qMu+M zh&_h&OvbR{jA2!cti~E$C{2KDuc|tBWvLp`QY*2{XmQ4v>8o!FHaN2a#YKcG8!L-f z4FX);zNGg;Asc=Uf6IotI?VDl)kq8}dS&f~&ste@lKnC;D!#+P!!#5kvXvVP*)95J zToYlxWE7`8FR*MzA7tJqq5y{tJEp=_03qm8)59p*n6idTfma5$?zkmCDLbayjPo0_ z26g0YB{E8{tvD_H4Aogy?(FJE=kkv zEM{x?C$QRgUq>EGErtXBi%wHHuSobrR%k*-Vf7iC&lShD+ZlfnL@=1 zJ&y7WeMefIY0ESnZ?-dCD{?Gq%bO1EwHv;vTGN+X*S1{pVo&Qn0bctz@S3lW2xWB| z6w1g^#-N7m@$SblVRqA7Kx&1q8*-4HNh%Ac4K-B^jUZ7bF7{&_)&s{v#V_neK@#vz zVSd@irPZ^$oKBrS!A*k(bIa3%?G7xe*_++!xY`r!x&NE{SMWqJSI?~i^IKbi3&TaB znCWOqNs{XNS4E?mP7W|}BMY(gyTSz7Ug{OeG;=l$L$gC;Nkli;?HF~y18;>$$tPH( zDNATTC7x|Yid2`kKtJI^GjvHe#KN~W2Y+FTz%MO4=!K-Y#TTPwsC@%ssCf7`V>ivW+@TbQ10r4Hup;jHi#EfgLJrZE$dQLb`d#SJ~z#xFXPQ<8F#BpS*XBzUCF|m3qY)Cn&+Yr9-lSJ z^SyA!Y2jv31UA3B8oAUirK(*la&lx4dr|DRD)k02?WnZ{mBWEm{Bwo_`3Vwa7Rea4 zu0(@TnF6+uc~LK}J3)XweU-k(Q-1JjRggf&&Ju`&aLk;tx3Tg zNq|uyonVwg`ysc7SWiN_)!blv#tp841!bhT@4~``8B^0bhKdT)xah<*v;{@K+o^K0 z>;@Zda88jWkb)cK$Vlf)+~(fLYyJaW_|@imUD{2~$o)Y+%Z=}4nn>g7V80IU6WoL9 zVWiNWFPC;Ny1}h3cWSqY6gTUVlBHAJQ9W}WR{Uuhyr}LJjY^Iga@u>3J#wBYdb${n+B)-Rvn5!c(Rk}H(h(bmGg4PM*8g#z^@&o zXa`q4m{?!0yQ$Yb^1}-90N)xorXKU?-AGUVI9pP^6o*|07%Mvg4ww_+2|4Y1mTWLH za)af3J-Dx!;>r!4G#eo!@9KsTsdItZ<*8wSgJV_9s!qtsvy!j->0p&KjF{%x1=Fc2CtE3U(5c!;X4Q2MN>@NcNE9E#{Tkue-g(NZS+w+jj}- zNQ7j!m03R~b8c{Uil`?g3KHx$xb~HLbOw}YdB!LS*W$HQcnCtpDT#=fEbq#Sk>_F2 zvb}CVD-ci)DBPkORG4eLmn8nfmDEU2b%oXPXoe_1%=#m(+GL^!a5{|9-5Vb6Vt#8cx=#n^L)9k@^U z_o(ff#&<}f7uf7O`s=WVKD_&Gu#gwwd%%sW7CiJrr&%+C)=J+eyyU+D#UA$RDrTPJ zQuMAu67g|te7C>NR%{ zsirvH?=oduyE65D2S?JKcY`;9KTbDqyzjCbTy{9W8$JjwuV)Zw@}W__q1^^YBR--hJk{_M&6ip|ril8{cn5@}aVi+t(@AY6aOnNg4C|R@P~5 z44YP^#@G?}<;RB%(RXS>xN1OYstH80svo16o>+s+v5t z0;r;8?rq3m6%;p;gA+JG0$XLHVhNKmT3~{1q5uN2N+K#LnB`2p-f1+p^Kwm6)Ablu zP|>Cg+Hze|cDyMCsc8j8V1&LS>~)@4k@t5v04?>-2v>!)_<4geVgLG!yshMEMWk>Q z!udYGkoBE@koyJ1!`k!M(BU3aXKiq(VVN*zsOR_k{8B;L!D&4SinoW7}pzX6lGiGviV9X6TF8miJYR67-Q-pK#&H2+! zvvtD?lzQFUe;Szlw*YNd_LO%zit~L$I@FjQ70-PhaLR}ZN-ZMeoQm&e^Ru2^n&Xsh zE~1rLauPOrpP`$y4}sRmyS`YJ(NmZwrQSlZtm5LLi;*iArl$tVOa?{Fk~$Q^Dc7@# zp46`rz@Phm#!o9*c24J(UcfW^tseb+#TW;;eosehA8qWT;F!FOHmZL56UB^96PbI$m_P-b3Ov)#yb?3!lVLLoQA0R z$BdKc4tEUJ8Q0yFA*?7OW74lX-OJq(L9s`)G+r+?jq?bpU4)7b+Gak`eAFt1=%`^1 zEQc4Q(@Ea@fErHyS<%0%A)Ru~B~io$d3(w{Vj97tu~#j6#fn>Ku~n@j{pWrJ+T*J^ z1x#U(b>$L}9uT@3t@L3vGVU6#>aO9a%&ZM3E%}j2zbKwCm|#AL^(UOjPhM?UZv>nr zk=O7GjN&&^NtlsP1HD9qUw)g69^?G+O6XuS$-5#%)gmu)X`fH9M=S%AsV)`vQo*q~ z6XA)E^wNE1%w*;b`E0jNbZ^|IrHJR{J5D0ANQOLj7BS~?1AVew=@zxWbAbB zLmtS>3WyM9-!7xw1gK?Egd24kJvu*nW4K}n>-|mSQe}&6tzv_<=f6f#n>pH zjD!^k839dR7)@$EF>Nm_3>Ft3H^P9IXcUTa@`&|PG+1A%SZ)C*5#(w8xo30V%Y9ud z`L!`}jwws_1(LTnoxpbQnw7q= zr-H!p2q#??xMbrl!tH5Sy7u5$;B$7voa^z?B;8yp3KzqOu^I9aol=UkjJXO(C18%<1xkV_wI zSssP8hV%DVuir^=lTh+CWv5qJ%u9#hN`3MbdY zmI$(2wjR&sY2kBAOQ+)L1lS~LO2=}Y*O|_V=0bp@#j-)eykiRq-#eaKf>vACmK}1F z>$fe-`nVH2^e+MH>=Cv-4UALIYd17ftPKv&p*7wgn0X!Sy=$tYGc8lIdQXF7IF=Hy zx$D}5$to*CNw`;prvkU+1JT4Yrm*ZJ_GrlsjvPS`Gw#oIT>4Qhgi^06GQXw9$py;} zP$$BGZQQIVLn>T}gye=nN!<+=xm972K~@ZU^Cic(8!xK3e`=YQ_#+iMoAKhFaTLy=Jnqu+tA zQy#2>4mj3;*o0?OC0a&I4cTfRU zOCEZpVoE9lotq1=f8U5)x%fsX^o_p$;!y!0hj?30jliQn%+O;9@wx*X{HEvQhjB3T4rOK*v}4b8$2OT5 zA)VxAG(wl-dI!f~2SaL;^R`EASKr^57t{{Cg(=jW;ZYvIF!WU3@KZvMA3wgD*}^Qi z@G(K9_o=|<)K1rY#$5X>CIsN;7;tfBn!#>=LE><^K3l}qDdk~R^Ntsb^>X=^7eNr8 zcYHc!7|#1@i4F@Y?X0i=Z0^Uvi|V<>tPW1j7-TctwPYX6b!w*ZVaw?4Zb89ogEqik zsP7{Z#F#=>z6P|{F1hr7f@FYQt7Rrm4}QO$aMA+|d2QPi+@fUqVqeg|+CQ#tg4w$z`pSs2kPIKnp;ReS&ry;L%IBuD)iBEIRn`WKAn>^4bTv(JYytuP9 zAK+wey=~ALu;>DdLHf;r#x<7}i+rP=x{3-n!rOt7b?knaX}v%*zUTEEqjX$a$4|x4 zCeo*$q3)07YKvzBhIXsVU=QdYmr8 zJ3#lm8hPkyfXVxhz{6juxR4~$@ys+e{Kob+%e(Xpa7PtS`4NfzK4uG8zgmHt@v(1b z=%-(KBFSx!uy19Y>nj<%9nIrL&G>`;pnYs4lRnbXp*->%@cvpu#)$JdSlCU1g4Wb6 zAfj+YL${X|@FQov^mk#^sRqS7Ia6%d+x`;Hopb7)~6|sK+az?LZ#99fbpcciuTLraAM;zI6>W6Kv&4i zaU{(n^_Yr3g=85=99`umGa8Ze3_~%rcZnjpnH-}cz4OjHZ}xdFHNyIdO+rLD{Iu|> ziZ3)bsz!BCza1gxD6zfmki-DJ+=05X1Y*iP6%uK`uTp7MDr?GYx>z-7KK7%ct39LV z*gC$KvYnmDCYirV%WKlNwvQ2eo+IOF^j;4YKEiJdcF-3V6{Yuy;8MCAOFQk0j^CR? z?Izn~^g5G4+<5a$xqbNt5g7FnbB+K-K)SzqbTEVJb6t-g8=!^dRpo44J+prE6Br30 z!hD1=W~`PZb>EB|!k~6&0EcS19xm9(bxaqr#od8_4J42Jqp0!S9FC zp3Qg9pi}K8H(M)44ffGs^v%p)Wv;bj;IL6vP4b`CfKM$I{m{UM8Y4w zZS#EHpiJ(7*c0WgsalWZ#+au2Bdg%^U0C4(&1{cXn;bUB{%XgXKh12H<%tBh$eQp={Qaw!?uXO!lHA9vH)Uf{pHDdHXgEcdS zdhn2nra@=%giH;{#OyaP2S4Y=jZexaVwgG0CCNgm3ORy@>j0O*&3B*APp+QHdom+ z@7Zits^`%joU_Xi1()?o?{MT7 zt$2<@80MF}=^0^0!x<2GxVye?&84<4?81DWI#S193)IMua$n6}N2!?Q`~H;=c>%6J zDH8jlLl5lh|`ZiM5-tCxW3T*09?JjxG2FgWJ(CjSC+qY z5hL})@<@mTo)+QOZsGEZazQDObT?s+G>#tC zHYq~I{Aun>*(=noX9)8GSIaualhcp;$9fMn7e}_d70I@)iY+47+dCK!i9URIfhtNo zun)F{r%!59+qg;322rwen;Tr@>`%^kKJj8Zf3XbG1mAgQoYZf@kY@Hx@ZOpAEy+x5 zuug}%)aVn26_`?k~L`?uU_Hq!MBlmOH{)p zfz+eKzu)kM$?YR=xqQciNZk%Ahe%WCk87@Di=~YkZk@WS3PrnvDVMBJ?)UH5-sX-E z!oyyY(vEyPaP{igm;vgDD?mOT-9Opz`~lP20h><_kQ_RimF3ITXWih8U`b~c%-qgc zN9U3@`HYUgxD<%J||_T!5$Bjxk4rct{A z)mmO`zDbdC-8PZ%+vRHCGlQLxhI%IVEJSDuYS20T@=wAEu(`nf z#EoS1qK7JWoRZnQn+`3M!oy zPlv<^3pF6|_KdI;;7vym6Fa3CGpU5>N(Wn<%g9TRX}H!5ygkd@SU>B5ScO|j2cDA0B4WWRwnrnl9MC!xZZ%;ru{!~LkmIeI}F95%D zxEaL}$~!fy5ZcX;RP+&O{DnCF~4h(r4b ztoe;St{H>YUQ6=;1IlRP=(Gf>8lCRYL4dv*dpV+h%S^SwmhPx!Ur9uu||nlxSypSbxSj$$Sa znOR0biJGyy)knP*me6|F$V0(poOc_$oZjeoPPa3hL8q1QN)*;UjS5V0zyB&n*(W;+ zd(1TP%(3+ipcPy5#f8XJ^JQC_jg~(0YV~T{p*bxBi(kO3;m0mp=6)_aTk_M4cOQwj17&_xZ2 z*$oEuJPz_OO)J^IT*mf(ko&i6dOE9L;V#Y2QR_^}X4!*mmQ8e;Y968Ig!W`iNV>lw z-29cm@K$uq^O{WGMPaGsJQ|>0|1aH-8%hSCA^rmk{NP4Z>%Jcu2hF zx`vhIz(`{+vRs^QZj{;mg~T!QiR*+YeM#iG)KhU)M_^S)puP*@$Kb860TxW>HZonS z6M1EHh;!`_Tiio{v22g`k3eOW=Y(lGfzL_~kwR>q^NpSL&}o&7w83Lj#b!Q_Qj^d= zUl|>;tT$-*ZrAM<+e15EDk%_VHpfxq79H$X!o>M*vqX$LaC39|C zt?Snt%_f}xJvWnEgzC5n*mYc=Fxl_WP1ZXiPW$3=kA19Vd(}E^bHq>%c889lw2WpK zb!)7F3uQZ|>RlZPHoL&$?yZ1h6M+pzm6T3cXT-}Tm5Bw~sX;QtJ_gejBzSqqocljti$^+jI zpfbdU>3h7bRftkoJ+`}sdaDt>rs!w4LQXgRl+Ij{783D=!QOEnFy%xC)5G!hEUbFn zM5t56jQfk=Vbc_>w?{^#xZ|$_hON?oIy!k??^ObOX3lZw$rZe~<(`I1(m%7lLNwX> z2J0rCI{?3US|>9@aL+PYuPrVp%U_%!Y=hhT&6##@->5?Tyvy#-^QdK5kdgzq{e^-K zIGO=T?Tpb)RP|PkXoXz#)3+tNS!89a(&bw#cy?Ks>-(IAw$%%GZUOv9TWI0Vs<@H* z>CytR2$$RQ%j=p1%S(h+E493T#zZfFmQNtx1nWQG4O6E*%!8|`tDYE%ape*e0ODRxl&R&1jdi@1G$Sfp<0V|>H3XY=dm?kP)NOii3nLS7 zkq>|PICuO87w(0or^8qb6iK?$Y8@wR@NvwV=URtU(aoHZPecE)hb|oSL>iUlRks5E z$DXecKov=3xXIUyNV`kgW#mb*tLdYrAnK4CI{6hpjrF3Y`-s;sDf+AzsEVYfA@qR+ z)!zN~s#m*J&PcuIQ9G_-8krc{)k*8KSgc`M^_>Q|xd;RPIH`>G6cf}$ZF<~wXnL-@ zxze!cx-4$yaC9IDnKBJ0uk}t;G?Qp<;2c`X_Hfj;H1&5H*muMo;(rTc-}5aSy&lob z3xW-R*3VV^2Tdz1;=M=VzwhG#t(B>J#!p|&Q0GsQ#BZ0~H1T`s+i+b5ww+eROha2) zS;YA7TgV#{#+1{5*e*s&+m`L8YZ?ea(W~+|xjofkRcl2*^duN|OhuzmX8~ac^BRkp zMn|05g^D+r<$<@?L*XOB!M4p=<(X=q#D3^r^8YbWaSHzHn_e7bZ*jV&Qy$}rx2&QL zoC8qBRPqc?Ea8|i%ZVDt+U>VlT!dYR@G6*5_)UWBYo;&zhRdBi zTOBbfoQ8Ci{$iB46n4W4P;vq@Ey@>NCRw6#jn;n$PhhxI1MbTOU{f#T$T*FP%mR9G zZgQEz=KDc03hv6G*12JC9_82n6fREBEP34SXueORGx^`lqlXd4vCAHTdy^9REenD` zD@88X39CYA5iADUOM7MHuR+*q5$2RfF2{{|)bFJ@wUzTAhRZ70lknzUQ_5E#ait5i z?f1FwV<4$;w<@@-JQ-KAOYx(C*Bs6rLHn=3`f zy?>1co{}*|oJp@;L1BkABuP_`FH8QxmRteLco>x-zKRyoeoPV>+P~{5y4Y+~0zTIW z2eBQjL~{WtSE}>mt2TDuB&-`sL6>CoR=|XK4F}co&>)M^mi=|<2l;avMtQxeyLH5J z!feJx?c~`tMIWu4yTv^9Ne!d%Q>PpT#3g4{I8Vg7X;W&bXLU&it>An-;Z!Z$;XrNd_c z{Fr7zZGEP{7oE2)AuzX?OmJ3llP{5!V@|uss}rAgd}DqD29C(q?&713WDg4~s3xMH%Bij&q|&am!%Ycw>`kV`DDF zANV&Sq+uNsQlz;PAcNL-r{pScnU5cIQ#<2BKUJ9 z^I%DFNO)jvVb~D|i||)Q`wddt-^TQe=efHg{D4RjQT`()wOdoC`u*#!609cYct9TU zyMYn^)_jLw^E^vXiy-HUQ?Xm%MZ3x&Oh{QbcQpLFzs z6wWOXxmhTD61+6lp_n+Zmd|_GfQa|bVU9dabKb3?J%z@y=6vb->JHjt^S-$$GT(*I zcfgQs9(0hJQ^@122|v%x&AlwP!vI%#MA-%lR6LteESs^m0Yzi&iAsPtX>NA9u8Els`GqbR~tm`d_dmF+^dDw`A>vh_eg*`8;*B56Q z;gv@F4bM&cn!5cYgx>>4&xD;6(?9+X@T5Niembtb9FBBr-_*%7`$6`v;Yz>jgyi4W z$=8h>`0E5v#fKgJn_Np!&olFnO*{Oi`;iCHW2$uuO;iR2B*OhTJYeHUlgG4}UnqO_ z%EF;s2G?La9`-_riut#JNLqpYxq!x!c;c~#+(_;sjdo1Zf7CW4`6>k2NOg9YqOp~J zk1LI9qQwW2Iei|YDz1hKaZ&3l9C0GzOZEE87JR~Ev0dIhVaLPBtx!uhHD$u7GMiO^ zlnpi9#EJjRPf_j{Y9O82M1+SHoq1s zAb^qwAzFuxzZrU1g~RIwmE?`GjqMXG3Svv`#-#ckU@ODD<89nKetzHK(nB5Fb1^1^9R99l-x z6mVMX!#hw_&}FdW9n;G%qYb2Xu4R6E%O@-K)g8385cwXXFEM>5iehzo=U3r~U6aA% zXH@)M#A0ps<9ZC-Oo!YKfXg_(j2g^gcCDdelL2CB&9%HnRL7L*s)~}6jmB}$Q4+|D zr{WX)t1<39c+KR$i!9!c;LPf!c4@zKyYzCN|31=GpWUba=@g?J@^V8V>^Kx4bln7u z+k|a-MFRf$s5cf^nz~AE81->)U=f3?6M-X2V;+F7qz1km!lANyvA%qB3uM&2V!Mu*^|B3#pPX2`iTJE8n3FVZ3fpg*r7jS-CWuEJr z^1e;&Mi^eTotB`CT9}8nOMGlg>1Z$$KTwwS%(|-dDEI=~tu(hkR(D#Tgg1*tFs{Mg zxfZVPJ#^L)LBb6KlH=~qxzgK9FP7d_^owJYgfb=S!_yPMN={ANW8mANcCSPIwUg}O zUEhwR6(-`pC#X=1r$?GJF0BN*jVpmqEl+t)i%Q<@K?u*3*KfM&eMk*z+}~an!4&|8 z6-H0D8C^49E0msUQMv+F*#~q0SNh0cFnD&gEERSvhXI86QAmPHR>$QqU1HKcX@m#% z9+Q38RaWOgRfK-zWFds0n1bz9FfC)6Xzqq^!{BI}<#Mx98P6~I-{bmj-iwfpwLz2c zX95>-ZYtniwkK`xMfcS(dtw*uZCR>a3&0+(%V_P%C;*q@$7tD4Z&*>q%;!Y5yWCC5 z6Y!P~A>awpiXta+oU2BX`=ZO0SJrkG`02)|N#pvkBK(=NTZA%g6j$>8=uLDR6B>2#6rnQT`1D$*ys2Y`y(BGjmsgw(UIxSCR;cSmNvitGQu zHz0^=rN5O4J*#YQ(Nj)qF(3+}3*_}$Op#`TF9T$WqF!Zkw||x^V@)5&mD0ndR}Iz{ zj--VSN&|4Wjs!-BP;7jyi#+^r>tLFOA+kAs9q^i?7?;0sHKgT`sECIUlp_%lH}RiC za?ueEie10>dh{66>%!Y<;2PsLsvwyVpAl7ti#6SC!rjD>G0drbw33EoZknJ-~&Sj(#C|h(}{Se2C z9k{6Wh0Ve2`gsn-md88pdur`CJltbm#)NueoO6L6$_7ibva?bkE3WX@&q^b^Li!C;8~kNAIP1B6AERoNMmWScU8oTVy!;9#p6{zprBY^2`L~zgwXq1V z)%`ehq~|mrjqeeQ0mcqF3>ro3{2uu(h4<>L`|8g5fN zc9u!U^MOYFY7o1P?AL=bcTM~l{@qVX{{t9P3a8U7b;0|YDDuh}kB(|%jBIi$r7&Nk z$x)eA6i1a!Of#Lzke&A=uCOjJGt}ZG__%(J_Fgiti`Wm5V3#o9zF^<9oXAUO^UkQ_ z;Ia|+?DBs47tHd20J?i|>~LzQ*QzY4)M}kvp*|1irB#&>t^?6Z8?ns-(FtJDaI8Q% zV&bEcc}f*{tDoj-uq^M^ot#kC^T*eRG3$H_)*(J5L0sEsWGf;M~}RQbeQ6uH42=j7XC#;0FA+ zg`52f_A1R6@{SZ13*pXUrk%)+(!~Ubv_0=T`)7J{U2X+iO@5+=X_^|906^ueMO{8< zG@NGB$-jS01%cHLKK^MHyS4b&vy{7SuH%YmN0t}VbJgX4F8yEFA(Q1Z5zlbzaDn%b z)MJpl&k0K|s_+0p=>dmMiU`L@flXesCo5>t5_-wtH+2eDy+8mlsn6C@H=;%} zu)ew{wlKq|9km#TV;hSn-|3 zN*XTIP-Hb&jzq=_{xDZVZH;RiCi`PZgeh)hgW`h^!M9CjUb^F{8b&T<)Mq~cFquW? zNZKOU-;t4e;EV|8zKmA5AC8u&hKsp^h9u%()nPM~F>O|EKDkBWGmkDZB_gc0L@3tR zuLf!s3~?cJ^a#v(?;Q!VMc(23joMvS(u<7@NRV9!2+YJ5#6 zH=C$OY$V_J*b>>kLD*6%+*O@?wBc%A8qd}=d~`9Npka(OZ#Q({d;rMOWjwm82$hp0 zZKg=vlg1oP`>qTP)95omJQ)Ng)OIpu0oZh^j@3mrkY=rtHM|h`0!iOOWy){zK|aI< zKpA4)xjr7?GHR8T@7up-(#ETV3%7M6SVFvCmcyMb(ywwIrDC^9y1U%5Y$xht3kZb< zQ}0!{v%rHTZ6yzvnJ}7nevvY#l=Ghdn)@D-YfQ&8G_pg<+8los%F}=crtKE(a(6A) znJ(A;b{{$ZWsOBW(;ys90D^P zPnMdLnQ}BOqO8HR)85(P>G)v`zDO$~VK4EiII7tj4w#-B74`XDXqdc&@KVzzHj z_T+E#Zu+A3n4j_3uFq>t|!` z&YN3LqU#ZCpyLw&Lf5--V~Df;7wVpZMaJbQltGl0;X?9-3oB!NuNdnwEI@^=(r)Rg zJRbuWJwMm3`-`Huv5wP7Yk;5`eTG|r!W84~*}88aGP}U|3|x-NfNEy(;A%J%`D8w{ z^hIkW2v?$$Y*z_-w29j>YNWD8ByU$3m_o*w=lA|zr+WMWD`39ygCibv ztHeTHHacFh$~%Nz5*%k+;m{B0+{*EKs|LUKk%$6LSV)`$l859DroBWuGv-!Uxo*Ks zpDeiR6GmrLWS5=7zfYZceAo3DbJ|IsX?Pdb-?I;IBBbgo?lMU;fW$}g0?iF{auh&-pjbo%^*8?x6(NQeHe)azq5D>^TWg zQ`nH%lqSIs`~6R^tgJ>>^?FD>4l8#r#!iSLFr2vn@WAN#tQ;pz@6&u~xwLMqKbzk6 zu@ku8dJABftlIrKi=BGDuNI^2I;Q2c4M#Z7{qtQWVXeJI5k7!cu3x|Y2Nj-pTr~3w zpE2$ExpR+jvs!Bq)}T&xtxS!J*F2~LKi}03Z-{V4e5KLoHJfj@F}uu}Pb4gGQF(OM z^Ot=qz2&=R{)>~J@y~M2xG0?{?Uyd+Q+>vHp0V_5>Ie$i(^g(jp16YEk@+pXY%H%C zj~4#_-GJv`=D~}S>C}be8mLPmnAcuhcik`w{iR{Dlw>u}>oYp?oJB@&Sj>uFua;2!)hV`Pf}{Q(6@L%kXE_^h9ttaaJA-#Jyo174s_I0DR=y<_k9vN$bwz~xX42R`KGsyE-u7)Gv=8se z7`N>>6rNv!VBS-1{9ybzEFU}-h8yUF#6Uzp0!rff8!DfBpQEG$roGzU!T>@|M zRH5t50dmV!r|z?yBdNv1MZ>&v`>w>xQTBD-fIy7uK~%?5v@*^XU}460oJD1?4_{h@ zOL=EVC}?F?4sXMkMC!IFW!-Z8rvdmL4s$ku08*5n)6^426E(H~l6OlV%YDXu=6N0DXUt^eq)6^h!#RU4 zqoSAx)ZyoOS#y&qv{!viA^q zsb2pMM*I?`E||bJcnNT_z!+A2lHCL#&7ZuTPf|45j>a_GcDwZEJ(-TX+ar$tI6QRj zhdMuwgi42}+YOHr?|TjH{igdjN7b!4_+yO;ie&u^Lb7H4R<<{{9r3_Jw95#e2?^uMa{z7&dpLgRLmrhJQs$aRk+|7`_A|am`#H)EhyO*Z z>cLdHdny*&SEwsP#;!zMQT`-AhEJmTlva4K1>50kp={c6HS?&?6V+Qq%hfotgajK} zg+r|M@C@)w&W>NVBi|Zkl=5RDY&db&icmG^EaT-`guIB9_oN_}mwr-yL>OotGp8?0TSIcP+xg ztgT7XUD>H-=JCj6jM(O>3yr&;R&h^Vx?2==URMEFi&%K@#aOPqUR%!v+}uv@I=p?qw1BoR`bNlYSgDQp9w*9-N@6QVqAC zIPJM_5$)5JvODZcn|{=e0-QEWbG?gRXpunt#iv47DaSn3Z9K37&RBDy?mI(uUO2M*>jw2h-*V{T$n>Zqp%Zd{o zgZ&G=xkALO6I(cDJMmNI!B*e$pS|Xaki#&B4D`;Jo{434ox@qIy z@hOC)l{L|5+|fx_MsqeIwk5DG`|}~`>`TkziM&d3jYWZh#XKW3G3?YN0k(~J1Ig!zFLoN2XY+U?FM?J7#6(-~mUv!_oB%#*nB5D|fFNQsqH@oCd*bQ)8? zE^!*5ig~bLJMZxPex3_At1^@N3hr3Ck6y$bw>{pkwfz1`xwh%+WM=;7CcM}!Abz(@ zi1j%0U%$12)QQS(+}X@ z-yrV{(X2un#1orsM>xU`C7q*iNG23IAGOSb8^VPT1@Y!K4+coJvKoO6*NY!}?Zf(2 zvm5#~Fw@uG>sVgZt=RAjXbf&9;uugzph$$B8h1PqUJh6bNMhigE_Zz5cQ-@I|4FmC zX08w*pQ5hbw;By|k}_v}e?Fc#6PAYK2;lKUQ(ThK*7&Iv!zqn*w)R~?Hj&=tk32$QFR!NyqFvjZ8! zeJHC&h~J&2^)#KQT)1nVE2teUO(sA6uklS?JGA;@gj!({hkAUEjMT_k{gbzE-|hwB zZH?+3QlE>A#^V+zzyR!;Dy}3^3VZwUHSnzr?Ch1C_u!^rN#eyvM z;gEjGr-Fh<;Cc1&NBJCz18vZKsvl#gpToqbP=MwcJwCXI&i2ft)fZ6JJE!8?9dP^G zHMFym$)O)SKFH($!rs*ADVBImGcn3G?}}`0|*AHjiQe8<6O;A%R6VMk;Gl{Wh0XR zMIZGyvY<60+wD0<_fUli5zeO_^K>)aBfYTC=ob8~84+Fyxle%gzj&-m=B{GeZgO`~ zgrC<;dLR5i?564|4n0A_iE{HIaLA77-i{e>s`P|xU`_O6LT}?V7JhHxo37}_T(Pido_E_9@LUrnoBN8Ek!Ot(KHDP zv`hjtBtwR5$h2Tvf+WI*Et?l?z_jc?{$~STk%UM{0>!`di>#{d>e<;CO4yS{f8kv&Axoa3sD!JP?Eu2ixgI=p%2;pq2eP;N&sfyOvFGfN+gT(TwS64fCqm)OFTRv| z^LO`}_R=1lMU~@eaEe5jbxK3O-^jS>imCys-5+A<0qxkZ&tm9k6%wZWwfzUKjbAZ@ zD6a>Y(?^9nUqzE=Z^hp1m2ShChjsL7951r4Ov9u-i1WWQoT#@5e%6S!c|5^!^n4qp zIGopT$E0d;xUbqxU(jjz+#N$(Zi?VTNkTwA`73 zjAC&imHhiC45QkcE2%dzg9!YYM5I%ZZcUg#r=Af}CMUcTds7vA?i^^tE*zA(+_KUT zrD3hsFAC;zQwKC+gd9=Ajzf;4;(~!nTpv;7zt@5FKXvh9-|k3?EOmh@YN?cD&}}g{wB^%O2jrvG72F z8;geE_g&<#?+RP(D%;YTH8-hnkfNqcd>5~oRuo-XR&KWzmH9~`uaY3(pD-f>V96pS zKAa>m$~lo#vaQWcXR6^v%4_ct-_gCSR*CJ&P40r`lWr@ndJd!YQ29jMD#vm8ZF8_^ zriW|qf|_JuPQ$oGi@NJUKYAN5*h=Yw=@UC;-D!f$QB87YIuHj{i<`s3;>}S5`{BU9 z&GohS-;dWHAj*!K!guy6n375{H3c+|9mEp+kq4DrFwDCZyTVqBAr}$+Cv&i4I}Y}F z99nM}p(q=DHn_-`gB*yW>n(2o^BY+^RH+~H2+l)4nc!{B7MMG%1S$SH*ORE z8}N13M(tP7#4BW zujO7|H`J2Twx4$to(Vd!U7NCfodUe40qBpY@Y{R8{6*=n!6yj|CdcuhYvHXQ)dm=j z_1o~vx;a0Sw>@K@P~3SOeAlGy#eA|UrhU(HvF{4DmcBioGXH?$F8Gg_s3(sr$uaTAV7uo95m*w4(*<~iO*QIhy?wLs+poJ z_$-uxpG@jWXD)QN^UP|VIte(pv2HJ9Rl)un@_DuTN62DtnUR)$E$dc7yB6(I@bxF2 zcr(HwegQt_)ef3HKm$#0{CmSyZ+d#Ch8*CB_6mdh2Oqn)QA8p(@nCvaA=fWh!9zU! z=%Ye^oCq}GTUN%nDvSQLE+b*Jh6Pdh?P>%b(!UT9mH+Ie>V))XsN=ZFvqEQnHCmIg ztm=Y=>?g%smif|&Vp7KK6`F@^ucOk6l`#-E{t-<&dF(U(V=Je97Mxk<;bQ@bC!QC| z)=4ORcWcL?V%9h5;>$)C*?nwTIp<0fHeIZsT&&=q%t}tXEZpFlIgK9HAre8H#l(|t zb}~a`0}=j08CEvU9LKi8r?O&cyMv_-Sw??e`mf-*S4-Qlwz~?OGZr))P5Hy=>cFxb zgAun^QNZ$RV~ZW@EB_mbs#EPHYr3gJhmo5^(O9=;KOXB;%v#fCr8zvAxvXswo?4Om z9_wP;%Y}eN^X{d##e7(`Cw%o0#N2X)BUROPL`dM2gZNBU#PR=(rx9s`3&R+WMbs9c zQU3Jhd_pm>zR0qJXA%{&EIBEIpd1xd^aK7zQ$JG!-{wl`?!w#6hKamkC;TwNG7POI z?}d=yp7hKWIlc#D2Y$=CNdg`r`mE(rpF0)JYN6fO=qeIa9fPUX?1g%4=uluA=0teV z=t;j5-e31JbNHCG&$cNE%2gi@|IaxIGCLInISM>qrz%i0kwIFIFP#oU9Nm2~MfEL2 zYG75$GTt)tf!izBf2A=l4na)Hy4Vk0?8lMcTPvL^q~W14#_bWkSZ~B8Zo(OVPq{KY zgPRcFQ7B%0=%I(6l^^f|Y^ngF@F8g}Td6-I!i#ktY_H1jb7snq0hp_10xixQJCo8} zgYwCi!@)-`?!o<0RL=7$&_DQIjiu+<*l-nn@PlQa;7~*f*JYC+EhCa3Qhy9?1l&AB z#2q|vhk%eXU<&KtX#1t4(zt%@&U_|lG?jgt!9^FOFbu}3xQAQe8K2du~I7& zy0YDL4>d#kLKj3LuY0f~Uo6T6)&W#UsGFcfSGrS`h1}2h^wpD9)I9xoh02(ixnctE z`Iw%GL1(~*_@~_GU#blE2Sns%Erte4G~giB)RiS}!M#7lfM3+KC@HGj_xSZ`O{ZfP8p!^LnzB`v)=c za}iBZg%?9lan=u*9tT<`I0XgEDSh+?_zxlTTNfKfhXG{*FpUQO92t zIknS8Uf>Q_X;fy7hh3+=vFu(via8HTURQ^8dgrVJw1&FaC6ZWj!i*WiW-!Gc%DCF* zexB8*%tRr~=TRapxgScB?q8znZWe0x)^~l7-rXsCa_@}X)wp; zLA@O~NvE;(>;h_DJ=MWN#fbH3u$njKOT&4WCaT;kJoT|jA{*~L&j25bLkyR_Ui{m` zP5FH4WB)!JU^l4Sb*rMe7txJryFW*gaKm0?Itq|ZcA8cTypOKK!ghs8#6(6Mw+v1Q zT&m6wxf^IIyf>yjMIEpD#`!BLs$JeYH;2}@+o4@Q@v?CA=`v2v2PAal$vn2R4aq#F zmO_e`xIT;={jkXB^hyV%=Z9R-hmpFm*06rl8WIc+a^7R@R%0QW;ztJ&r%^s+*jYBL zNfH1Km0A6K?pc6e?FDXGnAucC+_w;QwTR}ZTLGln0?pmx4hHB4wm1xI zKVX362Q`aEs=ilr8_g6QCbxAM9S&&9iu(2=exuIVq=duaHX|_hDjfFZqT1+cEhpB@ zj=j+hVsNtxH2-Y&MZ$7i{oHYgGfca}ak1&;;8hgxLo ze_qJ5@ldmO6_?++gYQ&E=n1@N2UJ*RvLlcnJ75t1~{zH8%O48jDmWQqAzyLltI6JFjbKU zAme9n7e&%iUos@XncaA9UmW}+%R2Ms`ufLgORVm5yj@xE+0Fe|wV_7;RvCxxw>ROj zJHyt^jh_1D&x%@s{;&gMd=B3c_sc3Hi$P1k7d(y37@SAi2kpJdCgkU zCvoST`zWnDd>PVI7dC2Ol?u%>zqYm}EV*XV&Xigy4ck=pQ$O5bir82HLVxkm1=7*n?NYTR+zF=eN1EKs7jrwW)?>T1a!Kd$R0N&~ z{pDW|*#zfGE8v~)7EGk~7YJj4(v@)Ha5;*Jrv7PU+jU(LFH3= z074MSaK%pSEM`yJm7bNVp}D7fhUydbrLzPq*$Ddb;h5S!dX$1|qW`A5vZbrlUiLE=hEL}cIcb%`}DtGS=m}z z%BL#SUlLL7NdR|GmGR!zeAhm45|P8q#19X7N{>1o$6_IeFT-9>!{2t48y{uJkM{b{ zE%mUnDm{CpVv6T)xSkm(cGg9;jkAw1Nn5jyyQhN3vHL=xzvTOmVfD(x=5hC3DLDRa z_)t4V{S`!LfCy8z?K%MtEytBYL;-lXic{`XDy?d@T`m`z`o~38>%yQDWV0ZZ7zE7U zMSM9vWAZmF`-)1QaLZFQ?S{3QPs!fAHMK@fDb+K!wHT!+EW2d@RWGaf8xv)f=w2Nh zYDu%1&dMrt)bbo6)lM@(>2@lRG!smXe`+F}-!J;_&K4chgF@M{0)t}T#tr{aJa4De zAC1hyBlfMO=A1>99mJkz`j14gNQqN1+2x!@@J*LE%>3Ai>}~9=8QXV_O0H|QgN&K~w zFj*1oF3C}g8#&l#!6c#0!qaZR&NRMSXsF5J`34J{;0+&0PnOHMq59=njUinI0BS&$ zzr-9MH@ z538m|wURj996ELe@(&W4V*r1Y`|FIz^}Ivs=FuRVJBh@Y!hGxl+=_A9`KPHYl#a6PgTO$;WTzM zMQI{Ar9|7iuIC5ViGX_3+LE!)y{l6z%Rzu4?h3}_)CIKeMiMFSyj7T53dTgkl0~_IeMqyr*sRJ$3xHUxXv0iO2^seZE$#mgqKi8 z6h>B(+sP#Fnl2b0d~s0&UrSldb*oHUBHWvn`VI5FSg;=;9_sr4nm$)iC^qw;S>VJm z4dNPqGWzWLB=;_g=s81O@f<2F)}RW=)SNd8i!}s6cP>6YDh4_vX1>F4iqC0f`y{Z! z037R+R!-qCXTY>xAT))Sq>a+LYsfY>TS~2Ip)$?G#avSHEguY87H*Rutp!W3H5vW{ zlFC2NaA#Gz{>q~%UOMR2PPwE3^vL6@m`4ABQ6kwP8i@dKl z8s1r?c-3(1V^M!+I^;)8i)Qf)@3YFz*eZV@FYCzGv76xF0t@|6Oo58^xyz;1ask$5 z4O^!>O>HwAs1L)!qdLeoE-K~IESnDms}Uad!c2&dwgCNAPsH4rV37)6c`0M~bwWL# zx{l{O!@boq%2!#dA!((Pkw@xYNbWMhW% z(y(HXkf+U*?s>2vHi~kJT$hlfQAhTIJ3VW)`fiQ8^lSXLEhPwboJ+*FQ_c*FeD*K_ zosl-l+EgB;Rwn%e0X{J>CDoKyOywRh{*t)~JJc;xK}E~NyNB>+@XyJD2g z@3tu*I?ojw%8VMCh&@sjQH_2w%j!w;6p?XF3=sZ11v^1png(?6wBc19&IBBt*D=4d zd+d8AB6b)d8DoExsA!Thhdrc?85^=Oa`3N#^J#mSgFk1>iWhrgmWL^L%&R=y7gV?o zKqW3w6x{M$wXx|l@>_;)S8iPb2i$Q?F-(QI&Sj(7cDhz|U9VtubL&mVJ@YU9fOAEB zz!q_E)`iva8z5ey}*&*(})vnbs<@mP~euN)E+(|54N>dRcXQMFa;Fqd}9 zgr5g@iN(#M2;pCp62Of{>YpA)R*LPB*3tfCcQ!8lvG?P{#>HW)f*c@=!LK<&74XA* z;8iT}a8D8J+n&c*6xuq!V5NA2hxcCP;eP=+dBwOYZ&;aM<>8hm{X7j`G3-iOIn0wc z6>+KKx*d_DMTFD7)B2Ro9v4CIUQSR&bYJ|=8g=xre^fjmEE97SnkqdT<` z0H&Fq(SZ|8*RDpwCa&vy%Q5vRa_G5~hT%#O{i$T+)8PlN^5Ck^{=0NEH(skJ6B6XY z4p%F}iACf~&cl!^VYikVP3iV#mwIr0(MT6y;lj@X2BV4 zGKP*Hst~Ej*=aUcZzXu)(SWwN5Ks9c^ zTvn*tgQxrW8e*s>F>A!idbgT4g>9eJ;7q#)n2P(Z+3DOAA z6?*}`$8BxtM>b-)GiXeIuQ=Q2?s}cS??#`pXc<5sfOG>29eA1q<40z|^^``0DChDgLg9*F|~DyIQuLVAHDo8-%>OFgDB zf%_jcOvnsuv)5>RCEqj*p6&_I68vfrD*M;4j?ficFpoqOg?%NEWTu%Jari25rx|?r`{Ee{^8O7q7cM9L6#7_5n{9@avXpW zmD@IUA}g&p*p01bw$3Pq;`3aO9?ZP_2lnPzFI9M5^1ux-XIF4mu2fTuekQ zgU5A#SQ|H5)ygnrF?=zxnL+MybySr-mYyHdUoRhqDux`u@VlPdXPlz#SHx;Inz{y4%pz%h}e4e4dNxnR##W8zFq+LO6&vb~Sf;0kELShJcd{0N^3 z%w&o-02sZSai^;43Xr$R(T-!=eZT*~~m<<~B zjl44NOM6NiG$w!f)1t?(TIzxqGMI<9G2)ut9Mj&zcMGtgtj%F$a_zQpaCc;qo;H&> zrhWMQvDTE*rWg5XJWKshW-H}R)oM+87fsKX?MPMu#qT-GDDBu_;#olzEianvmAriU zjO#j%@)J94+5khWlYmaU4HSaY)_%+*z5^KbJK(7_7da9blo&bFUCL29*F)bg?*~5I zx$VT)^1l83A`km_MYJOYkNaTQ0drXCITr7@9fB(BT^n>HEQ8YQ?@HCKAwTZZZqsVd z=y@}xkE*91`YiLYEgTz5Q>ZNCW|^ z@#0c3r)ALpVi<5u z#_4>)NKmx$b>1~^S6O#T#T4>CjMN>!94p33{XWq>kl=Eg$!=~ZUDDj6!AYM19Fhkn z;U~|X`{sT)3yx%%cQ_$6FD6kk&%np1ZibiJ6%hT!&9B z7cJk+nRGMXWjAEFmB?Tnch98C>+Vece)3CTo9fVukrxWg!7oAEdos|b{E*u_{ zTQf6D3kzS9DyW42xAMuLY}fZ|!sXz#&cGiLEy!5^-b|^OK=)2jy8>SU8omlQ`^D0) zmIjl;K^te|lcC1q*6W8V&AKh|bF3M%JL*^~$mQNka}F-UV{@0Wl#g^|?l8;&Z=tO5)2TR2e2n!S~V@@?3o)WUL&o#LeauV< zY{blT6afR>HLj@MZMop(pRTN|2urS*^a*!tlQ{zCf61p!urW8K1x{C*x!?t3c3r$+ zVc{y*S+%*Hxn$7~Me?mmnu0y|%m_|O>W;>l>UmyBvNc_ASb7#eIyJR0J3FZ{jsvfD zwu2*Og8e)-UdO9`5Z{#sc4I5$ZYuFw%DLsKgayiGf{-A)%LGP!tgW!?5^e27+?h^o z5^}HkAQ*nfRlb>FLjONwUmj~&Qr>r~>YP*Cspaf<-?x7IzVz#Dx_i23rhB%YwP#_N zVHlVh_86G4z$S!A0LOu#AsT}n#g5G;gs@0RWEtc{5fH~LA+nVG70I$Ob{5;g_J0wn zI_KQ??(6OeKGM70dhhn@TVGXu`}g~m_xtu)y|cuw$h#VHI#xWn*|Wao+-d&$G1ogs zG$B}JU;w5OCKs@vCKPq!wG1@(nh)FVsJ89D0X1gs<+9&u1*Dan72%u0=$Z^46d{vt zugalh4%K7gW8;YuRU?iVHS+%bE~6HcrPo+esFRutr$m(39V}bs_l!*@1wy+m7v|CA z?8D9};$pEz@y^jQ&nWul7W(+ZchiS2RjHKWilSW|(0a11DU#Z-i`?9$oGv9-FqqRRiD~d~r z&iXQo54$*n{lL51gO5l7mB$|pMOB2S$1*%mMoHjCbp*$K*y@7(XxRG5MMbk;tbsaE zV2d#2Ax`G+*Ky=H*E<^Pyc4$X2Qtw49 zhVWI}yS2Q$xv=mCI;!ND4nN8}e=K^5%_m!onxi8znI%@YkHv@iQi?$Qa1V-LeP;eG zwEuewq-GW7Be0-K6F=C{Oy03!wKh<@)G9@%SyKm2yK#1ZADn!ANi!TZN#mel_o%6T zACLTSg-N)#_r74f{#4cYZQhrC;c3@J5T6<>>Ho65eNb&|+C7Z(PTC*ld1PBnx4N-F zSl=!4nX~buc`EqBS&dm}Tg1f0y)K%v4l&m8>_>y+n7Me+zZ~)|yGjWRLckFUPEyAD z9V38Eq6kbuEt1>jvBV)ArD!WteFkmkyO%8_$b5GYXk$UugahCJm$JqSiO(gHyjyt94qfrAwTVfsO;9NW?*8=V%0Y?jE1xuEmA) zYnC-u1rd}W$66_vbu9-%H_us}$tQab>(6;1aMpZK9)N9QLuMnxhfV#)(>VmTnL8F` znRSxe=f_``;Y)%qr3`W`?+5Y`EHTW;qX~J$xC%JJ(pFfQ$D#x!(zrRjUhlkcjV12b zUd#k!u@8EHNB>gBXwT<@HT1tz0&8PeAIc;nZ~Fix-88MXrP~#0EOnGmn_D9 zn>$q+Iro!@{iB!c0~qrX?FPT0X)WV!4f~QfOH0OD?yas?N(6ChZ)`rmW}>%`M@fUZ zF5Y;)jW;P00+X^Qw8R+M%qg7b8G6C)3OMd^pJSoNd7apj+>;`>sCiv>rml|y%}uCS zi)bQ(&9Dcyx{=GRiB)*=uKy`^RZj6zLU`k!QFTx8;&~+j> zj%?=(b9(|fLPI~$jQG&W8=F@Vb|k}YV8U$P)AhA# zGlPvgGU2Jz*fY1He)@lN^dis1AwA<0p10?-a9FaEvUIzgJsHnYmX^S1h2c1|)-xTp zVvMm2(qWZ=;GBTg%Zlz#`Y25`KZp9hrmJ#C=7_|`LhqQbv5ueUXV|Uo`1ouTH>1Q; zC_BlANG8pJ@oCa(|AnU4Z{h)>VaRb97|Ww|T5|aQr1Jf|7onSX(-k)?$#u@GuQ#<& z8)ayfCC7rM?A;H^-~quKIib_vQ^6Tf@2`irUxz^pE0CoynXrHg%D*lm^hM}DXU*G- z4OfyMNH~d*KJo0^Y5Htcp=7J7+=$a0CH}{GpP%u2vKcafccV#r-2~#15;(-Md14DL zg}&RIfZo^S)=`-ur20$cx1VA5fBnsblI?Zo)2{;wD-HcFGRH_d7ug3PZsg%h;u z3)8(SN_QWxvVK5G-)81QSl^~b9J?&sEfvB^E?6 zNf4Ph{_#UD+e%w4`48?tA6pB)vIXS2?8JAOEmeb{5vY*5aEa}p#CAcGZ%y#E_q#MRJw z3#|=A;stJXQ;JbvFx)m_x=r3JpnLrQ5=m7OmLCYXW_^8L|7_zN0UMc{g^*hjT7 zvYCwnx#+uxv8H8Wx$hQn=JAfSId3Q{F&U5i=r%kC7@zxsFHRpFh^ZKSz2}1DEZ373Xsw02``}uCXzbkz;q-3$Z`ihV2e=~QCY7Vi|;wYgbBo4Af2BwAHSDaFrQb9ZuU6RcBMH%cG0}3dE zX~MEB^Uc>Xrfx%iy%}ympJ4~BktLjRF) z7^BLeM#X!txMp{a*XQmILlQ5nbWl7>?qU=**Pre6#$EG_d%e4S>9i}f?7l4WD$AAY zl_x7tSKeHCewHuTylEzN)ZK(R?g+Mbk)<3v(<9b8Y^*3WO152PpzLhiOKQ7+8HmRQX394>B zeWU!mN@C<^E8)cyR)O3%k0094yN+j#g~p~IAN;h{v$uDEAmZV#%lLOWsl8vuA7qq$ zKtvznRKMARQ|RY3P|y8m5s8LcFutvAoM{_7u5HK6hV)|X^7ClsJN`JwytKZ=O3_ys zTZgAK--FFE(>@PESrF9NpG-g+aKR^VK$KIb9;YX`WRHR>Sr*|{5P(hPbNX$>q-32h z_0h5lJn@*t?Zxy$Y%aTq9*+au(T^5=R|PV{cg?5iRK|H%{*1abn^BV=v%afEhus*@ zHw@&5>Z1vR!V_uK5(!QziNfJjd#&Dh3+^_1{5({l!(HEFMlTL=KvqyA^}eg65Z$zM zb)4QdQMkF=Jz>M4V6+gS&S>{i0~!yE);{O?*DaU^zP^b1HIdh9ew-sZSShwDTef4Y zqzKDq5W9!%LjM7CBw*n z>^cdVN?J=X7}OW`!MS>ZUHV`e5nRmYkh*Ec4q?Dn5&@P=${BtZPYZkNO*a-v7OidPB{g&X(GL=WiQ9( zu?dcR$%n5Qz6o%$EJfb5eLsKCyWb&$d)yNyQd2^IoO8O0g>mhNPQdvZ-e>@Ik4**K zjny|%U}?P_4`WFO#x8b|4)Dp{-4FX=k1=AK;^`tJJv3ZgyuO@z+6eMwV%Ggp$hnlw z&pFJTKVuEA*H9Rktco$fGMe8#>c*Hwdu5v7=9BQj zD-R$O*+_gUV@hOs?kltyMZhxLVBN_;04FPOI0nM5bt!liT9|#GOi+|!;Q`+qg9*{} zmv?r~K&qwgHKbEbxb!xB?B5|kT$MGbU~>1$ibQI8k+|xVpi|GGBE+>{9ieK&oMZMR zqQ1;?R;2Xp`sV&EluTf+CazeVimVaD;Hm^yk+F0FjfX~5L)28#G1vF2iSgZT!kc(3 zj_X-AwOq;fM@Cc*0Ia%>+m}8FeI;pg-;Pi8P_Lmq@+2x)2>v9`^jH>x&B}g0S5PVW zSdNb8;by*GFyrCE(3Qi+M-JW0_RWThPmW-Z`;P5uADT$331x(Q?_Y@bn6+Q7*~u>B z77V#QyT?MAJOeVHnMhhNp&o*0B*NQ~+iE&A?$=L(^J>%ltNWacXQ-u=OP{er_xMp{ z^p)4R(}<*FF|drBc+lY?sBs&wW|D}o#)CyABEqOvtQiie6D}JeZt|id(9TKOuJ^2R zr-_7~xP^t7skNO`;O6YzE!zZ*z-)MWiw@#33<96B4(br!v9+cVlg#e`^#qj!Gu-OX z?Eu>@4#oB99OEt@yq-GC2LOmR@$H;V=i7)VjT^t(L{qEd-jLHUe01^c!LG>Pv$rEu zA0@8Bj^n5duL&nx<<8Vc*$8{}2(@a&tv4w(nnFuxX^@zSLcK(~o{K`oA}>(2wuvRV z8okiq-1RzIiLhg26dM`+IA@6KSC%ZcmEGMV_xjM$EA~2XpwAJ0wvCgQ6?Bxh1KY)I zOm58RNfuC@uICe}&#yO5Yo$)X(+B6qZsvftvCaKP^PnCYqjak1pM$!}q<1>Rk3I3s zLZtEH=>^}3raPg3$-yEBdig&7QI4u9^UjhBx18>V_7i1gtMJd7DemKQMlHY9(*&v) z7E^+P^~J>nDZz3NW}WvxXrlHFq3<0EecPRW@O$QpK0h=s=XQ+))SlER^YKcE@4Dj@ z^Ew@4cu8a0cbIHv;g`9lp6`e0QLAc-3iQ&#GWBwdpzX;`eagq%(YZkmUOD&f@1BJZ(9ZvOv-)1Md4f9HB$F z?Y(grfY!DBP-vuC?7_hlEN5Y(6{4)u+@q; zNzZs~Q*$C>=9$wm^+V6=@L)p&$8ot+uTCS_y=Z@&n89H0vc_bxgwdTzMBKh!SX2_R_eG=vf)FG~&6gSK$A`6YODFDd%F$CpLqQUPuB z<5YsYOQ5KHiyUizmXOb5)ZIMaH|rcNNZAfYBj)D8A9(udr$dgPerMuo+Rs3%rht3r zgW%f9x0w^L22>=Rh@_W{lKw)gHE1@^G0NNRx(LAZz6dMNHg)cw4^U$p(FZ!TDtu5i z2Pwbrf1KN%6`O_34#8RSJy<^uCp({U%QtuTXrOvf#@dBm+fB2w4Q|du-`PC}CXR72 zYLt5%o4Bp-IBW0tXR%8*`4{u?$i>Vk;+G(;WEWe`;* z^4KPoAeK2~Z8JTJSS?@Z!41CY?r{K{d>p3~Q7MVtxrod5Rn1rBa{SWmS?O)}HnU*j z2cr|fPMS>|KNvT#PeN>6Q)9t>+7{v2_!G2h^x8yc#&v13CaAJOtVOE@qP!G`xEHNe z!Lzj>U+GXd;kb!UG&G43pBlf^sK%(Nyt;_?-iUX71X*istBHcm{--*LkC(DW1Y_Av zV4sURk{~V7q5nGP%j(%YV=;|(*fZc+n5?o7a+aGe^NKf}5PbYV71H{T@|=>W$xPHt zPt!1nm+Qpe)#QW+C&p)Ox=)+^bBDe@A2-X))fAjCLRvsvE;NWBMOZy0@99((T;3M0 zPIv^`k?@|49KcT8zj+YAY-{~(!ljWPo(bCAGDY>dqsMhTY%3B&KE@gjjVIsFQJVfF zM<2EouD2KLtr9f+IgzJ7oc!z`BaA*>RGH zs8}_r10l|aqBDlms&t;WqrP?qZT0y$fRu&*TrT%8Cm}JnX_251BX=b9?Mc_T(AE^# z+oZs<`vZbw9@M7|hI=NISsZo;0(VF13f|FrEfe7&1;3sG1Kdv9E(r;72` ze6-Q3lA9XTb_?J3y%V#rvCH(RP6Q3Cn?7J5CXUx;YA>uCSyC#y<1t8>BpYw^gQp3v z1vJh~9JJZ?ed;qQWo;_lUeep$Hok((jXiba138Jwq-rz@G%}Ug+@KNX9y6Z&eiSpD zQZ;4&#PYy5n#Of<70NV{EvzD)Dz>tib|^wrwFle@`>ka#si|I7R7&=(zb&mnT3Iw+ z#<|KnEAN{_E}7ZBV##yR7)KTV-2z^vP)lVezzrm~uXFE?6nS3Hn`H0pbUM1b3R?pj zllGcIlZPzHBbHbh$HDKM1t9Vg5MvPAR)EhMchhCE)c{Q+`;qYv8ZBZJIf0ndj^{?M z=QVw`pIFepwYvA_9HQan-4w+eHQ!yQ=4vKih~Jc8V*s94u5rfz8SeJv8O7X7xABPL z=d>qW^WCTGlHrW11=k^Kp|?;sktK4M&5dnV5v|7D*k>N>kC=9H#$*1|zbZRnY+mpD zVRmdjtLPod&;q!YVRjqtTFa(pfQ6?A+p&paZ-Cooqm zj2#;ud_YByholo;H`|5F6F3H_hBvR7cr9Oj*QS%r%uu1fS=b*yZuyCgTQ_XSX#%4r83w4`%0iULb`za6Yty{>&+OWu<~chC#Q z$MYP*9GS&TNOsMp+Pz01)ryyWw|`ll%c5>idr4~#@y;fN~8m{9z|a+fX2!vD;7*~((Ka%P5rymtrMQ~+cHWKA6C|k1g_l@k!o^tsd}!EeSGCB&hd5s{2dnE_;QXxa|cNX z=@=iZF2em48Ggh5{8S;X6JC}AV0A^9tI@bBVT^SnW;_o#rjV@^8M_ufl0H;!Js^i9$huS5|uzRZbg zdpSeOb0KIAD>=sEk8+%)TF%#c()iZ*n<%}+%U8LcD&g$Lwk2qiSIAbtVF!#I$~ttp zb8v;@+g+O7Uk7rT8r>giE!`{*2#KG*PO zt!Ar(n*q*}-!!MyHc#c%&Z0jmtK4nQ=_9sIGW+0m&1Lq#Sn+J*j=bCX+S%-0-_RnS z<;?H1R`cI5`?$mu>+~EY-LxfGlrBAIoL#~s_Ci<3Rjzkfbb?3<)vg301+fBt=&u<$ zoZ=SY9$Vg&RkB;(_`oV<$~`-nB%btKPfhC=zw?c{37l$7`ci?k!2^3~-SY{F6WqK= zsKdEKT`hCc9B&i{4>Y>t;jm;+v0MpBjv@D^9EJ8)mED2^^k=~M-vDtxgNPaD84639 zQD!G+!$I$Uz+A^DXih`at~IA%oCcIDKTOyJSaOKd78qv5$SL)M&8Z*U4&G$p=-P0^ z?KIDNmNpidk10q1y!E;iAXL~7Lr-M&halHMEw8TrMdh!J7d^ZA zTeq-zH$#iuj6`~IOYFSge7#~0$a{0ey|bgE>sNIAEwjECH!a%e*1xfEp=%bJ@_hF~ z+aBjTP1L-gk`)W>xq|2duax*s1tOrGfw_A0iOMW!;S=6KT(7{fD%ke1Jj{$Z)V{pZ zlYIeX-?$f+s$TXi_UdPDki73@>s$iG98Hk58IsSqiL9 zYegofIc`mwq(0={veCgWx6oK?m+ctMD>z)d=zE%pC>D8MxUj50E}5HfWwr9Q%ByqS z0_D_f$PDE8h;!PeelhE9QOXCD(^l?%o1b(*LQ>*mNM#L(%npFJnc4*(Zo-yv z!}3yL?0Kl>N5petrdAmlFl7#f>VGlITD4kj*C_t|IApGaIPjyYa>9DO3CB2I$G*E` z`>HpyG4}%0@TJSQ&CXy97fv!PeWqi<^pxqM zmh(T%J@|g5Zz8VBt}UP9;{zds0_}b#yxkI2>H?^emxA!!;n|5Mojo~fci>hiT#F|C zg-GmEqZG;+=M-hECbk{;BT{0G|{nJ0M{AtcO9_D-; zqrB_pb>{Pn8cGS*QL?km!*om@w!ERt5`|md&^Ko$u#w0ddgBXzpiAzvI4(>QDoK`f z&vxu(Jl`RjzjZQMURZcp1xY9RU9CO!1?796aS{H4t=xLQC5$jVdzNb@&zj{J+O3?; zk@0V8RzKp?xdG%j|A@0`QxiqlpaIVruCkgTm~F&UJJg4YfRi zQb#%eRD=4YnS?~i2y&WuiiCrO-;r&iX%$DVpN0}Nf=;U4hc?avCSfM*ZCxfYCQH7) z%OlRJr!kC;Q?s%0MHp(;e$7F~VdRO@ob$U7CEUBDJ@73`IX+3N4LhrPJFb6a=kzbS zbTp{fUy9x&7_9dZty1O~qh!QRx%Xt~S-KJ2-ndq;S4yUpzs-B^Y;TLjRk@?+@hC=Z zUuT+lR>+@qxRldx#hZ_f<7V?sj>S;pmtZIZ&q$iOmsPkMh;Yq(V?C4Ma}q?pv8%Xm zpO;bs+?ojXXhS0%dG?TNNeT5Dd(()Vwd~@GzPvC8EqqEJQdNRh}J|D;^i0n z0`|_e^8v^8wYAT3OnNfjI-kPc`H4|guOVShX)Tu2;~~1zU`|lrM$U4cgL1;@p&Rf} z%i76JL)IlRPbrkGdF7Sg#v+X}C!ovwmqFBk>5v*t`3rvV$ST)&EpvUxo*#U6EfRw9 zmHqvF*Muea`N1>MT34a^Lg-l>tnCpPZqPGEDlcT&%5)?sXGDhcFRp zDh9=n;q{djuE4#}ldg0TxOd&W_v0eE?`|4+N+AE9yO)>Ed!ATZJ6E%FG1^!neDeRb zcjobNREHg(H+#&?-lukL>sZOQer5vjHLYk;cfYiUN~9E*-giT`KsZRdeBLlmWLCTsW81E-0gA7?;(#z-x1@ z^aytLK*ucFOY{f~pKhyb2Ss(ISDxO|!pg zZWY}wCTTIO&J)TzEY?4qv!^YRR4dua^>&wMbD|?7jx$3>l?GX>{ zze;GFUv8t9hbt@hc-%p^-xEH5vX(Gki`0*-py{$tX;&{=I}-OSz}PzwV_yUBAN|z{ zE!xCA7B?=foUE15a4LnLziMe{XrP5?b`|fa6P(vr-RzOpT{c&f*XpeEwaxcl-(2pp zxeYcu@rh3p#|k#4-ALHg&Q6Je`}Flr0f$#^oNXdDU*iT|7NM ziZpH9k>CEYXIf_~EwQapG>`h@CrGOI2*x3dz2G)kT9@vRO*}bp5_>AmY|Gp?qaI zD=2QYSd9*0zpI=*32h46O;%xkY3ZJz*X)o4ca>X^XfdIZwNh}FJHfrr{g|#J$9|%0 zFrTNV?isZ3`F&PtYV+CXdEyD~4rLsX<_)fep6aUV$!g+jsV8RNJA%pSa}mksB|gtH zKCi{)bqb4Z0gJ7KPWdz^(Nz1P@|**mk~J>Z!kYDJDfv6M%gt9vf`z#3jaH9E^4`2> zPe8P=I6cE1<1TUMm1&kL%c7-nzU4KeM9a=}M-%-n+iAPmB1uNqi~ujOY0h)sR^n)) z)6jGA;+FRbEn@w^CtAG{JJ&tO-4GdWRmM=(fHl(k8{&2ougC8qo+Dn1#b;UMmqw@A ztW3k&XW^8H@GK&$d8KvNi-Ke%CdnoW4u@565|4*C_ZdXVY&1H8R$h>93`iC_Bc8j9 zb1C!jakK#1B2+J4O{yI{O^vE*WsanTrOP>kP-b)mT)bqm2nKJ!Ut*j=JTBg|FT__> zl>~@`4lqkzugT~SUGKAqehZylF}cloQn`?B3D(-eCGILV-fDw#c&MVK|3LL+%`=R_dF$o| zO_dd`M4JY;#raI(I>V@v8>aByN&O^qXKu`q=hSdkU5tCFPsdtXlD6AR zPe;5k-ZIye$`Q{}|2f|BwP|`d^isjb`s^Xl`kxU8Bz zrKc2so6OlQQ`$AoXB0=Y?wmakLS6VbiJe=MvBP=y^SPf_-#smU%&b{Ai7(~Cc{ggz z7oql@zYV5ok1qUFPcFDREnm)+3%k{{mP^^z7$1h|S+_oK{-qk$`;&UdBz~wZ8+I1C zA48a(jb9q|g8DYiOz5Tzd_fHt%_&;XE;`#>o1y0>y0~##e0Fk|EY8R$GqYtg^;LCU zdezdO!{T(=tp)FY=HBIxrR6_O?TYPLdXK99B6U}Wrro1?^@H)Q+K|9kir34wOz?~< zzM0t7wP|=NWq+BCYc@dYQ@M5REb7;p>x8265vZP**Fp$k5jm7M&#UPbuB5iYgubAz zSFVLc;f2&(e-)g>Uqc9?T5f2{p|2OW8?T4D_O6YeXX~bRs1bj!H#gs_y8odcuj+s> zEgzlWza;YNW(YOwX??iGo`%a~yglMusd&wDs3UL7%FpxZ*1b9MQ@yzDp`!EMu-hA8 z3O<;P*Urkw`wP(>VgWj&O3IFY+$xK3)Jrf|?z|R4sJd^e=dK;p zpHB3KRT=q0Htrr`?vYaR2T*T*DL_3o&L3*a8yjH)AIQuv*QMxRL!J4_L~ptk=D|x4 zLI@#*5W=b5TbH5tX~DM2415yi!+jNbwkvzvD-@qk-wpvnn1x#t`c!f|t8(i7vF>*& zek1IGk~qJkU%M8O>`}(l^#+3X*OCG!v>dv=eem%68dZ}l362BO;_nzeTt(Ybs ziMQW6!Q<554(v+Nm(};?t4Dop@Jg7_C#K(_%9MQqYSZC$)Vm>s5Ng;jU}6uytaXnF zMdOzX+z)f%(Ua5VF@gHE>GwFVV>d;-55in|OW8Qj!D96*5-b`Y(55Gh5JCtcgb?b$ zk`v7*ww~xZaqPtXC(fPtaDsn08C0wr=lYX3LI@#*5JCtcgb+dqA%qY@2qA4inByzlFm*CvbI2Hh)o46nmBVlt)e}UUYLXohYe~KK7gdN-t zV-*XFM!MYF!^@>%!WoUjk?`npY1k0c-xw1fU9QO1cC7#Ca%ouPRvV8+!ct7w$}KaV zi-c_~{AB2g{(<9z-3PjcL%TO^+q&_F&7t)@o$bSe{e9i-bYOjGQDb9MYjh?@us;+R){l-3Pn-4scI$A?^yUpBvzg zbAwzrcYy2ShH1au+$L@t-4YwQ8@SE%`+Ax-om@K|Hb}?rqhq#5rmUy`7jcc$CeF@T z_Uzo&+BwkPcetrFu=TID*6sIht?LpFFWIww+oiqz`%WEbI3S(ber-?d7ws3fJ=Dl^ zt#n?!^z$&C>khh%12ojbwbA9s^xGgeM2E8_hPWkkS&dvXcOC89#&yu4y~=op=&*in zf10tbrJ>8|&~EM^?fU3)Z=n4T)4pu3$LasWblIKs|1eFHZW<2JWw5ynEB*TEXNS^% zK#4D#qKyvip#KMyv<#2g9+{>y^1V%&(}1#Wy>zT$Wf+@kpE3`&G`7?pCAMs;Xe`20 zMB_0SGwy)0ejPN%?aDH`mGnBQ#Jin-PQDJ|?`+(5y0pVeigqa5Gd?BQ6g^649vy!^ z{m;^VUnJg>&$};+bsw91M`YWC=oFoF>R}~i*;*Dr?@a5n&?^L!y;F3S8~FTvOlmf*_6F>oME~~Yz+@6>o`E?aGdsyuEo%v zySKH*?G0?Ky#-VpO}F<;fZ!T}CwOq1K?Zks2<{Tx-QAtw8iGr3cPF?*aCZp=cldZ- zIp;htbJo4<-mh5;s&-fHs$W%C|7&L0J=O;bLDk$joSiGo%uT$~1O*x*yS7|a%RwRr zy-(K@q?uj)?UOmHTR3}_al3vWaB=ne#20p3zdCmpeE*6rATlO`zO|U6Bd%HSDYjSi zcS9`nx?)@3)vP)mBqJ_!Cd}DKScn>kWo&|iWgV%>_5i0&j~;l4@APCII^+`-YL)jK z$eEE3yh%GitGwl+2CwR=a4HB0AE9xBgSPiSi*hqE5;jRzGioFqP(Mw%%oX6!_Xg16 z4zCJus)TJW=yyd8beVM|3N}wdcTZ}IvSbZ8Q|z@Ja%oXT7^Kjq(|z79FZvm| zMF@zy&8yU`L!wgS$ZJ~i*v)j&zg`sxEX!dDv}KM%+28qU5q(>fD+@r&guO_lcME42 zXD~}*dLtI>@!@a}=!q+190_l%`SiK@NNjgk-rj49KkK9O9E*GE=HgTa`9O=J_|QOE zJBAkOwq3h4>xsY+sL`m{K$^a+n*VrW!7FCZOBrvfz=LaGmc=W7JIEs|@33FUHnef~ zw=B?d^rW`(0l!^Vcr)=!YRQR8Ux8!|ZPG^TQu-6Cg!whwr2uPRf#RVY#LE%G?nX1^ z-}A*CxtQFou{>KDSBK#ck&k|SvK0%$=dRGUEP^iQi&}8{Od6jlR~_E!}n)zK<6Un$ULvJC$J`eOYpp zxpwKl`cIj#Qe9;@lxjSz`g`jn&eBYk76%}RzUjB*PfVVE8fxNKDNB+^+B^LKKb?aU z?F#{637EGPW4PX83f*-`kgRbyfi$e#AWePFZ%+SuaE4Iy5XZ0KG3Dfual9F$eXvGq z>1f6g1p(nmm3uBzsX)0suUQtXe#v&rBWl*jL#^_=Xp3{C0E*6fRx?hZ*>%6}TJ_KE zTPd<$)oCsYHeA`MZ7KS)>#J8b0F?B5202$h8R+m7T*sdYskNb z?>)I$E0d_K$?c=e{Pc{OYpajb#2q(zOZOX}F5>y-P+&UYv662*A1?e~rPYPX+bw(S zVS15|ryyc@=UfF5cTwni-ayd#dXil4t@ALhM5p4LG{Ky|T>m9ks%<6 zJZ+8?lQgviCvFqT_N*iC%hW$Yp20vg5@$MkI?S(l&~dKrVQbrB2?cLqopmv!(zXx+D(|wKhD81ZeXCmHNMsW!?hP)u~j=_&%@FCz= zgL+vp1mg#f`FpLKiYLUf#;$;|Ym!oc-pq#Y87o91#m+amu1)%H^yO37 zJMvqu5O$KqeQ?wFe)=z;rNI6L`(MXi^u84X#3j3dlnOV~K{Y=>{>YNpWE*5zX$c{{ zS&6cX{ZiDGxSRD`HFfpg?XtwcAWh|V&<(Ih(Ga1AE{X7u2L`3cBsY)mh1@N!lvZsV zM+VUev;RvdO)1*h#@z0b>;D9q)uYCs3GSyK3OujK1xx zXdiuA-aW`D6yXdx$gWQ@x8X><= zdTV^Oic!RwiB@EF7dMk5F z->C9raC>-`*&jWTY`Nhz_DFaQYZV|8hxYA;v=ZSf_JHITrk!t#gqMgmX?a{b1usQA z5%vK7R??Qrmh>6w7Tp=jEsJaPLy$)&>}`q%6>nPR7{k`#4NO~Tdn#|w_1WVC`V-l+ z(v$UV(oNDW;=_-Jv77pv`dja<)$QlBXTm3MA#)7_g_-4{dfMqQ~&JaOaAXH%>T^-Wck0v z@&C^cGxJ}a0{_Fp!unrlUebSOVfh~{Ahy4s`>WbNE(k6z1`$&W2SYms5eq#BLm@*0 z>o0~3QifK>4kkoEAPWxkH(bWS|~V)OA668caOo2C}dpTY|o&M&eUA9xnE@4O;U@r`q#6U^{z*ap8F zW9SS=d`EOTNZ;eJq|kf%K&TMEk~zkLhU0C60Fc+5dhn!VxI>}VtMMbl(uH{E@Td>lA(2s*!C zv1fm-=G|2r;}+NOf#9R{gA6EMP-Dt(xtvw?d8-Uzx%?K<+?bl}`11!3Y-3L^y;6GK zlNs4Dh#2?ERu|iu^rl})3s_K;nOzTGD`(akE_Uy`AQYI{c1aAHHRf^_8!>b}fKjq0 zcFgrW=iNf6e8upl^yaJ$A5xj&dLIvBv^}b8e^6xsvN8DT(fGDm)6_X46GcT6Q92GJ+WKZov8m75!5b!lK06bW!r63 z7A)|`e$TC{6OI9$mZhYr*nXts6N?PdePTPOWpyINr;aGG-_T9PLGR&p1oVk8hPVmj zbIj{m*f>i|5>CjRG?AB*;&fV_mK-W5@HB+k%fNQi%m^N_Va+6`opEhFmy5cDSeX@w zzK*<603F^!)4vHNgPr*957fLX)lU%;7w=t8`)sz)%) zmyXJWj@?1qqn`Zx5d}*Cd4r?@!WJ;huL)_7eu(D&oq%4b1#X8}8|fT9sSC14^82rQ zI!y#b^rTLb9vIaK6WuvD$(B_g^aC_$xoFBR;Sgz?%4>6zpu7;H2IvXMBob|yAv6uN zc1Rj#qB_4f6EKk>PK+cR9b1p@=wZ<(;H5+8O+*}+ETF2d5lvtb^~ha5j9feanWf;)iI9*??Z|%X$LefVF^L?vK(lgEY%W zv7x?q=7liZjTy3R^J#;l0l}7A^Yc!8wx>__?DI z2D+mY`e&>-uiMTA-asz}-;gau-@HG%dP4pd#2pfh`}CH8&jW@lWUNd3g!9jbBS8;> zD^dbqSacnqU^Jb8;8yEyNhF;hQ8XQ2sF3n5{+`*jm}@$hj|9RVPy~VxG+a?PNq3#2yx1CqAz!w2p2HW;0b!w{V={16?$1Kv~E4RXuACuUnBS^qzrfs;7ge=!4}M7O<%_4_G`BO_-FLs zwhgY&{(oRnA?dJ%8lY3M4Oj|0_vW(7*~X@cT72{QhTax^CsL5ogfnAgwR&;E#KO_g z3Pp#V>*ptC8=6(vdDD|sE{5Yl31|JCYTS-LKr)7km>p>*GnwlGQ`{f57q;HnfsY1G z1p)ZUyj%XUyGBsQ_FK^|y7x;zuFh}ztfdwv_KFzwFUD0O@H|XhY}{c}x&JC2DHYlk zotC2z)F$vR_kYmf6!`hch`I4tl4E%;Fb!Y`Iif>hC43X{ahEoT6eL8Dko>13UOFGm z;rGWSHRx^4lRYp$I@%vS2H>?v^AnjT9&2fZ6jJ@KZko36ydkBPI??@FLI6_ z{iFBwl<+g5?%1YWDOC zomqv$*~?z#4CitoIcLwG-HIkJrT9KU$^_JjedRBQd z_sw|x+SMqkNk$*9mqD>wx-UAb@#(nAGzt$h>B~TqHUk@8rf|V?N!KWcJVYy~Gr@c_9=mo`hGIeo_tM0`)^ISMi4%%vpy!{gza}!(N7>UR z++Q;N!N196&6NKS6okC*GwSKsqdb8n4b1cWJ-axsO}*?O4Nlodj@D-pg$flhHWN9) zu(%?M-E`)Rnr{wntq>HS?=<8yH_n9}zBp{ms~1yJ(NWR%k4+ug*;iHnj2`-s_LYa6 zjzt)U+iVN&_aD6h@lg0v+e*NM{8#jKy)0t9T8W}HcF6e|(8%Rf%)kzHryyQ{+1SO)2Um`Qn3Ie6Sn4UtR6#pm zx>v>-OM>)9n7BtOlcX}GR0Gqrx%C)eQ{lD-nK(;}7no>D!>ZQSr+y%lkG0%7&L}O! z$KRz}pcXObv$zpirczLcOZ!UHMT#oz%U4@MBVxk-f_JaZJka(g!o$O_>XJ4k@1Ep9 zwJt1h@A=|tl&j=wq-jgSPH_*>=&qMRk$VQ=8|VnDSLfWjqDE6(e6Vj-nc!$XcR`l^ z&7l{bZdEJ80^Ov#**$V?o}+!#n>kS5ll$GsK$)6clAmUQQaN@Z4&p&Fv{*dZVT|~K zXm30;)>N^nY`38w1(~IKYU6zs4D+u)R;aXl67wJrr(XUOQO0KVJ#E#b#Eq0}=^r4) z$T@t}WyGedv0^l%w^3VPP9meeGPi<&5@i9RH!3}C0A+(IQ{=|0qExx4Nu#WA7w8@3X`LX)p38Y0<+Y9%4 z8qCh2QN_8&DkvijZWIySF$XV>T^(_QjvW^wf{rgQO;Y!9!j_k(rULetk(Yy@Rxl$? z1sv3`S5i~0L>>KQbD>rWewlJ(9v+TBCmc}4)U1d8DA}ylY*pN>@$f`Z4Cubt@0YNM z$k)%e@u67(F%gEFtMVTwh27`s7bq^#U|x&$YAM(jC|Z0CQ&RwZrZy7mWiBd=2^&z5 zr^hr@$cjY>RQ#jBPfg!*<~iKQ*dBcQaoD@_fpI68k=Mr+v~v$w4ZkHA)?i%qy>%Ks z1nBtBhq&VA-1-Q))hiywhBfEu2P;}6g>mL)OHk)a^pX`(CLq)*Qs()^AruyNoKf!7 z0|+}GxOR3KdBbnfhf(!cqFqsUN|T>M8WF2ajl4X>Jj4cqpmJOF6WzKq4v;}bpr!9C zx+>Nc#USP)P{;wYZjeiCi=25y}y`5gX|$a(RsM&>10f5|;H;xk!^~`=n)E*+LfdFPhAGwjH7lt9tC5QRyAo6RApl2Of-h3FLWlbfm*sb9?+S8> zGt}?p4!5|0HrE&(1Jzl^cQ8atnf_X&^t|hBS7MCC4 zWqL_FM43Q|pLf=Va`iVmlb%zN^hesnINRZnPkPL(v6m$+cxA#1tM>Pe-Aj6`9B=nW z^OG^mUn0ZzFCN z;-^LghLh!CGxt+hG=i>OI1lOVjy@VmflQ!+aDJTd&2(J&ADD3o&D?6)?B82fb_}j) zhOYRT&I5p#H~NA+`o2x2he>W#-EF1y&DcpcU>##wVL0PE6S{4A9RrTFjs@dSp`8&7 zkv0u(p}pSgjL7yG6MF+z2Xwkmc2LjzZU|~L8uVlJtMtEayo-Ni?}hJ8G7*;%tHbf zWg9=w#!A&p!`h^x`r`H4R|K@ReyT_UgOqm+YX3ASExj=UhYpK)-fiM5);-|)-x7$(M=@kU688d zJ2AG2NK#57@rWhgB7EF6rl2k7cI&^z1fgXu>wqeCivp0X<7bLT(t&-=%B$2{4H`G;1tl6=mZ3<&7`Nr5UWj<`u;@Q(bVf^DpO`_X9 zLe1d`;#SL%IVd)P_hI3fu%SLJSMmF!>HAdS$5aOF${7$zci-c#qZA< z006y|fXsN3bn$`h0uj@(!VP`Wo3lUtI@yC_;z~kW{kYrkq2f&W0is*)bK`X0i!-@- zKW)Gv(>IS-B4WVS)?|jheR8QtK+u9M)9l0dmon(vs5C z*Sct`&Z!n(M?$1Vnsk$S2uk_jR-h$z)rIv>4hZLZ$=mKjds*q7kxU4n`VPKuktEDxi2H?$P;1N?G5}l1x45FU7yr}SwEt_x81%8y$GYa83H$cq@zGH~{ zoi(++AL?fDbFLCsIIz(6u2a2K`BM+YC-T#2XmKIoMR;-XP%|ZU>QU;fJC#H!?7F&OgS=u#KQ)3#E zH)qm7C+Zf>(Ne&;!I6hF6%IQD?_WF8_#kTo&xsGfYbHtI-rCmBz>wsmg55Oi-FR%x zrH6vss0H;jk)(JW)@nxPl56Jcn(VFNi1(2qg~+&x^-jHmpAsb1zon@c4!*?Q&Ui#Z z#)@)cIgHV(UL4kgWQK-@J!%biKpavymCdbv%xR43Kw?BYfE{8MbSVhls=R+93O}<{ zWlx`&OM#P>2E@?*ospKisIZ~NLcdW$xJ!auN&(?V?4(NXPx5_}mI#Hw$m#w4mW|lS zDtJ9%_RXKh(zKbmgFD?Mf;WO&0xe=YDglwL0HE`iI!+3Tsy(85I01)Yhvcyb8^09k zFt{yQye#E#@q-i5oKKYc8^m;&VcApRVUlE<^5*g54WR`;al?(o#mGL{+P>uyCmAIB zBwx^1Q2tA7iIY+*U~)2U=0z?-{rMXcpDezVBP1JGpKX3#+`ps_pK^NVT4eZ5EWvkEY|z z)p2(wYb46M1}Mz9N90Byd&=fbU3r0yH&+A!UxZF(06o&OEz1@1j(!;~IqOxy?|kMHu>g=P!iVVTRV2_Gwa=9@|67wa51d}W2e{0L7{NziP`#$eGjUYeI_x1wa>bc$CW~EQ04v)D!mJbR*R!jZTCo3-7`4nOnC(g1KO?C$Lx4!0?9%l=%f0P3zDR-$6 z_e1a5&MFB6_=LT(me$(2JkwjSYv-)&PK!Q&F+I8ZT;S$xLm~4u+}(Mcx-r@Gt)itA z4KZUSiK2gfsZxbRR?nu3lW>4pAf!^)YX5Q}+?zZ3&(+dd27N~<$-v~Um#>XKzt{&* z*&Zav#^co5jWPs>o~nI%E|CZ9Cv``v-rf#ZUr47C^Jd2MJ!7EGUbegO+{yB^Y;cVQ zJiDVdqvyqSd#-+;Boq~Q^dnHDon@D!X^%hTGD#pDbPQbm@F{@CJNA$|M4oE92~WAu zV|Cn&NZT=76IE#?x>@{^v0vqP>>>J>r~}Wt$OgZa-ENjmRW0df0qM^@2Nx>F(y3;R zGDOPNDrNR)xS2$=u9Q&}c3SHoQTTz=Pj*^wi%ziz9a(&DhPInvfEXT^;}skuGK~Z< z`2o^)+HUfGUdRBZ5A%FAKq(voe$uIh=zG(7wKh~VyFK9-% zzgbo47-#ltoOQ)br<;&vlGf@FMcjXMQ`d#D)~|_}ogviE?Hk1hk_-NLyH6bMFc%GL(yyGt z#or@A7Jr|ys-9ca?B~m@(#+PV0KsEXV;pbTWPh`?%I&4hVrvKzH>?khCm3}kDtDSj zJhZY8m+73@whJ$fE#3#pE4)ctK4NAY#v+xm7DOa@ZumZ+`(DeFLsSW$QIeK0tG{_@?{c6FJ3>J}pA_{BOa4c!~8h>=dv@sg>L z#o0Y~wc&|X%vlJQBJcZVjF_38GOz}uoSKy;TW~vtJ^T2a-=&r+z6HjiENlYRHR(Aq z%j9zp%xmgdH!9Sa>)@)sc!inP=Ey&!RMp_6em&uV5rSG!*N?U|@3rB_$O6@{lE}s< zFPhdbq@`SLn`V!g*y5G$xw0yjPj&2MVXF(1E(f_qWF@%aUPbN>*4}-5xK_21d}j<{RpHGgv{WE7c04?&uasDPcEdT5Me%rexdUUUia0l2I#B z=Jnw~Hu8=Bcj?C6Dddg0)oC~^riQQ@!p5mM$PzO@P2k4iv_e?etn}=SH#lep$*K~` z(6?uXx2gsor*M$b7oBqHD?HymRA>i9uUKbH$MxlgefI_h&i7q*d|1Gx7>UUC-S<5c zJuC(GVe{c1Om;ETb~FTQGp45G|Bw%rYf}s1}o@mw?v3 z?hTdYagp~f`7DE9g?D5pv#o0-cdjfvrylJMC9fofZgZ@N%^hSi1bb?Z{%P`hqe+fyU7 z3q1{&^Ww3+o#UU(wKslbQVeiR@;ug6F)i>sku{;Hl{?Mr+!@ycn%QwFw33&HC!e%` zFG?f*@$*_3p#^?q3%6sCw~jNAn{2Ovx_nC-x1-7HJlGT`;Z4U32uEZ@%?V%VE>Hp; z7I4!w^{qDSRBmlKcT9~mt&vBYk)hXSJolu~Gug+y!}xb(?>!$Q{8BPdoEpjJhcfHwgTFFZLvKIl??XS-u$Oz7Fna^LGk z#PU_G%a18?I7j-3`;%*VTQxKRO`sQ_8LRa^tzt3>?{;}kFR%RYkbg0GkNqt>wJ zTq>)#pISL{o#QUFv9>|qqEn|=$=eS{cGFeQZKmJZ5Zs^Z#j>pP9>kNTBqos>Rz~}? z=6}qrX*0pSk@~ntmhiB+Qh$7ue9_v6Y?qs|1v=4nb4n-G&?RdKc1emoGE3TL9q=;x z)9if1#yWVH)l_jMZgtjtc-d}RSnA>2>Q$PiIt?1IMi;Lp-?80LYq~7`{%!Ho>SUo| z!BBw}=Vou$Xk!^fv%(1zqgfk{*_Q|PdClh#G{bgN_CqUS=ReCvce1}fdGc&dZSbYq z4`3bbo-CyaGBxAZR`F1r;}H`bd$b8WjuEX=R~d#+HH%lTKFT${WrgkkRnG43A&B1( zi&X(RtM*USA3sf{KKVzn(hxYIAIN>ub;frRS=FaEO{xUlq#}vL_Gk96&V|f@p zhJ**2u)}hCd+rKjhogXgQ4m>v{E6ggH&4f9<5>1UFjMKd@TI(?`kHkUFZ_ z#7x_dCyJHXc3o2F?(&;-Av0S~i;E}iZ{@x~rCN4;bKyMswcFa{ z#wLZu(OqlQVszvbl@*=7w*88p7p`>`zk@b??(fZ>QZP5IGeoSm__@?V`^aXRqqqvO z80Ixa`CEyGV}DkIzG50XXf-wF5 z@w6c4n*}SESCVOud-T(Vey8W`L3z1G+mq@LY_GEr_wCR6jOV=u_r}(Tfi!{;wl7be zO{cwm*jq~=`^lo<)wVAwiHm2|WrovNQ_hxc?lH&L)PlJ&L>FgGh8Y?vFR!th=^8E%kSO)2v%Fo?q(7kYx6!a94h=`=Jt|a ze&@azx7`fdhnfA@o`Ltf& zw|U+iyYoMW8lskLw);gVWp_^p_jm)51v>$rH*N!0*j znkc+Bo>*jg2T%8IoJ+a#b#BYrpTfh~*&h`$@5kRT@n8P==#3Pltb#Bc=@1gfw(V=ECy(K-{uR7aL zr}3Rp{lkUh@_I44>#VcoVAJ-1(si7(h~}TLg62^tO{U{A$> z-!K@Kn4QlxiX!0)3gUA$_xd$XADbpw?%N;El=nO>C+O_^9vpY)8dZ*5dl)Y>H+3F2 z0&|kQ{+Rr7j3aD%%*r8TIOREAs~(bV#q#PK&~UF_NpIl$LHE(!ZO|e@uiOjsI`Bgu zx{hIn$KkTAdE9vdagvplj=R%`XHk;PC7bD_yWq`OVyoh*U9mKyhh}N>c~qTeOR?j$ zB=&QE(1?m=n&!;3)4-WAiUq*Pg+gh?NlD7o;f`c>qOLNL$sQF!auw;(^oNtjSavT} zkhADV&Qn$Xp>yx&wX%1o*9&P~gk>LVFN*WC4F``8R<0WR%vCHjsFvD{e@|MbPG#DafwMtW+og@(X ziq4a1Y3q)6G3eZevY96emB}f#vOLmKUG92L?h6v)~a|<72xOjcUhHKOgWta zWNL%4Q~{LpVM2yU{pt!WOod#smpmtz+OzjOv*)v#yFB)*_M@I&?PIrIW9(C9Hl;n? z@(pa_P5P^1xh`(Z(iSsA29Tc4D?q^k=6P%cG0(RPXAo-ob3`$aL-w zdC&>X+}CmE2kMCGy&9)l{-MUNj4%I~rhy@Ab3n_IP*CWfHicZeNB?c)G8vN@Eq;!D z({4X^t}l$7;K*Hh6>rz)*tzHm{Y&OhX10fa?|GGiKx{bAPs{7c#eE7FzSdnqc>Li8 z8i=F_TbtX#3+6k2owuLeu1SL7xkhB_IFhfF#avj{*M$N59mWVx3Gh6>!kvRr?U}+s zsCAD0C(}xs%0~6biG>s#(x135Jqm!pKCFfNBZtKHB*fd|Coew!nh-fk-E!KQkM0Jr zg8hhX`iC*~vmpdSgYs`7U?B5|*3R)D=lH*j3ma~WMHy2gqF_9l;jiKZ2tbTkH;!~s zQ5`qLcWHFC;a3Hwp)%y{#)j##oJZBSl5kNp5=i2BzTp zaBDP7)aI`ckZ&OR9l81yWIvGn3ilQaf3l-4C?#=6ImuurX`o|bABVxAh@lrJc&>@y zPFJe)h=lmeZYd^4(KA2T#64w$lsbHE&3v5V>dc}^Nq^q**)~I?qSYm-!j6zry30i2 zwM(^^X4A#vCHQ4~JgD7ynn{_|xorcPO-n;al<2$_ z+od!kq5$3awL!AT9?4VW6G_{(DwYC4Lj=-D5}q9?t*laPi+1a5tq+(^-eUo$38bL* z9q7z6ZiW8Y^qv~&_g|dmf4x<+g&X{C(WGDNupF8KXhya)V^wOJ4TAj$v9DIxh8v{S zHe**uBiga3-dJ=7Wsry?C*_@0iG$VQn&q8=-w2Tk_Z@z^CD-@+6oiA_oY4>EF)Hj6 zB-?JevPHK_n&{J&=jYSz2jPfvg*Tjo3ihU~DYEOH?2$d;5K(I88uPn;D!(@-$7Aqa|G#T3tDmss| zU&$CKWndAG`-?hD%p4`Z&Te&xS7w}9^ z1`+nYl_;8TaENrP2=besi(0R>7@zU8JkSR6gSnIc{P1XB3dvg!s`hGEM}(K}p@Jce z-=soy?z5&dc+wj3nw3@?jDDJyw&imu#fQW<{~-Tk!@pPrNm=^Mk#TH=ym(iGL~QU# zg=E4b4K++$Cn^US8TLbFNLkGhBlo03Et0(ku^5bE+R)toxT=UI4ryF-n0_oAQs%rQ zK*aQf@lq-6(9WEEd9;rJvxM>HNDM=GXTO8Ze;TrOCrd&!@dJ{M_lmPKoZ9qB2T|Ls zq_o#_`l58kZ7C0lel*LCFp^~Cz?e0u5fLXc}uyelw&|b+;%%!O^~1! z;tBQGaa#9vL3kBI8tJrjya3{eC=3OyAK5w2@mz0K@%zGTTh=~TM#bS2=NnxC%kPO3 zUM)|zg*_Lk7{r@WlIv?sh(+3i3hXjeBacAqJd?L`+o<1n60!oP&;`0|NTZD;j(lG} zm*Av4fqJ6(i1K8-_Euu7#;T){$|LKoKYxr;ICTqr7u0&}1DWHVs(-z0=QyMlEW_A4 z*HcQowP!CxY`OrY09=RnTcVYRsYH%GhDtXjcPJly9-BL|p*rHDkzE_Z0KvYq)ehVB zKh;#XGWF1?<*ybpBG|*73WGA%#w1{;GZTj`xMz9fjNO>)1D?gt|1euk)Le8VJiZgm zrEBf{h{)ABo>ZOmmI5alQ>VcL^s_~v5O*=El>~&nTK_J^%3f?%7vzB|HI8$;9l_$f z(XE{|hw3CUD2Q~Dk?%*o@hzGCdxb|+!fOXCEPXxb91WoHEnTl7dK0ZoUP-D4-}bjXd!pt60%}DQ zCsPxSd3eT&OGSFfQhqy6G{ ztY+-++)PumeqH3v>gX3>LEs&5VEAqCF=LP7%@~_T9DQ>5D9t^;H6DMEny7298g1a9 z(wvYmVw*!th^yc0YFUTlW%b+_!EHMKZ7IhMgI*_k*(uz;eHpFDp;B8k={}5qu#|oG zaO^(0Mdro`x(80jMv{P#y=?ixZ7%$G3KS&(`s=$PyWr~L21mOl9f#O2=Ah8&rE44M zcX}r8D6Pq^C{E6xVB(go$l7!0?&ADJZ}x?&%67P0&n`h*r1Irqg5xd_8R%D%VQZe{ z&mSM|)o4GcGkK}|z!j{rxBJrz=AhtUG{2nDWZw5EmWq{cg5wCj6M1C zzM4=^qJ&rp=KHq<1^|oRYLNnE$2fZp+{TwTnIuNC1HP#R(x9cat%M{K5i1QbFT?0g zEhJ=t`tqf%Hc=I`i=zjfK~a;Oe0xyK$jT^+xzXn8A}zGKC~5VDaReVY%pGmSSWOg; z1R#G%Rr)GDLb2GNx6~#2YHcNkeopBpf`&Ou_8SqcVP=MC+9HJN45tcNwXWD|4dm)#QFx`yz$K`AxHo%z9pe=#R;C1^GCF- z>p~%UpmI6wNZFef&{9{J4fK(%gkD(tQpD74+v#bVvyo(QT70WdDG#56M)++-;lu1_SHPXe?QI3x&dwc<;D#l-i;O z=$$utp0dWfMv=aBOZ$9DOWwG2q&31777TIKC$F4b=fKe>ciaih)+;jKJSS)ap&o9W z;)Kz5jnh8j0NkL1jQs3OBn0V~&d z9MGJOZ3R+)s;ca&;O3VT-#=NwaZ`RdmwSWm91~|7y?NQ8U_J&qYkzqxP~R9=OQvyf zP)B+oHIuq5lp#!UXm;YJb&?2j?RJP&UIF1netP@4DSkcu{$p}Ur)Hyi&@r(T4)c#a zea=&~!_edg0FV0&|Iv|d!u*XrZ8@Zu^9+ds^ePjF{SxH0etNns=HL$HiOPF48m%Ra zS->tHOBh}TiR+feyZLt+>lyP%z*#N&M8`72L#Pkw8Ecn=MuOUdp zTce{V$vT766TC6Ixjz^OuFW~Tl?bGyO;-IRUGj=mLZmnHY|>P(2G zY9nGM0%{R4C|FxNykr=O6d1&6{)&ToNegLky)*$76cAx!V&fNKW@ly=5N2g# z0s;707=?j?AXWg+|8t3#2LAVWDK>VdzlZ$L{c^sLb^OqG`toI-3wX+Scr_&^C#|76 zVZg~;eheyV04~o7FiGcT0h_wfpX7xQs0vV>Ns)dVqn}8p3<-FwB2eOpRdnzV#AHxwNcd+neshRiH zOwR|g#f11#RMA`W(q6+5XSDm4tzJ&; z4T}m&d0Y8Ze`=0|9O96kYe@j+1SE|CW=Ysg1;?+B)WS%P!f?03Xc&_a5miKUgO4TQ zKTZ7dO@ek*Q7tQYSUZB|;OHs=teyFDNTuU=X$FWEp`{fpb^IDNg6<9-QF{SVb0~}Y zuoltWl^9Mx>E|$;^_-7<+vX764G53IA1ioKI(*sSU^me|gpKa`b&q2%%LR5%d=y<1 zyWo@k5STN8*g65*w}ErfJ-~+2w+Wpd5;sl=#fVn0rkEa-`UWpx$`)p{M~w}CSC=tJ zmvY#sH&;2rWLpHO4^Gnu(H31~LtoQR(iT@_-A>b&#ul^eCrbm??7G{M&qQ))8bXn4 zXBq&eeoc8PXweq-=Z4HuV6!di&vosk;QLbuf*wH^oM>Gxf?jB@pwQ%izEf!OO>wS3 zDi^%5H8rl_T>vJ7E?)ko@NkEu3vT(EQcKV*05SX&W~E2N1^;ACYxt+T3n8H{3Qv#d z4UYXOJWsFj%?BM_g0>!&8@$yu4UgcHQz)+<*&E#UHI?B$$cLcSQ`n~-9o3NbO1S4W z9bQZ6rKj$9w2o!uVL+Tup+AM6Ny5;3LrjGL#aNNylp^m*|H|qM0R}NY{?BYSj(o&l zXUD&G_UnFOyu&UHLlS`@_5WuUh=UvPuPmj&7e*k?W#qrJh8GNGIFI3YBG1`D6C;1s z{qMqKf6xBIGZ2R=1ia_}EFyCw$z(^Y4`@jtUdfAvbf<)58=6OJVE49s;~pSR>w zt5=Rx6X8Imbx>2-TgV#EDJe9+Jn%0HT**Q3EM_bmcec>G$d=gl&VP?03HF}jVrOWC zjKE05%*^=m=U)dCD-kOT%gb%zuT%dz0536re;q_t|78OJUv4D-X=8tFV_|xU)%<%o zCN|K^z3%Te=9g%}S2iH~tGdig%r619|52BT{Uw0&KWr?(SAAw?VR>x>y=G$uvA^6f z|L%{4k@>X^2z=FN7G~C0ePLmJ-4_tFG?fA2GhmF=~S zjrmpoKJMA1^}|L{O7m;fb4Al*~UvWDB!gX0D94}zx5fw1Z4To z`2{dBznTvK6A1L5V*p@gW_{IXMn)#k>+6|`4UCQbwT+n(j12(B1_Wbc0%KzaV`Bkh z1G5I1!Ei8x;a~>C@p5gvTGKD{_Sy!9<7GZxmjlDW0*2!y9{Y7&FdQskI9R}Nu!7-W z1;g>OW?r?+3WkFf3vCW?fM7UY_F=EkIRK2F177x+ui6Ep=KvNk9ANYu07lONFMI0OZGgG1!00&ujGhC)=s5t4 zo&&(>IRK2F1HkAx0F0gkUiOZ!IKb#R0F0gk!00&ujGhC)=s5t4o&&(>IRK2F1HkC{ zU;Fk~951i8UfaN|4={QTU<0#0!00&ujGhC)=s5t4o&&(>Ie-le2N*pEfYEaR7(EAo z(R0Ad>#bMg0!GgPVDuaSM$Z8+uR~w^1H%DE&jIYO=K}~v&w*g{90*3wfnf9;2u9C= zVDuaaM$ds@^c)CA&w*g{90*3wfnf9;2u9C=VDuaaM$ds@^c)CA&w($m_y2Q_fME0- z2u9C=VDuaaM$i9xU*J_6z}NZ#1f%CK519f}_w{uJ1f%Cb;Olh`1f%CbFnSIIqvt>{ zdJbd)!vRLmfnf9;2_ zr!`84uycJn9e&KU?d`brb@f;S-%jKCbRIkQnoncrFMW+ajCF#x3*PJ4+#k`O8_%Ni zvEAgbj*Z>Y$Lrqv(Z_E6%FMkDZ~NW7|E0TMK4f;EUoLNdKHVnu-of|d`n%tb|81W5 Kb~v2w6aNc`P(%{| literal 0 HcmV?d00001 diff --git a/liuxin/src/com/coding/basic/Stack.java b/liuxin/src/com/coding/basic/Stack.java index a5a04de76d..4bfe28057f 100644 --- a/liuxin/src/com/coding/basic/Stack.java +++ b/liuxin/src/com/coding/basic/Stack.java @@ -1,22 +1,22 @@ -package com.coding.basic; - -public class Stack { - private ArrayList elementData = new ArrayList(); - - public void push(Object o){ - } - - public Object pop(){ - return null; - } - - public Object peek(){ - return null; - } - public boolean isEmpty(){ - return false; - } - public int size(){ - return -1; - } -} +package com.coding.basic; + +public class Stack { + private ArrayList elementData = new ArrayList(); + + public void push(Object o){ + } + + public Object pop(){ + return null; + } + + public Object peek(){ + return null; + } + public boolean isEmpty(){ + return false; + } + public int size(){ + return -1; + } +}