From 30d72eb5b83ce53b48cde33de54635350a428168 Mon Sep 17 00:00:00 2001 From: Peter Gerwinski <peter.gerwinski@hs-bochum.de> Date: Thu, 25 May 2023 08:31:36 +0200 Subject: [PATCH] Vortragsfolien und Beispiele 24.5.2023 --- 20230523/io-ports-and-interrupts.pdf | 1 + .../logo-hochschule-bochum-cvh-text-v2.pdf | 1 + 20230523/logo-hochschule-bochum.pdf | 1 + 20230523/parameters-01.c | 15 + 20230523/parameters-01.s | 42 + 20230523/parameters-02.c | 8 + 20230523/parameters-02.s | 28 + 20230523/parameters-03.c | 7 + 20230523/parameters-03.s | 41 + 20230523/parameters-03.s-m32 | 65 + 20230523/parameters-04.c | 7 + 20230523/paramlib-02.c | 7 + 20230523/paramlib-02.h | 3 + 20230523/paramlib-03.c | 10 + 20230523/paramlib-03.h | 4 + 20230523/paramlib-03.s | 55 + 20230523/paramlib-03.s-m32 | 72 + 20230523/paramlib-04.c | 11 + 20230523/paramlib-04.h | 5 + 20230523/paramlib-04.s | 51 + 20230523/pgslides.sty | 1 + 20230523/rtech-20230523.pdf | Bin 0 -> 198178 bytes 20230523/rtech-20230523.tex | 1743 ++++++++ 20230523/rtech-20230523.txt | 15 + 20230523/test-arm-01.c | 9 + 20230523/test-arm-01.s-arm | 52 + 20230523/test-arm-01.s-x86 | 30 + 20230523/test-arm-01.s-x86-Os | 30 + 20230523/test-arm-02.c | 8 + 20230523/test-arm-02.s-arm | 37 + 20230523/test-arm-02.s-avr | 40 + 20230523/test-arm-02.s-x86 | 16 + 20230523/test-arm-03.c | 10 + 20230523/test-arm-03.s-x86 | 18 + 20230523/test-arm-04.c | 11 + 20230523/test-arm-04.s-x86 | 19 + 20230523/test-arm-05.c | 12 + 20230523/test-arm-05.s-x86 | 20 + 20230524/buffer-overflow-01.c | 10 + 20230524/buffer-overflow-02.c | 10 + 20230524/io-ports-and-interrupts.pdf | 1 + .../logo-hochschule-bochum-cvh-text-v2.pdf | 1 + 20230524/logo-hochschule-bochum.pdf | 1 + 20230524/parameters-01-O0-stack-4.s | 56 + 20230524/parameters-01-O0.s | 56 + 20230524/parameters-01.c | 13 + 20230524/parameters-01.s | 36 + 20230524/parameters-02.c | 16 + 20230524/parameters-02.s | 92 + 20230524/pgslides.sty | 1 + 20230524/rtech-20230524.pdf | Bin 0 -> 124227 bytes 20230524/rtech-20230524.tex | 1761 ++++++++ common/io-ports-and-interrupts.eps | 3658 +++++++++++++++++ common/io-ports-and-interrupts.pdf | Bin 0 -> 6074 bytes common/io-ports-and-interrupts.tex | 43 + 55 files changed, 8260 insertions(+) create mode 120000 20230523/io-ports-and-interrupts.pdf create mode 120000 20230523/logo-hochschule-bochum-cvh-text-v2.pdf create mode 120000 20230523/logo-hochschule-bochum.pdf create mode 100644 20230523/parameters-01.c create mode 100644 20230523/parameters-01.s create mode 100644 20230523/parameters-02.c create mode 100644 20230523/parameters-02.s create mode 100644 20230523/parameters-03.c create mode 100644 20230523/parameters-03.s create mode 100644 20230523/parameters-03.s-m32 create mode 100644 20230523/parameters-04.c create mode 100644 20230523/paramlib-02.c create mode 100644 20230523/paramlib-02.h create mode 100644 20230523/paramlib-03.c create mode 100644 20230523/paramlib-03.h create mode 100644 20230523/paramlib-03.s create mode 100644 20230523/paramlib-03.s-m32 create mode 100644 20230523/paramlib-04.c create mode 100644 20230523/paramlib-04.h create mode 100644 20230523/paramlib-04.s create mode 120000 20230523/pgslides.sty create mode 100644 20230523/rtech-20230523.pdf create mode 100644 20230523/rtech-20230523.tex create mode 100644 20230523/rtech-20230523.txt create mode 100644 20230523/test-arm-01.c create mode 100644 20230523/test-arm-01.s-arm create mode 100644 20230523/test-arm-01.s-x86 create mode 100644 20230523/test-arm-01.s-x86-Os create mode 100644 20230523/test-arm-02.c create mode 100644 20230523/test-arm-02.s-arm create mode 100644 20230523/test-arm-02.s-avr create mode 100644 20230523/test-arm-02.s-x86 create mode 100644 20230523/test-arm-03.c create mode 100644 20230523/test-arm-03.s-x86 create mode 100644 20230523/test-arm-04.c create mode 100644 20230523/test-arm-04.s-x86 create mode 100644 20230523/test-arm-05.c create mode 100644 20230523/test-arm-05.s-x86 create mode 100644 20230524/buffer-overflow-01.c create mode 100644 20230524/buffer-overflow-02.c create mode 120000 20230524/io-ports-and-interrupts.pdf create mode 120000 20230524/logo-hochschule-bochum-cvh-text-v2.pdf create mode 120000 20230524/logo-hochschule-bochum.pdf create mode 100644 20230524/parameters-01-O0-stack-4.s create mode 100644 20230524/parameters-01-O0.s create mode 100644 20230524/parameters-01.c create mode 100644 20230524/parameters-01.s create mode 100644 20230524/parameters-02.c create mode 100644 20230524/parameters-02.s create mode 120000 20230524/pgslides.sty create mode 100644 20230524/rtech-20230524.pdf create mode 100644 20230524/rtech-20230524.tex create mode 100644 common/io-ports-and-interrupts.eps create mode 100644 common/io-ports-and-interrupts.pdf create mode 100644 common/io-ports-and-interrupts.tex diff --git a/20230523/io-ports-and-interrupts.pdf b/20230523/io-ports-and-interrupts.pdf new file mode 120000 index 0000000..bcd46f7 --- /dev/null +++ b/20230523/io-ports-and-interrupts.pdf @@ -0,0 +1 @@ +../common/io-ports-and-interrupts.pdf \ No newline at end of file diff --git a/20230523/logo-hochschule-bochum-cvh-text-v2.pdf b/20230523/logo-hochschule-bochum-cvh-text-v2.pdf new file mode 120000 index 0000000..4aa99b8 --- /dev/null +++ b/20230523/logo-hochschule-bochum-cvh-text-v2.pdf @@ -0,0 +1 @@ +../common/logo-hochschule-bochum-cvh-text-v2.pdf \ No newline at end of file diff --git a/20230523/logo-hochschule-bochum.pdf b/20230523/logo-hochschule-bochum.pdf new file mode 120000 index 0000000..b6b9491 --- /dev/null +++ b/20230523/logo-hochschule-bochum.pdf @@ -0,0 +1 @@ +../common/logo-hochschule-bochum.pdf \ No newline at end of file diff --git a/20230523/parameters-01.c b/20230523/parameters-01.c new file mode 100644 index 0000000..ad24b30 --- /dev/null +++ b/20230523/parameters-01.c @@ -0,0 +1,15 @@ +#include <stdio.h> + +typedef char string[42]; + +void print (string msg) +{ + printf ("%s\n", msg); +} + +int main (void) +{ + string hello = "Hello, world!"; + print (hello); + return 0; +} diff --git a/20230523/parameters-01.s b/20230523/parameters-01.s new file mode 100644 index 0000000..49a0a7b --- /dev/null +++ b/20230523/parameters-01.s @@ -0,0 +1,42 @@ + .file "parameters-01.c" + .text + .globl print + .type print, @function +print: +.LFB11: + .cfi_startproc + subq $8, %rsp + .cfi_def_cfa_offset 16 + call puts@PLT + addq $8, %rsp + .cfi_def_cfa_offset 8 + ret + .cfi_endproc +.LFE11: + .size print, .-print + .globl main + .type main, @function +main: +.LFB12: + .cfi_startproc + subq $56, %rsp + .cfi_def_cfa_offset 64 + movabsq $8583909746840200520, %rax + movabsq $143418749551, %rdx + movq %rax, (%rsp) + movq %rdx, 8(%rsp) + movq $0, 16(%rsp) + movq $0, 24(%rsp) + movq $0, 32(%rsp) + movw $0, 40(%rsp) + movq %rsp, %rdi + call puts@PLT + movl $0, %eax + addq $56, %rsp + .cfi_def_cfa_offset 8 + ret + .cfi_endproc +.LFE12: + .size main, .-main + .ident "GCC: (Debian 8.3.0-6) 8.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/20230523/parameters-02.c b/20230523/parameters-02.c new file mode 100644 index 0000000..f87bf30 --- /dev/null +++ b/20230523/parameters-02.c @@ -0,0 +1,8 @@ +#include "paramlib-02.h" + +int main (void) +{ + string hello = "Hello, world!"; + print (hello); + return 0; +} diff --git a/20230523/parameters-02.s b/20230523/parameters-02.s new file mode 100644 index 0000000..02bc062 --- /dev/null +++ b/20230523/parameters-02.s @@ -0,0 +1,28 @@ + .file "parameters-02.c" + .text + .globl main + .type main, @function +main: +.LFB0: + .cfi_startproc + subq $56, %rsp + .cfi_def_cfa_offset 64 + movabsq $8583909746840200520, %rax + movabsq $143418749551, %rdx + movq %rax, (%rsp) + movq %rdx, 8(%rsp) + movq $0, 16(%rsp) + movq $0, 24(%rsp) + movq $0, 32(%rsp) + movw $0, 40(%rsp) + movq %rsp, %rdi + call print@PLT + movl $0, %eax + addq $56, %rsp + .cfi_def_cfa_offset 8 + ret + .cfi_endproc +.LFE0: + .size main, .-main + .ident "GCC: (Debian 8.3.0-6) 8.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/20230523/parameters-03.c b/20230523/parameters-03.c new file mode 100644 index 0000000..c3570cc --- /dev/null +++ b/20230523/parameters-03.c @@ -0,0 +1,7 @@ +#include "paramlib-03.h" + +int main (void) +{ + print ('H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!', '\n'); + return 0; +} diff --git a/20230523/parameters-03.s b/20230523/parameters-03.s new file mode 100644 index 0000000..14c10b0 --- /dev/null +++ b/20230523/parameters-03.s @@ -0,0 +1,41 @@ + .file "parameters-03.c" + .text + .globl main + .type main, @function +main: +.LFB0: + .cfi_startproc + subq $8, %rsp + .cfi_def_cfa_offset 16 + pushq $10 + .cfi_def_cfa_offset 24 + pushq $33 + .cfi_def_cfa_offset 32 + pushq $100 + .cfi_def_cfa_offset 40 + pushq $108 + .cfi_def_cfa_offset 48 + pushq $114 + .cfi_def_cfa_offset 56 + pushq $111 + .cfi_def_cfa_offset 64 + pushq $119 + .cfi_def_cfa_offset 72 + pushq $32 + .cfi_def_cfa_offset 80 + movl $44, %r9d + movl $111, %r8d + movl $108, %ecx + movl $108, %edx + movl $101, %esi + movl $72, %edi + call print@PLT + movl $0, %eax + addq $72, %rsp + .cfi_def_cfa_offset 8 + ret + .cfi_endproc +.LFE0: + .size main, .-main + .ident "GCC: (Debian 8.3.0-6) 8.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/20230523/parameters-03.s-m32 b/20230523/parameters-03.s-m32 new file mode 100644 index 0000000..716903d --- /dev/null +++ b/20230523/parameters-03.s-m32 @@ -0,0 +1,65 @@ + .file "parameters-03.c" + .text + .globl main + .type main, @function +main: +.LFB0: + .cfi_startproc + leal 4(%esp), %ecx + .cfi_def_cfa 1, 0 + andl $-16, %esp + pushl -4(%ecx) + pushl %ebp + .cfi_escape 0x10,0x5,0x2,0x75,0 + movl %esp, %ebp + pushl %ebx + pushl %ecx + .cfi_escape 0xf,0x3,0x75,0x78,0x6 + .cfi_escape 0x10,0x3,0x2,0x75,0x7c + call __x86.get_pc_thunk.bx + addl $_GLOBAL_OFFSET_TABLE_, %ebx + subl $8, %esp + pushl $10 + pushl $33 + pushl $100 + pushl $108 + pushl $114 + pushl $111 + pushl $119 + pushl $32 + pushl $44 + pushl $111 + pushl $108 + pushl $108 + pushl $101 + pushl $72 + call print@PLT + addl $64, %esp + movl $0, %eax + leal -8(%ebp), %esp + popl %ecx + .cfi_restore 1 + .cfi_def_cfa 1, 0 + popl %ebx + .cfi_restore 3 + popl %ebp + .cfi_restore 5 + leal -4(%ecx), %esp + .cfi_def_cfa 4, 4 + ret + .cfi_endproc +.LFE0: + .size main, .-main + .section .text.__x86.get_pc_thunk.bx,"axG",@progbits,__x86.get_pc_thunk.bx,comdat + .globl __x86.get_pc_thunk.bx + .hidden __x86.get_pc_thunk.bx + .type __x86.get_pc_thunk.bx, @function +__x86.get_pc_thunk.bx: +.LFB1: + .cfi_startproc + movl (%esp), %ebx + ret + .cfi_endproc +.LFE1: + .ident "GCC: (Debian 8.3.0-6) 8.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/20230523/parameters-04.c b/20230523/parameters-04.c new file mode 100644 index 0000000..937cc4f --- /dev/null +++ b/20230523/parameters-04.c @@ -0,0 +1,7 @@ +#include "paramlib-04.h" + +int main (void) +{ + print ("Hä?", 'H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!', '\n'); + return 0; +} diff --git a/20230523/paramlib-02.c b/20230523/paramlib-02.c new file mode 100644 index 0000000..8b13246 --- /dev/null +++ b/20230523/paramlib-02.c @@ -0,0 +1,7 @@ +#include <stdio.h> +#include "paramlib-02.h" + +void print (string msg) +{ + printf ("%s\n", msg); +} diff --git a/20230523/paramlib-02.h b/20230523/paramlib-02.h new file mode 100644 index 0000000..fcfab1f --- /dev/null +++ b/20230523/paramlib-02.h @@ -0,0 +1,3 @@ +typedef char string[42]; + +extern void print (string msg); diff --git a/20230523/paramlib-03.c b/20230523/paramlib-03.c new file mode 100644 index 0000000..96afc51 --- /dev/null +++ b/20230523/paramlib-03.c @@ -0,0 +1,10 @@ +#include <stdio.h> + +void print (int h, int e, int l1, int l2, int o1, + int comma, int space, + int w, int o2, int r, int l3, int d, + int bang, int newline) +{ + printf ("%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + h, e, l1, l2, o1, comma, space, w, o2, r, l3, d, bang, newline); +} diff --git a/20230523/paramlib-03.h b/20230523/paramlib-03.h new file mode 100644 index 0000000..c4eaee9 --- /dev/null +++ b/20230523/paramlib-03.h @@ -0,0 +1,4 @@ +extern void print (int h, int e, int l1, int l2, int o1, + int comma, int space, + int w, int o2, int r, int l3, int d, + int bang, int newline); diff --git a/20230523/paramlib-03.s b/20230523/paramlib-03.s new file mode 100644 index 0000000..55c50fe --- /dev/null +++ b/20230523/paramlib-03.s @@ -0,0 +1,55 @@ + .file "paramlib-03.c" + .text + .section .rodata.str1.1,"aMS",@progbits,1 +.LC0: + .string "%c%c%c%c%c%c%c%c%c%c%c%c%c%c" + .text + .globl print + .type print, @function +print: +.LFB11: + .cfi_startproc + subq $16, %rsp + .cfi_def_cfa_offset 24 + movl 80(%rsp), %eax + pushq %rax + .cfi_def_cfa_offset 32 + movl 80(%rsp), %eax + pushq %rax + .cfi_def_cfa_offset 40 + movl 80(%rsp), %eax + pushq %rax + .cfi_def_cfa_offset 48 + movl 80(%rsp), %eax + pushq %rax + .cfi_def_cfa_offset 56 + movl 80(%rsp), %eax + pushq %rax + .cfi_def_cfa_offset 64 + movl 80(%rsp), %eax + pushq %rax + .cfi_def_cfa_offset 72 + movl 80(%rsp), %eax + pushq %rax + .cfi_def_cfa_offset 80 + movl 80(%rsp), %eax + pushq %rax + .cfi_def_cfa_offset 88 + pushq %r9 + .cfi_def_cfa_offset 96 + movl %r8d, %r9d + movl %ecx, %r8d + movl %edx, %ecx + movl %esi, %edx + movl %edi, %esi + leaq .LC0(%rip), %rdi + movl $0, %eax + call printf@PLT + addq $88, %rsp + .cfi_def_cfa_offset 8 + ret + .cfi_endproc +.LFE11: + .size print, .-print + .ident "GCC: (Debian 8.3.0-6) 8.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/20230523/paramlib-03.s-m32 b/20230523/paramlib-03.s-m32 new file mode 100644 index 0000000..7d5b641 --- /dev/null +++ b/20230523/paramlib-03.s-m32 @@ -0,0 +1,72 @@ + .file "paramlib-03.c" + .text + .section .rodata.str1.1,"aMS",@progbits,1 +.LC0: + .string "%c%c%c%c%c%c%c%c%c%c%c%c%c%c" + .text + .globl print + .type print, @function +print: +.LFB11: + .cfi_startproc + pushl %ebx + .cfi_def_cfa_offset 8 + .cfi_offset 3, -8 + subl $12, %esp + .cfi_def_cfa_offset 20 + call __x86.get_pc_thunk.bx + addl $_GLOBAL_OFFSET_TABLE_, %ebx + pushl 72(%esp) + .cfi_def_cfa_offset 24 + pushl 72(%esp) + .cfi_def_cfa_offset 28 + pushl 72(%esp) + .cfi_def_cfa_offset 32 + pushl 72(%esp) + .cfi_def_cfa_offset 36 + pushl 72(%esp) + .cfi_def_cfa_offset 40 + pushl 72(%esp) + .cfi_def_cfa_offset 44 + pushl 72(%esp) + .cfi_def_cfa_offset 48 + pushl 72(%esp) + .cfi_def_cfa_offset 52 + pushl 72(%esp) + .cfi_def_cfa_offset 56 + pushl 72(%esp) + .cfi_def_cfa_offset 60 + pushl 72(%esp) + .cfi_def_cfa_offset 64 + pushl 72(%esp) + .cfi_def_cfa_offset 68 + pushl 72(%esp) + .cfi_def_cfa_offset 72 + pushl 72(%esp) + .cfi_def_cfa_offset 76 + leal .LC0@GOTOFF(%ebx), %eax + pushl %eax + .cfi_def_cfa_offset 80 + call printf@PLT + addl $72, %esp + .cfi_def_cfa_offset 8 + popl %ebx + .cfi_restore 3 + .cfi_def_cfa_offset 4 + ret + .cfi_endproc +.LFE11: + .size print, .-print + .section .text.__x86.get_pc_thunk.bx,"axG",@progbits,__x86.get_pc_thunk.bx,comdat + .globl __x86.get_pc_thunk.bx + .hidden __x86.get_pc_thunk.bx + .type __x86.get_pc_thunk.bx, @function +__x86.get_pc_thunk.bx: +.LFB12: + .cfi_startproc + movl (%esp), %ebx + ret + .cfi_endproc +.LFE12: + .ident "GCC: (Debian 8.3.0-6) 8.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/20230523/paramlib-04.c b/20230523/paramlib-04.c new file mode 100644 index 0000000..20b88b0 --- /dev/null +++ b/20230523/paramlib-04.c @@ -0,0 +1,11 @@ +#include <stdio.h> + +void print (char *Hae, + int h, int e, int l1, int l2, int o1, + int comma, int space, + int w, int o2, int r, int l3, int d, + int bang, int newline) +{ + printf ("%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + h, e, l1, l2, o1, comma, space, w, o2, r, l3, d, bang, newline); +} diff --git a/20230523/paramlib-04.h b/20230523/paramlib-04.h new file mode 100644 index 0000000..b86e321 --- /dev/null +++ b/20230523/paramlib-04.h @@ -0,0 +1,5 @@ +extern void print (char *Hae, + int h, int e, int l1, int l2, int o1, + int comma, int space, + int w, int o2, int r, int l3, int d, + int bang, int newline); diff --git a/20230523/paramlib-04.s b/20230523/paramlib-04.s new file mode 100644 index 0000000..c3ce046 --- /dev/null +++ b/20230523/paramlib-04.s @@ -0,0 +1,51 @@ + .file "paramlib-04.c" + .text + .section .rodata.str1.1,"aMS",@progbits,1 +.LC0: + .string "%c%c%c%c%c%c%c%c%c%c%c%c%c%c" + .text + .globl print + .type print, @function +print: +.LFB11: + .cfi_startproc + subq $16, %rsp + .cfi_def_cfa_offset 24 + movl 88(%rsp), %eax + pushq %rax + .cfi_def_cfa_offset 32 + movl 88(%rsp), %eax + pushq %rax + .cfi_def_cfa_offset 40 + movl 88(%rsp), %eax + pushq %rax + .cfi_def_cfa_offset 48 + movl 88(%rsp), %eax + pushq %rax + .cfi_def_cfa_offset 56 + movl 88(%rsp), %eax + pushq %rax + .cfi_def_cfa_offset 64 + movl 88(%rsp), %eax + pushq %rax + .cfi_def_cfa_offset 72 + movl 88(%rsp), %eax + pushq %rax + .cfi_def_cfa_offset 80 + movl 88(%rsp), %eax + pushq %rax + .cfi_def_cfa_offset 88 + movl 88(%rsp), %eax + pushq %rax + .cfi_def_cfa_offset 96 + leaq .LC0(%rip), %rdi + movl $0, %eax + call printf@PLT + addq $88, %rsp + .cfi_def_cfa_offset 8 + ret + .cfi_endproc +.LFE11: + .size print, .-print + .ident "GCC: (Debian 8.3.0-6) 8.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/20230523/pgslides.sty b/20230523/pgslides.sty new file mode 120000 index 0000000..5be1416 --- /dev/null +++ b/20230523/pgslides.sty @@ -0,0 +1 @@ +../common/pgslides.sty \ No newline at end of file diff --git a/20230523/rtech-20230523.pdf b/20230523/rtech-20230523.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f95e0223aa56b6d123607969dbe8c9aaddbc8bad GIT binary patch literal 198178 zcmY!laB<T$)HCH$y>R8|4K6bS1p|frq%1BQ8!mmH)V%bP3<YCDV+9D{(s#?uDM>9- z(09v8EJ<}qP0mkA<+8KmDlREXP0Z!0xV1ItblxEYfj!T)zs-=@bmR5)Ur`qqg{@-I z*uILLg|k;+!7h)#e{WSPXb9PU6*&KHjji!Er37xKw3$CzjTZI%kd$ORCA7)Np)X)k zYk>1)-8{a(;$9w#Dh5&u8@D*GwO#YwP}b^In{wHc9rX%o=d0N-C-dyF=<kqNs;Xfd zwUk}=viHntFB>h+p1!-!6>=VKij9kT_-<X`K9$sqQM0+)b$pGgS8O^NT$A&1!jg*t zrV5=GxY;swyu?@X?s<B;>Tlr+=fJFq^Mmfb>-zrcsmwz0i7$E=ssv4PPL-K*@>GGo z5&!XJ0ZPY}`Yh+S9hx&cAik{qYUYY(oooG1T5a8IRkOW)eeCQz*1`Sv+&bp91r~2n z=|9t~y3+A^>D6znoQqb!Fz=X_7_rFb`-1Q@pWe@Zx$#sT!&#F#x?HJwDbO%X%}W7= zzo|J=M1)ipq$=n~_$OthCYNyO2bU(5fJNN$i*mX2K_pm(A(wtYh--wNTV_tGUt(^m zf`*=cPJVj6Zbp7`MsadRX-=wcQhstqX|8T^S%z*&YDI}|nUP*WN}48AXFy_ls$Xet zQfiR`%rMWqw0xJ$<Prrlkc)!2^qrjYD-@zZ>BP{`P|wiP($dmg!N^R{B$i9xy(qu5 zK*7vJ!9XF1OFt;JIKQ+gIki{;l$u;CO5B4>5=&CSyhH;q<?INuC^=EV5R{DU?Ck8| z$<ENwz|xptikp*L>pAI-RnL>S<tIvYHyw3UD($gyik?yW*L9C;_}%+!9=u~X(eXWe zX5R#h29=J^EC21!-Cu6E_saaw+vl9OvHtgRY0vNH`~Saw{{PSY&(HV&d#>^P$J)2) zf98Gt_4D)O4^{K#e{V|WYckVw?!VZu&Q3;FU-``ai>rn29r54$`Q!8JQi&OH)~~+* zO@2S^^Y(b(9|unR&Dg*9^~b<d=ab*A*QuD-zj%67knEy+zrX7_|1hZddv5uHC9l0w z^0yo-XP#gCDfQv)?4ZEw`SZUEiVFT+arnIOkF#OZc3ZP$iLSVt>YUostlxd1xAStm zSYC2U;NR;WYmRrYywZzct~esmTTzm*CXh>;x5WP9O~YA_%O9mZzQ+IU+oqS7a`aw2 zjoYPc`om^<vgwb^kJiUdyIu0ida!fC)nwjk)-C(8lQ`~~G0Qb=wrz9Ux%s}+aqaY( z9Pj5ef3#Ts{IB)xA3tZDTtB})CoB54+?EXy#s=Ge=jZd?XIvZZd*;IB`#b*ky|!#h zc(ZZ4+A_DT@@hBgIKS3eI&JQjVECbylP<`%I5*So$4{&Eyk}2_vo4lB|G7H8-m&_} z%HxO5MixX(G<Lrrl_<JKaLxX&Ik!2k-M=kwcg2=3aevqMdk0Fx(wCJo>g-?cE3|R* zqJGB;^~41?veivKOn6)Aw`Osot@`zI_iqZXdY@1jaAWW4SWklpgG`=p#d7xjo=sMr z=h+wMwdm!XzV5Jf;koJTttVEU;}CH2Q!vlndp&(`VX_<JRI|oYi@%>g_+5NqdBKB? zi4VPgEz0rfD*vY>as61ZOTyw@hBm{~3T+}gZoOxF9?20s^A$_P%OAXFq#pk~8F}WB z!I{q7jCqQE6E{eGiMV}wzrdfV3Nl(((w08F_&$f({o?BoX~&)RQJp&%OjLXN<K$1% zYfnVCMY%tgsqr!Mm+sGt-IvQIRlIwx$nk6I(uCKu*9A;y{Qdo)k$;LXE0YC>c<UAG z!siAHG}ibw9}WBI94P3a-0#-)z<Bxn^Hm2~M3(vGn?3!_SNlr$P-WQOe3r+~+yBL_ z-jOxwPvlq5eHRw6wOKWuJuWBMa(IK*hDRGjW<A??uzmLR;QHqgE#{olvvel&ym*p& z(64gAA*-l_^n*WD8f_2M39y_weKB+%Cu6(&mmgc@4CZ}VG*g@Dn}b+E5|c#Dycjhn z{nrb4Pi8ni@Y4Qz>iF#P_rKPb-+ma|<rdFkuuV28At2{zTBd|puf4YLmhZV*+h(z> zjanuB@z~qq&&yPzUVL#~{ZP5?eZ{?)C+2CHXP)#|o}U`v8!tKAVB0lw;fC9bN)JtP z`FBd3arKWUQ%t)~K9_E_Io8E!(WS6F;G-7HTH)o_Iyjy@%=Fpud19uN({*Nlrqyft zdJ=>dIbOb%_vpuu?nC7o(#;8~VacCrcD!D6eVgopU$3JsTw%{H-uZ6HhVJdY=V}%g zU6elbZD--tvT&nYS}C>a(?80aJUH_01<SS<X05wowmII<5x91sH2CFKwz)GdUjN#C zx2rZ!;9R(B`_YZx96zMa5KRbJU|28Mw<JMAL3+)(-%4+mc`#fn%bsDS!pw1@*}lqU z%c)O#{gKnA%x(5s^tdwniox03V`_UA{9M@X*buY4ZkEVpyE9!5h1Z3ISLEg-9kp0; zD|k)BcdJ<vMN4-m6j_E|*{ymbN9fEhZnM|_bv@NR(=OL8Ti{abowM)4yq}5@y$5PF z=52pwUzK=cj(^7Pw<*7y8G4sw>{$2hkMzNavN+EhF700>y!wpqToXE0tXsF?P2`~$ z=c`m&C!Sq(%Z}^I{piRSlhS@ii3rbSoqh3Ir#{pDo18kAqC(bRZCuZ`>Fg#GgY)OA zv%<dqQ+c>oxF&UNco~!0YQx#r4!Hb&wqNj*?BrMFzssAhR@dx%tXtTmJL6=pCZ}5a zTm4&!StUEI(r>irHa#ppV|hWLea?qC7SRvi%I!EsLX>1~R%SDcophSKIfQ5K^=-@% zvaGAJ-!V8gFqNL2%W##!^x99I)S5#kYiF0`?A@1ee3@QeOOame9ScjpT#cnO%q$kx z=H4nyc>U_|t6av!(|@`*MD>{W<sVumwfL0xt`D4nNuh!E)59_YL^)>taG!tb#+7rG zo)*WX&$&z~*H`)78ndjm<>%F$JgLdKzZZPdJ5(*WM*n)i@*i#qQv+}9YrnCt>Uyo8 z731wAclQeHnZz<}Q%LkQ$HT`{TQo1H$G_HJpmHW#P-+i%`zjIFw=UdfZ_jBdt4|Bb zlixpi;_{Sf`wMT*negq#@t6&T^Pi<WN+~>4EqEdHjNE1Y_r7P$bSJ1z-}_&4TCREJ zt*U!J3Nt6qH1HL2=3SN4$Z>1Mz3zhGqV&phPV4(#6!2|uR7}43!0H<JMfuBLHmqmc z^0lUz<HST|&G$!@cj$j{iwxTTwj+3>hpbubikasQX-;TqG?d)NTfkZ`>=P~Zoxvpc zrN`GZ2HYO4c@912RU#OjyVCbCY+rE2^6{OA0#_6JSa=GBBfiCmJk{1;#r669)U_wK zX0@2j``RWWtFu1e;EeOe#~!Du4Od*OwcPrC_m@+zobE(+Z<~LgJ*r0U`N17aZ}D|3 z*|b1Yl%J<dMdkDRE3MIqnM-w!3jfvjcPib#{{H<Oy%<Tq59ee;YJZ=<o^yc3k+(ul zTYA$esS7(UcN*wrimH`vP-2>Oud3ANLa)RA!_|RmSuXVo!s`;F{-5|~q4NLP&bsG6 zM78ohw)xs?+!i-Gyv_M$v*(VNjaBbkK5tyQn5p>k87@{!#`9s@e6P-`x&OLy&6((< zzQRop&MWWTx!ql6$2wO9<`pX=8IO5X%dI<k<0@~EzPQbiM#K5Jw~xyl{U+Sil$knx zP2=r1t6E;YKh4>`hW#b)#}3_jr!1=vGi_#cWIo6cv4-zt1Jm8m7H1iO{y)99t21<M z%{^{E-TF8?WN%(ev&aqOz&U3Z8o6D2K0&5|*^(n)K!B;BsjXm>#fby0HPa1wd6cel zzE?>&H*KDfqw%kV(k~8KZN-8yx2^|ysVz+6xz8QU+4OGH&);n|4iEXa@P%q#TFKn| zNUC)|!{^+z%*Kf8+8+*H3y|(m-_Vh(vUrOCSKMtOF5NT1r&^S6OY2vps|fG=<yU56 znUHG#|7W33vrN%fIqx0jyS{I~dm!p_;@#-%=M~quU4Jd)Dt=(PS4?rqM&Z6Y0s*(S z9@(AcJw4GRJ(vC7oeDWy%WK~*UHbaw+@asou78p$(f`Z%{`4Eq3jHSE!>jXI=I@(u zM<l^+f6vQH;mN!1rfs@n`v0E&ip^iX9(pQcv~13{k8EzO!aiPy-ll~LEm(R-WBtL1 za>gQUrD7d#=Fbee9uu2qZaAsX(;KZfAz}HlXpcS3{nxj3+9->Nuj-Gy_@U*>JSCB< zQ(2EP-uCHJEza*ay768|put1SGLu_>Eqx{{uC{+InH^<xl`~<|!Jj&kEn+v;9~W}6 z^igcNz-j(7DdJ=Gl<f+yj8`jaW(jS1Uw!J1DW8(TujlHVt+yUmt2>0;f4I}=>y?z% z2eU%uvzwkV2c>`d>UMGZ1)Vvk*{wKwdU8eMN+j<sj6b={NbjVoeg^A}O^v(F*6ItE zWozGyYzg@9(joP}-SMXXJQ*q9+qai*-#y9SF{8xqZn7(z-Z}QHoqTJj&W(Gmtnq%q zg4rv+?7ipdG)2?t8prMPv$mRMe))Iv)a2iHu6c1ZXnU8~XIyzvki9f`TUeNz{Pr-l z#FRU%Eo(L&aIr4yncKIvgum`q?}wt2vmrLgYRlHR1+N!iS-Woj-8li*PECGwaN`@F zH;?4kxl9gT=ydYj8KcP;L<KHuw~IA<nw!5{;Q8;Tr_+rv&k4Dy27B%sOnv7S`aR;G z;^F{bkH@EW-I{Kg_Chl=ik0g$*Pi{a^CCMZO%sh<VVbjY&1qfjd|$SSH}+2Z=YQ&5 z>N8cI%T}BwYXd6<G9u*<oPYLk%O&|=w+?M_tKN41W))xYo(1P*5~I?eAKJoK*ODqb zqs`QEC+nmuzmtvEZ2q4Z`8?yNwBfWZYwGRT|8q$8&9I5$IXdmN=eCU;?_DL%9D4BU zg0^FTCeO~9=PLa4Th(@QymxIlw$SKD(}GOv(0TV_44D}}++8lwGUxusQ{s+V?@t~G zvP;VHU%cp(h$bh8<?IDs_G-!()Y2sc1RAS?1Dt#t407I1b_hMKYx;Q0H~lkl>;G{a z?&YZ$@he^bdH#HrmdTYBKc441Rm^pb@QaSvbY1ka+^t(tq9Lj8&8}%Vwwlhr7FLiF zqOh&4hfAd~urYV{mjw)6+Arg+B4T3$8CFeRWgo^lt9qTmp^Ts&Tdjt3S68|!`*P;w z6mxSYq?hft<KB>ZVcndsEAqK_$UR}$yKkr8hR7aK%@c|a2@jrUx7e}y`hCs4aA@T` z7OSg)|8_b}XfB*^S9NN#NRV)?#NT9>+mnx86)oE#S9m1O-b~;AtBh2P>n68FvX_o= zZu42eFfXimCKI3J|KrO<B`*GRUc~cC^CO$OdRbE2uivV!?~`76E_Q3#>Q~TG`v1uK z_ebs-ZISa1vw1I~z-`a-kv%N#($k67EgiiZub=UKvn%6#bpDIU$IXlan>DX)&V1c) zHt~a4R+_1f%GGHz7~j9-boXO?Xf`kI-5j%zt$Q?9ypV}^)PC?yql;tNr`W^J@&Arp zcz0L*CO=2-CjW2GTjeyTs2!SZTlb>5WnJ|{UfT}=H}7k)s4#DN;S#{_Wmoto=Iq}i zAI{w2UUhuE>xQn3+WeNwUi$<BS6pJLQg*jJ^-gEU3m^9@_qKVkSR^0lIeMjfil9M8 zk<>%S6BC(pZugaLFR^{Vth3_fhg+OQJ5?7tO|*zO{J8r0VXo7*!g+rLAD&hG8lWEk z;hjQFVzEUUhfwjd;&c_YVw1gEttxW&QxvqKe~PvLik_x+@Y(fEdmn6$ee|+8*Fml^ z_UpN|@BPnBzr)?ULFB~5cQS$zU5~DEsce{X^E-!!kW$*D^(+Uyc5eAOW5Vo`+c92i zc@9+z`mD9Q?Ki<$?DX`BIp5D*Si9rT&KSR^kr%c3uI-GmKbC8BzS~-8^}g#>3N@CF z3r^l$WbyrsOKy{4)a=)8n{$<8<fhlp=y}Ld%`n%{?q>gj3Ee?T6WV?<81cP3Cwb-C z>1SshzwFlw|99}8@g>>(9|9NVZtiWLWV%gp)jX{|f=?cLHpLhP?z7I>!+5;t<At+3 zD=QvI#6>2*h@ZcDOGBcAytJ#@HG2t@yiYHgx2vl1`(#8-FS2MZ2sN+tck|#;+B|Jn z*zyj6#AwE&!U6j@voHS8R+6!Pny7b)J@HnN(T_PVRa}Lyb{1sB+)?X4yO{C)xd=Jl z)vL}<lk4RT`?Ye?hFK-2`FBRivZzFC>t!fDc17jQo4=7Y%8RFG_Xsc9m7I3$+wCXa zQO0&0g7K%q&6tE!lKrmD*)r$x!(LwXWT8VV3+L_@e{w@}qLT=Vzv3>NPm-%YY!-eI z-hO>&irB`z_C3!hy1v;UV*dZn%lw?C&Bh;YP5t4%=Rwt<NnyWQ7n{}p`Eh9b*@M}k zVi%4*3E3qi#QtjSHSK!M6#Z>^QtJ0v>Qy=1)dU>xe%NU|@srKW5Sb6HX0h*_85(=f z?BIFSe_=ygy2ec29S1$Hy9<O(-qpU&j`R3Ek9wBA;4L46zAf7Axcm8qW%o^_-yW3y zHc4!i{iL4Y%J`ZmTQ=~fuY1#Kui<#_LBV`h#mhGzP1Qd%uZjKC&KUoIIoEzQY~15w zVOje<_os~g-R6>yhg9z~rB*dedFgrL*_ShQ@9d(Rg;uL`?5k=zzc1#%bK4b}yn6nY zW`YS*e#Zs+mRvXfHlbnrM-!nByQWB)8~*!a!N<*V?RMJyE#8-IJbb<U-Yo_fhv`j1 zWiGEzJ@C+3>$So5*0H-zg&NFkv#SK|9Oyh|_2>D9`|qvS7G&23^BA4|q|y>OkL6~; zoBMNTE(mzL?u)Nv^I?sW%`#tgjrYEs;}h|;>3G_-=gf)I)E(0-yKaXBT)B2@UDKh1 zm&;{E-s+yNOl56%<J~Ot^~?O!Dc@g7a%N6-j$UiL_R~Abnd^>}oxkVveCpN?%~eVT z$EtXa%Xcy^2$V~>`6Rn0WfD7Iw~c}Bi+2wvOUyE^E3UR-SASEurLL}T>Hoe<Os%$h zhnCykJN<rnPiB{+zU1SUGrK&Plqa1#r@SRbdwrcu<BNA0o@*uMzVY_W<3C?gIq5pT zgj-wsv~Zy$?roY!ct7YnZHrtlQy;j^MPI;1rpaY}-6`&es}>&A6?w5n|N1<erj0AK zqh8d6%nNUr`s`|+rpL<zInKBItqdj${5w^XYH8rO$X!!r#<xrFF4pKb*-ZQCWMSYd zHrI2*cf)C~Gu=Cy<D}ih?w+4kk#7{xY4Fm<xNB8!=&Y6xsW0cwO^80QS9eWL<Wsg8 z0de`C3bc+JmcBQudmsBX&-rGR--dJdFX;>FXD80PaUrZK{?^lrYSE9>l6bHEeY@^3 z+sb+=$CpNtvZ4Q%E;8G}5_~yd*O+_7i~NYH+STjCEgyP#y*l&p-2Ik-FXl`;+l)oM z`}4K0ocZ=X(YN>Fgpa+4-Oo-IUikQX!|`QLo-^N^6<vMsKFgcC^DB6SZ6p>{-&8#N zS9^75aB!Vz;WF(x`WoMAQlyo|bZ0->%5ia#fLXopk5d~1MV#FQeHQdP{+&}Yr`>r~ zR9eHEmWP|;J6GRlIX^jjI{)M;8f$v9&6nn`kZAK*y|l7HGcIGLvhDQVzy}^vyk(56 zIgLseTTG7)ygRAv;-V>KXYX$McuaNbvE<X7hfBoVzlH34GBN1s2C412O0T<P7k~Zx z{c!8WXTF&i<foadCZ?QLRcvoyG2A<mwfd9vtKHLPY4V-XHD=S*E8aU{v%^fo_~NF^ zOa8b?WGAHa*8Da4tf}Di$o}mgS;^Nc`p?KOe9YPulo`vuI(Yr7mzu3Iw~zRLt+47_ za*=rkOP<mdzxH;;q-aj2Yv&4>?*Hsgxb(MjmsG&Jb-WDwUUV%!uU!^Yd-d732D#cd ze9PS>Ts^{0F8qGdV$-LRK9BA{pC`9ySr&Y9So~i1<o*i}UtMWDy7X|U%+82)r{65- z^1fjcGLL0*dX|yPMU9H77ypZ@oqVPAV-7FZR^40LYtF4OS<;;HT<`pv2QiBpt^L-; z`z=%0(Inh*h<R%mo3V7R?G&eJF-5(ctG(yhF){rX;bf~xKH=haE#!V+d;0GPk(9un zDx6Fyg<{tgCT-gGO<MSo&l$!_lkUGC-9K{%o~~}TIOOs%DSFrZJ97@JU(uPjruFjw zw|9)QUw{5Rv7`H1PpqnGckl5_k18vc?V8^9vhX#BDAQ)2<~tnw+L{7p{G9sqpzxRC zl-lKd3DMORV*NW-f1kd4uEUCcznMx3E8em1VPk&eSh)UbwR%E*=cf&^AO2o@=kRJD z@6CrSe6pK8{(e-<TdZSnSaI1snO8QSi{^gV_Ro@aUh3nfgF7W(&fxsMw=-<Z^LxS* zH_FWO39>2DTWmACD}J*4>xJt~0*^j?{dH=E5X<+UIV?Y;U%l-<ch~SLfA3P}<6(x| z&-m0F7O|cFpKWr{iak}g_BFY_^IQ4v$g2JJTXtTaT)Llg^~IW}Ke`vynCWhIZI~{% zN5^#X!&g(*8}R+yGwJtCyY!Y_vOHXVmn!!u2j6JA>QTRXL#kY%)bkqI$?F5;WUilk zGMP*NHEW9SK?eT=`^1(71xY`>Bd&8dy;bgCTSwuA!ju`^UhLD>h}vW%upQ)8*e6tY z?9_2TAF&Hx6zsM%Z_2o{O7O(D8<)-bA5`sHZ&;A16>!y8^3~supHHrtTiaUnlHax2 zSNeGAk@bH)3#z_cC_EYST7jqP-5wQZfgf@Gi^VG(9>>o(yriV=L2}__RZf>l+xvq) za(fHKJ;^a_wTr4hIsd_gyI&vsul%ZV@anuHSE|>%IlDXL_Os|mHI8?bKCilWpmuJ^ zkv*S;y=8L)?wFg-pVau^LXF?C-_su{@3|sV|5*RfrE0A`EVJ(gr^>Y43%<L3YL)-* zqPS503%l-3J~QFb=c6{CHt)9AGMTTkW7VbbBNC?<tgYA>GT-a{sf};)7GK%)$!}AC zT-<?>+9rjo&u>WjURA%7x$gIheZJp2#aiDz);)J;&zlKT=C^qNT&c?+d)l2<vH0Eb zUriIf`3b#PY_ue?`|sXoI}5@&YGkH6J?MP#u}Pk>uesyE-<vfdo*dIdzFwKNpJVk| zP%Lixxnje!C{KA&i~l<P!pr{eyqkY8?@apkTUuY1r#@#@e!9eK%bt+0Uz%GAr8e4F z@y#rpsPIHiY<-Pj-&yyG{U_WR4{ow#eAQKciu1tV1nY|j^F;gwpGx~idVbP+vmxxP z#lxJy?>1ZXy_TKSZ~Dz(ka=FT+ogNnmp?N5w0?1YDq1mPm1zDP$%3VJWzQJTt}BgQ zHlKx8{*d1SuV|+m^};d7wQn5XzPW7M>|R}i&rFVd%L|mIc(dPn)Oz}=LAeqOpSshd zh!D>Yzk}D==pDC?+_TG6cCqVguW5?2t?zv}%=^y8L&A?`V@kP_%H$_58Xbk}LT7z_ znreUjpLKr3r_)7`djD0gW9fHz=)^IHS>es`w*gmTqI6!}y2JeDug>qI0vWlna;)#Y zWw!sGB``<%EPwLLFCAwmD!BL<aV|S;xa6_cN|P&#F5E1evG~Va{gs!+o=nnRyZwxf z{W0mQY4hZr%S7}}OI0SkTh^SXJcmcRX3klS@7FW?nm*_46It3PrrGn;?YwZ&RLf(W z6Q%w{v8;=czqEkonb}VZkFXVoe0RA_zI3!h?fR~oWj7bQe?OtSg4b~7rwSKsjtR0Q zTs{5DR!=`4IhSp!nZjPR!E#=0z~?<DubVtLvt#P3_i;5g7sJcGJUZ#O!!|8+$IscH ztd@xKcr|_4sw~`Gn<89&rz&9H-VN?mAxSGP&-=1mqggcKZyVRM+Nr14b2Xh{a90Z5 zUApq2msU+o&dKXcH68oU>U(u9ezo+}naE4V9Cd8^hTs1OJ^6Xg`{0z;9efXM=e?Nv zT_8eu+V6yCmK!%V$RFUY&=UPG%VJ;mob_m|!K$=Qj{Flsf~n_uEjLN)DcMz@?F@KP zaq4n;pJea$|KC}3L(Iz6jn^IZo^JI1+Qdy#(?6bYKe%Yxey2#oMrS?tKIsES>%FFz z{?#)*T5Vgdt12aRzIy(nYZmRV@5tJC%cW$Tu;7%LR+k|8D>$mpd&lusSGkqCh2_3o zM;>jzy~AV8=>vJ(2ah@yIvv`$)byzGylWyyk3RbLDoDy^m-n%cjhtKNTYTNOV8iQQ zKi^oMfAhLDz)IiNlPAum?)C&0&ycB$K9sooYel*J6qx7AUy&&t@+)7c$X@B;i6gTg zl{>T)eCH~*{vh@=?ZXLS+3gD+Tn~*X$yGhUb6#zl<9GIOvv0d3E6Q&vna9rg_{V&i z!sSQ2#lDkt3-$z@Gb!805%{!cb&DOxl(gr68T0R%dFf}=YuudYbDr(dkC0dPewEg$ ztZyGLn{?re50~7uvo_gt9+ny;u6be8TkU;l!LHhKPdC~;occxW|4Z>4#m`#(8S8{g z8z29C<mnk-A!%3f?}u8!+1IbE)*C#qcYog7a@yyom!<a1sHcwhcKd<^%b6ek*lAoo zG5w>=%euAUj~v(jo?8)g;P_H2;d!?nKmX)it|TXEZ*Rk2u>OVGIbYRX(ea`m3q*o7 zngdRX=5P7_v6=A>r^s42XSRq(v0^UM&s$9E4;Hn$`KXrTh@8>H8=TwkZ{BUtulPji z==zgUh1#<m*Bq|#+hw@oroqB;5w#azAMBZ7RrBouyAz+Iz~Ot+Y}Sh-leU__?);s& zH}c5EHO73a&n&dOV)N?AllB9lUR``Y+7_p~_e`(5lh(|+e6#yJ_4n#CwS@LDxy-70 z!2M7B*<`DS&sw@CP05?8r~53eQZ2LM_^Gn?`xD<DU-#ql&B(LUCEK^oJNb@#xA?KJ zPrJI7J<I>}^2bUhe{ZM!+hsi~j<44^;b>7@HOKwKoy$8UbCr}A*T*zpv&;AGHd`Xi zt^Qni`k$$)tTA<47B$PZet-Dy=SS<0EP*rfHh!HF{_aL&Uhh^p*Pz`iKNs)4RZ&?` zezMJ$^Y{k#Sor{7t@WYT4DFd>uUo!k$)59qtM+BRXYHB5#CI!Ca0}^t`k5fNh2d`O z*9)sHJ~QqNKQNasu(J5IYYAU?j#yaZ9bcxbVpV}{f;ys#Z^Bx$Plilp;9tJ>!qfI& z7e($S?LGXEPoaJCp;ZQsJYGsAGnBSRXqY6mUbsC|MdjJbj=9I%w<wsT9mxOqT%BP~ z)T=WO9x9a<|2V0fvD8>$=TRHS#1HRY#kn!<KQ~+BO?;@B2iH&K@FP##IG?ZlU~O>M zReH)1?bh4wEW%x%P8iSlaAD5*1Kj;ltaGk>Sygtz(faVKgnQ>0wO!<DV#^J7TCGak zkaxI@|KH)_oiES1Gr#-tZ9jkST~U_z+Oieb+x|3V9bbNY`rbvs>Cf)VocdAvqRb&C zw~}?nm4k8ITD3PHCO8=uty!3-wc&HcvqkQ;221>pwcNWXecZrmMzzX%$3oE~YE$JO z_D?+0Dst6VTT68pyS20Sif46U4~|9)7K+cFZTwj8LgMU0daD2C*Zos_XuFk%vsCl@ zmlxY&_~M+cRQ4o3?BB4g{O5M(TcY-hg^W%Y_Gf=#z5V`8*Y>k|h0gO8lrlAEKX@EH zsZ--goBb}w4&8$p6HhN<2$FoEHzP`<Yhq!5(Eg{dLQeErdhnb%6n$>SPJwG(d-@I+ zFHSo8a^E|Dj{k3%T*W8(|H=u~p4qFAsMoeiT7Pq3Xp@3dVyj+Oeu%=I{tI{FW4^gv zU9>ntKA>N}<L{jOXRGXYBwSlnzi?_mQ;>$pU6)4^buw+%0u%Kn*Oi~_crc}xxo+9* z*D^ov`T8GT^>mWU$tb-zr`b)fF5O!9Yl_qJt=1g=F`sT&?n$!>w4eC-Va4&o*<1cR zz5H2*DO>HZVr=oenlp=(_q;LrUaZIy`*9Apqs9Bz*B{p(d|h)#kd=GOOJjZuyX(o( zbsEe`GecB`k6RrS*d%sf@hh{IW1rdiay0MAwKK_ldB2CbO3L-2(uKSZsd>uVeb@Z` ze6m(J_wnC<cM{e8rydr1b8+d*ud3}euYHcx=6~9-;(Z7I;<k;|i|V4L-LmC1+hNx# z_;yB|$DjK(oOdsqc9bvj)@I$-x1^QJKFI##uHa2R$G*i(ow=oPx68&^_k&NmF6ei6 zP@9|V^-8RUeGm8g<;}l%=6>fk%Aa$*JY<@|(ls2f6?Vr(EI-=%cuCv!Z>*0$REo?` zcllt+V){O*Lo0fJP@mT4$bBDm-W}FC#bCXUQ+WEk?K$_wzr4DWw|ct^$7^*Lm%w73 z2M4N_{9pe{q-5%~OLsj>Jm!}1yp?)=?BUVd%eDGcoh$c9RyE&sD85ma)E;p7_1ZnH zZOpx27AZ<Ulv%gly2ABu)0VCtd%o@~Dk{}>?hC|Ld)zZpt=q%Q=jDF)$;+3jaz6@f zo3F}ypWm_ViI8dZLf!X*-(*VHFD;v>FL;XM$<~-{3!)0AIkv9o|9;K!mTQwq_d79z zwt^FrclIwoepNFkWfjNHl}ZZ1OUvvPI6k(Dv~F>m5qbI8=ANmmyxaanvbv?LvEWE% z?R2w<d3ua%L8pg#*o@hthaRM*n58hj+CN>#A&lEp((YEJwUX+ojT7F8wkIxJVEHHE z3_DNrQN^{q%dDDK>Q&}{Q&w638H7*Cs|u%X`tbj-_J<>UTaL5lE1mKwJ=MC>YEIMl zYvLI(?;e@N`0uO^Zv5!P<nf8Cb?&39x|>-w%l;Vk`YkX@G<{&5@TU9U2k|GeqU{EL zhASl3emKT^XLbSeiAhxwsfTW|*52zBy1H;uKA&37e4bevlI)QOw_4_0x~IN;nt8&r zx6x<&-(+&Wn&N$0wA)xH$SUEf`T3ZBVUE6)4I9kovejj&^f@<ve7;}7DXjRg`^B%b z&c44s$uQxp%;~<0h4S0iKfP>xr1Iy}j-EJG9lmv^JcO>fFOO?9p7}2E$xH4>FPE#^ z#q3h#FI3rop=amKKpPVi3BgNmGB$`56>;$HUv@_RZ`1UU`A2$_c$c%Wv2xGR-zDYJ zz|Jw@m(a<heAbH<EHoD{mt|Hurq$u{S6GNy?i&j~f3{W6GsVvTkAglw<4U`pSMFDH z;OVcx^p>X~Z~o=BKI;2wW+{Amv&wSkLwfxAh1<9HP2-t$w0Ys$14r#YZ!z%6lld0) zOW*HuPxa;c+lTku+!8TsU#ejL>s8?*ODCK3m0VjsKV)gk-zh!98>ZiQ{6+DEf`jX3 zz2b$vcTF9S{Y+W1^MU%t89wI1qN(p$Y?Al>+^8GFf4a#p>Zs`E?LS#XTV55cX8fD+ zl;@7z()bgL_*{x_&wSeQXwM~1Nlyv=li`b2olLdf=5zY7`uXp_4wt_<X!E1^b;^-1 zIyHx%&uF|EE$e(`xo$;M?z2NZ+!i&7X6OI%9%W{q8TGHPd9@e++8xUk6n=ld_28}W z<PV9ne`}ie&oN%{O!MW=%BL>e=ly(~>ur`BxIB2?a<4D?aa)(&wZhj|cK<!_+5Fpc z;m3~{-`w4ovh>RDhdGTlvt+sU9}ao=^~*+%x+}Lgn)9$<5dW0+<7Ax45z!a+7dKS? zUYpnWFjmq|Ge+{e@I$BLS(&e1^#$+zE-sdq$+ve=;i2yZD$MQKc8$)P`P=FrKP;R1 zm^oeYo#b@go^_u;^QN8Zkly;(J?6oMM`tzd9TfIQ|K2M2C&BL0OJ2obn+Y>ses;N^ z71ZbLR8z2_(%AObX@|pi&U<{_I5)}uN<i)0Q^~3)Tp~A4zW4dGPnf&XGM)Wm=kldh zTq}3~{dDNBM^#Ow_N9j3KP=>qT5~<Ky~Y?7lWsaioM)-#@2I~gT!oYjWX0{*Tqq4v zVpqT4$q+77uxfi(bKu#tUgzHmgnl<xEKGZ~b(g5(3_1BTpUl_&kxl<Ed@L0-Nx$fO z)srwE<5Qn4F3sJq^=681RO9lMEr%+Ut)4usEjo}tp^=wuJAZzZ;FRA_Wdqhp#;69% z{h#u1s+mBpdQ51`>hF)O+r{nAik|1Iy)H1V_uqS;wa;`do9!+xJbkG^Z@>J%M!!3` zUw(X-39PC6Iq~{u1uud7RePdp)_hJfUbwdOr9$Vj`2VHG3AZ2T=^p9cx1eI8z_k9e zK3`VE{5u*PV-<G&dcb;vqCc}%JnLJz=y%Bhr)iHKe9$^kzcu5-b9;Nvg{vyJtF-Mo zt$6qX6RVlVq6777H0r-S5){{0Wyq>v-Ba24)>@0_$N5HU6KiGtPel)ytjp(Sr^p_k z8}YFwVQRqN$1|(ypDj0OHJVg$s#@>J>+(wdtdEO@$}cKD+%faGq5YAa3-%rET+*=o z_;l0!+G_n}&)1%RapX;j#O34i_Z0lvf3`dC^_?||^U<m)v)d|-Uhn(icrzvJLCQ3_ z`xT{|xeu=SU356=PSK1vyY}ussK5WWp>5KRJ0GR8m5b-d>DJp7#@W4;{xg5aLqk!9 z;|mR5G@WqSWi#nR$81%7S#GW^ca3=Gc=?$8<@TO!A$D*o?|$LSx4+(eHT~Dc88Ttn z*FzunCOzA^=Vq@E2m6$Qwsmb1kB>7J&EiQ*m$meFyV)YMPF+`~r}2O4)`MT_Sl8J6 z{}?xceREs=;eMsk6Gr;)@}99S{wTfP{ONHqj*00U_Z9WNKKp;%KXlWdwG!GFttZ@n z{_{eE)ygH0D^hq5geft&p0F;`mVS2LY^j2w?GeWaeZJ(ds_!iQM~wG5E}rrBNxS#O zpJMkrk0qXa?X{Bg-s8=4qj>g6*tf3ezi}n@+V2O)wyvAfI(4QkXXV|UdUvKNusD1B zF0?#k_}J;P!Lu3mr_ZzV*Jdr-ak1~qJem6wtT`2h*!&O4=-KXRyRm%FzbQIdvlnc? z#p>N4DQ=^Dwd~rR8M4QYy$O*1JmJmv%&O1A?mG?p1s{6*X0rYGbFn?G%Pft3qw($R zTR~fmna@dD8{6qzSrq-_*@agdq$Tb>EOcM+D9Jd{@z=3A9nzZ@-{@>#H|IywMnmf_ zy^^*`OZL4e_7qxRcl1cljTv(T|E-8v(Hog?f5u+djfUz+roFoRsq*nO&ohSiR!9Wr z@YIH0k)P`Iu9fA&zBdMDN$d09o_>5P-{RH2IVv#|pGvpPzO5>?^X?)$5vO~34f2nj z=RUb}gYRMgOUX~WPFV!R%q>w-4f*i!e(%581xIzbnv8aS_$asJ>+i4EllMPqOx|AG zIJMZ*T;#>e+xaV{ewlP;_Z9ko$Szd=<d?YK_Vay?i}&jLUT$|x=g8jGa84pjKuO2+ zW_!zzAT@hW?L(JKgbuwoDt<BDaKBJG$C^v0|F!n-=*+bh4Bz;0@z&J4vVX7E)NS2% zF?tK@*$}5!9F87K58S^oh2^VZQ`@=504AAb#~$Q*yz%YXkQnm(ch!L}N-4jc3=8CH zA1a%4*BtoD$J?+yFMmgUR6y45Eo&={stvxGwl9qPc{tu+?ynyevimk1{maDmufvx; z{*(8C^*0>ZT3u!od_6Y#$2{3)g&R9tYQn2o&-_}?e|)90XMcl7PL`VKGP_<y%XWUN zX{tiY-??*5v?x`bWgqo2{`s|9m;SBmf4c|#-c=qvfB&1?duR7;?yUO5t;hCCrpY)! zesAG6n{!#|3U(_d|2bS9mhMnfQT8QaL4eVP#4G*zKc?+}@L{gk1fD1Cc@JAkmPLFm zkNh*aZR(%kH+SXd?)hx=V>zGxzlXms>|pvc{nPEh^Y2%fM``R>_UGk9y~IUtUaqk> zE2(4s9cT4w@!k{j_g1pbezg719?JtqPoy}#-#;n7Pv6Ey?vcPPr>Dy|x#ukIf7E}l z|M??bhZY;-%QHP+oi}sSR8#M0KFFYNzueCK!1tyb(){nY^lw_#@$&)i3C_aZi;lQo zJ$X=J4@25<Q**v2;?<$Y*$$TcuUX&5eD3-D+#5?~*;*~`uhDyQP_<=KQ=W;2QTSu= zvxQYI3a`aYzFsbT{-pN5%8~2c7fyCpi598ksjY6G^puxh^>yMKBa?u9U-f8V3+8Wa z`|JPRub25>`A45YN-qw}YGeyqu0|$$1v1DLC@YYSObiuF&12D*8V3~RCkLmNC`2ph z2e`N?#B%AQE<O%2S1_{#uTi!`UU6(>X=GtQc*SwfUe9%Ed)Mh+vtN8-n{?*Yqb7Gg zGVuJ~S$OHd=I8to*&BQ2c6K-a&VMG}HNhoNN9^SPpR50@+t2mS|NsC0AD`R*fBk=3 z{onro@9qD8w*RraH>&QeW&Qel^?&#Of4=_z-};|l|NmM3$1eSC)zh6p&$IUbyZ`^= zd@H}7wspOBb?0~0{VhB+cmM4_U*muN{(F7L^YWd|Q)=t)|ID8Dsrr8I6h5#2caIC6 z`f2MhbN~6!Q~zuoE%)Dk>lC^F_WH=v@9Un1R{ybk9C+(};p_mbdZW7jz}A3z^FJwj z*DEI8HNU64=i<~2_2B~N-mgBt=HtK5f%nqoe@?r4&$|BXx3H(D@}E6j9sSq#i}~kX z<tewP8vR&x?akfCe{Y{`sjEN#xpLY5z?Mz@|I+^HIlXkgwt4&geA$nt)hD)8|BaQ} z|Ko)Jt-rBm>RU@c-jd!?c+WZh>a+J<_kHG9RImR2*gU`Pt?{|)<G=R2`ul6k`RfTA zZ$IzO{$G1LJ#6d0xYx#?w_hw@dh}&~^Sz|>L;v<>*DbsMwfb42eDa@nmEpf+_pi1I zb`$Ta$(d^TJ-TlC%<cQ<`#!7LJmc4i${5R?L7^7sH4KmLyY}AnpX0{GLjHf7Kcy{u ztT%6t*_Zj(-)p76JYmVW)c(-p*{@r4+fVP$Ep{us;}E%EPyXiR=Y-i5Wd7c8uh<iC z&r|C1wWS|hZf)59NjzV@ece~<z4?bveK=pcI$m9~%;|pRzSrK7`_DgL8F=q{Xpm2W zP1ua7?~B%Hr>y*5>wdhF$HYEZ!k;H(;f)jhM&{v3y_r1`;@8g~fB7IiU>28pVwldZ z+Ru~KQwyh0>ssxe`QvPKP4)EySvFq(w9Bf#^yU9#SMB|%vAg!(XN~@epSSN}eD$;D z{o)rqIeuD3m-fh~emj5b%kikco9p^FRX=0oSX^kg`ks9LxBdrpN^8EIkFz~xIsdOr zzv%h&^Yc|~{vH<J9QYyCYkK+7VE+Y9N0v>zzc%#P^SAv)`{OO{Tke@3>BIHk=5l2P z=aQ>4+NV22ZB+mC{K2YQdiJOG#{AShyyknp^8E0CZ$Iv|aWCqa9rNDQYi~-+s`-nj z9MPGd{eA!cpZo7;O3%sM)irfeYQW^r-^E$y$DKCes`#mUYMzqpt=lXC*YZU>cSy*s z-nTW^)rD(`QJduc&`FN}uE*cla{SMdJ=%*JFDbnAtT?^T<3-W;vOBh)CWk%sz42Cm zVKB?G_Iuk*7w(xIuQ7G`+rYj+t}C3ICY)KBIN9TdQNiJ_MwfXUGX7MrS8LI2-ea9w zy0jp4RgA~mw>K0Xp3!X4O#T(rw8_Ep+r|Z7PV!c4x}fp?=!3bT%@fSlzU6fLJ)6nx z<*#?V-+u0S8F--g{qO#|56jjyhpq@s+j4M5e^8zO+^?6<8l1D(rkAky`{aXrl@@-w zyZCm|_U6yuyO&3WzlzOy@AKe^xa{{>Cw85h9>-g)Zd{7N)AWwqz7#(p)a+Drhm!cS z*vsEixR<Wajpp_I-Lmb|-N!RRJ#T*M_L5Z)eiog@x9CpK?tOJ`Yp<AUL|->7vzr>v zzIBGq|2!9-&G%OSec&Ks&w1l*#EHV{*Bh=qXHZjpP(7h?$L%TEnta;>V=l5K&e4f- zSgC&hPwp$;7ne4iU0yMFO~&@^-=}<9m$6;Z$kybo*|v<@b(!WhU(T&6lXjjG5WH3T z%H3%pZ`n$>r^c=>z3LTvHE+hpbF0d#Prbbvxib4gUUV2sbnw*6B}c<t&w8|Y)+*XI zTklGHyV22l#e8#H-N$uTj)%!fr?75%xXjmBYY}tnw;Kog<=<Y^5Kfx*e&u_Hhkd`g zC*5$F|BL<T7WY4Y1H~K~Y<5{(GEzKoedbiwfU<p8bJ+Y>h&`R)9;u?UbK|YxM;ZG~ z(`UNxbP7y;wzfN><SzTVEj*LCGEYl~+iXj?zJ_f}dE7DnQ-?mD^|yWO78+>H_4dIr zuP(+J%hsI_d?DZ$X~^*O${LA=pA`);h8gF7t+Li;Tkz(+&^NtT3pLpk)=U*;4tV!# z&b{p$cceHQGNf)<BO#&s@j!S$K*bf)g_bv;eozmbbvHKOVc%Q%De9}5f~424QgiyF znYX`^ec$?d*EO;~pVGcsf7$-Kibm@5?k}31`;R|Mef|EG#lZzXEP9J;h39<Jlj?o> zt7;ij>DL`U9amasvx{22c3)m`+M{s3W^cJ$hNNhcVz$1hP-p%9(B6QwYZY0ochsN0 z(C|0#2{ihWx87eW=zmct*OYyqO#g1{o_;6VF*M9Ua#6&d|C+706Xr)RugS|1Wx4mH zjB9zr2R@-4hwkf4d7xjdQE`Ed&+h5$=811F&$<5f_2t3~lFO7Aub$91bzO*6)vj4D zD_(UiSJs(5$!}*~^d!SwTRo#*d{gfXTG+fr|7k}~$MRo>!Pmr?+RnKjYxo)VyXHai z&3*QhD{^9Qr!VT?WWP*@&pCfStMuRYo`Va2osh8Z%*_6>W!c`#!gIfc``12VTs&h@ z;-SaR8uDisuTvDeXWeIYYO%=1!&j!QUERHO#~ZmdtGm{I+jj4mW=Y51*@vbvl|?Ln zme~ELuQf~VRl%waOs=0_EHb{LsU*2ibFoO?kz}oS?(&$Iq3c#p&a1w?#y#@a?Cmde z(`^?WnslyC>%;Y*e|*(^{WZR~&ua`mW*GB&<%ifaPtsQxTxyeFC#H4iWcc?pJMS+_ zTVWM^|JLDzR(t0u+kQ!O@te+9_~Vw(zV4;|`%}{|{}$P|dWvq@dy{_WosV93o!%F- zV)C7OS&1nhC#ozknX&V5#0`x?_M5?q$4XL8IPGQq^49azBkqOTwpX{^wrKaaRd(yO z^x4w9=?`DkeEy%k#VPw=ngnimxoAzY@A?^r|3uavQRgWOHB|j}yso@c=t$Dr5YN)$ z{u`$G&wX#a?cd9|)6_ogOz`|(r7-RvZ{GMwlyp5!pEqU2Z{v3npQN`h(7LuHReSZm z(!-7X&TE`j-nbcdSg<<Z_ghTs#M_(BhTmUj8|G7{$oE5-DbecM_NxM_c`;5JTPDBt z=isy0aY<GGkZSw{t%--O{ayH}qxp$%#<%$M8jFjctbHDA`Qdu~(asOwme_84b$jit z;|jmt=U&X%xc|Z8->jcgO}2L4kNZ<~eTB4ez>4%`OSX3hl_^x#eZ8ou^q=MF*+WMT z$XR6lU+^OM|KDtxtz!DucG`#S@wfdUJmuM{r@~Y1|24^&Hg~PNTp#d-(;~P2&%*a! z`~P-d+ED0Mq5b{b%&0pGHt&w5pIi3JQuKh^%Xd@Ci?@4rPhhDEO}tWO=ycSqfi-%Y zbW?x7l*F2o`^>m*w>7U9u9$X!E%nE4*VFkncIz$|&v_QDr)AS~>++ot+u2jT3oX<+ zv;N@ymBQ@{1g=@$UYpc&rrM>>xb4rgA1B^_mKSf_^rc#D=S%r1=HHiXt_YTS>%GvP zNo4lRgf|>h7O!4--&t|Ne$5H&3uJ7if803M8oz7RduOe>&myA6h1>Sj{;<e56{|C@ zeOg+pa3=Sux}U1r;yBR&i%+}1N1uMZ=SSrKQhCSf_S$+*{~0T^Ju7Sq7Z}whU3$Op zp`%vyVfJ}C>Wh~|b2py+yz}ORu-Ef%=j-Pr>{I+6-TH5*>-~$*f(tLd+rIB_vGn^x z9f>hFQe%HrJPOkH54p(xP`ti!b6dG>NwfOq`Xe7tiRkZrEzbJ!bpPX}7o;a%o$@In zsb<RjPZm=}g3Gw}CdxaRi+9;JXFUDW^LtIH1joy}?^BfRB<5c~Vm>*oA->*Z!KZ(P zwPKGlTT1pGNwQu0vBqRUkff1ccAU2J?#%dtqvy}xo2nfZ^d|r3Dtp$CTh1s46diBx zpE7BSe5Hn_{nOPyPegBirW`-bRQ~6$B|lHFOn$UDdxD63?D8c)P6Vm#bq}}JwA-cZ z`T3$R_gVMvrkQrTzI!@r?(LkHd@dq&#*%AO^vYIc+np-yROp#GU+~#keIYjgRTJhl zF5!A<>A7mcyroOHURHXqnlSI=60Vm!eOFDG_coyQ%a3-gB|=IoowQshX)T$gw$e$h z*Gcr3;^B~=71D-(e*JhXB6{ZiHRpg=zr%Os)Y+Uj6g*jb{c!ZgUdw-lr|R^l{g!Om zzWw)2#p9gst!j;9r4$@ne(Xtq5dUq$$KA=_f_ZrS1756XtxJ2+$mIC{wL|iR-Dw9z zf7Uf?-_>B1OJKRNoo$2unL3x__u08qo0ki6=l>E`@L7=XQlWu=Pkq&t+gD!J&;RuC z^(QA$-%o$b=P%g99opp2v+h0@uZtk734>l<gzWdbsrl=TQ-!7%HEzFP?yJQpzRL6B z{hSXMp6=CA_CJ>M(f3=?5qo}({0E65J<QXWuswQE_IkmbH08@t?FFB<Ctt2pT$CSp z(DS#fqTYYs!#69sp9Qzy&i&JL^u>Lj-v5sdoO;W9%G&-8Z>t!`QX!5FmxHG|G)#4? zoAjyhidTO7U(;(o@juRJ^FKbJqqUIH`mD&5&1F%%Gjjixt&4D-a6j!-DC^T3-wU1| zZ7sX>uH$gdGT9dAHCY0lWs+0YP4s%mQgyLJtl$D?YUt7V4>amE{rzg?s?rnBoImhh z=Y{i8jgkjX_(f_sHI7O37g_pqhjW%K5n_7y=4|3F_MIGZE1R}GxF6oOc3)KgrX8VT znujMU9Sn2p6D*72H41Qu*!Ixk@%sn=7VP<d$oZF2z^*-+xAP^EJ*4@(Vk?amwQoI& zdKoMr#_PZH2D=RB<R<=0b<EBlHho%l4R%exk57AbDXl>>KV$K?f3x;wv)r^vzMOn} z*EWXin|}IzJCo0|&9}^tp8nBE)$xCulcAC0x}ASGuDty%Df(gm=SoATr*q}g6TfwO zNbbLXqaa3(dzaP|^Bw2-t~-df{}bu&ES$ApHgDVEsaqx%`j@TywsCnz{lVb0)wUUn zJD2<1cysrFJKs7(K^<{HhHqCk$K;)tVLBBoB_wY7lv8M<#TU&tJC0VRKH>iD$|_y6 zSK8^ztOV&Vi)}7OzsZwe*_tqY_TOdBSN7&^yS<jbt+wEu$f|~~lI-TwxgRqgmf1eL z`@{Bg`AaYH-bnnm_rA&gGcK#<N$HE<EPt>hY|kB)j0aOxo_2n?d42uaqaQvf=S&yO z=ibMnbnenrUOT%bA=SdF2bOidKK@(whx^RBn_)fGm;UmcxXH%hxln6QjrpI1<N1%d zo8lKUd3kfS%{#a}H#YR1W2N|cx%t`uVpsV4e>^|6`@d%HzDLvBEv87T&iE(HfAHi- zF?(Jfi~eJ!U!QJB-R-;TaDMfD9nnR_nG<D#XBnJKzh)DAbjcBA1*hL4`OaS*@_(@I zIcIq{?0aPSWQ{oG123v3{d=)}uWY58(v|4@#uan!Z(W$jahP{stCiaP0$T^89}3*{ zdi(SF-(K|*bjYrHQp^13Wabski_Kr2d8#YqJ-Zyf>*W2-`zCQ5ooG}m^NQm^W^$Y* z^9RjR>2@cc@~@m+ANc(*l~;4UNPiPp!~a;Qa=kV4ng0v+#D80$P%+2tT~kcNIhWW6 zTQXlcGl`zv9)IMN&c>!@z76U%wfgfTDwPUyBKBQv;fPt^ubT5rse`>l`mVI#wT|mj zdLb-Ui#G2Qi&=lM>G!e(A;wO<(`8>K1&IVN3SwapkZyN+?5t4yw7tdk^8uUpKkpVD zVyieP7qunt^2>v!?U{bOY!CI?Be`0A57r(q+jD<U{H)kZEPG$>VG&L~H1k0^PZ~!8 z`}^#Y)mK71V^&?`5oo_#=iIICxA~S!$EM%T^3Ghxt{$~~UBI_z_E*CX^A{ZOTJnG) z^{`6&5gljE2igs+t%iCD5&5kANiU|d%=vB}oKfdm*R;6vXvO>$hi#q;>8)QRu<-Y> z$Ghhz2+5qh`(Uq>;lUp#uU%N)|A|FfdE>W59mThfyG#k)FK*~mn0I^1gZYB{JAI|~ z=Gf)jswh{;ne!=Rs_`dhhOQE6wx4{P=l<Zlf93RhyD!lj(l;}Qrrx)1tZqE~AZPAm zo02P>rTq_9Gx%I+mkU?!vt>wEbzQf^eWn)MyW1fjuGFwctUJy<yVBV!?&-zdjUVgf zc>-P1zsDM^a#%S>SEJ{W&%~Y|y8|E2TXecHVC7?mjF1%~F$obrCns)h*>mYWhw%OM z8B>3oD>|r`bFt|KuM1{zOqUnFr||dAhy6EtI9#7?&EDMh-&G_yTC(BIk+{uQoBuC; z8NBJxhy5M-r^*=riEoT5S$yoqD)w7(hZvRlEN|ztH#VqhDNXAOGE{4HXJZfj(UD&i zu|nRvJzL_lVfPVDn=|jWatdC!l)ouJ;C!Ep`vbl9?0^0N6RvME4OxEfLpGP5#{1v5 z*QLd0pLnn7lE&K1l>RsRZf2sR)BFadxAQM38Z2(Rm8kPf++p#r2}h)F7ygxR{N6YJ zO9Qj-&$A!GIa4?cf|$?k$!1t@C3xVd?@bRwk3NT52Ggw>wg;yvNK9HLoZx1%%C&^^ z^WT66MYU5NZ`Nx0*z{=PL&kU=jjS`FJI<Wj=%HSa|Ni}J4%vwHDiH-DdaL6Z4o3BS z<vjNNc3JkGZBDlAs;wLOHGCr*rf_;~w>&(9^<cwUp~vDnYu%1NeDkk$#j>OWQ$OiV zyC1#Lv1Y~osS&Bm5`RapeLve;=~3~L^{-jK{r56{@g-)yiFZq^$W9&ZiAu(sLS!Z7 zzH#fMwO_s$r(0k4+boYw<KNah1_2?{FZjMaAEjfaWiBUD+Prr&uXy6Jl8R*e$6vZu zsAxo|^YU*CIQHgP%Hle^9hYV2K5tR!{W`O3`EQ%`KJBT8uWqj7<Y36Idt*LZ*}m)G zTdRY+Zmg8szq5C@rJcHJe#P?jatwcx-v@d9mz9{cwO(LZPj=9f6B|AnHgoBzrF#Ej zVOlmp>^W!4?wxP8i5OITyz-^9yMsaR_6%Q!0NIIMk2((artataR~7E$c;SEH!w?gN zkJcyR4Om2&rsvP%NPl5bTlDC_#~Vzi+LRb#S8a3@@7lZfVk%1))24gdY@ccfe|z4z z{mOUaXODkd+rQVHTK{TFq0i|j$5%IUzToy#P0GC7XzrpX;+j3xnnQxYE%LC@2R{CF zOO29uGSxZQxdrC%T~$bU{`M*RteCXVpO)O6v{+}BvSx+&hW%FO7OvKeU}-TG64qoq zQTLR+mQBc~wXKhP<MKMs0F7^5?#KCr#V5HOlhK$m{hq6W!w1LrR~B5z{S;uXk<qA7 zyWZ;EwZlwK&*nW^sG?FA6IU&!-@N|C-!%FDl9dzg-kx(}LJhnB+VfKz6TC|WLn|Lj zZR5Ci;pfgKYsYW)8sQpc{UuV03ryVk9F-gRQ!LLvesyQwy#)>K0X$YM3FjBNE%1xB zwO&wS@3X_FeDjOFhw>c_*Gx`O+Pq3}!QE}$%rh&z7S5mZRAdFm>mTCmM;*KhIJWiA zTP$+5^-?gSegRjL*w3dM5^q2M-Jx}6$GMi=4V6LJQI)z2s<-Q8IY|DRqL-<lopbYH z^M&oNubs*2v$?(RK+X+5_H~DMG-w>3WvO~WAz}Sr)sC>qazSg=czMKp^WChjJ%5~F zdHy_0NU!H)ov)j@n2vgDr>3ih2~U|R9^)E+OT<-cSub;I{<giWjH_aE_6N^#Jr!*D z)3iQVW+@X_3-8w#X;Z2{uQ@f@sK)Z$iL@jh$KZSAms`Z#+GeV|2e)QDe!I=r&GCnz ztG%z=R_~IajrU8|iQmz@z4V`0m(oI!ZJY-Fwwaz2n>TM(W8><Px_j5yNXXMQsEbAU zXHBhUNc1P?Q&%z*La$yv&3adU{_;%bOt!9ApUo|c8kps@8NW8||9CY>RAuc7NzIL~ z(oP&X*HBb_&vu6Wk#N@g=k#u@oOpJ{w}Zxi4UV(4|H!*%URgZje<7FPidlKb5_tRL zRlMJwnz6$5rdE=1Ps6PLd>8i}y%6^K$hJ7in?d^%Qm1+L$vpZMx1Xg^t8d4tCDUd4 zG!33hY`PdO-c%)Ub>jwwD=uwKIy*RQs#ABI*!+{DljUht+~a8ix4xwuF5mi1W@gjM z%fWBB#IvO3nfTM|QoK_vdUth59h$A{_%T+fW4GD)M3yzqO5xM8cW_*o@Pt8fhTSfi zorks=sfGDOH)J@zuzJ+e%lA^IGxy88X9Y%y#l3}Ed+(h{vu)q5X>Tog;C`H>r}p8% ziUWV=9C7!GxV?AZuM14)<Nlwu?eIL3KkL`Zvzu4$Y<;*~jbn5A^4jErhvMv$XE0xD zTCn}TtL=KOjmonE+2fdcBIRZ<WbhZv`fz=l=~dlayI9x9YTNavu&1nS%a+Jt5U8l= zpBg%;J#wdJ<-&!5Ob_O2er}JK>OA=O^>nwkr++M#nfh8<E_)~wCx5==<|F~xd6||O zCyjd#bHs10URD_Q`nYkg@m>3QnHn!YKc0Dw=emr2<)0gN^D+Y-^z~W@=dA8emzpB4 zxXy{=9lsZ|`A?ArH|yOdw%j?+{Vyw0cb;0cM^VB&#f**nl%C22P4K?7r+7;D&i$IF zmKr?|oU?u6Zx8vurfEs@%zyq&+sG1mZ|dZSl8$Gzj9C|@3m(nV;1fvHD+t>ke=5n# zr7Feyfi`cq#FHO;B6nEi%7~=z*rfb{^<!JkhnK6}ZFfGOda$$ccg6C_+h5GE`(R*h zonG;3S@E&S)4%Z*efle{z&b7H&pGWQ?%zH1H2m-ADO84*>9#H2Bq8L*Csm*C+Irut zA@PA~WB4QgfIDq$UHM!26EA5BmX*%bSu>F*`vCJp<%55h7MyW(G1hsxc)w({!27E) ze5nHEJl;{V%&dHEuEDo_9vnP9dHL!Z4d2Ao?<;Emdt|cwx?LZ@U>|t-`$@GL@rb+o zR$r22OgO#jTkO)mlajagILTiqxLi~6@tKeL4A#mCH8rd!dR)(6+*CNtvgAyt!L~hr zXMN|*@G1Q`qxs|7cbW3X8Fbpt&NZE`tS9@iW9Djx#-np<Q*PYeH&_1OZ}IkqY`&PI z#k;Eip0D?N&GNbJu&qXPIL8#zEU#eJr97U&qJPe1PP+fbRLRfTDbBl8)$ehxxMCA? z`IWOPm#|BS{q4-)U0%}l-6vDZ<iqj@7P;oCo8&AK9{&5Da{ccP7bfm+meS9B{ZsYK zf)+QhZ_{j0c)!g`{C8Bvp-aWzr><D2&&$E{z0xQ7u==4Rvf8DLr*f<n106GSmj{V2 zFwlFvRj;Wi$2Hgb|1yiRUp$Q*)_bH{42@a-KUgtsuEH($4|gUd-eFI({cOkks`l4Z zky7Vo`5!^v-VGm_Z|_bC_~|%N?wYB=gP)E4JDzw&Ess6s%DlgBUfHhqd>y|xZ<tvi zuTil<`cojYCjUF9$VP|D@+og7Eo!JXxSpD6q%NX*!}!6ZTX|B~%`EQi6->OL>6mbM zX4{X&=M&@^-yYL3*Lgm7vVeI(=Niql)nC7`bw>T_dgq%d*uAfC<~E*#_Yc@Q*M8i4 zd-h6|jeDi}HcWN=v0%zBq1kVA`}RLjS#H5~e}0j~zFrxRn%YW+k8gi7b>tUwDD3ky zZuqfHi1Enwt6U2E)@CSt%)QFonQtxZQFGhI{n2m6Z#PzdbYOVW>(AtpzvhWWwRo!I zj+lR6d?xQn>(Q1kp7p0Rq$N*GvD-?^Ldt^UM+B$syn8M}`#C$8Sg)uuElw4cIedDP z$x*j=vjrt}=1J_XnzeCX(wv6}PW$s*$#7!4y@Y?|0|$u+A7^1b&sVGe6iWO%Z|$+^ zlhymo7qK(sH+|BY8o1a&f7KbS<)*8uqL%g-lwPlP%rsqnW3ACobH*tSj-}ixN-K_q zb{ab-YG3x4*gi`%E5u=^X>_H-&ujf@kuTq!yp=vx=FyUck7oUUb-tsfMkF>xyT0V% zrYGXd^pw|r?9p$vWY3(^<?;Tk{;KyCYbHA6d<}^AWn<u4>0rzs5MkTP%&xJ9Nu_f0 z*FgT{*(X)jT?om%K7*C#)a5*(9qaR~6asaF?9+{PHtb41^eRnq$(Dx;Y+i1f_E^rb zQs4j8<{$~**q@relCNIWQ&yLsv`^N~ra0mxyHRD$a!Z4dRQ|$woMG#;10y$mT=KQ) z@ku4oP0Ki4*1wL6<XpdeFXPdoiK)LMN}cZOMb8O%eTwbm{6%XfU3f3*DRlF6>mswy z?5(UTFF8N({Be2GVz!6Vc&@X{Gw+w}sQmEjr^2(XZN5&Evn3a@%sjqx71PY^)5E2v zG|psioVQEruz=XK1#c{#e7LJPV_n~pDhnUWXWLj(ug&ph>^k(!v^Hpoz@GolRvCM3 zUoUv^EB~R8>sB1OpU*zKGU<_JXW^Cueo4Z*hbD`AUn&;<5_kId289m2c<DdBpL0x> zuqDq4J1c%`!L07?O*g|%E@7Ip&UK+sgRJ!CEViA_52o@n-JhXw;L|b7lk6-1Jj?TX zdg6!l!b=n78Q*KO-8Z@~*z#wGZsDh}vgk*D9&xnZ7TOv0HEp|U(6Q5J^G@%YU15JW zH`3hk?#bN9>l1mVTcmk^j=Yl_IlpI7_T{_NJa)Hto7|ZeC9SekcjCVNc6r_bZe`J0 ziL&2~UN}qKOIgjcXIJI1FLzHyHokAxlF{Qk<M?Mr+lgZ~*V+4fwkEi(wf_8Sn#`%! zbxXM-L}X{yea>mSxzJ<9VgIN4tCs(G8^SSJdj9J43lk&%PMfWB@_K{GW#9X2Vg>n5 zbSZrQYoW<)<ZH+BEL&}Ps;ZA_FL&JXq-i2ezTcDi|KGGWHt2HaxwB;3BQ92kowA}4 z$>nAzf2Lfuu<ngobb5WnoMN#*yjK@(<Z!!lSAcKz(`rd3mSfJBvRqE=u`X|uY4S3a z+4bM~ZIjlvho#?GF4_Ove*1p3=}(_bmc=cu`_i|zU)k5{pZsjsWa*8|D>pgv9nY1# zsU+WYn4?=p<IT^FCj_6(GL3#x;5T)q@28C~7JI5$@^sH!?cbCXwX)7=QBpv|VHNqw z%d(74P8BLR&)e83l~W)1VM>FU!%g$+PZ*xQF232XeWW(2%2?z3wkeNx-A-G&#H0D{ zif_kLqC}TT&sbxvG`-Bey76(<uD5M_4;<2+Hfi_#QpWs*C2#W<e2)BjvE_l=gZalV zZ|XCX`E|pteMOS*!<XGAN%sS`FX;)sqj4*Ef=-@!tz^)ih+b=<ua0vbU3EyXJ{bI) zzbl;irzPLTC%(`0rUvL;$c^KD!jM#NwRl#L;bWVZ?5R%wYq@lS{#*I@a<xC*>Eq-v z<&V)k+XZu~^d$4AXr%8d5a0HX-|Nas*3@??iMnbYPY-SF{%~hj*F{~0+91{FKX=Qw z-MM#HaYc&$2{y0w+H;S8U9zpFNA4!;-*E1gT(4~c5C1Q+e{gG2L+hUi53eZYlQUXR zzfmr|HYvm3rX}S<<)kZ-t6vzJuiPvUscG&x*OXOGB8Xi?P{E9K3csfEd7-B5DfS8) zNk3*?VO(kul^&F?c<1Lts|8zTYF}(p(g*45KX^i~v}aNTgI%-XKS$09CK^iie_~gN zE(onIZQm^-!!5bFU|;?^t1Y`k>`Ns#H|V*ShE6u*-l2Gkf3hLBM$7EW|HO;(+}2In z!ceLgc}ypU!+84MSO(=OG2g|q3++ntYq!T7vyk2~fzkZy%sIx{r(1**IntxovTjhB zrpvoqeCwTtx9e+v2tM4v_<j0R?)#4-4yHc3CuzSg?)x>(d5Rx`4LU@0o;V7t*Uwq> zX*uVO&%eWk-0kNr|B{^WN^^m8-+}oH6rSjx)H<=wY2VBHBDJsf*Y`GW6i?cyF8;8r zEA?1|!}h)5r=vft{4(*?mnNl1y)cUcMUG9ybMLY0bALXt#_zq>qksKYdspY2RQ_nS zm;1-u$)~=oGrHosI<-pt!u2R^e-}Sa_w_%L)wvQcr)H;CsV|thV8{N7ds>w$?}FzY zIrRKcxv<TKpwN4s1u17+JZ*Jso0%d^zxU0Uy)C{<@XA;JyZd(P*=~KeXP!4#dXitz ziTp!P8uqMQG`ZoD=3J%T6PoM3D|E77dYbQ5u+jFbxhmJE$8TFzf2}?7&c&eYnHbN% zv-g@AFE=&xcTN6$Q*Z9n^fg*fRnBc%I%m~R)kc+7(dU#E=K2`^-(_EVB*<6!cHObt z{Z{XKv(<T~#=I4Zx%m3jW+S_gIvY57Q=T8=T~H9CU1qud%KYt7(|=Sy3!1Jl$A4x} zfyUfN@BXkaeHY_*U2|Ws{rSx&`u+aQTxk2xf_2+&kFVXUZe{;z7Lu4a|8an2Q~wK{ z)xlqnb1r<8dnL!k;io=V(yK?;nOU=LuF{&|=wKsQAZ=ApHgS!iLJ`Z~oeewhFoh=f zFtl6~GAWDYOk{Yed^A#w#j(FDhkK!Ok^%3Ioe>5uSzA24z9qHoIgr4*W&08f&qF=y zv@<gs?#I@0Wx6OU28tIy6Rr_mbusYB(m<7abL3`C>YT*ZW*2RgAZo>XW%-xJ0{Q9Z zRUQ=U+4_szI+ByAt9Dyx$x$brjBQ)y1t03&_-OMJ-pW~wO3M4v6{gJIUdp(kqyPI{ zbFTt+5rvkNf6FSq+FtHh^h-|T_q&i<eydA=-jq()S{ql(uXRb*IP|`;tmdlsx>IH| z2i;r!URPwd^v+-Rm?V4x=LXgCPoA`V%{94elU~1{`gOy<4JnH^$$b;tWT5pr@w;Lw z^Q>1kk3U>3Wtl%;b9%$0FIPl)G8m!`KAWJoASd;eE_;v1^@Yzl&zmcq%Y1w2Vd;`p z3PBRC?5o;?_g764k7xX`YQyt1&yy1$td`!nA)<Tr>#f?whl6?d^NQaUblJM*liT0P z%GN$=HwxV5JLlc`6)@dAGIp>0B~GU7ZHl*g!cTB_xdtrUJjH+O#|06&g)!RCgEvS` zS?g-c>c-S1S&?+EQHkx|r-|0RR}G>Z1aIg3*!@Jp{hFG_AG!6qeW%^;rMfZczn+`j z{rT6)rAG_5-<kT>TqP>mYNpbEQMJ1kLds>q6Zgh;Mbt9AaI80Z^)xSD>16flbk9Tn zlfKo~x#kv@_y|W|^ocC-5muil>AaxB`$Sf^^1>RQl@Ii`9(9~J@$411#ipH|xAGbf z<!}4+Na4fNxVSr-b@zWc*Qx(LP?!Jv^xwSi{9A6{e<tv&@vLzOM|5|9an4>R(T%3O zrAM#Xnn>NA9Z;3?d(n{{xrG}3$JiDoY&?DWpMV+fnlBfoW(lq<Ff6URyQX03qE(Z! zV_G<$YQ0==VY-l3xZuaBA?q&1a0XB1o;a`nRA@+a;oQ|8dTv3x1it(*G5-`S>otAu zpMYI+7O_p@p5UY4qIrxpV)gfsco~tjtJSrIHw0L=R@4^WV!oohcAv$Y#=F6lg*TZ0 zbWRsvZo8qlvhYv%b-AV{iKFWkyB6=U*r1(M5gXs7dq7-YKaWXorlxC9%A!3M;@>Yn z=3C9we8*SiT2X|qunMc5?cr;klJ^h$by^tZt><NU>18zWf<)owm>mzRFGy}Y-;*TO z9WC-<-bNR0t_ptrwu#=;yjCBX{J~a4XNkl<_gU&`Ibtj!(%OtQ3P-M4a6Vw>vb9$9 zUsjbM^Wd?_{+>T81=6gF7;4_U^}O>+obAx@G(ise*_jSCIi^gHlC{MI<YTWm{J61; z{m}7mY65oKYWqHHl;vybFLbmhSGd;|<l>_Jx<#1tlCJf#-oHW*SI8fiV-!ChQ*!5h zZh8F1dB>MuVxEy$*VX60LWkkZ?$tc({#j--ta;rhEKn`q*=YWA%I>EJE+~uMVmW>J zY|1*@dBSY3&iqb4q!Rm2tKiY2l7&y^9h<*uLSo>;KIIv=I(`~*{mE*QU|^jd8nTax zwTxTHhc%d&Yn{mYXG=SjEmku(vHWM<`^b5LPp?eF8snX}92=LvikKyQ!SBZvjd;#> z$+pf#sSLgkk2x#q%CemcT*<d{b&KpTzfuLpqlZ53^!ReIUVMib%Z^^HzOB_)rda0h z4V>;C)5Wm$?zSM-9kpWXrArtmDx8=6B>ZMMOI$#}GS5uQ&dB%M<1XC1(dam*XZfq( zuoC_$_l|^^UzvMFVj|1CS(*lnDgmkfit)L(P8fWdQ4-a*PxiV~D9g+MzM78M%d0+~ z++lPx(}`W~RcMUe28VwW-l%mMTw`MIs{E96PMc%G&M!iLt&`R&DEe)9$;O@H%E$V) zOZCu}+Mg*i9(@vSJSZ(EZduG!W&h&DmHksZ8xC$c#mc@w>faKLJQ)YaI~hL5l=b9J zgx(SOVYhNN!wZuq1{#y*<X42B@p{DKApGdnu`}1%xA%U%#dT25<!iEUs;=McUsnuj z<eGvSWP0A^PnTdY%hqzMd2Mku@NxUMoSa>ibD9m$JpQvZf&G%jhQRb^%rYyjQ?IkS z@_$h}F4?xl-sAUN)Ad?jZWAuKs55_(&|^-MedXL_<2HH9x^BgZJYTXccAZJOwK={y z=*g|r-=ei%Upz|+CT!u#5if{1oyDKfzfhw=smnlud0&WG=>v_aADD%f9Fk~QVKCWv z>BWZc?FY7R$WD%VURKht5qqBFj`NQ_3-@1K+<&SnxNq^5;v*)fO=1lH)JAlzoZ^}+ z_*Qp`1rx);Pa)6w8V|)8MU-f6-dg^Ym-X1y<h|WI#@l3drnImbsqy`?`ZdM7UDdSr z#&PGS7umtv4B6-8JQOjS*L%6ceUp!OfSRV>*EetDW{Ze$#B~H8jC?rz<)#$lS*t$Z zDpg~US*GV7X&a&ApPG2(-Ts+8C2U2!2^k%ZOE#HCm-8_nZ~dWu|6Y#nhuf>(%Dbp8 z2sK)FvbxG;)h0&C!;RSj60bMeZ4R?;Ghm2c*taTBEYwk?QD9jJ%ck(QZOM8UAFmSG z;4E@yOE62rHj5g*1G&>#&6htgb7YL3oAq^q<H4EEg(iEqF@_(sINIfZtCKa(W)u5@ zPij*gHJ61Q3C@<j#wl{6nsMeKQRy8Lzjt}uJv^u2fRgZ)O(Kh|RKuDW`P(1N_`)$| z>e>R8*^cu*Xr4DavM<3`Dg3;Ok3;Fk*)lhazrN|>*syWwb(e!KyEhuOPLHxl`5woU zW2AN}@zK9MYv!iObCfl&H{A59fd6t+F^B0Bfjw=FGHkbvjGmoHyz?``M8xItoz}}I zFP&+XU1qiCe20nk<!A-9T#1un4f=kmhgXWEH_DjpRh@8H&EClMiMzrC$AeR3xA7z% zw1}<Q$knYen=`SoJ?ZzoHI>sQ-d@wOa;;eY)=85mY(ElTVYT|XXT?je6KqyedrDNp z+ykWB_8!wR=1huMXISPvNr9*3Tiaw6j`jnMh8cDiKIbmaknv349<|7X^YXFadDhRA zXV(eln+pm(u$Q@@H&s(qA>(@almCy}(&zj?lF#BO5P5Z(wac@unKBdSzTN59S7rYC zz~$ORhX-z)KXysV`doc;Go(@`?bCzyM&`xrW^+^~<o5kg*N9umCvt;tL$0f2>r<|F zlbq<U)@6ap$G1JPyU~3n?sl2v;bkpTT7m=K#YHX4-`}wBN~7z`hON7ISTj3`AC}Q( zHVt^ez28#oy}U!v!uF3ZSE=#FY}oLlL2=io*@}OfS2w@<lrd|2`y=^JWicBJN(&=T zp5RzxzOZ9mQ`X)uLh4?EZ;stumA5gjNRZ2Xg6p+zp5m|Si|l)fuSj>yTJ=Txu*3s) zugo-_;?Vm}obgqY0;kTh=HQAiUEQxdg(Kp2u*tXMe#-6hFW!@5%>I4o!=;-#hpMxL zdEHm&x)n_eYgJM4TFNxz&hpSxEh_tSa$j+l=IbTN-Fh5n)3m_h+_61wQ`a1QlD3Lz zX2Wae`>gTq`Su!LpWHirYWhYAg^+JeEu}?Mf}^L~n13zRUal4|sh1hBAg*&gPxz)1 zhM?z?43B-S7&;{+bGcq6&-^UC;fLCf_Er3zb((inw=D@5lQby&_>OVP{>{gWLOehD z$a!B;&yep|y(AoU%EP3LpJ{b-dcW!oZpR*p>8bCs^Y-@WafC-ZpZ;E&awT)J%S`9{ zMHWf(YP}~quW7B&_-*#&c*y&V`$?Gzo-euIMxW^_NcyI`xBFm6%A9>B3x$`yYx%qI z0e_*xYv=6M&o9gTSa3!&g59>y`}4yGk_(R;Y54NyRdcmRe7c_dM8)yT+vbW-v-b%I z`5vF>*&?x}(kY~D>4_kRIbI8^qxHIX9hnsML2a6BQPdmx+fqL?U3cC7=D4eS#TH$; z-78+^<S=xxOza6Q@LsX!dht9>-$i_<W4JA@M%OE^e47xXk<~m+kTbYR{Phc$gKw|6 zOnbQ7VPSD$ZuhfL&O?1$&v5tL+a|!5z3T2uksDK9e-2@Jmh*(;-of@w#eSOmK4k1x zH<WXj_+fdw%0s2Q%Ewg_XS|hZoU-fPcjudz+;7SyMSh>fG~tca!U;hi`xew~Z((S+ zy6rG=!_wBc$j7^%JV*-AnQ|jADe2FWj<}S4VF4YU-)DYLmGJXE#p3$OUbk@b`pH7p z2mc<)tp23FWB&3JpPdiB`6PW>@ojY8e+Q$o8QV86jR`TZ-hb|M=)pHJ((N8ro2&1w zHs1aGsMY4(>ayXA$@AakT$k1nR9hT;GBKX@llWu46UV3B=haPpG9_BWXqvoE@BvvT z-_y%iUgrsO;`!8=(qnu%>*2Pfmjwyurr#}mdpVjXo>8-V?nPr3+3nt^))olaHT&;$ zzc=;pgOXr{$2@-ntQU5DQ(U;}K(f`*Mcs2vx21RKZQ6Y-_vJgbrT1mhr_Pg+?C;zs zyLf)f@i$Qqtv}4rxVwJkJEr3<h4r20QgXt!Oi$#(Y|`F$-3YNrd%tR-h0Nx~(W$pN z`)<ybS}%9+weR5>a!f8Cg*iQbE$!}#w+`h>*xOg*FK)^Da-vd4yF>D#s*VJ!zph7> zrqvaTpXBO|(8!v8Vcr+dg<AZMb3CG-1#6sko_pZq48OuJs;jae9r`(2h{LY>mAnYU zotl)u#`Rfm7i>6k<mwKq(`<&P@)e5$u6arLtu$3>EZe!<@nO`IG@l@zjhThMYmNqP zjbuAk#hG<!>Jz1fTb8KY-nHASXVZ3<Z){6D*-dP(Zu!yF%oE{Vc7DxbhwwYr#`V&x z>ZDIJJS{I{lPvjhXQi3+2?iYv#-Fe9!~b{cC+5H5d!)ep$JXcvGs~>t!l>ET%Dykq z*LZvR@Ey&4PwiQmH~Mr5@om@{ykT?jg55&A$!|3sxpYr@d}P{IEW7L0;$21)c6*<G z(B*42apsAv^I`wlD()Zqwm2+XN+a=(lFp;$`!hp!M*Q^GbdBp%u-)2gsak#J^<Tfz zRCh(?kpJypTi1#;OUN?M5|I)M&3PoYH>fA#M?GKUnH8&3Jks^|n!Mb%VrGD(me=`` zm64M*PW-xjzvEfgJf3gTwdIrlaRqWnZVZd@7fCvrw9QKWBacIt<2v`k6esCzQ=II) zZt}c-wBp60$4;(-OCpj)1k)!jU)ZJSqrW08P*zfC-`n%SE1n#ib;`XoTcR}K+n04l zD`zczADH4-W9-Ki^VBf#!_S<|(t^p3i#ttS<N5CF-zQj-z2?jJX{$cJoTwWw=emi< zLBMs>g5Aw0lX@3Uzpr^;TT%4YW#jXlr#_`rep@Z5vEo>|*W0|`y+IsPmQ1qz)xTe< z^>E!^bJul(Lepy6!VfU9rg?`PFuERm#fCjK^KX%<>a~lH_vN12u&C?G?nxi|CDd)N zZfW;qzB~Wu?<a4gyHXzSSsmKI^GH+3LHwZDo!2+|b*+M~Of%<kzcOFGXQ|4@hqLEv zIIqf&Tw2ZHmhkhkMtH#bz%$ZJWgF(~nwrY4t+)23>cxm=mt!`(Ibzw2)7sL-Hu;A| zE=&y!IWr+8u;NTX@(ro#sVcV<e)I5ZmDVjS-o4PPqRiQB@iBYNqZ8*jao%e@<rwkq z{*-D}?+H;Sf2xMc^?M1$q^|MQC=hU**>L~Jp3=m}Uq3H=>)>=yHh|@5nCk`6&y7+d zs;{0(i>O9vG!*^zczRVqPW$vC(fX-V3OX-k3akp)6loWf!h0#>x390zjhD}^9T5|F zAhPG2mEPmWv!o_P&DIRo>#yLt(7N&S31^$sg9R^g4!=Gk$u~E*!k_i<*;UHchkXNQ z3mv}sR*c77m2HLv-voWz7iH?3WIU2~Xv+OLQgGny=SAghv$af`9|~~Int8uv!i?AL zlRkQOe(e!j?D9|2;JMi6e~upy@p)IBS(ev*VBP8bH7|}@xz{JV>WjTO=b!Gr<UME3 zv935BH`Cy=-K`0~PL-BVd~j;Px~n@Pw%p2BGkF(S)#lq6be20MxuJ8Bhk=pqhD^bG z*N$|pFzwmWso~m_!uVlUxVD=e<3!oG3lf&>&36NN1JWxw0~OeIa#yceF?Y{|T^0Eu z;cokw&m7h`z{4e|6SqXtQ>ewaVk38eMc&6J-N_qcdcWRu4s;M^Hs-s%Mx;qK+U2Br zjr`?g+b<oO87`sC*&czpI?<~{?KTPp%{ZqN-o5Odr=X>d#$Kh{N(mk@ifI>>i*5*i z{2OuP<TqWVq8rgpXKmG<b)J$l-&~W<zgD+J)qbm<O|Dg7%jZkM?!QjBb;cPO7<SCd zN%fIaty1>9YX4JUX|L-go75|hGBi`RpS!q+m3yBqqx=$udrA5kYvxbebjb2)cOUDu zH#*EbOPQsQ+W%NSrQykhrc>ri<5`ZbQ}d8Iw)UUn#xLAYwsri!Xs}_yh3Su9iZAGy zyh-0-g}Q3|7QMO0?lN*P-3^{seepr!E$ydq4Nkw$#&)muubjA0KYDwJz~_Hk?rpuZ zWT#H_b`ieMS&L?QUVl=#SjYd=bWxY7OK&QDb$a#x&6A%lAJv%RY`;2rEjasRCM&D8 z^u6en+a}rWS>Pe*_&IBn&#kPJ)?8f774xbZqnwvN3rk$!q1Ev|L~zEU<#7!RH91S- zERO0X)t^|KCVxXWyMAZ%{eO*V^KZ*c5_Wkm8Mbe&YXwuz-b2v|*-~<>(ceE<-MH71 z?o_USM`_!^hYt+YIMg|`j@|Kp)w<EIip!Tb%CF3{&09ZwnUB0i&Fp6j*35mj^3D8f zPW>KH`j)Plo?qwuT=d$pCwJp!sp$0QmfNnMtJ%;Hd`0-xB4v&u!KH=I1J#$S#+iIu z7^}IYyT|AUlk&$!8yg;Yc8cdbS-37Rmfg%ER`c_sjfY?Q&J^!uGER@%q9{7g=HnvX zgB|XVSTDUj=DE);dhG}Iq{ln%%H@`@75J-n33|Q>p1UxpFE`CeoW;i`Sk+2!U%-@9 zrc?GZn^)Y~QgqK%`%;z0C%q`agxn{wS5`9y`|nvXU2yh^-7Cto=3I7~CfeKYy>4~X zMURwcyH;rgx9zt3q!*Cw^+D~~e3zZJosm%vG9qC=3i6m+3+2x5F6g@N^lysyrd1!$ zoY=i#d;6NL`aOHN&ou37e;%8#tZD1Vdkx{q!E)^@%CpxT|D>n2N`3llA^oV8vv%fJ zDVen^T@==j*fFV4#&^#FvHLNRSKl-FcT8w%u>GX>=hjDqzA68`k6QQqZ@MsB_>1I` zV!yNcL7opg#VvSl6$KwkJ7IFyc4_Pb7f;y;@7)<W*DnO$V)a{gq(JAb)2+}sQ_32J z&mFz8rQ0nbV%4pbB&8-B0o5R_+xm5)<}WXqOnj0lZXc@PsKA+{WV6#PaDLEKh11{l zpX}^1<`IZkwj$bYOJdoFs!Y99!#gJ?xE(3mdZ&RyB#rg_!nOT6ao3lr9AuxtGG*C& zp#ZOvS&ldSFFjn{ugu!6lzmshaN<q7EgUIdHb`bocWGX(_*Ggtb)P(EZhF^_<4T?P zoTgu7TP1JUsr*oa@w{nq_G-TFLa%%KXE<?8KBpNh?z`{(V$R>!o^u`yT~>O2B{x6U z<Q)?ysovi_ecAK;R$*n2>YHnx|JbdP)2%x-s&#>ZY<;MFWXy**e;$d<(DA6yo2k%q zdAgOnU43Pl3CDx0C$7I=UA<`U0m%oCuiI4LoXFR4=Y&ks#r(3oo1fIqo@+ntQeXUn zH_!P;$fLWTq+eIF6db>F&tua3{ugE{mY>eQHQ(j4_?Cso<fB47RqIpar!Twu+Sz^1 znu&b<0pH9o-gCM+G0eWp#OmyncOsQp8rNpO>X8v&As~NUzv%Av5GIYYe%vCPk8R6+ z9o}HOsCddkZH0d-elMID8jh`x=qUdypgoD9{zXl9mXlwhKX2aCi~k)zoN}~xpBUvN zG{dc5>ZNe%ln=5B_Zp7xIre^)&~|^l4y_GGpDc4=n95pwc5)!=afy9>UI7(l?G6tn zJkk?x_--F3njxtEGq!74SxYwCDx=`FcS?g<wu#@HTe<V#Lxx!%I+q`5&6-!fd)J0D z{Vi6;CkzbyFW(WW@@{#@Qkx=P>h^Pkw}tKAD$ZYKwX%E#C(o(7JeYC%@n#p6zM0nB z1PWv>?R?_Rny)O}Sz~&0qVzeH_`(XanLCqbGd)-TT%U9MjJ=dKH&<=^zTY2Kb?rVW z6R@BlCRs_DMdgkhm&Xp?Hxmj3Zmd0^`0&|mUXL9=)0l<MnLYll;$acyBpYz|nL~f( zkNMB`JgX0K`4RKA{r|~qot^(VtJPcYoSm6mc=LmOBYR$3ZnN(d#ijF99xwS|7I|=y z&%~AwU#`S5sbxP?XNu0=IDhHWn^V3%oHRM}VTA&x;?MbA-^9QFTD{`FYM<11^Qp=e z>CR<~4J4ZH9^ac4XQNZ6%x=?lXVE1=-WdHB?v)4XzQ_H&%i>;SxJWVo{Y~CX5r1t* zN5egTy&J_uMBi+b5cm+dM_l9)`yTHpx)CLvPN_zV#Q#*QJ&<(JuW)122vAkZc2@OK zDO)f{(s%cR%i1TICn_|_s;;?u+r?4OaBt!fx$MLSxj6@|LN_j3k+RfM@N`AMgwmNt z9Lk;TTMo=z{B!Stnag)n+|}2fm%XCJBZHCS;WeALs;1J)n#Z&Ia_t4YzsSCNXtdPy ziSIqtQw3Zb%ZokRlMaaH$Z$%!KdcUzVPTNCUfOjs_m+V5fp6IUypJze`mLqY_@ssZ zie_T1leClTjST^f?0a@P^JqKX?_auGCEGOe@QR9Bd$G?+pR$cs8M>FI+&JKG#PmY; znB|UHeLUOmZ+upBDz_$Mk9v8B<1xk6aWhso%-pkFHQ(v#B8P{C6U=5wM(fJvPkzi) zd5-B((V?P{>2}Qv9-k6bnc#J!<MXHT?8a|D_Gl$OGiknc_2$FPYlN)4wF9@Th+QL= zw|UaV>z7uPJq>kNRS2p{_PWeewXbq%=3I&U50bV<&*8kVvF@3W&;k!nsdTl)E!v0Y zafQ2WTx9p|)P?Qp;cgozU3z!wLZnJ~+c}e+MkS_`w4K9sb{dt09-f-0Ex(TE_S}Nh z8*IC@4}Y_$kvzu!Fv%c})4XNl<Z7*+heD1OMz)J<W*-Z^$9KPVW4(p`n~s+6hx!65 z^xv##{eGw~xkCTViMH=f{#&c{-`v^#{g8`ug}zTs%lAVrJ{9^gJUhQXTK++3vJ*pq zAfK7n6yYP4iE;npr*QE9m2qd-*lN-6p~vE=VcvoVZrvNo+_!98uJ%?zAmM?8`GYXd z27``hcA4*ASPGdZO^sl4=lY`eQkk)^x|u8I(8Lgj?P7<*c^+Mxy-1(u5u40HhTS}m z+!BIkb3SVOuVit=Fpoh+@WxXQt$karvUD@O=+=;M_VW}!b*15g!Mu+=vs{H1KMv3; z*~)t7*u;>xULIN#LS97o8_RfTeOarXabaS}i)ep_Cgqj40%e+&SI&8K_1^_YA*=8A zrx+x^UAbS=!6-zT<DI8sm;%RwQwm`V1mvFyXxD6XSj?03w78%n)OngjVg%d9LuafX zPGZ}b_55E$#Lp^Ap_aK#AE!94*>I}%9?Qn8?bbD3KX{{yjSq3{z8>ZsAbOZdeOs$R z>~rUdN@0wZj_fC9wm+16JL`kl4flf_QfkK;b~WBs^lqLgd)s-Mn%u<?_7Aj~V^8`? z$e0(nG(7&Kd0gt@g`Rm2JQ}VQ@%2RneaUT@<zR4TYOnT-+XvhvuU)$s>{syYmuAb0 zO`#<-XNK0#5sK1VkZZ45B;%~>E~Q*}Vcy$b9ZfdY*qQEDD$Y9VJ}BpRt?DvobG#?A zhhd>?bCa~nrCSp@Pc4tJX1nmoEB|)l`$>!CZW&%$J0s)vqu8nEHhR2sQ&f9(C9g61 zp=FHAEY*cm3bZ2^uGp{1sAp)ACRORldS$~gp05&?uiL7=TuX?PJtN)7$i}%+<XZni z=f(URQ$Mxce3^Q@E7F?5?b4m^dD@fSdN*G)yU-O~8D+9ylF4`3QbAFnvzrgtn9sT% zTl98KiB!XxZS~$t#&xMp;qOk}oi|ae+Fo|yLaCs~h0_oC=c%3Ij;)Fg5&!piN{H<* zugbRifKy*C>`goKPvwX4)6e%c&pUp-wx463az_4dcGXu~{?B0de?MW@?_=rpbA;A; z21KMCn;V?$A%3kOp^>TgTy0FiC5xWQgA0xy4B&8=G@A56v@~7ni(^LD!-B=<ZiN4M zVj^w6r|iSqzR9(dPizrgdU{X&G!aobrzaQhy>Z!Ma;v~(mh{cqiDIpuEFV>tq<2+X z@aCIuxf~s`@)bw;y15C}f4lS~F6^sYdP?*`{kM?k>o*Fl+L39NS8|!_)VGkGi#P0< zFCz9VR~Iya?3d}T%BK|kCZ~LbTg#q3Q$=}Sdj<Yrh`qT-V%3$xbyrGqpRsQK>Ulh5 zG3Uz}UK_OM2Hl<I(zxlW(G(u*GdX`HZoFb>>Dh3_!g-RSY2VANdvESe+M7Ht!BgaN z@74v9%^u6F-z6O5*l|dve9Malc>{Shz78=5!$6BAoAP(<+)(s<*&^LCvCFb8JC1w2 zn=#*g)-`4w$u0lCCFhBJS8Hx~-&xG>wcm8^Z@Z-#&U1eAE&g%N;=AnhV;#x&mpd3g zx>2sfl_X#H=C=T^d7tg4Z$Avn-b`F#e%|Z(KK{bY<2%ih)z8`bNKRY(shIz8>(#4& z9vt@BDS11~vZC%x;sKABmg*Y>Dyo+B>7SamE9vgfE8bplR$q>G+5TLp|N8kt{Y%A$ zvQ?(Zmll?H$rftdb&tMZtNF6yb#Q&~rG?jX_LsaUEUo3=o3?(b^ZL(T?QzTG((i?- z_bprbu&`!fsqpug?svYa23Gwod~sH<_XI;k!?rE#{0Gz?^?k_X)&2MIUeyNaV(;lc ze;k}BbNt|f2T@jr>ngLXL*(cD%HoSJu;1*vTQ*@%zv{b~YOnr)Bk^x$xON9wcU|Cj zHMvpfdag9z>xBE9S=>SX)?DZPFURyWIWY!h3AVBe?6Ez1y6)odi+$hq;ucwKNp8>g z&QtF_t6E>oo}jvFli|_a`#0*E^qsznPMPV>D$IC{uTs#YUNi67QK<&T6?^y2`XI{V zp!+GJb$tQ@Uv8(ur#*L9>ds!rGABVOFPAlyKR0{QlGU>JCjU4adVYQ{v-Hc~S`wFo z_>bGMA9r7U@TL0h^GDN;URGwEpYrHo%f_vZQ<s-&mHs_sw#Ah1bY!`rkbchMgtO;v zc+S&XTcJLimvh<DDN_^=2|pCs@ue-Kt(r?attI7M^`+UrLu;PQ+Z7V>dzz1@Sek^z z<?D$$*|+XKsX7uEv|`Jg=sSY%w`YbI<e5|~xvqS^x9Q>Al`D@rJ$NwnzD{-zQ}<Wd z?mmvmTjoaw)pLvR`Y+md{rC2BO$UO6!nL-y@-M6TXT7xjg}$(>J9Fy0$@e5Cu>aNy z*mAR_u9Cqrr|e?RfiQ(#ycX}5<uQM|vTVJQnDhn%!FzRgWcX8Nvk7$DEtTe$=|7PA z=FMXN86kgyzd7vZewqCsX}Ra&p7})`96xlgPP!X@icMh0th*d}K1Ww|Hf@`&Blb{B z=ELMIVsn{R$e&u|>%CKf<)x-fr_)zW{?CuICFZ?abvL|l(SOda_%&}{TA$yqQ5${y zhF3ZNt1dm|2eN^>LBBR!3(1)Bw&muQQ(d!^_!z3Kx#oM>UqAI|MbN&`eIZ>FPgPFm zn$Rq=Gc!<ilGf21`}ewT+jp94T2$^yjTc=FO+7hNBVANyuGG+79cCtU<YeUTup@tG z3rYXlB7ZBSbJ42Hi+$#{OxyEi)j~VY^-@}US7@(p%lq4_r?{bEmtl;9Oy0~2!Tg}B ze+&XxCWM)u^<lC;)5>(pzv_;d>!dTQOnn864lPP3EOG9h65o4k+jP}4R_5N<9tq_r zT}^%Zc1Py||7&>%HI@{eTR!7T-a(D!7Kb0YIB@)F4$}Sg*#EDqC%dQQ_k1s#ub({x z-Y$uaTO714Fd<6DS3y{@>FShe#(p!d&GkF{C(vAEYGsArf`F`RGabAumONP&o}Os( zBrf*&$FTdWyS{V!ES?{Hr09dts^HI+2cAhy2@K?2c5TvA4xa<x9QW<MqAb2VK4giT z<ju9Bv1h&2OkI@~^L<t>nQOx`jrYa1BY&SgR`gJc6I9;tJ3h~;S4%D}KVynOTiMQ? z|4nxXp1-3keYCCq%f-6%W|8+>&&s^K)Bjsm>Ymia&9gagnN}-3=t!Hk@cX}a-=yF3 z>z!=4=<r8ZQe<w15#Nrar-I-7o_MfYtO<DgHO>2rk-q28ukpK@VidGK_-I^oS+c*M z%T=0DtZJdNWV^}>Wz9DnlQyjA(f%6wG+oVVcfyVL>(409<lCAhb88KELdBAYOTK5v zZK_|n{PRRxK5w?rZ7(|uvf01d{?OXq(Nj6;YDxWp1#RkUX1;C-ul0WXXp_P-YlR4% zITwN>eI(3YZ8wcMJ0WZ5!`rT0QR{DRHsO>!n`-#5;QgAW=N>E7yd@o^Lbg50-=nk4 zlS#ij^N`Z1q*)G~n`WrBEz)`BpXuhhz=x?{$d6UTqIJ(}P0h7S&#mZh+H+dQh%NQ0 z-S#C0x6ka_V8`XPddVG|psc)}FB-G{m@(xT)Mf9Ai*>tjD0<SOZyJBg&o12|xAdfX zbkV)V3oPoq&Q*)BYzumHSNP#|qxW0bYaP#T{JPZPN8P+6-qq(%91*Cw_fKP%QBwSk zhm(JtS>!GLc}9kQPXD}XOkd}`PTxDr#MwWaEB?^0HNO|1Ie$&z*VmhS)mmFF@tIHi zawcYh$oZ?EmJ8{)vVFUvQ@u64_2>1-doz3$j85lFnpl&@Ey$U*Eo|bEwAYfIdE1^% z<WB!B^s{JN`NXy9zoje7k1<c2onA9Z^N{yX&4=4hTr-|`CSQEt*?5gTbJG>y%uly6 zJ!}x>+!q*UXqi<R`qkptq1T<h)r*%~<<6h?XUkzNSt0QiEE`$&&R25173{@Xt*!Y@ zJ#g2$hpC+}LfU!u=G=U;;@`D<Q-ZDch>3-Wd)>9Hexv8zu!n2juI!A@D;INj$W8C| zk957fd(G7=*H~FvH+YI9Us%4XWZx#1L)?k`ineaGUY|4ds^8w=t}ymHug|TuT<RG4 zE025bUA1SY?KKYAe4TgPQ=~RL-NUk$Z<osa$@?Yl^>4nsq(JZ2$<J<{z571hQrPNU zzxZ{#@b&Vz<T<A{f3|z@<ka_@aa&J&INUm4_NKe^_`=_Jj|lmmdiB?Q2V3gyFIVHw zow}1Yb?$$au7zwR83&#&D;8fjGxeVS?>!zK+ch10y6n#^;|$dDtBB?bcyesR(=L{* z=t}|@x4p@Esq$>%8=l>EYqyju{wl35v<}#Az}E5l&<qu$yS+D+H19;bmY-rQ`uovi zm9BlKyM1n7UvSm`-yLI7s}y0U*5*$$jTyL8pOjjLg`c{9&O71vuSFG0|G9mCaAlAC z@;@1!y}yEzl5U4BzI-gEQ}RZCzREf$mUx!?{_}+NxeBzdT8sW={2;&;@hUcD%Bd6g z4Y?K>$@Q!{ajt1=>z1>*ExK%vBf9EZ*ZJRe$nDw|(X-L$_&E+9|Cy{mHQt|^Hb<)2 z>(K17;Pf7M#}{*sbvX&%uFHCQ_8Iqq$XK7`*@xd5eG0K&dFixC26N}<zk$>Kq^)fI ztZ}?9*-VllD4yv;`uz46JpXzAtef?@()``>pFiy$ytEHKuy=a8=7R-$gw_<!5bv&g zKTAC1kXz<i!J}D~;T$2Sq}k8!DC5Yy&0&39$up5{>gEokY3v5|MN+pbwjTU_-|wmX zdn3W;S2XKlo0UpA-g>dO7OL+5w)bJfYPJ_0m;HF(GPd~JHq=fpYd4ooQI3C@V#_L` zbS8HC&FKth1IoYcwV!one$bYGJ68HG&j>9DzvY*CE92so^`HOw#^q^A{ra~-#CMU- zT80Pyp@*-{zSI^bm-AgPf4z{nN4$n_dy>!#!9zVt^VKyz6-9HGh)qn)*?VCFV_DG} zO$}x3(+UpfJ9{@yQ{7m(;6ZnC^V;tr292BhUgp?WcAnGM{njM+<<*}{Vux2g;$M*G zZ|>)5y!{e$znX7RjAP=a?!)J=O%+<#7qI!0$;8KrsyQ?I*M6P9ZOS?R%|BK=d(yG< zXqlzy!dGh+_$7Q4)0;juIOW>J&vQ5Rd<%3vx%#orOX1m?K^9uJTUCthXMXCCx-w_M z=4B2OFN^zWGEC!A@?FU_BW=~*ea}C&&Sy$bUC3SQrLAdU$M?1WMbw89i?u;h@2~~S zY?<ej{`bISdB@#RkK=f`-hDaIX~?B=<Ic;4FPc)Ao%#Hh8%&AcR?2r>DT;&p+T1jU z|7G5jQ|36HHa+R&kkeg#Sxj4Hw{C_<ee{<XlBv?o)-IQ;N<L589%^n;<zM;LVE>$+ zz(-7<CnZnZzUs|XjVNg?+fpq<QA2}EH>ay4i>>bnGu!VU{>A5IW~yAy`bEzyx1^t5 zaW|-VX`*eI|KGU`%RWt9W%<%#?HdV+c`vnJ{;A`A)UjE9=KW?hwhcRj_DC;ks@zs4 zILqXq>x$p`M<37Wt?N+eQvLHMGk;-8q+3`_pBtzC-qbR~nW@j;=x<oDtl6_k!tTPP ziz=NuGMlDli1{AUk<|UOW7?C>ud{xATDs?IN}NZv@V1x#E+j7SW{RKW?>=ESOZ|_@ zYd4zSf4@^zPhO|d#P(ri^6Z_<zk6Q}fBSa-#WitfL;PA+>0bS_P`h>K<pbdl?!0_D zt8a##fP&>y`?*J^9{FW*UVE-Z(2T_*vXRrdJ*Rz|uy)1L{9~)4=ViU&(O7XxW;gq_ z#LHgy69cA|Wlv@f5^;W7lk{hrlAXQ9gk=nu=K1GY%8PtourcE3xj3_mS@wBX6b;rt zSuNf5g0oysY5LAXlFhTNXSbcXk#Anj*RHa!rMOT>cj>c#$2aadxaOBed)luy`QjDd zB=()Vc(tgsUW4oH^I7Q}Pcyu$lyh|BpPgqova9H&$&uV`-|8=vJG)0(*Uwk2J1R44 z%lEF#tRtptTf&z4tX?{C<CaCY_L=Hd8GpWQ-p06auK9XVt`l4KOWpOgNtp6s{>|Wr z$(tu0=1<S(kDtr7_VC>0u_BX?ujf3bS;-n*5)yts@%5|2MemcOqt>3Wov`A`F28R< zS{#OzM!J^9e^&S!c~5fRB3rw=+P5{>XyNMXXXT}?y*P1q#i=PTpPt(Bl6mUR%PLd; zUv~N0v*hT7;wfT2eNj=t*1h}QlqDpmfAKl~?B>RPUbBk=J|CQGJoYYdo3%2szUk4b z8CwOpOL;{k?ABdmbUt^dJp7l#!>XNe92p-@yk%JXHDbl|24Um#*FytLl#{jgtzOBX zXl#2gH1bQuB1`d1JtjZ@orb>eeq5Nv7@q#s^7@*!@sSz#okLoDGVG^RTq%0k`Js__ zuAKh+aPRp)zn7YIocrq8_;;VFuQ1Em(-)T-9H`I{S9m)?Z{rd+<Ni?grR%mB9$2RQ z^YV8-7M9NBYTkWvIu8z1u#4XaF8uh=*CqbPQ;t(X?<dAA_>mOI?X#7wH8)oFKhORH zlUCn4^fPAm1@+vYOv<&Yeezlj51$;4Zl0U8J>vTd21|XzvdddG?ti^lv6<CJ@!AsZ z(^(!Ox~4MzrYpBdbn!@RSRL+l|LT#{=Uw(u7dQM}FU{Vzou8TMxMSDF850|ol_PrI zF=u~klh(GV{B&~LE4It!vyV@9xTCYlSZ<oI##|2J&Fg%^T3EjY&+~YeEB^DL(J{?~ z2?D2<r>n8t+1Y<&xxka>DPeL!ORNj6SM6E&z+n!D?@Qn1%PzZ5@Sm3QVcFs3l6zj( zWa-bcIMmhbe|*noe&<OnOg;RG7p=8DTWvO~-1gb%&|x2<S|xP&TGCVVH)lJXJ?HZL z-lcT5`x46<Z!e!s9%hwM?621fWruG09<ye7>4r{I{i1-&`$Qc3j$T{%=4AL0jR?EK zhJzpG?tZiKL-DNxo-baUZq9$pd^c~4Wy6A_CrajBTygW7(gx#gafyaEX0?STzLt|q zxIJ6IdRMJtX->PdnS^-DpM?6}S-IusS8{Y21Xp<+{F9lm<lY>WVxGJ5PRq-8ML0ie zxHyyfk<syAMy+QKa!!gdoospStY!+IMmRGo+xPYRug?4a+2^Ea^m2DQmp;=;UOo#K zDZ8BW|LF8PcB9)ggMaFQJj?ce*<ujCQ-f#Lo6e`xXPlJ^@?9<*uM&Dj)aLEUGpo5( z)Vsb~S43@y-_Nmda-mGmIsq${Y7dhPtvj4KYPTd``Oo)X`ETimR~btTzIHFJ`hTHt zxp;)IPppc$wA)*Gkp(flv(^1sUD@4|CJMZ{t8roB*Mcv<11kGVvvauumLEU4S!P+^ zZ6}`BKc8f?ewi{wefw9LQ0t_hvy3(0JgH^O@0<Dk9p~q4k)KHm98*&sGd?hCcT#!E zJW=iE(u$9aA@b{e)H}IKSF~}x6!=;hmHhl`%RN`dG`al?{z#~Q&U-S4#kJe;RyuQA z?jD_!5^<L<ru8><Gd;h=+I4EewvIsCOB+AOO}S{+?CMkA|JP}uSE2FCKBkX#m*%-g z`X_T=*?(uZ`ZdO-+Y|Ku#4b5B`%`?##T2E0iC(j#nP(i@`hP*irfz#t5oyV-UzS|% z*!L&uY4QI(w@r9n2Y=WjHCxrG`_+s~r47g3<~-dM^n6wEL2===_2JV*G*}hSvECOk zk&COmA5iKf<$UAXyhLBEoZtSN8+)DoO8d9g-Pe4l``<`PdxM6@b+1Q%8B;TMuF7`( zWU>Ck^r%J0CKX6<{#o8}<G?|tqozt`M>IXNOLf<Tvzl=F9KJZs)W~O*^@85JdzRd^ z_;sP@P5BS@>~rVc754S#@IAV0FM5XUvT4-0hsXE!HeFaZd*OO%y;UxOTQY1|ttT@I z$=@_s_VL@Xpij27il3A(&M-@By!SeFdFP{h&kyVq+j01%=ZCMW-bffGc?RAUs(Tz! z`ovVRP`RwF)cW4{pU*xf?N)xfUUqc?W4q;S;k{nPw^woAHRQ^B=WCdt&-HZeCczMI zG35~L;+<U+CasQWGGr=g*Piis$GSGLO-bpq*0D*S_40VNo9EoyT~W!R*JhQNvN!JD z#1=oTHPq#D;fo!wV|!yQ?KpRRZ~vCIXNr!?)9opWTK;XTZ~rihxqIxkV2$Cwel5l# zr$Z6joJB5*TW1K?Zrm(!QQUg{I@jA1`(AX<{nfE=MZ$*%-JN|L`zrVvKA!cjTwIXI z^Ot*X%F`lKF9%VF8#|9NY3hnIsEQOl)iZ7Jz9+ViO-bu~-&NxasfW5mc6=z>^mXw9 zrAV)Bbt1m;d2Fjv<!?;M`K#e7w<+cIb`}Pkr778qoDO=-%kkaw@?36HM~ba>s-A#C zbkNc3Q47}8{nK;Vy~I60_PKG^%p>=<JdJpyl=<T9s|L{@>c{m9CkQ_%QLPo9JmvM{ zdrM1|*XUnn6?o#o7{R(Kc4cbY*D2jE4{a|o`u1$zYqO3y_qsj)-t0_uoXB(_od39O z^j+cG_v*IoGFZd%#y0D>DaKkMnX|AKAHhd!+VT+TY>%k+RErt<RagPq%l~ZoO^j zUpAp2!tUB5p(}|OYS)Or-Y7fyQ$+ALj&CwWYj%qyZ02sQZf;r?SMo4$UYT)FB3s_a zUn>6^xtCO|R-0(=SNSUWRB}LAmk)b$l)96<?YHyBUEcnO%ig?sepTn#_n$W3g8un1 zZryo3eOA#KCFv&jjfT=r@7Fa&?KHi5;c4fzL)K^Ioc^{<>-rp^cVg+<cbq|G>r@;w zm7?vwhEAEda?eD?wTtg)r?*~m?QDAVQ1Y}Bmlxmi!W)@Zq77TWb}?;OvSljQfuMOF zk9z&L=$C5E7FuX6xHQ1`8Oxs5jIUGYdfvG>*HmJ%_rj+W`2Bom34Hugt>!P5Iz7XC z+A-#TyFPn2s(q~N@|nqgY~ud;)4A23|82G`+uXJE&-{=zO<B3~uR1bMnjNa+aZp`+ za#!dBlXI>KZ$CW!>-^H9O3!rqE2V0|OrzMm(1j%{?H0^E=WuZC9F>VdZ{+^Gk2ha@ zXW9k5uqLe=#e!C5ULCfzwF?*>CrY`NEpAd`_2UWYsN6ccuzkUt*$X=(<X5?~#a&VL z`El&fs;vD&Y(mzKmG2Ea-&~V9`TU6NUHL7kjk7aU{`Sr>OuKZy;(O|JiJ#iqNoCQ? zxZ~en_7R+uZliosxiZ32^kn|E)z-DLv*xWi&$H`**=3!l4bP@F=vUQ-dH2=D1qw=J zUfjJ!+~;@Gsp7Aj%RgL5J)<G9a&5m~E1%O$@1C2Jl)gQ+Q+h0VTlU|-Zr2?<4;X5^ zdHww84Tr>qU-Le_cG7NEe6&eu%CDDy%U6Fn(aU5n{_m<|<jR?43$D!ePL2=p+GBh7 zTBuY*Tgi?WKjy98b9YhsKJJ;(N6f{VUKnXApImjiqi9mv_KeNy(<`2Pyuaq7sAug~ z`N&gC@^|;WS&=jIR#w&aP08o7tlQRReD`5}fcU!9_Ww7dXBGX_E!q|m$$yqjWXBYx zqn{USIkvm>@Wc9V3Sp;Z|0!@B@PF$kU~u|Ien7zU{@z1coO9RnF=k9zrMm8q;<5>! z4Q}i>xaC(?+M?~#?D*E~FaK2+#(yn6rB86hmQs$*m#=A^@r(8kleo5iqUrHQu^a7g zy<OCDUmsev`7Q5he@lfY-G-hg7BtuOShp+c&r1FJaiNK>NUHzcOG^VnUfjCSo9`?3 zE_GF4n@U`o&Q=lC1BnM1xgy&>8*Pc1d%|dr<~@zPsgG~;PE^RUm|45Tf~U`TFWc4| zx*@yoIfbuIy|c>JXY1+yfOBUp95{quy01EPRwbZ?w`tL`6`gDA1^&$3w)K6BXJ7zJ zbC%n)+%{&@#@dG#vrK0j`)VCt;+oIqWcx4V>irnsy(_DntNZ@C<}cI!b}h8a@04~z z;@=(R^HS=!evVPOnQT5&_}$8P0=Y}?PvLt%=W*DQ&$A_GotxyC;Jft;&y4vDR_3;a zDbv)h%8QCdTQ6SmvXl8tR$^M^ytTHKXFu57uKG0VVdXTlV8h*?*DP(U*=)@}DK?Dn z(tJ~!dFs-oVV^w~-k7_fLGsW$n+@F8eah4|gr=D6{=6Xkloub5vdg}`wk!(ky+UPg z*cN|#7hu{i(!u%ni%#y*=TBn{&+4bKdN=y_M=goaRl2q3lSbH<Eiq@_<YX#-(b3y_ z)90JpKC30qemvRY>^5(1biYi+l4`Hs_6^CaL(CNw-{zTF>rXlLd8tS5z6uT}FHNfr zhE;ohXUSz;VL8ya(C}?3bHNIMACBf0dw;Grdwx4j^Tth<B5(I=pS$H!R_#4(+2hmw zOpCR~p2>TX_iXXEUF_2mUOP_>eAu*P+vO<>RC88eN%*xg+cUc3;9@C8mBk9Op1Ge~ zdv80vaa!T-C8zyOU`>nI3pp>A*0<O8&b81!RTH&o@uD8n@af;4g|*L1%nS4vv`O?X z(_YldWn^@2<1WKst`i%>cJAR`D$nmdH#=9Z^{DI90)`JiwASnKDag;z)|zl#(Rb4# z56f2^g$b*Z`z|>LIoC?Oo7mU>WqZgwkA8*3^s_cuOFzzy<0%z0Jl%F+vQ3KW)!FHG z@!LEOsI0B)OK{xCC)Aj>l~2sse%qm2HjJ-VUe*ixt*&(Q!oq-P_K7)b=NB(caXYeh z?IONKSMF-PT2R4W9<%DZ!fvkPI!(vLL(do%Wt#N`?UA2jEAsb2PC|>is#itemL2iO z<i18-pJabg`1~(_myiop-U}4(+zX5A*!wl0=x~hr93v?kG1Jm*Uvi}%Z?_a(GMOc- zrSpl9%np;5$$Ghug7a5in-L?cUE0DdKV_EnA;~nes@<CAuD{J6Z+B_jzT;_IL8(VI z1J9i;(^*Ptg+A~f`r8om;CG2Gi<;Ek`vq;sJkQ=QIFrzypt{aZna_RAv~xvVN7e}L z%37<cQkTsuR`^EIPT=6wt}FrG*w^zy|N1_k*mo#hEosk(nO&;utG@+L;pCcE<k0-E z{!xB!>*94&cvku9IzEt5>^QPw-lRM25j$8;iP&}fuNEq2a-KV@Dr%Ee==zn*moBVc zoUFL*K-2x8f4sYo)NT$iKX5GPq<G+K#|IIQ-6c~Zk8Ryl6dI`)6&Pj|kr%Exb=tM| zMQg<UHD6ix=I}`8yVpIE`pJB?uEX-eO2bbkS08zLFZ_D#Qc<Sk#w|-iZ&@x)y`Gf6 z(KvLr-mzz)&(<9I7N*H8&a=Sj%0nT&(6vjOZ4af~Nm{yV$!DkSeI~yiwM<HUeR0+U z^RRNgBg$(JZxUX2{MY%G0MU%lea2TWb%n8)RaTg@Y~(Il>6Igs;=e0H^nkps?4Nm` zp7BiEEx;@DXOp)`;@U4$HpPD_F%aXGm{L@@rNqGPebgGwb51618$UPA%x<-|4UW*0 zjyNa#`cYL8*SWMy&R_npg`MiFP+084BOzy?!kVXd_CSE_;nkDtT7BF8DIAPjXn)J^ zj>g3n85^w?l3m}-nEMv5Jv;aO*6)=jS6Llf4s6+W+&lHkg^pcYZOdNpT5ay$u(7!F z-P=nSw%@E?vcG)JyKAdUc)yBmYYXPmY?M0_YW=E9B{O%m#OA(TYjywko|qrDPVW5z z8Bs1fzljOyRnxz*_Vevu%Oh&e#_!bW6}G0-BT(Dd{asc2qIT2uCC*w4XItc#95=eE z9UJQOoWZr~%`e$jmHMe3RhwfoL%X8AmtGUqwfQD3QpWhLZ`Xnihu3?nDpz>M)^p4c z{e0l!gcEUo4_0qjQI}vcf1{_zssFyhy=ofUBotTV>~#vbIg73D;<dfk7pWTO=0BQp z`(LZd23x+w#F`0JXEoNhTyXqeAXuO_L+aAjE!TSjx0z46SSV6D{nsrMPcz@O`2qTF zs*|@Jcl_d|I@yC;Mn>{xiV@%R4x7ohE$Wx)XDctT+v<DfW8t*z^9@BFZ2M;1^t?$! zfYIFaxzFzD?Ms*(Rp!0j#X0wd*Atf4(My_M$+J|uG%c#>KbPUv-}$AG$FKX#)xS%x z?*4qr;o}?S^*<+wS-)R4Icd=q{c5(`PV7^knoRbO-g5ZT#rZd;ED{vq(%A05StG>d z?auij;{UT=SzcW?yZF|$Q#aJ2!cD7s7w?>EIA6HSbm=GefTZNDS6sQ5JI{)aT&_FE zDCX<?*URKWUzUcxJ?B;?=40M)C`5-Rb4zUh&1oJFHIwvKR~2-ZEcmqRis;#>wDaa) zZr0doimuSLvlo9k^GkZtZdb!gUREc$3sUwaNQD-jOE`N&<Ih`>&EMZBdf2zd+n&<Z zU0s--b^LSgwY!dMUrshXw%PLhi#dIjUgpK&nfIeMG>ca$tf-kb=YPt<JMVZ8gudMy zyw+uVi%;9`jV)&v>%ICW!lKmYdLt%*>E*lJv`FpW?R&4UDmlgdnXhThTYg8M)n5Xp zpWB+~p|!kyZRg<wyYIdYtYc*>n=SfZb=&NlTXR>49$Rv}#%yuoF1h<JR^Ds-GPQHx z>xjG^QI~XmFC2ZuyQbWFcln$pA7<AaOx1EzoOgU{@211QE`;x&B(c5abKslh-R|C+ zFOyhO&#aI-FJUytQSY=w`ab2Yuab3s)tCewS$*Bz(amGF*5<9RHb+!$d9{1T;YgNy zQD5(B_qpa@EuXlCJ@s<*S4O3htI?`!e>G??>UzcWWYLWiFFjA(x$LU2TVdC73)h$# z-cwGvyzsk_p0Gaqu)S=#*X_<P?=)+Te5>wi7OtBRCtkg^YEoRehmY=(>#et^OyBRh zp4+$~e6Qzv>tp<-5Bk=9^ZU45%0Jm-z4eW&r&_Pex{4|a$1UjaN<PFb@+wbn&zz*H znYK^Zmi0>ebenf?%AB>NHui_T0dt`JS@)*MpsF46Px&%;wSL}KI%ln&+UMg5uA2S{ z@tmx(i3tl9pWJ4{x_Y<Q+23j(*R7nVS*mjKUsuegtX~fpJ<bRihJDvLGGSv-$ExZj z>*|*AFulJN+_lhKS>AJ(cmDpIKNI!~tX%Nim^-DeZ&vy$cHOmYPLZ=_&Hi5+!W9;3 z>u+)8#`-71B5V9POt{*otx=dPHt|HliYZSnF+IIk)9J_)dUE%L3kTlr@7^`PM`?$> z`9B^J$-@nY;v<yUrgg`yO|U%byQ`MDQb{TDtm9#YHp`CO4KCcWuC9JJ!fx11esgLW z`^<O7KRbMMTCcLH8BBi=(w-Oo`ijnx?k_F#&K%tRjbB}C)w7w4z2%MO^)xarKYeYb z@uv5(TFk5FSG=wacxP@c@susS?8?I<3T+Z{Ypl<nPW^RauCrVe*Wy`CoBV#WaXgr` z_NuTgtA2yD-xuKki+4sQ(*(a%{eB-WE|+N9#p}9`W5S#IN0v*EcwG3&>Xop*zguX& z$HsSY`~ebs3alA~T}ABos4u9Qba8{#9{oF<$=VXjn)HfH^uKx^i{6mod0eDr!|ao` zu{ZMjUeD9pfBw<F3%|M(?S84g5Z`%!a%a$1?)CPm+p~LWZrG{pzx(dVk3*YHYeW}{ zaIRe5xr)W7yKt#wMwEUl$8yuwclCa8<)U(#*?HFsYkr4JTBhq(d$`U>TEkj3?B~IR zHUHUjy`F9>@ipUeo3y=A$+N>ZKP^C_{j)xk>#jdOXZtois=UZA&iYLu?T{*CSBmj0 zV}aD4WntU_JN>sE-zISN@2is=^|d)AJ{pFIiB#XeGNqO^TV&OleWAH$S5@72W3}99 zy7fE%8{uBPQ{wp&0b6u-ulr-yliKoer@tV7t9J7F9TV7gE?fV0>%MEx-I_yGUl>Oj zn2GFIdo;nh@%9?i$<>beb6!v4y<odmar60Vukx!GQombddF8#|zeFT6<1>$-Leai@ zS7rI%U+p!nX^FGET#ys9_2IYF@|4F~0l&`F@NwM<C=~nf@lpNu&zsV(=AFGLx$31w z8e0yBL)n~7n>$;boP?v-dp=*T`S-=*)1T5F&byN;86993JMH_PS8~SJJM!mv&)93y z^`Pjaq*9>X`@=_`IZS)2v+_XZ-^=Nhi_gAZe*Tl)E%}>wOCQ|WU0(FEarM%rn|J<o z5Zr$4>tcmnaTdD@ES}kEifu}q`F`pn)ddG8_08bolbk)d`VOl|;nV0GwkfI)THo=n zy>s;U@+phXo^Z3b{_1YjWge*5_%l8DqV1BNxrv(=gq*AvVu+s_kfX9`vVomu)(g+# zr4<d!?p#^8^qY;MZ_*ygupU15np0JEAuQ=t@3@05I;O2{DRI(T_=H1J>Q$f?_X($} zklsD9i|V)D6V;rZaDUsHl|m0gS3XQiZC^AqdeMfSE9#Rynp!n)a&+we^>g?Cb@SCX z^nRaQQ)1rDynKs#$MfHwy}RbBw#qVp(+HjSDO3DIG+X0dTkB7H@pj8AcCS3Nt>FKH zCnchlukyXFWGlC}{%vbzaJcwL<5cWZ1<Sw8hmK7(vUAA&@vZ1+s?Qcqk4>3OQd62H zUcNEm^dHR~F%v3OJASP`kvk=E@5*(D7wa^>l3q30y3oz3&hFIHKI?#s-}N`VzqIe= z;S-x)HZCwXJ2~a|?mGFTAD@g3%8ec-X_rMOelxyNwr+}GWa~*`w(VTo3?7!O{!rql z$lAVc)`Ar_#<fpFLIU#i3ck4MFtvZ55*BdoROWh%-qNR6A_CeJ{J*zPigvGEdcFSt z=lZ|;|1(!aT&d^Pjs0<)Gfr;~i^$&SaM!%U>o0Z`mxpS4I_{oT`^J35G?U2xF?%~4 z#Qr*Y7kpi?SkO>z=heIKR-Cn2yd&TFuG*H{j;l_Jet(i2ymq15SspppZi#%|=xe_c zMgOe~unl^#wL9qd0kNVvRUJCYO9j&JuQC(Lsol)+v!!l{f3D-j<mLS~TLl@?wlgf& z(fo6{ac}taR}*I0dRq(IaNXjyIrUTb!Tz?o_7l6))+#RbaOTxba_M?9gExELm0e3# z`9AsZD!5~z@<N9s>mEx()e^6Kg@qf$ex%4U3vHRqnI*AGe8)z!|1Gnf+8wiuIlmoU zp?>(<i?1h?4hMMdy(BHW=d1jb##gLT)s4&ksU8q@@A}A@oV>(iapk_u$qRCrralv| zI?X+6t)ZJs6Km~-oi7EqO}m#LVEuE}+P$wznsOr7+b1qETm9#^zuNCR6~6!7FLH|h zk2>jo*m1-1E!KQ_47}Ge{bjdQU3u@E%>8HCiXdOEBJt_$ev$qxGrMj#x8J(RKCAX( z`NjOs!_`eqHl7D`Oy_jGNK8GtPgEqub={*zhovh*e!TZLbiB|sAu3tR*Q2j5q+?$D z&)G@*f4@K1kddhON$;|E^XOsuAyKel=B1h15`Q>c+}F=cZIrW=U)Q$JB<xvD$=B6C z3mkgx)zoM_|IC@}_U+7a0r88c*r#rfw>$0fv!~{s;(Nv8PHG1KQ&M&|Mi=(zL~}WP zS3WI&=h6f-#l<VG&e1u(!uX5M>r;s(Y9|jDZODsEn-;wArrOS^49Aq4(HG8aOZ^%1 zZAzZ4-eK;bf-<4ctamG;_i>(D_vGsi-BWrw_mjVSMiy*(#=TtUz@g7eS-6U;^Z)U7 zojd+CZOVg^d$T{si|hzfUE-T-Aupl)W2VqH&*SU9ecSzXGUuT)?c!eLXP-;ASZ?NV zSnn5eR8if*G0jBk<gM-%XVqUa&2yXlCedk{n!_}YOLvXDb+_5ZMs5nM{^4OCqTQOq z$>|vrdNycE#fqt{xl3P9zO<9y{_KnHXH0WHyqoH3w_(BFr`e1V7j}QX`cYKc(<N~! zYv|JY#ZM2f^_2VD+*B-~RN}eczd0zwE%kktWq^pY>+7&x$B&qPu|65Q$YZ|g8Rgv_ zi`PG1Z1Sq^Uevw3egpHU?JgG|`zv13wpv?O_~wnl43mg^v8igcTLq2doFC^i3H%o| zeJhn9oVv_KC2onj<hl^%CA+(ow(WYd&(7(h`jJPQeRf{kTGFB(_VJv)CHoG}997YK z23H^Edu561NS$amsEpZjvR0TqB=7nO50%qw8UE~gajC!D4CiG`7k@iJ?a{7M9m~Hg zyZVx+uh`n3qoLAf#1?HOGwD+6`n{$q*$dZBQE}E?zj0eb{~0UImD?Pg+22mg=C(O? zwP^C;v|Y2N9s63j&>+dbwR*+sYxBG~ZED3nJ`QpE7#I;;l6zLXl4Z`+_~>fiNktdx za?MZws5xaaDYDM?Vtq((>-86l)NUHKeljTkcR<nVi@EeSivZbU$J!%*wtvvxswHsp zf9cjAyqX{4{yMc@f9rPGc$WU7gm1!zf4xn`T-v95e?GZ`!T$e;t&%I#c28WynsoGr z>0<V_7i;p^-i91yWm4ZMd}c~l-g>o(FT78(2u6w|vFbgW=xefgNj6XV|GITn5eL5) z%ZBMW?=vd2bK4cN`bPB2TduA1fA5^7U9NEV-UPnq#RpGUp7Ub(Bl>)?hDfNs(@c$! zolXx|tnez@92B%v$|ophm4m{hqF_O$mywLC);!uYc~Z#wk_8;DtCS`%KRq^eZI$_N zzBZ?C8bt!Jnbp^iP2DB7>_+Ie7pHc`yME|&joxP8nzX`n<%G}#0ngKGI4<@FIBPTT zWh{9<D@&Ba@lx9Bqr6i^?zuY@9$q36{-kVb&eE&SK4<JT3MYo8EIRvfDNjZFBfE7c zT%yhI-mD3iFI;QSG&ekP#a{j;$yz#F-A|U?`Yrt6!V<d|D$a*1TAYQ8e(1CLie3-a zN)WbQX%us2@|L+=9WG`U<r+;h6W)v8?>Czq_VwEum95<MpR9_mu3-wkIO$s$Ysy5E zJzXAIXT@YRjiU>eI5Zc93f-9$;%nqT*HgOGYsCip6pp7|8B5aU{4I>Nn3?V6`E1s! zL;n}aY~Qnjhxu)m+GGKldZ$D4T-L6*V%Ej19Mar(X_A}6yOn%QHD~loN`ke$IhW5~ zrxKiUduzb1&pd~3l}z6!G-+95kK$U%H&e1iu107ze~w(ea`LhO4ZDnl^{gf(OvN6W zJmK>aj!v8UUNJ@Sz<CKRiPeACuUY2EFRz_hWKfb`=4aL-Y^UctYu~HHtGB0FO35Fc zR4HSsJwK$$o=fWt@2~gnHl~v%X@~g+HE(47yIAY=F}2*NAF7&nP9=M4ntN%yJGJ`% zf*Y|}Y>B&a=Wa53`oyJR)~v6^tD6t~YOMQs*hbe{n|;BYX`&nwTaDdo&wTK$;>bx3 z6E_ZJefGJ!@=}_BSA{)a>+&3@x=DT^e73Eg`C2Ok3OD727O;L>Q-6^C!<K_f790M% zFj=bI;gDVAW#<_W?q+#PyKpdY9$RN{$bDn+XZBx)_l~LU72d~J!pMJjN_uw6Ur`zU z`MEE4Bz!2_EXPyErdpDkcJbUA|K`e<X=QU~J1(60wP=$^*xiFJ-xuFo9V#ov;1}{U zg0qLUPKQ%PeQW>LM&`c8VCG7d$5(Q;uGp;|X%@fm=#3|p?O*RaF*Eksb?ai~>Z|nu zkCIjhnf(`6UH4!9{i&?1PwY~xr&p|rl9cn}v|Dgx_EWnlmnwt*$z2Uvu!6_tW<Y$V z=dIJ5<}a{4rC-9ib#e$ROOFuqY0=OI_3u|!#3XNB{*U{vZ7Dx*X8VTi^P*IoyjR9> z8k;iwpK$w$Xu0->CWe{Jbt@vxJ&rJ@N<5R@;oQS~rz7soc276ALRQ9!yFZ^j?5J1Y zv|~n<wBskOh`DoasI&f?p;g#ZRIfcP;<6}5yvUWdcf4BO3{FO8^IZ-|)D>-=U}{?3 z5Vv6JOM?}wiXsJeua=9KT;!PecHOP|)CHzq6~*p`d_s=vW-B>}o>8>je73GJF?voz z;Dy_3c3)(E@%7Qpvm*QN`-=WzXFY0tF6@-P#PPFr4z1k!vm(`-U3p(5zsQyS^lFuv z$K7?xi%+*T{%Swa*XzV8xUG8UI>)3#(eeVK!q4_iJ0h&Rh1t#0W#RI9U8$4p9<4h0 zO>t>)%=OmjgYpZ5>nfy`E>0KJxa75GQ6T7o5Qn9+eRbQOSuLpAS<V%-RaWHs*QthU z^mb+bU!b%2f)huWp*GW$Ri6dDnMMBAZFT#%Y{B;RZ9e(J4|11%h+UAu@!cyw?*ubz zNP?J$SG~y9kJhoFyzA0Buixu)5VGQpmg1;sG(IV*r(X1F+rjdydd>4z1;#V%TzYAj z+l!5!2liEYS#A3moVAzfSZx~9k4ciJe5PJKY4CM&RR>36*rKVN&i5u2Z>-Rp+`Ies zjA@FC*%d;KE*M{qc>d^r{%fv2<u=C$_MuCfq?1pFX()#-`Ol{$CZK(Leziey`fq^^ z-Qg=XFReJB`@h)N>v)K-Qn_1c<;IXRZd0qGUS<7UEAFk^efw|0-BoIZQfd><wAXHo z@OJ#+e|TnLAhW`pr;IzE@y4=!+f`q~{&l8ai-Q`w(ZSOe&4KAVGwrNDsE3-~;6E54 zcRKyKv*Xb+E{$&U96_^b+7ZhF!enlG<>`cN*m}=@)@)Oqzsfo(LATd>Oi^>nm?Wn% zeVJ>wKq<T6a>13qI)yEa<Mw1b7SB*-x6xH8@5tZy)M2AmO6zXx$~pY=E-t^bE#?oe z>ZX90wroY)9WMG#&8|;`4Z7afDh6n(g&gCaa%67Ot|#6cvllH)S^sEh-OX7w;^${w z-M5=Bp^rP%`by1n$0fHOHXgd1QOPTQL81J_YwP}Lrhhihxuv?!Qm=wvVzVK$Ku4YR zMiz!iff{NP8RTw;uS={wKehix#fIdEI(9*`D$laX8-L&EJN48T4}-3D$tfMDSE-%c zq>#bQzu6*_JG@xnRE=NWtL1Mt80nil4UFEg*g4_ZbiSM!&2DT;^LDAMWPLwf%uq)} zWFlj{&eT&%lkIdxEVgGmT7LPxwf2AS`T8lWeF<Etc`3yuMX8CoAXa`-7MHmZ(&d{z zsd?!o849K*h6)fs@V?4hM?+5+%{CCZ`&)ZU3+pC153!r7nU`j+3z}UvIqhMRq_IQ+ zYstj*?~hJ$P8L@4v%TC}dhzPxImPluj+#m@KDWq3a!qUc%PQBjBPF7+@kUSLDHS8B zwd(Qye1FZmS32Yg_$W+XlzhGB#gvc}yk0k**V}ydHcC11FHLO4e5O;rHZ$)Pw`O!y zYDjin_egYfI^wiJ$K@lJZB_ByA5$u32T9u}9LeVUtn+>TBYpWJ_n6%+CQS%C&|Bca z!ZqWFR+o;R>>gQLwkCo1dfM0Rf9TwqvCStwU#7KHm+?felX_ooW6gKvN1?1M=4s|9 zhU#zk%_|9ueqQ`KEPr*<bu)p5{lO2DL)N{H61RU?=i%^SgL!DyG}nnQFLUhSpBJRF zl7&ykLgP3izk6*Jf99*ruA*C1b>5uUky^p6wZ|+!DtYn8+v$f^ds%P1Vtp(+x1oA! zS)<8ahCij1ZYTP>)Hc{K1qg8#1{^pSR>1u8PHI(kD(CsHS}VhD#WL6O{I=42SA2h7 z^S%1#=gzaqUM|g@<a;e+y7)uUTWMPQ)1qxBXr4H`ng8{!b=t{aFUw8&w&3tR?ic(Z zrT;y5SM90&A*M4c^^#~}T|>prS5JQ_pJ)BjQQqA9(!xgXU{d;RwVOM(RVoYSUpdcu z?`1>t{_2(g>vkH1Or5e<@^83>qxfC%9zO1Op;O8u=5WinZRyr5F-?DWbY78RSAn?y zKZez8r_4Y}3@x#N?pOt-IvX1<eQ08{Ff@jwH3cFPTiAX7+Xe!4@8cgHcUiQqUVY{k z_8BkCRE~uG+EU8D&{QRB(k7L=F8_bcO*X&45a>8j&E;I-<K4gay+3E>Sl+SVyz-@u zB08+UrPDYbbv>NmeT1n^GkC?77iC}m-dyxQ&2Z`oTb0Qx_Bh{NdDDA!NXH#zp0|sd zXWpD3X_WGxS^C9C(M5C4x=+^R7hGyFY0|=<x?CGom<$=Gahk+0oG*9$j=Z~9#qy=+ zJGOt({5WaLwbxbA&vwN;FI@K5klX2f|M|}Cnr}{TfA;$9Ir+oicdas8s`n@UbGO;{ zlOiI$1xpS%q%<AtdE9YpLAZA8ujGR72dj2p&=!BPWmQRCa!vX!nfUwD)#g{s+%f<1 zs%_0X7{sUgFKy4g5vL_37w63;ap1}Wg(JK7U0=D>Vfx2nr@q54{>*zh_awiJT5I7Z z-FH^67jhc3PxQROn|^$i^~|7;D%&IrO_njaAJW{dU}B+kCq-*<pEAcIg(ao(30j8T zKmI-L50gwfyKLf(o)xCt$EL`xHJ&RL`c}o(zuRT`+BMhebn|9s8S5>Xe!O(o&0uqh z)CZErn(gXu85exra7^Ng$Cbpl$G3HTj)}fe80xt3hJ4Z7DN_HcE|gDNXv1Q2P?&f1 zzLH}hfihaG&1s7_tS*a|mYZ_xb;UF>ZatTs-IL!O@mm{ox9(ZNjH2uBQXN$)o$m>K zTBh4Of6@)p`n!wj1sen`Cg{d=yyVIgogR=9x$S(KtoYH+LY7m)eN(&m6xG@8mN{}1 zUumzt<M6=xgT|#dta|HLm#%$%FE5EvtkLR#VaZW<#b-)Vdmhb>6)roo-%bDW=BA3h z0S_OjPpm5DwmEfi#fv?ABDTMMxA}ffjNp;gLVl}5rkfY;oL_7`VfD-O)CZ?tdPehW zcsM`4P<6&nzna_k5yPd7oA$dFJ-j8bt=FtsxnlC};Od<$VQ+r~J(sTDVgF^GY(YiA zK`YY_s`u_)pQ^q5;LT-5hq`$7KR$oP_2H`d#jT>%>Q57;-H&UZz8pHyc2DO!gF}e| zB{#NR7rL%7bDfX>j_t3VdE<81dl@$^-<`y`R`F@?9>IXKOc_Cqtfgm9s>gh@vYFri zkMV%c;d_{w&%z9|q&GJ(Av*J2o$6gY+d$y>`+p)<hkPb{JyPJ4{_2aRZ|wHzyVzw! zqLX`KIln*jzc0#^C46hy+%qLb2HKpN<$wRb<!TD+Sg=~~CAh5T(PsHL<6(>U5jCD* zG3CV<-oAJ{*ZKe1B(1>D6MU35JN;dH^TJ9C$Fs_we->_@deb@W#DxF8H4EkkcYI2* zlk%@@(m1+u3eVa6z$R6}4$cie3o85U*knE%cqI$Q%$hLqf!Y$4h}T}ZtD0|WZN8b- z%B5`P*`%+iesJBF$*-%vzmss=5FfeQcomQR+4z#3y~`a;j%M<(DY>&0Pg~ScI44N{ zr}K;hfyw#TqMokGS>zx!QNeNPDKo9fu~*8gm*!tPHOI9n=#Y$?Ut^lZ?)7euHAU4U zgDR#Pi3BzVU*y=LP*T)i@pz?=zs*(Uis0Ql%oIeX#x2iS7IrIaul>cz-41-FX73X= zKPZfuwpMMY*@5Hz+jmLE?5nC@G{eZ7{YAjDw+q+ztuZp#Uoi2v;<Qum5;kwFGY`-V z4g7Jk$-_wZOPwRf{kOV4FL(CunAqiiWRuz~*=aK~JEtAbiRHQQrllic<Jx)b$&!^U z{AWK!mfZ+1Tfz6g!9bh+Me5GRMHg0SR_*7wP?b|3=n!ZAK4WLl>O-of_II*NS4i1O zISU`3tgt>;=1jrl=iiNPXGQ-%|M}hPu1BdFccwBp=7jCkJ}~u|GULyhKWe-9RG-}M z$p7E8?5eJ^M(g4>zd+kwhg$yYj31hQzRT!#;7xqlp<RBn?zO`9ko8j{3lw+VE)2eZ z==NIfa*eMW!#(4-o|Nb8yFPRBD|xBa7qYIFU4B>=vG?uHDslB!cU+AFB<@x33@Xbn zTX&po{r;8Rt8%vLZ{nK8{c9_yiLTM^zFn6XuAl8*_SmXeFY$k}{#}lF;s18?{ZgM| z?P?)h;ndhUC8Fa<y7IA@f7c#f{`rD^;{vy>nEAod5KDfrFef@c91Zg=zHA_{_j!27 zY};V%UmN}$Tq`RTCE=B6T%aH`$Hmvi_eqlVl$Yz%MLj#;syH_?ut#U#tlIti-a4J8 zw2lSWZ7)e`_J|x?Z{RG@FX6YtK__j-CXT5>cfZ=b(fO6Hyo~AQ>;$H%##iR<y18A; zYr<aD&d4jXc3P&j@XXXU>)Y1<;Azf{*ZdVtL37*=y!*hX8Zkj&qkx;(qK6{2-z=WZ z_{FH&Qn8)iX#S5W6~&QhOV4+t&-)a0@A~Q>t^cP#oSm1z@hssb!<x#^cLaVjOPM{o zEauMGT`*~x+CIUBg~#98mH%z@uy%NG#G&Sk@FP*J9g|k4E(<A$@{94(ee#b%EZ>lW zOXKKD0k)@mJ~4}_-_w!5ek^E~%z+5|0OOdH)$O}3*)X;5Q@GbT^ZZoF<wco2T>CbJ zJq&(mo3$Zn--h{5FG-|-I`{m@<j<{FHkLJ?5;I$s^Ynq4cYNyBEpf+-TsVS*SALLE zWw;l?6rkvLc*9Ad6k(zD(|$f$8fnFFT;Ra>nmPKPs*W7q@GdPyaz|+-yH7;ktL0N? z&D^o}u-lvPn<@7SuAC{cEwq0WxMa%d#3PRjbWUd(vGY4b=pBD|b(VGHt}j-uPc^z@ z90ea;*7z1TBR_i9Wft|GU56}X!?%`2+hw-qL};6u9^0MsamDk^m-a=zYDnkSU8A@9 zbE3bp;EfMH_X7nVa=e(QW3Dg3(#$Dbc*{iH`-^+*(+kXx%`+_G-gD|!DLggk66Ce? z%PiTlY<B~%3WM$bpFY7Rwo%tNGWWKf{j+o}=S=PES+`%k-*)ew8MCMVx35uo4~-nO zWW#pf{=oP!lS^7En@is037^#^`{fpOt9iC1%IGmG88C|SPdylSHtJA)lrX2)?rjyX z5BCM>9N&5B)t-Q7`j=F<>!$C%sQ3GQbGGir+jC=lPpGblNe!Exv|0FU3NO>jUr)kq zW2d)feqE(?D(Kv&Rriwq9f|B-F;}QVc+Mfu=aFmc=Scnhu2Fyg^1Gkz8Qkx7U)`5_ zXKwR@^yvZXxTkSjd}$F0lv#dfO6!Z_!Uq+bCw^fsyHqBLC5vIHax9EU$ztBcw+saK zJr7@DUd_hsx$V!3wKLo7)P04Q*-nw;;rPIkqILVNPhD;Jw44o%p7JKP4`Q>o+~2n^ z*5`td;FniTUsPB<9qXEfoBm9Ac;k78D^IYPlIn#=j~+K(te-riC`Eow;gV@9>PxE6 zX!T62J+jg8)to!?jGfxf=o|Hwt$*;esK!v{r=eGYkW=Y#Zjod^rXx%fbQ~UA{(AJ| z#_=m(H58BRyxo=aEa=gi7O$zNJCg5h3c53Ws?epsR&~`X5>2%iN*KcS{=F*Dt}OND z=yFr}N}VHxlV<!-YjLyPe*6xvyUk0+Mq%cUCwn_5d%uqgnH}QwzIB$VX6b}>WrKT( z0#5?FgwOGw3Vm3m(=|8MOt)99w2)zO-9ooLeyejMUsyTu#`?`^v^>9LV(~^pFGlk< z({@j>wl|5`7j-*(ropMD5j*S(k7VhVtogg(($-$BwNg8-eMybtdR?le)?#2OE_7Wo zzBf_mD@%|!=PVZsm(9M_XBzlt7|5yqewEXFOZwiuo!57NHlLF5(KjVdI?DGsUu;HC zvjNk=0+EZGKRz`rxZk{}zFe|A$kbjs@djsKLh-+2W!@>95>Kuxti2|a%JCuN!a~ms zr;|D{Tpp_qz7krh#`bA}gAUtc26e{`_I3f28Z4HcxOSfZ?=|-C!uC8%a~`O+WPP6Z zBhWx})r_?atVw5%Y}pxlIc~+yo4R}dnH_v1DtgK>M#}A+aq<4k3=f>oWL!SBXx;h^ zpKtn|QohY_M{-Kv?bjlc8t=6F{@Z)vl$YLY9XYM&2fLT8R?9zhGBvbe!|lYy+JPdu z?4RC-t;wC3we4xv)OV%QGYl-uzHzH=I(Bj$zw5=1b^JGFw<Il84q)eYN?$ZR@@K%e z-$hx;0(}4P9{gE$?6F4u4*Rmkd3O{z|FBPb@r23J>h0XAA9v<4Uhue?Sn>SOmM60_ z)h-*IUb?V+fA3w_fZL%(dD9PmXf9to-PySEteK#6g6qVnLr*^+E7J6m$c^NyyMDR% zl>C=x0<IIaRi{M;zB7<7yry}D(fyEs`p00SCocp4?OlF2-)^00g<R2I-HOjI*|Tky z?OV3`eB)zAR}uHle2;_ecJ?1#ubX{Qf7rgA12Zcc8epmJ%#6*5uI}zm^X<QEAkg;y zuc)0`(BmJ<eRGwyx9KPx4AQdLAam(hu5whmXV8QnUwyLFb1#L}gfbQ0IFoYi^SL9R zcNjTpyIj~TC>a6j?DGgVRh-%Ih{^DzL8_saX;k06IVyimyH`5AQ=H-Ol#AE-a&hEF zr*{jd_`Y&ocKyu+#oy|=3lD3D?3~$qh%;Q{peN66>u9A`)=q)$1DiO`8httVct-Lo z_9+67_SRncd1(2O=+{QNwQe@Qr(ORQyjOecNBeVeb28f!_~I@%6fd{Gon*1_Vqksm z@xTK~YbG7}_T6EH%oN*jy*V8z3M{T`j#$SFt~WTSz4!LAV=VrsTz`AoJ}qE6$<Euv z<W;ED61sEkp9asTYd=-y+Fs7#%XkyN!nFM5yN&B+)wbAvVf}c_Y@T$s@!qX|tlD$J ze}q)TOK(itTX?!Ccdqo_FP0y_R4twz*Y3Mi`g-WD?5De~EYDmUdv#}>Ld#4a={^4+ z-Iknl<QYp)JBzPM-^HZct&$%aIE9TY%fzFvtmWu?bTHxUe1(fIZ=Y*gx7GHXZOn>8 zfjS2bbX50B>6ag<W0?K#X!;@V({Hj4Y~b!mkgk8XY-#c3pdyJo6J~90VQ_yer?xRy zwY*4EW9r&4`6=EB9IdG(t|sePZ{#m5`7z_Pfvb$V$v%$DH&1^5P`O{8{X@{MzqK#j z3$|?kd}m2%oWyTqt0hbMkJ{y@8?n3nu-cLDp!vXlLFo3Bm%1B*mgenpy_UAFgg4pj z>yL2lyVH+uZ&Qj5b&Y%#8h4fbth~tU+$)+MAxSGI)$=a-@Bj2mpMn(symY=Ji5hQH z6%TbT+S53TdxxZpNT7~z-bF!0aq)KycW>-xj^H)gge@_fW47JQNU2yty@PLqE0z}- z=M`M}PnT7B-(q{gqsyx~{Zg~%v?I;(D^tEth(B+&iL>p(LS0$DYwx^nweQcr{w&4S z!cy*od(Z+AjrvD?>RMBD!e*WDFj90*YPiF*&#th__+*RP+eJ&&(p=^8&+=8a8fH$n zDD&Gp_hxpOMrXCs^o;zZX(ww8=B%30b3?<W<hi*@+AMY#HjPw=XWpOg2KyL33_fW2 zUC(TSUd_S1rZbNGm{fhvOMA!KEauk#$^Ty3{VeEm{Jzn0VbI2j1&QhtZuxRa?s@%l z&zcVpLs<Bg%x5Wuu;hqr35_oll;!!eV#VAxcI)Mr7d4$(Zq&8+vSH|_6E7cc=1<(9 zJvrdqlpe#W3Ce5dUSBF-yk6%;`ijp>G+x}$v2vL6U-Wv-<g3>rt$76PcSl^mYSw<# zN;7D-bK~_R7xhjzsyttI=a*A;LT)C{nxJS$>3w?Ba?c*t|8nPg1kXH{JF9Q??5|n5 z*QorMXHdS@?Q0LVg#{><x?Vm0+Mi<q-?94igqWwY%*pnT?mf-ne>g2syltX+=C8ie z=`2#8Wx_m}=PP$^ztF1pjI&HD^v=NvGgA8(Jom^I@_TU1-993H8-K*4ttb38A6fU( zRsL+6Qh@uW36j-In-<(kt62DTtu?Ro0f(x)G5h__)F<2PT1_kV;GX^DLfN5;OoMx- z5<B$u{8!60?Q;H*cz#dq^p;uWn=PA}axU%55-Irg@6YW1{QLIHw2qw@xAo5V-Ko)i zYDy&AI_-aX>q;j-l-v~8-NF2Lm;dejkJG;#?`Hpha(aZh)VkyE@*CeAbuwL|A-Tar zVX@#LgGsuU&P(g1KRm7}U{_!F@hz4#Y=~v#)zHAm6jCA+9t?XM;XV15o4~&J>t{Fz zwVt|W@P6W)Pl<0&?RunT&G+!xS;qqv3mF_$9v=Dm_2tDL2cf1^Lkr6v8>AG!X8-!V zYk4?}twPhiI}@&XB`)3YkJBGCBG%!3#N_Z4%_)*!UOwAyyYzp~(GaEji9U<oFm9FS z-L)m8<&SFDoS?@iA50Q7dh%~e@s{75adEu)zshZ#4Esb=%71XWMhG>|Xqd`rGG{@* zZJ%YDqX(zr-p0xqPg_q;(n(li&ZqIxH@$VH`0O)F4$2?ip3Zh@|Kdert$QD9q_7<C z*`@K0^Xgo_U*!ufhp=w;dpUPznwqiWiIOe7wiA|ozhi5(`OEx<Q}ZI1ymOrN?Dd(R z<;ph}6uTL)XPYI}TU!+SFYMM?!gSn8=1$1;{r~3n@aKLkv%9aO%QxFKXw9a!tzlV9 z4%s}K`iOh`<L|T2+`SMs?Nt0{m9H~5Mtb^o>CY2m4dkr+xaUutO7iK8l@+slwfp2w z_k~4h-#x__5jndx{j{xe(&ie2;%xC5qAg8dxX!QRpBA>-)#~)|;QufFuJY)*skJw~ z$K2+>O^aFjZRxLH-I6<9Wfp!c`rYKXGx5-pzSr9ytKRZz@iSkeIsNOM8&kK-8?M>9 zeo6fG20ejgJ!hBHEk8QFRI=*Z^xE{ao%da$icY7$)7bDLdF6*qoOc4JdT}kPs@v6` z9$s=WN&Tvfdr;__9qcM=CYqIQ5DQfO%-g(p#_1Je((gNXS7|M}uVB{i`#(o~sa0FC z+seC1xo^Y0S=^V3ea+&`HWiXvF<m|6%DICFyMmb5CZAaPRdmYfsx&cuzw?(ZJ{*12 zC%fIIn7i1(Y(t;MolEW;*yK*FJ@aC@@q`=aO?eWcE@(fidj23`UF#vkiFwiMnfKZ5 zyMN1V&W+R08&1X*1^we>Sz91-{M@|-j4j@?rZzt6TDm6X8)KpJsmWRA8(-Um9FINi zfAzkMwpDYcQTm6e8rq$iYqo3dvpI9mG2-)v{$lMe<;~F?FXl6UE=qmA=R9})Bw<gt zf`#)u>}NfBzb@wdpOmLp>k>?Vx`#|Yx#XFS<-thfBeS@(6LNUxT#j;{F)iYb+<KLt zPtBg_>^WP!S>`5J)Qp_hi;nTHTF91|u}98Pi~qP}($X0@Uz@(YskX9=@q5J*xn`1Q zx6E7x%W_e9K85>C`@FT<8_u$RSUTadRG68&mfq^j9bW?KPn=EL#C2LD!#gbN3`_B* z{z;9ReWJ<XD$Y+IT1eh1-0|#Xw9AgUf6l)Ye(h^#%eZ&hjTeO*^HzoAtlA%BEmj&C zvv&VHlj`MrTK;Jt5&r*ohrpxzYiqWDs^3yn>;HTHi6wiRU(eoaSQ)<Xs`>7s9Z$B& z7M*;k`lVz|^1E9t?}{tG6w7RBsAv54uU!sXiGpQ#ozfEJRN~xIyB@8w0GB8oADtMR zJPvvOd3|@WWTOg;w?X#v2ZytctcbsS|N7cE!7mLQRi(~W+O1O${Stp8a76U5;Pj5n zHqBrS^A~^5zGwG}&xMvKe;7-*yVXW%IsFrI^;@~scvo5r&rbWdGH>gfrcZx7`=M-q zKu<F3P1*hKg40|S)DlvedY8Yr+mPHBDG=mzA|XZYnQP`J6@CfHC5)=gH}{xy7tNln z^P~9BuR{)P<sl}EHk8Y>_B@yoD1Ov-;jZfkKk${@T9t53^KVw#&Xc|ZMzU{{_*Eor z%A?cf)$**6nUVU;Y|@$=Pt@l6K4>^6c~EA}&5plsUmP-S)!Q_IONP7fOF-?vwsIr8 zvLm;TChgv2ku%+M=eg)>Rx2lReeSs4rGKaMeok?@vvuUEI^9WU(vPL78cXi0iV|^A zeRB2lC-<34rY-LNVCJ9QH}4d<Ksm`5adXB}aDlSB%77bEpzwH|U$=c)*y~g?{Yx|N zS8djtT(s}pJITko=k5C!p1t|at#<Flh$KOGjo7zx1{&r*Gp-bVHj7<2*X70y{{E8| zzY`BThJIc<`L~2p+tzPazujh&U|6#1k@?K?Za?2Ivx@t-y*BMxt9?e;$MfmmRerpP zUHTze`p#snts*X8|J3lGpLfBv{a{G3jAy9vbGZo{+;)9A6y>t@j5tqUlHOvsoIUDh zEB18MHQul>JKP-`@=D^KtJhoc?AIF>DOJqPD*W4Jb=WJm__sjcwK+lt_gwTo>MvYi zR=l~Uuukprf$5X0D|bGf89jq}*U`3)L%Ovsyaz&dPM-OvfHAB+<AB6+*4#yfPh;N8 z%ADOAV4-$N_Vx0H_iYW=x6M`m_DM0JXu_PS^-PZ1GDkOVHqT;wI4Lc4!Jj0}?3vCE zcNTn}zv^=1Ynv<jXZz;wVzvtV!ge|B+zaEtFrmv4?}KV;XY6g>@bIC)b3YMvwF3ed z_Om>@ddsg{ep;QJ!X%#uPPP;GnV+<;-8t{~&oirQk4t^(U!it6^KfKQ+vc(kUh!)V zS-dfqYMf{6jJP9v30kP=a&4Y<gDYxQ&GSVE!G+3~8mp!&a(>1~ybN!?WWCGztEOnj z923q>G3uB3EUO%g-euXzIPPPvnIFQ)I9vOHx8ic%H937DF`<_$o-VA5p7FLsHZ1T$ z-<m5kIG?4+t1<`6Xdjz5foE&`<&+o49?n{xFZl4?|90<RN7ACtoO4*OYgQSvX1<o` z>{<O+=DF62U7vkk{p`W$IH&)j@##-~r9GWJ_5aeT%fFZWSm=ApddEI1iOJtZqw0UI zZu8E&tvFpq&dL9{)w6ZJFBGS%+rM(;{=t%_HN^)@iDG1o+0HgJFoO0P$!nuvD^V){ z{Q8pNroeen=uB1d2gY6ra2w^S!v$ug7iW22t`Q02dM&@fSs<LpJw|Dn<T9UycNX-U z@0ZiCz1_9a<)6|_m!Hh9@_K*4nkd=nC1*J#i{#(Ryxre4{W?;CQtyIPpd2Ptpw#~P zMxa2+K`v1Cltib^`zst^X>j^Xu1e&_lfG874=~O(ZnBKnEcpBO#nyDL*c3%k3$aHp z7XJFf`#z=SO~>}`qh+auH}obK&E3AHG)P(Wnc#ZS_?^Q0Z$Eq2R<<dmHd<xo`JS_0 zX+||)w`g>Doml<+>2@PeU3c+^x$~~c*iMyQyCH1XWZ4ay486}!t9Cn5_BBE5nx26+ z2dm_id9m+x*IqlF6Su^8|JS@&wWl?6?;0PAo>wp9JbUxo-d|OVHy%;y3)pqbHX$Hy zhQZ3m&vJJ;S$A&OC@(j;@Y~_G=2g$4)xR6M@MOPT{dPL90fR^A(R`!%y`SFumhSoE z|NG1t?)nRB9?d`h&hx{?cCUxO&334VW@&c3diql?&SqgZU-Qam7L!(`owHR)>@9iO zy0s%~roM#C(HOVh8x{UJ0hNM(nKoADw2ALtam8>?_mo@u*RCbHx_+>_`skNv>C;_z z+AFu{O>Gd=D0;A`ZPD#BXFpy2dDD+MzUUq6^J(IFiG4h}$6Q46UMlx6nw_3|=E-jE z4>m45ZnnBFHY<cJ-pKz@L(1vl43F{;@=W`rRqx%J?v$iIpGl4VWF&_mN7O@&zPWn? zxwWQ;X*0XZct@U=ae8)a>Hm<&e09$k)_pDebEWpm$7SX-%(lDDKgq0W*!xxQD6dis zXWDy(oC=F0JB5#SS{ku@(QmBWy3P3c@}={&I#h&r1o$t>_x%(ezwUY6sn1#WH?;jx zUUjnMR>8D657)>h9d0$95XC%w%Lf59bFp%FThF>(yq4Vg-G|nwZEKpQc7JEahvuvm zjuHv;`xLgeU*_2u<WpAVSk7lZUq(;ew@K&v$t})(aTDh3p2hDz;XT8B^-zZc&$xaB zoycU?o~<kze$^zda>ae|H0#**P?0Ul+NNnumN(r`9uPU+wNYKg`Rzj!$z9N9%5Tvk z&-piUx^GIp*m_j0zx!+O(zM{u6K`!^asE-&=buX~XE3XLiT}7?_RhYjpIJ{O>-21P zE<e2gHMo(|Y*-n;@azBfs|6=>t)EOf?EK<o#PK^@Ic=YOdJ^A!f$1OXgsg>C*oqYF zjTF*~6bpfU=ht6I+|CuAv~c^IoTmn!Z<m;b&Q6KUn`tYtm`5ZbLi*E<`1#XRn{#;% z3#m<Z=1b<>dG+tg-><{^Id?g;?A@ibcH$wA#6RL;$o(GaFAra>-|O3NmZUYY-a{?0 zuKkvG^SW3qr+<R3dBMr41)ktm3eVfRrm5nGSO4P$w^HuO);S1*TPZ0_yvJYE_Cs1J z9{CCHmL0wI#8b}Tk~gzg)#R7A&Rm;)C*`31;p^#4FYgBgIwz(>S}E<1rUl&1Tu{$k zJuBLA?d>niXFgFg2lac7%6VL>el_ik$#4Ayo6?`njP}@+G<9}~Q4_OOGE4D=G{N65 zADl66<%{%S?Q6BDSfN+_S6Wiu>e1JnZIL%Da-N;6nrXgeYYezhF|#XHuiJd`Zp*ek zA^&En&ivl<6;!AcZr5;7eRA~gr|(vty6))@OXr2j*ggXnDo<rEY%(f7KP}qrNLpcf zT9`hlP<gr5cK5x=DBb5bw|J=6y*yhqcg^zCZ>AaE+wkYNz^OU9`B$Dx_o|8&wp=>; zjkUStaEqtx_2n;_a#auAs;clf_L4uF?bMw7Id_sfB(B{`zkOR2RH!^MpZWdRuhXk+ z;{Ki7XMFjPyovVD=X<M7e!QsN`LNP>hx_)BpoUj3Uy9AMS<op4DO8fq>AD=!%Dl{- zEf{KaUl3HNnC9$ZmQIOt+0SeyKl|TJwNq~;-YG3DYreX5exP8?@~9ZQ#d>q5ThCzs z9K@N?s3bl|d_u|Ul{4+F@7~UQ5PUASAg|&P+p`lF5`0_|z1}DCY>3QDb=yBz@ciEn z$JNVO|2|aS)?8_j1S(RV&za76f1C9Bw?`-5IDQ=5?GfR02(su(UY>t}V|nr3sf{lE zpl;9MS5d3}hqBAK&S`yBm3MPx*4oEm>NC{-v)w--3Mx{r9qo4%<5yghcq843`}xE? z6PCI;&MikTm93M1zRz57QqKcN+pBe^C!ep&@Tpz@V*B4iS)ab=_#S&aYvU7^WZw=` z;V{Q6(K*F}Ef@Z8+;P{y>(lYl6Ok3MB58)3EX~Y+UUTVn3~`?3Bz?zmA-CX?O$Bol z!@5p}ZOthEynOQEpG*8E{4|o>e&V8}O8UA-hZ|39XS%N%%8*dp_#@~;rf%3ZcP+im znL9o#tP7uUwnB0myzBEF()Ho@XghVN&}d8Hj!&<=U3UD9e>TTz<1LZN!i%npNZ-}J z<~y~^_iK38@kM&Qr>}0GoVI@Ugn;^^{I~!8z49sewDOh>{CS!G7th~fT(R#~_L6eR zsM=PY+x~f{6{pL@Ir)NGDLyakrn}o4IC1{qN@ZEM0!xu%OpR6wX+_GUna+F>PI;yE zum0`2>Tp3;>BUvi%w7>UuE+Z~IH5FC_`~bp=2mSG4DS5nY}EP5`bwNs$=e{oPyHH2 zv!%3~y_Hf<)NV1}@|!Cxj%WQZbMQz?Mfnd#$VkdWP7|5M-w`7zJ7<e!Pgbuy;Gxf} z@zQr$wsCZR(PY;DJn{26m()AE^0v+`6ftT_c9ZRjb}C)o_>cEZW*+O-yvy^`Ce6OX zqImhDSha%Z`<2l~m*4DfI5lr(dY<CRuF$+oCpq|D^a!4DobCE%d9(3(5i3YD<-x*T zZ@%WI)V%1pzWHWa;^Pf7)nBLHyKt?jH)MwUo?Ac8%>8jztz7ulr=Xv?(^BpkU(=p> z^25=)ix{R(5dVJq{%e)3GILw6S4I_nnNhywP}Iw5<qoG$ow1G1lN6kNbneW^y$9AP zh%DLu?M+pB=GHmsmzC!JSZaQ{bkjV&&C$my4u5*@tWmsePvHD~lW7r01ii#>i}PIK z6;>;anZJyC%T$i+*AEpXm)ozA)F|FpSk$kW6p=kYH$VIUgF<NM{givsuk}}ds`#n? z`<xG`net@*_jeZ`EdKtq?fKaUa(9C~8CNY|9$oQC)_049kLmG=A)>{3ib7$Yv*RMV zS4{fZ_(0>C(W=D9vNseyEB#{L@bku(^Jam0#|y+Yw@R;B_qV6(fz{PVpCn5k?zwZ& zX2x_c2X2v_5B4-HiS|AF=jO|Me$4ZW-Zd2;7B)9<Z(~bV;tH<fPi{C{q;34`ZBNBJ zcb+I)-4~1dZ}2@k*umMFtTeYcj;-c)-kxpZ?n(0U%xcvqJp)x3JVA|=eU8d=&V3DI z6SAGQY0^#p)!8fmh07L*6pF2Sy)$+Bs;zy|a}#F$k*-k=pK`?HTC})**rtjZiM-G4 zqNCC+FKui)u(0^VrifebzCFJ4UEgJrpv{WqkJqdHyd%1C<$LwN+u|d9|IJ%_vLeQK z+MI+noEy^)X?d(|D%R^3sB#h8KHJOl-wr-Y?)BY=bllANpR3)UwPIsW)`^sisq&N3 zMB5(AYzp$(mgV=`{NT$kg>kEcGxqr$)BRP_c5&uviQ)!n-K-K%QHC2a4U8f+QQgbF zPV72eBdup6c~3OWIIc~V>(->HQpN}8yxCil*p+-VLOfP4w0KYJ<CKiY1+KTmCl>tf zelf>u6TTuvePY1Eql<Hu>a%{Xe9Blg`+Z*K|Mkw9=^tvgUhjKvwB?un=A5LRy6rJV z6`ZEBuV?HwTKGFg?(b|NuLI#-n|EKsR-{;B?f8&3IE!4Qw0|wwRy1QtS<viNzMFKm zpONbcWaBbe!&~`gz5nS+2hG|NIZvKZWY<yLzRSL}{%)4S3qHXwue!FlaVfWcjE_+4 z@NP2|@6c@1oUCE~;_%h@>e+HRM?w_-3-~Pf!?$%hTkP&7ZvPf;y?rG@GDb+z`Q73< z3-5++_>@#}b^k-DqZZR1+<nNtWTS#$l3<UH(_zD^`;TWNi?vJ<xFkJecjiX3%1P`! zUoJIFx|g!cZ1Yz&^T-e9KYX3(@XOp})xr(NeNJu#XI3~Ddarn8a$$d??b)>puI2u^ z>{B#(wnB<m{zmquFY|V(8lU~gz2e2p%4cGe)<is2o7?lC;he-lnJtk=>Z~k2`z&-8 zyToxku;fEP?6+U$N_HhjUf;~wyrJ;MnaN*`@-wn`x_O*2U60&Kshf?|O7U<I?d<;j z^nK~1sJ?TDUfZm-s5)cqm82Sa+Im51>a%&e+k0H#WlE1n{@a^h&t1y0JipA<>Z5o5 zwAU%Nv1!|TKDIr*-yZNRr*g5~{S2J~k?bjY+w>)tNUQm**kR`@o}n#x?b=~yBft6x z<A7&1kDtgjr$uOzTc(H}k2=w1xm|#B^%7tGHA=B3|2Pzg6fexaQNeC@!p66r0jZUu zSq^TcNUaMNjYYIl+%7O>;%=q%EHha8-GJ?e&NidP_s?}auRF5fYOrAK7s1;HZ6r2& zJet9Q)=KG&D+&_fbeI%zeB)*FjF!tg@11g3blfS#=yzhN?$!URnERB@IhEROe-pCx zTH$J8pUL&j`A@n;W*p0U{ph%t7{BqFhj-GwU+cJAT@$b<;foaWzJ0fD&hLM%97av- zUrYX6RhhqA$?WUjCHKE^uReKyv#Df%_OVIAJ*JA+d?Hv^h8CPl6?E!9@u)0V^Mw3$ z#q@`zfisStc=qtllW1YnX@RUWdDebPULM){+2Z^f5#hDFuKc@OV0Cm(`fHQf`jZR0 zljbfgd!`j8`@p~3E;fjj!Av}XlXd<zrMy~|$42Vy-2OAlTW|JEPwZ^kmeP7iC&}+y zoR{IrjVW&uHJ=*FEccdPsr_}INbBwUq0g@@zPfD29D)1GZoH`5m}eAPvwHs|>v^S_ zG3)lt4Xd8p+h8Scdn@eA@@ey<<Q}~G^={g?{|zE#Z0EzPegEn?uda7F9X8{3(FxY} z=>cCicJ0&_UUmNHMSJUoEH$j+w@<QQDN#&Ju$CxBBuw{gzGWtI?|%G3SL<f=jTfTJ zjAHMUR2iT3xjbdl>9>a@o*rUoyES3k&##u7Qa1EH3~~}mo5VV8;`zsyE$>h4^97Bi zJmrNnQtlg|j-`~F*T2!M-3n@?xEghSV!tv^sw8tI$4_q&%caN8Jeb5GSp*uK{ns>I z{P665kiprDviqEox;?pwZjT(+ZcqH-a8S1=Fwi;iy#<%#LBqv-puyS8j{o^eW`PH1 z)6^h?v$-4DCw-Z>OVjwQ9ZSf!Gd9J-o?&Z>Ci}T<aCqL6z;{gtJlo^D&{-^~F<FsM zZ`JAe|9;2Xr&U<b&J{D`pIx~r?ip|P+6x}7l}EIXrso}9Z@zQ)!nGPx|EGCAQ%+ty zX(ms+jSg1;XXVEoe|Gu>oxT`ZF?+eFd%vr@_L`}AuIy{poVm04={&)Wkv21CZsk71 z<>XkEeSV$!w6N2aX1bR;=U45GQGfl?Xg7Ga$EYRuTweZ_>+o(5V{;L>+mnBp^_Ex5 z)}J3H^lX;DCNstKe#Fk>0-!0MZTDe~6g#Qc|HGbs`c(hM*jV?E)8<L_cDvjs_urew zWp6sUI%Mf2rVxMs?;oBR@5(Tok=3WXQtR0rXSFpG&Gv%ld{_?#o=FWke9U@-<5Sl! z+zFp|zMTJdQONNEF;F9A?cc7h2NqW!eG)Bwxa-bAn+QlF<;k9gMUY0yMetZk15zVp z`xn7u46~nxrG5F+Q}Zqz+(@~ap2Pk*;aJNd!-;wp_UxcW$|iRAB>nf`MoJ{Kk+RoO zd9L1<Fg7l5BgG%oNV#tJK;w~3$noOS{#&nG<&`#Ne#-yQ851aUIU?V=W^KwxgTqqi zYPW5<R<tCUx6%3egw%~&?!NuK^L>1Wit>&C|Ksw$pYp?xE!#K$OP2kHS)hTGikRYQ za~`bW-1zK}l*ih}Vm^2yrEV`|AVtS*8{c!a`@2Amlocr%Q`gT;6Fv9XW^<6wwr@+n zRUdvSQao|(<s48WrK@z=t(~hQN*nBTe?c25sv=2Ir+4&D>^eP5M$abko(O6qW$~1x zuH>UPt_H6<R5>T;?bRKR59EhG{C4;C9NX-znri9=3pCBDV%E$q5LJKOf2FTGR&4re z|K<1MzAHb}5eUD%u5SCMyQj8irv5ixwxztFcIWr34XYo%+MRVXpm=v;(aDF3b7Uiq z-^o?kb^hr^|79CIYgmfbT{FT~oM367n3+M_Cq!(eI2#(Bf6G9m?s<4cerJeu{NxMf zyLwl7_(&&T)qA7Jt>@Bm!SbZq*X!>ktOJ5Va<i7cQ?yg>JO8|RUooevx68%U{xTKj zlMeq{WV>9Bcq)lJGF0zzKao*#`S*tdFOI4ta{Y8IY&|1Xx_#O5HH%n&s(Q}3c=6m9 zOWP+WY&Y(H@quf5%$cgc6Fn|8@F*pemo*D5THzAY^hD^a*o$a|4h5SdJwZ}FUyash z<pv2CNu?+*KB%?+>#n>Wy~FP}fBg689|r^f4v|E?6AhLpxaWp%->LWI=ft!3E$_-3 zR`TD>VoFpy=}^`Ge9BSvMr*&fCO<Y9@6yVSZJBZ0v%vI7(|pTXi%Q{>b7z~e9XsKm znQm}VdvR~s@u(yxSLXamWATk9e*Z;_L^Fa@SI6j=yzJfgZyU?2GetYMb>Cl~_ceB& zSmjh^g=r=$?*5yjb!&>)H}-_5H&^K;G{%-~EB_$JyIARZvEn1yFJ+rOeP64HnOKz1 zkbiyUZhyO4c5$W8z5OZ7)_(Kn^(F4jyllvmEEVI=FLOsw<G2Q&-kQftY>zxh-FETx z6`>-d<figTUq2<fb#0q!*1BuOrBi#4OnP+vy?tv@yx%`#F-{Yuc~7!8pWT+4yUlgu z`4=l^SS#N5{(C{W{@W+-6Hn%yFYnFlyxUnCHO<f1DthX=+tzC~Sf~{qxpm{&gN%&N zUrx=nO=?tCu~ezvn`gF7e3sJM?fxgZmkS1dvV3;%hFEyk^w`hK^nSd)Q=T&U*Q+^8 zE|}%I-+m<%?=KgY@WkQ&^}N}yT(`yUDC{wa(O^HGYSOmxDf_XtZ3`EljXjaD#PQ?L z%<EH5pWETp{c2-fwZWIER}=P@*sFGECLY?QW$_{)+@h^M@X>!o&-fMYjQ7t~)ibO$ ze)S1UN;kz;aT>xlE)brBcp7oL=(d?a?f38n`A>W}9v;fRpL6_`#$><P$c^%k>;jZ@ z7Ct(vx-xUp`u9!@niCi09=*C`-pdLf2ZIjV>Te0<sZG;57Q~<P$X{X*B=NsVv}wor zf)lo&twWy!H7^{#`JP?>Z@Tg_IV1l5$`vt-{#`10p=<B*Ot9_O(sQT2OyQ8cw7=18 z%WsY_y|nbjhWvpo%JMhn+Aa{NKH_?&b>hy9X$#Ja9siJQJw+fXwu61PkoTHPt9CtK z7hNA*zoF&t@i&JV*qSWQOo=s~E7zT4vh1Clj_KnQiFSO8Jr3_uH+eBr*2r9{I`F-M z!J_^dT`8LdI^S+k*rHY$I{iU!dal@3oua)}%2~EMbv7OM)%E)Oa$ZG>)y|zQ6U!WW zjwPh0pJSAX>yUZ%=!9v_zrCpj)4da$H<tf8P!?E!Mr3Dq=vuQ}agmQT-hZaOzIfyQ z_f;F63ZGQ++P2&<NxJ4=RnIQAc*e#J3m@*%nRcpXrCi}O&%}xoyi%DbEY@pHJe%vb zW{cvZhx6Fi&HS(RDQlxp+Gn-+)pK39vBn*cn;ubWBmT01xzF)Sl=y)>y-Qanl-l*5 z-Z`Q4wZo+YZ!hjhH$Ncw{MQC<#ntYbm*$_%EM=SV^$K4{skLm_Z|<shF`GGdA7NfC zlOiaUFZr3B|DB~@Xxzfy$M2(EjgDPbGE15ksU{?OooQNZ`tz-vQb*i8Yos$oMfc8G z{Ue`^X|{*+n-HDUt8q-PUKi?V+dlkqcUtJB-ef(;lkW4qs@jA2%QJt<&67PG79PGn zc~|3X&Q>#fkt_FH^(Ln|7nfT-39>zt!)2}#cm4jpb(ecTn$Od3owk0(?s?7P41612 zUX%{eezL`NqJ+WZ)4QeBzucb?x4vh(x8-{2CZWi#(z|!=E)fYWozP^Ixh;OWmZ{bI zqq{_Ao_Ote)Nz`j&-={v^+#09-S_a;&fWg<wR_g9tg>YS0xx!!y!>7()0#1H>uH`% z25M)x7yW&y<otitKJ(?)w^m)Ab$6S}+*|(6Z+<Zr)t+&x+jMLFE6WeuHuaUMfA`xg z`Zqc6<^Lt!iF008X*<keH_VsTcGz@ZanBVYnYKxVJ_kR=>CD~BVYN5o-;Ij*8*C*D zcF5`R`iXsrwhozoqO4)_`dJ72T_?x2HP<h<o}ME9`F8*0-P4o&Y~_FN*?WDqjp6Qo zhc_nr<wB>fPCp)^moiuC&UG`9w-MX3CzxJ(UUOmB)ZWFXI#<6w`JKyLcy-Ve|EJ4S zS4~+Xs{MLdd$0M`ZFkmtWgKr4edVy?uSV5mp}UUNK@0i#7wGL$pZp?!nQXM^X{G+l zhnH<#mE^&5zW#nf-j&|F?1mTq&2kF*n*DhG?z8MucXV05U6lF$dC=F1T1VtIZdiAW zt>x9qo10@#ZC-k!QU9+EN1wLa@{8yH{}%bty5#iY2PNX4W(4zD2m7CWP#Ixf!J)rx zx=@v&K$XYNOLpHwd>3{+QZTA@GI?}Q`2Va7)9?J#?il~z!q`D;h`g{iq_QAYLEk?q zE4U<=OW#ky(7*sxLKPL4C|DR8!8bh`nixWNJ%VI&N>Ymy^xbk2OHy4@lk-zjx$Nw? ziXq!{D{kGLksEy5P2l+b*THXgA1Imd?x&xmnlU3&>M}{231yem_5_>}y>erc`?SnU z{`ddi@)Hhtydq(H>&Irl^4-<d`~SXHiRKbg;m!2CG>KP*`RS|_KcQH!i6!$yteVuG zdL%j&y8A^fP!)>ERP<18DO;j@FN5uprB$(!)5L?)wr-O*PU=w>wvqG?`_R7TBImEQ z{27y+jjm04Ea%R5S*cOM*0T8sOO*z{rKO4nE8E2FS1go*U*<lVu&Qb6(H)1TAKxL^ zX7g+9p^Fb*$W*Sm)#-3=@|TDi?X?bBjDHmwm>(tXa<P)x>%_K%CFpa4!i0zoXOsdG zBof%fm(E>~;PG+R#;R1_ps)jG{&O>Tsu<Wen;x(~pz-~HdLfHp;zRZdrua!Sm6W8o zQg#|dtTl5A;`?@N1LtQxy@?U+-<Y%yxL3POWGekI!`W+!diWiN+Qv>*u|$`1H*_RB zcQq<Y@i5)#d3Nb>vt)>pXq!($dB|C<XH7{~%h+ce+Z-Zrm*rfD=Q^F{=er*HteUgt zNl2iD_CYVEt)XW^wKqv6STbi@gk~I%dePFFuG`=}C*u4g<AUd}Jen5@M9hgvIx-<( zs&Gsw^Th=roh@^nc`q!!!0|?Ifm|EIR?E`@3-r<@nNnWJIB(D~InH~8bB@;Oeo=MZ zoTBxU@5Y`wr(wM+{^}Ij3)fDrk)0YUvhv=t^z)O}KEIqPvtRmXTKa`6(|rx)rf-}X zI{mh`&Cji0^4h{vrSEUwoF+5-`{N{$m%G++Z2Z@8IrHw3tW<@`T01*R1f*}t|JhM| zP3-V@?b@7GR}ZD{m-A244YHqYa`Z#i)0nh}pK340{E1Uo`$#M3z3A+aWmY;$Z>GLI zcT&a7HTv4sSDL|7XQi$>e)HtH1$nn#dQ~%Q^#0BDIxB5*zQu#5;(XV?a!B?*I_K{i zET-|o%YOE)rT6b0H+whdn9!HHweHg=-b-4&K>Vs}WQeHO4x=9LxzR0_vyTXgW^~=$ z;<%Xgyz7$Zi$86WI=<>HOBM54E~}+)HsqYQJn=4X(%xSdol|(bPR~gBZK@FRR^&RD zwA#(gIoCF)Ni5$Je6Bjq?a9vY`UU1Wi{^SUuk&~s+SUEd#&OTG70b5F`8g%sv0%#n zqoP|l3a?z*%$a|sX4{#h{hhAS=37j4PAyaG%viZ-dvtiNb>*zo&v6>*MWKAlGw;Ui zyL->=&a!<ocpuw;-nH>fr50zpm4Ef2PCk3Jn}%D@_B19uQHYy<xT0#y_mf{gZ*gyy zfAM0~yls~ggZ-koR!+Zt`l!Qdc30`l*AF!FIEAbi1>gA8^2hIlx|2=g-P6AwNvoMp zs{Odo_R!H=O6w;d^qw@|ZNJ8w*YoQY=SST+Ipunc;HtF67k}>6J$&fW&X8Gu+Eg7) z7Vom0EpphS>Y<@VRE)Ri%A+siD<{t>SGlQJVmAGR;<M7Sd#9Z$Yd^i)ZV|&H+rP2= zw`<Ge!Uyer{%INqKIm-w!WJwmv#9K&v-k6pT8`DF(HG*@cwd-5vGS&Pp8e_SLq~fr z-hL`tFZ?Bzqm9pTJ7d#6^Mlrrb+IRAZ@A;}cayWt?AE2f6~8@Q@ILtZgS_jeGrnFo zy|M4=tMs1&C!TF`HjB5v8S_Q;_W7dTl>hUdNqt+iXYtJ%=2>T}v(2{mx2_S9z4+|A z_*#)?V$uH|-V)C9zufM4{r<Ak`wyBoUjKUh^*?dxcd-*sotrHCKX@bKl1<+a-;MSC zKb5^x|LEUT)pxbKCmWS$KQs&Cyf450KmYf>ua81^HHV+{eGt0J{9fHMe&+n}y;;hy zLjPV}E!SUF8osxR_tn+y^0$7-Ki*gI^>N_(bGs}4x_xN-S8;gp!E7J)^?|bwWS8Xc z`RgOkc5hwPS+^_MzgAywVgDPEv%71nbl{q|>u*@ks(ZTehri>zLS8I|z8SXFyN0F) z#17{?4Uf*hZ6;E8e*J@cDhZ1!1xsJfo_x%?OYE%7`q~x06>j&eaTWKUw9#yTUAvO1 z_qNFvb2suz@N}D~&i(w+dV0T_h8xS@BFAsw@nQZ5#g1wo_85g{#y&IKy*l6N*V$IQ zjF&bPJrTnqyrSpgze`_kM8`FpQRVpJ-8}WBrJ&K0{rk$c{N{|)OBY|v$sf?+%ztC< z-Ng*tkCdJrIuT<My-;85_=k<MUK|_sp6>PSRK1=VdUogQYyGd<RNt=OT<&fla3*ot zpII-zgrqFyEUn&frAN8F(t^X8H`{N;{^#Fj?7ryIQr&i-)68({>bF7ba@v13mQD^Y z<=icJtt?XAbzS)Tl(p*NuG?;2+jM3BGnWZ3&)ya7DPc%5VYIg{=X)T)ShS+s`TB>S z>4y{M9l6AoZlB$JchSF@nnlxJN7-J{(Rftpyyw}kDz>SMv|6?)D(jWmitBEE$JX4D zc&J7G+w#*qrT!LsOVi)a+%LTM+`ePaz8o;sH1E*meK3!|`M|#NZ8ug`Foqwvxm~{J z{Z-D7s)sN9n`Ro=^(mrt^OTcCwF3Ls6)<?(GskiL%y`sVJx`O*^|*wh8Sl)mlk3VF zCIy~}xM1`-!8l1&DwFYdX=kWA_tqIw=Od?R|B0TtO?!Ll!tG1+0;j273Ya;&#g}LP z<5iPp8ivU=zLn6C+EZcrBV^;0<C{zl9P3^Yb7Bdb!qjCZhK#XWH%{?f_kPLFGyOrg zov(5~3vtT~`daqu*b}xC;|~jS!$K49s6@J7eRpk+;k|uFZ6<rFFEQec@j0A#U4Byg zrW<dLI@sN=h~nn^T6kjSwqni6S(8tE@r@SR>T|Z_O+lJb;h%?VpUb^}q5tJg<CK;g zs!V^17nm3{-kWG(vZsBX*4rg-->ui~)%Fup+jiB>PHp#_H|?7vcg!!oZ(6u>Pu1%e zH_gn~{yS&Vq|!gPUwS2HsIB9(3Xb=tze{;uC1(A<(8q7KWx~%n)$_9W)LM->Qgw@+ zc`rL(RIOFJzEqdPM11OfmiET<DkBeT_L6<=EB!C(Fqd!iQI%L1{385AmBXxm-#Z#r z<W26UT{)CBH)^uU#Nu<cmz_7A_~0J>Z&uq)8>w9DWPu)6W}ayeB^Ih1&o)YP<^THl zdwa?JAIz1XS#losy!y6jYVoW4e19i@QnyHZRP*WkNw!C#&nLLuFZJ4^e=DsvhRZ(N zG2*Srhs(cbpV!w^5S9B@F@5K%V}9?7{C<C0kg{%nu7coXE7KkMxdAIY#5JeX{JJBz zrAz&-+f}u7`T23$k5^S#wOXz?Y7x5YUYBomQunsd%ca*;H7*Ieo4h!o_xAaRdUfaW z8}rTuy!rH5^@V%!rwH-FiSC)VxBq&+goDrX{QR{urTLV<`>o^Cm8@OYQ<3tP^Wpcq zhaZP>R^7e)OUvlTm)gtk#XR}WuV8S_KDumcmVj64&%mjz^^)EhXU=~&Z*PrgnDeKZ z_uc<o)_n_h+I%@5-oO0s>Ra}KoTkmM6MflO*p=R732kCFvRx3PYR|qmfYp1W{H!h9 z?lCqW?e}=^+Rtz@``s06#Tk|jH5Mcs19LY#Hh;E(NbUReAMQ1o$ka34i;gx8UhVbz z(wf?cZxh(m6PYhDUflKfS8TF^%EH*&uCb=B2anzOE_c89ovDC{JIh{sg=pQ@X->ao z-8de}9cG-~@slU`*+QSiHxC}4>-vAq(U3*2lxDizl*#4i-5plRxJu74K|HsI=X>V_ z#oyo8F8-=pVJRj1h26%1OPha@^{j;q-bw<(7mOO+6o1`$EK%3z&8fIo*|u2Y<xAH& z&y)3BKAyIDk@@`ei#5#52W6^`<zJPx6N{{OaOIx%vhax!Kf70CM6%Og-R-gOelf4y z#?vUAowVZc)sXhS(|;C}&wA#{wtM2<t6Mszt(4t+rS+|h{^Z-C3yrJI)h6-y>-R5Q zDy{H~`NQV2=S+N(3e&mPxQL#YPi48Bu}-$&+cl{iwzs)SP1dm@X+f3=Oy^G@xE(RS zM<Lj!?ZPZ0r41igW~rTJX6s2jv}FCQyO~Y1B=fTG+@1B={Eg{1U9;`1>!#dc+iud3 zZf7F&``*1BrZtXh6w=DiKl%Pc@XsXQEPGW|@5v>3FV2*h#J>4(U4>5}Q~SZoDZv_j za*Ka2{_~Y{`PQSqTa`sZST~wKjj?2Ok!@i(_&;-{Mf|eQ?I9((9Z_iyqin*TFTY+d z#6MN;o5k9{>n?4W^_SyF-rgHaMYJ{7c23@X+hUfRYs|xa1uQEJjg#ga+1Mw4tJ$|< z#l00bkDNUEGT2z*Vz*DaESDbpvyGmd+J9H9=)RjW_586r;@xl9HZ-mOcOW=gFKV_- z^BtL05$}8F?q+NcJQESner3T%yEdsHL)Pz=8@;Z(Ui<t^V1sLW@b*n#Vy=tdyd>6W z^utr=rPh<J-}f9ei#)sPlf0A1fr8UJ`$eB$dnDMfzqjPiy0ncM9JVF47h{!cS~(Zg z9~9bn{!9Gg{pP=IBhG!F_FKL|$YW;G#yR?zJ!9nA-@dYKy!7`&=lPafK3&GL@1iz+ zUvS*3C-CaeUGr)r(yY!$pE{{7YWMrk?86J*sF(+G75lvNxO8}FLzaM>-I`##5ATd) z+h*(M?ba6+VqU-gZNty{wFl-m`CWB85&!7Oy?+@Kma$*&6Q1e)=H%DaGBvghmzYoW z{@D3s23MEHx6r9mR-J!p8_(YRqK<iku*fbfInx}=;udpKa%R}cyxX8-3bZS>G;}@F z^4e?a7-PY4;Y#6T=ey0y7dJ)eu2fl^xqqK?@TRA#D=$lB2uO&nd}!4F`CgAlKo3V% zz0<ZRF5T8|))AnLX*V4-3H>=><;6Eo9-mwE{~F}rjzvapx0hYq7do$hR{Q(guF}&k z8VVYv{6A$CwZCcl<&U2A2Wmwg9B6*gmww{-B#t92TYMH2w%C2QXq*2y$jRe<$axvB zs;YTmS6jFP{~IyezO9jre{;~mpncxQ+a>PpO0W4>yf|QF+ZXdJ(VjzR4d=qF)8GRN zc($1_sh4$6>=RqqCo^4hzxkQfyIL-vxTmycveNcz*|E3JMNYh{pA~y+JLkj{lRb9L z)AAZ#@E<sTYc99NlKvR20)<%>|03KB{FB}`Y&I`DJoVzfG_@TM_n1wd#wJ{`k7rNs z*PjwbM^iX*HI<pT{TCQS^BN@Z2&;u&c-tl!b+*8|tUUYN{ter2-A^jEelTs)?FZ9- z87x~cF{0A_@wE@E8=Gd>{!!hZ&i=vMY~|l6x{<S<ZCtqdil@c>hxt=28kVeXcpmJx z(4wkGuK&|?^*QGR<;D9r7HD-W)_i{Kqv9(C7LI@Z-bYg>9`|4Q;+jC{l#5X|=F<<~ zw(o5B;;){wtxml1${9O`jkop6G><k;DeL~+{@a9evQ=(Dyd~3>2q{Cq%OT7C=N?pZ zxFmN)=Fy+5A9r|8eA#p5sT`|5Z(&x@Aus!tx0B3cLpF1UC&k@ky!JOJT|waK{;ZYj z`+w}X!g<)`<6_Uh%qJK`g3fpEII%o4`tPozSzJ?Jz2uh>KDdlcuVl;a$+iBgmfcD7 zy!><5ygzzcrJ<_3E~d$aUuK&x`~R82iA`_xPA2wE>{7AKIj~Ty<q%`K*pZcftA4vI z&wm^B<4U{hmP-GdfistX=w7{SeYyCL;DF2padBb!_ZKdGd9c|3npSJ8tyA^PHlGig z<|hxT9uEm{*~m3(3Gc5MyQ0Xr&QIp{n=aR3%QaY5nVOoLLt5twga=)YhIr>oIr8j# zzy8BS+cl3XE9BZ&1<8kWDlKJMB{xY%piyM13#Y)>_ty`<aVqQ72vrVk+IT(r_vdV% z0(O>ou2%u7A)K{BoQ;K2&50M{7GL6<7Cb|=*>>@Nw?M-y?AdKkWlLPAuaDfx@Kw;s zEXz~xzL68}&-ca`-USEP^>j_%$GJenEsb}vBumPs1#1Ix6HB<mZJW2P5fS`q=Q}-h zY3+;JKfl&WtvfzBDENJPrLmQ@P(ibpq1DT!4T2%J5<;S7mTc<Esk-m&z4xP5^V#s% zXMCRX&%EihKR>zrg=c(1Sw`66%Ys^qFBY7caedaCpF0>W*8Yvpert4nzW(gf-Osn4 z@O879@$~t`p7l*82e={>JyqwrX6yRA>s~G06ur~R`_;w6>w6#BvbY%q-eBcPJytGP z<MOz_z+nNi)a!3D8lPTVwcmNd&_(xF`<v|7YVFF))?ZzyVScYEeM-h>pFc+n{%+Lt zHR`+QI&G81mcC#+|9~x57ryr0=gXrrQ|)PQ-INW^LIPd!K0n0;Pj-iGUAVI6=!R?G zo=k1iGQOZB6_qBVvLxl`icX6w`*^Lyj);VCd`g?5BUx7GeblsC{>jHhMSi!oOb*$a zu`xJr#<A?HJ8C(t8YOucx*R`O-<Z?ReK%z1s?#xhSA4EJz4oxi93{`YPv_a&t*^WC ze!`3%nOA3*E%-RmYtiC~3YQnHZh!k{OZ~*g`=#G}!hc!B?%7v4L0CO~?`xf73w*q; z2rM?w{LAv?Yg%YY(vJsRlUM%bl`}31#F8Q{Ofl#G%?!+lPm!VC{?d>XX=u6TW5u!0 z79mrAd9XSyny^5wfticbm6e6@%Kmu&v}qF>E?o!;^*R>U|MvX9W7ggUd@S)&Q4`&k z23D>XV|p#QSoFbxj2nk@m@cRNkGxPnIfLbul8%9Od+6nZ-hp;bu}M0P-qV`5ubHs$ zk27PGjn=95z|E!`1bYsu95R^Y<f6#_CS+6dMM;^jI=kw!J63$pG<v;VCh7g->xauK z>aE@xf35rC?`AE{bnc>%+WPdB2`swNKF<W%SKe3KxHrGneedPnOl5`T@l#G7Ee(`g zcwawx{fV`WhjcE;EPl?iHg(G+u4jgmZ`;0Q*p~e-IW2z6!J}(#->KdazFW5=d-ork zOCL=qu-|BqP)WUHU2^W=k5!gdiWZmG&V4hF>CYVNI7bnc*&%yd7M}Z|<m{1gn2nRe zVo~Y8NG4~-=AWxYmbM*vwO4PSTe)qHL9Ms?loE9dj;5&GnVsQ0*R}al50}-Qelb5? zLsY^nBjjJOSFDikjYUU(Ikj(B*_wTV`xj4&tlQz8i=#89-Ay!|ZFgJ5wfgM2;{Qup zkLM^{*)u~jLntU<eVLx|)Uz9^*txo{im^^(IUF>@MOV|E(`e$6S+^I7yPk19x<Y)S zTzdz9e^9VDhu56C`aRbd$3@)A+7)9_?lpbu+e>z=vWG>!G0yt?uG}{My71kNcfw}f zR=2UYFL`dba@pk8zE`tLJ{Nr7doNE#q{J}aj4ihB45#|)Db+m-{cgYemav{-fAr41 z;cLw&pPv4{c*>fWQTrA6f=$fIvpfxM)U0%W!@!#x8TmW$!p6U>pIEj_VM(r*23V4- zu_bxQwFf!5I;@gwU~Xzz#MH#_>i&9jV{Z=!#VHHCPTqLE@$b*A*-gd@KdxP1+Um9T zlJr!89S3I2VQ_al&8Vg<VZPhH=byBzb^w23<4H-Ku5a@;b8)_!7-TqW@|(5BPHmt1 zSu?(^(3szL_SgZ{4Pu))4j1rnw%Tk6KPA_;yx>Cdi{HnD0^gs`xMVI9{QmQI`LzG< zek?hE<@a5Csl2ru7OtmfG=B>^$iZWM<{KmX%KS|`?w#Ma{NBf0M(h21wa>ixv&w+~ zg8cK1;xCRlB&KD|Gb~_xEHU><Q{{;#+xx8>&c6CT!BQlz!0x49`MdWa@3<aa(%H{f zTBEy#Imc0FQkYT2mwSg#rWO~t6s!u5UR%}oA$?T^r{{#2uy0J?N{^+>CAo=*7dRZ? zoXhVo6VWB{c6Q7Z38U5DjDBa`eY)Y$m$RiBuYJD=u$ta75?(K{F5D#bXi40f7yGL< z1S7U(Ox>65Su4hSW8sotPRGCNyyDW_8*y#>j}?JGdhB+V>*Rd;b(SY#?op8#%{9mN zoV!$}$$Id@Hv@~i+AGh#WSdo48u4Y>c|G-uInhs7)?K?0tgR5T|HiciCp`kUo|&@k zXwJ9QWlJ(7eG(J;49?8-b<SGLGSegI>sx~krEQK&m)x(&UFp%m9}?@`V>Nl#E$0i{ zGt>-2OALeG%{aIE<sCaV+eX7TOeVYUzR#-C(=Q264L+SCclBrH?Y*wkO*ljQf^OH< z*8g6u$0u}2F(B!>8OL0H-?^o6y{W!4xj%h-matr*KH^4C_odetkAB`QwDjqhHMb*= zTSZ=9_R6EU<n19JiPy^yUuv7Y)I0q7H+}bOf4*Q#&)AAz6A~H(sKsy3@y{zlLSHG1 za&$7StYY93WNG0NVG8|Ux7T`ei%uX1Ylx=xyo$HyznR}NJSZtpvv!4guh-&FZl)}6 zblt=@99*<fE-lz%ZJE5~U-M441v*KrY3Ucj-|Bw;BzQ_Fxh(3!o4sjmVxNSI7W|Cw z{Ztr}+hfsWIKxG!$6s;L1m@QvQS6U}EhG$fCFXWye5kaNzGimh;PU+YumA2o`SHS~ z2hTrb?Ae-jz%1&}ldn3a5{|i&lXvzvo2;4q;lc3>7ZZwRH_yF)@9Ehuf3))7IoC(@ z+?_0~%xm2LOs8u0g0yZO&Eqy(o@`T(Z8+OhpRxA*?u$RyRPX%!+wbcf<#lU5osPJD z-Qn^9wj&CflkY7o=Ihg6-K^XsT)Xw^jO7gVQHQ-dnvQsG7vHen*3O-S({c@?LxS?A z&;1NMtUS+L1uWZBu2xO0|M)H|V)1V=KaH2OA1H8SZQH3n?_$h(iz%k3D<@s7cRwL1 zk$quB4X6b6oe`MybHU;0NxR%U{V)9z>Y3E){X%KK;>L?F=e|6+;ou8P;nkM=)wUK# z2~}-N_@ejl%D3CRA>H3Dv|s)|XHmw^-ootpCf{#paEMAs3$1Dqxw1->cjnbPLp~87 z?qx!+l&rrx>vzryc&w7qsUnu*rZ2VLQ`2qlqpvQmH9MwrX)0!Tze@QY*F7uy)uLT9 zq|0aXZGD#@&t}^ee1mmG+3x$HyVpJ2sl4-D#5(y4d!AHtNqDaQXr)jZvi*47-`Bg& z@Csczz9&jp<Hv5EyZO2+TBj~u@iI$!vWH)4b@7(TviH8brN&p=?v1ds37j=|U207B zeD}k?Z+)5?XLCv!PT76r0^8|RnrnLhh`*^|h{sIVMh4i*X+!9$LSh=aq40*TAm8H( zxq0qOVGZ3y;D#>8)FmweU*BKfz4^59q9sdL9qCKA{r0^w=dtPz_NMc!xt_W~-8DkI zjbGUory3kwU?%rWSwj4-?DGF=fyP(3rQ3em=B(C>|MW@lmFlrKTNduLNo!&IBy4o? zRcOS$@7<I8dKZ|gr7{0CbV(^nnB(zyK|T9*-R^a3O$4{v^*zf?b;_yzQM9zG`{0J$ z6<^oZ-nO@%up!BN#-1xdCpe~TobhE6`^vRKx368_w)olu%gMg;#4C+w**rTt>DOJg z@6&8va-8itEBQsOaTA;F@-vmmC+6}?HC>kae@tS2`P`FxEcg7_D6sczPj&v!mHKa2 zFU(2cT{BSyoT%IQkABrXI9F!w)MuIp&Y$|gsHA*T<+kRRCC9@#6c_TcGYHJ+xb{<) z!I!c5pLU0gvr*FC^ZUQ$y(@6|o*SZZ(z8H7LiN@i;q@8o!bP4Qc>Tw0aedze<qK|$ z#eVt+zY_93AZB^3{zbu=CF_DFU5Hi=-{fKB{lv>ZAm`R$vpIWii$v;0OND>)RO(;a z6wt8I$8q9>rijo*KB*U1_cF7_Hg>Xvo_5>&?r0#B)?5i*!Q)al7o|VccJ2y%HX)?> zX8TeR4?f3FYV+maFTJGQyDIeZ)WXe~0in#h{j6FHOBlQIK3A`~_O~)`(wbR1tGAlG z7u&mLTj_$i4i=NU?S9*>ZkIMZxw!ut3)4R}=X^6UjlQ5R4lUJ*Uys<@zl}+Gy*>JH zO|-SNZ@k?56HooF{c3(>;F^27J346!<DwiL*Q3i{9{F_de2d9P{R)qrORyzcEa$?R zS`dE}=~3K?7ScOIO0;dNi$Z!sI%TVEzkR<c_uip^on=1vD-Ter72!st+H1x$#1HRX z086!BWlMag>%0Es_$rjlcWYzJzO*(_stx?DrStyy(US+<E=UP)Zu}^tWMpaJx1`Wu zU+e05uGhn7byUfxzusr0_|2~7=PI|^C%5FU_`bK^*v@(qIMvQsIzdn)+3=+<e^9*Y zHgIG3WUyMaP3|V6Xq%K&@4tD|cPsm|IbGgl*?dnW;M#(xQ!Ll>?)>cOToCm*Ui$H7 zvxqgb&vwt3-gx^=#fDS<$&&HBPZ_ckdR69r;hS4*uvdRw9!Fm4>oq0*jCG-X-vuO3 zss&Crm?W7m=;S2b$Dm*!xb|~3!z?DYzy6?-_{i^o8ri#73XXhvJ11b$+y@E<UfU|w z{w3}BSD}$>FI1JSV9E33bd}t~8>Q`fvp~sGOLwmJf0fMRmmD;9L|ltkS)vd(RbzKV zPu6n>$M6It$E%wR?fV~Ta87mXY3oSt&AGVw!&J?q8u2~TwA*TLcr`u|SX8rX#op=8 zS-PvtbfcfUfs*C#IVD`h5=<h8pM4Kl+kX4bmk3keu-xh2`C}$eZJhYqJ=teYf6dqA z(E8RRD*bg^1qD8sOIDSyaVVT3qr754;J>0Gx#!E9yWjlXR{XkT?dqGKo>p`0yppmu z->zLVD_ShCGf*w|W<*z)|K-l7&EIGCe8^w-y5t0wgo(121A0KUr3LY=-n$X^i!WOU z)V+^iSiPBj&5Px^U)$I%*71A~Q8>W!MedGUsjZ5iUs+${{&`bX)ytBi)ODE;JL`si z%PQZ0_iq@NqovY|qntOv=YsxEXjPCio>SBramXOm&`2tF{+?UHzcQ7V3H@wO5t=FU zR&TG|q^{s6@|mw%s<hY3Uvg@@6aPpg_dl!d`DN;pjpr$OZJab|;Y(95@F~^G!WmZ1 z^2~j%5`j)0A7W-3Bza2xDg9?w6`UTfsC;nwhx;$>l|{{NiG&#*5t<?>V%R5o_r<|0 z*;P9u&VF^8Ub^t?t~1qIYUv7p_xj#jQ&L#UT;?TYQ+7;jsdRePL$&wLeoU{s6dc#y zy~V1mbUk$L+An+dCG_lmdR}qs{BtFhuW}V;G<&_CHQy}H^XkS9t;U^A300HZ8m%;f zCL3#6Nh!_Z(pg}jq_siFE<n6Rt=XzfAUjR^wN1kGTQ@r0n>`jq-!V$o;hO3CmV3{_ zyqhmhC2@5Bcb-sE86fp#Zz0>=`_s!4naY|1L)cu)G9Bl?UhDpKdT3x|d~8U!*Zf`6 zpQrsaWs!^x^-eB{3)yNG?Z3Iw)b2+QQz+*)`I_Y?pFQ2Ak@)|1kyHkM!-r@dMqA77 z-Cl|Ljj36NTb9afmk<&PI@)AEXPtG@rOge2XKt9ap6Bm)_t$84u+LTICx<Sty2L%7 zNv&$x`q_*2&+Knts?AB-8Wp}zM(XC%PaHf4CR`4D@ZDj73`fg}YoZ;><&N)na&s&# zkzVNDKWC$VmD&Hw`3GbVzZ6X6nkCW7xnYyX9`2r_$xa@**Y8+-EjoN>-}@~oPgj-l z9pzoT{AW(>+x>c9*4>bGwNR7p(_+-0oqc?PasCYB{U=@@FY~{BFowM>&Uv%si{Qt) zd;PbWNr&X}_s-z)s;Q~(ud(>OrX)nm=KQHOZ~dej@;X<)|1;mGx+^0!M>*nmbHnrU z+&sMsnfos;71_z<U1pyc5zO>*{lTQuQ$K$)GPdtK;2@bhwL&b5W3_*FP|{JC>DO|) zvu<6n+iTe5dg-NuedEbT653O3SSHs-WCvemU-sUo-zPqNMeDqui~a3poID=Bu4cul zv)8U#xV^u$=y~t`w)+ngY|nf+dr8Kx`rq4KbKc%d*mJm<{ch2o&Bu!l-hF$pzuw<J zhe=?^>D|(*;SzZfFS0g9rU!hRVK8&WyDwRdX7Mh5Cbv$RiC>Fb_w%>boMV^I);`N- z?0nMyEkD+h@r?H7Gr3b@R)}%mmDrcA;cM7idHuqQ<hU=g!R{8H50~Fmw+8JJ+sOX% z+UalR4bMzY>Mn_4n#JiXqTXd4pgFgo^7U8If<J6aLqB2ZBO4iFnKZMsAbt(@-H7wW zm#qZ$eP1tNUVWge?pBy2--n9Sisej<X$xc^g~f!q#}CAxKQ(Exh2h%CZH*5Dyknzp z-OVrGKh-IqkE5#4X&ZP20JjInBg4a*(>qjoK&NV7{CaZrT-W`%M?#eTPw-Kiyg2vb z>wTexU4N8)?=I?l^3_l`<-}iAzl*=(FMP_WF|vBBxkyA?Q&K8^u?T3|%)qGenD7_F z2N5lTsx2(%w{j{^TXN9;dH!Pa(lSvap&CB>-v81oHe6h`p-XYvf}RB(g==1T@h^+J zeEMe6s`OoJxO1na-U~FeYQAcJ`^i}+@o@8m<thi2({loM6)sB8`(*b-Wy3lSp)0pe z>PZOhT=yzx;qtGn$#**Uw_T~Ty7+YE_QnK0t+m;8w|1yrZF3FbJR{0-dG;0lD{&L0 z<_2zDsJLk50VXcxMNHZcnM)lrF0D@H-k7#+(>dm{mA!K-OgdC{9o02HwrE1+m3;@L zUmbA^7jqW)$M1OQX<X)oug4@y>f`UVa^B!{3zQVOxs<hb)pfb6_r+XOYfA%lwQ66* z&71x6yTG*<t7b_r{=8__*2wBvzN;S|Ocz<<wc+jqYhN?{=dPT;?@znzP|eVCe-ZzS zi;;U)ihL7`SSIEieX6iqQBg5er{Y1$UBStHtUXD`u4&fnb1!*6{pOscReck<{a1UP zui={UV&=ZQu77D(3|wC}c3w@2{8^N7?c8(r1ctUbd`$b9nVvc*xNKYJAhVOZ>UgY! z#?sduwlyz$YA<d4`LUL%oMXBB6wQnz5w!!Sls@Vii1BkOZjCK|dgZie@$Y??Crw>_ zO;g0YXWp~TPq+Txb>a5ucN&KjZx#e_{@A*+jK}I@o8{;3J#{JHx5%C;O?Yl<GJBq# z>77fzQ?fTZUj25V<K%)P?ccwjXy1I=i+$;#&uh-ydbfq?#k3v2&i%i+WqC(gZ!U{> zy}*Y*>&~8K?SCvC8+GpZ-`pyFp=>XOzs3<c`wHUX(w<!xl+akbR_MGFZ(?btuh*Ix zH<p;*UNp;Wt9O1+!o-}C1@{l66!uK@>N}VsKkZh?*Lg3kFEU@gE}FGa{ojkp-_t%l zoT}X)y7T5Hsbeo@Z+TJqc>Tk2i-_;WHOjLNWuD(3J8kk?>7Mc(-xoylm46G++p*jB z$H)60JAE0L$}7tkKjAve%N=_*tcWeOpL25OtvPXLFTCo`aF+Y~MtXbgmV5hmUMc%@ z@qXsRBlFh1v$@ahVOIaA{<RmM(?)~Ocib+u7Moq}Ew(;)LFDob`TH~N6Q{?Xno`Dg zUfg=Y`ofHQ&x~_R?lhfKeK6O+rEt-X=DC*yr*DsIVtgszrug3jOS{4d%W5H06X;?g zB6?|8L%oYHJMip#9^UaVNq*17Zx7kc<5C}pG*vH>@!5EG@w&rmjgob?QR^?O<r%5$ zI8boHYh(DYCI0-%R~kMfH8FeYbUqEQYg&+`8I<av7Br#f;IshWxci2`(t{>6{xi7L zur~2W#=i4fehcj{U6FokGxL6Wi_jnaj}F`GC7*iQ&78MVq{Ahxr)5u5h{P2IQ}30E z{~7X`RZAoUmDtXENxK<&HZR}&`Ni2)J9t#t;t!SoT&>J#y~QWR@cN{K0!k}g+{`VU zzIi;qzWS2hn$P#IZOfQd#GYDpjF0c<%vP!9Lv2UWgV)8J;c9l@ohT=%_fl74xn_q) zx6k)GF$${HviwSKOzIvoZ+Y84!6!g(`r56je=}b;*|Z*=yFuxFO-)Su>Qm=_s%<ZJ z={zyz)A#4%S{MJ7#qQCc`|0k+cM{Kq*8I~x)o38d#rxruXVT-da_x64Uw3^@yj@z# z&ndY7RG;p(^)~Y7$~VT<eOdggsLUx{w*2(j=<P;H{NHv)R;)R7@#?nyj2;iJ?JeDX zUo*C>aNE?mMoksv584cS6;mgPy0Du+aGEsX)3dV6yDrs#Hnh9Lva^3KV@68S!bdyK zU(4BWG1>mZvgKDY%-5ZM^eRiIaJ%rT&iz)+kvC^uc)IBQqu0Om&p++Z%M(|gRT1Fx zCpdM>(=3;V?>42*IhOu^XG&La(A{?)BGY$d9}n?(wcX(4N~7PM@1K6I`6SH6`KJL} zV#6}`Wnn~o@9JupH|SvdecwTe?R-Kg|LOjFQ43@x(l~NYwH6f!SsM1fRZxHHQ)jE~ z?I$yNN{fgD-$t`fS^KZn{Wfq+cDZns6LMlx`3=Pmb{_W_1u-L^$c8B{FHbI?&-Zt; zXmH~jXM@Ho5~bVMZJ*1flp-IP!k7Cd#(sG_&&>FYhHLeVPZ!k}Rh?9J(d=tYSTTPQ z2lpf8XNOPKT#;X>&v$&^>p-WD&u&`RlM|opd3U$U{Bz0+qepjk$Nzr+on_6%BpLPt zsttlq4EvII9XfbM>8@Du$~3Rr`p30S7Vm5<s^VlTyZLgbU7^s^po(Wj>uR4JvAkVU z>|eg}e$z!Ece$^HZ*JeXBPf+;dgtSYX%AWp1EzXU=W-7VT{%T2eQMdK2^x7jo=QGG z{(I}}Py@bM6VA!;7M|I8asR%@3-h-eKk1P5Fwi~LT}ETZ|8Pb3DJ?UE8y7rnX*4)~ zF80J6SFZ1ko4dbA>bX1&-J>75f771d`!>6p8ZP~{uG}H*?ee9s*XBt!GX9=+o+oV8 z;m~RO89gTEefRoar+Z~P_oHiXcN`F@V$W21COrKZ4~vsYjJjA)(y_2xl`B`)8`$m3 znR7>MF5e1urZde4?uD7$IFhj6z@7hL#^v>iMsww)ca*mN5?SWAJS<8y>THgf_~ZRC z)7?`FEv=P0ty3o1yDpyeS-HbHBcaNqqrhWfy+M;@Jb%WSw-5dV+*1$ET=eZG?-zwL zlN#Thy3FjR!ItfKA*$wn`Kp;`+9ogCDcxbC*%Pp=%$+YKaJjKcdFr-Fu30S;&-8AX zWfbu{B>3{FC9_2ZX3X@R{PWVBpiP@*^Un;~Wbs<!bJe;Aqf=d#pXW}RzL=*Y?R3=r zd-6)@RldsC3dQcmWb*Fnc8!W(Y54o&!Bhipkr~fQ^DAq#wm3wd$(*cP`cd(GUfwbl z1FH-Jx0$IQxopfgpKgmvb6sq*_NJcHuEW1}yNB<5HYfAk+ufdFD&4E3{HB~~SP;H? z!}bU628WFo@7tTNqMWc`Q(h)-L0Rghl83!riv^#k@?ZDe9b4!>?aI#uv-GbNxmycH zH7(cWKQX7{lhg#~{c3yE`rXdlSoCK~_uFZ2er>D`xivENuSqA`}8OC~17XT-B1 z-ubr;K&Ac%4aUt*d;eH`+nKmGXJvI%RYCMk!)YhxCV$@$Z-27rvWj;%kH!W$pG%8Q z^vionFJx*tFMQ|noy>P%^vjzRk`D&0bW~|76m-sBFsJ6f_KW?Q$4q;ixOsC~f4gsX z4lLwa>~UFOOR-V)c`nu#bxsHU^?XlF=KJWUa?RQ7lg(Jksd;&YgU0gKraz2z0w+a! zEtDn|U%up_qG|cNOgOgusI90+-KE=qUQcXbjyksK#@S1aiY`u@dh!d*JdA^{zJ4c} z7kfXrFC{T*H?!H^lFB&m^1#~ywaM)+LMM}Nhu8(acHJ1o`d?Ud){HW}shjx!EpxiW zdfi(xX7Vk)uGI7u#y9nzEAK4c8oFk?ic8E!pWfbi%Km(6_a0kDoHJy(s@$#b`u~Qk zTE=suzTLZwwk=u5eY9xjy`+0RzIGq??c<60U3B^9Q3F=rH}+>M+p|Tq>g+eU_kNjq zW97zsH_P`|N7s5pg<n}4vw7F*+>2LxO&>ox7x;M9hILo|=E_)@*u4s_xVdjzUW|hM zo`ur0Zbkd`-CvSCq39*|<U@aXrrh^gE1?#-V#4Z`SMrzbIiX(9Q0?Kh7E59<LEa_; z9a=Cmv>;_dt$(%w=q`jE<`xfroLn5le|Ou;kW%fpdaoAx@~c=hOta7w`1-!Qr;)`h zR(18%Dh^}0)MvAgo0~aGD!usJ;{&=2;U62f<DGPiCqf$=5>M5HXl|K#*S7FizEE)I zuKpCEP{~=d-kq=fsrbq+F=MXVwBOgyOi=vIt#jcchlcsboP7@z7m2tB8HwZvbbv13 znc%a)!qr~3Zz;GyPTYQ1UMh5FkHx*i`@F8{srs$k@>}~~kzyLR#KRNqg-mjea*r(* zF^epdy^$Mq`$KEkF1x1Qjq6sG?_2PQ<#vY5hguo8iM|P*83keq`xxeL)Na}87e6_q za^3N!3zjdgXz^Evt|<<!G|zfm^k~JN9Ak6V+hx)BmoybE4L121X6nkTckO?C-o8@n z7gN2s=bC0US(_d1x%Gj4?%HFF`tN4Q&z+K+rdq+WlS78{;`bhb>27B#i#?z3;)s21 z$29Yn4|~?u<;PvJSL;d&dPc6QIw|qq_sshV9M1$!F1foh_tYno)Kg41Rx%otX-@cl zp)@xAUb(r-xpg|P(@wTt$ed^^RkeDNrT>;}j%R^<4<_wnI)29N%j|@23X(HEo$He4 z^w}1B<m4F*ZbM761e>)l3pCPn-u&Mc`N^R~cqi+VtvA1XV|gV%+0}l%&Be@lYkD$S zd+IFrYs7qEobcx=$2Z-Z-#q6}n=I!4{mom^B}z=il01hmX6?Rwbl1Em<$9O6e>3Uu zE%N?d<jDG1Z}0l-t+A5#rf1pg^DK64SnTjE?-{Sei64Kq>h!YRf5+IM<#g({3)7B& z51$%Ow_|&^wQ=Q~;-5K3{6D_Yzp?Jx4QxplOF!4locN^sH2h-TEd!C-=h}PB-DmZ# zPqsdHugheW@9ZssTc(%sH%fSjGI<|r`S!K=m4eqPt6Nv^Ua_6<+G5}LIWpFEGZtDV zz1VZyN-&2-djCziHm9R2`BWbXE<Yfu#XIY(-F?qr*%O;w-ntfbp0a#Z*4vk=*?X(| zn%>I=>0hSsSQhO+!T2^`_f*22*Zj`CNmAOY-&M4kO!ZOF%Xz}o8(h-qtfk4nukZft zq)nRH>z~_}cs3Ze*{fYOVQ3SNOzg^vReN{Ng!AvhuKcTPdKoKpcdV{Xz0BNUS$9=z ze}87X8vCi8_d=~!Yi*umvSX)a?8a|je>+>(&3AL~Sj8YHcS$1V(}9$$R>nVPH+=AT zT<)4%wCQSBgHrPvwcNtG?LRW5zPBsn1!hDgI=38idehSIBI6<7@7dSh&9zrqso3{v znMds7q})v}4^2r)NOL@~A@a#HmfYDZL!?;Z)-g@^@mq0vb#VD&orTx?n0a#yxAJeB zChN$Mp|f=HyeZ!n9*Nu=G0SSTPV)3$3D*p-H%vCE)p<DCK`QNP+9O$I?Pd22gC5H# z@7CIz>@z+4es@W*kIyX8&$mkKHXVM~y*2vG>?FI&7oV;MdDZ;=5pEf|?zQ|sMWN4E zj6d!8J9S6wr}O4FCeBO`-Fy2}{p!XJhsP<eV_%%SHv3$d$?Ar`=bd&e`WRSlvwHe9 z+4D^u5A~H7)k>%QcrUT!!Ny~ivnuC5uvz=(cjVm4+xAz5XWKMvTK#tEjy*>|>~A?! z9Pz=sAYrM>gHM(^6+vO$=?psqmE!;257U|XWJk)qr+NoxpPM`Rb8hmr!kRaK?p%ET zp}}T1mvW%hjqJ&@4w>3dT`hmM^L)tFRkgE3R%)(}-|^$$m-=Fv?Uz?6=3H<(w?e2x zV?on)HilL5ryjT7`cZc0H|M7MYe`s=y(zYpm&U{o?>vn--FM4C<nCwDcjqQ%J$8R{ z<1TN|%xzgqr#ap|QzF>W*yFUobH#<4T3MM>i)W^P+%ikAL-zRhd9NpT`>*4i!NhdV z`pJr=+m>$oo9E8)U{c~y)&#-BQ#=DC3|`j!Jo{q())`zEVpxP1%xHSN&~f(EkOez6 zp7!v$u`TbJ!1%pe=EA#ci@vnY&6}^iVB@rDcOSB7=y-5MWJHTKB{JzL9%uUe;P!{+ zQnjq@->U90PVW$Mda!(l4EvM=k+Wv+i4ohl+jy(vcKxsO@=rOPnaWyTw|-5fgK6{n zJ9nBbB#!p1e0yc{CX>&BZ!L^nyVDPDR9SWRqpirD&fj?t!!~bUcjsr$i?`p_-aIE| z=vE-%b^BpN@be|<mx^Z2dgI#=vE;$;Jw}pI+MO$0_HJ=H`{>5{qqd(^%YK{O>0bD* zupy(PR3eXaVc_b=i$9p}eS6FPSf``jlhAoP&K<q9<nc_+fb%{~ehX%%K4X-*zEeq* z_hF4-0Asz(v7+TK%ck+Z*xJp=er@I*(`(b`HfkJ=;t;QjxzWzF>}pQlsx4attuMQ~ zubsKbz;DuWwm%9JtTq*ye(Ia}Ecv}e=g0nyaU%B&k9}VHUM2Ra^5i8yw-~wCZ#w+2 zd#U%cP&-*$v)ZWwOmX(Ln*7UN|2k&xlH>Q+ZQi#1O545v{baK?xV&Y}w&;I*Wm*J7 z4dSZRtG0YQwpsP8QG$J!z~qSSs~$(1ZhuuF=E71ZtMD{h;pcwk35u7w(mY@NWli^d z8GnA&mD~R`{dGP~@tU2h@A_1??Z1f8dBubJj*Ux2M8wW39$dU=jxF<vw$7Z7_1+s5 znhrKqEZ@E0UWJ|3g72-7nRnwB$bTr0(C}YZAtJ{2?Uu?muX`o-;@z`%Ju*(+nKAEJ zWl~o!L!`m;<oyxbM9X7yuWv20$+LBxAX2<A-`d5(v*+@fu#eIEOv>C9W-n%*UDfr8 zch-d)*SZ-#a&X^TA=0}mW=nO}t?h@;`NzwMD`CqoSdOGHG%$zWB};hCCG0|j&)RC{ zD`j{;Upc(}ZfU`rkX6^XcOE&}*cutYs-l#cdwjp0?W~CclM)OQtP6iOT<N)DdpEwk z-qzs)li-&khp2L{a<1?D6I&JD8Os!PMjS9mwL2wJC9&tFM(tMXWkNT*Q-o5vuf*+o zefg7fihg3ol(MjQdM_27p9#<C-4>rX{q@NNi${uG1y7iFO=cHK@?=S3dgrs?q|Dw@ zi)k}<*Zaja8?HQi=<8F4y`cM_ewNNUALBJAb<PTv`zgVneKT7hp6Hj_rYSt5eZ$U; zzu8ypHc2|i|Lm@;y~NR;)~l<-E7x87e(Qr*s_it@<93|CdF>ew9;~hR^EK(+A(VXi zkhM(Xt+3n4Jqe060tfcUOK6+FtP*a1e6M11rt;;;+dNaOo+)I0UsF+@!`H5?C8d|q zsoZZQ!y4Gi&f9k*&tg*G>43SbwOX7Ha`!PizE=6*aA&nn_|fBszD5XS8JJEmWtwMN z)}lWph=+4+&i=}f)u9Vx{O0f<b(}8ojgfV=nEJ7am1}wuPIpaBy?W*x<9R<Xt|`t9 zsS2m|oG{oC5m%;U(bB?lyyedPIk6gLjC%1e8kS4%&-x{nw_M@LVJl7@hktPmRn4#U zuU<NRJmsG7g2+>kUp>s7rdPtFHsNd3&JZj6S8EThVm~VG`TCNR<CO*c=aWm<Pl_$5 zGSu{a`&n^r_#~#iYqkfUbGWKdY`5aN);aTyQ7fMxJ3LXZSLBZ95zU^(o}y2(Cazmk z^ZHQnfs`oSn6t~nc3l+H`gzk>JJI3V_wC!4&A0bun-$9;!+&PVqF)6JDb~@~`6UAE z)qI>Tn;*F;bv3`j?RvJx^xy*Zvg~*k2l;K0@v5zU{1$spigd(T*FWB$6PeTX-|*u0 z!!=F88VVVv;Tun#Pyc0bK+t~j^Vjq0FW79~5}IXQni*~CFF(sPM{IfjPsy`x$`uaH z>Yo2zmQ@FehN{b|b#P^b3i{7JP`1;%?)f^l^1suL$nW_m<aN5Otk$&d>XOCL;X>|` z3$oOHFOOJuQd39NQ-|rEispJp-+OYitmd8A_U-$}2##8*TZjMX&zgAoYwaALZVTUi ze~VX~vU{Z!*5Cc8LhO-HnsaT`ufMf(vZZD_9+baz<NHQ^*QKG8{1@BXWq#LKRbDS1 z-E}GDhE;X#x+jcN559k^vExVOS9{YqztgX;&(iDRdgHDxq;xP)Lo17OW5UFFGh2*J zB41Yq%e`{Gr)w6mx|?^Op>=h_%`<WlFVD>@+Bwgx&N4UVm5Q68pVsaT(++c=%i#=q z|KehBPu|~UElPYTEBI4ipF1xfX<U&lCtDq6ogMKrCMMxidE3>qKU%L_y6wNF=>PTU z+|x^pZ8P<zvi!|Ve}0;0oqpQW&+o7N-JScJKQcWaydnJmF3t?EQ@oFv6IpozWf*Ly zwmKYEoWA$z<r6RVvld?p$5Q^7Vd-vDRQ@PqD}Q9+<qzkBHE%yLW@eoIQc{2S?^h2N zT>;1SY)eX)7c4LM&#l5zI3Ie&@aMo~7Y;wjO~1JLuHn=ZaVnEFq8Ds?u`YkAyizr% z^X3fqqH<4eNu&J-a<=^C-W}u5c32R6Ovr_~HVXv2l>~$f(wTgpy_kD=<B>amlRvRd z@mwpmZav$Jx$c~b=kzbvJPUfH^Vmi8r`qgU^<MfCeScOgoNd%t$uV1c@BYI@)7{Se zJa^{q#^%5?5fQ$7PZe+7cfBiI>-9w)%Ws}H*8kw-;CuHwIBQSlkEs%K#qK@in3fw} z-6N>e!p|J=p55)V@2-1C5_Xv1ONlyJaxIK`WuIlwmddh<@*Eye0i^aq&|NOof@={M zzm&|zy9FwXr!BGyo66ljM_h)z>6+t%#vS32>$>_|UvE^nl8~j4&0@3q4M()bQVFK0 zmvz5agspbkImbf2t69zP4Kr6+<Qxg-XB&-}XNRrvS)EqG7f}`zpdibn!yI_bwe8^1 zN1GlWR8&!sP<!(4!5gQI+y#~kndj;KS@j}%$K0j~{6#_$4S)7Be6_khf7Q~d{U`Sv zcT|QJKwJ2aO#~M}_g}AdT+Mz`+%x-<Q{(jwa`TSAic{VF;7d}_s$1#KR_ookuBGms zTEw=BZRTgky<vs>I<I>DP0*2fdBx*kjN_a`60<`5)``75)t4Vz!8gN4`{31@EO+xL zXVbcmhx!Z@UjM!wefgZcI`dgQmOl1n-hs6i44dYzea+6ZLS9&H;S1@*H>Iu`?`gYp z+x+;8?^4oJ<`%KbXE$>+B;`2n_v4avD#)3vDN*%SqW}Mvm76v9JxIGy_L=kE!iEL0 zJG(;b>dZNqWj-2LJD%m{pT#}hY;vxtey-*7m(IrLdkcQem>)R7q>0_6Vw0dv>?Hlw zOJ21cwg_Zgt5uXW`HtTHllgzHJ=h*U`A4&PoKsfh^>yoyt)D%m^tIO`4d#%uW&cG^ zn^?A<RO)m+pzojJp0P1x`_=^c%dG(?7uKr&i2Pi&YhVB5Ou^+Ruh-8Cz3D#p`K!V} zne)LhPTyCYkJ<lM_W7(AX#qm*X5VVxcn7Z4dbu*t@js*tl8+X;TyoRuVC||0j5iNP zSBu2_x$-;Gbiw6EzheHj2R8nF;c`mFg3HxaS5ZvoQtZ@%Hnr@#6HkRVPbi<vn^L;z zpnckI;SS$&CeQ8GQy=Y;|CwrEv~u!{*218dtdV@eb8ZT`?LF)H-E!B~*+N|w6BgQS zTWhT!xarxCu;W(WOv=NoKkwXe;O2tM=kku}?>(3Jr?;$fmHzu!wYe`n=dM<H@jN5u z|Lkf0`-8tPzWdEOdU;@YL-_r7EF!8;+dejKU~1FgYnXS+Wx>M<r|*5qbomm`mvO%p zTls^v{bL4QV@g^3=f*i$`v<xF`LwvkA<NAe(*6;0<aW7mnlbaP<{iyD|Jww?=M<?X zF&>`sQzQ6A;)i9MUvwkNpKljp?`zq+d=qL*yLj%zT~*zb6MvXCU;L*3rpQ*3$KA$7 zu&>6U{8NLIPN##<fw`O}GZ&Zh9TzJ8e*R>3fZEom9s6V!l*_5MSnT)zJkz^#bC2-U zC$n?1{%P(_u=upNE$<Y|GsT>|FZ<e`>h;d}JbC8sWOmR|L9?o+KF_LMFS<VD+TzHf zH<LHSe-svwx%2({m5R$Bv<<Cv_Z$|~xxMb2gmMIjJPVHU$K#fb_B~nY!w);U+Bl;g zomkA{?iljWu~~VWbYIGqppfIMiXKk*-1OMtf)$62z;~_Fp&wTk*ow7C`S7OnHl$CL zP2^rG;_RS(H(%~*R;b2w;pfSP7gXA69S-Vs3n!nj33J<!dGyqlEVt(ksp_n(mlO{e z38coPNW|#qS<A^dIW;9Zz2iTpC$gJiy0F!QmxtDO?Q6ZQ$??;`kBNK2e(?oy&wmAP z-SWwB=68#Xwof~%DrPU`e%oA_vNud`>bdh(*%w|pesaAuYfHcb(>3kSH|`2Qsb{fw z#*|gxZcaF-?Rjw5n(aa84WL64{dz^tfEqvxJ)a^sfOsJdASvVq(A@n#kOq*?bhHN0 zMQ{Vic+asN+w=P_zBe_~uzt#Cca2Su;pmN~x~U>oEe~#}1uKAypG~0R=ONL>&)ElG z4DA;yWU}yQd`MBQ*rgI5;(3*`y>JmzROpi{YCB`=Cfom5doaIV<)eH4o|Y?{*2Tv6 z#+z!szBctpAlr&rZ~y5|%PiuW>?+jV5I^sPo_Bk+_V<m699QLTU2nT@@_qU1-xf2) z3TM^)SC5-odui(eIq{<(V~(ko%=i`a?c02d>nRq^n=H3%e4iZOl@;ol*sJwBez$wz z-rwyvgyt^0a!vDnF)KfZ;Jr7CA3RcjyndDET(Rr=R~Ji&-styR656ylAmod1(m|!W zm7M7ro36#KuBqjyG{2d!#?S1>@f`N%#LEX0mfSvg>fx^RpQ-0zrBCZd88wT|svdiJ zeZD)vOP^b7t@Wcey<=XxuIx?c`!&;^7Z)~uc3%GUZclv0T;|`|Z$E{^+wJhNx;%MT zwC9ER%;Mj5TT1Nz=I*~%8dWJe=@s{ahD}TFd|_Fzr9rWaSz&`wXokg;P38xs4FB^V zIQV8Wma@kj%kp+}6Jt_Fmy2&12<-c;T{0y-Y2k8RdFS9sUoI?>tjc_GkoQmqgJbUG zC4YXc)1BEeCC%&dOu08xRo}kbe&5a~uu;S6{YCLfjVTKI5A(SyJ#^u2tvJQ`m{W^) z);GJqi@w}fN#tss{)lTTYt_!uVh`<$8hf^U^QyKs|1YHI{?Bvo;^qDyj3mDPa$YDn z+2usb;)^1g(8B<G)n165)<~NYR5Nk9;PMI~!&doEmv+>oEt;`hDt<fr>P2U!duN~O z)n2rIF@HVBA>{;>;8m^;foC*NT5#Xv<o?ILt#AFcWoNQ?7afy*t)v{ur252m!;}=K zH#To-YEGteKVBstnmaA+ymLLrDStDOlR>;5tb((ut(*63620*-;dwIOtHNm+t?b9b zva`h=KDlD+(v$R9tx@fW$weJzpGhf31?LXGZ7fYzOnoWnx^a<19kZFI;e(}TwHif} zty%qp9zT{0%sr!f{N6sk>+7GD?&COiJ0t$7;N4@h3VT;BdBpK+cl3gLR<@_Jlef=a zbTEQRp!ID@)YNBrVeL&)!LIh!zd0st{gCWB<%APYXMf{Gfg>|--g;V?xMb3@8LQv$ z2F}qFD~*#;ny$)tqqUReX#dYA6%CV&8(%6{3t!x?-DYdXoUzX83h&R)%NF*QF1W3> z#Nhs^Wdi2qn_KtJ-dfq&>SOG~>0_<b^zLbCjg_WvXyfu&HU0JPQ>UL)Ru8E^@nrM5 zZdOmlzlQ!DVGBc#O<BsWyZ^<FGFJArmv&z*+PiZ1i&>Y7Ws`P)Dcb+_MBw8z`7Ph~ zT)$t>T4f=&l4rvE#6>M>H)m^{ue>j0ufgVP)OmmZoA{&GCpKmBwy7K~z1s6xxW3|@ zcB+r&{C3?(>OR^b-=AK-KPmKTU80u$-Bs@{+<5dPpxhy_ZMRv%S7-AZ8}n`}7<F%$ zxI63aljXZN+^w*b?^Y?CU|O_eP1($#vt0KcnlpG_@G-f=#kXRKLm`uWvkC9s*<V|$ zu0Hx5_+EW!^xuzI@{I+SSs8N@#`vyIKV5X$K&0(^C7147$we<-Bw2cM`AS9@lpI>t z(t2B?bLDF>>v>M|<|Uu@n{}m=<uFgG;Oj|?<A422_Dpu0)-ti1(OQGi`@kpbZw5+A ze#r|tuFqlW_eeaE^x@^r1@&P;0ZVE%)_H7HX^)*=yLi!zE&UeTn!i=){eQ+~xzRpX z{g!Frw9PLQOau)jFBi7F^AlHD*5!Ffbz01%mvd@3Ram(m3P>a$4Bd3fC+?rl^=Ic= z;+MbQF5Ii8vElN=uD+QH&U!04c8WSRR-HK5BeVPxlW9&*?~Tic${mjH?x>S&Jk3() z)t0R_^_|j#6=x!Pb}!iBp2o3pS)s~Crjj)w+qDWdHS$Ya+&s|EJ0~Z(-mKtxZ}o;o z>-;;-XPuvYH8fKzIW1P2^KK8Pyjl6Z7XI1M&)%3wKZ`i^Hv2)!<UF$vH}Wr?eWv{R z*j)3iTTh)_R&(P{o3^~!_A}A-X8nJ~DmPT-OgYi~c1BOfV!aoCBxW;Mq!d5*{k>r) z?{&Kz_mo8*rH+&LW}kZ>C+q8Ax3$UGF|=0t(bsibug*2Ru=f(XcV5=rB)fa-Cg(`- z?d)sTnt%J0wJ?|1ACG5glkchCT()!Z+xW<!X|a2K^24@m^Azu{>d@S<w&{-{OU{zi z;>C|cswKT|KTOZG6AltPyjuO&)!4+mu$?Dg+MUYZnaugUZ=Jo-^A`TpTQgHH-MMkA z-D;PX+0(PD3|@Xc*YfQCQJ;*+H;bc>hS%!pzP>2Ir?o;(?$WKulTD?s%TrJ1t3A=l zP(S5$TXVPNwbYKq@l6xYMt_@sLp^R@?PY<2xkvw2C0|dw%_)^yv^zE`S*z>FM82%@ zjNOUv!z;UUPu<=3)--qCwzT{08DXoZZgHCb_S~AYt3IXf^jqgUZRWhod@Q#Vx4Bma zncCUSs+p%(?HACRu5;V1eC5uy#>t<avme}?9DLQZChmql{}(H^#On(KC1?4wP0&?J zS6=9+HP4@YKSMl+)ltm+VrYuo#>IEoorMYFuscH|=zbK!ZQ#2z59Udm3$(reE%KQ~ z$nwdV2@MmSXRlh$<T%GU`Y`*!SP@np%?Y9hYJdMz-t8cxq`UdjtuR0DiHB!C{C-|< z=V}d~#zk&jN;}k&w0ER=_1N)FxzM*tW#gkL597yCp53>(B@f@5;pORUa-(g*ivtNK zW+Z+P(pokn@JUOdbH30YEsi<P3g5E*UNq$D&4^9Vf3x|cvkw2p3ZZw;3}hbe-NEko zrfH^WLe|QHr;*n@WNdwX9=xcW=5%IW#@QB?2aB}|uUQ?*IwEveB3ryY;Gw(jPU8y& zhZ*cucc%Z)Jki%2z}0@ISLj-+o1^pH8#i063Rw0WDd2yv$=#FebojB$4UeM7U2Gi% zAzo}YC#DAp&Tn1#N^!%jkb~_DJ@~fr^i<reH%vEC5ZD~xccPWiSiQgXz)t~gnazi6 z)p=Gbgf+>3Hr=>rBCBmdM+CFFBIiCC74?JDC-YolpMNxCL5u~vP#K4Vj--mjNzZc$ zlM73KN%DTY$}p?rCc`zAX*EHLnvW(Mgve-YnmVgitSMaMY{#ODCq31^7IHKnb5vCI z_48AbVmq^fQM4^xWc8}`Y**L3n#8Q!(vp6~)XLyAx7m-Z4JO?Cq*6^*o!45C+Mn9U z6UEbWYwMdQS1uG3t;i4VIIiK-EGQ*m6k^nMn(IJfXV@I+JmuALoKsV-Dj!_ca_I2U zqYkI#w{O3F_v!JkXFWK}A5=%}i+=z8ah~&^51*I+{(FA<@2_=BDqcuTTm3f8UtD}k zjOveR?3+b5Y4!()d2F<)igt|td!222HjCQ-kI&9-sM&t|UQA#0E~g9IwWI1J-hVH# zP2gCmYyanO;g_6$GVCckZ}!jrE1S2^xhL^w-JaWZx9;|ox3?c&_<H)s{{7eNbKbu^ zWj*QBq6IxSDg-0fvsc_%YhK=dMnCiCj6+rI`zr)q96X-<VtdKc{zcB0_W%24ebcGw zu;05*v-x@X>-XRN!V?*NI;t-{cVXh%ziYn!PRU)Fm|Mtq?bzKlzkTLU{hG38>Cx4j zA8f7LbJ^!~^U7CBNw2M@W<J^RL7Dm6(bk0jb37kDo~m<6Bl41r*CU1t+Wzxju09mu z+`aKk)5dSfYo51nTzkyQ+w|JMtTpN3y)w75)*KI4ZoiW7X8p0K^ZbkJIxot<Tz>q; z`nhu@tbOA}k4Z%Ll=Af$mL$)~`1MuzfX<Qma<}d5&&k%iJiD={?}vJ)Wy;06Yrm4N z+G=O##clrEeU4|%&fliht6pxt&$N8nqAfu$bb=!6?`JOK4?2?2J?jhW(jR}W&D8Qf z)vMFlKV5aIeyZon*<W2Qi|=t>cIo_EvAM5gz7+r8XMOR@{`gDQzUjX>K2PnBS-zvb zX!q>&nXU)_-K|;la`TB#EdMj})iU?l{@O2P?4fw~zTEOz^Y)5toq8y3;-W8~b<fuv zd;6feOMSvN>mBDdHD~|db|<~6ZO!dn*MzTpJ!~)H&+zT~*1F}Txo6Eix0$eKzy7CY zdG$;EIX89l+O5y;UYb|Fc3#lsdWP0txe}N~nvn&T*==(J;`e+U4U5jcZ2&sS?LzRx z#IVxscS>8gZD~Fj6t-!viT0C4OVnmwzUgP~^)i2c%E@z&(hgS0R&VH6DLMCZU-4$c z8O%KQz85$PDR)l1f0mQYCuqqG29re{0h~s>X?y+kr~I4k;==G>D5N2WZ<hP@-CLG0 z{aZRE_?FeqI^PzN9qL7WX3>wI=3KDelfrdGW18BoX2}4L1U?P(Nks-Tnxsz%I+}2B z9+Q}->RM5{eskc&H9>RP6njN{_So?6<FmUmk6*v{Xm4WUBag-jMn^<S+s=CjGaf7m zS!49LQHnpFsdeEtYew;x6I}n)ZS#BXD3Pf6F!R^pd)HrHnK$*_Hz5-br$d2fY^OKt zcKj|~9sNK}L`~vDvDMbV0FzCLCuE=Rtn>M@sbKcg37#|k-}xj&IVo$19dfLG#i5(V z66brmBk|mo`5T_@s^IbQu}<9mwnKN3NZg+oo$HmK1gs_$@w)|kh#YQj=-R|&(dN2n zb6JOTQ^yp!Z6zD#TOWS5VZP5hF6rQ95;n1VTbp+{{xeTly()$8`Nu-{1ufTklTYbg zOy*wsMy%UF*7sdaqT0(t2h<ExKRnimzmdJm%i-1TwYF6%XC~b0`f}3Koh@Qw7>`lz zrHQ{KKSm3Ey1MBYuTx`%Ws=J09lu`ZOP4KOlRN!t#L_P(bWi83yOcY<%vQ>})7!po z+C&acL2LJ89lI}{XKGX|l76=Jy76{}vvD?A!tbSzS3Q|B|6cA*qpgo)_P(9e=r;d- z+CgcZ584|nKIqJAk9fc)ns@HR{>9DTzvo9A6^2aSd3UbRolfTt!Ss#N0)59`Ry^A` zsW|uX-(!*Sy{|vrb(|D(H+OSL@AW+y&g(w9J5=;cnYrdhqi5PRm&cFSO%VFZJNu&6 zX}>oo3^!VC^KTc}`{%e|S?WExJ)Luu*09LCdOYH237WC+!Re++&T8BKnmswX;5+wZ z?}$V!xxy0L<hLOS$5n*o=3jQ;`FAfqQB+Y?=;ON@{hhZNGWB^5iYJ8B+*Av>R<e4_ z(#76e53WCcQdQb>x$hU(nv6MdHT{2Yq|axa)7<dg_Tt1zOH+PM4rkHueldm7i&Hgn zMykQP+Q=JU?yGn)e?2^*@up?T^gg-Usj^r2pC4Lw?bJmpTNRG|CK6RYPKSMC+q>5J z>4C-DW$qr7kda#0XySdzK;mHGl0c=Sogz*y)svNemdridb~I&HdgYveSBpG#zdycw z@Obs<==Po;3_1#mt#NE;{ys^FNU8kzdKaVQ{1qYR4^=0tPE%T?o6G)2{btFE4X!IM zzMgfg+p|t=a);jY#cNnz|5(mx+aAaA^t$=cj7j1ZAGaNSnfbd{tl&$~<V}^$x0W$p zyc_&jT*zqBw%v<X>`wZ6nCmxVr}2ziLXnHi)fD1GU#<D7Tc$MYT;1_YE;paNX>$Hu zbK!x7;zL#SjRp6+Rd3jF>jx)$S7e%Zug}>0BTT<Fe(vG@mrVDb*nIVqYNvMLzJo2M zKcr7bBqt<mX7lLG-h5<{P)z!%1s_F(wo7ZX?X{HucVgO0w-qOf`M12-6TeN__jTKq zgML|8uUSSfyuVg{-p12$^}*5=GD3o@`+X1I*ibY7_^OO|O%=i|%jRC2CiQZbzL1{Q zJqx}n^+O&14len$<$K<N%dIU%`z9plc<o!W)peoCoY=2@{;WMegqs(A<IB@Nx;jX5 zZ+HP`d?iyRqsD4)hN4%R4Ez4d__J~|Ok-ya`yI}|YWHr@V(q}p;CpsWuWr13b~LxL z+s{%V%H^n1{rNx5zr8=DGw5FB`ct{VVfAHG76-1rhU;rNV)&lBhUMrBO@A^mXg||u zp@S2mTXzN3%)e~4Li_CG+4+I>H~HKDf4<mWY3%vMKf?I^{#D(bubtlMTy7LU<`cZ{ z<L0~?n+i)i(KnJGMV_pAH0im4rf7`vt)OMO+m$WD>lrTE&B3-!&=R>7?30?8UXr0; zYzUp`CSp1N(V&ffhaGtCeioI}cb>DkcKV&Q98scd3r?}|a9mpD<f*tsXnwyp)6%8P z%tFq8&h`EIb8oJ$&cQ<_8`(X&mi$;G${l3D_VIwKav@_ZZ}*d5?w9u~PHH!-_;x|} z;RX}?YoRO>&K%B{<5K@k=aOt&FT?gWXl_xE>Q5IYfy6KK7DhQZ<jZadPGP^Qd`F^v zPFl)Z)6IX3c6-e=eXV!)#;kv)dsm;Ux8yPEUX(v`;^7zjc08TD`|ay>w{7GLo(b1} z>)03&P^rwy?ItCmXZOX#*Xvr&t*e)7_eX7CwT@?5<k!Os{f^Eue|r7O>}_)Y{a?Qe zoAcWA{$|5RkxQdJHr#a%y1LCpt7O~frgPO58Ix+Rxmd)?-}d-&d-Acnx~tzhY${cZ ztDVBrk~-xeo44M-6+QVy_ZVmUt(3=BNFnbdhV(`v{FAa$lS{btgG-Z2z=v_W<rn30 z>4QkH3PUdafDqRRJ-5u9RKLXBR0Rz^{mgvbg8ZVAV%@~N6y40clGLK2(t?s=y@Hf9 zO{nsK#Pn3Z(%hufA_bTUo_T5cE}6+C3dRPY?Hxf}`c6*y6$;UYCZ-A|mSzej#-<8p zCPuMb`a!A1`K3k4sl^I5HeC7vMfu6WsU-^03i<&qZVLJ#sTCy(v0VDD6(#P$C5a`e zU{yip3dRPYLO6)a&Q9MgKd(f=#zsLu$U?!`0Oai;1v@*?IpO-y^k-pYM6i1`XKSc$ zzObRd-rwOrb~tu@>^UAEt`gEXAtN!rgSlmy>#1qewlRII{;Alr_jUi0wJt3Ie7ipz z)jh7vf3tUDRO6MG+ilDzSNuD7x;y$|=ocx6e*#hSI2Lf6a><<Af6CG_^oXQ_Yur1l zBT`G(vUIPQ^W0*B(UFbJt=o=CGaA0wvQ5FdQEJhpbxJGN`kg;?^U=;%ZX!prltg2m zX>^ov?bVqhV!KizWo1;-z2loUHx=lgzV~|8rT-9xF<sx+Txs1QIDvKQ>15-R;>z7p zDIpgZDqH3q)iK+kvZN+Ue9tDkQ-wnEZI`b~iHIMwsEKd<#J5Ox-^XZ^1(`p#GKB~j z@;n#a9lNoStvB*s&(^%SCc}iqKP~o&>AM%I^=zN0n_s5qP`sIG^M_;ZVx}R<J_im6 zUz+LZ(fIx9Oizh9pLE-KT5jH%x%uePGfgJO(nj3z7TtzRvy3;tSu->8Tik?8f1Dx@ z-#fK9$LDXQ{HETEI%f0M^At_D;<I0EUH(UG?pBV?l@d8dm1hs9T{v7Y)semAg>KcM z8Fz|LoizRMM=CGn&!JL3i(q&8H*%>nXWyT?{OY@93=XXKwqKjVaw<7tr<8I{8dKUw zufC03v2GK-eu_P3HrF!EKy<d;$*TCxIVn$1o{5~WCB9)w3Bytu=TqB4j|GRMEak0X z(=FThJg_q-LFwl4WqgHG-1co^J7&xOC8&(knDe<tK_+MSq^E{=LXOPZ`nqVwxs(P` zo^{?gyO`g-oVY|;o$sc|g_G*bm8RQ2dQ@Q$eRuD~d$*cQW;E&_6WF!i{Oj9I-a1#M zzFxl?wK{>vMZ&J!`NWhOou>QVJCbf}K6Z;Q|Fy;a>xJ+7&Xz9SWj`Zl@lS@eul@YO zkEE+g+{y2_<hx<J+FZ7>P-Q90eS(iS|JQo5?)9$l1#|DtY^Z5iGp&40m_*!Gx%FD_ zCnoJk`0v(JW2#VnV7^M`#g9K2&*#|gIpIIcev9gHmA^)Z=7)WWJ-01RlXbS-NvpD7 zy<xLvTw22RK>q#hHE#K;vya9LaJk2<tz6}pUgU8$@{P?+GyivKWf%M-ejVux_FZ&H zZe#hMs(ks05jj$JwnkF7+s)>8+HY*-!Yp=-4Y8cLVQNM~@gL%yf7wA`-}7*uM@jN~ z?k$(!qv93C;pD}+&s1hk%H%a0<|O269a*0~CpKu#E>Q&)zI&1V>HB^@OXZSY@S)7* zyo&S5fI3%R)`<m^I9Y9;wtQrf;(dMbc(vbuU!i3O<h!&p%nH`c;;mGb{Goh$PO!i6 z@98|2JJd@X-^Cf8ay9H)@50tIF-DW`sFcy76)bvzMVv>u@|Zj;Bn-VW4LX-!EY--| zkbS7*@_}s+pFjGm8Bx=!d&+a(0tXE)L2;FIzSN+_-m_RQH{X@lIi$hfoN=u-bNX$! z*{$E&^ygOmJ^F6e{9T*!*4n+$+r{-tuR{Fj#qvbGEt%il!q3k++<toF;vX5ZeXcKr z&u<i**<6$LDz)QgSo_p>2hLrZGUrK#*W8cYn~eA7CT&)}9q!&Xar=vpDlK1LsQcN< zoxk_x((?O3ziKotzJ94AVxn>G>{8?ZXE}F7@6NkBEARU*?z%=FL9L>MIRQ_#HyV76 z@#uVd{KURPQw-Z4Ph7(2$03_!^`>>3?fT;@3}y*4PU4tmeWHBVLB|zZBGrHIp3!`2 zVe9`-p>W9zWd*ekVULPw^IrWIzuG)IzS=-9_htUFi{9B~byewA$rH+qEw&%~CUtU7 z#Cg|Sq3;f!m7KA#SffflD~Mm|Xt-8=LF4gT)0Sn`GDk1o{%gwmb>hc)HP`ajt_Xkk zDRZZ;_U`qkcEw*0t_>|ed^vyNk<i3N-Fhm@lK+Gjw+NoB&5Jqa#H(Cc8QD|EAdr+9 zf-MDtYJmKtEG|%e0<8ed4WTp5#56!cZ}(j`5U710E}^*aiQ>B(eZ>#eHcmPH>44tS z{M|N7)?S{Kc6kza_m3*IjhD@Gw=lK1EKR%9S$l5g$1@@)x)>_Wn}knaFxqne0<#Ot z95*K+xuR1Q4qUF6E-v5f{Qqo_T4$|?p65oT<?CKvSgD}&P0;mOz<J}p)441S?_Us* zty4OEG{>Y)Tj`KQ@6snJ(<XIzec=3lv1tC8X-|%Q)GW7UV>tKp$En?AwFTQ+Ul$gv zy7brR_Xc(8{YSOCGG!JxYVfakVEA#z0z>0~^)ZZov5y`a6zP4Aja8gyQo#{DQ+%dY zXx=pao}X(z6-AevOPMF8$E+T?keyY)JLQmpkGR)#>$RJfKRa<Ib%nX6cBsTj{%1>l zPbmr<kVx7y<Aj6#wV#Jvx2%a<#r8%eXZ~f0?M*lT*ko?2(?3?_eO*6#>%6-cFMDg6 zE{rHoxHI|Wmr{M<56ZE2#%q>K^*?-f-AY>MxbvD#3xvzLg=W3~`qcgOrzOdZefl$& zzS|KUF3r@PapL!su&F)$FI1)~y}NNNjrnu`*9!(VD;NzM1TO__$~%93*A~~J_eL*O zc1baa3i58~kZ=3?k*~u4R=(NU#2{1QRT;-ZH_w=Nb$?IBoAxD|{|{`t6!U!hq3;`S zZRF3%H2RZJ&#Jhtfmih41<f3HgXIhoU!Kh8R_004GDta?#QZZ(^agiiTiWuvtTTf8 z;;-H7C$ueF&n%VbXWMz$^4agEzuhsDW<QpiuM(ORzAK>HD?j(K|5dMY-I`fTxMROc z9le%UrF}@P`0TG$>&~g4Gn^vR)>OP=;my*x<O|Yu!l9~G+HYB>MXkMR7dQ3%?TM2@ zrtLa6z3hwbHP5iOn^fd8p4%PVI<srGSN^NrMk_Ce8ih~GYtq`7_^PZZ*X(E6bhFJC zJ8!RCQ=j;|d-7SX`DJouyoX(G$J;Fy{1;g%^V@pElbF6%8MjT}&gOjKUi|!YF_zq6 zgk@64(7*(`VS!*P>DF1X+j+OmzTAyJn5ZvgaB)xfDLww3rZ)vl3isHW++;esEOp_g zM_xtOx4zi_K43}C>9S@$i4BZq{T}mvPi0B%SP;&<iCNQu>x1kZfg_@aXL%n<YSRo} zVU%IE<EHYj^9sv^e!3cUuHtzs*UJ~E+52bFR^?Z7d;a<IN*4XU!Femk@zlo(1Doek zfnCCyl2Yd<90MJg>!5a_qU#+~V<qVLj)F+DWvjwYFXOA1|G!7f$fo^*ibWtp1FNIp zV~d4-zuqukXc3(3n3>hEkuPrMt9jfPcgV&BNv=t&tM*rk+$OSNXYQ)yu5;5<qYhY> zw(p;&>+aW-`gKa{6b9~yOGgjgUA}r|==oO<d5XLC7*<~UIQMxUJBOZ6+9_rI*@6#q zO00Bezt|oy`M{psd8?|A{ZQO@Ty6dIotifMlc&$D^a=0%c<Y?Dd#kYS1mCQ#8DIJP z1(mNHtKP$4Ryx`28tW|f{59oHQfIoWjP!l%xDSS%_S<~T_T10&ZelGKfpZGZgj^E- zYGCS`Rr&Ahh8OOiDwoNIofp&7T(;=={kB&tOlQ55@G)J&8RFVqHnFLhzx_jQ)U@`R zxzmD!E052Ma^HPEEwrxH|5nKTC7DN79BC>RIU2Ce?)v_-r#(-21gu$hY||aj+=B;- zRs^;Gan1_7AAWexbmNMD!K<sEY>YMiQFK6}ysfZv>!-HZdwpgv?f31mlAiduee(72 z>-_JXHDrx5Z~d`<Fv<VzLN?K<`vcxR`t|k1v5J~k68}FgZhq3NaNqjxwoaSv=k-0< z#h++>zSuT<^T!3<HYNqDEEWk_MJruMF|253lU2HPp-E?6M&~~lvBm_8w*O4LO6v;N za9nWnNmMg^xWb|NwwONCx)7&`ht63U5pp@_zOT@Hk&tPbpmlPu1l!xb?A?nyeFF>( zJO4^mUeyrmWSBSktLGJ2QRxtFtGvMDdC@mm&R*bkYM%Wqd|USOwI_CK-})4Odr5WV z3Y875Nlm97PuY3k=C#sU<+5h$XP256$y?{XWzt&Nz^CEau>06H*=-UgYCM6j?cCyp z%(#-By^bCb<NG@GLfws|c^X-=OOm7~^X28){GB!D@A}8j{)*;W=Gf<LJR~G%Jf%7F z^`ZZlb`&PgUbfEgkVp1+d1r?$&1c%Tdc3|hW$&U^l}j@U0=$}^bG&`>#CM)p<=o#p zw`&>SFRaj!+kG%X|E&9r)Ykkp*UcQ)=rytU)_yT<e!fmsX8s%p_Ue;4JGuA$W>3;v zpI5J_FJNpl{iOJOo#o3sKQH>mENf%--p%jUj87Zq^5;byzPW17ukEK&=82u%<PmG} zZTBNTGXuV6W5=NUw!^I}UmdI3pY^!FpQBm)fO+ljZ*diu>JGkApVP3A`6!!^M($}Y zA;$#4-);x5OgNox=_LI_y3Au*Ahv=AYc&ilXNanXqw_Bth}6AbZ}3QUV#jOmJ1UQr z49m1RBqA9)MFXzw%G{#E+iA=z@PDrG?VH!utx9luw9xL`#`8bVJ+;;ZZR;y=xCYwR zSI5ljSaYP{1ZxuG;VHcVx)*Ccyz9GIKY0dMiugg6RmNM^b(u%@I;BiEFmcnK^&{Tx z#Dt%$Y%iX1XzV_jP;tQ7MYFFZL1X4(0nkS4<`g@xv=>)C8kXC7aTFd~I;r$-*s4N% zb^Y~@ZR{6jakwiBJZMtrFO&&P-doRVw(fXK@F}(w0ju^+^9t^VKVz95V)6EloVv>d zujm60U9O()Ry%)c3xlocsqag_o#+g{diu;#mY4&R;$mj}-ZHoRVQJxvBR&fAQ|5iG z6W{rf@j&aDl%2^NB|rN1sV(!Wl)p2<;!}+7YtH1F$@gPtnuqFfzg8~PY)+VUuKxS1 zz{c8hf=BH(iuHO;-6X0qqxtYU(=zGuuOb)MRvC4<iX5EUm_7SF+snnTnFH2+GP-?@ zPcTXB!o3=I_NT0Ze9c#F`hrfB7rUOnyy?!As;F}*x@TwGavaVJjh@x8ZIZw7do`c+ z`cuRc<cgR-80at8o3c40eN*wyX|v83uzXGmuAWrpum3u6-zBF#6=_A=*88$4CpR0u z6W)FF=10#O=VKpdx76${X*^K0%7oiI<k9l5Hi4TNUmyL*eZv$y+4k{=)4|For~1py z-e4y2H|pi{Z${tNm$)$Y?a;lugC%W=>%Aw_Ug%ypqH>h^|C;$N%O=@3>}k!tyHUGi zbBpzYX<23e7WBRdk$%@7f8_jo;cqKHzsL`Wo4;ol`>9(lU+->vdvCJV+3sU}1|m5Z zi>*R8*<5CMqZao1R#Do1-^;F1D^_{%-rUW3xjDz|<6O&>IZ0Bbk1Kd<RI-2gIeg5% z+s3K5W~QFp8nue&-FmxZ*Oax?B$z&xWm@_{UMQpOu(`C+H3c1sqK#Ld)*1caE%>_E z6-)Lo###>(KN);9%)9uunZUl+;R_~nS1Po8SN5zvVe)ZD`<7`_<)X~xLfcZzt{fIg zU4Hh-{&dF%rIiJLW~3}L7IM%NzpwZ0c5K4}RizgxE`4cS#;rfuR9Fg+Zg?nUc-A15 zYbu|vTY9|iuls2}s$I<~LQ}m<bY}6a4PrZbaK?re>N9Kn`6apPWqG!)Pk4H@#H8*p z?;??CP03k$6An(|IKpzqXTeL+U&ewFOJ-ix+39QPX?AqYDemci=V?tkbE@WBxtC|q zjxXz9>a%ZtZ0<1aXxKrP1uUsO$==NOUiVMczT9&%<!zZk_T)J`J~eR%wwnL&NZk~F z<T|&~$!&3r`p-jmM!x;@v?{D&4%@@srM(>Ya!;SV^gH-h;<l*P_nZG7+Wq`5M>KEW zpNF4Po2%!t^BBbJSQ>5LzfDqb`9JS3nb8N2@p|5A&kBw+IM!Yezq4lh*;qltWtyoE z&YXLE-Er6S$-nnsEBVUoy)oh7yUjJW{s%)g?qBuNBFWJpM{&1DK%M31RokChywBy2 z{~waC*?ntoZ(`5vzt?KqoW3(8>M2Ld+pPI~c>na<m)@4W)2jJl=<~#tUrAxkJpZV5 z{`dV(KF#I&`S4k&?<a>I`>RgOvxEQg^WR*4u<lyyszaB~_b+@N*!tCD?eYL$(<w_H zp72^Dbx83YvrTa0+6TPnS4Zy4OP0P;eZVJqY3O3PESvpO2U0Iw>&X$}Ka#S~-T8b) zgWOf`g^f0On;*Wj(r**GQJocXoY5&-f5pLBycUHiCwDLTo%Maz>vz-t7)*$%<zMkO zc|XUFOJxPB)9#pUc)Y;D^}4~eU8deY7}}2gdT`VJckG(IyG6PxriC-lxRc=egn7jT zi#EB+Yuuj87}!qjbAOq?->>G9Pd%UCo_wyqi!-wSYKnSUiB`E>ea`5%xlt`(S62Kw zcC!PT(>`rDdTdg|=2?6*f2}+F;A_bfUEv+~TY{$<pLtMZ954H%N1%yw@~txY=h`Bs zUiFrr_$N<R_gK+C(R{{MvDu6FPcCKq<j0v|@?d+)-7<l`KMM=Ed@QmL{j_nroV2pf zukZ8P)6cK3`;#x<pI(3GNw@17nWnW{|E`H@uA6;rg2Cyt+fIe=)Q<JdF`pyjbkwB% z+;Kz2WAEQD<GlG~iLgyVSM-XP)=xwg_MP~zxJNRzpeKuQVG>VqDy!Co7kk1^bBMV~ zX6O}IUq1CY%73kmUf#8$;NY@mi;^7GN|QqmypHzPFTQ3}?|3EbxM6qS!9>2j(%0lw zB9*nGLhVg6BAKt7nz?hAv|V_y=HJ@a8}}w2pOY|+>0#-O!-s{1F6!q$y=nfUX7<wc z?{{CaKWH)GkI1C^Ws~>6E8pXn!uhc6Gc!|SrH4b>v6ydpTaO#3JP?;FxNw;(H7^Bv z1!8Jm3aG1VY>cJ0H8e1S&Pfr`tPk_fe{3eO?|1ly7p_(v&wg*b{cXdGya{r*julpC zTxMJ6Z2js~|B0eaxf}oQb)L9M#oa?j!GZh65*OZdyL0BoGN6lKHw#+M(mW&b%sN7` zL%WT4dPgRxZC{dMxT|8zOZ(Y|Q#JS|d4}j+{CFuPW4e(B-?0|oy;DzSE2U`sDK)sV zuW4%e<%>U<%{zi}mZoIva$o~(?=UcKTxR~_x=X^uw6M)j?4GLJ6xpn$AM>qvm4}h` z=bQ4Hs-6!o-CuTJ_Dr8WL!?+VtFVTuMzTz_)R(>gLv|XSo#AsWkA1V*$(h>gcL;=5 zH1~(7{dTR{t28O+wd{wY$f>ih>cy{1XI*o7!;j0mu5rBB_B8F~$0>C))`mU&owNVL z2b;cvD-2J>r|V1a-ClWtv5k9s$!qhAX3CH5)OXI<CMt7h!jalFW=}<vYdqdtPk+B{ zr}m=0OfSiXo0WgJPM-JV$;<Vov9-s8bRstVPTe<edBUn2_pg-5Y*digCJ?K_QE&Qr z(f6ko?`8S#*9FUKc3;}toY>QR&t1W0_r!a7Q+O6U;F5Nd7OCElw@&$@ysgsn_WkR& zFTMTtj_;2Tr87?4X3$;r;@Fj+PnYmc`}}_SlV5hN48@;U^-W@&^lzm&?}MPf{O1=g z5OghH%@u7w|ImBSnU#yKcqg@Hoya^qacYFAAoD%>1sz;Dtoa&IXFrv`zRmb=<}t6; zZZ;R@-{*Oe8X(@A!vZQ?PB>qzY?CYX;$fTFe*58#&mO(67!<a+I`Ur2VK_2TmEZIG z(Rn7<ZS{X9DeU;gvEuFPI_WQ7w=ZgMe6lUjnvW@@gg1F@^yU`+7Z)PrC;Z)c|0qw5 z$3m_%pRyd(%_9VV_JncBIQLKZ8Z${VfO+a7_m}<lJ~bD7_VX&#<zM<cxkJ)FZrZ{n zlNY*&)XF88NNX@HUH$E8)ry)xou>~wdQ};x+sYb!U3K)qUr@o4G2xKuS;@2uvS-8F zOWimQws_|5?*A-m<&iS?YfiwjFS0Z0XUy4~&{}0*6%g6I>ZQKb#7qUVsSQai>671V zk#<fv6#4j*`NhX#-lZkBv3ap}`%9nR|9yk`hqZ3JPEwg*&f2%`_oSZOzR<oPDsNlp zzEiO;vp((Cd;UOcnPrH3AE)8Jn)2S$YU#4i8E4;dx@WJT&+yOnAOE|v8qK?-xc!+9 z$3!-Ane19~)TpU7kc~@VOG8xUyVomY`)AMId*{lOyNZ0Fv7U0h1}|>!_?Uks>e=pq z+)|m%96VNRE8cJTzhRQ8x2yK6<!;f}R=k#)y_j{ELq<v9|7%}wZ2RcDC6cS<dLBRj zdYLu<`E~nm=e?YtAmhQ$^)hky%fN8oxb|HvP7lPG!XxFJrpz>)zW3R$iZ+SA;&TMw zuESEKU^|q<&=7XJ4&fr@ZA5PVZ8L#?^WqQIPB!a!_|a9xoaOK)Gso{syI-$$*qs=V zdecy?y7%o8*X@75%es0^)4A=*BktV5w9Vt=)4n~`KV<xSd^nV+tLH3c(P2C-os;OY zWR4Vg6{!EoMGB86ufDhB|Jo%BJSsHSok(&ro6UARZE0IeyJ20>^3;MeqD7DX-_nlS zzi8U$hbLdQ8n84(EwzyB>s;6cSp@p9V^6Qj)WRgw{&z_S7wtclW2)Qz<hn&_;I<iQ z?~@V&BaiIoug|(NFK)qRovoT;8YYP$kDdwXtzgyvQmRw<%gAqs*~OBbpQa{RX+B$B zG%LQkusYoTURZHmon^smDZAHe68>MQ6486|JL}eGMWyqKd|BKK>mrLLou9>bPGWJ7 zcJA$~HExGGTAkOe=FyvN**SgMmLs8V<`<0oFLWrGa+{rhCw5Zh{9~0=9k00bRLNEP z(-#`ee!4yVW>%Pw(ZRFT_kXRMbMC(n%UX52_cxa8KeKE3_F98kMHAk>RbT6?9?iSq zyvy&u8#C8U`*kWt)}&SR)s!slJv*;StWYR?#{F&L!E*KmkG?2v)ve{Z9xN-c{<Zm? z2%c%~@vIknxbm;<vf6Ryi-CDa(e{%Hj)vybHL^_QxEDmV_14_ol6@(w%=q1*lb_e^ zoqI0)S%0Xh%#3BH-U+3cu`~)l`<F4V`1?E7y2sq#CT=#+D4BCr);2ls?$11rrA(Gb zW%z@>&)+re6qj4>^aeJqTrUSnttH={{amirJljnyBi-e8k8@;b%Ao@)qO-)-tU4Uz z&z{~Uwd7)7-+ueAQwuJXwDVQY=WA_bc203WzTfYt8s~Bij~QHNcFFxv+pV|1*5bO7 z)j9dX1;6B8Eq3xOd3iDL;-Ldkj_1p|lr<0U6$sGWs;kfT-lIga>*jmegh|V|-nlb0 zEYN&$c*=tG)+ziA3<fHjLP`ujoPOiXqjl=p;!kCEoPw3_PMhl~>1*j3PFZN*5Uk2H zGiCc@c8BG=61RwZvzoDJ<-}`l(}`Ge#UPG9ukfBQ!-5MTi=2g@)P3OFyV9C{y6(3_ zx*XXeKOOEcOmVqW|7^8Wz&x)+Pfx!%Q|5+UGeq3V+IF(u5lFF}tR={@@c0gccf4z! zzDruQmhZfZMtO|JMcvBFldkwaty-a-mFcOwZmo`ba*^walc8T{ho3*TN~lw$S;5KU zp|1Eg_VUhqhi7XvEaF=8{rBdiz#iFv4Rh*eDam~dapw(lKe~zcS}MDIZN2f8xX4$A zDMd0~RY^g8K1Z?-hv&V&v+<9Fwtz&@Z`0R?GMD$}*|sD<DCo<4Dl|hRbGk_AkCK^! z>x~w3&52C768@gsCtu+34Aa!bt{Y>-=Ij1@XTu`)^8SnS;w9HVmG6{t7G*A;u-f|G z>s`CfF()~k{(r%f?bW)^YuDQ6<=*vB=VLmW)@03J5%KJL>csf<hhBFF2JX=C*}i<S zSMX)u<NGFD6W8=NQ+YG-(*LHVF}(Bt{>iJ=dZiyZDT;Z~qS7<nEzk6RuH7$GP_1>v zjqA4V$2))7mmal}#8!$~V&2tZXlM)_hajdDiwBir_1~92xVMBisp60FB<ZHa$k_|3 zUp}hRzK|yo5?R)BGA`LV^J4D(TK9>QR8N-$>E{M6XwVIM^6_28_s6pSJwBYu;>_Ew zGHq*kYuaa^6y(<%(30)fxI86t!pR4lw!fIXRYZi7|EOrB-^p(m3a+oZGU0>4G5uFP zJn})#et+Vt9cPD6DKe9qGl$!mVMS=y<clp5t7fRgB%M~3>^*tfBS=y`?DGpVF`Zwl z&s^KQ$)m0}SS<B)<Tougv8k?qe!p1m_U5Fe)#;$wNzFdOZmM~D51XPs_{={pG=2S} zmTcj(VcGXJ(=I1%)Jy+4HN8Bb`qQSU&z~<Zyqx`I#o~hxmzs)deX8C1<|D_%=K}0o zSs6;F&3W=Ut;zV9#$&JBW#;oIw<%@zs#|AH<GZ`gc+ZVBpM)k)J8{a8ElQ0iO40jl zQ~ajesYYi%TX;%#PkJ61+4k;o=!-MYf1b_UHc$MrPr>I~{rj}iyX}P?U$^#Km%Uyc zdH#zJi(4??r-i;H9j6o5=Sgo_nvi;dPwlW=iPu)qdkdshLJwGd<*h#bV7Kyy(xQ2{ zrrEUp3ORn}^e<j>vF4{2!y8Q(AClhpj!%D^;Q`*McXEvi0?w>e?TYGc=Uy=_Q90iH z@vJRvce`#E)b0J8pVqzgXL9UB=F1^BYkSU!DHoi%BY(E|**)9C`89{{6^V5mI+AI7 z(fHZ9x$oIywG51An!WfZzvP|Wblr)fJ-752c|&eZX)p@$czgD<ziiMt>9_@R1#_L- z_pJKU_R?3&L^mQ-efvC~b3CRJJ=RA5>aL3)a=dJ7^d#0uWSP9r7Fo&vR)V(|+PJzM z3Q4$T`mp=Wsz2ZU2})lq{3ge~>it4Httl?k?JTsSByMoLxan8ObGtyDCB!TDboW7P zq1d(@zH0UvOI9}R7GzM!;QD2u_##sAsjUJ74|Al}E{Pwh|J2w-Q@aZ*H_vF>v+u)O z?&;U3hw4C!F(-qQd1~Jq{7U^ZwY^#SS^{qDoAD+9T#N~CPr8@R;IMF|OS_uH?}OG~ zcFmKC+p<VJ&oN^03F${16NC%@?|jeYSgF;jsw!!d&C#%Hj);bJieF=PQ{ed}UMy}e z4E1`dnX`B9zL&N7urcSMSe+>^rtOjRe6_I1`PHmh(LtNDxlf;Li4ii|v8Jy3)y;^| zB!#0Y9RfiW;ca(M#xDB)!H#>u3Z~b8|E-7+6J{655r3c7;cjy^u=#4?#;oSjs|Vfh z-{)BxKJ8aV`TX-!PcySW>V2raz5HFoyklG}ZFg$VR?U~Vyf^Qz`mqBa4VQ&ZOvqds zn;H7>^40J?tJZ53q$w`4tBy^W*dlT4mbSEh_tjND5`LDySKJ`+ulHYpXZhj!`Kt{> z4Gr9P?s~j;-Rjp?3T#{c@Xt+JFwg3?<*&!*F0L(lq!Exa{bYATduUy#*w3q0d+a2| zTTdS<DGyw2Vk*Bq;rF4Z+|&IPSN@mv*(qoD`|I6jAy@7nR@uttB6@A3p3tn_kGB8w zI`FnLAX+tN`_ba>@~7{+yJIQBOtJ0VC#fL@DZ<X96=4bZim>x{jZlj)NJES@hw-+w z3}!=Y(f>6|;SI5Nw%cKlhFD;FN`Vir<;VKBtZU-~PyPJx<cpI8lf&AeIXuUY1RPa) zC={)CvcM(Ib<!z|jkDa#Hzr(spSo?<G}lkTb2e#2`)s~$xM79PqxiP_=1Kng7b2(K z5|K`sWuR49%qf1QDgBqyv>i2)>M^r3cE$YkGn^~(In?s(dfVN5Z%q!rI!k^Y@0_^9 z>ax7w^w+Kon7Dp*s(*WjO}oVkU4|8#pQy|?6`o`0CK-Nf+wPw|CL*5MHaERC7rZE& zd+=%1)af&}xP<i?UNB0$z!jM#_Gi*v-ASJFj(eVpn6l@@DWj74y3Xllr}NKmy1HgY zO4Drfx-X@cbN^4{h|;gQwJ|#WY}K-KB~WARxY<Sfr<?A7p6!;OyU3`DeS6}3tEIQN z^1qng()uv>XWQQ74_6s~Snu`7^_Fw4UA6c{>fave?t`CRY(6k6@ZsFxa`x%7EgrUc zy)%=v(0F!D$aU>8W{!~48z!EgUFaKiIPYkz#bY^z?U#R^`m<}*iN?%TZ}i;KnguP= z-t|ATEPp@mq4>VU_ZHkPiI3LIdm&l;`dm4)v8cq}GyD0^)Gpt>G=z1_w#yF8Q_WNt z@Q4OgGyjWZUpBi<JR?2r_65cDTHZ;Mrf~K0hh5d&q~2`o%-i;*ugCu0_f}9ljHhxw zPpc=-<x=-!@qS0roIEB@G!VU0>iffJx8DAmiaYLq=F}gU__}&UzqIPbrLuQqG-Iwx zL~w)4uzv;m$Yt0!NE!AUQid6T%P?jI1|H{FP#ISE&5TVn^>bjQ_57CG2k&gxzxy^J z&{f)5@)xs3s8Y-9H)VeqUW9C)yKPg*0|$<2Z(pAkYjySFeQa8&t@V$eLBnL~iwi89 znJe1wU76f`I_wL$Emr9*!&s#B&i-?(qK5y{4NFwi&r35c(932$#WyqfL0iHV<CQ{< zf>k}-kMA9bdZ%~t)~gRbO$FlIs=HM4-6mD7h?%@=*|TX^-rPD=WTY0}GAAZ<f92Pl zHCl!fl4iMZXznRI{OybW#p()ewt$evuXXi7I$ax?xwd`&9(+W3-m4V{U#*DPc5v65 z2aDh5w_Vcqwp}HCCHYCw6Nf!!HBY~t(>-%JqVd3l+xkiJLdm<tH?<#;u&_C{<&~7q zg)Q0_v}$%~^@fK=v7Xa$x$-=pOJ}RV;fRBfmYBTme^5*8@cxVP`Y+f0d|za`OpEQA zLU{R}>!qc!nnxO@{a+TWcP03FwEO<MR=WZVWLUb+CRNLQ*l=e3X{G&ft=HeXxjx)v za5qj$+xP5a?ca8VKc@)w{nK3d-P9LSiv0??5`Pt`6#KN}U*CbZD+8om^FXDTd2m%o zDYjA!YeNjS4VO#bEi<PiwMaqVEhn)g)g?7KKP45kgbzB-RdEZ}oqR`pchcI^R{U%` zv^)9yA-o|L$~3Lvsp&S1hM4)w%~RnGv9ikr*Vlj>V*anT@bvF=0yV^3XNO<G)(|@h zYKXnY*$`8MH^knav}{UU>ATTkA?IQt^XUbSx)lrclRGbm7arQ$nYMcCdXdeU8zZJ~ z{&T8(ck$OJrKZoHKX=}~?&9QgT<_*Z^&e`jiTACxa(ZTY%rTeofT_3Nr^?F*C6lKV zF3sIN>%6D2Qs!25>*G4IyJJ%;HqLx%s-`<t)Bw~HTkSM)7HbSrOKf^%WZSFHp(~JE zV%N6s(}c9dI{mH7Uh8ju_i`pj&oY@O8-2gjFTK<IXWPZ-*(-YPJ<Pqa+;8Q!L(;W} zw{_Jl-<R-SvZkEjzu&pw+n0_P*j^3%va9ZJ@6m+HFQEcwSA2MI<?6$uX8t=CPTK9u z#@V%Vr%T}Kj|@y#jdGs6UKTq!Z1e0w>2o{OPn^x!XjZ>w^}_=up=I+GHmh>XG5GHO zdCtyq{SVUd8@|tJbzJy(%exnn#m~=u7d94svG+`}^0U8k3$}jf>d8%TgcoDV|AVd9 zzjhPLU~kPmws4Ksq$Gu@T#QVsUm4uGd~oJMw!3xi$M4Jk^0LU-<=(!>zx|LyyW-x( zkK>moS!XQK@R;$+<3-hj)u4vh!;OrVW#0skZ|V=2AMK^IWPW?JskfQ;i^%Xo9>oHE z&k(O%?&l5jT>=8n-2K5g*(9{U-kpKP*HL~M%SQ1ay9Sj57ZR5(Iz1`=+54n`z-<!K z&AT&qB<s}tJayM_+SKz#QxxS6tQ0z!nQA_neZuNp##_Pt$?3QEsl1KY;IT4skKCP4 zYv)f{bX;-4g%G6$oW~?SG{jw>d$@aA{b5j-veF&WrF;kLQnKmKVswao!>w$6_zu%L z&R?#eE~R2pjKp`gYenT(uZ6Xz3r(@k*A$$#C)4xQvLfRvqFc8t5xX8XZ8GOhm6U?W zzhYN6Z(QXP-hEI^bIFH$e7p4pg)Sc6Z3^mA9{=mPQAe#$BSO#a%!K}mRg2qJKTf); z_IlOfe!F`-Tf?VSwLE-R=xMo0`JTkSroF|}KPRtoNIG%%`p*83hIg~?I@j>Xyi1O{ zDY&fi*3wE*``C5ISI4YZN*A+v)xDinE$2ky8RpF&H$|-N@)uk9U5=^y-TfDjfA5ic z-TS9DAbCYn0$<av<~Z?JR`)v?b^kl7zg)5VT-mmNJ2sbU=UR4%+}8Z9^dWI-{8ZPv zt$gdxA9H=U$l&hW1W-BVEw|s}r;t$JKgUJief@Sy+5MJ$0BVgr1C?V>uNf8#&DyQ9 z`=8W7P-|>u(e@+7-{l)7CoaZPj$u7X$q;sOF)`&B(XFwq&<>?v(D}nX3sE|hWVgmV zNNbJFhqT7Lky~T;+w9FqX^mBHRbRi#)ZSLwVsD$jmDHX6Tb4Pw?pr&}R#xeg%%cU{ z7#5tHG`Z%QPr)&X)R@fM@17Z73Q$@5F-80Ap@p|g*`~h^jZ3;D6lr<P;dG0mcFM}g z58h?lJ=7}Y)HRa>KPhRSzEHc3XYNg%{kEsWHYZKu%)9sF;`OH`|J;=__I}7bo>y!7 zdgi>&0~x0r<!-tBpK|)|y!$3q*}_vVTJPZfeMR$XSjFP?7sDFgpD}+U+noRH!2Or5 zS<#;)UIoj#>c0+$jEb>b>*0DoXP5PkJ4ZOdqhbdf4YyANjfy#dN5yXTWM7gh(|&hI z@;k#$(5Tq=P**;m;M8(MBk7(4hQ;+J=XX|r=h^>>xB7Ub0+(?5SC{iMqRaP5&scfj zMQR`K41V{9X^%uDZuham`;)zY7V^cJ^XgwXC%SE+b6lv}Q5P*yD~>g*E@$|&rMF4( z{Farh-}|2X;ewZZlAjbMxrAkxed+7z_dAky3Dg?9I`M+(!_#ke{rUBAC!=B6KhEQu z-Y>M<HpOMSoaVMDkEqo*KQ}y@k@mn*Vda!tVq#7Gs#bD0@4Qb24U5Sg69f&5{cTaO zYnjr|AY{O^YUK;1m(OqBmI#@0*8S<*8liWJ#rOA>e4pSddYvaVBlkf_r@)O(w?8T~ zMBH6{>r_x9v!c#+{h(+OF-_B+>qpl9_`Sbj<Asn#r-jdiJcz9e_UF@!4iqxiTod?2 zw~*yT=Z^np%3BxMOg%Jd(j1$7j)q-4Qs54ybkoJF;0|Rlv_rWe8`7aXGxfy|NQcrF z(V?6XBUn@v`u7>A5IfS)t10cc?87(y+v}Bt{&t&}Fu00F^!KPAT_j<xk!W3S?|S6X z&VDJA{;pK%bEo;5esv^h?A>%FkZs#yu1)O|L)u?$1$8O&S|DA@I?X>*G_LHGu~XwZ z_%CopXmaAl6|oy59$pUZ*|SPQyC6;RnO%Kw!p(MxV_8Phx?N8<{kZ<=&pGD=Lr00b zcFgTxzs~xv7oKdCobauv^muh_`1Me4o{XRGt(JP*mhLP4@_X%K>7(c47TnPJ^PG|Y z^q*ZipI(Pn{7noI(euCjHg(sfD>Ct%zh<6(KBeHpd8xhn)u+CGxVc{W`tn8p4yms+ zRamv5@9Xpncc#AjYR;SI-+D`9$8OzuyZ1A`>Cd}}tsukRAcHQ|CcYpeVq|RX{k`Ck zF~1=F+e|4a1sSJuI&@@A6=P&<&-NGg*_s+ca$VY+=1h9K@Zq}9m5L7&d*ZK1O5R)E zHs{CwZ%t<FHJ+xJSXha+F$Am@QD4ky7-HzT<H$5`BdN*PCoVDaTl4H<sZPWf_nB+c zQz!nBS*~+x+U7UDJUUw4KdxWo@4c}&xMbQ=v!iS?)q1?{#2jMX`e5e19#y^gqny{( zX05%pFZj%|qe-#nK5?Ia=l1sG>#Vc==iB|(U!2^>W)ALF=C4lmcSr74nj^ZEb0FPH z&&?$-%H}@2nTFY|jMbl<3GG&%0d*_aJEhy5U*EU+>z)~DO|!Sxeet!7{xc7wTlqbA z(f-p<)6VBh@7>yY>V@o`wp#G;{zdbQ)d$MoNPnAm(476j`xho#bt`$kuIyVh{VR8# z4%_L)`b^nwt>u1qW#{ESZjsj7c{}C7f*H}?B3q^S6#{e*yY0(4W}3;nTlD(Fp6Z5} zvtrqwZ|_oKU$%17Z;6?@ZVzVcw4e3-$lmI<_@8ZipX&&;c0R6JlzwKe^?m*`AqiiM z_<3h+$5xPq%kI$w4UB2$fCk2Vx;jI&N(3T8mtTYojD52<`uFDobYLvkNJP!b=cTNq z{M?SWOC~BQC$3Unn0+Yxrt8nIcZ->m-aIkxOTF)0o1@vOSG(XwmSX1OwDZhe$+H@x z8<zxSMMrShO?y$1QoOmp(Q}s84q11GrezEGg`0i|1l?owIAE}1*`n?x^I;9L@b1hV z?K(BTPu+E%78+wbW#QJwU{$At)9cjA84^m@XMsn?Hr(0g@fJ2R_UQfM#*G(3lyrp7 zq&-M1jP&O_A2m^gS8+|?6In<>b_Z6F@x+<1IK)olog!<r{DA5~j+`J>Cgm^I;>Y$j zZoL!xYU|a9Gg%($>3Nsr-Rn{L8n9Eb)c36J%9~qTpQbpS<CL5ezTfq0PL7)4isUGF z1+6s#3ExXymDoOr@q<RjE`DAD8W}Us5tmQv$m-z@Z2nQWG0VB`s$-<QDQIM@YQl=j zDKW1a_80oH_MF>$>2gHlg^9b@Pn$1%dRO?F-A9ZpY^H71GS#u%s%@#wvU}I$@X~bF z`#LV~#Phjz<OH8aOip{8x-m-h|Bc+l_l6s1r1j*@pY;3d*S7z5;mKYp34G8}Y^y)G z6k`prE!|Z7<@emh(W+M*7u@()vw@=`;;DG*#P~IbUvDl9+>zs7F8<pq`11#@oBwy( znCbmLbbR8y?~YHae!K}^JUckBUVX|HDS^<4<63?h@3{W`I?b`&-6?nK+q+`t@2VHh zul|pv6f?&@I0il4iK?X-Y<#~jc)ct0mImFRE0FR1{vIE^<NM|>(Z=^--O3&w`z44{ zEXTycQXESuHXT}u<?2Ly35S$oQjk(C6kLjZzv$n4V{$Q~6pMkBVs`ziei)^g_W5^y zZ%>}iI(Ob5REjO`V=MOu4UWBEo!O6Cipg6f_ZY3)l3V`SGE-yHwTexX(_UV9YjwE$ ztd726X6G82<OQjR7Km=TqVq#_cdXiFoBqjDHfmJPo0|H<F1Gbt&Aj__(q2~@o@Fs# z|M$h}qHRBn1-H!mu_Jl=zFA+VLz-iC8Nz?#^~$U3ZogRT8shf;f!Uhi<ss1zd-pj; zv+fJNzhOJiK5M3W_2(;dPbRPM-zvIy&HaKz!w9)r(FkL$J;kryeMpj4zY}ost`al* z(K|7VR$Se|*q9|L_Nml(ooDuqvpaaJ?=U|}+ZHj~{+g(zf$!A2$4}%KG95qj_o7Yu zySv7Jj+wvFO>fkwu~=*WrDtdH)8CCVxq9NBEoA&$z>=XE*SPU*#07_?zMLA)tyk`y z_<!Z#>s=37Z|yu}R&rwXsU<T!mO8OFhL%dbJ^A2FKy%`L<;U;KYZYZo?kYRWO<HJh zG12S&i67THZ}>@R8VN1CCA3SeW@7Br`}ge46^@;|mmK}g_R8^TlU`h6?^-K1$t>%e z%>s*Mk`^2)Q-f|Fa{92*<+$?f-L*VEmqHFE$}n=wYO?d=c;xI+$*;h8c)_eLy-9U5 z_jfwF-b{+Qr?c##%%%@-xy$(?!wSy^v|VHKo66CsyL;vx=7y^~SFP0%wGcQ|^jl%8 zbK=CH!xg@Fy7tfK?P*;mlsGZLjG4dt^{>Yt7KwUZ6gVX1dQZT;VNS>I^R?j|r-C(g zG*3Q=bY{4cdeh;iVlh{YaL)m?P$dJW{l$rQq$5t>T^JWFJI_<#-J?w|&!3(32;!eA z9d!N5ok_D|qa*y(o=lo>F!gJ6$oXSwLd{moN?8^i;$ke54_8TI@c+orrL{rMw!bUY zu(058*~h%L6~}G}n0CmEuQq!UE<5FG;NgI()RpX=v-D&5R9bs~Ykep=H*elCu9oR{ zYX8*Cuefg8c2E7@!H*x;g`Q1}TooG`weZf>WqVfnYIme7?y|3rO=#@2W_*1uXOB+U z>PL&`YJAI6?Ou7}h5x3>Oj2f2Z<v|Y!q}c^7?k|E&FUQMc(h^P&xOHmSLdHA>-)E( zxMa0}HJ91#=>pviGmuC4t&K0-4QB%tW2YYK$Jp&I`2TTzMAh~laBD2neD|V#x!_{# z!SSeojCbpJU;P%%^KZGO^>4TCyWRg8QrJ6nv6N#LSoX~s8p5tYBfcC%ALPd~PuUl| z-kDbir5wZGtz2^cT2O$BjYxQkq2g@k=G@Ie&W8?5*snA;`Y}ZcwAz9@YX71sSXNtX zi<$JWV^1GqwS_%owZ(JDYKwfxY74&lj3dz17G@_vt1TXZR$H9^lB$DPZ80|qw%VfX zdzOD(cyV2gT|pJ^{1THL^;y2HT{Y3Z)mAP~ERQ(mGCIsvRsXr>=K<*O*zEHj&J(vB zo4nS9yFKr^WX!ts%1%%3l&2ERy25O0CoD}nsDJaW(#$87bC&eDo;<xq$NBqDqms1E zf4=ENpY8Hg+fn)2{r;58Ki_vQ_<Cfy?C!5u*X)N*R0hv}aldFMc$8lkGRi*}b(BB- z!&#(J{<SYs|2A=hM)|wZM)}1+qx{c6qx`&}QT_?~kWv0)u{U6&{M)dO@`vwBd~eC^ z^6+rv--YRC)@tA91vkfzvz_@XxL|1o>#=Rg$iriy?CU|J{Li_-qx_STl%{gYvV>jD z+yWWp|J&DNZ~p}{%D>aU?T|~m=3eE;`RYl=nM+Q1%*gV7G3!HUS!~_k4|f_Qtp9i9 z-uxaQAMLfsyI&+)S7q(hH<b>BKE@lwJ+zi?Yi)gy+}Y=D_Wid6XrA(~1(SdYYwZky zBkdDDF*-1{Ihu;bs{A#n7H{s_^mE0Yx&DVNQ{LSUe<!nP#iLmZdDimI(Gp~eF0-y< zU|3xo8Xc)spwRO4n`2h@A*H2lA7||lt^aRsAU4aZ#kJ`skBv^=tN!NGVJfc99N8k3 z?&xFu`cg~_^iH!u$M{*yKx6#B=0e8!`MyHO_@}E{nd2GbM{bV&E(A5lMBvRakz{uB zoage(pv|$sjXBPBH(|{&E3YdyMK>plTzj|rz-7zoDk*J&xT4=5KPNwm{VwrqLIr#K z@!esj?WrrvQZrkN!e@V4WwusfUh9j0k8&GX)!wnJiQas1QG{Oi|2Hlhi?t(tT;1e< z8z!xNs&^paQ)&VqlMg#{?13wxVLUJPzqeW%_V;DY>lfdn-OanUHZRy(8EDAAA_}(J zVsl{Nj$+okb!!)xm>v%|vM;K9@<~!JtEzk|xDe~P{(ITJ&EP`p*MY8}jCXqSucD<u zUCJF!FShM4{?Ev1Gc6ihA%^9oO$!U?0cXVQ`3Q^kzil8=`#gNc_K;w`f7_Z(d{?u1 z{H~A)nPu`|VZioY4o&Z-WglOc%UZWyn6hx~B{?DMlV5kL?>l~cS&E~E<;}(CquO*2 ze`DXb&?SQ}OydwQ`!Um%GBe-T-j(=rKPsW?$m~a5A>5z-Tzz>#BiD0Jq%_;tdvo4R zQdECvq<HbMa+;+7H@?1B)gH%XBI=VZH!fHKUS%=!%!x`R$KD_}P2XetrKZo@RrB)H z&yLF}p*nx2AL$Ls%PBgzlW*_hqG|r8FJ1lmqUh7dsX0+vk||Q$y*?VAI~#h|dNOpI z*!8w}g*|mXQG5MMk&Mja54jrdm6AK_=IeD|h~AMZ{F7UGeT=AF-rY?_p*?oHi+_H- z6w0r>OekDr9n1VHi?<gqXZ~~J>DSnIU55?2UY5);f0?{$505T?Z?1iQ()J6Qtes6B zGh2L)dDTdB{&~o>n3;iZz4Q7LcMrLKnXf!&+ST0-0yEB51s~8b|9APIVb+(zc^1nK zHeD9@V&?KCZPLO8Gv6r*xbYq4IJ|3tIkQ3TdhQ3z0&G1(^-dA&8yH!*n_gZ2&*jy% zXv!8(4Q|`NUu08rco!-fYXtc_H7wg_v!JE&W%>+}C!QCyUwCM-2^Ez%q*igxlw&v? zm97vtQL|6Lt>uF6MA>btpJg=py?*U_vGnk*bf4zLNip}|&5aK-I_w|kuC)0{x^#v2 z61G*mW!yz=WqTSO0)0;HYjIfo+@<AO$FE`~$EdylwjEFIp2;Z^tFwFK7sS<^8gM?S z>+BS+y&R_dx~E8K>l?Qm>U=Hs(;|M!L3``)r9}^?mu%f7aA-$W?#7F(a_?e8%`^5T zWqVFsRXOw3=1F-=XJrPw(9pfS)BH@v^!S*_#Rrt0A6mWk<(e%8U$1Vt<#tYMgUxUD zosyg)rTdt-O7c3*d^@#2>9*sc6<gz+c7|qIdq|v4=XtRsvi98UWd+hfyAR%)TCZ%R zd_Za^cW)+Z+o}VfPCacr@cX7t{-@BJo@dVLYdq!OslE4Hl>C*O!SW$8D?&16u$>Pv zTM%0joi6GBjeX8!;|F)j%xWG5oZo&qyZ+qHm9JOcFS%{F*O^O?J=fQq?a;H2H#{^a zzpUMz^EfKv|M~XJ$ERM_-hEK|cKY|C{q<o{^Jh+Z|Il{cgbSrQ!inAoa%I1ty5gTx z9wq$6VMXGS8%b~Ln0>BIsKSzkEsZeOOPLyxuzNb#xBs$%z~1lS75V2B*V%6Se2{hJ zqF7G9DPA4{d^gw4c3G0=8Kn5_x^ds$yUU_4C{3_9Vq9jEA9rtdL6DGNp86jpt{$ex z<~9#q)D9S}<Xm!qMP-R;igo4xH81wNs+n+hv-#ed6eFj*K2%kb(|g*_MHf$giZ^0; zH2;cu)vcuIH?xdlPxNpcELz*RW}8a#ENvz(WsOa{)aS2Evg%@eKIdHB7qz%qyNt@D z8JGWFR+7J>Gs(kv7n?_o+4k?HiECf(dU5*ITke}YAw|>FGfa#gs<53bDpWe?vf!iM zq*?FYHovcZ;cmN(Tj#&%sXf~oUoT&jRTDOA75|^qRquRWn_CBOUB<iJUdCtdN}t~X zoW8!7B~Hf#x7%e*ulO-@<!<NPS>gM<R6eeG_jq~O)~|v!C)%!`-^l)AhH)#iAotNC z(K$aPJpVjk%dck8d0%tw$}$tiztt_9-o#r^d8u^r{85exnx|DOPMC5@b;`Wx-ES|% z&%%6Q;g|4y-|Z{Qjvll8zx6ejd-4j&n_}&YCK~Xp^_sMK!IVWu3w2X}t@u87W$mYB zFM4(RV*Ae@tMw{1mRlswH#s1EO^n*{q;)$z)-%O-7^L(|SrmP}c5_4d9@D!I56YkY z(Gm9MpsoJT>3iN})`>2!eZ55c)MDNBtIHRyj%~~S!8p-VZArGmMbG10b6MDoA~cVN zyt?mnE`0KQk5~Q~*wPo46Xi_JiNE*pYS{h!%LW2<@8cgHcR94KcH3v>&UV)|!Wokn zgfuL$VR=+07OOQ$WXu0~-fz}<-ws_oJHh5ix#jD3``*7R;Z!d^bn<3HzGq|5f<KL7 zekm+E6K6T__&B&|Ij1#mxAyz*W3;f--XtUF?8$AJd(LZnb=XfjV)<3)@o^W9Beom8 zw^Sb0xtU@hbFziwV9?q|pEQ+3PzqDkFw#8n+`&*b=%6M4rq{<VY}`0~*__q`%}<l= z-D6Q(BA|XyM4{+bX5@`MI=->(@oMYecP?w5w8`X<o3fCfhR3unX#pOap6QjzYnTIK z7v4K<D6{al8rM@Fr(4{mLSAxfxOOjD92Onc5y_sr;5pylSqtAtR28+ZoO4NRVc9C( zxgvt4r&j6AQEE)vws8KZ)2*7nO?Ra0w(L6U^dOY0h3jb0)7wT*mF`Jbu4bCsCO-G_ zkE<Cj_ARrLMU&+A*e{JW>{T~<I&1d~_KS%M-?T-nPTW@e^Jd|T37HSQEAwWjC9as= zZa=G4uKtyW&7A$O|6W}3`6}bOnRD%B7X`1pvdD1i{CktPy?5WdZS&3lhjyE+-tYA5 z-9a~@4vuj9)(+LoR|RuJ74=TloU*L3FM59?E&HuVc2u6KZN=#=vuax8_MFtamU>@u zV*0s)k9yJNEzY6l{s~2P?-soKdV|^Co~7pUuiF_DUVk|DwpBR%^e#y~pFYN2-*27s zzTNg`+Vp#0u9}r^3E3_+@89Ikl|qWqc0rue9>lZsCN10Hub-&#^`A%FJU_Pmj13)1 z0+`9s1bm7RXa^0_VG*Xr#9uyrHpIIhayIxg2|lxV8)dC+H??-Hn!0VmJTHEo83LWY zp&tByzt6Q1n{+qyDA$s24aa@bZ0?)uvr20GFbFuWvdLwdedJ<?<0^Z%IrOOn@w7AC zJ~&<6@4t`NmJ4#zbYzSw*3H`gOtd<K|Go6`d1-atEi7lxn>L=Sw>)Jb+q3Kz^CF)$ zsvg@PEDdElu|b9TCEGq%w_6JxmWG)8i)Az9|EVW(TXE%!<94g}xg=_w_?h7;V!qvT z<H>MW!M@`Uzkhk$nvtc^>64^qq8zB;ahk<nVM$)%p7^N?BeK%v4mCbrxx!{m8;|nu z(3HOw`KOL$bS)F!zbo^YfcJbA-j1bC-?JJnPO1I1?oZBRlXwIEEaN3>til#tbgR7a z{`L{wYrB>7PbWvNyuo(g^p}74$I0^-9o|?IY*d}%!tA+VVy9vFhMA#qTOD<TkFzE- zPde8)&Ct9y*I9k`XJxmnbjOl4@1iEn&vzG^>+&@3z^B(qcNSH1{8TfEwehU94vpqK znEg_e>6l+t(S|ykTE)D8l_z#BsgAWj)H-F}J;7X#i=Bb}+5Lu9nMv#!J0woUIaUO{ zdlk7UQ1I0M?Y}SW{(bSyKO67Oi);?R<2h$>-eq%hmEtbZHQ!}|l;&=nF8U#4R$p99 zVsY$}>ATN{ncMC54cROrJIh~tzV^ewaL#LCA9I8jlyv4@TJzQ8_Wrz}b5G>Ow=KAV zEs0^7XE8N4BKr9Gv!U>tZePeO>6nso(t4S98;|q_)pwaU6@5jHJG@HlEWfc|{%=Oo z@}n0PF<xtSouziP-(UNL!@=c^yB3@fnfWiNlSy{+ms?DhlROM%m~z<f&y)CTu65C= zI$~47i3dR@_2;y{U68wH?q+-P&nynkS;tNL&aHowI)~3K_$_0g+BKmi(H|~pF{jL! z)L6oNUs?HWz=9wxssEbIGums!yWUO+`BFSTG=7nR$dj5aDqYffK{=m716v*!{!sq= z$H~NWii?_|_^gQ<0!vbx)CGdJ8`!No6`-@#`1`{H|3X6K!kpVC{?*&GZ-01dvWe^E zkMV`G43At=_he35dBOH|f=TM^eVXyNCC-Y=uy2(N3X|2okg?e2&G+0#Vy|N-PJg;_ zjmw&5d8wb%kN&vmckyAwKCPL16QD^fzauRy@(R~R9~to;Q4cHjsAG4&Y~`C<a&EfB z%DJo;FYd~0{!_JA;i6~AJFdWcy2o^P{hpBTbouDyDcgg$P8HZQElx4v%@TF?*X@_Z zAF)mCTI0Rz%`ZkjsYS}-;#T_Hze|F-ol6R?DBnHJ1xaZMr}imoPA&>RKfAXpVBdW{ z-~2rH&9^`AIotJ#XSZ?8V;kYK^Iq+I5w`PQt4C+avAFdo-oKo-T>4U&%>27%t3NAP zbyoZ-ELdyvY8A^Zt$77ZQ}izSDsGX>{C&Rm%+7z@x6iF(!%SpG7RbZk;IrKH{gbkS zOLDpN{S*uh3_t@&Ma3lw78Z!Jr;UtYC%J-T@vpwR8x>o8#X_w1ef+}hjklDpPt!R$ zYtb^T32kTfd?J{PYk2tcqF;VHl5762p(TF5dszA92e+gqFG*CN>h&wi?)$4(cZyTD zC(9L!8OU*qaUR>6xbcu+o%44|V?`c2Uf~0U!W%lgWxT~!N*tf#*={O$xp8KJ^2}*` z;zqo)XU~`!U?5l^#^!WTK<9~3%ff^s=O*a%SU%%qQd4?oAkiz5)}rg&w?e9Iibb>I zTfg>&r`4MdCThdY6$A*i%fp{Ok_aD_pogmUH?^+OzPEfO-P8LE^l(kC9-@E~H} zln)0apBi!U@)#&>xZ{zX{vanufbFE4+YW<{bcb#M#>or4T^soIp15!@Ix|ZcYFcc1 z%GP$s$H_=D*38LxrGbtMkF#}tgXt&n6HdoYu+<o3Cb{<{Xgx@Jv}z#}>vxT`F6DYf z=4CD_vf&0XN0rV_uu_})VN&6Fx!_wHl|^}YxI;WMw@Y<exP9sjV9Z(}=)SN*(L?xz zL%W4gLZG!>t5dDAyPnYnK@(+>a#44g6OP*MZEkZULPeztA8ELy9O+c#WR!Z$aFf$V zxSfG(ZN!<mP8<HsP_}+3BJnkqH&W-|G-0_D4t76!rz#uwMXcF6Z^0KGvvn~MDLD>8 z5uLnlvixcVZ<IWREy^Y~6fP2DQ|@zTyecIg>u~MZ%cuqcWznFrL!o-9$ull$__Rdw zJUh~nqG46S6ez7cSJ3e;qnNm*A-kel=bU}b0Zy(LvLy-{lruzP6@EPV_m@+4<93;; zyf=#7*2nEn{N<p;cm0t9%iPp(k@sr*|9t8VaN}RSXqA7sXV%OQa_1*)+gf^Zhy9$m zE&cwtmu%H}!>;yag;sRgf4jx*0ZLkz56dZTx^?5lgd4k)rK-ZhU#`r(8GXdA>d1@M zy%{&nZi-LWeyuk5Hs>VG=;&>{W;}22sDHU*78<^M+sp40>Rzlo`{{{e>A`!uRGk9Y z4Og8rEni)2?s&vXbGF^VV7J#IlcWk|SM+Z@Jz2{C<<$in+qFsslJsv{{|-;R)4}*y z?GF3nw*F;>GGG38yBRMDyl>L$q4PQ@db4%^eA~o+@zBd=nRC}irSUOUivPS~mic*= zO_BG$;xESh8}!>3a`Ng49<*=zuw3B>=Z@u}-@+%@g|x2R#Q$^E&&TI}%9qcyG0-@B zIIA@B`DfNk+#49}{Wsb8a+&Sj@@9)ww!Kp6kNqcZGYLPrx;Hd*``Nuq&b)h?uzKC@ z(AzQ!ukPwg-o2LPq<((hrVpn#ughBz7ia$Vuxrp`Et`evCx113u5jA_JaTtNfJu2E z@4lbzk5@JRp8fCryBR^h^lMf1JpSfyu>4e5)%{uSvHf<Bmt|f5KFR-x{OhryQ;_A& zx4#L!@6}3foxQbh*}6>&^G_<jZsj@1xuyEPIsc?%-`;99m8$!m-g4?w(Y^b;@4g(3 za(KP@hV!S*#@%d1xj(`RvhIjEepAw&q`LS0s%vSRn@;6fZZ4gC-uu+5MIKpEktKOI zgEqBXb=W9(M<F9I^J&$l4e4vQ{}NO1xNxnq*l+csY>l<kPPd3nU)`!3yJgR*6`GUM z9Ovi628Kpu*@s=x%gTPqBh5PZsl1NqPgc`!%r!akTh1{0Y}`3jBJSBet(?mfYVWJE zo{i1FC3W-Wv8~psy0Vv;t32FImb!nL@z3-47yV!6whNbk(Vlz3_!qzJ^57~*{g>vy z=Ehyju5#XN<#|5$_WDe=%gcAk-Cd)9_Or?Q%Xyx$GaILES*2^_F`?Ya*h^D+P3yBQ z3+DV=QmmEXsT#Uv(f5#GXWh~-jdqt<V=pbY+ZB60;`idYGjHuVp>uY_>D$wm$y!9; zp3iOAtn-3Lx;`#1`)2>mMF;$*nom*vY<c6O{JKka|2H3s+p%a%_o~<3)w9%0Ps}c_ zyy*UJv(?PJWi^le*Y}rwe$lx1Y4H6eA1h_p|6RFtcG}Fv*Ytk#??1K8&uF*LtKzJE zUPpF^MJw6;{Jeg%%&Ic&JEA3FwK^-OubrI4Snsv_*2@2r^b}V{#?HNcY2w`*Tf$G9 z`RuxRa^<Sc#u{tI=Xo#QaQf8iMJt}=RqL-VTm1UgxnlFFXESCl(c5_D+}s7R+zM>J z7?kpN#r@wZ{`;GT=k9BlHWk}Wad2IIbeI1fu3s}W^`^gYyRH+hzhrxh-L6O7f3B^Z zzD_giI=_LqXW_HuG5lt?^<H*beK}?OrBddd#^Vd&PYX_;OMJV-X3nL<zFxuaZN8qn zEc^WBwbwV2`)r?8uov$+>T{d*@2ln3A3q55+uv-QzlJe-eQNlYpR0B(5x&1%fA4GW z_rHpce|>uG`BwX%Nr6`{OkX?w!rwI+8j<E3?B~Aup;mV*MOx`)rpE@w+>8zPZdRr5 zew?#CZs+kQa+BXDe9}GE)ON`~yt3ly!>fFIqL{bEMgCJPXP(z`&bsX0#@mH&w#iNZ zmvVb@!A{A4pZbjD>WiyPU-191`tT~{n|jo~c3FMicOF+u-xaz_)YSIBmRlb4T`s)k z(dzYF?|z>3=yG@Z{-stt{&sSqt=H9tO9r>tmoAj?eQELHp61@h<DBn0Z#Bei=CAts zLfs_1weI=f$7)B;wm*7SEod&UpQrc#+V55gu37J0FC^{pTF>#fv1woDT34Q<y5E%Y z4CC%R`u66|#ef%&*jnUPu7BBkY_<8XiRZ7~{eNIlM(qL~?$kYsvv=0Nj_H1L@UZvy z{R?X+$o8vS?^~L3I>TYxliv!_T^CdOoBzq4l+%iS=X$ef&!(rjq1&XiqTjmS%-XZ* zDmq6_EBb!Jrmg>G<=DpE{IyNXTFx%*(#N<Ha{p&|&c5xnO=f~@ckKjO_r)joDSfH0 zU-*aZ#lCwzh40m8CUUNiGCRzkYJAY{)U*4nlA+y&7i<Opq(;a5e!cvnbKTRpAEA$b z?v?uTJNxghH|_@?%vJebcIWKo_i<;XJzs_{yx;owe9!#@t9=3!+TO(fKX+;G>YZu- z_g}dh$B)?}GBLz@A_A=4O}NGLG~#sLV>6Mv&$V|<5l{M2S0d)x?8hb{!aD0?)+0y7 zBb#(X%A%r=ZTb02u5(KKMB|N57wGQV;CXTSp6C0{iJm<%#o*J!F4-O#<>Not!z3oU z1*n?}h6U*HL_SL?`g(e^@BbSfJJmjVbNfyUF4|FYed}opq5X5XXMYQOr`H)U;loD9 zi{AvJ^4h|$Z@(mXZsql;2@hK=R?Sp$N)+khIsU{hFoZwooP>AYzg3^U=;^2ZOfnMC zsnl8iRo~OjqqX#;2ZwOld-2Cg(K?^5W_?KgQP}+Kmzd#~E7Cj{j&iiDG*x@CQ&wZH z4!ec^>}U6{O0Un~dVk{dIYxRLbvyc(gq~jTK6|gWzI>YC$>%v?Z8uk)N)MgU_gUlb z%kO&{H0JH_>pH5Vy_)UWZ^cV}ldV2l2s#Bk<Pi)CI4xQ^BmQoEVoHy^{h|6x)}OWt z&K343cxR}4QavU8xa6Hf9RDv#3bfCk+LvxJ@uqPchwIv{5|&q^*yU3;G4Ch|S;egx z>fuqj;L2vcrBQ)L&jsFkt1I!Vs=fTdwP{7%_XJLqyk&YPc$tS&De_ag*}3^$m0?Mp z_4lJLKk86r5ZUFp@nE~q0v`9@cV8Z!lcREJgX!IOxeMN^?&Ur(V_DyErr(KyrksB| zdO~zoS{2_9K3qBbw|&~`38(g(rdrJ3t~syuSET=;;%y5auCe7<k-BP427h(<_1w3e z%6$n!tQ($pmK^{0r9<EE!?iHS>ASNe-|2J&vh1-J4Gn#k`C!JeaF^hGS<jsdP94ce zPkk~^Tynx4^ExfDslT`0dc11-_pLzzB8yuS-c`(y);e?Su(HJhWj>GMr_qx7j_w~q zCNJx@>U!-F{!>Ur>~XAdf%K|dajb4F>e5W+=@R?irB`OnG~+a1o}4bY#ZEu!PK;5E z+)-AiUu9cjw3X+i*|9Z7PMG{A@%*mkjw`2~Q@v!A7{B<-fv*92M`xar{?R}CnAKY6 z{W6}(Zb7%IL{qqHWUfkn%>Dc%bFY-=(pAeh-T3m>$~9@*neG#r_Ulg@#k<%sZ~T}t z%m3BA_-R)QuVr~L^S(SAk?npk@LE#D#EDPxyE4^NSMCb_!!6-mT~hV^Sx@Q($+>SM zb!sKLi(8lcIUg*xW<iCvwQ3ww>B=Mt6X#!F-$?J(I32Al)Vfbk@8RvuoNqk7UpssE zEzA9)wKIb+8GqGk>%J?kxMfwk?iWK_(|esP5+WNs^p(CPU-><!{P(f5E4+`L&B$6~ zv$R(_dB)*ZPs`^s%!77ED1-&6R-C`^Wg}m&V@FHz>n-9u)9u^C`5LAy+I`>CS@gy4 zEw4|dN<I4jY0CENU;eC@i9P?}@57s?Pni9B8*kNBbv(7WnB}_noo^OfE4*`!B3EUv z{BHa?!KLmm?|ODyZY%{0_7fD1p+lJD6fDhbb9oFjxJ(|0K6X?*(xn>`hE%XzK2l_W zC|H)BIniVA>0=Ytg5}A-N6*z~@4E>rSd5Eylw95pFIe)<Aqtjt$Hb>!hZZa!Z3{z; zU0V)mh)DXM%w4oXZs{DuX)%98pTG2tJM;Nfol3-~fOE6rC)G^hdOfLAK<$iO$YrI~ zt7^7N)k@aiTCj7E8;|W*Hs%sTro^mX&Z>3pUh1a>&z(;DS$_7|>Fl@VPgIxpc;|3G z63)D8^y2reH>XbTu5|h2ZKi)XC-nJeE1%_+Q~v#_j&l(4k5P9uJ%4If>(9iVEsvLY z+W55ygjhJYh+HXheJ3WqJziqwqvQS`=6~s{$#oTH5t>u&<NZnU=FMWZ?FNVJ%h`@R zOkes~GB@R0kGNA{wyvAs)@ujZXTD+7lb!m?$4gWwNKWJH8uyi9Asd6Ie5>Ye+jr-o z?T)QW?=+dS7{%^xs6J%k+~hIs&rILX$CD;bjd=9lI@?NSBTIwRb`7&10ZdaKX6(1# z8$F@dW!L6;a+5iaFTedc`bTx^L#B#lD<5y<*uVaj*-7~cTf0<C^J^=zEZ)C*+@2$P z>F@S!A>!TZcs2zjzyAGUPN>P8t?Z0n{icfEO?*G=R^Fb{BauFfJnkKc*0)&t`MH?W zd}nFNcRDXZS-R_VUhO(_`9R28^Uh`WtR@vXPVKauJayv1c~1k2ZdYwuk@Y=$@9~QB z?_V!jpm9w2;k`~q^N<<7JZc3F{!0RMPL&(QHC=hI((LAHwR5jMs(uQENEk1A_)%|0 z?_RDwT>jf~56nsUQ8nY~%G6sbclO9xcQ5#wdGXP+IS)T+*k8D1?|!<}=uqafWPus1 zM^7?-Tf;6jCF^C3lCJPKRWJS+{-;56R_tm0zajJdX0<P;J5AD*mga^z-aK$TaIWBe zGk>}3t2;wh)#-Hme$Nk5Njtr$W6k%=yL3Kl8Og2aSKs_+-%iIVskL*i-@4=wef#0o z&zr9GH7#Cqbc0f|^bW1Gy;GLXiu<IWp!2pcz99cx1l!)rHye){wQRHq_c-<6CiNg! z*Y3O7k5mJuYqdEVFS&nUpJB(QJ*G;5FJ3>A*=IZRKwnAz-F=Mv4sDOgem3Qc&)$xQ zN#ET#)=EWiJNx+emMbx`vFcpv?)WS5)$Zxtg@wki<`f#wlG2X9e5}{-%)_nTNTth< z0~dIZN|*H$_`s#hen{yO9rO7A^yPc@E?ZvD@iMLLeZRk+^6eMp^*oxdWT(H~t-2%b zQSF4_?&z%9Cxc?W_RgQluKekBzV<aQOKe38_BIRAiy7~twOO`wFLG38=ILTOTVeWf zfk4ttF)i)2y2-a{YWrPItv`_|WH}>K+)VS=r0;jG@0=nzQ`qfZ{D#F7lb=ZZKf<Ma ziR0B0wL@H|S`}B%IipusyXEET-YMBa`?p+3F;zeAZC<;(NBQIFof}>zJbgBYgOyWW zTI8+V!lzj^g_XLp59d^^WtBYNv3QoIl8D>F6BS;0!meL6p7v~f^6I^nfBvVWiQ$_k zCY-Fb%&+tO6sWbvTg_>PL3Oxq_nK9ozE*vy{FB)I?2{B~lSNK*?ix1>{n^j&n@a1i z-+F&Cw8`SXBy{zH_uiYe_1}vLo?M<2*miT*Iq}jNexEh|e(Z-fS+XWhE#>}vS0eMc z=j4hx9EvLn+Bh^<Jng!ptDk3YY;?3={(=2V*`JrX^f*;4zR#HUM0wNZ=RA3dE%mQ> zIu4)rI&OUHgp7oK%c5&hJ#(_wHuD?ZWR9`Yx;k@;mdX;FpjVOoL2Fketq;8QURUB* zP5XD`CJQH|$r5gMR=z7WEUEMVg~-bf!A%y|jYlC(mcK9WPRdcewD;?mDLxi<cjw+e zWUs*^e!$pQw%_$fa_Dx?y8bnxIxDMR9}YfT87^<1`g+2<{o9xBiYZH-&?<HN%%S42 ziv`yhS*}=zhLyC}-oH}zc&+fcBq7&NZ1=1-pD#D~J?Gwuf^^4&N)dmH1FxsfV>8RP z^)vZ;ZQ>N}RX%4{uj$eGu5x|S?Q6GPLwDbQ#T-^s6|c_fYWU2fbFW3AbL-7xnM~|o zT!dMd)~G*L?ckr6#l0x2C{ei6FuqYQ`I<@0ebzl2!yBs~p4=8XBV1yiWE!N&qJR9H zQpVq18HL5?3M!{)tayKa@lz|whbEs5InFe(J!PmiW9IeRTB0{`8s~4BrS9w6i!|d_ z?rE*xpZoB$+LzU^g5@=&VA1oJGkXmxSTwrd@-Fn8I79celF?)R*_+O+KGC(necqYR zk;SJqPX99bzIAEiweO}o^grE_Yni;~*aoF!<DFX1_AXgAtM3bM!K`mPN_Ut)H)-a3 z^X5R2)S=8d+DqQn&%2VqdX)F0>PMj!F`|bTNM6cMNSAcUx+gVJqol5o@BY47kNm!r z-`(fF?*O!5vF&C~u6M^$u!vaNr#(X|ST4N)6)aDEaThH5i}<DsHB4EwU)c-PY>}>& z{PBP8r*E_5{;yp!TXNrh`&~V67Ty25cgc$Km~Hth9#nO1_wv(yw=q}EyHxXQVwzm< ziS_jiO4Z@%SV|V`$4wfOu-OB(H-uEOT&)P;*qFmTb?UWghPnIpxhp*le`3-pW5NpW z4J|!$Vh*^`(u>&}dYV%9@$+Ke|F@uxmayWYJ%~mNUl_d6@=h=crP0y@>kaiRe_|FG z(huqlt^2p?^A|OJu}V{E&S`h1e||PyMSkg_T`5W}oSXTtZaJ|^D}KFu{IU7lGW6C9 zI{WWE$PnA(Fe56tY2NFJmriE2eBM;~&v*03Pf@>ZD^F@Z7P{T^!zF4f*ROqMyFY!( z6P);GlI|&k=<7ch@m<c8TWbG*p18nK;p?7(x|=rTCDutOzqQB|>K9gI5j`iM$htLV z;_jzM--^2}`|(lukNRHa_~?tOjV#aQE>Eg)EBiL*pl;6x|GA8XKO$dNxJl1se%u;x zC8~R3@Y>Q3j%w8n-tJ4SCI_{)OmX+JeI2+;H1v(B*YCZo&hy`Ykh^m$DDR*&)68|T z2W%5(DLSfn|2wnnr}M@$UOFG&TfrMG+n|jW`@PYV*1GK4K5yP6&g08>e~$jaj@oE> zKM}RjA`5P`Og{~7w9JmIIHx6b&Z?oIYWb<IcN_9&gBmS|ppBOFZ$J6c=3fRiSu`S8 zR@XzCENN?x!<#IXQ>RXRI`2tT(e0|;pe9T0fi8bYlSM{zqqutB3WM7gz7HDaWh`1S z<$cN?mX8O6a~(r`^>UO9pJ`u6Ju|EA_3j4qZ(0TVHaE9%edaoBepts}_p;i<XHRcL zvaF34*UdX8sn;*W`t@(|mKb$tZ|K4TnS}Fc3t+vW`HR1t0QH8nr*8l7e!FhXy_P!D ziN}1FY&olyA^XE(mGPt7Pfs3Bvz_R5l|OakUPTj4q0On0E@^)<gQr!BMhbp8F}cz% zJ5Mq-a{jY@+e|L}x@Y<Q?LnK9wLIEJW^-02-Se(l^)l*x!}l%6&mP%p`ChUlGo5|f z9f5m~V-&ak|9pg9TO)6xe&=+D($x}dXD8G#?>?{a=<~G>mxpBv=N{e;zx<%nx*_kr zY5areb*9B$Rm<ibo&1rnK_JR>gIL>)c~b9Pn0UA%mWT`f)?}(bbI<v4+7-*kX(py& z`<@sj^d$1>SDdmuzGvdCqf8qoX&q#5OY11j;Biu!6TN(ILPcchjvWk3ME=GGORaLa z|9(s6zxq?rb3XkzuX*>(hrb^$mZnaZzdJt!)EW9cuRBlSW8SHiM{{?aEnTU%)b7mP z#e$MQ%tPj<OvP5NU}>>f8bME2B4Wkg+wkcA%N8Pa^Wzh@=$~x1{q|ASP(g)FLM2Wh zXRH2gQLouP>OqtFa=T3aRQV-6zvdUXJD6ql(}iDE)xUlGUTgQfWiso-CvRErXR>Z% zx_#c_aHq+Eq?Md52UsLFojY;%X#3vjby25V)c*N5tG#BuIrrC(3(;z7|MdIrdM}>Y z|NM(U$8XoX#dRIKV|?}W)~EWkB!p!vOqLchJ}b)Ds;gn-dGdZ^lG>7{V!1z+)1Q70 z`0&6iTK)FfTl}kXcXDXD6dJG^tovRxQ~#8b_UaGwPwrN}n_08*j8uwL?86qXvq_8R zO4mPmYQrL@vpq9RzpAn~ZSPj5G(qckJ@fNdndobm{a$3Idc}UJ!c5UaH*+p3{0p(H zpPb&S`0nL_7rrf-xoPaVyHcN>_p`{){+iabY5h|@n?Hv**rFy>UbJO6GQaS`MA@?E ztS@y|R8QxN%ljd_@X7V?IguT6|MRZ&$nZ^_v~KfRwc>Qo?XQ2XechD3N+<r@q_29{ zgCBTFR80-vvRHQhDMJx=FNYP4yG#8aO%&ODYIWf$*DntaS*zz(t(9qryBjW9TmQU2 z^6BbND~s)R&n)7LFa9Dae~p{}g@BaQUXBYZ<V{st_%ar-Ygqc+D$FRU-dcB|QJHtA z@)nmfQ#wDGaUYX!7CZbp@63WgFV@v2pO55+b%!yh_CCADe`$%1?J^7Hk_|rFHfQk% z2^+SSAFuv-S>S8lg?s&M0m<!#t&uWP$JS;(d}1Ra)}(&Cq3fWV=j}zmvO@1XJuP<R zYV1_;O4}ft4+oP=gbnwYDLnEKj&J|{mX$|4^3H<-uRRqacm7`ut&mk;YnU!_?|br} z!lEx5t=*1t{@i;(Hu0I^a@7szRPKtoc1+r3pTEvp>-gL`oPn33JQtaEGt?Pw+mpYg zJa4`pkF?NA6TP_q+WVd*3m4B=F7MiOc@9g?o1YdpLTmT`v+Ge>Wi0<H?jcj$_v;If zG5j=LKX2ahLk)|ydje};bqUMgjo)?Zr1}B<g-;Hi;{V6RyKDEk$&s=*re}O+_&9ry zPi@uS`yr7N&*Uu+T3Iwv-*43d_x8p8Yv%8|9Gkkc_+4pOxOZxtc);60$8z`Dxgn92 zmu2>yE4I>j#TnjItah-E|8BjCg>E{hnsxgA$(_1&5}oUI$uEC+cTM+G{gP$BpWc1A z$~tY%?E9Wy{_i-|e?QaS>*cQY|G!fm)*t!CEvsM9bCcz%u4&v7j*f(hQ~e$X#e4lN z(0H@;AMf5bo13v@cx<Oal9u7U^KZL>4w}uG$X)rMs{EVdx>%77vv)b@y9O&x*U-?I zI89tYGkg)3#r}QH?>?zUHpZOxYkuPJuKDoInfZ3-cqAhQ-0EzTt(A{YeEh@woq>|c z1s4q_!vMZnYl@4iza78l9iOu#MzB73!HFuzvhDY5zfJS&*st1Iow?=nyD4H!h2d}b zUQMq!_4Ub{KW-{5#aUCBjCQJWhWZFiuxL`5+*8A$ay9XYWb(oJ-*?V!pTk=I)9P;C zwYtFE)2<SZb6A2I-lm0n@7Czvv*u9$<okUl%QqekSZsJHgG+g0fXT&EGd~`i_E{ie z!=1FswO{_Q9j(gbyrNKchV%c9l}6EFU*0W`n&R>=lch=O+}tx_tdsU@rRP`O<ajib zuP3hMby!+iz_MWD{WVSd*Iv;VUQ+8@{_f%PS-}Bw&UC+HRQNZgvFmJsmA;3%An&)u z&PIOqCKd}G9^mlIZ%(=5@Tew-so!z^;kjwAYc`*pyZ>gH?f&B60_Ul>pX$WE|CGq( zQzRRETkF+|M*pJ{>y$GOJw0%zO6`KGXYZGuxkhsKt16CPPP-Pww&-=cR)5|8?|ETm zp>Y<EKi}3&{%~^9*&iFiY&aytFBEh&JN2Es%>H)6w8tM_oy*egWm{(UQ2yabVXe|0 z%f{euGB%oOyldH;rx-<~?p%H>ZEHqk(6x&Eze?VxFD>q~j$u7rV!isC!*#={KUk}@ z*=Ow6TXe5y#rDOFA+r<H7O_pAWwbcjLXvxD<Ae5Ohoe(eTQdXyR)*fWoyz^_)xJ%w zYr`k8+OhWT3-!6g+p*(v%FBn9)tSdRW|>&*k!su@rn~0c61UgFLhnCMePm(v>&-lc z$2)$+6!mYcd%1k-K|ht-Vy+!isw{Gk+N=t)+c{5Z=~NLHO)2I-=NCQA?XG(K?Qm<R zbAra!)7SrN#(mz{VJEYEI#<)<ISevqUM6ig{VVRjU60K=ZTU}ei<r*;o*j_b^e1I? z_vJ4N1tt7OuZm)SKid3z>g%;NjDOTcbRvEp{T;A)XZGxKua4|<nd#27e`D&i)2|ON zJJnrMW-b~ujeB=Rki1=yUR7HA)ynd@(dl<??|HY}D|&mx+SLoJ!tXB&jk{-d?s};o ztLxr}Qk8D3Gd5oSyT0vl(Y&OM#h<LF-gxj{^!-1<W2qI}UnMp3%zaVET(P6vUnBWf zwcuZ|t$Y4>{*LszYP{$Dc1By_+y86+GzhOz^T=QL!MUrkKuY?dh2E8&0sYGl&3pZy z$?4~Tjo30gmIa%Z#?T=NVruvZc!s|S&G30aA{$=sa?p1aQk<@ZoZ;<28UALY$jZ*f zF9~m(4?jF(e*fH=Srb_kpY(HYGcJ;`?EC+KPuYptw?#>S`RRg_R_f*A`QPJy<taby z`XSHSwMIOp{Po@7{Fg01=BpIy_m<t8d)Z0hoqn18tLZ<czCL;M=~@qt=T|gXQ;OV$ zR?SdRC}i<ell-YYA*5X}y@&O^e33Q3CHK3}rMvE~`Mc=Wv~GhY3(jQ>x6ZDcRu(8$ z8QChYUN4v7m)yP3EqTdB5jUlU8H=VGKTeN6=bUh`X!g^smrh5Eyk4pr(0s#C{m<!T zr*a}M{*KQM6#BVbkR!{Y+$dVa<KMbDdtbhG6WIUqzzf$Md8ujVPnBdnTi^d-`_x~x zO<UH#JZJkSrkJa1GNg_-3fL&=_nh^m%A$jHU*_~&mglv*P>|5FWV@qLmO`POS>y2q z*B|<AF5P$Y$+`PEyXW2Ct+`|2skcSb)|LM>U{%}Mw=P$-^vZ$dNj%pZO&%5{<k<?p zn6$*L>X@Ho|NM|Wk28(4HJLAdO`htWFSlp*)Yz%(=Y0HmcZ%VUl#6LK5!!MsJ=z%- zM;#T9Kl#~QHf!2pgSRGI@3}CSOLg@aJm;Khb!^W;O>5TTu1?q22Njm`ghjr4xj9ld zN^NSX&$haWOH*GeH^Z_#)8b^Uk5j6&_b0~m9lawh^>v!rglyw8`BxqU1*es8TO=!* z3;ZeJcr)Y25(C|L``31{@6Jh#vklp{;j7oC1L~VDb{-G8f1t<Ocb$A)zJ8^o<7BpW z@lu|+MPgyklNWy#SS{T7{b^OPgluiE$ArR|nw2g`B3Qo`9^E2*a+|B5(o(te(dGQB zw!4R?F4;1vNy9a{L0n8XKl+OFc6mJ?X(s2Dv2OoYRh&Jp^y{a^-*Cr*Il>Limhn7g zk@sKUZ=ZO)G}q;xcgTavdTA}63G;KlzOtFiBXj3uPgUx5mY;9xo?4m2EB)tX<qoU+ zsCXsg-K}Mttv2chKI=S?pEL6()1MtHKPk<<>)$%%=^?$oSI^wfxvGE5oLhc<XX&xK zPfEkXZtV)pj%B^Nvubi!W#x5?`0JLUB468f^BHIz=$ZRYU#IVMW!KSjC*Ox8HBUFW zch>}x>1XrKeNiX<^AE4W!k(A^yI=ILcq)C5b64}4SCaqUL2|v=14h3MvlRBW9%>e0 zerRHLs4!-Q_riI8t+v<gnQ!Wyy^kf=n_}4pU`fKd*tdvWe*ux}J6>Bj=()x&oW2U0 z>)jVI-GEf{H`j(}cQ$`fcn8Y$HS+0cM^7{veEQe(wnxUj@3H%xM3;;OodGOK3uH_p zpFer_=K9|DeYZSzD*apJF!5{Co4i>2Z&Um__N#POXKX31_2O>a5&tIcivCAk@yVM% zYflt7w=$6H#FI9a5JOLgM;w!Uj6S(5tmIQZC&68}`}A9zCptUMUVmA(`CE5ZwB8|( zM=CRzGR&)YZ|UB2;<VPE;!h79ilw4?Or<8e1xs|cEb0t9*CU@}$=}F&I(OQ2uk-5z z)=Zz~z<aFE@}azWXxiznd;dbZC!M(8>kx2w=j5A<96p6VedBxIr0IvBIHaEcw!~+7 z+P`NU_0cQKA@%&>^QOxeSj-f^%X{EQFq@Xy;g@?9=DL{N=$|*K@Ymvl+){i!N-uLK z^hkNk>F52xQN>$6YwhQ=YUTgZZh!rA&G#U0Xx{YAC3{b|YZ{y^ElFIxVlmr2(Z>a{ z9>RL;&#oCa>Um}@Nq;lt<B!0j*7M9ZPcssTy%S#f<@DV0&6`$#+G=dKf2I)|zgX_E z*;^kmro=cN*5u=|RP*P*^?8eo*k!-q*S;nN%NL%|cxJOO==cnCi`4U-mPd~)`kF8y zh;6mb_b)fsi0Mu~B{g|%d`f0yRZ2no>V%nj=~v|ptd<Gw56XXP-q&5O_G)it!o{>1 z%qtHrU3TV$n8-1wJcWu<4wD%&OAU0*?ALc$@6K5maW@p2<#z{$9Vois&}i*zE3q$M z|DdGfWHmm0u1V8Zv|hEmo$*&S`Kx~DYlB0-ye2EC@BFdcNjO>e>hY;hAl3Ym-S)X( z?N(&T$KIa!#fxi^NH1es#Xg2DdvXKw@7Tr6h+uJA85{e<ADrbg=h%sJ^c6D|7%V@W zF#YS^e}4@=?O3<rM0F>Z&HMFEt(spBhOPI%%zyCU-wP`qm#v+0{(pY#{O8<nmj`S} zcq+cXUFvM??UJzN|5Q)eF#S0;ZKnR?@3Xb^FWr0_;t{F$=Ftk{gC};rn0Ytu`CZq% zxrNg!@7|ueE$@3&xMS(MI8Z%ra_;)n08l;8C)&ehki7hNazCh^w=DT&z4g|E!2a^* zQwtZ~TYLJ(8fW!g_j~MW`#dy~fBiT5ZJYJ8NjB%Z;_9ll>wnD_q$mBJ&s=waGfa5N z_JALXM;$DBdkbX5U&X9A9-Mgo>wd;Ei`%@|vOE<k`p0IVn>#n$=q?d(=93qi?Ao~G zw#bX68Ch>q_iChg7ji@tWu0c-w11!S#HyQ~4@~lA9et<x%z5#}Gd1$*ZHXz45<j1| zK(c)Nj>8=n9E2Bg9C5JB*mUmX*^}?9_5bE0SM<LYZZC2A<3DM~bT{kk$F~S{{O-Qn z{!6v)X;D#8m8#GoOH(h#nRh0%XsK~}$T&{&bhBff^vd8-&&CJ+yYHNHKG$@+W^SH& z_Wl*yo+|Yy_%&%Zlx^-_8au@`F6`m+lk3@MUA~dD;$nx%tV13uBEDOS()MhAYQrL? zvpq6S+jg(h#<(aZQwi&5E%)<RotY-O_wPnA)rs{|jSJd})i=8~J~@Bt=InXqO+S2L zS$>7j^0c~tJoV8l=c{}Cp7rid`}}M_$3i3hUF;1Xm-B?=v|X-rwCc>*AaASo_=|fp zzln^5>!sTYlBN?Z<fR`7evx`-68(I(@4G)|x4r(kc6O8Wsylk=FRP~W2PaH={o+zs zpgV7k*0G0H6Vzh(&a6#mik)=D<NOWH#~+)!%58GfbW;^}?OFfn#dhoWX{q5)XF{@k zyw0s2{_La7Cw4To1<QyO`N+v{nVxB>vuy6NYqK*R_&HAuJX7hkw9hcV;8dItmWtj~ zEqecnOPju&c)%Ba(CF^DRkjHwKC1JA@}Gv|%JM%R3S<~qdL>5X)J2Jwm)&&QxNCJz z;_Im?js9he*EBp`(8yFitIFWdy|^ahCN*D~dm<|Nf!wQ$w_W^o_Tu-Kr^+N&)|z@v z*dAjO+LN?q`>)E>-H<xo@O^*uL;h87&aeAlVK4>Uvfrcj%>CfyX!)<t-ZOW-^i;TU zD|C8&>x&wlMe^>S_BWl}7{tK0Sf^}B@$>Vp>+9`%Y}UOtna9(~_2=XcE>X2d`rE9m z{lZz<%R?9MyK9=VuPbIp-o@#!_d6eKni^ljV>)a1wwG)46uhTYGW_V(HNMYtCx6u* zkM!-qim5v{bf@3daXaU#|3=dKy<YL_p5GI$%O+*MUbeARH01fK_ARGQ&p!5Z*Su8= zR+!(p+7if^_NJu1vMA<Uu+A#Ky5*0g_ZWP7cg<Mu`|hi<(RD9ezDM6Wp0CWA>Qk?O z?f#-^;cuFELn?Z6E>QD621`XByig8Q(f?;$d*g*QmRxU!t)e%wRDb}&s~Nx*y#+Ye zgD#FyZ0GNMnberFS@VMT#dRB}?}Fy~Yty)wz;k`(?04@DK5|wrO54|O>}<SAp=Xa> zlC|#fY01C&&!P6`E5GEuUp)U>(7KL#jewNB3cG{f=l}LnKVm=WNUh1N%KuZOm<spb z$i2c}IDPZUiyvEIt$R;!>wY6EsC6&kvFdP#@v)};>x!-UExFfy0=MoLAX@id{iefO z_xXGw%P$@cSS*+s(mK&YV^+q~D;1fiD>-x`@;2{@`|^Vc+@D|YeunVB+~Cx0YhGM^ zzg462&utDC(>c~Nb-7gLYc0?JwMy`a?Ofw3!FACyZ_YKkYxFssf5Y~vzly=F`@O$+ zJ`)j9|GcQ0@kRY9hofmX=87+w+`;zwVysc#-;528hZ`rV@8z2m$lSSkBcq(-dRXiJ zUe4}$@jLZ)EJJSHpUVNY?zbnsS;w4t=&8fqUFsK9pdI@AyFT<S^<BS|$0gl7RBrFy zZ)ss=q4O-Bem<?4{Nd=Lb3Zo4RWQIi^vl`b7Os|gb~$h9wOJVne$Epoo(Jdpyn<75 zkBhq+U0*vYBRB6&)uQboxt<3l*ROx7-`8!f_G&GtqL*M^d2k`3qA%nykpNfp^=rDa zK^1*$__hsSJvJR+-yIlopyYx>qp`1@#Jla{4|*1OK5kEEJy{&nde!iD#@{zDs_WCN zd#>0?tDcC~d*|(D_$>PGhAnqHQ*JNfm^j1SfA&NEQ*Zds!E^l|ZNu+kZhJd_FG%JP z_TYGHbisU~oqYF;-53AG1z0`fI`Hhdi&g!uD&B9hXCGVLe*AONjt2X9@r8#9{v8cd z_Ya<Z@Zi>)D}I%y&OPtCeBHAzp8tzAA~t+#-tXM|YF)0?>dO~|Qu7ub1J(1Id1j$; zOE#}wIbl=Gjib%))RiAEau1s~w={ic>8ZKTOXo)3+Vv&Jm-Xt*s(E3Rl{Y2g(^Ex7 zzP9Xs0BYLzzFVKr_qMWY<;|1tukf<1pSx$bb#HguT`5L=z6+i2#E+HV&lEZ}<DdQ0 z|Kj048?Tm>PYAtx_<7yVi^d!O{%7VdX!^<aQddN7i3G>;je>oTon*O7t2N&2{3mKs z{WTL?j>lHd8<|2fJW(C`Xz<01_dypkR(7Pz#|tq#B^{Vh;n>q9-W6~wW$scn+1xIZ zI$QOP#o6XpHY&0`TKG{_{hQ^#eZ_^K(Yt#x8|O|-KE3g8mvIjVuZdun1J9IZwbygz z$nU-X`$hlODcX<ZxkMuMPrSQwvo!u?%MbTSJNn&>)4#7&6!_kK*X^%Bx#dh5+4)^9 z1%ACj4r<R;7It|u2}MsxnKaSAafwxrMY7J1f|<7~Pec|>Tz~m(+FSOk+hSS-k9Zoe zURd`%DN{Uk;`GoTm7l&jluE^dTlJxkR=r>E@ojV34>UbBJN??V-#-xCs-GuYeCWIx zs8t_lv)<M7$$dA46%X&6%n4NZ8Dv>|d3mqGyO(^6#UJjPI`gi^WnJU?D(>p&mDeGy z`hHjyFW&InUvk9_p533DN`x*Z*zNK>wpO0kEW^UU%5yz<_%0`>!Tmz^j>|c7^UZc{ zHov{@x%fKnbt{W@&sq99*3PHVbKPR$XjfU&4{Igl!F~A!d3S{~V14=Zu@%QJExR7X zwrKKdt^RwlRmR%8wdPwq{rp)o`NLiG-2R*WZQg2`vSoL@)|y^CFsDsvu`#$azvH0h z?$a}ad32)qr8HAFoGS94e>Ur)(aJT3H-9-!o3_-QEqw>qw3lUJZy6USYhCo-JFVVQ z@7|0R+m|)E&Q9c6!qyHNy$g^4jow{UypT{Z<<OQJdtyYVgX{P;If<_)rZn=GEnd;^ zazP_g`m7p*JNfztBpoL|laUiq;V%>oJD#)nYxCmw=Z$YCF8Ov-!|`6x$IU4s$@{Ku z_r5*XW1DW5Kxbv?e#w6e&eXmB)8DsniGtTfi3jtK+=-U>s`jqAPtiv~am#6k{Vl(0 zbQa~i{VsQWIYXOaHoNr8DE>EF@31!?FLiCO(<o$o-@JU`p$Y%*hWWo+Uf10GdizD* zgH!A5;`bJmuGHt**V@FYZT~|eE2KR4a^&1q(=>{CYt6QuskvFW71WWB^#OO}^Ge$# zCB^S<w0gV7`sCW+ccF3D7cE_T`tr4qfVnHzU((V)Fa7xSnYB%e<`qm=01e+={A+r) z(q&%Kud+|pTU!sV)_ngi{PCfr?R^JMvz9FSef0C$@AF!Wmi?d3`ak^VVbjXzuU5T# zSiC>u<<49Gx|{UoC0ui27vPH3WjmCa)AE^VVPESmyNGZ1J}}o_U|NPHx0_?`J~UJ? zG%+^h()UTtOE1YVQZO?#gY%3P3}6xp=7z>ZuMg-gXAPMWecMd&VStjND$ga`l8!4A zE@|>I^B5fAIm5%F=;5*0M9IU$V{uE%5{0{W7bqw#?O1Zf{Fvo)+xP$1f33~FR`u-W z_u9K#zn8w<D#sUQ>&)oN-Xa?!%IMC`!QGV7kdUkDY@8?{z#=5d(&)k<BjaYUMfyuV zd&6OtE|-G>1vCFQG)xTOkjf5jTd>h1mqn)H`e|Mb9WIe+69lJCVQg$rQkd{1-hm~E zZ3WNAHcN)Btc~S@1sYrj7~Lv<C?)!x%g9-{Kd$l4Hyek<%uLUJ@edtb%Qb}3_#2tG zDrTgwu->-F_6ToA$A)&ti~Ih29n^i@<5qowgEP@U!m-2JOQ5l2(&LBhNeLP03m8RM zU8|gB8|>TJUOC)ZSbtWH;{k(|<>7$+wrw2lCTvYDOdHwEXV{AL9XeKVP<DZb!Zw== z0nXejUNg4-XUqP}_JR5T8@_;ufFJKm>KE0kH65&Hb$;_!@SU8%4t<_?EF~>F9UFJ8 zifYP`H?bFBD*wURvSXpZjfxI)mS=1m4>Q$$<zrl>^@>^XhTwmmj!o`|Y%XXxikx}- ze1enx<%I8%tnV1ycI<Y3m?82Yz5bMe$`!fYANM)c&t0!A)7bd?|K5_8gR(O9e2*SH zRZQV&udH%3o$|k7gW3UmGj$Cq4Zca!CJ0Ptak6a;kgrZ(IA67=#&*H}Ifv}e-q2+F zV=Ex%;QmJ80>cbtk>Bhe+#UBUbTGNZE%o64{J#4242KRmu+OlS%3v>TI>`7x<@l_H zefzIRa496(IdBV1Ydqv|;r#vk`C$>0EEOK)?fZYAe(t6TvnI}3G?Vjwyz&3Hp+QbR z82+-ls5CHLN>b3tcXe$DQhIctp<ew`^MQXRpX4`66}Ynm{3_pnqxaY9^!N5A5B@0& z$vxO#{8C}Vn^vZs{}p$uddQ^o*K+)yulZm5$^YYD=12Z3-}JxSdsSRs-hPHV^#cF- z86NQ!fBwsS@X~ee-l<JyOxhej>Yd*^)^kU2K797!z8$X#i#CVr4&iB6m<}a1DFlAJ z&nMv}`i!~sLi576bL&4p+kW@Q@@IDv3RcK5vHq?+n{e1+!T(Q*t!eMO_Id?G6#Xl5 z+-UWyJW+Iq?V*RuAGjP*Z4giqdc=J|&a6z8?~C{`t;>wBK6jsUP;|6l>g8oja_3>N zQku{(U%gwkRltm^v9Q@{QT?vEXxIM{_46OarwIg{kY)Ss^w;RmYTjyn6`|Fq<691X z`*Ho(bybGeUk+~>HwSb4zRe%IO3qAne^AO1jy1e@C7(y^o_<XEfqi$*w_lEaQx1Lp z6nVnvQ-I;p?SF3_TE+Ff@sP~vo&Up}c>|BkR{4AE^6zvrPPWC_y$v%3Z>@XyNB8Kf zbF;%|vh;}9-L?O|Ctv7I*ZqduRnwJ^U-s^b(VzZG;<Mk`<-0bg)G5?t`ToD`&FMR7 z^CZJY_hTEU9c&erIsev3{biouBGx>i&vEy^E}UUuA+vv;ZOzFd^G1Gw4Szkh9Jv2y z?}^8gJ@+3qQWgx6wzb}CdDr(3^Q~LarF(oQtNyZ@?Krb5f7fHS<BXe@`g`p^<(;eR z5}2=J^+3Mu1#87G4u8MELw_gDs*v2j{OXfi#-W~GI%n5Owy<PaoM4Tqo*Vl1k*@8| z_5KF_UsHEHcfLQfH>Bnw|94eR`>V@1Uf29we$>69a;jr&=jP&^bzeeOg^S29zmhdg zF6z_XYZ8KKvGM^wy%gIX`A2Qtd&*jaUv}R5@JAO#=Y)1G@0ONRxNUZ<JMz}2=KObQ zWj{|n6#cL@^H<lC9N*e>QS0XiS|1eXHNOfvq4guBnQ0fJ<d^nsclM;^6#kGgS-!Z? zx3s7&SS<8pzvgllQ^zYM9jpC!OlUvVe!n<ld3lTYU)JwId|SdE3;+2&(MEycZeZ%f z9iEw)hgRlSTimexa41x3_Qij)e@&_{{hC&p^ZRJ>vt@7p#a<3vwRZWA_Zg2or7aRt z7QQaZ-PKlL_BW+^Pm9>zb^Q8!ZKWT-U3c#H&+N&2j8+`FzdKB#>CMA+=}$!#T|M*S zZ-n#Dg|S~&rC+QG`qSTeurSTBV`1a@&y(a=_)K2Dkl#6Dj_aZ4FZy_$-9JV?X}<Gh zMM&PI-?Q4@l$?CwaZ>U3j+%2*t}k+(=l_1%kyAbwJa^1|%UyXrK7C2YjVZqmNopNV zHS`n^I3pzz5Yt%U@Gs^mSG?2}@mYNKZ=buI5{`{r{=$Fm?@62QC;!j5$7T>a?c*r} zp9hL79<8zX^ES#oxy0{=^4nIOg%f&3)j!6bog`GfIna9b+Ls%H+&WL3Z9dnPo#vNQ zb#?=@_O^1vE|Y@D$ypD-pVk+R-xrmAE9u^2y+WR|*|X%mqzrfzzr9ZmpSa_+rIvk& zX+f>8@jr=Nmb6t@y{fKUIQrQ4wc!;(ui%KP*)Nj5f9ric)6X|joOkV>rMJ@sPai+i zn)^cA{Ml&}-P#Y!B9EME$qPJXEMv9*<n|K&*>B|IH3MZO7izl1Px@f1E%|DBcI@Hn z*Tv3!46He3bH;r_-Ap07J&9pqpCax)TpalM=gK)%91Q~b4pDBor(z3lls#YgGuiQD z!WG>@FWpJiuf7(qb$sZ0TvNYA>&X2%f;}gj1oYc4iS>rbwQug(;v*n_R6FnYo{il* zwRQ&Hap=EZpklmZ+iJg0Io5oKjq78--YV#6S|+-V{XL83u1ZzkyVHy`^JWype{C|} zen!<Re~ZSMYelLbi@&!Y{SqPY`*_Kxo@~F_@?Goa+Wg3IUtSocT@W?3@ms!@_VJI$ zrcbV)J!5CjHJPYM{HHT7&KFwxkoj_aaGknxDO0KBVVk$Q`nIZSQfH3yZZvpt+cQpT zFT<?$)BM${!)^$O&Mai}F`ZWX);M!ljn?C^Q~lvfWuN(6ecgI&;_Ssn6KoS5ZurDJ z{y!!1(S+!tRc}jv^Sn6xes0*J%YF<C-)qd=w(tFuO~R!Us@s$AZPUDaN>k-y=3}Xs z+J9P>KVN)YidAKq-=x2xPaB%%rk_ZE6T&gwIjwzl?)u+*JTvlVYOJ%^-(kzUG53zm zVT+=?vsKI1+~>c?)$>xN!{h9Y;{q8;^ZJF4tM@0LS~t5^$L9p^m%yVfTY}VftS+b( z^UXi~qC;+0;UiJ0BU9Gxz1|)%Va}0D8(vIWdnfQ_$~m)r8hh7wtPk^eXs|&1%u27% zFK3=xX{heayDYMH+8wW^TlXCNS0(mu+_6hIp!37*J&N<cyxejnVAI!tvtPeHC{vvL z`|0<&w#GAe2TqyW%W&?C!2Yuzbsp(fJ>4hM);~G-RI<&hhun#;-d{hLS{ZNr=CW`2 zLYD6-#mi*A|IJhRKI<ckS>1}4Jb5?b*gr3q{%!a8j0ewg&4cm^#(k@=&aSH4zt+Fu z-$SQUR>gape%)+OQ))AqJ!5Xckzk_@y>A;sS<0JddOR;%+8Efw(`~uaUXXER7q6@C zxxAoVk3POzkmh!&DDtcHOfIR7`dSP3yn8rTsQ3ELu;-EP=MPWYY&W|}KJ0~oDyQ&+ zy=r%xYD_+@p1v)P?^(aQitbN0*7S?}(~r!^&pQ(4m65k^{@l9<WyP;8-!MUQQJ?ju ze~o(YR<GW~8Z9&D{On@}uf2Yqn3|)#f4*JPnSzOROqvRnKBroCy!kLy(w1S$+E;om zt@~uM3Kj}p<jG}L?_HC+bwhuP`s<xNZwfx$o%Z$(H>bl(9aV14{}G3!KdyaU`N!kQ z&qK<bbvNVstfxCi&#$oSjMY$iaQ)ND=!H5=g`%II|5~oubAG0A!bi2cQ$pWud2Ph| z^mEv$E#X;rgcrQaITj+r#B+Y%xua+6+DdoS?&RQ_B$#~C=!xc=@a+#T-e15~Qeyn< z*N37V2`@jh<d|tY>Md@)edFow4GL!_^x3g;R4i38ll%5hd*Q^_TNbWZld^7N(8g00 zFYmm%oO9hhsfv$v?@y!hcFSDb%j}ZVfBiZgCQ`9|-}=*iy;EZfZd8lru6dFD{_{_Z z9N~-EEmL;MXyobJg$6!3(77Z;b4g%{pHkUIlj?<WZ2OIW%Y-lBy?W&iN9e<?KW+s4 zH#+=B;C^ANi}F`lbIYh}r#f0z-FhD-uj|O)G(o0dxreZjl<TS!vUwrf)*bCh+2*-e zA<LvAuxQUp?buZRyTK3RA`d(lyW#d=HLHkWjj3gl_pf>PpRxY*bW3p&kbNGP`|;KD zWjhy_{CspUg3q^e*T=to@=x2ib3%B`uNrmlNNeXfc<Rre;*|>}*ITdeR9{ul68_C& z|N9#i9wEQ`l<lsq>e;eyk<>Y(fVVrQ-McyU&WdwBFV?AU&)ed7z{C4k_0m^1>7mwI zK@0a>IDXaJ;^y9pP{*~U^?!Ocbze35JN2o^uC6^ZivoRoZ}XmM{dvGPx9)gxit<j= zTRT={%&BNo_Puk#_C<7jLryhIZ&@JYtXab9t~1{)bN%$lnk~g(YLUHl<?o<5>z;f& zbi4JBN1meD<%DC>@kdl<<%CFY&6{{$Qm<+X$28k7Z?5%ft?GXNUHsdMO*6U@%2Ml2 z9Nys|Dk81DHDW=mSKimHzNV|zJ(?kYZh=fndt{2`nXS7O-`g-=+cN)HWc-gS6ZZs% zBu|Slt@gICE!+OOPFCBbc(J2rlZI3MXXj9%?z^wuum5c+XTEo;Mfb-&hd`NY-&}lb zCcenfKUptdf8M%go!Ipzzooi%eUHxm$w^9@&{4AR&#bvmXT<P+iJjY)RDaIqtWSE0 z>#ROKqeVS?Zt`uOHTCE>89AP3W`|Rc#HR0@te{YQaLeX)r<L#D=^8q}n4CLNXsM{h zi>EWMCI99A(R=mH0=s@jKBmG;tcyC<Rkp2X6?$7$T&vo(+bZ<Yj*Ca$%36K($XGWm z)MNFZqLw9#xj9_57is^$DK}5eWr?s_L~7#8qBi$GQ%=>^`1b8BQ%^do-gI^Ut?$QA zFWo2;e#A8V-@4W^tJ)v6aog|kFMD-ZbzT2iowd!;pRV;s&YwPO;pfRAj~^zlv6v(O zG^W+@#EeYg!$FtlO#LH$S$Q3!;J>4s&FeEFCu=<s3>7}|N^$j78Sm4}*UFw>%xN`~ zd5Y9M`ShndT_5jzY8InrEb3h+<gQq;K4X`OEL)%OvZXW6FXSs)|96{>u)~a7r`NIO zzqjJ;zH-mL>idnv1M51!x4V7P{ap3*Vq25D7_<B4U>V&niz))!=5h*HPnzW^t#w}c z_2b=g0@t@2omgzm=T!Uq+2KUhszmm6_U{hHu;xn(E-_xzu;^Bg;<IPh^!bn8Q)<fH zzFvQMS>ysQyDy(RG@EUXt#Do=cI)NoF8(IXw!@u!7wmcAq0sQ-Z1A~g^SRYmXBbS{ z{B70!w%;xVr{%bA6^OE?2Zgj$ooG&7DR-$}JLs;*Yrk7B)PldtN!?Uuov`Bj^SABu zZ(Ow&?aEx-zI5T1l{@wF7tQ?Rd!yvd{<v#W@9e7{24^b1+kQf~-t?Enq;!q&3bt)Z zhtdrHw@h5}Rlxq}l(|oewYXN49o)CVD!oBpYW@9)>6^8q*QfAlPx<{pb#<Yv*;l)o zDgQbYT5RvH_WiZ@)wPsIkCNVG22N-AyJDk5;?7)$*x6DRA7UIob=<#G`(|DF@y<tg zE}dPwdi%{&OOEVQeKeVGr=N3~vi;>-=c|iDE$pUW{<%%c^YE_JuM3vNAFzqO9?$Z^ z$SZ5@!Tx1QaupV*o>dlH+3~XYY1y6Lf6wnGTBL7!usNgbc~O~v_Oh4v79a5N=U=AY zT6flMR&CVueV$uahUIbe>}*asu=o6%MR!HIxDU$qOiIz;_9Ca1CGS)C-;CczyZ$F! zv+%!T?K-DY{mj0MX!D#Ij81H4*9KfOw&O?)eJ!-msCd1dQ=Y#;yAbP_fK~U7EHAUU zVVJQ&RkJPaT5*8Lnx$^~a~q1}KfSY+w9_+NW9Bv8Ci&$_3%!tYJ4LPZ-hTQr<J0Y; z8CxGNJjQ!$QS74YM|yP*Z~q&g^;&9ofd1>2;FOmgp8aZjUM8LAeY=9Q^y(_bCzk?j zS?W)m%wEKB`}OB?@uMNfBv$xOoxtzDd|`ZP`HE(K9rNP$e2bpMX?xlNnhM=oI+I;@ zXwQFK`{VGpZrw!}nG6{d-l={4y?&R9@Q-^LT3o6&6YT@mW&NM?Lg-tfVr0_7y9zTt zuXFk3!Q3e9_(pJN`SX*C<vLf^o-DCe(y#C-dewRQ#?A{rzP}SZshoFU$-}DCiMNtA zGHKU!_y%}xFO$FCRdK9|lV9$C^`>h!4?GnnL}f3(cId&f`eL^0GJ0QB?s2qV-@i_B zRs7*67CAxsOK<4dD%e~Ve|b#VOu?stbE8Rtl3nU1-LDl<@fqjutKL|)#^j_|hy8(x zPpj2eJ+a!b{lSjAcYQyG1fM)7a7^>%*S$wl4m^&0@Wt{Z)2;(CpQ5@l->&-lBK%n2 z(=C!}GVhq$)IZ9{7$x|(RIHik5WDG|_JYdym)~vEyu3Y{!ExPzO^2QZ9@!Jsup~2F z=&Y5=_H`z1A(p2eU*z8SbLXu)YflG#|8(Q9oTJ4v-;$&@w(zV27XAyx?8V=;etY#w zbYH|C(eK9TeO8aT5A{!;<E&KSR&Z?Z`!yf_nNK}GG2n9X#z!7Dk=~Y0>#UsSw#cu# zz4wdsuJ@M;Ww(S$TJ629c*b_;_v_+m?#t85w6-3Y|8C1H9^NUE%i}qVq)m4&U1jeg zmN>y~SHAAuj_<QBWgcyBv(deN;M2G2o&2UuO`lI)wM+cQ@^MRJRl?mRn{B;nt}_2W zKV8K8yRu0C<qDlx?=Uas?)H1E*<k4JCrs$4@^UzSsBC?&C}T1gdVIlbUo-eY#q- z<)zGP7r6QPuixofel+Q!?7Dj_F-zZ@e7>|pWsA1;`SQJg<{2;WUlo7-#l5~G--0;u zyPwXrG0J`By5Zfm!-ur4oVk5d<Ty)Z|Ap1}q(7ZKdCW>SwIcMo&$MOEas@5-uby8i z7C3Lp_5G$b^#Q+MEIy!@s+oSy_~CDr>Azm_FEU(^SKgRA<NLLMg>kR$9A3gYUD<C_ zqf5|%uDril{2PBSnY?I4V(F6|dmisNrpp=R7(C^grPH*%m)M`{NqYu5zGZs)vHFnO zLf^%6ZDy961f6eMF0r+I_V;$V?L7tdXR>xoOpR49Q7DP6e?NQn$u(61EBOCpm|Lt{ zTU4?v>sDp=tmAsQQ|wn}o6mig)XWrCoPF@mhuINQtG<h^Y|ZKVmSMd3+r22^wvSua zF)`j?`pl;*mhd%iz4(f&O;!`{y}PNpH8El4LW`2ZZ`?0_?3?jV_Lk5?Vf|Zg4Y$<H zU;a2l>+F@qx$}CydC4l?Hhca}^<16fv6PO@g7+s}YMJ+F@}^IUg25Xje4kI@RbD-L z?Vj^0juZDScrvf5@uye2QrE4ua}0ZI(#)@3UHewc!~c?XM(SbS7Uhylk#jx&D@Ct5 z7F6Uvr)`~S?DEp^rkJ!9pB|q+@bk?!O|ChuN(_JZB<tVOxOOXb>W7;rmfdHRnDuX2 z)zb|32OnC}m*?Ekxl-`;_Y~1o182qQFP=viOtZbd{`g8UnWV7l#E|>1FInA{v<-5O z32Tg1c^a;pH9P$Aq#O5FEX(S@bW!8rR1?lyCFM`n@44|KX8-!rM`oXW9O$<_^4S&{ z!O1ndVpF5G#$H(b*#2_;;^IFCJQvLkxYkmCUqycL!uI(Q<vlT{wO;+UFcR6AGUe=| zuiIQSr~Ila*m#bk`_0WIT}t1&-&Q{;TpHV#_VxSQja$5Hm_JO7p3>30Wyc<)MLMN? zCHdW)8@6n_v-Ba`2_wn0?&%!gSFnqGs|fdrov0KzgL_wQW9An17%%G{39jjlT=l2> zS7fb_$TgF*mk3+Wc6+TyPwJa5)^c?}zioZnc_B0T{2zl^Gi)c^Jdu$h!e6Yot7zKs zf(<_&oEGLct^L}YzPff-dgD61nU@zoUwG~w<0Y0mAF{TcstYun<$pi$`xb%UXGLpo zwKm6in>q(?W_%a$O5ozMznQVUN3JNWJ+yDuS|(lrziQUp@(&5C_Wa>1)!upc+3Ois z7oGe#ZMpu82$id;OxowT0?Qrm-+MUopnMh6nJZ5$9=Q7&FYo95`&Q;pqIB$x>Q{!U zlMb2%&6Z}Boj-dD-=WPv7TfJv%f5KU>-}F%pGT%G+TQnh&)q*oTrQutuFtw@ven~P zO5X|5)a&;GZ4W=(b9B*#pC^M)uG-=mp;_*ctfe<~-UL7K@~dT;&n&NOH4dw(O*d-a z_dPo$aSLmO$pNEY1<N#pi<7y(g`WNGc=)cL*_`XyH@maFyR%P*-g$Lpor-GUl#5R< zvwE)4tvk#3?|#@imXmvagk^}TW-LAK;}@NCwUS%^=c-FAdJP|9EthRE__5SC`-<de zZJvXw52BN@)0{R;n){-u`o^UT0k2x7Ex%lMojdc^`m1v?cW=_(&3&Nx!fBS>tZi#{ zx_4%a1uB}~6w}z5EGd-V^IGe8++`d8lhe;No4bqKt+LcRch2g|yhgL_>uPfvfA**B z*OlC3{$f_+A_w94B`ZZ&1$~a4+ns$`R(*+2rJa`hzsDCp&-V7;wP>&Gw`84@=eMe9 zo2#fu^spW0@!#%p;?}##QMtAk-l>@VKKP@=>Qm+PhJQH|&mYrTS2oM*q)DUOnrn4& zVyO=A+?Y;xyH_)Pi9J#1dE3~R!R~N{i^rZhQ?i^iChK0j(yw*1uxzodUD~IR$#VDp zw6%U-JN-axE^iRuuEon%9-JYc+0>sj_u9Qxl9x1>#Ke0&oTy=uc;?{4wk%6k4$~6% zjLls|-YZf*3VL1=y;C~<n|1zFlbg?0OuAQgZ<Wx(>7P?%`ubaWZu?xfvA%3Lb)MWE zrrk!HPq5vyo%u@a#{4xVHf$FkWTkz+e0rMFrxkq<%qGq^(>x?U+2HbDg~<E+QW&z& zl~3I^Eo@)fn-jMepY~zey``r2T158YIvcN*8Xbq{39NX1n)|r^r>KbSyX+RM>#s4; zmA$@$A?EzzM_&X@-}aQmPOOxxYQO&A;O#dbrX(rrcYJyAg5Pu9)Hvff?p4N`zXY?m zY-Wkfb?urJ(el7{&xh$eaV6{C2t?k^5Q(tYDvf_skrEKWd8cO43-)VUUhj-ed31b9 zy(X(s`iB*1Cco1D7X&Sw=N+H-@wVB;3p*wycPY-U+OEhhKXcs)@$T6t&8)&AOH0r0 zDC9}K|5!V%n|0G_4awVbtGC^0o4Yga!+wra`}vk$`2Ayn*6e<ryVCRjmt7L${VA7P z`98c+!#wMCajeXo%NIB%$?#Uc<~;S6wPgD7Szjx^v1eU<w&rd1=QEiz-o@%C=?gAW z$}E*N4!NhN?D(}a@8xgi35#AWiEa~gTI6;%OyL!)Gc)@y)BIq^GiNTiHh4{9U9I=2 zK+X1T)sA`RmfA2B_}uBAFMq}OvX85Df_0VuORkxZ(jGp%{U~bb8Qbmo|BkjPzn-wI zN51O%x1IBDojCGy?#~TR^`96n-Co3d&?buWpkmeh$`jdFL=?)MI-9S>e-evTdu=YE zy2GYx1;e@fOL!vpeCf9dk7%hs`#AD?QLtq5w`lA0I-45R!;I(VDQ%OibUSt3Z_%WV z!&BlE-isfcE63C4o+0^o&y;)TA2;=U(tP8ge6%2Zy3~b>&1#Zwx=plw#G>`@L|J~y zZ?loy*{E3aTJ+PzsCMSNYfrw`TXFUBmS`Of@ok&srd_Q6FvIo2LP4`MmBL+jOfRNv z_z{+DK5e)9+%NBVxF6Ls6tBO(9m|xWg(1cf;h-r+3;4_-XiCx21U8R|I;Ch1J@}OH z%A(#9){rUL*UfsDl&m<waLKZyyu6(EFoW}%0|rkn+*J_L>Q(UAeo29esi~o1!IG9O z3zl4IFTD48-sk_>wfARjomcs;Hn#eH_5JUqwmLmkZ8o3y3aUG}WZIrEe){CiAhLDp z*@iz1b#;z$b#;t2Vq(e~mv}#g%gjH@()6L}P@>TPqX8}s4ku>M5aOtGzS4G>LF!%} z!vX~c4JAgAsSlpBbA0&R{ol1kS%tw%L4F0Z!));djO~tlK17N<l>5iAVzTk4wE6qv z7~drDF$BcKO!*yd<#127siDcypuvpeB~Ri0n}R$=%o2wV25?;ZFRyxI>70ok{G4`n z@$vC-6LyR1%RE#$e317;tI}LXHUWK(L+p<jepnhgus`AZX)L90$9>?0<g2gJ1})Y~ zwT>Jd57Zv8u{tNjnQPuNVCP^e*lc|uAeMW<YsSXEYT19)3Yh=N@G+d={^P&X{-!;* zW8(fvjtK^L?lQA{Za*}Kp)bIk!y(+YTl{7F6Sjr~KKo7ubNwH_b|=_bN||ro7pU9H z$F$<aYi0*?;eRvFbN4h<DeSG-yCBa#{mJjhXU}F#P2}q;C@<&WdD;4Zv%RVY6VpD+ z^7?)D(_eEn|2`B@zgA|U0sHa!$rcsWA0!Vin0HU0bgBKE*#iIW8>({%DV)*QQ_xak zYN%jRs7pxSH(y%fXSG9J<AM1PXG=B($QAH6JU%NiL1BgRlV|+$Pgy@TGECse_Yios zzp;MZhen46W|1D28_shU82s74`hJUI-~Q|7-}@VWG3xxxf5Oi4;s2k%&(HpHOXMq< zG5i1hFY)1LmM5)RyKL#%ujx<zH*j$k*fVswJ8&FOR?s`d&%njW&FJFF%Ha54X9;`L zzsx85CtXeKD`@!fzAm5d)%tn0|2i7}_B&fJ{9m(_dH+N`mIME`Ut0U4_2)rz{s;df z-|r9lS8wz`@@akOul?3RAIpk=w{HHg_Q&4hgzT$l|Jw_dWAmT%@@{!(p4RYpb{5yq zx3Re$%vWyzy}!ars3e)aa>nG_^?X9FmNI>9ws_$<G2!|BuAj2z|6ZD!Yw#>$|K9ZP z&n||FhChG)AIjrlE8F|Csp9U5PvR^)Kc2VW9@5tMkk7tXO+kl=K~X@V{?F{}eUY5Z z0SBbrtsMT;aY`OI&fTn>AH-n(n3YlHA;+Kj<y;~H3?FVPJ0x@%3%z<+@R-xQL-~{X zbAFv4`aiz+{_ExbEB@~7$Mq=>>l^Bq|4U}sV9r$d_-VY+?wRk`e_hYd&hm(z@$q@T z!v`l#)cZQ|?eeXk%4;jHxh=iFdCg3_M-Lp&Dp~ER7kHdjaOFvhzEa;)W48E-XVz+L zmOojWvcn~JyUC+tTkNjnTl4SPP@7<|?^>I^vD?-E>nfu6E$rueFV{cuPSt~@=?gq( zXs2;kO=t6NT)tgmW1Qg6mG84d_qXl)<e$HI`SmZ?vt3L$^-if*OzII{d&o;YlIv~p z@{Ab;6KqPhTb%s%H_u;AcE9@R`tq|2J~nXMXQ+E_U`gGmGNHyy)F3`n<-t|o>iO52 z+W0<qym@P(?Ukq;-297q)tZ!tFIAE^Ek3?=)taXp10^n9wQl#F;Wa&gpW%;L(#hzx z1}i3PT+Hy?UtX~)n`!^n^;(kOzRb@5_wDXtFV|dl-#gVaF0KiC=BAN0-%IJcql0zd zrVSaZvpys#Du(Y^kQ(oKMfjr2!F@4WoMHKMow8d)ZFo5}9Y4O9dj6+&*{1UwB^F6# zygH(_tLDZ!F_|uj^D&3z*g|ZciRc=B{`Rr<(=3gRC1$^_be38zy!0cfzsY;$sgQk3 z@-quJHP%hfD^2jyzwZA@v)fc@ddRv8PTB8Pmh-m+h?+01(kv<0z45WVE#S$v8)qa> zsmHqh-tfZY$(PUE%icUVrGFzcdY^xdmOa1Ev6w)n+1u8~<*#16P;giFjGgxm79aIm zHsjVCVYVQxr>aNwE_{jRn|;XkPFT*3^8H>xem~muy=TU~nss*KgQ<a)Ewk(yT^`je z`lKuKV}s6j0pU4c=lISosxklTE*?4YfA@x6c73eY`CpeW`6T&xhu;TTu{+8U&!V`D zPqXs2PmA;2$`Ja-`*+Z7S*h1LGdRCL=@<S~EhwuuZSs_?uakMz0&ivNeM?eR-lb@K z@PsmV>sIwQ%cU<o6*?|6@7o47Z(EzINqzG!1ZV0*|5@+p&B*q6?&}<99=%USN5Zr$ zF1H_k#i*VYcs~2@`*hK}?g_$X_vSu*y83gmq@eH_wS%_5wrtlC7E~xs-}`vmkIr)y zef;N-=iB*Dx6te9nWt5FY3s^t)~Dvx_g4Rn`F8T&`{pwz4d<E{2DoRLzFv0Z#kMW8 zzl!`l_qcG!k#6x`!|0=@_=Q(3nD14t8~h~K=zgr6@KL^qw2yb=g3Tl*))Xgfn5i<; z@5~kbL-)S#as0e)jnd<eo+Xow-Jgpr)LQXWd!B{Qf6K!)+e3E9eEn5dqGxT{e8v6C zjU{h(H^y9)aSX2dd)QEfY0df9GB1p6?;aHIKBN8W$hog)rT1oQ9T)goJTKxfo6fF1 zk%v6kZoHbly>W$*f%BTh`~4>g)PMcCIyYPXuEfpepDf&)$_t&X&b+F=n)4#;QSrX! z=X(RIuFjCtyuW@!^xJJ#3qq|U-mGRiY;|MH3&uWG*ZWyQPj9!&MVzwZu$11#cZ#c0 zf7R#C#r^D+M*?$#7p^&%XFPpbZe_Kg!Nre7w@++5v#EIZ>vshQ{-~`==wonPWT6{y zH}#+FpU92tD;Rb!SwCqX*W)vVZzugalP(dKy5)Jwk_RT)k8en=^bX94@)U5rq`AWK z{g<VTulDXY{4AhU{QZZ|a#gLb&c`$(pBlFbpEr8Yqxk+qiD0;w_5ayB1Xezs9Q69x zcDu@}m*4FWQ?FKKZEm?~%Jck^>@u};&$dVMt_uk5VN#s`?3VeBZKVQACC#Op-#l5@ z9o;5qB0s->{heED_AWZL{9RpLdP?Q&wb6Rh#BTWS)Va~3bnp7LIsUv`ZSA(ttzFAC z%ly@(<6GS2yW}5k*9dl4D<&>v>9fA{0Y`>Rdf56?bC_Lt@7?c`zPd)lH|AK?7e&>t z*M9Jn_6v4CnSHBwu9lwn!jRVYb27dg?aHg<V)gD4GtppdF<k7EYRKb%E5e>5ZA!1c zOhne&xAQ_}-rwG^P)Prah0i@RHgT<jbmpJBYhL!8o4ibfRYPIYrK0z);tBRyE+3dP zKld+t@qEWr&%<1^>RO6<w{E;rvt2bzK`K`?^|?ZaUH_-WS41l3)II#UD*S)Z{5!dE zO}nJt-&`>F`MV|m!!!PsN8epOH)7Fjk@;IqC3m-E-`u+`LuP5)l%M%qSN_zC$T@9c zI&Gg^;9<>$m)MP7sB{>w^Xw8lQ5#dEBlv6Gq|$En)>zG^`TvjB-Q2f$wUVq}YidMY z>9aZVxsPmSZ;3DI&+NFh{W;5pgc|)vmnw`-o%XsvWAl<F%XxPlm0hS7eRX5tg*TqP z8EaK%eYcOeWRwvY{O@zWLCA#+{TV7BR;M>iD-PcqUz{H;ba2_;MGBRtui1EI@0odD z?rFosHQQ!()qejRR&;gk)HJ!T;Zrt?E_Jb!_*=DRiBxjO=cxbxTvo9Ey8CJ63B4G> zm9O=eZ#}r<w~yECSij&(hb~pEA1Y$<({Fr#wIOw;<>xzn1wGbjmN8e~AKR9-x=($P z)nlt_6`7UVXFRr6KP&6tK78|}SMx-RgLR$j&G`<d#yl;{dceNgPQ=GDCV58BYd`Ii zGfMJQOeX29lU}Ura^_*De@)qp4~OD6)m*Ck$K`G3n_?BkE-Li3ZK>&Dt4_C<d+zxa z#k$q*-kbP0^Z%@1<7B^uixf+emwgw!Q<!t0)9PODv1lf}hzIjM)A!iNe@VR0HKpJ8 zs&ePv!`})t&uw(dv;4jB{F&#cerR`}mJ(-@ZLNCUA=FhH_ka2Y<=}(&ifs}@avsh8 z?UV6jQn|VPjQEIfmD{2QPL1p<x_?=9pNP8g_Q3m$sT0-O?%0_s71z$MWOsP?ojE*0 zBQ5oqy50LCiB^rW+LLoiQmcMBOlVAEjnhA#neeC4x-v?oEcBJ$<_p>jqsuz$y#D@P zfAOKvsmmw)zi7Pm5KQZwvF61q^=td$#Xj|I5`B95v(b&1HQY<jpEqqy+Q|R%+mxr( zOS@mYskUt`Rd@U=9HW-jJWc!jo1M>J-f`SKNB5&irn1tbNU@JwuQ?yheY;Vx(X{M~ z^ZOLd6+#p2*tMix_ZctdVC?&6Xw_!%D|27yJW-$6`BsT%>@LY!{-5xi^Wh_g*I~~# zW`E&-oPTcL;@_<9i!bamdc<qbD=}r0gLRYoXQj97A~MnM-@G>0XMN7QS8G-3%oQdb zyjzq)8nTLBZFs|;e_1emL5_OF+w{*ef<fQI1SKARf8Qj-8zj%S=U?D|L3_F72J5|L z8vGBOneb=RQvt(gX}e^-uHMT!<=<VaDH&Bg@4CY3X-k~{GHo^4u)FVNjrsm~+w8uZ zytjUo9^U^@@#~wlzprzAa$V`Bl3QkTg-7;E^oHMkOzsNtuQn+f^BR44=~?l@Bc|(D z))kA3pO^Aa>FmtDW>F%anN_{RFm&I1k1MN0&n@xYJyUpP$|}jWH-S#?_f{6D@0%T_ z<UI9I&C?G?o4(G@Vy-%%7bSD*3e#DEjGe!BNuKXn*<*6)#bbfg%lw?}>!z3XOb~m! z=L7$4Q)g4Vs0cTf^BE_NcCGOUcMi_{`}2a?^L_a<EBp@oGV2_e-`v_PVJ;^fxOJP! z3zLU;gZ#Ap=P4O{teCUQ_SL_?6VgTVD|aX;tG#@uwYA9SaZ1wEidQ0`bM5|n8QDe( zn8ynSSIvESXU6PW>%>C4nTr|MM!cIKvDR~u&eDn7rY_l-dwy0}n8$s-#%|LZvs0bx zUYIhazrV|pUict0d^h(!;pHWV3{KW)i0|J2Sm@`x&8<RGinsPTM|h`c|F^sRu1b30 z_scQt@7Uw2<WI|3&iVEv>5ySasVQ@x(Ff=7>${^r@O0;VyWFpKX@?}wGMV7=S?j07 zN2Z3yi#uJ+o>?<bI-S?sYfbIeEA|Ez`_=4<&x@X2X#DHUcI)I5zqqeVubK62^9$Pr zamQ0-Hy>7(ZSVIze0S5-MGyV6MVU71Z8O^M$Jh3I+v)1+{SzG}ziLKyZ;Q+4e`l@p zeu3P)(7Ur1#2UH=)pcL^rqHj~P{)(3u5a^j)1zf-pEhg|tG;+O`byAK?y}9H`!*XF zU;JBS5+d6C^WDw%liy2i*Uvh+ZPh%F=-J(q3ZJR?D=U3j&(O2%SMhsg!CLpH$NgS- z^WA#%<?j2$a*NwvUNQF0{XWUCXxgK<;;hQrW};DlH{>~caP&WIU^}-<@5b`LknM}k zt?`rV)%ej|+bPc)@KoqK|4s%E1z+Fy_gB|W@O^t*CHu%}gL6AXeI9Q78D{zC-rL@* z=~MPhU8l(WihuR=15SQHmuKf*Sv_B5Thw`-ZEJTKh-kdjUeq%8aIxUoi`z4&&KGkD zvbr(h`_F0nyN=IjHQQUjF5>w}j#J>0!O3sA52J72ycTG?o#DcRu9p`VN9Xp*{jxjt zkYl&F;yI-_2d}@jw-ql1sH9A~rsHX*VKp&Z)j#{f9-qf^d-uzH$jNA)!MNe<yB?!; z`-=_PRxU4Hf8%M`!{Ufq7jb*f<4e@4+`mobPVDmx_))lw;omOleR+##+wSh#d80$? zW&hD#u?wT_*(r4>e$?Gk_1b9Vu3six)s|OoA55xbD~UTCvB=SVrc1^5jn^*!bDF5L z@27t3%e}Qvc4b`^`1$ma#G1y#foVdV)AySGaSLpkls9qN?eAy8cOTE;sd*vLJA2cO z-YZtiFRKZ^dc2wOz_Ro@vz=9+W-kuD-hFWD>*bZRcJkb~cf#cGYxXiRLGM*;WnbJR z{hF+^Y@JT;l)rIIaTc3P+0)|0bvtA9wZt-}i+gy)GEI+mdH%pVH_NKZVqQw&$|X{M z$ret+io0if`v<1`bjBN$<jFobmtFJM;_&Xu53<sq3o?5gMe{1(_`eJO-VknkeZySs zQinM$mr}3n2t3`Wz3t_~#pPAM3r@aHDF1uN%KcZI{#E9;fxiv=beW4ApI$e*`j3gP z@KS`nvRmfup8Rx~1W~85?df{^wl3&&JzeNkc*<<;I%Bz|OFq5(@jUvqrF!sdpZ?Gu z=9BlU+P>Ary3d$w{r2khEOm1!o|<Rg3Tn4s9kkzKDm_OsHuv=%w~Eat^{XnJPwZ@a ze`Dt3Qx$H^KKo~`+}3ST(`);3i-M=}E2{;o6xsxyu9<i|=02Cdz15G2$ybV^Om_Uf zYNqyTYPT=b`Ck^ZRo6&7^Iw_$F~q6-YgW)T3(LJWOH8%~8#n~9GDhjCAJpRYdb(Nl z)U!yb;8W?%*NyL8j=h@hEwSpdl<l-?mmf84(=Xo0e-r&7x1+Ip%f>Gmos*td&3(4{ zsL3^({Eugg*9e|}6R4`$>FN;d%k*;7v|9G{3BM1PdZ<)<<(mC;@%+-G?G~PEUagvU zeMZagE3(-O?mly8`*-oD%X}R>FCW#fyKFt)*=*yqZm#7}P)w6~<{TrTZg+S_)i(7b z7oV^Bt>h~me*5894$sq7Q75jNJTwb<v0~!+H#YBD#aB#go1e+=y)S9^rpyN%O%;3Y z%y~AgXXS!o>wOFp^`}|e#b^Ihm3XK>@4=i4>bqIX=AAvA@<;F_!?EQC$A3+dSUTI| z(#MzVJ7&De&^z(DY`H;MUD&eF&;35%!v1Tzt(tN=-E4mPcEg)ny=HSZ9BSIEXJ^RR ze(t02_hn{B&EuDZA77t-S9Gr0c8eer`(uvr-dP;Em8)-W4$(V!_J`8jOEZ+bKH5EZ zPxrpMAzbH$lc)5qi|upI#2o#{Z|pkbSPBnMg@@`4_On|ecAfdG(H+D-^^uI$svWxG z1$tVmS0{&b^=#wnI-E4O?d*Yv$)&NfLPxh0d~BS-qkSbV<?6rE-NxPhKLn*Gah2bj z5!bkA$wrs``pu?~+D~nDzn^k)xo4i?<(92)*F1ZiJ9S#Q*3ZO#xw6kM#I<K{>(|u0 z&fdda{nYTY)I$wMPo5vj&mU{QRyp_nJbR(5f`$2NpUcjlHuZ0G7GKr-c6ZU5HB(R5 z>?vTbPTd;w@axf&yRIIc9Dadu>XIE5`+Ee-Htt|}@JVv1v&(ya!}u7Rdv~mVe_QBd zxm9P@_M8QW0{1?$?P^rNRw5N2X1Jo2%XWfZ?Z>_RBA4a&c6#!AOB}3^Elm%a%D72z z`?2FJ3yyOo|8r~Hu5p}W(Ur80ZU2|W9Ip?!I=R=dF<U1(nKfdYxqjXKjk3jy<O1K= zO({L%ZI<xd{daG6o6Vnv4a-|urk(b>yV-ZiN;6;gwP`z3_DA^sH~uN(v|cvsJh%3a z^vLW@o!r~(8d#%rUr0@BE0Zt#^0%X{cTu=i;LMqu#qVD^(z0Q(L#?NOe9mmOF9lD9 zg42pLS-dP%U6SATeec?GL$*q8)3=lr#dE^Xue&#;K4p&YgKCrizrM)aT5*2odg=A1 zDhJ<wjHo!FclV}EtbFp;%CInpZzh*Nq_&(|wEEzQ$In(?G<~;9y=>iS9nStMd*3>W z8?4rD?l-(=!ncL{hKsV$3Co+}Tdkj+=b2nTNBq;wSvvz?<}DKlkN&>kR7}vv-LGXf z8ztpFwqd$_ecKY<lFjTl_7_c!zm>cC;lu4*!mRcuC71ULmKN;$%C<Or*P&Zagf|ps z85OC!FX$-o>8!nSWz+P2rj=d!TpsE9O1C&QPF%M+x@xB1trv>A;#(4Y7EHGExu)eC zVe*$jDNJ+f8ouwkkK!X(%T04GoJ_yA?0oC{o->&fn-1Ta;y6irYfDgvq_ecnqvH|h zKR#dPc&Char9|O+PkGmF@#wcE`?b{L&+jwt47@N&;jOUIsn5N+!Je&0PR8Bp{dRWe zyS=40_ZKpp6wy3;H$BblNAkfV^CN@LTs`-L?cK$2gSeydU#nN|xvd#r+4}EqS#5{v zVGnus#;Qx!ts-(fm0`bArZk0{zgPQqrzz9tz4nx-cTM{p3_O2diOamYd!FUJm&W~9 z&OOWi^0>T)KYo9eiUa%Br;J*18sFZ0S*4-=gNLQp>}#`=oXWes0+J?*(s!+nExwf@ z!fWIjwkCF}TIVi#x$|sN+DG+m_^QnWd3e9Avbd9ds!y0Xa{Ud~{SylI?w>Dx`Puwi z=URI<axG_i*^n?<r(#lNSL37L*I8jvU3T$T%qPVz{;pK<*Q)%{!)qqrJ4+LOc3png zm=l!~zs15v_{N262G;v@WSTrbKYPdVdi&X=#etVib}l&eck0h=GoK!7e*W3>Vamnl zvqB^Ue(pZ7wCTNxZhx|r@TcU7w-yL*Ph>JN{$P53UJn0^Yg2nFBK@BfR(H&hJ^a;L zvBOTv``+y7>8-2FjFWSjYt=UGY5Qf({`)MC;ggKi*DtqfJx~wwyBIAMJb$%MhQM;o z$HLdnsmo6npV%E&)udjq`_k##O8(+3!51p8owDxmla}~loz|8l=F)m=>$)xb({wK~ zS*BVXo)R*<#rdko8MTPtd*kdDe5^fOSuiVf#<#4B&`<BKtrD*e71})SP>%Wm$#vZ+ zo!31wUmtzF^rM`+wOZVRsXHtz&h-2h5p*m$%M}^<dC~V(fqL)ag<1BVeNa=gbo<n| zlg~vy%BuDLA>sQnCdJls+ok;20?x0UPmf0Qe)_&iZN<sb@`GEw|Nq`JYucrfy~_o^ zSk+DQ@8jIpXWK5@HsMw64~`|tW=CZ|Yo44Y9{oZ{vxKAKhf#R;cZQX_()HJrPkep) z?CjeU552k47A!cm!gQIE;qATcJM~L6ANsCKC{kkIwS4z9#Q>oXEXQs*Cp^FSEaeGz zSIAu9y<YRDt8Kc^bK}!28SQr(=S-%r_Q>Kp^rYXtGhX9O=N<V|vvj5=_4wb*jf<3; z;5R*{Yk?sT+w;Cxr`DgFts6FX^{X=Z9vd#BgIc*$)m)3ePL%YXuu@`C6Q^geA^SAT zc((bvDIB%N2R2S!H#4HT+dbarLqPb9H_<-5{XS<|x3K6L?afqk+4aw-tlsbEyn7AV z>8|NobLIWq48(kwJbyVYd!bwDhcxZEa%~Ip7S89bomcE!`KjpEng;$Ft!beKfhF7y zdp4i=Eh%|7c14+(Ou3S}ch+gG#S!A)O>-?&FF#1RzQfb#{ei5hV(voktLMaC5z919 zOZo8UoVZv1(adMIC+_^aEoGAzwaDDaXKs~W*TQuh-LJeb%yc#j;T2H7xJ%CRbX8~R zu}kvZ6*VR?C5O+1>o1YGadPK`M6IY>w)fOt9-XhWqs{889Mf(21;RIsu78fzobu%D zvGY1n%PtAE{hA-1{iK(NC0O82Wc~ee9pOCrBRa9)E7SdYt@Ij?RQ`LqG5Lky4Dq>E zQ<zd(vqay2X4tgocWKG;%x6Itk|MT8aA&99m?Jkmw?81!davZHk{^qrW``Oa+|u%l z@1n{f)*~<ccTSnSQiaFLGvSiw{FunF1N`^Gj_*skZLw3$r@{Vz#j>T_*Soq#G(55L zdULaG&Y~QL*4Z~FY<?Xo8+7R)`y;^%)=F{8$7b>?8pxZmY+^kj{UxUG!^$2<W^Pye z-*y6<l4|0z;_s)LG;r^-IjMAhrQ7YVYgGyi-#ijZp8GK3TKb=i1fhfbzBEkU)%R}a zz0^;lXC?^gt-KpDH|~t(sVLXIiW5(n?~wA3kg7bfM$ytSI3m7BwN<a<+tHRijrL|H z6OS+af46SMYLO2n|LYkZti3OZZSK(++uWnEC42*;k%F0lsRh=#M*{=sxuitQJ(jbE zOnH6FEa;NzBqsg41|?jRF6qXCH!~VIPdDLE;<&VONzf&xO9~zw93Gw?9_5}td-J|q zrqBN$|N8f}HKw2KzSrLU8FPL2wGBqEUVJ`v^I)#RsRD^f;SKyMoEjOgUUN4v2zYex zvj`nYPBm>%idCq;{V{@9QI11HM(w9O2P;2^MCT^WrimI0)MVIJRPJJ6a%yN;v7}*! z3I_{ElY>w_^Fz5w4N5n-v)D5}F=iD=urwZD#ZdnFYlD@AQef%7Iu?r@OGZXcPQ!Wk zA2!U<KEj;E-Nra8VTtk)(a?)xZ<t;j&Rr<5<h^}Rfrquy#Jov={@lBFuO=a!MgGoV z$F|ArAKH{;8ErY39zA5;$XwUUlhGKfSnu}ua55{8%)*ZSGQSF{mzdvRW?I0b7ZA<C z)5!I)<))(zLrAGZd?@pUvgQN-n6m${K4AQ(!!GbZ_(%9I`-}U992569AKbRBAl%&G zj5t>@!<&VA0uIrU&HOK$pD-RU*d6b%ft#tXi@myWp<aTt$b<6N2@a8d;tY$`{us+2 zy2kvf&E<pQ0=@ldPySD3+nT02V=mL3tD;QKN+0UJF6a2#aAVQ8cc=e9FPfWJkU!)9 zef4UMGw1$YmnfT;_oqK0pxnP>)gyVHQ!U@~XEU>Kb~HFB6iyIeC}dZ#+t&AIKbORh zU5<6utaUR3jah!}K6sa*`ijH^hZVLgUz?xzGgLb=ENNF)x$xg!_P@<TP7a2$fM}Hj z=E8<UAO6jiO>MjJztrvSe)cQu2Fwdzs53Ow)&BdM(wH<uR_58G-}yh@Yd;G&3J3|i z^x&WIr~Pw2eJYSYFh4wm;en_KBcqUzP{WK47J(n<O{@}L%s2a|93q;=&#v<CmDtv0 z`>ntIa%Swa|Mh_7-%M}rJ|#Vt2S3cupLJAHh`uuY!2g+V_dEZqSNT8nY5mim_2o<6 zynOWO_W6(E5B`5_j$Np?uU<goQI%4l(uJ1AOBjCVuMm8q|1`_#&4PLB{=W@%Z3;}9 z&}_NmPxi!s7NaZdNz0jCZ(032I(`3}{yNRGtX$164hUX|e=pV$&cO0ZU*0Qj+qo6r z*_m8V-Phyrvi+~Kl4W!2?Z1;|F6hu;`1XO}_oK#u7$Ffs#y_k9Ra=^W{8?sr;5>V? za-bqZ)*goga_<_yzxE5<^Pqi4^&+!=qyO7DxEcTC>CNl7-&TKR)7LK_96aBd%LnxS zsr|P$pW_I7Qn$G+=k}>w<*WGeE!R(4{PkI^?4h`btX@xpmz`pcn`%#fF2Ay4?#F^N zvG;DRo0Fvwn!d`UsKlsYTK4yv8^`x3Yp2+`s)~0myRunl|M}VX|36-Fn9(VpeR<&z zm1$C&eRfS>;q9K2+m?B3UW!SjsNyxvFME^LKG-Gt@oq>GcL8gcpQl7{#zg<8MN!)? zB>PH4PMaX_d&cw8Nt-j5Y<NTDYj?Tzw;r2+a{H0M{~uz_y8ZwE_?jIbmhZpn!b9(` z>%1<0I$?d~NnKWtCG&avfcw5@g0dYJY&_XLM{9~2=iA=$g->~Fj>z3s<JfZXt<|-& zeqRrD9Nh8u+%<{jw9^~xDyKUxHsot}ixFCP=4I{uw)brkS1$HMUb4O`5<l0;N<;OI zsq6WBtKtKaoW(w<<o#I_ULfavQ{=Cx<cYd>)k!L9*H>`_vkD$n-S|H}=TF_z&qt2_ z`FW*bsiT>_P`%-DYwg^x^5Od*Ur5jvS)#$SbKCw!>6%>pzP2klX8&_ol#u@=c5-g) zp%=|TJ~NsmHU!R}Q0e`|>$@1!{y09_l9VmEGVBel=ilVte{I{VBP8Uzcy*m)L4VN4 zdsVZ4yi3d6*MFp9L(o4%p~Lmu=Zzn1o2@d};qso`zdP>>PZXY|a(WH-)PKhdn+(nD zL_$mdMz5EP(6#sYe7Lk@!3_Sn+h*7wV%qpopy$?|S=kp?&qzMSAa=hwx~ck{-kBLY zZr`#r_gb|o(tkR`wv3O@tQmI%Za#GDjr00Aabe%37i(NsOZTo?^Z3rvy%Q6DPTTot z!%X?h0-r81R?Xoq{#I4DApP|1M-N)UKNcNa?tEif&fyOqD@?)`++G)Bq`um;+(X{Q z>%i<A63ajCK0U4W)9<v~mb}O6ID2JtmChVB(7q)kb6eJ9_3Y$Vc5`<&9c#B!fBSO& z-8tFLefzfCI_=yXedqK3Py2$Kgw}?7?ysJ0wZZV^7f(wkz24vLw--DVxgO`+{<Zoq z$4my-+quGBXLa=tDSlBuz30x_d-s>6U$f1A_wB|^LpHs(7l%yv>r_;8)hoQVcq|mX zy3n+JZ(c`PkoL;h@_UtMLo>vcG}pX;6Vxtonv+NDm~Pho14~<5<!t{-dcFQy7&bHa zaKSm3Ip;Lz?znzF`rDGHSJgBM)*Dy6n<45s)2Kajf{0wv;aQ4PU#YFoPG2JTPOnVM zEAI7_Y=2wj)iX+GulBm~K2m+jzZ<5><}qyUS}T=|a;I){IP6*a`pThwdnT70xV1^e zHE4Uq9J9H(?JmzEyzS?h%@g|Td3HwSIcMR+Ci5PLS3Y`RAhzqc-U3UT-iM1Xz7GE< z5!o8}i0@dM+=<^?R+sQI3H*)wzUu737c9$vo9Kr{75V4BTG3l%!uwU6Z%<#sH1Uvw zDt#{f-$b`9txSG)x-4W%s<qa)D6RKOUpL$p$$$26`sHb6m-6yvdwpX%xn10Rw_L)X z1@=W7_TLH;zj)!zjk2rr3jfFL5Y%}Yb#Psi@A;gZIy>$tv;A)>@|c!v_<5^N^6F9v zt|`%B|F6WSSP0MN;hj)8C9Cg>-69o5{+e47zrVU&US<BhrQ*E5$)$*$*;yA>d9GEk zFxlW-w75s-RLew}?7H_^H6PO>m;AlS*<a_Wlr8I4{JYoX{zvW|nx)6XOaHblIW)s+ zyAsnZgMYz=g}HCVCv9>qjfsBNzo_#Pue4Lr&%KM-Y8*Ll74z-&J?W=eamlmH^}On} zYTJ^jUK$Q+_c<iHQ`5|zO!>0z-Wq}A+JfEUhX2zT&ql7TzdUVHicZG+)_-@OPS@9H zYuAjsenK@`baMJ9!(Hn8%chB3*?B0pTtj9@#?sW|o7+r6`<_<3w-Dc1Ul?RCu{JGo zJKNHibxAtY&$NCOop{*uZH{)K{>BP570Ylf|GRVTG~Y%XO8maugSD?G=lk<17ZR5& zJ$y3S&~bhVzthds84I>>xF2r2svX0fZ@2Z=o@AE1Q_NK!*1!8LXZ_+_@%Oh%ruIh5 z3ln8bnCCZUonAISXPcVt-VJhYe@`ZDi*<5SZ_?5|zHV(%&oAG#e;Q^L9}}PVx=F$K znQDop;-}B9H_oyC{OS44_`n^*cfI<|+fM5Kou58?(w{RAJ~qEtyVbMsoAS%=tBtNK za7$(XI%D!HN7GXbj$In!U(N=sd8@smnaBB_xsvDWGZWrB=6(5WYIOXG>$}`ou6^4# z#AF>cVq5dKD64AAI~o7^?^q*c{&V!nSS{iy(fpA%!Q*<|(TL@{(&g5d?0VX_eV5R; zhh}eeGWr7N3EO(wB`s`{d3X4R<muRB!6&VHdiU>qcx(2dC8<tKCksT*@+|AvGUu_i zjE-j)?=6*gHr>+?_wSmm@y0^=)Lpx8?@kx2p3bJ*@o&eM56@oY*!d^%9E-W;^4m&& z?y-`PDaP~P`F+1zcr@Z=(Y~4TuT$oQSE(dMO@Dmn!=cq2Z?Cun>E1up-+pLjh+EpC zxq)BG^PEo`ZvSpRUr}z}-JdgMKH6;ju+F`H&z^?@PdZm`ZTETDX|Z<UzXy+%3+p#l z=eIE%@@%hU|6HJZ{@h-tPqua!Rdb$i?l}HFXy#9~4uvnJauRu8+4hH+7C*goJ2r;j zJAQ-l^8H_Pmj_?_p?U4z_vIHkIiiAHCtq*bI{)b^Gq#ATRrX?U{EqqwZ98w?!Tf#a zu4(5hmG2j*MP{z8e-V8ptvtvpW3&3TQ@4)z=^NGm)YS~g*sy3r{+=DD7btH$WSw*C zR^GdoTbpmmuRXK)lE&A~OBuGyh#%+Rw12)x&~DA~iYsYe&d)MJuWz6IguQ%e>#UVQ zp4S)rP(K{D<D{R8Z}=VtscpsWg_Q#T&av)x@(tSgV&i=Ovz|W$XU=}V;#2r;>5X?f zmh=7XW3H>nDV~4b<etnvu5>$vy>Ip%J*vFQ@6zLE6BK?&W(OGA&0eF}?;>Zk{*Pq; zS@V}yE?YP*i99~-uijNRMMIsmihVct-?^lEbzvh%@KNsmm4=6I9G#c6H7IXZQG_SU zuG%a69smBz{cJYxs<*_o-3R}k`7!Hl);06V8511N)&=f5f6_@Ub81|P{}R33vyINr zu-2G=RC=q#bywL{Ez_Q@s(W^F{*;F|wpj`<NpXMgw|=YEZ@C@L!Ro5Zmi2rO()#m+ zN6{$QqtZ70@zXqQyRBaH*Dj4-A+-Npgw&-^d(=cGJ(Urgcye=~S)%5PMel!0PC9=5 z{@hC&18X|&*G{-<zAtT&xygzM1s?mUb85Ed_<Z@5_rdzN#$?{|<%vr_IcVCvJ|$Oa z_^E;6hfSgMTWQyAo;4iC({B9j&v<Y0o{x>~-de5ezow{EeK5LkQ}Yem=F*yNl@m{W zz9=N%6(?Bd72dCNX#La7x6%tt>I@hCezf$J&$iNO!M3WdjedE(@-G83KU~);`E-n_ z_3P*3;jedFU1$w%i=4JICbRb46wwpQtXG_K5Sqj$wC}Ii<oSD7o%!Q_oMYi%-`h>< zpFZmN|DDS8Bel%8;1J^?bA#fL&Xo0=cV4*`|GV_rO<lfFXN}7{liQx8e2ZvT-9F=* z;iuP^Y@2ROkYCtyv17N|@er21OPv|B4ywA8UgYiLdY?b>x}?lwWzo%tc~aIdpDM9- zsjkdyu?@Gw^OLW=N)-_Q(f9ri*Y|@~k_mnJKNIF}PTnN(?SR(zQxnhbdEJwG@Sw)t zLt4_gM{WHhUQK>@&PVNP#nlxVm(PF6D&10U`#0#li^k%P8SOzQKhC+NI<4~l8aa=I zDa$$J=GDIYEOtq?*48tkDsGDG`icen<DET>Bj((mn)o=uJM_X@yKC?KKY7lSF6!SF zQt_fl>Syic=_wDC3hu@1ziqxyaE8c(v;<Dp;zzzB8IdxEVN?IUxw<rKvN3OAj^>2M z<m8~~EScuZ-sGu%WH#CH$o#D8BSBuJ?M*wBlC9o4*Lrl{Q@tZ_Y+aB?MQw`o{T~;% zAOEz$^v9;WU$Z}j`IgnM+IRCnFt0=1<*l0cRHwgs`E1gm>0N2l-bc7he!lq6{h~Fx zGv5i!xYRvsbF0Sv4LTpo@6Yv^y0mlmd^-mJw`&Z=PdnW=v%j#pe^1%h>f)T(cV&TW z#vVEr`N@*$O?OxQ&by%!JnPo1AFdO1<g(4}#U9<)6e#h}DXl%(aUr1XpN{QD+p;8; zH*Os1nJ-^D?p6I1;#~DfS$Nv++jR~XBX}+UzMl2nf8$xVSE^4_LaiT&oy<y>pJbYQ ziD|-p)6$-q>!dB0TNS(HYaEbxsJxsZdD~a>+U_jY!{YLjeowjfsNhfw&qA|uw+#we z0y&3%AK}^fH(XPRhrP)!v35p5rIcBb-~ZC0+B0htdkPp&c*#{|eLtrd;wrP}+!~gY zCDvgLttvqW&tFKr-Tmo9`EQB*m$i3q_;4=r<MckWnQ`})T=PT&zSW)9;^Hg&Hbi{? zm>6{JeQS@QtxV5su0BKMS<jNEc-n*%oDB1yXr3=PF-dT?*<7ol<xG-Sp9s$M3TK%V zeQwf&2?BAJ@19tHc2_98@a{nK%JZi`8;hJ?p`s}iwm#}@x7k7?#q(3LD>BP2IAu67 zZCT#7R$P3B_}Lx0IUCf&nB7uteZQtOf7OjCxrPUrUu_OC-p7?LvbMf|kFsjQw1~!l zD;qSDe0B*&WxoF7X1?1#D{TYUCH+T-LLSP<J-+#|_e|rluobeqLTc2U-*x-ghjl6j z8mROo*7!}f@jDS-&*)b3`QO4P%1Y9FvuXs7FJYHkG)+udOh97Vin+SI_Z}A9o6ng4 zE#dKDo4@mSTL-jOJJ?m{U%2}G-Nt15=P$lUEon_wX#OBK<<AYV4D&nn|Fg<MO1soK zLp-c9s?VhdmrQ)T{qb8jv0FW?_x9X5GT+@g<i_V4)BQGjOo>pwah)^f_~njUXAf^+ zyT>{I*_WQ@YVtb@1$TZs!us=r=G~X4tT$hf*>~pKwW*Jz4hC+%*_pNL?94x!uG1C1 z1czPwQ<=5-$c&sz+F6gn>LU$n!V)K);a>K1d+QRm*+;ecXW#dDXQjIM;Ih1^Ng}r% zuQXlOq-?q%({$^`J?ck4-wd)%t;y@j{~X3@EcCr^aq2t2JJ0Rdw|-fj^}Bb$cO~DV zjD0FAeG)!JKCx9=oEV{%@g^wun@=ErrM4-5k=3l}nWEWsCaD*Wz54UWJ2oRj@aM*r z-Baz^rv_eilrXuUF~Om1<;Qs|Pi95!pVYJGQA=yi|7k91D<14=bM{>oYI9Tekm_`g zzPiG!!^^FWcs5G?^p8y~_hopx#e7%zb)&zX6C)Sijw<;s`geCiX%N>Eg=bGzIx5e+ z#j>+2>EALI?fBcDU-aMo9`fK${LWi7?~`Nq>U*}oO5+Orx`A(A5vQk6IYXaZ_s@L~ z``0-}U5;PCt(Doh=VRwp*0}bA=R6&cs#lrMyu0&W;>&9+DZGUz!=o>W1p8gK7Q49A z%KdWs)IZxTELL9Ke(lolJ2R|L-tH6FFoQWiG~6i8{7Y1e$9farLZRZA*^AvpcE3~V zO<ZdAbz|SNU$wD<Z35OZ_f7@ouQxj;ze!t=MaiVQzei@tw_EdStoA&aX*&D)>p2<I zZhGmSE;<qRv{G>Sodf4nC6s=!79Cc2n$oq+VB@L{hh8byuF|q}eOKDNc;=)SarQ0W zEvDPQxMID%p66uP=PP+zmG79nyk~XbPuYtXH7|mewVVq*`1#xO)sN3*$oNdi(|K3h zx!}&VF5!L6e`dGKo_yWu!o2*@nipS83f3{E+?-{;H?&xIt6$s8TmCio-3vd>=yO~u zVJybO6Zj!TW|xh9>Y0Ca#l~&AcM>@?(wWS^=c%nWYz{8HBV3a_&490Yd!En^e}m*@ zDLSTy?-tZA@zJaQ!^d6ucZHv$N^85YeL3%aolP-{t3KO$t}%bhe=q&O)tc2dhTj(^ zYR|uO=G~m<%cAsWemT4R-nGjvm0Y#+L!{DoaZ6QiRM;D2=KcOe>&zLgGoNuR6gZ`^ zbp6w&MT}44j<5fe`o(Rs9#f0D*F*oDljrn35AQwSY!+hk;p(QvPKNrs#NTJtPZWtc zXL$M(2bTz!TygylpNqe5wzW;08*|Xp`(*8dzQr!vg~HuzmuKs`pOI{8-}uh*V$M?^ z$;FF|?kPXL`{d5o&3{&J-MZ2{&#C(KCxh=^Z2#7tSzhy9%60z5L$3N4z8RX={64$q zxLNcCouHL7AKlkv+upA^P4%Zu<leK4VM_{rJy@}~U<T7GfB(4?4CX~n>rVVzxhHP% z(Wp<GX0BWpqw`Jdx8OUe^?J{bJbm-%P{>M#9Vy>jC-*FJ?{s)1HFI^;6t&NSQZI5d zWR4$Qk;MOg*8vXI6}@%UtKI&8`F-T=q4{5gwcbc&1-+_J6OnAX=@akbsjhXf>~QWU zW|wE$%G&)2&!66SWc+5I7Vkygf2X_nOj)+>R=bcZRy0SbQqJzorw?!3)^)I~2#tJ{ zv!w0b4WVT}oIcd7{WN!9j;hVhntyv|^jtXWwP$VdBc@GOpYJVS{jitwfqGZ}H4nq@ z{qmo;1jxoO+-@%NKV^dWDyINmA?=0pQ_F0vj|zOtX{iZP51iYt|8rLH(!>+R4{n!y za!q&XILh_<R`+X%ymg;5-j}M%M%g@_UdXmQ)<wLyUO2l_P4Mn!@p7AX=LqQ=d<8k| zJy-P~tG~1j_f#*~)!u!ClV5ms+<W^<;h8H^Z*FG_N?Pjof0;>+N=Xp!RK3YL7xWl2 zudeJ9)`^*Ac=Gh_RbKMu?`9|Im0pSCxmscu#5c>T()G6V`Ug4x*EHPiV&`t)R$ZXK zkLxO@$pOdm%?FOA%NQLB`_mQcoD;oPI=G47Zff*>#=G_Ii%#CY^<QOCg`?9E<83># z*DJOrd|kAzh~?jw^+~?BSJ+m0)qB=PZ`ph|+Gz8xv+Fjp{O3x1rK+;@{lUUJ@}{Np z*G_F!-5Y#e@AThI3ah8i>{wQ%m0!+!FC=u*iJ41|EweuAm6{-`Y;(nb{qZH6JTjdU z%%bFNSH^2q*(U$|^0e{mGN%V-`o+E74Tmou6nZ0*zHn8hXH4NX?rqi2*T>o2x+rk} z_pYOrD^(_muU)RZe{T2IZ$Blz^50fEJVh__*1@C4*L&-&tGbm|-MMUCN$^XHY6-po zNlrHJTc%Fe58U>g{Jux7xHc-`y62bfxoh98+;Zv7&UtmSEjs_EZhrINn_6oA!q#@% z{vM`!hR4U8kDUpUi{Ddu)PRZgd&NwB<!Y6X`xZurgTG(Cw=LfJtI{Iz7Vq;bZ}>fD z+i175!p?7-j#|B&<-vb5Cf9}h?_2Y&?dO^}Tcy53(>H}Cgr166l(LqqbLHgCGhFOd zGkhLbI7YN)-1gn}Qp0Zw_xztLgCFj;E|{O*Q0XYuXMOeK+L?trKUPPwKMwq3I(cr( z$8#U|JyBkm?Hl$|{`sfOz&*M5r&a5JXjk$*e4AJ2Os<Vc*!k(x+-h4Qwx{^TCQjco zrKo@9yT3I~)pwUa3+n3As1#kM^TE&CjCaACpzoXq4i!f1_J6p*UgBSv#a*qpjP)Nj z*VGree?DVA*YT(JJz@Q9+4F85r<rdzTd|+kt6uXi_pSNs`w<~sca7gl%#Yf?K_(zo zxynMD?ap7HO@eRV+|j7{lG1s!ZKm8!zeR?R-{d;|xw}JpCD(Gkz4lN09vW0FxVd`b z56_3G{Ii^2ANKgf+i-Qp*L6QiUOqank#jmtkj*#c+?r$ow}zM>?#xR&qslvyKU_P_ zIoptdfB9Qmwbw!J3-cZ={eJG`$J>7wwOY;ileT=<>GZoNa!XlaC!1fl(A3+T_4?AY zj=1UXox<MOE)$frjcwyvF3aliFxJjK>16hs!zPUprYE;2t~q;SyUf>ErTsl#)t0gq zYkDm&3jSKSfAyko)fyLSJWuWY=5ln$nLT@X!fxATMkw8m&z$6Qpmv!+;=d%@M>l79 z-B$MAuUYrJXn)by+os#4UKpvY*>qXm$o%TgWEuB;KlnV&X6dVlNgk4so3V^XljW*d z)lc`=d!O0bEnD|H!Sfkk*8A+oVP?DKe`Kk;SudXP<*30;)3%0lAv!<(1^FubuRp6f z_V%ahbldmMt*-lGxgw9R;dA9Sdiq^hB*!KFOS^#3)(36X?)i2Hs|vgSCHw82raq;2 zv%LAOhi$x9?0mZRD;K4H%5hk5+F5I<hV>~$=EZe?&Yjk@d6(Y!lWWpBiN@PzGAZq) zqIdOjCr8h|vvThChbMTFe@S$@{mBayE#8<VXXSM}s?B=-A15Y0X8#q73Vm0bIY!^M z_2msaYH>M#^_8e2$!jltTR-(@s@lB$Axo0|Uq~xv#8!UuxhX37+3r`--f2Bw>KUBt zdVgY@*E7X7uV-Rn3Y*C@QZO?y#=fV}#EAG~N-NkyCf~kf#&oHAs@#M)XYmR5s^14W zH#m4SwD1Kj?fk;mq#!FeK}q)IrP(EnFZU`hSX38ye&_djzd@S{Peq;FJ-;&T+nIUk zWt$EiTa$i5{XN5W_SFXxJ?tFo7N|G`-o6kcz`?-O`m@nN(Z<Y7nL~){pY-u$W5#MF zg@PGR>J3C}50-g|EK6y35#0LFprK7%L_vc`KxDFr$aEGaMkj{_NAA1qSgzu5@|^S| zh6~TwGY%vsu*l6;x^wru@S`U^E^j}7S8fnK!YVLjg23~?Z}}#aGgmt~lo>Q^lf5MQ zrtOws3OlRBAx8m&OYh|sE#$3~C%&7+#AIh@_opn6qi)CY$voov2iTiR*d!VR6a4cx zFh2-C$slWO{vm$p$HyBPd**t0qBP`-5hoG_0AV*m#SkMn|<JqdgX{tQ{=4GVXP zIb4_J`R#n|m-7SGKcyB7j&%p?TYsPa9j?IfX8UGY4wmxb?ae<O6Z{z5IYf9agkF5) z{!6KnvCN=7-o;vjsqfSF&)b?E-o6QJxxex@W5|=QjAbjh{;%R^{M52TS?~`B$CvP4 zru~N&^hHWOTfk9X%zStP$Da6~nvOOH6|U_3&H3kQOt{1ycCioNPYE&=7yJorYo5Nl z!I0<CL)NhHU){}3AO7`PHcn&+T+lLO#tH?7H;fFwo93|A<t99N&i60(5AWhE4z7as z-OMt9sSV8veF<0C;}{N|ljd=#s%mUz`gi%mdC_?b6b>*lIWfIC=qDg?Z~x-O2^${I zH(m9Ao<Mwqs(`A!Bg2R5ujBp0G+HeWBnIrSzg)jP!ofK-HrTuO`T9x!Q$qq8els!s zXi;IP5lV7sSg>G$ghNb>h`^Wg7FA^v_J8`pA745{Sw`Wbdh8X;zjHTzkC%GzC);5M z!~dS8%<h`vJP-bCzaY=(+Nf}4_JjYC@Ak+3tJnH3`m|p3SAF`DN35;?wiW+V{9|8c zZO(D!y*``Q&Nz=NA{mDRH#7XsU#0ou{EMt+S%tW~|GA;=w-zpQlzY|^WHNsNhkd{k zem=()4mAh)ssvO{{Or&A_u$z6XS`gEjb9&doLDc-_LP<7-*jHn6ov3Bx=jwApSN@N z%vxCgZZ!|{LD@Rq*%MYs95{FR@;QF~tJzn)L<AH%W_hu1c%N^`%<?0#K;;x`!zx3L z2OQsz{Jt8InApH@iu>K?<*^#K<t18`0^AuLcPzT~_>X=}fQUjuzg5tO{VN?B8l+jC zwf^A!qijB5`f~NGfckEZsXy+&zQ3JG;te<3L)|ln9D@Y)@|AAoWj%RW^JAOa#<1&F zNkV6TFLIsurdXe8&ejc^Lzml#<jAgi$D97*>~wd(b8MFi<?r|Ww0m`mH`X)!wEH5> z@3|UtK8f<w?R-(hWNdXHbMCRD#z|%#{*%5)cI4_B>RJZ*r037?DCd5^=bqlLdyO|X zPOxCu!RWQlW5(r|6V5;RY{hqB{w(9o>lEA1$WJ^nxiTuPN^+%if4zG>SLgn)jPAuh zA8k*RoNu~i&mX((`}LiF><QSsJZg>Bq&aPe;+rk=Eh-z@j5Na^>oWDmI)3rmXrnu^ zb=eKwNwutp!)l)1E=jD<zSOWGym@k8lE%Jwk0-jVx7zVyO-bDMQ<i(rruAJEXFOEx zd(!aS9#hFRTsc?yGQyo_s$V^H;g6h;mK#G@?D0$fZ!;@0Z*JWw_A4n_=G)_f#Mf^- ztIfBa-!z$}b<L$E3;EgX_J#;tZZ_J*Z#_%zo}CZ#gv*;IzFwL9!eIBBO5Xd=pZ@=| zi9aaw*c7JScXF%ln_ZDD<x00rTQG;q*ChMA-HW^aRjc)?zBXQIiH_unTy4qze#=9z z6W%lU%ubv?d?ovBz|>6>CeN6k;AtSJre~lu*Z9&c$J191noh4#k~i{oa(P!3bM8ac z$Ei0?aKGH3_Hqlm;(_Dd!pqC2eBl@N$TI)%b@%=|Tm80tw-FUMwDH=R_Ztef>0W(! z!J$jVNs3=6zg+apawq?z>EWM5>m=B3Pnd37H|710H_?Bd&pq8XxyJbCt_<!BpRDI0 zAKK2I7Hli){#WtqOu2Bo?OT~l>wQ_g@#_uzPrhvrQDu)%>RLFpmvfPB*Xh4g43ACw zTNaf&-PdB?UFE*s>G2#ay6cy^m^t5FTP|JVcV~ZSg@y*>i4MzW^F287Lo(Ypc(Wu3 zxy)wK7ObmtaLX{iD4=G-{n)*@Ea%AWmQz`JL85XIo9uGCRM-Aq^{TGws`GxIdqLj% z3k)Cd?>eTz7hL(_Y_$K6$Lfs6u^YeFefn_j*5l*s)?v%!O1u(posGEoOlkE}@rk}m zTAy(mE4QXqomw7sztt?KW!A^lvra$E%4Do)y0S0WM5Ot*%-q~Klg70Lhi0!{zs$;q zhwbL6mCse(BhPYPelh+2jbL-5g+5yLE9F?TCoYn<;NF)Oa&oi1_DU)KN1aVVTK6It zy}G9FvMf}3u~#<z!9$zA$KQ*#^7qYn)wFKmrY{Qbre;igto1sfIsA5*Xx_xxD)I_T z1!sxwY7YK*=GBkF{AKrRZtwhlv*AlSZ_%v~t<}X(bczpn_kFHoom9PKN{!V0AFg>0 z4~{)Q|I4xLP_$NRK+l%GZuWgM*1y=$y==nCtYx24?}ok(Dm~M!rY&sGAsXGLame>U zsigNk-OBcpo9>pb^a)zIbL*wU@~IWdzs$X~t>rd`)MfgdUN+CfV%O{31vAXzduFa) z|D?y=*+e(}@N9Dj(>dOE-g&uwJ#$ZRm-70$#p%6qfzzLEp5PnzXo1~|XYWsO?h@ns z{&(6532TX}42zUC%j2F)EU*l->snCjRA7@8cQ>p+rQpTgsRntG7yjhV+vwTtyWQcP zg14@XQR|zBU2^Vwj-7tEG~xXc$$NFzs>ISC2j$*8y^HzgR*~{|H#rLP7g=V#RJC<< zxzMIn*cCI;Z_|peD+{7}E{5G@K0eKZVeR}n&yb4Edf_g%549Kk`0`Ce`l9e1j?kt> z>rb-%(?6-NC-a?Yk=h#1sdMb(?C$9BoH!K~?je0|KJTwz>*^Kx6`!0~Sn+WCrnqF| z4^_Xm&JpeS=;)=}6LzOrc~08zzO*lEJ65kV`FgS6YiDG#L(xrljrW`6Vt&5l`npZ~ zSG!K0QlSh#&uQ1RHHTlX&p-aGe7XF==)-HCN8I0ZJU4bu^hCRcWvV&*TunB+yOeOM ztXm&loN6qc`?c+cVBCWBd#&PTtcYIBm1~}&Il=3O@9wXg+>Cn;P8PR4FBCjMEmrGG zn{KLP?t_q2)hm75H`>hHqo=-I=z!EyZa%J#d2i&WoSyIZywYnvui~!Hdu3A0pYch@ z+*&dJpNVjQ<BDLpwz5ZO+I|FWET6^hkUcN@vgRVL+jpu`H|?-A6S$WdJ}<X)r?&NB z?}oaPyndaAWhqvZJ5>K(>HYR@o90oY8`3K$dzi39B)^a~e7!sVahd9+So7+x*zKjB zqSqsryf6EfUv=KtYlqN}iN}IXSE&Bp>3va)_gpSRP)tT2OR>6&Kd;i7INj$rey`R# zwP`~uYt!`Z+8O29m)(!f;}w^F@pe<*{@iJQZvJb`-e4Q|^WUGmjm*ba&s*zfweOi* z(|4x~rjlBQZJU2ASkdaYYsb(2D=c}3{a5McWma=<?U3u)zdNRaO=@3;M0>E#g8f}* zF9vD<yRhiz$4`q4`?WtCZ*!MBe@E!V9sRZWTee!*Kj)L%+564oPI<K5POBV+nVi?k zt@=*i`FN{yb<vW<n+bv&o8J_zl~h%;Oy5!YWAeT1aM{ajpUd5~KJ%B0Hody^J?8ba zstw`1eHP;B$JVw!yXn#J;?wr~{CAb2E<QTe@qIyK-op<szqdbCGWiv)J0(<*weI{$ z=3pVQy)#evRmiD}JvIKeOv}9Ck^P>?10L7j+0PJOu`6kTmBTsvgF8Z*)7|x6XkL3? z`C8`vh810`f>UIK<dUC1k2K{FI}xnDuiN`6=be=g@8p=xw2bZz)vaa~<-c6A#CYk4 z_>X6{TTc47?3B=fKt&^&%w@b958v#$J~>Rf(&@4OhmGqB57v9FKCYy+!P4y|U-Etq z`H$007krvnovgFA_2Knp+&>$)t_ZidSo;2Y#<ST^%!6m|zBTbe-z~$f?^&m1xGmh* zVffamO})zS&R6{d4?eXB9iPN!B7gnpis~NotfrVp7O9*9)6#`))f3k^wEdJ{_;sqS z+NKG9Mw=x5ch6=2TiZDIs1cui?4O=Z^IN}}%-F%3lfLF+#gsk^O}>jNu_|-V?9V>A zPx)c}_R`ZDQH81z3&el!P+h5S{3%a!PUCM4XQg%bi)-BeW-{Jcdh3VB=dL@~mo8|P zpDv#LrR{j!hO}>IB^~>#_(D8iyWD4Tw)nCuu%Dl8e~xwj^9qZ^d;7XrpIM8D>`?4F zEzaNjI81Es{D%UiVJ!Xr{2PMSOi29OxUlK<`y)1jXa5S_Yci|7uKJC6{<-ZJ7GHdH zQR~Og<`z3&`P$`A)8Fm9({$~LOX8o+8!w(ezKcJLbBj-sT>QTOmDP{kJQ%l1D{o0! zZ1E&rbE9vL?)J*H|HYi-eRjY6_imN`yh09X>4`mhua4)7&1-P9H~ls1b<XU47gjvr zSo`FZV}SAg3tKl8sa#97+_6cZosaFy@^t~VXEz*sBKX<t;emB`LhAd^+9&;*cWm~v z%FRl*4&@~-*(JYW`(su6XJ7u#usc2Fw=2&>ukTasTU2-N4qsgmKCO0L?8z^7AFs?U zlW6Wd{Gr=pxq*!8p`EK=@|{(&FMo4_XG^MgQUAIOLyJZIc8lLk^hn$8T{iJiBFBOp zR=0;mzB;GWt-oH$D0<&ME3<5|{!EjiANmn7JtvHHiXI;7TYv21>$IL*L7vr{gr;vf z7S?IP=XdV=nyCt@_jSGfR0a9x*XIbmO0!!WVc7ReYDV+4I{DY#D?E=hK3-DzW?y?; z#)YqMLl%5Fza!_$`<Z!xcOCZ1t%-Hnb|g|Wx#q&NFfMaB=KjgMYdG?G^QV_A@LoDW zW96fS85QTAOEx{3{N+_!Pi57lgnzb-Q;n>49ekFUkZ5&Dp?s~X*xdQ8_t<?N_;_FT zTq6F7X^-XWXLWUJ1X<TlU%fKcpZ{-W@h*LPQJt7w>-=|KUwI&-=;w^DAx=9tv}#>+ zm3qH&s?LI<@0AVb?`BCS1wMS8G&Ono%X3x}pL0d-o^9FwDRpW}_FK99WB%=(GsEt$ z_31K6IBw)7s_G}hz3*D_p6`s`ud=>hlNi76##6W3vA@LUxh|dNc{=vqw)q^lq_Xzg zF5dTs=iA<})W0+R#RK=)pOX){VAEzl>DRWNUym!=Pi2H@typGet?BbCE_AxG@mE>3 zcMrdD)#)_K%CEU6(af$pr-+-|fAe2XN8h(awpMRm<w;ha)=xb%<NofYjpy5*99t0L zvdlhmnUBcTviy1WKOT75PA>Vr@V@W5KJkUITHoplBdg`>J^yoB1ufsV!(2-1OWTr@ zp>cP$y1Ju&w^{7CxS`<p^2%RKYZ}eoNQ#Ap9pb5$++J#P*g@#Ht_NRl#ov3nzi%Hr z(7rmk)>ZPlY|rE^?xrdB-^H~mf*f5!6?^%)<$f3LkX4dPlYHOmwZr&!$%5&xw(Hj2 zd!ljiWZ+u+$lbFwom=jOoBcX>bk#hbGQ}LV#eom>cP}UrQCeI4`HA0d+nxyzBOBPa z?zLRbbNUeTySvL}n-{N3tvh7?;p+|QE&UA>x+S*u<{e^Do&WWj^y)<dO=Y`WPBFKO zGoCs*#rdeMf31^v#<fizKO;4Lua(WooVYXm-?}yH)~yLsV!t|N#&U(@%bM0-Rax6L zW7*51=ZD4bx6F@E-C^wbb#?rb7y0Q&6K<`a8pyRH{!ZqO3dj5@k1j4W`pIzl+3_Bm z%p&zS4Ke?jznyn7Kl_8BtbS#?@!ZOYg?Z1VrwM$VSh(s}^PTDGGIv7m+n#aid3WI4 zME;j)k7CZV7NneRy_2!yQ`>P_{n@MgFI~IFo&V=uabC#nO}cC$7bZ?I+Wyk`85hG% z!PWcDPVckknrgE?&1U{QjrH>)l+?xNmYBYr|8jrI-&4QbW;J~az7ezT&A#S21|8i; zymmC1&CRH9t7Gf!jkfma-PdlGz23s#>*B+wQP1u=`hPE*CFRI9{ryj^C0kVHUR<Eg z!IpAsqSo=RyB;n6B37<<Mr)n+8u^`OJ~x-N#%wj7b2h%XOZvmst<fK(UMX?d{@Qy} zdUg9c(eUjpr5B{O>IjtDxmCq6dWLjtoAz;*^xi$oZEDW1KE>TLKkdq@8nb;DlQXZ% zboV@2nKRqyJwx~8(@ffym)8|2@RgL@jQSenx9)~eY|5NxuWC9A18!fR-@h~`U88*4 zQ}u!?DzD@BM;M1EZxHv%jK~j_=E(TODQ~dBZ2p;LijR&~A6ymmO)=It^WmMAuxo#1 zZs!{<p6Qg|>g&48bWQbwctx()Sr1n^gcir0-}!E%-`-T=Wxpnztt;tJI=51A>i<(y zl;82aJN)v?l^wS)SZ`BWk)N7+Fp{@#+xzU(YqmME?T9#%c%%DZ|0ySr>!mF*vfOX= z9>hsKI&{9-^V{q5d#``9)^9eQ?!#QPb$NJ8>T{uaQ?uts*G@E9I&qQ0*EFvhr%9F9 zb7EiRwJ-%6<@v0XtYq4MZ`Q6UId+=^15Fy_|LZor5_o*-M%L%jicMdZM84tw^Zw+b zukVwbZJf7EG^)FFb>bcAh2Od)Wc$~0-kw-n@@d{y)_}fav-eHfa=Y8QUvK^M&+IR^ zI$h*H#Qi1c#?gr$Nnf<}L+dqt)h8b9KAGMVl)raJ#J5*V_SKpAc)$OaCvUg+@0uSw z{I&%v?+I0iY;`>|V?Ue5=H}MAlb-{F>#dkP4jY-oT58q`RJGlRw&eQWnjNwBY^Xv1 zk2_s2^**!Pp5=Cw<6-ZfG*4{S8vg0mKkiY|t^2*|)m`1@ik!KIN;<#4=2Y&#f9_g9 zKG(Lux;cwptX;MI@-D+L{mvI0*-jyDGSvybPR{8%=N@lKz1ns5Cwryj?-tgp5x4F| zub!iK<;0~Ay`c;bZ&oP2d82VW>&z;D`Pw62?g`)hsd6jBT<PDA=^sOv?_irIdqsF= z!Q6Je@7oLO3R>QN*~S?*@x1Wf$y`ZFcD0{8tbbT$ObafOn-id2{Z*x?`HqrzOQ7*B zO|H#*^0%+pUDG}zMo;hhi%_kEw!`nbTGz%KUkHmgei8iecW<%&(i3;4NGw{w{cXbg zz5FUa_Me}&?cI&bRoV>|O;fEaQ#jdNy%*hFC^S9oY?YC)!E*1I(y6kZH}g_n)hJC{ zxbdCDiuos8JuaTz^dorbx*a|%R=*6t{^-!BvM-67v-&=mALmgG*?DBjUH)G0`)6M2 z*j{L|-l3!TtfR$qQ3}VVcb6~DTk5Z5dFGOghHAx>quKtYW*ZAO$vl!{`4Tzz_)b%M z@s33Y-`gvn%%0o5T&HZo*JYJieR7?t^Xk4fpJadMSGRNe(K$=+to|Mo<0@8{zvsGZ ze?-#XJzc8HPiwj=eyh9_alh$a;h&{bnzq(8<yCflnC_RyTJvyMfqsNG+w0q*U+WhA zo&VEpSHuJPZSo&x7)9P+d#jE0qi4V??k{5bnb#YgKczh1&Bpe9d6v{WgGn-0`AHE+ zr`?!e_NeZD_TBYcZi-h~R2t8^cfQ%PsAI|dbt^W?oL}3!?4rhxz;)W;N0!Z9BDZam zdxuWujPJ*|`sY--+}26hZ+NqKUG5?$OBRv8md75i+NYYLrTBP;T*yB$2cyEvw<|Pz zda~C1xf%2zNHFq}@QI+P{k4^IEV`%L8)SG|t`&Vfr(Z7L&n@z}DZjXA`O=ub6N~2S zN<{1a6qI_eeShNtZx_=;-&aKFzF*j-_VQTTl|OecDnAeUlg7QVv)cc{or-X^xx7Dp zbWaF%7#uTsSGZ^GPPs{XxBt9Yy!q>%b9_;Xl837nYwudMUGm}OWMjd_JUyw`Vg&nU zN~CSPH|x)%Cm)@eB3`e!b6)f5Ii<hJCj?E7&wsqC%VJibj2*|_j-yxq7L_G<o3#YL znm0%C!j`CIdTwiHtos=&=zL)Lvz^kcWlxVQ9_C-O{_B22Kdr1-u{agez@KTq9@M?k zNUT_NY0ISI>2p6AdLLO<)O98!C1LRtUA02_#_#6aq?aAdQa-JGL1)@kPYDUzX|AS+ zXIy)FGfOqBCH{@(rQ79hmrgs{cb+<Z=zQCw-igfKUPryF=grl->#@2rW9xf$KEwH+ zc?~z4cd5+vn$@%GhDmH-pXD6CBD=6YRkg^&cc=Y6*w6onC3N2#!zkg?+|~OJ$wpj1 z`*Gf?W%(kz9{V;t|6h7~Mds7j1_g;T5B>WWdQSGVO#S|kPb9;9Hau9ZdR_7&4?FWu z=je0$)QcE9FO~oGNwxA{Y@WJLE%g15leypj=9tC(?)v;&zg5n3C1ZfYub0mDtkoZj zG>muWJDq+RyYtfue)UX?8a~z;-f!b(|L(uA%l+c^NTcTUmV5fznKWmnPHWlE_<DZe z_bq$3%&VMR)t{}_t^Z(co>Ot}yEoyALd~1rRVCg3zMI{`=i;wgi|KY;e!`xwbMN!+ z-~R0BhBKiK#c%xA|5-XK+xY6=G&#-lci&3g>o5GSQ+!peLc3k{I&WJ2cP9&7;akQc z%_e*9y-Q8zuzhq(w7^_qM`UD0_`xFo6$iQXgC*zaR2{y&JD^!(tHtvLM;ETh)%!c= zXXbIcsQ<igpJw(dPSLr)^gY)E59inYZ+)BHHVJL|H=}oc%;o<R`CJ`yj+}dY%yjA} zJG1v}H(WBhLZW6%`JHn;D87nO%HU^+iluAz9tD$|D#jWTw%_eqTXzKC-}2OT$Gh+6 zCwnU0+4b*!)DK5ralHjsyo$fwzS{r!^W!I+?Y}RvKT28o?E9uy>+|l-fA{%R_o22c z;h{;FS&CBg-IF$7<5>Gf;LlepCVS7~%S=a~PhMaZA8#qklDFc8ZGumHKy41ok<7!X z`-=}=2t4v^@qEGj&iU3a%fgI%e?BePJ!gw`>v4vCH&*C>o%*uwUwJLx|D6e1PbYt5 zFq<fmQzL!#_Qn{=Bgfx97mK=QbeDDBn@8W5-QW9j#>bf)&XZp(mHltyxt)PmHR{bG z`ACU2hus;bCoOUwE_Xk%>wJUz>uO$wvaFLIH-sMi^P{I!*#6*Tal<#2r_UXl{(6&$ z#e$ipYu)`llXdRBee%fo@@n~aDp&Sbu3c35!}8O`O$j${Yf4#EulOP}f4~2R4@WjX zO<i5qb1<v!k=G6LL&o3N?XI{ianCT|xW+p7-i=EqspY$UIm@;C!OEN04>C-YTsB>V zd&x#Mam72aDvOTIJ9n;byL*NED~l_~j;n`Rm|L=aR7yVO8-M6poQ3n8IP1@kR_{|e z#UizLTjkChOl#JEXy|I$aGm?5`Lp*kWG=bovc}}Uu8{K#Ok{SR9_m%L;qH%5aSUJT zllp&s3i{<G5pHbM8~FD7Hlej8cMhL_m9^+W@$uV<t1LHj3ibbS<mNGq`y$i5Ow2~` z=vCECFRn`bJz@83#zDEMCH8W2FTOnRpme8CV^ruluajawGEY2PoB#Ea)RFB!&oFau z?(WoH7BRJ_c$I6^msY<ObMB}wzhgMFa&oi2l*>n(?5d-(zR_3Jt5_szRx)q;@%GP_ z=lia)%COYPdkIM{oS)ixGU3yM*9R{K^W3Sp9h1aV?7C{+tls2TJ04%I-Q)1g-)|b9 zr1Al#lV)oJ1clc6o;<K+)r%Cl#I@EFAE$Ed<=ySF*(X<R&Dp;%HFbXEuvn&q)?P}! zd9GagRr!=xCo}%k99nwcUb#5^U(C+xy7Johz6}R2{gK@N+xfSO+NY|b+c`@sdriHn zT3;(!C+#~hVOgp3nM(bH;u}u_9Q-?k{@+|{dHxx%>da#go+U3_leYV>%2v5WPlH?! zY+9Z8_FkRVjJJ2rTx*hCd@I)O|2~F45uU$t{Z`y`Fz9_<W+q*DUfEQBa<OBed6T@o z(Iy4|?@h%FkAE8RUfUtUxaITh`6}1re;B{Jd-COxr+Zs|GHuJue#8}h&Hl%X6X)X1 zi#h~T=5^1Qw|ht8r@azIkM?U$O}~A+#6?BGU`P6Fxvg!lx@^CRb{u%_d3TmjRQ7zy zpYoUU!!B~A=A{&u6s0ESf>`-USzIO-=GZ1(%?ynYldgt_1_s73F7ipPhK3f#CJG?H zrSF!RQ<7SwpzoHGSd!|Jnw+1K%4KKA1+}f>*4on4kU6)f>B`-S<!*oQ?%lh0K^cLp zt=25O@80oo`ZYXY;XLTv@Ia5TiKSfb`JH$BY~Q{9zWn~*z~q|hlQG3>cYf2W%JP*p z(~Ryg4Ul8{mhd>~xd__|>s=AmyH-0MSe0|jq1ykz>WTbQ=f$ycZTVEt(vZ5=rr{6+ z^8#H5u?*%1&)5n$IXM?zVop(5w=clGnw_6v^1N+~#@yVm?RD#08P?SPzx;XD%Xb<4 zYzBMkDi|FF!o?MCJQjUaKX(N)3zLmZ1B11@fPli{g_%p1tYb(B3b@X!!En%Fg($~@ zmzlgpTNqbZ-C{WS&LOQqmW7Mq?_-7yjSac7|Fh1{{VVEyN;ZMDpq%xV#lB^XwK)yz z>UTyku5(z?y?FQU*X9Q<$|mq{WvbqD?f^4W0n6<Mo813OAF{SL|M5K`%2nB0Q2BLl zQ>N1$+dH`n`qs%cTwgV7)2IIrUOr5C`Y}AW{CK!IL(+GtOzw>z|EylRzjnRB`Z#`V z_YKwum|r~p7_OVGaNyd-yP_#ie@FcmJtO++hdHl*x%-B{_L3Wz7C2OEuh8Xq@$Mhj z=dQokOa9$df3Uwa|LH5PPk*hYKb2ppFD&>{z~1!cM&QmJ@!7X3_FUUm&a$}Z&sGhu z1Z$3l?$7dN(f-%}f2m|#SkK?_a{b)II@QEfZpP*s#%&JPA$+AB$Fn^dF8}vS{Z>E! z#DBKV|GG^7qo4f!FZ?~;^jH4$AOFAG{ny^IN1bCy-qTOJ82(ozFs#?-VOhZS<8?1% zq~rhf1=`~76W;%y@L_!;+kyHCf9fA-R7ULObLPtVuf?Hm{oKB%@7<?9JBMgrcYbO1 zhPk3IN`vZee?73xLF0rVPfh5T_lZn5c34>cKf3(&gN(;K|FXZ-{4ZcUxb45!ztAQ7 zR~Bbzd1k)Q*zo7|>|f<mo~`~Sw`<?J^+*0K7B%g7TQB?X(1dAiKN$YpjLTP$Ht%O> z_`h|5f_V6Y{{e6FCDzr?ySm0^L7yGN<m=NccmB)!V_)~*X69e+9+?|#Nx!eJdr=Y5 zm>Yln^?siEow+s(FNBBw-}iAn@BimN-@CFi)i#)|=>9AqJ+WZ<nmalDY>N&(ER3A2 zUmNq`u;99>XLqHlDwa;T_h8Kn-i7?r`o9Xk(Vcwg{QTPIe6jP(rrdwm_eHQtqT0AY z{pgd%Eoc6!TCC=o%cQgWy~P=A!%h7>kN)_lhh7)#`DyvJ-2C{~EoZgmCTgfzS1vfQ z-29B<mN-?#A0^k<&2TiE>D$Q?dqdY?2k+8$cb=8|^VUhS@2{1Wd-b>Z#(w8xK@&Qh z^pjjgrqp@NefBV$b8pVJO1C}Vg+AO9xyW_+AIJH+Dc9u0Egm_RW|^pbJt^;)W$|mS zgXd~t!`g4<YacW@_Gis?a(b8l^r&LU=TGxzsPErW@NXtV#GJT=TNYgSY?!~r)cNDt zYik7~KTo**=ID>`GT|e&tIBGUDz_h;pYrQj@{jF@G&0#$*~|WyT+q11@&DVK4t7zN z@45%CDOX3Ie%`WRN^D56_uTjuPSY#bd`tY@&?FjjJ@heG@BC}bRos(iq+4c%PRctO z9ucxWB2dY+fswH$PmyU^#x@3pgM1}F)HPR2{t>XVKl5dkPg&Tm;;>`h;px!@^{e-? zE-i@=+Q(&Fe}U(2Vq@#I85a5f%9ApuEsa?IRd<n6lmowschbLk(@dZK)!Qtmyouf8 zYIf}7H`&1j;f1$0EUUG0x}R*jYi-6X!@XxW9&%}U@NrGZd(T&0Q<j?ieDw03#CN7l zrlZdm{F(T3dY9l{*_%G=k~cnTT&#DIeSzP7-$(0jIDaszyV>r4;qc)U_Du_%mTx~{ z5VdWO#NSAvd2i*v>Hd-sm9xCyyTk0=DkFgn&yT%r)?&VRVup-|{ae%eBM<wRhD<UD zI^WKJO+%XJ)`p8x!3uldoG(}<dVP{n@m=1mh=9ZPsTnSNQqD}9ap<qbjwrEr6Hf|n z?~U87`7*5V%rEbZjt$G&_H8!*qiM~1agS<x{C4vnvVUeix?H}myfH}m@vP_<ZDO2k zYTI~1Wp0Q>_>`DW*V5YcdEWDTVVg9AgZ^C!Y^&GEs(bceOZ3jv)SsQDJFibx@6}Bd zZ#q^isjF06<?4Ms=Y@LEC)0x5$bOfcDRF%-J+>;$p7AU?NSpayUd%+b-(e4zgj<*G zRp$>{YP7Y?G)v}iX^(H6i}Q`>OYt9$W&G{@`=?a@WJ&4|3A@t24}*B*HlKQ+y8B7N ztt+oH5(ADlDqor~vsm@7ZTF^{l5cMv_?K22x~tzXah-PhZr;XiO58IQRhBd?^)>R> z?|i4WW#%`Z?>kF8GL6}{U!8a1N$jbI9mR>dt{j2x2aUTHrrVdhbIsWPs;ps0!hKb~ zrde(>frizmz3Vfz4|}^LU4L=rlKeeG<s~;o#21OU#A}@YT`D_8V8gl3jy`-VmRTzm z+)2=`Sb11iyzb-cIa>;O7A$_BsBW?G$CC}cd!oE&GzLrv+BvUld(-ZPGn=~7Sx?*V z&zvBp*;F3Zp>cxeeC>k;T<1jR-~RNe$=+bc<5On5);T2sYXv5RNuRo8`R}u1;Kr5a z89M35ADomfpZ%t*(w0|3K&RuF^xOh@`!0908L>CqS4Jyt*>ivQ%-X3!Ra*t-^-dJ> z47(D%Z^`_e;!WKJS68XW-1S_b9yW3IT`LLgONSD!7Ww^cX<I2;Id@udSVKy_Uu;c4 z-2b=gf;)e{+S#BfE3`1ol+o~iOT+#}y%IW1zja#=31oen`EXYD%8-569Ya)P?;iF@ z?rzd^<PW=eWY>4Yv_mnsYuBCJ)Ba)23DMrtR~HX!GM?JZrg~J#YaiF;&B7lKRBTFX zJ-fsEz~_yJ{c<XoZoS52ezpHj<Su6?E90LB-BlKEw=A(}GK@L*HePU2qP^p*iShqu z+zeNn5_Kiy)xu{tB<p<Vf9CZIp60Li!cSFp?+L&8dtYt4UTMZBc`s!9x~G!A(;i%6 zx%1~|<oCW8$u8c1lcS>lFbX$%?h{qrBseD~<{0C))vvv|iz>CB{rNbd`QXf%B7E&% zBDUT8uHI#Cd4umc8-LHk$DL(nJTK?FJ=?O{JT}bj*!6RVS4`Rz6m;%|>Qh-sPQyQw zHE(Ap&)__HZ|=%^-fNTJN%247IpFm_M6gUIUbVxd>>l5L-=h-#!kmp0Lma-QhN+vp zxYuPLfB9i9SL8&?f@Ee<J+s$(D^q7RIF!tp8{zJ_WU|IhFX_8F>+|dkPJev9qppJg zmC<A-`TqM${@#f5Qo7?av+Z2cEd}%4ZGj!f0yn>p<ed4uH7KNAk)!D0heX#~dybtb zXJfFq9>wSJUb~{+Bei_Tq0qjIKYU}dZvN+7mU^^g_W6j-Wox4UB`&&inSGAy(V|Hf zJl8GjYnXoeIrZ}IdV8Y&hwqfrFK0bGx5v<SyWSFeBSi;>V9zBNzOt)6KTz?)*w}2p zrFLItt*cG&%W{r=JZ+V)u5pIX3Al8+F|&f>tpa<JX7YE2!pKnV&Dwc~L|<0!y)V|Y zYyMHzQ*SpqIJzu3{df+q@Z$fyd0WrEtu3n$x_w!Xad(Gx*VnBXHjGJ;#{Apcd@bM2 z?r(3LedzTkr$+|wK01omaC;mMN#;|zbXT;K&+YWrb1`|^otMt+=eY80w|ziN@BRLl z3;%_<ermVlOz4g66uNKmyRPE!JFTa7&C+jjCd^qB&lK^jaGvdCtBPs=vw}2>#CD|| zesTQDuX#zX?w{KaeUi4adw6`$Ns(BQz^Pp(pYk#nFU(lm$kr5HzJ;Tx*733_|K$(C zON)Q)<o34gOFCs3eyGX#uk(?p?#UD8|0&6uH~B#EmNot_Gb=mR<c0W$TS%AJMdzN( zx?J^9-dBEmp|USSytuU8G<&7FTV6k!cD!U=BhTu0OSyIi+}=HL+1vF;mdb5A^PF|n zrOWca-`Qo{(J`GEW}>Y1K>B*FSB?Ft>INZ;cBO+&N2lyNqdTqtR-*5>qM1Ekw}08m zUK-{7!>oSm%smS89@I^@n|i2_*LuEB{pl;0w#@0sJd$<lwegGk>ass8?nu}1_6xo> zk6D;Eb4_u`zF^<TldtbCJG{76F?4}|$er+jyv6br?SJ1g9h7Xyn|Dj}=gn2t$!c5V zayvGh<1yLsa_Q<d0yC3$tA_<wz2EWi%Q}yP8Pg^-?7AMu(f=j+nSxK<q@!6o56xuT zHL>`cbU1@PYt<nS$s1ya`5yIG?AWkviBIr@Lw%*`2PgPHD%emaUZc!?L*>MMci#o# zuXn$9G*qf8k4`+DocO=8^!C!j;eWCxOyqg{eCsmxS)J0?{obEUx>u6tVY_(Q6s5~2 zdRIQ)JejK^+q~=Y@wZElC^)VvJ>9MHbaCHD$FGl;ckI5oMS1N3?#87zauh8Nm7OqS zyJUX)iSRz-kNU5tZ`~hxw=doJ*W-KDe~hlq`myH4DvyZ~$Cz!UXJ49-JFl>xUwV2- z)_)=Kr4uC=7hHZO;3M%%cHgIjyQd#KT0TGBPGHZfM8>db6YGj!-u8Z+8ewAh@wxQx z_pKGDx+J5#e9T3+M#L0zvR;qLd875k{nN}H7j=SIq(A*^W`3Le|NeXbMq8by-19dz zTW<-8&$7*a{YI8CdX?~9X1P00);ceApX@E8w4X!vI!73nIp@w3j%&H6-i(dqd@+e< zt<NpVlxAIf^&3)Ii}kg4`d@iF)hym=jyrGQg@~{>UEjaywM>|5dR^k)pNBH*qn+(L z!j$xPiADzn&y-WT{P&CL)?T~pnU&qlRc*V==AH^a<ffzi)@<*?Lz8*)c3e~w+Lm_Z ztEN2rdsQyU;Az_{>^Q=A<+5<5T7UeuAaUlMbbYtKK_7PHZ9G<^*ed@1vEzlV$G5LG zUuKQA=9vEKbMt1SAGg$U6D}LwSbB)<(4)%<k^#0y?wOYfa9vh?#<1o1z4iwpUK{ND z{S9AeEoomD`(5~}ZC7!`&pkI&?Dk}<G$mi#<EOj$+41zxdfyhLc*!U4-4_<V@2mg4 zbdgUkr@V_!|4U@msr+7A5uH8nbB14I(&@#%7x$D)J^gm#i}bP`fz!0a756qA=@t0f zv~^qN&$zabf0L%9RH^LWYhbgp>hO(>N7pXwjrdx-pKV6fgN?r@_APD6{qJ<KW&W!< zw~DkXc$S6i_RIOc{I-F`r*pPh+w_X-%&ohg?Ed}KdE;r$qpi_bfAel=yPtLRm41*H zgK08TSoWRtDRIY=){07|xYm6C>F9LeXi@c)qpGS|f0oZ_T(qcf#)Ttth1phXZy!AP zPkmcUuYGK&LDlZYJ?YnK99`1w4}JVnwVr#oV8Q*RnS1Wvm~&myN8wVd{jzDZUn?$q zeOa5^?pRXwJ->?#%Kp_Wr+xnOa_g3*Z;sv9xp+Cc;EU_5tv#XV<j*9p5_~xID~EW% zsc(OUI3?eHp1<XY!qXIsZ*nX)j)ypo-0xRBy=c`Y(;NP^^PJB~R0sraEh<@h#q5Q_ zS=}o6CvG1<JwLLt-F@MQ+iv?R#9my9$O$eBTWUISmGtqvhciCTtC;k6=c8)Bbm4Ws z-zaDua4)J8)%H>7*qbDr%47SWI^kB+zMRJ=S;KQ8%!U0Mw{O^{ZuVeH-o2R`Yd<bE z{dC;x#*evY`W{GMi}6VoR(t%Ii;?r6mm7zzcpo#@0o9Muu~YkHClx+fuYa)f`NG9h zs+LD>Y0ElRbK?BO#}ke|dTP03*^Vt&?i~57&fd4soB3PA{olL09@aIlk$ao4IMD3> zB!M+2XZ(Hgc>NNt=khIGi8g1ayC~e5zw4fhaB$%IWR`_bqW|R7&WYKg_)KkDYD(Gz z(~`MUzux!OpQ~i5TJt%^F=zXUN0;oygL_XOs15(McCiA>RlWvOQ_np~*1-n(eBaxo zwNEp2{NJW`XwAkZr?6IujakR1x2$=yc(z@p^M8YX0*uefTa?6)Uw!+EX#w-*ZSf)t zpU1vfVtT$qerC<L7@NuoT`w0jtY?<9KTxA@UGtkiU&md`s{K*bo$9SB_0P?=ocMGu z<<5(<%DFdKr>$5~e&2GE5!*g?)5^rz?>LWa(0_DL>#d67%NvTG9PhKO&2{d5z1KZW z<i?SQJQ7)ZbTcn6h?Da_Q&1CMv+E0^=>3yS*E$YpJ=^}z|IgG(?FUxh^Ia{dZDt+o zbmm}jT?&81q}wgC_a05$Inz1uRK>pgkK+t^m1ek4apRr1=%;7hZH?xqJGgJREE39U zo3!)6Hi@LXFA;AKJb#$KV6#eS@Z>M|*0QGtUu9n1)n9wzcOcvJ`wsR$&hopibxu5` zn9C~jWYSFIADiQYuCj8dUegJEsQ55q`lo;LdfdzJs@CPEmB`;Zq^nTcuWh3ecSoge z^Pevh7o;rx>{46OxvF}>e2w^`=+{ddXP(+t{Uspvf~F<Q3uVF8xkleu?i;YN)h()A zq41=AU+&zC-R6(9m&{yb)F61w=9lq*CC68@60)i<b!o}V?6|X(W!7Aq(?{pjalK#? zd1*aYeL4T@JIc{JE=p_@uV44_)q|LuXTN;>wztq{@=e>NYq_I40;4A`lXm>6dZ0^3 zIRD?F{&K|)@<z&&&WgR!{4J;1rC53{<-K=icj(>YK2o>r|LJHf_h7xRw$S_56`48a z9x{^KPE9nI=$`JeUpvosN8sI~ip(6FCnSA&&DAt<&91Y7W*=nyc(>&*7Cik+^wSNw zzEez#|7%sxm@hqJ^6fJ@2_~^iS`X9(<v-V*wR^`ypG7M>o^rC+sqEfR%4J*ivEy`5 zhGci{)G3!;6?5ID9zFJU)yqaF?&E#h;X4*R@Z?(+Tp9knaNXMY{kz2f9`b&svi+yG zV}Ju=bJyu(Pkx%dyZc3E_U)~%&o^qB`>fruDavK{r_FlL7?Y0A-nf1K^82e5=N9ak z%HGMN9WJK%WYwZyvER?h%xhWqZlTHaiBof(Sn3bGu`HW8m-ngo%3k%3bvrmWD*Ksj z2sQapqIW~-;rescPcM8a{p0yoWxey_mHlTwZ`%AWCqZaR$+16wl%IxgSJAuvTv$(@ z_30NAyF~FfX>zC4Rvpk|?fjWsXt8lZK-eSKg#{W~>9=Po-QK+R*D}@W$8EWL9~c>= zIt0F%9(8-Z%AyaFJ=={pGlslcDgC2yZ^7}~t>Hp1i#n3y=T5GlWL!NnZrbCu?#s)< zpZrMFX<QOlbN{-MOJLd!8<o{!{esI`?y&St@myS^64g1^DMOu0@6>1UuPR2b0&Lbj z`cgQ(>POTi+ukP(U(QI$Uj2G<*^~1b%|UBxHqE$xzQ(beW6NyQDe?E@j~*6Xn)BKC zdj6kdW*WIXoA+Mb9nO61&Wf4?KVSMuTR98K1}qIat#dL`IJ&#{w(x;Nl_zFCNSRd- z@^(!@<gBA}KPU^YvOnK)qNZf3qP}SN+`kuQvi`kW7`jeUHEYV+1()1U?0fRjCMk8! z)91{Eg5Qd?gO)1XThIJO(q?PclFYVWf;B5%R$dEU{8!-I><52cf1jB4^IWiHg{l(U zqCHvN_g54h{5jh%EWPD$)4ydi7c6Ft4i@@7k@GXN@y7G%cQj;b8&{Ps^qH*dnw!1M zxB7Gb3;o!CcTQSPXgp@g<DhE4(5S?s#ID*<JwV88@xBww{rCJ4l>d;dnxIu#S)OQJ z6B6QVdp7Uo>NVTGm<E<a`jy?@b$hlP)9JMjl)jlVT3Q9X`gK&Z)a?ROgXZ}c6Wc=G zz3xf*@#M(dck>u$Jos|^hUvw_*1dKaldDB`GSA&pXrd<mZ-P%^^ty}gEAvXL7EEat zS>7jm?)U7)6UyZ!Is<uSK8sIVo%rc7xBnMO1A{;NcIA6Lunet#c$VwlnyQJrmrVIO z(K+2^W9fqSSOd+~Uk`e`$o1T~^nY^V$tkN<%*$^s=E@SE{OP35<`+xDO%Jq*KfHRl z>PLa`yMH@ot8ZQ+P_jA8t@8H9gTfyV>*$0$nwL4v!~eej+~n$|OtZ7z-%LL?bs5W{ zSpT_GKXEIo|1Qrupdo8BYe8t&(gUZub1aoTPqV+)+x+NK^<Lkig&c)9mg!H)n*K*s zO{n>$KF?SE`Ee;XET*+B{q@`V3fGz0XL#103YgE}th(jMj%E28i|@$9{EVHuWBQA- zBl|oa1*|q})KoIQ@@ENS&ScB8+bTD#ESqM3Y)!iSn#LbXXSUh7tGEBYc{|-JF#E&I z?bmNMC@kA~J0N(|8=FU!iN7XTuIQA`m3$w}%lp|g-XeFwM)hlKYO+PAt`-Jy-26Lb z#l<%9N20vRQy)~6Ok4KrX52#0BM0wBuTNENn04vsHgTSZfBDmO>gRTT5Xp}*+402q z)4#`C`8Toe-+y`G198twx7gh_yFU2HtI6+WCERuGNA|U!x^Ysxp8JfA{k3D}tjzQJ zWqeP^VV4|d|LUJ=5r-vg8=qFJb(^E%usU8vd-jhDcaK=?F{o1bSnJV}f2vr-SM+n_ zoX>wk3O;`DK4V(`K)Tq+CTf3n@N3V%f!zh1Pfp%FrK`vqK1-+3>PS52hlxU>jdM+p z{4<-ig<nqj*L45XN{0!4s;}8TC!|ep*maeG`*+4}lNVn;l=Y~!&#bSzym@`voyIR` z`R$r&{ExBxQMhfp@^N>e<fgl2Z*qJ7_3u-f=5sLKcg>!ymKpg^wSKSmeRRA^U0{|- z%rW+TNuLFMZch8{f9}-QZ6O&<jdkt2K4wZk_;iOoFh9cOJGau`unnna3X`=>KId*I zWO};dY;xaE9~X%$Z~s-@=~^YM`E(|G_4K2+@4V>9TadxD+|2IjF{vq&Z_A_^aj>p* zh`PVqguR7#qi*}m`U$m?w%adxZt3w}Ydcx?#9YnoIhWsMX-odqJa_f%S(}pCUP8CZ zz8`(A<0NuY?;(Ts;l6EB>)qe2esGZe`xh4HBhD&U4t8-}@>plQ@PvD2Bdg_#6(>Ed z{&ot5tqU+er}62F`_yVX!)nP>N@u?HJ~3ol{={KPfz8wNGpht;=Dyvp9~iz}-sICW zLo>H|%OWl<nRi}5BSt5^d~>RRiE_r~rBfcJ&km8ubr8&38<qd~ys_e?3;nE%R^>{p z{Iqh?l!?m4(On*4=06lg!&hj>zn&`olQ-SCNPN~k8SBj|lgjq||2m~9V)x}48^aQ= zeqUZ^#E|Il%)Pf;Tfp8d?xc28?eXZI(0$Ac_ieiEFI^HlImvrzvh?*9>4ZCVU(VJl z*-g89x#w(^Ez|iahpLZFPM+-X;DBBH`txc(TSMoqmUfb#S#JJMecAJ_58QIuuFmqV zt|zCjxDmk>b-3!|iK7{3FD32BElS=zZ><-5^1Np<$L__e$o?n@dYqAQW$7vZmi!(^ z)^*P1=kM(Pd!qHG>twZm@m$~8H4NVFa&4OC@uTc%%UZ6WrAN$F%XNMqC|vRMuao`k z_3X=zNC$b>9Q{&}a<5myq#(%ll<=Wjo8QdUVY?qVO(b!n$>K8J=YK9-5#=?zAU3bG z?)3g+g1>DxyO-~4_?c<b@0$`gRdUu3$5rjGxq`1(`zo5BmY&%=dryIlYS4#|rzdkB z(o667EPXTRZM&V=Nr~4BPe1nkA8l|Y^N(YA#j2}oHcEKb-RgD~^6k|06O7xvMvtL! z-<&BW_Y&_klw5AL4v_xFo~QDQ!H$1we9`INq-)pymRqimHsWgkq53%J_(Oe8o6OL- zRjfyzP1Lx0=F<FSGw#RMpY=(znz#2d=Y<13hi-%_@4K6G&1P$#1CQ_7DZ6J||CF73 zQCBZNCg?%r={ZJhRdxBEX-{=ZSz2$+WEI|Oy}D`f+~4y|=DdA*Hm_QuUhl)+?TPkV zy$X2N-e;K^vq!pog~zL@W-P3;ViigcPrsgSv|y4*`MWsBUx6nhy|2c%Fh7l3(BWfS zQ>wN=dD`|x`KHQNhKsK)w_jW*dC%=a*7|#^=ZJ^azbRStsQcv9_C%q#GIuWd-Z?Bh z;q|{0s%Li}kX`t~?XSYU-SN)%SARRBQXt<{5Mib}c~`tzl7q*je|91=i(cFId^OwW zJ$vK(Ni8v6XXfvJ{r5>H?~mG(f4`kC|F(C{1Pjsnm$}KstGO~=?@#&Gc8qh<@&FSr zMI9rS?k^!Ot;bK=6n>v7t7P<@_a`rVG0XC^=UcBBT-|e|*zTz6{2x0kCp_GLz{x}L z66fTdqIYiJh<m)!CEV|)(BG#|cQPw6^28o9*mHSb^R{iOlNu{r;*wsNC_LJH`$hl4 zwM~W(Wo{i^;9oLvkFNTM^V8=%^ayrH*`+mSVra^Y7_~h|#d|yM@B4G;v7y)&=ZIT> zjN{Da-V8e|@v3Z&=*Pxqb9=NyDxUu9dYssrrn_JH26y{GYhGEaFZm*wD}1hnukgNb z^?^rom15DWQ|vqTcO5WkUlP<7F#n0S(2)xZP98k9_vx*M;xFgzVxAODSQxP5-pjcf z+ap^QN}m1Lu~~g@<)54xy;Y9PmkU)?9Bw@15PguaD3$52;Jd(gdnWSLuDtu_!Q=O- z)%s_;53W2X6LaBjhEb3_uMEc_h341!x7V)P8nIus^G4c+9UpIh$lG9Op1!NAlhsi# zQ*6()qUhGMs;@Qc7wMkOF5hDG<jac7x5e9A3a87~{flIu)~=>^<K+YXeH~%{Gve3H zyT1G0UbWrj&LSo6E8SK9KC=5ZYqLSSSJT;0m)|PWn)zfG_D#uL6IoGp`_ZyonN3@b zn@;NRFs{CH!&J!d#TUki)W7%sPBK2IKGi!k^H_OY+#1DIj>q}lrcLPGm3=ZW=1p9t zUQJNAtk2&^PK{S?OiYhDFFs>V?}oGTjXUp)dewb9D_s2B=J<-P9g*cC&0b}f|GFD) zm$X~#zL{M_F(~1><|<WvqhCLJJF6OPm^_RwAH8Ar<-^AOdDHE(Qs!K)V)R?h9{G2_ ztN8x|JyR2X(rdyNC>wYkC|7M{$lUnH*=}X|n<F^~_qE$w&t*=FtqKg~xn_QBi??f5 zuGF#0%OCG-{6A@JM5Ad)rMr?uy4djp+b5*F$?vRRF7nyCaD{(Ex@=|h59aB4J9?ZB zX3G7^Wt_9vS3>HO<M}U_*Z#0dT_AY(V0V{^W8*~r5Z;^3w_IK>);RibUOKDSx{pgj zU%Mseb=mH;I_u&o-L-Mj+3hd8Ufq*gdYhqlpO;nA6MjQ4CFi@*&!-4?imnt}`7Kv{ z#;ilXXDt&lWtll|t<NRVD>ZYT-M-m%sda6Bc(~R)W`oGZT17ctMx~z<kLRzBbY5<H zmFZli-?Ut9%jnBJN}}}z`)~KZTBdp^*XN6BbN>YS4a;<MzckMY`L$25WZ7%G+Vq0- zWshb{seXDb_OqCYC+xpzx6Gy!2D3lL%sjjFsp3+>$7{AdP|dRYzDV}wnxDJdZsk_p zh)FnM_wTrUPvgEMvlp3ny#589a^h7__4s(c{@n_{(kJ`AO|DVwNlkl{&s?`}k7&2f z75R^Uh1~1SmU!KIyj^0s5bw{!*VX<yE$=?A_xx$I(uqrVPxWk`s#U0P_G``w8)f4a z)(>9zU2cETb7}447lDNbd#6vo{$ujP_Vp(6S9&ccUUn`rnX)llK>LX0^nJ@Dj@*7# z`NX;Z^s7@xLkzY{ot^P<$$OcAOCMjTeX*P!d`!#iifg2|(;RvA3tzMICcC|qxae0= zz4pF<(&`Mu?fwg^cdu@~wMfao+dlosZv8(;#6CK<7F_6gbK~xl^CzDlc{KH2&)=ET z7jEv2Y`glM<K^`xH=bkrSQQU1XP>#*MCnuht>sL!?m8Y|kol%0ccjpz?t-oQw|!f; z<z2kE{cw)qgQf58Rv+B#JF&sy#_>=l1}5p4dOh>6lEQ~|#1^+K-?(SDyEf~8HR+-S zzZg#Cn!Yk>+Ti1PEA^@5jqOWrb4-7EaDBmtGd7tY|6RDV(r~qHyOG5&@k<&Xt)rfQ zH?e+R>GEOzE0x77<qppevsF>dJed1<)vK>(c3ltJ5h!;~tnOjSqHwMG+FO2U{^AJd zPq=U)D{FDVnTz_?AGZG4_eSnn{JYQ7g!KH<j^FZ+U%=xZ@@QeXw#%&e<7X4LzPfGe z*p)8#gu8m>54D7AL5gb6)uTO)N-doDFMB;W(Y$xFX{v?qq}SyROSU`y32TUn&I)AS zeNX1F55ubMTkSscZ>+T}c{{uL-hvyi%wLp$l|Gj8D|~O;QGbz79*xgKOUqQxZgM*~ zJ=Vahz>`(3U-97feH#N}KJ5#f8}{PGQ`yg*clK0njeU4Ae?9l~)hor4zVB8!=x?2L zqiFw$kD~Wj#HAA|m}}-7-RgSf>B%o&IUYXWBk}n|s~uau<th#x&&a(d(|$j1nRZFk zPhnXqdq9h2)<ve%R*NoeyXY@1Ald2Ty+r)G&g*%iHv>62+b-00)UZE{-nZq6dI76g zuHxsb_Zj!SHvZcDHvB|=^y({ei5>h_t-qc=y_#L~{)*)W`O0#wH^1MW**Ed6hEhuA zC#l_f&a;;+%?z+R>GqM~@1mDKx&&1`qv8a9%{-mcP{q$SOZt(CSCWOu*4vs^s#;}d z<b$*}_DRqC6|E9p5?N5}sIN3(qe)xEsXH}-v;WR~@Vs~R6W1lzH>=FEnEj9=O`EYN zqfxx?>}-qr2^L#J?Ov6vpHzOYy;0fq;;mqv)a%Pz^nTxKos#>xBVfB+qHYS?!P~pP za!*uW;CRM=_sPEpQ*Lk@>)efQddYU~Gw*lzf-2E_bGT~)xe~q4t^fK{WZ%)$xpwCq zE$8bVe3|-I$ZF>onPZp!Oej44S7o1-*SE&_H<D3pGbLWX>hwS6#x!Z!<#|z;o{1h^ z?vj+agX4bm^E=z82VLmcSNly&$WyLvM^1-9#OA{L6BMU>e9f^o*(~SW?4O-H0t?Tx zn%aI@vf$d{nRY(=4f<B@mpSYt9OG}}XRCI_tFv|QU(bo`wTpjznel(gVUEtY+5Xl= z{mY-e3T*qw6Y<@zf$^CR_vY_f+oB&lm3V)8x$u0yl~cpl?c5}Aw8s8l({6nQ?W{$a zpFVG@$oDy&bocplG4X@WS6vMIJ(a}GreEB8Q@_n%j@!2l8U-&CY&w1)j*eH_>9|#{ z+4CiLTH$@p8&9l`eL6Ma(771~^)q|V2uypuIdhWcri0g3+C*hr)ib`ZEDiJATIzj0 zciYZ8(vRNnJ$Uu$(_W8%mWxgu$udtqdUV|;|L}siS8}GA^EJ;U3A6}_Y<Fna+tIsc zv)xy&PZAScrg=?%UsA!K9@NUb?tO**lbNMo&&-<oXMgRFzD&inrS833;^)r1d{0BX zu)SiVSMf9L-AlSp#B$0jNIz5->iKkz>7JG2d=Y;qGlA8iXN%PRGb46+Jb&8HzUO@U za*=fDXIC4XEZZ1<GiDZ=WH0xc9)DDHp6I8&uiHMBEA@S0f2BRK_+O*5+STnW?;}r? z+7x<hW_mYwm9S^^T5aJJGwv7jS`+);lwDl@DfC4Ap;j4zc7yn=)FTh(Oiif>atn&) z<vaYtU|AX4-{U8H4R@d3D%sK2-&}qF(FB1>3)2tXJ^I@>tjUPK_ngk={f*BTtbK6r zTKns3`AiQ#uHI2<_bqG5rJm5>R;?W0o1Q5%R==KdF_6>fVxaqnj@aT)_d9R@2yheL zJF7P^!SUGl7>P;jN0aC7W7+&Iey(Ujtlg__-^Y)?Tq#Saj@tEEwy3Uq&2eLygwKn@ z3XT2Uy^K8Go>90r-8Lvr{?w=K39YkleNc;Bx9+xOXvxLd8uojyZ(k%T#PYM`+WoL8 zuf*)$*v-=nf0%XLT4rAPrMK6Uu7B<JQT!U@eqTQLT*&F??@O|U3tx1$R;*4;IU{<| zY3bu<+m$MF7M0J-s$dG3ss8k6&V`nF+u6Jqt1xElZSy&I@uOm#=Hc(JZ}^2>XLDX` zb~O9?soC?bHp=X8US^<Xy}nH}cW&5wotn#CrOO@b<hDJYFEi`=VZ*rvjSLo5%}0wW zn-6B*T)@f_wDIryr`k8oUSF(T_<6?J&HU33n7Y5^)?2F3xon<HRrlwa-xtd>hgUg2 zUVClbD*n|{fjqOrUww1@a9Zl-ywjiUJ<etI?|rk(pJ$QSPs8sSf;tx53z-@oltdc} zeK^bVGRoaZTWVLlPp3@%L1xuihXS<Mha9|{BDC1$1^@gSmS_F!9e>WPwX*5F&F9^a z6>;v?)4TSn3pb=VaeF7kPqDwM{c`rj)Yzh4mF1bb#=Ubw@2+*aW`03B>gfHzX^Wp; zd_OI}<9vd^-`m26KFoh$V<2R|CctlI-Jw}u|1OYT($y3&=gCE*y@%S2FKHd?f8Tt* zeHxdJjK|ibPA7KxAhnY6<tp;eU2jECl<hw;`MN~p>+4@1-C4L@(faIGDXGBglK*Xd z?QNf}pV2R9Wc8q1>+#wR@0Ka)Xm9ztbB)%kt!v7snBPv6|M@GpGHgeC-Lhh)yBaGD zJ4&xu#L9%LcZf)ybF@)6pX>IWHS+nHz?t?=p>vKs2y8k3KHV}uzgTVZvTriC@+DW4 zebRYY^}N5_Tl2xMd+MK~*c+$)b$On?{D<VUfJULmi+@cK`96E`q0GgPCksR`(wOmA z)a7cQe4?bl`NhGPil*DdyPF&;dKR{#r#-v><E_58F=?e9lO<=*j|-7c6cX^fdZ0I; zk;hNw>T)T&bjv*TbBeptC)alU>5reD8O+0${^xzjwI_P-zyB~+iLBoDV!6Ft*qXD8 zmf8BxXW|I@<$i+cL0x}#`%}#WrB@ex>YnEIX@{6>;MX6!`+VZe&5L#wrmqQzdz?_S z@7B+~PBXkrKBhgdXe!_Ld)}^^y<Mx<zPIA}C~%Lx)NKxTpv~MzE2GqY$*eZMaU)9g z<0;dduHFV(_nB8bGgis{v$)ExXXAvIYwfq@w!WSqHt7R%_olc9`Jv%^1%qaNY>LoW zFT7dzXTYrV`MF9DgU(zmQRBLC{qu!*U(@$`tMvpjdD+$;_lj8jZ#!o)U-gRxucE(1 zpLl9wf5%~7fGYdaQ!c$x(|H|loD#U)Ro7ekO7>Heed0Dl-*49g*H4{2%Qh#)rr%Ls zTy@bML8o^WTAj<k@fB_5I$ZO6nY>(z*7=ahTkH<knr3M9&2T++Pp5S01F;>fT35ZY z8_QH!<MOywi{k(PS&$#F`eM=fp0ed9Z`+-*;o0LG%;+-P*=$lx-*^34yq;Vu{!L~~ z4taO`txL(*guI<rX{Y?fS022cR#@PyHr<5#wf7W}8jqFUXTJP=S~cl(@vQ0gt91Ip zyjtqr6jkkR#C(-(&8yR`m&<$c{=u!n<qK0zS~eGiOcnZ=_(JhQuIsrgclPfTw%)ze zVA|%E({aof_ZCc98ZS0?l1-Pwwo@*9Cpw(1x7oJ1_%q+!8Tk<@->v_}1*w=FtT29^ z`TDMaMO=2EQQ(2;PxtK%Pp@4XDQWjnS#j;MytH12ZF@F;Nin)8wR?9<oZZL8Hnww5 zOu7E5%j%8WlIDx~F)=1W{r2WrPJ6VEToWtp+^<(VNomIV1yURA*19U5zjb8O#C`8F z%I8f=vfWU9YWc7DGHaF3|L6Rf<hDQW<Icdt`<)$FU#j)Z*{-~N{!$lPmfe=BI%{+` z_$;pL*-(5->GTK3CCcS#O*hgSGsP}Hnmu*xj!*BFY-!>7v3-`y*QGa&u4`<b7WPhH z%jQ|<^A9e3u}YThSz$5<+s8##D&b2Cm*3jIZtjVS8T*S>%Zj9&PS1PdXkdOcFIaZk zg4Tskd#ir$NRkR<zxOFJ-*=8?$>eQzAzxiK-<bD7!)i0n1pZgQ*WZXWKACsxzF6kc zKgpI&AwTU4isp!Aoa5C@*Q?a642*yFoGGrn^ybz*@e8C+#;n}*AuM6N$bQ)++Lww> zoqcfO%WH#QYyNuKz5T<y{r9oFu4RAnVwZ8O^S3+duI9RD*_zNU1<5myyR`Qn`ElzQ z^W%uV)KdM=1(W=CMQ+KTe|CB<&qVJzZ)>Gy@X4=`oH5h*YG%nznb$9VT1ezguMH{+ z&8}lrIu!RkX|v_VcI)}G7uH-`^>*{7{9O}%ZOu@fe(CaSLqqvvyCwJC6c*4f?o<ue zR7}~S#moP_Bmdt!AN?aHe%H!#ukk!SbaF$PWtOONltih)(e+<02q^n<ht=6J3$J&b zZ%`KUW6wOzEva(9v$G$czS2>>Am@se&XXsr&2MY`I$@;3^SJqdm-6FZwvK*$dl$R= zOE#>{zq|0VDM$OEv&YrD6x4W=EFV8Ow|%j&<+90Fas>L4`fNoj419joGhF0vr~@rj zhb|&d%}dD#FIl(5x@6q|e&dgkf}x>-g#q>@>z2?PfQVSKUY;5-=k7F9zYPyqmN!0l z=U2e}?j5g*Uhi)9_6I@=J6Ougx!=8ecTm>u-uH87=I*-xXVy;pU9WByU5l$;U+Whd zJV9%f0mtlHlFX`aat`w7^qkqlP&uJ@<L1d-6W8iAcg)?Y`QYx!Mh{2DR~#lx&2Ms! z_8f4CYhb$|qQGXtxM34hL`6k~fF{GDvTyJD6pFbG8lrq7o7?*O{>`7aKZxPjyZ@4v z_AgnCwzCH8tKY$}_U)V8hHVeZJN|!l6jcyl*v7zg#^IVn!-}Rw)3)qUX^0An<5l3? z!fGWI$t*IrcderuL*xX`3)eV3m<=`;vqbzq%rN7|%~?(Vvd(sXl=Z&BnZQ!8iG5bX zy?(~KJ`LaMTVF7Kb8wfQF!}OtbA~4@2IVH3Sofc2$YE!=IV-|?_CMDLck|P}n=4kk z@BYp+`}+;+8H?r$-#B?hFomCOPk5-v<R9$*8(IZ_tiR>A;Jd+rb8l=fUpaT==lW^? z`t}~)<9^UhAzGb5;sx8k)zb_G61a*sZ8s~bU;mdc?LEh@*=?JJPh9&mpXUW*pF^>- zdvNxG$(OCqSbvMZ{4;%i!~bi0C+^+5_4obdZ~vY9rO&6ZLHNS09>IyNU-vHK{IPeN z<q5HgFW0+H+-AC&d4s|K!}+gr{?9iQU-0-o^P+#*=^6JtC1&2b8MT|)r!lR==Tq5( z?~@o_{hxcP=fB;=|GYx~qgnoKKk>UBzGS^>{(sS^LpN_l-8=EDmhs=m0}S`#CDa>q z9;`Qi_W!i$CdSC!|M_qJpS6PV5BuT&oGwy1U+mZtqd%8x&XAn>{~?Q|XTzO_WnBsz zI#~~#Iq|F3t^W7b9N)&iYYNd1c2BGC7d&v_(7})ThN0XOI;XykcYgllr!~tK)4$=* z-hcXYcDAQWjHheFq<8W0m-lZLxgW~Dde`m!!oU0Np1kq-fBFZvv&)flybn$uICPXP zAtCu$)&86_ISg`Ta_|2yym#M0=l_<cJqP*}%p1;CUp}K#zx|*5{`#n@|4hnx*-7cY zuFqT1(3|6XKm7H6nfg}WIkK|%MgRWZwtxGd`QPq)^Ret=^c4_){>JA=lTPrZ;Db}= zZ~Enaq-2+M<bvPLZ@IHWJ{SEt_13B;cwg>^DN=UfEXLRRKJGKyd0y`3{x>HsyyGi- z6cJpi!g#(;sA}@%lBWyS2W>03_?FG!rTC&Ha@j6b^Uj}GcQ~WiX!ZNNJ`K&+;x>l` zd$(?|th3m^_@i?9$&ZJB)nxy_cwA+t729snwPH+*jlRE_Vf638yJ@S+GZyS$|Cni8 zc6)=KF<WEP`4^M@9|>kM-MD+<<E~>*j!s=T=ev8&2aT1U-xXvYJ0DG7a_+pr?n5k2 zE@J6bnoK#bAF6%zwliMz`$xOcnq-&Is&j=izB=YQf7$BXkbAc(TvTw+rHwY<mMbMM zyT+h*Y0K^w{jJa3%oMkZu*eil+WRN4Tq$wcwCu+hp2al=_I2b3zY&?qX*X@}nw2?E z*w1^k=y5#Dn)P&&N5%QG^LE*vf1exo)aZY~jhC4|HI7LRqQ4Vaau$`pZZTPBWZL`3 zGwy5HmAkw87G_!*dAwL#DafCvAocg^<<skKM7f;MTxn#W%;rAZh;4yx-`ntcqN}1@ z1^nlK>@O^wr!?o5$oY9j?r9HoUTn60T4U16S|aw-c12&kEz|D52c)uo^j3H%*|W8V zSlaeUTff<-@$k;t*P#i0;?p}c^XvOAO_`vU)6St>)!6P@b@CLKYTANY-KPa+(=!fh zZ)iQgkJr@MpuTJ-`_XK%LnU(GZmTTGIBpz&UoR(;yHeoo)?1gGY-AR^*|Yv&GUKCq zRZjCYtA7}=#5CsqTzWa}aE1En23F^Jp{hGXmQ0M#)%hB2p8v~k<)#_@Av}wlcQ^%V z7qAz0h%|VeeRH+`_pvF{b0zbNWp3(3Tb|s>vi|GRE!i6+W2+_xw0JVbs}%dJNaT1X zti9xC(zRr#H_n;-Qk*-(e&_yIEt|hAPvds}jz@{*jEfmO)2k<&Kiv2HtW1k??wNq= zOIum&)MHlb$-hwFk(RK9Px?*Sn%ifiPF)XYxi{-4!<&AegO8lsSb~4*xK?btvCnYF zgt!Yj_di%ac)sgn#5{Q^&Z)N&m)E_Om|o|7_t(5uA%{ItqH~3;-Uy%FeR1CrJ0nG* zb9c2TeaKu>`u)%Ak9XJpdHFuz0?U~x8izG!1~9J{+2^~k;>nb?D#iIfGsJ7Yd<$;< zI;B`Q^>jYl6SIlQ{w69;XYCi+sMOxyTvyFoJ-KeR{OkP4vgY$o<`ge@`N`tER*F{0 z#fY=VKR$Gi4EvE+R?7EE&fB~zyH8m~QXt6JL#uFQ#+J~Cw|kU+u1giTc+>3f=?;GP zBgZDnwQ4oE>F8YCm}{5mwQALx$o<-P#CM7u6bqiV`B!DiA}QavEmF<x#Xs}%4&UQh ze&Not3DYgF|C-wKRI~oG=oF9BEjN~`+%vE1jSG1m`&g^U?)ro2CLejKq--Baw#`l0 zucWemioJ`h7`GPd3Yj%cMSXe<th&o`vz#)wer0XvIrGcuWPIQ|MS*qV$$b2EbM-dg zcC}U)SkylCI(z*8M1~)y&uq>4UQ{>tP521~$NwU`x#m3%XlvHa@a<#hyCT13-w~bZ z!E%!Mw;k$(jD1ZPv_4M^o&8?0y=~vgjYW@ZeSDI99@IT^Rz5G4Q|`QjPejYpIBNE- z7~?#fn?h0ZVmfbp^M7rrBf0J9MWyKrMIOCr|1xET$C*zT1^Di5esWaNPSrDa%C<97 z|64WBe)!e8rCDHRM%!1<ncPBrau2>3dapca@F3=1;j2$O?l3=EQoMOaPG0V|@BRzl z{uGbSao=*s##=J2gf(MV&Mel3_GvDU)0Zt&liR9tb=N|NM?tIKbuS9k`p*7!iudZT zYh^D@{J80-EqCDMMTYFWtZc=p^JHgOhZeoxllXN#^HnCkC@UB4n_qdt<|eK82zJ+e zWO#Ll;KNYSWp~;Y4)*=vS$`%q>ux|mNQvp49nYMk-t6Nsdvt8R{TYo|)3xH^#k@7f z->MDnGU@0nsa*VcxpE^{dTnUpCoRX5E7PufuK#&h{Pey#kCr<BY+r9sf5kUh$%Oe+ z<tD9DkET4V@2V^1Sj9V8On2e)yBDe$4hH=!xy38kRXp$g&hPfOtR6H>b_<x1u}58I zi`K`5b2?1-?X-Vrvq#q>iXkRr)=v2aCj=MHZ+>!KZr+i@8E%U>gO!%#7>BVabUop- zdZ7GCkL}0%!!M&5DraX-449m&$9G|_;KbR7jvZaRa`H3%U8l`!Y$NScy{Ar;czn(_ zV@kV4JJXk$+x;yk@SnbOdF3jB4-;qn*v4>w$8t`$Y%jG+!=T%bvh})Ttwk@?Cf+s@ z&3wfk)UUaX-}&a|`qMv7vz~bWCyeurecu+b|88Pteye5HUwE+Sz{0wcJ3hYqxF1S~ zDBCe@uaPL;;l2G_{r_97zn`zwwA4D7dWc0<c9#F_3>Jlk*mdlYlS86?kKYnbKQuc} zHO9=sFml1(^mVuWHpf3d{X?_#Nb<pWKi0XH3P(1-zW)7=*};>wAC33A)V|i97_?&j z9kIEq*TwixbB;V1xNZ%z`0Ib-*2nHWHd0K{ZTvp-;zIZ5DU+)|aP9sa7o@K$F{}K? znk{a+?VI+qI6qz6qP9^uOSb>HlFE+#e`h`1aIR;v%Ks}{mlkwiW;pbN@tw>45@7=y ziyt44cZ=;U{%j|kb!bK6i!(P`Z`{<|r$0yOXo0q4rXgGBB+17QjrOo~ao+advUi^X z!?iaVa+8zv{(3Qm>cq^q&OcbZuqOZR>bv}A&1M^ngi<8GSQ;}h33XN(9xjq_{Ptoi zOVNWpN866F70eFUuwFGo@7?_hfwYwAkF{MNcZdpAHvcoW{d_t*{>k18M?TDc_HOpE zs3aq{kH0oGdnG7rw_*RJy7Twt78@q9^w0WTH{PT#YVrAFl)>Tquu}S$nz8h%YhSk> zJ+;zv)dJfP<(J>~E~xnXM8m!E&aEw0x^mZ+y=gw=<Z8TYgM@<g8=Lp{j&puGaOB~Z zTP#dYsnPD+4(n&%(Vu*~Lv23m<~_HI!xMhGePwNSUz@fs^4`9Kx4kVDpXZ-@eDLT4 zt`$|Tac7^O5L&$QmZO3V%Vr)`k#lPU!#-cL+Qn$}kS~7Llil8jzTJ89{%+!@IHC2s z&RAXCUu5=qfureGX&03pH>74O2{vr{^rxs}`K8ugl?5+9KmFj#v(U*ty?b?r=F5fC zCN+Hvjro4v@kmBc*o5i&IrSB@l$I8*5ZG*a_?gdoXWnfg%FEhL$Nm=yY`)Q{b5VKe zI`f^}+l-P<hV6`Iu8`@^ix4o-<BL7|v@=Zgcz#GHd#muqN5<VetS#wx_H%zeSt<Ov zp*JDEY-aJjOELvwD}S8&DHQGZc3%iXft|i-7^A=BYoFkKb@!&qndhvPKVo>ndg5_e z#uFXqr<sR;)ZC(3=EkaWQMU8XJ?2Dyr3l|c3l*O^=PVag{PBAEfn$@{bA#Wi8cglw z;B<)na`V4rm-I^O*-3{3YyO5gsxA2zQ}W*2Z2LCz9{$7C$E0kRP0bIwz3%bWon}8- zor)GLsGE_mwfjMbVd3d3HBS!3Gv60I&Y5l-98#XU@PM02`Q@lp^EU|24g0q6m_zWF zV#QWny9KIcTVKUAuRLLS$Hjs__=#YqTl`d>^rPQro2?J+yD%wYMPW;okL!{0rHWRZ zS3XRCugfQOF5Y8;Sw-a)H|^p#T+M86j`E2*RhaYa4r%iGF{xAd+!|9^HN{f%q@d;Q zZ>nU==SQT>7m78_;>wIH^N{m*e`N71DQTUbKvGZt>l-`Y2tAf9RuiuX51STKk$&)O z=978C9gdFYXT0<fy3EWM5b%*L|KaxPz)-`7CeOXNzjY;M&Ffu}mGeAz|10)0)2!-e zRJ~IRQZiMTEpXfX_#d%XF$P&{4!v&w`tHTLKMP*VZ;s-yi@T>E7MgP>s`saZKgaef zhi?6P6nyRT3f;BSr_Km&-zzdn*nZWE1&`)@yea!>$BOnT87W6{Hyn=K>%6k%@jT`q zwjVwBaO_*`{djQ*M>@MkiOa?Lr9W?UDsw3ONV%gOH*L+g)6MTAl&eFu-ZgUv*i5g= zcK>+mV&?jm`^=`f@%4<CPjfwst0;DjT5M-<FuK#%sq@9`oJ>a5iB@micYYE4@L)sb z?{zh;@(Y-zsJd=nsQUC?h>Z7Kb;*jSy&HIYwmh`<Ss<XZY1R_n|H7R2-@Z8h;|gP$ zV*Q2l>+floq`WaZ{byloiSEpZ&amazR{r!XH#PZs`ReNFbxRBE?B@RN{r3K(@jd<c zBE3A-Z*EauF8>XBHGXoJq_2qCCmAaLcCLNEj`uw|7P|SY5k-3SPA}G^=t{ht@7)$* zC%8KMNTl@k4{28dA74HDa>IGEEzE1ZA0K+NrEJTM68oej-3y-DeXlR$U;9OL_3vDv z+w0QawM$=J<R)Pd65Mp^^IPr-o73}!iVBa*oa9i_e&rL9w^Hhb=+e~aDSIuBusvh; zadOv^n6cxo$ke3k$N4H13U1n!wJm>bYvjPO^KPQywGVlB_}#Y}CA6$b?rQ)0qGQjk zqX%>@a`bn+Z`4WB<WDZlnNhVk=Ig|V*R4XC<CG#wPybA^IsVG{2G5>#qP-7W`?apR zna$hl@%HdNWydAF(NZe}r+xnMWJ;y;Ln~_q=BGxJW$y+au1hMdtTq!lXFWw+U`wCa z#Y+~B-BO3w)NWK>cR(t$<LGns5ZxAC@ujB<Ih-HmBs(5FKJ~9c?@S5TWees1_?+Ia zG1=|<?6!{wix+=ny0_V{sYZ6Ad0eBp$GM!nPke*Ir8uk0XCxdv9I&^?f3xKExr>(` zuU4s?q<AE4=dS{(2A;U}ml9vv^z}5GzxTAs+!7z@;c#rm>j>kp?UGMUb^iSMuUzSP zDd)CE^QR)8YAkr~%U8>!3bpp!oOJre0^#@0;#VF-ByhQ|aaxsacI8USg8j=n>*v2; zZZL0^>b#&XC8lq8MN=2bz36syv=@~SUzk(=|4{pZvf5db{by!p_^G7Mc)V3)^Ren1 zYM#bVCl{A8cRz3cWpr0QwENRi;dGwWv$<}Gns&@z!2MoRe;HHX?tR%$&OW=gP50KH zkjjjV&=X5ouiG0vcHOb`?ZvH=?-sef=KuA1f_L|&H})G|Uufl7_j88VoP*}Fu~I>I zMDiJ95B-_1;d{cbzV$q}+Rl$lm!0`OOInPF^|WR4VoBqlLZX`*t1A;lR?ji6c>C<} zl#=VAr>%CbQusH~AVTK%yq(WZsj7U5&^Wy;Iq9ritz^}fuMCS$dc~LXiFc}BQ;2!} zFU>pA<n8OS!@c3LNtu!Qt;OX+Gp)mCTXQ{|KO=|d_Bxws^Q3t0y^cP)|5hZ^>8VS3 zes~=E{7~d#__CARTErgoA1r*`>fC+ySLn6*4T2N$@)&QdRa$&dtKHo_QvRFDCRdip ziuSYSt-h#Q{8(el!gj4ETJ`M4&7BdSRMO;Hu3k--%9tt<q}sM6Q2Fn4i`g<qHZFhG z%PrBsQFS|W<C8}`=AV9X_!lHuzTIeRW+_%)dXejF-2LepWoPYoh)nU<+i!AWg~)5J z#k+eK$vnR;G52$t!MnX_FOJHd{}p{W=WLE$<gPuFl8y>%W@_vU;PjAxSR;4A=GjW) z{ZGZ+&T(b83hwHho;ma9MhoqdFxlj%DYA9Bb<574Iez+yY@Ok)&t6))Ttg47vU?dl z+c$$nOebc|iFb0m^Yk>epJW~7=b!XVLhV!Qs?d=C77J&Hh6x>-ls|Qi<v#Hx?|CYx zJ(gB(X7%~veDQ8cPTI||v#ibRHXoj>o?REtT)|;I`E&5I+I-dh=l=(m_ipubng31B zEP3X-gazL!pFA$9-gvAn&}+?M4%vyxnJ-_yZWmpy>ZLM!i^+8Xsb~MB{>-e+i#Y$@ z>~emG(DQ=NpSsRh#AY4axNCRd@eNx(T5CBLXf5eB-8Wq;<o2JlF4n?x-aD*)wlv!H z1^?mC3_`OnUn~?1wH8#{<jvzKr7EbAWOsn`mU7w0%Wpk7LLW4~Xm;iETs2Ac<l3x{ z4(G$O#ngD(HGE$r&c5>DN$IrX87_rW6Q}UJF7i8Dm0!&xGgbcZj)z*j7oJ`za=W83 zVcLp|iY+;NR2pX&`JY%mL2yl67w4~g&kwMNTi9)$oWZOk<Sc$-*|CQ~_j=Y`J8_wD zp6u(>*OSC{-tBVj&}};`yk3%d)rN^nZb+T?_}C%)>j;CY#`>uRlm1RUxJx2<hBwP3 zH{~6|`UN{C6r?0B{J*<GYTun_lKUUV{asP<A|%#4y?>X@gJh|K`pNu<Hiu+o%IdSN z%{s=dBHO+4>G{1K>u0R2{j@ldGv?MC<y^Z@yS(og^al5AP?=TuBkP{uv&|VF58pbv zqS@-Hhf&f~nS1kdHh$9kRsBOcbK!w5`ArrQfm63XOB1qij}<JGJ^1dUN#OLENBlor zuwX0nIeggS!0Zp)mEC>{zOO^4pEanC@Ko!&6!}(fWst&)xX&A{&c8C`=zIJ6`F4jo z%eCuRY-VN4{P`EV+SJJJP5g}A3*X&*t}#VI>aNa`NawzLRb2gH0)4ZY7gTt;Jf69P zp(Cn8=;mpQv!2Xi`~OJl2u%xJ8*@^nT}L(fyswAYpZOg6jdk-kr(fo0O?xR(%(Fu@ z?e>owOXdVlWcheYBy7c*BMyrUrrs(&WUw!rv$2^|cwdOYG`~ZSHr+D*_E>94uJ*en zjDph_Ouo<j>)EuYq6UlWJT2ZXQVI!u&ehtXcQ~|g#ux5avK@7fTa^_SHEn-Cr;NLP z+Umj;7dqt+ZRFYaRm5t|`ikR$mbZ>xSzTZf^hAtlRaK#1te0w>SMa)7l@m6IiPdeG zCg7y@P(C#`_Tb?UFS>8szn}4b_3@LPN1R@MH2&K9*-=O5sh7HMlC6p6+`HR7*u48U z7dUv8i65w6DpIlOHt)|hdf~sc|4d;nC~17mDd;J6xFyeUT5Oa?{An(cg>MtC&YauL z^ZU)*SE7|m{5D&joTM&QQ5pYl)5iVDe<$?4+kE$Nlu>oC?$$=<RW|>Ve_NZ}mv6Wf zHuY`9=iU&zU-FFWD!u=TANTzda^_{MuiT|vMSqTF_gQW^jGgS6Au&mE<z4*&$CkN= zRqQ|f_^{i16H6V74ccq8-`qSk_4a$|Wr7B4xA5&XJK42jX299UpLZ>Kc6;{WSk0$X zJ4-@$>-Dv}-!7l$J3&R^lJLp?PsfZbqz=1%@%*SABNt<F`06)v-8+1KC3ahXu+LrB zC)OGFB(09c(K3wZ=+UclX4x8ie2{lpr>@CMEWF-p<qnqcCF`Q&XU=<?siIU9@%rZ1 zUz_XIo}Ag!GP7It$F!YIG4~&SS64o~D0AY8gcbj$Pu%#7uj-tBWYh1r{@3>(v;UPX zKkd}ixGf?lPpYr$eZTz8aRFX$zuo%GNl#lh8|z+EO8$}e@yE={4?R1reJ=*xGg6RV zr+Rnsst9hSUax&0R77-@%B8E1sJ%$5n;m>RWA@ZdO*2pCYnS`0@ib_PA3VHC@_Lix z|Ia^)avEJHp7?IsbNu=450>n^A~$@`D^>N2Tl+nqVgJ^*@0LcHKI`<<F?;q!-MIAQ zqucD4&n?%}d8qS6Sta)7`MEV0&80m||2qAYD>vWbHTU=AbMm)&uh!1on_De==cSa1 z?S?tukESp9Zp!xO`tmpDRf2AC*I$?;**&}Feyk?5o9xQ9Q+R8REeU%lc>1!5qunh9 z7hm_;T>9ci90m2e(@rf_@!9sPCU+(0m8ss-mVd8*b3{jeVvgkkuSe(9<R=?c7@mE= zzwX@a3x4yDSXo-#Y3ixG>Upnj#pjo$2O1Qs4R=lYVY|AyM9-1KPkL*Tk7-A{<jMre z=j&%{JdxihB**Ph<^1p8?bv6zK5f2c|GPFXt32`8(r_zF=p05Zx5Nvtl@Dg`m$aWM zR?R-!^5B}hgdQL1_AP7XTt0LsX$|kGRd>af{r~u9-|olLL+ADTUYA$PtT^7(l)0Yi zxi9;~7ebuwlB!W(EH7T(esRHtjZTxlNQ<j=sB=vy$Sk*AqYz^l`+oUt<qgxtVq{vE zHAyN@|MK!^nu%%rf}oQHPudPCzq!hk7#SODu)OC<m`(pG*0aX(*Nd*{sodNqZThLd zbk<~3k=KgXG8T7AecJrHH}2-6S_dCL|3A}@_XW1pt<Il(N=lR0%<jU}8qW2T%$JAT zA1hEje^PdXr%hGGU*Ve5tL4swOus7}uD?d$dEY+0_Pj-BZ@2CC$+oPUwPRcK!kHbL z=Bb}hx%I|b?aB9O$89>t=JzorUb@;NRu>Z}$QYHpX4Q%{xh>_kwM#v=bf$e~DR2v8 zSKC^|p|?Zc{f|J@)OD@A*YC_-dZk6CGT`;C4PQ?@JEwNyC&#^&2bD~J`@Fv8Flqme zuD81m<$jNPyXow~_z$5Bj~3ht_g%fY>d2N;);bDr1k3AhD5xGyOyPG*`MqFH;>^FE zF^ws4nWe8dw<s>kU;0MX-%xa?nqI~9?Gw`;t@M~salxjCW%B7T{hr;?N)v7<ML&4n zIO~S)GlzHGtj@36e|@Pr>)L)Wx^mm!+mrv*EDW7;=8?E_Wci~`nO&<ozDiEp{pqXG z1*daW%l>T64P?2n=km-o(?7NBn&cBFzB_&Ss)d}lZBsvFoU|#LT&5JU@s>%Xaqp>< z53(l6vZfodSRP_~&1P~w$gVbU$E3G~tqSF$%1>fviuP~X?R#HqcT8fFfUAer-#xa{ z8#E?KJSmRd@S{uix66#ED4pnEZj%Hv?gn<o-FNj{dQ{}&!J;h}H>?U=w=#DAoj9)# zzqD71E}9;C<EV41b+V)o<BEe7W#UhHb~p>~igIH-DBtq`;Sck7t_LbR&Yin{Z_8_6 zyX2%}DxcZKuXE<SE#<FVHlzE{1+o0=iy9LC`$iwRs@pBW>A9-x(3_;a9mhCoG(<Uk zr&fQvyk$k{v=vh|=jocA*|Tn&m&d(R5!wmTdm;~Ht+vlQXsTyFZ%r?kVB9a$>ETb- z>D=y}us_~NZRc&-y6Mx@W*-%B-N`Gx_2Zi2;0NJ>Ee!v;&z7;?5&6W)C75r~)422G zl!~yMPHD&Vg(F<!J@`Yz)y*GxcZqFhE1W3uVe;0(dD7Jj?UdRsX!4{S^X6DzYQ0(M zlZD?Jm12&E{?qm^U9n`R5l7eCgm~#)j!Cu#Me6=Mc`H61y)K!RRP<E7mv7<eb93)H z$(p7HPj0H3zB2FK8Q0>i#VtZhtK=Nt)*ZGu`0Un3v6rhRM;)4-E%HI1H6qB@I+f>C zUS(hKN#?*?ElY#DEZel%T-3vK1GjIV9`ZwJ^JYE!;$y+=UiR%g#;&pjExQ&T*;^ug zP*^?wrS-`l_1=w7w%z39``fn5dH$ijUHpZayY=)d7fNouy6MG&zq2hpHtv44^2uu5 zE88Qk*gX$akY;$cMc(UJ=GW{m*YE9CpOW|O%myYG7wN|rQ=Z#}&RKr7W}VCT3CkB0 zPW-ZSmCg&VWeQik4qF&(2(mh8+Nd7stRiDHDdfu3tbOYm3SV+6RB_uC9ZJ7xa6iV= z?Qp`yXL(11HmtXt&-|urfykjBu9bS<r0vsdegtGK)(ie(7H#zZ=0Th7+%G5A@3xI& zes!<9-Ej5832ROqFxn}dIP0`U_QRht$L>y<sC;SX({mBL=O#w&)%9$#wf`u*Yr(h7 zON+Bk#kT!0w7>jgBF`P|8mZiQ&o|B7Klk0S4ae--<}mlJ4x6K{^INz{=+Szq_Q^BY zWaiy3uble1Ofl$#<nkMnro`N|NwGG(d8SOL&g{rivpA=w0_|UcE0)c-i#@9Uo^#R> zhvJj%nR9v17k^VdYiqsG>zhVf-JbP_r48$48qO<l=;gH?);nRBF==PKP{86RHBVob zzWn!ivLOGO+9MZc|GlEHW49c;^xMFdqK<mZ2P2cuR@|7A5x{Od$$CwiSk086a|avO z@m#bwf7%%Qzrgg+>eW_G-ctO#9?B@qX_b|2j#}^4AoMr#!$RlxE?Se{OGVj6C@MEk z%5BJ)e)*fhG^-+=i5U*^tNhkZy(*%-_e64Dx#Oy+uX|2N__VC9JZI>TcI-}@n}G8P zzV!WE9}NtTy#J%MVDf^A|6G^(>@GhWvm!p>?DL1xy*_#me{g4&UamW&9BeE)x&F;m ztM4}hj23&IPF&N~*=(IOsidU&_@jSKKGS7nJgPZu4m7SkUcItr(?8`+v+`!!KX`uW z;?COne)BFnTu_RddVK1to1fzT%H}>fw99SL@Arnu?^my~Xs|z%TE&&*rJ_?_lv&sP zTb^HcmQ$Baa>61pafLFL$Y|BnpY2Z=i(YwJxisx$J+(7<`^lE?Gh9P|9ucsd_>H;Z zI<H5PuyT~g$_=ycizW1@?dkhyGHEr7^)0ukgTFV1sA$f+er`fmAd~aYX$g(|n-ve= zS~KHVdbh;yNrr7)zn12oJoGv+<msOqE(`8X=Z)St&HSxhRWQ5ekr}LJ6R!rbcP;1O z;;Mc5OQJZX<|NnrOBYm?nE$6FF^5e3#i3d=`Q3S@>j$np4{WyU-NPN}ko#o<=g$Qm z8)jVD5v7^<>Drus3Clk(+y8g1rAAZudk6IomDNkK1s;Fc_?%tx{FMW1!|u9h39B*& zEOwJJG<I9Pa=ZTA%r#wY22=a4pX6d)F7>LdYHNR~YX7qjhdy{b_x@+{++?m0&q~vs zwsz*Mo6_WT4j%Y^=c(N6x(Q#FmZ!dpx!4&S*r_}HM@O4OL(&iDEq|_UHM=Vudaoqm zv)EtH9a8hI-I$g>Rk2ymyl+Rb4Xa!6y$k%AnYW%U`TXOm&b58hwrqK<r*_3G{`435 zg9S2;Cyp6+<vdY2bTfBr)j5^4=y$qWb$8#aGF+8@L1N01idXduW>2`2e7)-%gFt3g zT%q{yS<@{g<Nk&}s*Q`E@_{k(QB|vCrJe1BZ})dFS_e4)X#P~u9IgK`?!=VbVuc;W zFA`sT3>NNSF8ynE|G2{cqcT}CQMo&(@f`f^?QT{dJS!!>_{&9!xZ038&68QW<R^OG zoVru0#V^qPe6G!Noi$Te-Jcs4bGYSW*XNecr&*dp-a0?)b(yy9=vnWVdIvwf^ws!# zbKA9L*EzGQ1bl+iwCb1+Eer0;SheK&%MQ+!)dGQb()WT}+>brs=g``if5Yl(js5q@ z$7?37?&176)q>BGuY8K+nRV5_E*uKK<-Sr*W#`Ho<<%mucdnb%@z-r}Iz#Ej;#0oA zqQ2eu%6D1G|B=^{V)0qt5{yFIL^o%v&6#*?;dg6~&=+6#CU;vK>Df7Z?mIJCI#tVS zmqGZE5~X`PXY}rv&mMm!LNR6e`@_k8=1okJ6a1&HyxhL??#(lo@_cqK5?GyXY%f#e zc$Pa?VgL0f@6=D~P2aF+RoSIKLHneipR4)yx>J9blc&R`?p426nah4X@;-%owL^C7 z`3|2SE>8~}x!&ZiG;P*|BlkW8OX`Xqi*3LDD*dlThs%pY`Jz`H=e&Nf;YM?k>QV87 zSH9%?KGg2(s@OZ>Pp|y*cdH`vk^?IyEa9Igv3c+AzDuV4Pbcq;UiTn!<$8UAeSM*V z&z(CSZ+gE-FQqGbww|kLn_Iu&<?aZxU5?SW%lg&S6;_}0FP!}QMEM?(`sBF|$Ch-i zW%yC@?cQs#t{sstAJ%1@IXva=oo&(oH^^KF@G5forpc>6weM!eyczp`d|J6^+Uc-U z=F8mux6EIV!v5=yVq;ac=qr<iXuYXxlUdilIbo)v|AG6gz<INI@v$pU+$nl>J-%fj zulf0>KQ1g?^&?O3@7w&T>eeTZ-@0fjCKhGAeYW&v-$%Qa9uZ!$vT%Nd!~)UxOBAI= zW8U`LpZl!yUM<L5=hcJqn&<7BujJzuw`cO(-D+I_w4q9IH+Nar;w|gct9L}Richz& zKYPnB=fbVUwKuMosH{kRpBOC`%0DOfd9-uq^A-8=bJdQ{2%QmYv^Ro9KWa|IvyR&O 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 literal 0 HcmV?d00001 diff --git a/20230523/rtech-20230523.tex b/20230523/rtech-20230523.tex new file mode 100644 index 0000000..950b48c --- /dev/null +++ b/20230523/rtech-20230523.tex @@ -0,0 +1,1743 @@ +% rtech-20230523.pdf - Lecture Slides on Computer Technology +% Copyright (C) 2012, 2013, 2014, 2021, 2022, 2023 Peter Gerwinski +% +% This document is free software: you can redistribute it and/or +% modify it either under the terms of the Creative Commons +% Attribution-ShareAlike 3.0 License, or under the terms of the +% GNU General Public License as published by the Free Software +% Foundation, either version 3 of the License, or (at your option) +% any later version. +% +% This document is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this document. If not, see <http://www.gnu.org/licenses/>. +% +% You should have received a copy of the Creative Commons +% Attribution-ShareAlike 3.0 Unported License along with this +% document. If not, see <http://creativecommons.org/licenses/>. + +% README: Der CPU-Stack + +\documentclass[10pt,t]{beamer} + +\usepackage{pgslides} +\usepackage{pdftricks} +%\usepackage[obeyfamily=false,mathrm=mathsf,textrm=sffamily]{siunitx} +%\usepackage{eurosym} +\usepackage{tikz} + +\newcommand{\Cin}{C\raisebox{-0.5ex}{\footnotesize in}} +\newcommand{\Cout}{C\raisebox{-0.5ex}{\footnotesize out}} + +\lstdefinestyle{asm}{basicstyle=\color{structure}, + language={}, + gobble=4} + +\begin{psinputs} + \usepackage[utf8]{inputenc} + \usepackage[german]{babel} + \usepackage[T1]{fontenc} + \usepackage{helvet} + \renewcommand*\familydefault{\sfdefault} + \usepackage{pstricks,pst-grad,pst-circ-pg} + \newcommand{\invisible}{\tiny\color{white}} + \psset{unit=1cm} + \psset{logicLabelstyle=\invisible} + \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}} + \psset{logicSymbolstyle=\logicSymbol} + \newcommand{\Cin}{C\raisebox{-0.5ex}{\footnotesize in}} + \newcommand{\Cout}{C\raisebox{-0.5ex}{\footnotesize out}} +\end{psinputs} + +\title{Rechnertechnik} +\author{Prof.\ Dr.\ rer.\ nat.\ Peter Gerwinski} +\date{23.\ Mai 2022} + +\begin{document} + +\maketitleframe + +\nosectionnonumber{\inserttitle} + +\begin{frame} + + \shownosectionnonumber + + \begin{itemize} + \item[\textbf{1}] \textbf{Einführung} + \item[\textbf{2}] \textbf{Vom Schaltkreis zum Computer} + \item[\textbf{3}] \textbf{Assember-Programmierung} + \begin{itemize} + \item[3.1] Struktur von Assembler-Programmen + \item[3.2] Beispiel: Redcode + \color{medgreen} + \item[3.3] Architekturmerkmale von Prozessore + \color{orange} + \item[3.4] Der CPU-Stack + \color{red} + \item[3.5] Computer-Sprachen + \end{itemize} +% \color{gray} +% \item[\textbf{5}] \textbf{Hardwarenahe Programmierung} +% \item[\textbf{6}] \textbf{Anwender-Software} +% \item[\textbf{7}] \textbf{Bus-Systeme} +% \item[\textbf{8}] \textbf{Pipelining} +% \item[\textbf{9}] \textbf{Ausblick} + \item[\textbf{\dots\hspace{-0.75em}}] + \end{itemize} + +\end{frame} + +\setcounter{section}{2} +\section{Assembler-Programmierung} +\setcounter{subsection}{2} +\subsection{Architekturmerkmale von Prozessoren} +\subsubsection{Speicherarchitekturen} + +\begin{frame} + + \showsubsection + + Oder: Jede Assembler-Sprache ist anders. + + \bigskip + + \showsubsubsection + + Bezeichnungen + \begin{itemize} + \item + \newterm{Bit\/} = 0 oder 1 -- kleinste Einheit an Information + \item + \newterm{Byte\/} = Zusammenfassung mehrerer \newterm{Bits}\\ + zu einer Binärzahl, die ein Zeichen (\newterm{Character\/}) darstellen kann,\\ + häufig 8 Bits (\newterm{Oktett\/}) + \item + \newterm{Speicherwort\/} = Zusammenfassung mehrerer Bits\\ + zu der kleinsten adressierbaren Einheit, häufig 1 Byte + \item + \newterm{RAM\/} = \newterm{Random Access Memory\/} = Hauptspeicher + \item + \newterm{ROM\/} = \newterm{Read Only Memory\/} = nur lesbarer Speicher + \end{itemize} + +\end{frame} + +\begin{frame} + + \showsubsection + + Verschiedene Arten von Speicher + \begin{itemize} + \item + \newterm{Prozessor-Register}\\ + können direkt mit ALU verbunden werden,\\ + besonders schnell (Flipflops),\\ + überschaubare Anzahl von Registern + \item + \newterm{Hauptspeicher}\\ + kann direkt adressiert und mit Prozessor-Registern abgeglichen werden,\\ + heute i.\,d.\,R.\ dynamischer Speicher (Kondensatoren) + \item + \newterm{I/O-Ports}\\ + sind spezielle Speicheradressen, über die\\ + mit externen Geräten kommuniziert wird + \item + \newterm{Massenspeicher}\\ + liegt auf externem Gerät, wird über I/O-Ports angesprochen,\\ + Festplatte, Flash-Speicher, \dots + \end{itemize} + +\end{frame} + +\begin{frame} + + \showsubsubsection + + \begin{itemize} + \item + \newterm{Von-Neumann-Architektur}\\ + Es gibt nur 1 Hauptspeicher, in dem sich sowohl die Befehle\\ + als auch die Daten befinden. + + \begin{onlyenv}<1> + \smallskip + + Vorteil: Flexibilität in der Speichernutzung + + Nachteil: Befehle können überschrieben werden.\\ + $\longrightarrow$ Abstürze und Malware möglich + \end{onlyenv} + + \pause + \item + \newterm{Harvard-Architektur}\\ + Es gibt 2 Hauptspeicher. In einem befinden sich die Befehle,\\ + im anderen die Daten. + + \begin{onlyenv}<2> + \smallskip + + Vorteil: Befehle können nicht überschrieben werden\\ + $\longrightarrow$ sicherer als Von-Neumann-Architektur + + Nachteile: Leitungen zum Speicher (Bus) müssen doppelt vorhanden sein,\\ + freier Befehlsspeicher kann nicht für Daten genutzt werden. + \end{onlyenv} + + \pause + \item + Weitere Kombinationen\\ + Hauptspeicher und I/O-Ports gemeinsam oder getrennt,\\ + Hauptspeicher und Prozessorregister gemeinsam oder getrennt + \end{itemize} + +\end{frame} + +\begin{frame} + + \showsubsubsection + + Beispiele: + \begin{itemize} + \item + Intel IA-32, AMD64:\\ + Von-Neumann-Architektur (plus Speicherschutzmechanismen),\\ + Prozessorregister und I/O-Ports vom Hauptspeicher getrennt + \item + Atmel AVR (z.\,B.\ ATmega):\\ + Harvard-Architektur\\ + (Befehlsspeicher als Flash-Speicher grundsätzlich auch schreibbar),\\ + Prozessorregister und I/O-Ports in gemeinsamem Adressbereich mit Hauptspeicher + \item + 6502, Renesas 740-CPU, Renesas-38000-Mikrocontroller:\\ + Von-Neumann-Architektur,\\ + I/O-Ports in gemeinsamem Adressbereich mit Hauptspeicher,\\ + Prozessorregister und Hauptspeicher getrennt + \end{itemize} + +\end{frame} + +\subsubsection{Registerarchitekturen} + +\begin{frame}[fragile] + + \showsubsubsection + + \vspace*{-\medskipamount} + + \begin{itemize} + \item + Mehrere Register, einzeln ansprechbar + \item + \newterm{Akkumulator\/}: Nur 1 Register kann rechnen. + \item + \newterm{Stack-Architektur\/}: Stapel, "`umgekehrte Polnische Notation"' + \end{itemize} + + \pause + + Operationen: typischerweise nur + \lstinline{=}, \lstinline{+=}, \lstinline{-=}, \lstinline{*=}, \lstinline{/=}, \dots + + \pause + \medskip + + Beispiel: \lstinline{c = a + 2 * b;} + + \pause + \medskip + + \begin{minipage}[t]{2cm} + C, Java:\smallskip\par + \begin{lstlisting}[gobble=6] + R = b; + R *= 2; + R += a; + c = R; + \end{lstlisting} + \end{minipage}\pause + \begin{minipage}[t]{4cm} + Mehrere Register:\smallskip\par + \begin{lstlisting}[style=asm,gobble=6] + movl (b), %eax + imull $2, %eax, %eax + addl (a), %eax + movl %eax, (c) + \end{lstlisting} + \smallskip\par + (IA-32-Assembler) + \end{minipage}\pause + \begin{minipage}[t]{3cm} + Akkumulator:\smallskip\par + \begin{lstlisting}[style=asm,gobble=6] + load (b) + mul $2 + add (a) + store (c) + \end{lstlisting} + \smallskip\par + (Pseudo-Assembler) + \end{minipage}\pause + \begin{minipage}[t]{3cm} + Register-Stack:\smallskip\par + \begin{lstlisting}[style=asm,gobble=6] + push (a) + push (b) + push $2 + mul + add + pop (c) + \end{lstlisting} + \end{minipage} + +\end{frame} + +\begin{frame} + + \showsubsubsection + + Beispiele: + \begin{itemize} + \item + Intel IA-32, AMD64:\\ + Mehrere Register, für verschiedene Zwecke spezialisiert (unübersichtlich),\\[\smallskipamount] + Fließkommaregister: Stack-Architektur + \item + Atmel AVR (z.\,B.\ ATmega):\\ + 32 Register + \item + 6502, Renesas 740-CPU, Renesas-38000-Mikrocontroller:\\ + 3 Register: A, X, Y. Nur A kann rechnen $\longrightarrow$ Akkumulator + \item + Java Virtual Machine (JVM):\\ + Stack-Architektur + \item + Redcode:\\ + Jede Speicherzelle fungiert als Register + \end{itemize} + +\end{frame} + +\subsubsection{Befehlssätze} + +\begin{frame} + + \showsubsubsection + + \begin{itemize} + \item + \newterm{Reduced Instruction Set Computer (RISC)} + + \smallskip + + wenige, wenig mächtige Befehle + + \begin{onlyenv}<1> + \textarrow\ Programmierung in Assembler für Menschen unkomfortabel\\ + \textarrow\ schnelle Abarbeitung der Befehle + + \medskip + + Beispiel: Atmel AVR + \begin{itemize} + \item + Der ``load immediate''-Befehl funktioniert nur + für die Register 16 bis 31,\\ + nicht für die Register 0 bis 15. + \item + Die meisten Befehle werden in nur 1 Taktzyklus abgearbeitet. + \end{itemize} + + \medskip + + Beispiel: Redcode ICWS-86 + \begin{itemize} + \item + Es gibt indirekte Adressierung mit Prä-Dekrement,\\ + aber nicht mit Prä-Inkrement. + \item + Alle Befehle werden in nur 1 Taktzyklus abgearbeitet. + \end{itemize} + \end{onlyenv} + + \pause + \medskip + \item + \newterm{Complex Instruction Set Computer (CISC)} + + \smallskip + + Umfangreiche Befehlssätze, mächtige Befehle + + \begin{onlyenv}<2> + \textarrow\ komfortable manuelle Programmierung in Assembler\\ + \textarrow\ längere Abarbeitungszeit der einzelnen Befehle + + \smallskip + + Realisierung: "`Prozessor im Prozessor"' -- \newterm{Mikroprogramme} + + \medskip + + Beispiel: Intel IA-32, AMD64 + \begin{itemize} + \item + Es gibt spezielle Befehle für BCD- und String-Operationen. + \item + Befehle benötigen meistens 2 oder mehr,\\ + gelegentlich (z.\,B.\ Fließkomma-Operationen) auch über 100 Taktzyklen. + \end{itemize} + \end{onlyenv} + + \medskip + \pause + \item + \newterm{Very Long Instruction Word (VLIW)\/} und\\ + \newterm{Explicitly Parallel Instruction Computing (EPIC)} + + \smallskip + + mehrere Befehle gleichzeitig ausführbar + + \begin{onlyenv}<3> + \textarrow\ mehr Rechenleistung möglich\\ + \textarrow\ Programmierung sehr aufwendig + + \medskip + + Beispiel: Intel IA-64 + \end{onlyenv} + + \pause + \medskip + \item + \newterm{Orthogonaler Befehlssatz} + + \smallskip + + Jeder Befehl ist mit jeder Adressierungsart kombinierbar. + + \medskip + + Beispiel: Redcode + \end{itemize} + \vspace*{-4cm} + +\end{frame} + +\subsection{Der CPU-Stack\label{CPU-Stack}} +\addtocounter{subsubsection}{-1} +\subsubsection{Was ist ein Stack?} + +\begin{frame}[fragile] + + \showsubsection + \showsubsubsection + + \bigskip + +\iffalse + + \begin{minipage}[b]{6cm} + \begin{center} + "`First In -- First Out"' + + \bigskip + + \begin{picture}(6,4) + \thicklines + \color{structure} + \put(0.5,0){\line(1,0){5}} + + \put(3.5,0){\only<1-5>{\line(0,1){1}}} + \put(4.5,0){\only<1-4>{\line(0,1){1}}} + \put(3.5,1){\only<1-4>{\line(1,0){1}}} + \put(4.0,0.5){\only<1-4>{\makebox(0,0){\lstinline{3}}}} + \put(3.0,1.5){\only<1>{\makebox(0,0)[tl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,-0.45);}}}} + \put(3.0,1.5){\only<1>{\makebox(0,0)[b]{\lstinline{push (3)}}}} + + \put(2.5,0){\only<2-6>{\line(0,1){1}}} + \put(2.5,1){\only<2-5>{\line(1,0){1}}} + \put(3.0,0.5){\only<2-5>{\makebox(0,0){\lstinline{7}}}} + \put(2.0,1.5){\only<2>{\makebox(0,0)[tl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,-0.45);}}}} + \put(2.0,1.5){\only<2>{\makebox(0,0)[b]{\lstinline{push (7)}}}} + + \put(1.5,0){\only<3-6>{\line(0,1){1}}} + \put(1.5,1){\only<3-6>{\line(1,0){1}}} + \put(2.0,0.5){\only<3-6>{\makebox(0,0){\lstinline{137}}}} + \put(1.0,1.5){\only<3>{\makebox(0,0)[tl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,-0.45);}}}} + \put(1.0,1.5){\only<3>{\makebox(0,0)[b]{\lstinline{push (137)}}}} + + \put(4.55,1.05){\only<4>{\makebox(0,0)[bl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,0.45);}}}} + \put(5.00,1.60){\only<4>{\makebox(0,0)[b]{\lstinline{pop ()}: 3}}} + + \put(3.55,1.05){\only<5>{\makebox(0,0)[bl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,0.45);}}}} + \put(4.00,1.60){\only<5>{\makebox(0,0)[b]{\lstinline{pop ()}: 7}}} + + \put(2.55,1.05){\only<6>{\makebox(0,0)[bl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,0.45);}}}} + \put(3.00,1.60){\only<6>{\makebox(0,0)[b]{\lstinline{pop ()}: 137}}} + \end{picture} + + \bigskip + + FIFO = Queue = Reihe + \end{center} + \end{minipage}\hfill + +\fi + + \begin{minipage}[b]{6cm} + \begin{center} + "`Last In -- First Out"' + + \bigskip + + \begin{picture}(6,4) + \thicklines + \color{structure} + \put(1.5,0){\line(1,0){3}} + + \put(2.5,0){\line(0,1){1}} + \put(3.5,0){\line(0,1){1}} + \put(2.5,1){\line(1,0){1}} + \put(3.0,0.5){\makebox(0,0){\lstinline{3}}} + \put(2.0,1.5){\only<1>{\makebox(0,0)[tl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,-0.45);}}}} + \put(2.0,1.5){\only<1>{\makebox(0,0)[b]{\lstinline{push (3)}}}} + + \put(2.5,1){\only<2-5>{\line(0,1){1}}} + \put(3.5,1){\only<2-5>{\line(0,1){1}}} + \put(2.5,2){\only<2-5>{\line(1,0){1}}} + \put(3.0,1.5){\only<2-5>{\makebox(0,0){\lstinline{7}}}} + \put(2.0,2.5){\only<2>{\makebox(0,0)[tl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,-0.45);}}}} + \put(2.0,2.5){\only<2>{\makebox(0,0)[b]{\lstinline{push (7)}}}} + + \put(2.5,2){\only<3-4>{\line(0,1){1}}} + \put(3.5,2){\only<3-4>{\line(0,1){1}}} + \put(2.5,3){\only<3-4>{\line(1,0){1}}} + \put(3.0,2.5){\only<3-4>{\makebox(0,0){\lstinline{137}}}} + \put(2.0,3.5){\only<3>{\makebox(0,0)[tl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,-0.45);}}}} + \put(2.0,3.5){\only<3>{\makebox(0,0)[b]{\lstinline{push (137)}}}} + + \put(3.55,3.05){\only<4>{\makebox(0,0)[bl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,0.45);}}}} + \put(4.00,3.60){\only<4>{\makebox(0,0)[b]{\lstinline{pop ()}: 137}}} + + \put(3.55,2.05){\only<5>{\makebox(0,0)[bl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,0.45);}}}} + \put(4.00,2.60){\only<5>{\makebox(0,0)[b]{\lstinline{pop ()}: 7}}} + + \put(3.55,1.05){\only<6>{\makebox(0,0)[bl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,0.45);}}}} + \put(4.00,1.60){\only<6>{\makebox(0,0)[b]{\lstinline{pop ()}: 3}}} + \end{picture} + + \bigskip + + LIFO = Stack = Stapel + \end{center} + \end{minipage} + +% +% \dots + +\end{frame} +\subsubsection{Implementierung} + +\begin{frame} + + \showsubsection + \showsubsubsection + + Speicher, in dem Werte "`gestapelt"' werden: \newterm{Stack} + + \begin{itemize} + \item + Speicherbereich (ein array) reservieren + \item + Variable (typischerweise: Prozessorregister) als + \newterm{Stack Pointer\/} reservieren \textarrow\ \lstinline{SP} + \item + Assembler-Befehl \lstinline[style=asm]{push foo}: \quad + \lstinline{*SP++ = foo;} + \begin{itemize} + \item + In der Speicherzelle, + auf die der Stack Pointer \lstinline{SP} gerade zeigt,\\ + den Wert \lstinline{foo} speichern. + \item + Danach den Stack Pointer inkrementieren (um 1 erhöhen). + \end{itemize} + \item + Assembler-Befehl \lstinline[style=asm]{pop bar}: \quad + \lstinline{bar = *--SP;} + \begin{itemize} + \item + Zuerst den Stack Pointer dekrementieren (um 1 erniedrigen). + \item + Danach aus der Speicherzelle,\\ + auf die der Stack Pointer \lstinline{SP} gerade zeigt,\\ + einen Wert lesen und in der Variablen \lstinline{bar} speichern. + \end{itemize} + \end{itemize} + + \pause + \medskip + Speziell: Unterprogramme + +\end{frame} + +\subsubsection{Unterprogramme} + +\begin{frame}[fragile] + + \showsubsection + \showsubsubsection + + \begin{minipage}[t]{4.5cm} + Parameter: + \begin{itemize} + \item + Prozessorregister + \item + CPU-Stack + \end{itemize} + + \smallskip + + Rückgabewert: + \begin{itemize} + \item + Prozessorregister + \end{itemize} + \end{minipage}% + \begin{minipage}[t]{5cm} + Aufruf: + \begin{itemize} + \item + \lstinline[style=asm]{push IP}\\ + \lstinline[style=asm]{jmp foo} + {\color{red}\boldmath $\longleftarrow$ mov \#foo IP}\\ + \textarrow\ \lstinline[style=asm]{call foo} + \end{itemize} + Rücksprung: + \begin{itemize} + \item + \lstinline[style=asm]{pop IP}\\ + \textarrow\ \lstinline[style=asm]{ret} + \end{itemize} + \end{minipage} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + \showsubsubsection + + \begin{minipage}[t]{4.5cm} + Parameter: + \begin{itemize} + \item + Prozessorregister + \item + CPU-Stack + \end{itemize} + + \smallskip + + Rückgabewert: + \begin{itemize} + \item + Prozessorregister + \end{itemize} + \end{minipage}% + \begin{minipage}[t]{5cm} + Aufruf: + \begin{itemize} + \item + \lstinline[style=asm]{push IP}\\ + \lstinline[style=asm]{jmp foo} + {\color{red}\boldmath $\longleftarrow$ mov \#foo IP}\\ + \textarrow\ \lstinline[style=asm]{call foo} + \end{itemize} + Rücksprung: + \begin{itemize} + \item + \lstinline[style=asm]{pop IP}\\ + \textarrow\ \lstinline[style=asm]{ret} + \end{itemize} + \end{minipage} + + \bigskip + + \subsubsection{Lokale Variable} + \showsubsubsection + + \dots\ speichert man oft ebenfalls auf dem Stack. + + \smallskip + + Speicherplatz reservieren: Stack-Pointer modifizieren + + \medskip + + \newterm{Buffer Overflow\/}:\\ + Über die Grenzen einer lokalen Variablen hinausschreiben,\\ + dabei Rücksprungadresse überschreiben \textarrow\ Absturz + +\end{frame} + +\subsubsection{Register sichern} + +\begin{frame} + + \showsubsection + \showsubsubsection + + Ein Unterprogramm verändert Registerinhalte. + \begin{itemize} + \item + im Hauptprogramm nötigenfalls vor Aufruf sichern + \item + im Unterprogramm vor Benutzung sichern + \item + Kombinationen (manche Register so, manche so) + \end{itemize} + +\end{frame} + +\subsection{Computer-Sprachen} +\subsubsection{Maschinensprache} + +\iffalse + +\begin{frame} + + \showsubsection + \showsubsubsection + + \strut\hfill + \begin{minipage}{6.5cm} + \vspace*{-1.7cm} + \small + Computer + \begin{itemize}\itemsep0pt + \item Rechenwerk (ALU) + \item Speicher: Register,\\ + adressierbarer Hauptspeicher + \item Takt: Befehle abarbeiten + \item Peripherie: Kommunikation\\ + mit der Außenwelt + \arrowitem in Maschinensprache programmierbar + \end{itemize} + \end{minipage}\hspace*{-0.5cm} + + In jedem Takt: + \begin{itemize} + \item + dort aus dem Hauptspeicher lesen, wohin das Register \lstinline{IP} zeigt\\ + \textarrow\ \newterm{Befehl\/} (\newterm{Instruction\/} -- \lstinline{IP} = \newterm{Instruction Pointer\/}) + \item + den \newterm{Befehl\/} an den \newterm{Funktion\/}-Eingang der \newterm{ALU\/} legen + \item + auf ähnliche Weise weitere Daten an den \newterm{Akkumulator\/}-\\ + und den \newterm{Daten\/}-Eingang der \newterm{ALU\/} legen + \item + auf ähnliche Weise den \newterm{Ergebnis\/}-Ausgang der \newterm{ALU}\\ + in den Hauptspeicher schreiben + \textarrow\ Befehl ausgeführt + \item + Register \lstinline{IP} hochzählen + \textarrow\ nächster Befehl + \arrowitem + Maschinensprache + \end{itemize} + +\end{frame} + +\fi + +\begin{frame} + + \showsubsection + \showsubsubsection + + \begin{itemize} + \item + Lade- und Speicher-Befehle\\ + arithmetische Befehle\\ + unbedingte und bedingte Sprungbefehle + \arrowitem + Der Computer kann "`alles"' -- \newterm{Turing-Vollständigkeit} + \bigskip + \item + Maschinensprache = Zahlen \textarrow\ für Menschen schwer handhabbar + \arrowitem + Namen für die Befehle: \newterm{Mnemonics} + \arrowitem + \newterm{Assembler\/}-Sprache + \end{itemize} + +\end{frame} + +\subsubsection{\strut{\protect\color{gray}Maschinensprache \protect\textarrow\ }Assembler} + +\begin{frame}[fragile] + + \showsubsubsection + + Beispiel: Intel-x86-16-Bit-Assembler + + \begin{itemize} + \item + Lade- und Speicher-Befehle\hfill + \lstinline{mov}, \dots\\ + arithmetische Befehle\hfill + \lstinline{add}, \lstinline{sub}, \lstinline{inc}, \lstinline{dec}, + \lstinline{xor}, \lstinline{cmp}, \dots\\ + unbedingte und bedingte Sprungbefehle\hfill + \lstinline{jmp}, \lstinline{jz}, \lstinline{jae}, \dots + \item + Register\hfill + \lstinline{ax}, \lstinline{bx}, \dots + \end{itemize} + +% \begin{onlyenv}<1> +% \begin{center} +%% \includegraphics[width=10cm]{programm-screenshot.png} +% \vspace*{-0.5cm} +% \end{center} +% \end{onlyenv} +% \begin{onlyenv}<2-> + + \bigskip + + Beispiel: Atmel-AVR-8-Bit-Assembler + + \begin{itemize} + \item + Lade- und Speicher-Befehle\hfill + \lstinline{ldi}, \lstinline{lds}, \lstinline{sti}, \dots\\ + arithmetische Befehle\hfill + \lstinline{add}, \lstinline{sub}, \lstinline{subi}, + \lstinline{eor}, \lstinline{cp}, \dots\\ + unbedingte und bedingte Sprungbefehle\hfill + \lstinline{rjmp}, \lstinline{brsh}, \lstinline{brlo}, \dots + \item + Register\hfill + \lstinline{r0}, \lstinline{r1}, \dots + \end{itemize} + + \bigskip + + \textarrow\ für jeden Prozessor anders + +% \end{onlyenv} + +\end{frame} + +\subsubsection{\strut{\protect\color{gray}Maschinensprache \protect\textarrow\ Assembler \protect\textarrow\ }Hochsprachen} + +\begin{frame}[fragile] + + \showsubsubsection + + Beispiel: Intel-x86-16-Bit-Assembler + + \begin{itemize} + \item + Lade- und Speicher-Befehle\hfill + \lstinline{mov}, \dots\\ + arithmetische Befehle\hfill + \lstinline{add}, \lstinline{sub}, \lstinline{inc}, \lstinline{dec}, + \lstinline{xor}, \lstinline{cmp}, \dots\\ + unbedingte und bedingte Sprungbefehle\hfill + \lstinline{jmp}, \lstinline{jz}, \lstinline{jae}, \dots + \item + Register\hfill + \lstinline{ax}, \lstinline{bx}, \dots + \end{itemize} + + \bigskip + + Beispiel: Atmel-AVR-8-Bit-Assembler + + \begin{itemize} + \item + Lade- und Speicher-Befehle\hfill + \lstinline{ldi}, \lstinline{lds}, \lstinline{sti}, \dots\\ + arithmetische Befehle\hfill + \lstinline{add}, \lstinline{sub}, \lstinline{subi}, + \lstinline{eor}, \lstinline{cp}, \dots\\ + unbedingte und bedingte Sprungbefehle\hfill + \lstinline{rjmp}, \lstinline{brsh}, \lstinline{brlo}, \dots + \item + Register\hfill + \lstinline{r0}, \lstinline{r1}, \dots + \end{itemize} + + \bigskip + + \textarrow\ für jeden Prozessor anders + + \bigskip + + Hochsprache \textarrow\ für jeden Prozessor gleich + +\end{frame} + +\begin{frame}[fragile] + + \showsubsubsection + + Compiler-Sprachen + \begin{itemize} + \item + \newterm{Compiler\/} übersetzt Hochsprachen-\newterm{Quelltext\/} in die Assembler-Sprache + \item + \newterm{Assembler\/} übersetzt Assembler-Quelltext in die Maschinensprache + \item + Compiler und Assembler sind Programme,\\ + geschrieben in Maschinensprache, Assembler oder einer Hochsprache + \item + Beispiele: Fortran, Algol, Pascal, Ada, C, C++, \dots + \end{itemize} + + \pause + \medskip + Interpreter- oder Skript-Sprachen + \begin{itemize} + \item + \newterm{Interpreter\/} liest Hochsprachen-\newterm{Quelltext\/} und führt ihn sofort aus + \item + Der Interpreter ist ein Programm,\\ + geschrieben in Maschinensprache, Assembler oder einer Hochsprache + \item + Beispiele: Unix-Shell, BASIC, Perl, Python, \dots + \end{itemize} + + \pause + \medskip + Kombinationen + \begin{itemize} + \item + \newterm{Compiler\/} erzeugt \newterm{Zwischencode\/} für eine \newterm{virtuelle Maschine} + \item + \newterm{Interpreter\/} liest Hochsprachen-\newterm{Zwischencode\/} und führt ihn sofort aus + \item + Die virtuelle Maschine ist ein Programm, + geschrieben in Maschinensprache, Assembler, einer Hoch- oder Skript-Sprache + \item + Beispiele: UCSD-Pascal, Java, \dots + \end{itemize} + \medskip + +\end{frame} + +\section{Hardwarenahe Programmierung} +\subsection{Bit-Operationen} +\subsubsection{Zahlensysteme} + +\begin{frame}[fragile] + + \showsection + \vspace*{-\smallskipamount} + \showsubsection + \vspace*{-\medskipamount} + \showsubsubsection + + \begin{tabular}{rlrl} + Basis & Name & Beispiel & Anwendung \\[\smallskipamount] + 2 & Binärsystem & 1\,0000\,0011 & Bit-Operationen \\ + 8 & Oktalsystem & \lstinline,0403, & Dateizugriffsrechte (Unix) \\ + 10 & Dezimalsystem & \lstinline,259, & Alltag \\ + 16 & Hexadezimalsystem & \lstinline,0x103, & Bit-Operationen \\ + 256 & (keiner gebräuchlich) & 0.0.1.3 & IP-Adressen (IPv4) + \end{tabular} + + \bigskip + + \begin{itemize} + \item + Computer rechnen im Binärsystem. + \item + Für viele Anwendungen (z.\,B.\ I/O-Ports, Grafik, \dots) ist es notwendig,\\ + Bits in Zahlen einzeln ansprechen zu können. + \end{itemize} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsubsection + + \begin{tabular}{rlrlrc} + \qquad 000 & \bf 0 \hspace*{1.5cm} & 0000 & \bf 0 & \quad 1000 & \bf 8\\ + 001 & \bf 1 & 0001 & \bf 1 & 1001 & \bf 9\\ + 010 & \bf 2 & 0010 & \bf 2 & 1010 & \bf A\\ + 011 & \bf 3 & 0011 & \bf 3 & 1011 & \bf B\\[\smallskipamount] + 100 & \bf 4 & 0100 & \bf 4 & 1100 & \bf C\\ + 101 & \bf 5 & 0101 & \bf 5 & 1101 & \bf D\\ + 110 & \bf 6 & 0110 & \bf 6 & 1110 & \bf E\\ + 111 & \bf 7 & 0111 & \bf 7 & 1111 & \bf F\\ + \end{tabular} + + \medskip + + \begin{itemize} + \item + Oktal- und Hexadezimalzahlen lassen sich ziffernweise\\ + in Binär-Zahlen umrechnen. + \item + Hexadezimalzahlen sind eine Kurzschreibweise für Binärzahlen,\\ + gruppiert zu jeweils 4 Bits. + \item + Oktalzahlen sind eine Kurzschreibweise für Binärzahlen,\\ + gruppiert zu jeweils 3 Bits. + \item + Trotz Taschenrechner u.\,ä.\ lohnt es sich,\\ + die o.\,a.\ Umrechnungstabelle \textbf{auswendig} zu kennen. + \end{itemize} + +\end{frame} + +\subsubsection{Bit-Operationen in C} + +\begin{frame}[fragile] + + \showsubsubsection + + \begin{tabular}{lll} + C-Operator & Verknüpfung & Anwendung \\[\smallskipamount] + \lstinline,&, & Und & Bits gezielt löschen \\ + \lstinline,|, & Oder & Bits gezielt setzen \\ + \lstinline,^, & Exklusiv-Oder & Bits gezielt invertieren \\ + \lstinline,~, & Nicht & Alle Bits invertieren \\[\smallskipamount] + \lstinline,<<, & Verschiebung nach links & Maske generieren \\ + \lstinline,>>, & Verschiebung nach rechts & Bits isolieren + \end{tabular} + + \bigskip + + Numerierung der Bits: von rechts ab 0 + + \medskip + + \begin{tabular}{ll} + Bit Nr.\ 3 auf 1 setzen: & + \lstinline,a |= 1 << 3;, \\ + Bit Nr.\ 4 auf 0 setzen: & + \lstinline,a &= ~(1 << 4);, \\ + Bit Nr.\ 0 invertieren: & + \lstinline,a ^= 1 << 0;, + \end{tabular} + + \smallskip + + ~~Abfrage, ob Bit Nr.\ 1 gesetzt ist:\quad + \lstinline{if (a & (1 << 1))} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsubsection + + C-Datentypen für Bit-Operationen: + \smallskip\par + \lstinline{#include <stdint.h>} + \medskip\par + \begin{tabular}{lllll} + & 8 Bit & 16 Bit & 32 Bit & 64 Bit \\ + mit Vorzeichen & \lstinline,int8_t, + & \lstinline,int16_t, + & \lstinline,int32_t, + & \lstinline,int64_t, \\ + ohne Vorzeichen & \lstinline,uint8_t, + & \lstinline,uint16_t, + & \lstinline,uint32_t, + & \lstinline,uint64_t, + \end{tabular} + + \bigskip + \bigskip + + Ausgabe: + \smallskip\par + \begin{lstlisting} + #include <stdio.h> + #include <stdint.h> + #include <inttypes.h> + ... + uint64_t x = 42; + printf ("Die Antwort lautet: %" PRIu64 "\n", x); + \end{lstlisting} + +\iffalse + + \bigskip + + Aufgabe: Schreiben Sie C-Funktionen, die ein "`Array von Bits"' realisieren, z.\,B. + + \smallskip + + \begin{tabular}[t]{ll} + \lstinline|void set_bit (int i);| & Bei Index $i$ auf 1 setzen \\ + \lstinline|void clear_bit (int i);| & Bei Index $i$ auf 0 setzen \\ + \lstinline|int get_bit (int i);| & Bei Index $i$ lesen + \end{tabular} + + \medskip + + Hinweise: + \begin{itemize} + \item + Die Größe des Bit-"`Arrays"' (z.\,B.\ 1000) dürfen Sie als \emph{vorher bekannt\/} voraussetzen. + \item + Sie benötigen ein Array, z.\,B.\ von \lstinline|char|- oder \lstinline|int|-Variablen. + \item + Sie benötigen eine Division (\lstinline|/|) sowie den Divisionsrest (Modulo: \lstinline|%|). + \end{itemize} + +\fi + +\end{frame} + +\subsection{I/O-Ports} + +\begin{frame}[fragile] + +% \showsection + \showsubsection + \vspace*{-1.5\medskipamount} + {\large\textbf{\color{structure}4.3\quad Interrupts}} + + \bigskip + + Kommunikation mit externen Geräten + + \bigskip + + \begin{center} + \includegraphics{io-ports-and-interrupts.pdf} + \end{center} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + In Output-Port schreiben = Aktoren ansteuern + + Beispiel: LED + + \medskip + + \begin{lstlisting} + #include <avr/io.h> + ... + DDRC = 0x70; + PORTC = 0x40; + \end{lstlisting} + \begin{picture}(0,0) + \put(3,0.67){\begin{minipage}{3cm} + \color{red}% + binär: 0111\,0000\\ + binär: 0100\,0000 + \end{minipage}} + \put(10,0.67){\makebox(0,0)[r]{\color{red}Herstellerspezifisch!}} + \end{picture} + + \bigskip + + \lstinline{DDR} = Data Direction Register\\ + Bit = 1 für Output-Port\\ + Bit = 0 für Input-Port + + \bigskip + + \emph{Details: siehe Datenblatt und Schaltplan} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + Aus Input-Port lesen = Sensoren abfragen + + Beispiel: Taster + + \medskip + + \begin{lstlisting} + #include <avr/io.h> + ... + DDRC = 0xfd; + while ((PINC & 0x02) == 0) + ; /* just wait */ + \end{lstlisting} + \begin{picture}(0,0)(-1.5,-0.42) + \put(3,0.67){\begin{minipage}{3cm} + \color{red}% + binär: 1111\,1101\\ + binär: 0000\,0010 + \end{minipage}} + \put(10,0.67){\makebox(0,0)[r]{\color{red}Herstellerspezifisch!}} + \end{picture} + + \bigskip + + \lstinline{DDR} = Data Direction Register\\ + Bit = 1 für Output-Port\\ + Bit = 0 für Input-Port + + \bigskip + + \emph{Details: siehe Datenblatt und Schaltplan} + + \bigskip + + Praktikumsaufgabe: Druckknopfampel + +\end{frame} + +\subsection{Interrupts} + +\begin{frame}[fragile] + + \showsubsection + + Externes Gerät ruft (per Stromsignal) Unterprogramm auf + + Zeiger hinterlegen: "`Interrupt-Vektor"' + + Beispiel: eingebaute Uhr\hfill + \makebox(0,0)[tr]{% + \only<1->{\begin{minipage}[t]{4.7cm} + \vspace*{-0.3cm}% + statt Zählschleife (\lstinline{_delay_ms}):\\ + Hauptprogramm kann\\ + andere Dinge tun + \end{minipage}}% + } + + \medskip + + \begin{lstlisting} + #include <avr/interrupt.h> + + ... + + + ISR (TIMER0B_COMP_vect) + { + PORTD ^= 0x40; + } + \end{lstlisting} + \begin{picture}(0,0) + \color{red} + \put(1.9,3.1){\makebox(0,0)[tr]{\tikz{\draw[-latex](0,0)--(-1.4,-1.0);}}} + \put(2.0,3.2){\makebox(0,0)[l]{"`Dies ist ein Interrupt-Handler."'}} + \put(2.3,2.6){\makebox(0,0)[tr]{\tikz{\draw[-latex](0,0)--(-0.6,-0.55);}}} + \put(2.4,2.6){\makebox(0,0)[l]{Interrupt-Vektor darauf zeigen lassen}} + \end{picture} + + Initialisierung über spezielle Ports: + \lstinline{TCCR0B}, \lstinline{TIMSK0} + + \bigskip + + \emph{Details: siehe Datenblatt und Schaltplan} + + \vspace*{-2.5cm}\hfill + {\color{red}Herstellerspezifisch!}% + \hspace*{1cm} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + Externes Gerät ruft (per Stromsignal) Unterprogramm auf + + Zeiger hinterlegen: "`Interrupt-Vektor"' + + Beispiel: Taster\hfill + \makebox(0,0)[tr]{% + \begin{minipage}[t]{4.7cm} + \vspace*{-0.3cm}% + statt \newterm{Busy Waiting\/}:\\ + Hauptprogramm kann\\ + andere Dinge tun + \end{minipage}} + + \medskip + + \begin{lstlisting} + #include <avr/interrupt.h> + ... + + ISR (INT0_vect) + { + PORTD ^= 0x40; + } + \end{lstlisting} + + \medskip + + Initialisierung über spezielle Ports: + \lstinline{EICRA}, \lstinline{EIMSK} + + \bigskip + + \emph{Details: siehe Datenblatt und Schaltplan} + + \vspace*{-2.5cm}\hfill + {\color{red}Herstellerspezifisch!}% + \hspace*{1cm} + +\end{frame} + +\subsection{volatile-Variable} + +\begin{frame}[fragile] + + \showsubsection + + Externes Gerät ruft (per Stromsignal) Unterprogramm auf + + Zeiger hinterlegen: "`Interrupt-Vektor"' + + Beispiel: Taster + + \vspace*{-2.5pt} + + \begin{minipage}[t]{5cm} + \begin{onlyenv}<1> + \begin{lstlisting}[gobble=8] + ¡#include <avr/interrupt.h> + ... + + uint8_t key_pressed = 0; + + ISR (INT0_vect) + { + key_pressed = 1; + }¿ + \end{lstlisting} + \end{onlyenv} + \begin{onlyenv}<2> + \begin{lstlisting}[gobble=8] + ¡#include <avr/interrupt.h> + ... + + volatile uint8_t key_pressed = 0; + + ISR (INT0_vect) + { + key_pressed = 1; + }¿ + \end{lstlisting} + \end{onlyenv} + \end{minipage}\hfill + \begin{minipage}[t]{6cm} + \begin{lstlisting}[gobble=6] + ¡int main (void) + { + ... + + while (1) + { + while (!key_pressed) + ; /* just wait */ + PORTD ^= 0x40; + key_pressed = 0; + } + return 0; + }¿ + \end{lstlisting} + \end{minipage} + + \pause + \begin{picture}(0,0) + \color{red} + \put(10.3,4.0){\makebox(0,0)[b]{\begin{minipage}{6cm} + \begin{center} + \textbf{volatile}:\\ + Speicherzugriff\\ + nicht wegoptimieren + \end{center} + \end{minipage}}} + \put(10.3,3.95){\makebox(0,0)[tr]{\tikz{\draw[-latex](0,0)--(-0.5,-0.9);}}} + \end{picture} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + Was ist eigentlich \lstinline{PORTD}? + + \bigskip + \pause + + \lstinline[style=cmd]{avr-gcc -Wall -Os -mmcu=atmega328p blink-3.c -E} + + \bigskip + \pause + \lstinline{PORTD = 0x01;}\\ + \textarrow\quad + \lstinline[style=terminal]{(*(volatile uint8_t *)((0x0B) + 0x20)) = 0x01;}\\ + \pause + \begin{picture}(0,2)(0,-1.7) + \color{red} + \put(5.75,0.3){$\underbrace{\rule{2.95cm}{0pt}}_{\mbox{Zahl: \lstinline|0x2B|}}$} + \pause + \put(1.55,0.3){$\underbrace{\rule{4.0cm}{0pt}}_{\mbox{\shortstack[t]{Umwandlung in Zeiger\\ + auf \lstinline|volatile uint8_t|}}}$} + \pause + \put(1.32,-1){\makebox(0,0)[b]{\tikz{\draw[-latex](0,0)--(0,1.3)}}} + \put(1.12,-1.1){\makebox(0,0)[tl]{Dereferenzierung des Zeigers}} + \end{picture} + + \pause + \textarrow\quad + \lstinline|volatile uint8_t|-Variable an Speicheradresse \lstinline|0x2B| + + \pause + \bigskip + \bigskip + + \textarrow\quad + \lstinline|PORTA = PORTB = PORTC = PORTD = 0| ist eine schlechte Idee. + +\end{frame} + +\subsection{Byte-Reihenfolge -- Endianness} +\subsubsection{Konzept} + +\begin{frame}[fragile] + + \showsubsection + \showsubsubsection + + Eine Zahl geht über mehrere Speicherzellen.\\ + Beispiel: 16-Bit-Zahl in 2 8-Bit-Speicherzellen + + \smallskip + + Welche Bits liegen wo? + +% \pause + \bigskip + + $1027 = 1024 + 2 + 1 = 0000\,0100\,0000\,0011_2 = 0403_{16}$ + +% \pause + \bigskip + Speicherzellen: + + \medskip + \begin{tabular}{|c|c|l}\cline{1-2} + \raisebox{-0.25ex}{04} & \raisebox{-0.25ex}{03} & \strut Big-Endian "`großes Ende zuerst"' \\\cline{1-2} + \multicolumn{2}{c}{} & % \pause + für Menschen leichter lesbar % \pause + \\ + \multicolumn{3}{c}{} \\[-5pt]\cline{1-2} + \raisebox{-0.25ex}{03} & \raisebox{-0.25ex}{04} & \strut Little-Endian "`kleines Ende zuerst"' \\\cline{1-2} + \multicolumn{2}{c}{} & % \pause + bei Additionen effizienter + \end{tabular} + +% \pause + \medskip + \textarrow\ Geschmackssache +% \pause\\ + \quad\textbf{\dots\ außer bei Datenaustausch!} + +% \pause +% \bigskip +% +% Aber: nicht verwechseln! \qquad $0304_{16} = 772$ + +\end{frame} + +\begin{frame} + + \showsubsection + \showsubsubsection + + Eine Zahl geht über mehrere Speicherzellen.\\ + Beispiel: 16-Bit-Zahl in 2 8-Bit-Speicherzellen + + \smallskip + + Welche Bits liegen wo? + + \medskip + + \textarrow\ Geschmackssache\\ + \textbf{\dots\ außer bei Datenaustausch!} + + \begin{itemize} + \item + Dateiformate + \item + Datenübertragung + \end{itemize} + +\end{frame} + +\subsubsection{Dateiformate} + +\begin{frame} + + \showsubsection + \showsubsubsection + + Audio-Formate: Reihenfolge der Bytes in 16- und 32-Bit-Zahlen + \begin{itemize} + \item + RIFF-WAVE-Dateien (\file{.wav}): Little-Endian + \item + Au-Dateien (\file{.au}): Big-Endian +% \pause + \item + ältere AIFF-Dateien (\file{.aiff}): Big-Endian + \item + neuere AIFF-Dateien (\file{.aiff}): Little-Endian + \end{itemize} + +% \pause + \bigskip + + Grafik-Formate: Reihenfolge der Bits in den Bytes + \begin{itemize} + \item + PBM-Dateien: Big-Endian\only<1->{, MSB first} + \item + XBM-Dateien: Little-Endian\only<1->{, LSB first} + \end{itemize} + \only<1->{MSB/LSB = most/least significant bit} + +\end{frame} + +\subsubsection{Datenübertragung} + +\begin{frame} + + \showsubsection + \showsubsubsection + + \begin{itemize} + \item + RS-232 (serielle Schnittstelle): LSB first + \item + I$^2$C: MSB first + \item + USB: beides + \pause + \medskip + \item + Ethernet: LSB first + \item + TCP/IP (Internet): Big-Endian + \end{itemize} + +\end{frame} + +\iffalse + +\subsection{Binärdarstellung negativer Zahlen} + +\begin{frame}[fragile] + + \showsubsection + + Speicher ist begrenzt!\\ + \textarrow\ feste Anzahl von Bits + + \medskip + + 8-Bit-Zahlen ohne Vorzeichen: \lstinline{uint8_t}\\ + \textarrow\ Zahlenwerte von \lstinline{0x00} bis \lstinline{0xff} = 0 bis 255\\ + \pause + \textarrow\ 255 + 1 = 0 + + \pause + \medskip + + 8-Bit-Zahlen mit Vorzeichen: \lstinline{int8_t}\\ + \lstinline{0xff} = 255 ist die "`natürliche"' Schreibweise für $-1$.\\ + \pause + \textarrow\ Zweierkomplement + + \pause + \medskip + + Oberstes Bit = 1: negativ\\ + Oberstes Bit = 0: positiv\\ + \textarrow\ 127 + 1 = $-128$ + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + Speicher ist begrenzt!\\ + \textarrow\ feste Anzahl von Bits + + \medskip + + 16-Bit-Zahlen ohne Vorzeichen: + \lstinline{uint16_t}\hfill\lstinline{uint8_t}\\ + \textarrow\ Zahlenwerte von \lstinline{0x0000} bis \lstinline{0xffff} + = 0 bis 65535\hfill 0 bis 255\\ + \textarrow\ 65535 + 1 = 0\hfill 255 + 1 = 0 + + \medskip + + 16-Bit-Zahlen mit Vorzeichen: + \lstinline{int16_t}\hfill\lstinline{int8_t}\\ + \lstinline{0xffff} = 66535 ist die "`natürliche"' Schreibweise für $-1$.\hfill + \lstinline{0xff} = 255 = $-1$\\ + \textarrow\ Zweierkomplement + + \medskip + + Oberstes Bit = 1: negativ\\ + Oberstes Bit = 0: positiv\\ + \textarrow\ 32767 + 1 = $-32768$ + + \bigskip + Literatur: \url{http://xkcd.com/571/} + +\end{frame} + +\fi + +\begin{frame}[fragile] + + \showsubsection + + Frage: \emph{Für welche Zahl steht der Speicherinhalt\, + \raisebox{2pt}{% + \tabcolsep0.25em + \begin{tabular}{|c|c|}\hline + \rule{0pt}{11pt}a3 & 90 \\\hline + \end{tabular}} + (hexadezimal)?} + + \pause + \smallskip + Antwort: \emph{Das kommt darauf an.} ;--) + + \pause + \medskip + Little-Endian: + + \smallskip + + \begin{tabular}{lrl} + als \lstinline,int8_t,: & $-93$ & (nur erstes Byte)\\ + als \lstinline,uint8_t,: & $163$ & (nur erstes Byte)\\ + als \lstinline,int16_t,: & $-28509$\\ + als \lstinline,uint16_t,: & $37027$\\ + \lstinline,int32_t, oder größer: & $37027$ + & (zusätzliche Bytes mit Nullen aufgefüllt) + \end{tabular} + + \pause + \medskip + Big-Endian: + + \smallskip + + \begin{tabular}{lrl} + als \lstinline,int8_t,: & $-93$ & (nur erstes Byte)\\ + als \lstinline,uint8_t,: & $163$ & (nur erstes Byte)\\ + als \lstinline,int16_t,: & $-23664$\\ + als \lstinline,uint16_t,: & $41872$\\ als \lstinline,int32_t,: & $-1550843904$ & (zusätzliche Bytes\\ + als \lstinline,uint32_t,: & $2744123392$ & mit Nullen aufgefüllt)\\ + als \lstinline,int64_t,: & $-6660823848880963584$\\ + als \lstinline,uint64_t,: & $11785920224828588032$\\ + \end{tabular} + + \vspace*{-1cm} + +\end{frame} + +\subsection{Speicherausrichtung -- Alignment} + +\begin{frame}[fragile] + + \showsubsection + + \begin{lstlisting} + #include <stdint.h> + + uint8_t a; + uint16_t b; + uint8_t c; + \end{lstlisting} + + \pause + \bigskip + + Speicheradresse durch 2 teilbar -- "`16-Bit-Alignment"' + \begin{itemize} + \item + 2-Byte-Operation: effizienter + \pause + \item + \dots\ oder sogar nur dann erlaubt + \pause + \arrowitem + Compiler optimiert Speicherausrichtung + \end{itemize} + + \medskip + + \pause + \begin{minipage}{3cm} + \begin{lstlisting}[gobble=6] + ¡uint8_t a; + uint8_t dummy; + uint16_t b; + uint8_t c;¿ + \end{lstlisting} + \end{minipage} + \pause + \begin{minipage}{3cm} + \begin{lstlisting}[gobble=6] + ¡uint8_t a; + uint8_t c; + uint16_t b;¿ + \end{lstlisting} + \end{minipage} + + \pause + \vspace{-1.75cm} + \strut\hfill + \begin{minipage}{6.5cm} + Fazit: + \begin{itemize} + \item + \textbf{Adressen von Variablen\\ + sind systemabhängig} + \item + Bei Definition von Datenformaten\\ + Alignment beachten \textarrow\ effizienter + \end{itemize} + \end{minipage} + +\end{frame} + +\end{document} diff --git a/20230523/rtech-20230523.txt b/20230523/rtech-20230523.txt new file mode 100644 index 0000000..5dfc1ac --- /dev/null +++ b/20230523/rtech-20230523.txt @@ -0,0 +1,15 @@ +Stack-Alignment beim Aufruf von printf(), 23.05.2023, 12:48:23 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +https://stackoverflow.com/questions/38335212/calling-printf-in-x86-64-using-gnu-assembler + +Vor dem Aufruf von printf() muß der Stack auf 16 oder 32 Bytes +ausgerichtet sein (16- bzw. 32-Byte-Alignment). + +32 Bytes sind notwendig, wenn das Vektor-Register __m256 +auf den Stack gelegt wird. + +Innerhalb von main(): Stack nur auf 8 Bytes ausgerichtet. +Wir subtrahieren 24 von %rsp, bevor wir printf() aufrufen. +8 von diesen 24 Bytes verwenden wir für Variable. + +Bei ARMv7-A (32 Bit) scheint ein 8- oder 16-Byte-Alignment zu genügen. diff --git a/20230523/test-arm-01.c b/20230523/test-arm-01.c new file mode 100644 index 0000000..85b2c1b --- /dev/null +++ b/20230523/test-arm-01.c @@ -0,0 +1,9 @@ +#include <stdio.h> + +int main (void) +{ + volatile int a = 7; + volatile int b = 6; + printf ("a + b = %d\n", a + b); + return 0; +} diff --git a/20230523/test-arm-01.s-arm b/20230523/test-arm-01.s-arm new file mode 100644 index 0000000..1e0aaf0 --- /dev/null +++ b/20230523/test-arm-01.s-arm @@ -0,0 +1,52 @@ + .arch armv7-a + .eabi_attribute 28, 1 + .eabi_attribute 20, 1 + .eabi_attribute 21, 1 + .eabi_attribute 23, 3 + .eabi_attribute 24, 1 + .eabi_attribute 25, 1 + .eabi_attribute 26, 2 + .eabi_attribute 30, 1 + .eabi_attribute 34, 1 + .eabi_attribute 18, 4 + .file "test-arm-01.c" + .text + .align 1 + .global main + .arch armv7-a + .syntax unified + .thumb + .thumb_func + .fpu vfpv3-d16 + .type main, %function +main: + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + push {lr} + sub sp, sp, #12 + movs r3, #7 + str r3, [sp, #4] + movs r3, #6 + str r3, [sp] + ldr r1, [sp, #4] + ldr r3, [sp] + add r1, r1, r3 + ldr r0, .L3 +.LPIC0: + add r0, pc + bl printf(PLT) + movs r0, #0 + add sp, sp, #12 + @ sp needed + ldr pc, [sp], #4 +.L4: + .align 2 +.L3: + .word .LC0-(.LPIC0+4) + .size main, .-main + .section .rodata.str1.4,"aMS",%progbits,1 + .align 2 +.LC0: + .ascii "a + b = %d\012\000" + .ident "GCC: (Debian 8.3.0-2) 8.3.0" + .section .note.GNU-stack,"",%progbits diff --git a/20230523/test-arm-01.s-x86 b/20230523/test-arm-01.s-x86 new file mode 100644 index 0000000..bad49f5 --- /dev/null +++ b/20230523/test-arm-01.s-x86 @@ -0,0 +1,30 @@ + .file "test-arm-01.c" + .text + .section .rodata.str1.1,"aMS",@progbits,1 +.LC0: + .string "a + b = %d\n" + .text + .globl main + .type main, @function +main: +.LFB11: + .cfi_startproc + subq $24, %rsp + .cfi_def_cfa_offset 32 + movl $7, 12(%rsp) + movl $6, 8(%rsp) + movl 12(%rsp), %esi + movl 8(%rsp), %eax + addl %eax, %esi + leaq .LC0(%rip), %rdi + movl $0, %eax + call printf@PLT + movl $0, %eax + addq $24, %rsp + .cfi_def_cfa_offset 8 + ret + .cfi_endproc +.LFE11: + .size main, .-main + .ident "GCC: (Debian 8.3.0-6) 8.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/20230523/test-arm-01.s-x86-Os b/20230523/test-arm-01.s-x86-Os new file mode 100644 index 0000000..c51719a --- /dev/null +++ b/20230523/test-arm-01.s-x86-Os @@ -0,0 +1,30 @@ + .file "test-arm-01.c" + .text + .section .rodata.str1.1,"aMS",@progbits,1 +.LC0: + .string "a + b = %d\n" + .section .text.startup,"ax",@progbits + .globl main + .type main, @function +main: +.LFB0: + .cfi_startproc + subq $24, %rsp + .cfi_def_cfa_offset 32 + leaq .LC0(%rip), %rdi + movl $7, 8(%rsp) + movl $6, 12(%rsp) + movl 8(%rsp), %esi + movl 12(%rsp), %eax + addl %eax, %esi + xorl %eax, %eax + call printf@PLT + xorl %eax, %eax + addq $24, %rsp + .cfi_def_cfa_offset 8 + ret + .cfi_endproc +.LFE0: + .size main, .-main + .ident "GCC: (Debian 8.3.0-6) 8.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/20230523/test-arm-02.c b/20230523/test-arm-02.c new file mode 100644 index 0000000..92b34cb --- /dev/null +++ b/20230523/test-arm-02.c @@ -0,0 +1,8 @@ +#include <stdio.h> + +int main (void) +{ + volatile int a = 7; + volatile int b = 6; + return 0; +} diff --git a/20230523/test-arm-02.s-arm b/20230523/test-arm-02.s-arm new file mode 100644 index 0000000..637f89b --- /dev/null +++ b/20230523/test-arm-02.s-arm @@ -0,0 +1,37 @@ + .arch armv7-a + .eabi_attribute 28, 1 + .eabi_attribute 20, 1 + .eabi_attribute 21, 1 + .eabi_attribute 23, 3 + .eabi_attribute 24, 1 + .eabi_attribute 25, 1 + .eabi_attribute 26, 2 + .eabi_attribute 30, 1 + .eabi_attribute 34, 1 + .eabi_attribute 18, 4 + .file "test-arm-02.c" + .text + .align 1 + .global main + .arch armv7-a + .syntax unified + .thumb + .thumb_func + .fpu vfpv3-d16 + .type main, %function +main: + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 0, uses_anonymous_args = 0 + @ link register save eliminated. + sub sp, sp, #8 + movs r3, #7 + str r3, [sp, #4] + movs r3, #6 + str r3, [sp] + movs r0, #0 + add sp, sp, #8 + @ sp needed + bx lr + .size main, .-main + .ident "GCC: (Debian 8.3.0-2) 8.3.0" + .section .note.GNU-stack,"",%progbits diff --git a/20230523/test-arm-02.s-avr b/20230523/test-arm-02.s-avr new file mode 100644 index 0000000..c615369 --- /dev/null +++ b/20230523/test-arm-02.s-avr @@ -0,0 +1,40 @@ + .file "test-arm-02.c" +__SP_H__ = 0x3e +__SP_L__ = 0x3d +__SREG__ = 0x3f +__tmp_reg__ = 0 +__zero_reg__ = 1 + .text +.global main + .type main, @function +main: + push r28 + push r29 + rcall . + rcall . + in r28,__SP_L__ + in r29,__SP_H__ +/* prologue: function */ +/* frame size = 4 */ +/* stack size = 6 */ +.L__stack_usage = 6 + ldi r24,lo8(7) + ldi r25,0 + std Y+2,r25 + std Y+1,r24 + ldi r24,lo8(6) + ldi r25,0 + std Y+4,r25 + std Y+3,r24 + ldi r24,0 + ldi r25,0 +/* epilogue start */ + pop __tmp_reg__ + pop __tmp_reg__ + pop __tmp_reg__ + pop __tmp_reg__ + pop r29 + pop r28 + ret + .size main, .-main + .ident "GCC: (GNU) 5.4.0" diff --git a/20230523/test-arm-02.s-x86 b/20230523/test-arm-02.s-x86 new file mode 100644 index 0000000..b7f6937 --- /dev/null +++ b/20230523/test-arm-02.s-x86 @@ -0,0 +1,16 @@ + .file "test-arm-02.c" + .text + .globl main + .type main, @function +main: +.LFB11: + .cfi_startproc + movl $7, -4(%rsp) + movl $6, -8(%rsp) + movl $0, %eax + ret + .cfi_endproc +.LFE11: + .size main, .-main + .ident "GCC: (Debian 8.3.0-6) 8.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/20230523/test-arm-03.c b/20230523/test-arm-03.c new file mode 100644 index 0000000..1dc41ef --- /dev/null +++ b/20230523/test-arm-03.c @@ -0,0 +1,10 @@ +#include <stdio.h> + +int main (void) +{ + volatile int a = 7; + volatile int b = 6; + volatile int c = 9; + volatile int d = 11; + return 0; +} diff --git a/20230523/test-arm-03.s-x86 b/20230523/test-arm-03.s-x86 new file mode 100644 index 0000000..d04b263 --- /dev/null +++ b/20230523/test-arm-03.s-x86 @@ -0,0 +1,18 @@ + .file "test-arm-03.c" + .text + .globl main + .type main, @function +main: +.LFB11: + .cfi_startproc + movl $7, -4(%rsp) + movl $6, -8(%rsp) + movl $9, -12(%rsp) + movl $11, -16(%rsp) + movl $0, %eax + ret + .cfi_endproc +.LFE11: + .size main, .-main + .ident "GCC: (Debian 8.3.0-6) 8.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/20230523/test-arm-04.c b/20230523/test-arm-04.c new file mode 100644 index 0000000..acbd05c --- /dev/null +++ b/20230523/test-arm-04.c @@ -0,0 +1,11 @@ +#include <stdio.h> + +int main (void) +{ + volatile int a = 7; + volatile int b = 6; + volatile int c = 9; + volatile int d = 11; + volatile int e = 13; + return 0; +} diff --git a/20230523/test-arm-04.s-x86 b/20230523/test-arm-04.s-x86 new file mode 100644 index 0000000..379ed72 --- /dev/null +++ b/20230523/test-arm-04.s-x86 @@ -0,0 +1,19 @@ + .file "test-arm-04.c" + .text + .globl main + .type main, @function +main: +.LFB11: + .cfi_startproc + movl $7, -4(%rsp) + movl $6, -8(%rsp) + movl $9, -12(%rsp) + movl $11, -16(%rsp) + movl $13, -20(%rsp) + movl $0, %eax + ret + .cfi_endproc +.LFE11: + .size main, .-main + .ident "GCC: (Debian 8.3.0-6) 8.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/20230523/test-arm-05.c b/20230523/test-arm-05.c new file mode 100644 index 0000000..21e888b --- /dev/null +++ b/20230523/test-arm-05.c @@ -0,0 +1,12 @@ +#include <stdio.h> + +int main (void) +{ + volatile int a = 7; + volatile int b = 6; + volatile int c = 9; + volatile int d = 11; + volatile int e = 13; + volatile int f = 17; + return 0; +} diff --git a/20230523/test-arm-05.s-x86 b/20230523/test-arm-05.s-x86 new file mode 100644 index 0000000..cc84fec --- /dev/null +++ b/20230523/test-arm-05.s-x86 @@ -0,0 +1,20 @@ + .file "test-arm-05.c" + .text + .globl main + .type main, @function +main: +.LFB11: + .cfi_startproc + movl $7, -4(%rsp) + movl $6, -8(%rsp) + movl $9, -12(%rsp) + movl $11, -16(%rsp) + movl $13, -20(%rsp) + movl $17, -24(%rsp) + movl $0, %eax + ret + .cfi_endproc +.LFE11: + .size main, .-main + .ident "GCC: (Debian 8.3.0-6) 8.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/20230524/buffer-overflow-01.c b/20230524/buffer-overflow-01.c new file mode 100644 index 0000000..8dfffe0 --- /dev/null +++ b/20230524/buffer-overflow-01.c @@ -0,0 +1,10 @@ +#include <stdio.h> + +int main (void) +{ + char name[10]; + printf ("Ihr Name: "); + scanf ("%s", name); + printf ("Hallo, %s! :-)\n", name); + return 0; +} diff --git a/20230524/buffer-overflow-02.c b/20230524/buffer-overflow-02.c new file mode 100644 index 0000000..dd84b2a --- /dev/null +++ b/20230524/buffer-overflow-02.c @@ -0,0 +1,10 @@ +#include <stdio.h> + +int main (void) +{ + char name[10]; + printf ("Ihr Name: "); + gets (name); + printf ("Hallo, %s! :-)\n", name); + return 0; +} diff --git a/20230524/io-ports-and-interrupts.pdf b/20230524/io-ports-and-interrupts.pdf new file mode 120000 index 0000000..bcd46f7 --- /dev/null +++ b/20230524/io-ports-and-interrupts.pdf @@ -0,0 +1 @@ +../common/io-ports-and-interrupts.pdf \ No newline at end of file diff --git a/20230524/logo-hochschule-bochum-cvh-text-v2.pdf b/20230524/logo-hochschule-bochum-cvh-text-v2.pdf new file mode 120000 index 0000000..4aa99b8 --- /dev/null +++ b/20230524/logo-hochschule-bochum-cvh-text-v2.pdf @@ -0,0 +1 @@ +../common/logo-hochschule-bochum-cvh-text-v2.pdf \ No newline at end of file diff --git a/20230524/logo-hochschule-bochum.pdf b/20230524/logo-hochschule-bochum.pdf new file mode 120000 index 0000000..b6b9491 --- /dev/null +++ b/20230524/logo-hochschule-bochum.pdf @@ -0,0 +1 @@ +../common/logo-hochschule-bochum.pdf \ No newline at end of file diff --git a/20230524/parameters-01-O0-stack-4.s b/20230524/parameters-01-O0-stack-4.s new file mode 100644 index 0000000..7bc1707 --- /dev/null +++ b/20230524/parameters-01-O0-stack-4.s @@ -0,0 +1,56 @@ + .file "parameters-01.c" + .text + .globl sum + .type sum, @function +sum: +.LFB0: + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + movl %edi, -4(%rbp) + movl %esi, -8(%rbp) + movl -4(%rbp), %edx + movl -8(%rbp), %eax + addl %edx, %eax + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE0: + .size sum, .-sum + .section .rodata +.LC0: + .string "c = %d\n" + .text + .globl main + .type main, @function +main: # #include <stdio.h> +.LFB1: # + .cfi_startproc # int sum (int a, int b) + pushq %rbp # { + .cfi_def_cfa_offset 16 # return a + b; + .cfi_offset 6, -16 # } + movq %rsp, %rbp # + .cfi_def_cfa_register 6 # int main (void) + subq $5, %rsp # vorher: 16 # { + movl $6, %esi # int c = sum (7, 6); + movl $7, %edi # printf ("c = %d\n", c); + call sum # return 0; + movl %eax, -4(%rbp) # } + movl -4(%rbp), %eax + movl %eax, %esi + leaq .LC0(%rip), %rdi + movl $0, %eax + call printf@PLT + movl $0, %eax + leave # leave = movq %rbp, %rsp + .cfi_def_cfa 7, 8 # popq %rbp + ret + .cfi_endproc +.LFE1: + .size main, .-main + .ident "GCC: (Debian 8.3.0-6) 8.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/20230524/parameters-01-O0.s b/20230524/parameters-01-O0.s new file mode 100644 index 0000000..7b4fc50 --- /dev/null +++ b/20230524/parameters-01-O0.s @@ -0,0 +1,56 @@ + .file "parameters-01.c" + .text + .globl sum + .type sum, @function +sum: +.LFB0: + .cfi_startproc + pushq %rbp + .cfi_def_cfa_offset 16 + .cfi_offset 6, -16 + movq %rsp, %rbp + .cfi_def_cfa_register 6 + movl %edi, -4(%rbp) + movl %esi, -8(%rbp) + movl -4(%rbp), %edx + movl -8(%rbp), %eax + addl %edx, %eax + popq %rbp + .cfi_def_cfa 7, 8 + ret + .cfi_endproc +.LFE0: + .size sum, .-sum + .section .rodata +.LC0: + .string "c = %d\n" + .text + .globl main + .type main, @function +main: ; #include <stdio.h> +.LFB1: ; + .cfi_startproc ; int sum (int a, int b) + pushq %rbp ; { + .cfi_def_cfa_offset 16 ; return a + b; + .cfi_offset 6, -16 ; } + movq %rsp, %rbp ; + .cfi_def_cfa_register 6 ; int main (void) + subq $16, %rsp ; { + movl $6, %esi ; int c = sum (7, 6); + movl $7, %edi ; printf ("c = %d\n", c); + call sum ; return 0; + movl %eax, -4(%rbp) ; } + movl -4(%rbp), %eax + movl %eax, %esi + leaq .LC0(%rip), %rdi + movl $0, %eax + call printf@PLT + movl $0, %eax + leave ; leave = movq %rbp, %rsp + .cfi_def_cfa 7, 8 ; popq %rbp + ret + .cfi_endproc +.LFE1: + .size main, .-main + .ident "GCC: (Debian 8.3.0-6) 8.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/20230524/parameters-01.c b/20230524/parameters-01.c new file mode 100644 index 0000000..7b973a0 --- /dev/null +++ b/20230524/parameters-01.c @@ -0,0 +1,13 @@ +#include <stdio.h> + +int sum (int a, int b) +{ + return a + b; +} + +int main (void) +{ + int c = sum (7, 6); + printf ("c = %d\n", c); + return 0; +} diff --git a/20230524/parameters-01.s b/20230524/parameters-01.s new file mode 100644 index 0000000..cdaaee4 --- /dev/null +++ b/20230524/parameters-01.s @@ -0,0 +1,36 @@ + .file "parameters-01.c" + .text + .globl sum + .type sum, @function +sum: +.LFB11: + .cfi_startproc + leal (%rdi,%rsi), %eax + ret + .cfi_endproc +.LFE11: + .size sum, .-sum + .section .rodata.str1.1,"aMS",@progbits,1 +.LC0: + .string "c = %d\n" + .text + .globl main + .type main, @function +main: ; #include <stdio.h> +.LFB12: ; + .cfi_startproc ; int sum (int a, int b) + subq $8, %rsp ; { + .cfi_def_cfa_offset 16 ; return a + b; + movl $13, %esi ; } + leaq .LC0(%rip), %rdi ; + movl $0, %eax ; int main (void) + call printf@PLT ; { + movl $0, %eax ; int c = sum (7, 6); + addq $8, %rsp ; printf ("c = %d\n", c); + .cfi_def_cfa_offset 8 ; return 0; + ret ; } + .cfi_endproc +.LFE12: + .size main, .-main + .ident "GCC: (Debian 8.3.0-6) 8.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/20230524/parameters-02.c b/20230524/parameters-02.c new file mode 100644 index 0000000..95f916d --- /dev/null +++ b/20230524/parameters-02.c @@ -0,0 +1,16 @@ +#include <stdio.h> + +void print (int h, int e, int l1, int l2, int o1, + int comma, int space, + int w, int o2, int r, int l3, int d, + int bang, int newline) +{ + printf ("%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + h, e, l1, l2, o1, comma, space, w, o2, r, l3, d, bang, newline); +} + +int main (void) +{ + print ('H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!', '\n'); + return 0; +} diff --git a/20230524/parameters-02.s b/20230524/parameters-02.s new file mode 100644 index 0000000..c6d3a6b --- /dev/null +++ b/20230524/parameters-02.s @@ -0,0 +1,92 @@ + .file "parameters-02.c" + .text + .section .rodata.str1.1,"aMS",@progbits,1 +.LC0: + .string "%c%c%c%c%c%c%c%c%c%c%c%c%c%c" + .text + .globl print + .type print, @function +print: +.LFB11: + .cfi_startproc + subq $16, %rsp + .cfi_def_cfa_offset 24 + movl 80(%rsp), %eax + pushq %rax + .cfi_def_cfa_offset 32 + movl 80(%rsp), %eax + pushq %rax + .cfi_def_cfa_offset 40 + movl 80(%rsp), %eax + pushq %rax + .cfi_def_cfa_offset 48 + movl 80(%rsp), %eax + pushq %rax + .cfi_def_cfa_offset 56 + movl 80(%rsp), %eax # #include <stdio.h> + pushq %rax # + .cfi_def_cfa_offset 64 # void print (int h, int e, int l1, int l2, int o1, + movl 80(%rsp), %eax # int comma, int space, + pushq %rax # int w, int o2, int r, int l3, int d, + .cfi_def_cfa_offset 72 # int bang, int newline) + movl 80(%rsp), %eax # { + pushq %rax # printf ("%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + .cfi_def_cfa_offset 80 # h, e, l1, l2, o1, comma, space, w, o2, r, l3, d, bang, newline); + movl 80(%rsp), %eax # } + pushq %rax # + .cfi_def_cfa_offset 88 # int main (void) + pushq %r9 # { + .cfi_def_cfa_offset 96 # print ('H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!', '\n'); + movl %r8d, %r9d # return 0; + movl %ecx, %r8d + movl %edx, %ecx + movl %esi, %edx + movl %edi, %esi + leaq .LC0(%rip), %rdi + movl $0, %eax + call printf@PLT + addq $88, %rsp + .cfi_def_cfa_offset 8 + ret + .cfi_endproc +.LFE11: + .size print, .-print + .globl main + .type main, @function +main: +.LFB12: + .cfi_startproc + subq $8, %rsp + .cfi_def_cfa_offset 16 + pushq $10 + .cfi_def_cfa_offset 24 + pushq $33 + .cfi_def_cfa_offset 32 + pushq $100 + .cfi_def_cfa_offset 40 + pushq $108 + .cfi_def_cfa_offset 48 + pushq $114 + .cfi_def_cfa_offset 56 + pushq $111 + .cfi_def_cfa_offset 64 + pushq $119 + .cfi_def_cfa_offset 72 + pushq $32 + .cfi_def_cfa_offset 80 + movl $44, %r9d + movl $111, %r8d + movl $108, %ecx + movl $108, %edx + movl $101, %esi + movl $72, %edi + call print + movl $0, %eax + addq $72, %rsp + .cfi_def_cfa_offset 8 + ret + .cfi_endproc +.LFE12: + .size main, .-main + .ident "GCC: (Debian 8.3.0-6) 8.3.0" + .section .note.GNU-stack,"",@progbits diff --git a/20230524/pgslides.sty b/20230524/pgslides.sty new file mode 120000 index 0000000..5be1416 --- /dev/null +++ b/20230524/pgslides.sty @@ -0,0 +1 @@ +../common/pgslides.sty \ No newline at end of file diff --git a/20230524/rtech-20230524.pdf b/20230524/rtech-20230524.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3753b8be31a31e77418d889aa7e876c3d2265de2 GIT binary patch literal 124227 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 literal 0 HcmV?d00001 diff --git a/20230524/rtech-20230524.tex b/20230524/rtech-20230524.tex new file mode 100644 index 0000000..f384fce --- /dev/null +++ b/20230524/rtech-20230524.tex @@ -0,0 +1,1761 @@ +% rtech-20230524.pdf - Lecture Slides on Computer Technology +% Copyright (C) 2012, 2013, 2014, 2021, 2022, 2023 Peter Gerwinski +% +% This document is free software: you can redistribute it and/or +% modify it either under the terms of the Creative Commons +% Attribution-ShareAlike 3.0 License, or under the terms of the +% GNU General Public License as published by the Free Software +% Foundation, either version 3 of the License, or (at your option) +% any later version. +% +% This document is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this document. If not, see <http://www.gnu.org/licenses/>. +% +% You should have received a copy of the Creative Commons +% Attribution-ShareAlike 3.0 Unported License along with this +% document. If not, see <http://creativecommons.org/licenses/>. + +% README: Der CPU-Stack, hardwarenahe Programmierung + +\documentclass[10pt,t]{beamer} + +\usepackage{pgslides} +\usepackage{pdftricks} +%\usepackage[obeyfamily=false,mathrm=mathsf,textrm=sffamily]{siunitx} +%\usepackage{eurosym} +\usepackage{tikz} + +\newcommand{\Cin}{C\raisebox{-0.5ex}{\footnotesize in}} +\newcommand{\Cout}{C\raisebox{-0.5ex}{\footnotesize out}} + +\lstdefinestyle{asm}{basicstyle=\color{structure}, + language={}, + gobble=4} + +\begin{psinputs} + \usepackage[utf8]{inputenc} + \usepackage[german]{babel} + \usepackage[T1]{fontenc} + \usepackage{helvet} + \renewcommand*\familydefault{\sfdefault} + \usepackage{pstricks,pst-grad,pst-circ-pg} + \newcommand{\invisible}{\tiny\color{white}} + \psset{unit=1cm} + \psset{logicLabelstyle=\invisible} + \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}} + \psset{logicSymbolstyle=\logicSymbol} + \newcommand{\Cin}{C\raisebox{-0.5ex}{\footnotesize in}} + \newcommand{\Cout}{C\raisebox{-0.5ex}{\footnotesize out}} +\end{psinputs} + +\title{Rechnertechnik} +\author{Prof.\ Dr.\ rer.\ nat.\ Peter Gerwinski} +\date{24.\ Mai 2022} + +\begin{document} + +\maketitleframe + +\nosectionnonumber{\inserttitle} + +\begin{frame} + + \shownosectionnonumber + + \begin{itemize} + \item[\textbf{1}] \textbf{Einführung} + \item[\textbf{2}] \textbf{Vom Schaltkreis zum Computer} + \item[\textbf{3}] \textbf{Assember-Programmierung} + \begin{itemize} + \item[3.1] Struktur von Assembler-Programmen + \item[3.2] Beispiel: Redcode + \color{medgreen} + \item[3.3] Architekturmerkmale von Prozessore + \color{orange} + \item[3.4] Der CPU-Stack + \color{red} + \item[3.5] Computer-Sprachen + \end{itemize} +% \color{gray} + \item[\textbf{4}] \textbf{Hardwarenahe Programmierung} +% \item[\textbf{6}] \textbf{Anwender-Software} +% \item[\textbf{7}] \textbf{Bus-Systeme} +% \item[\textbf{8}] \textbf{Pipelining} +% \item[\textbf{9}] \textbf{Ausblick} + \item[\textbf{\dots\hspace{-0.75em}}] + \end{itemize} + +\end{frame} + +\setcounter{section}{2} +\section{Assembler-Programmierung} +\setcounter{subsection}{2} +\subsection{Architekturmerkmale von Prozessoren} +\subsubsection{Speicherarchitekturen} + +\begin{frame} + + \showsubsection + + Oder: Jede Assembler-Sprache ist anders. + + \bigskip + + \showsubsubsection + + Bezeichnungen + \begin{itemize} + \item + \newterm{Bit\/} = 0 oder 1 -- kleinste Einheit an Information + \item + \newterm{Byte\/} = Zusammenfassung mehrerer \newterm{Bits}\\ + zu einer Binärzahl, die ein Zeichen (\newterm{Character\/}) darstellen kann,\\ + häufig 8 Bits (\newterm{Oktett\/}) + \item + \newterm{Speicherwort\/} = Zusammenfassung mehrerer Bits\\ + zu der kleinsten adressierbaren Einheit, häufig 1 Byte + \item + \newterm{RAM\/} = \newterm{Random Access Memory\/} = Hauptspeicher + \item + \newterm{ROM\/} = \newterm{Read Only Memory\/} = nur lesbarer Speicher + \end{itemize} + +\end{frame} + +\begin{frame} + + \showsubsection + + Verschiedene Arten von Speicher + \begin{itemize} + \item + \newterm{Prozessor-Register}\\ + können direkt mit ALU verbunden werden,\\ + besonders schnell (Flipflops),\\ + überschaubare Anzahl von Registern + \item + \newterm{Hauptspeicher}\\ + kann direkt adressiert und mit Prozessor-Registern abgeglichen werden,\\ + heute i.\,d.\,R.\ dynamischer Speicher (Kondensatoren) + \item + \newterm{I/O-Ports}\\ + sind spezielle Speicheradressen, über die\\ + mit externen Geräten kommuniziert wird + \item + \newterm{Massenspeicher}\\ + liegt auf externem Gerät, wird über I/O-Ports angesprochen,\\ + Festplatte, Flash-Speicher, \dots + \end{itemize} + +\end{frame} + +\begin{frame} + + \showsubsubsection + + \begin{itemize} + \item + \newterm{Von-Neumann-Architektur}\\ + Es gibt nur 1 Hauptspeicher, in dem sich sowohl die Befehle\\ + als auch die Daten befinden. + + \begin{onlyenv}<1> + \smallskip + + Vorteil: Flexibilität in der Speichernutzung + + Nachteil: Befehle können überschrieben werden.\\ + $\longrightarrow$ Abstürze und Malware möglich + \end{onlyenv} + + \pause + \item + \newterm{Harvard-Architektur}\\ + Es gibt 2 Hauptspeicher. In einem befinden sich die Befehle,\\ + im anderen die Daten. + + \begin{onlyenv}<2> + \smallskip + + Vorteil: Befehle können nicht überschrieben werden\\ + $\longrightarrow$ sicherer als Von-Neumann-Architektur + + Nachteile: Leitungen zum Speicher (Bus) müssen doppelt vorhanden sein,\\ + freier Befehlsspeicher kann nicht für Daten genutzt werden. + \end{onlyenv} + + \pause + \item + Weitere Kombinationen\\ + Hauptspeicher und I/O-Ports gemeinsam oder getrennt,\\ + Hauptspeicher und Prozessorregister gemeinsam oder getrennt + \end{itemize} + +\end{frame} + +\begin{frame} + + \showsubsubsection + + Beispiele: + \begin{itemize} + \item + Intel IA-32, AMD64:\\ + Von-Neumann-Architektur (plus Speicherschutzmechanismen),\\ + Prozessorregister und I/O-Ports vom Hauptspeicher getrennt + \item + Atmel AVR (z.\,B.\ ATmega):\\ + Harvard-Architektur\\ + (Befehlsspeicher als Flash-Speicher grundsätzlich auch schreibbar),\\ + Prozessorregister und I/O-Ports in gemeinsamem Adressbereich mit Hauptspeicher + \item + 6502, Renesas 740-CPU, Renesas-38000-Mikrocontroller:\\ + Von-Neumann-Architektur,\\ + I/O-Ports in gemeinsamem Adressbereich mit Hauptspeicher,\\ + Prozessorregister und Hauptspeicher getrennt + \end{itemize} + +\end{frame} + +\subsubsection{Registerarchitekturen} + +\begin{frame}[fragile] + + \showsubsubsection + + \vspace*{-\medskipamount} + + \begin{itemize} + \item + Mehrere Register, einzeln ansprechbar + \item + \newterm{Akkumulator\/}: Nur 1 Register kann rechnen. + \item + \newterm{Stack-Architektur\/}: Stapel, "`umgekehrte Polnische Notation"' + \end{itemize} + +% \pause + + Operationen: typischerweise nur + \lstinline{=}, \lstinline{+=}, \lstinline{-=}, \lstinline{*=}, \lstinline{/=}, \dots + +% \pause + \medskip + + Beispiel: \lstinline{c = a + 2 * b;} + +% \pause + \medskip + + \begin{minipage}[t]{2cm} + C, Java:\smallskip\par + \begin{lstlisting}[gobble=6] + R = b; + R *= 2; + R += a; + c = R; + \end{lstlisting} + \end{minipage}%\pause + \begin{minipage}[t]{4cm} + Mehrere Register:\smallskip\par + \begin{lstlisting}[style=asm,gobble=6] + movl (b), %eax + imull $2, %eax, %eax + addl (a), %eax + movl %eax, (c) + \end{lstlisting} + \smallskip\par + (IA-32-Assembler) + \end{minipage}%\pause + \begin{minipage}[t]{3cm} + Akkumulator:\smallskip\par + \begin{lstlisting}[style=asm,gobble=6] + load (b) + mul $2 + add (a) + store (c) + \end{lstlisting} + \smallskip\par + (Pseudo-Assembler) + \end{minipage}%\pause + \begin{minipage}[t]{3cm} + Register-Stack:\smallskip\par + \begin{lstlisting}[style=asm,gobble=6] + push (a) + push (b) + push $2 + mul + add + pop (c) + \end{lstlisting} + \end{minipage} + +\end{frame} + +\begin{frame} + + \showsubsubsection + + Beispiele: + \begin{itemize} + \item + Intel IA-32, AMD64:\\ + Mehrere Register, für verschiedene Zwecke spezialisiert (unübersichtlich),\\[\smallskipamount] + Fließkommaregister: Stack-Architektur + \item + Atmel AVR (z.\,B.\ ATmega):\\ + 32 Register + \item + 6502, Renesas 740-CPU, Renesas-38000-Mikrocontroller:\\ + 3 Register: A, X, Y. Nur A kann rechnen $\longrightarrow$ Akkumulator + \item + Java Virtual Machine (JVM):\\ + Stack-Architektur + \item + Redcode:\\ + Jede Speicherzelle fungiert als Register + \end{itemize} + +\end{frame} + +\subsubsection{Befehlssätze} + +\begin{frame} + + \showsubsubsection + + \begin{itemize} + \item + \newterm{Reduced Instruction Set Computer (RISC)} + + \smallskip + + wenige, wenig mächtige Befehle + + \begin{onlyenv}<1> + \textarrow\ Programmierung in Assembler für Menschen unkomfortabel\\ + \textarrow\ schnelle Abarbeitung der Befehle + + \medskip + + Beispiel: Atmel AVR + \begin{itemize} + \item + Der ``load immediate''-Befehl funktioniert nur + für die Register 16 bis 31,\\ + nicht für die Register 0 bis 15. + \item + Die meisten Befehle werden in nur 1 Taktzyklus abgearbeitet. + \end{itemize} + + \medskip + + Beispiel: Redcode ICWS-86 + \begin{itemize} + \item + Es gibt indirekte Adressierung mit Prä-Dekrement,\\ + aber nicht mit Prä-Inkrement. + \item + Alle Befehle werden in nur 1 Taktzyklus abgearbeitet. + \end{itemize} + \end{onlyenv} + + \pause + \medskip + \item + \newterm{Complex Instruction Set Computer (CISC)} + + \smallskip + + Umfangreiche Befehlssätze, mächtige Befehle + + \begin{onlyenv}<2> + \textarrow\ komfortable manuelle Programmierung in Assembler\\ + \textarrow\ längere Abarbeitungszeit der einzelnen Befehle + + \smallskip + + Realisierung: "`Prozessor im Prozessor"' -- \newterm{Mikroprogramme} + + \medskip + + Beispiel: Intel IA-32, AMD64 + \begin{itemize} + \item + Es gibt spezielle Befehle für BCD- und String-Operationen. + \item + Befehle benötigen meistens 2 oder mehr,\\ + gelegentlich (z.\,B.\ Fließkomma-Operationen) auch über 100 Taktzyklen. + \end{itemize} + \end{onlyenv} + + \medskip + \pause + \item + \newterm{Very Long Instruction Word (VLIW)\/} und\\ + \newterm{Explicitly Parallel Instruction Computing (EPIC)} + + \smallskip + + mehrere Befehle gleichzeitig ausführbar + + \begin{onlyenv}<3> + \textarrow\ mehr Rechenleistung möglich\\ + \textarrow\ Programmierung sehr aufwendig + + \medskip + + Beispiel: Intel IA-64 + \end{onlyenv} + + \pause + \medskip + \item + \newterm{Orthogonaler Befehlssatz} + + \smallskip + + Jeder Befehl ist mit jeder Adressierungsart kombinierbar. + + \medskip + + Beispiel: Redcode + \end{itemize} + \vspace*{-4cm} + +\end{frame} + +\subsection{Der CPU-Stack\label{CPU-Stack}} +\addtocounter{subsubsection}{-1} +\subsubsection{Was ist ein Stack?} + +\begin{frame}[fragile] + + \showsubsection + \showsubsubsection + + \bigskip + +\iffalse + + \begin{minipage}[b]{6cm} + \begin{center} + "`First In -- First Out"' + + \bigskip + + \begin{picture}(6,4) + \thicklines + \color{structure} + \put(0.5,0){\line(1,0){5}} + + \put(3.5,0){\only<1-5>{\line(0,1){1}}} + \put(4.5,0){\only<1-4>{\line(0,1){1}}} + \put(3.5,1){\only<1-4>{\line(1,0){1}}} + \put(4.0,0.5){\only<1-4>{\makebox(0,0){\lstinline{3}}}} + \put(3.0,1.5){\only<1>{\makebox(0,0)[tl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,-0.45);}}}} + \put(3.0,1.5){\only<1>{\makebox(0,0)[b]{\lstinline{push (3)}}}} + + \put(2.5,0){\only<2-6>{\line(0,1){1}}} + \put(2.5,1){\only<2-5>{\line(1,0){1}}} + \put(3.0,0.5){\only<2-5>{\makebox(0,0){\lstinline{7}}}} + \put(2.0,1.5){\only<2>{\makebox(0,0)[tl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,-0.45);}}}} + \put(2.0,1.5){\only<2>{\makebox(0,0)[b]{\lstinline{push (7)}}}} + + \put(1.5,0){\only<3-6>{\line(0,1){1}}} + \put(1.5,1){\only<3-6>{\line(1,0){1}}} + \put(2.0,0.5){\only<3-6>{\makebox(0,0){\lstinline{137}}}} + \put(1.0,1.5){\only<3>{\makebox(0,0)[tl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,-0.45);}}}} + \put(1.0,1.5){\only<3>{\makebox(0,0)[b]{\lstinline{push (137)}}}} + + \put(4.55,1.05){\only<4>{\makebox(0,0)[bl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,0.45);}}}} + \put(5.00,1.60){\only<4>{\makebox(0,0)[b]{\lstinline{pop ()}: 3}}} + + \put(3.55,1.05){\only<5>{\makebox(0,0)[bl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,0.45);}}}} + \put(4.00,1.60){\only<5>{\makebox(0,0)[b]{\lstinline{pop ()}: 7}}} + + \put(2.55,1.05){\only<6>{\makebox(0,0)[bl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,0.45);}}}} + \put(3.00,1.60){\only<6>{\makebox(0,0)[b]{\lstinline{pop ()}: 137}}} + \end{picture} + + \bigskip + + FIFO = Queue = Reihe + \end{center} + \end{minipage}\hfill + +\fi + + \begin{minipage}[b]{6cm} + \begin{center} + "`Last In -- First Out"' + + \bigskip + + \begin{picture}(6,4) + \thicklines + \color{structure} + \put(1.5,0){\line(1,0){3}} + + \put(2.5,0){\line(0,1){1}} + \put(3.5,0){\line(0,1){1}} + \put(2.5,1){\line(1,0){1}} + \put(3.0,0.5){\makebox(0,0){\lstinline{3}}} + \put(2.0,1.5){\only<1>{\makebox(0,0)[tl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,-0.45);}}}} + \put(2.0,1.5){\only<1>{\makebox(0,0)[b]{\lstinline{push (3)}}}} + + \put(2.5,1){\only<2-5>{\line(0,1){1}}} + \put(3.5,1){\only<2-5>{\line(0,1){1}}} + \put(2.5,2){\only<2-5>{\line(1,0){1}}} + \put(3.0,1.5){\only<2-5>{\makebox(0,0){\lstinline{7}}}} + \put(2.0,2.5){\only<2>{\makebox(0,0)[tl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,-0.45);}}}} + \put(2.0,2.5){\only<2>{\makebox(0,0)[b]{\lstinline{push (7)}}}} + + \put(2.5,2){\only<3-4>{\line(0,1){1}}} + \put(3.5,2){\only<3-4>{\line(0,1){1}}} + \put(2.5,3){\only<3-4>{\line(1,0){1}}} + \put(3.0,2.5){\only<3-4>{\makebox(0,0){\lstinline{137}}}} + \put(2.0,3.5){\only<3>{\makebox(0,0)[tl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,-0.45);}}}} + \put(2.0,3.5){\only<3>{\makebox(0,0)[b]{\lstinline{push (137)}}}} + + \put(3.55,3.05){\only<4>{\makebox(0,0)[bl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,0.45);}}}} + \put(4.00,3.60){\only<4>{\makebox(0,0)[b]{\lstinline{pop ()}: 137}}} + + \put(3.55,2.05){\only<5>{\makebox(0,0)[bl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,0.45);}}}} + \put(4.00,2.60){\only<5>{\makebox(0,0)[b]{\lstinline{pop ()}: 7}}} + + \put(3.55,1.05){\only<6>{\makebox(0,0)[bl]{\tikz{\draw[-latex, line width=1pt](0,0)--(0.45,0.45);}}}} + \put(4.00,1.60){\only<6>{\makebox(0,0)[b]{\lstinline{pop ()}: 3}}} + \end{picture} + + \bigskip + + LIFO = Stack = Stapel + \end{center} + \end{minipage} + +% +% \dots + +\end{frame} +\subsubsection{Implementierung} + +\begin{frame} + + \showsubsection + \showsubsubsection + + Speicher, in dem Werte "`gestapelt"' werden: \newterm{Stack} + + \begin{itemize} + \item + Speicherbereich (ein array) reservieren + \item + Variable (typischerweise: Prozessorregister) als + \newterm{Stack Pointer\/} reservieren \textarrow\ \lstinline{SP} + \item + Assembler-Befehl \lstinline[style=asm]{push foo}: \quad + \lstinline{*SP++ = foo;} + \begin{itemize} + \item + In der Speicherzelle, + auf die der Stack Pointer \lstinline{SP} gerade zeigt,\\ + den Wert \lstinline{foo} speichern. + \item + Danach den Stack Pointer inkrementieren (um 1 erhöhen). + \end{itemize} + \item + Assembler-Befehl \lstinline[style=asm]{pop bar}: \quad + \lstinline{bar = *--SP;} + \begin{itemize} + \item + Zuerst den Stack Pointer dekrementieren (um 1 erniedrigen). + \item + Danach aus der Speicherzelle,\\ + auf die der Stack Pointer \lstinline{SP} gerade zeigt,\\ + einen Wert lesen und in der Variablen \lstinline{bar} speichern. + \end{itemize} + \end{itemize} + +% \pause + \medskip + Speziell: Unterprogramme + +\end{frame} + +\subsubsection{Unterprogramme} + +\begin{frame}[fragile] + + \showsubsection + \showsubsubsection + + Funktion mit 2 ganzzahligen Parametern \lstinline{a} und \lstinline{b}\\ + und einem ganzzahligem Rückgabewert: + \vspace{\medskipamount} + \begin{lstlisting}[xleftmargin=1em] + int sum (int a, int b) + { + return a + b; + } + \end{lstlisting} + + \bigskip + + Aufruf der Funktion: + \vspace{\medskipamount} + \begin{lstlisting}[xleftmargin=1em] + int c = sum (7, 6); + \end{lstlisting} + + \bigskip + + (Methoden = spezielle Funktionen) + + \vfill + + \textarrow\ Wie funktioniert das? + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + \showsubsubsection + + \begin{minipage}[t]{5.5cm} + Parameter: + \begin{itemize} + \item + Prozessorregister + \item + CPU-Stack + \end{itemize} + + \smallskip + + Rückgabewert: + \begin{itemize} + \item + Prozessorregister + \end{itemize} + \end{minipage}% + \begin{minipage}[t]{5cm} + Aufruf: + \begin{itemize} + \item + \lstinline[style=asm]{push IP}\\ + \lstinline[style=asm]{jmp foo} + {\color{red}\boldmath $\longleftarrow$ mov \#foo IP}\\ + \textarrow\ \lstinline[style=asm]{call foo} + \end{itemize} + Rücksprung: + \begin{itemize} + \item + \lstinline[style=asm]{pop IP}\\ + \textarrow\ \lstinline[style=asm]{ret} + \end{itemize} + \end{minipage} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + \showsubsubsection + + \begin{minipage}[t]{5.5cm} + Parameter: + \begin{itemize} + \item + Prozessorregister + \item + CPU-Stack + \end{itemize} + + \smallskip + + Rückgabewert: + \begin{itemize} + \item + Prozessorregister + \end{itemize} + \end{minipage}% + \begin{minipage}[t]{5cm} + Aufruf: + \begin{itemize} + \item + \lstinline[style=asm]{push IP}\\ + \lstinline[style=asm]{jmp foo} + {\color{red}\boldmath $\longleftarrow$ mov \#foo IP}\\ + \textarrow\ \lstinline[style=asm]{call foo} + \end{itemize} + Rücksprung: + \begin{itemize} + \item + \lstinline[style=asm]{pop IP}\\ + \textarrow\ \lstinline[style=asm]{ret} + \end{itemize} + \end{minipage} + + \bigskip + + \subsubsection{Lokale Variable} + \showsubsubsection + + \dots\ speichert man oft ebenfalls auf dem Stack. + + \smallskip + + Speicherplatz reservieren: Stack-Pointer modifizieren + + \medskip + + \newterm{Buffer Overflow\/}:\\[0.5\smallskipamount] + Über die Grenzen einer lokalen Variablen hinausschreiben,\\ + dabei Rücksprungadresse überschreiben \textarrow\ Absturz + +\end{frame} + +\subsubsection{Register sichern} + +\begin{frame} + + \showsubsection + \showsubsubsection + + Ein Unterprogramm verändert Registerinhalte. + \begin{itemize} + \item + im Hauptprogramm nötigenfalls vor Aufruf sichern + \item + im Unterprogramm vor Benutzung sichern + \item + Kombinationen (manche Register so, manche so) + \end{itemize} + +\end{frame} + +\subsection{Computer-Sprachen} +\subsubsection{Maschinensprache} + +\iffalse + +\begin{frame} + + \showsubsection + \showsubsubsection + + \strut\hfill + \begin{minipage}{6.5cm} + \vspace*{-1.7cm} + \small + Computer + \begin{itemize}\itemsep0pt + \item Rechenwerk (ALU) + \item Speicher: Register,\\ + adressierbarer Hauptspeicher + \item Takt: Befehle abarbeiten + \item Peripherie: Kommunikation\\ + mit der Außenwelt + \arrowitem in Maschinensprache programmierbar + \end{itemize} + \end{minipage}\hspace*{-0.5cm} + + In jedem Takt: + \begin{itemize} + \item + dort aus dem Hauptspeicher lesen, wohin das Register \lstinline{IP} zeigt\\ + \textarrow\ \newterm{Befehl\/} (\newterm{Instruction\/} -- \lstinline{IP} = \newterm{Instruction Pointer\/}) + \item + den \newterm{Befehl\/} an den \newterm{Funktion\/}-Eingang der \newterm{ALU\/} legen + \item + auf ähnliche Weise weitere Daten an den \newterm{Akkumulator\/}-\\ + und den \newterm{Daten\/}-Eingang der \newterm{ALU\/} legen + \item + auf ähnliche Weise den \newterm{Ergebnis\/}-Ausgang der \newterm{ALU}\\ + in den Hauptspeicher schreiben + \textarrow\ Befehl ausgeführt + \item + Register \lstinline{IP} hochzählen + \textarrow\ nächster Befehl + \arrowitem + Maschinensprache + \end{itemize} + +\end{frame} + +\fi + +\begin{frame} + + \showsubsection + \showsubsubsection + + \begin{itemize} + \item + Lade- und Speicher-Befehle\\ + arithmetische Befehle\\ + unbedingte und bedingte Sprungbefehle + \arrowitem + Der Computer kann "`alles"' -- \newterm{Turing-Vollständigkeit} + \bigskip + \item + Maschinensprache = Zahlen \textarrow\ für Menschen schwer handhabbar + \arrowitem + Namen für die Befehle: \newterm{Mnemonics} + \arrowitem + \newterm{Assembler\/}-Sprache + \end{itemize} + +\end{frame} + +\subsubsection{\strut{\protect\color{gray}Maschinensprache \protect\textarrow\ }Assembler} + +\begin{frame}[fragile] + + \showsubsubsection + + Beispiel: Intel-x86-16-Bit-Assembler + + \begin{itemize} + \item + Lade- und Speicher-Befehle\hfill + \lstinline{mov}, \dots\\ + arithmetische Befehle\hfill + \lstinline{add}, \lstinline{sub}, \lstinline{inc}, \lstinline{dec}, + \lstinline{xor}, \lstinline{cmp}, \dots\\ + unbedingte und bedingte Sprungbefehle\hfill + \lstinline{jmp}, \lstinline{jz}, \lstinline{jae}, \dots + \item + Register\hfill + \lstinline{ax}, \lstinline{bx}, \dots + \end{itemize} + +% \begin{onlyenv}<1> +% \begin{center} +%% \includegraphics[width=10cm]{programm-screenshot.png} +% \vspace*{-0.5cm} +% \end{center} +% \end{onlyenv} +% \begin{onlyenv}<2-> + + \bigskip + + Beispiel: Atmel-AVR-8-Bit-Assembler + + \begin{itemize} + \item + Lade- und Speicher-Befehle\hfill + \lstinline{ldi}, \lstinline{lds}, \lstinline{sti}, \dots\\ + arithmetische Befehle\hfill + \lstinline{add}, \lstinline{sub}, \lstinline{subi}, + \lstinline{eor}, \lstinline{cp}, \dots\\ + unbedingte und bedingte Sprungbefehle\hfill + \lstinline{rjmp}, \lstinline{brsh}, \lstinline{brlo}, \dots + \item + Register\hfill + \lstinline{r0}, \lstinline{r1}, \dots + \end{itemize} + + \bigskip + + \textarrow\ für jeden Prozessor anders + +% \end{onlyenv} + +\end{frame} + +\subsubsection{\strut{\protect\color{gray}Maschinensprache \protect\textarrow\ Assembler \protect\textarrow\ }Hochsprachen} + +\begin{frame}[fragile] + + \showsubsubsection + + Beispiel: Intel-x86-16-Bit-Assembler + + \begin{itemize} + \item + Lade- und Speicher-Befehle\hfill + \lstinline{mov}, \dots\\ + arithmetische Befehle\hfill + \lstinline{add}, \lstinline{sub}, \lstinline{inc}, \lstinline{dec}, + \lstinline{xor}, \lstinline{cmp}, \dots\\ + unbedingte und bedingte Sprungbefehle\hfill + \lstinline{jmp}, \lstinline{jz}, \lstinline{jae}, \dots + \item + Register\hfill + \lstinline{ax}, \lstinline{bx}, \dots + \end{itemize} + + \bigskip + + Beispiel: Atmel-AVR-8-Bit-Assembler + + \begin{itemize} + \item + Lade- und Speicher-Befehle\hfill + \lstinline{ldi}, \lstinline{lds}, \lstinline{sti}, \dots\\ + arithmetische Befehle\hfill + \lstinline{add}, \lstinline{sub}, \lstinline{subi}, + \lstinline{eor}, \lstinline{cp}, \dots\\ + unbedingte und bedingte Sprungbefehle\hfill + \lstinline{rjmp}, \lstinline{brsh}, \lstinline{brlo}, \dots + \item + Register\hfill + \lstinline{r0}, \lstinline{r1}, \dots + \end{itemize} + + \bigskip + + \textarrow\ für jeden Prozessor anders + + \bigskip + + Hochsprache \textarrow\ für jeden Prozessor gleich + +\end{frame} + +\begin{frame}[fragile] + + \showsubsubsection + + Compiler-Sprachen + \begin{itemize} + \item + \newterm{Compiler\/} übersetzt Hochsprachen-\newterm{Quelltext\/} in die Assembler-Sprache + \item + \newterm{Assembler\/} übersetzt Assembler-Quelltext in die Maschinensprache + \item + Compiler und Assembler sind Programme,\\ + geschrieben in Maschinensprache, Assembler oder einer Hochsprache + \item + Beispiele: Fortran, Algol, Pascal, Ada, C, C++, \dots + \end{itemize} + + \pause + \medskip + Interpreter- oder Skript-Sprachen + \begin{itemize} + \item + \newterm{Interpreter\/} liest Hochsprachen-\newterm{Quelltext\/} und führt ihn sofort aus + \item + Der Interpreter ist ein Programm,\\ + geschrieben in Maschinensprache, Assembler oder einer Hochsprache + \item + Beispiele: Unix-Shell, BASIC, Perl, Python, \dots + \end{itemize} + + \pause + \medskip + Kombinationen + \begin{itemize} + \item + \newterm{Compiler\/} erzeugt \newterm{Zwischencode\/} für eine \newterm{virtuelle Maschine} + \item + \newterm{Interpreter\/} liest Hochsprachen-\newterm{Zwischencode\/} und führt ihn sofort aus + \item + Die virtuelle Maschine ist ein Programm, + geschrieben in Maschinensprache, Assembler, einer Hoch- oder Skript-Sprache + \item + Beispiele: UCSD-Pascal, Java, \dots + \end{itemize} + \medskip + +\end{frame} + +\section{Hardwarenahe Programmierung} +\subsection{Bit-Operationen} +\subsubsection{Zahlensysteme} + +\begin{frame}[fragile] + + \showsection + \vspace*{-\smallskipamount} + \showsubsection + \vspace*{-\medskipamount} + \showsubsubsection + + \begin{tabular}{rlrl} + Basis & Name & Beispiel & Anwendung \\[\smallskipamount] + 2 & Binärsystem & 1\,0000\,0011 & Bit-Operationen \\ + 8 & Oktalsystem & \lstinline,0403, & Dateizugriffsrechte (Unix) \\ + 10 & Dezimalsystem & \lstinline,259, & Alltag \\ + 16 & Hexadezimalsystem & \lstinline,0x103, & Bit-Operationen \\ + 256 & (keiner gebräuchlich) & 0.0.1.3 & IP-Adressen (IPv4) + \end{tabular} + + \bigskip + + \begin{itemize} + \item + Computer rechnen im Binärsystem. + \item + Für viele Anwendungen (z.\,B.\ I/O-Ports, Grafik, \dots) ist es notwendig,\\ + Bits in Zahlen einzeln ansprechen zu können. + \end{itemize} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsubsection + + \begin{tabular}{rlrlrc} + \qquad 000 & \bf 0 \hspace*{1.5cm} & 0000 & \bf 0 & \quad 1000 & \bf 8\\ + 001 & \bf 1 & 0001 & \bf 1 & 1001 & \bf 9\\ + 010 & \bf 2 & 0010 & \bf 2 & 1010 & \bf A\\ + 011 & \bf 3 & 0011 & \bf 3 & 1011 & \bf B\\[\smallskipamount] + 100 & \bf 4 & 0100 & \bf 4 & 1100 & \bf C\\ + 101 & \bf 5 & 0101 & \bf 5 & 1101 & \bf D\\ + 110 & \bf 6 & 0110 & \bf 6 & 1110 & \bf E\\ + 111 & \bf 7 & 0111 & \bf 7 & 1111 & \bf F\\ + \end{tabular} + + \medskip + + \begin{itemize} + \item + Oktal- und Hexadezimalzahlen lassen sich ziffernweise\\ + in Binär-Zahlen umrechnen. + \item + Hexadezimalzahlen sind eine Kurzschreibweise für Binärzahlen,\\ + gruppiert zu jeweils 4 Bits. + \item + Oktalzahlen sind eine Kurzschreibweise für Binärzahlen,\\ + gruppiert zu jeweils 3 Bits. + \item + Trotz Taschenrechner u.\,ä.\ lohnt es sich,\\ + die o.\,a.\ Umrechnungstabelle \textbf{auswendig} zu kennen. + \end{itemize} + +\end{frame} + +\subsubsection{Bit-Operationen in Assembler} + +\begin{frame}[fragile] + + \showsubsubsection + + \begin{tabular}{lll} + Operation & Verknüpfung & Anwendung \\[\smallskipamount] + \lstinline,and, & Und & Bits gezielt löschen \\ + \lstinline,or, & Oder & Bits gezielt setzen \\ + \lstinline,eor, & Exklusiv-Oder & Bits gezielt invertieren \\[\smallskipamount] + \lstinline,com, & Nicht (Einer-Komplement) & Alle Bits invertieren \\[\smallskipamount] + \lstinline,lsl, & Verschiebung nach links & Maske generieren \\ +% \lstinline,lsr, & Verschiebung nach rechts & Bits isolieren + \end{tabular} + + \bigskip + + Numerierung der Bits: von rechts ab 0 + + \medskip + + \begin{tabular}{ll} + Bit Nr.\ 3 auf 1 setzen: & +% \lstinline,a |= 1 << 3;, \\ + Oder-Verknüpfung mit einer\\&um 3 nach links geschobenen 1 + \hfill\lstinline|0000|\,\lstinline|1000|\\[\smallskipamount] + Bit Nr.\ 4 auf 0 setzen: & +% \lstinline,a &= ~(1 << 4);, \\ + Und-Verknüpfung mit dem Einer-Komplement \qquad\quad\strut\\&einer um 4 nach links geschobenen 1 + \hfill\lstinline|1110|\,\lstinline|1111|\\[\smallskipamount] + Bit Nr.\ 0 invertieren: & +% \lstinline,a ^= 1 << 0;, + Exklusiv-Oder-Verknüpfung mit einer\\&um 0 nach links geschobenen 1 + \hfill\lstinline|0000|\,\lstinline|0001|\\[\smallskipamount] + Ist Bit Nr.\ 1 eine Null? & + Ergibt eine Und-Verknüpfung mit einer um 1\\&nach links geschobenen 1 den Wert 0? + \hfill\lstinline|0000|\,\lstinline|0010| + \end{tabular} + +% \smallskip +% +% ~~Abfrage, ob Bit Nr.\ 1 gesetzt ist:\quad +% \lstinline{if (a & (1 << 1))} + +\end{frame} + +\iffalse + +\begin{frame}[fragile] + + \showsubsubsection + + C-Datentypen für Bit-Operationen: + \smallskip\par + \lstinline{#include <stdint.h>} + \medskip\par + \begin{tabular}{lllll} + & 8 Bit & 16 Bit & 32 Bit & 64 Bit \\ + mit Vorzeichen & \lstinline,int8_t, + & \lstinline,int16_t, + & \lstinline,int32_t, + & \lstinline,int64_t, \\ + ohne Vorzeichen & \lstinline,uint8_t, + & \lstinline,uint16_t, + & \lstinline,uint32_t, + & \lstinline,uint64_t, + \end{tabular} + + \bigskip + \bigskip + + Ausgabe: + \smallskip\par + \begin{lstlisting} + #include <stdio.h> + #include <stdint.h> + #include <inttypes.h> + ... + uint64_t x = 42; + printf ("Die Antwort lautet: %" PRIu64 "\n", x); + \end{lstlisting} + +\end{frame} + +\subsection{I/O-Ports} + +\begin{frame}[fragile] + +% \showsection + \showsubsection + \vspace*{-1.5\medskipamount} + {\large\textbf{\color{structure}4.3\quad Interrupts}} + + \bigskip + + Kommunikation mit externen Geräten + + \bigskip + + \begin{center} + \includegraphics{io-ports-and-interrupts.pdf} + \end{center} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + In Output-Port schreiben = Aktoren ansteuern + + Beispiel: LED + + \medskip + + \begin{lstlisting} + #include <avr/io.h> + ... + DDRC = 0x70; + PORTC = 0x40; + \end{lstlisting} + \begin{picture}(0,0) + \put(3,0.67){\begin{minipage}{3cm} + \color{red}% + binär: 0111\,0000\\ + binär: 0100\,0000 + \end{minipage}} + \put(10,0.67){\makebox(0,0)[r]{\color{red}Herstellerspezifisch!}} + \end{picture} + + \bigskip + + \lstinline{DDR} = Data Direction Register\\ + Bit = 1 für Output-Port\\ + Bit = 0 für Input-Port + + \bigskip + + \emph{Details: siehe Datenblatt und Schaltplan} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + Aus Input-Port lesen = Sensoren abfragen + + Beispiel: Taster + + \medskip + + \begin{lstlisting} + #include <avr/io.h> + ... + DDRC = 0xfd; + while ((PINC & 0x02) == 0) + ; /* just wait */ + \end{lstlisting} + \begin{picture}(0,0)(-1.5,-0.42) + \put(3,0.67){\begin{minipage}{3cm} + \color{red}% + binär: 1111\,1101\\ + binär: 0000\,0010 + \end{minipage}} + \put(10,0.67){\makebox(0,0)[r]{\color{red}Herstellerspezifisch!}} + \end{picture} + + \bigskip + + \lstinline{DDR} = Data Direction Register\\ + Bit = 1 für Output-Port\\ + Bit = 0 für Input-Port + + \bigskip + + \emph{Details: siehe Datenblatt und Schaltplan} + + \bigskip + + Praktikumsaufgabe: Druckknopfampel + +\end{frame} + +\subsection{Interrupts} + +\begin{frame}[fragile] + + \showsubsection + + Externes Gerät ruft (per Stromsignal) Unterprogramm auf + + Zeiger hinterlegen: "`Interrupt-Vektor"' + + Beispiel: eingebaute Uhr\hfill + \makebox(0,0)[tr]{% + \only<1->{\begin{minipage}[t]{4.7cm} + \vspace*{-0.3cm}% + statt Zählschleife (\lstinline{_delay_ms}):\\ + Hauptprogramm kann\\ + andere Dinge tun + \end{minipage}}% + } + + \medskip + + \begin{lstlisting} + #include <avr/interrupt.h> + + ... + + + ISR (TIMER0B_COMP_vect) + { + PORTD ^= 0x40; + } + \end{lstlisting} + \begin{picture}(0,0) + \color{red} + \put(1.9,3.1){\makebox(0,0)[tr]{\tikz{\draw[-latex](0,0)--(-1.4,-1.0);}}} + \put(2.0,3.2){\makebox(0,0)[l]{"`Dies ist ein Interrupt-Handler."'}} + \put(2.3,2.6){\makebox(0,0)[tr]{\tikz{\draw[-latex](0,0)--(-0.6,-0.55);}}} + \put(2.4,2.6){\makebox(0,0)[l]{Interrupt-Vektor darauf zeigen lassen}} + \end{picture} + + Initialisierung über spezielle Ports: + \lstinline{TCCR0B}, \lstinline{TIMSK0} + + \bigskip + + \emph{Details: siehe Datenblatt und Schaltplan} + + \vspace*{-2.5cm}\hfill + {\color{red}Herstellerspezifisch!}% + \hspace*{1cm} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + Externes Gerät ruft (per Stromsignal) Unterprogramm auf + + Zeiger hinterlegen: "`Interrupt-Vektor"' + + Beispiel: Taster\hfill + \makebox(0,0)[tr]{% + \begin{minipage}[t]{4.7cm} + \vspace*{-0.3cm}% + statt \newterm{Busy Waiting\/}:\\ + Hauptprogramm kann\\ + andere Dinge tun + \end{minipage}} + + \medskip + + \begin{lstlisting} + #include <avr/interrupt.h> + ... + + ISR (INT0_vect) + { + PORTD ^= 0x40; + } + \end{lstlisting} + + \medskip + + Initialisierung über spezielle Ports: + \lstinline{EICRA}, \lstinline{EIMSK} + + \bigskip + + \emph{Details: siehe Datenblatt und Schaltplan} + + \vspace*{-2.5cm}\hfill + {\color{red}Herstellerspezifisch!}% + \hspace*{1cm} + +\end{frame} + +\subsection{volatile-Variable} + +\begin{frame}[fragile] + + \showsubsection + + Externes Gerät ruft (per Stromsignal) Unterprogramm auf + + Zeiger hinterlegen: "`Interrupt-Vektor"' + + Beispiel: Taster + + \vspace*{-2.5pt} + + \begin{minipage}[t]{5cm} + \begin{onlyenv}<1> + \begin{lstlisting}[gobble=8] + ¡#include <avr/interrupt.h> + ... + + uint8_t key_pressed = 0; + + ISR (INT0_vect) + { + key_pressed = 1; + }¿ + \end{lstlisting} + \end{onlyenv} + \begin{onlyenv}<2> + \begin{lstlisting}[gobble=8] + ¡#include <avr/interrupt.h> + ... + + volatile uint8_t key_pressed = 0; + + ISR (INT0_vect) + { + key_pressed = 1; + }¿ + \end{lstlisting} + \end{onlyenv} + \end{minipage}\hfill + \begin{minipage}[t]{6cm} + \begin{lstlisting}[gobble=6] + ¡int main (void) + { + ... + + while (1) + { + while (!key_pressed) + ; /* just wait */ + PORTD ^= 0x40; + key_pressed = 0; + } + return 0; + }¿ + \end{lstlisting} + \end{minipage} + + \pause + \begin{picture}(0,0) + \color{red} + \put(10.3,4.0){\makebox(0,0)[b]{\begin{minipage}{6cm} + \begin{center} + \textbf{volatile}:\\ + Speicherzugriff\\ + nicht wegoptimieren + \end{center} + \end{minipage}}} + \put(10.3,3.95){\makebox(0,0)[tr]{\tikz{\draw[-latex](0,0)--(-0.5,-0.9);}}} + \end{picture} + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + Was ist eigentlich \lstinline{PORTD}? + + \bigskip + \pause + + \lstinline[style=cmd]{avr-gcc -Wall -Os -mmcu=atmega328p blink-3.c -E} + + \bigskip + \pause + \lstinline{PORTD = 0x01;}\\ + \textarrow\quad + \lstinline[style=terminal]{(*(volatile uint8_t *)((0x0B) + 0x20)) = 0x01;}\\ + \pause + \begin{picture}(0,2)(0,-1.7) + \color{red} + \put(5.75,0.3){$\underbrace{\rule{2.95cm}{0pt}}_{\mbox{Zahl: \lstinline|0x2B|}}$} + \pause + \put(1.55,0.3){$\underbrace{\rule{4.0cm}{0pt}}_{\mbox{\shortstack[t]{Umwandlung in Zeiger\\ + auf \lstinline|volatile uint8_t|}}}$} + \pause + \put(1.32,-1){\makebox(0,0)[b]{\tikz{\draw[-latex](0,0)--(0,1.3)}}} + \put(1.12,-1.1){\makebox(0,0)[tl]{Dereferenzierung des Zeigers}} + \end{picture} + + \pause + \textarrow\quad + \lstinline|volatile uint8_t|-Variable an Speicheradresse \lstinline|0x2B| + + \pause + \bigskip + \bigskip + + \textarrow\quad + \lstinline|PORTA = PORTB = PORTC = PORTD = 0| ist eine schlechte Idee. + +\end{frame} + +\subsection{Byte-Reihenfolge -- Endianness} +\subsubsection{Konzept} + +\begin{frame}[fragile] + + \showsubsection + \showsubsubsection + + Eine Zahl geht über mehrere Speicherzellen.\\ + Beispiel: 16-Bit-Zahl in 2 8-Bit-Speicherzellen + + \smallskip + + Welche Bits liegen wo? + +% \pause + \bigskip + + $1027 = 1024 + 2 + 1 = 0000\,0100\,0000\,0011_2 = 0403_{16}$ + +% \pause + \bigskip + Speicherzellen: + + \medskip + \begin{tabular}{|c|c|l}\cline{1-2} + \raisebox{-0.25ex}{04} & \raisebox{-0.25ex}{03} & \strut Big-Endian "`großes Ende zuerst"' \\\cline{1-2} + \multicolumn{2}{c}{} & % \pause + für Menschen leichter lesbar % \pause + \\ + \multicolumn{3}{c}{} \\[-5pt]\cline{1-2} + \raisebox{-0.25ex}{03} & \raisebox{-0.25ex}{04} & \strut Little-Endian "`kleines Ende zuerst"' \\\cline{1-2} + \multicolumn{2}{c}{} & % \pause + bei Additionen effizienter + \end{tabular} + +% \pause + \medskip + \textarrow\ Geschmackssache +% \pause\\ + \quad\textbf{\dots\ außer bei Datenaustausch!} + +% \pause +% \bigskip +% +% Aber: nicht verwechseln! \qquad $0304_{16} = 772$ + +\end{frame} + +\begin{frame} + + \showsubsection + \showsubsubsection + + Eine Zahl geht über mehrere Speicherzellen.\\ + Beispiel: 16-Bit-Zahl in 2 8-Bit-Speicherzellen + + \smallskip + + Welche Bits liegen wo? + + \medskip + + \textarrow\ Geschmackssache\\ + \textbf{\dots\ außer bei Datenaustausch!} + + \begin{itemize} + \item + Dateiformate + \item + Datenübertragung + \end{itemize} + +\end{frame} + +\subsubsection{Dateiformate} + +\begin{frame} + + \showsubsection + \showsubsubsection + + Audio-Formate: Reihenfolge der Bytes in 16- und 32-Bit-Zahlen + \begin{itemize} + \item + RIFF-WAVE-Dateien (\file{.wav}): Little-Endian + \item + Au-Dateien (\file{.au}): Big-Endian +% \pause + \item + ältere AIFF-Dateien (\file{.aiff}): Big-Endian + \item + neuere AIFF-Dateien (\file{.aiff}): Little-Endian + \end{itemize} + +% \pause + \bigskip + + Grafik-Formate: Reihenfolge der Bits in den Bytes + \begin{itemize} + \item + PBM-Dateien: Big-Endian\only<1->{, MSB first} + \item + XBM-Dateien: Little-Endian\only<1->{, LSB first} + \end{itemize} + \only<1->{MSB/LSB = most/least significant bit} + +\end{frame} + +\subsubsection{Datenübertragung} + +\begin{frame} + + \showsubsection + \showsubsubsection + + \begin{itemize} + \item + RS-232 (serielle Schnittstelle): LSB first + \item + I$^2$C: MSB first + \item + USB: beides + \pause + \medskip + \item + Ethernet: LSB first + \item + TCP/IP (Internet): Big-Endian + \end{itemize} + +\end{frame} + +\iffalse + +\subsection{Binärdarstellung negativer Zahlen} + +\begin{frame}[fragile] + + \showsubsection + + Speicher ist begrenzt!\\ + \textarrow\ feste Anzahl von Bits + + \medskip + + 8-Bit-Zahlen ohne Vorzeichen: \lstinline{uint8_t}\\ + \textarrow\ Zahlenwerte von \lstinline{0x00} bis \lstinline{0xff} = 0 bis 255\\ + \pause + \textarrow\ 255 + 1 = 0 + + \pause + \medskip + + 8-Bit-Zahlen mit Vorzeichen: \lstinline{int8_t}\\ + \lstinline{0xff} = 255 ist die "`natürliche"' Schreibweise für $-1$.\\ + \pause + \textarrow\ Zweierkomplement + + \pause + \medskip + + Oberstes Bit = 1: negativ\\ + Oberstes Bit = 0: positiv\\ + \textarrow\ 127 + 1 = $-128$ + +\end{frame} + +\begin{frame}[fragile] + + \showsubsection + + Speicher ist begrenzt!\\ + \textarrow\ feste Anzahl von Bits + + \medskip + + 16-Bit-Zahlen ohne Vorzeichen: + \lstinline{uint16_t}\hfill\lstinline{uint8_t}\\ + \textarrow\ Zahlenwerte von \lstinline{0x0000} bis \lstinline{0xffff} + = 0 bis 65535\hfill 0 bis 255\\ + \textarrow\ 65535 + 1 = 0\hfill 255 + 1 = 0 + + \medskip + + 16-Bit-Zahlen mit Vorzeichen: + \lstinline{int16_t}\hfill\lstinline{int8_t}\\ + \lstinline{0xffff} = 66535 ist die "`natürliche"' Schreibweise für $-1$.\hfill + \lstinline{0xff} = 255 = $-1$\\ + \textarrow\ Zweierkomplement + + \medskip + + Oberstes Bit = 1: negativ\\ + Oberstes Bit = 0: positiv\\ + \textarrow\ 32767 + 1 = $-32768$ + + \bigskip + Literatur: \url{http://xkcd.com/571/} + +\end{frame} + +\fi + +\begin{frame}[fragile] + + \showsubsection + + Frage: \emph{Für welche Zahl steht der Speicherinhalt\, + \raisebox{2pt}{% + \tabcolsep0.25em + \begin{tabular}{|c|c|}\hline + \rule{0pt}{11pt}a3 & 90 \\\hline + \end{tabular}} + (hexadezimal)?} + + \pause + \smallskip + Antwort: \emph{Das kommt darauf an.} ;--) + + \pause + \medskip + Little-Endian: + + \smallskip + + \begin{tabular}{lrl} + als \lstinline,int8_t,: & $-93$ & (nur erstes Byte)\\ + als \lstinline,uint8_t,: & $163$ & (nur erstes Byte)\\ + als \lstinline,int16_t,: & $-28509$\\ + als \lstinline,uint16_t,: & $37027$\\ + \lstinline,int32_t, oder größer: & $37027$ + & (zusätzliche Bytes mit Nullen aufgefüllt) + \end{tabular} + + \pause + \medskip + Big-Endian: + + \smallskip + + \begin{tabular}{lrl} + als \lstinline,int8_t,: & $-93$ & (nur erstes Byte)\\ + als \lstinline,uint8_t,: & $163$ & (nur erstes Byte)\\ + als \lstinline,int16_t,: & $-23664$\\ + als \lstinline,uint16_t,: & $41872$\\ als \lstinline,int32_t,: & $-1550843904$ & (zusätzliche Bytes\\ + als \lstinline,uint32_t,: & $2744123392$ & mit Nullen aufgefüllt)\\ + als \lstinline,int64_t,: & $-6660823848880963584$\\ + als \lstinline,uint64_t,: & $11785920224828588032$\\ + \end{tabular} + + \vspace*{-1cm} + +\end{frame} + +\subsection{Speicherausrichtung -- Alignment} + +\begin{frame}[fragile] + + \showsubsection + + \begin{lstlisting} + #include <stdint.h> + + uint8_t a; + uint16_t b; + uint8_t c; + \end{lstlisting} + + \pause + \bigskip + + Speicheradresse durch 2 teilbar -- "`16-Bit-Alignment"' + \begin{itemize} + \item + 2-Byte-Operation: effizienter + \pause + \item + \dots\ oder sogar nur dann erlaubt + \pause + \arrowitem + Compiler optimiert Speicherausrichtung + \end{itemize} + + \medskip + + \pause + \begin{minipage}{3cm} + \begin{lstlisting}[gobble=6] + ¡uint8_t a; + uint8_t dummy; + uint16_t b; + uint8_t c;¿ + \end{lstlisting} + \end{minipage} + \pause + \begin{minipage}{3cm} + \begin{lstlisting}[gobble=6] + ¡uint8_t a; + uint8_t c; + uint16_t b;¿ + \end{lstlisting} + \end{minipage} + + \pause + \vspace{-1.75cm} + \strut\hfill + \begin{minipage}{6.5cm} + Fazit: + \begin{itemize} + \item + \textbf{Adressen von Variablen\\ + sind systemabhängig} + \item + Bei Definition von Datenformaten\\ + Alignment beachten \textarrow\ effizienter + \end{itemize} + \end{minipage} + +\end{frame} + +\fi + +\end{document} diff --git a/common/io-ports-and-interrupts.eps b/common/io-ports-and-interrupts.eps new file mode 100644 index 0000000..bf353a0 --- /dev/null +++ b/common/io-ports-and-interrupts.eps @@ -0,0 +1,3658 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Creator: dvips(k) 5.992 Copyright 2012 Radical Eye Software +%%Title: io-ports-and-interrupts.dvi +%%CreationDate: Sat Nov 19 19:25:00 2016 +%%BoundingBox: 145 496 435 642 +%%DocumentFonts: NimbusSanL-Regu +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: dvips -E io-ports-and-interrupts.dvi +%DVIPSParameters: dpi=1200 +%DVIPSSource: TeX output 2016.11.19:1924 +%%BeginProcSet: tex.pro 0 0 +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 +mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 +0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ +landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize +mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ +matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round +exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ +statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] +N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin +/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array +/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N +df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S +/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy +setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask +restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put +}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ +bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A +mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ +SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ +userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X +1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N +/dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3 +def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90 +rotate}{show}ifelse}ifelse}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 +N/Ry 0 N/V{}B/RV/v{/Ry X/Rx X V}B statusdict begin/product where{pop +false[(Display)(NeXT)(LaserWriter 16/600)]{A length product length le{A +length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse} +forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{ +BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat +{BDot}imagemask grestore}}ifelse B/QV{gsave newpath transform round exch +round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 +rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B +/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M} +B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p +-3 w}B/n{p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{ +0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end + +%%EndProcSet +%%BeginProcSet: pstricks.pro 0 0 +% $Id: pstricks.pro 647 2012-02-12 15:03:40Z herbert $ +% +%% PostScript prologue for pstricks.tex. +%% Version 1.12, 2012/02/12 +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +% +% +% Define the follwing gs-functions if not known, eg when using distiller +% +systemdict /.setopacityalpha known not {/.setopacityalpha { pop } def } if +systemdict /.setblendmode known not {/.setblendmode { pop } def } if +systemdict /.setshapealpha known not {/.setshapealpha { pop } def } if +% +/tx@Dict 200 dict def % the main PSTricks dictionary +tx@Dict begin +/ADict 25 dict def % The arrow dictionaray +/CM { matrix currentmatrix } bind def +/SLW /setlinewidth load def +/CLW /currentlinewidth load def +/CP /currentpoint load def +/ED { exch def } bind def +/L /lineto load def +/T /translate load def +/TMatrix { } def +/RAngle { 0 } def +/Sqrt { dup 0 lt { pop 0 } { sqrt } ifelse } def % return 0 for negative arguments +/Atan { /atan load stopped { pop pop 0 } if } def % return 0 if atan not known +/ATAN1 {neg -1 atan 180 sub } def % atan(x) (only one parameter) +/Div { dup 0 eq { pop } { div } ifelse } def % control the division +/tan { dup cos abs 1.e-10 lt + { pop 1.e10 } % return 1.e10 as infinit + { dup sin exch cos div } ifelse % default sin/cos +} def +/Tan { dup sin exch cos Div } def % sin(x)/cos(x) x in degrees +/Acos {dup dup mul neg 1 add dup 0 lt { % arc cos, returns 0 when negative root + pop pop 0 }{ sqrt exch atan} ifelse } def +/NET { neg exch neg exch T } def % change coordinate system to the negative one +/Pyth { dup mul exch dup mul add sqrt } def % Pythagoras, expects 2 parameter +/Pyth2 { % Pythagoras, xA yA xB yB + 3 -1 roll % xA xB yB yA + sub % xA xB yB-yA + 3 1 roll % yB-yA xA xB + sub % yB-yA xA-xB + Pyth } def +/PtoC { 2 copy cos mul 3 1 roll sin mul } def % Polar to Cartesian +/Rand { rand 4294967295 div } def % a real random number +%----------------- hv added 20050516 --------------- +/PiDiv2 1.57079632680 def +/Pi 3.14159265359 def +/TwoPi 6.28318530718 def +/Euler 2.71828182846 def +%/e Euler bind def +% +/RadtoDeg { 180 mul Pi div } bind def % convert from radian to degrees +/DegtoRad { Pi mul 180 div } bind def % viceversa +%----------------- hv end--------------------------- +/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def } def +% +/PathLength { + flattenpath /z 0 def + { /y1 ED /x1 ED /y2 y1 def /x2 x1 def } + { /y ED /x ED PathLength@ } + {} + { /y y2 def /x x2 def PathLength@ } + /pathforall load stopped { pop pop pop pop } if + z +} def +% +/STP { .996264 dup scale } def % BP/PT scaling +/STV { SDict begin normalscale end STP } def % +% +/DashLine { + dup 0 gt + { /a .5 def PathLength exch div } + { pop /a 1 def PathLength } ifelse + /b ED % pattern should fit evenly in b + dup /X ED % pattern array + 0 get /y ED % length of first black segment + /z 0 X {add} forall def % length of the full pattern + %% Computation of the scaling factor as described by van Zandt: + b a .5 sub 2 mul y mul sub z Div round + z mul a .5 sub 2 mul y mul add b exch Div + %%%% scaling factor on stack. + /z ED %% now, z is the scaling factor + false % for the length test below + X { z mul } forall X astore %% modification TN 04-08-07 + %%% Checking whether at least one dash in X has positive length: + {0 gt or} forall + { X 1 a sub y mul } + { [ 1 0 ] 0 } + ifelse + setdash stroke +} def +% +/DotLine { + /b PathLength def + /a ED /z ED /y CLW def + /z y z add def + a 0 gt { + /b b a div def + }{ + a 0 eq { + /b b y sub def + }{ a -3 eq { + /b b y add def } if + } ifelse + } ifelse + [ 0 b b z Div round Div dup 0 le { pop 1 } if ] + a 0 gt { 0 }{ y 2 div a -2 gt { neg }if } ifelse + setdash 1 setlinecap stroke +} def +% +/SymbolLine { % on stack [ x y x y ... + counttomark % number of elements + 2 div cvi /n ED % n pairs + /YA ED /XA ED % the start point + n 1 sub { + /YB ED /XB ED + /XLength XB XA sub def + /YLength YB YA sub def + /PAngle YLength XLength Atan def + /XYLength XLength YLength Pyth def + + %% for negative SymStep we calculate the distance + SymStep 0 lt + { %XYLength SymStep div abs cvi + /nSym SymStep abs cvi def } + { /nSym XYLength SymStep div cvi def } + ifelse + 0.5 setflat + /Shift Symbol stringwidth pop 2 div def + /deltaX XLength nSym div def + /deltaY YLength nSym div def + curveticks + { XA YA moveto } + { XA Shift sub YA Shift sub moveto } + ifelse + nSym { + gsave + curveticks + { PAngle 180 sub CorrAngle sub tickAngle add /rotAngle ED + currentpoint translate rotAngle rotate + 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto + SymbolLinewidth setlinewidth stroke + } + { + rotateSymbol { PAngle 180 sub CorrAngle sub rotate } if + Symbol show + } + ifelse + grestore + deltaX deltaY rmoveto + } repeat + /YA YB def /XA XB def + } repeat + curveticks + { XA YA moveto } + { XA Shift sub YA Shift sub moveto } + ifelse + gsave + curveticks + { PAngle 180 sub CorrAngle sub tickAngle add /rotAngle ED + XA YA translate rotAngle rotate + 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto + SymbolLinewidth setlinewidth stroke + } + { + rotateSymbol { PAngle 180 sub CorrAngle sub rotate } if + Symbol show + } + ifelse + grestore + pop % delete the mark symbol +} def +% +/LineFill { % hv ------------ patch 7 ------------- + gsave + abs /hatchWidthInc ED + abs /hatchSepInc ED + abs CLW add /a ED + a 0 dtransform round exch round exch + 2 copy idtransform + exch Atan rotate + idtransform pop /a ED + .25 .25 itransform pathbbox + /y2 ED + a Div ceiling cvi /x2 ED /y1 ED + a Div cvi /x1 ED /y2 y2 y1 sub def + clip + newpath + 2 setlinecap + systemdict + /setstrokeadjust known { true setstrokeadjust } if + x2 x1 sub 1 add { + x1 a mul y1 moveto 0 y2 rlineto stroke + /x1 x1 1 add + hatchWidthInc 0 gt { CLW add } if + def + hatchSepInc 0 gt hatchWidthInc 0 gt or { + /a a hatchSepInc add def + CLW hatchWidthInc add SLW + } if + } repeat + grestore + pop pop } def +% +/DotFill {% on stack: dot radius + /dotRadius ED + abs CLW add /a ED + a 0 dtransform round exch round exch + 2 copy idtransform + exch Atan rotate + idtransform pop /a ED + .25 .25 itransform + pathbbox % llx lly urx ury of smallest bounding box + /y2 ED /x2 ED /y1 ED /x1 ED + y2 y1 sub a div 2 add cvi /Ny ED + x2 x1 sub a div 2 add cvi /Nx ED + clip + newpath + /yA y1 dotRadius add CLW add def + /xA0 x1 dotRadius add CLW add def + Ny { + /xA xA0 def + Nx { + newpath + xA yA dotRadius 0 360 arc + SolidDot { gsave fill grestore } if + stroke + xA a add /xA ED + } repeat + yA a add /yA ED + } repeat + grestore +} def +% +/PenroseFill {% on stack: scaling factor + dup dup scale + 1 exch div round /penroseFactor ED + a 0 dtransform round exch round exch + 2 copy idtransform + exch Atan rotate + idtransform pop /a ED + .25 .25 itransform pathbbox + /y2 ED + a Div ceiling cvi /x2 ED /y1 ED + a Div cvi /x1 ED /y2 y2 y1 sub def + clip + newpath + systemdict + /setstrokeadjust known { true setstrokeadjust } if + /I/S/L/W/G/+/Z/F/E/D[/def/exch/for{E D}/add{s E get mul} + { Z -36.2001 1 33 }{25 E S rlineto}{/q Z dup q G E q 1 + G}{Z 2 2}]{cvx def}forall + [0 72 1008 {dup sin E cos }F ]1 setlinejoin/s W{/a W{/b I 10{/i I 4{/m I moveto + i m +/j I 10{/l Z b m l + G a l G sub s m get div .2 + floor .3 + 25 + mul j l + S rmoveto}F i L j L stroke }F}F}F}F + grestore + pop pop +} def +% +/TruchetFill { % on stack: scaling factor + 10 dict begin + dup dup scale + 1 exch div round /penroseFactor ED + a 0 dtransform round exch round exch + 2 copy idtransform + exch Atan rotate + idtransform pop /a ED + .25 .25 itransform pathbbox + /y2 ED + a Div ceiling cvi /x2 ED /y1 ED + a Div cvi /x1 ED /y2 y2 y1 sub def + clip + newpath + systemdict + /setstrokeadjust known { true setstrokeadjust } if + /ma a neg def + /ha a 2 div def + /mha ha neg def + /tile { + rand dup 2 idiv 2 mul eq { 90 rotate } if + mha mha moveto ha mha lineto + ha ha lineto mha ha lineto +% closepath .1 setlinewidth stroke + contents + } def + /contents{ + 0 ha moveto ha 0 lineto + 0 mha moveto mha 0 lineto +% 1 setlinewidth stroke + } def + /dotiling { + f ma mul a f a mul { + /i exch def + f ma mul a f a mul { + /j exch def + gsave i j translate + tile stroke grestore + } for + } for + } def +% + /f 3 def + 5 srand dotiling + end % local user dict +} def +% +/BeginArrow { + ADict begin % hold it local, for end see EndArrow + /@mtrx CM def + gsave + 2 copy T + 2 index sub neg exch + 3 index sub exch Atan + rotate newpath +} def +% +/EndArrow { @mtrx setmatrix CP grestore end } def % end the ADict +% +/Arrow { + CLW mul add dup + 2 div /w ED + mul dup /h ED + mul /a ED + { 0 h T 1 -1 scale } if + w neg h moveto + 0 0 L w h L w neg a neg rlineto + gsave fill grestore +} def +% +/ArrowD { % the sides are drawn as curves (hv 20071211) + CLW mul add dup + 2 div /w ED + mul dup /h ED + mul /Inset ED + { 0 h T 1 -1 scale } if % changes the direction +% we use y=w/h^2 * x^2 as equation for the control points +% for the coordinates the arrow is seen from top to bottom +% the bottom (tip) is (0;0) + w neg h moveto % lower left of > + w 9 div 4 mul neg h 3 div 2 mul + w 9 div neg h 3 div + 0 0 curveto % tip of > + w 9 div h 3 div + w 9 div 4 mul h 3 div 2 mul + w h curveto % upper left of > + w neg Inset neg rlineto % move to x=0 and inset + gsave fill grestore +} def +% +/Tbar { + CLW mul add /z ED + z -2 div CLW 2 div moveto + z 0 rlineto stroke + 0 CLW moveto +} def +% +/Bracket { + CLW mul add dup CLW sub 2 div + /x ED mul CLW add /y ED /z CLW 2 div def + x neg y moveto + x neg CLW 2 div L x CLW 2 div L x y L stroke + 0 CLW moveto +} def +% +/RoundBracket { + CLW mul add dup 2 div + /x ED mul /y ED /mtrx CM def + 0 CLW 2 div T x y mul 0 ne { x y scale } if + 1 1 moveto + .85 .5 .35 0 0 0 curveto + -.35 0 -.85 .5 -1 1 curveto + mtrx setmatrix stroke 0 CLW moveto +} def +% +/SD { 0 360 arc fill } def +% +/EndDot { % DS is the dot size + { /z DS def } { /z 0 def } ifelse % outer or inner dimen + /b ED % the color definition + 0 z DS SD + b { 0 z DS CLW sub SD } if + 0 DS z add CLW 4 div sub + moveto +} def +% +/Shadow { [ { /moveto load } { /lineto load } { /curveto load } { + /closepath load } /pathforall load stopped { pop pop pop pop CP /moveto + load } if ] cvx newpath 3 1 roll T exec } def +% +/NArray { % holds the coordinates and on top of stack the showpoints boolean + /showpoints ED + counttomark 2 div dup cvi /n ED % n 2 div on stack + n eq not { exch pop } if % even numbers of points? delete one + ] aload /Points ED + showpoints not { Points aload pop } if +% { ] aload /Points ED } +% { n 2 mul 1 add -1 roll pop } ifelse % delete the mark symbol +} def +% +/Line { + NArray n 0 eq not + { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub def + n { Lineto } repeat + CP 4 2 roll ArrowB L pop pop + } if +} def +% +/LineToYAxis { + /Ox ED % Save the x origin value + NArray % all x-y pairs on stack + n { 2 copy moveto % go to current point + Ox exch Lineto % line to y-axis + pop % delete old x-value + } repeat +} def +% +/LineToXAxis{ + /Oy ED % Save the y origin value + NArray % all x-y pairs on stack + n 0 eq not + { n 1 eq { 0 0 /n 2 def } if + ArrowA + /n n 2 sub def + CP 2 copy moveto pop Oy Lineto + n { 2 copy moveto pop Oy Lineto } repeat + CP + 4 2 roll + ArrowB + 2 copy moveto pop Oy + L + pop pop } if +} def +% +/Arcto { + /a [ 6 -2 roll ] cvx def + a r + /arcto load stopped { 5 } { 4 } ifelse { pop } repeat + a +} def +% +/CheckClosed { + dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq + and { pop pop /n n 1 sub def } if +} def +% +/Polygon { + NArray n 2 eq { 0 0 /n 3 def } if + n 3 lt + { n { pop pop } repeat } + { n 3 gt { CheckClosed } if + n 2 mul -2 roll + /y0 ED /x0 ED /y1 ED /x1 ED + x1 y1 + /x1 x0 x1 add 2 div def + /y1 y0 y1 add 2 div def + x1 y1 moveto + /n n 2 sub def + n { Lineto } repeat + x1 y1 x0 y0 6 4 roll Lineto + Lineto pop pop closepath } ifelse +} def +% +/SymbolPolygon { % on stack [ x y x y ... + counttomark % number of elements + 2 add /m ED + 2 copy m 2 roll % copy last two + m 2 div cvi /n ED % n pairs + /YA ED /XA ED % the start point + n 1 sub { + /YB ED /XB ED + /XLength XB XA sub def + /YLength YB YA sub def + /PAngle YLength XLength Atan def + /XYLength XLength YLength Pyth def + /nSym XYLength SymStep Div cvi def + /Shift Symbol stringwidth pop 2 Div def + /deltaX XLength nSym Div def + /deltaY YLength nSym Div def + XA Shift sub YA Shift sub moveto + nSym { + gsave rotateSymbol { PAngle 180 sub CorrAngle sub rotate } if + Symbol show + grestore + deltaX deltaY rmoveto + } repeat +% XB Shift sub YB Shift sub moveto Symbol show + /YA YB def /XA XB def + } repeat + pop % delete the mark symbol +} def +% +/Diamond { + /mtrx CM def + T rotate + /h ED + /w ED + dup 0 eq { pop } { CLW mul neg + /d ED + /a w h Atan def + /h d a sin Div h add def + /w d a cos Div w add def } ifelse + mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2 div + /ArrowA { moveto } def + /ArrowB { } def + false Line + closepath mtrx setmatrix } def +% +/Triangle { + /mtrx CM def + translate + rotate /h ED 2 div /w ED + dup CLW mul /d ED + /h h d w h Atan sin Div sub def + /w w d h w Atan 2 div dup cos exch sin Div mul sub def + mark + 0 d w neg d 0 h w d 0 d + /ArrowA { moveto } def + /ArrowB { } def + false + Line + closepath + mtrx +% DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis) +% setmatrix } def + setmatrix pop +} def +% DG/SR modification end +% +/CCA { + /y ED /x ED + 2 copy y sub /dy1 ED + x sub /dx1 ED + /l1 dx1 dy1 Pyth def +} def +% +/CC { + /l0 l1 def + /x1 x dx sub def + /y1 y dy sub def + /dx0 dx1 def + /dy0 dy1 def + CCA + /dx dx0 l1 c exp mul dx1 l0 c exp mul add def + /dy dy0 l1 c exp mul dy1 l0 c exp mul add def + /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos abs b exp a mul dx dy Pyth Div 2 div def + /x2 x l0 dx mul m mul sub def + /y2 y l0 dy mul m mul sub def + /dx l1 dx mul m mul neg def + /dy l1 dy mul m mul neg def +} def +% +/IC { + /c c 1 add def + c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if } ifelse + /a a 2 mul 3 div 45 cos b exp div def + CCA + /dx 0 def + /dy 0 def +} def +% +/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def +/NC { CC x1 y1 x2 y2 x y curveto } def +/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def +/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def +/NAC { x2 y2 x y curveto CC x1 y1 } def +/EAC { x2 y2 x y ArrowB curveto pop pop } def +% +/OpenCurve { + NArray n 3 lt + { n { pop pop } repeat } + { BOC /n n 3 sub def n { NC } repeat EOC } ifelse +} def +% +/CurvePath { + %% for negative SymStep we calculate the distance + SymStep 0 lt { gsave PathLength SymStep div abs /SymStep ED grestore } if + 0.5 setflat + flattenpath /z 0 def /z0 0 def + { /y1 ED /x1 ED /y2 y1 def /x2 x1 def + x1 Shift sub y1 Shift sub moveto + gsave + curveticks + { x1 y1 translate startAngle rotate + 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto + SymbolLinewidth setlinewidth stroke + } + { startAngle rotate Symbol show } + ifelse + grestore /z0 z def } + { /y ED /x ED PathLength@ z z0 sub SymStep ge { + x Shift sub y Shift sub moveto + gsave + curveticks + { y yOld sub x xOld sub Atan 180 sub CorrAngle sub /rotAngle ED + x y translate rotAngle rotate + 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto + SymbolLinewidth setlinewidth stroke + } + { + rotateSymbol { y yOld sub x xOld sub Atan 180 sub CorrAngle sub rotate } if + Symbol show + } + ifelse + grestore /z0 z def } if + /yOld y def /xOld x def } + {} %% the lineto part + { /y y2 def /x x2 def PathLength@ + x Shift sub y Shift sub moveto + gsave + curveticks + { y yOld sub x xOld sub Atan 180 sub /rotAngle ED + x y translate rotAngle rotate + 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto + SymbolLinewidth setlinewidth stroke + } + { + x Shift sub y Shift sub moveto + rotateSymbol { y yOld sub x xOld sub Atan 180 sub CorrAngle sub rotate } if + Symbol show + } + ifelse + grestore + } + pathforall +% curveticks +% { gsave +% x y translate rotAngle rotate +% 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto +% SymbolLinewidth setlinewidth stroke grestore +% } if + z +} def +% +/OpenSymbolCurve { + OpenCurve + 0.1 setflat + /Shift Symbol stringwidth pop 2 div def + CurvePath +} def +% +/AltCurve { + { false NArray n 2 mul 2 roll + [ n 2 mul 3 sub 1 roll ] aload + /Points ED + n 2 mul -2 roll } + { false NArray } ifelse + n 4 lt { n { pop pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse +} def +% +/AltOpenSymbolCurve { + AltCurve + 0.1 setflat + /Shift Symbol stringwidth pop 2 div def + CurvePath +} def +% +/ClosedCurve { + NArray n 3 lt + { n { pop pop } repeat } + { n 3 gt { CheckClosed } if + 6 copy n 2 mul 6 add 6 roll + IC CC x y moveto n { NC } repeat + closepath pop pop + } ifelse +} def +% +/ClosedSymbolCurve { + ClosedCurve + 0.1 setflat + /Shift Symbol stringwidth pop 2 div def + CurvePath +} def +% +/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def +/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def +/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore } def +% +/FontDot { + DS 2 mul dup + matrix scale matrix concatmatrix exch matrix + rotate matrix concatmatrix exch + findfont exch makefont setfont +} def +% +/Rect { + x1 y1 y2 add 2 div moveto + x1 y2 lineto + x2 y2 lineto + x2 y1 lineto + x1 y1 lineto + closepath +} def +% +/OvalFrame { + x1 x2 eq y1 y2 eq or + { pop pop x1 y1 moveto x2 y2 L } + { y1 y2 sub abs x1 x2 sub abs 2 copy gt + { exch pop } { pop } ifelse + 2 div exch { dup 3 1 roll mul exch } if + 2 copy lt { pop } { exch pop } ifelse + /b ED + x1 y1 y2 add 2 div moveto + x1 y2 x2 y2 b arcto + x2 y2 x2 y1 b arcto + x2 y1 x1 y1 b arcto + x1 y1 x1 y2 b arcto + 16 { pop } repeat + closepath + } ifelse +} def +% +/Frame { + CLW mul /a ED + 3 -1 roll + 2 copy gt { exch } if + a sub /y2 ED + a add /y1 ED + 2 copy gt { exch } if + a sub /x2 ED + a add /x1 ED + 1 index 0 eq { pop pop Rect } { OvalFrame } ifelse +} def +% +/BezierNArray { + /f ED + counttomark 2 div dup cvi /n ED + n eq not { exch pop } if + n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat + f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse +} def +% +/OpenBezier { + BezierNArray + n 1 eq + { pop pop } + { ArrowA n 4 sub 3 idiv + { 6 2 roll 4 2 roll curveto } repeat + 6 2 roll 4 2 roll ArrowB curveto } ifelse +} def +% +/OpenSymbolBezier { + OpenBezier + 0.1 setflat + /Shift Symbol stringwidth pop 2 div def + CurvePath +} def +% +/ClosedBezier { + BezierNArray + n 1 eq + { pop pop } + { moveto n 1 sub 3 idiv + { 6 2 roll 4 2 roll curveto } repeat + closepath } ifelse +} def +% +/ClosedSymbolBezier { + /f ED % save showpoints value + 2 copy /yEnd ED /xEnd ED + counttomark -2 roll 2 copy /yStart ED /xStart ED + counttomark 2 roll + f + ClosedBezier + 0.1 setflat + /Shift Symbol stringwidth pop 2 div def + CurvePath + [ xEnd yEnd xStart yStart SymbolLine +} def +% +/BezierShowPoints { + gsave + Points aload length 2 div cvi /n ED + moveto + n 1 sub { lineto } repeat + CLW 2 div SLW [ 4 4 ] 0 setdash stroke + grestore +} def +% +/Parab { + /y0 ED /x0 ED /y1 ED /x1 ED + /dx x0 x1 sub 3 div def + /dy y0 y1 sub 3 div def + x0 dx sub y0 dy add x1 y1 ArrowA + x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB + curveto + /Points [ x1 y1 x0 y0 x0 2 mul x1 sub y1 ] def +} def +% +/Parab1 { % 1 end | 0 SP + /ySP ED /xSP ED /y1 ED /x1 ED + /dx xSP x1 sub 3 div def + /dy ySP y1 sub 3 div def + newpath x1 y1 moveto xSP y1 lineto xSP ySP lineto + x1 ySP lineto closepath clip + currentpoint + newpath moveto + xSP dx sub ySP dy add x1 y1 ArrowA + xSP dx add ySP dy add xSP 2 mul x1 sub y1 ArrowB + curveto + /Points [ x1 y1 xSP ySP xSP 2 mul x1 sub y1 ] def +} def +% +/Grid { + newpath + /a 4 string def + /b ED % psk@gridlabels in pt + /c ED % { \pst@usecolor\psgridlabelcolor } + /n ED % psk@griddots + cvi dup 1 lt { pop 1 } if + /s ED % \psk@subgriddiv + s div dup 0 eq { pop 1 } if + /dy ED s div dup 0 eq { pop 1 } if % \pst@number\psyunit abs + /dx ED dy div round dy mul % \pst@number\psxunit abs + /y0 ED dx div round dx mul + /x0 ED dy div round cvi + /y2 ED dx div round cvi + /x2 ED dy div round cvi + /y1 ED dx div round cvi + /x1 ED + /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def + /w x2 x1 sub 0 gt { 1 } { -1 } ifelse def + b 0 gt { + /z1 b 4 div CLW 2 div add def +% /Helvetica findfont b scalefont setfont + /b b .95 mul CLW 2 div add def } if + systemdict /setstrokeadjust known + { true setstrokeadjust /t { } def } + { /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add + exch itransform } bind def } ifelse + gsave n 0 gt { 1 setlinecap [ 0 dy n div ] dy n div 2 div setdash } { 2 setlinecap } ifelse + /i x1 def + /f y1 dy mul n 0 gt { dy n div 2 div h mul sub } if def + /g y2 dy mul n 0 gt { dy n div 2 div h mul add } if def + x2 x1 sub w mul 1 add dup 1000 gt { pop 1000 } if + { i dx mul dup y0 moveto + b 0 gt + { gsave c i a cvs dup stringwidth pop + /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse + h 0 gt {b neg}{z1} ifelse + rmoveto show grestore } if + dup t f moveto + g t L stroke + /i i w add def + } repeat + grestore + gsave + n 0 gt + % DG/SR modification begin - Nov. 7, 1997 - Patch 1 + %{ 1 setlinecap [ 0 dx n div ] dy n div 2 div setdash } + { 1 setlinecap [ 0 dx n div ] dx n div 2 div setdash } + % DG/SR modification end + { 2 setlinecap } ifelse + /i y1 def + /f x1 dx mul n 0 gt { dx n div 2 div w mul sub } if def + /g x2 dx mul n 0 gt { dx n div 2 div w mul add } if def + y2 y1 sub h mul 1 add dup 1000 gt { pop 1000 } if + { newpath i dy mul dup x0 exch moveto + b 0 gt { gsave c i a cvs dup stringwidth pop + /z2 ED + w 0 gt {z1 z2 add neg} {z1} ifelse + h 0 gt {z1} {b neg} ifelse + rmoveto show grestore } if + dup f exch t moveto + g exch t L stroke + /i i h add def + } repeat + grestore +} def +% +/ArcArrow { + /d ED /b ED /a ED + gsave + newpath 0 -1000 moveto clip + newpath + 0 1 0 0 b + grestore + c mul + /e ED + pop pop pop r a e d PtoC y add exch x add + exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c + mul neg d +} def +% +/Ellipse { + /rotAngle ED + /mtrx CM def + T + rotAngle rotate + scale 0 0 1 5 3 roll arc + mtrx setmatrix +} def +% +/ArcAdjust { %%%% Vincent Guirardel +% given a target length (targetLength) and an initial angle (angle0) [in the stack], +% let M(angle0)=(rx*cos(angle0),ry*sin(angle0))=(x0,y0). +% This computes an angle t such that (x0,y0) is at distance +% targetLength from the point M(t)=(rx*cos(t),ry*sin(t)). +% NOTE: this an absolute angle, it does not have to be added or substracted to angle0 +% contrary to TvZ's code. +% To achieve, this, one iterates the following process: start with some angle t, +% compute the point M' at distance targetLength of (x0,y0) on the semi-line [(x0,y0) M(t)]. +% Now take t' (= new angle) so that (0,0) M(t') and M' are aligned. +% +% Another difference with TvZ's code is that we need d (=add/sub) to be defined. +% the value of d = add/sub is used to know on which side we have to move. +% It is only used in the initialisation of the angle before the iteration. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Input stack: 1: target length 2: initial angle +% variables used : rx, ry, d (=add/sub) +% + /targetLength ED /angle0 ED + /x0 rx angle0 cos mul def + /y0 ry angle0 sin mul def +% we are looking for an angle t such that (x0,y0) is at distance targetLength +% from the point M(t)=(rx*cos(t),ry*sin(t))) +%initialisation of angle (using 1st order approx = TvZ's code) + targetLength 57.2958 mul + angle0 sin rx mul dup mul + angle0 cos ry mul dup mul + add sqrt div +% if initialisation angle is two large (more than 90 degrees) set it to 90 degrees +% (if the ellipse is very curved at the point where we draw the arrow, % +% the value can be much more than 360 degrees !) +% this should avoid going on the wrong side (more than 180 degrees) or go near +% a bad attractive point (at 180 degrees) + dup 90 ge { pop 90 } if + angle0 exch d % add or sub +% maximum number of times to iterate the iterative procedure: +% iterative procedure: takes an angle t on top of stack, computes a +% better angle (and put it on top of stack) + 30 { dup +% compute distance D between (x0,y0) and M(t) + dup cos rx mul x0 sub dup mul exch sin ry mul y0 sub dup mul add sqrt +% if D almost equals targetLength, we stop + dup targetLength sub abs 1e-5 le { pop exit } if +% stack now contains D t +% compute the point M(t') at distance targetLength of (x0,y0) on the semi-line [(x0,y0) M(t)]: +% M(t')= ( (x(t)-x0)*targetLength/d+x0 , (y(t)-y0)*targetLength/d+y0 ) + exch dup cos rx mul x0 sub exch sin ry mul y0 sub +% stack contains: y(t)-y0, x(t)-x0, d + 2 index Div targetLength mul y0 add ry Div exch + 2 index Div targetLength mul x0 add rx Div +% stack contains x(t')/rx , y(t')/ry , d +% now compute t', and remove D from stack + atan exch pop + } repeat +% we don't look at what happened... in particular, if targetLength is greater +% than the diameter of the ellipse... +% the final angle will be around /angle0 + 180. maybe we should treat this pathological case... +% after iteration, stack contains an angle t such that M(t) is the tail of the arrow +% to give back the result as a an angle relative to angle0 we could add the following line: +% angle0 sub 0 exch d +% +% begin bug fix 2006-01-11 +% we want to adjust the new angle t' by a multiple of 360 so that | t'-angle0 | <= 180 +%(we don't want to make the ellipse turn more or less than it should)... +dup angle0 sub dup abs 180 gt { 180 add 360 div floor 360 mul sub } { pop } ifelse +% end bug fix +} def +% +/EllipticArcArrow { + /d ED % is add or sub + /b ED % arrow procedure + /a1 ED % angle + gsave + newpath + 0 -1000 moveto + clip % Set clippath far from arrow. + newpath + 0 1 0 0 b % Draw arrow to determine length. + grestore +% Length of arrow is on top of stack. Next 3 numbers are junk. +% + a1 exch ArcAdjust % Angular position of base of arrow. + /a2 ED + pop pop pop + a2 cos rx mul xOrig add % hv 2007-08-29 x->xOrig + a2 sin ry mul yOrig add % hv 2007-08-29 y->yOrig + a1 cos rx mul xOrig add % + a1 sin ry mul yOrig add % +% Now arrow tip coor and base coor are on stack. + b pop pop pop pop % Draw arrow, and discard coordinates. + a2 CLW 8 div +% change value of d (test it by looking if `` 1 1 d '' gives 2 or not ) + 1 1 d 2 eq { /d { sub } def } { /d { add } def } ifelse + ArcAdjust +% resets original value of d + 1 1 d 2 eq { /d { sub } def } { /d { add } def } ifelse % Adjust angle to give overlap. +} def +%%------------------ tvz/DG/hv (2004-05-10) end -------------------%% +% +/Rot { CP CP translate 3 -1 roll neg rotate NET } def +% +/RotBegin { + tx@Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 } def } if + /TMatrix [ TMatrix CM ] cvx def + /a ED + a Rot /RAngle [ RAngle dup a add ] cvx def +} def +% +/RotEnd { + /TMatrix [ TMatrix setmatrix ] cvx def + /RAngle [ RAngle pop ] cvx def +} def +% +/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def +/PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def +/PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def +% +/Uput { + /a ED + add 2 div /h ED 2 + div /w ED + /s a sin def + /c a cos def + /b s abs c abs 2 copy gt dup + /q ED + { pop } { exch pop } ifelse def + /w1 c b div w mul def + /h1 s b div h mul def + q { w1 abs w sub dup c mul abs }{ h1 abs h sub dup s mul abs } ifelse +} def +% +/UUput { + /z ED + abs /y ED + /x ED + q { x s div c mul abs y gt }{ x c div s mul abs y gt } ifelse + { x x mul y y mul sub z z mul add sqrt z add } + { q { x s div } { x c div } ifelse abs + } ifelse + a PtoC + h1 add exch + w1 add exch +} def +% +/BeginOL { + dup (all) eq exch TheOL eq or + { IfVisible not { Visible /IfVisible true def } if } + { IfVisible { Invisible /IfVisible false def } if } ifelse +} def +% +/InitOL { + /OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def + /Visible { CP OLUnit idtransform T moveto } def + /Invisible { CP OLUnit neg exch neg exch idtransform T moveto } def + /BOL { BeginOL } def + /IfVisible true def +} def +% +%%%%%%%%%%%%%%%%% tools %%%%%%%%%%%%%%%%%%%%%%%%% +%%%%% ### bubblesort ### +%% syntax : array bubblesort --> array2 trie par ordre croissant +%% code de Bill Casselman +%% http://www.math.ubc.ca/people/faculty/cass/graphics/text/www/ +/bubblesort { +4 dict begin + /a exch def + /n a length 1 sub def + n 0 gt { + % at this point only the n+1 items in the bottom of a remain to + % the sorted largest item in that blocks is to be moved up into + % position n + n { + 0 1 n 1 sub { + /i exch def + a i get a i 1 add get gt { + % if a[i] > a[i+1] swap a[i] and a[i+1] + a i 1 add + a i get + a i a i 1 add get + % set new a[i] = old a[i+1] + put + % set new a[i+1] = old a[i] + put + } if + } for + /n n 1 sub def + } repeat + } if + a +end +} def +% +% +/concatstringarray{ % [(a) (b) ... (z)] --> (ab...z) 20100422 + 0 1 index { length add } forall + string + 0 3 2 roll + { 3 copy putinterval length add }forall + pop +} bind def +% +/dot2comma {% on stack a string (...) + 2 dict begin + /Output exch def + 0 1 Output length 1 sub { + /Index exch def + Output Index get 46 eq { Output Index 44 put } if + } for + Output + end +} def +% +end +%-----------------------------------------------------------------------------% +% +% END pstricks.pro + +%%EndProcSet +%%BeginProcSet: pst-algparser.pro 0 0 +% $Id: pst-algparser.pro 594 2011-10-31 18:13:18Z herbert $ +%% +%% PostScript prologue for PSTricks algorithm parser +%% Version 0.04, 2011/10/21 +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +%% +%%-----------------------------------------------------------------------------% +% +/AlgParser { tx@AlgToPs begin AlgToPs end } def % Dominique Rodriguez +% +/tx@CoreAnalyzerDict 100 dict def tx@CoreAnalyzerDict begin +% +% PS ANALYZER FOR ALGEBRAIC EXPRESSION V1.13 +% +% 09/2011 DR factorial with ! added +% +% E->T|E+T +% T->FS|T*FS +% FS -> F | +FS | -FS +% F->P|F^SF|P! +% P->(E)|literal +% literal->number|var|var[E]|func(params) +% params->E|E,param +% number->TOBEFINISHED +% +%% E expression, T term, SF signed factor, F factor, P power +% +%% parser +% +%% str +% +%% C->E<condition_operators>E +%% STR index -> STR index+lenExpr +/AnalyzeCond { AnalyzeExpr ReadCondOp AnalyzeExpr EvalCondOp } def +% +%% analyze Expression List (separator , or | ) +%% STR index -> STR index+lenExpr +%% /AnalyzeListOfE { +%% { NextNonBlankChar pop AnalyzeExpr%%dup Strlen eq { exit } if NextNonBlankChar +%% NextNonBlankChar dup 0 eq { pop exit } if +%% dup 44 ne 1 index 124 ne and { dup 41 ne { PROBLEMCONTACTBILLOU } { pop exit } ifelse } if +%% pop NextNonBlankChar dup 0 eq { exit } if 124 ne { PROBLEMCONTACTBILLOU } if 1 add NextNonBlankChar 0 eq {toto} if } loop +%% AnalyzeListOfEPostHook +%% } def +/AnalyzeListOfE { + /NotFirst false def + { NextNonBlankChar pop AnalyzeExpr + NotFirst { EvalListOfExpr } { /NotFirst true def } ifelse + dup Strlen eq { exit } if NextNonBlankChar + dup 44 ne 1 index 124 ne and + { dup 41 ne { PROBLEMCONTACTBILLOU } { pop exit } ifelse } + if pop 1 add } loop + AnalyzeListOfEPostHook +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% E->T|E+T +%% STR index -> STR index+lenExpr +/AnalyzeExpr { + AnalyzePreHook AnalyzeTerm IsEndingExpr + { dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse } + { { RollOp 1 add NextNonBlankChar pop AnalyzeTerm PreEvalHook EvalAddSub IsEndingExpr { pop exit } if } loop } + ifelse + AnalyzePostHook +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% T->FS|T*FS +%% STR index +/AnalyzeTerm { + AnalyzePreHook AnalyzeSignedFactor IsEndingTerm + { dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse } + { { RollOp 1 add NextNonBlankChar pop AnalyzeSignedFactor PreEvalHook EvalMulDiv IsEndingTerm { pop exit } if} loop } + ifelse + AnalyzePostHook +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% FS -> F | +FS | -FS +%% STR index +/AnalyzeSignedFactor { + AnalyzePreHook 2 copy get dup IsUnaryOp + { RollOp 1 add NextNonBlankChar pop AnalyzeSignedFactor EvalUnaryOp } + { pop AnalyzeFactor } + ifelse AnalyzePostHook +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% F->P|F^P|P! +%% STR index +/AnalyzeFactor { + AnalyzePreHook AnalyzePower IsEndingFactor + { dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse } + { { dup 33 eq%% is there a ! DR 09/2011 + { pop 1 add NextNonBlankChar pop EvalFactorial } + { RollOp 1 add NextNonBlankChar pop AnalyzePower PreEvalHook EvalPower } + ifelse + IsEndingFactor { pop exit } if } loop } + ifelse AnalyzePostHook +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% P->(E)|literal +%% STR index +/AnalyzePower { + %% depending of first char either a number, or a literal + 2 copy get dup 40 eq%%an open par + { pop 1 add NextNonBlankChar pop AnalyzeExpr 1 add NextNonBlankChar pop } + { AnalyzeLiteral } + ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% STR index STR[index] -> STR index +%/AnalyzeLiteral { IsNumber { EvalNumber } { EvalLiteral } ifelse } def +/AnalyzeLiteral { dup IsUnaryOp exch IsNumber or { EvalNumber } { EvalLiteral } ifelse } def%%dr 09102006 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% recognize + or - +%% chr -> T/F +/IsUnaryOp { dup 43 eq exch 45 eq or } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% a number can contain only : 0123456789. +%% chr -> T/F +/IsNumber { dup 48 ge exch dup 57 le 3 -1 roll and exch 46 eq or } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% STR index -> STR index number +%% a number can be of the form [0-9]*.[0-9]*\([eE][+-]?[0-9]+\)? +%% STR index -> STR index' number +/ReadNumber { + exch dup 3 -1 roll dup 3 1 roll + %%read mantissa + { 1 add 2 copy dup Strlen eq { pop pop 0 exit } if get dup IsNumber not { exit } if pop } loop + dup 101 eq exch 69 eq or + %%% there is a "e" or "E" -> read exponant + { 1 add 2 copy get dup IsUnaryOp + { pop 1 add 2 copy get } if + { IsNumber not { exit } if 1 add 2 copy get } loop } + if + dup 4 1 roll + 3 -1 roll exch 1 index sub getinterval +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% a number can contain only : 0123456789. +%% chr -> T/F +/IsCondOp { dup 30 eq exch dup 60 ge exch 62 le and or } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% STR index -> STR index number +%% a number can be of the form [0-9]*.[0-9]*\([eE][+-]?[0-9]+\)? +%% STR index -> STR index' number +/ReadCondOp { + NextNonBlankChar 1 index 4 1 roll + { IsCondOp not { exit } if 1 add 2 copy get } loop + 2 copy 5 -1 roll + exch 1 index sub getinterval 3 1 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% a literal can contain only : 0123456789. +%% chr -> T/F +/IsLiteral {% + dup 48 ge exch dup 57 le 3 -1 roll and exch + dup 65 ge exch dup 90 le 3 -1 roll and 3 -1 roll or exch + dup 97 ge exch 122 le and or } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% a literal can be of the form [a-zA-Z][a-zA-Z0-9]*\(\((Expression)\)|\(\[Expression\]\)\)? +%% STR index -> literal STR index' nextchr +/ReadLiteral { + exch dup 3 -1 roll dup 3 1 roll + %%read literal core + { 2 copy dup Strlen eq { pop pop 0 exit } if get dup IsLiteral not { exit } if pop 1 add } loop + 4 1 roll dup 5 1 roll 3 -1 roll exch 1 index sub getinterval 4 1 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% expr is ended by end of str or a clpar +%% STR index -> STR index STR[index] T/F +/IsEndingExpr {% + 2 copy dup Strlen eq + %% if end of str is reached -> end ! + { pop pop 0 true } + %% ending chr -> clpar, comma, |, <, >, =, !, + {get dup dup 41 eq + exch dup 124 eq + exch dup 93 eq + exch dup 44 eq + exch dup 30 eq + exch dup 60 ge exch 62 le and or or or or or} + ifelse } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% expr is ended by end of str or a +- +%% STR index -> STR index STR[index] T/F +/IsEndingTerm { IsEndingExpr { true } { dup dup 43 eq exch 45 eq or } ifelse } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% expr is ended by end of str or */ +%% STR index -> STR index STR[index] T/F +/IsEndingFactor { IsEndingTerm { true } { dup dup 42 eq exch 47 eq or } ifelse } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% expr is ended by end of str or ^ +%% STR index -> STR index STR[index] T/F +/IsEndingPower { IsEndingFactor { true } { dup 94 eq } ifelse } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% STR index -> STR index STR[index] +/NextNonBlankChar { { dup Strlen eq { 0 exit } if 2 copy get dup neBlkChar { exit } if pop 1 add } loop } bind def +/neBlkChar { dup 32 ne exch dup 10 ne exch 9 ne and and } bind def +%%%%%%%%%%%%%%%%%%%%%%%% +%% DEBUG +/BRK {false} def +/BRKtrue {/BRK true def} def +/BRKStop {BRK {BRKtoto} if } def +/BRKEvalStop {BRK exch if } def +/BRKBRK2true {BRK {BRK2true} if } def +/BRK2 {false} def +/BRK2true {/BRK2 true def} def +/BRK2Stop {BRK2 {BRK2toto} if } def/BRK {false} def +end +% +%-------------------------------------------------------------------------------% +% +/tx@AlgToPs 12 dict def tx@AlgToPs begin +% +%% algExpr -> PSVector +/AlgToPs { tx@CoreAnalyzerDict begin InitParser AnalyzeListOfE pop pop EndingSequence end } def +/EndingSequence { ExpressionVector aload length /end cvx exch 1 add array astore } def +/InitParser { /ExpressionVector [ /tx@AddMathFunc cvx /begin cvx ] def dup length /Strlen exch def 0 } def +/Strlen 0 def +/EvalListOfExpr {} def% +/EvalNumber {% + ReadNumber cvr /ExpressionVector ExpressionVector aload length dup 3 add -1 roll cvx + exch 1 add array astore def NextNonBlankChar pop } def +/EvalAddSub {% + /ExpressionVector ExpressionVector aload length dup 5 add -1 roll + 43 eq { /add } { /sub } ifelse cvx exch 1 add array astore def +} def +/EvalMulDiv {% + /ExpressionVector ExpressionVector aload length dup 5 add -1 roll + 42 eq { /mul } { /div } ifelse cvx exch 1 add array astore def +} def +/EvalPower {% + /ExpressionVector ExpressionVector aload length dup 5 add -1 roll + pop /exp cvx exch 1 add array astore def +} def +/EvalFactorial {% DR 09/2011 + /ExpressionVector ExpressionVector aload length + /fact cvx exch 1 add array astore def +} def +/EvalLiteral {% + ReadLiteral + dup 40 eq%%% there is an open par -> function call + { pop 2 index + dup (Sum) eq { EvalSum } + { dup (IfTE) eq { EvalCond } + { dup (Derive) eq { pop EvalDerive } + { pop 1 add NextNonBlankChar pop AnalyzeListOfE 2 index TrigoFunc + /ExpressionVector ExpressionVector aload length dup 5 add -1 roll cvn cvx + exch 1 add array astore def 1 add NextNonBlankChar pop } ifelse } ifelse} ifelse } + { /ExpressionVector ExpressionVector aload length dup 6 add -1 roll cvn cvx exch 1 add array astore def + dup 91 eq%%% there is an open bracket -> vector element + { pop 1 add NextNonBlankChar pop AnalyzeExpr + /ExpressionVector ExpressionVector aload length /cvi cvx exch /get cvx exch 2 add array astore def 1 add } + { pop NextNonBlankChar pop } + ifelse} + ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% the derive function : Derive(n,f(x)) +%% firstparindex lastparindex -> +/EvalDerive { + %% manage the function descripiton + 1 add ReadNumber 3 1 roll NextNonBlankChar + 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if + 1 add NextNonBlankChar pop + 3 -1 roll cvi + dup 0 eq + { pop AnalyzeExpr 3 -1 roll pop 1 add } + { 1 sub 3 1 roll (x) exch tx@Derive begin DeriveIndexed end 4 -1 roll + { (x) tx@Derive begin Derive end } repeat + ExpressionVector exch /ExpressionVector [] def + AlgToPs aload length + /ExpressionVector 1 index 3 add -1 roll aload length dup 3 add -1 roll /l2 exch def /l1 exch def + l1 l2 add 1 add l2 neg roll l1 l2 add array astore def 3 -1 roll pop 1 add + 1 index length /Strlen exch def } ifelse +} def +/EvalSum {% + pop 1 add NextNonBlankChar pop + %% read the variable name + ReadLiteral pop NextNonBlankChar + 44 ne { ANALYZER_ERROR_missing_first_comma_in_Sum } if + %% read the initial value + 1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll + 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if + %% read the increment value + 1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll + 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if + %% read the limit value + 1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll + 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if + /ExpressionVector ExpressionVector aload length dup 7 add -3 roll 0 4 1 roll + 5 -1 roll 4 add array astore def + %% keep ExpressionVector for later and create a new one for internal Sum computation + ExpressionVector 3 1 roll /ExpressionVector [ 6 -1 roll cvn /exch cvx /def cvx ] def + 1 add NextNonBlankChar pop AnalyzeExpr + %% add each term + /ExpressionVector ExpressionVector aload length 1 add /add cvx exch array astore def + /ExpressionVector 4 -1 roll aload length ExpressionVector cvx /for cvx 3 -1 roll 2 add + array astore def 3 -1 roll pop 1 add +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Convert to radians if trigo function call +%% (name) -> +/TrigoFunc { + dup (cos) eq 1 index (sin) eq or exch (tan) eq or + { /ExpressionVector ExpressionVector aload length Pi /div cvx 180 /mul cvx 5 -1 roll 4 add + array astore def + } if +} def +/EvalCond {% + pop 1 add AnalyzeCond NextNonBlankChar + 44 ne { ANALYZER_ERROR_missing_first_comma_in_IfTE } if + ExpressionVector 3 1 roll /ExpressionVector [] def + 1 add AnalyzeExpr ExpressionVector 3 1 roll /ExpressionVector [] def + NextNonBlankChar 44 ne { ANALYZER_ERROR_missing_second_comma_in_IfTE } if + 1 add AnalyzeExpr + NextNonBlankChar 41 ne { ANALYZER_ERROR_missing_ending parenthesis_in_IfTE } if + ExpressionVector + /ExpressionVector 6 -1 roll aload length dup + 6 add -1 roll cvx exch dup 4 add -1 roll cvx /ifelse cvx 3 -1 roll 3 add array astore def + 1 add 3 -1 roll pop +} def +%% CondOp STR index +/EvalCondOp {% + 3 -1 roll + dup (=) eq { /eq } {% + dup (<) eq { /lt } {% + dup (>) eq { /gt } {% + dup (>=) eq { /ge } {% + dup (<=) eq { /ge } {% + dup (!=) eq { /ne } { ERROR_non_valid_conditional_operator } + ifelse } ifelse } ifelse } ifelse } ifelse } ifelse + cvx exch pop + /ExpressionVector ExpressionVector aload length dup 3 add -1 roll exch 1 add array astore def } def +/EvalUnaryOp { + 3 -1 roll 45 eq { /ExpressionVector ExpressionVector aload length /neg cvx exch 1 add array astore def } if +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% H O O K S +/AnalyzePreHook {} bind def +/PreEvalHook {} bind def +/AnalyzeListOfEPostHook {} bind def +/AnalyzePostHook {} def +/RollOp { 3 1 roll } bind def +end %tx@CoreAnalyzerDict +% +%--------------------------------------------------------------------% +% +/tx@Derive 41 dict def tx@Derive begin +%%increase ^^ for each function added +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% algExpr variable -> PSVector +/Derive {% + 10240 string 3 1 roll 0 3 1 roll + /Variable exch def + tx@CoreAnalyzerDict begin InitParser AnalyzeListOfE end +} def +/Strlen 0 def +/InitParser { dup length /Strlen exch def 0 } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% algExpr variable index -> PSVector +/DeriveIndexed {% + 3 1 roll 10240 string 3 1 roll 0 3 1 roll + /Variable exch def + tx@CoreAnalyzerDict begin InitParser pop 4 -1 roll AnalyzeExpr 4 -2 roll pop pop 4 -2 roll exch pop end +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (u,v)'=-(u',v') +/EvalListOfExpr {% + 4 2 roll 2 copy 9 -1 roll dup length 4 1 roll putinterval add AddPipe + 2 copy 7 -1 roll dup length 4 1 roll putinterval add + 6 -2 roll pop pop + 2 copy pop 0 6 2 roll GetIntervalNewStr 5 1 roll 2 copy 0 exch getinterval 6 1 roll } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (-u)'=-(u') +/EvalUnaryOp { + 4 -2 roll 4 index (0) eq + { (0) StrConcat 7 -1 roll pop } + { 7 -1 roll 45 eq + { AddSub AddOpPar true } { false } ifelse + 3 1 roll 5 index StrConcat 3 -1 roll { AddClPar } if } ifelse + 2 copy pop 0 6 2 roll GetIntervalNewStr + 7 -2 roll pop pop 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (number)'=0 +/EvalNumber { ReadNumber (0) 6 2 roll } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (u+v)'=u'+v' +/EvalAddSub {% + 7 index dup (0) eq + { pop true }%% du=0 nothing added + { dup length exch 5 index 5 index 3 -1 roll putinterval 4 -1 roll add 3 1 roll false } + ifelse + 5 index dup (0) eq + { pop { (0) } { 4 -2 roll 2 copy pop 0 6 2 roll GetIntervalNewStr } ifelse }%%dv=0 + { exch + { 5 -2 roll 7 index 45 eq { AddSub } if false } %%nothing yet added + { 5 -2 roll 7 index 43 eq%%something yet added + { AddAdd false } { AddSub AddOpPar true } ifelse } + ifelse 11 1 roll + 3 -1 roll StrConcat 10 -1 roll { AddClPar } if + 2 copy pop 0 6 2 roll GetIntervalNewStr } + ifelse + mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (u*v)' or (u/v)' +/EvalMulDiv { 6 index 42 eq {EvalMul} {EvalDiv} ifelse } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (u*v)'=u'*v+u*v' +/EvalMul {% + 4 -2 roll 7 index dup (0) eq + { pop false }%%du=0 + { (1) eq%%du=1 + { false } + { AddOpPar 7 index StrConcat AddClPar AddMul AddOpPar true } ifelse + 3 1 roll 6 index StrConcat 3 -1 roll { AddClPar } if + true }%%du!=0 + ifelse + 5 1 roll 5 index (0) eq + { 5 -1 roll not { (0) StrConcat } if }%%dv=0 + { 5 -1 roll { AddAdd } if + 4 index (1) eq + { 8 index StrConcat } + { AddOpPar 8 index StrConcat AddClPar AddMul AddOpPar 4 index StrConcat AddClPar } + ifelse + }%%dv!=0 + ifelse + 2 copy pop 0 6 2 roll GetIntervalNewStr + mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (u/v)'=(u'*v-u*v')/v^2 +/EvalDiv {% + 4 -2 roll + 4 index (0) eq%%dv=0 -> u'/v + { 7 index (0) eq { (0) StrConcat } { AddOpPar 7 index StrConcat AddClPar AddDiv 5 index StrConcat } ifelse } + { 7 index dup (0) eq + { pop }%%du=0 + { (1) eq%%du=1 + { false } + { AddOpPar 7 index StrConcat AddClPar AddMul AddOpPar true } ifelse + 3 1 roll 6 index StrConcat 3 -1 roll { AddClPar } if}%%du!=0 + ifelse + AddSub + 4 index (1) eq + { 8 index StrConcat } + { AddOpPar 8 index StrConcat AddClPar AddMul AddOpPar 4 index StrConcat AddClPar } + ifelse + %}%%dv!=0 + 2 copy GetIntervalNewStr 3 1 roll pop 0 AddOpPar 3 -1 roll StrConcat AddClPar + AddDiv AddOpPar 5 index StrConcat AddClPar 2 copy (^2) putinterval 2 add } + ifelse + 2 copy pop 0 6 2 roll GetIntervalNewStr + mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% str1 index str2 -> str1 index +/StrConcat { dup length 4 2 roll 2 copy 6 -1 roll putinterval 3 -1 roll add } bind def +/GetIntervalNewStr { 0 exch getinterval dup length string copy } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (u^v)'=(u^v)'=u'vu^(v-1)+v'u^(v)ln(u) +/EvalPower {% + 4 -2 roll 7 index (0) eq + {%%if du=0 then (u^v)'=v'ln(u)u^v + 4 index (0) eq + { (0) StrConcat }%%if dv=0 then (u^v)'=0 + { 4 index (1) ne { AddOpPar 4 index StrConcat (\)*) StrConcat } if + 8 index (e) ne { (ln\() StrConcat 8 index StrConcat (\)*) StrConcat } if + AddOpPar 8 index StrConcat (\)^\() StrConcat 5 index StrConcat AddClPar } ifelse + } + {%%du!=0 + 4 index (0) eq + {%%if dv=0 then (u^v)'=vu'u^(v-1) + 5 index dup IsStrNumber + { dup (0) eq + { StrConcat } + { dup dup (1) eq exch (1.0) eq or + { StrConcat } + { StrConcat + 7 index dup (1) ne exch (1.0) ne and%%%dr 09102006 insert du if <> 1 + { (*\() StrConcat 7 index StrConcat (\)) StrConcat } if%%%dr 09102006 + (*\() StrConcat 8 index StrConcat (\)) StrConcat + 5 index dup dup (2) eq exch (2.0) eq or + { pop } { cvr 1 sub 20 string cvs 3 1 roll (^) StrConcat 3 -1 roll StrConcat } ifelse } ifelse } ifelse } + { pop AddOpPar 5 index StrConcat (\)*\() StrConcat 8 index StrConcat (\)^\() StrConcat + 5 index StrConcat (-1\)) StrConcat } ifelse + } + {%%if dv!=0 and du!=0 then (u^v)'=u'vu^(v-1)+v'u^(v)ln(u) + 7 index (1) ne { AddOpPar 7 index StrConcat (\)*) StrConcat } if + AddOpPar 5 index StrConcat (\)*\() StrConcat + 8 index StrConcat (\)^\() StrConcat + 5 index StrConcat (-1\)+\() StrConcat + 4 index (1) ne { 4 index StrConcat (\)*\() StrConcat } if + 8 index StrConcat (\)^\() StrConcat + 5 index StrConcat (\)*ln\() StrConcat + 8 index StrConcat AddClPar + } ifelse + } ifelse + 2 copy pop 0 6 2 roll GetIntervalNewStr + mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% No derivative for factorial ! only cst => null derivative +/EvalFactorial {% DR 09/2011 + 4 index (0) eq + { (0) mark 8 -2 roll cleartomark 2 index 7 index dup 4 index exch sub getinterval exch 6 2 roll } + { DERIVATIVE_ENGINE_ERROR_no_variable_in_factorial } ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% str -> true/false +/IsStrNumber {% + true exch + { dup 48 lt exch dup 57 gt 3 -1 roll or + exch dup 46 ne%%. + exch dup 43 ne%%+ + exch 45 ne%%- + and and and { pop false } if } forall +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% literal switch -> func call, vector, variables +/EvalLiteral {% + ReadLiteral dup 40 eq%%% there is an open par -> function call + { pop (EvalFunc_ ) 9 4 index StrConcat 0 exch getinterval cvn cvx exec } + { dup 91 eq%%% there is an open bracket -> vector element + { DERIVATIVE_ENGINE_ERROR_vector_not_yet_implemented } + { pop EvalVariable } + ifelse } + ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% first last parpos Expr[first:parpos-1] -> +/EvalVariable { 2 index Variable eq { (1) } { (0) } ifelse 4 -1 roll exch 6 2 roll } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% (f(u))'=u'f'(u) +/EvalFunc { + 4 2 roll 4 index (1) ne + { AddOpPar 4 index StrConcat (\)*) StrConcat } if + (Eval ) 4 8 index StrConcat 0 exch getinterval cvn cvx exec + 2 copy pop 0 6 2 roll GetIntervalNewStr + mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Func derivative -> Eval<func> +/EvalFunc_sin {% + PreCommonFunc + { (cos\() StrConcat 5 index StrConcat AddClPar } if + PostCommonFunc } def +/EvalFunc_cos {% + PreCommonFunc + { (\(-sin\() StrConcat 5 index StrConcat (\)\)) StrConcat } if + PostCommonFunc } def +/EvalFunc_tan {% + PreCommonFunc + { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/cos\() StrConcat 5 index StrConcat (\)^2) StrConcat } if + PostCommonFunc } def +/EvalFunc_asin {% + PreCommonFunc + { (1/sqrt\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if + PostCommonFunc } def +/EvalFunc_acos {% + PreCommonFunc + { (-1/sqrt\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if + PostCommonFunc } def +/EvalFunc_atg {% + PreCommonFunc + { (1/\(1+\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if + PostCommonFunc } def +/EvalFunc_ln {% + PreCommonFunc + { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/\() StrConcat 5 index StrConcat AddClPar } if + PostCommonFunc } def +/EvalFunc_exp {% + PreCommonFunc + { (exp\() StrConcat 5 index StrConcat AddClPar } if + PostCommonFunc } def +/EvalFunc_EXP {% + PreCommonFunc + { (EXP\() StrConcat 5 index StrConcat AddClPar } if + PostCommonFunc } def +/EvalFunc_sqrt {% + PreCommonFunc + { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/\(2*sqrt\() StrConcat 5 index StrConcat (\)\)) StrConcat } if + PostCommonFunc } def +/EvalFunc_Fact {% + PreCommonFunc { DERIVATIVE_ENGINE_ERROR_no_variable_expression_in_Fact } if + PostCommonFunc } def +/EvalFunc_sh {% + PreCommonFunc + { (ch\() StrConcat 5 index StrConcat AddClPar } if + PostCommonFunc } def +/EvalFunc_ch {% + PreCommonFunc + { (sh\() StrConcat 5 index StrConcat AddClPar } if + PostCommonFunc } def +/EvalFunc_th {% + PreCommonFunc + { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/ch\() StrConcat 5 index StrConcat (\)^2) StrConcat } if + PostCommonFunc } def +/EvalFunc_Argsh {% + PreCommonFunc + { (1/sqrt\(1+\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if + PostCommonFunc } def +/EvalFunc_Argch {% + PreCommonFunc + { (1/sqrt\(\() StrConcat 5 index StrConcat (\)^2-1\)\)) StrConcat } if + PostCommonFunc } def +/EvalFunc_Argth {% + PreCommonFunc + { (1/\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if + PostCommonFunc } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +/PreCommonFunc { + 1 add NextNonBlankChar pop 3 -1 roll 5 1 roll AnalyzeExpr 1 add NextNonBlankChar pop + 4 2 roll 4 index (0) eq + { (0) StrConcat false } + { 4 index (1) ne { AddOpPar 4 index StrConcat (\)*) StrConcat } if true } ifelse +} def +/PostCommonFunc { + 2 copy pop 0 6 2 roll GetIntervalNewStr + mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +/EvalFunc_Derive {% + 1 add ReadNumber cvi 1 add dup cvr log 1 add cvi string cvs + 4 -1 roll pop 5 1 roll 1 add NextNonBlankChar pop AnalyzeExpr 1 add + 4 -2 roll (Derive\() StrConcat 7 -1 roll StrConcat (,) StrConcat 6 -1 roll StrConcat AddClPar + 2 copy pop 0 6 2 roll GetIntervalNewStr 6 -1 roll pop 2 index 6 index dup 4 index exch sub getinterval + exch 6 2 roll } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% literal switch -> func call, vector, variables +/EvalFunc_Sum {% + 1 add NextNonBlankChar pop + %% read the variable name + ReadLiteral pop 3 -1 roll pop NextNonBlankChar + 44 ne { ANALYZER_ERROR_missing_first_comma_in_Sum } if + %% read the initial value + 1 add NextNonBlankChar pop ReadNumber pop + 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if + %% read the increment value + 1 add NextNonBlankChar pop ReadNumber pop + 2 copy get 44 ne { ANALYZER_ERROR_missing_third_comma_in_Sum } if + %% read the limit value + 1 add NextNonBlankChar pop ReadNumber pop + 2 copy get 44 ne { ANALYZER_ERROR_missing_fourth_comma_in_Sum } if + 1 add NextNonBlankChar pop dup 6 1 roll 3 -1 roll pop AnalyzeExpr 1 add NextNonBlankChar pop + 4 -2 roll 3 index 8 index dup 9 index exch sub getinterval StrConcat + 4 index StrConcat AddClPar + 2 copy pop 0 6 2 roll GetIntervalNewStr + mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% literal switch -> func call, vector, variables +/EvalFunc_IfTE {% + 3 -1 roll pop 1 add NextNonBlankChar pop SkipCond + NextNonBlankChar + 44 ne { ANALYZER_ERROR_missing_first_comma_in_IfTE } if + 1 add NextNonBlankChar pop dup 5 1 roll + AnalyzeExpr NextNonBlankChar + 44 ne { ANALYZER_ERROR_missing_second_comma_in_IfTE } if + 1 add NextNonBlankChar pop + AnalyzeExpr 1 add NextNonBlankChar pop + 4 -2 roll 3 index 10 index dup 11 index exch sub getinterval StrConcat + 6 index StrConcat (,) StrConcat 4 index StrConcat AddClPar + 2 copy pop 0 6 2 roll GetIntervalNewStr + mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% advance in str until a comma is found (no error detection!) +%% str index -> str index' +/SkipCond { { 1 add 2 copy get 44 eq {exit } if } loop } bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Convert to radians if trigo function call +%% (name) -> +/TrigoFunc { + dup (cos) eq 1 index (sin) eq or exch (tan) eq or + { /ExpressionVector ExpressionVector aload length Pi /div cvx 180 /mul cvx 5 -1 roll 4 add + array astore def + } if +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% No derivative for condition.... +/EvalCondOp { 3 -1 roll pop } bind def +/PutIntervalOneAdd {putinterval 1 add} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add open parenthesis in string at the given index +%% str index -> str index+1 +/AddOpPar {2 copy (\() PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add close parenthesis in string at the given index +%% str index -> str index+1 +/AddClPar {2 copy (\)) PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add 0 in string at the given index +%% str index -> str index+1 +/AddZero {2 copy (0) PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add open parenthesis in string at the given index +%% str index -> str index+1 +/AddMul {2 copy (*) PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add open parenthesis in string at the given index +%% str index -> str index+1 +/AddDiv {2 copy (/) PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add a plus sign in string at the given index +%% str index -> str index+1 +/AddAdd {2 copy (+) PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add a minus sign in string at the given index +%% str index -> str index+1 +/AddSub {2 copy (-) PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Add a pipe sign in string at the given index +%% str index -> str index+1 +/AddPipe {2 copy (|) PutIntervalOneAdd} bind def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% H O O K S +/AnalyzePreHook { dup 5 1 roll } bind def +/PreEvalHook {} def +/AnalyzePostHook { 7 -1 roll pop } bind def +/AnalyzeListOfEPostHook { 6 -1 roll mark 6 1 roll cleartomark } bind def +/RollOp { 5 1 roll } bind def +end%%%tx@CoreAnalyzerDict +/tx@AddMathFunc 12 dict def tx@AddMathFunc begin +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% NEW FUNC +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% function arcsine in radians asin(x)=atan(x/sqrt(1-x^2)) +%% x -> theta +/asin {% + dup abs 1 gt { EQDFasinrangeerror } if + dup dup dup mul 1 exch sub sqrt atan exch 0 lt { 360 sub } if DegtoRad +} def +%% function arccosine in radians acos(x)=atan(sqrt(1-x^2)/x) +%% x -> theta +/acos {% + dup abs 1 gt { EQDFacosrangeerror } if + dup dup mul 1 exch sub sqrt exch atan DegtoRad +} def +%% function arctangent in radians +%% x -> theta +/atg { 1 atan dup 90 gt { 360 sub } if DegtoRad } bind def +%% HYPERBOLIC FUNCTIONS +/sh { dup Ex exch neg Ex sub 2 div } def +/ch { dup Ex exch neg Ex add 2 div } def +/th { dup sh exch ch div } def +/Argsh { dup dup mul 1 add sqrt add ln } def +/Argch { dup dup mul 1 sub sqrt add ln } def +/Argth { dup 1 add exch 1 exch sub div ln 2 div } def +%% modified exponential funtion for 0 +%% x n -> x^n +/Exp { dup 0 eq { pop pop 1 } { exp } ifelse } bind def +%% modified exponential funtion for 0 +%% x -> e^x +/Ex { Euler exch exp } bind def +%% +%% factorial function +%% n -> n! +/Fact { 1 exch 2 exch 1 exch { mul } for } bind def +/fact { Fact } bind def +/! { Fact } bind def +end +% +% END pst-algparser.pro + +%%EndProcSet +%%BeginProcSet: pst-tools.pro 0 0 +% $Id: pst-tools.pro 622 2012-01-01 15:36:14Z herbert $ +% +%% PostScript tools prologue for pstricks.tex. +%% Version 0.02, 2012/01/01 +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +% +% +/Pi2 1.57079632679489661925640 def +/factorial { % n on stack, returns n! + dup 0 eq { 1 }{ + dup 1 gt { dup 1 sub factorial mul } if } + ifelse } def +% +/MoverN { % m n on stack, returns the binomial coefficient m over n + 2 dict begin + /n exch def /m exch def + n 0 eq { 1 }{ + m n eq { 1 }{ + m factorial n factorial m n sub factorial mul div } ifelse } ifelse + end +} def +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% subroutines for complex numbers, given as an array [a b] +% which is a+bi = Real+i Imag +% +/cxadd { % [a1 b1] [a2 b2] = [a1+a2 b1+b2] + dup 0 get % [a1 b1] [a2 b2] a2 + 3 -1 roll % [a2 b2] a2 [a1 b1] + dup 0 get % [a2 b2] a2 [a1 b1] a1 + 3 -1 roll % [a2 b2] [a1 b1] a1 a2 + add % [a2 b2] [a1 b1] a1+a2 + 3 1 roll % a1+a2 [a2 b2] [a1 b1] + 1 get % a1+a2 [a2 b2] b1 + exch 1 get % a1+a2 b1 b2 + add 2 array astore +} def +% +/cxneg { % [a b] + dup 1 get % [a b] b + exch 0 get % b a + neg exch neg % -a -b + 2 array astore +} def +% +/cxsub { cxneg cxadd } def % same as negative addition +% +% [a1 b1][a2 b2] = [a1a2-b1b2 a1b2+b1a2] = [a3 b3] +/cxmul { % [a1 b1] [a2 b2] + dup 0 get % [a1 b1] [a2 b2] a2 + exch 1 get % [a1 b1] a2 b2 + 3 -1 roll % a2 b2 [a1 b1] + dup 0 get % a2 b2 [a1 b1] a1 + exch 1 get % a2 b2 a1 b1 + dup % a2 b2 a1 b1 b1 + 5 -1 roll dup % b2 a1 b1 b1 a2 a2 + 3 1 roll mul % b2 a1 b1 a2 b1a2 + 5 -2 roll dup % b1 a2 b1a2 b2 a1 a1 + 3 -1 roll dup % b1 a2 b1a2 a1 a1 b2 b2 + 3 1 roll mul % b1 a2 b1a2 a1 b2 a1b2 + 4 -1 roll add % b1 a2 a1 b2 b3 + 4 2 roll mul % b1 b2 b3 a1a2 + 4 2 roll mul sub % b3 a3 + exch 2 array astore +} def +% +% [a b]^2 = [a^2-b^2 2ab] = [a2 b2] +/cxsqr { % [a b] square root + dup 0 get exch 1 get % a b + dup dup mul % a b b^2 + 3 -1 roll % b b^2 a + dup dup mul % b b^2 a a^2 + 3 -1 roll sub % b a a2 + 3 1 roll mul 2 mul % a2 b2 + 2 array astore +} def +% +/cxsqrt { % [a b] +% dup cxnorm sqrt /r exch def +% cxarg 2 div RadtoDeg dup cos r mul exch sin r mul cxmake2 + cxlog % log[a b] + 2 cxrdiv % log[a b]/2 + aload pop exch % b a + 2.781 exch exp % b exp(a) + exch cxconv exch % [Re +iIm] exp(a) + cxrmul % +} def +% +/cxarg { % [a b] + aload pop % a b + exch atan % arctan b/a + DegtoRad % arg(z)=atan(b/a) +} def +% +% log[a b] = [a^2-b^2 2ab] = [a2 b2] +/cxlog { % [a b] + dup % [a b][a b] + cxnorm % [a b] |z| + log % [a b] log|z| + exch % log|z|[a b] + cxarg % log|z| Theta + cxmake2 % [log|z| Theta] +} def +% +% square of magnitude of complex number +/cxnorm2 { % [a b] + dup 0 get exch 1 get % a b + dup mul % a b^2 + exch dup mul add % a^2+b^2 +} def +% +/cxnorm { % [a b] + cxnorm2 sqrt +} def +% +/cxconj { % conjugent complex + dup 0 get exch 1 get % a b + neg 2 array astore % [a -b] +} def +% +/cxre { 0 get } def % real value +/cxim { 1 get } def % imag value +% +% 1/[a b] = ([a -b]/(a^2+b^2) +/cxrecip { % [a b] + dup cxnorm2 exch % n2 [a b] + dup 0 get exch 1 get % n2 a b + 3 -1 roll % a b n2 + dup % a b n2 n2 + 4 -1 roll exch div % b n2 a/n2 + 3 1 roll div % a/n2 b/n2 + neg 2 array astore +} def +% +/cxmake1 { 0 2 array astore } def % make a complex number, real given +/cxmake2 { 2 array astore } def % dito, both given +% +/cxdiv { cxrecip cxmul } def +% +% multiplikation by a real number +/cxrmul { % [a b] r + exch aload pop % r a b + 3 -1 roll dup % a b r r + 3 1 roll mul % a r b*r + 3 1 roll mul % b*r a*r + exch 2 array astore % [a*r b*r] +} def +% +% division by a real number +/cxrdiv { % [a b] r + 1 exch div % [a b] 1/r + cxrmul +} def +% +% exp(i theta) = cos(theta)+i sin(theta) polar<->cartesian +/cxconv { % theta + RadtoDeg dup sin exch cos cxmake2 +} def + +%%%%% ### bubblesort ### +%% syntax : array bubblesort --> array2 trie par ordre croissant +%% code de Bill Casselman +%% http://www.math.ubc.ca/people/faculty/cass/graphics/text/www/ +/bubblesort { % on stack must be an array [ ... ] +4 dict begin + /a exch def + /n a length 1 sub def + n 0 gt { + % at this point only the n+1 items in the bottom of a remain to + % the sorted largest item in that blocks is to be moved up into + % position n + n { + 0 1 n 1 sub { + /i exch def + a i get a i 1 add get gt { + % if a[i] > a[i+1] swap a[i] and a[i+1] + a i 1 add + a i get + a i a i 1 add get + % set new a[i] = old a[i+1] + put + % set new a[i+1] = old a[i] + put + } if + } for + /n n 1 sub def + } repeat + } if + a % return the sorted array +end +} def +% +/concatstringarray{ % [(a) (b) ... (z)] --> (ab...z) 20100422 + 0 1 index { length add } forall + string + 0 3 2 roll + { 3 copy putinterval length add }forall + pop +} bind def +% +/dot2comma {% on stack a string (...) + 2 dict begin + /Output exch def + 0 1 Output length 1 sub { + /Index exch def + Output Index get 46 eq { Output Index 44 put } if + } for + Output + end +} def +% +%-----------------------------------------------------------------------------% +% END pst-tools.pro + +%%EndProcSet +%%BeginProcSet: pst-dots.pro 0 0 +% $Id: pst-dots.pro 130 2009-08-27 08:55:03Z herbert $ +% +%% PostScript prologue for pstricks.tex. +%% Version 2.02, 2009/06/16 +%% +%% For distribution, see pstricks.tex. +%% +%% Timothy Van Zandt <tvz@Princeton.EDU> +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +%% +%% Modified by Etienne Riga - Dec. 16, 1999 +%% Modified by Etienne Riga - 2005/01/01 (er) +%% to add /Diamond, /SolidDiamond and /BoldDiamond +%% Modified by Herbert Voss (hv) - 2008/04/17 +% +10 dict dup begin % hold local + /FontType 3 def + /FontMatrix [.001 0 0 .001 0 0] def +% /FontBBox [-571.5 -742.5 571.5 742.5] def % changed to next line 20060616 hv + /FontBBox [-1000 -1000 1000 1000] def % See end of file in /BuildGlyph + /Encoding 256 array def + 0 1 255 {Encoding exch /.notdef put} for % fill the array with /.notdef + Encoding % replace with given dot names + dup (b) 0 get /Bullet put % get the numerical position of b in ASCII +% % and save /Bullet at this place in Encoding + dup (c) 0 get /Circle put + dup (C) 0 get /BoldCircle put % 67 + dup (u) 0 get /SolidTriangle put + dup (t) 0 get /Triangle put + dup (T) 0 get /BoldTriangle put + dup (r) 0 get /SolidSquare put + dup (s) 0 get /Square put + dup (S) 0 get /BoldSquare put + dup (q) 0 get /SolidPentagon put + dup (p) 0 get /Pentagon put + dup (P) 0 get /BoldPentagon put +%%% + dup (k) 0 get /Asterisk put + dup (K) 0 get /BoldAsterisk put + dup (J) 0 get /SolidAsterisk put + dup (h) 0 get /Hexagon put + dup (H) 0 get /BoldHexagon put + dup (G) 0 get /SolidHexagon put + dup (f) 0 get /Octogon put % 2008-04-18 hv + dup (F) 0 get /BoldOctogon put % 2008-04-18 hv + dup (g) 0 get /SolidOctogon put % 2008-04-18 hv + dup (a) 0 get /Add put + dup (A) 0 get /BoldAdd put % 65 + dup (x) 0 get /Mul put + dup (X) 0 get /BoldMul put + dup (m) 0 get /Oplus put + dup (M) 0 get /BOplus put + dup (e) 0 get /SolidOplus put + dup (n) 0 get /Otimes put + dup (N) 0 get /BOtimes put + dup (E) 0 get /SolidOtimes put + dup (i) 0 get /Bar put + dup (I) 0 get /BoldBar put + dup (l) 0 get /SolidDiamond put + dup (d) 0 get /Diamond put + (D) 0 get /BoldDiamond put +%%% +/CharProcs 47 dict def +CharProcs begin + /CirclePath {0 0 500 0 360 arc closepath} def + /Bullet {CirclePath fill} def + /Circle {CirclePath .9 .9 scale CirclePath eofill} def + /BoldCircle {CirclePath .8 .8 scale CirclePath eofill} def + /TrianglePath {0 660 moveto -571.5 -330 lineto 571.5 -330 lineto closepath} def + /SolidTriangle {TrianglePath fill} def + /Triangle {TrianglePath .85 .85 scale TrianglePath eofill} def + /BoldTriangle {TrianglePath .7 .7 scale TrianglePath eofill} def + /SquarePath {-450 450 moveto 450 450 lineto 450 -450 lineto -450 -450 lineto closepath} def + /SolidSquare {SquarePath fill} def + /Square {SquarePath .89 .89 scale SquarePath eofill} def + /BoldSquare {SquarePath .78 .78 scale SquarePath eofill} def + /PentagonPath { + -337.8 -465 moveto 337.8 -465 lineto 546.6 177.6 lineto + 0 574.7 lineto -546.6 177.6 lineto closepath + } def + /SolidPentagon {PentagonPath fill} def + /Pentagon {PentagonPath .89 .89 scale PentagonPath eofill} def + /BoldPentagon {PentagonPath .78 .78 scale PentagonPath eofill} def +%-------------- hv begin 2004/07/25 from: er 2003/03/24 + /HexagonPath { + 0 550 moveto -476 275 lineto -476 -275 lineto + 0 -550 lineto 476 -275 lineto 476 275 lineto closepath + } def + /SolidHexagon {HexagonPath fill} def + /Hexagon {HexagonPath .89 .89 scale HexagonPath eofill} def + /BoldHexagon {HexagonPath .79 .79 scale HexagonPath eofill} def +% 2008-04-18 hv + /OctogonPath { + 550 dup 22.5 tan mul dup neg dup add /xMove exch def + exch moveto 7 { xMove 0 rlineto 45 rotate } repeat closepath } def + /SolidOctogon { OctogonPath fill } def + /Octogon { OctogonPath .89 .89 scale OctogonPath eofill } def + /BoldOctogon { OctogonPath .79 .79 scale OctogonPath eofill } def +% + /AsteriskPath { + 20 0 moveto 10 250 180 500 0 500 curveto + -180 500 -10 250 -20 0 curveto closepath + } def + /Asterisk { + AsteriskPath 60 rotate AsteriskPath 60 rotate AsteriskPath + 60 rotate AsteriskPath 60 rotate AsteriskPath 60 rotate AsteriskPath fill + } def +% + /Basterp {50 250 220 500 0 500 curveto -220 500 -50 250 -50 30 cos 100 mul curveto} def + /BoldAsteriskPath { + 50 30 cos 100 mul moveto Basterp + 60 rotate Basterp 60 rotate Basterp + 60 rotate Basterp 60 rotate Basterp + 60 rotate Basterp closepath + } def + /BoldAsterisk {BoldAsteriskPath fill} def + /SolidAsterisk {CirclePath .9 .9 scale BoldAsteriskPath eofill} def + /CrossPath { + 40 550 moveto -40 550 lineto -40 40 lineto -550 40 lineto + -550 -40 lineto -40 -40 lineto -40 -550 lineto 40 -550 lineto + 40 -40 lineto 550 -40 lineto 550 40 lineto 40 40 lineto closepath + } def + /BoldCrossPath {80 550 moveto -80 550 lineto -80 80 lineto -550 80 lineto + -550 -80 lineto -80 -80 lineto -80 -550 lineto 80 -550 lineto + 80 -80 lineto 550 -80 lineto 550 80 lineto 80 80 lineto closepath + } def + /Add {CrossPath fill} def + /Mul {45 rotate CrossPath fill} def + /BoldAdd {BoldCrossPath fill} def + /BoldMul {45 rotate BoldCrossPath fill} def + /Oplus {CirclePath .9 .9 scale CirclePath eofill .775 .775 scale CrossPath fill } def + /SolidOplus {CirclePath .775 .775 scale BoldCrossPath eofill} def + /BOplus {CirclePath .8 .8 scale CirclePath eofill .775 .775 scale BoldCrossPath fill} def + /Otimes {CirclePath .9 .9 scale CirclePath eofill 45 rotate .775 .775 scale CrossPath fill} def + /BOtimes {CirclePath .8 .8 scale CirclePath eofill 45 rotate .775 .775 scale BoldCrossPath fill } def + /SolidOtimes {CirclePath 45 rotate .775 .775 scale BoldCrossPath eofill} def + /BarPath {40 660 moveto -40 660 lineto -40 -660 lineto 40 -660 lineto closepath} def + /Bar {BarPath fill} def + /BoldBarPath {80 660 moveto -80 660 lineto -80 -660 lineto 80 -660 lineto closepath} def + /BoldBar {BoldBarPath fill} def + /DiamondPath {0 742.5 moveto -428.5 0 lineto 0 -742.5 lineto 428.5 0 lineto closepath} def + /SolidDiamond {DiamondPath fill} def + /Diamond {DiamondPath .865 .865 scale DiamondPath eofill} def + /BoldDiamond {DiamondPath .73 .73 scale DiamondPath eofill} def +%%% + /.notdef { } def +end +% +/BuildGlyph { + exch + begin +% Metrics 1 index get exec 0 + 0 0 +% BBoxes 3 index get exec + -1000 -1000 1000 1000 +% -571.5 -742.5 571.5 742.5 + setcachedevice + CharProcs begin load exec end + end +} def +% +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +} bind def +% +end +/PSTricksDotFont exch definefont pop +% +%% end + +%%EndProcSet +%%BeginProcSet: pst-node.pro 0 0 +% $Id: pst-node.pro 645 2012-02-12 09:09:51Z herbert $ +%% +%% PostScript prologue for pst-node.tex. +%% Version 1.13, 2011/11/21. +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +% +/tx@NodeDict 400 dict def tx@NodeDict begin +tx@Dict begin % from main pstricks dict + /T /translate load def + /CP /currentpoint load def +end +/NewNode { % on stack: { x y } boolean N@name type InitXnode + gsave + NodeScale % a bugfix for xelatex, it's empty for dvips + /next exch def % { x y } boolean N@name type + dict dup % { x y } boolean N@name dict dict + 3 1 roll def % { x y } boolean dict N@name dict def + exch { dup 3 1 roll def } if % { x y } dict boolean + begin % { x y } dict begin + tx@Dict begin + STV CP T exec % set scaling + end + /NodeMtrx CM def % save CM + next % InitXNode + end + grestore +} def +% +/InitPnode { + /Y ED /X ED + /NodePos { NodeSep Cos mul NodeSep Sin mul } def +} def +% +/InitCnode { + /r ED /Y ED /X ED + /NodePos { NodeSep r add dup Cos mul exch Sin mul } def +} def +% +/GetRnodePos { + Cos 0 gt { /dx r NodeSep add def } { /dx l NodeSep sub def } ifelse + Sin 0 gt { /dy u NodeSep add def } { /dy d NodeSep sub def } ifelse + dx Sin mul abs dy + Cos mul abs gt { dy Cos mul Sin div dy } { dx dup Sin mul Cos Div } ifelse +} def +% +/InitRnode { + /Y ED /X ED X sub /r ED /l X neg def Y add neg /d ED Y sub /u ED + /NodePos { GetRnodePos } def +} def +% +/DiaNodePos { + w h mul w Sin mul abs h Cos mul abs add Div NodeSep add dup + Cos mul exch Sin mul +} def +% +/TriNodePos { + Sin s lt + { d NodeSep sub dup Cos mul Sin Div exch } + { w h mul w Sin mul h Cos abs mul add Div + NodeSep add dup Cos mul exch Sin mul + } ifelse +} def +% +/InitTriNode { + sub 2 div exch + 2 div exch + 2 copy T + 2 copy 4 index index /d ED + pop pop pop pop + -90 mul rotate + /NodeMtrx CM def + /X 0 def /Y 0 def + d sub abs neg /d ED + d add /h ED + 2 div h mul h d sub Div /w ED + /s d w Atan sin def + /NodePos { TriNodePos } def +} def +% +/OvalNodePos { + /ww w NodeSep add def + /hh h NodeSep add def + Sin ww mul Cos hh mul Atan dup cos ww mul exch sin hh mul +} def +% +/GetCenter { begin X Y NodeMtrx transform CM itransform end } def +% +/XYPos { + dup sin exch cos Do + /Cos ED /Sin ED /Dist ED + Cos 0 gt + { Dist Dist Sin mul Cos div } + { Cos 0 lt + { Dist neg Dist Sin mul Cos div neg } + { 0 Dist Sin mul } ifelse + } ifelse + Do +} def +% +/GetEdge { + dup 0 eq + { pop begin 1 0 NodeMtrx dtransform + CM idtransform + exch atan sub + dup + sin /Sin ED + cos /Cos ED + /NodeSep ED + NodePos NodeMtrx dtransform CM idtransform end } + { 1 eq {{exch}} {{}} ifelse /Do ED pop XYPos } ifelse +} def +% +/AddOffset { + 1 index 0 eq + { pop pop } + { 2 copy 5 2 roll cos mul add 4 1 roll sin mul sub exch } ifelse +} def +% +/GetEdgeA { + NodeSepA AngleA NodeA NodeSepTypeA GetEdge + OffsetA AngleA AddOffset + yA add /yA1 ED + xA add /xA1 ED +} def +% +/GetEdgeB { + NodeSepB AngleB NodeB NodeSepTypeB GetEdge + OffsetB AngleB AddOffset + yB add /yB1 ED + xB add /xB1 ED +} def +% +/GetArmA { + ArmTypeA 0 eq + { /xA2 ArmA AngleA cos mul xA1 add def + /yA2 ArmA AngleA sin mul yA1 add def } + { ArmTypeA 1 eq {{exch}} {{}} ifelse + /Do ED + ArmA AngleA XYPos OffsetA AngleA AddOffset + yA add /yA2 ED + xA add /xA2 ED } ifelse +} def +% +/GetArmB { + ArmTypeB 0 eq + { /xB2 ArmB AngleB cos mul xB1 add def + /yB2 ArmB AngleB sin mul yB1 add def } + { ArmTypeB 1 eq {{exch}} {{}} ifelse + /Do ED + ArmB AngleB XYPos OffsetB AngleB AddOffset + yB add /yB2 ED + xB add /xB2 ED } ifelse +} def +% +/InitNC { + /b ED /a ED % second and first node + /NodeSepTypeB ED /NodeSepTypeA ED + /NodeSepB ED /NodeSepA ED + /OffsetB ED /OffsetA ED + tx@NodeDict a known tx@NodeDict b known and dup { + /NodeA a load def + /NodeB b load def + NodeA GetCenter /yA ED /xA ED + NodeB GetCenter /yB ED /xB ED } if +} def +% +/LPutLine { + 4 copy + 3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED + 1 t sub mul + 3 1 roll 1 t sub mul + 4 1 roll t mul add /Y ED + t mul add /X ED +} def +% +/LPutLines { + mark LPutVar counttomark 2 div 1 sub /n ED +% t floor dup n gt + t floor dup n ge % to allow npos<= hv 2008-08-14 + { pop n 1 sub /t 1 def } { dup t sub neg /t ED } ifelse + cvi 2 mul { pop } repeat + LPutLine + cleartomark +} def +% +/BezierMidpoint { + /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED /t ED + /cx x1 x0 sub 3 mul def + /cy y1 y0 sub 3 mul def + /bx x2 x1 sub 3 mul cx sub def + /by y2 y1 sub 3 mul cy sub def + /ax x3 x0 sub cx sub bx sub def + /ay y3 y0 sub cy sub by sub def + ax t 3 exp mul bx t t mul mul add + cx t mul add x0 add ay t 3 exp mul + by t t mul mul add cy t mul add + y0 add 3 ay t t mul mul mul 2 + by t mul mul add cy add 3 ax t t mul mul mul + 2 bx t mul mul add cx add atan /NAngle ED + /Y ED /X ED +} def +% +/HPosBegin { yB yA ge { /t 1 t sub def } if /Y yB yA sub t mul yA add def +} def +/HPosEnd { /X Y yyA sub yyB yyA sub Div xxB xxA sub mul xxA add def +/NAngle yyB yyA sub xxB xxA sub Atan def } def +/HPutLine { HPosBegin /yyA ED /xxA ED /yyB ED /xxB ED HPosEnd } def +/HPutLines { HPosBegin yB yA ge { /check { le } def } { /check { ge } def +} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { dup Y check { exit +} { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark HPosEnd +} def +/VPosBegin { xB xA lt { /t 1 t sub def } if /X xB xA sub t mul xA add def +} def +/VPosEnd { /Y X xxA sub xxB xxA sub Div yyB yyA sub mul yyA add def +/NAngle yyB yyA sub xxB xxA sub Atan def } def +/VPutLine { VPosBegin /yyA ED /xxA ED /yyB ED /xxB ED VPosEnd } def +/VPutLines { VPosBegin xB xA ge { /check { le } def } { /check { ge } def +} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { 1 index X check { +exit } { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark +VPosEnd } def +/HPutCurve { gsave newpath /SaveLPutVar /LPutVar load def LPutVar 8 -2 +roll moveto curveto flattenpath /LPutVar [ {} {} {} {} pathforall ] cvx +def grestore exec /LPutVar /SaveLPutVar load def } def +/NCCoor { /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def +GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 xA1 yA1 ] cvx def /LPutPos { +LPutVar LPutLine } def /HPutPos { LPutVar HPutLine } def /VPutPos { +LPutVar VPutLine } def LPutVar } def +% +/NCLine { + NCCoor + tx@Dict begin + ArrowA CP 4 2 roll + ArrowB + lineto pop pop + end +} def +% +/NCLines { + false NArray + n 0 eq + { NCLine } + { 2 copy yA sub exch xA sub Atan /AngleA ED + n 2 mul dup index exch index yB sub exch xB sub + Atan /AngleB ED + GetEdgeA GetEdgeB + /LPutVar [ xB1 yB1 n 2 mul 4 add 4 roll xA1 yA1 ] cvx def + mark LPutVar + tx@Dict begin false Line end + /LPutPos { LPutLines } def + /HPutPos { HPutLines } def + /VPutPos { VPutLines } def + } ifelse +} def +% +/NCCurve { + GetEdgeA + GetEdgeB + xA1 xB1 sub yA1 yB1 sub Pyth 2 div dup 3 -1 +roll mul /ArmA ED mul /ArmB ED /ArmTypeA 0 def /ArmTypeB 0 def GetArmA +GetArmB xA2 yA2 xA1 yA1 tx@Dict begin ArrowA end xB2 yB2 xB1 yB1 tx@Dict +begin ArrowB end curveto /LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ] +cvx def /LPutPos { t LPutVar BezierMidpoint } def /HPutPos { { HPutLines +} HPutCurve } def /VPutPos { { VPutLines } HPutCurve } def } def +% +/NCAngles { + GetEdgeA GetEdgeB GetArmA GetArmB + /mtrx AngleA matrix rotate def + xA2 yA2 mtrx transform pop + xB2 yB2 mtrx transform exch pop + mtrx itransform + /y0 ED /x0 ED + mark ArmB 0 ne { xB1 yB1 } if + xB2 yB2 x0 y0 xA2 yA2 + ArmA 0 ne { xA1 yA1 } if + tx@Dict begin false Line end + /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA2 yA2 xA1 yA1 ] cvx def + /LPutPos { LPutLines } def + /HPutPos { HPutLines } def + /VPutPos { VPutLines } def } def +% +/NCAngle { + GetEdgeA GetEdgeB GetArmB + /mtrx AngleA matrix rotate def + xB2 yB2 mtrx itransform pop xA1 yA1 mtrx itransform exch pop mtrx transform + /y0 ED /x0 ED + mark + ArmB 0 ne { xB1 yB1 } if + xB2 yB2 x0 y0 xA1 yA1 + tx@Dict begin false Line end + /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA1 yA1 ] cvx def + /LPutPos { LPutLines } def + /HPutPos { HPutLines } def + /VPutPos { VPutLines } def +} def +% +/NCBar { + GetEdgeA GetEdgeB GetArmA GetArmB + /mtrx AngleA matrix rotate def + xA2 yA2 mtrx itransform pop + xB2 yB2 mtrx itransform pop + sub dup 0 mtrx transform + 3 -1 roll 0 gt + { /yB2 exch yB2 add def /xB2 exch xB2 add def } + { /yA2 exch neg yA2 add def /xA2 exch neg xA2 add def } ifelse + mark + ArmB 0 ne { xB1 yB1 } if + xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if + tx@Dict begin false Line end + /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def + /LPutPos { LPutLines } def + /HPutPos { HPutLines } def + /VPutPos { VPutLines } def +} def +% +/NCDiag { + /lineAngle ED + GetEdgeA GetEdgeB GetArmA GetArmB mark + lineAngle abs 0 gt { + /xTemp xA2 10 add def + /yTemp yA2 lineAngle dup sin exch cos div 10 mul add def + /dY1 yTemp yA2 sub def + /dX1 xTemp xA2 sub def + /dY2 yB2 yB1 sub def + /dX2 xB2 xB1 sub def + dX1 abs 0.01 lt { + /m2 dY2 dX2 div def + /xB2 xA2 def + /yB2 xA2 xB1 sub m2 mul yB1 add def + }{ + dX2 abs 0.01 lt { + /m1 dY1 dX1 div def + /xB2 xB1 def + /yB2 xB1 xA2 sub m1 mul yA2 add def + }{% + /m1 dY1 dX1 div def + /m2 dY2 dX2 div def + /xB2 m1 xA2 mul m2 xB1 mul sub yA2 sub yB1 add m1 m2 sub div def + /yB2 xB2 xA2 sub m1 mul yA2 add def + } ifelse + } ifelse + } if + ArmB 0 ne { xB1 yB1 } if + xB2 yB2 xA2 yA2 + ArmA 0 ne { xA1 yA1 } if + tx@Dict begin false Line end + /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def + /LPutPos { LPutLines } def + /HPutPos { HPutLines } def + /VPutPos { VPutLines } def +% +% GetEdgeA GetEdgeB GetArmA GetArmB mark +% ArmB 0 ne { xB1 yB1 } if +% xB2 yB2 xA2 yA2 +% ArmA 0 ne { xA1 yA1 } if +% tx@Dict begin false Line end +% /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def +% /LPutPos { LPutLines } def +% /HPutPos { HPutLines } def +% /VPutPos { VPutLines } def +} def +% +/NCDiagg { + /lineAngle ED + GetEdgeA GetArmA + lineAngle abs 0 gt + { lineAngle } + { yB yA2 sub xB xA2 sub Atan 180 add } ifelse + /AngleB ED + GetEdgeB mark + lineAngle abs 0 gt { + /dY2 yA2 yA1 sub def + /dX2 xA2 xA1 sub def + lineAngle abs 90 eq { + /m2 dY2 dX2 div def + /yA2 xB xA2 sub m2 mul yA2 add def + /xA2 xB def + }{ + /m1 lineAngle dup sin exch cos div def % tan alpha + dX2 abs 0.01 lt { + /yA2 xA1 xB sub m1 mul yB add def + /xA2 xA1 def + }{% + /m2 dY2 dX2 div def + /xA2 m1 xB mul m2 xA2 mul sub yA2 add yB sub m1 m2 sub div def + /yA2 xA2 xB sub m1 mul yB add def + } ifelse + } ifelse + } if + xB1 yB1 xA2 yA2 + ArmA 0 ne { xA1 yA1 } if + tx@Dict begin false Line end + /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def + /LPutPos { LPutLines } def + /HPutPos { HPutLines } def + /VPutPos { VPutLines } def +% +% GetEdgeA GetArmA +% yB yA2 sub xB xA2 sub Atan 180 add /AngleB ED +% GetEdgeB +% mark +% xB1 yB1 xA2 yA2 +% ArmA 0 ne { xA1 yA1 } if +% tx@Dict begin false Line end +% /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def +% /LPutPos { LPutLines } def +% /HPutPos { HPutLines } def +% /VPutPos { VPutLines } def +} def +% +/NCLoop { + GetEdgeA GetEdgeB GetArmA GetArmB + /mtrx AngleA matrix rotate def + xA2 yA2 mtrx transform loopsize add /yA3 ED /xA3 ED + /xB3 xB2 yB2 mtrx transform pop def + xB3 yA3 mtrx itransform /yB3 ED /xB3 ED + xA3 yA3 mtrx itransform /yA3 ED /xA3 ED + mark ArmB 0 ne { xB1 yB1 } if + xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 ArmA 0 ne { xA1 yA1 } if + tx@Dict begin false Line end + /LPutVar [ xB1 yB1 xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 xA1 yA1 ] cvx def + /LPutPos { LPutLines } def + /HPutPos { HPutLines } def + /VPutPos { VPutLines } def +} def +% +% DG/SR modification begin - May 9, 1997 - Patch 1 +%/NCCircle { 0 0 NodesepA nodeA \tx@GetEdge pop xA sub 2 div dup 2 exp r +%r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add +%exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360 +%mul add dup 5 1 roll 90 sub \tx@PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED +% +/NCCircle { + NodeSepA 0 NodeA 0 GetEdge pop + 2 div dup 2 exp r r mul sub abs sqrt + atan 2 mul /a ED + r AngleA 90 add PtoC yA add exch xA add + exch 2 copy + /LPutVar [ 4 2 roll r AngleA ] cvx def + /LPutPos { + LPutVar t 360 mul add dup 5 1 roll 90 sub PtoC + 3 -1 roll add + /Y ED add /X ED /NAngle ED +% DG/SR modification end + } def + /HPutPos { LPutPos } def + /VPutPos { LPutPos } def + r AngleA 90 sub a add AngleA 270 add a sub + tx@Dict begin + /angleB ED /angleA ED /r ED + /c 57.2957 r Div def + /y ED /x ED +} def +% +/NCBox { + /d ED /h ED + /AngleB yB yA sub xB xA sub Atan def + /AngleA AngleB 180 add def + GetEdgeA GetEdgeB + /dx d AngleB sin mul def + /dy d AngleB cos mul neg def + /hx h AngleB sin mul neg def + /hy h AngleB cos mul def + /LPutVar [ + xA1 hx add yA1 hy add xB1 hx add yB1 hy add + xB1 dx add yB1 dy add xA1 dx add yA1 dy add ] cvx def + /LPutPos { LPutLines } def + /HPutPos { xB yB xA yA LPutLine } def + /VPutPos { HPutPos } def + mark + LPutVar tx@Dict begin false Polygon end +} def +% +/NCArcBox { + /l ED neg /d ED /h ED /a ED + /AngleA yB yA sub xB xA sub Atan def + /AngleB AngleA 180 add def + /tA AngleA a sub 90 add def + /tB tA a 2 mul add def + /r xB xA sub tA cos tB cos sub Div dup 0 eq { pop 1 } if def + /x0 xA r tA cos mul add def + /y0 yA r tA sin mul add def + /c 57.2958 r div def + /AngleA AngleA a sub 180 add def + /AngleB AngleB a add 180 add def + GetEdgeA GetEdgeB + /AngleA tA 180 add yA yA1 sub xA xA1 sub Pyth c mul sub def + /AngleB tB 180 add yB yB1 sub xB xB1 sub Pyth c mul add def + l 0 eq { + x0 y0 r h add AngleA AngleB arc x0 y0 r d add AngleB AngleA arcn + }{ + x0 y0 translate + /tA AngleA l c mul add def + /tB AngleB l c mul sub def + 0 0 r h add tA tB arc r h add + AngleB PtoC r d add + AngleB PtoC 2 copy + 6 2 roll l arcto 4 { pop } repeat + r d add tB PtoC l arcto 4 { pop } repeat + 0 0 r d add tB tA arcn r d add + AngleA PtoC r h add + AngleA PtoC 2 copy 6 2 roll + l arcto 4 { pop } repeat + r h add tA PtoC l arcto 4 { pop } repeat + } ifelse + closepath + /LPutVar [ x0 y0 r AngleA AngleB h d ] cvx def + /LPutPos { + LPutVar /d ED /h ED + /AngleB ED /AngleA ED + /r ED /y0 ED /x0 ED + t 1 le { + r h add AngleA 1 t sub mul AngleB t mul add dup 90 add /NAngle ED PtoC + }{t 2 lt { + /NAngle AngleB 180 add def r 2 t sub + h mul t 1 sub d mul add add AngleB PtoC + }{ + t 3 lt { + r d add AngleB 3 t sub mul AngleA 2 t sub + mul add dup 90 sub /NAngle ED PtoC + }{ + /NAngle AngleA 180 add def + r 4 t sub d mul t 3 sub h mul add add AngleA PtoC + } ifelse + } ifelse + } ifelse + y0 add /Y ED x0 add /X ED + } def + /HPutPos { LPutPos } def + /VPutPos { LPutPos } def +} def +% +/Tfan { /AngleA yB yA sub xB xA sub Atan def GetEdgeA w xA1 xB sub yA1 yB +sub Pyth Pyth w Div CLW 2 div mul 2 div dup AngleA sin mul yA1 add /yA1 +ED AngleA cos mul xA1 add /xA1 ED /LPutVar [ xA1 yA1 m { xB w add yB xB +w sub yB } { xB yB w sub xB yB w add } ifelse xA1 yA1 ] cvx def /LPutPos +{ LPutLines } def /VPutPos@ { LPutVar flag { 8 4 roll pop pop pop pop } +{ pop pop pop pop 4 2 roll } ifelse } def /VPutPos { VPutPos@ VPutLine } +def /HPutPos { VPutPos@ HPutLine } def mark LPutVar tx@Dict begin +/ArrowA { moveto } def /ArrowB { } def false Line closepath end } def +% +/LPutCoor { + NAngle + tx@Dict begin /NAngle ED end + gsave + CM STV + CP Y sub neg exch X sub neg exch moveto + setmatrix CP + grestore +} def +% +/LPut { + tx@NodeDict /LPutPos known + { LPutPos } { CP /Y ED /X ED /NAngle 0 def } ifelse + LPutCoor +} def +% +/HPutAdjust { + Sin Cos mul 0 eq + { 0 } + { d Cos mul Sin div flag not { neg } if + h Cos mul Sin div flag { neg } if + 2 copy gt { pop } { exch pop } ifelse + } ifelse + s add flag { r add neg }{ l add } ifelse + X add /X ED +} def +% +/VPutAdjust { + Sin Cos mul + 0 eq + { 0 } + { l Sin mul Cos div flag { neg } if + r Sin mul Cos div flag not { neg } if + 2 copy gt { pop } { exch pop } ifelse + } ifelse + s add flag { d add } { h add neg } ifelse + Y add /Y ED +} def +% +% +end +% +% END pst-node.pro + +%%EndProcSet +%%BeginProcSet: 8r.enc 0 0 +% File 8r.enc TeX Base 1 Encoding Revision 2.0 2002-10-30 +% +% @@psencodingfile@{ +% author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry, +% W. Schmidt, P. Lehman", +% version = "2.0", +% date = "27nov06", +% filename = "8r.enc", +% email = "tex-fonts@@tug.org", +% docstring = "This is the encoding vector for Type1 and TrueType +% fonts to be used with TeX. This file is part of the +% PSNFSS bundle, version 9" +% @} +% +% The idea is to have all the characters normally included in Type 1 fonts +% available for typesetting. This is effectively the characters in Adobe +% Standard encoding, ISO Latin 1, Windows ANSI including the euro symbol, +% MacRoman, and some extra characters from Lucida. +% +% Character code assignments were made as follows: +% +% (1) the Windows ANSI characters are almost all in their Windows ANSI +% positions, because some Windows users cannot easily reencode the +% fonts, and it makes no difference on other systems. The only Windows +% ANSI characters not available are those that make no sense for +% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen +% (173). quotesingle and grave are moved just because it's such an +% irritation not having them in TeX positions. +% +% (2) Remaining characters are assigned arbitrarily to the lower part +% of the range, avoiding 0, 10 and 13 in case we meet dumb software. +% +% (3) Y&Y Lucida Bright includes some extra text characters; in the +% hopes that other PostScript fonts, perhaps created for public +% consumption, will include them, they are included starting at 0x12. +% These are /dotlessj /ff /ffi /ffl. +% +% (4) hyphen appears twice for compatibility with both ASCII and Windows. +% +% (5) /Euro was assigned to 128, as in Windows ANSI +% +% (6) Missing characters from MacRoman encoding incorporated as follows: +% +% PostScript MacRoman TeXBase1 +% -------------- -------------- -------------- +% /notequal 173 0x16 +% /infinity 176 0x17 +% /lessequal 178 0x18 +% /greaterequal 179 0x19 +% /partialdiff 182 0x1A +% /summation 183 0x1B +% /product 184 0x1C +% /pi 185 0x1D +% /integral 186 0x81 +% /Omega 189 0x8D +% /radical 195 0x8E +% /approxequal 197 0x8F +% /Delta 198 0x9D +% /lozenge 215 0x9E +% +/TeXBase1Encoding [ +% 0x00 + /.notdef /dotaccent /fi /fl + /fraction /hungarumlaut /Lslash /lslash + /ogonek /ring /.notdef /breve + /minus /.notdef /Zcaron /zcaron +% 0x10 + /caron /dotlessi /dotlessj /ff + /ffi /ffl /notequal /infinity + /lessequal /greaterequal /partialdiff /summation + /product /pi /grave /quotesingle +% 0x20 + /space /exclam /quotedbl /numbersign + /dollar /percent /ampersand /quoteright + /parenleft /parenright /asterisk /plus + /comma /hyphen /period /slash +% 0x30 + /zero /one /two /three + /four /five /six /seven + /eight /nine /colon /semicolon + /less /equal /greater /question +% 0x40 + /at /A /B /C + /D /E /F /G + /H /I /J /K + /L /M /N /O +% 0x50 + /P /Q /R /S + /T /U /V /W + /X /Y /Z /bracketleft + /backslash /bracketright /asciicircum /underscore +% 0x60 + /quoteleft /a /b /c + /d /e /f /g + /h /i /j /k + /l /m /n /o +% 0x70 + /p /q /r /s + /t /u /v /w + /x /y /z /braceleft + /bar /braceright /asciitilde /.notdef +% 0x80 + /Euro /integral /quotesinglbase /florin + /quotedblbase /ellipsis /dagger /daggerdbl + /circumflex /perthousand /Scaron /guilsinglleft + /OE /Omega /radical /approxequal +% 0x90 + /.notdef /.notdef /.notdef /quotedblleft + /quotedblright /bullet /endash /emdash + /tilde /trademark /scaron /guilsinglright + /oe /Delta /lozenge /Ydieresis +% 0xA0 + /.notdef /exclamdown /cent /sterling + /currency /yen /brokenbar /section + /dieresis /copyright /ordfeminine /guillemotleft + /logicalnot /hyphen /registered /macron +% 0xB0 + /degree /plusminus /twosuperior /threesuperior + /acute /mu /paragraph /periodcentered + /cedilla /onesuperior /ordmasculine /guillemotright + /onequarter /onehalf /threequarters /questiondown +% 0xC0 + /Agrave /Aacute /Acircumflex /Atilde + /Adieresis /Aring /AE /Ccedilla + /Egrave /Eacute /Ecircumflex /Edieresis + /Igrave /Iacute /Icircumflex /Idieresis +% 0xD0 + /Eth /Ntilde /Ograve /Oacute + /Ocircumflex /Otilde /Odieresis /multiply + /Oslash /Ugrave /Uacute /Ucircumflex + /Udieresis /Yacute /Thorn /germandbls +% 0xE0 + /agrave /aacute /acircumflex /atilde + /adieresis /aring /ae /ccedilla + /egrave /eacute /ecircumflex /edieresis + /igrave /iacute /icircumflex /idieresis +% 0xF0 + /eth /ntilde /ograve /oacute + /ocircumflex /otilde /odieresis /divide + /oslash /ugrave /uacute /ucircumflex + /udieresis /yacute /thorn /ydieresis +] def + + +%%EndProcSet +%%BeginProcSet: texps.pro 0 0 +%! +TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 +index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll +exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 +ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ +pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get +div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type +/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end +definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup +sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll +mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ +exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} +forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def +end + +%%EndProcSet +%%BeginProcSet: special.pro 0 0 +%! +TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N +/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N +/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N +/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ +/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho +X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B +/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ +/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known +{userdict/md get type/dicttype eq{userdict begin md length 10 add md +maxlength ge{/md md dup length 20 add dict copy def}if end md begin +/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S +atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ +itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll +transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll +curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf +pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} +if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 +-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 +get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip +yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub +neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ +noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop +90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get +neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr +1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr +2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 +-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S +TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ +Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale +}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState +save N userdict maxlength dict begin/magscale true def normalscale +currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts +/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x +psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx +psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub +TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def +@MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll +newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto +closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N +/@beginspecial{SDict begin/SpecialSave save N gsave normalscale +currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N} +N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs +neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate +rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse +scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg +lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx +ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N +/setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{ +pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave +restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B +/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 +setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY +moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix +matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc +savematrix setmatrix}N end + +%%EndProcSet +%%BeginProcSet: color.pro 0 0 +%! +TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop +setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll +}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def +/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ +setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ +/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch +known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC +/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC +/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 +setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 +setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 +0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC +/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 +setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 +0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ +0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ +0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC +/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 +setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 +setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 +0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC +/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 +setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 +0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ +0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ +0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC +/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 +setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC +/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 +0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 +0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 +0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 +setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 +0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC +/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 +setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 +0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 +1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC +/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 +setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ +0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} +DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 +setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 +setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 +setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end + +%%EndProcSet +%%BeginFont: NimbusSanL-Regu +%!PS-AdobeFont-1.0: NimbusSanL-Regu 1.05a +%%Title: NimbusSanL-Regu +%%CreationDate: Thu Mar 20 10:08:51 2003 +%%Creator: Primoz Peterlin +%%DocumentSuppliedResources: font NimbusSanL-Regu +% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development +% Generated by PfaEdit 1.0 (http://pfaedit.sf.net/) +%%EndComments +FontDirectory/NimbusSanL-Regu known{/NimbusSanL-Regu findfont dup/UniqueID known{dup +/UniqueID get 5020902 eq exch/FontType get 1 eq and}{pop false}ifelse +{save true}{false}ifelse}{false}ifelse +11 dict begin +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def +/FontName /NimbusSanL-Regu def +/FontBBox [-174 -285 1001 953 ]readonly def +/UniqueID 5020902 def +/PaintType 0 def +/FontInfo 9 dict dup begin +/version (1.05a) readonly def +/Notice (Copyright \050URW\051++,Copyright 1999 by \050URW\051++ Design & Development) readonly def +/FullName (Nimbus Sans L Regular) readonly def +/FamilyName (Nimbus Sans L) readonly def +/Weight (Regular) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -151 def +/UnderlineThickness 50 def +end readonly def +/Encoding StandardEncoding def +currentdict end +currentfile eexec +D9D66F633B846AB284BCF8B0411B772DE5CE33C33655F6FF751F340A8D6C01E3 +2E02C24E186BA91B34A1F538959D4450CB683EAE5B034D030186901B458D3777 +6B3942BD2E07121385120248891AEC2EB33C4E3A0CF00828D0F130C31A918C18 +979FE94379C648EF21ABF659253E43CD1253866F157F1DF85AE7E8714F061B1E +ABA3AD094FE8D6293916FA82EE4F486C7E513A06D4C9BE44306A8287970B4ABF +B6D1F9274A5A0BB6ECF713ADBD1260D5D6C4420D357FD486470A74B2F0621B59 +A9373ABECDBF32FA68AABB66FAB0C970A3354A335D70DB2CC5A3208BB6D768E7 +B58CD9BC2B6B7E110693C5A88D680B7290DB121996E3B7C8AE3C23147280F8BF +D8C60B415552700FF0E44C2257B467ADD5D550F61EC34A76143393E0B34D55C0 +8B64B48E5F1FD16E16B967511AE15434B7F755BDF2574191E3C3DC528B69B5BA +7DDBBD3C7878FA69ADE75011A2C0F02F5707E86FA632D1269281D3C265B31F3B +F3145052467647AFE18B9D763FAEE4BA72CB9C385568EE5BBF5854C278F1E3CC +475C6234E83ED33345268BE52F0931B58F302EDA0D5751348E7B7E53D4882FB6 +9343BDAAE87E48F6E82024D8EC1FACBBA36582092CCD76553B0449A5090774EA +7242123C53B80F2E927B98DF2B36C403D1FA1E9F8439F3964DC9F89A0CAB5AE2 +C907309460F097AA87BD156575D6C73EDB2B40C015E67734397ED14395C43394 +7A0201C6B0F652B035FD7BB82ED236D0F7C20048AFD83A56925C7A2898B46270 +B440913E4714FD89697B3E59F5BDD5A2AACF6630257957ABE1A63502A3081B6E +307A534A9E238F986D4C866AFBAB7A0B1B5A6E99AA0A56DC1FD7E8A39CC45147 +259AC7033A0C58192CA82FB12E09F309F75690043646193AD92D2368F345771F +01CFD21236BA52F74E36CF4B94259CDBA2EF1D61AD93A2B942A9896B0819D20C +59E440851CB99E89C887FC62FD9E7F88F54E5BC157D81A5FBC70699820C51BC6 +27D7755B195C0BAD8225A6F3EAE0A5A674E8AF6B11BCC69DCF5FB89D8BE0E2E5 +FE7E2588F93F583E4E2F6ED5457E90B902B02F51D54B9F0BA54291E687F4A7A2 +08CA5FCE0C9F3B954247312EDA3C532D3DCDFDCB56FFE03B36DB7D549D4203C6 +7DA8772A2F732A15DE675D3212C28DC755E3D0156A777BF514112ABBE4372ACB +97D7834813E1850F90CEE543B4C09BE1E93742EA98B8CACC09FCC4D2595EECD4 +46C942EEA60211FA7DBC11CE869D55BF0C7EC6AA747EB2AE2CB3CC2DBEC936C9 +540CE2E08291323B36F6549CDB97BBF9F0DA429CA9C863B629410885540DA6C4 +9AAADB30C39051C993CB547BCD573D6448DC09BF7FF2D1B108ABEC2AAEE4060D +182ABDB3100AC627E5C883E8F42D90D699C8028D4123472F211C8FBB744D7E3D +C626ED03D8517D69E1ACD26BE4F83FAE31122294816736827D138E4F4CAB1681 +236C1654E01231EA7F08AD0E73BBE1BE19A7AD6DA63AE0C7F5A360A53BB35268 +CC90125C7545D9D59F5127F0AD964AA66DF020F639832FAF9C2CCA82C01120BA +6469960C350D3AF786666EC14158728E0BA2DD8A639C28E0A7EA8BBF608FD7DF +79C7B5DDEA05C8C3D6FC70177D1A9EA9AD056F0CE31AB535A22FF7EB3374807A +AA630030F4833B3733610842E52E2701462693C39189C7BAC7D7888CF1CA106E +570C1223A5763651EEF6D32811F076030FFF4160369637180C9898BA219179F9 +CFBC0375AA8CBD963108618C5DF6DAA0231FE1FC8F053390E2ED53A02AC552A2 +130FBBB4015D583E77591E3F95B91589521F9258497A663C1BD44883364A43F4 +004F42E4E32F2AD8BB9DAC4D110FF47A42D923C153F7A83BC1FFE67CD11FF1A0 +9086B2FF0BBA147BFF00785663883D258292F85977CF1700323489C7DFEB4B7A +F909F18A9D03092B60BCD025878AC44DB91F33D815AC9DC3F442979BFA0C776B +5F6027EA3FD56E6B640D8A374385274046CB7232023DFC1D7D4C4FAF55E151C3 +9FEF8B47E0025EBB8C18BE053CEE561076BF062F476691EDAA1A8B0E33B06E3D +F0CA28D9626A7DEEE92DF84CF5967A74F27B2378201CE997FFE0C8F20AA9E7FE +C21B4E9DC8D21EE48F9FC2C35D851EE98AD3863A0A6C40428A32B2464C87E51D +C00983F964BE9851244F76C015850233274256B42EC01BA2C8189D5556B71345 +AC51F801C9965C87B89B8C1DB7526B19F7F0C20B11FDB0F2C2A9B7B8DD2F0B8D +82752DF19FF85F3ABBCA8FA903A11C3DC43E4C2E379C5976ADA0586431588D2E +791152651C251B9EB5A26DEF9EFA45B44CC4377562BCFF8E6351E76E7DB866A2 +DB1B877D064467A00156D51C3EF8E085B2FD09344F3BF4A730E275AD19B4C843 +79284AE28059F269B6B1980DE8C189E8D4AAE2283D802BD33940F2301579118E +B3FE1F74698D6A2A4388877008041A3D43118ED30D3D9000A6AA1F71D6CC6FF0 +54657F8F56BE5DD221F4E05D8C864F9DD3E99FF860365B9C030A2182FA8F453B +B48A71F8C0078A809559DCD512143D7930DFA19796F33162E64169C043FFACE0 +D9A0827E85477A26F6FF812CE452F8BA4FE15BE07CF0A0BCCC8416817C800C17 +2BF0F2B6418DE6EA6A89CAF0517858C28A24FC4BB6CC825318CD72FBBF942797 +B520E7863060555EE34D0CFF21E2CBDE1D3BD3710A1EBBE6AFF31D39046A3498 +21ED5592A38CEF96C847C26CD1CACB9F09C9B3FDE7D42F07494E52C4BB7A8C1A +5B73CAF825FE6D23C672FD62737C3CE3729076C195FCE6854C1B7F8143F95121 +0E0C4BEEFA8FDFF217A5C564C26AF208A998D9EB904C01934466E3467C33500D +A5759D88CA1552371F182854DAA7B524280129AEDEB5F6A2C23B7B2943CE5928 +3054AA61D40A0CBEFB7D50D3367E37A26457974F9528D81E21C743D7912BA628 +ED2C5458AED855E5CF47D804E9A2F18556302CC69B58805E1951CBF236F05AE5 +48571F98C01BF41ACD72D8396DEAE2CA1995945D1ECD86A85FBAD4D93CF6DEE2 +85AFC8179AAC6830D19D19CB2F9731732285757CA11233A368C666168D45B8D2 +7B5956598CBA113C18825686F9ED9588F06261AF3E8D1343D4971863ECE4DDE1 +1AA3604E2022AFC909284A4D43B5CBDAC5361A8898FBD82502DB93C42AEB42D4 +3FFD27DF5BE4E6F286D27D731EE30D4871387A7476DAE2F97FD20A0D927FD311 +267BB33D43183649CEA500A10CA5AA4B92B0A965BEA31B1EC7035C2A626853C9 +0F5B8CECEC977F9C78F5BB09727EBC06D1830262FBD406E48C8107A98B612A4B +C3C2E8B2504E0CA6E7B65FE8DFBEDBE6F43F03DE472E51A17BE5E15126B33BF5 +AA4257DEB8FEA60D5D46F43FBD58B88F8C80CB0D5520FE93222659DB735F2A29 +3159AD84AF082B956F1452EDC54D8652DAAC725D06E4441F403A9D105E4738D2 +762173BE413C71765E586A1A44663813D94E02A669B9D1A16E9E60C07909D06D +055FA464D3C8B1E65889BD71890B36BD310D1A184C084913958D22575E85FE85 +929418AB684A92B4187DBA74B626F82379048B124D8CC7A4AFBB516DABB82503 +272023C7822BE402583DD54376DEDD8CB84534728EE8FE26808EA08264BA5B60 +C89EBDDDED2D74AE20D4B29604D021B8CB1F3AD649346C3079B29055B18C8579 +95ABABB9715C492F6893DFF6C5C708439E4EEAE16EED2627A072AAF76D3E3E23 +764E9A5DBE640CA98585DA2A4AF9DE5A50410174D9096CE251AB40E97F9CED60 +2D05F6835AA84E7E676183ABBE7DAEF97170046518FF27E67EEE2AAD88AE9526 +C39853101B9461F4C1862A4534F300477BA9712E3305DE9A02A8B5684BEF87D9 +D231C885FC00409D78D26D45BEE77B40CEE6E191449727385DBF1135429CC8E4 +162D346EEDC7260000BBF6A73BCE98B8C80115898F910F38FD25CE03F740C969 +FCD8FC608210AA84D69CE8C6203A71CB424C72AF75C1818F6A1AA2D6F0366171 +9C67527EB25CCD9328283C9F0A171A78199029B3C52A85E3A069D5265B78DF1E +8A68FD311B9135C70CD0214CF04A4EC5AD120D492F25CD6E18D36ED71F266282 +6D9A1865668783704E8026D233E830FA696DA3480C857B7E2F12318F34862A3C +E07B5DD50A9FC1F5DAE96E1A7A9C6023DE05228EC140AFB41C532DE5BF0DA704 +808D7B0878A09BF1DCA7218548DD629E4877DC526ACBDE6CC483A11B60938F09 +56B761B72719C1AD14481B2B5150C63198D61A3611651ED85BB69B7607279862 +E41917DA08F87D352652A3C3B996AEE312CB054E84BD3442D366CC01BEDD930B +212F7629286D48D6529E15ADC93E621833FC3E9046979CC6484CD39D18A81F73 +89979EF408D778E57338E1C0861E8C7BFA5F6CB780E69545567B2D7D0891B235 +3175C1F2DA4318DB4204677B4C30652DA10155F9CD902439E4C277543DBF8863 +B5913AC7450A9D8EF1AA36E0FEBD0355B1EB79A6754351E6D44DB13FEDFFC046 +586EB8FA93C30F0F6C56F65692AF6300EDDD7C6222E5E6C4C2F7FF76F2D3BD13 +5777FEB9EA676D3DA2CFF1FE837AFA5ACB690E4D0D37AC4364DA7A652950C137 +A81742E0862B9955F2907E896EC55DDED158758A566E6FBAB579FFFED4E986A0 +5368E6A963B3CBDE11FA38B2E505E056DA9F17C7F0E48D1A5785DC7B9054F72F +2B592F3AC64092E57A292406C77088C92872E8EE1D792693B636273D8190E935 +0F00387FC9A85AD02DB3814D80F5D9C8FAFD218337C59D0FAAE063DE3EF1D2DA +BC95F18B94B223705392AECB2D320E62E4963CD30B916B68585D86F89D8A0208 +30A9D2D9E60B8C5BD09BD3EDA8FB9688695880DE138049C72B35D3F0056591AF +DAC907F2CF78FD366BF903956AC15542F2FBF876937837974D5652CBD628B4B0 +9AE4668E35ABEEA8E3DFC2CB367DBEA16F792CE90B7B3D7C328B67483082AAA6 +992EEA386BAA6EA401123DBE1C5335B77FA45F075C493BDE26B484535C829D8E +BB0F205E94C6B10760D917A9872422E961402B8F0BB1D344A25A23FBAB18AED0 +84DC893D3B277DC959082D6B0AB756FFFEDF6893BD0D8EB23CE515ED95C6A27E +285A6E621D9D35D749B505B89BD943B9BE5DB98F34573B30DC09FDC8836754FE +CB55303C0F56D096F290FF27F728755AF273FD17CB441267056C7E44E9299CB9 +F18FA481409D4236F9C0457791CC98ACD13729963B6ADD2307E46DBCECB40278 +56C5D090116E732EB0402288BFA396FF13266915B2749BE131715021A9B52922 +CF041978B01E0DBF8437BEF05E41743098955DB5D3C4D8FAC40123EEE8EB2014 +95E43826616D6D09661E61E8C28C2A9BEAEDB47CD27530A7EB000A89CE791B94 +F6CD2C0445D4A7B52DE6F74DD4C7BBD126A14EBC7480A39847C948870B63C29D +B2F47EFFF9E44206162A2C1DEF1D82F9386D2206B8242946377F6BB6B7E1AE61 +9CB959B14DCB62457465D757C9E0A4E45CB5723C36C7B004D8DAB6129BD4CE26 +3A8EF8385BB22320DC841B57CCD2C0EF209C19D095C4B29A3CC8A709D989DC23 +92630A5665A0720927A45893CCF99820569196F4A64EDF0BE67A402F2872117C +F19E9A26CCEF248446E02763D4C3DCD7DC0DAF59C36EDD282FF13EB4D8A357B0 +9C54DD9282A1EB310DB9028FCA6E39F01AE0EA0ED503C3535B3E98A009FD0801 +CAB7F0413DBF5DC2815EBD716031898ECEF7B0B01E1BFFFD8303115F95591AF9 +12946BC48A3737A429CB6500C76020A52228BCDDC200F7C23547A4C25150BB42 +7F1BD4092FF9B42BEFA53BE3FD3B9C5750276E21F36115B756F8B9784E9865AE +A669F8339785EE3B0E7462D73FF2602148EAC2FC9C4CC1CBCF99D24F0A6875DE +6049B6CE3E6A1314D70796217FCC42BF739A36BDB9EA9F474726C10E26AF7610 +4B7F0FF8688BDD39725D13B1758E541A7CEBE11846693EA006D3F1B42E4D2CB3 +2B05FB6A16E9510C28EA927D0E229ECA81226564AB1FC6F43B3E79088E8F71AD +230744A368F01EB074FF801AF4726D23958B222DF2F09481AB79441AB82DFFD5 +52E7B9BC49589F776D5F7384D4B8E57BFA9CF9109159CF9C195C297DF32C79C6 +D7C50E74A30FED2E2F2396C1B85A89645802D3656244EC8B94A7C1DD1FDBC039 +B8F18EE9CC7BB07F3A4D8D05F49D140B74B18054C0DAC7C04ED564AF28EDD217 +23F74173D182F6AFE9FE68F59C4CDE8847059BF7EAA032E878F96D8C47832FC3 +014E096E7A10DABBABF4D98CCC56C3949FF999F78E51847C8956A6EA0D710A64 +CE6A13DA51425E430059B69E9CB87D68677D2E9C8E863BD6ABBA293BE8C91A17 +310B141ED7D2607877213B9C635298398E35E5209302AA02F81FE55F3C2D3880 +A49E552B8AADAB5376F8CA0B9D921BD9ACE077E8C4508990EBAA1596F9BDDB9F +980A82DD4C575AAB977CF26ED4EFB2CD00BA88B4AE713E73BA044F2B8DFEF36A +FFA14EF17C45AE1B0402D886E63B995487527D31760BEEEB447EB37A90A85C16 +0BB5E90A3CC82AB93F765606366123205DAD4AF54566AC3BE76C898C89C4E8FE +71C8F6AD7194D598226F6EA941CAD1BA66E33FB868227DCFE080A9DEC9715E25 +8A592011CC9FBD69CEE9162A030C220AC4FC2BDAA16966E02FE7C45A956828FA +71BA15AF1E1BFB18C94A524DE324A877E445849674DDF11FCBE8444131E4EB37 +3733FFA84F4FAF02D34AAD7114CE5FB47685A93537B04CD214C3825A8EC8071E +D13C3F5DA22C8DBFB3A109704EEF23C5F071A88FE018D4AC09006E063E8F0703 +D2BA9736587F17127E10C48ABA249E6AC0B89904AD0B52E23D44D997108EA249 +5ADE3DD6E9E161A94D2AF180127C7EC27983CAD060232436100AF1CFEB7BFA36 +6F96ADF4EA2C6830EF90E84E17B0752CB69DE39232F597F5A83AD05A6D8540C8 +CFD74B53563F7E8EDC653414FCD3E1B5A84D6DF03B3406874EEBC6B70AECFCE4 +FEE508946C97268629949DCAD15CE4ABDF4555310615D6D87948B0A991A5C9E7 +4ADCB0658870A790D10C7A2B78051E5E2E08D7722AF9C5E2BC17F5A603BE0A8E +FF72EFA7ECF54CA0ABC35D9F43D84818D2F3894483E8086C002255701FCA5E4C +4234FC3BCBCD05007118EA17328BB3CEE6F6D2E206DC631E158F65C8206660B9 +D7DDEDC049527ED6E1729F92E2DA1E72246F2B09E01BE4B7F185DAF6BA5DB534 +E8CE6FF775F8AEC554F4049D70C903DA051D51718AAF9D4325E087D0C53BB8D2 +5A0CEB606B959F28A26A782C07E218AA30DEB661C9D4FF69CA67C2D061FADE56 +FC58C23689D64FDC9554856D12B2057EEFFC512AF0843CB049CF719836384099 +DC1BC3E01C38829A62DF2CBA2F8D1EDE33B06E8C97D1248E21A53B4E2FCF7A18 +98DD9B02360035AD49D6E4A9FB766DF20DE91E5F299D1C5533A260BC72A9C11B +3D0818C1432F722EF5F2278479C878BC697EADCC199CCE2A09100847A7755A8E +42A86DEE7946F3B130A8AA77B28DD289A827447BCEBC71F71586FDFD21CF4EB4 +31462D992759D67BAC9A6CE940489CFB72E116DD648268219B9B2525A3742EF7 +BDB4EACDFB96A16AF654F04AFE98FB3D269EFE817C3D4FED2D7B3BEE77442E8D +35F0250933FABC1CE2FC9986AFC2131062B0ED6AB55D708E660525174537CD1E +877FD540C203CD34DBF27FEE0F23B9B46B0720888637E886F56A72ACE4D775DA +F8A8EAC596F92754B2DE91132E36ED6B862837259F1430DC8A02261BDF7AEAFA +6770F25A8012B4563140CF9252E71EAB5CE8BBFEACE7A956D545F0C6370CF388 +43B72A05CE22B25BE80AE9DA50D84FC608046EF7407BF46A70F8C746E7355B99 +DDF85DDEBFD66722B14D390BED35A2CEC9E1B79BBB8E43361157494F032A932E +596962EC3A073C75D0AA71538E69B6B120ADD698868C415F78374CABFAA0A185 +5B18C7 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont +TeXDict begin 40258437 52099154 1000 1200 1200 +(io-ports-and-interrupts.dvi) +@start /Fa 27[92 105[83 1[83 2[92 46 83 55 1[92 92 92 +1[37 2[37 92 1[46 92 1[83 92 92 16[111 129 5[46 1[129 +25[55 45[{ TeXBase1Encoding ReEncodeFont }23 166.044 +/NimbusSanL-Regu rf end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 1200dpi +TeXDict begin + end +%%EndSetup +TeXDict begin 1 0 bop 0 TeXcolorgray Black 1029 880 a +tx@Dict begin gsave STV CP T /ps@rot 0 def grestore end + +1029 880 a 1029 880 a +tx@Dict begin gsave STV CP T /ps@refangle 0. def grestore end + 1029 880 a 0 TeXcolorgray 1029 +880 a +tx@Dict begin gsave STV CP T /ps@rot 0 def grestore end + 1029 880 a 1279 3715 a +tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end + 1279 3715 a @beginspecial +@setspecial + tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def + 0.8 SLW 0 setgray 0.25 true 0.0 0.0 56.90549 142.26372 .5 Frame + gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin 0 +setlinecap stroke grestore end + +@endspecial 1279 3715 a +tx@Dict begin PutEnd end + 1279 3715 a 1279 +3715 a +tx@Dict begin { 28.45274 128.03734 } PutCoor PutBegin end + 1279 3715 a 906 3833 a Fa(Proz)n(essor)1279 3715 +y +tx@Dict begin PutEnd end + 1279 3715 a 1279 3715 a +tx@Dict begin { 56.90549 105.27505 } PutCoor PutBegin end + 1279 3715 a 1279 3715 a +tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@p0 10 {InitPnode +} /NodeScale {} def NewNode end end + 1279 +3715 a 1279 3715 a +tx@Dict begin PutEnd end + 1279 3715 a 1279 3715 a +tx@Dict begin { 56.90549 93.89413 } PutCoor PutBegin end + 1279 3715 +a 1279 3715 a +tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@q0 10 {InitPnode +} /NodeScale {} def NewNode end end + 1279 3715 a 1279 3715 a +tx@Dict begin PutEnd end + 1279 3715 a 1279 +3715 a +tx@Dict begin { 56.90549 28.45274 } PutCoor PutBegin end + 1279 3715 a 1279 3715 a +tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@i0 10 {InitPnode +} /NodeScale {} def NewNode end end + 1279 3715 a 1279 3715 +a +tx@Dict begin PutEnd end + 1279 3715 a 1279 3715 a +tx@Dict begin { 60.31967 34.1432 } PutCoor PutBegin end + 1279 3715 a 1279 3715 a +tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@j0 10 {InitPnode +} /NodeScale {} def NewNode end end + 1279 +3715 a 1279 3715 a +tx@Dict begin PutEnd end + 1279 3715 a 1279 3715 a +tx@Dict begin { 57.47466 36.98865 } PutCoor PutBegin end + 1279 3715 +a 1279 3715 a +tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@k0 10 {InitPnode +} /NodeScale {} def NewNode end end + 1279 3715 a 1279 3715 a +tx@Dict begin PutEnd end + 1279 3715 a 1279 +3715 a +tx@Dict begin { 60.31967 39.83366 } PutCoor PutBegin end + 1279 3715 a 1279 3715 a +tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@l0 10 {InitPnode +} /NodeScale {} def NewNode end end + 1279 3715 a 1279 3715 +a +tx@Dict begin PutEnd end + 1279 3715 a 1279 3715 a +tx@Dict begin { 99.5846 39.83366 } PutCoor PutBegin end + 1279 3715 a 1279 3715 a +tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@m0 10 {InitPnode +} /NodeScale {} def NewNode end end + 1279 +3715 a 1279 3715 a +tx@Dict begin PutEnd end + 1279 3715 a 1279 3715 a +tx@Dict begin { 227.62195 0.0 } PutCoor PutBegin end + 1279 3715 +a @beginspecial @setspecial + tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def + 0.8 SLW 0 setgray 0.25 true 0.0 0.0 56.90549 142.26372 .5 Frame + gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin 0 +setlinecap stroke grestore end + +@endspecial 1279 3715 a +tx@Dict begin PutEnd end + +1279 3715 a 1279 3715 a +tx@Dict begin { 256.07469 128.03734 } PutCoor PutBegin end + 1279 3715 a 961 3827 a Fa(e)-5 +b(xter)t(nes)1071 4001 y(Ger\344t)1279 3715 y +tx@Dict begin PutEnd end + 1279 3715 +a 1279 3715 a +tx@Dict begin { 227.62195 105.27505 } PutCoor PutBegin end + 1279 3715 a 1279 3715 a +tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@p1 10 {InitPnode +} /NodeScale {} def NewNode end end + 1279 3715 a 1279 +3715 a +tx@Dict begin PutEnd end + 1279 3715 a 1279 3715 a +tx@Dict begin { 224.20775 93.89413 } PutCoor PutBegin end + 1279 3715 a 1279 3715 +a +tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@q1 10 {InitPnode +} /NodeScale {} def NewNode end end + 1279 3715 a 1279 3715 a +tx@Dict begin PutEnd end + 1279 3715 a 1279 3715 a +tx@Dict begin { 227.05276 91.04869 } PutCoor PutBegin end + 1279 +3715 a 1279 3715 a +tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@r1 10 {InitPnode +} /NodeScale {} def NewNode end end + 1279 3715 a 1279 3715 a +tx@Dict begin PutEnd end + 1279 3715 +a 1279 3715 a +tx@Dict begin { 224.20775 88.20367 } PutCoor PutBegin end + 1279 3715 a 1279 3715 a +tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@s1 10 {InitPnode +} /NodeScale {} def NewNode end end + 1279 3715 a 1279 +3715 a +tx@Dict begin PutEnd end + 1279 3715 a 1279 3715 a +tx@Dict begin { 184.94283 88.20367 } PutCoor PutBegin end + 1279 3715 a 1279 3715 +a +tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@t1 10 {InitPnode +} /NodeScale {} def NewNode end end + 1279 3715 a 1279 3715 a +tx@Dict begin PutEnd end + 1279 3715 a 1279 3715 a +tx@Dict begin { 227.62195 28.45274 } PutCoor PutBegin end + 1279 +3715 a 1279 3715 a +tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@i1 10 {InitPnode +} /NodeScale {} def NewNode end end + 1279 3715 a 1279 3715 a +tx@Dict begin PutEnd end + 1279 3715 +a 1279 3715 a +tx@Dict begin { 227.62195 34.1432 } PutCoor PutBegin end + 1279 3715 a 1279 3715 a +tx@Dict begin tx@NodeDict begin {0.0 0.0 } false /N@j1 10 {InitPnode +} /NodeScale {} def NewNode end end + 1279 3715 a 1279 +3715 a +tx@Dict begin PutEnd end + 1279 3715 a 1279 3715 a +tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { BeginArrow +1. 1. scale false 0.4 1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow + } def 0.8 SLW 0 setgray /ArrowA { moveto } def /ArrowB { BeginArrow +1. 1. scale false 0.4 1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow + } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@p0 +/N@p1 InitNC { NCLine } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha + 0 setlinejoin 0 setlinecap stroke grestore grestore end + 1279 3715 a 1279 3715 +a +tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } +def 0.8 SLW 0 setgray /ArrowA { moveto } def /ArrowB { } def /NCLW +CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@q0 /N@q1 InitNC +{ NCLine } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha + 0 setlinejoin 0 setlinecap stroke grestore grestore end + 1279 3715 a 1279 3715 a +tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } +def 0.8 SLW 0 setgray /ArrowA { moveto } def /ArrowB { } def /NCLW +CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@q1 /N@r1 InitNC +{ /AngleA 0. def /AngleB 90. def 0.67 0.67 NCCurve } if end gsave +0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin 0 setlinecap +stroke grestore grestore end + 1279 3715 a 1279 3715 a +tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { } +def 0.8 SLW 0 setgray /ArrowA { moveto } def /ArrowB { } def /NCLW +CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@r1 /N@s1 InitNC +{ /AngleA -90. def /AngleB 0. def 0.67 0.67 NCCurve } if end +gsave 0.8 SLW 0 setgray 1. .setopacityalpha 0 setlinejoin 0 setlinecap +stroke grestore grestore end + 1279 +3715 a 1279 3715 a +tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { BeginArrow +1. 1. scale false 0.4 1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow + } def 0.8 SLW 0 setgray /ArrowA { moveto } def /ArrowB { BeginArrow +1. 1. scale false 0.4 1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow + } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@s1 +/N@t1 InitNC { NCLine } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha + 0 setlinejoin 0 setlinecap stroke grestore grestore end + 1279 3715 a 1279 3715 a +tx@Dict begin { 62.59595 108.1205 } PutCoor PutBegin end + 1279 3715 +a -35 x Fa(Proz)n(essor)47 b(schreibt)g(in)f(Output-P)-8 +b(or)7 b(t)1279 3715 y +tx@Dict begin PutEnd end + 1279 3715 a 1279 3715 a +tx@Dict begin { 62.59595 88.20367 } PutCoor PutBegin end + 1279 3715 +a 118 x Fa(Proz)n(essor)47 b(liest)f(Input-P)-8 b(or)7 +b(t)1279 3715 y +tx@Dict begin PutEnd end + 1279 3715 a 1279 3715 a +tx@Dict begin gsave STV newpath /ArrowA { moveto } def /ArrowB { BeginArrow +1. 1. scale false 0.4 1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow + } def 0.8 SLW 0 setgray /ArrowA { moveto } def /ArrowB { BeginArrow +1. 1. scale false 0.4 1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow + } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@i1 +/N@i0 InitNC { NCLine } if end gsave 0.8 SLW 0 setgray 1. .setopacityalpha + 0 setlinejoin 0 setlinecap stroke grestore grestore end + 1279 3715 a 1279 +3715 a +tx@Dict begin { 221.93147 31.29819 } PutCoor PutBegin end + 1279 3715 a -1051 3680 a Fa(e)-5 b(xter)t(nes)48 +b(Ger\344t)f(r)r(uft)h(Interr)r(upt)h(auf)1279 3715 y +tx@Dict begin PutEnd end + +1279 3715 a 0 TeXcolorgray 0 TeXcolorgray eop end +%%Trailer + +userdict /end-hook known{end-hook}if +%%EOF diff --git a/common/io-ports-and-interrupts.pdf b/common/io-ports-and-interrupts.pdf new file mode 100644 index 0000000000000000000000000000000000000000..68f6bbb914577f9039f0db419da2ada3fac741c0 GIT binary patch literal 6074 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 literal 0 HcmV?d00001 diff --git a/common/io-ports-and-interrupts.tex b/common/io-ports-and-interrupts.tex new file mode 100644 index 0000000..149f95b --- /dev/null +++ b/common/io-ports-and-interrupts.tex @@ -0,0 +1,43 @@ +\documentclass{article} + +\usepackage[utf8]{inputenc} +\usepackage[german]{babel} +\usepackage[T1]{fontenc} +\usepackage{helvet} +\renewcommand*\familydefault{\sfdefault} +\usepackage{pstricks,pst-node} + +\pagestyle{empty} + +\begin{document} + \psset{unit=1cm}% + \begin{pspicture}(0,0)(10,6) + \rput(0,0){\psframe[framearc=0.25](2,5)} + \rput(1,4.5){\makebox(0,0)[t]{Prozessor}} + \rput(2.0,3.7){\pnode{p0}} + \rput(2.0,3.3){\pnode{q0}} + \rput(2.0,1.0){\pnode{i0}} + \rput(2.12,1.2){\pnode{j0}} + \rput(2.02,1.3){\pnode{k0}} + \rput(2.12,1.4){\pnode{l0}} + \rput(3.5,1.4){\pnode{m0}} + \rput(8,0){\psframe[framearc=0.25](2,5)} + \rput(9,4.5){\makebox(0,0)[t]{\shortstack{externes\\Gerät}}} + \rput(8.0,3.7){\pnode{p1}} + \rput(7.88,3.3){\pnode{q1}} + \rput(7.98,3.2){\pnode{r1}} + \rput(7.88,3.1){\pnode{s1}} + \rput(6.5,3.1){\pnode{t1}} + \rput(8.0,1.0){\pnode{i1}} + \rput(8.0,1.2){\pnode{j1}} + \ncline{->}{p0}{p1} + \ncline{q0}{q1} + \nccurve[angleB=90]{q1}{r1} + \nccurve[angleA=-90]{r1}{s1} + \ncline{->}{s1}{t1} + \rput(2.2,3.8){\makebox(0,0)[lb]{Prozessor schreibt in Output-Port}} + \rput(2.2,3.1){\makebox(0,0)[lt]{Prozessor liest Input-Port}} + \ncline{->}{i1}{i0} + \rput(7.8,1.1){\makebox(0,0)[rb]{externes Gerät ruft Interrupt auf}} + \end{pspicture} +\end{document} -- GitLab