initial commit

This commit is contained in:
Lukas 2021-05-11 10:03:09 +02:00
parent 26184565f7
commit 459776f417
15 changed files with 4029 additions and 0 deletions

411
SteamTrace.py Normal file
View File

@ -0,0 +1,411 @@
"""
"""
__author__ = "Lukas Mahler"
__copyright__ = "Copyright 2020-2021"
__version__ = "0.1.4"
__date__ = "15.01.2021"
__email__ = "lm@ankerlab.de"
__status__ = "Development"
import os
import sys
import tinydb
import requests
import subprocess
from math import ceil
from time import sleep
from dateutil import parser
from datetime import datetime, timedelta
from requests.utils import requote_uri
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.common.exceptions import NoSuchElementException
from PyQt5 import QtWidgets
from PyQt5.QtCore import Qt
from UX import Ui_Main
import st_rc
# CONSTANTS #
APPID = 730
CURRENCY = 3
SPACER = "-" * 65
# CONSTANTS #
class STInstance(QtWidgets.QMainWindow, Ui_Main):
def __init__(self, parent=None):
QtWidgets.QWidget.__init__(self, parent)
self.setWindowFlags(Qt.FramelessWindowHint)
self.setAttribute(Qt.WA_TranslucentBackground)
self.setupUi(self)
self.frameOnline.setDisabled(True)
# Vars
self.chrome_driver = None
self.dbflag = None
self.find_driver()
def btnexit(self):
self.destroy()
sys.exit(app.exec_())
def dbconnect(self):
self.frameDatabase.setDisabled(True)
self.frameGeneral.setEnabled(True)
self.rbDatabaseStatus.setChecked(True)
self.status("Connected to Database")
def evaluate(self):
self.status("Placeholder")
def local(self):
""" Toggles Offline or Online Database """
if self.cbUseLocalDatabase.isChecked():
self.frameOnline.setDisabled(True)
self.leLocalDBName.setEnabled(True)
self.dbflag = "offline"
else:
self.frameOnline.setEnabled(True)
self.leLocalDBName.setDisabled(True)
self.dbflag = "online"
def find_driver(self):
""" Check for chromedriver """
chrome_driver = None
try:
chrome_driver = os.getcwd() + "\\chromedriver.exe"
# chrome_driver = chrome_driver.resolve()
os.path.isfile(chrome_driver)
except Exception as e:
print(e)
self.status("Chromedriver wasn't found in current working directory")
pass
try:
chrome_driver = os.environ["PROGRAMFILES(x86)"] + r"\Google\Chrome\driver\chromedriver.exe"
os.path.isfile(chrome_driver)
except Exception as e:
print(e)
self.status(r"Chromedriver wasn't found under %PROGRAMFILES(x86)%\Google\Chrome\driver")
pass
if not os.path.isfile(chrome_driver):
self.status("Couldn't find a Chromedriver, exiting...")
exit()
else:
self.status("Chromedriver found")
self.chrome_driver = chrome_driver
self.rbChromedriverStatus.setChecked(True)
def status(self, txt):
self.statusbar.showMessage(txt)
# ==============================================================================================================
# General Steam API Calls
# ==============================================================================================================
def steamapicall(hashname):
global db
global bucket
''' Reuse cached values for already made calls '''
Item = tinydb.Query()
query = Item.hashname == hashname
dbitem = db.search(query)
if len(dbitem) > 0:
timestamp = parser.parse(dbitem[0]['lastupdated'])
# print(timestamp, (datetime.now() - timedelta(hours=1)))
if timestamp > (datetime.now() - timedelta(hours=1)):
return dbitem[0]
''' Stop possible rate limiting '''
# print(bucket)
if bucket == 20:
for i in reversed(range(0, 60)):
print("Bucket is full, waiting... {0:2d}".format(i), end="\r")
sleep(1)
print("")
bucket = 1
url = "https://steamcommunity.com/market/priceoverview/?currency={0}&appid={1}&market_hash_name={2}".format(
CURRENCY, APPID, hashname)
url = requote_uri(url)
r = requests.get(url)
if r.status_code == 200:
bucket += 1
json = r.json()
json.pop('success')
json['hashname'] = hashname
json['lastupdated'] = str(datetime.now())
db.upsert(json, query)
return json
else:
raise Exception("APIERROR: {0}".format(r.status_code))
# print("APIERROR: {0}".format(r.status_code))
# sleep(60)
# ==============================================================================================================
# Item Evaluation
# ==============================================================================================================
def getbaseprice(given):
if isinstance(given, dict):
name = given['full_item_name']
else:
name = given.split("730/")[1]
json = steamapicall(name)
try:
price = json['median_price'].replace("-", "0")
except KeyError:
# Using lowest price if there is no median price provided
price = json['lowest_price'].replace("-", "0")
baseprice = round(float(price[:-1].replace(",", ".")), 2)
return baseprice
def getfloatval(idic):
wear_ranges = {
'Factory New': "0-0.07",
'Minimal Wear': "0.07-0.15",
'Field-Tested': "0.15-0.38",
'Well-Worn': "0.38-0.45",
'Battle-Scarred': "0.45-1"
}
fmin, fmax = map(float, wear_ranges[idic['wear_name']].split("-"))
if idic['min'] > fmin:
fmin = idic['min']
cur = idic['floatvalue']
rankval = 100 - (((cur - fmin) / (fmax - fmin)) * 100)
if rankval >= 99:
valueadd = idic['baseprice'] * 0.05
else:
valueadd = 0
# print("{0} rankval is {1}".format(o,round(rankval,2)))
return valueadd
def getstickerprice(sticker):
name = "Sticker | {0}".format(sticker['name'])
json = steamapicall(name)
try:
mprice = json['median_price'].replace("-", "0")
except KeyError:
mprice = "9999€"
mprice = float(mprice[:-1].replace(",", "."))
try:
lprice = json['lowest_price'].replace("-", "0")
except KeyError:
lprice = "9999€"
lprice = float(lprice[:-1].replace(",", "."))
price = min(mprice, lprice)
valueadd = round(price * 0.05, 2)
return valueadd
# ==============================================================================================================
# Tools
# ==============================================================================================================
def getexchangerate(symbol="USD"):
url = "https://api.exchangeratesapi.io/latest?symbols={0}".format(symbol)
r = requests.get(url)
rate = r.json()['rates'][symbol]
date = r.json()['date']
return rate, date
def usdtoeur(usd):
global rate
usd = float(usd[1:].split(" ")[0])
eur = round((usd / rate), 2)
return eur
def timer(msg, time):
subprocess.call(["python", "xtimer.py", msg, time], creationflags=subprocess.CREATE_NEW_CONSOLE)
# ==============================================================================================================
# Evaluate Steam Market Listing
# ==============================================================================================================
def evaluate(baseprice, listing):
ins = listing['ins']
api = "https://api.csgofloat.com/?url="
call = api + ins
r = requests.get(call)
idic = r.json()['iteminfo']
# print(idic)
iname = idic['full_item_name']
ifloat = idic['floatvalue']
istickers = idic['stickers']
price = usdtoeur(listing['price'])
# value, = .split(" ")
# print(price)
# price = round(float(price[:-1].replace(",", ".")), 2)
print("Evaluating {0} - [{1} float]\n{2:9.2f}\n{3}".format(iname, round(ifloat, 6), price, SPACER))
# Evaluate Base Price
idic['baseprice'] = baseprice
print(" {0:7}€ Base Price".format(baseprice))
# Evaluate Stickers
stickeradd = 0
for sticker in istickers:
if 'wear' in sticker:
# print("- Scraped Sticker: {0} ({1})".format(sticker['name'],round(sticker['wear'],2)))
pass
else:
valueadd = getstickerprice(sticker)
stickeradd += valueadd
print("+ {0:7}€ Intact Sticker: {1}".format(valueadd, sticker['name']))
# Evalute Floats
valueadd = getfloatval(idic)
if valueadd != 0:
print("+ {0:7}€ Float".format(valueadd))
# print("= Float is: {0} ({1})".format(round(ifloat, 3), idic['wear_name']))
# Evaluate And print possible profit
profit = round((baseprice + stickeradd + valueadd) - price, 2)
print("{0}\n{1:9.2f}\n".format(SPACER, profit))
# ==============================================================================================================
# Get listings from Steam market
# ==============================================================================================================
def getmarketlistings(marketurl, n=10):
marketlistings = {}
pages = n / 10
i = 1
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--window-size=1920x1080")
chrome_options.add_argument("--log-level=3") # Fatal
chrome_driver = find_driver()
driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=chrome_driver)
os.system("CLS")
driver.get(marketurl)
for page in range(1, ceil(pages)+1):
# https://stackoverflow.com/questions/62313034/how-does-the-steam-marketplace-change-values-without-a-url-change-webscraping
# There is this weird bug where the first page has all the random currencys and the following pages are all USD
# when going back from Page 2 to Page 1 all currencys are USD aswell, so going back and forth on first page
# gives us good values
if page == 1:
driver.find_element_by_css_selector("#searchResults_btn_next").click()
sleep(1)
driver.find_element_by_css_selector("#searchResults_btn_prev").click()
sleep(1)
if (page % 10) == 0:
for i in reversed(range(0, 60)):
print("Waiting to not get rate limited... {0:2d}".format(i), end="\r")
sleep(1)
print("")
print("Query Page", page)
try:
listings = driver.find_elements_by_css_selector("#searchResultsRows > div")
listings.pop(0) # delete ratetable header div
except IndexError:
return marketlistings
for listing in listings:
lid = listing.get_attribute('id')
try:
price = driver.find_element_by_css_selector("#{0} > div.market_listing_price_listings_block > div.market_listing_right_cell.market_listing_their_price > span > span.market_listing_price.market_listing_price_with_fee".format(lid)).text
except NoSuchElementException:
sleep(0.2)
print("Unknown Price not Found happend again, skipping...")
continue
btn = driver.find_element_by_id("{0}_actionmenu_button".format(lid))
driver.execute_script("arguments[0].click();", btn)
popup = driver.find_element_by_css_selector("#market_action_popup_itemactions > a")
href = popup.get_attribute('href')
# Skip Sold Item
if price == "Verkauft":
continue
marketlistings[i] = {
"id": lid,
"ins": href,
"price": price
}
i += 1
if i > n:
break
# Next page
driver.find_element_by_css_selector("#searchResults_btn_next").click()
# driver.refresh()
sleep(1)
print("\n")
return marketlistings
# ==============================================================================================================
# Main
# ==============================================================================================================
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = STInstance()
window.show()
'''
bucket = 1
db = tinydb.TinyDB('tiny.db',
sort_keys=True,
indent=4,
separators=(',', ': '),
ensure_ascii=False)
db.default_ratetable_name = 'Memory'
ratetable = db.table("Rate")
try:
if ratetable.get(doc_id=1)['date'] != datetime.today().strftime('%Y-%m-%d'):
rate, date = getexchangerate()
ratetable.update({"rate": rate, "date": date})
else:
# Reuse Rate from today
rate = ratetable.get(doc_id=1)['rate']
except TypeError:
# happens on nonexisting rate data in db
rate, date = getexchangerate()
ratetable.update({"rate": rate, "date": date})
url = "https://steamcommunity.com/market/listings/730/AK-47%20%7C%20Redline%20%28Field-Tested%29"
baseprice = getbaseprice(url)
marketlistings = getmarketlistings(url, 115)
for index in marketlistings:
print("{:3d}.".format(index), end=" ")
evaluate(baseprice, marketlistings[index])
'''
sys.exit(app.exec_())

396
UX.py Normal file
View File

@ -0,0 +1,396 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'C:\Users\lukas\Desktop\Dump\02_Python\steam-Trace\UX.ui'
#
# Created by: PyQt5 UI code generator 5.15.2
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Main(object):
def setupUi(self, Main):
Main.setObjectName("Main")
Main.resize(800, 700)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/rsc/rsc/favicon_io/favicon.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
Main.setWindowIcon(icon)
Main.setStyleSheet("")
self.centralwidget = QtWidgets.QWidget(Main)
self.centralwidget.setObjectName("centralwidget")
self.frameHead = QtWidgets.QFrame(self.centralwidget)
self.frameHead.setGeometry(QtCore.QRect(0, 0, 801, 41))
self.frameHead.setStyleSheet(".QFrame { \n"
"background-color: rgb(240, 240, 240)\n"
"}")
self.frameHead.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frameHead.setFrameShadow(QtWidgets.QFrame.Raised)
self.frameHead.setObjectName("frameHead")
self.btnExit = QtWidgets.QPushButton(self.frameHead)
self.btnExit.setGeometry(QtCore.QRect(760, 5, 30, 30))
self.btnExit.setText("")
icon1 = QtGui.QIcon()
icon1.addPixmap(QtGui.QPixmap(":/rsc/rsc/Very-Basic-Cancel-icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.btnExit.setIcon(icon1)
self.btnExit.setIconSize(QtCore.QSize(30, 30))
self.btnExit.setFlat(True)
self.btnExit.setObjectName("btnExit")
self.lblChromedriverStatus = QtWidgets.QLabel(self.frameHead)
self.lblChromedriverStatus.setGeometry(QtCore.QRect(280, 10, 71, 16))
self.lblChromedriverStatus.setObjectName("lblChromedriverStatus")
self.lblLogo = QtWidgets.QLabel(self.frameHead)
self.lblLogo.setGeometry(QtCore.QRect(10, 5, 30, 30))
self.lblLogo.setText("")
self.lblLogo.setPixmap(QtGui.QPixmap(":/rsc/rsc/favicon_io/android-chrome-192x192.png"))
self.lblLogo.setScaledContents(True)
self.lblLogo.setObjectName("lblLogo")
self.lblDatabaseStatus = QtWidgets.QLabel(self.frameHead)
self.lblDatabaseStatus.setGeometry(QtCore.QRect(160, 10, 51, 16))
self.lblDatabaseStatus.setObjectName("lblDatabaseStatus")
self.rbDatabaseStatus = QtWidgets.QRadioButton(self.frameHead)
self.rbDatabaseStatus.setEnabled(True)
self.rbDatabaseStatus.setGeometry(QtCore.QRect(140, 10, 16, 17))
self.rbDatabaseStatus.setStyleSheet("QRadioButton::indicator {\n"
" width: 10px;\n"
" height: 10px;\n"
" border-radius: 7px;\n"
"}\n"
"QRadioButton::indicator:checked {\n"
" background-color: green;\n"
" border: 2px solid black;\n"
"}\n"
"\n"
"QRadioButton::indicator:unchecked {\n"
" background-color: red;\n"
" border: 2px solid black;\n"
"}")
self.rbDatabaseStatus.setText("")
self.rbDatabaseStatus.setCheckable(True)
self.rbDatabaseStatus.setChecked(False)
self.rbDatabaseStatus.setAutoExclusive(False)
self.rbDatabaseStatus.setObjectName("rbDatabaseStatus")
self.rbChromedriverStatus = QtWidgets.QRadioButton(self.frameHead)
self.rbChromedriverStatus.setEnabled(False)
self.rbChromedriverStatus.setGeometry(QtCore.QRect(260, 10, 16, 17))
self.rbChromedriverStatus.setStyleSheet("QRadioButton::indicator {\n"
" width: 10px;\n"
" height: 10px;\n"
" border-radius: 7px;\n"
"}\n"
"QRadioButton::indicator:checked {\n"
" background-color: green;\n"
" border: 2px solid black;\n"
"}\n"
"\n"
"QRadioButton::indicator:unchecked {\n"
" background-color: red;\n"
" border: 2px solid black;\n"
"}")
self.rbChromedriverStatus.setText("")
self.rbChromedriverStatus.setCheckable(True)
self.rbChromedriverStatus.setChecked(False)
self.rbChromedriverStatus.setAutoExclusive(False)
self.rbChromedriverStatus.setObjectName("rbChromedriverStatus")
self.line1_2 = QtWidgets.QFrame(self.frameHead)
self.line1_2.setGeometry(QtCore.QRect(0, 35, 801, 10))
self.line1_2.setFrameShadow(QtWidgets.QFrame.Plain)
self.line1_2.setLineWidth(1)
self.line1_2.setMidLineWidth(0)
self.line1_2.setFrameShape(QtWidgets.QFrame.HLine)
self.line1_2.setObjectName("line1_2")
self.frameBody = QtWidgets.QFrame(self.centralwidget)
self.frameBody.setGeometry(QtCore.QRect(0, 41, 801, 635))
self.frameBody.setStyleSheet(".QPushButton { \n"
"background-color:rgb(240, 240, 240);\n"
"border:1px solid black;\n"
"border-radius: 5px;\n"
" }\n"
"\n"
".QFrame {\n"
"background-color:white;\n"
"}")
self.frameBody.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frameBody.setFrameShadow(QtWidgets.QFrame.Raised)
self.frameBody.setObjectName("frameBody")
self.frameGeneral = QtWidgets.QFrame(self.frameBody)
self.frameGeneral.setEnabled(False)
self.frameGeneral.setGeometry(QtCore.QRect(0, 50, 801, 101))
self.frameGeneral.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frameGeneral.setFrameShadow(QtWidgets.QFrame.Raised)
self.frameGeneral.setObjectName("frameGeneral")
self.sbListings = QtWidgets.QSpinBox(self.frameGeneral)
self.sbListings.setGeometry(QtCore.QRect(80, 40, 61, 22))
self.sbListings.setObjectName("sbListings")
self.dbsFloatPerc = QtWidgets.QDoubleSpinBox(self.frameGeneral)
self.dbsFloatPerc.setGeometry(QtCore.QRect(390, 40, 62, 22))
self.dbsFloatPerc.setProperty("value", 0.05)
self.dbsFloatPerc.setObjectName("dbsFloatPerc")
self.cbSameSticker = QtWidgets.QCheckBox(self.frameGeneral)
self.cbSameSticker.setGeometry(QtCore.QRect(480, 70, 131, 17))
self.cbSameSticker.setObjectName("cbSameSticker")
self.lblFloatPerc = QtWidgets.QLabel(self.frameGeneral)
self.lblFloatPerc.setGeometry(QtCore.QRect(300, 40, 81, 20))
self.lblFloatPerc.setObjectName("lblFloatPerc")
self.lblFloatRank = QtWidgets.QLabel(self.frameGeneral)
self.lblFloatRank.setGeometry(QtCore.QRect(160, 40, 61, 31))
self.lblFloatRank.setObjectName("lblFloatRank")
self.lblUrl = QtWidgets.QLabel(self.frameGeneral)
self.lblUrl.setGeometry(QtCore.QRect(10, 10, 61, 20))
self.lblUrl.setObjectName("lblUrl")
self.lblListings = QtWidgets.QLabel(self.frameGeneral)
self.lblListings.setGeometry(QtCore.QRect(10, 40, 61, 20))
self.lblListings.setObjectName("lblListings")
self.btnEvaluate = QtWidgets.QPushButton(self.frameGeneral)
self.btnEvaluate.setGeometry(QtCore.QRect(700, 10, 75, 23))
self.btnEvaluate.setObjectName("btnEvaluate")
self.leUrl = QtWidgets.QLineEdit(self.frameGeneral)
self.leUrl.setGeometry(QtCore.QRect(80, 10, 601, 20))
self.leUrl.setObjectName("leUrl")
self.dbsStickerPerc = QtWidgets.QDoubleSpinBox(self.frameGeneral)
self.dbsStickerPerc.setGeometry(QtCore.QRect(390, 70, 62, 22))
self.dbsStickerPerc.setProperty("value", 0.05)
self.dbsStickerPerc.setObjectName("dbsStickerPerc")
self.sbFloatRank = QtWidgets.QSpinBox(self.frameGeneral)
self.sbFloatRank.setGeometry(QtCore.QRect(230, 40, 42, 22))
self.sbFloatRank.setMaximum(100)
self.sbFloatRank.setProperty("value", 99)
self.sbFloatRank.setObjectName("sbFloatRank")
self.lblStickerPerc = QtWidgets.QLabel(self.frameGeneral)
self.lblStickerPerc.setGeometry(QtCore.QRect(300, 70, 81, 20))
self.lblStickerPerc.setObjectName("lblStickerPerc")
self.line1 = QtWidgets.QFrame(self.frameBody)
self.line1.setGeometry(QtCore.QRect(10, 40, 781, 16))
self.line1.setFrameShadow(QtWidgets.QFrame.Plain)
self.line1.setLineWidth(2)
self.line1.setMidLineWidth(0)
self.line1.setFrameShape(QtWidgets.QFrame.HLine)
self.line1.setObjectName("line1")
self.frameListings = QtWidgets.QFrame(self.frameBody)
self.frameListings.setEnabled(False)
self.frameListings.setGeometry(QtCore.QRect(0, 430, 801, 211))
self.frameListings.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frameListings.setFrameShadow(QtWidgets.QFrame.Raised)
self.frameListings.setObjectName("frameListings")
self.tableListings = QtWidgets.QTableWidget(self.frameListings)
self.tableListings.setGeometry(QtCore.QRect(10, 10, 781, 191))
self.tableListings.setStyleSheet("background-color: rgb(255, 255, 255);")
self.tableListings.setObjectName("tableListings")
self.tableListings.setColumnCount(5)
self.tableListings.setRowCount(0)
item = QtWidgets.QTableWidgetItem()
self.tableListings.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.tableListings.setHorizontalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
self.tableListings.setHorizontalHeaderItem(2, item)
item = QtWidgets.QTableWidgetItem()
self.tableListings.setHorizontalHeaderItem(3, item)
item = QtWidgets.QTableWidgetItem()
self.tableListings.setHorizontalHeaderItem(4, item)
self.line2 = QtWidgets.QFrame(self.frameBody)
self.line2.setGeometry(QtCore.QRect(10, 190, 781, 16))
self.line2.setFrameShadow(QtWidgets.QFrame.Plain)
self.line2.setLineWidth(2)
self.line2.setMidLineWidth(0)
self.line2.setFrameShape(QtWidgets.QFrame.HLine)
self.line2.setObjectName("line2")
self.lblBestListings = QtWidgets.QLabel(self.frameBody)
self.lblBestListings.setGeometry(QtCore.QRect(340, 400, 81, 20))
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.lblBestListings.setFont(font)
self.lblBestListings.setObjectName("lblBestListings")
self.lblStatistics = QtWidgets.QLabel(self.frameBody)
self.lblStatistics.setGeometry(QtCore.QRect(340, 170, 71, 20))
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.lblStatistics.setFont(font)
self.lblStatistics.setObjectName("lblStatistics")
self.line4 = QtWidgets.QFrame(self.frameBody)
self.line4.setGeometry(QtCore.QRect(10, 420, 781, 16))
self.line4.setFrameShadow(QtWidgets.QFrame.Plain)
self.line4.setLineWidth(2)
self.line4.setMidLineWidth(0)
self.line4.setFrameShape(QtWidgets.QFrame.HLine)
self.line4.setObjectName("line4")
self.lblGeneral = QtWidgets.QLabel(self.frameBody)
self.lblGeneral.setGeometry(QtCore.QRect(340, 20, 71, 20))
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.lblGeneral.setFont(font)
self.lblGeneral.setObjectName("lblGeneral")
self.frameDatabase = QtWidgets.QFrame(self.frameBody)
self.frameDatabase.setGeometry(QtCore.QRect(0, 300, 801, 91))
self.frameDatabase.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frameDatabase.setFrameShadow(QtWidgets.QFrame.Raised)
self.frameDatabase.setObjectName("frameDatabase")
self.btnConnectDatabase = QtWidgets.QPushButton(self.frameDatabase)
self.btnConnectDatabase.setGeometry(QtCore.QRect(350, 30, 75, 23))
self.btnConnectDatabase.setObjectName("btnConnectDatabase")
self.lblPurgeStale = QtWidgets.QLabel(self.frameDatabase)
self.lblPurgeStale.setGeometry(QtCore.QRect(480, 10, 141, 20))
self.lblPurgeStale.setObjectName("lblPurgeStale")
self.sbPurgeStale = QtWidgets.QSpinBox(self.frameDatabase)
self.sbPurgeStale.setGeometry(QtCore.QRect(630, 10, 42, 22))
self.sbPurgeStale.setFrame(True)
self.sbPurgeStale.setSuffix("")
self.sbPurgeStale.setMaximum(1024)
self.sbPurgeStale.setProperty("value", 1)
self.sbPurgeStale.setObjectName("sbPurgeStale")
self.lblStaleHours = QtWidgets.QLabel(self.frameDatabase)
self.lblStaleHours.setGeometry(QtCore.QRect(680, 10, 31, 20))
self.lblStaleHours.setObjectName("lblStaleHours")
self.frameLocal = QtWidgets.QFrame(self.frameDatabase)
self.frameLocal.setGeometry(QtCore.QRect(10, 10, 331, 71))
self.frameLocal.setFrameShape(QtWidgets.QFrame.Box)
self.frameLocal.setFrameShadow(QtWidgets.QFrame.Plain)
self.frameLocal.setObjectName("frameLocal")
self.cbUseLocalDatabase = QtWidgets.QCheckBox(self.frameLocal)
self.cbUseLocalDatabase.setGeometry(QtCore.QRect(10, 40, 141, 17))
self.cbUseLocalDatabase.setChecked(True)
self.cbUseLocalDatabase.setObjectName("cbUseLocalDatabase")
self.frameOnline = QtWidgets.QFrame(self.frameLocal)
self.frameOnline.setEnabled(True)
self.frameOnline.setGeometry(QtCore.QRect(10, 10, 291, 21))
self.frameOnline.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frameOnline.setFrameShadow(QtWidgets.QFrame.Raised)
self.frameOnline.setObjectName("frameOnline")
self.lblip = QtWidgets.QLabel(self.frameOnline)
self.lblip.setEnabled(True)
self.lblip.setGeometry(QtCore.QRect(0, 0, 46, 13))
self.lblip.setObjectName("lblip")
self.lePort = QtWidgets.QLineEdit(self.frameOnline)
self.lePort.setEnabled(True)
self.lePort.setGeometry(QtCore.QRect(240, 0, 51, 20))
self.lePort.setObjectName("lePort")
self.lblPort = QtWidgets.QLabel(self.frameOnline)
self.lblPort.setEnabled(True)
self.lblPort.setGeometry(QtCore.QRect(200, 0, 46, 13))
self.lblPort.setObjectName("lblPort")
self.leIP = QtWidgets.QLineEdit(self.frameOnline)
self.leIP.setEnabled(True)
self.leIP.setGeometry(QtCore.QRect(20, 0, 171, 20))
self.leIP.setObjectName("leIP")
self.leLocalDBName = QtWidgets.QLineEdit(self.frameLocal)
self.leLocalDBName.setGeometry(QtCore.QRect(160, 40, 101, 20))
self.leLocalDBName.setObjectName("leLocalDBName")
self.frameLocal.raise_()
self.btnConnectDatabase.raise_()
self.lblPurgeStale.raise_()
self.sbPurgeStale.raise_()
self.lblStaleHours.raise_()
self.frameStatistics = QtWidgets.QFrame(self.frameBody)
self.frameStatistics.setEnabled(False)
self.frameStatistics.setGeometry(QtCore.QRect(0, 210, 801, 51))
self.frameStatistics.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frameStatistics.setFrameShadow(QtWidgets.QFrame.Raised)
self.frameStatistics.setObjectName("frameStatistics")
self.lblBucket = QtWidgets.QLabel(self.frameStatistics)
self.lblBucket.setGeometry(QtCore.QRect(20, 10, 61, 20))
self.lblBucket.setObjectName("lblBucket")
self.pbPages = QtWidgets.QProgressBar(self.frameStatistics)
self.pbPages.setGeometry(QtCore.QRect(570, 10, 118, 23))
self.pbPages.setMaximum(20)
self.pbPages.setProperty("value", 0)
self.pbPages.setObjectName("pbPages")
self.lblCooldown = QtWidgets.QLabel(self.frameStatistics)
self.lblCooldown.setGeometry(QtCore.QRect(250, 10, 61, 20))
self.lblCooldown.setObjectName("lblCooldown")
self.lblPages = QtWidgets.QLabel(self.frameStatistics)
self.lblPages.setGeometry(QtCore.QRect(480, 10, 81, 20))
self.lblPages.setObjectName("lblPages")
self.lline2 = QtWidgets.QFrame(self.frameStatistics)
self.lline2.setGeometry(QtCore.QRect(450, 0, 16, 41))
self.lline2.setFrameShadow(QtWidgets.QFrame.Plain)
self.lline2.setFrameShape(QtWidgets.QFrame.VLine)
self.lline2.setObjectName("lline2")
self.pbBucket = QtWidgets.QProgressBar(self.frameStatistics)
self.pbBucket.setGeometry(QtCore.QRect(100, 10, 118, 23))
self.pbBucket.setMaximum(20)
self.pbBucket.setProperty("value", 0)
self.pbBucket.setObjectName("pbBucket")
self.pbCooldown = QtWidgets.QProgressBar(self.frameStatistics)
self.pbCooldown.setGeometry(QtCore.QRect(320, 10, 118, 23))
self.pbCooldown.setMaximum(60)
self.pbCooldown.setProperty("value", 60)
self.pbCooldown.setInvertedAppearance(False)
self.pbCooldown.setObjectName("pbCooldown")
self.lline1 = QtWidgets.QFrame(self.frameStatistics)
self.lline1.setGeometry(QtCore.QRect(220, 0, 16, 41))
self.lline1.setFrameShadow(QtWidgets.QFrame.Plain)
self.lline1.setFrameShape(QtWidgets.QFrame.VLine)
self.lline1.setObjectName("lline1")
self.line3 = QtWidgets.QFrame(self.frameBody)
self.line3.setGeometry(QtCore.QRect(10, 290, 781, 16))
self.line3.setFrameShadow(QtWidgets.QFrame.Plain)
self.line3.setLineWidth(2)
self.line3.setMidLineWidth(0)
self.line3.setFrameShape(QtWidgets.QFrame.HLine)
self.line3.setObjectName("line3")
self.lblDatabase = QtWidgets.QLabel(self.frameBody)
self.lblDatabase.setGeometry(QtCore.QRect(340, 270, 71, 20))
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.lblDatabase.setFont(font)
self.lblDatabase.setObjectName("lblDatabase")
Main.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(Main)
self.statusbar.setStyleSheet("background-color: rgb(240, 240, 240);")
self.statusbar.setObjectName("statusbar")
Main.setStatusBar(self.statusbar)
self.retranslateUi(Main)
self.btnExit.clicked.connect(Main.btnexit)
self.btnConnectDatabase.clicked.connect(Main.dbconnect)
self.cbUseLocalDatabase.toggled['bool'].connect(Main.local)
self.btnEvaluate.clicked.connect(Main.evaluate)
QtCore.QMetaObject.connectSlotsByName(Main)
def retranslateUi(self, Main):
_translate = QtCore.QCoreApplication.translate
Main.setWindowTitle(_translate("Main", "Steam Trace"))
self.lblChromedriverStatus.setText(_translate("Main", "Chromedriver"))
self.lblDatabaseStatus.setText(_translate("Main", "Database"))
self.cbSameSticker.setText(_translate("Main", "Same Sticker Mutliplier"))
self.lblFloatPerc.setText(_translate("Main", "Float Percent:"))
self.lblFloatRank.setText(_translate("Main", "Float Rank \n"
"Correlation:"))
self.lblUrl.setText(_translate("Main", "Url:"))
self.lblListings.setText(_translate("Main", "Listings:"))
self.btnEvaluate.setText(_translate("Main", "Evaluate"))
self.lblStickerPerc.setText(_translate("Main", "Sticker Percent:"))
item = self.tableListings.horizontalHeaderItem(0)
item.setText(_translate("Main", "Nr."))
item = self.tableListings.horizontalHeaderItem(1)
item.setText(_translate("Main", "Value"))
item = self.tableListings.horizontalHeaderItem(2)
item.setText(_translate("Main", "Profit"))
item = self.tableListings.horizontalHeaderItem(3)
item.setText(_translate("Main", "Stickers"))
item = self.tableListings.horizontalHeaderItem(4)
item.setText(_translate("Main", "LID"))
self.lblBestListings.setText(_translate("Main", "Best Listings"))
self.lblStatistics.setText(_translate("Main", "Statistics"))
self.lblGeneral.setText(_translate("Main", "General"))
self.btnConnectDatabase.setText(_translate("Main", "Connect"))
self.lblPurgeStale.setText(_translate("Main", "Purge Stale Pricedata After:"))
self.lblStaleHours.setText(_translate("Main", "Hours"))
self.cbUseLocalDatabase.setText(_translate("Main", "Use Local Tinydb instead"))
self.lblip.setText(_translate("Main", "IP:"))
self.lblPort.setText(_translate("Main", "Port:"))
self.leLocalDBName.setText(_translate("Main", "tiny.db"))
self.lblBucket.setText(_translate("Main", "Bucket Size:"))
self.pbPages.setFormat(_translate("Main", " %v / %m"))
self.lblCooldown.setText(_translate("Main", "Cooldown:"))
self.lblPages.setText(_translate("Main", "Pages Queried:"))
self.pbBucket.setFormat(_translate("Main", " %v / %m"))
self.pbCooldown.setFormat(_translate("Main", " %v sek"))
self.lblDatabase.setText(_translate("Main", "Database"))
import st_rc

1077
UX.ui Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 794 B

BIN
rsc/favicon_io/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1 @@
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}

7
st.qrc Normal file
View File

@ -0,0 +1,7 @@
<RCC>
<qresource prefix="rsc">
<file>rsc/Very-Basic-Cancel-icon.png</file>
<file>rsc/favicon_io/android-chrome-192x192.png</file>
<file>rsc/favicon_io/favicon.ico</file>
</qresource>
</RCC>

793
st_rc.py Normal file
View File

@ -0,0 +1,793 @@
# -*- coding: utf-8 -*-
# Resource object code
#
# Created by: The Resource Compiler for PyQt5 (Qt v5.15.2)
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore
qt_resource_data = b"\
\x00\x00\x07\xdd\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3\x3e\x61\xcb\
\x00\x00\x07\xa4\x49\x44\x41\x54\x78\xda\xed\x9d\x81\x95\xdc\x34\
\x10\x86\xff\xab\x80\x50\x01\x9b\x0a\x80\x0a\x70\x2a\x48\xa8\x20\
\xba\x0a\xa0\x03\xf6\x3a\x08\x15\x20\x2a\x20\xa9\x00\xa7\x02\x2e\
\x15\xe0\x54\x40\xa8\x00\xfc\xc7\x76\x9e\x77\xcf\xde\xb5\x6c\x49\
\x33\xf2\xce\xf7\x9e\x72\xef\x25\x97\x5d\x79\xf5\xad\x34\x1a\x4b\
\xf2\x1d\x6e\x93\x1f\x66\xfe\xfe\xbd\x74\xc5\x72\x73\x27\x5d\x81\
\x04\x7c\xdb\x96\x43\x5b\xbe\xeb\x7f\x8e\x4b\x08\xcd\x59\x79\xec\
\x7f\x7e\x90\xbe\xc0\x98\x94\x2e\xc0\x57\x6d\xa9\xd0\x35\x76\xd5\
\x97\x1c\xd4\x7d\x79\xec\x7f\xfe\x2b\xfd\x41\xac\xa5\x44\x01\xbe\
\x69\xcb\xab\xbe\x54\xd2\x95\xe9\xa9\xdb\xf2\xb6\x2f\x1f\xa5\x2b\
\x13\x42\x29\x02\x0c\x8d\xee\xd0\x7d\xdb\x35\xc3\x5e\xc1\xa3\x10\
\x19\xb4\x0b\xf0\x12\x5d\xa3\xbf\x92\xae\xc8\x4a\x28\x81\x6f\xcb\
\x3b\xe9\x8a\xcc\xa1\x55\x80\xd7\x6d\x39\x22\x3c\x70\xd3\x4a\xd3\
\x5f\xcf\xef\xd2\x15\x39\x47\x9b\x00\x3f\xa1\xfb\xa0\x9e\x49\x57\
\x24\x11\x9f\xfa\xeb\xfb\x55\xba\x22\x03\x5a\x04\xd8\xdb\x37\xfe\
\x1a\x0d\x94\xf4\x08\xd2\x02\x30\x21\xf3\x06\xfa\x03\xbb\x54\x30\
\x60\xfc\x19\x82\x09\x28\x29\x01\x38\x7f\x67\xc3\x3b\xa9\x0b\x57\
\x86\x47\x27\x42\xf6\x7c\x82\x84\x00\x2f\xfb\x0b\xde\xeb\x38\xbf\
\x16\xc6\x07\x0e\x99\x67\x0c\x39\x05\xb0\x6f\xfd\x32\x3c\x32\xf6\
\x06\xb9\x04\x60\x7e\x9e\x73\xe2\x43\xa6\xf7\x2b\x9d\x06\x5d\xee\
\x23\xf9\x7d\x87\x1c\x02\x30\xc2\xe7\x37\xdf\xba\xfc\x30\x38\x24\
\xb0\x27\x48\x3a\x53\x48\x2d\xc0\x6f\xb0\x2e\x7f\x2b\xbe\x2d\xf7\
\xa9\x5e\x3c\x95\x00\x36\xde\xc7\xc5\x23\x51\x5c\x90\x42\x00\x36\
\x7e\x8d\xdb\x9d\xdb\xa7\x82\x39\x83\x0a\x91\x25\x88\x2d\x80\x35\
\x7e\x5a\xa2\x4b\x10\x53\x00\x6b\xfc\x3c\x44\x95\x20\x96\x00\xd6\
\xf8\x79\x89\x26\x41\x0c\x01\xac\xf1\x65\x88\x22\x41\x0c\x01\x6c\
\xaa\x27\x87\xc7\xc6\x29\xe2\x56\x01\xac\xf1\xe5\xf1\xd8\x20\xc1\
\x16\x01\x5e\xf7\x6f\x6e\xc8\xe3\xb0\x32\x63\xb8\x56\x00\xe6\xf6\
\x6b\x58\x7a\x57\x0b\x4c\x1b\x57\x58\x71\xef\x60\x8d\x00\x0c\xfa\
\x18\x80\x1c\xa4\xaf\xda\x38\xa1\x41\x17\x88\x07\x05\x85\x6b\x04\
\xb0\x71\x5f\x2f\x1e\x81\xf1\x40\xa8\x00\x5c\xcc\xf1\x56\xfa\x2a\
\x8d\x8b\xf0\x36\xf2\xe2\x45\x25\x21\x02\xb0\xeb\x6f\x60\xe3\xbe\
\x76\x18\x0f\x1c\xb0\x70\x28\x08\x11\xc0\xba\xfe\x72\xf0\x58\x38\
\x14\x2c\x15\x80\xab\x77\x6b\xe9\xab\x32\x82\xa8\xb0\x60\xb5\xf1\
\x52\x01\xfe\x82\xa5\x7a\x4b\x83\x33\xb5\xef\xaf\xfd\xd2\x12\x01\
\x2c\xe1\x53\x2e\x0e\x57\x12\x44\x4b\x04\xf8\x1b\xba\xe6\xfc\x35\
\xba\xde\x48\x5b\x30\xca\xe0\x6b\xb8\x41\xa3\x85\xa6\x2d\xcf\x2f\
\xfd\xc2\x35\x01\xb8\x57\xef\x8d\xf4\x55\xf4\x78\x9c\x2e\x8b\xd2\
\x54\x37\xd6\x6b\xd8\xef\xa7\x6d\x39\xdc\xb1\x2d\x0f\x73\xff\x78\
\x4d\x80\x7f\xa0\xe3\x9b\xe6\x31\x1d\xd5\x6a\x18\x9e\x1c\xa6\xbb\
\x59\x2d\xb3\xa6\x8b\xd3\xc2\x4b\x02\x68\xf8\x70\x81\xeb\x53\x1a\
\xc9\x7a\x3a\x5c\x1e\x63\xb5\x48\x30\x5b\xcf\x4b\x02\x68\x18\xfb\
\x3d\x96\xcd\x67\x25\x24\x70\x58\x76\x07\x4e\x83\x04\x0d\x66\x62\
\x81\x39\x01\x34\xa4\x7c\x3d\xc2\xf2\xda\x39\x25\x70\x08\xbb\xfd\
\xaa\x41\x82\xc9\x14\xf1\x9c\x00\x7f\x40\xf6\x58\x16\x8f\x75\x8b\
\x1c\x72\x48\xe0\xb0\xee\xde\xbb\xb4\x04\xfc\x42\xff\x78\xfe\x97\
\x53\x02\xf0\x40\xa6\x46\xb0\xa2\x1e\xdb\x96\x39\xa5\x94\xc0\x61\
\xdb\x56\x2d\x69\x09\x0e\x38\x3b\xb8\x6a\x4a\x00\xc9\xe9\x95\x47\
\x9c\x6d\x50\x29\x24\x70\x88\xb3\x4f\x4f\x52\x82\xf1\x74\xf5\x33\
\x53\x02\x48\xa6\x7d\x39\xe5\x8c\xb5\xe9\x21\xa6\x04\x0e\xf1\x36\
\x69\x32\x4f\xf0\x29\xd2\x6b\x85\xf2\x24\x3d\x7c\x2e\x80\x64\xf7\
\x5f\xb7\xe5\x45\xe4\xd7\x8c\x21\x81\x43\xfc\x1d\xba\x7f\x42\x2e\
\x63\x78\xc0\x68\x18\x38\x17\x40\xb2\xfb\xe7\xb7\xe2\xeb\x04\xaf\
\xbb\x45\x02\x87\x34\xdb\xb3\x25\x13\x6c\x27\xc3\xc0\xb9\x00\x92\
\x66\x3e\xa9\x5c\x44\xd6\x48\xe0\x90\xa6\xf1\xa5\x53\xd8\x35\x46\
\x3d\xed\x58\x00\xc9\xb1\x69\x8c\x43\x9a\x0f\x3e\x44\x02\x0d\x75\
\x48\xc9\x97\x58\x6b\x2c\x80\x86\xe4\xcf\x80\x83\x5c\x03\x48\xbe\
\x77\x2e\xbe\x24\x85\xc6\x02\xfc\x82\xee\xce\x91\x16\x1c\xf2\x37\
\x84\xc4\x7b\x4a\x70\x44\x7f\x87\x70\x2c\x80\xf4\xf8\x3f\x85\x43\
\xbe\x06\xc9\xf9\x5e\xd2\xd4\xe8\xe3\x80\xb1\x00\xff\x49\xd7\x6a\
\x06\x87\xf4\x0d\x93\xe3\x3d\xb4\x71\xf7\xe5\x0f\x74\x5b\xbd\x1e\
\xa5\x6b\x74\x01\x87\x74\x0d\x84\x84\xaf\xed\x13\x7d\x1e\x31\x60\
\xb2\xef\xc3\x20\x80\xa6\x00\x70\x0e\x07\x05\x87\x2b\x2f\x44\x7b\
\xe3\x93\xcf\x81\xe0\x20\x80\xb6\x00\x70\x0e\x07\xfd\x12\x94\xd0\
\xf8\xe4\xd8\x96\x87\x41\x00\xe9\xbb\x54\x21\xb0\x9e\x5a\x25\x28\
\xa5\xf1\xd1\xd7\xf3\x7e\x10\x40\xe3\x0c\xe0\x12\x0e\xfa\x24\x28\
\xa9\xf1\x49\xdd\x96\x17\x83\x00\x1a\x96\x7f\x85\xe2\xa0\x47\x82\
\xd2\x1a\x9f\x34\x6d\x79\x3e\x08\xa0\x75\x0a\x78\x0d\x07\x79\x09\
\x4a\x6c\xfc\x81\xbb\xd2\x05\x20\x0e\x72\x12\x94\xdc\xf8\x64\x17\
\x02\x10\x87\xfc\x12\x94\xde\xf8\xe4\x19\x05\xd8\xcb\xce\x5f\x87\
\x7c\x12\xec\xa1\xf1\x49\xb5\x27\x01\x88\x43\x7a\x09\xf6\xd2\xf8\
\x64\x77\x02\x10\x87\x74\x12\xec\xa9\xf1\x89\x09\x10\x88\x09\xa0\
\x1c\x07\x1b\x02\x42\xd8\x95\x00\x0e\x16\x04\x86\x52\xd9\x34\x70\
\x3d\x7b\x90\xe0\xd9\x1e\x04\x70\xb0\x44\xd0\x5a\x8a\x4f\x04\x39\
\x58\x2a\x78\x0b\x77\x76\x33\x28\x0e\x25\x4a\xd0\x60\x74\x33\xc8\
\x6e\x07\x6f\xa7\x34\x09\x6a\x8c\x6e\x07\xdb\x82\x90\x38\x94\x24\
\x01\xeb\x79\x6f\x4b\xc2\xe2\x53\x8a\x04\x47\x8c\x96\x84\xd9\xa2\
\xd0\xb8\x94\x20\xc1\xc9\xa2\x50\x5b\x16\x9e\xe6\xb5\x7d\xa2\xcf\
\x23\x06\x27\xcb\xc2\x89\xd6\xa9\xa0\x83\x6d\x0c\x49\xc1\xc9\xc6\
\x10\xa2\x71\x26\xe0\x60\x5b\xc3\x52\x50\x63\x62\x6b\x98\xb6\x40\
\xd0\xc1\x36\x87\xa6\xe2\x88\x89\xcd\xa1\x9a\x02\x41\x07\xdb\x1e\
\x9e\x92\xc9\xed\xe1\x76\x40\x84\xae\x3a\xa4\x64\xf2\x80\x08\x22\
\x1d\x07\xd8\x11\x31\xe9\xa9\x31\x73\x44\x8c\x74\xe5\xec\x90\xa8\
\x3c\x5c\x3c\x24\xca\x8e\x89\x7b\x8a\xc3\x0d\x1d\x13\x47\xec\xa0\
\xc8\xa7\x38\xdc\xc8\x41\x91\xc4\x8e\x8a\x9d\xc6\xe1\x46\x8e\x8a\
\xb5\xc3\xa2\xe7\x71\xb8\x81\xc3\xa2\x89\x1d\x17\x3f\x8f\xc3\xce\
\x8f\x8b\x27\x1a\x92\x42\x1e\xf6\xc0\x88\x98\x04\x3d\x30\x82\x68\
\x58\x26\xe6\x61\x8f\x8c\x89\x41\x83\xc0\x47\xc6\x10\x2d\x59\x2b\
\xd6\xc1\x1e\x1a\x95\xa8\x9e\xf6\xd8\xb8\xed\x38\xec\xf4\xb1\x71\
\x44\x3a\x6d\x39\xc6\xc3\x1e\x1c\xb9\x86\x23\x36\x3c\x38\x92\x68\
\x88\x05\xc6\xd4\xb0\x47\xc7\x2e\xa5\xc1\xc6\x47\xc7\x12\x0d\xdd\
\xac\xb1\x0e\x87\x08\x0f\x8f\x26\xf6\xf8\xf8\xf2\x88\xf6\xf8\x78\
\xb2\x97\x1d\xc4\xb7\x44\xd5\x96\xf7\xd7\x7e\x69\xa9\x00\x44\x4b\
\x54\x6b\x5c\xc7\x63\x61\x12\x2d\x44\x00\x46\xb7\x0d\xf4\x05\x5f\
\xc6\x29\x17\xa7\x7d\xe7\x84\x08\x40\x34\xa4\x88\x8d\xcb\x4c\xa6\
\x7c\xe7\x08\x15\x80\xd8\x50\xa0\x17\x8f\xc0\x9b\x68\x6b\x04\xe0\
\x50\xc0\x08\xf3\x20\x7d\xb5\xc6\x09\x0d\xba\x99\x5a\xd0\x82\x9a\
\x35\x02\x10\x6e\x25\xab\x61\xf1\x80\x16\x38\xee\x57\x6d\xf9\x10\
\xfa\x1f\xd7\x0a\x40\x2c\x41\xa4\x07\x87\x95\x0b\x55\xb6\x08\x40\
\x2c\x1e\x90\xc7\x63\xc3\x0a\xaa\xad\x02\x10\x93\x40\x0e\x8f\x8d\
\x6b\x28\x63\x08\xc0\xa0\xb0\x86\xa5\x8a\x73\x33\xdc\x78\xda\xb4\
\x8a\x3a\x86\x00\xc4\x24\xc8\x4b\x94\xc6\x27\xb1\x04\x20\x26\x41\
\x1e\xa2\x35\x3e\x89\x29\x00\x31\x09\xd2\x12\xb5\xf1\x49\x6c\x01\
\x88\x49\x90\x86\xe8\x8d\x4f\x52\x08\x40\xb4\x2d\x8b\x2a\x1d\x8f\
\xd3\xe5\x70\xd1\x48\x25\xc0\x80\x4d\x11\xb7\xe3\x11\x67\xbb\xdc\
\x24\xa9\x05\x20\xcc\x18\xb2\x37\xb0\xb4\x71\x18\x4c\xef\xf2\x5b\
\x9f\xf4\x68\xbc\x1c\x02\x10\xde\x3b\xe0\x6d\xe4\x43\xa6\xf7\x2b\
\x9d\x06\xdd\x6d\xdd\xe0\xdc\x7e\x28\xb9\x04\x20\x16\x17\x2c\xc3\
\x23\xd1\x78\x3f\x45\x4e\x01\x06\x5e\xf6\x17\x69\x43\xc2\x29\xec\
\xf2\x1d\x02\x16\x73\xc4\x40\x42\x00\x62\xbd\xc1\x29\x1e\x19\xbf\
\xf5\x63\xa4\x04\x18\xe0\x6a\x63\x8a\x70\xab\x39\x03\xce\xed\xd9\
\xf0\x57\x57\xef\xa6\x42\x5a\x80\x01\xce\x14\x8e\xb8\x9d\x20\xb1\
\xe9\xaf\x57\xfc\xf0\x6b\x2d\x02\x0c\xf0\xb4\x52\x7e\x23\xf6\x1a\
\x1f\x70\x9c\x67\x8f\xf7\xb0\xf5\x85\x62\xa1\x4d\x00\xc2\xf8\x80\
\x53\xa0\x23\xf6\xd3\x23\x34\xfd\xf5\x70\x2a\x9c\x7d\x9c\xbf\x84\
\x46\x01\xc6\x70\xc6\xe0\x20\x7b\x5c\xcd\x16\xd8\xe0\x1e\x99\x23\
\xfb\x10\xb4\x0b\x30\xc0\x83\xab\x28\x81\x83\xfe\x80\x91\x81\x9d\
\x47\xd7\xf8\x1f\xb7\xbd\x54\x7a\x4a\x11\x60\xcc\x20\x03\x4b\x25\
\x5d\x99\x9e\x1a\x5d\x83\x17\xd1\xe8\x63\x4a\x14\x60\x0c\xe3\x85\
\x0a\x5d\xaf\x50\x21\x9f\x10\x75\x5f\x1e\xfb\x9f\xaa\xc6\xf5\x10\
\x4a\x17\x60\x0a\xde\x77\x38\xa0\x93\xe2\x70\x56\x42\x68\xce\xca\
\x63\xff\x33\x79\x7e\x3e\x27\x7b\x14\xe0\x1a\xec\x35\xe6\xe2\x08\
\x36\x72\xb1\xdf\xe6\x35\xfc\x0f\xe9\xe0\xf6\x28\xac\xb2\x3d\xb6\
\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
\x00\x00\x07\x69\
\x00\
\x00\x3c\x2e\x78\x9c\xed\x9a\x6b\x88\x55\x55\x14\xc7\xd7\xa8\x43\
\x0e\x39\x3a\x6a\x2a\x5a\x36\x63\x3e\xb2\x30\x67\x2a\x94\x1e\x96\
\x92\x54\x24\x6a\x44\x7d\x90\x40\x91\xd2\x30\xd2\x4a\x2d\xec\x1d\
\xf4\x32\x18\x88\xe8\x61\x9a\x92\xa8\x04\x46\x90\x25\xa5\xf5\x21\
\xf4\x4b\x06\x69\x54\x9a\xa9\x61\x6a\x3e\x6a\x9a\x71\x7c\xe5\xd8\
\x8c\xe3\xb8\x5b\x7f\xf7\xda\xdc\x33\xfb\xee\x7d\xce\xb9\xf7\x9c\
\x3b\x57\xc1\x05\x3f\x66\xee\x3d\x7b\xef\xf5\xbf\xe7\xec\xc7\xda\
\xeb\x6c\xa2\x12\xea\x4c\x15\x15\xc4\x7f\xab\x68\x56\x17\xa2\xd1\
\x44\x54\x55\xa5\x3f\x0f\xef\x49\xf4\x11\x7f\x57\x53\x23\xd7\x87\
\x11\x6d\xea\x43\x34\x9c\xcb\x54\xa0\x1c\xe9\xef\x73\xb0\x6a\x66\
\x11\xb3\x8b\x69\x16\x76\xc9\x77\xd5\x21\xf5\xca\x98\x25\x4c\x1b\
\xa3\x3c\xb4\x49\x99\xae\x56\x5d\x7c\xde\x18\x52\xcf\x66\xa3\xd5\
\xc6\x92\x1c\xea\x1a\x96\x48\xdd\x9a\x8c\xe6\xfb\x99\x35\xcc\x46\
\xe6\x15\xa6\x54\xca\xde\xcb\xac\x62\x66\xda\xbf\xa5\x46\xee\x0b\
\x7f\x2e\x61\x4e\x4a\xdd\xdd\x8c\x62\xe6\x4b\xd9\x17\xe4\xf3\x72\
\x5b\x03\xea\xee\xcc\x7c\x1e\x21\x7f\x9f\x93\xf2\x9f\x46\xd5\x47\
\xdd\x96\xcc\xe7\x2b\x99\x6f\x98\xb3\x52\xbe\x36\xaa\x7e\x4b\xfb\
\xfa\x3f\x49\xb9\x36\xe6\x13\xa6\x3c\x4e\x7d\xd1\x5f\x1e\xa8\x7b\
\x2b\xd3\x29\x70\xff\x42\xf5\x07\xee\xdf\x7e\xd1\xfe\x25\xf3\x0b\
\x33\x9e\x69\x60\x5a\xa5\xfe\x19\xa6\x99\xe9\x13\xbc\x7f\xd5\x99\
\xe7\x37\x92\xf9\x58\x9e\xc1\x3b\x4c\x6f\xf9\xfc\x99\x45\x0f\xf3\
\xfc\x4c\x7f\x4e\xd2\x7f\xd2\xe8\xbf\xb0\x5c\xc6\x4f\x19\xf9\xcd\
\x8c\x5f\xd3\x37\xcc\x33\x8a\x1a\xbf\x79\x19\xe6\x99\x2a\x66\x1c\
\xe5\x3c\xcf\xf8\xac\x9c\x99\xc2\x7c\xc8\x6c\x61\x1a\x98\xd3\x42\
\x83\x7c\xb7\x54\xca\x94\xa7\xe1\x50\x6c\x88\xb4\xdb\x44\xf1\x9f\
\x63\x93\xd4\x19\x92\xc0\x2f\x9e\x65\x2d\xb5\x1b\x87\x39\xd3\x22\
\x6d\x84\xf5\x0b\x97\x41\xf7\xd6\x04\x7e\x6d\xd0\xd6\xe0\x98\xbe\
\x31\x77\xd6\xa7\xe8\xdb\x50\x2f\x6d\x87\xd9\xe0\x02\xf9\x0e\x6a\
\xf0\xdd\x07\x3c\xa3\x34\xef\x79\xd8\xb3\x70\xf5\x87\xda\x0e\xf0\
\x6d\xa8\xb5\x7c\xa3\xbf\x39\xfa\xf9\x25\xcc\x3d\xcc\x02\xe6\x4d\
\xe6\x79\xa5\xe7\xfe\x12\x4f\xbb\x77\x32\x77\x07\xe8\xe9\xf3\xdf\
\x42\xed\xc7\xe6\xb2\xec\x32\x53\x99\x3a\x46\x39\xd8\xc4\x5c\xe6\
\x68\xb7\xd9\x2a\x37\x36\xec\x1e\x2c\x13\xdf\xdd\x29\x6b\x6e\xc1\
\xfa\xd8\xe6\xf1\x6d\x58\x9b\xd4\x7f\x93\xf8\x9e\xe2\xbe\xfe\x0f\
\x73\x84\x79\x97\x79\x82\x79\x9d\x39\x16\x68\x1b\xeb\x71\x65\x12\
\xff\x8a\x32\xf3\xb9\xe3\xda\x62\xa6\x9f\xf5\xdd\x6a\xab\xfd\xfb\
\x92\xfa\x87\xef\xcd\xee\x6b\x9d\xac\xcf\x13\x95\x8e\xe3\x82\xed\
\x4f\x4f\xea\xff\x07\xd2\x6b\x57\x48\x99\x1b\x99\xf5\x2a\x13\xbb\
\x05\xb9\x2b\xa9\x7f\xf8\x6e\xf5\x5f\x47\xbc\x79\xc6\xe1\x17\xfc\
\xa9\xf4\xf8\x4c\xe4\xbf\xd5\xef\xff\x61\x8f\x5f\x70\x98\x19\xed\
\xa8\x93\x97\x7f\xcf\xfd\xdf\xed\xf0\x7b\x9a\x59\xc1\x5c\xee\x69\
\x2f\xaf\xfb\xef\xe8\x7f\xfd\x1c\xbe\x37\x30\xc3\x23\xda\xcb\xd9\
\xff\x66\x72\x8e\xbf\x4a\xab\x9d\x16\xa6\x6b\xe0\x7a\x99\x4a\x61\
\xfe\x53\xe2\xdb\x31\xff\x74\x51\xed\xc7\x1a\xfa\xfe\x6b\xcc\x64\
\xe6\x49\x66\x07\xf3\x88\x94\xdd\xc9\x1c\x17\xec\x31\x72\x32\x70\
\xed\x5a\x97\x7f\xf8\x76\xcc\xbf\x60\x91\xe3\x19\x04\x59\x2d\xe5\
\x0e\x45\x94\x33\x8c\xb0\x7d\x9b\xf9\x17\xb6\x34\xdb\xff\xa5\x4a\
\xef\x39\x5d\xe3\x1e\xfd\x7f\x62\x52\xff\x4b\x29\x63\x9e\xf5\x17\
\x5c\xc7\x3c\xc6\xbc\xca\xbc\xac\xf4\x5e\xb8\x5b\xe0\xfa\x03\x4a\
\xaf\x95\x51\x54\x04\xdb\xb5\xd7\x5f\x58\x31\xe3\x0f\x58\xb1\xe3\
\x2f\x58\x31\xe3\x4f\x63\xc5\x8c\xbf\x8d\xa1\x6f\x6c\x4b\xd1\xf7\
\x36\xca\x7d\x2f\x56\xcc\xfd\x57\xd0\x8a\xb5\xff\xb4\xcd\xc4\x8a\
\x26\x66\x32\xb1\x83\x59\x43\xcd\x5a\x62\xe6\xd4\x8b\x16\xc3\x90\
\x27\xc1\xa0\x98\x4e\xa9\xe5\x49\x5c\x56\xc2\xf4\x62\x86\x32\x13\
\x98\x85\xcc\x3a\x66\x07\xd3\x48\x99\x3c\x0a\xfe\x47\x4e\xe8\x6b\
\x29\x33\x99\x19\x26\x75\x4b\x0a\x25\x2e\xc4\x3a\x93\xce\x4d\xcd\
\x65\x3e\x67\x0e\x30\x67\x29\xfe\x38\x40\xd9\x43\x52\xf7\x29\xe6\
\x06\x69\xb3\x23\x6c\x00\xb3\x92\xa9\x23\x7d\x6f\x93\xce\x61\x68\
\xa3\x5e\xda\xac\x2c\xa0\xee\xbe\xcc\x3c\xe6\x58\x0a\x9a\x7d\x1c\
\x67\x9e\x11\x5f\x69\xf6\xab\x9b\x49\xf7\xeb\x24\x73\x76\x5c\x5a\
\xc5\xd7\xd8\x94\xb4\xcf\x64\x0e\x53\x6e\xfd\x3b\x29\xf0\x85\x31\
\x3f\x3b\x81\xee\x52\xd2\xe3\xf3\x44\x07\xea\xb6\x39\x25\x1a\xec\
\xdc\x79\x1c\x7b\x94\xf4\x7d\x2f\x96\x76\xc3\x61\xf9\x0d\xb9\xd8\
\x0c\xca\x2d\x2e\xe8\x88\xe7\x10\xb7\x2f\x61\xdc\x1c\x3c\x0f\x34\
\xdb\x34\x8a\xb6\xb0\x79\xa9\x07\xb3\x9e\xc2\xdf\xc9\x14\x8b\xb3\
\xa2\xad\x6f\x88\xfe\x39\x14\x9a\xf7\x29\x3a\xd0\xb6\xc0\xa3\x7d\
\x20\x45\xae\x4d\xc8\x1f\x20\x87\x32\x94\xa9\x66\x6e\x63\x6e\x51\
\x7a\x2f\x8b\xdc\x46\x59\x0c\x0d\xd8\xe3\x0e\x70\x80\xbc\x87\x9d\
\x1b\x74\x82\x35\xae\xd2\xd2\x8e\xd8\x63\xb1\xbf\x0e\xda\xbd\x5e\
\xe9\x77\xcc\xdf\x32\x07\x95\xce\x39\x99\x1c\x48\x13\xb3\x95\x79\
\x5b\x7e\x57\x98\xff\x69\xcc\x77\xcc\xf7\x16\xef\x33\xbd\xe2\x3e\
\x87\x55\xd4\x3e\x5e\x42\xfc\xb4\xcf\x5f\x1e\x39\xbb\xbf\x94\x3f\
\x67\x68\xc0\xf5\xbf\x99\xdb\x43\x7c\x3f\xeb\x69\x67\x83\xca\xce\
\x0b\x7b\xa9\x17\xcd\x30\x8c\xe7\xa7\xc9\x1b\x1b\xe0\x79\x47\xe5\
\xdc\x6d\xf6\xaa\xec\x1c\x78\xaa\xfa\x5b\x45\x33\xb4\x77\x23\x1d\
\xc7\x86\x94\xb7\xf3\xf3\xa7\x98\x46\x95\x9d\x97\x0b\xe6\xf5\xe6\
\x2a\x77\x7f\x4e\x45\xbf\x12\xcd\xd8\x3f\xf4\x27\x1d\x8b\x87\x94\
\xfd\x59\x7c\xe0\xef\x83\xcc\x20\xa5\x73\xad\x57\x31\x0b\x95\xee\
\xff\x41\x2d\xf8\x8d\x38\x0b\x51\xe1\x68\x2b\x35\xfd\xd0\x8c\x3d\
\xd0\x58\x8a\x8c\xcd\xa0\xe5\x2d\xa6\xbb\xe3\xda\x30\xe6\x0f\x87\
\x9e\x2d\xcc\x15\x85\xd4\x0f\xcd\x93\x98\x17\xa3\xcb\xde\xe1\xd1\
\x8e\xf7\x6d\x38\xeb\xd2\xe0\xd0\xb3\x5b\x9e\x4f\xc1\xf4\x83\x37\
\x98\x2f\x72\xac\x13\x60\x02\xb3\x47\xb9\xc7\x37\xc6\xf0\x90\x42\
\xeb\xc7\x3e\x61\x7b\x6e\x75\xb0\x46\xe1\xbc\x0c\xfa\x94\x2b\x07\
\x6c\xf8\x91\x19\x58\x68\xfd\xc8\x09\x34\xc6\x2f\x7f\x35\xf3\x9e\
\xd2\xef\x10\xc3\xb4\xe3\x1a\xde\xa7\x94\x3b\xda\x48\x55\xff\x51\
\x8a\xbd\x07\x1f\xc3\x6c\x57\xf1\xd6\x82\x13\x4a\x8f\x0b\x57\x3b\
\xa9\xea\x6f\x8d\xa7\xbf\xaf\xd2\x6b\x7e\x9c\xb5\xeb\x5f\xa5\xe7\
\xaa\xce\x1d\xa1\xdf\xe4\x96\x22\xca\xcd\x8e\x71\xdf\xd1\x67\x7e\
\x93\xb2\xa5\x21\x6d\xa5\xde\x7f\x7e\x8d\x2e\xb7\x37\x42\x3b\xfa\
\x0b\xd6\x31\x9c\xc7\x8b\x8a\x21\x53\xd5\x8f\x3c\xdf\x9a\xf0\x32\
\x95\x11\xba\x71\xce\x71\x50\x0e\x3e\x53\xd5\xff\x15\x45\xae\x5f\
\xa3\x3c\xda\xd1\x9f\x1e\x57\xfa\x7d\x5a\x2e\x3e\x53\x5f\xbf\xc6\
\x50\x68\xfc\x30\xd2\xa3\xff\xa8\x72\x8f\x51\xc4\x45\x05\x8f\x9f\
\x95\x68\x46\xce\x18\xf1\xdb\x01\x7f\x39\xc4\xcf\xff\x39\xfc\x61\
\xbc\xce\x50\xba\xef\x60\x9d\x42\x1c\xf4\x90\xd2\xeb\xf1\x8a\x40\
\x7d\xe8\xaa\x0b\x70\x42\xb9\xd7\x0e\xc4\xac\xf5\x56\x59\xfb\x1c\
\x44\x3b\xa0\x19\x79\xef\x18\xf1\xf3\x1a\xcf\x33\xc0\x39\xd3\x5d\
\x4a\xaf\xb5\xfb\x03\xf7\xf5\x77\x95\x79\x17\xba\xd5\x53\x37\x0e\
\x93\xc2\xf4\x9b\xf8\x19\x86\xfc\x50\xb3\xbf\x6c\x8d\xf4\x97\xb8\
\x7e\xf1\x1e\x79\x54\x21\xf5\x9f\x16\xcd\x26\x97\x82\x5c\xfe\x1e\
\xbf\x7e\xec\xdb\xe7\xcb\x33\x0d\x8b\x1b\xcc\xfa\x85\x33\xbb\x66\
\x2f\x5b\x10\xfd\x75\xd4\xfe\x6c\x2c\xf6\xc2\x1f\x84\xf7\x21\x9c\
\x89\xc1\xbb\xf9\x65\xa2\x29\x78\x2e\x01\x7b\xf9\xbd\xa2\x1b\x67\
\xc6\x83\x73\xd2\x3a\xa5\xf7\x07\xf9\x30\xde\xa7\x67\x25\x65\xbf\
\xef\xe8\xc7\x1c\x89\x1e\xf7\xf8\x1d\xc8\x75\x60\x6f\x82\x3c\xca\
\x35\x4c\x95\xd2\x73\x07\x74\xdb\x67\xf0\x7a\xcb\xb5\x7c\xb0\xcf\
\x11\x9d\x03\x39\x9e\xfe\xe4\xb6\x59\xd4\x31\x39\xfe\x7c\x81\xb6\
\x79\x1e\xed\x30\xe4\x0f\xb1\x27\x38\x5f\xf3\x87\xd0\x16\x96\x3f\
\x84\xe1\x5d\x4b\xc8\x7a\x50\x34\x90\x47\xbf\x29\x42\xbb\xb1\xa9\
\xa4\xf3\x74\xc5\xd6\x6c\xc0\x3b\x94\x19\x31\xb5\x1b\xbb\x90\xdf\
\x5f\xc0\xba\xc8\x6f\x28\xe6\x73\x68\x12\x0d\xa5\x79\xe8\x37\x36\
\x8d\xf4\x78\xe8\xc8\x31\x0d\x5f\xc8\x4f\xcd\x4c\xa0\x3b\x68\x17\
\xf2\xfb\x53\x63\x98\x5b\xb1\x3e\xc4\x58\xe3\xf2\x06\x6b\xd3\x1c\
\xf1\x55\x28\xc3\x3a\x8d\x58\x03\xf1\x52\x48\xcc\x17\x1b\x3c\xd3\
\x7d\xd2\xe6\xc0\x02\xea\x0e\xda\x85\x7c\x7e\xc3\x36\xec\x1f\x10\
\x8f\x60\x1f\xf7\x12\xe9\xfd\x34\x72\x02\xe8\x67\xe6\x1c\x14\xfe\
\x47\x9e\x6f\xad\x94\x19\x27\x75\x50\xb7\x18\xe7\x67\x2e\xda\x45\
\x3b\x67\xff\x03\x81\x03\x59\xe1\
\x00\x00\x1c\xd1\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
\x00\x00\xc0\x00\x00\x00\xc0\x08\x06\x00\x00\x00\x52\xdc\x6c\x07\
\x00\x00\x1c\x98\x49\x44\x41\x54\x78\x5e\xed\x9d\x09\xd4\x76\x55\
\x55\xc7\xff\x66\x6a\x5a\x0c\x2a\x45\x5a\x80\x05\x98\x21\xa6\x06\
\xc8\xa4\x12\x0e\x90\xe2\xb8\xc4\x40\x32\x4d\xc5\x21\x8c\xca\x01\
\x1c\x50\xd4\x4c\xa1\xc2\x21\x1c\xc3\x34\xcd\x14\x48\x4b\x11\x41\
\x12\x01\xd3\xc2\xb4\xc4\x59\xc1\x09\x45\x43\x4c\x45\xb0\xc0\x44\
\x1b\xd6\xef\xfd\xf6\x7d\x7b\xbe\xf7\x7d\x86\x73\xee\x73\xa6\x7b\
\x9f\xbd\xd7\x7a\xd6\xb7\xd6\xf7\xde\x7b\xcf\x39\xfb\x9c\x7d\xce\
\x3e\x7b\xf8\xef\x1b\xc9\x69\x19\x0e\xdc\x58\xd2\x4d\x25\xdd\xcc\
\xfe\xbd\x89\xa4\x9f\x92\xb4\x9b\xa4\x5d\x25\xdd\x56\xd2\xcf\x4a\
\xda\xd1\xfe\xbd\xb5\xa4\x9f\x90\xc4\x73\xdd\x7b\xb4\xff\x03\x49\
\x3f\x94\x74\x83\xa4\xff\x92\x74\xb5\xa4\xab\xec\xf7\x4d\x49\x57\
\x4a\xfa\xa2\xa4\x2f\x49\xfa\x0f\x7b\x96\xe7\x79\x8f\xdf\x7f\x2f\
\x33\x88\x55\x7e\xf7\x46\xab\x3c\xf8\x1e\x63\x67\xd1\x76\x8b\x7b\
\x67\x49\xbb\x48\xda\x49\xd2\xcf\x4b\xfa\x19\x49\x3f\x2d\x69\x3b\
\x49\x3f\xd6\xe3\xdb\x21\xaf\xfc\x8f\xa4\x6b\x25\x7d\xcb\x7e\x5f\
\x97\x74\xc5\xc4\xaf\x13\x12\x84\xc2\x29\x80\x03\x2e\x00\x8b\x99\
\xc4\xa2\xbe\x8f\xa4\x7b\x48\xda\x47\x12\xbb\xf8\xb6\x92\x7e\xd2\
\x76\xfe\xda\x3c\xfc\x5f\x3b\x05\xae\x93\xf4\x3d\x3b\x3d\x3e\x2a\
\xe9\xfd\x92\x2e\x94\xc4\x09\xe2\x34\x83\x03\xb5\x27\xaf\xb5\x89\
\x41\x95\x41\x85\xd9\x41\xd2\x61\x92\x1e\x2a\x69\x7f\x49\xa8\x3a\
\x43\x24\x54\xa3\x8f\x48\x7a\xbb\xa4\xf3\x24\xfd\xbb\xa9\x50\x7e\
\x42\xd8\x6c\xba\x00\x6c\xd1\xc7\x77\x97\xb4\xaf\xa4\x03\x24\xed\
\x25\x69\x0f\xdb\xdd\x87\xb8\xe8\x67\xf5\x99\x45\x7f\x99\x09\xc4\
\x3f\xdb\xbf\x97\xda\x7d\x62\x4c\xe3\x8c\x1a\xcb\x2a\x0b\x00\xbb\
\x3d\x3b\xfc\x23\x6d\xc1\xa3\xea\xa0\xd6\x8c\x9d\x27\xa8\x4c\xd7\
\xdb\x1d\xe2\xd3\x92\xce\x94\xf4\x36\x53\xa3\xa2\x16\xcf\x18\x1e\
\x1e\xfb\x64\x4f\xce\x11\x63\xbd\x85\x5d\x56\x8f\x92\x74\x8c\x59\
\x69\xc6\x30\x8f\xcb\x8e\x01\xd5\xe8\x54\x13\x06\xac\x4f\xdc\x27\
\x10\x94\xd1\xd3\xaa\x08\xc0\x6d\x24\x3d\x40\xd2\xa1\x92\x0e\x32\
\x1d\x7f\xf4\x93\xdb\x63\x80\x98\x5f\x3f\x28\xe9\x1c\x49\xef\x91\
\x84\x95\x69\xd4\x34\x76\x01\x60\xe1\x3f\x5e\xd2\x23\xcc\x54\xb9\
\x0a\x2a\xce\xb2\x0b\x96\x9d\x9f\x13\xe0\xdf\x4c\x35\x7a\xb5\xa4\
\x6f\x2c\xfb\xd1\x56\xdf\x1f\xa3\x00\xfc\xb8\xa4\x5b\x99\x6e\x7f\
\xbc\x39\xa1\x5a\xe5\xff\x10\xfa\x85\x19\xf5\xe5\x92\xfe\x52\xd2\
\x77\x24\xfd\x68\x08\x9d\x0e\xed\xe3\xd8\x04\xe0\x4e\x92\x8e\x94\
\x74\xb8\xa4\xdb\x87\x32\xc1\x9f\x0b\xe2\xc0\x97\x25\x9d\x61\x26\
\xd5\x8f\x05\xbd\x31\x80\x87\xc6\x22\x00\x78\x61\x8f\x93\xf4\x70\
\xbb\xd8\x62\xda\x74\x4a\xcf\x01\xc2\x2f\x50\x87\xce\x92\xf4\x47\
\xe6\x57\x48\xdf\x4a\xc1\x2f\x0e\x5d\x00\xb6\x31\xdb\x3d\x47\xf4\
\x2f\xad\x80\x09\xb3\xe0\xd2\x98\xdb\x14\xf7\x04\x7c\x0a\xcf\x94\
\x74\x91\x79\xa0\x5b\xe9\x5b\x54\x3f\x86\x2a\x00\xec\xf0\x0f\x94\
\xf4\x18\x49\xbf\x2e\x09\xbd\xdf\xa9\x3c\x07\xb8\x0f\x5c\x20\xe9\
\x34\x49\xe7\x5a\x20\x5f\xf9\x5e\x2c\xd1\xe2\x10\x05\x00\x87\xd5\
\x49\xe6\xc4\xba\xa5\xef\xfa\x4b\xcc\x7e\x9a\x57\x39\x0d\x30\x9f\
\x62\x3a\x45\x0d\xc5\xa7\x30\x18\x1a\x92\x00\x10\x46\xcc\x6e\x8f\
\xba\x43\x14\xa6\x53\x7b\x1c\xe0\x7e\x80\x83\xf1\xbd\xe6\x6d\x6e\
\xaf\x87\x1b\x7a\x34\x14\x01\xb8\xb3\xa4\xdf\x37\xeb\x0e\x7a\xbf\
\x53\xbb\x1c\x20\x5f\x81\x4b\xf2\xcb\x24\x5d\xd2\x6e\x37\xb7\xf4\
\xac\x75\x01\x20\xae\xfe\x08\x49\x27\x9a\x59\x33\x57\x9c\x7d\xeb\
\xf3\x34\xb4\xfe\x91\xb7\x80\xd9\x94\x79\x23\xce\xa8\x59\xdf\x41\
\xcb\x02\xb0\xbd\xa4\x63\x25\x3d\xdb\xb2\xa8\x86\xb6\x08\xbc\xbf\
\x5b\xb2\xdb\x5e\x2a\xe9\x14\x49\xdf\x6d\x91\x21\x2d\x0a\x00\xbb\
\xfc\xdd\x6d\xf7\xb8\x77\x8b\x4c\xf3\x3e\x45\x73\x80\xf8\xa2\x13\
\x24\x5d\xdc\x5a\xfa\x66\x8b\x02\x40\xd0\x1a\x91\x89\x5c\x74\x5d\
\xe5\x89\x5e\x6b\x4d\xbe\x80\x4a\xf4\x15\x49\xcf\x30\x4f\x72\x33\
\x9d\x6c\x49\x00\x08\x54\x7b\xb2\xa4\x17\x0f\x38\x03\xab\x99\x89\
\x6d\xb4\x23\x64\xa8\xbd\xc0\xd4\x22\x02\xee\xaa\x53\x2b\x02\x40\
\x28\xc3\xc9\x16\xb5\x89\xb9\xd3\x69\xbc\x1c\x00\xf9\xe2\x2d\xa6\
\xe2\x56\x0f\xb7\x6e\x41\x00\x7e\x4e\xd2\x5f\x5b\x48\x03\xa8\x0b\
\x4e\xe3\xe7\x00\x42\x40\xae\x32\x61\xea\x55\x85\xa0\xa6\x00\xd0\
\xf6\x5d\x24\xfd\x95\xa4\x3d\xc7\x3f\xe7\x3e\xc2\x29\x1c\x00\xe7\
\x88\xc8\xdd\x4f\x4a\xe2\x9e\x50\x9c\x6a\x0a\xc0\x3d\x25\xbd\xd2\
\x16\x7f\xcd\x7e\x14\x67\xba\x37\xb8\xce\x01\xc2\x28\xc8\x4b\x7e\
\xba\x79\x8f\x8b\xb3\xa6\xd6\xc2\x3b\x44\xd2\xeb\x25\xa1\xfe\xd4\
\xea\x43\x71\x66\x7b\x83\x53\x39\x80\x10\x10\x42\xf1\x04\x8b\x27\
\x2a\xca\xa6\xd2\x8b\x8f\xf6\xee\x2f\xe9\x2f\x0c\x2a\xb0\xe8\x60\
\xbd\xb1\xa6\x39\x70\x8d\x65\xf1\x91\x8b\x5c\x4c\x1d\x2a\x2d\x00\
\x80\x4d\xa1\xf6\xdc\xae\xe9\xa9\xf0\xce\xd5\xe2\xc0\xe5\x16\x51\
\xfa\xb7\xa5\x3a\x50\x52\x00\xee\x6b\x17\x5e\xc0\x62\x9d\x9c\x03\
\xb3\x38\x40\x38\xf5\x63\x4b\xa9\x43\x25\x04\x80\x36\xc0\xd5\xc4\
\xf6\x0b\x88\xac\x93\x73\x60\x11\x07\xbe\x2d\xe9\x61\x06\xd1\x92\
\x15\x9f\xa8\x84\x00\x4c\x9a\x3a\x4b\xb4\xb7\x88\xb9\xfe\xf7\xf6\
\x39\xc0\xa2\xff\x94\xa4\x27\x4a\x02\xc6\x31\x1b\xe5\x5e\x90\x58\
\x79\xb8\xd4\x60\xe7\xcf\xdd\x56\x36\x26\xf9\x87\xab\x70\x00\x21\
\xf8\x9c\x24\x2c\x86\x60\x14\x65\xa1\x9c\x8b\x92\xf0\x06\x60\x34\
\x0e\xce\xd2\x73\xff\xe8\xaa\x70\x00\x8f\x31\xf9\xdf\x59\x52\x2d\
\x73\x09\x00\x81\x6d\xaf\x90\xf4\x9b\x56\x09\x65\x55\x26\xcb\xc7\
\x99\x9e\x03\x24\xd3\x10\x2d\x80\xb3\x2c\x79\x4e\x41\x2e\x01\xa0\
\xb3\x2f\xf4\x44\x96\xf4\xab\x61\x45\xbf\xf8\x7d\x03\x42\x60\x4d\
\x25\xa5\xd4\x02\xc0\xf7\x48\x5c\x3f\xdb\x43\x9a\x93\xce\x93\x7f\
\x6c\x4b\x1d\x34\x2c\x43\xef\x4a\x89\x5c\x9d\x5a\x00\x0e\x94\xf4\
\x26\x2b\x10\xe7\x93\xe6\x1c\x48\xcd\x01\x2e\xc3\xe4\x88\xff\x53\
\xaa\x0f\xa7\x14\x00\x8a\xc3\xfd\x8d\xd5\xd3\xf2\x4c\xae\x54\x33\
\xe4\xdf\x99\xe4\x00\x21\x12\xe7\x4b\x7a\x74\xaa\xda\x67\xa9\x04\
\x80\x05\x0f\x4c\x1e\x78\x91\xa9\xbe\xe9\x53\xef\x1c\x98\xc6\x01\
\xcc\xa3\x2f\x92\xf4\xbc\x14\x31\x43\xa9\x16\x2b\x88\xcc\xc0\x67\
\x7b\x36\x97\x2f\xda\x12\x1c\x00\x6d\x02\x27\x19\xd6\xa1\xa5\x28\
\x85\x00\x00\x5a\x85\xbd\xff\x0e\x4b\xf5\xc4\x5f\x76\x0e\xc4\x71\
\x80\x24\xfb\x07\x5b\x32\x4d\xdc\x9b\x13\x4f\x2f\x2b\x00\xec\xf8\
\x54\x10\x41\x27\x73\xbd\xbf\xf7\x34\xf8\x8b\x3d\x38\x80\x2a\x84\
\xd6\x01\x62\xe0\x7f\xf6\x78\x7f\xed\x95\x65\x05\x80\x2a\x8b\x1c\
\x43\xd4\xd6\x75\x72\x0e\x94\xe6\x00\x30\x8c\xbf\x63\x81\x96\xbd\
\xda\x5e\x46\x00\x40\x69\xfe\x57\x49\x3b\xf7\x6a\xd9\x5f\x72\x0e\
\xa4\xe1\xc0\xd7\x24\xed\xd3\xd7\x2a\xd4\x57\x00\xc0\xe7\x07\x13\
\xfe\xb7\xd3\x8c\xc1\xbf\xe2\x1c\x58\x8a\x03\x98\xdf\xa9\xf7\x4c\
\x05\x9b\x28\xea\x2b\x00\x64\xf2\xff\xb9\x15\xa3\x8b\x6a\xd0\x1f\
\x76\x0e\x64\xe0\x00\x77\x00\x8a\xa5\x90\x49\x16\x95\x3f\xd0\x47\
\x00\xb6\x95\x74\xba\xa4\xfb\x25\xb8\x43\x64\xe0\x85\x7f\x72\x05\
\x39\xc0\xa2\x27\xec\x1e\x8d\xe4\x5b\x31\xe3\xef\x23\x00\x2c\x7c\
\xe2\x31\xbc\x2c\x51\x0c\xa7\xfd\xd9\xdc\x1c\x20\x6a\x94\xe8\x63\
\xd4\xa1\x60\x8a\x15\x00\x62\xfc\x3f\x60\x05\xe9\x82\x1b\xf1\x07\
\x9d\x03\x85\x38\xf0\x05\x49\xe0\x4d\x5d\x15\xda\x5e\xac\x00\xfc\
\xa9\xa4\xa7\x0d\x59\xf5\x61\xc0\x54\xd1\x26\x61\x01\x27\xc6\xcd\
\x24\x71\xa3\xe7\xf6\xf4\x03\x0b\x38\xa7\x1a\x74\x31\x5c\x8e\xd0\
\x99\xf2\xe7\x42\x38\x80\x2a\xf4\x1a\x03\x59\x0e\x79\x3e\xca\x0f\
\x40\x11\x6a\xc2\x9c\x9b\xae\xcf\x85\x5e\x86\x53\xe2\x16\x86\xba\
\xf5\xab\x92\xe8\xf8\x1e\x92\x7e\xc1\xfe\x6f\x51\x11\x61\xce\xd2\
\xaf\x4a\xfa\xac\xa4\x8f\x5b\x1d\x50\xb6\x16\x6e\x5a\x40\x1a\x47\
\x9b\x1a\xe6\x4c\x05\x42\x88\x3d\x79\x55\x88\x8d\x85\xd4\xae\x94\
\x3c\xdc\xc0\x3b\xee\x00\xd4\x95\x20\xa7\x78\x21\x85\x9e\x00\xac\
\x2b\x60\xad\xa9\x02\xb8\x68\xfd\x2c\x6c\x34\xf5\x03\xb8\xa0\x77\
\x95\x74\x37\x49\x7b\x1b\xe0\x28\x45\x83\x77\x4c\xe4\x9e\x66\x5b\
\x01\xa6\x80\x04\x55\x04\x82\x32\xe9\xe4\xe9\x51\x28\x97\x20\xf5\
\x65\x88\x0b\xd5\xdf\x2d\xf3\x81\x81\xbd\xcb\xe9\x4a\x7e\x63\xc6\
\x52\xf3\xec\x5f\x7f\x22\xe9\x0f\xed\x50\x9f\xcb\xa1\x50\x01\x40\
\xf7\xff\x47\x49\xbb\xb7\xc6\x6f\x76\x77\x7c\xe1\x28\x7e\x2c\x78\
\x76\xff\x9c\x31\x19\x08\x03\x27\x01\x02\xf1\x21\x43\xf9\xe2\xdf\
\xbe\x44\x35\x10\x8e\xd5\x55\x21\xf8\x46\xc6\xd4\x47\xf3\x0e\xf8\
\xf3\x66\xa5\xa4\x4e\x59\x12\x01\x78\xaa\xa4\x97\x2c\xfa\x58\xa9\
\xbf\x73\x1c\xa1\xd2\x1c\x2f\xe9\xa8\x06\x2e\x24\xec\xe0\xcf\x95\
\x84\x9a\x14\x7b\xb4\xbb\x00\x64\x5b\x35\x4c\x09\xe1\xf9\x4b\x0b\
\xc0\x6d\xac\xdc\x65\x13\x88\x6e\xbf\x68\x28\xaa\xbf\x25\x89\x8e\
\x85\x1e\x61\x8b\x18\xb1\xcc\xdf\x39\x15\x00\xb9\x07\xf9\x0b\x24\
\x80\x2b\x23\x3e\xe6\x02\x10\xc1\xac\xb8\x47\xb9\x6a\x70\x05\x9c\
\x0b\xa9\x12\xb2\x7e\x90\x24\xf4\xa9\xea\x44\xe5\x3c\x4a\x0e\xde\
\xb5\x51\x27\x04\xbb\x3f\x77\x04\xea\x3c\xfd\x4b\x20\xb7\x5c\x00\
\x02\x19\xd5\xef\xb1\x93\xac\xca\xe8\xcc\xb7\x17\x09\x00\x9b\xec\
\x85\xb5\x63\xfd\xd1\xe9\x0f\x90\xf4\x56\x49\x3b\xf5\x63\x44\xd1\
\xb7\x08\x54\x7f\xbc\x59\x8f\x16\x5d\x92\x5d\x00\xb2\x4e\x0d\x07\
\x33\xb6\x11\xe0\xd7\xa7\xd2\x3c\x01\xe0\x6f\xcc\x23\x9b\x2e\x66\
\xf3\x2a\x84\xbe\xff\x28\x49\x7f\x2c\x69\x87\x2a\x3d\xe8\xd7\xe8\
\xd5\x86\x0b\x83\x51\x1a\xff\xc2\x2c\x72\x01\xe8\xc7\xdf\xc0\xb7\
\xc8\x1c\xc3\x46\xf2\xba\x59\x31\x42\xf3\x04\x00\x83\x0a\xb1\xfe\
\x0f\xa9\xa9\x6a\x83\x83\x81\x5e\xcd\x51\x34\x34\x02\xf0\x9e\x60\
\xf5\x33\xe7\x44\x68\xb9\x00\x64\x9d\x55\xae\x67\xef\x94\x74\xb4\
\x24\xf6\xa4\x4d\x34\x4f\x00\xf0\x1b\xa1\xca\xde\x3a\x6b\x17\xe7\
\x7c\x9c\x44\x83\x73\x06\x5c\x40\x0c\xee\x93\x2e\x07\x4a\x18\x5b\
\xd1\x34\x72\x01\xc8\xbe\xba\x70\x3d\xdc\x6b\x56\xea\xe4\x3c\x01\
\x78\x8e\x9d\xe2\xd9\x7b\x38\xad\x01\x42\x14\xde\x2c\xe9\xe1\x55\
\x5a\x4f\xd3\x28\xaa\x0f\xe7\x2f\x71\xe3\xae\x02\x6d\xe1\x40\x21\
\x3f\xc0\x46\x76\x83\x22\xc1\x7a\x0e\x3e\x01\x58\x7f\x54\xf0\x03\
\xdd\xb9\x0a\x71\x66\xa1\x3f\x0f\x39\xe4\x14\x20\xcb\x07\x99\x07\
\xd1\x05\xa0\xaa\x00\x60\x99\xc6\x82\xbe\xe9\x3a\x36\xeb\x04\xf8\
\x0d\x53\x5d\xab\x2c\xfe\xdb\x1a\xfa\x11\xce\xae\x21\xd3\x15\x66\
\xb2\x9d\xaa\x7c\xda\xc0\x5c\x05\x2a\x36\xc3\xb8\x8e\xa8\x47\xbd\
\x15\x4d\x13\x00\x36\x5d\x9c\x9b\x84\x6c\x14\x27\x3a\x84\x1d\x1d\
\xab\x0f\x01\x6d\x43\x26\x98\xc8\x25\x7e\x1e\xb9\x00\x14\x9b\xe1\
\xf7\x4b\xa2\x4c\x17\xb1\x42\xeb\x34\x4d\x00\xd8\x78\xdf\x6d\xc1\
\x93\xc5\x7a\xd7\x35\xb4\x8d\xa5\x9b\x51\x4a\x72\x91\x93\xa2\x78\
\xe7\x22\x1b\xa4\xd0\x15\xb8\x1d\x2e\x00\xff\xcf\x81\x4a\x77\x00\
\x3a\xf0\x4d\xab\x55\x41\x4c\xe3\x5c\x01\x20\xb7\xf2\xd4\x5a\x50\
\x27\x98\x9e\x2e\x91\xb4\x7d\xe4\x62\x6b\xed\x71\xb6\x19\xac\x58\
\x33\x3d\x30\xd6\x61\x3f\x01\x8a\xcd\x1c\x86\x38\xac\xd2\x6f\x9c\
\x27\x00\x5c\x7e\x29\x63\xfa\xb8\x5a\x1b\xf0\xef\x9a\xdd\xbf\x14\
\x5b\x58\xa8\x04\x8d\x90\x42\xc4\xa5\x15\x2e\xe1\xbd\x25\x4e\x1f\
\x47\x08\xfe\x07\x7e\xb1\x98\x8f\x84\x4b\xef\x1b\x30\x08\x17\x80\
\x00\x26\xa5\x79\x04\xab\x34\xf5\xa9\xff\x40\xd2\xf5\xdd\x27\x37\
\x6a\x19\xd8\xfc\x41\xdf\x25\xdc\xa6\x0a\x5d\x24\xe9\xd7\x0a\xb4\
\x0c\x07\x08\x5e\x03\x46\x80\xe2\xb4\x54\x60\xc0\x44\x40\xc2\x06\
\xbf\x1b\x5b\xe2\xc3\xcd\xcd\x03\xbd\x9f\xc1\x5e\xd3\xb7\x10\x14\
\x30\x2a\x39\x9c\x18\x30\x0e\x17\x80\x00\x26\xa5\x7b\x84\x34\x04\
\xe0\x14\xc1\x12\x5a\xa3\x8d\x02\x40\x1e\xc9\x27\x2c\x53\x30\x5d\
\xb3\x81\x5f\x22\xde\x02\x8b\xc9\x4d\x03\x9f\xef\xf3\x18\xbb\x3b\
\x12\xfe\x7b\x16\xbe\x1c\xfb\x0d\xea\xbc\x62\x4e\xe0\x88\xe4\x64\
\x40\x40\x36\x32\x91\x53\xe5\x3e\x92\xfe\x21\xe0\xe3\x2e\x00\x01\
\x4c\x4a\xf7\x08\x7b\x1c\x25\x7b\xd7\x63\x15\x37\xce\xdd\x53\x2c\
\xf6\x27\x5d\x93\x11\x5f\xc2\x5d\x77\x41\xc4\xf3\x7d\x1e\xe5\xfb\
\xc4\x16\xc5\x84\x2c\x4f\x6b\xe7\x96\x66\x26\x03\x8d\x89\xfc\xbb\
\xc9\x24\x1c\xb2\x31\x48\xfa\xe0\x64\x59\x44\x2e\x00\x8b\x38\x94\
\xfc\xef\x38\xc4\x70\x8c\x4d\x3d\x01\x3e\x28\x89\xa8\xe3\x2a\x94\
\x5b\xfa\x50\x6d\xf6\xb2\x90\xe5\x14\x03\x64\xf7\x20\x9f\x17\x6f\
\x35\x99\x17\xdd\xc5\xfd\x1d\x76\x42\x84\x54\x74\xa3\x88\x32\xa1\
\x12\xcb\x12\x56\x33\x84\x32\x27\x7d\x32\x34\xd1\x76\x4e\x27\x00\
\xf3\xc4\xc4\x4d\xc4\x6c\x25\xa2\xee\xf0\xfe\xd3\x04\x80\x60\x4b\
\xee\x82\xa8\xbf\x55\xe8\xb5\x06\xfa\x9e\xab\xf1\x4f\x5b\x82\x7c\
\xea\xef\x23\x08\x78\x0e\x4f\x91\x84\x13\x8f\xed\xe5\xf9\x85\x91\
\x25\x58\x9c\xa4\x87\xe6\x24\xc6\x44\x62\xf8\xc0\x09\x2d\x18\xed\
\x75\x0d\x40\x6b\x52\x05\x62\x23\x8b\x02\x15\x4a\xcd\x88\xf3\x24\
\x1d\x9a\xfa\xa3\x13\xdf\x03\xcd\x8b\x1b\x50\x2e\x3a\x48\x12\xb8\
\x31\xfc\xde\x96\xab\x91\x19\xdf\x75\x01\x88\x62\x38\x9a\x2b\x36\
\x90\xad\x04\x80\xa8\x63\xac\x90\x55\x08\x1d\x9a\x9b\x09\x39\x6c\
\xb9\x08\x01\x03\x85\x21\x27\xe1\xc7\xc0\xa2\x14\x8c\xcc\x94\xa8\
\x33\x2e\x00\x51\x8c\x7c\x83\x69\xa9\xeb\x02\x40\xf8\x03\x95\xf7\
\xc8\x9e\xa9\x42\x84\x3d\xa0\x9c\xe5\x3c\xc6\xb1\x7d\xb1\x40\x17\
\x65\x69\x55\x61\xc0\x92\x8d\xba\x00\x44\x31\xf0\x52\x5b\x6a\x3f\
\xea\x54\x20\xcc\x9f\x80\x8b\xb2\x3e\xaa\x10\x88\xbb\x17\x4b\xba\
\x63\xc6\xd6\xf1\x84\xa0\xe7\x61\xfb\x1f\x1b\xb9\x00\x44\xcd\x28\
\xbe\x4f\x90\x74\x2e\xeb\x04\xe0\x30\x73\x11\x57\xcb\x3a\xc4\xb9\
\x04\xbe\xce\x9e\x51\xe3\x88\x7f\xf8\x33\x66\xa2\x24\x59\x74\x4c\
\xe4\x02\x10\x35\x9b\xdf\x33\x44\x9d\x73\x3a\x01\x78\x92\xd9\xff\
\xf1\xeb\x54\x21\x9c\x5f\xdc\x01\x7e\x25\x73\xeb\x98\x42\x89\x89\
\x7d\x46\x05\x3d\x3d\xe7\xd0\x5c\x00\xa2\xb8\x7b\x83\xe5\x2a\xbd\
\x16\x01\xe0\xfe\x89\xe5\x8e\x35\x51\x2d\x00\x93\x86\xa9\xb7\x94\
\xf3\x12\xdc\xb1\x88\x3b\x00\x5e\x5a\xf0\xf3\xde\x37\x92\x3b\x81\
\x0b\x40\x94\x00\xa0\x0d\x9f\x0c\x9e\x19\xeb\x8e\x5d\x9f\xac\x79\
\xb0\xd5\xab\xd2\xdf\x4b\x3a\xa4\x60\x0f\x88\xd4\xc4\xf4\xf5\x67\
\x93\xd1\x51\x05\xdb\x4f\xd9\x94\x0b\x40\x34\x37\x51\x04\x8e\x41\
\x00\x70\x60\x9e\x65\x97\x82\xe8\xaf\xa4\x7c\x81\xa2\x63\xe0\xb0\
\x94\x24\xb6\x02\x40\x4f\xc1\x7e\xe4\x7e\x80\x09\x73\x88\xe4\x02\
\x10\x3d\x6b\x28\x01\x47\x22\x00\x00\xdf\x62\x02\xdd\x2d\xfa\x13\
\x89\x5f\x20\x4e\xf5\x65\x89\xbf\x19\xfa\x39\x60\xcf\x71\x5e\x91\
\x88\x4f\xea\xd0\xd0\xea\x03\xb8\x00\x84\xce\xf4\xfa\x73\x5f\xc4\
\xef\x8a\x00\x10\xe0\x48\x94\xc0\x76\xd1\x9f\x48\xfc\x02\x41\x48\
\x04\x23\xd5\x22\xee\x06\xf8\xc7\xb9\x17\x10\x31\x45\x8d\x80\xa1\
\x90\x0b\x40\xf4\x4c\x5d\x0b\xe0\x20\x02\x40\x0a\x24\x02\x50\xed\
\x02\xdc\x75\x9d\xcb\x08\x20\x2e\xd5\x4c\x51\x13\x3c\x24\xa1\x9d\
\xa0\x2d\x7c\x06\x84\x68\xc7\xa2\x3e\x47\x4f\xc7\x92\x2f\xb8\x00\
\x44\x33\x10\xed\x77\x7f\x16\x3d\xc9\xef\x84\xc9\x34\x41\x6f\x0f\
\x48\x24\x2f\xd9\x51\x00\xe6\xb9\x20\x91\xe0\x8e\x9e\x18\x55\x83\
\xb3\x60\x47\x5d\x00\x7a\x31\xfb\x28\x04\x00\xec\xa6\x97\xf7\x7a\
\x3d\xc3\x4b\x55\xf1\x58\x66\x8c\xa7\x4b\x9b\xe4\xd6\x44\x34\x24\
\x95\x61\x5a\x23\x17\x80\x5e\x33\x72\x02\x02\xc0\x49\x4f\xad\x89\
\x26\x88\x38\x55\x1c\x62\xd5\x10\xb9\x16\x70\x81\x3b\x02\x4e\x13\
\x6c\x68\xa8\x46\xad\x9c\x08\x2e\x00\xbd\x96\xef\xa9\x08\x00\xc8\
\x1d\x14\x18\x6e\x82\x48\x3e\x07\x4a\x90\xb4\xc3\xea\x97\x92\x19\
\x1c\x61\xd1\x53\xe2\x07\xff\x01\xaa\xd1\x7a\x86\x75\x45\x0e\xba\
\x00\xf4\x62\xfe\xe9\xac\x31\xf0\x67\x49\x28\x6a\x86\xf0\xc8\xbd\
\xaa\x05\xb3\xd4\x1c\x8e\x20\x04\x98\x11\x70\xde\x01\xe4\xc5\xe5\
\xbd\x26\xb9\x00\xf4\xe2\xfe\xf9\x08\x00\x08\x1e\xfb\xf4\x7a\x3d\
\xd3\x4b\xa4\x19\xb2\xb0\xaa\x41\x53\x44\x8e\x0b\x10\x55\x4e\x2c\
\x18\x59\x2b\xd4\xda\x05\x20\x72\xd2\xb6\x3c\x7e\x09\x02\x80\x43\
\x80\x2a\xa3\x4d\x11\xc5\xef\x70\x4a\xe5\xac\xf8\x98\x6a\xc0\x9c\
\x06\xf8\x0c\xb8\x4c\x01\x3c\xb3\x15\xf6\x5e\xaa\x46\x16\x7c\xc7\
\x05\xa0\x17\xa3\x2f\x47\x00\x28\x22\x46\x2a\x6b\x53\x44\x74\x28\
\xc9\xe5\x4d\xe9\x66\x0b\x38\x44\x8c\x2d\x41\x55\xcf\xaa\xe0\x37\
\x70\x01\xe8\xb5\x7c\xaf\x42\x00\x80\x6b\xac\x56\x04\x63\x5e\xb7\
\x89\xcd\xf8\x80\x24\xca\x53\xb6\x7a\x21\xde\xd8\x7f\x80\x67\xa8\
\x28\x48\x5d\xa9\x59\x45\x31\x7a\x4d\x95\x9f\x00\x39\xd8\x76\x35\
\xeb\x8a\xba\xcf\xd5\x6a\x80\xcd\x1b\x15\x79\x9a\xc7\x18\xe4\x08\
\xa0\xb9\x43\x21\x2e\xc7\xc0\xa4\x80\x12\x51\x8a\xfc\x04\xe8\xc5\
\xe9\xeb\x10\x00\xbc\xfc\xcd\xd6\xa1\x40\x32\x41\x59\x00\xd5\x74\
\x48\x04\xfe\x0d\x08\x03\x14\x59\x2b\x41\x2e\x00\xbd\xb8\xfc\xc3\
\xe6\x05\x80\x61\x01\x54\x74\x86\x41\x9a\xdc\xa4\xd7\x38\xeb\xbc\
\x04\x1e\x37\x10\x89\x04\x5a\xe5\x26\x17\x80\x5e\x1c\x5e\x4b\x8a\
\x6f\x56\x05\x9a\x1c\x12\xa1\xaa\x9c\x04\x98\x1b\x63\x91\x9a\x7b\
\xb1\x26\xc1\x4b\x84\x54\x63\xc9\x02\x87\x94\x0b\x72\x4e\x72\x01\
\xe8\xc5\xdd\x35\x15\xa8\xd9\x4b\xf0\xc6\x21\x01\xfd\x47\xde\x26\
\x71\x1b\x43\xb9\x14\xb3\xbb\x10\xdf\x04\xe4\x46\x4e\x72\x01\xe8\
\xc5\xdd\xb5\x4b\x70\x93\x66\xd0\x79\xc3\x79\x82\xa4\x17\x4b\xba\
\xd5\x40\x04\x81\x8c\xb3\x83\x33\xfb\x07\x5c\x00\x7a\x09\xc0\x37\
\x9a\x75\x84\xcd\x1b\x0e\x77\x02\x72\x87\x9f\x3b\x89\x72\xda\x6b\
\xfc\x65\x5e\xc2\x51\x76\x64\x66\xdc\x49\x17\x80\x5e\x73\xb9\xe6\
\x08\x6b\x2e\x14\x22\x64\x28\x74\x1c\xef\xdd\x33\x0d\x50\xb7\xf5\
\xcb\x31\xa0\x5f\x60\x87\xe6\xf2\x12\xbb\x00\x84\xac\x9a\x4d\xcf\
\xac\x85\x42\x9c\x5b\x00\x32\xb3\x57\xef\x42\x5e\xc2\x7e\xfb\x68\
\x49\xcf\xb6\x9a\x5c\xad\xda\x73\xb9\x68\x71\x6a\x51\xa2\x24\x07\
\xb9\x00\xf4\xe2\xea\xfb\x9a\x0b\x87\xee\x35\x0c\xab\x82\x8c\x9a\
\x41\x24\x29\x38\x8f\xd5\x30\xde\x67\x0c\x00\x0f\x31\x7e\x01\x62\
\x85\x72\x90\x0b\x40\x2f\xae\xae\x85\x43\x83\x0f\x75\x5c\xaf\xd7\
\x1b\x7b\x89\x45\x4f\x39\x70\x4c\xa5\x20\x4c\xb4\xe4\x3d\xe6\x1e\
\x00\x06\x11\x16\xac\x4d\xe5\xca\x13\xf0\xd1\x05\xa0\x17\x13\xd7\
\x12\x62\x80\xc4\x79\x49\xaf\xd7\x1b\x7e\x89\xcc\x32\x2c\x45\xc0\
\xa1\x13\x5e\xdd\x42\x54\x29\xc5\x97\xc9\x3c\xca\x91\x3b\xe0\x02\
\xd0\x6b\x31\xae\x21\xc3\x8d\xb6\x4c\x15\x27\x02\x25\x88\x0e\x37\
\x5b\xfc\xed\x2a\x0b\xc2\xa7\x0c\x81\x20\x07\xdc\x8a\x0b\x40\x2f\
\x01\x58\x4b\x8a\xff\x65\x03\x45\x1b\x8a\x6f\x29\x7a\xa4\x58\x88\
\xee\x60\x81\x75\x20\xcf\xd5\xba\x1f\x50\x34\x83\x32\xab\x39\x92\
\xea\x5d\x00\xa2\x97\x05\x8e\xfa\x03\x3b\x60\x2c\x50\x01\x81\xe8\
\x1f\x3d\x51\x01\x04\x08\x0c\x40\x78\xa9\x0a\x5e\x92\x80\x24\xde\
\x3b\x41\xa1\xb9\x69\x7d\x76\x01\x88\x9e\xc9\x6b\x3a\x60\xac\x66\
\xa0\x11\xa3\x87\xd0\xf3\x05\xee\x04\x84\x27\x10\x61\x0a\x2a\x58\
\xa9\xa3\x8f\x8b\x30\xd5\xe3\xd7\x8b\xd4\xf6\xec\xbf\x0b\x40\x12\
\xc6\x7d\x81\x52\x11\xcc\x7d\x33\xe0\xb8\x49\x86\x15\xf8\x11\x2e\
\xc5\xb7\xb7\x00\x3b\x2e\xca\xa5\xd4\x22\x9c\x61\x24\xf9\xa4\x26\
\x3f\x01\xa2\x39\xca\x34\x1c\x81\x00\x80\x44\x88\x79\x9a\x34\xdc\
\x95\x23\xa4\xff\x54\x0b\x55\x28\xe1\x4d\xe6\x0e\x10\x52\x41\x3e\
\x76\x22\x5c\x00\x62\x39\xa6\xb7\xa2\x04\x20\x00\x6c\x86\x24\x30\
\x11\x55\x50\x4a\x1b\x88\xee\x6d\xce\x17\x08\xaf\x86\x01\x40\xe4\
\xe5\xf6\x24\x73\x07\x71\x15\x28\xe7\x6c\x06\x7d\x7b\xab\x02\x19\
\xbc\x41\xe6\x21\x19\x7c\xd5\x71\x69\x91\x40\x30\x5a\x80\xaa\x00\
\x79\xad\x14\x71\x2f\xa0\x48\x32\x3b\x74\x2e\xc2\xec\xc0\xe5\xfb\
\x13\x19\x1a\xf0\x13\x20\x8a\xa9\xd8\x23\xf0\x95\xbe\xa6\xdb\xf1\
\xf1\x05\x80\x10\x57\xad\x48\x5e\xd7\x7d\xd4\x10\x6a\x04\xe0\x2c\
\x62\x57\x2e\x89\xca\xcc\xa5\x18\x8f\x60\xae\x5d\x80\x24\x79\x84\
\x3b\x47\x86\x98\x0b\x40\x94\x00\x90\xb1\x8a\xca\xff\xee\x4e\x00\
\x30\x93\x13\x14\x57\xad\x4c\x6a\xd7\x7d\xea\x05\xbf\xde\x10\xa2\
\xc1\xd9\x21\x0b\x2c\x77\x36\x55\xd7\x36\x05\xfa\x80\xc9\xde\x25\
\x8a\x97\xe1\x0f\xe3\x07\xe0\x12\xfc\xf9\xf0\x57\x82\x9f\x74\x01\
\x08\x66\x15\x0f\x6e\x2a\x93\x0a\x0c\x0f\x79\x1b\xd5\x11\xe2\x70\
\x46\xa0\x8a\x1c\x6a\xe5\x8a\x10\x00\xaa\x99\x95\x28\x5d\x44\xa9\
\x56\x8a\x75\xe7\xaa\x55\xfc\x59\x49\xd4\xa3\xfd\x4a\xd4\x5c\x85\
\x3d\xec\x02\x10\xc6\x27\x7b\x0a\x5f\x24\xfb\xdd\x0d\x93\x97\xde\
\x57\xb7\x00\xbe\x40\x96\x17\xe9\x83\x5d\xc9\x7a\xe2\xe7\xb1\xd2\
\xbc\x50\x12\x9e\x8b\x9c\x84\x35\x00\xd0\x5b\xc2\x27\x72\x10\xf5\
\x05\x28\xd4\x4d\x71\xbe\xd4\xe4\x02\x10\xc5\x51\xc0\x3a\x88\xa2\
\xdf\xca\xea\xd3\x04\x34\xff\x8e\x56\x88\x62\x23\x56\xe3\x45\x92\
\x9e\x6f\x7f\xcb\x85\xbf\x49\xe2\x3d\x8b\x34\xd7\x09\x40\xf1\x0f\
\x42\x31\x72\x08\xb2\x0b\x40\x94\x00\x10\x30\x0c\xc2\xfd\x56\x02\
\x00\x00\x1b\xf9\xc1\x55\x03\x27\xa9\x0b\xc0\x64\x72\x12\x4c\x12\
\x16\x94\x2b\x0d\x35\x9a\xf8\xed\x1c\x45\xec\x38\x75\x28\x89\x44\
\xd1\xb4\xd4\x84\xdd\x0d\xb4\x38\x6c\xcd\x39\xb2\xc2\x5c\x00\x82\
\x67\x8c\xa5\xb3\x93\x2d\xa7\x4d\x76\x7f\x54\x60\xbc\xf5\xd5\x88\
\x78\x7e\x2e\x89\xf3\x3c\xb3\x5c\x56\x9e\x92\xb8\xac\x29\xd6\x27\
\x4e\x18\x12\x23\x72\x38\xc4\xb0\x66\x3d\xcd\x72\x02\x72\x30\xd7\
\x05\x20\x98\xab\xd4\x63\x5f\xbf\xeb\x6e\x74\x7c\x31\x47\x25\x11\
\xfd\x36\xf5\xfa\x9e\x01\x9e\x52\x76\x53\x52\x0c\x81\x50\xa7\xb8\
\x01\x65\x4d\xb1\xb0\xf4\x25\x80\x51\x8f\x96\xf4\xf4\x8c\x76\x60\
\x2c\x59\xe8\x98\xf4\x39\x07\xb9\x00\x04\x73\x15\x2c\x05\x2c\xec\
\x6b\xb4\x51\x00\x50\x7f\xb9\x07\x96\x0e\x94\x5c\xef\xfd\x23\x0d\
\x4c\x2a\x64\x38\x08\x02\x0b\x8b\x8a\x8e\x94\x57\x25\xe1\x04\x1d\
\x3e\xd4\x6c\xba\xbb\xe5\x0a\x3c\xcc\x82\xe2\x72\xd9\xff\x19\x0b\
\xea\x1b\xdb\x0e\xff\xe6\x20\x17\x80\x20\xae\x92\x8c\x87\xaf\x13\
\x4d\x67\xaa\x00\xe0\x08\xbb\xc0\x4c\x44\x41\x5f\x4c\xfd\x10\xc9\
\xed\xd4\xe0\xea\x4b\x98\x4b\x09\xf3\xc3\xce\x85\xb5\x05\x60\x2a\
\x74\x6e\x2e\x36\xe0\x8c\x82\x24\xc1\xc2\x07\x79\xba\x64\xfc\x37\
\xb5\x87\xef\xdb\x77\x50\x01\xef\xb9\x00\x04\x30\x69\x8b\x13\xfe\
\x41\xb6\x67\x4e\x15\x00\x76\xfe\x57\x4a\x7a\x5c\xad\xb8\x20\xea\
\x83\x01\x7c\x35\x36\x22\x61\xff\xcc\x8c\x83\x72\x01\x58\xc8\x5c\
\x14\x06\x7c\xac\x84\x7c\xad\x97\x75\x9b\x16\xfc\x86\x3a\x4c\xce\
\x48\x15\xc8\xf4\xf3\xcc\x09\xb6\x70\x38\x03\x7a\x00\x15\x0d\xa4\
\x8a\x9c\xf5\x02\x5c\x00\x16\x2e\x08\xd8\x7f\xec\x46\x60\x8e\x69\
\x02\x70\x27\x8b\x08\x20\x85\xb6\x38\xe1\x2d\x25\x47\x73\x2c\xc4\
\xb6\xc3\x8d\xeb\xc4\xcc\x03\x72\x01\x58\xc8\x60\xc2\x1f\xee\xbd\
\x31\x14\x6b\x9a\x00\x60\x05\xa4\xfa\x27\x01\x72\x45\x89\xce\x70\
\x81\x25\x24\x61\x2c\x44\x54\x2b\x4a\xe7\xe7\x32\x0f\xc8\x05\x60\
\x21\x83\x49\xc3\x00\xad\x7e\x2b\x37\xcc\xac\xf8\x7f\x3c\x65\xa5\
\x6a\x3b\xac\xf7\x1c\x73\x24\x85\xa8\xc7\x92\x94\x80\xc7\x85\xe8\
\xd2\xe7\x10\x74\xb2\x70\x7e\x96\x7b\xc0\x05\x60\x21\xff\x70\xc2\
\x6f\xc2\x25\x9b\xb5\xd6\xc8\x11\x41\x75\x25\x4c\xbe\x18\xdd\x59\
\xd2\xc7\x8b\xb5\x96\xbf\x21\x4c\x9e\x0f\xa4\x16\x67\xfe\xa6\xd6\
\xbc\xe7\xe8\xae\x39\x09\x47\xe1\x0b\x72\x36\x90\xef\xdb\x44\xd7\
\xe3\xfd\xdd\x14\x53\x39\x6f\xb3\xc5\x61\x40\xbd\xb7\x62\x34\x26\
\x80\x22\xe2\x95\x28\x8c\x41\x84\x61\x09\x72\x01\x98\xcb\xe5\x93\
\x0c\x3e\x76\xd3\x43\xf3\x04\x00\x73\xf9\x87\x25\x51\x97\xa2\x08\
\xed\x2f\x89\xa0\xb7\x6a\x5e\xb8\x84\xa3\x7c\xa3\xa4\x27\x65\x82\
\x41\x9c\xd6\x4d\x17\x80\x99\x93\x47\x62\x21\x2e\x98\xa9\x07\xf1\
\x3c\x01\xe0\x2e\x4a\xe2\x30\x1b\x73\x31\xb5\x9c\xc6\x30\xd6\xa2\
\x7b\x15\x6b\x34\xe1\xc2\x47\xef\x07\x6e\x80\x74\xa3\x1c\x61\xcf\
\xb3\xba\xea\x02\x30\x95\x33\x18\xe1\xce\x96\xf4\xd8\x59\x88\x94\
\xf3\xd6\x18\x7f\xc3\x27\xc5\x3d\xae\x98\x4f\x00\x8f\x2d\xe2\x8a\
\xd9\xf0\x80\x84\x0b\xb3\xd4\xa7\x58\x88\x78\x11\x89\xb8\x2a\x49\
\x2e\x00\x53\xb9\x8d\xed\x9f\xdc\xdf\xd3\x24\x21\x0c\x51\x2a\x10\
\x0f\xef\x2c\xe9\x7c\x83\xd0\x29\x36\x9f\x48\x5e\x57\xfc\x02\x09\
\x24\x5d\x6d\x08\x04\xf6\xff\x23\x2c\x9a\x75\x2a\xb7\x33\x0e\xc2\
\x05\x60\x2a\x73\xb1\x43\xec\x27\xe9\x6b\xb3\x58\x1f\xa2\x65\x00\
\xb2\xfc\xac\x8c\x73\x37\xf3\xd3\x84\x44\x1f\x21\xe9\x79\x96\xac\
\x9c\x23\x4c\x39\xc5\xb8\x30\x2c\x13\x91\xca\x39\x3b\x93\xd3\x29\
\x1a\x9a\xf3\x0d\x17\x80\xa9\xcc\x21\xa2\x81\xc8\xf9\x99\x14\x22\
\x00\xe4\xa8\xb0\xb9\x15\x35\x89\x4e\xf6\x98\x04\x15\x42\x89\x89\
\x14\xc5\xd4\x97\x1b\xbb\x27\x66\xad\xa2\xe7\xbf\xce\xac\x3d\xd4\
\x05\xae\x45\x2e\x00\x9b\x38\x4f\xc4\x3c\x28\x34\x73\xf7\xa4\x10\
\x01\xe0\xcb\xc5\x4d\xa2\x1b\x87\xc3\xdd\x00\x43\xee\x43\x4c\xa9\
\xab\x12\xa7\x31\xd1\x29\x76\xfd\xb3\x24\x61\x5f\x03\xf6\x3c\xb7\
\xa3\x6b\x91\x60\xb9\x00\x6c\xe2\x10\x9a\xcb\x09\x8b\xf8\x16\x2a\
\x00\xa4\x4b\x7e\x48\x52\xed\x75\xb7\x36\x1e\xcc\xa4\x8f\xb1\x24\
\x16\x3a\x84\xb9\x8a\x7b\x42\xe8\x60\x16\x31\x65\xd6\xdf\xb1\xf0\
\x10\xaa\x41\xbc\x12\x96\x01\x04\x20\x57\x7e\x72\x6c\x1f\x5d\x00\
\xb6\xe2\x18\xc0\x1b\xd8\x52\x88\x44\x99\x4b\xa1\x6b\x06\xf5\x1b\
\xa7\x18\x19\x63\xcd\xa8\xe2\x74\x04\x6c\x0b\x12\x4d\xf8\x97\x20\
\x3a\x7e\x29\x2b\xc2\x70\x99\x45\xcd\x21\x4b\x08\xcb\x0e\x01\x25\
\x64\x53\xe4\x28\x73\xb4\x68\xb2\xe6\xfd\x1d\xd4\x8c\x1c\xb9\xcc\
\x93\x6d\xbe\xd3\x84\x7e\x99\x7e\x16\x78\x97\xc3\x19\x34\x1d\x9c\
\xd6\x0b\xa7\x29\x54\x00\xe8\xf7\x5d\x25\xc1\x03\x2c\x43\xcd\x11\
\xd9\x5c\xa0\x3a\xf0\xa3\x83\xdc\x15\xf8\x81\x2e\x01\xda\x17\x25\
\x93\x42\x10\xa0\x51\x65\x30\x1d\x10\xbc\xc6\x82\x67\xe1\x5f\x6a\
\x29\x98\xdf\xcd\x94\x8c\x9f\x82\x99\x8c\x3f\x37\x9a\x01\xbc\x29\
\x89\xd4\xd7\x93\x2f\x51\x05\x39\x63\x04\x80\xfe\x00\xd1\x43\xb1\
\xc3\xd8\xf7\x7a\x8e\x25\xdd\x6b\xa8\x48\x04\xdb\xf1\x43\x48\x70\
\x6c\x10\xf0\xc4\x76\x41\xd6\x18\x3f\x02\xf1\xd8\xed\x73\xa0\x36\
\xa4\x1b\x89\x7f\x69\x0e\x07\x38\xb0\x81\xf8\xc4\x15\x13\x44\xb1\
\x0b\x99\x62\x1a\x58\xfc\xc6\x14\xb2\x1f\xc4\x28\x7f\x68\x10\x1c\
\x20\x13\x96\x9c\xdf\x60\x8c\x84\x58\x01\x80\x0b\x84\xb7\x83\xf1\
\xd4\xcc\x5d\x60\x10\x53\xe3\x9d\xcc\xcd\x01\xb4\x33\x8a\x70\x12\
\xbe\x13\x4c\x7d\x04\xa0\x83\xef\xa4\xf0\x79\x9f\xf7\x83\x3b\xe7\
\x0f\x3a\x07\x02\x39\x80\xea\x03\xe2\xcc\xa3\x4c\x93\x0d\x7c\xad\
\xff\x02\x7e\xa8\xf9\x7f\x50\xa9\x9d\x9c\x03\xb5\x39\x00\xdc\x39\
\x58\x9f\x18\x69\xa2\xa2\x50\xfa\xee\xe0\x98\xe2\x01\x70\x58\x03\
\x18\x75\x72\x0e\x54\xe6\x00\x2a\x39\x81\x02\x0b\xcd\x9e\x1b\xfb\
\xd9\x57\x00\xf8\x0e\xe6\x76\x70\x56\xb0\x30\x3a\x39\x07\x6a\x71\
\x80\x08\x14\xdc\x40\x24\xbd\x47\xd3\x32\x02\x40\x63\x44\x26\xbc\
\x79\x64\x79\xec\xd1\x4c\xf4\x17\xaa\x71\x00\xd5\x87\xbc\xa3\xa8\
\x8b\xef\x64\x6f\x97\x15\x00\x0a\xba\xa0\x0a\x91\xff\x91\xdb\x0f\
\x53\x8d\xcb\xde\x70\x93\x1c\x40\xd7\x07\xe2\x1c\xbf\x54\x28\x1a\
\xe6\xa6\x81\x2c\x2b\x00\x7c\x70\x2f\x49\x67\x18\xda\x60\x93\x9c\
\xf2\x4e\x8d\x92\x03\x40\xf9\x3f\xd8\x9c\xf5\xbd\x07\x98\x42\x00\
\x68\x9c\x3c\x90\x37\x98\x73\xb5\x77\x67\xfc\x45\xe7\x40\x20\x07\
\xb8\xec\x3e\x51\xd2\x9b\x02\x9f\x9f\xf9\x58\x2a\x01\x20\x44\x9f\
\xe0\x23\xb0\x6d\x9d\x9c\x03\xb9\x39\x40\x21\xd1\xe3\x53\x44\xad\
\xa4\x12\x00\x06\x0c\x7a\x04\x76\xd8\xbb\xfb\x7d\x20\xf7\xfc\xaf\
\xec\xf7\xd1\xfb\x41\xc2\x07\x6b\x38\x09\xe6\x40\x4a\x01\x60\x56\
\xee\x21\x09\x44\x10\x0a\xbd\x38\x39\x07\x52\x73\x80\x40\x5d\x16\
\x3f\x42\x90\x84\x52\x0b\x00\x11\xc7\x98\x46\x41\x02\x0f\x89\x3e\
\x4e\x32\x08\xff\xc8\x4a\x70\x80\x7c\x24\x9c\x5d\xac\xad\x64\x25\
\xe2\x52\x0b\x40\x37\x13\xa4\x50\x02\x89\x39\x14\x40\x87\x95\x58\
\x41\x03\x1e\x24\xa9\x08\x24\xb9\xb0\xa6\x92\x52\x2e\x01\x20\xdc\
\x9e\xdc\x01\x24\xd6\x85\x20\xe9\x94\xad\xdc\xc7\x48\xcf\x00\xa8\
\x99\x12\x6e\xe4\x24\x25\xa5\x5c\x02\x40\x27\x41\x93\x38\xdd\xee\
\x05\x49\x3b\xed\x1f\x5b\x29\x0e\x00\x69\x48\x08\x3e\x76\xff\xe4\
\x94\x53\x00\x3a\x21\x20\x8d\x96\x4b\x71\xee\xb6\x92\x33\xc7\x3f\
\x58\x95\x03\x58\x7c\x48\x6e\x3f\x68\x11\xb4\xc9\x32\xbd\x2c\xb1\
\x28\xef\x62\x0e\x0b\x52\x74\x4b\xb4\xb7\x0c\x3f\xfc\xdd\x36\x38\
\xc0\xe2\x07\x6d\x06\x67\xd7\x7a\x45\xc7\x1c\x5d\x2b\xb1\x20\x69\
\x03\x88\x0a\x72\x35\x41\x3c\x74\x72\x0e\x2c\xe2\x00\x88\xce\x98\
\x3b\xa9\x58\x9a\xcc\xe2\x33\xad\xd1\x12\x02\xd0\xb5\x7b\x98\x05\
\x2f\x6d\xbf\x68\xf4\xfe\xf7\x95\xe6\xc0\xb5\x96\xda\x88\x53\x35\
\x3b\x95\x14\x00\x06\x83\x10\x50\x86\xb5\x09\x80\xad\xec\xdc\xf5\
\x06\x62\x39\x80\xce\x0f\xf6\x14\x35\xea\x8a\x50\x69\x01\x20\x64\
\x9a\x74\x4a\x0a\xa7\x80\x30\xe1\xe4\x1c\xe8\x38\xc0\xce\x0f\x9c\
\x09\x80\x7b\xc5\x90\x69\x4a\x0b\x40\x37\xd8\xfb\xdb\xc5\x98\x9c\
\xe2\x5a\x7d\xf0\xa5\xd7\x06\x07\xb8\xf0\x62\xdf\x67\xf1\x17\x51\
\x7b\x26\x87\x5d\x73\xf1\xdd\xd3\xd4\xa1\x3d\x5d\x08\xda\x58\x89\
\x15\x7a\xd1\x59\x7b\x70\x72\x51\x87\xa2\x38\xd5\x14\x00\xda\xde\
\xd7\x2a\x22\xed\x51\x7c\xe4\xde\x60\x0b\x1c\xb8\xdc\xb2\x09\x3f\
\x92\xdb\xda\x33\x6b\xb0\x35\x05\xa0\xeb\x13\x98\xae\x5c\x7a\xc0\
\x1e\x6d\x09\xfa\xbf\x85\x05\x32\xd6\x3e\xa0\xe3\x03\x68\x4d\xe0\
\x64\xad\x9a\x22\x6b\xbc\x6d\x41\x00\xe8\x07\x17\xe2\x93\x2d\xb3\
\x0c\xc8\x4e\xa7\xf1\x72\x80\xc0\xb6\xb7\x58\xcd\x89\x2c\xe1\x0d\
\x31\xac\x6b\x45\x00\xe8\x33\x09\x35\xc7\x5a\x7d\x3c\x0f\xa5\x8e\
\x99\xc5\xe1\x3c\x8b\x53\x8b\x8d\xee\x94\x1c\x81\x6d\x7d\xd8\xd0\
\x92\x00\x74\xfd\x27\xd1\xf9\x55\x86\x37\xe4\x48\x13\x7d\x66\xb5\
\xbd\x77\xb8\xec\x92\xcc\x72\x9c\x05\x48\x36\xd3\xc3\x16\x05\x80\
\x3e\x1d\x68\x47\x24\x21\x14\x2d\xf6\xb1\x99\x09\x1c\x40\x47\x58\
\xfc\x04\x44\x92\x23\x72\x71\xad\xcb\x6e\xcb\x97\xe0\x59\x7d\xdb\
\xd1\x30\x5f\x30\x91\xf9\xbd\x60\x00\x2b\x7d\x4a\x17\xa9\xd3\xfb\
\x0a\x49\x24\xb1\x27\xc9\xe1\x4d\xcd\x86\xd6\x77\x57\x54\x20\x92\
\x6a\x40\x9c\xd8\xc5\x4f\x83\xd4\xd3\x9f\xed\x7b\x9d\xca\x43\x79\
\x5d\x72\x42\x8a\x79\x76\x63\x47\xd4\xba\x00\x74\xe3\x01\xfb\x91\
\x8a\xdf\x87\x4b\xda\x26\x76\x90\xfe\x7c\x51\x0e\x00\x57\x48\x38\
\x03\xbb\x3e\xc9\x2c\x4d\xd3\x50\x04\x00\x26\xb2\xf0\xc9\x0c\xa2\
\x32\x29\x15\x53\x9d\xda\xe3\x00\x00\xb5\x4f\x95\x74\xf6\x32\x70\
\x85\x25\x87\x35\x24\x01\xe8\xf8\xc2\xdd\x00\xbd\xf2\x7e\x56\xea\
\x6b\x88\x63\x28\x39\xc7\xb9\xdb\x42\xdd\xb9\xce\x42\x19\x9e\xdc\
\xaa\xae\x3f\xc4\x4b\xf0\xbc\x89\xa3\x3c\x13\xa7\x01\xe5\x82\x0f\
\x75\x0f\x72\xee\x35\x3e\xf3\xfb\xe8\xf6\x17\x4a\x3a\x4d\xd2\x39\
\x92\xb8\xf4\x0e\x8a\x86\xbc\x7b\xd2\x77\xa2\x49\x0f\x96\xf4\x22\
\x03\xe7\x1d\xf2\x78\x86\xb4\x70\xd8\xf5\x29\x42\x4d\xed\xe8\xf7\
\x5a\x59\xa2\xa8\xca\x2c\xad\x0c\x76\x2c\x0b\x86\x4a\xf6\x27\xda\
\x25\x19\x8f\xb2\xc7\x14\xe5\x59\x61\xec\xf8\xd7\x48\x7a\x97\xa4\
\x13\x62\xaa\x31\xe6\xe9\xce\xf2\x5f\x1d\x8b\x00\x74\x9c\x20\xf1\
\x9e\x5c\x52\xac\x45\xb7\x5f\x9e\x3d\xfe\x85\x09\x0e\x7c\xd9\x60\
\xf0\x29\x47\xf4\xb1\xb1\x70\x66\x6c\x02\xc0\xbc\x50\xbf\x0c\x4c\
\x22\x8a\x76\x10\x5b\xe4\x99\x67\xcb\xad\x56\xea\x87\x53\x04\x05\
\xcc\xd7\xaf\xf7\xa9\xc3\xb5\x5c\xf3\x79\xdf\x1e\xa3\x00\x4c\x72\
\x0c\x41\xa0\x82\x08\xce\xb4\x1d\x4c\x38\xc6\x3e\xe6\x65\x57\x0c\
\xba\x3c\xf8\xfb\xdf\x31\x1c\xce\x97\xe6\x02\xa5\x5a\xb6\xa3\x29\
\xde\x5f\x95\xc5\x40\x21\xbf\x07\x98\xc5\x88\x4c\x34\x0a\xfc\x39\
\x6d\xe6\x00\x8b\x1e\xe4\xe5\x73\x25\xbd\xc7\x76\xfc\x51\xf3\x69\
\x55\x04\x80\x49\x64\xac\x40\xb2\x90\x80\xc3\x1d\x81\x1c\x54\x4e\
\x08\x27\x89\x4a\x8b\xa8\x39\xef\x90\x74\x85\x85\x2a\x0f\xd2\xaa\
\x13\x3b\x99\xab\x24\x00\x1b\x79\x03\x68\xef\xc3\x24\x1d\x2d\xe9\
\x8e\x92\xb6\xb5\xa0\xbb\xb1\xf3\xa4\x53\x71\x28\x2c\xf7\x19\x03\
\x27\x20\x5e\x87\x44\x95\x95\xa3\xb1\x4f\x76\xc8\x84\x62\x32\xdd\
\xdd\xf2\x93\x0f\x90\xb4\xb7\x24\x72\x94\xb9\x4c\x8f\x89\xd0\xeb\
\x2f\x93\x44\xfe\x2d\x70\x83\x1f\x96\x74\x69\xcb\x81\x6a\x25\x98\
\xef\x02\xb0\x35\x97\x29\xfb\x8a\x73\x8d\x3b\xc3\x21\x92\x80\x6f\
\xb9\xdb\x80\x8b\x7d\x90\x81\x45\x40\x1a\xc1\x69\xc0\x0c\x92\x82\
\xf8\x6d\x49\xd7\x97\x58\x5c\x43\x68\xc3\x05\x60\xf1\x2c\x71\x61\
\x06\xd1\xee\x5e\x92\xf6\x93\xb4\x9d\xa4\x9b\xdb\x09\x41\x48\x46\
\x6d\x1e\xa2\xd2\xe0\xa0\x22\x0c\xe1\xfb\x16\x84\xc6\x2e\x0f\xcc\
\x08\x5e\x5a\x32\xb1\x9c\x66\x70\xa0\xf6\xe4\x0d\x6d\x62\xb8\x37\
\xec\x26\x69\x57\x8b\x48\xdd\xd9\xfe\x25\x3a\x95\xcb\x35\xc2\x42\
\x71\x90\x5c\x7c\x65\xb1\xb3\x7b\x63\x9b\x67\x37\x07\x51\xe1\xab\
\x66\xad\xe1\xf2\x4a\x78\xc2\x97\xc6\x66\xab\xcf\xb9\x48\x72\x4d\
\x54\xce\x3e\xb7\xf4\x6d\xee\x0f\xa8\x4d\x2c\x7a\xfe\x25\x73\x0d\
\x4b\x13\xc9\x3b\x08\x07\x4e\x38\x54\xaa\xee\x47\x98\x06\xa7\x07\
\xcf\x75\xff\x32\x1e\x76\xef\x6e\x07\x67\x17\x27\xdc\x00\x93\x24\
\xea\x0a\x48\xc9\x2c\x78\x70\x33\x3b\x0b\x0d\xcf\x22\x08\x44\x61\
\xf2\x6f\xb3\x09\x27\x2d\x4d\xd6\xb4\xbe\xfc\x1f\xbf\x8d\x2a\xc8\
\xf5\xb0\x09\x25\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
\
"
qt_resource_name = b"\
\x00\x03\
\x00\x00\x79\x93\
\x00\x72\
\x00\x73\x00\x63\
\x00\x0a\
\x0f\xab\xd4\x7f\
\x00\x66\
\x00\x61\x00\x76\x00\x69\x00\x63\x00\x6f\x00\x6e\x00\x5f\x00\x69\x00\x6f\
\x00\x1a\
\x04\x6e\x4d\x27\
\x00\x56\
\x00\x65\x00\x72\x00\x79\x00\x2d\x00\x42\x00\x61\x00\x73\x00\x69\x00\x63\x00\x2d\x00\x43\x00\x61\x00\x6e\x00\x63\x00\x65\x00\x6c\
\x00\x2d\x00\x69\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x0b\
\x0a\xb8\x56\x7f\
\x00\x66\
\x00\x61\x00\x76\x00\x69\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x69\x00\x63\x00\x6f\
\x00\x1a\
\x0f\x78\x0f\x27\
\x00\x61\
\x00\x6e\x00\x64\x00\x72\x00\x6f\x00\x69\x00\x64\x00\x2d\x00\x63\x00\x68\x00\x72\x00\x6f\x00\x6d\x00\x65\x00\x2d\x00\x31\x00\x39\
\x00\x32\x00\x78\x00\x31\x00\x39\x00\x32\x00\x2e\x00\x70\x00\x6e\x00\x67\
"
qt_resource_struct_v1 = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x03\
\x00\x00\x00\x26\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
\x00\x00\x00\x0c\x00\x02\x00\x00\x00\x02\x00\x00\x00\x05\
\x00\x00\x00\x60\x00\x01\x00\x00\x00\x01\x00\x00\x07\xe1\
\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x01\x00\x00\x0f\x4e\
"
qt_resource_struct_v2 = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x03\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x26\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
\x00\x00\x01\x74\xa2\xb8\xf7\x68\
\x00\x00\x00\x0c\x00\x02\x00\x00\x00\x02\x00\x00\x00\x05\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x60\x00\x01\x00\x00\x00\x01\x00\x00\x07\xe1\
\x00\x00\x01\x74\x9b\x6c\x15\x90\
\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x01\x00\x00\x0f\x4e\
\x00\x00\x01\x74\x9b\x6c\x15\x90\
"
qt_version = [int(v) for v in QtCore.qVersion().split('.')]
if qt_version < [5, 8, 0]:
rcc_version = 1
qt_resource_struct = qt_resource_struct_v1
else:
rcc_version = 2
qt_resource_struct = qt_resource_struct_v2
def qInitResources():
QtCore.qRegisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data)
def qCleanupResources():
QtCore.qUnregisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data)
qInitResources()

1335
tiny.db Normal file

File diff suppressed because it is too large Load Diff

9
xtimer.py Normal file
View File

@ -0,0 +1,9 @@
import sys
from time import sleep
msg = sys.argv[1]
time = int(sys.argv[2])
for i in reversed(range(0, time)):
print("{0} {1}".format(msg, i), end="\r")
sleep(1)