From fae744cba595bfd5a5b8295fbb6fa72a453e1423 Mon Sep 17 00:00:00 2001 From: "andrey.daragan" <daragan.andrey@demlabs.net> Date: Thu, 4 Oct 2018 17:45:40 +0300 Subject: [PATCH] [*] The draft has been amended. --- .gitmodules | 4 + KelvinDashboardGUI/DapScreenDialog.cpp | 15 +- KelvinDashboardGUI/DapScreenDialog.h | 14 +- .../DapScreenDialogChangeWidget.cpp | 15 +- .../DapScreenDialogChangeWidget.h | 13 +- KelvinDashboardGUI/DapSettings.cpp | 6 - KelvinDashboardGUI/DapSettings.h | 17 -- .../DapUiQmlScreenChangeWidget.qml | 160 +++++++++++++++++- KelvinDashboardGUI/DapUiQmlScreenDialog.qml | 57 +++---- KelvinDashboardGUI/DapUiQmlWidget.cpp | 47 ++++- KelvinDashboardGUI/DapUiQmlWidget.h | 34 +++- .../DapUiQmlWidgetChainBallance.cpp | 2 +- .../DapUiQmlWidgetChainBallance.h | 3 +- .../DapUiQmlWidgetChainBlockExplorer.cpp | 2 +- .../DapUiQmlWidgetChainBlockExplorer.h | 2 +- .../DapUiQmlWidgetChainNodeLogs.cpp | 2 +- .../DapUiQmlWidgetChainNodeLogs.h | 2 +- .../DapUiQmlWidgetChainOperations.cpp | 2 +- .../DapUiQmlWidgetChainOperations.h | 2 +- .../DapUiQmlWidgetChainTransctions.cpp | 2 +- .../DapUiQmlWidgetChainTransctions.h | 2 +- .../DapUiQmlWidgetDelegateForm.ui.qml | 38 ++++- KelvinDashboardGUI/DapUiQmlWidgetModel.cpp | 94 +++++++++- KelvinDashboardGUI/DapUiQmlWidgetModel.h | 48 +++++- KelvinDashboardGUI/KelvinDashboardGUI.pro | 22 ++- KelvinDashboardGUI/Resources/Settings.json | 12 ++ .../Resources/modelWidgets.json | 0 KelvinDashboardGUI/main.cpp | 16 ++ KelvinDashboardGUI/main.qml | 10 +- KelvinDashboardGUI/qml.qrc | 4 +- .../KelvinDashboardService.pro | 3 +- Resources/Icons/add.png | Bin 68310 -> 0 bytes Resources/Icons/icon.ico | Bin 2462 -> 0 bytes Resources/Icons/icon.png | Bin 2671 -> 0 bytes libKelvinDashboardCommon/DapSettings.cpp | 15 +- libKelvinDashboardCommon/DapSettings.h | 9 +- .../DapSettingsCipher.cpp | 21 ++- libKelvinDashboardCommon/DapSettingsCipher.h | 24 ++- .../libKelvinDashboardCommon.pri | 10 +- 39 files changed, 623 insertions(+), 106 deletions(-) delete mode 100644 KelvinDashboardGUI/DapSettings.cpp delete mode 100644 KelvinDashboardGUI/DapSettings.h create mode 100755 KelvinDashboardGUI/Resources/Settings.json delete mode 100755 KelvinDashboardGUI/Resources/modelWidgets.json delete mode 100644 Resources/Icons/add.png delete mode 100644 Resources/Icons/icon.ico delete mode 100644 Resources/Icons/icon.png diff --git a/.gitmodules b/.gitmodules index 963a78d..849c3bc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,7 @@ +[submodule "libdap"] + path = libdap + url = https://github.com/kelvinblockchain/libdap.git + branch = master [submodule "libdap-qt-ui-qml"] path = libdap-qt-ui-qml url = git://github.com/kelvinblockchain/libdap-qt-ui-qml.git diff --git a/KelvinDashboardGUI/DapScreenDialog.cpp b/KelvinDashboardGUI/DapScreenDialog.cpp index 331417f..f044c66 100644 --- a/KelvinDashboardGUI/DapScreenDialog.cpp +++ b/KelvinDashboardGUI/DapScreenDialog.cpp @@ -2,5 +2,18 @@ DapScreenDialog::DapScreenDialog(QObject *parent) : QObject(parent) { - + m_proxyModel = new QSortFilterProxyModel; + m_proxyModel->setSourceModel(&DapUiQmlWidgetModel::getInstance()); + m_proxyModel->setFilterRegExp(QRegExp("true")); + m_proxyModel->setFilterRole(VisibleRole); +} + +QSortFilterProxyModel *DapScreenDialog::proxyModel() const +{ + return m_proxyModel; +} + +void DapScreenDialog::setProxyModel(QSortFilterProxyModel *proxyModel) +{ + m_proxyModel = proxyModel; } diff --git a/KelvinDashboardGUI/DapScreenDialog.h b/KelvinDashboardGUI/DapScreenDialog.h index 8735f73..0397948 100644 --- a/KelvinDashboardGUI/DapScreenDialog.h +++ b/KelvinDashboardGUI/DapScreenDialog.h @@ -2,16 +2,26 @@ #define DAPSCREENDIALOG_H #include <QObject> +#include <QSortFilterProxyModel> + +#include "DapUiQmlWidgetModel.h" class DapScreenDialog : public QObject { Q_OBJECT + + QSortFilterProxyModel *m_proxyModel; public: explicit DapScreenDialog(QObject *parent = nullptr); -signals: + Q_PROPERTY(QSortFilterProxyModel* ProxyModel MEMBER m_proxyModel READ proxyModel WRITE setProxyModel NOTIFY proxyModelChanged) + QSortFilterProxyModel *proxyModel() const; + void setProxyModel(QSortFilterProxyModel *proxyModel); + +signals: + void proxyModelChanged(QSortFilterProxyModel *proxyModel); public slots: }; -#endif // DAPSCREENDIALOG_H \ No newline at end of file +#endif // DAPSCREENDIALOG_H diff --git a/KelvinDashboardGUI/DapScreenDialogChangeWidget.cpp b/KelvinDashboardGUI/DapScreenDialogChangeWidget.cpp index 5fbf402..ea0f064 100644 --- a/KelvinDashboardGUI/DapScreenDialogChangeWidget.cpp +++ b/KelvinDashboardGUI/DapScreenDialogChangeWidget.cpp @@ -2,5 +2,18 @@ DapScreenDialogChangeWidget::DapScreenDialogChangeWidget(QObject *parent) : QObject(parent) { - + m_proxyModel = new QSortFilterProxyModel; + m_proxyModel->setSourceModel(&DapUiQmlWidgetModel::getInstance()); + m_proxyModel->setFilterRegExp(QRegExp("false")); + m_proxyModel->setFilterRole(VisibleRole); +} + +QSortFilterProxyModel *DapScreenDialogChangeWidget::proxyModel() const +{ + return m_proxyModel; +} + +void DapScreenDialogChangeWidget::setProxyModel(QSortFilterProxyModel *proxyModel) +{ + m_proxyModel = proxyModel; } diff --git a/KelvinDashboardGUI/DapScreenDialogChangeWidget.h b/KelvinDashboardGUI/DapScreenDialogChangeWidget.h index fa0b39d..ed0d1da 100644 --- a/KelvinDashboardGUI/DapScreenDialogChangeWidget.h +++ b/KelvinDashboardGUI/DapScreenDialogChangeWidget.h @@ -2,16 +2,25 @@ #define DAPSCREENDIALOGCHANGEWIDGET_H #include <QObject> +#include <QSortFilterProxyModel> + +#include "DapUiQmlWidgetModel.h" class DapScreenDialogChangeWidget : public QObject { Q_OBJECT + + QSortFilterProxyModel *m_proxyModel; public: explicit DapScreenDialogChangeWidget(QObject *parent = nullptr); -signals: + Q_PROPERTY(QSortFilterProxyModel* ProxyModel MEMBER m_proxyModel READ proxyModel WRITE setProxyModel NOTIFY proxyModelChanged) + QSortFilterProxyModel *proxyModel() const; + void setProxyModel(QSortFilterProxyModel *proxyModel); +signals: + void proxyModelChanged(QSortFilterProxyModel *proxyModel); public slots: }; -#endif // DAPSCREENDIALOGCHANGEWIDGET_H \ No newline at end of file +#endif // DAPSCREENDIALOGCHANGEWIDGET_H diff --git a/KelvinDashboardGUI/DapSettings.cpp b/KelvinDashboardGUI/DapSettings.cpp deleted file mode 100644 index 41fd5f3..0000000 --- a/KelvinDashboardGUI/DapSettings.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include "DapSettings.h" - -DapSettings::DapSettings(QObject *parent) : QObject(parent) -{ - -} diff --git a/KelvinDashboardGUI/DapSettings.h b/KelvinDashboardGUI/DapSettings.h deleted file mode 100644 index ee2b6a1..0000000 --- a/KelvinDashboardGUI/DapSettings.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef DAPSETTINGS_H -#define DAPSETTINGS_H - -#include <QObject> - -class DapSettings : public QObject -{ - Q_OBJECT -public: - explicit DapSettings(QObject *parent = nullptr); - -signals: - -public slots: -}; - -#endif // DAPSETTINGS_H \ No newline at end of file diff --git a/KelvinDashboardGUI/DapUiQmlScreenChangeWidget.qml b/KelvinDashboardGUI/DapUiQmlScreenChangeWidget.qml index 50cddec..26ffd16 100644 --- a/KelvinDashboardGUI/DapUiQmlScreenChangeWidget.qml +++ b/KelvinDashboardGUI/DapUiQmlScreenChangeWidget.qml @@ -1,4 +1,160 @@ -import QtQuick 2.4 +import QtQuick 2.9 +import QtQml 2.11 +import QtQuick.Controls 1.4 +import QtQuick.Controls 2.4 +import QtQuick.Layouts 1.2 +import QtQml.Models 2.2 +import KelvinDashboard 1.0 -DapUiQmlScreenChangeWidgetForm { +Dialog { + id: dialogChangeWidget + + function addWidget() { + dialogChangeWidget.open(); + } + + width: parent.width/1.5 + height: parent.width/1.5 + + x: parent.width / 2 - width / 2 + y: parent.height / 2 - height / 2 + + focus: true + modal: true + title: qsTr("Change widget...") + + contentItem: + + Rectangle { + id: b + width: dialogChangeWidget.width + height: dialogChangeWidget.height + border.color: "gray" + clip: true + + DapScreenDialogChangeWidget { + id: widgetModel + } + +// DelegateModel { +// id: delegateModel + +// model: widgetModel.ProxyModel + +// groups: [ +// DelegateModelGroup { +// id: group +// name: "selected" +// } +// ] + +// delegate: +// Rectangle { +// id: item +// height: text.height+10 +// width: listViewDapWidgets.width +// RowLayout { +// anchors.fill: parent + +// Text { +// id: text +// text: name +// Layout.alignment: Qt.AlignVCenter +// Layout.leftMargin: 10 +// } +// } +// MouseArea { +// anchors.fill: parent +// onClicked: +// { +// item.DelegateModel.inSelected = !item.DelegateModel.inSelected + +// if (item.DelegateModel.inSelected) +// { +// item.color = "aliceblue" +// } +// else +// { +// item.color = "transparent" +// } +// } +// } +// } +// } + +// ListView { + +// id: listViewDapWidgets + +// anchors.fill: parent + +// anchors.margins: 1 + +// model: delegateModel + +// ScrollBar.vertical: ScrollBar { } +// } + ListView { + + id: listViewDapWidgets + + anchors.fill: parent + + anchors.margins: 1 + + model: DapUiQmlWidgetModel + + clip: true + + delegate: + Rectangle { + id: itemWidget + height: checkBoxWidget.height+10 + width: listViewDapWidgets.width + Row { + anchors.fill: parent + + CheckBox { + id: checkBoxWidget + checkable: true + anchors.verticalCenter: parent.verticalCenter + anchors.leftMargin: 10 + } + + Text + { + id: textWidget + text: qsTr(name) + anchors.verticalCenter: parent.verticalCenter + } + } + + MouseArea { + anchors.fill: parent + onClicked: + { + listViewDapWidgets.currentIndex = index + var item = DapUiQmlWidgetModel.get(index) + DapUiQmlWidgetModel.set(index, DapUiQmlWidgetModel.get(index).name, DapUiQmlWidgetModel.get(index).URLpage, DapUiQmlWidgetModel.get(index).image, !item.visible) + console.log("I: " +index + " : " + DapUiQmlWidgetModel.get(index) + " value = " + !item.visible) + + if(checkBoxWidget.checked) + { + checkBoxWidget.checkState = Qt.Unchecked + } + else + { + checkBoxWidget.checkState = Qt.Checked + } + } + } + } + + ScrollBar.vertical: ScrollBar { } + + highlight: Rectangle { color: "aliceblue"; radius: 5 } + + focus: true + } + } } diff --git a/KelvinDashboardGUI/DapUiQmlScreenDialog.qml b/KelvinDashboardGUI/DapUiQmlScreenDialog.qml index a6d2226..b463f1a 100644 --- a/KelvinDashboardGUI/DapUiQmlScreenDialog.qml +++ b/KelvinDashboardGUI/DapUiQmlScreenDialog.qml @@ -1,63 +1,60 @@ import QtQuick 2.9 import QtQuick.Controls 2.4 +import KelvinDashboard 1.0 Page { id: dapUiQmlScreenDialog title: qsTr("Dashboard") anchors.fill: parent + DapUiQmlScreenChangeWidget { + id: listViewDapWidgets + } + + DapScreenDialog { + id: widgetModel + } + Rectangle { color: "white" anchors.fill: parent GridView { id: gridViewDashboard + + signal pressAndHold(int index) + anchors.fill: parent cellWidth: width/3; cellHeight: height/2 focus: true - model: DapUiQmlListModelWidgets {} + model: widgetModel.ProxyModel highlight: Rectangle { width: gridViewDashboard.cellWidth; height: gridViewDashboard.cellHeight; radius: width/50; color: "aliceblue" } - delegate: Item { + delegate: DapUiQmlWidgetDelegateForm { width: gridViewDashboard.cellWidth height: gridViewDashboard.cellHeight - Rectangle { - anchors.fill: parent - border.color: "grey" - color: "transparent" - radius: width/50 - anchors.margins: 5 - clip: true - - Column { - width: parent.width - anchors.centerIn: parent - spacing: width / 10 - anchors.margins: width / 10 - Image { - id: iconWidget - source: "qrc:/Resources/Icons/add.png" - width: parent.width * 2/3 - height: width - anchors.horizontalCenter: parent.horizontalCenter - } - Text { - text: name - color: "darkgrey" - anchors.horizontalCenter: parent.horizontalCenter - } - } - } + MouseArea { anchors.fill: parent onClicked: { parent.GridView.view.currentIndex = index; - stackView.push(Qt.resolvedUrl(page), StackView.Immediate); + stackView.push(Qt.resolvedUrl(URLpage), StackView.Immediate); } } } } } + + RoundButton { + text: qsTr("+") + highlighted: true + anchors.margins: 10 + anchors.right: parent.right + anchors.bottom: parent.bottom + onClicked: { + listViewDapWidgets.addWidget() + } + } } diff --git a/KelvinDashboardGUI/DapUiQmlWidget.cpp b/KelvinDashboardGUI/DapUiQmlWidget.cpp index c4c090c..5502b82 100644 --- a/KelvinDashboardGUI/DapUiQmlWidget.cpp +++ b/KelvinDashboardGUI/DapUiQmlWidget.cpp @@ -1,6 +1,49 @@ #include "DapUiQmlWidget.h" -DapUiQmlWidget::DapUiQmlWidget(QObject *parent) : QObject(parent) +bool DapUiQmlWidget::getVisible() const { - + return m_visible; +} + +void DapUiQmlWidget::setVisible(bool visible) +{ + m_visible = visible; +} + +DapUiQmlWidget::DapUiQmlWidget(const QString &name, const QString &URLpage, const QString &image, const bool &visible, QObject *parent) : QObject(parent) +{ + setName(name); + setURLpage(URLpage); + setImage(image); + setVisible(visible); +} + +QString DapUiQmlWidget::getName() const +{ + return m_name; +} + +void DapUiQmlWidget::setName(const QString &name) +{ + m_name = name; +} + +QString DapUiQmlWidget::getURLpage() const +{ + return m_URLpage; +} + +void DapUiQmlWidget::setURLpage(const QString &URLpage) +{ + m_URLpage = URLpage; +} + +QString DapUiQmlWidget::getImage() const +{ + return m_image; +} + +void DapUiQmlWidget::setImage(const QString &image) +{ + m_image = image; } diff --git a/KelvinDashboardGUI/DapUiQmlWidget.h b/KelvinDashboardGUI/DapUiQmlWidget.h index 9c6df7e..d321690 100644 --- a/KelvinDashboardGUI/DapUiQmlWidget.h +++ b/KelvinDashboardGUI/DapUiQmlWidget.h @@ -6,12 +6,44 @@ class DapUiQmlWidget : public QObject { Q_OBJECT + +protected: + QString m_name; + QString m_URLpage; + QString m_image; + bool m_visible{false}; public: explicit DapUiQmlWidget(QObject *parent = nullptr); + explicit DapUiQmlWidget(const QString &name, const QString &URLpage, const QString &image, const bool &visible = false, QObject *parent = nullptr); + + /// + Q_PROPERTY(QString Name MEMBER m_nameService READ getName WRITE setName NOTIFY nameChanged) + /// + Q_PROPERTY(QString URLpage MEMBER m_nameService READ getURLpage WRITE setURLpage NOTIFY URLpageChanged) + /// + Q_PROPERTY(QString Image MEMBER m_nameService READ getImage WRITE setImage NOTIFY imageChanged) + /// + Q_PROPERTY(bool Visible MEMBER m_nameService READ getVisible WRITE setVisible NOTIFY visibleChanged) + + QString getName() const; + void setName(const QString &name); + + QString getURLpage() const; + void setURLpage(const QString &URLpage); + + QString getImage() const; + void setImage(const QString &image); + + bool getVisible() const; + void setVisible(bool visible); signals: + void nameChanged(const QString &name); + void URLpageChanged(const QString &URLpage); + void imageChanged(const QString &image); + void visibleChanged(const bool &visible); public slots: }; -#endif // DAPUIQMLWIDGET_H \ No newline at end of file +#endif // DAPUIQMLWIDGET_H diff --git a/KelvinDashboardGUI/DapUiQmlWidgetChainBallance.cpp b/KelvinDashboardGUI/DapUiQmlWidgetChainBallance.cpp index 68da317..4a7b823 100644 --- a/KelvinDashboardGUI/DapUiQmlWidgetChainBallance.cpp +++ b/KelvinDashboardGUI/DapUiQmlWidgetChainBallance.cpp @@ -1,6 +1,6 @@ #include "DapUiQmlWidgetChainBallance.h" -DapUiQmlWidgetChainBallance::DapUiQmlWidgetChainBallance() +DapUiQmlWidgetChainBallance::DapUiQmlWidgetChainBallance(const QString &name, const QString &URLpage, const QString &image) : DapUiQmlWidget(name, URLpage, image) { } diff --git a/KelvinDashboardGUI/DapUiQmlWidgetChainBallance.h b/KelvinDashboardGUI/DapUiQmlWidgetChainBallance.h index be72395..aea12f5 100644 --- a/KelvinDashboardGUI/DapUiQmlWidgetChainBallance.h +++ b/KelvinDashboardGUI/DapUiQmlWidgetChainBallance.h @@ -6,7 +6,8 @@ class DapUiQmlWidgetChainBallance : public DapUiQmlWidget { public: - DapUiQmlWidgetChainBallance(); + explicit DapUiQmlWidgetChainBallance(const QString &name, const QString &URLpage, const QString &image); + }; #endif // DAPUIQMLWIDGETCHAINBALLANCE_H diff --git a/KelvinDashboardGUI/DapUiQmlWidgetChainBlockExplorer.cpp b/KelvinDashboardGUI/DapUiQmlWidgetChainBlockExplorer.cpp index 28ce99b..c125c66 100644 --- a/KelvinDashboardGUI/DapUiQmlWidgetChainBlockExplorer.cpp +++ b/KelvinDashboardGUI/DapUiQmlWidgetChainBlockExplorer.cpp @@ -1,6 +1,6 @@ #include "DapUiQmlWidgetChainBlockExplorer.h" -DapUiQmlWidgetChainBlockExplorer::DapUiQmlWidgetChainBlockExplorer() +DapUiQmlWidgetChainBlockExplorer::DapUiQmlWidgetChainBlockExplorer(const QString &name, const QString &URLpage, const QString &image) : DapUiQmlWidget(name, URLpage, image) { } diff --git a/KelvinDashboardGUI/DapUiQmlWidgetChainBlockExplorer.h b/KelvinDashboardGUI/DapUiQmlWidgetChainBlockExplorer.h index dfcb588..135d4ff 100644 --- a/KelvinDashboardGUI/DapUiQmlWidgetChainBlockExplorer.h +++ b/KelvinDashboardGUI/DapUiQmlWidgetChainBlockExplorer.h @@ -6,7 +6,7 @@ class DapUiQmlWidgetChainBlockExplorer : public DapUiQmlWidget { public: - DapUiQmlWidgetChainBlockExplorer(); + DapUiQmlWidgetChainBlockExplorer(const QString &name, const QString &URLpage, const QString &image); }; #endif // DAPUIQMLWIDGETCHAINBLOCKEXPLORER_H diff --git a/KelvinDashboardGUI/DapUiQmlWidgetChainNodeLogs.cpp b/KelvinDashboardGUI/DapUiQmlWidgetChainNodeLogs.cpp index 36ef984..0dae383 100644 --- a/KelvinDashboardGUI/DapUiQmlWidgetChainNodeLogs.cpp +++ b/KelvinDashboardGUI/DapUiQmlWidgetChainNodeLogs.cpp @@ -1,6 +1,6 @@ #include "DapUiQmlWidgetChainNodeLogs.h" -DapUiQmlWidgetChainNodeLogs::DapUiQmlWidgetChainNodeLogs() +DapUiQmlWidgetChainNodeLogs::DapUiQmlWidgetChainNodeLogs(const QString &name, const QString &URLpage, const QString &image) : DapUiQmlWidget(name, URLpage, image) { } diff --git a/KelvinDashboardGUI/DapUiQmlWidgetChainNodeLogs.h b/KelvinDashboardGUI/DapUiQmlWidgetChainNodeLogs.h index 07123eb..debcc44 100644 --- a/KelvinDashboardGUI/DapUiQmlWidgetChainNodeLogs.h +++ b/KelvinDashboardGUI/DapUiQmlWidgetChainNodeLogs.h @@ -6,7 +6,7 @@ class DapUiQmlWidgetChainNodeLogs : public DapUiQmlWidget { public: - DapUiQmlWidgetChainNodeLogs(); + explicit DapUiQmlWidgetChainNodeLogs(const QString &name, const QString &URLpage, const QString &image); }; #endif // DAPUIQMLWIDGETCHAINNODELOGS_H diff --git a/KelvinDashboardGUI/DapUiQmlWidgetChainOperations.cpp b/KelvinDashboardGUI/DapUiQmlWidgetChainOperations.cpp index 2aff613..1c22b73 100644 --- a/KelvinDashboardGUI/DapUiQmlWidgetChainOperations.cpp +++ b/KelvinDashboardGUI/DapUiQmlWidgetChainOperations.cpp @@ -1,6 +1,6 @@ #include "DapUiQmlWidgetChainOperations.h" -DapUiQmlWidgeChainOperations::DapUiQmlWidgeChainOperations() +DapUiQmlWidgeChainOperations::DapUiQmlWidgeChainOperations(const QString &name, const QString &URLpage, const QString &image) : DapUiQmlWidget(name, URLpage, image) { } diff --git a/KelvinDashboardGUI/DapUiQmlWidgetChainOperations.h b/KelvinDashboardGUI/DapUiQmlWidgetChainOperations.h index 4587783..25d25fe 100644 --- a/KelvinDashboardGUI/DapUiQmlWidgetChainOperations.h +++ b/KelvinDashboardGUI/DapUiQmlWidgetChainOperations.h @@ -6,7 +6,7 @@ class DapUiQmlWidgeChainOperations : public DapUiQmlWidget { public: - DapUiQmlWidgeChainOperations(); + explicit DapUiQmlWidgeChainOperations(const QString &name, const QString &URLpage, const QString &image); }; #endif // DAPUIQMLWIDGECHAINOPERATIONS_H diff --git a/KelvinDashboardGUI/DapUiQmlWidgetChainTransctions.cpp b/KelvinDashboardGUI/DapUiQmlWidgetChainTransctions.cpp index 654f78d..df9441b 100644 --- a/KelvinDashboardGUI/DapUiQmlWidgetChainTransctions.cpp +++ b/KelvinDashboardGUI/DapUiQmlWidgetChainTransctions.cpp @@ -1,6 +1,6 @@ #include "DapUiQmlWidgetChainTransctions.h" -DapUiQmlWidgetChainTransctions::DapUiQmlWidgetChainTransctions() +DapUiQmlWidgetChainTransctions::DapUiQmlWidgetChainTransctions(const QString &name, const QString &URLpage, const QString &image) : DapUiQmlWidget(name, URLpage, image) { } diff --git a/KelvinDashboardGUI/DapUiQmlWidgetChainTransctions.h b/KelvinDashboardGUI/DapUiQmlWidgetChainTransctions.h index 2595d04..3fe4c1a 100644 --- a/KelvinDashboardGUI/DapUiQmlWidgetChainTransctions.h +++ b/KelvinDashboardGUI/DapUiQmlWidgetChainTransctions.h @@ -6,7 +6,7 @@ class DapUiQmlWidgetChainTransctions : public DapUiQmlWidget { public: - DapUiQmlWidgetChainTransctions(); + explicit DapUiQmlWidgetChainTransctions(const QString &name, const QString &URLpage, const QString &image); }; #endif // DAPUIQMLWIDGETCHAINTRANSCTIONS_H diff --git a/KelvinDashboardGUI/DapUiQmlWidgetDelegateForm.ui.qml b/KelvinDashboardGUI/DapUiQmlWidgetDelegateForm.ui.qml index 96a8ae4..638d3db 100644 --- a/KelvinDashboardGUI/DapUiQmlWidgetDelegateForm.ui.qml +++ b/KelvinDashboardGUI/DapUiQmlWidgetDelegateForm.ui.qml @@ -1,6 +1,36 @@ -import QtQuick 2.4 +import QtQuick 2.7 +import QtQuick.Controls 2.1 -Item { - width: 400 - height: 400 +ItemDelegate { + id: itemDelegateDapWidget + + checkable: true + + contentItem: Rectangle { + anchors.fill: parent + border.color: "grey" + color: "transparent" + radius: width/50 + anchors.margins: 5 + clip: true + + Column { + width: parent.width + anchors.centerIn: parent + spacing: width / 10 + anchors.margins: width / 10 + Image { + id: iconWidget + source: image + width: parent.width * 2/3 + height: width + anchors.horizontalCenter: parent.horizontalCenter + } + Text { + text: name + color: "darkgrey" + anchors.horizontalCenter: parent.horizontalCenter + } + } + } } diff --git a/KelvinDashboardGUI/DapUiQmlWidgetModel.cpp b/KelvinDashboardGUI/DapUiQmlWidgetModel.cpp index 4061299..2f8cef3 100644 --- a/KelvinDashboardGUI/DapUiQmlWidgetModel.cpp +++ b/KelvinDashboardGUI/DapUiQmlWidgetModel.cpp @@ -1,6 +1,98 @@ #include "DapUiQmlWidgetModel.h" -DapUiQmlWidgetModel::DapUiQmlWidgetModel() +DapUiQmlWidgetModel::DapUiQmlWidgetModel(QObject *parent) : QAbstractListModel(parent) { + m_dapUiQmlWidgets.append(new DapUiQmlWidget("Blockchain explorer", "DapUiQmlWidgetChainBlockExplorer.ui.qml", "qrc:/Resources/Icons/add.png")); + m_dapUiQmlWidgets.append(new DapUiQmlWidget( "Exchanges", "DapUiQmlWidgetChainExchanges.ui.qml", "qrc:/Resources/Icons/add.png")); + m_dapUiQmlWidgets.append(new DapUiQmlWidget( "Services client", "DapUiQmlWidgetChainServicesClient.ui.qml", "qrc:/Resources/Icons/add.png")); + m_dapUiQmlWidgets.append(new DapUiQmlWidget( "Services share control", "DapUiQmlWidgetChainServicesShareControl.ui.qml", "qrc:/Resources/Icons/add.png")); + m_dapUiQmlWidgets.append(new DapUiQmlWidget( "Settings", "DapUiQmlWidgetChainSettings.ui.qml", "qrc:/Resources/Icons/add.png")); + m_dapUiQmlWidgets.append(new DapUiQmlWidget( "Wallet", "DapUiQmlWidgetChainWallet.ui.qml", "qrc:/Resources/Icons/add.png")); +} + +DapUiQmlWidgetModel &DapUiQmlWidgetModel::getInstance() +{ + static DapUiQmlWidgetModel instance; + return instance; +} + +int DapUiQmlWidgetModel::rowCount(const QModelIndex &) const +{ + return m_dapUiQmlWidgets.count(); +} + +QVariant DapUiQmlWidgetModel::data(const QModelIndex &index, int role) const +{ + if (index.row() < rowCount()) + switch (role) { + case NameRole: return m_dapUiQmlWidgets.at(index.row())->getName(); + case URLPageRole: return m_dapUiQmlWidgets.at(index.row())->getURLpage(); + case ImageRole: return m_dapUiQmlWidgets.at(index.row())->getImage(); + case VisibleRole: return m_dapUiQmlWidgets.at(index.row())->getVisible(); + default: + return QVariant(); + } + return QVariant(); +} + +QHash<int, QByteArray> DapUiQmlWidgetModel::roleNames() const +{ + static const QHash<int, QByteArray> roles { + { NameRole, "name" }, + { URLPageRole, "URLpage" }, + { ImageRole, "image" }, + { VisibleRole, "visible" } + }; + + return roles; +} + +QVariantMap DapUiQmlWidgetModel::get(int row) const +{ + const DapUiQmlWidget *widget = m_dapUiQmlWidgets.value(row); + return { {"name", widget->getName()}, {"URLpage", widget->getURLpage()}, {"image", widget->getImage()}, {"visible", widget->getVisible()} }; +} + +void DapUiQmlWidgetModel::append(const QString &name, const QString &URLpage, const QString &image, const bool &visible) +{ + int row = 0; + while (row < m_dapUiQmlWidgets.count() && name > m_dapUiQmlWidgets.at(row)->getName()) + ++row; + beginInsertRows(QModelIndex(), row, row); + m_dapUiQmlWidgets.insert(row, new DapUiQmlWidget(name, URLpage, image, visible)); + endInsertRows(); +} + +void DapUiQmlWidgetModel::set(int row, const QString &name, const QString &URLpage, const QString &image, const bool &visible) +{ + if (row < 0 || row >= m_dapUiQmlWidgets.count()) + return; + + DapUiQmlWidget *widget = m_dapUiQmlWidgets.value(row); + widget->setName(name); + widget->setURLpage(URLpage); + widget->setImage(image); + widget->setVisible(visible); + dataChanged(index(row, 0), index(row, 0), { NameRole, URLPageRole, ImageRole, VisibleRole }); +} + +void DapUiQmlWidgetModel::remove(int row) +{ + if (row < 0 || row >= m_dapUiQmlWidgets.count()) + return; + + beginRemoveRows(QModelIndex(), row, row); + m_dapUiQmlWidgets.removeAt(row); + endRemoveRows(); +} + +/// Method that implements the singleton pattern for the qml layer. +/// @param engine QML application. +/// @param scriptEngine The QJSEngine class provides an environment for evaluating JavaScript code. +QObject *DapUiQmlWidgetModel::singletonProvider(QQmlEngine *engine, QJSEngine *scriptEngine) +{ + Q_UNUSED(engine) + Q_UNUSED(scriptEngine) + return &getInstance(); } diff --git a/KelvinDashboardGUI/DapUiQmlWidgetModel.h b/KelvinDashboardGUI/DapUiQmlWidgetModel.h index 41d5b30..9613864 100644 --- a/KelvinDashboardGUI/DapUiQmlWidgetModel.h +++ b/KelvinDashboardGUI/DapUiQmlWidgetModel.h @@ -2,11 +2,53 @@ #define DAPUIQMLWIDGETMODEL_H #include <QObject> +#include <QAbstractListModel> +#include <QList> +#include <QQmlEngine> +#include <QJSEngine> +#include <QXmlStreamWriter> +#include <QXmlStreamReader> +#include <QXmlStreamAttribute> -class DapUiQmlWidgetModel : public QAbstractItemModel +#include "DapUiQmlWidget.h" + +enum DapUiQmlWidgetRole { + NameRole = Qt::DisplayRole, + URLPageRole = Qt::UserRole, + ImageRole, + VisibleRole + }; + +class DapUiQmlWidgetModel : public QAbstractListModel { + Q_OBJECT + + QList<DapUiQmlWidget*> m_dapUiQmlWidgets; + + DapUiQmlWidgetModel(QObject *parent = nullptr); public: - DapUiQmlWidgetModel(); + + /// Get an instance of a class. + /// @return Instance of a class. + Q_INVOKABLE static DapUiQmlWidgetModel &getInstance(); + + + Q_ENUM(DapUiQmlWidgetRole) + + int rowCount(const QModelIndex & = QModelIndex()) const; + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; + QHash<int, QByteArray> roleNames() const; + + Q_INVOKABLE QVariantMap get(int row) const; + Q_INVOKABLE void append(const QString &name, const QString &URLpage, const QString &image, const bool &visible); + Q_INVOKABLE void set(int row, const QString &name, const QString &URLpage, const QString &image, const bool &visible); + Q_INVOKABLE void remove(int row); + +public slots: + /// Method that implements the singleton pattern for the qml layer. + /// @param engine QML application. + /// @param scriptEngine The QJSEngine class provides an environment for evaluating JavaScript code. + static QObject *singletonProvider(QQmlEngine *engine, QJSEngine *scriptEngine); }; -#endif // DAPUIQMLWIDGETMODEL_H \ No newline at end of file +#endif // DAPUIQMLWIDGETMODEL_H diff --git a/KelvinDashboardGUI/KelvinDashboardGUI.pro b/KelvinDashboardGUI/KelvinDashboardGUI.pro index df8eb7c..592c6e8 100644 --- a/KelvinDashboardGUI/KelvinDashboardGUI.pro +++ b/KelvinDashboardGUI/KelvinDashboardGUI.pro @@ -38,15 +38,17 @@ ICON = icon.ico SOURCES += \ main.cpp \ - DapUiQmlWidget.cpp \ DapUiQmlWidgetChainBallance.cpp \ - DapUiQmlScreenDialog.cpp \ DapUiQmlWidgetChainBlockExplorer.cpp \ DapUiQmlWidgetChainNodeLogs.cpp \ DapUiQmlWidgetChainTransctions.cpp \ DapUiQmlWidgetChainOperations.cpp \ DapScreenLogin.cpp \ - DapClient.cpp + DapClient.cpp \ + DapUiQmlWidgetModel.cpp \ + DapUiQmlWidget.cpp \ + DapScreenDialog.cpp \ + DapScreenDialogChangeWidget.cpp RESOURCES += qml.qrc @@ -62,16 +64,22 @@ else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target HEADERS += \ - DapUiQmlWidget.h \ DapUiQmlWidgetChainBallance.h \ DapUiQmlWidgetChainBlockExplorer.h \ DapUiQmlWidgetChainNodeLogs.h \ DapUiQmlWidgetChainTransctions.h \ DapUiQmlScreenDashboard.h \ DapUiQmlWidgetChainOperations.h \ - DapScreenDialog.h \ DapScreenLogin.h \ - DapClient.h + DapClient.h \ + DapUiQmlWidgetModel.h \ + DapUiQmlWidget.h \ + DapScreenDialog.h \ + DapScreenDialogChangeWidget.h + include (../libKelvinDashboardCommon/libKelvinDashboardCommon.pri) -INCLUDEPATH += $$_PRO_FILE_PWD_/../libKelvinDashboardCommon/ +INCLUDEPATH += $$_PRO_FILE_PWD_/../libKelvinDashboardCommon/; + $$_PRO_FILE_PWD_/../libdap/ + +DISTFILES += diff --git a/KelvinDashboardGUI/Resources/Settings.json b/KelvinDashboardGUI/Resources/Settings.json new file mode 100755 index 0000000..e3729e3 --- /dev/null +++ b/KelvinDashboardGUI/Resources/Settings.json @@ -0,0 +1,12 @@ + { + "user": "Andrey", + "widgets": + [ + {"name": "Blockchain explorer", "URLpage": "DapUiQmlWidgetChainBlockExplorer.ui.qml", "image": "qrc:/Resources/Icons/add.png", "visible": "false"}, + {"name": "Exchanges", "URLpage": "DapUiQmlWidgetChainExchanges.ui.qml", "image": "qrc:/Resources/Icons/add.png", "visible": "false"}, + {"name": "Services client", "URLpage": "DapUiQmlWidgetChainServicesClient.ui.qml", "image": "qrc:/Resources/Icons/add.png", "visible": "false"}, + {"name": "Services share control", "URLpage": "DapUiQmlWidgetChainServicesShareControl.ui.qml", "image": "qrc:/Resources/Icons/add.png", "visible": "false"}, + {"name": "Settings", "URLpage": "DapUiQmlWidgetChainSettings.ui.qml", "image": "qrc:/Resources/Icons/add.png", "visible": "false"}, + {"name": "Wallet", "URLpage": "DapUiQmlWidgetChainWallet.ui.qml", "image": "qrc:/Resources/Icons/add.png", "visible": "false"} + ] + } diff --git a/KelvinDashboardGUI/Resources/modelWidgets.json b/KelvinDashboardGUI/Resources/modelWidgets.json deleted file mode 100755 index e69de29..0000000 diff --git a/KelvinDashboardGUI/main.cpp b/KelvinDashboardGUI/main.cpp index e60dff5..ac42f11 100644 --- a/KelvinDashboardGUI/main.cpp +++ b/KelvinDashboardGUI/main.cpp @@ -10,6 +10,11 @@ #include "DapHalper.h" #include "DapClient.h" #include "DapScreenLogin.h" +#include "DapScreenDialog.h" +#include "DapScreenDialogChangeWidget.h" +#include "DapUiQmlWidgetModel.h" +#include "DapSettings.h" +#include "DapSettingsCipher.h" int main(int argc, char *argv[]) { @@ -41,12 +46,23 @@ int main(int argc, char *argv[]) DapClient::getInstance().connectToService("Kelvin Client"); qmlRegisterType<DapScreenLogin>("KelvinDashboard", 1, 0, "DapScreenLogin"); + qmlRegisterType<DapScreenDialog>("KelvinDashboard", 1, 0, "DapScreenDialog"); + qmlRegisterType<DapScreenDialogChangeWidget>("KelvinDashboard", 1, 0, "DapScreenDialogChangeWidget"); qmlRegisterSingletonType<DapClient>("KelvinDashboard", 1, 0, "DapClient", DapClient::singletonProvider); + qmlRegisterSingletonType<DapUiQmlWidgetModel>("KelvinDashboard", 1, 0, "DapUiQmlWidgetModel", DapUiQmlWidgetModel::singletonProvider); QQmlApplicationEngine engine; engine.rootContext()->setContextProperty("dapClient", &DapClient::getInstance()); engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); + DapSettings &settings = DapSettings::getInstance("Settings.json"); + DapSettingsCipher &set = DapSettingsCipher::getInstance(settings); + qDebug() << "Settings file name: " << set.getFileName(); + set.setKeyValue("user", "Vasy"); + bool f = false; + set.setGroupPropertyValue("widgets", "name", "Services client", "visible", f); + qDebug() << set.getGroupPropertyValue("widgets", "name", "Services client", "visible").toBool(); + qDebug() << set.getKeyValue("user"); if (engine.rootObjects().isEmpty()) return -1; diff --git a/KelvinDashboardGUI/main.qml b/KelvinDashboardGUI/main.qml index d4cb179..f80a6ed 100644 --- a/KelvinDashboardGUI/main.qml +++ b/KelvinDashboardGUI/main.qml @@ -4,6 +4,7 @@ import QtQuick.Controls 2.4 import QtQuick.Window 2.0 import QtQuick.Controls.Styles 1.4 import Qt.labs.platform 1.0 +import KelvinDashboard 1.0 ApplicationWindow { id: window @@ -102,11 +103,7 @@ ApplicationWindow { ListView { id: listViewMenu anchors.fill: parent - model: listModelMenu - - DapUiQmlListModelWidgets { - id: listModelMenu - } + model: DapUiQmlWidgetModel delegate: Component { @@ -133,12 +130,13 @@ ApplicationWindow { onClicked: { listViewMenu.currentIndex = index - stackView.push(Qt.resolvedUrl(page), StackView.Immediate) + stackView.push(Qt.resolvedUrl(URLpage), StackView.Immediate) drawerMenu.close() } } } } + highlight: Rectangle { color: "aliceblue"; radius: 5 } focus: true } diff --git a/KelvinDashboardGUI/qml.qrc b/KelvinDashboardGUI/qml.qrc index 175c215..259fa38 100644 --- a/KelvinDashboardGUI/qml.qrc +++ b/KelvinDashboardGUI/qml.qrc @@ -14,12 +14,14 @@ <file>DapUiQmlScreenDialog.qml</file> <file>Resources/Icons/icon.png</file> <file>Resources/Icons/icon.ico</file> - <file>DapUiQmlListModelWidgets.qml</file> <file>Resources/Icons/add.png</file> <file>DapQmlScreenLogin.qml</file> <file>DapUiQmlScreenAbout.ui.qml</file> <file>DapQmlScreenAbout.qml</file> <file>Resources/Icons/iconErrorNetwork.png</file> <file>Resources/Icons/iconNetwork.png</file> + <file>DapUiQmlWidgetDelegate.qml</file> + <file>DapUiQmlWidgetDelegateForm.ui.qml</file> + <file>DapUiQmlScreenChangeWidget.qml</file> </qresource> </RCC> diff --git a/KelvinDashboardService/KelvinDashboardService.pro b/KelvinDashboardService/KelvinDashboardService.pro index 8f5f5c1..3448c2f 100644 --- a/KelvinDashboardService/KelvinDashboardService.pro +++ b/KelvinDashboardService/KelvinDashboardService.pro @@ -49,7 +49,8 @@ HEADERS += \ DapChainNodeCache.h include (../libKelvinDashboardCommon/libKelvinDashboardCommon.pri) -INCLUDEPATH += $$_PRO_FILE_PWD_/../libKelvinDashboardCommon/ +INCLUDEPATH += $$_PRO_FILE_PWD_/../libKelvinDashboardCommon/; + $$_PRO_FILE_PWD_/../libdap/ RESOURCES += \ KelvinDashboardService.qrc diff --git a/Resources/Icons/add.png b/Resources/Icons/add.png deleted file mode 100644 index f3c75ff7cc06fe9833492a80f6bd7ddcfefe3072..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68310 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	*@kvG!? zR*dZ{dknNwZ*G5%O5<47ll1Qvi@W~fu80s0|L$^qXlL>k7hz_mG%K856FlVm>MHrx zqJjuQuY~2H#zwVftWNprNfkpkXcN|&^A)IY7SAoF`!X~-u?$*RmbO^HlO>|s(W5Ok z$2VodLQ9q-jGC-Vg*C#Ve=9>`TaJ^HlNfH_M(Bv3JMPt#KL-jDu$V*@#z7;IFWKyl zlvuz{bY-{O1NIibiw%3rNiIT|5RxDW#o~3PETK>c7HT!I|5Ba9B2<wMV1Bg7R*^1Y zAwr|SDgg9eSaju1)7oB``G>tTa7tob!}!Y{_uchk*WI=D&JGQTgd&PUkg0>{Aw@^B z%FNO^9Xv&II+N8!NKw=8U%#>n9}DctE(_h5{Y_IkI!;r=Z{B@)zW3`vX*7r`CQ~eB zZCWw9KnLLl<s;+O`U(`D_cu&fD!;6-999NY#MLdRars_cAq}sxLL$G7O%P58;h)Rg zRyLcBXh;i!z-hUX)zz;mf)IOrb**#u$JMVYTe*#Jrhw*vW-fh=!a5~j0TObb*(xl= zCkMq#g64Qag=G}Ew>3MJ*FO(Gm%F~FA&M&IQY`f{Xt}1cDH>w6im|*}VUYkIm-=VI za_}q;R1w2a<%1~x)%Yq~{1zkFM3QS8;ffd~onDMxAJo}OUQ?<tH|HT}2S!b-YSI1D zrk;D-e+NDHoZq`Zvy4$;8EqWJ_Skta+~pxl8jKTclN&G5`c{BcQ>>4&zOdvVvnFeV z1rsTLR{dzIURZttza$Qsfg0i}fosT$nAmH0nQedLK4CKvmeV1Utz+w-jm#Np$wh=p z$#fnK09%bkMm5HAPl6@3LZjLV3p)~)I$vF&X?EKX*6zFIwtccb{JE<&Qa{}^+D?ik zBSo$WjHXyX|9~3u5)+g(!h!(L6Q~fU!un<3C3Hv(P{gXF_C#?J>Os7u4J^Y5i()7u zPcjnY@<KY}v7#&M#ya&;U->4%8lw%SL$quxxbamPyCbZbcP6H$Kc5Xh=w8D?T1d68 zL((u}DGZ}DrdZJGU-&J<M5(YeDVCC|2`ebWuZe>=P{%4<^H>xKXvnO7TSPQ9VP#O4 zl6nq0mi1s)X?+8Q%cbt`bGuH#Mqyc>vE<W(<1$)c_ukp93VQblO&~x2{CWNLPwX^M zqS_G)r_|4>%JhT<vkWr<pjq$7FGy8mUC&oR0)2!dEYGU=-UIa%R`anrn}p@bq+@wb zh|Hg1&wb@Na)rW|;nT_R<x$9IF~RbTHY|BSBXqxwt`{9GV3&lo{B9Xd@p^xFd<VNi z{H}y1Xe==JfA?!sEP7e3206u~q<Ue2!r!D=pe)2wsfC3J8TtZ8SP4+s7R7%+!wSpl zv_Ny5IbqG`D#KMehdrRx=^SdQqALuRm~@YV1z}-Jo?iK?gqC=9>m#8wGK^+<KK^-K z>E0qNt0@*ran)c{WdN=Jo0T=js}UA>`N4ivlp`!L0~I_8adi&r+1O+kJ=hvf2VuU| z(yX+Q=Y%c#rQQmwRCJxz$?F(w>bV=|ZbnkOEFPR%oitzF3!^b7L+fZ7>BaDaE;Jkh zzfGVSNaKj5Fl!RM23oVYweh+fW=BSZI$`k=^b1Z4iz0fU!j>p*Lp@=ZT?K3niLqQu zBG^bKTPZO_HVF2J=9?qxZ%i$?t&LdZsQKhG8lwO8u<ziB2Q9Mu#|awqZ0IRkU}yZZ z?F|Qo-kxeP#ll&&jist=)<{_Bon9hPhdjtHL4V+|S2toUdZ0o=+yo7)EPDc|!<LS) zvZ$dHNmnXYxg_?E=B9h`3~G2ztsTrMxX($Wt}F`c<om%GTISUs%eUQA|HRt#Car&d zuui&jxtE1E3Td~&UtQWDBY>W<P+pqWz76Q-*A(ar9B{j;t7?-WnGhdC9b{45+yKzO ze6XdlVw&&CsFkb81;Jj@w9?%*rY*i7m#y{O3#NCqw`BMG`7(A<SnETUe|+@W@V=el zI~hz7L^PXX5v{S}(@HJH(!W#<QCVXGP=^%fy#)FLhi&n{^}d3LD9%G2C6-+=dRgvq zt;k`Gxkx2vkL1p<w=~_%<vIclqpnFX&rA0y=}1`AR|k{Wk+6(A3x$!90$N3WK5l1? zboRGdq*zO_=%yKkVWRpImRf@Nr~ve5isew6Uri()m*AQU^%x;#F2N=W1}{qzVOfI* z!ep*;{3e|(Vb1|Ar%lDHBbV>YN(<`*G@v=Cuf8v1C+t#T>7RSHj<Wyd!Jh<eL0%Z7 z^0V?rA&s%{3KC!fa!X<1HBx{Xlr>!kJ_vn@!{6GLyJuBQl#E`Mk-QM$SRG$wB5KZ_ z!=FKeotjS$61UruuqN#g)(L$c?2@o%hRR5>G-Q2wp`aa1z40Q&YKlcG4HFDAVI(Yw z^31F@#Y!pAk2tJ~n+5G<UoWA8zORy)5!e>K`jm|cc_E!E;s1fJezaKM?kQSmyBCg| zeh}VZMqbP3biV4&BVl1=<_swo!}oDJ8V)4*8x^0m6pL<}iK;5AZoWd5MqjB%bm|W{ zOKbg^VmV|s#fZjN>>{Wb_zE!@;V5afX0;VjPv0cFEhVG4s7^CQ8emaQEWA%R=DtO8 z*bckr=O@@*VLh@MxoaB^U-n<yya>yB-JLqj&#Xloe5L(V3No75%HOvsmUG>65^9v* z*A|cJ`KnaCoGTU+Dx2J6Nkp=ju6&f<D`0PF@)vE49v7gAGkVCzO3&T8ug1>5pJ3<0 zdV>0tXGSFK9BKV<JkaT+7I+gyN=GRcdVlv4M3VX%kfE{cjw*C-gRBu&5c&>>d2NEV zD2f{fFT`{{kwgs{fy<S$X|9s9V{b9Kx#oyAur!Ri9(zn0{q%gYQ(uwO178?BX4g<y zPlsmE7NYxKo<%#89=$!a^At-~FQR}QZHlG+kZx(9EbwvYN1V%YUP2Y}l3twyEqx`F zTAVFZbM`&Y&j_t_f~>Glr@(OG3Ym=E%b`%GzVcMoiz0S;!g}=XDcXY+7(eW&;oyHW zYuT1fDHbZsM+HF&ehq5#!^Rju_A+q=YD5S5Dd;yG5@Mph1urHFa1G+zhYugJ+3bf5 zK^1c4t7NOwH=OW;U=IO<x|2==%X$^-%pD?a`wFlHbE9-!U-yJn9+{D`V`#%+e21V# z<P_a^Y(t8Lv(sw|z|I}Di)Hj?OPonjW643j@3vq${9x-=BNMgJaKp=VB7Y6Hn)S4t zujVpoF3-ibVqD~`*Uy60-y6BM(tX{WJnSlZzzj$3F>FIvfO-^0>G~@>g=K%_u5CCR z?n`Km9l8k1mJ|!U(_R2feGL+0VMTey3pJ*AeggUp=O{G2ET`~T6#uS9TZ>{|WNQc+ zBn|nMCl}$kyb#GC?!~zD9QKae?twVEufMzf(&zdCW;k|-!HC=14W;9QQ$(ADrJqur z(c8W3L0SLu(2tgg(@ujeDHiVBy)y+c#V}E0VL^0_-+?L^@3$1oA-O58)CP{fL~+qm zTQAeV_KN0t(6b$5^IUqPgcZtH#wuX1sA)pyi!WUv1IHY>#;o+*t>#$eD_@Zw2<z3* z6SNny^YF`y2{cdiw*W!wM4Lw}S-HbZRZ^^Y>(r7GWKvM$EuZSI6w6_IU~>a*nBT0u zUzicuW~i^q8!>^+$0Af<<un&7^;lR4*a|2V4V6TEp#rqeMX@+<T~}Bx()p^Z!g?~a zi*_Rg4i5tbGzp=Luxv}Qz|SlZm}RCFV_$(3<O2k5kmLQ8VmT0YAOZA9p?Fs9lCsU@ zvv|#?h>&Nw#T;sg^wd~rK=FRD3<mgIM`mlI*5|9C0~-gQKlO_XWMo7}`-$!!?(bMD zjoO-GffWB5Ku9r5y1t^pRiN&Z!G21y9FAyc1&boPg;2rsFSZrxtvJaKLM3O<(#Xo# zSiKk4=>1{=j5u)>p?!Y1N39F1e2@C7yTV$gk-M$Pfj5T%3C$3omwVZjVgZ1(#Q5PY z(=>cR1EhXWLo~%NAoLSX<X(bnvh*g^ZINwB40Dy?N{GxOMPsZa_LgR2kc-f5UG~e6 zZx`C7FnS)g9ARDDv+z7<sTxXVhF)QJh`u=d_mrv9=z@$CTT(1FkYeJJ9Guq55L)2n z7iz`|@+pLV!C{^iBLu2z-QOdq6cTJ}ID!2p#4;t+A;JmCpIvqjyZ&?J0Yk{CiD$x# zkPoa1>%w<%gm&_JXhvUU1iOU%{NbAy61L0i8$X&snefKrO94fZbyKXHTIijW6uqNf zpd)!@U0=b(AU_K?D1&$X&?h*Mm4U?Hw1JhZ7O+HCkJ$Dcs^}W))6X5TE{e2)rAs(; zT!1zyyM1sgy6cdSut&mrL<g)cpac%vZaBzsQ;V>oUVi$9B~?;%C352!Mff`b*{iBd z`d!f%7QE$a6?YQ28<(I@aG)2du86dbwXG{GZVwIVy|Lh$>ZIiv3xzJ=R(!4#Xp=CF zuuMv8^89=Z?WL?IEO}&v&YRu9|M0NQhC}pC0Ndt&?499L+ISkrA7gw>#)WILxv)8I zf-#dp3Klw0OKhQTD~?CEcec|l_Ga%EZJFJD)uD1$x@!LQ3lK`kFOh@*yL9rIadd_k zkQaV@^7WhN$E!?^8Dc7ncUwIQ7MP`|tkhSTNNJ+Cus|O*M$@d2NBAm;c*k*8hw_&? zw+|M(57#_-i+?g>ITP}~`&!2E(SPiIzHtM-AlEbep1~P&d2!Dxa(`g8J>~^}+=weY zPUbj3X;dl-Ob=?PtXg3##Ue(h7$xR=fxJZ3^7*U?1fz}a2m>^MMfe(sNFLB<2K0Dq z`U*!2NY^|m<Dbh|M8ztR@%KD)svWZDPU7&@#_WBCouRPE$o;<v060$ydPA3dltwlG zzN+RJI~0{;vR_gxw+2-)revv>TxrE(RF0}>Ue4l2-3Ccu75Ey6_>H6A4IhABvz6aN z2y3y%B2Sbj8dx5D^c%b1q|UEl3S)h2&S3o&A)wuR_dHtee-Xh1=ZYvd8WS51a^nPj z!WV_1scgpLhbdM~avPl}wHTwQSRab2c?DD|GkgU#LFZxliTM18D|LpqhVN!3EPTFx z=j|UOtcMAozJjgo)V0qip97Rk?Y>G~&trSevwL25gkXa6MmlaxXgEl#$0GVf5twl( zlUxP+7;;WVAP`%Ytt?~p7tgq0RK6H1&9bi%mY#^@Fmk`*xP1sAEYeu(FL2%f$#o*( zdm2iu+=TAAdkd@E{OcvoQCMW;ZU6wzA47@XK4dA4Ec%3JOq>%ILk){o=@{cSVzpu; zs6MI)E@W9og8{0*im>!V?9ki|^f=>6*LIQZap8o8FXnA5aHE_`bU%YnGX8eEU!JF~ zgA40f^P5Xtps?Qj=VJKwix{$4#an1BYfL?0F;tJ7i~}l^3QnX}j1U$jfg9OcEsH~8 z@v!VfT%HXEEMuRmTV<@twFaN*)Qdao&*#<;1rHu2x&f|!B?UgX*+@Z9VHumV@f8g4 zA*_DO9RL?YHs0_&3hZ@&(r8U!T#Z$eun$iW=X6Q6Sd285M~)>kmZwBkP+{4Lctz7k zVAAEdm(HDj9=v~Qpg%s%)>!0$10<P5kR=SCyW1I<%=Hw)>Nd}B@fA!dtig{D?zy+z z#RUord9@LjMRY+tj!XW9#Sl>a+`WK(M1~l#)R>#FC>h+4s?6X8RD`8JqA()4PoLfN z6Dw{%>3FHM=D{iY<?fyJ9b*pb`oIHxnb^)C_-AXyPuo4?6=AuKeAaOj7ngIp>SyLG z<?-AznBaoQ>J2@OB<WQZ{gP$e1}vMfP;rh}1#-Z$W-@nUG0Y&};&ox!k0^|I%+Y(j zZzcM`00*aD59XkMI_BDBoC)9uBaz5J5Z<Qz6s%Gk*FG|K+d4shvw6|MTY(Ul{p^2t z(aGm;zip3((8a(jjfN_^>}im2x(JK1g;*!n^-IN=IxZ|?z`8ZX5>>{^?d7i_#ftVc z?Dhk9?l)3qYuq%EJ83LqQN}X5iIf3>=&o#q>bavE*B8yrHWC1YzH09Y>j!Jq=t7N! zh2w^vMGHyRO^RBOMOcbQghl1@!^@G!PeujZOISs41!b$-ATmpyVny7o(|d!Z$j`w+ za<9(08q4p*wD=hdHxuXA5RCT9Hca9uwb>5jtMlgOE)u{L{sIqSJpmvh_a6vhEvn%l z4GN|4A(|9QSc4{38W9aJF{-u{E2}7!m#}K!4$oSJ_pc$viXwOG5LE}sgEemFafvk6 zo`J#GH5a`b^AQ%=z`BHhw0$fd?QU!Z8L)27o86?3@ydr-;1*#4+L6A!*Tz4>SSV?Y zxFVvYug1T?o}f<(t{K))SfV8HyrfXo<6^O5(rTHn!~#xOVB~An0+{gCWlyo9#|TT0 z0ru&78OFIf;JAIn$EEkgd=;3^jEpsT?K;tD@K?nO(Q`+VyQ$_!gIqihh{26TzMCbi ze>va%$xlz*dl2)-$j2L6R*&0RJqcKAAcZC8^ZAO98_iD?#V~mj&k3sqUT6$kSpF0% z;*h3aL2{qwoW9!QxKcUUlg-|mojYZ;Sp1AN(Y|H_%YeYN&$n+TC1cxH;Dy`zs|T)! zCx*Icv|&wHCS#|2waL2LA{!14SPA{1=2%D5ow8E*?{l?QtJo?Qi#k;+NIm+tsRb97 zR24KZQCLBOr6uBwt^>T_xOWbZnI-p92e8lKsDE{TXBRCNKVty_*}#Hn*j$<5xtoo1 z@GY!2zc(}PpW8jin&1}KH-QJ1uz*<eP6%s35XM@S4V-{f$eJjEYlfB6^4UQ&1^|Y= zizQMMZwX1Hq97vx=t2>em55}WegvI5eb5FwM|F-n?Eqk(oew)txr00RpB`C9)lWNP zg>ltnU*T0Eu?5p`v$B1=u&x6LD?|8dg0QBVy&n8@gX8>j?Ei)f7nZ2U2}B&j5C=$# ztX3+TrWIM?dlP|iyC=-mMBBxnLe+i*3$Z$dus{`7MF7aM><KI>5qmUOzAVuP2sS$J z*0{AJFtJqg;q?CdUoa%QPuHI&=UKt(SPiV;BqtqLv9<Bhudp&3D;d09SSF$C4$ppi zgJWEpB`iXN3q*`NVXd+|pFT0kW))4ZRvBhh5LQh|34*SvvWb!}oH!qTwv`&t*2OZw z;$(6Ui$v4}O&oq(N+LR??+)M<#~qIM+c|EpJo*hQzc1~UEMbK;mVto*zjPDlFdfFn z39)->qwP~zTPwe3&{J66#tJ1YD{?0#xIhXn!qQb$(~jBI)z$CKFP5!V%`{5Qru#@d ze&HlX^hR@|8%nZ^RiHeY?r8*X(yVZd0C{0qQ>=(9nman;xK{`xPD}QR10ufqu!p6! zUvU=3x_><{VeNJk0rn}7+xafT_1rDCnj4?IKmH5@rUwpTeKuE({-MH><0L&xX_{&x zE3YM^54xh{92r(lc3zBV>tbPr5SB$H4W3|LVABAo3py+%5p}v$=IArWe+Lgv$9~7w zxXZ(}{UnAbxiiH|Kk!F6gs%WLZ*9A0wr^WkGv=%9PcDJF$0LWKh2?!v;o|QJl{iT; zElKE)6DBtnVW}c<HA<}bBUnh3o3L6kLs7B>o+tt<0b~WX082>3FLiovyn$8jwHcBy z0`WOlGGq5wh%++Q;aq%mNi?tm@p5Im9k4b^3M;wQOx<;rhP$v}hQfM43|Na57O%S8 z5~}DQsUi%OmCMy+0OD$RTZ)A$<svK<c(r!hlqFRK89*#9ZHg5=Mz~MYHeVf?Y5P?N zY#{D`IGvfW&<JWQ@JHuS;-LW{*j@=LEYerqX6lB#DZ52j5JFgv$jTA9FZLN|Ns;x2 zi?Ci}5DH3lkYH6#B)94r$T3D7n%GctHeU^l)z_IMGZZ6}%CaA)+P^hiIwHy(&2jWY z7}7cAxcVWCfrszUel>;l9A|^^a{bQFvrpVJ#3Ro$Y`eENQ!ge9OYAn!9ln|<EC@AW zk&*l2g(XUos>d4*UDM+PJO)D?V7PvI0I^1?qrU^P-B>+TgdWzEC4nm%%Vwd#3Od5F z5pnn(P16UT!J^Yk+a11w<iij5ardD97-z-d`ufqVh4qPOU<KvVMyl-S9@t*HfQiED zY&Oq-@V$bMG!}#rR`S_5Hy-`?c_QYO<A#Z@yyh`W%veNmG-SIUlvwRY9Acc*D4Vca zSp$YhiZx|<bsLU_Dl8olCHgzMo&<}xJzs$n<hb9k{QdxE$Ik&4z55N^|8@o8NLsNw zS_JL6w=e$TwXV-=&!5weA#MrD$Q@wL%Hkze|97JiKh_Goh$cKSVoBkAMGA{Aj+L`` zxkcqnVpOi8@nDBns|;0<cpwm2;n=z}TnZu%_bhg3lb0|$qW<8@?M&#BK?p1SjOFjH z(0>DK6T<Rodo$@SEc6j!U0yW1;^b@a9I&9r^ul`b%^MtNuD%ja6gA#3ZKWy&{6d;_ zbQ)AXl&wf%fs(6;XeXP`=jB{Q0Rl;37=~5;&)(TMrH!?H_~z><K&=Th5;6lIOF^lq z6$Mn$Dypm6R&CeqzP7t+J8fsTI}b<|sG5KMO#%|gmkA^^&ojB&GDQ!_P`LU#H}^RQ zm;9s<#RGFVm>&!HT*92eptA*b1WmqXomhziF{O`t2<4e+q0YuS&`(%Yeav$QeUsw0 z=#%*IbjsTRWn(R0{#uvb{Yo?zn)Fd{5*Mv#zpsHr7$YnkfAgA2RwsWH-jD(z{qA;j z_$nPgDa`0BEIRxwjYO<$CP4&O%NiaohH>!{og$fZ2hw1AEVkByEY5p&Z<>-i!<@T| zl$77HAI}il`*?x$HrAeQ!nz(?%0vIuZI?1pDCMmw3+q<eSCSYZtXIBy8V$l&GjC!e zC;u?>z*rhdK*rm;a{rF#m}BJkzI+9ujyC++Cqkm@bOt0LV{Rs8P2-}5_W~pWZZJC* zJ6N!ZvrUNxsFs{gS6=!=2dtDwX!K(h{RCsF?r5lk4&2!;8<N5*ry^BQ0NqCZs;hnY zk_9X1PgwMZ?*lR#f=yP>|M};6Axx6AY`eR=z%us+=lte&r0G6<1){)8tcW8Pgde35 zNJGX8!^3l7qT5(S_cZBt#A1mi(>M(##9}Ad!r4Iys#(mrmY0?R<~jm|vaV&MyRkfb zy7=mr>A<2u2W~IBy4?}tyRdFR0aT0pT37kr<7-xu12qeaFS#2F`6l+1k<~x1w_}8o z)ZC6RLO4GpS#Tt9qzPqVp_ylMgm5susc@h(8D=-znkJ!xn0tgQ2Hb&wqebF(FdY^< zPAOqIv%7pLOUN>Yfic2DTcbm|80%(ii2_}y*ebO4K6kj2_m%Q?IjEnutm`MMg44YW zf+ooL>*wG8dHOv5;Vpp_nI3Tn^n@oIbA1>~{A|%o#1ae3PJ=vTxHvpq=sd?BPXu1O z0}PIP0*NG;3yUphu#K~el5Bz~xn^lV%dS}p{RCsFD`17jK_BQyss>_eSCL7OXaBqG zd{E`t^8h_4>s^Pi{Qd?q2K>W^Kb}AR_Rk;NVS+{vK_pHRqETT-k?gbV-nv8_$!DKv z!9aS&J_AbNakqQe9ph8hOrVK_$7H?l7APB(6V?{UKxeTX0Itv70P>@ry?%u?844YO zUR>Jhl1HdUL7sZVTc<$tc{sqL!B=AVRP`HMa@QZ4+}?iv?c39*f4rGd7m|{a`?$v( zj#!@=3jlRStZCuEq&)%3ka5OX#ru>s<K~5BQe#=1$@<E94l-O|=Xn5h#H=PX##lq^ zjsApHAFG3IOxhw+UsdRHr*c2qCqj2-C(v-@K6E3f*~nd`d11}_j*UoGPoIAK_I!Ig zNvO7A_@p3Zwwa<MO!OzLuDi1bW(31#_%rI2QdS^PjFBDrD&Xj1#6-rjSjfr?3%dYG z$|cugbH|x8WC+W%9(iMd3My;|mTr`z5*v?FQSUX#fTBNsw1p{5SK1O5kNhp9h4t2# zY3O{;;P%VEzx~1_t2d;k+ZANarzaDR6-^mXQCRefJuZ0G@Rd0d9)t|D$_mpnZfRjT z+;71wSWv;Bys_3mlB#RB!MbkEH3i5JzA(mGK+>oyxaUDfDz<0?1T<1!8h8XQOVxX9 zDHjWiN9KtTCoFMCR-e%1+wG@M|Ni#$kCz_^Li>(bxLk3|QAp|~EQCMWB%qtHJq;?r z<HbOrFcJvJL@e{1SZJ}RB&_UbkYWluZ|*sh&4WS4s^vb;R(thTIXYGWJ-JJX&-<cN za@!-*ysxwhi_cgfg<zbbuxP&z*U46IwzvOgc>3xU+1s%>uW7lv4zr!4>QPiUJ^Uyx z5|+xo1TyA!2Y4LajNo7rEOrIHQZXm2o?~ZCVU>Wz7-Ow_W|w<wXsBI=a%Iq!sBJ>x zz?_C$zUn*`zt@g#?ZSelur}yc6V^-AKTNWE$;<=)e)-2Myhs0$BPVGj%Z%GGP3zJ? z%5B;}LKnoRA_3~a3nE|fB)}wCWP?2a5ee%IBsgpxPO;_68oBI$>Z8b5po&T;*8qLF z6_?%RN?0`Gs~Yg=y^pHI7)fDePWvvoAHUlE`|;zy|Ji;ugL)@+@>)rCWKq*%Xb{tJ zfX=_dh_z`aKqZBMys=(`39*DFj#yH{q870=3K%YUVHsqs(JwvtYI1380(9m!5~+!V zH6i1x&Y?&v&<mXveSd~R47YxN74;5Yd-d|=<M)qWzT75p)EC8*I1(W0Atn2Hf;zVz z-Nd02l(3Vaj+k3PSR-jLA(pV5LM}keXIJxVLfYlJ0TwhEV}Uv*$3lmoJLAGutaq1} zcMs+(q#fuLfv{Fj=le)juYP&V@N)GP>YL=qND?VR#2jw2|A++ugs6%|+7qCTu!OI8 zVqjh@VJS}ucU<SdLhrgLV}*sLJiM_$CG}7R^yelOxf2|i6BW$UM7}~o`knZw@fGd! z6RZR>zH*OCnb~CZ{+D02-@YY~4kS(r=pm*Z?wB6JLa~1ZRjj0aMGs+({PzmWni6JP z`;Q_QRy9gk;*13<sf0q4U;vl4JNZ8M`$tIW;wz;_ceTR0>t)^Z+hZnKF}BKVzrvAD zknWQ==s{-Os(VO5g7!DqDi$s5#L_OTz<;T*EMZ-MhzS?=8CVuvE?!s$W~_G_bOncF zo=Gr*>+ZuS7A{kFqBl&rzxklb&5R!uR)aqPS~UdmcAHIBkAHdj;X@he$D0#XJ0g>b z7YU+&VL|wj9fwY0_UZp6VOdNm`RY6mA{Mc14OrG(xdj-6vGSmr@>1vq456H|<$<S~ zN{QYuhpA3q0qPsMdr}k@cdi%CUaF>ce4KggXKb~-U89k%5QUStx`FCT?;wKzDp7nC z7q*W6FV(OtC?#R7No_TX9YIT22hao=Yb^C$>kH9Pv<8Mi)w{~>4R4BqZpJxZ87(Xx z;X+0JAVMuAcN*WG&%A%{fBf>*hqp*S_>%h!QUx6j45yJQ<b@@!Vv(Qb@c$uUSu7}2 z-7$%@lE<=iOIX;Es1e8@W4%*daL+A(K}<%jYMm#1MQMSrynW{@&AZV6665!k*^>Ld znpAUqyv-&n|NQoh%u;6KOYS`B;lOm?pQPe*|8_5=`82FuSON12%i^n3R#@jCW(_OB zeZm@yuqeh@6<TEn)-@Q$RcE*Rm3LC)t0i6YRj&sV`g{%aRz=C3US*OM8?9E4_mNSM zg_CIwql+)XM1Q^#SFz^!tBR0C1z{CPFbNjaqMWaGw?M?L3(Et?nd^KKS|CG#HIFCP zP?Lc|6&eg<!xo_=`rP?^RRv>&1xN!`9}}+TPw$Wt`}^}uvhuypygY7*4Ke7FI}bVc z;^9Kp1MUCBW_J}UskRfVs1UFUU>YnCCM_&%5yWs^?i?4`8o)q|1+d5%i-L!UhAM`d z-J7CB^F!WO<2C36{S4^UjVqtezv1(hm6Fvwo2>lXtH;P-h{Q>pMjF85FN&mAVF|t( z`}Y&s)jGPOq1D~|jqVoc%qeNC>;j0O_`=nhs|0NfO%uQwYnFPj18eLK3}oTbTjvE; z@Ag${0^p|$Yv1oX^)=aOAPL^?k7qK>cQcvoav2#9IimSIuj#<>bT2zL$X2m%rt04B z>gNIhCc=U@)&stREi9Yog{A)+RJQS`!W(PA9auaQwx~c@e7?GdpD(QWCr^BBG9n>; zSe^I#eD8gk)!%3|7~&@dq?NQg5GMK&7R0)%Skv|xsDgCM?Jn~MOohe4xzJab<P?lv z!m`kW%DO7hi7uH+zPr2fz^ss33LSv4l%uJZ66s2+(&eiOVKD^_o>gBbUE7V8YsZ-k zV=I4VzP8^$gMuiW#E@pl#ETU|tFWL0V)Ng4FRh~xml0N+0Fz;{#)T|Fy<Lo}-RZD^ zxjOuzSE2%WV;$y{G8PpLE!DtaqP8dnEH!ULGGFnX2!m(e=aV+p-Ri2JyS}=LOH8{B zWcp+TN7|uRUL;6uZKKddcQ01*Q$nS1h=ioE5(rF(Mg9VFwv4q~+PVcvrd+$!y|7%^ zLchXNe%%SjEhrf)$L`r@H1BL)s@3+M>dIG$g%=k32~hPXJ^{ywC{JcGzSC2`f8%bS z;4|%DAYOANckK}2fIF>uLdb(}c2%)fhDp$9tgd`TgBh_{bOuXK=i1sHNFeGJrTZ2Z zJb-9qRo+;4OQAd%Pt-dhC}HI*UfVco@>7LX6ZndYR2d(Ge|~-+aSYg4_{qq0uh~qt zhg81FT~Ni+(22!Ego^@S6=DcXiN#_N+i~uK0{LCnL3_08ydiBDoqPr2vDGEdEG_A) zh^Nv3<GJ=;a>l&$-T_BG;`L5Sw0RDm)h9kNet+h}ei?BL-dN$20)e!`_mIXU)0sj6 ziwE!8dUVDf2i1@TN2jq0IG7eoSc_B;qd^wBf|cN&66Y>mw=P$XSnOpvC*4816k3Eq za2HA4@WNuRdw)zIQ;?AmR^~0@8Mswx@w#ViJ){X-W5t~(+*!rK?Q@`>nLr`j64vW* z8qA7C?VJ&oQ%P6|!*aZ^unRf6=qxNAZdRD1LCB3~tO^66?j5g0qtTT2YMkPHm6`zb zGofjkXs}#K2x}FgpJ=S~h=WAEgNI)fld8H#K@48}H;g)jMT1&UA`pgTvf!SHn|cAE zMLrl@q!op=<-&L`thp{^`~qN*u(*sh%VaEZ2i7%$!4OG#TSO+V8DD*Ey=VBcyYbZa zKOFyd{2R;0mEZ5<Q7<gxA1WO`c}?_ZycfeWs2j1MWR~i59-xERPAs(~9c}^u3JyB$ zaFbwKEItQ!-z_K#tAs7mZF!x$zRDR!FJS>v$XMuWWqo~pt)2%6g}%ao7-xND^WGD= zHoRMuZgD-n!BMYguAZEpe&>FlKJhWlqJIBXX4Nl|us$dzEHJvu{p3x*8EyDkn3hV0 zAVj%}r9oII5r`p9Sj4m=U}9leOaymfSxH#cY{wSwN7$OgNS%cRq8SVTEHD|1f~_S_ zi?zj2mKv0=7+cwRVO=g8;j4w)yW`_YE<shISH34rzW?~^$M+vUemuFly2?Z|jJhhT zWVyjXPza5Sh2^Io{3kHB<c=eb{t8)ySXlhC4YGtgBG$~N>ekO0caemqux8v26AQ~? zml0OgxhpTM3oN_LUvaI0;Ry>Qk8iJLJ-M9co{-10R2{Id+C(Y6e04Xzai5^BzB6L_ zi-l3t_wS6XF0aN{TU_tc>f0I~7M6j|VoUCQgRi`plhB?DVG+as#<h21(QE~)DJ&ck z<`$MEtXZfA<%Lx~@7%uOOhH%(bQc!7r`18q6AFbq<1i4)m+W+~Q&_1<?ZTpOZ|_=+ zN13>EdHE#5DC(~!-!Ct(SfZKwc#WmZLZb(1WF#6#m4PNkmE2EAU4q(+&9r=92Jk3V zu~yWcPMCDNi4I|<!Ngd?`m89d1q_2W)T}E9A~ZDmfGXN!g)5<XLJVVvFbF1WHd`}e z@smQ8!n&InAFot4SgyW%Svzrfy=;bxTvf(7R#zwTs8=RM0gF)cZ(!iMX9DR#>{%d& z1U&4k?qi_S_Asa-5r{!sSaXgdm=%jdXE3iQtTn8oR8+-WHBd5^UdM$>e4+)PJspHt zWi6G#corh;bdc8-%N6iYh^0}xZE;trN3SkfA`$OjzcRlVLq(okHZxSca>tFTF;GYk zHcowA%xl_yS?9Dxx=&(y-PLAmA5vk22W8^?G0=p)sJ4QIw}chIA#UP*`z+RiPGw=0 zupQ_S)-F;mI`uCsx$siWc{&NP3?gDRSXFV#;%T0)iVoTQRA(<Lmywk1uMTXf$Ys64 z0LMT$zc9|ksEJ7$8OOZuiGs0u%)C8sHCn)tPT+GdR`9MD74WF4V&TJ|R4ye911~Jx z)WWj*+}9{rkQde&c0LJhD3^-@#fSxl32RF%ETgtYE-x?F+T5kuzT$~+2`a^W<5!kc zB*J~=Dq6q3<H+CE%4k3w``bHWZT#lvjn$X6dM&vpkZ$0K7sVN6VJTO!=$NX;2GZ@u zyM;x7IkBjgf{Oq*|2d~Y5^4=w1D*?)hX&|9V}TlEPP*C(iG>xaf&%YuZf?eVAu=|W z;)?6srOn1&dIh8+^^H11<#2qWjD9NA>IR##{OoGyyDP?6#7`0y$)4_|AN2IIKvILS z_$pRw=<lkESaV#!;)UgQ#KBN35DWCcj`Kf@086sMTEKQc15eg<gB}tV^dl^VhM}sI zuyP#HXf)R(%CL0LSd)}(Y|O@xVz4QbY7yy#6Bb)|=Sfv2Cnq^s(#RAXpU(ew{FZw# zwT#dAvVUXsT5_k6p8P&+Pv9Db1@T9Ayj^vt;URu+1uQ;cIl^Ed7U-THgcW2<R5@8; zU0^OjK}$Ip^(idr;nlMPhADxt+C<n3MojmA+6t>{pi-$&AW4~@5;B*9qB}ANgx|;i zUx72m%G~y!v7nbO_cYQIfVA5_htt|#-o)^uc)JrTsiJ}vgHB-)uMJCB7UBiST7{Jb z1!2)y>`1M!RCM@g&=pNFd^uWY<g=b@>d7M^teZ)eot>TQ>+7BC->!F<YoIT5#m3>~ zFsHEQPv>bqkkX8?{QGF|%1WP%B$0jqOETOx7N`Wp?3<+OPAt-0#JhwAX-6D^aai<G z*gg;La>5Ep3+oWWwt#0j>)HVo^zeyPyFVbm_4Us`|D2i~9UAhq$gQvE>Qe_xVqq;c z2C}(~sOo-eE??n(f4S=;kBuIT1rq4Du}mNO3=a>-2~DqTa_&)UDj2iJkopQ1K(Q$- zcM?pAH8I3m3F}b$R#RBl4#Y>UToqKH?QFRPMAP(_h4u9*W?A#>kmsX^VQ6S{bp0z! zzS<gi7!nEV1_nXBH5+U@t8Ok|q1Dq>)Fmv6HP*4=!V;I<)4JJ;hmNy_EKM)$u)TFq zJ#8PRAL_w!;{st#I|2g~mSrq$eeUl7pyb>FDVAN`Gr}Wm4fGRMb!UrXeRgzobg0Sb zEGw<qWr{^mem@WiD>5;twK=w~)j5$#Q~3(_`DtNO$-Gu$fg~DB?rs|CfY?8uo`pdR zMA05^wT^B+T){#DVI|!Ta|+A)v~a>1T;_ze15$j(cA=9!SAW8407rgtie+@D&FJXV z-oc*-dwZOvXo>q^ujfJnVdY>jl&?DHgsHkWb!{eL&7ZD{RvOUr+^Ry=fDBr^$)E0} zU3SVl$l!DKl{9GJzKTVM?aH@Hx&zZ75Z0iVKU*P7OP~8^1z}~eE+tTl>V$<P`0_5F z&mWwR&W<t+agl0vmWfkSe^wb5sAh^%{;+XNAgrZj7!cHzw@vgKD$V83$Q<1I{AG!y zQQC|Ja%kytA0c~PUfmuI(%?n=uoh$C_f@Rq0~@=)4ipFpVWkn65X)F=!P0_QSoC6x zU93w9%h>LuR$=A$_NExt`7AZ$*<(1^I|E8%^Wu8Q6Y3P!0St`0`wr5}abT!$84H<% z@piyMfO<6+^lz-!%`W#|T-P~T&REZ0Bynw3EETPzGwwi_2MaA>xoI#TmarP7;1LLg zwS2UTIhkJ^X98it!z|=?zI^%e`CxsPVRXp#k=0Z)O?_GZQe9qNmg^E#ezUw=3(bCA zYIQfTm!TyJ2E~LeddtxOXd4Tef|}3YkX{)z;rIDg)f%I3W8ovu)4dDp!G}U5H#g^S z4OOgWFBY+~Iipy?DiBh_Dw<JPmaul5!9`%m^1`APF((JsWU2~nsxC!gEg$Yp9UV>0 zx`u{aLoOGWr>6E;c4*~8>18+UMm!U_|C_C%^5Ig5#S=O_<Ub@do>Zy~EqG(m$P8?p zuF7pD`hhhTrOPg5YD(@SqI*&wuvApjlAF&o80&sTVc0&S_z__m#KKBD+z8BvC9Ja` zcF`>?s^n~ewa6~OJzFASEpzNF&6XJMCw&aF>t8=JF>ASsL<k<MoX7-2s6$U^eE~64 z-@Uszc(+^y*cqI$YN<#~)a&r$8cb2ax>}GuWa2Hm6q?e(SD@;=XYoC$j(2LB_3)Kv zo2re47n@bAusw|wDp;=x31QJAZX5=Jg{GSORxk@)!fKS9LSbRqDqn-IK#PODqoci} zDUa)(A(v;0gLMd{eFHi9)z93YYj*Q1;SH9TLWcu8<_iQ&M!cy!g?={l#_5FcX%rZ1 zqoISa;NdR!6CA{76_)bP58FSzL7<LUvx-IA-Gpqw8XkTFE%*)m0EodYf3`rN8oDGD zR?aCF7S<d?SF2fUr@C0mmKa=3vJB_vXL%0b>96-j{31T`cq+?C#KHe9(f8xPK&WVH z0)$Ma7-N|sU{OffSno3pUG}Y3gpNN?AP}Q@N~rw9<In7Iq&8yN<IPR{knB$G!$tbP zM_3lLQy{E7CM7KF=;-3&sKorm)dX{87uOaSrxri=Q}a+?a_4+SBQe!nC`S)KSl9gG zK|#ivL_ZlmV9Cx3-}^E(!-a*PJP(5eT8mi!&)&IsrH!q9_!VS>wu2_xNMuA20R^u> z5fLp?v=&=$wLR9(bXuKGPrGJ)YoVxUi}}~T9mEF6b(@5E*2*)NRtP|pJpS_TckigY zI34gf0*Is+i(7Hb%T};FagY$!L!JI?)9t$zRqFOnl<yXx+9|oPvGSXB%Ak&M!on@? z%N&xzzx-iQcn;H;dNc+S#3o;kA!~VsD_AO5@v6>ZW0gs5Mf&p$CYET@hlz8c`inEs zFOHQ1tr3fNThtK-Nl@4mrX__1^AAy2HaFeAbhEHFC>dcD^Z7lF%TlTLAkZ;k;aShi z6(mh%dHAR4!t#%HU4yi-x=yXGVC|qbKy0kX*jVNYi(X1B>G>dNe{sI+-E*L|ipBDU zs*p+rODwFoQ=~HMu_^kxE6u{%?3NMMLSrUj7KkupUI=&6+q+x?QHE&T68o?`<u_Sa zW!%*8>t$QGnS5!fv1(6dIrS^0mS_L`Q}(RTn4f0wKi&g<9|O(8;*I5qYixH90njV! zQJIT9iygZ(*bvs>Av`>6VU=1E*0G$hsQP9z3c@n$!;0W_Z|`e=)6=yNFyx1aE1bC* z>*~=IC;eWzn=?y|_56=FNDPRK^&Drcw@8dpKT0N)Sfcg*-qI>8;G*k}IU3Xn)T>wl zPh7bNODwGDl5-xc#%3d*-)I%q2{a3fGG17q_oK@DN<}Bbqh)i2HTLLIMpy{dMlCef zD;%&i^^K&T{`q*|qdsAQ;=(eCpm{-C+@>|}aICVR3gdBvcx@d@U+g(d%LxlYRtwAK zeU|c#jQC1|bYhfmzeQLjMPYq)xqgB`XKGnL-Pl(uEDtZ6dQx~fImXGh<f9wwjK$%A zrM1!R8D4JYoi1Mik|&(-#ycr2nD_AENevX_y~eDsGI!6?a<S(FP!LuSfrZ$_sF7QI zzl?R_BNJAmA<JB6k>)GR)X?xZKs=_+BLs|$un=FzvOZv`8|%+M2c97T1AmMh>?W4f z9|k&%CE6q!&|)mMUd3AXFyf}_UC$CI39E+z3$e+M{37fBwVu15NLVF+&MIq5$X6=H znyMj;Syz5OZQ2L%PQ|P;*7HAJDfKmpj5RRu0yQx7hX}z$BC7T<05D{co2D_qFCj+D zq75kQU`4{3U+sxY39B(DCv2^-Y)(f6x^uweU-T7$Kv+2}EL~{*+zR>1-TMu+a5?;8 z&op6OKbqu#M|Se|&7+s&sPnv)3RntpX6Mg=Kc5;eEC6~pk)YKkUl=Yd2zVS}PD>Sw zb%fi6#qd2?QiXW$?XB@aOBa~2DUAsD7J(;?``lZFbs{UQ3IG(TMbK+3O&?s*`Jg&K zhlgWk3G1qB*)J(9^o!V!uFf0FU$0=180+1@ov{qe$pFB56Cn;Xpi5Zd4e1p}fYxvU z9oDnb9<ZW4o*;+`IUB-)9w!Z!Vhc;41U&w`5|+?7DkrQ(KmQc2uV55N3Bgz2KqIx~ zp)0e5HP&?rbtD3okg>X^P=~qsV-^werfw|27-}rs<<5e+!UD++>F{r!IrR(ZFySQI z_WLI6Sp_9wF+I*OJSc2o<$OK_&^(vWUz8D6{oWLn>7cN%uiUReGu7pxQ_d7&U5-x1 zgoG%!7qLf=I&G{gT)`rQd#2M^(m$;p<&wKu2@As{9S#*^g&ZCx=$UI3*8Hj`t|qJy zJSc2oE&96Ct-^xO(vzQyAPB1i%DT%}e*uOdV_hOJA!UtsU4ab9N@LwTnMK6F&cMLH zQ!v(8%1v0N3Jd7K|2gK=s#t-bBMvQ|3wgq{qOiD-rNXjFjR^QY15Z&bEJ#TSt5g@& ziR<`17>Am#`0+s^YK?9zFcviaNLg5du_iAqZ*o`n!A{@6z;@iwA6qEV!)RNd4XHzF zEQmV(FT^TWv6AuRD%boV)*~|;G2jevji<F#ST-5)C}GjJ=x-NRt|TF>Tfb$g888$i zjpF%Wqn0dr*Xf7lP2+`Cot)&f?ZLB8qc;z^f(5t49}f)l9b6+GLw;y%A~C0RK}j9L zk~fy;H^r`ZHt7f?J#_P9lAa|bBdoh!nRo8eU>P?4yb!SRbx*}ge9{tx)ov`I;+}2@ zD+|UW{fYg{?fy$`W6^#7u@B2R!-ZAr8r6Cbjd#*mvt$)4xC24$DQ?JmW?b_qoAAaJ zw>P5fuCyf^{Ot>i6nn8e4jM2*1?vD*h2@Nch1leMjeM1dI{QA~iC9>Iv4jd1XQ;5$ zvwjWti>mrcq5xjI`mhK_bJ2CF`K_OR8hwR2!z;}JODqfy8*BEXQ4xz>O6)4sp3D~( zX3pUVGfJ0%?x}ZT2|ZZ5%!3z}%}L3JN!?lM#Mk{zLRgU7r>I+D@y<%+v9Y%Jn^V*t zm;`DDYRhi-3ACda8X9+VLqk(wFlSvc&4;i5>eI#bLkn0^?-v`Z@1sEpYd(_LmET%M zSc(M!a$!M0(O5x;!?S{zP$(4O5CH4xIRG_b(P68nKil{#7(d*?Wk-sfSXexjZ1GlE zMT+_fxf11?`3f6U$`73|mZYzgKHE**^OuGjYkcyGBRG7oUS5<@2YB<xb7EbgCZ6KK z!gq!QVkV@}<&I1emU!df%5N*O#^M*yTK}@@!K|-_*d@;rCo8N2VZboR!Gpo3((NmP zw6HL-eavTArjBnTS1G$mr2xz~7MH`mdabEEFL7rzHZ(b9LQ?}l#(LR_jK$49Aq!aT zHwwnm>#XQeB*c*m3q#!2008n^GuT)MN)fAxo;YX`)<f!bx2gC<!V(jsN;v@doWjcL zjIb)l?%orEF4ML<;dE#?1IAGs9W4_j4o+k&tA_|d(hHnX8SCKR#DU7Tatb5PSD>^x z6aLK+lnGeto)!k#|2bjVq<!6&04-B<#H5RjO8Y)mRtn5FR=Ob3e}yyykQp7iGIorR z@EqxS3>(XW3KkL2FxDI0#^Mr*BbHQHpnh#ia$#X(Nq4>TYrwa$%Bl-%-s^op!m_#Y zb%Uy~V4ph908hGvjkRgEu>6JI<0-CfJRE7~ZdReu^9YH~3bC>L$W-3_@to5uEZ|<? z7SbJBr?F_h35!rz!fj-}LZD)-==%R9qf!MdkJwnM!h#+z0|Im%unL=$uiLLKtXPTK zfI210MN#`{Q-xJ2{9UNF{wgJ3N$Wi}7H8ZT;SF&eI&F5wVrHM*AYA|t+Qk{`h}I{p z(7#>;N+=2oNPMM1ajZlSX~==`w9~_?j1mIZ)7)Mb^78Zq8L$dlSjU{Yupm#R?u50O z#UU$aqOfucf6wSY5cx7z)vz(b(F}Q6=lbH)nBUYMtSh7oxP^N=J1`Kb>Jb*V`)>%T zZYwV=(7a9qXv$>K<ZrE)$U*UShm^4fL!7FxoJnZF?s}bdykTpMWm79*M`;jNj-q0K z*>JgXu$OYVvS1eP`~NN=y#N3=HnePzu}-^A?^B2_pS?8GShMFfBYcIa&h`z=>M_>G zfBzFjNQbaM>vHa(%~&w!_$}Tf6{hFbR}OK+QWsWOD8S$04S*Hc?D>43wFt|frSi8) zE9>Wr@Ge*Jv)?3NxeLeu0Q^@&XE|fW2)p*+UdFn3d1Yn~mfs*@L3N_9PcRm_uy+65 zWe9X5PE=~T5^td*EC{yrkkSqrVR^zT!h(Ze!U}o?VJ*>M0XF--ZcW01{oB*PJhcxz zn<W>Os(|tQx8FUJLk0kt#i2!G#t6^u*-v?W_VUW4jCE~D1xv_S_c4|*M)+?~O*jO? zA`zba1A`ui&_f!Q71pYnu-IR63Okz!Lg%qTdn3iNCSm1L)N269HiQM48EmYqDZWCW z)Idbk+%PnJY0Tot_Y@W?pM5eZW8IuT*Xt{zj0J&+msV2_LCuQ5cS_F^U2&}3X=O!L zSWBFWu%f@@6mmAvgP`Ns<S1VrGzkl<>evsJqA-(?KQGL0fT85DuK<IL0050o4jEvq z(XI@!u!M~D$()RJ@kb5m0t_=2ee`cg-9P$-1?0j44(F<XAS@n_n1H&l8ei->n^?6# zST<jMnuX=3C_ijcshV)h=aS3y85#L@u&=~*SUrd2_|T+oV{xOCwR;N-m7jcij*RD> z{tA}JSObEwh&V|6CrT_V0W%Vo&_f#3D=a$fJdj9OOBM*rrsC`V37{}FM<AV|@>p0! zXd<)Va;0)c=BupKS%jXW@^omZtbdG<)3J=f+tE+sW>m2BHn~e1>n%qv^gzPPYLHK> zuz<)|%^Q-;m1fr+LALpn&_OIL{6$=xu)Oood2CL76lfF{oKUH+nf8e}Ti94x<LXyg z$t&3*9n>a2oFcs?tZ`inuf#?l8E&k1`YTvs-X8V!^@V^GI`QugA`}*e#8^l?Sz4p= zu(3Q*L0CNG!U{8uSvrERyl<iN*pvu_<u6j3pWB56m4eH4{Mw9sC4lr$8^y-Lz<s%y zJi7)WM8-OQ^bQ%z#gnS>!UDQ(EDp%njU<Aag>}!<Lezj*Sir7298q3aa>_bT6P7Uj zc}XyqMQhI3!aCM0ELgl<7^@BLXUgTCsTq;43IHY;D>L-_r5<C&L`@CE%6j+c#|<)) zXT}CBfj5196QtMwI!bs&Z3(1>EKmlC=V)n;Xe@sX)sSq$N`jiOqIZ{p271@q$X7wI z0Go2j_gcHKY7{07A}U)rWMw%0=Yz-;VPRv9mUUd0ou5aj*H}{`W9izl@`b?_EP)-I zv7T~3z+oaW4`j6{9_<keNkKB!7<a6%3IU6>4~q|04BW!Z?=Cr=yI~qE!tQh5&@L>< zH!fB$;-uhm70k+47^IKW@5`0@XROJts{ZAo#y>R~OZT2lnGvvrjMYbyu^4<tDAaRI z5SH5F^q|h1$01jA?+I!UR&$pq6O4mJ*kpaaO;BrV5ZJ`R%7GMI!R;z;>FgIZO<3IG z_c2sQ#~7hLVO38boyYvBj_y74n^3_Lct@78=tLsKfL4&Iv9x@L#Lo%JumRbCMQagO z5*`9Jdn2hTfw11EsKslLCdXH@zQVoWelEDPAP>@uf9(5DR7d|9A-S^};(PR?1|lp8 zSfI=sB4f=(ywUr4TwYiR1k`M$Nm#(G$aJ~~L0woq4?|csx#N*65C{wM3Rj@Wow!`7 z3<7ev#eR1lnJFxk8y&j5pRjI5&#FL*<iYp+$7IZqeJkq?SfIkYfxf;M2()n&IWpu@ z-;Mj)g{AWDweAuyAqia#dXlsTVa1)h@BpyM_(t-C!lI@?mT!5ttMCm-@$<d{MUZYT ze;>NJm#|`87hn*lKhAF?cMbq74_IPjai9hEC=xR2O5X@W*wU_jpHNsLVI^tB6-R~X z&n!F$?1?$2B*NnIDl58YU2gXlY15KQzQP~_*!wVAyN9s2i>??L#q%Gda!*E9!K#?* zE6h%$uWvgJ>Yz|0K^v5?gzhR~Q{#jMOvvMD6IPM|ZNhQ}!Fp_dj+8hc7$y8nsjW4d z!y)VVJ=wMM`}?z|>k4z)D7+Jo5ncnBoUt%O0c+f3Ut!|dSQ7`J3Y&=R012v>^-<nb zwtZep^JyR{>T*Y#g!M2Mld&m{lz>cF#k|^epEq6Z{wxQYDfIVWp-u>^y!`zh9q)Tx zlVvcD=jWp_o%@--cv3UlSD5)1eSHyiW4(<;f@TN{0T5ro9#o;{*4vGxMOaMef3#85 z7FIq>9p^xi^o+}0*Z^(#d0&Ad$S7)~-^YoKHP-bLjO6rOE@MGQn%qG<*jRnfK!xqd z5oeUJL??rqP6?Z~2UWOGdl3sX6x|`{J%ERREv%oU2`l5GzJdxT3vTy5XktOtSAY!T zX6W}Ap|CQeT~mPRM8-mzxPGjof(0ZX-dH;-IV>TJ5$cwfCaWo32pUvjJv`*Xa_-Xb z0I>Vqzmf>cU!qQ-NEJbi^rG9H+DvPyUoD)Pt}B7q@5^bjqxQ0E%nwEz>-<K?o{sCN zU;!c6SQE;|3PmC;5To|~)OMonF9gEcb=*@}UKXszCO_iK5DAN-{E(qaF;HdW*zI0W zGZrei7jpW1MLtL88i98FV_jolG^6LEnS1YQ_3`7f*}4*VI?>nn2IQf4BO#{K!a@SX z!de$Ky3ha52+JlrQmPRN%SEN3c1&eKo$5@#yMG3h;0pZ<73iq2xUuh7Y0yr2axw=- zbJ=DrAuVVMSWi*sgoU2=O(<oogGl563>Ow6fKXUTPdfoE!eW-Jzg)ddB{h--5@B)m zwHmTiF%23><4V@dhO)16YU4Y|VA9LqX9$j6f7c^F7*0$u7OAkVpFCzd=PQh|v2X>8 zg?nJ6u$mtMDmxlo^^i`@5vD&|jLnA6M<%Q+b$ks_DN&oCh4f~>+r61q%vUPHLWWZt znv5YHt@8*G7|-ST`Dmq8SXu+tr*|Fo6>u*mCi-@0xp~h*m%EV}i`Z9kHv<nt*9nBf zE9;(n3M=Vcg8wyaVHK&*4R2|Eg&DWI<*aXiYil3spc(8d)mCL>JX609)ifW&V~;Mu z4BnlekKbo*PWj12xud?qgeLkX60BUwomW{0GnVKs#m(8dIA+D;S-)GW!ExV&WxcR$ zGQLukP*^8`$x*2^Xk<^QWTE#93vNuI@L$1K%ECfsu=o9}s_{U+oE$5IDO@&;C7`i_ z^~`)-i6`Im^(9#8X@rSR3rjJPF^H){&jnU^9Me22U)I-GS3@k1C}K??a!7-)<{yNx z?3z0e2`hgqtV)r}f>!)@m8{ExyG}o5=5^gy)(8t-eIL_!EKl)cgk~A*$2jr6R?i>n z&sXHo+Y=L!w~}4%2XIf6-zHhW0vaKD{&4Q_a4wm2V5WH-D}g{D7?_JA5Lj)GSZi|# zqbe-gdSTgg6AEjy<hlf&ed@Rd810p;MgOJyj(&`r_mx$`V$Qyww*1Zp8OmpqH-PC( z#zN|x{^(@D5-4M1^@)td?M9C7A3)XGtki|YF+9O=Xa%!Az2?AtS^x4S9Ef6AmXY`# z#P2CA*6WRf)!2RRr$oZqr}7ARP|B47?PRjJl2s6NRVUZ71Y1Xig>Htvk83%k%UzQI zW*Y01Y-g+YtY85~f5sADV>J@lg-!~KYuv|T9~~YBlk4m2j_Ep%045ZUa~!AqZJ?8F z#u|)s2r0}Z6sA81z*1~D%2y#0)(Mq|TZ*nCkg!=0@>N4wGaRUcOd>Wkd4nVnFOH1N zG}ezF<3xLV`pJTTC1kAax9v-fMxt<k5D{2KG#v_IFRiS2rq|Y{@rfTUO@*R7aaQ9< zD{rh8U3r#RKs+kKVnSB;HQ40w#2g}Fef}k^uaxUO;gaowu^Q}IC@ggOeL1auY@Z2B zVVPCOIt2msfc2Q`xUK|aMcRx-A4PT%kVDkY&azR=T)3X5a5$Qt_N=V%#i;{^p;?Au z+D{c#o|p+a+86Lc4HSh1b5;w>CO^_$BN3LrNG;y|HSfv;2{R&J_0L!-EDjgmIkm(4 z-RMOXOy%-NOC8IUfCUCYw`Z)6iO5ILhrCzVP=F`AI=F@zoc1`@R|AKK@xv&q*0cpk zfx~HsXVrtB@0K{-{CFi{1)WPYSc@&JEJq@&O4B92_Fcs^XeXU_yG6>%SZORjo}=Se zIl{-gu7Ia=bu6Sr<;mk~%Y20?&*HH{7BFvjx3`auwj)QZk-}nV784DGlgZ?2&mhlg z7{{qlAj;I?066i!ArhkNj^s4Mh697xRz2avwkJ>&mXiewvH4mW*#|;lanK-hOl^X8 zHrx`zdT*VtFx9i~<I0D4`9ip6M5o3I4G&mgAoLN=SV8#sBGTX}h(H$%ix5rI@n8_A zsU$Bc=i1<4&tOkaoM)ca(A0nkpdHikm1!CwjvWlFdN|QHUT&1o`svR$pMAcpny|!c zHQbSRrMP<utN$1Owa{0Xo35@K#iP9XXcWLgV~K|d%?ns6TMAXHiOA7J<QIt-+&x8A zC$yAYT3T9Nayr+XJ;@}FQ-Kgm*OB~gfHq@+tgpUI&!M`o5HrYzJR!;NyR@*FC2NIc zv*|0{5D9Ca>J@~QcDX>Ou(B~rg@wjnPG*#j^Sv&Su*{#O1C|6Vt=rN&*jOzP8jB6q zS@QOHd+Im`d&0rs++3WMf6LNmfa043^UC>ZEr^))RbE)!G|Nt}+&#YrVZpAoeGN7z zBPk#fR*L$G;EwXKD+`*rId)4aYoW04K9|c`BrJ6L&siDC0;64*&<UnA8LM*sn6p|~ znBYXDl^2Yf<m$}h!qo2WuD5O~?-KrNG8v@n2#H8RSRh?uC;8yeN$e{W$N$4H(@}OU zAiT5|VfBD@*l^vF!cr(r6<h8*p;9?rqlAU6!tEFCnXRp#ehY+!uKu|~vXmz$Z=e%Y z#?H_8RCoIMrzsOFSX#H`aKdV12c(J4%^l1g1cTl>4O0c{#GwU(_e>@%X!BJ7|1o#l z+CIO=(rZcif#Q%zSeCEXU<+%JR9K%upuz_(J;K@of9C!Bt%ZdJe488pF;l5j(j65R zclL5z;f(Rh4;`U=_G41bSg)R3q!BS-H1vd6Sg0*b9fZTX7;l3mOmZp8*3p!Q^a@L| zn#F{%uLNNotVOw%wRySuKXgzetf<#gVcB&1Dn!D1pQ66C`ir^-&Gd^-35D~my_uOA zd~5yR*RNj-uY%0xX7Z(MZaIB<3LT=deBNX%`G94;utH*CMXmwj@dHfA>rHs^e+e&7 zC=|fVYmIkO#dJbpi7QybBbb$2U!lNS9AScMQU0%T6?|4KEZS0G+3fp#IU-^0Q^hhg zk>T62H1oP$SbsqanT?H&0=^mF-&-gwWYXz0fFGI7<?oX<BuRC2v<97`a&|t-DG955 zet|HS8|wuYR-3XCN4rOfJC2r?cB6G@(2iuog3S9@_7z4ftcI^RgrQfH%$=};^1@=` zB4IIJXB@1+=7gs-((RWL)`r5=XK115%9DhM)_jHKCkCPS+3ZZAx4xZw=G$LeRb(<# z|D0VTDQYiA0Xk`{i@Urk9kAY6F05B?K7QPmNLW}?FJ6Q&jINhNDzt8?R=9$eR(K}V z$X5st4Wc_?MLi)-ZXqsl!iqbc;raRbLk2pDO>Hsd^NsNMiYFYj!lkH~W?_A%j$@#i z+;X$97IPra=EmkX_ifnfFBG=?eiM@xH}=n%%o*Vnbdc)V`Ivmh!WFEtRl;I8jyrhz z;>C-JIuQ}^c`yc~jDoNbQVM8@3#_d))Wog{!b0mFMik}HErI_;5i~)EyiTXr>-0Kz zL-PnagbkPP9ue@BJ|k%6XSb}d{MmM4-5gUVBrpA!u!5gkRR-8ndxb)wzZc`~FKljZ z<d7+p&;GgMkeJbzRp=yTY%IBq#XbKqg)9(O`QyirI}?5QA4~*0E0hqQ5{ef|Hala9 z^OmBpu$`t?Xmm?-Ep#g+URcRNB=;r)Ylls*5)JiWT{#<gJ9SZ28&n)=r8}=xSUF16 zXPS2v{Xjta)>aFDZS^mLHom_8_Ij`1-P`+j?{XnKlR?H)9hDj?jQ!5*qr(~Nf`dAG zD_8>e76<(T!@H^v|9A8Tn~T1yVYNepaj0L-OAwaE-9{)roupBNz;sj)R(Oz+c^5)K zzHv6#g10mCplvdxk#>A}q*+)Z0l8c;AYh??BaQJxWugBk!DrZ?PG<^>i@ksU-Fw`> zu)neKo<jx_>*}gWG?k7c0E;q~Yz51FVZD0w>f<(^<;<t5zU}Q7Pj{}buQ|9QDDJ~D z_TWWE0L{>c(@7THk({OlVMY1MmN>Hs35y3{&MBhj0L;gxDE1XLmNsEksFG+<=Gc`Y z5|%pyx8N1s)5M?Q+F!4?7V#P4@Nn;9c4p6S<Q$!v=tOa{iU2yFvHTK8?W^;PvO&T^ zAkPjiR6XsxWng<}=gk`svn>*q@rSOl!U{~Uvq&VY&|0)!(2^CF(4%$el)(J6LYs1a zM2yepn`stS-Vf4jP%Z>*ymqB3pqVXUmC<y6|Hi#O!2U|5vbDIlJpAE9@A7hCBa^8j z{alHL3UB^7LkPg4jD=d@gdQwnG|a%EUtwlvw`co!wzp@Gs^xN-0ck$A3+sph6O095 zl(6Q%Ovi<LxG$@}5|%Jz2<?yK@1H}ruue&mW*f`q(kCsfQm$E8@-qofp`BdOwND@{ zx1h$o{{EPr-?*DU_hy!dd6u(#dmH+Vb=n@f>Su%&Wh~S}^~VLeH;Tgg_zW{Kz|%L- z_iSh9*)^y@??zgQgL%~7tiF@qsKYTQ>^qvD4si8tR|e-1Vv?)0%s}MaTD;-0fKw80 z2u#JsUy}3{Mv%_FlCUx$BI`P?f<|h~{b~5cOn=s|^Aw>{`)_7(dAaw)hvDVr<(b<1 z+BLc-*X?t3M!T*7V@byHLwf})hKw^-8Gw6RtyZ7T&dv_-;6JzD;2UVr1k-A)H()w? ze08|)h&Me;qgNCFLW6Yu%Q@7b&E`R86xE@<PHB2rFcTZ(8<8<qH_{}mO%PLZRX`&- zcRvVh^t&_0d}OOzd#8)T!&qCxV|#l))Aw8)>*Xa9s7+oVu!QObpRw91Sl33KA64m{ z@n_Gr2O4bSfb|gsh}Ua)F%O-C-xryMut0`+$8@}H@UPKc6&hrPiG@-tjt<V<zCg$+ zjoIt@*<?p#g;h}(R$5wEMOOhdvgrN`nke)y823w-%VaWJIA#siOIwQ@)m#~oG4*ot zrnzf$94w;DcQ=TJ2=y9^E?28>W-)(0u7|3Dr>|bUeaiqjOl0EVXgh*A5*6G#nzlfF zB=penTO69f!fM<Q@XSN2u=u<GpS|<(NgEC0_`@78c#>JViR0j)fFdwO9ilfKvWd6J z#NUohXD(B7dNIi*R0<S?{_95(tnJ&DB4WFwpF~3m(S)R*eEYu7`#iX?T$75znnW-_ zOxERn#k1aBSToLrI^cY=o@otAgzaBR;OaMG;gsnax|y|pjF0>2o0~G~f#3zj-P<FK zfnHR^#>&;=s2>XDbdyns!|}37DVa<s^ZgCa+2sJf`g{R648L{3lY=D4ex#kRp3RBh zCld*>BdqTLXztaj3;R2QumI51kRrna7nUh39Ie7yb}q|Lm$1%&CT=8)R-Qd#r9OzA z?)s-#j9vNd_p2Y{D@#jsrBL9I20X1ZI$SYGQPg#o0{y7?8S1ian|h|i1PkaPxT=Lh zG82zCP335<ROOn~vGRr<IT*dSE%+`>f(}R?4F$v&`)+?WB_5KB+<cw;UBYUTctuLO zFN+fvxQ7&ZVPIjI32R?oSg>sUu&A*k);?B8x;MbmoZ=qMQsb?(McqWB6%7^d7j*gB zV##K+UW-2p`a#!5C>KH~&oWGnVVE&Ck9s1P&*w8Qo1yBY`IAg0GX?DUFlYp?Y6u8d zbK%dR516j-#_VtG|G6cfK~o=75@Fe0(r)o0VIlV~nXpV@q4r5aj7zJwsr7Yy=)?v= zR0mv37>ku}uE)o{S66;&iH%l09#vymEM7|oN=IeUBefvnSl(7GY7EP13su#8GLwlr zPEH(rs!AUm?34kZDl^9q9>n%U2n1Z8-@3s-pnJ@{nob~0SXjbp52C<@HFPViH@~E? z%tyjYr!xw&e9%_yeq<v+f@hvseuC;}&f|%(OO*fW>WW|5DwktO0V->`M?^nkA(~;* z)K5mB)@7%#dT@}B#`#RubX7c)N$&7X7O?F!ES>ZQm!1$CDijWJ#uOHrdN%3C`qBiZ z-?Xnox59GU-{ECyzrL`{gmvju($ahD0)p;*ux){qEu!yrckNWlTT!+Zw!9R}(sho* zPw03p_wjT3-FIbXq{fKI$lI9Xis@#kdU<lvN>#~xKA)3WlYSgwRYxbpiOL-glg5l# zsgEI<wls-pSNl5E5mo~3z~&OFKN7yvOIT*YTGk+}FG|8Xvu<kIBP@axZiZNS+GDYc zi~OSc3U94(KNXF|>gbNT#cL50)bXyPYm9^j5|cYPI7pTpj<Hs#ipP_UYPG6ZhJ~;m z2M^mJ1TmB0T|@fHH=V+_|5^>O+Ha&@b%Z4{E;dNjJ*<<kOqP`Eu%HiN!M;_)_?#_b zZ4odyqL;1>k4HIr6ZDUJvsYIUmSv-;1)G%$>$<MrZAW3kqR<`XOfnN6W0;eZF-Iw# zPUkDy+urrj$zf*{J2?0?{Mm@Y@_n2n<vNxAbz8+CtYNuAcAu)SU{WVxnN(gY1*`?G ztFYFcOQ3*f!Fr@&k5Dd#p-p1GsDrV1s>NcAy}piITx28uYdY45c)b=04c%_LJcBXT zDC8QsG@q%OS0|-XoQ)O=g=#OA?tKX>$L|nI;68`{HiD-l`RZdr##ex*rc+!;Shooa zX6>`;!U`x>HO#?4G5MgBur|6UtS`<>P-3BbDOP=+kd@l|dE#6TVF?s&f<e}jZDPTN z#nPJDgGYmpOX(Ve5ihmPl?evZd4w@&VQo+N0AnY->oP*D66LE-!#=zP!}rcxzTsQn z1ndEIVWDBALU$4dipihP<%PBG!GxuH^ck;qw-vknYuh}?Lie!ljs`}hUJv>OU#T!6 zM})^O;rgNYODxNlaAA#&l}aVLUawU8I{hrr^A4fh0=w&Nc*+o~R>JGq>3>M1A}k(A ztxmOtwdz(E*6ffxvoK&xPXCZ=;P-q3`V*FCzT4D#v~1f1d1i<uJ%okBW^rRh=m(O? zP>~ijo)Mn*?-nDq4h)azs`C;jjoRoUtiq_gnF8TsV+aei2?)MY5mq7uE!?YibzuSd zPBvf#VBnan$R(^(=q{{%=h+b`vS~eQfGRfIBFJ+@5M@Ici<S|VA0Ez8^E~!ZqgQf` zO1+WG<>=aD2}@<NOfOWE6T2V>`Qq4RghEj)U*TVXD`j`zm1(8mmdRm7VW}Bwn1q32 zQo)TS_zDvic9Kwu*qQYcs1XzP2r<@(H4hj-Sy2oANXY7T6GneNwy;ot!b*=GlOW4Z zc*j7(niVxfMj%;pM{V4Ku<WFgu#}DUVt5Lk0F&amWUKJYDfA;OVSEm#v1Z!>CEgRZ zBO?gQ6TyYm(CsEHGZ<s#K77^hfQql%6NexVxqVC;Mp$#x&qyRjbdpdIR_IPxlYqm8 zh7N@*G9l{X_iZTPhNr>gbX`!^Ye7%_39G0+KBqFT*1?@6h$8^~okba=4hyy5@KyJC zU-_!ffEAzcffC2zL(l^RNDALj2B`?khYO3euL9203tm_PbHjqJzU>C!=`h(if6nvz zkLTwbpiNls7o2;l!a7r(TEAgi17)~1Vh<U>SUImDD%}xJmBp9cqyMva?@wtfe*?!q z2yEmy10m8JGE}amfMCJ9QnYB%T3dV6+Uxh3UhK3!Uw?YI3Lx&k{%DUi+>&gP4e^J( zr*me`)HyTZu&-IO*^M5r^nr!{5myL@OFv$~_v8MRu#-unq3+&lk==^i{bXDOYmopf z5E6%OyW8z@xg$9q$va9ptH4bqzkdY?!P@mMVUX+6Df0j*K4OkRrmrkp0~5qj-b-i} zSk1<_aCkth7S`YuC9vLk9_K(Z{`2F=z3__rnaLul0O7?69^H0gzXQv)DG-1Kz`574 zxT9Pm@h>T7wdNoPYt6d^vK30s1CR<a3<kMaHgCe~HWg26xCAr$*Q*w8H<V6mAomLN zd4*p*Is}>03qfQ)SBU?aiO8wW@AQHd1ORb!4gpv}`?}J`aq%zdXXWtkk%D!m1QyIY zp9UmpWak4Q*Dk{r?txgfkj*BNW!4dX2&Eo;dyWv|!{V=noiNs<6`du*XOEt6vY>r- z3+98xFJ^*BIzV`5hZj%Fx>G7W85spu97BJLc9#NJ$Uv~Huw!P46s)56Dad!>WF%2q zW%iWb@XF4C>0-4Tzgic6CRtOqDwtEV)u~6(P57d5dxT##6+r4z{<QS35Q-f>j+qV? zzmW-IIj@i~5x@HZVe<~G?8q6GJw9}i_N<9uS)md+So_{JP-w}Sm*PlfjZi$b;lOmU zD!;-Qb(^V1qtR+MTeeC7ObE5UJxJXdT5fe3Pb$qeLbSmG@}78J@F1JuUf@gyi{ID^ zBKaa)AJLx@qEa6>T>=4E+`5|s0O=18Aw$8k+V!gds{jgpbuLMucED^Cyv3dcFqf>0 zmm%EqZJSLdyI?}Cdi?^4z5ezbX$S_>0oL0`k9ozLTnjO?y~=E0BwuhVF$ye*PbLV! zirDRf+-)kOwX)jtJAS}GdA|f$XP{7^==?6VMmPsbt+4E|xnNy9w9WQ?;lj2CjJ;H~ z9_r#=ur$4<9w>tK+T%GvpipjM;T?>xk@G8z6v4`k2FoRog9T=RWwqz<=V74ZkznmP zmBE6da~qGe=r0z5VwcQ(%}lXsp_i%tFI+d7oE^JY^?K;4@4Cv3Dg~|p2!8~Id-3Q6 zD0leyota+6wl);K!W$VuVulq&Bw*d1Cu0&=R)LcLm<+6<H;+N7g46j);_VXwP^`So zel-)U@UQ5=7cNk-g~#tzwL5TK(fSn)uQY?T?0Le0a>Bx)d0ydIM%gPQ^!`x7mql=! zFzFfr*1+}PpgSV>K^YI0RdJ@YLI~C|D7Wn_jb0<%1%he}J8K?TtzY55(D$ustBlvH zPCYtwVawkt8oeS13tcBM4x4WteF1{_g@v41&tKtSW)Ug(vG=ZgZYy|qx%|YYGFXD$ zE`miQKK(4P9A`xLu<}G;?Kw+<QHN!*L}1}Lb~|7eSkYgh=I}_quqDedwz}bZCpvs# z7o8|l7s&@jdI%{NR|w@pk%c%m&?&k9-Pz0{rwT0bU&P&ndciV2s{@DsjAWItR`MQ! za-Wt)J?(zU%mGnrEVFA8ShFvaS0e^&yJ2gM&#P*^9vyXI4_X1E@3@O6;Eh-z1hRzB z#!a!1nACwX1f{nkBlH3Q&NZ1(01F}Bz78gXWwq~LBLQpAyVL}N=A28l;nz%%f(1o( z-W;&Xp_i$V136_2b;svbC_3`Ws`V~XmsYTb`{MDO0AaC(v?*TYGCK)G5ROl9qrt*K zUrgbqJ3_G!>i`Iu36_<2W{D6iAPF<hA+TzvEC#Yx=Gk2{z$#aNwIqI3s@N)H^D2x- zUs<^Gnl@Mxubt7dLMX;Rb|VwON@R9&h$Mbu2aN^`(yrhTSiS+U)<3xKJ|>gEvO1mF zCjo1h5G*(yetk}XVS%(=mR&OetnjaJKw>DjleSA3Llx1hp-X%F?TR{Bge`kK0+5Cm z9!JKfmFU%E4v~U|M}UQH!1BeAGFWlm<YhpsT|W_6#|}cU_L!xD>NP?!JkR9u*ui@C zvWg`~a@1CBg3;ktryiEPv}QeQ5?JL&kG=qT=>;QB9#!%xlS5>26N^X!tlYXQp$ry> zOb5#X%kf<qEadg3fT)#i=P~p*&#VD)dkj+s714UaU3wgML$=g7cH^|L3|I}yU;$Ze zafOg5?(@RQxV@Ulq!D3}Ou7%ONYAGc^C^MF-GF7fSQc3Ryz*lWXy3a6WX(DAfx$IG z4CJjc+hYdnD*5tK?u%Hlg$$ox)vGNeeQAO418fRdZ#|DOs3}W-iiO0a4j3hEV@ntW z>o$N5MX*jj*g1s2RI#jTrI|dzgQNS70+2O(%A7%Oq-%uY!47Lc9+eyJQG^g6kg8?y zLCL9bz1o$%v}otO8DPEjcp{)K*8&f8qu`YYRzd<S1aV&s%Yp?bA7a?_;~1>+{$fB8 ztb*5D0K&GN^Uzb_lwAQey<$$=;{>bqtHC3X>&n<Ih0$a^)Rn)s=(p!o!2+Vh6+-fI z)X!|7=M~z>2$EoNJ{K<!R^&qjnGTj!(eGbVyoXhEtP&&gzs%{ZhBZPlmN_0HSe2Ky zSp@QhZDDNe?m>lXyQ-@L3#fp#?0F=B%HAz}7RCmau(+khD`8@TmjsJ<x#VY9T>L{0 z-2`TGWp(8DpDBao{Q;zP#U~rYvqsf)z_2Uh0xM8?Nicir8u)s`Xs2E+C|+BmQKq;v z2Z(Avdh{C9#>d<dG$yY&@jzsv(py2)2UfNhET4;$1xv8ov)KIEmDT>t5y1@W7>Jv5 z&X;@VOJ|_2<|^}QTwq<jB)UJ<vNa6b?c7NLD1%kMqPX`NNGiYaXn6sBg7(RyNGd*_ z31VGfoggtB_r>JF`uA1O=7VK{wXXzLpy*WrR*iM;^{x>HKxH+ST^kQr?drpD4V1%; z<Rvy}w{wc*+Maia!2*fY-*JD#gNEV@!dSe*;sK+?U`6`DN+U5y_=2)v<;0yj_dE-% z@7~iZAaBX}RGe-xbD+98rZg6?%GL8m8%RnSa%w|2B<B?%v1aF)cC9q+*!?1|5URb4 zbvPEVf?FFrQWM^o5c<K&p`LOIGpzOd0hZOl%zi)ttUX5wRP<lx-Fbc8CAI*nE3oYM zae!5QStVttYHJzcRVW2yVAUIlhFCz{vgZY8ihtqGjlrwPR-8ks;wFBg-qOBazxZpg zusm4na1XLN^ZP53k2Ms2+?4mK0&Aso_xhYOh6N4fne7$h!J2(&I|9OHZJ{o8uR1ME zcyZ+i4+z1c6M81D5UTB;g&02uuNFC^E-o_w)+FxxYnLx44^|NFMHW~yMTr?!pt$dF zIJ{o3W4}}Y@?JTYZbx^K`3f59mPohr=zGHbIXS{%+NU<Os`VBkzPji2ae4)9&-821 zn6Tg$j0P(!dZhxaMLDog(Ed>dEWGaK;T~j#^8Wltu+EOXjz4)F-r_Ehc5(X08<r`6 zmOe4;CxgLiRv%t~ibBa0&?^w`bXqE|F7+)+2Q1<hLIhfi(YuQ!IltQBklNCjh&))b zGpwN9&cS`iDnE1D9Rb$azC+A=EtZOBvF4rIa8pYB)lOZ3Z6<FpSgrF40u@E6ZYd1c z>n$}`_w3vAF@p7v=Lrv*<J{{&DWU^L$)9tV1uN%^^Zj5Q-bb*k@_zqbKUhOvIlMQK zi*<JU`kXoD6=>@_%X~5vtjc*cplX0OL$)Zz`Bk;6>hj(_7$aD(A9*5rl!>^rKqqOh z^n>+r04(hC@zO^m2gL_s&CP0U-@n@rmgrSKSl;hIRv_;z!rEG`#1=qftIV8{V5QFg z?y4N%N7N3+x(wH=O_c+-QEiUPD|q8s20caGhn#U@r85%(q5xKKVgRg7Ij~~xG~AD@ z_WhTGV0HH$qrfVX?_g%wn?Lhsps`OZQ!~!1?%#jUsvY1fVOxsYZk(pt0sG|J`!RWi zpLre&peKHv-sm3oYEqk5+)n>}dK@1HOOOOhaJf(5zGQ*5KM2;Ue<WDmJdm`OXPnG! zbGx9e1Ey3k3as|i^OX7#-n1oWsd&|?HdPPU=-9w2PfvdVeVrJ07b`cJNgyqyx3Z`o ztepX{g1)%qODGa{dlv3TRz<&e0IWUl|BVLATO;v`x%NtI4>Ywh&%81SEF3;>X&B+S zWeW#rc$F%vAF<7PWjtQBm#062&iM6p4k#smpbUB0t%w3x2^p{i_aP7WBdfv?Sl|5) z39yQw*wv}?I!0_3H1&#M3<9fi{<N%RfM11lpW1L$sdp~44A}OADjtVd@ND{ter&St zpdnsyJDDufR(4>9#V-zmm6HYw1@F(s9IG?G<ES63B^_YlJoB3?vF!k837;}^hJbbT zFtnm=fQM}jonD1H$rNY;tEzBJGMK+YD8?VIa|VFLZ)`=7ws0_$lLrfNK37fxEbO{J zU|AI${$f8^4u=$2r6$264Fg~?YoMt$cD`l+SXX~PoYgqQ+l{GNy<S~t9I?;pg)w*q zPo|fFLWk}MP-(!cAkr8&`4cICB?NtGDX`r42P~^Vz89>#ELh$>P-yixSbb#8Bhb_w z^Au4Bs~bA6XddFJWO7Z9S5vJkP#e*sqd+J8kH^CSg%WOBJ6Za@5{=QhF$eLRgJ9v9 z>!So%;BqJ6zGQXmU#gLUmH+W?2M3>EWbE(^i$$QR6^8jv9jsLyUI8?06|Fe5Q}wBq z_7QtA4zQZy3ZcGm+#Lfd^?DUUn&UDXN?`FZSBxJGmeA|3`B`8&zLS9^=Jf6tOT}Wb zbo*y}dwX@exH=bLoi|Yd3(Ya}m@-&L=V3iV{K7WX22Ejc_n@W`TW*96_X>+EgnG-l zV~8qPe0*yIBhBS9K}E2*Nf$R7tk`|pm}9lK?<WSURJ_gWyy;r5{+Qc;(f|v(PnoZD z!MZ#Tb@dE!T(yOpprLlSlWgf4vaR}SgS~=ho+lj83B}zBnqcu8qE|GYb4UE-AXo@o z(qP4TxHnlX`S(b{+J)O@|9kM`;Nbd~!|y-7-~9RA>R-2PF;u{UHD<m{6Rg?mC*1Xo z@p5(QQVVpAPO<{}!20&yV6Wc2@tgpyV(vIauy9N~V3ZPA6T@I_y7-Y`p_n}f_bCgk zQ%tr>Si~R~URhb92^MTKs}#X%SO0UMcZ^4;LKxIG8=k5*^?8L-9SN|2;tC-KT5)c- zKn*PZ+AD<gfyF7!umHJyiIHICT=q1WnpGfQEZ)6TzT|fVdcn%;cn)jH`8!HrtugE_ zNT>b@cdUDiC#RyIvZJK98%Hx(_`!2*s8?^NJv>kgQJP|j2e|8r|GA?K7DRlDqrtM9 z3zpSc-a9ih<M-z89v$s}(p_qXwZ8&N?GDedR&}^qWaa{tz{0Kba6tbMzf4x!psLDL zr&<QRV6`7SXdCI(>*?te1oRTt-8o8NMKVeUjFO+;CxW#&^hpZ7xCB_P9GI8Yu5;$! zZVwx+`5gznV0BL=Hb0+&VxNZZy3c|3X5|kpRkuL+v_@f!H>*?XwiHIEI!~MWZ#&~g zy=|aZusr<+^hf<fmfzZJ3P@kst*ioAzm1XvD+cCeRo<WZlRqE00n6bp^@0Vp(KD?5 z3s5X@%v^ibU+Dle_m!EiQ330dc*9*^<z(^-h$}=p$%_>l3uUQ#*Ep_VnS2i+`N^Z0 z23U#AW&%+Mi<{ix_<_$-Sa+pIfW@zy3YOK;jF`W0gG_M%EGUiyD^K`d!alK1k64Cz zRRE3E=KngP0aiD39;GzQTT@jvyKy=fbXNA?cb*%@6*QlCz5v~jo5mCi36s7Y(p#|q zkOw}UjZaQaE@rbr--j9TWk-Q!?oL9h{h6Lt;kqCGQlJkkG*YYzkTkp0H^+Jfg`4yI z@><C{X4sm3u*%i*3axS8O%m^5o)x{)4c6QLd14e-fUj2wd7#`0jWbyiG`!+=e)2tB zMHVw#nQO3oTU(nkuIJ+n`qHDp65uwD<G{=;u=d4g-Fv_SD2|w6l~xFi`Aa;ifnnDG z0FXd$zYew;=JWux^^|#~AFRrGi{3zQk>16+N_Il;ff87W>1r1Y>ix6_1MRp&{l|0) zlfE=kOzGPo^lr>aEM_v3fAVEEv%O%&_+hY++lApKl#bYa_E-W;&I0Se;r}rJ7AkuC z#X8ts@|FTX)Y{$>dlTba$up;20KCgy<Mm0C78fjw^@4TzpHPz?ScU3Ti*SDRe2v=L zK7L-0f-!v&R|shq(f#Iz#HKHc=z^7=$V~R-3*P-FxJ@573|7SM=5L=Lb=z+`<iOM{ zu%P50oM8bJM6$fz;vT@tk~qgAi)8}4r?(TNuQ&6p|AL0*{#q^T^XlT^-?Q|*0=SwA zDMM6F)u$>zv2Z;F#<V>B0*pxS+eZ^Fd9O&n6NyYrd|6KB|Jgg+r?k~>4=;h{CSjKo zB1Y2e0RqGDUS#l*cON%fJ&tZ?w6o7M_V~eRosRAKv<Vcz3irQ$03iuU00Kn#z%|pU zQ!9QDulZ%&>t4&QLb0SiPwEIOWF2(C<Dhkj^G%Jl<xt_Pp{P!!BGxBc0Y-dr*<5{W zhp(ckpSlitFhCkr-~tVel`HhC?>rc$L{k?_39IAVZ?1Okx!=*oFde?}Yqh?D_FjN6 z$yXmalZ546E??OV`w9phg3=&(d?xuyX)G9W?B=w>3R(qX@R!7!?)=)4^C$w=(Wuw` zNGq(8?UL_temNY2WjJHy5DjoHbz+q&G)+GkS5^Vh%Lt3l{@?A23)Rhtqcg*44M#+T zmBR1&>R<xZ{t2Negq?Y2seC066ERXH$Rrr)xX`Y{F*kCP`$i)y=4Nn{kRz=!Bm-~8 z7XC!?)jwA-Am;JtB&;XT<*)!h3RXwPGS+8=t_Q|?fma^B(x~zR2B}ii^%BDBb+}gv zSS_^~5$n0}tI>qjg7@}XuzH?9?*2Cmroe`r!czH)o#HD4#`-oA7H6?r>^gXfp`6H! zMp$v{V2QogX;tv1!rF4;k^4pmV2|xwE38vn7W(k=4prVz#v+m^34n_zJ+j<$GEJka z&tM4R2c6Z`<h&j3t(ErybZU`Xm`tqktM&{l2K)C``kL|`LIO<U&go<p&R6yz5EB6d z#=_r@nbFp0i;l9~c9I+IAH2~Kmi2B>dRO3lTVZW^y!7<=DrKD`o99$3tV`Py3@Eq` z0i>tG!}*Ps9Bdb?pDH#{)UOat7oNcoSt`4zue$ri(&`(RATVwIf*5f$s<3jpKSeWq zwJU&W<el82z9Pvm=viv`fdOINC5E$=*)#h<SXxHHa%&UTf%S%2x3IPx)qBX+;ES@b zL>N-K9L27uOV=YTlCgLiJ-sd&Ov~TwB8_PJ7L4#jq0fs6t5p2GNtht4XW!(h4Wh%* zFe3~7=V!x=iu=F7Ji^Y<;=WS<j2GP&E&LHD2H?K1w7zoN?Qs~u<lQNiun6JxVouz- zLBiVdWhkubsVuC5?X)g^C`+ntBx9wK_<F$xDIe;t(lnhsH&k|`Dhmm#Rg^p2R~@k; z6MYp4RKWzAKN}|aYPSpK!8sS3Jena#Piclb`-#cIVl0xdl(ura?d0(F1-GCQ7E4-# z!>}m(D#*fG+4AUlEmL(|N?{cwNlE*13}&ozM2{9qv_XbHrxBetP|Au?bZ(J=)xK}z z6$?v_SZ%!+)e#*(V_*t=d*u(B&*u6HaB!htZb3e{1EW7ZLW6fCtW?6TU&FE=PZO3f z42zPltYKI$Tdr-MPtc<z3#)!A2}`PC8SZW<Av!i{O&If2E{SOL3FhV+RTdCd^u9<8 zfmM_9MRddzi#Q@NFo~7-x>rB$wvWI}xJ9a1f|Rcofl$F@zA<CM(i%%4tPrCX7CAcd zw2p|wn%VMv>UkUrt33)ww#&LKo?#VBHWm-_z$ZsdSV@(!;Hg5>>4zhjlOiP=7S@mb z{jOQQ(x2MUG}Bkm{uy0$#r-1><`Q%s828ojQW0k2#T?esM=h&98A2*zapS@YT1h-I z7HRF1Pr=&Ra_TwZUxn2i3B`5^G6gAA8OvCoP_`u*E2rM=Or!J*%*PLkeljSmj_>{l zVV<z64o6d)ui7y%jp$zcXvKF3Z^2|3XWqE4xK(br=SBnJ@ttKDu++#6?l+`LSRqMR z0G!YVHiE6NZ1sV#Buiy&rvS=`bpc9ay_+v%)zi|d`U)!6VT{rhO`~KT=HVzyT@l8F zmA!u<OcWLt9gSA274vsnEet*QUcM5+Od3Bsn|(s41$&+GwfRcENyst><!_0EUH_1f z49k~u!fIjVF>D-LUThwfur57vqLHguN@E?(cTRW<uQU<5(mpb#={d*yMJc3G<a!G3 zGP#-~5^?m2_@jf{I41iFYJ07XKOxkP#R{=+>nqSq@4HK#B@%y>z2$^{A6ABeA%Z)v z7FHNGkS#XP)0nXMOIr>U)LpK}F=L&+o9mX&g?th4i;l72dyz)z0?ffJC1L}@67OqO zNmu6JcSuA6)tclh6NS~;@DoBUOx}55^n7rI#$wrwrTj<YEOZxU3C^C-6_x-a7?rRN z$c+@%7HspJjtQ$^JFEk!t60V}R$WoLdZ6h~pawryXf#h(R;Nh4%rC5q{bI*tU$q@d zB96!{m`wMlf0ZYMehhDb;LH=I=PRwT0Dxt}sc#mGrR<Gk`SP<?SjU7cEOJ~}DXV)E zg|!8L^&F~%rE<%YRK+rsvG^pafNU%j1r7KijZoz~%%VW4>Sj|rM)zX`m<bjg<J6j9 zHh=BaRybw!V-?;4mdvxJ_cLh02f^~UKN6OZMX{5RIZIe9np46!NHBIXt`yea8@r`` z+v|SWQV8oPYb(GwCsGwl&RBEwyk8-C{@!zuuIM@L`w30cCwP|ozETf!`|4gK%oSGD zp(4@+vx)s|tZ)zEExZkJr+02&g;pf1u=mW8NR+*I?13eS2?<VTAeI+oh?Lu_6jt2o zh0SCuEZgm11QraquwAMf(T`lNYZ&9gHAlw!o<?#qYn{>+(BnLbP~~xE6)QcTuyFQ1 z%bP2#YQv$%&x6TS{d+%Fx0oK@OjvnlPG8-yusoc%Y`46(xKrWRi#c}$F~wNNDGn5* z+=4<_Y-mG;wdLI9`J`yR%GnM<1);8D0WZ4dsAHwki>!`1EoCef-)ThC=lqO^LXn?G zSl9Pif-qTF4lNkWCa@>MD!~8VZRFsMz&CS^=w$Qc@{eC!`1sp<i{)E6&azm#n4^RX zB`m6ZHCb4UdsBB3ZaEnfR$CU9wu&VqzMGw~9?(|;BuZ(N#-K;(3el*7VG22lQsllV z9qu1;W(!MnXbFJXh<kz6=vHw;Xg&u{C!X!A(9*t230}+l_m)gN&dBc%?=WFWu&J{| zkD;!P?F=Xp+!;n8EGHR;4P`5=uPs?vuHk4IO%+RPtn`eG#Ur|-^b$>rpie1DBl=Tm z>R_z&Y+*G&e7H8-S5R|kX@J>O_x|Kzd8&Wz`r+*$@=mYGzG68pG&m3p2@I=zgRtc@ zPP3-|tX$57Lgi41BZBtOn6cQ5J1h$;Y|X=FvgM@TiS=Z2jfVG0-cVJs3>&LXp%ak7 zCn)_LCQ#2J^ffnaFxJ=enZhdGUlVH))*DEmvG*4&&%aeCgyu)ApsBt(NM-E3Xmy;5 zYq}f4i87%gmGBY-BlR)Z1yB-lbF#298!N0Wb(g0u2}_i2J}bcmolDQ6>s^|MDd1aF zc?KCGNl!Lb^+y`fm5CvXzoiPZgeBe=v6;Fmbvk0L7Fmz5e3G!1J0T3fTf&C&VUv7? znRuq$i&mKor?Zt=zDX#<o+UW>?STdR_*LtS`#=^}$V$S7vc=`Om4tO7bz!NiSYN<! z#=1u62PjF>^k<mJRT`mWZjPx96MfY(Enjs40daU6XDyF}AntWG|AbIW&>6%g_zI^| zeOcMdsYz9RBCbhT@ju4DSKgi<FJc`N3SoI+W7!JpawIHX5|*}#Md%ufhsjja=$Zfp zM1?LsPrK(#qlxE*7Zi0gO;|7clqntVxYcSmYQCPQd_JGp?KT~bH8f&D>!*JeCxjh% zTezv)DDWb_VwiBbZ>w*aJC1;fgc3nw3`p5i>h(MV9_w?JgvH)iIoMdXRrgCMy$b8X zX1fIy@&X;h87qsZ@lQ7q{Qy%qFCdhD1U>jHm7F51&IdC_U_}D~zhh@-$Kh+Y+pi|A zN3_BM^Z9G9v9$AccmD%#P0)EWC0`luzq-2{Ogjz<2QU@Zo*?>2?-t+^XJHs4C2h@- zF6Rt|m9lQGu(sqpm;6vzU*wB~+FmRkjApDHLKw!lo?$FFPa~AQ03EI=`ujv-Rg3qx ztDGpqSF26GztMA5#ODjdVjcN2ZLP3GFrCg`gNLPHr4z!pgd;<EMfr+ly@P0#DRbP+ zuft~+c6hUp7yw~Q2F77R?vPSgWNIWV!Afqdu(q6gY_~_Fgmnt~JYBxK1}({V(>h2o zh1BkOpy{jWswmJ1UF&F*xTS6<3G3N^-(H!oa5NgNMRs~b{B03q3}bYCYF{}VZP?(} zQTc?h1#eG~yqlP>3@lP+?(Q;Y7Q5Z+O%X5;X9-Nm!UBL}yBAb2q|!@&yMrTP{k_2@ ztSvd0r|>E)d}zzU1WxpKKNot&;-{Pwra@yY6eVC9pOZ9|PHJEDnHo-Q&?~rS`4#Aj z=lK`Ezcz4H#NTW-K@Y#mS51G!;cuERtUqBH{^#Rv6xM*(ssGr=-jJk#VIEi<_nz79 zmg7`7409s9w~tH(M4x!V&T5AYx)nnr;sarE)(|jxs{otI7NX$!#1DkUd!#Nb{VJBx zjCFz1>KCjQY1Ek|jtW9wA3)6um96UvEB2wdbiArJn^9k65Ul)ue~#w~(1jNrK4r%8 zb%BWW{vm2|d=Y;JmOUZFum&*cJkU>G<Xlo<!zr?7t8d;QgJFKk@9$u239FFMiDsO# z87nndL?KvjfOBtl!rE5d56@qP<+9a5gFJeam}D#-^l4?$HK^#&bP{I3U(*OB)vhZQ zsUOfo>#P0dGQz^R({9&x`b65%==8AEiR_47F(Q?(y3ivhIvh1~jrF<F=qxo<rcs5p zAUJOby{$TP_=;eI-cWzKvG;%hV|XoLAP6~QF&TRtw1nN{-!O#fcVZFFp0F5lvlG@< zShmN3uug2nBY??OtVb}Ku_`EuK}D%&EDSR^x=JIukb^Nqiq;WUrzp>G2cyJdF~85( zS5?FBZ&j->gKBNC-MQ{>_<fFATl)Wjnj_LSd9HhGnU>N2YGPOmOkQWWJ2yLDaopW; zFIw5l0?UG7yq3E$VTBWA3|fdAcSd^kP+wU2zObx$7B-n}5$j@bm+;i~1ypE8j~c6E z#b~7cno^psz)bK7g{TKmf?umxnw=B3i|w3<wcG8Us(#<u5d(oPNX+onNK)Nj0g%D{ zN>+43FXs^d`mGJ?LU5*ZeC36y2m;x!TE*iWECQFY!~qn-DknnvI?cF4gj!g_W?#(N za_PD43+w36_Gwz^dFQ$SqZtdKbKQwDBFqHmvJ{ohVUQrMi&PAB3hqXQ)$Mj)bJb3* z)_7^PU{30_9YuFR&DQ}L+%>n7)!vIPv3BBP2i66fSLYS(cv`+<xL_t@w`W2@hJ^)* zTgohe@>-64g82lubW-Sb=W$P1LC9N=VWZg!%heaw<3C?Ng9hya9W8}P#v%$Rt=9xf zr%NygKPnVexdxdNDytIK)qSx;7!g)f6#cJF3$;Mt#prCANJn`OT8?E>C97lJzy=>I zNbBQoO;{iQ>lEhp6(<PCBxxs8DFT+@&f*=5;zGiUK_9QwjKz{9CP*s_n}0~ST~62+ z)|Y=yVHzd5ilsFc((fS6A-!IBT$$5YM1iI#MORjdqCR6nLGA;Uo7Y#ZPOMg|?MM2# zsut^Xj=&&IpF`xe!jcKpe)-xMOrf>+8!X7~?w?1nJ`Tt{J5T+JVNxNIBr~BqhJob> zzaJA8E+_6lMy<~jAqy*SW#FdwXM@@D<nh>Cz@JEMqeiM&va$3&*U6$Q&>>0FC76d& zlA`EOk_6gR8bI0MzTccnSJgn^HnOw-`%c6!icwgIm}*~Y&7qA`=2fz){@)fpA^Z)) z8ev0D;UFalse>uLVp3kRM@SG>APXFPA5;p9OJq2hM9@9#&|=*r5XV-Q%Ww9@oGm$< z$8!lsHd_v~sMkPGHkNMXJ&CR`Xu)Z^h+!^1_mow9k!Ft;qjJRJv-gErzG}5v?OL%{ zu-f<eYTa%Z1FXhZ(A1eLgS)<8jzHC%h4q0&hss1TtP{bRcaqK?Aun*GQ_x1MP$)x^ znY_TUt5Kx=J);zskO;v<n9TpPcdtKbWPcpTKcb#-Q0Yi<5GDa|N>Nx^Xf5|zqm;V3 zw&J?|t!>h#Z8mKma+8~O{`KFPsth7?!=ciIS9Z7A4KW)ZymRI|=Wtvi4~oyYg4mpv zg3~S!#@-}Y(#nhkV7Mt3kR5yy`a8$uF~GWVs!&&{V7JFku8tIX^W;iaXW*We*Hvq7 zw|mXqYDI86{;4XiIiL6Art?at<3ES>R_i+$#<PVT+;OkESTWPzt9bM=OJ#ylScbQ~ zBmn7pX*-5G56d1y7I%pk!8&weoK0-W!HTVX7N9LZt4y(s?rz|i6AZF%qFA+qoISTy zhHS&T)pKcToAg3gxm-&H0&Xhj_m`B@%fq7s_eg)Rsu*P5Kksiz;}R@-G5rbd(y`;3 zo_UtU^FDcMwfQvcu{05q?WNQctf+01Kpii-o_el=m6_&)<2`eq`1+-=va<ALZ)F$2 z&{HfR#>}S5=(oirFwhr{Ie<|lX1Ci*po-pH^5o!ql8~a^{)1cxS!8{^vgVfMTCIxG zF^hYJAM<_;L|UEB2u>HCo;G1x^ZvqH+@;5k9;|~E2`+e|A(j$-J_3uy7w39+HTeFB zL(`_~5LDC^k}udF=Y8%I!ck$5J`vLQgex-}Spiy<3v^WXW2FT2IZ?YU2M5YIXajZ& zcKdcwLVL@e%6YxHY&!RTpY%z$*IOw!<@Nj58;vF`A`R#jPS*Sq29g?d<NK-rYXz3g zr>Fhs{!STpNMaqm=)d^@@L^G8WzjfBAhh_H0Lqnwb8%>jvTPgxA9BT?I>N584c0{R zU~lEZ%uh>SYS6Sby8(4EhPkoEIxjH$Y9Ht9H5evE=prlC5Vq`IuU-DzTOz$8-@gak zUN2o&rCO_kAizS6skJloBbBuZR5V*1dM?`Pz3%3J;M;{$+$o>qI@Xbi$9*hyD262o zBk|l8h7zpkA0mM^pG%bFV6nbUHaI=5!I}^XD_3SNZPawGteE|xQ>-?wi>U@H&2cf9 zkgmwdvS0G%$R$bI&9(yW_wT*l>cK%nfYsX7sX%kkW8w}}t#_>6lhs%bNHFJb`PzxQ z<jM30>q00V=P@$R7sF7B_0;Ck|KD`^!eYopO;b<BD8bm7NETMQX0GgM7K>zO3rTZp ztTT@LhQUr~u?S44ZRPA;UU@#1E=E#0JB?K?m5L<W=cBoveyZBWpkP&?uH2gM1R}6b zd$}%|ena>ScPh^I<%<4&C?4|!BjkK;iz~qj|M3#Kd@h!C{WN_c6P7SuCWMU@#f-sX zechYgh29!V=RKj~TY}5NluA#qa<NLvE3d0^rGrM9$S?v)+N&~52MbuQcGgz!a<4mm zLzu>$ir-vcIYK-}>#^;5?-kI01PSy6S=XiMD<a0uWHW<eMzNRIn_}q|D~Vp)Oaf}s z98-cB*`8o|f3B<6Yqd7Hf)NNzt+fXSX|2`P*`40$R3orRvTE|Kuk!tcA283#-(#4) z`AF#SV6>t(AG*QfpU;J%$H%&^Om~SA#>hl*X<)FZEHosSW)EO$jg@COsA;FTL=7fv z_pY$c4g_)yMj)~_Rl#7@HN6_WUF-NOZR>_uFrobDek%#{to&7m9XEqD@)g#<i@x6F zR>*0%SJbpZ<S{lTntLm1!CGoSouo{$49>Cg9CrjY(l%qNShbuItQ6_@YkP(2d;~h0 zmHE!8Ma6ny?t9(;Ubrt{2v+_wqy4#}|2W2Ik>H|;E6z>ZW9Z;nmtwj{7-M51zoHT> z>a)%i>l5^fRYH$_E(VQaaa<n8^#m(B`ds0M(yO6@1yt5Lr>n5SnW<oXxPQNdyA9Uk zpyLi^SkAfs;=QMIpu-t*sRS!XFfJwv8o}Bt>rJurip8a`1&d2Vm5^X^FesUi^^CCW zmE@>{)$~sVpeiu`1Nzd{PN&ku?Ue(|4H&jF>>EOBew$8D=+NQF+?Zj}XoZ{@CFjfk z&?VYJ&=F_*f;Emytcg99VChe>gr(U}=8BbI(olECa77q$mb;1-%~h_Fd!Jh$aj+^= zT4So_d<6!SEA>u2g4=s!B3RGvpQZua%?v9V4LT@a5b+zu%7j=)5F^Cf{v){LF|Y}1 z)1?}$5W#qu_%fpvtS!C0Sc0iyCAb7Ml#HB%u6;|T?DpK}-Sj~&M~hXdk$lDbJ{1{d zuU4nlR1=|mUxU6#wO$XDaa%3phjZEs3qLS4LNGL*7eh2m?+!g4P?`P(R#?75H5A6k zcott0W#qo87c5>iSd<gvVIsSt9W31`mYHJZISyL(8Aj&^ek<9jTvmWAdGNkMWcifW zo63)Jebs;!!2(w4By0WlTSs>!!*2)!0`5RG%3iLmlv{IpWx@c$@+m?dBNAE^2`=!W z&8NR-R6SV#i{f`S36?U&5)2fp*t4<WNV`}Z^PNBiY44{vyZ!T4_e)|(<b8}>_?~-j zFA0RQetLX1HPwJc!9wJ;Uaz!o8?5EF(KCdP%J|iIrx=o(bQtzP;oNj6*f3<CAj>{= zVl<vBPk~O`e@=73nx=l^vHK)g=BHRnv6!^ZdqTxFXHR0F^!JpVN*zd0l)N!=Ns7@? z*1^Ckk*;A+5LN|fDOde4OlbK#^~SFW)?fD*O8CX%#}3C6M@9@vr2i&Wk#$@U!?+}W zeY<Z|CkZ{uWfV_My(6Tif5&ISNw6en%Fb>On0PAOXSfq+NpsAgq)ExFJZJyB-@rA^ zT$XgzQgoD+Cg^k9alAxN<TRmeb$%Vj{qWc8ttN&i?JSpJ#G_w)hEQ^fujKVpDDD|> z{P`I1C`-lTP{@-kF%IjI=eDaX68U;U9dVatu;Ta)OoFwvm)hOkh5j|rdZVdyce7Oy zri&H%{y9f$wVh9*4@sp2q9~@`ds7khU||UDfP8{bH&`v0&|Y1uSKnfIZ<kxpC%w>k zLufrdeEjao6Nl*Id4d}<4xa>or*IANY_e?B39B93x;IV)ZF5fO2y6C=#&#@Bl(d5- z|FyJ5)zqd~1py}3SP5>MK+_4wWYKGP`{GeBf&o&wZ=}~*?!CKYWw0dLt0pWC7SIUL zMb>Q&=j@n!LpXXK-{F%dPcp}G)vfM4RE%bl_1G3fH&`MM9r0<+U_HiIm=N|f9|^M? zg#u01($e1E-shuYF)j3813kM7efzXn%6md>MaF)HOSN>CW9(caR#VAh%3dVblq+6$ zZZ|n7SQy5Ssi_LA4;G}Bzg}I(kRr>0vVk{*3jzER{6E1At<|B=$*VQVk%<zGxP;h@ z57vrygXMYo@?YqYM9n4E?+~oX#?hq+sN&JlQDN!AY$2OH>YHK##@AQ^!^JKXp`x7X zUTt_(U>LhSmWHa7w@CUFTW)Xa3_S?J(7p0cwG4f%HN=mucPi%?&QARddS3jZH-zyw z@{{1<aTw}EM+jOZ>nB;!?$KwD?K$-Mw1SoKU_49|HG-wINXX~&M;jX(OEUUrA)QX2 zC{rw>#S&5s$1n^hOO({l=+I)Fqzm+;i9$LLm<kqYmU3=ye+tO3CkTy|=yWXtvzn`& zx_`*~5qFkf7<faticxEO#CH!LK0FLMd1&xCGEQicJWs8iWH~n%ALByECPJU6wZIBt zOiTy`^<bsZuawQkF4tO1v$1UUE0iy7&@I-<!FD%SGPP9}*=7<)cKMSf0&NBF3AsTi zS8{H5sf=49X`{Wu>3jp`tp_@5tsyU>X#BD_goHrFhc~YuK74W*^gx?4!^WY<6P#md z)~rIeUg1LgrOgR_@i~`^RVkKZT!S?^oO5l0C18;A^w+Niy2_fR_BQrrXFuihZ9~Ok ze&Q6n7(mF!<WD8CUu)2_<!zFifJlyxvhuhcQu)(=KAK=DldMkl4CdvRt7V-xgbSzV zu)^T^pX59~d`D~b?%2aa2gx`@9{Qpg_NhoL50=jslwd$eeTn7pU~Eims03>%qEotT zc5C)hVSj&r7upJ!z3MGi5&hEp2}Tx!5jF1#834d)!0o-|Ezhfe`qKu7UxE1uhH^gS zBx^xuCsuP|;VniMEYI<)ht#W}$KdxP6Bt26mi5J93FqR|?l-$fVT4EhkuW4-Y)t%^ z9UQD(=pyN2`jfoQx~NtnaZ;<*FxWbCfx9M+UbWgbCx2r1$ly0O)a)rirC9BT+wBgN zZ*$`L&jz7jKx953K{4`4mQ>f?>)zg32w*h9lG<;6){3sJ2n--mhvS&Q5XrMS$NtO1 z0^(w*J92lz2wqfOV8t;;CenKYg0=Js2E}F*wJbGzfr))NI4GlEa+|rr^@tI49qh|b zjh|yl07nc{G!!f^$Up$jTW)vm3_~hSO-0HEdxdgmO~R1Y1NFMu+)1tFb)7eaO<1M( zm+;Tu?;bv&YpXX-7{ogqA`El-*f~okSx>JH<^*ja7!zb&iZR~PFp>UzGgt)}mEV{x zf+`k^TO7y8&0-3P?d|W$q=2p>GcZ_84HuFh<)U$kVj7fOEN<6Gu<Rgefb+_GcVJz> z5Qu-O3ZuP3bKWmuSW>HAKQ$TFAIqoOZwSv|Il8ub_JG#v^@o38nB;Sq+Y=DoWHU}; z+0kd-W{blRPe$dLFo-cTAsub>221{9FAt+)%3dr<zRYxct8kU3j~_o?W``S;D{325 zem5rn_w2ret`uXJ3<N7jKr~dUZg=$@rU`+mY959)=hq|*@4Q;?teQNW^9bthFFccA zvA_O){ouia*RNjj5=@91@0BviniD0ff+gCXOE7?sZ@O6Dpk5tg{7eX+_GY@lDimhS z6e~H~zZWa{@e>_GUE1E>-bxDU!IFd+M}6M^hF%edDH#hEK-4u#v{)?xCMhR!45_Ut zSAY#W$qM{{am~|H2`b2oh2<KoBuV0{d$d+>KJYNddFTkjBofceJ&)p6;x8|PMSQk@ zVE`X;x!5@VW&4Ze3Sulx2*Ot3r;<Rhq--12N9YtQIp_xpSsJU$N-+wq7ZXd!+1fr4 z(5J}RW5$A|l`No5M_Jx8m{B&_E8uLtg<Dx)tNR-!qPMf~0xJGmxZfbK&W8_=9z3}B z`qe)?OgnT8vsiM9bL?X$ZXviBB%nODmtkY$D>ldjAffBQIy}a2U?Mw1eS$&XHZ)EY z7QcV|m|%Kw{Zb!^>NhuNYkG6IL<RySt^3{X);Wx8Oii7c?9F@tw-ag6MV4T}UUy>M z8$wEYCa<mTz4@CAc}4wj-3hborsq~ipC5yg#Kq^(7j(HoQOLrZE*HyQ28+!^CHxL1 z@_X`&!n~O&mKGryQ_WQ(mTY6NkBt2Qnn=lh4z*+{d$il@bd(i{7~dQ<)e_7GtA*RD zRO|i<3|dtU*0Y62d06A05BDD2yZ8EavyGuRl^qRc#pTn5{P4lLJeV`L7=#`VonDE2 z_iDlr&&NYD56|PbF<D|QEzNA1m}2RaMLk#_p{kZ*Qb}k!@NTID3)i*WZuhG3UcsbQ z3xb7awO%*8*>&NxJUB9^%j>X0`^BpV^4jVRhURl*Ff@^!3q>&;XXqkSQJYPIHr}^6 z$A*=qmdk_R&qQ)>=JVdnRvU(pBRa*>36{ceupkudI>kD(XVIk<Eb{;M&h9C3Y<=4g zc_oA|h1g)lOz|o5wM7&a6vh6jsMTt>cH5SE&{OS{HM>uy3J@T)kbnJMVZ;C=AtV8| zm}~d0>2}winWL-j+-t4pY4{cvyfGREa;LyoQ1$w@Ks8&{a=Cm{2RT$+HL(-II;e&E zexKm7)h1a0<*d%$Q=l9&WhN9hSrqo@2872R#|O3T1o67NCysm-WZ?~>^Dy%%Ju`Ex zyv0(Vun=2o7HJbcTZ({?HU28fU44I+aX_f#ih?hqNv?@;cd}#&$0aPR8=H#;m3-M> znnUo}N@>hdxp<I7UATfKi=QY%J`TEs72hKWf7el=2i_t&)tQ;}(agq^MlIHgXy-01 zI(p5NE`T@}mZHerYylb!YTvJFgBEdFqqqWL@nhXpH(8}33?}OG37-%~Syhtwe*YQC zDsl3?04ljuzl}b5Y0fKYvdEUO@KyVsTiS>Ou}60L>Vw%0ZxNls#*Fh+evL&N2Q1KW zhzRQdq}jDtiju<Gfgz|BBMTA9!7~AaAqp@-VL_o%E+58V5a+In;B5y6l*4}6pPNTt zg8SE?o-lVps2Y!1$(<~J>*=$bum`384GD9HQ~liepda2QI?w3&^VQ6!pR!vl>FMrk zA`xqlZ|D_M_83I@ii9;3)skVsCmOQYXRE?bJH}cCjVQ=!vSQ_m&<WxE9Vn!5{+Y{G zpHI$7&;V+7*3W`^s6B#M9X9sl?BQ0<!YHZsDo+qeH?ObU2jYX7gtv>{VsVFsRhcc8 zLpow*UUk(atOptfv0^c0K#W-S0EQ$``Xj=`#BQt`7*Isr%CNwpS(8-&Np>s!D{*QS z*9|BFjbNB>+3E*qgh#8XcWzG}8@9<xVPtD!Ls0T=JK>=^<JO1ZTMk${7c<VUV4OLU z-C`ZFAkNl~;1}Tv4FkC{nPMPDIz6-}3ckpK*T?&y;cLMZ02qU}0g5O@A_dTnqIY1E z6>t@M9X4+}EGV(nx5EVYC3t>Lf>!uv%@k-vI7bZGWIg6d0CvwF1~L38BJb}Wk(>*C z$dT|?(b?KSo%`{pnH_mXpiMGcEJqh>f5Jf0maN48_ESlMG5k@A^1p9khy-|FO;A{T zlf}fO@45$|8=uVuLsR><Igi-f$3a8fq1iZS2EK~Q@g&HGdc?@qzGq5Ifu0XUcOUQn zkn?YU@W9(e=gc|t6FxefPap?;K*WORL!Yp+D-MV0;B=4?s}{?dxUhbK0;&~*!B=g) z;rpYF!C>br_xt+1dFEtexVEQnHc1-cxA-wZ!g#(lGyK(_k)?K@~oXf{NGhJ^Pp zLVhLYv3uOenRYS%Bng7(KEb>;|37N=|2~lLcF|!sP>WUPa+cf{>taBE-s7ta8n#xr zlywTyoIY5tM1^$<N}!pD!4Q3_8vb|%{Z_fK=!%sEZHf6%lU0-0q3`O7gHJBop@M8R zxB115gT_$Y-c(ItgQ&?0gFO6L9Kek|vLFO`OAt8<?<urG=)ae5T39-Np%$z4Wk}0y zv1pKF$I-bq=L|URvRuj<5R;CPu{0GHqFFQ;N|A118A^(cRka2{YXW7dCaYUmI65KB zfNa?Pf4>C3)j)fw?ODI}63h{V$1U?EVZ42{p&v3u5UW&g0l!UB|7X62w~P+GF>~|; zU!BfVxh>WyNQ35zuC;`9aImx0{@EG#qd%o%+=azb)l67?`_4Iv7nTA2dIp6=trgIm z0=Lq>DZ1;cQ#Q{oR}<t>Xr6PnN*sQxgU0YDgxcd?C9n`BYdX8#4<KB*<DMKw#QUBt zn*D&J#ll-hk61qecAUmzwb$Kwp3eTfa5%QQOox78T3Z1LcGH$L4Fas84ofi&&Q^vl zVR@Ac%Lm$14|vOwDhN_@9d`U7VPgs)hgcxd%2qc87!j+pvtbwo$vqUZU?5@Qkpk+G zpoCmXV8LYnxCRg0n$2-|^XL(41EBHA`4Qx>>oENVa#(Yu;T1k*o$X4USqdAgXo-Ph zqJMN^;PBQ|2}^sLm2z45L-pKN={zB<uyQVko^ZBGB)%13WVr7oP6*XES*fI)mxQe6 zAAx7gw<#<iWcz&;YJC;D;q9YGtP6l+r*jA7z>gl4=C1!m4t~Zh_*%gwX3bdE1dK&n zR9x8f_6y6vD4xsC>qGk{>q>AD#XPk6W|Og)zPg|Iw`H%x2yutjM_67{+Zf>|2Mdct zDNEq#AeJJbmrKH&gz$$CZ$Dt^;Gbr=P4qvVPFdZ~6W?M<k`a1B_;j)6FgebiL^D>} zk``DWX0g!fgk{i1SinT8Fd7;RYO?xOP9NF|ueNk;f+V#Xm#u6G-#H1R<@@?b9}tsq zGnSHGiJ1H+1!4Ombc0hV4C}va!LAayBtYszYH9+O9<d4=&W$Y%S}a~zYaj%-_1SSH zCZLSPa;3Sj5LyY#8h{bOa@~6rdI`K*YSUK9fCM-Dwt1wh%>WCdhPt2iz(|P)G0X$v z;5mC7LVcq~gIIstjv&qEAVAVQEdfiv?*71X^ZcAg8n#%+4v|mCr$0?5)7q7A%A$8H z*-XE%vJ)2;Kd)g_u+5UI9PQ1Qo9(;q0h`1LVWGB}upwXh&KocWg6l!x8CjDhF^m*{ z{149V{fF$?(26Wa3H`l@6v;JMW)`LZov%(VVnGp|6l&LE?XEelK$u@2k+QNGv3Jnf zJ1rAdvHz1Waxp1kNz*8nUA+qyt2SRt?S+KRM~h~wd1R~2%^Hk{)%9^Kb|-Tfwn~b> zBxG0Z-5-B(0!#S?Z$J=xWGi5W+%OI3eERp^=#JBQEGuHkYO&57XCOu<jjF7JCt<@_ z92w1oRk-pQ`h^8b$wW$9FhT+)m+KIRPAax@K=^F)br7IlJ8WgEn{yZ!_%`y@7$7+V zi7beAKVnqM9tR#WgbB6n2+B-c1K{xw<}geJI;e1u0%F7Ypk0f#f`lc`DYwjUMKEP$ zd*4A9lnN^vjUYdDeG+ocVn8uvYi+bLV9GA03LPX`cio#d+m&!{g*e=-<1jYZ;5vUf zVDwE^5C;K*_C2a=yBC?lFb^qm>)itYEDBgK9q7cIGg<myaec+*92A=VQkt-MPS;Gr zDXVI+JVPgJ(Nch+VXMA~Arh%Fh8|%>8lV)`J7Qr0TSXyjp9T)R$s`gsSLN_9R<Ugg zXDi$M%{Le;!S(Sy$HP&R)jN#T&Ec`fJ@yU(c^<L+EeJtw6Tz2RqZCXBI&6Bz`3n$N z=%Y|xi&c=3uy(dU3jA0kW&P?sD*R>nIJASSCBq*P-xCeMaGv5Z6md`r8$rSvF%8D` zZ<AH`xnAi#A!OUxie_QFkh8NSj1Mx^-DHusxjX{16BzdT<1lxo$bulN1QBj|Yl;Gv zPSg4C*80YV^N7``#mYELcQ62MU$o`mNx)cNyI&a|4Cj>^6EQ3-6q~?-`?`+_i!kwo zB~8@Z8p^=9Iyi(^*m|**trFwRR(xPt54vHDka3J3MvD9QFngQ!`x`ut<P`*A;vb0Q z%XY6YObt3|=cipjJRxH}Y1Cq^IsQA?09?v?*va%7D{Hx8I|Y^o`P8CbZrN9i4}pxq z@aijHM9s3Us?`Uhr*Mc2b?EBk^^$w+ri5hWN^I8aFacKA?_ta&_u6l5Zu9moh}+hy z8@_E9D%@8A;m%FfGD4k<b7rUAzsu;SwoIlAb;9EL6DiA5-0dCEV4;->E6R8c2JdsV z=k%?mEJMUsg{ajKRUxbjjDu*x#lst`P&{-YTUGXBFd5>r>$fm=JQ%ij4Ui=4y?976 zZ^z;!h|s!$h47nm(-g3D*!I*>ddK-Gqizi}FRWde|Lm;A;^=OccDZ-Z!wZX!mC)|z zN}$kZ*jmGvW@<H@lfl3NGm{q<#Cm;YtDILWHUtwW)L}xfp>;p-jJ3&%Co#Jnvv-5# z@^&IAK7)oJ$d~5b4AX?pv9bO5+37q|vp|Q(;V6PU?yfAT%KEd*SXs*fJ7kB|EczBu zbJYN8IAcZs*M-Hn`i#Z>V)mObL4xb|BuoNw6~iz)FDxF+BOaZS1QBFkns*Nl(}d2E z^V1U`@C&2yD-2}Cv@!T`jsxVfd*HB`(is+BdCKzdpigBatlFIqRaaT20fPxBHdfPH zD!>@n^7RSJWvc{gG)xk5eVv2}5hv_|5R^nNd(jl@Cvp@_6*_nA`7-k6Hqe7xtp7UJ zKt6x3SS*%<3wR~gaUCl?NLckESG4n2E=QKJn8+23f#-66!m_DXrTP;>93}*X5|$vM z(TPeCW*j(3GvR^hLWlmy9Tc`ea~s&fEtYAG)=*f8JFd$*dQDmN9ZR+$Ye;f^x0qd6 zC`B{CqkYEW=QWIheV0JOs=;LOFJI!5YtKYJ3GI0h!A}rz{H1!IzHQGsr=OfF?Z(@A zL=Q|v4%1Ifg@xGVQdaskW$nDagFdiG#JOj#xhnA<QJ=9UFRbYQps?cW>v5PEc_b`h zl49SG#4WU-^3xHpblA+%#?k2$w1btA29SN>eZ}O!2Pn<)3`3IHK`E=<W#K!Phr0m@ ztC2>!@)nx~;2CAcDo#vTwn+=?a`_8P3_m6+tRM)IBDUK*DTt}q_N?>sXa>=~fdv_U zN;3L9{98tg^>ff`!W9^rr}S&e;@?3tmK7m`?naq~#RaCgrN{{eMYCcezWQWN30;Xg zOc0hoA)Ew3kyAp1V0uE9N>R{mu>A1m(P5uw+U&Gjtc_i0!5%puo(8vAN35df&(b_y zWRbG2>VSw^EEiB;Npn9*r!Q#eWQ#$~)uJy3JY&dMUTXu!fUiGc?ZYG?mzPPH9G)SC z<stH9=jG8ikIvl;&khZUQ={`MKXB&j;Ja9+pV}uZ1bc;2R`#Os@2<it3u3WFmUjjF z>v<8qzj@}Bsb$8Rys)18FOJ40>Z|+pAWU9ZcA3H=ABiCUZJ2_$kIu	w+^B7t6@< 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 diff --git a/Resources/Icons/icon.ico b/Resources/Icons/icon.ico deleted file mode 100644 index 41230db92cb8101b8f24cf6f861082c6dfb827e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2462 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 diff --git a/Resources/Icons/icon.png b/Resources/Icons/icon.png deleted file mode 100644 index 52525ef9e99b9d42242dcddc0f5f5a25eaeee901..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2671 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 diff --git a/libKelvinDashboardCommon/DapSettings.cpp b/libKelvinDashboardCommon/DapSettings.cpp index a117ff2..9cbf5b9 100644 --- a/libKelvinDashboardCommon/DapSettings.cpp +++ b/libKelvinDashboardCommon/DapSettings.cpp @@ -30,11 +30,12 @@ void DapSettings::init() } /// Read settings file. +/// @return Virtual json file. QJsonDocument DapSettings::readFile() { qDebug() << "File name " << m_file.fileName(); m_file.open(QIODevice::ReadOnly | QIODevice::Text); - QString textFile = m_file.readAll(); + QString textFile = decrypt(m_file.readAll()); m_file.close(); return QJsonDocument::fromJson(textFile.toUtf8()); } @@ -52,12 +53,22 @@ bool DapSettings::writeFile(const QJsonDocument &json) else { m_file.open(QIODevice::WriteOnly); - m_file.write(json.toJson()); + m_file.write(encrypt(json.toJson())); m_file.close(); return true; } } +QByteArray DapSettings::encrypt(const QByteArray &byteArray) const +{ + return byteArray; +} + +QByteArray DapSettings::decrypt(const QByteArray &byteArray) const +{ + return byteArray; +} + /// Get an instance of a class. /// @return Instance of a class. DapSettings &DapSettings::getInstance() diff --git a/libKelvinDashboardCommon/DapSettings.h b/libKelvinDashboardCommon/DapSettings.h index 26a4cc7..d4c2343 100644 --- a/libKelvinDashboardCommon/DapSettings.h +++ b/libKelvinDashboardCommon/DapSettings.h @@ -26,6 +26,7 @@ class DapSettings : public QObject { Q_OBJECT +protected: /// Standart constructor. explicit DapSettings(QObject *parent = nullptr); /// Overloaded constructor. @@ -33,7 +34,6 @@ class DapSettings : public QObject /// @param parent Parent. explicit DapSettings(const QString &fileName, QObject *parent = nullptr); -protected: /// Settings file. QFile m_file; /// Settings file name. @@ -42,13 +42,20 @@ protected: /// Initialize the components. virtual void init(); /// Read settings file. + /// @return Virtual json file. virtual QJsonDocument readFile(); /// Write settings to file. /// @param json Virtual json file. /// @return Returns true if the recording was successful, false if the recording failed. virtual bool writeFile(const QJsonDocument& json); + + public: + virtual QByteArray encrypt(const QByteArray &byteArray) const; + + virtual QByteArray decrypt(const QByteArray &byteArray) const; + /// Removed as part of the implementation of the pattern sington. DapSettings(const DapSettings&) = delete; DapSettings& operator= (const DapSettings &) = delete; diff --git a/libKelvinDashboardCommon/DapSettingsCipher.cpp b/libKelvinDashboardCommon/DapSettingsCipher.cpp index e0e84c4..c0129be 100644 --- a/libKelvinDashboardCommon/DapSettingsCipher.cpp +++ b/libKelvinDashboardCommon/DapSettingsCipher.cpp @@ -1,6 +1,23 @@ #include "DapSettingsCipher.h" -DapSettingsCipher::DapSettingsCipher() +DapSettingsCipher::DapSettingsCipher(const DapSettings& settings) + : DapSettings(), m_settings(settings) { - + setFileName(settings.getFileName()); +} + +QByteArray DapSettingsCipher::encrypt(const QByteArray &byteArray) const +{ + return m_settings.encrypt(byteArray); +} + +QByteArray DapSettingsCipher::decrypt(const QByteArray &byteArray) const +{ + return m_settings.decrypt(byteArray); +} + +DapSettingsCipher &DapSettingsCipher::getInstance(const DapSettings& settings) +{ + static DapSettingsCipher instance(settings); + return instance; } diff --git a/libKelvinDashboardCommon/DapSettingsCipher.h b/libKelvinDashboardCommon/DapSettingsCipher.h index bb3faa9..b0d9beb 100644 --- a/libKelvinDashboardCommon/DapSettingsCipher.h +++ b/libKelvinDashboardCommon/DapSettingsCipher.h @@ -3,10 +3,30 @@ #include <QObject> +#include "DapSettings.h" + class DapSettingsCipher : public DapSettings { + Q_OBJECT + +protected: + + const DapSettings &m_settings; + + DapSettingsCipher(const DapSettings& settings); + public: - DapSettingsCipher(); + virtual QByteArray encrypt(const QByteArray &byteArray) const override; + + virtual QByteArray decrypt(const QByteArray &byteArray) const override; + + /// Removed as part of the implementation of the pattern sington. + DapSettingsCipher(const DapSettingsCipher&) = delete; + DapSettingsCipher& operator= (const DapSettingsCipher &) = delete; + + /// Get an instance of a class. + /// @return Instance of a class. + Q_INVOKABLE static DapSettingsCipher &getInstance(const DapSettings& settings); }; -#endif // DAPSETTINGSCIPHER_H \ No newline at end of file +#endif // DAPSETTINGSCIPHER_H diff --git a/libKelvinDashboardCommon/libKelvinDashboardCommon.pri b/libKelvinDashboardCommon/libKelvinDashboardCommon.pri index babffc9..7c81a62 100644 --- a/libKelvinDashboardCommon/libKelvinDashboardCommon.pri +++ b/libKelvinDashboardCommon/libKelvinDashboardCommon.pri @@ -9,14 +9,20 @@ # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 +QT += quick quickwidgets + SOURCES +=\ $$PWD/DapCommand.cpp \ $$PWD/DapLocalServer.cpp \ $$PWD/DapLocalClient.cpp \ - $$PWD/DapHalper.cpp + $$PWD/DapHalper.cpp \ + $$PWD/DapSettings.cpp \ + $$PWD/DapSettingsCipher.cpp HEADERS +=\ $$PWD/DapCommand.h \ $$PWD/DapLocalServer.h \ $$PWD/DapLocalClient.h \ - $$PWD/DapHalper.h + $$PWD/DapHalper.h \ + $$PWD/DapSettings.h \ + $$PWD/DapSettingsCipher.h -- GitLab