From bcc298381541344739a7eb393603276f55b0582c Mon Sep 17 00:00:00 2001 From: alby128 Date: Tue, 3 Oct 2017 00:18:05 +0200 Subject: [PATCH 01/85] Ported GUI code to Qt.py --- .travis.yml | 8 +- buildPy2app.py | 4 +- buildPy2exe.py | 2 +- syncplay/ui/ConfigurationGetter.py | 18 +- syncplay/ui/GuiConfiguration.py | 9 +- syncplay/ui/gui.py | 6 +- syncplay/vendor/Qt.py | 1620 ++++++++++++++++++++++++++++ syncplay/vendor/qt5reactor.py | 2 +- 8 files changed, 1647 insertions(+), 22 deletions(-) create mode 100755 syncplay/vendor/Qt.py diff --git a/.travis.yml b/.travis.yml index d898521..9c80676 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ osx_image: xcode7.3 branches: only: - - pyside2 + - qtpy-pyside2 script: - python buildPy2app.py py2app @@ -29,8 +29,8 @@ before_install: install: - pip install twisted appnope pyobjc -- git clone -b pyside2 https://github.com/alby128/syncplay.git syncplay_PySide2 -- cd syncplay_PySide2 +- git clone -b qtpy-pyside2 https://github.com/alby128/syncplay.git syncplay-qtpy-PySide2 +- cd syncplay-qtpy-PySide2 - git checkout pyside2 before_deploy: @@ -49,4 +49,4 @@ deploy: region: eu-central-1 local_dir: dist_dmg on: - branch: pyside2 \ No newline at end of file + branch: qtpy-pyside2 \ No newline at end of file diff --git a/buildPy2app.py b/buildPy2app.py index 823d606..4ed17d9 100644 --- a/buildPy2app.py +++ b/buildPy2app.py @@ -15,7 +15,9 @@ DATA_FILES = [ ] OPTIONS = { 'iconfile':'resources/icon.icns', - 'qt_plugins': ['platforms/libqcocoa.dylib', 'platforms/libqminimal.dylib','platforms/libqoffscreen.dylib'], + 'includes': {'PySide2.QtCore', 'PySide2.QtUiTools', 'PySide2.QtGui','PySide2.QtWidgets'}, + 'excludes': {'PySide', 'PySide.QtCore', 'PySide.QtUiTools', 'PySide.QtGui'}, + 'qt_plugins': ['platforms/libqcocoa.dylib', 'platforms/libqminimal.dylib','platforms/libqoffscreen.dylib'], 'plist': { 'CFBundleName':'Syncplay', 'CFBundleShortVersionString':syncplay.version, diff --git a/buildPy2exe.py b/buildPy2exe.py index 98b1600..fd4d3a0 100755 --- a/buildPy2exe.py +++ b/buildPy2exe.py @@ -698,5 +698,5 @@ info = dict( cmdclass = {"py2exe": build_installer}, ) -sys.argv.extend(['py2exe', '-p win32com ', '-i twisted.web.resource']) +sys.argv.extend(['py2exe', '-p win32com ', '-i twisted.web.resource', '-p PySide2.QtGui', '-i PySide2.QtWidgets']) setup(**info) diff --git a/syncplay/ui/ConfigurationGetter.py b/syncplay/ui/ConfigurationGetter.py index db04df6..aeb282d 100755 --- a/syncplay/ui/ConfigurationGetter.py +++ b/syncplay/ui/ConfigurationGetter.py @@ -401,15 +401,15 @@ class ConfigurationGetter(object): self._overrideConfigWithArgs(args) if not self._config['noGui']: try: - from PySide2 import QtWidgets - from PySide2.QtCore import QCoreApplication - from syncplay.vendor import qt5reactor - if QCoreApplication.instance() is None: - self.app = QtWidgets.QApplication(sys.argv) - qt5reactor.install() - if sys.platform.startswith('darwin'): - import appnope - appnope.nope() + from syncplay.vendor.Qt import QtWidgets + from syncplay.vendor.Qt.QtCore import QCoreApplication + from syncplay.vendor import qt5reactor + if QCoreApplication.instance() is None: + self.app = QtWidgets.QApplication(sys.argv) + qt5reactor.install() + if sys.platform.startswith('darwin'): + import appnope + appnope.nope() except ImportError: print getMessage("unable-import-gui-error") self._config['noGui'] = True diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py index 061aa5a..10e1d42 100755 --- a/syncplay/ui/GuiConfiguration.py +++ b/syncplay/ui/GuiConfiguration.py @@ -1,7 +1,8 @@ -from PySide2 import QtCore, QtWidgets, QtGui -from PySide2.QtCore import Qt, QSettings, QCoreApplication, QSize, QPoint, QUrl, QLine, QStandardPaths -from PySide2.QtWidgets import QApplication, QLineEdit, QLabel, QCheckBox, QButtonGroup, QRadioButton, QDoubleSpinBox, QPlainTextEdit -from PySide2.QtGui import QCursor, QIcon, QImage +from syncplay.vendor.Qt import QtCore, QtWidgets, QtGui, __binding__ +from syncplay.vendor.Qt.QtCore import Qt, QSettings, QCoreApplication, QSize, QPoint, QUrl, QLine +from syncplay.vendor.Qt.QtWidgets import QApplication, QLineEdit, QLabel, QCheckBox, QButtonGroup, QRadioButton, QDoubleSpinBox, QPlainTextEdit +from syncplay.vendor.Qt.QtGui import QCursor, QIcon, QImage +from PySide2.QtCore import QStandardPaths from syncplay.players.playerFactory import PlayerFactory from datetime import datetime from syncplay import utils diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index 30f583d..49beef2 100755 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -1,5 +1,7 @@ -from PySide2 import QtWidgets, QtGui -from PySide2.QtCore import Qt, QSettings, QSize, QPoint, QUrl, QLine, QStandardPaths, QDateTime +from syncplay.vendor import Qt +from syncplay.vendor.Qt import QtWidgets, QtGui, __binding__ +from syncplay.vendor.Qt.QtCore import Qt, QSettings, QSize, QPoint, QUrl, QLine, QDateTime +from PySide2.QtCore import QStandardPaths from syncplay import utils, constants, version, release_number from syncplay.messages import getMessage import sys diff --git a/syncplay/vendor/Qt.py b/syncplay/vendor/Qt.py new file mode 100755 index 0000000..5115221 --- /dev/null +++ b/syncplay/vendor/Qt.py @@ -0,0 +1,1620 @@ +"""Minimal Python 2 & 3 shim around all Qt bindings + +DOCUMENTATION + Qt.py was born in the film and visual effects industry to address + the growing need for the development of software capable of running + with more than one flavour of the Qt bindings for Python - PySide, + PySide2, PyQt4 and PyQt5. + + 1. Build for one, run with all + 2. Explicit is better than implicit + 3. Support co-existence + + Default resolution order: + - PySide2 + - PyQt5 + - PySide + - PyQt4 + + Usage: + >> import sys + >> from Qt import QtWidgets + >> app = QtWidgets.QApplication(sys.argv) + >> button = QtWidgets.QPushButton("Hello World") + >> button.show() + >> app.exec_() + + All members of PySide2 are mapped from other bindings, should they exist. + If no equivalent member exist, it is excluded from Qt.py and inaccessible. + The idea is to highlight members that exist across all supported binding, + and guarantee that code that runs on one binding runs on all others. + + For more details, visit https://github.com/mottosso/Qt.py + +LICENSE + + See end of file for license (MIT, BSD) information. + +""" + +import os +import sys +import types +import shutil + + +__version__ = "1.1.0.b5" + +# Enable support for `from Qt import *` +__all__ = [] + +# Flags from environment variables +QT_VERBOSE = bool(os.getenv("QT_VERBOSE")) +QT_PREFERRED_BINDING = os.getenv("QT_PREFERRED_BINDING", "") +QT_SIP_API_HINT = os.getenv("QT_SIP_API_HINT") + +# Reference to Qt.py +Qt = sys.modules[__name__] +Qt.QtCompat = types.ModuleType("QtCompat") + +try: + long +except NameError: + # Python 3 compatibility + long = int + +"""Common members of all bindings + +This is where each member of Qt.py is explicitly defined. +It is based on a "lowest common denominator" of all bindings; +including members found in each of the 4 bindings. + +The "_common_members" dictionary is generated using the +build_membership.sh script. + +""" + +_common_members = { + "QtCore": [ + "QAbstractAnimation", + "QAbstractEventDispatcher", + "QAbstractItemModel", + "QAbstractListModel", + "QAbstractState", + "QAbstractTableModel", + "QAbstractTransition", + "QAnimationGroup", + "QBasicTimer", + "QBitArray", + "QBuffer", + "QByteArray", + "QByteArrayMatcher", + "QChildEvent", + "QCoreApplication", + "QCryptographicHash", + "QDataStream", + "QDate", + "QDateTime", + "QDir", + "QDirIterator", + "QDynamicPropertyChangeEvent", + "QEasingCurve", + "QElapsedTimer", + "QEvent", + "QEventLoop", + "QEventTransition", + "QFile", + "QFileInfo", + "QFileSystemWatcher", + "QFinalState", + "QGenericArgument", + "QGenericReturnArgument", + "QHistoryState", + "QIODevice", + "QLibraryInfo", + "QLine", + "QLineF", + "QLocale", + "QMargins", + "QMetaClassInfo", + "QMetaEnum", + "QMetaMethod", + "QMetaObject", + "QMetaProperty", + "QMimeData", + "QModelIndex", + "QMutex", + "QMutexLocker", + "QObject", + "QParallelAnimationGroup", + "QPauseAnimation", + "QPersistentModelIndex", + "QPluginLoader", + "QPoint", + "QPointF", + "QProcess", + "QProcessEnvironment", + "QPropertyAnimation", + "QReadLocker", + "QReadWriteLock", + "QRect", + "QRectF", + "QRegExp", + "QResource", + "QRunnable", + "QSemaphore", + "QSequentialAnimationGroup", + "QSettings", + "QSignalMapper", + "QSignalTransition", + "QSize", + "QSizeF", + "QSocketNotifier", + "QState", + "QStateMachine", + "QSysInfo", + "QSystemSemaphore", + "QT_TRANSLATE_NOOP", + "QT_TR_NOOP", + "QT_TR_NOOP_UTF8", + "QTemporaryFile", + "QTextBoundaryFinder", + "QTextCodec", + "QTextDecoder", + "QTextEncoder", + "QTextStream", + "QTextStreamManipulator", + "QThread", + "QThreadPool", + "QTime", + "QTimeLine", + "QTimer", + "QTimerEvent", + "QTranslator", + "QUrl", + "QVariantAnimation", + "QWaitCondition", + "QWriteLocker", + "QXmlStreamAttribute", + "QXmlStreamAttributes", + "QXmlStreamEntityDeclaration", + "QXmlStreamEntityResolver", + "QXmlStreamNamespaceDeclaration", + "QXmlStreamNotationDeclaration", + "QXmlStreamReader", + "QXmlStreamWriter", + "Qt", + "QtCriticalMsg", + "QtDebugMsg", + "QtFatalMsg", + "QtMsgType", + "QtSystemMsg", + "QtWarningMsg", + "qAbs", + "qAddPostRoutine", + "qChecksum", + "qCritical", + "qDebug", + "qFatal", + "qFuzzyCompare", + "qIsFinite", + "qIsInf", + "qIsNaN", + "qIsNull", + "qRegisterResourceData", + "qUnregisterResourceData", + "qVersion", + "qWarning", + "qrand", + "qsrand" + ], + "QtGui": [ + "QAbstractTextDocumentLayout", + "QActionEvent", + "QBitmap", + "QBrush", + "QClipboard", + "QCloseEvent", + "QColor", + "QConicalGradient", + "QContextMenuEvent", + "QCursor", + "QDesktopServices", + "QDoubleValidator", + "QDrag", + "QDragEnterEvent", + "QDragLeaveEvent", + "QDragMoveEvent", + "QDropEvent", + "QFileOpenEvent", + "QFocusEvent", + "QFont", + "QFontDatabase", + "QFontInfo", + "QFontMetrics", + "QFontMetricsF", + "QGradient", + "QHelpEvent", + "QHideEvent", + "QHoverEvent", + "QIcon", + "QIconDragEvent", + "QIconEngine", + "QImage", + "QImageIOHandler", + "QImageReader", + "QImageWriter", + "QInputEvent", + "QInputMethodEvent", + "QIntValidator", + "QKeyEvent", + "QKeySequence", + "QLinearGradient", + "QMatrix2x2", + "QMatrix2x3", + "QMatrix2x4", + "QMatrix3x2", + "QMatrix3x3", + "QMatrix3x4", + "QMatrix4x2", + "QMatrix4x3", + "QMatrix4x4", + "QMouseEvent", + "QMoveEvent", + "QMovie", + "QPaintDevice", + "QPaintEngine", + "QPaintEngineState", + "QPaintEvent", + "QPainter", + "QPainterPath", + "QPainterPathStroker", + "QPalette", + "QPen", + "QPicture", + "QPictureIO", + "QPixmap", + "QPixmapCache", + "QPolygon", + "QPolygonF", + "QQuaternion", + "QRadialGradient", + "QRegExpValidator", + "QRegion", + "QResizeEvent", + "QSessionManager", + "QShortcutEvent", + "QShowEvent", + "QStandardItem", + "QStandardItemModel", + "QStatusTipEvent", + "QSyntaxHighlighter", + "QTabletEvent", + "QTextBlock", + "QTextBlockFormat", + "QTextBlockGroup", + "QTextBlockUserData", + "QTextCharFormat", + "QTextCursor", + "QTextDocument", + "QTextDocumentFragment", + "QTextFormat", + "QTextFragment", + "QTextFrame", + "QTextFrameFormat", + "QTextImageFormat", + "QTextInlineObject", + "QTextItem", + "QTextLayout", + "QTextLength", + "QTextLine", + "QTextList", + "QTextListFormat", + "QTextObject", + "QTextObjectInterface", + "QTextOption", + "QTextTable", + "QTextTableCell", + "QTextTableCellFormat", + "QTextTableFormat", + "QTouchEvent", + "QTransform", + "QValidator", + "QVector2D", + "QVector3D", + "QVector4D", + "QWhatsThisClickedEvent", + "QWheelEvent", + "QWindowStateChangeEvent", + "qAlpha", + "qBlue", + "qGray", + "qGreen", + "qIsGray", + "qRed", + "qRgb", + "qRgba" + ], + "QtHelp": [ + "QHelpContentItem", + "QHelpContentModel", + "QHelpContentWidget", + "QHelpEngine", + "QHelpEngineCore", + "QHelpIndexModel", + "QHelpIndexWidget", + "QHelpSearchEngine", + "QHelpSearchQuery", + "QHelpSearchQueryWidget", + "QHelpSearchResultWidget" + ], + "QtMultimedia": [ + "QAbstractVideoBuffer", + "QAbstractVideoSurface", + "QAudio", + "QAudioDeviceInfo", + "QAudioFormat", + "QAudioInput", + "QAudioOutput", + "QVideoFrame", + "QVideoSurfaceFormat" + ], + "QtNetwork": [ + "QAbstractNetworkCache", + "QAbstractSocket", + "QAuthenticator", + "QHostAddress", + "QHostInfo", + "QLocalServer", + "QLocalSocket", + "QNetworkAccessManager", + "QNetworkAddressEntry", + "QNetworkCacheMetaData", + "QNetworkConfiguration", + "QNetworkConfigurationManager", + "QNetworkCookie", + "QNetworkCookieJar", + "QNetworkDiskCache", + "QNetworkInterface", + "QNetworkProxy", + "QNetworkProxyFactory", + "QNetworkProxyQuery", + "QNetworkReply", + "QNetworkRequest", + "QNetworkSession", + "QSsl", + "QTcpServer", + "QTcpSocket", + "QUdpSocket" + ], + "QtOpenGL": [ + "QGL", + "QGLContext", + "QGLFormat", + "QGLWidget" + ], + "QtSql": [ + "QSql", + "QSqlDatabase", + "QSqlDriver", + "QSqlDriverCreatorBase", + "QSqlError", + "QSqlField", + "QSqlIndex", + "QSqlQuery", + "QSqlQueryModel", + "QSqlRecord", + "QSqlRelation", + "QSqlRelationalDelegate", + "QSqlRelationalTableModel", + "QSqlResult", + "QSqlTableModel" + ], + "QtSvg": [ + "QGraphicsSvgItem", + "QSvgGenerator", + "QSvgRenderer", + "QSvgWidget" + ], + "QtTest": [ + "QTest" + ], + "QtWidgets": [ + "QAbstractButton", + "QAbstractGraphicsShapeItem", + "QAbstractItemDelegate", + "QAbstractItemView", + "QAbstractScrollArea", + "QAbstractSlider", + "QAbstractSpinBox", + "QAction", + "QActionGroup", + "QApplication", + "QBoxLayout", + "QButtonGroup", + "QCalendarWidget", + "QCheckBox", + "QColorDialog", + "QColumnView", + "QComboBox", + "QCommandLinkButton", + "QCommonStyle", + "QCompleter", + "QDataWidgetMapper", + "QDateEdit", + "QDateTimeEdit", + "QDesktopWidget", + "QDial", + "QDialog", + "QDialogButtonBox", + "QDirModel", + "QDockWidget", + "QDoubleSpinBox", + "QErrorMessage", + "QFileDialog", + "QFileIconProvider", + "QFileSystemModel", + "QFocusFrame", + "QFontComboBox", + "QFontDialog", + "QFormLayout", + "QFrame", + "QGesture", + "QGestureEvent", + "QGestureRecognizer", + "QGraphicsAnchor", + "QGraphicsAnchorLayout", + "QGraphicsBlurEffect", + "QGraphicsColorizeEffect", + "QGraphicsDropShadowEffect", + "QGraphicsEffect", + "QGraphicsEllipseItem", + "QGraphicsGridLayout", + "QGraphicsItem", + "QGraphicsItemGroup", + "QGraphicsLayout", + "QGraphicsLayoutItem", + "QGraphicsLineItem", + "QGraphicsLinearLayout", + "QGraphicsObject", + "QGraphicsOpacityEffect", + "QGraphicsPathItem", + "QGraphicsPixmapItem", + "QGraphicsPolygonItem", + "QGraphicsProxyWidget", + "QGraphicsRectItem", + "QGraphicsRotation", + "QGraphicsScale", + "QGraphicsScene", + "QGraphicsSceneContextMenuEvent", + "QGraphicsSceneDragDropEvent", + "QGraphicsSceneEvent", + "QGraphicsSceneHelpEvent", + "QGraphicsSceneHoverEvent", + "QGraphicsSceneMouseEvent", + "QGraphicsSceneMoveEvent", + "QGraphicsSceneResizeEvent", + "QGraphicsSceneWheelEvent", + "QGraphicsSimpleTextItem", + "QGraphicsTextItem", + "QGraphicsTransform", + "QGraphicsView", + "QGraphicsWidget", + "QGridLayout", + "QGroupBox", + "QHBoxLayout", + "QHeaderView", + "QInputDialog", + "QItemDelegate", + "QItemEditorCreatorBase", + "QItemEditorFactory", + "QKeyEventTransition", + "QLCDNumber", + "QLabel", + "QLayout", + "QLayoutItem", + "QLineEdit", + "QListView", + "QListWidget", + "QListWidgetItem", + "QMainWindow", + "QMdiArea", + "QMdiSubWindow", + "QMenu", + "QMenuBar", + "QMessageBox", + "QMouseEventTransition", + "QPanGesture", + "QPinchGesture", + "QPlainTextDocumentLayout", + "QPlainTextEdit", + "QProgressBar", + "QProgressDialog", + "QPushButton", + "QRadioButton", + "QRubberBand", + "QScrollArea", + "QScrollBar", + "QShortcut", + "QSizeGrip", + "QSizePolicy", + "QSlider", + "QSpacerItem", + "QSpinBox", + "QSplashScreen", + "QSplitter", + "QSplitterHandle", + "QStackedLayout", + "QStackedWidget", + "QStatusBar", + "QStyle", + "QStyleFactory", + "QStyleHintReturn", + "QStyleHintReturnMask", + "QStyleHintReturnVariant", + "QStyleOption", + "QStyleOptionButton", + "QStyleOptionComboBox", + "QStyleOptionComplex", + "QStyleOptionDockWidget", + "QStyleOptionFocusRect", + "QStyleOptionFrame", + "QStyleOptionGraphicsItem", + "QStyleOptionGroupBox", + "QStyleOptionHeader", + "QStyleOptionMenuItem", + "QStyleOptionProgressBar", + "QStyleOptionRubberBand", + "QStyleOptionSizeGrip", + "QStyleOptionSlider", + "QStyleOptionSpinBox", + "QStyleOptionTab", + "QStyleOptionTabBarBase", + "QStyleOptionTabWidgetFrame", + "QStyleOptionTitleBar", + "QStyleOptionToolBar", + "QStyleOptionToolBox", + "QStyleOptionToolButton", + "QStyleOptionViewItem", + "QStylePainter", + "QStyledItemDelegate", + "QSwipeGesture", + "QSystemTrayIcon", + "QTabBar", + "QTabWidget", + "QTableView", + "QTableWidget", + "QTableWidgetItem", + "QTableWidgetSelectionRange", + "QTapAndHoldGesture", + "QTapGesture", + "QTextBrowser", + "QTextEdit", + "QTimeEdit", + "QToolBar", + "QToolBox", + "QToolButton", + "QToolTip", + "QTreeView", + "QTreeWidget", + "QTreeWidgetItem", + "QTreeWidgetItemIterator", + "QUndoCommand", + "QUndoGroup", + "QUndoStack", + "QUndoView", + "QVBoxLayout", + "QWhatsThis", + "QWidget", + "QWidgetAction", + "QWidgetItem", + "QWizard", + "QWizardPage" + ], + "QtXml": [ + "QDomAttr", + "QDomCDATASection", + "QDomCharacterData", + "QDomComment", + "QDomDocument", + "QDomDocumentFragment", + "QDomDocumentType", + "QDomElement", + "QDomEntity", + "QDomEntityReference", + "QDomImplementation", + "QDomNamedNodeMap", + "QDomNode", + "QDomNodeList", + "QDomNotation", + "QDomProcessingInstruction", + "QDomText", + "QXmlAttributes", + "QXmlContentHandler", + "QXmlDTDHandler", + "QXmlDeclHandler", + "QXmlDefaultHandler", + "QXmlEntityResolver", + "QXmlErrorHandler", + "QXmlInputSource", + "QXmlLexicalHandler", + "QXmlLocator", + "QXmlNamespaceSupport", + "QXmlParseException", + "QXmlReader", + "QXmlSimpleReader" + ], + "QtXmlPatterns": [ + "QAbstractMessageHandler", + "QAbstractUriResolver", + "QAbstractXmlNodeModel", + "QAbstractXmlReceiver", + "QSourceLocation", + "QXmlFormatter", + "QXmlItem", + "QXmlName", + "QXmlNamePool", + "QXmlNodeModelIndex", + "QXmlQuery", + "QXmlResultItems", + "QXmlSchema", + "QXmlSchemaValidator", + "QXmlSerializer" + ] +} + + +"""Misplaced members + +These members from the original submodule are misplaced relative PySide2 + +""" +_misplaced_members = { + "PySide2": { + #"QtGui.QStringListModel": "QtCore.QStringListModel", + "QtCore.Property": "QtCore.Property", + "QtCore.Signal": "QtCore.Signal", + "QtCore.Slot": "QtCore.Slot", + "QtCore.QAbstractProxyModel": "QtCore.QAbstractProxyModel", + "QtCore.QSortFilterProxyModel": "QtCore.QSortFilterProxyModel", + "QtCore.QItemSelection": "QtCore.QItemSelection", + "QtCore.QItemSelectionModel": "QtCore.QItemSelectionModel", + }, + "PyQt5": { + "QtCore.pyqtProperty": "QtCore.Property", + "QtCore.pyqtSignal": "QtCore.Signal", + "QtCore.pyqtSlot": "QtCore.Slot", + "QtCore.QAbstractProxyModel": "QtCore.QAbstractProxyModel", + "QtCore.QSortFilterProxyModel": "QtCore.QSortFilterProxyModel", + "QtCore.QStringListModel": "QtCore.QStringListModel", + "QtCore.QItemSelection": "QtCore.QItemSelection", + "QtCore.QItemSelectionModel": "QtCore.QItemSelectionModel", + }, + "PySide": { + "QtGui.QAbstractProxyModel": "QtCore.QAbstractProxyModel", + "QtGui.QSortFilterProxyModel": "QtCore.QSortFilterProxyModel", + "QtGui.QStringListModel": "QtCore.QStringListModel", + "QtGui.QItemSelection": "QtCore.QItemSelection", + "QtGui.QItemSelectionModel": "QtCore.QItemSelectionModel", + "QtCore.Property": "QtCore.Property", + "QtCore.Signal": "QtCore.Signal", + "QtCore.Slot": "QtCore.Slot", + + }, + "PyQt4": { + "QtGui.QAbstractProxyModel": "QtCore.QAbstractProxyModel", + "QtGui.QSortFilterProxyModel": "QtCore.QSortFilterProxyModel", + "QtGui.QItemSelection": "QtCore.QItemSelection", + "QtGui.QStringListModel": "QtCore.QStringListModel", + "QtGui.QItemSelectionModel": "QtCore.QItemSelectionModel", + "QtCore.pyqtProperty": "QtCore.Property", + "QtCore.pyqtSignal": "QtCore.Signal", + "QtCore.pyqtSlot": "QtCore.Slot", + } +} + +""" Compatibility Members + +This dictionary is used to build Qt.QtCompat objects that provide a consistent +interface for obsolete members, and differences in binding return values. + +{ + "binding": { + "classname": { + "targetname": "binding_namespace", + } + } +} +""" +_compatibility_members = { + "PySide2": { + "QHeaderView": { + "sectionsClickable": "QtWidgets.QHeaderView.sectionsClickable", + "setSectionsClickable": + "QtWidgets.QHeaderView.setSectionsClickable", + "sectionResizeMode": "QtWidgets.QHeaderView.sectionResizeMode", + "setSectionResizeMode": + "QtWidgets.QHeaderView.setSectionResizeMode", + "sectionsMovable": "QtWidgets.QHeaderView.sectionsMovable", + "setSectionsMovable": "QtWidgets.QHeaderView.setSectionsMovable", + }, + "QFileDialog": { + "getOpenFileName": "QtWidgets.QFileDialog.getOpenFileName", + "getOpenFileNames": "QtWidgets.QFileDialog.getOpenFileNames", + "getSaveFileName": "QtWidgets.QFileDialog.getSaveFileName", + }, + }, + "PyQt5": { + "QHeaderView": { + "sectionsClickable": "QtWidgets.QHeaderView.sectionsClickable", + "setSectionsClickable": + "QtWidgets.QHeaderView.setSectionsClickable", + "sectionResizeMode": "QtWidgets.QHeaderView.sectionResizeMode", + "setSectionResizeMode": + "QtWidgets.QHeaderView.setSectionResizeMode", + "sectionsMovable": "QtWidgets.QHeaderView.sectionsMovable", + "setSectionsMovable": "QtWidgets.QHeaderView.setSectionsMovable", + }, + "QFileDialog": { + "getOpenFileName": "QtWidgets.QFileDialog.getOpenFileName", + "getOpenFileNames": "QtWidgets.QFileDialog.getOpenFileNames", + "getSaveFileName": "QtWidgets.QFileDialog.getSaveFileName", + }, + }, + "PySide": { + "QHeaderView": { + "sectionsClickable": "QtWidgets.QHeaderView.isClickable", + "setSectionsClickable": "QtWidgets.QHeaderView.setClickable", + "sectionResizeMode": "QtWidgets.QHeaderView.resizeMode", + "setSectionResizeMode": "QtWidgets.QHeaderView.setResizeMode", + "sectionsMovable": "QtWidgets.QHeaderView.isMovable", + "setSectionsMovable": "QtWidgets.QHeaderView.setMovable", + }, + "QFileDialog": { + "getOpenFileName": "QtWidgets.QFileDialog.getOpenFileName", + "getOpenFileNames": "QtWidgets.QFileDialog.getOpenFileNames", + "getSaveFileName": "QtWidgets.QFileDialog.getSaveFileName", + }, + }, + "PyQt4": { + "QHeaderView": { + "sectionsClickable": "QtWidgets.QHeaderView.isClickable", + "setSectionsClickable": "QtWidgets.QHeaderView.setClickable", + "sectionResizeMode": "QtWidgets.QHeaderView.resizeMode", + "setSectionResizeMode": "QtWidgets.QHeaderView.setResizeMode", + "sectionsMovable": "QtWidgets.QHeaderView.isMovable", + "setSectionsMovable": "QtWidgets.QHeaderView.setMovable", + }, + "QFileDialog": { + "getOpenFileName": "QtWidgets.QFileDialog.getOpenFileName", + "getOpenFileNames": "QtWidgets.QFileDialog.getOpenFileNames", + "getSaveFileName": "QtWidgets.QFileDialog.getSaveFileName", + }, + }, +} + + +def _apply_site_config(): + try: + import QtSiteConfig + except ImportError: + # If no QtSiteConfig module found, no modifications + # to _common_members are needed. + pass + else: + # Provide the ability to modify the dicts used to build Qt.py + if hasattr(QtSiteConfig, 'update_members'): + QtSiteConfig.update_members(_common_members) + + if hasattr(QtSiteConfig, 'update_misplaced_members'): + QtSiteConfig.update_misplaced_members(members=_misplaced_members) + + if hasattr(QtSiteConfig, 'update_compatibility_members'): + QtSiteConfig.update_compatibility_members( + members=_compatibility_members) + + +def _new_module(name): + return types.ModuleType(__name__ + "." + name) + + +def _import_sub_module(module, name): + """import_sub_module will mimic the function of importlib.import_module""" + module = __import__(module.__name__ + "." + name) + for level in name.split("."): + module = getattr(module, level) + return module + + +def _setup(module, extras): + """Install common submodules""" + + Qt.__binding__ = module.__name__ + + for name in list(_common_members) + extras: + try: + submodule = _import_sub_module( + module, name) + except ImportError: + continue + + setattr(Qt, "_" + name, submodule) + + if name not in extras: + # Store reference to original binding, + # but don't store speciality modules + # such as uic or QtUiTools + setattr(Qt, name, _new_module(name)) + + +def _wrapinstance(func, ptr, base=None): + """Enable implicit cast of pointer to most suitable class + + This behaviour is available in sip per default. + + Based on http://nathanhorne.com/pyqtpyside-wrap-instance + + Usage: + This mechanism kicks in under these circumstances. + 1. Qt.py is using PySide 1 or 2. + 2. A `base` argument is not provided. + + See :func:`QtCompat.wrapInstance()` + + Arguments: + func (function): Original function + ptr (long): Pointer to QObject in memory + base (QObject, optional): Base class to wrap with. Defaults to QObject, + which should handle anything. + + """ + + assert isinstance(ptr, long), "Argument 'ptr' must be of type " + assert (base is None) or issubclass(base, Qt.QtCore.QObject), ( + "Argument 'base' must be of type ") + + if base is None: + q_object = func(long(ptr), Qt.QtCore.QObject) + meta_object = q_object.metaObject() + class_name = meta_object.className() + super_class_name = meta_object.superClass().className() + + if hasattr(Qt.QtWidgets, class_name): + base = getattr(Qt.QtWidgets, class_name) + + elif hasattr(Qt.QtWidgets, super_class_name): + base = getattr(Qt.QtWidgets, super_class_name) + + else: + base = Qt.QtCore.QObject + + return func(long(ptr), base) + + +def _reassign_misplaced_members(binding): + """Apply misplaced members from `binding` to Qt.py + + Arguments: + binding (dict): Misplaced members + + """ + + for src, dst in _misplaced_members[binding].items(): + src_module, src_member = src.split(".") + dst_module, dst_member = dst.split(".") + + try: + src_object = getattr(Qt, dst_module) + except AttributeError: + # Skip reassignment of non-existing members. + # This can happen if a request was made to + # rename a member that didn't exist, for example + # if QtWidgets isn't available on the target platform. + continue + + dst_value = getattr(getattr(Qt, "_" + src_module), src_member) + + setattr( + src_object, + dst_member, + dst_value + ) + + +def _build_compatibility_members(binding, decorators=None): + """Apply `binding` to QtCompat + + Arguments: + binding (str): Top level binding in _compatibility_members. + decorators (dict, optional): Provides the ability to decorate the + original Qt methods when needed by a binding. This can be used + to change the returned value to a standard value. The key should + be the classname, the value is a dict where the keys are the + target method names, and the values are the decorator functions. + + """ + + decorators = decorators or dict() + + # Allow optional site-level customization of the compatibility members. + # This method does not need to be implemented in QtSiteConfig. + try: + import QtSiteConfig + except ImportError: + pass + else: + if hasattr(QtSiteConfig, 'update_compatibility_decorators'): + QtSiteConfig.update_compatibility_decorators(binding, decorators) + + _QtCompat = type("QtCompat", (object,), {}) + + for classname, bindings in _compatibility_members[binding].items(): + attrs = {} + for target, binding in bindings.items(): + namespaces = binding.split('.') + try: + src_object = getattr(Qt, "_" + namespaces[0]) + except AttributeError as e: + _log("QtCompat: AttributeError: %s" % e) + # Skip reassignment of non-existing members. + # This can happen if a request was made to + # rename a member that didn't exist, for example + # if QtWidgets isn't available on the target platform. + continue + + # Walk down any remaining namespace getting the object assuming + # that if the first namespace exists the rest will exist. + for namespace in namespaces[1:]: + src_object = getattr(src_object, namespace) + + # decorate the Qt method if a decorator was provided. + if target in decorators.get(classname, []): + # staticmethod must be called on the decorated method to + # prevent a TypeError being raised when the decorated method + # is called. + src_object = staticmethod( + decorators[classname][target](src_object)) + + attrs[target] = src_object + + # Create the QtCompat class and install it into the namespace + compat_class = type(classname, (_QtCompat,), attrs) + setattr(Qt.QtCompat, classname, compat_class) + + +def _pyside2(): + """Initialise PySide2 + + These functions serve to test the existence of a binding + along with set it up in such a way that it aligns with + the final step; adding members from the original binding + to Qt.py + + """ + + import PySide2 as module + _setup(module, ["QtUiTools"]) + + Qt.__binding_version__ = module.__version__ + + try: + try: + # Before merge of PySide and shiboken + import shiboken2 + except ImportError: + # After merge of PySide and shiboken, May 2017 + from PySide2 import shiboken2 + + Qt.QtCompat.wrapInstance = ( + lambda ptr, base=None: _wrapinstance( + shiboken2.wrapInstance, ptr, base) + ) + Qt.QtCompat.getCppPointer = lambda object: \ + shiboken2.getCppPointer(object)[0] + + except ImportError: + pass # Optional + + if hasattr(Qt, "_QtUiTools"): + Qt.QtCompat.loadUi = _loadUi + + if hasattr(Qt, "_QtCore"): + Qt.__qt_version__ = Qt._QtCore.qVersion() + Qt.QtCompat.translate = Qt._QtCore.QCoreApplication.translate + + if hasattr(Qt, "_QtWidgets"): + Qt.QtCompat.setSectionResizeMode = \ + Qt._QtWidgets.QHeaderView.setSectionResizeMode + + _reassign_misplaced_members("PySide2") + _build_compatibility_members("PySide2") + + +def _pyside(): + """Initialise PySide""" + + import PySide as module + _setup(module, ["QtUiTools"]) + + Qt.__binding_version__ = module.__version__ + + try: + try: + # Before merge of PySide and shiboken + import shiboken + except ImportError: + # After merge of PySide and shiboken, May 2017 + from PySide import shiboken + + Qt.QtCompat.wrapInstance = ( + lambda ptr, base=None: _wrapinstance( + shiboken.wrapInstance, ptr, base) + ) + Qt.QtCompat.getCppPointer = lambda object: \ + shiboken.getCppPointer(object)[0] + + except ImportError: + pass # Optional + + if hasattr(Qt, "_QtUiTools"): + Qt.QtCompat.loadUi = _loadUi + + if hasattr(Qt, "_QtGui"): + setattr(Qt, "QtWidgets", _new_module("QtWidgets")) + setattr(Qt, "_QtWidgets", Qt._QtGui) + + Qt.QtCompat.setSectionResizeMode = Qt._QtGui.QHeaderView.setResizeMode + + if hasattr(Qt, "_QtCore"): + Qt.__qt_version__ = Qt._QtCore.qVersion() + QCoreApplication = Qt._QtCore.QCoreApplication + Qt.QtCompat.translate = ( + lambda context, sourceText, disambiguation, n: + QCoreApplication.translate( + context, + sourceText, + disambiguation, + QCoreApplication.CodecForTr, + n + ) + ) + + _reassign_misplaced_members("PySide") + _build_compatibility_members("PySide") + + +def _pyqt5(): + """Initialise PyQt5""" + + import PyQt5 as module + _setup(module, ["uic"]) + + try: + import sip + Qt.QtCompat.wrapInstance = ( + lambda ptr, base=None: _wrapinstance( + sip.wrapinstance, ptr, base) + ) + Qt.QtCompat.getCppPointer = lambda object: \ + sip.unwrapinstance(object) + + except ImportError: + pass # Optional + + if hasattr(Qt, "_uic"): + Qt.QtCompat.loadUi = _loadUi + + if hasattr(Qt, "_QtCore"): + Qt.__binding_version__ = Qt._QtCore.PYQT_VERSION_STR + Qt.__qt_version__ = Qt._QtCore.QT_VERSION_STR + Qt.QtCompat.translate = Qt._QtCore.QCoreApplication.translate + + if hasattr(Qt, "_QtWidgets"): + Qt.QtCompat.setSectionResizeMode = \ + Qt._QtWidgets.QHeaderView.setSectionResizeMode + + _reassign_misplaced_members("PyQt5") + _build_compatibility_members('PyQt5') + + +def _pyqt4(): + """Initialise PyQt4""" + + import sip + + # Validation of envivornment variable. Prevents an error if + # the variable is invalid since it's just a hint. + try: + hint = int(QT_SIP_API_HINT) + except TypeError: + hint = None # Variable was None, i.e. not set. + except ValueError: + raise ImportError("QT_SIP_API_HINT=%s must be a 1 or 2") + + for api in ("QString", + "QVariant", + "QDate", + "QDateTime", + "QTextStream", + "QTime", + "QUrl"): + try: + sip.setapi(api, hint or 2) + except AttributeError: + raise ImportError("PyQt4 < 4.6 isn't supported by Qt.py") + except ValueError: + actual = sip.getapi(api) + if not hint: + raise ImportError("API version already set to %d" % actual) + else: + # Having provided a hint indicates a soft constraint, one + # that doesn't throw an exception. + sys.stderr.write( + "Warning: API '%s' has already been set to %d.\n" + % (api, actual) + ) + + import PyQt4 as module + _setup(module, ["uic"]) + + try: + import sip + Qt.QtCompat.wrapInstance = ( + lambda ptr, base=None: _wrapinstance( + sip.wrapinstance, ptr, base) + ) + Qt.QtCompat.getCppPointer = lambda object: \ + sip.unwrapinstance(object) + + except ImportError: + pass # Optional + + if hasattr(Qt, "_uic"): + Qt.QtCompat.loadUi = _loadUi + + if hasattr(Qt, "_QtGui"): + setattr(Qt, "QtWidgets", _new_module("QtWidgets")) + setattr(Qt, "_QtWidgets", Qt._QtGui) + + Qt.QtCompat.setSectionResizeMode = \ + Qt._QtGui.QHeaderView.setResizeMode + + if hasattr(Qt, "_QtCore"): + Qt.__binding_version__ = Qt._QtCore.PYQT_VERSION_STR + Qt.__qt_version__ = Qt._QtCore.QT_VERSION_STR + + QCoreApplication = Qt._QtCore.QCoreApplication + Qt.QtCompat.translate = ( + lambda context, sourceText, disambiguation, n: + QCoreApplication.translate( + context, + sourceText, + disambiguation, + QCoreApplication.CodecForTr, + n) + ) + + _reassign_misplaced_members("PyQt4") + + # QFileDialog QtCompat decorator + def _standardizeQFileDialog(some_function): + """Decorator that makes PyQt4 return conform to other bindings""" + def wrapper(*args, **kwargs): + ret = (some_function(*args, **kwargs)) + + # PyQt4 only returns the selected filename, force it to a + # standard return of the selected filename, and a empty string + # for the selected filter + return ret, '' + + wrapper.__doc__ = some_function.__doc__ + wrapper.__name__ = some_function.__name__ + + return wrapper + + decorators = { + "QFileDialog": { + "getOpenFileName": _standardizeQFileDialog, + "getOpenFileNames": _standardizeQFileDialog, + "getSaveFileName": _standardizeQFileDialog, + } + } + _build_compatibility_members('PyQt4', decorators) + + +def _none(): + """Internal option (used in installer)""" + + Mock = type("Mock", (), {"__getattr__": lambda Qt, attr: None}) + + Qt.__binding__ = "None" + Qt.__qt_version__ = "0.0.0" + Qt.__binding_version__ = "0.0.0" + Qt.QtCompat.loadUi = lambda uifile, baseinstance=None: None + Qt.QtCompat.setSectionResizeMode = lambda *args, **kwargs: None + + for submodule in _common_members.keys(): + setattr(Qt, submodule, Mock()) + setattr(Qt, "_" + submodule, Mock()) + + +def _log(text): + if QT_VERBOSE: + sys.stdout.write(text + "\n") + + +def _loadUi(uifile, baseinstance=None): + """Dynamically load a user interface from the given `uifile` + + This function calls `uic.loadUi` if using PyQt bindings, + else it implements a comparable binding for PySide. + + Documentation: + http://pyqt.sourceforge.net/Docs/PyQt5/designer.html#PyQt5.uic.loadUi + + Arguments: + uifile (str): Absolute path to Qt Designer file. + baseinstance (QWidget): Instantiated QWidget or subclass thereof + + Return: + baseinstance if `baseinstance` is not `None`. Otherwise + return the newly created instance of the user interface. + + """ + if hasattr(baseinstance, "layout") and baseinstance.layout(): + message = ("QLayout: Attempting to add Layout to %s which " + "already has a layout") + raise RuntimeError(message % (baseinstance)) + + if hasattr(Qt, "_uic"): + return Qt._uic.loadUi(uifile, baseinstance) + + elif hasattr(Qt, "_QtUiTools"): + # Implement `PyQt5.uic.loadUi` for PySide(2) + + class _UiLoader(Qt._QtUiTools.QUiLoader): + """Create the user interface in a base instance. + + Unlike `Qt._QtUiTools.QUiLoader` itself this class does not + create a new instance of the top-level widget, but creates the user + interface in an existing instance of the top-level class if needed. + + This mimics the behaviour of `PyQt5.uic.loadUi`. + + """ + + def __init__(self, baseinstance): + super(_UiLoader, self).__init__(baseinstance) + self.baseinstance = baseinstance + + def load(self, uifile, *args, **kwargs): + from xml.etree.ElementTree import ElementTree + + # For whatever reason, if this doesn't happen then + # reading an invalid or non-existing .ui file throws + # a RuntimeError. + etree = ElementTree() + etree.parse(uifile) + + widget = Qt._QtUiTools.QUiLoader.load( + self, uifile, *args, **kwargs) + + # Workaround for PySide 1.0.9, see issue #208 + widget.parentWidget() + + return widget + + def createWidget(self, class_name, parent=None, name=""): + """Called for each widget defined in ui file + + Overridden here to populate `baseinstance` instead. + + """ + + if parent is None and self.baseinstance: + # Supposed to create the top-level widget, + # return the base instance instead + return self.baseinstance + + # For some reason, Line is not in the list of available + # widgets, but works fine, so we have to special case it here. + if class_name in self.availableWidgets() + ["Line"]: + # Create a new widget for child widgets + widget = Qt._QtUiTools.QUiLoader.createWidget(self, + class_name, + parent, + name) + + else: + raise Exception("Custom widget '%s' not supported" + % class_name) + + if self.baseinstance: + # Set an attribute for the new child widget on the base + # instance, just like PyQt5.uic.loadUi does. + setattr(self.baseinstance, name, widget) + + return widget + + widget = _UiLoader(baseinstance).load(uifile) + Qt.QtCore.QMetaObject.connectSlotsByName(widget) + + return widget + + else: + raise NotImplementedError("No implementation available for loadUi") + + +def _convert(lines): + """Convert compiled .ui file from PySide2 to Qt.py + + Arguments: + lines (list): Each line of of .ui file + + Usage: + >> with open("myui.py") as f: + .. lines = _convert(f.readlines()) + + """ + + def parse(line): + line = line.replace("from PySide2 import", "from Qt import QtCompat,") + line = line.replace("QtWidgets.QApplication.translate", + "QtCompat.translate") + if "QtCore.SIGNAL" in line: + raise NotImplementedError("QtCore.SIGNAL is missing from PyQt5 " + "and so Qt.py does not support it: you " + "should avoid defining signals inside " + "your ui files.") + return line + + parsed = list() + for line in lines: + line = parse(line) + parsed.append(line) + + return parsed + + +def _cli(args): + """Qt.py command-line interface""" + import argparse + + parser = argparse.ArgumentParser() + parser.add_argument("--convert", + help="Path to compiled Python module, e.g. my_ui.py") + parser.add_argument("--compile", + help="Accept raw .ui file and compile with native " + "PySide2 compiler.") + parser.add_argument("--stdout", + help="Write to stdout instead of file", + action="store_true") + parser.add_argument("--stdin", + help="Read from stdin instead of file", + action="store_true") + + args = parser.parse_args(args) + + if args.stdout: + raise NotImplementedError("--stdout") + + if args.stdin: + raise NotImplementedError("--stdin") + + if args.compile: + raise NotImplementedError("--compile") + + if args.convert: + sys.stdout.write("#\n" + "# WARNING: --convert is an ALPHA feature.\n#\n" + "# See https://github.com/mottosso/Qt.py/pull/132\n" + "# for details.\n" + "#\n") + + # + # ------> Read + # + with open(args.convert) as f: + lines = _convert(f.readlines()) + + backup = "%s_backup%s" % os.path.splitext(args.convert) + sys.stdout.write("Creating \"%s\"..\n" % backup) + shutil.copy(args.convert, backup) + + # + # <------ Write + # + with open(args.convert, "w") as f: + f.write("".join(lines)) + + sys.stdout.write("Successfully converted \"%s\"\n" % args.convert) + + +def _install(): + # Default order (customise order and content via QT_PREFERRED_BINDING) + default_order = ("PySide2", "PyQt5", "PySide", "PyQt4") + preferred_order = list( + b for b in QT_PREFERRED_BINDING.split(os.pathsep) if b + ) + + order = preferred_order or default_order + + available = { + "PySide2": _pyside2, + "PyQt5": _pyqt5, + "PySide": _pyside, + "PyQt4": _pyqt4, + "None": _none + } + + _log("Order: '%s'" % "', '".join(order)) + + # Allow site-level customization of the available modules. + _apply_site_config() + + found_binding = False + for name in order: + _log("Trying %s" % name) + + try: + available[name]() + found_binding = True + break + + except ImportError as e: + _log("ImportError: %s" % e) + + except KeyError: + _log("ImportError: Preferred binding '%s' not found." % name) + + if not found_binding: + # If not binding were found, throw this error + raise ImportError("No Qt binding were found.") + + # Install individual members + for name, members in _common_members.items(): + try: + their_submodule = getattr(Qt, "_%s" % name) + except AttributeError: + continue + + our_submodule = getattr(Qt, name) + + # Enable import * + __all__.append(name) + + # Enable direct import of submodule, + # e.g. import Qt.QtCore + sys.modules[__name__ + "." + name] = our_submodule + + for member in members: + # Accept that a submodule may miss certain members. + try: + their_member = getattr(their_submodule, member) + except AttributeError: + _log("'%s.%s' was missing." % (name, member)) + continue + + setattr(our_submodule, member, their_member) + + # Backwards compatibility + if hasattr(Qt.QtCompat, 'loadUi'): + Qt.QtCompat.load_ui = Qt.QtCompat.loadUi + + +_install() + +# Setup Binding Enum states +Qt.IsPySide2 = Qt.__binding__ == 'PySide2' +Qt.IsPyQt5 = Qt.__binding__ == 'PyQt5' +Qt.IsPySide = Qt.__binding__ == 'PySide' +Qt.IsPyQt4 = Qt.__binding__ == 'PyQt4' + +"""Augment QtCompat + +QtCompat contains wrappers and added functionality +to the original bindings, such as the CLI interface +and otherwise incompatible members between bindings, +such as `QHeaderView.setSectionResizeMode`. + +""" + +Qt.QtCompat._cli = _cli +Qt.QtCompat._convert = _convert + +# Enable command-line interface +if __name__ == "__main__": + _cli(sys.argv[1:]) + + +# The MIT License (MIT) +# +# Copyright (c) 2016-2017 Marcus Ottosson +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# +# In PySide(2), loadUi does not exist, so we implement it +# +# `_UiLoader` is adapted from the qtpy project, which was further influenced +# by qt-helpers which was released under a 3-clause BSD license which in turn +# is based on a solution at: +# +# - https://gist.github.com/cpbotha/1b42a20c8f3eb9bb7cb8 +# +# The License for this code is as follows: +# +# qt-helpers - a common front-end to various Qt modules +# +# Copyright (c) 2015, Chris Beaumont and Thomas Robitaille +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the +# distribution. +# * Neither the name of the Glue project nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Which itself was based on the solution at +# +# https://gist.github.com/cpbotha/1b42a20c8f3eb9bb7cb8 +# +# which was released under the MIT license: +# +# Copyright (c) 2011 Sebastian Wiesner +# Modifications by Charl Botha +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files +# (the "Software"),to deal in the Software without restriction, +# including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/syncplay/vendor/qt5reactor.py b/syncplay/vendor/qt5reactor.py index b53e97b..cde2b5e 100644 --- a/syncplay/vendor/qt5reactor.py +++ b/syncplay/vendor/qt5reactor.py @@ -106,7 +106,7 @@ Subsequent port by therve import sys -from PySide2.QtCore import ( +from syncplay.vendor.Qt.QtCore import ( QCoreApplication, QEventLoop, QObject, QSocketNotifier, QTimer, Signal) from twisted.internet import posixbase from twisted.internet.interfaces import IReactorFDSet From 466589ccc468ca6eff7926eb20fd6d7ee5579dd4 Mon Sep 17 00:00:00 2001 From: alby128 Date: Wed, 4 Oct 2017 19:22:19 +0200 Subject: [PATCH 02/85] Allow multiple PySide versions on Qt.py --- .travis.yml | 2 +- syncplay/ui/GuiConfiguration.py | 39 ++++++++++++------ syncplay/ui/gui.py | 71 ++++++++++++++++++++++++--------- 3 files changed, 80 insertions(+), 32 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9c80676..4c43772 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,7 +37,7 @@ before_deploy: - pip install dmgbuild - mkdir dist_dmg - mv resources/macos_vlc_install.command resources/.macos_vlc_install.command -- dmgbuild -s appdmg.py "Syncplay" dist_dmg/Syncplay-PySide2.dmg +- dmgbuild -s appdmg.py "Syncplay" dist_dmg/Syncplay-qtpy-pyside2.dmg deploy: provider: s3 diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py index 10e1d42..54844bd 100755 --- a/syncplay/ui/GuiConfiguration.py +++ b/syncplay/ui/GuiConfiguration.py @@ -1,8 +1,9 @@ -from syncplay.vendor.Qt import QtCore, QtWidgets, QtGui, __binding__ +from syncplay.vendor.Qt import QtCore, QtWidgets, QtGui, __binding__, IsPySide, IsPySide2 from syncplay.vendor.Qt.QtCore import Qt, QSettings, QCoreApplication, QSize, QPoint, QUrl, QLine from syncplay.vendor.Qt.QtWidgets import QApplication, QLineEdit, QLabel, QCheckBox, QButtonGroup, QRadioButton, QDoubleSpinBox, QPlainTextEdit -from syncplay.vendor.Qt.QtGui import QCursor, QIcon, QImage -from PySide2.QtCore import QStandardPaths +from syncplay.vendor.Qt.QtGui import QCursor, QIcon, QImage, QDesktopServices +if IsPySide2: + from PySide2.QtCore import QStandardPaths from syncplay.players.playerFactory import PlayerFactory from datetime import datetime from syncplay import utils @@ -343,16 +344,28 @@ class ConfigDialog(QtWidgets.QDialog): def browseMediapath(self): self.loadMediaBrowseSettings() options = QtWidgets.QFileDialog.Options() - if self.config["mediaSearchDirectories"] and os.path.isdir(self.config["mediaSearchDirectories"][0]): - defaultdirectory = self.config["mediaSearchDirectories"][0] - elif os.path.isdir(self.mediadirectory): - defaultdirectory = self.mediadirectory - elif os.path.isdir(QStandardPaths.standardLocations(QStandardPaths.MoviesLocation)[0]): - defaultdirectory = QStandardPaths.standardLocations(QStandardPaths.MoviesLocation)[0] - elif os.path.isdir(QStandardPaths.standardLocations(QStandardPaths.HomeLocation)[0]): - defaultdirectory = QStandardPaths.standardLocations(QStandardPaths.HomeLocation)[0] - else: - defaultdirectory = "" + if IsPySide: + if self.config["mediaSearchDirectories"] and os.path.isdir(self.config["mediaSearchDirectories"][0]): + defaultdirectory = self.config["mediaSearchDirectories"][0] + elif os.path.isdir(self.mediadirectory): + defaultdirectory = self.mediadirectory + elif os.path.isdir(QDesktopServices.storageLocation(QDesktopServices.MoviesLocation)): + defaultdirectory = QDesktopServices.storageLocation(QDesktopServices.MoviesLocation) + elif os.path.isdir(QDesktopServices.storageLocation(QDesktopServices.HomeLocation)): + defaultdirectory = QDesktopServices.storageLocation(QDesktopServices.HomeLocation) + else: + defaultdirectory = "" + elif IsPySide2: + if self.config["mediaSearchDirectories"] and os.path.isdir(self.config["mediaSearchDirectories"][0]): + defaultdirectory = self.config["mediaSearchDirectories"][0] + elif os.path.isdir(self.mediadirectory): + defaultdirectory = self.mediadirectory + elif os.path.isdir(QStandardPaths.standardLocations(QStandardPaths.MoviesLocation)[0]): + defaultdirectory = QStandardPaths.standardLocations(QStandardPaths.MoviesLocation)[0] + elif os.path.isdir(QStandardPaths.standardLocations(QStandardPaths.HomeLocation)[0]): + defaultdirectory = QStandardPaths.standardLocations(QStandardPaths.HomeLocation)[0] + else: + defaultdirectory = "" browserfilter = "All files (*)" fileName, filtr = QtWidgets.QFileDialog.getOpenFileName(self, "Browse for media files", defaultdirectory, browserfilter, "", options) diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index 49beef2..a60918b 100755 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -1,7 +1,8 @@ from syncplay.vendor import Qt -from syncplay.vendor.Qt import QtWidgets, QtGui, __binding__ +from syncplay.vendor.Qt import QtWidgets, QtGui, __binding__, IsPySide, IsPySide2 from syncplay.vendor.Qt.QtCore import Qt, QSettings, QSize, QPoint, QUrl, QLine, QDateTime -from PySide2.QtCore import QStandardPaths +if IsPySide2: + from PySide2.QtCore import QStandardPaths from syncplay import utils, constants, version, release_number from syncplay.messages import getMessage import sys @@ -13,6 +14,8 @@ import os from syncplay.utils import formatTime, sameFilename, sameFilesize, sameFileduration, RoomPasswordProvider, formatSize, isURL from functools import wraps from twisted.internet import task +if sys.platform.startswith('darwin') and IsPySide: + from Foundation import NSURL lastCheckedForUpdates = None class UserlistItemDelegate(QtWidgets.QStyledItemDelegate): @@ -214,7 +217,10 @@ class MainWindow(QtWidgets.QMainWindow): indexRow = window.playlist.count() if window.clearedPlaylistNote else 0 for url in urls[::-1]: - dropfilepath = os.path.abspath(unicode(url.toLocalFile())) + if sys.platform.startswith('darwin') and IsPySide: + dropfilepath = os.path.abspath(NSURL.URLWithString_(str(url.toString())).filePathURL().path()) + else: + dropfilepath = os.path.abspath(unicode(url.toLocalFile())) if os.path.isfile(dropfilepath): window.addFileToPlaylist(dropfilepath, indexRow) elif os.path.isdir(dropfilepath): @@ -316,7 +322,10 @@ class MainWindow(QtWidgets.QMainWindow): if indexRow == -1: indexRow = window.playlist.count() for url in urls[::-1]: - dropfilepath = os.path.abspath(unicode(url.toLocalFile())) + if sys.platform.startswith('darwin') and IsPySide: + dropfilepath = os.path.abspath(NSURL.URLWithString_(str(url.toString())).filePathURL().path()) + else: + dropfilepath = os.path.abspath(unicode(url.toLocalFile())) if os.path.isfile(dropfilepath): window.addFileToPlaylist(dropfilepath, indexRow) elif os.path.isdir(dropfilepath): @@ -815,16 +824,28 @@ class MainWindow(QtWidgets.QMainWindow): settings.endGroup() def getInitialMediaDirectory(self, includeUserSpecifiedDirectories=True): - if self.config["mediaSearchDirectories"] and os.path.isdir(self.config["mediaSearchDirectories"][0]) and includeUserSpecifiedDirectories: - defaultdirectory = self.config["mediaSearchDirectories"][0] - elif includeUserSpecifiedDirectories and os.path.isdir(self.mediadirectory): - defaultdirectory = self.mediadirectory - elif os.path.isdir(QStandardPaths.standardLocations(QStandardPaths.MoviesLocation)[0]): - defaultdirectory = QStandardPaths.standardLocations(QStandardPaths.MoviesLocation)[0] - elif os.path.isdir(QStandardPaths.standardLocations(QStandardPaths.HomeLocation)[0]): - defaultdirectory = QStandardPaths.standardLocations(QStandardPaths.HomeLocation)[0] - else: - defaultdirectory = "" + if IsPySide: + if self.config["mediaSearchDirectories"] and os.path.isdir(self.config["mediaSearchDirectories"][0]) and includeUserSpecifiedDirectories: + defaultdirectory = self.config["mediaSearchDirectories"][0] + elif includeUserSpecifiedDirectories and os.path.isdir(self.mediadirectory): + defaultdirectory = self.mediadirectory + elif os.path.isdir(QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.MoviesLocation)): + defaultdirectory = QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.MoviesLocation) + elif os.path.isdir(QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.HomeLocation)): + defaultdirectory = QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.HomeLocation) + else: + defaultdirectory = "" + elif IsPySide2: + if self.config["mediaSearchDirectories"] and os.path.isdir(self.config["mediaSearchDirectories"][0]) and includeUserSpecifiedDirectories: + defaultdirectory = self.config["mediaSearchDirectories"][0] + elif includeUserSpecifiedDirectories and os.path.isdir(self.mediadirectory): + defaultdirectory = self.mediadirectory + elif os.path.isdir(QStandardPaths.standardLocations(QStandardPaths.MoviesLocation)[0]): + defaultdirectory = QStandardPaths.standardLocations(QStandardPaths.MoviesLocation)[0] + elif os.path.isdir(QStandardPaths.standardLocations(QStandardPaths.HomeLocation)[0]): + defaultdirectory = QStandardPaths.standardLocations(QStandardPaths.HomeLocation)[0] + else: + defaultdirectory = "" return defaultdirectory @needsClient @@ -834,7 +855,10 @@ class MainWindow(QtWidgets.QMainWindow): return self.loadMediaBrowseSettings() - options = QtWidgets.QFileDialog.Options() + if sys.platform.startswith('darwin') and IsPySide: + options = QtWidgets.QFileDialog.Options(QtWidgets.QFileDialog.DontUseNativeDialog) + else: + options = QtWidgets.QFileDialog.Options() self.mediadirectory = "" currentdirectory = os.path.dirname(self._syncplayClient.userlist.currentUser.file["path"]) if self._syncplayClient.userlist.currentUser.file else None if currentdirectory and os.path.isdir(currentdirectory): @@ -859,7 +883,10 @@ class MainWindow(QtWidgets.QMainWindow): return self.loadMediaBrowseSettings() - options = QtWidgets.QFileDialog.Options() + if sys.platform.startswith('darwin') and IsPySide: + options = QtWidgets.QFileDialog.Options(QtWidgets.QFileDialog.DontUseNativeDialog) + else: + options = QtWidgets.QFileDialog.Options() self.mediadirectory = "" currentdirectory = os.path.dirname(self._syncplayClient.userlist.currentUser.file["path"]) if self._syncplayClient.userlist.currentUser.file else None if currentdirectory and os.path.isdir(currentdirectory): @@ -1007,7 +1034,12 @@ class MainWindow(QtWidgets.QMainWindow): @needsClient def openAddMediaDirectoryDialog(self, MediaDirectoriesTextbox, MediaDirectoriesDialog): - folderName = unicode(QtWidgets.QFileDialog.getExistingDirectory(self,None,self.getInitialMediaDirectory(includeUserSpecifiedDirectories=False),QtWidgets.QFileDialog.ShowDirsOnly)) + if sys.platform.startswith('darwin'): + options = QtWidgets.QFileDialog.Options(QtWidgets.QFileDialog.ShowDirsOnly | QtWidgets.QFileDialog.DontUseNativeDialog) + else: + options = QtWidgets.QFileDialog.Options(QtWidgets.QFileDialog.ShowDirsOnly) + folderName = unicode(QtGui.QFileDialog.getExistingDirectory(self,None,self.getInitialMediaDirectory(includeUserSpecifiedDirectories=False),options)) + if folderName: existingMediaDirs = MediaDirectoriesTextbox.toPlainText() if existingMediaDirs == "": @@ -1543,7 +1575,10 @@ class MainWindow(QtWidgets.QMainWindow): data = event.mimeData() urls = data.urls() if urls and urls[0].scheme() == 'file': - dropfilepath = os.path.abspath(unicode(event.mimeData().urls()[0].toLocalFile())) + if sys.platform.startswith('darwin') and IsPySide: + dropfilepath = os.path.abspath(NSURL.URLWithString_(str(url.toString())).filePathURL().path()) + else: + dropfilepath = os.path.abspath(unicode(url.toLocalFile())) if rewindFile == False: self._syncplayClient._player.openFile(dropfilepath) else: From cc4975f7171453891a24dc5ece7ef55f52db0580 Mon Sep 17 00:00:00 2001 From: alby128 Date: Thu, 5 Oct 2017 10:07:03 +0200 Subject: [PATCH 03/85] Fixed datetime for existing installations --- resources/third-party-notices.rtf | 28 ++++++++++++++++++++-------- syncplay/ui/GuiConfiguration.py | 2 ++ syncplay/ui/gui.py | 4 ++-- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/resources/third-party-notices.rtf b/resources/third-party-notices.rtf index 129b285..492a24a 100644 --- a/resources/third-party-notices.rtf +++ b/resources/third-party-notices.rtf @@ -8,6 +8,22 @@ \f0\fs24 \cf0 Syncplay relies on the following softwares, in compliance with their licenses. \ \ +\b Qt.py +\b0 \ +\ +Copyright (c) 2016 Marcus Ottosson\ +\ +Permission is hereby granted, free of charge, to any person obtaining a copy\ +of this software and associated documentation files (the "Software"), to deal\ +in the Software without restriction, including without limitation the rights\ +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ +copies of the Software, and to permit persons to whom the Software is\ +furnished to do so, subject to the following conditions:\ +\ +The above copyright notice and this permission notice shall be included in all\ +copies or substantial portions of the Software.\ +\ + \b PySide\ \b0 \ @@ -97,8 +113,7 @@ The above copyright notice and this permission notice shall be\ included in all copies or substantial portions of the Software.\ \b \ -\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 -\cf0 Qt 4\ +Qt 4\ \ \b0 Copyright (C) 2015 The Qt Company Ltd.\ @@ -119,8 +134,7 @@ along with this program. If not, see \ \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 \b \cf0 \ -\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 -\cf0 appnope\ +appnope\ \b0 \ Copyright (c) 2013, Min Ragan-Kelley\ @@ -143,11 +157,9 @@ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\ -\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 -\b \cf0 \ -\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 -\cf0 PyObjC\ +\b \ +PyObjC\ \b0 \ Copyright 2002, 2003 - Bill Bumgarner, Ronald Oussoren, Steve Majewski, Lele Gaifax, et.al.\ diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py index 54844bd..a29b553 100755 --- a/syncplay/ui/GuiConfiguration.py +++ b/syncplay/ui/GuiConfiguration.py @@ -281,6 +281,8 @@ class ConfigDialog(QtWidgets.QDialog): self.lastCheckedForUpdates = settings.value("lastChecked", None) if self.lastCheckedForUpdates: if self.config["lastCheckedForUpdates"] is not None and self.config["lastCheckedForUpdates"] is not "": + if type(self.lastCheckedForUpdates).__name__ is 'datetime': + self.lastCheckedForUpdates = QDateTime.fromString(self.lastCheckedForUpdates.strftime('%Y-%m-%d %H:%M:%S'),'yyyy-MM-dd hh:mm:ss') if self.lastCheckedForUpdates.toPython() > datetime.strptime(self.config["lastCheckedForUpdates"], "%Y-%m-%d %H:%M:%S.%f"): self.config["lastCheckedForUpdates"] = self.lastCheckedForUpdates.toString("yyyy-MM-d HH:mm:ss.z") else: diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index a60918b..db6e570 100755 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -1,5 +1,5 @@ from syncplay.vendor import Qt -from syncplay.vendor.Qt import QtWidgets, QtGui, __binding__, IsPySide, IsPySide2 +from syncplay.vendor.Qt import QtWidgets, QtGui, __binding__, __binding_version__, IsPySide, IsPySide2 from syncplay.vendor.Qt.QtCore import Qt, QSettings, QSize, QPoint, QUrl, QLine, QDateTime if IsPySide2: from PySide2.QtCore import QStandardPaths @@ -105,7 +105,7 @@ class AboutDialog(QtWidgets.QDialog): nameLabel.setFont(QtGui.QFont("Helvetica", 20)) linkLabel = QtWidgets.QLabel("
syncplay.pl
") linkLabel.setOpenExternalLinks(True) - versionLabel = QtWidgets.QLabel("
Version v" + version + " release " + release_number + "
") + versionLabel = QtWidgets.QLabel("
Version v" + version + " release " + release_number + " on " + __binding__ + "
") licenseLabel = QtWidgets.QLabel("

Copyright © 2017 Syncplay

Licensed under the Apache License, Version 2.0

") aboutIconPixmap = QtGui.QPixmap(self.resourcespath + u"syncplay.png") aboutIconLabel = QtWidgets.QLabel() From bea9709d84a1b802ea3719e40cc60d38acc72e21 Mon Sep 17 00:00:00 2001 From: alby128 Date: Thu, 5 Oct 2017 10:31:21 +0200 Subject: [PATCH 04/85] Fixed typo in travis CI script --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 4c43772..7196646 100644 --- a/.travis.yml +++ b/.travis.yml @@ -31,7 +31,7 @@ install: - pip install twisted appnope pyobjc - git clone -b qtpy-pyside2 https://github.com/alby128/syncplay.git syncplay-qtpy-PySide2 - cd syncplay-qtpy-PySide2 -- git checkout pyside2 +- git checkout qtpy-pyside2 before_deploy: - pip install dmgbuild From a76a53945d1ee3b6b8074e4c3c404a2033ef1a36 Mon Sep 17 00:00:00 2001 From: alby128 Date: Thu, 5 Oct 2017 12:27:35 +0200 Subject: [PATCH 05/85] Added Appveyor support --- .appveyor.yml | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++ .gitignore | 1 + buildPy2exe.py | 4 ++-- 3 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 .appveyor.yml diff --git a/.appveyor.yml b/.appveyor.yml new file mode 100644 index 0000000..f590e35 --- /dev/null +++ b/.appveyor.yml @@ -0,0 +1,51 @@ +environment: + MINICONDA: "C:\\Miniconda" + clone_folder: c:\projects\syncplay + +image: + - Visual Studio 2013 + +platform: x86 + +configuration: Release + +init: + - set PATH=C:\Miniconda;C:\Miniconda\Scripts;%PATH% + - cmd: conda create -n syncplay -y + - cmd: activate syncplay + - cmd: conda install python pywin32 -y + - cmd: conda install -c conda-forge pyside2 -y + - cmd: pip install twisted py2exe_py2 zope.interface + - cmd: type nul > C:\Miniconda\envs\syncplay\lib\site-packages\zope\__init__.py + - cmd: pip freeze + - cmd: conda list + +install: + - cmd: cd c:\projects\syncplay + - cmd: python buildPy2exe.py + - cmd: del C:\projects\syncplay\syncplay_v1.5.0\lib\DNSAPI.dll + - cmd: del C:\projects\syncplay\syncplay_v1.5.0\lib\MPR.dll + - cmd: mkdir C:\projects\syncplay\syncplay_v1.5.0\platforms + - cmd: copy C:\Miniconda\envs\syncplay\library\plugins\platforms\qwindows.dll C:\projects\syncplay\syncplay_v1.5.0\platforms\ + +# Not a project with an msbuild file, build done at install. +build: off + +artifacts: + path: 'syncplay_v1.5.0' + type: zip + name: Syncplay_win + +# Push artefact to S3 bucket and list all +before_deploy: + - cmd: python -c "from PySide2 import QtCore; print QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.PluginsPath)" + +# Deploy build to Amazon S3 bucket +deploy: + provider: S3 + access_key_id: AKIAJS554GLAZJ5L6TUA + secret_access_key: + secure: ZPxgm95K1SIqcFlqwoMWmGpPfctamQhhAedoyCT4RDQM/+VbdFLfEfUtu3rZZeBm + bucket: syncplay + region: eu-central-1 + set_public: true diff --git a/.gitignore b/.gitignore index 6335c67..8309fad 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ syncplay_setup.nsi dist.7z .* !.travis.yml +!.appveyor.yml diff --git a/buildPy2exe.py b/buildPy2exe.py index fd4d3a0..dc6d56c 100755 --- a/buildPy2exe.py +++ b/buildPy2exe.py @@ -33,7 +33,7 @@ if missingStrings is not None and missingStrings is not "": p = "C:\\Program Files (x86)\\NSIS\\makensis.exe" #TODO: how to move that into proper place, huh NSIS_COMPILE = p if os.path.isfile(p) else "makensis.exe" -OUT_DIR = "syncplay v{}".format(syncplay.version) +OUT_DIR = "syncplay_v{}".format(syncplay.version) SETUP_SCRIPT_PATH = "syncplay_setup.nsi" NSIS_SCRIPT_TEMPLATE = r""" !include LogicLib.nsh @@ -698,5 +698,5 @@ info = dict( cmdclass = {"py2exe": build_installer}, ) -sys.argv.extend(['py2exe', '-p win32com ', '-i twisted.web.resource', '-p PySide2.QtGui', '-i PySide2.QtWidgets']) +sys.argv.extend(['py2exe', '-p win32com ', '-i twisted.web.resource', '-i PySide2.QtCore', '-p PySide2.QtGui', '-i PySide2.QtWidgets']) setup(**info) From a63b8f6d224102ae2976ff56ccd7b62ad7426b5e Mon Sep 17 00:00:00 2001 From: alby128 Date: Fri, 6 Oct 2017 14:38:15 +0200 Subject: [PATCH 06/85] Fixed QDateTime compatibility with old versions --- .appveyor.yml | 2 +- syncplay/ui/GuiConfiguration.py | 4 +--- syncplay/ui/gui.py | 4 +++- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index f590e35..93beaf2 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -34,7 +34,7 @@ build: off artifacts: path: 'syncplay_v1.5.0' type: zip - name: Syncplay_win + name: Syncplay_win_pyside2 # Push artefact to S3 bucket and list all before_deploy: diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py index a29b553..06c0e12 100755 --- a/syncplay/ui/GuiConfiguration.py +++ b/syncplay/ui/GuiConfiguration.py @@ -279,10 +279,8 @@ class ConfigDialog(QtWidgets.QDialog): settings = QSettings("Syncplay", "Interface") settings.beginGroup("Update") self.lastCheckedForUpdates = settings.value("lastChecked", None) - if self.lastCheckedForUpdates: + if self.lastCheckedForUpdates and type(self.lastCheckedForUpdates).__name__ == 'QDateTime': if self.config["lastCheckedForUpdates"] is not None and self.config["lastCheckedForUpdates"] is not "": - if type(self.lastCheckedForUpdates).__name__ is 'datetime': - self.lastCheckedForUpdates = QDateTime.fromString(self.lastCheckedForUpdates.strftime('%Y-%m-%d %H:%M:%S'),'yyyy-MM-dd hh:mm:ss') if self.lastCheckedForUpdates.toPython() > datetime.strptime(self.config["lastCheckedForUpdates"], "%Y-%m-%d %H:%M:%S.%f"): self.config["lastCheckedForUpdates"] = self.lastCheckedForUpdates.toString("yyyy-MM-d HH:mm:ss.z") else: diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index db6e570..3764954 100755 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -1524,8 +1524,10 @@ class MainWindow(QtWidgets.QMainWindow): return if self.config['lastCheckedForUpdates']: configLastChecked = datetime.strptime(self.config["lastCheckedForUpdates"], "%Y-%m-%d %H:%M:%S.%f") + if type(self.lastCheckedForUpdates).__name__ != 'QDateTime': + self.lastCheckedForUpdates = None if self.lastCheckedForUpdates is None or configLastChecked > self.lastCheckedForUpdates.toPython(): - self.lastCheckedForUpdates = configLastChecked + self.lastCheckedForUpdates = QDateTime.fromString(self.config["lastCheckedForUpdates"],'yyyy-MM-dd HH-mm-ss') if self.lastCheckedForUpdates is None: self.checkForUpdates() else: From 850a2d67835dd44b42125fbc960c7583ebc9b59a Mon Sep 17 00:00:00 2001 From: alby128 Date: Sun, 8 Oct 2017 00:13:59 +0200 Subject: [PATCH 07/85] Changed name of lastChecked QDateTime setting --- bintray.json | 19 +++++++++++++++++++ syncplay/ui/GuiConfiguration.py | 4 ++-- syncplay/ui/gui.py | 6 ++---- 3 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 bintray.json diff --git a/bintray.json b/bintray.json new file mode 100644 index 0000000..9dd447f --- /dev/null +++ b/bintray.json @@ -0,0 +1,19 @@ +{ + "package": { + "name": "Syncplay", + "repo": "Syncplay", + "subject": "alby128" + }, + + "version": { + "name": "1.5.0_test" + }, + + "files": + [ + {"includePattern": "dist_dmg/(.*)", "uploadPattern": "$1", + "matrixParams": { + "override": 1 }} + ], + "publish": true +} \ No newline at end of file diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py index 06c0e12..3f1b9f4 100755 --- a/syncplay/ui/GuiConfiguration.py +++ b/syncplay/ui/GuiConfiguration.py @@ -278,8 +278,8 @@ class ConfigDialog(QtWidgets.QDialog): def loadLastUpdateCheckDate(self): settings = QSettings("Syncplay", "Interface") settings.beginGroup("Update") - self.lastCheckedForUpdates = settings.value("lastChecked", None) - if self.lastCheckedForUpdates and type(self.lastCheckedForUpdates).__name__ == 'QDateTime': + self.lastCheckedForUpdates = settings.value("lastCheckedQt", None) + if self.lastCheckedForUpdates: if self.config["lastCheckedForUpdates"] is not None and self.config["lastCheckedForUpdates"] is not "": if self.lastCheckedForUpdates.toPython() > datetime.strptime(self.config["lastCheckedForUpdates"], "%Y-%m-%d %H:%M:%S.%f"): self.config["lastCheckedForUpdates"] = self.lastCheckedForUpdates.toString("yyyy-MM-d HH:mm:ss.z") diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index 3764954..330aee6 100755 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -1524,8 +1524,6 @@ class MainWindow(QtWidgets.QMainWindow): return if self.config['lastCheckedForUpdates']: configLastChecked = datetime.strptime(self.config["lastCheckedForUpdates"], "%Y-%m-%d %H:%M:%S.%f") - if type(self.lastCheckedForUpdates).__name__ != 'QDateTime': - self.lastCheckedForUpdates = None if self.lastCheckedForUpdates is None or configLastChecked > self.lastCheckedForUpdates.toPython(): self.lastCheckedForUpdates = QDateTime.fromString(self.config["lastCheckedForUpdates"],'yyyy-MM-dd HH-mm-ss') if self.lastCheckedForUpdates is None: @@ -1672,7 +1670,7 @@ class MainWindow(QtWidgets.QMainWindow): settings.endGroup() settings = QSettings("Syncplay", "Interface") settings.beginGroup("Update") - settings.setValue("lastChecked", self.lastCheckedForUpdates) + settings.setValue("lastCheckedQt", self.lastCheckedForUpdates) settings.endGroup() settings.beginGroup("PublicServerList") if self.publicServerList: @@ -1699,7 +1697,7 @@ class MainWindow(QtWidgets.QMainWindow): settings.endGroup() settings = QSettings("Syncplay", "Interface") settings.beginGroup("Update") - self.lastCheckedForUpdates = settings.value("lastChecked", None) + self.lastCheckedForUpdates = settings.value("lastCheckedQt", None) settings.endGroup() settings.beginGroup("PublicServerList") self.publicServerList = settings.value("publicServers", None) From 4dff204747dab237adfa3a5eb44e89bf5058566a Mon Sep 17 00:00:00 2001 From: alby128 Date: Sun, 8 Oct 2017 16:05:08 +0200 Subject: [PATCH 08/85] Fixed listTreeView.header auto-resize on Qt.py --- syncplay/ui/gui.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index 330aee6..d3b7a6f 100755 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -658,15 +658,24 @@ class MainWindow(QtWidgets.QMainWindow): self.listTreeView.setFirstColumnSpanned(roomtocheck, self.listTreeView.rootIndex(), True) roomtocheck += 1 self.listTreeView.header().setStretchLastSection(False) - self.listTreeView.header().setResizeMode(0, QtWidgets.QHeaderView.ResizeToContents) - self.listTreeView.header().setResizeMode(1, QtWidgets.QHeaderView.ResizeToContents) - self.listTreeView.header().setResizeMode(2, QtWidgets.QHeaderView.ResizeToContents) - self.listTreeView.header().setResizeMode(3, QtWidgets.QHeaderView.ResizeToContents) + if IsPySide2: + self.listTreeView.header().setSectionResizeMode(0, QtWidgets.QHeaderView.ResizeToContents) + self.listTreeView.header().setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents) + self.listTreeView.header().setSectionResizeMode(2, QtWidgets.QHeaderView.ResizeToContents) + self.listTreeView.header().setSectionResizeMode(3, QtWidgets.QHeaderView.ResizeToContents) + if IsPySide: + self.listTreeView.header().setResizeMode(0, QtWidgets.QHeaderView.ResizeToContents) + self.listTreeView.header().setResizeMode(1, QtWidgets.QHeaderView.ResizeToContents) + self.listTreeView.header().setResizeMode(2, QtWidgets.QHeaderView.ResizeToContents) + self.listTreeView.header().setResizeMode(3, QtWidgets.QHeaderView.ResizeToContents) NarrowTabsWidth = self.listTreeView.header().sectionSize(0)+self.listTreeView.header().sectionSize(1)+self.listTreeView.header().sectionSize(2) if self.listTreeView.header().width() < (NarrowTabsWidth+self.listTreeView.header().sectionSize(3)): self.listTreeView.header().resizeSection(3,self.listTreeView.header().width()-NarrowTabsWidth) else: - self.listTreeView.header().setResizeMode(3, QtWidgets.QHeaderView.Stretch) + if IsPySide2: + self.listTreeView.header().setSectionResizeMode(3, QtWidgets.QHeaderView.Stretch) + if IsPySide: + self.listTreeView.header().setResizeMode(3, QtWidgets.QHeaderView.Stretch) self.listTreeView.expandAll() except: pass From 8975b83eb8246eca886feeb4db906d8ed30cfc40 Mon Sep 17 00:00:00 2001 From: alby128 Date: Sun, 8 Oct 2017 16:40:56 +0200 Subject: [PATCH 09/85] Removed unneeded DLLs from packed binaries for Windows --- .appveyor.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.appveyor.yml b/.appveyor.yml index 93beaf2..96706d4 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -23,7 +23,9 @@ init: install: - cmd: cd c:\projects\syncplay - cmd: python buildPy2exe.py + - cmd: del C:\projects\syncplay\syncplay_v1.5.0\lib\api-* - cmd: del C:\projects\syncplay\syncplay_v1.5.0\lib\DNSAPI.dll + - cmd: del C:\projects\syncplay\syncplay_v1.5.0\lib\IPHLPAPI.dll - cmd: del C:\projects\syncplay\syncplay_v1.5.0\lib\MPR.dll - cmd: mkdir C:\projects\syncplay\syncplay_v1.5.0\platforms - cmd: copy C:\Miniconda\envs\syncplay\library\plugins\platforms\qwindows.dll C:\projects\syncplay\syncplay_v1.5.0\platforms\ From e5ac86802168e22dcf2d8f0a320c97993792e7a7 Mon Sep 17 00:00:00 2001 From: alby128 Date: Sun, 8 Oct 2017 19:26:40 +0200 Subject: [PATCH 10/85] Improved About menu appeareance on Windows --- syncplay/ui/gui.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index d3b7a6f..8c92ff7 100755 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -100,7 +100,9 @@ class AboutDialog(QtWidgets.QDialog): if sys.platform.startswith('darwin'): self.setWindowTitle("") else: - self.setWindowTitle("About Syncplay") + self.setWindowTitle("About Syncplay") + if sys.platform.startswith('win'): + self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint) nameLabel = QtWidgets.QLabel("
Syncplay
") nameLabel.setFont(QtGui.QFont("Helvetica", 20)) linkLabel = QtWidgets.QLabel("
syncplay.pl
") @@ -1436,9 +1438,6 @@ class MainWindow(QtWidgets.QMainWindow): # Help menu window.helpMenu = QtWidgets.QMenu(getMessage("help-menu-label"), self) - - window.about = window.helpMenu.addAction("&About") - window.about.triggered.connect(self.openAbout) window.userguideAction = window.helpMenu.addAction(QtGui.QPixmap(self.resourcespath + 'help.png'), getMessage("userguide-menu-label")) @@ -1446,6 +1445,14 @@ class MainWindow(QtWidgets.QMainWindow): window.updateAction = window.helpMenu.addAction(QtGui.QPixmap(self.resourcespath + 'application_get.png'), getMessage("update-menu-label")) window.updateAction.triggered.connect(self.userCheckForUpdates) + + if not sys.platform.startswith('darwin'): + window.helpMenu.addSeparator() + window.about = window.helpMenu.addAction(QtGui.QPixmap(self.resourcespath + 'syncplay.png'), + 'About Syncplay') + else: + window.about = window.helpMenu.addAction("&About") + window.about.triggered.connect(self.openAbout) window.menuBar.addMenu(window.helpMenu) if not sys.platform.startswith('darwin'): From cecb710e2c1ee08d78dfe44c07bc699733db99d8 Mon Sep 17 00:00:00 2001 From: Etoh Date: Thu, 12 Oct 2017 12:36:15 +0100 Subject: [PATCH 11/85] Hopefully fix error when adding file in Unicode non-media directory (#135) --- syncplay/client.py | 1 + 1 file changed, 1 insertion(+) diff --git a/syncplay/client.py b/syncplay/client.py index 772be2a..251c323 100644 --- a/syncplay/client.py +++ b/syncplay/client.py @@ -1845,5 +1845,6 @@ class FileSwitchManager(object): return if self.isDirectoryInList(directoryToFind, self.mediaDirectories): return + directoryToFind = unicode(directoryToFind) self._client.ui.showErrorMessage(getMessage("added-file-not-in-media-directory-error").format(directoryToFind)) self.mediaDirectoriesNotFound.append(directoryToFind) From 8936b071f397a518766b9205c87b981cd7ed924b Mon Sep 17 00:00:00 2001 From: alby128 Date: Fri, 13 Oct 2017 15:32:11 +0200 Subject: [PATCH 12/85] Added multilanguage support in the About dialog --- syncplay/messages_de.py | 8 ++++++++ syncplay/messages_en.py | 8 ++++++++ syncplay/messages_ru.py | 8 ++++++++ syncplay/ui/gui.py | 12 ++++++------ 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py index c35603f..db8c07e 100644 --- a/syncplay/messages_de.py +++ b/syncplay/messages_de.py @@ -282,6 +282,14 @@ de = { "help-menu-label" : u"&Hilfe", "userguide-menu-label" : u"&Benutzerhandbuch öffnen", "update-menu-label" : u"auf &Aktualisierung prüfen", + + #About dialog - TODO: Translate + "about-menu-label": u"&About Syncplay", + "about-dialog-title": u"About Syncplay", + "about-dialog-release": u"Version {} release {} on {}", + "about-dialog-license-text" : u"Licensed under the Apache License, Version 2.0", + "about-dialog-license-button": u"License", + "about-dialog-dependencies": u"Dependencies", "setoffset-msgbox-label" : u"Offset einstellen", "offsetinfo-msgbox-label" : u"Offset (siehe http://syncplay.pl/guide/ für eine Anleitung [Englisch]):", diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py index 768193a..a42e241 100644 --- a/syncplay/messages_en.py +++ b/syncplay/messages_en.py @@ -282,6 +282,14 @@ en = { "help-menu-label" : "&Help", "userguide-menu-label" : "Open user &guide", "update-menu-label" : "Check for &update", + + #About dialog + "about-menu-label": u"&About Syncplay", + "about-dialog-title": u"About Syncplay", + "about-dialog-release": u"Version {} release {} on {}", + "about-dialog-license-text" : u"Licensed under the Apache License, Version 2.0", + "about-dialog-license-button": u"License", + "about-dialog-dependencies": u"Dependencies", "setoffset-msgbox-label" : "Set offset", "offsetinfo-msgbox-label" : "Offset (see http://syncplay.pl/guide/ for usage instructions):", diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py index 9746c17..2717876 100644 --- a/syncplay/messages_ru.py +++ b/syncplay/messages_ru.py @@ -284,6 +284,14 @@ ru = { "help-menu-label" : u"&Помощь", "userguide-menu-label" : u"&Руководство пользователя", "update-menu-label" : u"Проверить &обновления", + + #About dialog - TODO: Translate + "about-menu-label": u"&About Syncplay", + "about-dialog-title": u"About Syncplay", + "about-dialog-release": u"Version {} release {} on {}", + "about-dialog-license-text" : u"Licensed under the Apache License, Version 2.0", + "about-dialog-license-button": u"License", + "about-dialog-dependencies": u"Dependencies", "setoffset-msgbox-label" : u"Установить смещение", "offsetinfo-msgbox-label" : u"Смещение (см. инструкцию на странице www.syncplay.pl/guide):", diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index 8c92ff7..989f17e 100755 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -100,15 +100,15 @@ class AboutDialog(QtWidgets.QDialog): if sys.platform.startswith('darwin'): self.setWindowTitle("") else: - self.setWindowTitle("About Syncplay") + self.setWindowTitle(getMessage("about-dialog-title")) if sys.platform.startswith('win'): self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint) nameLabel = QtWidgets.QLabel("
Syncplay
") nameLabel.setFont(QtGui.QFont("Helvetica", 20)) linkLabel = QtWidgets.QLabel("
syncplay.pl
") linkLabel.setOpenExternalLinks(True) - versionLabel = QtWidgets.QLabel("
Version v" + version + " release " + release_number + " on " + __binding__ + "
") - licenseLabel = QtWidgets.QLabel("

Copyright © 2017 Syncplay

Licensed under the Apache License, Version 2.0

") + versionLabel = QtWidgets.QLabel("
" + getMessage("about-dialog-release").format(version, release_number, __binding__) + "
") + licenseLabel = QtWidgets.QLabel("

Copyright © 2017 Syncplay

" + getMessage("about-dialog-license-text") + "

") aboutIconPixmap = QtGui.QPixmap(self.resourcespath + u"syncplay.png") aboutIconLabel = QtWidgets.QLabel() aboutIconLabel.setPixmap(aboutIconPixmap.scaled(120, 120, Qt.KeepAspectRatio)) @@ -118,11 +118,11 @@ class AboutDialog(QtWidgets.QDialog): aboutLayout.addWidget(linkLabel, 1, 2, 1, 2) aboutLayout.addWidget(versionLabel, 2, 2, 1, 2) aboutLayout.addWidget(licenseLabel, 3, 2, 1, 2) - licenseButton = QtWidgets.QPushButton("License") + licenseButton = QtWidgets.QPushButton(getMessage("about-dialog-license-button")) licenseButton.setAutoDefault(False) licenseButton.clicked.connect(self.openLicense) aboutLayout.addWidget(licenseButton, 4, 2) - dependenciesButton = QtWidgets.QPushButton("Dependencies") + dependenciesButton = QtWidgets.QPushButton(getMessage("about-dialog-dependencies")) dependenciesButton.setAutoDefault(False) dependenciesButton.clicked.connect(self.openDependencies) aboutLayout.addWidget(dependenciesButton, 4, 3) @@ -1449,7 +1449,7 @@ class MainWindow(QtWidgets.QMainWindow): if not sys.platform.startswith('darwin'): window.helpMenu.addSeparator() window.about = window.helpMenu.addAction(QtGui.QPixmap(self.resourcespath + 'syncplay.png'), - 'About Syncplay') + getMessage("about-menu-label")) else: window.about = window.helpMenu.addAction("&About") window.about.triggered.connect(self.openAbout) From ad68e980276a5e832c539305ed85fc4f1c9e8410 Mon Sep 17 00:00:00 2001 From: Etoh Date: Sun, 15 Oct 2017 10:14:40 +0100 Subject: [PATCH 13/85] Upver to release 40 --- syncplay/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syncplay/__init__.py b/syncplay/__init__.py index af7090d..d06a5e0 100644 --- a/syncplay/__init__.py +++ b/syncplay/__init__.py @@ -1,4 +1,4 @@ version = '1.5.0' milestone = 'Yoitsu' -release_number = '39' +release_number = '40' projectURL = 'http://syncplay.pl/' From 846d7f7536f75356d8df98fe8d228a7a14271f00 Mon Sep 17 00:00:00 2001 From: alby128 Date: Sun, 15 Oct 2017 12:36:52 +0200 Subject: [PATCH 14/85] Rewind video when manually changing playlist selection (#138) --- syncplay/ui/gui.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index 989f17e..9e83630 100755 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -577,9 +577,9 @@ class MainWindow(QtWidgets.QMainWindow): pathFound = self._syncplayClient.fileSwitch.findFilepath(firstFile) if not isURL(firstFile) else None if self._syncplayClient.userlist.currentUser.file is None or firstFile <> self._syncplayClient.userlist.currentUser.file["name"]: if isURL(firstFile): - menu.addAction(QtGui.QPixmap(resourcespath + u"world_go.png"), getMessage("openstreamurl-menu-label"), lambda: self.openFile(firstFile)) + menu.addAction(QtGui.QPixmap(resourcespath + u"world_go.png"), getMessage("openstreamurl-menu-label"), lambda: self.openFile(firstFile,resetPosition=True)) elif pathFound: - menu.addAction(QtGui.QPixmap(resourcespath + u"film_go.png"), getMessage("openmedia-menu-label"), lambda: self.openFile(pathFound)) + menu.addAction(QtGui.QPixmap(resourcespath + u"film_go.png"), getMessage("openmedia-menu-label"), lambda: self.openFile(pathFound,resetPosition=True)) if pathFound: menu.addAction(QtGui.QPixmap(resourcespath + u"folder_film.png"), getMessage('open-containing-folder'), @@ -697,11 +697,11 @@ class MainWindow(QtWidgets.QMainWindow): if self._isTryingToChangeToCurrentFile(filename): return if isURL(filename): - self._syncplayClient._player.openFile(filename) + self._syncplayClient._player.openFile(filename, resetPosition=True) else: pathFound = self._syncplayClient.fileSwitch.findFilepath(filename, highPriority=True) if pathFound: - self._syncplayClient._player.openFile(pathFound) + self._syncplayClient._player.openFile(pathFound, resetPosition=True) else: self._syncplayClient.ui.showErrorMessage(getMessage("cannot-find-file-for-playlist-switch-error").format(filename)) From 32882ee7eeb076bb5329c8bb35df78c01247f290 Mon Sep 17 00:00:00 2001 From: alby128 Date: Sun, 15 Oct 2017 17:11:36 +0200 Subject: [PATCH 15/85] Fixes VLC close issue on macOS (#83) --- syncplay/constants.py | 1 + syncplay/players/vlc.py | 22 +++++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/syncplay/constants.py b/syncplay/constants.py index 69a1123..7b4b3f3 100644 --- a/syncplay/constants.py +++ b/syncplay/constants.py @@ -172,6 +172,7 @@ MPV_SLAVE_ARGS_NEW = ['--term-playing-msg=\nANS_filename=${f MPV_NEW_VERSION = False VLC_SLAVE_ARGS = ['--extraintf=luaintf', '--lua-intf=syncplay', '--no-quiet', '--no-input-fast-seek', '--play-and-pause', '--start-time=0'] +VLC_SLAVE_OSX_ARGS = ['--verbose=2', '--no-file-logging'] VLC_SLAVE_NONOSX_ARGS = ['--no-one-instance', '--no-one-instance-when-started-from-file'] MPV_SUPERSEDE_IF_DUPLICATE_COMMANDS = ["no-osd set time-pos ", "loadfile "] MPV_REMOVE_BOTH_IF_DUPLICATE_COMMANDS = ["cycle pause"] diff --git a/syncplay/players/vlc.py b/syncplay/players/vlc.py index f3571ab..c1228a0 100644 --- a/syncplay/players/vlc.py +++ b/syncplay/players/vlc.py @@ -20,8 +20,10 @@ class VlcPlayer(BasePlayer): RE_ANSWER = re.compile(constants.VLC_ANSWER_REGEX) SLAVE_ARGS = constants.VLC_SLAVE_ARGS - if not sys.platform.startswith('darwin'): - SLAVE_ARGS.extend(constants.VLC_SLAVE_NONOSX_ARGS) + if sys.platform.startswith('darwin'): + SLAVE_ARGS.extend(constants.VLC_SLAVE_OSX_ARGS) + else: + SLAVE_ARGS.extend(constants.VLC_SLAVE_NONOSX_ARGS) vlcport = random.randrange(constants.VLC_MIN_PORT, constants.VLC_MAX_PORT) if (constants.VLC_MIN_PORT < constants.VLC_MAX_PORT) else constants.VLC_MIN_PORT def __init__(self, client, playerPath, filePath, args): @@ -381,7 +383,12 @@ class VlcPlayer(BasePlayer): playerController._client.ui.showErrorMessage( getMessage("media-player-error").format(line), True) break - self.__process.stderr = None + if not sys.platform.startswith('darwin'): + self.__process.stderr = None + else: + vlcoutputthread = threading.Thread(target = self.handle_vlcoutput, args=()) + vlcoutputthread.setDaemon(True) + vlcoutputthread.start() threading.Thread.__init__(self, name="VLC Listener") asynchat.async_chat.__init__(self) self.set_terminator("\n") @@ -427,6 +434,15 @@ class VlcPlayer(BasePlayer): asynchat.async_chat.handle_close(self) self.__playerController.drop(getMessage("vlc-failed-connection").format(constants.VLC_MIN_VERSION)) + def handle_vlcoutput(self): + out = self.__process.stderr + for line in iter(out.readline, ''): + if '[syncplay] core interface debug: removing module' in line: + self.__playerController.drop() + break + out.close() + + def found_terminator(self): self.vlcHasResponded = True self.__playerController.lineReceived("".join(self._ibuffer)) From 63f4d082d77849188ec8b174785190684e9df492 Mon Sep 17 00:00:00 2001 From: Etoh Date: Sun, 15 Oct 2017 12:48:01 +0100 Subject: [PATCH 16/85] Synchronize branch with origin/master --- syncplay/messages_de.py | 8 ++--- syncplay/messages_en.py | 10 +++--- syncplay/messages_ru.py | 8 ++--- syncplay/ui/GuiConfiguration.py | 56 ++++++++++++++++++++++++++++++--- 4 files changed, 64 insertions(+), 18 deletions(-) diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py index db8c07e..09d91a9 100644 --- a/syncplay/messages_de.py +++ b/syncplay/messages_de.py @@ -110,7 +110,7 @@ de = { "mpc-version-insufficient-error" : u"MPC-Version nicht ausreichend, bitte nutze `mpc-hc` >= `{}`", "mpv-version-error" : u"Syncplay ist nicht kompatibel mit dieser Version von mpv. Bitte benutze eine andere Version (z.B. Git HEAD).", "player-file-open-error" : u"Fehler beim Öffnen der Datei durch den Player", - "player-path-error" : u"Ungültiger Player-Pfad", + "player-path-error" : u"Ungültiger Player-Pfad. Supported players are: mpv, VLC, MPC-HC and mplayer2", # To do: Translate end "hostname-empty-error" : u"Hostname darf nicht leer sein", "empty-error" : u"{} darf nicht leer sein", # Configuration "media-player-error": u"Player-Fehler: \"{}\"", # Error line @@ -120,7 +120,7 @@ de = { "unable-to-start-client-error" : u"Client kann nicht gestartet werden", - "player-path-config-error": u"Player-Pfad ist nicht ordnungsgemäß gesetzt.", + "player-path-config-error": u"Player-Pfad ist nicht ordnungsgemäß gesetzt. Supported players are: mpv, VLC, MPC-HC and mplayer2.", # To do: Translate end "no-file-path-config-error": u"Es muss eine Datei ausgewählt werden, bevor der Player gestartet wird.", "no-hostname-config-error": u"Hostname darf nicht leer sein", "invalid-port-config-error" : u"Port muss gültig sein", @@ -181,7 +181,7 @@ de = { "media-setting-title" : u"Media-Player Einstellungen", "executable-path-label" : u"Pfad zum Media-Player:", - "media-path-label" : u"Pfad zur Datei:", + "media-path-label" : u"Pfad zur Datei:", # Todo: Translate to 'Path to video (optional)' "player-arguments-label" : u"Playerparameter:", "browse-label" : u"Durchsuchen", "update-server-list-label" : u"Liste aktualisieren", @@ -321,7 +321,7 @@ de = { "room-tooltip" : u"Der Raum, der betreten werden soll, kann ein x-beliebiger sein. Allerdings werden nur Clients im selben Raum synchronisiert.", "executable-path-tooltip" : u"Pfad zum ausgewählten, unterstützten Mediaplayer (MPC-HC, VLC, mplayer2 or mpv).", - "media-path-tooltip" : u"Pfad zum wiederzugebenden Video oder Stream. Notwendig für mpv und mplayer2.", + "media-path-tooltip" : u"Pfad zum wiederzugebenden Video oder Stream. Notwendig für mplayer2.", # TODO: Confirm translation "player-arguments-tooltip" : u"Zusätzliche Kommandozeilenparameter / -schalter für diesen Mediaplayer.", "mediasearcdirectories-arguments-tooltip" : u"Verzeichnisse, in denen Syncplay nach Mediendateien suchen soll, z.B. wenn du das Click-to-switch-Feature verwendest. Syncplay wird rekursiv Unterordner durchsuchen.", # TODO: Translate Click-to-switch? (or use as name for feature) diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py index a42e241..c267bed 100644 --- a/syncplay/messages_en.py +++ b/syncplay/messages_en.py @@ -109,7 +109,7 @@ en = { "mpc-version-insufficient-error" : "MPC version not sufficient, please use `mpc-hc` >= `{}`", "mpv-version-error" : "Syncplay is not compatible with this version of mpv. Please use a different version of mpv (e.g. Git HEAD).", "player-file-open-error" : "Player failed opening file", - "player-path-error" : "Player path is not set properly", + "player-path-error" : "Player path is not set properly. Supported players are: mpv, VLC, MPC-HC and mplayer2", "hostname-empty-error" : "Hostname can't be empty", "empty-error" : "{} can't be empty", # Configuration "media-player-error": "Media player error: \"{}\"", # Error line @@ -119,7 +119,7 @@ en = { "unable-to-start-client-error" : "Unable to start client", - "player-path-config-error": "Player path is not set properly", + "player-path-config-error": "Player path is not set properly. Supported players are: mpv, VLC, MPC-HC and mplayer2.", "no-file-path-config-error" :"File must be selected before starting your player", "no-hostname-config-error": "Hostname can't be empty", "invalid-port-config-error" : "Port must be valid", @@ -179,7 +179,7 @@ en = { "media-setting-title" : "Media player settings", "executable-path-label" : "Path to media player:", - "media-path-label" : "Path to media file:", + "media-path-label" : "Path to video (optional):", "player-arguments-label" : "Player arguments (if any):", "browse-label" : "Browse", "update-server-list-label" : u"Update list", @@ -320,8 +320,8 @@ en = { "password-tooltip" : "Passwords are only needed for connecting to private servers.", "room-tooltip" : "Room to join upon connection can be almost anything, but you will only be synchronised with people in the same room.", - "executable-path-tooltip" : "Location of your chosen supported media player (MPC-HC, VLC, mplayer2 or mpv).", - "media-path-tooltip" : "Location of video or stream to be opened. Necessary for mpv and mplayer2.", + "executable-path-tooltip" : "Location of your chosen supported media player (mpv, VLC, MPC-HC or mplayer2).", + "media-path-tooltip" : "Location of video or stream to be opened. Necessary for mplayer2.", "player-arguments-tooltip" : "Additional command line arguments / switches to pass on to this media player.", "mediasearcdirectories-arguments-tooltip" : u"Directories where Syncplay will search for media files, e.g. when you are using the click to switch feature. Syncplay will look recursively through sub-folders.", diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py index 2717876..cf1952b 100644 --- a/syncplay/messages_ru.py +++ b/syncplay/messages_ru.py @@ -110,7 +110,7 @@ ru = { "mpc-version-insufficient-error" : u"Версия MPC слишком старая, пожалуйста, используйте `mpc-hc` >= `{}`", "mpv-version-error" : u"Syncplay не совместим с данной версией mpv. Пожалуйста, используйте другую версию mpv (лучше свежайшую).", "player-file-open-error" : u"Проигрыватель не может открыть файл.", - "player-path-error" : u"Путь к проигрывателю задан неверно.", + "player-path-error" : u"Путь к проигрывателю задан неверно. Supported players are: mpv, VLC, MPC-HC and mplayer2.", # TODO: Translate last sentence "hostname-empty-error" : u"Имя пользователя не может быть пустым.", "empty-error" : u"{} не может быть пустым.", # Configuration "media-player-error" : u"Ошибка проигрывателя: \"{}\"", # Error line @@ -120,7 +120,7 @@ ru = { "unable-to-start-client-error" : u"Невозможно запустить клиент", - "player-path-config-error": u"Путь к проигрывателю установлен неверно", + "player-path-config-error": u"Путь к проигрывателю установлен неверно. Supported players are: mpv, VLC, MPC-HC and mplayer2", # To do: Translate end "no-file-path-config-error" : u"Файл должен быть указан до включения проигрывателя", "no-hostname-config-error": u"Имя сервера не может быть пустым", "invalid-port-config-error" : u"Неверный номер порта", @@ -181,7 +181,7 @@ ru = { "media-setting-title" : u"Воспроизведение", "executable-path-label" : u"Путь к проигрывателю:", - "media-path-label" : u"Путь к видеофайлу:", + "media-path-label" : u"Путь к видеофайлу:", # Todo: Translate to 'Path to video (optional)' "player-arguments-label" : u"Аргументы запуска проигрывателя:", "browse-label" : u"Выбрать", "update-server-list-label" : u"Обновить список", @@ -323,7 +323,7 @@ ru = { "room-tooltip" : u"Комната, в которую Вы попадете сразу после подключения. Синхронизация возможна только между людьми в одной и той же комнате.", "executable-path-tooltip" : u"Расположение Вашего видеопроигрывателя (MPC-HC, VLC, mplayer2 или mpv).", - "media-path-tooltip" : u"Расположение видеофайла или потока для просмотра. Обязательно для mpv и mplayer2.", + "media-path-tooltip" : u"Расположение видеофайла или потока для просмотра. Обязательно для mplayer2.", # TODO: Confirm translation "player-arguments-tooltip" : u"Передавать дополнительные аргументы командной строки этому проигрывателю.", "mediasearcdirectories-arguments-tooltip" : u"Папки, где Syncplay будет искать медиа файлы, включая подпапки.", diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py index 3f1b9f4..bdd85ea 100755 --- a/syncplay/ui/GuiConfiguration.py +++ b/syncplay/ui/GuiConfiguration.py @@ -92,6 +92,9 @@ class ConfigDialog(QtWidgets.QDialog): self.resetButton.show() self.playerargsTextbox.show() self.playerargsLabel.show() + self.mediapathTextbox.show() + self.mediapathLabel.show() + self.mediabrowseButton.show() self.runButton.show() self.saveMoreState(True) self.tabListWidget.setCurrentRow(0) @@ -103,6 +106,14 @@ class ConfigDialog(QtWidgets.QDialog): self.playerargsTextbox.hide() self.playerargsLabel.hide() self.runButton.hide() + if self.mediapathTextbox.text() == "": + self.mediapathTextbox.hide() + self.mediapathLabel.hide() + self.mediabrowseButton.hide() + else: + self.mediapathTextbox.show() + self.mediapathLabel.show() + self.mediabrowseButton.show() self.saveMoreState(False) self.stackedLayout.setCurrentIndex(0) newHeight = self.connectionSettingsGroup.minimumSizeHint().height()+self.mediaplayerSettingsGroup.minimumSizeHint().height()+self.bottomButtonFrame.minimumSizeHint().height()+3 @@ -113,7 +124,6 @@ class ConfigDialog(QtWidgets.QDialog): self.setFixedSize(self.sizeHint()) self.moreToggling = False self.setFixedWidth(self.minimumSizeHint().width()) - self.executablepathCombobox.setFixedWidth(self.mediapathTextbox.width()) def openHelp(self): self.QtGui.QDesktopServices.openUrl(QUrl("http://syncplay.pl/guide/client/")) @@ -430,6 +440,9 @@ class ConfigDialog(QtWidgets.QDialog): self.executablepathCombobox.setEditText(dropfilepath) else: self.mediapathTextbox.setText(dropfilepath) + self.mediapathTextbox.show() + self.mediapathLabel.show() + self.mediabrowseButton.show() def processWidget(self, container, torun): for widget in container.children(): @@ -529,8 +542,12 @@ class ConfigDialog(QtWidgets.QDialog): if self.publicServers: i = 0 for publicServer in self.publicServers: - self.hostCombobox.addItem(publicServer[1]) - self.hostCombobox.setItemData(i, publicServer[0], Qt.ToolTipRole) + serverTitle = publicServer[0] + serverAddressPort = publicServer[1] + self.hostCombobox.addItem(serverAddressPort) + self.hostCombobox.setItemData(i, serverTitle, Qt.ToolTipRole) + if not serverAddressPort in self.publicServerAddresses: + self.publicServerAddresses.append(serverAddressPort) i += 1 self.hostCombobox.setEditable(True) self.hostCombobox.setEditText(host) @@ -554,6 +571,8 @@ class ConfigDialog(QtWidgets.QDialog): self.usernameTextbox.setObjectName("name") self.serverpassLabel.setObjectName("password") self.serverpassTextbox.setObjectName("password") + self.hostCombobox.editTextChanged.connect(self.updatePasswordVisibilty) + self.hostCombobox.currentIndexChanged.connect(self.updatePasswordVisibilty) self.defaultroomLabel.setObjectName("room") self.defaultroomTextbox.setObjectName("room") @@ -581,11 +600,12 @@ class ConfigDialog(QtWidgets.QDialog): self.executableiconImage = QtGui.QImage() self.executableiconLabel = QLabel(self) self.executableiconLabel.setMinimumWidth(16) + self.executableiconLabel.setAlignment(Qt.AlignRight | Qt.AlignVCenter) self.executablepathCombobox = QtWidgets.QComboBox(self) self.executablepathCombobox.setEditable(True) self.executablepathCombobox.currentIndexChanged.connect(self.updateExecutableIcon) self.executablepathCombobox.setEditText(self._tryToFillPlayerPath(config['playerPath'], playerpaths)) - self.executablepathCombobox.setFixedWidth(165) + self.executablepathCombobox.setFixedWidth(250) self.executablepathCombobox.editTextChanged.connect(self.updateExecutableIcon) self.executablepathLabel = QLabel(getMessage("executable-path-label"), self) @@ -1008,7 +1028,6 @@ class ConfigDialog(QtWidgets.QDialog): def showEvent(self, *args, **kwargs): self.ensureTabListIsVisible() self.setFixedWidth(self.minimumSizeHint().width()) - self.executablepathCombobox.setFixedWidth(self.mediapathTextbox.width()) def clearGUIData(self, leaveMore=False): settings = QSettings("Syncplay", "PlayerList") @@ -1040,8 +1059,25 @@ class ConfigDialog(QtWidgets.QDialog): for server in self.publicServers: self.hostCombobox.addItem(server[1]) self.hostCombobox.setItemData(i, server[0], Qt.ToolTipRole) + if not server[1] in self.publicServerAddresses: + self.publicServerAddresses.append(server[1]) i += 1 self.hostCombobox.setEditText(currentServer) + + def updatePasswordVisibilty(self): + if (self.hostCombobox.currentText() == "" and self.serverpassTextbox.text() == "") or unicode(self.hostCombobox.currentText()) in self.publicServerAddresses: + self.serverpassLabel.hide() + self.serverpassTextbox.hide() + self.serverpassTextbox.setText("") + else: + self.serverpassLabel.show() + self.serverpassTextbox.show() + newHeight = self.connectionSettingsGroup.minimumSizeHint().height()+self.mediaplayerSettingsGroup.minimumSizeHint().height()+self.bottomButtonFrame.minimumSizeHint().height()+3 + if self.error: + newHeight += self.errorLabel.height()+3 + self.stackedFrame.setFixedHeight(newHeight) + self.adjustSize() + self.setFixedSize(self.sizeHint()) def __init__(self, config, playerpaths, error, defaultConfig): self.config = config @@ -1051,6 +1087,7 @@ class ConfigDialog(QtWidgets.QDialog): self.config['resetConfig'] = False self.subitems = {} self.publicServers = None + self.publicServerAddresses = [] self._playerProbeThread = GetPlayerIconThread() self._playerProbeThread.done.connect(self._updateExecutableIcon) @@ -1100,6 +1137,14 @@ class ConfigDialog(QtWidgets.QDialog): self.playerargsTextbox.hide() self.playerargsLabel.hide() self.runButton.hide() + if self.mediapathTextbox.text() == "": + self.mediapathTextbox.hide() + self.mediapathLabel.hide() + self.mediabrowseButton.hide() + else: + self.mediapathTextbox.show() + self.mediapathLabel.show() + self.mediabrowseButton.show() newHeight = self.connectionSettingsGroup.minimumSizeHint().height()+self.mediaplayerSettingsGroup.minimumSizeHint().height()+self.bottomButtonFrame.minimumSizeHint().height()+3 if self.error: newHeight +=self.errorLabel.height()+3 @@ -1124,3 +1169,4 @@ class ConfigDialog(QtWidgets.QDialog): self.processWidget(self, lambda w: self.loadValues(w)) self.processWidget(self, lambda w: self.connectChildren(w)) self.populateEmptyServerList() + self.updatePasswordVisibilty() \ No newline at end of file From d2afd13c249599c67ab726a8bc9ef711c0bdde10 Mon Sep 17 00:00:00 2001 From: alby128 Date: Tue, 17 Oct 2017 10:35:26 +0200 Subject: [PATCH 17/85] Changed default order of bindings in Qt.py --- syncplay/ui/__init__.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/syncplay/ui/__init__.py b/syncplay/ui/__init__.py index f0c4c02..74885ff 100644 --- a/syncplay/ui/__init__.py +++ b/syncplay/ui/__init__.py @@ -1,3 +1,9 @@ +import os +if "QT_PREFERRED_BINDING" not in os.environ: + os.environ["QT_PREFERRED_BINDING"] = os.pathsep.join( + ["PySide2", "PySide", "PyQt5", "PyQt4"] + ) + try: from syncplay.ui.gui import MainWindow as GraphicalUI except ImportError: From f1a4b959bd2651eb339d1634a88010e0b55a609b Mon Sep 17 00:00:00 2001 From: Etoh Date: Mon, 16 Oct 2017 23:37:41 +0100 Subject: [PATCH 18/85] Add 30px GuiConfig tab list padding --- syncplay/constants.py | 1 + syncplay/ui/GuiConfiguration.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/syncplay/constants.py b/syncplay/constants.py index 7b4b3f3..81bee71 100644 --- a/syncplay/constants.py +++ b/syncplay/constants.py @@ -55,6 +55,7 @@ SYNC_ON_PAUSE = True # Client seek to global position - subtitles may disappear PLAYLIST_MAX_CHARACTERS = 10000 PLAYLIST_MAX_ITEMS = 250 MAXIMUM_TAB_WIDTH = 350 +TAB_PADDING = 30 # Maximum character lengths (for client and server) MAX_CHAT_MESSAGE_LENGTH = 50 # Number of displayed characters diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py index bdd85ea..6fc8afd 100755 --- a/syncplay/ui/GuiConfiguration.py +++ b/syncplay/ui/GuiConfiguration.py @@ -1002,7 +1002,7 @@ class ConfigDialog(QtWidgets.QDialog): self.tabListWidget.addItem(QtWidgets.QListWidgetItem(QtGui.QIcon(self.resourcespath + u"cog.png"),getMessage("misc-label"))) self.tabListLayout.addWidget(self.tabListWidget) self.tabListFrame.setLayout(self.tabListLayout) - self.tabListFrame.setFixedWidth(self.tabListFrame.minimumSizeHint().width()) + self.tabListFrame.setFixedWidth(self.tabListFrame.minimumSizeHint().width() + constants.TAB_PADDING) self.tabListWidget.setStyleSheet(constants.STYLE_TABLIST) self.tabListWidget.currentItemChanged.connect(self.tabChange) From 6868741d448aa1a900fd8d8157d0f4833d609067 Mon Sep 17 00:00:00 2001 From: Etoh Date: Tue, 17 Oct 2017 00:24:48 +0100 Subject: [PATCH 19/85] Don't wipe password when joining public server (but only send passwords to private servers) --- syncplay/__init__.py | 2 +- syncplay/client.py | 17 ++++++++++++++++- syncplay/ui/ConfigurationGetter.py | 6 ++++-- syncplay/ui/GuiConfiguration.py | 2 +- 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/syncplay/__init__.py b/syncplay/__init__.py index d06a5e0..8ed6730 100644 --- a/syncplay/__init__.py +++ b/syncplay/__init__.py @@ -1,4 +1,4 @@ version = '1.5.0' milestone = 'Yoitsu' -release_number = '40' +release_number = '41' projectURL = 'http://syncplay.pl/' diff --git a/syncplay/client.py b/syncplay/client.py index 251c323..0cbbedf 100644 --- a/syncplay/client.py +++ b/syncplay/client.py @@ -92,6 +92,8 @@ class SyncplayClient(object): if config['password']: config['password'] = hashlib.md5(config['password']).hexdigest() self._serverPassword = config['password'] + self._host = u"{}:{}".format(config['host'],config['port']) + self._publicServers = config["publicServers"] if not config['file']: self.__getUserlistOnLogon = True else: @@ -634,7 +636,20 @@ class SyncplayClient(object): self.userlist.showUserList() def getPassword(self): - return self._serverPassword + if self.thisIsPublicServer(): + return "" + else: + return self._serverPassword + + def thisIsPublicServer(self): + self._publicServers = [] + if self._publicServers and self._host in self._publicServers: + return True + i = 0 + for server in constants.FALLBACK_PUBLIC_SYNCPLAY_SERVERS: + if server[1] == self._host: + return True + i += 1 def setPosition(self, position): if self._lastPlayerUpdate: diff --git a/syncplay/ui/ConfigurationGetter.py b/syncplay/ui/ConfigurationGetter.py index aeb282d..a176f98 100755 --- a/syncplay/ui/ConfigurationGetter.py +++ b/syncplay/ui/ConfigurationGetter.py @@ -62,7 +62,8 @@ class ConfigurationGetter(object): "showSameRoomOSD" : True, "showNonControllerOSD" : False, "showContactInfo" : True, - "showDurationNotification" : True + "showDurationNotification" : True, + "publicServers" : [] } self._defaultConfig = self._config.copy() @@ -115,6 +116,7 @@ class ConfigurationGetter(object): "perPlayerArguments", "mediaSearchDirectories", "trustedDomains", + "publicServers", ] self._numeric = [ @@ -137,7 +139,7 @@ class ConfigurationGetter(object): "autoplayInitialState", "mediaSearchDirectories", "sharedPlaylistEnabled", "loopAtEndOfPlaylist", "loopSingleFiles", - "onlySwitchToTrustedDomains", "trustedDomains"], + "onlySwitchToTrustedDomains", "trustedDomains","publicServers"], "gui": ["showOSD", "showOSDWarnings", "showSlowdownOSD", "showDifferentRoomOSD", "showSameRoomOSD", "showNonControllerOSD", "showDurationNotification"], diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py index 6fc8afd..8db063e 100755 --- a/syncplay/ui/GuiConfiguration.py +++ b/syncplay/ui/GuiConfiguration.py @@ -411,6 +411,7 @@ class ConfigDialog(QtWidgets.QDialog): self.config['file'] = os.path.abspath(self.mediapathTextbox.text()) else: self.config['file'] = unicode(self.mediapathTextbox.text()) + self.config['publicServers'] = self.publicServerAddresses self.pressedclosebutton = False self.close() @@ -1068,7 +1069,6 @@ class ConfigDialog(QtWidgets.QDialog): if (self.hostCombobox.currentText() == "" and self.serverpassTextbox.text() == "") or unicode(self.hostCombobox.currentText()) in self.publicServerAddresses: self.serverpassLabel.hide() self.serverpassTextbox.hide() - self.serverpassTextbox.setText("") else: self.serverpassLabel.show() self.serverpassTextbox.show() From 323a0790b63a4fa2cd42f381bac2c42b9d584eb5 Mon Sep 17 00:00:00 2001 From: Etoh Date: Wed, 18 Oct 2017 22:35:27 +0100 Subject: [PATCH 20/85] Fix UI glitches and make password disabled rather than hidden on public servers --- syncplay/__init__.py | 2 +- syncplay/ui/GuiConfiguration.py | 33 +++++++++++++++++++++------------ syncplay/ui/gui.py | 1 + 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/syncplay/__init__.py b/syncplay/__init__.py index 8ed6730..5ec7ad5 100644 --- a/syncplay/__init__.py +++ b/syncplay/__init__.py @@ -1,4 +1,4 @@ version = '1.5.0' milestone = 'Yoitsu' -release_number = '41' +release_number = '42' projectURL = 'http://syncplay.pl/' diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py index 8db063e..6c6e5d4 100755 --- a/syncplay/ui/GuiConfiguration.py +++ b/syncplay/ui/GuiConfiguration.py @@ -397,6 +397,8 @@ class ConfigDialog(QtWidgets.QDialog): self.config["mediaSearchDirectories"] = utils.convertMultilineStringToList(self.mediasearchTextEdit.toPlainText()) self.config["trustedDomains"] = utils.convertMultilineStringToList(self.trusteddomainsTextEdit.toPlainText()) + if self.serverpassTextbox.isEnabled(): + self.config['password'] = self.serverpassTextbox.text() self.processWidget(self, lambda w: self.saveValues(w)) if self.hostCombobox.currentText(): self.config['host'] = self.hostCombobox.currentText() if ":" in self.hostCombobox.currentText() else self.hostCombobox.currentText() + ":" + unicode(constants.DEFAULT_PORT) @@ -444,6 +446,13 @@ class ConfigDialog(QtWidgets.QDialog): self.mediapathTextbox.show() self.mediapathLabel.show() self.mediabrowseButton.show() + if not self.showmoreCheckbox.isChecked(): + newHeight = self.connectionSettingsGroup.minimumSizeHint().height() + self.mediaplayerSettingsGroup.minimumSizeHint().height() + self.bottomButtonFrame.minimumSizeHint().height() + 3 + if self.error: + newHeight += self.errorLabel.height() + 3 + self.stackedFrame.setFixedHeight(newHeight) + self.adjustSize() + self.setFixedSize(self.sizeHint()) def processWidget(self, container, torun): for widget in container.children(): @@ -564,6 +573,7 @@ class ConfigDialog(QtWidgets.QDialog): self.defaultroomTextbox = QLineEdit(self) self.usernameLabel = QLabel(getMessage("name-label"), self) self.serverpassTextbox = QLineEdit(self) + self.serverpassTextbox.setText(self.storedPassword) self.defaultroomLabel = QLabel(getMessage("room-label"), self) self.hostLabel.setObjectName("host") @@ -571,7 +581,7 @@ class ConfigDialog(QtWidgets.QDialog): self.usernameLabel.setObjectName("name") self.usernameTextbox.setObjectName("name") self.serverpassLabel.setObjectName("password") - self.serverpassTextbox.setObjectName("password") + self.serverpassTextbox.setObjectName(constants.LOAD_SAVE_MANUALLY_MARKER + "password") self.hostCombobox.editTextChanged.connect(self.updatePasswordVisibilty) self.hostCombobox.currentIndexChanged.connect(self.updatePasswordVisibilty) self.defaultroomLabel.setObjectName("room") @@ -1067,17 +1077,15 @@ class ConfigDialog(QtWidgets.QDialog): def updatePasswordVisibilty(self): if (self.hostCombobox.currentText() == "" and self.serverpassTextbox.text() == "") or unicode(self.hostCombobox.currentText()) in self.publicServerAddresses: - self.serverpassLabel.hide() - self.serverpassTextbox.hide() + self.serverpassTextbox.setDisabled(True) + self.serverpassTextbox.setReadOnly(True) + if self.serverpassTextbox.text() != "": + self.storedPassword = self.serverpassTextbox.text() + self.serverpassTextbox.setText("") else: - self.serverpassLabel.show() - self.serverpassTextbox.show() - newHeight = self.connectionSettingsGroup.minimumSizeHint().height()+self.mediaplayerSettingsGroup.minimumSizeHint().height()+self.bottomButtonFrame.minimumSizeHint().height()+3 - if self.error: - newHeight += self.errorLabel.height()+3 - self.stackedFrame.setFixedHeight(newHeight) - self.adjustSize() - self.setFixedSize(self.sizeHint()) + self.serverpassTextbox.setEnabled(True) + self.serverpassTextbox.setReadOnly(False) + self.serverpassTextbox.setText(self.storedPassword) def __init__(self, config, playerpaths, error, defaultConfig): self.config = config @@ -1121,6 +1129,7 @@ class ConfigDialog(QtWidgets.QDialog): self.mainLayout.setSpacing(0) self.mainLayout.setContentsMargins(0,0,0,0) + self.storedPassword = self.config['password'] self.addBasicTab() self.addReadinessTab() self.addSyncTab() @@ -1130,6 +1139,7 @@ class ConfigDialog(QtWidgets.QDialog): self.mainLayout.addWidget(self.stackedFrame, 0, 1) self.addBottomLayout() + self.updatePasswordVisibilty() if self.getMoreState() == False: self.tabListFrame.hide() @@ -1169,4 +1179,3 @@ class ConfigDialog(QtWidgets.QDialog): self.processWidget(self, lambda w: self.loadValues(w)) self.processWidget(self, lambda w: self.connectChildren(w)) self.populateEmptyServerList() - self.updatePasswordVisibilty() \ No newline at end of file diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index 9e83630..ecff2b1 100755 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -396,6 +396,7 @@ class MainWindow(QtWidgets.QMainWindow): self.readyPushButton.setEnabled(False) if not featureList["chat"]: self.chatFrame.setEnabled(False) + self.chatInput.setReadOnly(True) if not featureList["sharedPlaylists"]: self.playlistGroup.setEnabled(False) From 2703daa76a01187def83abae3be560cf6a009d9a Mon Sep 17 00:00:00 2001 From: alby128 Date: Thu, 19 Oct 2017 21:49:01 +0200 Subject: [PATCH 21/85] Corrected syntax bug in openAddMediaDirectoryDialog --- syncplay/ui/gui.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index ecff2b1..b3e2c86 100755 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -1046,11 +1046,11 @@ class MainWindow(QtWidgets.QMainWindow): @needsClient def openAddMediaDirectoryDialog(self, MediaDirectoriesTextbox, MediaDirectoriesDialog): - if sys.platform.startswith('darwin'): + if sys.platform.startswith('darwin') and IsPySide: options = QtWidgets.QFileDialog.Options(QtWidgets.QFileDialog.ShowDirsOnly | QtWidgets.QFileDialog.DontUseNativeDialog) else: options = QtWidgets.QFileDialog.Options(QtWidgets.QFileDialog.ShowDirsOnly) - folderName = unicode(QtGui.QFileDialog.getExistingDirectory(self,None,self.getInitialMediaDirectory(includeUserSpecifiedDirectories=False),options)) + folderName = unicode(QtWidgets.QFileDialog.getExistingDirectory(self,None,self.getInitialMediaDirectory(includeUserSpecifiedDirectories=False),options)) if folderName: existingMediaDirs = MediaDirectoriesTextbox.toPlainText() From f883e4696aae8ea58c7c64969eb2ac9121482d3e Mon Sep 17 00:00:00 2001 From: Etoh Date: Thu, 19 Oct 2017 18:45:40 +0100 Subject: [PATCH 22/85] Remove debug code from server --- syncplay/__init__.py | 2 +- syncplay/server.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/syncplay/__init__.py b/syncplay/__init__.py index 5ec7ad5..c36fc87 100644 --- a/syncplay/__init__.py +++ b/syncplay/__init__.py @@ -1,4 +1,4 @@ version = '1.5.0' milestone = 'Yoitsu' -release_number = '42' +release_number = '43' projectURL = 'http://syncplay.pl/' diff --git a/syncplay/server.py b/syncplay/server.py index 399325a..4ce44a0 100644 --- a/syncplay/server.py +++ b/syncplay/server.py @@ -397,7 +397,6 @@ class Watcher(object): reactor.callLater(0.1, self._scheduleSendState) def setFile(self, file_): - print file_ if file_ and file_.has_key("name"): file_["name"] = truncateText(file_["name"],constants.MAX_FILENAME_LENGTH) self._file = file_ From d3e9a98d68d26777889100778ca2eae59e9205ad Mon Sep 17 00:00:00 2001 From: Alberto Sottile Date: Tue, 24 Oct 2017 17:54:02 +0200 Subject: [PATCH 23/85] Include Apache 2.0 license via GitHub --- LICENSE | 201 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8dada3e --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. From 764ace69cb6939847c2f34b7ab4f57a1884a67c0 Mon Sep 17 00:00:00 2001 From: alby128 Date: Sat, 21 Oct 2017 00:27:49 +0200 Subject: [PATCH 24/85] Added background-guide image and README in macOS dmg --- .travis.yml | 2 ++ appdmg.py | 16 ++++++++-------- resources/macOS_dmg_bkg.tiff | Bin 0 -> 64666 bytes resources/macOS_readme.pdf | Bin 0 -> 892792 bytes resources/macos_vlc_install.command | 2 +- 5 files changed, 11 insertions(+), 9 deletions(-) create mode 100644 resources/macOS_dmg_bkg.tiff create mode 100644 resources/macOS_readme.pdf diff --git a/.travis.yml b/.travis.yml index 7196646..d31d61c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,6 +37,8 @@ before_deploy: - pip install dmgbuild - mkdir dist_dmg - mv resources/macos_vlc_install.command resources/.macos_vlc_install.command +- mv resources/lua/intf/syncplay.lua resources/lua/intf/.syncplay.lua +- mv resources/macOS_readme.pdf resources/.macOS_readme.pdf - dmgbuild -s appdmg.py "Syncplay" dist_dmg/Syncplay-qtpy-pyside2.dmg deploy: diff --git a/appdmg.py b/appdmg.py index 58112cf..3e2dc8c 100644 --- a/appdmg.py +++ b/appdmg.py @@ -27,10 +27,10 @@ compression_level = 9 size = defines.get('size', None) # Files to include -files = [ application, 'resources/lua/intf/syncplay.lua', 'resources/.macos_vlc_install.command' ] +files = [ application, 'resources/lua/intf/.syncplay.lua', 'resources/.macos_vlc_install.command', 'resources/.macOS_readme.pdf' ] # Symlinks to create -symlinks = { 'Applications': '/Applications', 'Install in VLC': '.macos_vlc_install.command' } +symlinks = { 'Applications': '/Applications', 'Install for VLC': '.macos_vlc_install.command', 'Read Me': '.macOS_readme.pdf' } # Volume icon # @@ -43,10 +43,10 @@ badge_icon = icon_from_app(application) # Where to put the icons icon_locations = { - appname: (80, 80), - 'Applications': (280, 80), - 'syncplay.lua': (80, 240), - 'Install in VLC': (280, 240) + appname: (150, 110), + 'Applications': (450, 110), + 'Read Me': (100, 285), + 'Install for VLC': (500, 285) } # .. Window configuration ...................................................... @@ -71,7 +71,7 @@ icon_locations = { # # Other color components may be expressed either in the range 0 to 1, or # as percentages (e.g. 60% is equivalent to 0.6). -background = '#bacbe0' +background = 'resources/macOS_dmg_bkg.tiff' show_status_bar = False show_tab_view = False @@ -81,7 +81,7 @@ show_sidebar = False sidebar_width = 180 # Window position in ((x, y), (w, h)) format -window_rect = ((100, 100), (360, 400)) +window_rect = ((100, 100), (600, 460)) # Select the default view; must be one of # diff --git a/resources/macOS_dmg_bkg.tiff b/resources/macOS_dmg_bkg.tiff new file mode 100644 index 0000000000000000000000000000000000000000..9ead2f6ee09fa1005e25a100c21ce74e9d8b7bb7 GIT binary patch literal 64666 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 XDK1(!Gl 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\*M;TOccP?5yF#W?`och81u{ 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 { zb@y*0%A3kr?@_8nB4MHRi!pTMbOUTCLMP(BH$6?AOi7)r;yq>su`C&;#S2e^x#eO|V@Mf@FQ6J$72}uFXN90D5)j^-I@d%}L4$#sm5M%|n6}2Lvd&z|Mgz~SC?*5=#gdjf@UC#Z1FSF!dixqm@yqx zs@1g1pRjO!R%I`~wj#&(GIB!3zxbV!tB)$|F zKT9Lj{Ss%ZpeK|AG!MG*P&ru_^M^Y%%`Bdy%Iw8EJ+8gIIX;VY2V1@!cT0{%sw zc&RS6g34o!{GfB^fAE8o4E~G(ljFbTfy3?JSqwwd7CJ7N`oR$zM=lKSh}4WSrA z6U!!$YT;z00-aE|NX~Z*fMjO^SSmi~9GtEfRnGYup|hVeNbrKLsdn#&|EYZ+Ui0z8 zTgpg~#d^gp+GoiOQpGjo_+s5+xQdBEb`h^G;=gTXCv^Ebn+G@v^!tDoxq|XejN9;% zyf@-I7RM>b-XZ76v<^EkHwEr3=(AVYQ9Jv6O!s=L|2&D9^Ki1}`rE!mNFJkeW zig@*`afi%=u**)@aO1I+m2s4+lt=9+Mx2y>qECF*&~|NZC8Itce!b8~REa}8*`&&f zti#scH9WBG;93zdNER_t&;LuA{*PLg5|m|}7hY45U)I`C9M@hIHDijI*T+Ihx#f%Z zJA;3hMjvnMON&%-ss{_Ml9N<%S_UjW|K?hP8}Ao4pSxurOR+(AHRfbqJlmS`gxJJx zkK2*Nsk#P&)dB9{W@NX<&LL=@n)CRq7a+Q=?6Fpp74h(|t+Nkkb{wELpMQM6N|d9& zn+=!K>{XlTCwZPw)Y&YruJIXaPQS_J{iBBOJ@Bd6>*Bck)DXBWm7gkz>sa6W5;FHTFDS(feWFqsA^Aor~>hV2#O0z zxQuobj5N_scN~`ma^~2*E1mh}jBPNwIkP(ii3EaqA7As23yqWf{pikL-THR+B{_P~ zUJt={jYQ#*h3#F>KQ5Qk3fVbEYB$r?yWS3-RhGenuo8buR4YsWD9cV^i(f!k@tj)J z<@MvQ_>Qy*e<>_-1kA%gBoMIUl=+UcQi~kSjEN3Eg^5reyimyP*D=RWK3T2KK#jWi z02mw_T$|wlmm}2rST!`5U!B{{^VXdIo|tkoirzF;4?)?+#kR0W_f`ED%_Df8Pe-n5 z36)JQRD)taU#FP`hzHsX0XoZ6m-;MFGXT3?-<@w#L0&y281C)15*}I^E5+YCq*__p z+R;9X^AONU2fov0EQecwVcdM&mbg&fQLMvz;kCZ#zVH9t-rBX^T@I2&!&BswpR|0_ z4kcT{+DI)3yr9wKka}*EG7Okv42xP48xx+)gNCl3w5E}xw!+oMtvW9Ngk(g%j-`v| zOKXA5e{4%3(fEC$x)s*iQ|X%zrJrOGs>x7LgjlC8Oxl2|a&DW}R7Y4k+r(Sl>g&A- zVYJqfL^{jdnhTu3bza>~VZ&9y#d+?HO&&3^Cj03>$DyIw1kyYPn4;o>vcC}eZ}c@A zmwqtTB_KF#=QsdKQ1H{`nX~aTbIo+p z1J(_r?EUZXToI&|~0(muf@~Izz77f%*{h8anCuXn%Kd`1Pk4SaP+X zJcnDxNNh5=^2gjQ|3`htiH4H*wz4#1CBK({qW1zrRYyG7$-{u>L>9w-HvScu^<({! z3)4cS)h0|4pN_>tV#h;HjTo-kT*SV1(2N{qg|i0@$3whBXP}~dig&C`bsq}wLB$}N zFA7c{|H!ydP7LN7FafZ;2B_l^hayde8){d5FqDBWo{@Z zvQn=3$u=1tb;NdIiT%%NK@86;Gfa!p?X6T`MA9!LTzeO=L&RWT3TItuSYp zM@FxEa;9c|LN;V=o(MMg%X8+JrqilboErlcwW39HAYeBe-K&%I-*1YOuUWJ%WWsK^ zbze`Lq%n;#!3Si*XPj_lZt0wWt63k5rV8(GkdCS*!kz$F@9dk zvjZ{!;B<17tggCj96~G9K+j$+nLqYzsIXAv)n@aUgZ%@O-OX8D-sA3a_?yfAb8vg` zj`8b(cX062@f*xz_w20T4YFGC=6Y}_zR?@x+4eGKb5`8)xP!PZ+c1kqMP;N~i{9QH z*#N&jKNsPBD@p`66eQRbS8!`h>-~j#F%SQXJ_@~#lmdP6d-qKw3~qK8h@%^FvQ2RU zEY-se5d*j$O?4g`i~jyzvdC&*9^%W8&RF9=8{oF|a@`D=T$niy93=h)Gz#5$+n?e@ z8Lu9A-k3e7LAa8fBSn2kAD-3w(ugX+6otlyoNb+@{@zAjSE2F)MwGl4fd566b^Qr4yy)jRKQ7DzmR7HX8fZdONmyCw4mJbDuOwiCw5? z^q9uK2&^hH4Vu}<9xMu$)R;P(g0Hud=pob*ko`N7Lh)p)gNJbMN&hYMe}1`jNM9ZE zyp@2EfE(3xz2J*L<>4a=+r!a8OIv;fu*XISa1#UKY{GI6FMT`SL2C=BO%XZLFf{g)}xr zPVzko%h#((fJnZ1rgTl{)=4uFM~Cl+F6FV$l`ZLeV$sGdIWWJOfRxpJ?SO%xK!2mF zsg6Zy$`=!Ox8o%Lsh~jg?f!T6QgN20FcRH>fK^=nz zfU8YdlFm=^DPo@L(|N=fAR6J8^kifErI`@>-dI z{K^G#-Pw*1ruW8@tN|4>aYLMW4R7?J*eS96KKHSRF0$3=!csM1@D-o-eg`r*P}M!% z=|Q#jf!SeZ-fv2A*QoCZp}Pyizy(F@${_G6zuTSckK&<`%iSn)?Mw;j=$Zb~%spD7 zWcw>ku+*0hn)i6`w7t9xtl~9)53TAAD}MVJ5Xr<$7S_ZrZxLyN{FUo3?5`WG4zr$F zVBb6_nP1Z5?9<=aFj zLh_`M22@QM5XYR zSi9qI*x{qdbTme2&^gT3fTfh;LhF}0co3n=-&XJe+mD7KMbWm zRgop}EU3Wv#5c zv-|S)h-7_^9DQ?ne*N%zTM+-3rvwoZyqjpXhn>Mcbvs4;gWm*vfo)%}=-jEJr4mzF zP@LbB(h@_t>d`sybqRTS?CX-|%D6)jwL~=KWNgpZcHf)?Q3{yGGFS@4@`NsDnULwO zR3zuzwr>Ku-dOB{IOdFlU4H`1l6cDssHeJD3q2f#Po``pZt{(^t@1ex;@i9hwzu3y z27gK>^`85}Y`W`BM1zlhQCx|)2WonqOqD|fEJ*6!uII{B_SFsxMcNL2M>y0P^RJ`m zzUT(`qvreScWQd-rNyt%C6I?H9|dBvh$&YaG+FGLXxUU0qJoxBM_SfuThvkL8m#$Xb0kH_ZT{e^WTDf zxn4=t9T$9yhUx#QW^pXYhDmj6I52qT-4KDnV6`}LClEb@QSpuf;2(8oP$S|WQyER}fWJ{AJ$M<{4rqK!ERD?|?_mHOS466WTvfLcip zfCqSqunA{|NnFU_W{IucJ|Z13sbLzv;r|I^yNn<>&hgMq1jXL}o4x<7x9W$J9N~E( zKQ9TwhysdLcxU0H{>Dme)y7!X-#y6P(ekn* z)?_YIn-`ygegBQ&#ezlxe^cb1P8fFo;pN2IL)FW@l<5mrA})VsOVI?2u@g|i#iUV? zYImRZlI=eb+Pz;gzQbqwF#a8&7c49S`3XmZh`943Qsfyq%CaY>yz&RbFvLJtuKGYM zTi3{Jw1)@VZ->w5*UeORwn9AI9^R&JPvcSIhT^wZ_WQ1F2Nl{=&xg0NL$yJ!yT>@w z1p}js@^*ZO8ZyJ&8c>DVGK9~zlV+|n?|>0`K+?wd7Rbx!r&J5&MRMv@v34NBN@m?q z7$>IWr{Nl=X$w3g1Ps%MkEKjqpSRJ;V&!p_`TqNc4!VbWqgt!)-~`BaGBRt<+H<0= zqK&FbzX!RHUVN7PD$}wJ{!@Y##~X2pF^DXSH(;g+;zSy)zj9H<4L}|RM3iCg+Jxy= zf5jG}Z?k;AZC*r;LYf385+E9EA+A22+mQMDv~jbt^3c-88AyYRB`?pDmA~i^i%Q~m zt|&K37bv2Hhn5Ef{y|}!1MC7|i)0rp!Sk`-r}9f%I3pGZxM!}ZetbnjD*Ns%$|(~D zIOLMnox`;fX3R?Y;v6QWeo8;6Xfs2Sg^svQTSOEc$!hC@iPs-S6aAYAonPT6qcncM zBBE|TRy-b&GwctoV_ob*_0tB$UPn63&Bmb z&pJvkCaw*i`QKTTDFGSK=u_g`K2o#u0!)bh#1?oDrU+=EOSB-s9q#VQz38&*862Ca z(YvEw8)Qf@w*VfKw7MCo|8k_huL_01GmOgGIM^X$ler1+K)ya#-2uoO@64RV8BVg+RUIW0J-N9rAJu|dwcMwnon~xpyt?fh z+HI}CrKZ*nRPii1VZU!mO4fk!pKL$EC$VaLAH(k9hR+UmV}W05ycUgEf0=_^w+Qz( z#RK+n&cvP{f5LmyFBET=uP?@iVoy&|OFggG`N2U)j}HYMs|1wZ6&$|vnT=fBuvT`%P8R6w{BDz zls9`TR)CI4Lk_W#UY%lne;cP1U9tB;$xI0Ms4aC_?QQ6zPY>HCLq$uwB$Iv^nROkZpz&_M$kPFT?KxgJlOCY z{oEX|uTk#KHQr4>F^qexRlmx`VPeg00oXLu?deQ65-D}sRBH>`t#RBZD__}$oQ$Bi z-Jrw#z8i=kYU4N?267{PH{zdG1h&?R`M6RsmA4F6Ya=d=6Sw z?k&7cn=DXIYE8Q?-A3Q=%5-nPQrx3E71dRsu1O>lApxj4oH2O;Y69Lx#98Pr$QS52 zz>FaTm|_wKm_9>xS%6~@HG)&>Ua`o$q4B^)kX#YuL(oOgq~j0u~w_&u|m z_%dZ>D8>u%awnj#8eKVE&MDy1zY35(>nV3)CI9?eEdI*RKgaJ63hg#FjQe0L#RL_k z-ftHNmAS861J;FSU?acTdq}G8|7bo{&)<>p~^o$N!nxI)> zMQnbCF*m(Tn_)!*73^1#6<`MXA;1Y(1xX5071SHNvQy;>WJU8=IJF1*LaHh*t`s#^ z0?1q>WL1(7Z%&Mdu~;fiC_x=WL3&ZW0egtr_f}V*9Uiov{>vK|K~{hB z;Ko0^eGBvRi>H5uUqxnS54H57S07FC*%>vd@n&dNp@`!l&q-7N3TF8 z=utGaj(a>v?{g!6$Hzy)z+~IDq!g7wQ}aG=(#O5UF4V zZU)!cIuH?_jB5}ZYoK%RegIdr93GY*Ad15;g~A4)qHsm{ic5?_{BzK?fK?d$yTCK# zyFgY!%q+kabSfHLhi2vJo9YvYfHd*`U+JyxrLe85x~EXYO~K98Nt zW~e#L9A>zR#mHi!-91DajyQT4BJPBmfKRlg0ZawH!j-_4y%!5_#XW$E*n;*!j>`^j zsCP&UMh^o+77`)F4S;HQxFj$vB_K4J-uMS41FmqW5M^0p9ib0l50DjvEKrs`h?NAg zLgorgMc@jnVIoraf;5zciUldE6tzK-SCX2A#qa04@A(qcIY;Q{M^`T+td#*n)8P zfDm|7@NO}bD-Y)|2v(G=Aaen(@JDD?U@8Zva2IzruI`>(+yJPkS_S0_k9hf@&ng;@ z=O$V0Mj3^MkQJj&$nO(J&ZZ=ukfv=AtWw@p<=ofjJu;}@E>_>M=3g((In$Z9*qSrm zrfXg9nm*D#gx|RaiVV{>OHY1ok3O$fsWwX$`N@g!^4f}va9XfenSP|wJfYX#o*G$c zYy4z&>A%1H!Pmd~`PW~4`t=td|JM)R`Ns!W|M1TBFP3I5_g4RKX{ud?yhXfPz)^|> z$viJ?Je>tofX1NaP6(IU`iPXc~JUj0wTRIh*H@4Exl#+55u^GxjOIm9A=y!>RI zQK-HfTwQi^a>T(vkQLlO4Ad%bPXHBkDo-29!D8ur?lkVr?22ThXV zXk>D*drr&eYTyY%yuuZ@1+@fNg~8c0Y6~VM7*mo=GP`Vr_oL0ID9R*>>&m=FoDD>b zs=u;z9PJ17otXJ{vc->tteX1pAkeF!w7#OC8dz1LDc5Q$bF#~+Y?YB|mMbl?Ofng& zip-p9kQH$Q^=&yto%tpttcFV~CrT>D%WB6v49Ho*3Iu4y#~V{57PYc2OIB8*wp!F>vn@mChWl>pnY=nVfau8Q>qmcc>(cMv zyZA|+UH|(>w?8>~^uy!JXT~PRYa3b&CWw<+DP^#a#iCNM3X^MOMwW(i zi^wTFQdC6(R3Y4A40s6>$SMfs6$L{q;+KX;8bf&{5qx7Prx@2TZV7IvhX}-?lm#M! zY=z2D3_dRmRiz-u(L;{(6GYuQ;A*RB0StygR*J->1o|+3K4d5wwZaWf0wP`ozQPSt zXk?1Y*kTi|WQ0aQ7l;l|4&xWluO#JFYC%#l3N!_FqAd`(k_lA=F^F14u?lZR9Ryuy zi2hQ#5C_T?gP~%CXM(2i)5KwAXGf*~;o8T}R?lF+Ca8D;F6bpCKeM3?`&^Q{H;I%u^H!#sJ5NcIY zKyV6VuHB&|mxY0HMdI%EjfCJU20LBASBSW>6p@U?*A?2fJi}6J+gfYOYD>dHdD&-2 z7nW;nx5v64jQ9QE(Db|01D_t$|$N2Zet!dEP(T?{V(#D4(@mD2qpC8%yM!hdtN|aJDnmh zyPO#qS8u+f8{5&H>FmL#cMyQ7Pxvud7*RFFVQzZ85o2ggkmPQn#=1GiS{KW zpU%j*nVJ0{C+D5)?6(Zs_l&ytO_~Q)dd!_V)oiDJ&y;0sv1V|lymqOj<3K}0uU_A$ z*NqyBDy5P-l>%6$Nlem9tBBP_3!@T z>%aW**FX9g^$VY$IC7xc^62o~2d7V+8lOlC3Bj&tmY0_>lo{@`+sDPn)xirsAmUYM zS|A;v_6~L&nZ#!eH4mS-{foxK@j$d%c{quDJQI99Q(y@Cxyuk@5BAdp@6N|C14}s} zCRUg^GNL>+x=$(#AV*;E3qf9Cas-_-n+;iJP)$^eFwpJP z))m-Oo9-T;^a+-epa2whEm~n2vgut0B}OFU+kV#5K>~QSG}+)5p)BdHLY2_BnU@__lNQ^zm)y%<1EgXYI`C$8&1!^b2$9)Eb%fXJ&nU zZGC<9nK`+7a=STkV%0t?Cr&&w$4{(0nd2+RpPjYiE6>c@%Gy)2y0-F)Sy@~8V`p_` z<;8i)yIo#e*=|;s*S=v^)>faL$L|N4m8Xk~mz%4*iz{df*>&Orx_SDe1Q;E_Zcwkh z-Q7JwRvKBQG^H#xp6m)Fa1~>~M2YnzUd7csJygqr8;F!U=|qYvNlq-oq^DS52&&U< zAS-=FImoIizX`c$n0+HPUErvFt^GI*h_VHc)!ydb$!cu$>jih!71vf3)*3ZdbAGih zw@R(DLbiftB~y_9Xi>6KsH>D3qFIsR1wCY|Zje=>b;w{DHdsfD)f2|*F-lfdjT1FZ z6Xi7nbq&KEjU#<6Bcm-t2(d2>OdTKFvpzI|J$)!%I6E+YX=D;)1#=LfHCtUF%HD=i2+fL+6&r1qBv!P^9`>8vVQQ>MrVC$) zl}3&VYFSL8Wr4>aJi<)Gw;07`S*fKaZDmtQJ-$sKtM`r_dhf_QnyfG&tFM3jgWo;6 z`}+^>{?kVfetUNVLe|F21ezH}s%rbJHSm1VF`F816bXvSju^3xEiB`ROl)2ei)(=E zM@&Fo2{>v~n?jV`{s`a-xJ4f4mW1<4DN}8wvw&5PyBcxtHHU;DBoP;0!Po-Y2;- zGa2kGFcoevTZjb-ivkseEBp~;pfZE>!oe_lzKodAPN8zP{#AbN!x5YmZ)6o24j8OVcK&Xp*qFCsiRr zC0x2n6rCQyvZPCOLP2$UsyRNURhhojSb^0)clJ&G_}q!VxO(w}l_OWD$9hes2AxhF z6>Z5>rALYcA&e03AjWQn-4OH#S)s^__NKxIL_Gz?Dul}1UGT->5UjG3l^fRFxF-5} zrw4c`Nb!PiPH0d;M0gR%3InndGAj}yo3ax7i!&yRB%{@;xf<16SMiCO%=rf8VspkJ zkky3t{A}WhNzt(b@$1V;=dUPkA7z|a3q7^scKmGMnX8P;_Y-bj6P>-Dbmmt2$y=%u z8;Zj}sJ?kYe)wwM@#VAwbBTNE{hI2-+HGMiS~r{Axh&Py6z^z^axIE5bG(X!u>0l z3UB%oGS%|x%5y_->#2WYJD_?@N1M2{y1e>|+2pt9{*`5DR=_G0FL=1Rxw*JfD-aH# zueYD4r1{n=7FgY&Vhdc7lSOPEx9KGIB7mM&HtAtnatBVdpZ)3VCc4FCadIMZ;)nnuZ`# z)rOOUHHPZCl158jWm#^8F1JRdv;wO(-9V)^Lupm0Y#=Lzt~N8TQCZNGUD&QI?EzU~ z3arD0w$ZYhNsv`p%?M5iR@9Gyte{!7v`s>@>a6dFW;KZgH(evJAWsgBp?Klcz}UIL ziOZu?7l$YCAJ63ulCv7HR5ccwZMrfvS>;LfY6&{raVe_R zAa1?of8idW6&68I3Iqb5jt~L@?VJKOD<3GrVUYu#7<@Nj=Gr^+%bH6Y_IHfk+&go2 zsQ1HTi@&~p@jpI!=dW*H{=0YX{PwL|fA`MK-@kX~ukT&@?98!`PcFmgSsomPe_E!g zf(n-$QxqdE!%;hyzzF4v8)>9u1r>+{s00v&tZb2mD=vpl1)5?-Sul8z6JuivOe~=p zZ^ae&82l9=+0&jNhzNW|PY6=73JuN1(DRSv6SPOxL00J0!Y58JlD*kp1(c#;Epla& zG6(AVfdF}8d<eL1y*6UG%KJKB`aL1U5>|uuKpuZ&LgN()|2VQRhy2 zM-hMz%fvM#RDmTsxI)FEQ7&A;SD-1t6%Y$IpeZO<_~ULy2Cxd_6D;uzO!5v&0ak5k zR*Z;7YNIWU+Q4$Q?%1DiLNLSv9{dowp_JMmU_6OW1+jZrLed#CC#kL z$xY3O3gdV?dV;L{eL~z_cVoK^mM3D}k9~_`0NN+OlgRla?GND&UkVg2P_puLjq!9z zz>XU~kBmS+704>YPZt)LALgg$hM71KRx!6GS=5{n(~%R`tBdO^j32aS%$U-qO(~N$ z$!uNf{E+Izq~^@B`szaJ>G8;ebApv)QR~a>6Kjn16M^e%{%hw#PT!8ZawqY^BhA%! zH0OWb{PtJ1cYZ$p@J9L3YnCG?b$ia19y**m+ZokV>{n!ER_cQ-3ZLR=r`+VAGLc^q z!&4XLp$T$Og*a;howNKMvwWQ7-i|VFr*xO^$6UYs@X1_xc>RUBapmFjv+?l8%jf3C z!|mq5&5Z}Qo|~%=us!f~=JwSGx3Av6eeF98HTYhA-8NFSY5(22c8AQ>r|0QXg{}J+ zO+fo9z}IsCzkLhn^IcW6z3OpT{Tm&??{56T?AtQ_Hm+QLoq1yaJ#7U(d;dD`XWQpE zJM6-KKrbZNJ-q-|)CYto2=U6()6*4D<&O1%9)zq?%TY*$=oEMf>;w~#jl3=sTW*zG zWQA7&ycQ$Yjwe95qRt?mk5_s4L6W#q619?8pjj2lZKj->+QL@Eg!)Y_I2(Ad6GF%2 z%D@cb>q|WoSkQc+ZDgptrPtPm0(Ov9c|mQF%AA{1rBs*|a#N-P61zo_RW8pe2Uex4 zE9BZ5U{zK@vzjcp>B%eW(;0h#RYjHK(5y^tW+%mE$Hk~&2%@eEh9Jl)8VUADb&OCW7HLF+Y`#DV*$P<2;bc;>qWTrC0&X@u zL2;xeB|2Xcg)qFfSYbwp9b`38)iG7mwXd=FSQmQN=KxojOH=d5M`o9Lr}wvvVQC=T zKuc~N+`z1q(lonZ1)4?vJO=xPBMa#o7tj>+8884j(Izwy&|>A`upT%nGSUzkRf2WH zqG(eTgc^Y!e+!xw+(0Oe(5zHxMxCsvD$mwlT6<}H1uol^;oF7WI>X3vL0W(%EDXn6W^MJr7kQFxy|Bwj|AXsi| zU=c#Lq7Ch+5(S}=qlGwBXiuj@jM}pNkZccTW`nG7B`J6IW=AUoE^$t%W6eTPC&VnI)6()yTwMka?n*gX`eyO;EtZ;>36&NUmAqdS1 zWJMF~^a?`|t{+4y>JL)Q3J(S`VOA2&3InVHUs0N(a7C~5{2(PO>IPEfipQ2lN6Hf; z({M1bQe(iuz^U@`qYd?QR@1f7{x4S#|8VUf$m-r?-^U9RC|)?(T8ZvZw2@yK>6@>y zjTnnNi%Ki9^9rPzWID?|1>g&8-kn!C2#Thoq$--EPfJ`bsRu!A7j!8C1WF_et`3Xtb zuBcB;)WybPazxSjaful$ZnS@JN;o@_$q@#J$Fqg0!bC<8)88xD-#g69BgDlum}J+T zP)0#^DdGlu1EJK>LzH&1BCS^F3xyj9vT}D$L=(Hej{8Xd#P$~_ja10?R>}6Z$`>c|&g{v%a5(GCyyW=)#FbOZtEW;g z-pssvUVQPA@WQFk6X(O%SN#s2=N&u2+y8#yr5{$`ddqP9vw?Gex%a`}FMass_|?m{ zg?IWcoV4tp%Nsl0u-dEWsZDOl3M)?DogeL=&-2dZ`RXFPwPBt)yInHQm@Wa z5zyKWr~p@69QEAIAA?m-?W}nwTlKPX_3fGJsWX6oGOT)vptfl0wNPqX1bX_xE!KMa z!S8nOylW?XK)@Bq3P6QwP6t>$)t=Ug{;EEZl{LS{n2QoVLROgy3x=ExB$|~?o?QvD zQfTU^W(7A;Q{1HmS(*Cv^R*4rm9@hb8`d#587!y?H7E*^vr;AJDicZd zI<_s7&44jkTV$0Gn@j4d#2R2#yjT|-ql*^jilQ`;f^30MjS-4+$h|-#6z1X@CDy?Z zj1g*)W0yqhu$|eUw3yYls=V5^0$W#6^-Oiw;kIEESe>7kzcO?1+}Qr(!+SxVll245 zB~8Yxa)ZKFsHjw;9$#XC$^;)4oe5FGB0d2L9cI%7v%jWq`C>RRhcJ>rfP|HS%Qr-d zN`-yQnvcS%(vd4Yus!-U99AiBY(Le{<(5jyV0}yF{@1?;n2( zEAT&m`2OEM-1z0jncqLU_tk}S3oUJ<)+&?6nwMe9lv+S~;#do0D{?$AA|IUwkgb45 zaQf`7Ul|Egu}i1}2!9ZWMRQh^vXHaF;K`V+qk`lJA!-nK2JjW2h(M10lLbtIrjV_o zgU!qM91$Voa`b#bF^5N1Dx>fdT!iNX$&i@BVra5zhlM3O`B1|MP4Pwp>fd zzeE9MkPthcqs5h`t?W_uY&_1w83e#mFala~lwX0MAXwoFk!tHo;R?#trVfVS7E6ts zJRKkwr7UU-;y#R#8N$d649f_>dg!1ucfSOrt$-X<(emGoGEq_N60K}xYyU6?3A`M_|I{!~}nur~YM{ZsGEO@OSvI5z+Jk=b9J zJ^JyHy>IOsy)@9a-qm=fud_8f%PN%@r7E)GWGVaPWW$CG-@vA4|)=!I1pJbmr%RPODed1o~#>33ZXJQV# zS9tDD-my!HeM^%1jl$8}<$E90ESxDB{q4$o|9<_ae{<&3kLGUnDqBbNLj#3l*-V2* zXh{vz#|Pzc{PLOJxxp@(fzEPYXQ}57iTln(=kL8hR^Y2mxO&1=TX02hHu;Lc)l26^ zpnCBUf>_VM)f0%?qN#0eo>#732cn*S&dU_4&BwnRQ`t8F+ItngTeZT*_KTIbme<(Z z6<*3zkFn|-dlgr@t#CFFhXv6S zile_ixr*BCjOt8TRa&wc0u)}jaqbLQ1rrdj1-K#~Ldgm~AXTdnUk8KXD#j~ylmTQV zi8G}o7*(m(T$v4IWyx)TW;IsX4Y-0}b+iwQ@MczfXCTgitguFKw!RPK&~0w3Ev&6B zs7HLgSZ&j4s^JEzve0K$ZpSLCR9TMrdWO0NWF^vrWZi7Lem0v1=5Afh+0JnGfBuQDqG0Q#PC=$K1%^B5X0pu zAy`qe!WCo%tO8SsMB3<>e59?AW5){P^teJqtnW+7tnOOu7+dY%gD(r3 zR8I}fo*0-t)-%1(J~rDtGE_TQp{p}$>I#%qDv2p0tsKTH!770PaVdNAIUy@R6zOrY z?`5XoCjg6;EXQ402XrEu^#H^Cl#eAtQ&$}@&@NI)HAwW(jB@jwI{&J4r?Spl(#2^dK* zj0CP8cZ!l6I|GXdNm~NCtq>c-kOVt+)-X{ipAWtQR$)YnY z)H>JU^hlm8S}2!@<&6a0RBq0ItAPAS=jOuI@a-RE`Yr6$C2~lsm#y(576l+J*MmibZi(SP7oK#6hs6txgi3KAR-3EUudXEib_H4JfJIGoGgz^i)Tg2qEk`@38D~g zR2ayL8SEA0XWwgsbGM8qIz}5XS>S zR-UfOZq7*_E~&_|gRB^Vg(2QrMrbjgT@J*G;nZX$_G%?Vh0+my>QI?{(kh>7%Q@7T zx^GBzY(#PNpz7q2tdj@Qj_r#+csTy(a@6wKxYO%`lN<5puf?9fAX+=YoxhxV_>Ow{ zntI{q9e3WZTl%({FkOR?#;-i&FP*ZfrMK z@85hZNo@mB+q~)Ct*iHLT_dyIvA$P4_zggH`|90iEx&KH{~%kvC{=B{v*zYYjsZSa zt6nKpJuU)$1y+3{P<>Oe=Q9Q$@LHb| zO9JpX#SZ|08(5~Ut;lWaC~2Ii?w@ZRKioY9vO3y5g}%@Ot%JxHfhb0*x@!t5tvXwE zF_s2a>D4$DSOu)gR#gzPQj|lml4aRIR`Q%$Oa@j5=C`N}9XW6VErW%XqlMMur8QHf zHIt_L8EfOTscr&ME9|&ItCiW-1G4IF90Xax4V-HqTppStf)(}#_6{z0bT7AbVo-ZH zYN;47TH6XuwRy(UEIoEH>*Yn%4U{M8P{2;y!00UG*pWFAMrI;sg)1T`@JawzI2eco zJ4`^36_b@gqgLdGmC4~`ao8$8AC_D$YB`Z(m&6pHj2*`V3p33&ZFP4^!*p%`Qt!;# zz}}UfNi?aR9NYu4I?z0{r*RnTZ@Mg9W;NNvsFRngrB?WNBw>Z~eQ@-6_#PF&{{l-8 z<%;CkiD?C$1STMBhjUDSb>qUm ztOy`+(Fvc2D>eRbr6wRy3QPqrGBUOjLrqBvS9mh1eXzTbq{5w*ySZn_-eCpA0^otB zAXU*pv>tqg=V0*F24W$~4h*AY#f->dGqGSOhy1p}LQ*l02v#f&x)-QaMXxBiqRm$j ztiV?^Pes%!jC}(&-XR^J9o|0%H+Gy>q6K1$wSZnwsDf~i5OH_=H6TPvG^=1NjFv*V z^1-fWY=Xuy!>|nS6+jE!@8}vu)fLt~hXkjh0s@qU5eXE8tYR}&NlLg~$U9D$%javV z&i4~`!iqpNu3sB$yU^VLKYxG_F;tg-R>Zlg_nY?I1Do~S7N43B4|kE zRx3r#x$&JjqBdjvKvn#Bzw%IT+QOt{VP3JkS8`}?+`&Df`31q^6933C=F*jzje<_A?o(r-6#zKWF^W zKW@uZ-yW-8i>bER0BBEDZCtxT=2dHyFK=8WbLD08Sf2V5n|-fjv*&2)6@Pp+Xl?#Q zX9q_&7Z+$#U@9coF<>fEX65eT=IZR~;so6aH(Amulxd^Mincz2ov3pGvcfOg)Dr|& z;g6(ko4?t&0GR?W&3J)Mh%+W7n50RB&18vXIg)a{yb79Cm97O#hX=|#hpg>0bpwDa zM6Hmpnr|JRYZ)4^?n1~4OYy3U8_EmoinUb**;W7*d_am->2mZfl!L5LW(CcP3>Ms= za-pOfRv;xSebtzudcpuVux7Hf-hM)`ejJ`)dEE$3`!&@K40cV9wU0ovLV_J@ppW+q zt#%C@@9xK(>KR<^>cvLp5wmTkzPZm-)u1<9G$qB#BJ6EZCg$Ww3KS{%@?@-FCQ&PN zFJMI=1S{mMNHr*G7Fg+I*fJKAWY-x?+0$f&g>HZ=CR54ds=1tO@D)5kM6FU|^3;+N zkQJ1=;qnd;6qYAK(>vTTer9y;Xy+LCbFO80wqa@_KuWX7 zO2G?*TmzdALJbTu3{Ci;-UkYEiyPlh}tWAs}-)q&SPkB;4wIqP$E8Y$X58&AX^cjiqHbCpjlC@0#I$i z6=gHZR|r#~1p+1`unky+)H-O2YF6}ydV+Ww+(7)Juo2PRPL2bh3(LM68iWJ30XRVz z-0Xz6!xhr?KrCGGG(ZInj?aB2W#MSiRp*+MGpT+Ba}Zu3fGQY)cKa24MVSg%g-&uxSy=l* zsz-ODZy_B6tik}RAYNg)GZqm>Fr;DOX>bF@kuotiIXfvkFIj0wmNsj&;-voUziP0&z@nvQ);4mx|K4LE<1EVW5}L z$6es#C3Zo)%9#(Qa&{Gv8#`GMf6$pvnTm23@dxb|p*v(Qlry+;C|{A|ghaFAV-U6S z@9MU&pCHbgN=KeXz?LhO&*xYvKt;;$n}cNiHL2rBc18$^JkK*-HHZ+(3|( zMSIVbbFIH{ZK-wRRM+v1!KHiChdw>FdU<&G(ZTu4gWYS*)r&Reneq}tQY_Y*T9w(k zu}O>|1~-h$V~QdI`PhmGtO^Md?+y?K1n`1`apm~=MEHA0?DmZa@D2;{V+P{JhvDlP z;^`WM{eZ5{0gl)Y=!{gAAH^zMX~>GYfxs%rR$DnMkQEYWj&HJ@93ovDMSv?0=Xl6g zNL%@M$^civ-noA6s?gnf?7KnQiXUO&gcyavrs#09Oi-^&>dBAqE=}sMm(C2S56>5$ zUeTYQNjP@fvCiVRSR zf^s;%iXfL1&z&(IZ^pRpigx%Ohj7%3^F+4V2B@|u>&BJ)PiEu(jqT=};p#D20j?hN z)%FmzEm_eApMk5ZcOgKL*}m=5{y2F8wkN;HQBObe+D!HB9Kahlu3X1le`daIs_L7t zYLlt9$EuCXSGJqW8<)46KbeH}3W)mdZ`!$I2i!ndff%P$=BV2j+Xmjtovfv%*GZgsdQ2U74Ikap+QO_gq8E zRBa>LnJP3T6?a8Jo9f&ncHomV+nNki%v#9FMm$x1TdRGqD$q2JmuXd!U5K7J6` zNet8eJ@ZY2dm8#@>WBNRU2UdL#MgD{=A3k^G>)iDBnW43vI1QICvX4|q=92`1g`jb z7(7l=>&RAd3&@s0WRQf#f+!=+S)nF0KGqZ;QUV zaUFIVrX`goCRlipC8U0nS%}qvq=}td8pc5iy)1%jf-T74;LKe)$chftte*ZOY(Xej zaOgldfGecmNp&X=E1t=w8(4uLD{|nGLEJ!K6+Tk}SFC)BRp3U1yD-FyL~)i~@1p8c z2p5b*mOfLmf-prBR=_ICRP+(mO%BsPy#gLb&0jbUII4A=?6RA6Yfe{hyx z5OP+V1NOrQNn>y1@F0`)LIAGta|E*DvUM0Ftezgbc%@}Uy9Ib5t#wu zcq^6!W%vb2z5FG(V$d}T@d{V6;t<;jv1l(e75fJ<@CSvFa!Eo?a&)F5R*@5z(VSn} zr7s>RESR^IUF>PQKH9m_*MftAa04Ii9r^P!$38hS^XKbFK3Up_1vf{VDi4OX>>TOlDRgk=xVXa#ru9LoiLp@^*W9AOTEvOI-26$s4=R-l(xlFx2U zKxhGjU%?bKi=ro^V-6)HoPistRKBazd|XucxuxWX6~&)}tZGZ%E7#o`C|=)Jd2XL& z-<-Ms&g7v-2M%BCAGkd;0qb+lqMxfMZdOSPq6J22sv#v+87Y#)B#POh1YuH)FgZAY z6B;N83yH;o9zTCUV35$qm+j}z_Hqvm^kI6thj_ULdwYhGigian57%H<$3RC%|2N)LC#)Yr}>t{>wZysy5#9(&|w_WE`8v9lTbk0uN+=k(mEIWQbsJRE13 z&#E|>Q+2Vb_rr<9iv=}PYU_IAct?iGmQV!QswCbR?~@kcED3f>WckU0-6USSV!Rw; zU3Ll`zQ?+D`N4Cu30m8UR9j57b@PO*C}q7AuI}C3cya9h;3iq!yLokUUO`Zg-vsCG zrL&1uTYUA@js0&u%}%ele-W#;)2YBz+hNs>jh8rpcBXoPte#-iv)gL6bpSV+>Q!ph z%cZLAfQnMqc1*PeTHhV6zB@9#;1zEFuACj6C|OYl&=uWQcC5liW^8A6c5=Yg#n~}4 ztwNS;K~M^C6)h@;(}WBUUIp-S5D}KWnGdlCuHawbbpgs1vQ@yU_}Eem$O@Vju8081 zlg+5cf@W2cRSnGw3tZZYn^4LGLiOS%!V%Cik&A4{HXxPW+qV}_dX!m43? zVz8E2R2&y=6!LMXvlK84va;xEM;Zp_I>+}` zSKin+^P`LFKfkp8uOHllYz0FQ@pYuF{`Cj%{O9NI;1L*t|MckoZy(&gJT-QpcM{)6 zt+Yg$YDrG83L>#aqzGpNQ5g!3A_*(5iNUw9BCSk;g^7Ei1wJ6I(6XLpD%=CKXsrE7 z;0o``z9kv*(Uu!X&phIjqGSbb#3u#WipMR)6(w36elf13O^aIyCy|jMOZT*IVAEiicK8KkLxMGB5Lm!4(g^(4<3Po5L_=%`)pkx&oqy$6} zjLOd2EsP2~6|doer$RJ+KOWS#)!B zF#JIb_TWTFvEMm@1z}bO6C6JUSffcwbTf5*rKW}Y+9919-Q$-B+U|_^e7G?6v=2#6fKch)6(uWr0}KOJ zA-nG3nSe8up8nasLBL~c1iz6l92G|&1X*QBQNaGLHs>RQ{uvN8sOSCy}i{R_@O6-tH3Y5CmL- ztZ+!s&s**1o9pkR3-T-Ag_}hYW@&6w3cp$}8?`7kuPt!r=fd}%h(2~zer_&gVlH&_qV&k6ti!kR*G_4N@7EpPms)j9 z+y2?aiHF^DhYRa2HxHk!A3Rw%c&cS$L|0#*ZmLW*o03e1=wfAT8Q(V}*eT9;XSDnG z1fIL1-9T2~--fL0pmqP+>yZ@@>lwJ(hOAx$suv!4%v7(0tCynGD=6!!H@yO)UVPJc z$0|Eh{qb0}EmPsaZ^EjVFx7Visx7jjH&6Hqkn;+wZhHiJO;Y-{PlFq{rCGrQB%YuX zfh#CikgDwe;|xPkE~!jUw5BCkpgW0$MHtj{BgTUPS>ZqR7+4j^fv_0}if9oOf!qN{ z32=q8|2S&~0R%78AS)~oL=C$^QC+O8vT7Tv@~RsO8&JvwTd>E}+-q*>x3!L-BecF3 z+4VMaTUl;-p~h;^Rw<<=a+xtL9eprl(xsNP3~Q>?oR(pes)!Fr6IR(pomnMa>ayNk z%K)%S2ePUfE2^Ee4~ep)j~!7fYt68^yszBS*;3OBvKpxC9Iflv)7o>ev3cl%jmO z8I@lqMKPFjvZfER)qLv+4AUc>ldJuE7uqMsst3DG9km5bcpAtGtFF=F4zj{mo;b61 zvO>fN=_w4&Aki0GT=AMqYMsL9!89#i=xH4RR2`I-1Djzc;#-XGV;rJZ(K=X@tz|8H zT1F?W*7sMA{q4Q$pB+E^hxhOP_Rb|pRnV;d{fF=U_m4jM|Gs$lKR$aKA@*NiKmXVF zuVc61V)rPt#~eu^K0N4PB4HVyU&iGlQiZ&_5t>yf+X&5y!80@XW{_1l&kWYWl@VzL zagm`nn`C7QR&qbO*BuPA+i zvVc_}C|7rpyO$UPClOc$%EHydJIc|W@9ZXY^+1_byt{k6zrWPOPvsY!7s@SXiCRHc za08LElBM5PDBj9ayj__8NxAVWbHT^W)-MN}f8JR3=y3bTvlSax#&2I8Iki~Xb+Wy0 zV|eVHefw^X^nt97)tLtJvi4M(aYC>nD+|2}+BBIoDlR=LA&DOs7YTDPG9(}pK44&w z$j^@t&C1i8>Fdh`S^0QkKVYb{D;Y=UU`I46pjyE(5I}{2a)m46RbVPy!BpS-GdvQo zV^;`fCzdjk?SXcza$+OFj3ST{7m780Fr>Df*BhAxI;_sOi;-5>&D!`X46XZvf zMTQzhI4T%iB8#dml@FDs^){>bG^UTt7>*q)Ie#E`ZGYzBiG-E6w7AIJJMPgp;M_Xs+B_Q6x)eV-5m$e=ZuNt{^XDt}yfb|A*T*0J?$QUBd-i{J z?9!u!Gna=JYf}n4vuiBzh1TS<>h#Lku&n6NEQWVVpi`{ZPNByDHbKe0E|K&1xz0OY zB&++^F5BmMvbuNu%Jy^P%Du<)v>|x!#>SJ`POy54uU;T4AlB>1Q%`}@%ed=BYI?;Z zF9H>P#Ua3$$2UJh~_$p+& za^(`{+j7w#|9nbTNUB4;LdXha1<=9`!7XQ3L&?feJ6T*mUD7a9+Aw2moGELXEo+=YYpAh$ zu)Jo-YVN2kYih7G_SLk5tY(_K4mWo~v%(f;3=ynax)z%{$I5HFOKl)4lNt#tUA81w zm84T7YOshoEj}A(14(>ctfIRDV+0CdRkTo=7^{>@v~p>_LRyI3H++r^aD~1FXjT|x zt_W5!71RwxIT-qjB9UXala(UTfDOw)ruzJgao{E0 zsvMh5gD+!EPP#cW#fZ}ZumV9=(5yfd)C~ky;Z>F9i>Qe4_+^*4X2`1(%ZyV%vRL2{ zei2+kXjasm!n*=l0g4Lc7E88yU)%UwOH1(h{{G>u-`qU^^=I#V{pI`r`pE;3)qnl? zqpyGQ`M-Vk_WyeC*6-fF_V*8Opp5<6%=mPDXP2n~A@%}QZE}oBz%Su&N|@}Da8@xi zE6P#S4TNUJ6_g`$MNo=JSmpG}7FA##YgSLl3UEdE%1%~KYgSui1=$K@h29A+g0cea zm@ei+xe}nK6swj|^F=f(`qznaMK>=~&FV2(0j^;GJuO%fxy;@h53(XdGw`fjSb-oJ zDh=TVUts_Yq$;9Qg=#{=wYx)d2wyR9fC^WCeMO2*SLAm?-jt zhI=p-KaJRyIr{o3zvheVudQKAWw}|XQyb( z)Fq9D<@K7p4vl8LyX|a8)0N(q>qG6>Zu8TVOFuie`suNGXjXtLkkzH`rjL%y9jU7V zhIMES#xzxdBu6JJL^~WOOcD_+2@Fj1_fK?pk8yPoQ?de6xq8Ilp8U}jniU}{C|3X~ zh*}tTcOVlLjFc4S;E703p;uW9{2rCTZ*?3W1 zk)nyjq*cc<7<*!HEf7N37Xv}(Vq4B{${_H~K?9J(8 z7y8F9_75%B)uCTvy{Qrn^GEBM?>sE zK}56i^Wy=oe0|v7-b^T09xkCyE+GJ_9XtJS1HO852T+PI6?Fp%O6?#`p)dr2Sa1Ws zw}TAe3VRZfV7Iq>Fdzx*_1tMOz$gA>TFR?wr7kl6`!6~9vn=bo=n@*FC3hWo1PYo9!!|q z%b!}{?_G{LxGbKZ4(K28Y#Rw|pJnxThS>&%jgu+u9YWi2)875s?$yf4&yUTI(z0u0ntFL&i&Fm#S?TMi zN*ia5O?xoFDpT_wRJaaRUM_}2w4?p=I6`u)u~!w71gYgW0b(EcyT5w7bsaFTLmjHQLK=sYZX#m zmb^fjUVwaiG+!y=$kDd|tfHAK#DHN4f~;T&a=1C@hlC-B9XGPXVvvx1#K4rdBdMrb%-0CgF;#1>>=`3st_3hbIyK4=7BhQYTlDXs)QV^(~A zm$efIIX7l!?=LRkRM+Px4*l-#rQbii`t^@L{I9P*{LimG_>V6>{Esi*Lk|NyLDaMV z>el6Vj~=)(w=`APi~0y02u&0lp;>{f!Wo8e7Ip~YtRE4kh(g6PvjkS2J4IR6k2i*y>6%c|%(;2xS9AFh3PYw&4dJH@^_zJjU09@H?AByqG0out}vA)rbhRJSMBB zH7mamyn^_C+Z}@&{3zi~cmke=v=wAw zC|95?z*T6l66YV$F#lL9gA17x7?ef6vn(Q4qK*|@hi^T;;~3oF!^78yRGXq1m8|L} z_sG=;Fx0-GcCxZ>Iow=&Xy3?#<0+vk7%Seh+W+rI# z83m;o+R2)RmCml4Gvk+f+uzwc_Os)Me{p8zlS6wyUtRoc<=_vF?s+snda1kd!-bjE zrmCg->KU`OPLb27D^*3yvXV6X@I+QWp7BzLc5 zuifbDC<*)RR`u)7>R)zNeKk<`lm3#s zJ%;mB=3_@17EX8V`C{$d$4ko}9Xxn%V(40L%SwIOiPkD~FZ34`bQczmn63KsbeTv5 zxRQ&L(?rRUp(1vOh!q|ixLbe$S-}l-_Xu})XF#gL9zaM{0IFSBxa<-LPY_lhmM_B@ z#C-329#E^OU*^Zs?wSO$ zf@}q{^7Bvvs{#XbApr&9fqL{Xh$GAiyb5E^RCZ#sUfN?w?J%cyH>t+W;$|D8rIyn^ zAQ`{ja`RZ;(wX9uCvukN;-(g2XAg<@-YU5Gu=v_O=GZ)UayDXUCVX&KI5f)c?q@U) z^4n%p``Y;xZ6b>~M5A(!H?nhPiu$_Ljs5!W;?9y1t|xBb%X3yQlvdf# z20kTTJ?5)dIeM=!`@Zo_-$l8iVD^pI7d5UOJHEeb=Pn{u*&&MdSvfm6fvg}{krb9A zsLPp>Rh+O`jM7D30sh-g{_`G@gCk4y)Dk@;j)WD0BKYMRF9c7M6>tm66<#Lb4@wiw zC>_P|zk1n?&7DJ){Zox&s1X<_Z|^a+c9~icBC0E_w`!`3vn%tJwmc=^ z%Bob>f~+K|7QmH6YE4QtC8V2EGb>Y7)#>V5nYJmjpe@tTp(^Rtm=U!a&Z`+WK&ooq z3$iM0n8qN-j_u6F6$8cQ&N5?5T~%jGWouVO^LRto($FNx3N1|V1QA?^V1@SeJ$21P z)@rQ4D_0kRtn_j{G%IPWN*2)n)?&1S`N5TV;o;LxQy{~`#!Ph_i^gn*|A^Jl9_49X8zknS#e|zuhZ|+^Yzqn_4U=qPO3r{53PQQW6C{S9-3p|d6-~cGdIBRMXNAFeLy}InH&&rI3p7RfiuP#H zKjKs)nz+bc!LdYA5vD`AJwogt7W~sxt-=iyB#;%d>tr)sNDin~b4PR~i$N*(QR`^N56|z;VxRfeacoVRS1&xuV#V<8rDmsv`Xt@ObIXhh81JK|* zOIR90rJbw*SNI^e245TuXo?Q~zXUn7$kO;nWMc&n*>4E(3a1Y3SDZBb|7m*<=q#@@ zYx`UOnr|{=8xX2U0yR`n@4ffld+)vX-X$bDh^C6@y$eJ&7}vyh;u1S{oH*4^FHSO( zd{Z*{uk##92oTtrS+jDlCy!peU`c@9OMCCLZ^#PS3b>M8SdbM3Szr}#g>&a-6Oj;^ z$Ilu$(b*M=xow&G!#M?4M}}YCz4hahGw)4}y*GQ{-6IEo{o?hXTs!~P)Q)c-+yB!m zr!Mt09&f2SSXsQkrm8zDuR1WW}Ia3AJj2kAc1bDozffR)JWI47USUTI*dXTUc*^he-Q6Qdoelez2iwCy^zNJAcHq6^XWlz}_!|dyzqGag`f%&j!Pcu=`r4D@Hy7r$r={gYM8tV{ zC;11(`Gkfz`@34WJ6U--+4&M>hpdDfsPCw&YqNg6EmuZI*GhMT^*UX1;7XDez3X5V zd<9ua!Acr}>gr~Y)uLu)t)XShsB7A?3}~TJRUs?wb>7OCd%wfho#ul(?Kcmb^^Dr~4cm6~ zJGM8Nm$%qeH9J@2o2KQMrG~2eCz&Ot*rjE86@*yE1#XJ9(eZIM3^vhp(^q%gpysTr z=B&BaPE++s&FaCe>w>A|Jf=-8e^cmG%ly7)+^-B*E0EQKRQ2U*)t8giGnwiuZL3)T zt-A{ZwWwA-d{bFoBgyKa5BM}UP|>WGm};RH^bxFDB&#pitYq5iaYJx^v9#)mj)g_0 zS_Go`UWc$f~onr@yj)YyHSb&EP<3_ds!bUtue71z9!bHc=^1p4nWK-jtnKmmF0Y zAK&nhtfH%y$SN$c4%sRy9Yb(|tZ)OfYqqicz&u{G6CP;_HwV4hZe* zbcFi3$3RW&_<*bsrX*Q~1}1=2agnLX(b-X9sgRYgTdb$jy?|x~UlC#ltLO#7Qh}_< zS@AUlu6$fG!hG{2S+TIDHiP7RBkc<0*mu?sa)NS4ZQt&Oq0Qype7S~e=`?6zV_;4~ zeOzcsTxc0&1-_zLEq4QfD;R*+bS31oaE4CAeyoT?r`lMF@DH#4Hg;KdHdN~iA;sP{ zolSp%0p)Swb!jox96!ts%^oc8YKV=!x_v7J?BBm~^81&LeSY)&zkmBR$m(A|`1-$n z@HS*6n%E!Qq=_BP>h`|vXSeKTI}d3(RLZ!pS|9f^H|JtUhav};az~k=Qj9+*53#?- ziS{bR1jG|`@~)LW;DQ^dScJ)B4& zZPJ62vK1Q9f(dAy&W8tCS=(g^{6pY!6iS!WtR()4k8_c%_$MZ@%FnaJ$GynQLktYY zABrMg@yC?Hpj=@KiaIjI2b5$5Q%N;a%2r?%7zs9WrOS)I1AM?-#imGSpW=jST%*k0=a5#3+O*eLvv zoXig^3VvK!^5fQ;Uv|`dKGgK{!G=$Fc749T>*HgaKR(cSd2Y+~3;h!}w@<#bcl^ce z+wX1}ygk$jG~O8PI@VD?)7H?JolzeXQxr|ndLTvX34Y-lIUve)Q=tk+Uk2Ta!GSEvjHB7fM$+k1j@wKn? zx33Ixsfr6~O%7@;i0vzh=&6ex?#&$Am2zNf?C#0@naS+&E#X54;&+_Noj#sCK3{lx z(s$>eX~$0Mq5aO=#_UJ;I&5iIt?Sln>N9EUHfd@wsBAE=$z7jaVpdpSUXWs#5~CXz zwIMdvBqh`!)=N9oYkioTMzE=>)5bLpdTSgE)ScI>Ijvi3ucd0QreY~L>dEm!7qYa;k(`~qc!&L*Uz}sBe zKUmTMT!C1F6@9Jwt@Syr|BPL26bNW!vjVH8 zn!9$@HudC{50ux{Wt0>qO3c<9uAB$X0neN0T{0m6Bu?9hMds zm605mm61?@Eg0qxbj5l(#7MP@K6X)OZ5aVv+1Nr^$@UIOd?ooBdOD_tc<00h7AA!k zv2m|Dt*Sk*d9-$5OYMNbs=9&gHGMnl`iZq~t{%V*tV(YH!0_6l0t+GoMC$?;EhotE zn21Kx<0M~aK@NdWO87^*ftW!Cx3qX;vZhU`Lp|1a0CDR;Wr?wfB)z$T0@Di16RL! z{oa|u&MUhQvih*Cs2%o;3aa#QhRn;QW(8bHRZ41B_-?p?3+AAkQgWrlt{^KwOA?oI zJdmiBNU&Qt6)+;WPDd!m^prj;a00U86NeAsD`{&k@|6-|cNK;pa3#`KZiNhdB@$DM zZlJ^}3&&isZAUQyk*c^6CGg57Xwk&wRSs4O4^b%{U7{&mwxxT%?0lX1sxFMu3jtXv z-W+XO$`)*A;aBoOV%N%%2wKOR*d~HiGR@8nyQCS(RK%{N za)m8u=a}T^l8PJX>l_yonw1unmlvB`8k-GS9qaBp-qw0!bKkw~19)V=x_Rl-^Cy0I z<;*7+Pk(ZD`Ue*ee{^c%JI5#AJxb21W~!-Stg4|dDXSKfqX1&SN_pmKO{gRVES73{>2xq_^42{~E_RxuElmW~@& ztU$mFveGjOGcbb$3Egd@s ztilHbtJJlO(X5~;)GE#fG6J;L7zo*lkd+!cZp^i{tyZg>sc2ZJX;?Etu+kFiel*k_ z)l}_Cuxn|!X=!@uX!|qTTK>S*2AxPF{RBO|IQbg0lXnSoIZ{3h`=Dt$M@(d=^$cT)4bIR)4Qr^$@F8kgA>#sbnwc z{|KuVi0g@X)$+8}6H%)##iwUHVgCBu!})tC3$oJ04%AR1XT|?>#Rt?~N4?boQ$bl; z>RM5O)uBG3av{L8fJhYuhL9D*0VReXpZQiVkB#%1PN1FVD9J0*K0-0zRfC0ezTRat z8qpV;9Miz@z@oIa%FOnLoaVZW1_)sQ<*KA>d+jh~0$5$Unzo{14b=^|R}55SHRUAL zrO^=@T_$M?ACM6ttBCTTC;?ZvflNe3YiwRuLg7GK`DkYS&YY$_1r4OSp8uiWDhnOLQYu}Flwcr6w@V42D@c|{hR1l{rpu?Kl(k^72ti?2?v zgEncWKQqw#>D)#77Cygy<+FS9fBWQpuM!3k9U6y3RGx<6Qi%m=cAuC!JMDYS=1BGB!?8s_D=K=GFGu;%Sn2uJZH^7kqY@GJ@RDn+p3L8)BvDJUl#75C67 z2PCt#NoO!~%}ps=5I&%#HBKMCBw;ggb#Tg~l-1fUhg=!r6<;F$SoyCbUh!e`7XYSW zz&u%V%7<-YpR&<5$=F5=z445E*OHc{6r9G}D|PYwjrDRRK$sZepB3gFUl3c+TUfuV zzJn9B7YF)pk8b|p==3M2j{NxYncv*G_PqppF@0p%)zb3P)b`ch5Gb$Odj9J+ z`0*|s9bb+O>KXX!>-+2J`N3MKSXh2aGlS5n7=VgLP^*LwsP9KrmqJ#d`WwSJ7`V|q zi`E4z`zGALK)+LQ5f3tw-p|YVG&kpy(xM;KSO2W3_Gc}XpLaF?q9W_P9o_Hl?)b*; z#%ou$+`Tw>^wyT~Z%)m=xNXau;|Hz{^t`fv$L@mEW1Tg-%5(d&Qm81QeJ?#Apg2A$ zDIhX6B*D)q(8JD;VpUJ4P}@zOHs;u9rWnMMV1 z5)cOv!HO%{buA4G^|huds${Or)U<3Ed_bvL0avU9qG6T2KSZrWpQ@%iM=957`Dp3z zaMzLopeZ$$e|LaV(oUb0ce-yVKv+$n& z<}$33i1iiW>iV2)3Kj8nQCqbR%}V%y>$IhKMfU<~);dk?FyHbJ?^00{>YhiK3I|Y< z6=noU58#R$Q5j17!#+mc;Sn^9PuSyGx-Onf~$I0X%g z$hw)rN+B!6E66IyFE276KQ5ve1GFruvNp4UqV>V*L9hykbf}^mwW_=#GRKrX*w~uaK3o zT{5HCf(v9N;mXu52`!6Lg!GZ3U(w<&Rvap1mfviBU^@c&Z`avSTE;OqYV~cDPn_?TsRu|_TVIk*Z z!(U2^e>W%dlY;zDt13Ths{a*a)mrlzWYt*uz2T;>@9X*I{?#LaA@tC^7t#i8qUY_zp)sHMW=gRBUs(+DcD3bKNxc!V3sN@!N9rm8B&B-n); zsA;XDVWp~WMTi~2N-R$#XQgIG+6v{0(h10laGIuu;L>$yR(jEpm9AE#zHYpcev*`} zY)tYXD~cD8tztaubAmf^{ac#iHrIsr_683Ogbh#RO%6s3^aXe9OW8V^x$U*VYp?cS z{$Tt4w+HXssy@BLyKg3J&!O;rgBD#)M)h@uwZ)nxxoh*&RC3~_fULRnuKtM1;qe*4Ucv&UwS z&rBX-j?ErBbK=ac>$em)aOKqc3RrdH){Sd7P8~mWU^s&U2p@Hj!<+ek{$pRSf!8^_u|wN;uZFvqE;zP<(AKj8Y&8872rql zLM0(~qE^|74TY(#s4nydbQJdvR1FPP431V05oO<8J;;Dttwr4xSuI%!HAyk$2v*Ti zXjYXW5kjhxBM?hzU65x3qq5qUG^?!I-RM-g%?AtGrb@bJiaIBYI>(DT4wiHsEbly6 z)Vz}>_L8c;s;cgm>W==#?w#GkW1RyN?L7xtI>}Z|clCo+V{M(AE9#oF3LA4uOOx}n zqO#%xQz8RX$W1|3zTPS1ObGGHErBcwWFs?CcFqPuR)pK-pkjHtMuAlbR?hZOjy4f& z24O{rXk6qByLAlva~%||j}wAaTKRithx+6KR|K32<4Q{tE9x@ph@#<^GQbt*DDh7r zE=g8w45WuMGNgn}G$4cs6uF4(x@0P;SHK>KQ3R`~SE5^qH>G}MY>^CEAz?vQ@(Nk; zD$En`l1Q_oS&{pSrWQURyS=0r?7Y2y{KJdqe*WUkKYjf^aP|9dJov*~ul(iPZ=ziN z_2akx?fusvtDoJS`}peVw@%EQ9T_{^yK{HzR`PPGF}0L$xO$4Nb($7zoCR6gyHrW6 z5)BM4<&vzBtzaq}k4k1C$L?7v$qFlQL9lWn9wWl%qRh%FjSpLDR?r}D1$ZnVJtrI& z$%?;+l)wwwN*S;U%?has?+>`*YUYr`U^3E_1x*Pz(6Jb@;zp=dlCP+6#}?!lI_61M zfl~O=Ayr8$5VGQ4C|4w}kcJe&N-!1CCdECJOoedd=q{8r{-pQ;1SFOag$XDsN_8v@p?Q;r83_?wu78W{;mO6XTc0gx3ar40QH?($yLSdntqC%!Jo%E&kxvNE&I zGqo?P#CwKp7 zTlJNXE`9d>EAM}N`qpPx=YM{+%U)i(c_LjkWyEk7N?l{}uHrvs%ucoRnJTgBl z63r?vGATVQ$=%w^%OSwSA<)j;3$@Bv-_gX-+1SWkPuD?D&uQH{YhZ~%jKb`bniYJ- z09uUXD{&-HO$<+itQfFLl9f0cDBM7>O61tt{v*jsL(NlToeyNCqZ3NhN>@9=U_+dt zULs^=u`yGmt;}-W?Mf3vy8Nw+GW=R<;)mg?5mQ+orqZgClCG^s1rD6G(}$XSz@tyvKFTw3^Z z3I6{O<^Noy@AFa4{}f>R&wiGxysg!JO;z0uSG%lVYp1iyPHUCrIs_{fE0q^a*1WKB z)${s~lhrb;`f{?m@zU)l$ZGEL&8hKO$m+_4>o?}^GTcB`hbE8AU7UXet^`&+f>O)h zynf}z^u#PEb@k%4o7e6z-0M2{;k1P6*od--@ZxYbq@a5+VWni(8Tbk-5V+!CU|f0|SS1by77wLYY{{jJR=vTz90)1(? zN(l6dCE_mn*j=##V<0OB>u`HJQtL4!tms;_wu$4%f4M4GaRaGg&&1RV^vQv&QlqPK zA`2=~Yf$#OO1em$QK>pm-qTys)s)i&Sy7Fi6IaElNysW9s1(hLVgWoOUaw_GDDD`q z{=B3D9*`AG#ZfihW!l(u52Aav-;`HOTT;NHg4b_-+mRcg0KGY_5=E9n7g%zhd+HZ{v;{*Qo_BF15 zdHw#6=Puv|em;Nx(~HM{cJ15`&L5)#>YbU1*@pTvy+Z>zr4><`8Num+PEkHi@ebC} z4mNSfRvR~lDZ&(q^gwWkLAD|y1z$19S-647P|y^b6{iTfL6~AKpd>4<1{;NVCEY-t z35-cAa0BI;8>0-((jhBz`$}v3HV=^Qpbsj{O!|)+a|L%A4utMaVV&>%s`Jq^5!#XZpem>z_?lPl2oZx99J}RB{xx>i(S@Vy<4CpFB8o`NDPi=F;`<;=8V0 zzRCTTQ8pwx2KlK0@y)c6d%^i;T7kgWt(fkRW{)1cIXA-K#6oV#>w>frSC zEAxwRh12)6xjT1hZt~#Nl?zuNZC4Q4sw)=-Da~EJ_9$E}Rx2z;*2Q_iTURb#o;Wam z>HH<`A4{#nSK|i`@`Pn@^;ELDbm8K`{Rd#GCs!?BJb(V+{{5FPUi>Plb)I}+|2~-N zNrJj?{v7XuyPka4S9xUqx)i3K(59Yd^DUCn!?e}XBTxR4rFUJQTdSg?uBrw;$pkw$ zs8!MmgskM*KyGAqonS2^bF<(ROl4)BxHQ%lNhF^|{+Sa}HrRq0C?33OC>w!`+&xQu zyeqstOG5msLj6iPAs7>cja5S*W?@2YaZ-I{T4PggXLm_odr=Qe)so*?m)%yJ+K3>N zh$a(L69qwqmiY%2GXWvRfuSXkl}KB~R@1r=k=P)~Dlxx5wQMA_YFkeISV8lF{PyX> z&O-&=)A?Of`EC0d0__D&yR&OXayTAX*YHdwg4N_G{ersz^Q$tomeO3!qq6G=!>>h4lctEj_NA?oO;uE1@2>C)uO+z5U z^|MI_rBHaFEW|4lvm_JCv`w~I(i6lS6u4!R4y(w6Z*0B64Gj0oj}I=Sc%dx0rYke| z%+Sb0L+yK~jqVQ8eLE4L|n=tSISl(lNjeB zeshK!n2KmU|6OD&c@^(+D3HHOCYQh@{59EfAel;Lu26@-6_AxHA0Z#75Z3IoWdl59 z#qd#yoRynAy(r*{ruwkpYNTDMS>X)g2{QcKfe#nR$|;8+nItRV8Fdkql0G1R;!<@K z5XE{#dl9u_xRD<%|8;0ks&;IYCijJyws7N=Nsb+?l4P|MvO>Ayoe4SQIyeg>-a7roZvX9;fqxz9`Q7f( zKTmJ@>4BaPPK~^CZQIKi29CWwec|5r-PZ>C-kY8J;OL<{+xt(q*Ss>mRB%hu1wG1%KV%*8&~Vxy4Os2HoLZX~bHc|Zo8N<1PS#2JLFtOQnR*=TAzsB77&Y1k-Il>^5E*Q(j7s@aR} z)f#SmS+q2~aRW6q{gAD+bvSMrp|>G=gLbr@PMn2thOK$7lTE(6U9rDwd7MvuT0m2N zNL!j`Rej=6UwrSbtZhf@Cub`6o@t)GGjR69=?CX(_J45T#Y;64Q>h~d;x-?M+tOuM z*J@SYZ{N{q(NL^Yobp0?;`6E58w#VJONw2a8oDMCvU2^u!Op9KEWYM#t>SI;oC|`L zfr`tzH5S^dEi_h{slQ;XzRE;xmC@QYhR^-;x-TWGWpJec6-*`P25=>237;?lXC{xJ zP%S;ObR$uUcTJDaDz@NLr7G|Vzwgl0k*gOGlvaKk#Dxr{*m;Zbs+*7AD8VY8pa@gf z7O;v3AGQA=u4(c6+)?1_saS=~b!bWmQzE;*Qo+LI3sM)V-+Ug^yDE zzYk#wf_fS$AzqCi-2dOO1qD`#dAdUNOj!C7xLSr)JX2-03ITO(O>J!rZH@_Yqp7Zi z14z6I6Oe=z`jwWt2H)gGnU%8F2B!~6ijibxX_mmiSAwjpQXnfieA`Dhadr@yVP4K4 zD-W+Sf-WL$mRt={Wb>)_H6&ANulr^_hw{=yw4AysSu5H`fMh|=sGgRHwTgGz3 zB054V(u?!rbCSbS!~Eirp-8PGSb4c7E-;m&LQRg*u8K3LNLVodl{_=Z`6)*FfI_gc zjuuA(tz#@LqZtc!z_A{PO}h$N(Zr7QM5|SJkl3|Xl3Z7l-G-G`o6*#q--eV2Ts7si zpkg)VwHGDU1D2s{!PTRS97rVISySrz5xu(Vhcm1CKetB6|hE&*3u8KuceE)x{?9N6PfAn^vW;zNZ4`Dg_|LNfdf zTt-$h!48lJDUU0%k0-lzMAQmf5G4oXKz*{b&yi$>9wmm~A9h+i5(r!gsY(GY$#vW> z^o7DRjM5ghNI0S`N{kY2hp7Zsp=CMc@oahY~>=32ht(t<5hxY zMH-DbBLC{q9t5$1351spHrSBD*%$=LHRiUby31V zoXjx;tP*>r<&`j)Qw9TBVF)f+f!v^6k;3A@AY{e5LpOJ^_1o94NEX|s#Z+cRmXsuv zG^dyCs%kyb)_cCU=hd;@H%Iz^e(fTW^&ek4hi3J=7w`P$#knsY+(5AU=)^Sjp{H8v zt_=;`+`e-tue3M6u0Fjg!IyPWS^Sl=vx>2^iiNCbN?#%?;R9|6VTed^kAB6wAS-=9 zOUbS;x`BZNu9W?NXjXxS#z9<>vp7^pKui8^>-9qQ4I>~cQ}YEk5X}m*LbJ+A`wsE- z%8H-1w*GEp@Gm2q|GZ=5F9SWl+0y^}ZLJ^d@BCn_{_f$XOD8)H%?<8*ec$-UCy(DA z9eQo=4r;r$WyYUsucb|5Uv))ia&mogT8fu%epqyVbV{6Ww2ys&60!<(cZ{$$^VwwT zZEosoXn-5&Omo5peOG;bX98D{6?zn^lo$#VApoR^j z=u`yP?Nry=sB1ZZRT}ET4WwRG=KmopxKzNEHb!cMfnF?d#e!zw%Gxx;#kv5piuS4v zcP!2eZmo#!>CGSOPwE;WNYV_Y%I^*P!RJ%a?n4;qFDv0#`~;|a(X_{VQqk|njhJ9$VzXG zv$l%my4B{Y&l_v3Hq%&RqWXf-npOI%p4a^fWOe`65=||?d4jA?pE%Df(bQu%60Xji zIM0atr%)4*WBD=9c*4?iR+6n0d{W2?%a2)(Rg3bJOsb2ke9qI=DsbyA*(zK=fmM%? z)g!^G(~&GarU`L1gRVqgRF`P0`Ypmt42IUNpY=dQB@_$tz~I#RhjKI*&Q|M zZE~u!+7Yr4tkUCZlVWS5!$s+OSa@Y{SUGNBU}&khMpOhxRfWdXgvZrIB{xA622xjJC; z#R+7xLyEl&}L% z{7P8JHz-qi2?AXhDcqAuB6^RnQk#25*R_ zCh9VReey%Svx<{yv%(8l*l}=j~{*n7`XN)@%mti2^MVsC2inzd(9d$iQ{=Ka&jIS%K1 z^E~(Wy07bVWz=p0NrWbJ(xb^SIoG>)6`)LbHMUBc*sqv16J`-6qJ%(&3Y~Ru5D6wC zn}YN0H8Eo@TG5W%p)YpS{7m}{jtSj3_z7eJ9q=) zzlP08^7J|gFV2Lh+Re1)Ea%OLT&6f0yr?~>gV;%>-xi^%qH?Q63pNijXb;np$si=q zS?izA;Poyb$8YxgZOzUH#+3LI-hv-)Pk-5Z?n<{}I!lu=k;s2LyCQsN94_mq#2k^! zqc$M{0_X(?hbtdfRrFAW8qdawO0{i8mQ_KFJURj@sLdrI{+At(%<}J7mcPPE9#84I z-!Y{Y{kIM-T7cIJy$A~{{2N4op=b#5zM$KBj`w4>E9!ehdaCS;&Iu)5nY#IzmeKCw zf$6{y!ygev^FMze&pkQ~%x(%xO3Xof4hk>3VWv?*@^987Z5 z#@N=fWq2p1wxBqChs6S@y`301Pe<1`j}M*zNB3l^&mqbGQf0!0g{U6r=uDpey(m;u zPugn;Lplj>I|-=yyq-Ao;Ue`!eetgP>IodXMEn+R3Q&_%Ik`g7f%+cFSsx*_sR zmDP#J+wy@ts4OHa$McQRHnMZrrN<%C+i^_DAj__;TH6tov14R4tAA605GiZRyZ1s< z$kYoGzn!Ik@>W(Ui){d{s#Z_;eo z3wHMMhyzq0+w7~GkBy8|GaenAgc3)4Fm}8B`Hd}w3e0OP#6U7k|HmK<{Zuk3ipoJOY3MZ$Ba`Muk&ASOyC(zcDBzFkgNn zGmW*ug+zSTmw|XFq)4{VAuYde9>^urvFI4HPA^fO-*i>{jdtGC7k7KgjIsDuSJXw8 z&B{_7dPUmIIz=F(_m%#P1diBsB9H8=4vrBg`{gc?$Qz*14Jgy6{=(IM{}^TG1S;cJ z9pqLSpZE%n#H3|#Z+rj5CKBPE5~4lOF}+(>Y$jr2N>;>46_yxl1#SSF9F#0A#uJIK zV!@)I&oZ0=RugrDD}$}@zoA|#s&RWk{F1y4SwT{pye03sz}TSctuQ-6AcVMc|-JhhRd%{Z@E3_UDvWk9svWcluE~<9lZaP zgOAzZnh%H1%*Wr`=Yq>Jlxe$oqeHBm`I_PR;pnjB^3tP)!)A{sXNboiB4(e#=cIDU`M+0-;GM8pagGd)|VV8?9Xwsc4EXd*lmznIR1mw;=$ zt`}r17(wbufRLxwUrZ;F)kB8PtVqdfjDj9xh%3eWEEArBO2q+5kpvTVY6(z0nv#Qe zt8-XoIl`PR-{<~r(1}|g`o}`Smk0=E=u9x;UB|B{LhF#erp9=Q4Y*+dI=u*+2<8{m zhCR=Pup8GwYaYH&;`s|E$2%Lj9m*HD)Mkh-830jg8M!I92$p*cd9b??YkbA zy-7Ea&?u}v6`(-y%#C}&CF^T6`vis2Voi899IK$2uZuHMzTBNTVkrL_Ual{R>%BtT zcZ{9CTk{4aa6Z2jceB*c3{c+esE&yNmt zG^%*E{;Zju|5_|jF_0veb#RrjYPWEYzPFUv7( zCH5;pO=Os%3`PjYl))Oi7k*6r4^vD|R)c+Af5(BxG5NXw*YgVcB{eVQ&s zCl(YyeV3R2U~vC5WTE-qb*b@wX@2~1S>R65cRJp;{)2$l`F@1+T08pUqS3}Y>s5~5 zzu!?O-$XBm_O^mDtB%($H-^f84)|)!rd_aeUX&EUmHRmS{RTt>Bg8T4S%8>vK+F79 z>tZAnieuz*E;8jSB=lGKhv)3ldPQqDF1kQMR_wPeuF%Fmdpkp-EzQ_EKnBQ@wh9{o zLGhavv&``qLisWOBT(O4ya-5MWrTS%j8>nc+dpQTr-gyMy(KS*2tXNna$XM7$X`97Dtx?|UnE?Tr0ZJ7<)RcEYYUxH{KRw?EJ0y}$ zTpLO4Ht+cx^z3Gn%!xYO7Z&f(O?x|v5H=arYdgm>!-~(tj)~2ugTj&2n+MNBG0Pdo zVaQ1OKEH@tz~*VJSi%+*rbza|=KRz{N$0pbClW|K@Wg-dTsd{+zb8{D$437}R<3#; zd3MH5?|7?^FZ@+AXFc+Cjw9}U|16^9lWQk9Kyg?U&`9L*YY|3U;Pqgv*!kr&$ZD1a znyAfLMGECr)sY-G_*rF^MVFfbtJj$hv%}ebv0jfb$elr^dQ!>$9XdO+j+cnjuO=IK zvRi3lMyeRU@>CCVW1!wa&byUEhA6iQ&1n-lh^$S`_k4BrwRLs1r?r0mA~IJgk*lQ$ zDlYyM903^2kPR8B~Cl^*w zS~+YM%-hw13^50^a zYj3p|B~{O`QN(tTrckl^!UTQySqtZt*L}pM&z^ozzkdmLHf4X-zCBj>OmfuCG%!%x z+sen^Il$c>EUV#^s#YC|&jyP6%jHKHM`4*F|24vzOEr}j^_{H54`azxC&pQ9mq>1F zPs%pkV#u~SblQ3mhhqfoONXA0@lGw{J?Be=(baD-Ad1Z3l3(kL!|_rT!c%G;GK6Hp z%ik5kIc9$D*7>H8)&c&_!WvHXff_Ed1kvaJ6+3(_6U$1OM3Nzk4#H)+qh8N{!lKvm zQ*(Y3i#mJIaeorwXPt>ze}4(`lx;?2gYSzIjY@?RZ!~jii4}m^EJwx&2wS$~pW{>e_Y}6DT6p>b*6#rEH#)Bi3&H_%Qb# z@`|ECGo~_@5cTId65x`jO55!{7>$Mafn)-KY&V{Q^TNuJ45~bb_Bhsm1YQ!eFMrgZ zs(2d8W=XgJ_RG%LNo7gZ%%}AGPh%<3)R$s}l6G)-K=lrViD(hkS-F)lGl(j{CSUe- z%P<=+xKC-_adrXAq3+hO@6q_h;p~DSQoN~%;z2E9yxj9Q5l?`LRy3d1I4v}D`gAun zpTv{MMpY;4GQQxUJAqgF?LEa5DUC;zzu-3B$i+4YYYGA>)WA0hht(d=Df8}Jej(RE z4}H8qE8HI`g`R}BRm>n5D4OGiO48;h8u0)e*TM&WfuVS5E*?2{0Egz=CkC6fT6H`m zvYAWy$_ydrsdp;`1Y9J~c)pSh#}E$!<7iygJ8mksvY*!RnH=u>`TBgT4V7;3yG#?= zVM27aUG!HSuiV|MHg@`5AHOV@%cLy(vIFSr3|$JOw|o2uj7pxqyW z+IQy5O?PJ*3ywY6G&h--`oH3BY>&A4TvR41G}NNJ+~U2TllqWyz_#rGGR83(HUBu? zge1pG+4RFsK6rVrcnLSzJBSbI2A@Ye6&E=4yVcsD49N*}-FsMH1IjOi9LEgGGq><6 z%8V)NS&Zv72A&}?!22dd0BWP5Po_-r~maNPS?a-reg@P06&LDDxe z{#DiDET!Jcj_K;F<*A*O9~%qvdy|m&5F?9}TvS$a8(%gd6tHz3a`){~+I%47w4N1q zA*4AS;v*b1?%v}m{B{EB&`}*#25@5^+{b+yJNwzu0A(J9g!EV7qK&#L0vlal$L}I- za#SE>H0aqvSUozfjshzApca9&$yJ1iykbVQJ{LkLpX*JqAtIE1WDL;`?$a9Lnn*?< zT~^F`fgiz1vu~=SeI;X%nEp8fHpBqwQz|)6_G&ChOO;2ilUvX zhcG@H6WUPY&A+}o6wtF3Ob1}#CK*x!aYZ^2o8}A8b=5a~_W_1kAge-xtTZe=?R^aV zeSGa5JfRM6&VV?GslPkRy#blDqFPEpk^*R;Ng^s`ID%*y@NF$1T=ZL$LyMx={L+J=zon>$Ck=# z_Gj?7ASZ;J+rPuIQ(#&Al^BDE5m}uFUzB)-ob}00BPRBpcz?T&?)9_qXu9?hsga-x z`oem$9)f?l5h+xI{jaI7Ux|lFE?j+V3kZ8g_9aUFGaINnni+<<4xI#PSciy?H_Z&4 z=DwS3Z82+1#F)xynJHiYh}uA%n6(ACd;Pg@x0256{JVtj8+c`&(r zLilX_PSxE`_q}o8zvcNiK9+yx57#lUwVLnY`$ebVal9}=7Zw$LmjjaqD)i>(1|`hN zil#8w#%l^IKgFWWHyH|t7nsP(k{}09Cyf@r1T|f?+Gd5Oe`*@GFavF{Gbe+$!Jm;$ z=V_GVa`kueEz?g3CDWLiETZF@!3cdX% z#8-l6lEvUrP5!&d5$O*PltC7GR1N@G-*cg)azD!XR0sN8A#HvYDB3-&>SLH8_$1Y| z*~UdihqENzDEH&Ka()-Y;(%TVLC7-VH`MzfRUrbfXD zpQr3l(`L7$`S;6R11k2{tnn?OAZgtezX=Y+w#zyT6r*yy(>LH7e}5^dSZlr?UYv^QG@&KA0?55t7S z-^4EbEBpQTG=oTeEL+-F$^GdgP2wKnV`^^&V8daoLf--CD5N(#S7|o#<*KEHS_eSQ zY}oe<7Qy^`+vt1K{I1v{0h(elMS!AGIHR8ujb2W%bWXH!hWE`c?y%_B1g5dOW3oQO z%Mze#(vu_8g98Klb#qE8t(W8`G&Hl|8i11wySR9SEVmcXfjU9i(6%RQug0lPwz`6d zkh_map#i%X`}@efoGKy4jz%Q^x{|snTFo(L`nGe8|&jOq?vZHc%3c98pkWibVo!hXcn$G#t)~XockJ>YM8%_wXtRRXDgzg zz7yD@np+vJ)7zFA`6 z7hd3iTz#Z9iRICacxsn{r$Cz-g;hg^rZA#D5qeEiL*j<$b-*ZKf2}>lg}=ye7qG)DPYzIddxSNQT`i<0CPQ3^A(f0)w7wYpp!D; zaCvfE-SuZqn7d*O{FPS>L|z|;EVAi~e{yC0D=oz-$?a)AIsY+x_&pm`R)IyW@(JdO zxeoN${+HGh;y6TYvI%l8YznoLT_;Mf!%*!Y;nQE}E0B`7cA`^P~W7SLPy9tK7zn(DdYZU87JE!B58a?|YI@)Lva37`tlOTH6BBo4+8fUU10Mz2uBC;a z-}yWJ40-wDcBwK^`e@4HuXv0N%dq;`B1m(-K?$6n@_t>~}U3 zUzPJPo!J=j+QIVMZqQAm7x)013l>G=(H&w#{!dBloD$q8rR)6?G`9Qcpi zi%)g-{G2wl)wClrG(vEMbE`lz51hjPmD=#V>=JUI{#uPa%i9dagn}-C4wsqfA2F2* znV;VjR_+y49Ea1tQ*Zxbly8Fi)BS8_l4u6_h~Bw?#?kt_= z*6z!{X4S%a^@ZM{IIVMZZ=5idL~xqFa}rg5{w2)HXX@Y}B1F=vqqC+t$N5KI`Tr(a zZ3|I8yQQW$#7xG0de_5hxSz1}i1+>uFmx$nfCF(!HsWu3H)mnC<8=}-ki^q zgYZmQZ_yiC+j0wH74QhCMCjp~WYET3wM0PCaQ})}Z(-KX8hOaqWGnujiShAD>)_yL zQc~Uz!Lzc#LiyeG+WF5gweW`Q7ubf1Tza_N>Y^V>VDPjlwV;=v1jW$&ZfiRTiOlvZ zNP_}I00zj>`fmux7s6ET=jpM~aM;q0%d6XW6iFl=|HR-$m>P6qV>o9atl^#=g%4i3 z1kAcrIjra}RoB-9d#WBi`Mhp1a$0$;yJVb^+f?AH6IjL-raf%R(qBsWe{`Z4Y-#eUGKU%dA?aoW#8E6CvLjW*GM}8D>By z!x&>0x}O-Z&?B8N)KrQbra49yJaOveLWf$4ERSR(Ov8nS3oKU1P5($}b* zGV_{7n!TriU(z(Zfd7v$*y&XdW0y6#2x{6kMP{eWye+TLD^$0)q(X<)KLO^ccKqz+ zQKZtCa@bDEVSpymnraO7!2Yc_qgpjCp0&GQkum!Scei`q%rvgK)5u58pc_#6e)yqD?m>}f$Ul#CoLp1C9 zFmp0B@gP_LUWZ+*g$Gr+AVITal0wN#bjC-cfu?8-a^RC+A3%f*q?H8kG+3a3Mu90g zYhFbn*gz>DD%JGpT*oE~_Y}20eUABSJ9bKJOhTY6QMpa$l6lxOP52nsQmlRxkMBJ| zL_&^%Sd;85nuupcj5Ez-eRx7y@X<3)NT>oSSdQi`O|14Fh;FOYPTxn~5(cj6gOx-7Ymu zJ}ygNHV%CXk*}p&I;+CR3wgWn*k1Gbb|CP0bzTY|`r+Vo?zSItO7n4l&1P63FK;Y2t-d>VhAjVHepDrO3^S-!rh0fr?`wYO3Eopz$)~TrN(k&G zAwPm#5>QN_#TQyNPk?)PM1-oA@D_GMOx$?PAr=_;6c_p)+ww6Hgy00rr&_&{FC=6g9Gw&*_uRmwcb5l@hjBw@8AYZEPoD1%nlHf8%&D zeI1~{lb52t)-Vs3k(uU>mEBt(#)|IaWe?YZU!cIaZzuCYW>cPduqRE68MDT_`ZM%% zi|g9@cJO5TZ;biWNj#Ga0A-Nem4ydsLcL+pFP3hP4fYOiHYVsqY^{R z_B)#YFu$KT$bIBQ?RJzrsAcc3qOK!r8Ona$7m|6O>|C_!Zbhb$-O4i`jE@C+SYS9f z^16|(rjdp@VD+|`hVVT?BT}wfqYX?AR2aaUsE%DiwU%P`z}JR@tB=AO5>x&6i;ZF; zHWaz^r_mtb1XFR3J%!d#E=xe=U^KaEinxu7EQ~^JG{^Z|XREoui5;`kihhf0M3cjW zh&062GR8QCF#w= z5^SiZe%K<9y9ns1OF>?~%##3Dk1I6IiD6w4S2TGEcX#KrZj(SrN>*S$b&!90&?C2> zfTCb=)MYuC-l9uHY1w!rL&*(uv%WqzOiNy7!=(4L2q0Vr@Aa|r0m01MU4UUY0W|6= zKpv*^1_nqTGRu-(?wW~yX$OfwO=A@2i8FLZ^7cKa1HPug-_Qg*O&xFt<6el`XpMqA8`jrl@`B@)UaWqBNAOv1ozx8~lU#N!d z3#SakDb3RxK>ynhl@|B>zf25U81TuWuYCrI19b*Zi>L^{R)0_JuBw&F2GWgDqx?fs zSxs9tV`tY<2_=`hp6tjd`u(r*GMiylYH}vP_i^==S?68yHDawjV1wrQ@x$c>ey9IY zvAJ~9{j{;cnxy|PjOThy-1oA3bX4tReCXKJY4?5Sdj~bi@bzuojZGaas8|y>?jfJ( zCren^$}nnqs-C1{6R3O+7sT0Smi-IDGP?8+($Rq?!Ek%X{`4?y9jx!OIU*HA8T=z< zcgeLu69O9gJZ@jC_(ne&4`bY0%sze3QUvSspxh6IIJ|5xUAn}WVPb>|nBZu{s`j!Z zIgj33DAzEe|)ExfA=QV&-FDmM*5spE<+(1h(VnYx^VWMjM-|Ci_w^FyQ>35Z9t+(oTw ze)`87?KK~7yDMcH`$>t5pN(eh`WFXFBGT;v*R@$9kEb^X(Z0?W->kY>^R?h-e*@fa z=gJpvOt-yF7q%6(n^hiY-7%cSaoWS2lEH`&D(p%%O1mbZ*K+w3VE|V;7phIbFhHN# z0+5r}R)FCTem5|==2VK)cC{kFoalYA9rie|;!bY7`sfY6L#1gG;w%rx$N>CCEDy-= zLYM0=>mWIGyT`6hjDWU$-I$Tld9-wIZhR9G_>Yd-pze2%+fiBd;U1E;eyJ$0 zzK24UtB*z1i;ui5F%s4k{(FRSSjsf_ud6@tb3EBzoxBwvnD8Zi<+|TFCGAsZ{}=o? z^Qk6Ana&5WWSb@i=-pRfqwO6y=#OwzQbffQPez^VKf5%fTyI)jg21tTG_3&mN4vap zlCJs9Hpv`e81URaP-!1io<3uG@ondEV%1n?z(40;@%CHoL;Zw{r7E>52Q-O2CL=?c zm689=^p}NHrxCWo(XafqqlX`@B55;Ax`pi*OSp>?j)fmDf~y1}4B{%&hdH%B-#SVj z7+3Y9d1KdGcY=?1gFBQUzS{e*z5`XDg`A<0&ZTj0n9I6mMIl%Q2^7o)yBg+g|NXb} zhY2gkSj0vA!=_micCo_u-4f?rW%t}QSGELvKqA-VoFS??zIk~uqQ5p3?+qEh_aUZWuPBb|Xb#?|WJqw?f|M|Q)D z_(TA*n3bQB@+m8;q%Nh^{ZN3{eUX!5I=}@Z%!&*!9CmwqJ@v1daCPN)V1rEFenPUD zG>h(hg?nP5x}sox|M?HERn1K_e*Qm@H6PliKsXltGHfqu49Z;>o%u%)^to~?0FHUvfmIKD+rTG*#&G&AfW3&oL7-Tpc{*~KS{~vb>sVx?=->xk%Q+8~ z1l+fRZhRq^M{J>3uL4ze2_PW4FzfnH#qjp+;_TUNl=^J8q|njP_TtXw&0Nywn`Ll% z1y6k*M=P4ChDiu0|1y&fLj!~IZ|`>dy!odP5TX(1U=R;e+hYsC(Clo02HmEo@T{2E z<~8H}-O%k{nO)H`!5cAX$_FwDHsQ;1Oy?XciC6+40+Dg*SwvzoHUzA(;pc7;7SYF? z`^}Pld(Oq>yrRhJGT9;({%0h6tRH>=uz|g&X{}Ana>Qstu8nAr8apvMNnK_zTA7Kj z2nZcrSP+|fHRS8YO;M3%MNLSLfmEy){5r+{{%R*p2xWgL)na!&R2=hat?g|4Y2aF` z*X8}lu2hSAM$dnh=6)B0Qg}~u#j8*DlrN<|tasgvEB-+QItuK^2*n0Pb$?3uq2zi( zR~-!)t;4n_05@VLkrf%+MnktLMaee4&U`e=U}h2&H<9*WbYgxLGWv)ni5u(dg$ zO}Hz2E**@$PE@fqS*CBAB}RlDy3if{+h918v3fZ9B0{QJ5NC*3J&vdH$BYalC=%&v zCoSR2S590djlM-ay$$xh-gI?cz8c$#f7lp5T3hS57$|jlysSZVwz_Y}EQy$}HXnV` zdysjY%+W^%?{t zJL^=*rIn*cOot)!H1LKzvMQT}{)KtYCk8WL7cA?vF0pJEOUBcA1wqO`jRZlyYuz97 zyxsXZf8*`gwn3n0X0`*a)TAG3EU!*j5gjJYzvET$f@^&iUil)g{Fah@`J5ibVBXF> z@T>z;>BfT}12k1_AMSeT@k!f4&VO4uekL?yin{+TGZDQRmiqNuX3<~K_%6G6H$l+g zu)R-uyEB^u9IoHQUUFm4GOqVI(?h8Cw40y(V{{PkyR>#?%Gk&L9hbb6A|6ugx|FY4 ztI7ZP8%_nX@wEKuYsWvkSy`%@0iVM@)mlzdgoui=s>@Ys?IDq z@1wM%KiN(BR$A%8`}>&t*kx|!8T=n+j%lm6+PJ*z{?IOOpd{Q`{qILMuXyfa%htQc zu3GU+vsViNLC2>X9e~IHgV<^|IaA1ixzS-#vUBOAVQJA)5vQ?35^|b?N5}#`QKZ$V z5*n9$=giSOP4uneL~!g!UxL?e{`=a9 z4fwyN;>4Cvq=h`J!__W3Md&ivVHZGRb8g;3YGSTIVHi{GOvTnfT+QI;%2z~yVDIRs zu9(lQW<>}gZ+VF+meBUB|Nq5z`-P<%Zu5=4A`Y{iWC+H05OW%&SNyxCsh=V9T^1Ay z)~^-K2@Ng4KXAH-dk1lH;ZtN(ZUDv^vfsMw5^+IBlSz`*=_!n{2Bv<>2C`}AeEw*g!7^B z@ef5FtDzO4_i(SL_?JloX2NM?pVbeWxb4mLe^g_njOwC_&ZfHdHU(q-xhd`0IireM zY9T=y5n-B{pSA|u1G@rC@E2-_#=%R~Ww!J;0d$*p z+2)kA%S=Nul>!_*Rg}aVLiBi4AS8P|7V9`75O+#FBdf4PDvbm+>!WYB+k#4vt+#Np zDk|hK%?Zy4yK9_oXgETQl+A31*t6c(1+1qZtmEvgVXSJT?dfsceXXj&YbM+Ro6H&@ zm27a{I^c|N^L(EYhRGNGKr7+Bn&q}loW)GRH$gy@(VKb z=Lrat`QqpOu^mjPh1(zAzNXIan21ws2T7WPi6qpfR5ukshH4W~R6Y^L>xQAW!+5Z_ z?t;Uipk`bAM`>8!D~z=6EPI_3^u&uT5p{LSHAo~G&4CGoSA)O9<1l~G4BPAQ*$BKJ z*Qf*oDcQ5~>%<71&mMiMjM1Me=?Tow3Y2{iR9S`UkoIk4Ti?xLt)a@NN$7NAj(zmP4W`HRuD`0}8 z>ccnlqNkpF|L%9rBmO&4IJCS;arxOw#8{1#A_@6wWWMNxT29mlR*HzMH>! zM!#>IX3$8QQg2ZD)0%UpABQIL2H@W$2eDkG{E{TdPJ{2J*g)Yd>txU{a(gshy z(NVl^Me%kX{=V7{^Y1io-#o!E;!}e=K8y`G?zRiG?6n_cnSZcZ)15ey3JJXJ&dm|M zKXCjR;=X}hW7^r_aar7+r9^Y-0_7eJjxn@G3ua_g9EXNPKpm@k-l zek_WW6uTSa(2r2axQ#iJVV4NK!$}~-1lrhn^-b8#3DE+*F!mB`b|`H|JRt)$tQ>w6sFuyi>Bg1A*AuPuQpA#yuFoip~IT9Z{x=U z>)Iktn{vaZ`l3G>xsn&xm(8xM0>Ueqlqo_;Sh-j6op|KGqebN|Y_DD{bbt({Rs(S- zi=he{yV8z0Oy?IwR=23!bA7Bz2+O)?))bxjMSlwB{V)n0j8+`Q;n6ajV@BKxVF8dg zbkJB4Eb?R}+4AhAg~7HcmR!vAoAq&x5JA;JSGYkX?i z&D$!wW%S!sNq(?8|MmD<@SBreUX`bDJ~SUfyHD%!1kvl0rNxUGlHJZ)=20?kDIVKT zFog)`LrbXU-2Wb)GLw=%KPX{g5=5!qRo0{=3#qA3(1(3HHJN<&Rl}ixIXz`M&FFOk zq=l=|MiFu}+}591Fc(XLm-_bv@j}9IwKJ`ODHAZ_LSSVZY2n_;ggD&qE?C4GtSCYj z*45Rck;Tn*<*0(IA%F2+9F=YgDZ-DKwr-*PWZCa`4o4$-Q zabb>@GJP(C^B{w27Qbo!TnJN81Si82i|^wD?7ULQl%cSjwz&M^RJiv`@z&jyh34C3 zba7*&b3l+dapv>;yBqct(BZ)=GdlMD{p(Nh%Zv4%it1wx{*IY%4(hK_FM7_WTFHQ{ zg+@K!7e9n${hE?FdBTfNHZs;Y*<*h2n-zkO<|k{S^Q;BI*puhAE4?;n70^kqx$_m1 z08*ebd0~AlU`wb~COr2eNa{b#owVv~LYlapf8@2pIPt8U2Zy zxa+hzCn*8f)$YqU;{!;D-}$_2rRnv^(URZKkdWIU^VO!y@!#Ck1S}_aduNWhYi&vt zGn5B&YYWY;CvDa-4gr7k6=^4}x#|*SgUsHAZ0=zf!^ny8v{vBNJ4Mk&0HFtq9?wj+c*BVs2ynxNkgwb9YV91F#oORQBb1y}z@o{C z=X${yoo0S%DR^c2cHzhRE+X~O8MZ((Li6Af{BI(4BJjfi+V}D~rZKfgwb6GaU~6z} z_h0ta*`#h~OTbZD8lPl~%XYT9Vb8&5W87Kx_(d zvebzM(WfGU|F(!wle9&EcZOwup&QLfwv<~;Zwf7llTS0K6W@H5N0mgdD?s`qcapD+ zkbHb`V`JwAu1C-Ylw-GBvyZXz(1}Ro9YUQe>`J{da)mj(6Jmg0oX8h9K8VDQ$Ktfhik|kHv8%D!2IaRzNH+e#jHQ(wf3KqL9FpYcPaj?7_;FA zIMU1T;zDZO;FW(~JGd00f}FzT_)YrQchu=x%Kg%0C9Q-*YA`S}{rAD%{ouS`ba%>7 z3$tuGM(+mQ0QmFONI&Dv;NH$YF?cWotk%6aEo=QHubYJQ%jVmnr5&N82cIKPFDrUA zc}aBb;RM>ixI)ag7`}wf-lPq zqt1-#E0~3q^wiXn%luHl8qD|CK;OgD#G%z_nml(pD@EEsS2k(ZE#Tt3t)#xsR2^|d)o+i=GCPdCF(YCEr z?&(Jaj!}sE534)_40RYB$X*}Ckz6S@XdvieW;J87S-_waDYLfxZf$wSEr;j`UD8pX z{V7f4NVL)6s9AqxqRQ~RHx5s{_a*@#ORWJFJiJcE<8=- z&bn1{nNWdZhB0u{n!B?KnK$pRz0KS{-U;1-jhs#H?U&z{!B?8yz$@KB^Y1Hc(Y>4n zgfEnsW{Hpmyk9IZi%5Um8oM-B(3xlNFQ)`eMZ=HPRfWp@TNz~frBTjeXNK_U z&alDUg_CPmV6b1GXRB{}ljDGp2j7M*zWk;L(_sr+o(SG=!%+XR04|7ySP-p#~fhVR}Qt;nI&nI)F`B`KAi1aJQ8<_RP z!7b$O@G4V;aqVnNM6>;2F+a-=;>sv~Hm%Efmh{2P=WqY{hA-(+Yg1lGe1nJbhdmkD z;8-BDw1n`a2>4~fx+Ue|2IItkM8<(aZJcnykp=$wLtdK*T1@~N-pjlJ7xmeI#0 zP0PoBr-ZzDHIG+)y|+px`(kKC{4BRpDL)Zw@*375>JMZl)>~RG^OqMx4?lPOZ8`qc zzdDoJaMjN;amO>DcJcS>_4NGf>9W5DV-z?JKBe;6XrVYx{P3*lzClAGE8D%UQp ziA|h+?5V)Ny!B$hjNJ-f0)8y? zx=p1FJ-SG2zwa567MPrVBb07wV+TXpzMh?Dz;6v@XQ?6R(kE*TUPVtwbdx*=hG=f{to!NJR>`JJn#xuV{N zBAk!;?9kbi)VwjUy?n83A6Uf!4l9nf$3d{LkR$iCE6I>#RdxjZ9QMqJCX&m=QT6{! zQ*;{M>DCA~YS&@Mylsr>mN`85^L&m^w71@+o4KOR)%N|;=etyWT=gC?p+BC(x0vV! zq9AOiW&gNDz**UuGs|TWSihJQaP!eRbF<)A!Ki3r*odm zVRz$tZ$DYSVN%;Z&e_~ZBr@0je~`*dVM(<3G>{RE_Lv#;4sIIQ8*uO0WPJAG2}V|B zwKB}4w8~@xp*y>PHP5-~vpMlGVY1ZIXu7X&^YdrBWqF*t^^zylPhHl)`K0e;PT{Rw zga%JO@mxjoF&j}213akhurQWjs*rFG#XnyrYne{&m>TO+s^zA@#^~W40|(7Y!$6QKRp_Uv_&hF1Ds-_wdE)uEO@L9|ds@K+)i7IWU)Y!XnBE0cflL)Yhji}-vAP2c6>WdC zYYpaCrZ4n{F-mcxIllNmCjr_>By5APxu5B0-W&%V-4*oL*E`<^-nh7~oDcQ=k(O$C zJSvQQRG9jHWE>K5-6y^5fBvV`CFFWhRl3!WdV3#bg}*B9f7kaRP&ut~c|j;7@11eB zNq4op6M>O0v$<3-0~ZcxqgKbqSfp9_}$mctx?NeEP=SGP1AitM&BSzB= zROq!tk^n5Lu&1tmrq85r8EJ_8=xZDUxw%_h3Bv;fd5<*A9uBUMnei|qJEZxt z|Lqn(%|)4=wqD?CtGp^Fd3HWOW z!pqsr_Xdg1z~MFY*PrzJw}OPm1WC|nL1NG9=!?4ecw)XUZW>z6oHHemXOK%?zF9u5 z3dv5J>5&1A)n)YF&dmjhoK(H@?yNqm0i<$ada}N>J;YvREOR(+BdH;-D7xf#(qeUi zz++g;X@$hkWrF121TltiYmWrz*IfIeES2gk?oXi|bGi~XbWNH+ec!zK)}up@0|J}7 zrmnJ$3?-LJN({-NF}YlCL7}r#A*2r1!S~q_D{o)6Q@;OVr)PSVIg)16{k&fxZ#ra( zdr+>N2>kc(*U%M%+M7~b#4WE$2f};>0oka&aS5CKXMlJZDUf=^%64Eem;6$4EET*X z2(uR4mL}nN9DH}e{N^c-!SgIN{@0m;eG2AmuVovwnaVqvM9$jceKFNXh*rL&G|`hVa5 z8)*>9fl7Cbkd|%$Ob>v~*~wI2-L#l;jxvax%!As2Pm4JT};5*7p^1g7JXrto3Cp*nFt_}?iS3M;*t zjZ)e$x0SDw)|nxBp%oA8&&5)VNOsN;hH^L_S`BF&X%6{SO*BdnQRY2KTIRC0cALjc z^!cmEQ`$~9B^F@nCO&|m6~z|*2slo7Pi%zWYe3A5Aj--bRA`8@Y17LW z(l6x5P85S*H!_h#a!p9;!)aQ$k=!{Ri9rp1>7x_)ASq~%fAnH7A4pl~sq0C_86Y?j zzrc25>aB{#Im5z<)nnk7{Sc)uCM(?kysZVa#lki9iT9;$Rw@o;KDFO*sxX&DX8NiJUBh_Q`>cIFy(aX7Gg}KXkKRWomvMVhJ#h*7!ZC}tektbmqx||N2&uVLP(%vQ<>7o z5~*TF{-*3LY_+?tR=83IU0YKWpyTS)Yl8sjx_vY743{Wz7$9zG^aFb9c2Kl&OCOaf zrrwl85d$S~9GLE}Gsf?5&SPS$VZ&}xs>?|PW> z!Rx!$Q=AHuhkw%&j|dyD;DZ2LeW_8W)eL3&$G`hWIc81geUshePRn;2AOE?=p!{5> z2i`7gvJ?paYOgbCrs1QHRo5M2hXf(a9H?QIzAYVsMuR7kr=v1+c9#Q48x ziuNAF->!$u^O*9WfZOeM&x>E9Jk+i(22mY&#>>Xd$7!?@W()0)U8nojMZ!q1QPf*Q z2{JW9GOn5>GA@Pl_r}vdq5FmNgZLtxYtxoNF$%3Q3bZAE8&a_sUiusEHIE5-W;m>J z2SFomMfz|=-sn0#y)0)t82xK8@c+95xk7Uf7^7<1vkg)Eh-Zl4PneGjm?Qg5{p~TR zwsZ>ry}K<}HY9%7OsY>%%YDgoCEZV~miAVMC$MGenpZ&ZENwNyr&$7@V_e3V{4~Jh z=WAWkbJ^ulgNEUEW+A5|_JZU=?>UCdJ93zba6Uo$n>~gqaTSEAjz9qHVn6tY3*>gU28|H=sNMrI;Q3_uF57oUBh_8_yh(VOe;+CZp`?3$B*L(p3v_) zu^^+QqeI1iT6Iq%5{4MF0VzQbc!$M0F6KEk#Wx97uH_C2$H2p{_H`~S-ox_ao@gdDCzcH{ z4h2_e|F4ljq}Y;wqI#D1Bs3lszP@9kexe1hn$`oob;i=oGj>0vNpTJC49q^qgsS;fsm2ENb92W^_#_^Q zcusTJhlKfs6HdN`%f&X4kaLllu>zu&EtWc)-UR*G^rVU8QWwk$9X*W>P+?3*gn7{c z&R2UV0w^P9dR!Rr`q@0^ftG+B_IbQ=3E*6@gBI2y&P$7_IhqDH-u+=fQdIgXnuBsG z*Vi|i!}3(JrCx@yJl1eC2z=)dL!-D_OLGQEj#`#Y{_vF>6FCLC-ENML<=l>!oZRgY zj>p0;w+6Ni4wFA2 z-Vm3iR;~#%zj=Xy>QP0f((h*u=<}aBc$`4adp!fz_I2wu=FJf0AnL0mjrQ0VRFLn4ZF$oL6vz(bY)e9G|leYPa>5-jt( z^*mvNI@rr%x_PdygRbm zu@>F2G->GN~o@@JXNK+0eS)NonVrZQ-x03D2-^>ou+CK$K58OwdQ|2 zmC3-dwL=YxDT9HVr{|35C02!c@jq%bdB4EKPcDiEf$SGp#xWL2Y4mU<1#M;MYt#ji zWW>ki2_y5Q(E3t-g)q78z6Z+U(3;{%LsY2&kV#aqFY2~EvQ$LHC^+`nJLNgrk;k}tLUk(s>F-f+3bTsglSO@tXhQI1TN|66NV!(=6BZ&Q^Z_gO@8j>Kc zNnPOZj8D$h1D$xlgrFR z=}cCgonp~*B|QeDhIS{3b_e-#Rq=4^ow2btPq3+DGrmNvJQVx+7mLE!RYQadM5kS4 zZgYNBOs+0I0$qY|`Sh989yy`U!0d_=>$BWsW*REejL?hFj3~nl9>8=1YEtK{&zuIs zQ`H@P)g+1NOogu;j7K+_MX}h{01xe3LQ2F5D^Fd%kjb#YeHda^;Vtw`;A*yFx!&g_ z@Z`Lxemv*jV56YSo50t#IV?zaZU?3z81^EP5S^57$NtOn!SyNE4jJ6 zF}5=GkbozZyNpKL>g8cJsKqe4wnIUt^u1p*I)=1a)xy%0xevZW@)$|JQ$A`U?!y*F+Ky1HWI`W0RrpA<;*B@DZRZuZDzU}=$IqGnKnnLI=vw*((T&{4E zHGc)f!Ug|3kN&pu`f3PwCp%zgWYo+g;E-yrBG}`I;D#(m#{17)%2=TH(VZi19qpmZ zukX&kmKMC7#NN~NHoA+wlU5BiU*Yu_w0KnqTnA z89`fqLI2E%0M;Y$lhyYUzDUN^C{AnJ(-N4?qDZ>;FaTnSy#15(aRSjFPm9!xqh4we z^8di&7s4kAODg>hSEy9Q$u6Y1`yA zu}E?J;BS@BfL7O{yxmnn!xYb+UYHq61bQ8v_lw4~c)0z(S?f*FC!){#9b)J5JJ0VU z6|~~_#6%-UWifwsgG_rVUrCW*Yc)$@?kff}>w>RnDDD`Zk0{Y;Dy5U_{)YLnt@FCr z@W}8~&-6&oV9&(Lrx_7$1)*BOS5;X;z30jaCBY%++iZiP=}$cv|E8C3LmBqld_~?s ziNleu4B#Tr-jVg2LVJtzFpO|Bipwr>2N%GO*Q)(k3 zw_ZpW$cMzXM4nxlseEV`GYs+_5(|*eD>(Fl+HjRipbX5E&&-BSGAie)W7eGEUE^YH zQ;3IzHHn#O!2;jAGNpsTm&zN&-V!h zkp#k9exVq}y^~fuVy{W8a!1r-s9F3DA%jfKPmuD0`(Qo4ZyD)SrMzy5vwI-h6X$00w)_Az61#o#V+|6QTX3VPJ^hR)a0`ibWw4N3CU2Si7Hg+#U7^RH>&Q&jr61s z;JW;PXlFbMxRM47u#K9$s`5+xoSl1a!m_5uGw%M*73q_qGA~y;@*vr!&`)AHQoQFV6|=`bgyRoKGbs}y?Sc12GBWQE3WjY@ zoPOU8Jz#!wUQx1}GIxLbKDmw|PehCiyOQ!1)Xm*V=ReeX$PPk=0EPA;F;E&I)Z&Yf zXMKZX&eeze>)A;r(X2;OkSq(g+D+rzogK||Y9)gx-52ikbirAs!I%%Bj+XhvMa4@4 zBZ0hp*B}(sxx9Vf`QNDaV-A$}!4f`CFIs-{huJaM9ex?L_>Vrs;Ze&>?4nCcYuWGM z=MNdl%RBbD${^k@R=RG7%k?Xsac7gq&NKz(e;ItJ=caSoqV>6jI$5U4#+j5!^yG;f zN7>ukkx~pwFc&KjO> zC+;ViW6m0Ct!;jbH*rbdMvj8dR>yKOr7se6aa~;(-TWsz zbS3H}TLTC+hbOm&uda!VP3kZIPH=@?NC<+dk}kP`i+9GkDjlv0tuZ{7Bf<~N&`AoK#D!(HjeJ-r|R^lur+hhw0zgX5?55z%#bXl zt0nrpTYQU69g3#@WDXpw-gRj@?H-;3MKp(mw6q8oz>j`|CBy`YNl1D%g@sc;d4d1z zK(Ro!vCBij-3q&cY`uAXV}Sz)rxeR8Lv2Q#oa6@qYMlTU(JQ3*J)LQzHlNJMN>>7s zCUquuQx2v$KGrd2L$FVrB*a{M|z5`EU3<&l9j9~Pn_i`Y5S0XQH*vnZtxiqpw3 zSznm1z7UCWU?7*!_BIKAE0IJZKW@g_0rO`u+qlup zxx$0-w2IM7iELq!wew!XFSpBQu5wI%to0=y0V~+sy1P$bD>Lw6fb_%uhBEy|p!1(P zs&CoiXs6L?>w|hC=bYbF4SBiscxZ&(r_T<=#FUg0mZKlQx#DumwDgM!x%-g*OJ!v* z>@G0w(rod1l0&pG!*$$j@^LtYU(5A|VmgMwuJ!-{AUYwQ}QXbb+*GlJ7syHI09 zSxZmrjnR-Bvn6Bnawk{6It$f81lpBDT9cS!nQQv5f@GeHDHf7#{gB<;k)-pKn(_ca$%tZo8Lw;z=9~^ETQ4 z%I{Ps?V-;lSb-7Z#RCI?YYR0P(s63zrI|n*2*P&~8B>SEmKQh^u(c@2Sfv3|z;gTO za7cFj@AKHzEcdeadxJg<$gsP){W9sp@l@c!Ja0Qn zRQp!Q^3_!+e>_zvd4kO49GgZJSi?pTiRh#}KavHi2&V{Nr52D<4(TXjd9;{q#im%= zdp7P_4YSmdRhZOzx0D`+cj&@Wx^?-VS#O@DndtzR%k+#z5gNmZW@OFTI>m#`E z`4E!;HI$J9Z8Fep;%?3^?KtYCg_qNRH}Y)>-c_85w-O%KRB1~G@(IB^C*b3S^u-o| z0tdO^%e&0{AhP6`EJU0`72+9#G{G0h(6)7CTSQ41KWlIV+H9l3XIYrIA)Zrbsm`wO76;Gj zsQ?84oI~6>>ojcm8m1;XVIcFnPqT&N@!vF)+!8!vt#M%o~ z=w00Nqm*eezkBh?9rZ2_5S5T5Uh$Tec@?n3u>(4!YPC&cY+!It*0s7BU0nuk1llkZ zzey6q527jQ#PBNw0!>rHa;VstM|Man=vpDo&?mT;3JaDC|Bquz1Xy|H! za@?z=n^zSXd{*+I;0FoBM;35f%Ig2bStm`W)&FLPI%NTqR9{~cTO^j!-IGYbTDSvs zfIeYvRcX=pwgAH;g13eaxUDDOyScIcrZWcuuKc_V-&z^+{0UlIz?nde@tItWoo$?C zzs7-8bHtX)o>NK(?2qM``Nw6i=HxX0Iq0tl4Bm;Z*QEJ(aT_!J7Mf*NUBp~aR^QMp zR4qpiBL^9*f!RpI$8+q}CW#6$zsG`pC%52W07?@U7$=e3n*I**KNx2zRaoiYChacg ztwhFwAy!N+=6P$iaVphhv3>`AVw%J7;E_Lrh}m7v?xk~tCS$BSd5_V&x^oG+&L>k<0+a$DqgmoW#vm%pWg z{}PMxwb%OmsgamnAOAhGfUd1Y^Odx)mDjSAGKswEAD3Dl1}{#&>rPf>5yq|OHgz6+ z@kWGNv;G~-Kq(FOMpikjvKTvIkRkJEI!skhHeSGz_^WlQBInBxNr7&WNS|zJiR5+; zVnr>t=Lh(jgxi&Gf%yl}^Mdb=7I(dv{>WW|)A*~u>6dcAf^w8^KW_7zp4*aqH+QhDH*t1su;92x%6_9yz0jxq7S{H=*4F!kuzB^%dZDxGSMLP{J%Dr` zQIdxALfe~ysFEP0O;JH%J_j}n*c2!DD+BHAk*IB zjRvc;#T5LnLvbmmdhciD;9fasi~Q#G^DC~~4>itHoYao)A1ePUMcHg^hGSzB;)>on zXz`K$INCy5=dOr;8uWknfZ-e}N86eA^pn?mT|N&-Mck1#a4`&}wTg5kp~+)KIVDQqxcWruy%x#Nl8w1t zMq8N(P1f_Aw0C48hQTwo(*%kC{v~QEhh|X!3qyYYu!^&uE&t*BcN>(QJC_hrGc_Tb z^H=FtE0hj3jUg`VEZdSiN3?!eyi~G-@kyp6(k-Y!%{{k-Z4e=7zzPRbF&ep^k2DP85@6!u>K!)F6pmt&Pq$8gAq{Sul}GAb z7PE|e*1ZHmy7Q@@bF7yG60FjBBu;VsvO3G_0mPeg4!agHsCpZ3Wt}Ce@nzcO$ z0Lx?lo7V4}yPF*j|FDxBnSVFa_0q3p)X09~+K$KYngn@10FOZ1dUkQ<@zP%#h@A#U z-r3N>>otDu2i*t90NbvfA-wrqMm*@51g>gq1#f$zTY$jx0TqUf(HE>F@=S{nOYfuC zk}9~w!jV{;h(1vQmjB&9nMraWIUy5>*j(qbU(@M{{T}blxVU{=o7QQam&X^WgJ+jd zSDHW}G_do%xF7Uc#{X8*;`Cjd0)8GHA(Mkxq zZO%wBU8#?Fb#(wvraL@>#Txy}fV5P#DIby3Z)cIMX02^yM~ov>b+%u?CKM(p|8U>g zq*|oBUKWu%pV31;uStv3X@62%i0IA8}3mR-?B4>NUD)0I7NmA(Bov zW+qf$DD&JxK=^4rP!bIFNE&#PopsmT!+uZn_OS)_=~;ivgM7$o=8_iTk$%O`CsM=2 z=_BX-r_138eSR+NCG0y#zu5LLa(d@@kYZ-q`ZsIRijV$RkTd+|CP`uZXffCt-W!em zC$7A%-us6&B`I4=ZACM0H3#2osX=DOF`hvmsKF^sQoUDr38XNlv~u}EHq{|A?poc7 zUXWarP}fJ0oXSdp9jZzFqUJ~cao*r><(iknMt}QUR$J3&u!`ej|M2COMnCoj0V90l zAboWD2gvmd3gE-_hwf)o?<3)t%UDQUJLqpFgL|J2u9ty6gZtD*p*q0Cgmu*c@zB0e z6NX~bx+Q)uxM6S8S5us(A;`}!Dk6|2U>})w_SCAo^w!@TR4zMD6b=X|Ntr)(4;dzI zf)@aw;n*0f9ke1_{ry}+z)yeQSwCM;*uQGept<;#CoA)tN<2HeUWArK^zT08?rxj=x7*AiQeBH7C)S43m*{@^BC5& zzCW&x=c=aH5Io-wEVVAJW>K$PkBY&7)!R?A;8>* z{xuhkh{(6FXHwY6ZzkKgCDXfixLiuzJ&ql4X$plK0n$DI#8ODYegj-sH%+p4h=6mA z?3^^1y$dC&D5zP;NQ$>=MqnI)lZ2^n?1wcDf@32XI4~qVfpic!xN2y@WyB()Q$78r z(QuJ!)SF9gNtZ=B&X}KVn-{bS7W4ZaJ#vAIk})s#`KBR!=NxQVMoU@gZA_3yuygabX-_Q@57`6>-=Y6yW? z`;C{4x$P~%FA_i-p&?e1r=xT2cY_(>)zi2=Vc0PK_7KO#6_X>vS-YKjxcwh1q)r#I z02A3A2sZfrpRt(uCSill6zt}OyBjAEwlS|}2Sbdjk)S^h*t)rC_;`%#RXL~w3lK=6 zi^S+9uz5phLSQpbIzFsZVmVKAaqf6|enN~#^9+CfWeL;NesyLG)j6SAIWnj{Z~LD2 zXnd#c(JA*&R%5x$is;>J#3=nCZOhq1ky(4->YnJgmA|L!1v1ipw;R-R;Y`Z?eWR62Y zwhcKk>|HF#lchNz3}r{E$sq@weK$d2z*2ISbk5OR!c&v=U}d9U}~%(7U#ouT?Wi&&*}ft{D_Z*7ffm7wnG zUWInwi~S@bFfpVH zD1%<(mJ&@SJ`)jeK>yw#D5ms7X7tFPO0mb`fqe-=s0;<{ez*25X zF-aOPt*tUFq$GmsoGB}rZi;p`)h>v(e>o%{p^3+)OQP3(QnX|PWVKViPmFa`RjhuZ z<6>z6bLUG4p>_N9RSY^HdfYR-V8a=?i2fguy>$^icHMeBr2BQLg%t)Gu7TSvJuTR! zN}s2}$vZRUe0D1WZ=gX@jL2K1l7o~O9inbq2g;mH?fMI$bpY=JhfK8>bu?c)yARkli8P|_oCuxw*^)^*pos@Tg-^#Cz8)!DLHytFyS zJ!;$(OgaJxa1oUPhDGt+gQD#84r7UCL*^&oI*e+(59%<;7PMu|V4y`PQzWLKEIXkSwydXB0egfKP=qinS zJ%|n5+x?9j@b}_DnM$d3Ad%ouqC}cD^<5E3vBaNk;V{}cK&~K!wFa&tm{;?}Osc|; zxK|@Jg1>zRu+5(!{>J{-zPoxJe#$k#B~g+0y732hV*%TbX09LgOpQid`kpw`1qXvx zw)Yy6Cg&5?_;TqPt4wg#f~HLj{LiE+gN9v8$6&SF>%gG0n@a438$_x$;)G^^pdQp) z5*f@YJB%cV&<-8~FfzWZeVW!rBt!X^BR-sR^g^f`^V3W!wplNb_Z6j3HCebh9{wazt%3Pp{k@x}H*37;%5F`8x=IREc|bN~ zZG!{+;zcAhskg@O3JktPn2$B^_mWq5V&e0HBT&9<%gbseCgC>;*K&1afACyhkPjjb zjeV()du^4PN(Xv9w3EMCA#3^@dW#3t>LC7qg#vCb|K9Qt;I9-Sq$?(uCJKLZarqV0 zZMXI<5R1Q*F%~!xRggO2%X$3sXHljRebhaT%=UX+XAf!kGw4bebW~rT{doRERJ!%@ zHQUvAw(nh~mel3hO$~jf_|;i2`AL@a--VTXO zsz+JnY1Ug_XSHx)EZ{6$CFlW0MuIgo3fzN+3<-Kg>XQZku^$+`CP+tns^~n$8N4$& zkK%l2YD`jVs+*|%!V{j96)z=6s^G8=%$#$!U9CWy+cX>7B&4*3s?kH-T6}zOM=Lc) zGt8!68$g;vOdrQ8t~5q3Q|2mTpLr{Cp{cT0T94*i7gy+{?pAI#VrTL~S9r=t0k4>3 zgYTBCoR_<=rADABOuem76mpbSc>WVhtjBLrQG5(94}=GUW#Fm{UI>exiimh*a%x2^SefV|Q5QDk69rb<^2kJ;RWF|IZ5T~I6tn5ioJL@9X* z@O%Ou=brop#mGVqoo|NBRtxf0h6?#c9b6=YXoTACC(XUDZ%?!avcB0Aahha9nnmjE z9WB6ekZ*bybY(QJ5jGHE&lc}N&Ve%boB3@BRV{d2v_kSD0wU?EZ!tcbSw}j+RUT;i z#@*E+m>Q0)tJhs-g+->?q)% ze5Dn+p^ud$r4*yen|f}~2r0?E^FhxiI;32dqKt{5s&k?SN}|A3E5S!7SKki^qLI4LGduBC|%~k;T z!=qe3D;2wvexf|#z$l=qyIv>^6q4lvU=4I4ImADzeJK0;tq(|Cu6gq61JS@xC(-g7 zifbPl-Pdc4C4bB?^_O@#rE&Jmm0xV&;x@?Ftjokpb|eX>(;fFDqt{y!A;O&)Mf{8) zJ7_8C%*~lbFaAQ=ChtI*;j}WO_%oN<-pChc3P+dx46^+BF;oT#1>>K5qJ0=gs2ZJb zIJZC;5M2E-EDUuAzPpDBLja<-k%isP;+uG&cDGZj#a??8Q7H?<*Pq}HeX53EpTsSu z&rwGYpu$;7`b9ST=eW!04UMNIjOV@KZiCcO-|ij;*@HbcNo>mavIE`#=KJ&66xaK| zm1+hYqn+2|Sr5DCew0G(0sa?E*{xp9&wrip?Um2gTK5U_W2-u)WO{ElhM~e+2}%)> z+KY+B=n`%H>C$RS$6VWp&r9bM!p^2^p00N zUM6+B278{xjGwds)RytP`CBV;Hv#zOqyrG zzI#8}MaTXO2nN)d88+K^?wx*ph%gf0x!%&NdquEEN^VWRC)NGCpR32O>@l+xqfq>p zrc%v05H`0iHTrA3=hyN8kpDR_Iq=I55x23)>78&^O>Gd8g*v`1?MnqBY<^wJ8C;sA z?&Efpz16SW->08zJI2&!%D4x^FEyTBov1*4e6UyELdmQ4+u)Z(A49v^9$K41e^VnL zFnDiwZuSEbW-{lKU(FOoJ!ZM&u58l3c&RSJ&p6{iHk7obH(iS3Z=RI$kyeypi;krQ zGFy|7bYH^hw3=?6B`*in0ZREyU~(J?^(>x1Ed}kvYKGs+|L)LiXGkqGf|?stvLILS zdcYh=38peprefTl{H}cS@@KMO$tJK+Q;=n+UfkKy6C{}gBN$?6CVv(7GmJGBVl(<2 zmgGgxaUi3|@7v@10WrD}TBz5J6Aq-%aFZJZ;RXl2OAf8wk|y+iM}Sw7R{ z#A`*o61MWrq$u6Jjb7sFhp%|Ljhj#6Fo&80?qGowmI1Zz5Y2hZH};x!>LnCyb}qB> z1mFMUcd}FNN4NOfk*h|nyub$j$n*BS0!G_ve`56cRb@#{_vmCdaZb`JHuoBm^`r}E zBjj!8&?NHfI=3)#o)<&`7alJ4Oty*>#>X5|VGw%?9aHi!Cn3U3`p*JaGnX+n`S!OEq}tecqhK*kxGa zECH;PDT7G?C~3UsV+pyY|N4>lgdr`;CaUNFK{=_tuqHH+iDEJBs1>Z55F1M70V9S- z81{D1in0Z;qlCE$sB}KG>yyUF;Oo8XOrmfBmzu3P?Pw|ed-_bS23=AaBf}omETVuF z*p^TH-42TNT^@>PCCF0;#)W@hT3A!Tdm)YO318p7X3u16a;5W2{EAw7{^&yia2`8d zJN`4kW~s8nY3-fUJ$$f&5Lv!lmIYdzFe8%RI++uOX+L3czusj{K~iw+FBnZh>|UFt z>4Su<(OK|UPAYL~S5MMGJW5%MYLb|0#aMw#o%-^PFO|8g&m)C!T=QUSTOYr22!UZb zWq=Jp;9u@RN4_zB;YIGd*O8{$l=pHzAs15)>vDK}GaPUTjfub%+V^)0$WEK@c=_=z zds$KPe(kEooOB<+Oq z^3-{YUUSoIxKX{~?lf@`^Tc;=VLk$sFYVZjj0eo!bkU!s64L#33mUUh?gN$PGiZrU zMD*JvB~RBDBIunnd=7dOLVT~+Pt2swZ=-gA@&6QX0S;JCp#BzgHZ%-0V=w4)g7>xR zv+wTCltbKuFK%e5>CI#UTk7w(%Rs~6p?$qUPfV~dWIy+Cm!Xg2e9hv{T%bDn#1v|h z@RYBnjwH*RWf!l<(kV8rvox8D07S^|fU^3Yn-Zv{RHF8-kM4#jf$bir%QyGVBoVld zGXEh7+W2q1T$Y;>kF3$$d{=sOsow#bTjQLXpy6idMCUg!$cVqkxWA<0Wd_@-yCMAc zY*eNizWWoMr>{lR@Cv;-wo=~S;)h@Cf4x*n%$F6kH&J1G<>Kcsx1D1mt=!hrR>4~* zh(bBjR=7A%CfeMxv-$TUC4Yu`$I;cu;~Q1+_rrUO<$tGb!`lOlR%M=8K*K%N$^2hc+l!PRoGB3F(F zjZF%971Tjz0?1x;%|XT116)F7xM+gt-B>qlU8NpxU79W{aZdn%$<}C;v_J@*BvK!u zouc5?;53SZu?}#xTkEUxU0rs^LbjevVknk4n0l4IzmG|tp~~Z~DubWO?yb@R?q{wN zdzklV*V0fZYO3O*g_0K5%bwWNN1+tH6B)IIgKaY)&4Bsg0)sY7M;qznOz!NoZcRc& z!a9f$wcr6r;9W0z$W#f3&IO+NBLAmCl`jXxSyC6;Q<2qTee;cRhLXlP#ffW*^x z`TL5DTS{J^q&e3iEIl(S&nW_~Pc8TS#pV5;vxA?-qdbFTRe{>{yFplK<`CfZY=9bw zgUIc%wHYC!=wb3tTWkiOGoD#ue|>q5R;f{BXMAX7Dazw*_6ihf6(AjKKx%nG zICVaMgZ(*BQ1y$+hRrxI%qz727WiRt@xy^=RvUuG@u*Wz_{k1 z-im?r^`Ov+PumgjQ{9H0@&BiPT+0SRlU4txraKFufEqUm4WV4pP?BCX z3sep&-Y^vhiUcn~yBvghedVD90{CDFR*-z@&q3r*v@dLzoWm_kFkbWTYOKewzlRRZX-@UO#>J^yEwS z-_x$flxy0CT8HT~rGr^vzCE5}@E6yKo}USmq##3O(bzLtt#2N(6rF1Jci>Hn)QTDQ_*qHU|*@$_e(+NpTv|_x0?S4%VN)! zV6fv5@>J0KE3JMQ3(*{#?v1F_OKLGRIv+AW2rvQ?bH*2BGFMJ#i$-0ujJys;tt#97 zcdP5an*5utscZ?p+bpTiQLG80d-V7>c0%8JR`QtBSo7iQLCdW70-OB+|Bz+Xgr&{@ zd)2ZE3NG>s3f7QYeTk->d&cgpmom(I?S;zMiZoIx)gCV7A#ATK zy9MF12&d35?w<*LqKUkseQKUjm+x5Etct1idnJBtZu^>%jboHYDeJqg1#58I|eLcpYw*M(qde>JvXo58Z5p&4@Ze z`*Q$`l6v|~0e@c5vn$sL)B`K}_A4RAV`cTeMC?p~L2vl#L1o)3&s|668Gv`PPiPKu zyS)3B9k6z@^Ao4Ntg^_ZxMbtxaM#LpIK!nvZm0~;7~(zvwY*PuuMM@}PER_-Pfst3 zcF6@5YXfjnUw5~1Z*Qc}8Kr>|Sla;_3(4`=n%mbr=r;qJ$w}ZarhkJ3#boz#FtXa$ zIB#lklAzP7~0KhgeP;1I4yK?9FmnSOrh7l@AcxrL~|hcJ!aYjL;)| zxNDk2UmH4u3hGU$+qp)K9tAQtx_BFo3JD=SCrO;5waPVA0lVn>##<|^&!nik!0EuC zDLZU&@n}2k*=ZFt*)#BlibA)Wco5Lu##Ve6I3Nb(Um$)ACs*rC#!G|492vma6*`Jv zl3-kHU@Y)}8Ub{daXr1r^PS(te^0fDS!mb(L{)wOtE&O18xEPLvliGXa3w8VGKDHK zmlqMJ+on*23hQEsIf$Kx6iAn83MH#}1KZJMsV>k}MUx4Btc$q7jk9a0TUW{p39psk z4{$IJfa*m6kw8a+-eab1e&?v8=^Yy5+Q7Llei9`k(vq&K^e~OoR`>I}q~#j6xpBL} z6V7qEj{sZ^BdUt&UYg1^Z=h4(JW2V3is9HxY|4j4r5MFnx*c$H&9&$fUbAJTjWD)D?AfoI)D#Xsw8 zC(()eCiSa?g6Hc)aYye%0G76Dal8YFPHYts%nQeU@=hQeqmv*9^gqD@D|4a@ofz~I>Mg;eY`rkkk90*^qMa*q0%_S+N`0R-AplEAqo2+$>cKQRZ9xkVf zw1|({5BBD4$Nr;hZ+6@Bp&AeITYsKDL(kh5ZF7m7X1AzXCby-{s((3J*8IKXRYmBX zpCzj=e91)Zxhf?wU+8I&E+#fd?SEy@s}qA{sV!`}k;KMwHDzJ0X=Gj=18x9Wy1G>j zQCXmS{{0CZO z;CtThFTdvEnmK2mz1F%{L9U`;Tl>Dgm^sv1d4*2hIQKgG ztHY4_N!rG>v$D1tkF9=%j85Li0ib$oQrqw0mYDqC?n71;s{wZO1m@|>?ngcYk%JD; zr_o^VF2VZ8#8o}VDuWs;``^hftE*|qSuI@Gi|7aOMW4HA*2s{~liON9@bZJUi!k_* zdbaCu+{_c1gPdh_8)BGHgos5O`C&bS~Jq}VuQ89vRZNq(yYR~CEJY@^~97EJf>2668cX7 zrk*5Arat?h8C>rw2gv>IV!waE*dgmrE+bA$S>_FPT2FFB?! zO?=`a`EIv>PHe;BM!g+a?0cDnSEe}_I9o1LgW7j!M0E9D5xLh#1+JcYXp-)=)RGIg zdekNhg}oj+RBQI4XV8>0J!{exvaeFl0tv%j2qC_=Y%rN*MB(5s*G9&Si*o;N95(_1 zPkdQ1!lSaG->#>%?NIga@9&BGhGYHy29pcYnZvXV?$W>jp_?;* zu-nCkzkiQi`l8a@9S-4tEAf3uDXpXfjR)e{XB^6s%!M(D;JA1w3>jv&xp z>Q@_7#%r}@=z)k2x4n92eS@))On?tTmTC--IC)hmzSY)~*jg|{H;t~y0*TXYq_5aR zA1b#VyQy_)1C@}$v;7EbZ8N_HfhmAT-`tpBRB(s&R^v(y?7viWQL>UKur@GFfaMpU znJ~s!g9Bfu8D`6^88T#(F_`ProJ969uHC2Oq}r2UK!}K>L^U{H)981r`I;BOVR3Mp z)QDg1KH!4wkhziCD*P~esRe`}0GlzyQ*FXWDh!I3wQ>0UTNasPMc>ZXCuCPI0pAlD z2wUCDON!smnYhW^Qzij}*p`I9;%jFb8&oHJPN_WbFt8Fu)|cxPuV$}jh~vj+3bdrz zL+WN$cyk&-0b=Q-w!_Asz|TAe&=ZWDrSt#hJ(V=VVY*8zbsj4_Pgf}-gzK_9x@V&H|Q795*_taM!lGkf6GNv%L&slSCso&klf=L=mCd4b zUM=H*5zSPP?ZDpla2Ng;*5A?ux^m>gTP0aPUxR-p7X>>xJ>5g2Z`am+&w_<^+*bcR zR^zlucRFhm^g(#J?&yQejk-Ut>+xPWPo=|>Xa=07pq;UTA5=`m z9RkhmkAwce)c9#ChEoe23w;$4ml0-!Rlt&b(Zgf$G59aiCp8psY8CI7w&~Y+8D8|m zW_uV1k~}}P{~;+OSum)#0LA7MAfYeB2;a+E5CI&^$3wF8bVsj4$Krx^x!TJwF*jc^ zV$WlS!zb(~D(pv?bVMBXB5Jl9mG=4g{pSN06VFH&yj)Haj`ZgLnXhvX9d@iP6B7PA zI6z$a=6c0w4inPw((#Z;UR{ZJs2uBYLFRHGf-b(cv3O@O{5lPOeNh{mdtz<*3f%JX zu$74Do1GmmP`xL)boSYteO1Eb^fpvc|DD68{jFS+ooL=olPC1wt>@VlnO5Qxe2W=9{^y4%92nz_?eK(H#~+myp^nf z3vko=+};d$gi=SnQ#lPEN+n6;;>dIMvt6A2yTs+moN+bi$V#Llz27;K_M_a2M7+Y* z&^hAM7C!lwC2MwdfpJgq@r@P{v%<8kRb4d=H|!H*10{P6H+LR8RXHy;lL$RE4?SC? zV{VRBd5K*ROd%-IfCR%s!LuA@{p&4BYm4V?SrKSW zxAW#MpJ$?Csnubrc5a*Cucl(v1Ysh9Rt^RGPCpg#DS|n&cw!|*b;KS8ogcHK-v;=T zx5JLKC8bvQp5=Pw&(6IhjremggE>tsf)X>dUlfkgBxgnv8|IGrg9PA}EIyxl`Z=}) zW+Rh44ZU^FqfAA#<`XdI#m#X{jNywACIy39e!szv!pP0`{7$vCi>56Sf6a}2ci$hb zg{{iJBz=62Kl5;7F;v$cF8b1qH8GYoT|e?^F@RjbRW$)0n?{xVT>9c$KIAj;Q2YsZ z{qzbc+CTk>{UfOdX#ble8ssD^>Di<{ZY|md?LM^T@-T)-5L|c^D+=qgX`$Da@l=D$}|fEAFo5Ne$Hv9uvV|`oi$Y^I7{L68nGJO*`KZ1!R9+# zzRgWsTs0{hE+(uceAE=@i5sN;RT9+B)PCFCWA9Lk^OpEoYV3su2Ue~9&O5`GtgT7k zT2BCaIfg?!K>7h)^`hGRzPV(X&~xz3fKusMsqDBc`g;ah*~$q97R3pS2Q2`0nqL#&sj!n>sTzVcxc_Crk{# z=le3uu2$zW*57`Yv0qQ0o_lE8kBp4I9jR!ugj3%LoIO1sx2)&zU5|eHA-q;|aAFbZ zSZP@Ib;LgEX%(3nLK%vk-6FPDTFmE$NUDEztpCM63+0uGj7qs1T392+19bW~VvR8! z0+HkrRDD_+S$G(?I-*5<<;)a4UufLrrkw67&)Ff3E?nDkM(0ABa95s3M`l?Djr>uT zhgk{pldq9k^3uNdLJS5f=GglS<*4&$Ojk5e*l4=u%u;HiNK=E^%fEvk1QSbq4Sy=; zMjh=J-MkJ={|>}rp59-sm>kyOzI}Fn8voi@)m~$9-&tmcp?JjC>Sm*7`%t@AnGK&7 z>{?j5>uC+S{1?}bQnElF%c*^3OuQ{BP`5GlCeVwp(#^-6tAkUf)yB@d9M^=u$7Dyg z1lzVT_=h0S%KZtv`QT?+`+%Wy-4ReuUZd<=vX^`L=*s$r7WTs&Hpm5gVT1TeNSxce zK2{;d^Z_u(ly^zl8~$l!c(sQ-5cDXmAq~vLxlbc=ve(_ghW;1*ANJJxLy^hJcF}ln5(DC)E!V%c9)-;N%NXDm&xV#ql)g)h!w@(jexGG;yy%w?sHVjnpDziJ7}DZW-E4Vg%iQd7}haP0qdM0-v$=5^bypNF)4O zX6~P3SX&fcTN4&rw7_+8jCs|+JSJf7**+e`!C+BpOC45 zPU93?)ge@TH*(6*)Tko(avyH=Z2lr3BH(*9s*&>i_eQ|KkofNTX-(h^l{w~TWk!=% zm625)CI(3T!^A{dO<}#gnCI%<@yK3%`DG!0g0Wd|`7gMj@5qXed;o}8=CXMKG!6>Z znZo!e$J5qF7l2x;4%MueteX_X2#x4J{Zgq~Zg`HbQ{?oK)gOiKL0T=T(QjXN{FQ-$ z(JZ68yBK(BiL4+x_}HF`6yA#{sIg)njHus}iVmM(BGp@CYpAifNX=$WZ2KK;C)8lS zmH{JJU#Pu^oT2mc+`A*MYQMi94kjmAy1rg^dfr^R?{%eJS$P=fFd#m2T)!JG)A+z` zpRQ%tRNWcLc5@-cEVbFvBE}a7?J}s3l#9!5hF9j~Wp|aSg=Hr0!bi9~lvx8snAz36*2| zPcitH1Jyx>5XFtKNMBzaq=qTP<^%dvetUYBuWmOZ&kIW`YV+mg*(C-c8pQLiX|pDN z1d5<7-u|N%F?iTd{A49&wovZ6)@I~-Zp*|mmBeP?+Sf%o<4k4)5B=<~Cf@*i6 z>{acETH}bQ@qLUETdy5><-qkF0aQC5hvY>WJRB!2)3jslrG6v} zh0bTi!Tza{hJ-@o1A`QE8q(uT*B&)~_)h#Q55;2={9FL|$3kKO>BA0TYaHwS(mP8j z^oj75KZaUSO*|Ee08eqJa7jnox8sDE#TgjC_Vw7B&~3B>$A^=wj`tFe$>DX}F)|Z} zkR?7VdlPR5@K-S(4M$S}bNrvQl2rgB)iQ?-d>@9MkmS=EXj^N(IsC&6{%ak+GE%YH zAHOJy1R^=c1AC-(Q0Uu&7sHCEr7tVV$K{c#1zu?%WXBKR$1L_rvbe;UWa>+WzsB+dA z8@Swoy(01N%+Gn0W`aUucc{%H5w>!X)`}=)+ZXRKOQ{Rd;6XG<5WZbm2h^~js`D?1 z+CgwUGy)-ZH)i4f?clNgXo}=JQhml|wD(F_hjwOq5t`R*kU*eG7s%m`d0!fWlsVGC zGRYt7$6_Ne%9s^T%4Ho*-8UXiTbwEuzBxXl!VdsN1_y2`z=3h&ztVbty&H)ap6=gq z!(H+7w#lKb&Sd*h;D#)##oBxFU*+HL^MAQd1zJh?t{gF_vJsj@n6(2?n}f>CgF1e# z9DA0cWghoE5L@_App{y7W8KCNhKO=}eZwD-XBH&wm9rDaxyr38YXScENmQh2Gxg za`G&fNR+J4V=1j+YvHE}QMNY|H)kH5rvzzFs>`Gx2n^~g2w=Bb*k{?=()~iIO{gL+ z-^-O`5Kf{=512Pi#%eaL#L5+KL8zgh7?#}q@l*F7iDCXlpXu7KUl{Yh&gbVYw8;-D z`KBdQe!pEDnH`$!`#Cx<823FlGTPr>)YR8d%S6%Ez-#UALvm5Y+;YjSkF)(?)>FpW z>FUFvU5cN_!}%FYPCp=9KON6rfR41|ZLfcfTA`RP2zjnVpXjl|^_oon?I1^!W)ba1 z4;Mw-G{_0tgs&0hv4oRxs|hQI7hL}v`-{jF)%(64>zCm5UmrKOcFq7HW}oZIUg-r4 zQpb1fLJHSr1L4~;kB53(FsH$Ce@s`G2T<$p77i1`!G}@#43A<7GQgP(QASetlhU==)@`0qkJTiie`@}#)7-KeX9Rk;4a;NNYpO@mhMxCxW?_-2jLOY zS+?2A8dSUDIs^2;B8Xfsz9KS2t{Laz*wk3{zf~Ef&i(gBjR;FAo@&I}{QWoLU~C55 zt=eLmo$)|8JEOMweC34AlFn=mDZD)MOTYkm5dIn?gHE1)piUgV7N?)p!~#0R0aOHR z;%IgfcGu*2*!Vjc1zQz+phl{dRYu9NPQ^_;!)q7z_1$krjj?@2H3-zB2;Qh6d7g(C zT(R zQ%RbaF##a!!1mkR4chl?a^27dK7-JyBHWRIiPD3#b#|NOvE3iZ@bxC+>qRZS+cDkN zLW}90+L)Gcjzf*31wtL@Viv*bkS(!Aq1wKtXzpxTI}}}pf)iO&L=h~A0Whq-{dUm- zdU64ue!T(#UMpX>X}dTVOI-4#I(lQ8F$YN9zZVlE_HYc$3* zp8T2Ih5Bs*G#$Q7aF0(F`i?sQ9@j{(?LB~x7VJA>h6oA|k;kkUjw%07xYs>WAEW?2 zoe~81Xa)!_|9}sfSuHB%ZvhMMFhXRQ&f=$1IZDtTl^7bpT>z;E7Ay21Kl z>G{p>49(Aua=klB2KMem{?><4A|39}&l99MaCu1`W!D-6my4Bqu3;9-(J;G^a-wSKEb1d&+@ z?2Nc+Ym22S-vB*bky<*I_LR0-?jDBjmX@BjwkG5_BHrWn|}NStvOfMNiV5J)mgfW&GPJ% zf6LYNZzuorxuUPnJ|`Y$tKQ;ut^Q57rw-lPXX`J^(RO{K>+3b|#t(O*7(_(8?0vl_ z6N+8pv=US-;W;{e!*v73xxuc&wEwkH523=@8_pEap{ERnoImNT4^3*fGWG88WbROt z5K1>d3U9wWyYkBa!eN$*G{1lTP}|dzSN6xr7z@tbL;6=UA1=?@#nfSe^8}U7jAy6jI0y+rKzWW-f)~CkzEip3NeyM>+q- zQ_0Y=@(4@|S==mRd&k4^o|^>U+M3YXc;m4N{h*olDKhWDHpet?jUMDRSPDCvUte%ox*=eb^z zYguwtzwIIH;3yfJwDkS`!?J_OyK9pnu!xW0U!*jwzCp)A*nz191|%(mHZ`M9FO@bm zt)GY(4GtWuV4MAmF6iPKVTang@3ahYfWK0o_%+~iRy&7AD`a)Zd=e5%0<9dghlpj~ zaRzIlfDvkv>^(Lja6KD#!#2yih)d(NBxOYZ5;EwBfj<*zP{5L?@*o!T@E~}Ez*jaL z9j+5BBtX*nq4k*HdX7)Gg5t9K)hW>&x>QY{XK!mdg~SP@KMp@_mrGEMBJ@TeN}&28 zei8CzU+tJS(4Qe>sI5~m_sF2lEh|c$5z9cx{1%P~E8G;zcHM!-ZAsdK3#92Tap>5S zvF~Lf2NJ^_xTEQqgsg$5d$W((9yZ(dKxaEY5)iAwO;1tzL65C6B_`a$lvaV7Z;bFE z2&#wvoA=v$yzVLtnPEv)NydrC7!0j~6UH(7(eaZgbXB&Qy~?M%NZ!DmaUikep=ImqZFtq3pDcBvLBOf9qm`uAy<36%J1R{W zR&FOfewP+K^RZ5MWO@*f*1a!8^X;PvYPrkTDwnI$lx%)p`P04RETe3=E|a8vq}N^ zXS}Im#+Cxg0zD7JjOoE(9ZsP1X(U{29_9O-)SKF|8sMPJ+58y&9+}sq7`UG}^<8#= z#m{FW1eiX1$1zU9)74CVIs3LQdxE#l>i(|Y(IEu!)5UQ$2k9jA_;#};zi=5)t3o_$ zyRc;Mdwci(92#~@ztT-4s);Uohkn9Wf&1kn1&nl615-KedG3HC=WO|9Zqb$eWc_w= zQvw*?ZepE`9`A>7{l6XkOOc83Yy7(YWBKd)a_iSWsRvH8N|{Ci6*LW5ZRCISut{eD zIStIWkStr9ke{<!cuK%_Z{Yham&|GAL2CS87T$u7O@;ueQPAYRq~?|L0B)|9h+1lhmaN9{#<9cy3R)5hV% zCY3ba3i>}w$?mr|C!H{QYdterv0|Tnw~SRb@Yowx!&R5qdlBuCOW}`#TK| z2zWO#SHd7X9>*)KdrjP@23(F}K{EQ%&W`HF*|F}L0ea;b4w;Es@D9)V7PZnAwJ-p; zT;oz&CPx@nRB%>dwNX&<=d*h6Gcdqoa%cZ!ypz96l0;{tyJOO!89Fq2Q~twWJZJ8Z zs5Q{H>mJv3uE2Z_Q#&?pEXF6gn$7NH zZk7aIA~4pYsN$d0x-`^Xh3Q8G7jNttS2jA|{o`*QH2P~b)RDr%CK&~imJT%7D5B)E z#YRkXh9SY|4TA5~28O>|mVRF3M3M@46|9-x0c4dME3bR3ivA+KYs8VV1=@n-L8?9Y z<;cJFkzxFW!3KMPi{kzV&`S3{ie&r4Vi^@|Xg0itXlC1WukXW{N+{e`+pL!Hbm<-B zGk%yZvb;N!Zz8SnpV}tgyu$Df^R3hNY$Z2D4&7v0?TN#qH^oho)U%;d+DIV;_egu5 zkADKRSWX#GHE4MGaJh%J-bd}%PzeUAkzVnp2efy}1?3Z?$PE7$lGDfR{K*uU!h7)? ze}XSPp)Zd*y6LjgUueFboVeU&nah<@j!1EfG`a96$K;tV?!ur8N;<$ zd|Ol`K>_M22~em;G&KnAN9Qpzpwm(<%O^1#^st*{sK3)L_Sp3qnXiZ`iKWBdjWAZU zT!UE4&O~IMZxw!@NXRBa*VyA!%+y?Kbl4+aE@533`Fb7b3FB2}ut`(@?4dq)7t`}O z+G3_|D}82rIq0c8Y!FY);IsiNDN+VeCLcyG)rB+sZ-uHY(Ap7L=~@9=^H!Mg?vR8g zP^&y~ELv!h29gw!dXlJ9PxpEcp~f}b*-YKFO#y^y82+lLO#_g}WBmhAe{q&bE2PZ% z)1id#&4p$P%=?pV0o0J5t@4d{UYP|@_PHrg3o1YYGpvf5gS@oz@hFku2*5!xCgO`O zM&mkc@5WCH%F|~6gXF+IG;b(5K?I;gJVqa2yGxV@UF?SLx-h#T+G(^IGnNBYdI|Vw zNHgNZ3lk(KM#_ezgx~%$i8XGqD@kC%0YbxH(4f6z_gCr|G9-F@v5e=+v;&iVrF(;D z&#aSOjgiZeKIupcb>3Sa#E<9siFDt$QH11^ritols}MnL1yo|U#J}&E%%xhqf5-2} z+(5AwarU%S2{klw^xN9qZ^A>5lqU>4tY+pP^_rfxhSa=*e&VBxsekbE`bYil{m;1% zKVp4ayP!n3G+Idt4T&l*f`TkS&$5eS{ z5xpsoe=F&?la(!Qw;Rz_RsMHPUxn}H_~sSYk30NhEy6l-d{-V1WID+G&fA(Md|i&Q z%-x+vmlQ@nR603AR#zHI^V(=To9P?bKP7~CP7M?x4?7nn+I@DW0ecJVQ0M^fnNERi z3rUZsJFNLF{c@d4eckyY%TP^=6Kb#@E^Ac}vk%}I&o-ehDkBaG&l>*Z&Me~2<@8<~ z2#4o&4b#6&Nq2hei3v}{zgEu6V-e#skwcCj4#mE>va{U-Lygv3pJ#A?2n*J~ur>iy zXrIXvI*;{*=K(r855Mc1vUNk@ixRy*r8znLLm?Xt;mjYGm{;#hdfR*kH?ef`PmO84fE_TgQpwYG+>w5nl--Qr}7JPYzvB zIFil#KF!O4*TaWtsfX*Rn(H4bU-b-Hz^p#O0yqEjfNrk=opR+rW*L)UCGWs0b=pFd zI%VKx!424%6qvC{p-98mD9nqnluY==&zbAX4$StGAvZfoS>^rGQLvGZ@3}%%=gsy9 z!-vgSLp(IF1U%6e>1<296SMU5sv_#zBAH-{AZV*{YO7!2Ua2){2d_Cu zNP+x#i6{w_2ay|5_X>J?fD+;yZ^NoF zUcxE^hH5m8#}X&(_D~hd-Ud7_U#9I zIB;M~1X*_J-Z*;R!$}=?@XJB?sH0K5ItNdgsl1}Hm87kPtdEklW{Z(?;8)Q~Y7oyP zr&WsP+d*oX6ip-$n%?|NKlU91lE>m(lB`@Sf-19~{7OQDC@U&t&Uj1)$3N0U#-Sjn zzN#YFt2lx!zf|id;8bLvthmI2n_o>x=c%TbsIMoY$eVXmz39}ur?1AnkdMDkf9KnC zyn1$9xks!e+W*etU_pC+!W~@czNf4erbeJVm(0R-nTdIT89|WeiwtZwgaSZzH4cEh zeRYk6U6#t{<(=nrI(`9-AA>Jo1IuarsmrAE0h2&idb~Ybh2vzauhU2OB;lo~Ov3 zU;y7Cvv5W+Ygv&$i``_iEOZp={{HAOZ`~I%;zK=F))F#_#>PFi4caa55 zc-{N_<^i2L5x4%isj14({eqncxp`4U=-c_s)7wtLFaOpWvz)4Qx@tVPT9Xe(b@$xN z-S=c>zqb$|c_#}j?@<6xEssWdFK91BPI~F_I3Mx3uKm-R0TcgVNFgQ|lg0-)>)@`5=w?AoZR!^-g~=zwXj| zBDkgfvF%yX@uu3*84n+mvy0?LddNQMu#0!(Oe}s0i8ZV6oR-IzGx!l*@`_-~@z~kg z^I{ci`)z+(WDcp&Rokd`q2=}M?b`ivmR<+Bf0$+e`8GLA_S4ozWw6FTMQJ5OcScaS zshp#PlB1b|qg*)wU(NW`5I=^j=(th3vDS5nr*0B}(yUN>d*T2q0S5Jp&0Zkq!7JZg z?h~%{-falUKseIa(VC=6gz}AgXm!>a+p@TcVQK|I_ZENu`ZWA)2dw(O91vd)@UqcusQcFo4> zTXOYQB50l93(ah!j0KEt2vFc3xM0uUH$=_d_ZPW9{pQ!-B+f-^FBq4x^w4+fb27j-$YBsZ7Uzx|OQ2Zxyc2fKd^Jx@YYWSgmeZ2niX)7ax+Q3`vf zG=Mx%PmGU zQXoU#NwfuN?bL72?=8veVcCmz=EhY6Hg;6~`;f-R(60#EfokvH+=S352f&B)M62Z) z4U@nv>}@U*YJXxzE*|A-gWz!`lH|_aHX8tB_Pgf<{50c)%$Y?>-!emrrEclSkn_DyjXPRNu zx4c`JIz{!9hd;Hg{~tLAmcUwpTFxJV<`1)Y4Sgv4Pof6bqp8)?mKFt}eQ6DwqHqL&njdxFnOr*u+(2`#5)c52n@+1bwex`b*x6)k?|oH&>aAS zNZ1R+S3hnc1;cR=Mmc&JFAHo(wlf%U(kWpBvo+T?X2cxc>2-s>+EN!Mo>SxW+VvJh zn85coN@N!WGCamI6k*MZnc_x1b zZQXw-9m1(rpP`1`&6xdl3bnq!nT2YEM#Cir&N#<-D$J}l6oH&_j7motI8?h6kpCIk z?9ZH%!93^1`4~+~O2yM~vBTQ|m4RXmnW@**V~4jX>(X^SuGgd6biyLecTc2kB8y+` zUuLD8I2F?&!ksL6!mM!GZX@&R$JUe<-V^~wBDA|X6YmS_<>ci>?H+CF3KMlIOwOI`@PIlqx-ZyAH5bUa_D zznwv+Jdt*DvF2MsQ2EnpPGbSkHhOv3OW)(i56fuBvOgTh=nzRsu)PH?t0LaF8z7hb zg;~$CO-bIW|C}`uK@F;~QsEy^2^L#?i=xa|+UksSlW7}bhBeUd#-+uUxs4tHF)<<+ zX#DBob+t99!EnKo0u8eW`Dw<3H#eH~oPY4hb!sdJXXOM+luWtLpEplL1YFN2n^^vx zbVU05{jop$@%!b^1W>=~a|DAqJwGqCtf`#(cpYyzO=OuwQ>f+N-kkYbO$LTCuj(N0 z#b#+|t7i;}#woA|0m$&9srbEp&F`DV58dD2n z|HSiT_s^S-f0@}gScp%XwzjMt?05ItM*i5{5#K4yX{aQO{$Xc0R#yRq7=%QUat-nd z#9DmjAs)Huj`T%&{fBsObV${tEbnTPA(dJ1Z8AW=}11pkrEp?Elp=Q<-_zU@Yu2pi2E-;H9d5y zQ!5F?ddYzqcjakxlaeU-a(hFpW37-hxT_xHyg_xMjO1OQq`{w+K zRIjFfsv$YRDEngoYD}#=yv7v=CgN}>A~n!SI2oIDcR6dL8`#C~`f>i@WwBq7^vGY|H9zw6Q%4hvljJ zmj3Xj7D=`ZC_AN1>#Jwskd+JH(P-;kMYLzO{!17cYaf|C{YUma zACvwVDXpXR)#uYenYE|8^ZTyV*4xSDvzKksn)fxgYpeb%oyd^*!5F@mKXfrGtF6yR z95Nyz&5xH6JgMk?L1B~SRGrBelcl*|E)5_pVV1jN`=E?sd>UNfTQOGxVIV-DH7b+^ zjDP3Q9^Ejttx+Z*Jm(ekUoqvNAcI~wl0k-InHNz8Z7qYuJ41?TMyzgmZ5~k-5$7Eg z?IC&o1qWvFb_3J=r$hyf(Yj9>dRHR?Xd@+>^Phx(z{<@;HgnWlzi)2Ke@brK{mr*K zB#5!$eqN`lXM^NE*Ejv^hJ25|ms4I`ZW$+Tj538K;rrn(lYQ3 z<4AP(&(d-BM@jsR3abC>BV8)su-fjs zu~h53+%$K?ybN8c@l`N7S*YEzhJA;|@vj1t2&Yx$O;9}Hi z?b+F3x&0}8snJ2h$YHgJ9iU-|mA^-(iH>(=6^-#3anqqBMVen2ov*+C!o|Z${t8g3BIWa9WyZQ;YEt0& z)9WxbHYgI^e}%xOO5By`K;WM|4w_U=0Rqr9P&_y_*aaOwi{f8z3{+Wpm#mVDviqdw z^Y%M5=HXPG_(h@0F9T5z2OzIx_%Vc+r3)EXfUBv|n|3B>eCFfyAxI-#BM7xWp)F2# z9zz^V*c(7UMQRD2mE#O+2~vPlDJMTF$icmu>&iG^7a40sOy-yfkpc3Yd}eC6g@1u! z;;$^7Y6YHOYuxy6+e+--sB7iwDaQ%m22rJA*KQHmYp+c}SQ>3uBn$Lt%^IkN6VEK* z&_z+9I=rQZCEBuD%2Fy2)Hrmr91~c^w&CaoCXwhRa@bje@yvn$*-w0=&|uPW)O0FA z{bQE_TPbyVpxj*1D6q|pj5sYcSSa_sP~2VB;SP7Xa04zJ2fcfza_=wMf2*ecdVF>= z!o|3cYoa#@a>rtw_?=`u4%ed9Uxoo04fyb@qYTVL0<6@z^n$s(9F4ZNGf_OPe=4jq zYQ2u(pF^3o4wQyBQzwt|dvtq(4~GP0s)4mT_+s{4F}z7i*_{pl#lQbuZqW+8qc$8| z|MmWg!a)9eXaY{o2gCWq-z~X~R&wrx+3z^k*E?Ts1|0fWeSA;}Ki;xE4K-26{Nr=;CPF4*1KASM zp&yv8{oJYf4g10J^|V29|ys*o6x zIqT_?=c-;Xze8j1#3HPh;%f|k94B4ul`z2gj$s3lLzo=Xq&< zn#gei@(mMbYhG8kAJ!gL%W%8+eE+7%+&&$juYsK4D_kxE zrbapPDwFb2w!DO)Q8p<~r*Tq&id2&$f^uQX+{4xy<$V7&zHo1#*sAZD76J`Llv;9+ z{B%^C=8qxPwhuOFkF8aW-&5WjvVA_UVMhyriwm0OcbJW8 zpe>^@mdrK8fGYKW{i@9`@;%EeBhOiRyeYQm67=7J+0i|Fo~fV7@H~6m0weqB?eo@^ z$Qu94?tO39w{ia#NZ{AH>lyGyK`5Nt4`?qL*1Sx9T@yi^^OKR{@G~68=*mA( zOLVpXZ}xVx3%?Qxf=+&!@DP^LFl)%gF<0BfHOE27=hFuZ{?TzcGCHYYJO^Wa67}ta z@q3xzp?jf62Vj5nqn;=`KtiAUOP){4sY$1!#47HqS>Ngx^<4}eXAQ zCKKTg_jF-atQqYYj>ghx!XPoQ3!e~nSw*0WdpCB`Pc2bdO6T1Vn)@d?f3~t?jQdfw zheoDZ7Ds6D-wF)pw8!_ARa&8H6qScC)B`aAv=kcf1w=Vy7 z$*)+Az_{qQ7%=e2qMn;VI9#Rk#3t!;{#{#Yo_sOXYhj62RwGCJ6W#SY>?S~RoZ^Y`A824uG;$g ze*D*dD1msCn7@Q84$Fuv_JBrJ$(PxUz{$1QE&Z0G9O~v-Y%>79q<<(ik_Jd*TA64?6M$~m&DgS~iordyD2)Wt(o}ga1`Za92unQ&Rs0r_Y0=SpZx5#Rw70K&@JM!~-X&jp{*z9bL4T{ufeV zDk>gGn@JLfK?gXSfejCr7Rm9n6^;4_Nn%hAy?bk5oR+Do6!;r(NtQw8s2k>r+-7Oq z)f?naeCU0SYfkuTm>Ep2cS37%-_|CeIr7Q__`jesL4B8MtB2OYhZZX}wLqz1Y#Ilt ztRq@x$kb=w(Z3c~dRAP2+;O1+=g45G9}OXQ;hCQs(E{5rCb-lq#3iNVfy6bE%Fqhr zT+2ugtBZt~%z%;bt)ON$zek z!)yzLNu5GRV92~feyysM9 zG&IZ#8yjy*)e7t@9D4pCL~?L|Tral}f)!?JSDEZd6f4HA$G?|$@GE)`fo!WfDuwM+ zzuy>hIWRk*2{|mA1T$T8BK})F(#YSl2&rO`ThdDLG}d2iF%Yt9`byf`dNa+cy!P}| z)Yft4Kjr-=_@%?M1TZ83JzW7WkEa41O;YCj>s9&>tHTB4XDh8vK9iwEqZo=gO^tRB zQ6pr}qttgFLLS2`;tkKMt&q!T@%(YdxB|4S!5df!N!7BiwdFCg@qom0o{`I^_QI&= zDVG1R^1vt@_}}`?+!YOI=CNd{jtKk&2R}Serhn{APZvJ?By?Txa-PTM z%>0|(PmlDh{9W!Ba?aZ2T;teo*1Vf|alX0R4JPA`u8Y>`uJ9GX;2peqf_=>0qm=V= zv`fo0tNoP2-P~zm@9iQbIqC?_%=YrAqUjS+B(~XvwndeEV*}d)Rhr<_&xST9&!Br4JNm6_5V0J>#!!@w+{=_A%YCPpmZ}3 zMM6pGl8_jT2I+338>G8Kx;AQbca286L%JKu_xZhl?Kt-Lo_o)IU7yc+A_%5ld#=^( zpJ2SwuO%Po^mfXg3PPzS&003SnrcD+2r70c72dAgzdzOc2o;32%DOye0V9Q>dLFcY z{wVGC*>5F0cVpD`-hI4esLc_stN)07?s#Qa`;ok$!1lv=KZh{y&jC5Q;FepY+*m5P zMXpK-3=^o7?{=0NqC7&ZZNjDUqZ7J$hGl)VT(g2I$ED&xwF6k=0N1LjPa!;1Xp| zVZ&b3JbyVLCkT=aQ(;i&?Uqq*nY$^DCNy|9vOq2TpSzu`?S*wf_8EPzG^d z!dCxmFB(ZvKUXZ?*A@S053&Hi7|<*5{DF7}@z*VpK2-3cs>ZYwgtZVArfP()O}HS# z`??lrkD+D9eKlr;0NIJd+Jsjw^eiAKFqt@>PpGhDtk_=}JymO}mgm$HQ|8sPHT%y} zx}xW^-`6^CglwWwZyC! z)w5P92t)7t3}nR2@LXX}@pk^)sQ41Z8=qbus{!>S(^B=>)c(LvjTPY^2|WDb9#flj zqMPRina28J??kjvrh_JG1~z>ybW3xtYV?bwB(6GN{P8Q-iMwh}glL40hWd31J1pJyi?U0@5!M zGc5@_RSt<9T-jV}*{`ZNoVj;|Or{cQM$MOe7t-a=zl4mWrAhAD^P+^qhlL zv^^k)gdtP{8m0qS%Q+TNCNujLcof%2>ekr(iqcjtQP;U4;2UKs0a10=0W5iZ=a<&< zo9o?Dd*)xDkx}8;Wa*&l8cu61-Q7|*>si+bK`(t|iKCo?SIhH4nLHq)eRA787PejL zOB!4Gii1nG`10B1aes_}>S1~!z(>G!KQD7JdNifcvFq~RbS67X;#TN%Hk}cJgY<31 zx_Z!b*gWPuU6LEbH(m+Qe)RhxaAF#qX$)dF3}YiG3-&Q&8~h8Ubzb9(glNAtofH*U zCv@ch2<4o_X_)+j+h-JHQc$o*_inREC^+xo6iP^9VZAS(rIuo&tsXm4V6#c zJLLGCTKqiP^EKZ0HDusEg$&4_3C+2fH}O=v?APsRd>&2n{Buz}AAujjZpchh z-eDR3bV&PuYX;$(1tlOfmG9lP4>T|li{m0z!nv4rSik6k%^I_k*;A zV1~UbTx?xmc%^1gQ4N}uI)-?{zhDv%qM^gz2ZyP~n+aB%DTX^41_sGU)$BQyADKOJ zBuBz{`vg<0moB%+guz{|L-7?D#DT*3Y4W88j%(M-=s_ z73)!1BSC=M+#3tH|M0^Za3gWK3J+CSIY&%-?7CX&QF;nnOUXj8>V4FWDv?tek`(LA5>Nav>&Eq7Lboz&rp9ew0COuVNA-zZ_(#_yWbt1}7p?0_aC3X+JGb z!8FkS8_mMbIU=vXGMC^1{4(ayl8OjR8`(W8X^RR*Zmxnnn%eL;Rhx|E+~8aqh8jkp ze91%OYgph{AP4OB^`32A-<9}Cf%l&4@NUUiy}9SZZ~tQ7hlI-9q^|P5!@h!LTn|?F zG>1h?ho*~oe!2jQJkj*-fHbjQRHryaY0#T-x#lEW2I@ITZ^|&;aix6!wgsnG@Y(9w*TyApA=tFJlj3Tjzwj(wC}84 z)ut2>vWJgShwty5bHtsy$!pfXO*x~e*GABhy7#CCPEx2ek+p;{b;XG~6jYdo3O z5NE*T#=gR#9(-+jkgH{4@9ykq{KHB5mtP;Xb!{j8#oq3&uiAc7Q^0g^v=Y_R!di03 zD>v)8?AfUh5lyk0DM^c{|H@(ILfV^Go#X+*W^GRkzeFrF)4Hd)C5ua7F!Q~A^8Gz6 zbF(ig!mEu}^>1f=9Jjd^t-akg#+jPyyjm>#ACH=&hBaIAb4(p%Oyx{0UBp3ua0VJ< z5-WUaZNFxQd#qYzvw#_os_$zUgW&W+D5{3Bk(0}BL~yocx|VEMxKZ3 zE$Y5ywV94)cwH1OEwoh2sV=us!?y$3$XZ) zbR+O0v7GMrkzA>&g%$d5tIQfIvllW5@?V8mx}RmP#0EAkKpWHXcz-y!@P`Ey@8Mrd zHeb#F=P?y)5P}lD%)B4-awS+xS^C)Ah?*=S(*VLt6d8x@A zIoHx~X#ID9{OeC!{Ax$Aa%?6kX`lH`9`+22-qEs*^8DYTS_dPr-k{ZPbowDI>;(Grj>pV_i z2|eT=nv2|sY^hqQjlRZt&A=rzcHZ$v7|8_Au*Fi~V5!sLN}7z+E(XuY7eVi<>0{nN zRc^NtHBG;bhI1TN$Yz&HZ~V<)C)-ggJt^J~c_QMP3?!8^jbPSRL9RMJ=F%<>cu%+R z>NHdT1baLl7<^Bh5=P2gr2z#H*^5|^P)sbp&kdmfASJll?#o$ zoj8a%|HMlb6m?=FbP;GHH?#@I$t?q(Vex`}AdIuNEXD{JkdRr6klO_&Bk;)@3~|Q% zjcMN(=pJw7`|L2*8B3{6nbvae)G3x^36$BK*QCk(2wPxEh&H{EH!$@2(F>>VWe=!N zo&Pu>87gGR}kEcq-0R0JxUZxNe&yLJ8{PTS8U zNZ-sXp`(eRjsps%|E$T73rMDO-%3xA^sLcTB83Kf87F#a=0^oO7dR)3RJm4-O|tMH zG+NjrNG_Q_pHt7iT5md0{K11C8cL4~ylu$!0KXm*=pSd(V%z|%^~&$|NT4L!dkOw( zKtY$pWKch`z?_rOZ4Ku%J}oiS?YB3>05Z7dlnp-1b+U`W=_N@+8sMaTnIInWYHPG`r{=Q`zxtMXF_XKcm)UyS zyZ(lX;`38yTi(shyQjl}z33Z?wr1y()+5Z7c~AYDd11c85VBp%{av%j zDJ3RZlhYUjx+^YB0;>GJ+tmRYa&o$mR}`hMl<=v9ta=VK(=5_7=^AuY)E^TK0(7aq zsOrdhcwnTH_K;G3#O?C5VG?w(3jsmYXWpDL7h3>qP=Xdn(O(nQ#dz^UU73TLW zzqtJSWxs zrO*AdB$`J*dSfuCXGg*6zdtc*buDEFOAEEh^>Drhvva?HZ&nuDk6~|_e0(mfPR4|L z+E(t*`dfvc5jWk!a^T-rX4Ygj_$BOZDX zJ(XQGb7`k*lP}suad9io`Nd-{Uy@22B zX+OuqSL*>V#)1VMMmv|oE?ARJcNXH|HFq#}P~4jPUoMr4>G!&ac7e1ETf! zK1;2bPE$M6$Cmw7__=v}te+-}cM-d^#P0v}?a(D&|`e>}MLzkSqq@8|mQBZ4Bi zfx&(uxo2-sX6(k^=cFYr=0!67L6*nZ*}_5l3Rxu1dB?-{{FpaSY|2aR!0|wnt>`gU z_uxw?er%%BHC{TrF{GLv9H2k_Uem8rT=S#W>_}o9JQq7POtV)lM$N3k@@rAJ5C08T ze4MO$0EZI$$Me@XwN~x$2$LX92616m>LN6i-;sRDjPSC|D4nDj zPz&*HBGuny#Z5&+H76w$5M@3A{y?_{I`p5riQ5;`PW`{tp;yWIkHutdQNZB$aptxvcD)!o%3NUAdWRg5FQn$$XOYBi=CaIFtYNB{TwDXl!7s^Y zVze^T3IKi(b)F2ZdmR1~&-^sl$!Wb_su~#$V~?~g9<#C?+zW=^g>8T1NF7r9Z{g}w zT6Li?J*;8-?=GW&<|PUXIbg>e7BF1Hgr!8~<3TSALSqwUVhi}JjU}CA%r$>N-Bolw zo$a@Ybyw%}Gg3LZd2;cobP{q1ehtcEK{{3FA4LJNW?A`)b;4J;NImG$&_ZAOLuF`W zj6EScpS6~Pm5$=za6#ln6vv{Q=Xx-I`b~SC_kGzF|H@p`!KPTh&}XOfm6dMW_Md;- z->*DeGRH!ah4}6FGFzGSbP(37hgVufwiZL_nz1u#DV*Hgbvke7$qA>3!&G#7R8*_q zy*p#=CkeV4(W(2HOihG zZX$(Oo6f2)m;g*ef!4vSt%cS6@+S}Zq08+WWZGZN*1GrXO*|};Yz^30r6kK=pIH@u zJMeJ%sg17CvZJ`faeq~MF{u=8ciPb`@bo=b?(>obK+3D5F3EZM%B7p{=S)v^0vX&; zAO^LZ4c--6gFxUE(G=S&V&e|tUMhs*jahBubc{_^PA6r+R zsa8^ z+V*Kgs=|U(_RqRw{47qz2vYaK>o`W_T}2f_5rHrRqpPDLdB*?b-(3iB-^~~GN8Me| z?fmAXypNc)f+y}>MDc94>Wp~lu<5f7;Iz@2*<`r&e6BwIzD<}1iXBUpAZIb8hmyf2 zsljiI3%|JKymHt5RUn1V!6gKC*6YGD(Y4Rs{&?rB==Y5p{JJ-?+_EwS?XT=f^f}%^K*=~< zpY;|8?hst)-xMS*LD_6ey7hM+4`Q#@JQJYiQqHw(A>lToWXA1p@t-zMF5Zv+FhLl^-k+=!}sJtyKCFhK&kX zE5cfn%12Y%j_03NzT~vI=a))9`w#ef4zSWTP_rqSK~N|+@{DxNwW~Ge&;V$DoClhj z>8D?vZ&GZi3zQB(3c2u%FkdjkdZ^PK9F{+Q@(dU zJeb=vu6$Vny^b<;Cj{smczk?&neQ&f;aF?u_8h)&>D4Zem%u-U8e{!bVZ8_h@Zecv zY+10{fFJRI`uXKdzH>5t%??9NE)ZuogFM6;e=A+7enFJBE6gZ9B^5$L_YIrJsy_D1e<`cG%P%{)P+A|Fms&8e-oZC0 zS4hrCp_*%fe|HxTslIi1f5N!EOxbQ)0%qVoy*0+Qf3C0Jx3wP(>@irD!xw(~+yIjj zs^_Ocxpw!X5dwnWcefxkm^w$j9x*6|8SA>Z0 zp;|n;26l->?pcHVoBm&%6vCaJxv^&&$fboq1Sduze56Vps?nuM!qeB6^n+OT4enb@ zM@!Hsm^^^Bwt4~iX@T8UX6U$a-f|Da=49!zFRJ=?mgkW=F92)2er#WUJ|%En#ehBC zW!_N3gjc*?V)B>Z-ndx*+q6_)U2Z&>Mh}m^<|ugE(BN&NHA>v%SMnYHDuakjx1UPh z%IMlS+$*&YMhxFrB?)B7ktLgAEmtlgZ!k9_q}3YC9D2wTpTK|T4-S~dsZac6kUU9( zfzjkA>ycz!neZjpP&B5F+Q_&ZD+sPyYKD2QA?2)UW=CQKB2Cav(bmXN{?M9}j_;dX z|EAviNvb0A`79B)-RokT!$$XRF~s)iLWQ$g=;vu(G^OX$y0DPfLG;P;?egNRFO0)R zr}yA#WpML^lE2EWZwbKREN-`stIVeo$CW4+p~zB7D<~<&MjOb`8f_JdR3iIK83tvK z5^|knD^;a*1zi74kjp^2i#LTkO8Zmx(@~~*yGv<6mN6AiY7OMqrtj#%fz3?J>H$Vq zugkNfA#`i|L)iN*&vSe;TdG<8G+bIfoZUPb<(R?zOQsiq^k&x_lUVjPJChUvc>*+l9ESbRW< zx=nt_^5t^d1(k(Ihv^!13zOD`y4%SF%A9R6($)Bdyy%9fsp<9yj z&%yg9YH0@l%Ls?j?0XrG^dBFpT*V7{g6XHw%`G43U@fAu%P+%pJaLyE!nD15WjWSx zqKK9S$7o-%rukkzEuC9uglaRdF;F6Mm0&N}6JaZ(tuY8^aLl52fe03aFu>0a)eRC1 zSJ=}J30H!7idOxW-y#1GU1+3G)bL(xbK3#5Q#_yZ@i7L}4(Owb-vX_)9xAbNe|m5^ za5Tv(zDA|!XtWORA<``|+S3FBp>@@-p>ze%(Oe`LphR@Y)AHWeM)DaD1AzN|?- zTSYEgjI|I`MPq(PMTzIjCUm?sZjx`-9GNOve-g=b;z`t#$%kZ{$uVArlIr_L)e$xo z+`iY9PpGap^Ua+i%R;-4MIAHJU0 z70{l{$W+$J;5^Li#rP)YjAPf!iV`RG6ZO+CgPc+B`Vk)2fln$s`eq@4p@!M|tYNR& z32)c(`}um!Xr{#FV#|MrcnDntpAvnOuzzikAN3`o_0z*BIRz!QF^vJ>_tIzb8d{_y zcungHW`HY`eouX?4vn2ujbE8eS)M5V;i|Qo@USwologfHmK5AKtM4Z z&eW1={=eFGs?pX--pv{P`$S34gGhb^f!wba=3H{6NIRvmvU#DQVB>pU@bta)C~9p#UE_J3Gs7f%-W; zl?&%i9Thp;^&Vm;cRHVV57QgB`;xkEt|^;q4Nl&s>xs8?jX%v?dnH5Q?Jb7gsX;J; z5vYs7RaU^`TbE1g6utTsyU@}Ia|xC|aoyx9d5fI1O@F%iIXC%nom$!WhQn-WI|M$p zu(30@SHp{1TWY!FqIHmceX@H-rdH;D`rKqNVlvN}Z6g-Df_|w;?$nNv?{E4~zl-(x z-@Z207@C`$>p`N;Y%rFI1!dOWI=P1?;RJHL)k@4<=vj$kss@Q@Lwp-ew>_^JF{m#Tv$ zkHgFhuKW~%i0R|z$&LIpbe1!kKqeT&213JrVQ;T1S95Z1y$*E%#*>^j8HqDP1 zWS=x)0~sYYb4s+6!;x&O2`cq@m0P`WqX98$M~Cq-YCA~SpPAL*lI)WC#bf;n)ba*w z;3+@Rc5JlXa--225z_wPtggG*2k)DXnO^&;FXiO!XlCg3)hdx7O-;Ilu@Vh#$Qt5P zK@BE?Q8Pm;<0*1*j@<{43v2oz@P_zkS`B+8%Uj}^_sMpz$#RZ&RdeZ~*zt*^GC5sF z=$gNLS(eO1ZHRynpKOqburb{@*Z#aAIrv;;_nF&2D73-OhQRjnq2IM^k4Hp<+;kW;!W^-j;g!V zlUJ594I8|^@ko@6i?V`*ti*?~Loe9tlCLb@7_4`3pjK%FI!vWli`}Z25P|3(la-fS%}7@}OMjm)WIl}RCHm$Z zOb=cmXFd#C#6jeaSKLO;HQh!zHHE~3+E_}Yu#1}b#S|NfzXs{|j-pn*Mt;N`1AUKV zBlCmPYfq5ngLZ?Kmy5<%r4FMR8Ho`{yo!NvSgEXOr@Tt5jjRd;(`XthEm=$rl=fWE zV5JG8{(&h%=jC8 zn1AW9Df#3&l|B}hu}(Hk4X{@T8W{fc=Fs)bJl3-}^(8M2_$M24 zF#|1{mg?Kj;xiB^t58+lm&C_ExO~X~qe1w`^z>EsRFcP{p10${3V@jhhAt?taZT^% zjSqCQY9HqOBS~i|7KFThnCjXB)xg$4zbo*li-@_fW}9(d_{#Q*quzdF@>i7XV^)oCG>3mE@C6?i(Ho!9 z9B05&*er8<>1~jhFLgeEjEu`_zAwx#Fk4$69VW_Zad7;8eGwC_(0()1c|g_XaKO)z z`Fs@V>h1b?Y+DZSdD3kk_adAB2BE4OaXcJvUyUhJgusRPoldvYYJqUz!s_g^=tT`k zWt)fen@lLHf}+h--%K!CRZKD8cm*eOj8zRQ@0i2S^li>hX$qNLgFX+;*BeKvDXx1&)~)9d5kf=B#P*R9U_J147cPa*fbPdgqb z6PU!`uKt_|-VT~-8niUS5JH)uwuKY>u*n2Th_68F-++E7Y68}q$e2^pDxliOwDd6 z&xo4{_5{iVR%y>9&`wP~balFa7USbW=VRbC+1rsUG<9G#FQ+lz9s#FBLRK^2qgg`t zJ^&!nh!tC1krw=7Pmf1?;^VteQ@Vlu#+^2NXl%2B2!yqIXA|{Zjo-c<0d78Prz(lT zltz=Ew3^BKyWn`B)sY`Saf3@O(vAU8IEMfA++FP)*8$Jn~9KzDg7|> zpc(R2`z~`~z&a2XCZ~r7WiTm|9@dG4R5IpS{cxF{S-Q)VD7!~CznZuxVlg zH>TM_X#ZvZ598%JPR^XZkD+JWliUa86)qz%jYjVn{uEA$EG-EFgqa=gLL)DR2HbPs zQiIpMF>{U1oR$8|5A1c5E{*%fP{D;(ph15od9*A&?>4*OPNSw44#_S=Z6G)6b5lj( zx%J=0u%O!)|Ib5{soD6VrZ%yut_gk}oS{&N9{R)Zi;j&aoxhrbvX-az+Y=&&UeD#A0O?Pw*PSi$GElGc~UMhP3S8G`i zP}nzGVAx?$K0~8{!fponX_!gzXa0D9E9O!b#Z5-GS0{ts92D}i9YWzPl~I(`X_rYF!QA< zNL!-?jXRV~%+xe9T#m#7^i2W=;OzpUHkgbCf3?JgMh5nFPzQnWMr1D!QROyX%1w&O zR_6}M#*>%+NsBG}F99}YW;uFXI+lW}&23aytx_RS1wtTadGerDXkQrfQ2{C>YWW<| z?#{?zA~o#AZ|z}|l4H6UEudv=W(LrFlh?y2jFWZ%T|& zp8OMfXidb*QT-Fy#7(Hfn3y~neya+oZ@r1w#e)zNnu92L7zE8VZ5%i@{dxzF1|YTO z?5zxfFfEefeVwX0gS*buA)9iav;76@8y5;s+h?$AUEA$lQY+I=yPd^EVYlP#NlKHu z?sP^0JB$x!C&~B{#BfuP?JH4Z5s>D*kTp3xKYiE89pq?nQN&Ap$qfiSjCt~dOdFtI z8ey5s?=malS}bK9tUsy;yw%Mg`_4=O1iK?5V$@%;peC5_mW&Xj$L)u9EcXsoY* zg|fW}#FHC2L-{)~PMpo5N|lvgUH#^@#Q4>6vM#jkxhQ${x%()(t)WXdorBVIC;r)a zX9SbV=T4X^3_>lZOAX^F*S?!i{WR6we6zGzx6_4;WKut#&uA{&JhZx2lq@eIOT&3?d0Dtu_ z8L*}%4o?@W=5gpQiKIx^l~69O)MTM$XT#Gd2>ZU++w|FN0*)#W|G>R4RSf(uWCSnm zA0xIOVRe)`oF}*ELHg7EOawm903V{oCxnsO=qmc8^=4K0ryc-G629AXJ*L*mG4pcT z9)AqrSP^b`e#&_%-0pq!P{{sCj8m6Q>8hv9k@(UaOejgld)lRTu7_u!-H5G zxg_Kn2cq-E)hK>-w+c#e@Jum+%r+FPqG3L1@kD7L{|jS^pY~nfmoZ{kf^-k;gV**6 zG4E&1AQ%9mke1uup_t&%)@;lk5Cc-J(R#Kt=qidH&W1X@PagEY8T z*oFt#0?9=nChJ^iTY+ohGhRURfk`3;Bo`u)4~k5;Sd-nHeF2qOMO?NagR_lTOSDBG z!8X|`0WV=#_F>;Lz{vke3Kt?6upon9VB_$~@L3T^BljW$R88KizgDTuU?tx>>v z1b+g5$pJGK01sB@+Eu?)KWz2`2&-xT`jLh0fdHe|c;?ODHs)HRB%bE<%JG4z?X_FY z_FuANYedo6%F)@JH!orvnFhi%N;zm?G-t9rm{dF{%XsZLie@;e5(G+qYNtTaSDdDy zs}d(wy`1JXYQ_Vd37YsQF&9WU8MQc=3w(^$RH=`m9z3(&VYL<`C09A4zrk1Gi=YP2 z<9G%FgWa&-ohx~x5EYn1#dmkr?>wV+`jIHltmas>h*$+ltq*}C?KIq<3*1B$v0!Y{ zHf2Kx>|%jUFuM(w(x@;4A`VZr^ckc=DnP2;iqGv*o>Dlzu&3(FUtO2NFi4d83kpECk^}x z*0&Rrw!@u_2NHqSlnM}s4c|tLrg||?bVHejt|)YEbhNrEXxv`clLlXkw~L z5oB0vy4FPD-{q%+SDAYCCl95W^}Ow#KC2(i_Ak3?UF#`4z5cZ2IjW!RYFE~ok9L)& zUa)RMm}()6u8D>6LtzKsqSA=^i7mtdCGONxVAjU4`PRJGbfXujiG`uW86SNl%zlPO zw=-*$oY#~zsOw!qTs)u}U85hwaq&mkl{pgJ;GXbh2RSbr<^FxIgp&=t@5_6w zis#K%*XO59*QYS6t20+0=Og45x22HK&zLJgTbspJXXK@Is~q1&S~@Nt&YyJUjs1;H za&aV#rdsY6{_`Z8#r}rb$$qvvMRIqA(xFU@2hDiyo*E;j*F~;-_v0I%4Fxfy;+UeP z^A1+uu%OZIK^z#!uP?tLKux1e^%}_7=KhDLDsHF;81tGVtGzPf#fY!3PJJ&Q5;zA+ z1!{|hU``TaOZZ3fR9T-N;=!ig_M00%%K|rx9u9U+=e+0Q$Bn7+>ouA6S z)aNCfeBz3~(X?uCw@OF?_t_e;@unR`TZhcX*e8NX!euueI7AV5L=Aiw@&icyT23ys z=VvJh-MR%mRIu+m-9k_R6$LO=CWK?W7+gRac0N4ypY9FW9o(j>ykzJFCXTPm+t9T` zFH{r>9ngVIYGnA8>p;Y{^sBleg3n(ejGdCizl?Frf`m;;7>&T;|E*d0TW^Rvb5iOf zkwWS&FKNKCEm^W{hNfXO{>r01A8U_5Q+wd;H4IL)&o9)8U>~dk)CM5RjbSoS;GzHp z$2qDqZNZVu+QQP1=CH+A3C@%jDQ>0C6AUtt0SIv0Kh*JP^*K1Wz&BzL`!CR{cH7|~ z%<(E*w=BcC*yt{tL6F};Yfhjc!baav*VfA21s}=rG1pQy462R z&hZWbkUP*Q8JK?}tVYef4=~&bG9y*;`{?*c8}u`1Ck%Xvu1Dx0!I|=o0Ii%72THdd zCX}5}hB1H~#}TiNBg?TEb5B9`)ygIm#wmZU7AXw-t@2Quo$VMpzvE4W+C@=UHj zc-n}b$CQC9!NfVnQzL0*_x^wCk|s7V%S^l4ODz@!G5Od#h5x zt%_rTQSR*5a#H!PY0<~d3Y1q^D!y;BxV&v2u2m@uAn${mutP?PN;lTNg992u zF~+UK7!mvSIlQf3`iVIRZo6z93{=vW0TK93&8F_=2pSmkGwlE?9h{55sfD_{l&z$W zwY7>b54#=!wNDq+t1)uRB9M{R!&oqd&|(D~7#d6?_`hALwSX6_0Ju_qA=6uTUZkz* z^|RFg>w8o<>!@ro+n@!@NSboWd{U~?Sgu9xAZ_=7M1u&mdHG0iqNL%MY^+=E;R{-= zi8p8kfJs(7F;m2?cl>=lF?M>Ap31jd;)QUi%yL1hS4t;exJgXMhw5Svokjm2xV*ph zYVXTh`!xt}_j9jYUEcAvTPzlEdyK;8YRgRj1(#2AIF+aC)VHwI>yeJ2t{%5ck%fMz zz$P3?)r9=J1QjXRzSsR+W*{MAC~xnsrl}fS5*r$x84k+>AMqJ6OuXj$6x%}I!yKR) z^Z{K;1|&z>5S97?17lNxQp`R{l!Q=yrY?yDV$y}QG0v$`(S*T4JU9iD?&p68J3y=5 z{Zsdm$+lU#9=8kIdBYgq_E#g(uQEMP2cylzoW`X&DH@wi{9sL*~qs-1m0xJ+Hu zYd^c&ruZghW0P5hu)jOpH+TNR4kweHonexk{Syg#8zd^;yflI-Qx_Qe#neA&SsaxT z0lMJK&D+T`o>P9^1E;c66AAuM~>w{fU zwJMVe7VsRi;TzF?(vS#^9JXO0zxl}p3oL%9*1HK+Rp0p?=c{@@bCWlqSe)$*k9M@d2QwQirdBg zj$)h7;VG$Yo44UnaIK1I-5$(?)g$baMfIQk_)W`h(Qs-om2hjaYgV#tEE6J;1EH1` zZkiOn!^;R`GMJ7r*n3C~Sor>faiIs;bKodXSG68=F-BAI^PO*1?}V)FA5>bPsXQ_< zU)}C_3u5=_sVgzj#g$6miVix|FE`%@&1>g>H4=5<2m9D#zAF3&S zfC^4!&K*kyg^IHODYHKVA0hUeYS{Xq65!lKWi`VB!Z$0^F(6~C-&RTSSIp`$iLQ2}Tismm z=2N=;`~N5KP6<1-XXSGfu`2B}N~}c%2(Xj5fhLJ6t?cdgih~Ks)L<^yHacl>6cEja z=p1Od{^;vlyy*G4ro#mQLd+nvV-{sGWfr9GLV#|pF5BUf0`CWyiHsyLivFpiE^g>p zTt}n2NKCA9@>Ulg^09rmP9-VhT#~54AO7FXTjc_JL;LsuBi2{vY>cx#!FujNL5864 z!f&G|dFVNVb4}H#6+~6iw{SdKUm*8IA7sKX!1~!n=&MAhdVQ<^QNosnAB^&Yi(eyL@*RmA z`a@?>^icCC^*nYOkqIjYjk0~EV`sK*h!7(YXh{~n9LA<2_d(l!>*M9->u|fWi%}f| zF+2A*5=#|jj^S@IkC08?3uIz5iXGGk`V$ap5qwrH!u4`U0o}K% z2H-^9ido;!&&!zFgL9fje*qq(E84oh`bFm~Q5F;=Yy+|ukhu=S$4eHGpr!%kfiS!K zu)j^nn&5@uq_im$cYp2@c2Foj7KCA;@GxcJvagPs*)mKA!>@RzOuz?D{fiG z&|L>Ew3l9-ez0HJhjSmil#K{eML}*yiEcV^aE&5ny`}B|H0Z>e%QIV$RwP!NzUZH7 zLZI19w6(~mT^W}tvVwcco16j8-8Z9~{Fcuo?Q1Hoq$BGjXYOtbjwMWV+<}a0&$iXH zXFJ=jBFj{^msVVE7c@2fLUdQX|MujLVBXD+<7lrm{4_pDV`;3m_+hKQjZ#QSw#m>jU0TFPX)P z2y{_nc3(O~Pkg3B11Es7b#k4}c0s5LqRR;CFH;e!U~ujtyF3lh;XeDmh72opSv?KAXoJ9D4m0SFpGBSU;XO_7hi^8lGl( zR~|0P7U{=;jN8zj@xiMRXlt#hxvh+;qqm2ei-)%bIF(*wxrPw`FzWKEUq<6_Uwv=C z#FfEfj$1tr6wg_#tTFBfc4A5kFnn8La2DwY$B@LL0e@83&B9bV3*D$ji^E3HLWmKf zb*L~lD@pBY#wWJjs-3%rH&gs}>THeEV<5FE4zd#(^Pzv`87G2v8 z<6n{Ux(|#0=l*o{v}O?wSYae;1^0b*@A%um{nNIi zePXlkb#rvJS4eY}Bd7#tCKxPcN(Ik5lL3#3N@hR}w@pnIj}J0Oh4k+ulS{=A{uL#! zJG=myj-P5ew)y0a@MduL_lFzlP?C`GnX&V`{+m?qnC>1JXX>0z#T6T}X`8WdzK%G2 z`6RX6QB5202sU}SwUI7@K&_(mgVF4g+u!y9_)8UA-yX`Fa^W6UCngz)cBG`BmagXI z{#l;hs5(KFEUUU_lM)>7S@5xj8t_zD8Dw!ixyfyQzYhDj@B*`ShL>M5K%aY*YifXP zK#2=YOe#IRZjCwI?%iP?d#=QTzwzPc^q+Basai~=Slu9wuLvgQ`cFTMNjo7J-Jp|S zslr6v%ZAl5Om^Jj5D~&pWIni|S>0&bfiB)Zmjuc`%7kw!C-oJvD-LKTrnK_W*gD5~ z%WM9V)VZ1w7$|+DUhb%KBTd`>U6db6(P^=5LZiXHa&euze6t4T3%JB=p4E}4?&^#h zEB(39<{xD}3|NTv7#?Nr$QBMu2w7D8Ya&squ28<$3K^&!`xRgvw&0_|u=4#&#!K=k zCBkurBJGy{Yx+$~3-Uu3i|P!cJA56Jm~NNxDxvZ#F64V7PE$=ym0%JGZJDd^@_a`+r4^BD9o@-upzFiR?2!2*RrD@-g>!aR5#6!YlI zhRFHrr^E9BG>ejntVJ#qD6eZW4s|sWkH{v~s_ebiHgNQh^=y$d$Lf>hGJ`r7m2nL1 z(JZoZG**3Rtt~fm|FH+}if}nr{KG?}LbfYa`634`Xn4HQJ=8n*Ve`+43WB>2HshO2 zKRJ8KPq_WQp4Ccq{IgLnhy1!S-0pq-l^pD_pGzGrwf!v!nuXlaOffcKWX=CP+(N%>}RA}x+?|BomuOl8siQbnDIV@b%l zH>j3_O0Qw>Z(LdO?6HSAW8L*jsry-5v&?$ezPrd}OVU{m+p+X`s%2CtLr{I(`fIYu z1Y%wWx;8L>PQB=?UMdfT>K_S^agR~RzmW9w7yLMK;J1#r8$$nV5s3xpRjQ08g~}0e zvc$9?UW3vc)ZE+GhiFQE8f)=pbgaW{)@;mN;2v;!Lf53KpNE{eJR3j0)RMN%rp^t= zLSvE7#n1(BYwgMO3FVjjp`rTcoy=%&mw$IBHmi?ENBqK#KmYO0+CFVQHJ=Isd2|+ZbO+{tu^VL+kPTa3 z%yB5RaT<|-(L&Ygj^~MQuttzF#HMF2sAchHe`y>3JC629sa-b!^jiQ4EV0$h?Tv$t zF}MqEWo6jOD%CG8B~_NL;velQ`^(l{)s9gv)p5f?R^_Vo8)wo~=KoQ2mT^tLZ4?)z zOKRjFrE7E}-O@c64bqK(bThiUyEkfdDhNnON{0d}9g@;Kzvn$K_%L?g*L|*YzQ?ft z@+7QJswWtm>0tV_|7>E-U=yr%^eXrPAj=~le-|1h?Rc~pO@c1TUWFopukM_jztC}C z-W&)5SREk%d#L+exkBH}u}`Q@fU#m`LM%VXa<Qa!v7v-)$3;88$*sT;n$Z2iNaJ)h&X#U zHynui_Ik_C<^ryraT&UkgLh?{KdlQQ)^lb5BAcsV9VX*c)*KS>FJYWf>SVg8|2RK& zA=FneoD*|Y1w%K1urZ3MIYJ+)NPr!ziv;jm&xzK8YF&4V*66YLgA3UX5V=>ra|0H- zZ^Cqv4QHZ9RbJ=V=dMXPRootEmryxkeF&|ys4IQ$e@t+1(xkY57}D14VrLn?se`s_ zm*Zl>M{;LS@JMakjU}A^;~D3mm~>3g&q&p8eb=VLqz0*`Km!-fu_b4}K4NW(#%ib6 zooxXUP=+>G9BIcG9yUp0H6(3u%(Rl=xB=l*c8gE|c9D99`~(1FK543eG>vm3$p*%`TNfER)Bc6he;J=a%Wwo>r!u+; z_g%5r_Ox*?L(B-)Nei_e4qS&+tpd0#s_<^nH3-vf@^Bbw3uFmlgf8w)0fL)eY2h!d z6%I%@e^c_|XUJBZ$L8TfmD}PVn_9Q>lZ5UdNpBJ8?CHxgR$6uU)y-UT`7Y1gAI0m$ z_PcB*`kyl^b-OY>(G3-#-I=;Pc-A(y=I?<0tOipSJ-_ad?HqoF81&(Byvb;*CkYo0 z%)-pw?4orD)^Z>Lzyvi-1YPiNQ#}eoD@yoP_mnzYol4W4un#SAC_6sA48+o zhy_)%j^fJdh^&f6yT{aluQk{m6%G>kb6mh94>8j?v&e);kRi_jZ4oUqb6Eo{8;ocR zN9dg??#%YeP`K36lxq-KS1u;%R;hO8A-?gneOW1zv(Gmawt%;^Pw24{JL`>o948Hk zWV4AgD#SAZ&>}Clz+(A~qbm4XE6njo%|8RQWXVbsgW(GIb0FBHF8NM6IeEo&4C|so z=I^h1zZEj~V%0S3V8HqA$es>tdK+w%)nOiOxz2EGuqqxr2A9M3GWjpb1w}%c^#-I>GGS`{yzd+ z0Qg@NhgB@#Ahv6nZ0Yg7hre7Y#Xwq3RD6098P(Dt`L>m4C2pqvpfw3%s-$Fl(Ysx= z5d{Bt&9$-q7O1hkQs@5EezrNV;&iQH-q-IvRyB16xM2^z`yaH}W>!p&#vJ3|)`a~t zOw4$_q@5xJXSNHLn_92cS8WTX9Gl%gIeOx^E3OqZ6bv3@^laz;jw8U-H=e;yh|Y$h z0r0AF9p{&|*CQeY5s#RXVLD|c+_eDsNrgUZZZQr$@&!nNr>DHU?@%OL_b_=wBJgnm z)Z^wVb-5o4K7B26eG4ala^L-7{xkSgxWnvuB@-?s>a*qc@8o&!ckbzH@j%;^I0jF$ z0;BGy0YbfYE5zw-yYQ!@gqZP8T0Y)!1_np*$2bN1*JH)6F($`z`(E`X zf5(maFm2F%FvL?5&`xvcygqaw9Ys6p{t|A%LOVX$s5iP_gf}r7x*aGcd`5TnPMx5X zUMOkbgj3)7PrM9JpI!rTV#5rm@9`{4_A!#zB5MhQp25@=)PuYW<5%s>0&W*Poy>h* z*0MA;if@J|!6CgN`L;iwyPxkO-h`k+ACJHLbk31HO!h53{XMCd>h~lexqro7d^efj zX!@gN)l0Xk%PLsri&x5;USU$Gms8CjNqoK3_w>h8 zNeHZz3@-k3dN2&1UxeWrxCHNy55vuI3|NeVt9d9`i8^8z{+0>&SQw3zTi16nMg7axP3uooQ|cLKbNsthGrh>SfDV<`aa~K zYb==6p!{1z0*7pIA>ro&S_r%u!b_iE3NvSNu@Gx{tGcX>K^;!vj1hQ*0q#lYDBJ&h zhevjfjE6$pecxEaEMR&}3w1S-u;wvUz^=BU(m_1QF6pEHVPLiOT)q3ir3=3&ewBdK zho-iOZnVzhM^}-)aJPY3anG-M(X|+C5ITetV4`gOxc{vG71zMXz{K9{V}s*~wg7yv zfd-9x&oN6G8K-fKm*|E)D|D|oe-mlo6wW?$?FaZqnzpm4=t;*3w;3fpG6Nik=5xx6 z;GO$A^1n2HByT~5P!wp>l-PWEHe1s2GJEJ!zLWga2GC@wyUID$%r)e|i+1~fMsz~h zpI|sFfDqu^H()`mEEDO(eD_5nFgwXqw{^|~a|E;+fWH3}lra1y4@$7la z$3`9>b|D|G(r^F8eP(y1THEiUr_2?@Mx<%ymJsmHTBK#$l@@FAHaMJfj{RfSddpe$ zmZdfp-_`oVc9Y72kbHDD|JCWK?i9O(PY1D*j>Pa(xk@Mw4PHN$EC;p`P?FrxlbzN` z5OPl8iOJZ{=h+ij^iE`fE~~e<);YOQM26oIiJ5QwUKiyBO|CfE4qXz#nVRUzihK=e z>Gk+Ka_|2L|C|=>9B2GK%wxO@)i`4{Sl>U%*sMsX+{36tz%rNAh|r;teC}v1yWShEP zE%DKD+CrUt!^d&7?!@(ox+qPvsb0?}l7=QPB{4b0NaOBe1F}-%=CIp+ONA9)8^2}& zG*wk%@Pw`-yUxKrw$1{Zy8c*VC6L|AVK`H;IBOu@ zV!G7b?8IdHDciQs-Ro(jFK8l}dsUX|%UGq@ziA_>PZd6{V@GC>3ElH2c?tV>L$%*t zZd)WL=M18urR8y1I$EA5#3ex0(LKuob$-bb(}6kupfRWk@KY)cc4MIzMmnQIbD=q& zQU-aUKtBW1&G=?J@sN!r`zj1a(trag(}D``9Mf;b3gc~wwE#)TG+d&j*15Yw(=u#a z#|OSH?>=Pd+6lex>v`V3kLKD4I1^DWefHiTadYiItL`}s^f)GqCkpZYGXnVU?!F|7 zbqKrI{k+TQ%+!}*Qw74WSQ5ORpsP$D*DohNDN@#`{Xf_H;+hYH|G7TU6fbB>4!93n0F@fS@7(vIUr>aDsIn=5 z2i?2=C(_#BW@ZO<5``C$fQcDY%NfS$zf43#sP>9~uo0e_=paOX$o>^Z<(xii9oHlLyeCLu=xzlU;%=m35*0>AcKv-jONvuTw=uS*0@haq1fCOH~I*el@(e3sL2E zS^76>5KuvvJGM?4S7CtYh&{sXOnfRR7Lu-p46C6-%JzQXqoQ7GGLrP&^S7TQ9UbQs zfMjRYs!q;Fbtb)$Xs|u&$7M0cqmdvO|8Sk;QpC4A{KbyR%Czf+34UYP)8=T@=9j4w zt%f3L$QNe=J8shloK7Gr6S4NPSmgDM2=r0)SJ*4Nm-y~i6$8@OeDN!vw`}%+=fUK` z|KB!EIOn`P3p4sL246rdQ_257<%3m=i#;z#Cv-Oaf1gDNV`c~dp_*?U{Z}q*fW&)) zKyW71tBrKlsD*DJym*Ul&wivV7#f9POge@(sy!47zmo4Fwzi>TMpKHNpP{gP(XLTd z;mbrF9!W&0f=1u`n;enmBC~$pjM?yiF9#YN&D^FT zWkXs3o-v0{nQ4qX{CJRW9*Jr z<`&`-)#ZOi`xSO~P18N%y`LFRf@3#);BPh8O$#qsRy=K@YMgOQ{>+{OlsGQ*6pYdE zmX6?9L})N=si068h0gjErzTEdlM!K!z7=E2kH(LT!sx^) zhy&`NXURyVL4x_jF*cuph4-seG^SbeXTl^RTAabWF&G(@DXX;vxrsLy{* z2vsDXMP?`f%&4X4C&t_*R)&x{O89=!-wI_b({mQ~T*AD`ZmHp7Zq18vlOwe=Q*$pB zLZHp4#KL#=sTJZMgN~R#dMvJq5$+9%d00kd8`|uLvg?nWhUJsu6dfhT?XVG*xT3-d z5jW^Krla)i0!=05-m#zD=6o62x+*)y>72_llVL%=@@mS`7VVk(O@s8(HZ;;zz##Gl4chS04gvDsc|MY=@O-5akPt+7L1;?s~vp*QNf=muQx3V5+Kl zymOc1eZS3XY?H(`Wg(;rapgNgg9&*QgK@q0YkIne*8CG_)Rifv&Ms+mU}LAPRn&(0 zcIEKe4D5EHGYb&R)38=!kQjJ>Fn@nTY6$zZ!G=8x+P{zSjL6M|zmU8c(QqB6x3s?vMpA}^a$cK*+ z3mV&r-KZ9aqWm`b;T65So*L<0cFQ>h;{423!n}S29tO0f3bx5x)AGfC4tzCeq@aQk z4pJKi4dAqmC$eHZ9GlUjQ6T4ho8ET)m}mjET1kiBG>&RVt*KA-(lqXI{K=NSndyj< zScl2C}x?NB`gX&kP)sGg`YZi_f#3Vc0q0%$; zt7gwsYvv`z_LVkC3B4mfqN(?|2uIM;>qw)p%--B2*2e=L;4O=70KDBZZ;(4)lq~Rtc9b2IujV4%ZEnX-YZ`=P zXFCn=U;TJSsXaG033yx*K6%(am^3#HdAvy94R+uDhKWh=d^et0Y~HDows6fB22$`G`n#BkL$;nZOzjiOf7^_ftNz(;MDvGWEeXgCyz>8EH3W3vC(3R zui<^2H8)=#qgArW6tEOXEM>tWt$K~wY(ZyMYI3GQIFptr8)lib@AZ-w$~LbIL|FMzimRQ%l~Xw zmwsTm8!ZJ}qG;J_MR^2~RVL^B-e0$n7~M`5CTXLlJZ;56{^4WwZlC zlN9lq37%@mH0D@??Rz_z`;>;Y>3Fi3ofkey3l|8o)c)ui{L$3`s-SH7C7xwU4mi;- z<*d;;>TB>`yOD-m4w)H+)zTbx?h+yA+Ix9`n79Qk+{1%Sv=ZhYq!BD*sq7&0C$8}8 zW=%W`!K7;gu7^itV+~SNtRJlbBN8D~yg&$v{UWXDPS_At8H|68_NRWsJ;nZh6bCcFwP2UxB6OBHSh4DfGB2=Ysc3`Sh*M*`|4O26otp$ZT@zZ;Iz6;nkPKHs`kK77u06y=qVSh^ffbD& zk;X^fG=v_|8Z)%n)di)H=_D}(TP&{(@!vuf1gx)I6k1cg2kqfEyh5>;n13kA7a48% zC>g4RVwoWxI}oFX3wC{C0VWX@N;~-6he||!85>xfbFr1<{n>I$qdILCUyu)q4L?MT{olQ+8Bqy`GKav$X#{C$Bj zOW8z==sqSEPH$+21v&X9J}znTR_)Jm8uQUzQ~;03*$b(EYRF!SMADK!s(%BBs0$wZ z#+S!23A%dpeFGMH0u~*64;i7N0a%?@)Tx$L(*IdAV<3iGY3U41&aArp1^${T+e6H* zP@dGEg1_~&ZKjn`=aBpy@&B`*d10G5Z8qDw2iswiN1o=kJF0#y)A#0Y|Hx%#Diz>z zF{qH)a(~%}P+~-Dg^Ei5zSk9QK8#-Yb8f`;&f6eP54R^i*ToV&Ruj9`je-8#>&eqV5qGBX zr%r!rq`%WrKb+fHq{I2@m=nli?^9Sp0{nMA@r8Ur#x>Y@_pRA+eCppFqQ>M7bib>A zfB4ELdzw~-o~temBe%m`^jFxAqT9bh4jm|xqI)R`qV@vx4U>z!g-z(!gShFL`L8?E zZiakI)Ed(;Q(rOo;QBYwn0tb8_9FkY&)RS8=uKDc}EtB;L9Yc>i80B^!7ef z#2pkENyoTuP7OP`mzuA)KDD&4NJ(6x%ja{OC>1>Z zl{nJYAR2f)r+;uT?8)7CbDqne&Hd?a{6`_TYDTyFxpdl@{KOvHOKV_9o16iR=d8x2 zRM-Z9KfKi0dkc^o!&iWiqq&2XlrWIj0dP?74Pn88gPl*KlSB~sb0p%m+h2+IIr#Ej ze8TzSPPRX3Vj70IACZ#h{yG?|m5WaA%7=`Br#oJI;u!K#{%~gdYUT^*=ltVRsS(SC-d1 zg=Ur)x5XFN7TSLE1;a9#g}8+2+1Ex!rdL;&M&_o?C>`Bsep^r;*pjO|%r{$P_Q(ks zD6PE%V1w*&{iSpC-$t0zjvbhHEYtC!or=t*)44!IZW^i};Y7)=LZqZzwLR{K(CiR!@D!GSM*{J4a0d$JBG_f9t zuoy$PI`!%h`M^NZLY&KNb1CP(heV9UUF!*tdDSwIj@rXWlNF>y@@cC9^$g>v4HXfE zJG3!OmdYPr+_DO5S4Mi6T8S!MNoBk33uRS@utchZZngKHgk-{T7c!2+)AkJmxWlbzzu=#j*AjM zqeD;(tebH2i{IfSDzziqK!L;IEOyzX0mhs!X^I+RxB4mnKoddTbyTK)?=}2F-W!BC z5alhbai2bqEnHYEnEwb!e+Lu{b9COWDY?auYMn1j1(6TkohJV*HMrUJIZd0EE?Q7x zNq#z*s$aYRSG>{d@-G~81+`h|KB$;E%9(lC`)if9IQV5EsP8HTREzsM#y}F?HP6{6 z*?Dx_wPO0fWAZ>7NfoOHXNM5b*KDOsIZEW}Q^p+v@8#55@OtCVUW= z6(D%kGiRUBTzA>)-Xv8AHSKb*8yu$S)QJ=@>-L2LMEH+eEpJ~4*1ITUl%aaNthKuw z&nSJEDr|l{zct`fV@?v*`8a9Z7xbl$gPi2Vy!rH7>eX>8x?n7R&%f7(5*?G)mm(eJ%ILkCf(%wszNgxJvRp|~ON3e7w zY9TM9xwGq{5RixpfqB9V^W##$j4tuK-hqSrA-V5^eP>q?qmo46!{#HysLBkW)ML;1 zAFzFoEuTg7{>Pd21sZ-Lz9>E;4e6hz4oK$v7lsfK7aq%>+PtWe=_QUOXZTV@4G1iA zdCQf#Vh0?Bo*)g;4=a;c$a6xmO?mekgT4a7OWfm0+(-a7Jll`s7>z zwreV+{$rUgf*`{>)2x{k88?|vmN^T`lg9|i_mQu+dsiPIT^a8NOZUljub@T)M|7yj z>nS_RM)A>N&f=hR$fXJ}NikBvTv_?8Do+Wa10Yg01v<(w!$IW}Wuz{HH7v*!aPL*) zL}yycx{m@77{^fnJ~v=7lYyo4*QxUNUa=l1l4*pn>-I0z%bTO?b5h=`62qkVo^Pj9D$@QJY?RV!HQ%4XA5)c{vm>1Sq;YfkLdU zjIZAnOEq#uR=Bz7-Bt?zP^Nm|FfhdPDl(@tYYMdS@Iev;4Uz;qN|~vQlL{?d>%C%= z#;|ZT>D)&Lzip^&{i(q5ZpW9a_|TH<)g1rVJ?^7V%)E$V&+=Dkh+{ran|frMUsI)W zN|#?#vofu>H?XD&pouI$&Qq0dTl6ykG#B*F^=c%?Km?5XM9#i=T|;|Wa6TH zrH!tr5GPD_RM(x{yIyJ$H6nCu&rY`Vg$-zbXiuNLGivzVYB`1a- zf41VQug%cCT@}Wzb=2-3dGejFnZJi|5X8WF?)TA`mwUjsnHbfRq`3t1w=5)uScBay z@dbMp-Q3el_)usCoq4#}?Y3+kz3_suk|V1tco9nxGaIRcIX1i0lY{s7MKRSYe3W}Z z*OLW-E3JlgaYu~NxXR_CwwvYX3^+7lvW`AmWpQ>8(g@xG0U~SrmMR3H=iDbk35Yh zD3)!}N4WRvH*b`bf80td(pT-yo^r_juDwwm&mF;{&FpYQkIsL!c~oF|nzOaXQAQCJ zH&xQwgFC}_hRvly5&aXcl{o0S9d!KIUCQy|I{0F{MBIkVfz|=G!7NefHneNNj}H)g+1R;An*1D z?A|;*M%;%4oxXOz8aR^^_Hhwy`M6MdY%Fx8Zag>F<-c0i5Z93Q?X4+l^Tl0f4g2W$ zH22T7#^trf(J#i&DF}i6YmGDWS^Pj!coa574hIx%(9VUgry*aRCa6r=@4QA-t9xv= zh@u6Us>fNJ?n_&=NcyCHSxSQ06pss_IM4;I6#yL~)js*fzJL*YS%bbn8Jf;vdUbRm z&uh}{|1{Gs@KTHN#HXO&s*$vjOlSwi014WAtsAr{;(#|e$pyR1e>1xU8d|_85Y7eAxWIR`6z0cjK~?7m(8v| z=xOB$;GLBkt}vMl81O}z3ZZE?R3sO!NDF{nt^vkgrM;;?I>B|lJ>(lk)<2}cUs6i| z&X%Hox|(mX5N`S}`_wPmsQq5j9Tr=71B2c7fA83b+#gJgLae+kzH$WuKYRxBEc5g) z=kNKFR*g2?;UA^%1gNCE4fh#xkffqNgO-BJ_!-tP9);vrJ{??6W@Ofr31r*DqH5Hq~YGt z77Kx>VEfW@g>U~|sL%V2eC#4#?#%mZMo6!6q zG<5Z@y5WKEqFFDwIGR*!DCK1!Wa*D;>Zpk<_nLgz1r}r+50N{i)BJgs#ODZwWqt}Q z&N8+poRVBkSqIaVe(ak{c{|QeM0I zhFXsBH<7_Jv#a;8ySw#K3;;h+6_raaJz50PhXF?}vh)9Q@(00pP)76S+lIvnc;4|^ zDT;R~iW;p@MU-$xg_j0fjy}=P`AjA2J;WdNi>$>fw<9AIT~4>0j@IC(!GkVbIJr9b zq)~m}iieP2-^vh|03I{L99-xAymJ$CV(sFl@-RO?RCJl4L1p~|pj0`&f#qhhy|CdM znGfu({bRj1x;*$_8%{CE9ac}{5+@rg8!>2%4g{T-Ya+WVd0Lubh0Yw#^@w>P()~l! zn*a114KOhiTU1_b;*cF|=Jy-`}L8N*D0V3eWzxHGQ&fUE>Z?QMWelOL(98zDKn0~srdH4gYX3qz< zgr9bfqeFr&wldr9g$NLXk+QBj?-g}aA+iD5A9g8-Ka-vM{vElBnCP&mYiM+B68hA_ ziXRbqB_j+)%cZa%;c{!m@=jvcxmGdRpQ6pd!E8k@h0a+8NP^0k0)U7td2uS~54L2%~j zB`%ZhgzlTg2%pn(d*tBNK%b9mpZBlDNgsRbJBEgeo@oDvK#6Ye-D~5HlOKLOSCT~^ zck7MaKA~GsKkHv^Z5@jZ5qkZi)a}D*7-@DiY4Pvp6p?{U;~6wE!*^}qgwQ^t_B%=B z;G1JngnubD*7)7~tpiZr!h|7AES>dga0_HDhz@^Z5QNtjU)x9=Xm*n5!1r+XG0NV= zEPRuOLmSm~W1*0G9x?mrIR4P`&w4M|=Q$b*|6|?dXn&9KC*k+)ps%k4&eZQTLX0wK z?Ds9%FlVM2GF)$K8GZ+>!9KiB*+?RtP8Xh5pBa1^=RS{{yHb;`Z6#Xc0Y`-``Ny@yywhcVcINFxdMdik}z?~}zY=CbQcq><;te$_9{ zj^ZbxQO94r#10Dn;n7k+HNcs)VLc(4N;*gYesq^f2~yRG+hO{hbjOF`943SXA!EGh ziWwUx1h`4EjGe0({Geu|SsLkYcQWnaDA)=D@R>;3hF>;ya^MuMVm|Xign`TlwZ=mR8VVyC3?7>Iq$Z%WOzElb*C$5Uk#9<&# zL#%p%{SqZJiNJ`9f#*Ff4skmX zh3L$}2^Y_(_aph839wMoLTfbz@CwJB<`^j!P~wG%Ff%3zhvYH^G&tkaV;?Ib&#a0xX=7fR z@Up$4CUT+pzBxQiJR}zZEU|yxeYug*3AZ+}i_^8mip@>&>H|?Oza!{CgE)Q|RwgW$ zhOoj=M@chc(s`P(5aG_~>!|Xn&Y0SSnxDfY<0F-aGAdP~twNV|a*l(l)=LDX7IKSs zxxx65Y^Ei>ss*_gSyVZNrhbl8pk0cS{i``T5=SKdS1S9P)f6mb8Lpwt!p@8h-M$%g z?_9bzBJ52NQ-#sMUK)+F+F$)rw|wHCX@p8bWR~KDu5d$yYEyfT3&1H!&lEU0+lY(g z)!7lMZ+p27!Z#A3h(QOpLf3x0k2_{!Z|#|Ib@S|5`z29W8!J)UfBj(L7Hky|MD}qJ zFDYx<*s#aT`<|Gh0n))`_Ot5)^b2ar!uSp-{xCavp<$1sz&!Jb7nBPfk-@9pi99h3?-Rdn^*%SQr%0?#u{XgF9I3ld~Xv8U?e2%IxQ58D!@k&%S z#rq+xVl3C#TWRKglSpDX(}zCUy38@J52L!vRxgvvwB!2o-q$PUFKl@P{CXfTa5f2) zbu?0xwbCjVtRppg&Ge1mz;$m02$e1rZ539NpMGljGoK!j9qjeA*x|PEe3<_)7pO1@G8+KU@5`ETJ(}0oY;POw% z(09-CXD}0E8#xrY0KfxN9Cp-W|rBre6aRiPf2=k=D|6 zB!)8+Fq&>9Ti4lbdOdHwpT7vaGJR!E3s?I0x{TT30QM#F!xcL+PphFSWkJLQNVi$F z(T6YiCRTH)SuBtu^XQEqL!=>eh`eo!5GLKASCH9^D|!=kg_7qSSBp`{tA}bP(_yKw zsw&A_QKY|%qA%kUHYRkE5xF1`ulNEvj%`S*IbbFj@xBsVaEj)H(jX1-&6kQlw0xKL zS4fIIP?~oV9{E(U&6aPCCO*$?`yOA!**v)@sBB&pAT27MGl;Yo_aHWUnfkA%9HAHf5ok zM81C2@0$8A2qzpActnV>M;sV><8OQ(@vGi!VRv20``*Of@ez==Q}|`mGdYt+A+%uM zrBWzS2Sxirii9A3D4JC*J(0eA3;nNPG7*>~Al=wJ<~pOlYOgFpi%n;|_P1)|6GpX- ziIAAbL4&3)d-8u64JZ+twYE7=M1k8Qkt5vFvoWwIT5B*52*(|^NLSbqYW^-5Am-GS z_8khCgds+C24}|Kr+}Jp6mTI;qO(cdRKVW~tr=*AtF^y>o8wr<9-Bm}lSM1cb|o02 zV?bA?Wl*X|Hx$buD0FbHOfsJGs&kOcB9!bT6j3r3Gn|`K^aYPbhz3{IGXI?*OR<)L zMmmTfveq6UJFN|!w5_aW6ml_cuBK}=Ap_NC#+TFEDR?x0OCuRe#Ib|5_$I{EK>5FX z$>BZXu@#Xdor>F5t>93h_>y%aUYl8YETkK5hQAVLk!ePxWbToIEkO(JV$@(iS4Q`s z1zUiU4{;qJPpn0+JSn#ZKjSsH0R=yWZ=~Y01=91e5cJW2A{7pkm39>Yea@DEILaPv zzig0~p(Sa;`4aV+-QE=qE?)t{iW!VXdq6Y%qb*>y#hhR`gOG*{{VAJ>vdy#}1EAT| zId2SbI#HoA?d+O$0BJc-AG_H=e|Ny)h-=~;GPHtAVx`*TOGOe=Ne61Q#M;rK-2kTPuOnVzbZy$KJ!Dokl=q#P-dmx>+tS*1$6`OzBQxaxpJ zH9@J-5-^z+ZRoUeV`vb7?mJ6VnC|U01$4_m4ClAog)x7L$v{M7O=;l=m;KkhsiNNT zm~l$Nmk6_;eU5&=1{DN7v*#y`bvi6uK_-UrO5p6)ovDUtQ>|15bVh4xd- z{W98)>v3~bdA`q7Nm|z~+qFAFU$Q6Zl-kJM@$A6qu;Xzd(fF0wPfWY}Sy6cOxmb7e z7%vPh=l5M6Pel_ML2D{gv1#XBJmx8<)Bc7)Yb$d-2F=!DTIp0AFG6fu(<%ChWVaCo zLf1}H^zk!j6la7TSW61eB<+_H|8A9QmwiKMUCBo_Dj>QHebE7YO_+$P>6poXR?vdu zMc>3El|0QAEQVV+xT(LgTHY19LV-^;m|vuKGzJEoj(neBDS-|QJe^A2qF9juJc>7e zLmrNzpO3$qmjpi_YXbBQwY}3%k9S{}xC1|)+`QuI_wd|Zd=JiQJUO6tIw<%l+0%yX z;eqoCHj}Nr{1w=C7L13nXnd?MB+s=BK6+=>k!}2b;wo#M+}`ngE8fuCXT9X=@kh^G|M zV#8Vdj=a>ZKm?_N;X{^!ZOl4yEb9>6(SzHw&&EC{50;Y$_crjeO_&F=+wbBw6gFo0 zIra+gWU$n`1V(ZgeV=twuiixxCHdosP2tzzpRw5N*rG z$vnkTc7BU5*PmG%IMa}d?i@AlW&kkyYG zZExd|fyDAC91Ug4x5T$T!a{oxX?=eJ{6tQ8~Cg& z1ZKXe;ZQ?NU1wDfliAQ;f7b`fsU(AZZ0TDFZICDn@@VRiwHq0KM+yyd zp^b0)+C09lXcP&VTVx?_t(>%QZ5xu^cjR5mry-c3Iuf99I6JQWaW`n81pRO?{Wv&~ zhkkLmGhLh4QsJ3?0Vy(^W&T9d|efu49yOBgfK7y`%pB^XT-$D z#KKMf&2MV))N%`U2}^3Z@m1wc2BTMYImxwRtRP&V1r z7BbaJREqY2L`|KdmrhKZo`6oCr=6()VV~DOgzeOQWQ>(d%Gf%p*+QD$e)`nms$hJa zwr&yq-RxJBKEw1I8v%n7M3TSr>&Or2(;%VDbp6aadJdGY;*C1cn1>KjAynGOm$Pq5 zP1;b0)~pm49NAvD8T|GJRU7!|Um=QsyY;!uGv6oJe`|b!#yI3+?_~PKd#NlLL)Cj9)b3<=Rd;F(;end_nK1C!B@{u!>^u?;nn7*l8^aHK9W6N2f*?=#QkCB z7N44c+w`ONQvV+sxggN-@|8*YlD1B$ekP|!>~a6lM@VFsB zgu*d(x8l^WH0FC6!{KLw(v7rWRD;u!A_lN{0ggdQZ7mEBt_5p4kOH=Z77PE00vFk__ghbnv6v`(7$Jr| zM7vSlKnrn+rqult4^f6|Ef{Z80xodD+BJM<*YA@w&q_Ig?ANxBtVQqGk|P*fOGOIhfG{Nr07wx9D)_vVfs{fvUjW8lEo*T? zwvw|8VD#x&u%@FSg?VXpF7CGp<~)_Jg``xcREDCe5S7F!xTTUxus@hxo~rVL z)P4<}0!>Tea-6zQp)tKpIE4$PoM||q_ev_U;WYPQ!Rc%;5I$@&8U(BOF=Q<86m=#F z6F%d217`7xFCinFaz^@Wwl86;vH~$(b>gX&34B@nZIwiGfmOX|sXO8}L>zv++g`cs z$-{URq9hup673$dD!l0eD1ScC#m6OBP2#+tj;k0fg({p=%!cQ%z6PgRp~BtKA+Q$8 zO)y6Bw#u;fQI0*qpATOvt9SlbXVg@X6^cU`5*Jh?$n@!LG5&-bX0A8tvb-C1MVTJi zS&@M__w(o3C2xyTx)Xmey-8Cf>K{CcO8LDF#4Yp%pbGIMTbyXnX2#f73v>w_YZ#?m zsfY$+ET-;Qg)*@R>L|`OFxr#Hp!%Z5D-H36>+_{u(`Hw{V?t@8C;BUwuKzhN^S}Je z{c+9&Zgve;Hk^zs76TAd21>(+mo|Q9AVLJ+M&IAIe&+3!?ZkS<}{q3pV>*fqeHixuSI|xsZEMcB(ifuYS zKXoSF@^i+JWr{vB#C1lBD&dWW#($x{|5`E#^cS= zLh|*S=gZODWP<*)l~mj}$5M|L_glgS$1juy)L^vS77II5w}(bb9X`p0P~@52(#iAA zkKN>Cla0Q=-bWh^V^ka(`%|he;E99fmcZ%#E6o1h!26}sV38ctg&aK*y&uNevwFF6 z1#iqFnrHCb62BT!*s;l2G>WzVu!Ij(G2-D_IT5ER3}`db>KTN)V{A@Qh^t!Q&cxyqTy1xmHPal((UiGoNy;vH$q6eAQ-Uq*VEfy{v`0c*spl>-YBA}_jN{^q%RfH1{ zm2A^-wG{zK2(|H6)Y@8bEOl7i0B>{#nEK4*?2PI+!|7i0kz)8(Eor;BSX}YQ5~+vv zEg}6214cz^kJQph?sRMP6&&m`Unjiu{{c5a$i4;=L?_^C1fDCntpdS?NDU>yp&85J zwwfd>Y-C0^kXWsn_9ArwWQB%c)9g#VOW%flea@E0@L4V1`w$xv6=?#7;0jl87f6f_;e=WRvLY=xvZ1(( zBu$0XDl+AVc`N^1lo{7h0s}?`Y1YCzo7muDq=SO2=oL1TY8Bk+bia>~RYm!Wln;~Ud)IFpZR-_Avoy%R7O>e=BrNJ6t8h*jEnC5770!xa@?)ad z=nO`Mu_I?N!o%1RfGY-%1rIZ9SCFk(ES}zAEiSAn%&#%&JW`%fCwBv`RAQH0=uj*D za!IU^Zx`{M6yL$*SlEJC2Hyd)isHKH>5S0(1$Yag$Br)@pb?9{g18u>K#VwnBT5iR z5^Tk^~4=lrWwzj6>nROcq4CsYaOuva;#Z z?1mu7D#ewZ<<2XJD@29(stjZWLp#VSC%zQBUD92}X`YgxBR}4e@3ZCt$q*}H)R3`9 zqb^OaNkLpH3J>8&0#<>k%sPA&(W&VuGzZ~nC$ZaT;F^kEwi<^Ok|VBlc1t~?@UVUbFZT3(>usb){pAqOw z^7O{LdwtICfNL<|>Gyfb!e|)UlaqRqf-O2tlGz*wvVx^tZ!o21 z`m8pWSu9oxcxw2;HV?kOymi&h9oO%?e)*H5x4yml-lLtz(bxOo={J9V?VZ26eisQ0 z*eCewcbnjhhZ$GoJ zX;FL8P(@~cVRBD#dQU}qM@LcD!6n-+uG@Wm)82Edcdc%lJ6P7+Q#R0$+X1&#X*w1g z)#U}7GJSQRVrW)YYbDYc444Ge6{G#9(iNc(h<817;hU5MFX)P)R^bjlO7B|2E&!rj zDRZ&u(rhk5_JZ3{oE%pHt5tJp*I?uDriB|1ELpyLY~GdaTVPH9;MD$KJ-G2NpT7S; zzy9KPpFa8hZ+}6?1OMimzx(*zzyIVu8ii;D{`1q1@uA;-aR14PqYn-p_`$hzoBIYv zN-GvMwl8iOXv(XFJw7kF2H9C|SGhB`%#K!|trDvP?amsD1AwjD~aDtj%Qovr_N&G&znhILr(SKq!n(UH7k%6oo7|ia~!D)U5jq?FTVr9YVOwemhSy@?Xe%NJ^mFq3Rtz~5ZN0D zxLSSebKut8*WVl2_MmtD?e>+|8|I&_96DUqv$vpiD_VgmB?~}S@LBoOu@?p=D?(N# zS368r@K%Mq>y2m#hU`@&HWNjFDkNBuwxDr*JaAmF(v!Rez!hC&whlfbVQS%cQzOY$B5?bMS*2whg@bb-U}(S-`*%{2L*cY^G3?gJ=Rc zz4?l4q@3ZGhY7RM4a6r86J!9q`Kmm=BAw#8>Iypctk}JDbWA6bNijgriQ(}XA_>J6 z#jyF&Od$gm#f@h02wAa392DUzJ`-?-D=8{Ej2VF}qm&jHygl1s)kU@Syp8?9Uct|Ek9vWuLL>=ADm zkL-BD;0CY?rgt>>NE{Z|Pq2y~&*OVgz$(C%P(a#(@NuEIe4juR&yxgjC1eHVYLcwv zi9}FR2W>i#RR+i^+moN?BL%VoUxBRhepMlHJf|L#4%t7+9=UsaIpc zB^-kW@~uj1R+GvVfC_3Au28Ya8BAqvhItZ&9wO1ZEDgxnaJw3Pu?<1-sobyxoX~NKEKSPU!$WLbK9nP1rqyNCcbR36Y8~m%_m=*Qmi%0BkT7yz5L1 z4~qGeh)0tZ1_P0N1#rRvo1BI4yeq`ODxASr$YDUc5cEYpih)6`LZ*_KYzB9n-E1@R zxKe}0J-d3@g1Y5s2x1-2p}9Lx&fktms~hX~eR}-jgWbozJag@E;m~%0atKd!FGijCo5wqunIJV#yx>69Q4IBS*f*!6J%9_)lpt|l{d7!JK0lM z7_92A9~!P7-ZnaR_wccsdtU$Y>bY-jocotAp8V?%z*Ij+v;qoEKrCYZzkmGczkdBO zyz75`7ipsRe|-JYx9_}tb;||>VSRn=%F#uOb_~xsykzC-&Y_{Ij@H7avW(i|jF!Cg zW|ytN0Skczeate8wZdetFxX0UrXrOtyRfA5yUA+2K?WPrGlgfWcomYZUd2?;uDA^1F5g=DK2yMZr| z)!jc)wwfBeK%c*BLU7z?Md0d{Wc7@xzL%_?VHFVTRUq_dbpv1hsb2Z{$8Y`#aOL;= zLp%kff=D%u!;FlH4hws28VZ6HiWxq`Y1RZ>rZ9#!l4S^|&cMFAmZ5pSK|o`p?E7F zA*)3+S*7HzNy}fClD`gCE5KE5&Fl2uK#*0#$hr2#H+omTGqC1ekQGuFmLK?h<>Aj) zAN^wE@h{gN{tSGz?g+suth|}M;}LDLYFKo!X3iT$-FrY*`7K*=8`h?lE=)!gVcu+C z+90}t@L5@X9nh?dt~M;Q(>hw!wq~-`&eDvx@U&}vvdssw0&zjABH0VtD%_``Yw}8> zF9BDftuffm$I~F*oNSPh+d8CHSfPk)rFNmI*H1ImI9Y}CD|#M~vCj3o;3^YuexY2!d4&`LOm^cY zU!O^-(j&P6N}kP?AhbLm3u5Ts1qZ~KW9Lf@(~{`PKDc4`?CMsa6Q9k5HJRc@fvhM& zR0MN6lM17|fgr0WDk_>CNufz7WZ^)j1wmF+6kJ&3qg)2~3L8&Y6o<{>io|j#8+A49 z&5eBqol7aTDkKh-6jANYsbqz2UuXOkY8UH$UA|km|}yv}YyQvc0xUuO&Oy zoC$Y&h^&INLPgUQ&iKp-O~nCZ1)mkIS($a|*zYq*R+#S8>&b3tjkXk4955Az6c9e9 z)L~kIz!lyvpdeTwiws-2aX^qhKuf8s2TkF70UNYwzQSHe0%oQ}YHz9r@)>VT&I7Tz#LraaeN|U1s+i)-jNarnRj3uG;b>dx@tMdt2VL>xiTk61C zATC5Ml%j+0bXLG>h3tj0+|J7E*1Ce$vCah>2j|~AdiEEO--B=JCpXW3b@}*D-a7M- zpS=6k)lhVuSNH*Dn9+{=ILmUis0R zS3Ws??$gs3-#Kvnqf588&0F19)!mran&B%-@fIh+nxa`fGaV7EdXB87P}YPhH7QSp4pXoSPxub9`rp8+5Kz%rHT4=otO=hL zEn7{2tM8GmCW6@~u!_LdOWnXJWEGOFULvb^U-DUjtU_=#Zeo9dtX}l7{}Hm)A112_ zxSBMpPwG@t4=-s}&oR|^U=^_EWwQD|B3n&D-5)@#)|O^q)r=W4XQ8G|V}#Gt$OJ_> zX|Yxv#fZe6@DN+R90?0$iaX7^>z;vNAbId?=JFxUDARLqS&YY2%s|$O_|uAglDEjaj8z z@~d_hHSHr-tB%99gJdIf*Rr>V);*ZN{UeMAA}MsqzK>TOc?zuBbmFV^N1tv!`9m}Z z5g$6X>wO4TU2AT(EW1)a?@YzuA&^yR+xGnCwOLimQj6y!b-|lD00+A(u@AD9)z<~t z%HV=|3A^nGS>dH5)E^<+Y5-1PD!S`88Ng2XDijbpsafFwtU@Z(_#T5wpU^F4~4ED2nr}g1J&e#rYt%X zl-8^WSy@`3Rzb6(T9Y58%Egjmh9Z|K%SH$} z0-Z?Gz7lf^*#c#j7}?__AqN4Nq$j8~Vs5%XXT}@ke3?C8YAawVGsvu{G?xc-@G(KKWW zd~C{1@w^n}0XqSr2ucavC_c}{rJNMUftz^9<+=GnABy68z*j`q;`(@$7bGT^_!MHF zQH5O7IEOaDV@&iJ6O!#|nQ&XhX61VGay+@&{=9T&HngmuBQw)il;JH*a%4l@g5%w) zO++Rt(z*aqn0dsf!tf)`ILJj_+@TAsMMD>qD`-|AE7-B1Ss{WOp&1%Yfl`(Wvch(0 z0F_)*iNXQKNQDl|BCF{FR?%cd>sJbG9VsJ$E23E$8%WH)t`>8n24f|0{+O`fuO=t4 zH8;>y5MN)H+ufYk*Hb(^*05wj^NQKEi#qd$I|_!8BidFxx2-L?Xk`dY$Sw<-R~|ZOO8ANi&-zjjz2X0NUm?%*} zW?gH}P;+`;U%}}1!5xRj_MBX>`|6s*Pfy-@d&|)WyU#p1cmas@=^NLstlx8U>!AxP zUO%^N$Jv#yZ|Yo#wE0avtJZfepI%fm0a-ci zRTc{w8v$8CwgOY>%w<^a44|T?0&%5B0&!4k3+e1oP!_UAb%qjLQSeDxO=P1t@*L9Q zDvQ#aIw}W2af78TD>{Y_ELw`a%y;*0`}*n|KfQVG7x%9G^3hG0*#ECD-X|ujU;g-a zPoMm^AARxrzx)~23;ycCUF;eB^3u7BYgd1C^7v7Qz z3|B9~)gL2UJrk^eRiq}nfiFr`F9}vJ0@Y+UaFT7N9A1f4|7Xbxzx#`Db@Td_i|0$=PMwB9g zt&3o3BV)ACtfJ5jM00S$$Br%u?Y0UNV0bDGufm)VS)u8JiF+h4V6qId6@Fsl=P=&k zYC}VU=nSGK2(kiYLADCTTMfc$g%Ab=TVX;FaFvj;EID@-3S@=tjk#oGy=6_|?j0ZsL|;-!SVg%71D(Cmax zA8OLIj5s*MWxM8g$*on$J~0mO@gJbTs#3mEH>A{<+~_hsGw_cU3?yC8e&9IA@LeiaTbk9^MeKzG{$_g?ob6wb1tG^F-j&?m&r8caxKZsr>A;DYI6m?wrRe? z0k}ovEPbs^T?HWv1(6o&7Q`;KwnnZY@)z2RE=P5ovl_-BpaQyqRT=FK*xU!P%JPZcX%b#ksm5TZQIsg zqnLxjftI!a?U1T~Vdx?9WIUk~VyD<(Hl=4}01huew&RF^I{L0axQV4g0*vMR!KUkRAm!Hv}8EC1=9d5|)?JpY{tDieu z(O;k0*j+ZzT+rE5Inq}>d$4Y7tYdj+#c*52NKsm|-`fbXg3k&YoUL|@*VUUWm6#Aj zPY?t}>{Z56`T(X+39nrl)+pqswU%bKRb;hvln*WI zo^x!?wol)@_T==*pTBz(aSH$N!TsNT^7xncZzGi*du`AM{HHIU{PfNh-1*(7AAWo1 z=HI+~=Qj@@{NnDNC&!L_e(uaSS1$kJ_B%+K_{Wc+W!?Sq@~!imcQ0t{?JI4oODRwG z*O5(F&N3(RtgO)7it)ZoZ^plNzDAd$(q~|Ypi+}8Qzy#QNeWG}T$!j;1!d|4IVMmv z2_l7Gr0~jB9+AXCab-fGNWkOBC6q?S(gsO>k z4)6=`xf~vcP2%#{F>EG_!{qVUr1&h6fWu`)@t9GCDZ%ozl-Z4Si(2dF)t9gAs^2x% zyM46h`0B+w=MEfPI(B0H(vurkpw4VweQMLngR2*x+`M}0?17<*;<2XMwIf4o2Zly! z8fG`OjWo8`71!qm^NX{}vw{UCjZ3d^88lwG#G#P6H0ppxlc3QgX>=(nO|nXtqS2?x zbwQL&lO)sN8Wbr5B9&hx_X=b#f!HY$xnwerOcX1ojC{66Cd811Q6{x06i$WADUmo8 z3a?b|5sIC7GGFAxui}ZFl+eZ#VQk0F6WVcL^UOSf1;rPdMPdt&r=d6sCKEfzWm1V+ zfbR#cgyKlpY%z)>(4g2n6^Ex_^W;2%OeB<;^g5T#;4mnxYQ9zwZIQDx{MH1g!EYrq zwF)7H&b*MrLNAPBM$1G3tUd^}=s8H6!(cay6&)2BJ_8w=_`lFUWD(43(;~uWDdZA1 zE0RYsMLf)jv*jZEA$c~P%&L`{6e5&H!IL4;j?dt*!!hf`WQQ}@;o;FUaA3l3%bdkv zhBKMr95$0fv6!rA4m%2o(;QYbixCkWJ~MLGjHs{~(c#m1F%c3(CdNc4B|HH;iW5C+ zCN>80m>Nm6Q9$(xWp-);Cn_Rr20z}=>C>3ArpYAvmz6Pe`5gJsCmnSvyY$RRCLC?`u^fK@EY z56Z%szVhU0Y*`9Jo`!uf5qPpF4XK+^f)rpCBiat_W$O}PRlkT4&W@VFWrc&6pjH8^ z!kIImSw%2sG6m7-_kox2BXOLpxL_&twPW=plldgaQwnWg~DUjHTfUK*ghMoES5kvf@lk@>~Zd z5W!cpsKw*P0ckaILnMnrv%-@x zCzzU^7EDRD+HJ6M@e!9LM&46XYwl=!?(Cs5tU+A1sdM9wzAZ=R?%LM2^wh$gcebCp zx%v3x{g=rY9@8JuRV)EH_W?C<->zWp>POTe7Ts<#63xc&lo%+iG(tpu3hXXSi?6FH=&#J{9Bf{^q;nKxb#wpWBg>Y4aPrt+-M;?o`**&5 z`}%Jm-v>nfr;i@~^@E$ge0&Re>@colDiCVbfBx{v)AMIPe&fWAZCgG&d-{W8NB;8W zTfe&d?$2-C{_x1j&rV&ux@FIy1*^OBE1Ob^@>1$k;;MYHC9#fDy8{i)QfS?wA;ChO z4nvFCW=p=!UTC$F{e}ipo=%^wGvp}sX-E@QnKBi+RJk@;txFV3>=Y%FNTfnON2B2D z6g;a&Vpa(aN+1?jrQq_okrX$QO-1v?1ge2jBB@Y7_=ydNoY*$fXJN? zT!~8}^9UtQfzT=zS@~S85OBqoNF^FXk_ZKIE+t0735N@{SIrS>_+ld^(sG4b4p+ew zD5PSA&*csV{Bf}+n^vro#3VU&l{vw@pg-ugc&&Q9T&R``v{DgP4e{AAQXy9%5#oyM zUX4P6sqU!AFp7$qj);N~Sz(xtj@b;GH6074*z8Clk0lec@d;!?hF-z`fK>K?1Wh2x76+sIX}HtSBX3kBI+@Z2(!p^b5F}&L?n%1O_w&LwW33OnDB9 zbOu!gkgXtI(W8R+;fx~tVyq89MuZP2WWoA;M>9j_ZYS2J{>ec?^Gtsq+sZ@7;ncDSup9{OVa$sd8Q;AUTU z;)iGst~m4=$ZB}&eMBz6!CpQ4B*?0uZAW3#rtIqF2(zNQfpHnbAS?K+LXit?BqkJb zRU|32kwz>)6irsNp9;zqdV;j23QPsK!hPICs5k<~Ay|bRRy8~-mfi9t?S!iw& z8k;4ycEFX=Ndzl}t&2_#B`KhxQ9%M!q5U<;WFW*fu@Des1;L7jD|7=vR%GPR*aW5` zY86DP&<-65+JDAIv8{>TwoFpijnzn2XDX3`UJkOFrN}2(CCv+yW|In$6;qKPDary< zL0@94@*y#y35e@V30YN)?b}%NPDVlbi8NVZxDOkRv3-xMHs%Ke;vkB{i|5NT34LK- zj36FlHNISuii=^`T*lB7IYp@eR}|L}#n42v$H@v`&**mpu_Cxe@`cScLzM+(A-XLJ!-ISW4iTYvH`v{Q zRgk$@loinpkg5PtOtz83MW4~a<=Z(iMlPGQ8gU2RMlyuRHnX`lLRlf)67k&vu0
UUFFQ^G2 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 z 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 -CZ=kf!JZcE*wK>d=M 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
Syncplay
") nameLabel.setFont(QtGui.QFont("Helvetica", 20)) - linkLabel = QtWidgets.QLabel("
syncplay.pl
") + linkLabel = QtWidgets.QLabel("
syncplay.pl
") linkLabel.setOpenExternalLinks(True) versionLabel = QtWidgets.QLabel("
" + getMessage("about-dialog-release").format(version, release_number, __binding__) + "
") licenseLabel = QtWidgets.QLabel("

Copyright © 2017 Syncplay

" + getMessage("about-dialog-license-text") + "

") @@ -222,7 +223,9 @@ class MainWindow(QtWidgets.QMainWindow): for url in urls[::-1]: if isMacOS() and IsPySide: - dropfilepath = os.path.abspath(NSURL.URLWithString_(str(url.toString())).filePathURL().path()) + macURL = NSString.alloc().initWithString_(unicode(url.toString())) + pathString = macURL.stringByAddingPercentEscapesUsingEncoding_(NSUTF8StringEncoding) + dropfilepath = os.path.abspath(NSURL.URLWithString_(pathString).filePathURL().path()) else: dropfilepath = os.path.abspath(unicode(url.toLocalFile())) if os.path.isfile(dropfilepath): @@ -327,7 +330,9 @@ class MainWindow(QtWidgets.QMainWindow): indexRow = window.playlist.count() for url in urls[::-1]: if isMacOS() and IsPySide: - dropfilepath = os.path.abspath(NSURL.URLWithString_(str(url.toString())).filePathURL().path()) + macURL = NSString.alloc().initWithString_(unicode(url.toString())) + pathString = macURL.stringByAddingPercentEscapesUsingEncoding_(NSUTF8StringEncoding) + dropfilepath = os.path.abspath(NSURL.URLWithString_(pathString).filePathURL().path()) else: dropfilepath = os.path.abspath(unicode(url.toLocalFile())) if os.path.isfile(dropfilepath): @@ -597,7 +602,7 @@ class MainWindow(QtWidgets.QMainWindow): menu.addAction(QtGui.QPixmap(resourcespath + u"delete.png"), getMessage("removefromplaylist-menu-label"), lambda: self.deleteSelectedPlaylistItems()) menu.addSeparator() menu.addAction(QtGui.QPixmap(resourcespath + u"arrow_switch.png"), getMessage("shuffleremainingplaylist-menu-label"), lambda: self.shuffleRemainingPlaylist()) - menu.addAction(QtGui.QPixmap(resourcespath + u"arrow_switch.png"), getMessage("shuffleentireplaylist-menuu-label"), lambda: self.shuffleEntirePlaylist()) + menu.addAction(QtGui.QPixmap(resourcespath + u"arrow_switch.png"), getMessage("shuffleentireplaylist-menu-label"), lambda: self.shuffleEntirePlaylist()) menu.addAction(QtGui.QPixmap(resourcespath + u"arrow_undo.png"), getMessage("undoplaylist-menu-label"), lambda: self.undoPlaylistChange()) menu.addAction(QtGui.QPixmap(resourcespath + u"film_edit.png"), getMessage("editplaylist-menu-label"), lambda: self.openEditPlaylistDialog()) menu.addAction(QtGui.QPixmap(resourcespath + u"film_add.png"),getMessage("addfilestoplaylist-menu-label"), lambda: self.OpenAddFilesToPlaylistDialog()) @@ -1120,11 +1125,11 @@ class MainWindow(QtWidgets.QMainWindow): def openUserGuide(self): if isLinux(): - self.QtGui.QDesktopServices.openUrl(QUrl("http://syncplay.pl/guide/linux/")) + self.QtGui.QDesktopServices.openUrl(QUrl("https://syncplay.pl/guide/linux/")) elif isWindows(): - self.QtGui.QDesktopServices.openUrl(QUrl("http://syncplay.pl/guide/windows/")) + self.QtGui.QDesktopServices.openUrl(QUrl("https://syncplay.pl/guide/windows/")) else: - self.QtGui.QDesktopServices.openUrl(QUrl("http://syncplay.pl/guide/")) + self.QtGui.QDesktopServices.openUrl(QUrl("https://syncplay.pl/guide/")) def drop(self): self.close() @@ -1609,7 +1614,9 @@ class MainWindow(QtWidgets.QMainWindow): if urls and urls[0].scheme() == 'file': url = event.mimeData().urls()[0] if isMacOS() and IsPySide: - dropfilepath = os.path.abspath(NSURL.URLWithString_(str(url.toString())).filePathURL().path()) + macURL = NSString.alloc().initWithString_(unicode(url.toString())) + pathString = macURL.stringByAddingPercentEscapesUsingEncoding_(NSUTF8StringEncoding) + dropfilepath = os.path.abspath(NSURL.URLWithString_(pathString).filePathURL().path()) else: dropfilepath = os.path.abspath(unicode(url.toLocalFile())) if rewindFile == False: From f3b50fe96d707d6c0ecceab86e0fda21d5bd8447 Mon Sep 17 00:00:00 2001 From: albertosottile Date: Wed, 11 Apr 2018 12:40:56 +0200 Subject: [PATCH 55/85] Fixes Travis and AppVeyor issues --- .appveyor.yml | 3 ++- .travis.yml | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.appveyor.yml b/.appveyor.yml index e7db239..bbce8d2 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -9,7 +9,8 @@ init: - set PATH=C:\Miniconda;C:\Miniconda\Scripts;C:\Program Files (x86)\NSIS;%PATH% - conda create -n syncplay -y - activate syncplay - - conda install python pywin32 -y + - conda install python=2.7.13 -y + - conda install pywin32 -y - conda install -c conda-forge pyside2 -y - pip install twisted py2exe_py2 zope.interface - type nul > C:\Miniconda\envs\syncplay\lib\site-packages\zope\__init__.py diff --git a/.travis.yml b/.travis.yml index f4cd891..e3323d7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -44,6 +44,7 @@ before_deploy: - dmgbuild -s appdmg.py "Syncplay" dist_dmg/Syncplay_${VER}_macOS_pyside2.dmg deploy: + skip_cleanup: true on: qtpy-pyside2 provider: bintray file: "bintray.json" From 2ea0a2663b287f92f58cec12f04f08ce02e3fbd6 Mon Sep 17 00:00:00 2001 From: Alberto Sottile Date: Thu, 12 Apr 2018 10:24:27 +0100 Subject: [PATCH 56/85] Upver to release 61 --- syncplay/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syncplay/__init__.py b/syncplay/__init__.py index 53e985a..d601a37 100644 --- a/syncplay/__init__.py +++ b/syncplay/__init__.py @@ -1,4 +1,4 @@ version = '1.5.3' milestone = 'Yoitsu' -release_number = '60' +release_number = '61' projectURL = 'https://syncplay.pl/' From a0a3281575611e757af586c05a8a6cbb0dbc8d31 Mon Sep 17 00:00:00 2001 From: Alberto Sottile Date: Thu, 12 Apr 2018 10:24:27 +0100 Subject: [PATCH 57/85] Upver to release 61 --- syncplay/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syncplay/__init__.py b/syncplay/__init__.py index 53e985a..d601a37 100644 --- a/syncplay/__init__.py +++ b/syncplay/__init__.py @@ -1,4 +1,4 @@ version = '1.5.3' milestone = 'Yoitsu' -release_number = '60' +release_number = '61' projectURL = 'https://syncplay.pl/' From 8ade9c0d8d8315c91d804de83dcd4d36bad5c1a3 Mon Sep 17 00:00:00 2001 From: Alberto Sottile Date: Sun, 15 Apr 2018 20:19:20 +0200 Subject: [PATCH 58/85] Fixes issue #181 from upstream --- .travis.yml | 2 +- buildPy2app.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index e3323d7..c3794eb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,7 +21,7 @@ before_install: - ln -s /usr/local/lib/python2.7/site-packages/PySide2/libpyside2-python2.7v.2.0.dylib /usr/local/lib/ - ln -s /usr/local/lib/python2.7/site-packages/PySide2/libpyside2-python2.7v.dylib /usr/local/lib/ #- python -c "from PySide2 import QtCore" -- python -c "from PySide2 import __build_commit_hash__; print __build_commit_hash__" +- python -c "from PySide2.QtCore import __version__; print __version__" - hg clone https://alby128@bitbucket.org/alby128/py2app - cd py2app - python setup.py install diff --git a/buildPy2app.py b/buildPy2app.py index 4ed17d9..f889c3d 100644 --- a/buildPy2app.py +++ b/buildPy2app.py @@ -11,7 +11,7 @@ import syncplay APP = ['syncplayClient.py'] DATA_FILES = [ - ('resources', glob('resources/*.png') + glob('resources/*.rtf')), + ('resources', glob('resources/*.png') + glob('resources/*.rtf') + glob('resources/*.lua')), ] OPTIONS = { 'iconfile':'resources/icon.icns', From 5be1a2a32ab818b58a2c6793d530daf0eb9e72b0 Mon Sep 17 00:00:00 2001 From: Alberto Sottile Date: Tue, 17 Apr 2018 08:48:24 +0200 Subject: [PATCH 59/85] Use PySide2 wheels built by pyside2-macos-linked --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c3794eb..44e9a40 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,7 +13,8 @@ before_install: - brew install ./qt5.rb - which python - which pip -- pip install http://syncplay.s3.amazonaws.com/PySide2-5.6-cp27-cp27m-macosx_10_11_x86_64.whl +- curl -L https://bintray.com/alby128/Syncplay/download_file?file_path=PySide2-5.6.0a1-5.6.1-cp27-cp27m-macosx_10_11_x86_64.whl -o PySide2-5.6.0a1-5.6.1-cp27-cp27m-macosx_10_11_x86_64.whl +- pip install PySide2-5.6.0a1-5.6.1-cp27-cp27m-macosx_10_11_x86_64.whl - ln -s /usr/local/lib/python2.7/site-packages/PySide2/libshiboken2-python2.7v.2.0.0.dylib /usr/local/lib/ - ln -s /usr/local/lib/python2.7/site-packages/PySide2/libshiboken2-python2.7v.2.0.dylib /usr/local/lib/ - ln -s /usr/local/lib/python2.7/site-packages/PySide2/libshiboken2-python2.7v.dylib /usr/local/lib/ From a18fecd7320ff2ee9d6bab13ba3d0bf4cecc5a6e Mon Sep 17 00:00:00 2001 From: Alberto Sottile Date: Tue, 17 Apr 2018 09:02:36 +0200 Subject: [PATCH 60/85] Adjusted symbolic links to dynamic libraries --- .travis.yml | 8 ++------ syncplay/ui/ConfigurationGetter.py | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/.travis.yml b/.travis.yml index 44e9a40..e497406 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,12 +15,8 @@ before_install: - which pip - curl -L https://bintray.com/alby128/Syncplay/download_file?file_path=PySide2-5.6.0a1-5.6.1-cp27-cp27m-macosx_10_11_x86_64.whl -o PySide2-5.6.0a1-5.6.1-cp27-cp27m-macosx_10_11_x86_64.whl - pip install PySide2-5.6.0a1-5.6.1-cp27-cp27m-macosx_10_11_x86_64.whl -- ln -s /usr/local/lib/python2.7/site-packages/PySide2/libshiboken2-python2.7v.2.0.0.dylib /usr/local/lib/ -- ln -s /usr/local/lib/python2.7/site-packages/PySide2/libshiboken2-python2.7v.2.0.dylib /usr/local/lib/ -- ln -s /usr/local/lib/python2.7/site-packages/PySide2/libshiboken2-python2.7v.dylib /usr/local/lib/ -- ln -s /usr/local/lib/python2.7/site-packages/PySide2/libpyside2-python2.7v.2.0.0.dylib /usr/local/lib/ -- ln -s /usr/local/lib/python2.7/site-packages/PySide2/libpyside2-python2.7v.2.0.dylib /usr/local/lib/ -- ln -s /usr/local/lib/python2.7/site-packages/PySide2/libpyside2-python2.7v.dylib /usr/local/lib/ +- ln -s /usr/local/lib/python2.7/site-packages/PySide2/libshiboken2-python2.7v.5.6.dylib /usr/local/lib/ +- ln -s /usr/local/lib/python2.7/site-packages/PySide2/libpyside2-python2.7v.5.6.dylib /usr/local/lib/ #- python -c "from PySide2 import QtCore" - python -c "from PySide2.QtCore import __version__; print __version__" - hg clone https://alby128@bitbucket.org/alby128/py2app diff --git a/syncplay/ui/ConfigurationGetter.py b/syncplay/ui/ConfigurationGetter.py index d1bbe81..72cd879 100755 --- a/syncplay/ui/ConfigurationGetter.py +++ b/syncplay/ui/ConfigurationGetter.py @@ -467,17 +467,17 @@ class ConfigurationGetter(object): self._overrideConfigWithArgs(args) if not self._config['noGui']: try: - from syncplay.vendor.Qt import QtWidgets, IsPySide, IsPySide2 - from syncplay.vendor.Qt.QtCore import QCoreApplication - from syncplay.vendor import qt5reactor - if not (IsPySide2 or IsPySide): - raise ImportError - if QCoreApplication.instance() is None: - self.app = QtWidgets.QApplication(sys.argv) - qt5reactor.install() - if isMacOS(): - import appnope - appnope.nope() + from syncplay.vendor.Qt import QtWidgets, IsPySide, IsPySide2 + from syncplay.vendor.Qt.QtCore import QCoreApplication + from syncplay.vendor import qt5reactor + if not (IsPySide2 or IsPySide): + raise ImportError + if QCoreApplication.instance() is None: + self.app = QtWidgets.QApplication(sys.argv) + qt5reactor.install() + if isMacOS(): + import appnope + appnope.nope() except ImportError: print getMessage("unable-import-gui-error") self._config['noGui'] = True From 2013913ba6af3ee3ce1a3d91e078328daf027242 Mon Sep 17 00:00:00 2001 From: albertosottile Date: Tue, 17 Apr 2018 16:04:20 +0200 Subject: [PATCH 61/85] Switch to qt 5.9.3 --- .travis.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index e497406..9e5bcf6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,14 +9,15 @@ script: - python buildPy2app.py py2app before_install: -- curl -O https://raw.githubusercontent.com/Homebrew/homebrew-core/fdfc724dd532345f5c6cdf47dc43e99654e6a5fd/Formula/qt5.rb -- brew install ./qt5.rb +- brew update +- curl -O http://syncplay.s3.amazonaws.com/qt.rb +- brew install ./qt.rb - which python - which pip -- curl -L https://bintray.com/alby128/Syncplay/download_file?file_path=PySide2-5.6.0a1-5.6.1-cp27-cp27m-macosx_10_11_x86_64.whl -o PySide2-5.6.0a1-5.6.1-cp27-cp27m-macosx_10_11_x86_64.whl -- pip install PySide2-5.6.0a1-5.6.1-cp27-cp27m-macosx_10_11_x86_64.whl -- ln -s /usr/local/lib/python2.7/site-packages/PySide2/libshiboken2-python2.7v.5.6.dylib /usr/local/lib/ -- ln -s /usr/local/lib/python2.7/site-packages/PySide2/libpyside2-python2.7v.5.6.dylib /usr/local/lib/ +- curl -L https://bintray.com/alby128/Syncplay/download_file?file_path=PySide2-5.9.0a1-5.9.3-cp27-cp27m-macosx_10_11_x86_64.whl -o PySide2-5.9.0a1-5.9.3-cp27-cp27m-macosx_10_11_x86_64.whl +- pip install PySide2-5.9.0a1-5.9.3-cp27-cp27m-macosx_10_11_x86_64.whl +- ln -s /usr/local/lib/python2.7/site-packages/PySide2/libshiboken2-python2.7v.5.9.dylib /usr/local/lib/ +- ln -s /usr/local/lib/python2.7/site-packages/PySide2/libpyside2-python2.7v.5.9.dylib /usr/local/lib/ #- python -c "from PySide2 import QtCore" - python -c "from PySide2.QtCore import __version__; print __version__" - hg clone https://alby128@bitbucket.org/alby128/py2app From 3c37896a590ca2bfe5de61b527fa5dbdb60a1d70 Mon Sep 17 00:00:00 2001 From: Alberto Sottile Date: Thu, 19 Apr 2018 22:25:06 +0200 Subject: [PATCH 62/85] Update to Qt 5.9.5 --- .travis.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9e5bcf6..f7f88e3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,12 +10,13 @@ script: before_install: - brew update -- curl -O http://syncplay.s3.amazonaws.com/qt.rb +- curl -O http://syncplay.s3.amazonaws.com/qt595.rb +- mv qt595.rb qt.rb - brew install ./qt.rb - which python - which pip -- curl -L https://bintray.com/alby128/Syncplay/download_file?file_path=PySide2-5.9.0a1-5.9.3-cp27-cp27m-macosx_10_11_x86_64.whl -o PySide2-5.9.0a1-5.9.3-cp27-cp27m-macosx_10_11_x86_64.whl -- pip install PySide2-5.9.0a1-5.9.3-cp27-cp27m-macosx_10_11_x86_64.whl +- curl -L https://bintray.com/alby128/Syncplay/download_file?file_path=PySide2-5.9.0a1-5.9.5-cp27-cp27m-macosx_10_11_x86_64.whl -o PySide2-5.9.0a1-5.9.5-cp27-cp27m-macosx_10_11_x86_64.whl +- pip install PySide2-5.9.0a1-5.9.5-cp27-cp27m-macosx_10_11_x86_64.whl - ln -s /usr/local/lib/python2.7/site-packages/PySide2/libshiboken2-python2.7v.5.9.dylib /usr/local/lib/ - ln -s /usr/local/lib/python2.7/site-packages/PySide2/libpyside2-python2.7v.5.9.dylib /usr/local/lib/ #- python -c "from PySide2 import QtCore" From 95b5aaeeadff070fe572fd540c1bbf88514a1ed2 Mon Sep 17 00:00:00 2001 From: albertosottile Date: Mon, 7 May 2018 16:18:46 +0200 Subject: [PATCH 63/85] Add extra files to Windows portable release --- .appveyor.yml | 11 +++++++---- resources/win_lua_note.txt | 6 ++++++ 2 files changed, 13 insertions(+), 4 deletions(-) create mode 100755 resources/win_lua_note.txt diff --git a/.appveyor.yml b/.appveyor.yml index bbce8d2..23b3db7 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -27,7 +27,9 @@ install: - del syncplay_v%ver%\lib\MPR.dll - mkdir syncplay_v%ver%\platforms - copy C:\Miniconda\envs\syncplay\library\plugins\platforms\qwindows.dll syncplay_v%ver%\platforms\ - - copy Syncplay-%ver%-Setup.exe Syncplay-%ver%-Setup-PySide2.exe + - copy Syncplay-%ver%-Setup.exe Syncplay-%ver%-Setup.exe + - type nul > syncplay_v%ver%\syncplay.ini + - copy resources\win_lua_note.txt syncplay_v%ver%\"VLC LUA Script installation.txt" # Not a project with an msbuild file, build done at install. build: off @@ -35,14 +37,15 @@ build: off artifacts: - path: 'syncplay_v$(ver)' type: zip - name: Syncplay-$(ver)-win-pyside2 + name: Syncplay_v$(ver)_Portable - - path: Syncplay-$(ver)-Setup-PySide2.exe - name: Syncplay-$(ver)-win-setup-pyside2 + - path: Syncplay-$(ver)-Setup.exe + name: Syncplay-$(ver)-win-setup # Push artefact to S3 bucket and list all before_deploy: - dir + - dir syncplay_v%ver% #- python -c "from PySide2 import QtCore; print QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.PluginsPath)" diff --git a/resources/win_lua_note.txt b/resources/win_lua_note.txt new file mode 100755 index 0000000..66835d8 --- /dev/null +++ b/resources/win_lua_note.txt @@ -0,0 +1,6 @@ +You must follow the following instructions to use Syncplay with VLC: + +Place the syncplay.lua file from /resources/lua/intf/ into the main (all user) VLC /lua/intf/ sub-directory: +* Window: %ProgramFiles%\VideoLAN\VLC\lua\intf\ + +Note: A version of these instructions is also available from http://syncplay.pl/LUA \ No newline at end of file From aa96e6d2e3d3f7756291607cdb9748f13e1c23e0 Mon Sep 17 00:00:00 2001 From: albertosottile Date: Mon, 7 May 2018 16:25:42 +0200 Subject: [PATCH 64/85] Upver to 1.5.4 release 62 --- .appveyor.yml | 1 - syncplay/__init__.py | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 23b3db7..6c9fcf3 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -27,7 +27,6 @@ install: - del syncplay_v%ver%\lib\MPR.dll - mkdir syncplay_v%ver%\platforms - copy C:\Miniconda\envs\syncplay\library\plugins\platforms\qwindows.dll syncplay_v%ver%\platforms\ - - copy Syncplay-%ver%-Setup.exe Syncplay-%ver%-Setup.exe - type nul > syncplay_v%ver%\syncplay.ini - copy resources\win_lua_note.txt syncplay_v%ver%\"VLC LUA Script installation.txt" diff --git a/syncplay/__init__.py b/syncplay/__init__.py index d601a37..874d028 100644 --- a/syncplay/__init__.py +++ b/syncplay/__init__.py @@ -1,4 +1,4 @@ -version = '1.5.3' +version = '1.5.4' milestone = 'Yoitsu' -release_number = '61' +release_number = '62' projectURL = 'https://syncplay.pl/' From c0d74a199588e7eb9458e7dc8d82fc5a9ae964da Mon Sep 17 00:00:00 2001 From: albertosottile Date: Mon, 7 May 2018 16:58:41 +0200 Subject: [PATCH 65/85] Remove dependency from pyobjc on Travis --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index f7f88e3..7170bd7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,7 +28,7 @@ before_install: - python -c "from py2app.recipes import pyside2" install: -- pip install twisted appnope pyobjc +- pip install twisted appnope #- git clone -b qtpy-pyside2 https://github.com/alby128/syncplay.git syncplay-qtpy-PySide2 #- cd syncplay-qtpy-PySide2 #- git checkout qtpy-pyside2 From 2d244917d989baf770ceecf02f78a0eee99c0e6a Mon Sep 17 00:00:00 2001 From: albertosottile Date: Mon, 7 May 2018 17:35:46 +0200 Subject: [PATCH 66/85] Change .dmg name on Travis --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 7170bd7..af45728 100644 --- a/.travis.yml +++ b/.travis.yml @@ -40,7 +40,7 @@ before_deploy: - mv resources/lua/intf/syncplay.lua resources/lua/intf/.syncplay.lua - mv resources/macOS_readme.pdf resources/.macOS_readme.pdf - export VER="$(cat syncplay/__init__.py | awk '/version/ {gsub("\047", "", $3); print $NF}')" -- dmgbuild -s appdmg.py "Syncplay" dist_dmg/Syncplay_${VER}_macOS_pyside2.dmg +- dmgbuild -s appdmg.py "Syncplay" dist_dmg/Syncplay_${VER}.dmg deploy: skip_cleanup: true From baf2d3831da67f3282ef96c25bdfdfaf76ea7912 Mon Sep 17 00:00:00 2001 From: albertosottile Date: Mon, 7 May 2018 18:31:06 +0200 Subject: [PATCH 67/85] Update third-party-notices for PySide2 --- resources/third-party-notices.rtf | 61 +++++++------------------------ 1 file changed, 14 insertions(+), 47 deletions(-) diff --git a/resources/third-party-notices.rtf b/resources/third-party-notices.rtf index 492a24a..90bddfc 100644 --- a/resources/third-party-notices.rtf +++ b/resources/third-party-notices.rtf @@ -24,26 +24,25 @@ The above copyright notice and this permission notice shall be included in all\ copies or substantial portions of the Software.\ \ -\b PySide\ +\b Qt for Python\ \b0 \ -Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).\ -Contact: PySide team \ +Copyright (C) 2018 The Qt Company Ltd.\ +Contact: https://www.qt.io/licensing/\ \ -This library is free software; you can redistribute it and/or\ -modify it under the terms of the GNU Lesser General Public\ -License as published by the Free Software Foundation; either\ -version 2.1 of the License, or (at your option) any later version.\ -This library is distributed in the hope that it will be useful,\ +This program is free software: you can redistribute it and/or modify\ +it under the terms of the GNU Lesser General Public License as published\ +by the Free Software Foundation, either version 3 of the License, or\ +(at your option) any later version.\ +\ +This program is distributed in the hope that it will be useful,\ but WITHOUT ANY WARRANTY; without even the implied warranty of\ -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\ -Lesser General Public License for more details.\ +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\ +GNU Lesser General Public License for more details.\ +\ +You should have received a copy of the GNU Lesser General Public License\ +along with this program. If not, see .\ \ -\pard\pardeftab720\partightenfactor0 -\cf0 You should have received a copy of the GNU Lesser General Public License\ -along with this program. If not, see \ -\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 -\cf0 \ \b Twisted\ \ @@ -113,27 +112,6 @@ The above copyright notice and this permission notice shall be\ included in all copies or substantial portions of the Software.\ \b \ -Qt 4\ -\ - -\b0 Copyright (C) 2015 The Qt Company Ltd.\ -Contact: http://www.qt.io/licensing/\ -\ -This library is free software; you can redistribute it and/or\ -modify it under the terms of the GNU Lesser General Public\ -License as published by the Free Software Foundation; either\ -version 2.1 of the License, or (at your option) any later version.\ -This library is distributed in the hope that it will be useful,\ -but WITHOUT ANY WARRANTY; without even the implied warranty of\ -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\ -Lesser General Public License for more details.\ -\ -\pard\pardeftab720\partightenfactor0 -\cf0 You should have received a copy of the GNU Lesser General Public License\ -along with this program. If not, see \ -\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 - -\b \cf0 \ appnope\ \b0 \ @@ -157,17 +135,6 @@ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\ - -\b \ -PyObjC\ - -\b0 \ -Copyright 2002, 2003 - Bill Bumgarner, Ronald Oussoren, Steve Majewski, Lele Gaifax, et.al.\ -Copyright 2003-2016 - Ronald Oussoren\ -\ -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\ -\ -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\ \ \b py2exe\ From a35760038ea7835533f2edc2f43a2b5c3de4057f Mon Sep 17 00:00:00 2001 From: albertosottile Date: Tue, 8 May 2018 11:35:03 +0200 Subject: [PATCH 68/85] Fixes part of issue #184 --- syncplay/ui/GuiConfiguration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py index 5a092f0..f46af65 100755 --- a/syncplay/ui/GuiConfiguration.py +++ b/syncplay/ui/GuiConfiguration.py @@ -342,7 +342,7 @@ class ConfigDialog(QtWidgets.QDialog): try: servers = utils.getListOfPublicServers() except IOError as e: - self.showErrorMessage(unicode(e)) + self.showErrorMessage(e.args[0]) return currentServer = self.hostCombobox.currentText() self.hostCombobox.clear() From fa21b574ff65d6e99bc963739aa5bfb80b56046e Mon Sep 17 00:00:00 2001 From: albertosottile Date: Tue, 8 May 2018 17:58:11 +0200 Subject: [PATCH 69/85] Add Qt 5 license notice in the dependencies text file --- resources/third-party-notices.rtf | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/resources/third-party-notices.rtf b/resources/third-party-notices.rtf index 90bddfc..5ef095d 100644 --- a/resources/third-party-notices.rtf +++ b/resources/third-party-notices.rtf @@ -44,6 +44,32 @@ You should have received a copy of the GNU Lesser General Public License\ along with this program. If not, see .\ \ +\b Qt +\b0 \ +\ +This program uses Qt versions 5.6 and 5.9 under the GNU LGPL version 3.\ +\ +Qt is a C++ toolkit for cross-platform application development.\ +\ +Qt provides single-source portability across all major desktop operating systems. It is also available for embedded Linux and other embedded and mobile operating systems.\ +\ +Qt is available under three different licensing options designed to accommodate the needs of our various users.\ +\ +Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 3 or GNU LGPL version 2.1.\ +\ +Qt licensed under the GNU LGPL version 3 is appropriate for the development of Qt applications provided you can comply with the terms and conditions of the GNU LGPL version 3.\ +\ +Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications provided you can comply with the terms and conditions of the GNU LGPL version 2.1.\ +\ +Please see qt.io/licensing for an overview of Qt licensing.\ +\ +Copyright (C) 2017 The Qt Company Ltd and other contributors.\ +\ +Qt and the Qt logo are trademarks of The Qt Company Ltd.\ +\ +Qt is The Qt Company Ltd product developed as an open source project. See qt.io for more information.\ +\ + \b Twisted\ \ From 8133d3faf8b6f14c1912021369d9396748ee38bd Mon Sep 17 00:00:00 2001 From: Alberto Sottile Date: Tue, 8 May 2018 21:44:40 +0200 Subject: [PATCH 70/85] Add https url in 'failed-to-load-server-list-error' message --- syncplay/messages_de.py | 2 +- syncplay/messages_en.py | 2 +- syncplay/messages_it.py | 2 +- syncplay/messages_ru.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py index eac5b70..3f4905e 100644 --- a/syncplay/messages_de.py +++ b/syncplay/messages_de.py @@ -149,7 +149,7 @@ de = { "no-media-directories-error" : u"No media directories have been set. For shared playlist and file switching features to work properly please select File->Set Media Directories and specify where Syncplay should look to find media files.", # TODO: Translate "cannot-find-directory-error" : u"Could not find media directory '{}'. To update your list of media directories please select File->Set Media Directories from the menu bar and specify where Syncplay should look to find media files.", # TODO: Translate - "failed-to-load-server-list-error" : u"Konnte die Liste der öffentlichen Server nicht laden. Bitte besuche http://www.syncplay.pl/ [Englisch] mit deinem Browser.", + "failed-to-load-server-list-error" : u"Konnte die Liste der öffentlichen Server nicht laden. Bitte besuche https://www.syncplay.pl/ [Englisch] mit deinem Browser.", # Client arguments "argument-description" : u'Syncplay ist eine Anwendung um mehrere MPlayer, MPC-HC, MPC-BE und VLC-Instanzen über das Internet zu synchronisieren.', diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py index 2dc14a5..94f858e 100644 --- a/syncplay/messages_en.py +++ b/syncplay/messages_en.py @@ -152,7 +152,7 @@ en = { "no-media-directories-error" : u"No media directories have been set. For shared playlist and file switching features to work properly please select File->Set Media Directories and specify where Syncplay should look to find media files.", "cannot-find-directory-error" : u"Could not find media directory '{}'. To update your list of media directories please select File->Set Media Directories from the menu bar and specify where Syncplay should look to find media files.", - "failed-to-load-server-list-error" : u"Failed to load public server list. Please visit http://www.syncplay.pl/ in your browser.", + "failed-to-load-server-list-error" : u"Failed to load public server list. Please visit https://www.syncplay.pl/ in your browser.", # Client arguments "argument-description" : 'Solution to synchronize playback of multiple media player instances over the network.', diff --git a/syncplay/messages_it.py b/syncplay/messages_it.py index 2de7b79..f73e6d0 100644 --- a/syncplay/messages_it.py +++ b/syncplay/messages_it.py @@ -152,7 +152,7 @@ it = { "no-media-directories-error" : u"Nessuna cartella multimediale è stata configurata. Per permettere il corretto funzionamento delle playlist condivise e la selezione automatica dei file, naviga in File->Imposta cartelle multimediali e specifica dove Syncplay deve ricercare i file multimediali.", "cannot-find-directory-error" : u"Impossibile trovare la cartella multimediale '{}'. Per aggiornare la lista delle cartelle multimediali seleziona File->Imposta cartelle multimediali dalla barra dei menù e specifica dove Syncplay deve ricercare i file multimediali.", - "failed-to-load-server-list-error" : u"Impossibile caricare la lista dei server pubblici. Per favore, visita http://www.syncplay.pl/ con il tuo browser.", + "failed-to-load-server-list-error" : u"Impossibile caricare la lista dei server pubblici. Per favore, visita https://www.syncplay.pl/ con il tuo browser.", # Client arguments "argument-description" : u'Programma per sincronizzare la riproduzione di media player multipli attraverso la rete.', diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py index c235946..4070105 100644 --- a/syncplay/messages_ru.py +++ b/syncplay/messages_ru.py @@ -155,7 +155,7 @@ ru = { "no-media-directories-error" : u"Вы не указали папки воспроизведения. Для корректной работы зайдите через выпадающее меню в Файл->Папки воспроизведения и укажите нужные каталоги.", "cannot-find-directory-error" : u"Не удалось найти папку воспроизведения '{}'. Для обновления списка папок, через выпадающее меню, перейдите в Файл->Папки воспроизведения и укажите нужные каталоги.", - "failed-to-load-server-list-error" : u"Не удалось загрузить список публичных серверов. Откройте http://www.syncplay.pl/ через браузер.", + "failed-to-load-server-list-error" : u"Не удалось загрузить список публичных серверов. Откройте https://www.syncplay.pl/ через браузер.", # Client arguments "argument-description" : u'Решение для синхронного воспроизведения в VLC, MPlayer или MPC-HC/BE через Интернет.', From 5e6cc80efb2f2ee3f4b6cc10b7ee11d1e2d3a9e7 Mon Sep 17 00:00:00 2001 From: Alberto Sottile Date: Fri, 11 May 2018 22:56:30 +0200 Subject: [PATCH 71/85] Shows server list update error when in debug mode --- syncplay/ui/GuiConfiguration.py | 1 + syncplay/utils.py | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py index f46af65..fdf8724 100755 --- a/syncplay/ui/GuiConfiguration.py +++ b/syncplay/ui/GuiConfiguration.py @@ -20,6 +20,7 @@ class GuiConfiguration: self.config = config self._availablePlayerPaths = [] self.error = error + constants.DEBUG_MODE = config['debug'] def run(self): if QCoreApplication.instance() is None: diff --git a/syncplay/utils.py b/syncplay/utils.py index 72fa947..17d7fcc 100644 --- a/syncplay/utils.py +++ b/syncplay/utils.py @@ -14,6 +14,7 @@ import ast import unicodedata import platform import subprocess +import traceback folderSearchEnabled = True @@ -386,7 +387,11 @@ def getListOfPublicServers(): else: raise IOError except: - raise IOError(getMessage("failed-to-load-server-list-error")) + if constants.DEBUG_MODE == True: + traceback.print_exc() + raise + else: + raise IOError(getMessage("failed-to-load-server-list-error")) class RoomPasswordProvider(object): CONTROLLED_ROOM_REGEX = re.compile("^\+(.*):(\w{12})$") From 477dc3753550f4d491c8b265e8bb811bb8c7c710 Mon Sep 17 00:00:00 2001 From: albertosottile Date: Mon, 28 May 2018 15:00:17 +0200 Subject: [PATCH 72/85] Use requests instead of urllib in getListOfPublicServers and checkForUpdate --- .travis.yml | 1 + buildPy2app.py | 2 +- buildPy2exe.py | 4 ++-- resources/third-party-notices.rtf | 16 +++++++++++++++- syncplay/client.py | 20 ++++++++++++-------- syncplay/utils.py | 14 +++++++++----- 6 files changed, 40 insertions(+), 17 deletions(-) diff --git a/.travis.yml b/.travis.yml index a2c67ae..6044335 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,6 +29,7 @@ before_install: install: - pip install twisted appnope +- pip install -U https://github.com/requests/requests/zipball/master #- git clone -b qtpy-pyside2 https://github.com/alby128/syncplay.git syncplay-qtpy-PySide2 #- cd syncplay-qtpy-PySide2 #- git checkout qtpy-pyside2 diff --git a/buildPy2app.py b/buildPy2app.py index f889c3d..74cb424 100644 --- a/buildPy2app.py +++ b/buildPy2app.py @@ -15,7 +15,7 @@ DATA_FILES = [ ] OPTIONS = { 'iconfile':'resources/icon.icns', - 'includes': {'PySide2.QtCore', 'PySide2.QtUiTools', 'PySide2.QtGui','PySide2.QtWidgets'}, + 'includes': {'PySide2.QtCore', 'PySide2.QtUiTools', 'PySide2.QtGui','PySide2.QtWidgets', 'certifi'}, 'excludes': {'PySide', 'PySide.QtCore', 'PySide.QtUiTools', 'PySide.QtGui'}, 'qt_plugins': ['platforms/libqcocoa.dylib', 'platforms/libqminimal.dylib','platforms/libqoffscreen.dylib'], 'plist': { diff --git a/buildPy2exe.py b/buildPy2exe.py index bff96a4..881667c 100755 --- a/buildPy2exe.py +++ b/buildPy2exe.py @@ -721,8 +721,8 @@ info = dict( options={'py2exe': { 'dist_dir': OUT_DIR, 'packages': 'PySide2.QtUiTools', - 'includes': 'twisted, sys, encodings, datetime, os, time, math, PySide2, liburl, ast, unicodedata', - 'excludes': 'venv, _ssl, doctest, pdb, unittest, win32clipboard, win32file, win32pdh, win32security, win32trace, win32ui, winxpgui, win32pipe, win32process, Tkinter', + 'includes': 'twisted, sys, encodings, datetime, os, time, math, PySide2, liburl, ast, unicodedata, _ssl', + 'excludes': 'venv, doctest, pdb, unittest, win32clipboard, win32file, win32pdh, win32security, win32trace, win32ui, winxpgui, win32pipe, win32process, Tkinter', 'dll_excludes': 'msvcr71.dll, MSVCP90.dll, POWRPROF.dll', 'optimize': 2, 'compressed': 1 diff --git a/resources/third-party-notices.rtf b/resources/third-party-notices.rtf index 5ef095d..e67066e 100644 --- a/resources/third-party-notices.rtf +++ b/resources/third-party-notices.rtf @@ -208,4 +208,18 @@ furnished to do so, subject to the following conditions:\ The above copyright notice and this permission notice shall be included in\ all copies or substantial portions of the Software.\ \ -} \ No newline at end of file + +\b Requests\ +\ + +\b0 Copyright 2018 Kenneth Reitz\ +\ +Licensed under the Apache License, Version 2.0 (the \'93License\'94); you may not use this file\ +except in compliance with the License. You may obtain a copy of the License at\ +\ +http://www.apache.org/licenses/LICENSE-2.0\ +\ +Unless required by applicable law or agreed to in writing, software distributed under the \ +License is distributed on an \'93AS IS\'94 BASIS, WITHOUT WARRANTIES OR CONDI-\ +TIONS OF ANY KIND, either express or implied. See the License for the specific lang-\ +uage governing permissions and limitations under the License.} \ No newline at end of file diff --git a/syncplay/client.py b/syncplay/client.py index e8cb8b5..665da98 100644 --- a/syncplay/client.py +++ b/syncplay/client.py @@ -11,7 +11,8 @@ from twisted.internet import reactor, task, defer, threads from functools import wraps from copy import deepcopy from syncplay.protocols import SyncClientProtocol -from syncplay import utils, constants +from syncplay import utils, constants, version +from syncplay.utils import isMacOS from syncplay.messages import getMissingStrings, getMessage from syncplay.constants import PRIVACY_SENDHASHED_MODE, PRIVACY_DONTSEND_MODE, \ PRIVACY_HIDDENFILENAME @@ -910,12 +911,15 @@ class SyncplayClient(object): def checkForUpdate(self, userInitiated): try: - import urllib, syncplay, sys, messages, json - params = urllib.urlencode({'version': syncplay.version, 'milestone': syncplay.milestone, 'release_number': syncplay.release_number, - 'language': messages.messages["CURRENT"], 'platform': sys.platform, 'userInitiated': userInitiated}) - - f = urllib.urlopen(constants.SYNCPLAY_UPDATE_URL.format(params)) - response = f.read() + import syncplay, sys, messages, urllib, json + params = urllib.urlencode({'version': syncplay.version, 'milestone': syncplay.milestone, 'release_number': syncplay.release_number, 'language': messages.messages["CURRENT"], 'platform': sys.platform, 'userInitiated': userInitiated}) + if isMacOS(): + import requests + response = requests.get(constants.SYNCPLAY_UPDATE_URL.format(params)) + response = response.text + else: + f = urllib.urlopen(constants.SYNCPLAY_UPDATE_URL.format(params)) + response = f.read() response = response.replace("

","").replace("

","").replace("
","").replace("“","\"").replace("”","\"") # Fix Wordpress response = json.loads(response) publicServers = None @@ -926,7 +930,7 @@ class SyncplayClient(object): return response["version-status"], response["version-message"] if response.has_key("version-message")\ else None, response["version-url"] if response.has_key("version-url") else None, publicServers except: - return "failed", getMessage("update-check-failed-notification").format(syncplay.version), constants.SYNCPLAY_DOWNLOAD_URL, None + return "failed", getMessage("update-check-failed-notification").format(version), constants.SYNCPLAY_DOWNLOAD_URL, None class _WarningManager(object): def __init__(self, player, userlist, ui, client): diff --git a/syncplay/utils.py b/syncplay/utils.py index 17d7fcc..5ad8b6c 100644 --- a/syncplay/utils.py +++ b/syncplay/utils.py @@ -374,11 +374,15 @@ def open_system_file_browser(path): def getListOfPublicServers(): try: - import urllib, syncplay, sys, messages, json - params = urllib.urlencode({'version': syncplay.version, 'milestone': syncplay.milestone, 'release_number': syncplay.release_number, - 'language': messages.messages["CURRENT"]}) - f = urllib.urlopen(constants.SYNCPLAY_PUBLIC_SERVER_LIST_URL.format(params)) - response = f.read() + import syncplay, sys, messages, urllib + params = urllib.urlencode({'version': syncplay.version, 'milestone': syncplay.milestone, 'release_number': syncplay.release_number, 'language': messages.messages["CURRENT"]}) + if isMacOS(): + import requests + response = requests.get(constants.SYNCPLAY_PUBLIC_SERVER_LIST_URL.format(params)) + response = response.text + else: + f = urllib.urlopen(constants.SYNCPLAY_PUBLIC_SERVER_LIST_URL.format(params)) + response = f.read() response = response.replace("

","").replace("

","").replace("
","").replace("“","'").replace("”","'").replace(":’","'").replace("’","'").replace("′","'").replace("\n","").replace("\r","") # Fix Wordpress response = ast.literal_eval(response) From 78177bbbbda8ea8273a5e54c17ec02483ed9c05e Mon Sep 17 00:00:00 2001 From: albertosottile Date: Wed, 13 Jun 2018 15:10:35 +0200 Subject: [PATCH 73/85] Fix syncplay-mediasearchdirectories-label in all languages --- syncplay/messages_de.py | 3 ++- syncplay/messages_en.py | 3 ++- syncplay/messages_ru.py | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py index 3f4905e..ea987db 100644 --- a/syncplay/messages_de.py +++ b/syncplay/messages_de.py @@ -218,7 +218,8 @@ de = { "misc-label" : u"Diverse", "core-behaviour-title" : u"Verhalten des Raumes", "syncplay-internals-title" : u"Syncplay intern", - "syncplay-mediasearchdirectories-title" : u"In diesen Verzeichnissen nach Medien suchen (ein Pfad pro Zeile)", + "syncplay-mediasearchdirectories-title" : u"In diesen Verzeichnissen nach Medien suchen", #needs to be checked + "syncplay-mediasearchdirectories-label" : u"In diesen Verzeichnissen nach Medien suchen (ein Pfad pro Zeile)", "sync-label" : u"Synchronisation", "sync-otherslagging-title" : u"Wenn andere laggen...", "sync-youlaggging-title" : u"Wenn du laggst...", diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py index 94f858e..6f5d085 100644 --- a/syncplay/messages_en.py +++ b/syncplay/messages_en.py @@ -223,7 +223,8 @@ en = { "misc-label" : u"Misc", "core-behaviour-title" : "Core room behaviour", "syncplay-internals-title" : u"Syncplay internals", - "syncplay-mediasearchdirectories-title" : u"Directories to search for media (one path per line)", + "syncplay-mediasearchdirectories-title" : u"Directories to search for media", + "syncplay-mediasearchdirectories-label" : u"Directories to search for media (one path per line)", "sync-label" : "Sync", "sync-otherslagging-title" : "If others are lagging behind...", "sync-youlaggging-title" : "If you are lagging behind...", diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py index 4070105..ca790d6 100644 --- a/syncplay/messages_ru.py +++ b/syncplay/messages_ru.py @@ -226,7 +226,8 @@ ru = { "misc-label" : u"Прочее", "core-behaviour-title" : u"Информация о файлах", "syncplay-internals-title" : u"Системные настройки", - "syncplay-mediasearchdirectories-title" : u"Папки воспроизведения (один путь на строку)", + "syncplay-mediasearchdirectories-title" : u"Папки воспроизведения", #needs to be checked + "syncplay-mediasearchdirectories-label" : u"Папки воспроизведения (один путь на строку)", "sync-label" : u"Синхронизация", "sync-otherslagging-title" : u"Опережение", "sync-youlaggging-title" : u"Отставание", From 89e3859955cf24e3c1b7579e8e9e0d059bd7ecdd Mon Sep 17 00:00:00 2001 From: albertosottile Date: Wed, 13 Jun 2018 19:45:11 +0200 Subject: [PATCH 74/85] Travis: use PySide2 TP with Qt 5.11.0 --- .travis.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0399e58..bee6d6a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,15 +10,13 @@ script: before_install: - brew update -- curl -O http://syncplay.s3.amazonaws.com/qt595.rb -- mv qt595.rb qt.rb -- brew install ./qt.rb +- brew install qt - which python - which pip -- curl -L https://bintray.com/alby128/Syncplay/download_file?file_path=PySide2-5.9.0a1-5.9.5-cp27-cp27m-macosx_10_11_x86_64.whl -o PySide2-5.9.0a1-5.9.5-cp27-cp27m-macosx_10_11_x86_64.whl -- pip install PySide2-5.9.0a1-5.9.5-cp27-cp27m-macosx_10_11_x86_64.whl -- ln -s /usr/local/lib/python2.7/site-packages/PySide2/libshiboken2-python2.7v.5.9.dylib /usr/local/lib/ -- ln -s /usr/local/lib/python2.7/site-packages/PySide2/libpyside2-python2.7v.5.9.dylib /usr/local/lib/ +- curl -L https://bintray.com/alby128/Syncplay/download_file?file_path=PySide2-5.11.0-5.11.0-cp27-cp27m-macosx_10_11_x86_64.whl -o PySide2-5.11.0-5.11.0-cp27-cp27m-macosx_10_11_x86_64.whl +- pip install PySide2-5.11.0-5.11.0-cp27-cp27m-macosx_10_11_x86_64.whl +- ln -s /usr/local/lib/python2.7/site-packages/PySide2/libshiboken2-python2.7v.5.11.dylib /usr/local/lib/ +- ln -s /usr/local/lib/python2.7/site-packages/PySide2/libpyside2-python2.7v.5.11.dylib /usr/local/lib/ #- python -c "from PySide2 import QtCore" - python -c "from PySide2.QtCore import __version__; print __version__" - hg clone https://alby128@bitbucket.org/alby128/py2app From 0e60863d43a5b230839191743f72818763eeee71 Mon Sep 17 00:00:00 2001 From: albertosottile Date: Wed, 13 Jun 2018 16:14:08 +0200 Subject: [PATCH 75/85] Update py2app script for Qt 5.11 --- buildPy2app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildPy2app.py b/buildPy2app.py index 74cb424..0821adf 100644 --- a/buildPy2app.py +++ b/buildPy2app.py @@ -17,7 +17,7 @@ OPTIONS = { 'iconfile':'resources/icon.icns', 'includes': {'PySide2.QtCore', 'PySide2.QtUiTools', 'PySide2.QtGui','PySide2.QtWidgets', 'certifi'}, 'excludes': {'PySide', 'PySide.QtCore', 'PySide.QtUiTools', 'PySide.QtGui'}, - 'qt_plugins': ['platforms/libqcocoa.dylib', 'platforms/libqminimal.dylib','platforms/libqoffscreen.dylib'], + 'qt_plugins': ['platforms/libqcocoa.dylib', 'platforms/libqminimal.dylib','platforms/libqoffscreen.dylib', 'styles/libqmacstyle.dylib'], 'plist': { 'CFBundleName':'Syncplay', 'CFBundleShortVersionString':syncplay.version, From 0ed1a629637c6b3e11eae5771564813ee62b1a14 Mon Sep 17 00:00:00 2001 From: albertosottile Date: Wed, 13 Jun 2018 17:01:38 +0200 Subject: [PATCH 76/85] Edit third-party-notices to include Qt 5.11 --- resources/third-party-notices.rtf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/third-party-notices.rtf b/resources/third-party-notices.rtf index e67066e..436ba5f 100644 --- a/resources/third-party-notices.rtf +++ b/resources/third-party-notices.rtf @@ -47,7 +47,7 @@ along with this program. If not, see .\ \b Qt \b0 \ \ -This program uses Qt versions 5.6 and 5.9 under the GNU LGPL version 3.\ +This program uses Qt versions 5.6 and 5.11 under the GNU LGPL version 3.\ \ Qt is a C++ toolkit for cross-platform application development.\ \ From b555beb97491c44149e00f042a44923c219530a5 Mon Sep 17 00:00:00 2001 From: albertosottile Date: Thu, 14 Jun 2018 17:08:34 +0200 Subject: [PATCH 77/85] Patch QSocketNotifier syntax excluding macOS and Windows on PySide2 --- syncplay/vendor/qt5reactor.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/syncplay/vendor/qt5reactor.py b/syncplay/vendor/qt5reactor.py index cde2b5e..f70d16b 100644 --- a/syncplay/vendor/qt5reactor.py +++ b/syncplay/vendor/qt5reactor.py @@ -106,6 +106,8 @@ Subsequent port by therve import sys +from syncplay.utils import isMacOS, isWindows +from syncplay.vendor.Qt import IsPySide2 from syncplay.vendor.Qt.QtCore import ( QCoreApplication, QEventLoop, QObject, QSocketNotifier, QTimer, Signal) from twisted.internet import posixbase @@ -124,7 +126,12 @@ class TwistedSocketNotifier(QObject): self.reactor = reactor self.watcher = watcher fd = self.watcher.fileno() - self.notifier = QSocketNotifier(watcher, socketType, parent) + if (isMacOS() and IsPySide2): + self.notifier = QSocketNotifier(watcher, socketType, parent) + elif (isWindows() and IsPySide2): + self.notifier = QSocketNotifier(watcher, socketType, parent) + else: + self.notifier = QSocketNotifier(fd, socketType, parent) self.notifier.setEnabled(True) if socketType == QSocketNotifier.Read: self.fn = self.read From 2d9e3186e8faf83ed146169b320cdd4c4b2c5c26 Mon Sep 17 00:00:00 2001 From: albertosottile Date: Thu, 14 Jun 2018 18:14:29 +0200 Subject: [PATCH 78/85] Manually check for updates if automaticUpdateCheck fails --- syncplay/ui/gui.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index 770a732..5d2c5e4 100755 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -1559,16 +1559,20 @@ class MainWindow(QtWidgets.QMainWindow): currentDateTimeValue = QDateTime.currentDateTime() if not self.config['checkForUpdatesAutomatically']: return - if self.config['lastCheckedForUpdates']: - configLastChecked = datetime.strptime(self.config["lastCheckedForUpdates"], "%Y-%m-%d %H:%M:%S.%f") - if self.lastCheckedForUpdates is None or configLastChecked > self.lastCheckedForUpdates.toPython(): - self.lastCheckedForUpdates = QDateTime.fromString(self.config["lastCheckedForUpdates"],'yyyy-MM-dd HH-mm-ss') - if self.lastCheckedForUpdates is None: - self.checkForUpdates() - else: - timeDelta = currentDateTimeValue.toPython() - self.lastCheckedForUpdates.toPython() - if timeDelta.total_seconds() > constants.AUTOMATIC_UPDATE_CHECK_FREQUENCY: + try: + if self.config['lastCheckedForUpdates']: + configLastChecked = datetime.strptime(self.config["lastCheckedForUpdates"], "%Y-%m-%d %H:%M:%S.%f") + if self.lastCheckedForUpdates is None or configLastChecked > self.lastCheckedForUpdates.toPython(): + self.lastCheckedForUpdates = QDateTime.fromString(self.config["lastCheckedForUpdates"],'yyyy-MM-dd HH-mm-ss') + if self.lastCheckedForUpdates is None: self.checkForUpdates() + else: + timeDelta = currentDateTimeValue.toPython() - self.lastCheckedForUpdates.toPython() + if timeDelta.total_seconds() > constants.AUTOMATIC_UPDATE_CHECK_FREQUENCY: + self.checkForUpdates() + except: + self.showDebugMessage(u"Automatic check for updates failed. An update check was manually trigggered.") + self.checkForUpdates() def userCheckForUpdates(self): self.checkForUpdates(userInitiated=True) From 62517c826951b79a0cf05d887a2f7795873c9364 Mon Sep 17 00:00:00 2001 From: albertosottile Date: Thu, 14 Jun 2018 23:57:36 +0200 Subject: [PATCH 79/85] AppVeyor: revert to PySide 1.x --- .appveyor.yml | 9 +-------- buildPy2exe.py | 6 +++--- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index eb1ac1e..7f53c6d 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -9,9 +9,7 @@ init: - set PATH=C:\Miniconda;C:\Miniconda\Scripts;C:\Program Files (x86)\NSIS;%PATH% - conda create -n syncplay -y - activate syncplay - - conda install python=2.7.13 -y - - conda install pywin32 -y - - conda install -c conda-forge pyside2 -y + - conda install python pywin32 pyside -y - pip install twisted py2exe_py2 zope.interface - type nul > C:\Miniconda\envs\syncplay\lib\site-packages\zope\__init__.py - pip freeze @@ -21,12 +19,7 @@ install: - cd %APPVEYOR_BUILD_FOLDER% - for /F "tokens=2 delims='" %%a in ('findstr version syncplay\__init__.py') do @set ver=%%a - python buildPy2exe.py - - del syncplay_v%ver%\lib\api-* - - del syncplay_v%ver%\lib\DNSAPI.dll - - del syncplay_v%ver%\lib\IPHLPAPI.dll - del syncplay_v%ver%\lib\MPR.dll - - mkdir syncplay_v%ver%\platforms - - copy C:\Miniconda\envs\syncplay\library\plugins\platforms\qwindows.dll syncplay_v%ver%\platforms\ - type nul > syncplay_v%ver%\syncplay.ini - copy resources\win_lua_note.txt syncplay_v%ver%\"VLC LUA Script installation.txt" diff --git a/buildPy2exe.py b/buildPy2exe.py index 881667c..310f765 100755 --- a/buildPy2exe.py +++ b/buildPy2exe.py @@ -720,8 +720,8 @@ info = dict( # console=['syncplayServer.py', {"script":"syncplayClient.py", "icon_resources":[(1, "resources\\icon.ico")], 'dest_base': "Syncplay"}], options={'py2exe': { 'dist_dir': OUT_DIR, - 'packages': 'PySide2.QtUiTools', - 'includes': 'twisted, sys, encodings, datetime, os, time, math, PySide2, liburl, ast, unicodedata, _ssl', + 'packages': 'PySide.QtUiTools', + 'includes': 'twisted, sys, encodings, datetime, os, time, math, PySide, liburl, ast, unicodedata', 'excludes': 'venv, doctest, pdb, unittest, win32clipboard, win32file, win32pdh, win32security, win32trace, win32ui, winxpgui, win32pipe, win32process, Tkinter', 'dll_excludes': 'msvcr71.dll, MSVCP90.dll, POWRPROF.dll', 'optimize': 2, @@ -733,5 +733,5 @@ info = dict( cmdclass = {"py2exe": build_installer}, ) -sys.argv.extend(['py2exe', '-p win32com ', '-i twisted.web.resource', '-i PySide2.QtCore', '-p PySide2.QtGui', '-i PySide2.QtWidgets']) +sys.argv.extend(['py2exe', '-p win32com ', '-i twisted.web.resource', '-p PySide.QtGui']) setup(**info) From c8835cfa66bef51180343b86568c019a9384143f Mon Sep 17 00:00:00 2001 From: albertosottile Date: Fri, 15 Jun 2018 00:13:18 +0200 Subject: [PATCH 80/85] Restore PySide 1.x third party notice for Windows --- resources/third-party-notices.rtf | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/resources/third-party-notices.rtf b/resources/third-party-notices.rtf index 436ba5f..12e2102 100644 --- a/resources/third-party-notices.rtf +++ b/resources/third-party-notices.rtf @@ -24,6 +24,27 @@ The above copyright notice and this permission notice shall be included in all\ copies or substantial portions of the Software.\ \ +\b PySide 1.2.1\ + +\b0 \ +Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).\ +Contact: PySide team \ +\ +This library is free software; you can redistribute it and/or\ +modify it under the terms of the GNU Lesser General Public\ +License as published by the Free Software Foundation; either\ +version 2.1 of the License, or (at your option) any later version.\ +This library is distributed in the hope that it will be useful,\ +but WITHOUT ANY WARRANTY; without even the implied warranty of\ +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\ +Lesser General Public License for more details.\ +\ +\pard\pardeftab720\partightenfactor0 +\cf0 You should have received a copy of the GNU Lesser General Public License\ +along with this program. If not, see \ +\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 +\cf0 \ + \b Qt for Python\ \b0 \ @@ -47,7 +68,7 @@ along with this program. If not, see .\ \b Qt \b0 \ \ -This program uses Qt versions 5.6 and 5.11 under the GNU LGPL version 3.\ +This program uses Qt versions 4.8.7 and 5.11 under the GNU LGPL version 3.\ \ Qt is a C++ toolkit for cross-platform application development.\ \ From 3f2d28fc9958642d20dffd1aaadfe676f0fb0b5d Mon Sep 17 00:00:00 2001 From: Etoh Date: Thu, 14 Jun 2018 22:04:52 +0100 Subject: [PATCH 81/85] Detect portable versions of MPC-HC, MPC-BE and VLC --- syncplay/players/mpc.py | 8 +++++++- syncplay/players/mpcbe.py | 8 +++++++- syncplay/players/vlc.py | 5 +++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/syncplay/players/mpc.py b/syncplay/players/mpc.py index 3d40308..313fbf4 100644 --- a/syncplay/players/mpc.py +++ b/syncplay/players/mpc.py @@ -496,7 +496,7 @@ class MPCHCAPIPlayer(BasePlayer): @staticmethod def getExpandedPath(path): if os.path.isfile(path): - if path.lower().endswith(u'mpc-hc.exe'.lower()) or path.lower().endswith(u'mpc-hc64.exe'.lower()) or path.lower().endswith(u'mpc-hc64_nvo.exe'.lower()) or path.lower().endswith(u'mpc-hc_nvo.exe'.lower()): + if path.lower().endswith(u'mpc-hc.exe'.lower()) or path.lower().endswith(u'mpc-hcportable.exe'.lower()) or path.lower().endswith(u'mpc-hc64.exe'.lower()) or path.lower().endswith(u'mpc-hc64_nvo.exe'.lower()) or path.lower().endswith(u'mpc-hc_nvo.exe'.lower()): return path if os.path.isfile(path + u"mpc-hc.exe"): path += u"mpc-hc.exe" @@ -504,6 +504,12 @@ class MPCHCAPIPlayer(BasePlayer): if os.path.isfile(path + u"\\mpc-hc.exe"): path += u"\\mpc-hc.exe" return path + if os.path.isfile(path + u"mpc-hcportable.exe"): + path += u"mpc-hcportable.exe" + return path + if os.path.isfile(path + u"\\mpc-hcportable.exe"): + path += u"\\mpc-hcportable.exe" + return path if os.path.isfile(path + u"mpc-hc_nvo.exe"): path += u"mpc-hc_nvo.exe" return path diff --git a/syncplay/players/mpcbe.py b/syncplay/players/mpcbe.py index 68b2074..900ace4 100644 --- a/syncplay/players/mpcbe.py +++ b/syncplay/players/mpcbe.py @@ -30,7 +30,7 @@ class MpcBePlayer(MPCHCAPIPlayer): @staticmethod def getExpandedPath(path): if os.path.isfile(path): - if path.lower().endswith(u'mpc-be.exe'.lower()) or path.lower().endswith(u'mpc-be64.exe'.lower()): + if path.lower().endswith(u'mpc-be.exe'.lower()) or path.lower().endswith(u'mpc-be64.exe'.lower() or path.lower().endswith(u'mpc-beportable.exe'.lower())): return path if os.path.isfile(path + u"mpc-be.exe"): path += u"mpc-be.exe" @@ -38,6 +38,12 @@ class MpcBePlayer(MPCHCAPIPlayer): if os.path.isfile(path + u"\\mpc-be.exe"): path += u"\\mpc-be.exe" return path + if os.path.isfile(path + u"mpc-beportable.exe"): + path += u"mpc-beportable.exe" + return path + if os.path.isfile(path + u"\\mpc-beportable.exe"): + path += u"\\mpc-beportable.exe" + return path if os.path.isfile(path + u"mpc-be64.exe"): path += u"mpc-be64.exe" return path diff --git a/syncplay/players/vlc.py b/syncplay/players/vlc.py index f7392ec..9a0ebbb 100755 --- a/syncplay/players/vlc.py +++ b/syncplay/players/vlc.py @@ -285,6 +285,11 @@ class VlcPlayer(BasePlayer): elif os.path.isfile(playerPath + u"\\vlc.exe"): playerPath += u"\\vlc.exe" return playerPath + elif os.path.isfile(playerPath + u"VLCPortable.exe"): + playerPath += u"VLCPortable.exe" + elif os.path.isfile(playerPath + u"\\VLCPortable.exe"): + playerPath += u"\\VLCPortable.exe" + return playerPath if os.access(playerPath, os.X_OK): return playerPath for path in os.environ['PATH'].split(':'): From 2f0dd622e0b13f0d7abce334c096a03bad28bd59 Mon Sep 17 00:00:00 2001 From: Etoh Date: Fri, 15 Jun 2018 09:33:42 +0100 Subject: [PATCH 82/85] Fixed missing VLC playerPath return --- syncplay/players/vlc.py | 1 + 1 file changed, 1 insertion(+) diff --git a/syncplay/players/vlc.py b/syncplay/players/vlc.py index 9a0ebbb..1cc8943 100755 --- a/syncplay/players/vlc.py +++ b/syncplay/players/vlc.py @@ -287,6 +287,7 @@ class VlcPlayer(BasePlayer): return playerPath elif os.path.isfile(playerPath + u"VLCPortable.exe"): playerPath += u"VLCPortable.exe" + return playerPath elif os.path.isfile(playerPath + u"\\VLCPortable.exe"): playerPath += u"\\VLCPortable.exe" return playerPath From d55732bc00fb2adaf33c7c16b3a8faa40fe2aa1e Mon Sep 17 00:00:00 2001 From: albertosottile Date: Fri, 15 Jun 2018 18:42:29 +0200 Subject: [PATCH 83/85] Remove unused Travis cache scripts --- travis/cache-homebrew | 6 ------ travis/cache-python | 5 ----- travis/download-homebrew | 13 ------------- travis/download-python | 10 ---------- 4 files changed, 34 deletions(-) delete mode 100755 travis/cache-homebrew delete mode 100755 travis/cache-python delete mode 100755 travis/download-homebrew delete mode 100755 travis/download-python diff --git a/travis/cache-homebrew b/travis/cache-homebrew deleted file mode 100755 index d9dcc38..0000000 --- a/travis/cache-homebrew +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -mkdir travis-cache -if [ ! -f homebrew-cache.tar.gz ]; then - tar czf travis-cache/homebrew-cache.tar.gz --directory /usr/local/Cellar pkg-config readline sqlite gdbm makedepend openssl python@2 -fi diff --git a/travis/cache-python b/travis/cache-python deleted file mode 100755 index f7d1e65..0000000 --- a/travis/cache-python +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -if [ ! -f python-cache.tar.gz ]; then - tar czf travis-cache/python-cache.tar.gz --directory /usr/local/lib/python2.7 site-packages -fi diff --git a/travis/download-homebrew b/travis/download-homebrew deleted file mode 100755 index dd23237..0000000 --- a/travis/download-homebrew +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -curl -L "https://dl.bintray.com/alby128/Syncplay/homebrew-cache.tar.gz" -o homebrew-cache.tar.gz -if [ -f homebrew-cache.tar.gz ]; then - if ! tar tf homebrew-cache.tar.gz &>/dev/null; then - rm homebrew-cache.tar.gz - exit 0 - fi - tar zxf homebrew-cache.tar.gz --directory /usr/local/Cellar - brew unlink pkg-config - brew link pkg-config - brew link --force readline sqlite gdbm makedepend python@2 -fi diff --git a/travis/download-python b/travis/download-python deleted file mode 100755 index 870f07e..0000000 --- a/travis/download-python +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -curl -L "https://dl.bintray.com/alby128/Syncplay/python-cache.tar.gz" -o python-cache.tar.gz -if [ -f python-cache.tar.gz ]; then - if ! tar tf python-cache.tar.gz &>/dev/null; then - rm python-cache.tar.gz - exit 0 - fi - tar zxf python-cache.tar.gz --directory /usr/local/lib/python2.7 -fi From 759b9a75dd10c3172c4deb559e8a7905e525566b Mon Sep 17 00:00:00 2001 From: Alberto Sottile Date: Sat, 16 Jun 2018 14:16:04 +0200 Subject: [PATCH 84/85] Redesign About dialog to show environment info --- syncplay/messages_de.py | 2 +- syncplay/messages_en.py | 2 +- syncplay/messages_it.py | 2 +- syncplay/messages_ru.py | 2 +- syncplay/ui/gui.py | 27 +++++++++++++++------------ 5 files changed, 19 insertions(+), 16 deletions(-) diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py index ea987db..65b7a51 100644 --- a/syncplay/messages_de.py +++ b/syncplay/messages_de.py @@ -311,7 +311,7 @@ de = { #About dialog - TODO: Translate "about-menu-label": u"&About Syncplay", "about-dialog-title": u"About Syncplay", - "about-dialog-release": u"Version {} release {} on {}", + "about-dialog-release": u"Version {} release {}", "about-dialog-license-text" : u"Licensed under the Apache License, Version 2.0", "about-dialog-license-button": u"License", "about-dialog-dependencies": u"Dependencies", diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py index 6f5d085..6e0fcbb 100644 --- a/syncplay/messages_en.py +++ b/syncplay/messages_en.py @@ -316,7 +316,7 @@ en = { #About dialog "about-menu-label": u"&About Syncplay", "about-dialog-title": u"About Syncplay", - "about-dialog-release": u"Version {} release {} on {}", + "about-dialog-release": u"Version {} release {}", "about-dialog-license-text" : u"Licensed under the Apache License, Version 2.0", "about-dialog-license-button": u"License", "about-dialog-dependencies": u"Dependencies", diff --git a/syncplay/messages_it.py b/syncplay/messages_it.py index f73e6d0..d893421 100644 --- a/syncplay/messages_it.py +++ b/syncplay/messages_it.py @@ -316,7 +316,7 @@ it = { #About dialog "about-menu-label": u"&Informazioni su Syncplay", "about-dialog-title": u"Informazioni su Syncplay", - "about-dialog-release": u"Versione {} release {} con {}", + "about-dialog-release": u"Versione {} release {}", "about-dialog-license-text" : u"Rilasciato sotto Apache License, Version 2.0", "about-dialog-license-button": u"Licenza", "about-dialog-dependencies": u"Dipendenze", diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py index ca790d6..975a397 100644 --- a/syncplay/messages_ru.py +++ b/syncplay/messages_ru.py @@ -319,7 +319,7 @@ ru = { #About dialog - TODO: Translate "about-menu-label": u"&About Syncplay", "about-dialog-title": u"About Syncplay", - "about-dialog-release": u"Version {} release {} on {}", + "about-dialog-release": u"Version {} release {}", "about-dialog-license-text" : u"Licensed under the Apache License, Version 2.0", "about-dialog-license-button": u"License", "about-dialog-dependencies": u"Dependencies", diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index 5d2c5e4..7e5d1ba 100755 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -1,6 +1,7 @@ from syncplay.vendor import Qt -from syncplay.vendor.Qt import QtWidgets, QtGui, __binding__, __binding_version__, IsPySide, IsPySide2 +from syncplay.vendor.Qt import QtWidgets, QtGui, __binding__, __binding_version__, __qt_version__, IsPySide, IsPySide2 from syncplay.vendor.Qt.QtCore import Qt, QSettings, QSize, QPoint, QUrl, QLine, QDateTime +from platform import python_version if IsPySide2: from PySide2.QtCore import QStandardPaths from syncplay import utils, constants, version, release_number @@ -106,33 +107,35 @@ class AboutDialog(QtWidgets.QDialog): super(AboutDialog, self).__init__(parent) if isMacOS(): self.setWindowTitle("") + self.setWindowFlags(Qt.Dialog | Qt.WindowTitleHint | Qt.WindowCloseButtonHint | Qt.CustomizeWindowHint) else: self.setWindowTitle(getMessage("about-dialog-title")) if isWindows(): self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint) nameLabel = QtWidgets.QLabel("
Syncplay
") - nameLabel.setFont(QtGui.QFont("Helvetica", 20)) + nameLabel.setFont(QtGui.QFont("Helvetica", 18)) linkLabel = QtWidgets.QLabel("
syncplay.pl
") linkLabel.setOpenExternalLinks(True) - versionLabel = QtWidgets.QLabel("
" + getMessage("about-dialog-release").format(version, release_number, __binding__) + "
") - licenseLabel = QtWidgets.QLabel("

Copyright © 2017 Syncplay

" + getMessage("about-dialog-license-text") + "

") + versionLabel = QtWidgets.QLabel("

" + getMessage("about-dialog-release").format(version, release_number) + "
Python " + python_version() + " - " + __binding__ + " " + __binding_version__ + " - Qt " + __qt_version__ + "

") + licenseLabel = QtWidgets.QLabel("

Copyright © 2012–2018 Syncplay

" + getMessage("about-dialog-license-text") + "

") aboutIconPixmap = QtGui.QPixmap(resourcespath + u"syncplay.png") aboutIconLabel = QtWidgets.QLabel() - aboutIconLabel.setPixmap(aboutIconPixmap.scaled(120, 120, Qt.KeepAspectRatio)) + aboutIconLabel.setPixmap(aboutIconPixmap.scaled(65, 65, Qt.KeepAspectRatio)) aboutLayout = QtWidgets.QGridLayout() - aboutLayout.addWidget(aboutIconLabel, 0, 0, 4, 2) - aboutLayout.addWidget(nameLabel, 0, 2, 1, 2) - aboutLayout.addWidget(linkLabel, 1, 2, 1, 2) - aboutLayout.addWidget(versionLabel, 2, 2, 1, 2) - aboutLayout.addWidget(licenseLabel, 3, 2, 1, 2) + aboutLayout.addWidget(aboutIconLabel, 0, 0, 3, 4, Qt.AlignHCenter) + aboutLayout.addWidget(nameLabel, 3, 0, 1, 4) + aboutLayout.addWidget(linkLabel, 4, 0, 1, 4) + aboutLayout.addWidget(versionLabel, 5, 0, 1, 4) + aboutLayout.addWidget(licenseLabel, 6, 0, 1, 4) licenseButton = QtWidgets.QPushButton(getMessage("about-dialog-license-button")) licenseButton.setAutoDefault(False) licenseButton.clicked.connect(self.openLicense) - aboutLayout.addWidget(licenseButton, 4, 2) + aboutLayout.addWidget(licenseButton, 7, 0, 1, 2) dependenciesButton = QtWidgets.QPushButton(getMessage("about-dialog-dependencies")) dependenciesButton.setAutoDefault(False) dependenciesButton.clicked.connect(self.openDependencies) - aboutLayout.addWidget(dependenciesButton, 4, 3) + aboutLayout.addWidget(dependenciesButton, 7, 2, 1, 2) + aboutLayout.setVerticalSpacing(10) aboutLayout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize) self.setSizeGripEnabled(False) self.setLayout(aboutLayout) From e878ee1791a276ac48de724e9aaff937790f344f Mon Sep 17 00:00:00 2001 From: Alberto Sottile Date: Sun, 17 Jun 2018 14:41:09 +0200 Subject: [PATCH 85/85] Fix third-party-notices and add qt5reactor license --- resources/third-party-notices.rtf | 83 +++++++++++++++++++++++++++++-- 1 file changed, 80 insertions(+), 3 deletions(-) diff --git a/resources/third-party-notices.rtf b/resources/third-party-notices.rtf index 12e2102..216617d 100644 --- a/resources/third-party-notices.rtf +++ b/resources/third-party-notices.rtf @@ -1,4 +1,4 @@ -{\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830 +{\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf400 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} {\*\expandedcolortbl;;} @@ -24,7 +24,7 @@ The above copyright notice and this permission notice shall be included in all\ copies or substantial portions of the Software.\ \ -\b PySide 1.2.1\ +\b PySide\ \b0 \ Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).\ @@ -68,7 +68,7 @@ along with this program. If not, see .\ \b Qt \b0 \ \ -This program uses Qt versions 4.8.7 and 5.11 under the GNU LGPL version 3.\ +This program uses Qt under the GNU LGPL version 3.\ \ Qt is a C++ toolkit for cross-platform application development.\ \ @@ -159,6 +159,83 @@ The above copyright notice and this permission notice shall be\ included in all copies or substantial portions of the Software.\ \b \ +qt5reactor\ +\ + +\b0 Copyright (c) 2001-2018\ +Allen Short\ +Andy Gayton\ +Andrew Bennetts\ +Antoine Pitrou\ +Apple Computer, Inc.\ +Ashwini Oruganti\ +bakbuk\ +Benjamin Bruheim\ +Bob Ippolito\ +Burak Nehbit\ +Canonical Limited\ +Christopher Armstrong\ +Christopher R. Wood\ +David Reid\ +Donovan Preston\ +Elvis Stansvik\ +Eric Mangold\ +Eyal Lotem\ +Glenn Tarbox\ +Google Inc.\ +Hybrid Logic Ltd.\ +Hynek Schlawack\ +Itamar Turner-Trauring\ +James Knight\ +Jason A. Mobarak\ +Jean-Paul Calderone\ +Jessica McKellar\ +Jonathan Jacobs\ +Jonathan Lange\ +Jonathan D. Simms\ +J\'fcrgen Hermann\ +Julian Berman\ +Kevin Horn\ +Kevin Turner\ +Kyle Altendorf\ +Laurens Van Houtven\ +Mary Gardiner\ +Matthew Lefkowitz\ +Massachusetts Institute of Technology\ +Moshe Zadka\ +Paul Swartz\ +Pavel Pergamenshchik\ +Ralph Meijer\ +Richard Wall\ +Sean Riley\ +Software Freedom Conservancy\ +Tarashish Mishra\ +Travis B. Hartwell\ +Thijs Triemstra\ +Thomas Herve\ +Timothy Allen\ +Tom Prince\ +\ +Permission is hereby granted, free of charge, to any person obtaining\ +a copy of this software and associated documentation files (the\ +"Software"), to deal in the Software without restriction, including\ +without limitation the rights to use, copy, modify, merge, publish,\ +distribute, sublicense, and/or sell copies of the Software, and to\ +permit persons to whom the Software is furnished to do so, subject to\ +the following conditions:\ +\ +The above copyright notice and this permission notice shall be\ +included in all copies or substantial portions of the Software.\ +\ +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\ +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\ +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\ +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\ +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\ +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\ +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +\b \ +\ appnope\ \b0 \

<4% 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%0DB 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 literal 0 HcmV?d00001 diff --git a/resources/macos_vlc_install.command b/resources/macos_vlc_install.command index b03f213..4774144 100755 --- a/resources/macos_vlc_install.command +++ b/resources/macos_vlc_install.command @@ -2,4 +2,4 @@ mkdir -p $HOME/Library/Application\ Support/org.videolan.vlc/lua/intf/ -cp /Volumes/Syncplay/syncplay.lua $HOME/Library/Application\ Support/org.videolan.vlc/lua/intf/ +cp /Volumes/Syncplay/.syncplay.lua $HOME/Library/Application\ Support/org.videolan.vlc/lua/intf/syncplay.lua From 0557249c43ac01f076bce4ebeb10f118e0634cdc Mon Sep 17 00:00:00 2001 From: Etoh Date: Sun, 5 Nov 2017 15:52:34 +0000 Subject: [PATCH 25/85] Split shuffle into 'entire' and 'remaining' to address #153 (suggested by xNinjaKittyx) --- syncplay/__init__.py | 2 +- syncplay/client.py | 14 +++++++++++++- syncplay/messages_de.py | 3 ++- syncplay/messages_en.py | 3 ++- syncplay/messages_ru.py | 3 ++- syncplay/ui/gui.py | 11 ++++++++--- 6 files changed, 28 insertions(+), 8 deletions(-) diff --git a/syncplay/__init__.py b/syncplay/__init__.py index c36fc87..514ae90 100644 --- a/syncplay/__init__.py +++ b/syncplay/__init__.py @@ -1,4 +1,4 @@ version = '1.5.0' milestone = 'Yoitsu' -release_number = '43' +release_number = '44' projectURL = 'http://syncplay.pl/' diff --git a/syncplay/client.py b/syncplay/client.py index 0cbbedf..fa73d9e 100644 --- a/syncplay/client.py +++ b/syncplay/client.py @@ -1584,11 +1584,23 @@ class SyncplayPlaylist(): self.changePlaylist(newPlaylist, username=None) @needsSharedPlaylistsEnabled - def shufflePlaylist(self): + def shuffleRemainingPlaylist(self): + if self._playlist and len(self._playlist) > 0: + shuffledPlaylist = deepcopy(self._playlist) + shufflePoint = self._playlistIndex + 1 + partToKeep = shuffledPlaylist[:shufflePoint] + partToShuffle = shuffledPlaylist[shufflePoint:] + random.shuffle(partToShuffle) + shuffledPlaylist = partToKeep + partToShuffle + self.changePlaylist(shuffledPlaylist, username=None, resetIndex=False) + + @needsSharedPlaylistsEnabled + def shuffleEntirePlaylist(self): if self._playlist and len(self._playlist) > 0: shuffledPlaylist = deepcopy(self._playlist) random.shuffle(shuffledPlaylist) self.changePlaylist(shuffledPlaylist, username=None, resetIndex=True) + self.switchToNewPlaylistIndex(0, resetPosition=True) def canUndoPlaylist(self, currentPlaylist): return self._previousPlaylist is not None and currentPlaylist <> self._previousPlaylist diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py index 09d91a9..4996335 100644 --- a/syncplay/messages_de.py +++ b/syncplay/messages_de.py @@ -412,7 +412,8 @@ de = { "cannot-add-unsafe-path-error" : u"Could not automatically load {} because it is not on a trusted domain. You can switch to the URL manually by double clicking it in the playlist, and add trusted domains via File->Advanced->Set Trusted Domains. If you right click on a URL then you can add its domain as a trusted domain via the context menu.", # Filename "sharedplaylistenabled-label" : u"Enable shared playlists", "removefromplaylist-menu-label" : u"Remove from playlist", - "shuffleplaylist-menuu-label" : u"Shuffle playlist", + "shuffleremainingplaylist-menu-label" : u"Shuffle remaining playlist", + "shuffleentireplaylist-menuu-label" : u"Shuffle entire playlist", "undoplaylist-menu-label" : u"Undo last change to playlist", "addfilestoplaylist-menu-label" : u"Add file(s) to bottom of playlist", "addurlstoplaylist-menu-label" : u"Add URL(s) to bottom of playlist", diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py index c267bed..8ad2831 100644 --- a/syncplay/messages_en.py +++ b/syncplay/messages_en.py @@ -411,7 +411,8 @@ en = { "cannot-add-unsafe-path-error" : u"Could not automatically load {} because it is not on a trusted domain. You can switch to the URL manually by double clicking it in the playlist, and add trusted domains via File->Advanced->Set Trusted Domains. If you right click on a URL then you can add its domain as a trusted domain via the context menu.", # Filename "sharedplaylistenabled-label" : u"Enable shared playlists", "removefromplaylist-menu-label" : u"Remove from playlist", - "shuffleplaylist-menuu-label" : u"Shuffle playlist", + "shuffleremainingplaylist-menu-label" : u"Shuffle remaining playlist", + "shuffleentireplaylist-menuu-label" : u"Shuffle entire playlist", "undoplaylist-menu-label" : u"Undo last change to playlist", "addfilestoplaylist-menu-label" : u"Add file(s) to bottom of playlist", "addurlstoplaylist-menu-label" : u"Add URL(s) to bottom of playlist", diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py index cf1952b..afc061b 100644 --- a/syncplay/messages_ru.py +++ b/syncplay/messages_ru.py @@ -411,7 +411,8 @@ ru = { "cannot-add-unsafe-path-error" : u"Не удалось автоматически переключиться на {}, потому что ссылка не соответствует доверенным сайтам. Её можно включить вручную, дважны кливнув по ссылке в списке воспроизведения. Добавить доверенный сайт можно в выпадающем меню 'Дополнительно' или просто кликнув по ссылке правой кнопкой мыши.", # Filename "sharedplaylistenabled-label" : u"Включить общий список воспроизведения", "removefromplaylist-menu-label" : u"Удалить", - "shuffleplaylist-menuu-label" : u"Перемешать список", + "shufflepremaininglaylist-menuu-label" : u"Shuffle remaining playlist", # Was: Перемешать список # TODO: Translate + "shuffleentireplaylist-menuu-label" : u"Shuffle entire playlist", # TODO: Translate "undoplaylist-menu-label" : u"Отменить последнее действие", "addfilestoplaylist-menu-label" : u"Добавить файлы в очередь", "addurlstoplaylist-menu-label" : u"Добавить ссылку в очередь", diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index b3e2c86..a0ac7c9 100755 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -557,8 +557,12 @@ class MainWindow(QtWidgets.QMainWindow): self._syncplayClient.playlist.undoPlaylistChange() @needsClient - def shufflePlaylist(self): - self._syncplayClient.playlist.shufflePlaylist() + def shuffleRemainingPlaylist(self): + self._syncplayClient.playlist.shuffleRemainingPlaylist() + + @needsClient + def shuffleEntirePlaylist(self): + self._syncplayClient.playlist.shuffleEntirePlaylist() @needsClient def openPlaylistMenu(self, position): @@ -590,7 +594,8 @@ class MainWindow(QtWidgets.QMainWindow): menu.addAction(QtGui.QPixmap(resourcespath + u"shield_add.png"),getMessage("addtrusteddomain-menu-label").format(domain), lambda: self.addTrustedDomain(domain)) menu.addAction(QtGui.QPixmap(resourcespath + u"delete.png"), getMessage("removefromplaylist-menu-label"), lambda: self.deleteSelectedPlaylistItems()) menu.addSeparator() - menu.addAction(QtGui.QPixmap(resourcespath + u"arrow_switch.png"), getMessage("shuffleplaylist-menuu-label"), lambda: self.shufflePlaylist()) + menu.addAction(QtGui.QPixmap(resourcespath + u"arrow_switch.png"), getMessage("shuffleremainingplaylist-menu-label"), lambda: self.shuffleRemainingPlaylist()) + menu.addAction(QtGui.QPixmap(resourcespath + u"arrow_switch.png"), getMessage("shuffleentireplaylist-menuu-label"), lambda: self.shuffleEntirePlaylist()) menu.addAction(QtGui.QPixmap(resourcespath + u"arrow_undo.png"), getMessage("undoplaylist-menu-label"), lambda: self.undoPlaylistChange()) menu.addAction(QtGui.QPixmap(resourcespath + u"film_edit.png"), getMessage("editplaylist-menu-label"), lambda: self.openEditPlaylistDialog()) menu.addAction(QtGui.QPixmap(resourcespath + u"film_add.png"),getMessage("addfilestoplaylist-menu-label"), lambda: self.OpenAddFilesToPlaylistDialog()) From 5a82a6db618808ccf09b34c9a5354861c4bc1c90 Mon Sep 17 00:00:00 2001 From: alby128 Date: Tue, 31 Oct 2017 15:22:58 +0100 Subject: [PATCH 26/85] Fixed defects found by Coverity --- syncplay/protocols.py | 14 ++++++++++---- syncplay/ui/gui.py | 2 +- syncplay/utils.py | 2 +- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/syncplay/protocols.py b/syncplay/protocols.py index c0055be..59948b9 100644 --- a/syncplay/protocols.py +++ b/syncplay/protocols.py @@ -330,13 +330,19 @@ class SyncServerProtocol(JSONCommandProtocol): def _extractHelloArguments(self, hello): roomName = None - username = hello["username"] if hello.has_key("username") else None - username = username.strip() + if hello.has_key("username"): + username = hello["username"] + username = username.strip() + else: + username = None serverPassword = hello["password"] if hello.has_key("password") else None room = hello["room"] if hello.has_key("room") else None if room: - roomName = room["name"] if room.has_key("name") else None - roomName = roomName.strip() + if room.has_key("name"): + roomName = room["name"] + roomName = roomName.strip() + else: + roomName = None version = hello["version"] if hello.has_key("version") else None version = hello["realversion"] if hello.has_key("realversion") else version return username, serverPassword, roomName, version diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index a0ac7c9..de9c823 100755 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -518,7 +518,7 @@ class MainWindow(QtWidgets.QMainWindow): filenameitem.setForeground(QtGui.QBrush(QtGui.QColor(constants.STYLE_DIFFERENTITEM_COLOR))) filenameitem.setFont(underlinefont) if not sameSize: - if currentUser.file is not None and formatSize(user.file['size']) == formatSize(currentUser.file['size']): + if formatSize(user.file['size']) == formatSize(currentUser.file['size']): filesizeitem = QtGui.QStandardItem(formatSize(user.file['size'],precise=True)) filesizeitem.setFont(underlinefont) filesizeitem.setForeground(QtGui.QBrush(QtGui.QColor(constants.STYLE_DIFFERENTITEM_COLOR))) diff --git a/syncplay/utils.py b/syncplay/utils.py index 5b8cbb4..1a7a8ff 100644 --- a/syncplay/utils.py +++ b/syncplay/utils.py @@ -42,8 +42,8 @@ def retry(ExceptionToCheck, tries=4, delay=3, backoff=2, logger=None): try_one_last_time = True while mtries > 1: try: + #try_one_last_time = False return f(*args, **kwargs) - try_one_last_time = False break except ExceptionToCheck, e: if logger: From 96b8077ec3906742ed8fd74f50c6f5a81055154d Mon Sep 17 00:00:00 2001 From: alby128 Date: Wed, 1 Nov 2017 18:20:43 +0100 Subject: [PATCH 27/85] Fixed unpause bug when VLC reaches EOF --- syncplay/constants.py | 2 ++ syncplay/players/vlc.py | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) mode change 100644 => 100755 syncplay/players/vlc.py diff --git a/syncplay/constants.py b/syncplay/constants.py index 81bee71..41834a0 100644 --- a/syncplay/constants.py +++ b/syncplay/constants.py @@ -193,6 +193,8 @@ UNPAUSE_IFOTHERSREADY_MODE = "IfOthersReady" UNPAUSE_IFMINUSERSREADY_MODE = "IfMinUsersReady" UNPAUSE_ALWAYS_MODE = "Always" +VLC_EOF_DURATION_THRESHOLD = 2.0 + PRIVACY_HIDDENFILENAME = "**Hidden filename**" INVERTED_STATE_MARKER = "*" ERROR_MESSAGE_MARKER = "*" diff --git a/syncplay/players/vlc.py b/syncplay/players/vlc.py old mode 100644 new mode 100755 index c1228a0..dde4d5b --- a/syncplay/players/vlc.py +++ b/syncplay/players/vlc.py @@ -208,18 +208,22 @@ class VlcPlayer(BasePlayer): self._durationAsk.set() elif name == "playstate": self._paused = bool(value != 'playing') if(value != "no-input" and self._filechanged == False) else self._client.getGlobalPaused() + diff = time.time() - self._lastVLCPositionUpdate if self._lastVLCPositionUpdate else 0 if self._paused == False \ and self._position == self._previousPreviousPosition \ and self._previousPosition == self._position \ and self._duration > constants.PLAYLIST_LOAD_NEXT_FILE_MINIMUM_LENGTH \ - and self._position == self._duration: - self._paused = True + and (self._duration - self._position) < constants.VLC_EOF_DURATION_THRESHOLD \ + and diff > constants.VLC_LATENCY_ERROR_THRESHOLD: self._client.ui.showDebugMessage("Treating 'playing' response as 'paused' due to VLC EOF bug") + self.setPaused(True) self._pausedAsk.set() elif name == "position": newPosition = float(value.replace(",", ".")) if (value != "no-input" and self._filechanged == False) else self._client.getGlobalPosition() if newPosition == self._previousPosition and newPosition <> self._duration and not self._paused: self._client.ui.showDebugMessage("Not considering position {} duplicate as new time because of VLC time precision bug".format(newPosition)) + self._previousPreviousPosition = self._previousPosition + self._previousPosition = self._position self._positionAsk.set() return self._previousPreviousPosition = self._previousPosition From 0c96a92852f30e794fdb2a6c4524e108375c2236 Mon Sep 17 00:00:00 2001 From: Etoh Date: Mon, 13 Nov 2017 18:17:41 +0000 Subject: [PATCH 28/85] Warn against sending sensitive messages over Syncplay chat --- syncplay/messages_de.py | 2 +- syncplay/messages_en.py | 2 +- syncplay/messages_ru.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py index 4996335..7af6bff 100644 --- a/syncplay/messages_de.py +++ b/syncplay/messages_de.py @@ -238,7 +238,7 @@ de = { "run-label" : u"Syncplay starten", "storeandrun-label" : u"Konfiguration speichern und Syncplay starten", - "contact-label" : u"Du hast eine Idee, einen Bug gefunden oder möchtest Feedback geben? Sende eine E-Mail an dev@syncplay.pl, chatte auf dem #Syncplay IRC-Kanal auf irc.freenode.net oder öffne eine Fehlermeldung auf GitHub. Außerdem findest du auf http://syncplay.pl/ weitere Informationen, Hilfestellungen und Updates.", + "contact-label" : u"Du hast eine Idee, einen Bug gefunden oder möchtest Feedback geben? Sende eine E-Mail an dev@syncplay.pl, chatte auf dem #Syncplay IRC-Kanal auf irc.freenode.net oder öffne eine Fehlermeldung auf GitHub. Außerdem findest du auf http://syncplay.pl/ weitere Informationen, Hilfestellungen und Updates. OTE: Chat messages are not encrypted so do not use Syncplay to send sensitive information.", # TODO: Translate last sentence "joinroom-label" : u"Raum beitreten", "joinroom-menu-label" : u"Raum beitreten {}", #TODO: Might want to fix this diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py index 8ad2831..dd97e2b 100644 --- a/syncplay/messages_en.py +++ b/syncplay/messages_en.py @@ -238,7 +238,7 @@ en = { "run-label" : "Run Syncplay", "storeandrun-label" : "Store configuration and run Syncplay", - "contact-label" : "Feel free to e-mail dev@syncplay.pl, chat via the #Syncplay IRC channel on irc.freenode.net, raise an issue via GitHub, like us on Facebook, follow us on Twitter, or visit http://syncplay.pl/", + "contact-label" : "Feel free to e-mail dev@syncplay.pl, chat via the #Syncplay IRC channel on irc.freenode.net, raise an issue via GitHub, like us on Facebook, follow us on Twitter, or visit http://syncplay.pl/. NOTE: Chat messages are not encrypted so do not use Syncplay to send sensitive information.", "joinroom-label" : "Join room", "joinroom-menu-label" : u"Join room {}", diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py index afc061b..e56f3de 100644 --- a/syncplay/messages_ru.py +++ b/syncplay/messages_ru.py @@ -241,7 +241,7 @@ ru = { "run-label" : u"Запустить", "storeandrun-label" : u"Сохранить и запустить", - "contact-label" : u"Есть идея, нашли ошибку или хотите оставить отзыв? Пишите на dev@syncplay.pl, в IRC канал #Syncplay на irc.freenode.net или задавайте вопросы через GitHub. Кроме того, заходите на www.syncplay.pl за инорфмацией, помощью и обновлениями!", + "contact-label" : u"Есть идея, нашли ошибку или хотите оставить отзыв? Пишите на dev@syncplay.pl, в IRC канал #Syncplay на irc.freenode.net или задавайте вопросы через GitHub. Кроме того, заходите на www.syncplay.pl за инорфмацией, помощью и обновлениями! NOTE: Chat messages are not encrypted so do not use Syncplay to send sensitive information.", # TODO: Translate last sentence "joinroom-label" : u"Зайти в комнату", "joinroom-menu-label" : u"Зайти в комнату {}", From 92b04239449deaddcefb3ce0fcf4834e572e5672 Mon Sep 17 00:00:00 2001 From: Etoh Date: Mon, 13 Nov 2017 18:23:37 +0000 Subject: [PATCH 29/85] Hide mplayer UnicodeWarning + upver to 45 --- syncplay/__init__.py | 2 +- syncplay/players/mplayer.py | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/syncplay/__init__.py b/syncplay/__init__.py index 514ae90..fc4ca02 100644 --- a/syncplay/__init__.py +++ b/syncplay/__init__.py @@ -1,4 +1,4 @@ version = '1.5.0' milestone = 'Yoitsu' -release_number = '44' +release_number = '45' projectURL = 'http://syncplay.pl/' diff --git a/syncplay/players/mplayer.py b/syncplay/players/mplayer.py index 372b454..9e5f855 100644 --- a/syncplay/players/mplayer.py +++ b/syncplay/players/mplayer.py @@ -360,7 +360,12 @@ class MplayerPlayer(BasePlayer): for itemID, deletionCandidate in enumerate(self.sendQueue): if deletionCandidate.startswith(command): self.__playerController._client.ui.showDebugMessage(u" Remove duplicate (supersede): {}".format(self.sendQueue[itemID])) - self.sendQueue.remove(self.sendQueue[itemID]) + try: + self.sendQueue.remove(self.sendQueue[itemID]) + except UnicodeWarning: + self.__playerController._client.ui.showDebugMessage(u" Unicode mismatch occured when trying to remove duplicate") + # TODO: Prevent this from being triggered + pass break break if constants.MPV_REMOVE_BOTH_IF_DUPLICATE_COMMANDS: From 690bb350dc0aee40c4a66ffd9c5f024f615f49ed Mon Sep 17 00:00:00 2001 From: Etoh Date: Thu, 16 Nov 2017 09:05:10 +0000 Subject: [PATCH 30/85] Increase max username length to 16 characters (#160) --- syncplay/constants.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syncplay/constants.py b/syncplay/constants.py index 41834a0..3fdfb91 100644 --- a/syncplay/constants.py +++ b/syncplay/constants.py @@ -59,7 +59,7 @@ TAB_PADDING = 30 # Maximum character lengths (for client and server) MAX_CHAT_MESSAGE_LENGTH = 50 # Number of displayed characters -MAX_USERNAME_LENGTH = 12 # Number of displayed characters +MAX_USERNAME_LENGTH = 16 # Number of displayed characters MAX_ROOM_NAME_LENGTH = 35 # Number of displayed characters MAX_FILENAME_LENGTH = 250 # Number of displayed characters From 088a41a0847d6847763878e88a020947f560cd08 Mon Sep 17 00:00:00 2001 From: Etoh Date: Thu, 16 Nov 2017 09:06:35 +0000 Subject: [PATCH 31/85] Upver to 47 and increase recent client threshold to 1.5.0 --- syncplay/__init__.py | 2 +- syncplay/constants.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/syncplay/__init__.py b/syncplay/__init__.py index fc4ca02..9dc2334 100644 --- a/syncplay/__init__.py +++ b/syncplay/__init__.py @@ -1,4 +1,4 @@ version = '1.5.0' milestone = 'Yoitsu' -release_number = '45' +release_number = '47' projectURL = 'http://syncplay.pl/' diff --git a/syncplay/constants.py b/syncplay/constants.py index 3fdfb91..0a2bdda 100644 --- a/syncplay/constants.py +++ b/syncplay/constants.py @@ -9,7 +9,7 @@ UI_TIME_FORMAT = "[%X] " CONFIG_NAMES = [".syncplay", "syncplay.ini"] #Syncplay searches first to last DEFAULT_CONFIG_NAME_WINDOWS = "syncplay.ini" DEFAULT_CONFIG_NAME_LINUX = ".syncplay" -RECENT_CLIENT_THRESHOLD = "1.4.0" #This and higher considered 'recent' clients (no warnings) +RECENT_CLIENT_THRESHOLD = "1.5.0" #This and higher considered 'recent' clients (no warnings) WARN_OLD_CLIENTS = True #Use MOTD to inform old clients to upgrade LIST_RELATIVE_CONFIGS = True # Print list of relative configs loaded SHOW_CONTACT_INFO = True # Displays dev contact details below list in GUI From 2e8f8675d75d0637ac7519256f602bb3851bb080 Mon Sep 17 00:00:00 2001 From: alby128 Date: Fri, 17 Nov 2017 10:12:34 +0100 Subject: [PATCH 32/85] Removed PyQt support from Qt.py --- syncplay/ui/ConfigurationGetter.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/syncplay/ui/ConfigurationGetter.py b/syncplay/ui/ConfigurationGetter.py index a176f98..79e4f1e 100755 --- a/syncplay/ui/ConfigurationGetter.py +++ b/syncplay/ui/ConfigurationGetter.py @@ -403,9 +403,11 @@ class ConfigurationGetter(object): self._overrideConfigWithArgs(args) if not self._config['noGui']: try: - from syncplay.vendor.Qt import QtWidgets + from syncplay.vendor.Qt import QtWidgets, IsPySide, IsPySide2 from syncplay.vendor.Qt.QtCore import QCoreApplication from syncplay.vendor import qt5reactor + if not (IsPySide2 or IsPySide): + raise ImportError if QCoreApplication.instance() is None: self.app = QtWidgets.QApplication(sys.argv) qt5reactor.install() From 3b90d6f34c65e91bad9b97b9088435396de9e2ac Mon Sep 17 00:00:00 2001 From: alby128 Date: Tue, 21 Nov 2017 22:28:06 +0100 Subject: [PATCH 33/85] lastCheckedQt setting was impossible to clean from UI --- syncplay/ui/GuiConfiguration.py | 1 + 1 file changed, 1 insertion(+) diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py index 6c6e5d4..2cda809 100755 --- a/syncplay/ui/GuiConfiguration.py +++ b/syncplay/ui/GuiConfiguration.py @@ -1050,6 +1050,7 @@ class ConfigDialog(QtWidgets.QDialog): settings = QSettings("Syncplay", "Interface") settings.beginGroup("Update") settings.setValue("lastChecked", None) + settings.setValue("lastCheckedQt", None) settings.endGroup() settings.beginGroup("PublicServerList") settings.setValue("publicServers", None) From bd29a0648b202888db46da2b2470554f91f64e1c Mon Sep 17 00:00:00 2001 From: alby128 Date: Mon, 8 Jan 2018 15:20:35 +0100 Subject: [PATCH 34/85] Added automatic version numbering for Travis --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 26836c0..ce3f7d3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,7 +26,7 @@ before_deploy: - mv resources/lua/intf/syncplay.lua resources/lua/intf/.syncplay.lua - mv resources/macOS_readme.pdf resources/.macOS_readme.pdf - export VER="$(cat syncplay/__init__.py | awk '/version/ {gsub("\047", "", $3); print $NF}')" -- dmgbuild -s appdmg.py "Syncplay" dist_dmg/Syncplay_$(VER)_macOS.dmg +- dmgbuild -s appdmg.py "Syncplay" dist_dmg/Syncplay_${VER}_macOS.dmg deploy: on: master_local From 6370eabf794ce313ba6a9baeedebf7b77ba0ff86 Mon Sep 17 00:00:00 2001 From: alby128 Date: Mon, 8 Jan 2018 16:08:38 +0100 Subject: [PATCH 35/85] AppVeyor and Travis scripts updated --- .appveyor.yml | 2 +- .travis.yml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index c955b9d..cb704f3 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -25,7 +25,7 @@ install: - del syncplay_v%ver%\lib\IPHLPAPI.dll - del syncplay_v%ver%\lib\MPR.dll - mkdir syncplay_v%ver%\platforms - #- copy C:\Miniconda\envs\syncplay\library\plugins\platforms\qwindows.dll C:\projects\syncplay\syncplay_v1.5.0\platforms\ + - copy C:\Miniconda\envs\syncplay\library\plugins\platforms\qwindows.dll syncplay_v%ver%\platforms\ # Not a project with an msbuild file, build done at install. build: off diff --git a/.travis.yml b/.travis.yml index d43c0b7..b8b2ba7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,14 +24,14 @@ before_install: - hg clone https://alby128@bitbucket.org/alby128/py2app - cd py2app - python setup.py install +- cd .. - python -c "from py2app.recipes import pyside2" install: - - pip install twisted appnope pyobjc -- git clone -b qtpy-pyside2 https://github.com/alby128/syncplay.git syncplay-qtpy-PySide2 -- cd syncplay-qtpy-PySide2 -- git checkout qtpy-pyside2 +#- git clone -b qtpy-pyside2 https://github.com/alby128/syncplay.git syncplay-qtpy-PySide2 +#- cd syncplay-qtpy-PySide2 +#- git checkout qtpy-pyside2 before_deploy: - pip install dmgbuild @@ -43,7 +43,7 @@ before_deploy: - dmgbuild -s appdmg.py "Syncplay" dist_dmg/Syncplay_${VER}_macOS_pyside2.dmg deploy: - on: master_local + on: qtpy-pyside2 provider: bintray file: "bintray.json" user: alby128 From 07b5fb7e7e55992abb716353b01d61cd7614b917 Mon Sep 17 00:00:00 2001 From: alby128 Date: Mon, 22 Jan 2018 12:01:04 +0100 Subject: [PATCH 36/85] Added commit hash check of the PySide2 wheel --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index b8b2ba7..f4cd891 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,7 +20,8 @@ before_install: - ln -s /usr/local/lib/python2.7/site-packages/PySide2/libpyside2-python2.7v.2.0.0.dylib /usr/local/lib/ - ln -s /usr/local/lib/python2.7/site-packages/PySide2/libpyside2-python2.7v.2.0.dylib /usr/local/lib/ - ln -s /usr/local/lib/python2.7/site-packages/PySide2/libpyside2-python2.7v.dylib /usr/local/lib/ -- python -c "from PySide2 import QtCore" +#- python -c "from PySide2 import QtCore" +- python -c "from PySide2 import __build_commit_hash__; print __build_commit_hash__" - hg clone https://alby128@bitbucket.org/alby128/py2app - cd py2app - python setup.py install From 3f842a2cd0f62a27ccef1d194970f0e82db76d54 Mon Sep 17 00:00:00 2001 From: Etoh Date: Sun, 4 Feb 2018 23:19:38 +0000 Subject: [PATCH 37/85] Add first letter of Cyrillic alphabet to Syncplay mpv script (#174 raised by Corginyan) --- resources/syncplayintf.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/syncplayintf.lua b/resources/syncplayintf.lua index 3de79f4..9115faf 100644 --- a/resources/syncplayintf.lua +++ b/resources/syncplayintf.lua @@ -61,6 +61,7 @@ local cursor = 1 local key_hints_enabled = false non_us_chars = { + 'А','а', 'ą','ć','ę','ł','ń','ś','ź','ż','Ą','Ć','Ę','Ł','Ń','Ś','Ź','Ż', 'à','è','ì','ò','ù','À','È','Ì','Ò','Ù', 'á', 'é', 'í', 'ó', 'ú', 'ý', 'Á', 'É', 'Í', 'Ó', 'Ú', 'Ý', From 73c14197fc628c86440e4354c511c1cd490c43ee Mon Sep 17 00:00:00 2001 From: alby128 Date: Fri, 9 Feb 2018 12:40:01 +0100 Subject: [PATCH 38/85] Added homebrew self update on Travis --- .travis.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index ce3f7d3..d4477e0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,21 +6,22 @@ branches: - master_local script: -- python buildPy2app.py py2app fix +- python2 buildPy2app.py py2app fix before_install: +- brew update - brew install python - brew tap cartr/qt4 - brew tap-pin cartr/qt4 - brew install pyside install: -- export PATH=/usr/local/bin:$PATH +#- export PATH=/usr/local/bin:$PATH - export QT_PREFERRED_BINDING="PySide" -- pip install twisted appnope pyobjc py2app +- pip2 install twisted appnope pyobjc py2app before_deploy: -- pip install dmgbuild +- pip2 install dmgbuild - mkdir dist_dmg - mv resources/macos_vlc_install.command resources/.macos_vlc_install.command - mv resources/lua/intf/syncplay.lua resources/lua/intf/.syncplay.lua From 693a3d9ff88cdefa58a5333d8af03e047620d134 Mon Sep 17 00:00:00 2001 From: Etoh Date: Sat, 10 Feb 2018 17:54:01 +0000 Subject: [PATCH 39/85] Fix error when server run without --max-chat-message-length being set (#177) --- syncplay/client.py | 12 ++++++++---- syncplay/server.py | 4 ++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/syncplay/client.py b/syncplay/client.py index 8a1b3cd..e330843 100644 --- a/syncplay/client.py +++ b/syncplay/client.py @@ -560,10 +560,14 @@ class SyncplayClient(object): elif not self.serverFeatures["sharedPlaylists"]: self.ui.showErrorMessage(getMessage("shared-playlists-disabled-by-server-error")) # TODO: Have messages for all unsupported & disabled features - constants.MAX_CHAT_MESSAGE_LENGTH = self.serverFeatures["maxChatMessageLength"] - constants.MAX_USERNAME_LENGTH = self.serverFeatures["maxUsernameLength"] - constants.MAX_ROOM_NAME_LENGTH = self.serverFeatures["maxRoomNameLength"] - constants.MAX_FILENAME_LENGTH = self.serverFeatures["maxFilenameLength"] + if self.serverFeatures["maxChatMessageLength"] is not None: + constants.MAX_CHAT_MESSAGE_LENGTH = self.serverFeatures["maxChatMessageLength"] + if self.serverFeatures["maxUsernameLength"] is not None: + constants.MAX_USERNAME_LENGTH = self.serverFeatures["maxUsernameLength"] + if self.serverFeatures["maxRoomNameLength"] is not None: + constants.MAX_ROOM_NAME_LENGTH = self.serverFeatures["maxRoomNameLength"] + if self.serverFeatures["maxFilenameLength"] is not None: + constants.MAX_FILENAME_LENGTH = self.serverFeatures["maxFilenameLength"] constants.MPV_SYNCPLAYINTF_CONSTANTS_TO_SEND = ["MaxChatMessageLength={}".format(constants.MAX_CHAT_MESSAGE_LENGTH), u"inputPromptStartCharacter={}".format(constants.MPV_INPUT_PROMPT_START_CHARACTER), u"inputPromptEndCharacter={}".format(constants.MPV_INPUT_PROMPT_END_CHARACTER), diff --git a/syncplay/server.py b/syncplay/server.py index 96904ee..3e3967a 100644 --- a/syncplay/server.py +++ b/syncplay/server.py @@ -27,7 +27,7 @@ class SyncFactory(Factory): self._motdFilePath = motdFilePath self.disableReady = disableReady self.disableChat = disableChat - self.maxChatMessageLength = maxChatMessageLength + self.maxChatMessageLength = maxChatMessageLength # if maxChatMessageLength is not None else constants.MAX_CHAT_MESSAGE_LENGTH if not isolateRooms: self._roomManager = RoomManager() else: @@ -548,4 +548,4 @@ class ConfigurationGetter(object): self._argparser.add_argument('--disable-chat', action='store_true', help=getMessage("server-chat-argument")) self._argparser.add_argument('--salt', metavar='salt', type=str, nargs='?', help=getMessage("server-salt-argument")) self._argparser.add_argument('--motd-file', metavar='file', type=str, nargs='?', help=getMessage("server-motd-argument")) - self._argparser.add_argument('--max-chat-message-length', metavar='maxChatMessageLength', type=int, nargs='?',help=getMessage("server-chat-maxchars-argument").format(constants.MAX_CHAT_MESSAGE_LENGTH)) + self._argparser.add_argument('--max-chat-message-length', metavar='maxChatMessageLength',type=int, nargs='?',help=getMessage("server-chat-maxchars-argument").format(constants.MAX_CHAT_MESSAGE_LENGTH)) From 83055ce4843e7fddb1f239ae658f846dc2ca99f5 Mon Sep 17 00:00:00 2001 From: Etoh Date: Sat, 10 Feb 2018 18:06:08 +0000 Subject: [PATCH 40/85] Fix error when server run without --max-chat-message-length (#177) Part 2 --- syncplay/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syncplay/server.py b/syncplay/server.py index 3e3967a..21a09ad 100644 --- a/syncplay/server.py +++ b/syncplay/server.py @@ -27,7 +27,7 @@ class SyncFactory(Factory): self._motdFilePath = motdFilePath self.disableReady = disableReady self.disableChat = disableChat - self.maxChatMessageLength = maxChatMessageLength # if maxChatMessageLength is not None else constants.MAX_CHAT_MESSAGE_LENGTH + self.maxChatMessageLength = maxChatMessageLength if maxChatMessageLength is not None else constants.MAX_CHAT_MESSAGE_LENGTH if not isolateRooms: self._roomManager = RoomManager() else: From 83a5dde99a859999529426db700b4f8c3caa4616 Mon Sep 17 00:00:00 2001 From: Etoh Date: Sun, 4 Feb 2018 23:19:38 +0000 Subject: [PATCH 41/85] Add first letter of Cyrillic alphabet to Syncplay mpv script (#174 raised by Corginyan) --- resources/syncplayintf.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/syncplayintf.lua b/resources/syncplayintf.lua index 3de79f4..9115faf 100644 --- a/resources/syncplayintf.lua +++ b/resources/syncplayintf.lua @@ -61,6 +61,7 @@ local cursor = 1 local key_hints_enabled = false non_us_chars = { + 'А','а', 'ą','ć','ę','ł','ń','ś','ź','ż','Ą','Ć','Ę','Ł','Ń','Ś','Ź','Ż', 'à','è','ì','ò','ù','À','È','Ì','Ò','Ù', 'á', 'é', 'í', 'ó', 'ú', 'ý', 'Á', 'É', 'Í', 'Ó', 'Ú', 'Ý', From d7dd563394bb6b5bac9b6380d6e8eb9acb499a68 Mon Sep 17 00:00:00 2001 From: Etoh Date: Sat, 10 Feb 2018 17:54:01 +0000 Subject: [PATCH 42/85] Fix error when server run without --max-chat-message-length being set (#177) --- syncplay/client.py | 12 ++++++++---- syncplay/server.py | 4 ++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/syncplay/client.py b/syncplay/client.py index 8a1b3cd..e330843 100644 --- a/syncplay/client.py +++ b/syncplay/client.py @@ -560,10 +560,14 @@ class SyncplayClient(object): elif not self.serverFeatures["sharedPlaylists"]: self.ui.showErrorMessage(getMessage("shared-playlists-disabled-by-server-error")) # TODO: Have messages for all unsupported & disabled features - constants.MAX_CHAT_MESSAGE_LENGTH = self.serverFeatures["maxChatMessageLength"] - constants.MAX_USERNAME_LENGTH = self.serverFeatures["maxUsernameLength"] - constants.MAX_ROOM_NAME_LENGTH = self.serverFeatures["maxRoomNameLength"] - constants.MAX_FILENAME_LENGTH = self.serverFeatures["maxFilenameLength"] + if self.serverFeatures["maxChatMessageLength"] is not None: + constants.MAX_CHAT_MESSAGE_LENGTH = self.serverFeatures["maxChatMessageLength"] + if self.serverFeatures["maxUsernameLength"] is not None: + constants.MAX_USERNAME_LENGTH = self.serverFeatures["maxUsernameLength"] + if self.serverFeatures["maxRoomNameLength"] is not None: + constants.MAX_ROOM_NAME_LENGTH = self.serverFeatures["maxRoomNameLength"] + if self.serverFeatures["maxFilenameLength"] is not None: + constants.MAX_FILENAME_LENGTH = self.serverFeatures["maxFilenameLength"] constants.MPV_SYNCPLAYINTF_CONSTANTS_TO_SEND = ["MaxChatMessageLength={}".format(constants.MAX_CHAT_MESSAGE_LENGTH), u"inputPromptStartCharacter={}".format(constants.MPV_INPUT_PROMPT_START_CHARACTER), u"inputPromptEndCharacter={}".format(constants.MPV_INPUT_PROMPT_END_CHARACTER), diff --git a/syncplay/server.py b/syncplay/server.py index 96904ee..3e3967a 100644 --- a/syncplay/server.py +++ b/syncplay/server.py @@ -27,7 +27,7 @@ class SyncFactory(Factory): self._motdFilePath = motdFilePath self.disableReady = disableReady self.disableChat = disableChat - self.maxChatMessageLength = maxChatMessageLength + self.maxChatMessageLength = maxChatMessageLength # if maxChatMessageLength is not None else constants.MAX_CHAT_MESSAGE_LENGTH if not isolateRooms: self._roomManager = RoomManager() else: @@ -548,4 +548,4 @@ class ConfigurationGetter(object): self._argparser.add_argument('--disable-chat', action='store_true', help=getMessage("server-chat-argument")) self._argparser.add_argument('--salt', metavar='salt', type=str, nargs='?', help=getMessage("server-salt-argument")) self._argparser.add_argument('--motd-file', metavar='file', type=str, nargs='?', help=getMessage("server-motd-argument")) - self._argparser.add_argument('--max-chat-message-length', metavar='maxChatMessageLength', type=int, nargs='?',help=getMessage("server-chat-maxchars-argument").format(constants.MAX_CHAT_MESSAGE_LENGTH)) + self._argparser.add_argument('--max-chat-message-length', metavar='maxChatMessageLength',type=int, nargs='?',help=getMessage("server-chat-maxchars-argument").format(constants.MAX_CHAT_MESSAGE_LENGTH)) From 9dfd8ea8506812ae7171ddd1a53b49b140f36164 Mon Sep 17 00:00:00 2001 From: Etoh Date: Sat, 10 Feb 2018 18:06:08 +0000 Subject: [PATCH 43/85] Fix error when server run without --max-chat-message-length (#177) Part 2 --- syncplay/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syncplay/server.py b/syncplay/server.py index 3e3967a..21a09ad 100644 --- a/syncplay/server.py +++ b/syncplay/server.py @@ -27,7 +27,7 @@ class SyncFactory(Factory): self._motdFilePath = motdFilePath self.disableReady = disableReady self.disableChat = disableChat - self.maxChatMessageLength = maxChatMessageLength # if maxChatMessageLength is not None else constants.MAX_CHAT_MESSAGE_LENGTH + self.maxChatMessageLength = maxChatMessageLength if maxChatMessageLength is not None else constants.MAX_CHAT_MESSAGE_LENGTH if not isolateRooms: self._roomManager = RoomManager() else: From ab481b6cd67be3b9f2494af9bb7994c72af30305 Mon Sep 17 00:00:00 2001 From: albertosottile Date: Tue, 13 Feb 2018 13:31:17 +0100 Subject: [PATCH 44/85] Italian translation reviewed and added syncplay-mediasearchdirectories-label --- syncplay/messages_it.py | 479 ++++++++++++++++++++++++++++++++++++++++ syncplay/ui/gui.py | 2 +- 2 files changed, 480 insertions(+), 1 deletion(-) create mode 100644 syncplay/messages_it.py diff --git a/syncplay/messages_it.py b/syncplay/messages_it.py new file mode 100644 index 0000000..226d75d --- /dev/null +++ b/syncplay/messages_it.py @@ -0,0 +1,479 @@ +# coding:utf8 + +"""Italian dictionary""" + +it = { + "LANGUAGE" : u"Italiano", + + # Client notifications + "config-cleared-notification" : u"Impostazioni resettate. I cambiamenti saranno memorizzati quando salverai una configurazione valida.", + + "relative-config-notification" : u"Caricato i file di configurazione relativi: {}", + + "connection-attempt-notification" : u"Tentativo di connessione a {}:{}", # Port, IP + "reconnection-attempt-notification" : u"Connessione col server persa, tentativo di riconnesione in corso", + "disconnection-notification" : u"Disconnesso dal server", + "connection-failed-notification" : u"Connessione col server fallita", + "connected-successful-notification" : u"Connessione al server effettuata con successo", + "retrying-notification" : u"%s, Nuovo tentativo in %d secondi...", # Seconds + + "rewind-notification" : u"Riavvolgo a causa della differenza temporale con {}", # User + "fastforward-notification" : u"Avanzamento rapido a causa della differenza temporale con {}", # User + "slowdown-notification" : u"Rallento a causa della differenza temporale con {}", # User + "revert-notification" : u"Velocità di riproduzione normale ripristinata", + + "pause-notification" : u"{} ha messo in pausa", # User + "unpause-notification" : u"{} ha ripreso la riproduzione", # User + "seek-notification" : u"{} è passato da {} a {}", # User, from time, to time + + "current-offset-notification" : u"Offset corrente: {} secondi", # Offset + + "media-directory-list-updated-notification" : u"Le cartelle multimediali di Syncplay sono state aggiornate.", + + "room-join-notification" : u"{} è entranto nella stanza: '{}'", # User + "left-notification" : u"{} ha abbandonato", # User + "left-paused-notification" : u"{} ha abbandonato, {} ha messo in pausa", # User who left, User who paused + "playing-notification" : u"{} sta riproducendo '{}' ({})", # User, file, duration + "playing-notification/room-addendum" : u" nella stanza: '{}'", # Room + + "not-all-ready" : u"Non pronti: {}", # Usernames + "all-users-ready" : u"Tutti i partecipanti sono pronti ({} utenti)", #Number of ready users + "ready-to-unpause-notification" : u"Ora sei pronto - premi ancora una volta il tasto pausa per riprendere la riproduzione", + "set-as-ready-notification" : u"Ora sei pronto", + "set-as-not-ready-notification" : u"Non sei pronto", + "autoplaying-notification" : u"Riproduzione automatica in {}...", # Number of seconds until playback will start + + "identifying-as-controller-notification" : u"Identificato come gestore della stanza con password '{}'...", + "failed-to-identify-as-controller-notification" : u"{} ha fallito l'identificazione come gestore della stanza.", + "authenticated-as-controller-notification" : u"{} autenticato come gestore della stanza", + "created-controlled-room-notification" : u"Stanza gestita '{}' creata con password '{}'. Per favore salva queste informazioni per una consultazione futura!", # RoomName, operatorPassword + + "file-different-notification" : u"Il file che stai riproducendo sembra essere diverso da quello di {}", # User + "file-differences-notification" : u"Il tuo file mostra le seguenti differenze: {}", # Differences + "room-file-differences" : u"Differenze nel tuo file: {}", # File differences (filename, size, and/or duration) + "file-difference-filename" : u"nome", + "file-difference-filesize" : u"dimensione", + "file-difference-duration" : u"durata", + "alone-in-the-room": u"Non ci sono altri utenti nella stanza", + + "different-filesize-notification" : u" (la dimensione del tuo file è diversa da quella degli altri partecipanti!)", + "userlist-playing-notification" : u"{} sta riproducendo:", #Username + "file-played-by-notification" : u"File: {} è in riproduzione da:", # File + "no-file-played-notification" : u"{} non sta riproducendo alcun file", # Username + "notplaying-notification" : u"Partecipanti che non stanno riproducendo alcun file:", + "userlist-room-notification" : u"Nella stanza '{}':", # Room + "userlist-file-notification" : u"File", + "controller-userlist-userflag" : u"Gestore", + "ready-userlist-userflag" : u"Pronto", + + "update-check-failed-notification" : u"Controllo automatico degli aggiornamenti di Syncplay {} fallito. Vuoi visitare http://syncplay.pl/ per verificare manualmente la presenza di aggiornamenti?", #Syncplay version + "syncplay-uptodate-notification" : u"Syncplay è aggiornato", + "syncplay-updateavailable-notification" : u"Una nuova versione di Syncplay è disponibile. Vuoi visitare la pagina delle release?", + + "mplayer-file-required-notification" : u"Utilizzare Syncplay con mplayer di selezionare il file all'avvio", + "mplayer-file-required-notification/example" : u"Esempio di utilizzo: syncplay [opzioni] [url|percorso/]nomefile", + "mplayer2-required" : u"Syncplay non è compatibile con MPlayer 1.x, per favore utilizza mplayer2 or mpv", + + "unrecognized-command-notification" : u"Comando non riconosciuto", + "commandlist-notification" : u"Comandi disponibili:", + "commandlist-notification/room" : u"\tr [nome] - cambia stanza", + "commandlist-notification/list" : u"\tl - mostra la lista di utenti", + "commandlist-notification/undo" : u"\tu - annulla l'ultima ricerca", + "commandlist-notification/pause" : u"\tp - attiva o disattiva la pausa", + "commandlist-notification/seek" : u"\t[s][+-]tempo - salta all'istante di tempo dato, se + o - non è specificato si considera il tempo assoluto in secondi o min:sec", + "commandlist-notification/help" : u"\th - mostra questo help", + "commandlist-notification/toggle" : u"\tt - attiva o disattiva lo stato 'Pronto'", + "commandlist-notification/create" : u"\tc [nome] - crea una stanza gestita usando il nome della stanza attuale", + "commandlist-notification/auth" : u"\ta [password] - autentica come gestore della stanza, utilizzando la password del gestore", + "commandlist-notification/chat" : u"\tch [message] - invia un messaggio nella chat della stanza", + "syncplay-version-notification" : u"Versione di Syncplay: {}", # syncplay.version + "more-info-notification" : u"Maggiori informazioni a: {}", # projectURL + + "gui-data-cleared-notification" : u"Syncplay ha resettato i dati dell'interfaccia relativi ai percorsi e allo stato delle finestre.", + "language-changed-msgbox-label" : u"La lingua sarà cambiata quando avvierai Syncplay.", + "promptforupdate-label" : u"Ti piacerebbe che, di tanto in tanto, Syncplay controllasse automaticamente la presenza di aggiornamenti?", + + "vlc-interface-version-mismatch": u"Stai eseguendo la versione {} del modulo di interfaccia per VLC di Syncplay, ma Syncplay è progettato per essere utilizzato con la versione {} o superiore. Per favore, fai riferimento alla User Guide di Syncplay presso http://syncplay.pl/guide/ per istruzioni su come installare syncplay.lua.", # VLC interface version, VLC interface min version + "vlc-interface-oldversion-warning": u"Attenzione: Syncplay ha rilevato una vecchia versione del modulo di interfaccia per VLC di Syncplay installata nella cartella di VLC. Per favore, fai riferimento alla User Guide di Syncplay presso http://syncplay.pl/guide/ per istruzioni su come installare syncplay.lua.", + "media-player-latency-warning": u"Attenzione: il media player ha impiegato {} secondi per rispondere. Se stai avendo problemi di sincronizzazione, chiudi delle applicazioni per liberare le risorse di sistema e, se ciò non dovesse avere alcun effetto, prova un altro media player.", # Seconds to respond + "vlc-interface-not-installed": u"Attenzione: il modulo di interfaccia per VLC di Syncplay non è stato trovato nella cartella di VLC. Se stai utilizzando VLC 2.0, VLC userà il modulo syncplay.lua contenuto nella cartella di Syncplay, ma ciò significa che altri custom script di interfaccia ed estensioni non funzioneranno. Per favore, fai riferimento alla User Guide di Syncplay presso http://syncplay.pl/guide/ per istruzioni su come installare syncplay.lua.", + "mpv-unresponsive-error": u"mpv non ha risposto per {} secondi, quindi sembra non funzionare correttamente. Per favore, riavvia Syncplay.", # Seconds to respond + + # Client prompts + "enter-to-exit-prompt" : u"Premi Invio per uscire\n", + + # Client errors + "missing-arguments-error" : u"Alcuni argomenti obbligatori non sono stati trovati. Fai riferimento a --help", + "server-timeout-error" : u"Connessione col server scaduta", + "mpc-slave-error" : u"Non è possibile avviare MPC in modalità slave!", + "mpc-version-insufficient-error" : u"La tua versione di MPC è troppo vecchia, per favore usa `mpc-hc` >= `{}`", + "mpc-be-version-insufficient-error" : u"La tua versione di MPC è troppo vecchia, per favore usa `mpc-be` >= `{}`", + "mpv-version-error" : u"Syncplay non è compatibile con questa versione di mpv. Per favore usa un'altra versione di mpv (es. Git HEAD).", + "player-file-open-error" : u"Il player non è riuscito ad aprire il file", + "player-path-error" : u"Il path del player non è configurato correttamente. I player supportati sono: mpv, VLC, MPC-HC, MPC-BE e mplayer2", + "hostname-empty-error" : u"Il campo hostname non può essere vuoto", + "empty-error" : u"Il campo {} non può esssere vuoto", # Configuration + "media-player-error": u"Errore media player: \"{}\"", # Error line + "unable-import-gui-error": u"Non è possibile importare le librerie di interfaccia grafica. Hai bisogno di PySide per poter utilizzare l'interfaccia grafica.", + + "arguments-missing-error" : u"Alcuni argomenti obbligatori non sono stati trovati. Fai riferimento a --help", + + "unable-to-start-client-error" : u"Impossibile avviare il client", + + "player-path-config-error": u"Il percorso del player non è configurato correttamente. I player supportati sono: mpv, VLC, MPC-HC, MPC-BE e mplayer2.", + "no-file-path-config-error" :u"Deve essere selezionato un file prima di avviare il player", + "no-hostname-config-error": u"Il campo hostname non può essere vuoto", + "invalid-port-config-error" : u"La porta deve essere valida", + "empty-value-config-error" : u"Il campo {} non può essere vuoto", # Config option + + "not-json-error" : u"Non è una stringa con codifica JSON\n", + "hello-arguments-error" : u"Argomenti Hello non sufficienti\n", + "version-mismatch-error" : u"La versione del client è diversa da quella del server\n", + "vlc-failed-connection": u"Impossibile collegarsi a VLC. Se non hai installato syncplay.lua e stai usando l'ultima versione di VLC, fai riferimento a http://syncplay.pl/LUA/ per istruzioni.", + "vlc-failed-noscript": u"VLC ha segnalato che lo script di interfaccia syncplay.lua non è stato installato. Per favore, fai riferimento a http://syncplay.pl/LUA/ per istruzioni.", + "vlc-failed-versioncheck": u"Questa versione di VLC non è supportata da Syncplay.", + + "feature-sharedPlaylists" : u"playlist condivise", # used for not-supported-by-server-error + "feature-chat" : u"chat", # used for not-supported-by-server-error + "feature-readiness" : u"pronto", # used for not-supported-by-server-error + "feature-readiness" : u"pronto", # used for not-supported-by-server-error + "feature-managedRooms" : u"stanze gestite", # used for not-supported-by-server-error + + "not-supported-by-server-error" : u"La feature {} non è supportata da questo server..", #feature + "shared-playlists-not-supported-by-server-error" : u"Le playlist condivise potrebbero non essere supportata dal server. È necessario un server con Syncplay {}+ per assicurarsi che funzionino correttamente, tuttavia il server sta utilizzando Syncplay {}.", #minVersion, serverVersion + "shared-playlists-disabled-by-server-error" : u"Le playlist condivise sono state disabilitate nella configurazione del server. Per utilizzarle, dovrai collegarti a un altro server.", + + "invalid-seek-value" : u"Valore di ricerca non valido", + "invalid-offset-value" : u"Valore di offset non valido", + + "switch-file-not-found-error" : u"Impossibile selezionare il file '{0}'. Syncplay osserva solo le cartelle multimediali specificate.", # File not found + "folder-search-timeout-error" : u"La ricerca nelle cartelle multimediali è stata interrotta perché l'analisi di '{}' sta impiegando troppo tempo. Ciò accade se si aggiunge nella lista di ricerca una cartella con troppe sottocartelle. Per riabilitare la selezione automatica dei file seleziona File->Imposta cartelle multimediali nella barra dei menù e rimuovi questa cartella, o sostituiscila con una sottocartella appropriata. Se la cartella è idonea, è possibile riabilitarla selezionando File->Imposta cartelle multimediali e premendo 'OK'.", #Folder + "folder-search-first-file-timeout-error" : u"La ricerca dei media in '{}' è stata interrotta perché l'accesso alla cartella sta impiegando troppo tempo. Ciò accade se questa si trova in un disco di rete oppure se hai impostato il blocco della rotazione del disco rigido dopo un certo periodo di inattività. Per riabilitare la selezione automatica dei file seleziona File->Imposta cartelle multimediali, quindi rimuovi la cartella oppure risolvi il problema (es. cambiando le impostazioni di risparmio energetico).", #Folder + "added-file-not-in-media-directory-error" : u"Hai selezionato un file in '{}', che non è impostata come cartella multimediale. Puoi aggiungerla come cartella multimediale selezionando File->Imposta cartelle multimediali nella barra dei menù.", #Folder + "no-media-directories-error" : u"Nessuna cartella multimediale è stata configurata. Per permettere il corretto funzionamento delle playlist condivise e la selezione automatica dei file, naviga in File->Imposta cartelle multimediali e specifica dove Syncplay deve ricercare i file multimediali.", + "cannot-find-directory-error" : u"Impossibile trovare la cartella multimediale '{}'. Per aggiornare la lista delle cartelle multimediali seleziona File->Imposta cartelle multimediali dalla barra dei menù e specifica dove Syncplay deve ricercare i file multimediali.", + + "failed-to-load-server-list-error" : u"Impossibile caricare la lista dei server pubblici. Per favore, visita http://www.syncplay.pl/ con il tuo browser.", + + # Client arguments + "argument-description" : u'Programma per sincronizzare la riproduzione di media player multipli attraverso la rete.', + "argument-epilog" : u'Se non è specificata alcuna opzione saranno utilizzati i valori _config', + "nogui-argument" : u'non mostrare l\'interfaccia grafica', + "host-argument" : u'indirizzo del server', + "name-argument" : u'username desiderato', + "debug-argument" : u'modalità debug', + "force-gui-prompt-argument" : u'mostra la finestra di configurazione', + "no-store-argument" : u'non salvare i valori in .syncplay', + "room-argument" : u'stanza di default', + "password-argument" : u'password del server', + "player-path-argument" : u'percorso dell\'eseguibile del tuo player', + "file-argument" : u'file da riprodurre', + "args-argument" : u'opzioni del player, se hai bisogno di utilizzare opzioni che iniziano con - anteponi un singolo \'--\'', + "clear-gui-data-argument" : u'resetta il percorso e i dati impostati tramite interfaccia grafica e salvati come QSettings', + "language-argument" : u'lingua per i messaggi di Syncplay (de/en/ru/it)', + + "version-argument" : u'mostra la tua versione', + "version-message" : u"Stai usando la versione di Syncplay {} ({})", + + # Client labels + "config-window-title" : u"Configurazione di Syncplay", + + "connection-group-title" : u"Impostazioni di connessione", + "host-label" : u"Indirizzo del server: ", + "name-label" : u"Username (opzionale):", + "password-label" : u"Password del server (se necessaria):", + "room-label" : u"Stanza di default: ", + + "media-setting-title" : u"Impostazioni del media player", + "executable-path-label" : u"Percorso del media player:", + "media-path-label" : u"Percorso del video (opzionale):", + "player-arguments-label" : u"Opzioni del player (se necessarie):", + "browse-label" : u"Sfoglia", + "update-server-list-label" : u"Aggiorna lista", + + "more-title" : u"Mostra altre impostazioni", + "never-rewind-value" : u"Mai", + "seconds-suffix" : u" sec", + "privacy-sendraw-option" : u"Invio semplice", + "privacy-sendhashed-option" : u"Invio cifrato", + "privacy-dontsend-option" : u"Non inviare", + "filename-privacy-label" : u"Nome del file:", + "filesize-privacy-label" : u"Dimensione del file:", + "checkforupdatesautomatically-label" : u"Controlla automaticamente gli aggiornamenti di Syncplay", + "slowondesync-label" : u"Rallenta in caso di sfasamento minimo (non supportato su MPC-HC/BE)", + "rewindondesync-label" : u"Riavvolgi in caso di grande sfasamento (consigliato)", + "fastforwardondesync-label" : u"Avanzamento rapido in caso di ritardo (consigliato)", + "dontslowdownwithme-label" : u"Non rallentare o riavvolgere gli altri utenti (sperimentale)", + "pausing-title" : u"Pausa", + "pauseonleave-label" : u"Metti in pausa quando gli altri utenti abbandonano (es. disconnessione)", + "readiness-title" : u"Stato iniziale di 'pronto'", + "readyatstart-label" : u"Impostami sempre su 'pronto a guardare'", + "forceguiprompt-label" : u"Non mostrare la finestra di configurazione di Syncplay a ogni apertura", # (Inverted) + "showosd-label" : u"Abilita i messaggi OSD", + + "showosdwarnings-label" : u"Mostra gli avvisi (es. file differenti, utenti non pronti)", + "showsameroomosd-label" : u"Mostra gli eventi della tua stanza", + "shownoncontrollerosd-label" : u"Mostra gli eventi dei non gestori nelle stanze gestite", + "showdifferentroomosd-label" : u"Mostra gli eventi di altre stanze", + "showslowdownosd-label" : u"Mostra le notifiche di rallentamento / riavvolgimento", + "language-label" : u"Lingua:", + "automatic-language" : u"Predefinita ({})", # Default language + "showdurationnotification-label" : u"Avvisa in caso di mancata corrispondenza della durata del file", + "basics-label" : u"Generali", + "readiness-label" : u"Play/Pausa", + "misc-label" : u"Varie", + "core-behaviour-title" : u"Comportamento principale della stanza", + "syncplay-internals-title" : u"Funzionamento di Syncplay", + "syncplay-mediasearchdirectories-title" : u"Cartelle contenenti i file multimediali", + "syncplay-mediasearchdirectories-label" : u"Cartelle contenenti i file multimediali (un solo percorso per riga)", + "sync-label" : u"Sincronia", # don't have better options as the label won't fit in the panel. + "sync-otherslagging-title" : u"Se gli altri partecipanti non sono sincronizzati...", + "sync-youlaggging-title" : u"Se tu sei non sei sincronizzato...", + "messages-label" : u"Messaggi", + "messages-osd-title" : u"Impostazioni On-screen Display", + "messages-other-title" : u"Altre impostazioni dello schermo", + "chat-label" : u"Chat", + "privacy-label" : u"Privacy", # Currently unused, but will be brought back if more space is needed in Misc tab + "privacy-title" : u"Impostazioni privacy", + "unpause-title" : u"Premendo play, imposta il tuo stato su pronto e:", + "unpause-ifalreadyready-option" : u"Riprendi la riproduzione se eri già pronto", + "unpause-ifothersready-option" : u"Riprendi la riproduzione se eri già pronto o se gli altri partecipanti sono pronti (default)", + "unpause-ifminusersready-option" : u"Riprendi la riproduzione se eri già pronto o se un numero minimo di partecipanti è pronto", + "unpause-always" : u"Riprendi sempre la riproduzione", + "syncplay-trusteddomains-title": u"Domini fidati (per streaming e i contenuti in rete)", + + "chat-title" : u"Inserimento messaggi di chat", + "chatinputenabled-label" : u"Abilita la chat su mpv", + "chatdirectinput-label" : u"Abilita la chat istantanea (evita di dover premere Invio per chattare)", + "chatinputfont-label" : u"Font dell'input della chat", + "chatfont-label" : u"Imposta font", + "chatcolour-label" : u"Imposta colore", + "chatinputposition-label" : u"Posizione dell'area di inserimento testo in mpv", + "chat-top-option" : u"In alto", + "chat-middle-option" : u"Al centro", + "chat-bottom-option" : u"In basso", + "chatoutputheader-label" : u"Output messaggi di chat", + "chatoutputfont-label": u"Font dell'output della chat", + "chatoutputenabled-label": u"Abilita l'output della chat nel media player (al momento solo mpv è supportato)", + "chatoutputposition-label": u"Modalità di output", + "chat-chatroom-option": u"Stile chatroom", + "chat-scrolling-option": u"A scorrimento", + + "mpv-key-tab-hint": u"[TAB] to toggle access to alphabet row key shortcuts.", # TODO needs to clarify this + "mpv-key-hint": u"[Invio] per inviare un messaggio. [Esc] per uscire dalla modalità chat.", + "alphakey-mode-warning-first-line": u"Puoi utilizzare temporaneamente i vecchi comandi di mpv con i tasti a-z.", + "alphakey-mode-warning-second-line": u"Premi [TAB] per ritornare alla modalità chat di Syncplay.", + + "help-label" : u"Aiuto", + "reset-label" : u"Impostazioni iniziali", + "run-label" : u"Avvia Syncplay", + "storeandrun-label" : u"Salva la configurazione e avvia Syncplay", + + "contact-label" : u"Sentiti libero di inviare un'e-mail a dev@syncplay.pl, chattare tramite il canale IRC #Syncplay su irc.freenode.net, segnalare un problema su GitHub, lasciare un like sulla nostra pagina Facebook, seguirci su Twitter, o visitare http://syncplay.pl/. NOTA: i messaggi di chat non sono cifrati, quindi non usare Syncplay per inviare dati sensibili.", + + "joinroom-label" : u"Entra nella stanza", + "joinroom-menu-label" : u"Entra nella stanza {}", + "seektime-menu-label" : u"Vai a...", + "undoseek-menu-label" : u"Annulla vai a...", + "play-menu-label" : u"Play", + "pause-menu-label" : u"Pausa", + "playbackbuttons-menu-label" : u"Mostra i controlli della riproduzione", + "autoplay-menu-label" : u"Mostra il tasto di riproduzione automatica", + "autoplay-guipushbuttonlabel" : u"Riproduci quando tutti sono pronti", + "autoplay-minimum-label" : u"Minimo utenti pronti:", + + "sendmessage-label" : u"Invia", + + "ready-guipushbuttonlabel" : u"Sono pronto a guardare!", + + "roomuser-heading-label" : u"Stanza / Utente", + "size-heading-label" : u"Dimensione", + "duration-heading-label" : u"Durata", + "filename-heading-label" : u"Nome del file", + "notifications-heading-label" : u"Notifiche", + "userlist-heading-label" : u"Lista degli utenti nella stanza", + + "browseformedia-label" : u"Seleziona i file multimediali", + + "file-menu-label" : u"&File", # & precedes shortcut key + "openmedia-menu-label" : u"&Apri file multimediali", + "openstreamurl-menu-label" : u"Apri indirizzo di &rete", + "setmediadirectories-menu-label" : u"Imposta &cartelle multimediali", + "exit-menu-label" : u"&Esci", + "advanced-menu-label" : u"&Avanzate", + "window-menu-label" : u"&Finestra", + "setoffset-menu-label" : u"Imposta &offset", + "createcontrolledroom-menu-label" : u"&Crea stanza gestita", + "identifyascontroller-menu-label" : u"&Identificati come operatore della stanza", + "settrusteddomains-menu-label" : u"Imposta &domini fidati", + "addtrusteddomain-menu-label" : u"Aggiungi {} come dominio fidato", # Domain + + "playback-menu-label" : u"&Riproduzione", + + "help-menu-label" : u"&Aiuto", + "userguide-menu-label" : u"Apri guida &utente", + "update-menu-label" : u"Controlla la presenza di &aggiornamenti", + + #About dialog + "about-menu-label": u"&Informazioni su Syncplay", + "about-dialog-title": u"Informazioni su Syncplay", + "about-dialog-release": u"Versione {} release {} con {}", + "about-dialog-license-text" : u"Rilasciato sotto Apache License, Version 2.0", + "about-dialog-license-button": u"Licenza", + "about-dialog-dependencies": u"Dipendenze", + + "setoffset-msgbox-label" : u"Imposta offset", + "offsetinfo-msgbox-label" : u"Offset (vedi http://syncplay.pl/guide/ per istruzioni):", + + "promptforstreamurl-msgbox-label" : u"Apri URL", + "promptforstreamurlinfo-msgbox-label" : u"Indirizzo di rete", + + "addfolder-label" : u"Aggiungi cartella", + + "adduris-msgbox-label" : u"Aggiungi gli indirizzi alla playlist (uno per riga)", + "editplaylist-msgbox-label" : u"Imposta playlist (una per riga)", + "trusteddomains-msgbox-label" : u"Domini a cui è lecito passare automaticamente (uno per riga)", + + "createcontrolledroom-msgbox-label" : u"Crea stanza gestita", + "controlledroominfo-msgbox-label" : u"Inserisci il nome della stanza gestita\r\n(vedi http://syncplay.pl/guide/ per istruzioni):", + + "identifyascontroller-msgbox-label" : u"Identificati come operatore della stanza", + "identifyinfo-msgbox-label" : u"Inserisci la password dell'operatore per questa stanza\r\n(vedi http://syncplay.pl/guide/ per istruzioni):", + + "public-server-msgbox-label" : u"Seleziona il server pubblico per questa sessione", + + "megabyte-suffix" : u" MB", + + # Tooltips + + "host-tooltip" : u"Hostname o indirizzo IP a cui collegarsi e, se necessario, includere la porta (es. syncplay.pl:8999). La sincronizzazione avviene solo con gli utenti collegati allo stesso server/porta.", + "name-tooltip" : u"Il nome utente con cui sarai riconosciuto. Nessuna registrazione necessaria, cosi potrai sempre cambiarlo. Se lasciato vuoto, viene scelto un nome casuale.", + "password-tooltip" : u"La password è necessaria solo in caso di connessione a server privati.", + "room-tooltip" : u"La stanza in cui entrare dopo la connessione. Può assumere qualsiasi nome, ma ricorda che sarai sincronizzato solo con gli utenti nella stessa stanza.", + + "executable-path-tooltip" : u"Percorso del media player desiderato (scegliere tra mpv, VLC, MPC-HC/BE or mplayer2).", + "media-path-tooltip" : u"Percorso del video o stream da aprire. Necessario per mplayer2.", + "player-arguments-tooltip" : u"Argomenti da linea di comando aggiuntivi da passare al media player scelto.", + "mediasearcdirectories-arguments-tooltip" : u"Cartelle dove Syncplay cercherà i file multimediali, es. quando usi la funzione click to switch. Syncplay cercherà anche nelle sottocartelle.", + + "more-tooltip" : u"Mostra le impostazioni usate meno frequentemente.", + "filename-privacy-tooltip" : u"Modalità di invio al server del nome del file attualmente in riproduzione.", + "filesize-privacy-tooltip" : u"Modalità di invio al server della dimensione del file attualmente in riproduzione.", + "privacy-sendraw-tooltip" : u"Invia questa informazione in chiaro. Questa è l'impostazione predefinita per la maggior parte delle funzionalità.", + "privacy-sendhashed-tooltip" : u"Invia una versione cifrata dell'informazione, rendendola meno visibile agli altri client.", + "privacy-dontsend-tooltip" : u"Non inviare questa informazione al server. Questo garantisce massima privacy.", + "checkforupdatesautomatically-tooltip" : u"Controlla regolarmente la presenza di nuove versioni di Syncplay.", + "slowondesync-tooltip" : u"Riduce temporaneamente la velocità di riproduzione quando c'è bisogno di sincronizzarti con gli altri utenti. Non supportato su MPC-HC/BE.", + "dontslowdownwithme-tooltip" : u"Gli altri utenti non vengono rallentati se non sei sincronizzato. Utile per i gestori della stanza.", + "pauseonleave-tooltip" : u"Mette in pausa la riproduzione se vieni disconnesso o se qualcuno lascia la stanza.", + "readyatstart-tooltip" : u"Imposta il tuo stato su 'pronto' all'avvio (in caso contrario, sarai su 'non pronto' finché non cambierai il tuo stato)", + "forceguiprompt-tooltip" : u"La finestra di configurazione non viene mostrata quando apri Syncplay.", + "nostore-tooltip" : u"Avvia Syncplay con la configurazione scelta, ma non salva le impostazioni.", + "rewindondesync-tooltip" : u"Torna indietro quando necessario per ristabilire la sincronizzazione. Disabilitare quest'opzione può causare gravi problemi di sincronizzazione!", + "fastforwardondesync-tooltip" : u"Avanza rapidamente quando non sei sincronizzato col gestore della stanza (o la tua posizione supposta se 'Non rallentare o riavvolgere gli altri utenti' è abilitato).", + "showosd-tooltip" : u"Invia i messaggi di Syncplay all'OSD del media player.", + "showosdwarnings-tooltip" : u"Mostra gli avvisi in caso di riproduzione di un file differente, se sei l'unico utente nella stanza, se ci sono utenti non pronti, ecc.", + "showsameroomosd-tooltip" : u"Mostra le notifiche OSD per gli eventi relativi alla stanza in cui si trova l'utente.", + "shownoncontrollerosd-tooltip" : u"Mostra le notifiche OSD per gli eventi relativi ai non operatori presenti nelle stanze gestite.", + "showdifferentroomosd-tooltip" : u"Mostra le notifiche OSD per gli eventi relativi alle stanze in cui l'utente non si trova.", + "showslowdownosd-tooltip" : u"Mostra le notifiche di rallentamento / riavvolgimento in caso di differenza temporale.", + "showdurationnotification-tooltip" : u"Utile quando manca un segmento di un file multiparte. Può causare dei falsi positivi.", + "language-tooltip" : u"Lingua da utilizzare in Syncplay.", + "unpause-always-tooltip" : u"Se riprendi la riproduzione, il tuo stato cambia in 'pronto' e la riproduzione viene avviata, piuttosto che impostarti solo su pronto.", + "unpause-ifalreadyready-tooltip" : u"Se riprendi la riproduzione quando non sei 'pronto', verrai impostato su pronto - ripeti il comando ancora una volta per avviare la riproduzione.", + "unpause-ifothersready-tooltip" : u"Se riprendi la riproduzione quando non sei 'pronto' la riproduzione verrà avviata solo se gli altri sono pronti.", + "unpause-ifminusersready-tooltip" : u"Se riprendi la riproduzione quando non sei 'pronto', la riproduzione verrà avviata solo se un numero minimo di utenti è 'pronto'.", + "trusteddomains-arguments-tooltip" : u"Domini verso cui è possibile collegarsi automaticamente quando le playlist condivise sono abilitate.", + + "chatinputenabled-tooltip" : u"Abilita l'input della chat in mpv (premi Invio per chattare, per inviare ed Esc per cancellare)", + "chatdirectinput-tooltip" : u"Evita di dover premere Invio per aprire l'input della chat in mpv. Premi TAB in mpv per disabilitare temporaneamente questa funzione.", + "font-label-tooltip" : u"Font usato nell'input della chat in mpv. Non influenza cosa vedono gli altri, vale solo per te.", + "set-input-font-tooltip" : u"Font usato nell'input della chat in mpv. Non influenza cosa vedono gli altri, vale solo per te.", + "set-input-colour-tooltip" : u"Colore del font usato nell'input della chat in mpv. Non influenza cosa vedono gli altri, vale solo per te.", + "chatinputposition-tooltip" : u"Posizione dell'input della chat in mpv quando premi Invio.", + "chatinputposition-top-tooltip" : u"Posiziona l'input della chat in cima alla finestra di mpv.", + "chatinputposition-middle-tooltip" : u"Posizione l'input della chat al centro della finestra di mpv.", + "chatinputposition-bottom-tooltip" : u"Posiziona l'input della chat in basso alla finestra di mpv.", + "chatoutputenabled-tooltip": u"Mostra i messaggi di chat nell'OSD (se supportato dal media player).", + "font-output-label-tooltip": u"Font dell'output della chat.", + "set-output-font-tooltip": u"Font usato per mostrare i messaggi di chat.", + "chatoutputmode-tooltip": u"Come sono mostrati i messaggi di chat.", + "chatoutputmode-chatroom-tooltip": u"Mostra i nuovi messaggi di chat al di sotto di quelli precedenti.", + "chatoutputmode-scrolling-tooltip": u"Scorri il testo della chat da destra a sinistra.", + + "help-tooltip" : u"Apri la guida utente su Syncplay.pl.", + "reset-tooltip" : u"Ripristina tutte le impostazioni.", + "update-server-list-tooltip" : u"Scarica la lista dei server pubblici da syncplay.pl.", + + "joinroom-tooltip" : u"Abbandona la stanza attuale e entra in quella specificata.", + "seektime-msgbox-label" : u"Salta all'istante di tempo specificato (in secondi / min:sec). Usa +/- per una ricerca relativa.", + "ready-tooltip" : u"Indica quando sei pronto a guardare.", + "autoplay-tooltip" : u"Riproduzione automatica quando il numero minimo di utenti è 'pronto'.", + "switch-to-file-tooltip" : u"Doppio click per passare a {}", # Filename + "sendmessage-tooltip" : u"Invia il messaggio alla stanza", + + # In-userlist notes (GUI) + "differentsize-note" : u"Dimensione file diversa!", + "differentsizeandduration-note" : u"Durata e dimensione file diversi!", + "differentduration-note" : u"Durata diversa!", + "nofile-note" : u"(Nessun file in riproduzione)", + + # Server messages to client + "new-syncplay-available-motd-message" : u" Stai usando Syncplay {} ma una nuova versione è disponibile presso http://syncplay.pl ", # ClientVersion + + # Server notifications + "welcome-server-notification" : u"Benvenuto nel server Syncplay, ver. {0}", # version + "client-connected-room-server-notification" : u"{0}({2}) connesso alla stanza '{1}'", # username, host, room + "client-left-server-notification" : u"{0} ha abbandonato il server", # name + "no-salt-notification" : u"NOTA BENE: In futuro, per consentire il corretto funzionamento delle password generate da questo server (per le stanze gestite), aggiungi da linea di comando il seguente argomento prima di avviare il server Syncplay: --salt {}", #Salt + + + # Server arguments + "server-argument-description" : u'Programma per sincronizzare la riproduzione di media player multipli attraverso la rete. Modulo server.', + "server-argument-epilog" : u'Se non è specificata alcuna opzione saranno utilizzati i valori _config', + "server-port-argument" : u'Porta TCP del server', + "server-password-argument" : u'password del server', + "server-isolate-room-argument" : u'Mantiene le stanze isolate', + "server-salt-argument" : u"usare stringhe casuali per generare le password delle stanze gestite", + "server-disable-ready-argument" : u"disabilita la funzionalità 'pronto'", + "server-motd-argument": u"percorso del file da cui verrà letto il messaggio del giorno", + "server-chat-argument" : u"abilita o disabilita la chat", + "server-chat-maxchars-argument" : u"Numero massimo di caratteri in un messaggio di chat (default è {})", # Default number of characters + "server-messed-up-motd-unescaped-placeholders": u"Il messaggio del giorno ha dei caratteri non 'escaped'. Tutti i simboli $ devono essere doppi ($$).", + "server-messed-up-motd-too-long": u"Il messaggio del giorno è troppo lungo - numero massimo di caratteri è {}, {} trovati.", + + # Server errors + "unknown-command-server-error" : u"Comando non riconosciuto {}", # message + "not-json-server-error" : u"Non è una stringa in codifica JSON {}", # message + "not-known-server-error" : u"Devi essere riconosciuto dal server prima di poter inviare questo comando", + "client-drop-server-error" : u"Il client è caduto: {} -- {}", # host, error + "password-required-server-error" : u"È richiesta una password", + "wrong-password-server-error" : u"La password inserita è errata", + "hello-server-error" : u"Non ci sono abbastanza argomenti Hello", + + # Playlists + "playlist-selection-changed-notification" : u"{} ha cambiato il file selezionato nella playlist", # Username + "playlist-contents-changed-notification" : u"{} ha aggiornato la playlist", # Username + "cannot-find-file-for-playlist-switch-error" : u"Impossibile trovare il file {} nelle cartelle multimediali per permettere il cambio di file tramite la playlist!", # Filename + "cannot-add-duplicate-error" : u"Impossibile aggiungere una seconda voce per '{}' alla playlist. Non è possibile avere file duplicati.", #Filename + "cannot-add-unsafe-path-error" : u"Impossibile caricare automaticamente {} perché non è presente nei domini fidati. Puoi passare all'inserimento manuale facendo doppio click sull'indirizzo nella playlist, oppure aggiungerlo ai domini fidati tramite File->Avanzate->Imposta domini fidati. Cliccando col tasto destro del mouse su un indirizzo puoi impostare il suo dominio come fidato tramite il menù contestuale.", # Filename + "sharedplaylistenabled-label" : u"Abilita le playlist condivise", + "removefromplaylist-menu-label" : u"Rimuovi dalla playlist", + "shuffleremainingplaylist-menu-label" : u"Mescola i file non ancora riprodotti", + "shuffleentireplaylist-menuu-label" : u"Mescola l'intera playlist", + "undoplaylist-menu-label" : u"Annulla l'ultima modifica alla playlist", + "addfilestoplaylist-menu-label" : u"Aggiungi un file alla fine della playlist", + "addurlstoplaylist-menu-label" : u"Aggiungi un indirizzo alla fine della playlist", + "editplaylist-menu-label": u"Modifica la playlist", + + "open-containing-folder": u"Apri la cartella contenente questo file", + "addusersfiletoplaylist-menu-label" : u"Aggiungi il file {} alla playlist", # item owner indicator # TODO needs testing + "addusersstreamstoplaylist-menu-label" : u"Aggiungi l'indirizzo {} alla playlist", # item owner indicator # TODO needs testing + "openusersstream-menu-label" : u"Apri l'indirizzo di {}", # [username]'s + "openusersfile-menu-label" : u"Apri il file di {}", # [username]'s + "item-is-yours-indicator" : u"tuo", # Goes with addusersfiletoplaylist/addusersstreamstoplaylist # TODO needs testing + "item-is-others-indicator" : u"di {}", # username - goes with addusersfiletoplaylist/addusersstreamstoplaylist # TODO needs testing + + "playlist-instruction-item-message" : u"Trascina qui i file per aggiungerli alla playlist condivisa.", + "sharedplaylistenabled-tooltip" : u"Gli operatori della stanza possono aggiungere i file a una playlist sincronizzata per garantire che tutti i partecipanti stiano guardando la stessa cosa. Configura le cartelle multimediali alla voce 'Miscellanea'.", +} diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index 7bd55e6..d2fa381 100755 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -993,7 +993,7 @@ class MainWindow(QtWidgets.QMainWindow): MediaDirectoriesDialog = QtWidgets.QDialog() MediaDirectoriesDialog.setWindowTitle(getMessage("syncplay-mediasearchdirectories-title")) # TODO: Move to messages_*.py MediaDirectoriesLayout = QtWidgets.QGridLayout() - MediaDirectoriesLabel = QtWidgets.QLabel(getMessage("syncplay-mediasearchdirectories-title")) + MediaDirectoriesLabel = QtWidgets.QLabel(getMessage("syncplay-mediasearchdirectories-label")) MediaDirectoriesLayout.addWidget(MediaDirectoriesLabel, 0, 0, 1, 2) MediaDirectoriesTextbox = QtWidgets.QPlainTextEdit() MediaDirectoriesTextbox.setLineWrapMode(QtWidgets.QPlainTextEdit.NoWrap) From 79169cfbde94f543b6bd954d072c4d01e073e1b4 Mon Sep 17 00:00:00 2001 From: albertosottile Date: Fri, 16 Feb 2018 17:11:23 +0100 Subject: [PATCH 45/85] Excludes strings related to the 'Hello' arguments from translations --- syncplay/messages_en.py | 4 +-- syncplay/messages_it.py | 71 ++++++++++++++++++++--------------------- 2 files changed, 37 insertions(+), 38 deletions(-) diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py index e0f7925..a29dc0c 100644 --- a/syncplay/messages_en.py +++ b/syncplay/messages_en.py @@ -127,7 +127,7 @@ en = { "empty-value-config-error" : "{} can't be empty", # Config option "not-json-error" : "Not a json encoded string\n", - "hello-arguments-error" : "Not enough Hello arguments\n", + "hello-arguments-error" : "Not enough Hello arguments\n", # DO NOT TRANSLATE "version-mismatch-error" : "Mismatch between versions of client and server\n", "vlc-failed-connection": "Failed to connect to VLC. If you have not installed syncplay.lua and are using the latest verion of VLC then please refer to http://syncplay.pl/LUA/ for instructions.", "vlc-failed-noscript": "VLC has reported that the syncplay.lua interface script has not been installed. Please refer to http://syncplay.pl/LUA/ for instructions.", @@ -446,7 +446,7 @@ en = { "client-drop-server-error" : u"Client drop: {} -- {}", # host, error "password-required-server-error" : "Password required", "wrong-password-server-error" : "Wrong password supplied", - "hello-server-error" : "Not enough Hello arguments", + "hello-server-error" : "Not enough Hello arguments", #DO NOT TRANSLATE # Playlists "playlist-selection-changed-notification" : u"{} changed the playlist selection", # Username diff --git a/syncplay/messages_it.py b/syncplay/messages_it.py index 226d75d..53a5c1e 100644 --- a/syncplay/messages_it.py +++ b/syncplay/messages_it.py @@ -6,7 +6,7 @@ it = { "LANGUAGE" : u"Italiano", # Client notifications - "config-cleared-notification" : u"Impostazioni resettate. I cambiamenti saranno memorizzati quando salverai una configurazione valida.", + "config-cleared-notification" : u"Impostazioni iniziali ripristinate. I cambiamenti saranno memorizzati quando salverai una configurazione valida.", "relative-config-notification" : u"Caricato i file di configurazione relativi: {}", @@ -20,7 +20,7 @@ it = { "rewind-notification" : u"Riavvolgo a causa della differenza temporale con {}", # User "fastforward-notification" : u"Avanzamento rapido a causa della differenza temporale con {}", # User "slowdown-notification" : u"Rallento a causa della differenza temporale con {}", # User - "revert-notification" : u"Velocità di riproduzione normale ripristinata", + "revert-notification" : u"Ripristino la velocità di riproduzione normale", "pause-notification" : u"{} ha messo in pausa", # User "unpause-notification" : u"{} ha ripreso la riproduzione", # User @@ -31,26 +31,26 @@ it = { "media-directory-list-updated-notification" : u"Le cartelle multimediali di Syncplay sono state aggiornate.", "room-join-notification" : u"{} è entranto nella stanza: '{}'", # User - "left-notification" : u"{} ha abbandonato", # User - "left-paused-notification" : u"{} ha abbandonato, {} ha messo in pausa", # User who left, User who paused + "left-notification" : u"{} ha lasciato la stanza", # User + "left-paused-notification" : u"{} ha lasciato la stanza, {} ha messo in pausa", # User who left, User who paused "playing-notification" : u"{} sta riproducendo '{}' ({})", # User, file, duration "playing-notification/room-addendum" : u" nella stanza: '{}'", # Room "not-all-ready" : u"Non pronti: {}", # Usernames "all-users-ready" : u"Tutti i partecipanti sono pronti ({} utenti)", #Number of ready users - "ready-to-unpause-notification" : u"Ora sei pronto - premi ancora una volta il tasto pausa per riprendere la riproduzione", + "ready-to-unpause-notification" : u"Ora sei pronto - premi ancora una volta per riprendere la riproduzione", "set-as-ready-notification" : u"Ora sei pronto", "set-as-not-ready-notification" : u"Non sei pronto", "autoplaying-notification" : u"Riproduzione automatica in {}...", # Number of seconds until playback will start - "identifying-as-controller-notification" : u"Identificato come gestore della stanza con password '{}'...", + "identifying-as-controller-notification" : u"Ti sei identificato come gestore della stanza con password '{}'...", "failed-to-identify-as-controller-notification" : u"{} ha fallito l'identificazione come gestore della stanza.", "authenticated-as-controller-notification" : u"{} autenticato come gestore della stanza", "created-controlled-room-notification" : u"Stanza gestita '{}' creata con password '{}'. Per favore salva queste informazioni per una consultazione futura!", # RoomName, operatorPassword "file-different-notification" : u"Il file che stai riproducendo sembra essere diverso da quello di {}", # User "file-differences-notification" : u"Il tuo file mostra le seguenti differenze: {}", # Differences - "room-file-differences" : u"Differenze nel tuo file: {}", # File differences (filename, size, and/or duration) + "room-file-differences" : u"Differenze: {} \n", # File differences (filename, size, and/or duration) "file-difference-filename" : u"nome", "file-difference-filesize" : u"dimensione", "file-difference-duration" : u"durata", @@ -82,14 +82,14 @@ it = { "commandlist-notification/pause" : u"\tp - attiva o disattiva la pausa", "commandlist-notification/seek" : u"\t[s][+-]tempo - salta all'istante di tempo dato, se + o - non è specificato si considera il tempo assoluto in secondi o min:sec", "commandlist-notification/help" : u"\th - mostra questo help", - "commandlist-notification/toggle" : u"\tt - attiva o disattiva lo stato 'Pronto'", + "commandlist-notification/toggle" : u"\tt - attiva o disattiva la funzionalità \"pronto\"", "commandlist-notification/create" : u"\tc [nome] - crea una stanza gestita usando il nome della stanza attuale", "commandlist-notification/auth" : u"\ta [password] - autentica come gestore della stanza, utilizzando la password del gestore", "commandlist-notification/chat" : u"\tch [message] - invia un messaggio nella chat della stanza", "syncplay-version-notification" : u"Versione di Syncplay: {}", # syncplay.version "more-info-notification" : u"Maggiori informazioni a: {}", # projectURL - "gui-data-cleared-notification" : u"Syncplay ha resettato i dati dell'interfaccia relativi ai percorsi e allo stato delle finestre.", + "gui-data-cleared-notification" : u"Syncplay ha ripristinato i dati dell'interfaccia relativi ai percorsi e allo stato delle finestre.", "language-changed-msgbox-label" : u"La lingua sarà cambiata quando avvierai Syncplay.", "promptforupdate-label" : u"Ti piacerebbe che, di tanto in tanto, Syncplay controllasse automaticamente la presenza di aggiornamenti?", @@ -127,7 +127,7 @@ it = { "empty-value-config-error" : u"Il campo {} non può essere vuoto", # Config option "not-json-error" : u"Non è una stringa con codifica JSON\n", - "hello-arguments-error" : u"Argomenti Hello non sufficienti\n", + "hello-arguments-error" : "Not enough Hello arguments\n", # DO NOT TRANSLATE "version-mismatch-error" : u"La versione del client è diversa da quella del server\n", "vlc-failed-connection": u"Impossibile collegarsi a VLC. Se non hai installato syncplay.lua e stai usando l'ultima versione di VLC, fai riferimento a http://syncplay.pl/LUA/ per istruzioni.", "vlc-failed-noscript": u"VLC ha segnalato che lo script di interfaccia syncplay.lua non è stato installato. Per favore, fai riferimento a http://syncplay.pl/LUA/ per istruzioni.", @@ -136,7 +136,6 @@ it = { "feature-sharedPlaylists" : u"playlist condivise", # used for not-supported-by-server-error "feature-chat" : u"chat", # used for not-supported-by-server-error "feature-readiness" : u"pronto", # used for not-supported-by-server-error - "feature-readiness" : u"pronto", # used for not-supported-by-server-error "feature-managedRooms" : u"stanze gestite", # used for not-supported-by-server-error "not-supported-by-server-error" : u"La feature {} non è supportata da questo server..", #feature @@ -169,7 +168,7 @@ it = { "player-path-argument" : u'percorso dell\'eseguibile del tuo player', "file-argument" : u'file da riprodurre', "args-argument" : u'opzioni del player, se hai bisogno di utilizzare opzioni che iniziano con - anteponi un singolo \'--\'', - "clear-gui-data-argument" : u'resetta il percorso e i dati impostati tramite interfaccia grafica e salvati come QSettings', + "clear-gui-data-argument" : u'ripristina il percorso e i dati impostati tramite interfaccia grafica e salvati come QSettings', "language-argument" : u'lingua per i messaggi di Syncplay (de/en/ru/it)', "version-argument" : u'mostra la tua versione', @@ -205,10 +204,10 @@ it = { "fastforwardondesync-label" : u"Avanzamento rapido in caso di ritardo (consigliato)", "dontslowdownwithme-label" : u"Non rallentare o riavvolgere gli altri utenti (sperimentale)", "pausing-title" : u"Pausa", - "pauseonleave-label" : u"Metti in pausa quando gli altri utenti abbandonano (es. disconnessione)", + "pauseonleave-label" : u"Metti in pausa quando gli altri utenti lasciano la stanza (es. disconnessione)", "readiness-title" : u"Stato iniziale di 'pronto'", - "readyatstart-label" : u"Impostami sempre su 'pronto a guardare'", - "forceguiprompt-label" : u"Non mostrare la finestra di configurazione di Syncplay a ogni apertura", # (Inverted) + "readyatstart-label" : u"Imposta sempre il mio stato come \"pronto\" a guardare", + "forceguiprompt-label" : u"Non mostrare la finestra di configurazione di Syncplay a ogni avvio", # (Inverted) "showosd-label" : u"Abilita i messaggi OSD", "showosdwarnings-label" : u"Mostra gli avvisi (es. file differenti, utenti non pronti)", @@ -230,12 +229,12 @@ it = { "sync-otherslagging-title" : u"Se gli altri partecipanti non sono sincronizzati...", "sync-youlaggging-title" : u"Se tu sei non sei sincronizzato...", "messages-label" : u"Messaggi", - "messages-osd-title" : u"Impostazioni On-screen Display", + "messages-osd-title" : u"Impostazioni On-Screen Display", "messages-other-title" : u"Altre impostazioni dello schermo", "chat-label" : u"Chat", "privacy-label" : u"Privacy", # Currently unused, but will be brought back if more space is needed in Misc tab "privacy-title" : u"Impostazioni privacy", - "unpause-title" : u"Premendo play, imposta il tuo stato su pronto e:", + "unpause-title" : u"Premendo play, imposta il tuo stato su \"pronto\" e:", "unpause-ifalreadyready-option" : u"Riprendi la riproduzione se eri già pronto", "unpause-ifothersready-option" : u"Riprendi la riproduzione se eri già pronto o se gli altri partecipanti sono pronti (default)", "unpause-ifminusersready-option" : u"Riprendi la riproduzione se eri già pronto o se un numero minimo di partecipanti è pronto", @@ -259,13 +258,13 @@ it = { "chat-chatroom-option": u"Stile chatroom", "chat-scrolling-option": u"A scorrimento", - "mpv-key-tab-hint": u"[TAB] to toggle access to alphabet row key shortcuts.", # TODO needs to clarify this + "mpv-key-tab-hint": u"[TAB] per attivare le scorciatoie da tastiera e disattivare la chat.", "mpv-key-hint": u"[Invio] per inviare un messaggio. [Esc] per uscire dalla modalità chat.", "alphakey-mode-warning-first-line": u"Puoi utilizzare temporaneamente i vecchi comandi di mpv con i tasti a-z.", "alphakey-mode-warning-second-line": u"Premi [TAB] per ritornare alla modalità chat di Syncplay.", "help-label" : u"Aiuto", - "reset-label" : u"Impostazioni iniziali", + "reset-label" : u"Elimina configurazione", "run-label" : u"Avvia Syncplay", "storeandrun-label" : u"Salva la configurazione e avvia Syncplay", @@ -366,23 +365,23 @@ it = { "slowondesync-tooltip" : u"Riduce temporaneamente la velocità di riproduzione quando c'è bisogno di sincronizzarti con gli altri utenti. Non supportato su MPC-HC/BE.", "dontslowdownwithme-tooltip" : u"Gli altri utenti non vengono rallentati se non sei sincronizzato. Utile per i gestori della stanza.", "pauseonleave-tooltip" : u"Mette in pausa la riproduzione se vieni disconnesso o se qualcuno lascia la stanza.", - "readyatstart-tooltip" : u"Imposta il tuo stato su 'pronto' all'avvio (in caso contrario, sarai su 'non pronto' finché non cambierai il tuo stato)", + "readyatstart-tooltip" : u"Imposta il tuo stato su \"pronto\" all'avvio (in caso contrario, sarai su \"non pronto\" finché non cambierai il tuo stato)", "forceguiprompt-tooltip" : u"La finestra di configurazione non viene mostrata quando apri Syncplay.", "nostore-tooltip" : u"Avvia Syncplay con la configurazione scelta, ma non salva le impostazioni.", "rewindondesync-tooltip" : u"Torna indietro quando necessario per ristabilire la sincronizzazione. Disabilitare quest'opzione può causare gravi problemi di sincronizzazione!", - "fastforwardondesync-tooltip" : u"Avanza rapidamente quando non sei sincronizzato col gestore della stanza (o la tua posizione supposta se 'Non rallentare o riavvolgere gli altri utenti' è abilitato).", - "showosd-tooltip" : u"Invia i messaggi di Syncplay all'OSD del media player.", + "fastforwardondesync-tooltip" : u"Avanza rapidamente quando non sei sincronizzato col gestore della stanza (usa una posizione fittizia se 'Non rallentare o riavvolgere gli altri utenti' è abilitato).", + "showosd-tooltip" : u"Invia i messaggi di Syncplay al media player tramite OSD.", "showosdwarnings-tooltip" : u"Mostra gli avvisi in caso di riproduzione di un file differente, se sei l'unico utente nella stanza, se ci sono utenti non pronti, ecc.", "showsameroomosd-tooltip" : u"Mostra le notifiche OSD per gli eventi relativi alla stanza in cui si trova l'utente.", "shownoncontrollerosd-tooltip" : u"Mostra le notifiche OSD per gli eventi relativi ai non operatori presenti nelle stanze gestite.", "showdifferentroomosd-tooltip" : u"Mostra le notifiche OSD per gli eventi relativi alle stanze in cui l'utente non si trova.", "showslowdownosd-tooltip" : u"Mostra le notifiche di rallentamento / riavvolgimento in caso di differenza temporale.", - "showdurationnotification-tooltip" : u"Utile quando manca un segmento di un file multiparte. Può causare dei falsi positivi.", + "showdurationnotification-tooltip" : u"Utile quando manca un segmento di un file con più parti. Può causare dei falsi positivi.", "language-tooltip" : u"Lingua da utilizzare in Syncplay.", - "unpause-always-tooltip" : u"Se riprendi la riproduzione, il tuo stato cambia in 'pronto' e la riproduzione viene avviata, piuttosto che impostarti solo su pronto.", - "unpause-ifalreadyready-tooltip" : u"Se riprendi la riproduzione quando non sei 'pronto', verrai impostato su pronto - ripeti il comando ancora una volta per avviare la riproduzione.", - "unpause-ifothersready-tooltip" : u"Se riprendi la riproduzione quando non sei 'pronto' la riproduzione verrà avviata solo se gli altri sono pronti.", - "unpause-ifminusersready-tooltip" : u"Se riprendi la riproduzione quando non sei 'pronto', la riproduzione verrà avviata solo se un numero minimo di utenti è 'pronto'.", + "unpause-always-tooltip" : u"Se riprendi la riproduzione, il tuo stato cambia in \"pronto\" e la riproduzione viene avviata, piuttosto che impostarti solo su pronto.", + "unpause-ifalreadyready-tooltip" : u"Se riprendi la riproduzione quando non sei \"pronto\", verrai impostato su pronto - ripeti il comando ancora una volta per avviare la riproduzione.", + "unpause-ifothersready-tooltip" : u"Se riprendi la riproduzione quando non sei \"pronto\" la riproduzione verrà avviata solo se gli altri sono pronti.", + "unpause-ifminusersready-tooltip" : u"Se riprendi la riproduzione quando non sei \"pronto\", la riproduzione verrà avviata solo se un numero minimo di utenti è \"pronto\".", "trusteddomains-arguments-tooltip" : u"Domini verso cui è possibile collegarsi automaticamente quando le playlist condivise sono abilitate.", "chatinputenabled-tooltip" : u"Abilita l'input della chat in mpv (premi Invio per chattare, per inviare ed Esc per cancellare)", @@ -401,14 +400,14 @@ it = { "chatoutputmode-chatroom-tooltip": u"Mostra i nuovi messaggi di chat al di sotto di quelli precedenti.", "chatoutputmode-scrolling-tooltip": u"Scorri il testo della chat da destra a sinistra.", - "help-tooltip" : u"Apri la guida utente su Syncplay.pl.", - "reset-tooltip" : u"Ripristina tutte le impostazioni.", + "help-tooltip" : u"Apri la guida utente su syncplay.pl.", + "reset-tooltip" : u"Ripristina le impostazioni iniziali di Syncplay.", "update-server-list-tooltip" : u"Scarica la lista dei server pubblici da syncplay.pl.", - "joinroom-tooltip" : u"Abbandona la stanza attuale e entra in quella specificata.", + "joinroom-tooltip" : u"Lascia la stanza attuale e entra in quella specificata.", "seektime-msgbox-label" : u"Salta all'istante di tempo specificato (in secondi / min:sec). Usa +/- per una ricerca relativa.", "ready-tooltip" : u"Indica quando sei pronto a guardare.", - "autoplay-tooltip" : u"Riproduzione automatica quando il numero minimo di utenti è 'pronto'.", + "autoplay-tooltip" : u"Avvia la riproduzione automatica quando il numero minimo di utenti è pronto.", "switch-to-file-tooltip" : u"Doppio click per passare a {}", # Filename "sendmessage-tooltip" : u"Invia il messaggio alla stanza", @@ -424,7 +423,7 @@ it = { # Server notifications "welcome-server-notification" : u"Benvenuto nel server Syncplay, ver. {0}", # version "client-connected-room-server-notification" : u"{0}({2}) connesso alla stanza '{1}'", # username, host, room - "client-left-server-notification" : u"{0} ha abbandonato il server", # name + "client-left-server-notification" : u"{0} ha lasciato il server", # name "no-salt-notification" : u"NOTA BENE: In futuro, per consentire il corretto funzionamento delle password generate da questo server (per le stanze gestite), aggiungi da linea di comando il seguente argomento prima di avviare il server Syncplay: --salt {}", #Salt @@ -435,7 +434,7 @@ it = { "server-password-argument" : u'password del server', "server-isolate-room-argument" : u'Mantiene le stanze isolate', "server-salt-argument" : u"usare stringhe casuali per generare le password delle stanze gestite", - "server-disable-ready-argument" : u"disabilita la funzionalità 'pronto'", + "server-disable-ready-argument" : u"disabilita la funzionalità \"pronto\"", "server-motd-argument": u"percorso del file da cui verrà letto il messaggio del giorno", "server-chat-argument" : u"abilita o disabilita la chat", "server-chat-maxchars-argument" : u"Numero massimo di caratteri in un messaggio di chat (default è {})", # Default number of characters @@ -445,12 +444,12 @@ it = { # Server errors "unknown-command-server-error" : u"Comando non riconosciuto {}", # message "not-json-server-error" : u"Non è una stringa in codifica JSON {}", # message - "not-known-server-error" : u"Devi essere riconosciuto dal server prima di poter inviare questo comando", + "not-known-server-error" : u"Devi essere autenticato dal server prima di poter inviare questo comando", "client-drop-server-error" : u"Il client è caduto: {} -- {}", # host, error "password-required-server-error" : u"È richiesta una password", "wrong-password-server-error" : u"La password inserita è errata", - "hello-server-error" : u"Non ci sono abbastanza argomenti Hello", - + "hello-server-error" : "Not enough Hello arguments", #DO NOT TRANSLATE + # Playlists "playlist-selection-changed-notification" : u"{} ha cambiato il file selezionato nella playlist", # Username "playlist-contents-changed-notification" : u"{} ha aggiornato la playlist", # Username From d2b1710b1b156b6ae93e2b71cde4d407a9548f2f Mon Sep 17 00:00:00 2001 From: Alberto Sottile <7440277+albertosottile@users.noreply.github.com> Date: Mon, 19 Feb 2018 15:24:29 +0100 Subject: [PATCH 46/85] Merge pull request #176 from Nico769/master Added Italian translation --- buildPy2exe.py | 19 +++++++++++++++++++ syncplay/messages.py | 4 +++- syncplay/messages_de.py | 3 ++- syncplay/messages_en.py | 7 ++++--- syncplay/messages_ru.py | 3 ++- syncplay/ui/GuiConfiguration.py | 20 ++++++++++---------- 6 files changed, 40 insertions(+), 16 deletions(-) diff --git a/buildPy2exe.py b/buildPy2exe.py index 7126f39..13975f8 100755 --- a/buildPy2exe.py +++ b/buildPy2exe.py @@ -57,6 +57,7 @@ NSIS_SCRIPT_TEMPLATE = r""" LoadLanguageFile "$${NSISDIR}\Contrib\Language files\Polish.nlf" LoadLanguageFile "$${NSISDIR}\Contrib\Language files\Russian.nlf" LoadLanguageFile "$${NSISDIR}\Contrib\Language files\German.nlf" + LoadLanguageFile "$${NSISDIR}\Contrib\Language files\Italian.nlf" Unicode true @@ -83,6 +84,11 @@ NSIS_SCRIPT_TEMPLATE = r""" VIAddVersionKey /LANG=$${LANG_RUSSIAN} "FileVersion" "$version.0" VIAddVersionKey /LANG=$${LANG_RUSSIAN} "LegalCopyright" "Syncplay" VIAddVersionKey /LANG=$${LANG_RUSSIAN} "FileDescription" "Syncplay" + + VIAddVersionKey /LANG=$${LANG_ITALIAN} "ProductName" "Syncplay" + VIAddVersionKey /LANG=$${LANG_ITALIAN} "FileVersion" "$version.0" + VIAddVersionKey /LANG=$${LANG_ITALIAN} "LegalCopyright" "Syncplay" + VIAddVersionKey /LANG=$${LANG_ITALIAN} "FileDescription" "Syncplay" LangString ^SyncplayLanguage $${LANG_ENGLISH} "en" LangString ^Associate $${LANG_ENGLISH} "Associate Syncplay with multimedia files." @@ -126,6 +132,17 @@ NSIS_SCRIPT_TEMPLATE = r""" LangString ^QuickLaunchBar $${LANG_GERMAN} "Schnellstartleiste" LangString ^AutomaticUpdates $${LANG_GERMAN} "Automatisch nach Updates suchen"; LangString ^UninstConfig $${LANG_GERMAN} "Konfigurationsdatei löschen." + + LangString ^SyncplayLanguage $${LANG_ITALIAN} "it" + LangString ^Associate $${LANG_ITALIAN} "Associa Syncplay con i file multimediali." + LangString ^VLC $${LANG_ITALIAN} "Installa l'interfaccia di Syncplay per VLC 2+" + LangString ^BrowseVLCBtn $${LANG_ITALIAN} "Cartella di VLC" + LangString ^Shortcut $${LANG_ITALIAN} "Crea i collegamenti nei percorsi seguenti:" + LangString ^StartMenu $${LANG_ITALIAN} "Menu Start" + LangString ^Desktop $${LANG_ITALIAN} "Desktop" + LangString ^QuickLaunchBar $${LANG_ITALIAN} "Barra di avvio rapido" + LangString ^AutomaticUpdates $${LANG_ITALIAN} "Controllo automatico degli aggiornamenti" + LangString ^UninstConfig $${LANG_ITALIAN} "Cancella i file di configurazione." ; Remove text to save space LangString ^ClickInstall $${LANG_GERMAN} " " @@ -233,6 +250,8 @@ NSIS_SCRIPT_TEMPLATE = r""" Push Русский Push $${LANG_GERMAN} Push Deutsch + Push $${LANG_ITALIAN} + Push Italiano Push A ; A means auto count languages LangDLL::LangDialog "Language Selection" "Please select the language of Syncplay and the installer" Pop $$LANGUAGE diff --git a/syncplay/messages.py b/syncplay/messages.py index 4ef13b2..63c72a0 100755 --- a/syncplay/messages.py +++ b/syncplay/messages.py @@ -4,11 +4,13 @@ from syncplay import constants import messages_en import messages_ru import messages_de +import messages_it messages = { "en": messages_en.en, "ru": messages_ru.ru, "de": messages_de.de, + "it": messages_it.it, "CURRENT": None } @@ -68,4 +70,4 @@ def getMessage(type_, locale=None): else: print u"WARNING: Cannot find message '{}'!".format(type_) return "!{}".format(type_) # TODO: Remove - #raise KeyError(type_) \ No newline at end of file + #raise KeyError(type_) diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py index 768118b..f015834 100644 --- a/syncplay/messages_de.py +++ b/syncplay/messages_de.py @@ -245,6 +245,7 @@ de = { "chat-top-option": u"Top", # TODO: Translate "chat-middle-option": u"Middle", # TODO: Translate "chat-bottom-option": u"Bottom", # TODO: Translate + "chatoutputheader-label" : u"Chat message output", # TODO: Translate "chatoutputfont-label": u"Chat output font", # TODO: Translate "chatoutputenabled-label": u"Enable chat output in media player (mpv only for now)", # TODO: Translate "chatoutputposition-label": u"Output mode", # TODO: Translate @@ -305,7 +306,7 @@ de = { "help-menu-label" : u"&Hilfe", "userguide-menu-label" : u"&Benutzerhandbuch öffnen", "update-menu-label" : u"auf &Aktualisierung prüfen", - + #About dialog - TODO: Translate "about-menu-label": u"&About Syncplay", "about-dialog-title": u"About Syncplay", diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py index a29dc0c..4d04b04 100644 --- a/syncplay/messages_en.py +++ b/syncplay/messages_en.py @@ -137,7 +137,7 @@ en = { "feature-chat" : u"chat", # used for not-supported-by-server-error "feature-readiness" : u"readiness", # used for not-supported-by-server-error "feature-managedRooms" : u"managed rooms", # used for not-supported-by-server-error - + "not-supported-by-server-error" : u"The {} feature is not supported by this server..", #feature "shared-playlists-not-supported-by-server-error" : "The shared playlists feature may not be supported by the server. To ensure that it works correctly requires a server running Syncplay {}+, but the server is running Syncplay {}.", #minVersion, serverVersion "shared-playlists-disabled-by-server-error" : "The shared playlist feature has been disabled in the server configuration. To use this feature you will need to connect to a different server.", @@ -239,7 +239,7 @@ en = { "unpause-ifminusersready-option" : u"Unpause if already ready or if all others ready and min users ready", "unpause-always" : u"Always unpause", "syncplay-trusteddomains-title": u"Trusted domains (for streaming services and hosted content)", - + "chat-title" : u"Chat message input", "chatinputenabled-label" : u"Enable chat input via mpv", "chatdirectinput-label" : u"Allow instant chat input (bypass having to press enter key to chat)", @@ -250,6 +250,7 @@ en = { "chat-top-option" : u"Top", "chat-middle-option" : u"Middle", "chat-bottom-option" : u"Bottom", + "chatoutputheader-label" : u"Chat message output", "chatoutputfont-label": u"Chat output font", "chatoutputenabled-label": u"Enable chat output in media player (mpv only for now)", "chatoutputposition-label": u"Output mode", @@ -310,7 +311,7 @@ en = { "help-menu-label" : "&Help", "userguide-menu-label" : "Open user &guide", "update-menu-label" : "Check for &update", - + #About dialog "about-menu-label": u"&About Syncplay", "about-dialog-title": u"About Syncplay", diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py index 9bed670..0b47c07 100644 --- a/syncplay/messages_ru.py +++ b/syncplay/messages_ru.py @@ -254,6 +254,7 @@ ru = { "chat-top-option": u"Top", # TODO: Translate "chat-middle-option": u"Middle", # TODO: Translate "chat-bottom-option": u"Bottom", # TODO: Translate + "chatoutputheader-label" : u"Chat message output", # TODO: Traslate "chatoutputfont-label": u"Chat output font", # TODO: Translate "chatoutputenabled-label": u"Enable chat output in media player (mpv only for now)", # TODO: Translate "chatoutputposition-label": u"Output mode", # TODO: Translate @@ -313,7 +314,7 @@ ru = { "help-menu-label" : u"&Помощь", "userguide-menu-label" : u"&Руководство пользователя", "update-menu-label" : u"Проверить &обновления", - + #About dialog - TODO: Translate "about-menu-label": u"&About Syncplay", "about-dialog-title": u"About Syncplay", diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py index b5ef9d7..373715d 100755 --- a/syncplay/ui/GuiConfiguration.py +++ b/syncplay/ui/GuiConfiguration.py @@ -257,7 +257,7 @@ class ConfigDialog(QtWidgets.QDialog): # executable. I would have used plistlib here, but since the version of this library in # py < 3.4 can't read from binary plist files it's pretty much useless. Therefore, let's # play a game of "Guess my executable!" - + # Step 1: get all the executable files. In a Mac OS X Application bundle, executables are stored # inside /Contents/MacOS. execPath = os.path.join(os.path.normpath(fileName), 'Contents', 'MacOS') @@ -266,7 +266,7 @@ class ConfigDialog(QtWidgets.QDialog): fn = os.path.join(execPath, fn) if os.path.isfile(fn) and os.access(fn, os.X_OK): execFiles.append(fn) - + # Step 2: figure out which file name looks like the application name baseAppName = os.path.basename(fileName).replace('.app', '').lower() foundExe = False @@ -276,14 +276,14 @@ class ConfigDialog(QtWidgets.QDialog): fileName = fn foundExe = True break - + # Step 3: use the first executable in the list if no executable was found try: if not foundExe: fileName = execFiles[0] except IndexError: # whoops, looks like this .app doesn't contain a executable file at all pass - + self.executablepathCombobox.setEditText(os.path.normpath(fileName)) def loadLastUpdateCheckDate(self): @@ -379,7 +379,7 @@ class ConfigDialog(QtWidgets.QDialog): elif os.path.isdir(QStandardPaths.standardLocations(QStandardPaths.HomeLocation)[0]): defaultdirectory = QStandardPaths.standardLocations(QStandardPaths.HomeLocation)[0] else: - defaultdirectory = "" + defaultdirectory = "" browserfilter = "All files (*)" fileName, filtr = QtWidgets.QFileDialog.getOpenFileName(self, "Browse for media files", defaultdirectory, browserfilter, "", options) @@ -387,10 +387,10 @@ class ConfigDialog(QtWidgets.QDialog): self.mediapathTextbox.setText(os.path.normpath(fileName)) self.mediadirectory = os.path.dirname(fileName) self.saveMediaBrowseSettings() - + def _runWithoutStoringConfig(self): self._saveDataAndLeave(False) - + def _saveDataAndLeave(self, storeConfiguration=True): self.config['noStore'] = not storeConfiguration if storeConfiguration: @@ -946,7 +946,7 @@ class ConfigDialog(QtWidgets.QDialog): self.chatInputFontButton.objectName(), self.chatFontLabel.objectName(), self.chatInputColourButton.objectName(), self.chatDirectInputCheckbox.objectName()] # Output - self.chatOutputGroup = QtWidgets.QGroupBox(u"Chat message output") + self.chatOutputGroup = QtWidgets.QGroupBox(getMessage("chatoutputheader-label")) self.chatOutputLayout = QtWidgets.QGridLayout() self.chatLayout.addWidget(self.chatOutputGroup) self.chatOutputGroup.setLayout(self.chatOutputLayout) @@ -1213,7 +1213,7 @@ class ConfigDialog(QtWidgets.QDialog): settings = QSettings("Syncplay", "MoreSettings") settings.clear() self.datacleared = True - + def populateEmptyServerList(self): if self.publicServers is None: if self.config["checkForUpdatesAutomatically"] == True: @@ -1241,7 +1241,7 @@ class ConfigDialog(QtWidgets.QDialog): self.serverpassTextbox.setEnabled(True) self.serverpassTextbox.setReadOnly(False) self.serverpassTextbox.setText(self.storedPassword) - + def __init__(self, config, playerpaths, error, defaultConfig): self.config = config self.defaultConfig = defaultConfig From 64dfe4b6286c1afa34a476ff9bf97d60adc4ede9 Mon Sep 17 00:00:00 2001 From: albertosottile Date: Tue, 20 Feb 2018 19:43:21 +0100 Subject: [PATCH 47/85] Fixed deployment of windows installer --- .appveyor.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index cb704f3..e7db239 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -26,16 +26,17 @@ install: - del syncplay_v%ver%\lib\MPR.dll - mkdir syncplay_v%ver%\platforms - copy C:\Miniconda\envs\syncplay\library\plugins\platforms\qwindows.dll syncplay_v%ver%\platforms\ + - copy Syncplay-%ver%-Setup.exe Syncplay-%ver%-Setup-PySide2.exe # Not a project with an msbuild file, build done at install. -build: off +build: off artifacts: - path: 'syncplay_v$(ver)' type: zip name: Syncplay-$(ver)-win-pyside2 - - path: Syncplay-$(ver)-Setup.exe + - path: Syncplay-$(ver)-Setup-PySide2.exe name: Syncplay-$(ver)-win-setup-pyside2 # Push artefact to S3 bucket and list all From 7fe1e942f4e77e0b8fdc2c22e254fc934aef111d Mon Sep 17 00:00:00 2001 From: albertosottile Date: Fri, 23 Feb 2018 11:45:44 +0100 Subject: [PATCH 48/85] Change ConfigDialog to modeless --- syncplay/ui/GuiConfiguration.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py index 373715d..605007c 100755 --- a/syncplay/ui/GuiConfiguration.py +++ b/syncplay/ui/GuiConfiguration.py @@ -1,5 +1,5 @@ from syncplay.vendor.Qt import QtCore, QtWidgets, QtGui, __binding__, IsPySide, IsPySide2 -from syncplay.vendor.Qt.QtCore import Qt, QSettings, QCoreApplication, QSize, QPoint, QUrl, QLine +from syncplay.vendor.Qt.QtCore import Qt, QSettings, QCoreApplication, QSize, QPoint, QUrl, QLine, QEventLoop, Signal from syncplay.vendor.Qt.QtWidgets import QApplication, QLineEdit, QLabel, QCheckBox, QButtonGroup, QRadioButton, QDoubleSpinBox, QPlainTextEdit from syncplay.vendor.Qt.QtGui import QCursor, QIcon, QImage, QDesktopServices if IsPySide2: @@ -25,7 +25,10 @@ class GuiConfiguration: if QCoreApplication.instance() is None: self.app = QtWidgets.QApplication(sys.argv) dialog = ConfigDialog(self.config, self._availablePlayerPaths, self.error, self.defaultConfig) - dialog.exec_() + configLoop = QEventLoop() + dialog.show() + dialog.closed.connect(configLoop.quit) + configLoop.exec_() def setAvailablePaths(self, paths): self._availablePlayerPaths = paths @@ -73,6 +76,8 @@ class ConfigDialog(QtWidgets.QDialog): pressedclosebutton = True moreToggling = False + + closed = Signal() def automaticUpdatePromptCheck(self): if self.automaticupdatesCheckbox.checkState() == Qt.PartiallyChecked: @@ -421,11 +426,12 @@ class ConfigDialog(QtWidgets.QDialog): self.pressedclosebutton = False self.close() - return + self.closed.emit() def closeEvent(self, event): if self.pressedclosebutton: super(ConfigDialog, self).closeEvent(event) + self.closed.emit() sys.exit() def keyPressEvent(self, event): @@ -1189,6 +1195,7 @@ class ConfigDialog(QtWidgets.QDialog): self.config['resetConfig'] = True self.pressedclosebutton = False self.close() + self.closed.emit() def showEvent(self, *args, **kwargs): self.ensureTabListIsVisible() From adcd34e1855aa6d34e16bbf1eb794f8b5740b0c5 Mon Sep 17 00:00:00 2001 From: albertosottile Date: Sun, 25 Feb 2018 14:44:56 +0000 Subject: [PATCH 49/85] Add --max-username-length option & increased default username and chat lengths to 150 characters --- syncplay/constants.py | 4 ++-- syncplay/messages_de.py | 1 + syncplay/messages_en.py | 1 + syncplay/messages_it.py | 1 + syncplay/messages_ru.py | 1 + syncplay/server.py | 6 ++++-- syncplay/ui/GuiConfiguration.py | 1 - 7 files changed, 10 insertions(+), 5 deletions(-) diff --git a/syncplay/constants.py b/syncplay/constants.py index f5f0f41..5ea98c8 100644 --- a/syncplay/constants.py +++ b/syncplay/constants.py @@ -66,8 +66,8 @@ DEFAULT_CHAT_OUTPUT_FONT_COLOR = "#FFFF00" DEFAULT_CHAT_FONT_WEIGHT = 1 # Max numbers are used by server (and client pre-connection). Once connected client gets values from server featureList (or uses 'fallback' versions for old servers) -MAX_CHAT_MESSAGE_LENGTH = 125 # Number of displayed characters -MAX_USERNAME_LENGTH = 20 # Number of displayed characters +MAX_CHAT_MESSAGE_LENGTH = 150 # Number of displayed characters +MAX_USERNAME_LENGTH = 150 # Number of displayed characters MAX_ROOM_NAME_LENGTH = 35 # Number of displayed characters MAX_FILENAME_LENGTH = 250 # Number of displayed characters FALLBACK_MAX_CHAT_MESSAGE_LENGTH = 50 # Number of displayed characters diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py index f015834..7caed97 100644 --- a/syncplay/messages_de.py +++ b/syncplay/messages_de.py @@ -433,6 +433,7 @@ de = { "server-motd-argument": u"Pfad zur Datei, von der die Nachricht des Tages geladen wird", "server-chat-argument" : "Should chat be disabled?", # TODO: Translate "server-chat-maxchars-argument": u"Maximum number of characters in a chat message (default is {})", # TODO: Translate + "server-maxusernamelength-argument" : u"Maximum number of charactrs in a username (default is {})", # TODO: Translate "server-messed-up-motd-unescaped-placeholders": u"Die Nachricht des Tages hat unmaskierte Platzhalter. Alle $-Zeichen sollten verdoppelt werden ($$).", "server-messed-up-motd-too-long": u"Die Nachricht des Tages ist zu lang - Maximal {} Zeichen, aktuell {}.", diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py index 4d04b04..5548f00 100644 --- a/syncplay/messages_en.py +++ b/syncplay/messages_en.py @@ -437,6 +437,7 @@ en = { "server-motd-argument": "path to file from which motd will be fetched", "server-chat-argument" : "Should chat be disabled?", "server-chat-maxchars-argument" : u"Maximum number of characters in a chat message (default is {})", # Default number of characters + "server-maxusernamelength-argument" : u"Maximum number of charactrs in a username (default is {})", "server-messed-up-motd-unescaped-placeholders": "Message of the Day has unescaped placeholders. All $ signs should be doubled ($$).", "server-messed-up-motd-too-long": u"Message of the Day is too long - maximum of {} chars, {} given.", diff --git a/syncplay/messages_it.py b/syncplay/messages_it.py index 53a5c1e..bda5522 100644 --- a/syncplay/messages_it.py +++ b/syncplay/messages_it.py @@ -438,6 +438,7 @@ it = { "server-motd-argument": u"percorso del file da cui verrà letto il messaggio del giorno", "server-chat-argument" : u"abilita o disabilita la chat", "server-chat-maxchars-argument" : u"Numero massimo di caratteri in un messaggio di chat (default è {})", # Default number of characters + "server-maxusernamelength-argument": u"Maximum number of charactrs in a username (default is {})", # TODO: Translate "server-messed-up-motd-unescaped-placeholders": u"Il messaggio del giorno ha dei caratteri non 'escaped'. Tutti i simboli $ devono essere doppi ($$).", "server-messed-up-motd-too-long": u"Il messaggio del giorno è troppo lungo - numero massimo di caratteri è {}, {} trovati.", diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py index 0b47c07..7a1fafe 100644 --- a/syncplay/messages_ru.py +++ b/syncplay/messages_ru.py @@ -439,6 +439,7 @@ ru = { "server-motd-argument" : u"путь к файлу, из которого будет извлекаться MOTD-сообщение", "server-chat-argument" : "Should chat be disabled?", # TODO: Translate "server-chat-maxchars-argument": u"Maximum number of characters in a chat message (default is {})", # TODO: Translate + "server-maxusernamelength-argument": u"Maximum number of charactrs in a username (default is {})", # TODO: Translate "server-messed-up-motd-unescaped-placeholders" : u"MOTD-сообщение содержит неэкранированные спец.символы. Все знаки $ должны быть продублированы ($$).", "server-messed-up-motd-too-long" : u"MOTD-сообщение слишком длинное: максимальная длина - {} символ(ов), текущая длина - {} символ(ов).", diff --git a/syncplay/server.py b/syncplay/server.py index 21a09ad..8e1c625 100644 --- a/syncplay/server.py +++ b/syncplay/server.py @@ -14,7 +14,7 @@ import argparse from syncplay.utils import RoomPasswordProvider, NotControlledRoom, RandomStringGenerator, meetsMinVersion, playlistIsValid, truncateText class SyncFactory(Factory): - def __init__(self, password='', motdFilePath=None, isolateRooms=False, salt=None, disableReady=False,disableChat=False, maxChatMessageLength=constants.MAX_CHAT_MESSAGE_LENGTH): + def __init__(self, password='', motdFilePath=None, isolateRooms=False, salt=None, disableReady=False,disableChat=False, maxChatMessageLength=constants.MAX_CHAT_MESSAGE_LENGTH, maxUsernameLength=constants.MAX_USERNAME_LENGTH): self.isolateRooms = isolateRooms print getMessage("welcome-server-notification").format(syncplay.version) if password: @@ -28,6 +28,7 @@ class SyncFactory(Factory): self.disableReady = disableReady self.disableChat = disableChat self.maxChatMessageLength = maxChatMessageLength if maxChatMessageLength is not None else constants.MAX_CHAT_MESSAGE_LENGTH + self.maxUsernameLength = maxUsernameLength if maxUsernameLength is not None else constants.MAX_USERNAME_LENGTH if not isolateRooms: self._roomManager = RoomManager() else: @@ -50,7 +51,7 @@ class SyncFactory(Factory): features["managedRooms"] = True features["chat"] = not self.disableChat features["maxChatMessageLength"] = self.maxChatMessageLength - features["maxUsernameLength"] = constants.MAX_USERNAME_LENGTH + features["maxUsernameLength"] = self.maxUsernameLength features["maxRoomNameLength"] = constants.MAX_ROOM_NAME_LENGTH features["maxFilenameLength"] = constants.MAX_FILENAME_LENGTH @@ -549,3 +550,4 @@ class ConfigurationGetter(object): self._argparser.add_argument('--salt', metavar='salt', type=str, nargs='?', help=getMessage("server-salt-argument")) self._argparser.add_argument('--motd-file', metavar='file', type=str, nargs='?', help=getMessage("server-motd-argument")) self._argparser.add_argument('--max-chat-message-length', metavar='maxChatMessageLength',type=int, nargs='?',help=getMessage("server-chat-maxchars-argument").format(constants.MAX_CHAT_MESSAGE_LENGTH)) + self._argparser.add_argument('--max-username-length', metavar='maxUsernameLength', type=int, nargs='?',help=getMessage("server-maxusernamelength-argument").format(constants.MAX_USERNAME_LENGTH)) diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py index 605007c..fd6bcd3 100755 --- a/syncplay/ui/GuiConfiguration.py +++ b/syncplay/ui/GuiConfiguration.py @@ -596,7 +596,6 @@ class ConfigDialog(QtWidgets.QDialog): self.defaultroomLabel.setObjectName("room") self.defaultroomTextbox.setObjectName("room") - self.usernameTextbox.setMaxLength(constants.MAX_USERNAME_LENGTH) self.defaultroomTextbox.setMaxLength(constants.MAX_ROOM_NAME_LENGTH) self.connectionSettingsLayout = QtWidgets.QGridLayout() From 8762b25bcbe0279c724688206b939a28659d2a31 Mon Sep 17 00:00:00 2001 From: albertosottile Date: Thu, 1 Mar 2018 19:26:07 +0000 Subject: [PATCH 50/85] Set recent client as 1.5.2 --- syncplay/__init__.py | 2 +- syncplay/constants.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/syncplay/__init__.py b/syncplay/__init__.py index e039478..c66c5cc 100644 --- a/syncplay/__init__.py +++ b/syncplay/__init__.py @@ -1,4 +1,4 @@ version = '1.5.2' milestone = 'Yoitsu' -release_number = '56' +release_number = '57' projectURL = 'http://syncplay.pl/' diff --git a/syncplay/constants.py b/syncplay/constants.py index 5ea98c8..d6a2d73 100644 --- a/syncplay/constants.py +++ b/syncplay/constants.py @@ -10,7 +10,7 @@ UI_TIME_FORMAT = "[%X] " CONFIG_NAMES = [".syncplay", "syncplay.ini"] #Syncplay searches first to last DEFAULT_CONFIG_NAME_WINDOWS = "syncplay.ini" DEFAULT_CONFIG_NAME_LINUX = ".syncplay" -RECENT_CLIENT_THRESHOLD = "1.5.1" #This and higher considered 'recent' clients (no warnings) +RECENT_CLIENT_THRESHOLD = "1.5.2" #This and higher considered 'recent' clients (no warnings) WARN_OLD_CLIENTS = True #Use MOTD to inform old clients to upgrade LIST_RELATIVE_CONFIGS = True # Print list of relative configs loaded SHOW_CONTACT_INFO = True # Displays dev contact details below list in GUI From 38c1de56b99e1f72c2c4539c4260057e3eb779ca Mon Sep 17 00:00:00 2001 From: albertosottile Date: Sat, 3 Mar 2018 12:18:30 +0000 Subject: [PATCH 51/85] Fix typo --- syncplay/messages_de.py | 2 +- syncplay/messages_en.py | 2 +- syncplay/messages_it.py | 2 +- syncplay/messages_ru.py | 2 +- syncplay/ui/gui.py | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py index 7caed97..b389a97 100644 --- a/syncplay/messages_de.py +++ b/syncplay/messages_de.py @@ -455,7 +455,7 @@ de = { "sharedplaylistenabled-label" : u"Enable shared playlists", "removefromplaylist-menu-label" : u"Remove from playlist", "shuffleremainingplaylist-menu-label" : u"Shuffle remaining playlist", - "shuffleentireplaylist-menuu-label" : u"Shuffle entire playlist", + "shuffleentireplaylist-menu-label" : u"Shuffle entire playlist", "undoplaylist-menu-label" : u"Undo last change to playlist", "addfilestoplaylist-menu-label" : u"Add file(s) to bottom of playlist", "addurlstoplaylist-menu-label" : u"Add URL(s) to bottom of playlist", diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py index 5548f00..ce216ed 100644 --- a/syncplay/messages_en.py +++ b/syncplay/messages_en.py @@ -459,7 +459,7 @@ en = { "sharedplaylistenabled-label" : u"Enable shared playlists", "removefromplaylist-menu-label" : u"Remove from playlist", "shuffleremainingplaylist-menu-label" : u"Shuffle remaining playlist", - "shuffleentireplaylist-menuu-label" : u"Shuffle entire playlist", + "shuffleentireplaylist-menu-label" : u"Shuffle entire playlist", "undoplaylist-menu-label" : u"Undo last change to playlist", "addfilestoplaylist-menu-label" : u"Add file(s) to bottom of playlist", "addurlstoplaylist-menu-label" : u"Add URL(s) to bottom of playlist", diff --git a/syncplay/messages_it.py b/syncplay/messages_it.py index bda5522..22f6381 100644 --- a/syncplay/messages_it.py +++ b/syncplay/messages_it.py @@ -460,7 +460,7 @@ it = { "sharedplaylistenabled-label" : u"Abilita le playlist condivise", "removefromplaylist-menu-label" : u"Rimuovi dalla playlist", "shuffleremainingplaylist-menu-label" : u"Mescola i file non ancora riprodotti", - "shuffleentireplaylist-menuu-label" : u"Mescola l'intera playlist", + "shuffleentireplaylist-menu-label" : u"Mescola l'intera playlist", "undoplaylist-menu-label" : u"Annulla l'ultima modifica alla playlist", "addfilestoplaylist-menu-label" : u"Aggiungi un file alla fine della playlist", "addurlstoplaylist-menu-label" : u"Aggiungi un indirizzo alla fine della playlist", diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py index 7a1fafe..f32e73f 100644 --- a/syncplay/messages_ru.py +++ b/syncplay/messages_ru.py @@ -460,7 +460,7 @@ ru = { "sharedplaylistenabled-label" : u"Включить общий список воспроизведения", "removefromplaylist-menu-label" : u"Удалить", "shufflepremaininglaylist-menuu-label" : u"Shuffle remaining playlist", # Was: Перемешать список # TODO: Translate - "shuffleentireplaylist-menuu-label" : u"Shuffle entire playlist", # TODO: Translate + "shuffleentireplaylist-menu-label" : u"Shuffle entire playlist", # TODO: Translate "undoplaylist-menu-label" : u"Отменить последнее действие", "addfilestoplaylist-menu-label" : u"Добавить файлы в очередь", "addurlstoplaylist-menu-label" : u"Добавить ссылку в очередь", diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index d2fa381..e989756 100755 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -597,7 +597,7 @@ class MainWindow(QtWidgets.QMainWindow): menu.addAction(QtGui.QPixmap(resourcespath + u"delete.png"), getMessage("removefromplaylist-menu-label"), lambda: self.deleteSelectedPlaylistItems()) menu.addSeparator() menu.addAction(QtGui.QPixmap(resourcespath + u"arrow_switch.png"), getMessage("shuffleremainingplaylist-menu-label"), lambda: self.shuffleRemainingPlaylist()) - menu.addAction(QtGui.QPixmap(resourcespath + u"arrow_switch.png"), getMessage("shuffleentireplaylist-menuu-label"), lambda: self.shuffleEntirePlaylist()) + menu.addAction(QtGui.QPixmap(resourcespath + u"arrow_switch.png"), getMessage("shuffleentireplaylist-menu-label"), lambda: self.shuffleEntirePlaylist()) menu.addAction(QtGui.QPixmap(resourcespath + u"arrow_undo.png"), getMessage("undoplaylist-menu-label"), lambda: self.undoPlaylistChange()) menu.addAction(QtGui.QPixmap(resourcespath + u"film_edit.png"), getMessage("editplaylist-menu-label"), lambda: self.openEditPlaylistDialog()) menu.addAction(QtGui.QPixmap(resourcespath + u"film_add.png"),getMessage("addfilestoplaylist-menu-label"), lambda: self.OpenAddFilesToPlaylistDialog()) From dcd82d9db438ff545751a347e032550bc2c9537d Mon Sep 17 00:00:00 2001 From: albertosottile Date: Sat, 3 Mar 2018 15:08:49 +0100 Subject: [PATCH 52/85] Correct Travis script to explicitely install python2 --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d4477e0..0d78a87 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,13 +10,14 @@ script: before_install: - brew update -- brew install python +- brew install python@2 - brew tap cartr/qt4 - brew tap-pin cartr/qt4 - brew install pyside install: #- export PATH=/usr/local/bin:$PATH +- export PATH="/usr/local/opt/python@2/bin:$PATH" - export QT_PREFERRED_BINDING="PySide" - pip2 install twisted appnope pyobjc py2app From 383e16d97404ea73019ff822424c64eecd7ca7a2 Mon Sep 17 00:00:00 2001 From: albertosottile Date: Sun, 4 Mar 2018 20:29:11 +0100 Subject: [PATCH 53/85] Retrieve python@2 cache from external build --- .travis.yml | 7 ++++--- travis/cache-homebrew | 6 ++++++ travis/cache-python | 5 +++++ travis/download-homebrew | 13 +++++++++++++ travis/download-python | 10 ++++++++++ 5 files changed, 38 insertions(+), 3 deletions(-) create mode 100755 travis/cache-homebrew create mode 100755 travis/cache-python create mode 100755 travis/download-homebrew create mode 100755 travis/download-python diff --git a/.travis.yml b/.travis.yml index 0d78a87..9ac8ac4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,18 +10,19 @@ script: before_install: - brew update -- brew install python@2 +- travis/download-homebrew +- export PATH="/usr/local/opt/python@2/bin:$PATH" +- travis/download-python - brew tap cartr/qt4 - brew tap-pin cartr/qt4 - brew install pyside install: -#- export PATH=/usr/local/bin:$PATH -- export PATH="/usr/local/opt/python@2/bin:$PATH" - export QT_PREFERRED_BINDING="PySide" - pip2 install twisted appnope pyobjc py2app before_deploy: +#- travis/cache-homebrew - pip2 install dmgbuild - mkdir dist_dmg - mv resources/macos_vlc_install.command resources/.macos_vlc_install.command diff --git a/travis/cache-homebrew b/travis/cache-homebrew new file mode 100755 index 0000000..d9dcc38 --- /dev/null +++ b/travis/cache-homebrew @@ -0,0 +1,6 @@ +#!/bin/sh + +mkdir travis-cache +if [ ! -f homebrew-cache.tar.gz ]; then + tar czf travis-cache/homebrew-cache.tar.gz --directory /usr/local/Cellar pkg-config readline sqlite gdbm makedepend openssl python@2 +fi diff --git a/travis/cache-python b/travis/cache-python new file mode 100755 index 0000000..f7d1e65 --- /dev/null +++ b/travis/cache-python @@ -0,0 +1,5 @@ +#!/bin/sh + +if [ ! -f python-cache.tar.gz ]; then + tar czf travis-cache/python-cache.tar.gz --directory /usr/local/lib/python2.7 site-packages +fi diff --git a/travis/download-homebrew b/travis/download-homebrew new file mode 100755 index 0000000..dd23237 --- /dev/null +++ b/travis/download-homebrew @@ -0,0 +1,13 @@ +#!/bin/sh + +curl -L "https://dl.bintray.com/alby128/Syncplay/homebrew-cache.tar.gz" -o homebrew-cache.tar.gz +if [ -f homebrew-cache.tar.gz ]; then + if ! tar tf homebrew-cache.tar.gz &>/dev/null; then + rm homebrew-cache.tar.gz + exit 0 + fi + tar zxf homebrew-cache.tar.gz --directory /usr/local/Cellar + brew unlink pkg-config + brew link pkg-config + brew link --force readline sqlite gdbm makedepend python@2 +fi diff --git a/travis/download-python b/travis/download-python new file mode 100755 index 0000000..870f07e --- /dev/null +++ b/travis/download-python @@ -0,0 +1,10 @@ +#!/bin/sh + +curl -L "https://dl.bintray.com/alby128/Syncplay/python-cache.tar.gz" -o python-cache.tar.gz +if [ -f python-cache.tar.gz ]; then + if ! tar tf python-cache.tar.gz &>/dev/null; then + rm python-cache.tar.gz + exit 0 + fi + tar zxf python-cache.tar.gz --directory /usr/local/lib/python2.7 +fi From 6f172d9803d44d9989354ddad536d9536e376f61 Mon Sep 17 00:00:00 2001 From: albertosottile Date: Wed, 11 Apr 2018 12:24:38 +0200 Subject: [PATCH 54/85] Merged upstream changes --- README.md | 4 ++-- resources/lua/intf/syncplay.lua | 4 ++-- syncplay/__init__.py | 6 +++--- syncplay/client.py | 4 ++++ syncplay/constants.py | 12 ++++++------ syncplay/messages_de.py | 25 +++++++++++++------------ syncplay/messages_en.py | 25 +++++++++++++------------ syncplay/messages_it.py | 27 ++++++++++++++------------- syncplay/messages_ru.py | 19 ++++++++++--------- syncplay/server.py | 6 ++++-- syncplay/ui/GuiConfiguration.py | 18 ++++++++++++------ syncplay/ui/consoleUI.py | 4 ++++ syncplay/ui/gui.py | 23 +++++++++++++++-------- 13 files changed, 102 insertions(+), 75 deletions(-) diff --git a/README.md b/README.md index 173b7e2..a873676 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,10 @@ Solution to synchronize video playback across multiple instances of mpv, VLC, MPC-HC, MPC-BE and mplayer2 over the Internet. ## Official website -http://syncplay.pl +https://syncplay.pl ## Download -http://syncplay.pl/download/ +https://syncplay.pl/download/ ## What does it do diff --git a/resources/lua/intf/syncplay.lua b/resources/lua/intf/syncplay.lua index 4f3d07d..44e8828 100644 --- a/resources/lua/intf/syncplay.lua +++ b/resources/lua/intf/syncplay.lua @@ -4,14 +4,14 @@ Principal author: Etoh Other contributors: DerGenaue, jb, Pilotat - Project: http://syncplay.pl/ + Project: https://syncplay.pl/ Version: 0.3.4 Note: * This interface module is intended to be used in conjunction with Syncplay. * Syncplay provides synchronized video playback across multiple media player instances over the net. * Syncplay allows group of people who all have the same videos to watch them together wherever they are. - * Syncplay is available to download for free from http://syncplay.pl/ + * Syncplay is available to download for free from https://syncplay.pl/ --[==========================================================================[ diff --git a/syncplay/__init__.py b/syncplay/__init__.py index e039478..53e985a 100644 --- a/syncplay/__init__.py +++ b/syncplay/__init__.py @@ -1,4 +1,4 @@ -version = '1.5.2' +version = '1.5.3' milestone = 'Yoitsu' -release_number = '56' -projectURL = 'http://syncplay.pl/' +release_number = '60' +projectURL = 'https://syncplay.pl/' diff --git a/syncplay/client.py b/syncplay/client.py index e330843..e8cb8b5 100644 --- a/syncplay/client.py +++ b/syncplay/client.py @@ -1929,6 +1929,10 @@ class FileSwitchManager(object): return False def notifyUserIfFileNotInMediaDirectory(self, filenameToFind, path): + try: + path = path.decode('utf-8') + except UnicodeEncodeError: + pass directoryToFind = os.path.dirname(path) if directoryToFind in self.mediaDirectoriesNotFound: return diff --git a/syncplay/constants.py b/syncplay/constants.py index f5f0f41..122b491 100644 --- a/syncplay/constants.py +++ b/syncplay/constants.py @@ -10,7 +10,7 @@ UI_TIME_FORMAT = "[%X] " CONFIG_NAMES = [".syncplay", "syncplay.ini"] #Syncplay searches first to last DEFAULT_CONFIG_NAME_WINDOWS = "syncplay.ini" DEFAULT_CONFIG_NAME_LINUX = ".syncplay" -RECENT_CLIENT_THRESHOLD = "1.5.1" #This and higher considered 'recent' clients (no warnings) +RECENT_CLIENT_THRESHOLD = "1.5.3" #This and higher considered 'recent' clients (no warnings) WARN_OLD_CLIENTS = True #Use MOTD to inform old clients to upgrade LIST_RELATIVE_CONFIGS = True # Print list of relative configs loaded SHOW_CONTACT_INFO = True # Displays dev contact details below list in GUI @@ -66,8 +66,8 @@ DEFAULT_CHAT_OUTPUT_FONT_COLOR = "#FFFF00" DEFAULT_CHAT_FONT_WEIGHT = 1 # Max numbers are used by server (and client pre-connection). Once connected client gets values from server featureList (or uses 'fallback' versions for old servers) -MAX_CHAT_MESSAGE_LENGTH = 125 # Number of displayed characters -MAX_USERNAME_LENGTH = 20 # Number of displayed characters +MAX_CHAT_MESSAGE_LENGTH = 150 # Number of displayed characters +MAX_USERNAME_LENGTH = 150 # Number of displayed characters MAX_ROOM_NAME_LENGTH = 35 # Number of displayed characters MAX_FILENAME_LENGTH = 250 # Number of displayed characters FALLBACK_MAX_CHAT_MESSAGE_LENGTH = 50 # Number of displayed characters @@ -256,9 +256,9 @@ OSD_CHAT = "chat" CHATROOM_MODE = "Chatroom" SCROLLING_MODE = "Scrolling" -SYNCPLAY_UPDATE_URL = u"http://syncplay.pl/checkforupdate?{}" # Params -SYNCPLAY_DOWNLOAD_URL = "http://syncplay.pl/download/" -SYNCPLAY_PUBLIC_SERVER_LIST_URL = u"http://syncplay.pl/listpublicservers?{}" # Params +SYNCPLAY_UPDATE_URL = u"https://syncplay.pl/checkforupdate?{}" # Params +SYNCPLAY_DOWNLOAD_URL = "https://syncplay.pl/download/" +SYNCPLAY_PUBLIC_SERVER_LIST_URL = u"https://syncplay.pl/listpublicservers?{}" # Params DEFAULT_TRUSTED_DOMAINS = [u"youtube.com",u"youtu.be"] TRUSTABLE_WEB_PROTOCOLS = [u"http://www.",u"https://www.",u"http://",u"https://"] diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py index f015834..eac5b70 100644 --- a/syncplay/messages_de.py +++ b/syncplay/messages_de.py @@ -66,7 +66,7 @@ de = { "controller-userlist-userflag" : u"Raumleiter", "ready-userlist-userflag" : u"Bereit", - "update-check-failed-notification" : u"Konnte nicht automatisch prüfen, ob Syncplay {} aktuell ist. Soll http://syncplay.pl/ geöffnet werden, um manuell nach Updates zu suchen?", #Syncplay version + "update-check-failed-notification" : u"Konnte nicht automatisch prüfen, ob Syncplay {} aktuell ist. Soll https://syncplay.pl/ geöffnet werden, um manuell nach Updates zu suchen?", #Syncplay version "syncplay-uptodate-notification" : u"Syncplay ist aktuell", "syncplay-updateavailable-notification" : u"Eine neuere Version von Syncplay ist verfügbar. Soll die Download-Seite geöffnet werden?", @@ -94,9 +94,9 @@ de = { "promptforupdate-label" : u"Soll Syncplay regelmäßig nach Updates suchen?", "vlc-version-mismatch": u"This version of VLC does not support Syncplay. VLC {}+ supports Syncplay but VLC 3 does not. Please use an alternative media player.", # VLC min version # TODO: Translate - "vlc-interface-version-mismatch": u"Du nutzt Version {} des VLC-Syncplay Interface-Moduls, Syncplay benötigt aber mindestens Version {}. In der Syncplay-Anleitung unter http://syncplay.pl/guide/ [Englisch] findest du Details zur Installation des syncplay.lua-Skripts.", # VLC interface version, VLC interface min version - "vlc-interface-oldversion-warning": u"Warnung: Es ist eine alte Version des Syncplay Interface-Moduls für VLC im VLC-Verzeichnis installiert. In der Syncplay-Anleitung unter http://syncplay.pl/guide/ [Englisch] findest du Details zur Installation des syncplay.lua-Skripts.", - "vlc-interface-not-installed": u"Warnung: Es wurde kein Syncplay Interface-Modul für VLC im VLC-Verzeichnis gefunden. Daher wird, wenn du VLC 2.0 nutzt, die syncplay.lua die mit Syncplay mitgeliefert wurde, verwendet. Dies bedeutet allerdings, dass keine anderen Interface-Skripts und Erweiterungen geladen werden. In der Syncplay-Anleitung unter http://syncplay.pl/guide/ [Englisch] findest du Details zur Installation des syncplay.lua-Skripts.", + "vlc-interface-version-mismatch": u"Du nutzt Version {} des VLC-Syncplay Interface-Moduls, Syncplay benötigt aber mindestens Version {}. In der Syncplay-Anleitung unter https://syncplay.pl/guide/ [Englisch] findest du Details zur Installation des syncplay.lua-Skripts.", # VLC interface version, VLC interface min version + "vlc-interface-oldversion-warning": u"Warnung: Es ist eine alte Version des Syncplay Interface-Moduls für VLC im VLC-Verzeichnis installiert. In der Syncplay-Anleitung unter https://syncplay.pl/guide/ [Englisch] findest du Details zur Installation des syncplay.lua-Skripts.", + "vlc-interface-not-installed": u"Warnung: Es wurde kein Syncplay Interface-Modul für VLC im VLC-Verzeichnis gefunden. Daher wird, wenn du VLC 2.0 nutzt, die syncplay.lua die mit Syncplay mitgeliefert wurde, verwendet. Dies bedeutet allerdings, dass keine anderen Interface-Skripts und Erweiterungen geladen werden. In der Syncplay-Anleitung unter https://syncplay.pl/guide/ [Englisch] findest du Details zur Installation des syncplay.lua-Skripts.", "media-player-latency-warning": u"Warnung: Der Mediaplayer brauchte {} Sekunden zum Antworten. Wenn Probleme bei der Synchronisation auftreten, schließe bitte andere Anwendungen, um Ressourcen freizugeben. Sollte das nicht funktionieren, versuche es mit einem anderen Media-Player.", # Seconds to respond "mpv-unresponsive-error": u"MPV hat für {} Sekunden nicht geantwortet und scheint abgestürzt zu sein. Bitte starte Syncplay neu.", # Seconds to respond @@ -130,8 +130,8 @@ de = { "not-json-error" : u"Kein JSON-String\n", "hello-arguments-error" : u"Zu wenige Hello-Argumente\n", "version-mismatch-error" : u"Verschiedene Versionen auf Client und Server\n", - "vlc-failed-connection": u"Kann nicht zu VLC verbinden. Wenn du syncplay.lua nicht installiert hast, findest du auf http://syncplay.pl/LUA/ [Englisch] eine Anleitung.", - "vlc-failed-noscript": u"Laut VLC ist das syncplay.lua Interface-Skript nicht installiert. Auf http://syncplay.pl/LUA/ [Englisch] findest du eine Anleitung.", + "vlc-failed-connection": u"Kann nicht zu VLC verbinden. Wenn du syncplay.lua nicht installiert hast, findest du auf https://syncplay.pl/LUA/ [Englisch] eine Anleitung.", + "vlc-failed-noscript": u"Laut VLC ist das syncplay.lua Interface-Skript nicht installiert. Auf https://syncplay.pl/LUA/ [Englisch] findest du eine Anleitung.", "vlc-failed-versioncheck": u"Diese VLC-Version wird von Syncplay nicht unterstützt. Bitte nutze VLC 2.0", "vlc-failed-other" : u"Beim Laden des syncplay.lua Interface-Skripts durch VLC trat folgender Fehler auf: {}", # Syncplay Error @@ -262,7 +262,7 @@ de = { "run-label" : u"Syncplay starten", "storeandrun-label" : u"Konfiguration speichern und Syncplay starten", - "contact-label" : u"Du hast eine Idee, einen Bug gefunden oder möchtest Feedback geben? Sende eine E-Mail an dev@syncplay.pl, chatte auf dem #Syncplay IRC-Kanal auf irc.freenode.net oder öffne eine Fehlermeldung auf GitHub. Außerdem findest du auf http://syncplay.pl/ weitere Informationen, Hilfestellungen und Updates. OTE: Chat messages are not encrypted so do not use Syncplay to send sensitive information.", # TODO: Translate last sentence + "contact-label" : u"Du hast eine Idee, einen Bug gefunden oder möchtest Feedback geben? Sende eine E-Mail an dev@syncplay.pl, chatte auf dem #Syncplay IRC-Kanal auf irc.freenode.net oder öffne eine Fehlermeldung auf GitHub. Außerdem findest du auf https://syncplay.pl/ weitere Informationen, Hilfestellungen und Updates. OTE: Chat messages are not encrypted so do not use Syncplay to send sensitive information.", # TODO: Translate last sentence "joinroom-label" : u"Raum beitreten", "joinroom-menu-label" : u"Raum beitreten {}", #TODO: Might want to fix this @@ -316,7 +316,7 @@ de = { "about-dialog-dependencies": u"Dependencies", "setoffset-msgbox-label" : u"Offset einstellen", - "offsetinfo-msgbox-label" : u"Offset (siehe http://syncplay.pl/guide/ für eine Anleitung [Englisch]):", + "offsetinfo-msgbox-label" : u"Offset (siehe https://syncplay.pl/guide/ für eine Anleitung [Englisch]):", "promptforstreamurl-msgbox-label" : u"Stream URL öffnen", "promptforstreamurlinfo-msgbox-label" : u"Stream URL", @@ -328,10 +328,10 @@ de = { "trusteddomains-msgbox-label" : u"Domains it is okay to automatically switch to (one per line)", # TODO: Translate "createcontrolledroom-msgbox-label" : u"Zentral gesteuerten Raum erstellen", - "controlledroominfo-msgbox-label" : u"Namen des zentral gesteuerten Raums eingeben\r\n(siehe http://syncplay.pl/guide/ für eine Anleitung [Englisch]):", + "controlledroominfo-msgbox-label" : u"Namen des zentral gesteuerten Raums eingeben\r\n(siehe https://syncplay.pl/guide/ für eine Anleitung [Englisch]):", "identifyascontroller-msgbox-label" : u"Als Raumleiter identifizieren", - "identifyinfo-msgbox-label" : u"Passwort des zentral gesteuerten Raums eingeben\r\n(siehe http://syncplay.pl/guide/ für eine Anleitung [Englisch]):", + "identifyinfo-msgbox-label" : u"Passwort des zentral gesteuerten Raums eingeben\r\n(siehe https://syncplay.pl/guide/ für eine Anleitung [Englisch]):", "public-server-msgbox-label" : u"Einen öffentlichen Server für diese Sitzung auswählen", @@ -414,7 +414,7 @@ de = { "nofile-note" : u"(keine Datei wird abgespielt)", # Server messages to client - "new-syncplay-available-motd-message" : u" Du nutzt Syncplay Version {}, aber es gibt eine neuere Version auf http://syncplay.pl", # ClientVersion + "new-syncplay-available-motd-message" : u" Du nutzt Syncplay Version {}, aber es gibt eine neuere Version auf https://syncplay.pl", # ClientVersion # Server notifications "welcome-server-notification" : u"Willkommen zum Syncplay-Server, v. {0}", # version @@ -433,6 +433,7 @@ de = { "server-motd-argument": u"Pfad zur Datei, von der die Nachricht des Tages geladen wird", "server-chat-argument" : "Should chat be disabled?", # TODO: Translate "server-chat-maxchars-argument": u"Maximum number of characters in a chat message (default is {})", # TODO: Translate + "server-maxusernamelength-argument" : u"Maximum number of charactrs in a username (default is {})", # TODO: Translate "server-messed-up-motd-unescaped-placeholders": u"Die Nachricht des Tages hat unmaskierte Platzhalter. Alle $-Zeichen sollten verdoppelt werden ($$).", "server-messed-up-motd-too-long": u"Die Nachricht des Tages ist zu lang - Maximal {} Zeichen, aktuell {}.", @@ -454,7 +455,7 @@ de = { "sharedplaylistenabled-label" : u"Enable shared playlists", "removefromplaylist-menu-label" : u"Remove from playlist", "shuffleremainingplaylist-menu-label" : u"Shuffle remaining playlist", - "shuffleentireplaylist-menuu-label" : u"Shuffle entire playlist", + "shuffleentireplaylist-menu-label" : u"Shuffle entire playlist", "undoplaylist-menu-label" : u"Undo last change to playlist", "addfilestoplaylist-menu-label" : u"Add file(s) to bottom of playlist", "addurlstoplaylist-menu-label" : u"Add URL(s) to bottom of playlist", diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py index 4d04b04..2dc14a5 100644 --- a/syncplay/messages_en.py +++ b/syncplay/messages_en.py @@ -66,7 +66,7 @@ en = { "controller-userlist-userflag" : "Operator", "ready-userlist-userflag" : "Ready", - "update-check-failed-notification" : u"Could not automatically check whether Syncplay {} is up to date. Want to visit http://syncplay.pl/ to manually check for updates?", #Syncplay version + "update-check-failed-notification" : u"Could not automatically check whether Syncplay {} is up to date. Want to visit https://syncplay.pl/ to manually check for updates?", #Syncplay version "syncplay-uptodate-notification" : u"Syncplay is up to date", "syncplay-updateavailable-notification" : u"A new version of Syncplay is available. Do you want to visit the release page?", @@ -93,9 +93,9 @@ en = { "language-changed-msgbox-label" : "Language will be changed when you run Syncplay.", "promptforupdate-label" : u"Is it okay for Syncplay to automatically check for updates from time to time?", - "vlc-interface-version-mismatch": "You are running version {} of the Syncplay interface module for VLC, but Syncplay is designed to run with version {} and above. Please refer to the Syncplay User Guide at http://syncplay.pl/guide/ for instructions on how to install syncplay.lua.", # VLC interface version, VLC interface min version - "vlc-interface-oldversion-warning": "Warning: Syncplay detected that an old version version of the Syncplay interface module for VLC was installed in the VLC directory. Please refer to the Syncplay User Guide at http://syncplay.pl/guide/ for instructions on how to install syncplay.lua.", - "vlc-interface-not-installed": "Warning: The Syncplay interface module for VLC was not found in the VLC directory. As such, if you are running VLC 2.0 then VLC will use the syncplay.lua module contained within the Syncplay directory, but this will mean that other custom interface scripts and extensions will not work. Please refer to the Syncplay User Guide at http://syncplay.pl/guide/ for instructions on how to install syncplay.lua.", + "vlc-interface-version-mismatch": "You are running version {} of the Syncplay interface module for VLC, but Syncplay is designed to run with version {} and above. Please refer to the Syncplay User Guide at https://syncplay.pl/guide/ for instructions on how to install syncplay.lua.", # VLC interface version, VLC interface min version + "vlc-interface-oldversion-warning": "Warning: Syncplay detected that an old version version of the Syncplay interface module for VLC was installed in the VLC directory. Please refer to the Syncplay User Guide at https://syncplay.pl/guide/ for instructions on how to install syncplay.lua.", + "vlc-interface-not-installed": "Warning: The Syncplay interface module for VLC was not found in the VLC directory. As such, if you are running VLC 2.0 then VLC will use the syncplay.lua module contained within the Syncplay directory, but this will mean that other custom interface scripts and extensions will not work. Please refer to the Syncplay User Guide at https://syncplay.pl/guide/ for instructions on how to install syncplay.lua.", "media-player-latency-warning": u"Warning: The media player took {} seconds to respond. If you experience syncing issues then close applications to free up system resources, and if that doesn't work then try a different media player.", # Seconds to respond "mpv-unresponsive-error": u"mpv has not responded for {} seconds so appears to have malfunctioned. Please restart Syncplay.", # Seconds to respond @@ -129,8 +129,8 @@ en = { "not-json-error" : "Not a json encoded string\n", "hello-arguments-error" : "Not enough Hello arguments\n", # DO NOT TRANSLATE "version-mismatch-error" : "Mismatch between versions of client and server\n", - "vlc-failed-connection": "Failed to connect to VLC. If you have not installed syncplay.lua and are using the latest verion of VLC then please refer to http://syncplay.pl/LUA/ for instructions.", - "vlc-failed-noscript": "VLC has reported that the syncplay.lua interface script has not been installed. Please refer to http://syncplay.pl/LUA/ for instructions.", + "vlc-failed-connection": "Failed to connect to VLC. If you have not installed syncplay.lua and are using the latest verion of VLC then please refer to https://syncplay.pl/LUA/ for instructions.", + "vlc-failed-noscript": "VLC has reported that the syncplay.lua interface script has not been installed. Please refer to https://syncplay.pl/LUA/ for instructions.", "vlc-failed-versioncheck": "This version of VLC is not supported by Syncplay.", "feature-sharedPlaylists" : u"shared playlists", # used for not-supported-by-server-error @@ -267,7 +267,7 @@ en = { "run-label" : "Run Syncplay", "storeandrun-label" : "Store configuration and run Syncplay", - "contact-label" : "Feel free to e-mail dev@syncplay.pl, chat via the #Syncplay IRC channel on irc.freenode.net, raise an issue via GitHub, like us on Facebook, follow us on Twitter, or visit http://syncplay.pl/. NOTE: Chat messages are not encrypted so do not use Syncplay to send sensitive information.", + "contact-label" : "Feel free to e-mail dev@syncplay.pl, chat via the #Syncplay IRC channel on irc.freenode.net, raise an issue via GitHub, like us on Facebook, follow us on Twitter, or visit https://syncplay.pl/. NOTE: Chat messages are not encrypted so do not use Syncplay to send sensitive information.", "joinroom-label" : "Join room", "joinroom-menu-label" : u"Join room {}", @@ -321,7 +321,7 @@ en = { "about-dialog-dependencies": u"Dependencies", "setoffset-msgbox-label" : "Set offset", - "offsetinfo-msgbox-label" : "Offset (see http://syncplay.pl/guide/ for usage instructions):", + "offsetinfo-msgbox-label" : "Offset (see https://syncplay.pl/guide/ for usage instructions):", "promptforstreamurl-msgbox-label" : "Open media stream URL", "promptforstreamurlinfo-msgbox-label" : "Stream URL", @@ -333,10 +333,10 @@ en = { "trusteddomains-msgbox-label" : u"Domains it is okay to automatically switch to (one per line)", "createcontrolledroom-msgbox-label" : "Create managed room", - "controlledroominfo-msgbox-label" : "Enter name of managed room\r\n(see http://syncplay.pl/guide/ for usage instructions):", + "controlledroominfo-msgbox-label" : "Enter name of managed room\r\n(see https://syncplay.pl/guide/ for usage instructions):", "identifyascontroller-msgbox-label" : "Identify as room operator", - "identifyinfo-msgbox-label" : "Enter operator password for this room\r\n(see http://syncplay.pl/guide/ for usage instructions):", + "identifyinfo-msgbox-label" : "Enter operator password for this room\r\n(see https://syncplay.pl/guide/ for usage instructions):", "public-server-msgbox-label" : u"Select the public server for this viewing session", @@ -417,7 +417,7 @@ en = { "nofile-note" : "(No file being played)", # Server messages to client - "new-syncplay-available-motd-message" : " You are using Syncplay {} but a newer version is available from http://syncplay.pl ", # ClientVersion + "new-syncplay-available-motd-message" : " You are using Syncplay {} but a newer version is available from https://syncplay.pl ", # ClientVersion # Server notifications "welcome-server-notification" : "Welcome to Syncplay server, ver. {0}", # version @@ -437,6 +437,7 @@ en = { "server-motd-argument": "path to file from which motd will be fetched", "server-chat-argument" : "Should chat be disabled?", "server-chat-maxchars-argument" : u"Maximum number of characters in a chat message (default is {})", # Default number of characters + "server-maxusernamelength-argument" : u"Maximum number of charactrs in a username (default is {})", "server-messed-up-motd-unescaped-placeholders": "Message of the Day has unescaped placeholders. All $ signs should be doubled ($$).", "server-messed-up-motd-too-long": u"Message of the Day is too long - maximum of {} chars, {} given.", @@ -458,7 +459,7 @@ en = { "sharedplaylistenabled-label" : u"Enable shared playlists", "removefromplaylist-menu-label" : u"Remove from playlist", "shuffleremainingplaylist-menu-label" : u"Shuffle remaining playlist", - "shuffleentireplaylist-menuu-label" : u"Shuffle entire playlist", + "shuffleentireplaylist-menu-label" : u"Shuffle entire playlist", "undoplaylist-menu-label" : u"Undo last change to playlist", "addfilestoplaylist-menu-label" : u"Add file(s) to bottom of playlist", "addurlstoplaylist-menu-label" : u"Add URL(s) to bottom of playlist", diff --git a/syncplay/messages_it.py b/syncplay/messages_it.py index 53a5c1e..2de7b79 100644 --- a/syncplay/messages_it.py +++ b/syncplay/messages_it.py @@ -50,7 +50,7 @@ it = { "file-different-notification" : u"Il file che stai riproducendo sembra essere diverso da quello di {}", # User "file-differences-notification" : u"Il tuo file mostra le seguenti differenze: {}", # Differences - "room-file-differences" : u"Differenze: {} \n", # File differences (filename, size, and/or duration) + "room-file-differences" : u"Differenze: {}", # File differences (filename, size, and/or duration) "file-difference-filename" : u"nome", "file-difference-filesize" : u"dimensione", "file-difference-duration" : u"durata", @@ -66,7 +66,7 @@ it = { "controller-userlist-userflag" : u"Gestore", "ready-userlist-userflag" : u"Pronto", - "update-check-failed-notification" : u"Controllo automatico degli aggiornamenti di Syncplay {} fallito. Vuoi visitare http://syncplay.pl/ per verificare manualmente la presenza di aggiornamenti?", #Syncplay version + "update-check-failed-notification" : u"Controllo automatico degli aggiornamenti di Syncplay {} fallito. Vuoi visitare https://syncplay.pl/ per verificare manualmente la presenza di aggiornamenti?", #Syncplay version "syncplay-uptodate-notification" : u"Syncplay è aggiornato", "syncplay-updateavailable-notification" : u"Una nuova versione di Syncplay è disponibile. Vuoi visitare la pagina delle release?", @@ -93,10 +93,10 @@ it = { "language-changed-msgbox-label" : u"La lingua sarà cambiata quando avvierai Syncplay.", "promptforupdate-label" : u"Ti piacerebbe che, di tanto in tanto, Syncplay controllasse automaticamente la presenza di aggiornamenti?", - "vlc-interface-version-mismatch": u"Stai eseguendo la versione {} del modulo di interfaccia per VLC di Syncplay, ma Syncplay è progettato per essere utilizzato con la versione {} o superiore. Per favore, fai riferimento alla User Guide di Syncplay presso http://syncplay.pl/guide/ per istruzioni su come installare syncplay.lua.", # VLC interface version, VLC interface min version - "vlc-interface-oldversion-warning": u"Attenzione: Syncplay ha rilevato una vecchia versione del modulo di interfaccia per VLC di Syncplay installata nella cartella di VLC. Per favore, fai riferimento alla User Guide di Syncplay presso http://syncplay.pl/guide/ per istruzioni su come installare syncplay.lua.", + "vlc-interface-version-mismatch": u"Stai eseguendo la versione {} del modulo di interfaccia per VLC di Syncplay, ma Syncplay è progettato per essere utilizzato con la versione {} o superiore. Per favore, fai riferimento alla User Guide di Syncplay presso https://syncplay.pl/guide/ per istruzioni su come installare syncplay.lua.", # VLC interface version, VLC interface min version + "vlc-interface-oldversion-warning": u"Attenzione: Syncplay ha rilevato una vecchia versione del modulo di interfaccia per VLC di Syncplay installata nella cartella di VLC. Per favore, fai riferimento alla User Guide di Syncplay presso https://syncplay.pl/guide/ per istruzioni su come installare syncplay.lua.", "media-player-latency-warning": u"Attenzione: il media player ha impiegato {} secondi per rispondere. Se stai avendo problemi di sincronizzazione, chiudi delle applicazioni per liberare le risorse di sistema e, se ciò non dovesse avere alcun effetto, prova un altro media player.", # Seconds to respond - "vlc-interface-not-installed": u"Attenzione: il modulo di interfaccia per VLC di Syncplay non è stato trovato nella cartella di VLC. Se stai utilizzando VLC 2.0, VLC userà il modulo syncplay.lua contenuto nella cartella di Syncplay, ma ciò significa che altri custom script di interfaccia ed estensioni non funzioneranno. Per favore, fai riferimento alla User Guide di Syncplay presso http://syncplay.pl/guide/ per istruzioni su come installare syncplay.lua.", + "vlc-interface-not-installed": u"Attenzione: il modulo di interfaccia per VLC di Syncplay non è stato trovato nella cartella di VLC. Se stai utilizzando VLC 2.0, VLC userà il modulo syncplay.lua contenuto nella cartella di Syncplay, ma ciò significa che altri custom script di interfaccia ed estensioni non funzioneranno. Per favore, fai riferimento alla User Guide di Syncplay presso https://syncplay.pl/guide/ per istruzioni su come installare syncplay.lua.", "mpv-unresponsive-error": u"mpv non ha risposto per {} secondi, quindi sembra non funzionare correttamente. Per favore, riavvia Syncplay.", # Seconds to respond # Client prompts @@ -129,8 +129,8 @@ it = { "not-json-error" : u"Non è una stringa con codifica JSON\n", "hello-arguments-error" : "Not enough Hello arguments\n", # DO NOT TRANSLATE "version-mismatch-error" : u"La versione del client è diversa da quella del server\n", - "vlc-failed-connection": u"Impossibile collegarsi a VLC. Se non hai installato syncplay.lua e stai usando l'ultima versione di VLC, fai riferimento a http://syncplay.pl/LUA/ per istruzioni.", - "vlc-failed-noscript": u"VLC ha segnalato che lo script di interfaccia syncplay.lua non è stato installato. Per favore, fai riferimento a http://syncplay.pl/LUA/ per istruzioni.", + "vlc-failed-connection": u"Impossibile collegarsi a VLC. Se non hai installato syncplay.lua e stai usando l'ultima versione di VLC, fai riferimento a https://syncplay.pl/LUA/ per istruzioni.", + "vlc-failed-noscript": u"VLC ha segnalato che lo script di interfaccia syncplay.lua non è stato installato. Per favore, fai riferimento a https://syncplay.pl/LUA/ per istruzioni.", "vlc-failed-versioncheck": u"Questa versione di VLC non è supportata da Syncplay.", "feature-sharedPlaylists" : u"playlist condivise", # used for not-supported-by-server-error @@ -268,7 +268,7 @@ it = { "run-label" : u"Avvia Syncplay", "storeandrun-label" : u"Salva la configurazione e avvia Syncplay", - "contact-label" : u"Sentiti libero di inviare un'e-mail a dev@syncplay.pl, chattare tramite il canale IRC #Syncplay su irc.freenode.net, segnalare un problema su GitHub, lasciare un like sulla nostra pagina Facebook, seguirci su Twitter, o visitare http://syncplay.pl/. NOTA: i messaggi di chat non sono cifrati, quindi non usare Syncplay per inviare dati sensibili.", + "contact-label" : u"Sentiti libero di inviare un'e-mail a dev@syncplay.pl, chattare tramite il canale IRC #Syncplay su irc.freenode.net, segnalare un problema su GitHub, lasciare un like sulla nostra pagina Facebook, seguirci su Twitter, o visitare https://syncplay.pl/. NOTA: i messaggi di chat non sono cifrati, quindi non usare Syncplay per inviare dati sensibili.", "joinroom-label" : u"Entra nella stanza", "joinroom-menu-label" : u"Entra nella stanza {}", @@ -322,7 +322,7 @@ it = { "about-dialog-dependencies": u"Dipendenze", "setoffset-msgbox-label" : u"Imposta offset", - "offsetinfo-msgbox-label" : u"Offset (vedi http://syncplay.pl/guide/ per istruzioni):", + "offsetinfo-msgbox-label" : u"Offset (vedi https://syncplay.pl/guide/ per istruzioni):", "promptforstreamurl-msgbox-label" : u"Apri URL", "promptforstreamurlinfo-msgbox-label" : u"Indirizzo di rete", @@ -334,10 +334,10 @@ it = { "trusteddomains-msgbox-label" : u"Domini a cui è lecito passare automaticamente (uno per riga)", "createcontrolledroom-msgbox-label" : u"Crea stanza gestita", - "controlledroominfo-msgbox-label" : u"Inserisci il nome della stanza gestita\r\n(vedi http://syncplay.pl/guide/ per istruzioni):", + "controlledroominfo-msgbox-label" : u"Inserisci il nome della stanza gestita\r\n(vedi https://syncplay.pl/guide/ per istruzioni):", "identifyascontroller-msgbox-label" : u"Identificati come operatore della stanza", - "identifyinfo-msgbox-label" : u"Inserisci la password dell'operatore per questa stanza\r\n(vedi http://syncplay.pl/guide/ per istruzioni):", + "identifyinfo-msgbox-label" : u"Inserisci la password dell'operatore per questa stanza\r\n(vedi https://syncplay.pl/guide/ per istruzioni):", "public-server-msgbox-label" : u"Seleziona il server pubblico per questa sessione", @@ -418,7 +418,7 @@ it = { "nofile-note" : u"(Nessun file in riproduzione)", # Server messages to client - "new-syncplay-available-motd-message" : u" Stai usando Syncplay {} ma una nuova versione è disponibile presso http://syncplay.pl ", # ClientVersion + "new-syncplay-available-motd-message" : u" Stai usando Syncplay {} ma una nuova versione è disponibile presso https://syncplay.pl ", # ClientVersion # Server notifications "welcome-server-notification" : u"Benvenuto nel server Syncplay, ver. {0}", # version @@ -438,6 +438,7 @@ it = { "server-motd-argument": u"percorso del file da cui verrà letto il messaggio del giorno", "server-chat-argument" : u"abilita o disabilita la chat", "server-chat-maxchars-argument" : u"Numero massimo di caratteri in un messaggio di chat (default è {})", # Default number of characters + "server-maxusernamelength-argument": u"Maximum number of charactrs in a username (default is {})", # TODO: Translate "server-messed-up-motd-unescaped-placeholders": u"Il messaggio del giorno ha dei caratteri non 'escaped'. Tutti i simboli $ devono essere doppi ($$).", "server-messed-up-motd-too-long": u"Il messaggio del giorno è troppo lungo - numero massimo di caratteri è {}, {} trovati.", @@ -459,7 +460,7 @@ it = { "sharedplaylistenabled-label" : u"Abilita le playlist condivise", "removefromplaylist-menu-label" : u"Rimuovi dalla playlist", "shuffleremainingplaylist-menu-label" : u"Mescola i file non ancora riprodotti", - "shuffleentireplaylist-menuu-label" : u"Mescola l'intera playlist", + "shuffleentireplaylist-menu-label" : u"Mescola l'intera playlist", "undoplaylist-menu-label" : u"Annulla l'ultima modifica alla playlist", "addfilestoplaylist-menu-label" : u"Aggiungi un file alla fine della playlist", "addurlstoplaylist-menu-label" : u"Aggiungi un indirizzo alla fine della playlist", diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py index 0b47c07..c235946 100644 --- a/syncplay/messages_ru.py +++ b/syncplay/messages_ru.py @@ -66,7 +66,7 @@ ru = { "controller-userlist-userflag" : u"Оператор", "ready-userlist-userflag" : u"Готов", - "update-check-failed-notification" : u"Невозможно автоматически проверить, что версия Syncplay {} все еще актуальна. Хотите зайти на http://syncplay.pl/ и вручную проверить наличие обновлений?", + "update-check-failed-notification" : u"Невозможно автоматически проверить, что версия Syncplay {} все еще актуальна. Хотите зайти на https://syncplay.pl/ и вручную проверить наличие обновлений?", "syncplay-uptodate-notification" : u"У вас последняя версия Syncplay", "syncplay-updateavailable-notification" : u"Доступна новая версия Syncplay. Хотите открыть страницу релиза?", @@ -94,9 +94,9 @@ ru = { "promptforupdate-label" : u"Вы не против, если Syncplay будет автоматически изредка проверять наличие обновлений?", "vlc-version-mismatch": u"Syncplay не поддерживает данную версию VLC. Syncplay поддерживает VLC {}+, но не VLC 3. Используйте другой проигрыватель.", # VLC min version - "vlc-interface-version-mismatch" : u"Вы используете модуль интерфейса Syncplay устаревшей версии {} для VLC. К сожалению, Syncplay способен работать с версией {} и выше. Пожалуйста, обратитесь к Руководству Пользователя Syncplay (http://syncplay.pl/guide/) за инструкциями о том, как установить syncplay.lua.", # VLC interface version, VLC interface min version - "vlc-interface-oldversion-warning" : u"Внимание: Syncplay обнаружил, что старая версия модуля интерфейса Syncplay для VLC уже установлена в директорию VLC. Пожалуйста, обратитесь к Руководству Пользователя Syncplay (http://syncplay.pl/guide/) за инструкциями о том, как установить syncplay.lua.", - "vlc-interface-not-installed" : u"Внимание: Модуль интерфейса Syncplay для VLC не обнаружен в директории VLC. По существу, если Вы используете VLC 2.0, то VLC будет использовать модуль syncplay.lua из директории Syncplay, но в таком случае другие пользовательские скрипты и расширения интерфейса не будут работать. Пожалуйста, обратитесь к Руководству Пользователя Syncplay (http://syncplay.pl/guide/) за инструкциями о том, как установить syncplay.lua.", + "vlc-interface-version-mismatch" : u"Вы используете модуль интерфейса Syncplay устаревшей версии {} для VLC. К сожалению, Syncplay способен работать с версией {} и выше. Пожалуйста, обратитесь к Руководству Пользователя Syncplay (https://syncplay.pl/guide/) за инструкциями о том, как установить syncplay.lua.", # VLC interface version, VLC interface min version + "vlc-interface-oldversion-warning" : u"Внимание: Syncplay обнаружил, что старая версия модуля интерфейса Syncplay для VLC уже установлена в директорию VLC. Пожалуйста, обратитесь к Руководству Пользователя Syncplay (https://syncplay.pl/guide/) за инструкциями о том, как установить syncplay.lua.", + "vlc-interface-not-installed" : u"Внимание: Модуль интерфейса Syncplay для VLC не обнаружен в директории VLC. По существу, если Вы используете VLC 2.0, то VLC будет использовать модуль syncplay.lua из директории Syncplay, но в таком случае другие пользовательские скрипты и расширения интерфейса не будут работать. Пожалуйста, обратитесь к Руководству Пользователя Syncplay (https://syncplay.pl/guide/) за инструкциями о том, как установить syncplay.lua.", "media-player-latency-warning": u"Внимание: У Вашего проигрывателя слишком большой отклик ({} секунд). Если Вы замечаете проблемы с синхронизацией, то закройте ресурсоемкие приложения. Если это не помогло - попробуйте другой проигрыватель.", # Seconds to respond "mpv-unresponsive-error": u"mpv не отвечает {} секунд, по-видимому, произошел сбой. Пожалуйста, перезапустите Syncplay.", # Seconds to respond @@ -130,8 +130,8 @@ ru = { "not-json-error" : u"Не является закодированной json-строкой\n", "hello-arguments-error" : u"Не хватает аргументов Hello\n", "version-mismatch-error" : u"Конфликт версий между клиентом и сервером\n", - "vlc-failed-connection" : u"Ошибка подключения к VLC. Если у Вас не установлен syncplay.lua, то обратитесь к http://syncplay.pl/LUA/ за инструкциями.", - "vlc-failed-noscript" : u"VLC сообщает, что скрипт интерфейса syncplay.lua не установлен. Пожалуйста, обратитесь к http://syncplay.pl/LUA/ за инструкциями.", + "vlc-failed-connection" : u"Ошибка подключения к VLC. Если у Вас не установлен syncplay.lua, то обратитесь к https://syncplay.pl/LUA/ за инструкциями.", + "vlc-failed-noscript" : u"VLC сообщает, что скрипт интерфейса syncplay.lua не установлен. Пожалуйста, обратитесь к https://syncplay.pl/LUA/ за инструкциями.", "vlc-failed-versioncheck" : u"Данная версия VLC не поддерживается Syncplay. Пожалуйста, используйте VLC версии 2 или выше.", "vlc-failed-other" : u"Во время загрузки скрипта интерфейса syncplay.lua в VLC произошла следующая ошибка: {}", # Syncplay Error @@ -271,7 +271,7 @@ ru = { "run-label" : u"Запустить", "storeandrun-label" : u"Сохранить и запустить", - "contact-label" : u"Есть идея, нашли ошибку или хотите оставить отзыв? Пишите на dev@syncplay.pl, в IRC канал #Syncplay на irc.freenode.net или задавайте вопросы через GitHub. Кроме того, заходите на www.syncplay.pl за инорфмацией, помощью и обновлениями! NOTE: Chat messages are not encrypted so do not use Syncplay to send sensitive information.", # TODO: Translate last sentence + "contact-label" : u"Есть идея, нашли ошибку или хотите оставить отзыв? Пишите на dev@syncplay.pl, в IRC канал #Syncplay на irc.freenode.net или задавайте вопросы через GitHub. Кроме того, заходите на www.syncplay.pl за инорфмацией, помощью и обновлениями! NOTE: Chat messages are not encrypted so do not use Syncplay to send sensitive information.", # TODO: Translate last sentence "joinroom-label" : u"Зайти в комнату", "joinroom-menu-label" : u"Зайти в комнату {}", @@ -420,7 +420,7 @@ ru = { "nofile-note" : u"(ничего)", # Server messages to client - "new-syncplay-available-motd-message" : u" Вы используете Syncplay версии {}. Доступна более новая версия на http://syncplay.pl/ . ", # ClientVersion + "new-syncplay-available-motd-message" : u" Вы используете Syncplay версии {}. Доступна более новая версия на https://syncplay.pl/ . ", # ClientVersion # Server notifications "welcome-server-notification" : u"Добро пожаловать на сервер Syncplay версии {0}", # version @@ -439,6 +439,7 @@ ru = { "server-motd-argument" : u"путь к файлу, из которого будет извлекаться MOTD-сообщение", "server-chat-argument" : "Should chat be disabled?", # TODO: Translate "server-chat-maxchars-argument": u"Maximum number of characters in a chat message (default is {})", # TODO: Translate + "server-maxusernamelength-argument": u"Maximum number of charactrs in a username (default is {})", # TODO: Translate "server-messed-up-motd-unescaped-placeholders" : u"MOTD-сообщение содержит неэкранированные спец.символы. Все знаки $ должны быть продублированы ($$).", "server-messed-up-motd-too-long" : u"MOTD-сообщение слишком длинное: максимальная длина - {} символ(ов), текущая длина - {} символ(ов).", @@ -459,7 +460,7 @@ ru = { "sharedplaylistenabled-label" : u"Включить общий список воспроизведения", "removefromplaylist-menu-label" : u"Удалить", "shufflepremaininglaylist-menuu-label" : u"Shuffle remaining playlist", # Was: Перемешать список # TODO: Translate - "shuffleentireplaylist-menuu-label" : u"Shuffle entire playlist", # TODO: Translate + "shuffleentireplaylist-menu-label" : u"Shuffle entire playlist", # TODO: Translate "undoplaylist-menu-label" : u"Отменить последнее действие", "addfilestoplaylist-menu-label" : u"Добавить файлы в очередь", "addurlstoplaylist-menu-label" : u"Добавить ссылку в очередь", diff --git a/syncplay/server.py b/syncplay/server.py index 21a09ad..8e1c625 100644 --- a/syncplay/server.py +++ b/syncplay/server.py @@ -14,7 +14,7 @@ import argparse from syncplay.utils import RoomPasswordProvider, NotControlledRoom, RandomStringGenerator, meetsMinVersion, playlistIsValid, truncateText class SyncFactory(Factory): - def __init__(self, password='', motdFilePath=None, isolateRooms=False, salt=None, disableReady=False,disableChat=False, maxChatMessageLength=constants.MAX_CHAT_MESSAGE_LENGTH): + def __init__(self, password='', motdFilePath=None, isolateRooms=False, salt=None, disableReady=False,disableChat=False, maxChatMessageLength=constants.MAX_CHAT_MESSAGE_LENGTH, maxUsernameLength=constants.MAX_USERNAME_LENGTH): self.isolateRooms = isolateRooms print getMessage("welcome-server-notification").format(syncplay.version) if password: @@ -28,6 +28,7 @@ class SyncFactory(Factory): self.disableReady = disableReady self.disableChat = disableChat self.maxChatMessageLength = maxChatMessageLength if maxChatMessageLength is not None else constants.MAX_CHAT_MESSAGE_LENGTH + self.maxUsernameLength = maxUsernameLength if maxUsernameLength is not None else constants.MAX_USERNAME_LENGTH if not isolateRooms: self._roomManager = RoomManager() else: @@ -50,7 +51,7 @@ class SyncFactory(Factory): features["managedRooms"] = True features["chat"] = not self.disableChat features["maxChatMessageLength"] = self.maxChatMessageLength - features["maxUsernameLength"] = constants.MAX_USERNAME_LENGTH + features["maxUsernameLength"] = self.maxUsernameLength features["maxRoomNameLength"] = constants.MAX_ROOM_NAME_LENGTH features["maxFilenameLength"] = constants.MAX_FILENAME_LENGTH @@ -549,3 +550,4 @@ class ConfigurationGetter(object): self._argparser.add_argument('--salt', metavar='salt', type=str, nargs='?', help=getMessage("server-salt-argument")) self._argparser.add_argument('--motd-file', metavar='file', type=str, nargs='?', help=getMessage("server-motd-argument")) self._argparser.add_argument('--max-chat-message-length', metavar='maxChatMessageLength',type=int, nargs='?',help=getMessage("server-chat-maxchars-argument").format(constants.MAX_CHAT_MESSAGE_LENGTH)) + self._argparser.add_argument('--max-username-length', metavar='maxUsernameLength', type=int, nargs='?',help=getMessage("server-maxusernamelength-argument").format(constants.MAX_USERNAME_LENGTH)) diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py index 373715d..5a092f0 100755 --- a/syncplay/ui/GuiConfiguration.py +++ b/syncplay/ui/GuiConfiguration.py @@ -1,5 +1,5 @@ from syncplay.vendor.Qt import QtCore, QtWidgets, QtGui, __binding__, IsPySide, IsPySide2 -from syncplay.vendor.Qt.QtCore import Qt, QSettings, QCoreApplication, QSize, QPoint, QUrl, QLine +from syncplay.vendor.Qt.QtCore import Qt, QSettings, QCoreApplication, QSize, QPoint, QUrl, QLine, QEventLoop, Signal from syncplay.vendor.Qt.QtWidgets import QApplication, QLineEdit, QLabel, QCheckBox, QButtonGroup, QRadioButton, QDoubleSpinBox, QPlainTextEdit from syncplay.vendor.Qt.QtGui import QCursor, QIcon, QImage, QDesktopServices if IsPySide2: @@ -25,7 +25,10 @@ class GuiConfiguration: if QCoreApplication.instance() is None: self.app = QtWidgets.QApplication(sys.argv) dialog = ConfigDialog(self.config, self._availablePlayerPaths, self.error, self.defaultConfig) - dialog.exec_() + configLoop = QEventLoop() + dialog.show() + dialog.closed.connect(configLoop.quit) + configLoop.exec_() def setAvailablePaths(self, paths): self._availablePlayerPaths = paths @@ -73,6 +76,8 @@ class ConfigDialog(QtWidgets.QDialog): pressedclosebutton = True moreToggling = False + + closed = Signal() def automaticUpdatePromptCheck(self): if self.automaticupdatesCheckbox.checkState() == Qt.PartiallyChecked: @@ -127,7 +132,7 @@ class ConfigDialog(QtWidgets.QDialog): self.setFixedWidth(self.minimumSizeHint().width()) def openHelp(self): - self.QtGui.QDesktopServices.openUrl(QUrl("http://syncplay.pl/guide/client/")) + self.QtGui.QDesktopServices.openUrl(QUrl("https://syncplay.pl/guide/client/")) def safenormcaseandpath(self, path): if utils.isURL(path): @@ -298,7 +303,7 @@ class ConfigDialog(QtWidgets.QDialog): else: self.config["lastCheckedForUpdates"] = self.lastCheckedForUpdates.toString("yyyy-MM-d HH:mm:ss.z") except: - self.lastCheckedForUpdates = None + self.config["lastCheckedForUpdates"] = None def loadSavedPublicServerList(self): settings = QSettings("Syncplay", "Interface") @@ -421,11 +426,12 @@ class ConfigDialog(QtWidgets.QDialog): self.pressedclosebutton = False self.close() - return + self.closed.emit() def closeEvent(self, event): if self.pressedclosebutton: super(ConfigDialog, self).closeEvent(event) + self.closed.emit() sys.exit() def keyPressEvent(self, event): @@ -590,7 +596,6 @@ class ConfigDialog(QtWidgets.QDialog): self.defaultroomLabel.setObjectName("room") self.defaultroomTextbox.setObjectName("room") - self.usernameTextbox.setMaxLength(constants.MAX_USERNAME_LENGTH) self.defaultroomTextbox.setMaxLength(constants.MAX_ROOM_NAME_LENGTH) self.connectionSettingsLayout = QtWidgets.QGridLayout() @@ -1189,6 +1194,7 @@ class ConfigDialog(QtWidgets.QDialog): self.config['resetConfig'] = True self.pressedclosebutton = False self.close() + self.closed.emit() def showEvent(self, *args, **kwargs): self.ensureTabListIsVisible() diff --git a/syncplay/ui/consoleUI.py b/syncplay/ui/consoleUI.py index 332a0ca..3f7433d 100644 --- a/syncplay/ui/consoleUI.py +++ b/syncplay/ui/consoleUI.py @@ -91,6 +91,10 @@ class ConsoleUI(threading.Thread): def showMessage(self, message, noTimestamp=False): message = message.encode(sys.stdout.encoding, 'replace') + try: + message = message.decode('utf-8') + except UnicodeEncodeError: + pass if noTimestamp: print(message) else: diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index d2fa381..770a732 100755 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -19,6 +19,7 @@ from twisted.internet import task from syncplay.ui.consoleUI import ConsoleUI if isMacOS() and IsPySide: from Foundation import NSURL + from Cocoa import NSString, NSUTF8StringEncoding lastCheckedForUpdates = None class ConsoleInGUI(ConsoleUI): @@ -111,7 +112,7 @@ class AboutDialog(QtWidgets.QDialog): self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint) nameLabel = QtWidgets.QLabel("