From 23770a1d476bf9f8a591d29eac59a7356ded453b Mon Sep 17 00:00:00 2001 From: Damien Dupuis Date: Tue, 16 Mar 2010 16:28:15 +0000 Subject: [PATCH] Removing easyChams and runPharos since they are now in goodies directory of CHAMS svn tree --- bootstrap/easyChams/CMakeLists.txt | 22 -- bootstrap/easyChams/CompilationWidget.cpp | 266 ------------------ bootstrap/easyChams/CompilationWidget.h | 69 ----- bootstrap/easyChams/CompileHighlighter.cpp | 70 ----- bootstrap/easyChams/CompileHighlighter.h | 38 --- bootstrap/easyChams/ConfigDialog.cpp | 83 ------ bootstrap/easyChams/ConfigDialog.h | 88 ------ bootstrap/easyChams/MainWindow.cpp | 22 -- bootstrap/easyChams/MainWindow.h | 15 - bootstrap/easyChams/README | 5 - bootstrap/easyChams/compile.sh | 14 - .../easyChams/icons/linux/Eye_of_Horus.png | Bin 29336 -> 0 bytes .../easyChams/icons/macosx/Eye of Horus.zip | Bin 31787 -> 0 bytes bootstrap/easyChams/main.cpp | 16 -- bootstrap/easyChams/script/chams.sh | 153 ---------- bootstrap/runPharos/CHANGELOG | 21 -- bootstrap/runPharos/CMakeLists.txt | 22 -- bootstrap/runPharos/ConfigDialog.cpp | 152 ---------- bootstrap/runPharos/ConfigDialog.h | 43 --- bootstrap/runPharos/MainWindow.cpp | 23 -- bootstrap/runPharos/MainWindow.h | 13 - bootstrap/runPharos/MyWidget.cpp | 204 -------------- bootstrap/runPharos/MyWidget.h | 56 ---- bootstrap/runPharos/TechnoRow.cpp | 68 ----- bootstrap/runPharos/TechnoRow.h | 35 --- bootstrap/runPharos/compile.sh | 14 - bootstrap/runPharos/icons/linux/Ankh.png | Bin 15866 -> 0 bytes bootstrap/runPharos/icons/macosx/Ankh.zip | Bin 20884 -> 0 bytes bootstrap/runPharos/main.cpp | 11 - 29 files changed, 1523 deletions(-) delete mode 100644 bootstrap/easyChams/CMakeLists.txt delete mode 100644 bootstrap/easyChams/CompilationWidget.cpp delete mode 100644 bootstrap/easyChams/CompilationWidget.h delete mode 100644 bootstrap/easyChams/CompileHighlighter.cpp delete mode 100644 bootstrap/easyChams/CompileHighlighter.h delete mode 100644 bootstrap/easyChams/ConfigDialog.cpp delete mode 100644 bootstrap/easyChams/ConfigDialog.h delete mode 100644 bootstrap/easyChams/MainWindow.cpp delete mode 100644 bootstrap/easyChams/MainWindow.h delete mode 100644 bootstrap/easyChams/README delete mode 100755 bootstrap/easyChams/compile.sh delete mode 100644 bootstrap/easyChams/icons/linux/Eye_of_Horus.png delete mode 100644 bootstrap/easyChams/icons/macosx/Eye of Horus.zip delete mode 100644 bootstrap/easyChams/main.cpp delete mode 100755 bootstrap/easyChams/script/chams.sh delete mode 100644 bootstrap/runPharos/CHANGELOG delete mode 100644 bootstrap/runPharos/CMakeLists.txt delete mode 100644 bootstrap/runPharos/ConfigDialog.cpp delete mode 100644 bootstrap/runPharos/ConfigDialog.h delete mode 100644 bootstrap/runPharos/MainWindow.cpp delete mode 100644 bootstrap/runPharos/MainWindow.h delete mode 100644 bootstrap/runPharos/MyWidget.cpp delete mode 100644 bootstrap/runPharos/MyWidget.h delete mode 100644 bootstrap/runPharos/TechnoRow.cpp delete mode 100644 bootstrap/runPharos/TechnoRow.h delete mode 100755 bootstrap/runPharos/compile.sh delete mode 100644 bootstrap/runPharos/icons/linux/Ankh.png delete mode 100644 bootstrap/runPharos/icons/macosx/Ankh.zip delete mode 100644 bootstrap/runPharos/main.cpp diff --git a/bootstrap/easyChams/CMakeLists.txt b/bootstrap/easyChams/CMakeLists.txt deleted file mode 100644 index d1f50507..00000000 --- a/bootstrap/easyChams/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -PROJECT(EASYCHAMS) - -CMAKE_MINIMUM_REQUIRED(VERSION 2.4.0) - -SET(CMAKE_BUILD_TYPE release) - -FIND_PACKAGE(Qt4 REQUIRED) - -INCLUDE(${QT_USE_FILE}) - -SET(CPP_FILES main.cpp MainWindow.cpp CompilationWidget.cpp CompileHighlighter.cpp ConfigDialog.cpp) - -QT4_WRAP_CPP(MOC_EASYCHAMS MainWindow.h CompilationWidget.h CompileHighlighter.h ConfigDialog.h) - -IF(APPLE) - ADD_EXECUTABLE(easyChams MACOSX_BUNDLE ${MOC_EASYCHAMS} ${CPP_FILES}) -ELSE(APPLE) - ADD_EXECUTABLE(easyChams ${MOC_EASYCHAMS} ${CPP_FILES}) -ENDIF(APPLE) - -TARGET_LINK_LIBRARIES(easyChams ${QT_LIBRARIES}) -INSTALL(TARGETS easyChams DESTINATION /) diff --git a/bootstrap/easyChams/CompilationWidget.cpp b/bootstrap/easyChams/CompilationWidget.cpp deleted file mode 100644 index d48e9a1b..00000000 --- a/bootstrap/easyChams/CompilationWidget.cpp +++ /dev/null @@ -1,266 +0,0 @@ -#include -using namespace std; - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "CompilationWidget.h" -#include "CompileHighlighter.h" -#include "ConfigDialog.h" - -CompilationWidget::CompilationWidget(QWidget *parent) - : QWidget(parent) - , _cProgram ("") - , _sourceRD ("") - , _hasHurricane (false) - , _hasIo (false) - , _hasTest (false) - , _hasCrlcore (false) - , _hasChams (false) - , _hasHurricaneAMS (false) { - - setStyleSheet("font-weight: normal;"); - - _hurricane = new QCheckBox ( "hurricane" , this ); - _io = new QCheckBox ( "io" , this ); - _test = new QCheckBox ( "test" , this ); - _crlcore = new QCheckBox ( "crlcore" , this ); - _chams = new QCheckBox ( "chams" , this ); - _hurricaneAMS = new QCheckBox ( "hurricaneAMS", this ); - - readSettings(); - - QVBoxLayout* vBoxOutilsGroup = new QVBoxLayout(); - vBoxOutilsGroup->addWidget(_hurricane); - vBoxOutilsGroup->addWidget(_io); - vBoxOutilsGroup->addWidget(_test); - vBoxOutilsGroup->addWidget(_crlcore); - vBoxOutilsGroup->addWidget(_chams); - vBoxOutilsGroup->addWidget(_hurricaneAMS); - if (!_hasHurricane) _hurricane->setVisible(false); - if (!_hasIo) _io->setVisible(false); - if (!_hasTest) _test->setVisible(false); - if (!_hasCrlcore) _crlcore->setVisible(false); - if (!_hasChams) _chams->setVisible(false); - if (!_hasHurricaneAMS) _hurricaneAMS->setVisible(false); - - QGroupBox* outilsGroup = new QGroupBox ( "Outils", this ); - outilsGroup->setLayout(vBoxOutilsGroup); - - _mode = new QComboBox (this); - QStringList modes; - modes << "Release" << "Debug"; - _mode->addItems(modes); - _static = new QCheckBox ("static", this); - _svnUp = new QCheckBox ("svn update", this); - _doc = new QCheckBox ("build doc", this); - _clean = new QCheckBox ("clean build", this); - - QVBoxLayout* vBoxOptionsGroup = new QVBoxLayout(); - vBoxOptionsGroup->addWidget(_mode); - vBoxOptionsGroup->addWidget(_static); - vBoxOptionsGroup->addWidget(_doc); - vBoxOptionsGroup->addWidget(_svnUp); - vBoxOptionsGroup->addWidget(_clean); - - QGroupBox* optionsGroup = new QGroupBox ( "Options", this ); - optionsGroup->setLayout(vBoxOptionsGroup); - - _compile = new QPushButton ( "Compile !", this ); - connect ( _compile, SIGNAL(clicked()), this, SLOT(compile()) ); - - _progressBar = new QProgressBar ( this ); - _progressBar->setRange(0,100); - _progressBar->setTextVisible(true); - connect ( this, SIGNAL(progress(int)), _progressBar, SLOT(setValue(int)) ); - - QVBoxLayout* vBoxLayout = new QVBoxLayout(); - vBoxLayout->addWidget(outilsGroup); - vBoxLayout->addWidget(optionsGroup); - vBoxLayout->addWidget(_compile); - vBoxLayout->addWidget(_progressBar); - - QWidget* menu = new QWidget ( this ); - menu->setLayout(vBoxLayout); - - _console = new QTextEdit(this); - _console->setFixedSize(800,400); - CompileHighlighter* highlight = new CompileHighlighter(_console->document()); - - QHBoxLayout* hBoxLayout = new QHBoxLayout(); - hBoxLayout->addWidget(menu); - hBoxLayout->addWidget(_console); - setLayout(hBoxLayout); - setWindowTitle("Easy compile for chams"); - -} - -void CompilationWidget::compile() { - QStringList arguments; - - _progressBar->reset(); - _console->clear(); - - _myProcess = new QProcess(this); - QStringList env = QProcess::systemEnvironment(); - //QString currentInstallRD = _installRD; - //if (_static->isChecked()) currentInstallRD += "/"+_mode->currentText()+".Static"; - //else currentInstallRD += "/"+_mode->currentText()+".Shared"; - //cerr << _installRD.toStdString() << endl; - //env << "HURRICANE_TOP=" + currentInstallRD; - //env << "CHAMS_TOP=" + currentInstallRD; - //env << "IO_TOP=" + currentInstallRD; - //env << "DYLD_LIBRARY_PATH=" + currentInstallRD + "/lib"; - //_myProcess->setEnvironment(env); - connect(_myProcess, SIGNAL(readyReadStandardError()) , this, SLOT(updateError())); - connect(_myProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(updateText())); - connect(_myProcess, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(updateExit(int, QProcess::ExitStatus))); - //arguments << "-s " + _sourceRD; - //arguments << "-i " + currentInstallRD; - //arguments << "-b " + _buildRD; - arguments << "-p" + _sourceRD; - arguments << "-m" + _mode->currentText(); - if (_static->isChecked()) arguments << "-s"; - if (_svnUp->isChecked()) arguments << "-u"; - if (_doc->isChecked()) arguments << "-d"; - if (_clean->isChecked()) arguments << "-c"; - if (_hurricane->isChecked()) arguments << "-t hurricane"; - if (_io->isChecked()) arguments << "-t io"; - if (_test->isChecked()) arguments << "-t test"; - if (_crlcore->isChecked()) arguments << "-t crlcore"; - if (_chams->isChecked()) arguments << "-t chams"; - if (_hurricaneAMS->isChecked()) arguments << "-t hurricaneAMS"; - - //for (int i = 0; i < arguments.size(); ++i) - // cout << arguments.at(i).toLocal8Bit().constData() << endl; - - _myProcess->start(_cProgram, arguments); -} - -void CompilationWidget::readSettings() { - _settings = new QSettings ( "chams", "easyChams" ); - - if ( !_settings->contains("Compilation program") ) { - QMessageBox::warning(this, tr("easyChams"), tr("It seems you do not have configured the application. Let's configure it now."), QMessageBox::Ok, QMessageBox::Ok); - runConfigDialog(true); - } - else { - _cProgram = _settings->value("Compilation program").toString(); - _sourceRD = _settings->value("Source root").toString(); - _hasHurricane = _settings->value("Hurricane").toBool(); - _hasIo = _settings->value("Io").toBool(); - _hasTest = _settings->value("Test").toBool(); - _hasCrlcore = _settings->value("Crlcore").toBool(); - _hasChams = _settings->value("Chams").toBool(); - _hasHurricaneAMS = _settings->value("HurricaneAMS").toBool(); - } -} - -void CompilationWidget::runConfigDialog(bool first) { - ConfigDialog* cfg = new ConfigDialog; - connect ( cfg, SIGNAL(configDone(QStringList)), this, SLOT(updateConfig(QStringList)) ); - if (!first) { - cfg->setCompileProgram(_cProgram); - cfg->setSourceRootDirectory(_sourceRD); - cfg->setHasHurricane(_hasHurricane); - cfg->setHasIo(_hasIo); - cfg->setHasTest(_hasTest); - cfg->setHasCrlcore(_hasCrlcore); - cfg->setHasChams(_hasChams); - cfg->setHasHurricaneAMS(_hasHurricaneAMS); - } - cfg->exec(); - writeSettings(); -} - -void CompilationWidget::reconfig() { - runConfigDialog(false); -} - -void CompilationWidget::writeSettings() { - _settings->setValue("Compilation program", _cProgram); - _settings->setValue("Source root" , _sourceRD); - _settings->setValue("Hurricane" , _hasHurricane); - _settings->setValue("Io" , _hasIo); - _settings->setValue("Test" , _hasTest); - _settings->setValue("Crlcore" , _hasCrlcore); - _settings->setValue("Chams" , _hasChams); - _settings->setValue("HurricaneAMS" , _hasHurricaneAMS); -} - -void CompilationWidget::updateConfig(QStringList list) { - _cProgram = list.value(0); // First value is compilation program - _sourceRD = list.value(1); // Second value is source root directory - _hasHurricane = (list.value(2) == "ON") ? true : false; // Third value is hasHurricane - _hasIo = (list.value(3) == "ON") ? true : false; // Forth value is hasIo - _hasTest = (list.value(4) == "ON") ? true : false; // Fifth value is hasTest - _hasCrlcore = (list.value(5) == "ON") ? true : false; // Sixth value is hasCrlcore - _hasChams = (list.value(6) == "ON") ? true : false; // Seventh value is hasChams - _hasHurricaneAMS = (list.value(7) == "ON") ? true : false; // Eight value is hasHurricaneAMS - // updates Tools visibility : - if (_hasHurricane) { _hurricane->setVisible(true); } - else { _hurricane->setVisible(false); _hurricane->setCheckState(Qt::Unchecked); } - if (_hasIo) { _io->setVisible(true); } - else { _io->setVisible(false); _io->setCheckState(Qt::Unchecked); } - if (_hasTest) { _test->setVisible(true); } - else { _test->setVisible(false); _test->setCheckState(Qt::Unchecked); } - if (_hasCrlcore) { _crlcore->setVisible(true); } - else { _crlcore->setVisible(false); _crlcore->setCheckState(Qt::Unchecked); } - if (_hasChams) { _chams->setVisible(true); } - else { _chams->setVisible(false); _chams->setCheckState(Qt::Unchecked); } - if (_hasHurricaneAMS) { _hurricaneAMS->setVisible(true); } - else { _hurricaneAMS->setVisible(false); _hurricaneAMS->setCheckState(Qt::Unchecked); } -} - - -void CompilationWidget::updateError() { - QByteArray data = _myProcess->readAllStandardError(); - _console->insertPlainText(QString::fromUtf8(data.constData())); - int end = _console->verticalScrollBar()->maximum(); - _console->verticalScrollBar()->setValue(end); -} - -void CompilationWidget::updateText() { - QByteArray data = _myProcess->readAllStandardOutput(); - QString str = QString::fromUtf8(data.constData()); - QRegExp rx = QRegExp ( "([0-9]+)%" ); - if ( str.contains(rx) ) { - bool ok; - int value = rx.cap(1).toInt ( &ok, 10 ); - emit(progress(value)); - } - _console->insertPlainText(QString(data)); - int end = _console->verticalScrollBar()->maximum(); - _console->verticalScrollBar()->setValue(end); -} - -void CompilationWidget::updateExit(int exitCode, QProcess::ExitStatus exitStatus) -{ - if (exitStatus == QProcess::NormalExit) { - _console->append("Completed Successfully"); - } - else { - _console->append("Error"); - } -} - -void CompilationWidget::about() -{ - QMessageBox::about(this, tr("About easyChams"), tr("

easyChams

" - "

This tool allows every one to easily update and compile chams project's sources.

" - "

Version 0.6
29/01/2010
by D.Dupuis

")); -} diff --git a/bootstrap/easyChams/CompilationWidget.h b/bootstrap/easyChams/CompilationWidget.h deleted file mode 100644 index 9c48459d..00000000 --- a/bootstrap/easyChams/CompilationWidget.h +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef __COMPILATION_WIDGET_H -#define __COMPILATION_WIDGET_H - -#include -#include - -class QCheckBox; -class QComboBox; -class QTextEdit; -class QPushButton; -class QProgressBar; -class QSettings; -class QStringList; -class QAction; - -class CompilationWidget : public QWidget { - Q_OBJECT - - public: - CompilationWidget (QWidget *parent =0); - ~CompilationWidget () {}; - - private: - QCheckBox* _hurricane; - QCheckBox* _io; - QCheckBox* _test; - QCheckBox* _crlcore; - QCheckBox* _chams; - QCheckBox* _hurricaneAMS; - QComboBox* _mode; - QCheckBox* _static; - QCheckBox* _svnUp; - QCheckBox* _doc; - QCheckBox* _clean; - QPushButton* _compile; - QProgressBar* _progressBar; - - QTextEdit* _console; - QProcess* _myProcess; - - QSettings* _settings; - QString _cProgram; - QString _sourceRD; - bool _hasHurricane; - bool _hasIo; - bool _hasTest; - bool _hasCrlcore; - bool _hasChams; - bool _hasHurricaneAMS; - - private: - void readSettings(); - void writeSettings(); - void runConfigDialog(bool first); - - public slots: - void compile(); - void updateError(); - void updateText(); - void updateExit(int exitCode, QProcess::ExitStatus exitStatus); - void updateConfig(QStringList list); - void reconfig(); - void about(); - - signals: - void progress(int value); -}; - -#endif diff --git a/bootstrap/easyChams/CompileHighlighter.cpp b/bootstrap/easyChams/CompileHighlighter.cpp deleted file mode 100644 index b193c4ec..00000000 --- a/bootstrap/easyChams/CompileHighlighter.cpp +++ /dev/null @@ -1,70 +0,0 @@ -// File : CompileHighlighter.cpp -// Date : 01.10.2009 -// Author : Dupuis Damien -// - -#include "CompileHighlighter.h" - -CompileHighlighter::CompileHighlighter(QTextDocument *parent) : QSyntaxHighlighter(parent) { - // defines rules - CompileHighlighterRule rule; - - //building/linking/scanning rule : blue Bold - _doingFormat.setForeground(Qt::blue); - _doingFormat.setFontWeight(QFont::Bold); - rule.format = _doingFormat; - rule.pattern = QRegExp("(^Building.*$|^Linking.*$|^Scanning.*$|^Built target.*$)"); - _rules.append(rule); - - //compile rule : darkBlue Normal - _compileFormat.setForeground(Qt::darkBlue); - rule.format = _compileFormat; - rule.pattern = QRegExp("(^\\[.*$)"); - _rules.append(rule); - - //install rule : cyan Bold - _installFormat.setForeground(Qt::cyan); - _installFormat.setFontWeight(QFont::Bold); - rule.format = _installFormat; - rule.pattern = QRegExp("(^Install the project.*$)"); - _rules.append(rule); - - //--install rule : darkCyan - _installingFormat.setForeground(Qt::darkCyan); - rule.format = _installingFormat; - rule.pattern = QRegExp("(^-- Install.*$)"); - _rules.append(rule); - - //--uptodate : darkCyan Italic - _uptodateFormat.setForeground(Qt::darkCyan); - _uptodateFormat.setFontItalic(true); - rule.format = _uptodateFormat; - rule.pattern = QRegExp("(^-- Up-to-date.*$)"); - _rules.append(rule); - - //warning rule - _warningFormat.setForeground(QColor("orange")); - rule.format = _warningFormat; - rule.pattern = QRegExp("(^/.*In function.*$|^/.*warning:.*$)"); - _rules.append(rule); - - //error rule - _errorFormat.setForeground(Qt::red); - rule.format = _errorFormat; - rule.pattern = QRegExp("(^/.*error:.*$|^make\\[.*$)"); - _rules.append(rule); -} - -void CompileHighlighter::highlightBlock(const QString &text) { - foreach (const CompileHighlighterRule &rule, _rules) { - QRegExp expression (rule.pattern); - int index = expression.indexIn(text); - while (index >= 0) { - int length = expression.matchedLength(); - setFormat(index, length, rule.format); - index = expression.indexIn(text, index + length); - } - } - setCurrentBlockState(0); -} - diff --git a/bootstrap/easyChams/CompileHighlighter.h b/bootstrap/easyChams/CompileHighlighter.h deleted file mode 100644 index 448a060f..00000000 --- a/bootstrap/easyChams/CompileHighlighter.h +++ /dev/null @@ -1,38 +0,0 @@ -// File : CompileHighlighter.h -// Date : 01.10.2009 -// Author : Dupuis Damien -// -#ifndef COMPILEHIGHLIGHTER_H -#define COMPILEHIGHLIGHTER_H - -#include -#include -#include - -class CompileHighlighter : public QSyntaxHighlighter { - Q_OBJECT - - public: - CompileHighlighter ( QTextDocument *parent = 0 ); - - protected: - void highlightBlock ( const QString &text ); - - private: - struct CompileHighlighterRule { - QTextCharFormat format; - QRegExp pattern; - }; - QVector _rules; - - QTextCharFormat _compileFormat; - QTextCharFormat _warningFormat; - QTextCharFormat _errorFormat; - QTextCharFormat _installFormat; - QTextCharFormat _installingFormat; - QTextCharFormat _uptodateFormat; - QTextCharFormat _doingFormat; -}; - - -#endif diff --git a/bootstrap/easyChams/ConfigDialog.cpp b/bootstrap/easyChams/ConfigDialog.cpp deleted file mode 100644 index 47a31134..00000000 --- a/bootstrap/easyChams/ConfigDialog.cpp +++ /dev/null @@ -1,83 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#include "ConfigDialog.h" - -#define LINEEDITWIDTH 300 - -ConfigDialog::ConfigDialog() { - // First GroupBox : Directories - // Create Widgets - QLabel* compileL = new QLabel(tr("Compilation script:"), this); - QLabel* sourceL = new QLabel(tr("Chams source root directory:"), this); - _compileE = new QLineEdit ("", this); - _sourceE = new QLineEdit ("", this); - _compileE->setFixedWidth(LINEEDITWIDTH); - _sourceE->setFixedWidth (LINEEDITWIDTH); - QPushButton* compileB = new QPushButton(tr("&Browse")); - QPushButton* sourceB = new QPushButton(tr("&Browse")); - QDialogButtonBox* bBox = new QDialogButtonBox(QDialogButtonBox::Ok); - // Connect SIGNAL/SLOTS - connect(compileB, SIGNAL(clicked()) , this, SLOT(chooseCProgram())); - connect(sourceB , SIGNAL(clicked()) , this, SLOT(chooseSourceRD())); - connect(bBox , SIGNAL(accepted()), this, SLOT(doConfig())); - // Create GroupBox - QGroupBox* directories = new QGroupBox("Directories", this); - QGridLayout* gLayout = new QGridLayout(this); - gLayout->addWidget( compileL, 0, 0, 1, 1); - gLayout->addWidget(_compileE, 0, 1, 1, 2); - gLayout->addWidget( compileB, 0, 3, 1, 1); - gLayout->addWidget( sourceL , 1, 0, 1, 1); - gLayout->addWidget(_sourceE , 1, 1, 1, 2); - gLayout->addWidget( sourceB , 1, 3, 1, 1); - directories->setLayout(gLayout); - // Second GroupBox : Tools - // Create Widgets - _hurCB = new QCheckBox("Hurricane" , this); - _ioCB = new QCheckBox("Io" , this); - _testCB = new QCheckBox("Test (not in svn)", this); - _crlCB = new QCheckBox("Crlcore" , this); - _chamsCB = new QCheckBox("Chams" , this); - _hurAMSCB = new QCheckBox("HurricaneAMS" , this); - // Create GroupBox - QGroupBox* tools = new QGroupBox("Available Tools", this); - QGridLayout* grLayout = new QGridLayout(this); - grLayout->addWidget(_hurCB , 0, 0, 1, 1); - grLayout->addWidget(_ioCB , 1, 0, 1, 1); - grLayout->addWidget(_testCB , 2, 0, 1, 1); - grLayout->addWidget(_crlCB , 0, 1, 1, 1); - grLayout->addWidget(_chamsCB , 1, 1, 1, 1); - grLayout->addWidget(_hurAMSCB, 2, 1, 1, 1); - tools->setLayout(grLayout); - // ConfigDialog Layout - QVBoxLayout* vLayout = new QVBoxLayout; - vLayout->addWidget(directories); - vLayout->addWidget(tools); - vLayout->addWidget(bBox); - setLayout(vLayout); -} - -void ConfigDialog::chooseCProgram() { - _compileE->setText(QFileDialog::getOpenFileName(this, tr("Select chams.sh"), "", tr("Shell script (*.sh)"))); -} - -void ConfigDialog::chooseSourceRD() { - _sourceE->setText(QFileDialog::getExistingDirectory(this, tr("Select the chams source root directory"))); -} - -void ConfigDialog::doConfig() { - QStringList list; - QString hur = (_hurCB->isChecked()) ? "ON" : "OFF"; - QString io = (_ioCB->isChecked()) ? "ON" : "OFF"; - QString test = (_testCB->isChecked()) ? "ON" : "OFF"; - QString crl = (_crlCB->isChecked()) ? "ON" : "OFF"; - QString chams = (_chamsCB->isChecked()) ? "ON" : "OFF"; - QString hurAMS = (_hurAMSCB->isChecked()) ? "ON" : "OFF"; - list << _compileE->text() << _sourceE->text() << hur << io << test << crl << chams << hurAMS; - emit configDone(list); - accept(); -} diff --git a/bootstrap/easyChams/ConfigDialog.h b/bootstrap/easyChams/ConfigDialog.h deleted file mode 100644 index 2df9ab1c..00000000 --- a/bootstrap/easyChams/ConfigDialog.h +++ /dev/null @@ -1,88 +0,0 @@ -#ifndef CONFIGDIALOG_H -#define CONFIGDIALOG_H - -#include -#include -#include - -class QLabel; -class QStringList; - -class ConfigDialog : public QDialog { - Q_OBJECT - -public: - ConfigDialog(); - inline void setCompileProgram(QString); - inline void setSourceRootDirectory(QString); - inline void setHasHurricane(bool); - inline void setHasIo(bool); - inline void setHasTest(bool); - inline void setHasCrlcore(bool); - inline void setHasChams(bool); - inline void setHasHurricaneAMS(bool); - -public slots: - void chooseCProgram(); - void chooseSourceRD(); - void doConfig(); - -signals: - void configDone (QStringList list); - -private: - QLineEdit* _compileE; - QLineEdit* _sourceE; - QCheckBox* _hurCB; - QCheckBox* _ioCB; - QCheckBox* _testCB; - QCheckBox* _crlCB; - QCheckBox* _chamsCB; - QCheckBox* _hurAMSCB; -}; - -inline void ConfigDialog::setCompileProgram (QString cProgram ) { _compileE->setText(cProgram); }; -inline void ConfigDialog::setSourceRootDirectory (QString rDirectory) { _sourceE->setText(rDirectory); }; - -inline void ConfigDialog::setHasHurricane(bool state) { - if (state) - _hurCB->setCheckState(Qt::Checked); - else - _hurCB->setCheckState(Qt::Unchecked); -}; - -inline void ConfigDialog::setHasIo(bool state) { - if (state) - _ioCB->setCheckState(Qt::Checked); - else - _ioCB->setCheckState(Qt::Unchecked); -}; - -inline void ConfigDialog::setHasTest(bool state) { - if (state) - _testCB->setCheckState(Qt::Checked); - else - _testCB->setCheckState(Qt::Unchecked); -}; - -inline void ConfigDialog::setHasCrlcore(bool state) { - if (state) - _crlCB->setCheckState(Qt::Checked); - else - _crlCB->setCheckState(Qt::Unchecked); -}; - -inline void ConfigDialog::setHasChams(bool state) { - if (state) - _chamsCB->setCheckState(Qt::Checked); - else - _chamsCB->setCheckState(Qt::Unchecked); -}; - -inline void ConfigDialog::setHasHurricaneAMS(bool state) { - if (state) - _hurAMSCB->setCheckState(Qt::Checked); - else - _hurAMSCB->setCheckState(Qt::Unchecked); -}; -#endif diff --git a/bootstrap/easyChams/MainWindow.cpp b/bootstrap/easyChams/MainWindow.cpp deleted file mode 100644 index b9f21d8e..00000000 --- a/bootstrap/easyChams/MainWindow.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#include -#include -#include - -#include "MainWindow.h" - -MainWindow::MainWindow() -{ - CompilationWidget* cWidget = new CompilationWidget(this); - setCentralWidget(cWidget); - - QAction* configAct = new QAction(tr("&Configure"), this); - configAct->setStatusTip(tr("Configure the application")); - connect(configAct, SIGNAL(triggered()), cWidget, SLOT(reconfig())); - QAction* aboutAct = new QAction(tr("&About"), this); - aboutAct->setStatusTip(tr("Show the about dialog box")); - connect(aboutAct, SIGNAL(triggered()), cWidget, SLOT(about())); - QMenu* editMenu = menuBar()->addMenu(tr("&Edit")); - editMenu->addAction(configAct); - QMenu* helpMenu = menuBar()->addMenu(tr("&Help")); - helpMenu->addAction(aboutAct); -} diff --git a/bootstrap/easyChams/MainWindow.h b/bootstrap/easyChams/MainWindow.h deleted file mode 100644 index 80a519f7..00000000 --- a/bootstrap/easyChams/MainWindow.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef __MAINWINDOW_H -#define __MAINWINDOW_H - -#include - -#include "CompilationWidget.h" - -class MainWindow : public QMainWindow { - Q_OBJECT - - public: - MainWindow (); - ~MainWindow () {}; -}; -#endif diff --git a/bootstrap/easyChams/README b/bootstrap/easyChams/README deleted file mode 100644 index 70cc37a6..00000000 --- a/bootstrap/easyChams/README +++ /dev/null @@ -1,5 +0,0 @@ -easyChams readme - -This tool allows every one to easily compile & install chams project's sources. - -To compile this tool use ./compile.sh which is platform independant. diff --git a/bootstrap/easyChams/compile.sh b/bootstrap/easyChams/compile.sh deleted file mode 100755 index bcac6239..00000000 --- a/bootstrap/easyChams/compile.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -ARCH=`uname -m` - -if [ ! -e "./compile.sh" ]; then - echo "You must run compile.sh in its own direcotry : ./compile.sh" - exit 1 -fi - -if [ ! -d "$ARCH/build" ]; then - echo "Creating build directory" - mkdir -p $ARCH/build -fi - -cd $ARCH/build && cmake ../.. && make DESTDIR=.. -j2 install diff --git a/bootstrap/easyChams/icons/linux/Eye_of_Horus.png b/bootstrap/easyChams/icons/linux/Eye_of_Horus.png deleted file mode 100644 index 85b5a497a22bdb0a15cea4fd4d35197a84d4236b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29336 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 AX#fBK diff --git a/bootstrap/easyChams/main.cpp b/bootstrap/easyChams/main.cpp deleted file mode 100644 index db30f5a8..00000000 --- a/bootstrap/easyChams/main.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include -using namespace std; - -#include -#include -#include -#include "MainWindow.h" - -int main ( int argc, char **argv ) { - QApplication app ( argc, argv ); - - MainWindow mWindow; - mWindow.show(); - - return app.exec(); -} diff --git a/bootstrap/easyChams/script/chams.sh b/bootstrap/easyChams/script/chams.sh deleted file mode 100755 index 9fff19e8..00000000 --- a/bootstrap/easyChams/script/chams.sh +++ /dev/null @@ -1,153 +0,0 @@ -#!/bin/sh -VERSION="0.5" -DATE="25/01/2010" -version() { - echo "$O version $VERSION - $DATE - by D.Dupuis" - echo "" -} - -usage() { - echo "Usage $0 -s sourceRD -i installRD -b buildRD -t tool [-druc]" - echo "" - echo " Mandatory arguments:" - echo " -p path : path to chams root directory" - echo " -t tool : specify which tool to compile (there may be several -t arguments" - echo " -m mode : specify build mode (Release or Debug)" - echo "" - echo " Optionnal arguments:" - echo " -s : enable static build" - echo " -d : generate documentation (if available)" - echo " -u : run svn update before compilation" - echo " -c : clean build before compilation" - echo "" - exit 1 -} - -resume() { - echo "" - echo "Source directory : $SOURCE" - echo "Install directory : $INSTALL" - echo "Builb directory : $BUILD" - echo "Tools : $TOOLS" - echo "Generate doc : $DOC" - echo "Svn update : $SVNUP" - echo "" -} - -guessOs () -{ - case "`uname -srm`" in - Linux*el5*x86_64) OSTYPE="Linux.SLSoC5x_64";; - Linux*el5*) OSTYPE="Linux.SLSoC5x";; - Linux*2.6.23.13*SoC*) OSTYPE="Linux.SLSoC5x";; - Linux*EL*x86_64*) OSTYPE="Linux.SLA4x_64";; - Linux*SLA*) OSTYPE="Linux.SLA4x";; - Linux*EL*i686*) OSTYPE="Linux.SLA4x";; - Linux*FC2*) OSTYPE="Linux.FC2";; - Linux*i686*) OSTYPE="Linux.i686";; - SunOS\ 5*) OSTYPE="Solaris";; - Darwin*) OSTYPE="Darwin";; - *) OSTYPE="`uname -sr`";; - esac -} - - -prepareEnv() { - guessOs - if [ ! -d "$SOURCE" ] - then - echo "Specified root path does not exist" - exit 1 - fi - ROOT="$SOURCE/$OSTYPE/$MODE.$LIBMODE" - INSTALL="$ROOT/install" - BUILD="$ROOT/build" - export HURRICANE_TOP="$INSTALL" - export IO_TOP="$INSTALL" - export CHAMS_TOP="$INSTALL" - export DYLD_LIBRARY_PATH="$INSTALL/lib" -} - -compile() { - prepareEnv - for TOOL in $TOOLS - do - if [ $SVNUP -eq 1 ] - then - cd "$SOURCE/$TOOL" - if [ `svn status -u | grep "^M.*\*" | wc -l` -gt 0 ] - then - echo "THERE MIGHT BE CONFLICTS WHILE SVN UPDATING" - echo " -> Please update manually" - exit 1 - fi - #svn update --accept postpone # par defaut on prendra la decision en cas de conflits plus tard (au cas ou le status n'est pas suffisant) - svn update # par defaut on prendra la decision en cas de conflits plus tard (au cas ou le status n'est pas suffisant) - fi - if [ ! -d "$BUILD/$TOOL" ] - then - echo "$BUILD/$TOOL does not exist: create it now !" - mkdir -p "$BUILD/$TOOL" - fi - cd "$BUILD/$TOOL" - if [ $? -ne 0 ] - then - echo "Cannot find build directory" - exit 1 - fi - if [ $CLEAN -eq 1 ] - then - make clean - rm -rf CMakeCache.txt CMakeFiles Makefile cmake_install.cmake install_manifest.txt - fi - echo "#### Now compiling $TOOL ####" - echo "" - cmake -D "CMAKE_BUILD_TYPE:STRING=$MODE" -D "BUILD_DOC:STRING=$DOC" -D "BUILD_SHARED_LIBS:STRING=$SHARED" $SOURCE/$TOOL - make "DESTDIR=$INSTALL" -j8 install - if [ $? -ne 0 ] - then - exit 1 - fi - echo "" - done -} - -SOURCE="" -INSTALL="" -BUILD="" -TOOLS="" -OSTYPE="" -MODE="" -LIBMODE="Shared" -SHARED="ON" -DOC="OFF" -SVNUP=0 -CLEAN=0 - -if [ $# -lt 1 ]; then - usage - exit 1 -fi - -while getopts :p:t:m:sduc option -do - case "${option}" - in - p) SOURCE=${OPTARG};; - t) TOOL=${OPTARG} - TOOLS="$TOOLS $TOOL";; - m) MODE=${OPTARG};; - s) SHARED="OFF" - LIBMODE="Static";; - d) DOC="ON";; - u) SVNUP=1;; - c) CLEAN=1;; - *) version - usage;; - esac -done -shift "$(( $OPTIND - 1 ))" - -#resume -version -compile diff --git a/bootstrap/runPharos/CHANGELOG b/bootstrap/runPharos/CHANGELOG deleted file mode 100644 index bc95b8c6..00000000 --- a/bootstrap/runPharos/CHANGELOG +++ /dev/null @@ -1,21 +0,0 @@ -## VERSION 1.0 --- 19 février 2010 -- First releasable version tested on Mac Os and Linux - -## VERSION 0.6 --- 19 février 2010 -- Adds settings support to configure the application. - -## VERSION 0.5 --- 16 février 2010 -- Adds compile.sh script to easily compile the application. -The script uses cmake and can be run under Mac / Linux. - -## VERSION 0.4 -- Adds support for several technologies. - -## VERSION 0.3 --- novembre 2010 -- Can Show / Hide console. - -## VERSION 0.2 -- Adds a text console to catch all output from Pharos. - -## VERSION 0.1 -- First version : can run Pharos. diff --git a/bootstrap/runPharos/CMakeLists.txt b/bootstrap/runPharos/CMakeLists.txt deleted file mode 100644 index bde18a62..00000000 --- a/bootstrap/runPharos/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -PROJECT(RUNPHAROS) - -CMAKE_MINIMUM_REQUIRED(VERSION 2.4.0) - -SET(CMAKE_BUILD_TYPE release) - -FIND_PACKAGE(Qt4 REQUIRED) - -INCLUDE(${QT_USE_FILE}) - -SET(CPP_FILES main.cpp MainWindow.cpp MyWidget.cpp ConfigDialog.cpp TechnoRow.cpp) - -QT4_WRAP_CPP(MOC_RUNPHAROS MainWindow.h MyWidget.h ConfigDialog.h TechnoRow.h) - -IF(APPLE) - ADD_EXECUTABLE(runPharos MACOSX_BUNDLE ${MOC_RUNPHAROS} ${CPP_FILES}) -ELSE(APPLE) - ADD_EXECUTABLE(runPharos ${MOC_RUNPHAROS} ${CPP_FILES}) -ENDIF(APPLE) - -TARGET_LINK_LIBRARIES(runPharos ${QT_LIBRARIES}) -INSTALL(TARGETS runPharos DESTINATION /) diff --git a/bootstrap/runPharos/ConfigDialog.cpp b/bootstrap/runPharos/ConfigDialog.cpp deleted file mode 100644 index a0a0c362..00000000 --- a/bootstrap/runPharos/ConfigDialog.cpp +++ /dev/null @@ -1,152 +0,0 @@ -#include -using namespace std; - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "ConfigDialog.h" -#include "TechnoRow.h" - -#define LINEEDITWIDTH 300 - -int ConfigDialog::_rowID = 0; - -ConfigDialog::ConfigDialog() { - setStyleSheet("font-weight: normal;"); - // First GroupBox : Directories - // Create widgets - QLabel* programL = new QLabel(tr("Pharos binary") , this); - QLabel* libraryL = new QLabel(tr("LD_LIBRARY_PATH") , this); - _programE = new QLineEdit ("", this); - _libraryE = new QLineEdit ("", this); - _programE->setFixedWidth(LINEEDITWIDTH); - _libraryE->setFixedWidth(LINEEDITWIDTH); - _programE->setToolTip(tr("Select Pharos binary file.")); - _libraryE->setToolTip(tr("Select the directory containing c++ dynamic libraries used by Pharos.")); - QPushButton* programB = new QPushButton(tr("&Browse")); - QPushButton* libraryB = new QPushButton(tr("&Browse")); - // Connect SIGNAL/SLOTS - connect(programB , SIGNAL(clicked()), this, SLOT(chooseProgram())); - connect(libraryB , SIGNAL(clicked()), this, SLOT(chooseLibrary())); - // Create GroupBox - QGroupBox* directories = new QGroupBox("Directories", this); - QGridLayout* gLayout = new QGridLayout(this); - gLayout->addWidget( programL , 0, 0, 1, 1); - gLayout->addWidget(_programE , 0, 1, 1, 1); - gLayout->addWidget( programB , 0, 2, 1, 1); - gLayout->addWidget( libraryL , 1, 0, 1, 1); - gLayout->addWidget(_libraryE , 1, 1, 1, 1); - gLayout->addWidget( libraryB , 1, 2, 1, 1); - directories->setLayout(gLayout); - // Second GroupBox : Technos - // Create Widgets / Layout - QLabel* name = new QLabel(tr("Name")); - QLabel* file = new QLabel(tr("XML Config File")); - name->setFixedWidth(80); - file->setFixedWidth(LINEEDITWIDTH); - _rowLayout = new QVBoxLayout(); - _rowLayout->setContentsMargins(0,0,0,0); - _rowLayout->setSpacing(0); - addRow(); - // Create GroupBox - QGroupBox* technos = new QGroupBox("Technologies", this); - QHBoxLayout* headerLayout = new QHBoxLayout(); - headerLayout->addSpacing(20); - headerLayout->addWidget(name); - headerLayout->addWidget(file); - QVBoxLayout* techLayout = new QVBoxLayout(); - techLayout->addLayout(headerLayout); - techLayout->addLayout(_rowLayout); - technos->setLayout(techLayout); - - QDialogButtonBox* dbBox = new QDialogButtonBox(QDialogButtonBox::Ok); - _add = new QPushButton("&Add technology", this); - dbBox->addButton(_add, QDialogButtonBox::ActionRole); - connect(_add , SIGNAL(clicked()) , this, SLOT(addRow())); - connect(dbBox, SIGNAL(accepted()), this, SLOT(doConfig())); - - QVBoxLayout* tLayout = new QVBoxLayout(); - tLayout->setContentsMargins(0,0,0,0); - tLayout->addWidget(directories); - tLayout->addWidget(technos); - tLayout->addWidget(dbBox); - setLayout(tLayout); - setWindowTitle(tr("Configure runPharos")); - layout()->setSizeConstraint(QLayout::SetFixedSize); -} - - -void ConfigDialog::addRow() { - TechnoRow* row = new TechnoRow(_rowID++, this); - connect(row, SIGNAL(suppressed(int)), this, SLOT(removeRow(int))); - row->setContentsMargins(0,0,0,0); - _rows.push_back(row); - _rowLayout->addWidget(row); -} - -void ConfigDialog::addRow(QString& name, QString& file) { - TechnoRow* row = new TechnoRow(_rowID++, this); - row->setName(name); - row->setFile(file); - connect(row, SIGNAL(suppressed(int)), this, SLOT(removeRow(int))); - row->setContentsMargins(0,0,0,0); - _rows.push_back(row); - _rowLayout->addWidget(row); -} - -void ConfigDialog::removeRow(int id) { - TechnoRow* row = _rows[id]; - _rowLayout->removeWidget(row); - row->hide(); -} - -void ConfigDialog::doConfig() { - QStringList list; - if ( _programE->text().isEmpty() || _libraryE->text().isEmpty() ) { - QMessageBox::warning(this, tr("runPharos warning"), tr("You must set all directories.")); - return; - } - list << _programE->text() << _libraryE->text(); - vector > technos; - for ( size_t i = 0 ; i < _rows.size() ; i++ ) { - TechnoRow* row = _rows[i]; - if (row->isVisible()) { - if((row->getName() != "") && (row->getFile() != "")) { - technos.push_back(pair(row->getName(), row->getFile())); - } else { - QMessageBox::warning(this, tr("runPharos warning"), tr("You must set a valid name and file for each technology.")); - return; - } - } - } - if (technos.size() > 0) { - emit(configDone(list, technos)); - accept(); - } else { - QMessageBox::warning(this, tr("runPharos warning"), tr("You must set at least one valid technology.")); - } -} - -void ConfigDialog::chooseProgram() { - _programE->setText(QFileDialog::getOpenFileName(this, tr("Select Pharos binary file"), "", tr("Executable file (*)"))); -} - -void ConfigDialog::chooseLibrary() { - _libraryE->setText(QFileDialog::getExistingDirectory(this, tr("Select directory containing c++ dynamic libraries"))); -} - -void ConfigDialog::setProgram(QString program) { - _programE->setText(program); -} - -void ConfigDialog::setLibrary(QString library) { - _libraryE->setText(library); -} - diff --git a/bootstrap/runPharos/ConfigDialog.h b/bootstrap/runPharos/ConfigDialog.h deleted file mode 100644 index 118027ca..00000000 --- a/bootstrap/runPharos/ConfigDialog.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef CONFIGDIALOG_H -#define CONFIGDIALOG_H - -#include - -#include - -class QVBoxLayout; -class QPushButton; -class QLineEdit; -class QStringList; -class TechnoRow; - -class ConfigDialog : public QDialog { - Q_OBJECT - -public: - ConfigDialog(); - void setProgram(QString); - void setLibrary(QString); - -signals: - void configDone(QStringList&, std::vector >&); - -public slots: - void addRow(); - void addRow(QString&, QString&); - void removeRow(int); - void doConfig(); - void chooseProgram(); - void chooseLibrary(); - - -private: - QLineEdit* _programE; - QLineEdit* _libraryE; - static int _rowID; - QPushButton* _add; - QVBoxLayout* _rowLayout; - std::vector _rows; -}; - -#endif diff --git a/bootstrap/runPharos/MainWindow.cpp b/bootstrap/runPharos/MainWindow.cpp deleted file mode 100644 index 3d9d292c..00000000 --- a/bootstrap/runPharos/MainWindow.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include -#include -#include - -#include "MainWindow.h" -#include "MyWidget.h" - -MainWindow::MainWindow() -{ - MyWidget* mWidget = new MyWidget(this); - setCentralWidget(mWidget); - - QAction* configAct = new QAction(tr("&Configure"), this); - configAct->setStatusTip(tr("Configure the application")); - connect(configAct, SIGNAL(triggered()), mWidget, SLOT(reconfig())); - QAction* aboutAct = new QAction(tr("&About"), this); - aboutAct->setStatusTip(tr("Show the about dialog box")); - connect(aboutAct, SIGNAL(triggered()), mWidget, SLOT(about())); - QMenu* editMenu = menuBar()->addMenu(tr("&Edit")); - editMenu->addAction(configAct); - QMenu* helpMenu = menuBar()->addMenu(tr("&Help")); - helpMenu->addAction(aboutAct); -} diff --git a/bootstrap/runPharos/MainWindow.h b/bootstrap/runPharos/MainWindow.h deleted file mode 100644 index ef0bf8be..00000000 --- a/bootstrap/runPharos/MainWindow.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef __MAINWINDOW_H -#define __MAINWINDOW_H - -#include - -class MainWindow : public QMainWindow { - Q_OBJECT - - public: - MainWindow (); - ~MainWindow () {}; -}; -#endif diff --git a/bootstrap/runPharos/MyWidget.cpp b/bootstrap/runPharos/MyWidget.cpp deleted file mode 100644 index 5e1b6921..00000000 --- a/bootstrap/runPharos/MyWidget.cpp +++ /dev/null @@ -1,204 +0,0 @@ -#include -using namespace std; - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "MyWidget.h" -#include "ConfigDialog.h" - -MyWidget::MyWidget(QWidget *parent) : QWidget(parent) { - - setStyleSheet("font-weight: normal;"); - - _technoCB = new QComboBox(this); - _technoCB->setFixedWidth(120); - readSettings(); - updateComboBox(); - - _console = new QTextEdit(this); - _console->setFixedSize(600,350); - _console->setFontPointSize(10); - - _execute = new QPushButton ( "&Execute", this ); - _execute->setDefault(true); - _stop = new QPushButton ( "&Stop", this ); - _stop->setEnabled(false); - _show = new QPushButton ( "&Show console", this ); - _clear = new QPushButton ( "&Clear", this ); - - QDialogButtonBox* buttons = new QDialogButtonBox(); - buttons->addButton ( _execute, QDialogButtonBox::RejectRole ); - buttons->addButton ( _stop , QDialogButtonBox::AcceptRole ); - buttons->addButton ( _show , QDialogButtonBox::ResetRole ); - buttons->addButton ( _clear , QDialogButtonBox::ResetRole ); - - connect ( _execute, SIGNAL(clicked()), this , SLOT(execute()) ); - connect ( _stop , SIGNAL(clicked()), this , SLOT(stop()) ); - connect ( _show , SIGNAL(clicked()), this , SLOT(showOrHide()) ); - connect ( _clear , SIGNAL(clicked()), _console, SLOT(clear()) ); - - QHBoxLayout* hLayout = new QHBoxLayout(); - hLayout->addWidget(buttons, Qt::AlignRight); - QVBoxLayout* layout = new QVBoxLayout(); - layout->addWidget(_technoCB); - layout->addWidget(_console); - layout->addLayout(hLayout); - setLayout(layout); - _clear->hide(); - _console->hide(); - setWindowTitle("Run Pharos"); - setFixedSize(400,110); -} - -void MyWidget::readSettings() { - _settings = new QSettings("chams", "runPharos"); - - if ( !_settings->contains("Program") ) { - QMessageBox::warning(this, tr("runPharos"), tr("It seems you do not have configured the application. Let's configure it now."), QMessageBox::Ok, QMessageBox::Ok); - runConfigDialog(true); - } else { - _program = _settings->value("Program").toString(); - _library = _settings->value("Library").toString(); - _nbTechno = _settings->value("NbTechno").toInt(); - _technos.clear(); - for ( int i = 0 ; i < _nbTechno ; i++ ) { - QString name = QString("name_%1").arg(i); - QString file = QString("file_%1").arg(i); - _technos.push_back(pair(_settings->value(name).toString(), _settings->value(file).toString())); - } - } -} - -void MyWidget::runConfigDialog(bool first) { - ConfigDialog* cfg = new ConfigDialog; - connect(cfg, SIGNAL(configDone(QStringList&, std::vector >&)), this, SLOT(updateConfig(QStringList&, std::vector >&))); - if(!first) { - cfg->setProgram(_program); - cfg->setLibrary(_library); - // on enleve la row par defaut vide - cfg->removeRow(0); - // on rajoute toutes les technos lues dans les settings: - for ( size_t i = 0 ; i < _technos.size() ; i++ ) { - cfg->addRow(_technos[i].first, _technos[i].second); - } - } - cfg->exec(); - writeSettings(); -} - -void MyWidget::reconfig() { - runConfigDialog(false); -} - -void MyWidget::writeSettings() { - _settings->setValue("Program" , _program); - _settings->setValue("Library" , _library); - _settings->setValue("NbTechno" , _nbTechno); - for ( size_t i = 0 ; i < _technos.size() ; i++ ) { - QString name = QString("name_%1").arg(i); - QString file = QString("file_%1").arg(i); - _settings->setValue(name, _technos[i].first); - _settings->setValue(file, _technos[i].second); - } -} - -void MyWidget::updateConfig(QStringList& list, vector >& technos) { - _program = list.value(0); - _library = list.value(1); - _technos.clear(); - for ( size_t i = 0 ; i < technos.size() ; i++ ) { - _technos.push_back(pair(technos[i].first, technos[i].second)); - } - _nbTechno = _technos.size(); - updateComboBox(); -} - -void MyWidget::updateComboBox() { - if (_technoCB->count() != 0) - _technoCB->clear(); - QStringList choices; - for ( size_t i = 0 ; i < _technos.size() ; i++ ) { - choices << _technos[i].first; - } - _technoCB->addItems(choices); -} - -void MyWidget::about() { - QMessageBox::about(this, tr("About runPharos"), tr("

runPharos

" - "

This tool allows every one to easily run pharos on a specified technology.

" - "

Version 1.0
19/02/2010
by D.Dupuis

")); - -} - -void MyWidget::execute() { - QStringList arguments; - QString techno (""); - QString name = _technoCB->currentText(); - for ( size_t i = 0 ; i < _technos.size() ; i++ ) { - if ( _technos[i].first == name ) - techno = _technos[i].second; - } - if ( techno == "" ) - return; - arguments << techno; - - _myProcess = new QProcess(this); - QStringList env = QProcess::systemEnvironment(); - QString DYLD = QString("DYLD_LIBRARY_PATH=%1").arg(_library); - QString LD = QString("LD_LIBRARY_PATH=%1").arg(_library); - QString PP = QString("PYTHONPATH=%1/python").arg(_library); - env << DYLD << LD << PP; - _myProcess->setEnvironment(env); - connect(_myProcess, SIGNAL(readyReadStandardError()) , this, SLOT(updateError())); - connect(_myProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(updateText())); - connect(_myProcess, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(finished(int, QProcess::ExitStatus)) ); - _myProcess->start(_program, arguments); - _execute->setEnabled(false); - _stop->setEnabled(true); -} - -void MyWidget::stop() { - _myProcess->terminate(); - _execute->setEnabled(true); - _stop->setEnabled(false); -} - -void MyWidget::showOrHide() { - if ( _console->isHidden() ) { - _show->setText("&Hide console"); - _console->show(); - _clear->show(); - setFixedSize(620,450); - } - else { - _show->setText("&Show console"); - _console->hide(); - _clear->hide(); - setFixedSize(400,110); - } -} - -void MyWidget::updateError() { - QByteArray data = _myProcess->readAllStandardError(); - _console->insertPlainText(QString(data)); -} - -void MyWidget::updateText() { - QByteArray data = _myProcess->readAllStandardOutput(); - _console->insertPlainText(QString(data)); -} - -void MyWidget::finished(int exitCode, QProcess::ExitStatus exitStatus) { - _execute->setEnabled(true); - _stop->setEnabled(false); -} diff --git a/bootstrap/runPharos/MyWidget.h b/bootstrap/runPharos/MyWidget.h deleted file mode 100644 index 90d66fdc..00000000 --- a/bootstrap/runPharos/MyWidget.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef __MY_WIDGET_H -#define __MY_WIDGET_H - -#include - -#include -#include -#include - -class QComboBox; -class QPushButton; -class QTextEdit; -class QSettings; -class QStringList; - -class MyWidget : public QWidget { - Q_OBJECT - - public: - MyWidget (QWidget *parent =0); - ~MyWidget () {}; - - QComboBox* _technoCB; - QPushButton* _execute; - QPushButton* _stop; - QPushButton* _show; - QPushButton* _clear; - QTextEdit* _console; - - QProcess* _myProcess; - - QSettings* _settings; - QString _program; - QString _library; - int _nbTechno; - std::vector > _technos; - - private: - void readSettings(); - void writeSettings(); - void runConfigDialog(bool); - void updateComboBox(); - - public slots: - void about(); - void reconfig(); - void execute(); - void stop(); - void finished(int exitCode, QProcess::ExitStatus exitStatus); - void showOrHide(); - void updateError(); - void updateText(); - void updateConfig(QStringList&, std::vector >&); -}; - -#endif diff --git a/bootstrap/runPharos/TechnoRow.cpp b/bootstrap/runPharos/TechnoRow.cpp deleted file mode 100644 index c689c0a8..00000000 --- a/bootstrap/runPharos/TechnoRow.cpp +++ /dev/null @@ -1,68 +0,0 @@ -#include -using namespace std; - -#include -#include -#include -#include -#include -#include - -#include "TechnoRow.h" - -TechnoRow::TechnoRow(int id, QWidget *parent) : QWidget(parent), _id(id) { - _suppress = new QPushButton( tr("-"), this); - _suppress->setStyleSheet("font: bold 24pt; color: red; border: 0px"); - _suppress->setFixedWidth(_suppress->height()); - _name = new QLineEdit(this); - _name->setFixedWidth(80); - _file = new QLineEdit(this); - _file->setFixedWidth(300); - _browse = new QPushButton( tr("&browse"), this); - - connect(_suppress, SIGNAL(clicked()), this, SLOT(suppress())); - connect(_browse , SIGNAL(clicked()), this, SLOT(chooseFile())); - - //QDialogButtonBox* buttons = new QDialogButtonBox(); - //buttons->addButton ( _execute, QDialogButtonBox::RejectRole ); - //buttons->addButton ( _stop , QDialogButtonBox::AcceptRole ); - //buttons->addButton ( _show , QDialogButtonBox::ResetRole ); - //buttons->addButton ( _clear , QDialogButtonBox::ResetRole ); - - //connect ( _execute, SIGNAL(clicked()), this , SLOT(execute()) ); - //connect ( _stop , SIGNAL(clicked()), this , SLOT(stop()) ); - //connect ( _show , SIGNAL(clicked()), this , SLOT(showOrHide()) ); - //connect ( _clear , SIGNAL(clicked()), _console, SLOT(clear()) ); - - QHBoxLayout* hLayout = new QHBoxLayout(); - hLayout->setContentsMargins(0,0,0,0); - hLayout->addWidget(_suppress); - hLayout->addWidget(_name); - hLayout->addWidget(_file); - hLayout->addWidget(_browse); - setLayout(hLayout); -} - -QString TechnoRow::getName() { - return _name->text(); -} - -QString TechnoRow::getFile() { - return _file->text(); -} - -void TechnoRow::setName(QString& name) { - _name->setText(name); -} - -void TechnoRow::setFile(QString& file) { - _file->setText(file); -} - -void TechnoRow::suppress() { - emit(suppressed(_id)); -} - -void TechnoRow::chooseFile() { - _file->setText(QFileDialog::getOpenFileName(this, tr("Select dtr file"), "", tr("Xml file (*.xml)"))); -} diff --git a/bootstrap/runPharos/TechnoRow.h b/bootstrap/runPharos/TechnoRow.h deleted file mode 100644 index ca789dae..00000000 --- a/bootstrap/runPharos/TechnoRow.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef __TECHNOROW_H -#define __TECHNOROW_H - -#include - -class QPushButton; -class QLineEdit; - -class TechnoRow : public QWidget { - Q_OBJECT - - public: - TechnoRow (int id, QWidget *parent =0); - ~TechnoRow () {}; - - QString getName(); - QString getFile(); - void setName(QString&); - void setFile(QString&); - - int _id; - QLineEdit* _name; - QLineEdit* _file; - QPushButton* _suppress; - QPushButton* _browse; - - signals: - void suppressed(int); - - public slots: - void suppress(); - void chooseFile(); -}; - -#endif diff --git a/bootstrap/runPharos/compile.sh b/bootstrap/runPharos/compile.sh deleted file mode 100755 index 05a21de7..00000000 --- a/bootstrap/runPharos/compile.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -if [ ! -e "./compile.sh" ]; then - echo "You must run compile.sh in its own directory : ./compile.sh" - exit 1 -fi - -if [ ! -d "build" ]; then - echo "Creating build directory" - mkdir build -fi - -cd build && cmake .. && make DESTDIR=.. -j2 install - diff --git a/bootstrap/runPharos/icons/linux/Ankh.png b/bootstrap/runPharos/icons/linux/Ankh.png deleted file mode 100644 index e80657299a976004f19bed4a77403b82fe6f7a67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15866 zcmV4Tx0C)j~RL^S@K@|QrZmG~B2wH0nvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4aZWV5ov6ELTdbo0FI&wK{O>*+w4vx20?>!`FrQsdJlnHR>OPy zcd~b_n$otK2Za4V;76L-DzNVtaSB-y0*E}{p()372;bw_^6ZZ}PI-92wGS&j#91PI zKs7DSe@(bk%_Y-7gGe}(^>I=@oY#w#*Bu9GZf3^F5WP>3rn}7Ut74&?PWBFvy`A)a zPP5)V!Xd&78LdA?xQ(9mjMYElVd13a#D+Z_7&Y|xU=_C-srWU*6kiZcC!$nw*)9$7 zn6CX+@=AhmkT}X@VSsa5NKe;HZuq)~1$`#h6R+ZTR#D-3j}vF!)ZOnz+5)dI4jl{{ z44Mr{P!L4~VVJN`K!!XTF*LGrKO?IK8z<8w`3e3jI8lUGNUta*C8 zn(P`s>{pjD=7Kek#B;Fw@hxAK%$F&Q6vg9J^Xf~4by_hu-=A!MJ3Znq&n~srbFGPs zH&&aMXZ>nO`|hf|ljc?VPhR!${AbO?W8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u z(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`=%+gee_kY4FWHg<*4sZI8+sFJD270UUORdLHO0nA4V) z%{fwsET5CQ>B?eK%uw4yQc~9?*JVo2}ze(;aRcp*ceL#HUJSllrgm5wQKR zQu+C;QrUh^8rFfA`ftFz{YAidi-`aL010qNS#tmY3ljhU3ljkVnw%H_03ZNKL_t(| z0quQflw8+wX1&fi=b4@yF$oxCfFKyb97K__0wr3(lI>kdwq(gZwyfjT@mgMKC9f?@ z4w99q94RJ|1V92La>f9Y2NQdybIy6c8lo+&kG#ttYYw~3I_FNm>3;9N_ioj#Tj^F2 zy$NrQz?&oR<_Nqw0&kAMnCp1mKl!+TrbQFb%4ixi z85*CfynZajXAP>ggGTw}7jHCR#52<6XpAs!jMx+!BbSL@g;ql2_vhdE8YT>GOf(Gq zdjgFKfsYxu55A^h2%!-PfM+bvU`DEZbBoz}V~=B>Od=Bf&*!e3`qO(hKm1qET>AOP z?ihMYIF(z~DP%^eM5M_T%ZXN#=0LexSvxZy{GrpJ(n!T3?TI=6xpRx5Ao|Ln)ez5w z(h!8uCEtzmo zv!l%-IX3I};y!USCIaT7EOXQ))H?yNpvSD4!GR|H#X~zj^9R5Co`2kNQ*V>T)F#e` zeH2|hP1*1w$<%g=T>B|RxfQCEiWHoC8J84DEY;KEnXi$`+)N^gf`S+Rfl~1WQY-W% zH+GUztsqCUMN1-~>G*}|XU3L-9$d&;1mBxE4--ILE~oWQ04%{X+qb-bU+<2!Y?(gt zq4)j${7gQ&l=&np}Mf_hr?QiQr8RfI)aY zf!AJU{j8Spny-9lTl=RTeaoGnz44xHVv?F5+|5&9_Ba*tagr$YR4qivbLt0R_g$nm z+9?&BCAro?){dJ=DEUDUUdRMtT0Ze4h-8g4t{bT&W`gJ?QKd}cYJt@DVQTMmDFR-v z$tDz%=N1Cvwfo~UhgNr7pk6ruulGy@)bBKOC-P;*L$~bsy<6_zsW!IVC=E`1m&#Qs z5SpjNwOMHY2})xr(7D@4XKSIgu^)onw~#2eL^1yagvCKB7RppD#YyXIrHVvP`S=8h zibblXmdP{mGcvn(lOUEtj*yY9V^q6#Z8Fxc7h5Bl{CqeCD*KhKfFG-Fpk4`p*M6S) zhEOV3ecxT%Z@c56w?5j{+bzrcPhd8uFysAXY}!hKLX0)OLX~2g+WYULsOLpWctfNy zm>}*5}t*}l5GQZ1@%e*y#BMw zr&c=HBI%5M6kR?= z3aF1%%@AZr(l_5gN|kBw;^nc!;$l9r5=jT}JS+?{7pNPkM*=Wlbl0VBn@-jGdw1{o z=^c0P(WOFTRDxlLjXRm>9H}HSN@p-@ReDlrn(5r}!^O{j{^v_aUcPiT8Bb0x1e1ps zL#c!KT$kpT!l~!R=Y7-Xu7;PF7PIE=&Nh=;5hbOrjf$ll*_(G#A>$zp>;-EVpCwT> zN-e_&gxPaPtKU3y`KdmKULH*5SR-J61KTC)0_u?fc#tJ#jiTve_ilT9%l;jDjiD-2 z8#<{JzOb$nO4Lp&=EL9y2PhsqPSaCU)gS!$Vk8zy$F8nMe{wC5IFc@ume5ZKEs3^( z#z-s5B;ukOJsiL@XpK?^~Wq-__+Cw?I+ z7D~Q&*3W&Qu^dnrs$snm0M9OFvBqqnB)fTQ@7*`Q?E@WZd4{B7fkOV%B*-lU(;sCL z3$%LXC!}quZ7nj4U*ZX1H1QWs= z9M0u!Wj-H!EHOex<(P8BHgbN!v_KZXq3> zA(h?@jSU(Atak=x%PJd5#0pxTJyczZ7)9SZ{>wj7%O%X78R3j521XJii)SjcYwnw8 zE?XDFN|{)ql}N;s3nX#aW-3ahO{8z$4-4Tm$xKd?A77h$Q}NsFsvl!WnSdHy1; z%mjp|UV8a&c633pfS&hz!$7Eiflw zS%4dJ1in}L*^?8W^{tE-a>4WKzJV-ez6?Hs9A-bMnxSrXkiqJpgL7+--_q~ejcZt# ztQ#S)-Ut9=OR2ku+@njuNTehfWK&Q4E#=~C6phT24Bk7Tl7l}7AR>xJ%O!n8r0Rfh>4Izl1Ekyv>!1uC z#S~P|WpJR0kVY=kt7QMWqH_OiseHpjy%7K}0j6iKtXu^HP>ID7YTD9IR*i~`rXDiE z>9cV07Zmi)Q9Lk1{-v3T_w4C@2d?2+$r3-mFLQu@4;bl;MJ5s^7V)8p)gQ#NYI`BM zTv@&J1lIiYI-x1mW=g`W9GbjDX|dHJz|Hvd<>kw`MvunJ029(19_onzYSMM(z(CWM zWICD8CKmIBoR~5Q>PRNj6iKX-(Y=-A1}hZ=6BR`6esF-V0Sjz4=5?7rnHc_Wz(l~n zYGGkdm%ZP=>Y=2lMPz6nCYiaHj0%JXz*iuFJ6Z4UBuRQIIN&tig7cZUnEls{HL#ut z0OPu@0VJVsFWU45gCNMH7K?#AQ^&~S8lZH{3(K7yx}t=1DkDin`H10FzRXDB8U0$= zG7|vH85~M3hIP+VF2`QU`A?S%*#K!_ZXSV)Y4PUI!^O6zY)@Hd&E>X5|q!33DmCGf>5g2Ig)bo%%mf=2jlFBlu zDwZqEUHBe0GzKQRH$2o60Wk8|0VF;$h(YZxhKKTSK zUp@rau2rPhns#AkYWW&8CIUw6YXM#^7|dUOapH@mV$z=p<^-v(pO)s&QaG3)`__9A z8(@I(X$#^6!0{|V?#X=0I#b&%S5+rY8o1Cv46Z+sv4?dgnr2k zu+YWHF|wD`CMBtqLDEVCRcC7l$t7Z*kvtn&IAcT4YlZbC04GaKGO?@omfsO&5hrM} zI%)W(M@eVUQVGtX3S7@w?~&MAJo6Nvi^ggsbC2JoYU1lR7Ss~~@W}BjW_FwX#g&B* zm&?VpTvR}O{|G5eB2rai2oC0w34-Ti2nHD zeSe89Uv^x_#KTL#|4TZr32(dvNDgf8f5c>QlFZsg@yH4lvlFoV87P}e!xX%T2;%*e z&6dQ0c>2otYIFhDupr2Wq}M8N;?#|UdLjTGB^Iz!P|cQ}zq`Y%|UI5!EuVL!Ns5VlYi<7a<`05L6B$XzXwbpJSOU4 zx2avDl$)D6I!w0aO(emNB8?UDg^*dd1Qz2y%ES;cJoQS|>kmwKTD2}*$J~VtO*Jlp z!#6h61)I7)gtb96;{SEkZcDp;zeAU`S&U_+Qf))bzlrz$k*VVV!o4q28bqPCwF!vl z-DQ+i3TGFBN3Qq97CYu9{}ySlEU0*$EPSr{gD&`Kd zw(P_dmy&0-&=*T&m?$~2h>>qb`%T;hU%&C-H_d`K-c$bSiCC~=@W?c|o4) zX?5J(;WCnthnA;rp)x*8g&5hp?jzsS&q$@!kXB{gd39|3Bv^YC!MluTCL{*#kJgB0vIEKgJ za$Z9pOqgM`x`BG*04xV^V@q2SnLLgkA6u9lyL7D@4op%cJWal<&tcb38zeai`KEtP zmcB#)7E5vpnKa+p^}^y4A?eC z**TKK?_e-@Kmdf#C*>i9xsNW7%~jKhWboLm?=r6CSVPwT8EW#%tN*=$|JEA;FpK5J z1I>b9yihD914|2~LP1t47t3Vnz8NurRw{uDh@grmR?k3hyhv6aQ9+6m{{LVYR68B`_5CPkV0Mo14*sJ6hdN&vGM62 zee>A#=W!jc`TR^Q05Wi2bpf@PuZxHMwTEPO&Fd}`u-2xQsU>R1aF<&lWFpr{3l3m3 zG*c|PNGA7Q%J?s1FJB7szzsqnu(Eg9s*p_i;=g>g!V>dnc z7E^NO#|SfXQCUz@F)>G4b2l`LG19m01fvhq&wp{OIyF9fRZP{HKoa}LUgb*6U3g6E zh5+h~17K{|fd`t|HV<}wY$mhY< zoCbCbiW4QF0CO^5Ut0oN4h%Hk*xh2^Ke}&+#cVTB=Z$|zF>rQKZjJPa`}55`Pcj`+ z%`BaumAT`U6Q@o-C51?caPTqo!?p#MC73Jm@=`ZYuN;8cH$VG28;@oRDRH%&Z8mE* zt8-VS3Nd!>=p5voeu*?dd@=2%T-t}!Fzp;WAj^eUn>rLF7q0VTcd;M+NNyi!`p}l$ zTL*XS9c>k77KIXW0%+`8D7AW$ijePg_92R_oF!-HEp!@b!~W@sGyigOHt;mAWucFe z&i&Ml^p9shEY|dtbA|;dppox8qh^%YFi@-RXRA$L$a8RH@ZMzAVCiKrv0ecK& zSO!)}rm|4XJ5#xE#cz>T#e9DjMj3cHs!OO>4#0!W(mOX6zS2r8bzzLT4{A?3znv4i=Z_$krTN9*^?K#c8=oM#8H*BATwB= zs`!7vzd)={rxJ zJ9_l;>LJ7$mXTc2gZnZU;Ai2nWI3R&pq>eUXB*FccH1&&!|8l_W-W4Uu%mg;meD~~ z8Y{AQ<_Hy&3)DXPR_O6fNEp?Iynt1bltY5OYnLUH@}>9QbaSUtmJ#Km^Q3M&K>n*g z#zs&$dl2)-`v7HfDGWd!I&@JGzWkGyKU*pzw?v`5ihHu_mw`X)M)F^O;_H9vnE?0| zc+i;(umz6g8R5=>rn}G1u3Z}G& zu^!2SA3sOk&3-)dI@{vUje^=Nt_>bLV|Y+G#F`OX`=70JeC}_WW$bz5-sDGt!Uv_nOxB@0$uoJ5 zq>fEg#pcp%Xc5Vzy2!s8pyyti$p6#R=RTjv7H6<;5NpG_(TDHLDrxQcak&1ROpN@j z{5xwZ>jnpWvOAjJgU@IAg(o0u5d7VSz(#Wb9-!JFFe2H&!vn_y$b-bc^WgpZcRZlA z@A-V5fi;@|4{#m^o@z0hOj{L+-u_OzJm$SdP5pbQlJ!vqTtFl(kRAK|m0A@{yD~%$ zZ331GBou;VY#zkEzbqvK9(WhCl*@|g#LF*cKmUVMpW5O!TPD_G7jO@r{rnt^d?r?Y z9)1pfZbmH21V%JQEE6#=5q!)(2R@ho=l80;C-=1>_JfTk0A9lx@jTntXUt!{b^AR% z4!y41uD9O5x%H+#r@;X$odz54^hn&mh87-39z+uw4=4{j4>rpJd~DV$W#*MoGA*yl z20J$mSj<3?(dZ<(#!QNGj6_KHR)pUGCPM5gPLeFYij*UL@bx1tTxOo4^RH0H_6JC3 zX{CviKPVqLpR1-4={aN$e;)nUJb$(OF(UbS_+2b$OpGoxMlvH-(rVV&K6?A$Jx8ap zXYJMRYVW|r!tY)q8XUg9zz?#KzzF04bNusT`~G5J-!1ng;^DK&d~RaV8(p%A=~Lct z^oRL;KCYLEc1IJbbDw$g;@5C~_0#u{KKhv_FFcN8o<&6v&PU3XiV-Q{zY)(CRCf$E z|9&c8v~L;iyy4+J2BBlyeyT#HOCx$n<=l!S64RuVS7FO5A%~EO0&5|%^lT&lrDv(N zyPy0k)0D_nDnB|Ltc*{3rq0X>SU|HPfc2M}${Mxe^pHjCkrZSBAPCqFs+ z1t9r0rBrOxD5M={*U~>jUg7(sGMUa|HV?v=IH)t3k#PVU%q_Yv|Llj)e*a5{$FHIf zMm`g6&5wY?*AF(D0QgOL=GZ>}ww-_e*e5>pyZJ)7tZm*VUO4@uu*}qNio)q42m*=9 z*+Re@lnIsC;VQ{pg>1in?jLkc!7lYttugyw&KwBeQlkUclVWlw?9VdZpxBo{$(jZlvJM5z?AmSb&Sz z=U+ki51c$pXCUn_P-xCeEn9X|NunXg=0~V4@V&x&-}nB_2AzVC|G_Sn>juh^$vq~M zUaoTQmY0g9KHu2$CD-WPj`Y$=hhyjf1t$)XzGEMu04xa_sP(dF2$P69v*5vBgWRqnJ!da?1b(CJ%xb&eGn8 z|5Ubc5_1zFvRTRGRW3ujkt1h2OlJDZr$+i6v>e_WDveD>3PH~77(`0Jfj6H)( z6kVF9<+0P$b=OC*NwtLgrpVL{;zF!q4ykA-*P`FM{_gBUs0ooce0^b~34jGE7L?@J zTlcOsGJKR^ew7!zG=B6T^zadKT1}+vy~apD&Q)DI`!1Nr5jv8jui27 z^81&`(E|-&GLRe| zL(8VO(AtHcQPa-HC^z|2Dv2~?+q4r#Cn@$SEP|*j@Jvp^H?cyF?e8YY2{+)q{{fA) z1Xf`;1U6a=VC1u8@75}$*>`>T(>v3PFC(u%^7uk8ceb@sMr5OMsf^U_QbhXLv2JH* z^3Xq#-snIY_eGMyV~2dO(A$-yMhdso+GTj{E|X*Q5$xHB=9K!NdtBtf2H?}a1e=-*3AhrUEgQG)Cs zkn++Y`uQ) zhF%-`6;WjB1=6)_r`41HOfGj9Qph8Vs925cAXvc=AR_L*3CR8#yojY&{Rm|-2v8uc zOATT%Vi~!OMEVYjEu2GQ2?HTZ=>@zuYXEjM-nIOn(hk5j0G0#n9J0M<#MYyB^wP@7 zZy|uAmCD%q1uTObv{4wW5Ee1I2oXyJdEcO)>@5iDjE5+bihwf|D4#Eq#o2<4U*kYvm2w#cDfK$a z2Bs;5tS?KiJVh;ge~ac`{5H6WmU0y=1+i76k)H%n41(%ZRLO)W9hyf9*$RagE<(mo zfYAIf27o&tg7M0fX44u1T!_bT%9#^KEIV%P65SZzD<^gctrbI+4r8Cz%fLdpjMkRdq~ z#t%7tTejVUA`sg_3~3zSCHw;B6BFopvCmvju~#`O{vt>F-SUDfvUbUq|C#zm`{*KBgHaeB!f!cg@Nby zSD=+P3JDv%1h6ZY*T4J?-Hx}Vl9<6jL>VqviOva@Y$Bg$4n~>;$+`w9x;Trp?k2MB z*+OyuEJgf*^|e_d9|OX}K!lBA&^ zC2Hw`vuOMU6qbT40Bu68(UE6*8j-4I%yuy?z_ws>SYT&3hx3V=x}0S08ljWdzVIa8 zo7p~_z&FGSi2H81H;@fM3{Im;UU}$|2X@W9@HMhH9FU-8$oHoMM@S$fI{$NdDlVgm0CkNI|P>8Kx}ci>0y4WNsa#SkQ-= z-;de84AfPrEHR@$4P*rmwvX)~ySo|YCqy1eK~UJLZZH`j#7ZfT5HmTJg)*c~x!OP{ zUb(b58-Tw0YU)~+h1hrSy2D1Bf-TqIxa+PV_d}n&&+&=ot@}tLEm2irhV9-%1r&M8 zuAG5SA2EL56`61pW+N?9wV0~~b(au=zF#ioN@}ySvKmMBKrrXL$S6*)T`kJAW@$VU zD#tU$SRr53NTrg(?mfG-Hi@6ax=kd`&Qfq`g{*D|Ih$H&)pLy^6&Jnm>|vOQwHcXI znt@=6O+i9Qt~Tqj*C1J~%C#!3G-GXQS5*=V1&!Gu(wf|oCPlQmI6Fh;?%Rb@=scwV zO~_nsLL7n;<>^jS#EWbeZP;Dhwi`UJMEAYpqaVAl6gr6aXHzhH74c%PKWy|8zy!$a zV7cFAxOK~8e@)(F|3F0;Z8Aj#&CP}=?7dhK+lEB3Xce~gKqymEnB&mR^U1{ph1Sy? zio~LVNJvn{XE-&r{B*0uuq~M@toq{VDYaB=LG+FWi5sSOv|E20wtCw@`*g0O->q1k zIt23pl1gKVS({x&f(a9lwv(1$Ia+!AWzXToKyqs%efyM_RGKe z%d;QHb*!Q>YtA+s)qP@-P((0D&Z<>3O?qRKO-8jF1*R4FUS6$MCGA%2)=9(*VEb7J z#3J9`VcqF4Yh8M^%x=+$3U+r-i&rR19crT4e!~KY5v9Rm<|R2Sz^emK$utt;73-L|_d{B7TNBS+21lNJNgjKLUkw zYI^)9XR810+b_Ha*DzaVErmZ>WwW6%#|oh7(fB!7h+{%yNuJfYnp(#MYC_}ZQr$D` ze(N)1E8pAXGFa~2+I9Emo;vqQe9u-u76kcSxS!V@Hktr z)6YYYEF-1NFwLBKiMsbaMB~5wDyhw;>I+w7^vN&(@x6H_^Rx3a^ZEQ;Em(xlEogBT|014FP_DjRYP{MiL`WlE@W# zV43Ce|2*(KFia4P2p&ie8p|!U|3f(DS=W90vc#t*{c(yRInQb#7 z8Cg7o`MG$|c_#4yaa%xR;O}{6)drToV?tghqU*) z*}sI10A*mTt;qEYb8#o?3RjC%Lgo(v8%7ldhaTZuW4Mk9%!kH^XC&6vX}%XfJ3lKE zLX9i%QozK)$YrQ~&f=J#nV*S2`5kJrpZnP`*k}&GgU2(Q2Skm=1H{KXh&67&vx#Rn z4>AuhBZANSb>Qz9xIab~e=>02Jm6XhHu&Fvz6Yn7xf-9( z$mUNbaPE`enTh+?`@z4jAMk^2B-93ypMeq2Gm4STth+YYwb_NQ{`EUPel5TQTSUni zXTQ_fVSoov-**p;G9og!3{bWTF~c|nKLR$BYSq-X|3mQAzk?*H#q_aj{;wkIM~##G zI#Ior`_`VFiTKxvhdBqoCx7yL@-g?lVX)C0;6M7sc{a9=wpa%DZfgHChrXndW#&Z= ztBx|646R%~Nm^M3W?ZZ^usWtu^)0e+85u{}{!>X?m7>zDAMV9h1xj9?HWXR^5rehS z9N<6VooapZyRjybLXk;7_MSZtC45yQeDwQh2#OElzdId3p zorn&;L95fMj8NMy;d*A#yo~USZ8&IT0$?`GONmh-6&t#pj(3X-(UJ_w9?B^8(7pEn z`Nm!#aXy4S0lg$P^^y~IdsMI}rh9QM3!}VVGbd?C zXk-Fl;meAq_}PWUQMrNSEPZ}AtAJYn!}ok2RR1! zf!!AZ*D=mQD64}F35_fS^196}`;prQKG)>7yM{-Hb=Hm%>@NA#%nmMVaC5ZH2x)Q z;!r2&j$#*38hZiK)Um0Xnh+FXZ*@~D3Dq3&195l=182TVDqAlMMAH`n$t=%&*4eo+ z@*7SNY-9oezSapK*X1;s3`V0~hRvawOo>uUXV(Ktuzif8ejh0{$Q^)yQZWid+l+|n zvG-B;rlH{hxAi9O1i*sen*^{v6!r0k4M1iz76ip3ZqsJHPLwR9f=B{^bT5ebt)c>G z5%K)FbRPd}kzsZiA>}SwS_&eX$hJ-(a4j$4dY=8PP4E&>Gw|TBF`!X7z`6wxC}O0E z`rDiKYehLh-+em-zcEAw&ypC{KQVR^snv1{!XI$$#qX0`l%py_(M2Uh?;7pWo>tfW z`+E^D{%Y)gLyi?wcOwELp4B&YGU>2sx2=G^KyxoXPVK`ZD3-|_hf`<`eX#wW34r@$yMDt!LsB)c!$`8Du@G1iM53~> zWk?bUrD%Q`JC2r6?X!U5k28~~GaROsMeH@KqAWaO{uSpOc}Tl7`C(XelOyOlWr ztAgxUYAEF6eb(1E{%ka0^^aY*7Nme3g{{B2*`+7t;2=3#O-R|%fz71I0n|H+{e=h% zM;L+<`wiTVL0Z0YoFoPliJ+I zj4dL|T2%KiI$h+Cl*ymcQc>1KbK`UH-Ab_s0EM4mA)GvZ8d)R{5OO+TTly@*&29U! zfrD)&?8arsQbQph@3T(P{Ml$wb1QQW;D;p&UCZ*=MPN{Y(Ci*m61hg#P8=kwS%wWG z3TzjTV5|5(GPwIl8Gaet%Wi>Mm=IKoiU*Ry_Y|>^^H1 zyrgiS4P^{!R8w%xZ!fc(w5ELn+M&F6R%^xv)5PL9N#zPkd1tZJtAb)vDU^T7khWtp zt)4%Mt=$z8kWNl;-9fRE+$u=~T9!k}V~7m$1NjXn2sSDQ0IrDl3v@cP%KjXgoP~;< zs)5s_)~iVA9>o@~D0$|V;R495XYVLx))2c@K&9v&3N9{^s2Hbe8r#P!RS6=4R?#0D zmY54Pl%R%r#&zHb5-JLA zvhR41a=t0jK`5L)_DOP zvw8dA9_qR850T5El`6;=xV*3i#EaHV!QN#gizvwG#mB!+NvRu^Mw~Qw;2x5|b?gm? zXR$ej4M7~W%!VLt4FioR1MoV{tlD{TIqcaxXt(X(HF86I_L2}7JBsk2ECTyv6pzMf zdfZ1@X!ivqfAUUUqFs0FCrx3VG>%RRUOY%Ln2y7Xi*^(o@*p%Nm5kQ*qSrK!VDk{+^wSSBL{vW&~rIz~L(0@x$S zv!AVu4Fiq11hCG|96;tWsGNP92H)P}5QM6EmI*8BhR%pd?L#y7nNx0LUxh-`fj17o?bGH zK8)10-J`#?z5TuDj<=byA*i92%|_$^y!LYxuc_N*>bzy7^R3F2!-ArD8P z=tequVAAQ02^u6gEoGAZea`wnVY0}Z+iZP zuaaZyEp+A3A*6~&rcccPO2>%E+GK{Qw?thXCQ_iFU@RP=Tp~siYc~>2pCvQW%vG^h zAd*TSxw;zR_&}Ben7|sw7}RJ4z{qEnO^ejC7KhF9pnJ>hhHNHFD=$5c1dt*sRFL)^ z>E(DUfNv$V9w4f~&fsVWDe8?n8as3pnZ6N8hQ!gFK-%eckz6h=ciZ$W=$BP0w!uOLeN9@Zj%W`ACP@asx?xJ1DQNMK~x6?PsjFuiCj)5 zixP>W3n&%eMzYu`l#B_JMvTOfxmB_l&9@()^D_rv0dPIe5T6YJjYa^B6b|0Vv-?)A z(V3bDc2XSWeKg%SApxZU>pwDtA>km(xR6q(2I943Xhu4De8;J2z1J2=-M*hJNJc5> zyO2C`5ZOaj2K2`+X67#3KL?yN1T-1}u!PP+S`oE`lSmpDSiN|h>}_rokeH&74*?;W zC_=t4^-;*dzZNG`ixtVAlj|Es3G_vBZQlMn?0UX}d0fA%$S zcvwR~quBv!(YtEo@k>6itM5H3{~5V!-=ioYkAl!B4wdq)(Cm~4l|ryZyx##65o5-H&`WUy$~6HGH#Fxj*e&x&Yq#zQvb z2(al;Hg@a%6gl%FDsm2CvssfX3t{xl%K*EDnaeQutb28^(Ut%<)mm*jrSs%M;H(q{ zBTA74@=Y&MGMXSMW_S+!0n?}@!0bPb*{?Kc$?r{Jf1sQ;jdozC5Tr z`cj&tMz>(mt9#Hl`x%&P@@GSgT|>MCkio#xKQ94D2_u*O*4}~l>&2-oQnpemRfNS4 z>4c%aXEmEiZ_-m!n~8-x)CCBx+W_*}5)wp2*DH!CG+I;+PmpEwZbA(^5_?XjEG9$O zgIii}LI0NP_u+fhJv0&lFneBK(tdGq>8eaDa>*ut zl{JPjsL=?3XQkm?ySfe-jiya@hm9=zevdq3r-1Y?8Y6JVB?jbiYID_7-U(Xiq zSq#An2s1JGf3;~BWj$AEV04IFs0iXccNih1s4;+wV*utd4m6H9Y6u~)k+c9NX6698 zE1pPbYn#s4EQ0M388-)7AnJ~57 z_S^6ms8H$4;C$~5JrARQUIusxXb5XyqYwc2IP>y#y}a~==db)l`^er~46S`+7`T8+IWGR7T2jfSPwdKugD-Kq=c0 zb=>&@5RHPushkh@U>g7v0h@*E9vVpoU{`IW&uQrUom&R}uCv2#Gf9g=4uZSZjDl0a z36h~OL_8QE8@7sPAoXX!1$Rj)~7n~(_iuI9t8pEwS5ilx2NLYx<2@iE1coY@C1Ufvu z`hBHT%(K5?CQhRe089TYl!+h!?%LDq>NHD})m$<`&b{v>qbf&NUYJ?oM(DHnc>`omuciJg7eGCyp1zK20Vv~q_y@;j7)v51u>Ev(U**T2+ z)G~+Gy(zs>2!K^GHqU0bB4@MJ)LhLhM8vu#T0ZnGN-28C*^QEI-TP4eGlP=yLn!{3 zMFB_P67heVcXyJldl)l+2YI6^a-(#eYjpp5)o=+?%f*g=1sOz|X`rQf=Qobc9K(HT zfv0t^3bNqTD8PXl>!Dg7zjOG{bH(yVs!%EzSC{wh5Bt8mY^%vO_Nu_wK!k zE*(Bf9eeMh^6YbD*>-?pX&KF*eY#XoJ0#Jvo)#Cq)oL*nk3_S{uOGSk;g8%l_{jfw z_VOR%K5PV94?VBl`~s*qLiEM#vaFkm!`av_+N)~Z|~5^CH=_wAuUy^ zrC2tJa*J6bS`MeC z&=(7UYBb&=#`mpjF3>0h!0*Aq8a0Htam;36p1j710U(2}$`S)cszP3gbd>!{$_s}Q=P(uVGm1q91J8E3` zpJy-=1rq`P&gU_~n9vx>d_FHB+&J))&*R@&Tv>gq7nz8~?Y$03ZWI9Bi%ViGNsIn9~zW*qb=Ix|*9YscXRl zrrXrz6ps-lor0Qz6~@2f%a|HWc7{2#r#>~R-Xo5m9IJ7Yvq zM(Ki(z=VVNiHVFNgOZejiVQAZ!dHTKc71)V*XdzwoN?Vq2=|;j96+cH6bb}>ci#m2 z-sJFDTFm75UQhWQH^PZGhk_487U0p^d^m1zGqruQ?cEczI{gkEM8f9=5{49&cnL13 zpGq~pWp`3iP{8DNO8%_`M~6pT4x~BopR`nB`@>gzf4c`3zYsx5D@pr4vi^>nw1>kf zoWY~U!)Q}ct=CRpVPE3B(|6ez9-Mq^Edb_v1%;%hu=D-%tpivQij3}k+cf@7R6N$R zZu6cfs82)yiZh^fDV5hEyE)tW)cFL9fEn8r@YZhvQzcy`&D>5DQswXHEab%ruD%l> zEP!7?h(%A`9=AoTwlQ+#KRP-!yP_D9-mG|kUl=bpEc!7Y;bW_fr@-pZMuqrrM|R9dqLCgB@l4Pq*$GtWd?uKU8E!1|KL|#y@Y58A zfmD5`Z22&flC*f)JFtv*$Hsw2#<_Hj&unpzt0A@Uzv4qPYFs6PhWrQ~?laoqf~xvV zHVo}w2A(W%bI<=4LVqo)`wI=ZkIS@3NJ@;AT;LWC-53!8t4~~HD);CXTb@fos>KBU zWC#k=`KC&Ba;8rVx{|`GNEH<)c>{c3tjVq#aPWdI^Jp}@7Kz=X61tYi2-BFo$?%|W zI3j!ZRd8u?&i)|Pxi3JhJv2u89TJ2C4Cc3}ETI;OJC>FRZGF@QWo-?+Ks)nR(k2*V zo?B;cHwOUVW+p!xv{U?C#Z@f_O z(cVCSkPhb43zomR2e!cDph*w>BU0f0EaHJEcWyRg<&%&;{mnOzAlCdN4{Ok*K5(|$q#vA$daa4$4XP!yqt4q3I@Iht;@@69#FApdr7{KEd5YS!w>Gt;rvJ3_@99RMd^!m&5 zLIc(m>SjKYp3lvRUqR@L=|z6Ro#d~0A5O%nW2otu(TNCP>pB>-%YLd!pzK9O>(R{{ z1b6peUqV5(h7!Y6^9=VCts&9BIJx)oqOk?wNit=NaH{q2OK z9%Ka|FZ!3_t=+5ktf`t!zD?^(?C`$$grdpP534Cya* z;5XCT$FkwWMX7n#&I6I`WP0GC-1oHRmn@Jcm>a-`wb#232-P0_)C&yNTU}c-U*NDG!!_P1TzTY}y}WuvBhKI5KIC?jyw z>U-g>{CUs`p-n4sSI=&DczBwFIPLg9*t<%Hu8#!yVwvhvU# zp|oZy37$it3A?dRV1l7REildcC|vwzh_Ok@r-Y3*`_l@&{Wu9<_s~Jv(iI88QS`Ad zMAel-!EdCA8b7e5H;K+J2?XI#BSQ5pB1?Vn+Jj@y4mJi-_%4HEk@Sp6snBWa>&E#d#7Bo@;rO4Ln>w5O zsCa1v1SxAvN>t&^aMUueGEOLm$PY13FiX>1gKMBlmFJZ61RInc1i$v?v~!4K^8u=J}97|4j8UIL2e=wfVjla83}G^@}TE z-lzk;AJQH6csO4Xv3D|Kw<252AHtTgVtvEiv&9DjDXK_dSPKze7Z3M>Fu(htu2B+zlc6kgZqqhFBQSxudfXjK)@TYK61p0+7yvV=EE( zF^K(40}*yjKs*)8Y>k(x{&l)_%m3IS4~q57T~`ntyI)-H56g;**+a&-{b}Q-C0)>( z(io9fY+GQ6I+LH0o?fOALEAVXc?^lU?mxkcot~nE0--4@(BaD!jOS4iOG}LcQhzmf zh?YSH77ez(0-lEB_Y3 zXuOr7sgw?iB(fuh6`d!-y!Kk;dzlyhg_@@$HmlU~T6V8!y1w!2SJZ6pK)~s_!Jvo3 ze3%gC#nf-Cnw-M`M#Z6`EG`d%9|5!@iv7<)*|Xh!I$wHukp$ZyBEQ>K%Z2K9a6XjL zLuwjUb%iqE{Q8bX_#zq(paL1o>jq5Ba~ia`y7MOs@opMat5=f;g;4f#F$KFWya;Ck z9l8*kVp;dTsi~%ifVsK3Ap0%jXBjuYm(hhL&L#qLknJkJ%yn59v1$;Og=%^7KIIf_ ze%=`03$sG8*WdQdGf4eBG<-%u-SfeS7(Nez6J(j|z5Eb214OUe&wJx5yBjwo_a?C^ znlv1V|C*fb9W;SD<;sW+$&+N(li2k(L;6-|-0ypxcnla=CAc{;lI$P!?wl_V!x3PH~bSDhw z3f`y%&6K&-g$eWTV3_y}y=8QjBoxNZGD4D35g z@Ba?1UU70S|JxQE|JfpcFZ9XuZiQU-ZT|w+4c5l;kpJnPgQoP|LiG5Odby(pS^p!n z?UO4IVcX!Dt+#e?BjDW9ZcTBsgIQ0x0l?p>rjzhRLZkrWID9qHw?`m!JScRv{K?l_ zgWhJpptG*?94Z4>TYFS0)_#?_dk z)SUj;?d52vi`&qu_Hk6uzc8^@XjXAcJkWUIbAI|>E+GB;@AfLu@%Q4~uftxczx;tc zEsr}Jw)yvRfqCDN;3I{xMkI~nGpFB@nJq2N&CQ0F=%3OTG4$l*CFJxTx?ndKm+khP zm@23#hV~JDWD+VG8Y(KRtSTxg3~`OC97;UZ`a0R9Rw4dym^7fedV*A(Tb~~ZMkOVU zcuQpsNhx10d{&{%jfTz3#%ABef~TX7Pb=oy+Cm@Ba!>V>DJlNzgSwW+6dyf;%LzZ@ z{I6U?+~K~Qjg9{{rpi25Z`IU8f;6qIaCs=mw4oz=;KkSy#{{%wJ&A$Q(_70DhXu6o zybyFGHSBuujt8`?Ja^bkNkXNKX*rYprQr>nGsp7CEV_c?!@|O*i%U~q9zF`qEh7El zv0!m2Ej$&PKf94vl5ef*kEMdlT0?KxDx=LAAj5SN0Y`Ib*(~9|wsT%iv$pqazQS_B zyg75q>!9V_urVNSU`i5dZ}0TFiA;xcadWfG)i~JW{YCVc=CrkW?-d0HjksFhmK{hg zu{m?C0okS)7QFY^c6%96_7pGwz#u7v**5nB>|As6-oOqQegx)20{{D$o|O~dv@Q;Q zz@MFa1VCFx=tE#TNX+l}_qLjP@I{f}+U?)&6bgt635JgT-vxz64~?&HiuvV%9u(rzx(MkCBW4k05shx{s5nk9 zx1*>1fdWD?c<}({@8QdV$J56RB#${{3Xxsk$JNip#m~=Jj3?@-7*h}T%8f_b{MpAt z6B2cD@zXaC@B0J|q?D)qst2)fM&b4byay zHyH`-_}v|jlpjDXHp7B02;t`<1)FOv6yPf_D{v1VLHU$Pq25c(k}n%b$Z+ zAUF$Klq3lZER+lz-3Bx~`+5rnus6=I2Ja|_P>d1<1UV#zXrCJV)*#ysFTSiIoL?Jz$iN5GvMZwqGv zrUa6TX2jeP;B`Y6fy?93|YK7m0 z)dO`2x}7&c#5XIClUwtAUJIB6+sQVq)GTdvzol_8j2z02)H$9O%{vyrB9g+ccfb5M z#-VRD3v8k?Py6m3u+}_B#mvw#~QzDlK+1kXCoa9uyK%z9W(mM&stPC|Q zO_xcK>zk9)TGTCDpw4aCgOI`|X*Wz3Y^#brLcE5HONaq?F^&eRD!PXHgK+y8iReRg zff4oL`}U=_MU@g+9UXO>MJh4xl-pmA#1TVt?*7E^T`BpaQWQsK&4U||$kPN2@WSMa zDf;R;n#pNtIp{yZM_A^%Jb+(!WdD>42ZuZ+4ruwc=H}0+T;jqM)U@=GI63t9Ve_WYushepT{mOo zLbGdSgZ>6jkr+W<4o*Q;xS{igUGUyjFE~-;n9FFE<=Ool8j*XIh~8qwOfVS6ES%GK z`b9?}#t^X{I|kDIRT2FCtT6A54&Tz;;Zh>;wGJqLxqZkp`w@+VWyWh5TH>Aq?ScnW z+gLC8q-`{8%M%+LyfTRWXE({9-0-I+fGw(%<&3UYCf{qPz}(OYtE>Re4tC*XL#qU-Z1+_|WQQ zB`4R4Z!bihM@9z@Nc`dz_!s80prA7I!<2uyck?ATCQ(2F>O z8VY{gU%=jaX;ewnVUNw?(?nKF9kms95D;#0qNy@{118Q90&; zMn(1|bdw`A)b#acb_x(CCob1bi&d8c>}1*yYrc?)YzO;njd`OK`=r-7iNL0g=!Igb z&X+?BLjFdUKaFgQ4K1XD(U;eiTdJMqAh6@KG&Y;6N-Rk!E1go&aFV+6IP&To(|9S_ zva(!`n?Q!jnyM-*X+&`-2}VMT&4$?YOxZUeBa*nxh=k0DO;6RQ&O|%qPX` zxzB7 zzTQ&)nA^FysRNHOXaB4QAY!Y28sv+Eym%h8wzm}{j0V&ricE34Jt8^HK*>)S(xN8K z&w+fS+$#FV%;;I%G9%9gpP8nD^47Kt&(ebubaE~V9cS}Ek(a@9YT`OJsq?>9r74f))Mu>$QvmmjxZO(NARoZiq;2vp4GcVGRO z>oCIZ`wcDCmU@1B(tLR1vrl)PjrkkBp?T@qq6BJu{t=nk4ky=QSTlbdOppXYNVdyC z`q3>%(&CYvb`Q|@za4%S3~lYLa0L`U#aq!i{Z;$y*|#jB8FV<)eiQwGbb2T0C6EIm zUqUGKI&Ek?4Rd{w0)Vd7?^Sp&7*9>TCa*YqI1Z<#Gj=TjCyLIl0kP-c*ZH9G-m&j) zIQfr64$6T-=c&MPOscUh|NKXRR!$L7EWt#iaNVqHKs4~9WJmhLS0BI9f16SCawmm1 zZ~Fv_z|~CdJ#78K7H?4TX&E#mDEWJj&C-$$VtGfwBmc6WjGUybu!xds^&a#HtHeHT z1A~VqT+X!jLngv%?J=Ijbxc}&R(f{iFoBiC>wkpSRcX5jH9Uk-mZ6hvm^hm-rQm)i=z3-<)SLnpiDZ zPv#Nu?re_--3C2AOIzaefspUw>GqVlS+V$f8rH(i+pPWjK>TB9b7*Y$@bq=_GWISU zYr%1Xeo6UHKv!mTxb@@tCccY_i%W9{ORF_}uwMtS0I%R(k>z7rJ_#%@@%-&96ur$6 zgoy=k$?)xyMlecuxyL5}hGnNWh|qV(xQ_>V?h@LYt?khT+s&fm_5Dna?~>StH+f=i z{4S%3jzHB>07j9N*v6;4>MR59n|``SM6(i3g->{K@g%JZO2c<_uA)@4<IKG)X8v->0Z{H4`BmH)TauMh5eU==l3pKsU`ATtCQR8>EWW1?zlQJn%Ov> zA5RDl(Y5=1(AaQJ=VHp#ZHWKmZS^(_JpTp&x;~F4 zK;YZh>E6626cPEnvp-TJG8=hJg#cWfQ6~-u*V^Io;&$OBXe`Huc}xB@`HU4#DPe~d zNnn#>Jzlaj3!r^_**ElSxPM$v-3Wg6?6T7Q@N-~54@f1RemDC_3mTlmz=ab;tqq@- zI6G4i$y_13uUhbZ*+TG5yk4FTMcSh9B=!^DhomX0VYu$O!9WgWm#+y3%*spN%L*5k zF`7{x%(@%Kc{I6^=BD=HwDEFqGqLe78BW01RChnTH52L#e6pt;$8lOwa7_d1>FDWa zVqY$$158>%_Byf}DA>z3L`E@4J!}1VA_%kfuNao`!l)_!LPb#dGWRt3(;y-8i2Up# zELWuOJ;jlXPkdbf?bys6Zy4{mK5Ga!u-CVY(yRR*o?j%lxn`KRgD&C?to8B^aIkts zKuxXf+yE)!t@xRML#Us5nrlcs*To91jNDb6w6$=WJbc9HOBFRxd8 zh#W2x_`P_E3@IR(7VyuQT`nI-S3A>-r8z`-h$y0hJOuIs%K(8fz97Qy$C*8`%`u(< z*>v0KNEjb~xDQ&it8- z;MrbmjP06zD|I1?2tqxS-xz;9BJ}wFHL>nqKuZvzCuRYwFfKvj=;v-${d7U-u6`Ka zA6Tt^%X+&@FXb|#&aS}1$PL3jyRwjkQqD!Q7Z5P5&Fq-TI*T4=^o??cHEB<2Uwr_L zm!zMXs;6gQOeBj?GVbd5AU2`0_jZl{b&^X0iK|jdIrWiIt%{~f7F%t)(Bt@Bx!ARf zxOdf56-q630jIiIlw;prLp(MCY2w^i9vsFfRDp|kHTsBHOu0U)bK-N3@LD-5Mrm|) z0E&~zv+3p*8#O*ry;vPm*FGCx@AkN~#AR_}R!%uWSw`-&-CJFR$rG80eR?BGDyej( z3RcLPt#}!~uTqSfn&Rr(gj+3(=X1=$1SaBr7OweiglW*7spI|k_-WwubzVzV)70JA z;Kd6HmW5d$sD_A0myyQq^7I-zH~%`5z?-e}{_9BgJ9ZDNeoMsrX${FS10HvXJj0!iFhw0 zkB6TFOOMX(0)IO)8;#)jH*CTX*#&!&Y$W@O4dxb`9!!eeVlgQ_q{e5Sm9~-H98*ad zx-m>4_AWymg=a_}M`}=&V;R&n*PCcyS!hzCz%5{_aTWCba|aE z_T1cGKHAB*!K|;(a6p!8?uwxApW8ycsHNy=tLTg5V^(1*ivLrnotItk-+qd|=+kns zas`Fi$$*RPsGg}RTz4tL!hATkEeCY!Jz@@Mn{mf#WnRk-5Aq3Ac@TH$^_10$`Od zzH+!VPIc{-FehS7!5r8r&CqRMGcY59*sU zsbvyF_(felUv6)R_jmr;32JNn>az=65hhYx7`0;>wsLz4rX)D$Jo1)kLEl;4AizCPe@7{Q zvI8PY4mcLjPoQPq=Mc_Udqx(I)PQd zGE6f|^J#9>a8@jkxA(dz19Cs7lEzX8ubKk;Rtt-%R13%=&F27hq3A4ZyR$RHq2`mG z^L+m^B%2Js2=S->xh)2Bwu8T9g9jCBh)71h!cXvxZ49M0e&B3u%Np~W@3i9HxF*~_ zRF!Dz3klYzM7AO%v3$H#of)cT!MhW|ZeIEUNJY&q1?2&De!qLGO?Xs2ao3#}YHE6@ z8>)-Vo!Z;&p%d_}F9VWI8CVeP+p5lli77u~V(4%q*Olc3SaKbAX9{Q`m=3+P#S|PZ zt#xh9how#BHa2ggs7|xI{gEs>yDVsgdONFn8fz@TdH9WxV5#3Y2QKxj13 z7M0jH)%Ic510LPnjJ#WgfabtnmagWqo_chSrPE^2n6O#}E`*;PZO`oPgRvrU2tO02 zBVt3<2kxlOimBO)n*5LrmXtI>93!}1Jk+Gl0K0DNzRgYkja>vBdMX={m1pN?xIv2K zgk)fSGG_(^E|~g@+bWBOO9q;udNuac!c#xD)v|)HG3afSYX$Vh)a`Hco;9I=FhQyY zi!Np;TeHHJc+tl54$lt<<2a1R($Hk}c_k~Z{oQ1Z; zx(ZZ3==)DkyB@e!(A&F!{1LE;EL&fjODj!V8t#uinh(Ci8tX97q(S*3Fuwb|cfUE1 zyw3S2cCV%^?=U9sDEy1q;kVv_33M)=#LCN$I8V=(K{mANjnQMGTH5!6^%m>97XLq6dtXw zjt?y^ZfB{NL%&J%mXlXiqRbX&Ryx z!THUV4OVReDxVnmUD3wSPZ*xDu#xkS^fmPK9sntIXmopxX}e(Knj4caGF3ij`SUV- z#^H1uoh!&DRSg&0+~SV<4)?yx8*|bD0YdE!Q#IXHj@}8@tErPA#GGv&( zaB`}AvlcSkjqC{J^Z`B)Gv1r_Kbq0BHPiQep2$Xc(Q$dQUJmlMPp&XQa2=+Sk{i{3 z;wg=DHURC$kChembc|;g<0d>HP9zu6TC>-UWqX|DL7wO*{MntjRWV&QMaGtZP2N-` zp84&xbj|8<7-al#F>5z(Rs8_zO>JU6ckXs%ZT$^B&2j{bNw)PPj@;a73J4O?K0;b8 zY1?O|YhnE^MjmRf+W=8#MHf^1OeVlD^if4gqj$>54aoy`@8Bd&DvI8wJ~}3$Jzjtb zRtR0pq}ZqHef%59^8$3mbW|P9jdVKbk%H`prsfC-#n1Ft7_h8sVS_6xPlwnx0Q2#x zbN+g8NJLpM&?yM6XS8~~>7jAA5EX#MsvoGbwWFk=XNV~^1pXdKOaY#Yp}L)GF+2Ws*k%#fBP)1tJ(7@bVwQ-2gY+0_R$W{b|%v!TSh`DZYxTdqM3ezN0 ze-7&M>8b4IY+>)R-;U12+2lAjolE_zKOKLxwnl0htku`s-q8T6t)W~p1?N=QxFc@u zY~U`Xmqgv?eg&?;<^j-?CfnbN5-vMF`FV_|a&YLU-(v3`O@J}>e$frU zg5@-N*ST=rNP1%hU=fB%3|{!cPDnoJe%Ac~)f?+O)7Dg5P)=W+!zJ+nuaS;|hjT&2 zn~;rwsyYNP{;Z?1qr1Kut0C|ngK#P|)8Or9>n$lOTL6P}DjaJHwo%j6cEv1G2O#Z= zB2MN!KG*S!i&)1lyUPZ_wdKy)DO6rmT``_Ic>5&4?21P4g2NMJ5$$5?4PF^9z;)qTp9mcAvqL7`A*vjh9%x$ctOaekY zYy#79phUZ(t*W!3WP`e0=Wmwft`XcX&vKCd#XbW7m z9EFEVr1`5KDU%Hf?(YT<6=OlQEAdPX%G?wdP3b#Bqe8XcJ~OaJ9gW#1o_Cj=oBc*k zuz{wJhwk=Ic?6Kdi+q$4gP@GZy2wUEJS!CX8R^q6=m=%2q{Hv-Hd#JWAakm^Dq8>VwzFjs9V?O_}zybHF@k|d!C&$D+XL31`ul~Aovn>w}A=IZPk z3FLOihPmku8HCX0Fi*du$em6rKD`S`$S&h|)66u?4pcI8Q8KY}kyJC#@Q{nRITa5u z+-urjpC8}s2q}u0GZOcIMi-)AfyM3(;0ttln(OG3KjWI!RIFEfP14sO*@EhDX*&IiBhx#0j z{oC9UkGsrlC>p6~)k5*--=_b5;i8$dpxLiM&-mF+5e0uzV#$I4di|ED7eJ%o1#-{wRi%H6a*y z*f${)08KqWJy3N$AYITWP#sL=KcN5Hm^U0A8Ro$pbWgRHaAdBX+^P&Aq5n3UJ#hiI zzW3HoSUIQ803kT+ZXAqrM##ysG|sse5YCujTzO67ZtX16FrGX|l2%i|U+wLqAmby` z-do>dE8h4^HR{&}8=0*@OBd}d*}?(7=|nME=~6SgI-ykso?z2`w7k14!USVgqKAx) z%_`Ic9LXTsf<8Qc{7v zM;IBKajR?rj^tC&KXP)KdP%;sG*KA4qWh^(nWq58O;3i__C}T#TIz>2_aL~l zQyNbZw+&C`oRaWc#N1vFu~BC5-2u6-wE{M(XVEaDvaT}&d_26gbp4cKaHlUq@O_0dg7^lGfP}ec{cB z%F%1qYjbBHg@U9TfKxs%(ngwAvKGq5lD5G+>>wvgGd;5V*vk}F+4~|raYd%RuarG+ zpAt=d5gik0=Lq~hH%)ag+Cg1VHo90iT7l~z_-Cj$5CxbgN*0ONZjA>q_5i z)TN{)NRsO|8Gal_vc_Et4NxC31LQFEsmj?GANTOw;TPs2rqc;_U-*OpCk_bVmjcQi z;cT9-G=L)Q5o)_^=G{lb`FT9Lk`@Zk%J)>j($35#M8@A1m4B7arMR$FDlzdKJIr@2Zb>d9Ei8qQh66^u8&;#IeM|PhLOI z*2lXyg7cg8I0eRDTur>)`$KSA=}E3K@qizmImb?;z}6;bL7-Sl$C_j~55p5gt7Pd; z@eYxL&DrVEX~M?WPREOg`o6MM14nS2>u%noDcaN5LfIn9cAUGRkb;4F*V`?w-nXVp zwE~qwiNoQ{Nk-NUko(-%AdvAMZ|vzWz5sqlnjp+u0z?T-Z)Q*SBDD zFZ6ttz0yz*1kqgxx}^TOi`?SjqJ+*-i|#BIOc2{GRHjA#0N zIQwbCv$o$FxNw5s5#yzO;HsU}K-#Tv zR>ga?sj~-MnV{MlvgQ;o}+5u7Cwg7dy4w7b5lJUZ1mUNrSYfljz|`OOKu zIezQ=gAt}s(bijT9GQ>YXJJ{IW8Yk|C0gs}=Wgd;!(Uuu+C?;(53wrs+~HqiY4S7S zdT>v1hFJO82o~f!n6P+!b zBN7@|03at5v{8>gRga+O?^FEW&v<(>{Cw>UTsAb2-Jx+jTwS~xQ`^cT3maRLLzI`* zA6yk{4+9uMa7+_Emby~j6xf1I@a|L4vJY}HEKyH!$&l?znTfH6=X3rX#csJ?zq-x- zoeJn`3>hNr<9Zz>IbF40R)tEu<_n1Xi4lm@j8OCq!B`?R4BH@5Bc;%g$3NR}GgNs+ z{O;M93S;HfeuCa?ZoXkD$y0S_0NU=Rr{^{;^XT|u_j9FZLTX@Tx@OVPLB$@Be?ir#!y|6F zp%^&DSq0=g?g-4x>CUyZ&d^pe&yhMQhWnS>otAiz3oOHVG2*3J5*S(+RrT8@<+7?_ zvaA*KgF2BgB%Ae(EeK!e;_57)-8)!BB&SzJEWghL%=6^x+qY?30T{cH)y{1lGHq-t zRKBF=M<`AkI*aqpR6nqr9!YOFM<+)CjE71u(|$z+W_UIB#`pXhGiob;^mU7=S4R3q zI5jp~9w_Ph!cXYmBdC6wpk2R>tXVrT|GA3r$P=K#IV(gb$EdRv%pMqq{+Ivxvt_R|DAhI2*%6m*EpmKf_itL}xeVsIZz(1%v(uL-+ifBF1F zeW97C!SFa6jk!+6C(&Q;4mSW7kK#;OF0@|DFQgmcFaQ=RYvuS``RWHBmic5}AxP3$ zg_dEvLUsgjJy!r8u%XwO;C1LdIyJg{M%ounKN7A^sCYl61)rb<>Lf;1YWt)nMkl~& za`TU>W_j{KQ=N8}yqVE~>Uk+mldX>E39Zk)-WmYf5IeCg-oRvv8OR_l{1)c&XTv}=LOMh7hnlu)5igI!8!FgEG|2MZ zbID^=p*;z5!g@$8YR4`9ZNgBPD(t1ACPN}FCoMG#1{t)P?2FVAPci(1{zwtza+Kkq zpzhF;aBmi7f<<4sHLz%p#9#5@%$m4Mqsl@Xwe*l?7&2~c*lmCiW4+z1jP$-z=o@!;}?9F(78CZMLPj$Y}JgLq@hS{O& zsXoumy%#aZN?ZQ;pMv01g~7u zYNP{OOZHv%x+%rE1XF5+xm!>}mTFJ@dOuhZ;`AXDLG`GK=PF*5u4ICK9(xCUAj(yr zugjf}iwk+Xq~QMJ@NASIXE^6CY4FY9W5J()8qm9psu zp6>xWO=uVcxMyKG~8JJFTv4KhJrxY`Q+U`nlDZg#O=UJgk6?JCd5J*W1pmNt}p zmMIhnqggsu;HB^6=nf-D-GnThNcqx%|GW#kyFe-FP0~MYB7i}8PC{cvl1qAA9suto z3ZWg4rO*(O*qnE(45BB^a8O4SpvyrrS2viGkSxD3-9ItAsYG{LM$dt5WwmN1f8a;< zc*8IEJB^$2qQX-3=dG41yYLaW_&;f+VXVo>x+7$D!0p3|#ZdQ*-kd-NBfM)u+zWtp zy;VzJMtp>J^h&+4%KbcNPscRrR!bG}k@b(0(K>u9ZK*Q8&JavfYd5*2WfFHKNev+5 z^o4iT<3f*Yc`nW%#wj?t$H4p8?0ba!QT>Y%3iu{`z(kN;QIinUGTFia%)}?RsW>#h zAN7_e&<5-O1PzLR3{!6zY0+`#xM#{8Gh`KnkspdI;+fecrd?3!ad}yVOC1574F#*K zPkacF8&Pm|LY&TqPu2cvM$W-5udwGNGxU%^#R3d)pu|OLUPND9QXA%0$U8>nSn;wb zaa&PZ6OmjMm%OBolS+EXOYiQCcn3R>%8Tf)TA3w3Yu>~$P9^2{>M5VL%NQ2Nrcld^4z zuhej`RS_9i{SjENe-oq+IqNS1G57JJxTC^?9tZR-R&J}@Xl#0x@jVE#w~$XSx9c(R z_cj|*R{DArBVx;}a@NaKbyxXICbR-5?$n|&mZxzZ_bu{t*qQ6JFY(wBQ>`c*1TLyA z&aBkDIrsLf&ZgtFd?ori|J_l2=>wU9=uaN6?4IRdQ%SM;BsvsAbnU6Hr73ropA&yg z$hgMP4yg8u)FY!y{YX!gGfQ>kS9=7yl+Qi=+n$+dA(=aGEm8@aBNJnh?}wI3D z_}u}#AR}_G)Q!0(O-MwqgUb?3LPlA^%+R=-|7jfC?kD#^S>Ds~!~nyB!@_`MN$~IJ zb^*V7UUo-SSXp7{6+-4bK{&B_1M|+tKGN_F?88H}4RrLlP*)+bn=t?H}qIFLl{MGhbvfZRYTC6kbpDbXwyNcQ&z=wCiJ0(Qw--O^YWf-nU9}sz-uC zztVqoHfI+$6>3FYb434INy8|)BFbyy(Sy+EMnT`Jr)8w`*$`GZZXHlH7L5L->9u5} z;`82^LGe^_RN@VxenU-Hc{VA%(>qe?qAQ_w77|spOYrNLSC(3Ve;GO9#wb!L&&?{I zRQByFzkBmNbn_gB%AA}3*JD-Qj=VBh>aUDue|9Fk*tNU63Ts&14(mziN!p3Y?OQX* zqpVq+vkjZ}ZD7FPqM)4c_JYQ;Zp0Ucy4c@vkS-oEnnynzFLJw`!msFs;!;lt6Kfi9 zGq$FwuD@bHkx~!Z4xG$87WEf&@o7^u>s$ys1_pexJ-!{X?cI>UntnsJExI!ja4FmH zOIpo-fkk={wmaqgB_4IhbU*>Z@oT79`~+ZC8KMY!KcjCEM&ay=ic&)I!v0g4i2SYI zr=<4Q7zi3%0az+ZDf6P}YKv-J<0Rb#kqSAT6b`UXd&b#4f3~+CkwF}w)cO?UlyyD| z3&V;3snW;{Q2*j004wD;RGD>!&rTeWlo7&-1O+?X+#XCc&&IF^qnM%-ZdX+HNpfy9 z*vBFwWr!m zbp7*8WQndbMl`0o@!T)u{2ePeS-zM6RcgY@owLM8dR;R(!7 zrEao4XS&xtb;%&Omz|{NPD*-GTKY$|-A=tKh&a?;(Gj!>&m-|^rUnBHr9GB*?6N_` zKkI_q!sC-KkB8nv^}60L`X>+ky;wDIiO!Y$a!u*G9h7b}!Rq=;3(v@8eNHD+j)rN; zC%llLDvGx(n)o{?L2$#4+sCTy?#YpIK^KL5@R;O~=!$pN-cEXM##sFBS22_seWgi! z?dj-Cs5K?xbzAK;Bm=fy>Y^d3=oPd>;c(};hR3{~^1DF9n*;76G=Q#sYA?RK;pcsp z?EwB}x8_^ocvXYy9$-rW#UTLC!N53r5=(+e9~E_~*F6UEkSJ(tCW$Q_wcY1z%6J>D zl`C)CcdUzuxGgqkMQlxt@IEG&H}G#%VRAw31%yq30)vHrTCBci)XRRU?IyDapJ2R} zf<;o`dFQWGKzTUvg#@B8iG~acr%VRk&_5+Nx%Su%z2V^Gu#1wZZ}7UxB%2D(W{2sJ zyn4)VEi%(0^ef`a2biQDd7Q^cH=(Arh902{yXl zD}43=CI=b$@q|%D02Z9@OpRwv;r^jh}Niao#~qZEGJ6y*H66CG-*vRf?2|!T~|rMMV$@Er3)3>5!m^M2LbS zC?bMX5v5BNLhp!z0uqoOdKDt1?T>rsyXSDuoO5T-n%VoGXWrkeclNAVYwu@5KQ^Xr z5SqDLe5$JQXmQ=q&NiYgd2*?R?d`eKvqIg25m$C5R!Sz7$2lDRdrv85Xc`QCGE;2O z7Ot4|aA{ogneH}eOK zSZGS=JcoiI74}R!iZcV>PG7F`3cmld?HgoLz|v%!?Z(RrODi1PHI{1S5CItk&CbXe z^rc?d>_P|>Y7r4(@puHJ1zR=T?j2fQ+IMUnLqALm%RYaTyIA!A)=^bLQz*pCFlZCZ(4 z(=%mFEu~nW-GM0sV*?9D3MKPA#ua|bz$Ko z(>LSh+avAk9W>;J-_y|^I_)c&a8mN1%a4nPVTCS*?Oe?RQEOg@ygJR%s;|&gW$eb7 zkhT5&JF8>+)J9`4)+JY3rN$8zV40d8Eoa-N$@H!v+Z~+1c_|sShMe=`XIw7B=xeog zd!9o9r$AAQ;VJ3C(tkNU=mYkxw5$>W#i=^fS=?U$KSmMjF2;pEnU?2?p0sm z)>kkzzQi^AWq7vcE#M24F6@-bPi>4eSR{VuWvUsWYr(pWK?#}mXp|*Bzo4~dk`DiJgUFv zRV+FNtIHnDwCn829)o;5+;0qlS$N-nALG(rXjrGiOyX%QZ*HcBHdO~SpM$u?R4i8n zbYltF3Q@JD_+%ZX-O(Z)rdZWT5%!U-a=-4-fZa~38`6=AvLD1J?3mbcG{@7D$Hl{3 zG(Q81&zVpIPWsKihUStVt@I3Gt$ln>-lB4a(LE5fbD|iK98Wg_?_!4a#-gb?lwAm_ zPB2gZQ{yhlLqjI4ITfWL`gw!DhZIN1gKmL_w^r%mHWR{}b&<)GqvOfW zTJqS>vTNl^ zM0tu^+9K>2touF=wRB78ymaWCR#{WiVmc5jKekvEkLpt^12Wm6xG)5yiWT(Noj3V*>( zJCZTB?)j{g`x-FC_B3~=hgWrG?uprND*%A2xNiO&xsq&Vr3PBO`wBJvY~_mzpvJrc zH4p{rnk+INF(@~_TM@ZJDnlsl+!`qZ&Dkg+6I}toEHwJ*zPbtRoRb$7K$+V;j_>jj z=Q;meY4z;eeZVuJc=!xOEve7ek9x-&Wfv>2*~ALgVB{EqR`bjxEzaF$L&}OVRE>F+ zD8rwxCXVzYEogcRo_(1EvfsZ1H@%1*$gRA(3=tm+hg8jCCt|&0tz*qcd8Vi+A9jYD z+WYrt@2N{EuVZ~JYMVq(pU^K}PP&DKR`Mf?Y*@hHH02e67ZhMx+FEPaQhmn#nW}wK zVDYZ7r=6(|se=|7qB(F_l=gsCWUm+`Wb}dmV{18(m5Qd1agBX!R?i#ELx4pIIT80- zwVp3}J2{V|x~(&u&RA*KMGYKcEl1SdS8PC)LAcwl*8u=trKl7`0I|s5yYD;!pb8Q} zj`rt$btSEFDsnlnY;!3>5KkYdDi;02=rk25fykRaqeUAR(Bt@1uw5@isvV+0beAXJ z@|TnkV5ikb@)P#i*>fjE#|g2zA)lY-7_*`6E>LE~P7{F4T+3t$&~N-I2+SzgI8~U# zAX43co<0leRs~Q@&56~q?q4YtMH;X&rq1)@wn8`((OsYMSt4@l?K7B7z>d1>F#Zj>{xgLBV#6 z@7yrayN@xFnBGOe`^$csASO1DRUOECH-Vr#9`^b4hVci|9cK%S5Lab74GUx#gqAfx zT^%6%hn>CMEkm-3J-uCEY3ZI8ql9jo!( z#}WS+ z_s`rvn&No7$Q -#include "MainWindow.h" - -int main ( int argc, char **argv ) { - QApplication app ( argc, argv ); - - MainWindow mWindow; - mWindow.show(); - - return app.exec(); -}