From eb9ff490f8206c8010df7f73d3aa8fe9ed9e51b3 Mon Sep 17 00:00:00 2001 From: Jahn Date: Tue, 17 Oct 2023 10:12:52 +0200 Subject: [PATCH 01/67] ci: bump for 1.0 alpha --- CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6d1691ff..be0878d4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -173,11 +173,11 @@ target_compile_definitions(projecteur PRIVATE # Update this information - the version numbers and the version type. # VERSION_TYPE must be either 'release' or 'develop' set_target_properties(projecteur PROPERTIES - VERSION_MAJOR 0 - VERSION_MINOR 10 + VERSION_MAJOR 1 + VERSION_MINOR 0 VERSION_PATCH 0 - VERSION_TYPE release - VERSION_DISTANCE_OFFSET 0 + VERSION_TYPE develop + VERSION_DISTANCE_OFFSET 200 ) add_version_info(projecteur "${CMAKE_CURRENT_SOURCE_DIR}") From 89bdac1fee8aa963d992bd6430f16241862833fb Mon Sep 17 00:00:00 2001 From: Marcel Waldvogel Date: Sat, 11 Nov 2023 14:13:49 +0100 Subject: [PATCH 02/67] Basic support for Kensington PowerPointer --- README.md | 1 + devices.conf | 1 + 2 files changed, 2 insertions(+) diff --git a/README.md b/README.md index 25367c50..84209fdf 100644 --- a/README.md +++ b/README.md @@ -301,6 +301,7 @@ Besides the _Logitech Spotlight_, the following devices are currently supported * AVATTO i10 Pro _(2571:4109)_ * August LP310 _(69a7:9803)_ * Norwii Wireless Presenter _(3243:0122)_ +* Kensington PowerPointer _(1ea7:0002)_ #### Compile Time diff --git a/devices.conf b/devices.conf index fb3a1a08..e6ca4000 100644 --- a/devices.conf +++ b/devices.conf @@ -12,3 +12,4 @@ 0x17ef, 0x60db, bt, Lenovo ThinkPad X1 Presenter Mouse 0x69a7, 0x9803, usb, August LP310 0x3243, 0x0122, usb, Norwii Wireless Presenter +0x1ea7, 0x0002, usb, Kensington PowerPointer From e5313a814563e47d668e02537a3bbe25c891ae69 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 22:19:14 +0000 Subject: [PATCH 03/67] Bump actions/download-artifact from 3 to 4.1.7 in /.github/workflows Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4.1.7. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v3...v4.1.7) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- .github/workflows/ci-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 6d0706c1..e68158bc 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -233,7 +233,7 @@ jobs: steps: - name: Get version-info - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4.1.7 with: name: version-info @@ -246,7 +246,7 @@ jobs: DO_UPLOAD=$(( [ "master" = "$BRANCH" ] || [ "develop" = "$BRANCH" ] ) && echo true || echo false) echo "DO_UPLOAD=${DO_UPLOAD}" >> $GITHUB_ENV - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4.1.7 if: env.DO_UPLOAD == 'true' with: path: artifacts From 67c60ce30c1a30b18fdbe4e679bd364712ad4571 Mon Sep 17 00:00:00 2001 From: Jahn Date: Sun, 24 Nov 2024 07:02:48 +0100 Subject: [PATCH 04/67] chore(ci): update upload-artifact action --- .github/workflows/ci-build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index e68158bc..429ec2fd 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -122,14 +122,14 @@ jobs: # ---------- Upload artifacts to github ---------- - name: Upload source-pkg artifact to github if: startsWith(matrix.docker_tag, 'archlinux') - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: source-package path: ${{ env.src_pkg_artifact }} - name: Upload version-info to github if: startsWith(matrix.docker_tag, 'archlinux') - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: version-info path: | @@ -137,7 +137,7 @@ jobs: ./version-branch - name: Upload binary package artifact to github - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: ${{ matrix.docker_tag }}-package path: ${{ env.dist_pkg_artifact }} From e93343a3daa14d768b6683dafa7084ed8101437c Mon Sep 17 00:00:00 2001 From: Jahn Date: Sun, 24 Nov 2024 07:09:41 +0100 Subject: [PATCH 05/67] ci: update triggers for ci and codeql builds --- .github/workflows/ci-build.yml | 4 +++- .github/workflows/codeql-analysis.yml | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 429ec2fd..5dd41688 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -3,12 +3,14 @@ name: ci-build on: push: branches: - - "**" + - master + - develop pull_request: branches: - master - develop - 'feature/**' + workflow_dispatch: jobs: build: diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 388ee417..c81bf487 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -1,11 +1,11 @@ name: "CodeQL" on: - push: - branches: - - "**" pull_request: branches: [develop, master] + push: + branches: [develop, master] + workflow_dispatch: jobs: analyse: From 099aa1fb15cb783062ed0fc836e38c58ddc8c1aa Mon Sep 17 00:00:00 2001 From: Jahn Date: Sun, 24 Nov 2024 07:35:34 +0100 Subject: [PATCH 06/67] feat: add cmdline option to hide system tray icon --- src/main.cc | 6 +++++- src/projecteurapp.cc | 6 ++++-- src/projecteurapp.h | 3 ++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main.cc b/src/main.cc index 26b452fa..617acaad 100644 --- a/src/main.cc +++ b/src/main.cc @@ -201,6 +201,7 @@ namespace { const QCommandLineOption logLvlOption_ = {QStringList{ "l", "log-level" }, Main::tr("Set log level (dbg,inf,wrn,err)."), "lvl"}; const QCommandLineOption disableUInputOption_ = {QStringList{ "disable-uinput" }, Main::tr("Disable uinput support.")}; const QCommandLineOption showDlgOnStartOption_ = {QStringList{ "show-dialog" }, Main::tr("Show preferences dialog on start.")}; + const QCommandLineOption hideSysTrayOption_ = {QStringList{ "hide-systray-icon"}, Main::tr("Hide the system tray icon.")}; const QCommandLineOption dialogMinOnlyOption_ = {QStringList{ "m", "minimize-only" }, Main::tr("Only allow minimizing the dialog.")}; const QCommandLineOption disableOverlayOption_ = {QStringList{ "disable-overlay" }, Main::tr("Disable spotlight overlay completely.")}; const QCommandLineOption additionalDeviceOption_ = {QStringList{ "D", "additional-device"}, @@ -215,7 +216,7 @@ namespace { parser.addOptions({versionOption_, helpOption_, fullHelpOption_, commandOption_, cfgFileOption_, fullVersionOption_, deviceInfoOption_, logLvlOption_, disableUInputOption_, showDlgOnStartOption_, dialogMinOnlyOption_, - disableOverlayOption_, additionalDeviceOption_}); + disableOverlayOption_, additionalDeviceOption_, hideSysTrayOption_}); } // --------------------------------------------------------------------------------------------- @@ -236,6 +237,7 @@ namespace { auto cfgFileOptionValue() const { return parser.value(cfgFileOption_); } bool logLvlOptionSet() const { return parser.isSet(logLvlOption_); } auto logLvlOptionValue() const { return parser.value(logLvlOption_); } + bool hideSysTrayOptionSet() const { return parser.isSet(hideSysTrayOption_); } // --------------------------------------------------------------------------------------------- void processArgs(int argc, char** argv) @@ -282,6 +284,7 @@ namespace { if (fullHelp) { print() << " --disable-uinput " << disableUInputOption_.description(); print() << " --show-dialog " << showDlgOnStartOption_.description(); + print() << " --hide-systray-icon " << hideSysTrayOption_.description(); print() << " -m, --minimize-only " << dialogMinOnlyOption_.description(); } print() << " -c COMMAND|PROPERTY " << commandOption_.description() << std::endl; @@ -388,6 +391,7 @@ int main(int argc, char *argv[]) options.showPreferencesOnStart = parser.showDlgOnStartOptionSet(); options.dialogMinimizeOnly = parser.dialogMinOnlyOptionSet(); options.disableOverlay = parser.disableOverlayOptionSet(); + options.hideSysTrayIcon = parser.hideSysTrayOptionSet(); if (parser.logLvlOptionSet()) { const auto lvl = logging::levelFromName(parser.logLvlOptionValue()); diff --git a/src/projecteurapp.cc b/src/projecteurapp.cc index 378b3c6e..cd2043fd 100644 --- a/src/projecteurapp.cc +++ b/src/projecteurapp.cc @@ -148,7 +148,7 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio connect(this, &ProjecteurApplication::screenRemoved, this, [this](){ setupScreenOverlays(); }); // Setup the tray icon and menu - setupTrayIcon(); + setupTrayIcon(options); connect(this, &ProjecteurApplication::aboutToQuit, this, [this](){ for (const auto window : m_overlayWindows) { window->close(); } @@ -275,7 +275,7 @@ void ProjecteurApplication::setupSpotlight() } // ------------------------------------------------------------------------------------------------- -void ProjecteurApplication::setupTrayIcon() +void ProjecteurApplication::setupTrayIcon(Options const& options) { // add and connect 'Preferences' tray menu action const auto actionPref = m_trayMenu->addAction(tr("&Preferences...")); @@ -341,6 +341,8 @@ void ProjecteurApplication::setupTrayIcon() logDebug(mainapp) << tr("Exit request from preferences dialog."); actionQuit->trigger(); }); + + m_trayIcon->setVisible(!options.hideSysTrayIcon); } // ------------------------------------------------------------------------------------------------- diff --git a/src/projecteurapp.h b/src/projecteurapp.h index e3ab04ae..60a8c0d1 100644 --- a/src/projecteurapp.h +++ b/src/projecteurapp.h @@ -37,6 +37,7 @@ class ProjecteurApplication : public QApplication bool showPreferencesOnStart = false; bool dialogMinimizeOnly = false; bool disableOverlay = false; + bool hideSysTrayIcon = false; std::vector additionalDevices; }; @@ -71,7 +72,7 @@ private slots: QPoint currentCursorPos() const; void setCurrentCursorPos(const QPoint& pos); - void setupTrayIcon(); + void setupTrayIcon(Options const& options); void setupSpotlight(); private: From 812a15d615d8cff1c41339c5db326613ae420850 Mon Sep 17 00:00:00 2001 From: Jahn Date: Sun, 24 Nov 2024 07:38:45 +0100 Subject: [PATCH 07/67] ci: update github checkout action to v4 --- .github/workflows/ci-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 5dd41688..d84c9ec6 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -62,7 +62,7 @@ jobs: # =================================================================================== # ---------- Checkout and build inside docker container ---------- - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: # unfortunately, currently we need all the history for a valid auto generated version fetch-depth: 0 From 3ae9caeae5bd6d1c07cede8a0dc25ba415f45088 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Rodr=C3=ADguez=20Sela?= Date: Mon, 10 Nov 2025 07:09:51 +0100 Subject: [PATCH 08/67] feat: add support for Norwii N95s BLE Presenter (3243:0382) Add USB device ID 3243:0382 for Norwii N95s BLE Presenter to the supported devices list. This device is detected as "Norwii BLE Presenter Dongle" and creates mouse, keyboard, and generic HID interfaces. --- devices.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/devices.conf b/devices.conf index e6ca4000..a0a6ec55 100644 --- a/devices.conf +++ b/devices.conf @@ -12,4 +12,5 @@ 0x17ef, 0x60db, bt, Lenovo ThinkPad X1 Presenter Mouse 0x69a7, 0x9803, usb, August LP310 0x3243, 0x0122, usb, Norwii Wireless Presenter +0x3243, 0x0382, usb, Norwii N95s BLE Presenter 0x1ea7, 0x0002, usb, Kensington PowerPointer From a9b7d2be89ec5cd37a5b15e1ac1b754d2f72c352 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Rodr=C3=ADguez=20Sela?= Date: Mon, 10 Nov 2025 07:17:28 +0100 Subject: [PATCH 09/67] feat: add Bluetooth support for Norwii N95s BLE Presenter (3243:03a2) Add Bluetooth device ID 3243:03a2 for Norwii N95s BLE Presenter. The device uses different product IDs for USB (0382) and Bluetooth (03a2) connections. --- devices.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/devices.conf b/devices.conf index a0a6ec55..5304a544 100644 --- a/devices.conf +++ b/devices.conf @@ -13,4 +13,5 @@ 0x69a7, 0x9803, usb, August LP310 0x3243, 0x0122, usb, Norwii Wireless Presenter 0x3243, 0x0382, usb, Norwii N95s BLE Presenter +0x3243, 0x03a2, bt, Norwii N95s BLE Presenter 0x1ea7, 0x0002, usb, Kensington PowerPointer From ddfe2820f0bde12a3b281f6aa2349da809d8ecf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Rodr=C3=ADguez=20Sela?= Date: Mon, 10 Nov 2025 07:20:59 +0100 Subject: [PATCH 10/67] NIT --- 55-projecteur.rules.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/55-projecteur.rules.in b/55-projecteur.rules.in index af461319..ea04b853 100644 --- a/55-projecteur.rules.in +++ b/55-projecteur.rules.in @@ -9,7 +9,7 @@ SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c53e", MODE="0660 # Additional supported USB devices @EXTRA_USB_UDEV_RULES@ -# Rule fot the Logitech Spotlight when connected via Bluetooth +# Rule for the Logitech Spotlight when connected via Bluetooth # Updated rule, thanks to Torsten Maehne (https://github.com/maehne) SUBSYSTEMS=="input", ENV{LIBINPUT_DEVICE_GROUP}="5/46d/b503*", ATTRS{name}=="SPOTLIGHT*", MODE="0660", TAG+="uaccess" # Additional rule for Bluetooth sub-devices (hidraw) From 368c14c16b9a4e3f17bb1409f177582c6e10f964 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 09:29:09 -0500 Subject: [PATCH 11/67] feat: recognize Spotlight 2 Bluetooth device --- 55-projecteur.rules.in | 4 ++++ src/devicescan.cc | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/55-projecteur.rules.in b/55-projecteur.rules.in index af461319..beed87be 100644 --- a/55-projecteur.rules.in +++ b/55-projecteur.rules.in @@ -15,6 +15,10 @@ SUBSYSTEMS=="input", ENV{LIBINPUT_DEVICE_GROUP}="5/46d/b503*", ATTRS{name}=="SPO # Additional rule for Bluetooth sub-devices (hidraw) SUBSYSTEMS=="hid", KERNELS=="0005:046D:B503.*", MODE="0660", TAG+="uaccess" +# Rules for the Logitech Spotlight 2 when connected via Bluetooth +SUBSYSTEM=="input", ATTRS{id/vendor}=="046d", ATTRS{id/product}=="b506", MODE="0660", TAG+="uaccess" +SUBSYSTEMS=="hid", KERNELS=="0005:046D:B506.*", MODE="0660", TAG+="uaccess" + # Additional supported Bluetooth devices @EXTRA_BLUETOOTH_UDEV_RULES@ # Rules for uinput: Essential for creating a virtual input device that diff --git a/src/devicescan.cc b/src/devicescan.cc index 32f1cc2d..9c8948d5 100644 --- a/src/devicescan.cc +++ b/src/devicescan.cc @@ -20,9 +20,10 @@ namespace { // ----------------------------------------------------------------------------------------------- // List of supported devices - const std::array supportedDefaultDevices {{ + const std::array supportedDefaultDevices {{ {0x46d, 0xc53e, false, "Logitech Spotlight (USB)"}, {0x46d, 0xb503, true, "Logitech Spotlight (Bluetooth)"}, + {0x46d, 0xb506, true, "Logitech Spotlight 2 (Bluetooth)"}, }}; // ----------------------------------------------------------------------------------------------- From 02aba5453f76f04caa4ef564c6b306a49199ed8d Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 09:29:34 -0500 Subject: [PATCH 12/67] feat: integrate Spotlight 2 input behavior --- src/device-key-lookup.cc | 3 ++- src/spotlight.cc | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/device-key-lookup.cc b/src/device-key-lookup.cc index 68eff2c8..8697c863 100644 --- a/src/device-key-lookup.cc +++ b/src/device-key-lookup.cc @@ -57,6 +57,7 @@ const QString& lookup(const DeviceId& dId, const DeviceInputEvent& die) { {dHash({0x046d, 0xc53e}), logitechSpotlightMapping}, // Spotlight USB {dHash({0x046d, 0xb503}), logitechSpotlightMapping}, // Spotlight Bluetooth + {dHash({0x046d, 0xb506}), logitechSpotlightMapping}, // Spotlight 2 Bluetooth {dHash({0x0c45, 0x8101}), avattoH100Mapping}, // Avatto H100, August WP200 }; @@ -75,4 +76,4 @@ const QString& lookup(const DeviceId& dId, const DeviceInputEvent& die) static const QString notFound; return notFound; } -} // end namespace KeyName \ No newline at end of file +} // end namespace KeyName diff --git a/src/spotlight.cc b/src/spotlight.cc index 20bd96fc..374d859f 100644 --- a/src/spotlight.cc +++ b/src/spotlight.cc @@ -412,7 +412,9 @@ void Spotlight::onEventDataAvailable(int fd, SubEventConnection& connection) // relative input event causing the spotlight to be activated. // The workaround skips a first input move event from the logitech spotlight device. const bool isLogitechSpotlight = connection.deviceId().vendorId == 0x46d - && (connection.deviceId().productId == 0xc53e || connection.deviceId().productId == 0xb503); + && (connection.deviceId().productId == 0xc53e + || connection.deviceId().productId == 0xb503 + || connection.deviceId().productId == 0xb506); const bool logitechIsFirst = isLogitechSpotlight && workaroundLogitechFirstMoveEvent; if (isLogitechSpotlight) From d2cd79b650be22c62a7e5a5b2e9584c70f7b8c21 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 09:30:05 -0500 Subject: [PATCH 13/67] docs: list Spotlight 2 Bluetooth support --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 84209fdf..1a55d3f7 100644 --- a/README.md +++ b/README.md @@ -296,6 +296,7 @@ your screen in an online presentation or call. Besides the _Logitech Spotlight_, the following devices are currently supported out of the box: +* Logitech Spotlight 2 via Bluetooth _(046d:b506)_ * AVATTO H100 / August WP200 _(0c45:8101)_ * August LP315 _(2312:863d)_ * AVATTO i10 Pro _(2571:4109)_ From a6547256b9f7ede7cc2d105bb258fef612d083a2 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 10:43:42 -0500 Subject: [PATCH 14/67] Full port to modern KDE / plasma 6 --- .github/workflows/ci-build.yml | 298 ++---------------- .github/workflows/codeql-analysis.yml | 55 ---- CMakeLists.txt | 116 +------ README.md | 112 ++----- cmake/modules/LinuxDistributionInfo.cmake | 2 +- cmake/modules/LinuxPackaging.cmake | 2 +- cmake/modules/PkgDependenciesProjecteur.cmake | 52 +-- cmake/modules/Translation.cmake | 31 +- .../modules/travis-ci-bintray-deploy.json.in | 2 +- cmake/templates/projecteur.desktop.in | 3 +- cmake/templates/projecteur.metainfo.xml | 13 +- docker/Dockerfile.archlinux | 9 +- docker/Dockerfile.centos-8 | 18 -- docker/Dockerfile.debian-bookworm | 23 -- docker/Dockerfile.debian-bullseye | 20 -- docker/Dockerfile.debian-buster | 25 -- docker/Dockerfile.debian-stretch | 40 --- docker/Dockerfile.fedora-30 | 20 -- docker/Dockerfile.fedora-31 | 21 -- docker/Dockerfile.fedora-32 | 20 -- docker/Dockerfile.fedora-33 | 20 -- docker/Dockerfile.fedora-34 | 20 -- docker/Dockerfile.fedora-37 | 21 -- docker/Dockerfile.fedora-38 | 21 -- docker/Dockerfile.opensuse-15.0 | 26 -- docker/Dockerfile.opensuse-15.1 | 26 -- docker/Dockerfile.opensuse-15.2 | 20 -- docker/Dockerfile.opensuse-15.3 | 20 -- docker/Dockerfile.opensuse-15.4 | 23 -- docker/Dockerfile.opensuse-15.5 | 23 -- docker/Dockerfile.ubuntu-18.04 | 23 -- docker/Dockerfile.ubuntu-20.04 | 22 -- docker/Dockerfile.ubuntu-20.10 | 22 -- docker/Dockerfile.ubuntu-21.04 | 21 -- docker/Dockerfile.ubuntu-22.04 | 23 -- docker/Dockerfile.ubuntu-23.04 | 23 -- docker/README.md | 14 +- qml/main-qt6.qml | 213 ------------- qml/main.qml | 38 ++- qml/qml-qt6.qrc | 9 - src/actiondelegate.cc | 29 +- src/asynchronous.h | 40 +-- src/device-vibration.cc | 5 +- src/device.cc | 5 - src/deviceinput.cc | 12 +- src/deviceinput.h | 3 +- src/hidpp.cc | 7 +- src/hidpp.h | 5 +- src/iconwidgets.cc | 4 +- src/inputseqedit.cc | 11 +- src/linuxdesktop.cc | 205 ++++++------ src/linuxdesktop.h | 6 +- src/logging.cc | 22 +- src/main.cc | 2 +- src/nativekeyseqedit.cc | 16 +- src/preferencesdlg.cc | 74 ----- src/preferencesdlg.h | 3 - src/projecteurapp.cc | 105 ++---- src/projecteurapp.h | 1 - src/settings.cc | 23 +- src/spotshapes.cc | 12 +- 61 files changed, 303 insertions(+), 1797 deletions(-) delete mode 100644 .github/workflows/codeql-analysis.yml delete mode 100644 docker/Dockerfile.centos-8 delete mode 100644 docker/Dockerfile.debian-bookworm delete mode 100644 docker/Dockerfile.debian-bullseye delete mode 100644 docker/Dockerfile.debian-buster delete mode 100644 docker/Dockerfile.debian-stretch delete mode 100644 docker/Dockerfile.fedora-30 delete mode 100644 docker/Dockerfile.fedora-31 delete mode 100644 docker/Dockerfile.fedora-32 delete mode 100644 docker/Dockerfile.fedora-33 delete mode 100644 docker/Dockerfile.fedora-34 delete mode 100644 docker/Dockerfile.fedora-37 delete mode 100644 docker/Dockerfile.fedora-38 delete mode 100644 docker/Dockerfile.opensuse-15.0 delete mode 100644 docker/Dockerfile.opensuse-15.1 delete mode 100644 docker/Dockerfile.opensuse-15.2 delete mode 100644 docker/Dockerfile.opensuse-15.3 delete mode 100644 docker/Dockerfile.opensuse-15.4 delete mode 100644 docker/Dockerfile.opensuse-15.5 delete mode 100644 docker/Dockerfile.ubuntu-18.04 delete mode 100644 docker/Dockerfile.ubuntu-20.04 delete mode 100644 docker/Dockerfile.ubuntu-20.10 delete mode 100644 docker/Dockerfile.ubuntu-21.04 delete mode 100644 docker/Dockerfile.ubuntu-22.04 delete mode 100644 docker/Dockerfile.ubuntu-23.04 delete mode 100644 qml/main-qt6.qml delete mode 100644 qml/qml-qt6.qrc diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index d84c9ec6..ea02f959 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -2,284 +2,34 @@ name: ci-build on: push: - branches: - - master - - develop + branches: [master, develop] pull_request: - branches: - - master - - develop - - 'feature/**' + branches: [master, develop, "feature/**"] workflow_dispatch: jobs: - build: - strategy: - matrix: - docker_tag: - - archlinux - - fedora-31 - - fedora-32 - - fedora-33 - - fedora-34 - - fedora-37 - - fedora-38 - - debian-stretch - - debian-buster - - debian-bullseye - - debian-bookworm - - ubuntu-18.04 - - ubuntu-20.04 - - ubuntu-20.10 - - ubuntu-21.04 - - ubuntu-22.04 - - ubuntu-23.04 - - opensuse-15.0 - - opensuse-15.1 - - opensuse-15.2 - - opensuse-15.3 - - opensuse-15.4 - - opensuse-15.5 - - centos-8 - os: - - ubuntu-latest - - runs-on: ${{ matrix.os }} - env: - DOCKER_IMG: ghcr.io/jahnf/projecteur/projecteur - DOCKER_TAG: ${{ matrix.docker_tag }} - MAKEFLAGS: -j2 - CLOUDSMITH_USER: jahnf - CLOUDSMITH_SUMMARY: ci-build from branch '${{ github.ref }}' - CLOUDSMITH_DESC: For more information visit https://github.com/jahnf/Projecteur - - steps: - # =================================================================================== - # ---------- Add ~/.local/bin to PATH ---------- - - run: | - export LOCAL_BIN=~/.local/bin - echo "${LOCAL_BIN}" >> $GITHUB_PATH - - # =================================================================================== - # ---------- Checkout and build inside docker container ---------- - - uses: actions/checkout@v4 - with: - # unfortunately, currently we need all the history for a valid auto generated version - fetch-depth: 0 - - - run: | - export BRANCH=${GITHUB_REF/refs\/heads\//} - echo Detected branch: ${BRANCH} - echo "BRANCH=${BRANCH}" >> $GITHUB_ENV - - - name: Pull ${{ matrix.docker_tag }} docker image - run: | - docker pull ${DOCKER_IMG}:${{ matrix.docker_tag }} - - name: docker create build container - run: | - docker run --name build --env MAKEFLAGS=${MAKEFLAGS} \ - --env TRAVIS_BRANCH=${BRANCH} \ - -d -v `pwd`:/source:ro -t ${DOCKER_IMG}:${{ matrix.docker_tag }} - - name: cmake configuration - run: docker exec build /bin/bash -c "mkdir -p /build/dist-pkg && cd /build && cmake /source" - - name: cmake build - run: docker exec build /bin/bash -c "cd /build && cmake --build ." - - name: create linux package - run: docker exec build /bin/bash -c "cd /build && cmake --build . --target dist-package" - - name: Run projecteur executable, print version - run: | - docker exec build /bin/bash -c "cd /build && ./projecteur --version" - docker exec build /bin/bash -c "cd /build && ./projecteur -f" - - # =================================================================================== - # ---------- Gather artifacts and version information from container build ---------- - - name: Get created artifacts from docker container - run: | - docker cp build:/build/dist-pkg . - docker cp build:/build/version-string . - - - name: Set version environment variable - run: | - projecteur_version=`cat version-string` - echo "projecteur_version=${projecteur_version}" >> $GITHUB_ENV - - - name: Move source package - if: startsWith(matrix.docker_tag, 'archlinux') - run: mkdir -p source-pkg && mv dist-pkg/*source.tar.gz ./source-pkg || true - - - name: Get source package filename for artifact uploads - run: | - src_pkg_artifact=`ls -1 source-pkg/* | head -n 1` - echo "src_pkg_artifact=${src_pkg_artifact}" >> $GITHUB_ENV - - - name: Get binary package filename for artifact uploads - run: | - dist_pkg_artifact=`ls -1 dist-pkg/* | head -n 1` - echo "dist_pkg_artifact=${dist_pkg_artifact}" >> $GITHUB_ENV - - - if: startsWith(matrix.docker_tag, 'archlinux') - run: echo "${{ env.BRANCH }}" >> version-branch - - # =================================================================================== - # ---------- Upload artifacts to github ---------- - - name: Upload source-pkg artifact to github - if: startsWith(matrix.docker_tag, 'archlinux') - uses: actions/upload-artifact@v4 - with: - name: source-package - path: ${{ env.src_pkg_artifact }} - - - name: Upload version-info to github - if: startsWith(matrix.docker_tag, 'archlinux') - uses: actions/upload-artifact@v4 - with: - name: version-info - path: | - ./version-string - ./version-branch - - - name: Upload binary package artifact to github - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.docker_tag }}-package - path: ${{ env.dist_pkg_artifact }} - - # =================================================================================== - # ---------- Set environment variables depending on branch ---------- - - name: Set environment variable defaults - run: | - echo "upload_bin_pkg=${{ false }}" >> $GITHUB_ENV - echo "upload_src_pkg=${{ false }}" >> $GITHUB_ENV - echo "cloudsmith_upload_repo=projecteur-develop" >> $GITHUB_ENV - echo "REPO_UPLOAD=${{ false }}" >> $GITHUB_ENV - - - name: Check for binary-pkg upload conditions - if: ${{ (env.BRANCH == 'develop' || env.BRANCH == 'master') && github.repository == 'jahnf/Projecteur' }} - run: | - echo "upload_bin_pkg=${{ true }}" >> $GITHUB_ENV - pip install --upgrade wheel - pip install --upgrade cloudsmith-cli - - - name: Check for source-pkg upload conditions - if: ${{ env.upload_bin_pkg == 'true' && startsWith(matrix.docker_tag, 'archlinux') && github.repository == 'jahnf/Projecteur' }} - run: | - echo "upload_src_pkg=${{ true }}" >> $GITHUB_ENV - - - if: env.BRANCH == 'master' - run: | - echo "cloudsmith_upload_repo=projecteur-stable" >> $GITHUB_ENV - - # =================================================================================== - # ---------- Upload artifacts to cloudsmith ---------- - - name: Upload raw binary-pkg to cloudsmith - if: env.upload_bin_pkg == 'true' - env: - CLOUDSMITH_API_KEY: ${{ secrets.CLOUDSMITH_API_KEY }} - CLOUDSMITH_REPO: ${{ env.cloudsmith_upload_repo }} - run: | - cloudsmith push raw -W -k ${CLOUDSMITH_API_KEY} --name ${{ matrix.docker_tag }} --republish \ - --version ${{ env.projecteur_version }} ${CLOUDSMITH_USER}/${CLOUDSMITH_REPO} \ - --summary "${CLOUDSMITH_SUMMARY}" --description "${CLOUDSMITH_DESC}" ${{ env.dist_pkg_artifact }} - - - name: Upload raw source-pkg to cloudsmith - if: ${{ env.upload_src_pkg == 'true' && github.repository == 'jahnf/Projecteur' }} - env: - CLOUDSMITH_API_KEY: ${{ secrets.CLOUDSMITH_API_KEY }} - CLOUDSMITH_REPO: ${{ env.cloudsmith_upload_repo }} - run: | - cloudsmith push raw -W -k ${CLOUDSMITH_API_KEY} --name sources --republish \ - --version ${{ env.projecteur_version }} ${CLOUDSMITH_USER}/${CLOUDSMITH_REPO} \ - --summary "${CLOUDSMITH_SUMMARY}" --description "${CLOUDSMITH_DESC}" ${{ env.src_pkg_artifact }} - - - name: Get package and repo type for upload - if: env.upload_bin_pkg == 'true' - run: | - filename=$(basename -- "${{ env.dist_pkg_artifact }}") - export PKG_TYPE="${filename##*.}" - declare -A distromap=( ["debian-stretch"]="debian/stretch" ["debian-buster"]="debian/buster" \ - ["debian-bullseye"]="debian/bullseye" ["debian-bookworm"]="debian/bookworm" \ - ["ubuntu-18.04"]="ubuntu/bionic" \ - ["ubuntu-20.04"]="ubuntu/focal" ["ubuntu-21.04"]="ubuntu/hirsute" \ - ["ubuntu-22.04"]="ubuntu/jammy" ["ubuntu-23.04"]="ubuntu/lunar" \ - ["opensuse-15.1"]="opensuse/15.1" ["opensuse-15.2"]="opensuse/15.2" \ - ["opensuse-15.3"]="opensuse/15.3" ["opensuse-15.4"]="opensuse/15.4" \ - ["opensuse-15.5"]="opensuse/15.5" ["centos-8"]="el/8" \ - ["fedora-31"]="fedora/31" \ - ["fedora-32"]="fedora/32" ["fedora-33"]="fedora/33" \ - ["fedora-34"]="fedora/34" ["fedora-37"]="fedora/37" ["fedora-38"]="fedora/38" ) - export DISTRO=${distromap[${{ matrix.docker_tag }}]} - echo PKGTYPE=$PKG_TYPE - echo DISTRO=$DISTRO - echo "PKG_TYPE=${PKG_TYPE}" >> $GITHUB_ENV - echo "DISTRO=${DISTRO}" >> $GITHUB_ENV - if [ -z ${DISTRO} ] || [ -z ${PKG_TYPE} ]; then \ - export REPO_UPLOAD=false; else export REPO_UPLOAD=true; fi; - echo "REPO_UPLOAD=${REPO_UPLOAD}" >> $GITHUB_ENV - - - name: Linux repo upload on cloudsmith for ${{ env.DISTRO }} - if: env.REPO_UPLOAD == 'true' - env: - CLOUDSMITH_API_KEY: ${{ secrets.CLOUDSMITH_API_KEY }} - CLOUDSMITH_REPO: ${{ env.cloudsmith_upload_repo }} - run: | - echo Uploading for ${DISTRO} - ${PKG_TYPE}: ${CLOUDSMITH_USER}/${CLOUDSMITH_REPO}/${DISTRO} - cloudsmith push ${PKG_TYPE} -W -k ${CLOUDSMITH_API_KEY} --republish \ - ${CLOUDSMITH_USER}/${CLOUDSMITH_REPO}/${DISTRO} ${{ env.dist_pkg_artifact }} - - # ===================================================================================== - # ---------- Upload artifacts to projecteur server ------------ - projecteur-bin-upload: - if: ${{ github.repository == 'jahnf/Projecteur' }} - needs: build + archlinux: runs-on: ubuntu-latest + container: archlinux:latest steps: - - name: Get version-info - uses: actions/download-artifact@v4.1.7 - with: - name: version-info - - - name: Extract version info - run: | - BRANCH=`cat version-branch` - echo "BRANCH=${BRANCH}" >> $GITHUB_ENV - VERSION=`cat version-string` - echo "VERSION=${VERSION}" >> $GITHUB_ENV - DO_UPLOAD=$(( [ "master" = "$BRANCH" ] || [ "develop" = "$BRANCH" ] ) && echo true || echo false) - echo "DO_UPLOAD=${DO_UPLOAD}" >> $GITHUB_ENV - - - uses: actions/download-artifact@v4.1.7 - if: env.DO_UPLOAD == 'true' - with: - path: artifacts - - - name: Create upload directory - if: env.DO_UPLOAD == 'true' - run: | - BRANCHDIR=${{ env.BRANCH }} - [ "master" = "$BRANCHDIR" ] && BRANCHDIR=stable - VERSION=${{ env.VERSION }} - mkdir -p upload/$BRANCHDIR/$VERSION - find ./artifacts -iname "projecteur*" -exec mv -t upload/$BRANCHDIR/$VERSION {} + - BRANCHNAME=${BRANCHDIR/\//_} - BRANCH_FILENAME=${BRANCHNAME}-latest.json - echo '{ "version": "${{ env.VERSION}}" }' >> upload/$BRANCH_FILENAME - echo "BRANCHNAME=${BRANCHNAME}" >> $GITHUB_ENV - find . -iname "projecteur*" - cd upload/$BRANCHDIR/$VERSION - sha1sum * > sha1sums.txt - - - name: 📂 Upload files - if: env.DO_UPLOAD == 'true' - run: | - cd upload && sudo apt-get install lftp --no-install-recommends - lftp ${{ secrets.PROJECTEUR_UPLOAD_HOSTNAME }} \ - -u "${{ secrets.PROJECTEUR_UPLOAD_USER }},${{ secrets.PROJECTEUR_UPLOAD_TOKEN }}" \ - -e "set ftp:ssl-force true; set ssl:verify-certificate true; mirror \ - --reverse --upload-older --dereference -x ^\.git/$ ./ ./; quit" - - - name: Update latest symlink - if: env.DO_UPLOAD == 'true' - run: | - curl --fail -i -X POST -F "token=${{ secrets.PROJECTEUR_UPDATE_TOKEN }}" \ - ${{ secrets.PROJECTEUR_UPDATE_URL }}?branch=${{ env.BRANCHNAME }} + - name: Install build dependencies + run: >- + pacman -Syu --noconfirm + base-devel cmake git layer-shell-qt + qt6-base qt6-declarative qt6-tools + + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Configure + run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DPACKAGE_TARGETS=OFF + + - name: Build + run: cmake --build build --parallel 2 + + - name: Smoke test + run: | + ./build/projecteur --version + ./build/projecteur --help diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml deleted file mode 100644 index c81bf487..00000000 --- a/.github/workflows/codeql-analysis.yml +++ /dev/null @@ -1,55 +0,0 @@ -name: "CodeQL" - -on: - pull_request: - branches: [develop, master] - push: - branches: [develop, master] - workflow_dispatch: - -jobs: - analyse: - if: ${{ github.repository == 'jahnf/Projecteur' }} - name: Analyse - runs-on: ubuntu-20.04 - - steps: - - name: Install dependencies - run: | - sudo apt-get update && \ - sudo apt-get --no-install-recommends install pkg-config qtdeclarative5-dev \ - qttools5-dev-tools qttools5-dev \ - qt5-default libqt5x11extras5-dev - - - name: Checkout repository - uses: actions/checkout@v3 - with: - # We must fetch at least the immediate parents so that if this is - # a pull request then we can checkout the head. - fetch-depth: 2 - - # If this run was triggered by a pull request event, then checkout - # the head of the pull request instead of the merge commit. - # - run: git checkout HEAD^2 - # if: ${{ github.event_name == 'pull_request' }} - - - name: Configure and build Qt moc cpps - run: | - mkdir build && cd build - cmake .. - make projecteur_autogen - make projecteur_autogen/mocs_compilation.cpp.o - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v2 - with: - queries: +security-and-quality - - - name: Build project - run: | - cd build - make -j2 - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 diff --git a/CMakeLists.txt b/CMakeLists.txt index be0878d4..5162c42c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,13 +1,4 @@ -cmake_minimum_required(VERSION 3.6) - -# Use QTDIR environment variable with find_package, -# e.g. set QTDIR=/home/user/Qt/5.9.6/gcc_64/ -if(NOT "$ENV{QTDIR}" STREQUAL "") - set(QTDIR $ENV{QTDIR}) - list(APPEND CMAKE_PREFIX_PATH $ENV{QTDIR}) -elseif(QTDIR) - list(APPEND CMAKE_PREFIX_PATH ${QTDIR}) -endif() +cmake_minimum_required(VERSION 3.20) # Set the default build type to release if( NOT CMAKE_BUILD_TYPE ) @@ -24,88 +15,18 @@ add_compile_options(-Wall -Wextra -Werror) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules") include(GitVersion) -include(Translation) - -set(QtVersionOptions "Auto" "5" "6") -set(PROJECTEUR_QT_VERSION "Auto" CACHE STRING "Choose the Qt version") -set_property(CACHE PROJECTEUR_QT_VERSION PROPERTY STRINGS ${QtVersionOptions}) - -list(FIND QtVersionOptions ${PROJECTEUR_QT_VERSION} index) -if(index EQUAL -1) - message(FATAL_ERROR "PROJECTEUR_QT_VERSION must be one of ${QtVersionOptions}") -endif() - -if ("${PROJECTEUR_QT_VERSION}" STREQUAL "Auto") - find_package(QT NAMES Qt6 Qt5 RCOMPONENTS Core REQUIRED) -else() - set(QT_VERSION_MAJOR ${PROJECTEUR_QT_VERSION}) -endif() - -find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core REQUIRED) -set(QT_PACKAGE_NAME Qt${QT_VERSION_MAJOR}) - -message(STATUS "Using Qt version: ${Qt${QT_VERSION_MAJOR}_VERSION}") - -if(${QT_PACKAGE_NAME}_VERSION VERSION_LESS "6.0") - set(CMAKE_CXX_STANDARD 14) -else() - set(CMAKE_CXX_STANDARD 17) -endif() +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) - set(CMAKE_AUTOMOC ON) -find_package(${QT_PACKAGE_NAME} 5.7 REQUIRED COMPONENTS Core Gui Quick Widgets) - -if(${QT_PACKAGE_NAME}_VERSION VERSION_LESS "6.0") - find_package(${QT_PACKAGE_NAME} QUIET COMPONENTS X11Extras) - set(HAS_Qt_X11Extras ${${QT_PACKAGE_NAME}_FOUND}) -else() - set(HAS_Qt_X11Extras 0) -endif() - -find_package(${QT_PACKAGE_NAME} QUIET COMPONENTS DBus) -set(HAS_Qt_DBus ${${QT_PACKAGE_NAME}_FOUND}) -find_package(${QT_PACKAGE_NAME} QUIET COMPONENTS QuickCompiler) -set(HAS_Qt_QuickCompiler ${${QT_PACKAGE_NAME}_FOUND}) - -# Qt 5.8 seems to have issues with the way Projecteur shows the full screen overlay window, -# let's warn the user about it. -if(Qt5_VERSION VERSION_EQUAL "5.8" - OR (Qt5_VERSION VERSION_GREATER "5.8" AND Qt5_VERSION VERSION_LESS "5.9")) - message(WARNING "There are known issues when using Projecteur with Qt Version 5.8, " - "please use a different Qt Version.") -endif() - -if (HAS_Qt_QuickCompiler) - # Off by default, since this ties the application strictly to the Qt version - # it is built with, see https://doc.qt.io/qt-5.12/qtquick-deployment.html#compiling-qml-ahead-of-time - option(USE_QTQUICK_COMPILER "Use the QtQuickCompiler" OFF) -else() - set(USE_QTQUICK_COMPILER OFF) -endif() - -if (USE_QTQUICK_COMPILER) - message(STATUS "Using QtQuick Compiler.") - qtquick_compiler_add_resources(RESOURCES qml/qml.qrc) - # Avoid CMake policy CMP0071 warning - foreach(resfile IN LISTS RESOURCES) - set_property(SOURCE "${resfile}" PROPERTY SKIP_AUTOMOC ON) - endforeach() -else() - if(${QT_PACKAGE_NAME}_VERSION VERSION_LESS "6.0") - qt5_add_resources(RESOURCES qml/qml.qrc) - else() - qt6_add_resources(RESOURCES qml/qml-qt6.qrc) - endif() -endif() +find_package(Qt6 6.11 REQUIRED COMPONENTS Core DBus Gui LinguistTools Quick Widgets) +find_package(LayerShellQt 6.7 REQUIRED) +set(QT_PACKAGE_NAME Qt6) +message(STATUS "Using Qt version: ${Qt6_VERSION}") +include(Translation) -if(${QT_PACKAGE_NAME}_VERSION VERSION_LESS "6.0") - qt5_add_resources(RESOURCES resources.qrc) -else() - qt6_add_resources(RESOURCES resources.qrc) -endif() +qt6_add_resources(RESOURCES qml/qml.qrc resources.qrc) add_executable(projecteur src/main.cc src/enum-helper.h @@ -140,25 +61,9 @@ add_executable(projecteur target_include_directories(projecteur PRIVATE src) target_link_libraries(projecteur - PRIVATE ${QT_PACKAGE_NAME}::Core ${QT_PACKAGE_NAME}::Quick ${QT_PACKAGE_NAME}::Widgets + PRIVATE Qt6::Core Qt6::DBus Qt6::Quick Qt6::Widgets LayerShellQt::Interface ) -if(HAS_Qt_X11Extras) - if(${QT_PACKAGE_NAME}_VERSION VERSION_LESS "6.0") - target_link_libraries(projecteur PRIVATE ${QT_PACKAGE_NAME}::X11Extras) - endif() - target_compile_definitions(projecteur PRIVATE HAS_Qt_X11Extras=1) -else() - message(STATUS "Compiling without Qt5::X11Extras.") -endif() - -if(HAS_Qt_DBus) - target_link_libraries(projecteur PRIVATE ${QT_PACKAGE_NAME}::DBus) - target_compile_definitions(projecteur PRIVATE HAS_Qt_DBus=1) -else() - message(STATUS "Compiling without Qt5::DBus.") -endif() - target_compile_options(projecteur PRIVATE $<$,$>:-Wall -Wextra> @@ -331,7 +236,7 @@ if(PACKAGE_TARGETS) add_dist_package_target( PROJECT "${CMAKE_PROJECT_NAME}" TARGET projecteur - DESCRIPTION_BRIEF "Linux/X11 application for the Logitech Spotlight device." + DESCRIPTION_BRIEF "Wayland application for the Logitech Spotlight device." DESCRIPTION_FULL "Projecteur is a virtual laser pointer for use with inertial pointers such as the Logitech Spotlight. Projecteur can show a colored dot, a highlighted @@ -373,4 +278,3 @@ find_program(iwyu_path NAMES include-what-you-use iwyu) if(ENABLE_IWYU AND iwyu_path) set_property(TARGET projecteur PROPERTY CXX_INCLUDE_WHAT_YOU_USE ${iwyu_path}) endif() - diff --git a/README.md b/README.md index 1a55d3f7..9a410a3a 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,8 @@ develop: [![Build Status develop][gh-badge-dev]][gh-link-dev] master: [![Build Status master][gh-badge-rel]][gh-link-rel] -Linux/X11 application for the Logitech Spotlight device (and similar devices). \ -See **[Download](#download)** section for binary packages. +Qt 6 / KDE Plasma Wayland application for the Logitech Spotlight device (and similar devices). \ +This branch is the Qt 6 / Plasma Wayland port. [gh-badge-dev]: https://github.com/jahnf/Projecteur/workflows/ci-build/badge.svg?branch=develop [gh-badge-rel]: https://github.com/jahnf/Projecteur/workflows/ci-build/badge.svg?branch=master @@ -32,7 +32,6 @@ So here it is: a Linux application for the Logitech Spotlight. - [How it works](#how-it-works) - [Button mapping](#button-mapping) - [Hold Button Mapping for Logitech Spotlight](#hold-button-mapping-for-logitech-spotlight) - - [Download](#download) - [Building](#building) - [Requirements](#requirements) - [Build Example](#build-example) @@ -84,10 +83,12 @@ So here it is: a Linux application for the Logitech Spotlight. ## Supported Environments -The application was mostly tested on Ubuntu 18.04, Ubuntu 20.04 (GNOME) and -OpenSuse 15 (GNOME) but should work on almost any Linux/X11 Desktop. In case -you are building the application yourself, make sure you have the correct udev -rules installed (see [pre-requisites section](#pre-requisites)). +This port targets KDE Plasma 6.7 on Wayland with Qt 6.11. X11 and Qt 5 are not +supported. The spotlight overlay and device features are Wayland-native; zoom uses +KWin's restricted `org.kde.KWin.ScreenShot2` interface. + +If you build the application yourself, install both the generated desktop entry and +udev rules (see [pre-requisites](#pre-requisites)). ## How it works @@ -145,54 +146,30 @@ mapped for a particular button, both actions will executed if user hold the button and move device. To avoid this situation, do not set both Long-Press and Hold Move actions for the same button. -## Download - -The latest binary packages for some Linux distributions are available for download on cloudsmith. -Currently binary packages for _Ubuntu_, _Debian_, _Fedora_, _OpenSuse_, _CentOS_ and -_Arch_ Linux are automatically built. For release version downloads you can also visit -the project's [github releases page](https://github.com/jahnf/Projecteur/releases). - -* **Latest release:** - * on cloudsmith: [![cloudsmith-rel-badge]][cloudsmith-rel-latest] - * on secondery server: [![projecteur-rel-badge]][projecteur-rel-dl] -* Latest development version: - * on cloudsmith: [![cloudsmith-dev-badge]][cloudsmith-dev-latest] - * on secondary server: [![projecteur-dev-badge]][projecteur-dev-dl] - -See also the **[list of Linux repositories](./doc/LinuxRepositories.md)** where _Projecteur_ -is available. - -[cloudsmith-rel-badge]: https://img.shields.io/badge/dynamic/json?color=blue&labelColor=12577e&logo=cloudsmith&label=Projecteur&prefix=v&query=%24.version&url=https%3A%2F%2Fprojecteur.de%2Fdownloads%2Fstable-latest.json -[cloudsmith-rel-latest]: https://cloudsmith.io/~jahnf/repos/projecteur-stable/packages/?q=format%3Araw+tag%3Alatest -[cloudsmith-dev-badge]: https://img.shields.io/badge/dynamic/json?color=blue&labelColor=12577e&logo=cloudsmith&label=Projecteur&prefix=v&query=%24.version&url=https%3A%2F%2Fprojecteur.de%2Fdownloads%2Fdevelop-latest.json -[cloudsmith-dev-latest]: https://cloudsmith.io/~jahnf/repos/projecteur-develop/packages/?q=format%3Araw+tag%3Alatest -[projecteur-rel-badge]: https://img.shields.io/badge/dynamic/json?color=blue&label=Projecteur&prefix=v&query=%24.version&url=https%3A%2F%2Fprojecteur.de%2Fdownloads%2Fstable-latest.json -[projecteur-dev-badge]: https://img.shields.io/badge/dynamic/json?color=blue&label=Projecteur&prefix=v&query=%24.version&url=https%3A%2F%2Fprojecteur.de%2Fdownloads%2Fdevelop-latest.json -[projecteur-dev-dl]: https://projecteur.de/downloads/develop/latest -[projecteur-rel-dl]: https://projecteur.de/downloads/stable/latest - ## Building ### Requirements -* C++14 compiler -* CMake 3.6 or later -* Qt 5.7 and later +* C++17 compiler +* CMake 3.20 or later +* Qt 6.11 with Core, DBus, Gui, LinguistTools, Quick, and Widgets +* KDE Plasma 6.7 Wayland +* LayerShellQt 6.7 ### Build Example ```sh - git clone https://github.com/jahnf/Projecteur - cd Projecteur - mkdir build && cd build - cmake .. - make +git clone https://github.com/jahnf/Projecteur +cd Projecteur +cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr +cmake --build build +sudo cmake --install build ``` -Building against other Qt versions, than the default one from your Linux distribution -can be done by setting the `QTDIR` variable during CMake configuration. - -Example: `QTDIR=/opt/Qt/5.9.6/gcc_64 cmake ..` +Installing is required for zoom: KWin authorizes the screenshot interface by matching +the running executable with the installed `projecteur.desktop` metadata. A binary run +directly from the build directory can use the normal spotlight, but KWin will reject +its zoom capture request. ## Installation/Running @@ -212,11 +189,6 @@ file in this repository: `55-projecteur.rules.in` * After that, the input devices from the Logitech USB Receiver (but also the Bluetooth device) in /dev/input should be readable/writable by you. (See also about [device detection](#device-shows-as-not-connected)) -* When building against the Qt version that comes with your distribution's packages, - you might need to install some additional QML module packages. For example this - is the case for Ubuntu, where you need to install the packages - `qml-module-qtgraphicaleffects`, `qml-module-qtquick-window2`, `qml-modules-qtquick2` and - `qtdeclarative5-dev` to satisfy the application's run time dependencies. ### Application Menu @@ -326,33 +298,18 @@ sure the device is accessible (via udev rules). #### Opaque Spotlight / No Transparency -To be able to show transparent windows, a **compositing manager** is necessary. If there is no -compositing manager running you will see the spotlight overlay as an opaque window. - -* On **KDE** it might be necessary to turn on Desktop effects to allow transparent windows. -* Depending on your Linux Desktop and configuration there might not be a compositing manager - running by default. You can run `xcompmgr`, `compton` or others manually. - * Examples: `xcompmgr -c -t-6 -l-6 -o.1` or `xcompmgr -c` +The overlay requires the Plasma Wayland compositor. Verify that the session reports +`XDG_SESSION_TYPE=wayland` and that Projecteur logs `Qt platform plugin: wayland`. #### Missing System Tray -_Projecteur_ was developed and tested on GNOME and KDE Desktop environments, but should -work on most other desktop environments. If the system tray with the _Application Menu_ -is not showing, commands can be send to the application to bring up the preferences +If the Plasma system tray does not show the _Application Menu_, commands can be sent +to the application to bring up the preferences dialog, test the spotlight, quit the application or set spotlight properties. See [Command Line Interface](#command-line-interface). There is also a command line option (`-m`) to prevent the preferences dialog from hiding, allowing it only to minimize - behaving more like a regular application window. -On some distributions that have a **GNOME Desktop** by default there is -**no system tray extensions** installed (_Fedora_ for example). You can install the -[KStatusNotifierItem/AppIndicator Support][appind-ext] or the [TopIcons Plus][topicon-ext] -GNOME extension to have a system tray that can show the _Projecteur_ tray icon -(and also from other applications like Dropbox or Skype). - -[appind-ext]: https://extensions.gnome.org/extension/615/appindicator-support/ -[topicon-ext]: https://extensions.gnome.org/extension/1031/topicons/ - #### Zoom is not updated while spotlight is shown Zoom does not update while spotlight is shown due to how the zoom currently works. A screenshot is @@ -365,20 +322,15 @@ same position on the screen. #### Wayland -While not developed with Wayland in mind, users reported _Projecteur_ works with -Wayland. If you experience problems, you can try to set the `QT_QPA_PLATFORM` environment -variable to `wayland`, example: - -```bash -user@ubuntu1904:~/Projecteur/build$ QT_QPA_PLATFORM=wayland ./projecteur -Using Wayland-EGL -``` +Wayland is the only supported windowing platform in this port. Do not force +`QT_QPA_PLATFORM=xcb`. #### Wayland Zoom -On Wayland the Zoom feature is currently only implemented on KDE and GNOME. This is done with -the help of their respective DBus interfaces for screen capturing. On other environments with -Wayland, the zoom feature is not currently supported. +Zoom is implemented for KDE Plasma through KWin's `ScreenShot2` DBus interface. The +installed desktop entry declares the required restricted interface. If the log says +the process is not authorized to take a screenshot, install Projecteur instead of +running it from an arbitrary build path. #### Device shows as not connected diff --git a/cmake/modules/LinuxDistributionInfo.cmake b/cmake/modules/LinuxDistributionInfo.cmake index 5b9df22b..4c7a62bd 100644 --- a/cmake/modules/LinuxDistributionInfo.cmake +++ b/cmake/modules/LinuxDistributionInfo.cmake @@ -1,5 +1,5 @@ # This file is part of Projecteur - https://github.com/jahnf/projecteur - See LICENSE.md and README.md -cmake_minimum_required(VERSION 3.6) +cmake_minimum_required(VERSION 3.20) # Try to get the Linux distribution and version as a string (host system) # When cross compiling this function won't work to get the target distribution. diff --git a/cmake/modules/LinuxPackaging.cmake b/cmake/modules/LinuxPackaging.cmake index 29bd9e60..8bffc905 100644 --- a/cmake/modules/LinuxPackaging.cmake +++ b/cmake/modules/LinuxPackaging.cmake @@ -1,5 +1,5 @@ # This file is part of Projecteur - https://github.com/jahnf/projecteur - See LICENSE.md and README.md -cmake_minimum_required(VERSION 3.6) +cmake_minimum_required(VERSION 3.20) include(LinuxDistributionInfo) set(_LinuxPackaging_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}") diff --git a/cmake/modules/PkgDependenciesProjecteur.cmake b/cmake/modules/PkgDependenciesProjecteur.cmake index eeef027f..caa35d00 100644 --- a/cmake/modules/PkgDependenciesProjecteur.cmake +++ b/cmake/modules/PkgDependenciesProjecteur.cmake @@ -1,59 +1,15 @@ -list(APPEND _PkgDeps_Projecteur_opensuse - "libqt5-qtgraphicaleffects >= 5.7" - "libQt5Widgets5 >= 5.7" - "libQt5X11Extras5 >= 5.7" - "libQt5DBus5 >= 5.7" - "shadow" - "udev" -) - -list(APPEND _PkgDeps_Projecteur_fedora - "qt5-qtbase >= 5.7" - "qt5-qtdeclarative >= 5.7" - "qt5-qtgraphicaleffects >= 5.7" - "qt5-qtx11extras >= 5.7" - "passwd" - "udev" -) - -list(APPEND _PkgDeps_Projecteur_centos - "qt5-qtbase >= 5.7" - "qt5-qtdeclarative >= 5.7" - "qt5-qtgraphicaleffects >= 5.7" - "qt5-qtx11extras >= 5.7" - "passwd" - "udev" -) - -list(APPEND _PkgDeps_Projecteur_debian - "qml-module-qtgraphicaleffects (>= 5.7)" - "libqt5widgets5 (>= 5.7)" - "libqt5x11extras5 (>= 5.7)" - "passwd" - "udev" - "libc6" -) - list(APPEND _PkgDeps_Projecteur_archlinux - "qt5-base>=5.7" - "qt5-declarative>=5.7" - "qt5-graphicaleffects>=5.7" - "qt5-x11extras>=5.7" + "qt6-base>=6.11" + "qt6-declarative>=6.11" + "layer-shell-qt>=6.7" "udev" ) list(APPEND _PkgDepsMake_Projecteur_archlinux - "fakeroot" "awk" "cmake" "make" "lsb-release" "tar" "pkg-config" "qt5-tools" + "fakeroot" "awk" "cmake>=3.20" "make" "lsb-release" "tar" "pkg-config" "qt6-tools>=6.11" ) list(APPEND PkgDependencies_MAP_Projecteur - "debian::_PkgDeps_Projecteur_debian" - "ubuntu::_PkgDeps_Projecteur_debian" - "fedora::_PkgDeps_Projecteur_fedora" - "centos::_PkgDeps_Projecteur_centos" - "rhel::_PkgDeps_Projecteur_centos" - "opensuse::_PkgDeps_Projecteur_opensuse" - "opensuse-leap::_PkgDeps_Projecteur_opensuse" "archlinux::_PkgDeps_Projecteur_archlinux" "arch::_PkgDeps_Projecteur_archlinux" ) diff --git a/cmake/modules/Translation.cmake b/cmake/modules/Translation.cmake index 5eccc7c6..18356179 100644 --- a/cmake/modules/Translation.cmake +++ b/cmake/modules/Translation.cmake @@ -1,30 +1,21 @@ -find_package(Qt5 REQUIRED COMPONENTS Core) +find_package(${QT_PACKAGE_NAME} REQUIRED COMPONENTS Core LinguistTools) # Extract the qmake executable location -get_target_property(Qt5_QMAKE_EXECUTABLE Qt5::qmake IMPORTED_LOCATION) +get_target_property(QT_QMAKE_EXECUTABLE ${QT_PACKAGE_NAME}::qmake IMPORTED_LOCATION) # Find Qts own translations dir (containing qt_*.qm, qtbase_*.qm ...) if(NOT QT_TRANSLATIONS_DIR) - # Ask Qt5 where to put the translations - execute_process(COMMAND ${Qt5_QMAKE_EXECUTABLE} -query QT_INSTALL_TRANSLATIONS + # Ask the selected Qt version where to put the translations + execute_process(COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_TRANSLATIONS OUTPUT_VARIABLE qt_translations_dir OUTPUT_STRIP_TRAILING_WHITESPACE) # For windows systems: replace \ with / in directory path file(TO_CMAKE_PATH "${qt_translations_dir}" qt_translations_dir) set(QT_TRANSLATIONS_DIR ${qt_translations_dir} CACHE PATH "The location of the Qt translations" FORCE) endif() -find_package(Qt5LinguistTools QUIET) -if(NOT Qt5_LRELEASE_EXECUTABLE) - execute_process(COMMAND ${Qt5_QMAKE_EXECUTABLE} -query QT_INSTALL_BINS - OUTPUT_VARIABLE _qt_bin_dir OUTPUT_STRIP_TRAILING_WHITESPACE) - # For windows systems: replace \ with / in directory path - file(TO_CMAKE_PATH "${_qt_bin_dir}" _qt_bin_dir) - set(Qt5_LRELEASE_EXECUTABLE ${_qt_bin_dir}/lrelease) - set(Qt5_LCONVERT_EXECUTABLE ${_qt_bin_dir}/lconvert) - set(Qt5_LUPDATE_EXECUTABLE ${_qt_bin_dir}/lupdate) -else() - get_target_property(Qt5_LCONVERT_EXECUTABLE Qt5::lconvert IMPORTED_LOCATION) -endif() +get_target_property(QT_LRELEASE_EXECUTABLE ${QT_PACKAGE_NAME}::lrelease IMPORTED_LOCATION) +get_target_property(QT_LCONVERT_EXECUTABLE ${QT_PACKAGE_NAME}::lconvert IMPORTED_LOCATION) +get_target_property(QT_LUPDATE_EXECUTABLE ${QT_PACKAGE_NAME}::lupdate IMPORTED_LOCATION) # Helper function, takes the .qm file to be generated and a variable list of .ts files # to create a custom command that then can be used for a custom target. @@ -37,7 +28,7 @@ function(add_qm_translation_file _qm_file) SET(tsfiles_blank_sep "${tsfiles_blank_sep} ${tsfile}") endforeach() add_custom_command(OUTPUT ${_qm_file} - COMMAND ${Qt5_LRELEASE_EXECUTABLE} + COMMAND ${QT_LRELEASE_EXECUTABLE} ARGS ${_ts_files} -qm ${_qm_file} DEPENDS ${_ts_files} VERBATIM COMMENT "Executing: lrelease -silent ${tsfiles_blank_sep} -qm ${_qm_file}" @@ -67,10 +58,10 @@ function(add_combined_qm_translation_file _combined_qm_file) endforeach() list(REMOVE_DUPLICATES _single_qm_files) add_custom_command(OUTPUT ${_combined_qm_file} - COMMAND ${Qt5_LCONVERT_EXECUTABLE} + COMMAND ${QT_LCONVERT_EXECUTABLE} ARGS -o ${_combined_qm_file} ${_single_qm_files} DEPENDS ${_single_qm_files} VERBATIM - COMMENT "Executing: ${Qt5_LCONVERT_EXECUTABLE} -o ${_combined_qm_file} ${_single_qm_files}" + COMMENT "Executing: ${QT_LCONVERT_EXECUTABLE} -o ${_combined_qm_file} ${_single_qm_files}" ) endfunction() @@ -94,7 +85,7 @@ function(add_translation_update_task _prefix _input_dirs _output_dir _languages) set_target_properties(${_ts_files_tgt} PROPERTIES FOLDER "translation") set_target_properties(${_ts_files_tgt} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1) add_custom_command(TARGET ${_ts_files_tgt} PRE_BUILD - COMMAND ${Qt5_LUPDATE_EXECUTABLE} + COMMAND ${QT_LUPDATE_EXECUTABLE} ARGS ${_input_dirs} ARGS -locations relative ARGS -ts diff --git a/cmake/modules/travis-ci-bintray-deploy.json.in b/cmake/modules/travis-ci-bintray-deploy.json.in index ac2fb9d1..d933adc8 100644 --- a/cmake/modules/travis-ci-bintray-deploy.json.in +++ b/cmake/modules/travis-ci-bintray-deploy.json.in @@ -9,7 +9,7 @@ "vcs_url": "https://github.com/jahnf/Projecteur.git", "github_use_tag_release_notes": false, "licenses": ["MIT"], - "labels": ["linux", "x11", "logitech", "spotlight", "desktop", "presentation"], + "labels": ["linux", "wayland", "kde", "logitech", "spotlight", "desktop", "presentation"], "public_download_numbers": false, "public_stats": false }, diff --git a/cmake/templates/projecteur.desktop.in b/cmake/templates/projecteur.desktop.in index 045810c0..265f005f 100644 --- a/cmake/templates/projecteur.desktop.in +++ b/cmake/templates/projecteur.desktop.in @@ -2,7 +2,8 @@ Type=Application Exec=@PROJECTEUR_INSTALL_PATH@ Name=Projecteur -GenericName=Linux/X11 application for the Logitech Spotlight device. +GenericName=Wayland spotlight for Logitech presenter devices Icon=projecteur Terminal=false Categories=Office;Presentation; +X-KDE-DBUS-Restricted-Interfaces=org.kde.KWin.ScreenShot2 diff --git a/cmake/templates/projecteur.metainfo.xml b/cmake/templates/projecteur.metainfo.xml index 119ccd84..c8293939 100644 --- a/cmake/templates/projecteur.metainfo.xml +++ b/cmake/templates/projecteur.metainfo.xml @@ -1,10 +1,15 @@ - - projecteur - Expat - Expat + + io.github.jahnf.Projecteur + FSFAP + MIT Projecteur Virtual pointer for the Logitech Spotlight device + + Jahn Fuchs + + projecteur.desktop + @HOMEPAGE@

diff --git a/docker/Dockerfile.archlinux b/docker/Dockerfile.archlinux index 1fcee879..1ab88380 100644 --- a/docker/Dockerfile.archlinux +++ b/docker/Dockerfile.archlinux @@ -15,11 +15,10 @@ RUN pacman --noconfirm -Sy && pacman --noconfirm -S \ make \ cmake \ git \ - qt5-tools \ - qt5-base \ - qt5-declarative \ - qt5-x11extras \ - qt5-graphicaleffects + qt6-tools \ + qt6-base \ + qt6-declarative \ + layer-shell-qt RUN pacman --noconfirm -Sy && pacman --noconfirm -S \ libusb diff --git a/docker/Dockerfile.centos-8 b/docker/Dockerfile.centos-8 deleted file mode 100644 index dbd6cc2b..00000000 --- a/docker/Dockerfile.centos-8 +++ /dev/null @@ -1,18 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM centos:centos8 - -RUN dnf -y install --setopt=install_weak_deps=False \ - cmake \ - udev \ - gcc-c++ \ - tar \ - make \ - git \ - qt5-qtdeclarative-devel \ - pkg-config \ - rpm-build \ - qt5-linguist \ - qt5-qtx11extras-devel \ - libusbx-devel diff --git a/docker/Dockerfile.debian-bookworm b/docker/Dockerfile.debian-bookworm deleted file mode 100644 index 705d8777..00000000 --- a/docker/Dockerfile.debian-bookworm +++ /dev/null @@ -1,23 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM debian:bookworm - -RUN apt-get update && mkdir /build -RUN DEBIAN_FRONTEND="noninteractive" \ - apt-get install -y --no-install-recommends \ - ca-certificates \ - g++ \ - make \ - cmake \ - udev \ - git \ - pkg-config \ - qtdeclarative5-dev \ - qttools5-dev-tools \ - qttools5-dev \ - libqt5x11extras5-dev \ - libusb-1.0-0-dev \ - && rm -rf /var/lib/apt/lists/* - -RUN git config --global --add safe.directory /source diff --git a/docker/Dockerfile.debian-bullseye b/docker/Dockerfile.debian-bullseye deleted file mode 100644 index 371afde1..00000000 --- a/docker/Dockerfile.debian-bullseye +++ /dev/null @@ -1,20 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM debian:bullseye - -RUN apt-get update -RUN DEBIAN_FRONTEND="noninteractive" \ - apt-get install -y --no-install-recommends \ - ca-certificates \ - g++ \ - make \ - cmake \ - udev \ - git \ - pkg-config \ - qtdeclarative5-dev \ - qttools5-dev-tools \ - libqt5x11extras5-dev \ - libusb-1.0-0-dev \ - && rm -rf /var/lib/apt/lists/* diff --git a/docker/Dockerfile.debian-buster b/docker/Dockerfile.debian-buster deleted file mode 100644 index bb46fdbe..00000000 --- a/docker/Dockerfile.debian-buster +++ /dev/null @@ -1,25 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM debian:buster - -RUN apt-get update -RUN apt-get install -y --no-install-recommends \ - ca-certificates - -RUN apt-get install -y --no-install-recommends \ - g++ \ - make \ - cmake \ - udev \ - git \ - pkg-config - -RUN apt-get install -y --no-install-recommends \ - qtdeclarative5-dev \ - qttools5-dev-tools \ - qt5-default - -RUN apt-get install -y --no-install-recommends \ - libqt5x11extras5-dev \ - libusb-1.0-0-dev diff --git a/docker/Dockerfile.debian-stretch b/docker/Dockerfile.debian-stretch deleted file mode 100644 index 6a171116..00000000 --- a/docker/Dockerfile.debian-stretch +++ /dev/null @@ -1,40 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM debian:stretch - -RUN apt-get update -RUN apt-get install -y --no-install-recommends \ - ca-certificates - -RUN apt-get install -y --no-install-recommends \ - g++ \ - make \ - cmake \ - udev \ - git \ - pkg-config - -RUN apt-get install -y --no-install-recommends \ - qtdeclarative5-dev \ - qttools5-dev-tools \ - qt5-default - -RUN apt-get install -y --no-install-recommends \ - libqt5x11extras5-dev \ - libusb-1.0-0-dev - -RUN apt-get install -y --no-install-recommends \ - libqt5x11extras5-dev \ - libusb-1.0-0-dev - -RUN apt-get install -y --no-install-recommends \ - wget - -# Install newer CMake version, -# otherwise the package version in the debian package -# created by the dist-package target will not be correct -RUN wget https://github.com/Kitware/CMake/releases/download/v3.19.6/cmake-3.19.6-Linux-x86_64.sh && \ - chmod +x cmake-3.19.6-Linux-x86_64.sh && \ - ./cmake-3.19.6-Linux-x86_64.sh --skip-license --prefix=/usr && \ - rm ./cmake-3.19.6-Linux-x86_64.sh diff --git a/docker/Dockerfile.fedora-30 b/docker/Dockerfile.fedora-30 deleted file mode 100644 index 9edda9ba..00000000 --- a/docker/Dockerfile.fedora-30 +++ /dev/null @@ -1,20 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM fedora:30 - -RUN dnf -y install --setopt=install_weak_deps=False --best \ - cmake \ - udev \ - gcc-c++ \ - tar \ - make \ - git \ - qt5-qtdeclarative-devel \ - pkg-config \ - rpm-build - -RUN dnf -y install --setopt=install_weak_deps=False --best \ - qt5-linguist \ - qt5-qtx11extras-devel \ - libusbx-devel diff --git a/docker/Dockerfile.fedora-31 b/docker/Dockerfile.fedora-31 deleted file mode 100644 index b9914f5f..00000000 --- a/docker/Dockerfile.fedora-31 +++ /dev/null @@ -1,21 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM fedora:31 - -RUN dnf -y install --setopt=install_weak_deps=False --best \ - cmake \ - udev \ - gcc-c++ \ - tar \ - make \ - git \ - qt5-qtdeclarative-devel \ - pkg-config \ - rpm-build - -RUN dnf -y install --setopt=install_weak_deps=False --best \ - qt5-linguist \ - qt5-qtx11extras-devel \ - libusbx-devel - diff --git a/docker/Dockerfile.fedora-32 b/docker/Dockerfile.fedora-32 deleted file mode 100644 index 7eeababc..00000000 --- a/docker/Dockerfile.fedora-32 +++ /dev/null @@ -1,20 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM fedora:32 - -RUN mkdir /build -RUN dnf -y install --setopt=install_weak_deps=False --best \ - cmake \ - udev \ - gcc-c++ \ - tar \ - make \ - git \ - qt5-qtdeclarative-devel \ - pkg-config \ - rpm-build \ - qt5-linguist \ - qt5-qtx11extras-devel \ - libusbx-devel - diff --git a/docker/Dockerfile.fedora-33 b/docker/Dockerfile.fedora-33 deleted file mode 100644 index 733c1859..00000000 --- a/docker/Dockerfile.fedora-33 +++ /dev/null @@ -1,20 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM fedora:33 - -RUN mkdir /build -RUN dnf -y install --setopt=install_weak_deps=False --best \ - cmake \ - udev \ - gcc-c++ \ - tar \ - make \ - git \ - qt5-qtdeclarative-devel \ - pkg-config \ - rpm-build \ - qt5-linguist \ - qt5-qtx11extras-devel \ - libusbx-devel - diff --git a/docker/Dockerfile.fedora-34 b/docker/Dockerfile.fedora-34 deleted file mode 100644 index 92d641ce..00000000 --- a/docker/Dockerfile.fedora-34 +++ /dev/null @@ -1,20 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM fedora:34 - -RUN mkdir /build -RUN dnf -y install --setopt=install_weak_deps=False --best \ - cmake \ - udev \ - gcc-c++ \ - tar \ - make \ - git \ - qt5-qtdeclarative-devel \ - pkg-config \ - rpm-build \ - qt5-linguist \ - qt5-qtx11extras-devel \ - libusbx-devel - diff --git a/docker/Dockerfile.fedora-37 b/docker/Dockerfile.fedora-37 deleted file mode 100644 index a926c031..00000000 --- a/docker/Dockerfile.fedora-37 +++ /dev/null @@ -1,21 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM fedora:37 - -RUN mkdir /build -RUN dnf -y install --setopt=install_weak_deps=False --best \ - cmake \ - udev \ - gcc-c++ \ - tar \ - make \ - git \ - qt5-qtdeclarative-devel \ - pkg-config \ - rpm-build \ - qt5-linguist \ - qt5-qtx11extras-devel \ - libusbx-devel - -RUN git config --global --add safe.directory /source diff --git a/docker/Dockerfile.fedora-38 b/docker/Dockerfile.fedora-38 deleted file mode 100644 index 997e5d74..00000000 --- a/docker/Dockerfile.fedora-38 +++ /dev/null @@ -1,21 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM fedora:38 - -RUN mkdir /build -RUN dnf -y install --setopt=install_weak_deps=False --best \ - cmake \ - udev \ - gcc-c++ \ - tar \ - make \ - git \ - qt5-qtdeclarative-devel \ - pkg-config \ - rpm-build \ - qt5-linguist \ - qt5-qtx11extras-devel \ - libusbx-devel - -RUN git config --global --add safe.directory /source diff --git a/docker/Dockerfile.opensuse-15.0 b/docker/Dockerfile.opensuse-15.0 deleted file mode 100644 index 4d0e58b0..00000000 --- a/docker/Dockerfile.opensuse-15.0 +++ /dev/null @@ -1,26 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM opensuse/leap:15.0 - -RUN zypper --non-interactive in --no-recommends \ - pkg-config \ - udev \ - gcc-c++ \ - tar \ - make \ - cmake \ - git \ - wget \ - libqt5-qtdeclarative-devel \ - rpmbuild - -RUN zypper --non-interactive in --no-recommends \ - libqt5-linguist - -RUN zypper --non-interactive in --no-recommends \ - libqt5-qtx11extras-devel \ - libusb-1_0-devel - -RUN zypper --non-interactive in --no-recommends \ - libQt5DBus-devel diff --git a/docker/Dockerfile.opensuse-15.1 b/docker/Dockerfile.opensuse-15.1 deleted file mode 100644 index a856cc2c..00000000 --- a/docker/Dockerfile.opensuse-15.1 +++ /dev/null @@ -1,26 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM opensuse/leap:15.1 - -RUN zypper --non-interactive in --no-recommends \ - pkg-config \ - udev \ - gcc-c++ \ - tar \ - make \ - cmake \ - git \ - wget \ - libqt5-qtdeclarative-devel \ - rpmbuild - -RUN zypper --non-interactive in --no-recommends \ - libqt5-linguist - -RUN zypper --non-interactive in --no-recommends \ - libqt5-qtx11extras-devel \ - libusb-1_0-devel - -RUN zypper --non-interactive in --no-recommends \ - libQt5DBus-devel \ No newline at end of file diff --git a/docker/Dockerfile.opensuse-15.2 b/docker/Dockerfile.opensuse-15.2 deleted file mode 100644 index 77f53bda..00000000 --- a/docker/Dockerfile.opensuse-15.2 +++ /dev/null @@ -1,20 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM opensuse/leap:15.2 - -RUN zypper --non-interactive in --no-recommends \ - pkg-config \ - udev \ - gcc-c++ \ - tar \ - make \ - cmake \ - git \ - wget \ - libqt5-qtdeclarative-devel \ - rpmbuild \ - libqt5-linguist \ - libqt5-qtx11extras-devel \ - libusb-1_0-devel \ - libQt5DBus-devel diff --git a/docker/Dockerfile.opensuse-15.3 b/docker/Dockerfile.opensuse-15.3 deleted file mode 100644 index 5eb6427f..00000000 --- a/docker/Dockerfile.opensuse-15.3 +++ /dev/null @@ -1,20 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM opensuse/leap:15.3 - -RUN zypper --non-interactive in --no-recommends \ - pkg-config \ - udev \ - gcc-c++ \ - tar \ - make \ - cmake \ - git \ - wget \ - libqt5-qtdeclarative-devel \ - rpmbuild \ - libqt5-linguist \ - libqt5-qtx11extras-devel \ - libusb-1_0-devel \ - libQt5DBus-devel diff --git a/docker/Dockerfile.opensuse-15.4 b/docker/Dockerfile.opensuse-15.4 deleted file mode 100644 index 7765cdaf..00000000 --- a/docker/Dockerfile.opensuse-15.4 +++ /dev/null @@ -1,23 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM opensuse/leap:15.4 - -RUN mkdir /build -RUN zypper --non-interactive in --no-recommends \ - pkg-config \ - udev \ - gcc-c++ \ - tar \ - make \ - cmake \ - git \ - wget \ - libqt5-qtdeclarative-devel \ - rpmbuild \ - libqt5-linguist \ - libqt5-qtx11extras-devel \ - libusb-1_0-devel \ - libQt5DBus-devel - -RUN git config --global --add safe.directory /source diff --git a/docker/Dockerfile.opensuse-15.5 b/docker/Dockerfile.opensuse-15.5 deleted file mode 100644 index a2f3a225..00000000 --- a/docker/Dockerfile.opensuse-15.5 +++ /dev/null @@ -1,23 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM opensuse/leap:15.5 - -RUN mkdir /build -RUN zypper --non-interactive in --no-recommends \ - pkg-config \ - udev \ - gcc-c++ \ - tar \ - make \ - cmake \ - git \ - wget \ - libqt5-qtdeclarative-devel \ - rpmbuild \ - libqt5-linguist \ - libqt5-qtx11extras-devel \ - libusb-1_0-devel \ - libQt5DBus-devel - -RUN git config --global --add safe.directory /source diff --git a/docker/Dockerfile.ubuntu-18.04 b/docker/Dockerfile.ubuntu-18.04 deleted file mode 100644 index e3901096..00000000 --- a/docker/Dockerfile.ubuntu-18.04 +++ /dev/null @@ -1,23 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM ubuntu:18.04 - -RUN apt-get update -RUN apt-get install -y --no-install-recommends \ - ca-certificates - -RUN apt-get install -y --no-install-recommends \ - g++ \ - make \ - cmake \ - udev \ - git \ - pkg-config \ - qtdeclarative5-dev \ - qttools5-dev-tools \ - qttools5-dev \ - qt5-default \ - libqt5x11extras5-dev \ - libusb-1.0-0-dev \ - && rm -rf /var/lib/apt/lists/* diff --git a/docker/Dockerfile.ubuntu-20.04 b/docker/Dockerfile.ubuntu-20.04 deleted file mode 100644 index 90c22633..00000000 --- a/docker/Dockerfile.ubuntu-20.04 +++ /dev/null @@ -1,22 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM ubuntu:20.04 - -RUN apt-get update && mkdir /build -RUN DEBIAN_FRONTEND="noninteractive" \ - apt-get install -y --no-install-recommends \ - ca-certificates \ - g++ \ - make \ - cmake \ - udev \ - git \ - pkg-config \ - qtdeclarative5-dev \ - qttools5-dev-tools \ - qttools5-dev \ - qt5-default \ - libqt5x11extras5-dev \ - libusb-1.0-0-dev \ - && rm -rf /var/lib/apt/lists/* diff --git a/docker/Dockerfile.ubuntu-20.10 b/docker/Dockerfile.ubuntu-20.10 deleted file mode 100644 index d38ec0fe..00000000 --- a/docker/Dockerfile.ubuntu-20.10 +++ /dev/null @@ -1,22 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM ubuntu:20.10 - -RUN apt-get update && mkdir /build -RUN DEBIAN_FRONTEND="noninteractive" \ - apt-get install -y --no-install-recommends \ - ca-certificates \ - g++ \ - make \ - cmake \ - udev \ - git \ - pkg-config \ - qtdeclarative5-dev \ - qttools5-dev-tools \ - qttools5-dev \ - qt5-default \ - libqt5x11extras5-dev \ - libusb-1.0-0-dev \ - && rm -rf /var/lib/apt/lists/* diff --git a/docker/Dockerfile.ubuntu-21.04 b/docker/Dockerfile.ubuntu-21.04 deleted file mode 100644 index 86f9871b..00000000 --- a/docker/Dockerfile.ubuntu-21.04 +++ /dev/null @@ -1,21 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM ubuntu:21.04 - -RUN apt-get update && mkdir /build -RUN DEBIAN_FRONTEND="noninteractive" \ - apt-get install -y --no-install-recommends \ - ca-certificates \ - g++ \ - make \ - cmake \ - udev \ - git \ - pkg-config \ - qtdeclarative5-dev \ - qttools5-dev-tools \ - qttools5-dev \ - libqt5x11extras5-dev \ - libusb-1.0-0-dev \ - && rm -rf /var/lib/apt/lists/* diff --git a/docker/Dockerfile.ubuntu-22.04 b/docker/Dockerfile.ubuntu-22.04 deleted file mode 100644 index 638840ad..00000000 --- a/docker/Dockerfile.ubuntu-22.04 +++ /dev/null @@ -1,23 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM ubuntu:22.04 - -RUN apt-get update && mkdir /build -RUN DEBIAN_FRONTEND="noninteractive" \ - apt-get install -y --no-install-recommends \ - ca-certificates \ - g++ \ - make \ - cmake \ - udev \ - git \ - pkg-config \ - qtdeclarative5-dev \ - qttools5-dev-tools \ - qttools5-dev \ - libqt5x11extras5-dev \ - libusb-1.0-0-dev \ - && rm -rf /var/lib/apt/lists/* - -RUN git config --global --add safe.directory /source diff --git a/docker/Dockerfile.ubuntu-23.04 b/docker/Dockerfile.ubuntu-23.04 deleted file mode 100644 index 5f0c20bf..00000000 --- a/docker/Dockerfile.ubuntu-23.04 +++ /dev/null @@ -1,23 +0,0 @@ -# Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags - -FROM ubuntu:23.04 - -RUN apt-get update && mkdir /build -RUN DEBIAN_FRONTEND="noninteractive" \ - apt-get install -y --no-install-recommends \ - ca-certificates \ - g++ \ - make \ - cmake \ - udev \ - git \ - pkg-config \ - qtdeclarative5-dev \ - qttools5-dev-tools \ - qttools5-dev \ - libqt5x11extras5-dev \ - libusb-1.0-0-dev \ - && rm -rf /var/lib/apt/lists/* - -RUN git config --global --add safe.directory /source diff --git a/docker/README.md b/docker/README.md index 34e3d0aa..0480d853 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,12 +1,8 @@ -# Projecteur Dockerfiles +# Projecteur build container -Docker configuration files for build containers used in _Projecteur_ CI builds. +The maintained container targets the Qt 6 / KDE Plasma Wayland port on current +Arch Linux. -Example for creating an image: +```sh +docker build -f Dockerfile.archlinux --tag projecteur:archlinux . ``` -docker build -f Dockerfile.ubuntu-20.10 --tag jahnf/projecteur:ubuntu-20.10 . -``` - -Images used in the CI build can be found on docker hub: -https://hub.docker.com/r/jahnf/projecteur - diff --git a/qml/main-qt6.qml b/qml/main-qt6.qml deleted file mode 100644 index 085d0d1f..00000000 --- a/qml/main-qt6.qml +++ /dev/null @@ -1,213 +0,0 @@ -// This file is part of Projecteur - https://github.com/jahnf/projecteur - See LICENSE.md and README.md -import QtQuick 2.3 -import QtQuick.Window 2.2 - -import Qt5Compat.GraphicalEffects - -import Projecteur.Utils 1.0 as Utils - -Window { - id: mainWindow - property var screenId: -1 - readonly property bool spotOnCurrentWindow: ProjecteurApp.currentSpotScreen === screenId - property alias desktopPixmap: desktopImage.pixmap - - width: 300; height: 200 - - flags: Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.SplashScreen - - color: "transparent" - - readonly property double diagonal: Math.sqrt(Math.pow(Math.max(width, height),2)*2) - - Item { - id: rotationItem - anchors.centerIn: parent - width: rotation === 0 ? mainWindow.width : mainWindow.diagonal; - height: rotation === 0 ? mainWindow.height : width - rotation: Settings.spotRotationAllowed ? Settings.spotRotation : 0 - - opacity: ProjecteurApp.overlayVisible ? 1.0 : 0.0 - Behavior on opacity { PropertyAnimation { easing.type: Easing.OutQuad } } - - Item { - id: desktopItem - anchors.centerIn: centerRect - visible: false; enabled: false; clip: true - scale: Settings.zoomFactor - width: centerRect.width / scale; height: centerRect.height / scale - - Utils.Image { - id: desktopImage - smooth: rotation == 0 ? false : true - rotation: -rotationItem.rotation - readonly property real xOffset: Math.floor(parent.width/2.0 + ((rotationItem.width-mainWindow.width)/2)) - readonly property real yOffset: Math.floor(parent.height/2.0 + ((rotationItem.height-mainWindow.height)/2)) - x: -ma.mouseX + xOffset - y: -ma.mouseY + yOffset - width: mainWindow.width; height: mainWindow.height - } - } - - OpacityMask { - visible: Settings.zoomEnabled && mainWindow.spotOnCurrentWindow - cached: true - anchors.fill: centerRect - source: desktopItem - maskSource: spotShapeLoader.item - enabled: false - } - - Item { - anchors.fill: parent - MouseArea { - id: ma - - readonly property bool calculateMapping: Settings.multiScreenOverlayEnabled && !mainWindow.spotOnCurrentWindow - readonly property point globalPos: calculateMapping ? ProjecteurApp.currentCursorPos : Qt.point(0,0) - readonly property point mappedPos: calculateMapping ? mainWindow.contentItem.mapFromGlobal(globalPos.x, globalPos.y) : globalPos - readonly property int posX: spotOnCurrentWindow ? mouseX : mappedPos.x - readonly property int posY: spotOnCurrentWindow ? mouseY : mappedPos.y - - cursorShape: Settings.cursor - anchors.fill: parent - hoverEnabled: true - onClicked: { ProjecteurApp.spotlightWindowClicked() } - onExited: { ProjecteurApp.cursorExitedWindow() } - onEntered: { ProjecteurApp.cursorEntered(screenId) } - onPositionChanged: (mouse) => { - - if (Settings.multiScreenOverlayEnabled) { - ProjecteurApp.cursorPositionChanged( - mainWindow.contentItem.mapToGlobal(mouse.x, mouse.y)) - } - } - } - } - - Rectangle { - property int spotSize: (mainWindow.height / 100.0) * Settings.spotSize - id: centerRect - opacity: Settings.shadeOpacity - height: spotSize > 50 ? Math.min(spotSize, mainWindow.height) : 50 - width: height - x: ma.posX - width/2 - y: ma.posY - height/2 - color: Settings.shadeColor - visible: false - enabled: false - } - - Loader { - id: spotShapeLoader - visible: false; enabled: false - anchors.centerIn: centerRect - width: centerRect.width; height: width - sourceComponent: Qt.createComponent(Settings.spotShape) - } - - OpacityMask { - id: spot - visible: Settings.showSpotShade - opacity: centerRect.opacity - cached: true - invert: true - anchors.fill: centerRect - source: centerRect - maskSource: spotShapeLoader.item - enabled: false - } - - Loader { - id: borderShapeLoader - anchors.centerIn: centerRect - width: centerRect.width; height: width - visible: false; enabled: false - sourceComponent: spotShapeLoader.sourceComponent - onStatusChanged: { - if (status == Loader.Ready) { - borderShapeLoader.item.color = Qt.binding(function(){ return Settings.borderColor; }) - } - } - } - - Item { - id: borderShapeMask - anchors.centerIn: centerRect - width: centerRect.width; height: width - enabled: false; visible: false - Item { - id: borderShapeScaled - anchors.centerIn: parent - width: parent.width; height: width - scale: (100 - Settings.borderSize) * 1.0 / 100.0 - property Component component: borderShapeLoader.sourceComponent - property QtObject innerObject - onComponentChanged: { - if (innerObject) innerObject.destroy() - innerObject = component.createObject(borderShapeScaled, {visible: true}) - } - } - } - - OpacityMask { - id: spotBorder - visible: Settings.showBorder && Settings.borderSize > 0 - opacity: Settings.borderOpacity - cached: true - invert: true - anchors.fill: centerRect - source: borderShapeLoader.item - maskSource: borderShapeMask - enabled: false - } - - Rectangle { - id: dotCursor - antialiasing: true - anchors.centerIn: centerRect - width: Settings.dotSize; height: width - radius: width*0.5 - color: Settings.dotColor - visible: Settings.showCenterDot - opacity: Settings.dotOpacity - enabled: false - } - - Rectangle { - id: topRect - visible: spot.visible - color: centerRect.color - opacity: centerRect.opacity - anchors{ top: parent.top; bottom: centerRect.top; left: parent.left; right: parent.right } - enabled: false - } - - Rectangle { - id: bottomRect - visible: spot.visible - color: centerRect.color - opacity: centerRect.opacity - anchors{ top: centerRect.bottom; bottom: parent.bottom; left: parent.left; right: parent.right } - enabled: false - } - - Rectangle { - id: leftRect - visible: spot.visible - color: centerRect.color - opacity: centerRect.opacity - anchors{ top: topRect.bottom; bottom: bottomRect.top; left: parent.left; right: centerRect.left } - enabled: false - } - - Rectangle { - id: rightRect - visible: spot.visible - color: centerRect.color - opacity: centerRect.opacity - anchors{ top: topRect.bottom; bottom: bottomRect.top; left: centerRect.right; right: parent.right } - enabled: false - } - } -} // Window diff --git a/qml/main.qml b/qml/main.qml index bd970255..a2faaefa 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -1,8 +1,7 @@ // This file is part of Projecteur - https://github.com/jahnf/projecteur - See LICENSE.md and README.md -import QtQuick 2.3 -import QtQuick.Window 2.2 - -import QtGraphicalEffects 1.0 +import QtQuick +import QtQuick.Effects +import QtQuick.Window import Projecteur.Utils 1.0 as Utils @@ -14,7 +13,7 @@ Window { width: 300; height: 200 - flags: Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.SplashScreen + flags: Qt.FramelessWindowHint | Qt.WindowDoesNotAcceptFocus color: "transparent" @@ -49,12 +48,12 @@ Window { } } - OpacityMask { + MultiEffect { visible: Settings.zoomEnabled && mainWindow.spotOnCurrentWindow - cached: true anchors.fill: centerRect source: desktopItem - maskSource: spotShapeLoader.item + maskEnabled: true + maskSource: spotShapeLoader enabled: false } @@ -75,7 +74,7 @@ Window { onClicked: { ProjecteurApp.spotlightWindowClicked() } onExited: { ProjecteurApp.cursorExitedWindow() } onEntered: { ProjecteurApp.cursorEntered(screenId) } - onPositionChanged: { + onPositionChanged: (mouse) => { if (Settings.multiScreenOverlayEnabled) { ProjecteurApp.cursorPositionChanged( @@ -103,18 +102,20 @@ Window { visible: false; enabled: false anchors.centerIn: centerRect width: centerRect.width; height: width + layer.enabled: true sourceComponent: Qt.createComponent(Settings.spotShape) + onLoaded: item.visible = true } - OpacityMask { + MultiEffect { id: spot visible: Settings.showSpotShade opacity: centerRect.opacity - cached: true - invert: true anchors.fill: centerRect source: centerRect - maskSource: spotShapeLoader.item + maskEnabled: true + maskInverted: true + maskSource: spotShapeLoader enabled: false } @@ -123,9 +124,11 @@ Window { anchors.centerIn: centerRect width: centerRect.width; height: width visible: false; enabled: false + layer.enabled: true sourceComponent: spotShapeLoader.sourceComponent onStatusChanged: { if (status == Loader.Ready) { + borderShapeLoader.item.visible = true borderShapeLoader.item.color = Qt.binding(function(){ return Settings.borderColor; }) } } @@ -136,6 +139,7 @@ Window { anchors.centerIn: centerRect width: centerRect.width; height: width enabled: false; visible: false + layer.enabled: true Item { id: borderShapeScaled anchors.centerIn: parent @@ -150,14 +154,14 @@ Window { } } - OpacityMask { + MultiEffect { id: spotBorder visible: Settings.showBorder && Settings.borderSize > 0 opacity: Settings.borderOpacity - cached: true - invert: true anchors.fill: centerRect - source: borderShapeLoader.item + source: borderShapeLoader + maskEnabled: true + maskInverted: true maskSource: borderShapeMask enabled: false } diff --git a/qml/qml-qt6.qrc b/qml/qml-qt6.qrc deleted file mode 100644 index f90b4c54..00000000 --- a/qml/qml-qt6.qrc +++ /dev/null @@ -1,9 +0,0 @@ - - - main-qt6.qml - spotshapes/Circle.qml - spotshapes/Square.qml - spotshapes/Star.qml - spotshapes/Ngon.qml - - diff --git a/src/actiondelegate.cc b/src/actiondelegate.cc index dea30b69..4c713f92 100644 --- a/src/actiondelegate.cc +++ b/src/actiondelegate.cc @@ -28,13 +28,8 @@ namespace { constexpr int verticalMargin = 3; constexpr int horizontalMargin = 3; const int h = opt.fontMetrics.height() + 2 * verticalMargin; - #if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)) const int w = std::max(opt.fontMetrics.horizontalAdvance(ActionDelegate::tr("None")) + 2 * horizontalMargin, opt.fontMetrics.horizontalAdvance(action->keySequence.toString())); - #else - const int w = std::max(opt.fontMetrics.width(ActionDelegate::tr("None")) + 2 * horizontalMargin, - opt.fontMetrics.width(action->keySequence.toString())); - #endif return { w, h }; } } // end namespace keysequence @@ -315,12 +310,12 @@ void ActionTypeDelegate::paint(QPainter* painter, const QStyleOptionViewItem& op const auto symbol = [&item]() -> QChar { switch(item.action->type()) { - case Action::Type::KeySequence: return QChar(Font::Icon::keyboard_4); - case Action::Type::CyclePresets: return QChar(Font::Icon::connection_8); - case Action::Type::ToggleSpotlight: return QChar(Font::Icon::power_on_off_11); - case Action::Type::ScrollHorizontal: return QChar(Font::Icon::cursor_21_rotated); - case Action::Type::ScrollVertical: return QChar(Font::Icon::cursor_21); - case Action::Type::VolumeControl: return QChar(Font::Icon::audio_6); + case Action::Type::KeySequence: return QChar(static_cast(Font::Icon::keyboard_4)); + case Action::Type::CyclePresets: return QChar(static_cast(Font::Icon::connection_8)); + case Action::Type::ToggleSpotlight: return QChar(static_cast(Font::Icon::power_on_off_11)); + case Action::Type::ScrollHorizontal: return QChar(static_cast(Font::Icon::cursor_21_rotated)); + case Action::Type::ScrollVertical: return QChar(static_cast(Font::Icon::cursor_21)); + case Action::Type::VolumeControl: return QChar(static_cast(Font::Icon::audio_6)); } return QChar(0); }(); @@ -352,12 +347,12 @@ void ActionTypeDelegate::actionContextMenu(QWidget* parent, InputMapConfigModel* }; static std::vector items { - {Action::Type::KeySequence, QChar(Font::Icon::keyboard_4), tr("Key Sequence"), false}, - {Action::Type::CyclePresets, QChar(Font::Icon::connection_8), tr("Cycle Presets"), false}, - {Action::Type::ToggleSpotlight, QChar(Font::Icon::power_on_off_11), tr("Toggle Spotlight"), false}, - {Action::Type::ScrollHorizontal, QChar(Font::Icon::cursor_21_rotated), tr("Scroll Horizontal"), true}, - {Action::Type::ScrollVertical, QChar(Font::Icon::cursor_21), tr("Scroll Vertical"), true}, - {Action::Type::VolumeControl, QChar(Font::Icon::audio_6), tr("Volume Control"), true}, + {Action::Type::KeySequence, QChar(static_cast(Font::Icon::keyboard_4)), tr("Key Sequence"), false}, + {Action::Type::CyclePresets, QChar(static_cast(Font::Icon::connection_8)), tr("Cycle Presets"), false}, + {Action::Type::ToggleSpotlight, QChar(static_cast(Font::Icon::power_on_off_11)), tr("Toggle Spotlight"), false}, + {Action::Type::ScrollHorizontal, QChar(static_cast(Font::Icon::cursor_21_rotated)), tr("Scroll Horizontal"), true}, + {Action::Type::ScrollVertical, QChar(static_cast(Font::Icon::cursor_21)), tr("Scroll Vertical"), true}, + {Action::Type::VolumeControl, QChar(static_cast(Font::Icon::audio_6)), tr("Volume Control"), true}, }; static bool initIcons = []() diff --git a/src/asynchronous.h b/src/asynchronous.h index aded391e..155f06eb 100644 --- a/src/asynchronous.h +++ b/src/asynchronous.h @@ -5,11 +5,6 @@ #include #include -#if (QT_VERSION < QT_VERSION_CHECK(5, 10, 0)) -#include -#include -#endif - #include #include #include @@ -35,49 +30,25 @@ constexpr decltype(auto) apply(F&& f, Tuple&& t){ std::make_index_sequence>::value>{}); } -// Capture args and add them as additional arguments +// Capture arguments for a zero-argument queued invocation. template auto capture_call(Lambda&& lambda, Args&& ... args){ return [ lambda = std::forward(lambda), capture_args = std::make_tuple(std::forward(args) ...) - ](auto&& ... original_args)mutable{ + ]() mutable { return async::apply([&lambda](auto&& ... args){ lambda(std::forward(args) ...); }, - std::tuple_cat( - std::forward_as_tuple(original_args ...), - async::apply([](auto&& ... args){ - return std::forward_as_tuple( - std::move(args) ...); - }, std::move(capture_args)) - )); + std::move(capture_args)); }; } -#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)) // Invoke a (lambda) function for context QObject with queued connection. template void invoke(QObject* context, F&& function) { QMetaObject::invokeMethod(context, std::forward(function), Qt::QueuedConnection); } -#else -// ... older Qt versions < 5.10 -namespace detail { -template -struct FEvent : public QEvent { - using Fun = typename std::decay::type; - Fun fun; - FEvent(Fun && fun) : QEvent(QEvent::None), fun(std::move(fun)) {} - FEvent(const Fun & fun) : QEvent(QEvent::None), fun(fun) {} - ~FEvent() { fun(); } -}; } - -template -void invoke(QObject* context, F&& function) { - QCoreApplication::postEvent(context, new detail::FEvent(std::forward(function))); -} -#endif // --- Helpers to deduce std::function type from a lambda. template @@ -106,16 +77,11 @@ auto makeSafeCallback_impl(QObject* context, F&& f, std::function, b return; } - #if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)) QMetaObject::invokeMethod(ctxPtr, capture_call(std::forward(f), std::forward(args)...), autoConnection ? Qt::AutoConnection : Qt::QueuedConnection); // Note: if forceQueued is false and current thread is the same as // the context thread -> execute directly - #else - // For Qt < 5.10 the call is always queued via the event queue - async::invoke(ctxPtr, capture_call(std::forward(f), std::forward(args)...)); - #endif }; } diff --git a/src/device-vibration.cc b/src/device-vibration.cc index 18b29a94..94580b12 100644 --- a/src/device-vibration.cc +++ b/src/device-vibration.cc @@ -77,8 +77,9 @@ struct TimerWidget::Impl btnStartStop->setCheckable(true); QObject::connect(btnStartStop, &IconButton::toggled, parent, [this](bool checked) { stack->setCurrentWidget(checked ? overlay : editor); - btnStartStop->setText(checked ? QChar(Font::Icon::media_control_50) - : QChar(Font::Icon::media_control_48)); + btnStartStop->setText(checked + ? QChar(static_cast(Font::Icon::media_control_50)) + : QChar(static_cast(Font::Icon::media_control_48))); if (checked) { secondsLeft = valueSeconds(); updateOverlayLabel(secondsLeft); diff --git a/src/device.cc b/src/device.cc index 32db26a9..911e0cd3 100644 --- a/src/device.cc +++ b/src/device.cc @@ -20,11 +20,6 @@ LOGGING_CATEGORY(device, "device") LOGGING_CATEGORY(hid, "HID") namespace { - // ----------------------------------------------------------------------------------------------- - #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - const auto registeredComparator_ = QMetaType::registerComparators(); - #endif - const auto hexId = logging::hexId; // class i18n : public QObject {}; // for i18n and logging } // end anonymous namespace diff --git a/src/deviceinput.cc b/src/deviceinput.cc index 7fc5a36e..a8d870c2 100644 --- a/src/deviceinput.cc +++ b/src/deviceinput.cc @@ -19,12 +19,8 @@ LOGGING_CATEGORY(input, "input") namespace { - // ----------------------------------------------------------------------------------------------- - #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - const auto registered_ = qRegisterMetaTypeStreamOperators() - && qRegisterMetaTypeStreamOperators(); - #endif - + const auto registeredMetaTypes_ = qRegisterMetaType() + && qRegisterMetaType(); // ----------------------------------------------------------------------------------------------- void addKeyToString(QString& str, const QString& key) @@ -393,11 +389,7 @@ QString NativeKeySequence::toString() const { if (i > 0) { seqString += QLatin1String(", "); } - #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - const auto key = m_keySequence[i]; - #else const auto key = m_keySequence[i].key(); - #endif seqString += toString(key, (i < m_nativeModifiers.size()) ? m_nativeModifiers[i] diff --git a/src/deviceinput.h b/src/deviceinput.h index 71c4547a..3ad55319 100644 --- a/src/deviceinput.h +++ b/src/deviceinput.h @@ -274,10 +274,9 @@ struct MappedAction bool operator==(const MappedAction& o) const; std::shared_ptr action; }; -Q_DECLARE_METATYPE(MappedAction); - QDataStream& operator>>(QDataStream& s, MappedAction& mia); QDataStream& operator<<(QDataStream& s, const MappedAction& mia); +Q_DECLARE_METATYPE(MappedAction); // ------------------------------------------------------------------------------------------------- class InputMapConfig : public std::map{}; diff --git a/src/hidpp.cc b/src/hidpp.cc index e23403f3..7f2dd13c 100644 --- a/src/hidpp.cc +++ b/src/hidpp.cc @@ -19,11 +19,8 @@ DECLARE_LOGGING_CATEGORY(hid) namespace { - // ----------------------------------------------------------------------------------------------- - #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - const auto registered_ = qRegisterMetaTypeStreamOperators() - && qRegisterMetaTypeStreamOperators(); - #endif + const auto registeredMetaTypes_ = qRegisterMetaType() + && qRegisterMetaType(); // ----------------------------------------------------------------------------------------------- constexpr char featureSetFilename[] = "DeviceFeatureSet.conf"; diff --git a/src/hidpp.h b/src/hidpp.h index 9cd861ca..1dda42ef 100644 --- a/src/hidpp.h +++ b/src/hidpp.h @@ -12,6 +12,7 @@ #include #include +#include #include // Hidpp specific functionality @@ -384,11 +385,11 @@ const char* toString(HIDPP::BatteryStatus bs); const char* toString(HIDPP::Notification n); // ------------------------------------------------------------------------------------------------- -Q_DECLARE_METATYPE(HIDPP::FeatureSet::FeatureTable); QDataStream& operator<<(QDataStream& s, const HIDPP::FeatureSet::FeatureTable& ft); QDataStream& operator>>(QDataStream& s, HIDPP::FeatureSet::FeatureTable& ft); +Q_DECLARE_METATYPE(HIDPP::FeatureSet::FeatureTable); // ------------------------------------------------------------------------------------------------- -Q_DECLARE_METATYPE(HIDPP::FirmwareInfo); QDataStream& operator<<(QDataStream& s, const HIDPP::FirmwareInfo& fi); QDataStream& operator>>(QDataStream& s, HIDPP::FirmwareInfo& fi); +Q_DECLARE_METATYPE(HIDPP::FirmwareInfo); diff --git a/src/iconwidgets.cc b/src/iconwidgets.cc index d789bd94..57ba6786 100644 --- a/src/iconwidgets.cc +++ b/src/iconwidgets.cc @@ -22,7 +22,7 @@ IconButton::IconButton(Font::Icon symbol, QWidget* parent) iconFont.setPointSizeF(font().pointSizeF()); setFont(iconFont); - setText(QChar(symbol)); + setText(QChar(static_cast(symbol))); auto p = palette(); p.setColor(QPalette::ColorGroup::Normal, QPalette::ButtonText, @@ -33,7 +33,7 @@ IconButton::IconButton(Font::Icon symbol, QWidget* parent) // ------------------------------------------------------------------------------------------------- IconLabel::IconLabel(Font::Icon symbol, QWidget* parent) - : QLabel(QChar(symbol), parent) + : QLabel(QChar(static_cast(symbol)), parent) { QFont iconFont("projecteur-icons"); iconFont.setPixelSize(defaultIconLabelSize); diff --git a/src/inputseqedit.cc b/src/inputseqedit.cc index 0513c05c..d4afbf83 100644 --- a/src/inputseqedit.cc +++ b/src/inputseqedit.cc @@ -183,20 +183,11 @@ QSize InputSeqEdit::sizeHint() const constexpr int verticalMargin = 3; constexpr int horizontalMargin = 3; const int h = fm.height() + 2 * verticalMargin; - #if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)) - const int w = fm.horizontalAdvance(QLatin1Char('x')) * 17 + 2 * horizontalMargin; - #else - const int w = fm.width(QLatin1Char('x')) * 17 + 2 * horizontalMargin; - #endif + const int w = fm.horizontalAdvance(QLatin1Char('x')) * 17 + 2 * horizontalMargin; const QStyleOptionFrame option = styleOption(); - #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - return (style()->sizeFromContents(QStyle::CT_LineEdit, &option, QSize(w, h). - expandedTo(QApplication::globalStrut()), this)); - #else return style()->sizeFromContents(QStyle::CT_LineEdit, &option, QSize(w, h), this); - #endif } // ------------------------------------------------------------------------------------------------- diff --git a/src/linuxdesktop.cc b/src/linuxdesktop.cc index 72428b5c..ceb2cd69 100644 --- a/src/linuxdesktop.cc +++ b/src/linuxdesktop.cc @@ -5,82 +5,100 @@ #include "logging.h" -#include -#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - #include -#endif -#include +#include +#include +#include #include +#include +#include #include #include -#if HAS_Qt_DBus -#include -#include -#endif +#include +#include +#include LOGGING_CATEGORY(desktop, "desktop") namespace { -#if HAS_Qt_DBus + constexpr auto kwinScreenshotService = "org.kde.KWin.ScreenShot2"; + constexpr auto kwinScreenshotPath = "/org/kde/KWin/ScreenShot2"; + constexpr auto kwinScreenshotInterface = "org.kde.KWin.ScreenShot2"; + // ----------------------------------------------------------------------------------------------- - QPixmap grabScreenDBusGnome() + QPixmap grabScreenKWin(QScreen* screen) { - const auto filepath = QDir::temp().absoluteFilePath("000_projecteur_zoom_screenshot.png"); - QDBusInterface interface(QStringLiteral("org.gnome.Shell"), - QStringLiteral("/org/gnome/Shell/Screenshot"), - QStringLiteral("org.gnome.Shell.Screenshot")); - QDBusReply reply = interface.call(QStringLiteral("Screenshot"), false, false, filepath); + int pipeDescriptors[2] = {-1, -1}; + if (::pipe2(pipeDescriptors, O_CLOEXEC) != 0) { + logError(desktop) << LinuxDesktop::tr("Could not create a pipe for the KWin screenshot."); + return {}; + } + + QFile readPipe; + if (!readPipe.open(pipeDescriptors[0], QIODevice::ReadOnly, QFileDevice::AutoCloseHandle)) { + ::close(pipeDescriptors[0]); + ::close(pipeDescriptors[1]); + logError(desktop) << LinuxDesktop::tr("Could not open the KWin screenshot pipe."); + return {}; + } - if (reply.value()) + QDBusReply reply; { - QPixmap pm(filepath); - QFile::remove(filepath); - return pm; + QDBusUnixFileDescriptor writePipe; + writePipe.giveFileDescriptor(pipeDescriptors[1]); + QDBusInterface interface(kwinScreenshotService, kwinScreenshotPath, + kwinScreenshotInterface); + + QVariantMap options; + options.insert(QStringLiteral("hide-caller-windows"), true); + options.insert(QStringLiteral("native-resolution"), true); + + reply = interface.call(QStringLiteral("CaptureScreen"), screen->name(), options, + QVariant::fromValue(writePipe)); } - logError(desktop) << LinuxDesktop::tr("Screenshot via GNOME DBus interface failed."); - return QPixmap(); - } - // ----------------------------------------------------------------------------------------------- - QPixmap grabScreenDBusKde() - { - QDBusInterface interface(QStringLiteral("org.kde.KWin"), - QStringLiteral("/Screenshot"), - QStringLiteral("org.kde.kwin.Screenshot")); - QDBusReply reply = interface.call(QStringLiteral("screenshotFullscreen")); - QPixmap pm(reply.value()); - if (!pm.isNull()) { - QFile::remove(reply.value()); - } else { - logError(desktop) << LinuxDesktop::tr("Screenshot via KDE DBus interface failed."); + if (!reply.isValid()) { + auto message = LinuxDesktop::tr("Screenshot via KWin ScreenShot2 failed: %1") + .arg(reply.error().message()); + if (reply.error().name() == QStringLiteral("org.kde.KWin.ScreenShot2.Error.NoAuthorized")) { + message += LinuxDesktop::tr( + " Install Projecteur so KWin can associate the executable with its desktop metadata."); + } + logError(desktop) << message; + return {}; } - return pm; - } -#endif // HAS_Qt_DBus - // ----------------------------------------------------------------------------------------------- - QPixmap grabScreenVirtualDesktop(QScreen* screen) - { - QRect g; - for (const auto s : QGuiApplication::screens()) { - g = g.united(s->geometry()); + const QVariantMap attributes = reply.value(); + const quint32 width = attributes.value(QStringLiteral("width")).toUInt(); + const quint32 height = attributes.value(QStringLiteral("height")).toUInt(); + const quint32 stride = attributes.value(QStringLiteral("stride")).toUInt(); + const quint32 formatValue = attributes.value(QStringLiteral("format")).toUInt(); + const qreal scale = attributes.value(QStringLiteral("scale"), 1.0).toDouble(); + + const quint64 expectedBytes = quint64(stride) * height; + if (width == 0 || height == 0 || stride == 0 + || expectedBytes > quint64(std::numeric_limits::max())) { + logError(desktop) << LinuxDesktop::tr("KWin returned invalid screenshot dimensions."); + return {}; } - #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - QPixmap pm(QApplication::primaryScreen()->grabWindow( - QApplication::desktop()->winId(), g.x(), g.y(), g.width(), g.height())); - #else - QPixmap pm(QApplication::primaryScreen()->grabWindow(0, g.x(), g.y(), g.width(), g.height())); - #endif + const QByteArray pixels = readPipe.readAll(); + if (quint64(pixels.size()) < expectedBytes) { + logError(desktop) << LinuxDesktop::tr("KWin returned an incomplete screenshot."); + return {}; + } - if (!pm.isNull()) - { - pm.setDevicePixelRatio(screen->devicePixelRatio()); - return pm.copy(screen->geometry()); + const auto format = static_cast(formatValue); + const QImage image(reinterpret_cast(pixels.constData()), + int(width), int(height), int(stride), format); + if (image.isNull()) { + logError(desktop) << LinuxDesktop::tr("KWin returned an unsupported screenshot format."); + return {}; } - return pm; + QPixmap pixmap = QPixmap::fromImage(image.copy()); + pixmap.setDevicePixelRatio(scale > 0 ? scale : 1.0); + return pixmap; } } // end anonymous namespace @@ -88,71 +106,32 @@ LinuxDesktop::LinuxDesktop(QObject* parent) : QObject(parent) { const auto env = QProcessEnvironment::systemEnvironment(); - { // check for Kde and Gnome - const auto kdeFullSession = env.value(QStringLiteral("KDE_FULL_SESSION")); - const auto gnomeSessionId = env.value(QStringLiteral("GNOME_DESKTOP_SESSION_ID")); - const auto desktopSession = env.value(QStringLiteral("DESKTOP_SESSION")); - const auto xdgCurrentDesktop = env.value(QStringLiteral("XDG_CURRENT_DESKTOP")); - if (gnomeSessionId.size() || xdgCurrentDesktop.contains("Gnome", Qt::CaseInsensitive)) { - m_type = LinuxDesktop::Type::Gnome; - } - else if (kdeFullSession.size() || desktopSession == "kde-plasma") { - m_type = LinuxDesktop::Type::KDE; - } + const auto kdeFullSession = env.value(QStringLiteral("KDE_FULL_SESSION")); + const auto desktopSession = env.value(QStringLiteral("DESKTOP_SESSION")); + const auto xdgCurrentDesktop = env.value(QStringLiteral("XDG_CURRENT_DESKTOP")); + + if (!kdeFullSession.isEmpty() + || desktopSession.contains(QStringLiteral("plasma"), Qt::CaseInsensitive) + || xdgCurrentDesktop.contains(QStringLiteral("KDE"), Qt::CaseInsensitive)) { + m_type = LinuxDesktop::Type::KDE; } - { // check for wayland session - const auto waylandDisplay = env.value(QStringLiteral("WAYLAND_DISPLAY")); - const auto xdgSessionType = env.value(QStringLiteral("XDG_SESSION_TYPE")); - m_wayland = (xdgSessionType == "wayland") - || waylandDisplay.contains("wayland", Qt::CaseInsensitive); - } + m_wayland = QGuiApplication::platformName().startsWith(QStringLiteral("wayland"), + Qt::CaseInsensitive); } QPixmap LinuxDesktop::grabScreen(QScreen* screen) const { - if (screen == nullptr) { - return QPixmap(); + if (!screen) { + return {}; } - - if (isWayland()) { - return grabScreenWayland(screen); + if (!isWayland()) { + logWarning(desktop) << tr("Screen capture is only supported on Wayland."); + return {}; } - - #if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)) - const bool isVirtualDesktop = QApplication::primaryScreen()->virtualSiblings().size() > 1; - #else - const bool isVirtualDesktop = QApplication::desktop()->isVirtualDesktop(); - #endif - - if (isVirtualDesktop) { - return grabScreenVirtualDesktop(screen); - } - - // everything else.. usually X11 - return screen->grabWindow(0); -} - -QPixmap LinuxDesktop::grabScreenWayland(QScreen* screen) const -{ -#if HAS_Qt_DBus - QPixmap pm; - switch (type()) - { - case LinuxDesktop::Type::Gnome: - pm = grabScreenDBusGnome(); - break; - case LinuxDesktop::Type::KDE: - pm = grabScreenDBusKde(); - break; - default: - logWarning(desktop) << tr("Currently zoom on Wayland is only supported via DBus on KDE and GNOME."); + if (type() != LinuxDesktop::Type::KDE) { + logWarning(desktop) << tr("Screen capture is only supported on KDE Plasma."); + return {}; } - return pm.isNull() ? pm : pm.copy(screen->geometry()); -#else - Q_UNUSED(screen); - logWarning(desktop) << tr("Projecteur was compiled without Qt DBus. Currently zoom on Wayland is " - "only supported via DBus on KDE and GNOME."); - return QPixmap(); -#endif + return grabScreenKWin(screen); } diff --git a/src/linuxdesktop.h b/src/linuxdesktop.h index 1c9048a1..a8c53366 100644 --- a/src/linuxdesktop.h +++ b/src/linuxdesktop.h @@ -12,7 +12,7 @@ class LinuxDesktop : public QObject Q_OBJECT public: - enum class Type : uint8_t { KDE, Gnome, Other }; + enum class Type : uint8_t { KDE, Other }; explicit LinuxDesktop(QObject* parent = nullptr); @@ -24,6 +24,4 @@ class LinuxDesktop : public QObject private: bool m_wayland = false; Type m_type = Type::Other; - - QPixmap grabScreenWayland(QScreen* screen) const; -}; \ No newline at end of file +}; diff --git a/src/logging.cc b/src/logging.cc index 9a77b08e..a161dc50 100644 --- a/src/logging.cc +++ b/src/logging.cc @@ -27,6 +27,14 @@ namespace { return (qstrncmp(categoryPrefix, category->categoryName(), sizeof(categoryPrefix)-1) == 0); } + inline void applyDefaultCategoryFilter(QLoggingCategory* category) { + // Qt 6.11 applies a newly installed filter to existing categories before installFilter() + // returns the previous filter. During that pass this pointer is still null. + if (defaultCategoryFilter) { + defaultCategoryFilter(category); + } + } + void categoryFilterDebug(QLoggingCategory *category) { if (isAppCategory(category)) @@ -36,7 +44,7 @@ namespace { category->setEnabled(QtWarningMsg, true); category->setEnabled(QtCriticalMsg, true); } else { - defaultCategoryFilter(category); + applyDefaultCategoryFilter(category); } } @@ -48,7 +56,7 @@ namespace { category->setEnabled(QtWarningMsg, true); category->setEnabled(QtCriticalMsg, true); } else { - defaultCategoryFilter(category); + applyDefaultCategoryFilter(category); } } @@ -60,7 +68,7 @@ namespace { category->setEnabled(QtWarningMsg, true); category->setEnabled(QtCriticalMsg, true); } else { - defaultCategoryFilter(category); + applyDefaultCategoryFilter(category); } } @@ -73,7 +81,7 @@ namespace { category->setEnabled(QtWarningMsg, false); category->setEnabled(QtCriticalMsg, true); } else { - defaultCategoryFilter(category); + applyDefaultCategoryFilter(category); } } @@ -112,11 +120,7 @@ namespace { { const char *category = context.category ? context.category : ""; - #if (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0)) - constexpr auto dateFormat = Qt::ISODateWithMs; - #else - constexpr auto dateFormat = Qt::ISODate; - #endif + constexpr auto dateFormat = Qt::ISODateWithMs; const auto logMsg = QString("[%1][%2][%3] %4").arg(QDateTime::currentDateTime().toString(dateFormat), typeToShortString(type), category, msgQString); diff --git a/src/main.cc b/src/main.cc index 617acaad..52f4f0af 100644 --- a/src/main.cc +++ b/src/main.cc @@ -212,7 +212,7 @@ namespace { // --------------------------------------------------------------------------------------------- ProjecteurCmdLineParser() { - parser.setApplicationDescription(Main::tr("Linux/X11 application for the Logitech Spotlight device.")); + parser.setApplicationDescription(Main::tr("Wayland application for the Logitech Spotlight device.")); parser.addOptions({versionOption_, helpOption_, fullHelpOption_, commandOption_, cfgFileOption_, fullVersionOption_, deviceInfoOption_, logLvlOption_, disableUInputOption_, showDlgOnStartOption_, dialogMinOnlyOption_, diff --git a/src/nativekeyseqedit.cc b/src/nativekeyseqedit.cc index 1246fd7a..8abd8fe7 100644 --- a/src/nativekeyseqedit.cc +++ b/src/nativekeyseqedit.cc @@ -92,20 +92,9 @@ QSize NativeKeySeqEdit::sizeHint() const constexpr int horizontalMargin = 3; const int h = opt.fontMetrics.height() + 2 * verticalMargin; - #if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)) - const int w = std::max(opt.fontMetrics.horizontalAdvance(QLatin1Char('x')) * 17 + 2 * horizontalMargin, - opt.fontMetrics.horizontalAdvance(m_nativeSequence.toString())); - #else - const int w = std::max(opt.fontMetrics.width(QLatin1Char('x')) * 17 + 2 * horizontalMargin, - opt.fontMetrics.width(m_nativeSequence.toString())); - #endif - - #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - return (style()->sizeFromContents(QStyle::CT_LineEdit, &opt, QSize(w, h). - expandedTo(QApplication::globalStrut()), this)); - #else + const int w = std::max(opt.fontMetrics.horizontalAdvance(QLatin1Char('x')) * 17 + 2 * horizontalMargin, + opt.fontMetrics.horizontalAdvance(m_nativeSequence.toString())); return style()->sizeFromContents(QStyle::CT_LineEdit, &opt, QSize(w, h), this); - #endif } // ------------------------------------------------------------------------------------------------- @@ -398,4 +387,3 @@ int NativeKeySeqEdit::drawSequence(int startX, QPainter& p, const QStyleOption& return drawText(startX, p, option, ks.toString()); } - diff --git a/src/preferencesdlg.cc b/src/preferencesdlg.cc index 47020fce..b586cd18 100644 --- a/src/preferencesdlg.cc +++ b/src/preferencesdlg.cc @@ -29,18 +29,10 @@ #include #include #include -#include - -#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - #if HAS_Qt_X11Extras - #include - #endif -#endif #include LOGGING_CATEGORY(preferences, "preferences") -LOGGING_CATEGORY(x11display, "x11display") // ------------------------------------------------------------------------------------------------- namespace { @@ -149,9 +141,6 @@ QWidget* PreferencesDialog::createSettingsTabWidget(Settings* settings) const auto mainVBox = new QVBoxLayout(widget); mainVBox->addLayout(mainHBox); mainVBox->addWidget(presetSelector); -#if HAS_Qt_X11Extras - mainVBox->addWidget(createCompositorWarningWidget()); -#endif mainVBox->addLayout(hbox); return widget; @@ -256,64 +245,6 @@ QWidget* PreferencesDialog::createPresetSelector(Settings* settings) return widget; } -// ------------------------------------------------------------------------------------------------- -#if HAS_Qt_X11Extras -QWidget* PreferencesDialog::createCompositorWarningWidget() -{ - if (!QX11Info::isPlatformX11()) - { // Platform ist not X11, possibly wayland or others... - const auto widget = new QWidget(this); - widget->setVisible(false); - return widget; - } - - const auto widget = new QFrame(this); - widget->setFrameStyle(QFrame::StyledPanel | QFrame::Plain); - const auto hbox = new QHBoxLayout(widget); - - const auto iconLabel = new QLabel(this); - iconLabel->setPixmap(style()->standardPixmap(QStyle::SP_MessageBoxCritical)); - hbox->addWidget(iconLabel); - const auto textLabel = new QLabel(tr("Warning: No running compositing manager detected!"), this); - textLabel->setTextFormat(Qt::RichText); - textLabel->setToolTip(tr("Please make sure a compositing manager is running. " - "On some systems one way is to run xcompmgr manually.")); - hbox->addWidget(textLabel); - hbox->setStretch(1, 1); - - const auto timer = new QTimer(this); - timer->setInterval(1000); - timer->setSingleShot(false); - - auto checkForCompositorAndUpdate = [widget](){ - static bool compositorWasRunning = true; - const bool compositorIsRunning = QX11Info::isCompositingManagerRunning(); - if (compositorWasRunning != compositorIsRunning) - { - if (compositorIsRunning) { - logInfo(x11display) << tr("Detected running compositing compositing manager."); - } else { - logWarning(x11display) << tr("No running compositing manager detected."); - } - } - widget->setVisible(!compositorIsRunning); // Warning widget visible if no compositor is running. - compositorWasRunning = compositorIsRunning; - }; - - checkForCompositorAndUpdate(); - - connect(this, &PreferencesDialog::dialogActiveChanged, this, [timer, checkForCompositorAndUpdate](bool active) { - if (active) { checkForCompositorAndUpdate(); timer->start(); } else { timer->stop(); } - }); - - connect(timer, &QTimer::timeout, this, [checkForCompositorAndUpdate=std::move(checkForCompositorAndUpdate)]() { - checkForCompositorAndUpdate(); - }); - - return widget; -} -#endif - // ------------------------------------------------------------------------------------------------- QGroupBox* PreferencesDialog::createShapeGroupBox(Settings* settings) { @@ -405,11 +336,7 @@ QGroupBox* PreferencesDialog::createShapeGroupBox(Settings* settings) { if (row >= startRow + maxRows) { break; } spotGrid->addWidget(new QLabel(s.displayName(), this),row, 0); - #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - if (s.defaultValue().type() == QVariant::Int) - #else if (s.defaultValue().metaType().id() == QMetaType::Int) - #endif { const auto spinbox = new QSpinBox(this); spinbox->setMaximum(s.maxValue().toInt()); @@ -871,4 +798,3 @@ void PresetComboCustomStyle::drawControl(QStyle::ControlElement element, const Q } QProxyStyle::drawControl(element, option, painter, widget); } - diff --git a/src/preferencesdlg.h b/src/preferencesdlg.h index 21a9b8b3..fdab5d86 100644 --- a/src/preferencesdlg.h +++ b/src/preferencesdlg.h @@ -65,9 +65,6 @@ class PreferencesDialog : public QDialog QWidget* createMultiScreenWidget(Settings* settings); QGroupBox* createZoomGroupBox(Settings* settings); QWidget* createPresetSelector(Settings* settings); -#if HAS_Qt_X11Extras - QWidget* createCompositorWarningWidget(); -#endif QWidget* createLogTabWidget(); private: diff --git a/src/projecteurapp.cc b/src/projecteurapp.cc index cd2043fd..06538151 100644 --- a/src/projecteurapp.cc +++ b/src/projecteurapp.cc @@ -12,9 +12,7 @@ #include "settings.h" #include "spotlight.h" -#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) -#include -#endif +#include #include #include @@ -48,7 +46,6 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio , m_trayMenu(new QMenu()) , m_localServer(new QLocalServer(this)) , m_linuxDesktop(new LinuxDesktop(this)) - , m_xcbOnWayland(QGuiApplication::platformName() == "xcb" && m_linuxDesktop->isWayland()) { if (screens().empty()) { @@ -81,19 +78,15 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio m_spotlight->setSpotActive(true); }); - const QString desktopEnv = m_linuxDesktop->type() == LinuxDesktop::Type::KDE ? "KDE" : - m_linuxDesktop->type() == LinuxDesktop::Type::Gnome ? "Gnome" - : tr("Unknown"); + const QString desktopEnv = m_linuxDesktop->type() == LinuxDesktop::Type::KDE + ? QStringLiteral("KDE") + : tr("Unknown"); logDebug(mainapp) << tr("Qt platform plugin: %1;").arg(QGuiApplication::platformName()) << tr("Desktop Environment: %1;").arg(desktopEnv) << tr("Wayland: %1").arg(m_linuxDesktop->isWayland() ? "true" : "false"); - if (m_xcbOnWayland) { - logWarning(mainapp) << tr("Qt 'xcb' platform and Wayland session detected."); - } - - if (options.showPreferencesOnStart || m_linuxDesktop->isWayland()) { + if (options.showPreferencesOnStart) { QTimer::singleShot(0, this, [this](){ showPreferences(true); }); } else if (options.dialogMinimizeOnly) { @@ -151,8 +144,9 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio setupTrayIcon(options); connect(this, &ProjecteurApplication::aboutToQuit, this, [this](){ - for (const auto window : m_overlayWindows) { window->close(); } + for (const auto window : m_overlayWindows) { delete window; } m_overlayWindows.clear(); + m_screenWindowMap.clear(); }); // Setup the spotlight connections. @@ -206,6 +200,9 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio ProjecteurApplication::~ProjecteurApplication() { if (m_localServer) { m_localServer->close(); } + for (const auto window : m_overlayWindows) { delete window; } + m_overlayWindows.clear(); + m_screenWindowMap.clear(); } // ------------------------------------------------------------------------------------------------- @@ -221,11 +218,6 @@ void ProjecteurApplication::setupSpotlight() for (const auto window : m_overlayWindows) { - window->setFlags(window->flags() | Qt::WindowStaysOnTopHint); - window->setFlags(window->flags() & ~Qt::SplashScreen); - window->setFlags(window->flags() | Qt::ToolTip); - window->setFlags(window->flags() & ~Qt::WindowTransparentForInput); - if (window->screen()) { if (m_settings->zoomEnabled()) { @@ -238,8 +230,7 @@ void ProjecteurApplication::setupSpotlight() } window->setPosition(screenGeometry.topLeft()); } - window->showFullScreen(); - window->raise(); + window->show(); } m_overlayVisible = true; emit overlayVisibleChanged(true); @@ -250,18 +241,11 @@ void ProjecteurApplication::setupSpotlight() emit overlayVisibleChanged(false); for (const auto window : m_overlayWindows) { - window->setFlags(window->flags() | Qt::WindowTransparentForInput); - window->setFlags(window->flags() & ~Qt::WindowStaysOnTopHint); - // Workaround for 'xcb' on Wayland session (default on Ubuntu) - // .. the window in that case is not transparent for inputs and cannot be clicked through. - // --> hide the window, although animations will not be visible - if (m_xcbOnWayland) { window->hide(); } - } - if (m_xcbOnWayland && m_dialog->mode() == PreferencesDialog::Mode::MinimizeOnlyDialog - && m_dialog->isMinimized()) { // keep Window minimized... - //Workaround for QTBUG-76354 (https://bugreports.qt.io/browse/QTBUG-76354) - m_dialog->showNormal(); - m_dialog->setWindowState(Qt::WindowMinimized); + QTimer::singleShot(200, window, [this, window]() { + if (!m_spotlight->spotActive()) { + window->hide(); + } + }); } } }); @@ -306,7 +290,6 @@ void ProjecteurApplication::setupTrayIcon(Options const& options) m_trayMenu->addSeparator(); const auto actionQuit = m_trayMenu->addAction(tr("&Quit")); connect(actionQuit, &QAction::triggered, this, [this](){ - m_qmlEngine->deleteLater(); // see: https://bugreports.qt.io/browse/QTBUG-81247 this->quit(); }); m_trayIcon->setContextMenu(&*m_trayMenu); @@ -351,7 +334,18 @@ QWindow* ProjecteurApplication::createOverlayWindow() QObject *object = m_windowQmlComponent->create(); object->setParent(m_qmlEngine); const auto window = qobject_cast(object); - window->setFlags(window->flags() | Qt::WindowTransparentForInput | Qt::Tool); + auto layerWindow = LayerShellQt::Window::get(window); + layerWindow->setScope(QStringLiteral("projecteur-overlay")); + layerWindow->setLayer(LayerShellQt::Window::LayerOverlay); + auto anchors = LayerShellQt::Window::Anchors{LayerShellQt::Window::AnchorTop}; + anchors.setFlag(LayerShellQt::Window::AnchorBottom); + anchors.setFlag(LayerShellQt::Window::AnchorLeft); + anchors.setFlag(LayerShellQt::Window::AnchorRight); + layerWindow->setAnchors(anchors); + layerWindow->setExclusiveZone(0); + layerWindow->setKeyboardInteractivity(LayerShellQt::Window::KeyboardInteractivityNone); + layerWindow->setActivateOnShow(false); + layerWindow->setCloseOnDismissed(false); return window; } @@ -392,31 +386,19 @@ void ProjecteurApplication::updateOverlayWindow(QWindow* window, QScreen* screen window->setProperty("screenId", quint64(screen)); - const bool wasVisible = window->isVisible(); const bool wasSpotActive = m_spotlight->spotActive(); m_overlayVisible = false; emit overlayVisibleChanged(false); - window->setFlags(window->flags() | Qt::WindowTransparentForInput); - window->setFlags(window->flags() & ~Qt::WindowStaysOnTopHint); window->hide(); - window->setGeometry(QRect(screen->geometry().topLeft(), QSize(300,200))); + auto layerWindow = LayerShellQt::Window::get(window); + layerWindow->setScreen(screen); + layerWindow->setDesiredSize(QSize(0, 0)); window->setScreen(screen); - window->setGeometry(screen->geometry()); - if (m_xcbOnWayland && !wasVisible) - { - if (m_dialog->mode() == PreferencesDialog::Mode::MinimizeOnlyDialog - && m_dialog->isMinimized()) { // keep Window minimized... - //Workaround for QTBUG-76354 (https://bugreports.qt.io/browse/QTBUG-76354) - m_dialog->showNormal(); - m_dialog->setWindowState(Qt::WindowMinimized); - } - } - - if (wasVisible && wasSpotActive) { + if (wasSpotActive) { QTimer::singleShot(0, this, [this](){ if (m_spotlight->spotActive()) { emit m_spotlight->spotActiveChanged(true); @@ -436,16 +418,7 @@ void ProjecteurApplication::setScreenForCursorPos() // ------------------------------------------------------------------------------------------------- QScreen* ProjecteurApplication::screenAtCursorPos() const { -#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)) return this->screenAt(QCursor::pos()); -#else - const int screenNumber = this->desktop()->screenNumber(QCursor::pos()); - const auto screenList = screens(); - if (screenNumber >= 0 && screenNumber < screenList.size()) { - return screenList[screenNumber]; - } - return nullptr; -#endif } // ------------------------------------------------------------------------------------------------- @@ -593,11 +566,7 @@ void ProjecteurApplication::readCommand(QLocalSocket* clientConnection) } else if (cmdKey == "vibrate") // with args intensity (0-255), length (0-10) { - #if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) - auto const args = cmdValue.split(QLatin1Char(','), Qt::SkipEmptyParts); - #else - auto const args = cmdValue.split(QLatin1Char(','), QString::SkipEmptyParts); - #endif + auto const args = cmdValue.split(QLatin1Char(','), Qt::SkipEmptyParts); std::uint8_t const intensity = [&args]{ if (args.size() >= 1) { @@ -724,13 +693,7 @@ ProjecteurCommandClientApp::ProjecteurCommandClientApp(const QStringList& ipcCom QMetaObject::invokeMethod(this, "quit", Qt::QueuedConnection); }; - #if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)) - connect(localSocket, &QLocalSocket::errorOccurred, this, std::move(socketErrorFunc)); - #else - connect(localSocket, - static_cast(&QLocalSocket::error), - this, std::move(socketErrorFunc)); - #endif + connect(localSocket, &QLocalSocket::errorOccurred, this, std::move(socketErrorFunc)); connect(localSocket, &QLocalSocket::connected, [localSocket, &ipcCommands]() { diff --git a/src/projecteurapp.h b/src/projecteurapp.h index 60a8c0d1..8485ff7a 100644 --- a/src/projecteurapp.h +++ b/src/projecteurapp.h @@ -89,7 +89,6 @@ private slots: QQmlComponent* m_windowQmlComponent = nullptr; std::map m_commandConnections; bool m_overlayVisible = false; - const bool m_xcbOnWayland = false; QList m_overlayWindows; std::map m_screenWindowMap; diff --git a/src/settings.cc b/src/settings.cc index efa41dbe..5ceb229b 100644 --- a/src/settings.cc +++ b/src/settings.cc @@ -127,7 +127,7 @@ Settings::Settings(QObject* parent) , m_settings(new QSettings(QCoreApplication::applicationName(), QCoreApplication::applicationName(), this)) , m_presetModel(new PresetModel(loadPresets(m_settings), this)) - , m_shapeSettingsRoot(new QQmlPropertyMap(this)) + , m_shapeSettingsRoot(QQmlPropertyMap::create(this)) { init(); } @@ -137,7 +137,7 @@ Settings::Settings(const QString& configFile, QObject* parent) : QObject(parent) , m_settings(new QSettings(configFile, QSettings::NativeFormat, this)) , m_presetModel(new PresetModel(loadPresets(m_settings), this)) - , m_shapeSettingsRoot(new QQmlPropertyMap(this)) + , m_shapeSettingsRoot(QQmlPropertyMap::create(this)) { init(); } @@ -198,11 +198,7 @@ void Settings::initializeStringProperties() const auto pm = shapeSettings(shape.name()); if (!pm || !pm->property(shapeSetting.settingsKey().toLocal8Bit()).isValid()) { continue; } - #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - if (shapeSetting.defaultValue().type() != QVariant::Int) { continue; } - #else if (shapeSetting.defaultValue().metaType().id() != QMetaType::Int) { continue; } - #endif const auto stringProperty = QString("spot.shape.%1.%2").arg(shape.name().toLower()) .arg(shapeSetting.settingsKey().toLower()); @@ -346,17 +342,10 @@ void Settings::shapeSettingsLoad(const QString& preset) const QString settingsKey = section + QString("Shape.%1/%2").arg(shape.name()).arg(key); const QVariant loadedValue = m_settings->value(settingsKey, settingDefinition.defaultValue()); - #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - if (settingDefinition.defaultValue().type() == QVariant::Int // Currently only int shape settings supported - && settingDefinition.defaultValue() != loadedValue) { - logDebug(lcSettings) << QString("spot.shape.%1.%2 = ").arg(shape.name().toLower(), key) << loadedValue.toInt(); - } - #else if (settingDefinition.defaultValue().metaType().id() == QMetaType::Int // Currently only int shape settings supported && settingDefinition.defaultValue() != loadedValue) { logDebug(lcSettings) << QString("spot.shape.%1.%2 = ").arg(shape.name().toLower(), key) << loadedValue.toInt(); } - #endif if (propertyMap->property(key.toLocal8Bit()).isValid()) { propertyMap->setProperty(key.toLocal8Bit(), loadedValue); @@ -395,7 +384,7 @@ void Settings::shapeSettingsInitialize() { if (shape.shapeSettings().size() && m_shapeSettings.count(shape.name()) == 0) { - auto pm = new QQmlPropertyMap(this); + auto pm = QQmlPropertyMap::create(this); connect(pm, &QQmlPropertyMap::valueChanged, this, [this, shape, pm](const QString& key, const QVariant& value) { @@ -406,11 +395,7 @@ void Settings::shapeSettingsInitialize() if (it != s.cend()) { - #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) - if (it->defaultValue().type() == QVariant::Int) // Currently only int shape settings supported - #else if (it->defaultValue().metaType().id() == QMetaType::Int) - #endif { const auto setValue = value.toInt(); const auto min = it->minValue().toInt(); @@ -977,5 +962,3 @@ void PresetModel::removePreset(const QString& preset) m_presets.erase(r.first, r.second); endRemoveRows(); } - - diff --git a/src/spotshapes.cc b/src/spotshapes.cc index 6cda9eb6..4bcab017 100644 --- a/src/spotshapes.cc +++ b/src/spotshapes.cc @@ -48,11 +48,7 @@ QSGNode* SpotShapeStar::updatePaintNode(QSGNode* oldNode, UpdatePaintNodeData* u // Set geometry const auto geometry = new QSGGeometry(QSGGeometry::defaultAttributes_Point2D(), vertexCount); - #if QT_VERSION >= 0x050800 - geometry->setDrawingMode(QSGGeometry::DrawTriangleFan); - #else - geometry->setDrawingMode(GL_TRIANGLE_FAN); - #endif + geometry->setDrawingMode(QSGGeometry::DrawTriangleFan); geometryNode->setGeometry(geometry); geometryNode->setFlag(QSGNode::OwnsGeometry, true); @@ -217,11 +213,7 @@ QSGNode* SpotShapeNGon::updatePaintNode(QSGNode* oldNode, UpdatePaintNodeData* u // Set geometry const auto geometry = new QSGGeometry(QSGGeometry::defaultAttributes_Point2D(), vertexCount); - #if QT_VERSION >= 0x050800 - geometry->setDrawingMode(QSGGeometry::DrawTriangleFan); - #else - geometry->setDrawingMode(GL_TRIANGLE_FAN); - #endif + geometry->setDrawingMode(QSGGeometry::DrawTriangleFan); geometryNode->setGeometry(geometry); geometryNode->setFlag(QSGNode::OwnsGeometry, true); From 4c98071df5b88b448f8ed240516d564eb7585be9 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 10:58:31 -0500 Subject: [PATCH 15/67] Adds justfile and native arch install --- Justfile | 142 ++++++++++++++++++++++++++++++++++++++++ README.md | 15 +++++ packaging/arch/PKGBUILD | 51 +++++++++++++++ 3 files changed, 208 insertions(+) create mode 100644 Justfile create mode 100644 packaging/arch/PKGBUILD diff --git a/Justfile b/Justfile new file mode 100644 index 00000000..8db9d688 --- /dev/null +++ b/Justfile @@ -0,0 +1,142 @@ +set shell := ["bash", "-euo", "pipefail", "-c"] + +project_root := justfile_directory() +build_dir := project_root / "build" +arch_dir := build_dir / "arch-package" +package_dir := build_dir / "packages" + +# Show the available developer commands. +default: + @just --list + +# Build and smoke-test the Projecteur binary. +build: _require-arch deps + cmake -S "{{ project_root }}" -B "{{ build_dir }}" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DPACKAGE_TARGETS=OFF + cmake --build "{{ build_dir }}" --parallel + "{{ build_dir }}/projecteur" --version + "{{ build_dir }}/projecteur" --help >/dev/null + +# Build an Arch Linux package from the current working tree. +package: _require-arch deps + #!/usr/bin/env bash + if (( EUID == 0 )); then + echo "error: makepkg must be run as a regular user, not root." >&2 + exit 1 + fi + + root="{{ project_root }}" + stage="{{ arch_dir }}" + packages="{{ package_dir }}" + + mkdir -p "$stage" "$packages" + install -m 0644 "$root/packaging/arch/PKGBUILD" "$stage/PKGBUILD" + + cmake -S "$root" -B "$stage/version-build" -DPACKAGE_TARGETS=OFF + cp "$stage/version-build/version-string.archlinux" "$stage/projecteur-pkgver" + + git -C "$root" ls-files --cached --others --exclude-standard -z \ + | while IFS= read -r -d '' path; do + if [[ -e "$root/$path" || -L "$root/$path" ]]; then + printf '%s\0' "$path" + fi + done \ + | tar -C "$root" --null --no-recursion --files-from=- \ + --transform='s,^,projecteur-local/,' \ + -czf "$stage/projecteur-local.tar.gz" + + ( + cd "$stage" + updpkgsums + BUILDDIR="$stage/work" \ + PKGDEST="$packages" \ + SRCDEST="$stage/sources" \ + makepkg --cleanbuild --clean --force --noconfirm --syncdeps + ) + + echo + echo "Package created:" + ( + cd "$stage" + PKGDEST="$packages" makepkg --packagelist + ) + +# Build, package, and install Projecteur through pacman. +install: build package + #!/usr/bin/env bash + stage="{{ arch_dir }}" + packages="{{ package_dir }}" + package_file="$( + cd "$stage" + PKGDEST="$packages" makepkg --packagelist | head -n 1 + )" + + if [[ ! -f "$package_file" ]]; then + echo "error: expected package was not created: $package_file" >&2 + exit 1 + fi + + if (( EUID == 0 )); then + pacman -U --noconfirm "$package_file" + elif command -v sudo >/dev/null 2>&1; then + sudo pacman -U --noconfirm "$package_file" + else + echo "error: installing the package requires root or sudo." >&2 + exit 1 + fi + + /usr/bin/projecteur --version + +# Install the compiler and Projecteur build dependencies. +deps: _require-arch + #!/usr/bin/env bash + dependencies=( + base-devel + cmake + git + layer-shell-qt + libglvnd + pacman-contrib + qt6-base + qt6-declarative + qt6-tools + ) + + mapfile -t missing < <(pacman -T "${dependencies[@]}" || true) + if (( ${#missing[@]} == 0 )); then + echo "Arch build dependencies are already installed." + exit 0 + fi + + echo "Installing missing Arch build dependencies: ${missing[*]}" + if (( EUID == 0 )); then + pacman -S --needed --noconfirm "${missing[@]}" + elif command -v sudo >/dev/null 2>&1; then + sudo pacman -S --needed --noconfirm "${missing[@]}" + else + echo "error: installing build dependencies requires root or sudo." >&2 + exit 1 + fi + +_require-arch: + #!/usr/bin/env bash + if [[ ! -r /etc/os-release ]]; then + echo "error: /etc/os-release is unavailable; this workflow requires Arch Linux." >&2 + exit 1 + fi + + # shellcheck disable=SC1091 + source /etc/os-release + distro_ids=" ${ID:-} ${ID_LIKE:-} " + if [[ "$distro_ids" != *" arch "* ]]; then + echo "error: this workflow requires Arch Linux or an Arch-based distribution." >&2 + echo " detected: ${PRETTY_NAME:-unknown Linux distribution}" >&2 + exit 1 + fi + + if ! command -v pacman >/dev/null 2>&1; then + echo "error: pacman was not found; this does not look like a usable Arch system." >&2 + exit 1 + fi diff --git a/README.md b/README.md index 9a410a3a..e987cf96 100644 --- a/README.md +++ b/README.md @@ -166,6 +166,21 @@ cmake --build build sudo cmake --install build ``` +### Arch Linux + +On Arch Linux and Arch-based distributions, the `Justfile` can install missing +build dependencies and run the complete local packaging workflow: + +```sh +just build # Build and smoke-test build/projecteur +just package # Create build/packages/projecteur-*.pkg.tar.zst +just install # Build, package, and install the package with pacman +``` + +`just package` packages the current working tree, including uncommitted files, +through the checked-in `packaging/arch/PKGBUILD`. `just install` uses `sudo` +only for dependency installation and the final `pacman -U`. + Installing is required for zoom: KWin authorizes the screenshot interface by matching the running executable with the installed `projecteur.desktop` metadata. A binary run directly from the build directory can use the normal spotlight, but KWin will reject diff --git a/packaging/arch/PKGBUILD b/packaging/arch/PKGBUILD new file mode 100644 index 00000000..8286794c --- /dev/null +++ b/packaging/arch/PKGBUILD @@ -0,0 +1,51 @@ +# Local development package for Projecteur. +# +# `just package` creates the two local sources below in a staging directory, +# updates their checksums, and invokes makepkg there. + +pkgname=projecteur +pkgver=0 +pkgrel=1 +pkgdesc='Virtual laser pointer for inertial pointer devices on KDE Plasma Wayland' +arch=('x86_64') +url='https://github.com/jahnf/Projecteur' +license=('MIT') +depends=( + 'gcc-libs' + 'glibc' + 'layer-shell-qt>=6.7' + 'libglvnd' + 'qt6-base>=6.11' + 'qt6-declarative>=6.11' +) +makedepends=( + 'cmake>=3.20' + 'qt6-tools>=6.11' +) +source=( + 'projecteur-local.tar.gz' + 'projecteur-pkgver' +) +sha256sums=( + 'SKIP' + 'SKIP' +) + +pkgver() { + cat "$srcdir/projecteur-pkgver" +} + +build() { + cmake -S projecteur-local -B build \ + -DCMAKE_BUILD_TYPE=None \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_UDEVRULESDIR=/usr/lib/udev/rules.d \ + -DPACKAGE_TARGETS=OFF + cmake --build build +} + +package() { + DESTDIR="$pkgdir" cmake --install build + install -Dm644 projecteur-local/LICENSE.md \ + "$pkgdir/usr/share/licenses/$pkgname/LICENSE" +} From aed15d78c7c2c370c5a2d8cef2b79ac17e6b881f Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 11:07:28 -0500 Subject: [PATCH 16/67] Clean startup now --- cmake/templates/projecteur.desktop.in | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/templates/projecteur.desktop.in b/cmake/templates/projecteur.desktop.in index 265f005f..2dad931f 100644 --- a/cmake/templates/projecteur.desktop.in +++ b/cmake/templates/projecteur.desktop.in @@ -5,5 +5,6 @@ Name=Projecteur GenericName=Wayland spotlight for Logitech presenter devices Icon=projecteur Terminal=false +StartupNotify=false Categories=Office;Presentation; X-KDE-DBUS-Restricted-Interfaces=org.kde.KWin.ScreenShot2 From 1799f59a1728e10d9e6978b2f102786541d21657 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 11:12:48 -0500 Subject: [PATCH 17/67] don't mix up upstream with this fork --- README.md | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index e987cf96..288f4041 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,22 @@ # Projecteur -develop: [![Build Status develop][gh-badge-dev]][gh-link-dev] -master: [![Build Status master][gh-badge-rel]][gh-link-rel] +[![Build Status][gh-badge]][gh-link] -Qt 6 / KDE Plasma Wayland application for the Logitech Spotlight device (and similar devices). \ -This branch is the Qt 6 / Plasma Wayland port. +Qt 6 / KDE Plasma Wayland application for the Logitech Spotlight device and +similar presenters. -[gh-badge-dev]: https://github.com/jahnf/Projecteur/workflows/ci-build/badge.svg?branch=develop -[gh-badge-rel]: https://github.com/jahnf/Projecteur/workflows/ci-build/badge.svg?branch=master -[gh-link-dev]: https://github.com/jahnf/Projecteur/actions?query=workflow%3Aci-build+branch%3Adevelop -[gh-link-rel]: https://github.com/jahnf/Projecteur/actions?query=workflow%3Aci-build+branch%3Amaster +## About This Fork + +This repository is a fork of [jahnf/Projecteur](https://github.com/jahnf/Projecteur) +focused on supporting modern KDE Plasma on Wayland. It targets KDE Plasma 6.7 +with Qt 6.11 and LayerShellQt 6.7. Wayland is the only supported windowing +platform; Qt 5 and X11 are outside the scope of this fork. + +In addition to the hardware supported by the upstream project, this fork adds +support for the **Logitech Spotlight 2 over Bluetooth** (`046d:b506`). + +[gh-badge]: https://github.com/gbin/Projecteur/actions/workflows/ci-build.yml/badge.svg?branch=develop +[gh-link]: https://github.com/gbin/Projecteur/actions/workflows/ci-build.yml?query=branch%3Adevelop ## Motivation @@ -23,6 +30,7 @@ So here it is: a Linux application for the Logitech Spotlight. ## Table of Contents - [Projecteur](#projecteur) + - [About This Fork](#about-this-fork) - [Motivation](#motivation) - [Table of Contents](#table-of-contents) - [Features](#features) @@ -159,7 +167,7 @@ and Hold Move actions for the same button. ### Build Example ```sh -git clone https://github.com/jahnf/Projecteur +git clone https://github.com/gbin/Projecteur cd Projecteur cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr cmake --build build From 7b607e98aa48cad7a5710071942ed1de74e4a4e4 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 11:54:13 -0500 Subject: [PATCH 18/67] Move that to a proper plasma applet --- .github/workflows/ci-build.yml | 2 +- CMakeLists.txt | 9 + Justfile | 3 + README.md | 18 +- cmake/modules/PkgDependenciesProjecteur.cmake | 5 +- packaging/arch/PKGBUILD | 3 + plasma/CMakeLists.txt | 19 ++ plasma/metadata.json | 22 ++ plasma/projecteurapplet.cc | 184 +++++++++++++++++ plasma/projecteurapplet.h | 71 +++++++ plasma/qml/FullRepresentation.qml | 187 +++++++++++++++++ plasma/qml/main.qml | 36 ++++ src/projecteurapp.cc | 109 +++------- src/projecteurapp.h | 11 +- src/projecteurcontrol.cc | 195 ++++++++++++++++++ src/projecteurcontrol.h | 68 ++++++ 16 files changed, 850 insertions(+), 92 deletions(-) create mode 100644 plasma/CMakeLists.txt create mode 100644 plasma/metadata.json create mode 100644 plasma/projecteurapplet.cc create mode 100644 plasma/projecteurapplet.h create mode 100644 plasma/qml/FullRepresentation.qml create mode 100644 plasma/qml/main.qml create mode 100644 src/projecteurcontrol.cc create mode 100644 src/projecteurcontrol.h diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index ea02f959..1455ac15 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -16,7 +16,7 @@ jobs: - name: Install build dependencies run: >- pacman -Syu --noconfirm - base-devel cmake git layer-shell-qt + base-devel cmake extra-cmake-modules git kcoreaddons layer-shell-qt libplasma qt6-base qt6-declarative qt6-tools - uses: actions/checkout@v4 diff --git a/CMakeLists.txt b/CMakeLists.txt index 5162c42c..7bb8dedd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,10 @@ project(Projecteur LANGUAGES CXX) add_compile_options(-Wall -Wextra -Werror) #set(CMAKE_CXX_CLANG_TIDY clang-tidy-12) +find_package(ECM 6.7 REQUIRED NO_MODULE) +list(APPEND CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) +include(KDEInstallDirs6) + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules") include(GitVersion) @@ -21,6 +25,8 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) find_package(Qt6 6.11 REQUIRED COMPONENTS Core DBus Gui LinguistTools Quick Widgets) +find_package(KF6 6.7 REQUIRED COMPONENTS Config CoreAddons Package KirigamiPlatform WindowSystem) +find_package(Plasma 6.7 REQUIRED) find_package(LayerShellQt 6.7 REQUIRED) set(QT_PACKAGE_NAME Qt6) message(STATUS "Using Qt version: ${Qt6_VERSION}") @@ -51,6 +57,7 @@ add_executable(projecteur src/nativekeyseqedit.cc src/nativekeyseqedit.h src/preferencesdlg.cc src/preferencesdlg.h src/projecteurapp.cc src/projecteurapp.h + src/projecteurcontrol.cc src/projecteurcontrol.h src/runguard.cc src/runguard.h src/settings.cc src/settings.h src/spotlight.cc src/spotlight.h @@ -72,6 +79,8 @@ target_compile_options(projecteur target_compile_definitions(projecteur PRIVATE CXX_COMPILER_ID=${CMAKE_CXX_COMPILER_ID} CXX_COMPILER_VERSION=${CMAKE_CXX_COMPILER_VERSION}) +add_subdirectory(plasma) + # Set version project properties for builds not from a git repository (e.g. created with git archive) # If creating the version number via git information fails, the following target properties # will be used. IMPORTANT - when creating a release tag with git flow: diff --git a/Justfile b/Justfile index 8db9d688..3442d7e3 100644 --- a/Justfile +++ b/Justfile @@ -95,8 +95,11 @@ deps: _require-arch dependencies=( base-devel cmake + extra-cmake-modules git + kcoreaddons layer-shell-qt + libplasma libglvnd pacman-contrib qt6-base diff --git a/README.md b/README.md index 288f4041..aafc9304 100644 --- a/README.md +++ b/README.md @@ -161,8 +161,9 @@ and Hold Move actions for the same button. * C++17 compiler * CMake 3.20 or later * Qt 6.11 with Core, DBus, Gui, LinguistTools, Quick, and Widgets -* KDE Plasma 6.7 Wayland +* KDE Plasma 6.7 Wayland, including Libplasma and KCoreAddons * LayerShellQt 6.7 +* Extra CMake Modules 6.7 or later ### Build Example @@ -213,11 +214,16 @@ file in this repository: `55-projecteur.rules.in` in /dev/input should be readable/writable by you. (See also about [device detection](#device-shows-as-not-connected)) -### Application Menu +### System Tray -The application menu is accessible via the system tray icon. There you will find -the preferences and the menu entry to exit the application. If the system tray icon is missing, -see the [Troubleshooting](#missing-system-tray) section. +Projecteur provides a native Plasma system tray popup while the application is +running. It shows connected presenters and offers quick access to the overlay, +presets, spotlight test, preferences, about dialog, and quit action. Plasma owns +the popup placement and closes it when the icon is clicked again or focus moves +elsewhere. + +If the system tray icon is missing, see the +[Troubleshooting](#missing-system-tray) section. ### Command Line Interface @@ -326,7 +332,7 @@ The overlay requires the Plasma Wayland compositor. Verify that the session repo #### Missing System Tray -If the Plasma system tray does not show the _Application Menu_, commands can be sent +If the Plasma system tray does not show the _Projecteur_ applet, commands can be sent to the application to bring up the preferences dialog, test the spotlight, quit the application or set spotlight properties. See [Command Line Interface](#command-line-interface). There is also a command diff --git a/cmake/modules/PkgDependenciesProjecteur.cmake b/cmake/modules/PkgDependenciesProjecteur.cmake index caa35d00..df4fc79c 100644 --- a/cmake/modules/PkgDependenciesProjecteur.cmake +++ b/cmake/modules/PkgDependenciesProjecteur.cmake @@ -2,11 +2,14 @@ list(APPEND _PkgDeps_Projecteur_archlinux "qt6-base>=6.11" "qt6-declarative>=6.11" "layer-shell-qt>=6.7" + "kcoreaddons>=6.7" + "libplasma>=6.7" "udev" ) list(APPEND _PkgDepsMake_Projecteur_archlinux - "fakeroot" "awk" "cmake>=3.20" "make" "lsb-release" "tar" "pkg-config" "qt6-tools>=6.11" + "fakeroot" "awk" "cmake>=3.20" "extra-cmake-modules>=6.7" "make" "lsb-release" "tar" + "pkg-config" "qt6-tools>=6.11" ) list(APPEND PkgDependencies_MAP_Projecteur diff --git a/packaging/arch/PKGBUILD b/packaging/arch/PKGBUILD index 8286794c..a0ba8eed 100644 --- a/packaging/arch/PKGBUILD +++ b/packaging/arch/PKGBUILD @@ -13,13 +13,16 @@ license=('MIT') depends=( 'gcc-libs' 'glibc' + 'kcoreaddons>=6.7' 'layer-shell-qt>=6.7' + 'libplasma>=6.7' 'libglvnd' 'qt6-base>=6.11' 'qt6-declarative>=6.11' ) makedepends=( 'cmake>=3.20' + 'extra-cmake-modules>=6.7' 'qt6-tools>=6.11' ) source=( diff --git a/plasma/CMakeLists.txt b/plasma/CMakeLists.txt new file mode 100644 index 00000000..455b908c --- /dev/null +++ b/plasma/CMakeLists.txt @@ -0,0 +1,19 @@ +if(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") +endif() + +plasma_add_applet(org.projecteur.Projecteur + QML_SOURCES + qml/main.qml + qml/FullRepresentation.qml + CPP_SOURCES + projecteurapplet.cc + projecteurapplet.h +) + +target_link_libraries(org.projecteur.Projecteur + PRIVATE + Qt6::DBus + KF6::CoreAddons + Plasma::Plasma +) diff --git a/plasma/metadata.json b/plasma/metadata.json new file mode 100644 index 00000000..e3f65ada --- /dev/null +++ b/plasma/metadata.json @@ -0,0 +1,22 @@ +{ + "KPlugin": { + "Authors": [ + { + "Name": "Projecteur contributors" + } + ], + "Category": "Utilities", + "Description": "Quick controls for the Projecteur desktop spotlight", + "EnabledByDefault": true, + "Icon": "projecteur", + "License": "MIT", + "Name": "Projecteur", + "Version": "1.0", + "Website": "https://github.com/jahnf/Projecteur" + }, + "KPackageStructure": "Plasma/Applet", + "X-Plasma-API-Minimum-Version": "6.0", + "X-Plasma-DBusActivationService": "org.projecteur.Projecteur", + "X-Plasma-NotificationArea": "true", + "X-Plasma-NotificationAreaCategory": "ApplicationStatus" +} diff --git a/plasma/projecteurapplet.cc b/plasma/projecteurapplet.cc new file mode 100644 index 00000000..709b4136 --- /dev/null +++ b/plasma/projecteurapplet.cc @@ -0,0 +1,184 @@ +// This file is part of Projecteur - https://github.com/jahnf/projecteur +// - See LICENSE.md and README.md + +#include "projecteurapplet.h" + +#include + +#include +#include +#include +#include +#include +#include + +namespace { +constexpr auto serviceName = "org.projecteur.Projecteur"; +constexpr auto objectPath = "/org/projecteur/Projecteur"; +constexpr auto interfaceName = "org.projecteur.Projecteur"; +} + +ProjecteurApplet::ProjecteurApplet(QObject* parent, const KPluginMetaData& data, + const QVariantList& args) + : Plasma::Applet(parent, data, args) + , m_serviceWatcher(new QDBusServiceWatcher( + QString::fromLatin1(serviceName), QDBusConnection::sessionBus(), + QDBusServiceWatcher::WatchForRegistration | QDBusServiceWatcher::WatchForUnregistration, + this)) +{ + connect(m_serviceWatcher, &QDBusServiceWatcher::serviceRegistered, + this, &ProjecteurApplet::serviceRegistered); + connect(m_serviceWatcher, &QDBusServiceWatcher::serviceUnregistered, + this, &ProjecteurApplet::serviceUnregistered); + + auto bus = QDBusConnection::sessionBus(); + bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), + QString::fromLatin1(interfaceName), QStringLiteral("overlayEnabledChanged"), + this, SLOT(remoteOverlayEnabledChanged(bool))); + bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), + QString::fromLatin1(interfaceName), QStringLiteral("spotlightActiveChanged"), + this, SLOT(remoteSpotlightActiveChanged(bool))); + bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), + QString::fromLatin1(interfaceName), QStringLiteral("connectedDevicesChanged"), + this, SLOT(remoteConnectedDevicesChanged(QStringList))); + bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), + QString::fromLatin1(interfaceName), QStringLiteral("presetsChanged"), + this, SLOT(remotePresetsChanged(QStringList))); + bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), + QString::fromLatin1(interfaceName), QStringLiteral("currentPresetChanged"), + this, SLOT(remoteCurrentPresetChanged(QString))); + + const auto registered = bus.interface()->isServiceRegistered(QString::fromLatin1(serviceName)); + if (registered.isValid() && registered.value()) { + serviceRegistered(QString::fromLatin1(serviceName)); + } +} + +void ProjecteurApplet::setOverlayEnabled(bool enabled) +{ + call(QStringLiteral("SetOverlayEnabled"), {enabled}); +} + +void ProjecteurApplet::setSpotlightActive(bool active) +{ + call(QStringLiteral("SetSpotlightActive"), {active}); +} + +void ProjecteurApplet::loadPreset(const QString& preset) +{ + call(QStringLiteral("LoadPreset"), {preset}); +} + +void ProjecteurApplet::showPreferences() +{ + call(QStringLiteral("ShowPreferences")); +} + +void ProjecteurApplet::showAbout() +{ + call(QStringLiteral("ShowAbout")); +} + +void ProjecteurApplet::quitProjecteur() +{ + call(QStringLiteral("Quit")); +} + +void ProjecteurApplet::serviceRegistered(const QString& service) +{ + if (service != QString::fromLatin1(serviceName)) { return; } + if (!m_serviceAvailable) { + m_serviceAvailable = true; + emit serviceAvailableChanged(); + } + QTimer::singleShot(0, this, &ProjecteurApplet::refresh); +} + +void ProjecteurApplet::serviceUnregistered(const QString& service) +{ + if (service != QString::fromLatin1(serviceName)) { return; } + if (m_serviceAvailable) { + m_serviceAvailable = false; + emit serviceAvailableChanged(); + } + resetState(); +} + +void ProjecteurApplet::remoteOverlayEnabledChanged(bool enabled) +{ + if (m_overlayEnabled == enabled) { return; } + m_overlayEnabled = enabled; + emit overlayEnabledChanged(); +} + +void ProjecteurApplet::remoteSpotlightActiveChanged(bool active) +{ + if (m_spotlightActive == active) { return; } + m_spotlightActive = active; + emit spotlightActiveChanged(); +} + +void ProjecteurApplet::remoteConnectedDevicesChanged(const QStringList& devices) +{ + if (m_connectedDevices == devices) { return; } + m_connectedDevices = devices; + emit connectedDevicesChanged(); +} + +void ProjecteurApplet::remotePresetsChanged(const QStringList& presets) +{ + if (m_presets == presets) { return; } + m_presets = presets; + emit presetsChanged(); +} + +void ProjecteurApplet::remoteCurrentPresetChanged(const QString& preset) +{ + if (m_currentPreset == preset) { return; } + m_currentPreset = preset; + emit currentPresetChanged(); +} + +void ProjecteurApplet::refresh() +{ + QDBusInterface interface(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), + QString::fromLatin1(interfaceName), QDBusConnection::sessionBus()); + if (!interface.isValid()) { return; } + + const bool trayVisible = interface.property("TrayVisible").toBool(); + if (m_trayVisible != trayVisible) { + m_trayVisible = trayVisible; + emit trayVisibleChanged(); + } + remoteOverlayEnabledChanged(interface.property("OverlayEnabled").toBool()); + remoteSpotlightActiveChanged(interface.property("SpotlightActive").toBool()); + remoteConnectedDevicesChanged(interface.property("ConnectedDevices").toStringList()); + remotePresetsChanged(interface.property("Presets").toStringList()); + remoteCurrentPresetChanged(interface.property("CurrentPreset").toString()); +} + +void ProjecteurApplet::resetState() +{ + if (!m_trayVisible) { + m_trayVisible = true; + emit trayVisibleChanged(); + } + remoteOverlayEnabledChanged(true); + remoteSpotlightActiveChanged(false); + remoteConnectedDevicesChanged({}); + remotePresetsChanged({}); + remoteCurrentPresetChanged({}); +} + +void ProjecteurApplet::call(const QString& method, const QVariantList& arguments) +{ + if (!m_serviceAvailable) { return; } + QDBusInterface interface(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), + QString::fromLatin1(interfaceName), QDBusConnection::sessionBus()); + if (!interface.isValid()) { return; } + interface.asyncCallWithArgumentList(method, arguments); +} + +K_PLUGIN_CLASS_WITH_JSON(ProjecteurApplet, "metadata.json") + +#include "projecteurapplet.moc" diff --git a/plasma/projecteurapplet.h b/plasma/projecteurapplet.h new file mode 100644 index 00000000..f2f74efa --- /dev/null +++ b/plasma/projecteurapplet.h @@ -0,0 +1,71 @@ +// This file is part of Projecteur - https://github.com/jahnf/projecteur +// - See LICENSE.md and README.md +#pragma once + +#include + +#include + +class QDBusServiceWatcher; + +class ProjecteurApplet : public Plasma::Applet +{ + Q_OBJECT + Q_PROPERTY(bool serviceAvailable READ serviceAvailable NOTIFY serviceAvailableChanged) + Q_PROPERTY(bool trayVisible READ trayVisible NOTIFY trayVisibleChanged) + Q_PROPERTY(bool overlayEnabled READ overlayEnabled NOTIFY overlayEnabledChanged) + Q_PROPERTY(bool spotlightActive READ spotlightActive NOTIFY spotlightActiveChanged) + Q_PROPERTY(QStringList connectedDevices READ connectedDevices NOTIFY connectedDevicesChanged) + Q_PROPERTY(QStringList presets READ presets NOTIFY presetsChanged) + Q_PROPERTY(QString currentPreset READ currentPreset NOTIFY currentPresetChanged) + +public: + ProjecteurApplet(QObject* parent, const KPluginMetaData& data, const QVariantList& args); + + bool serviceAvailable() const { return m_serviceAvailable; } + bool trayVisible() const { return m_trayVisible; } + bool overlayEnabled() const { return m_overlayEnabled; } + bool spotlightActive() const { return m_spotlightActive; } + QStringList connectedDevices() const { return m_connectedDevices; } + QStringList presets() const { return m_presets; } + QString currentPreset() const { return m_currentPreset; } + + Q_INVOKABLE void setOverlayEnabled(bool enabled); + Q_INVOKABLE void setSpotlightActive(bool active); + Q_INVOKABLE void loadPreset(const QString& preset); + Q_INVOKABLE void showPreferences(); + Q_INVOKABLE void showAbout(); + Q_INVOKABLE void quitProjecteur(); + +signals: + void serviceAvailableChanged(); + void trayVisibleChanged(); + void overlayEnabledChanged(); + void spotlightActiveChanged(); + void connectedDevicesChanged(); + void presetsChanged(); + void currentPresetChanged(); + +private slots: + void serviceRegistered(const QString& service); + void serviceUnregistered(const QString& service); + void remoteOverlayEnabledChanged(bool enabled); + void remoteSpotlightActiveChanged(bool active); + void remoteConnectedDevicesChanged(const QStringList& devices); + void remotePresetsChanged(const QStringList& presets); + void remoteCurrentPresetChanged(const QString& preset); + +private: + void refresh(); + void resetState(); + void call(const QString& method, const QVariantList& arguments = {}); + + QDBusServiceWatcher* m_serviceWatcher = nullptr; + bool m_serviceAvailable = false; + bool m_trayVisible = true; + bool m_overlayEnabled = true; + bool m_spotlightActive = false; + QStringList m_connectedDevices; + QStringList m_presets; + QString m_currentPreset; +}; diff --git a/plasma/qml/FullRepresentation.qml b/plasma/qml/FullRepresentation.qml new file mode 100644 index 00000000..9f8688b0 --- /dev/null +++ b/plasma/qml/FullRepresentation.qml @@ -0,0 +1,187 @@ +// This file is part of Projecteur - https://github.com/jahnf/projecteur +// - See LICENSE.md and README.md + +import QtQuick +import QtQuick.Layouts +import org.kde.kirigami as Kirigami +import org.kde.plasma.components as PlasmaComponents3 +import org.kde.plasma.core as PlasmaCore +import org.kde.plasma.extras as PlasmaExtras +import org.kde.plasma.plasmoid + +PlasmaExtras.Representation { + id: root + + required property var backend + required property PlasmoidItem plasmoidItem + + implicitWidth: Kirigami.Units.gridUnit * 22 + implicitHeight: content.implicitHeight + header.implicitHeight + focus: true + collapseMarginsHint: true + + ColumnLayout { + id: content + + spacing: Kirigami.Units.largeSpacing + + anchors { + left: parent.left + right: parent.right + top: parent.top + margins: Kirigami.Units.largeSpacing + } + + PlasmaExtras.Heading { + Layout.fillWidth: true + level: 4 + text: i18n("Connected presenters") + } + + PlasmaComponents3.Label { + Layout.fillWidth: true + visible: !root.backend || root.backend.connectedDevices.length === 0 + text: i18n("No compatible presenter connected") + opacity: 0.7 + wrapMode: Text.WordWrap + } + + Repeater { + model: root.backend ? root.backend.connectedDevices : [] + + delegate: RowLayout { + required property string modelData + + Layout.fillWidth: true + spacing: Kirigami.Units.smallSpacing + + Kirigami.Icon { + source: "input-mouse-symbolic" + implicitWidth: Kirigami.Units.iconSizes.smallMedium + implicitHeight: implicitWidth + } + + PlasmaComponents3.Label { + Layout.fillWidth: true + text: modelData + elide: Text.ElideRight + } + + } + + } + + Kirigami.Separator { + Layout.fillWidth: true + } + + RowLayout { + Layout.fillWidth: true + spacing: Kirigami.Units.smallSpacing + + PlasmaComponents3.Label { + text: i18n("Preset:") + } + + PlasmaComponents3.ComboBox { + id: presetCombo + + Layout.fillWidth: true + enabled: root.backend && root.backend.serviceAvailable + model: [i18n("Current Settings")].concat(root.backend ? root.backend.presets : []) + currentIndex: { + if (!root.backend || root.backend.currentPreset.length === 0) + return 0; + + const index = root.backend.presets.indexOf(root.backend.currentPreset); + return index < 0 ? 0 : index + 1; + } + onActivated: (index) => { + if (index > 0) + root.backend.loadPreset(root.backend.presets[index - 1]); + + } + } + + } + + RowLayout { + Layout.fillWidth: true + spacing: Kirigami.Units.smallSpacing + + PlasmaComponents3.Button { + Layout.fillWidth: true + enabled: root.backend && root.backend.serviceAvailable + text: root.backend && root.backend.spotlightActive ? i18n("Hide Spotlight") : i18n("Test Spotlight") + icon.name: root.backend && root.backend.spotlightActive ? "visibility-hidden-symbolic" : "visibility-symbolic" + onClicked: root.backend.setSpotlightActive(!root.backend.spotlightActive) + } + + PlasmaComponents3.Button { + Layout.fillWidth: true + enabled: root.backend && root.backend.serviceAvailable + text: i18n("Preferences…") + icon.name: "configure-symbolic" + onClicked: { + root.plasmoidItem.expanded = false; + root.backend.showPreferences(); + } + } + + } + + } + + header: PlasmaExtras.PlasmoidHeading { + id: header + + contentItem: RowLayout { + spacing: Kirigami.Units.smallSpacing + + PlasmaComponents3.Switch { + text: i18n("Enable Spotlight") + icon.name: "projecteur" + checked: root.backend ? root.backend.overlayEnabled : false + enabled: root.backend && root.backend.serviceAvailable + onToggled: root.backend.setOverlayEnabled(checked) + } + + Item { + Layout.fillWidth: true + } + + PlasmaComponents3.ToolButton { + text: i18n("About Projecteur") + icon.name: "help-about-symbolic" + display: PlasmaComponents3.AbstractButton.IconOnly + onClicked: { + root.plasmoidItem.expanded = false; + root.backend.showAbout(); + } + + PlasmaComponents3.ToolTip { + text: parent.text + } + + } + + PlasmaComponents3.ToolButton { + text: i18n("Quit Projecteur") + icon.name: "application-exit-symbolic" + display: PlasmaComponents3.AbstractButton.IconOnly + onClicked: { + root.plasmoidItem.expanded = false; + root.backend.quitProjecteur(); + } + + PlasmaComponents3.ToolTip { + text: parent.text + } + + } + + } + + } + +} diff --git a/plasma/qml/main.qml b/plasma/qml/main.qml new file mode 100644 index 00000000..67aee862 --- /dev/null +++ b/plasma/qml/main.qml @@ -0,0 +1,36 @@ +// This file is part of Projecteur - https://github.com/jahnf/projecteur +// - See LICENSE.md and README.md + +import QtQuick +import org.kde.plasma.core as PlasmaCore +import org.kde.plasma.plasmoid + +PlasmoidItem { + id: root + + readonly property var backend: Plasmoid + + switchWidth: 320 + switchHeight: 320 + activationTogglesExpanded: true + hideOnWindowDeactivate: true + Plasmoid.icon: "projecteur" + Plasmoid.status: backend && backend.serviceAvailable && backend.trayVisible ? PlasmaCore.Types.ActiveStatus : PlasmaCore.Types.HiddenStatus + toolTipMainText: i18n("Projecteur") + toolTipSubText: { + if (!backend || !backend.serviceAvailable) + return i18n("Projecteur is not running"); + + if (backend.connectedDevices.length === 0) + return i18n("No presenter connected"); + + return i18np("%1 connected presenter", "%1 connected presenters", backend.connectedDevices.length); + } + Plasmoid.onActivated: root.expanded = !root.expanded + + fullRepresentation: FullRepresentation { + backend: root.backend + plasmoidItem: root + } + +} diff --git a/src/projecteurapp.cc b/src/projecteurapp.cc index 06538151..96edb287 100644 --- a/src/projecteurapp.cc +++ b/src/projecteurapp.cc @@ -9,6 +9,7 @@ #include "linuxdesktop.h" #include "logging.h" #include "preferencesdlg.h" +#include "projecteurcontrol.h" #include "settings.h" #include "spotlight.h" @@ -17,7 +18,6 @@ #include #include #include -#include #include #include #include @@ -25,7 +25,6 @@ #include #include #include -#include #include #include @@ -42,8 +41,6 @@ namespace { // ------------------------------------------------------------------------------------------------- ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Options& options) : QApplication(argc, argv) - , m_trayIcon(new QSystemTrayIcon()) - , m_trayMenu(new QMenu()) , m_localServer(new QLocalServer(this)) , m_linuxDesktop(new LinuxDesktop(this)) { @@ -77,6 +74,10 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio connect(&*m_dialog, &PreferencesDialog::testButtonClicked, this, [this](){ m_spotlight->setSpotActive(true); }); + connect(&*m_dialog, &PreferencesDialog::exitApplicationRequested, this, [this]() { + logDebug(mainapp) << tr("Exit request from preferences dialog."); + quit(); + }); const QString desktopEnv = m_linuxDesktop->type() == LinuxDesktop::Type::KDE ? QStringLiteral("KDE") @@ -125,23 +126,14 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio if (m_spotlight->spotActive()) { m_spotlight->setSpotActive(false); } else { emit m_spotlight->spotActiveChanged(false); } } - else { - QTimer::singleShot(0, this, [this](){ - if (m_spotlight->spotActive()) { - emit m_spotlight->spotActiveChanged(true); - } else { - m_spotlight->setSpotActive(true); - } - }); - } }); // Re-setup screen overlay(s) when a screen is added or removed connect(this, &ProjecteurApplication::screenAdded, this, [this](){ setupScreenOverlays(); }); connect(this, &ProjecteurApplication::screenRemoved, this, [this](){ setupScreenOverlays(); }); - // Setup the tray icon and menu - setupTrayIcon(options); + // Expose application state and actions to the native Plasma system tray applet. + setupControlService(options); connect(this, &ProjecteurApplication::aboutToQuit, this, [this](){ for (const auto window : m_overlayWindows) { delete window; } @@ -199,6 +191,7 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio // ------------------------------------------------------------------------------------------------- ProjecteurApplication::~ProjecteurApplication() { + if (m_control) { m_control->unregisterService(); } if (m_localServer) { m_localServer->close(); } for (const auto window : m_overlayWindows) { delete window; } m_overlayWindows.clear(); @@ -259,73 +252,31 @@ void ProjecteurApplication::setupSpotlight() } // ------------------------------------------------------------------------------------------------- -void ProjecteurApplication::setupTrayIcon(Options const& options) +void ProjecteurApplication::setupControlService(Options const& options) { - // add and connect 'Preferences' tray menu action - const auto actionPref = m_trayMenu->addAction(tr("&Preferences...")); - connect(actionPref, &QAction::triggered, this, [this](){ - this->showPreferences(true); - }); - - // add and and connect 'About' tray menu action - const auto actionAbout = m_trayMenu->addAction(tr("&About")); - connect(actionAbout, &QAction::triggered, this, [this]() - { - if (!m_aboutDialog) { - m_aboutDialog = new AboutDialog(); - connect(m_aboutDialog, &QDialog::finished, this, [this](int /* result */) { - m_aboutDialog->deleteLater(); // No need to keep about dialog in memory, not that important - }); - } - - if (m_aboutDialog->isVisible()) { - m_aboutDialog->show(); - m_aboutDialog->raise(); - m_aboutDialog->activateWindow(); - } else { - m_aboutDialog->open(); - } - }); - - m_trayMenu->addSeparator(); - const auto actionQuit = m_trayMenu->addAction(tr("&Quit")); - connect(actionQuit, &QAction::triggered, this, [this](){ - this->quit(); - }); - m_trayIcon->setContextMenu(&*m_trayMenu); - - m_trayIcon->setIcon(QIcon(":/icons/projecteur-tray-64.png")); - m_trayIcon->show(); - - connect(&*m_trayIcon, &QSystemTrayIcon::activated, this, - [this](QSystemTrayIcon::ActivationReason reason) { - if (reason == QSystemTrayIcon::Trigger) - { - const auto trayGeometry = m_trayIcon->geometry(); - // This usually won't give us a valid geometry, since Qt isn't drawing the tray icon itself - if (trayGeometry.isValid()) { - m_trayIcon->contextMenu()->popup(m_trayIcon->geometry().center()); - } else { - // It's tricky to get the same behavior on all desktop environments. While on GNOME3 - // it behaves as one (or most) would expect, it behaves differently on other Desktop - // environments. - // QSystemTrayIcon is a wrapper around the StatusNotfierItem on modern (Linux) Desktops - // see: https://www.freedesktop.org/wiki/Specifications/StatusNotifierItem/ - // Via the Qt API there is not much control over how e.g. KDE or GNOME show the icon - // and how it behaves.. e.g. setting something like - // org.freedesktop.StatusNotifierItem.ItemIsMenu to True would be good for KDE Plasma - // see: https://www.freedesktop.org/wiki/Specifications/StatusNotifierItem/StatusNotifierItem/ - this->showPreferences(true); - } - } - }); + m_control = new ProjecteurControl(this, m_settings, m_spotlight, !options.hideSysTrayIcon); + if (!m_control->registerService()) { + logError(mainapp) << tr("Could not register the Projecteur session D-Bus service."); + } +} - connect(&*m_dialog, &PreferencesDialog::exitApplicationRequested, actionQuit, [actionQuit]() { - logDebug(mainapp) << tr("Exit request from preferences dialog."); - actionQuit->trigger(); - }); +// ------------------------------------------------------------------------------------------------- +void ProjecteurApplication::showAbout() +{ + if (!m_aboutDialog) { + m_aboutDialog = new AboutDialog(); + connect(m_aboutDialog, &QDialog::finished, this, [this](int /* result */) { + m_aboutDialog->deleteLater(); + }); + } - m_trayIcon->setVisible(!options.hideSysTrayIcon); + if (m_aboutDialog->isVisible()) { + m_aboutDialog->show(); + m_aboutDialog->raise(); + m_aboutDialog->activateWindow(); + } else { + m_aboutDialog->open(); + } } // ------------------------------------------------------------------------------------------------- diff --git a/src/projecteurapp.h b/src/projecteurapp.h index 8485ff7a..9d1fc926 100644 --- a/src/projecteurapp.h +++ b/src/projecteurapp.h @@ -14,12 +14,11 @@ class AboutDialog; class DeviceCommandHelper; class LinuxDesktop; class PreferencesDialog; +class ProjecteurControl; class QLocalServer; class QLocalSocket; -class QMenu; class QQmlApplicationEngine; class QQmlComponent; -class QSystemTrayIcon; class Settings; class Spotlight; @@ -61,7 +60,10 @@ private slots: void readCommand(QLocalSocket* client); private: + friend class ProjecteurControl; + void showPreferences(bool show = true); + void showAbout(); void setScreenForCursorPos(); QScreen* screenAtCursorPos() const; QWindow* createOverlayWindow(); @@ -72,14 +74,13 @@ private slots: QPoint currentCursorPos() const; void setCurrentCursorPos(const QPoint& pos); - void setupTrayIcon(Options const& options); + void setupControlService(Options const& options); void setupSpotlight(); private: - std::unique_ptr m_trayIcon; - std::unique_ptr m_trayMenu; std::unique_ptr m_dialog; QPointer m_aboutDialog; + ProjecteurControl* m_control = nullptr; QLocalServer* const m_localServer = nullptr; Settings* m_settings = nullptr; Spotlight* m_spotlight = nullptr; diff --git a/src/projecteurcontrol.cc b/src/projecteurcontrol.cc new file mode 100644 index 00000000..e348dc74 --- /dev/null +++ b/src/projecteurcontrol.cc @@ -0,0 +1,195 @@ +// This file is part of Projecteur - https://github.com/jahnf/projecteur +// - See LICENSE.md and README.md + +#include "projecteurcontrol.h" + +#include "projecteurapp.h" +#include "settings.h" +#include "spotlight.h" + +#include +#include +#include +#include +#include +#include + +ProjecteurControl::ProjecteurControl(ProjecteurApplication* application, Settings* settings, + Spotlight* spotlight, bool trayVisible) + : QObject(application) + , m_application(application) + , m_settings(settings) + , m_spotlight(spotlight) + , m_trayVisible(trayVisible) +{ + connect(m_settings, &Settings::overlayDisabledChanged, this, [this](bool disabled) { + const bool enabled = !disabled; + emit overlayEnabledChanged(enabled); + emitPropertiesChanged({{QStringLiteral("OverlayEnabled"), enabled}}); + }); + connect(m_spotlight, &Spotlight::spotActiveChanged, this, [this](bool active) { + emit spotlightActiveChanged(active); + emitPropertiesChanged({{QStringLiteral("SpotlightActive"), active}}); + }); + + const auto updateConnectedDevices = [this]() { + const auto devices = connectedDevices(); + emit connectedDevicesChanged(devices); + emitPropertiesChanged({{QStringLiteral("ConnectedDevices"), devices}}); + }; + connect(m_spotlight, &Spotlight::deviceConnected, this, updateConnectedDevices); + connect(m_spotlight, &Spotlight::deviceDisconnected, this, updateConnectedDevices); + + const auto updatePresets = [this]() { + if (!m_currentPreset.isEmpty() && !m_settings->presetModel()->hasPreset(m_currentPreset)) { + clearCurrentPreset(); + } + const auto presetNames = presets(); + emit presetsChanged(presetNames); + emitPropertiesChanged({{QStringLiteral("Presets"), presetNames}}); + }; + connect(m_settings->presetModel(), &QAbstractItemModel::rowsInserted, this, updatePresets); + connect(m_settings->presetModel(), &QAbstractItemModel::rowsRemoved, this, updatePresets); + connect(m_settings->presetModel(), &QAbstractItemModel::modelReset, this, updatePresets); + + const auto settingsChanged = [this]() { clearCurrentPreset(); }; + connect(m_settings, &Settings::showSpotShadeChanged, this, settingsChanged); + connect(m_settings, &Settings::spotSizeChanged, this, settingsChanged); + connect(m_settings, &Settings::showCenterDotChanged, this, settingsChanged); + connect(m_settings, &Settings::dotSizeChanged, this, settingsChanged); + connect(m_settings, &Settings::dotColorChanged, this, settingsChanged); + connect(m_settings, &Settings::dotOpacityChanged, this, settingsChanged); + connect(m_settings, &Settings::shadeColorChanged, this, settingsChanged); + connect(m_settings, &Settings::shadeOpacityChanged, this, settingsChanged); + connect(m_settings, &Settings::cursorChanged, this, settingsChanged); + connect(m_settings, &Settings::spotShapeChanged, this, settingsChanged); + connect(m_settings, &Settings::spotRotationChanged, this, settingsChanged); + connect(m_settings, &Settings::showBorderChanged, this, settingsChanged); + connect(m_settings, &Settings::borderColorChanged, this, settingsChanged); + connect(m_settings, &Settings::borderSizeChanged, this, settingsChanged); + connect(m_settings, &Settings::borderOpacityChanged, this, settingsChanged); + connect(m_settings, &Settings::zoomEnabledChanged, this, settingsChanged); + connect(m_settings, &Settings::zoomFactorChanged, this, settingsChanged); + connect(m_settings, &Settings::multiScreenOverlayEnabledChanged, this, settingsChanged); + + for (const auto& shape : Settings::spotShapes()) { + if (auto* shapeSettings = m_settings->shapeSettings(shape.name())) { + connect(shapeSettings, &QQmlPropertyMap::valueChanged, this, settingsChanged); + } + } + + connect(m_settings, &Settings::presetLoaded, this, [this](const QString& preset) { + if (m_currentPreset == preset) { return; } + m_currentPreset = preset; + emit currentPresetChanged(m_currentPreset); + emitPropertiesChanged({{QStringLiteral("CurrentPreset"), m_currentPreset}}); + }); +} + +bool ProjecteurControl::registerService() +{ + auto connection = QDBusConnection::sessionBus(); + m_objectRegistered = connection.registerObject( + QString::fromLatin1(ObjectPath), this, + QDBusConnection::ExportAllProperties | QDBusConnection::ExportAllSignals | + QDBusConnection::ExportAllSlots); + if (!m_objectRegistered) { return false; } + + m_serviceRegistered = connection.registerService(QString::fromLatin1(ServiceName)); + if (!m_serviceRegistered) { + connection.unregisterObject(QString::fromLatin1(ObjectPath)); + m_objectRegistered = false; + } + return m_serviceRegistered; +} + +void ProjecteurControl::unregisterService() +{ + auto connection = QDBusConnection::sessionBus(); + if (m_serviceRegistered) { + connection.unregisterService(QString::fromLatin1(ServiceName)); + m_serviceRegistered = false; + } + if (m_objectRegistered) { + connection.unregisterObject(QString::fromLatin1(ObjectPath)); + m_objectRegistered = false; + } +} + +bool ProjecteurControl::overlayEnabled() const +{ + return !m_settings->overlayDisabled(); +} + +bool ProjecteurControl::spotlightActive() const +{ + return m_spotlight->spotActive(); +} + +QStringList ProjecteurControl::connectedDevices() const +{ + QStringList result; + for (const auto& device : m_spotlight->connectedDevices()) { + result.push_back(device.name); + } + return result; +} + +QStringList ProjecteurControl::presets() const +{ + QStringList result; + for (const auto& preset : m_settings->presets()) { + result.push_back(preset); + } + return result; +} + +void ProjecteurControl::SetOverlayEnabled(bool enabled) +{ + m_settings->setOverlayDisabled(!enabled); +} + +void ProjecteurControl::SetSpotlightActive(bool active) +{ + m_spotlight->setSpotActive(active); +} + +bool ProjecteurControl::LoadPreset(const QString& preset) +{ + if (!m_settings->presetModel()->hasPreset(preset)) { return false; } + m_settings->loadPreset(preset); + return true; +} + +void ProjecteurControl::ShowPreferences() +{ + m_application->showPreferences(true); +} + +void ProjecteurControl::ShowAbout() +{ + m_application->showAbout(); +} + +void ProjecteurControl::Quit() +{ + QCoreApplication::quit(); +} + +void ProjecteurControl::clearCurrentPreset() +{ + if (m_currentPreset.isEmpty()) { return; } + m_currentPreset.clear(); + emit currentPresetChanged(m_currentPreset); + emitPropertiesChanged({{QStringLiteral("CurrentPreset"), m_currentPreset}}); +} + +void ProjecteurControl::emitPropertiesChanged(const QVariantMap& changedProperties) +{ + if (!m_serviceRegistered) { return; } + auto message = QDBusMessage::createSignal( + QString::fromLatin1(ObjectPath), QStringLiteral("org.freedesktop.DBus.Properties"), + QStringLiteral("PropertiesChanged")); + message << QString::fromLatin1(InterfaceName) << changedProperties << QStringList{}; + QDBusConnection::sessionBus().send(message); +} diff --git a/src/projecteurcontrol.h b/src/projecteurcontrol.h new file mode 100644 index 00000000..8ca8cfc2 --- /dev/null +++ b/src/projecteurcontrol.h @@ -0,0 +1,68 @@ +// This file is part of Projecteur - https://github.com/jahnf/projecteur +// - See LICENSE.md and README.md +#pragma once + +#include +#include +#include + +class ProjecteurApplication; +class Settings; +class Spotlight; + +class ProjecteurControl : public QObject +{ + Q_OBJECT + Q_CLASSINFO("D-Bus Interface", "org.projecteur.Projecteur") + Q_PROPERTY(bool TrayVisible READ trayVisible CONSTANT) + Q_PROPERTY(bool OverlayEnabled READ overlayEnabled NOTIFY overlayEnabledChanged) + Q_PROPERTY(bool SpotlightActive READ spotlightActive NOTIFY spotlightActiveChanged) + Q_PROPERTY(QStringList ConnectedDevices READ connectedDevices NOTIFY connectedDevicesChanged) + Q_PROPERTY(QStringList Presets READ presets NOTIFY presetsChanged) + Q_PROPERTY(QString CurrentPreset READ currentPreset NOTIFY currentPresetChanged) + +public: + static constexpr auto ServiceName = "org.projecteur.Projecteur"; + static constexpr auto ObjectPath = "/org/projecteur/Projecteur"; + static constexpr auto InterfaceName = "org.projecteur.Projecteur"; + + ProjecteurControl(ProjecteurApplication* application, Settings* settings, Spotlight* spotlight, + bool trayVisible); + + bool registerService(); + void unregisterService(); + + bool trayVisible() const { return m_trayVisible; } + bool overlayEnabled() const; + bool spotlightActive() const; + QStringList connectedDevices() const; + QStringList presets() const; + QString currentPreset() const { return m_currentPreset; } + +public slots: + void SetOverlayEnabled(bool enabled); + void SetSpotlightActive(bool active); + bool LoadPreset(const QString& preset); + void ShowPreferences(); + void ShowAbout(); + void Quit(); + +signals: + void overlayEnabledChanged(bool enabled); + void spotlightActiveChanged(bool active); + void connectedDevicesChanged(const QStringList& devices); + void presetsChanged(const QStringList& presets); + void currentPresetChanged(const QString& preset); + +private: + void clearCurrentPreset(); + void emitPropertiesChanged(const QVariantMap& changedProperties); + + ProjecteurApplication* const m_application; + Settings* const m_settings; + Spotlight* const m_spotlight; + const bool m_trayVisible; + QString m_currentPreset; + bool m_objectRegistered = false; + bool m_serviceRegistered = false; +}; From de1948a2b2dc8b228a6dc06b678bd389ba934f14 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 12:03:50 -0500 Subject: [PATCH 19/67] Adds a quit action --- plasma/qml/main.qml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/plasma/qml/main.qml b/plasma/qml/main.qml index 67aee862..2dd12462 100644 --- a/plasma/qml/main.qml +++ b/plasma/qml/main.qml @@ -28,6 +28,15 @@ PlasmoidItem { } Plasmoid.onActivated: root.expanded = !root.expanded + Plasmoid.contextualActions: [ + PlasmaCore.Action { + text: i18n("Quit Projecteur") + icon.name: "application-exit-symbolic" + enabled: backend && backend.serviceAvailable + onTriggered: backend.quitProjecteur() + } + ] + fullRepresentation: FullRepresentation { backend: root.backend plasmoidItem: root From 50be8fda1bad9710ddbe69683b780e4c8af5ca42 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 12:07:41 -0500 Subject: [PATCH 20/67] adds the quit action --- plasma/qml/FullRepresentation.qml | 30 ------------------------------ plasma/qml/main.qml | 6 ++++++ 2 files changed, 6 insertions(+), 30 deletions(-) diff --git a/plasma/qml/FullRepresentation.qml b/plasma/qml/FullRepresentation.qml index 9f8688b0..68b3b979 100644 --- a/plasma/qml/FullRepresentation.qml +++ b/plasma/qml/FullRepresentation.qml @@ -150,36 +150,6 @@ PlasmaExtras.Representation { Layout.fillWidth: true } - PlasmaComponents3.ToolButton { - text: i18n("About Projecteur") - icon.name: "help-about-symbolic" - display: PlasmaComponents3.AbstractButton.IconOnly - onClicked: { - root.plasmoidItem.expanded = false; - root.backend.showAbout(); - } - - PlasmaComponents3.ToolTip { - text: parent.text - } - - } - - PlasmaComponents3.ToolButton { - text: i18n("Quit Projecteur") - icon.name: "application-exit-symbolic" - display: PlasmaComponents3.AbstractButton.IconOnly - onClicked: { - root.plasmoidItem.expanded = false; - root.backend.quitProjecteur(); - } - - PlasmaComponents3.ToolTip { - text: parent.text - } - - } - } } diff --git a/plasma/qml/main.qml b/plasma/qml/main.qml index 2dd12462..cddad60a 100644 --- a/plasma/qml/main.qml +++ b/plasma/qml/main.qml @@ -29,6 +29,12 @@ PlasmoidItem { Plasmoid.onActivated: root.expanded = !root.expanded Plasmoid.contextualActions: [ + PlasmaCore.Action { + text: i18n("About Projecteur") + icon.name: "help-about-symbolic" + enabled: backend && backend.serviceAvailable + onTriggered: backend.showAbout() + }, PlasmaCore.Action { text: i18n("Quit Projecteur") icon.name: "application-exit-symbolic" From 5054b9c30d0d93d449c35c8c8c306bb866c67981 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 12:17:20 -0500 Subject: [PATCH 21/67] Fixed border disapearing when changing shape --- qml/main.qml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/qml/main.qml b/qml/main.qml index a2faaefa..0203251b 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -126,11 +126,9 @@ Window { visible: false; enabled: false layer.enabled: true sourceComponent: spotShapeLoader.sourceComponent - onStatusChanged: { - if (status == Loader.Ready) { - borderShapeLoader.item.visible = true - borderShapeLoader.item.color = Qt.binding(function(){ return Settings.borderColor; }) - } + onLoaded: { + item.visible = true + item.color = Qt.binding(function(){ return Settings.borderColor; }) } } From 9a8008202bd4d5ceb5816b7c017e25c394f2c618 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 12:21:46 -0500 Subject: [PATCH 22/67] disable cursor shaking when in spotlight --- src/linuxdesktop.cc | 60 ++++++++++++++++++++++++++++++++++++++++++++ src/linuxdesktop.h | 3 +++ src/projecteurapp.cc | 5 ++++ 3 files changed, 68 insertions(+) diff --git a/src/linuxdesktop.cc b/src/linuxdesktop.cc index ceb2cd69..387cde3f 100644 --- a/src/linuxdesktop.cc +++ b/src/linuxdesktop.cc @@ -24,6 +24,10 @@ namespace { constexpr auto kwinScreenshotService = "org.kde.KWin.ScreenShot2"; constexpr auto kwinScreenshotPath = "/org/kde/KWin/ScreenShot2"; constexpr auto kwinScreenshotInterface = "org.kde.KWin.ScreenShot2"; + constexpr auto kwinService = "org.kde.KWin"; + constexpr auto kwinEffectsPath = "/Effects"; + constexpr auto kwinEffectsInterface = "org.kde.kwin.Effects"; + constexpr auto shakeCursorEffect = "shakecursor"; // ----------------------------------------------------------------------------------------------- QPixmap grabScreenKWin(QScreen* screen) @@ -120,6 +124,11 @@ LinuxDesktop::LinuxDesktop(QObject* parent) Qt::CaseInsensitive); } +LinuxDesktop::~LinuxDesktop() +{ + setShakeCursorEffectSuppressed(false); +} + QPixmap LinuxDesktop::grabScreen(QScreen* screen) const { if (!screen) { @@ -135,3 +144,54 @@ QPixmap LinuxDesktop::grabScreen(QScreen* screen) const } return grabScreenKWin(screen); } + +void LinuxDesktop::setShakeCursorEffectSuppressed(bool suppressed) +{ + if (!isWayland() || type() != LinuxDesktop::Type::KDE + || suppressed == m_shakeCursorEffectSuppressed) { + return; + } + + QDBusInterface interface(kwinService, kwinEffectsPath, kwinEffectsInterface); + if (!interface.isValid()) { + logWarning(desktop) << tr("Could not access KWin's desktop effects interface."); + return; + } + + if (suppressed) + { + const QDBusReply loadedReply = + interface.call(QStringLiteral("isEffectLoaded"), QString::fromLatin1(shakeCursorEffect)); + if (!loadedReply.isValid()) { + logWarning(desktop) << tr("Could not query KWin's Shake Cursor effect: %1") + .arg(loadedReply.error().message()); + return; + } + if (!loadedReply.value()) { + return; + } + + const QDBusReply unloadReply = + interface.call(QStringLiteral("unloadEffect"), QString::fromLatin1(shakeCursorEffect)); + if (!unloadReply.isValid()) { + logWarning(desktop) << tr("Could not suppress KWin's Shake Cursor effect: %1") + .arg(unloadReply.error().message()); + return; + } + + m_shakeCursorEffectSuppressed = true; + return; + } + + const QDBusReply loadReply = + interface.call(QStringLiteral("loadEffect"), QString::fromLatin1(shakeCursorEffect)); + if (!loadReply.isValid() || !loadReply.value()) { + const auto error = loadReply.isValid() + ? tr("KWin refused to load the effect.") + : loadReply.error().message(); + logWarning(desktop) << tr("Could not restore KWin's Shake Cursor effect: %1").arg(error); + return; + } + + m_shakeCursorEffectSuppressed = false; +} diff --git a/src/linuxdesktop.h b/src/linuxdesktop.h index a8c53366..ba79897a 100644 --- a/src/linuxdesktop.h +++ b/src/linuxdesktop.h @@ -15,13 +15,16 @@ class LinuxDesktop : public QObject enum class Type : uint8_t { KDE, Other }; explicit LinuxDesktop(QObject* parent = nullptr); + ~LinuxDesktop() override; bool isWayland() const { return m_wayland; }; Type type() const { return m_type; }; QPixmap grabScreen(QScreen* screen) const; + void setShakeCursorEffectSuppressed(bool suppressed); private: bool m_wayland = false; Type m_type = Type::Other; + bool m_shakeCursorEffectSuppressed = false; }; diff --git a/src/projecteurapp.cc b/src/projecteurapp.cc index 96edb287..7a220311 100644 --- a/src/projecteurapp.cc +++ b/src/projecteurapp.cc @@ -136,6 +136,7 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio setupControlService(options); connect(this, &ProjecteurApplication::aboutToQuit, this, [this](){ + m_linuxDesktop->setShakeCursorEffectSuppressed(false); for (const auto window : m_overlayWindows) { delete window; } m_overlayWindows.clear(); m_screenWindowMap.clear(); @@ -207,6 +208,8 @@ void ProjecteurApplication::setupSpotlight() { if (active && !m_settings->overlayDisabled()) { + m_linuxDesktop->setShakeCursorEffectSuppressed(true); + if (!m_settings->multiScreenOverlayEnabled()) { setScreenForCursorPos(); } for (const auto window : m_overlayWindows) @@ -230,6 +233,8 @@ void ProjecteurApplication::setupSpotlight() } else { + m_linuxDesktop->setShakeCursorEffectSuppressed(false); + m_overlayVisible = false; emit overlayVisibleChanged(false); for (const auto window : m_overlayWindows) From 36f9b07b614ad705418b4ec4874fb704f9448d77 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 12:29:28 -0500 Subject: [PATCH 23/67] Document the fork properly --- CMakeLists.txt | 2 +- README.md | 12 ++++++++---- packaging/arch/PKGBUILD | 2 +- plasma/metadata.json | 2 +- src/aboutdlg.cc | 19 +++++++++++++------ 5 files changed, 24 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7bb8dedd..93852566 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -199,7 +199,7 @@ install(FILES icons/projecteur-tray.svg DESTINATION share/icons/hicolor/256x256/ # Set variables for file configurations get_target_property(VERSION_STRING projecteur VERSION_STRING) get_target_property(VERSION_DATE_MONTH_YEAR projecteur VERSION_DATE_MONTH_YEAR) -set(HOMEPAGE "https://github.com/jahnf/Projecteur") +set(HOMEPAGE "https://github.com/gbin/Projecteur-kde") configure_file("${TMPLDIR}/projecteur.desktop.in" "projecteur.desktop" @ONLY) install(FILES "${OUTDIR}/projecteur.desktop" DESTINATION share/applications/) diff --git a/README.md b/README.md index aafc9304..1f6ea2da 100644 --- a/README.md +++ b/README.md @@ -15,8 +15,12 @@ platform; Qt 5 and X11 are outside the scope of this fork. In addition to the hardware supported by the upstream project, this fork adds support for the **Logitech Spotlight 2 over Bluetooth** (`046d:b506`). -[gh-badge]: https://github.com/gbin/Projecteur/actions/workflows/ci-build.yml/badge.svg?branch=develop -[gh-link]: https://github.com/gbin/Projecteur/actions/workflows/ci-build.yml?query=branch%3Adevelop +This is an independent, unofficial fork. Please report problems specific to +this version in the [fork's issue tracker](https://github.com/gbin/Projecteur-kde/issues). +Only report a problem upstream when it also reproduces in the original project. + +[gh-badge]: https://github.com/gbin/Projecteur-kde/actions/workflows/ci-build.yml/badge.svg?branch=develop +[gh-link]: https://github.com/gbin/Projecteur-kde/actions/workflows/ci-build.yml?query=branch%3Adevelop ## Motivation @@ -168,8 +172,8 @@ and Hold Move actions for the same button. ### Build Example ```sh -git clone https://github.com/gbin/Projecteur -cd Projecteur +git clone https://github.com/gbin/Projecteur-kde +cd Projecteur-kde cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr cmake --build build sudo cmake --install build diff --git a/packaging/arch/PKGBUILD b/packaging/arch/PKGBUILD index a0ba8eed..75313d7a 100644 --- a/packaging/arch/PKGBUILD +++ b/packaging/arch/PKGBUILD @@ -8,7 +8,7 @@ pkgver=0 pkgrel=1 pkgdesc='Virtual laser pointer for inertial pointer devices on KDE Plasma Wayland' arch=('x86_64') -url='https://github.com/jahnf/Projecteur' +url='https://github.com/gbin/Projecteur-kde' license=('MIT') depends=( 'gcc-libs' diff --git a/plasma/metadata.json b/plasma/metadata.json index e3f65ada..bbcda992 100644 --- a/plasma/metadata.json +++ b/plasma/metadata.json @@ -12,7 +12,7 @@ "License": "MIT", "Name": "Projecteur", "Version": "1.0", - "Website": "https://github.com/jahnf/Projecteur" + "Website": "https://github.com/gbin/Projecteur-kde" }, "KPackageStructure": "Plasma/Applet", "X-Plasma-API-Minimum-Version": "6.0", diff --git a/src/aboutdlg.cc b/src/aboutdlg.cc index 167e084f..c1ede8ed 100644 --- a/src/aboutdlg.cc +++ b/src/aboutdlg.cc @@ -145,10 +145,17 @@ QWidget* AboutDialog::createVersionInfoWidget() } vbox->addSpacing(4); - const auto weblinkLabel = new QLabel(QString("" - "https://github.com/jahnf/Projecteur"), this); - weblinkLabel->setOpenExternalLinks(true); - vbox->addWidget(weblinkLabel); + const auto projectLinksLabel = new QLabel( + tr("Independent, unofficial KDE/Wayland fork maintained by " + "Guillaume Binet.
" + "Fork source and support: " + "gbin/Projecteur-kde
" + "Based on Projecteur " + "by Jahn Fuchs."), this); + projectLinksLabel->setWordWrap(true); + projectLinksLabel->setTextFormat(Qt::TextFormat::RichText); + projectLinksLabel->setOpenExternalLinks(true); + vbox->addWidget(projectLinksLabel); vbox->addSpacing(8); auto qtVerText = tr("Qt Version: %1", "%1=qt version number").arg(QT_VERSION_STR); @@ -158,8 +165,9 @@ QWidget* AboutDialog::createVersionInfoWidget() vbox->addWidget(new QLabel(qtVerText, this)); vbox->addSpacing(15); vbox->addWidget(new QLabel("Copyright 2018-2021 Jahn Fuchs", this)); + vbox->addWidget(new QLabel("Fork modifications Copyright 2026 Guillaume Binet", this)); auto licenseText = new QLabel(tr("This project is distributed under the
" - "" + "" "MIT License"), this); licenseText->setWordWrap(true); licenseText->setTextFormat(Qt::TextFormat::RichText); @@ -262,4 +270,3 @@ QWidget* AboutDialog::createThirdPartyLicensesWidget() textBrowser->setHtml(html); return tpLicenceWidget; } - From bd6e2ce57e02d5e9d4d0a37a05e2345a6ec720d5 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 12:34:21 -0500 Subject: [PATCH 24/67] New screenshots --- README.md | 8 ++++---- doc/screenshot-settings.png | Bin 62266 -> 133056 bytes doc/screenshot-traymenu.png | Bin 13089 -> 434867 bytes 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 1f6ea2da..4c8433d1 100644 --- a/README.md +++ b/README.md @@ -83,10 +83,10 @@ So here it is: a Linux application for the Logitech Spotlight. ### Screenshots -[](./doc/screenshot-settings.png) -[](./doc/screenshot-spot.png) -[](./doc/screenshot-button-mapping.png) -[](./doc/screenshot-traymenu.png) +[Projecteur preferences](./doc/screenshot-settings.png) +[Projecteur spotlight overlay](./doc/screenshot-spot.png) +[Projecteur button mapping](./doc/screenshot-button-mapping.png) +[Projecteur Plasma tray popup](./doc/screenshot-traymenu.png) ### Planned features diff --git a/doc/screenshot-settings.png b/doc/screenshot-settings.png index 2f4c2f30ca14f2ebace7ee6027d1bc9efe1536b9..d48ea9811911d01338a470f7900b09fa4f40491e 100644 GIT binary patch literal 133056 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%0Dby zWY?qj|HgqLL;2#@P1SrYnZcLr(2E3j@BG@@w=(;X;hNXajzd7R$$39s;|a}VfZ5PW zMp3o-hGiBi%WiA)nvAA!0tw5YE}7Ix4tl=C!f+@>IsV{ek~W1M=(vA#1rr+!Cvm{i zpnbq3|C0RJP)~1G`qGVHywp6!G@?ED$(?LvQ)v9^*lmVv4)bLSzu@1s{b)l@&cZTy zR$Sv?U|^tDa)t{vn$)Ix2_CCHUQ($^Kv9uW9+x|5Q;tdRo_-ng-Tkz>kAI{uar)UG z2WR{d$La6`X@-#I^8qpsk+Rk=%cF=p*(@zoJ zZ4mIh%^TJiVmVp!{?~Z^h4l^0fd>XFk#<%7^jfI%;*o@QmGp~Mr)ZEBMvB19>TFxM4 z2*aTtiaMb?yIbPo%8WKsHusXw={+RTq?OdAr#}jur5qH#(GKsWc?eN$q{Q?hS4sZA z;XRe%EE8$r9chuTJ+z#U;J9BGlG^%XN$D{h*TA`@P}k^b&?=V}_u1?ZoL=x5_XyQX zuEPKRViZ?!^L((F__W*?x+|l?aw)|RLgB{vW4F3ifA0e**RR;+$TB#bPwq||Fl8;(~ zm`57kfxiX!ZN|k9MrELJ-QNZe5nAbtt-z{0@%7*;i@gJ=bT2 zAcs67BZE#7%GVxT!37I6U#gmz+CE*~v05Ri)Z1zFl5P4oKC02E?ZWM=Or`RB{$6=S z#aiie$EP*Hf8||VLWx7!Ob0y9?-Q@6C);h0`ekKNk_=|a94^#kLb$fehA1Dts%#Yr zvgy}Z%9MjnVq#*R=bT(?#yDQy&kg^i*~0T8G5?guIq^tWTJ14@%s_keYn(Y^%pHKeikRHC{eS-?0bzeWkbsc2?1l*NvS#l46e4o=SA z!w$Og@^XZpTYY~B7Qdo}uSs|u$^4b}S6xsYK@5f%=q%WWbb_8Jhxp8Pnz4=b$kMSV zMCnpda}Y9^aNqHOd|`Zi0-}`)#(xhm;(-&|y+7rr+BtOq0c#p?<2EkN-7gM%_)pGJ zbi{;7b`UE*g59Een?0dw|EBfkv8S0)z0s{Ka{d)$Wb$R$5?vDyYavT8&&kC z5FDd6km`T}0I?20h&^!12_9T<#CS>qt|E8*w=3XAxxPnr)GMa4d&foBbp;D%FDJU0gQ+u@~-0C3U`5ct> zu5Jg@#Oy{d?kA7LLdFub-^UHL=Vv^|2>6R0*&8I0QTifp|^Jjz~Qylvpv zL8Y1wc$2Yw8l<0c zr%f(0F^p9E{Iu_V^K)}=3Tz%T8+A#PTuz+cbpW*mT*|#A=Ak@=JFCpb{Y1*X3*Q%{ z{;>fit_?GB&Yz=k*Ni4eIU>(ISDNm0ricEZ%b#tJ#m+61s8h!{?bN1U!fS)u)9v)HKA-*=rO^$`Dp+Fo9<5Xjm{Wu{y{dVP1R!C#TMKihJP#5hVTPav7ccj zgupn*g0(=F^2414iC9P3GDIA_ER^(QzIPlV-Bnpleps@ z_~QwpSH|F&0DeEq~K~7%$z{9X}$1HF$PzLl{KAYlCa$R1AVbr!I9U zbo@ZCmz51185x1jWl*UQ-*!*k=W|++3NxZbz?9gA*qrj~gQVPtoYCd>c+yO?xIF-s#PGpxZH5A;D-j;Q&Ir^!LxV3kpl0(XjZ}CD+khGhhiW(3#xM zu*~*iDMH*Yvt`pJV8x`>U}*)&DFP(`n`rjw$&TZ>9W<{QZO1-Vy8>qcMPObO6Ivpa zQS|Hg^^2Xi`GAJt1?JAdSRE$iAouI5M*#TiPN?+&cN0}aER@Z?g(A$52Ra4JSRk-K zP5Ctl3E3{M2**p`FFU>^A9Qh9**P_aGt`>veK=8yx-rKNQb!f7mSO%>tBkC)-v*z3 z1CVDRWy23`!rr^Di!fJor6K+xPp2h0i@lH!Cf(30WgHcge9oj=^7@cDkaD3rW z^2ALWV5F>bImBjw+y?}jj_%ZZiw<_6QF_v(iA&hZii0ti3*hIb02 zF1=aEw*1-1 zZAqKX$D77`;oC~C{3xiX9~RqH_)d~J+^^3qvzd-JCOd!$_taCVo_wm6=!25!l~! za65N3$lfc0Q|>_w^TEdC*S1G5R|@^$umA|hrD5CkQ`g4d(h*US|1Yk{*xFY%XT)$i z1Ktsz^tBrmG+kanRsqT|fcM@Z;&Y>9bSc|j`T{ss<8Z|+?TjD=xaLMC~QT{=YvN8I5W*&AMWo%Iafr^bDy zO#Oy)*fP|@)_;z+%LX0p+ohJ1O@aJZZ~y$lYRT*7&V&t0v)Yb#a1S9Hx~x2atgUbv zadn|`>4R0U!G8Z?-+uSPmd(zTX1pwzM26LY2_{N5916yktZj`i@>6wpF@h zl=0DIG+5`ljJ=;Wtu*)R_u@98x(ni_bM2mi8uB2z*j}2*VX(u9zLJvz{`0Q$1;==$ zd=>N`>KHAxpCmjfU|@gALer@$MNl`!N(~1DHrqAUy5Zsb5ETP23L;Po%}O0d8snEQ z0rCJ)=)R5#3BT{si9e}eU4eG=2`YJn3T*vs*EOFoYu~@!DBm5mp@pcHwfzTpM0kW& z`(Z7n#72jgL!j9Jo#NR)fj76Pa>tC?>;m~F(~~C}>gtMccmavY$H&3Dw$?qnChM8A z;Uf1|^Cig8Xz2IaOV8e@T}IK-0VctxthCHCIBb~> zhRh9A74Gb!i0E+o2zk;)NBy{JPi7%iXl{Sc&Fucbj2nB%@$ZWkW6Gz`{b1n&HRn(D z`SAy6uYoK6i?^2{hwiLbXG-T5?n44otM0Ypx5gm*8AhBuHTnI$E_tJ41RV{H6poCI zGb`u&Is}E^2xpL z{IzIFzl6L4BcPiDnd6#W!%`}}&sYV<=KjnErRMj#Ldg%(d*#V8{$vh~ECxw=3@JEW zv5aqb1Z0!=grLI*r`EZpHPKY>!-BFhV>lW^muPfk5PL2G0iIBUhspMX^SAi)LDTdg z-v^(6@#7dI)^faVrZyPYNAk7rd0=nx@<$P0VP0Pw@;Vohy!yE3>&CF>I-XSB5U}@O zsjC+PHW26lR4ym8U%?O+28X}@*g@8ZIs|wG7jFH_&j_LBxioo7m(Zf8k&eIAoUN<< zlSw@Soki`BIwPx42+vsFix;6UrOrZkgny&FE!*Nfha7jP*-~N^^o&wPg9b0(>+3&L zQxL4W@h_a?+3=kyh6tbP+PMh}4jixc6o#@}olIJRuX9KlH_#MbUW+x==m`A2vv4Ou z(n~U;XuoNR98KKIf%#w0k8oZn-ht0c{(J4-p$IDwW_U}U$A5f5KF3l2mnOFVTaL*8 zPcNSV@7bXY#D&?lIZ5rWJkhZ+_?2ASGyqrxxDj+d!3u~#P5k3_dK+^q{n50lNZhDESL=g35oQdhkQv4k#bzcR?@& zoQ(*n4kG@N0%zW^JreUd{n;EZV_;@Y{iUi0Mxuh8=Lnw_sc;5-o!Y>C3%z-|9~K=A zH&mIt6#6P5E)Gu1e5)H65@$CS%s1Bl`B-;CD52aNo|_5ARbplaos7nnAbBspHkH@x6N!zT!RL)LAMb60B`zZmRaZDOp*C+*QQgH#Q zCJpHu(NvG4DJ3j;UG2dMrtK%V>z0mFH5san=9Q)cZ%W)V>!I|*aMFVc!FC}subZ7R z*xMfk^Id4r^n{_{Zpj18htKgB-<#ok6N)~X9i76v-KEizU@8kaQQp^EkCcJ`Vg#N& z-0Jh#@6x@Lee6BjxX*MY_!7S`+)Og%>rCWC*3i%}>WL>skeYp-9OhjGKb~_nNKy7U znlz&Yo2d_bXJ+hu00s*|o6d3H2&xPCKVfz7EeHpO?D~Iku&?qnIf3VM7bX2x8q%~s zeg|MEPK`R>AR*|Hf(s9F{R^p^xEHisxMA=>6XBkXfYaInC5R|I&;R|c`}eNg9t&0( zz*9PhDNg-V=HGV{Po|dzK4p8x{a3Is+l=G@Ob&qohR@@39C9mtE*Ifz^L_Xn0NtNs zV$?E@N`C!9xad2XE2iUudp%gZZe?VtX=o5u{$oXa@C`=h^$BmKtk<7GAn{>$-baADsC(*C-lve`=$^g9w9 zj6D8BMM!AojY04Sf;n?DJ30?=iHI5@RILVSV@TmL+p!iM@_?=`0*NF8gQRb-pn%xD ze+SsA&++g5!x8mFxi?c#>mE4N58;DF{_7?&+t8bS<7L}BD#yfd5LC9T41F%SvmBTU zjdM@%OT?zy#AxG$G|x*AAwD0P_K4{#h*pCoV^*nz3c~k=w&(Ytebxred5|Lz zWVoHqq2G?&(BGI1s3KvEv>nI9>b2X1}X{7c!I-47jTVK3zLF1;}?E_-U7 zz*O|6Em4a*>s*1TJ%YMpvBTRl1T^Em^nG0O(chc7=30(t2b4N)qpThL19AyG%~8hP zHAD9={ohUJ(E`jxA9^j&P3VvVFhE=g86K1QmnpmHK%#(JccgXpi^$YNu-<0?Ir|om zqhM>dmVB1Y(S^v6h=@qRb=@miOg>!j$#e{~J#swx6ZM!{7604@vA8|+voVxEQ%D$t zm{ogvN0bSSHBhFCm~yiJe-KAho)s-4Uh9a2ulp!N>Dd} z_<-W6`10k;rJlIPETzoRYU3Ua{P3IkmqM2^7k@2>HVpE#t6MU}eQ`(HTOZMQ&& z3G8Wi1rQYe93#v#S6+re*VsvPYzhwmuRve{!lH|?4glJlacq~ChUQ)WZ&nDz8E;7a z^K1?WQ+xKMi1^+7Wj0Lg$seq9PyDWf!_1?-m=1=(i!(iM;fP;<8}Z*>F6oq>@N4jYz;cL=7pZ?a~(c=I<4QG(1`lD2u>y?7)JnO3w(Th zW)`yg;c%X=CI$t5w#t4zoKyk4YjrSUtu=FhfzqHbW}FxF=Dnq-w@0!1pqW_)8F3O}k>t6pgPbs@8k-D><2UjV;FHx#5#9kKh>m@^PW z`0Do%%K67F$m(iUyE5R5g1PnqBn?k~x=P^jz?qlP;g38_v&hn}jxETE&lw#be{|X4 z=?4u5q$f{8Q3lrjUNJ-aMKZ2*vq;&kKwm_y(CP+>i@c_#Bh=g&gnXfJa|_wXS3oLA zQ%max!lMiX)|-HpthgvYF!o&3c=LwAU`(0MWROWE^0T`D5;!*cs>>oIpCh9lWV%oD zfsJD2JvT7rA>xkV0bG{_clXQ2KEsYT)i#`PPa(be^{#-9A{U0I81=+{0`FuVMucSZ zeSSJaaO7kWA0T+c$hBLU_7iXw8TAL=9c@fzmTl7Ks1|}Z8dixv3%=8<0Rlf2v!YoR zo!zv`_!{#+WoEvt%~MM-txKiVC}Z4aTh?nO_g|?HY$~w2(tJX+ zzZNMX*2=InZtXI(1*0(Nq;t6r6$b~KgxkDr&9Zj;&d=5c&0I!v5eg&H#rbd&Hg)8I zZoZ-4Qn7jO6A!;Ay56(?9wzIrh;6)K1eQ9dxh4r{gshItet^(vH!MU<1AS!&Uz;bY zY~#9hYyoqs!?U+MKMu$W(0WpyrA9-J)?%Ei#B9HD&I_Sb!8{#=`~(i+t~l3D5J30O zy>(8@9jT!Y&*?UIi&nivuWjzO1Z~Fqu~oNQkh?QFcdS|g;d}qQrOT-UIue~JxA#GS zZ|vDFus97Bxr=BDfVX`Plt7qmlZu!YgU|a7M5^9mM=8idGTB~i>_A8tZ1(UR!J)rH z0qBZu=bQH6W1<`^75Rp(*Vlx0aX36}K2gjm)%xfRKuf`bp2q$q2A|@Y% z>~&-1`1eDSbj>^ru0gBLg2<#Ym{(FG4? zg6wtu!E#|<(m<*qW{Ku1F=gBuXEdKGj2JWCX{kchkBi1lGrJ$sXRr|KMQU(#}p#d%*}0NWv?;OwU!g@RbBK!rQtNBfXF(t0Cri zL*Hy(-_Q)}ct1o?osL$zKa2PQ4F;x0#e-D>2|)Gf=k~Jkt$v^$4oK~@0ssiuF}?4K zG4R<0qX^!BSsG9s9ZA>ce&CBklS>!WqkDLy-;;4e1)UIo)tv_~l#5>;om>W!9dkh+nTBXtR>459V z9&WoAe0+)P>=wHErZ)weii|aDL)=c0o=Zg{&3q+spR4!$8vNwlbh)FFCAU~>75pv| zAhEa%eSd_7C1G+1lL{7gLIy@LptpzMltbEqUImE{F3G!+zeRF7TIlA02&g_gSRR>0 z##ot-f>jel5(vi|j0C>|uUl`bz0RbukmUNxUXpu?&NLr57KOL*;Q2xnqbfP>y|k6r zGdE867gK?WG?1kdc369v_W68i1$MivZQT$zvLpK<4^m3#)5twOC{*b@@` z_yuKWsPps<<{?zx{nvgyN3+5q5X?Y)+0#3iTCA{W=7*XsQ%*t<10b-A&{PRk?|I?B zJg}Pzlxu7$sScK7M@|uT@TpHaAL&DKQ_g0(3Azl5;ATeflz#Q})0>5 zLb*RTbLCoIc^x&z^LFPc(49Zk3wb{z#@bbH#l9ZhZM}x<1Ub0(F+g!Yg)S0;yo36c z=KxkFgr8cKl>WEvWhhD1mGrtCKN%NQtk>P8Y8%;p*onUnnyQt#31!cqZ@NH9)<+9`;xm}W_6u-Gzda6AGJ4`8sGi!|+o#TbeGIKW(`>#Nh)zHS zNu;W(T2<|bgm9pPSb4g>?XGm0%m*G2^<1{D<0)`rPUll@o8hWPVd$i8x?jW?aZ;}K zsd1JS1NZ?Kj5=qSSvtp1OQcn9*IsW8+)kr}W!&N5540Pj%JhjRHwGnHCMeAUs@S24Un#mafgA#SctAE2*{ zm|QpYJ7sDL34@R;`s(sPtfRP~^hVvL7fGh2B23K!zt4g5MKl1l5#w-bl9*!PCSi2y zd_(1SLJF5&|I&N9{Nw3E$GwsDqcYj6dL!`u1N8@Z<}2;k`9}bu5o<&_jN!a=7I))^ zEi4M=@?gP{WRAp59|&{8qM}Uh_0OOsAmw)93j>|t28>}rg?>umGbnt4wcn3%b9=H< zE~LS0mr5DDCBZaJPK2C%q* zIJSKlEC%6KL}F|(`*ej@95|4>7Jmj`nV{?F@FO5$*{rqT8tp-tz7RaT?uk>Uag)9k z}tAE51s53@z|xFF#y-R;QnI4w9Urnwl+r*C{C} zm~?WE^v_}DB?brx)hYH632+1N3a>u7&X>m?-%bH9~wKrNHA z$gucT5Ms2Yx6@)c?+d+S(=yHT3|3(TF(5k^2J>`LuZu-TNM|VV=+Dqt0p3yS82EX9Z~`a0|Jaun=d=8RV;HOgD=v@ zArhOs!syxNU~u?Q2WUb4IdZkC79_+W#g~z^59t zBt1R7{wj1kHAN(>@XgiPdXn;bv3jmWxSh~C6LS|hkkJtC6^Gq9@M=E9#zr_HfWd57c9~C_uZ)1M&BZPyS6Z{IVYm)f-XV^?+3L<+~$F-lQ z_N#{YW~CzZ$}s?-?g>)+d>**eg0Wh9RkN9YzZCw3(MEv5=lutQJ@ih02qzr^) zcXk*!xC#`r-u_L#fwVDRM&bdC%P{zNzph%6`&1(IfDlH2+Mkz$Bbga6bire>LINiuG<`EIe@?*^#7wYhBZ|IZRBjd)Y5H<${O{~=cJHzQh&(Xg zGF>WcV1$`8JF5cvfAQsvzP<)UjY0SC0~nR|?%c!-#(nC6_4xP4i~H2dx~yhJnpcy~ z_6k`8;nW%^%*;i~mjgO>yp9Y%K)tFyd}U(P(-jOId;~%f=nqhJtn+Rl!PChvb-9Sy z*4?9NfF@0>#s#FMtQw`huox3J)4}Yv&yF7sGEPV<4zJ=ErwixP`C7HLz24LuyqpZ@ zCf8YqF73k@QTx#01e;DEPc3!Dg10R?;nPMkuHnbCQq{JV0~JapCfjfj>ipXxkcrZZ zQ}7YF5u|vhEPnhpPs=Kvm+zo1MQ9vQ$H*qhjv@SA!0Ve?TWeoVDv?s@_PCOuy`xdK zc3;6u7}K-2vI(tz&^U{R*==%3C`@(}_9hl(ka&SF5l*;KOV(YTorM>%ZzG|= z%9JBsc6Z;H880wcIU9^}8OozY>{8oX2`jwtD^iKOPfRF_8pu18UkIR8igI6_!#8&GY@GDR59hgsr9t6Lg z8NO7?U7yGz1J3iW55sg?{B1vf$)=XD(a=!Nlk)LVURpvK3tY6`jrpKMH*;f1#dAP- zt*NUkpuX+CoVJmLMc(-_xRM}tpAPciK$g~d#5kdnQ4cLGJia#&6#uNDbeB@YuRaSn zNAMo}9R{^~{@1`n<2kK1LlTUh`&+g6a^UO-AB=ZdhAbc`#**uD>Z|Y9{|)e+IL+v0 z4`&NSn6l#Y*>%;!l20o=8sF#Tg+(>8_HZ|qFjge52on}k~t zgD)?gY$A8+#4!3m-QEM|yM2si|aoR_CTK~AVV-qHguwZir@mUr?= z;F+)nI_=aK*mBvxV$w>&J{WfogWP2bY4b_xJ-4oEt6 zKSCNS074A1u8EO&(sV3KHkVJ zy9Pi04~1%!_x$f=PWKi$oDT4ia@9+d;T{LqQp*>K>#j+no#RKad%h_$70Lenwl&<~ zG?XMV<1LM$vQdVml$=pUzLSEJk{F_eSPqH-F~rk>A%~a=-QprGf*;fB{~3Nz+yHUYi%HgxO>5Mm7;-*hxaFc{h)&jTtJWyd)v7Z0w_4a?Hhe? zG~>9&Nk2o>EoktTgfi(mqxmA_#*3Hw*>Z1`+bmM)xQs^75*8WrEr3@61rxtzLydW5 zn%zWs7mQ|0*~!=li8h|k)f>#bN=2f!kU9+nb#@<@Msi=1iK|P_iI`6^c6gXnj(D;V zs`wjt@yN$8SqYpc>5^ftgW(3ezirc<4oz24(jk3`By4O|?8wC7ssX|4cfA+$FzX~H zre)w8 z!~P{&_!#qQb&ueZLZ6~9;a1{8$a`LNhve60kWACd=F6b}U}x7d*%bl%EhIYIO85WB z!oj4RgFEDh;_USZe+MltRBg+^71FGAqm??ZrDu9*USlC(YH2B#rI_w`#uA+QiL)Pd zaB%Q3v>Bi;k+dqY0Xr_m%BpWg1t%bSjUBR6{b9@<#CL&$%gYGF@p!v0xKqg1yJ+}M zI+@L|u0n)P*Te)dTlV7evY%+=IpEX^5FjrR%?rNij9qx zPZP%i>?!p9YF>ML<>q3FRQnmNxhj8maRhz0FXFrE8WNHRl7#Rp<#8YANnc7PT{0Z;_}3HeEdhO=P>dsEFsd9DlTFqEn)v<`#VvlaC&}OullXm$h z!>sMYV~e^tSH{^+O}?U{o{n*Q99KzL zp8_uJDXEHN<#z=?CB@*52+Ad}w|UiiFA11tr;elOe3u&^Qc{cfF#lFAEFO$vL%**WM!atvj25ZU>7+{% zB-JgYXN4h}WndhJS*gxF+DN}`*JG*vnnC0W=C=YpKual5CW#Sxw!%(_8?SnZCvCMX zpe9`%$8dbquZl3gj5~+aobT^F{;660q60bRPRJzePtAWUMVTGvZb6ep;-=!REU4(l zXPs)&Nii(w6^dEHIfF({!D+|!Fk{yj)^O+_)=f{7fKUNP?{}jq_}$&z7nL7WBbDrL z05w$_#=}N4ZaPQOX~@2POAbSH7jozlINf3V_m4qxIWjxM!4+^S$C&Ggbp+b^%0J{2 z?`@8MSni%w-oG#!4mSYfg~7^B2*4x!V8_}QX}yOiWT2Z1?0@SIALbj;7h`yAxxNOG zM?^&Ymyd^qn2U#>r&VPOA53K2ZnMZ1Tb*=DG@oGh!nM?R+l_$TQ~*T!gGf{!#|D2j zi4WSffxsAn{6d4O78kRDdS6urBA5p-=x9H9?_K4) zngeI?G+I?TG%|m=j4zJPRlbyZUmS+<4J7d(q6hRg4lYi8J&U|JzL(qp-&O#fGF$j@ zkPFFbpHn|%(Y}KC)zs87v%VfR`}OW9>tZzAuoih1@MEFT!GHSe>OP_hv~L`|H)(5I z&G8q>_<}Vz`An(dA0vc@Nr}2(V*|98ItmOxM=&xqWezd&1cp6^oI{UR2wz-_1QMuUT|DRc(!-d;jv|8 zcR!TBezqJF7l$1DLz3km#}xeZ9|nX63_>VCk5j~bfHq%HRE8RSO7hRpB;mYgkV>JQ zZ6hQ7UAgSMStvXd1D?Ev1z~ed8sOZv85yZV&QL?uXluxJu|(@UuZl@1^o0z;Qj=XLMGU!Ly7M%@Ii&(Q zx1ISiL1GW*q*@-Gi>+aY(?O~xSYlJsOKxv&zOImZhWKmkk+q*D5 z;E#@SJ~80>bL*8reA^d^uoq;kw3x4R9uE$d*hB&KO;~uqn5yD#a!9>V(f718Y`6); z<>bVioVX?|aCwO7$t6N7tFVNSlI1DB_pc`_Q;|wMBOoB?9U1s@E{*u{#)m?bn0W9j zL;D^!35$_+zx~{+D*$!jFe8yJUlNH$8R6z@YIP0unOz$+Ja~)R%TbXR8qzF^{!P;+ z-iieBq2%8uO+_jr3HT)qK7FK}n=cje+xQle2J}4fy z1fF~nD#eq8KkFk3ndSvopXUSt7j9S&M76&VI`+Wd_VE$C^BF0qhu$7vc;J2tdHpi3 z*n$f!MmpmClEn*t_t4q65RejX3?i4Xa=v^Zs!L7zpBF^+5=6_F`_kHhqm(k+L@#OO zbn)P+fV_X_Nz17HKfm(Es|U&QRI|tDvj->N74OJXJ$}G2_hOHnU??r`dROY<1s|51 z#OIXtWBW9Hisx`m2%g`pSAHnsa0ycjpA*d8LXz~-Zz>H&Vfgp6J^Ku=Pem&JkX+&> zxvyEwLrhY^;p;n}^@U|kvC)Jm;q&)Wkl$(eaat!OEHwVd0` z<5nfhyN_H%(k~uipdf=TpLs-`=_HvNZK63ZfgQfVc{Vz;*NlKjft1q>r-IRT2FrlTotsh zjimMx!YqOkp|^s@J&o*{0VWt68~F|7t~*GQ9ql9flET6){tV%L9*|zgW6rn}N}f_! zh;9+3u@&m`F8slBG+Wz4B!oSbyre9(%{;P_264MT@2-(Te#Xg(ubzt{6M%!F_$*XJ z$Q8MYkA$hH@Vop@40{7+7wNvj z7wP0XX`eMcK=l~D!k@3HTdlD|ewy16DhB(H!0@?UDW()3IR4D(8*oLL_x~WZYGX?w zZCl=NoIgsQH1%rKBk4^l!k5gN24fXc-TZF57CKgd%~ako>HFdHhgh2_@)W_bvELS& zg!71GS^UXgzN}yT_`Ng_r!??hMF&1MM*4sydiukaSj;dVaoJDDq+Z|Lr+n-(d*1~o zMcq%3g^b!g78aH|qxWB1*B7TPQ%EJVlm+vL$@utgWMyShP*4bHx$;7}y+HTAZa1F| zao^m@P|lJM)SP+(wSH+?91pS$}zd|lGk z*6&PAJ~cNSI{SJvD_|?AtE0Sn5S$qM!k!cP+dsGIyD#6^V~~(oO9pMC1cj07W`CuY zl-!2ddh(QF-Qv>Tif}nou&99brJav^uTp4B(dV50y zPtCvmxfaA^{PqkRLAe1{_`;ep)*w=M%F>=<2NOxS2gte4vBL6~2AFEh!GYHrTXOQCY|Qzkj79qbs9lHosyofq^btcNFe9C&P^*wZjN!e89EsqKDf*hxnx zYH0YF?`%P7gnL80N4yn8HLDFqvH1`&lBi1QF+V6aW>1ZigiTGUI*sn~T`jo79fa5& z_iR2eu6x9YOG;vFUHA9Y!rh)+RVBF9hgcweewR2u)vC~czEyFoJ>kAxjgc{l7y11l z85vjK&YBU%vUn)T@!#c3qF>krmo?nd?OHDm>)w8Al%nSg0&T78bcowwcAMV&Qop6S zxnX_saIEH}uft(CJ!+9I!RJWfwb6@gGt;-+i9SB>+((#$QEsjf*-sKpbn6nBzVYsB zXb?oIE1PyB!4bdlkx)E6Z#67aI>sMjOoH+hzYN6CuHKYTos1;5_)|75NQA-h^={6f zH&8_MjU63F+&(OKiYkTS8*wdj(-WYinJvaBuV$!L6!U9Ra$%&w_ zsPLERA;F0YA2trQ?%9FKgIhE1Nv`+GoQLV1;Gbv6C42*Ypt!g+C9N3S(2(0%B_D3p z3C^OB#6)j!6kQaUvUVEzO_YVa8=;^}^upC~xR+nO`{JtNz7Cz1?c!qjLdsq1LtA#; z#diJ$H!gUZv21b0Z!kn3>B6_u($f7mCNgp?a~{TUPq{ABcE)kPe0!cD6Ste`M<*&J zWoD&eYKlJPwvXwLuY_lp$bNmvwpD%oDfs=h+dS*V-n#z9MMr-5^^~(9PSJZ)(*|4i z34d_EdMB)pndPjbBX0)!*3 zj)p6(n`Xay$%KCFKE>6aZ;|2Ewx9ic>acTF3(`GbdDrs(Y{c+X9lwrK#W+2S&%3Cx zSalY5_W3nxdQ=a-+xaY9eKfsqk{*)eJ#MSo4i7Kdq^ zWc#94g<5F?OtOZbV)2$sWKTV_ab zu*b0WB`y;)li*S9MWK}SdKdd#5dZ7hlQ7x(pPc*FqmNbV=XYn4t{rZ`OpU1X*Z04f zC}lS2GU&o*M;;n;=*JwM?d+Fpp4M?e!`1wVPggl-dUELo9c`ZTgGU^DK8?HU`BGM= z5yLaZ%sur1?9<-EQx1>f*xqmLRzV=J;cgE`iqhSLxXyQYpmsK zv1YS&mDW2co`Oe@MX;hY?QTywofB=)(2JRw5k}Hp6ZKT@+()X5=PYXMwqzl&nnu1q zyQr$&90_z3ZS7C)7yHkvc9&|g3|Zzv{piuR2qD88XIVuI3RwBV9(Co-SbVq>$+oUK zc;&N{%h%ee7itDQpV5{Sd2usv?+I`${PnbM9vnuzXk%=N*=}q0Ad-g&Dv{5e8tTmP zV`}S5nKIqeZR%gp!-A<>Jq|||wc8~T`=uI|DCB6vlMc+0G?$n-Qp{}T6JORXt8QDA zp+;%hFk*kxJ2ew7o<3xa-oh6*TVGpnL-&--?En6hpXB!GsSgtY+1CDA2fbeFkj$U% z?$GoWb{+S}+@%)i=b^R?P{Y49daJv)AR#U%}y1-RcUJ4ufI)0^e~U*;vxqLvdt0X(7yUx&CRlV_sQ~Q)QRSuChNp zJ*}?p=hWb5`lex7fyR|UH^&G7LYa~K;_!`AQRf7QhY#fN6E8kaV6JUxZt>=QA@Q*0 zVr~7`=Jw_EInsl^-%fw({gV4vcbcPg8Yfx#m}a7MaD_t2J10})cEz#AZMQe zVTew{Sjl=rDGB@llE-z`vAgS*QCw)eKM-dPfP|%IAQu-GS71BNM*jTyGkSW}3~mXQ zivzakzzl)dhzKv->nk3%pITldwbv;8Zr7M>@89@6?ueYZa^C&~b?a76?~m`j@7|s> zN#|}=@u4u9%i!@7_wepxms+R?rTe+JEGN17!xr7_U6Qj~=jtvb>hznYr<$JF{XmcB z=#NmeZQTuWE@*7A|=^OBk6QI5e48F`UGbKxGo&6~A;1)#$ z`iaZc%n@vouySJI@mtV@hK1=d;OVZZKT`48`IKBzg2@&~YwqkQa{I!Kzp#+Wa~yqd z{|1s6u_Fgel)|y|r}*Z>9+Rv{DP&53_EYQlk1hko2~nsw z`SA44O(v$k-4?Ui`DvREHXeDt*-qSgP`09Hz~{{OF_0EhdMYC!QQt~(K>|0}PAf?c zVjmL^4vvWNRYQH^fs9Mn#CtqNZy$5sRnYn*AT!D33E0)whw@utP|)9@DHNr6G}ulX zPnQ$?3<5a`qO{ze4+)<mXk$7L<&-U5ooTLdD^*WO$LTVED?eN5{H( zF-ot|JK$s+l|+D)!m4}JcrI|<5^xv|kL36Ump?2mF3w(^Z+TIC!y@VF?rw3v-sTm? z4>%d_$k%NRdk+ZY2cNhA5<__7f15|acaE+vsys7icG359TrT@6S&M6sQuA1BXXR&@2O8!&3 z2nVF0U!&$eL2`8?1tM5MSR(H1<02#GZ17A9KDZ?w`XxFV56NSE^PU;yZI9_l+VwMc zvdnckfv^fRB$Q&WUW+oZ3F60-qv_+DHpjdE0@A8c&w^SX?Xr$l8Qw(_zIgW8$7x85 zfk@^PHWJH`&X#ew*!XRc;@y!h9s5 za!!$0vaMxwk3;vx*6(>cWfhfq|Dql=HGQM4_)(6-@UUmZ#!NAwKs3~x0^9Mw@pcwa zRkqu{UmzeYNJ+Pplp-KVNS8<`B8?#3E!|xr3Mz=82nHq69fFF0^B+v?A#)gei-kdHJeA2kW*2$M6dR(h7JCM8h8-q zT4)8#_T18(r+;~k2kkd9pmX~~=iZRPR!@3f31htO*pJb3*n>x1V#@qrvtYY^a&x)N z=Z0K}tz4KE%E`SX67SH;)Ic;q5;dOgIYywr@j0ho0*)yWG{bMIjP6L4r00HeUfg59 zu<${f&MO{NLaD}JmnocTRW}JW#YA@uf3tSybrCD{U_~)qF>z|tJMFij!^cMS`bNZ1 z=|+)Vl+M#>YLoJpJHtn!c6>PfK}lI%!A!d+7w-+~=Rof-S2hU=B3txkt+2@Xr(xD3BDb#sqBF8*pbI< zcm>saGi>2#RKZHo;wwDyZAJ zz7$`z+M(|Vc2R*80gL++^GEp(<>4b2Q&6ZHql6f~@>i{9o#Hc#i2*$1 z_yz$>kZu*!?FyG4qQ9t`SUa?6Dl!C}p;9@(?!EVHW_;7zxgn#Y3410(#Okq! z@22~V#BonX$I`}y{{DVpxHxhsl*{L%+gO&bBpI`29cGv2L*Vz~(m5)^hkwr@U-)Xf z$QTCdXm6%U(6!~S5#x4aap!nzhJQ;@YeppYS^D6%0vI`0QX;z4tL@Ys#Syxwudg3N zL@PY;e8Hi982c=k-@D~gr9*Jy^xA63cEk_=_mBg%d?+yakt%brpI7EQ`&-d;G&sa* zgh=FfGg*9VRtU?j#rgejIr;od)ZZE*Fz$&)l5Yc ziqUt6^rRed9gZrWdpd+e}-8WQyq#Sfn#FD{J{fu z$Tslt*L~diLK~8eOpK2Isi}UyaU*VHH48?<`A z5-l&Rc{#P^l}(o1Jqm+#8apFkja}Go05_#AEcOQ>UAYr8CI7wP){NPGEX<~cj&=Ou z!<4$;nP->32FM7p_>SwK}#v zeVv_+4Gd4}H8ZilV)RFDUD+;U>RF}*uu!4q$sT^N=&AaY?@J8-ApsPr*phqWbvyRI zT&fQ{0#*;tN#RrlD|`Y_VHmyHz<{!`v4Lj-a<+o;arv{qAKyBr^8Hv{jY(xpBi6R2 z$QTg)&~@f_ueN$)?>p^6w>d}YyS8RVMto2C4v7M)9Pjd&j-+hP&d%1qD5#^+X$!{Q zaE32q_1BE?ctZpukwd^zoXDe>kK$GNDoHppyjVsbZr3MWJ|of zippgGK^WF`ZEblvB)1PtVys}iJzw>X7Bu+qbck=;9UL<9H+BybE|wk)En~LTNkB;m z0*XhWyZ~%Zw)wUA?Yz9AhaX*k_V-_V>Ap~EuUl=doUpk(pm{!xuJgWi3siZs3<29U z$4&5njK}t( z>C-2tzeTMLQ!blcHy4FNEp7!Z)zt8j5}j+hoXn?RO9z~M{Wp&E3!iG599qR!Y9n$o z9+nzUl8e|4L=LS~(?U_evs}KU^XkKko~o5Ys&i6%7oHxhYd230>ghZ0Qr!KGXnhd9 z&$=Bp?Eh}fa6)Gs(`;QlSeRfJU5YJsMyHqk4xLPBisGPS^tFSG^y9r^on?KA+}hnO zad=iHCJ6ZJO(Pg$T|30C?4+_Ob8>OXYd@|SLsx7cMQ9jm$GCP%lA#T17GxbCJm@px z;Igr^X`Hi64?#+|2znPKB~?VTI^I4y>oTUmLNm<}Fv0cFVE3#;?HbOH3=t|2Amr^0 z>0g41;k(n-N}8~1p1@Z&JC7edf;l>R`*t|Lv&VQNwlw;(o{wI&IoET2y~f7+B1J}Q z)XwbWt;YD>-4tWzZ}L?4mxr%Ogm+8Z=Jm`i-dPIj?;XHxEB4zT**0zBg`Zj-*_ImL znT-Fk`0L9^{5_(`&j&-95p1@L+=b3AIBonW`e|;d7-=z2L~-= zA5Gyzv{m%{*Hiy`OAPv?vUM-4F_qd*w7jHq-uW%MGVHqgvnj!(=WV-B&BZ{6))<_Y zQsQ2{cXC2Pgl!soEiW8@gS;UFz}xxr6Q)8mre#B#cka-yy_ljh-lH<|oiiSJx$;I^ z{oK&j(OJfc$y<^)JamM6X|BS96ue;LA@a7#MCd-u%@#e#HA{T0)e9Wh1#ljjg{Ty2)`nysXlZV z{qg*Q<3u0Yhv6|#G>g&0P50`fy%&hVrluw|IFy(Bj>wS3%3`fLvQ__5d-+Cwopeqg ziv%mZSRN&~dcA$f00tewc{EsM>>!}z6YA*onol6v4@@mM|b-A zOo!;=JEU{8!j7#o1pKcPU-Ke`F#RZz1nh%|*w_yCVh>~6%i#RX(hyW~fK0EiO-rdl zKpZ@CA)qkIK&a60Z)ktuK z8U|FuH>AFALbS~O8faWjT_36YZ~^X++|O0TOy8sz|2BJXxpC; z8qUJ%9^Ct-veA0#oQ&|!+MUY-HNvmTR5f8l?DfrNGtr}Rv#$RBaMt^Ux&fN<O_UnDTUm~^B>O+OI)N+#UMxTOQ? zPkQ!N4%Qf`RJBJ{Gtbp7qGpS*QzFANplAi@T_Fqle>f3tc%yh{*22DJexosqU!45{0fpkcyK(PxL|26F7@1;X-&+h;$ldkG`pLs31QHK z=)`Ih21@F9$FFSPer&K}c{|zqipJn3wt|tvAAZjD^>q|Vd`ovOFfzQ%^x8fjSX)X| zsSzgI%O!s9MA`Ar5o$sz#p~qw_STEiTb+U$ zwzmpqAo4RpJs2;sXGQ0!HnT3a62No|ZMaxU{-gS#YZHTh`KyhiJfq^bLz5B==SKZj zY8;M>hnAcw3>pH&)79<9YU!Z@O%?Z4AJ_#P0P0EtNJrZBOTT&;N3vWyC~Vq#cn2p= zA*AV?xY}|K6VHjE^=$E%pK!gE5Ue0^^hbjVn?A`5DFM@X=Y*o?V9icMHZ@71{I(Cz zp#o$0Dh2H9=9M|p0(ZQ$2Lv;G*SXk~8$pooTS~H@XJ}!^xqk4~3<6a7<}|JIj%kF# z@C=e2JV-HuA|-a_WkR*^G^kNBdU`frOYapE*MsZO)!iNaghxCjc41-NQR?u3Kuk=` z=|`8Mr#L~tt-;Fh*}tDh;THPEfi*$ryUIf6F~AIuW<4Z3o4a~vroh|4NoWlL`Q-Ya zrc$GV)~OUj98K~yh`=~yFlqO9_(DOGpy6ZV3Io1j-!}V^BXsv5{)=|XgR*vu5YFhG z+1Ck)j~|CTRwqpVx&HA=r<|T1x8&}hp7BscIoXEa5%l3cD>Y{mB-WiWLf(N>VwP|{ z7XHNY_E~L@F?y!QZ#xpJut4Uws6AT0g6Peg&r5Ri^1?c26utFm;-!`^z_Hg83y!rT zGx=4h)rE;KsUn`l41PPz)qmG{K-EbVFul$vdVC$~f8vcTtGKC1`JVi(Q1{Y_lD*VD zI4}^IAi2Yjh&FHrU{+xvD#gH!88!Y}k&z($SuNl3w3Db4Vo1z!Ft&0q)+QY9uk7c3 ze6JwmdmUyo#AXESQaILaWH@Auf$syQX%MVA^0F}xf>OI*`046Ymz!Kn8eea8NYK*6 z;RGDF#*oN6OC7K&^h1xujPZ`RL(PuASbNqa(%R&b*tynyc+Smj&?1b>wi!WXlez+82-tFjShJ@|L~>%*0o>D zc$#c=d`7WPcyzM^-vt2*r8x&fN*nKCvq?_rO*S$$9C2(cC!Z z3#Qvm-9K)XTXWth6X6%mgL9S>b2%B!*(pZnhikptX@;F=K-x&P;sjr~d@{c(1fy7_ z!L3tzaEM7<3$FrO{!p(6q4ULZo?at?S+FhnAxbfE(d2Wz^M93`3%m7|B zWc+6&$tsKrpths*HDcucz#TH;?QX7&lRwj&xyCSRpl9HYbh8U z<&|~zOl`f&%EFY)D7f4D?zYOGnHgCUtlK&|VR@!6VVC+MbsPvy7vq16JAUQ(lvN=n zn@!36wx{ifVhK7Q$Bef=3h7;fqhCW7(}XMTPGXVFp=&>1|uH6#~NMgORllfB~@ zVi9o08gkH!YN-P`b$13@>zu0?(Y@vhk1MR}ms5=DY_0J0k?qlik!#nWI z_k{J|wOb73{BonEr43Q7{@Ys1NAY%6Prui}6Xw<~`Ha-THoLj~aL@NBvKZ%Vn(Njx zU}bhz_8I@~GZ3>uda@+Gb#$e-r&)17D>D;=h$y7YfUZk={$>o9z7p%CoMNwI(AD32 zS7g~pyQFce&qdYPm9WsLz*fAP15Y7*Wk(!6gKy+|rGiW<_b>F+|4}4-Gh)V>?eFR% zmO}m0YD=<;g|y2=%d_TO#g5|3@F>tDhrOEIciKigCjuA)uz>lgI$lRRRJES(`bou= z3No!=;#MHS)l?fXE)t8!DzIYRn05Yf4&EkOSm6xnqrE-wAiX?Mcx&Zb^B*vjK=FVg zd@Lx#|44rMQ)F(&*5dd5cC;}D>WsC>1;A^7J*xN?3q#^kC)BL0r{u8YJ|A;oVE~D= z>h0HXmD&354w|Q6qC{kLaWhm__R9(c6Q@NlFhuXA1Tbd>m01crU|M1TL@6>n9Oq4T zHtRKZQjZ9Fhq6=DNcpB}m|nKby?fMb$`hj7nk_5aO)F#j9~)&UfQ0!ZAx;x2?NOxF3VCqg-@ii8w3=B_K@Axb;Tu3|%)PEN zRIjzXAbcZX!kLZ1jEgC@NIy{N&Vz;fwY~j@g#`{gJ3!>Sq$tX<#xmjlw7RMkc}uz> zwb6uWq{!^-89>3h1Q68ABw2+W25%Mmk9hx?nrSe<%zW{p0^BUC(2YIcfr?^6BBD4F ztRRHDu}U?C-<5rv`?pIK=%`AJ+8|W((DW7o`%Jg`3k9WusU!j16EB2X6X`xE(V){>;YiD-EX$L|sZ* zi+h;;GmJ*XaoeGp$#4QhCW<_|(z09R*=o;vygw!Oi=_-k*)ocDmoS#)EeFzi99L2M-@W)5Z5vT zWkZvx_gtSzndQ^v;(_8oE3C+b1jS@Qd|qB&RvSOFe`uiZlbcyZU4*bM)6(cF+L*Ka zf6lpm?c@)H-CtJr_3#uSr^na{q}M?6g2q%}_R;g_I3;><(b4!|BUH4pWJx0L>+g?o zTZLWayGMMka(ul8uxfHbpOlkA*P~TH4r5|wCUthc2$VsSMM>l2T3`?9c_MktWPI$u zIAP8}Apr z%FJ|bF8Mb~@H|w5pUduHS0;$ZX+|V(%M;NB- zCjH#POiJWL=7#mcNrIot3?sL&S-sub_?(UHAyQGjmQd!1? zyB;oH*BS9C{lVAHHbo1Ii+~K7mg<_U%m$)oLfDjDQk3N6UWaPE3)K05P)6s;&V${e zao6}<%oi3<>yZ<}js|4cv*IcqOuSbql%t})e(QJ&5FZQ8lz}>x&4P{T!UgZgv`Z(8 z$|^82D{`<>Oi1`DoS%ZD5JGAbM-$BS)sO}l+VheH=NJ;GmP$QD7voL4^dnBfL*TBj zq>xD2tBMMFAnxFTub%>d{{`zr^V`WCRD#n7NU3PggfyT^6o_t+{NY1NSGXF z+@izeXOA%8K`!7EOBP8MXV&{q@cl4JT)nyM!gBIK<|Diw$nT;Da zM;OTYh}>K&@ByLd0Dc$#zfM&<;Fcs5^z8q(>~DbOwY2ut5C=Y8!u92jx;r){ddpgk zCr|t)lp%p^Q7$Prfc|F1gNG^^Kl@(~6+H0&o51iQvrLHy*8QU&x4GG2(hVF6j{QW1 z2v;j3K1Gg{FNMH;+&wnwFhj zy{*Jir$T>XXNiVQ0~R3c1Dv3Wgn(fVA5r&GyOWsVYK*^<)|j3O_KiS=4>#0q3qco? zpv8|1$#;{REQ-G!3PnYR)5UWkaU3)8$&(=XSoo}#ZSk!u>#)R!y$;<) z!IdSYD&vVATp|V(j~_@RDh)jy9Fzvv6F5ac<6Zc+Vog?-VENyP7$@)`>tVAm+xL~c zbZAd)w1;j({N#$Z;e!0?iOa(tZSBlMX?#>jn;y77opn3s5lrYL$e!OET=maE*26qU zy3W}fB;(FLIGbWY8w+lgl8ik6Cm87x197;vx+G$!G65IuvB=qgxF92g@x969YH0!( zF~njdP&Q6Mxq+|>2ykUvP^VeCpG86rxzIqNDXT~FQ%qDW&KZE@oMxFL#=o)>x0Wsq zIX3~21*bh9*1ePox+Uq&c<%aNTsRPbcWC47qf<0q;cBL>z++L|5f4wQS;|X`O%MFr57PE$ReY@JYaoUn(muh zSY*9@Yf;zl4vr7h7lifC_EtdGhzF4Fin+dv%Vm(+z0=&Msl8Ux%bXYSII?PMGmX*D z1kJ?Wsz1YgZEAJhk>=ScdK_NMO3%Yxe$q2sfevS^@5^9L|9BP$tZgqEZ8nE+t>O8kv=kI!Q1)Qi z{^;mv1dicC98Pb4|L?K~ZA~xH)fKJ+Rpl2bD5k(@GjiGo_dP-_HXG)6IW_p2o14Fa z?tr=i-6$C7Rwy>p@hlFo$nPG@q0kI-swi>y7mNi0s=VCOsjRI{wp_i>4{ZtMpiZv+ zJhMGHp~^p&gT8s*1*ina#l@Mb*aZ$ zB^z_4c7qa>G_p^A;0o;Y$Wtj2#svf{-;1T!C;wEFU&|me=A!R(Fb!)fnt)%F5p5K} zTD!CUVcehl3I0mW1|>{!U0dAXAOAIDgnO-%pi?45Ff1%p(3ZIJit9AtpXq4?AoBgY zmgDDLi#Bq-nqM`|ZB;TjUJ7#8u=jrY4wz4#5}l1Q)f@dU%E5mDSU+N;Q=BT835(Iu z!Mb7Ut^oyM#JS;Zk+gu(3TZSI)=G8BhcK7L&~HvvBdEX-D*8|kh5&MaiW^$}BpE># zSM}Q3rIM+|-Pxus_`Shj+o;N47b{}qgZ+$}8Wm`n5n!4jYh8b(vnCLnN+NiI1U^#K zlodDwyij{MzcH>m3KRi*`3f+w)QG=QXTvr~Z+V*LPCWhZ3D-na-{T>N3hXS-i66zC zO)xyeX^u$MW=b=32{kL!4jMuFkoyEr9^;(SLa2_C4gwe#Z&I?PPa9Ghq zdf8}mGu|Wy3Y<%9)Q=I?#f}%^RG=y$$_D6jl*#)4Mu(}+p&>$kx>N2428%*N)pA53M@zNiuKtr_j+<2qStCW+$nIqoSu7+n**~<>TzpF^ z3L&q60VN$h>hwWuw4ZQOmYn^&5`d+>ejyFO8>haj=!xyIr-*?Yw&=6@Bn2UMI5PZ& z%`r3Q=WT?pK3nU5QSkd^-4V6rOFxFE$F-Ocn>MCH!@F7IMUgmld^j#^;L;WLRq2)@ zXjdqcql1U=xW}Yinp>-Qo1KG!@<>kpyLSYf(Bw32fg)ngRvdgcX?yU>{qK{2L$bSu z59J52$!&m-aIvj)5RX(`|s^i8F+lTV`^x*|KXz@ z2a4(HgS!jf#ztnKS%77cRZ)SB(ztVnV(lRr5mxC*TNKfm{{^l3Ziw2i4tz8dCL+kD zWTA@zh(sAZg9On7Ct&RWS#ub8h&cS|Q&XHTuM$89AY_HQH5R<<>n@L8_EWQ9->4^z zppPzD=>I)q?2nBC)jG4m6|2ScXwSAYQ;1KP61Df)t^-0BfG$l`#{Tq#Z!qc(Dla6l zg_X=>N-HZ{D=`u2Ryok4m;?oj?xJtqyx9;t*HdV{@fNNMv|6O!6pA`cjYLL|Mb-of z$#Fo;=nN;V%Y9&u)5ybkS%h{5mg>cR~=nl}8YGhSThHFHv4Hs>X7)phBpyoz=-(0)B&# zK66aMyo``1Jja1Ob0C(|M+ekx3ZqO$t1IAd2_3@1lqEwb;wD95mx|?~Nt=z`hZ+r+=K>aKuU~JsF>DY^)>T=#?vLW80%qJEABy4)(Cnejr&3NyIfE zbCFq|sjY62+b1|tyduM&0hV%o_iwT2P9bZd#gZ7HnGAQ0obL_z2T6Yt35p6D^cj#6 zAQlo6qnWk2cP6mHRlM~Q1GvAaK*zdc2B?HopB{yScLf=79LyjGIC>m5sO>>+IJfDV zw!Nw8je-@$S66>7c_<#Nz$=w44dL-$mX;3ZmNq3AZZ$7B4u2+vX9KUQj-I~8k!bmY z^JEJKikn;9^4mxXI@Kz`RQ06gPM{BrkF$*47Z?L}B%>|q3pT%J$#9 zVLQ8x9SHUfkPWeLYAgndSn5Cnfc0~w2Z$eoSXxd$g9tncKB;c&wSfvX{+@@wl{tno ztbKGSy}z{MUZ@nDQe9Xgz8z72spW-;W5a{H1|?$!bsUemkj{v(v6a^7{9kU{Q&%qz z8V_ils1C6e2I*#;*nb@qMwP(anda3;POE}!&osfdL{IIxC?2$2!bw-S3>(m|lKAXV z5coLKK=}b`P&FNTtFYlUg5Z=NNnwyFHy*cE)R&X(IZf8#@D88l+lNf)3ek)xB z3&-$T0~Xq!Zy0gLqN5(L6%9ST=*qpln*QHwUaJs7Q7CXpz9q8XtlR*)q7Z^@E^9)4 zkfG}LMdjCBe;1D2+}!GCHdt9%&u~Av{HN&YQynBnRswRF2yHCRiC&32sJ>pk2QJGS zvRl$O?Rgpe|E?vr!c8Xr{2V}HV(&vC?;^xvB<&*c9IM$jnP|q-ExOMRj8l`TClj+E zMg(0oE<(Nl1p|)$roZ9j$oA1WMf!(W;3nxJaW;m(F1U5FA?;VO^E7o%ChQyMBoCCn z3c>+2I4ERgXc&(L64AEo#C8A#imE~*7v&A>4k!ENEVubq4@1mk@)Bt z&~tpv6YQ$1J7l+(HVz-L;X#5HguOBIJ8b6Vm%GLRAp@xwe8HVS_G#l|5B|3|(}Qgb zYVp5-^EdHD)zsQS0sMLkDn?X|dO}afb)S0wi}B*i7sx5%f@Ct07T*?fN*FAG3T8TC z47c`PG+yKxOhJ47`ZQGzM6lCgNxJFKee3W(n=b`5R+|^+c~3MYnvpjh4pAW^;(`N* zn)CZ%aDYyH6dA|(A29iTjhdEC0tedE(|LVp#W@fXlPp!fCSH+|NY~D51W3Jr8sFGm zYf6y%4ak{{tgP8rL5pH)goFe3dS@N%#ExBHrN;YTh@){vhO`8#0M0xo`4{(S$Bcrn zVn>F&^Lf~_D{s#-ZhP10mUt5#_!~P76~v@KgG@(@q338gS-cc6$4e*Q)gpRvl|qa5 zLH`j()Xs+SN<-VRFR3DFKSkteOQ|GeYZz{W#*q)^Xt%P+ZS1 zDk24w&7m&8CTFhat?Az9j%VRuLhJsZJXk62T-&8Gp2*1v!1EAUUa_qPl>YkWk7CG4 zY*)+bj<8Xy0J1#*>6ZNuCAsq9wHv@~#p1B`=NXUXOaiG)@*sA8!xqJ0=123cDdSshPZZh|uKjxXRXNa=e7=LMQ z2JMnT;Wep86+LK?A)i{Z_3{)vbdWGNM>&{o{tt%WEM5lvBpgL{l8<` zgoP=s-@OA}1zG~}<3G@GUc2^7fF>5ivV`*LX!RUfP`lj3cn1duHR1RULALMj3JRQ) z5gFD_G_B*te#PsC68?Zm52^fj-(oMi_5}95Mz82?Me!m%+CuLuBpg70g-s4OSitJ{ zjRG_V%I*-?OXq`o{ZqlYDD;B-ua5K(|MXFp3Ik65g4xZZrKP11u@E~1k6Pg6rBB;b zJgZ`CJV{(d|Dx(*G7F7W+AQQ}kqTFplYR~kg2o$`dP6TmGgE^}auiE5`RC}UFv^mR zh348x__FG?6%ql7kQHu^O?y4x9H{j$^68bL0F={xf_;Z>UCJTk%4tqhryL762kL>tK0zLG)HWNcHjuMI;lD+;$uBgDa zrHN0}a&k4NA~tytG{9FF2I?=Xz^xJfFO&ZMKPb+(U8tmC>ByynKcw|8R4*?auo)TV zuZHJ|P|BEcnxUODh?b0qu5v+`ofy(E{H}-!1UJ4v>P_(n7BUE5T)jO2688SRtJl!(Q zvu<-|qUU~Zcz4+e7WdhaC$iz$+vlNBAzio`ovr!RLi5gBhR70ncJgEd_V-ibbZfq? zsUh;O!!<;AqPnb3+6yteR<8ZW-Bp0RoG#5-QCv{?IG(6Q zGj)2&k&*vq7}O*`d4^Y`&H*zQSn*E{15N%vQ`7eWAxgdGdNG8n3w7Eu&N3KNJ!}Bn zGX@Ic%-hb?4ign2>3`nPn*{d_Ul~DL3cupRhu7Tn=#iiMXZ_5#EC;zQJuh*pG~g`A zH4$K^k^aZ6AeB4m;gmabqH04Oc1{Aj8-=5t71VI*Q+$3gigoe_M`nnGnq{QP{Uq|T z0`vC^*iW=5oHL;17Mz@KhTL6}3#v>+7l<2flVJTZw`Aq!wy87V=MyGwrSl_ytDerX zt({{keHAqWo!(h~Zhs#sN@v~f~m zRkfWS6$VyTcFp~HLokH^1Eu{|O~Fo$aM43tPfyQ0&*zP*y1ER^(kn|iKHA5JB)+1J zPRC75!o|g9k6h`@cOGsO>fytOU%!280PSnaUyK=w3z(?Kru+QG+Wra;&Y?HVk;v4L zX2x}qa;L#Lxtr!}Zei8WD=Rw!JoADsP?3dz^z>(j>ec7ZxT zhx1Q|J{-D>(Zi^Gf;^p=r%x#%0%0VY{G>(Nn%^|D*{wSgFOLlj;3|`wt|W>mCE!5o zP%zW0yb_r3>*ckMw3mx6mK&&l94o|7k09goTsdPc4cr8sI>!$Sh=A;|?KZMLKH@aA zv{QUxoP@{{dGrI4(f$H`#!?9|`X6)Ll+oqcu))EwIh$9dyoOGGY?R$dX&i6XncR|+664l$eLrWM#EQ)496{nH zCq;f!7fByn`-{G4Yy!$xg|ARVL_}7$w&#X!edt0`I*?Yu8_DC%bE-@;-DkhZ#w01p z08RuLE)7dhr>7nCOpEh!$bK$c>-HnVDCEv=fu7eCR`=t~-d!CS$XXu88C{js;*zn8n)?5aMV-CC{nfVgIdm@^I`^4*cxdhIX=NE0^>2qZHu~Z=<`=yLZw$)#7s8Hs{u*i5 ztyy4op-|8=k}BbY)@?4RJ$gH&F+Y!g-MfZ3&)%oNbGW<+=``!CJHV_O!6?zAaLJSC zLyMR|e?mh5Z5$3f+Gl`UWZu6jBz%9Qaud3{UFz6m!}WToRYn%yigN={C-eAMEQo;s z!jr5sjC)i;KDC!9Kuu2(_p3Mtl7pBMLy0Re2Ts8KyE(`mMe7MtG96OT5dZ<={(d|? z^97y4-AL#M zL4Z4tsxz=kv9TY1{r){zC7T$hw)>L{SVu@{TzJo3x6J>pr>Q1+RgH(NAFIo!VnNeJ zEa>$5{I|&VHF}{biCwj+G=Wiy0j4Au>UzZ0K=WCuxFsK0jxYc;6da`7UTz3+Na3!X zqqe-MJJ2OPM4=+D32j!PGR*bhI81JSH>6qOh{B6fQc-J$ft5e)is~V;05{L9mC{sa zP3_W=J06|7WmzlCx@Tp-Mh&CZpb=Q+&Yi0$Bs+WfumZe!d28!?PR9oazOl6WSTVnX z^TbP=rrenM_$Z-=y9KED`*Yo6KOIWG`{`R1j&QbmAS~bki^Vdp?H^um!#T{E-lTELFsj@6uBX z;M6_Tt$JgkQrML7t8{Es@L}>27*(O)^UpP)G&B;C86|PFBFlrzn9u_qIZ&<(3I#Lw zdo21iIXu*>E{}LFiTPYs*;0Lb;pD}Eph|~IgPyOMT3kh@lPxBxSb^Q2F2j@n_}ZEI z`Om#zjl~`t0bRo6GH-Jz-lVCpNYlca$zU(n>aHIMFMg}r2GA*E*L6XZo*2##=iYgs zV`fGsY{F_m?}YU7?R+6!f@w&|3QYTpbxk>D5ij{5J>j;Rb+owt2^oUtW*8cn)Ev@7T7%CEOcZK{5*IQvem>Y zH5&6rwZ6F@KPng*F(f6O-}bITCK1cXF@G{0sEZ^=16Sky?L;;~Q3avz1J^J#Ju!F-M@)nWm56Ry zTzUS(B2~>9yzCnadSXb47wSa@ErJ6J8%U)<6Gy{yyu)gK=?xRE08LyX8|jx~i*WiJ z^gITtGQa-@=JOvntu9Bz|NbDyZe#Oa&~w=!79NPczN>T*;=vEEk46?azVZw+Dp=`z z2tz_(eoNwu7crrsh_mpzvQ*eS137?6TF(Yw?d?FJt5OnHp2C?hnLy61fL(4HL-I3D z#E{R>$bmA7LRI_f5^FCcP zXHd|42eC;`{sH^*=Q3#L+wOf_dtV}tf6;rSwp)mL*j8kIef~oK=kPEgu=#L`Rz+K8 z1Diam{zLJisepwv^arJOEBeNm0nE7B~ zpiGJupJVha%{`~MOI0zYF;p_LK%4gL-cX)S^2(*wa%ZzgCed)*(T3PFh^5e{O$Ur@ zA@s2nf}qbYrx}c8^5wgf^x>qFo4P|!iiS*6g5K*OCS23WDsVKl-YvWHR6s9tGS_1$ zY$5wYqEIStyHk}X?=HDlCk*##Q1>9n!Du4Z?!n-6Z!ZcSPGd@^-M-j^6Z3}wrY-cA>?X8G%VrqpgE+I;~n z`&!d%ua}E?U$^SwrG;gQh+L_Yd?TC*I+39ryu#H2)~g5a?)`I;4yC%|E|oC(D0o&v zGWq>&?myEW`O13Q#kK~ikdkw%{9GW?;Pg&W+pPR*)(wU-@H{9~d!EFtH$t!pG`BP( zhqg;}?CB4|!4J)NWGtntOSQz4RyjH!GP~rKpQk514-Rd{(zO>J@TOMDeXO3-+RLRa z;Melk5C84Mii%WGQ%vZe`{j6b#=jt3FIgqg0vew>^p3{6bv5WC#n^Qy~6(|GKs8QKtJ!QI`5hC#Y= zFbwwVBtwF@sE^e{d3Lx!I8qsDz?U=hqlaVy_9v(-p(i|crS>?p)%}hlLCt6&HoFR(L4+?(YlE?%dhIJvSg)a$il>0(|rdR(Zq;30KNQ!lHe)7aS%|%W_FsIPE|cqjp1=G zSp1nrz}~TFPmTKg`8I4pGD&PgLc$)jDzvmOkaY;>GbAplrx3s~P_mFxCv@@(3ll@~ z47`Nph)*8N%PptlA>86tvV}sJF|djY`W5JjhWQ|=y#lTSydljn zUo?!wqlE!kI&N+Q`|fdF+&^#D@;A6`OAn?n4H+9Hoc$ndSD*Y%JMrb{wJig<9%148 zO)WP`tG=Iw+|jz{E#Mkveee5#s5h$KRKyq{@! z*}k2t8fkd?2cvuF)vqz>=Pw@t-$U>s&v9Xe!S$~uyxY!NYeryxziXTxc1{~!LhDeD z>ki0)K7d(0IoyI^?*jfM1$!0c2>5WrrNDfN2GC384Nj1-Ttb7-T{SRfr z^zVhIPmzznrq}gPXS*G157n3TWrR%rRmf&mBe?N7;Dxp*wK_hjv7Qd|Bh}=;gYNxm zh}jj{6cvwXQvacd{?F9iqgbpP(7=$SJYGU2uMCWqIZW__%VT3LQQ`H(V|!e0+xg7R z`twOy%aRnuru=hZ6Uv^;U9@7xJ|_Zz+^5sJJ1Gk2OW1kTTTR3Uf#|#ttGT*=2>-aG z$g-Wbo3K19Pg7UQiY)gcOXlWdl+uGairT)IpsDoy4rFsyU`*w2 z-|PhGv0>;SJPt621tQq*&0V0nlspbpkk6;20CxeZAO$n>38;NGy($}{Q+TadLs1x@ zOF@1vR>J__+Ha@EC68~0G+l|O+7#QBjLx$!O6cKLsLljw;)dC~nAW^&oW#=U6jeT- z(urBj(#dS1bi{x{K@bMUmlG@gGYy`caxh!e>cbk6Uwb#nPnkt4+(&Fts-YxZxs3&5 zCpZ1yrHlW3*Fo_3zhWJq3}XXCNUCX$=P%WLC@B|}1%P6ge>a>Dul`P^Sc}V(YyXt0 z>>|l}%w}L^+iFcue_>%0Aqu~lzt9Uw$jVx^aJys>%;b43Bzojz_GEaZwSx#HT4%B| zkC*d4tirw)Z;2gOTLS;Q4=qB#FT3DSoG33{Bu=k-q7rBq66d!uPzoMZxTH%r$0eBB zXPOk_+;wMNz8iMGIu%ut?&WvJ1l*&^OlAw$WWi@fX(*pJ5*A@W&pfG0yK$zMqLD4v$(1~c zjdvNC;tPrlfAnbQ-S}3#VAWVJz@gsTv9cTysZT~pd{eI#{B&(#CfMmQU+4p;xEB4 zln3z2#hwa^U{sh4Mp)J{Mhd93R41R28ZWv-UG=KFd-^dB9EnHrzf)*hCoc;;ST~1d z4x?oNja%KT{%P$V85ecKMeF=`70>T};y^o|mVZglz&?ZmqNz0J%^Q>TH_FIh!!WHN z`=Qe9eLWyaG~OlqiCtut#DIDO$ZsgABy4PLo3^?Zh@2qt7*mFQBmOk4%WY{<82G4j zNw*LM^&q$%()#*71O9q(ICxQbfSj#*Ra@CxL$*LT#4pH<0mE~hL>HmlC3Gkg64@TW z7k}{G990js94n3%Y6Pcyw7*oOMk3)<>;S01A>k~90cGVV7|ms6Cv-)WjFjlcNt}^Q zZJLw&)p0qNQH1#3yO*C@0mpkB0xKYyISmFLtLDSGa7w{hz1^6`7j#0c6*9@Pa3(65V+P=xb6UJj^y<$2CGb1(L z^#WW#gnIS)BVCF6CelAPD(0&68VIhp@u;UC3ULdw|(;(x*DhgbPNnlXq zjlW24DkF0piW~^J;~Nh#P(YS=d?>k#?x+5XLg`23p*OcmN*hFPL9JeDKNJu3b%n7c z3(FuuzBX(jLd~EHcdbOoWa4_r-&9u*X2J#Wk|?}n++X2 zJ;EC#&{|91r2G0aHee*;xv%G8AfeFC>AEVPowY&*j?~&Fy_Al5*SZkr6o zE-`fQyi256BWdx||2^7kZ|8;O92pZMui~;2JXhN*oI1k{L+(z9LMz32E2Q7Isr4vH|&tNMIF36UO_@9$Sr{P8+z`qbum=d(va7uhP44MMAxQ??l^YsNJUj%m z`1ctKsNg|`j|#GsQ;S6OodH2w5&OoE)K?xo zeHslZI1oAEEiE} zru$-PwVLtn;ZfpR-WkIolMI*%98URPVu`V_CIFQG-|cNm3PdVThS^EF1TLQ+yK9TTf!F;2}$Hr8UTD3L6) z)2$f(hlwWe#b)*YSU!t$x@0PSHcBp3GIFv>Sg+*r8hVNVgGZ(hBRTKo1!#!Q`6G1u zLoYI=S5~7$C5|9TyDRg;vo(8jNgj}DvP|FVWj7XCQ|}C4pcrm>s-4wky*+l=8K)^K z%zLKq{UZ?=lk?Tj0(rY8wHGo$AIKiB6{PB>b$10}^Ko4Elf1yDx!fITCFP8Z-P{>XaivQcp>@>OfpER|+ zKH2AicLqiqv_i;fp;Mb2{|3yUR=SwQd4pUYTxr;8l#7e0_(EI=p4AuU0oO{O&A58;#v9%k-3&odFE-!S_%L=&cZE5 z1JEH~it2JV4&6Wb6FlPJJ_6~Xr~e!pJ`q|x9HpEzzUDn{yg(p?yEHpUPM*IfqmNSGSjbERozc_s# z1!PS3dB{ARtHj5y-2M;qm|3WI6=u($lM@ofT%isYaLF3}`tah((n!RLXJ^kEC8)M6 zJb`WCvb#_x0Upr<*#No(-9dx%LQQ3pxGeG$azeQ9Wn6^8i-r=MCNqoLY)+mTmBz_vqPVe-N02C=$fW&;@_ zi@cKl&nu`$nD02F!4@H>R;y~LIx&^ydT*Whi9KJv&cXtP|LkSL(9^&Mq2XEoEx3kW zOK@j^qX0AHr;U(HN{=nHb%5jpdZ0_n<#9Ol?*8Qc%$~WeT{`%Snq8VOBdlgG@S_GN zbZvyC&dzEc2R&CPt3^D@9u1hs4;Mqz9xu6$%bEN=(HZHrf764f== z8JX&TmDVzqH)QUL5j! zG?bbp_%pXpx5oP_%q|WY%Io(~OBbUsi)k@|*_aY9SwX4B2_XesexTeLT??an6WQSE z$=-2sbaKOx$N(&grvCgh|u@U%tu7kuB&^9R4TghvXf}`Hwho zWy-EXje_Lts6y|}=Y=QjH}@ys-h?JQ7-xp5rLEnRPy1kzuJv7)&7((;f{-_R^9HLb zK!F7pbK>Sjb4yEBXg;5tv;Jw-D=~T{#3&*5?|⧁4E{y06iLqJor!lpvx=N=Zlv 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ξ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≪h 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 diff --git a/doc/screenshot-traymenu.png b/doc/screenshot-traymenu.png index c35b23460ae2940cbf95fc78ca7ffa4e8a63c99d..c225543cfda950bbb2cbfaf0b83d2907bed0a612 100644 GIT binary patch literal 434867 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 z�vg((oADwR_SkZPzi&Z`{fFYp>msI*o~5i{Bo9u}O9O>Y{ME@CP{Rg4d!S+rE5{ zeCu|4S?3K&BY{gCLv782`Pg?~GKQNCEH0}OR&K^ap7f<%cNO-n7?h*Iz?J?aHUc7K zcwEB%aig4efr)!9k(GgOuOZt0>H?%7e6vq;E6r@nbgcm=iz2|clA`N(wv-?YpA@bv zz&Ig}_PL-QCrb_Mbl%2DTlqHEZM|3pJJ6NeG1>@LI>l)zhy6fpj#gt;UDHRsskHH>Vaha*RPx<9xTz;T>UM1Vc;^ z)H4KZifa}ObzF{XWpNO09S8a7u#T>H1y5~3a@{Rwkbsh$%S;RQ6bQyEB|EVc+6I#Q z6A9TmW+Qm%Uiu#~{O7C;?;qUN9GTdY{gwk1^_|Y8gzeH)pE4y8+0+yRzfWnG{#akD zG`JjU8ii3{ok@B{$v1t{oLm=A>1tFlzhV|f!kf1hqjZyZc1c*90mK>Y>+5uCeoy-Q zV-S?LKx^q5pz`XIt7La{W&@?`t$_?8-5!Ps(~8E!efs+8<52wiZ|T()ZggJ z#WiRem_p;w7NTf&zT$t1?P{OXkRtSZs)mzvtg=9fJ^Fwy<+p?9t#4GH`sq$-$ftmz zZ-S(NO|RRUM3wJFanQyL|Hl`_w8!_#5LUSOv=G4qMM-Xqmu^u_+N=jeGd}dhJb?b< zr%6v_7P*QLCCb&jT{~lGldMcDO3l)}F63mdo&GOs3uyuzXYp*mPB2T8Fl=poYsZsK zLk`4NO~p4Ke!v+sD=9?beVo%*aK~1$V8Q> zb?5}%G)7ppr}0LZ?>I{VKxj`JsgXfi+p`>*+nInTiPc91+UERPGi@J@2LrQEx)(*( z!B}Uio>t?u;1KJaiPT{gxmi^ME(@TU>;+5_c2R-lu*=Zz6gw=(!1g| z+A2j~7An>nEJ9fnSnbGj|qxt63ZE3^dT&@CT`C7H{lse?7a zeTxSEi8>6lxw1uK-42E)tFXXM&$CeyBCI)xgG0zvz1^U-Yo{E5Lu$E+Yxx)5;RYWa(ML?MsZ0F`(J^ut$o8Q)OGQY)G90K0zv5re;%ffW~~N`4!9{KQQG}T zBF1p8m0TgVVtm+^q?5xK)!Mm<6x-9>xgrpP=L$D6xG{dp6Z~*HUtdm&(1`1QrW2w^ z!YrJy$4r8&gEFM7^oMl0OSIRJNDLp4`gKn(*hbgx>-J;;Iq z`S~J^GdWAp#Hz8i?vz30ASn6=B3Uytvnd{-@AUQDeVPE*S@DzBYD7#kenP9gK6=y* zx7pf%=H0cVxy>&H9Vw1aR}ta0(@WXxFKlYt1Ge+vPA@K3_28)CAJkI`p@+7dGUdTQ zPgb@BqyVkTZm%m#iJ6C*@S@rJ{!3xz1f%pGDty~(=%mEZ*uosN=GqNzK|YAXgHU3A z@5~v$fW)|V?WgI$$1kZusW&ISb_Twh-l~TaQPRZgN5duNxm1pJal|z&L$>?JzCKKE zlQqz_zh51_A-Z97hh~fx{mJl&{RXNbm55+T>ploQ?q=!B0h<9+7c>uRu(%8e7jIDA zytQ;q1-GE*+P&FbPDQZDRfojha2X_VfHQS*Oua=JVU+&^Uq+827=2~It*N)j17+$H z%hcJjTlAla!BO_U`7@jotPqxZl->CU3WZKj5XCIe%*Wh1Un*~23QujxJ|zt#wcS9o^RwtcFjXDS7=CaA`}g( zD!Z+>ag;=l1d1|&@e$VoJ8hQ&KHsu26cO6O^jTjrMdj0mmLef@a3bcTVJbgjau{rP z^H8Z-Kc&M>L8;A{lGvVE->R=!1*RopV;Ek!dOy{->`VO2=mi@d zP>K5&;Q~Sf_}l2+4z><9iBp;q85j+0T2cN{lS?qX=%sM{bv$$lh2B;1$<{@Ydpp%k8zoX%qBcmr?&+gN!_9y3G zt9nVv1%*g&-Q-C@*Ts|vIzB7R?FzX5k|?3-0x{i5n<3ZI)_G`=5j}u3u^g1=zm4nX z8;1pxF@W!+70WZyDXJk zEb(m}Dj+SyYm9D2j)9FC4K25H{1La`}Qpi=AK+=hJ&m(DeDgh+~9DlRMoJJ~-XA57V5$+dgagzNs+ST!?+08*@$ zapA&y7D$L2HrK-~>`QnPrm9L18?m7KyaUG9o)wsaWJ=pGLZ)0&Sj<7Fh;xG{cZ5$Q zb1w+}52P*UM?I?)4+^PoRC9r3yDXQgWeY&@^iF)o1VlmeNir!GB&do1Bz@DlO)%+W zP8sPF;$&|NwWGWP-775iS>Tf)8#oJ`e6>U28e!&M#?^{{)2H8ANiF)DJbB&*C$`su zRW&WJsVzPPO=eaO0(X+juGK#BVDoriDssZd4#8XhbjzP_NfDR1sg2d*Ab~0saPAv;lJMuQVJk5D*r+Y z+_wd)5gReRNvIsRr(2<=lTjxsu=Ip#m?2@$HT9GHY;Upz)v~q*Q9KpmJi|81{co6G)r$#PeuHyeMSw- z3lDxE>2+&jD)!K`M(0r-;L|{eKCGMBS*kL@WZXWIUthpho_!V)h^Fq+rU)djrM9|G zcNgfX;?#~vI;8d(&0tK?XhKcftj#TAhiUx%uATgC;sOa?{@{<*bIArHV|m-2njJwXIBz-=oqrQUu0Jr)Nh;iw zXdN4cd25x-w;FP2(YcZkB2LA7Bg-a|dK$8OlF1rYqLbKE1(Lne)AsnZ%_iDZYOs!9oOsGpjGF-;w{1-v@CasMp#wZbLQ0Y23X!W zv9RJ2z8)W3b;u2&7Nut)j?1wm!RBZ}Gcs^|P!rCOZooS> zTF@QISr)Rb)KuZQ(_@A|ef^7B^!M+?XBC!T0Y}*wEIYr}b9rI5#Ale-QMLeuy6Er_ zm@1g6r4Q>>ZN{R)LbG`L=ZK)Ts}Jv`z7#&9RgUQ)WG4HIg2-k9sMA6l&IhuiaiolM zgDzK;7GX@@NVT_GiyKi6&fg{?^X`)sn5s(uyE*w%u`t~QRsTsx3wOKzo)gd^uJ}c% zrXf$8ruBa}1zJ?ivabgrEg#?iAmVM^s^mQT3s*#^a0IK4_yGg_ zt_Jms{>_2c}*$?ETS zp4!Vn^_h;`sb(&dot0oZQ^pPercLOyE5#4?s!X%E^6Rwkaz6XM7ZpzBX{=Scr)HcJ z2}(oKlhl159-&;dY0eHc!E2kYTR_MN)A64%S<(}ZRb{F7%`}|>2)L$=d=-fJv-5$Ug)=6!`ODs&o;+4pl^!IZAS^2FBdrk@)Q5RQbTFF)b>m@%cB2q5D;8-S!H286-` z(Rt?FA1Hj~UYHQIq@LieN+nL}kV3e{M+}3YKNf3H7$6Xu*xSaWM#1bXP098BOsCFd;pRKzM09!>7x^LS>$} zU7=6Ldd;A21mnP*)Kz-JONdPLLviwpUb=N>DS{7X0yH~CBGJcl`T&+dHQs- z>l=~XFe75AWoxYX*tm#|c;q^ia(Eg*4P}%pI8z7e?D&;1lPo}PR7&~~ zC27=ja`%`YQ^{Je4l3We4{s)g9Yau=R2T;B^|0NtJNvIL)mMCdWN~jBjq;7(DokyT z_1E^jH`#y;b_d~6%umf)0x|7b5hJS$G`ZNi-R{LJJ#yS&W8Oce%qg0qeE_0q=LL<= z%ZvpX?<(C|3aNK4xM3&OiXXI17SY`ISH85$Irb>jD@^wzk?Ye}m4MN`uApHt9_ji) zyi^@u5%vs?@{atGC7oH!;;$>Y6o-gocz!f!*7KKMKWKl=x&fo7Cw`)YhSKX&)9KRF zCFLfYe?_GFeNXuH5nw$~d|CS^VSMG!F|U`nq@VJf z!XR>l4s2;0&5s39oRtL+BdMV>gHJFrh;_Nc)`Mscv5o3o1dr1#9@)I)Fhb~ASLNxt zKpCrlwtp1=Sq)Cb+M9JCyI3MSP<|Jpkjp7$jPs0k{9zw8Zr$p5vWCq^RB7!|e4_5c z*#co=n4R%?<1Eco_!J&Xq+73ah#>_=T?n7@j$B(d&=@f4pKqRB6#KN&Pn}KQWqTuf3pi4gEKf6Ax=_Si( zVBh3uU;843^HB&0J%DzouQUO4_mm#;z7R>Ij~6lCtP44Zg&=C)c9mTbaKdxV^#kL{ z)U{HDC-m~K|BmPLhRd>Dt^ahf1FRyGwFL>({~Cb+qn-_9F+!cJIGFP6tJLg zcmtKg_@9hGo=I@2k=re40>5^){aL&h#DL9k^S%{cCZ4~`?$TkA`G2s70H^sw+`&bafA~p z<379)&V>f?4j$cLJlSX5F!Qwv37WUV*n@_N;ni(G1(&(&h+Jhs6_ac{$eDrxW2 z`14FPJC_$KMZch`bKcvkmz32XoEbL{o3PH0DHy(nkCu-qeX&ounESW`U(XZD6209J7G$A+^W)ZZb=xK?%(w#@1eEO_= zinn*Y2?W4+Yuy!8sS61egr-bZIwHN&n}Ng>?nQ%o+^&jNPQRsB;qLmA1CJk-1G3EL zDs{X^nlag^(ln@eppSEFq(Vr4m7?{S0nb%NtRG;%Owcbimtk4lGmSEc)X$6qZe*6( z*r{1^W$V#peXvyUP?^W|sd#R$#um7|IbZTMkAZr^t&k|TEw5lm1v%uh(1+@yio_py zaQxk1Q{L=QfPBfEXe@Ly<#(p)hP{o}YuX=M;29IsPpn$`0UxH-TpHSt7JkojQL3Uj zY$sgZ7-1G@R!IQ^&gMJF48g$vjARcPLBg}BHd9ceV$S%}KX(eBg#o08Lp9eopA`5h z-oGKMdu|!iQVWZQx{ZE6m?Z@xnrKhOha5;E%FkqYadLPf_VD zL@G$*`ZFbTMVVDZlL%x6C)V#maJwl?FYEG!btI5lz&-hyQeUzg=3 z3c4#nRW~ZOFW~+Nu`c>kqI^xfyOu|o6`Rz8fuRko#GQ|1qH^L3dCsvRPqK)OErl!c zE*Fj>Ne=RU&e6oKFzn?GkL=O?N<9|HXwBnL!h691$Sm)yxQLWC6pQTFxzwQ+D-i$0QeX%DOuZ7Uaje_L3(D_(GWLgb&Qy6^=Vi*XS&NJ{EAUzMA+GYzG=aEXhBqpvu~* zj0^WJa?7HppKqqpV+i-QC>QoCevD2pG~}=yX?8*%oWvMXLNCLvTu}@GRwL2J?J~ZV zVq(To%_ShoFTBLVc}f6dE{Jje7k+78Flmuj9OVmZ2x@Ep0obqpcyfnSC}eWfT$@!UA~{Dh4;B^qw<;84<4)q-?$(Gv$GIltMV z|GF*pXaEKu#8qElI7?tO*r*o9=Bk><0{J9k^(nHHYQ*!4+gsT*VM<@OPlMhJjjG?J zOSV$_R)3QolZ%UfVmP+bI~#ag|K!Isr<%6lIh|5LyLkp5@jl=A4!hUV<;;tZa%iS9 z0-2O59;EK*iKDR!bnoO<1)ye@W8z1Nl7h(9pssPgYz!h9&C#}RI^3Gu10OEixb)1z z+vDGl`KP8&hMIqQ-_tw-W~=3S%w6sNI65@~KarcrbU^meG$}KyxaOeXBV;8hCX1@& zhHhdG`NFUsLESTv<4DXNQ0ZD}WV9w zZ#c(-SLR{jpq~w+!t1OaGJ4^4Ox}}I$)Xzjc$|Yn_(r^xKd`~9JBxl}!?;DZ;**3t z*zdQobpUxdXWFjAVu;0$;dxa|yv1kfM@|2DD`K>VIX5NLag)biQZthVgo^gRf$ zkLBTua@A@kJY`C{&{Zg_?}OaW){C+l&!_d$WxFJ|8^P^WbOmylrZbe-w&s=MG#H>S z^QW(}sD29u^AImBAVqPj9E~VyqA3Y>r2g)YW}7pruF;PRqVLM*V8G3vxnfp^tlAwG{}3^ zHX{?2iCPGUYOT0B@CS9ZH%+vBAg7!xgZ=q&cR5Z?4eTsAcjT z=Ek7P(AA~66a14eh8iYAzKU(^X)ib2&%$i-MZ&UH75t_`GpV{Oi!?6_Aw;8ZF@`GM z3|GMXdoBJOi6Bo63LI&TeIGQ;W|oi8V@SJ@R7!*0GCY-trzpd9T4^_NFcO8mY5a7JZj|13G;<1KW?QKma z=+UI5!~8^UfJ^U!|CS=6JRmi9*4)UZw!$4QsJZYHlvD3rtkQEdMcfUDM{=26xDmm> zzi6}l?Hmbwl9 z!hRNxa;qz?Bbscx*;lIRA)p<5HG>jA(p}S%<6OQo4C|qf#E(_T(~HJ z9jq0HnE3G3JR04gr6LG+uSU&Hdllv6J^=dT^9S_eCnauFs{*Z~%2jnXgc!!s6x9o~aZ9>JqVj zzwTo(X&-}wsBl*-{f^`8qzv@1=7MYQYHsmAJ|WU<<4roDnW1DgymjTQ9(4@o7R!2M zYC8{BmOlX1l4RMfWk~va1tNbFMOcZ+6qegcnEL;e23RhsAaQvFXQ^gv36s| zZ`i1i--*-E!uTzSDMqloCwUl3)PgjmmGwdo+Fck@0$dK%@;zhq&=^$z{PGRRDYd*_ z&Q^e9rz)Cr!d8)?WZjkru#*a^4Mdf*iirC4sOKd@a+guU)fCYCh3LLnf+eTB9PP& zC2kp1)kRZ()N94VkTJm5$L!N_C;qN%z}#ja6u2ulL|GAes1>f4P;2aQx2fOn9yp}6!EIUt>_Cxl`{oG^d>s0($!-B0-hjdVkx_*iHx0Xpw| z`vA6oQQf71gj(olko`5@R%I04A{RT|Np+JPMoTb;U&Uh{qh}#UTr%B&J(V*@wzS-c{LyCt zhP+W~uPzmuz5xk8Iuf3qoz2hxjQ-p1<>BR3JoRsPrTV{N$OG`^; z$BC4m=lVlF4-CQuxmr@M3kmww$-_e+zJE2suJOXytNayb`a`~OI1VFfX=|I?DWasa z8b++()%`XD|8Mx2mS`Waw6a_r+!u7b(Lt_bY^|-UsU7Ewa(M4o0Y^_W8s~6R)^$Y&ggh8`3f>(W9I3+4BL08?U(}6_!>w6a zkI#=E8e6pgZ@m6J@C##*?3|pPp0R%5OBcIg-JHeNS=R+L9!JYfxn*j{kmq7j;SLS$ z3h*9$MTF4*(^dX|-}kUDZLY-E*Rw4xuih~Q;bKNH9&Nfv=|zXu|5j6*U;_n6#j`AF zt@e9A#>{8`Z|5pBkHa3HpGzrwDmU!P0)Y(=XyE;7ap!LL7>UbqK87tzKB8f8WSZ+3 z*tuII{eR>d{$mN5@0NewA_&A%wuOA=mg{w@Z!x`Nn@}d)o5c#OaQ=3MArW4lf<2ELBV9oN5>i;hXv_jPZ zh`4QbLVM4>2R7R;>+Q~rr#frJy|A^0=vL2@=Pzkv4FAKf|NP|*t_%WJKgea8yj2+J zHbiR80S2(wUNrrNQG*u$hHU%!Y60OwqI?wocdXOiXA)(oq&s0Hz#_^w77So<8J2U1M@X=N6)m zM(*0E^_PRt(Vv-5>#;shKjkx9}XA6VC^j`V=JM!Gar13W>LC2mc`>cd}mt;ZFUemHzM|gZ`cKV_se=AX}M+hecrWc+&jI~yNEG$uRQ7^5CxsC z4DM{b2znWp;W+<(WzBV&@8j&?e!rY|!tAqMu6qSO$Q4W0>RSK!Fr6K^O~yi4wB@&E zIkv2}aZ4EVRLATxTRR-qhpU($3~&~EBXg*?=V^bsmAV~SJUxnt-mu(g;?>)44eEvA zF6hPJ7CTp9{U0N8lh19&T6QVWwZz4Fug7#a08uagZw$lY|Hsug0B5#5Z^yRnY;0Q_ zdt+;3+qQRO+qP|cW52O&e7XO7fBL%Wt(vM+=bbq-J?iJ_?zxpL+teV>%haIw=5-WQ zcC6U0=IJ5k1%qAxtpW3Fn}KW}C-kh6O%TXzduoJD6J7{!-Nq!>{!wMUC@_Zb__nBkpkO#whX8ArYgP_P5lO(_Z6hI zy59I0XRoqvR*~#Iz?DiLL6OyNV6Y+QVUATV2oF|nC~6tk-f#OGQ#tgT(n<)M4|aGj zr9SFR#}HnR#dvTvW+SF@L(Px4v4!#*VX(HI_+I%hf>!QlE1XvE?7a8m(srk(8+xzS zc8pW}9()rm=cX+?gC17SN0OZOm$FPnwxk3t+ml|4|SnZR*oYxDa zH3r$5tQS7iK6O5>n>;4#UxD17kq*qzb=D9;Pw=@hx+Ae8+Z7VZUMfSTy{;+o+SbId zI9g!FO}b-3ZM%`Xef43|JeL=$>%b9sKgjT!kAW6gFa6>f)KM$HG6(bWUft^L+(Sd| z7APV14Xk=htR2c|*Qq?R2cgGb_8E7(p+rJh`va!=p-wB@P?mJP)TVz2cP(H2s@^HN zF9IY<+w}5So<%bdHX=6Zd4jz>6{g(Z^tbG*aR7SF=?uEd@PjK6KVV{3EMY6yk<{65 zjn`ertFK?hd1`M{i+5S*e24c1J`oQnc232%l|1odNclghWU$zv8Y^W}1RP{ zUUM;-95t?A{&!<*Ge4Rk#^SUi!l2U*Iv|&Zp?aL+g2Q735($MDb#!FGpx3?=m~M9e zNp$eNdYLD7(Rh4zHqfbspz0pbJYd7au^Zh@81de9YkkI7h93=!k?%eFgOwiC&mwC5 z-0N+3PNY`%p5!YFNP5Z&GoIy{8y@|Nqrlm%uioHjw`aci4t|(?<~7Z_-PpGhJy!JU zE`Ip=6EVX#oVA^t%I2Y`qU7s+0hvo+Bpk-;8R_fs+sB@=bI0q&0;&`h4vbUZ9V_kj z$B!031p|QRaZ+??``m7V%G2l_7(u5*YzrB{l-rdqV(BQr2?THHh0|`+g)^k`I7ol0 z7t`IfHe#dWX4^7FWYxB&sy;|J81MRlUfqBerOJV!b=HQ8A^+KVGn=~=L|1bfBYibx zTi2`u52*cP!(+GyiT_O(Yjn8rk_-4;X}{oXk2v|vZ1(18U$MgZ1wwpRL=+H_<0OQn*hVBv6~Su$LpjYa zz>f$-AWi2NNv9;T0=GnbS`gYCM|$OG6Gyke!-nT{1{cd?*M_VM>cKe0S^J}0b@61X z{9+GP=tV%SH2+Z4bF>+LJ3IT@Go#ggB7V(aYX0k4-MzW(S0;`NSp@b&3= z7{I3$wd;DBob%!Am8rfMLd)xv@~mByPnlpuC8lqnQF^uSX3>wn`{i#L3v|m`FWhxS- z!Ohe3tz`X9LfdK4#_Va^1kZH>{b{L>z>G3#dCyMU{Zzi@lB;+(b!lpVG?K7?`q38z z6|oiiQKyD{vwJ_3^QdfEg(UR-rdrc~*dJCL{VwuyoBQ17Q!OHQB(P?emB*x z9nftzL*BkKQ*JY~{MnAP^zrUK;bh(|O<}Z^oe|^xjlM@3LfTK}|<60@_ z#RJ!f{x)!;k^)QNK0hucfx_%Yh%5@B4~j zI4dj(zo_ZT%3TzSO9S$6c?m53yoVc##*OUk?xFy43kFffx@z2T?SDt)5BhpE@hgD` z6EgyHjuh?+pHP81G=eEze@UsjuW&0XC<{Awm*F$bbckLDHQw`bSbqAso)`{Ds`f%R z)NuG(`uft6epqK7HTFg)n>Xb16>w@+`3m>2YOIq0tUx+sDAO1q%+Tg>JR3sL;Pr-3 zL>Dck8#ztTLfBOChV}S2 z$(*&|9=`ADieLdH81;8P^f%o{Uhmmf_vbsJOtm;J8nrxEJHhF34;`okoRi9{!%j)a0mUfstUv;P*g|>AW(SpiK>^&h%ot zcs=ZFx$g+9-6%NuIfJQCyR&59!%kXz6n<)VZ&VuD2KW^4

QWt{ON}giwyrsNiDv{M)IaVxynafbeA-Q(>LL7OMOOQ` z5nF#;1)*K4s7O@04z3&$VdD#K##A%7OL3s2G&7^riP+Dc5as!1Fy{eK@DDzF>s(>S z3!D}~Pnqyy@KB9Y3SZ-5gnS$7j)Q($KcvX(0N}sb`cR2+unGwnoL^>@(|FP&{+JPJ%l|BX z=5fTtdC_xTd*AFERoVUQ{dRdVZa1_aYiL3Nl%T)6m_58#=hAV#36j9Zs?RD(zEqFo zsKv^z;iyxg0zRRcd)oki*?onO_H_CnnzFSTsV&Mz4I7sjXOC+%&n8v-)^B~*}GZix(5jsln5U?XQKOt6PGp1Gby*Q6?@~^X5zI38TQaOD4C!O zF_!le7^l5}^IV(nbJGAoUv0=5wR5<=CI2rlkCr&%RlOq8NJfDLA>mRIMv6(2@B2X&a6eLLWLon=2*~V6*&2Yf8H9J6^9R(nk z2+F1f*ju|8l>E_7om1-qHWrPTX{Nnws7F}hoc*A44={m%^hg)zA?@aakNwy(vuZkZ zwc8Dc1i-##$KqPvJY8_b8u`cUcoR3!k&{f%WA&$8EW-o7S(s%nSn{yfMeT z?0>oYAQJRE55IxA%3TJCA++Mn@VpXa_>&%E9+iXHOT>a5cJK}<-@THmnFXa2x!J>)j2G=$rHR{~?G8`>KDEjDK4E%w3Ah;S z*pF79Sr3f6&j0;+rRU~QCHLo{xH0@L!=-@)^^T$FSe>sy`cfuBD$9Hbr1Z_a`nnpYN>r&N9(|aV+SO;x3<1hF8Etj}F~kuiqyt?OhTc};!;3?$UE4l;*DY>$|8-A&Ve5`U z^>GG9*g6j71mI2smU#|>NWp;rEudhSFlX0|8^5OyLlYT+)=P6tzFo%U^X|`jTJ}Qv zyL2R@ro^g!z9T0kRz_w%tmBd5;kYFecR}PNPY#fFcfmbQT!@}0L^IW*%!~{4`RZ!; zd2N{1E=`>hac9xPP{T}j^6`y`v{K|T#bE`!?Jbs4? zo4c1bGce~mkuBn=fjc!DN?IcN=}x%s8&8~64M4P?MMYEBqm^Ltxx=gch+)nZ{A$R| z$d`&bT?I3O-_d#@UecY2{#jr!YHw`St_A~eY(fE~=6}o{WjxaQxDI-!%qj&oa-{u? z&iv2R^ZOu1f#JQ{7CAaTCUEHkQt^z`+%7AYNOG(i)f>Wd7BgL)N|PXNw2~KWHmPQidEVvMIIjMT z+ca$M>j5Xf?v4DAnh?1*Sd#U`j(hhuY`=f`5l!COShFO`v3p|F73FLJ?N}Jt4AY~=`k*~!rHav|{rx%`-ZHLc-_r2#529-^>-xAi1^ z`752b-9*wKGv7z(w^KkDD9QL%C!(*r4>UCg4;*I3vvY;1D#*Q3Q}4x^j070VI4+Z| zImg&HAA&X6eH5_h2hqrxqH@N2X)Pl|YNbv2hR$$b-Y5Q~B`=83>^cGVQc08TF!+aF z=uqo$P11nAl*;Z99d;|hRwm@~+9}m^eeGlBiA;XPaa9HT|11Rj(P2R#6mLff1{839 zmm_|k)O^iA#4NDdc6h^VC(rJPJG(4P{mV45gSwa-(Hqm60pPdEdCewhV$nF^t8=mT zr@ivKdO*s9FPz(D>Go7OOrEPw6FOyzEI!s10?xc;tGfO7OMDSrZ4BpApBoYNQ|VD# zIvoNrZ|C`(1!wI-p|FWg@amkuCbw!&g6YX)CKYB18F?VTY|gmDcYEfZcp; zFr^OO@r&P|F4b!;9+vNKPxT!n;axV}$S%@1_UyQq_1^6`_`7cL@YG(EwC!)?p2iTX z`qW}hg*~NVSKFl(RkQ+6BA97?&mHid-VtY@1buHfZC-|bp3ZXDwi^Tlf-a}Bf}imd zu{hji7wFt!y1VNk#l0MRUYue1>Mw`E1#}?QbiJUuoOkqUmr|u`^bKeflwuX{ol6u6 zx0^%xgFoSjVq-q}B0{&;AcuV~#Ge4~p4)+~nUvNZXos2C9A0D@KSq)(1Nr1W=zX35 zylrb*H4TNJe8!{-dU}y%KlGm`LhX9xKLZ}~U%@?109lb!!wEF>0|u{IvF#7s_|dnR zdElfoj22`k7GK0zPp~YvQY4?}SGThrSNoap?A~jRjc6T#w8(vQe776Z;+=!XwwbpV z5jU?F8_u(F)18Oc?qI~jM|V<5qEz6?0x7E3%MJ1&hyKM@FX}BJ=VCdTHzP zn%Z8Q($tD7O0i7v`$yVO#97_9QW?%K=x%mH4nH1vHTk_zT({ow zikuVj%IZ*5(A^s*Kd~;~UJ2eV=1#AU8dROcCui=Vb=~gBX-n{;YmLNm*_T2zY(F8V zI~YNwSCjH>-lJ!0p3L8_ALaEu+SymbwD_ZNyCH6#c~{qXX4cXZ_fLj)n?J+XE`1;_ zIb1|a@stscj@1L)Sp@n{k?Ml=`Uf31|HEwxjJYUH> zxVoh&i^Yb|FzvTGr?=k^@XE?*6cm5=*A3QRZ_<33X3K2{-Y@BeObLJ-u$WvxEO-tL zUe>C&|E$Om>M*0AE>?-YQV;?%)pYyMMo{i%?5^T`6E4TUdX39&s;jX26(Be*GvHdk6WR|0%k&0 zWiW|}=nD9ejHiKW*E7~jyKRu0qDpEB8VnfS*JvMn#bEivF})?LKWNi$`E|WMz`d3e zAlnXh2Pt%i+-bA!fpy)lL0Rv`&Uq1xCmos2 z&y&wxs?2%@*v4w^;?3OvgRV7T>eWw2M{rYAMS zA9{T$?(%?#Pys<6zXuK5ol5y6Vl~C!li&G_Wp%jHCY>>mKCZ+*H>Z%-ij0U*{}%Oq z1vRzMxHuGA^%_A?KkD5@b~fWN5AWYjn{C)c2zxVcuYE;>LJ@5KI;J00Z|UqEg5Ry1Qdc_!Nr-bTZhA<|P@eV$m^;p}FAPHe`+K0Uk{E5U1%Kms?dva) z*Slv5*#S`mX7XCfIT7Q7hywV!Az^NQ{YPR z@UZlE*n=fLXNC2nbx!D$=uSkYeyLKj!T|w!LDXsHLg4!Z%gDJsx;X2plZ&1^!BI}$ z&*3@To|R@8(&IlP2+H{PSr!CDRU8Wh*hhy5tY~S_57V(<5CbFC^2u8m_!!HNCbl6R zIRQ`t1Xd3DQ8`U5h`w36Yoh}NMTrtgzzwVCYsune-dibY2?kUF7to$Cu%yz3VU-H4@-Zmv83Y&ipvyDy?A-^H z4J7DE3*V4GWzwS0^q*#bl^A&qxX=@1P7?uPKwu#&uHFW<-##?(&~F+d?~QZ#%vbkk zAj&Uq`1F0|XSmg2{-?$YAj-S+!zeni0wdtN^u69KQ}S&X*d1JEZ6(UWa_=HxHunY<^PzFze+%&*4A_hKg_JH&zDmDGo;Jux$Yd9 zdZ-84g^U@8AMt7Y`nd&p#*$S0ekXlPxeqA!?y10vYf@HFFtgN+FdpYtP|*l4E2G|X zDDA@g&w1;w#%GjNRD3@VLq0k=5q5NpgiyF+y8o)6idWMvG4D7z#RlhV1w7pPWq5Om zif0ELcxnPnzA)%Y<~JNX!%uG+R8=L%%0?$-E01_`Vxg#{gC7L)Uz!CB{4Q*4OpYV= zhqM^&3nePxNoEiseAUSK-s3)6@&(!LuKZOl!OzrL(~GV7Ww7=Jdj0?drx zVyAjr0rK-EFV2@yO~;y!nuca}<4^FW7Xde6)i=2Rt`aH7FHRew(Ac=7qD0Wvmf>p| z%}HjZo8{}|Q;<6T;H+U#L4fDL>-L^{BZKE#Dslw&Kdn~qrRl7=OcejJ15{_2_n;;p zT5Ir?;CXo7{#9@0cyg}GPd@7Mazzad=tQNFQoEpkA7cJ0^oZ#m0>eAGy5^gk$Jd;JDkE#YEDH} zOOB@*Oxkwnj&e|CY#_2)x68O_u-S7R!^XcQX|hvQQzrnEsZ5%bq`H#57#`CIS}rXU zbrOUsO))KEirG|~bu!=15fQ#@QvLdV#4URO0C#94`FoaH>yT5@aYYa!i=t65!cFuP4PA~ko- zPu2LmuG;DU24e{y%392JtR!US6kDpJ$*qy>OeM#pCCs$Lg2rYUr{My1%!lXR8((dS zIK5jug1ID(__K0bP|->c(PfpNVdBSzdxuaOtk>kVH%H%z@J&oFl5cz;^s(i%!#Oo< zkW+nuNWWN)XC?Ahj?np|)R9P+vBnx&PClD9OfqkJ{on@#G5jsxq&PZMLRV+tV)7Y9 zK~CD>p?k~ilA)fYvs347=QIrWhbm)$`3-eg805_JPvJu;huNo#WM?3t5-O#|(_68U z+o{PVJ<9G-U&7NBy|i&mf#@p7;e0E7c8sOO*mB-kkOJ5_{7N>bfw5We7-mcEYgi#{ zi8iyB%~@NgUfG-QMMd%^5My1P?)Zmz;^1O?uPv@XtAjkHTgTt_D2`JAvdgFXOigwk z>_lc#AU8?vEQ+AjEvW0=JI`PjX$T>@Btx8VLkP zWRrr}lp;NGNCw~_A&Joujtxc?q5wTA&nn9wT@$z2cDu*`8@s85`U7PO^3^CCWL5d3 z7!u>WfM8DR(%1U0kcGbbhq9=QMMW69zgomRp#VMT$;tC9l?}hhKIxG^-n3Rd=>y|_ zxj$I8OAh`ChP4U0Y=DjwOLHQDHOdMel^w?w?r#l?tr+)BVp z({;=PoSQM5+F0J`BswV4Y_C^gpa7cX&9e}rq0y(exjf6SYB#U{qDP_itx zx*lUU!cew8JF9wS=rI8EM;LwPGIQ^vl*~WlBc^zHP=_}*KL1!=d5-izEe+*mwW-*{zst6p-inZeOr;sY!BJG9(+B@A># zM5Lt8h7+R6$LDx|?RP9Uy!`gjWF9<2lNj|eKL4DnSC-2}p_iReRL*~(xDagmq@Au} z{Y8uqx2t|(i}DqNY548Ye5X}Z2u&bzhRy?#6U?3<)gg(ysIoj{8{)egs_DBpc*8&%ru24#Ub*LVVn27Xo~kkcMs*FkZ6C4qH4RWY$3od%H9jxjy} z;{|0Af*Ak_(t?rr3*v~RCtioxlA_N!3z-tJdZl-wP0?0kH1r?e>EU>ulGCzs99=Mw zW;A}62v2XkGq*2XH94*|Jl%s)i%J_5XKtHQnBtwpJ7fPdWA$^?JMCLR%{&L-c~|-v z_uBBhv2-KpL>e3%*>O}$n0bXoGsUd5QkQt5GJ^rJ{}n!oili zg0)!T<3dq(f1o}eQ9@73Qw{h6IJu7>kB%Z8Xr;tjkL%^;q7M*_H`$B=WQl{mLs9x; z%_V(HPZEfkQIpi{E!cXZuNuJ~P1&A_(j+n($bsNYB!(h1%Std*n5!|)O#8;S?|yq2 zCaioF%SQiG5!zs%oBw;iaIfb?7)r^HMf*h39Z*|@&F@z35$UNxz}PTON9JUX!xkvU zA4*cXjS2al6-D>=sW)C~*t?IQ)ccuI&NrRY4GM>-377ZqLX$0R7_#;h|6Kxwi zB?^R#Ojo0Rn?{x!L(FQEGI00yPQ%={@~p4WjyyXRQCpMV|3M~jQWCQ`hgOkd>|kR< z8#AWB;5uz8w0iVQtoAgu19O^{hLZxXAV%^w;s95)BFbJjPKl?^vXyn~0{GX2e;DSs zzTg(LG!2$t-xiYwflDRFo}~sWaNsj>@^w|!M)YUMzd*}KYN{WX!Pl!Eawfb?%ppm3l7D1VK+I}KVW4!WHV?SCh zii0`7UfU80@_rhPJj<-I9u;VGGq3YBqwvqSuT9MV+%2|)zTlj>{4ySE4Z+a86^*6a z^tHP-nF2m*=**PM_dJp!^DyaTe4HvqZU;(2bG_g!?T?=4jbvlPOqEAr;SLY;&git& zbfVYLj#3Qz>I|1Ts&bYqw@7#aW0kQw>{dSGTXw95ENX(tQSaz^hMlB%DX&h-E1=6@m$JGmJ4%g+mZ>cTFqC| zOj3T2=yG5*4=-PX+;^8K3IMh?nrP&w5RzaKl^>e`dVq7;64l@~Cp@KGtXznbEK=`e zc19K(wxdR{OEe{FX&E=*m`ye5&O-B}@%w4sIkX{Dk_n%TdFLU>5Aw(K+R~fARBcB* zNfMHCsSI9hhBVV&vR*H@Iq;t5FiaY_5$?={!%WsrFXLI0?l7U{nTDb8V$Kea1Hd}U?3m~VFAY**<(CHdIQ zjWDsCE8W^29!HpeFJ>=o*vO~4#GNFotD1=H9<37&FWD@VDU`VMPzPn$9w&vA%J)rT zyFpD?k#DFVn9sW;s=%JMH3X3v=Z9RZGJY0EQNznSFO0TR+RDxqM%Cy{H9P~#Ojlhu zFNoG6CsfnLalG!_@5YDw#=R>57_$`>HuVPJD?RWrN%cx{<>B3;=59l>4n+iM_T^*r zIJ|+&KLnum6J)@n?-De=h@Wh@WD)k|nnh+&Brtu*27SY;zM===atG>nOLh(v&Y^Pb zKYZpwuKqL~=dpJOnmd$8l5I%P$qKNMM-Ta~KR^qK@$Hufao2nd9Y^-3gqd>l*jLr0P!i0uB^k&20m7k|Fj4+MGp2 zK?!Hc64fRxE$WTY3 zWY>!F9}pwX{SzmvH8{O!|3QhTEiuJR!ar|@`fEY)_oAP5Q_m97t5s$0xq=h_w=TR2 z#qu+QJsqI+KMmR5cNR0P-Fy%Ye;A95m$$e^2>MuG4AkN(~Mg5cB%M1;zqqq zzUyTvMo>~}i~MSb9W%UP=xo*$Me>_*kbWNlNMCkhfS5GHb>T7S7ZQsTlKBi%po@oxOi~H8 z=>IH^+u+&NM577%8FR4Sm})0PjSF>Xq);R*pp+}bD~LLkvE`7HupaVTpXeH0AuJz1 z9!PlpH+Y05CK*5M1pC5l5mc)FPSR6&lL!{mSxB&11S0cFTpm19$Wgf$;9z&LwnJo=_wP}zA!hj`X0 zZ$@_>+EoQDv2CPM`2J_`=++by9uOCQ(>XW1DV1kQIG@E1vGZKSXB>CKJf6!-?wDB6 z4c9?w@0u|8D7V_4*G(l1?eRfr93nln3nZJuyGusDSkw*;Wbp&xS7(oU_s9ptZRQ^x zka>ba;}>zshdfT~AIX$EPhv!g6J(>$wrF}|=`au|le}<4Sxr2~3bOe;!mg;|Bha1t znp890PM;jzRON5R`N$DCH1%l>lLG#l1Yt`Ja7pSN`+;Kintk%-hZ|HffTw+541kT{(b>&8tg$h@N*z zkP56r4|e8BsIEH=$>klSPV%BzWdpwBiW8pk&x)m!6PveNEJDlyNA0a}xS-MG-UJnU z$2CN=k0r|a6nY1aewQ|FYgO%C?gdU9_*)#wet}&4OWeVLzXtv5lVGlAN@U=G zecZ-!?b2S$XQR-}z@#)Zv4Y{RJCQwwU(fN%Qb!(`&87J9k%7aqxJq#is=K;g4IUUV z$w=DfNePQiWapy6;0sG%nH1`52hp}D77h%KSOJq&_y+atD<@Ey*O{H4Yg^iehU8I@ z*+9L+J<=eA1WV%M62hQqNz!I}X`4S%8-8JKNY5+XHTtMR2xNj>C8sr`q_QdZoNs)j z`mK+f5u0qcLVMmV{nTwV-Ixmz1*X$BtddXFQqL#$F@?wSln0@#mrL;s#2{Kg&DDV; z1S5;u`-M1Ri?n50Dwx@X&j<2rfkQG-3mmH%zn3;pT5GDG?6p&QbB_UCwIv9(fv@G> zpDty45$h(!F;VX(vZw$0v55h)eX`|>s8SoEZU!5;AA{>dI1l={=x7z9u1@pHifvG8 zywHgfP)>J%HuM{4%!0(Hm==S5bT}ci|C%h3>%2YkC>{zWyM}yaqVLjyJ{`2^pzgcOUDm1`gXwFuI%*PfYwhAV&MQu!Nq-;$TExw zSwUo#^BT#=9g~VYR2rz&u;js`5Mk|A7 zq#V1M?Q0GydO}2V=ATfw6nN5|H&!&fa(z%VCR1_@ZAxP6lwvn>u*YkLK!ldZ+eiDY1?2hP`sGhoOweie14^joqQcu)>HWA|QqMXqBX=QIhUwGd~EJA|}~)OB&H)drmB%(0|#{rF9h_Uzv*anAO@n@Ps=egM%yA2&D%(CnX_+_C$h(WmS~z%A*X^@` ziGnfKd$xL~5bseFRszd@P58X?oc6z&N1R9q+jeHCr62X5_js#3!EtqekRQ0l$Uy^OmAYhC68?t|;BaDTN; zT`?ZiLQHOsnR9WbyOAonRO80VI2qabSCN8&%zh{PFrk1dED{EroMZcz6la=V$83C` zSElOt9cw*4E{64rH*Zg7HxLFC?iA=7T3A1+Vm!qXZXdx?5GA9`W1{Sx-=HJ+LNqO$ zzDqTgx&#zwp;fLw39_5otzs?=wnqMU*y*{vT}@u?9~*`kB$#RiKjyw7AfgL^ichRf zJ0uPM)G*wFQ31W=5LbtirDltb6%9ZVsMO-8`*j3flS=|mdX6Q>FSf$r)ktcy`cbVk z^xN`_5?+Wu_9(N}4n{L(p$0jBHZk}Iwrlm-13oL52Hwe_07Z#@VDWfV$snNcxw-LO z8A*oiP*Q!gm4F6=3X0=T@*;hpf03{=xCjx!ey=kk(yjc7@kL^heqVzXiz)oQFX;x7 zAl>E9N+*8|<1QT%OE}qM0x2cNV39?ZJNj|p3oFK2M%H&YiM#K+v4V9r603b?TEi-n z^g?2*^;~jqT`**yF#G~ALkgpHwcv1C31R|XaTauUjc8RqcV-J5tbci68y6an>^uB} zyr{R%Xp&}6=hv5`T31?|Sy+6xlpgn+qot$kFPY6()YFUo0=W{B5<9qp-UBl zl2u@xot;PL=lCZsu>V)}(?VWF1>BdHHzggNkf^X(a(xSs?=Rwl?j!vQb$E6 z`r5K0yzRx~3;mm2+>Dvp&petu%v`$s2eYo=ED2~em6U`oqo!dp{7zR^ZmFQC7(NJ# znO9%VqQp&3PL8Fh75bIpIk%_{Vq;^&%-md5O%3zL9sl9^Z;o6d7c>q@sd;Fr6Oy5EJ8LJ5neKu`*37b~!#yU2_l=j-{a&o0Npnz}l?8aX?<)T=n-xeq*ti&?fv)XSAhnQ+hbjrVl+yLsoZ;W>Zwu2v15ClR2GL;ctRaNB!4K8&YIGzhHdX^w&8KvbI zt&UaWW>3n^Q*Vy<55B6(+pzc-Lixp4@bK_p^tdyN!ujJ@H6=%@&bW1IR^HG62N;SL z5j7_Na)h5X{_XdtaW(`}+vI)5y$Zj0)Js%k1~ z`Ni#!Un(u4bM|-F06}VMX~HIXH^Kx2`{HC^fS^6tgG5I}zEF+k2w?;!Hi~p zdod*UR&y*Y@NRZtVd2rmF*E|$-^~hPYJ>F&pr)pIMHd(b2Tpqj<>AlSr9qSe`TaNO zUlSoDB4QaGryb6bF}D9}={c9)<{xYu#>3N7>CqWeioDpL{;1Cv21csX?$z%9p7xYM z=(I3V4x-w3pCSCy1FGD0XQ%Xgbr1{SLd%hM6-S~TP3)aYtu|8q#ibTeov34JqpLH{h}2P=b>*b)$oUhAM@%kJH| z;>%bxC*b4|d1UynE>eMwr;zWfTm?3FNUz5h zk=iA8C8nk#yjCv?P29unb5p{;jZZhU&u2TTw$Qc|utrpl!GlcOI1cpXx2Mm3Yw|(+Qmh7W$J8>hhZ&r2KVqV$_GBkh9UHz2psChZIAYdRyn|1XJ`_)p;odG3?UpMMr z?*TM+17d{=;LOBZYr*?;k=NJl)!U_^guRZ06;JQX96lUxyG^h)hd3MRS0A5O_LlfV z9CwD2N=SdNWN?INgR<~N{4Xq8Rxys#{IIyz4a7j((HvWS(hQwZ)=kg6i#o0_7UFlc z=i|u?!{YNrfXe30A(M2Q00yge_^z6B_NVRsSi5Tm`hLsmZr$%y#wFNnIQgR+Fyt!E zCDp3xiydgz8p3aRugLMz!x>==lU?v?{JgNoWO5ALXDJG%;-pc*51?tu%a*L$LV;M;|Kx~j?sKqm8sKhs2UF!b)}JPxZZ zO#t4t71y8R!}6IK46+(1aLNFxD9BRzt@#`mxK0kMO#;`shwTgaCyBo@cV)+82> z3oZTAvwZEMrlqiDbgV!YG?2RI`RKCMyey;38CHhR!HSusb^q6EF?^3tI5wTn5bH0m z0^1x*+M!N{t9#E~*TWwky3Xs1iXb2fY6yMY-fCO!i*T>{QRRm;OtV9~H$Ggougk~n z?tY8wk8z)FPt;HK-b_uANPkgMxMw=us~K|&$_R{x7xVMVu_JMk^YYiwxkDpX6|puH zLL;(NY0Whwl41zrT&NaTO(3m)z;l^DdJ{w*@u&pU)uH4x!)|l}NtH2LtaCT(!#Lek3GNQf>qj_`}eY;ssw@ zMhT0$vS3Wueivu()25;xllpae@x3|HVO%B0W+eqguBrW~%7DSI$RD@JHk z+_z?g|GySXU;yFcMy&6;t8Y=w;oF`Jp40Y+3(n(aXe2|cmBLv3 zrK}6X##%^hb}O{04ll5)ZX;&X+bSm0PFFi4&sOtvLNfK9XWQ#TQ5?r#&)`R=ZWMa24L4#6kr=>6t~Hh_B7qy<5?^#2hP-sgYcL zvEi!|G9P?!&yV?ZyghTMMb4Mmn7S~`Qa_VJYbaZ!Z2nqW(F&uIGE)hfmBV zX>2yOZ99$4MvZMXY8o}RZQHheV%zrb^!5IHpC|w1%1N$`?3vkX*1G2&2{w)f;}o&3 zV#f%Jen&P6>XJe%yuXT-7;E^?-&Vz{l%g8rR(w*>#(hUtoso8;!5W3OU#F{2YrGJi6LN z>x9E{%i-25ufo7^FZHjDMI85=K?M7ctW607%l1}!q`?()qF_Bv>@a02Dkveh9Lty6 zr`rOo?N5OX{2~JfB&0QC#8I#_=MVm;sVTN>Pv*nRqMa>SeW5a?5N~rB9#23;ogP?9 zT0K$a=NPimM`)b=c72A!#meTOIqv9R75F2YzB@|W?iQ?%FLn*JnT(d*iy$+XQ`8Gh z;iAL`zUMUGxz?KNF?sWSLSg4byO|Td%Lo+L!C0J990Ucyrx%}FIdr_lZCzJ)0Oe-r zv+>Ai&B&wOV8y0g_pYD-QmzTj7*`Q=A_${jSPWe$mD0HxQp%!={ng~6x zeculp0sG1ItI_s7)SLb4R;mx@oULf#A6}dc+>f|#PPUx>+SU$NC0zGg=QS(+p2VE+ zlACX^NK;lvg+=z0J%>9r6acCLTweU}tSnzZCsPfs4<$}p&0YqK{XmPx)<-lNl;jBT zb$3vZAaLU}YEXJgZeS!SBlw-8LXtXhr^E?qFbtUiJX`5=Mbu%#L(;g&#cHN0@G;jE zsM7pljD0XU;h=a)=*wPPvrLR+Rl$@^##A+wD-_U$A{) z^r%m!ylyD^>K5&B(0r+!VJ~N9l^O5zZJ(O!l!z6fHwE!V} z^9hE5_wgqmPiQf_%u=rcWqKsh<)Ad@vPv*1}K;qr8csnSit=`pe>kboq0jq3% z0rpsBq|!UgMt1eg;5qM1cvbdhWxk=DyWkl$kwx`#Dzssmj7AOAG<8Pr103TzgAG0o z(5+YB4c4y5y0%M@Q@^wPq%VJ5Ij?y=1TvWnDie3XGJf9EjHft2`o2xfxStHzYei&jpgY`W%c$OtTA)eU0 zy?p4w{0%zkoD+wiHM4i3Nid2N*NVv{ZQWtoQp4ySnTM&g9EO{AosY>y@Xh(vQ?BcB ziEFn(ahlthz`E)4>+dPXhzI z6Qpt6KXVBGhRiHSXJ_ZF`+XI)k9LtK%=9LSTf|6GuK zH(96Supee%67(DQbMYy2-qm*Up+9 zQ4qn{2WY{C``0;Mkb@u(0-*Hz9A|&a9%}q^2(S6{X7zeclAw6=hX($A2fxGM{TC|k z6S23CKC$7yv=u$LS-kj3XAJ^3pC4!ptq*#1izYSCgquBXZW~{V-fAK0ke+ce{{-*v zYhLnp4cZjh1OgY4ulBOCx)F%zB#xiHRNpt6T%F)$p<5*5F9J_V*IYj)i?bdPZCkGN z+qpPH!&WcCO_2Cek~X-&pZolxhOjIF?8`5bU4x9sS-+nZH$t-3Z{ZJ|)lJrbc*d(4 zZrx9cg(eFBi>}J;(dki+qL~c;O~M|d1W@Y^$9tj`1!*xsP5=dicli3n=JzOGX3N=r zO>6*Q&fMEN-)U$QL`+a-`s=xFz%A*!@dL6O8Zam`-%Q@#?feE~LjAB51)kY9ysemE z|G-85?EBoFQuGTlD?%4GT02m=9)FhH%J(`z=Qt_48ittK**&%Gmd@fuA3D22 zQTQ}B_*lr|2QND3h3dFm3)=1SmPFtBom_i4Oo1AEBW+i( z<2br;qG7L@)z*dz@{orjBeey~M_|#%y&zrNIS+o#F~hR&EJ3nB9tM%XBX*%YVemUf zcA`&&pCD-GVJNHrmR*w!>DYC3C_{n){MR(Sk9ByB9giK`KYPoP&0&L1uLeZBf}1|w z;XCisuxf&Q@#+v1-nNmj*)PG;UH6{djU6_jZ+a1?wj&EquZH5fLWl^xIWxN+Y{uO` z9LBq;&Kl>W{V#gkm$LdrFVQ4hT@1P%D9=OK69s~AqXZBhC+N>I8Tmpru=Inw(%Z)&Y5@Jw}<7My2m$tktIJjUw=Pcm}h!|u`+%__}1(;J^>T&-A_ge zd?q-yPr1&Qr}A8{Ri2(_4!1J3;0PYgPcCbWVAAb-HJHt2$hdBcvvy{JpPOx~IQ7E? zGaB)HuQJ-M*VOC`wN_G}#uL$$9!5l;2BvJg{YcS9k}?PS{JJdnBSQbhx`4uBdEq^! zYR#cvp+v4!@ybslD~CA^3v7R~_&iWSDZAi@2iLRuT@4c>03h9QHd+ZJAeHA_!S=dr zpacSe%uWY%a+!Q1QhA^*V4mT_5UvToqhq@IqdbA?;K=AW&jI#8oKJ!_7d`zkliyTxpSVz1E`2Pe6n~*e%%5kdJJcu?f znC6b(wuIk~SAwZB>LDK9HwjPG==$0oH-nQ>kCsRCu7i0UHoa^ygdgvQ z><`0b$G@%!d|_-~ht*@oMH@m1RTBpM%NAXMD%wAnw2|?wo0%KeT)oaZH<9fJ3_gC1 zJ*EV0AYb+@xOp4C?1BCL-21BQgN6nTz`kwKt2uAh2YE%1_?nV!DfFI>!iKIDK&zsj zXR)dkQuIKrb>60iwv&%Jl>4)tKykbv_fCJ@_uy;$hVHM1#uX$y)tcYuc3X{Bmz=?1 z0GdKy4BjdOkRN6(z-#l8&C%BT*@%zRAa9$MH(RLkn}r8~o8VK9@FsB=z^9To2id@6DW#C%j4fR|vgZAJ&kS_uKIK(~=1A_j>a6yoq~R1!7#+ zlQ_skncaj&km0d6Xd7H*!wHx0Up^Qc{%)+qutpucY3;$QzOi8klmnrm+30~G@DD`h z0RZfutEz57-Y@a&b|%{{|4l@>x#(FP;W_l{z%%GgpU!$fhGb}mzoPd~gwA=WUrc`f z?L)0^e}h@O+QYKHm=x^2BwB`<`rLhNzK)LG>O$awiA2^DICXeCNv5=ak7wNVza)qh zbz6sQ`#k#TZF>27U5CanDC#8V6mUVFWf-sz)HE59yfpG%(qJ~-`N0+skadA5tmMQc z=fAz$fC+~x5}Zi>=xWjI92!h+{lJdrTbi}A0^l_yw{N(|pPG5!UGRl-i9UjRbLByK zqDiLFB?mtzwr3;Q(2vcOfi&m(@#FtXH@OI}cyiq>`9Z3o?X@Lt^+{HCKPPQOHKm?Y z$!>Uly==N}!qBwJqb?SO5zsQh!uRUcn3yWqRoW=|uFVO3kKzCMv8f!fYDj~t3S%~J z7k!yg9Vtx~&t@oQ&M5P9$XJzJs0vwI0JIpBXKEwow8++ zP6KOx7&@X-9q_gFks%{eOV+~^cT8J*CRjIXR~R5fzL?Gf#%?iC-(;Qx!4PjU5m{)M zf71QN%)6b8)@ZIq6j)lxCv!Szs0!s@x#E8H!h0227Tw*Mv=Kni`3m{rJy+4ZYcMz6 z-dh>?U(S1r>SS2RuZqC?vg6TVTRiFarrAVlq{~vquhdjrKG1~iX$Co(vm6otatxy> z3f!}SR+#nxtrQ3Ej#>Nb8Je%K0vDOc*}oK50ca?^319J>3p7tNA54$bg1^*RQC#r6 z6SudV=5TEsLq^+QO#Xi2vSZZoDoyEt0S!k}-!rhHB+a9Oz zwwaa1pn-6#?YI=D>ioF|%e|SJdZ-5l)qs~7b}C^4jtv*Va$3)>OCd=oxLMO_Q*7=+ z%!1+`Pu`1g>78?tv6)VED$~Iby$SiF>OC-W>=`Ch4630Zo5x;Z9qHryT$>aLX)Pq; zowtj`0nHQjhqQaUVhM)L5b?;)^)CGTJjrbIhGmN+JCi@l3S-kViK1FLw)9mWn4x~B zP~NY}yY}_suwB<2xIbTFgG)AyUb4e#&C`X;Wv-LZG56@&22@2UQ|)3A>XES5 zs^i|wFLOT!ScMil;X>CF?I)TK&zVPup@mb!*Z1hbYmke~XR4iW)!LU3N$}Bu4mQf~ zUwcxg`qNlMIGjkjeV}98x7Kp|UovzM&nD>g!Vl&3!i|{W^Iom_ZArsu^Bt-G9homE zk`o9k$oHY?eKVrF<~(LY+iv8%$~UeL46m(GVQOiNzE1iWiQ%oe>iX<99U}DatMta9 zcS+k#^RoGMg7JOY6oJ|5JEf9#WGZ|e?-(wHp>6^}f$QjCvS!H)hZ{%Y9r!eTGHV-7 z$G!=(OY9z5HZEFWlq3d_$qFd)Lz(J_1fD?3LQtkI0Y$l*Ig!No1#I5JLZV8#|GGyA zDrJT{IAQant*+~cc=JcAmHj2Z-%zW{BF>5NJw%2kn-xi-5hR5IPPj6c#V zzWO}SIU*zn{Aa-dk&7)(GwF;&%PthzX5Giqno$F{snZ1#hP}W%{=x##5uCtylmf$4 z26M`XYwsF;BZ};}kwecuP2OCz87aI?4ZK|@s$c(AZOSeFh4NGM5CZj0O}j;cT>w*4 z)2BHi+n(=|gi(cs6mK8Me!Z8USCnk*?Ayg;$U|8l_6Vb+qgQjcjAD|KL&SUOzZ%`H zmYtmb+ASkV65Qa--_gdHf-L{1$*T#X9%|y-lN)?It4TR97}yI;q$)5}r>UKg`*BSJ zNT(Wk=GScF7AyltE$m%E9ZhEXK{AW|QJX-dT{VP{$G5hlTcWj)Cc;lnfn$P5#`7k$ zMYA>^+qDNS`$IUT$g16}D#|8OXE!=gPMPn#p5I1a*Qdvr-v>U8eeDPuf#z6prbsEH ziz{EfdMeY>}FGo0-Y zYu>pT%bqVC+}me9Y#F*Xv%=w6ev~@vTB4=cg#lIZTKSQN5Sabu89IoyDYMr!~Ty3mCK#a z?Ez%%9FPzJBddo>d_DiZ=HduG5MC|8qD&l_>IYyPXgC7(6#I=S#%@r>r9D<=Axgux z6Z+B4kGj*N-|p)0`ZLt(()%kBoo3YNcaW*4?!0;k%hO?Ls|4?2{mQl2cyr-XfLE; z#oZ`)ikhzcth07Ms!Lau8c~JsLZR>~!=KpYhG*;H=u1~(=k<*F_L6gM|GYuDor*B# zutKl6)iKB?QP~6$#dR*Z?4e4l-})xOSHpzET*120Qy#Tmvrj0wo$aUh$Ip8{IJHLY z=*fbEMYj+;Z-2jQE4u0|sIKvyq_Rb9w-+z7`&GUGyKP3{X@eTZc&FC&s3+SYQK9ei zz|}bPOIO%#=Q}Eck2{C+ySpm8pMQ#MXrJ7_AWyU5dcy83(&u3X&q^^95x}*bud?&r zZu^6vvvX+aYG`v)d449q>#~FBv-$Faq(Z}YGO+okk>7qS+O>bm?^CDT@4UkO?7YQd zksZ5ZQPtbGh=BPy!|J-OO+Z0Vz3E8$?O+hA`d-VRAE#-}zoDuF4!MIFPrhTpLem7k z5$M2a&2k8x{vP^Rr?uD6@hc6aknD6^A>?{#)u|r*!nsw6Rbj~bv(T29f|HQ8QTmf;Nrc>%L;R4E(MC&N=c!F~PU3ul)Unz8N$BmCX zqPI?T9{SA{SHKR}A9&?D9x(Y{7AZALt(ZI~Tx#wWcum%kEBic}6h#%E2f5y`h751; z9(RbQ+5@#B$NWd3t*duuo@SyHe$chXJ$H zTz5@P+YwW0h6kIzL4geCZG|SK$8Ao z(}N(aB#{S~EAYDPdg0ex(Ns6+bsU*y_s$Oz`op9nhfW^GEOE~S$us)mVtIecv3>4X zVXUlaCl!Zxs~^E`;5#|4HZ|22-gwU^mV=)^7W|!r;AE zI${M_0s0L=-PP3C)PUmWP0Y4+iTU7r^8sVq4yU9KT+xOzqr&82&Dq4}4)5k`pbjx{ z3Zm;&_vWMk%q~M0AoS7^-gbF^uk%5aSKw)=p&2f8>&!>@{m^jl_W73w=?t=SXLy&M z7o+RT!pHJ{xlYY3PRDRlM^HF2&sWwYq?hS`aD!$66ShF`qOO&^^?OUj&S7EU4+lN% zr}q?k4n~@ZBz@n4BgZ2PWGafNNwUj5f~4Jb9fh99q>OM`h2^i3>0Rtm*$%u|yDN`3 ze8Q3+>&XtUI9#Qta=NZ3gj{>=n_DQj6;{;x?*x%0IqZA_PB)rQQwR?8$FdH`Ew4sZ zDt^HomS>q9?Vn3+;ogJK$ttWWjUI*Ow#_;p(cfOLYVZ@m?c~#?!DgkG zSY8AsbZm_}ZvnCLbCvNQ2$Z~i_0;u~I5hP-j;T|^Xk}+5d1>|(sc8{<`NxS^L=}WK z7Gv+5*4))hJBKLR-!lBjhN8+yxZNS+A6hV&J}fY-g%ka`rpl{{M)R#YhGUU~d5$Y0 z-gk>SPxdv3e|lqoMr73r6e{3GhXCP=C(XvQuE93a1c)leEe&mNdYbnih)mu!7`vPN zoQV=6w6W6c8VMKiX95T2HhS@h7a(q76+V39_*<4#m_mo(T zRJ?6(rHjukd&k{2``fbW^P0+$tST1#;hha<(t|Bdp#Z@rHE}f(6(UQqEy;cBcx8?e zskPLNntt*TN0$8&O`H8*2r|{@Eq;Ududdt3k^~{N8%Iv#$z?d9BfCGd6X^%bpDX0Z zREEvPkjC)LjTlasW?M&=jmPAfathJH&EAmhI=h6f*6{yT**$YXHBU4O1tD<{ZhhZl zD1g-X6CB!WOGT5glM}+hM4E;(VW{7uQo8HO$kQR3;tue%5)?xfZsj8QhD=T}oV_&g z&#Z7aZ&=918|`VMF}0FLFFx1RQ1z*?kvCWw-YnA`H3la)R1r_BX&CZ!J8GJ@X6sc6iNG|>khbv4UsA+<4@UU^??E`pegPxSwYBODqHhO*YU zb5je8Lr_$)qmpOHGMU@feX94x;+8k`NND=ay3e0r(rGsX>Oh;^wR6-WCoY-n1bwHv zv>aUHmaR_5s3`XZr{IVeZ5kgM3b$bww_N{b-9Dl!hpQK5DvN16DS5e*C(iMnJ9=6( zDS>A^s-5?JWg+O_sb4}_XNG|#t`#oKF0<|tczO^W&R}L!=^@bqmdx)YNs+yS1|KYi zY+VtQ`e{V8lr&2~+&14%+)IIXJ8$%LHBF$uyz2)|A%io()H9@L$@rHxU01@KQ&IR&iZhSqaYT^5c7W zdC7bl$4oP^bYi{m+Y**TmI?Zoob&fL3O3qSW!h4Snl0ga17_{W$}?`KU~LXcX0hdp zM)m`BE~5I7*5OXo*|t{%*NtBI{+Fp?6Y~t}$%g~6b63$`mwkd49d^ZKSpV`^C@5P( z)hL=7F$YW*%f!)%gZtPZAb`uVNpzT9*u$B@6UOcR#Q5!ms1D`qzYt#?k?rgMld^bw zqCkR|k=%r5b`MCtW0{U&&u*?aFk4{Loeo0JidgcJnb3^B^RU#WLyv)t#&0 zUH%I!2EHZ&|94M{L^7{V6G{$P&yeNLbUMG0H}$yY3#bS?GAwMggBAB{mQe8mY_N z>idP@|NZJ;$ocO}9Rl5y1f=C=V*_cl{)tKc?_+YR1vgdVtV{MyNg@OgdTRZDWM>}{ zcR{XC$5BSx5gEkSRgt$h|0jb{C)ra)0%4g)7tD-K`$I6Ew;dpA^vkRF|JWC% zkbkO@kjje>z1a=M0RLYik~(-G8nV=?G_>{0|4s~wgY)wt6VwuhPeE2MAmB?8M)!^B z*mrI1Kcl6iISj7<9ZJX_Vu5`DM8|@-)^m-wbcWeVV))hNW=H^&>o|6?p$hhY&zI>8 zbaf#yWRkf>Wq6U1vhcnBKaivSEF%*a7rFj-Q9|8Ufy(eEgArf=I(?7m@Op76`Dcvcf{^)5M?b=lyr0B9E>K44hi`V zx|aaM|5_|8wuF*QPJ25(=%OTieE5MtZDzX*e5!(-cR^swt15zz;uvp|(FJ7|anhL4 zT60ZtS=kq_|N9rCfH+kUOawY0wxBN`2ti=>dAalMnoDCb?dW_rz={c31QjN=^FUGT zVoIw3XvSA2y*qJAoR>Ym>~-1((w5f2Y;ppFi+)uLRzTfHbX zIm=UNbr%F~i!R(?6i#>pg~Bgoco4t|B9cW8ZzliWjhFu@{x#(fqCxXYOG_28na)K! z>RZHV3$kB~NTvk?gtmD|D{lRvN6UUzPqv?Efb+Z^$pG{5v}U_Sjje9GR9 zsv#^C8ynkS#x)Z$1XWlo4COf9=-kcJzvSZ(wb+Vs256|EgNKw99T;@^LvzM{1+`+= z5!vnde-gsfwP~70ukfPm+U5U}@K-lq^@j%L-!(L;5^4YkI$5*Wok{Xn2&HYM@mrwA z*+9n}DDc55xVSJCmjUE?ORw!|#oV!nRcRun=41FQ;oQ5srV>BXo@&K$s%r;dZ*a1^ zyiKMb0RQAQ2v&492V+*xlGuFpb3PJGKrMtd2t=0+A6z&vFvqRlz1}o77ds_AR@>KP zjSEpY5vRo($g}C`yRNrHRR$V&{y@ZhnN4+bz^d^Oc@a3aV-b{U(H-+sj>uPlKX7N> z{o7v9-;iFo{J8ix4yc8zk{@l+);BXXh>eCx`@)cQ=|oVDkO<&j;EYC42lEz8bR}d! z_g@^Ae5XMn&>mZDN9VJ7jZWpIN6zf5S8;lB)e`V&AFfqh?|0Tw;locLZ9tw5yJwBWP% z4>$nEehlo>t0{s1(XfyK>iex|cAh&AP>k$GVaOW6PT46FXoLzqxJIH!mo{O)vgxx4 z5CkI`a4R~dZBo^z=HK+%kQi1llGih=z$p^~eZT!dN0UVd|?Q^Fbs6 ztsMBIwWRd4(Cv4qsGz~S-KKBICX6KjkUd0 zR9}j9zY%|z9z=?vvs;t`{9OVj2SP8!&H6D22goLxz1_=wDWg_?Ndid{n`H1R)i=3N zZ!SP~UqF5&RK7PY2NCszaigC*E@xo3zaaAdThi>GF>nv0R%{o27_7X@@hVsnXhjWA zySq5ig9=s)OkHqzjrTfVw?Q;4y@z*|p-wXiixf4?Fr}_5jX-LJKMD@(zmNky;2~dj zX4OawV>7hH?UdzMQ&Strv&t?{}9{^<>(dDV>1{jA76eqDm~OpKTV)h*2WOK@*KG7wx9}8BCcz zPf>Zfu!+z)w| zF#$}fDqN9kplOi{pX^>Y@k?dv^0`v>DE=aNEqPFd)Z`-;T@+Yv3-bl)U4@(g3w z)bjla<%jb7xc+Oy%fGD%uR-4!1`YmPqV1rU1-QbA3t_kZ$df-gpA%B~24r3hlAJwD zJx)HSf|oMR^)IqXf~1SUSzP-qf$epsg%wmwvSpfqec`$tvyEaIpJp93r5Zc`%9DdA!C19u>4* zrgum_Ebq93Xww(8if$rg;6*-ouN>cfg%KB!NBZcFUK*Q%O zfvK?XNDB$I!>(&aLY4e%X%QABs#4m>eZ`$1&Q%6TgOQ7e98^$_mUeJYI0 zkE~_I9q}Yu7%&E+f(25aG3oUCbxz9<-b8A!jImchK+0Feh0$o19NP)A&jcS3ev||q#Z zCJwqxlLeBeHznw!WW5IFdaEKfMY=Bxz}s|e5po$0Z!b_zvsSTHU&{@Y(S~L|msm!d z8avHJxKOdzN8u6VcFB>Wf&5nI4gMm0z>r-1o= z_3M*T;ThS2=btAZy6McJ;%f1aU(mCS!PTqR`E~nk? zLhyr1xh;bPVJ0&V_FUE!3D+Pr0ak5xH)b}a98U#I)82P=Tn3}|sCTKA2){e}cdorZ z+F-NV6Ihc8l@wk{86nh&(-Fs<8X635MVP)LFBKV%<{tvmibD<$CRw`nZnRYyJot+Sm!Pk|31b%RH`lZVvo>tF%gIIKY21kSg6p zXdCCLEOV;3En*R97TpUI1M&J98j%sY=q zUX1LwF(MqIIqv?GS+$swUHqT(j<2`YEHAFUu?t|sz^px!!Xgu3XgpdWMuGFHZ0{N6 zxeaSH5JgUD016}Oo9Vp6^LSo7hYABhbe_CywEasI*b}xdRxFdNPyR;@tNaJWq_#)v zyz-nHN}I0obIadu15Vxvi}q>1ly(~FkUJACKie6hegl8RJCHCVxD<@Mh8{$Z{b)+pk)X@PVg@d`vw49|v z!(njHmpZ0xKKy2Xvf5OtAkK$=i`^z*qGN4@N(2l{0tXlL*RiqR2u3wd1UnHg(kcC# zZdZj_M`6u)pY#LRALTX$xYu%^x}vUSFVM8eCx2n zTm|R^b@vh%ef zlCYi7ndlvqygoLjv_9PJVWIBnK-RC+=xlDr7SCWxjVL6uFKw90(`1nGc14dkl3sju zA<=X|3odPM1v;uQNM(+=0Zvw$n1=f1K^&o<3}&(Mxyl>W3{vSKL2)G-*VuIA|+wc8#kmR%G2TlWH5NM;8`*Qw3Zr2?~w^H&)cN z8q9UwRz}2ZFiG3LV<4>nVIy)T9Q-4^Y3^LiMOtG@avj`tMff(ouj3d7G~wa=%27Ay zD$!~LvEAac7e(@Zunt_h=aqauFxzdlBFSB7PM=imsGqadTDHscWrpm>xTa08X>xXp3kumO2u8uuNI3k=O&iH8TIp4l6eP4C^0Lpe!0AtG zEvlpDWX_G=6UW4ZIV-CrG|Usqpb)u#2@xA=lBh%W=~hpiYp)c3BEio)>Z51eHZ{AV zs*P$WaRf33t?ic9_6_T_qc%XR3XwD>#Q4TKe*3PFe>Q5kXk^3FXhKG_AI)iVGojQP z#|qB;^{aFPcb?oktkee~fRmjrD}ZTXHXh#5QXCN|pQelnT$yCU{+0!{_#Ki$-eIQu zt<8${9v0d=1VIKnPC3Ry<%S{-5+EZLI>;HU$5BCSSwE*l2f?G8tdfy4u60ycpYx6R z4-G`*0p14?jUv3E?*v*JuxoWmH)r69%oDw=BfXW4xb2jGUNqj!aiSFy&GK9p zfv*}u1~~Yj)qz2;dqQ%C8Ya!WE|~I?J%Qup*U4tI%<(a0+f)%0)*X{=co^|&B$^?N zl3Ox4?Bmyl0FkOw=Rtwq*s9cVEvY|aHXtB@Hwl9$)s?}axt@< z^9S~o84}q$f0%94G2(GCFfbvw{WU^+h=f>e?Q4YpTP_lDQFn|1GHF6vq__(Sl0 zF7rCBUsa?sb{`gz7T~9M6a%)j&?`V9+zK!fuLSUzG$U@7B;f1=BPbNL(^3Qaa(bHN zKTPF$vk}eK8a4mUvZwISWRn!Iy&u&+*r)XcQlX8%jA%O;#Zy10SjJK$#2~{kVNGbB=WS5~L!wO)`x!HhUs;+knP5kk zJxOF#;LMj}se|*{DLCO8igZC#N0v;!S1lP6@ zIEE3!iZ`#_ZDHMGL^AA!E1B;A>CkL^DA_%??Q%W8Y5_6TR8LV4$r*JJ{{w@NbiojF zWFJvCkMVfxTLA8tvf0)qSo()j2|skQPwBFx>K58SMoBa~}%Wqb}3vi<| z8w{@2*>gnDXi?2-alRVme18U5+24ROQ)}~C)tQMSf|{w{x&CrFuA1U}5%3D@0mVjQ ztT?l~kO29ODLV`)y2i}KEa5lcn;Wdq6Y-zP@1)Hm>k7qs)De#*9= z4ZnaSDoYYA78(6`h4~{zMi#?*W;Zi+XAYa44ni{F1~@6O$Y*a$Sd~2HPnC}bNJtD-0?!WB8YNQjk*Rz6X{nPZXJCb;We{IuAE{p#D z?$cEaoZFNlE3qkxPc`~ zI2*6cRD%4b_XW|%jKKM+$x*6UvCtN5d3_i9{2pnGFpzt-ER;8rbi`v8NJ&qyVH=Cm ztpQDc7tp_U8qXqxO$nsb_&@^y`~lKp!m2TgrBN8{?{!Cm>{h0?Yh5gzvI2m&TXIM4 zWUhgGZq$5Bs~ovIuf{}Wk;s}@bwCDcRK34%)S5|-OJ&M8)xh;%!%z>)C zaC9_iR$I$6OW$5=Lv=9eG}=&<4UnGVvKC6{$8fNC^JS^ER&x*37hB2SQQztN^Liu4 z?*i>wp%H2K)SD)_4cUK1v5gh3*W^S_cOH#<)3Gc-=wM5`vRR4Cy^`-rvexqi5fQFj@Ks%$1RMsR9hew@|}WQrXK++Oef9 zwR+KgGnqwee^rm(SdlO}$A;jDERcuHqid{KN+Xt*ao3WDTbr8p6a+tNK}gx`D*c8V z&&#L`KR$eiF-mR$x}w}wl+i&uy|lf2J7zS^FB|4?iz55fi6y{lAIIfwW}TuJPlBdnj{&wNhf^ zY`8Hyi?h5Ny!Vp)j$nB3X3_vE1kJ4P6Mm>uU8C4bFcQbi&?_>1%O7!NrPRBpH^M?V z&V&@#X@=U;_Tm1;`no-+aEuXoNviJK%P5h%sO3}S=uXz%=2|HCU5mq&x=J{h?fxW^ z&8|#_*u5mm5s&(DusJ|q69+Lzsw{1sek}`D&T!Rf^~G;pBD%F^vU*q0l@zGnf|As73Kc8^fedve#O*o^ES!H)rs^7qG zy<7}OYuC=$ucgXyDIz6Dc;-52(82W%)5fhhC&{x)#21bPu}M7dYo|H7#5u^}e@agx z5`e>Xk~<0LGo`?QcBO%eK>r3BKirBB9TAU=6Uilje82o7%Cu(*>U~lnI z5H>Y4+@D)eL|-zYZYtn!4D1>-mc;$oMVd{C4flH`nU$rYl=0`o7v*kA&cd#_%br|B za;Y*ii`Jn1hCQ?xoKP@j17l{*@U8mT^9RiMY?3#{UG^dia2Urjkl_|oT@R^5afR7n zr1LE}8`(3By(sjtFh-KBkYgo<5ptn49v!ZwXeA-Tj2%i;Lu8E*bHK@-jxOs>AkxvU z9NOMjnC2`@%Ix+x>$NOu$}dGYMsJa=>8`qBuK=0u3VO=f0i_4Syr=Qh#5B^z_?HWEnc;)X_JJU*2EuI`~TkFV0* ztUrZ3XS%qnZwmTQ*ZWHAZ>Q#j0=VO6L?Qt+vnOG~0^+t=*sqlFEXPWiyHL5pr2M2A z9J%@ki;Cl%G1ASN0d*m?25}W1LeN0WX{gv+1;$Uc6wZ^9x=x1_NIq!NF*;Vq2$_KL>ukLyl(X z=e{eMdD3M%tj8#0_K=ws1OvWv#p=nyFp)QiNmwXwYG%G8Y#+~vB@%TV7-+P6gJeBFIzS^uF*DkRj-Oe&ynD6!bRF_BCr5MCxr3b_SV!8g`!Ux*0y+SHh zfFx;8^u;?+kGZwcDkRU2VqZwDxMQv$wuuAMbxD&^=~xQgFrTI{m9NqKdKB#~t}V>7 z$;R%J$=uzAq{;Z6i2s(-#DD$tJ^7o!18dZ5=gJe>KAq$%>N!5=`UnFtJ^1CU>dN0_x`IeJPfUid!(RN|w~O>JUv)@dOHvvglZVncahm0?3qF|p z#GyFfI2=SU!x|tMyO`QJC1W@ro2y z;u@;4MDrDjBXl{$otb}&q$XZzrhG?~$asQdQWcyJ;Gaq&|B5VX`b-B*IR8 zDOS~24qP_T>;-$*O9o1(5F6XGbcc`1z1l zg0L8+Wjl#HIh}T0Uc^Yz)Wwhp7+!lBt_E+;uM$ZW00&q?`sa^4hUvaByypW+q60)6d8+$Wr`=`DQ0gzOIs~X@P4%0DF6j@--aEk1=F>88J&$S&UavLTGOo9__%eAV2OLIU zAT_$bni*aIsc^Z_Y7MSDY{b1bC3Q2*BYRQKNoXvmVnFcw4g#vZL=X?gSz}N)pMJNy zE18o#Jc%prx^<9!y^5-;C4Dpm7P*}o71V(J_gLU!0>wMM!)ayl=;wHNY{5@lmg93- z*}99HV}t@ftu$ZaO%1ku&sR;5^;|Kl6o0dUjE^y?Kh^ZBoRsP0sBML9^=oo?AAIUu za!TQN!f9YKa;7I+!!~M9CH9y?0=6|qz1NOH*O~FIqV^jk>)dpj;m*j~iyA$0zyts^@mJnk& z!Z>agsTIL`TPq>|x{TUU%W}@&Uszn7rb*D~uXVSK$8Ssu)kusTF$l#Jb@927kz(G8 zrIcC!o6dfj4LQZ(K67fJsY?eaFXgEIwWv(#JqoYbyL1FF<2YgQDVmd@uxNU4=h?#i zqieO05U~s!&;D7GTA^uGfDmZFEvd=>qWbqtiW8QLpTU!Q%Q;Gt>JJu8-(|hyb?x7p z-MAB{gINt-X|rt;zGnlCTWR^>`(R*Qd_Ek!Zp4fdOJVEqWBa7m?7mMK>s`ti&o_jO zqz1Yy3Z8yzPWr~6KV2=!eyq?7qqmxc7hA50N>O zY5nT~SfYUGVmLB6pL?lPkUpeLi_{E#!j(yWgZ-J|4y)yQ#d(5c*^KQpubY?fR&1HWFTPpAWiK6fiiXdCIWh6`<5NL zCd@h$_8a>lNyuPml)GHqDj`lvndwBqq_cU3aGWm2l;^e16Os}TfdeHPxR+wvJkNiQ zEN*5Rp4P`W+rZ2X=$*ux>A#|W<5GG<(r<>fTUdayewarTVlR%4WORlx=L(xvyeu20 z4=$yea+k#?6i}`v5QJC85rZPjO~<}e%wl9LQrWXMD=!Czh(1w{HgK~6+1??;aF&)Z zm&E{BJG*qKzWi6D9(ZWs?m>G@Qnnv)Yig@i69(5kPjsxkr_6f9=tqJC*Bqmo|0HMa zWz>24^j#D`>ve;^D-3BUxt%=(fHS__3bM#7&33{^0FVcVN}USE6^mm!;4{l+`v=ge zvTc)2P^=85hMa4%?TT?m(-tmpx`bOQm`4*$;R4N@Dl8r z&WxMF2StPciLf9MI`H!H+EFKkn!Qi68pzTI!$A7W{UBIFf-C@<`7B6t4CuRB(G`b} zBjwwK(%$taOu!055C{aUJm{2#!cdh9i#r5rlv73!@=)?;C2qX_;!8zV%3UwfqdSs! zF{7^&iv%uNryD94C?o>r#QB~<%*AD+js&AcKiV+pCIn*>whdH~+!nwpZEPk)6B2LQ z1xG-}23lwYMF?8Mc_6K*N*dfc&KOJ4*^uF`mbt@08jcc1$}wPk1H(mAy0|-+$~DVC zR2k`0PJhz40-@$B9vcGYU#Uq`n#HZDH2W~Cl|UBVp%iDhDkh4tjwoh$DL%DQ@!pL0HZEPXKsIHSm$=DkDE<=qjV!x~4h5UlZ>3GeEWQl!;b^AvKQ&aC*bcR~yO! zqZOzbeEcrS&!lHG(fY#}r3TH!7*)z3gK6)n7M)rE#LP9hS&3@X#U3Sj$TtPRddK}S zMDO@<2f6=bD+J@3Y=;vj#fUk6={SYwNP#%g=d){f` z9|USf3D0~#R&rFZWcdch%SZWMW1cXHJ7vT{H&P-+SDv_r1-zg+ryH=?jN~J)6W=sV z^F-4NG2fg)J^Ct^pGq=}Hg1FOE?6ko9&p`SCq;wLI_O+4gM7%xg7zd-YPz4 zFI{Vxl-c}F#}&Pj&!qwPT{~!{Eimw=pu)BYkgoTOg+8p?Buj=^h{1+`Rsn#|CxXwH zf~#%B6C_gC8in8kDMj)euu_pj=!1Z)$SQdEEe6F>?;39E60j*zsSM1lS+TubVpu@J zYVFy>iQ_`Uu`W{*aOZ~7(E!750OU>CRTk;qT>yqgKoP=%ORf!bH^tK?&Cetjrt@F3 z0FgsLDr`vF)Fd9LwwmW*)J-LsY9xYySYV-Oz9d0ftzx-8EesGJ2gOzI;+YbOaMb2l z_X!%bMK@*R?f{7n6RXUNA%@d-vc7#?d9rsgnJ)PZC&OJVfwb(TRNpG^aAQ={geJTW z%CU?}>9|-OH@oX^I|%7#r5A@5K1p7d7J#Gmw4s^jOg5N)-fS;zgmnqvIKvKceo2A| zvwZwE0Cz35H{IxcnzKQ<{RV*m81xk&ZN`z`76G6gWwN!kuJW6fjha~qn5!Q@MMtd$ zs98QzwZTa|@hh9yl-W&a4B14V3M~w#pI9$O)iSmGi6tYoMu?BH=;T^HdXy4moLbHZ z1;$wJ7rzI8*=b_bU)oT_MBPTMAf#btT|MX-+G#fnq+PK{(~!eb2?pff;vgZ>hu4Dt zsYf_65Re@@w6_NxzxIhba_5yun7M{*LbEUUVg?b0MZ=UI@M?(1xT; zJ$)(n~0M2%APhwu~=Z~Xp)A`P>w83nYGzhCR|Ibubf$j6&D6&U6!-zX@^@|`ddt= zv~Jq>=nK=%5#~EFm8W5Ocxp?)nQAjlDt1s-u3${L&GehBy_?aO>cma9d49h1ioazb z0|DUZ4S#$otdH376_u}YE&_-Mh_p1O%&@lhx$s3xX-DZI9wD5bpzWbG6(G2YH+w%& zhSol|2(XS9XwmAxu!2-x<4+6kf@$?Z+nop= z3`+|tSs~0nE4Nb0Iiy?`0WLv@bd{p7ey$r3{Pe$|36sJF3<-ijAYgFdQ!Byq+b68g zLh(zG1n}BksI>MIzf|k&ELXINNog}Bu%b=@nO}oAIe~AaX-MrFXCG}GM*Bpjc2ORL zu_l{|xmhV=bBfC!g)1=Y^!Nd9p2#x6*ihnc(G`NpUxU=O&QF-!DZN`bZhOAbP(gvA zf>Q-S0UL8!Rl!a!$x@9NWfty%bdTXQwJU_Ud~8T%^a%-gHvE{1lI0o_ij_mS^kI_z zOq%{Y9ZA?ArJ1EEvNFUg8k*I`S6){<9@n=tyVwzFNtVi>9etFB;n3Fp(y5fuE7!zi z`IDOf5*D0jbj9?jD1d4>HR}^)F*;O0K=VlEl--MI)&=%>QAR$}HHXq~m$1P6wt@(N zey;$^k&m#(M?d1dhiDTV1b{ShWaoS~!IUuZJf3E8rK13*RyYw(m}TKiyOf5hy=Nh` z{m-rgxn?+yrwy}z)2D#Y{UpCwfDs7;1SVLr6fjE0@=Ob3zK1#gbwWQGHwr+o^rRM` zteo7U({Hh0){npE^(YEi=zl4EvC}bNg(CP62pAl=s8!Bzp@>DmrF_xiUg$0pkH<94 z-gPL$;${gw`H?VYg>NuftgIsW!4$|=zS2!JaXoF~RTC+*W+r^bIXIe;al=8x%qPAA z?6do_tErf*C3cLl7N3~-C4zut0*gW?5@s80H)wzp{ zmbfOKuMeEwO{0;sgb}qyZl{(2qj6c)JXvI_s>B9BnEt+{hs#g0$b5Jj#WJ-k0%zY7V*8tK~lr>-En*`*Z zkd_cCRNz(#R4^b334BKew0GnU0s)W-Sylio|FycG3Wv4at=2moN0I3O%IMqe<%(yz z)RDaV^R&%pNyuPWHdt~5n?dIPqBNu}Roed(-vo(or1*M4%lRN;3j@iYfW*lA7--3_ z0RJvu(@5KmRZ_DdO6V1@Lqpo^v^>IaO>>OM>z)~D^nY5sfMJ1PArR1i6staS2?7*L z&nHz>De0wYR~a><_WEdS1k$-XgOWZ<@(459n&bHa6qtPpy?=O3oZZU|3blAhEbmOmf==N8ahAxH8mv`K!2zWm1tEvnCK4T( zCXjGV$29op|9~Mw5C{bHA37tItRXXAV9#l4CY?gzrcv!a#X_1kSmHROSAv8$j_#<7 zhNFY<_X7#uY~}3r+Gg zn#}ML$U6#&M1g1&;zrWRKu9(+LL`$T14f&tjT>vckcQ7}OP?W(OQp+Ixh@sCZ%)ug zE@I>5Rdt82cEcy(zwS5=MiDWs)W-1J{5aIr8h*_HBy;ce`yCsN`m$8dvV z2=+(EJM?f(G0lX2n`ZH0f|zYUf-KIG&JsvU~S>@VPLj}IX0t( zXY`corii4?Z2^JR{d{y2MU8Rm0LkBS!0e#&q-zy<-F$7}RC4qOKKegkr6LFf0)`gF z2->Ca#V#Oe>OxO>6dZH_SExH^3_~cO7>S{TG_^o%u|-ocZGe)(ki1Ms_Vz}=rRG$6 zt!Y`Ke3(bxNPEw$4o$u}x~4ErPsP>^#>S(FMxR!cGUbLv0ToIR0@zYi5Gi^V>9k0{ zbEyz%6sJW%hD|i9;LOLR@$eFN2&B`%#u)H?FG8NedcbOW7lRAOdmjzq%2)Mo`lsf% zGT>vPb%ro$afM|l6AP8bR%Ox67SoRdM==DgO8G5~DCMb{TNEQt|48IY*J1vSGV(Ce zib5(OzbLL2#=dg)qhdz{OyPhn$aD9gq=3EQ^gFa>7X*XJA*sdqj}P6i=%Q!R({DT3)2IC za&5Ai9&Ja%`hi-X5UoezlStN(M{ShmSAbhDxI121mKD-C(GGtH{GCBJNirvoP^0MM z0R@5}9u{d!sW17o=@zh35d;DOLyI&f2N~Y=H@`FmgNqInm@o0D0E6+F@A=xypWh^4 ztees1$o3rTMgZzGQK~1&PbLIxg2sGBrS+^WqOZjF0Oj8m%R?!1bB&xUQR@Wb7=plf zTPAEIUkK%M_Kn1CW>pRQn0}v!T`3=lYgUeNnkG==9G^tFi)Bu)7CcEvG76ubRayeH zBaBqNEM?RKoc=?BEOb+U+eNB79M3vKTuC^<+dECrQ%t>AJox012z^O=oz|L3E#1>! z#mu}p{k0K3G5=3~D>mIh!tl9g_rG$Cog^f+AaK`Ad5;pf1Pc(-mD{nueL0vb04E59 znc`ZbEdl_^rb!3@Q}fRSPbe_W%3w4RI}?^fJ*;>_*59k51xBL6ZkjUD7{DW`TN;Hp48%;z}MZjC-rh zj-(t4iDFtu(20rFaS0TBMI6lOk5z z`h1c#o$)eT1eS^lUM?n=l&7*Ve;FR9yR?|Li)V+T096)9At6A z$|L~bSpg)`ioZ6=&w&yEY#b2+K=R)2n`P8-AU9)A_IX-o+bR$+6&RYF;xpE8os@xE z0T{Odco^xVM)Y_Bh@)Zcq*>xo$(eZ~kaAtu$C-bZV1Tx_sC-b$&D;|@jaqQfzULMa z&`I5WLICNAfa|x@YQX0}$R)oE4CX3>aLYiz&_W6Oxlen_<4WPV7StD)=HXHnxTxY3 z^%Z9>#r;|F4U6PS*LYtW5dnkM6hu%!ofi58z=q>MXtqHm;gUj|)&=oC#?G88bN?1R z*+=L5lUoOj4VMrmhC`mXQg(j|N&};wQ~(ietnrX^xzz{K1p|`ZrR%nVv;{Z|hvlO8 zIN!rLIux-1kSa*B4PRA!dN<{%4*lz*J*25CmCaQKq)dOLO#k5m7h6=UkVa~27u)Pv zj*Rq*Da*=fS6hGXu5FsOUxIJ6@sjvvj-;ulw+JMxe9{-3(Q);uiWwnk{?T%|Sz&F( zp zFzRS(_-UIcF>Ua+-~xtd_;~0P#g2PQ-&3s$2FmO!&omBL=?E4A0Yd|>A?**e=Y19- zgNqYM;~sc;Nkyt0LF0v*WFeG|ZsGBstjyn5-GpNX)W?h|d6zT@?vA42Il-YEG>zh$ zzR=$hxtYiSRMIsuC86Tu0@40%k$P0vLHb1-WgvHU6Xu^bm~o?lkNHovq4#MT?f!O+ z17}~my2{5LOJU(jSD2d$ep!e_t^#n9(5|N7add`v!gLVdp~&g)Yo6gI6rgobj-{|a zaB1znt#Gu+tJ9=wRe?@+qZ(aQ@&mSF& z5@=r0nw&T(w0lC4g9-GPz|xYul@ULxd;jeRRu%z(L0AEpIHqU<0G8n03_wN?5yW#w z+U}i*v4*&!n%kJ&mI?FD#-uM^{>>doyq=HW zXdr0MrEg|g%`)@j6h>>rZA5MnVErsH^xOfV23f(5~_ zLhvCFu;SpOp|UV8K1Gcr?9Qr+l7tb8Q7}AT7meYgN%*s|@z}Qv8O*N4;DR{_bhVu} z^AQPgcK2`AGlbe<{?ETjp6KBT>mtvico8G235Rb8D9DwNag!MBOEM%G(c=zrbnZou z3I_UnWWZ&rpi{Zm1p|f`mJo!pT|#Q za#t2~hHqSB>k6wpY52nG4Cx?4fB5n%9>q|mz8d*T;uDKxuK{CgEUmjD|ChA!+W77s z*GbxPtMe_9TN!XIy~}R^txKBk07*b#*3V2qi){|is^dbj1b`GTTmQ;EP4@#T&6fxO zb2BrK_3?6%+@gKZu&R^lLN(FyIJ1=jN&6;DWO5t@P-0#-tza_It`&eDW2BA;P0fB1 zCLTLX%Wp9C#{M6xB@!zYA}~nv7hnqms1n5#)EM1QX(c7MgL1s5vY`0(0Z%i!%jgnT zn04iXkTfTTPFb7lc{obeKZOVafq)eUA5#p0ijd+_^vQM8dmBAX-sn=RZ1~j$-2mOX$o^CnXD7D zmjJ0uzNXJALm5s`8NX#!8oAm}v43zZzb<;zrHj=_-vYAL+anRR!f4MVD>i3o1IjWX zllKY3uZ%Y^jsa-#t(mg2Qa0IRZE5AD{!&J%c$whT=BwDE07f3>9Mxi4F0lbmL0O}E zMH2vN@NN83xT4gzY-sA3IW{%_T3p$rBY$%Jw3WV945A^9@|5TXV|+z|1F{LrWw7U} zO^2{CPmc>)HylOzn*xhu|JTO#eewRU$@pZq4Y-(Lmxi4REfUKHi5xJ+XGwWX=ZgG# zLZ{UL8D7#c0$TpGqXg1lTF0dPj`6HL8v!4JK^QP>5PS#(tXTM{@-)RvF%*3r0%p{iMB1eB8Rb%u}=e2LK1f&lZZH*QT7~^eyjlS)15lQ9Pp*5 z9qDA@=8J$!)=(_lr5w}8m!=e#S38YyRw?OaDSz6uA4>Sjwq|;w%N~Sces!Le`_AD;ejM3*b zB`YJn?Io+iT0vfP^rdQOS#T_mbBMtY3O^Yvav65OBY|IV-Dr5DEm2JQ=HECL|s`2-dfPqg-*Y7N4 z9i*ll6ckeiX=zoSWjRghqde)tvy8%#ZuTW!IYs~+BQFcnmL?XF;wq$X8ayqt-1c1n z?%WdV0sen&^o2&^CxB}4liaB{0XsK8!*4QTX6fu6qzoH%Y{j=P znQI&;f#{I|C!+@bPcAdx|G6_iLwuxc9|rbuLnZA0Jf0%oO~%*scc9`jaz6qxb4vtR z%nE?EjfS?;kgN)9@Bj9D+c6*QC(hJsCSYOdsis7?fv``L>mo_B zvSF^~SI17DJm~j*4FAz zt4pot6FRt3(!!H0mN9E++6g2jFd1!nNFiyNL=>Qm_0i6qr$em+k{b)sH2Wayu(1Dl zEE6P=gZy>45&&?F4=E3s05CPsnrO@;<`9N9AC@yh(!<&;OR|@m&IoM{z1*h>gTLwah1q>!M{8Vu zTu>rLnf0Y*qK68ex{4VvX_QaFk2{ffw zjk|)^f0xGDCjdyRu0)1&!GrcRxsN0-ralnLRZP7GyPe^vw{Pf4b0BTmmUOF<99LSh z`Es76y%h0!4=0m}lnH|j?|m~oZ3W0GbdX!v7Ij274A>Kz>267TEAlOIl1ABgyOc>7 z)7OC9LgwuQ5Cs7Ao9rA=i)DZ#FOV_d?yJEh0OZ~obOOL98Wjit%KS&aBc?kt<4+h+ zY6&2e#$ddYa5No|B1mTJ$c^V@?c&35@)3*U)x+Ae7fY3K4ZDt?ApvMwmYDN^|a$9AjmI85qYli~J z43j3ja0*kR&XyD+LZ1W-KLiVbfE5FsLI)M6JW0}|aeQj5!BEdh0)B}T$f^#5Cw}yk zP+_qZoS>*se64jb+S*YzbIn#vqHq4D=l+uWf0J~$Hb6Q;KrJDyaz{;A2t$+zRvu9t z<};_z9`w8+%}m9O=F;lYu2F?d6U7YKFpW0UhR*>bY#L4I;z-@fH2?UwDv*+j;GOqv`1PiW_kS1|+i=?#h-et^hPk+T2er@H(>#T&FT&<>9UNld;{IIMD6#GvS zf%ssjy|M@Z-UjZ%Sh+0%B&X7^&I{7VKxd$gRF9{Je38w^Fft1YbNW z@H+b}GJIu8i*MIWd6>hjlf+k2pBPC>+r_G95fz!jMuALc%%C#9m?`m_1L8~INc$$U z$ec@5=%B?CXqFde^dXdo-)=zP!{MyZ2baURY<=Y-0J8S+KnVc5h5Y%Z69Cj=fSymM z-tFl|Bzw$PjEUD||2G}x0rq)$%IHd#fo2|sn8f0MIv11#4ph)U!}9jG905k-k~Dwh zG|=UH!4N1YKa(sS9iR#mFT>2*z?X+n9@kin1Q?_n4FL@ken>tTT)q>;>>S4uSmkI( z+E-7(Gc^K+1bs&ahPo61t2U%PFRNBkBReJNgO51^+t0Jmd#*6bkr(~$;~rdPrix`r zHAfhKO}-h7v_qTj<8FLHVcB%g&FCv75CgB&s&` zaGDl`+8@RQ1hW_b#7bJqh%7XqPwnlB17S?*jAOZ&Zv%v{I9Zko-!!9PBpDl(#Yj_M z%AYg7u5!4T=VI8v6^UZ<&%z4van0+=g#xbShn6ob&2075#$P!FSC6MnI;ph9SRY8E z#`m34pdF#QPFtBPdVXVNp8r9rI? zs4xI=+{9s_Fg7(2WKo7bqN$j#0qKlAw-TV=%r;EwNZZkNv}i^ZuT9jp(1V8I-E5>G zycg5x2dI?<>mb(C0?{~F^nbvhAXo?l3=Vu$w5ZM%;!APi3Fph-7d8vE!>KFf$ww-K z@|4Fz7b+fBC(JL5&CXs(W4VlyHislWXRK)$;|Li0=3?x*fFQ1mrynJUg4Xdlx_4-y z%XC68Aa*dQlWvU87xMNc%)7{(CepO@Y0H;(v{RbA$v3R|dr6j+wat7U@8z6* zlP+zPxZ|dXqC^AZl)UwBx?b9rc}U6MerdI&_AT@X}&!(4L<6#*!QmV zvuI*{d8rh7!}k~Be(X&{(KR%t5p?{l=~;GRk9M8g1AFh3<7BWTpwE)PIg4ch7Y;}c z25o9t#lip@B-T6-L4ht5K;J2K8&c-LYrAlD;H7bzw%Fv_8b27vf9;64F_Za4BG{sy9gN*f%FZwLXTfLZ8E zg>;&fj}_&qh>OFL(pU*_RmU}*d{bJpCgW2|T83zNHchN<$};`a>gk&PD-&6UloSV! zA(Qq#iy+4}OqJ)I@Egb zqO}r*hwCawlbG?D@6+oAX%oc)0_wX!%ff(SZWW;4B})k&Chca1xIrYiHWp-DUIPY< zz9R#nu>*>Q681m{6FH0a5}tk0mnS^?H$3mt=r>onBudsL7y--6rBreWQ!+4ln&quo zIOAxUHiZG2rKhzg4@Y~dj6#Fxnfp0#`6%FNx*Qxve{GYxq=1@j>hUwN63{GBahOmd zgl*WGl_R2^C~c&C<476{oU_d$XyXl_9M40v-b+*5B@4-_gX3xVnnaqeIz!rNT6WiO zIHvzlwY!hK^(~oMmvEnkU!@GkwB?RFu`|=A47D`)T|J(*X{nUn<*nqZA%q%AjI3+= zCv3J{61(-1bdswEBVhqei?$s1+^@+y#nMi0G@!x)GcNrr33K?Z1E$9V-WO(`c7H>R z<9?r&`|$Pu&=LTe5dh}4q%E_2>Ku^!8PFC1posuMX3i1st#95Unn&mb3e{C}Sk>CL7PW2?=KvG7Vai(?Q0t_)NNf9DgOYjAg9)sY+hnw=d zt_+l{1h@qOZwr^OfT!z(V&zTSAOoMe!V!)P1oRKSy$>nxeFAYB$CYPRwUly{(M7*W z+=@>akcGl6rtPv&>7@J-qi->tnmtDwOB9qbt6*z0t(U~KOJ(DXIcL}<{{sB>0+%HL z4R84zFgC_Qv2-HHFt%Zp94%1F^nx3G=T$TW2$q8%A~0cNLBXs`tYC5VtE9}7+B$7h zbd4=!*l=;8dY`z&HNvIQX^Y3qnj~?R5zcN&UQ?U(l!P1w=1(;APb>+{ z-28$W>Ag0ND40S6=~_vO*9TFp&_)LAH9x``U8l2mNCPeK{Xlfq`um?GLV#C5di=>PQcIa^Wy`ii@-h$HR{rGx+qT{J;&3L)Q>(Y)K?~-pd*WVk%#9Tix%3I3xXxaQ^=3) z$q6kXtj|V1O8BlEG>k_GK))Gfh>~Ra_?#3PRs*iKcY$t*BqPP%MSpc6j%@yBx359} zaIOcAcFV%~x)hq3>+OlZk|D`IvQ$B;vg@0R^&05(ch!MId6vYXKpMN@V{PGRFQ05H z%U0m(Be#xMXL^^OV-~Hfi{VSlD@*NN-`$(2$@ZJAESHdK4ihary<>oi5V%W0+b)4G zXPOBLw7{&x5;J5GB$#nbA%cCIfvay^ZCR}N%aztjA^@~wHPbx4WZIvEHy!iAuoy_5 zC80*dXuD@7O*_8vNAT5S@BfrRrfF$m|5rv?C5s2iXOa(`5%w{|Y3J;td=n;{A0aT0 z3>a-ktT^b62h>kQLZ>mG2##SJ&o?4y;8!b3=Kemx0B;v=QIP2d1IZzx6^VTtE}Q6T zj$k1WFfgc$?|ih7kFwSt`V1c0D-F^T(p@>xFZQ!TuXRbd)Z~Nnagy+fD%gJV&Z%nTdDNQ(?UoYh49wgJ^gjc z^iP=RD5SFb$Cf&qf(N+<%81WvV)_A~f{1Ka6eewvF#NWFfu>#De9|fJ9nyF2in9U< z07cSgXZFqTw&(xE|VrrTxeE}e<@nZ=veKH5SKnYku6H<0$_LnIa~umvD?hUgg1{LH`T z2T2eT@c2HsECO6*F*=71F_-YcMfU`(5Cnlhz~IA254rZ&EE-dv(#0i+Pus(_@K;Jd zP4K`q!BXC?v?OV08l&f-J*ZGQ+K)M7DjpG#Xj(&>Ur19BBxKg+J0$qhkpbyyLSB}* z+EEztYzPf>A{;QwsjO=Vm16^wuKKaMk+q*8B+w~)TNd>xhii-vWAHZ1A{)svCHPc^ zFx3Wg`n$>pmcEPmUD;3=7;U9J{pDM}HCrB4N*`uvCvJ8w*H>DAwKKF?!u~MzIwf6r zdO%yX;Y_xazx`Iy>$^ei1?2wKVrs7bR)zo~$;0*)0K+GM7W@=QW#wP};~^9_p66 z6tgTTa4aJ(*+&{<&*Kcn^!JsW3kT@?p@g(#r0Gl3>g!^=eXJ2+(-cyBn`1>{h?Vm> z&4a$XC44R7W9X$C>XdL>A0bGt>^rnlSj( zq)(`~=mUT|=~Ke~p9tvFuD^3?t69?;X7sELsJXq*azF~htp&{61xPw<=$O|nCR%)P zSZTzLoP8kfoJy9AQS=Ta`(nV4g`Y0hT+)tzCed;TTwvfu<;x@7fGi=JuZWihg zkfbG!MF+JWDIe%jLy75@&iqreekyeE-5_Aab--bLXN92_0m_pQy{gdFMzqY)U+%;) zE;}n%-2OTd6u^;}m9eB^PMdG52-4Uu8ZNENQ>Mg_O#ig<4+Z+8C-t>69R0`{N1qPV zm4{9DCYojbE_%;dW}RuGq%nT3TBnIQvZl|!^tGBK2JlaRCFW!cw3KD)FRzn{P{AyR zBJpfSpSQiwuK*3}vLJv^COD2C*frd2MikeoC+2ZL0VSR zG$mQyxuAqRvT8KoSZ0+YU02++^10r-Hd~z%cUYkqHCM5c4wrg}f9KCqgGve&DZi}r zp^x%PQxy5=fV6gYJ-eu6W!FF2bB#^drTAdS5416T?juZq)o&j5M0QfcM z(rp7!Hgm4ou>j@pF<{)d5NixnB1bADqzZ{>9zSX~Btnl^IKt#nAeI_j8DI=Y*P@V> z=U4?H3|(=`xxTyPC0W+wv~mq(`b%XWY@zsIqQ7*NYajJ3A-?wG-;;kTldk~jy%KZc zC3h{pX}#wXJ!zJ%j{@*Z#0B=kF~(hNxobPp&i;eY*1QL#JWTKBX8UtyKYGUn0lp&u zE+>WVyAfP1k%nPR0B{pOV?#_{0m`xlkn2XnNtzX226MHwJ>w^%DK_b6N(nH*0ej`l z0|K)g{Z)ojJ`{uka-T=$_wo2)Oupf*Ul0cHw2YEdhkvnvKwB0Nye>37$p--!UKqp6 zx>hnBzOXLqhqSm^1r1i^xOr&O^(;K8H;S0f0huu%9|E%Ud0>pREB&l-I9yt&G@dps zuVM*3AK5T0#&udD($*Tj8c`&9|rd_GF1^&La5N!XBGNx}-d5rnSAq z`FIAnaxAFgd4Hy1&|r1SP(H3apbT)d=5t|y%WBN!gT@u!RY#}r&?A*FHa5v?t~68% zebMjvPZBhUr_~(N5KZgeV)mM}HFiZ$|EvOnp@eH}W`#>;EV1CylJ09as+sPOiMU=N z6o7A287KvyGj0Y+x^5YIlC~1kFt=-ESOVDFsM(VC95jywXcEsXQ6eCajt|(a#>EiI zYh?g&oVW-EX@p{sR{$P=1rPwyhGFpfiOD@LFFmI(G0x^Og6sr9U-^}1I~w*-!rv^DvsfWHir8aS5#``%aLHDdj*$kEb__NiR+6Oo z(ojO#TvVV#;9{BWvv%SPG_}ez7LU}UJe_~M}_UUShf$Z&R%)T#=6*2u?>-xmjXj)Fxm9GnWu~Pa&4n7VOf+9 zwZ4$f|7YtDcNm>AgB2^e>69=n4`~#x0t7&`vGF^A4asyNMZyeI({uASfxh(V?E^3v zMBDsc>I;(zETp6P?GGw;;z#Ra@BfPJ|H_k>X!h8G2!B~@ zYlEl`iRA#TqbW!*92=5hr{rZJzIKp1M&$JyZ1DDWSx<1JhLOH!W$Xe51x^bAX$h0U zNWubNdfKt+Nbr4ALK%JO_=HNu5HnJK{oz5mP(>mah6Gs^9B?#-kJ`;bx!bAj(Mq0s4-Pq9k7~FfbW8ZOv-1 z(YT5e07lc&>x7bxlin~uuk$m;0lPUs*4ArwBtR&R;jl1b{1q#QHmwspXZ-mM1N@9W zb@UgNkqZiVd-5X!w0=fCbuzYn8hqbT0)N}u+H|A*kskvhC~@|E?7UGn@0XZ&AN>9# zB$rZK%O0#KIkfMjk&X=$<= zDzYZ>|0|=U@?0`S5m_A%+Q$rN`OTJ%L?2OE>3=W;L8}P?pt;!{tDh#}NS!&etSu?F zTN7h5a=yAyrkm!Qj0Mf4`=&BN5kWxmUMfSRad)kriI74$g$haOnSdk`I5I&4HI28= z``i8wj1udl>@>X9gaVUoSOLUz1gA~Rn+D9hvk5OGp$jjM``Ct@CVei-N@Md z7&Lf~3{Xgte_uEXNlW9)Crw*0Slf7-;6YjjeS#8;naEIA?HJ=O0m%v@9DTxbDXfd8 z@vAc273I&xG>Vju>n|^}OX!d#yiO@gT6=3pIek(&iJFtX`O?%vd=e(!bI3bMO06C1 zcWhB0SqBLIW4NE3_%FXHfcqRE-|0Ka!J*M@Gz}k<&I)G?3oeYHM>2SmIySM?`LF%! z$LfYG45CA3Ji4T*4a3AAmCIpjnNRcsxJ5uUBCL!14>g z%1%uIiSxbW%0S8#a{?erA_;3U_-1>U9`H5U*EKW!Pr}1sGI{ZB2Z{WsqjbieA1mND zDMWQj>Sos8yoJH-KcENhZunA{R$ghz zPmAN@Nwp(wIMU?LK7JOCdD1VWRmQbn^2++smj;hdqLe0}*Nz5|7+p9zR@#51f#ge1 ziZA7pl@^ug3oVpa-p9>!eKe^O!od8iSX)R+0ftynrH1I<(9 z{sPQ2O!iwUgR+D%X+j;t1H908+VGo@l#y?swttD$gaFWd1rrDYVphj*=&{e*CxU}m z2*f-DOB#CHa?fPcdEE_$)3N_kNx12JUOP4HwlF{$^@ten=*&Hc`AO&h zY5kI;5%fDPqug$Ygg4QM*0j8&d*cQ)1qrk*vp5HoEC8hME~YLF0L*`osBz^=L7=4iGnI_mtV{%=~s!yAti-@a*iQ

lOl5cY33M^Qu8A6yQQhsvR(C1hZH=eO?*ETMO?5p|sI7TmtTBDyzGc zF#n~6iu9@BRMFENp9Z*=fUN6j)}if7x4+Y$FL%D_Pk#?pKW7oF@VaaF^f%sRZ4(|& zInBd)nPi5M|8`plthy9{X5W&2Q9?|`mzzRA*!~ricyod5Hc(<;llHbZDoHrt>eDp8 z5Qqgok$}P+Sy6ct-vscC_Em@gpc|IvWo12Kd{;ypt_dSdlXZ=|#4(|L3jrHHDzP%K z&zWn-{!f|ALceLYCuVk$QTe;|6I$7xDgRvEZ4C5l|$oBLm8_v_V*^I3&I?Yv1`8 z`7~idu>@jPg4-v%2iqpVmSx}8?vgQU_tI`W>y&=VQa4d$ql5ybb!HkZB<1C!w_JN? zn#9Q^8RGl7@`O`GwQU2m_J$39_ybgmBYv;3KQ0a$Hu*=A<;O#+HA_(>inBdcOYKhkz{{{V?qfY5rz zIX}n#UwF|cFfbX=H2BM}@D)A2>GQU)S<#8zJ`kUM)pxAK@ zx5k}Y7Z`#Eg9xK}DC?W#*MOE!>J#oaKysW&%j)i1IO~zs5u@!R!|0fR6%5NlAWbf= zJxf;_^X?Ne!10X|53ViTHGZ;aWsow?(umM3!jUZF*hdhi%@0nVxcGO=WGRiVkrGKO zyo;fCrRSoLeDS3+E6+Zgr2|~_85K5U>6|Qz2kE`a&_;0dkHk6ogfxoP%hguWgeHGQ zUjXd8^0b-s-C(BaHGV0=2F=1yO?$kCXtOF3GscMW6iEHGjaC8L6%imM!zW$v|?J zILj4tY4_R>2?e0i!peEbtY-9o>ReDW4L=nGBsUHut?MeQIZEj~utO5Y%h1Nt6cT1# z8!?pe*WEhqnM7|VkaJ$m2>_++&6IA&jNnrRX*9h`(7Yu8akzw`weyY6$=fFP1%VIW z-wi^6n$af&fi}u-It6s~KXvpMy{A45Vk-ewmx!S@1q!A>iZb7l*Laf2>RJq^q=Yi-l(JLiT_+5%G2d!jo1p!s8VMsU5TIshnk!+QhZIN#7`A3&IR?rV>cBzY;U(GDlb9 z0=beX0G-y;{t>_p-{F`Ck|>0;@JWqnn)Xo*%Dhts-lqK$;f;0*ZIbxf68NMeIf@`K z9Zru15Ud1-F#({ZJiu1ID4J(ubuNUOFwLZe#IxRZvb@X@)2p?1l(+EBFe}tadPHlS zyhg>W$;Qvyl zk94%bNK^PNrQy52kZb?5Tz@E941C&%oM8m<+ChncazWx>;9M4xzdpXsm9{I4w7sWo z?OEXBeWhm~5$cMU^}9=M?20RHYfPX_f4j~!iD?u=&j`O`#?2+&K@lC4mcP_ED&sd! zA4&s^hlOL{r7_lkO{x&z&WkL@g$gtr<09@((r$6ytO#@Jy?$ z!dYLK!JhuUXTZJJ3l{$};%At*P;0P0I`i$_(sddiEd=5GVkb3^M ze-r>`z7zJGj$7$MK>&n-PnddHV5W^(pv5pC775yNKA7~4HjWHvQYur}leLw!@JouJ zynQ)L2mr<7!Z8*-RG%W})4*)=V+p$|FwZ7so;ch~^56n{)4`t-zA2*(l_d;F7(-3U zZ|?uvP#DNJ8c|_E!tl}~28J_5O};Z_gtKP^%YY~!mkB&|f=G`Gh{q!}%ZCm*C1}^V zT#NYiQi`omE3bkg{ofe^Sp z{!t=}$qG&lRXYAw8!h1Si zy|>V4lcu4JIW3epoH>I}$D=Uk4dDk#U-9(FjQ~a;3G>f6|Al?9zw>`}g>R~-?IFd= zF?qcHOn+DTv+k)w+0R*)N#$uXIF>1ywbEj{q%Cn^gt=V~+f+Q=JbjQU0Ka$2Qp+fRo#j#{d zgjJaUAf{>2W^Ad(1p+`RBdvr%Q-x=cXBdomoQmQ?0rR(XD*))xK8ry$g$hPAgK196 zW6poY(v$ng(sCP)3$|sn3sQ+j0UAHYuSztl<#(9zM(eM9=hyIaU4T1n& zJF{+CWsR)8=A2$p5dzfwI~|Z4L)kYoS~TnKC+q!0be7<~8Mspiv6S=zc&I#8`>mOr z>bIiFG-kG1Se5eE!T3k1WXr?aVZr&gsr!b`#wu1^#91 zZ-Mjczj`)D~^ z*%P2%C-^qf`J4dkOWckyDg5`6{wV@LQ;n_c(+mu%6T7ofSx4E15d#O~)pwrcIdq%P zN-!v@ooi}Z+a1bcBNhQ;5nzGmTM)=)9>KySFL)y__j9+u#t-X}`>uLhR4c~X(y;5j z<&9Hsym}Bl74XW!S5V;A)|YJsFIN;!hbOk@2$X%LmgD_f1))D6w17az{_y*Y)um&H zFM;z{IPAn$gZ{mQ4hvT0z6x?`Ntx)~m30Fmq*y^RNeB?RlVLa?d59d>qd9G!*8si0 zN_2uE#;ejF4fD96TLOsRf4j0(M=3;$Wyex^FTN>!yLXLcTp9yX&VEk?Y0V2*S?Y z_T{?Ld`U}|XSW$O!zjD>@u1Vzhs?A+GEfCdKA6CSN$>OF_su$X(feB>z4lps%GcHTf zYv>FXmqSF`?FF4nIOo6KcV`upG?S8g1I~S3Lz59;BIc)Zo0*m)!fxyAc^8*BQ~h1U znG6BZr0eL{)s1APrSxw36#ng~F#|)A>|USQdmxnT!~6T8{@bE~%_Mq9Qy!CdpI^|- zi8K_H9x=52W&Z!$z=CdVP`rE^(p}m=a{AxeV}Egf-qzMz-JI4)rCe4OUsj3_ zK>4`~>@Su8y2Y>CM^(yI-#(K7GL(h0Cj>bt~?#G9rSJ~{BEi2I#t+89snGmE4*&2J1c+Z z-&y~oD9fjgl?!8;nE#Fi3NfC0aGYl9*g-nwD-E+?8eelZ)rwr-4S3J-Ou%e{Xi<%F zMH!BoK6y0=K;srVYy9mNflsa=?09gwO7Z0kfoUO175s<{|Ais^I8;!4xal0X@G?}D zkkJWeF)Z6A;&$~_>^we*JB7)}dZV9zGu@RQP2zSRe-l^z9_!N>N?ywu8>JerlvESz zmS2dg0DOM#)^}wbnCjap>ne^>8PQCfZlb6>a?K6nJ1@@jmc*Xl5Y8n(}M^@IL-7uKGQN$xGll&3EMg|H4m&eW)M@ zZ~DV8?`8o&KX=%7r=v`D?1U8`*tuQa@d9?k_$PZqN29p(!^bv{4q)bTLE(CqT`qY| z-(L{;i0JC0#`710s(lf^i*lZBi%V(4FZ{zo_hMwN`bpNLb00RAY*X4QbjkV|g495-3g6De;_LV;_yc?WA5aMhZP);|v7yelH>pt~WXWpZ(6?iHH+T2~0m%xk! zGIadNi@dS{j3P@c9;eSY=oG8zz|~C0(^s$858m>czCRse_?^Y??}DKJ!$Z4e;C0Eg zf%VzI)_z6*O-m^Lo`3+AMwQcv2Hn!m<#+Y&zyl+e|3a^uJ3lL91(1vW+cbx7mVc$x zah^q48}bV*(*+SHi8aJvm^6h6#P4Lp2^pGJOX$4{?5{;2*YGO%WU3y@>cfGyS`` z_SoNlWSGDfMW34t5an;A`EV;s6KU-W&QVyfRrik9ynmqt@WQOr3B2Fr00Cu%$SYEQ z{Z@gk&@^>XHu9AtTIiW49&`$M1Kc&uD0XcrQ zd~+R78xzo^_9ZS_G{8bStZ>UV=Q*GHk060V`kW3Zmk$d>xmXM*yh`!KLa(k$?7mG( z{LS*uhYczZu5zH@zfG9=n}q+}BHRQOwKU!=9$jC*#NoiKSF!CE%TOoKC>9+Jdsq2? z2SnjAUg+V?J*_Fv7-W$lotcf+{};~y_gT@O&L^k`u+aLr(sms*Sh7bj!G-~^P^Nff zW|NV?E(255t($NiOoF<4)*A3(r>6vX z7;fXq_v`2Xhw=aE;S<1G#p|#_e^?iO)%5S`{&(oR+dBF(K5u|Zr5FCvYN;{%{PGak z%0zP~xNPHyp#K61pgUn#mFM5*0IS`3ue18a6nD|OW4$LT?*G^EAE_J#{@9myMt7ti zy8Synn*arHyMWqaVDx*s-Y~cEZz=#dQ&#<>I=YEC9qNusJ}SDWZn%9Qd+9lV12r$( zr{$BJzV_!!a-Hn~>YRhTb)a5fm-nnkl0jE})3tsp=5C{(GXyO26$Vb~RfJ4K%-eRl zoQB4Ca{_-TClD^nwF1u;`tDFb6(;Ndi)R4eY|zCyFYLeY7la>xz{MJiK?zLL(x|=# zu~mL=4SSrh)vmrOjw;U{(tTvjcwEkJxUmU#FY~!Xm=vbl838ZA!FRSMD2pu{REpB( zO}&wL>R+n-@VApdZ_=ae90gVoQM9Ua+ey;^P5@_#5T5B~u`n;0-x{+5ESESGXylUASR`-|3G}r~hr; z`DBgxvuVt2wqcD&S}8ViPL$8qU4{b6!Ch=kd^jMh6Oiw&u|FXJyf7_d??g|vRT_1@j6nOeuArdc(-rrCF2p&6=6im{1 zP`;7Vp9Aogf=KjnMGprB{HquC{(hBrqd3F~2CH=C8|!xg|M&I+ z1`y7O#Tyc)^GURPo$I2FB9Yq`JvdODjZhZhF~hwkcqIR|hJU^Q2jAJ6Ac0$dW3B&% zKPLP*RPY07@+O?#mdl&+{^>h!o;ltN{y(L==}9)Q_=#o{OM96YH#y_=EP*L>C#S!L zt9v&wQw30@Ls*5vcQx3s;>zpii-evkJ;doyvd+NtLdzKHF%3v8ryKO0VIzhCifLZ7 zvti=j04W^HuUp$XuqjN-;I0;R*JIV`_i=grTF@z;(fGXqg&)oTuKge6@lOt)vNgX< z=NEj=escQT<9hIS19`eOPt$*%ug%Ijy$n-jIQXa~IgPxTAd`Msv06^U?P~-42A8^jVmjc_~ zchU6+x2}uxs{{Z#=q4%f*uv&F3rOxwj|C|3_>SicRwRmyc`E9S!i-l98jVQ+6(Y~A z<1VjU-n}jRDESVGH>87;`VYW?d0X-jIPvi80#EhBywF1eZ)wQJG0)8faDeM{>UQFG z%K zfPL3I$?Nu{Oe=|64g9WsoW^Og+_X}=#8Y+uruI2)A3)cB3^z~Q?!1cBjkFGN8#YJ~ z6o<-lI0U!@;L4Vs2W9gWC;FN1|Mc)Wz06Bb*sy< z6?cx;K|h#xv@s9_U?3p3vVsC<3qn0h;KY6t08lkOdHt0FfYnu^wSe5(w_ZikMvsE8 zEdgh~Xbm856Ik=B^GM=>@|K>R@67NHg;vny82xiSIX6k9K=jbx%hF5UwDX_h-j?kSGg5imCEmXw+;BIJ*QtK? z2T%X+02F_8=<4}8{S}S*ePM6jv$1tkVvD02u~^bFaFLKQMz^K2-K?ut(-$}()iA?=AGlOd}3Tg z|7Zb#Oq1$q4xjYfja^#9+SL0V-JV%-Cy3t!oLA*HwIy`C5OF$- z=q=yr`)%6*AF%d`JoB-2U#v&dfrDfI3rNK~$DX!R6Zmp z21HC}7F>qGExcke{uuvv3NH#bhe_o2VcM$n-+jSp)q_S06cI2RKyLO=5uPNQ5HifLF4FvwhVkdbP6>8 zzG0J7V7;SL{9p2B6ZNI_`{t@_c9#vN!!&OPr=fDM6n&)t-K?k)8Vq>Z zGNAIm(L@~<_i=Do@0Rcg1Jt`U*u+5YB-07h*TxrJURQozd+YO5KUMZLK_}_mA0|>X z^;PwI(HKmmSw9ERNuI&=Auu)N?ZX@kRZg65Mr5=l-$S3Uhu_4*Y#2t-438TiY9DmT zKQVOp+AYllG@FH0I%Ujgtw&?0?pDr$xd$o`C zCj5RS6jV?I`mO*V7}=QD_c;Ip068`9uRj+3Fe7Jtm3s#?L@Cpf0&WQmSSh-L1G5J} zr~F$17A&WxdSq@Z{Gl1%SYikqQl1?0tpip70zR9d zf{;l1NZS|iT0*m|-0$(rd@gF-+y#{vDt`E~WkBVx-gj3uKJnoH!k-q>Ed!I_sMwhe z@$ucHi}5$V61wndz_UZ(_>5tiOLWU8nJSoBk6!RqK8kyX)Kl2gUO1cR9@)>zwWZ zuZNOd_tbtW0N5Wa06cI2RH0Fk&wJzXz3un;OVC@qBcLu*S$mQvf9HwFMG!+CT{I_JfIKXLt6+Yj2C2L1yE{_>Ev3`~OKi?ZIa&2GVevECTv z{i>&N`BEqPK#Azw*)eo<$NKAeUDCBK^1tg@ z8iP`^z#b1|_oPpS=i-YS(!f^j7~&o!ZjBS^((41H}O*?nX*}5$Y8ufwXQ9 zb#a=xRuy`s0i-d!Ea7op#?<-hR9hH|K&`rWai8xSzX>H2tD zo+m)!6Qko1C}!fkob&UN$4eZx;&=79l|3!OO2)wQCMEs#-6wS6IuwHo#jy}_)>>;! z$0=n7*2I%|N(Scoew(V*g%0fgOse#YG7nG!aORo3uDh2yC3DQ4t9nf{*?l=9q7zZ-zy z&3g9T>2Hry*oG2kF6YkcRb2je7XUsO1xTGp zZ}Xyt@p7q(_TDaw3N$cCpKk@|K>^!&<##Hcij&JdqbbMh1ptH~ew_ed^tV}9(|$;N z-}Q16M_Nk=h6~Pv`hF{uwcYvL|F7c@z3wi6o78q)Cs6P<5*$xB?0^SYFE!t+$7037%GDW6vhxl$~4T}X+UEb?kUwDRui z7zx*VI-7tM>9jZcvaRvu-IRY<$J8fey)7PcLq8(G(`~s-G!@316uo0U6HqS7Y$abg zI3F|?HmP~D04QUElDtEdF$G1JNlxmtpSUxRaeatcKL2DMm*=Q5c?fzgz~4Q~QjB}N zDoaLPtm02Vf?aqxi>1H&y4nq~8@S!YRrKrVew+T*+xW1Ju*{E5klC&5!{q__+oF{hZGTSYScGwuJ=*a<6}K3()mlzZulHUCDZTH|5XtQuPX{05sw6z9{~K!#-4S z!Zk6x^u=G@Um=A0tDEpANR_^10kkwpvd4D|xBg z2kz&%a*NVNV~Epf zN@2ZRWS13ppzCd1eHw1#dXGVhA2>I-`HM$b&mTIa-$Yy+ce~8ehpFA4On)Ed0)qqIu%=qMV|6<7_U+28JF#KWx(OA3h5+!u z0Yb(LN)d9&bWr5G5*^ZeQNB;ANVTbpG=l(mJ)k-`kaK5`0*sG&Vwwdd;kgJ{$9e0) zuND9lx8ZStulbrKRPssbPvpjNN$_1znPFu%ADIpJ{+}}0lCJjjI|!CPWU#7K8z_@} zkm2sZ0o<#HAEK87y55(>d%h_?vhwQM*DJ$N^Md*Hg+I-{hD_bK4;1VoGzZch8MM>+UJapa+D zocf&KC*cNW@Z4c#WtaUbXINFlr*gYIC-?nnpLi=2)4{vg-jtt-K|=#ndQ=b^=4$PZ z%XnmISeejlc+cs&Nz?)Q9n(}3QfWVaN#~ccLeR`byRCWd$Qt)C_ucu0`Apt02qGmu z5Fq-&y4-CswhIp}g`&ObUNDC2(l_B|kMqU#5QyWpLh~e)}`RubBSa z4|bU!(Tw#S-@z&TYohM5F9N`m*TAPj#h)brTsXj?eWjX!2Pnc^(4<1)h&a*)4m#n57tk!| z;H?8$=|zk8iJPZQwwCWXg>o1p?r5a}OFFy$BRSN;ds%TmF8C)s_4i6o^E^P&?GD@H z@A??YMBIQ@=?z^C&8>&eg7JTtEh;-ejTVt7~DA?#3-B3#<` zIqCi}L5bkr$P@-~jh=l-*I{y9J#JH}!v|G;{gM6r88rS*ycbrZ`ex57_p$GO6ig@I zUj$aQNBG%;AXWTN5&#}Jz*4^zUA1ED$;Eyt@kbrc|8*b@JL)^s#uA_qB^{QezNzn% zcR+>_y!BF0qta9DZws0I1P3t90eHbFR({BP4+89w2o#ngJ)@)^-`eLQc`K$x~g05Li``L?^!YAQen~2^D=R5@Jbplb=yHk~= zoM#z#Z86AO4JsWz*(%lDM!@;KoTJd?t-LA5PFn=|J1u^{S@^MK!0!vQ5`I3_L&AE2 z$$;H(e^*NYIVWD`}diLRXIizh%w zi&Qp9+^TOK8d&PpT*s)!LS~}bW6l*w0A=9Tf(3}n{^2!~Wwc3SQ~6BsJ=3n8#37zL z?Z}!urh4AqJsLn#n=awzVf&K)$&;7)oYyL9yPW2gld|_ox4e+GQ^33_^LG!bZ;y-``pwjD{PAL5>3pdWdtc@ z&@%$Z8=NNZ0a;Htq}DED!Kk0i8s*<$4a#KOc_d}(MIxW1=9?D4l9h}1(d4QAhV|=z z40)P}XCj{|#PH1W$pu8=@xW(k+}!?U^+dW!dHxPaI(_FZej(?i^mpQCG~N4GDV2X_ z=%$K_Gl}mc;(j}Hef^?Te^>GTBf@v4zcq8HoBsP7Eii>e(ba?KO8j!bSSR2^1kt!( zEC6u6ikd+O%q2=|4zLvQ^_;g1tlx+0ImKt7AosvYx76%NK&0Y02_ca_6=6Z(2S2JDV*RfI^I0QvCTL;j z9>BDxX?|qAuwtP{Yk0n)pytWj7ufp0KnZowAD)GPZCl%q_W1$g43e@3eo&rQ!!vux ztI*jFiShJU+MWkO0Z8o><#nDi&19L@ z~cEO!Gq)Fie?rqO{PFY=J6lRAIKnt5zySMaM#XO?*+*-#`#GvPK}cLxmz6GP`! z>3bDZrL2QW&D;DfUA^TC2# zuDW4BS@5f}9|9aWF&GfZ-UT&%I|@~S3HOv{CDK7rrui=vO9l?Qe#r(bn*Yn%L@w^^Nu&-@{E=^@Y0EDE z45A>QQFR<24neHbf7Sn!+XHUb4!&G7*nuXuZ3k1H^?ZT0JO2wm8RV9M&g$_hD0bk& zr=j564G=K7|K9c(GZ@ct+2TE|%h4P>eDfyk>VshKevFy6=^FvYuXCpZQYPa^N6+%E zGl-y~{^HKv@I|M?71h}U(T$xDeOyqVfd($>u7CoiQJQHP!JE$O=)HtQAt+Zdn5Usv6rE-Z?Scvjy!5`4P$eHT3co!3}3J*=U> z8hQ%fV@&Thh13+cOMl(ei@!Sj%=DkyBZ0H8>j&9_r25i908sO`ySfa&$6qA?TrC<` z2_U`K%CqnPpE%?@ z$pOTBw2W}twB|3600g6?G&ZY_o2*M7ia|0r?&D|0Q7e}Q2kz}w_{l%TrFp<^@A-YU zyenXVpF8*YKsr+W^%jAAroox^o;(?x&d}nxWxOQ42M%n!O#jz|IyrQ}!R-A|-*?v~ zc83stcMC#l`=^$Z|3V7eL*OMatLlU()_E}fq*u6jpRmvdNcZ8ao?F{)dy!k~HUU-+ z{J1j|qntUB%O4?!;;2=Z(P^kh>5 z1k+p1(_!m@Bb`MZ4e8c_NYI`%HpqiRu8H1E93E3HCQg^8bl#w?s=V!zpNVuz=J|vP zf2aJWoK7zPjxo-~85SL=#Z~u#k11tQfch=&BNd&YE2etAbkpy=mUbdMhZy>z!|kjY z19pkqt(9HfzY7rk(RBUp^!JDF3WQ++U;zM$p5Sh*@*elFk^t*AFcRf{^r-;AZIXn> z1sAssAobJ;WyL#>wjA5j|51VF(O0eTL1o1*Auoxw*MsWhEr?-dn}AY$_-q2-^*vq= z_56YC_h2H|Q`-=9`PCeN`pP+-m@TcP0)=H3o@N2z0Am5lZC2p&Ui@CD*{Ar&nG><& zbPOQ2GMugJxsDl}sMc?NJ>J)7@T#0fp_R@u=e z4x7yyzQ%v@T(}>OI32XAu2k%{CtLyWMc z$mbCqrJx_*4|tG)7_1m>5x}@E;wcb79~5|$bX3-HTLFH{3O@oSeIKhW2vJ7YC(`VV z11J~_|3V+e#N|;q0atkZ=FNCT`fQ8(Nmu7Yl(B{N+4IZc3;`VWI|(X>Y!E!#7Vu!f zs*D;a{Mmy5|1IzUK?L3+z~=>UyVXH?%Jo0fA#X1*%L+FdofzZ@Pyh3; zN};eL4JPjhe15roVB)Kxcwhli#qd)?&wt@5{5VulSiic(dRnNvv|XQZ{t7ph`a#^+ z$0y)%Mz z!ncyRF@n`Zylt*i+{`PGQTl>CJ^29VVZAJtW2{ei*1)8}al4~QBl@(JAMl-v_+33- z80l1}TR*yB8ZTPTG$xw)J8l6WaNx#Yu=*<7j$g83--&K={tGfq3hmTAitJ{U|Nf3a zu^R3VrHtD!oYn6MIGAuiejk^z{>}!F?@s?4OIeD)ef@P39*fn#WYQ@!HGN#-_9y2~ zjTnTLm%WYcH_r=nPl1;4;$C{(#ZT(bSKmcZxQ{D-UozLgAPt^Pz_HGos_d&R1bhoY z7srY>f|ECem0B6Z)HLn5>32E61!&ll$@4gHc$eH**H|MV2g-?^pQ?LR$f+Wb-jg!B zt^HzsO<+MYXmBt7DpT);&*LkD|E#b&tp7PLwC*!lm@WQUsW+O=od5cr4VuRbA{#k9 z<(EANvI3A?`-K9~S?Xa0(D1h z3#P-R2^HS52aMt<8Y_CSw_4dF6||NJu&{t2khWFopq%s#uR~;c&6?*108m~HavUfH z-o$q<{D$0xRhhz?GVH@iIK}NikB$-C7>fcq1P#=De%=xVb4+;Yv^4l`43(^g{fUhCsUz@w*K|3?7eS8@Onii#Bj%1wfua)~q=A4llT!#Tt_ z3L5(O;K@3^yml<@ZuvS#U_E(m^8p&7$mDtYg;e18NN@+G{=~sD&LN3Lo&zC41pI!x zj#Qr;Fe?CPl*k7ZdI1KoJ;nePf&+f)(;Xf-T?fcj)5_HMK+Q?eguv z(1ss?K=d?I3{cV92fFtdqR#VWy;Oq#ly(Yel}A_et_~4`F^PC?O+GM3QNd@IXSb@1 zL|vn@5*igWP~gETZ-KaJ$-?yl51++6$!$8YE-vDPXrGo>vb#OTr8Tz$Lhzk8??(%F zlJV030Du5VL_t*f1s!t&9QI$969K5lb|!EHZ;oPvfYJy%4et{Tabl24>7L?p-cx^k zN7KB;C$QjE{_eazlxF|~1l&aKHWNck%|#adIIZH7oru^B!;zdFFrcuQ-!&lpvx=nS zcEF5U7yV&usCDr+jZ}zcjQ!Pg?dsUIfq%CKAlMqb=qblhrqEA;`}7D<4axVT@YV$hKw>=!|b#vVA0I7-GPe2 zhVhB@N?rg;0F0!(XT>wqZ0)_*U|+qO&=yaS=Yx6z1~yfMQp;Byp1-l{m9I?9$~K>s zkk34zI^p~r6o8jo1v)Q?GzuEffX@^7t|vm5XBmpO@H-1He?a(gs35%H>C`RkFYj2W zRV>D7J!>-?gm|+m$g6lQ(7#%=Iwj&)$3)J)zJF_$3{^Q)*1Iy5Hu*nQHa{J`b9^Q3G+9q0h34q+fVZ0w|?#K{H6j zAz&c-vJQ#{Ah2Pgb$MQ7j8QI{w2m7p>kn}zr0`ZJ`u6G>kg|ty8{IY&!fU!}eM%Zt zhCR;z4y3)6!|}VR^t*?u`poZceJ`fJR0F<)yWOVu-ywWw`ZJwx#)uygzpTh00IwEpZ_N%hiE1jnEcyvSW4x#7=lvCuS3`9)Zucmh0ye1GRn64w#v}kzkE&N*qm|qnB z$1fDC`b606^1`?*Xq9brQ&|E~e~qi$%%wYbb8`?2ci5(+1Vg)=%Bt3h(`I)8j!;{W z&+d8%&oQoFa-j!0D}{Kk=~ARaGRf^!6ZA}BE`h ztEPX~CIkW0ybB?u2MGY(^<~OK;JVLMp@(X(kxF+8d2^3c<&*`lNC1UO%RN8SI)J~N z(Ur%y?{s)TprvK)D9_xxeCVI2ITTRC0~)BS1Q{skt{Y@;gYLUE*R(~-U<4OMY+C1By0V?n~Km}HvB~Wh=$X*1~Rf+t40u+$mTRw+_1NW^0)FnH;_3q&6 zYQY;XoB)G~XHI9cTzPLsic&kF1JAp^dNKS5h5y|mC?S!5$3S;xeL=hd^TEAB*5s)K z_6ca8-T_#d+cQXW42&WhPfQFVywtDrFyyTR3_b*v!Io?SV6&&dgN%dg3(^Pk38OlS z`&GG3Q{VAk?zC13*(l{l>s~4+a^9tzDgV8u^16oL5O00x#!Q^@uK<`26U}JCb(#yW z>(QiF+HExLdC@9w;g*&W!y5>K=|sKLI0`-II6glI_y5o|1)_GmaZ>C!EqA37Ck;s8 z55wfPPJU{~`W-@uzMH^-SI{I(tbg=P?7^B z)vm9fSj8xziv05e0KZq>2N(|*Z~$Hbyv`inqnVWd$ijBAQuOQp zxz$0MJjYmDVj=;t4|692QuwV(i3_4)F^1geV9n0YIaqrg;B5&+Kfa(3W4-CA44!m#kHVprb7L9L) z0tk5f@FT?V`-X3pZ={^>_>t4z1ov^gczw5@FZ?T^-qhHzs#K;lq@X7Ye?yDTim7Ox zwiHBFTK4=$YrHB`Ek7=npr+ysg0SM1)+AbwRG&((4nfldibPGb`$?49(YgSUh6~Z@ zW1}`RD6=9uWW-zG_WJ7wAa@?86B5@c`xuAgb>sb}El%HW29ZhD>13lWzp1(WFsWjf{8M0peK zLzMBF_Kyy~X8OD67eDDq$zKyT{Z{*AKM+=5_TEwfEAni$IGMh?F;SaqTDo_)fB`37 zJ)F;IB%Mq8kj96#SExo`?&s;abUeb@g1xhANDg<;3+p?R6KRAzRP)mI$HXv!_7mVF8vLPlMd%6TeBjyeHhUr$W>+ zRd~IMQ02kx?yeV9=LobQ01INQxJ-)Ze_+5zL2el^dsEn6Eo@U@AV9Ir7uVkI8!E=P z`Xr^6g?;bSqq3hAXv$oA5SY$y@l93|6QJABa(3>E6&< zZ|b6ctG2nwYiRp4ekXEHp;I6yl3eG1BQoOiIRA$-r?w#pCjjB!01R|t8uqV!K20?q z-re-KW@^P_U;kNQ!WQ4Bzd9En$~@WMLRQNz;{&W3Tu$KifJfOwcYD6R4*@wRL9lq8roF7uD2S)L zhyxU0dbFfxWqqYP=N@zhLsnk#%E5L1NC6f}2}UKo^zPs$pYlv#L{*wwER(N-0Y$(1WtqD$=5Tz<*i8{O1)05uLe<;=VD z8$yE`?1^BeSEWNSG2EuG>3V$@3)L=-?-fMJUVju#l$KQ!Lq=8dE1XT|P^0#E?C zE!%!=JqXdhEu-@I&6fRDmX;SI#mj(!<$CIY4DCAJ4C;n~l9YgoTN(v6YLBE-f5u=k zhLaV5Jw7+Mfi!VZj*paWxL{=*S)s?Lc!!0haa~L43@L?y<7V_SL{xK z)5HgUVAm z)UT*y;Jejs30R29sEi=pJGHO70}vR1=s+gb?1(c&OGL~!g-^acnR8;xR( z@vx6De&UDSn4h%OSEZioqVnl}t8ZHN>`mEN2Ss01-X|LVWxW_ccd1CJ?!N&DD3W*i zbqZ6Lj?;IfQsu?v-Aw`h-NGkW)dT<;_1EhZbdlf7P`9DqIL=?ucb`mu+e+a2l~q^H zsZnu${9Xz~S^x85i}97fJ1YQ#>*R|v&jRnXw@wNGKFm}_aK)t}{g>789-;ZhBMtjV6A$nD+Yt&L+itK+MN#au(gFC zRWs6-2iz`T<}H9&&PPb~2=UibJ;%NOjRH_^{77I*Rn)sP0&a&1cIOSeZcR|Y94}q_TPv~yeg9Kf?9}oNytnRdqdLF-0v7Ex<6MI^b(%#nBs!}|9M-UHY zg_ZY~V-jwwQPgD7UU}0y0#RuIkU($0xkUzW?^9la5Tu><{^MWXm!;&T2~fBhTslw$ z%PW?Do8zZv1_y}A;Ci{~OOiJ7@}NG!m1TkUTxM$}Q?i6VGC&1pbQ-HQdA`U)U0EuQ z@njGJY)gzw8IOy?q<~LNp8y0CbE#v4G33SM;I8o@KOf3`4cv{t`#Rgvb(%H`{CO4m z@!c!navKjXxZmF)%+nuT$=5ej1XmnQ`&a^JfFm~u^*3vRvRajXK#OQJhuXaCvz%P+ z*osnwCB8<^DhKEUC~i+up6l%ce2RWm%dy9fQt$BpQ&NbUc94XnlJr4-mb?O@}5z8L%*@|FpQVfN0jQAm8BtDlKvV7MK+yi<(ucD%Cv@7*L$=jGc1`VMG6-nEDy+ z#g+UBashSYefD`v!5s{k>JuO!23=>m@*I-o$X9o1w?=grV+UAz798AsK(_bjr zk3rp((1kAE(-p3-^?MaS{s{}<-!S|*L!cq@&$#Hffx&S6MhY6%LwXqqWz=vkM9w-{ z!{N|P7Z&}=qU?5*PGr4F4nW1X0lT>FPVe@*Plo~q(T~pqz&f#;G%p>6W|UU8Us&9+ z-guS(w_5>!lakML>Xdx;IC$|2=;XJy&1Dc|a7L~5rB51-B8^FslsD+`s)(zLpKfO6D?ci*U?6491q#YV?2z{MZMT`%(N(nO;pNXG{5Ei|B1En24wsj z!lcxDGnMQzR;;0;n!52Yru==V|1ANXN;ej>k3z{O)1y@xaU3bUc>TLIAn4^#zXb;<`~Th~fNYfyijDnY1Qg_%fnd&wYw34|B3M1f zKGsS;?(xTS3=GPzKsr$lVU1%(C*=35{iY1@E;7 z5aWgBxYQI-1$e(~zmQG1?3ZxcBG7>aAM4?{Hr`N zX+0UO|C}eMl>z&ifg=|J6TL%k5@QgflLdqpx#dIp7HABbzyPB%)pIm;3GuB{+)a$h zPOg0gC_1h7W^j23oubFzZ;IE1i`bAKuXj@y_+x!0C4U&^Ej?8J4_M1@71SCqVQwm2 z2Lh@7R{3;8eFC5UZsBeENBU)Q?0ZRj*8ggy;)4JkEP#_xI=Q_@M89x;60ZAZ2M!=7 zE}_p33rMI0N#dcgla=sQ4_51Kzva4~QO^elMk>uI9}^oAvO>-`0CZOps)G|%+S+1n zH@=B>3j>2(8VbIF2OS4sK@Thns2s}L;C;>@7|Qh@1Wgop_b`PyN^@*oH(0I4!lit< z-aPLl9t{iEz8=pgZZmyLm+&8mMk7_~eEKcsPGMne*?u!2LtR|5-njB6d}hMCe?@ zQ9)#dvQrX&B<`&*n-9WwgLSWU|5iE}ow-s3zsTuS97RhNZ;$h+>q!#TRmqw3v%;{O)CILAN#GR^Kjd0jC6D@Vb>LL_Vo6@R>m`c;?@`Ut$CD zXKhsVRkZ#@b2Y1z?3N~mJZ_rFi`Lm`II8S+BHB-f8*VZcrLY-p)+ZQAR|gg;{edJ( zvF)BGk#!>fKRMj`g`XMBF?ybcdN=h#CKH+v%S-0w5I7wUeQMy#8zV z)s~*i5_l1mpW4?7GpDStO#63Z9>f7A0U&N=&zu7l>k7@-{&wD!m9f;EN2sTiLFMHc zk?Z4f>wx;*Del$UUu!w^bctQTg-&WjkmNfYfYQa6K#A3xtPF)Afxzi%#`#zNU%iy% zwl7HMOMpc;_a*G(!GC!l{1E~j1l#Q0iDUNMT)@H{E7bYgLTILG5a34}R@}grr>zC) znn5wj6TqSPPh%~w7Ig##V7wuy5mpra^lZB9+y4FT43+6HLDi-gzIi=Nu*>7dXa5Ty zhaYDM2$y_C=gI2N?{A8i+Fs|#$KYiUYclvf3P@sG)ZUK73K@W=PKUe|#j7v?T`9Gd z0P7V*3(SJo26RhD8p$~!l<8fUi!nn10G+3XGK@^#Ayau>eU+TUG7ozxV7*j)2Bb>e zu-_;S(h&R8ti~(A4E1p$N7S)i0029a#F74dhJy_grVA*W+_XhAEw{Y#W@Y$Lak@76 z!{k@>e`yyfPcI6eUr5A%gUGG$j;;w_+2a!)(zWHKTRMd{KIrm)TJVNuiZ+;r({^jd zl+SDZLiFV{W2PkRn-L_k5EvEZrhK5~F~e-GvuGcK~8{BY*-Dx&s9#FRN0v zU-+)FVE-3>I{Y|8;OoJCrmeF2f4Y6HxY+Lxz%m6$&TjJ3rJc6OX(2(^sknXPp@9uJ zg88rK;IdfJM}bjT(~-B=ihjK(pn&TUOgoX4V_M<%pV}#uW+lJyZ|*+@EU=Q!QCTiSPFC?SplstHPAkq^Nrx2C3OE3Mj_su5;0?FL`y{8%=$G=b)6( z*EH4)VMWIqPNn*!8wanzL)#{QNNhClUI4xiDHi|>9Q7)zX0_tzsP3{_orQ}}48K{$ zo~|YAEGs8bzi>X$$tnj}idM?Il>l1k3so~dG;b+BIYp#zSVq8aR=o4c5TF#L+XhY? zcJa5854Z9F1q>o6;2?;5o;03XW2t4V3S!GM;Be?NEvnz-07a;=%z=vb?peT4*0R)D zdfC@hyUS& zTE9ArKgL(eTNhfFZg>~;Qu4V*u@6`ii!w#^W<_qzHAx2oA`(BP`|8;;!|g4+wo`5e z@Xy{1CYBWU{GIE_xHb1ZTexpVj~CC8plu^*dyu%Lz=pBc8B_Qle#3Muhv7Qtl%MpJ zh&p!JOLK1%;CbQcPw_@5<3${nx&L^sKY|sqFFHB%RiN+Wn4A1!Nj_)>$ffM>^8asY zvY%E*#s37a@JAA%($~)aLGe^&-0F10bADHR{uSpk!RtFdtJT=I@(JgY-&Okb?o$-Y zFL6T*z;A?;JdfI?Ue%N3tB@X~x>-7y4&p^f0XMz~^m2DLTle0s%o-L)^(YjnO%i~4oC2NDA`!XtlTW5a6yY7KlK1l;#ek!8;$3wzJ6Bey|O6Y<|;De^1|UJZd_qusiVZ zCB16XjW*b?Ey()v?!WM@kPa2>=>IcYHCTZ}Yy7QmnLiXI49W=Moz#IFs;utaegtnj z213i$0OI2nUCc_OHA_MV(xNv47KJpGwDGL`c6~L00PJqh?Vb!CY{l-}`BS}zKASui zxIF2`UwM%19|eFU5W_@W*;@ts8OLYT_@)2stgkG1%Xzfc;()*1fVzcAxyQk$w4*9R z_Cd)m>U$?6ztsDKb}LahF7ZDhXI#EpH~*X8lTxU<;ibOu825Kwj&GokH+^B^x5A{< z6q)+3E9W+r7!2p%WBaXY8*~1~Ky6epr>ZbCH#n zuTD_z_SZdy3kOg_PeJ+_#m65v5Fmi+d1TiU_nCtP^k*aphZSd3%ya9jBG2#fUB1;o zdlztC>^-2oQL6PnWIU$d={F-9+s|`=q-4Y5uK*@j`3b2~2@l0B6}Jocw!}xEB8{Mf z=e$8KwSe;pV16v6JS*^?l;oj1LbtV`i}w;VC}PDsptSYB@TY|BA#ei)UP5a*Ccy(O)t$hgya)Ju z93HacHQ45k;Fq?Rz1XCju?NFp7D%xCF3gf*&b+m4BY_L7^qXm+&tUt-E|V1cuKm`~ zN2TkOdXa)&cMFCm}G@04a#oa*_B=KGk%jeK17xa8T1c^!`8L)`9Nh_ve6 z)c&6tF27UYHY!oxn?AAToi{u@tY6Qf`OfivS)aVhd#`hoBI)VxrR|ws4)l(Z4V?8~ zpAnGa!#5Y-I=5N*n-?zi{?(<@{hb5gqR}ndNYzq>$~XnFa@-=xzi+Aj6nnbo>1Wa8Vsd zsN!%~bv$h`$gk=4RHv%ccl-WT=s?gZu6nPobIj%U`Hp4(2NwMD@PCXH5e%s0OxE_! zy1Ub2IxI@;a}VN0TUmm4?4F&{qN0avk0dWFBYje9HpS&ofLBoXlCsBbR02BF71wr9 z_LB8m^%*ZSq3b6ff{!zzACTtD(E~6a7=dF2@>GM^kdme0AbC# zSsquPt1Sg7Z?AI)>$ckzX3=RJ_t&zG<2%f-dscGC%eO9%zbK%nb$jnadW^$qCmhBE zpH#!L`_|Rx1>l&%bu9fu!wnOgrb39}YnS*o^xsrB1w>riM(f12AtAnT@ad8p`;VRYh8NzsUh&;sD%{wPP!- z`?9dF)|*p%uCuuJHofrzD!DP$@J3D1b$=zVxpFc;vPRdhT5L)fNIC3)nU#_e{#Z zs*}oxy$aMAl{6x&J$A2K1rF8#Vx+csH!uynnG;l|+D?+1L0&cq;1KJ68nVqe!MvrE zt~BB4ne$R{UzPm72n@I>`P`gOm#CZ4`1;PQ$N=d*|BL4PYkgI{{|$IOt{Gk5CRMV;;)kdOgR4xLxl2yWa4bv(>@W^fd-D)V|3c7Ovih>+uU_sB2T-|w&gUVcxm z!GR0irBS4*ARdn?i_(nRS$30s_AN z?rJD-xFn19}ZCFCkyQ2hXAfI(Fb7*5h{d->itw zR|>u=@vM};ZX-}MxNR+X+n&%F@G2N14;=e1{E{HA9mLSl`!?=a2|}y=R8DeDX9dh^ zK1z9vp&TPN+by45*AUwSl&kx$Gwn^9bg81$QUvc3!p9)mh@}GgYo!@Y$jN(vE%;qu z;+}oEmROG0<<(mGqpz2$54SJ%Ezr&_EAt3Al|iIrDsSkwKzowMl43uBLEP_RjD%Sy zyA+yS*A5;;lMzE{L1z8HzZpROX5rOVO%=2GvLHuG4P>^$MeO9(li9T=uGXpnzOMCb+2Veh86A; zb2=YD9Wc0l>n#ST(Ce!gv9=6{c+)p{dq(9J-{t^Rofwj$5P}Nzpx`fI2C(Lfz^Xv9x$ zF7*s-a9iXz#`{EkBcAoip8e_SLZw`n1w(l9c-ic;L9VI!GE^6rY`*`m)G$)DBz_pOi74 zN3^Y>q-U@lz^MWpC~dLR?o^!a?QufJgn0UVoTt3s>BOHI`A*zl8`Cq^cGL9 z_mZAfEf?wW{k;Cu*#!ep$CI+Tqg4C36I(=_>Gnr+fZC}p%0#6Z73X}WLzHa-QOd}@ z;`FXwKbVz!JSe>-W@+CF?mW+^A$%k~#H3y4H}p?87j5I54dkh?%ZYtk*$W26zap;Ic$T zzuCh70)}+U!0R6J&V78e&f59A_{`#0d+9>p$Ibwc%yp0Ah1bl9dK-_E$V(->E)PXn zL~ww?SSWY%*2oH&T>bcA)oFVKwH1{@R-`w59{Nl5e=4WDmXVb6F0dy^0fGjA zNxkQ`boELe0E6t6fOT;zLK-F{WFviWaHMe~Kr6%XKPlASzS8~4W4T|ybB3L)rV6F9 z+6unt1UAHJC+wdW{PEpO+D=TL^eZzl{~@lj_n1{#Zt9X3VCt3pzvB{pqnYYIR?}?g zTaGJf-GI<9UVg>v^3pc>fzhmSj(4+0L1|U-S!&mz-BG9NC36PfR@J<`pVxnF`NDVJ zv?&X-tbhr|UIZ?p2QK)VmVyIpCjKipK-ck^)9^u#o=$jhnG=FDsO;xDqT-$NaVX2m z@1tbrG(2je*&dMN<`Ia1ho$^ZTRg?*eASH%TzXv<{L)7>uGj*>79$p3SNhTV0ec^f z^22el1)?kf758`$ma+m(E(6JOA4zsf?*1$|#)%(cP`*K#aPvV@I8SvtMR*@9XqMZs z@*zP{-9ob7>w^THe#6Xh-`R8Bar)I?ZT>e`3#_uLPebSqeE(Tx!N5EDfCX-4ceZEt|GgA_!g_9Gvh zg#J};w(=;i1*Ansr&QI*W#Knea*M|X)j=6JZofIc0ueBc+FCh{qfddqu00cQ#NHIx z3Bhz~Zf;tU1L*);NN}tqZ#@_nMMzh2UnBfG^!3hz00bo}s;zsPu(hp4=2Ut8ET8@^ zknk4;7NHdhSn-R7oF<+X8N!D7e~H7Y3X6-KE@%($U;Iu#TZC*62PAc zU^jgqz|_vG%RZf+tfRb`pV~#)E~CbZddDz9Rx0_RIaJm{vbVhc)1o1)Qf%!)fmXY_ z(g;Wlnh|ipEpQQOI|R`O`vn|8>g+G#lwR803IgrbD z@*auwO`SgxkaJf0v)2H}=R*qlmWI65MR9~^xbLvIy4L~Tt|}-z!#>q8n&>cIk>*RF z+(M1z-<{HnLaPjsm{}d#a3+EAJd89YDnI1Ij~i}Nh%*Z?t)evt-1@i;D$wTW(wKqNjpJEa+Pe=$fb^jP$BWwfoND(ntNYNS?&MFdUtzn^ZO<68{N^ZB*_Pj34id7}VL3_n-_ z2fW13w9B3jk>X|`;W^CqQar&!ZioMM*PAk! z(GC-M*?A!-U~~QMfP*Q&+c^QTN*5_H$=X4H1PWgUTM^hZ3G?A{Rr^lmN$7hVfYJO#2F$t@=U)UII^@uW z4AIq3DfL)RCy3rapzD})>iM{e>N*S0xznG# zPBvvKF~QBGypZ~n29fii!>xkdobMC>p6emfjh%k^_BUnrN_n4})L=~eTNSPAZ=)fm zy5**zPvq{z&?%0J_c!gbKQwTkEJ6hFk^nvvzyr1yQUh{_SQkQcc3O{{j*!L|>(|1z zp^cn6A0Cruj6S(O#237dE?b22JODwHlvE=jd%4u+qN}hx9ia6-D&Q{<66Pj8aDWgT z!2f6tkO76c1XR>d+H+`Mj+D3J6?ad(h10&b z>$bI_i}xwNoWO=LUb5o-7k(z}TLxBOWh^Pw1MN}CMMbrf6;e9SX;G19L5hI^TssTs zD1h)}B@N<-&H9U$=Z#}WPlV0|f7cW7cw|0UEae}Z2la{a-cT<4T|nV;Z`<&ipDIgj zL11e?%ZAFGpW|a2ZUBS>Z99!Bfdm8!VfGVZ{CuYzmEN0fxbfaDe#GSp!ZpBndJsh&6?3%_>xuiFBwU63+JkO2mC;jb?KJmyY)t+X>Mqng6qp@WKRN)90U z1O;YHLVXn~9}@nOfZ;iR9$P#6?497i%vdqa+0dL1Ivc>~P&(myZlqAx@r>kH_2D@> zSfbsJ65Sn=M|D~Jq^tvY;2&Az>w$XsJhXLB|45aI!ZIokP_F#bmI4*0JA|=pr+D-d z=<3ym2x}MK|H4P%2Oywa^Q|f^9_XP(zfX$hvi;HbdK1)7vEIc~Zkq!?`b;8P1{h7x2{NfeBOJHRvvy7)u;m&oH<4zs{ z9hiW1>S&K`#C|KDAvCVamN^2#*<%fX_a)GW`l&nyZrlD!rBzUinM^;S)GlU=L-yxe zUdOcphrQuM@4WsWAwRGG>s0heR^y$gL`Rh+kc1lUebpg}*h0`?3$Fjs9H7E{b!>uC zk*@FK__{9B4FLiF@fiVp`vAW)QS*8gqDzp1^Yz4??ZN@ME{gtF2|&bU&|xjkVjQpq zFS#HY2o2p_Btdh1E9*aRK|n77H8#C6I5RPh0YrfLlCB2a%5*P)xM$@P_v|n4gmM6& zXYYc2pdeeU_m3~236=atNyfT#mh|2jMi%~{Jc|5JS2U`T^$m-^ilf@6;&pjE-6%jb zO+!UaG1u(vzfi*7GQd_|6fk)2akEVAe6}!4yhwqUD}TAaoa%;iKJhoP(C+{sLVE3) zt+LWqti*iaFV(xSYIv_$6)Lq19CS(==2cjqxQ4GWc$Bk@g6frcFDdNO69dws>w5wP zg7Qaj1ILQk>Y%nnly8c*3?>8sR>FG5UJt1_;l;rHSd@3((nk}(0kBWBu-w7?P3qr+ zV$R?h(xQxOb*_fWzmq@X!XQkf`wo!s5702XIXscZFKOHPFVc3P?1bT{`iUVk*1hBR zzf(|j@_{~S`Xld$vqV-W!Z zH9sndU|anI+DGJ)z#_OJm4o4u(3}6}_oAbe0HA0nIYQHke<%k~2(S@X0I&pm77bYX89U_~860RjME^b0F1`5>T!dnzX@KLHg=abmW*mnQ;GgT{yil?ZHOKwg6J zY7f5vW{ucmQfMg-0<2+`xC+!jMYn7NV3&FVKpe_LS|nOx*%R;}1XWzGlIJ7?0nIpI zuY=?|8`gpo+!h>Ht&(fH4m@^v*sv?`TGtXlgjZ)G03p`botKNTC@l6)eULzUrN|4p zd(W|EGE2`MgZ@;LsxyvsguI1+kfs?Azx{)Bm_~`_(RA&gPPBEok@?nj|C)6e7_m~Z zkhk)hpP73dN*!m^=IoUs%Jj=Eb;E&({WwaHg-iiW_{eb=FR6>;P0IaOD z*8ze73QXX4mOM-D0zimG46h-qZKxMuvSg~g9c~xyT3SEydrrN5N6pO@;+d;Gu!7l3NsjBdm6Z z1hS_|S&p>(F`0fi66>fEQ z!1}GuCBQP+tKg)={@3k0sy^3|>vqPM25KGtW)Oq{3iLYhl*0{bRsBnr5w;900V!FN zJu{y5BY{^87y#XZybd-Ypn^W@Kz~#1Q^1HibD&Fm z;;g-t!k(M z2h0TRVO zY?Bf{Kk15Jfd&2DLXnS&$igmgATqlN00OD# zra!A`XB;0T@2IE@6&NUrm^0b32Upl`|F3qB^#g#N=^!(Wzz@gLt z3g^0bQhM=s=5Xx6k^5`{a!6?+I;*&z>Ue+zya`~%;SqVhXMlrmN^p@@-=u+544VF} z1fcsmF`P~iLX=UtQPSAjf-&uDRP|sXENv}dMHhMjgruWT!~EG`0?0}$A5{9k<`CXk zz}o`yd{kHLiDt3FO7q`QSzl!hSNj>p2PHhjfra%-zo74?>z!o&NbIA`{&bdtrTRM5 zgS`hn*$&XrVFDp09$WOK4$o9$^lvOf{?*}sW_b-_rLw%FHA$`Q33DceEb*X5K-tyt zZh}??nL|)LlhvPB%EwpW=Yr`&+*ZK(*5JDfzh}eHY*4xd1J=b;7 zMFB$CUiJ`Bz{n~Hy}hKTD6L@Ec1q;l0yYZuX($8TU}+y|cXFIyGJ z3&MCDxyZKx8H{M=YTTgmK{6+fkKGTVygdhb@Y2|J;U--=AO=Rv@~zt_cl=X=Qrwvo zA>wmTpnyG)C;_0N{2QrVHOi{KRq}-;QWfl!&}WMMaK~1L9Me47IS${ow~|K_n03?QYkhg%dv)WHc%;C`})cijK9GDxOEb8aj6gTRZK$hnU~h_dc^7BKfP z*H@nel)V({a?-sa|Ma8af8~I3&Yrz{Tfnkj;~YLpZ9ZsFE20=TfDUCwro3_+ax?%G ziW|I_xCbn-Ce$)oPhM2;lML%^j`a{m8!h^(4WAxdsQE4fE6}KxHkhCh%Ki&xX7+!~ z5OEunkoDXsrv{TYDGZU*nN=lng|a1}>tL*}Pym(gQIt79gM$_KR8KLXxGhW%X_cOY zD#~;6hHwD{#}}R1B^~n(DnnUbSs6}*^dDs;F@S_qBVO;+m%K%T>8xngxv&;54WgwQ zSF7EsuO^u`jXPL_H*Kljyfp52!qX$so8>_Q2oxYuwnaew0u!4_dC!}=Vc#b}$$zxB z6HU{58b59LO&PO)@V=n-&37ffZ3uRGYj3wMD>3%B3gnTs{wUCq*Bs_$ z2;}YTLlcp=7I2;HLTj~_S(6Wzn^5~MLo=QEO#p!BFtx6q5xvv`HBR;Xs{#NE#7U4B z!Y?Zef>^?t`SoW>t`n~q8%)V-?~n{2>>5+0G$W-2j+F&FXi~est5I1a{bRG z&*uklTztyF!YMPJxDtX-c?_vr4{*CelyZVR6HK-v_WyeTDuDtl04rA|LncE4b?SP- zusoXaz!s#Frz0aIX6Hfmguhsg?DZP9&I`b+1ov~XWb}PofI!$Xz;O)tLcni+x4U7m zrguE0Q?yq*6?@%>3WnxSw=%rBJz=-yDjd(&{+BBVrz;0_{0Es`R`hoiKz>d5pL)p( zT>-E~eB1(;lyy7rcb=VrVDTHoujx8C175|J>I8nmIxG906rfI_m+}$sd%vu|OPEta z9lLEi@yp`653~yG9}*BtT`afF={H)M%UU9o?Ibd|VAw|M1M&Mr*Es1@9Pu0J&*QQ4 zU~=*@z;{>%TD#eh#XvY)>P&b|Fc_{Zc?@u-EekkTaNrA(5aqlUu*XMQ=WQ7CsGPL( zpZb^;no(1nk3iDSceuBRHGT^%^z7`}Z%lYeYrUfJ*oMU3q+ zPWoZDRu<1PqjG3`xK-X~!+gddw+?WE4xLw-c8!9<&U)qL9f*lS{df9u%3w7yfAiud zYY|OzkJVd)0jEyOQy^K_l5*vJ53&GYt|uT103E_p0GwaN0lsKal=p7tpFHzA7Rk!r z-9B(rplj`pM2Vn-@(@@GJX-wud;%`lpe}g?@wS29!y&*|VvooDJuX}n%GkmSy!ULa zKh_M$M=H-~{aBwmh5-y~mjQLy2lqj|FR<*$AV<)0`n!8~dFGUPlUJa0L&)ltGCUl< z(Hu@~tJZSED@g@FfO)2a2}vpSQGt&pJm1*j%L)<74h$$TkYGlF3^gPvcG!lf@fQE; z6ic(Zu1;3x$@P-G1riwgvR7XKrzxI+;Ap_Vy_S#kLE47Z^}0RLAlFvn7j>?=LULX>~g6dD75QBp=^>b5YSRafYgVP^Fq0g6-+r! zqkdN&G%9QwkO6|{p-r;yZ_JoGMOlg8%wwJTa1+lOvRXg2WZ5o$W84W~m{f*n^8814 zI|FD$aAl~&heU4|`GoH8oz^v9E35=~`Ls@T@22cfzYX3&W&(!J1IwGQB-wHUGs4p0!OU&R5! zsS6w?$l9*}0`vggeOA!3zg+{o!55enOg}Zpd=}qN8X_o&A zL4$g9DXqxu+(qky_4;0fu0f8+OI);C33k;0mO>-y8EZ)3>AF5Ql0yrhXsUL9az z|FkY18kpu4Z$U$FHJUya9%rdY&-|DNlmnk*Fd&5I(yL{qTVt=nltN`E0RUa|kuF8p z%*uy<#qpknNdXv@w|b^L*kq4?a=N3w=BPsiDIHtTw_4+(0O2g;{a}3XOv6+$zce_0 zB?qwPeMk^RTgb5w@;-j1IV<|gdm#65z6vla^|f{igs3gm-~^U$J1>*o44kGOY^eHV zqCG6S$(qne0DH)=KnMA-X8{V&3OO@oM%e}ND269)c6s+?6kKCALVyE?UIff6PoBps z!S-)?YQ0d_%iexF{01_-7)+wvRA7m>6nPkdtuFSxk=Q=aJdTs+w_IDhiyLrN*1 z5cMEj@&M{|x;?h3)Lpo*b6q=^b(J35!{wHBypx;QVno;Uu?sw9sp(1pt8qRA7V{8U z56*7!biJcdy*s*f&x&r+^I@>&cl}&EI8-0e_vDGd-;wa7IPZSr^5Ac$(3o-z(@Hm%No2+2uRM z{q5Fiwa_rX;BCAhH}CmPymEsAkcUBhT=TlJt?}eZfXuM&srN7}m&@wbf3A3JmGjuBEh(DEDjbwI##?)oqcGhlv*I)t1zAM-2{FaRfEN@+ z)7^1{rKT`m6~P`kK>rN8r;BnsyWHnKQA$4Mp%n4Snm^rGfH9|Y1b7>PDhF$wzh_v& zsGa#;PSM{^z+I?>G?>uNG*`kpb_pF$;$CN1N>8&e@ymP*hj|=1YRzd>SdR~U7Ln=1 z{oQZCU-)K$G{#^bK3dW_y*fNEjCfL`w90J&A};>Lwy8E&mRfHk@WPLPZkD$;aHgsq z?bZWPkC$@_y1FMCclA$nkHjjUw+}FTHoLEB|FW>p5GYwSO~yHh9;X?yWRKst2bfKmC99w2;`fz4Y8?fk~~g+FqiLKzI;bguaO z9psA^D)!!Bw|!QWvEIS?iSpI907d7?>Tgu9P8L;k=sXlspOT=SL@E~|6U{4*uf|1+ z59P4JvF8>7dYBGDe$0d4^SJ_o1`1>BjN+CPkj(7b6#guqNg$UV%z^siI4H4KMEaUdK<_+w0o^-o@?8 zm0RoJj>_-xh5%O1(4Nc6n5px1eX2N_>vb7WV!+LEgj9V8Km^$9P!@KOPEb&F_3pSdnMIW97Oa3*`*~DsRfK z9w1obCzo5rd>Xe!-{o;o743Z6$&ts%6&|)7uouFNqv|UM(ZeBI>rp}0;KZuzsaySCW)m}4ey%D;y_{u>wmZtR5Qt?|0ET4xTfIwpz4dMd|`0tdsvNVZ&SZQV@jMqS} z!_Bfh86uLEw{bsL){;&s?dZXRo2zyc(UOZf)0^tP(y^tN`8v9PE4rJYjRZ23RSdxq zQNQiQrf4W=+<9l1$a@-}s&6`r7?;c6)H?|-HGrB70zByytR%c6zyJoOy;wPoA$83e zSu*!@HMw5?mty zxE+S=oNi#yY2R;A`cFldB3O8=8r$2A`6zEjg6~$_z;`+J%>r7O*57g9FwF=>PzzUC z3|W!?6&#?nhSGRaun&a-DV4oEiej%X__N(_8aPmD7c1TBN<$nIN71kO_pbj8Vg;qe zJXjv&I#mf^*N~O>qIvsa4u~+iRj#rZW$J5O)KRFzbZ9Y1LJ9mXf-m$FoZ_G7K~(?> zuo^6UoN~4W9IXFYL5-6|y3_s~`iBRLN_TezETBDD=hI~LXtI*80sz$eJr10Ci>3M% zcYBuqX=H7xH(MG$1p=n)6>oV=TMu{}#fj%5kWl(Zg@3$&@@vBnK%h~+%(B3s)*!VO zP1baFE$4D?)>(|lc}=e6$^x$HuD+{!VVtfGW|b!@>raSp2+St1g1sEnyY*Myasb>Q zfg;w_-*Y>XwHf#^Dxk$f6xNHv;Hey@w|8LGptyH^#uhOiOYDW9`g$6duG&EnlE6uT z{3+K%&d z_^-iiQrxM|Di8IW>->)i9nx}Z2*~1LIt}x_#M^*hr2hAYKX}d;4a`p8@CWjT&akZ3 z0J%;U25^zCI)r{g;n8D2G3}kzVa{q^pu&{LX9(cnG>;X8?v!|g8wGkgI=rXrxxAS* zxJck46_y2ngv>&FiIR%~PlXl-{kAwg~Wwj}a zzH`z(%zm*=qV%Gm2i9|HOV_@aZ|X|I?ux@ie@fR{Vg3tdYRiCGUUwJ-P>S{XHd%Gm zdn|kU&iP|qFkM%#smxoP37`;Ogr&Zbn8*5Y5~N9b+0&lr5GN~TS!Wuh`Yten4iMaR zF#1lK3Cb7=C=kNqW}fJA&>aXVlyxwJ*ID!#MpmH}Kc zeElw6uY^@@S??7~S%PC$(T~y~_Ir!20w7>jsS2s8s)`YY5&$szrvgAhp2V!={7{+m zpWy%|;@eJ>_xhjuMT(b+hR69Cq`<%3I~V_{IJj*fc8x*;61g|)`+PN`!7rxC`Rl_u z1=*wE04wR6w5T-7dNgrN@ka!eu+I_wSEmAF{-OCmM9Ux2T#aEy;+S`s|8T(G^3=%k znBK3Ow+v_{K5Z93#TUMtm^rIlzHuN}a1|a-w}bqSB7EvS%m2i$kY|GT6Slbv$}1t! z8S4Ccqd>L#TgelDPv;US-dy5G^Y_1ChJb(?Or52`tSVkc>)DI4XJXA`1x+cn-M6m( zY-Lw<;JPa}%E>BiysUcj*YbMd;GNZ#C+R9=rQ|kBhdA;Y6;!@KI<@|zM?(T>u^%}f z>SI=v8AJ-nxV3`c3BZcys_`-cJHo4A0thA#mE>UqbSv?Mn8ixl9y8ocgaF@kqcl&j zO<1tiIGm>x4HVxOk$sB)8wVGEJ8>S<+<_b$@k0E1Tmz?v}@dI;SW<(~~f12u+* zcOCPS6;y3hatDHJX?{cfUBumgfWHfax?Go2ojw$Tr2OhXNwb?<9xzoeR>IS0r}1_G z>f`!-pn(GiaE~~tqq$$ctb%O4YUtQoD2?8c^7x4WpxiZz>)`6V;Q${0lmm3&fHx}z z=WB9nKz9~Er{MRBd6anSTEglfko`wgKAGB)ycqNfZp0BYt%KrapMop_>}?ET1A}{% z01^Yhae{{kb{wAp9V$l&s7~WH@uqXo-JYkYP~!aG$meOZe{Cy>SaI#l)dds)@Wr=& z>=Cdm-d}ZeuL?kCy+$6-igo#Gmibp>@n(yAmmhYiIv;_rA!H@npWsymdeU z88`QSb#{X)L(xIeu3p_JhI2QR|E1x7_`nJ=&Ix5zWkG@CPW|60Zc6!+R#&Ufo%aHN zQ=kL?RbT?vMXlAg*v=3?34T3TIJXn|Hv=MMiARO6Tdy7ScfAgz*SN*3YZF~R=T>Q| zyf1EJX6j!xPCFW_aeW(4ou`NzUmPcu!!lW;Aa^2GQsRNuNMoh=b$|`_G0QF7=N4H! zEJg?hzo;?}dHff&hk%LhQDBjEOqG!?>e&T;gVh$Nu;L}x3=3Ujr3?KecA{a+)oP3 zS|Cvi*W!L+3^1kJ{{bC)@&say6Y1a)3E6@B5w?A>{4mOmO6ntG-^Sd}5;DGOL z*Az}316@BB!L$>S{>8w+K2&g0_*duzhR*6fxp{ZW692{Ys6Z+g@fYQ~vl!n13cdSbDXCwFf2N_m4dL|KKnO&Fi$5v5>uLCSx;^+C|wRJ(-0sXSF=TbgmBzISpd z=XV1Xx<2{@l)}CbsACa8)w&LGT$HszAUv5oYJYH_;kcCY9h5tUMgcNW$B**;&BLTX zceLqvOP4;)&8FJ2Q(9{^z7)dr~0b_e^p=_>-6Ia%z zd>WpQECW4{N*NF9wIuB)14A(#Yu?=~M=1EAFi8x&#K~&-*E@7#&mIQ)eEDkOJHmaO z>j`(!Z|0_I{puDE)iI3#pk~?@L>jm;KIH)2kM%PI>E;zFWPf@;fE58|N-u$dxAqmk*vwNk~%$lmOmYlx5(x9c>wu zRqaBBH03eSA$fq|fmAeal9yuB=kE8haqHu$Z@BKt3*-ix+{Se`mR`!*bmM+PPEGx| z0Rw!tBkKhvEgd?XOwJ%arceDqKtIbIW?FyoPP&JNCmxvj^OF7L_+Ju-mH z^*>Emg1EDrD;2flt?y`!gYuU0xs-n%sd&0PmXJXJa7jgl)6G0saQ%@tD=H|+pMGTe zK&Km840HaDa|OEt)ydv*#kK9}XZBqG~asOq4YC2S~^9)#F zvhuHIWyR$@I`Dzr^Sit_9_EX6;kvDO_`9<#a~xIQB$P!K^pf)LmB&hYZfgh$czFJS z01{Y{TSkG>2Yd)1U$;o0a3Z15Dz>Ft$s5Bq4-U7!;(R)#zXJ_M1zprp$*WwBDpQTg z4uD8luF#xVNkGLyuEQah;Zsi3_{mdY)gJ*1r$IonC|CbAD8<(Wul5K2{kwz^>kpGY znl4e#PBi8`WBAwA&zk;HihuAJZrb%r!)wMJQqd|%Ls<$qL|Rh30^BuQ(UXNA!93(U zYCVDS$`ocWR;+K+`k%^qrBj!IvIKMs0X#3|AKiFy5z9iaXfLUH(Wrp=I=ZTathD=p zx?roWL-o&0$Z}Q{zz>1>KFH7mmjQ^h=m-G-J1s5(fb3+R$tn$6!gINe8j-$x;T*aC zozmZJC+NWdD{lVhof_n)UCLvi(gN$2^EoMdpd;tuAipU$MU(x|GMNM@AWDdWW*PXy zSTIT;7@rZt+43AHj$d^+)@>AkX#T^g`i9St7JGFuJUqkW9MH$*`Q|P1N{)6uB;GWJdOI_(Z{0UIb<91f7pC9hUfVUE$01f-i9r zA%154|4l7zp>J; zK!uyqkMUnXC{;GnPvx6DLx|2RVW>WZt~cm2mhrGpxi3-NVr9bWV;;lZRy`47c*nL9 zF0)gRf0w{(lfYm0`%b~;_?`WURSFlsZ*}0jyy+{W?|;hLsw%7WmyVE~puoW!ViP?R z2uxO*CBGLhFy!rI%qzdUgK#a+eVp$GAaYQ;(hdQ7dN)wUei^JbH+1)A9TJOl8spHo zL(cP@Q|H0K%9>K%!m6-aJp;bf+$5-n7?4ENLXU1X(fzf_eM>ELm>&(K(y?k%MZ*D@ zRzc3nS^>xRRdMcDfbI%EK8Ub)^N*A(pC5qn86*h$FW1pa`Y6l=uVu7NCpum)#oT(m za^FMYP=P#YlCw)G36-wflC4ZUpp3=@y=#Rx+ROjd4)#~m-4&C>sPG*zj64V4GK1U3@CSLwXSnsH|21pXCUDvUrsxL4@yzv zdT`s-^OQf=L4p!|@;nHOQg%}1P~D?x$I7^~Xz#!1eZYI#@k|+}L8k?n?$2A_Vt;ac z?5~ODQ{J8Rf2v1EyPGG2iS?8Fjn}IJ$kU1AxCTm_O+A|@qbXO#b&#R!%cRfF(k7?tHi%XCYD$PYn-$;dv@0ORl$ivEB^Yu|S_1gNtF#%%&p zA#8sC7k&T&-?6OUEVpd^R_VI@SvGi8;#EAQ)VEgL;UGmN+xS4MR6ggs_&O#<>99dIGe5~fVul4uQiH}>bax2T0|Wo3z}wlfrKeZ|TNi ze86Z5Xn;z(I+0%h8WCB%l!`{2KHcRB#U$x2dW|kwcg0yhB(5G>|0ck;qlM~IRJtW7 z^q{L@T)(_m--F^Ppdgxj|1=`r1{lX%Gh4D-N1M0%M;hM`G=)xf|`)KAr#&3Xa zv$ys6N_T@rs4Gal?~qz=9IL+=azLCVyl+|(rO@TOI~*>L{aG1Iw+u-6B*=P)LhOYz zvQ-yRoE2{?bBdM%Tq(+={UitAcd{jWeMH1a{YO_W;)5WXD1$4ar|!H6}eGYPUh z8jwv7QXl}y1i$K1f(D%bO=<5A2yE$8>K`)gizk6>SZgJuM*oXJg0f|Ry#hFN%9L5J zEOiPM4@#xjF|aUMonI{aPF_`=!r#?VeNXvNofTW$${T%1iv%h7D?;MQ4Lz0;pO!PG z840pSn9A|E4@)~(8Ew*cW9b%$X+4dxZk(w8ym=|K=?1Xi#oFdp>BUy}ZQZAJmE}N= zFU2zf{wuu+MTw%!H3kUI%eickw~08aC~xBZ&fq|Z_B$=kOiM-IPFc5x=IXoBeO0=6 z$lsf__LubKG*G&M_nm^{@_QQ0EIZSDXWekGA#9}UoNktl?-4w z75K&dkK^$bUb{W{FuH(41X0n$6W#+XvPSCP=~h(igkWrSkFgI2m!S|pLpSPh2?4Ve z&_H#@urRy-A`TFj^i3NZy6O`9Z5-?+&|MMOT}fDL#Z-w>j+cCL|74$lpnBm5!^14s zDAh{Xt|0dLVi-ySSOP-oiVr1#G{?~e(W>C9%0X9Hn%CLt?b%wt&H`8rGHCuMt9IVQ zzZFVwhmVwBfKvO_GoC4sXg(;$$tq6sU(5ezE5RqH_^Th!J8R`6f1A?*4@fi9_0G%WuMHT<9HBYW}{<#0GPUadQwYxj%t*wtsM3zmVu zyLNFo_-tZa1%1QG?@*RgJra)-uIHsrUx&2fU#tX{g*0`l{{~r`b|m1za=S1tR4aKh zd{M|k=uw9go*}J84%y$0EH4zL#Hp1Xr6rvq&k)Q>h!%sem-s?h~^5z+#&@cop0(W%2l&9 zy6SkzBNcPZt>UpJpj78W8yg9r1p%TXEiL$w$DfQyV_`A3Bv>NTgFePN-C2*fEQ537 zoc13}=~VMS%-jQHzTc+j^h{~u5Q(|0!m^ydm>&!SyNQuMR(3_Svj z`pA~KExoLKpZ}^IiB3%(>TpKR<5qtAeROsEVEzA>h5zA$veI|%+GbivzlO*tUr&Ztc==4r8~xJPwEi&3_+;vL;#YpX%PvsMb#K5=zVd~2ynTLzXT?0kFM zXA27%TJ(#%A0G(g_X!mI<7YTP$+S>YPpp#%dT-#jyqQDy@p=<ZL%N2Nm0cWt#l z>wP4UDYs1n6JFp1{(Ybl8aQ9`n9hC(_`8+9K>{d4!^M~xB!J@Dh=Md;jpQ{8JLB0G zO1j6jC1GX*f6BGWVgA!KhWfD21JrFLIhc2xH0mV%&YeA=T}S?pbhbg3|KH~Skz*rS z^wpt$>L5ZKhE@IzD8sWHI#~0W9%?VY%RZ>Tu`NuCm)izzhYrf{$@>2<3JDNUuJn@y z9~CrKmM5@4{qBGR&Y$z*xLn>;hc3^q{YfTC8CT^H1+>MB_F9em??s-@^&rq>^I1$I zt}0%?Q-4I|`>bTMm3{KQxY3w@V?T9*<PdA<3Ow}z_96F~ zG4EmUf%4e>h)M;?XImCX5Op4tshw00gJE38zu8%znFdhLi4}MJH|V<(Us)9G;{Gnd zhqiSJzYlAe(y?!feX({lpv?rb3thC-`AUfRprgGR9Fy{U%iD)^m%Lois1QqR#Z7sL zj#WTfa`hB#NPJ;fLsPl-#`mQj!Qtj&@Pf+2RbU)9;5h*Vi6%$2v&ehTj}XfK1Tngo zTbNc5Bp88$vp#)0U@!y=DJ{w^(Bl24**1U81I}&ZO+kI|O|9rd(V%!3t zJO%PdP$5J)wVo4Ll)p!zUF^D90uLO%<~E?h-Q5U)uA*u|_&@?E?!e6fQE2HvfmT_# z5G?2v0JM^9+3pDcj&&k|E1-TEAjGK>U-It}!mCvq<{c@hNl{Hr%L-2bK;UcsJLHS! z7&HtvZ94#EytABZK=Pc)zBb@c zs&||(|0bhD$=@FO<_UyX9Ul+zS$|RQT|CEQ9TdS-XL+Vi>cgh2GSAqvmx)isN^nl_ zdqc26=;9OqY{7oj;}e>EbIsyPcLKmtz925DhX;)H;{I*0e;cj5=h>25`DATQ&xI66 zU|tG|7V60*8tSgmB7rLN;7-c_%Rv8x1K0-~K)dnRll+6c38E<9IezW~b$-Bf4Po8J zU{uE#L83bS@#;&L3@HQ$taX9AF!ngF?MY)KS$e2ZMNtJpp^e!&jS90`89yZDMz0(@Z#z}ff|Ko5BaJs8EHVVl`}ote}NAboLmH1 zF=yrK6AQBYtb`fyA1> zq^L_kCeokLWXWw)ih9@QS1*i4>E|)1%HzB`IrHYFu*Xsoe4)I?Xj00in*)k<9Z+%Z z2kc`kMgb;RN9)?8@?emOWLs4Jl~Py?R@R4(bhmd?y5BAM<9oJ2DN%kB)1|U1%D4>o zYkv4XUi!WuUcgru=)8Vr zD^J!(FAIFf*l+KaqT$Ub1dFBbzlVb9-gyw_jph!!bsH&x>V|@H9zno+Qr0`cIt#$i zp@`PXpjrXnB5K^=G{1ra_=N*>0Lqz+A*s)5U{=s`UfNqgT{Rd2{4p3oxvvjh>&*v> zY6?(cFv%e|tcMW5A`*4NU>i!95M%}b3F)4M4P_0=<+l=ma#2!4fZbk2wbuM}ThkqQ z4Km9@U!ds%3if-vGVc_|GX1isa}&}H1mvx--gVY+R@U*nfmL{lSFGax#Wzd_EUQ}a ztvu&688j&4cq#o*e+D8tC7sVkFhQp-AlNWo;n?JlZ4`~KO2?!A`n!k!nNTR0w@k{u zQqEo!P^Bbe{1=64%qgo>zlyps^v{^|60D?{2!kh-zjiB2{aCQZyTVJ1%wb zOMjy%&3~u1qz0)1xyD5sQf^FR0ggP`9~>7oDqhCwhNxF zz`Sn#EMz93iv?Plq00E?My5g})t=sWir7&wmW2*o!g=n1ZMN;|Wa0MnE}g0^P^k*0 zsC~1M*O(5SXX}JgPZN;hV)inmnCq)Umq#?Sdd}z2Ict&Kb`5XxIYJ z1z>?>fo-6}2T3qY^B)*#d-ewR=5}Xa<+JW{pZ~iaq#&zP^^g2dd;C{f2oi{`L>r7M z=bE|XBMjayr9Y)lvU^B{J6J#_-v4rSqB=xzI=2DKVcyuK_?*0Bdhri&N!6=`!M7s?Mv9Oj`kzsPB_C zUH$H?#SE4y#aqoe>1iN93Y8ZF75x4N26W>I<0~*keN!|`Vvaa}A(dq{@6^{~4K3pa z`$p z{^;r>bs2cazyyO6En0M|)I<<2Ek&q~G&j zU*Fv}?ZvpSzkP!lOn?DD$EopBBO|i9SNCma0pJMVM-f%m4_1ZpSaPePM}nw0S3tS< z;=W};O>z^a0|gCTO2mT4Rtj7YT5kU3yfj=R9mw{JU)e{Eh1v z@Smj-V&ymH$G_`s3I_Qp|BS9p07m%N`>;xLT=Y}lJ28((2_R{a_`Vq$YaE7U=Cyvf z*-Zi1Ac29^s+<3NdjPc8z`fH@(ax3=b^TzmIQ#KBI9D3dxdyrN$9n+U77#aqscA%5 z@ibU%V^Vdl_gS7jX9<`&(21+8&O$jL1=ks$yS%ys6WM!!4_8!RL+5p&>LJf5U<=?4 zJopy||9}6V|L>~@{%@&-`e!@p7T=irnH#80OurFo5~yLXkFd0 z4;s;_Tc$szlM>6|rBixUurp2Z{a_1H?(P}^q%JJy_ht&?ge#4G&|V1PkcETh}7#=owUZ9ZKFFUamo zD1wH6ty3Y!dR8sZ&5 zeIJzKihwHnI;x;(dHkS&tje@Th&ORv9=u-)d-5UxK#pbe^&*54S&c)U^5_D({7cG0 z##R2Gm1^We>bqITM)w_$`u2n5385S3MAi^_+-OqE^t;8L(sy}v=_-AE1P)pv{&T_~ zTJawq0>l1pe#gRqKWrC_&f6wC(2KG-hsq-2?=59tPdmFspQW0aS|NiA5l9#*5Q9 zpfR+7`qIyKfb{bI61HcB7>^|nI{0kAQ*tNDAa)jCpXx$&=l0yvE1FHT_%y$NQsA~T zEkk_kKm$dmNl$i>PK)gIH<#rPX|9=AosT7cF}pnGc_YdTfmK}7c}2tf5@^?LbM)FS z^sFl6i6)E3bCuX@uN*A(2@`)2AleEX>pqfc+4r-Gmh<11J|vs4npNwsjo(cG0qkjT zEMHFRt4qt?=nAu47L68>#vLvuZeTFjqxohZasU%)LiEW}g*&dU!3I18QUNhtUv%d| zU~Tzqh^b!Lw*+g7?-3}#^a?=A^beqr?m36PLzl-8eJ&PtW`v6&C}F|WcygKb7Lo%Q zSg!yaezHEtwr=nIlKXg82DjxKuK*No@DB6F6KhiOnAX^|3~2=@r$_!jf^)il&^1p= z`AO?~PP4p-kQV6SP_6M|7y}O~9>P|6dS|)kIGu;ol)kh4ciS1*lR$w1#arMe{Qrx? zK0^RQr~KhOR&LrHpF?L^p33)TyTXebdgqb!0yLP_x?0yJtNCv}%YqyOw3qd>w7;PR zm#@N0oB12}ucDpmV;&MGs&(O>Q5sTtHgd zJ?G_JoyA`qgT=_iBASvB$iRSY-U5o}GAE_4w6_sIQ~4JKU!n9WzuzTHVz@W-zz~;b z^^N;CtnYJc`cyre7%$o&HRvfW2G!KK8+f1y)D6xXnkA60(my1Fa|h$QcK(CRzxxF} zggbikc`*&pT$)ut*+_z!tHl}<|BL`YM0LJ~5Wm5|$jYA<0G8`@9ufgvqB~o;kI%|v z?iF+iKFZH2t2;<5n?o6FQHLpY^{@-q{22}qls|KUtR&+Ra13v%QzNpX9nzZb;(O}z z(%PJlx@n@j&QRrMX&mLg=W`IS1cbK``78=kDLFDz*cOLMz2XtTVcYju-GhIwmO4)Hvk0e`mfTca{#7xsyx*>4O1QWyPE>=FAx7Snx{(H zSK9$zt;5~-Neuln98>9;a?{7?1byvw|K zY5YrqsWNfN$D6!5wB;2@2+C5`v10(@K+*yxG;3rkhSyHG?PLRd&H9tl?Q(ickDo|7 zv3l;}GqWn`wXHteX?di2O1a$mQN7Q(WhGM`NQd8cesH*8y>2ioa_Q={4H&Fu(m)K_ zHen_P#>5S*8HD~gn~~1(z%3ZTt4Ln7oZga>TtijbyU=YLP=EpUXD-P~S_U3s@LbR} z%!ePY_Lf5ueOa~zHzhEs?J~=AC%Xd*3BZB&LFJ^yW#HgJ^O#Xf!A}ruV2CGz=6?|k zj<9$Xei%P&HQvvfU`iS7_wQ$h%`Wuo+=FzDVw~#;rz`o`^3N7>Z|KRoKu2%9QGhd* z`|=xQzh>d(nY|ZYw-?;v`zH#(f1p4L|HFry!u6uiPwwCT=)V6ZjOh2Q{7#?&w@m>c ztjKOOO`IOjR{x@CDx*gel+ulTq%7X*`zN&P#z6<9+?4u`-krxs*VkR1H_x9Az+!NL zJq=pXh6HW4!mZ_|&}MM`mw*E+4-c|4C-0O3Uhk4fs@fhj?jfDBD=1Mnwbkz7W~=&6 z+TSH8utR6I2B0i0m( zv#?sO(jiA43*{$_lWqtrUR(Aay8Wu^+qKfNvD5q9!KW+GmfS&I1~Fo%GuUr@6!d(U zpluK!vhoil@4w_dQA?lb$tz3UH=W(V!5S>-#k7cF_VWz?84jSnGboe2F$}0Y=ZS!j z>R*>z1K7gf9XQCPWVpx+5OA#e^)STh{a~VIeVJ$MLHk@Wnl)DNy0I>aSy8g9ZKbYIyS0SJnzs?{yLFNm=X%sUtKrCS^YK9bhK9k^7`(|$Ev)*k+lF+5p= zjTF#w?|lml99m`JUJO!J*w~|>Sbc9Gg#Sq#K;@BF#B=t8Qj9jlKcMZ4=KU(y zWGRtGQjUwjf~I#+dpYk&?>&{UUJrTswx2u?5Z-iTzJ z`T|qa2B1j8eC6*B^B-;oNb}!m{$sTxXBo@w9sqz`ePPX~t5@^7c5Wt+Yc??1ZvQ=> z0pL^zK11N<^<0&2rgunC0KZRx0pbpTPyoPm=0E{rM1CW1&{;?S3;nf&tf+HPuIKp7 z`EWX=P+mZ@(JMfEfOu(#5;!{xinKg?O-rA%^7Nrn?holESN+%Vt@=;(1DE0C^3UMQ zR0sCB=oJ0Zk7%791Z?!;;PTQt(YLH<2hlsl1<)L;G0l?=LMyruNHVcmo{zy}7vCd@ zF6JWkRj7G8fM?wHPJd%jI-2x96K;US?-)8A^|j5a|5ToA3uFN320C!xD9}sVDWlF^ zWi%ZNeI*7qTvleN=q+FV9pbO+CMmS7;0;mdx$2t)3b5XY^Z&9|%VrM3S)0+fgt7^( z1?48`A3>dau8?yz_S4`K+?197%>W3`eMEvgea8A zk2nC=%|&@aQJ_^L+6kKJstycfPXUaNC3NQvtgK8qrz*fl0Y~yd9~1%m0|j7BIw?pHD!GKAGzY3sew1>ss_%mU8R^Wzv7G;?;IHci zQC^R%)XQ@Nh}UWPKP&h6mwy|&=*KzxfGzZx?yyq0&i|zc)8Z~Ti4+J%fr59z*u2mkP(8i#7?f~%KE#))Mt}tfeF6Dzu9GGrCFzG zI`G#WvjZ1+zkTfJIer7?EBf)|ojfI(FMkRIC=g;&5Uu0u7l1|qF4DsSR>a`))%i3C zYAXS~IU~Zv8hGs&tMz5CIb8n|O{s}%(YblPBtS*YF#(*hxY{AzNUP2|=&C+y97k=V z>R!%U>2+pW#GAV5g~fkYfBUC}PnJ6+xTt=+0XwWh;P<3l3UDFKn+_bK`J2|G2}M#3 zc^Ozi1BUgYPj%H01HP*t0>@YsUG=?5;F->jyegVCjM|Gb`{vavS-i~|Wqs*{v(mBZ z_iZpB5gXT$q(CmKRO5E;#EtU$U$3ddbRj$jl)L#pm@a~=x^Ej;y}_0=bwW4~qJ2`j zv`~=Sh+^V{GOjuG69*8#t>HA9ORv7+J@ROc51BSA@zddfYQI0m>#jWHGOQdL>0q@# zV*ou?I!FYcG-#2PMWpeD3^pHtI~AbB_lT*&hYfdWj^c`caaRXRx8ith>xnbw$T`25Ca zS9Say!bGD6H%tBDmo%){D?Qw4tgnddDYXq$1CZHydzF5>Df`npKLHD$bM46{hVFFqJOE zL^)~e&F#^63IMGN(8ICwp?n7Y#peoiH%2(ECcxPBrLku4`zZcD zbZN5ouQ3IPVs>-K6OOkAoySb-IuO=SC=Tvs0Hn5%w?2`e@}dABstG`Wv+$I7n&Lrg zuK3|yPV?WLWXH2$DJ7J*4J;tQ7yTPWx6CRA{C58#-6EF@It?oP>pPz-ki1Qkj0pAr zDsx{o2;<@K`#PVMr-N#H=XG$~4iEz^Ii3nHY5&_Y(1*QcpwMN_^$swApy)eUo>@Wl zNeLfhi9FzW?@2w3;tc#MymEaQbVuuq3y|anMs+-~i>unnR`{Ez1}gKN<^E;f_|V_! zUC??11Vk(Mj$;{+mSa%Rvv|2N-CXyhqPz5F7-+Gp#lSXu2XNmgkqNx#aP3tJR$1;y z+3M)DJuY}Y(Uv`~zgt?9i#3y)QR+Fd3?&j`yiY{Ypx?sQk;?qt@ZeitB!EZs!;9YR zm+!J%l0_ANH?ekfo=f8z)S*8&V!3D}>rtYD>h)sqyCvioE1`Hyj*J zr4;3W_9mwc1UFP2I=y1ISJ(P9ug=5UtpE&Ybe8_t+Z%3I9Zn!a_ugL?w|`kkw+wVb zQKwji)wSIudS`@czbRg~pq1;jaL(~Mi#*psS(iVxFdI!ujo$TEdCa5pDnJFW^FZjV z{RkR#vf0h+06iGjP*MtQT9XJAFhN^Rm!w%@bOk6dvx}Ton5A5gRJuh!lto3psN{3G z2r?aFYVfA3gH(Eh$fN)-v%JVJa#C8eyGZDwYq0NBSHzH?J$~~h&WmXLy9Tm@6t9Wt z-2~34zp0$zwipJ=P}$`8)41n(l75Hy&EYnF!4puQ;udRIQ5@qXyz^cQIpR#R35P+6_jb#=L_ zS!w;DAe`Taerks4o;s(Si(Yi*zKVw;f+b!yX44+4(x5fJ!Z5;!Nl0gV}XP4#NCuHL2J`2OwWI?*dNkq#XOZ0^}0T(d;%~K>;(X~ z7&!0*6|z@!CL({s=TavC6Wn!~Xhhw06>U=acV`3KX#1kjS7UFK-&5KD1s(kV{eS+y zuQ~RAGjEvq_DYaTRXyCgr}fymP)?eY?6U zrM9E*CZucty!e>xAn%8^8WyhuPb{kIMX;P0(sL%CZ=4Odbk); z`KpecP3E}xK^T$2cZ>uH98?s;mGwkmVjfznf@jzkoYmSDvviSn2m6 zpA++408m>)4Eh!0IUOp<{pBTY1s^PpkD5MO8d@Xdkn15Ri1)E&G}%>uwo*vnze;%9 z?+paRCj~&(Dd6zE>>UH;b__2?ul0V~3!knh)dKPek$obw54cvKrHS8t6 zsaX&DR#n)ekj=2|kG%c$On~mY%ImvjKM?ir>^bm)T%F@1`mDN8QrMt6&%if9lkIUw`%55LNVIG>!xr{C-3zVum zw~;+Ql&5DK1n^5;So(qGpBFd(q3GeoJ+xjTioPBAp4aBy<6r{bxvdXZgR(_d+H9JB z=xjNbr+=|!yy#4mk{S)yz;B(HbQ3ctAmeuoEP8jgDU7ei9vhCh@6ysRTw9sS36l}o z%f=wzIm3&tanl3U09FIW9|nwH;zytCu6iCGq2eNs$GAva1;Qjx4FVj^d!B&q?bD%G z80YD5Cw`B@L9r~l5K^F_%4KX@eYv9pRI%z#Zu?i{@;9vmVjKmt>@8Prx1#R(%0Vx) zm@R<8Oh2_xaf33tcoc|dHNbgwxN-p1(OLiyc}<4|s@9m9wDhy$-<=`A@$$uhISqpW zU48p)B{Q?zb6AWaCjlVG;P~n)LN$-<^l@U|1`OsR0k8mw?x1%CKz|FeVsHMkqQ#C= zQRvuJNsKXI{v*(k=2oQNMm#Up-{qAcZU`{Py~gR> z(U)wQfLL+M2+x_3hrY_#+#ofOJ5=m8*l-{Zd{I`h;m2uigwEQnwhPxbobOIFZ|6q? z7@Yi%u#BL<0463+r)uYvt6 zt#^5cc&1~Pr?|IDeyJm;nf?ikdYdrTa0$O~kC(~U3ji9lvE=^WS?2lOZA$^>ee%gS z3FvxdzXdKE-&JeAr{7_r1%R|IAuF-L3?Ny};dvYnJa7Flk4^&U<~shJ6o5UqS%Ci9 zcfXr|=A~ns_MZ3bC4}-K;ayq>HO zFRtQT?#C(qUSZ!duut-&!$}Wu&fmOu1(^{lOb+kzfqpr|nY;=$(g$Jmmi@)|SRw1I z?~|)MhEBe@DU@8slrN`S-(8#+fZw|OqT$8@6%ot%zJjCV(2O26CXdo9|7%k%;f1TBr~*%p^-)G z_f~@__xSML1P9=W#EZ8Y{EU>jcy0s$dJfqGr(biQR%KqD4}i+JvhIgiVWxh~TMIIi zVeo-^S@aKpP(_(HZOKjwC9!lS4#gx;OfK1v;hzi&>@5SWI|oZDfr5ZZ z&w!QR8C)&~ab!zAGdlq!^0$EUjFe6 zN_+!+sQPl>GN79X%0NLQk2tL_$s`<<#{{@|&AX$8qI*2X@A~YjtblU9=_g3$5C_}q zn4WbHj4Skjk;khOZ%Edel^5`3_R3M;SoTBGnCl;3^Zd~B+*FaY%Y7xGqfo5I2MQ(VEsz8NI4m%M zZEVe<`X>tryerBUd-7P$Yu72CpK$b!FDiQW3|JtUTW)K_F#r81`AbPJ^BtuHpKc)N zywsGJL24-Wi&8rOMd549fFRb|LxM_ua!ZN5c&)*AK!UC~bg!{JU=6nf{>XjDK~Mq9 zwarjTaROOk@ho0nTY3Cm8Zvz9V9gDe%ss{lfWa+%-&J`BPR z61K~V5*MPp!oa6&RF3h)eNGcQj+K5?=R7!B?|I8XfBt~&GNPdkmleA$Cl0qIQ^DnL zv}W(JL189MIRAFt4w$=|BuJm1JKG^UpqhcC_{$sFzVSbg7EVXm6KpZ2fv>PXhON|I9-QSU-V z;mV~H;2ZD|R>eJ~Z`qK(tAnIuM+jDNJZ=1SKVQQsSnee z-0y77KVBzioG=h!$vXwlGN@Y)vQobIM9zE1DViQL(+)`6S|NO6A&ACACpe|@sH`v& z(jo6Xrs?}W^zH~%Y=mJY_Dm0&|0r0BMW@N0B}0 znJ1hoQr*SjeQEYn{qTkawH4sSTL0o9pwe`pLU-Nmv~@ra#mk|HkNNyg;T$T+Oe66g zS`caGWu>xC>@_eEJSa-e7y7=o8sy0U$kMRR&iapYAlCij6s;=do@VMZ7S$;FuZBIZpjv-z%s2&mGK zB~yMAy^EbhZCNp$-%ZJ#6nBopigP^X?XZ}1Q-{S(PS?frA+N4ooxatz*@m+I$-x^w zr`kJ>3x1dA9rJiI8^$RszVLpl3m;s;Dvg*OVQz%uMs#S^%Ov4Jc0uSkiUd=*88B&a z2`=;Bdj>Hq|D*`pC`6Tm1mXSlEP>9ts1`bWcF_<(nM#+tni;-Tw~3p%IS9?H^qpVb z*#Tu6fs&~<{Zu_X%Tu5f6!g6;{vF5b>5+T>wn|72&~T#(l$a-SlsdS0k3H5a_}$F_ zxhyN+BlR=({Apt?H`A$>TiadbUF=s#A4a|hiq|Qj4t^wId76jBL}H#ZMKIk32Qe#- zm&apjT{5aT0e(Mdgt~@qGzn#kM-5&MXko|swQm@}Jj~Mk+X}w`0;FQz%9iz%{d4ku ztt&pu_hNK7)Gr|Y%XTrQmmU(4^5pmH_sey*e4EWwuPa#4Sswl+AzeH8g9ztiI-o=Z zz4+5$cNl4rl$~E6z^RJr{dD|wye1^Rj zx-9@oAZFKpEZ>Li3`&Vr)+GGxFWYLSbw)6?Et~=;3TQ(>9~t!(8ia0&_>Gnw-+#4C zsy=(+AuN*zr7!*3lR4$56mDQz6lZl*0s%$wS2`Wu8UX86 zng3BI*cPlrGx%F+o>>2t0H?3d+8>*K8<3!m>H2Li+KIE&e{Nw`Q-XN!`H~J+-eWr} zY3)^cbY00vXDp9bEm&L}VW;W`ysBo-hig z2y#sP03?9O2ZM6+))oPj|3l?(%aVWG|B)^@|Is?W<1xYrRG`P!m z?=riq`|b0g?}smy^9|JO-@H*7;xe6H!p(Yr0~ID9;3a%o-oHI;4}pXpeXVfOG6GoS zi;#3q!Q3cUag73?58e5A|I1>5I03}svgUn4mr!YgmuOL9We=4+RJc1=`%;fEspy+k zo~VF^S66;_{hk2_1weG51GabaP%z@@N@hU8Gpx#KZkgB1`V4~>w-Kmt>#L6TogwPx zS@7yvw8w{db{?}nl4#S`tcq1eOkRNkogzNjag6fp@^kS$nnfgr@?7LQvGYz9_@o}c zTTnDn@36lZ7$`z0?EjYrNX~z{VQv`5YF>@&xeuA&;=YDy(BIN^1Q6MK7dLd;K)#Bg zX9Efx9+daQro*!?mX_&&DKjh9E1BoyEiftnT^ghaF7(@b;w)%Y*{jNY6ou|9FR|}y zZL3t*;-x+7Nw9{i%B)(%>dgcF;He%Md>CAp55u+!HuPqNnN|wSzk`%Juwcr~p*0l% zsFw*=<)628Oj`=L57$>b9I$Q+@su-`#O0p!3IsuTil;yH!BU8EEHIjw7%}GWpkY%V zcLIQt0FZHauCzRSc0GCPfTeoH%D1VIe=#>t?>x<)2us3MaYH8y`jN?C{tvtnt@diK zJzgz%NR|1mn*Z0`7ubgMcm3|Sa~WTI*v)>rLUDg<-1>77{w+oPy8Y}Df7%l8x~<^f z7WTD+3nAR6cPfPs6{yAPmXe+n(bzx$Bsd7BSWA*{`NbesU6yx2#9_1Ba*Wkm-Uwu6 ziMT9Repk>Hf4dnkI;%gYXV+M7TI1bMV;U2x%$t{o%2Tz&DgQ|f>y$PY;W*8AY(=Vm{EpLwsOwFc@9a^^ zX4KO7LaTpUP&8FzL&aD9rxf_jheMB%R6d-gaRX**li{hUoM&C_r}$rv)q|??6?rDA*}yzAqk> z^;m*+?~cBnS6=vT-fznScL0Mxe7_x_*;0-`4JmCnVO!4KO^SHns5j8TXd<{sH%*KT zq^vwj`>C&{8wAvL0rnK=(uW;SlcTcxe$UiR9$Rf- zeDEHnm5=0$#6{L3pj-I(Q9bE|NYg{BgG|Ycc)XTS>wHL(} zK?FmEAHK^&>rnBIdH!da)TIoZ4-G_cS7S0s`HyqXLa6OkYvv=rx0;`sJt_SyFww+S zp|kp5Zxnc`$G_Zz;A|Oyz#!tZ$7;X#^0Hk&4g%*#am{GMM#~piu|Y)KX0SnqQ%1si zg>-v!>o?+EY&BO3cA;AX4!kJe7*}}(D4<}nYL<2tx$ z*-Sb$FSJ9YXPp^P_ncc=2~PhJEz0{YAAjJEE(Y~90c_}( z32J_uIOhca!^yh!OKsOsw+di?cU}aTD}qXRj9{M+fIY0_O8_L2yz3@hQ3WlvQVM;Y zfFjf5%B|xr=XY9Mo4u&(+fv+<5|2fS6TuTGfHEd3%4e(;`Bu$;5HJJkUH12brJoPl zTZN;Cj#F6yR`tc(%B?FhIFK<&nXlb?yaJTWf9l!o&rh>|sN43SxE;(l0LCiM+q>Jr zfiLw*{dj5Pzb))717VeWCPjaF0x%GXE^x%dvm4?{7TdKhzK}ljDzKz%F0X}M0XkI@ zKmypu~eZ4(OWlz5Pvntgev7vZVwI!scyF z0XZdGtIoPGtuGxdIwgJbHkkUUEBnURKk<4s>Tf0$i%Cjp3-LQBt?CL@tuBocMg5YN z>!bduGCDEIMOmsIoM$60|F%KV?Dp3v4H|E7t=QInv1PUGAD$0pz~}S(4!nB??Iz&h zmgWU8V1iBMJ?16n6Up%o{4LEF7h{~ZDy6?5Y%0r7j$18AlRKyq-l99W>xSHR3lM+b zzZHm(-I7Ca9d#@mezmQfdE&=R8&J<7O;twmV8Bdwb-U65C#ZB|`*P}OS3S?aJ1%YF zyEPmo1h=;4ol!aylae7yYvN@pV61wsz@a}Ix`J+r=(Z7XpL!Z6USi|c0BrMRBkC3pu06Xm&6{JU)!{QRo)PxX4)dhm%i!|xJc%Rny`7UI>lNFHLc_tUV; z8mtot6xs$D4xq3GW4h}V1gA4tzgVuihC(QGil6!5?mk)C@i$ttr!v>`&0~S{V#}OT zZaYAM^W}G&sPL1mOR0{0urbOX2}pw9EUlt~!LI%^7CY;pzid-zzICB9N-4SYRXKUt z!q9!kHBl+!R;OeUr8;}fW%^4+Pbqs!p`Vm`iEW81+mST5QtgQT3+D7rN zOp1STC0;;;Ln|uxU0}jlr#nTvdw%LD0k3v|!<5D-z1zI1S&4JJCcMzWD5mOzu5W7o zCIN%vosi4X@vyx}EuXy*7LyG)U~g^l-NW5eotK3z$>v2EgTE%KmxM*=I|SXlVTQ`h z)rcV>qKx(0!l&o540sm`jk}05|DE#$;Is4uSl`2}2w@1q1n`%Dwgu$x$Tu5Td!=xu zefl*2k8FPc54C=(YYDmB;#78}pud6!ir$@Q7tKFRqm=VW;TUN!fDCes{HOR| zgQBOwyG|Jm99PWaMBGxK0RRkXrLJO`FTD0?%h$Wc%1lIk6w1`)b*t>lM(ZQi2NuLQv9CIZ=cRDNlISzTx`{$+8js;W|459PDRK(;1lOMQ@y z9@SKBZN@7DQFb~4X{P1TqdM+>o{!?9m1v#bn?V_mtH>2rysT6zsFjAxVK;m)3O&2& z7q1NAVWIjBm3#Iu@crI4ummby85NZpF1!R#05}tO;R9Qlc2A>~w?pjgq=McIg%wBg zx2Sbo?TW~AR0(gpF3u$=rPHjU0M~dtJ@2}(1o^4@orMUJGPZYsR{rXqR8+)tEzMZgzOA_U>0 z$y!V}7v)R)EOVZXGZ`Amdg;8;%6vZMzuU^8_WrY{K)-zeYlq)+8ukbXG3J)Ql&N&adfs?|0w?e3=lL4- zXJRzy>iGa^Z60DoK}FWtB<*2VV!q^EmRtvGc~cq~(8>D_7MQ7!abqc-nrsiGa5N zKz+A&00?@alv_w!6ky2XkR*ySi=F`Wz(eLYR)RyByC;ArPYN)4LD<0KZ`Swkcm=#3 z8rYR-o3=5=E&YD4*k{jw)3DDFNLGK=>>@8->)qMo&)Q>M1IjrA%z*bb9~FT;9tWhT z`dKWOCqhE>DvFGgH6;zcn^FHk zK9~om3z4r6aV1?ST{LBOVxzJj{TJq-#B2;oOdqEIv%cM`1;j^6Mc1Qi-e)48E)SG# z$DkTDp=@zUKh;URFUo#2Nrg_=&VQlDsU@;lZG`ZL@m^1t=I4~BLS{P`xth7?{96ZW z7!nnDR>10>b0bSMDx&&;y6sJASpZ>`_Q)|ATsYS7to-La=owUSXhH2&Z$^QOLI29x zUsoG%(!?+UHG-y~kP6vwuQrx+A%`+>(Dqw8-tde?1S3|TW{^Np8^Ngc(y7;RWRZeR zeHn@|7Um1|O$=HfyGj97mXG3wD#nC+!@0I*UWN9wARPIB&t75)>8}#J!0kVc6i`?Z zBw${-KvF!pKWASpcaGn1Z3TVlWD`f-=YhtPEK*BH1#DF_ot+?w8w+%4p`-xol zNtm`B@be95=6t$5KJjcweaB%`qK4I{iMjtHhvhV+iswqUx9;HS+{NXMHIs+$s%$mZW+br zJe3${cAfsR9<0Qxyr=k+ZZ>`UFZ>8M{Zy$29Dngo<$3Bxd{)iT#g9e#-8QR_!ZavD z49ri6hVQ2I9dSG4tg9n^FU2m9b(;UUR#ASPtE7qfpZn>}sw2rcF;;vx?fFu~ZuhoT z;%1c#ZwKfhuxuGNc!%AA^aBe%+^D21*mwieen(2IH6?e~?6C@K@@oh4-8g^?&dZ#8 z;>^~RuRw)5vSZW8#tH3m!ex+$Jpk6<*INmKwvC|jfAY#B4`*1U_MC$Vb89UNrT~R3 z#jaT3i`5g9=%e}N;eM=uS@A|8eGAZo1fYc9l%M6i6IvNH{(7GTsFSa6F9A4ZV_VbD z@1?XmmW8(i@HPju`irdud?;(;pM0$$Z4D@CV7oy?=AV2(V1N-+S+{vU6t7z>n`b}V zsL;;-!D5e=`0l)fm$d5nCEW7<?HFIzwIs@B*@2v9Q{WZDHp0o_IG;tB=-N3E@4P+S&4PVoI7qsiP7&#?zmHJQ`3D z)OVg_)!lI+ww4yJ06X8h?NAfIngG+={FaSvi1l57zneVWWZ}9sub$>V-|7|3{P!xb z@s_<$PHUd_iH-omgkHCM+XRJ@aDYmY%g&^Y5JHJ{5fcv}Jl+BL8@Ep~z0w|ZI5e5J zS*ktdN6pk+E#(6C$w=0wz9RvVVXeM0x&sCF^ z&T7j6dWZyVLFp*RpbuVcsk;aICkY-W=ap}=1f%sI=ShIDi%fr|VbnJ@0t7iF5O;2> z%+Q_smzn?mN9`~^djl-sN!UCKQI_e1;I0-M+%km+5Q4sfzvZEV_zqp=g>^ej%a`js zfpptiA}^J@Y4bHAKoMp>pJou9ZE%JQJPV7xIw(+`GxM^ojMHL%D(Ec~)|P?weFY~z z3NO~mzft%RTEQMNB<^Z^d__;FOm0@9aO#^e^IHSD%qiR9=WO zI)#bz`7itkN>?pb0yA?uTZI9Dl@Nj1ln(-T0+{6QXp~Cw=fHb8PHJS=Feb#$431CI z-w-ST3L`DH)obxj;u9$!DvR@24+|7HhHaTuU2WgQM7XFxNRxwYA^S0R<;Ff$K5 z|Jk~4bbxBW)rdRaom9B2lea<;-%MWBJ4yDOw!{u=eRNtLvoxy(n2X*7A-)xF1FA=E zw#)C|J#er~qW~I=^HWOy&w>Vjqu~GV|MUNSVMqVBAk*CyD0n*V_5wggSIp60e`6RF zc5W+RbUf&m0UT{-Uiq0grq{E&f8;bc0UB!EAb@mIB5%q+e?RrBabCd+&QH}X@p9G9 zMumcmnP0;LwR=HT!UV?&({jxe``sp>PF(@?vK<*P4 zG)H*IWLksq5~4jRo^U@u8CFXYTC+_lK<>TJmMMd%;Vftl^^xCqoJ_OSm&zRtXtE8A zVtuh`|M-XQqEkLqna_O`RG-vZN+;)k<+ERyQ0F!9rmSYN>NL0=L&cM`|0mu5U#~9A} zvjk4!l|31GU1)t-+#}aB?WIh7*uhK6;hXPzt@8|S3g^V5lzV!Y#(=l8;RU_SCJhTc z&jQ-*O`5Of>pjA>Jq$h1ZWce~Y4$=(jyoBbq}SRIxa=31bpnLCK9%EvNNZ=Rlx{T< zH}z-jCRq-@>zb+RF_F?A@(!x+t!yPys-gauv-H1fSYugy+Cog6`HqoYjpfxh00brv zB+4Jt6~**}xxe!S{^GX*Ni-;p?+Eirp3?;FbRo~{+_5O1Dy4ZR(kEWq0H6W!8BpKV zUrGfFfDe|N?kcF1u4DMufcuXb!G}E)0r_ru0J(?iVox1-4u@MMcYF9_uh}!{aMLRZ$7dQd=bt85h`7;|ng60}7cxGc7g29) zs5Q~!kZ*Y4Qv+~3;F#ev4Gx8JpQfuT16srTuD;$m329p)vopsI00&H?xE4`AE~c;0 zUr~>%FvTDMc@FP|13d#!C{11YH7CJ?xww~u3~xXS7Oq3p6NIvL@ZKpp%6#2QGtgQp z{=)ix+9T%wUO#80zsmo0i-g=BCT>5VQIG%+r+9_O?{17#?x$eDYQOSwm;#?)@ZIxn zruFUV#sjte3a#Zm)#;)r zce+qC`CFa-MZEK-?5-{>GIs4^aa5(5MB9IRh~edJENy{)Kz=Uz4dWx|b3ow(q@%Sf(>d?; zTz^?O`#DPs9gJWm7Cc_;It90KiJ+%^UVP?IN2$bIqLh-}l52OjN4*Y{puA44>h+15 zi+Z|AL5-lUUsQgI%hxjNv*P{=EKnDf(Hb0d~3?H0`9151*iUs)W*|>3=CCz zWq>cf`ZVXc_KxqGvyc-+Z$GU%+YZ*;rnWoG8vkY!hUN+4CtyrUn6s2LzC5^Ns|3`|)>@XQC z=_UaLiJoRZ#qB_Zy8id)4YcRiH1YXcI%7_RS1_UT{P^^$L&~(GG=J0Z`Yy~l?eMPy2ntCiF{RC|K3>b z9~*9M@5KMG%mcRK_yUw0@RqNT)=B^llyc7?qY*E7T5n%aqF$fUaVNrc@i@){K#^o^ zm;jQUx-M!r#YJDR8W#7ioepB!`Ldw+9ifO7m_Q|lh>{o!vS?O0>211OM1Blm`wLG;Cc=jV8h9BbKp`okaQY|Vr2BojJ}~kmpsfpzSB_Zb z7m@0EoUrybgB{<+KwI-UFB(dr!@6SK*>WCau_!M6Lg`fkaOs-iO2Q&ELVxbR51tA) z-~r239-y|jR#f*kP0M?Dwb=9XXifZPJyc(+I(1-xd(V__;?#?Ro8gy}A1}9U8%4RC zw+(r7KGqCJ6ZP!sa4Uyt92}D$BE|mE&jtKkn?}9xdV@fybyH3e3Nc{BLxVyN|3y5A!sc*Q%5F-Efzs^H|&Uv zAc6z&5+RQAZe~JB?}tI|!fN3?+aII!yHX}GFE>*o^}; ztH@3H_hwa!CY}oQd+nQ`Csg(`6s>L_$fdc=8$khf{a3ZBlu>En`oX2JCXdvpxK>;5 zGY672cmrjVI!JLtFs^9!wRY%kC&W&!v#Sz8Wz*IGT!1P+I{d?3TeUjH@p=9W9=Q+O zQC#;)A%j3DSm1UZalRwkiTdE#Qx|8wHtuY2c|rsZ zi-HND4mVuNxIz>8)ZKF$Ff#{6xGbS`%ZnfnA}eXxy5Eh}_;BAm##2IGY~o>k`@CPg zz&NxPJ_`W^yq&Y4%6Oqux9)KJUdx_9Z?%Tqo=ZNeO!(W0Y%i?tCem4*{%tnAyVp>NYUixO{{BvV~c5vaEtzqtx@S0Q>PtS8f~F>TAB;33GFZl?^8@ zEabT!)s5X6j;lC+2(JFJIw^Wi2weBh6GsoAnSo**VnxWkg*40ZZr2xl9U;HV)C;I> zH#Yilu;kn&-x{1JvE}AsVDr>JxGgx>Oi30UeD9g@FzVY0KT0uT7uXI6EFhuP`45b5 z(Pt^ysTJs2-zeo=cUSy}E!i?6w{Lh2hJS-KB`0tgbQ z9>rS$N?oaqA=0KR6BXD&X^jp^ELR_rg8y>vz>8;qQQclZgsz^qYZgnKe-JS6zf)`Bu zvwl(P>(F{fxQ#%^C*L}EW{j(WkPBsa>s-_N5tSD2rk>z@9&H3ApGgt-p{%aXtbf^% zAL~v2Fmhh?vVTkHbkbIjbrcG8T$C3L-r;~Lz=CBRZ^?cE@@`OmKJc(HC{#!dO4fH2 z(O!ArgqCsnO$RvDO#+~*O_piCSuHJ%&gI~KQNa{b_JhE+zQ4L&aye<=u;KtQaDc*) zq2|u{t5e>&%Z>m{R7(maUpa@@5uP0KL3Zu-0XP`$$R?=Jqjbav9R@TtanAN+*Q4|hgII_DT>sm3f@&)P%giyhErSa@PMES=lt#<(o;OE% z`WhfqBcz;flr^=ZbTw@ykn_{d-0Q3)N?0N{{gP%3G{2M3Yg>U&Q+z!~=4(h7hkV*w zPe|!a>Fj_4QvTn10L*_7Cb93-e*S$p`Ho||jC^R{>IwuC4(-Bn`_b!UE8l6ns4mY6 zyqx{Q>tNA}*8x6vhQCew`qdc(FX81p0|i!aTfQ0O*Y2{t#Tqe-z5r)l)rz0EGcN&3jn(Z3p|5(tKtBEAMAa z-~i6gd7L_>#WJ!okDgZOMP*jyG6fbC3(&8G+s11E@RFC!-#S|kGI6)h^M3^bSo}jpLiOS>{ZoCFVsA~_sg9!}+tAG~ zbpPGL%hD;ubDS@t-`8|i3h5HaENXuu5LP^8#1@)8b}rjf+qQLjiIRl633VGVe)%@( z3Zb9Z+J?&xg8;$pqjH#~ru+nmQ-FFF=1{0?()In|)5lXm{HM^sjsvvY4{*?`1D_%( zWmq7qyj*6cOviUzD(?&m;D1jRu&;XX$@i<|bT#x9oig#AIi=(PU5ARYURJYPK3yBw z+rrXh2n)&ymGgf4My7TCt-u+MclyRsJZw8s=B%+Gqmn!MkB7qut1^a)e{J_7YiZ|Z z$ex)_=f$H0E}p;4uqO-4j;F4ev07HCU!MPAN)8k^0iZQF(W9CFP`98u$@!1l8%UuK zs1v)@=h-1PyZ|V|TOp1yGJ_RJhtUcT^~1K*^*^^btqn~XuZIZMp;2#mPO`cVc%Fkeu0#b_ZIEN2Zm-j4Z#Ga6O9K~*z5pOJRx}f|gWxs;k{jz*p^98tj z3zHWE*M=2*q$_sN@fyeocpgAKP-24d4_;q|uGklx{uW1hZkT0J>P2koM4?-k+?3nN zzN31>FX>p9>g+t;JiExRtCx#%zuP`mA^ruO2%lxEWu-e=W6*H-}ne9HZaS@)Q8XKO{a z=4Vj13XyVqt>F$zeU-i4Or$BkTfaKhc&LIg0HC}!jOd6@{gsjR@IdaLQ_cY;s^X(3mMyp}t2U~|GaO+bKE~Ox|=K|KM9u!hL`s9ge zqRB%80o}ZN-TrX%5KvxkTn^{)2`lJy5))Ix#BiAueSCf`r_+g==`R70?md5d0X-Cr zyqOXz-xqM@cMabKq`JskPD8pjfMy3cZbK0EFUg8i9xwBK)HOQ-u}*bE^(G|ir85{A z^IC_nMi$2EiQ9ULCmn;)ouV%+Lxw_*XpR!@y2AutEHbjSe&GPc-HSMYYwmXxyUGoZ z{dTGRCKW%GvrEO0<7wD{zwtqZNP$j~rQX}`S03{%1k*~PxPKWDO*)R(mDO?f%-uVM zpQ&Jy_UBi3Kp@g=3i*1%JX*LWobQPXZ2=23?kV3jC&m02>CTwV#+4vT_!qDhs_zBU zP3QvcRV`L6n1|}U`ZjgF5Az?d(*yZGjjOOMsP4R3PpQIppc1gRB8aP2#n|$OFGB6p zEe2(Lrt{IT&Y1(Kb6QUQPFd^y1_gvy#5nuO%|FS0xUB-ppWN=Jz4@JY!;6C6<=2Im zI>y*XwH@EOS?4bZ=L~@)IQdql3t^B)bWAY>!Qw1v3KT%^fX(3i@S1dL|1SNYl*{!z z34n0P%U-BK+054=;w=TpJO$&1@|19TCaw$KwV3m1H+xU5?kKV+S+&?xz(qaP^G)7T z?({EV+GcP7l#Flp)*}=ok#^OJ$lep*ntQ`(ncFvA6V9sKR%X z!arUK^dNPp$k!Co4qvJD3hW+;HY zP7IVc$J|kVb_CzfzpU_`>$(ehaIP_;YdCKPrmL8@L0)R>K&l7qBQAm+{dH@ETOk1q z3c0fU+b8oM6;3tUpbdGCf0X>4;uIt7`VF4l#|!!J?gsNX>qej_?hppLm6QGzPz<*a zxByc0FpBY+>G+a|s(0VycaY%*V!s@Y_?_^p<<)cTAQ9@vkHu@?nij$1@c=4rZYc|t*dRFmY!GTFA&mI?tD|HiO_stm%nJ|KG#US)S9ow1Jcmkxd zK_Cw?pKjr{(3oj4=9BMJzC5KTaZ-tRoEL)%qys*+zpE3MhoU6gsKTnK8BN{(8Tjqb zhZm8XzdJ-+<6DV@=*gKybx>e|r<>RsWspwt#|NORZA&-!tjV;S3?b5Y6IR9fbdo|E zSMmJxkzevjzyZkIicY8Rhl8EIGD@dH;~W!imfb$mcv@Tr4uIPU47L{-DHD4DdmWgh zfU|8MEn`_6LM0HD$vOnGYj|%h&ixio-}y$URTn4&ZvT9!BZD{nSq+K;S?R}i?DDqEs&2DDBOZfVR2nLac4YH2 zhaN2&Xr;oq^0CutFJ7E815QS3zShO) z2rMiF0N+a2mLAlT-6KtS4I=Yh<>4&=0cQkYyZbW%j26BMVw`g9`i*lvmYMw5=>0T* zrt(z!Pv&Bc>+t>nGDshHv%J7lgIF6eJqviv>DC{y6NJj7znAtaF@~4n3!dH@32)`T zhFeojPyaEvX%SC}TTCmJPYh*vlNXDW3Uac6{xQV;T|=k$S~KKbC2Xz$beMZMtqZuj zvH^bM#6OZ;8kMWQ>ei+G-aM%SK&bi8Zu%H^@m%G0zUrmB6%3Nq6X9%| zz_^tcr|n%Z>QcPm5t-Acn+vvFP!C?@^`NWEuT-SF^9VYxhc3>yyxjik@Sx0n0Rn3w z#l)7j4J_;a@&wqpXxglp(-*)1h`qfD5{Mt^P@~|13u{I~!f}ry#838R060*Q-?=2k z6fD$)#F_O9{fc`)1RmhEZ-VpPv_C>Iy47MlcjATLv5XJnr1jhs@g@(jcdr5(fUS(6 zDtrhk0gamgjoF0t@{g!3izXN)pz?f3!{v119jBk|QMxX#iXV%r zF_f?Lx)|b3H259Ei%n4IMma7GRvfRYZ&X>GVJZZlG#)>XAZF_!r3TA)CS5lfj0Rg! zIXpPKK`HuS^m?KL!d(=x-DJ7SxNQKg&RPQA{@3(r_P(R_zYzditI)Ln%>@T=wTDFk z24bth*ZVEbioL#BWmMM-?bD++*db7dtBw1$$pzHN&V^%&g z9nh=y==k|A*AoY7)d_lr^KDT6)t)8H2L)E#liB&WJIjMGx7#fa5N98pPW!yOeY6C4 zmeITT9(WHVWl*$V-eN!=3kdX_wJlrtammPMnX%j*iB~Ugf!Sc_8$7`F@nM6tOJS}N zP{Ok2ln2&hs^j$TJKGS-84&7V$7#FC<^A6xbajJveE|YlLFfBP&;I+mf9>lbDdOvU zB2Lu5VR?`n4dV2{zykrngE($o=T?K2A~q9XgfO}K!}Wp$*a=SoC}TTNWWnRmDRv&) zg8||N@aNrMC=`?Mi{wLaK=o}jXA|7UMReX-B5mT;o32hH-g7?IsZrlrs@*#^!;Z{{tdGK$)#G3+x6fbFul5incr!z(Kx9hH(zJ-fS2X63t z)s}cD^WPF!{Jx3pA?85>FL6o|A4`7~ziD_-lF#T?0^#ME(v4vnEFH1zagsjpk}^1X zpsR9_2Di>~n*U3X1*_Nw)`58Yd8GkCm<7}whXks&>B1|ZwF)W3St%4qpgkxAN{t+# zcobyieg91!lc3r;lRD3&1sw3fepznOr`BUUe6MaCSOevLC?P7USdu63ph_L;?+ch zzm%B=g}Za*SMk+t4Mz3qLh6eL#a;o||CE~qMB`Tj&b5P<6zGLSq6hG5-cJ`LnxT-!=-5F%KwXbWZ5)*G?ry3QkPj&S5epLSU06`F~ zUfS->*gQf4D5&UtdYS$muR>mUcs~?8$e*uXO4n^f*ifY-b$XK`T!*mvWr9u&!0U5h zTwYU%iJ!Q1C%5nhn1U3jNa=q)PoQ&AO`Wy}4qF%5WlbSN0?h`(x*F;G{G)pCf@36l zdlXFFiQXvveDNGx{Oe(NS-s~vSjrviq=15ab=@0u95f-mGqL=EBi)`)T^#7c7JN_X zv9)^j==!6(D3E~xeMpoWY=eT6d>>;06eS&U$vM#2RcuHO~Uqi zsTvRec6&N^9>h3ZEf};Pcnh|`e^74!0tXQMT#9!BOuIej%0hi2l(sNH!11>J!h90F z1<1m8o^gA?N$a@^l(zw&Kl&1;m)9N+A)uaa09pXu)GY=Mo@ZQ7EFbH|ioc56d8O$g z>DM@=4L~3Dt}Ekj9U{Iw1Uxf^LPRmB6hN@f5!i7Z7g3}Ry-Nrcl#S;Hz}V03_OKk{ z0D(G3P^aVb8p^?KiWcz zmie8x-;mZ);zo%z(Ujt#JR%!RNb+}taTD)<;r#82O--Zs6L#?e8oY{Ps;M!MQIS)L zxo%ptQ{^d9Fbu^sO^XnJRo*Ji4Uo9$T)#tbLF1Q&f5#=3RmS5traxoOG4Q+4^4HVv z7uoer0P*gHh$@|$P(J4ylIwvi^AV@n3IXTQ`zH!1c#2T z@+JB$4wcC+f|W*vnqLNpB#&U8nbRzFEbr&fK!c~ZO3CQku9VOtjbyiZj8}mUZ_A99 z3o~7;i4zas_&d-1Zk2TLoy+tDepFg@H20Q%`YK0D*7e-VXw#sTpTUHZzn?ncjbCZ4 zF5@^KrkN=O5YSTkS3R~!OtfVeu4#X$U(N zBdIN}7L#VnL$NxOqVJGa@;UaNMlQo=3V;#yoKJwHIsCL+GgJFPxpx(jfrncAavp(H zxM}Qs=jIw!_uKDJJlSsL-PW>yQuuMpfLSZt;I;tt8Zb-)iaVYgu;VOHowgjHq@GXt zuShFP_QwO@SpCs60lB2_Ee5!?2(;^TT_Iq$uHK)g?OFrh)3ycRP0D4^_H6|yBxt1E z#W@GNE`WYo<#FwHt{8ZFH>Pu5r>zHcIRh!tI<*@IT_c$7K2<=;gj91Q;k}YOR8X4s zq^Vx`Ne2R`I4=rx2aEVa+DVz``YG{CFP5wKrR9$_zKhEkmpZ=c* zhq}Q5`_p&MH0-GH@Oe9g;_n<+*XTq<~TlJVDNjg`*)DfLn4>S2gG> zrc<6cu!Xl3Mpt=GWr7F5krk1#*E-;hXYI&@`On)5(r@shLfR<)whv%u&>)?C)&QWO zxF*HC0b|p%TvHc64NL}QM+Og8J=GZkz~hnk2W1?1-hxqipi~EcYn1C31-?78hOPLY zfB~=P8YqC^Z+*4^gmb7MDb^jYJ_uWtCfB(EZLpjym-`^ucyP z4A{_P2KT9DP2 zOcGJYmrwjgjD_HWn$T@qP48X@kckP@rJWG2Pf;o!?Cg1l@-PVOn@;K4vSaiFa1(K3$V06d-ActHke{Pz2l`T+@>y=nwDb0_ zH=x1fLC|d}umoIK8b7FbZ3WCg*~PIHG#0+bvm5Py#eM2)&J+P40C-cvbL6GCL++&{1?{dazNptwdWgHPWg28;Tq)(3c#VQN&a`= zYzjT11I|cb?}8OcZ4bz8v26$~$}{ztT2oS@x&X#ft!jcXC2n^A_btWuEuw+wvyZa~Q8af&DCr$p8=9yy@hb2XEz1%UqR( zki$RnUYgUn2#QXg0!W_2m^qv`=~e{DgFU3o@bDMgfAzTw&@-MH?g0)&t;U0$YWu6_ zrCPj!b+nqQh$FQ}F)1hQ@>R20-&Ooc!~FvSi$mO;P7y|usitw>H$CJAJgA_=GNmKE zf*6Y26DVS8$TV$YTHtU~AjZ^JzfP9J(Hi|CzYLysM`>h5ls65q;=j_ZZ}=DEV?6xr%~gB# z_JZzE!frKq;o_15H1J-7dZm2SYQWt6q(f?e6qYD^{-4!v1{2DSSpw`){iL=I1bp)Z zQ<+tnH}h+%HENGwqen;GN0&3w`1w|104s@gt!a^Im^BH30opig?goGNt$@ z3qGaY-I@8*-b%oVH`KeZXHhqYIw0?>+a6B&>Ci#EsxS4cgK?Ar2)Yt}7e(@aQgrX~ zztS&kn*Bt3q@@NWGO(=Hp_2bke8+ebz^nj>?|LFkX@BK#J(ux(*Y$BUTh1{Fu#f;cr>*grE)#lz8@slNKjpI(azFBKCq9Vm;WBBE0K0!HlPqIF z%TiR)2Vt58{g?UlYv$ay!qjBH#GjP&7ZSZTyVGS*%x1Drx>7U!rMPIK+ZFI&Oma}oJb2IRNb&VSdGsv~Bg)@#F6Zk)g2vba|Mp+l%fkFB_H~Dh ze%hDf8*ms1dj|Mc$Tv^i-|~{nUR4RqTvUovpC!?vchyFE;WtifOC@Fxhr>&Gg77m> zXEmWh%;^ucaaZq^HrDvSrox-wN)u&)e5m4I6>hl4OPFjXCKxupSBm^p7ba~dK6Ty1 zO1?K~U5rX^@?$a5n?))_Ttz3PhuwzK?-siL+t1Ob3)9m-;8~540^o-HDGxMM-l`av zwtJSm{KhA`!Dz!Ih-Pw56QF6o-J->5Z|CEn#^WU_k-^|we5W6)0iDw4uNOT*@OSu_4tzo)5-|`+PfMZ@R1-Nsu-V`>2-efSO%p;f z|90*yGt=Mz+_$cXwUrHst3tc4gcZP})C+a1bb5f*7o`x~)m~fV_F_jAO1bf%8`fMmmfi zPw%qgzvI9GZ{=1mwzkrIJnr43(83vA)!jTv+L>9W^8kQ}wr*NH%uvqbF<}kkW;kE* z1O^e9CUuNdR-(60S=2-Kwi2F-$x7%hEolCumA~04C6!n)>I?tf)yA{R*7j&to=dS6 zxF980&VHq+i)UUxP+9N5VrB8~yaE`2nScPbU4YNADRlYZT0_oL<;P`y0)%i|Isjq< zTh_P#@yEi<;(S*Ncv0%Nl6+j@%B=%{YT_Q5m0!NifI17o0Wibw1AY)KlUsNentGOX zT+}gc5lr{~tek%>!xKo5I|tu6vE{{-Stk~Zm-1Y(my18vS`VJQ$g#!0jJwSlxO`82 zvg=xuZdw?M;?KedW*L;1UO%qJi7tF9-~5AvH_sI|s_(n_{QVU!3RoD8-mAE(o?X3E zm-4sn`z!5!=g>}n5wV;8seg$jY*`NrSZR^>f_`^ArM^C?v!6QU-s<~l4UhPMFLd7( z5~A|GO{$lG+rJcI9P3aqUG->Ck$~@V{b#`w1Y~1Z*i@xnpo`nx&LcQ*;Q#^ju;>Rz z+lkm+>R`C@Ez1;3vC8|{v7B6zLq2t1`sC`bZX)1=1l8eqAvtQ!xq=945Z~ZwjQ6@y zL{rX-05C(qxR0Or{ny?x>eaqKVkirr^Qbb)F9?`n&s*R9Qukvs1hk5&@>JT|v!(__ zO}BlSm@5JGQGzeabjDi(h~ZnqxXU8al#7Tl%dX7ak5-?vcFT2fn*V}-A-@bGzRI91 zfh9`0UtR$10frPDzNKqpBZEhs;;gEMdDpGlIiI+Izf8MCFHqc7y_AK%Q_MSn`BjNW zrT@F<7_g#`d2$7n!m)moB#&?u28@=II22S4=mv;W;&*rEJj6<4@xL z!@{R5MJeA#WL0^4^G%6^N|fuw#`vI26}mVIQSZ`p={fChGGt_!#QxXm?=by4U5m#= z47-a`nRI@@v}V6}ocqKpZtrh;)XSuN1v5twV{JuyXfS2xJjO|YOTu7tx-z=A;y1J= z-P|lupli1kwAOng4nQG;*JaMbaDkJG3$d^f>MNc3FqD8n+9q?F0$z+(i9ihj2|I&V42xE64k3yQ=!0 zFg$|Kb|>&2_^SItRFm?qCf6?Tpv8DKk)^r^{Dyk%i~=Tire_t#0)U1e@e(R}h}j6e z-mLZD-LdOTaXSqZn<8mMX>N1v#Q^aehe^Lc8_P|nnesPE+lgg2@lEC1DflrAp@4KD z@-uoLP5P<)e@h4(roX*Ue{=@w#zQJMYJ6|{9kIpIm!b1jfxW$UhSMN_87MEjuH%ch z{Gi;{y-_u^ng4E8@lHbU*YECjnk1}ZbszS8p6X?x7UQdS)MwaB5)B6^mPGrI12}x; zedQ;QJU>ur*8?#t^nzyMAUpiV%04QnST1gN;9-?j(uo6fbWt2a(RSnj0(HBA5?qf7 zVCc&AEvGRpRC}kx1iQZNwss(pbb3k2;uN2)y?^y=N3Z;}BIf54h#%C0TB zVotVuv$%T(07qEnQ@<7$GghSW904necsaNa%U{;~ulUIopUPVNl0i|-BOuLE{Iy~i zSwHENOLm7xnvq9AamC+c=q10S8yy3!a?+Ka0JMIr^&sgUb`PIg%e(k50K@4X?N+Z` z@VoN~x_qbSPY*m~J#IP!VOn2R*oO+@V98gQREAVM1$OBsk<*lh6wGwOE|hOdMv4qx ztiifn_>(m}4j;@_wAE%yF8|s3&nWQXD=12#$3Q?~hm>*3fafA^>_ZigFtL&9gu?P~ zp3I);c)X|>QESjOY@{QhjLIQuy6Ji`>JciBW__NtJ!^g|jp1Lc&2d*MTaG;_y`3^` zO?OTD&ZlCX%7^n(OIuvZm_P>Arf#U&Z#u*#k-v-EO@CC_SG>jd&~Rje!!a1JvSP!L z#1EUwD?Kuu1LJ+#)G%&juVM9ru>(RUaG~RYP4;E}i~Xp19fzy81UR5P1zO^g>nvM^ z)V|SYVQ@lw;zJIw4G>NPR1x~fKUs0~lJkKDSjlow0IQs(6isy?VD)s&`5-`mR&1^hyPPWl665(js<2YcZd&oR?B=lQo|5 zFi_|divu9R^8Ek**?ZR|$!;8I3{dz*?C|@)p+ESCnq(r809hmLuBO#gjJoO+5AOtl z#DyvOs>`NJ^~JgfCLDeoBwwLB+#OJ3#B*&S&(-K zM5}1Iku`ukbLjR47xmoI->LOybN*XkzRpFV3#!`z-yNuaYx}3M3#RsSTmRS-hX@i7 zjuQdj_F_s=5{-gvq>TfWkqI%6G7aE zD%i0i3ExTxJ9ojJ184OUX_JHSe_9=p-^J$#HN-_#nVJ^Ommq(oni;5?;oGD zYLiTxY|5jaE7^tznHa>j8-^LU9O7e`~1T}}~ zW&?Jl-4EY!eJ0?5-7ZSo^IvQ7;pa|pzF7_2%=T~fn+aK1)Ys*C34q9XyMT;S8@WyH z{$(L>8*rf8RlDGt_8ZWPq#dS7@cKL&WpZjGAXvFcDkiKSnuNc>6@-?E`6;Pl=4VLq z(bpZfdE(eFY4-<|^J|;rsW`3L?i6(6L1SekCjTLyIMYuI13uJ=P+{-RKy&t99Vpg? z9Q3Z;T^Suy{mqgR{5v+ed#;9fV$ocbI{^?Z6CutsVL_^n81kupS+f*w;KQ_K9>ta4 zHu=N0LATb#n}LQ&osmjZVBsGvKP68XbuNtogvUuL{3}-WIyg63<|Pj<#18p7()<2f zekQGvsr^5h9l~F!T^#m|HO$_tiD#}#v~jdhz(v?l0BKd=O<4*uoF*5?+ez#{^;99z z#35-VuN))sJLl!^o;3e9Ec6h0dDl(9+2sULFfzXz%_^&Ht!3O90E{PKFc+ra9g%W6LoP_yV9(X(Vc!Gbr{BYpBoaNH}N zTq2ZaALXd-oQ#y0d494)M#}|^W1s|JL0K6%k-=r*x9;4y#jNSxQC0%4TKle@Q(r@FuW5`A^ZIkqqEUR2LKQ1OGqf9^B_>4 zz)Gm(2F#Z^e!?Y?-0uSr=)f5Y3_OxMqAa8=#UMBoe1i~l(?VW2$32390<}hO>wf&* zZ|_Z;kK0TcCV;+E67c80L-P9O(pwN=ePy9;WxmKWT^*eO&)cyBDsFg^iQl97cWbL^ z(+w>6<``4zbLlHG5>XcxFS01*~?n`=ERQ9+? zcmbPO@bOl}-fzqRnpI|*+yESXXx08#0SuWbO~6bJIH=NOs)?UPau1-w+^xtKJ$RUR`g;!Rg6EA=Vk44a&@VI9)|L(d$eot9=bb$!5mk#@RgGsax0{2QRI(n|1JA3-f zzeAg%1X=V$jM>6y#{d)a zIwy7u#SH@7jw!1C%}M~vDls6`IWweJKm8Z013u@%YhVcz-hq35@EIEhp*}PjyteEGi|`YR>TdZBi%D$JV!rHhC|u;NOw0n3i8;T zcO1F`n}65A3m4c3VPaIjJ2AoYJKZyU-ZA8p;9vZ3%T903V;9eT`2AA}?B5`_@GP{vTb;W**66wsL$Ti_tFl9RCg?7SO32uNtWF+2e zqZFpe+AsA07&RBb-=tK^33Z( zSrNq9|H=eE4}nImlb|l>6oLdh@Z+AAJbrkSK$N+wE49I9A8ke_QnYZ-G%>uvr`}EH3-ENJ1xePGJ zWhpkmp(9yszlDAyn!7aGER+hM!S;T|TMJ^}6wrbCNrRt|ZtS!jEmCO>>xF{83 z1dBe&8SIvLDiKd33FV4PWzF;9pQ=RxjLqgTaxg(IHG>hBgu+~Iy&N&x#i>>VQ_xOR zU>yZ$PJ^IL*?l(Cr&tev^mXJil$eO)JAnY*T;{pS^X6h!cq$zB>fu)*|5sqb1RBs( z2IV)}(|h#Ty#5didro+0DDy1I05n29`Wpw$SL$ZN0i;+4M@xVDm<1^@{B?CP>I?vC zVB8mhd?zhAY27>FFGcw$-||v#pxbfYm*~o{WwI~XqZ7(gn^?n*>oQqJAZS(7r|xB} zWq&c1p924t`4+(*)o1nnHfEihz|>#PGsQ3HToP9LV-H3W&?|R_TKMgk#6*widWsz| z0-Gz z?LbF*vCUylnk7O(MLfNCOUflo0Rj9@Y9^oMs~OYUu-lp$&h?w*_AgBF@Y`+3{8E+= zc@_J}%S5q=-jqA_jo;<(if#1a^Cx4_vAN$NF-z_I;{pMIpO)Jn6fp)Cor_u2N_-&P`eAXvF zb>`n#NIl}e({i0C^(64~GbLz`6hM6T+lFWXnairAI&vO$i-U3j;2@8kivU{^R7(LN zXhatJ53ZD6WyM$P+j>kZYd3pg&=)+E5!VJLlleg2XZ`21q-|EmEDRUHbvxPcfGAaMf@R2+!pGGG|_ zKJ1P}YysVmB>`&m1wGEeF5n3$7fhy`@2=S)rDe-Kc_su!gEaT@S?xbMWanrHk$W`18J+;z+maTymtwG zYlE2_29QwbC(ZtJ{Zgr4Fj8_7rLfU~2c7m%P=L)Gc;*~%Z6)*TlOF|q7I-n}U=^`L z3Xev=so;V6D!V@Jz^O4`JBNQwF3lSn#wP$ndechlD8LJ4;LkohoBD8`oto+xo|$$D z#3*3k7GyAkQ4kz(@zAh`j?fs?uBFTa;D;?@e5Ma&UK0Or4gVjRCNX{D{pp_b1R%uR z9z>H92ms}Ee-m-H`tBZU+w>x+T!*%*RgA*>22$|$7c`gu>brXeP!0D#%}MzT;6wp& z(Om%I4xHshmf(TUoc>zrZCXj}&VVrvaBKts@K@5SdH&=|pvKn+D~y-)64hS?FuVaD z%C(M#{Hfk4rog^sV7UWe1pmXhsbc^S-=z(zT;3M??JPPzq_CLnDv$s|C-fWlFkWPR z2vR!0zW#TBLx)Mvf<6l-n8%F{cmyedc?bYNBv1<2dtwv{O#`Nbm|077vLe`61_mt2 z2@X8hsT!P<=mj>y%^Ab4;n6PrE9p)5M5!x}czi0z8}w zT|c__COG=c0g7YF3Zjl_q+h3?f(GkA0R`Qx?D9bSy7=KR-fzq8_7Jx%H%E3qIhHkx zmsR|KR3TH%z!rGfHRnNdr5IC%+@fW`1wK1ek?+S|1WA?eauM zPkFYFmLY=&=NM&=s_gwSuO|f3+%UIrn@!Tf(Jz{L{p`bIikJEsi{)z znbB`AEX;)A@G}=vtqzol4Gb!e`xf-s+a00HnCdc7&I@SqJE!OEk5-!ve^|!Z^%z_8 z-OQ5E-|?8A&^P|e?x=FY)%Q;qf{*074#EXcK&Egpi{9)J+lqm6BDpPLLR3KjgsVM_ zO!Hz?ql!T{v&#+$2sud;06-c`i3k}iT&olSg{kCE$AHA)BakOSfj@{EEsleM1mvBR zg@6iLr+|aHKC*zXecq$I(c(c|k0T|q0MtmVy z=xz_0*b@I=8J9dhA?o7WSR|5+LN4?zY3x%F$OE2oz`IVcJsM*k7NC(}rk_@AQeLWC z3Dnf}`yXQ!IJ8>^80-K5cgb^=wMO-JL1{Y>;uf2rGv$9N>(iSGxF5G*hzeA=m5YD7 z^v4-wq#|9Z`EPPFu$X7f;ebP6-GE@>#3un<0|8b(E#aSkpoTeZHdA~7BEWuVobj0w z<-JpuKyZ^ke^>9x6UiNd56qnAHF3;<=K7%}f}W4@116z-lIYq73=&vZ_KVc|lTv!c zQYPWo?7IC+ey+F6^ND=)N_s=?T-~n;G?>cx&P(v4?N6?nYw$Zw1^(c!=L$6{(a^pZ z06@u*SK1g4917<*qGz}F7$MV`?^D`)gEiymZqUPRYs1hTp82Veac06=NgZ^E-`gM^@0K|~w#0xfjn?M2cm<~-xkODUO{@)jY6=zyD+sUYH zfHozWs8WwG#z4-I4?lE`;8+S~NOw9!>4s$8-34wIT4S1o`4>fl8K1XxxQvLs*>HIL zB$X7@^eWKekiSgvr&E&zzsL7GKp~oZ>hlBy_+K2ee@lvJwtqb$()YcVAgWpO*V0MI0#rmDM3+SZ_3x-$fmKsxTp@;yIHvoT8vJ{BI>)f}kLpsjgWfGWWai&;L& zE+xzQpkg1@|2@(10k|#g>gJw+glXNB0E?h$e>KVHV0$lZ@1E)Ii2hI;RQ{>m{J9H? zI0fy^K?Q}7p0wF~O(1b|=|ECkbsR#ce9##GRj~++>c=fp4ob|I&Vj0y$~O?KfjUPz z`p2&g7f2`xJzIc?i*@V9w<&lM_|N1heunP~&4C6FF&E>u7s1Nw;@KS-Fw;C$U43-U zcAz}Z@uWP6=3OO){-lr7i;VN4&uO;*n4)>_SNkx@T-`e^-s$AE3FES%?f;f#TDCvA zrQ&!f{x0bRfsex!>!KH*q2X~J% z^J^S5i+z?=)5H~64sHglC92KoH5-Ld<_Uy8)v+TAkTi@T@)CkRfbd>c9h;OZVLAgb zhrN!X__%5K@fkkv%+_=M87#1({Wd{8v8;{(P}JU=Q=yKrW&m8g=a;%eZsa@<(Sj{q z%z^G&K{cjPVmF}XJvP`@z$hag8->2e)+j6RVDa}C0@@PvH@}^%d(Iw7D~3({6@gXm zJV|?Y(?B(FJOT%1GqdVIFZZ}&dln6ZRpux5Nzta`7$B{s10@M&$}F5Lr33oGf_H1m zk8Q%hexBQR`gQ7Bipn!>nielP1_KthyC37yd?@gm(5eT?(h!RgO^%0JI1wSF3CSg9|3hkm)KHKLl-? z$w3(_`YLMwjTZZ&rC2r}v&k}w2Y+uM0!4z~K@@e1@Hs|6!vS_C`FX+M1a}82pxJPR zVHYv9b*aR_uOZGObynYafG$luLboq}m685QC3V91tB~&E^KIIAsqlN8uUmSIL3O`z zSqcnL{dswARKDu(cTb+^B)N8OA@bx!{%yGkB&$oZ7~Mbt)rlH@<}VG}qyU4beqn$9 zE_A0oWQN~&?4fVd}mxb5xoi2d&%N ztNy>!r`q!vf{|9N(cz5|K2nKF*7UWv8g9oKp;Rc`jq3!Z&I>F#}VJ zR3013)phjl7`ok4?11O-C;rhP&>vnU$QC%PDNMgHAHQX8=Knp{bAlKUgBZmB!>F<~ zO=n%BEDF*Tvc}!?Tz2%(;b9E>fAyOVo$Kl#>#Rg8!ODuC8PQmryHoT?-@>W>mJh)$ z!#k(`NPR`HK2IC%7hwre>#np~x;csUD}&04;IwUCAq-D#RL@lzYQ83SfNKn#dkP7J z-`7an4@^6Tz^+YkS%7t_!N7c68EWheiK5r~w6+^?*99Vcsf+RvOK-x?JsSUvDjlr} ze(ynrt-XQ>|0#sfTA)#Rij9bE%cO(6EzLbvyv8EWn*-=Kq1}kO*{-K^wN%1?Yi)U3 z#|qG=`6y#MC2!vUNq=j)3D>v$F}&kV`2qi?HV9m=T@I=&TtZVjr{B8%_~Sd#?$Ga* z>aSo5*)@lE{z=JAZwK`C1CPzZxo?3e21)jYz1vikUqxv|f(|1q5sB!W#Gxrlx z1r=2D$@8)20r=Mhw(a$kBiip9wb0L;+HxxKnfNR}@_bL%JO6(}SFi3j(8gpbU}DdC z!vGKmum?lz|6yJo%EMb**0TU%oUi!9NdM?65KK=&xSQx6YRnTD(3$yef${WYwX^KH zWT|&#FI=sssZnS=yEmYv04H@T$CC*@jOQ4i=5jWCa`QlU`^`(xz)o|2YiAk9OYEQ9 z7~ID8kG-*o?nh)T{w7WU5G11iWdfgroSZ`?nOa4NJYZl|_US?DIN%`5?}_8IOe5AI zeV9exfCX-5LjgJw7*CZP-+dT(qHTMBCKmxu;KM1W6J78fxojjX+F4%N8~yluQ(;^$ zdAfAt34YRFO1OR0G~L*rm!%Zevug?<=zxF;39Ocp;F)!R*!1p0Y?NCf>q~(wh()R752FRuAzL@Zs~zi@pCJPa9V>V( zGKzS06#Q<2nabwMhf%BMqPBnA!&gk3p)Sh*OQ|!POTP^iKpmtPlf5iJlAjP^oG1vwumw_%%Zr@DRSwqf1K@XRzvF^~ej#{eC7NYDJ>OVc<-`IMi@SQL=+NA>l zgdPZ}V}9yuXEd>)B#bpc0|QNqm*1FbvH$}28@R^%1R7jxiQ5!Ou*E&@3<69p1d~NU zb$HM3o1n$TtQhO2{m%yo&NU0|R5n{i?7oYwnvHinoS1 zXEuo8ha?8QvoVpnOK2~kIh01g-Qk@$ze)KwQe{#+=}kPM{oHB%)w5TPSjz}=QanHh z#4F}mo!?U(Kk08vEG#P-r(@r^oQVxn>~^@Hr#3xzQba;A%c5f;6MBUXqsD=MA1$a0ex;&>I;;LFu zBgdiwr4JDW;M_|me>W8;>Y6l8$ zD1hK!-aAU0#l*Mue@)Ub3=k0gL{mNIr7=tMK3QOqz#h{({5zWaZ%gANz!x8Ia<54K z`fNd>fLayM5CSH$z;C~T-dQTBy0XhaEN03jNU())K#ydAK{~TGVOs+M$nHg)cLQVTDIU}s+3s3c_xlaxj7wQs4tZ-wb^esT zmua}+og$bop`!Kmb)cg$<7IRmTxs5psDsm>rw3&k3Q0NZNB0R;w8814X0RZ*FuM%!45EPD4X^7$H?j%7O9q4uO^UW}6#2vBZ3kE%UhlWu3KlI$ z$5mJ%hG@hucQvdpE!4`XVy>p-zUFJnGe%75pxso1(lhA{XsCd;V?3B_)X<NtHsh0y6;ZnuI~U2OIj2Eb^JOzdVwrDND&MtN$T zykk0Ff2@BBHkbjFJU{F6Ey&6iGY^nL(>m>sbJI}HhBj8p6=X+Jb`+F#<-E#Nu-|`+S^u2LCL#r3GG*jP=e*2ZA z+znpK;y{93yn@aZVTvR18XMu$s}BD#-Y!WiQ{w~}2=gPN8I+%hR|!0b#BlFTB#g_q zi4Y|}rR1P1Yd~`Qk_Ceu03>kVgWn%-eLQ9mgxr%5ym?@9_d|3=sEZ`?a$m=Mn5dZ- zLFHRs1piaF;3KE=`t=;I-R#pHRR2l;qx1?AWy zWm@ySJ0qwws>x^E^Pu6o{`EKW4x#r8F?6=hIRYR$Q$`mIYw0arMc7&kv{nQ#_~~rM z#c-LJfk|7y{u+;7>|!^8Eat20>QEy+1*+502Rzl?_Km12sY{a9yab?@aIQ6DsW>bX zl-L?VGHtN#Jte>c&zbU7AzsICIAWjD{v&Y0V>Shb+^r-&I=SVdZ#ufUMy~(x+Gl)@ zR<>F`B%0xg3x`i6Sd)c7YBw{e%1VIql;17C&l)cVE;=H<%1VA}ST`L|ydvOs1-Ytm zEO7q|Au(A}P+S$|G8J*^SKw*_283L)R{&|_1D+e;FUoS6wfg0%KcMv;XuQD$7E}d2 zFJ}ddG&-44lEt2=W>DNT@RAT{FW$ z1Lb6>b6Er`fnsw2Ko(}<|9i2dz!(55ARTy?fSvyh>D<6@uy zuI7Y=4}c{X*sxtC`C!ea_Els>KE=~pMPN%UIs#p1;*WpvJ^q|E{wg=e8W78=jAyr5 z6qA9QVFCk8P;UiIPq1(W3Xs>0X3SiiC>;=kW3Qlu&aH!Q}! zbf~#Izu_n$d~q62!k`ky6anqDSnOVa&(d9gJT6GA{ zh#&~I0pbOiTHQ;S24NWm?+#eN+bEpIBhlyv_1<*?n4z=!1_YCntnc`rke|<8wn=RU}}r{9n&9efn?HQi!j7_rh@t{ zcL9tSkm3y}y2Dz3jPNhcX7_wp1-lI_!F;(tVEKXlfkM@Rx|*9@oN%D?dOziW$qa0y zHts^##sS0S=0U zD6l}ub8%V9PWilPpK8;0PVJb%z{m7%=rMGlXHJFVZvg?XSRPDn2h2}2ZdSYbLV4A8 zzFTyk4xntvD8D?_71k5|0vIqe$;>U3iA*GF&aBZuIlZS(0`ra12m}W0WJXgw0cjWr>qiJDfsyAN$C}DZJwh5RZjC{pp#(QHgSMjF^Jfh$uSOt3v25u0 ztmtSSTMlHfEd{Z)3RWYSU}mkLd;^?u995rH-cL06H&CLB0r3(e;8xEcYp7E+{st8b zlPd0HqK|nOD6ropCdSW)qtRah0~7Oj7Ne{?3FGTIcH9m@b|lnwF(vKP7Xo(nYemWM zSl`wK$pmpt+5sf?VK3&5-K26~!d}(p%nwBT#)C~J)jeLm5zSd_!-SAqk`3^!#a#ubEzLN`cz)-jJG zBc%fDOvw4F33&@2D8NFfg0-3XP~VZ-le-1*3PQl|Mb5lnssNg`+qa|yQT*-Hg@8f7 z@Ez(8*^3v-EXF#0zfu4ydqUDwA1Ys~@Mk z5je1d?tT$u=nz{K)CGXdr$)89^r?qISxX(jo;oh1w-zpZJh$J0w4d}pOp1WJ*rTs3 zpAwo?U8)TpT|qYh0Du5VL_t&`%6XBMZZesPGJGhD^$k_uq}%du00_LJN#1OKALfU+ z-{{8Q>pI--1jKJnRskKaS{m)*^RG_qZNW~@)j8gy%wJ#QcKjcPar4}j9V;fEq{)~2 z3|$UFod49#9{13uoLyf=bREYjja@?l(AOm~)xbfoF(!Z`2Q@rBTwH_!4^e&o19%zK z<9p(9l)%capDg^bkGr-i5PZu90xY%1pD6q!ShtfkP+%qeyP(J&l|})!_w8S+HHK5i zQ{6a+nRjInhj&?;C)&^3H+%8n+jrel``BUu{kqwuK=vO%hRXj#pLriM5d|~*JXkld zuAyb_H1&u7uNqDUN_kCLUO$1R%d{+kP9&k4Tpil|FZ%12g-;2xl54`AH?lC0R#Obx z(6xF=*hSDm%r7UEFALS;8IJfXxQlhb-@1;W9VAZ$d{^h$>VGHvOOWB>DtAjS0RX$_ zQ{diP41zz-6p#STGqkhB5#TL9U+>^`fGJ=Kjm@$ONM`*3V8aFg$wO;je{s&z;}Ve3 zgUz%!ERuv+@xsL=b=(93h`xRYh6+pqbL;^=sM2V_I`_2Z^P=jx%okHv6Z@%HT$!k1 zVn(@np9=MgPq=Y^Kk0v(Izf99D%6rv?3a?Me8{89?0^YxmMCLdYDsr}Q-VL&ao_#@ zIDMPc>}8aP7WqYM&Gjnsc0qJk&95-}D#4>)EUwtn)2O^;CD73?MdKK0dQIIT;&wpY8QRjJd2 z7qNPG+Eg}B*$|t>#QV8z9Q;pRvX;lKW1_N<%{M)8`JFof&I|65AoKJrD6QBZm5;>$ zh3kc6*}K;U5^5T0KXl~K;mEXw_I<2&s=cX@*lGVpZtvc^tG%sX7?uZPvw(!eBsbuN zpm)LfurJEWV+r^?E~yyU<*4z6XJzgwAI3NcD%XV88HMHzR5VfayKC||U^;84L$p=( z`<(yztU`*x?Zx)w^PfRGE8lU<)cK;~8cb)K8m~`)gASPBc1%_a>a4XAL%^+|kw`lg zntA?svJA+@lEl28@m>baIWFYgh&UBiWQhhI_AdKk?KlT~cx_6@n^|#i*(wl+CEDi-V~aNxESZ_A$nfVkB6I)=Yfx^90O6eX#@AtaIPQa}=G5W(j{IZBGVrPTsn0@ zhsvZy`M42dT(QjmZudd9ea{M=^Sn-i0tp%i2n^c)cq0o7v0uNj;GSbioO!@NgZMcKiWCgdpf7ymfy3WC zG+oqum$aK@9PTHcKWZG-Ig==b*By$hLE-5sp8&_lbL&AfU*_+j488Pp88-`nTVUP; z2!LQ;Mk#&GgsKvw0RU(x8?G@#_n{=52gCxvL(^Y2n z9#uPE=p^%;NqIG)J)O+bJ)0K#;WmeX|Liw!e)H~K($Hc6uKABY(6Jr4oC}Ch9the!G5TFXtC$3PgpKT%Vm)s)!rUlU@q*Xuos`>BS1ys4E zulsMv_Ap-+&r}rqS15pZuM_$e49sKKQTkkO5Pw;L1C#l&tm$Tl+I!$&!J?Mk3%129 z=>C~a%z|U)-=sl6 zfF|Os^0((hVZRD=OZe+MwHxVjT1i=$sPFGHt%)}weCyHuWCtvya?6e(a3z5YLLjbM z_Vv!`Z7|>r0N186oj*P9+~($kmijax)f7w+wep<>fr<8-&A`AE_u<8T{8xY5K?PUu z(_w&uc@RRp|D2G{64fNDgB@rvVFnoqT8CvA2d(&OM@MYp?7?kv`qih*103OcY3!{L zkQE7E-~?{jY=W^E76(C|sbW5~PMgl5n(5++KX4P|JHJ?^48ghFpF3%-4$Qkc(;uJx zq~9*ZFqI15iObZ#2yb0G@Slri>f-rShtmJt@>|-)_c2qSzuVS$+Wtg`4zt<66qvu_ z&{dZR{GTDM`~V*(KD&5c(6-^qm>c6NJ_nYG3@Ex8kSXl;`Nw?2!P7BD zsoS8XO8c|Xp4|3IbO&FnAxv*qa3C=gJf6gWv?xwl?6P^=C4TfQWk4Afje@Vl9=UK1*K2ajxjO z$kTx2JwX4H{*|dRN%gamnI^{JR+p;7=^xfL0TZk(9$L*-+khOA?F` z0zWEhI&1DVahdtl083ECoh8*L@dd_CTC)MB&mo?xg{+vGv)0)gfBbKHWoOsIag{$WJebD6~&z(J72pmi`-={@SN zgM~%f|KtKt+^r}t&hr9vk&a@V0ep`G@Fm*IKtP#FRbI7>Fy6^*de1xzh-6!Fl2<#H*3t3)^3N=ax6yS5>40MfmaH6@gaGY`eXbxm_1;~4z zT>@sVbaJ1PN+S9@7cMgU>&rjs-a z@B)(jE{Q=824mI_Wh@~Rf&&Q5t_K@@b*h&JcJYX)y?L=lEq&rM<2DE`27;eY@{5+X z-_Z*ZBcODKO>P@Mduhtqh)=tGp~d0AOl%o|&vG;BwT7J!W@4_n&o@8i{WEGY8VbNj z`*ty?J9;zW_zNm6(kOBps_@7FLX9ZTEv~l~Fi@Za=%L`RDRFHJ=TdMmBVXMq!EkRh zzjt-{K$#~2U;P%M4XP|}DBfwubd6ei4$35RYu~Bv04Lzs*7gUkAs!(z!It0z%vS;k z2!O<%3JU=YESH2n_JiFG6u`hK5dJn`LeL(TOMz(y?f)A9=^`FUQuc}c&tpXNi3P(F zm=5}w1o{r7At1S0on%+7)jnB&>bh4Uen@O-kajr%$t?Vy^WV2z#_?=aTaqx|ttAFc zns%Gm?floNPJG{8UjxW>++qhzsk0owa<TxO1cf8(< z6_qlf{YgLRzm@K~leo> zGDIhYqq~?{&!gLs@fOW43SRM7#SSn*cdzGiw*Xm2cp=!Yi-MWw$u}1coxqNhMlPT{ z7j%|BmVZ>A1M14-8nJE%GX$p!!)UkLhar#0N|Cm$NX{1sB~wE@+=^GBcKPo zg+g6_jhvY!MG)8DOhB<2;CEKb(dK|P;5`d{r2wTpc~Z2%UEc{R*F-r!Y{+{0R0R-< z(>M$Hv^ee9$(91Z98Q=WB7%2w6$|rsO=n_(;Mp$a;!z5_e z_|T^^)8BPCTmV4%do(ngZa`30TAt&eY%3wwimUy^Px?uJS3;7YSTk#$ z`Ho(QVv2{xD4pGhoQ20=`68vvt)0Owh*!)hZYM}bL+cK=30rh+=jb(QkW7F*X zo;&c3@T_yiSG2d#>uC|#kgxk~LZ8Ng5B)s_zp|sfXJNfza^y3NLXAyi-_{14C_^*+ z-UVQ~nokM>!|96__F2$05Wf>YLR`@l z$Sy9w8@MJYO}=tHIQ*5R9@JHIO6i|HQ-C2aQ|%6%xKZ=`OzC@%twxO}aNav_o!WI^ z#}{Eib!oc`1b{W$%4b>cMtz4{1}+F7r5*YafXXU2A`U>w(;;@9eMTQj|q>WDiFS%`W zX7hQfHE59BS*T4DthmR6QZ)M~UD;=+4ap@3@)p+xC}UF%apQ!l|1|(0-v;qY2c|%W zY?<)K-Y9GEQM=x8-Q5i2bLo5*fGr2XNihqc-b8fv97kpledRni5hOD2K${{@RyxYI zzmp1LKL-}!-Di&CrrrF}9%TVAwO({%A~Kj|m^-RWWbx9=H|9kZS# zbn)KI#%5Nqva)@>T)%3wf4J8a+oAfTe*c|Q2Z}gn67)L*uNfq8(+kf@nbTR0ci%fD zkP!{OTJCof9?fD@n`c7WZize3%&G9ve>wgOxN;HQ7SqVL2*@F0<_X&8^z0=BlEl^}{z&8t&VSwjeT7Wk@1@#&= zdRTtY|8@DjHXg@VL9ZQk{1rgKns;t_x?i12Q9uX-3VALV3`kZPamG0bG$_EX`hj7^ zSOR+l@XA6|RKZ$4=F>|+A#~JzW=?_k-gTl--GPTUGp$MczkWx-UmXZ7xIlGs8``?F z5S-4hPxn7rRwUt>$4yvB?U)4uOkmp0f&2pIDp@1+qkY^PU@TQM{ulrEwHA|`7zo)0 zW4MHKWhv3cn#sW!5qSB!0grCR;I(YRH{XatsTctU zWy8P}nnS%^QJ9_+V24DmLQB&Q|hIB#P9fAR_Qhfmf$v-br zeiMY(6XDK>zz8CWb@SpzAhlSk+y|lQC;g)6$T@LKg2CjEH8zavj>8 zA)f>tr2KL!bZ{@X&6_e9Mz-d=3F@84DEA!&`?`L*z>Y@?nFR+FnD#tH4nnx+NJf~? zkd8xLN284K0FJc>TNIZuc3S@|I5p;0wYU%VtwMAQ0Kf+V{U(L|hy9KOJB!P)$DIIy9(M{`DMUd3GR;=)QvvfzK)nQboz<1{ zt?w*UlW?tq^L0M_Cw`p{$Y++%GZoi{&#Sy#BL&su`M~epZ3Ntp&ibNrMZjl&Oe!rl z^EbNkFPWmbNp!O$7oA9*fyqW^z8_$4o8xC9oG~&UhQ!9exCHQ5 znR8nffrx>h_Iv85*-YcQ-#V*+iOuSSp`Y}V{#$8UgVS%FY!uD=%;HTfWB1z)xai)Q z1eDtz?BvOgz5bojqz6PY+5s$Rja69iAkksbVEDUv6`}m;EKwz(Fr=6k*fbbCFgH0S zt4V6(SEHu`Lp)DSB~4v01A@M-$aoC%zXc7^rNpEP<_@2`X+8qAYi1^yOnF^XtC<1; zLw!cg1ZpDWTn{EHm}T=k>$az}fU^)U7*o*AI|LMrlJ`IZ24(ug^@RL9i;^8U5wecl zq6tBZ3q=aft3mNvsqO(W^rxAks%j>2p0RJGcna>{4kyLC|N8VKwALEwh|yzf(_8N71xD zSx&GJ-wCE9z?u?b8E{|#Xw4~s37D_=+be;*5w?|uz*AsYg6L9z=sRlP(|8cD!0#jI z@~MgbByguQPY8JkxO7$%D*k~2SJHeov_L)oBhi{A@Ph_F5pIkTuwT*UO4b}G=diOx zG#LO`$JH_6-^&XCHJrqA2)nmtdo+X)OTdxlu+6U;Wm8sVZZrMW(V4J`YCVn|L%KP zvDD`MTrXMc2$gm0_IQB{EAx+XzTifi+wSK+D9EQYcHm&2@Mc) zXM%HlI}C*I?f%Z`}dX`Q0)zBbXF>JN`G* zi4mYN(sL?9F!}h-Wb(M%MNAQDqPpvwRGDe)6ca!B=i#E-Jd2as5B?Ql!L=}g;6_xc zSI>VGx{LZDjWr78M=-afwMVxE6~$ithBchL6{f`+a;c!DmO{M^RMO~oMP-@lckpab zexE2&^Sq;C8Fa`Z^`+!(Zhqccg`h%i{Y5kDG+H}Q8Vd8vEg1QCa0y_7N-cFN+tMuW zAJf`1d`>>;PQMqyhu`JTyw5tIz%13h9sJRh%m8d)%K!!)RC)MM?0*MqfuMk_or^>P z(;F?e0#p!ijpkj}kf%I$fP^aiTB6GvJc@eVtn!;zT7LF%&kLX?EEC;bg4WknKyS)^ zd6vPM;|9iH%+Am6+X2K>n!t%$0LPof!ymf=48WprZVg=%4cajWtP-!z^lX*C_D1Ry z-?_RsuUtl-Fw$G{4;j{UQBf%J<<*M==#d+?swehC?6H2?HUId2&U^v z9>y3_m?tq)TAAcjt`F|3lQJkZe44a)SePaj>NJp@$?V|&keDUX*mq4j{f)wW>~c&^ zXx60dx*P4+{=CeWG0&r>X&kS~l0tpneXyAVq~F(gAaG!Lf!gsa&6a=rzH%JfiC)y+|fCyh1f2G#HkL0U1S&JCajoe_=!5(f}D9of@Wk0fx9?ew#EcsF32 z2BY@5s8h`gw@t+kVAlywUlszHOTw%El!m`lzK8-59Oe6j&(MP4&qiiOaHD5Ln-LXH zYa$8wnzZlrYK*|d7TnX-gK0l+6oB3n+WHL!u0^8(%PD=p&it+K{-mGupG=cbZ?tcf zuE(19xr}!I5AqkbrDO4K{dy6e{POON?fh>0yXrybfn2;4@@&j|DKR1`Zd5w}NN|2G zgnv{9@$a&e6H2A}`zsTz7-anWU@o5pfeZKqey0f(XiQy^aV$ZhNaNTIqmhZK8qO&d zhKLy0aa`#=YFVDNwk-Ox_=^Ps>;PZQdu431Fw3*1jlhp$#kNq+`Ex))1tfS&De<># z;CsM;tgXh5YEiPV%mg+x^C016h14lv$C~$U$wfQ!uWIaWvAA*sbx&3T8wdap!0Ep< zOAyp-F|KY$8@A>LK>!2_7ND_WT`d0p&<|b}*+l@`&BU~|;=#!EDvw>XYfQ9pexuvx zA2mbAV4O@V~ znJH2DCgYw=mQqKlgB*9@D^uS5@O*3MQ48;SVvjokMC1hq^0*Dymw-=4qwnHdwmeVp zE;tj7{o6)Po=iOQbupZe`>I+u=fQk@1pcI-^iN2N{W7a;U$<@*yJwbJxGqlz5_ILb z_3Y(MN92^(AKKN8Pp2#UT~mm$*bL-E)Yv6p{Vas?q;$n`%x;_|f27R4#klO(gDfZ) z;k1~I7R7aNn`nriXw112OWQyBNRY6?V~R{w(F_J$U-#lm3PMF1QqUsa0ztJ*=Hx!0 z#;2HqQ18)wpp@m6zwiUfpny{atb8TmR%&b|#R)0Mu>{sTrxl)r^1~lxFn~q(PNUB^ z22_wWQacSkWyrvQS||bDAP;XWwb3S|&C@u}NpV-+Qud&^vD8yN7Wf+qFl-sXpO*!J zvhpaf3lTroQD#eodK&TU<2p)vJtubg=`eu-2AcP@en{Yynrx!0$`Xu) z>sEs=gxp&&!ab^R<)(@F0_XfcH!GCBG^sPy=k~Cr4#(|K)^-!vz-{PUL2l^}Jcx>^ zJp>U<761qm(4nA+5s!9qA^56)3-Di=yc|gxO=-{OC7gpmzmJnN<7**V`g<77NVPlF zvwp(>D|_O;TnttWf-{du>}D%Pv+iiQ3jzxJ{+)$~pY(mwudZo+X9CAMfnL4GN4+=Y zs()R7er3;b8#~?DciGD>`nJab`6nJHrG!O5m~VW7=j<+!Du&PARo*CkQoAl~ZBe0D z`QtTp!ma8MGt~&9L-4Pnm1{In7%iOjs)1!DVIkL_Vgu}^!uhYd0!+^oL<)Z&$B!qO z$4!~_I{90Vb4)@A&WA8bS&9_R*d3kL63h(#GDvV*;9F27Ls@afVFm)~^@J$+VykM@ z{YptsDM2OX!J7nm6B|r{2-8N22P&)DuiBY~@H)oY>LQosQb)qSFeq#(B}|U<)Y~l#Ya5Wx)}6PT)F%GScoD z0A{7-mbWE99SQ_aZVF5Rg*%u-JEBZk1}nH7s%_DZ1u4mgGzACj@?+n-#5X{sTLuReLbpe3FS?2(qbovw|CDS72MY@GrIUG0A11Ok?@Bvu#xG7g86ZDFYrA}xtkw?ArlYY|wI(;J0DjkqnX2)*t@&4)9LIx9p z>Qn!^IX5Q;K)RCl7Fih76mUWIS+I*#*PWzvLk20p@!iB=FF`W*vKRrju52Bw5G@z>ponjWG(qSHoa1CqQ ztO~6>9%XH`K!fRLA|4IS&FZt`cnYxMyr%nA=diZFojZ|lvOu_j6$)U92yhv&M4@+v z>T8z?OB&dV`b@ofM&XBdg`}XSEz$e1FH4e$r3+&!=wPGD{ato)`TMzSHG*`dz(e!(NLI zpWE>K){p4P>bC(15YS!pf5}$P8G*N&=E)8CIm_?(A@}(mMshB4bLofRDOhF!PcjmD-)3n_WaepA;xEAg6K~<_z5hnaP}oO=uTi5(-Z3 z!t7vvAs*49%ZxpW>0X;anqkbr`esYCm36y$yp?t6`j1Wj5z>iN+j-VmAF!3dJm^mp zV1R(ziL7&ySJTU4D4+AZWzZv!e(u*&WO2Q1@NbwO1c)y**o*#CbYOiJ*)aR359jG)I+1o*W7 zA&Nc+W<6~H%{lZdgYLBdp$-IQm5{#YM$zV=SP=w`M=K6H(L%|r$DN9@)KiWT< zqGc*Sm_}t9D~IqA2q{_zH8*Np%}BstREVKHMGcrqI80F#s>CCH zglW{)XHgx6f4u(hPMP>hLb-ekb?yXp6#SJoDeS%jyY>c+wPBdxTg@8qh5Zc_-# z8q5#Y#qkAHDuMJGcY?Akg;0v12Gah$V}uKUat-MG>nHPmb~WhwS_FCG?+W0;^$)^( zQeN*f^#IAN+)2~M@mPSC0wTSMvGiYZ>g6GF5xJFoSf&YY&Np@y=!Ah^Jsw}*`$<3P zKbpbHDwDTKX}HFLdl2r&00+0`Xzdwlmpa!0BaKbKd5sM20c!Gn z)#*$pliut3PYiMHdKE5epemYq?yIuCV6)>g-f+F!E?ccO{F;Txr3>y{BkS zr2i|P%hEGuBDX>ZquZ0K!pa?H;(4Uc$H~BDALLjSc-O>d1^sqlfIm?E3A(nXJr$ri zEn?v#*UPcGRxYWyYlNM|tApUd!3%j0;f#DWpy_QC0dDWlW!Zuz=l~e7|2b-vb314c zV?SB5&(9P9(D{7fnn*%Ecbw?;wqoEsu>bc#1u~N|JMPTWJC_LrYe_>L)BbNX^_)~d zSPtTf-?9AFCI*7{I>6fr#QL4g;8n!`&fP)+3Cbn!`AX8RVBUakhFD;7MLCofZQLS?>IuXDqLefHNR z@429NP`i=)#>6_PJ*VHx&xG+#05rb*ybdUE-gnnW3%fP3WfCb& zX0JMdS+QU&E0Rt^)^igEjml7ec`s^>S#A3(U^hMQfRo>G-xu%(I+(sw+<=tN5090~ zY3S!+dTX8{=MC}YFntUFl*Xw$3=^7NKi`5Gl=>d?HSIyhUG1a9q;p^eD&eS;CKmok@?WIf}ZFNGpEYr)iiaB2f zPV#tX&E*+;d|3r6<6z&(1%ToTsFA|@OYh(TI;-T&mPZv=h@jU5ZLTz^EAdErR^ z@-!h3dCeOO(z|V-d4Cn)mBw6Ilyuf6>c)gKZdUf3H+xUO$z$?nJUi`wt_!XQWndu5 z$fzLqw*EhuhM~yj%D443~GL1OI?-A@=?B3Hx& z@!Wz?xYf1i;IqO`p>;GF*zYoz&zeuw8!Y2@6cT>YzcalE^q5!u&ca5!{U6%W)uSkf z`rPTD;$fc`;kC*Ca`5~%36UX^^7dmTBL{sa5CMzb;}5)H7F@}aKv^)h-|Y#XH6mfYSsr^nA_O78JY_9RYA?)_oBeXmS`>9JMq3)J`m ztcbA$PFUKfndNp#7)(&Z2}WiLfOCOm$ECcE3u9*6i| zJb|`hf>sEPVcP$~q@807l;D2^Tvf5I>Bsr1TemrB0@|XIX1=6{3DogPzND!i6m0owU4hL*OHWz?`c7r0+4NyN6fIM(1!XWo3gYPo0Y;yL=sTA1>`EEw-b$Zh)RfTr2kr|C{#|+Pcz@C4 zu8)+1;I?dTQ+ zPRN@!pM@D0&#Za&lYY`aIWfDYezOk+V8sp^>{I@oSvm#4srGhxKLstU`K&avaT&AU zEg@~^agLyY?(}*18!MQ)`9t0h%W<7Ywq0CHFJ1h7AkJMSim6nV0ZOZ{7-OYfXNCkC zzco*4y*UJ@;x-NJ%`5QhV4PCj5B^WL1C@Y1MhHfZS;liOr7yF29DfFE3P{fK2(>} z#2q{81przCmVk4Hz3-y0fn{^{(y*(I{1I4F%)+YK>AjHY~LAf=cWx)EJ_Wf>N?jwR4tF3>SA~z`LhY<9G33x>v zlFyJs2L$2Sq%zK75@Cn9QA_{?&W|4clz9RZF5&{81HZ2u0}yqL)CS)J36?>^rI3S9 zc*Z=_M$8L9A5XUwm(QOFOh4%-{nJvnzE|qlB&i*wckny2lR^Jn{8RM={q9ZMuw12U z^5!%5C7L$;&Z!gVoHG$&4Xb<{zQ}@psf>9(BHBmmRpql(WWxiF7US5~7fpVr0ec?g zcz?IC7+^+C6znuK-*=i+bEd+G#H^(jc&WV_E;Rm~o1`KvbHQ(*4R_|sK_$s(XwyquDfW`8$8 zIh$lYJef};$o92n5%}Hn2|Ry_PqMX})J6gkSKByxzOJD?={LqUs(9YTtWN);)~u1!U%K*(9DnrTKyi;03!sNBn>`*4(w`%b+CZ1gzPCs zKo^uyj=Zphz~7Xqf7%;hMWBEQ@5Xj$i|RuK8c!RrEoZFjy7n-EZjWk{W1!otr_`boc2V!ew!?1yO9zeV)LpS={Q7`$7BH?xMWJo3vw zKUZzjHvea4I*nVTedY8n19gfPOl}OTZ6T}(O5myH4s10s%p*L_Z2$$h5&`IWKtWRI zFsWN!EMGeRBXW80HmfV92>1Ni1sBGx;y{HJl0YSoi_N*!G6WK^(R(C*E{|t4)LBiM zYC}UXHMP&cVOl95TyCN2ipVyc8<#_w0kICSUUvK9XWA0%^mY1P z#)UqI8rwY&6=YS`5H)j!Qmc2mnC-BVJ60o|jj#%Y=CEdarZRGq&C5Tw6mcU~cy z&-nhU@bi;?(my>-EZ8KJH~P5pIWF%BTvFD>`Y6Rp#zQ&Ww|L0+$(a4FX=1+%yB&4R zm78}G^p8@tT{}unRzT}y;s5%)4#40#AWi#+!JB}Fj?pdU)6D>^xglXc<>wm!*d>4& zS)3R2S%owGfJ0T&W9s~0Wic~(p9m7R=uKwo7aHY60jh=qRk1S#KrMfy(b?LioEOJD z!zx*LW*xo;2Gp}0s4z3WDwYyjUgnnN`wsH#v(RgTx;lXh-8j0~?FvBngo1`BU*+M` zqA$lwKk@mb<^iD@+z6InxJ`*i>kch!B-dW{a!3NE1dC6tKY10~*-}Awse8`e@0XTAUW3Zvehv=9Nc_NGpAp)Y4 zX+qw!$;==607x4P2dHsc``dT9iy^5-U5LsrD}}7B(2U6>yxjQ3n?Mu~W&EU{^t&dp z{ab-~V$rPGb1sOp(jW1Aoi50RJ=w9Jug}!)|AxKKY`j|@ASp{n&WAL80SKPxewLND zizuBp$_n+ybIOz!vG7B^6?8+6jL~xAt717-+GBAwiM4)>Im67VF zb}<-GtiZ%tQ`+{32?Ack%`TbmdgmGM5<-<#gq8o{k;0 zp+D2JPk#TMQU|K6vM58y>+@v-cbE%0gmMe zW^f9K0ME8?4xMG;e~&vdIb!aVpuc^Gg|BbYo-{+}Y=+$QF`9ikF_ON8c)o^MOh5<< zP?#1#r;LB2G6TN{kK!(mqx`dV!48&~d-?VMQzmQtb8tZI7Fu0REm;ttb>{k9ogX}L zfVt0g3@`{^%_}K@Nche~d6Z~7ydz7PRd;@57@!6-g6%+nlWd;xyh_PfR=>~$|p?(Z< z*jWr1)LW;~je?x!1r2XIfms}T=g#rNxt3>xT>C{swyMl{BdlEZ)t|R2|IGx~f z6L!?+E`28<;V1nhYgj90=UjZg?I~pSCPAIqIR+H?-4J`)MH%+Er|m)`zC%*ulb!*; z!-Ib4c$KAsv%>?YHGuV^)flfGhx(LaDD_Lkrg}=GsY{)`4VbGJ1fzRnV7VhWe4SY> zYU@PPrg{?az&*GyZCs9I0^$8M_s?a2^*)FKpedo_GYo`;3<~^}<1HvoT0km5h8-a} z5jKbQegyp0elI|QU9A9Az9}97-!>q0YiYH3`|PxrI7AVdzoh`YQU=&|qyWuk>^MBL zO2xUne63@cSbK1~@XZf;?R%@mSCH$Ki~K)W)Nae&JR-ZL zvDUAcDbk`J{(k{=>^^lsiZjiG;u_Ezra3IcE9-*JiVB~pG8^Gk3aDuA@1B5<($24r zPJn0vKml+K%Buw1e58QzO<+Rl0|7Rw5B03~0w$$#BH?^;BT$I}3w&1r4k})NvNGu6 z7ED6B4{coMUgAN8^#Zng>VF4Nlv@TcP5?*FU$ca0;d&=o10b@z7yltP9YY@caFs+p z5J;8+efk-(_gvU9HNkasZWAyt1q9p**DDRM=dwV9;GUn&-dh@n?tZ(aPX&yh^ppO{ z>1E9;=E6le3XD_oQ^ztY7EZBh3P@1w8M2uj_^0GRr315XwCDXY7inN3zn3*$na$>L zS`4TH0a!6V>Hd^OfDbXMerZ6|;7koeA+&33c~5`_oz@)l@eKmVxB_!`Wzfp;5B{fV zJV5J3S}arf@cgHChRBQk#DPb^|9qw~V*x!Nx}_Rpg&=h%kX(mTyn?L&5!W4~&_sgz z;i^#Z&R_ukjyDc)JOSlm(77MXux^geROva^=kyNpa90W-1b&r2OrI)TURS5td|Kp_ zVu@%D<6iq3)WQ&LqB+KZgIl=&X~O~# z*q1+P|I1Klf!cWYg9}MI{~LFWBDf=v4DBAz2WWpPYj8VI&lC`#0D#F7K#rRj1AjS3 z2Wy7u{p2!$h#m^_C9xhrG-)M4K19A&1Xz61WiFP&>B6I>_N31W zVN%a;sFNJH&}FxWATg|sN$fgbQxnKl00&^_6Zcc2=ELL}N{rF2PJk7_7?!J|nqib> z%ArJII=(b;X%*CoLjY!+T&om7X&V(16hWOjQMpeL#oUe+bk1AKYPk*o08FSiIF?jr zEf7+BpT`d)NS)qd9I5OckfDNn!&B&;KY##M$M<@I@adt@y4&jOKnOKHH6aM#Y1G!5 zWy@7uJ^}e{g9K-tSOE+i)>R5%=F25FmuK4wf&9PIp3A`ps})cV;BxqX9%&T30@lCJ z!h1AvThe&JZ>;fWO97P>YOMV1N!y+%1G^=F5WQ%r?_zb#fHc1o@Cbe7+gX$)mC{OQ zJTek3ud5rZO~{49VC^VyVvT_bm$5_(X$?;i{L@VbgBgC8kDqnIIhTj!@@MsKwTkm| zWvE&^atnNo$N%$x|G$4iN&n~nJHQ$e-HvhDtvkP`drOI7QCAtJIv9A{sIr}fy$L`* z$k6-=e|CEB?7iHURg`aZF^lxR_r>X0auom!dp&1{Z^D;f82{29am;kW(x-L&q@VOp zOHcC8*WVjE*0H|clge)MGT>C!?b+{~CYmYd1O`CP?=S%sp+7(HJO!3# zRhGV40<^p%cgULGZzvZwBVU zDU;=Jd8b@w2Iy_#qgjA#(a}z_ABIJl1&cA>eA6x}&rpv3pRcbn;+0-+B2f7|J4sJL znz>H3DfGh68t4}a&*MFDQBye`g=kl}=ug+4T6cBvow+_`O3lK`Dph-9%uVe*j&%ZeDw3J$A<<^(p~}8jWHXycN2i78+30e60rki?MZSuyM%}&;5}eF zA2TKMgD`CdfWXDG4iNc<=LS{+2@J?+rtLlIzy~aoy$l3!_ZXl4B%zLB5`eywQ1Fxf z-RZVZCjCmMf8l5NTF>7%|=a`Ax2A!+-A<`$J8PLmtu zV@^@3P9LJ-=Y-NHm(#?YOLg9U@4hRI&*T@YnAZ>d8c;hE5VWcT15lG?!=7Zb&)mGM z$wSQ;M!;4k&wLBg3lp|lbu?9{)Z{ksGHih#(DGuLz4e*+-Z34u6}GFtj>D|1I`?$(Z}me{j7;?wXk{f zs&(G$iL9FT=Lu9L;H^Agzp3BRqzvB{IJ{E0jRbXA4^%bTJM>jO*lb z(B5!hrwoh}Qs&r&a*5SC?kz)IxpwH`REws}+e8*udJABxniDFovl0QECNk8d#PA~cx_1h#< zb*vq;Ze2Z07FkGrVfjq#ef9p-uV0}X-ztGJYR{h-aJC$1fftau(z@_-j7fo7O9&Zn2R@_^&L|d1G!&o^A7Xlx5Yf$hWFATh$@LZhr(cD}YWQ!x)w>ihc#vyj zSfZO(wlmRJAMzY13J@1+ZI&qwziWbWa5?H3pEwgy$cUzw_iKz4_!+p8U z@8i^gc^F`5=Wn|l9~eXP|3|(k>lMK>$JG`j9OV0E55NGoiSg|zinyCe0p0LDeBPOW zMYI23zy+njE&vNHnMMPBf(c^r1j153iksHHO(F~T+w7m*$`laA=Koy3V|{p_4jOV9 zu#YSq@T`!+vIs7S&s9E7Di+5}Qec2`8R$TRyaclKyaEVt@%(WZrW$FK50Q>;@j;`4 z$1HT(k>mP0_Ha{X-kq8z3T$;yz8HR)^l4afj6f(wo?sC<8I|`1Ci~RIU4P9bh z2LXh;Ivo>YZsq5n^pk$K6dyjnt#`$;ahXc*!)%?_W1YWJ^LYUeqS?Ezd*8p=evjs} z0j(X+1*iP$vCm@_`B;#H?doWJxIsW!lgf8uSZJy-%#6M?LNTJu6c0_S1JU^E67!V+ z1kjF12G9=EuJ#A-)y^+-#W0f7Dy$GrIjj+>)`F)>99QZGm**D>fB-{?)sGSujep|E z+>_$wi2O^a%!2x)(3t`Rc0mQXY^--FeYEI&esM{)HAvBe#i3S<)udLMHTiJP6s5mG z$Er*PUZ|6(2Y8t0O}}vzbm80Wu*Mm@I|6;3`#dVdv*Vs}6_Z3qsXt4d<|Ry0fD-sS zwTRGR1FPONR)Q8PEx(x+@KZfkG*$iWthqX&lk>1}D6XAcAPB~Rz;`-xc!#xv>tppT z398gzjz6$LAO4qBRMI2?G~8%`B(1W;EPB09hCkR|SUY5B9pp5~Y6CSp;?Y$P|B$+9o- zVY?J)^Rn$40498AOx%!cu5uZBmWxh&?{I7v@8C2jeTJBxpY)S{yQE0XO_;l}a~-SJ z$z?{rb$X;uxaV>^@Q+20p1IA>kUo5;J+GKUrGz!2yL%kIJ|y17>cA@Do{zl%cUQLh z49qit2c7%C7)t>A-X+#FwFBA!29s8*VVYEvVql1!8Mwtr^7#g?1!|8K3!}IK zC9~iJ+NwVKGBRydLv-r2N&(cwFF_ypEIG1lLgGB?LNiHP!5!3XjcXh?hhl;G)h-m> z&l4ZPfOfgj^?3+B1PF~LfCAgKTIx@=G{Enf0_0CNP`!HJCx$`M&0d`$r*8=*j3lO;azvyw<|8PqH&b6U-AM1d+JKjZi z^RyxHLjVx4byr!N!X-kjTMqDtKoq+%sCMGq;9BB!r2+{~)&MuR0#(iw&qIx`a^X;l zaVNK${r5}xpRXMRT7>>4>)ARq*lGZ;DopRBM|k)#SA-4D&+w3Sw?a(JOdRr19-z{P zoM-f85rT!7FrMOYl@Fb_#ZDkIGMX54M@IL(6ZY|YH~cS0&` zOU&*~q)xG&EU3rO2KBoF1BGbttrO0}wp>L%%z#gv*k~F=1P%Cime(39yDgVtzR7ZQ zu%^!)mX$p$aQ02bN?$;Ou3J>3Zrr~T?~w`=K=4Qxh3rpGKkAWa%)7a zYQNBrH5y>#{6<=*#K4gTdI{)*7VLcY#bjv;;Os)M=F>9b#e(1dKa3j0iBi$1PY+P= zk46}$vP6JEW!A5(6LQP}WmVu%Ux+ffubm*RdaIttP)0|kr?N&w&)$z-hzWLzRmwA=0+z?6-R+#VBRq4b4L7*$$Lf}s88GBekGVC`(LpT1v90KeY zHkk2C0iN^TEC_^Yz8>kIwoeXkDdv0u=DF z2vFccU)5l01j3yyg?et6m5Pporj`aZDV0CjLHRSDXO2u)(UzpDh zkx<{&^C?(@5}U~UHEd|3NXRT2GPY#;8pu>hH-##o9^FK}o=Hu`i?*gRb1+$Pp#bQ= zqWqX0$7)#dMI#A|IWbuZG&tqy_yQUPPyq=!xS-LyeH~}M+!{XfBMK0gzN)gjoY7Ds zhKhYSX;l6f?r=Kcg5Jw*$ahR=Fo%VPRuLrwnAv{!G)MbMVBsz;Q#52`x4%F z@H85pNN=!3@5varw~(mwASgj!Sp+CL$3p%T>jlf~Kmz)V^smHyP<4ovq{bcRIk|f@ zXTcWsNkfnC#z0fif+3o7#yMahjQM`U!4*kaaELLH!hd6R#=#JkmS0bA|C@`tR4fAp z0^BSG*j1wY{mVjtRV~nX2o$Jh2L*l<;+NGxm|iejn77>VfQ$#}2F z^y2$3^G?j^`rCm3z=$PA5BxuCv6)#kVtgF<1m%0m;G1K81@6y6k6GqP_Fq{)Nv%Ll z?8=L`44?*AX@?iF)%^bv2&<5EOxaJQS0`Fi<7*(;TVj)dU;I~NnxSs4W9^LYDZ%M;wIXntVZCLi39@BI441r)=p_Ru03=$AmO$jJ*gI zpEB?r^Zz?*27l5|T1g4iD#gRz;c}2I zHqlNJ*l`jQ3mX63{QV~dyn5cskv@D6v2eJ87k7YNp73#fG*e|T!3DTb zkIF3YvlfR%tzv@NfPig}m*O3Kmzlr8sLSa8oQFv>oM#A0sA48T1+Gww4CjQkgJ?z2 z!GR&>@2jk=Rb^1X5303Gb5aB?vAqg;kpcvMMs0k<050jPwkkdAsQZ72ocuJ6U0GH9 zo562t6Dn9&ZPI9{I|C2gzUjp4+pjD!dRNw7AaS!6{0g%XEJNVX*5}0kW3az7M#@6y zSTi@{0n<~@z;j5T@Q?ie5#ob@g@#^oTa?huw6OyU%;s{Yc98Im!a8c*5s+}qOJydF zGtis@ozeA&5ltL~rY{)JK=n%s+4y_$E93eI+_qtF zbTI+2JQZY6y*~v(?BWWj@B7+8NqDJz3^2Ik2JC&aCV*R$&$`3hy09KNQvM<8`7o}? zH7yJQeSXM_)v(N;IGh!nK9Rw1 zO8HR{c+1BJ)vq*cdRLjSQvTui&%e3Pj3Q{Y3>d-0h&DiB+5g}($(mBWmMJ%<24GUc zS28(nfP?)zGa1T6nE$dLN?8;nz&QA@2&4*)wbM-s$>$M(o{h4(i+w%_Eo`8obO%SyP2Gl-~C9^O_TGN2Qb2|?J z2q_PP3&nIFdJ>kbN6x!wh0=_k*WfL|fLK69UjSJY+Ijf@SpX17@B|z%eMVpa0fVky z=Ax`2X4 zG~03AGO$W#l#TShmfs2OFL4AW>jd@guedJ!VIUA22MA>F5`hB2^`65c&*YBYnRtm6 zL39Cze(K%_5H!PaQCLB$7gC?i)dJ4bEVLV63y7{m>77Vx0!h#&Y`Bl1pEpKc2_P>= zKwR>ECn4Y`{UlBuOEwANlVa7xep2uFrEG2k@Bet%vy(hHwOy6<-O@A2DJH7Z3kJl7 zv8H^5HSpPit_cP_9_CT5r1)9J68IF^Wrne#OX~Bh|vzlVh`)~s19=f|^wl5N3|kq%^E8485UlwFfjpYCq6n|3 zbw>d?LefL5TkR;Pwx^p8=%#_7xz^)BYY{+!;P=3Ffn(5=w&L@Mw3cy=o7g9*56$mW zAiz|=x;a1qG`BV=_l5QRk9`nqA=WdOYnrB=$%Au59A-Pp@7{ulIOiC)n?S%}v))Ne zb)2#dgzz28MluU$P3Ot9jVd4WwYonJu*fJ_-V6*>u*SlM&&}HIkyIg&+{*n)Kj}N9 ziRGPGqiFVDh`q{Xsy!K2*~_k7n9ql2ChAgb>(pQS3;F)3sRL$8|6rgxkSF+DfU_md z16c{|zkq!Q$zVs5mdmk5t}FZvH+mxGQZ^a1SqhnW@@3$9T@+6m3Ik@8%`hj86lup; z06<{_%Z!MkJ;7nwO9M=k6M)}cJBr zm9IoL+#?lUJcw1u*|IpNj#xQJx#Mc})|% z-6g-2$Ng2H3(iHPeZe(2?Bk@l#NH1YV>NP)dekaN&cXf(W3{ z5a3XBN5PA5p#%+U@~Xc-=_h^nbYq)dSTV(Zh4@|VLvOx2)$L80Ms$KfiJPqW>DYXi zq-d*i2KbB`{Nj!&-bYY4ngtRKomO=zOHrjv;=H>r6N+5Wql;;OXSS;HW4bVpQe0${ zRq(~s6ML?GI*(59rz8%8mItj3SlhGL2{WCxbcsrvhQ;`tbBC17cf6bXzavOK)g^Z&Vy%>PF! zcLR=eGXe^JXq|J~n%lnuif8%)7DZ^9j)I8^ny3VIW&NXQbcp>w(aFxOfZdL0K9sPX z$|b?wyYfk3Mu9l6FE9_v_g%FKuZv|1bF3qpb|e8h1&*%*If5iOR%=a{z=kkZtbsQn zbelLkrZ@ysus{V2;5aF_0iHtzR;=Iuz?YN2@9Vrm;z@*@K`A4jJJ8}&*RyYCUW;&+ zEt4H`Z)=cg{=BULw$VeBI*sa%L_G4n#aQktU>`&QIS@n}1PQ_xS|Q-}TOEtfG3lT5 z_oeSFi2Y6}BpcM{HL)i{?7fK%i=ljG+h6y;&?v1qx5U z%&X+(K=8-oP3ah!FY9FQqJ()_bmQa;jZycT%5!_K(ZaD1VD94h583nrj1wc~P>=B$ zC)&0cI;Zkb^O%|sZURP(mWnfQ0urA5{d6=GAaIP4dCoN*;h#)ciq;;P6M`5MI(39& zb`8LIP-qEx^Obe_kAK5&DD3m~geD|gBE0+#*E0}tufB~uL6#E_bWvKi~=s!YYT^j)IaW65LUW!>DIC2my*T^iO zsRT^tI0T{`=%^Ol83CR^+zB91<#a9#I7c9$Pr|B-=HDgMI2X$(j`rUG1jlk=kUfRq zEFLKn4AVE;9kvD%_7r``^W_N#F(nA04ov=BfjLCZOT}N(BM}mxAqp zHk?g~I)rg+?xTcCxDii3qr~e(? zx>Ndutfx;!8%4wPDggbYzdwDV1Nce5o?_Tfx1{z>Cwsl@%h$a-?SKCLrjv^1x!KGX zPVfCLX`+{V+=3sR7ae|2){kPG9DYC^P{spTXGi2R@QdQzO8-Cs6?P#iMaCQ$%bV|N zs$6TBuHUf?)ZU9`x5?eS(a4k)7(DrtFVxgl`J?BN>2DI~z{^N^g4)8lJXPuKe{lKO0gY!+Kc%fJ{$ z#FxTQYrzC#PwyZ32DFY12aw{Rb>pr4!IX;tYxosdz$ z8*8xs@(GA&>e7p$<|(&Na5-^+9JDrIYbR;OkHR<27YpT5Fc%gN24~i!%~$VnfJoKv z?pX&uAn3q-_`}vh7X!~X2c+-fW`Pu_hXB?@R6PH4_#BbzK=6TsBP;|DLG~kn1Ns9@ z*6BRoed+Ky&8VH&VmSO$GGzmf$!gv(l`7Fr2pIW9R#l5A*ppfv2zo%srHc3 zdy_mC&HjA>C}JoN+wuv!8khC=yMu*lPTP69Ow1EY9Y-lUx#nYiMMkC%9T=bs|KRsY z%QOyZqq*vY{pq{cGta3GAO4{^f6$q&&VLs8cllm}kKs9Qq(wQw&8k)kl_Cab{?eLP z#;*E>O6&c2qyU|-uM0{R2p%8>F<`bL*S9sO0E7TYfItcBb=e(&pUn#vg>nrXIaw2+ z<`#3RRhMBR7j*eW5PwOE8g&|cyHNIt+Pf%AkL&$C1bF;vF~HxmwQa~bIaO7m*~P!) zN)*|8rsw|&;6r+n_J@v8&`8TB_Vm57(T~$9iHu44>yteJ+Gb8sIeYhc?uu$D+HI)je z-vWolp8w9D)sRmicY&74+$|DJ^%vi9cn36Pw!FAbYqDlPXvHcX%vs>K!^{-4>Hq;p zU;+V*8PUDYBk_1e+4IS=OWNnTj0$b!U~oEEVZ*=+;H9>r6S}+h#_*o%$)~^R5$vC- z6RRgG98^$!?w+aO-ziUVwds3b0=KbH2-X1Vd|tmV8gS^*p>GRFJQmKRfn9*w_FeZZ zWU6uCL$;%H$|`{44y-X_@IW0rX#h#!$Fc7~2cY}o{@=xg6e!hP-Vz7!6B%Uru5KY9 z&|tqOmb~(vPh$h;1;o?8ZXDPm%l zV2sG`ItVCE06sg>X$d{tu-zKqLqzcGGPKYqi@MDyuPC^*mksQaf6{+9y|M;B=|7WL==SC}`@jmId*-67DRJHY z!JcJ$5Y4lxP9BHfJr!Ns)G0Lc=K|o`cBZWX<+@U`a(=cbKwgaHGOOSHwx9~~<8~F) zOBu6ZF7r!Y39Ah6`WqCO3%i8^KE12xr&_;8Oc1aC2jQ+w6NoVfzcbxs~ zim(_w9HLb>qCSieHS>WBFF5`Hjwy*qTaZA;iUXvf@&p0b?($ZfCSPeL}#+tT#%C&XrLYO`>1;ToHx2V4zN1_8l)>?W{fGs>2 z0z^xlXzEab?KaqV3IhHgLPUaqZ}58(&M=M%3R~xef&b^S4X*1%y4cOpAk^dYG`Jn; zCtSHYjsN8SrGNvbBSH{%q^SfFQ~;eUK4=9NKY1QCWu?{#$7!80VBr}6h$e2rIsYTk zcW#?}7Zo=!2MI_?XN(;SHR`X6GjIZ&otMC=_ZgO~#< zP)vF!X;ffg2u2AHA#=8v%vLFO`VSI)45<~Gn#$b>5|mm4)MJM|F|DYh@4oy7xwSF zq)u<<9bIHz3(tEvcWm)i@EMCJz%=H0Q25n@zEij>l)CX9oqSEzU)iu*!^Q878Dx1! zFovkP!}A^)CHx)VliJ8qbtG+l9aCT2;Qm@~6*@vbD?e03{yI#|#I5gt{`<4Kh61Fq z6?1zU4GUOt3lKa_LuL6n@q>G;_vAz>!V^`*=2s@0ea=~VL?c(C5o9_Xs@8@AprFbZ z6(X%w;1K6hknk) zZ9Rjq_*}Xi2;cuy4$WU@9iYtQVM z$ZYOq+f5+{zY$a@&c@AQQ7Q_IfI1#_*%~E>4OC=t67X#xl%J*_0rV&Rq@2X||0vzq zD{uC+Jv^IOwh(!`GH-oT^}K)wze`g6-?Y2p!*#4cm{0Bkzy~<-YX)m8f>?T|@7!K* z&V!RQbD8mpCu;|iTA zJy&%lt$*iDK8WRW(jck;VOTNr1IB(zKYm-XYb7b^dH zaw*vPHB|wCt!APf`8ro?JQaV-H+K{_9r(+E3R_@^=*AXciB9osY3_eFF4co{>-3ec zGaTk}YdVE+zXTR#y-tj;CRf^nzyHY1@}l;vGO zL{XNhb&T!?s1cywN>ED?*zk;p(XIgb7~LG2xn_$q9*Zspz!aR2K>!5`{L#Lhgy@V` zB$ojK31k^CEO)2{xlkH`3K=nHG0nz)zfWY+>?EdhzaoHS{ zi3}f&){y7vNVvVn-_@C*N&lPlslaZ-ehI-WumIZc|6GQuGifEny6W~W zgB&h?w@Vq=&hM~}S-3_{l;tuZ{5>C}DB z763B^IBgUZK)y3eF_4_9jT9xDWYg}M2?B~|SP=cFU z)f&RFyl-K3zr2l%qZ06(A34*>$SSO2kAo-7^`2n_X(+I+fRHU;t%Rsrc<`rHK`WZ;1X=INTi zsqN*~4wi)%13+!rs|Li$*GPcl@$c`AGt zD=W69r{RM{ytQ+7)XGq>k7@0AZr_VS$C@%u{dkxC03dXqJI(&&{Lar`+z?d#@V@hB zGKZDoYHGXZ^L7I}M?=jTaWolCz#QCVodiU3BdF)UmzFHxp~p#pxeHi5hw12r0mD4F zK*ZutpP_w$3z!3A;21G55Sid%kz`1X-?pE%5H1f5tol|I&a(zOmz3+w`;qKUHUQAk zabo=iDBOVns#iQe>bLG)Z{~4I-Dz~=9@W!%U%MPdEi2^NskJ!O=TwJNPtqAHgrWk< zV-PnG{y7SKV8B3n5A*e7ZizNs(+*5SbA>co(E(*Wrs4~jnFMvayoE;6UcG3c&l!8% z1J*cq76;osqd8kbfC+olslCdVz7z5%A$onD1nyO4=bpfT+O{45t0@&X!K}Wa4REKGtCa-XQ$8Jlyz(O%Ubg0?{}jOn+=ZoeE&{7*Zu(}8PAG6kHkBL zSucn4cT|{wa){-=j$a~~?9H@v`mGcCZRixftIR@oLq+4KHeA}Gba9v;-T%&cn>hdu ze3s6CWZt)iF|wA2%--vjhHOFkRa3lE0CvsXzscuz7OjhCY_H^$w-5l@0FeV~l_=Or z*g!rF?sP}%Oqhpi2%d#M#lPrC_jyo!kG;O#pw15Rt$D92POj3-5UW!0g=+E?Wmn>^ zS~oB1p}3T(^7duDxOS+~?rM1j&9ROQ^}r~A(22dy{6Ai;PS3fGEP$hin}oFtW(>(E z0l+H~jqgomcAx;q47kO4@fzCzP1?u(Prs-A&o@i}NB}QqK&SJs7h{rkn+Wb|&F`&C z9^}RLPS^Y?s{*WV*8>Ya0SyM4dIBF9KxtzN;dqGpyZ-UmRF?rkjZ?vHRnxx(azI7a zceepxh=Tm;iAE-%A|U5#!E-oqw9^zR7+eUtXpU%QcwFzC_GbX1lj}r~BK59eRMmGE zWc>w~e#!Hb{`)C@=Hfq|x+8BAwr`+7$7FQ*qS?2vU_wyaf}VHnoxZc4=(_;{){MJ7 z?zs{RAo}ZvN@n#XoZtvZv>=!%aXdl@EV^X~To51T*a2)ky&d zHs5xHrmPqhJD>k33T80Dh=s#-taBB0|f}!`KZyy(WxrTydqf} zsLW_qUf}f{{;nwMor!-c13?4;799E&6!(w;+D34bGu@>R6jUBGcc5>VcXixex$qy}<_@`#1*+YG2|D zDL}>}?~zK@99{V!SRyhIf;5z&QNQ^I`Nb4Iz4Mc5V&U&5&`p3%L7>HZw`V`;v!sM` zwKr^-pRB*rbtv{sDd9Tyo69mNPrZX|D1!!5^2fFJJ0}Ks+A)DaOp1rZETSOPD_D)s z0G7{akns${_sn|U?|lFSbIFXM%6rq`W8=77&eORlbY*`rdqIpmGO=|07Zb}hFYYuu zN{gKYl*3q^0AZ_6@=IO3MPqr8uSUkaM`4g7Li4%+3&bS!d!{gZ0l`8;b4CgMF%mT_ z(p8?3FAVW{SUd}dY0Uh5Mr%*AN>_6<0ex>l1^Pe$z&Qjkp#w)f)xrP=uN17wtf!v0 z)BZ;NZ$N`OU2bV2B;CnWp;a9`Q1P@O0X0i=>=IN^bA}2&j6Y#4Y~o)Ga7QN9Uti9y zA{ti8M$N4p-U<>V-|%S`CK{Qnmk25DXtNUh+3f#j!KGZu8Z-1{=1)Ndd2T`-a10iJ zo7m*eP}+j=BEIO?7Pc`SL76&HKmD%U20B3G#h<@@76;%u@h^OXsA~r#*|GyjhBmRg z1ite}ItxHD-iU_L)eF1raRm8vo_JaLJAi^bkXA=BgLbs-k=w=RCDfa6enh#`Vzzxa z6I-#Z1`QyER_d6@BtmLOm!i9xc zm}xT7bKj#Co4@KTJ&}O%O;m4zm%B@%vp^a~^YZooqPa~%D2v}`Z2I&61%Bn!QEF`M z4QSx<%;wYKHSx~sPc-F#-%Ez28DD3i9G?V0QrafiIu; zdD#o{Y#~sro7f7WG5>#w(vR=6Z@!9OpnjLZYBvx9vT_>iEXSgoKDr&Ga-*Kn%I$*z zgg;R0|5eL5^w2#3T>v^$1VYMp12=?!zGu@ev=+$kF@kK67tcN!yaDT9rh9Z4IT1e8 zICS*Z(?LQ0aC_qI)VUX&F013M>_XZnVe%&U{G^<2xV=iRM|+3qzY3*4>GP!K%^%11 z#%?*yB{Q^Pm92WMcLItKB$)a;Y1F#@d6_OBJU6t_Hg&?dVg_$z-dq4ChLXQi%mK+PH?9yXZxZs@=NF=dpWuOKrgD%f zc$NO18mgAl8qi={9c*iY=)oMWWixL|fv>Koz&U{hYhqrLMh++#E=<%&vH}OnOgAoI z07k)Mr2tyMcO{EX;P=o?U;S$iij$YA$#!nd*|+zBJ3;xnjHtMK2s1@oMT=z)?8G8mLcC-eVb&q4b<@?c2&{65S1)u_U; z5Qa}<{R06&tRts6>galyKAhO1VA9G9ZT!hn54#13;B|yJ7yQl|x8x?kZVxn1cxA2h zyKe;WG*_l&+9@u8(zdgOfzr@-SN`Q-ic~+!)TAK5;J7;&uKS@~-o>uaAi*ED313Eh z`Fb6!FrOu!fr2=V)q!Bn0zJefHp64qF|8S8OaTQgw=v-;i+T1X*X<|_l^JrjAe764|LnRxl0&~8;Qg|7u%*<))nIjA5SBo`A_ z+~@9vAxnV@L0hwLI51@V4mgm9282w|TAXzR8j480J+B|81yo9w7wKA{MT?JlgqgBg zrZx+F;9?LxgY0M`j(lYosE%t~g1=K;s2jt;)K+-9Tw+#7O-WJMNHpI{Ana(Uyb*PJ zfr>j0LzTrNrcN1EzKeP8=07&@a^@hf`PNdT)XYHu@hZyN;tn9dcM@PqX7dx!z+kT_ z!BX&Qa)g2IEg^WAL($X@lS&Sf&Ny%F+RXV z_dD%BfCmnBa2x^dJ8RfCO&8|&wJ8+kCvsfV`^JypZCI zET6aq5_B+L1bNgp$GAC1gOagNdCi|P#bPWqYoMSzV!ji@|KCg<@mKhHmu>>euL!I^ z={(##Qlz?gIMT#hR$E5-Jqrw z>k9-_+%ib8Un8a&1pk2Fl@I#i;ndlTzvnzKyLyO-lgqT*KRjFT)bE6J)dE#c$LaZS zN?=|EVXG0qzYaTsMU2l+6{q(z+;IS-YM~=$1_OlRm4fa5(IdHp*0X(Z6~PDsn7Myj z-$UI>amtO41b~JnD{weEfqxLXCs0|HkNF;i=p=B%KNVrC&bu~6^hb1bWKV|aNV1Kn>u?oSnmcNLKqpB`o|;%2YMgYeh7ZzXK0fBt5Ij4_&(5& zDaUETw2y8UN;k|GN&Jlg{z-4C6Z&Hq;}>k+%syl!e$rn_uL8Sb)qE&Z?YH%ptpwD% zxB)^g%AVS<`pkX#6@cV-N}a%;)V)f(tmX+7O}I8dNy_IfpBL_W+`*u((hw=%4~)l+ zkz@_~qra#`C0-dwEK>mrsvb}Zuo$xEjNATo<_E+M*diZj`3)JzMl-YHA_4Hw?tieP zOuP~BO>?RM2KV*|)yM>yrYJ!iz(zn|^(CbatVq;Ygi(7^CFxIVDS-T)I7Aau3w=uN z7+*7)_ohqzKB{zBT=eogv@P!<{BR(H^8ZIuL##ug>u&CXbT&#Hvw=r5 z{Y){mKk4sJFF?$snT=m8_b2^l(lj3|xOFU1)@01(srvo$US}~7HnC%U8(;E&_k?cN zJCX1%=hNvUUmXZ9dPn0$dkWBu*tN7I&DsT@m`kjL4;E(BRD%o-BxS;?K!NGmq*=oD z31+W5|MEM*$Nv{lUqOt`s4lBV;3cv^d6;^KP5kvKT;@ zO`rx5L{;**L91Pb%F2Agi13=ue)!U90uypAzAAuf@~^OHLT}-@L5^IVlmqA%$sB4-^%>|N@9W@-GL&WO=Wez{RnFR z+4Ks;V1Axk{M-HRmog_|UbX4QI@)D@y^hI?zUp^M3Y3%jGgP*MjD?!~HEG2?VBoLP z`tW{#XMkNK0>gWyjnF*dcja%;neTVnqE4%ifB6}{%gmnAn$aMKn71_KWRAN_@^fvV zrE8iT<{1GAyh=HP`xp#x3k5sQl49a~ub0ik992UKHpoMj)nS5K{T_w-rb->METv}^GLJ1XPqU&&FTR2D*;}by~VxW&azDO)vXdl z6*FLi2cj}V4L1`Af;vcS8o=`Fro z8YSD|RfLHTYYzCvbW^4djlP<61d9kz5(`3*F zz%_c15E)s%+cQT5Jg%QCnue)sn~}j+5#)2vz?()}`G&J{$wr z0H$gNFc@C(wdZn5MGfueJk$$?9;Q7_Nb)B;)0}RZ^AOP%wrti0_RTK5nhK31cpVN~a0TSC_elg>xKA^^Ma~Xat75RF>b?&EI1@MmOG>1n(T)>2< z?lH6GTOiIW0w@D&8nCtv5O~g0G>MjfZ|99QjFAsCe!i!Pgh2%s&@*(oz~Im*e5czN zwt(lya+7Wr@WSWi+Xx(4?KcL81cCU-hmke@2&e?bh@tb6Zx!fF@_CJ{Ih$MprXYYF zNWfPhUT)oJVx9ulEF&(K`iZP$I`qp}L2!q!@4jwA5c_1}&3GSndwnAF z@sQ^yy(Rw(pAA;f4*>ArPo1Fc4eJ$`vL=B$P3x=!Oc)$7f(t_~CH?%zfmp7va$ zJlzV^^&1|O^xPpoCIotqYg?{5S#E!QNOT|1&rbw+K2W;U9Y~#)>Smrg0Rxktsxaw9 zt&vf{uf4WWNpK|j&7`wQX>v_82cCkMG1y!SC@>|kB&G~*9)fELohEr%2qX){Y_GDP zvo%3pEzNz!D9|tKf(;gMa6+-zaX!0+oz|D7zv=Gm)050g!fjEBaos=+X^tH+4$y3Y zptx&>tDkYLbf9c*<#{iEc6y%Q;Lm2Ke_5U6)FPhKGMP<^%lH3Ax&skP;IBc!>v-~2 zh6d}ZDqCE%C9C_QnMaNjAV+ZkVV8C}fr0=w8VI5pfTX%U5&#}(?2GyTl!DCMrtg!5 z8e0jZZfHMx7utQSJCiy95=s}8U@O28sMp}EFw(LIpRdpddEFoUrpi$<1+X1;O0sa@ zu1Qg!vQpr7{DD92&$xjA`NjKW+cl)F8}wXmZOqcDAd2qk5ca)3;l5I$0iJ+@fP)3C z7d(Mp=dAO6h%o8et_R?2vg%kj6BM&gIP8&e6l-uln-nnWxgP(253~Q@NSy%1jD?BM zKk1*9aK2p3?Zn!!MxQnH(^}|&hz>lO)|yH;ivd*!_wBpV45fclW7X0BSU=^9K&yqh#Dtl=p#@X^pF z4O4)I2?F0K%f>L^Q{dXB&GeI*|E`CH8b<*G%;3|!LC4nhgBU~_7gB!wP6G$M7z9uCR~&tP`&iqe;5ajxNm%Z zDD61TIaz_I^^mSoB85X0~>XIsfv_GqONQ07a4D1d0j>vxC2X3Mm6H^YUF&fkZO!6&qX#utZpE zzf-W-!#=lWU$ou+Nxz)b7=~U+<9Pco9PvNtKcAGqZOyZ4D^$x;$0C9bF4#Z@4j5!W zJ(6mZVkxzLBr{J89>nne@1B&qA|HcN(r9=Q8>&=p!vTDSRt7SahgR`0!6U{BoD{|t5*yt z6u%=koe5TO*@cIUtrR-XkE=)4+MnSuywL$WRm4lyPS?ejN6hJ;H56M>{qMy=WNU#e z^y~a}v_g!M6)S*SiF;@6&)${j-thlb(AqOd=JP0oDp#*7us;d_4G2qhwC}&X%Vz(= znfVpO%u#5fxc6Gnn`$0bd*3Ehnpl4pyO4E8xeBOv9At!Ip4DnKddDNN>v&C zIial-)MpiwAYD6%NUMwhnhwZ}q8BX&An&TI3_qKPLnr zSww(Q{L{%}{+F0E$b04{v)vK7p9g$&qjl6QtKEw{%>}C{P$CbxvS%w1;&Cd z4}#=R`p>6nFZl3#$Ap-8KGoOh>Qp&N=_lIxsZNPm+76q>ytPwg3Qt07*naR3g7= zn#P+!mGv;m0w|Ce00vuwaA@!5Ti`g_G}|*RU>U9e#zf@S;x!@Uy zV{j72VY!Vtohx|Vp~H6*0(b;jhgb&N9rC*xTjAQF1oqB-0P|sfGn3W>oL>bZT+ctb z_K?#bwl_%i^Jyc*Vz9wez|}M;{hl-{N8%44!}~ihUgoF0r=7%{t$Ysg2;v+{c>oum zfaJx~#y(6RFBTk!$Us4yj;@3IQ;VG!OCbfI{hmj}-=8L7{xwDOS^XA;L8yF|H)Z{# z|4d>5Q2qYGgqUfD&>o(JC`YZ0X??l)tIC@gE0z9D>yUX1sd%s~)U$k*=8a`9kh^yI zFv+WIC)ys+CSx}QulWqmqQ-|XrJG;BnPw_qV*y}2>e);19Im$kB%I$_%%mA;;}1i) zPV6nv6PV(V7bh8c1q2}s_!y^gPl}SXmf{HSe#+WfZi~&IFz`& zrg;o;f>}nuK1r}SoV4=E$^tC~1optb<0sJI5wQ=jb9li`2TP~~_#HI9_zt?sRy9$K zU7pYX%sc*@=&nk)GuLP=)fwDDVP}_S*g)MQ!GR?+H=kR=w?`P=gpvhJn01Vv-}FBe z4S#hDyTuo{(Q*Fw^4=}6Idtc8w$B*>xp6)gm@%ddeOAHS`21v75o?6?^qnjvg7X3p zFj)djHvvpm0o<-nT@6%>0(|y|(IzMZuwGieb72xa!}kLYxX#*ugAd|?yJHDBW3K0} z-=ht{j+rqxm*N;WC<_XJ9!a=I@alk7c;I{CiB_4X8J<9bn-%3JZUevi`%n7y^a**4 z;Sl>t|NW$daMqx6e$&U)PVw-Jg>=O<@_S0KpV)TAIQ^`%nv^n=fAD%-9LCf8JVv%7qrV7*_}Dk?#o1@#x; zc&e+j9+(6l&m&q6`fWd5C-F{$jHZRMCX&wa7&{+WF z*Fy^PoJYNL13B>7wh+*BbqMkf!~!UJi9H}VogF*|c>%bFCl>+cWD8jrtgm|})aRT8 zJ;4qdm^A`wEvCSQyM>vU1WbOKAkYdOgpk!bUU;LIq}+DYGu5Ymdt%*4C-B|M`1COE z4zZtU`RAoiwdqErPO*m*co3I7SjGfaOm+Rry8hQDb#Bo_No&DrUOfFdAaRy$3ee;G zysXW`2Do4#B!h6#v_CO_lWFQ}jDRj+jylAYIi@hBNLsi65r1zS@ZXPq*X=n&`sC?MokHR z2_A|ot2Z!0E|$uuA;>D=H0R8FzNa4JE99md?l*DmCwo^MGv*v?YK9!@Fuu_Ie;Z9! zH1y?+d_CjzxeWU({q@2RXwdh72;fWvJB(WwM?ge@@ulsk`QAT%C;(u7<(ognB`6d2 zL7vIlfctPQR|`%lMhMD;>P(bY2?J09%arNrto&9 zAwK8NTxYTn=rsP*vvYT(p2r<4z?(8Wog4diz{gW$-;KKSS(Z?A69>gP409A;-{qmu zAE$uSo`rs|gJSnR9f*e^Ir(Nk&(5l{v%>6nz#j{NKhx`BeJkTOoG#u`zyD0jKO=cF zXNt!))9f|>^=95fyHM{5?7W~wn*8(0zW23j$rBz?;iz)i_rN904nk70@s^jvY$ zH@@NDkh-(8%WFh`J8=F6Ds*F?%Z0r~%0eu~sTV=zUi+scPBui+AxlD6=t-tNBb-ah>M^ zk~-jJy?xc022BFzkt*6}$C$u>7SRB z(2XSMQy{0?-Jj0C0w>HW6ZBHYCu`Cl%KKf@P5b7+1H|w<*cW=>j&TcY#0P z*huQ$bR~skBaXw|y6orD{8*w?C$AWfy>N?0hRUUAnpYwdx~?RV5gZE5Kv#g|7Jvf1 zss@0SrOoG{fIQY1zd$hnOUOHOuGC-%#3-jp&cbprz5pIb57cet(3!Nz2PpJ?h$=bJ3l)bG<-aRZneH?nTD zqY=dM6}+}DlesKVJJt#P-9Z#Qw5JTYyVYT0Cl4P*P%d#bM4^QVWfP# zQiNP615M<(vE{nKbXFot7Mu7-)O@%f51~B)2C-a&;c%I=0d ziDpLj`^lsTd6A3HC#*HIJAc)Ia=!v7e7DpIRVw|;0qmmuU;_Ua>v*a6-^e`tT}d7H z{>VVw$~0PoH|E5exn*5jr)BB@sZT5h{taoIhppMok0pag-~n10qQ@9u#OM7u?}jD0 z@(4N194xa%)-r*s8|F{#?HIn!bToCoVd&VblFOUSSrPf}m_HX3G%aQjv*4=0W%6Hy zh5~#XMtVoAUc8GKuOlWlj3o%N`6hzH>nsia5ddnlPzmA0wbWG!*BTcFbAce!VrS}M z&8f!k;kro8k!>W#QMBanOP`qa9exY>)NH&E`9q03Z?yc^Sax(6dC;`~S%c`g;Yq=H zIm2T(2flN9QQ{aaH5Y%YhCaXBt#I#_F-RZX8LPhY`LFmx**5n?+l@c(igJKV+j822 z0Kmd}r`5l?bd3{wac$r-|AN4R@m6>;%55e_@ddmqtAY>3iU4T+>T7v_0HPU4Pgeob z@9H{1E;oj{*j=H^`$xCC(v=*IpJGCDeVsu95r=zb*Fou|{nwhT0|0D-O?9WhAc5^a zU;+jPF^=|+LVO^hUxR1x7tJ&A7J}nLWHjHnE)p?PhvQ`rfAaiS6h7Z6OLBnosB%x|Om+e2g59YmJ6i@QZN!UP05`NX%k$66V{_4`LyuW%0c7j| z#%H#VK$v|la&Y5QPe5S00|xl!Hf#lVq;k@gdTCy;j2z(j_<)|SZiW>U7I|lDsjk!bT%coJbn)6U^;&}@NWQU(^wcJmxNV@ zn0pn2K;2lt`PKWFzG4XALS%8b_kCA~U@`Y1bao$xMpSZ}+&I3pe`gd3@B7{7LfW0@ zj@ko0fL5ltCb19;ZpxRBU&7b{L_vgExIV&|)_Rmnj>%(Wil!d=_d7b`EU|0A1EA!In4!=VR)6Djb>FkuOtoh@F zTFe6;!|!-hhF%X&!aQpjTG~JnhU0elltw);hc9smR2|cMS8D}TMs&yjmvHSzQbVEN z)y~a2L)I!UzxQ;T09aDu%}9Jp5(i;ER|#4M3`hVynxSLXegsock$}>oP?VMcV4FyD z;ocvd&yp9lAAwW#A4sK@xw@;PXeilGSR^D#^?v!CuLTTi z&tDk?klY>kT%Q65cE5FbBVxr65J;{>NRMWI`(!BsPP>kM#ybCeXX49h7QTK7eouG- z@(v)Z<2rF@D}v&la&oXl=rA01$4&7t6Uw*k)BQCmTc+>7QrCA)of4zd1iz+Fgv##y zsl8m!&vgEMiBbNQ)EK|alM*Hsvo~28@Ow(oQ_N0fUTYrJZ&fe1@4IQIycyrF{|4uG zVe&u$tHwNrx(yZPRAE*Cs7lRkUA3KYmr}{ccE9T$n z)TXDILD<54WRY|+&s*SB9KG1&XeqFsZ#T;nQ((C?98ETx_8eLK&l%1W|0>%@?C*d(L4!w6M%qat-<^myNVjE=L8Te3k|-d0J`Sn3hU5U zzF7jn8@|~pDS2Qyh1mbEsf$OAMV*GiO1 zphf_=DKF0UCm*-hSTd}YYzHEA-mcD7_KP5+ECOE5q?142a`X1BxmQ|qv;g>%KGmR) zX!UM%1Hs8gv<+Pjpby)Ht3S@ykxNbnsHldHxj@ZxwBKiP?ulD*u+P!SYuLCC?i~xN=g1-*P{<-2X zxksj}f;=&lYF+d5Ppvyu8K1uMof9AClkoOZh7ZJ_%j*vF*J+6l^Z%rKVg_Iu+fLY5 zOhl*g>6ny`Ayn&U0tM`YHKv#b8^+)}Goo%iQN*CoD=*ZlZhqf~FCNig5s+LH{0RPb7_X!i zf@<;h0bC#$qz+>tZGm#fCRoiO%fTY`VlVTRd0RVG7|inqe#XBmb`f=owKX8Ho0SHw z-^)}Wz+`>Gje&fco2D)T<;(#f9roji9nqTTpaKeq04zr{=5Sn57i^M6j=nR|ODn$IT6yMnt9z`O#ZRXQ?@Z2?))4i{V@aAYHopT%E3h|(gnp;0x1Fp(9aUq z_e)|!LH;0s`Re0Sw9x#}#HOhBamqdJ2iOFmjoRfMjW)i4!2?~4Nq)ANKO;&6!T=&% z25|?ljP#pP`9fs!i8y7Aeh|Nfe5Q)akWBv@qLr*aLo6Xr4U&Lc>S3Jav|UEYawv$< zyUl!EXE@X1YPzfc+Vm+atIo*o4DHU-4p28SKXLi1J}dr|=lkG)bloff!zZ(!cRISC zG!8=Re)DC1bsNKWigwFqug`CFbmYF#uWINGoX+Sx`BAnn3-rDfD}HuW|QXcUDLylaK$+s*#D{PjeO;0|KBmQfAjgT1ZBlL#pT`U8UDuSvYKOc{^MCJpv|#d#Y5m* zyN+bOjuub+23Q6Np!p2m#XPyA`=9zJzxX_3d(|fSRsZY9vq;6wLq#|$#?d0IwN}D1 z*d>5AwQ@aI@$Oi|kL3mAVelco#v#Qf`pWwU@1_#$FNmPx%>bT(gY1`8T?&eJ-NEDw z2Jj>yz@aHk8|@WlcInK zWIAG4FRG24@2180-IE%dnD(w0lAq_B6uO16i&|fj@fw=l3H>RMuAPH@w~2iW-RCu^ zv`kID{dYQO)bpfA1HC_roz)!5%RM+I>S&VU3gNEZYk>PCRpq`X_GFfQbJxUr^< z$8wF8i$IS_*#TfeE)RAu{S>q;687O|2qdkhHOYC<=tT7|+WoKVD4@hI$Yb9vsq^fW z7vplK^R+vx)o-7k{|wiuJY9bRa)nT0ayezZjvyr}8IY=H*RO~43Nm9mCLzBA9lF>C z9RQGuIC3poa;38&-C9?Jn97ME8GAiLCHA(8idq)O4lr?b@$M(YM8H@FZp&rhtAxeS zq}GNYatT<@@3GHa_g)gjmmi+Z;JJu$t}?hERp zu-qFp{Wn*b4!~1pY1c#IJ8}6RCWXx?MTT7nwGq+phV+HNPsnyWy#Fuf37*ocplvoY z0o~f+!}qpc_`B2EyfGm7?}qbD+LIfo_1#i53LZ7R#~PmyyCS-Lwz#KL*2*hT`N9wf#}$C_+K2XuKa}DV zZP~eJ+`1bEu%2_(-cfk0w*vwldfAx>{wNC2!IUBS=)>T7eyyW$Y$MMnU%-5%`Df;j ztrM!&2ID~S212b_>h+qRPH2v^XOZ74``jq+dY|}9r!5en>99BZKd%d(oBCT@p4FxQ z-BU-er+hExKcA(Yuz#!L#yfOi^vn7GD``Cc6^f<4Pv?LttTV@dF^N{D?_6%@k8`V! zeXAP)+kH0IVW9ry%uRtyi4jS$WAI#npobjePuA(WJqHlq+0qz5P{CAIj@cssR<`-vDP(NK&Al4XLG2*&PJWaC?&`*@hR*97| z9naSN#^#5rjdc?L-Ki6n;_@3l`{V%OvL=Gx34gC>^iRrZVir2Y-(U`K+@mLvsZ3Y& zwy9fzm)MRFb05w6>iVk6|F@)WOw?TSz^*d`&%6DM1c$f~00hDdZSTgV;zbY_eu_ps_iqT6r<;P{_kl-bV9zFJe3VzW-rEvt^{&c_z&^ z88`rtfUkMZ?gXrG$=3)5-HfpQ>iIm2Hsa*>-MMuWK|(tkv4|vIX8ca4_57v5cJW&j z!U=H9=?OMR=&-!+v#DU}pIcRT-Y{r>#?C&8-=Zqe2Lso?)&ZJ_+ByF6Wcy6>t^2DTf^h<4q9 zhCT)DGf%Egc~0_GtLS!+-1a@!V`lQa!Otp=&31Pq0)l1zu@?mj;hyO;S6I#rk!=xB zSA?6+l?^--vBw#JGcgnE0D|keP6i~XinGqdCQSVmkX<3*;^1I6yiRb#^^U~-#clHw z*PeD?|BDWiDcule&esv%?j0WpN+%TJ_qZGmKU4TwnwGs9XT>zALtHTqYX2*M0rNY3 zR%NPoP2iGSL+}1Y=?1=aKwH3BvH)lV%lDd5f!EXh=%*fs^CoK*EAc*o*1oDC_kr{q zl!L&*(TI}vK&dES7^&_zW~f@tshHZR zfC;mnCHQVUrP8SIIFz##CO3^goeMY@4gtydEbL@qC9vDW9HdwRaM1JZ153y>v)NTZ zq0_m-{8# z++vaUbpc{w?=n`gw*W6`>xJ~NDqAowY+`Grdp}~ z7ce0jYR2vBfPZdJ4CP{(zjppJ4Y&M#H|WDF(>j0W8<_A!0K{1`xw_#yQ@gsLessR_ zIsD>UAY%v-Q*zwgtN_M1RTBJfrX~j!v|LtMFtFl~p^4^&O%Q$9bm%VN>2WTf&LoM# zLf!1w8QA9L+T8*aP`L^yN}CHo8Lt}|`H~iRu%7=q6WYH!<#VPk|5B-QVlSsN^>%Qm zbko3cng7x$`H!cI=uy&5+_-@_>L6#-pWjpYqNBysmTo(DZBq5xu>NlA_;*frLVBIk@JMV-xYo~M?oDdQbw>D#Uw0Pnj}LrQ<}k$#uo|e!PQInV?@dKxWK1K@ z!JipZylXoTYo#W{w4nJXjb$s%GLf1HXh&!Qrqyb7(Ug}~81SR%5h}45{DH$iqS9lv z{|)xHi~S$a_MoA=@c_?;JL+KJIr*k(63l<){I_AwJ7Ik~*Kc*cp8uSm(|`Q@ZxMvQ zVR3ctYMn{{bPi4CG$T-*zXu=I9jH!aD3^jRJpl$b2dwP^4D!{s%p?4vOWS4D{t1Fw z-i2FzQa%Fc6VR+QGO2@3D;b@yG#p9w7FxHeYL1O^#ZrOJxV_H8<$8A^d9t9ys{=a)l7eOBLVWBPn; z@SclCCYpTfS!cryw-2a!L%+Wg2^#!AcTi(i#RJTs0u166RSPhvk@5rHi4+Im&-d$` z&NBc`<;x8M#?N8wBWyn5iXuZG4ML=B;U?$Y%oGya^%odq`VLP0jGcv3!C9prCo<{~E zQY-)hFXTDs{hIEqVP4{Lm|YHtF8vD*id)xXI7?sBjc_V7SheFP{e4M+K8%fBlvDC~ zhyzxk`_}FM%OUS#E%Nt{B;WeuqK&t4`z~pkm-f4$<1Wq`_jwMJ3w4z*izX7a5$IdK z3)|U5fH}bg=OYL*z)pi zt)JQAL-K$xTlt$<6m(+9UpfCJr~}WY^S^sH3U$ftd_DhF-@E>Ndj9`yyuf5x@CnnM z2tczDI`F#_u2is&n}tCKI=Ck-e9$>=HVf(Mx?3*C%o4bu-qF@$Q2>V>R8Y-V@B<-W zo9m6j6Ni~6>l7h3*Bf2>aZiFAxUm2Pkfu7Lj*Y^FS&(aMQkH>d0zc+`sS2CH(@un;j zWyR2jj%S;&Sk>o_;rTZvHSV3}#_=Ts?W53S;yJK2iA~H4pebIc={S8c>UyCnG=03*cB^z<96gj!9Tv zAOHq@I#&%IR|8Ckk;~n4Vb+Na^RxgdK-FY^9;aSI{v#0(W?GDP08xyHTzIMMQO)@H zd!mcc7m@b!BVl7D)Ky@*?El2~q0;KI|3fqY6_9K(jn9qBV=IaK0Q|z-{DaefgFzF{|$KckXkY(AJ!R60C2m0Paonzx+G}HvCH2WgzgN zfJve8KPAF*CH$kXPG?04a906+8cnL#^Xn!E@B#sL72T~kjeuS9)gh6Zy(xd4l)I+? zCfrY!o$}dj=l`dr<^N&&1bp;{fd3u!^LM}Gdu``W>QguN(}8Qhu+*pRX5zPLO-3e> z*$c(-&2 zfqGd3Y!Ihtgid}3<|ApmAyzph8OA)$hY5`Idjf>^D-Jw?XC8|HfW5vPpPmjTe4`LA1V%hB z+A@LgEE-~)Iy?|!r3Muei!@MZ6kCyprmilrbZ~EOW0Mc}Kh7JrqvPioBv^TsMf1eZ zPVUrWx@jtYV{OFWeg4N#-hcc2H!(H;sq_DD<2`Q&?@d;DWm0g%$aV8wbWd=1c!&o|?Q*9pcslic(?A;VR8 zkbzH8#5{xxL9s||!0-rai`a;4_SF&X*Vs=trB2*7)C4~&c=9((e)-PnSG##TBVQCC zzf$LKIxYW|gU8ickfQmzEiqsjnp`x zRk`~xmKUWdY8!Fh-87SEpke5kP6P^U@Ax)PA>V8jdr>62QNImgm(66#hf&fXo=K=FzMRDRNs6 zZ10T7Q}e}8p~XS6JV;~FNZC_T1g=9{6%e?~QNw%}PK4!(EJl@s=O~6x_bMI|LPcL0tGsmf>9RW~Z<=WPL!S zw9x-fP;NGeLzxMI9Y7og7&`Yw1~F2b+3h4N8fY>qs@o}8+&?7Z(|T3}zM}}!2E0L@ z|G=aO{ww4EX+7PL+%T0-1Q2}on@qv~EGa&;6PipM)GCh@=HRmr^Bq)&4`ryn*k!G7 zp1-m_{t6iXyQB#$eBP@Iutph~^LajR%Um`U@AX2lY#bPa{agu;nAh^ba3b74q%J@c z{%*qo)gs+^;L@mt*b!?GU44gDUk>uv(qq=td%gPzi+L=1Z25>#J z$^+`)NnAu)Z8j9n5g0HR8(y`S4h3l$NA(q#Ldyq&5z$7FDlTi$#QW+uey=?YI?B^g zp$;s$2NzTnS*QMfS{%01v0d@7%Q z?^bp?l)*$XA@2ehFggGuC}seFA|Rdp=?Wm)yyfV11r&k=R<0r3R}F5<0#CyKdZtWB z(NchiFp`x+r9}A^r@2P8I+`^4DIty-N8Yw*Tet?fw^2(BO7b88&bKK>%oev&)>n{Qf^m|CIAz z4bwmI{QoU^1DvD+a^m-u|1b1TY{U)-=x!aD-g|W)Q2A9o$7R5q#YJf6VL1BV2es=->FA$wl*%^ie#g zUy*eGK}mH{@eiK@*PQ=_@W$o)RJQ^Xe$r=Y67XI$0VWRUjtA}Lr>n<_DKIhLFWLhe z4(S)(+yJCl+OzcXn%@rcZmbwUoUlMq1*!vlMr}7@nNNY z8wWDPchAz!>TpLf19u9meMRr^;M{;hF8>H^p5q35!2;`04`{;%1Cn+&wh*toubIOV z&mi$g%k2M{^iNi=MZkma*(D%Lo9Vs%lcyfjI#qSa znHya3{F_lhokrU-%9`2$hY<_<#*34$FIMdku?eI+jODPxK_S5eXsGeRL!!6^2tj{3 z;JYZZX~^ULER-wYErs<5FwWaQ5EO{vvqEn_E%y^p!5{N=^}Uw=lTLcUyv*i9U*(Hm zD2KI1y#8*2{7qBQJ$q@h0wiAR`7Vj)hS!c_tlDu2L0`xs%;^kZWoh7hvHZ~285N~X z>ZXC4oaPG%SkEaap<+7p;C(=SilssHKmnJ{aRgA4;FQ<7ERd>5d$0xZJ!bw@OWsB0 zIzJ)cpE)>80$K&E-;S%si6wxWalf;y0~Qz{C|MTt^E2l>$N)gJesp2Xi~4A3f*1FT zK-Z~3Lp=NBaO@-=xVk!Tq}nBXuLS#pa$Uu(L`9at@(LKD$a&KKcfJ3)d4_JK%sWCC zoULFViM4V!IO|!A_cRwT$;I6LT?fnG%mn?)`LFVPa{jA#Zo~7UTI-R>t4S#u#!a?o4>7~r^uT6}n80a*wn z;zuT5Sf^yBh7D?p7_veEK8IzLcGnxaK4apKbyyD^sr5C12Cwli3d*ghQyHKEsaL4J z{Q{NvFC_n)n>zvNUERL|Fskxj(dVCZPl_hsy6Dhye5Yd?Oq?MxJnPyLqPz~Y@Q3w1 zX*E<`9Z>OIlRxY+1=?^P{4tsPl2sd?XOdT@!>Y3mz?%dxAA<$y9b^X4UvXDi848~c zq3ht{LFhv87hG2{X`@3K2MSFW@x9V{2-&{JBfiA*BeW+M0E+y7#*m~yrMX$R5Tt7( zS0KnZE(N=o!}P>{ALj^03HqsGS#kUTHynSkYVf?)RxrU8D*<{%3-m!EVWQYcLrjR2 zRAodw1vtR~o7|wZjBts%BFLe6t*varkP6KA5~j6zS*RH_= z;7#2Ma8PI{A0mj(roY}C9=rzBngL#?6X>65>;Noq|K$3cq~(tK#Bf0T19$v{dHia5 zsth$0w?pGs>;6fx5dO~b@h0Y--v-wWpq3`mnHb^Z<$`SFfV;i zGLC0}z0)A!%llkPv1v%65OtoPvvvT%0vYibfPhry12aJ{=x59fp*prhN_e#;NA}3i z%7F*j$#vp!ZcYW;s>DzI z*w({);q&wB3SOAvGIkb*oz$R+Ooz1Ih})E}k&v9;O<5!JcG0y3lw(R6R_76x7Fk@B z{U3E4l@(~RL=Y~u9dEg-P(VfpJXoK%%=>M=qyW&Ymx;it{L?!8o74a5{O8~Qj`LrY zJMkW$oc|LKWn%k(%j6A>GZO@0D8o*^7q^0)9nOFLw~KFG1~{mR>qUOutFHHDw*U~) z)V+dw`4%F~0`29v0)h3Q(ty!i(VuaHM0YTs-}xQP7sL-SpRmX4QS$rr27)oqM7(Vv zk;&YbHu z(a(7&%AhF6!~p!u)8CDR-UN}Kq!Xk021{3sX^6x51>}9v64<~zyeL89a%RNvU2SK7 zxG}ZS`fSl=G_6x=~ZjW&tDJU zu1z1LPtO18-EQb^V8K-1%lY47cel2@4)4oYOiGU5im&(;X2~z*b%5wfFAGiV-~E$# ze?9vn5t_J^O?fsE^yV3_VnV7*=YXKHrC};oMDpK&BLM#~oDT|RMXSUjv@@S$S;^q0 zD=KGXM^vG%GHe&(tlIl*{>6=*kX%L0CTR3WYW+$7;G}q~+cJ;lxlMHD!Xpb3D8Jtr ziLOi&?VJ=iFN}u$3%2)-Z+vBlHUO=FD3DSA6aq*S4}k=Oj@Bx)L>2NG+*+{&gjGPR zDS8M-WF_ygqR`jB9a$9Kv23ra7Ns!@f%bcDk~)aZNZ<#d9Ru?LgR%jfuXYtd&tW`D zU?wq++n+x-a|L}|+JBy7_e!ze-9NDFvCCIH+n$yHJcWkVm>-#lWJl=a;%>??Dx(va zJ3=bj&%$?L`TToRXIK`{Qyek1|Jl_5en*~{Ltk_XEgqIVJR&F}{*}WTA3T2*R$dQ} z+rgxsdsD|>A?OdUyu5xJG6nc6!TqnE|D3OrIbW3z6Muof-?rxk)B7Ij#tf>#>IB+u z0-HtQu7SMu><>eKBnRY^8^T0zK;#OcRFD^;x(b~Pdd-;tS_3TbJ7P?EAiCu2hKS$< z9VVD(3-(YsGKR&9Q4!e76^5M!!3!cJf1A+U7eu$)-74=lN`D0@{Yn4ZbUS!_I81K} zi)hMHbm+z-y{xeq@`j*;s*JAQZ+$=yDTeuE(x-)K`s;N~v4ve1)UT`O1iq`!jOQ+L z-25eMmf(RXG^Vp{TJ^um09bQSNDhGVDNsU4rJH$Bhg-kE9pVP;{(l|d=gPs{mlGf` z_RnDp-0>~2=P@@6vBGxz0xvB-phe;zlxs&wCCYY7*gObWTY#W?@(xNK7zXK5sisy* z4IS@sBXV3`C;SmJU0idhjqHAk<*;>UyZ=R)3uz@Puq zgPWkA%Mu!W$gfP>hXo7#d}Sd56zKPkIgZc>2jIv641>fRfa5boS z$orj^7#@=JzC?3d8vG@?Zx@aLVIDsFu{7{ho)c)p;~)E}Z;JrxDlrs?FY+Bs@XU$l z`2n6K2Qti4RRl&NY$d2NOs||y%kPiUK$kkE_JxlT@0Mj4IOjFECkF^E%f|%a0NxbK z*!$mW8E*PHj%#NHT3lh(JA&utGE@p-LEFxCH>ZC^Aes_S$S2CEFkQ)1=0jE8x!wue z>b#D}rR~jjP-TZ$rdBES$k%lItv8=J&jhGXQ}^BZjy82@jtvV<Q(OC?<+ZXB6gOA`SqK7?r%cNsec9=fCId& z@)%e!fx5Sr1*Q*+*1xbj*(SIy=%0csqoIz!VfqAY<{|jBo)@tCC;jy_0Xfq%9}aF+ z$4wdLVhbryp#yuB&_010ul*f>kh($t00I=#EWg~*@J zz~#xM@$e+V8(0x!>kC_2e;D5#aPVs!PfsHO1lwX@4^149W@8*nyB|1pryd#vl@Ghi z!&(B{5z%1_N43zR;{h1knKWD7Z|ZkNZ23KfoWgH1{uL^rXo<_XAe|H=TwOT}@_&w7 z2Y5!M?CIi;-n9BEra;F7qXomr|Cg69%AuRU^2y<)8s2@MnEfOL_Z7KbMzYz%vS_gf zb=KqeNqD#B_h|?j6lk`;WbsXurN%2BmPFUq@6LC8ly2+aKg<7z;UJ@6O`yC3@mmQ& zcjrn4{IwT-bGraXH$|bj;St0tkEvbVOU3 zpD7eqeUBIFpi&2G^6!&0@f+>zPLR7Hwe}0${6v`hNxzn!g*ZynysEkP=5X!Goqzzl z)WZ2_~#>+Wu2}f70KRj>~`;{b%g{pNJPL z6uh>@iO>i6emN3PvA2=vCUgIZc~(Rg%0XbIWv)9xUK{`sCQ)G58Si@Mdi z{Zzo8NX2(c-CT8fUVcw}GJx(yKv+TR_E#@V9R?g+dGMxy1E~Ahhpr!dMIrZt1yNm6 zGz(p+7uR3f0i9_Z0t35n@ae-rmf%9r;787H=!RhF_xKX_i(|!?X8!;`(e@<;_p@aU z;544=*FVegRWC3WC5U94IhkaePUBkyOdu8#C_uqcOfedKxCx@;f+#utrU+FhG12mC zzjuWz!2r1sTsiKYU@{|BRni%^A9dd>S~g@c%Ri=xs7?e|3{(hn~J@ zLtc4L#w4XFhv>XF{=E2mS7!qH8W*ko_0*A@yuN!WzQez!q3rVW))Nr!SdPJS8=l_) zl1||7w)ekLDe>P*$7Mhvq)1~sQWvom;TWhe zB$!L}w$O<^ohz^-6$7xl20IF*pA^_{T~oMSE9~3=;9wS#7^l^Ww@tNX%R6kjIqTt)C zs47hoheg^3N+>7LVey80oZ|oi-OUmU7*aeS{$&}M6?19)V4YsKf7CkUVIyRWcI>(` zME%!iXTY?zKnGrm_ZI-`U-^7`4_&>ek+u6L8cCF2>JnBw1P@&d`8psAzjxb^!G#-M zcjJd90OW^H{(Dn)8L&)rc2dNxLs#kW7=y|*n?7Z2eBYIs6#9DYYP?p9#5@TBQHifg zE(kcH;vo>83k~|KaI|jQ*tmeY){@ znBsxQxRv3}AvXaNH-M?*f2M6S@l&^S8=Ftd`!}QzOp+p}iqR^uW9%@AD7^D~N>g>t zp)ZhN*Wo4KW?F^GnQ}qce(~@k*gy5CC z9Zy@M6X4Yne;NK8Z={6w4)f`FlV)o@Cl}lQCw-Q-g}_y)Bebydol5)9tAL#dBAcq& zDPPr%2e3M{lDR#b>PP;&n}I?92uzp`HEeJ>Cz!?E5(q0v^0+`|Dx(0yIp@ zoPR^=0FsHh>Bedc5pW(zjmy$JEn!p;dsznuA>54mmw?Y#5sEfC=Svm^r{-g-&Ihh* ziHL30xziG@HGu7VqDz%1ErV;Ch(vD!fRiX6#VNK_MmAP`5EV!W=`HxEzOZ zO3fxul++ejnuS+PJfYbC)7*)5m2aVd{SWij@z%Ir)BXn`f33k2z%rm8v2W`@l*C(s znLxkx0QLM?<>}Hb!X{e?ba4h0b3R!c2zP=6{1(&ja&u-^G zKX0h+6^MwYu5l`xzWk*3v@Hb8sxYcJ%5^p(>S>TI2qjK`4Zs9E7^zGym&fBo3gd15HlbJ9o)A$ zGy&bd+8K>SN8)=z@FgsBG%+3b`V{%o`b}Vmm_b;eNtTN~p9BFqjfo<1JY|Y_tHVI9 zI{*N1ncxlOzL5!~VD9el&0Y9Ply} z0T}0j_doU3FDDZtWIQR-57=gg8aGM@8esWE!|VR1=p$((o&k!l@$=+L;AsdakickL zu>v9}k6p^JVH!#A2h-PA7W7xz06!c`Y4G_zWj=Em z*reD$H&8GM;Q$aw#G8;(Tz$nd2!6+d6KO#?i$vcF3QYN}*{H?(QP8Uw*NKVNy`%!f zOwy8)ioD5BbJ#vlT?d7FCk>^8>ye9~U1HG|B5puo=u-4~(f_22{?Y`<2jqcG>h=sO6|LC^mz z|I`y-3;>%dpYo@}*B%)FWFSH_EYam#GECO3}2hyok%MP??k7Zzl@*hBn2K4%MSRJe3&UjmIR;41=NUTTDTm5+%i=Ltbj zU2M!@6C*f)burI}ZQgvZ8Z!_amj=J=f9N1Azr7C1{x9?Ru>bwEY6A@k{6lbYS*JAn zKTaJCB<#NcIAP+DA<34cPfd;qBfS>WB%L}tfb)2Te)~v31JA)q` z6CyTy;)kr~W!OqU#UMzs5DXzJgiI-`JN$+bQJ&&X`sh&En^MCXBL6Ac31y|~VhQ9` zS#}1Igh@a9zpzF)&RamI{cp|w7XVM%{|y1i?;daJ@=n>^?M*ptZ-Nr5Q1uo{p@xDc2Pe6N^(qwvl?ZYiOA z0E2lTloy{jGM~eKvg_kMKNvWn@l9?GSe^nx7>#e9Uue$NKg=wTp-uEKF1zhTVsSxv zjNbnh*zhO)>ytk|>yYw}?^HZ0)1ygYrM8JT?{@7R#3T8AI(%(tD{s9?vG#9D49vv9 zz;tBtwl45SfB->ViKf`50EsRLNRVwKtzeMbLDE#>yTsgQ-(<~t72kM7;0;mnIES^8 z@JfsUufO?30UBMAa@b}qf(;D7W)uQ|5|;!eTV8yP4S)dXkDaxxK|=d^Ucr`=g?SR3 zA}o*jC>%-^3!qpAP`7V+jIApRbC;*SCBoA}_sjDMAh71W4w(%qCb`bW?!TwCK{tam zaV66J578t92441moN}E2gX;eN3;UnjC;}YrHNVOPFkye@`NH4`0j3olbN`x@#&2Sj zJJT7?XQs<3V{x9J^^w88FxXI$oh+Q)o?Kf6cmWSiKk`<|?<*dq`^@!rd3XzU+uw$5 z{K9|yhz_5nKZ6P)v9^59B_JL^0iLy_Q3g~vP5M6M2mz<_Hz^2kF)ksUI#JMVd`@{K z7$JP#l$(Qfv}0I!0rWqCnvAxKg})C8o{J9?)38^IrVzBFeC{~h8K{K8x#W5I?I-;t zk$z>#Oa~K}8<%{Tr#mQ($mR{%_Mu-LHfO`OG;vT*SY9_?|CXdQDAvrUJ&?nz_=^6& z`+W8)Gi}p#zm|#R7Tguh;0ZX`?LeWHo?&fE>&V*0Z1T%d?qXQrVy7+XO9~?-rQso5 z3Lyr<#ZGX+03fp?s@>z{mZG#HWA5s3M}Xk#FDotT_~fQCe-?E9<8&zNfEVjW<<1?v zI3aIRBIB?zV4$RliD)XKbsHxo)Q_m!1qt-p#?8B-R;y_1qiy1vOy27_p2tPNXjkT@ z88l%Fl?4Fubi=^7|GhrL=jXP8NM$9^!z-8&YT}S-PCtA8Eol`o8%4iVgL695Gs&H6 z0&Czp%L8tcqDZhIZx~fuKRsiBSJLrfW)FA118u z<=J;lf241SC`TqD>vu(by&F>#*=;_L5|1i^zK`playiF`ZAf)mf|$F+j@ ze#=i znF|7-nB^BO+O(NEkU{w2$nI}ftql5ZaCZYdRpW;sl92^k9=7-jP`KWMI;lJpW#Bl* z*ZcfC*6s6DLpgQp-UN3=66~`5t=axvecv(tkw!$!P#l_7wA4tnI?Xcz^V{M@`ho2rlvs3JRo*nND=Vv(yyCvQH-C2u^EsSYea^U=L7=9A`|L@mCtZw5WM8i##g5SPx*{m;40m;`24ndl@V1gGJ{- zP)KWI0Y)%)YQFMT3V7~mI|Mx6L%G(;1_MIUy@%~DK>)>zD4@Wb@;J{8`};TYHh%&F zKrmg62FwP611Qi&1N86bQD=|$rZH_K0l#ZkVgsOjNm#j`3{}PXeR4}uK6Q+mt1$_( zJPhsww;59t;D^iS!+N4`Oj~4LB}q*J{KWMtFu?@{u*WjGJpakv`~x=pmT5W&rsXy9 zjwD``XC2}lO*!1&XxbJ-Jql}^`k?Anc|R%R-ZlZx+m9xqgl)=B1aUb9TJLQKQaJrCK&*8_>IH269a(xwmP?A z0Ln&Y7lIltep?1WvzI`FV_ISe@I(V}fHymAUP)Z9jC?}JGbqdE)m_EQs71`bGta@# zaj3XB)@YwGf#0d!d&+RhbVRb{FO()KFTosV!l+`@Qt^7*8;e{=eOJ4HI~E=T$6>FIybsF%2mISaKgQyq+`7Si`j9xTnuz zkxxt_^QX#H;5CN8(mi-YnE4t_ihKmB;Z>nH&4k$+x*f8)y767lXcyM|L=AP z{x{M@dVJ?NhvQk&0EQMA9tujTFnRppiO1W4T_&&;Z>K`o)?0aqxX^B}&jb;x#*M=Ps z6*{f$^d1;yg9+^d=gxeE(B^wuen-3XC734-{^6fnZwI(aa8o7Z|Gx(M@Yp&}=07XI zz-#94^`W=_X5`QKG0>LxAl_0yz}+O6<3=iAl2e1J6Q!&MeS1mF+zYFW?i_ak9{bn2 z-D}D;7+}lFs{s&#%P7ruIBPgiVV=q0b}A95%lkX0 zKX!)_{B-sbf~V3VW_=*7yBod3);pewYWfXmZUSN@%BW{Ei1;I5fbX`GiS?kn!vOd( zaDd~cEDFjPCgv^=hXN?4)LAce-@DIdJ%ccg+h0ka2<|TuScuP`f&;hwnV4_%4)AYUw%ua_0FFVPT4yd;PVL+b0iFO#(XQB>o%9`GL8K>`b2>u&Xoz8YDUV{dok=>tGn{A zFaUO80I;1XP{JZ8!343YgpFhd0Iy=Jk?04FE}!c;`>BLQ-{}nR!22!=lQb(;ZLSwUJswr7IEM~_WgTc znO65>P=4+Nx5vd^R@(W_dH}(L)MiG}#Tiu0?To&6Xt{6~=<=!erZ%@p@n>@J4Cw~X zb@@V2te5g)X!i?XpmVaI4^pF{VGH4?B&oZJ)i%0z_>fLkx^-g-mbZl=6r#AoDY6J|vR%pAuyY1k^_qe>7nnZ`&<1)tj+YAx`*PaJVK=6q0gyU;J+d8c<}Amn$WC|#MXbqMk7C;d;8 zKR$cGvJ^>t!GFA2j(l);JSOvsyd1l-6|(&+OOo66yB>7^jr8gEU+mdpb-iVK4lz!1 z;3rs=6CJE^$^L&T8*M3;tm>76)xe=@=?Dpj{u)jk!c*{TYJ`888iIbOjG|R+D zxox`VcBr9GL(11thah%5+LJU?I_Z@dx7t?E#Iqo=ILA@jy9Ug;aem6)?d;r9xYBd8 zz*zfwXUNQcHA3?ev@RwO_%wH%PSfQaSf#gLX0HTxS8lMWQ zJ+u<80(j?&VAP%vZ+7|bIs4zcGJaR~|6DuB1l7fPhpQ>Xvrf>$!$S?20QmXb-GFX$ zosBwx*aB>W4?rV20l5g%PUB+vcP65fn+2yrs~Xw2b6dE%CpC(rGqz0-p~=M{&Fj?1 zTmMz3J1Oc`wi4oJ>Z0rJ^6+zR?~mm4k4iUuX{8QV!tdT4n1X**7}u24vY)_!4yfR~ ze{~s7K*nth|BdNo`*(OE&RD$%I?|e|6`zBKH9TeQi<ip|&K)agf%| z%(`?{v{mQY5xOEk;6jqqivIdoeGx>r(cQ13etl zArP@elOh!s*x8!e05BEM;7iG{_*d6eK?J(SPn~&x`1Vh+kIt3>VNJ5~&&No_DKtLigFGgp6}pvq)EC`%1tyr#W2%i^+Y_xD zkaC*rSWUoSa zE9FwxJy*NZN*g7Fej(oo$>2Aog7ykj&Sj*CNU{6k6b3^9e)IO(y~&3|rT~@%-UD5fF+ zR)kB65cmQ&`8JXTAYgRMIn0j2(f92I`5m!Hax@Rm=l&M@R|GUO@?_X|TNEl0#a00# zY8R5h<#2v(JBE7z5Rljy#x9L;a=H&+lrlv9JZGTek9@es1m__C(uJ}v9B%-XIFdx! zNJ0Fs-H>;X0Kcia`a1qu&)G6CI4}SbX5`tylp5OA^hNg2(ObnYE&YyAOCpJ-K;Cmn1-PJLHB8p~{V`)RV z|Mury{6kVL8vZ#v5vlxL2Zm`5lY^7W-9~+C8>Y|8!MKIsI1OthajhWc{l;DlfPmG< z^_`))zq0`#2CJllwAhC|$DeP@ky=*@vH~~&Otz0s{)QJjG64gqXk@`QnMWBYAhK`A zAHWC|nTa$^i|iN$@0Fy82bCyRBKhGO7h_DuZ2^fqv!wzMLN$VoW&*K-h~3~@t6Vp< z32Vr>`)LP$Xg9-8s3_4@PzH|s5Mu=yW?AuHz8sLoC32ix| zRpnoT2)7k5em`v+P%C;WodN-F4uA^#EdZwyRIk4nje~YD+u&+owG7tlTN`a?BbTErbJaF)^1tNy@A<9I z#E!2DS~>qNhP`8HW}^;WHX#Zxc$~u0T(Iy>L?_JZ1|<9k2F#BZ|LVn{agllBF%A$U> zItRdjAmzHGr(ic*4q%*dj8}%FJYO{%?c>D!jC3FY69I_m*tw0ac#=6hB|eOK2@xbB z-qsu0DMx@VJK{%{&jEpzAsw7}1`1Zb6&)a>2CRxdx5w=;Sdk52!U%QK2@t0P0k|yu zyIYYf{3+ViZ58MofT<3(f~OP!*3Bqh8o8rLSamHRjRBR6iDfV#9b8N4rAZB|_-VV_ zl393{Y^1f-CE>B2<~^r!kNDSllfkEWv}^+Y=QJz2oF(Tq%)ioI*nq%RtOSfFq`Grf zQ6V#M1rrdKlcMUN=c)6=({}jwyvMv=nv-;@S=PY{kV^n0>nPD4Yrr}cYNtQ~CHHC` zlE^(rLN?C?EOdIOGZu29JjUtW^!Si2E@e#4w(?v;r0d#*zx}aa(d3`{^`8gz+n&i` zot$x_ZzhJ37PWR7l|BRuDUiU2del1~Sib8A=8HijCa^%Iy@~37&v~l&XR3nxd<^W8 zCr`jToR(Kp)+!5}`fPkC7daAv2Tp5&8Q@Nv2I5KL$MDvGjgI%;U&;Kf#P(?L5w-1NXbQ_HI zRbvaH4T(+w(r&LzqtlO}=*d~9Egj}nX(J)g;b-tDIdjBgMOl*ekLZ;wzxx`{6Hb3t zR`Vf~h{m9-!M|VfamrbA3ZSPQ0Ajg0!1I|;viu+WGJsc({-~?HXhhSPF4=H+e>~UB zY|Bw22F1{I1ViQi7-hIK<1-U8b1SDwIRGlcDX~lRWp=<7r-S;}yx_$8XI=o!FC#TP z%@YYc1_wWFO%Qb24nOs)fZb$sIBg-o`uVnlG_N7pkbtIBZzUsw;QBZIjsJF_LIw+R zKVR*+-|_q~<~3u=pT7}}O>^hqaB?phnP#0@R?zKCEIZ0T@Kyp_!^)h#5=mKW`VlB^ zVlpitZ$kqH?O5Nuq*Zj?bR6`CU0 z4g^PCa!&sDEN^zs7clZy4>)l0zsP^~pYxdj9Inj(!MdXJgs0oNaU%`0pOxP@ePP5& zor|)aShX_OIot{~xHdoIr&}W0!JMvAx+Ka?FT1vBWY&G+fKlF7KaNud^@as z0BZ&d3=cdM=S1-8|0)Na`y>|PamtG}Q8|DY=FY@}7|n(t_lD^aL^$bQcaN=b^!XFlr}1UBp8Bu*Z=ID42+OLyVzZoqzS*roYvihaFTYi;y^YKN-(#n~<>xv0}1jq100e0bmCaxeM+d+Ouj zmr-D0l()i6;MJ66*rp_GH1|mGHnMP{w6%&vA-k)kah%w^f4GOWaBF}I1AteB)+*y) zYXFEjNf`hIoNl%x$hmPjdFv*E-0bBSt|mXv|AIV;EP^CVzG;D>_#bEE#SB>j9**=${IH5caDPn;4T%!TTga~4H1R99Y3SHso75tXKDCAk~j2_yG zuzzL5W7k7z`U4WUTZzUnkogk{aH0vSo$0%|N|%(#qp$JH&Rd+OF(2?53fLzAGkBXq zay^;pk;c*iX!Zqnt8=#%y9o?X4uBF;r3V$@0Q3oit!5bsIzF%nV!s&)yt6! zA}S(8Ic~ZQX0;C{^h9Zs$jc#lH-x{di-E+cowxQ$Cp?;Oc6opMW_g^h^%$gy=G#ks z)89q&eAuTK&-B0NThGmT?LYz&f9Vi+!yLpC*06;?4!aVyXnuEK1B;|K3FrDh6_fv- zmq(cmYO>DUQtj(HnQY#reVl(dQ*lZs2k98&$B>XGe>WrUMInmNPjLtta%GSKkc_v# zjR8oQB)itf+r;{%@UatG{mx49Y)}3#4@D;PP>CF$p<5`BKVXnid*> z4{>k$2^)u%I~d1fIAgiAg+vh*2PYH{ki*VIOshv`a%R{OF9=kTo=~e-UuAbUSe)jB zFbdD#>M%aMo-lW5fd?m=;6xFv^g*)D3+4ghUk@KV;t${%u0E&jQW-cXd&E<8h-HS9 zz+dzReJ4mZ@Xsf}01F!b{;mQ@NeKiH`S4K7lYWue>CoFqk`;zP5zI-@#x-_peyaQW z6Q|4ftG($w3jiC`nG!tnc2O+*JKhFF0LIIsXaDNtPumV|-*LO2rW9Lv4u=W?Ela_j z6-t@6yb~CjP+gp3;dTOUYZ+{^kKAYy@>KOs>Qn~;6n@daYVvfUBbqLZpdIT31^CJO zRg{s{ew034-rsmR!rq^Exe!FVl&d_tuFNhi+kv-wZ74^5o64FzwwL_>Jx|ZXCeof4 zjHqxa~+6i^iY}#gN*d!&Q9_0~cgL#Ng<&G>1$ZYQ0(aCIt+jWGI zgdyFj&4*TA4mU)epe;X%=Nz^kM9~k)US=Ir?0*7$Xw^3hj2}6{tp^;z1E7POzZ>9_ zfEekiP8hqeVP&MNaO3VB3wsyB%=Oau7|Y7hRta8Pv_{?UdF`4H9?ay?khv4DCi{j! zur#xZx)3;zW*i-U7n_TLN8%^7y(Ja@HK+1+gb6gz&i+Y**8|@k-+9&<0sxLFABS}s zjB`R&5xq7i-6kybt;amItOBp1Zq%VE1dZEcS`L$;4cUdUUK%dKaC|PIZ z-Gt7Ns{{BuYChQqdZurkKGOv??{1#QOL_5-ekxP&+qcS4-)V8_qyEQG?(MmGsQ<%& z!%J5_!DsM2JJz4zKR4FmGMFX3X#;-ia4u`UeLC!~>HU9;rT*l{w=s~#Kbcj>078QX zLp9+%fPKnyV@#Rl2`AlWF1)X`ANTNLK0g3gWKVjWPqgIh6+vMDtX>8f0Fg8PVgrDh z8aRQ{-z?quUKs#eKnNh%&K(uo6pz)=LT;V^$uCXLd&7w@k;*DkvGZ}Z6De#L90tcR zOZFb@U*@6Qjyn3q$Xj{k634f!Iwv~}_Mj(}f-9p2&X2XJlX-tUk65TI_z8QQ>rC!K<6)8UX%7p?+V@z3&Kw<1yG zk%KOz1M{TuoIT3wEb(f*3dd#MLV@ze2~pv}T&|h^#sXe=wAuQg&ZJRbSfVfLPTE_a zc-;^90*)VoH+A9UM1dqb2>}8GwrK46YQsDg5Vh_S30HXs57^8}s+OM4 zC13zefeEVoV|)DZzrAH(>7X>01eV$Zj~U5F3L9g7q(2zxQ40aCc##lg zXZ{!Sm-0c(?tX`=XSY!R5K32^#i)9qB8GjZt0{ePTQ-FEwRYf;1Q8Lh(cGmt@V?`h zU3n%x@(*^bgiLU_CmO|QY$C(x1K(0bYM`(^skm$)pL&Kwb+nK8*OgO;EhDyd3(q^m%h+y6t8Amf?JN_( zgK67AQ-7I1Q4bC8*55p5zn&+6Q3)7LaIPKX-ZJ8hQYYrJWZlxitjQGMWiH~G4RERh z24RF&dr_~kPA>T}@8cFF9uM0KS6umlxdka+q}xr_NIKRJU`Ol_Dp?y0c8FvP+$UnzERXm z5uf5y#aI<}g7#w^BExo2-2fM5jiC& z?iclWoPy&8;=x*bs`V4SkhTl3kwsyT*=XlzfocF?R6&3NkQXIR=>4b;ijM)-a@|D#X)!TjGXc$W4+x?;Nk%V9)7xpFSyF!{YQ zxDCK49@oROV83pM;q0?dt7cz3c%0rS?Z{5NFf7^NbL0`$(7d&U29J4?fh%s?INKe7 ztwPcOI_@!wBbP9cc@e%k?PlIa1RyBE4q7?%Z+G+1c{zQ!bt)+TCPm}CCPwd^VT`sa z08HZm6wrpEn9Qm{U4Td!OyxLqZROt-Dbc1=3V;C>90x@=Xw#ZwR1}BmKi~3@;5vH0 zcq_zJx@C(%a;P(yz4>O}%;9NnT+aQ${yJy-)RXEeQ7I>#k^`pm^o}dDU^^y2ip10z_Mr1z79|EVL$hL|e5bG|$4c=EFB zG2d$&KWWzuhQbD$R{RIP0+7O1PrKnz%rG*X*G-?}7qr7`3%fG~u%6M;AD&J=rb7)?w2dnFN8$^lmzp1$??|@+ zptz+rg{T=g_y#(SXd6`LE*H`T@x61q-SQ+z^R|1f7boT}(#J^;7ahZDKD2Chj{g+3 zGnI)GchJI#>}#_Mpc$}l1E!fk!`91rkqQ6Fe4NKG>0Zjiny6;-Q?bZJif7 zwa=SA-`X*G)E(V^5*)Y>0;a0o-) zWoH!<+m_3BzaiMs=qX4K(^#79Mew+XKcL3R- zyIqt(x4^Nt%P7irW>trABIoclK7oGcT#zOId5eNm zIUM$kzY%ay*T?a>13OZH!OY0zNyi%U7Uv3XF-V{Ru6!#4`mb~V6j)I}kjWqt&H|L5 z%u4s3cBtxrerbij=<(YBQy}tre}HfvC-2peuG1QHq`cV1(wzqS9$A zg%ugH(V4HqqJfJJU?^v%h<{i9eW)N>0zAJS;*((;`Co-}qat44He#(h%cGC^5eVqo zf%$~~EugJ(VzIs;`anIUJn}-AJ_=Ao*;Es)`r9uutiVdU=$>1-{4|k5rSFN@H^;d9 z8{cSf~OH^fB5me%U9YBY* z<@j6ImL^JJA1a7Ug&?Sbz6zl~I_ER-5zn=JJ^)1Z@g&O;1`fRKBy;Y${9Rp8y41bT8mSPQQ6{sYk&R<& z5AR-{_-6jevznaxsST>UR~o(cOa1MaGK0p=hrE7i&kGH@B!b6XeS>!`4>#Stv0Ec% z<(nc4fA`_<8(U7!c!wK#Q|<&VOy$L;9sfQ2XsV(~ln*{5BVuRBlSFx+Y{g?3@S$pH z+9f+6t&%JNL9E=B6<1gx%zcdvUIgA(eFSwocfhUN@%YF9fFDwiMq>a7-5yYmLEfMY zKdS(Y1n~u2{dE3^^2_{B^S+7*tc&8FzGFq_1bSrGNZ`&se+L8@N98coI6!yXW!uM1M180Wqu`G9jK^)`? z_xC%1BRgV;@+tY}Lmkrz^aLVq5QjiVJOg6=>k!6{d$}>39i6G8Us(K4zyXePq8E&H;=2?@mm>u5tN=sFBwA##y8~b9-RoHdQ#8Vl^cNqt zhx&vjM$nx}&pD*otO;cmUN?gYp(5HVKSxkugbagc%=ZcaLminWO49WoNAyJQuK^7@ z=lTW;mbN#0^^9bj`-y)m%U^+(-6{cpSKnm5K*peVoKDfT^WHFzU+TL(pL$s8dsIb| z0I#lpQ{6X@tMeQcV8QK+hL$$u;W{R7`L*qjkBXKXx2#M&Ow9=KTMfaZ_{(xt*BcX2 z))g04n@Ij?zd8`W9@72y;M0%La#OqrrO4eVeZ^n(9^`C5bNRL8dYa78?uxEL4@jLIaz=JZO ziG^;3C`Bn#GVo|I_>3yB-i|bKv8NF%2QJ7IT|3i|Ak)I7fsi_cVF~j zt8)ZHjOO4pJTA+&ChaZa0G|U0B;=O#i4on{v4IIJqa)2ENH$Mmzaaf5jDHjS%skq$ zd(imfLPDVr+BJMt;b2jx2rzP#*y&E~8l0I4P*nN5NQhRBLzi`n5K!&2jz+{+b@hel zsd(m7hq-fxP5h1R==ysrN7cvqRX@7Eh4^=B+s(1R^=kqqCJ&guPafv2>>GISApf7_ zdub+jlMQQy`}hZJ-1!71{+@8Asf>y23d@;TS<>P`ME{-7UBMl?WdWDs-xz|9D=BM* zCK*Dog1QZkKiaWdNQXkLtpWkReH-jhJvb$3$m2?E^5VeY$n*bk>Qm@9O>k@^7Q<&W z00c;|4FI8F+1}ys##A79jz6OStod$_`GwtKcA5Xl7j)iA&>cLT$mL%^0Ee{#=#zX; zTqU$^il1=Y*y(#4Z#jnK*b_YvpK<~k(shH)YHW@IID6$2U{O1mhbo~iQQz}GCj$(@ z1f&8PeeC#`@X$&I_xuiQ4 z9-V(Ta#F$B#15k_k}KUEBjY&z84iFqn;iU*tsg&HzAN-b5H!Bg9OFZ2-W( z-&FuAuUS7YLD|tM68QZz|Fb_qa|b)R2+^F=tf4T^P3A^r$MKX_@R-e2%P_aS*Z7!${573R-nah4B`|x2&K13c)BUWnJIb2SRgpbVFYyK zHgO`uq-B3QGD#raY8ys*^p9WuUd_(qgx9Por^kwz=6%}f92GnJzDtAwI{;?MVZ*<% zp2IVLGY6mr36votK#0w=y~CXP#Ss?RKKfhI695+Gg#;v!ldI0yNsczH#-Fi9?Sf5& zXanS#qR9YcAo&-Rpsh0$Jy9a~PTMTRTu$?U2NI|Q4cEIL*ccplgGd3K#HnY6HxPhK z^(tgq$b{q<18@}cHXv34L9u$$lL<_->dZ@B4}D7^^;FN+y9B85So7kC(m$97L5!{} z&a1{Dg%u8~4=;eFdODyo4=Vi*!CNnnnp4>EUFGxq`{JzMJVmZowWozG8;|W%Piu0_ zRXH)VwUcwFydAA3Pqu5zCw(QIQC5zc{0wySf{G8UxZg!i+X1Pq|3IYiOZTsUgcuSZ z*!6V?x->qN^}>GtJ=S`6QT~4=J101snV9S@{6Wrhd4RF;YA{{_si%RLH4ree^Xl97 z7(J&ouZGLH7y5M5*7ay7(U(Kg)1;DI831^$fM)}v7yyF;nEriL0Nx0^QQ8=k1o?!7 zxqNT_FUk+PCJ@9Z-N(8&I3kaMKMvKe88k3*BUdw~1g zcLRI_5A^^rC&f$e!N7KGCxUF~KqG+}bym#euqxMvuM!F_c}zF}Yp~J;ifzq~mfove zM=v{XPVcp&mBtEAi!T5HrFYBicZ@)?qhC{WQ*mYi2%4^XgVpNJ0QSGi0Z{c$(Fa(k z37!dHBy@H#yeKLlg?jwZK1aVLfS?HhWyhXr>nRf8@PS%AUvtjB8j~VM$~F}QCy2k3 z^Iiu3v@;#rYqt4O^NMYL-%$->it2bRhWUTJ|Dj5g`UI4k)8C`jN`E`l#gkI%9~uMA zHou~iU^3*@{D67C@NHPDaQ7kt^rv%@*+=U9K$gQU0;mJ_&OleWW}U(EsF-2RBXae@ zbQ`*erLL{*9A(5mT)#4antrr>=*pj*+-~q*p3VU5Jip1ilnf;5Q3j#{?mhuTZk`|i zJ$b< zat<*wvJnp0zy`qfP_T=Q0bq@!;ht|Oq*DNs0Z<0D0Rk}11Q46hwNPh@5}4-CY5u2r zVmYp818!sUjDL>2iv2xJwdgc&-@&n2rw_PYGhNqt&fH)SDIHLkd~*P`n)!b%F?3kJ5c6bHkDvv>%Q`(CIKn|Fr+$A~A zjOTcE2s9=~4h7Jicyj;r4FW7@ZR;#@1{a_4if;)Q1RjXRFR=if%%>(qxO1Tro&OFF zK({J8)r0R4h}we}Bm+p$GxmFXfWdqKeNX0p6A95dyUO85P>8S6m97KP?3@E2&Tjw! z(qOKPeWj|GcJbL5>iSJ=2i^>H_ze5!GHT%VVBKZQK%l(mp-lhoKSGSZP&x^8RMu(d zXnQUS4T1z(QKVl8x!d0az<_^a^nrWjb!+5@qZ5L{>O#;*MIm6DROAcFXBUB_KtahH zg9i}wql&xY7{EbvL=^F&{3L?@Y!CoSh>(p^?e& zt_nLFXxad9o|H*2SEK+6*!D@mxGbyM5*U3k08C7zlLEM)aFYV)*rD?*x;}#KQrPOd z^FMTdjo+F7qkKch`po~!k+0{=?-l!fecfprhNL@e30Mt8AfSfNLO$qCD1{6M5q1ZI zAqZxJzT4LlW+Wx82rj}P&64z|$d?AKNueM#3Gw#;uq=Tj*{Ml{zcGY0MksU!0lmXJ zjRPRHU4Dm-oVtxbHCKy&y%*lG4!l|pfKZ&&9rW(bM+QnV%Oa{y`KuiO-jbjmHuB|| z3rDL&EWp+mG?Jh{2>2b$@$fjF-LPo7uacxOOsn{K=0kF*GcEQl6%EhWaDd+tMThoa z)Kr~&Q#1>JndwTyGN)#pm=4Pn^FK!TsWT58bUlsi*TRupN^ays&9p@;Lox zKPg)On@`~i`u;K!J}Vvv0C;Br0Du5VL_t(>pEE}eIMua{nLjcDe`W`0Irx}of5H2e zLrqk)`bswfWSMlzzS_?yzi^zeZz&x7YgK85Kkm8s3s_0IE{N&lVgLw0lbvh^S*JWa z)L2f3A#qtDgs}sFP1M7jC+2}XMgZFE+XGzA|BSOloRzYGl|KU~J0Cc9z9C=lTP)Z~ zLxVZ#cG^R0losCeD%}pv711(##Ts}9Z$3D40vh@OU;;bga7zBw?3ixE5Dq5;dV5gF z!As0$T8Fu4S>nO!0N`pr>YdCppsVOCkbQ7tF zwXE8cZk|KqjoMpoNKy6wnGV3qYKsC8y1I;bEQMo7p=%58!jyp6A3@D{rJZ$%><&(!qS%Z81rD4ita_F%Q4&%<^!R-5e#gxO^_T=rQ3-23j#<0#s-tUwik6+k`-|lM~UnqkR&5H zCr<%tLB}fj>>_)VPB5WEl;gu?Dta<_occy%bc;YyZIEEI&~5xKwNn{1$}@TKQq=s% z-^zfBa&BJOCqRH-$}>vOX>MNQQ%B5_Ad^I#M|J@jxc!6a4JsO+DQcf`xunTmCm5f1u81P)aF5oNm316D9tBjGsu? z_|=sIgOKdq8!`Y+&rVtHe4>25qa5!hpH4pBPP-i;+Xg++5BL9CnsY!>0_Q8bIw~0e zqyX$e0ki|u0K8)UmpV6wGL-_j>2DI)qNk?$zqI3zf+R4L_|cMfId=Yehd$t5&2k(o z@YGyl2VnZ(_sm1+VADKP%7?k$coKsv5w|YB%-uAm zrCr?$q*EJ0yko~dwWosFG92H;cX!=hCC`{ojahLpASy&g#rV-#W$tMJL*<;Qf4g_3 zt``TD({)aMS6=tLI{97t?(YsrcyYAV{M~^AlLz?H)|Ka#W-ooYe2b`jp0ax7w+@7w z>M$iw&_0$`ZV#JO{-yh-p<)u;9PP;`U|&OFUQ-<%*f3#5_E^ThB*j}sEAq@b5 z&~-f88URptH>91=+3@>23Sg=yDV-)C+YU`tbq=m6d;RL$87@F>a(vv}*I{Dh_>jYf zWt~+c+yXCb3NM+j@c|s#SMPVHJl|d>4 z)-jM^%rw4=aX&Qx{8C0gAy3x@^34G1gmexMKOz5bj|3TLOIC25c63lX=k6<7srRY8 z9EHW>hh-fjo=Ey#2cQySHlURAf!|gcB6>|m5tOp3{Bu4R?-8V2a~g<$SvgnNSjts? zCXbmp0ZS2a-f=`jGasgFf5q(=4*kGBsP+}Um+g-BZwBAap@NO`Yb@eI#^dPemR}I; z3>;6IXty)%=Wi7O1&aW?DGZ#Z)o!agDG4$2=a3g8vlJM>Wd>|zDA=lyDhPcSlRRzn=i3Ta=1QGxDVixox^{CS;08pGX`ttGFNmmiL0gAZz-h z6DN8N?_b#D-wg(=M=|s3--^<3h!95sa0n{=i~AN0uUEs6NxtV9Tf`y6?4a$hXh0iW z0fvUq`tPePe*Shc0GvSbZU(0J`Ba5H#iM;5#*U@uT#z zQUI!+Xp~OrAI{uEXGZz! z41jJm6#q@U_b}6_5bm~zs1F&CYRcXY;cdvC!nXGfV&>llM$yvjp|e=#vTcLBO;eM^oe zJJ1Lim?#UkH}ch*z$=NDp(rD{N+G{o4mz?{+hHV!`#17CISibZWjeYt2k<}vGYBT6 zacCT$)5*NTfcca@=^`GcsH8SBK^QXWJI^`lG5b^c^PnYgTeQ(V$VArKgPw56WXBK9XDa@!7qn~-a z8CLsHy#6-|^oDc=kb93yI#h7P}f z834}vD#1`n#?zh{gXW5}hy6^tt1LVJZUdl?qTPPgri~bq35|PJ08N={UQ&AB8wH@) zMU^Gm%?mNzeB3$xzI{bdpOtp6z=HBW z#LINzJcQ+Pdc2wp>n%i9tDDK_HR=zrcNuV$@)L4C8vx2!V#fPx4S@Hx{F5V%N3kKr zUF)K^2b8LysDnu$Qf8(U3m*$o@Efmt|+l>WeKlQVBkIey81>-)d+ z>4d=sYSF}7E!;hkIR1T1imjLf*C4wIBN@5*qQHFOJFM8Jy3mmIy^_2BuICD@rkpVU zL!V=8(uFR5~($uofsoNuyA zkdCPka9fjOf54rrcO#|EY@2z%UMu-^2qZXm%h5fncYJ5Xa)asDwp9W^sIxk_Xvf!d zAwkmF0;T3NmgzvUL_~BZVt>c03hMxin-+*UvQ}`?#is_Ra_8r7VgN{lOyyHOXvQh= zO8q;FKZl-!^8{m?M6PTNX&iCXYwY-w@q*yME;EI?*U^zHh^>*sL#+;JV_gN#UWqIq zBd%L{v1bw)v4jO$$3`i_l8CK?%UlQT(Q_`H9WZQZSkI5cT!%)>5Js@xQurNBK;$4Nolo;_K>6#BC>c*$ zbovp9s3@P{eE}5k%6wUcC+9kq$%iRYo7q7L?vFa-LpcY{Rei#)lkZho*v4)ZA3>fC z!l)}F#c;JCisibI-ZzKs7GX3#9q2the#!Tezbi+T;fj%e;+X)3c*xVyA};xTC}T*+ z^UTiHoIzvO^MRDDMjni0h5^Y0ghAvK>JHQ=X`y2Hmh>r*NV!M~*e~T-E|2xmZJ6}* zq*o&*Hu>*aPiI&oB|FFksZZ$@Y9>&ra_2IX5ylL30ECo2&9%!BkFy#ItGD)LNcqhG zAcy~~3jfjHegy`c{;z`y&-MhElQ!dP1%SYw;Y|eF5F^8)19**whQImc+pDjp{HCey z8(1M&PV3izF|lNFdXw%5ggA93b~`9x|-x^6`%iJ<8^rL{6B{Nqa(e5h6Nj> z0|JwC2>ZGB;d4R2+TlseTZg#9s;8vf*4*BlDoekYVeWK!NM=+meR=;U7yub&r+ivZ zcH0H=s4;!5aBIS; zrfxfODi6U@zJcR_1e)u4j;+J&B}xF_>n#II1o044vP}?Gmvc;5o$wTJX8Ie3`5ToN zoR0JJp<)KkEKYOGJH&&|(GOO64s{hf?s@Vc-d1{y9A5WcwoBHFRVadX@G!F+xKa@Y4tcwVG>pq3C;ApBnfYCkAIl=C4F4d;P`M~U*>F8-ehcYz8A}7 zeQL%~%>}8s1CQXp3PfW0XT6e0M}PrF#js2$9(K$1pl)DVD_4+7iVj5F(|~~K&CSRK>!RG z>P~pSS9=pML=Kk`2)TgGQ%R;e01Sz8A}YbDjIQmu!(a@pf0c37ML3{wVUdj_EF+q& z1ESvr2xuJ;`VHS%{yQfLX}Py^05EgP%B%VNWPSp_&r}R6?|7Bpia?^RMr#n$4FTq< zJO)x7`pE|lF7Q9+Nt~7F#6UZrkAUxgtRglLK17e~-4RFQ=LjeoOphrN?s61Zb=QgOn8BF8) zWmyDdw9^TUL(v^#%sbGs(^dR*5f4+jNc+qP0tml7zX~ugo9D}yv|WB}&%Cvh0Xb&s z5cD%j=b~*?#>C61Ij{7wIwwsLbl5yKU%FTQP)HZ_w`dPW6EL{Spal6i0-=WfQT-u? z>6vcLaQ+7beDZW7$&d0NFVrm875R2@ws{DM`Z8LVvFW8P5El?|r}Ew=bByY;+OZ7n zJ;xpc8&^ow-bO6vyj%M%m%OmEm>u_GXA)QtTX6CraF+5$o|lyY;6fLwp|*=IReEsJ zlQsyM4|%3Gv2DinIK5m3TQVed^;HQ3EM* z0Q8_1|44sV`=9h6Ie1y0t097e^#El+n!hkTU9VT>|IQ(AS1%f)`E^xqgT#2hGEk%F zRK#ii+=O|mOl;VLoyr;Q?A8GBTy;e6dUrQ^LR8}oEv z#>AdGl)|1gfEUAQje*1bzs7at(Ph``xeSchsObhb8Xa;DxmWwnaqoUUur5ToShgA# zZeJdxEd4I)Ni=R+QK5l#GeM-Dbu_v&!*4VIuIYYmX3^U+^mhh5@w|t~(CInf0!9J9 z2Rfj;KyczID(TGsFlJ=Pu*13>(F71cnNOjTsxJKdbrnWAS34|wPY%au=|Zi!y=J`u zFTeyoln?2Y9PXfPA&~#<`3L9Fps8Q^&v_*ccvtjTt*86jl1?}v`+XSrDnm>86StT7 z4x{l*UpttbK6tkrSYEleEeuvCQagXQhCTCwXp+%ZhUCacZGWpXuA=9HFc!5OG>zZO0A)jt`wX1p+92)&ZC|&|wq*J9AJp zc@?j}l-1RJYu{~-ZshpdU%%v;K#GYTR^?xTT+?q^4e@+8|8?aspjdz|&+}NxCrHku zPqHh{Bq;JP0MLe%a>e4sA5lKUD~441Xa7Ctd8NoFh~Z(jvl6fCPTwKyKa~Rp9Q$SY zSTcZ_&;g5Vqy!lNJA#11xR=8}otk{oAw7-Cw^ZhKE|-AqPH6)>`S&1vC#oQQtj;wL z-&FxTplm_;e->#|bI~rZF~U0yP*@d><;?FY>LXP_fI+SR!Jyokfc0B^Ys7yp{>N*( z==k%hFdto5k1{+)dLCl@|D0ECopF{MpsQ2<%xbd%kj_tlwlFJjZFSs#)&Q6uRmQKK zMY_4M(kp`j2sx^ADmb5Y;_uiFPyle{%F?FQOdQzbR_K ztwtMIKJ$RGC=8V3)4*x;~v>JEQWGc{PT2{$W`+IsuJt(H$Ll z)kb*$f5=Fl8z4pCp3{ndA(7%K01L_II(?>_S{(9SUMF`{}aaj&_I^e8;vyOjcl<)574*Wxh zw4oS{S|sW^v?mhfdNznF1N|;d?~m_(t_E+!!3vGNaNK0VGW@iDXYoh4CEqiFJZ-ef zkN!y-g*5-KYddRbyuqyq$JVI*lh1b}132$XC@1E@-!})qDSZK7v*BO13M^WZQxqop z&47V8kdP1OGrXAs$F%_g4AP}T3^9M4f6r7LSvl;v@EnqBZUt~iXJ^25i1~U(1O&*) z-HtRk+86~A5LTN9hE|DbjCouo$Ko}^7!BY#i&-X2S+S>jvFUG*Nzcqxmwe{}Sg zH28FGW5dtH?^_wAkphT&(aAp48<)OK<-g3r4R24Nl|6#lPmi$q8HDau862E=33TIO zyeR*cc};=cpU6J~oLqNj&fPF0Ebl+Z|I6J_<}T%CmTM(pOJQAb7X9{4Z>r(CBncH65z zaa909NVv|R{4wZ${(I8n9T=g~ME9;kRV^EO$uey+6a{n$!uwW(41nWsdvVGtG12jl z`#FR(;AS7>2`#MEnI4O zr0aJLfWObnz8V&PTX9hjhi39OGvNS0nVkbL zO^fUZVkeVvW@+wHBAe%`3Q%mIpb7bRF+V%?ciJw1?MUFd2NEa* zb0)j83V?L8gSro|bEE>SCJ*jbc4q+3R>a)F4}jiXZhTf|iOzZjZ%mhg>28mcZ-tQo z>)Vn+?p8!4X_5bqxA0$H;aA`Sv@eYGWyMchb8TE1XpEyeEPxoQ4iLY0iZwFSX*2w$=>lylE^k_!Rl_wj*H4vQRx4PBHW!*Hpx;@CfE zfMNj9{Ev<`g+U{qM7bRUiJIlbsePI>Umyf9K(~)volIY&15O(`UqG8ri!+Fjsp{!p z1Q~eB?zS6bR&vodq*VtaSjl%%-XP(B{>-4nG8(b9#GBt2{}(FW%(=M_`U<5K#l0TJ z3to({(twMz(K-NRw139|Kqq3&F-2$6N_r`(Mzft;2rRdSwkC`bcf%G9-}4Ma6bwK? z$|u^s&q$z24$t(#tp`OX$C^LS)m3@RfDio%nq!9kD<>HTD**t?R5(b2<**;kc%$ut4zw_zPJjr=Op09@#^JarD1-9LMrR@B;33={2;iUWJI%6O?)78jeAOQ+ZcPp>I z4M2ibZwguba^%%X%<8`7wW@FXpgOGpRy~GiC%`vDeUJ`b+BM0!fNewRIk2u)Le~kY zQ$Bw8!fu6!Fs%sX#PtAQZ@>!IgP??*#C*o&7?8OspsGC zh`%-YT;!XuL~c)K9-{tYJ3QGRTR&sr(HqREL#}_Xzn@lUe$oM0M%L$d^{x-wd#-P@r+uVN=YR#&PgepBCGA_vs`!QTVl<3wom&9dB@UbsNy#AznEzw{9n%o z4N`SSh?O38I}_hhxe|V4f<;Nmv}nzo@bjhMckJ>BXkc%m_&@f%IQg&8*pN;s zWK!6%|BXFQ2TwL@qF<{C>7@VI&UL_~wO0WlANKuRS>&X@*%89I@PxRey^PTtFcEB| ztR|7uF7hJT^89~jn$AnO%>S%nU*>-aAirAjK2d*yO#@yi&BmwK$h|$T!6i_ z679egaf&72lLTI5%?#90qS|}$L|*ZE)CY*nUo*T|ExDZ8qCIcSMOep z@$VRx$^k$_X#zw`H{eh{0TgWKxlsT|6A$GB=7ZXf}VMHlJ7ZRNU(z53`$N&XPP1%6_XC@%V^-QLhV zpKeLO{^$Y+h}kb?-8`{R$~4O}M>hjK(r#MKfBic(O^oRa2*B;=!0T2%i8O|h4r2RI zK%GH)}yH1DZv-PgugpO3KYC! zxxSn%WJ)_sv{nFsG=P~N~G|07EkkmErEq`5h& z5(K*L@)*G!;YN0i@>n8=uW#A;&EfH<+qrMu)qx$+;!*qYw9atFp+Kalfjopsf)g+> zm1#f+rY6BozoJ;N&*1h67m{aSSm0ogv^49K^=zWXMN$c-@+OUHQvVW&@uz7YiOc`y)8stb#{j0^J5I$R$##@~rY-h-e-JnX#w@ zM0c>hFo(^wF_2ba?bzpOJAxSg4m0Z5_oIb?f9<0fm`y*kIs;9f8=I6uky&E^QMvUi ztO#y~ci95BEHKM;$g97Y&uNvy5=emL*x}p5RZCI4YH+J!{To1%W305`Vc;1F08*G% z0Ov&KL-PG^^#bdV8>I1zP$@v1=vIE;@~MJK8_?)&G(g9?2r96l?VP9s$&?F~)or&FeSoX{+QqKJ8gBzflsNUNs~J_FkkSPcx=`dcZ@hl< z$9I4CCkEO~ef(MRkD**OrfL@HOi1gc|M~f;v7DH!@$0f)yg2|5I+*jSy`g1Qh|V9N zLEwXSxx9FFz65BHZb0Cm7}Is`wPv9 zZ`8`IiWuO&t9(z91cHZ{wyK@#?-u|>MxZ=AVYQE)BTErNxsdL+nh}t1LTLXQkWqA$pyJIJOr+|o2 z5QoD_(%%RcS*@t`PPz}+`3XH|L#Dbooinc-;d(m$*LWu<+9WTd+{D;U)s{&AkM&~x zDx4qF`A%yoU+#0h>~Q^yV2IM^9gE$Z+n;d~J51}v{QJ8-O8nJ#em)id7^G>c>o)&S z`B~~-=l?%t{93}kH~<%-a^CMa0Ji4RbKR~A{V$Gr@|Dg+f?E$t9y&8%aq&nZ%G zX^X}a7s#qjAf%mIZYD?z|NLhg~jh3AUBnZ`Q;c)r~EfIwR_JH-FAmp zdA~Ww$_eg3F#Zq6L~g6`W+w0Ks-J-1Usl%fZv}e1(rg+V^|v+rKDCpbgHkT(1JxhL zx{2gz9KXtQ(T-gvl#@P-8wt=yF{_4yd1ehBYBs*6w6}MkfC&G-N1(_b=eOHz)*!WN zvZ*HgAN)cJKTV{6wA<6;w*@rjz_xP*ybsLP*8?SQM^n2;4K5d zA4#!1S=zNtvg4gWsEjnDtpT|`d9S?fD1myzfR;tS5ZkF8e30M~0jKYnCW8byLLpM= ztBoL?0x-$Io(~jOj-P+Pid+vrXolZRm4DLX^xp(^O|Hiz1q=?jR!ONW8^&Fgqt=T) z8GHLi+NZ)^-tC6_y)3q)W?>r)QVM=+d00(IIyI`ieaKsx|IXoH8yG&&tp?!mBy=iGxD{E!^;YzUd zH_fG8_7;c1<}nbCf9JG!PO*EfQ!ZF|9php= z!F6||ecbe+YY)1eOo=O9-dfK|fzIlZwk*E+|j<44+k5=GEOo^+7{UD>a? z`Gp72_HCn=NKS+GiuGl9L*K1W2p9~z$iJF&n{5xpm{79HZIT1`VfugF6OE!$&!=!p zb5iW|c=_>FRMb^+a8@=WA>+X0wvCD}=2fBBa*yM7?$N=?22V0|1Z+xAU*K zaxfiM>@de@1@OuIk9p8`anQ+SAxO<_h31b!rmXPbLQNYEt23%YTpkm_U?M76Z?L3a z_+GU~7y!k!b#VOIKy?{0fL8&odeDKdr1*}@lLu+R6JA>HX^TRnej$s503q(wV{^ir z?{erx`N~=C98?X}=(_%?b4!N{c63$H)+GKul%?Kv*dx~Om-@PTUcM>mx7YD~N!&T~ z7i_%{v=f%!=m6xo?yETf6yPC)dG5_o2PsMb49Whm!Q;^L+&rl^p4;7>0D%x(rL+zb zpI1jiOH7dNM`w6{SHJ-{RMSdh`CHj@aZr5)T&TP%9G+>R40;E~bP6M0eJ{!Y1SYNe zL;upE4&<3uT2&Os6b6pbAH4E@d(>8jG|mLtxROV|*D-~qPvFFB`(GjqZVqp^4Wp}5 zrRlbPbkPdm8MBGLQ`>J2_b2pz`Su#^Fhw9B|Dn$iO<6q2pNttmOyBtCkyrVLGF)tr zOJJaZ>?@I>gA;jnf1OAFdpaxT#oTJ1F}zMNeM01O8iz8M>%@yCiTNDbV486-8X!dg zG{(+y#MP>ZTNbc7FT`$+i?-zGD?d$VfEn&?E-L{vw|{5;51Z%z^qz-Fc~BFpB-SDg zfGZ`*@fYDv=;U+VyuG9-F8udqWn0r}WlWlosha^%ciB7D&s%6#zW7k9^;-&!f8(4E>y6AOb1d(N|*M%{*h z=l5*zp%b#Edj}9GmM0THFm?b^Pie1?Dn=7PokejqSLLp6y!zTs?3U9>1|kVo`C>6?6U;=2MOM^(vS5uKoA>VCU{*rtCO>-%2wr@X#=l|Byi#v?pxcI=DT{j z#kekNz#844==ECfi_`qwRrD?#AHTmi>gcQ7>c91&i=bfMxkXyw){9sApb^iuZwtDp zzeR}umcLYCv&H2m|CpcUKQ)r{?rp__`JihX>5p$u?EkaRZOKAeCl5;@Qz#bZO_Kzn z!(QukK+X?Xuw+3jZEqg%&132w=IMlDl@?d(BbbH(`pUQCAI#ue_OTvZCCOj`cI7C5 z3ZSAjwW@iF{I=gq+il0Vl%;+$UexJ z7a4Q;4Rd%K9nha)kih{o%_rc%MZE#A#>%f)pu2d{2MX}J$p`5CrU&!Cg>R-gWAgX@ zsdG&!zJ|YGqY9&p~u{O4spdvJrqz0b`;a4?2L9R z>gZq@%gG?8CB*)l?e3gc)t8sB_)dqQL#xIB7Yrvo)Ya92GTf&dt#19g(Q^WdUbhmc zZ7H1YHpJTo?f@t%XHTNYe^GU~n~;B_arOFsRpO1Uj|-Vf{*_*Ai9vRGG&(H-x37f# zS3ED)g*}>kT@gY7SSM&OffY123x_&*?399o{Rd+%Lt>!@{>6xV8u2zJ_FQvTC=`Ie z&vJGG&JgJ7y}svFkaYF{gZ*TnVjV6LdY5@xEI?caBYZjw9EZ;6TLVJum#KkDP>HzR z-_h}uav{0`Rl}#WCd%tvSRpi#`I8d3c?C`BY_iG zP^lDZSYO$xp(a!PV*ZaKGjY?c9qQZP`RO?MJL0d>O>~&@xhN+_Uc5W?Hy}zbMqK)E zeQx3#mozUn3=2wO`tLdbqP()AMOR(nqy`QE-ejQW*L3ACMD(TasmW+_tm-nz{A2f% zVWh5e{0W@V^bUU$M=d9Ce*!KJj#|SGaQVtWxPFBU5?ve)pZ)fMJe7k{8TN zc!q$V^13_tI96Dtpc+nt5$KR@bzwWcD?M{Ay;F$%&6^?L#=?K zOSv6T$XhO$AIxUkzl&sOqeVo2yF4l~L;*-$y{b)fC(M^ z{WtK{l1Gk~R+B3_>u3}d`Bz4qIFOL#zo;q!Ch7)hfK(AEy0ZS2506sk1ihHO&EL}i zmvC-W46eU_2}L@f3|9*vd^+On$v*oU|6nRU*a-JMp5|twgRd7p<0I zSpMp39*$sx2-5Rt?)hIi{3&w<7Uht2Lw;iwZ(b%P$Ez8n)XF4E<#W_Yc?j(&-=>Cp zqZLyFK5!d4ccXJtRf)%eSBLx6-bcxME0-e#7>IL0Ri@Y{j@0B#BDETmIZ;bFkRO`= zsm`waE^h+9FMY6we*aybpA~<<(7Y>4sW1i5Onf*=e}^~5L%+T?X17eQh*OA8s;8TK zOS$0073?1jvQ+Q)9e~6eX%2PDa=?I+&d=|C#sF+%!1op$A@Bkdbs9%y?~F?zW}5eC zUPF*Tu5?W&xJR8UlLM>(Y-mGSIVUHdSG`piarFR=m%>9rb8xvF%AHm&t(U;g*;Bl! z9Ou`_fiBX3K>}G;KK%L^Y|UQyn-i;?RCctx1v(x~=DAL`J6d!r_g(nA0@(#C*?dy76iC~0Hb+~=B6}XDq(JJ z{o%;_&LzH&?JFxW3hF{>j2eIne*wB)9B&0wbS^-LwBUE8Nh8aSY}0ID;wpaK^Phj; zwheIF8X<6uctv65I8Rd`J9bR*8(Xn+sOpS{Gx&Kl|G(w@#lyRQ@^tj6_)k(a@s1Dq z<8iDfO``bt)*lI)Htqi{4-4XimQ5&|iL`~#Udu)>mQk`WVGj&pqSF39KtO3WZROin z|MI*|15~da^g+7}Pcg_z3#FAObf%QvSJu2i9;DUa%%KBd^qc!rjOdFUw!Q@d6{;;@ zlsonrqDDfrIRQ>shSz#s@Sa)$?wo&ia5=((>+JsKF=ASo>AXA;EDIb_v+HN z#!xc@v}ph!ruQn}6b0}aR?p?}_?n<$*Jc$-@UrbfJrgf{5`9s4qmftSjb!jcwkev! z1XvZIzm{*NXcB^dyd*e3QASa2gEA(k95Qn{^a0KE+{5!8_D2%bEKhp>L@Vs49)EnN zzI794gYxZUos$Grxc5fH{<)n0^(Q+(4q2RPik$}!1l$fiZ6nAns4EnhXNUTmCtk++ zWnUq<0feBf1(AAtbe`{X2n@G2AZf*1o(m(eO+}`K)-5*a%E`iJVP?f4C1mmu79(BYzkjF0XUi z__=AbZAlM5gFtk|8|{Bj|Khy6vo~mVke%?ugmcw3KmxPum^FFIYB-;we}gcI2+>sNA}XNJ zLO5hMTT4AIIKC{{EL+8nL80nTZS+GQ1~G#3kRxTZt)R0(yEaU#%G_s3$C&G403wa) z&CwQhl}HV0e<~9A_U4?IEdW>_j7J)>hR)V}<9@XL{_yGO(WUM3U$=QQvdMqHZVyn~ zZPNA()~`(z1nLttF3E8gfZ58JB5j2g=XTM52=Ji%t2S{_Q`9g6d?s`Q^sN{n%6hcs z@5$f&pL@I^Ks0I1@`N~*yOK8qmSJml7@?pHxQsxXw`sp$~zr4xW1pQ2Qvk| zdFKPAx>ncrzN=q`Pk3~@HflQMcNg=&eLD00H9wd0Pne3X;(y6&17DcndIc{1PU-L3 zWrEix0OwB~%T7r7Vf<1F)Jr*&s>Hf(V8W+;^tUp2&O2ua+&ZBMWArcI*()knA;sOk zBzK6tIAQ!d|7o~?^4tQY1nPAzW4!A`_a*T0ux@xOr?7P20nHC zyYcGAa~x-sS*zvkF@`f(l0)2#K_?&1{?!5}Ijxw`5@5$a@oY9O19(Wve*<_}C;u*3 zP;E;Xz|-Q76sAx_9lrffJTJ=!uja5aeL0DXL9smG=z*HrzqNz~Ucia`;Lg{&zv>T# zGy^EGep^^NV9-Hu)c(a1PQ9C-|BfUitNPf$#sUc(6u?>8z{3+)Z}XhNQDx)&&lWZ5 zp0H-fmE+Felmdw$Wi+gCByy4la7a+Vfr*d1@2X?U_)`{kh;$*^G`XQX`6`!ErSHm& zi^9u&R@)0cbzW63?9!7CZXsB&9U;}z38I-e;~VDxQyHJs|Ds|4?$c2RXW2#aY~TkU z%73B9uaJHdvXlK|F(FJ(b6^Zz_vdqwG?iDqqk+CcOYP zUD{iFI-rJW-|Yofd6PU{+EMIVu{A(#w?g~7H9B1UE$GPG0@U^dLq6xUoiXL7eMxu4 z;nm`Vgr2hk8_3|5Rk@JhSSLel1^nHuux~$|L($Ew@xePRwo_!N=$buUCBL}Jg4*vi z!R^rc?YN8kFt>KG_U{&N7@$P{fffC3)OMf%PPy-iR`IrvasqQ+oxPsZg-n_ef@ zj&_sl_Ws0A_N42bHB_6*zo~QPik~$9uXIr~>e{Z_;Z1ojwD_wYzkE}4j0Z_IA$gO; z{|@O7t%0sIAUJd6hd+G`{qpba`5g*?3D?zo>yt_g-+q)tH}qR|S~NDA(UoC&gR|1U zZ!|*?_m_RvL*LZiVqBp#a^~6jSF7q}W!ifuQ#m*RQ4R?JpmMihflZlgyT$?RLe;y~ zUj=liF?!jvKDDEBI=i}BFhZm$-~v1D7a(Ni38m4*4HL?tYs+o;{57iJLY38z$!A~Sfq4*}oVlaBxsAmuo%SNLbW;x;AXL2EwbGy3uzuzc zt9^ocoPQl|CSU*{T|X$84-Y5Y@dI1;W{2L9`JIZS`<6M%W@Xv)A751niibgYYvg~= z|2XoUO+k9;$UiH3X0aIM|L%fK-`Ps-Ozrw6z_P_i7 z_Ds%?tKofUr46HU%ZF(@4Rqs>Uu6D2J9nP|3ojh;DL4L=Pe)h3NSBgI{ysVC6D?k( zKR%F_j`wb|!|nM;J)f$QU#$Rc->et(dhMXfERjB=X?M`VW< z6W1yS@P*6LYQ4~YAwt5ZebWJ9#oWO}QZiJ~+2f|oR9>ki3W zNB^lmrY0>qFQ5ZT7%15MPPDrDupF&`iI{&9Z_r{YMwXNz`4Vgd^^{}Mq5N1UgB~2s z5SI0c?D);`=Xa01_RoKq`fNho%w#k#6 z4;|rdD+RXg3N(Nd$^G1fYru{5y?{i1>4y*UDQ=FKc#F5*SVMQ^P~Ygs?e<&08gKxc z$EH~UN>p3ODc`^z(hJHo{w;WLw}s@}JsS;WyGI_XI}mg+QVO6$w2>yO(6JK8RbZ0( zG+7WTBYpWAu#OBHclI_#@pIuwFYbBRb&woB(wA zq5tI?BRDf4ms2CvmQ%c7i`DFW1_1yBUqbJo0I(kj{&o5%=@UEDX4RgUMv8kdO8;(8U>*Ky}39p{_CC>SMZka#U=W6&&^DZOWt_srGgtf z=bYbnjw7cx;tXCWVb(2+1)^VE?kn8-3Eh7d82LLqH_5@jqj~=c&Fn$??UBbmX~P6W znBu?x1z_NJC;o(_9)dPB8@$l@24?ZtsNPWjV& zWrRHd2l8Qv|L?fe@>5R;>Nf&5J}%1W+yPeJRF_o3;4CtN9xPlZ-#+Po*Mf?aP~|wx zvaTt@Re!u*5W9uj2TJIF0cBTv@L)hor@GtLJ5>QVC;%h_M}e8=d75`;Bz+T^baMU& z-4i4eEdRxrjY^jkLGgVJAbuP1uPP@RO~JgXTs!4(n@|*!Td2}^ZJ+8=?e-7S|Juig zcQ>`^LyMW89!%hNbUV)AGJPtOWUbg8Udwi|u*JVWq38760DwOS9{T;yC;d>;^xz-v zho#>y8l~gaN$VK#r_`nYw=8cH$qDvkpcN z;w?<7{#M%~N*Ww9uA9G^{?ph^+DT4I7)d0dA7n6&0$Wi05N7q@Q zoh#5e@?2&-wn5S2_P2{~e=UMJK`T>F{qkFlY*&YJ#0wx!@00lt^Izfuwo8Y0@*F&x z|N6@G>LQ54yYaV*TDbXCf2Zf>-`Rzal;pEL=9fGZEN4Q3yR_a&V^^L%^!Z*4Mk&YCr24{00fRZ zM-S{`6?oL}9&62j@&b+4WoQl-0s~+jom4~x(x9UgmKzU|4vHtHFv6*xn99U45jsHD zF!GS518DiEjTrW@5l@Ya!nyT)a&bSZ9zY z>+n5I8eVzA{Tu-Jl@3Gy{p;WL+gX9_>;7Qi*qB;s*TtJhkuoQ`q|D(!(_wNnL`m3IsRN6%{oun}Ye@#5r&48+|PTEaK|CFzT2LILI z!0&uW@#I?uUTvbTzz$wwr^>Xj@_SWPYOa_UcC#C)nN}2&a-qD*0i=FJH1nHiD=V<| zn^(!ZC?XxwQS*Am2w#zN)Ep3d)w_+IJu4G8#uv%|*pdGpcw!(@=Y+i?=3O#2MQH+d zLJJKP%0?4|CZ{jw6PO$w^S#RNUfIjPz=N*|aBlx2RItZcv^65roRtmi2?bWJQLOTdofoqtfDhE9_@NX49w+Az)MgXo%B+NQ611G2GtQ*NNqH# z=wkmf3n=-&EpoNC^Toe--D>%(pJDoM(<|`Cg@pgC^m9Egv*!fB+~CQ-k97YJJw((W zG69a*q|;Si#Z@MBwmKAx>P08h1viJ{N}lY=Axq94Iu%rQVpUPR|z85zd6iLC>K4ETTfA|_OU0+me3n`K{yC%O=- z2;1bqyB$xskmL17Q2M|zV4A?cyPT+#V8K&6r(Jj)Vb<&0Mn_`#G3Q39X<7>wHC z|5)Az1I{*qllF8$>Haidke*DDOOOWJQ*^oI@{y7SIB1M(6X_0ptX$WK?I7`l1eA5=NSJWr}wl zxY33DtF%)cQ(HP@n(5osAsyo;k1{~Jh=a{04O*W1aG^_TqvFGXb{+V{z{j3|Lr*MS zJt24z4ftqufWSWr2*%rI*b!IlDvrAynO9pDr1*QE292^+HiMM8QRm-V)UX074f=p( z%jlHb3JlKR{~R0pCmwcMj5_{edbmihh~5$OGAPLtrSvJvfbO;A?F4v8AkJeFo&AHk zV>z}-H%B`!omPW0j5i1*XWqYLw<-VyPFqwRiw;Xb8uKdWSigBM{|0(w8gegsPS9`< z;V>DedHt2wB-GfXv4)2`u*(OzxXHt-n_@#bH_z)ka`g9mUNpH1IfKN!-4>}a{SZ$F9?(5pKXbq#w|qk$By*$_o3NoOE?Kj1di)0w7@gxL0ARo6kLX34{sO;x$ z5S02WfdqBaNjEMgbanT1%K-n=&w$45cazg)#Id3CskmEwFVSTFCe~h952U#F3?@WG z;<>mYXa3bh;dM0gq;npj6OKNMl$N)Jbx~<1ben;GaB|iebbXb7YvezZ2>NN~>O~m= zKA14vmr2t^;Bk=HaQG-}$E6@#0?p#^=`M8}`xJV|H*p zNpTvcvOvWP7LZv^3qfhQTa1j8Ew9q5MG_Zz(6-U`|0zh@(|(5H>&z7Q3bA!tbMT7Q zO3=m#F9zN?6LW>)@3^F~kDu4+-@YmRoW_T|?D$)wJzoF*XF-5}|L5E?aD!=-)yq#e z+UmV1S{5gquWdMRdeQE*3f?$*tZg}RLCQEQLUh=Kq4u+rU7Xy@c>szQDy=m-xeMuc*KOdmJXT%Z>N}4SiUHEzk>4AT zg8QVx-*$uxT*ucr{@nK>Un~=%ZpEKcW-ZHyDVe}M|EhdcLktcokO&PQj+6#pEa?*3 zx^1rY6RvO=PnHbGc{RB9&&aBmC%X`N9A;evAdJ-W&Zf>3P#sE@{#zbz{`NAQ)@!TPMVEh4&}pn89|@$3Lzg6!O3I!VaeYqbQ*O z7%X5CmU&B%ft~m*gJi8v@{hyW8qq)p$J-hRC`itKYTL<+e=9D_y>Y>(BaGUVVM1H* zcV!TU;CUNlW-y@IN45JU-JkqCivPECs^{!!R7E5kgW-GrABqoEmjEDS-PGS8dE4FQ zTd%%KbSzLkMVB0%rlOkEA*4s=RDIJO;yI-&If?^tb2gg1W;PnRKohk}5cGFV@dhFO zF6mDI*YG}?@6+=g9PYnIKY7c5vW;ADMKtqJmq&rdFs~_RXV;~ib+oUr{a@t8wK+Y*ToKd8DBC|5kc=(%nA)CY#xo>jxQAb`Ck>f%V3V; zkrIkWY1ol2kt?oMjv8n8T0WPdK!yS+BHbbATMuFMKn07d0#JI|NdBF4os)h^Bl}zBKMVK<28`(E zIg()08vf2>rd%kg0Yq=?k)M_Er}&r+IZ44wySU8hncRcFiK+jI_}{w7Ss9Nbw%B}+ zMe%}9QytrO7+8dJvK&nY&DHdg4(9f>QjaU~z8rk)`-&J+qrRhwVlw~htsY|aU;T}d z1^iy+fkgW6$pJ9S#uk4oOi@9_4Xz4kz^+;#(>aY_N%gt(b6E-iz%G8sB)5<@; zpT4&aA*A7`h@DogiVH_7IVt31>=hr&<#+AuXwiZ|R&^yuDX6j)eLFD1K<~2i8nor$ zQ-DGJ+tt(cd!h-qBY^-b?U1fp-Jha2%<8i(kEqpf;y~S}bY4sa{2LxN6(-Zd#Ngft$7pUe z?;A8oDgZ>CZ5FnKB7GT-?s6r%IH+HS@rp1wMmny7=Wb!1jy5U^>%8-_)j$EoO0T<^ zqdKSP`||Hn{=HL1N&dmX5cJ2`iD>vQN~;yqglI%(@^@gAQ+{j8_aW`g6@5V*|E3^- zeJ=iO+E>y~SmaOy=Tl%Af(i)|g@{I65CfbqsU@}*YhOKu_1o7O0L+pK)C#*z$B^-Q6joRn#>>Ev6F1-xmSEy|r>IwNhP z%0TTCLw#L3Ri5g@1S0(R=;v%1u)#o_^l~@)H-nk$QuqHh#sJzl#i_^axY{Y&z>6~r zh23cZEkk4%8e^mhmB3{ikN{l%|o z!E#!iC}rSn1SIFUl48+MUdfjty%Z?-Mzt9(fE9h3gckc_x`6tW&t_N4~-Q_ip?Bw@n1>8Uj&jf$Fc*hE0a^&M8 z3(=G>NALqs;4gYU75^#i3wb#m<3BfYv1+l*-x5BGS~olBxbWseg<<=W!=EZyKeO?f zI8qo}?#co16IlS!1cl_V;*aG9wdL6RzQKnVyhrw_GgNQk$uFP+*TJYNf~i~21+iXc zq%U~)X_4aQ=&Nyv=3NJ68nM+)th%&+Bk1rS^_&O+rhMlF+c3vWTor;7C{J45MyDFu zl|qpOqR-C!Z8g+D>213xvLa30cT$K%FS$a`g;2Pa*<>i`ws&EaQa8~`iCWn;7IqhN z6gjiW*#H#Ts{YPV9is32UpIDUwcqM@JJt_318`kjmTEJm?V=sJa;7>v9_S*=ruI&e z6=iJWt!x#=q4Hrwih7Wz+6a@NpDg#{@5vFDXmre~%vo1&g<}0y#gA`!KYu53jw#P zgjrESdMwkwM=`|U1gZvMrS=mcQkwVWyHcj z*Fksc6{o>@??PWYU`CCfH9X6qve#Aj$ZhC&V_Jpp=+*%QYCC~ylZu`wbZGdhqnVKm z8Srb+%%RlFauW8UtV$3k9RicAw$O-j3cYl0EBkqLn3?Llq(|g7rFz7^&ooIZJ^!zI zex~Cu6JC?PL(Gz3va+E`q+>7?BoO!@?m*)>1LuAs36zrG4h9SGs_GnzcbflYI{MlQ zpya*f9%uMj2B$|+nQ9s1&fQ9Fa$Qh*U~NDNgC{Jo8(ZtN$0 zz!6kIBI(xaVzc{<`9Je~cj})eJ@t^H?4B88 z-RVu+0owiUV*cMI|8fAHQn*6}9)=h;DrizY z%K4ASwEsPSJoyX(8x)CpRK5_S{jw_6fW~3fmTKEeR|_TicmOxH;i2#iuXW=J1J;Y* zlM}%Gv7;+fnOOJWSl^t}&M8wXzcN%4zoEmSCd42*C>oP9schtzRc!2oS_z+=RaLH8 zH4d@Pmz84`1Ret?QJA8tLdz|R~3F!|L^=~?gYb5rO#)N?ZnI{cQt zuQNpgi7$Jl@h#hr=uztzY1b3yC+_&QYb`w|4Uf>1SQ}B1Yb@w$g|%*xauW z|Nq73|LmT#vRF@CsBg`;>3N|vv?mC>R;%pAPHO5%4vq9xd}(% zLbsRI)Z0qAO4F@k%eFD_BI-!CtTHE}7G*X&n$s$i9HWPaSK|2{w?lz2Q zR;&3F9lH8%b*S<`O{2z(>C}PTH;_TmPPL~18ET6*F`=RlFG_5ARgMW7CM^D#U+vFC z0MVcfWjJEFcJz{~JZk)eu1>=+&4~YsnUE*F*XQO4smb%@6jhw;xNKxRY`T+zcELPO z`g|E}hoPM2Fx3S&zs~<2%amszf?Q4!TAL{PP5CcHeOvy6X= zn&GrlhO=G~p?0oxn8Oc`tw-3oD=!of)G(+7*`u7-wlzyt1-ZPwl zzaqW6pTRQK+voYN`2VjzXUl*BeLam#{Rnf_CCbPhYNp0SgmoDd32iqK_o z9&GzE&bhChvkMVfIUW8hjFfJbTdg)@p3>*$U$vr+ZRV9@$FZ!}T_12k)Nes^2k}Vf zI0i)2z5*!H;1lD`h9F>@sHtYM@wPOORZ#>k^iK=Zrj32g7 zEuyOVFxAI&z^yt2GOpeF!GSyfFF6@5HnQh?5HG!pVGDqI>nnk1@CYrG*f(p^6x_aqmh4Qten+*y%j)546OAt1um>j05u*# z9Uzzi8r$X4II96JEt*$_w3O5~{^?Iw<)0<~FW)9|aa)onqe9St$&n=$-s3O=|>y0X5 zRt*}^fz|$x(x>vTGFo38fWkiwgLUQ8x5A=3a?H}12!Y=kW0F}nvz~?k^tOT*z@dM- z^ICqD`2VjxXUo8($dqDHMyC4vX1S{QC`s}F z@;gTtzq4^MMF6m#=vGVo;y|miKUrbN1*@&l9~|UGKU~yGhL~`~)0{-(nbPRnX>zj# zFW$gZ)gP{l>BnhbqBm5uhH6t68KP*d3~bd$B`*_iC@`ukU#05+7_PGeF3{%jrr)VP zC5r@T2KGzch7iQ_jT+mIh(E}`&>LyuqlFr*Yn;%;wS*Fs<;MIgpU#Qr$1i_(4~$kT z+<+}0&fbaAVo;?+XVk%ztqZ)a)c&% z`jZuna)kN&&xrpg-HE0Qv~j0}w)9<0y4{LH=R5}f+cX)k1Woc!zY}79R_k&9zG{y; z@qgbm@TC~sv%z=31v}rrzNi&?QwIq$X;*kZwt4E$^j;POqYI*S;yj0Ka#u?~1-% z8@R3s0Omfvf(B-F-so2Mc{NW(TueYj7ojmZ%o1dTIZ}B$ z9RpaRaP;Ziv${l`>5a-ejikRD+NI1reE%63~@ zrnEfac&`A?s?RaXPKn1bmf`IrT%m;FC*|L)*S|&n8+k=~?fE;&KN_CZMb4|Aapb?4 zIWbND5)?qX`*!rr*z}$qe9dpC9M*8zaF1eSd8#>6R~hM=Um51mzkl)5Df3Ts-6!I& z^4tIdAIRZN{nCDpns1?9DDzVOz1H20qc@~Vld7MUZUh<}bdvYu-kOUDM&b%Pt@f{f z_tl1mZ9D(sp@aM10RTu~=q6t_h8(UeEY}|jKth$pV8j@LYOE9+#$;nijiNNbmqG81 z^fy3A*CHAZ-YyocU`47M-}3Jag=U@Pq-PD%=00mGeJcL{^yi1{opR>cCh=B>oPUJ@ zzQ5HOGe4|kyAdI$#y=PxC%Z{1->w~`Q%hLxAhVs*7myaq3!&51f1P3F7hRy7&6kzx z(vQY?D^U|E)GM##tRHC(0ltyZ2amc=MODa9Q+DP=IBN$M-+%x%ibs&jDxJBmuFOv& z$~v&3bND-+VZP~B`c&iq18Ru|!qDHg4>{_%Fj@&v|75@~@txrD!1vyiMf;LjHV`;K z{|)nu@(=%FG{B-E>XDHK7klA<_wj*1avkK7*2JXYnxT;y5b0dy6=WF{rgL4$@I3Ll zXrcxbQdl}PeIE=6GPRAk!vCi}JY3K|kpF2>vj71ks}AyDic~nqFVdx}82w%Tg$e0$ zH?-y+1+egzgM1L7GG@K}Zvg;NYE=e}r>FyiO$b#w@?cMWLt5JJQZJttrfkb!A^u&P zg!mWliho-b-L{ToYx=!RgS6{q1Qi5^a9W*0`R8j-SqkE;BnxL=u7EA45?9s}SP9NI zk`bc_HgIWs75ZWNFOGVElYf$U`d*?BAYHz}g^gZo%f$YqQ2c3C=hXqAaY`SOQPrHt ztX#cmMUuvh>qfwaw^K0SsNF_SAnr|6Sa%xfR(>L-$?vAeKm7ae`ur%po}BLqsfg*2~+aSSH;q>7O1-3~=O5s9|@v33xkPF8^Ig-(AALv$x zc||w%r3vL!Mw$WwuF(kWm>W4op=rm??`|uX&*MpL!!l(=Nka=0`mZxw87yE>LD7F~ ztDtS?$a9*h9=XC!^(%k@0cfO~sw@r!J|8M7*F@L$K!98MqBLK7_oUc{?+S7sl(RB~Z!40?5aPp|dBtu3O;GnH`wZkxO>9fw zZoS^DQYf&sTiupJF*vX{a6q*|t=O|ZxG!o-+ub~o0qbzU9FhwTW#bp1B8(hm!0T*m z+E!k6$=Qd?*ig!8RGSo+D!taK9v3?5Q>?*<_dg^4%5GHpv=RSQcUKn5f0S709Z6#2Drvvw(Otre?Uw`kd1CT~WEc_}5AUQP*BojDLDZaz^Nn4)g>D zy%?4%tvAZ@g?e>_yZJ1=3wWPoj~z71j|(ZR)Y&#m&Z9wo_#Vu$v`T^Xrj=UJHY}%e z^tcYSTFv=8M{sgTRXv^Ko6@s`$WA7VbBa>HwyHYBI5^RI8;H;r6={&1tDwFOb0*W8 zqXKS^1gsv?7v2$b!vrd*h=s{EP-BY5LUOe0yqCvP086Oc+qOB$IE)q3Xz@&dvt2+9 z;2&0nPQPg`Obsqmt?(M8y2OLyJG&2gAOGapCF(?}8AuJ}gK_++QU14n*p#?=5TBNd zXtLFbU=5)AFnM$jwwd88P-sbsa-RdLJ9lOmM;{IcEUV*divaws=4uA|7)VxnN6LQ# ztg=2wvSvT#%diAt#+85Hj`^X|GAp~ismBG+j=MTkP~9%jrR6fwJ@=iqu57ILdBrSf zSU9x0DuB*#tv+lvYM9$uuX@VcJj_R(Qs#&AOwX?p|4Em2zysTX#byo@LqE46xZDr+ zlt#1igk?z@3Zrlf>UozWXFI-UCD`4Ifyevv_aTE&FFM$2wLY!-!wP+JE!JwiSiyHv zR8D1cefS#zk3)*Os^N6#VYdIP@#aK>U*-U?Q^kN3uX-;1|7B2Zy{T4!9LF8T1p14j zz+=AtPW)oj9O9*biAMpr7)QXMZz}R~_2Kk%7+xgx<86f4p9=?={hvftrLZz(G-~^* zFuTPRWsJVGhbIXHw;uEtJLh4h=2zVWHoTid-O_3W%rGI>(Y$lfo?G7O zy$L-sm8n*-ixW?w+p2twvPcoCVltnc_vFl3=9Qo^Q_dptm+F5PA*L4R1VCKUFx@zx zip+QcWxBcGW-p{PL%R}v8O&~s_A;j8*&=|nryD3Xh;y@FmMk@6g8o~O(_i!fUnNL9 zSR8j^F|-+j+F9h^2Ng+%rBumEw<&8sF5mx=PdCw6GXg(TzIrFnOcmm!kj$dg7L%>? zA1VN3)cxAa9F@93hU)?i(n?q({{>uFKL! zHLvvKqxctqAiWoc&T^Df894bihNnU!vL}50P~naSb#eKn4QyPa{Nse0)1>Hu&i=px zm$M%62e&0>eO+T1)mh)&3WyL~zhU*7@}@`woa+Vnz!44WcS%pHnEZ?bV90|sj%fw&@Ri$XqoYQ|$Oy(1+|7|zUp#-JxIkZFL@$d^xc(pp^ANtwNkJETCjZ{B6f&Ig3-`f=_&@NpqP3H} zB-@4RG{NW0Q*ulju<&D7u#mH?tRo)T-3x^0MCqy{xw^2Pg zt57IszS|<83_Z?Q^LMumBon*=2i^rZbMGN0ucEz3#Lr4!y8{2(iSIO^v#lq<;`ZI9 z$zq|@55||>j2Eb5w;fkBlmWx+(HgCh+TbE{ncyus^Li!Z3!;mFZVC$^Vi#rLG+T1! zqv{v~9oHzBdSIYB`$Pi=P|8;~Yr2qzPkrZ*PvsZo#oxgJ*dRs_^ayj?20s8aSaj8^ z;$7$^>d9)NU|TRMf!H33S3D~Ao6f44N&s48tg%HpDhEJ&OT6P`1h;h&VNtH z?MuI-SNyn=deFU-?-tgbLK$7OiLT@`kdXx7b~;edqmB6S3?N%0^9=r})!;5VtXsY2 zZz>8+g?t9lIHRmEN73ALSU=Msq90=wy%re8ZWRphugXev9k#=2ozc{-XsN(=cN+77 zhH6Z4Eb!fGdk4~tU;r80i8Z7Dw)~jHm+JNi(J$l!nBINLue~e$IZ%o$NEvd zW6G+?)Sw6`mqSePc!vT$2K3j?+^)I53Ea!d33 zDhZW))v;Y)4jZLyOqlf0wD8&Eq^Msitc1K*?)2X+&#hCbogn|_LYFqz^Epmnok7F> z;5{;A&`B_W_TUvYhkM!@6a;mSL)*K7Vgul7@>=2<0XlKt1_FIR$DLQ^af=h}$$#NL zym{no4RB~jcFJ?Oe-4RH=OutK;!@9N;E=CWTxmiWo7pz`Ya9UCr>}V-46ch5hX_`| z_A||W@xngG29m8&l`}9LH0ji5)?;UcU5I}_|N8?+@mVtJI|Ir14FTc%nFXDr&2x>O zdw!I$pA>GFj??hyxKPeN3$$=Qy%}W!07@AH|C?pGT84~td@0XFrm`CD+7^_w#h*}y zbT~zQN~TTd5Y=WbZ(611zf&G@XkKyJmNR6TR>~1(hnUB9kqT+Xb90H_6=kP7l!MlR zINX0>O(nYr`rh`>^!OR@sX=)Xyis5;H%)B;;r>Q0OF7QCdXN8_*M8s_x)IHUjb!+l zu0m#BNj%+QoMd|>5Q?371i-;I!lGE;xsYG8s&1{}WedpfnO8>V{Y8I^_R7Zntp5Jf zpI2|9Bi^K(FT{w8f<*^E1j85f5`|n$vaA5CQvg&yhS#L|ghDvCY(z4^@ftrFz(Dgd zgRmxa8j=r3!iDbL`AgN&+W?TJd!Ns&)<)Y)S(qLTKz;K-75?m`+pwb4D}Xc4XqUh6 zQfW_bzTH$pG~;Df=e4%b?wboeIaSW2?)ang96sqd%3m~;+st}7UDK5w;Qpw6-@M;U zgqpb^gft)+y)!DyE8TE)4F7eL3gD=)wf8)?oxyH8{)bFxyQ}xF8jyyOzUmQ6`dN zGKuXLCUhU2;84KVNyYT4rw4|u=;E4&!GaE0=xWEjTp$1aPZ@g+7w+Q{}?z>EA>f6)GcY2%TxSHdi#tu^b?)pfc_#FfkmUJBi)U_Cg!`=*rYbG94U|i z$DG3wcUm=`q^BfiIxPI8^5}s2WcxLMQyIToMM~d>=+8gy>4?Lf?K}pR)`YO(1fuTU zB!%Ey4^1*GNZZkG+V`vgur8v})=|e0;ZA!nQj&k=Y^f+X{I?w;(M{B`}jh5ILtdQwp)a67ER*B1WI`-6qSuhcas|N7dQah@n5twu(Q1JT$Hj%0_MFg3)Uoe6{5a=Nkn^zW@gHHk&`5 zAC&6tnVkKO!kph9-gl0*s=J%jF*zQ*jQUA9NXeiXFn3vx0tK)vaT0jahYa$%*4^tH zJ4Z(HIYmEsSFWIi-)K8rb*JhOQAhhd>qM1K)vF8%1{+k_?f5jnigMz28+mRlKkA>` zz8CWTfOSzld|lsqkD>Q<2(-c49Wr>T7grzh3N+QbZ!Zv_#Rdf+KLQK5 zlAijKrWxFl0CeicGmMN%Qn<+&@}7^Wor<0Yeal29l$WN)^+4QCJlMWTHFL8a)2jlynjya5H6 zU(M(tls+oL34Bn0Hx6W&waz7jXA_Ti@0P)?{A-t?D%)kPO&UvBb5wkZvCYATb; zVCUFGyVc6K3H?6-w9}+N(us^j^+f3TNu^Wecm0<@3Da3!F(~+GjgHEz zGEBYmnwO1Ex7%RUu_<+du1xB&ah^(tC!MKejE&=;1s(pfhdX+6@^R#2n23B%qe61i zs#~LQ)BHe_0UBu^DF9;95Wgi7l}RRzpMsQvz7%sL+MwP1;~lt)%_dSGokj-FJ_CU_ z0<5yK0P$*zT9tWyciMk|h64aN)R+5arM1==fCh%{N#{^Hrgq9lt__u~z2nY=Nog8; zV2@RE-X#P4)4a~Q)2DR63&}@Ss^C?BO7U;xzZh}Np=lUhWI|3?2OOMyY|M77yGBD{ zTVUA0Qv^W=4L>*A3WCBRmC%QMpa80_6}md;=TT?L5WTh|9y@&ywjFwhy($<(3N+~ugYoOxn~L*8iwEzN_r|y2In`E$k3H&9QGRt!aN0%As zZP{-z`F5-0ObcG|=X6SsuwigZk4`tf>!KG%Q2qr7xm=%^+6%m}`9MVp3qE4{;oPYF zJD#h%NQVOcQiP%Nq9B29JTY|!89JwFY@pHX+h7!=k*r|9JF#`De~%GISSa2Q{WI{t z_Bg8T07m1AKu@irL?rAip7XlpIXKBFfGnj9IzNhS$dqByogE19j|Tvzr$eRj-%z6` zh!PLK8*eEoXfn1H{gV+*lfkF}s643vxO>MLk*jNVq6OAj0!3Ho1shH3PlpffMZ!_g z&sxUc(XHqxpU}{Jcwm33blEmR#$5*>@U{R{xfLkL{E6>^>QLtqWdHFHTyebKADbDl zgU)(KO26ZI+{7GK0G^o3ll65vi|r=zI|`3=_U|{uzv=@#B$VX8Qvkf8gw9+t4iGfN zcbL|*ZbMn zguvebs${Wrsq0VytTS;6P_dIl+7gFX?sh;?7XN{#T>!nnuOa3SBXAmT^2zD28gJY4 zy)6UExa{nxDPKdB>$jl)J^=~3S&ZAslN7C37EqUqAew~f{wG~4Cdb16O;}w^a&n5; zFk>g2^WIk1)k?pLph)c;wj_wCqVYSw@7g@A5_eH;3T&`u?keRndJoQ-GJMKH0l}Hb z>KmhKPMb$#IMqSC!mIwNAIcF`rJyXaI``XnUbk9crw7ZlkgIyVhL_ zY%-&H5v#<0lAp!wQ07wl!<+UZDCBmLf26ajNPz(_4*mm(`uBZqlaC@uSk?H}5b%>a zL|H1_3e!l2LX?pdfW0VyrrpRirJJzl70{;?u8Id^0nZjdnr{wZUE9sA@NXO8)s76B zhYtD&9protz|pHK2-A$sMgHz- zqR{5o1k88ybvv&PHW!x{^j?axfuBru6y9`^{sjr)hV!uP$rzm|9$M9C5CW9tPX1W| zlvRHqRzkwXcWg&8Sjnhykq;+tWtj2Gjy3hG30k(XH$;P+H$$fn&mb7C3S7=RI`Ldy zuC_88mVs^BA?=`3cQ`yd&`1LU0dfevmG&d;(zFmlXxJ!;+?RI;K=9wi0qAd2Ah5%< z0$3V8Yt5*%!SP=_VQ2jD44rPAYqv8fyngR0<=@ZV?robDc%6u=twA)HfqP=B$p=}ZZpiV1+iZ`0*%f#d2 zRwk6gO>gXvm~)a%W`j-<=Y?<*6AQu^p|IMg>``f~{>;;WE>G$IQBSeLhmMEH<3pJO z+CpJhp<^h31(_4dt;HLLeKBrL-+ZoUt9LD&x2 z;6}SNubXod^9lZkZfB2v1{5&Q>1KYf_jOt+OYbeknomca*7p^tYIfH_r$jo0v0=3W zO*B5ii-WJ`4rMc>GG0W~`gdED_!dvAbNdko-~2A`pm!671$Vr;Vlb`PG}i#SSlMSH zOa{P&x=jXvHHd%G7ht@0G%3U%6o849?ZRYl%#|GF)czdqkE`^UCzRnUoXB$EAf!>N z{)ar-`E+&e0RjoMvR=E48cWjxo$53#C?h=yiWrNl1AyacnopqISbggpZ-@fP(C((F zTno3PuNED@<}uWIo)4o%0DONF?O*yKIsA6`Yn4&Y88~^;_|oK#S70Kqo)obG1P6WN zbO0mHf!yaGP?~B(DnL-6f4nKD^JMV%t8sfv$Kb(Z{ucC#^Iux1f#2>IvZ(V_sLgEf zpseyZC8G)SZwsi>zX(1wd??36Imt>dFaX?5^b=?xB8*DE_#1_Z8rF>@}n}GQ1HlgZD9~?NyP{S;6edd=*hqsNriBu5WXATrv^X*36aRZK>_TE ztw9FMq)YAmsx$B9hcXKCW7~m}fX|AK0x*Hk58!{1cevaT3?DJbKW_yPvbpqK0w@p& zNx(BWqGr{g;+3Axe@iPh6avf61v)p41K=doyzL=C$)|G|md;CO5F7=7KuQb>U_}Tl zC%S-0=B@k(Y(-e@NmursmIKe7cL*SDvKOAg_G^e2zt=oCbVyTg&Ja-c&drg3`PR)Y zT*r&^9uIBA^3*qB_bKPLdy3<-ekw!Xvc1PnoU8`*Ci6GxS9GXC^s5_}RrVzUrmhat z-`y&_O2YtgG{AOOk9w!(G39_`{ZkqX2O8v4?`YofGrXXcfnG!Hkx7OqMbJHn{`X6qW-WJ=tN?SaO0i20B7NO8oGrqQcR z97hJ;RVLNXZPQpCtF|of>nIf}AmMNQ#E0+gG8x%7h#J;TVkvaU2+d){jTAs)_(=gk zn>d;v8D)@8hS}5;z{>$k6U8ET&mZNV%i;fGsB^pH#SzQnj3!xjs_}gObo2F4AB#U2 zr6O1E_HpdJ%LfH!;9}*%EePBq>~p4qhPQ-V2-_Y1PV>K)EXgmxAeauU?dp+f z#Mw-%P-JyxtYS}a`Y#W%FM--#)tcUCHigTKstGo*A5+Jbc00Jo}0%4_fs3YLF zZ~5~K1l-0Dsn4JQ8|#x{E>{#Ao=I~S=T`)Lk#6$v+}q(+NFN*uBZ#Bp$hzpmeLT z#)1bz$tyWH*;;7gD?r2S*DHWDP=Y3MfQfnJ(-@ZMfQ$U~$@7=T!8aJ0-GDW)|TR%tZZpkf188SWgFvRcBCXeBL1(6QlIc|PyyKYBg3 zz6Q;YJo80+-rli60P0g+tv`KOI=)71oO1%0FU~@41`YUJ0N!qp#}(qz_G!{i9smG< z07*naRG8v+Nb%uCZ;>%-PvqCUi^Jjt4pa$Y^~qrWt7JoLDn0 zYqFh@>BkPw6h0^0ZD*oYZDfbbs6K8p%AkokqZ<#5R>1k7)f?8#OP4cbqG^BE7p@EQ za)iMIpiI#Rsw^BAG=|WzM`J0?=S**S-x^ZQRy;BEB_a_010%g(%mT#|6W{{6pUc6% zt2$a!fq<+oN@mXq(UfDrr$#zW05gg9G)Tp??*LMz3&AoURoIKJ?VcB(_Eq2hBcIN@ zP{dRyw?cIIcY}JNaqGZvyeimv$0pFg3F9zI%imMgy%%u5&x|p0k`mR7#*3U>u zr*vwBPSe+lnF_}5OpG%w%aA1Tr*h6pP#@l(30K$Y&mPqUu0%>3vR*bJyMqidilB=SUH%Su#y*g9mheiF84v1^R<{`y-SCKkZdX-tzJ;~NA> zec48U!5&}O+lv!q2N*gQ*nx>wC%?`RWu0U!kbi{&NFRZ)-B>sGVYmHl9#Amdfr9Is zT48OYrkteTr$go994sj6-6Z|`t`11tZKN*mkwoJXR@YbJ1w3#hL~Cd(M!u`{S3cSEBAp z`Ft(m`VT<}?mHetXmm|tF6n?CH@t9<3+P>`<9SSxC#V;GQ4#F7763whgNd{N^o@#O z-Cv~NkCDEdiM7hR&&^|3_&&Nr37fK)GoQ+!a+A~kmHr$GNB!l4=n7Z?YMsOH z%O9r=4sG4Zrd6>u z%xWppzxyU0*7d|AJNgK~3Ve?s!G4cm0-r^bq8(29au!C^wr5@p`{715h6&kIw$bE> zbK34v^4|cT`jlNT3#v4@M*^ zKuax{V%vl0f%Ln8X{9bvNBeYOK?q&hF(l>{GA-L`lKiA>FD&o=eDbH{dE3EtSbfGh(MduzE+3XBC4q^Qe zFyQ^&0cD*PVXAV=$#M3QzWr(^vtW{cC;5j{`uCW8@zSyX51(cG9}cx+&_X$uUD)j{ zgmxMS6lfu#3d6-VDPiX=x&Xby0UB64KvkE9+z5HTN<0LcFdXa>bA%1{dI3$?k-SvdYMA0Y4}hZ1cc z0)Ww^NJwpUt>Td@gyXSU=<@bdb=pf=Cegs{cSC+`IM1Ls(45Y6L4ZW(IRW9~r z)HRJwcGbJqlzH=EJH0;XzF*b8Z$B?e-$ch=l=*Ek>dNEqjgiVi#D-5Rm_h-JLS`h? z_JINr0{4OZuiw0)jKw*%LFwWtGV64L?+ZW189MTrW%J>C`FsF8N)P~sG{UDIJ#E|p zg6{itS2VkM%I(W42K$u_R6c+()R6Q1Wb?DjXl@q6u}zY5@eii?pWDSE!r*hKD)xb2 zCLBw!%#iFlO7qj^p@SRN2d2(FaK4wzLu%5|PB; zfu`pMgGf3@-E6V%vr$)C;+#_0I|Eg`%_V^*#M|`@fysvIfJl}8=Fs09^-mm8{M{M9 z-jo|nyKhD^)D@(2S+_`iOXa+v~hIC4Q{sp?VRMib4#~K1kv=y4Bq^7NDK}>AFG}3IG8NdZ=7 z;C22#0Pq)od^M_oHBSGL*mtMTBO%h(4lzL=@ju2NIv8?)x!U^-vU)@v(}=xvCjMqU z!IR=oDF87bijnNw3Lw{w#v2<~6T_%?qOLAVsx}2ymzP60%}U*hI(`#Cfl+x<{^4*; z21gH_4p@-7kM=+EL|9q1mfHrp6}N62rVw4Vl9<9?p?zR5Z)Y6jbf3=8EC%NcY)2Xn z4OQ}wwAfpJzS>a5A6D}rVnLltk!}#Mv)zcd3-FeKo!&GbZCYTz@C<=bNwZ_`mvpR1 z700SNWB4s+o1u*=-KXG%U&`gSAs?%3NEb1SvZLZkzc=7!`?ml!7J#Sb30}cRU`|cu zsc+)?*{*L`pHmwAhX1DdipNekP|0Dnqx*OcOYQ`5wQ~oqpM`?y^4}Nr*Xn3I$LpA060d1D{1sbH>$2k1C_<#YWFroq4Nly7$ z{Jp-%hD8+dKNA4kW8L%W)SLCX_XZTW^*U7P$D5w-0E<8Ec_Et8!otG8mNkJ1oS%i7 zjTvMn=A1@}87d25yzgd2Wma_dQyXdE)0m$24Q}e|U|cDofocu;{~wL>?7V`7S_iQ=}4p>qH7> zmLF-zUJSd*eqvi=%G){K_^xqMWVx#CF8+P#0bJ2mGSbb%-5?p`WD+zqN+$< z*zuF#r-2S2TNCFJUePaeCyom_RH-bbdxev$8Y)+xk!I9}MC!&tk_&GW9k59Q2ylx) zP>-6QWE2OC7wTO!zzlRTf&d%%1w$`6xdKFxi;z@5M=T~ABI@4=5^*F#A`kF1E^sE` zsiURf4YuDLWMI-M+z(98AT%4lvh3+^AM%-LopGT@TZYQdAZ1tXtN;9$J}(nR*FjcV z(R{a_h^PpYVy1GCSzUy|m{I`bd96BDSx(D8xV(#sKcQcZ0@&sH`4mEr2%acFbho{U zsrz`Sbs5nufXC@Ql-CA;7Bx;230y$uI;ea;Uw}b@?lu5Uqre2*`mp}R{xMfJQ*Ti- zyASMm8_gy7Z&Q{jKR~pB7yPhn=7nzl=XsO;!juQ*LPO&lI=gxMOHLhm9zh+&N~@);9CL16~V1PI<2PbY7+Q{Wo&w)foq^-cv@DWOr^iEWi!3^6WJ9<0qh6@w@fnxV^~jkb87_e?dQ!~=`ctb zn-d9e`f$#4SmZf+fDbH8EB;HrKqM1J9qf4v`d-fvDBL{QPcG8(x6a|mJj!6c*>+vs z>ggQXE^pW8TRrxe?-h7q-OTzYM0(5el%lazHN0})8E=iHQDiqwvQ2-TjLZRKk>G*= zG*bQs3`t<4po3Y}?VVv#B9@wRxD1YtLtyk4H4tcAH}yF2fC51f=w&?`v|xz-N18_k z?OVG+@ecrB3CIx#EQ$rXA{WYeUw;Rsk$EH6ztfP;C__V&RmrEGSADAJrpopY|L)q4 z@0gZ1fB7$aUJW|GG`>@+9TMV|*$^F)3<+qM^k{f+(Zu3CCz5xeqCtT$%eE_SK*{Kh3N>q47c9J7l7DpW?Kr@) zcMJxg3@AY(8A?|ivVU)t?+T#cRt-kvY2p89V;p`nxI}bXzfq^|xhu{rVG(C54>;O* zJAeXv@UXy@X3IGOiR&9i5&?jMk!4%g(EN|l2<6a3xc)RBermA&AeZ%{(06jsZjL+} z!<`*vclj#m{F`Om>Yfbqo6*hf6GqT;9|waxh?cJEaY~OxA-YfVj6Lc`WBfltPSJ!2joS0oVXDc%R+u zRZ^sPyiFiS8AOQ!P`~-wz#OFzsU^A3mB4(xVv-bbK%b%^VoRI=?Sf!c+Rc|@>?_za z^GNDL@>l+#&cVgt8ZbP?n=hrLg?Sx?tQwV91k?TEw!{e?Jx}9lWh@V(yjK2`tL9F* zvoYgrOca76bQSrxLwoJ=qzQSN7;cULrn~9hPOsn6{_NvIt9)2OS_N(>0DPLL7m(d$ilWqe?4D*GkJD?A^V%eebXxJqgS#@IHBj=U0$F^O3 z9A!V3MK|$>i*e&{cGf}3*^AtlWMelpWrtry39xg0Gj=+?SI7!RxOpD4X$%eXDJPf4 zAQ|}-uD?O0V*LrSxfmn$EvPNn9)~tCC^CR(dyGP~7b6B3SfO!F^g}W+a6v!=)4udc z@fpvuL4RAWQ$DJ{H`{4?ekSiPd%DiPC}KriWybiW9BYUQgT=G2k-@UR5pr3)vZ&Rj zzoU9+VL}10BBegDq8H&)Wuag-IUrl-{E4|HeFl9qfzoG7fF3L5ZXBmx;~xfx06NhL zBLwncff*p^MDccjUFhn-3VK{ zMhH}1ptixn`dKAg;t*fu!?^8zzSvJcTLe&KldT>l%ok4%-?R%gmS=KFV*52){hA5r7us zTOa@+&pyFATS3deTRqLc+zybUKq7$vE6qsLRR)0`AshglgEAmWQ6$i(A7}I{t-CRh zI-ql|eUSOi4pMr=FX^}~lO5?zd0fUP<=*mk&tMC(C3C|$lmoWyDO}YJF+XU4F>4*Q zk9_FP)GxMy9VT{ZJPv1&u%UwGyMYZIqFg(ZKN}ppxVP)&`BmK#;Pg!$vP*Nd3!TXI zIm;FGo1Jn4y{nvD9=GI3qppSwr7Q$#!RJ|HnZ7kXi4<$-? z5e&d#A(7>*UGU%zuzxy%Y~A0=PyN)!iib3R*`p?>8|uMM`wa;2W^lR*h`lHtM9~gc z$QLMS2L^2wEQC~|vy2LW%V!0^pc8jHvJPeNs{qAa*RAU8t~>3>&XjS2PEv9*}_#8tl#+IQjSuwk@cvM&;z_^--^`Gz_X3fC!W7O7(+J zjI15-y^Dl16LT@z=d0u`1`v`Ti*M-at=*n8u{k>Pe#Q-NBQV-pu=gCh-U3p_TsT#> zfGb%2_2n28gJC%XAh^(PQ-{fI@yET%j%0xG;`jg;zrr-vbkAhqnouC$$!}U${tchE z>EDU=7x^#pQ@0-^Q-$qBrJF?>vpRK{_?}-pAbiDl%uag(4x&+7YHI_OpPXozTjlCK zIuCwyfSSzsutM9id&XkbujPN~<)cd$u$bFyS&uRJNZSn(m-wlFM>RC_|Bqr+w_3fC z%}!n!449nV4oJAQ>jfMrOjvC>*?#rB*6~TYM}R@CMyswdeKNxJ^;t~5Dok3nm+f9I zr(5w+j&%w-Byf)%dTUnv%L=`n@=D#N(-sXU_V*`#VPK&f52QCLV~TPTi*qwy3UH2T zhW)}xpp-|tw|s)}86&uGRfV=YyWmX#T;(dguW{gU!}$P+n1Bo;{X+Ir0aKB`kVXwK zm1ad@eJAjvn^C*RMVYt9o8K?#yLSq7ut$CMOCJ}NvqPucl4&ASX&bM&Fwu7ufDH;j zFncOgFj9y7s!+$$y{4Yf$Y+u&g_8kKP9ktF>PRFCgHgQ_izXPEg##>*(jN zD0#7CxVpR2*S-I-|K-*HRZ4fhK%{!O_A*R@SCm06rVGME!f1{gAU2#Q!c2lj2+HoN z2qT zZX(jhPMf>EqQ+4LG)7}LsNH*Bp|QoXlcUdRAw8~)nF|mCS)_BQ<=_wB8RW3b@7H%z zeJbrm5B$ET>&P^*OlA1+TPT2bQu{;!+=!0FPsklE+0pd5 zY|5l#P0v5r7vI9^G#})SIOQ{Pz6{>f75HjY9Wor3CsR2eOUU8>wbq*QChX z5VR?x%4P5qL7oJr!be`c#|STF>IDFxyIqmlC6?X_FhJEYfn)+EO^i7 zutyi)EjJkV@8W7d93Y6NdgGnv#d&DDxY8V1!pRB_DmzplU<+M;-+ap4X4iMfzY6R+ zQiZ^om%ME+Wu55jkfwQp$F@W6Cn|sxz$E{BdIyEw-A1v};rxT!7x19qvG~2$#(%Vm)H(lC+7RidGX0?p)z+H>|6&9yTD*c2D+@4O7cn~R zQKyBEQ>P!H=E+(Oaf(PAZ13CN(E>6&(t+DhoDo6mVnc(2ZQLJDi=?8tGKE-DGmr+| z;+%=lTaGv=0I0I~1Q2Rns3qzQ-f%8a)t-&X(IC>zf{b_>J#6r=Ih~L%vtv`!9QLieCMF zo2WW-Or&oWfMww^tIBX!qZFkO){=zEO@NkIt|v#SlYdF34sgcr6W9k}LT?|PN^)8) zNbHCpG=R4U_TTpy%y%ssdT4!J0d3}xD08D1Uybh zKz;-Oyd3COIRagDwe18)>_o#Tcb!3noZ`*=k5rn0{MB*&cK`wS_`|#JPXEvHZ;kw8 z10Z7o4!WB^%(8O8x)(@*E9Y3yZDmsd1~QDHnM52qa3dst17kI9GinGO;&8?^uWWtk z8fbt#sDIKyf&wVn=a0a)hxKo|;UMTd8vr*~+3WX@Oax$%p!dp-dU1NA`IiT-W6GL5l+9!8}v=nXbE* zfPvHR#<7=rK^djkC*kk~IC4^9q9H^53IQJAinh{A$+#g0zBrQ#2=#%bI-WGmH);C@ zBg6y_lt=-jc^!tFhh!&-e^6Z}3S*vX00X(#-+DRU{@CIPHEEKOn)cEny#N%zI@-?N zz{pP@)=SE%@0`34a`(4Of;_Yk^^(;n z$Qx8-Ya9;tzKRIotpaApxofwbrhoehHm{RrC(6JP%cCFL#b0S^dHk+Aj2u?3t`yAN z=aK`tJ|&huQb8N_oq?}*xUdtEwxI{HA(ayipq|R2`PeP9ECLIA?8TM&1?>EwSn&x1jToOKoOIs;zNj(nWI<>p z{&re@T#ZxnnqMf3PBzN6*jrm}4~X+#4vL}=TvvE>*jW`z(MNE8LErqdjmV9*65tsJ z5J?agaHwE3(ySbKwxM_yGm)oz$3VfSw%tJFr$<4b+^@@E$~;qD%K7EI-j^*wwh&{{ z)XM@}R*^$|GpZYkKry{EZTc!0o1R#1=SUqhdLEN+I!8zx2&GY~O5}<#PRo z%AnFN+5DJBfG$jrT|AYC&Zs=^fZEgnd?_y)bTruRdBO2G|; zV+$EdTY1j*tjqClHUEd2|MxpjRLHAq$Y1Cj!@+#J%-DRSI0w%Pkb8E4h{5s)_2c#d zzUnYXhn)Hjh=#V`-;#f{ z-`1;TH!HWp`!+CFC4i8lOPh0{0u_;&o4$cpN-sP%vXYwflMnC}bQ9gGd=U*w$fpdIgK;|cGXGo|1Y;IsN z>xEQFLm-f%#2oZonP1x3%-r#Yz)`& z!Vug&o@?Je5Io&L5Ma!&QavB?7hf`(qf(XwAW(AR8D3MxyEXEL806K{s|+VuD(iqw z$cx@`!S6Qz|BcV@nEs{w!?y`OpXy~-LBQDs6e#vTSG3tJ%R=G6unGheqV@7rL!q1e zj^Rn!xkxvW&{-k)-dNu#qGKAPZ3o+oh_n^ptmZF$8KMim>3*(Zt&+RI10?4UgMOD$ zzj23sz{xLwgJ0_7Hk#n>U!{F+2DTX7@rldt3FNRr0y$4-)81%(gLyl7YPKSziQRNQ zXYGaGCIb}zRd>eIo<(J#Y#SYQ5p8)0wKDCM4`sO`Uox1QnKi^vZ-vT0LMI1QemMt1 zo$Qarc&3Mvh4?DC6@Tide-XB9?|^c#UIid5Is`pDPPVQ zpBIpG^Fe?I$Y36eQcLAHzS7W04J9A|uHsdD^}8|0#dPINIM)H=oNROg3R>OlxjbC- zTM5#M+_DqrMvBZ+v9}SJMKOvMh>*4pz_|f(e=dE`r-mb>WP6nlqXE*&JFNIkiZxF; zXLRyfy#tpAyh9$WoG3J!(5z9~V@->{YySV6pI<%wPo_p!hY>HhD3{A?%%QaNE!qEG z%S)Zaa^=}zzkq{oWvD%|w1r@OPmuu1AHyq4S(hc9r1$@-13D2DMbH6%2h9IjAKIQ{ z)$=0_)XiSGjfJwKta+!nZGyFIDDP(s)UID$Uv75hOC5?flhg9441_2*1byRCQ`0_s zYgW(8>apv0hQqD+iy~fM&Ku#j?%!;ileQ~SJ)!H^O<({*T25e(4}2s6k=GFN8w5brq5;14047FCc-dAP3R_3|RK#U|$aUN}C-Ybk6YoN!{@Zf(g0o zJcL>S9M16ap4-Wwg1V}ZMy~yP&tc%4Z{s>(Ea|#IJkN*AMo<*D1eQ6UFSy{d3I)reh5l>N{pEduxZ~yk^XQzMGP@VbjL%E#i>IOCEoH_iP zw5AK)LsQylGu@uo^jL8>0Pab#@*#a#*4{Rx4j#1w6dvsUOX2`@WHW+6NQ_pp?eHIP zy>7#!I-uDiNj(@9}nfb;7+@w@7j4YdSBo(8`=^d^oi^Iu2IhQaoI6w z3a$ekNH7dib(^Z{;8(Gs+Yo7-5A+xff1>dd%{GJm(4&UK=*&3iquq5{^eGRdgP1Adq)A|Ay5Fu@)o02a3K zCqk}JC(E-mcpOa2Oc5`pu~!OYQCio9c$%r~omG0)q>^4zxewPvFg`3oKX-1bOq!#%b65HK{_ zD`-?GozAO37yYd8pMCy7SV(t(Ex7i}a+=s2=E;RW~paM>s5rXW?eZ2Z(1`vx<)^@>#yRDl6$ z`qzL$ zD3e!B%tgCJG*8)kegR5$c?6tT173_PZDcsHZ?X-@W*L3uKg#(y;bxXr@)OCvGVRdE zVD`w3N(aU8p%-91ZXf{L2-nuA<-#QX?3WSmCiX|2!IpaGBQWt_9Ql_S?h_w%Vg|dU zQxn|JOpq`7>$f~F3ch?$E*RL!#XFtWzYF2%ly_l_ z5%IVcvHO+JLa05AM1!c6B=s&GE!r)@;AuH42j^6we)Cvn(z*c4!zzfd#ur2S7YM`- zK5rvn9^2;xK#0Ss|LnIthjAU^o&P@_*P->90O>Hmb*&ei)Q!AB_XLRV863(75BB;8 zBU2pC50?W zj4&@K3>&%ZtW8|kbYygj6(nXuTYm;9=<-jXLR{Ma;+(ub@qwf&$9!r7JJ*Z?5=>oI zkiv$}ve692F7zv`X=k7SR$U_ZH{!}Y7{QV~V&-A@K0WTcbg|7rJ!p{gYF#dfux9jr|Pm@e$)!3MU{ZqAz>5g{GCX zI6%fbhxzlPx0O`>!l;0y&Qo(f*%&fbaOX6EQks@|4VZJEmXT1%$xutw%d5>gY5+aIjMVDN>0PHR_xnh444K zX(H-0c*@U<$NIb}$B5IWL1#iw&iL)=V6%x)IITaV^G6Lhfg2O;y7o_wN7MH9;5I0; z96%%*4&sQ{0n{7*d8PX!o{^(4p*LXNUcy zjZ`KQ#Tx~Xw+!U>-L-=;5VV3Ci37^--B)BM`r8D%$Z4JDAhl&p%!l~Vp)3_ukXQO0 z#vA#_FM09I3Fb4j#sLT4X9vXQEvEVcwik!+9^F&^sjIBWnaD$9%2xyS+>jMCf(%X^ zi8+|}(e>}9A!Yt|655&bE~WXeGyngWpVxl=?DXGZ#f|u<-@^P)Jkr|HkDYb(UH$ff zDLaB$Bbc|k9>9yOTV*|-l5T&5&Ovc^t;o0D{+hR7J3|QjKgj-f^DjW48_kJ0Cb;S) z&E#ly^~InGqDeCW0OVM;gE;l+2F<_No;M&S2C1H$2bRbfv_d>+)la|^wpPTILYUUk zz(pesPvvuxAayv0`!;HvjPP`|2JlO_5YC5f@RHx< zDbK1YhuhXXJVeJqj}i@l*9?YOAGZ{V(MQO!q0QsT;17>~&g0m833K)4SkT{<5-jwcdBjt60s2gO%fRy}JP?ryI&s@4b;jkps>23N zrpkF~+hnIqj`~#Z4IHpXdaL{|ePMvWoA);j%nr4YVIZ8MY&5Jem^u}u^R`l$`}y~* zMy+H~`ot>~h75U{2NMe3O2JqG`ElsQAxY@C z@A6juSoCj*3FRKgJ_`LYq$z)RfR#<~s0rG#vpqS(s_a*p`=p(>v@beC_4oGuwSLa~ z+d+a?)9wYOoPdGO12&=PMBRngl}V!%04Ogv!H7_Pl0h=n1GW$p`EMBiHeYvSQS%__ zY#YS?{2gBaZ5=m0fw^b1mkB<`GJH9H$<3dXKn*URO$WbzQ!B{aMZCBEW&R%>DY4BA z=KzTviS29&tXAg)8RaSSzo#<;N*@UMMWDa-&UYR>*XHys&nasa>_h>;m`1%~u(nGB zISlqBZ~^|8udlR}#^k$0+I$PaIUhhB9$1;lsa<8rDCPZ`v~LVj`d66$|CZ-hP5+(w zZ!osZbCXu)8IHjv=ABQ@R^G%QV0?PY_>6ql@N7gGD9S z$T{4jsR`~I09c6Ei41^n_J+o|GQZMpdx30y85Vne@l`eYxuk^DyDJ(fkkNEV6wr}z zm2%z5_Fv*`n+Q>+L)-9_)Gtdgb$#u3N^PtT$|(NqJADd$cQX#pPOq}T`Y0OtoyP7} zU%WVRpIB9$*Klj=UuJ2kft(bxk-}2uOEk*NnzTv*5M!Z7H4ziRfH189a5X=;ebgqg zS}H-kj-1iRfdb8pNJ`bs2hg2<>b>J{20*kzz@?pNfhc^COGKUsQH~W-JL*mv4~H^qgjwz|9~8*LGHn+L(U%I;*F3oW@66%(wt+;euQL5> zKmSf|=deGANeu7iPGA6l=V^T4#PF4_yDlvA#npAa|2}zj6 zpN2a94*J{an^GUj4fw>g{aN$>fBE^9)Bg*=tYnY|U72Z1vigqa#i-vuS^_g-GR@a71}Tq{T{PG9jtR<|>DEpg(o6>U zgz8LXs{D3oYezq8B<)j&W~#?78aTv%+^*2$GNN=H@wcapS7~`Ie7ylHYM-D_4(_TW z85nfVz?!17gRA=#6MteI;`b^yEdtuWf6b61YRJAuYD+K;!E#JW$G5?U5dhiup<}x6 zWJ$0j6T+$FH@F|w(78TJzNQ%|1Z~)wxwLh(aFm>N`KL5p+HS&`=yS8SKAD;Sl&3Ra zZ+Vy?-gHnQJ1+{-vaobVuj79K?NA;V!~VE!Y8UH0(*)=_8+fzhZNI#GnO{hb&sMR| z3;^xob0^doTS^!00fBm~@`>%}c-aoSp7x5Xm16FN%FiTJ?2)Ftpka)jt#(~-4|p14 z#m3E;JF}%|EZ-22w*^FMkBP$t9p|tw%12~5#wfmeVDOp1&+P)94z$E;z057GpJo2PxxT;Z z`NRSEHMPA?|1T^u9_40$PR2v%hMN`C@ufAq zJ@{j79?pMDcdJ8{cYC7I&oA{VkmR?30xpE0bJ9BkO%nk*=ugDLD#5XLPS+tyodN)W zlbNEN(ua!Yf^Z2iO@dIZ{9oqmSN^uM5?l|E4dLYF6s2GCI5l-uAYN6NuU)HGx@iUA z7X_eJW#dsG+N}cYq>H=?bCTQDSoc9B0M3(&(wnW}g@dXt;-8$gvz6=|=4a`Am;)$8 zZmXTWt^4pS%jW{PS`OPqd6BIHcEm0pJI>|d4FMrJv7Q6Lw+lF()UT!AQw@B%Ap-~) z>i_CMRsPicrOd(3?0a#z%hcetKIEHi+EE$%KXP#RjHRIWADREIfR#@jfS+;Xf6F9# zt?iTP{|4H0=GbKZM>Cz=X8)UudYk>bK7KSTojv{uJNQGRI{&U|TRMc->-$@z@p^s~ z=f;I(D+gQ=@YUG0fup*z`R~q7{PbbMPlkA0-Z95_z=(QxOUvzPJ z@GUNy$3)pUL+tN(-Bu@ropBYS{2<;7kr(QhCowe;`pa0ivvr7fbx-ASBAC7+u9FWh zKzanwW2OCC(oy@AJQ;I#oR75^GqBEVh!%~s>Q(Wqyse`huq%>16&k zyPEa#_u^1@&ObZm9iPRJ_C;rgDAyl#{I?%vIv5e`J0|g@)MCgBgXL5PpZJgElw;T- zP2qXbr`<$8KSgv0GZp!#u~XognooJ&k4A6V@Lu-kWC*@Zq^%~8dtNie!vXv0l)1`N zidg~ZEdX_;xQhnJ`79ki*V4^x7JocnhS+1h!*rnztWx8R*c0(b3Lv91H51_T<;Cs8 z{6bKeZy0cpgUF%%XO8KOstOcP`5-WSU?4j5>RLz!aQI9B-j{EJ&!F~Havu6ff3KEw zs=m`)lXLb{;_sC&yS%vLsjw)5Q|Pdm&cjC0Z*L6*^qGeSvnqZwCGwa8^oBb!3;@0o3j*(D`XgB+7BIGp0H+%1)9%cRqpIye; zNS=PUD7fv|E6>JIUR>nhCO0PXzsk>T5MGJj8P_-GU^2>8pQbdQeB<}GHhUuos!!I8 zcc&#(8RIxy8p6=>)K{Z;b)4xsIw_;+)_$g;MJ|VrZ8io$una#A#rivf#J8XC*k20ycx|Xs0#klwu}eGo`w#W9G+GfM9=N9Chz?ljIN?`;XA`9Q z2@vp#`gHXxHoQ~crgT$Zr?I^07aO#~^u3f5HDBqE9|yZ=5{&bY42wM}`o=(c zf#}_`)s$#JPI>1{2hpH7)=*hkCBTa_oW>MyU4Yqq*BxYqQd?75bnkj+b%bSyM#(?# zfmQ%YH*Aj=06LePNuiZd zh81$oyuF|kAqFp8I{w~lGe|vpnEzvQpc>(w@>$ib6U>_kIw-U5jQ{s1EOz!2e|!Q2bcn~z`;u2}3F4{c+_HCqNAG(M z0BXY-O5*x5EPKoMVvec5yWUJd0;|zifZ>xTwfSaZ_~q|-_^tAP*r_r)#JZl&5SVhu zFaj@~>x_$UbgDXAA5!5HUGnNAJ8++>@71xGoRZG@u}3Dl_07aMM>BRIzA5Kpa;QsR zAm(NNJvAPkZ)ij@*jLiVQ4KME9T*eM*kB!LEO7Y+V?22V7PBap=b~L~#YyLuXII|- zz%=pf*zfT`0LFDcjLRivMj(I<$;2a}$1$35>G+8)pAO7aX{S1FmYNSTtJ-;czN7qK z_0Ws2&F%P8z=KZ|d`GYsH1a_K>`zevMer-M;^XoOm0?NqZ1aX4?z+AUulxBk_RVE5D;2%4_3+EwEg!^-$D|MM0B z3&CRK;O%l?sLIv4#pj9A3EYm5x12%uT{ipN2DGmv)U?jN(OK2S+Y9RX0CnuuSRxRh zIIbJ>dV2up$)JIkI*s!7c3AA%^yT5OSeGKoooX%0a zwc*x|Pf@2=efLQlI9(^j9e8kawAMtPU~CS3jbm&&6uy4rY_zPIFj7&L4OWK3{W6ZK z&oT{IQM*jnyo1(P0uG3V>31|}v0zvQ{3Z~E+fAE3F=W{wdcb|)88M-)ve>EOSVVNB zWSIkRp%ua7cyp4v87v-TqXR+xA-y+sD8TJiwr`F;_gB?<(_z2$nTY?1nJ_8O?mfJD3MljCdf(~iAwRo4Eu${-g zOyC$4z^ikJTLe1rK<$fe#UCB1X>4KsPpUMNE#0OQVh3FjfAmK}6kM+9$-`|t1+1h5 zg5%+TW@|6^Y0YseeWzc4FCZWmdOC}!Z+$#z;3Lkvj}>Ax%&d0sin+e zDWWdK--Y;l<~t*PNW*tg&u-{LdvAKEX;d8gw}2zxV{8c^DAQKZEhA9*6cvEc1Ncrx zoFd|(K!MSj9|$si>$Vd-10I#KZ`1$H0jN&7Dr@ph(S++vJkF=gn3v}h|NECbH=FRK z;avwmF_oJ9KVnM!X@P#>rf5d+WmNh({k`3vyq~~;Pm!6Ir*r6ikQPD=QiLcx*E`4W)fG#PRqd zbVy*L2ek#u+QxY2tPE&&8WXXPIsNu&8HlV+uNEWs+2HUtu9M4e`KsxUqF2YWs?2Ee zexd`tDf1H$z(kv4&|@#a?VmbZc0}a{MU$sfj8hp83IOGFeNWDdD%;^tTvf8nEPsal zTO%tryn7j{7(Vd+SY&=@I@%+nF^!cV@JAB= z*ZE%n2niGS!&1eeBVVFh1U-$8(@+)KjB_>O1z#On&i;vONWkX`R8CgZ$Sh#Q3Qj5l^Sc_V=AF_ZG2{#Q zz-I*~{O@ZUhcD-PvyA?o*~+2r(9*x&V|fYan9EM%HEb`qMj5;w>7Fad|Kj^D8bQ^m z>Xzrz)ORj;%f#;&2Y~rH(icx9g{VQz1IjE5@m-R)E%k5md`AIvHY`8NMppH>I#iGg zdNCZkhO6|-aqUJ}X}YfCL4=ypOa!yXG*drs-zNJa8!Mg-{UTFJA%Dl&R_&N* z+dba!=&dbN-JihiKlOxA5~^X?i5r0?B&RDY`aCX(i*m&}YRi3O`Cs3iz`!~kx{>(e~$&pX0m!ar{2}vx(D$csb zBMe?PfTOyKO*wdJIH5AW9teY-H*+1F}J4#Ll12@(n z-3v8uG8dP0%C1ljM+bwww8J0j|4y54v%#m}iwTK&9S2p`EzPUb(DgS4W)5n9;VG|q z5}XKD4m+9XNGs6EA860~w9AS7-J3DtKHz@kw1Q7c+^HjOS@Czy3a=#I>|Up~vhT!w zR+E~%-9gZlEe|y_shOaIiaTefbI{}R??j)e9DCFoo!VCzi}M5MWgRza{@4_^?VA{1=Tcws}?18L%?*gp|Fx zK`u^qXGhT+1<*Nm>OEdPr&fSdtD+%qX{JXJ-5-S0F@f5Lc2k5pj zJ2ZA(G1w0`Gg<61^7ep$vemaL{}pV=Jj3otzk;v%k8g`m&dN(vfEfBjncQmK8>XhK zvRowQaSL4z=2Wi$fANf3%|~DXuN!1SeY%xk zx8ZiLTP;n0SAf9{I8b?Cfdt*MeL!pvzn=Q|Kuwn=IU)*-}z`c}!+(e=04 zUyk3O?ezc5H&LjTT!M8}`P+K>(|2wARC3!Tmy`HDe)yIJA(xZuwl z5Txq&i%go}{a2l7kL4Nt?Uy{(Q zHem~<`Dyv5uE&L6Z+Oat%g78M-;O#2jnLacu`j}6Mew2sOqBK8)BINjV95zoE5*|u z@#Annj~do1;*V_fI{!nr%6Yn$S;xJK#s(h}J4g0YxL))MyZ)rUp0PbQ1-uym>%4&D zbh$`<#tY>iIY6yI9*|&m>Vu*OZjZ}0YC0K7{LPHUab@$tLf28mzv)JqdLx&=F+b0> zgjw1Wu$}znG}3;4OKmx2+#It5A{j&tEEOGJ0EF#2jmxKZ?s#T}rElDjbX$cOs8yB( z98M#ND+XtO0t)cIl{SPDz&xL9XW+<*$MT9KgB|XWLP`DlqGZ66JYsn;HUum1L7&qM zqd3FWbm>4E6MdNa5nZ{B_m`|8*z?GT;$i4M8~IYP3ZJ99BFr!2-Oi9~ zAz=LHa=Hf^V_|q|6@nFo=5Z#h^>^Vj7qTua++9c1wiF8zuHkXYH_2Zo$AjNB(!3iR z<=k_9*6^}D@-wFOp}f~w=~JL{D&x~{f6DWMm~?~12#*V9+7=$kFQ1*^RsIcm*R^7u z=B-~U|HGWrk+lQBN?XAYRh{6a#pnu?3RR4w7TkVycA1|}HTDW1s~a!>z8)xuv_^a< z8_1fxt;)OEUqHs>7c>rH+kmeha=23Y=Q_dti5x}T_m4LNILcG$TveFvbp;kz4NZ!` z8B-4LpTL~ye1K0PNEGS5`y{-O0h~bvvT2e52fXfbg9Ix@xq0A`GuXxq zdf!C{DB^X1!Q4fS4}X`>PQ^ob9+?53fW@$?BW!G^tZ96GvA<=>#=DgTR8&Y=Bw#=(V# z=s*$0D>sO^t#=v9V8oZ>a(Sbr8XI5^cBWf?2FHMH+GyzM4No}Ldpm^|mj%#qK!;>< zGFLfeb*~w-RbK&Q1o|xx$x&by5vN$us_zZ$lz$gPetXadcF`{r0HM;~(wWd9FL_?e zo@imjuUE(LyU(Xc88+^Q;Be#l+o%Al{D;sTOgo1t0@MX#pV<1259Pn%eBfn-KT$h`tERcrSUyJ%5ak;>;TZwP`Tr`L%JRe;{TTD1lR0nC z7xVRm{jjQ`DQOyq-^fHU91{c&tQVn(2l0n7+>S4|hrj_R2eVB7VOgra^d7Fzvuadr zUx!mp*9_L3j3LwEx1b1ztp7cyr-*|EAZ%y2+dhy0g2upLr+*P*x|*;Mi5X`R80We; z^H>2c7z)ac^x-v#5XBoH93}H8DeabYXT4Zec9iDS;YDq-^xxz*lA6_;qcfHNiO&za z@R6j>O|!8h)Y)&vDQL=j(WIT>uhKqfgG)M2Ag(GFVl;?J>I!Xl|NyvJ+m~Ov*W${!Qb@poBxLUIII?9J)AI zh3Pub`_EKXKK8O%+h=|B^X4)u#Me$ zzX7MZ`OhE5c+%&keAKmQx&N#Iz>Vz~Re0Z!F0b~#D}dX|FP6RYKogSh@GItj>)F2e zDWTIPvPv<5RoCqp!MsGg=IG4eyj#Xm8vqXI#R3%8%>!%n@I;8bpSZdxZ)4Xx0_wJi zp#ODwU$+xXLrc=z$ zZ>p5b7qIRX9JtB3;(G=Dbo}16%Y@#T=%U~)L8_Z@h^{oCHiYr#_^m2h*aZbJB# z3gGsfe9Aa2?DC7||IXibeAnq0#=`czPdpz+{X5P_3Ia>>sA$BVgJ`^h8<$ZH+|!*y z{P}!-YkBFm-@kJPrh_Q)5Xn!S|Gpi0I-jOS9``b}(ki-Bdh4Q8Out9GGv5%j9C6fH zeug_0eDqnQ@#Q{&lTSAal(sr>1Vk;U^yuK@ivJB9D4>IAuRCpv^sEPVU(g{gH^h*@ z#w76cw~9JY&bPtJ|7son#^_L<*RXF&`9K?56P|48EdEjQqO*Q9c0OBx9sYWSr-pyK z*}w3O5W<(kL-lr~&H&(d{k)fZ@Oz%`0RpQ1ana8&&Rz$X+VJmGZueeshc)GM866m+ z`r8=*oaYmRT=CbG|J9I>q0FCoT#REhX|OGwP4B}Pg!p$EHj)ldahW-r_6D7>bJH&I zz{6ZMw`DgIjVz|Ya@-l*!O04hH_TS~JY$1w zcWFD_FoA)cOm-lhKghZId(yAmj%a9LqP$O^pVke^k>?KFl;TGU;6V}ccVL!)_sq8p zIEM)FAD@O{pswT7kfhe?&hhR(Rf>J;PhQzUqGzy(B6i6 z*}ulyX%gFICs32DQGVijx9SOZ zK;VmUY<5?a@mR(S>im-rb<^SZ5;Z27^a+8K%7jUjaB!o96PX+|4&h#4KOPSF#V>mu zz+uZs8e-%nFQcp+^wmM-gm)qPv7B~x?5PZN_-{@=es=;aWSgMAdTs{vS&R+;p81D> zwzL&N)W)Ys%54Q^GU6bCzD{MSe}nRnLyQp@De@GQU!0piVgM@9Rp&?!ZG!PeBjivq zu9BJ=AmDRGrb9{9d-c2CdNNHis@2~^p+7rA;P%|~_N|?r6UdXDn#*4%QOhH zY6pgG7ClRfHF#f_K!R~UGa7yDz&jm2sE}tDb-M}yrQb!Vi?agSyLH9yNe8&#H);G{ zes{XcN$zieW~a+veAgR2CcW{(kBYvXtXb3Fj~*We@1@h9D7m5l9?D?HUnv0i*Dvi| zma_s4ep>z;-c~jmHTxs*a{ne7F8LTN;6_bjKTTkM;g4UX02JeQ${=!*-!cDt!}hmv zccFtilJWe=bAZvNb8`63yh`KK8kGbpZSbs9kTDR#hI}S?=2f8pjX-k0{vxNpdoFX& z7BwLrMf`z01-D@n=F8dNtJa&OaaO8fZqCy`Hf}l9>vx{NmkVfk)Dj$4canpntsHY) z<);<@4PMwOI~`mH&SBu+_&yz+8PKmDfKcZPFxXI5#W50qz>ah-)hRUPOYhcuakE3o z*QHCqpBW4)0R;dgAaluaqPdHiknP6A15xeEuN1Mi2{0JL5gdz$$oV(Y9;?&@QVIRw zyY`!fG3$!%a8ka`lz(FzapQxIXu8=qoR;U>Q^t>9g#|o4ljG-2TdjF#4GlWo@0Yr* zDZk6tsfST3;6b#z?i;$uKLs9D@jvwheD&Q9 z+kdY^NFBy<)w$1>z;i27J8>Fx_^QDJgS7hFXC5?15Olx*I{qqsZQ=jV-k&B}a`V7~ zC{Xq`a?N`GJM4%4p(N>WI6$7v(sVzCtdu7r7#u*1&goURP3ht{EE#yG#HqVAiu0AW zlZ{~A&j!*+OLabhQrcZzr+}5~)G7NHLvjn$J1}Jm6sB_H@tyk3#%&7lyZmousPvt) zt!T+UNDO`1`Ib{`VxkOd%1G0tFwju`j%P%*rR!Io=+N;-h*Q5B%_K-|M8nbK!^0W) zeAn4)J9z`cxC9?vpLKmS1^J)Ei6MAN)vpCqE@e!y<_kb~i-|v#{U6(jPZYp(O{j5P zgx{#sD8D5u`|t9cquL6)%;Qz{4)_-H`bhp88+HSP;(;gH??qJd5tA^@KNZfda=%*v z*jpX`3j43VV=`iyY{%HfaXA>+OL2;!oe(GlMyV`Q(BN+K0XMcag7+D#6z-u?av(j6}2^KiNcZNiA4(dNxKAViTBcL=~8%3Am5gM2I@ zf(rS)K`p1N+l+KthS2ifv#q=Z-$(v``K8}~+Z7+)f0F0q9LME54kD*-Cws#83T!Yc zPn9*z`Fx#t!Os?M92 z_qY7JK&87^!J`j!>p-Fx1FW1qF1P!R!GpAZi}FBYo?;q>&^83e{39xV8;%&!&a;>Y z2kTfi8w>6Txuy-l2_j@#LeTW}jn>?^jh(y37L$|r0-|+5-4v|f{NES(QSYM3a|Et_ zYA=3=0^mqT39CZlE(DW&06|YV83VlLE7&I#$+zSmo^{WsX5Q>U2UK|BCmNAERuXI(25*6berEZ*Q2rv^Ri{r*jcIrc?QO!<3(N z!VBLGSI2^J$*$|~&Nop$%uRRSDn3m=N8n~4v0Bq_5F{toOh*yY281}vam`)`Vm-^p zT&f-U)scdd`~U#p=>n<^{JX4Kr#hTG`!3Hxr=8^lUr&nLWS#(yIx`d!7x@p&D9_|E zwRZt2fCSzF^SP6sHe4!yT4Lv`jyrhI`sjdCi%0T0`?a^l3doN=b^xSciA%H5W9s)c zLhmQfQ*LztR*y!z>p*H*`Vv701t@eg2R>b@faPWGM8M-~$-sAX;@^6G*CCyPyUuB5 zh5f3CUjkwEjdJWv7##LpI?&=L;K=LMIU}!SPClAl@}2-3Yx=yCSrwp#p!MWzP5w#; z$f$gI$KF8g$j~QP(u5AvW-Tem5kWcrPDVR&pkf^@n>=w8!r0lg{Cs7o4ErZ?s~qVG z5b7MViC?H33${hw|T4--IriNcE!g(fO11WY8h9zq&qcD{zUB?3)VUlk(`*@3j9u zqzR#8Ldd@l`bjlQ1)tqAvfWUt|8adn)Pd@EOzbJ+-zQ6 zSnzMTZi;rYF=pC;PN1}r!oH#LxBA?C5|wY~5Gq@EL#nwhpE~_7zSXV$lTm%i=k{$7 z-EM;mihk@o-GBkRwCm*#P|H|}I0YJ2Y zg^&g1_w(-<`u&q<{4OrvDhJz}y7?nNbs&U2$i0%;o6hs0vMl`~)EQ4nZz`@#-hNsc^Eu~mHhl4uJ zMPbQ^2tp}zA7SmOZxY?2elPn_be;mkl#{OdP5Dk;Y|+w*^5uGaNB^d-Q#miRoMgTG zrqKDr?>@SIhXUw?%9>8FMge#w-gbOMUTTMJ%$tEU&Igy*BtSv%_P6ApNb*9;shd(g zP3Q~W10e*xtx<;YQtIMU+hilSDNB)w2#jo#YGS%#sIxE zz{T2hu5VB7oX3u#Ef?xS)QgmZ{kW zym27q8@%})b~$da2*5`~U1k}3<`{twIHNP|1tR1itoCydI9T|A!9N6s$e9Yw3rQ~} z9{0j0ZGR}RO8_?9@1FJ>ICNh?RM{kOoq72KdIA1SC;43 z@?V2{)KT$}|0h6=iN55v`K7&GxgpXi-*!FVfZS*yUg9^HVwM67GU|r(yF{8!c}s`4 z8Tm&#g%BVNu*%N5jlUV<9{rZMNIc+s0Sbiu+%v!;zxKUvde{$BCV zkFW12fKLPGup7`+XljFi znCJ^@2xWsH+Xo7O8~UPfo9g~f`+vhrI)I?7wqo2*KY9^irv~(Hx9em)-mupkU>}8v~{({_ssVioEM7^22{zFQnZes#9df58}@d{@+^Tzd4O( zVZ`Z^#g`bMryOCk!BYf;-P{dEz>gh%*|Q4PGmBxgp7XAY4KgrbQm>4te*T@_oJGpVZ%AbkR{;4&l+3)dAQ}BYUZQ+Mv+4YSLJZJ-Lx_oc#c##`x_)6)9*E)RrdQ||bGvkscHl`ZA zl!w#0NHtTyUC4nLb+w0T%IUojl<|7*C;1o6XVOhNuo3_C;wher3nShb>jhMJRRGiV zA%p)J_P^6nN-Xd@6QZKhr_oyMN91$Q^-H4SI;c-+UW~kIv=4-Q;U6X@6VJro5Bj>R zS_jT_evs)=q^E_ z2;e>GbkW7l9s*c~3gV{?4NrCQj03e)A)uU?>Vf?bk;R{uMC>-R52f~gK>pz8_)Y*S z(1PYUfsF>dnr1D~(b8Pz21||)>!Pk{l$}m`u&+G<_EHQx{wba=u=y+jP`Mt9zA01} z?7YjzWeAY2+w>BbCm=1o)aB4WTH|4`Tp-G3gifb2ppgDMPZ{{Tt|>^LzIl26YR9^O z`xabuDD}-zRC!sGmkmaff3trOmo}-o-F$(ro;SnH_3OS<@kU3du70=llhde(gTc!Z zZsm}uAl^`cQDD!T6FRk>0S5&nY?_gSx$4a$7PwY*>J!y}KG3#{5mgzS@5EP1b|>23 z{M~0TrK!)S>0g4IkFTF9fUaWEFakz{&8b9L55O2wGNZg-{ijo z5N{x-B3-H%$?wP)ouYg(ItsTvcZG6^aTf`(zuD^ z%SJ`|Vi;c>hfj$&mG@{HRC7$Iup7&&JXG~~`hE)LMg2SeShkvh^z~PP?rH=&0ZX1i zfFPxjW*x%5E2@%#0otht2JyZ&Da6eR?F9d-?mJz3(h*kSlvAsxj~?vy6u|c-_(u>y z(H`o)Xpp2K?J1DiB}Dn$-o#>4{iizO`?6tV$3I^+6m{A@B7#~9+%ob9S*Pt2E%MTe z)z$?7FxI(`eDu7&e$NB|AR%oK_{H-sj*Co75@2aUZjEP<0-o>h63M@U`G_&_7oE9h zCZr=3cUe5cARnvv@7z@IuecQI+XdY(!NM&s_M5xlA)0(Yt@q2bm%Lp3<8P5pw>&5R z!kV)9yO%)g)u;3iXzt?M5`Yi1nCj(&HBhud8ign$IU>-A3CK_dt2(AQjsmUqOpQLV z;>Y!D{=gU3(7Wra8~twSZhWT5HtB+!PkfVimG2Go!{_H%k0)R>>)WSr6cMbVn3gE%(`5pG3 zSyO>R9gfx6|68+-mXHPToDt8Jb_}%QAaLg;WUG~PZoo|ezFskx`KkTy`rxICH(lG> zf0lnS+Rn3w+B(qMab8Mj(FV(PhLUGpS?Gd(1I`!#AYr!;14;$dh*4`yzc-bG;vu*W zsDHPK;11}#*8wWPQ=QozLCD>|0#)bwtc~!fu3PH%RQG@p>hmqOH-P|YlsqI@kZ6qk zJk2anOBk3MB~de`|Fs@_vydh?sVwJJw#ywcIaMEznY zo9l5)8=^06086R^?KtePX%QR$me!$pLj_{$`P3I34f#3uQw-lJ2fZs({hk1_7{2Ws zL)Dk++v)O)EKdQJu%biG(`ehZ*di~5 ziF9_u8XlT1b~sjBmkvnuv5UgIG3za8{H_9+>exkiqO9Lx|6k;^0|;)q!@B+@{mTKK z{04%Bt>>X4p=8%D{Xg}WLac7`-QC-zqkdrjCl+)2K>jbJzoffek@5!*<=v-+iAoTg~2>U0|h?(aPZ zV$)HEdl!6SkNEmuIvy|WrJ$EZY>1h zf#me=X8*fbSIIwD=_db7RxY~)Xal*iA>}=>(C^xR z)ju&*sRIpCGZZk$X`>0!AP>p@Vp=!LG0)t?I$&^^MtX<(MKj{7>ZaPIh{S*eZMf&9 z{a?qx@yKhO-)3U%JqKi-gSfT6T+celbV_f^QU!dT%k{53_G|*Lz()oc2xwV_!z_c` zMo-mM3^qu#Ie_FTpa@7MWfmy2P7z*>6UH8eqXZ}1qx88N972q?qM+KIn!7Fvjg_ks3ZbbaIso?ec1TpCh^##Cw zDm#R2RONQxc4%y-tZ6<#ERas(oBtD)OR}{k;~rwMu9#81vo-c0xZ|GWjfsgCPmjSe&OF;Y{C8i zdMTf}%fHhv6Ce1XFJ2tskFVdU0B-sF15pHenLsWP1gUlX$m79zQ{uv-BoCN}Q<-*= z{|+R)VJa`=Wj&)thr*f)bcOf>Pgo;_U0!}++D{a~W7S`-Nr!VYxvG+&aOGxIC( zI*;yha4!Rbreb9ZwL&jm8WRuvU>8Mef@z!UJNEyEJx*m6J4Ah?*7vvdp`+tmFq$`l zj<$8@rB3WozysTVv3%g#79sx}=wsdqpb%}0W@f_vEv9WxGYTj;>PGe5OwJ6b1Kc6Y z5=1+si?ene^AFIqf%U|GENZ|{zIH%{q#^*s**PlPBF(qwvRv?#*!Z!`Zeji^vlbe8 zF6RFn>zDRy0Nz;}3t}Bsus-nxm&^N0_)y0^W8te05804MT>?^03TOrXC2exeH861g zo;oXeSl|D*hrsW=7!3aed475KspIaKJW8N=2|A7Jco%GZ%2eM8Nc`d3t}SZtp#wEK z=bLG8bG#>zK-EdTk4wLB+OGclIU@YPFuhg(0}C0!SjsrNrAD_y@+0dztWjq>WgCFQn98@|5f zfN2H)5tsJx5&-HzbbON|%kO`K{3~+af|yP}?D7S3x{3bifF=Aa>p(0apfLYo^clybs%FHZTV_2WFdnC0e= zv(twT!nWbwloLA7<+vDp?-YcU>5TMUS!Z~Wr_MNZ!L|zSnQjv;qp6EE2FnD0#K0@J z_P$(Qn_gw_ld?+Vf2RVtA!tm%F5(g$AJOC=#8^W#E%&|vXB9z(5bcVA9#gQ_0Xv`A zmm7#_Mou{=>d;077^t9M^^yAfA`oL_JoB74dP8M51?!AuDAM@A-tl3%WmFfPaMR#Z zO9s-pW=-(v4~>haUvGS4;#>P%`Tb7&f4e$R$IQwI`;+}g-O#m}f?!-Cz<`jP;e-85 zQ^2=vz6AU2o)L(2GZz% zi0?VZM)EHZAWb?*YwWoJP@h)*F>tTnr@Z$Dl8`x8vg~U@GX;>R0}_tQSEwFed8N|> z?Bt94O`H~orCgnT7X+UaUh95mwR|;|385i*@$fbLb>W` zpM_K2f5#5~&Z{%-Y}?pJvY`*A=Pv;Yf73ZK{QDCy;l%*o91`V}sX$BleO+*9kGy?z zjJfU;y_GL}qt_=uM+|v&e(&gy;bvi?LCWvmo7#{vM}_ZZbu>x=PekalBW{!`wSl&Z zF{a@D6`*0BRC%)>tOB)Y=;;qU)&+wT;PYuPXpi#JUcXBL_#oI*r@0_H1?eiiT)znQ z;wif~f;sSZ3aD3k24I}O%fC@pHt@?BL$PD!y?l*@MZ?tGf6-L5Q=FZE$qI_T{~*$P zwOy~^tg^|S{a01@OP>aOq&E9wC%hD*cpha13Xc~BsQ|c6#s^@nMYT-aH=Xfk+JB{^ zCtdxK{TJ)~Q(r*3pxJdPAcjh&@*|gnpg-DRF%?<%SGRY-%CrROk@-sYBOhDX1g}PE zkT%`MbNub&)g4PXP$o?)UxB&XnGsOTKkkRHz>BYXMy|}E7=jEPFjK(pjP>BO^KQe$ zvRu?A@dpr~oy8))V~~jVL~y8h;K#xjNU8&E?V*2a7fr=q?a1yz-k>p!xNmj~IHvF{ z7jQTNkogKvB-rFp5im-2C28>STf+qG?}T>i+_m zU_C?hMOhPSsOfY$?v+t)0XWyQ1E(Y?@PW^14ZlV6?sj#co1*WOf9D|H0`nU{(fP_O zJ2BAYleRuzKT!Zi9eoqLO9R4)`9WBgQ-X%pXk<;wKaa@KNL%R-r;!E#9$w`Crf0f* zADFv&>_gHKP#yYa0(saLTa%W9Mh07*GEV8? z8Sl?hf(dw^ob=b|78}5_c5CD(S7aWY`t7Io--R4xFrss3W`hgd;olK+e)#oD(Zol+VbaB!@f+!%1sKLK=hF?_$f;0;hSb)LWTf&6`*jS!J zdSRmxkUFNLf&pg#Z7TTZU!BALa@__+Ob898|4AT!D^CSLH$S~|oCeT%42Wznz0>HsSj&j-vWrJZ8B=gR(W1)zT0@SK@GbSI&+<4q@fQ(lsP zYFh%#XrBV}DhsdjKlPi5_n!h^vi*~SxG|>c2UT$;kdv@|il`0grht#raFuUBovQ8& zhSlL9rZ!tM;wetwj3yh8uwptFjz2eu6&v><_v0rDuA$^Ec@fgWa7mve^U}L@iWwN$hE=zkz259 z*4t*Y>Km+Q{C@KBUSa|+`vvuvNdBdtR4fx0nyNfhQ07fp%F*oV5zRL)=+5`5{@$dS z+Hc@+tlz1=e#t1ZHRAr1&MTMQ)S2m_0Fy3YR`l;;O4VOBq`x_w+&?$ownnyn;4>3^ z!_QvJZYyNJQ2}%W;)?npFb2U51w)DmYNSib|0T#t&JTbD*=u;0|65?s={*mu%7-M8MzAnHrUkt+z?<&qXUdQJsn z8?3^zZ^(o){7SiW`E-4&fhea{jwYKjrh z7|bfDK-HP`;a{g7EN}xS0{%Bc;IF+5WX9YQNye?wd}2rYkPLKjEXv;r+NWze52`!M-&NGo)9` zVi=f`({qu}ad%}5^n-XpY$P@TN7nG+)Srs1FTso%jMxb0t#qMZ`c_p)MaVWh391 z-2QI+Zv$JJk~PRUNVfK0(k%s;2@zxq8WbME5lY^_M*u@Sl8gU3U;yP`&B|*7>?Y__ zqsl6u?%nIM08Owu8;0vvmQAVRoJN;vuf}CD~bInqbgxVQF)|a{MF!dutbeGXNDf zt`=z-2Od4RK!Pg%k^b&7b})a+a<{xE0s;zl>K4W)5S&7P&At5J^;@n_=sWpAAAq7e z{mtok2}1e43zBYid@;-~?Vk;Q zpW~$fJO8MCFnx`02+w|IbnY z-UzfkJ}2TtWImNufwhAMyqO#k0Vbrs?A+sL0zgwF=;B@_j}yO5U|-=w8c9Z=q*nm& zK13x)1<+JdA$6YwlpO*xwEqP>vy1-d`Y#4K^X6~Km%t|80FKwd8uMAfK5pvA-yQcL zikJjeH1%P&ofzP+c=qZ?$L0MCDz5Ci z4MtPtGa1{i9`R8BTl>FDUl;AZU9W-KCqT!mtoe}d6oeuua0_Nl^q=~x@=T)$suE&! z#0Ws}3%_=4iVMwEywW-UT`)DpB3%F1zP^ETw>)kEV@JPRd%t!4SqeY}ncZ)NfQ2rH z*VLk8-zmW4?R0dWc2;ID?Ly88#JlmDBIi~9y}s<)*eifX<#G!aS>Z&(tlvdpb#uRc zO+meXKrYo+1=RD(i>a)}0dS)Vh_l_x#*r`RQV2QoA-y%q?^aGzr7r8~S!e&J>ZZsG z0+*7v+8C_?3)=cau)p(EWj9RaG{sphBUt^_(o+Biycwa~vw(iT&H_;Rj6vmOKfV{} zzg`?ny_DFgTs1kT6@N56AvB|F{AsZ+<70T*0lR0+@}v9DGZ7TmKe&-|64Nfuen}><|*(Q4btVeRbh}$&Wk_c&9_}Sp9b&V)I+6Hb?9K(E)VI% zHRZh2pM5O_euwBQZ_-cYOhAG)X}f+xX9K6KMne}wZ!u2rp`V@{=nLJW`OE!zi(!~I zqT!jBAmrvR+vUCD*-yTIy8dhh;6onPq;DL=vitIS4iC_a!N8rpFLNRPaq?*81)Ufo zhayQQ_o@rJ`;I(qpf56u5Pk6q`h23aJ7aT0xjGc{Qto$nzlpWmyrW^)m!K7a)$)z& zZ}w~GJ9dVV33y$uB(pLK{Qf4xU7lT#=Y7&Y)BZC%v8?hA>nPXjd65^fnImuLs5b1B z>;FlJohmKXf!A}~4Zc%-)&%WkboJuMC?H@QDgIpo`S)MS%y({NN0JcvsU|ASIAJl- zO20fwP~NNkD)Dc#x2IplpY1X&Uop|e%5OvffLr2F$@H88VMb%RnJ;4Rs(sYpVE=cJ zPCCV54+sQy7^B@A7AEocEdF0PL;%?HwH$zFIJjyeO)mNm5coG-p9Bz==z=0;360w65B$SvUGVM;4|YM`1RhzFZ`Xbw%IxYi$@M2ZS*|}@0dQ2M zkd=<`T@*|WmUO3jKg+*s`H!JLIghSC;zRu$&3B1B6v(7+*&+K#0f^wSL{=9f-3VqE z1;Cxqe0IBTf#i#9zRG_W#7eI{@_ivsfZk;~Q7}3x`$@*Q|6V|uxRfR8^SkW-t8JfH z314g$7lE%?9pOv>8|fbonAJ$S%ZlW_jfYWtS3pn=a`uhG-R)I){q+y} zm;;9{FB|x*(7PFFN+SzAS`oRN@=a4#_dW)i$500I>ua2%0rI}WbNb?-zVOcr znDJvD>vt-EPS~elUl@Al&9GDu!nfYng#&{fd|@^6PQX{MZ}9O;(?T~>lBom{%7F)( z>~FdV_DKOeL|>DTsH;oUMSdM3@*&t7kMB4p?sUhq{Cno9u|7P)+!(=7Ori)d86~9v zKQWjSYVyDbKe7MzP(+Bl3f|ewa&vqSy2qP9-FQg=zxGD{X=w*<49NQhl*S3LVKpd1 z1nKZ^+Vx+J?zWw%1mo5z|Nd(-@t>Ig5b9)7Ro<8gzDXn1DcBuE9qgO5{+@rgmFU2{ z1*Qc*LpBv_B~oP+k^ul0S8Rh{@IbgTdu9OHe?Isrw6GFkh&{v_UX{zL4$>Jg3?!7m(?tEEq z>e_uf(S5S)imuapRUd2maJp{J@QeJn*Pp2XZXMhaG;+Pz0?IlALh|6P!2#9JIstNdKmRWMIFkII^WUd@pJ0Du5VL_t&v{Zs)M(fu_-vk%Hs-*}%@ zr|({iReGkuq&|~>oGwlduqo$OIRHUC8BO0tqX0Ta>)!igKYikKe6xRUGSz*r`UdS5 zFN~g=w}Y5qPdyi2P9ULWc0qZTnFLlr0Bm2k#{gCqmmSCxSfbVy-?7eG)q+T4}>0)n_mfAekCfX7SSlp!*apZaF%!!D4V z4DiQ(*I%Iklt<776<*V!_Yu*5zteH&fg|xU!is!dHZ2= z=>vQ3GZUiyQ~OWs?cVewMlunzsx#=TG-6MA(6nX8-xP$n3eejl_6+hBU>`0hSH~Jk z9cS~b07v4*qXPSm{Quv1y+GqH=HG?ZwF~^Fr2hpkWmp$6FD{_;D&q4uY!7@CFg)MUyNXt- z@4CAF==w7iKo^{-GK}8G194+{+}W5ZIoZ`CPKV=P#alS3LKL>d#N)Kh$P*4PBD_=RouHC5ud4`i>b< zDZQ>wZwRGQu8-Gu?f<}HymNQyJNVb051yLhWj04yTTIIb(y?INcXp0+E7SQITv$_t z6^MXmp5u}R1_8P~3}h!5^}7!`qBF!3g7d$1ePWu~O!E(vRkL!;;K?(}OoViV zBw@Daxx>+ik-&vBTi}nG2mc*A_;0?HztsgQH-CM)CLeARPKCDpS;TbZ(d8Wz`2Seb~{nEmURpQw7j5p*7zs2Fnh4O3S+}N%?Q0@>C5MbMUyYU1z7N z+x49a{=Ly5uE^gYxheQTFV3^K()Q(d6u_-7ZAfQLdEI+K^IMiCvYm8(=d9km>{0%4 z{%2I4^X(#?cd1DES}#Ib*C1z*uLy!@iArsp>y z^o!u)w=d3`U;LRDX!O&zed=eug72!%Hqhag&V+^dPTx-Ppb1)x&bHTJD+a!p@?zy3 zf~Hf@tmxSRNG1$d#}5j4u;D(wsc2sNs;mFE3b;N0Q~|{ByhAgmF^^^kZRfd*4JzYJ zy`Az|=~D1T*Q@ST;MFa!7EtPf95F<3?Hg{qs*qh2P>T#+(A4jg{{gKz{fh(WO;Z)C zKFfb(AYcS$6rT%#^@UC?O{Z|>=BZor4awJ^Y5zt33j>ReoW*<3fsB0x_iN)X+`J3V z{|>4To&#RWOsASIQ0|XB1D6(TRdYTJGn%)3QXUmYvl5_fk${6!h^JB&K|4d`gYNk6 z;!ELIKQaHW?q%n`n8+uZo;TvllBZI|@PP{zC%NVmVoZY|s_{(tPOo?Q1pPH4&NNoC zbpvEcx z#2U@=GFmhFmG+JAUTxRp)PLerPj&9TiH2Uc_DpeE40)^A?51d^wkSp2(d^bvrG&eB zPl3BNN?Xy#1_jX7w|lOPj{5su@JP|rntVGzslEP81;Cx(RrCV|(DECUQ_ki7B*4Tx z?EH=k|KaDITy*~T6)^KG0Jr$MoLB$56u|T@nugkg@L#Se*1cg=_Q2xSu<6TpySbj9 zmwV1Hd3Y7z*?$DXIo*#)q(U(!(C!li+-uf7qk?>m$Pm;{R$5DYyn*QW0pY9Jw13;dt3^zW+>z}##Q?I5FKR!d?1*o=1d-bevOF*y7D^Oa=Kd} z+ZhU0%-%ff=>EdnEQb>yr7W%DrJ#IG)T857#rLnV-d~~sI+%S@N)01BGa(GarQN#4 z`N7==THMrt>Gycl-~=3Y{GrIxITamA9dBS%u;m#D7)z6XssOA}0Jr=U54DVIwRFDHtu6KneXj3~52o2Vh^8(UDZ{+}Vj5YP6QNA59y?*u^?SHrD zT@il}S=?dUD8R=c9=nV80tndaVF&BmnU0;NU^FYRUQ_g8N5fO)Rbg`Q6F@+XhCKz2 znv497rbe7z&-ydFHj$n~>C`E+Uic3v`26~b`B$dlr_$fKU@!Imw)iU_^;VcsgKvKL z>vO)MA;ybu%6^w15FaX1jwhrg1`Gsb@%IDt5iKxZ1Tg zH~dZs#4Rv15{^!Y;v#%6byR7T?=#V2iiwnC`GP=xLT`WgzH?YzX!$9a>6~h1N#fEM zH(ucUr+m7&vjakuk?7*fXn2kDe?_fdgLJ#x-xSbPr&o-wfMy*z_)12NU7+$iPty(oaro4UECQ-dGq z6GJvi{yWm#^qh6_?*!HmUl|-zg_YZ+AewW;$>-F!eWn<43hw=)SO(AdPqhEtsdy=% z;Qrm;9;9Fe`~kad6KQWl=HD}_=y6z5m>nt+_1^&UxM0C-c$9u7;n1Yjk9exU(kBtXay)ZnffkXP5rRmbQaGf=Z&gSiaG#B#l772z52v4?KKo3< z|0l0c%)fGDej@!Z?rxX=Z+HK@fd2(8F_H0it|_mZP;~g}gZ*z$93-Oc(+r>-+%9P0 z%5sv?mwWKvDFYu|ldl)w;E_MQf*mB-T~Cgu$jim&jWyW{;I%9$62YshulIrycG~Rb z%PMX5iL&XG)=hi+r5@H;U8G%D-t86ZuV7?v6qnaJgt}MXcJV|9HgG<-fvTGkP-VOr z4u9w)e8yI;gTrqS{q)-|ib>J=^_wdJUy&>qgjUGTOK0)#hB4e=x^1KU%BX5k|2U22 z(%Sss@IP#i8D(_(9R=V*Kqqw4ntN-6uu}j7ow~~}??N;^9`k7B zKL+{7z*D)<1neZfAzHZ-YDM$7D4q#{yb+MT>7vPjX6{3l-1MvXdp#4Jt3bzk*;-G# zItzmH10+;{AS}-iNR3Rxb@nxa4~<#tfZgg&;SkU-;9zD!A9^cFo~xa?NH1SZlJ^qm z^)-2OOaHsx%>T{R{Y3h$u?DJ69q7Ya>E`nM79RM-H;U$O_w5wmO@cZ3aS!Sh&46qx zxhRSm$}xy`#x&4u|F>j7T$2kr_3e}vpZ{q{G53Ef;RUGR1OBxeeRQQe8exex6yKfZ0F}2GZ+8`o1T{mChr-62E*jmmR|Q}qz3MyFr%L#zzQ3Wnm*V5{ z&Ies`17!*cJ-_39D-xK*{TKj5DJHRtvUI^zA!N)&-&S2XYkJ3>)jfiU*GOL*LEQbD2SS;W8l8Pfnscz^ZiF|2dD_(4L`sG2JIU- zP?8cU|Db1+Tu$2d1>zMwKX&zG1v-xYFFtv@Ud;b@rT-O6?I7Gwan;`*A9W~|H-A4d zd7lE&@$h^ymnvVXe_MUVmZ@{&uijL!1=1hV{iMve+)saB&^Lp$c1hpGclIG2VtOIg zi(uic!41KDAHa^Ac4*_8vRYYkUCerwHWXr;`(l;2kA0}j;D<@y?&Z4G@fC`XhddkS z>8Z}#hfci3F&7pI#0ln$7-&BDqd|Ep&n5L|2R0~WFvX%b1<>_F=TW@^JU3%ASxn6iC69HD!Ojm%Qk;X%ip3$iH#~ZZbUfQ;6rJ5WDE< zsnVT`c#HN_i14Ya_mJ+BNZ}^GKFE=B8olW+qq_CE;bOZr{?!A$d&h_>S%~fdm z;<4DE*dFNp&}Zr-#q!?8T3NHYVPJ?pq&lpX{=u?>$9jD|jMXm%q!5)|hLCiT;|75R zL^v=28|hw!XK29TS+okI)^{=ys#|~Rv)|0W&1~>Le|^{dcUZMIrbnqg*8YCc@~_^+ zC+}}s>*?cHU;B1_0wTYv*;nQl`K486o}ZZ&)sl+&rRv=U$6b40g|@SyDklB(n)+6_ zj&0orck^4wRtz*!ruNmh90xRn9~j-Youldxf^w2B_<=4oFaC+Be=cSEHl()Btz*C!E=2qxRn@ zBl}1ET{qL=yzYs7Yn?wDLRj*#cJr>if*TDwY+ZOZ=rcHJplCsNYUf=6m z{eJ{ke=VQkQ{kLk3$EiUNb*X*8#7PAw^Bqeb$L;QlTSFsAzd50vb(;z3T9BhDL*Wl zhI^B#_+6Gbf{$J{SXMqe`6*=?uhLvRFvz}BryMT(Q^!qooZxnE%IB^a z6cnFCgg#9Q*5mvR&f9f)`&GaU0E7Mzo1(BEjD42MQUH5Egun41_|{kk@=tt60fZ1% zmV*v8RSIB=hq^L49{6nv;AY5vlLBZ7frRXW(in*C`Y$qJ>XVLe7&Ozf(tNQQp9 zOA#(Bbt=3p`UJYVlC=&5m|XXpH*1dsEz9Iv2esG&o^ci#KVecNzvXL+e+tOI*5dP# zfrSLI#NX3>AhPWFXfKE0{)F2Cp4BV@+OLEvV z;O3i-{oQbiO4mTKqkE(PlCBQ_tKflKuVuew{>9a4biVH_$WN?)*RIC>|7!@|5y=MP zys6Nf-xPFzQa8)-73*mRV}EfF^HT2#PwqgJ*F4nwn?F3!=A|!Q-uq+P3C+5-uM=2h zUnQbE(8N?5qM=VTlKe`<0lIWG4gHd@!|3uh-0LT34;g4uxd;O6cTF=_+E4;YPD)CG zAOmzt^2;ZPT$M#>gZnXhM#0e*EGsaGUv-|C)er4cy_@dD-Afs8iWmeV@+<kHog3k#|_+1{rCCQ{qRdwR> z*N5hOEdRL12?{C-4mY4fg&lo+t`+s6uWodnfWWUe6Mms`6b@-z#6QL7xQ-qI_&qxy ziGP6je+Bh%@;P-n>AX~q0((KB1xW0)%9MZ2BEZH*PLU~|mJigPJ8uJi#b72pK@p!y z|HK6^a8j+$%yn_egP$w$|6jU(r}^(p5$E%%)&7q4H~L0dpJ;gIFTFZ7jPGA!orw^N zFfVEx%lAtj)@&*mqZyd%@EQ?IJsgb`)_3`7Ix5kn!;4LUn`$>tkF8a}U zXMf5gIa2F8IG#MkPbOvta3C%ET~1RHeXBOc#=$iX`r{_df){amQ~_xeC}7!7PsFf? zKD36XmBC;IaP!JOQ2;k9DTP8eCVr#o7eEtj%;Db-QYFQ(j9qmo9Z!7;8i8dru)1;UW`G`SG z+%B$HisVMeRsjsetbHht!*UY88*m_4cLt>{vpx`VyI2BDN0PHSa z`wPH#?p6H1P7qMb39Rhyk3ASkDns)YlZ zzUSXBLATStpIZNyx=;1^ORw*sW!?3{z)g%be%r(w`27F(64ZZ!`*S*#{|jSvZRmWg zSHDa7-u^)zuVrw(y82G^o$~Hth|zsphV&JJ{p9K#CUy)|5Y+h`^LKav&F88KUD~OLDfV?iwvvzQe6im)*`U&C@g`+n6l+%@Mk}VizY(hIyEku- zr~WJQ6#KVIS)`(VT{ucu9;x3W==(nBzmD(Q-{91L2<~y@A2%f2!T&mafS#ZI0CIg2 z3yISWR(--x9?XnA+;d7d0vS5?{9V#-g0m)$@C{{oZNIzx8^t|1Wmz#pHJ1*0}W77g7P?R+~vUxgVHAicyK>D z@Z{#-NJX8xdv*K_{uOWo2Gy{xoBoz(=bNu}mDgbu@($pUM%060= z?ki+N!>tjdYs4kcj;Q~f>+sMos-E6dZva}_;J-62KIHjh1@MV?(b4!N9AH;121fsm z2Qbh@RdGtMitQYX7jOsPt4%4_^Rz*Y01kqe11tp_qQM>4bxAX97w<6MVgHw!`XZS9U=!blc^bDHza84ueQytudaFq{z6qF~I zVyXQ6%@mwXy^Q%!(vROoQ$}Y7Z)ID<*(%LX#b1^8zjVDwzhC&Fd#~cmpIZOPg?fqq z{xM*HHLCo{{x{#fHn#hYgW#|4f31g;?{cg2RGxj-*qgtO6pA6bc&I;bkp2r|z|PCTOo z#&VFV(#TC7hbuUL(Z8+Suzw1Sqh=zv^`xLZ#b*pOP0Enyo?g+(1ZhxBSUFsh%QTW3 zERr+3{C8Z=%V~C9I-M}JQ~CR)Q~w+VpdI&`v7_U>9N&_iYFwvPt$Ej3KNFgm%0VGa z3ZNlQ;+3c!k*eyIx0LZws>i``&&oAU=9Yx0p&zAyxeuT8tE5%789Dh3T5PvV**C{Lq|@DG9A6n{KA##f!L6nR zxja`cafo6FZEJU{WI-dwI$nRBrqcCKTSi0Ho3S<)(jO=QSpjdJb^X)@pP}p6=JBZq z@WC~7w~PYp!dmLDQdmpiOBo&Vz`N;kMOa~W4a${Yht_$jENlJh0q}0~swXfIR;L4e z)J=S90P95(y`!_@>=m>}-&aec00gS82mmY)zzLneWdsXcI7b-*P@rZCK%WIs84Kw( zV59{Bg?7|?ipy@$>`$ei%zwJ~<{NxAiD@+T>*%4rRhJK1>IR#A|C++tTbfVuesL!H zntbwAT)yuCuFrt0&P4j~9lJ}nIPSY(#y|e@;cthQ2=@8)Qr1Ld6=2_p+zI_lJlM78 zH7K`1fxRN1w>Dfrm@BP2kU|Lw(_%u+Za&bhUf+E$Hy`33F7n}ERisx12mMR5p!k8m zPlJw%W*mUBuV=kBoPe)XmmwbEz|%23{Y^2Cs6^rw2ym-Y2KQuToq&b14qwm&gM0J* zt(rbx!=p9zJ7iE%xSoA^*QQ-n{!{iiK9u5Gs@!z`P+FZ2Iz1kM%b{Q_>_Kn&tP ziCs6PfB#(@{54gLh|=e2>41A$5>U#FqazR;!N2F*6VNmJ<-i}S8IVKWlu&^LlaJhC zSl^NUF5j+weVbEvOU}Ic|F?kDL|N8||M#vJrNJ$n;D{R(b8FG>Y1OO$?>1}o7tp4o z*p$cgjCtlYu;=oB9}x5pzFs=+ix5wMKzDV(!*}wqL9Dv^Pj1DF61>qb8u5Pl_SV)h zIBeSE4I}%5K(WG)2SK+F`d9{mBG4)>I<4{M;I$ZuOOUN-r9P0OwHUCnlR|+f*E9Kt z4Q#Dw7?#_=5^iHjLA_feARz_`dCvy+3n8DbZqvgAvP`xri0Lq>hj!rTb-*)r9@lrw zb8@LeT;d~f6@a4KxL!ckQVxRp0*^veAkLql02uJO%RjrU_RusqiT;llWIqHg^62 zv`h9mDrq~>Pa6k*%{D+_WpDJiXC34~fBo3A43bv#2Pwe*!(UOPF~bx&2Nx=6!h`KW z`X^u7nmjo_{`SHA7r)m9$9Gntr*2O7V*YWNNd=-hur!8}CYw0*&W*ZVez)-23jclI z{`WcGEc&O`U!_&1;5EkUpwj>O>x&S34}piY<2V67o3gD)Xnx)?%_pvliBA76FmNm9 zJNbPV;rgWg6FpvC!WY9Z33=;7Hhr)1_n{+}e;n{^`}8V66oACeqhU6;GZKO{3-Ad8 z600`3sEG4(_z*W!OtjJd;U7sO)1Z7e2pT$6n>V(R6yO5+#YSn(ntC$`z>Z}!Q%EiM zG1DTwi_@Rjj?%vug`)bbjCS4ZunXGoruGk`Y}e~S0W5mrah-W&s!EAp3z}Te5dXUT zI!&O;2%#VdaVhfAXn>78nVvqu%95%fn>H!{dL{y(Z!3TorY?%WhssZ(LuXmP;{jZ% ztg59*GOb-QX&V|&O9w)T ze+cYD<(D@G^z<(6;=gSIXf3b1VyCJ7opX`wP~IHyyz;#iVVC3QlmYw?=^PCcdFe-o zw^h2M;Rc0i-Aq6y{kL~7(y!7cJ`v=ffCFn-W(o{n#Gmt38|?-$xqB|5ZdCaKlXTR$ z)%X?)-=Z5$`JdW<{6_VgUHZ|7w6(Un?>cIl)Sh?h{!d?Dg!pw6qMPadPB1w=XB3f@ z;w_I){dH@Y&_tQ`AbuTPVo)15#=R+66Uv;wRmiM2c}?|DLOQvqstxH|uYMHk8KMr%;8J4TBMJk&)aDR%XBr6WE_n*eR-M3>+jTx^S+!p}3z#Hr zkc~ksIbLC^Q24`TcExg58^*F0WK)3*PPT4 zLW#9Y6_7NK3P6q6@m>emuWJmTAKS`Iatk+e#j++3nMP?PqmK24dGV+WBCLCo|Dqs_ zcS9ot44;MIGjIO#w^sR6_FqCZk=h?BfVMx_g0gj0&)E&@tm*Ic0N!3dMIfq~>bdnY z%w2JwNB%~U;kx_iQmO_+=#`;dWPV(A2U46ya&X!;+D&h|x6A&nZn7f&CEt_3mtzF; z=>V{g0L+%jz(JIy0Q?)52N>iPNC!X6;&%2d*hdC_=@Aa-^*H|Ak6Gf*+gB{{H3aR{ zR;MvOk^ataR$#^Lo9X)wyNjXCsV$OCnrNkv+o{Y~;KU!)MhwrVwkX54eBNCj*M;1GDfW$( zDopVK1xdR&I&v-%hKR#KVS0wa??gY`0}OY-Z#qczy^I-z#Y}!M$4#mL)kXq0x=!6- z4%2(pm+~zAi{CrZ73x;N1+p6Zr?MIf7@~~#q9w0xtk604(n|BW&R^a=UOX^jp8AYP`3^K}@*3hh+*7rz%7hsiRX6*pM?x)5H zPzcML0x!SF~Ta9glk?AL#JP;_ck0XJg7J&!_wLa-WShRtCR$qS}<^ z<%-0?-?RUj;}owRe!+t?vm#btL$&@co@sS&4bO7RAKd>RQTX3>J#Q-bsd@jMh{~iO z?NPaP{=*B>I{6T<*W@;J2G@w^B?t>+ZRlG9FU>;krLlU@V?t;v)Y*t7w>} zRH@U*OnYJL61X5{B?QeDFT^(rl%X8C;U#TWf6l_b+x9}oIFHoQV62zq+lvBF>ASPQ zbu|$dK(gbpWKlNX;*H4idEJ&q&$8Z(rn7H>6Qz}S#8Lvv2_w|UNPyWBXXO`F{-t4z zh6lUgb64%B3ZT>0x2Sode}`1u9M)TZesIMH@0gvqnyN24Fo*lGtPN9|-uq0X0>HlR zR-t>#LaPiH&zMlk$+mX7aGhnu;Hlo66xg(x{S;e|_M`etqhmYKFjso5k=+&4aaR8I zEdl}ixWXd-{?$F_ziOIrAA%a_Z5~<&p1|%)k4SmSR5az^Q4L0P>yq(4H^3wvilGN!%A*>&@SgIecdS51@bnztU*O z`k&qo$hShDsH3vZ%@X9v_n4@z;yK~|x8MEWeEq7XqdIyn*(l&w3=U$wJ`JopyN>t0 z(X4skvq@pHkLMpM&Ui>WDSU;3y%>njzv=1_;ya~2)bFVtC0|;<%n6Er%>ft%ct$(c z^J!31-AY|AD2j>&eCQYcc=?oLfCn8FLH!27u)}-FXf#z`D!7I@)l_%f7%DB-#;TFS zow}BYCH-pe>&N>N@VZq5SHct{2{2$SGjC3+!{sTs7lE1?pq3Am86cjMq_#EpWn}D< ze#%oh@O>Agy}Tj3w{7$*87lObX9pnh6X#s4L|E0vgaQRJp_+R0paIhQprKkOvV93C zyF5dE_^AR=73wUTX?iA_clmXeHlDbuY4qpUEznm$O&9%44nS#&*!9+d?-*$;3Lq=a zh4W-P!V;G~spIVChA}9>_d)v&u(y^{yZ&o7#5ctAAplgif9r@q6-X`6U@sr|qGd$v z_5N!L|H%tRb{(kThmv_CK&X1erVRH*cXsm!g;oVYV&?lPdBz!>gp%bul!?c zw1G{UKmkWXTR4C}%Re$N{IS==`NmBHQEy8CDxc!46FkyVeAs1p{=N!bH`;Y|40uFj z4w*l<|NL7WrJ3dL%sR)^PF+*TGtBA#9M2O!r z%itBI;|;#k?n(@7$^m&3BbIMWD6Xzf({q1dF7@mw5WT$f57KvS?9k^M4Q=R;Tbb4w zsDbb$z`ix!HE(ssv=A2cu+_W`-$4-Bre{4)3ElL-WdLn<;AzK^QGF!=FqK&Cj&CUQ zv|j+#9l;#ji@-T=JHod44H5hW;Lr(O+fQBtZ~_6t4dFKpRlngkKu-+pQ(*3=PUy$4 z1lJ=8p-oB1aA~j&ip}N$1O*_y%s%Ab>~zoapC#xRSf$U8*)~X-^Ih(6pF(zE`rCXX z1L6k_fXu|gHU;?|nWm~w-{7+!D}Yy6mkFRM+XeVjgB5|fZbsz}*96Mkum>N~c~gc0 z719xv+-^Y%d>|FTxktTrqjFr^W?Qv|xf&uPQJm0us*kZ;L0 z8K!ruZ`RR+>$!i)P1=h9W+^FO7561jW13E5ot@uX0UawunZzG^%*8+E2F0#+k^b)b zuJlimth6wPv@om_~|!)BqRvoha>UXR=^b@Oy#kcZOZ9 z5#&p)34EElxYrX-J%8)D{Pfs=6Yr{)SsDywC4&VT91Tii^xlM=m{rwY+u1>SRTtc5 z9sJ*N{pyH->zy)D7+VghMDx8?GAx`vu&7dWGsdOAoyINfQ8~U`(fs`cB$!ptz5eV| zg>~+NE`Oo{Bj7LXW1k8G!Va-0zyJn3iR~wg=`qgWloIsDM?6Prh9hQKliBsA=uHGuClj5(_iXRzJh->YL@>)cn%z@*+&xKI$RA8*Dhig_Xgp)_{mf2 zFBXO)Fx8JJsEz!WX89m%Tuv7!|40E0NL5>@M%fmt*+tM?)+>7QfhFxope}_2bxjPx zcHAE*yaiFbD4vv8kODXcYs-{Zi9540T`*cMr1mJE8}LW@LFtWhQ?r#{W(JIV2sGc} zn*Y6ne?e+%di4zRO4GP4Px;@$Mb!BbE4`ZOTD!HTx{H5&CjQOU1w7W|TkGEEX@7$B zCtrdS(5${v_R?+ph{swt=7+O)gtg020{QMF$o+-;P0(|_x4>yZ+PIg`w&oFuvN4cn zqwNn|!5bc#Yv)aFLZpPfhV+ViwEb5#Jy2ZMOSb0+@bZBo|AI?bYPBJ!k*qKncyuAo zQSc(OSoTdX{NHlPB?F2W`0Rx^6-=0w-6sTp2|hdJ_enth;)|$nm7?~cP9Ye2YRB|$ z@@HFR`T@-_pU&q}by4+lDm3|Bj~!4>0>B`dD&EpEYGA(ej;d%F*iZyZ^${EIEx$+B zi35Ctj`PY}tm{)BGZ4Z6N7QuNcZK{pZn`mS0TZ}c6pSTs2-B!|2h z)w#jwV6i3@?r7QU!47j2e-=fW+65VxV@ zV_>hWj6%4EXeb`j#-)lZcRtI%eBO4CP&{7>zyZCyZ$cIzgPmLM?MPL?uYf1{h{9%< z0@om9G~&WDs(2>B%dDo8E>bMAP8Be>JO$g0js=XeOu#qIky;Q4M5aleWLzt$HUQ+c z(Y^SGm{rh=|BEkIXgK&*FYw!Uq<_43U60eBP0sn3*t?5tS zZg~Xy;H-jA*7;LU_n?8F83Ir8Z(z?DnS&ptzUUN1&cm#Z5Okvqauh<-#Ua4Y_TMsX zb}lif@+h)&HaiU|J6O9anirEMlrxTsk$Q#u{u$S=P1!`oii#kDitl+w zfm&*yu9w*dFIVTUHU9e3<;~yMZ#$9dg64^Bd{ElnJPT^S%F~)OouA6@J^?QZ;v6}B zOdpf+NZ$(I7z0|)a{@lPdYkG`Xb{H{>4-e#D+GH|sSDby6B?qN5z#b4SZ8 zF^U;@t?O%SnhH7vFXavr_dikqF;t9EtM2Nweb)e0rU?Oku$o;&^OLkU?Bgo`>_7{J z&=!^zz#r@w;M;f;n4f&{|L9Oxk1Qy)K@hrNJ4^0zYquL6iY1lwq4gE#@yAqty>|e{ zK60P)ucQ9f$p9&+f_wLx7OAy;R6LDfQ^g;ARxi5p)b;%T{L@FdN%2?xQMsyo6GFs)pi);nk6W}5-|8<#a*tm9E%v5m;H12|>9 zL#nX1;VCtO1r8@18GJQaF>CmIdcOIj(HnUl<_$`-v6S=I2dVtM*Ds~$a);!CaB%+6$d$>fq1tgbg>Y(Y=d^jnhz=>`fX2U*1(tr+fr=>-30H}(@; zg$VRhTf)k+fWRQ@tKasrgJSpN00q!hb%Vh}JN9pDUl=@hA^ys@t-Ur$uU*(#`7t5N zm_Uc`NHBHURH=$8stt)Utv$|C&=jTTU<;B)@z&*#D36dbi8JRO1a4scP^PaDD;@Ou=*K zuir@D1;sD*QZAG|iiq+dLx_tHdEWfWTbrV(&nGBYT++N?UN=z0nt;d!O-q|y85Z#8 zns(t5D-PZ!dSGReScV`n9(ySAD19G&aZ=9?qc_peV;kq?uadnfjzCabc^7>em^B`> zm7QG)?Cft7aS$*;e|@JFLKWc4Gce>sUG^*7*9X5<*1}AVj1exXS?p8sSMUAutYhcSXT7oiRr;x$FOQdV#|} z16>lDI@vN2j{cCNhJn6|nFB_Mjk2u;xDG0Z?7u_6p4J4dUkr$%c}8F4fOmO7TE(O; z<;CF*FLpG+yBb)?dK?o1N}N<7F}Xu zBDwY*0?<}9Qy|+~PXc*U*(yuVS#WS&0vNA@QtY#qHn?Cch$FmI3T`1FPj!q86gbs0 z?W5)QzEK0E8^|yMB=9FOq#M1dQ6F_Vi~5Nh9_Ql|z8QGmOe!H0Bw-A90DO=vJ- zIpDqa!e71opZ_nzn#sYAwe4U=n!#_i;Zs?!jX(tc9` zq>89YGJU)X%k?|U<+g;fM!>uNYH0eY(_llB@cq=^W;qgeLDn_$%#m_XA*9ef{|_8S zbcCa2o=lFq&KAE7db9HCdWqEmi-r*ym|WegCf`e2o-y%Bv z#}R}k`Iwin&P!VP=rVn&k;hNOKk&x_Gj+!vl&FB&DaX&q z{@&*yw@1=z9Z5;^ViNC`k@z#?00a88JQ_Bv#EmcU9UnQ!W%$W#zeDigY(}U$MI809 z_0)9q5apTj04hocRdH5lFGTr%z>wA7(y|obMhz+i=uNC;<@^ko<~Dg+CKV+AC!f3d zp9B1Q=wSs9nvNds8~dNM`Afum2>>YVubeCZ1?5I-#BRD?-%mku2r`)U3h)--PW6hR zoExJ0N{5@v+qnt1HhA+*d{9@vu;@#k#Rq?^J6FEN#-e}D!InkkBW$Qc8VB$c2`a%^ z4h~ft*|_4T zTu49x2gYjps$e$ByIzCy{Wr2b#^>0l@}imFPD?wOSKMo`-%ao3d-YBAA9{CEAG>va zp$V^53IYKeBZ5&u}1}P)x<6u zpekZjXp;uucfZL4=m3>hL#3*W`EoywxJl%1zk*EL^6%-q`=f}a(2r))z;5@epzM|+ zSit>O`#6#`W};3#6Q?>~ZL5DVsB5t+(d@dJszW>ykUs=qs6!(M>wKnrdJ?N^sQhV`R=QXH5&mpA5{AS_+*(g3&32EW?vM{%AUXo_S4hycjJ9v9f0_vR2)zCCvER$O<*q;#4ls$jNbZ{?y~ z;tu(p?x1itqJUL`t5pFHfoCb z+uA9>XT^~{)Z`7%GFg0oi{E+k+>(LCqth@~)}o!ZbCEt8M@R+I_`c~FX69S$tg3u_ z*D3ICD*&bSZ}%o>e*101_tW*@0lXNL*Wxg}GS<zeD zI=XN1#-;}Z?uJ`@wDz9@^u$9akVk{Mz=-ao05vm!>t8`DKjn~+VEK;EhCFwRlXC!c zFNBEdfO0UOm`^AG6M`O(3cxabi~SdR(MU}j?LUx*5S0Bpeu*cZui(r5R1x%z^yQ#2 zy7wVZ8F9)ZKfj$ZqocAe3VZ<(tZ1)a>NB;O%BR^+>6GGmDa!`M7R@ssl;vv~x1jr0 z?_1D~=6{Mwu^w^h+811DGGNNV;BV7tGw6zx*5~>pAOzQn^AtvJc!mO}RTs540fPok zd3Z-t01!%GE<_UvumZy3GzI8p3f>L#iCjNqmQ|P3N7O)mUie1^n%s8GgFp`6=gmbO zu6;=}ZcDw$wk3N+{g2P(o&sZIfp;Lk1Qtck8{1Sa%tHu30+7Vo-f8)O0uS_Nf~?D( z#_jdg{v-bg8k~RiG=gRRyD5B~{O7HLswPxU4Rpk=DCF*(9s~v%0{0a#DptkVb3>vjbg8z?{}ZF z2NNJ$3k0x+)-~Wn3FHkrqkNA!D(kHs;t*n!Vj^LiN_h|~@V`9rnr8qw@@jDaau9WN znU~SmHMQEoXqIm|D_t-C$E=3 zJXZ>FLLb?tPkvc7i#i`06t}`GHn?^qAKt;7Ex2r~9&r znec5RvvB9mIOQQ}?F}<=-$Z#`ZyHNn%H>&a&2vM&X!)K;a*?kQG(jKA1>xB*4OL%q z_82%&$Z=c}|BQg%hK5?1Xhte`TzQ{73ER0&o0VXeCDNQ;|H% zM)uKtmVYHrI@s6uCl>}sV2$G!K^P*)9h(iG-YCZj1+S2w3S3;SYsRg-lz^geqM#7M zh3Pw?4(iU-f!_bEZS=L>YK5}BzDuGVWeiTk^@(u`4o17nD!HLPr>-Y)vR;?w-lD>D;Rr$bJI=xXztH zxVdCZzYZ+8fdQR=+_mvbzh|F38S4BzM89(z(MK-g4H>v7GvyygZ^<&)X`F}x3DD8P zKr?_Ix2yC6=A}A<1M4_6*r0>zA3y!W`y;qz8oOY=v~PgdcUV~9U?-h1?TX&CZ%%S5 z8@m@Y#nqj79ojq2ek0q*vp3W|)(!KC0c0QiD4F&)4Y%}@;H+o{1x{C~C@e&9f~i6T zF3M)yg2Mm>Bo_IP$K$$-Y za%{8od6HjEHpLZ%L~Ntgk^vE4RUK9XF)x`PTG-d-f4nApw{Sl@Gn zq|=)V>ijwOz=@HZcWsd}dFJ&@aMP)@-8$sZkC z0eUE!qmJ60&i0R|$wI)-qZ#;Ja;U(mWQLQ$-dUrxmQ%Tq|D+EIK-ulwBP-yLe=&2` zlLk-$?be)2TM4O+KY)gjP$#edS}~!p{QS0tYI@&I zbkpL}k*04J{*6I-cK%yezFqRc{5oJ`a;20Z;BE@hHcjK2S68Mo6zW~;TMu+^%Mg{v z;7kUeO=p!QQ{?F+-&y3b%Z=JzC)6AP4YFGq@T7K>V3M1KLFd3Dn4XP%1m(f)r-G9s zD123XUPi`Mx8O-{M1$hfqfafCq^+`&{EJ|>TQ`pmP8#_NEw4`(*}*QbchBXgJ`;`= zgBJ)KB-@Jt%T4|px|ns&d~%m)t!xb_y>Lo)mxBWLoX<(&kYnupa(%*jU731v4;7Z` z=8iA@22K)pwqjm4tx!dko{`&K22GRd$|(xKvjUKXb_ExyA1qBY`PikL*LUCetaBU` zZZyRw<(`~3n7VVOrGp`Wr2~8Vda6@iKW%9pdqy#Es;Qb8aQAC4pq(Kde891s8U!?< zyVUG}4C3Mr>n0r4C59`Fr@y75O+R__ewtdHr{tb;cyqySNAPayu&OQNit2h2f1#En zKX_kWv^UjX$e_OK`U6u$^yoMGO*^1lo9l5*inq8Med7QmP$C7{C*61LKQB+|jw9qC zAHPQ+Z0(7W_aN{S^!ftFpr(6<0mA*=|Wm^onZ5jj?FqyX&Xl^kqsX1y1CAYb58g?9-R)X#xcNB1YYGswmSY`le%5ZkPpE8^80WX{=OlN;-yj9rhhUzoZEd2bz(P<>kRQ;2cn@aPxjh#8l)SK z;+x>zP&B5%yQocdB82NU1(n0)@u-*tA51vXP)~KSO}x(R<9-nBPP6lbgRW*ZAQjH; z+vH#+j;TIalZiECt&Lo$7M`sin4NzyVJDlMqnQVm(;f%yQ^o>NRpE}2>7tG|FR6S z|1n9wTnmb}`;0UP2K5N6eWmf_%s|{gK)?zD-RmrbfO;Lig%N+zhQPXtnFou9>TDHg zL*m7tw5S&>@v@o)P-f4ZrXTr7I~SDb<^U)qTND5V*p9QEkSTbYrPXqIO(Z+b9OA=r zpyL3ejaT;HrTyOk4bn!K1czAzi9cYuSUs_z-t#7b9PoF05d_%M5;+fer4ZnlBBN*B#H zo$JScJ7C4fuCL`VxX`urikde^$2sddoV_V_zc2J4Lx|u228+85VpF}HeG{yfU|oQz z(Y!MlluRSaw8X)wEeNETQ(IB@<6i-iwAT=r8z@NxKgv?G$TUtB!a51ZB%;=xLFb@8 z-u(~#i^~>ph8zPG64)M`TotTiTDF~u_RJqbcsfwRSpJEgNVgVDD0OEiY+h!7Pys^* z$B>B*AE8g)5-1x@29!NZZF-lPL};jlbcL>xA(J~g73w^j}k=XxIFbo?eY zWnAxGua4OZ?DQ4r(V7;66Dgf-{)HNhH7(!Co^f!GCx0awM%^&i+jyG))DS8L(9L0R1fu2j;qH z&9v(Lt8Zd8P@e?;uZOsFO0#osqTy@1C{*-KScy*o?&N00!!zZ_bijZrU-?B$i>|z> z?W%4s^moc{YCk$D!42^2Cl^D7#wK#vXbhQuVyIiHC;EC~gFvR)(zTuO=8z`M@1!7mi>g#GT~U*>X-pfQgu4d>gs>CbdT zk8UyK8dRT@wA0jsg_snCQivfG%T)oWOf92dr7SU$BO_n4s?DvrS3Pf+e7dx5gZ9#& zcQkSFsiJr11gJdJNi^N}L|Qz-T-P!*H=ups?;okwSasYtAFi!^t44f^%wA)J&@_RMi zzgq&3ca)DjRiD%PnN^fe(I6XJP9Mm#32>&&sXhsvt@t_9c%R0>Q*FO!zWad#>(%ov zxR;%i1d8A}%DO{zSe*b+zBV$FB`6I+SUs}ykOv(EM1c(91 zJR)(-U6sLJgXQCPu!Bw~WF2+xctYTO>`s=FfZv6vhD-(Zaqkrtd*iHFJ7vvwbTTlk z02tXS`GNu%(H}*BRmmxWcn#{iNdAMX!w_DL|A6Z#`41{1Oyo(=%I0|F8KBEqb~g`8 zl~LnD=tMN_>L;3t>zos>k}{7p>XvG~aPoqSB7S68`d4I8FGM?+21Gw@4<{Wl7NPri8x zNtz{q)5nDlbYXaNs-T%DFv1QMEGGaA`w8Sd0eCjRX^RFWP8uvP*ZFkT@iXAKLS?83 zH1<;%70$agTcZF51Qi_->}=$Zil%_wBWE*>m=WX9jFOzQkbl?|cKIFdbw&efi1psn zeh#M}^S&`yo{o!8^}YO_HXw{*H+l_#zT0^gZA|W@6}g_-;{0)av}8bCyncc!rCiAT z{hK0X|Bc0?LvJfV`{(Qz8s*>BXKELw>*(P2rt6*lb-|@+QA_!S$WL8CWp`-=&R6m< z(La+rTl$Q2Shu8@jngjgawdIhE9%jyU!C6ZM(Aqa1FMxN;JoFwq|x$fTialA8Ec+O zYVdCJ4V~;zKol+;{0j6F(sXzM$|TzaX=N-!`75wFfc6M5w6fXI9)tedQh;t*Lg^Qz zyZ2x~w?u^b3u(^gB01TX|5}m%98`Fd3Z;UN^{IDiV;-;dgwzW8-mc*aCXzG3$cjRn zm^j4jw+j_)7tAU}r;HN{ZTjY-015-EK2a6o=hz_r&FTJxD;}Tm`_6Dq)fHflT6gbw z+|_aj6Zn@$-O>huw0B7vHQ&`g8w+Mf&Qq^M`NeCZvzu5UimLm(k$=ob4cs1`V)aI?{x@py?BLieLkEr?yn(#wC4TFubegjK1*!gg;PI-Y@R9;e^8Lm z0EP5&}2V>8kT1aX|Zz5F0(l#7=k@N`Gak4*_WaAgL8 z)qGv>*=~p8ADn)~Jcst*cKyPH{G(1;@=v}i(z)L>aAo7?#0mjOrI}*x?K=eobXPwp za_q^;DeF7ER4s$a*$(ED77)yqO9pNVw7a?uTBd-|NT(^C$7GrmFMmJf!{6ZjR7PiH z)%#CSV-DzVLG?td7a$@;nVsRA>h_XG)vKe8H|1k+i$V5ok3dzHu_zz`fR}DMSStVl z)t!TNQ{M|90Ci-dOXQ$DRXK7X>{jzhJ_Al8bEv1-(><52-1Pn+Ux@q4Lw)t00F=k3f+e>**Op@Go-h5)N*fHg{I zV9+_Wi+2YoIDs@V6(dgNJvVk(dtwct@}~at6J1e%aA8k_D5}+Sy+RSv`55?+WNC+TF4% z#A>SNdDc<@%{b0mV58FY3k*1cRHWGfsa}q2dr>wH@8hO|Wn>N3{@TM#fPOtM(#nf8 zF)eRC;cvSpUGfRI)~)*(*V_@A{E-9T+K>+S3nXv~k`3jPfQuTOE2zxM%!5iE2&zP| zKOOVeZ9u5r&nIC3i6H>p;7OUHh_h+zNJldww84)qnBTNT5Fsc?Cje>Nw4wlVnlw8= z@BmNYOnM!i)2zA9GNJean}|l1c@<9;(Efi^olm+KL8RrMY#R`VUnZWBz_j??K@|*q zZh*CkbkA-Jc~ivIGM*#4-u?2FffYo-fB@6gZHUvkBsuM8t_v#<4l>brvg%MSF23sw zg7h^--YOuzffI^0-ER~1oPu{nV|E=Cc+drgOj~XnKZ_4|fPc3%CtzULUu;;28A-RA z8mvZSOFe0XwoDm^psd6!P+<<5qk9i1_!JAt_-N^P(wDp}TMY(axj}j2jIWd*(pxaR znoYn!htW)hDd0AmJ%IHu@-LPFD8EV7d7AF8zUL(c9X%AyOIy6AJELwvqbFF_=_Dop zsobI)>-?_lhIEi6hWlMOXQNpRlzQ_ z>#QZyR8?NkToUsY*&326L-G>bH^IJvespW9jHAnY1n&4cfllQb9VB1qkDKFQab?g| z%-?43s-Klpfq}dYRD~IK+r{8q04s$6d8efT*j$YBvL5w4lVItgG-^k&T-9F{#LKZk z?~7`R-5qh2uQj>;t=HtVdapXpGhr+h%B&1uQ7PmAa4>1j{bcZXx}TqO=}#M-{G1H9 zovGU^8?b-dXAm3uK-nvh<|P6ufaj$I>f-MaxCq!&!6*60cH$BTHL~)x3@51l*ykAU zA7QrYsHzAcEfFBaooGvajnBFWpj(!Jzl)P9Km#7}$Fl$E;PvP0^D6&)Bh&5wXT8G1 zDaZc@T_3b$WSg6_St^#j?s*1*KC$lv?itt&%TjUDBOSY?nW$SG_O|&Il+m;vVY<9* z;kIQ2=8=oWJgASj`v%-m=^Y^XA=`Y2+ON&d&ZRU^Cg-sAcT5V0)Lc;y^HH zhE<3TV($JSA;}*wvS)!bFZ27llLCm-I(%*V@_KKP0h6pedFj{nT z094*=c)JUYwE7pHI{@X#%E19hM;Q+Nnq~(;Jar(PR2f35$g<~fr%45j>04lU}FM^$RzaTJSb~FiARbO!Nyum8pas=RCj%kWjVF}XSToV2&o=LxX$>UybmH`7?Vt}Wt80$PbIy`-A83<(OzOHdo!9>UpugREA22MA#cT?ti>oh(oi%UD$uQB@T;=aq9->G}`uPeK& zpAGrGfFU>I8N)jh^_YN-?&|8b=>c}naRi_KvOVhB?M?f!LOi;!+Rfm4n%#vux0xc& zwmb!m)3oviz}@+9TJks2sJ-$#M4m>0b4I9%?sDWP`zw+LP=QU$hH-Z6*qpUJE>)m= z4(?Sx>`bc}30OI{&uBl3{KM4WlQwYq;RXWi>zJe5z7xDC`8U|j_T0OW4y9e9)e>xm zYzIR;Cm>F+#(Y|soYt%&^CaO7tr%-HwE|G@n8BtrN&!r;t8<3_P?;%`n7;cY4En(S z-;BA5e&A*d`C=S1&A8dSQRBu@#Rpcw6?q+mG~je~t~8G*`Pg@L?5W!V3a9V8H>?CY zLeT~FUqa6okTufHMayCoKb?y^k8tK-KC zB|?}M+8Mg&b^;er($F#PzGof3e9AzrkBv(N7W|u! zvps-vCW{6=o$@fZx?CmMnhI2$xoNCF8A$yj9|;JkB?5{lAqzTZJ)k#aqmrDZ2T065d+;h7&q~^>!T3)DEg>p&$J`^gQM%H zPcV)^-N$9{yQGt%=TYVFI_1eT4Gi>NDTf^5)Ta)ykl3FEgL<4jk%HVyKk^cT;y3U~ zU09dpTT_r+mV7lE1}5GWKn#Nx#cq(lqGl4}@7r|R!g7OuWJG69*Iml74}6Jfy`W;myg4I@M>sGiBQ7Yt=o<<3wg zv~dVnI|ZORwEHkQQ(;;YVFehdQSXeT2%m+j(4`TNq0+7GlY#YnF><>5g9G42;T!Oe zZ3T8lR5Czm(%;FA#w7uG1RnNNP_J~PTHm1_KsJ#!ne=G}3(qqKM{~e&rZ_Jr-3dro z!3_pJyS&{;Cs;b8ZfArw1wYoEUSKJpLK@@m=}1#_b|jZe0wYvAqeWO=W0|$?wJrRt^PjMdEf5a;n&c~efKEVm2ymp1gM<*9{6+q{(SzRHMI(G{ zORBYSr2)dSFu|0*{Y^keufHun3N()u-m4<&@?izXfsLF>6gl6p%%tf9uJB|*3Ar1! zH|G&e8g<{$TP5p^T9?O!5ED4LgIRFY*jd73q%hyJn{?*R#M=Zg;Vgh7H<ld_`i@rI{dHero(^Cu3 z^Qhk}+oSF%N_~0(0}6QwgMn=^NPEQJ_Y8z=bGlf5*|AfXbnM{Ej;;7#cj5kpH&=tx zS@TWDb2q(;Dk++0DnRe*D}zz->@}$8GJVKrs{53Os>jV;RPDcka+YPW?TgOco!sCq zuaT}erMv+Lc6t$Tca=x`;gkmlZcap2ddw`_Xc^=}dx~xbz3Brj697QYBKN7H5cs7-DiW+8rX#p5}eoLIsgj22GENIGD?@u16HXyLUL7>P;!m@UloqX zS}OX2+%yV+h0mSRDlHz(y^)mPG=Mev-NK>x-fO3-P2Vc4qmlo`@6&9?b);a~W%{^W zC!mPria{Ui;M7u3%Fj^Va^oW9b{g64)g)q^m5;IoYDSxilh$kiCk2>~K05(SM6C>N zB4{>mzP5Euko?2x1er2}{9kzSJEvs*DOcxYnGo>_m^3Sat#knJ-srswuDxL{{>@YG z4VdU72LOWf&aiS>j}Cy;UXkUSpBdQ85cEq^wgp{#`|qg=CI7F?a6Nem9vcVXbYoEY zdA0;r(04^>#AovbIcNz$MIc87`($g)dsDIR043khQc2ObA6-Fap%k z0_;lu|Iu;0e*iCgJR7hk0>Jn18#al|vs@0)WMUb@`hAuo5CEPwD|FDFb@1mGeo|;& z+{FCfeObXQtmvi`o@t)l+@vn}4xyVnJ&pOh$it`{^-q<{&tB>gO?{%Nn>TG|AC_sR z{ALDpZr}pvufUV3zdvzDN6cnS8!8fl2aV{M{1sX?Vs>T3ZIF< zUd@zL|M(mAEY+jw?gXTykw92Km-4J@6*0ic^1p!F0}AlQTWNRP!rk#@R9K>B4baa% z%f`E`<%>wql}u!Y%Kcv$-)g$_Pcg=%_(uhX00t?5Qic)Pm0b+Qj%571XnU+)5 z1BviA%74m+jA33%Qp=3w%;Jy*?&e)9QkS;m88vy0CN7InfZKuAc=-)-L6IDEFgZ@5 zch0(-_HuL9uRE~t?Tp%<(t6gs9^H5J%?fDF2xx#~%iAW}_8Ge~-3!=2vd(_!eC79l zJ3P?ory~ApB*O%Dygt&{Fl%i-Ay>^uebMgGYFz!=zxrs|}G1qAG15&CZXdz&^q)gSe# zP{P~p4YTk<@Hvmz)1XFv?%GLaFn!lm086m;K5a~S&;zK(*?5q7flr{}4G6nE2Qt1w z#~`j5Z5w2$z!BpwY3T?V0f2vqr>mh(GakOurc(wK`mHuy;KI7&VQy->0l=tn^?4U) zs&7@mTLKYEi{&6ccR)qgj;oJ&0Rko$P1TRvq5Ry*)x6b{m6h_nI)Cs+^NF@M`jmc; zocH7}qfTR#BOnt7OS)jX=)=fmtsneb1&x@mQGO{H$FruL+9T?eLN=;j@-?uJ(9T9K z0|Rt)LW?~`JC4U$k%?X>|_KQ z;}1K68!Hun_?tk3Mga)g^;S+XeXo#{aK(q9lomV@K z78`zapbi|?Sfd>fM;Q$|#b^(p9wDVIx{`(hyfvbMfHc}V6??hsShLEow(2TItRtU! z%IYeNr@7V^>uI%z5?cPJJp?|9i~rQ?#fdW$!B!LWzc>IpKL`Tx+cP~xFBjl)RiNEE z0H~9jsdBt5K($jL@AC3$$Ws~M&+!QNB>>pL{oY^`OLZvT3#hfgfxMxn;L{F+XdD0> z$v*NJ2?*H1{m#NSn6QC>WuMoQAG1bE1lYpwm~T%bdKz;djE)l00y>FD`TXRw|G$?9 zX-HqP`k8tJGZLuUfoOeyu&e!o(J)i^3if<>%6+anDxaCwBY-$KA5%v9ZS8~ z0aERC@s7)%Xs`UTNnhURt@_5AHY+fr(;KQ!xZRzrjJ9h9x7~;dX13Ep5L?<1jXh$9 z6ZeTuya^)GOKdb)`qp#y-O{ekQQ}z|GQw`+$emP%RSnQ|5CVHC9VhDIVHFbx6|eoh+LI_4ZHB56n2*xD zUBzukdkdQ`U_e)uXtL`JU1J2=m>}&7az>qbYOg-EA|!8}Gr~P98fGn`BZ6*5vgAdh z9^S{M@}2=KUx|ctkVa?!F@5XD?F6d-=IaZz6pNQRF&LAc_z7*0g!FH3O(J z(U*Tml@)oRu1d5(r-%c7nEC7Y%&86+zkCHOQT0x)KW%7;jYJ3Vku{MV;!Zq3kGmqkBP#`&w15E4{fTagXX3BM;=CnL5EISq{kEk_5 zy0?8T-X(uo85(@fhK3b@a_CJld#4pAFrWhlf+`;3nKj?4GKXuTOGm>H&AG`>3ra>E z?SN5}Y>aYHZkPOXkgr1Z1ANuxljzr+eCjMpOLE5~Vf|2Mbg}PEah%eRhQa(kMh#~e zsljBi&OgNo038EBy;{cqQf5!npn|@{p-qpY7IL%ci(LYD@rHyHHd zx;r+SUecn;w#FdD@SN+Qme z&HG#W$E$0OiR@o=N|IC0BYPJd6nr-4s4p9^tP}s zrI%R8H8#Z3=4G+L#2UP4ohb)_p+Assu$+(OzZ{FD(@uH*E!VB1?WTjg8Vr2?aebJP z?A*VUiE01fpD5p}wEVm)m*1(nOvY19XSuD@Q)QONQ387f5~ydK_R0TGWNUV&7x{eE zA*_)y22~x&Z0PSWpwtBbqXKBsz61bK`%v|{iL$WnlF%m~1d!#P5w>(KfkiO2ANv{m zdh>%=29RfkXuZaC=Q1L8H&bHOX;JG&@w`DT7CqV-0%|{iC}TkWWfU!qAn}wg0YJDG@5;!o9bq{n0%v?9cRsO;CM|z0>Fipn~=p$wnSmvPGQ9DQj zBb{H=eBPF!MgrGe3Qsn8ABCeM>0(PJATJB3I@ZJ{Ip>SBbbw7;h_YWaKwAH1C?{S% zW#j6dqYM4|;vxnpG-qM!j7w2Egq|q{PqS`W z55mUNoO#Irf{$yYGZvkT{>sOvRVH9c`}Mbe_74IBO!M)6t{gQrvhJo0$gPY0H>g-EN?bDh~= znt+ZF=~cZ$)ajN!L^&ba6;#((_j78C37Uo|&!|pDI*HTlpq~4S^&GqmD1Za?(!aEi z6?b;wvCx3Rcs2PIyH4xujlkNnJb>EW%@F7Y7p575r9Yzg7d9P&%J=&I3PwaN5A!g} zlYtyX_uXDQjLE)>x%R!(Y&is3Qaa?Tum3Yfyk*A4#;;$A4?iA&HtSvvcu?o&03VkZ z+8%~dY^-UO=2c+9 z3vIh_^JaalA&|(P6|U-DRTRD(jB$~F%Vn}t?v{mycY@vp235$o>nbz< z0~uI)ZY2BVJ4RmqU#iDZNPDTvN{`15S}IpCdvf_sfM0zAUiX#9tX5unp8|b3r1Nwi zsYadaGx4Je?iJ5^^PAHtU9McbXufknR}G}hmjVE|UX#nH(wS0Df=4@ld1_NMbh){| zQ`zYm*ax1;w3KYhhZVXwu?FjeK?k>!<(q*O)zAV=Kpm9hhqg3W&U7r!yN2=fkGMDjn8|(_(qjhaeQafJnGsL*%j&Z>uth=Tu!c&xpJY%Lk)& zzVEdF^7yG|K(+Fye!jzWIi*v|!*)3!@{0zLpaHJev*o9XqmH;d07GySD0H;aRO*-& z3&!<{5UMHGC;+Et@*8~4T780mqtSAzLafDa0K?;TGeAn|t8aSi>vz|%Kx@}KE=C^dP7|G+CApOxmQHS&`K(4g<#GwA>*hgl%u(^3Lu_+A_U zX{?7ny&3#&x}sY9qUz6dDaCucbiklXy1|XE>hJdd^wHDm5w+9^y9dY}CiuV(AFNqH z0lMR$lLU5if3yKW6TIiBRycFJkn<-22gtvn>qDo_knVvGPSJUQWC021sMd2F zvvhB!{U(dJnLRh!3$8o-qXh`e?*8Ydo=kaL4G) zV?d$=R(%Orpp##4hTa1}U&tUW4ukm4DN7xbh;0DMJBS{G4hS^Y%*&zs5T`^R4$?pD%K2TOxCIRL|^ILhF3hI~0U=s=kG9_y{9 z=W#&J23Ua%n1AOiOlW>W-yb zBM+8qNraCOuf8pX7@ws8pgY#etFt`@0K(bZ#GqrYI1dxx!8*Vw*9V+NTU)34wQ$T;2A#r+GqJe`B zrlk)I)JUR=x-me{hOL_k!1p|mfd3{moc$s;&T7`e)Q&=DN{dSY+3fa0J2a5%4&qN#qfR z>m0WQ4y&E}01tLMZ1_DdW(*^a$7Y`(mY3W(X;I#1V?EF8lw~P|&Ng)X`54iamg6m) z$tD59+_=5mCOMJ@j^nQ3uoFA%hMs`D<&;L93cJ6Ia-V%Z^eQ@!>mP8jv)2Vq$v9c> zER-1n!U0f`sFTv;dFaUj5PJ@EMyMNMpT1$k%H^r_YC2t^TeB~L`rSDpFGKk$dkqG3 zgBk6>1KxjR|4rKe^a*23cE8Gsjg!^i6aa|*Ef^fY(X0(_l@23fcf_qGllKPbmc!$b zf!X&s^~riUAH}+C*9yob3pZ@K%b)I4>Ge*NhMTu04&>i!mxt8~h5e9f2B^IuNWff!R@tYlHixB@Q}9aJ!`zz+r* zyy*+|tfK?d8r1!rYP5b zaYBTv{9_oO+jz{KIvKzq5b|Ut805|0Thi;wUZm3kNH{n+*m-Q87xp5oRc2e>q7(WL z&|zkVP661Y0MJYHrXs4xZ(7epBTeM}`uxMsl;hYTzb{~dYQAu=&T9;6VfkWYU~2D0 zvGrE(doVbFWmUTs`<_jRl>hY|>4BBlX;cr>8qF$@OP;nZ_(K`u)Y2Sp1uP#>AwoW# z;M`{q0H@>b**l&A8RcK%isT0(Abi%#r^9Tu|wzQG+f`31Eky@q_DOVw)z-K+4Jg$KX>nu?&tkIv4ehROw9s zz^wPP0KlnVgad9(o}x{C001|ozrJ+Smvg^CW>{XvGXjDYFO<3W7=X6%5rcU>KaUac zk-D{=SeGOInh}GJmc{bL41v?&y3Q@=w{}tv^D0o_wB|Uu`CAj^aXBGC0{$+eIhjw< zIDY~faDNBo)#VpL|I}9H??T9p3fQ}QzsQZM-wUAULNBN~D&1g1J+R)&nVR}#vcrmo z$_At|Mev(^c;0lk38bZ)@3|gboWSi&GpQiB$I&!{k*4(x0tD_l|BjxWpOVs&f6`6o zFZ~jCJ3f^c%|M3={HOXdz!IWA6Ccy;4kv-YI4?Qw!incP8I^H(_vk$y{lihbGfLn> z{;P(n^6x@_o|;6O{-$*>9!{7y2E(+>3^^bxM+stC>g;AZPFpIroAaR3g?MibgCMhw zfCEnR3!x<@i)2D-JBxCQVqTvQ)lo`%itG3}$4Be8zkSPlN8l!tt1rTGG`%;Ga!-7R z-p(oh+*dzHZ4k&Odt@J^C8Lsm3ib`<->^Nof=eIZps<#IPdYO8tP3_~kwAb&Z@f=+ z1Y;yOJ1wx}d6qTP-v|J7*9)&-^AHX|JCcoghYsA=2qV%qja1N-o6Z(kABTo%6Qa_z(c7wh@-WRlZF`P}kl5Q!}``psoc%Yhvlr-smMR zR0eG7{xtyr%7UsxMrq5QGz*Z1Sx+n2-=qFX@6&J3>2XFu&`g1X(!i#N{1@x!+ZHPE zuf4qZlmG!9J@O(isC3XNMB~Ti^`!BXPu>jB)ALiCfVu?SYomg-EYtGjUIv!x+3~32 z!%26jV3~QllNom8JD*m$g+A0V#6N5DE(}xkfJ|c|pAH!8>fh1V#dn<>ZNu{vBt`8H zE?Z8&Y-|-y7jOAPoXC>sLWJyS!VYv=3fRyfh-jU`D0QJWs-RpV+hCi!sdbpPn^9m^ z^Lp`X)Nf2HXE*?{lOxXYpYn&`d|&BfnQrq|+;({A)H5Iuue`7vb6nU>F8Ph!8kTxhSmT`Z`kqIvXaC-0?KBC$jj;<(nBd?n-qZcm(z_>0M74K;h5nR zb$1oE2PO5L=;czCuvzIe%DqghC2$Rw38dYh_xE{or&Aq$Y?%v%yw8f>yj$s$fH>*n zc)14{BE9GMW9bvrD@*>9{ci?P(^8}+w%l}tlLOX9S9!U>nI%xURva&u?_C0TMOYef$Ta|JlT! z>8|JqS6<`1C)Z2`>_P83HO$|1E?#$a0em$1w}E8yy>da7@8_3(=yWRnb|LG%`O+>! zTycDUVL`cQmu0)SDeXE{gUl+lrhNznTebCv1ly*5^wKLqUXjtU8wS%o5$ye-F z!}Yu=jwjvBOTN^_@0`Bf^=cR|ZInogVSSgD8Q7o%;`jnMo2Dq7m-t)-`l<497(so= zmir2^PU%#rsd`%7f8+W@(TaBnuJXWRa%u<=V~;o;`BcEDqmZ}Vj{sRbYdji@@q>A(n2HA_9XpT{Xoe&H8B8(x+i=Ozc3!{QM5uVqKSW+ugr@=n zH)i^qugMAN(v4H@?VAoj4jPioJFIv9>aWe40+DxHo3~;y%^AKyg2*Qy4N-3yg&e2u z4?qH!^SZ83>1^&#<=k`nDGlY9FknSWx@Y^}&WarEziu|p2+e(_^Oo-&9;x6yAzVqrnl_xpnfF#hWq0j@%OFc(@fR1aUk^9UIL+b z@oQ$nxT&C*jd1w)0SH$5DZp&|2pmT}x>PwUpDKX;5LB031N>$JqfGGk1Q;@pPJwd> z{#W3@lvdHU0|~fIsy~DuR?6}Z%d$qsz2OU`gF8S_0V!RZrZ(<0Vv1HY9j%-5meH@Idch=F?^80B3Kn3+!t}?J4c%WuC z?DX^v^Iw|PV4_Zu>%5+&zNI5D4z?-yYkXM7k2KxtmF8^8D z4@d#}KBjL8Kwieq@^tS}0g%JvMshSMn2rHOZRNG|%ualTj8$IB!xD{CUdLRSM%%ZY zSgYfgcU-Loa2u;C$jbXj>{BKdudM0Qd#b?!kIJb;?oh1?T=7o$yqCa{nL5)^pU#y1 zOqOY9eM~rrTx(2&&9z6V9(x3f>h`6~IMBf9|J#T1Phv9$ETiazf8;dFjDw9U~lbKq7LXZng*F?&Z?!O}d;J-f#04Doij8NaU zQiVvP_y&Rb!LD=cTYQ==8X#YA`T;K83SyE(@_l3>=yme50T9T-d}uT64jnYwQ~SeA zA34a*XCBFlp1~-OG%aH4837h_AV3Guc|vje0D5w@I>6C~?>Zl~OFQ{&olLns2sgb~ z!MO_=oM>&$J8N`>qGJsCO!~qH8fspKpqkg|Hyh8THb&0B0~~f+@iYK&ER{8N+~vA% zbJxcy$Y#fr9)|eat=Z>iU0}{>x`BjlHo?unb~6YPKY0JFjBc)aP#t+HuPIt$Ka^?1 zD+tfueIzW6*qELs)xr|4-Vs`{vUUShYXIfdjz3{jo1Yk(bS7sN3O~-CXJ)34g(Dvgzla+8sLY9If0(UXxc)Ei#x!gI0doFMXYqI@2ttw2mUwF zh7fe+dI^3f8o$+V0zBAHo!ZdRAMGuJCJN9-ndOlm%n*HrG#jq*y$z?8QT|Ea(a}`A z*NE!dRR?Sr`x?956y&CUel(g)H?=en>%n<<`v^>H_84@Kc{lmU`f}bK9WV&Oz=yyH zoGEa0U8Fn{D04i$3RI=$@QUZG%g&t+D9_$7oNEo<)hsW3UiXE8I&B}-%lEd|!sRw3 z)Lkfm&HJPP0`g^r=&qmZawri;x-2QF|B8zyf+?lRRKVr*j>~`XoQCVwF@ANLX}bHO zc@P=8{Q~$@fCC2Tsrn0O+DA#HlQejjAuBvwMsHw`0Aq37>DZfq_rNY`84-@wEt-&y z9s>b7gSpyUwEggRaiuV&F;|s!tpMn&Q8w z7Tei;Y>o7<3;?ZmGKgWoSfO;rN_zSoWn%>pd&UCRi>8Sb5)JDL9l@$h&YfrB3hy%d z>(?{>=>PzL07*naRN3K^t7vb*BHciS!8b~Wa5*7H^ULf}91#vH+RByXh?6z}3g}<@ z#k}zTNlYMo_!Q?`Lm-G0v@n0Y1H!~d z%q!iq&UIVVj8r#%U+bgtQs1cbSSKI!F{i(^_La^aks~RGWg|LprtQtn@PmtCoK!2UhK~LT%ekcYR;h&s$b#>>HVA zSGO*YmvMGW3lcy8N^%1`k$>+zn{v5-kXDg@3cAyIB9n&Vd({9=+W{8C)hX~U-KDBUwm_+)ql!&0M>=ht93(sSKO;Up*#vMu zaz1aC>`5lO9gad&-PB--IE5tHLC_;BQKzF*o^!EW0da!Fwf0oSy=Rlb zFIo0Z-&`VvfAZA?IuZc?wgceWV0rGp^?%;aAuR_G!8Ql>kXiaZExW-oaW()R9|;CJ zkw^drOwMSumbzZ!!hhm5X>#VF7b#KsY@LH(qsmwLKSn+fzBd36(C6&@FsdAu+r@n? zKG>N^MTpLU@7~)bk0<+|)4Ql2`WV@g9~ef;AyWB0-7#G?^0^LHT7juTmW#nQJJb$i3Jx@xKuW*d z-_oo16Trd175Ah!@~2QjPGjP|3ec^}N~!+~c+kd z%B;xdRD;rY&?(DFcbsFZMql!v=NA<`lHAV4t8;z-Z=xi+Cv1KoCDrGLR6|q zvhsW;>!2(p<{eErm+Mn3K^Pb}5r^;$oxs4CyjpU4&>31Aq@`IVwDg7f2}i2y$wvnw zJG^fjxWX{Yi${PSgQjrnK=W+_UdgGsKrV;i(P89g@0CDn(hX>uP7r_-2iy(7f(#U_ z-@cVlmH)Tv9~|;ERXa8-Cvb8A{K)}`{C&XA;t6~~o+N+)XAkf`0qYq~#fN=r{Of)L zQeSzcv|u~~p6|bu_x`EaIYMf+7_^c~{||?f#&#%E^ON?p{y)$56ogFAvufDp%Yjvw z`BQq#)%_)&Zq3pyfKtJWJ*bnQv||7;fD_&2*~WGLX}3g#?HmHZtviqa2izwhHsG6P z-F^8ff%jqdtMWm=f>a4_%24zNGbjTC(Y!`tr1;h|9*xK69F%wU?efO@@{#~G zV?gagK+CgAke}+Z`Z#vdKAkn`npqL3UvT97=zF?R#Fz-~Guev*;8E&=pc*~zoCSP8SJ+<`{ z22t<-<<}b7+p5j$CSSz?@bnLlf<%BU>sR5s@>G5^iUw`xpM6Wuz5{Hu* z^Qu5rncwf&e`auQC;HgrkF>sHGdT8grCFlx=Pxt{k3z(F1P2R$opN;z4joPy9EF~B zI$d3_dPF)S__gm?@$pW+SZ=MaGSR%_K?V=7&H-)3vh(JJf7CXbIxzjFXPp~|^s%H6 zD~)Xs`cDCg$!%5jj3$qpGVAg)A)_IlStH9gw?u&&-YGJ8(6v(m1N)vwpsfM~LH{`D zPRavkBM1U_Ytaf=Les^t0V@AAwG7)$fjM5?(nx$J!4Aqx%?KFV>a`p$Q!Up_fj$Q@ z1RSV+0Mr#gJ0z)`Jr05XmU=i^5QByDyIR-@gu`&=%<9TZz$(z1|DNBd7delR073d5 zBA&GCu7P8{bX>qQp#WSc0I6R*_jLgUR0o<+5RKt41-2T?CJi9cb`_hn><``L&bzmV z=kRR#ByyC5={WT9c5q6c&}>A{e7XRoH41(We)(olRB$V+5c=sf_SR~lULg@ zsNauCFP_*v?-ZZ9KvXHU647fK9>jeG5F9Y8OA*dgQ*UMc-+uY6S%U+x*Zo7z;0Z3{@I+eqq9)mjL5yq4j04MhMJOAI)+f2e2QuFgq;nRQ0 z^=W%w{QRHz|EX*~MIa!+McpP)h+BUo6+bof)|ie^Q^2Cqeq#TD79v2?{sH9KwwHX& z4mb!!8%l^X#azk1s|vsj0kz2=m!`xxNWhmHmv`jNE#N&0P-#Re4UAFho9b{LmkQVY zX@Z`bt3$;sQmC*33vvX@Ilt2 z$+xScqGN}gcKk5u5{a~W)h~YeemQnBEv$F$rmc(UnH4lK(NqHHsEO zVR682sy;CX)6Me3y6)d~o;*9C8|~+Yrogg8?G)XhV+#)#N1n(@fI&p0KxI9%9Z0YI zK>pK41psWMVqE@asbB{V|9XODJ%Oc|7MC|f0f1??moTvGNEgs`wN>zyk-TvJDaIk5 zs}HF&jXs_fX)4?+qohpmUzdhKgYRg`xKw&-%j5Gl>dpO>_TuQ2G#(X*GXe-b4gC0v zckaMct$g12PFcG19ozr)T`T{pc+?F{8_=-}#7ee+<$u)*ZGfY0b4t&a-bq(}QT6Lo zf*ts$nE||>eTE~y#e09|<&CIqI*CsT!vE#~xbxiKli!+-j{wWb3Z^`dI4}LjI z267+3QiQ!c00y}{`^=)@6sTT z_B2U8CEOp@{zw2Owu?Mmq*HC6JqD!j3&44q;iddp$ji`nZD1ig zq(^1Y@~|DBd@UI$NMOOdgWEz=+}l~Wr)@d*7?re#$okVd|*=%os7qokRQlox0M z(0_8GIZ$l+yaacrZq=aHb&gi*f_YfO+tJvr3D|PM`%K4ZKcmmHw!2Bf+UEL4JY7xVZvcQ%cJQM0Fl9w z!y|n+s5_1HxDhcyCC=qk+;IE>i>!_+fYO`hp;1Pm2vm)oXrk+k7 zfHxicH(s41Blv5a0R~N*d`R5wdly5&by^NX#|xGXA=y}`zBvYyaGkV{Z7mzvN04E& zBljrZAMWqH&HhA*|1Nb+aN4UX_OVCa{eP$5UCgWMTxL!}r8c-pNSH^@z`_2iijtjunzO6^y0+Js;TugpCl#(IAPqg*~aQiOD_ZlRYvxqUH|XTbds#>L z(QWXf0--V^C;>k3ADlC5g_kqa@<{^gxf=DyV9Eqm$f4cl-bVbPCN?4TFWOX`7wF~r>X7onu-rUE@#T;mE^!a4ixJ$`7bRH>6fSX1# zH&3`#lx}y&Ia=^kH^{rFTLH3+)By@hR$tkF1OG_j7`dLcr@Ch@^tl!KnerDku|5o|mCVIN_<^4fRy*~dm%|G#)0{c(s@jLu~ z28h`I$8wx?)Ow%vIc3E43sJY<*^yJg|6<4dlHU}N*oSEmJfYLBI7>O`go7XoNbn2{ zl=cJx0;gUzz*n0MI{muQ&&AtZQr-DC=b?iAeniSjY58{!;-`A@GrfCpq*5}Ls(2y) z&W;P#FT32CdfX1xo(_Sm{aEYAZY{gCH;}B-7W*zM6xCNTyzAQ9xge|uZvDb}CixWs zcPR@hx4sEAx=GBSM$LH{fm&DJEjPG=mx2)8tOHa;YJY?YC~z@diU9_^pY|r;*^{cg zTbt923{b`xu%MA^jaJ9RRL|W$Ob!L*nZM@@>cczelpzR_Lly(aHPwZJ{8N2&ZY_ZV z4k@zxUpH!1jv{KU^nN+bFnukkp4^{{UKo>?QM^V0B*V%;jhj}ODNmf*10S%0Z!>ub z$l0BXM)N9nkIR11_QN%KoT|+tx@L!uofu2+7av4f^O%66zz^f>;=W%`3LpaoxKB_G zc=8u)@n1un#do}yg4zxNfj->mserU`z^;fR|Ac z(c%m)2%Dvnsf;ckEU(>5fHw(5{!ml;4IK1H z*&Kuxm^k2NsT(k&LtV7N^5} z&hGD7XRZIm*9K?ETMGp7lTjJvUvyQoQPjQ`W$&$`5O^JrK<|?BbLwYxRyA-96@F!??awUD5cGA z;;%^FX*2efl?LnLsjfaZ-}|3>b&z8hsPnt;`u`19CQSnWPT*D}{%E5SG`7Rmv$^XC zV;AO}(%GQSCc;fYkTU-_bf)Vtb^JN`E8Wc8R3;Ci5MymX0H?X1&{8>j^ZL*Uo#35E z4R-G3m3?)JzCrzr)Rm`{jQC@Vys4|xcP@B3w=D{I5viS6|H?oR4zD8YxGptUBswuH*qu6f!tXd|Pzd1oknx?va zVb8%MgDmhD-xu4>%Ri`ZxDO5}LuW0e4h5mOZ9;I>1DyuuvTm@YHEDlvy?F3k1)*?t zFq@m7*HM!r#DUINnw^E`VUct6Ac9SG6U^*+oPJQgUG)ij8AG-Saldb!p8F7(QqM*l z#;^O_tmnY&0GI_BoB&!trN0BfU|xp;88rCB1Na2|`irhhG}OjU>72Veu8H^JXv z^Z^+1>w{Kra5ymsERjuM1vm!oMT2x}{vvVe$V%`DgW~yz=a=Q z!u+=}MMsAYIQi87znKB`+~I}+1NLoESIT^E401y~CN#x}7z!-l`xmBqLChY^zbi(D z_R77is4SkKbZq7yKhr4#YMN-JV_r9E@cfjm!GXNqwDwp~IW=!yGLXy9TmL9Z*Rawb z+Gg7j6knyx1_(N(zy+4B1=!nsPtB0JnLa_^;S7pMUtu1-&o?O<{wBn?Q+t)s;CCTp zH-PI-@;GS5?+~nzMg+eX zmBw#*gkFu{PD>=@UJOywq$(&{D$5r&kFvBt^X`6&5TKvCjDq|vcv8PT#m3RpEeO&AO!#nMSRat6iONUTpUEc2HHX0F+ofw z@^kU~Q%K6*wBSGJIx&hjG?-{JML?hW|EfPGYs3Ek)JM_0ko`L~zyzZi-FE?a3~9To z%cC>vx8UP#fNo7$F@I)u`B!3cNjGg^*cOWOAM-?4QUZ7=%x!JjiQm8i7$OnG@T1NDR(UQ zr=VMxm+FU3adzNMM=vgW2Z4%)gvRaqLZFMzVyXu^D0b3!x{IATu`KsEsnmHp&~J!7 z#MGxfuFFlG)Ld%c0e(LL0BX5Hd(XfLF|m?|1WrI&24}ecl#xsu8wSg5hW^(2UJNd{ zQ#tTGB=-iu%~}zIpPY3Ruv6uS>AQF5*fWQF207H+wA=^kqO1!TmUx8E`rRGjb0LXh zP`NFr%^9Pu$H1Jy@4S(^p+2ovd${5udwvd8PI}2jVsENcbW|3=4F;_dQc_YpYsCpz z=r&Ada0@HbQ9cJx@J?(>YA^#p^-{7KN>4*zzXSCqE%t#C9onM`lTJH(2V{LZc>w>w zFpEVA>BM`w6dOT$DRmU4by=nhz2N|Oojo6{Y&wW14DfM;xu3+McKJ>s|h< zYSB!Qx1`|!cUCw~Ab|oOx|0u#MzXA(Wq>ZidROarYTkhm7=(9qa`=v&ac(=8fvw4X zl=C?4tNf7Zp+Pcl1Y12f!N)g#{sah9_3uCoZ`xyntc9o#mlH~+#3**5iwNR(455O4 za`Z6o2u;@s9N>}bX!22)8fjXEI?y0((gzJmYsTPxN3&8kffjtp5qwI|&-N^frvG>y zd&vU<3d`SO89bB13*C85Z*|O$lYdSV*xChn$Vs>Hdj4+7(cx(b*6CaPrrSsmzvJ|) zpl;8LL|8J~W&Z^+;!K6MvrCX?f|Z`7wFBDtZid7tZzyOSf>7Q{M-2W(UElF;9xhhK zuJ330&r4wPI_J~D34C&}>ARdY;)zv&ozx?Ug3A8$Vi|4!@ku5F*nbKtcbh?n1a%|( zMryVd>u!|)!=t|IkoOJDf|G$bqD}zdxYILm&{^O=iQj(51=Z$R_iA}Y;PMqY#mx4* zv;iiZDsX6xef_n}MVvZN%1irbz(#~$?+$M&`!Du2Sm^*<;GX1#Gm4BIjLG+L(P%0r zvI`ffwyL~4tvlt*?W`$YYN((KrQf@}?hz`$d&QHFw(qhnfAjxqOjW^Ce16J!@&7vj z=VJc#^3|I;oB{wF82)xeQ;#mtnCkL7&A<1=b@q4Q-BLZjFsE)UIx>Y3!*t(R%M1aG z871$Px*GGK;Jwnlu8mc6%{ykhIASZOb)m>Y*6E}ZI9EUXHs09IP^&a9mBqiKNqa5m?dm)=CV@3V zYXJ6)@}H;ouVAU&xt$btp56@h8)WEAtHvDz(5idNhdltc|CyE0{!@2H)(s{64xuO2 z=>x!{8z>AaXk!9Ag?&vSx06;{J#hRT0fX;&0KbtBf5#=F&xl5cZyL z=I;{%IR^RYi|Qr14r|WSR;-Z#NRIB-^MJe`?~tD z&o%|RFYU?oXWjcE10CF9vV`h=cK0fO15H$IuBF&V*9T{3SO5P|A?O)WxZ4zS^8Zz9 zA6(_!x0C662~?OYpXS#w`AZ|Fa(-(56(T3fEVFJQzW9}eg9Fs)@`O56G!j#0CSy9( zVB8A^Rm;BZfUT$2*ELZLFXRojvf~}J+0d!0mz=y&d20Q>>PuEwwPh^0PGwtpUTLrU zEC!XN`adpw`f@4tJJnbD`aY!dp>AxfjFjU?wBtZf1sfMVfO+98zo0To1G(;A17vT? zQ0w@+epGev`W$C(OiK_p|1@C7u4f}ZXY@N# zAD;Nr6JX&`H{40uA;3Cqs{~bg_mr=+jsBMZ<8MpZ5Jd0zCbb>EZ#0ll0Hq%=uy>?Y z<(nYB+#|6`wjk%Eq@ZA>3FS-yZda$73YQG&m235&kvkMf1T6P6+7lrG z!>8~yy+75%Z~S#?7d;v#_$ov%-M;L70*oI!>3@ui_fUO@3}iZ zNUe18CoPEKohnDs%PAH1>&;f=joLA$t2K$uH-@}PI`Sn7$nnnSQG<66yy-H<&>Tdt znSCMO+&!~8RLInX2fdnq74(oGx(QG~?I92{-0s*m=o_SMB*r=;*vz~YZL-4Ti|zf3 zfip7IZD?h?+>m@y`yfw)4fx(f8nrY*U3JIpOuH9EGl%|0Idx%kedbMimW3C^uL9>z zSu3MpLs>@OOdyIib?d%0%3m22*zguU-Okhuzj~=kJXkt?4oEI?~$dmb_fRNbm76bIA#( z5G_an>@K3^EC#`p+DJ079`Q&7WLOjk3sU6HFt6_=yl7PbMyr4Gbf#|xCY=yfGp+co zmnms1$_$nh{A0ceq)I#GRVN2|ryFVYBm)@?K>orvZ2$9Hw*Sz~!H;K>Fko0nPe|dK zA>gRwY126FAg;T?2?9Cj_x&u-G>S@e$sAos`MHz-TQ8(>)xZ3uYWXeg^z4>4hF1$_hE zOg!%p?{cNl>0JnaxS1yaqC=49DZbuS}a-v;&3d6GCM56(fwGR6C5|p)C;Vm$mylSQJyZEnDhE5w= zx(3-7u;NJ&554j<*ROBr+;_DZrGc$A;?bCwd0_>=ZzJ{Lo)zOq z|0OUhV$V|G6CjXFi~qL1;T}OFg~m1Qi*eFN;UG;KOVUtCV0vg=B`c9du@58jRuGH^UbjUZEUTl$Fl&qtXyq`djzkxYg6SwHr z-C&S!UyQfdlc21%BY4jh@q5H!F5e))x43qH0y*kdMY(QBx0|W;M?rA9iv(>joobygd?RH+ z$;f0#m|sKW)76I+zXp@~x*L^kBr}RX;-Uvi;LCMIAOO=`2(8Mo=Gm(QGzIVNsQ>V7 zyU8Dc20JYV#uj2~ zW1><1aqp2DoU6S95ICrtt!e#POUnvt+_O@TR#dUCyYz)yXzf_+o~yE}+alAclE zR{|D12WCulWVke)2huTeA+=QwG%G`zc-MIqo%4B%aGIhgZ@#OB@^J}?S<|r7=<62% zwgae$L`ux#%pS?s8iOrM;va${b+_(pZ;)@ZmM<(g_idNFa_?pc!-d4=-r(Je=2ENukF+-&_knHNL_2^xQ{%^) zMKy_o{u`Oue5>HZ26cE-lP`5pb?VyWqRyhMU-(q`(NtatgPNBH99s23=TRJ4F=azu z+(apI2F6?AWOX~O^Ud2-`>HJKvI14V3~b;OTt>&DsF`Th39i#o`6%9Tpb^qe(KrJY zJ)ceZrvdLxV1u{RuKB1kqwqm5pRez`_W0%AERR^GGB6N!9Y@@NJ~IOQ;n~hx1mCI7 z-Z(U=pC6eb<2p%4xhgpbwX-(#>h%VwFdZ zz?{Qg0qf*}^c^!mlNsSJc~hp3j7gVgwt43 zIzRHicbbPi1MEwtGJgTp5a?QMY*Ex3V1Um%X8AOr`T5n&TvGt|T0XJ)$4;Sr z!pfF}KgKjXg5{}RInZV?#)ZfivTIdo%<&9k`ezZcXz@?Cl%?JGP`;i$(B+5CSFzFdn0#~`gM_U@^vZ0 zvP__(7y57TOgTLY7`Sa1sIIcCp>eJ{ph4~UAB`fz&9pk=26bSF859h_l$M0Pum6Y$p!0dbdcN5?a{dS?ngns*G|c?AFFZGKlQmHK7FJKj*aEtQ-MnsL%1J7obU?(=yxX5;@o4`hjSqa)m&~^{8j#j=e1IGiMFSy{l z|F7Q}aadO-mo??5L-Y#L)MxYMBPBkioT{~5o^#8Tr;Ib4ef#_vA>BvkYwFBN6=XVn zc%K0fqxQ(aP4|v%f%a=cl==hxbPK#~cz;8`ru?}%llfOcT8QsS=zj4x=*D4(WY*2= z`MO}AN9QpJJ?S-y%D*{aul33fs$w>DXsfT7gMLrUUVDfE3O!Roueo*lPPcUCg%JO^ zRGz}4(K;5|DC)&7d}kNlGveI|D467@s=Qh^E?bq^fonH6-b7wT^3~P1a1c!qoks72 zgCKq%Z_d!V=l6*Y4*)^;yIV@|v_An5i${P}u;D{KE`F;`4Kc1OOhcXt_rLM%<$&_w z9c)~E`on5@TWSdmNE!q-I>dFONzd%*^+EFQt$wZ}BsJjbM*{L}E_}vwvoP%6PVW*1 zJJV_xeM@|eqyNa)2+{=g4fjvSM{Zfur%uA(E`$&>f7SpOtzkmil{TGR?T4%LKc`E? zg}jHx$sg8xILoAeR%O2$biR+GF5N?WBgPrUg_k@`2Kk%j(_BuHs*a$BJW)xwm zfqc6w4buex^Kf2vafJS>%pd?D1fRioYByNvR3kNG;JY7!RF4K_{SDKLFPnHmDUZCIO_f9SH+sJeby>e@{rhW#7w09d)rTRn4 z^E~KVjA)QnYA`m(J1#l2TjHo@FxHssH3E3OyuVMQWmdV-#dohky^(6ZnSUju54aTU zArM6=WMXTgJA7M7#H;5kx>WZm$X|0k82NO{s|$dm5oG*6=r`x%k{vQ*XP}^dk(v7) zty1VI_lp8^%)rSmYshpkFiiupp|+|;gZMz7V;{|FZnP1gSDQ}^_46ig1va>-yOP-g zU=#;iz5u8c48Vv8IxYf0-Vr_rt)MWXu4swsepKo3KXS=DC z=jQ7;aU;imk!8ng!Fd@6{0l0JY1S(!^+H({`-uh+Ww8U(ySRNLesE1nzEjj=wBY(% zk+zI{JMbz@zX>=`Jx$^E3VD(Q_AAq3rHvy&wrxTp60&f#e(pdbGeG}XMo4OH_G$F$ApqXysA45J$-NYsT zYQi6a_??%x&wNyj#B6;3>WCHN{;96d@r?ro80uFr3BTdk&08wqQI=ZMR-Zfv_919I z%_@&!zXz3iHf-$mbDA!CSN%n4)pXUBZW74vnt$c%bm^h0zYYn!2oF1VuN}i+ffXkc z(W|a4D&(yWZ3Ra#0Ol^rBW}@@d`ib73+rr$N`XjaIVmQtw+W$fN~hXbXKW}X9zwzL zo(CFyQB!Vifpo3Ec8&S|)g4hrAR4}pA%9gb{-=1OGeD|rMGMXYHjJ*{K_DFTEY&II z0KMJl&-;7)me*l+`E|e5=>jcr9(+r;rbDgyHdVCJBqqn47JEkpB-us zwOG+8WV2q$ein@U+1Je;>2D$h`wL*gzqW&W;2T&XVCy-8332j2l*j-8?-!7c%d|5Z zu1Ip{^&iXX(jX5pe|mZ6)Z5i(&SAUu=W(wyI%S4pM6Oc>By!AG>2D?NOq-62 zGNg8DdoxyiL@_z`Td=4f*{485p}PJkocfHN<1WbQuCMgJSV>Gmq8!E3<@q?iNPq$( zM#w5E$0$rwQ+i6P=wNbc;AHN!D~xS4QZD)1BN}H#Z0?PWqUBn!(#b+o>#5K-OQRr~ z0~kyR`5#ic0vDZ|`r^_?BW4|d5JTBFV1l{D2Dwmtpc_F(G{fw5r2l1a z05zp@niarl6!6V^1a$dgT5MY?mcH3~j=oFvbs{RJZxE_v0)PP>b_OrDoYA0wz?PUS z0SH(Hhi|agqdJa3sPfu~&zp`q(~f5j<=IxzYJh&~v~rB1(P7c(;p9+5Kf3v*QCJ4o z5ljfH{It8X>pQ`-21_xjau6C!8EeJFQUj<$LNJ#L&Gjc-H?O=QK_Umz62X-K;aEpZ zQb3i?XJ4I5Jg@~5X`Keq5$JZwvx>sCOTADZ|KEuJuAW0?fxHWJ<4}LH=uiztVTh=(@{?NG1n- zO%HWDL$}jHKeY*}<+gh%OTAhkUTIJlYhwiC^o#@f6IW#O<0bY}eKcLu%*Wa%FLb;` z(vX!m435hqU3@52t#W{G^=Ndqzi08QK62TyNbnr`cGZX$*}=SwnC49PtH@BKyjOX3 zdS7NRZk@}Tn8+if=pL;CAirMc`d%A*RAlqxrY%({HBf z@m;=Z6SuM^oNb{9u6JHte1&Uu(XSQ(WctpaER0iy2ZhsiqvIpjK!46IuQA;LkAsZE z{no9UMzBLQeB)(A^xna&0r1<5@^?oJdePzC^g#=%Ya9@@jZ;AZ6lW6q1^bWypVgoJ z3=x6Qr+YNw(I}Zt1DMd5Q>e;$#-Krec-^v8NG;2yjGP-DTzh9k1_2m6SRHxx7O-RI z_PXurg6d#kvK(yxE9EhD+J~f30BO@Z%n!iCJw2RAcuo*-y8rS+a0+|`loba!SZ&$} zB`P%4!JYT0nEVwq_5#yhzFI{cAZ< z`|2Rt$2n>9%}4bfhp+ZR>mMi^Maj}00=zcA1Szypm8JUO)H*#?wI{Ea-!9%`@XQ-W zWClF-<+iZ^ocxeJdW!rsG9Of$Cv{|0vl{5vHd{%fTpq;uSfOIyAT4uwr)8dmG6XDu zUuZt-&|t-XOqos$Rl7o@@m};sB@>rt*3|9h#w%V!I;eX^tDAF^X69a&s=ciHzdirS zRh%yhl2y5CCuyYX{)QN;ouNhh4B)rz=?vs6CzZ>A(E=b`10bjFPJi<=bZU~0S|e9` z<1z@SKtH0s#xlDl1GuCr20&MV1-cCiWX&K7BIh`pEXgl`U6@hiN@XAbW_uJ52=ike z*Z~zWSYc#F;W)9<;C9i3>MvLP6+HOhx+z|+=9G@Td!oPODGZps@)yn`*g!#4p2QWd z+3rPhHrcOwxBt)ss592Tp!5oumADX~l*m&^JXm|MZk8DE zaOW$<_?_T&NaKxGipq7V?Nb+3t;yDe#qj%0)Fp$(*}`P17lsa%cxV^%R*k- z6tplK%4@(kMtUIF!4W$zbAFP#NYm3whhMp0vrbq&pv;0NZF z=(t^~pZUW(lAL1xv%b!0#HPH?We`8KXq{&P#b*J400-Swi7?KV*T^e}P;~~b z$!8(YO^Wh8jvr~}s17%ema&tHlw&23_W>ZKP30(1gORe#B3U`9HA+VBvM{p2!95^4 zk*n!V2-raddGWygibB`wP=#=~>N17=KDVZp*9G5``>a$m-m5xzQ`SovM)i3~&zCwe z;B{lA&Utz|1>jPbm**wV#%oYZ8rsth@Gk)cdwPCjXPMX|2tZ7Trw5cJyq@zYOC?s| z3J&0!9vn3C6S#gDmje{g#FJiBQ|4Yk+PdtC2_btN`Xj@m4AibY0#c4q{if8n=m#0u zG_e;40t01mg#ZAYJss2**-i!wq`NB^rqD_;zc<>h6U45J4;`9Y_9}iPK&6c$DF1z| zCMstFV$z!I9q^tJlD+w$00poxw*SX|W@pv*Gf!0>#6N8@;jTf--BjX3r#w3OHrhYjBh`p1`-h#DVV-WnmedDa28+Ml#b5ZSO7pSz zpKFx;N97xT(az5-BBuL#CwZj_Aak3(q8_)xE62ch6s~nIj>R@~)ElGIrKpQ_s&%Z^ zDeom$rN5Tn^JInzI1bC-O#c6gM^3J9{WQ%e(BHlU_rDn2IWKN|F|I@Kt_BZY_ObbNuNzgD1Zc;-4rPx7(NQhX zA)IfaEZXCzQgS@XkIPVYm^v{m2eWAu8_S?-GC+Wv>9H|h-oL|C>Lj6^k5Kfa4%qn} zKQ}4=LE6~Tw>&vB+n&0{5dHDvd;_qv=mde*eg;CEo(rB!z{BQ!-|u_G3OYR9Pa1&I zrr#kn)(t-Fw1(0&kJqj0%DYDyQpy%ln>4K*`vQ2lyoWsp1j^?^(e(oen6>Y}>nYk) zw$5D;l$y!Qi(H7mhyid?2?J#Z>B6$ljDS5-yy?+&oqW;p7;TK`_!jS#{p2mqC-at^I!IVNY7xi#&rUO+7Pnq&)usL0O(m-rc&l$OZ6IZ9vC~|T)z7JL@PM_$+2CoXnyN$3^wO8H0?*0G#pa16%R*V1tCSXUnEZllDiWQT> zPT1+xs9~)KB3C9HQB*T=5ksC5&-LRqvRJmBN~?lzt)^9)o9T6NzucZYeJMo1UF)ab zE0x56kwKZn4U>S<`z}r!wHzD~>y{;QO{6LP4dNB$^I-VAzt6b!oo1cPZjV!dbEkiEu>9;l3%n zTLxfT&vmkyOYTs5HI=gJVJZV?T{LQ=0FY;rP8h(e{4Rfd)?-Jn7$g&MUY!Pb3EE%N z*~7QZ{>w7DD`aWJ?HIQCHkn5CVmK@V{ob!|GPl*8V zKJs(Rb|DGQOE2Vn${qqPM%#JB)*6ODroq3})VVa)j7afJ0|VuepIVdSsXxEV%#rb$ zy28d16@nafMz9PR)>D3#+Jk8#eajsdsjl1)wRf1FF8TpaBdE@MK+m@ZjPN(+fyy)Z zE1LJQ>&AE*_B!UkZ43IY!{(g$w7XOrl)+NG->H`=BzSQo_h={C6JBqx(sEwY$pcgQ zQytZg&6q~jX>~}UH+N`9EK)Qnf20oup%X1r|A#1-!210Pfqcp@0{Gay>fGdVed+rM z;`OipuRu!lhuR~+k|y)!n`q=ebF`XKz`7#&Il@rw{`K71PQ|6u0AR}hju~P0fQeHv zyeNP;os+-<*bR8s2{$7k4X``gNb;2io1BeKqbSB_0r*CM<{}$)Uls7-`N@Mz>*6gf z1K4M}TTtKz))M}rYp$RGviqq-z=8mEgSgjr_OV(i4XTB{Q!2SQv^U?oKfO@0s!Y>5ZE0W!_@Hg z{pueAxb~?6=)=M&vLYLU0V|&qSXTc}Nk9AAEY@8QDnH2@xiFzVtf@!!J3aZ#JlhjH zBffrjoG4s}T%V}NHZFO?B?F7jt4~+o)x9CKF3%ti@}*izfQceILrBqrvW0A6>elq~nWlsQfw!xWR^+BgEO&wQthy2{NPgzubX@=eg9LlF3V;e}q(03m%0NKr zAM|0r7^chun518T1j;`#=rIoLyB<=03WqVs1<};ClbgOTdC6M-BA|2EGKnSc=_HQE zdBOLpZffLSF8kO^cwBztt=>s4o**E0X15r9Y+B8>|CyYDpp(x!qFiG8yM zc4h7`d{a@pNDNhhfRG9-N@+dm!m1L)Tr=y1c}o@!aghe~y(Om2U`eg7H{E}x+A=i_ zzC&;Z(YHEnhg)s%odzq8=z41ia^G>l5vfL&+Ge}ltYR3z!Fd%<`7=*dde(mG@v^CZ zy%B%q3MuiMM3TSn@;b)N%B4o@yQKiPXS?j^^JoKJ3h+Y-;icZ#@NTwi&>lTXZqc6Z zDhT}-yx|-Ll)s|yQGiWT0m&5B zw)O#aEhqp4s8DZVMjJ#ZnG3*d16II-aO7ML7N_Z7)T-$C(twYDU!ebbDNetEEYmaO zzp|eI0j@{SI4r;L1Pnwv^3VFw{H>F7FnRVxsXn29RpO`_s3$c@(y0LeCT*g~b@%^! z@h6gZ;=d)FTeIB;GRpBqn*<_$y;H&d&f`m%B$pTYIr};o0YzAAv`qoWe4g}*BG7}b zsN$7K?MxCL^-+On0}A4-gkq~s9*#YfHbkls0P5!)$0*+7CFbbc^Wbmx`&A%6-7}}Y z%#2iJtGU~MQv@JuTYqD~+_MqRf#XW4){z7-m`hg@yALOLsNMPXN)t}2 z0(OOOagZA1`eGY8;3Ly+UXO@RPMNA}f__y*?Eni=gr-|hiF8J4=6dBxHVOpbnIqnm zWr7|V(5Ps(iP;6p<$Jw?@=-zl^lj(D+XrI%lD~=XG0&H^`Lc}2f4kqep#Qc%K-)mu zzl zUQPjZ-bgY#y{RnFX`PWZkmn#tQ!ua>tsbrXCt5);p4u4j4bXe+GuL!WY0E%~??5Xp z6Uc=4N<$hTFhM|sr?r)a8Zo1rmQmNIf;fE6MXTz^@STbDmSty8o87W`9Kyt_5J(}K zhk%h=9#LNwk7v7>X-lE(Kc?m0NY8k62-3nc22@kpCLCQS8-jDtpOmPuGXh{xh3Rjrj70gLyei7yNhY{SEc2Tk(F?GJ>v| zRirBYbpTfVIPGuNGE~1zuu=D2wi6IW`jJtCyc~miv=V903m?Hp=za}uC4!9;bg9blN#G+!PO8M*oJ@w6>7Xb|UOz&^TyE*{BRQCKU zV^QizE8R?~1k+eleb-gqAWdwjyDST& zOBTWQ*3%i74Hy&a`bYJA?$;_FI;gkOO8%xk!?s4rGv})~G+%54{UUnGJ@0!}zwgA- zMLqrD`{+~#>HTi4|84reHTk}d%1n8bx>CatsP>n&H%up2d#*I0`T@PKk|~m53$*4x5odDl;hhPU}bQi&N@i7E`Ubv_vHj) zNrm@_j>a-1lv@T%Fpo$e*K!>9y6qSwoY9A1Z8qIgUa9hv24bVmTK+d(TItuKqDiwp zh9)>V{*c!`ifxUGistY2-^n(f&QuOxwH0hJvP>yU;)2qNmuX@M{^l#`r9T)QmdqU9 zTWK8j!8ojy*9*HJzVlQG)iH50mOQ2HzrH>NuKKI1jVyI|DQy)6+PK*wmd494_Rjxh zEz&AW2lV+EyE-eN1T+*-rdbG5`Z2HS&l>S8KAZfbTirs5} z+!7u+&pMmi^F{m(7;&Fsf2_a7|A)O#Z1d*f1t^A|;W89j4j8iar}oL@SM|M89`sexj@YNc#&v>4MuFxU(@mof4@knc&^p{}9tf)F>8@_(yUIbn_yW(OvmW z>>P+@MXkroOgqA<9hn^?(TG>=o^J!b2xv!bw?n>8PmF{lgBdF5XI6{U3NPQf;GN3a z2jr+RTMsa?`Rl=$H}{4`uM<_j0&}ZnS*?Wfx~#)fLi|S+q!VPyoDn-TDC6v~xQOC~tx`vJ-Mpv1K1N zJzBw3tUz|@S~1-|3>;K;M1`@_%L^O>9H)_UA9;>3PcWa0tGw0N z=YZ+H+c`{%12lL-g`z1>8E%)_wZB*+DNS~BDn7hed3ViFRmz4QjAsDz0~dsD#s-6S z;Cn`|j*NcUIk6QG{yg? zHUG)R1P118*}S}Ri5_G4SF zk=6+NrLxy+**hn*5+x{&LN(con{b)fjFj)YI^9T=u`VyQ$zi{PqS9clL)Cx z^8&U@zi(%Fih6W)L!Xd?@lsC;m~oV}bG)Wm2z>7kt9&2-2Kq`Xv0z&X&G${f!Nb()^1KxQW9UFykyZBE{o9pGj&TCR2 z9#0Nc^50#{*(ygSLIBpya@^fVXkS=WI6DaCbLV~10MMogQnX6LGwj&Gr=3B6xjxiX z%11#jZ&GC31a4~W%wt#Av}+7d_vd+khQmXr@I7^OkHBXBL*N|kZ&%gN>_7Yyrv}3T9UQ$O|xJikmUUb@=StLritGs#8UY%A?`cBO!YF}Tf;$XKl8_YGR5JK{aq2(saFSwYjX4DIQaxdQt$$WaUYKnK*Iy5 zpKri|%I8+k*#Y>)*)uyhbSwvg7+U5{BNS?bospf_4yRIzEH^1n%jfSa(;R1EBBKTp zqE*1?R4{On+mh+EQjv=!obl6g?QbB(BjuFcQl=H5pfv56MHcBfvEShx1Q5Km4AXau z0hB04;>(;*wDr+$P6&QuS6=ajHRZgx_)DjsO=)Vqa(nMr2QWi~vZIXr+R zeBHMG7}Pg2IHm1umky{7aH`lv0pRH13N#r^IZFagAD3AL+z=e;50tyJmKp;Px&F=1 zx2KLdpt2s4|$~C@n-=7a27{dh6(SAJ^&#HP*%<9ucqAF<&T=-;qyseI$WdkO*Z|{UKh#9ZQ2o@0d%BulxhCBgkbAN3g9KEK>HV*c19lAZt6LSp$+`%q=lv{9<|5hQ(L1N z4u8XvAg_CWly5AqDl{^ z@J5QD3~G-~8zY61Yoavk5Edra_NxTu-3Zhl9lraN_X0S4!V#Jdx*4P~lu@yqVCqk7 zQ=a`D$?rP(;G9W)^kVLx$^LVCB?)$s$|=83^|p2ZHXxuzxbuj(Ct^lP!|KQrNly;l zF8f{c^d@|mTCo7%R zWsH^H&QVlmC+$w|Rt%*>oes$Fl}J;ze(i!3gM+6vwFJ z2QgSe+JjfRZ<|QZ;eV+4Pv0q*8}m>?(J)nNqz!+&XVyIX06^$G_bEH1sWs`DpRvfV zjyp#TE~Qfag*r-i6vJ7UT?2Y-T$X|yfEe&H_f*#dc4BoIkg5H;5*>3hcDk*TU~@p* z0qsE`JY{x>zQMC@I+O_|S~^mNk=^f~fdhWwTt7{g0Pk(48cyHWGu@)G7lL2KI~A1F zLUJBF(`oBKSni=Ey_f$GJ#(Ww=h%g&s?FaH^0F2W%=XWA3us`VOY+ua3Sv}7Q+9}{tWs$N>2NEicT7`gOSv- z$WQG*r?bcR%5U&Sx+jhB<^cSvEP_EI5(?M)xF`lY9M|RLmGad<&qg_SI+umh`RjK$ z%EdDlG)Zf4k2Fv?7SlonwJro8Bt^2*!e2PCoFzva&mXU#4FfDj0#JJ(qpYmXqN%q_ zVYejg2Gcx|Zz^s17xD{_VCu_Q||HW^@yn9i2kCV zzgnW--FyL zB_VtoE*__G0wN%GgXX{>Qa{uJgS3i3e}Fo&aWWq+=L02S&1c^HwML2FqPZn7LHxU9 z#p}>GPX9%&$&MdQH3lKaIE(xxm)}}i5dq$f~9fx1zCyn zz5=>UCsU|(QpS9|Ah-5r)g}h|{8Aj;2B9Amm4Wd%bWLeIJy*NJr?jxqtHsf)>L@xK zG3Lz$4SCHg&pB601UW`J`bL_YkKz|qpwgINX)kZjjGfw_uAjkDf@9|oJ(7NCP7rX| zZzI8gxW53Fzkx`X@dQ@1F5!p+4iH$hXo9oJ&Yn!sQnfB+A?lXFgc+!>mhufbn2-}axM4}#93GfzhR<-glNhBCtuvT? zbkpBYpn?gF@}j?48{~TZ$_>xKd}ad`BIl5fN5Q$vP2@W@l{=@aOCANoE>euct*CkC z=_Hk?jJW0$LHPtYFxjzoVz>}aI6L08MtMeo0zNn|1_~VNbYr9QTNu=G-gAD(zyd2| z4nJxsIaKd)zw?*-2mMu2t((ut>Yw)_F%>;cQ!)a*>LV2_& zpg6a;m_skh^tK$wKX~VHkxo-zhsz10x>Pewcn~%-)&r+I5%wI;FzR z$i=h%m;Omq$|es;M+r@}5}8GjEelat^5R>V?%hv4)b+c8v*Ya6E8E=ip)Dcw^MvgD zo#Q`UIZ*LaYxxif=4#;s1rL?yUA6+{rj+zYWi$+{C8HoOe^7F>0a)Yj|<5UMKOu$0KvpjdQ-O(D;&R0+o zRto4i7L+MMS&qo+VdXv8YSrOP%A|f^9Wgq}Y-Z(HKjw+tocK;iYL=B4Gm0HyjZV<_ zgEJKA>2szI^GpUxY|bfH?CH#%hUf&$nFC31JW76y-6>_Ax(_p^Jll=`Zk2i_o-bzy z*QK0m^{KqxceeDcz9~J+Ip9-1ZVqMPAd;>xDmuPuRA6V~5DNj6ShfvN0 zZ$4oKsq&flA5xl0Ce+z=!QJH+?U*V*#21wxZOSG-xeTP_+L*tdq=<9yfxwz+s!-$; zR2YV!KQ;GI^+34=9X495m!qFCm~^js5TXpZm9Y|007! ze&h2)iRbK?Sdg15X~>^MBDO?MW6H`Au`~*@Ss$?doDrDFDf~;7YkT`sg_496^T`d(nN=xp;N~{oV47ZFoxW z!xm~VVxY1!+#DlX_R6~*9h$F)RbN7^4At13ojig}&m%!)TuimK=0eUap$))Yr>qL{ z2DFpn0o>AcG!n9Js;akgp7Ld~-Rt)M8~q>hyE^+uS^7mZG&RX**RFeBM|3`aVc{vX z9H)u%OYwKjY3B*Qr3av5cXm96>zA~5T-=iHeYjJ8i3|I8Q>=CP5%s6}7kBW5f5+^E z_b3~5rxOLV_NxcKa4Sp&L7_lOP98uCVyI4(IWi5dfr1)Ezc_bDnfOTo&hs0#o==pp zUe2LuGvf}abM2*nZYulsuqG`37F_5DJMrfmxDXJcU$FDPCa4|Ar=W(uApsa+JLf6j zh3UTw`z`1Lbs_s$+CopVSV4@%3j=|5S%Y%}Q2~+*8Ah&!NPszAK>0tKT+iq-J{cV6!XrBb9h1`1XhJaF=qbkw84@m z)%mSo8{JlKKy#nQ-9tUu@M#epv8X`(*_999ThC1woeoj{*EayHdl+3oK!MO_vlrWm z^1Wl-#yovE4kDkJkFOWRNL&W2=2?22Kl!WAIs0Q;=@Gy&wkU?^>l*^1#9kX5@N!1X zo-2@)az+Ck>WA_G3;>G65FR_}9-`3@jDv|Jo%}k#rR-lGayH?cPRZfi(9G)T!!yo*HsML5z1Lr)Q&{xHoJPWAl-QzB_*B*3nYQeP^vYtik=Gt0JjOGLbHVFD8 z)SWP*kn&0WN~%eF&$Y&dEu;1OU3pigK6tjT$DnjCC;nrZCr|(#`?qHUOzqze4s_4E z&$mgTHAAN!oPH(l7Ny)?LFGkZ+u<9=hCX42IH@UM1=dGkMYe_B#>yIpqXJ0-z;T8N zeN|-KpAm4Ej>wxFm>uG9C8=wb&BXth`-vydBR}u-iDfjOwI?4wJNN6Rj61(6&2Kvm zgLY|(Y*icTN+1U+XXR`stJ0K_&JMD<|9vZQhT=EDRl{&xw=0@5AVUtB1es0HtpgUt zW_S+o%m>=;`hPad>bffU1#M)M9owm|`Ptw=f9Ee6uTXTol|&|GsPp)3C)ZA%t0bPNzDmNc#`dt zXW0Ay6%Q9XsoXhs=VmwdrdA$>1uP~{=V{@-<8_|roGcC{TK6~yr7v$^MpfAfe-{XV z22Md+IJVOZ?+oi|@c)y(E28E|{N^mAEpZ!rw6uXKHKO;Wgi_wH39pZ5&1mKN=tqO_ zMftba2j;tXa9o|`onTi6>vOu~U9P5YL(6^w7_@$f<7fL1PUD)~mVXOvHJxf48ajgj z>RxSaJu7UeHvPJJ02kODUH-2k8Oulj8BO1#x4R`5e8)%whp5L@Mk04lu;g*jCS}(6 zzvbn6{=d!V0tt3Lw$hplGd6&c*4J}9&S!Qkl$i1m&Dg>lS4atRy3+i8A%&ccFkz~< zd(Iv)U0U>)$UM6))RCyw(ln{@X#wT&N!84Lw7x=Xfy<3M428A_CV}&Czr?Ot*aVKD=@9!^Xvc`o2Xf7fwSl#shH{b5u ze>l9&hhis13~c8F9P(241!%s7o;XNz`2;6k0JPU-qiKdSO`+&P)H7rrU>}Vta{t|Zi z(dgEtcMdax0z4aO>hX1H@7NGijLARAq^Y|*-Jxbk1I4sbO&K!gT09!B>=LGoD!C_s zV6urnxt{R6RzCgTH_-%d%InzxQ(E1d>!$B*S@UW`NI7f$AUznOqoObN_JNG;p*j|s zu_R?7weH(18BvE1Xcp!smULM2QT17##Pz4B&a}!d==a$2tfX8D{};(UmDM4#Z1eqg zb{ve@-*!^L>%M=l8MJb1kP;bS(?e{&F+i(CfJj7Wq{YC^lXP(s#ybnMq49%j;EmR` zFhVnp(7WIrxN}B^?q;CmvXm}x?ibMqQc1wK1bSut@2A1*6LpdTWf1baOa+})(f%fr zOzF=c%<1s0_;w1m7ZmbiN6Z513eCNWcorsqL0hKA2^9FGp4nvOYrRsCBBsQN!&g== z@Cx4^fOW0s^xg4z@Zfr$+KTf!$aYxT&U=qRCU*+|l>2jF&lu{N<}@#C?twayT5y2k zQ%F5I&U)D6cu>-6^E>)XbNtnE2LoWSQyFJ}r#+ac5gMD&$f+aXZ}LtzoO9u56klB! zJB272acsgwR)-82c~(CMlobcOQw1E_WQhjbJ9Tb=I9-Y~zRHkOpL-Os`fEzhHQGA5 z35&mDnmN~X<|YkyOwp4w6nEnRr(AD!g>c~$(EIk8^V}ETVkZp^J??t8?>y1ZA^zwr zhH;v82z^@FZ7d)q-equ(tA8Uxn35btpdy{0nX#UJ2w_N{5ub9x)~Sk=l|cZf$8+2i zhNg7*&waz=a-vn_fMTkyZEcn z-nGaWl^!V{0$eyH;T){g_e^znq^-Hgd!7rH={Oz@eq9cYu8TT&C(knu|3d+d?!W`a zoP&=C7w#_0y_AJj@N4ybmF+u0N-&c-?IiCc)$y4dMEC*I{jIO}gq~_DjPRW8_P4=` zdJqqzBANw9n4|10wg%<8F7^6f9D5zI;cp}b^|#A*=p0H{aUQBrnNmBA0K6CIlvn^X zkjvp<7SVY_Fn@PxO}CaUNIRIVdo&V(b>3bgJM+fjUov(*OC2`s=Uy}D91I>mJ9r06 zgcK#HZ$C4>L%q+dvs4{lIGWdbZgAv873%0K`{%HJy6A~{=wJYlWj`1ITQAk&^X=$w z-IyJ8z{n2xJlccn90Q>(KQH*4V120WfL|AA{s%lj*-|{#DzhFs+r^-P9u{Z~d(lPC z39+k+Ab@~hSSRRzq|BrL!RZGBz}YVvb-4K-^vCKNzJ8fUGTT7Wc%V};0ttP?+a<$0 zC8_dRxpU&4df?id2YI_r+Y%vw=HJaY!J+kV4Kyo{BZtm)&*RHM0CfdZ_Ommko!~sf zSD~gZyW1;6=ewgr-UyFYuN&PY#8rKCu%n2eG&)0Vw8@0^^WU?OaSgcyMgnLbISnJa z7=oEqbB&+vNgfOZ#b%l3aJ)CyWJrc#Ojp zFyJkS@C0U9R88AJ{fEzCNcM9cOLFST`D#ml86(K?dp{$c9lV2RZV1k98}D zxl&3(t+6Qwax{RGd$;U6G+`as(D+{*zs>(Uq!jAiuV8}+QK#aBzLoB1J(12733vjV z9)2d5#U?HT2VQj1s4`>Q9xrdgt@ro#^9v-3 zL4kooi|DZO?|x+tt9Rf5{D}$}=Vat8#~y?X8FyyR_kR-;L%$_->ew5{9zm~$BWff~ z@0%$xlBetc9HJ?7&Vh$24F7w-u@SjUfb)OY&v3P%oKUW-YkRP0=AQfRct+{0q->3C zeQ6WjTww$C>ZHI#oo8L(1&f}J%5?R@$1-4YwiG^i$^Vd7t#eDe`{p1(jR-(H$));tx?F|hBMCrJ0#w#H z^Nv6rd^kC4^+H1Y#r4L<&@QWoy?^g6HAQ?VI3)(z$^8_bh!Yxe=m_bRwU*QWwV%1^ z|32K+7mItSyejhZ|NKFKa62i7AbVOA6Z3W?)^}_?RNx8iFr@f!l?)Ve= zKjpV*{Lg%OJHSmHG72vT+9ro2Pslb!87Q5SGvuQN3KZbX{YNg>%QcwheS#LtNF27k z=9UU7$+ZZB0npmr02nLq1cpj}pe3j62x4$N_n0v10?rXwyyemYN(>nV4Ltwz*#QOm zmeQUeO<<+5aQz)npffP!{GbKEoVp7@19kj`vM7AcfC9|{xa}fg@q;=`z?HirEP&LgmcLr#zAOuJy1k&^8fO)0=B!88Xp zq`7x!VDu?hC-#6Fy7Ljz20p1#1-KTxW6xy}{AfPg`libcs5Mw{hSeHLuF%t`&LOdXfBySR)+m9XPRH}rY z*q?YSsFRp?mn|>Od4$OO93f!&AKwzNcL-q49UV=)W6qhvN-Pa)1pu-f=PSYZKZ|k< zw^Ih6^@Qd|;9y9%Xp=;Wixhf!rDI!n5gBFe$%w=ZWPsr$4^jt%A&>n)ftUOGpS&*3ns?*bwTr? zjDN~qPmmkcQBt4KUpD?`^%2@!eM#Yx0DvI( z+CzWkoQaS!N?TkO=}fG0pi2g=gohVMM4%OePg{&4C{Q1)AntmcNd|S3AV92#YTdPfiVJmBnV^ZcU&MZqRw0J?h#&YB9+ zG3X^JH>BazxNy4TD9711k0nI{IC?q#`BI0SCkP*{BOvUqe{ZUVzm8L*4mj6whTNU? z6m$lS+P97u=PA1PP9_P|q$mYm8U+b-2O9y2&Uy}LU=mSx7g@kLoTqhkDEv-f$vO?9 zf%@snXy7x~b$W>~3(^QH#~PmR?uzzCX&0Zn*~f28BFEB`A*5y8oK0*?JcvdKIJA>9 z?m&Pxj`W|k9@p+ueb@)J1I7peSb(;R4?mA#|2mHy}gu(+ltIc>ZBhvouh^IrUE!JUuf@-H)$&AF1nKh0>+G#-oGx-NNKxft%0153->l%WuWhJDazN6#+5DKXdzeb;|GWe#6 zr3;vTdRhP;I*5@23jnmVLz@Cey6NGI+qn-xGN}j}E5QGnTbcpJ4a_tVjiWsHjz9_m zotqAhZNzd~=L$fY!8U5?lg-!EO%~?U1rFjfylpyC3$8Bo#vgphF_Y>6sMq%B0hsnKB_E|w3vxvum^Xr@ip4W+VCO5l}qlWtVi86N+XoSHe7cSa!jXI@h z?arlnf8EUXX|Cdf?{#5Q>o(M*p6g?Ha=60Z8+4WJ%M?|hhMn!dp3aZ@+#oAe-FQzd zgNK`&dDqbM5+*L`TN?{R>uxXrcM$U!qibi1d0G^R02=+IV=u$>J-(B{T8;k^obzCS z%F!S3zW@NY^ba-q^)s#A09NTr^Dg6E0wfqjXa1dGIROK~i`W$Wlb5cNtwzcD@ujv$ zTm)HIa%jLy#7TdN3S&%vOY=G&G)2bHbmZmV>0Cj&pwqiy==QGv1qd+MPXlIU*Ppyy zsOXFv(M@#V0i0Sij5~KEl$3T6q0mK^GFQX#FM%gB|F_y35De3{Hy?}TMb}B+62~}I zB`H*Ump{AHab!%<4lscR(O)^Iua7OVSWdfq|9PIDxPPia%Q!pp*3PwOkPhHL6LeHD zO(LZX0$$4iVD{(t*sD{Y+MXH!(6`d`05`_u&~taz!@(>W99Xne6+lNtG=(&@z=EDS znL^*}SkvK`soE9zKar98_yDnO?QG?Xe`&2`&K$)h=z%uRGMNJMoGu(afeyPm?>mKZ zrB&{(rR^pqamxnHZo5Ttv+V5W+jQ>fag*x1I4P+fK=-bnHx6pxW_(u1<_&-^tsaG! z3k}tacc#w05~q#wWeM?1a%d+9DQH-_0IFs?R^v>$k~>b7PP+|dKdbxScQAU%4u%Ac zGtJr@5$dS_mhLP5bCPVE#FM0W5(Q+BUkreKPJpBU zlo$XBjy3`V>pmGYWp=O+5$yJgJ96s8Hw~C51pB%}iORuUWXw5@}m_G>Ex83xW;SYxKhn0*@IGAg!ACBml8qOlbWDiF~Lm88-F13|3+<@^U2&t8$t zD@cYB09%KMO@-g_AVG}gA*UP|hSfUDQTCs@{@45L1DEC2%Sat(UF32qhstkH;6My@ zm!2VjP5JjbP9ghR#vQ8Ajnx2ffZs*0#-vi#hv*^O5ZrTlfl(?(H|UqSLamk?Kx}*0sSe&)73}y7~3FB->l^? zgxr8}D8F^PImhdf3EFMQ3EXRtbY{S@?IjvOh@5xuza>S2w1r&)m17}BCxZnJb}RY4 zhG+85|A}FH61s=4gj8BUni$^XFxiYs>j_4rOFzNq@N5CM(3%F(B|wRka*}%@oF6#* zPgf2~pdOw{5lYHGn9FJGkNqkr$f;h>w8Nj^u*nlKfb>@bIH0n<&tljAef3%nJEb|y zQ-l>>wf{F5cAU)bo;Q14@}nT^cBCU48Sq4BZZ>{SdpDg)y3fe(o6PU};(&E}UI061 zJ!(LKDzlQi9&|9K-A)BtH3$7jYqWog{_5vXY>sJ;16Kb@#XrG}g>wga{M%UtN4xRm zmbWLzKOhg@f^!lvupHn0n;{^S?TvuYX$PPpayYd{o0{9Tj zGy9v4PbbdK1*Ac&`?XOv0RTcn>&zmfA*rj6pzZ#>*k~d|_|O0Pp?-2tcKz8_0Sg|0 zG&*P*%R^miH|gQb#Q!##Ip{a`d2?VA^euQkbd!aB=6~e@g!w%OZhSHTxXv$sn;m`K z)#s|G-K8!N-ELI^Vx+Lb8LH-kyD2TR;Js%mm~n3c7dimYI3quwyZhZ0g_*?3i@zO=D|cZ3PkW4pLyl=bZd13i`)|okA#S$n?l3c>WKA* zO`9~Jrq!yvfQGb-VKl>NCwKktugO*jnKODu-#R0*Hf?0rd1pI^{d1l+&;Q9mXU9NO zTMGJRIgil-y@5nK6Bx&LO1)Qe~KB!EM|=oKAweg0rtYyc$GIYknzdnwQD z-F-dQ!c+bAP}J#AK}`GGpl9^<^!c?Scn*O~w*X-NXhW`~{(nE;lEC@B4G$LS3 zb;0>sM&LJ!L!iZ8FMP-ISffa?d?@37bJt|d{l(?F=e=pR51i0Jf3<=8a2CLXrhebR zb;W*es-oObpEgjza$EI3YgHb?9)`RvfMjs>XEgI?KPPES=mhOQ%lVMrFmUEP;mH8k z37qKF0S8V4eNJbSZSbZh2QW7<4?g!)fui62t3k2eq+MT30Yac5(8g*KjPB>3dHsPW8 zmO9_K!|sG|N$*@FM38}8!_w5yXY5Z`z}?4LEkSC&41(1!gEeN}tdZji+Q4g}XT{XX^I+RLE(6qE?{?~iVVTW}h&EI8($jteUN z;T&xUuLil*5OR_?=RcM|9M!Wp)y<=V)#5!44#is>;$TPS@Ims5u6=R=;Rv%p!MB`l65cuccOLB+c`8* z19YYjrhp;5FrN^rR*OAcr>C0Qk~E><+WQ!(q80@G!lo>rQV!E!Y{TZaJJ&uWjFQ+YvnA z77p=psCp`kww($WCcnz}6o7!=l$_2g6!p~$UgzwitL)6&8;IcMJBB*=Gaf#s086JG zZOH*LJT6?jfY}erAj@pbp&p%$$;^7=wBJlLcQ0Sm?*Id99K6WWU*&H1-1o6w8O&3p zfZYIdebO{GmmK?Za`9FdGOZnfglhR_snmy61i>yA+FXJkSp!7uI zL*F+~T04Goft(`FK?2m!&JVzXC(q0Y_?r+ydY7;orC*Ys&1fhw$n?F_V2GQ@M4k7p zd%C9a&x_6zdsx`t^FK}tb)rOe9wWVg|98VnKCHP_gdug#5ikftTkdZS3mcdF^QDer z=YMZ{QXP)}&2PtvKP7mV(2uRZMh@2+>p{nicaU9#>6`Sd350Ub{Dk|Rii?4TZ_-0W z9h0rR#Y+qTbo8kVfhDd{eWx#{3atAn1QD2$cg1_pY@1i7%2*xAx0g(+JlT19tYJSd7TTy z*eL`=|yU{uMpGFV3di5T5^wUUz>33)DYW=Fq z^a1cgXfAhAGp_bjCO@J`ousAN8I?IbOgK0A99H$r+L+(}^xkT+sl2Ar9RyVNc7*GYgJ zp8w%Bc^Q_m;GPQqG)y>zsBYS`Qv!LrZn$C$`XP0jBIy?w&v()P#{bsU*i#_hZfQX` zsdDIL5)A<@(Yh$Anuf+4y-jwL)83apKU|LTwbdLb*a5rfuV|SdrwM7J2L8|XUqs*W z=g@3e5= zD7umyjU+Vu5QLPS7t#TFgx9V{PXksYUs5=hL|A}nKv>XOurq$_1a6+d84qnk1=kAB zDNveP=>qHT0xU{W9;5N_3kD_+ZlD>B`@KFd}oV#)Jli9|` zVZQ7@=cQF$Zig2+2YJGZ-T(k$o{iRiwtCkZBr#Cz(Rcb%?2VO5hk@Ly4*fX}3FU8Q z(|>i<@I4>OIx&H1sF_|51eE=#pT=Ozzn!$J!m((LC01j$Qmb22VDRw|SqAdQJh zw^-L}gE8oorKiO*z`@>q*{^6ieZ!vN?xUBK3K-y`BNLS2QXQ?E*?%l`9ACPw>*psw zQz}9O%qkA`0FzO(V_zP+L4zLMdxUp8ZgJ-So&Gn(2mC+E;2~0F)c!lw7DH!G6w2lu z+*xZ(fID_De^!3Gp8s3gda?&&;O%(B|DtCwE#Tbacf4cE=-{94xuXo$y_9tb!`rk2 zY=Byd6p*NbX}5BYVEy|wc(T?1`kD*?lh=0x795zsVg5&$Q+iy2kAPu*b@;2k`Da`4 zb-v>{0_PkV_HlOvKyW$}0f9q0iP8%G?%pcEQT7YC68%rQE=_%Xjp!VlB{!C1-y8r0 z0??U%;{f0UB5g=LNGl)!2;7@CGq%V}vVRneS@-a@%X_WXy2gpjq)kJ#(I|p6g>Rh} zQDfy3{f|rGJTtui1RUV=YLmoJ$7}$!2!WG--yL^eLg&!vZj(BFG1S5DYjuueHc`vd zofl_WCv!eSz%O^f;;p`P^Z2w}Lg)-<^qmf#v7|nQ^f9E5&LEjEr8f>|UPx2FJF*Hx zmO8&DcbOfMAk)t|!KY@WA7m0-D`i_P-UOQPA5ep;P&T1 z7fEocA%=k69kw+B&bbJaZsy#qrx{fL=7i+(6w(sw-po@H}MnN@dEUmX9_Y4e)4h=;zp^93%H zm(9uWbM*=Ls|yfsS9!|qn|A*7bCowVV4kk+NL{s^G6oq6%AEXpSI-GaC-hAxc1O|k zu6U;xIWwRRFy9XUOAi)dUHu?S?EV1&$o{|Se>}mTXd0Yh6j*!BU@lZQVe}R??U*z` zV0Ib5gdHE!2(PN#z)Nz(1?p(y0PIbV=wgk|L&Eh0kbpO5YWGW{4^ZYDu&?_nhu)PA zU_3NwMc)EyM&+CBcc=BrNPwG-G3g9m*e`d}Imk*6jPaa<;=EJDbu!?fud3@qXLA-8 zN7Z4qwq4)d;a4~Y*OSv%1rFTKwu2{`m?&T8!9ld`XK0PC6*gal#5pa@R=PJ{p9w54H>sA~WI1;D+^b9F7o9GCP&n7{W zbLduOC_#6=of&u32mn*Z6PA$Cvp(u9 zbqeLkJ>-CM|3Uw!fKbIl&-AOio~`I(UykLmOp|3(?As*2ywEeW<3bTE4e7H^`}~l$ z(i!Irllpl+`NowWb4XnQ0Ct)O_+WG`U%C?`Fh>mOpWSUF*BE z{U`!j*xf~8Yniu~)~A9R9W5uwC4FG;>?Z&O$xPeGbpn6@03i2CL_t(jlCl#Sq>~^J zx!)K-(RApjE@v?ta4@}eEdqoFQ7R%Dr!L{bdKl|0R!lTK2R?}RQWt96+K?QHlI-GfDknjM&YvW;`eF9~u zKXhPomjKmdih=}P^F^y6<@4mlb3I@9*l7y$-ABB)Ilov}nL2~c3&5csg+2ialf$T? zSeiem(-hE7*HhJ6#=ZrG)b@<^gc;);N1QJ%k7pDVxyS4V?zD# z={5P6>Lhovbrk5=ZN7&q+h+uUo4nS<=_}ptEz5dO^Zj<6bRP3B>a@CDk%=%e<>Jp+ zhuf6bjf3<|{p#ww?|uQ6ZQ#n_{p|>d!QSR9sd@qd8gKw<0F+0)ACdR*VtySQ97y?W z8#oAdeX2;xBvE}|^rKurxq;MX8J^pj$Fo^xl0X^Bj>|b@X&@8#0*1j)t^urZwAIoF zzKxY*xMeH9MddbBst#J6E~lJBxcLJnagRJ9ijxg-MT5XV4lt0!X>CSw zpckI3+kh8n2MC{~S^Y%+OYawehjf$jyWTc{RLDl;rWN3Sj5b&_1qj(`B>~w&Buv9@ zh5x+;aHA)0+dN%QPG=0iZT(-va}WH_KH_;xh(-uJojZ^NO>XKDxxCY~oZ}CmR?AHu z_}xVfOlJr}EY`sB%B!H47 zsRynuad>sdAJa(mtpS_XXkn3t8IXh+x-JET7%+!tJNP!Z^`P82BOwf?^P`jdj zl{~`^U~jMJ8FmX1?Wwkm9WIyw3S8KtHd*~MNknvI;hgw1W$W_aL@wHfbLCw>YG^+U zIV(&MQn#;ZflU)*aF4maDQ%Q+gSO-6cDiomZnk&6_K7d1}v4i0@kv!W^vYp2;xeqvHo%u$_Jb66^})9o8gowJtDFw?rt|T~(t83{#Cx zauGTRTxygPmc6;aXL?ph9+aWiI#HL8U$g2Ooc#6M6xzM+xd>J2U$bLT=?iJ@9m$Dg zb@WfLorgjDz4$>0(86^~1XTe4r!dn59x07ZH1|wW?w&I{)0Clk zg2ImfnNQJa`tx0*)G>l!(T|&lIm{pOxesyo*VTzU(=!DkfG>ZICv2$)8;CoO{|O<-@5PShoR zFQo(EEAa&Aj7`5D%qW^aKIrn`gbuj`iLGl0u5(O%{jN@( z6(*3gcpcN>eEFbznyR4vRH#W0B@ZD5}avC}EUadtyBT7ZlM=V{BFRtuAZ#UiH94lsmC-{~(c{}nI&>6FC;pbpHyHpf7bJ@7GXMbf zfq>(qFmmc|NJuv-=`CAU_tH3QSl?OyCI{dqI-HtLplK$N!8`s@J5ohKg`U!apZUy; zbH+j(U;u``L4!SyOFm%~3>hOwp>7#(nA95LVAr62P$$1aWZUet?}PnTJGk?%YrLC* zIY;0x_`q8_lyIH10P8|)LY+{rpmu+jz2ILnc_gI=eNN2`Yjb)y%ZUE}*{f081QotR zc21oTA&@kr)n!$_8j{Cn1B5A$UE;m@Y|ncmp!Y*f1}xWq=?aZUF@<$05><8~&eCG& zKlah}2hRrJrJhxQ11jG5XX=z|eU40ee?Kq+q^=s;^8Goq(H$CQg&>+!_rCWB*HX(( z7tb#H*+54YuC$iZGqETG|Pae?(IQiN&Rb3eW#k$H4y_dEs9j7E!|gCpGCzv*rPx`9k2} z)Hpl&loET{fwbqpSee1&eu8!WZY3W;fQY_8&JmvsfTw5zB?Lu%q^;>JfhMB#jRi~R zuQ2)veE4p^;NI57=&Zvo{r*=qMw+Ppr)Uy$wogIXkOOS}t5=KqoQd@8K|&J6DQn@@ zcL8tBXo@4JHuGl827o#Ml0pfe+u2AvSm6lJQvQc15SsJwQD@3TsdHRz5J#WzYao-J z;X?%bp@OHTMF;0MceYc=IXT*|lwV5PfWcrd*S?O+j!U28W8Iy?; z%FYR^6rX zx(!fo-46L1p3@Dn_PqYC^d#k)tS=#4aX70CVe4NdYTSKlPRmkqaOyA}Ds!1bIMw(x ztnIkNPy@=8>6e?zG!u17POcZ)8MFf^Z*3s{7aYXV)viNr$RYK0PJ89>kSXstcIYr@ z1lWb)9hNsRV1CHO|ImSZ)2!qF8(OK(YFjTh%mY$mM)!QLse-sA;DCR_fU9%X|6DS0 zQ_R@KX}af9kh;TMm8r4Kn=c^LiPvOC;DIKv(@#2{{z4#qM?!Km}=Zr#6hHq!Nh(ob$PLbVsZ@S*5*Sh(wLDKxQ>!z4*^m9rVc8Sxryioc)< zz)rn39WeN?brww)o1 z?3$qS8yaWdB>;m9Pc9S6OrDMoTXos#x_fp`%5uh@H+?GrD8|goT0rNk44;5wUdSu>^TwYUtD<+wok$(FT-%a7@Uv6hhH6(j$Cx(P{pPeG|~{3 zjSU8<{m?fiIC=%wOW8Wr?*JOL><>$WJJ7g%ydxMVk^&6O<^fj-9VrihuyJ9}BfK1! z@1N0`cd@zFH`I&%*TnxCS;V{j0U#ZZV*vrYGpnbCpJ&e6cU^wF?5kvj7U#2AKI8tU zd4IopFCG8ArM3zm}bqIG;hpY#RHn6a|G~`rDT`#oA)K|n5&NC^j(QcmB z(SjixsPpxw?k_B=PS0`hPd6=1v^Bpu?5OCS2>>O)G|G%InRkNV*E7rydm*BfWx!A=}^#{!I8S=f(k3(-OPxfM-mSKkMI zn+s)>5TXkqKviTiPhg*TMXbJTt{mxDsLkNAs z*%%6u`j9qY<_~G9WHTa_&cp^$)Sba622d!l$o6)=sAT>TAPn&`NXA2;Ja&hBfN&BP@pMg$nucf0d>~G}M z)=kTyXy=8T2TrO)L#>#Gvh~U=+)Y5mKuhoRmb*UI|AVf0;{O8*EC+x6R6ek|XdA zxHc7f=rGSDr;b0HWBC6xpF=)texjPZJmD(*y#a%W4A+jk6>4l-pGt_uf@*f2$}I8S z?48?);W;%u()4S(9N5s?=lM%1k*3yc-)d;BXr=JCGV|#Asr6;Mcb^9b)cmKH5`}XV zhE8Z+|1LiGFHWzIA>Fb}V`L%PEH9WOC*oJj>&8ehPC64u?0POMC;vkm1x8C`mnlu2 zG~nR8?uPQnF!yh_j8gH5!dNCMXLOfB3?(pN_+)-?1dZLWexnfr06-~?V86Ka==Sb8 z%#dg&4uGShQ^bBGu2-m&N^~_Crn>59(%`9UWvadjdFyMct`l%;+n_+_0q^c!RHHmj z5qe3Kx1_x@bNUK0_#SQ;DbMM-o)~e8_N~%yMgu|Cj|Cc_g#QnE=+<0>n;Ord0+45A zUdX?@o*;!M{eMdtcl;m0b9=znpzo)?1mN!6qtoBTk(+jT``GW+jI#l!-Nv7A|39+} z6ohi=0uze=WB^zijqdC})xVx`I|F!@K+}oGs$NWtZzgEbOCYC~vMF4Db^J^ncus(p z)$>)ftkzfXT%Ss;E4EC*Gcb-^(J9FTAT$L@t z>`T{p+N5u{WsT5w>2@RR7RzhNhT3^dRG-4DH#pCk{Ar}5yPo04$LmS&J5V6ZJtwqp zN@|_roXNW^gR_J*uSOd~O$Tu0bb^WfC;i`NcY#I3{_2YW%_=zAa1$uBcpxE~i6R76 zk8~%F<`rJe(P-@EI@aa$XLN;BKRNvtq9Fc{kNDr6?GYibFU9u3**bEFoqxB(x1Mzu zM|#b3_D28zg!})K%N@3IJ4XQT-wc2RTE!5pX=ecYqMs+=0P5!5Z{!ishk{{}j{RQK z6QXW*)ZrxhXf$>Qmd;T54FWF0fOq(DLSq9Px?~&yvln0k^C9D0B;3vuAUcR+M3m49 zq&?jofb0Td4X$88R);XXGWZP*Bb@~f&%L_y3;+Tj%-5kz&ZYDqoma?36U}mWN>x#>#L;N7!JMi=>la{jhdV6j`JNogs?BlF}PjU zy@Ca?m!bBv?zd>Q;L>sLyGdAdALp&l2BTDGtiBiO0rm_D^Ne#3U9bD{suEZ7xcN$x z;t%{;2hNjoN*YVUr)C#Pvdv@{u59DC(^VHzv2iaGL~McbUG2*wt?5-Z9t{al<^cbc8gF5+pdFspLAzVFlD1#{!N&ey{I| zEa_*G+?pjoPb26A!IZ9t-0&0~ut05#GZ9sB1;|>sKhg`>6RT{({1Zs(oC@^DzI%4i zc$NV4-ew^L+?jcHg_O{AE#l5#_SuK)$$-+P9RE+sD|r42XcueMoOM1dkomtOq$p4va+41Ws*C&H^>idN ziBm_0Pe8Kr|EiHA+Sw6XX&B7^Vh?Hxm)u{^pp!PfJwVqE`(!KwcYVtJ|Kw`?4>YA= z{C**PR6siuAiVS6z1Vqj-;`T9_a(L#IJXQ&u5)^d?f-Ax;CA;2# zUd_BC0d96h9dH^!9lXER_Z%PysYS+)T@E`PG8`pzAkuczONi_}9V(Uo8-Pf;!}F%T z7hicPF&WYLtQ;!17h-U*`{V3b_34BO0JLL5R@2-``Sw<|rKwfVGzeQyk0&_OiLPbR z^9R^SaZb_D!O%#a-^thDp82bWdcu%E4bR+^)uhy>vSI4W3%PRt4%jk3!=qA=Vv1>D zBZtFM`@xrP)J4A+{Z-fMPNS18{+}8O+IX4o#s+n%f+IjF_Q17$QzqSS69Tm^v@IsW zxj922%;QBE5wfPssmw>DnhX#+DOZ#jQV{53qI)~9cL`8U0;EW!7{SaOIANEd`APx{ z5Llr!MzdK}SYMnurgh!(*X<2-D*7QyArj#zB7l7%jJn2p9#Z6I_#~3!%NwuN){6Na17m-PCA}|phbdYoLdT!c4k|v$Qb``(%!e+OK z%;_FMg0b48NSs%N9;nU%gAKemH^8{VyI zW%}b0TQ*g2s>%psbSdx9L$z9U2b#fv7{=$8?S|vroXH86dGeFW)Ey7~aDAP?1npO! zJHO7FvQnm8@2`5eXOv#Hu>z<;7M(Rbb@>s^Q3GzCer~S)@OrWz*T?Qx^>RGyUA{SZ z)3Y)$l>hB~hM0+`$SHB0-)p2!~S%{ zF>q`LUAknwplC##A6##$nuL!5vfSqu0f4j#yJ~IM6mvgi7W-?s4*j@|1E>GpOj-SJ z1Uf~tI`$X)*_h{Sh+{4@>{=3?uL9&uh3DI=;GDFJr`s7xeZFp#UY8p4HUEqCg*ny* z?}HbG!e^G8vFc%h9F;Ck|B`=WD7fz%okA~vHRAPC?*FIPl$$Yy^G}~|&c5b_xH=rj z;6O4gKRx$dhJ9m@H`F%vK>)(yUEej1?eA29T)Nns0wj~~oBFCtvn(rgJdP|*L#sFq zsG}$k9V@ESrv!QA9RNI0Rj6}XdvL&yAygu4q0R>fV9ztHGn^?P0{Irz(+~Fq9z{DW z`TQmfeR6y-KEY|10Ei zteUHJj=p0QHbhHM4gSs22Gn%hZDr@|IQZG>1W$M!FhE2H@uIt*(b;dxJ0drR7>}UBIEFvW2On=a*ltPvO~n9+V2Y}=;xGxo1Lf3 z?z1{h;Tey1?KhfzI#bXVKgt6~`I}TGi1SWeD*cta00JmqA3EVK4McN{TQsVqFXBKH z4Dbj&m;|YY)QSvHW6ijI0e!?f*sj}T5Pg5d>ai)+5l8gE`I%ir&m5;7jnz|f`I55Gr zIk^mJ>X_iS+K8>cY9X(GIP6D!mZJ*-)v&?XP&ExKF+Vxy!@|TPfq=t4o#@j zWGUWIuW3SZBoOPo+ji^4XT4_*tJ}^k^keG|LfFlmAk~WEb8|uAZE-@3&u(i`CpiKj z$f?)EO}jiRdX_mDcU4Tu{L#}G4e!zj^Z^lxY17!DeC zS)~qyyV7vBBf7UrIX`5GmzPr}Q@J;FT!b}6ldLEgcqQ1TtvsbyxkaUzX2%-@wSU)$ zmCpWe^#57wFvHnCJw9W6mUfoJ_s%uFZ9!;~!$z|M3I}Q7UbkIVU7#nR>fc>CQ1RA2)< zAl1RMPFHGu`d!vXQwFeb(k`t!rMx&=DNZ&2<;7F~0gVF=XDukBOUZ(|pP$`P++M;@ zpf{3FPr9?(VGBfy8Qal5`6aq4;tL4CAWi?QZR1Q#K!Mi%Ng~ z;A9V6CuO68b#Uv4PLx6!Y36h`@>6=`uKzVqU~1^Cg`$X(V~yK$4sE&t19uVAzGoV_ z=Rk!w{+RiW_G@anYJ#$jcPl$oeBjuqlhx7qqsVu@;&*`#!*UxPQcdc9KSw};xh@s8 zV#P6bOLCC$F7Ln>StHt^js7g#o9qB!PYHDX*5-b9kV8FDUwPu2B;rj0Ydt@d0JDAY z?4h_i@SXwq*3Qia0EBLN5dNodUUXJ$4z+031^l(hgQvxJi};?D-1X!xJO431;{Sqr& z;LeA~-ChNE`UU(iuaKLf0-kKE|NLUKWXh@X&%TWuP^bUtJb=s&4!E=crQ8i-25 z!wC=WEpme#fD2Hd9sS4w(6<%jDTBI&<^bw3q7Kv5+BqNc#(_}&j}w_d+s+%bWd84T zz37qYgnnNCC*V>iOZwd=F@dgnKgjku6iFNV{OjF-|3CltfBq+auixwU`n`Uy-|P4K zy?(FX>-YM-hU_xdN-*FUJ^_xinluixwU`n`Uy-|P4Ky?(FX>-YM- eey{(}uKx!g-fqFqDjUiG0000|R(RXKynSbZ2yed^=KTK- zz&i>`C;{I-oK)hKj}X$3%yXR`gvKIs5e7`wBRmkCHV2DN~vylqHDEsoQIP-b#}{8C?_S z-GevZ;BbngoZINsC>Ub004Z&XWdRVOfryAedZTOzdqPP}YK0%#!4N)wdD+&uI|r|k zhEXM4m$09A1%oJT&u|(a>oBUhNLM zwL}U=tJy&IYLf+S7aCn8SAWFiKV|w5r5;IV+C{JVwekq$i`u>!@xaxPa0vZbxcCPnwf^kn)Q&WwL;N)8jsJ$U$$)#1oj&$ImO1YJhdkJcM9qmdb-IPLX?*4KmXP9 zCvR_H<~b<9uJs03;m-&D&zTBEown83t90X7ZNcipzUp2=Akb?LA!{VXR&k&)bq zDcPes8tB;mJ4$1^+t^K?ho~GshKWL>xiJt;1VB$UQgmkzN0`L>{!{R}#f@l1|AgxHt@H4*u*1c6!hS}EEc%pxSlskxl zOCc+*kQZ^ypn>og){Q5!uO}Fi9Dd-YmsNH$^%cqgQ{K z8v(G2im()c#B{_Odvbqqb|yrZyeZ6G0CaHZW?SlqO^}8e zar>ds-K*B)k{_lO zF+Y=^j5P&mFwCSjk}{52ou&H}n}XzHTvWjl_0?U`oL;6Ln#v-D&(8s!W|ghdEVU0Q zmC!aB-YJdspAuzoo}5hU>tIvpRZ4dR3oue);2XyF(p&eb%*8G=ImL%E?;a{2r1b!j zzBD<1%_A};JLz?}NnpXw(0)jQ7WOh~7qnd7JQ84?;U|Nua>jYESn732m;Z)Y>eaCm z)>xK(eXTO8W^PXYG`N)9VG=j#al)Sxg7cMf!n#2}m3fkcbI+`>NI-euvv4MAzbIj0 zowcB&%%^(dsgngJ))}SDMk6d{bwY*AoBWklB$*~lm?f21=6KEq9hHuddj)}5tm_y| zL*v2q#AbuSaH-g8+CPKj*qWv?xl(%+IZ=`YkG&vuM=FIz_yVp$(DO#2&R)(00#--R zfP9Ef$hWLJta{7LP5K2Vslk>|duAF3yIq}n`wV#~j13K=D$N~Ro&WTYZZ^-pb+E9k ze*a2+-%1dqp`b5)cf#(HnQ@Sf#}vn^#+SKTd|30B5HQK(xj9eF;WAM=XJ@@Zb}J(* zgdiq?dRJalLd2PV)@B|Gh-~;U!^BA?$T=b7Zgz(p&axpAm{s1h8}t#tz}{57e#Ez=G9{*9WYN}H9SSg6jLT6Fr5Z7LtSOu;7<0lHPH-(y9p#N<1}tRbhg;!!aP{&O zcuD0XZKCZcrEh1B_@hu|>mH>tpV%iBz0Z*cbd~cxaC!_<1KOpeR1B>p67!_Rnk}77 zyKqubh4*(NK&1{mrQU}cGxO562E(7Wck4o`9inHejUDr37(V$y?Ki$Pq~g_>Z{JGF z78)Q+hK=%??Zwi#K4h{H^fbz7mb)G>(`jAOu%8rmH}pjac#uKUO=;;0>Ltsy8qgRP z<)x7H1>$~XO3PRq?)fvB&l2;pDAC;21RY9t|2brI*(W37&?ovFK^X2G7^nx;*L!Wn z<4GsQp?~-q=iQ2<*S_5qycIC8Wj~!DzrRvN#kq$!UWOh7Iu1sUW9a(1IbtR?^3B4f zb?UeNu?Z<4WycOB;!>(fFZFlskFc0D6vIg>H1{caut1^<;hm#nXnXb3@`N;P!?el< zwGjbY>G98`9Y8+O%szH>IMc>5IeQQo@+m|%Zk-M_1`c+aFhh#~1#6R0)>&^hhwVoP z0?V!bXeu-E6^?h%cSc{72;wmHvDTckjatdSHEk}4*q?JdXwvsasR+zrA3 zgMk)dz>OR3%NEpFe2KlxKkL%QD;OR$0@xT(WM|1wE$rzWbkg_^*xKBjA1Cb1Ehg{k zJ{fNma=-Yo^hN?~&D-<68}cn}y24H6y8OSkp?twpI2mFcfz>Ox8%?LfN6n7hmL|SR zpsBdjFTeR5JfVtq=b=~%`lh|$0wrXE-%InR{nx?Q)vPxUzO7!r(vtl7THG^BdejTG z97gf+obUC;Lxq(ZG6mq|f29TcHS@6YbC3?rT7A=qY>r43bMBm9XXYtGQ{X!7zu@{I z|0OEfDHcvV&~66KP_RcQ2<-Yz%)b2-|F_&#X--|t9%c2Za;S5Ior{)Juht}!Sr&V| zU?BtcV}kyW^uf<$iIrOWn7m2EJ(92^-XP0X4?2YHJ6|L?j4JRXg~WXqwrT#6=1|c^ zzYm{-OguS5osRj$Avgv%Cc+XQ!b$ThqU(ft+Oii~Jm3M{qbVZdA+s73M{V}sP@s`M z!f=QwG;KO%!k$d2-bXUrk21>0&j-RGdt?;1V(%!=h$9DIY#k_eWLc-S+F>u`Q0@4x zW@DmiP!O)K8))0kwofni5l+b9vuxE6X_9>qWlRnz{G*{XH%&oct$HWCv?Q-uN4OKK z4E*$oGA0IkIY>J_dm>uBLXB%J<}5>BXkmc~q9VsYF1n3@W!d5%4X;VRR~4~6*zdM1 zWuar?cF?g?4%PS@>Y)Ued0frZWp^kaZ0^5h(x>&c28KD2*LBfZ322 zBcDPot5oLwvZjcuEZAr_K%6XuRO>6KgeXjYzCWJik6&5A-=*2NL9}sq*V0 zR6UjNqiI#6v8!XO82!LJIScK^JeP_Tz)$VVNtH~)^u%HNx@ho9;NbyZJv zF{YcM2l(T#9~UdhzE5>?p~;{B9*a3|_50vF^VWE~msklNV#@_%S2A}a%*ZQ%Ayx`) z>KzE@>)(=WVc4`NRuCEquQJaHh5^{5{w;Jr+1YI<%O6|SRzD8+Z$!_ziYYhHs_4B}L?nw)XZh_RD@SYHEoRarlAE|mk)#u30>Tu-t5sh?z;MQQ( zezow!C0b~R6G|qs;mKwUk3%g&l{8S!g@ z*vN!OI9tVv*8@SAJvmWf4=R=f6G&z6&u9*dWCS@eDPxlTlKJ2&ni}7~dR{1dHn`9; zBzq$$C{Wzrg_W&$jj52An37*2fZic~S5^*Mcy&k9E!7SV8wF#@$c(t|=BQS9$}mlO z+zLeU`RlonB>jG_0Am1>Z;~Gxm|r4nW*_<*804;(7ZGD=#JiX{4syc@4i#>4hA2x2F-6&kT3JxDXUX1|2a7^=V=Kxi#!@0G|V3L$YR(@AI7=9AHMQXH8FL? zwwW&3#Tk6DKi&}Gbl=u1rl;w7id50_5DBkJ`wYRxUw3o$Yx>X!tC|vLuqBzTW5_|( z5kk7$o8J{=@Zz&7u#w(sW^3KiXUV=rwdaEy+5AHOa^7yWd=W<2ZXFS<>xQnv_;Hd% z?BM!wjpd!g-rW7LJ-jP)|ji6Q4J76idhE-Ea16 z64{MY`6Jn(kk7Kb*@#Z?r>Sz3mokLBM2cI&^;?m6umH94<2TA+U;S|keXG&!Gb$Pp zq+2i9Wm=#3kj>3>hpV~CA?0_i1Dc(Jo+3_AKJ-olH^HNKrt6z*WFqZZsr*p|E{nJ) zvCc|VewFLQ_JtUzmu9O~hvckGCo-_e=yS*Q6eI{!>Y<54mRMRd27weA-tKlHD=Iqm zC)JvcU&@U0AksT}K<%P3D}-{#@xmckiz6#SnyjVvHp(QpS=8u9MoBAz5F%RpX%GUu zpMbC*j+zDzL6YV#;t+$0Kh|pH=R(PlN1F9@*ZbH&V1S>4k}N;i-xFRPRk@kNFDmN; zGnebGd{g#47BzolZB0go0hO8*+$f(j!DyN{7Xtb|I)L+KU&8g`=3N5E>+85uG>DOm z$g<;(?0Wox=kC(d)vbfuOhQ)3-P;ykNTRp2G12>o4=guxkTp7~vc2^Vq7mzd{9+i*5P*r*kva zf;}CpCYR?~o3mWzQ~T0))bMe=Cf88L>%<=pK^=s@j8?b|{!CtS0qVe=)F&fY0KExZ z!j2BR!+K2noeDc=CY(}+AR>A)$YuCqH{N!aQSyO`QF_g`Xi@!1vtgfsT^UdDyqX{8 zv%9`p`Nv zp_fCn-Fj~x5kJgEWcwXG!Vh?SF5Nc08x z_cO(9>j!Ns;a6iks6<4su3k)PjQMk+($fs#J+WOwjw+O2nY*#azIgn#eGGdHLZ}wY zDyKtH`B;qykpnVAcS^hO`@0Zx`$B-d7mKquUp$%`Fv;r8XVWSm<6Ex&q zD`!@^6rue)jnYv(VmHQQ3X0dJFJTuihX(Ko$Bo{Nlg*moZ#CroHJ}8i?~TRBLsz79 zePFRj(Y7Zmy8G)dpfgQhdgGb-`YNIyKg5VR6w^Ypw&;e~vY0r_z*1Z`vHPb(a-+QV z%m{a9VN`owm_ zhko9@Q)xh9n1fXE2Yn!efVbrSNXHL{ZUKHPOihfBhZuiRNpEZUuXcd_`|^nUw0C_ER`f-p9>cw}mjumq?kNd!G@N;ngAZW> z7EKPpbS8<8MSJ};WBN-(mbE8>A8DXx5&T5SjvsDDg+#RdUDZZIGG#rM-E>G#ZIcVm zEKuO4A`iK`HE$BlC8~4YWuXzG0nDJa{*DpFP^ap%d{|q{j-Sdo^#_eb=bJ~inM@`d zBRNHk`WuLxI{}9F6W3=j>-T+xq!buHTGLE+E-jp{j{29}lwp-&Z}+Uyg6Z4~s=Qos z0#HV!J;zJcJy!8rGj?=ugdp{Y&b%Sj44XR}Y2Ft+X?%V(!1+bq(D}koWwkc@Hw{A^ zXvX^U(~zpZmjn%g70SRtBJi^qls)i0?cO$D?sO9v0%JmD2o6pA#@(Ujdwe?&eE z(*|5Orh3?_lsID3tPD|y<6p=$^b9a=w#Nufpv4M_Spw9a9z@mgMh{{f{}`qoB#9lD z?!@p^DleqY0u#UHw{UUdZz86Z^&QG^GwQ4PK#$i5anm?S1TF$eOhXJ1m%+7;pOyIL zPK0sjVIOW}PAxS45}Slb>V%%FZ0{NQ!{JSE<5C8rbs$AYbh09S=g-Q#dK4rDDoO0a;676e22da?sj3U_xXtmg2gT{C zUT@1|pA;RrZixc`!f#DQ9QB()6-_YMv`@fsK_+bQ$&*`W7?aDk4=)9HEsrP1F*l}*wmc209p4v>dD&J(@0G3?6vqoAF zqcUmx_qlm!U3^K$($E~)7kX@g0~zN}?q0UJxXV@|GMwpoyxxadL`Zm|pu;?i<`Y%^ z9>cNWzTmVHK`Ao)45NpTBD1kwvnB0t^1z3BqelqS&3>pJfFaeJtKNF+f+M~i8DVB0 z9Dk%C*13vgoH}=Tk`? zQhyYVrm`hMfoaXW$5Eqv`o&L$^Rz{~D+9S{c8r$dZEziBOSQ_>J4*zN&=O3Rl4B?) zjUvZRAK}|V{5y|i^*M}R%ibgzraLREmSt;=cNc-ntOzlUbE`c2eweQy{DY}gvSXHs zi3%dZ)lqXLmI>Z$+hRBPyW$#fNF}G?51=Xyr#jwccl?^FGTD3Y*`o|(7L*2Vg}1J(0IZWLw0_+-b=vIJm&Lzfr= z{8CK#g2d-75+&M?v9o`*;ikx4^+CW-Vi*I%qLxs@uHBM1orZM6^jx!is|M;JWY>S* zEintX&o(llj3Khm(aF7vi5i)(H90kJV8&sz4;Wan7wmOZ&S3)9$bUY)qe~1Q5#TK& z=t5$w(pa#y_9SNYW2zx?>dhqljgEGO=1AFzj(dlM*aM!fRJ@Ur`RxQ;^(M>%2gO|H zF$N5m=QI=i9gMrQVB6(=0OK-uL`6gkJX6H}Fy0Y(7P3T)Iv*F53 z6?OQBU_PCtTlMo$vHh0o69?t!mC|s$md)X6jJu0k*|BnP>lz^i3vwEKC#CyR@BFXXj6m6EI*NJcX%pes;r4qB zwyRM)mOAm3cGh~)Pf?Z=AsE#$`Og*JS@6AU&z{*XOt#TZp_QoQKrAft3Q2nn1Iv}J z3D58rNPI96eBZ05k$cg{ALJuZq^iyeDlsTw6H@kp0e{wjmz-Gd$4 zvhns)V@piTuf}Xyz%Xl+$7XO|S^&x@C$_`}hDw=sWRFz5{>`F+()6*Yp(gjDA-h7SK=!9# zMyvC0P+~Aq9udd80SSG;H%rYAW39CSM;#B+AKOZXf`En#{nDe@7NF2?kA9uVXXj{Y zv3$`17@NNF*=gV1MPwtfPR_k*bAWIBsw?8mh;@k34teq)1e14K?=SC3jaM#F+vk}UEq6ADQi1BPRw@#UK>jqyviIW)sfd8+lQRk(%h1^@h%?WJti z2oKCGyl{&T8}+Kam*!6}zzgUHZeyljvkfkbfZYZuKV}>4?fWeewKN{5_+&v!@fQe7 z^DtuDrjnpIj=LYzA9GnaKZ$`MaT_t(y{&t-HOyvpUAa1tqM@87=Sg`4gcKWd%I_CL z7{xTgRSZJEh=A3{y#;;J?Fms`OzzuuMma}ijlEg5tuSBOw8F4;OM8+?y?)+`H%_^Y z-k`NK{H;J_vID?i8nkf#-L2b@E+Z;Kn*#SPW|=K$hb>N?0DO!61cjO1ec$<$s2@tw z(;(-zG&KzW{%PfQ{ryYbRi{gdez-&+J2OI`uha9cG?S_uvHFUI?XGKtcGH~?*FKc) zDq4XSAP%Lqf)yeB|TF{!Pk%$Cqh-|`g7dY=FNkQ_>@DXDo?u1Z59?KXn z4$b*o3vvWi<#*CmqS6`-WnzdBz=!>%Ud8FKeF}!rQ>%2M_E;;9y^;F64w$b#vQbVf zCyMx+A=;-#WbC9-*S+1x!lWo;;f>rL$RucQ_9gJ*DsmhYJrn3CVX{IEH37qk-u<9H! z0=WacO>2+NeUdCEg4UcThz8#!fbFdS% z*6g+y@(iZm}>U8~lVamtC3VAd_E;bQ)NkE3H zM^&zCmP>nX;y?|Lt-W79VN9_HZbd8LcKkr1+{raGX%tmgdERbfHY?p3%dVQ5G_oTi z=Xj)~8swQ(F0t!UrfDl9hRi5na?nHB_-D#Mouob|^q6ey2d4roMs!XOS^{&d}7HhS~kPeRNXcxU}r-lmSz?^Zl|%l)s#{HZg5s;V;$izTc?>va>%b z#l({1gpqT9DQapG!$1O{R;-3kVP--@ZKzJY3X>QB`qqL`R~y*k|wB zOU^28CVI>B{-YTb0sZUWdSt#&IxYVO$x?E1>|5C-F}hzS>4V0=eWMC{s*p<*WQ_7n zNLMA@_RVorzn_exW5HyRfY3k7uLFJC&?7} z4Jxi1nAD(NQ6(kStdbh#SAsHQa*nU)15y1tr!OYi*}0vSbXH3haLMdXA@IRWL3Rr7 zFWs-dX;>Vt+Rme-nB1d=hf~vk6^l$J`siF4br!lU4)67Nv*aP*Cl1g^N|M*miST=R zf@6P?mAd)z_SjYeMddKODQVsdyq%(?boO@*W*+O!kF~XRO6n*U{Kn_ELzwHDj=y~kQ@eI04R;j6Nt|zaF4<4>32?UbPvBF)PIiD z8T_BX`k#i`ifxf;DJd(7Gnnw0!N2J>(dyBD{@)q@w_dq!23k%x=d<$G7mG@j&azHU z=4*;RTsT%H&Q^drp>g^UcO^EuGMT!I7cb>zfzr`73*_i{+ z_bpVVQ#oNcv^e0}9?~@B<<%Q>ol|+NX)iAw?5F7KGAb&fpsC_`??2B(_E@p9vZl9Y zz{DymyWa5Irq|Zu2!#b5LsEDvt14`s-IbJ8vvROrLSO`lXg^AKM+RFv!uyY6kb0ea zKkfLCwtvFa@$Fn~v3nl#{_%~>cZi`CC`RJVX;9(f+3ZAR;@ot=Grk@{?o2q5v;7ifMuv`k>NhjqvO@UJD2d`!4WJ@HI}85pDd zcSJ;NE}-Ah(G})bCOjA0iur}5tCl{w(tkn@Op_y;m$jy6XEsvqR{M@nR*yFm$QyJWF7L6YAc?<1@qWsi0j1#68b4=e*opU#6g%qn{Jg%h16>TC2t8oam3To=Fl3 zAzwM}0Ax5}84V2$LipS!MRRU$4SLXxv%6;z?J8K9nAq5}ig2%%y>Cke1tlWi=;YmR zhsEe{ga&Sj*XsG3B!|kadL*A-ZkNi>{n5+UOX}nmHJkcekY0Z=2EF;djm^z9F{S6< zdh~js4A6Ft4DF$_>wXmq^(abmjQC69ieV@g**P$kyD8_B5a{z_NrK~ZKf!T|7^U`6 zy6{z|Aio%Z*VPX5jNafOEjcuV34;IrecZ9_NT<~S`}E;T_hR_!>$>07=t`M4Mrfcd zYFkAG5~=5PRF(Z~5w2ec83G!f?}kvY%U|Bl&d$#FP74lN-UB`Tql1E+M7`)cc8Ll@z^r-q&42_V@i=w+FocxtlhAo`-85t^4OIyQ#0< z5!Ka7Z!@Lq;T&t7i<_G^ZGGDlRJ-elxZ1vJYxabl85l07v^~jrse)cYU30T3QBgn6 zlAYfF%Z-nLUGplH#F2b_hyV-_0+YeKoz<6xh_9_r7G-DLC^k#=hd;lZ?_6r$u}b!? z_1wFM%Q=xQ)mnGC?WKm{>bfJb@3}%Y1m8-XP@T_K}}7<%n9n*GTq3c(&qP$yQ6{DOZR7$#y|xB4-e?fA1*>|{uNY$ za0-I(%=&sfj#WE2@7w6K_5LVIOiSCd)6-8pMsF7(&+>kA)%tWPwS1klw(jHoSMviZ zzMl*8i$5|x--NYzR(zDt&R}f)bM4akU+&ZPUq9dm?$Ig!ol6m}!{xg(6u-6Van_>^ zSq*Is3^aN|L}K>L)MN_Rd1-PwP} zSgOSg7u8>4Uv=F=1rc$M-#nz9H6W_$LWo^rV<%*Ns091mgzF~Te0)65Jl49J-L4ot zZmm4`wxjJwp!mR_!ESUzf}Au+15rSHZz{opw>t(AumZzy=sUF`D}mF~N>6{+Uf*I* zY_mLy^52Zw@Ud04sR;%6{SV`)LYL1UWimDKxSXhQ=rsa-cwRVH-Tzt-CosXiVL<|m zDOzdcCbHeAzB&%<4*>qNfbU01CzP|cSH2gQ*XM-S%OO{bRi1z50|NsI+z^Hc{!>mP zQ{x{?x2s<$Zo}4ROO_g&&;!OodJOKj(q5r;t8Rz~2M782g`L5qKG34FRsx^bziSs4 zeWY6WcHt%83_!Z6H=harJz4AhCJGdf33gB04koiA;W2qU#%jS&ob$l<@Lvdi7zJA`A;4)( zEZ16Z@9k3X(xd8@sKcR+=dP0MgSzszcrvB*q2w4;UUhURJF&6U^k0OiX^`TKqb5j& z`_Ds#5SVXEDL1k`N0e1JZ{l|iucO4A?vHc!Qadmy#ax8SfScnK8z7&{ZlwH@lAdh| ztfuA@sjsa-j@QR{?NtT=PsR6x=ZNS8A;raXJXcRB2|W4+@%)?kKzIz`_+cpLwFGrn z8jn4Niq8v}Pva8F!NEP0hOy-@g&6k~y32sO9 zh;G&J6|Wy-Hst;=!lZfE63wu&%~!iQE<3f=)L`H7Ujx0Ls&w`4PFL!$*sas&bRF4x zp(KIarYqs3+CFe^vAGcmSqt3WZXrz>ZnnhHaXm2hyj+vB-*wwF+|{n)a<+n>Nc;%h zz`Z^W{Q>v5Rkbq&14v`gjG(ax`D|pOm%FTR#l*&MWh_KymP2eoq+B2H@$nN}CPQ7% zHx~W@*3HdL!t?xANKK#JGE<+^jU8|^{WoI}zuPAKF)h7_mlv;sqC&aJiN-Yzop4%b zC-17_+PLrFAnga7TT%Tpowuc%N3&(BX?+Gv#qi(J6XCGpNKT? zZxy9~WZ>X;1y=XVFO2{6mgn`rZ!{lo^O-%}^o$D3XeuDw4iT8weLV{C1vm2L8OF}; z>Gae?=>d_%8{RT3%>M4|w0jGkKfuo~wf-P(=?#Wq0C&9SWW5pi;ovIL4s?cQj3W*! zr<%I$=$w!RCLX50`dU6GY>1F?czeKj-PK!*MNK`qzmik%31F;&{@2v@zh$fc9S8nD z8+Odj#*G$)dTYm#HA2g(G|z11dMU}hb&|+{Bdt#rYLYkqS04Red~l6Q0k+p}k8A`p zzC$2C=EeHYu>j1Rn@MjV`oHDl|HaS$pRE%Yd=^0M#mh~z=lU%7C*;R7qTXI@ZAHgl9?}>qLY=~%LzQ-aU!QQMWVtZEwp|iSR z6u6D)^{)%uU-9~Udm|ovGttS(P?pv^?dy{%M1b8v5AMdU?(3zVOA1+IazN-km0ZeC zzQDlygEH^%HzEaSFP&5lSWC*JsvqYE@sN#NZwpQ& zYtQy`N#1v7hzR2G0h;eGzi_@TJ7S;(&(th7a=m36I%K4o7zNkIcclrE)zU%?ctZxm zw4++QqwAOV!jLz#dQE$W@?B9ejDNHdWvee-#6}kF5eFx;F&CkLhNgdTP?-9IppXz8 zZBe1!rhOkdB_&*z7;)%7q^Vf_KW20%CT4dBr9P;Q7pJQP@`6Unpzep#=0if__9m7# z^EfiAi$SU*^&}D-ACnzt69K;ep}T$1-sFYIH=d{yazn`e=JZn{(Oe`%RD|7dpIh&nsgm<|U~pHtwPwyE{DpOn(GZT>Q~NMG`RK)6U~O&f z=_#xL5%U{gmc!_775aarV*kHn%>}(5>H3(36xYZ(zM+}5&FY&tC%a9mjl)s<(f+2h z-7wc`<<;c{dgU+>L*wFblvI>_A)Taw2i5%f9e{H+P;6{$xnadOy zT)oSo?xa3od{veZ@h#@|KV~7CIYyFsBK<#* Date: Mon, 27 Jul 2026 12:38:10 -0500 Subject: [PATCH 25/67] screenshots cleanups --- README.md | 1 - doc/screenshot-button-mapping.png | Bin 68263 -> 0 bytes doc/screenshot-traymenu.png | Bin 434867 -> 476944 bytes 3 files changed, 1 deletion(-) delete mode 100644 doc/screenshot-button-mapping.png diff --git a/README.md b/README.md index 4c8433d1..386f96e2 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,6 @@ So here it is: a Linux application for the Logitech Spotlight. [Projecteur preferences](./doc/screenshot-settings.png) [Projecteur spotlight overlay](./doc/screenshot-spot.png) -[Projecteur button mapping](./doc/screenshot-button-mapping.png) [Projecteur Plasma tray popup](./doc/screenshot-traymenu.png) ### Planned features diff --git a/doc/screenshot-button-mapping.png b/doc/screenshot-button-mapping.png deleted file mode 100644 index 63d600a22f74115dcf3be20eb0eeceef5d332884..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68263 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 diff --git a/doc/screenshot-traymenu.png b/doc/screenshot-traymenu.png index c225543cfda950bbb2cbfaf0b83d2907bed0a612..97d6a137b10e96f29d16febf9e0b3ca888c521b1 100644 GIT binary patch delta 63257 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 delta 20849 zcmV(+K;6HPjvceb8ju$X0|*8H008h}`B#x4O9mk+o%-4Wk#dL*GdeUeD=;uRFffZs zd5VJw0fz_y0fz_y0*43z1BVC!1cwL#1-A$R1}Ra0wfAj1lH;(FWMThiasL1FxDQ>D zB7#BLS>1Dh1B($zwiRmxd3o* zH>EGYTJ8R!Pj8%l{CmP8gN+MxB*-?YVZ5<8@StO3`P$IQJceKTAPxV+ z+^s`@oiOzJOh;ch1O?LY(O_%vx}wbleIUbWX$nGlv?riAx3`!>FUs_`9LGO+=W&rv zQ(uS638T7HGfj97^=e)Z;#f5SJ~hnVneW*oc@V2jxu%#Ql&LANbeUwNG@bGx5p%hN1trkPwRzJ}jCj zZaQSBFC>8^==?XEN(_Jnx>u?Fe>&M+y6+{rj+zYW zi$+{C8HoOe^7F>0a)Yj|<5UMKOu$0KvpjdQ-O(D;&R0+oRto4i7L+MMS&qo+VdXv8 zYSrOP%A|f^9Wgq}Y-Z(HKjw+tocKFIN(4)aU~N^H(4 zSM2G`ordTH%$Wm8a6C$WjNK_^ow^S*raaq?|8A9fCY~>62iK*XYxSwT-gmb2t-dKe z%Q@gvKII2`cr3U33VKKDn2a`kRwtiyjeEEEnz!ur;eoq>bK>OT00N}cPjsPwq3CW7 zW#J%_t}iM&zG_rpXW|eG0hCy_4N&BZ_E%(SfP~R>0vGtt{Eu%wVFju3nfM=4nn@%C)%j@`n`zIGA9wbeO)SBunk!bmUO>^$qgn4M~ z>S9kR0LixCO1U`t=s4#bL5CK5(S6jpcy-PT}{U7qXI{QX{S^7mZG&RX**RFeBM|3`aVc{vX9H)u%OYwKjY3B*Qr3av5 zcXm96>zA~5T-=iHeYjJ8i3|I8Q>=CP5%s6}7kBW5f5+^E_b3~5rxOLV_NxcKa4Sp& zL7_lOP98uCVyI4(IWi5dfr1)Ezc_bDnfOTo&hs0#o==ppUe2L^X*1&vsdMe6e{L%K z_OK=_{}x>62RrfS8@LbgX358qqQO&6UGQU2FA0IYi$T|q#B&}XxM7u$*Qy<^?RJbgG0BA=L# zuNTBfTn4P>S$dp5`K!-4`(s+^5x_CFD2C|k8v>%lUK|Y*oHsPC2$>H44%yo*HsML5z z1Lr)Q&{xHoJPWAl-QzB_*B*3nYQeP^vYtik=Gt0+OpN9P12zcyB-EWSqLA`Q{Yt7y zd(XATg)O7?`(1fgrapMKug9QtFDL$EnI}*H9s9Ru15EAT4i0qByU({tp*2IN9-Mw9 z?iQuoUP0wWVcX#w#)dv&hB&DyU!yr5zbVacI}L+&X^L!B8|q3R z2P$XfY$vPIl#$L3vbq0#D{+S6H^EiIa9p=5nld0m4w(d*P0+0a7R6?G4)4qd+V1*) zHp}X|D)VCbJr4PiPqCbM*!kCY&QE%*MGHtOn58Y3^Zs380<7XC_d9pt zEi9yLeZva1KB5*0`FGE?df==8ovXcWFiSZ1M?aWdbz=Y&9@a^Ro64&w1#sGQfv=Q* z9441jK|0ukf|S9*p!-aBC~Ss9j>w=f9Ee6uTXTol|&|GsPp)3C)ZA%t0bPNzDmNc#`dtXW0Ay6%Q9X zsoXhs=VmwdrdA$>1uP~{=V{@-<8_{Y=bS7KC0h452c<7>Uq)5g34a#|fCf%MTR67U z3-1i;YViM)zAK{UNc`q3q%Cn9d$hEHDK(<^rG!%6unDh^XU%Bk`shc4@J0Ez*9Ydi zcW_*t<(*(x2J3UW092z=<0P0?UZEZa( zY^XN*d1N|uOb=CNB|j4-=nv?B^P|hNCStc$5lomcTce7anL4Z*7(2W<$C_V z&F2CMc0RV!nhP^FfRWbMb3D#xb}W>b@(|6~!W&me339s9{Cy#XoQ*JHs<(U29x+{7 z^q0syyDrp`sMXRmsqtw6)#GJX0-x5LY}JdUQ-PqQF{eTz1~y)_<;h7AH~=kz zP>0_a__YqbTZaw?g*8iKg(ESivR>hFCt#-U?=NSv#)SiDE+Q;g-Sq!A-|pOhIK0h= zVkbomZ07_V^9{6a8IYn|Plz*yJ1Z!lhYv0~a5KR+pugU7|K!L&!9{O>ZIil)g8W{T z1$bT8{AvKCGRpx4_U|Ep3IaH@0g!vXjokQdM_(i8J}VvJOmDj%qaHAdVZUJ_NLc7O z0(_9Io|-HN4X!V=Ya-O3DFBYT(ojSTk7DXcsBTMDuzghjGi7Ky{AL0)8*me1eMdUr zG-vMv^|Z!nI!L#nnf?oZ%Ba>*PKlw+|8n5gUri?1NCxBqG zi9flX@Vr(&{ogmy1aHdg*#J{o-J9#C?`>K0YC}jlYyBWS7^0)1FZT9M@f$}Z^l*z&BTTnhge$vu_TA+l`q{dRU7 zjM(3HQo-xKf3F#Tv~p{Z5*c9ALu|e=K&wQ6NJMC)#lX#zba4{KI}5X+@q=sNjn=g= zLNkrfyWkzTb4G^lW}xJ*Q5c0cB1)WvV{w9-5 z>CYg{>F}-ib_%u^6!K$7%mV5P&Ap0v7AAi|Tc*Yd6!@fnp4nvOYrRsCBBsQN!&g== z@Cx4^fOW0s^xg4z@Zfr$+KTf!$aYxT&U=qRCU*+|l>2jF&lu{N<}@#C?twayT5y2k zQ%F5I&U)D6cu>-6^E>)XbNtnE2LoWSQyFJ}r#+ac5gMD&$f+aXZ}LtzoO9u56klB! zJB272acshWL{^6k7G``A^Q=fYjvHELD&o$aQ zx(SQFW12bFb>=1wcTCZfGZc5@0jFGVb%k)@6VUtine*Hi-(n{X4L$C9w(mUA&msQk zEQWEKbqIZ0*=;N!CEjIlj;ntoLYR^qMW7;`pP8|Lo_+{nNS_g(a>CZBij0H?=u z+!ThUbokGG$FKtg*-CQ1%RJ8lB4obLXw*I}qRo>2-HpRLTg+u9rT7*gP?3HuFAn(| z2mL8(;LY{)%x{l!aCBYxRAV?K?qAFq1j$B=02E@tGS$_yN=Xt*`flo@y$L@SN@T zx50{f5D%jwngvIgqwFlU2Iaag_4;2NdmXZW;cp}b^|#A*=p0H{aUQBrnNmBA0K6CI zlvn^Xkjvp<7SVY_Fn@PxO}CaUNIRIVdo&V(b>3bgJM+fjUov(*OC2`s=Uy}D91I>m zJ9r06gcK#HZ$C4>L%q+dvs4{lIGWdbZgAv873%0K`{%HJy6A~{=wJYlWj`1ITQAjr z;q&e2Z{3(3bil|C_&nN!>l_22Ek7^#oM3&Z?totxX#NL0K-p3})+)0eI@`sdfgToU z4SUf=&Iz%riXec1UsxyTf27Q#|H0`81HjoY8g;n&AN0rS8oqv+M>5+$(RiR!F#-vF z!`mgpJ0+>|S-ErKo_gTgn+JKjPTLZHA%N!J%{alK^>7U|D~}_G&UMe@%RvBj1ylC3 zGo_v2Ji}L^rY^hND?{hIqeI>Zk5;c6-6X_SeRQy+h@dn&Lv6Ilg!S{^vygEOxdcW6 zXdgKZBf1!ZnN@R*pY2H=336zbitV1o!zr{aXZmF{Rg zk)2d5#U?HT2VQj1s4`>Q9xrdgt@ zrcblc*fMKg)#P>%@1!l)7y51hpg!8*p}xXz$r=jXKW!XGlEI1X z+}4Rcpz{kPia~*aLyPFJ^6!3S4y$+I0sM&y80TckN3&i8*46GOixbn4g} z#~wkih9hbuP4Am2F_Nc$>;D|0DRj<(hbj#Jd%v*}xlDlbf7s7(wV<3(uB&T%uxRF< z`|fx~>8zw|jct8t6Wv^41NG{pz(k#AUEl?ao{q|Nry8BjB@TLsKQH)k=zI8K$oEMw zyJ>V-&M~%e=RBoP3_37d>kc>?;odMhW{^8k+`N<3kfqKa`!qd&Y9Sj?f~Spg%!0b{ zN>3%@S7K+U0u97|$PB{)IJUfyf4_HA#C7@oHpkqb`Kp0ssjp%;whf}obJLE@?U~&- zXk!Y~ZsRe1#J*Ud!pW}5SWE#45DZxW0RkCNe+vnADdj_dOV>f)lCXB7^vnP;4ltz6 zDz$*O2xP)A;oZl7c|!A;mNX)OK>?R@$1-4YwiG^i$^Vd7t#eDe`{p1(jR-(H$));t zx?F|hBMCrJ0#w#H^Nv6rd^kC4^+H1Y#r4L<&@QWoy?^g6HAQ?VI3)(z$^8_bh!Yxe z=m_bRwU*QWwV%1^|32K+7mItSyejhZ|NKFKa62i7AbVPW6ch7yB-VFqJXGKc3bqB( z#hH4%KBv8()b98b`9I~iX#CH7c{{*O9Wn|p2ihiwBu~gTMHwiak~8F^1_~75%>73$ z*UL4S=6!+|%Saryz2=q*D#^77g8|Um-2fOX@C1fRexN0%?FeFUJolI|>H^LYSiI%Z z0!j=S1r0oZ|MS@a1^SlKo*+$NrLl1R9Z;Y%Fy#E81;CuT3qS*P{Drb8e9nLZ%>lUW zB4OkJAn%)v)I-5fdE|Ov`VJe1_?8(w#{<`f&i!!wZ)^eFRG9$1G=5YXjd4b)Z%Rtz zZ)Njk@5p+@texV*-67l@LtU z9D5CaiM~Y&OlJ$MdTzhH+1=5yS5RTuz(d>W6xy}{AfPg`libcs5Mw{hSeHLuF%t`& zLOdXfBySR)+m9XPRH}rY*q?YSsFRp?mn|>Od4$OO93f!&AKwzNcL-q49UV=)W6qhv zN-Pa)1pu-f=PSYZKZ|kUx;ZHz5cHEbZK| z0YLMohd`yYvr}hs+BrS^kgzdeTm{ils{f%zm65@AbeO2+l77>)?QRs+hsRG)ddi~3 z{nZ(bMl-2kvI{20_jN(@p^SgZT~Cl3)lpKP&|fzGUyi_fUL3+UE$oCX@OAGz*7=Qp zK>=_$QrEf*GE5cNPMbsucp!l7=%@L0E{3jP80k}&XXlj%hhCq9`N_cmz-PAuZwvqg zzY_QrojAj#Hx!IM;E8+@19lbOw#uw~iO*DZ2MgCJEG}C~3(^QH#~PmR?uzzCX&0Zn*~f28 zBFEB`A*5y8oK0*?JcvdKIJA>9?m&Pxj`W|k9@p+ueb@)J1I7peSb(;R4?mA#|2mHy}gu(+ltIc>N{L z{7;7{EyWEMKRR5&bBODpw1*6;>)$ps(3Sz`?CkD*%X}K<1G6+xz&Z6#6+AsNOWlvJ zdLhj6q5J9#30-Sf2|%GYLonb@yQ=$C00quf-(y6;tJ$kN|2tWKgrJ}|06^y> z$_YD&eV%bQwuZhd|10sk5C`LoShr9X@(0%w_OyHHN#~LOdz4znFqKrZzWx$-{*j*R zL0NW(qes5T12PBwyIMzYxZmM-N`?*`Nb@YiX#JTrjzijMK>{=R2RJ}y)))W@?NI9) zg0E#Iq@TW{-&e0JOA2n*v9=>EVmpxeq}y zsR$Y?!2gnKB_E|w3vxvum^Xr@ip4W+V zCO5l}qlWtVi86N+XoSHe7cSa!jXI@h?arlnf8EUXX|Cdf?{#5Q>o(M*p6g?Ha=60Z z8+4WJ%M?|hhMnzyzn;#I`rIHZRo!?`EQ5!en|asJ^AaX5>028MMC)!a0Cy1c7^7=v zig{WThyWV>q+>6`^gX_l!CH;~5uEd2fXdMy@xK57xAYG+`t>ud-2hhUO7kw`T>>N+ zL}&h;VL1Tf zag*x1I4P+fK=-bnHx6pxW_(u1<_&-^tsaG!3k}tacc#w05~q#wWeM?1a%d+9DQH-_ z0IFs?R^v>$k~>b7PP+|dKdbxScQAU%4u%AcGtJr@5&RbZ-6QLibazuSVyK`!_qCo=I;gxpKGN z7Fy$>u3H|HlO&$*_eHg!7 z>D%QUGaWrifFc`{cMct77f@fy_sN8J(ta|}^QCkdu1WVlA)0P@rhCgc#&ur?-9FzU z;B{OBpF`tNx>-AiPeU4K(CkjpA5&ox}y_j=CZ)?*?dYnm?9^lct5HUb0dJ{dG+cCZf-?DmQ~ za_Yo44VWkd`?^Dk%E4V^%unC8ErAbzXBIU_zP}C=>5@}m_G>Ex83xW;SYxKhn0*@I zGAg!ACBml8qOlbWDiF~Lm88-F13|3+<@^U2&t8$tD@cYB09%KMO@-g_AVG}gA*UP| zhSfUDQTCs@{@45L1DEC2%Sat(UF32qhstkH;6My@m!2VjP5JjbP9ghR#vQ7E(2dmq zaDd-Mug0bqS}uwpsJ)W!(FAP4GBOeA5}$8;Zx*Qtm}uK6E+8u22v-OTT<&`=2BN-?$FE;m=V>j@}Qvwv#6gvFitMoQl} zx|6}xcF`Xkd{^gG@9jBk2Lb(mDa6y&NA(!nAWYw^yZiCZO94S zYmjtiz_INm8bFAgcksU@MS`@2T>_P3Ax0;I1rByA`Mri`^3MN>VS5s~hp&WGT0oi@ z-sCXZj7sYXMx;wW!RPR70k_ba2GJ!ziIj4Zdm@}4IQvgm4oaXNo=FjZO3FW&%W3S7 z{VFKPsb0^t!=K==$rCYv^j8Bopt8NsV%PtD^;!-)r8&$~gcV-3|2G(RoXqc@H+x<3 zqaf^dq$3*{@I+^BHhxZfH=Rkk&&cna%gP{vj%kj616Kb@#XrG}g>wga{M%UtN4xRmmbWLzKOhg@f^!lvupHn0 zn;{^S?TvuYX$PPpayYd{o0{9TjGy9v4PbbdK1*Ac&`?XOv z0RTcn>&zmfA*rj6pzZ#>*k~d|_|O0Pp?-2tcKz8_0Sg|0G&*R18OuXmYB%ZO%*6jT znK|e;_IYz)67(&2K6I0Xedd4V0fhNI2X1^a0JzRCf14eB-PPx+r`@G45Z!K70%D}F z!WpXOgS#m$v*5jFDwuI^0v9>}&^RMMpS%0r6@{8GJse(buB3UnIn)de2nzaeP3FNw zHVQ=W8lQRP^>k~0bpwms6AX`ph@+cA!`bSN(A|(xvp!7Or{AY}%}ae{`j)0G=UBgq z78rNi!{2XdX8Epu2Ubjx1g`uVJcZ^aJBizPuVG`eS;3RDBudb(jqs{=lC!lFc*qE-n?@&qe*inn!&ralH@$opd}lt2hb_n}4hS`S0GG#Hmq0)9Hi+IV8_@;583Tn>3)N)vCOJhO~=e zG{a~ocm3~wugO*jnKODu-#R0*Hf?0rd1pI^{d1l+&;Q9mXU9NOTMGJRIg zil-y@5nK6Bx&LO1)Qe~KB!EM|=oKAweg0rtYyc$GIYknzdnwQD-F-dQ!c+bAP}J#AK}`GGpl9^<^!c?Scn*O~w*X;(Fm9Y^2wlkpd4O+oxUUc!R!9NO z&=Vu61h6DRgEs|$k*4}TN&icd%?6Ly_nhW^r|}E`-hO7u4NVbn=^^g5$^tH)+8xhz z9e+&`9qk1C{Rs@vwbmYXqtHpX#z(8SRvS>5C?CpS{ydFy4hx7vrazlo5yK#6nE zalUTA(gX_4xEs$V)3!no6Pxzh{QS9ja^-6%Ke-yCsrSNyaL%{UrThLZ4PiXEgI?KPPES=mhOQ%lVMrFmUEP;mH8k37qKF0S8V4 zeNJbSZSbZh2QW7<4?g!)fui62t3k2eq+MT30Yac5(8D}}v z8lr;=^c?ER5}*mdx*mlvub!jLZC_M1`9pn_H@URAM(1Ap;S9jGR&pi*qVap3RCN_Yd{t2fOCq=uraidKViO{#(cJ$&ly6zfhnPf<4Eq4<_M-?+o> zgm6jkTqH!0fn3AV)X-<_PglU*c*#}|kZhYnM+(zD>=!OQwxg!2yBDo*eLlEX_0`icMfY=P4kumaoeZSRccFGpjM_u$GW+&``O z&BnM*Y3T#td}8=KQ4F4sQS1b&eOdAx%@Ld(Q0U|v1EBTYhLUwK0C%Ew(AzmQQ3G_Q z52k{E175)f06XVQEB!U1E@gooPSi=X)_A6X&^^DtP!uX5>Mb09p@&G(S{OjG$)sS# zjHw~HXZ&ynf(L6(SHu97m$`Z$B;A8K`bKoKvrD-*Vd#Jm3}% z@p7noDvP$A3Ku4SzsmO%fPmkWoX#o~_0Mg%WTY{9-WQJ%zERr-%K=jFJIK}00V0ryvWmE)*{-GvTuFr6HhL%tK4MimK?Za`9FdGOZnfglhR_snmy61i>yA+FXJkSp!7uI zL*F+~T04Goft(`FK?2m!&JVzXC(q0Y_?r+ydY7;orC*Ys&1fhw$n?F_V2GQ@M4k7p zd%C9a&x_7~6MITYB zMIDo^yv0il0Ce=J41p!CQGKT`rwXk5Ddp-~7wqbPZ?-WGV*25%2)!LNLG}XH-%6!Y!>c-&|IG)b14f{=}X*u;_ zL@9)j3;@M#sSr|N@IZIUi%3bGU_ZwmQ*!qmX%x+4ck)Ai&$eQ7A5wM;acn&9t`JjN zDrl|RJzg_5NN+TXYu+87Pfet0?x*V}0&WI>z>`=|yU{uMpGFV3di5T5^wUUz>33)D zYW=Fq^a1cgXfAhAGp_bjCO@J`ousAN8I?IbOgK0A99H$r+L+(}^xkT+sl2Ar9RyVNaz z^Vdm$9G?H-HF+79vEZHx|1?ZEgs5)Xvr__jyKcB*4EiB;nq;yWfBbmEz!Cts+xwz9KB6;lhfXpK0jQJ^0n0*DA)nJ=&xv*Ag2jwqXz!Z z_FqKb@#oNNdAIy&!R8}}yw33SvBqbA-Q`kQbj7B*e_F{WFh)9J`!FutEmwV=H*kZW z%1cnn@1OckX?N!=0SpC?ogGlprs)xewKx6;r!kX&JOU3Scb#aas)1H`5at;+*#DUV zRE4eMyiq8+k{pdBH2e^Rl${sS0eOViu0~G-RwQ3iIF>|MfN4Nj&{?oEe(VH)Zl1sy z4{bvQ*9y)lP?}ol0_*PrEJ{)yqw(+z1fVT;e3M!KyXbkOyz^IWg&SwrgLICIWWlx* zUpsgl{)jtcho~8L92qA$WPwgL){|`_S-o?gnxgrxk<9}BuEs2nqIS=czIQV4Q3zg~ zyK(cA*~Z3UzU)BfrBz*ShZi}22YJGZ-T(k$o{iRiwtCkZBr#Cz(Rcb%?2VO5hk@Ly z4*fX}3FU8Q(|>i<@I4>OIx&H1sF_|51eE=#pT=Ozzn!$J!m((LC01j$Q(Y;!U$IaVr^ zA0f=S?dr=qI=5KYYlAW9l%=P|GQh#!ec7*QI(@^Q;qIfClnNN&q9YTO;Zhx~o7sOX zbsS&1uIuL~KT|3~1I#K8^#GGmvtwT#xyvc*FmqXD}_`+~aq=W6S8^pYOS& z4A#ArbqK@Tv;%B_T8b2qsDf#?a*kmA`!#s7)&KgM3;>hYcLNq2n80EFN0?K3T!N2) zVSaV^tG@YXTk&G#)-_N zO+&QND1tPFZ=DuVW91Y5k4xb^Gra!<9N_b6lf+QRYyh+ffs=pV9d}+r=g{bGlRAAd z)WPp-b&g{;QOnbRofl_WCv!eSz%O^f;;p`P^Z2w}Lg)-<^qmf#v7|nQ^f9E5&LEjE zr8f>|UPx2FJF*HxmO8&DcbOfMAk)t|!KY@WA7m0-D`i_){2Z8|O8LgYVV?QHRTuhw%l{7N z08nM0#7-xFMI+$$=Rp@qaH=7OfZZLoH3H7L2$OE++^nY=RR89Lt&R^cFSkm^46Ob{W5f9UsyNud3X@OLD{o>S*Ht>`jm8VvWv2!u14@fH!Aq z_e-OH4^ZYDu&?_nhu)PAU_3NwMc)EyM&+CBcc=BrNPwG-G3g9m*e`d}Imk*6jPaa< z;=EJDbu!?fud3@qXLA-8N7Z4qwq4)d;a4~Y*OSv%1rFTKwu2{MV5%<;XqcfOG#r|EGXZ#Y4~ZtGk}9=wn}w<*`hYWmD|i zB)`1SGqmGE5iAYqvrhZ`khbJ{`*aF_pJ4@#|3iGu1M(#~_c_Rv)hhC}rUPu5X$~gT zeDX0gxmj=TX2gY-KXHFu>$|i4C<0p8-9=$*nYWkLr-B+CEhoq&ePHkGCjbP=OxwtH z0)PMjAooc`K~z(cvJ)AklOPbe-xxsAbm*uqXE7UaFuj!^M;@&Qope@TU(vgNs@mg6 zP{M?Q5;)_)#tl$rm*w{bmXD$YhG>eEdqoFQ7R%Dr!L{bdKl|0R!lTK2R?}RQWt96+ zK?QHlI-GfDknjM&YvW;`eF9~uKXhPomjKmdih=}P^F^y6<@4mlb3I@9*l7y$-ABB) zIlov}nL2~c3&5csg+2ialf$Tgp;($fsM8eCPS;b_TE@Nwh1B+p^@JJY97milE{|sv z6uHOj2IJD}{5~lU1GZiNQ|u|sTb*KNLsE8AxTft$S6#OW*D?k&rD zPxJkDopc`aFY2_qU6F|}GUejWSclt`*NubpO#SNWyYGGhmTln5;Qj4?2#CSn<}9gt z0s$Iu0BHb}N4+1B_wizW9UL4;`D`0F2zGs{NXjHpeP8sWTtK;j)Mgo;+nL9+S!R+z z8Oe^zIb>-d6ZZm!!B4IMtZ}r}(g(hcm1DSNE5GF|gl}R<@mWRXHdLw(TAePZoI|+z z1152gJRypc4RJ+-z(5XvFp$J)ZANmS7oM!!fEQ>72%n`{{Y3vu?-ziFbd&PC-Zp?# z$VTL*72to2Hdr(T2-#^R0og(%Ov7%4|GfopqbG0MJY7#tXAHk>{a?d#5B$$Q;(1Gm zMhHBeJCFlSZt4-aywkLt;}4)#%S|5m-9-&dX9zg%&mXUx>kJTotmbFvcX!=V2ejN| z07!f2u+{)nY#KDLm~>}EY`sB%B!H47sRynuad>sdAJa(mtpS_XXkn3t8I^-#N_ew94K4q$Ju=oxkk5$&nAj2$kR0Sa8$qBdFm zGf6~rW#OFoG-d1Z-$X9jhI8dzKWb<{3^^-I5K_0VX@O0D6Jv0XxxXoGlyHN#KdH<_1hGG+P&_%2vzD|vtv=|3u*2h$%$lj^iQyzhe7+j_&}-*S3OkW?2uwQ9{C^c zKc%y=@z;?xb^Ph1ZUWGee)*dkNUAfPBbG{UAvUY936cw@6eHlYeVZLtjCCc`=9C7| z!gWgoRRI5|Fw+DcDUD7v_e@gmo-;esl%aWo!jAucnNQJa`tx0*)G>l!(T|&lIm{pO zxesyo*VTzU(=!DkfG>ZICv2$) z8;CoO{|O<-@5PShoRFQo(EEAa&Aj7`5D%qW^aKIrn`gbriXmC-{~(c{}nI&>6FC;pbpHyHpf7bJ@7GXMbffq>(qFmmc|NJuv-=`CA-R`=34 zY*^n}|0W0ECOVv&PM~Qfk-3~O_LdN|97{{PvlQQHI+zC(6Soe&|AG^EvKRlXXM$7chC zDUV&^z4>gjYlzsbtw{6b|KEvV(35i(e($<2H>ThRe%F3-uP$g zlxuyCOnQGmFao5m8rt&xIkeFo8fJwcnp5|__XpQf%S{*0FEeUh%HGz0zj?ySSP+-?S0!~`CUD&GH|5IM5!&yPdbS@91d6-SdmfEN>p%r6uLmdU0pK_dxWic{ zQXttlq`bD9e+a*^B1o#+End>F-I*pq{pl_gO9Yf{41wxg_(%@o|8hNMdo72xQaZ#o z*!G(xKtDv#Qe}H~j$5jKVeTUCQaOIY)&43o)JMbag+N9IlATiujjS%XQZxY_47PUj zAPie01W(J{N!6-od%V;CeTN$Hq5?Xl&rlKBHn^i%#Xi0@g6r&tE>uC$iZGqETG|Pa ze?(IQiN&Rb3eW#k$H4y_dEs9j7E!|gCpGCzv*rPx`9k2})HpkT`IHiS*@3j@zgU^U z<9>p5{%$27K!Aw8K+X}L41lL-0wn}ReWb1FEP*DX^o<2e=dUpO34Hi&zu?~1#ptZV zF8%&jHAb4K{-_I{j#VKpy)^`DK&1i}vr#ACu%m#ou z0FpuppWE3;J6Pd=2+&gghbR!5^YBq;%0#JiTy79YpYUrSlb+#21pA?ar=~>*=Qnq@ zQ^+|v+OL#fO4@+MHlD;JP1tZShYIS%+zwgkZhOK3ecl<9i4w}vTyGV&P9Z6ZGas6T z^(j`PAOJ6yJ50_y{M|8iHdmjU4#-T)c{2;N-LT~TY_d*&AcBt4^-0@LGv>)wU8M_H zhu5NLru5VWKcl?Paa~KtjAiG#hP85Yc>`T^ou5F8zrJo(-KFum4N!004*46N(+#oq zy#B8AB;}f{FCkoUII9d{>t7{m+M$KDbD2Xp)%Y~5?YP5G1Im=?mz&Bo z6Lm^Xt{2*W8MFf^Z*3s{7aYXV)viNr$RYK0PJ89>kSXstcIYr@1lWb)9hNsRV1CHO z|ImSZ)2!qF8(OK(YFjTh%mY$mM)!QLse-sA;DCR_fU9%X|6DS0Q_R@KX}af9kh;T< zah7a6_5(`v9pO^>Mm8r4Kn=c^LiPvOC;DIKv(@!~g8u`+Cgkmt%9C)AEbhLhsppJB zPlj)2xrjrtZBCKhcyGGirq{aptwGZKv+JgqZ{wPN^LbbI$beh@vO9pUjze%#=X$-K zumrR~@x7gOAS^v3(1AcMVnpf452@&HkS_FIHNK@q-?WgsuG|1Efg|57EO5kB-|waB zD?~JZ_0>Lk3+podlM6hp&Hd+rOy3_|082ubJ8P%_^@>r zO%|J@VV*^GjKBh?B)D@5dXJr3IHgHw-fqf&m~~dG^|mk44a?Ee&hejs80A~%3dF$Q zQ-9p^t{)EI(7)P3Uy&Tv#6`1cpAzc)%vp#%ySgA%qO>oJ8z@oP(?EnxOL=8fV{s zB>;m9Pc9S6OrDMoTXos#x_fp`%5uh@H+?GrD8|goT0rNk44;5wUdSu>^TwYUtD<+wok$(FT-%a7@Uv6hhH6(j$Cx(P{pPeG|~{3jSU8<{m?fi zIC=%wOW8Wr?*JOL><>$WJJ7g%ydxNYCz1jT%;o`C2puU8fUt34&m+7Xm+zm^nRl_d z);H9P{@29+8d=1<{Q)2yk7EG=yfdq(g`a26+IL-kyX>oEg%;cB`EIpsf=%-A{nXN{KQOesm*J3H&>oPJCRI9+jolaC00z`E@j z1UssTYBOyeYB*^wr>ueo`!~&RRDp&cTSKkMIn+s)> z5TXkqKviTiPhg*TMXbJTt{mxDsLkNAs*%%6u z`j9qY<_~G9WHTa_&cp^$)Sba622d!l$o6)>~3?MZ=Ay1ou|7QyzfO2u;VM+U>4xfQeY_FxGF6?jQ)YeVQ zp=jrYoCi*-L_@8ZhO+g_EZj{%#Xw8%^p?9m*8hX9c;f#93M>bI{Z_L3#y-e0t`Gm$ z1_(}=u0GEP1O`c~wSFw$oa4Bj(|-Z9`BU!ydx&rV18yk+ZDAjO3;>rC@|22zAzf41 z=|bmvJCe1XJa2o-fq&qIry(rLKNnh<4w_5{Qe;2OvVjLuhd#$sm+&{YPFeu>n%6W0 zPp@bUkX1;T8C-@GuAwXB7eev?U}z423V^dd&KBD#Wkw__V54VtXrzZm3J~Cepu~3{ zaDL|lM7{oB>(oJi0-*<}vGyJ9Z;f&reP~7W3rbXbDoovf>W~P5o(DCl5N(!SGekAG zHWhm4FwZ2Xjz61Y`2RGYLq2PMqME!s;VS&S0fUGP*N(dtYHVAdN{GdRY5`9XuSxm6scU7bz6p8jYpSjjaBJJ3K<5GP z?p{=*JWdgMNtCywy)$$A3NrW}ZWt-g>A9X5af(r-osLDr828lZ|?d?%bo(f8WKCn|68o*zeYivjL~w z#-DKiKeG!IgmUQu6N>+209YE0?(9F+zn*bB19+A|(}~BbUQCQ{CTP)1Ag7kHDO`Vb z{7fBqPJoux^HsF0)>rUcpGvGNwoJh@FpgZ&DaivMGzCem({!FSp`O5V%FwWG>9+Lc z0wAOn1O8vOf6l3YeeY=jnkujkcyy`maj1ocRVc3`ShwwY9?l4%!5lEsLw+iYG;Ksb z<9v0c%{tK_Dz~-ZmDtaIIl)A^QsSWLVx)X7dd54XJcM3*%3zN`<*8wt-l?x3!Z^=% z&_Mg-oWr8}la{Ka_jK@uq!E48$(S8aOHG@iTx-2-)DD$Ma2HH?B+Vw<@0BBe}z;(IsF!*ApVb!_}`uF5h1TH#rDD3 zI&z4ef49T8o^=;Tdd+k8M*shW`~Q>69ky~iM*#2N41fe$#SpD&X8`-6pC{k|>gL^V z&*m zf85R!AUcR+M3m49q&?jofb0Td4X$88R);XXGWZP*Bb@~f&%L_y3;+Tj%-5kz&ZYDqoma?36U}mWN>x#>#L;N7!JMi=>la{jhdV6 zj`JNogs?BlF}PjUy@Ca?m!bBv?zd>Qf8f$_@4HD@bRXxf&jzDZXRN*#>Wp&_U9bD{ zsuEZ7xcN$x;t%{;2hNjoN*YVUr)C#Pvdv@{u59D zC(^VHzv2iaGL~McbUG2*wt?5-Z9t{al<^cbc8gF5+pdFspLAze_;jG z8^;2UKYp+8i7e@7lH8glKu;s+1i_T9hurWK9k4)ci!%{baRta)xIfYh*b}R4!u%6R z>YNJn#=d)Y(0G;r^xkG61l*ZGCbS>h}VD{OE>&bx9rX2rI-E91C!Y>O9&b|l? zfJr~}AmHgNjFNwBsoeCxuqD`kf33UH>gY4&v1==M{t9RpYt@`}J}i*=zayk5P#kiT z4-2Y```-0*Br}OqM}|*8vhx3`kt5pK5nE{(%>QB!Y6_R!U(cYEHoiST*ADw+ECY9a z%KiW3YWxp0rD6PjA$(LoI};$h^WVMLd2-*BTRHb7wiY93Tj(MaGU@4m%w(93^xh(st8Ji0nNb zDwY2mfJnK+^QOKRUwJ7pe;LvEtQ;!17h-U*`{V3b_34BO0JLL5R@2-``Sw<|rKwfV zGzeQyk0&_OiLPbR^9R^SaZb_D!O%#a-^thDp82bWdcu%E4bR+^)uhy>vSI4W3%PRt z4%jk3!=qA=Vv1>DBZtFM`@xrP)J4A+{Z-fMPNS18{+}8O+IX4of5rxNse&UwDfYm% zeN!ggZxaHwF0?Hs!nrv^A95`W@p!rGy3lLbLG)A*oRajq~Ii_{p^VjVSbSnBGOCb{BDCE@jTH{F0*$kSU z$qjOAg2YpuP_D%He?b!;;0TST!*maen|HAHlbOxz7&(Jy2=oqh3xG9w-q^nlF{OGE zcjn$+0cO`f<=S}_U}S@g+{Pi@H%=HWw}}WC1*j8Tlco!yz0a>4C{=5>&pz=#%x%bL zOb0+-#MBH7*F~_e@96rF?259xx2OH{S<6gk4>;T7E%*Pge_a#erMvVu1Ay|zZ>Yaq zV-DfaM^FU(b^ry_Snsd0o7d3+4MTjnXzPpIW%}b0TQ*g2s>%psbSdx9L$z9U2b#fv7{=$8?S|vroXH86 zdGeFW)Ey7~aDAP?1npO!JHO7FvQnm8@2`5eXOv#Hf3X6nK^C1gJazdI%~1nxo_=nw z{qTCSAJ@n3SM_o{>|MS&c+;~oF_i!9e1@2br^(W(9hHSCOd!vuYikwRI`b$uI)qA% z6*VS}g3|~B9@a9zPT72r0GOwZ1H|(S%GTB41g;aig4}u(KiP}sZECl$;cbJuupMvj{&mW=N18gvmxQzp+|J_Vk{ci+1MYB5g7yH?m=WK{$E;H;}5}mICpJ@;LPePfU})He1(0K(#3-!+cy?^JC-aKMitR3dDl&Iboz zf6p_mGn^?P0{Irz(+~Fq9z{DW`TQmfeR6y-KEY|10EiteUHJj=p0QHbhHM4gSs22Gn%hZDr@|IQZG>xNCa6|U>r&2`2=mH~5C=HzGu z19aC@;U!+jvwB5s^cm~(?P6mRp6|@*Qxh)6(~nHGA6{=7%KzZE>8i^uB_iYSmt&?0 z;c||Dn6g8}quTEaDCp;ufSaAC%?edycAFxt||Q0YysE>3;kmN1i#x_1N-wkn;-RmF*xLa09rNW|2zi#c?jMN zP;Pw-Xggu>YHYIszZ<5>m@I%#e~9Df*919CEnq77$p0I_JNdURB>U8fU;s!parnv6 zg9rncCg65_aa1;PKpc)fS7>$gdHRRk?-xqI6T7p2ts~$4_I8(l0wDCSrFl5O2L!<4 z=^c8H5g)7kX5_K`1_GX>c|E}e#z3UdaAf3$j@!)PP? zeahHEhjZy-#UzPnO5{^SSGLqC6bNEZAPv&v#Z4}-2BHP_SxIVJ!JNC@fATZYmRtW4 zUr%|`A}9`hjlY&yFNls4o;UjNq%7dZ5T<~18Lj~{Cq;3Hb^?v1J~_{`N}Zr~-F=%f zfIFZ!r%$V|Jy{wg@7!W`f0S@%YW>UhL~k>}O;-ToObZ(xn!m_KF@C})+^MqNAWu^w zhH<8l2a=2WH#%opMwO4QS(>^Wi8wI9wK=&AY3i8jax|4t5?QdXk#~Dm`7(36R>G~( zt>0{7@@Jl_i9XJ+)4cqzUQbT_n+{E=(_|^$P_Jo1awHJzyxVr`f5m6LXAY~|&Mov~ z>kdNL&72_BisEx~LE&w2LX6LDYf&dT0wBn#*TYS_JS%#ZIT+MAo*ru&Kf2CKsMWvW##~TE-f7ghW&i-%o|5@uW!`VJPK4W~Ac9z8V&NaPl zL1>c0MzaG72WjD6w_R3UpeLZ}-(5LS_Wph1;g9%VVsF1^>FWr`~UeuP0s3*!~Zt?zfY3nfx#lXv;@ktf630MF127Y?Qz&M;WeZh zCJ3ocbpAsfeMsTj-#mVRh9lcFswseeTqeZ)HUiE)N1c=rBvTFuaGcBow4E}M0wO4X zQD#TMScN7CM3FZL6hr_t2Vlv!iNFDf0RfO^eK)WRK#ZPWgS+?Z{;@sISpjxWL1LK$i1bT;x+ zdgQMEHBew`=&gmKh>~NC+j9V7{*K!Ld~6}4i;F?LIGknt|>z!zB~+M$j9EZdvx z0ANoEe{}xV=6-jOLp@PndE%QS;!Oc-JwKEHvwiUFp}0Emo&osQ&dmk@gl?;~m1LAJ zqn*#(VGv+-$VIGl3uDs%-^0i*6ELMDfUR!e6mrY%QHu5u{-rQ8i-25!wC=WEpme#fD2Hd9sS4w(6<%j ze<_2yh2{Y2F`^FB)!I29^2UKs{*M!xK-4bh>|0m#5CrkR>CNY7o zdOyhaITT47`~2(Ofd4=L_kaE;ey`u__xinluixwU`n`Uy-|P4Ky@u<51>5+&KDvI_ zKI6uixwU`n`Uy|Ie=f2Or*U!Otoi$^ZZW M07*qoM6N<$f`j~@8UO$Q From 7509918450ca8863a2e88e7011abcfe5f79deb72 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 12:38:56 -0500 Subject: [PATCH 26/67] remove furutre improvements that are not wours --- README.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/README.md b/README.md index 386f96e2..756031b0 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,6 @@ So here it is: a Linux application for the Logitech Spotlight. - [Table of Contents](#table-of-contents) - [Features](#features) - [Screenshots](#screenshots) - - [Planned features](#planned-features) - [Supported Environments](#supported-environments) - [How it works](#how-it-works) - [Button mapping](#button-mapping) @@ -87,11 +86,6 @@ So here it is: a Linux application for the Logitech Spotlight. [Projecteur spotlight overlay](./doc/screenshot-spot.png) [Projecteur Plasma tray popup](./doc/screenshot-traymenu.png) -### Planned features - -* Support for more customizable button mapping actions. -* Support of more proprietary features of the Logitech Spotlight and other devices. - ## Supported Environments This port targets KDE Plasma 6.7 on Wayland with Qt 6.11. X11 and Qt 5 are not From c2f0990041a1f14a345cbcc0f3e4273cd9ac5e9a Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 13:58:56 -0500 Subject: [PATCH 27/67] Added battery level to the devices. --- doc/LogitechSpotlightHID++.md | 7 ++ plasma/projecteurapplet.cc | 29 +++++++ plasma/projecteurapplet.h | 13 +++ plasma/qml/FullRepresentation.qml | 91 +++++++++++++++++++++ src/device-hidpp.cc | 41 ++++++++-- src/deviceswidget.cc | 13 ++- src/hidpp.cc | 1 + src/hidpp.h | 1 + src/projecteurcontrol.cc | 131 ++++++++++++++++++++++++++++++ src/projecteurcontrol.h | 13 +++ 10 files changed, 327 insertions(+), 13 deletions(-) diff --git a/doc/LogitechSpotlightHID++.md b/doc/LogitechSpotlightHID++.md index 3159cee9..9f25daad 100644 --- a/doc/LogitechSpotlightHID++.md +++ b/doc/LogitechSpotlightHID++.md @@ -90,6 +90,7 @@ enum class FeatureCode : uint16_t { Reset = 0x0020, DFUControlSigned = 0x00c2, BatteryStatus = 0x1000, + UnifiedBattery = 0x1004, PresenterControl = 0x1a00, Sensor3D = 0x1a01, ReprogramControlsV4 = 0x1b04, @@ -258,6 +259,12 @@ enum class BatteryStatus : uint8_t {Discharging = 0x00, }; ``` +Newer devices such as the Logitech Spotlight 2 use the Unified Battery Feature +Code (`0x1004`). Its `getStatus` request uses function code `0x01`; the response +contains the current discharge percentage in the fifth byte, an approximate +battery level in the sixth byte, and the same battery status value in the +seventh byte. + ## Processing of device response All of the HID++ commands listed above result in response messages from the diff --git a/plasma/projecteurapplet.cc b/plasma/projecteurapplet.cc index 709b4136..7edbad76 100644 --- a/plasma/projecteurapplet.cc +++ b/plasma/projecteurapplet.cc @@ -5,6 +5,7 @@ #include +#include #include #include #include @@ -41,6 +42,14 @@ ProjecteurApplet::ProjecteurApplet(QObject* parent, const KPluginMetaData& data, bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), QString::fromLatin1(interfaceName), QStringLiteral("connectedDevicesChanged"), this, SLOT(remoteConnectedDevicesChanged(QStringList))); + bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), + QString::fromLatin1(interfaceName), + QStringLiteral("connectedDeviceBatteryLevelsChanged"), + this, SLOT(remoteConnectedDeviceBatteryLevelsChanged(QList))); + bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), + QString::fromLatin1(interfaceName), + QStringLiteral("connectedDeviceBatteryStatusesChanged"), + this, SLOT(remoteConnectedDeviceBatteryStatusesChanged(QStringList))); bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), QString::fromLatin1(interfaceName), QStringLiteral("presetsChanged"), this, SLOT(remotePresetsChanged(QStringList))); @@ -125,6 +134,20 @@ void ProjecteurApplet::remoteConnectedDevicesChanged(const QStringList& devices) emit connectedDevicesChanged(); } +void ProjecteurApplet::remoteConnectedDeviceBatteryLevelsChanged(const QList& levels) +{ + if (m_connectedDeviceBatteryLevels == levels) { return; } + m_connectedDeviceBatteryLevels = levels; + emit connectedDeviceBatteryLevelsChanged(); +} + +void ProjecteurApplet::remoteConnectedDeviceBatteryStatusesChanged(const QStringList& statuses) +{ + if (m_connectedDeviceBatteryStatuses == statuses) { return; } + m_connectedDeviceBatteryStatuses = statuses; + emit connectedDeviceBatteryStatusesChanged(); +} + void ProjecteurApplet::remotePresetsChanged(const QStringList& presets) { if (m_presets == presets) { return; } @@ -153,6 +176,10 @@ void ProjecteurApplet::refresh() remoteOverlayEnabledChanged(interface.property("OverlayEnabled").toBool()); remoteSpotlightActiveChanged(interface.property("SpotlightActive").toBool()); remoteConnectedDevicesChanged(interface.property("ConnectedDevices").toStringList()); + remoteConnectedDeviceBatteryLevelsChanged( + qdbus_cast>(interface.property("ConnectedDeviceBatteryLevels"))); + remoteConnectedDeviceBatteryStatusesChanged( + interface.property("ConnectedDeviceBatteryStatuses").toStringList()); remotePresetsChanged(interface.property("Presets").toStringList()); remoteCurrentPresetChanged(interface.property("CurrentPreset").toString()); } @@ -166,6 +193,8 @@ void ProjecteurApplet::resetState() remoteOverlayEnabledChanged(true); remoteSpotlightActiveChanged(false); remoteConnectedDevicesChanged({}); + remoteConnectedDeviceBatteryLevelsChanged({}); + remoteConnectedDeviceBatteryStatusesChanged({}); remotePresetsChanged({}); remoteCurrentPresetChanged({}); } diff --git a/plasma/projecteurapplet.h b/plasma/projecteurapplet.h index f2f74efa..24d6a37a 100644 --- a/plasma/projecteurapplet.h +++ b/plasma/projecteurapplet.h @@ -4,6 +4,7 @@ #include +#include #include class QDBusServiceWatcher; @@ -16,6 +17,10 @@ class ProjecteurApplet : public Plasma::Applet Q_PROPERTY(bool overlayEnabled READ overlayEnabled NOTIFY overlayEnabledChanged) Q_PROPERTY(bool spotlightActive READ spotlightActive NOTIFY spotlightActiveChanged) Q_PROPERTY(QStringList connectedDevices READ connectedDevices NOTIFY connectedDevicesChanged) + Q_PROPERTY(QList connectedDeviceBatteryLevels READ connectedDeviceBatteryLevels + NOTIFY connectedDeviceBatteryLevelsChanged) + Q_PROPERTY(QStringList connectedDeviceBatteryStatuses READ connectedDeviceBatteryStatuses + NOTIFY connectedDeviceBatteryStatusesChanged) Q_PROPERTY(QStringList presets READ presets NOTIFY presetsChanged) Q_PROPERTY(QString currentPreset READ currentPreset NOTIFY currentPresetChanged) @@ -27,6 +32,8 @@ class ProjecteurApplet : public Plasma::Applet bool overlayEnabled() const { return m_overlayEnabled; } bool spotlightActive() const { return m_spotlightActive; } QStringList connectedDevices() const { return m_connectedDevices; } + QList connectedDeviceBatteryLevels() const { return m_connectedDeviceBatteryLevels; } + QStringList connectedDeviceBatteryStatuses() const { return m_connectedDeviceBatteryStatuses; } QStringList presets() const { return m_presets; } QString currentPreset() const { return m_currentPreset; } @@ -43,6 +50,8 @@ class ProjecteurApplet : public Plasma::Applet void overlayEnabledChanged(); void spotlightActiveChanged(); void connectedDevicesChanged(); + void connectedDeviceBatteryLevelsChanged(); + void connectedDeviceBatteryStatusesChanged(); void presetsChanged(); void currentPresetChanged(); @@ -52,6 +61,8 @@ private slots: void remoteOverlayEnabledChanged(bool enabled); void remoteSpotlightActiveChanged(bool active); void remoteConnectedDevicesChanged(const QStringList& devices); + void remoteConnectedDeviceBatteryLevelsChanged(const QList& levels); + void remoteConnectedDeviceBatteryStatusesChanged(const QStringList& statuses); void remotePresetsChanged(const QStringList& presets); void remoteCurrentPresetChanged(const QString& preset); @@ -66,6 +77,8 @@ private slots: bool m_overlayEnabled = true; bool m_spotlightActive = false; QStringList m_connectedDevices; + QList m_connectedDeviceBatteryLevels; + QStringList m_connectedDeviceBatteryStatuses; QStringList m_presets; QString m_currentPreset; }; diff --git a/plasma/qml/FullRepresentation.qml b/plasma/qml/FullRepresentation.qml index 68b3b979..aab0c4b9 100644 --- a/plasma/qml/FullRepresentation.qml +++ b/plasma/qml/FullRepresentation.qml @@ -15,6 +15,70 @@ PlasmaExtras.Representation { required property var backend required property PlasmoidItem plasmoidItem + function batteryLevel(index) { + if (!root.backend || index >= root.backend.connectedDeviceBatteryLevels.length) + return -1; + + return root.backend.connectedDeviceBatteryLevels[index]; + } + + function batteryStatus(index) { + if (!root.backend || index >= root.backend.connectedDeviceBatteryStatuses.length) + return ""; + + return root.backend.connectedDeviceBatteryStatuses[index]; + } + + function batteryIconName(index) { + const level = batteryLevel(index); + const status = batteryStatus(index); + if (status === "invalid-battery" || status === "thermal-error" || status === "charging-error") + return "dialog-warning-symbolic"; + + if (level < 0) + return ""; + + const charging = status === "charging" || status === "almost-full" || status === "slow-charging"; + const suffix = charging ? "-charging-symbolic" : "-symbolic"; + if (level <= 5) + return "battery-empty" + suffix; + if (level <= 10) + return "battery-caution" + suffix; + if (level <= 20) + return "battery-low" + suffix; + + const roundedLevel = Math.min(100, Math.max(0, Math.round(level / 10) * 10)); + return "battery-" + roundedLevel.toString().padStart(3, "0") + suffix; + } + + function batteryToolTip(index) { + const level = batteryLevel(index); + const status = batteryStatus(index); + if (status === "invalid-battery") + return i18n("Battery error"); + if (status === "thermal-error") + return i18n("Battery temperature error"); + if (status === "charging-error") + return i18n("Battery charging error"); + if (level < 0) + return ""; + + let state = ""; + if (status === "charging") + state = i18n("Charging"); + else if (status === "almost-full") + state = i18n("Almost full"); + else if (status === "full") + state = i18n("Full"); + else if (status === "slow-charging") + state = i18n("Charging slowly"); + else if (status === "discharging") + state = i18n("Discharging"); + + return state.length > 0 ? i18n("Battery: %1% (%2)", level, state) + : i18n("Battery: %1%", level); + } + implicitWidth: Kirigami.Units.gridUnit * 22 implicitHeight: content.implicitHeight + header.implicitHeight focus: true @@ -50,6 +114,7 @@ PlasmaExtras.Representation { model: root.backend ? root.backend.connectedDevices : [] delegate: RowLayout { + required property int index required property string modelData Layout.fillWidth: true @@ -67,6 +132,32 @@ PlasmaExtras.Representation { elide: Text.ElideRight } + Kirigami.Icon { + id: batteryIcon + + readonly property string iconName: root.batteryIconName(index) + readonly property string toolTipText: root.batteryToolTip(index) + + visible: iconName.length > 0 + source: iconName + implicitWidth: Kirigami.Units.iconSizes.smallMedium + implicitHeight: implicitWidth + Accessible.name: toolTipText + + MouseArea { + id: batteryHover + + anchors.fill: parent + acceptedButtons: Qt.NoButton + hoverEnabled: true + } + + PlasmaComponents3.ToolTip { + text: batteryIcon.toolTipText + visible: batteryHover.containsMouse && text.length > 0 + } + } + } } diff --git a/src/device-hidpp.cc b/src/device-hidpp.cc index a6e93682..a94fabdc 100644 --- a/src/device-hidpp.cc +++ b/src/device-hidpp.cc @@ -395,22 +395,32 @@ void SubHidppConnection::getBatteryLevelStatus( { using namespace HIDPP; - const auto batteryIndex = m_featureSet.featureIndex(FeatureCode::BatteryStatus); + const auto batteryStatusIndex = m_featureSet.featureIndex(FeatureCode::BatteryStatus); + const auto unifiedBatteryIndex = m_featureSet.featureIndex(FeatureCode::UnifiedBattery); + const auto batteryIndex = batteryStatusIndex != 0 ? batteryStatusIndex : unifiedBatteryIndex; if (batteryIndex == 0) { if (cb) { cb(MsgResult::FeatureNotSupported, {}); } return; } - Message batteryReqMsg(Message::Type::Short, DeviceIndex::WirelessDevice1, batteryIndex, 0); - sendRequest(std::move(batteryReqMsg), [cb=std::move(cb)](MsgResult res, Message&& msg) mutable + // BATTERY_STATUS uses getBatteryLevelStatus (function 0), whereas + // UNIFIED_BATTERY uses getStatus (function 1). + const uint8_t function = batteryStatusIndex != 0 ? 0 : 1; + Message batteryReqMsg( + Message::Type::Short, DeviceIndex::WirelessDevice1, batteryIndex, function); + sendRequest(std::move(batteryReqMsg), + [cb=std::move(cb), unified=unifiedBatteryIndex != 0 && batteryStatusIndex == 0] + (MsgResult res, Message&& msg) mutable { if (!cb) { return; } - auto batteryInfo = (res != MsgResult::Ok) ? BatteryInfo{} - : BatteryInfo{msg[4], - msg[5], - to_enum(msg[6])}; + // UNIFIED_BATTERY returns the exact discharge percentage, an approximate + // level, and the same status byte as BATTERY_STATUS. It has no "next + // reported percentage", so use the current percentage for both fields. + auto batteryInfo = (res != MsgResult::Ok) + ? BatteryInfo{} + : BatteryInfo{msg[4], unified ? msg[4] : msg[5], to_enum(msg[6])}; cb(res, std::move(batteryInfo)); }); } @@ -693,10 +703,16 @@ void SubHidppConnection::updateDeviceFlags() featureFlagsUnset |= DeviceFlag::Vibrate; } - if (m_featureSet.featureCodeSupported(HIDPP::FeatureCode::BatteryStatus)) { + const bool hasBatteryStatus = + m_featureSet.featureCodeSupported(HIDPP::FeatureCode::BatteryStatus); + const bool hasUnifiedBattery = + m_featureSet.featureCodeSupported(HIDPP::FeatureCode::UnifiedBattery); + if (hasBatteryStatus || hasUnifiedBattery) { featureFlagsSet |= DeviceFlag::ReportBattery; logDebug(hid) << tr("Subdevice '%1' reported %2 support.") - .arg(path()).arg(toString(HIDPP::FeatureCode::BatteryStatus)); + .arg(path()).arg(toString(hasBatteryStatus + ? HIDPP::FeatureCode::BatteryStatus + : HIDPP::FeatureCode::UnifiedBattery)); } else { featureFlagsUnset |= DeviceFlag::ReportBattery; } @@ -771,6 +787,13 @@ void SubHidppConnection::registerForFeatureNotifications() registerNotificationCallback(this, batIndex, makeSafeCallback([this](Message&& msg) { setBatteryInfo(BatteryInfo{msg[4], msg[5], to_enum(msg[6])}); }), 0 /* function 0 */); } + + if (const auto batIndex = m_featureSet.featureIndex(FeatureCode::UnifiedBattery)) + { + registerNotificationCallback(this, batIndex, makeSafeCallback([this](Message&& msg) { + setBatteryInfo(BatteryInfo{msg[4], msg[4], to_enum(msg[6])}); + }), 0 /* function 0 */); + } } // ------------------------------------------------------------------------------------------------- diff --git a/src/deviceswidget.cc b/src/deviceswidget.cc index 6cc57b54..3715c25a 100644 --- a/src/deviceswidget.cc +++ b/src/deviceswidget.cc @@ -731,10 +731,15 @@ void DeviceInfoWidget::updateBatteryInfo(SubHidppConnection* hdc) const auto batteryInfo = hdc->batteryInfo(); if (batteryInfo.status == HIDPP::BatteryStatus::Discharging) { - m_batteryInfo = QString("%1% - %2% (%3)").arg( - QString::number(batteryInfo.currentLevel), - QString::number(batteryInfo.nextReportedLevel), - toString(batteryInfo.status)); + if (batteryInfo.currentLevel == batteryInfo.nextReportedLevel) { + m_batteryInfo = QString("%1% (%2)").arg( + QString::number(batteryInfo.currentLevel), toString(batteryInfo.status)); + } else { + m_batteryInfo = QString("%1% - %2% (%3)").arg( + QString::number(batteryInfo.currentLevel), + QString::number(batteryInfo.nextReportedLevel), + toString(batteryInfo.status)); + } } else { m_batteryInfo = toString(batteryInfo.status); } diff --git a/src/hidpp.cc b/src/hidpp.cc index 7f2dd13c..61cc36d8 100644 --- a/src/hidpp.cc +++ b/src/hidpp.cc @@ -729,6 +729,7 @@ const char* toString(HIDPP::FeatureCode fc) ENUM_CASE_STRINGIFY(FeatureCode::Reset); ENUM_CASE_STRINGIFY(FeatureCode::DFUControlSigned); ENUM_CASE_STRINGIFY(FeatureCode::BatteryStatus); + ENUM_CASE_STRINGIFY(FeatureCode::UnifiedBattery); ENUM_CASE_STRINGIFY(FeatureCode::PresenterControl); ENUM_CASE_STRINGIFY(FeatureCode::Sensor3D); ENUM_CASE_STRINGIFY(FeatureCode::ReprogramControlsV4); diff --git a/src/hidpp.h b/src/hidpp.h index 1dda42ef..3733e9ae 100644 --- a/src/hidpp.h +++ b/src/hidpp.h @@ -44,6 +44,7 @@ namespace HIDPP { Reset = 0x0020, DFUControlSigned = 0x00c2, BatteryStatus = 0x1000, + UnifiedBattery = 0x1004, PresenterControl = 0x1a00, Sensor3D = 0x1a01, ReprogramControlsV4 = 0x1b04, diff --git a/src/projecteurcontrol.cc b/src/projecteurcontrol.cc index e348dc74..8145ce4b 100644 --- a/src/projecteurcontrol.cc +++ b/src/projecteurcontrol.cc @@ -3,6 +3,7 @@ #include "projecteurcontrol.h" +#include "device-hidpp.h" #include "projecteurapp.h" #include "settings.h" #include "spotlight.h" @@ -12,8 +13,28 @@ #include #include #include +#include #include +namespace { +QString batteryStatusName(HIDPP::BatteryStatus status) +{ + using BatteryStatus = HIDPP::BatteryStatus; + switch (status) { + case BatteryStatus::Discharging: return QStringLiteral("discharging"); + case BatteryStatus::Charging: return QStringLiteral("charging"); + case BatteryStatus::AlmostFull: return QStringLiteral("almost-full"); + case BatteryStatus::Full: return QStringLiteral("full"); + case BatteryStatus::SlowCharging: return QStringLiteral("slow-charging"); + case BatteryStatus::InvalidBattery: return QStringLiteral("invalid-battery"); + case BatteryStatus::ThermalError: return QStringLiteral("thermal-error"); + case BatteryStatus::ChargingError: return QStringLiteral("charging-error"); + case BatteryStatus::Uninitialized: return {}; + } + return {}; +} +} + ProjecteurControl::ProjecteurControl(ProjecteurApplication* application, Settings* settings, Spotlight* spotlight, bool trayVisible) : QObject(application) @@ -36,9 +57,20 @@ ProjecteurControl::ProjecteurControl(ProjecteurApplication* application, Setting const auto devices = connectedDevices(); emit connectedDevicesChanged(devices); emitPropertiesChanged({{QStringLiteral("ConnectedDevices"), devices}}); + emitBatteryPropertiesChanged(); }; connect(m_spotlight, &Spotlight::deviceConnected, this, updateConnectedDevices); connect(m_spotlight, &Spotlight::deviceDisconnected, this, updateConnectedDevices); + connect(m_spotlight, &Spotlight::subDeviceConnected, this, + [this](const DeviceId& id, const QString& /* name */, const QString& path) { + watchBatteryConnection(id, path); + }); + + auto* batteryTimer = new QTimer(this); + batteryTimer->setTimerType(Qt::VeryCoarseTimer); + batteryTimer->setInterval(5 * 60 * 1000); + connect(batteryTimer, &QTimer::timeout, this, &ProjecteurControl::requestBatteryUpdates); + batteryTimer->start(); const auto updatePresets = [this]() { if (!m_currentPreset.isEmpty() && !m_settings->presetModel()->hasPreset(m_currentPreset)) { @@ -135,6 +167,55 @@ QStringList ProjecteurControl::connectedDevices() const return result; } +QList ProjecteurControl::connectedDeviceBatteryLevels() const +{ + QList result; + for (const auto& device : m_spotlight->connectedDevices()) + { + int level = -1; + const auto connection = m_spotlight->deviceConnection(device.id); + if (connection) + { + for (const auto& subDevice : connection->subDevices()) + { + const auto hidpp = qobject_cast(subDevice.second.get()); + if (hidpp && hidpp->hasFlags(DeviceFlag::ReportBattery) + && hidpp->batteryInfo().status != HIDPP::BatteryStatus::Uninitialized) + { + level = hidpp->batteryInfo().currentLevel; + break; + } + } + } + result.push_back(level); + } + return result; +} + +QStringList ProjecteurControl::connectedDeviceBatteryStatuses() const +{ + QStringList result; + for (const auto& device : m_spotlight->connectedDevices()) + { + QString status; + const auto connection = m_spotlight->deviceConnection(device.id); + if (connection) + { + for (const auto& subDevice : connection->subDevices()) + { + const auto hidpp = qobject_cast(subDevice.second.get()); + if (hidpp && hidpp->hasFlags(DeviceFlag::ReportBattery)) + { + status = batteryStatusName(hidpp->batteryInfo().status); + if (!status.isEmpty()) { break; } + } + } + } + result.push_back(status); + } + return result; +} + QStringList ProjecteurControl::presets() const { QStringList result; @@ -184,6 +265,56 @@ void ProjecteurControl::clearCurrentPreset() emitPropertiesChanged({{QStringLiteral("CurrentPreset"), m_currentPreset}}); } +void ProjecteurControl::emitBatteryPropertiesChanged() +{ + const auto levels = connectedDeviceBatteryLevels(); + const auto statuses = connectedDeviceBatteryStatuses(); + emit connectedDeviceBatteryLevelsChanged(levels); + emit connectedDeviceBatteryStatusesChanged(statuses); + emitPropertiesChanged({ + {QStringLiteral("ConnectedDeviceBatteryLevels"), QVariant::fromValue(levels)}, + {QStringLiteral("ConnectedDeviceBatteryStatuses"), statuses} + }); +} + +void ProjecteurControl::requestBatteryUpdates() +{ + for (const auto& device : m_spotlight->connectedDevices()) + { + const auto connection = m_spotlight->deviceConnection(device.id); + if (!connection) { continue; } + for (const auto& subDevice : connection->subDevices()) + { + const auto hidpp = qobject_cast(subDevice.second.get()); + if (hidpp && hidpp->hasFlags(DeviceFlag::ReportBattery)) { + hidpp->triggerBattyerInfoUpdate(); + } + } + } +} + +void ProjecteurControl::watchBatteryConnection(const DeviceId& id, const QString& path) +{ + const auto connection = m_spotlight->deviceConnection(id); + if (!connection) { return; } + const auto subDevice = connection->subDevice(path); + const auto hidpp = qobject_cast(subDevice.get()); + if (!hidpp) { return; } + + connect(hidpp, &SubHidppConnection::batteryInfoChanged, this, + [this](const HIDPP::BatteryInfo&) { emitBatteryPropertiesChanged(); }); + connect(hidpp, &SubHidppConnection::featureSetInitialized, this, [this, hidpp]() { + emitBatteryPropertiesChanged(); + if (hidpp->hasFlags(DeviceFlag::ReportBattery)) { + hidpp->triggerBattyerInfoUpdate(); + } + }); + + if (hidpp->hasFlags(DeviceFlag::ReportBattery)) { + hidpp->triggerBattyerInfoUpdate(); + } +} + void ProjecteurControl::emitPropertiesChanged(const QVariantMap& changedProperties) { if (!m_serviceRegistered) { return; } diff --git a/src/projecteurcontrol.h b/src/projecteurcontrol.h index 8ca8cfc2..b1e7bdbb 100644 --- a/src/projecteurcontrol.h +++ b/src/projecteurcontrol.h @@ -2,6 +2,7 @@ // - See LICENSE.md and README.md #pragma once +#include #include #include #include @@ -9,6 +10,7 @@ class ProjecteurApplication; class Settings; class Spotlight; +struct DeviceId; class ProjecteurControl : public QObject { @@ -18,6 +20,10 @@ class ProjecteurControl : public QObject Q_PROPERTY(bool OverlayEnabled READ overlayEnabled NOTIFY overlayEnabledChanged) Q_PROPERTY(bool SpotlightActive READ spotlightActive NOTIFY spotlightActiveChanged) Q_PROPERTY(QStringList ConnectedDevices READ connectedDevices NOTIFY connectedDevicesChanged) + Q_PROPERTY(QList ConnectedDeviceBatteryLevels READ connectedDeviceBatteryLevels + NOTIFY connectedDeviceBatteryLevelsChanged) + Q_PROPERTY(QStringList ConnectedDeviceBatteryStatuses READ connectedDeviceBatteryStatuses + NOTIFY connectedDeviceBatteryStatusesChanged) Q_PROPERTY(QStringList Presets READ presets NOTIFY presetsChanged) Q_PROPERTY(QString CurrentPreset READ currentPreset NOTIFY currentPresetChanged) @@ -36,6 +42,8 @@ class ProjecteurControl : public QObject bool overlayEnabled() const; bool spotlightActive() const; QStringList connectedDevices() const; + QList connectedDeviceBatteryLevels() const; + QStringList connectedDeviceBatteryStatuses() const; QStringList presets() const; QString currentPreset() const { return m_currentPreset; } @@ -51,11 +59,16 @@ public slots: void overlayEnabledChanged(bool enabled); void spotlightActiveChanged(bool active); void connectedDevicesChanged(const QStringList& devices); + void connectedDeviceBatteryLevelsChanged(const QList& levels); + void connectedDeviceBatteryStatusesChanged(const QStringList& statuses); void presetsChanged(const QStringList& presets); void currentPresetChanged(const QString& preset); private: void clearCurrentPreset(); + void emitBatteryPropertiesChanged(); + void requestBatteryUpdates(); + void watchBatteryConnection(const DeviceId& id, const QString& path); void emitPropertiesChanged(const QVariantMap& changedProperties); ProjecteurApplication* const m_application; From 21e16cd1ae6bf6efb9a2932354389d88e2a35c15 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 14:18:52 -0500 Subject: [PATCH 28/67] Adds the timers to spotlight 2 --- README.md | 4 +- doc/LogitechSpotlightHID++.md | 7 ++++ src/device-hidpp.cc | 78 ++++++++++++++++++++++++++++------- src/device-vibration.cc | 11 ++++- src/device-vibration.h | 2 + src/deviceswidget.cc | 25 +++++++++++ src/deviceswidget.h | 7 +++- src/hidpp.cc | 1 + src/hidpp.h | 1 + 9 files changed, 118 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 756031b0..7b7c67e9 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ So here it is: a Linux application for the Logitech Spotlight. * Map any button on the device to (almost) any keyboard combination. * Switch between (cycle through) custom spotlight presets. * Audio Volume / Horizontal and Vertical Scrolling (Logitech Spotlight). -* Vibration (Timer) Support for the Logitech Spotlight +* Vibration (Timer) Support for the Logitech Spotlight and Spotlight 2 * Usable without a presenter device (e.g. for online presentations) ### Screenshots @@ -268,7 +268,7 @@ projecteur -c border=true # Set the border color to red projecteur -c border.color=#ff0000 # Send a vibrate command to the device with -# intensity=128 and length=0 (only Logitech Spotlight) +# intensity=128 and length=0 (length only applies to the original Logitech Spotlight) projecteur -c vibrate=128,0 ``` diff --git a/doc/LogitechSpotlightHID++.md b/doc/LogitechSpotlightHID++.md index 9f25daad..d546728f 100644 --- a/doc/LogitechSpotlightHID++.md +++ b/doc/LogitechSpotlightHID++.md @@ -91,6 +91,7 @@ enum class FeatureCode : uint16_t { DFUControlSigned = 0x00c2, BatteryStatus = 0x1000, UnifiedBattery = 0x1004, + Haptic = 0x19b0, PresenterControl = 0x1a00, Sensor3D = 0x1a01, ReprogramControlsV4 = 0x1b04, @@ -237,6 +238,12 @@ The spotlight device can vibrate if the HID++ message `{0x10, 0x01, (Feature Index for Presenter Control Feature Code), 0x1d, length, 0xe8, intensity}` is sent to it. In the message, length can range between `0x00` to `0x0a`. +The Logitech Spotlight 2 instead exposes the Haptic Feature Code (`0x19b0`). +Projecteur first sets its global haptic level with function `0x02` and payload +`{enabled, level}`, where level is a percentage. It then plays the built-in +Completed waveform (`0x07`) with function `0x04`. Unlike the original +Presenter Control command, this feature does not accept a vibration length. + ### Battery Status Battery status can be requested by sending request command diff --git a/src/device-hidpp.cc b/src/device-hidpp.cc index a94fabdc..f5624a9f 100644 --- a/src/device-hidpp.cc +++ b/src/device-hidpp.cc @@ -14,6 +14,20 @@ DECLARE_LOGGING_CATEGORY(hid) +namespace { + // The HAPTIC feature uses a percentage, while Projecteur's existing vibration + // interface uses the original Spotlight's byte-sized intensity. + constexpr uint8_t hapticLevelFromIntensity(uint8_t intensity) + { + return static_cast( + (static_cast(intensity) * 100U + 127U) / 255U); + } + + static_assert(hapticLevelFromIntensity(0) == 0); + static_assert(hapticLevelFromIntensity(128) == 50); + static_assert(hapticLevelFromIntensity(255) == 100); +} + // ------------------------------------------------------------------------------------------------- SubHidppConnection::SubHidppConnection(SubHidrawConnection::Token token, const DeviceId& id, const DeviceScan::SubDevice& sd) @@ -367,26 +381,56 @@ void SubHidppConnection::sendVibrateCommand(uint8_t intensity, uint8_t length, { const uint8_t pcIndex = m_featureSet.featureIndex(HIDPP::FeatureCode::PresenterControl); - if (pcIndex == 0) + if (pcIndex != 0) { - if (cb) { cb(MsgResult::FeatureNotSupported, HIDPP::Message()); } - return; - } + // Original Logitech Spotlight vibration protocol. + length = length > 10 ? 10 : length; // length should be between 0 to 10. - // Logitech Spotlight: - // present - // controlID len intensity - // unsigned char vibrate[] = {0x10, 0x01, 0x09, 0x1d, 0x00, 0xe8, 0x80}; + using namespace HIDPP; + Message vibrateMsg(Message::Type::Long, DeviceIndex::WirelessDevice1, pcIndex, 1, { + length, 0xe8, intensity + }); - length = length > 10 ? 10 : length; // length should be between 0 to 10. + sendRequest(std::move(vibrateMsg), std::move(cb)); + return; + } using namespace HIDPP; + const uint8_t hapticIndex = m_featureSet.featureIndex(FeatureCode::Haptic); + if (hapticIndex == 0) + { + if (cb) { cb(MsgResult::FeatureNotSupported, Message()); } + return; + } - Message vibrateMsg(Message::Type::Long, DeviceIndex::WirelessDevice1, pcIndex, 1, { - length, 0xe8, intensity + // Spotlight 2 uses the newer HAPTIC feature. Its level is a global percentage + // (setHapticLevel, function 2), and feedback is produced by asking the device + // to play one of its built-in waveforms (playWaveform, function 4). + // + // "Completed" (0x07) is a concise notification waveform suitable for the + // existing vibration timers. The legacy length has no HAPTIC equivalent. + constexpr uint8_t completedWaveform = 0x07; + constexpr uint8_t defaultDisabledLevel = 50; + const bool enabled = intensity != 0; + const uint8_t level = enabled ? hapticLevelFromIntensity(intensity) + : defaultDisabledLevel; + + Message setLevelMsg(Message::Type::Long, DeviceIndex::WirelessDevice1, hapticIndex, 2, { + static_cast(enabled), level }); - sendRequest(std::move(vibrateMsg), std::move(cb)); + sendRequest(std::move(setLevelMsg), makeSafeCallback( + [this, hapticIndex, cb=std::move(cb)](MsgResult result, Message&& response) mutable + { + if (result != MsgResult::Ok) { + if (cb) { cb(result, std::move(response)); } + return; + } + + Message playMsg(Message::Type::Long, DeviceIndex::WirelessDevice1, hapticIndex, 4, + Message::Data{completedWaveform}); + sendRequest(std::move(playMsg), std::move(cb)); + })); } // ------------------------------------------------------------------------------------------------- @@ -695,10 +739,16 @@ void SubHidppConnection::updateDeviceFlags() DeviceFlags featureFlagsSet = DeviceFlag::NoFlags; DeviceFlags featureFlagsUnset = DeviceFlag::NoFlags; - if (m_featureSet.featureCodeSupported(HIDPP::FeatureCode::PresenterControl)) { + const bool hasPresenterControl = + m_featureSet.featureCodeSupported(HIDPP::FeatureCode::PresenterControl); + const bool hasHaptic = + m_featureSet.featureCodeSupported(HIDPP::FeatureCode::Haptic); + if (hasPresenterControl || hasHaptic) { featureFlagsSet |= DeviceFlag::Vibrate; logDebug(hid) << tr("Subdevice '%1' reported %2 support.") - .arg(path()).arg(toString(HIDPP::FeatureCode::PresenterControl)); + .arg(path()).arg(toString(hasPresenterControl + ? HIDPP::FeatureCode::PresenterControl + : HIDPP::FeatureCode::Haptic)); } else { featureFlagsUnset |= DeviceFlag::Vibrate; } diff --git a/src/device-vibration.cc b/src/device-vibration.cc index 94580b12..66312460 100644 --- a/src/device-vibration.cc +++ b/src/device-vibration.cc @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -372,7 +373,8 @@ VibrationSettingsWidget::VibrationSettingsWidget(QWidget* parent) layout->setAlignment(groupBox, Qt::AlignTop); const auto grid = new QGridLayout(groupBox); - grid->addWidget(new QLabel(tr("Length"), this), 0, 0); + m_lengthLabel = new QLabel(tr("Length"), this); + grid->addWidget(m_lengthLabel, 0, 0); grid->addWidget(new QLabel(tr("Intensity"), this), 1, 0); grid->addWidget(m_sbLength, 0, 1); grid->addWidget(m_sbIntensity, 1, 1); @@ -428,6 +430,13 @@ void VibrationSettingsWidget::setIntensity(uint8_t intensity) void VibrationSettingsWidget::setSubDeviceConnection(SubDeviceConnection *sdc) { m_subDeviceConnection = qobject_cast(sdc); + const bool usesHapticWaveform = m_subDeviceConnection + && m_subDeviceConnection->featureSet().featureCodeSupported(HIDPP::FeatureCode::Haptic); + + // HAPTIC devices provide predefined waveforms rather than a duration + // parameter. Projecteur currently uses the "Completed" waveform for timers. + m_lengthLabel->setVisible(!usesHapticWaveform); + m_sbLength->setVisible(!usesHapticWaveform); } // ------------------------------------------------------------------------------------------------- diff --git a/src/device-vibration.h b/src/device-vibration.h index 097a5c20..acbb15d8 100644 --- a/src/device-vibration.h +++ b/src/device-vibration.h @@ -7,6 +7,7 @@ #include class QSpinBox; +class QLabel; class SubDeviceConnection; class SubHidppConnection; @@ -96,6 +97,7 @@ class VibrationSettingsWidget : public QWidget private: QPointer m_subDeviceConnection; + QLabel* m_lengthLabel = nullptr; QSpinBox* m_sbLength = nullptr; QSpinBox* m_sbIntensity = nullptr; }; diff --git a/src/deviceswidget.cc b/src/deviceswidget.cc index 3715c25a..720aff98 100644 --- a/src/deviceswidget.cc +++ b/src/deviceswidget.cc @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -50,6 +51,7 @@ namespace { // ------------------------------------------------------------------------------------------------- DevicesWidget::DevicesWidget(Settings* settings, Spotlight* spotlight, QWidget* parent) : QWidget(parent) + , m_spotlight(spotlight) { createDeviceComboBox(spotlight); @@ -68,6 +70,17 @@ DevicesWidget::DevicesWidget(Settings* settings, Spotlight* spotlight, QWidget* }); } +// ------------------------------------------------------------------------------------------------- +void DevicesWidget::showEvent(QShowEvent* event) +{ + QWidget::showEvent(event); + + // HID++ feature discovery is asynchronous. Re-evaluate optional device tabs + // when this page becomes visible so a capability discovered during startup + // cannot be missed because of signal ordering. + if (m_spotlight) { updateTimerTab(m_spotlight); } +} + // ------------------------------------------------------------------------------------------------- DeviceId DevicesWidget::currentDeviceId() const { @@ -343,6 +356,16 @@ void DevicesWidget::updateTimerTab(Spotlight* spotlight) if (conn) { for (const auto& item : conn->subDevices()) { if (item.second->hasFlags(DeviceFlag::Vibrate)) { return item.second; } + + // Derive support from the initialized feature table as well. This makes + // the preferences UI resilient if its flag-change notification happened + // before the page was constructed or shown. + const auto hidpp = qobject_cast(item.second.get()); + if (hidpp + && (hidpp->featureSet().featureCodeSupported(HIDPP::FeatureCode::PresenterControl) + || hidpp->featureSet().featureCodeSupported(HIDPP::FeatureCode::Haptic))) { + return item.second; + } } } return std::shared_ptr{}; @@ -357,6 +380,8 @@ void DevicesWidget::updateTimerTab(Spotlight* spotlight) { if (m_tabWidget->indexOf(m_timerTabWidget) < 0) { m_tabWidget->insertTab(1, m_timerTabWidget, tr("Vibration Timer")); + logDebug(preferences) << tr("Added Vibration Timer tab for '%1'.") + .arg(vibrateConn->path()); } m_timerTabWidget->setSubDeviceConnection(vibrateConn.get()); } diff --git a/src/deviceswidget.h b/src/deviceswidget.h index cde9dc1d..99390b8e 100644 --- a/src/deviceswidget.h +++ b/src/deviceswidget.h @@ -15,6 +15,7 @@ class DeviceConnection; class InputMapper; class MultiTimerWidget; class QComboBox; +class QShowEvent; class QTabWidget; class QTextEdit; class Settings; @@ -36,6 +37,9 @@ class DevicesWidget : public QWidget signals: void currentDeviceChanged(const DeviceId&); +protected: + void showEvent(QShowEvent* event) override; + private: QWidget* createDisconnectedStateWidget(); void createDeviceComboBox(Spotlight* spotlight); @@ -52,6 +56,7 @@ class DevicesWidget : public QWidget QWidget* m_deviceDetailsTabWidget = nullptr; QPointer m_inputMapper; + QPointer m_spotlight; }; // ------------------------------------------------------------------------------------------------- @@ -127,4 +132,4 @@ class DeviceInfoWidget : public QWidget QPointer m_connectionContext; QPointer m_connection; -}; \ No newline at end of file +}; diff --git a/src/hidpp.cc b/src/hidpp.cc index 61cc36d8..ad3401e3 100644 --- a/src/hidpp.cc +++ b/src/hidpp.cc @@ -730,6 +730,7 @@ const char* toString(HIDPP::FeatureCode fc) ENUM_CASE_STRINGIFY(FeatureCode::DFUControlSigned); ENUM_CASE_STRINGIFY(FeatureCode::BatteryStatus); ENUM_CASE_STRINGIFY(FeatureCode::UnifiedBattery); + ENUM_CASE_STRINGIFY(FeatureCode::Haptic); ENUM_CASE_STRINGIFY(FeatureCode::PresenterControl); ENUM_CASE_STRINGIFY(FeatureCode::Sensor3D); ENUM_CASE_STRINGIFY(FeatureCode::ReprogramControlsV4); diff --git a/src/hidpp.h b/src/hidpp.h index 3733e9ae..f1f0e9c9 100644 --- a/src/hidpp.h +++ b/src/hidpp.h @@ -45,6 +45,7 @@ namespace HIDPP { DFUControlSigned = 0x00c2, BatteryStatus = 0x1000, UnifiedBattery = 0x1004, + Haptic = 0x19b0, PresenterControl = 0x1a00, Sensor3D = 0x1a01, ReprogramControlsV4 = 0x1b04, From c3029607575f2b2be8927e55cfe8dd09d49441a6 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 14:52:09 -0500 Subject: [PATCH 29/67] Adds a global timer and haptic feedback --- CMakeLists.txt | 2 +- plasma/projecteurapplet.cc | 68 +++++ plasma/projecteurapplet.h | 23 ++ plasma/qml/FullRepresentation.qml | 307 ++++++++++++++------ plasma/qml/main.qml | 42 ++- src/device-vibration.cc | 456 ------------------------------ src/device-vibration.h | 103 ------- src/deviceswidget.cc | 161 ----------- src/deviceswidget.h | 31 -- src/preferencesdlg.cc | 32 +++ src/preferencesdlg.h | 1 + src/presentationtimer.cc | 129 +++++++++ src/presentationtimer.h | 62 ++++ src/projecteurapp.cc | 6 +- src/projecteurapp.h | 2 + src/projecteurcontrol.cc | 70 ++++- src/projecteurcontrol.h | 21 +- src/settings.cc | 45 ++- src/settings.h | 13 +- src/spotlight.cc | 7 + src/spotlight.h | 1 + 21 files changed, 715 insertions(+), 867 deletions(-) delete mode 100644 src/device-vibration.cc delete mode 100644 src/device-vibration.h create mode 100644 src/presentationtimer.cc create mode 100644 src/presentationtimer.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 93852566..9bec7f5e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,7 +43,6 @@ add_executable(projecteur src/device-command-helper.cc src/device-command-helper.h src/device-hidpp.cc src/device-hidpp.h src/device-key-lookup.cc src/device-key-lookup.h - src/device-vibration.cc src/device-vibration.h src/deviceinput.cc src/deviceinput.h src/devicescan.cc src/devicescan.h src/deviceswidget.cc src/deviceswidget.h @@ -56,6 +55,7 @@ add_executable(projecteur src/logging.cc src/logging.h src/nativekeyseqedit.cc src/nativekeyseqedit.h src/preferencesdlg.cc src/preferencesdlg.h + src/presentationtimer.cc src/presentationtimer.h src/projecteurapp.cc src/projecteurapp.h src/projecteurcontrol.cc src/projecteurcontrol.h src/runguard.cc src/runguard.h diff --git a/plasma/projecteurapplet.cc b/plasma/projecteurapplet.cc index 7edbad76..ba019ef4 100644 --- a/plasma/projecteurapplet.cc +++ b/plasma/projecteurapplet.cc @@ -56,6 +56,15 @@ ProjecteurApplet::ProjecteurApplet(QObject* parent, const KPluginMetaData& data, bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), QString::fromLatin1(interfaceName), QStringLiteral("currentPresetChanged"), this, SLOT(remoteCurrentPresetChanged(QString))); + bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), + QString::fromLatin1(interfaceName), QStringLiteral("timerStateChanged"), + this, SLOT(remoteTimerStateChanged(QString))); + bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), + QString::fromLatin1(interfaceName), QStringLiteral("timerDurationSecondsChanged"), + this, SLOT(remoteTimerDurationSecondsChanged(int))); + bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), + QString::fromLatin1(interfaceName), QStringLiteral("timerRemainingSecondsChanged"), + this, SLOT(remoteTimerRemainingSecondsChanged(int))); const auto registered = bus.interface()->isServiceRegistered(QString::fromLatin1(serviceName)); if (registered.isValid() && registered.value()) { @@ -78,6 +87,26 @@ void ProjecteurApplet::loadPreset(const QString& preset) call(QStringLiteral("LoadPreset"), {preset}); } +void ProjecteurApplet::startTimer() +{ + call(QStringLiteral("StartTimer")); +} + +void ProjecteurApplet::restartTimer() +{ + call(QStringLiteral("RestartTimer")); +} + +void ProjecteurApplet::resetTimer() +{ + call(QStringLiteral("ResetTimer")); +} + +void ProjecteurApplet::setTimerDurationSeconds(int seconds) +{ + call(QStringLiteral("SetTimerDurationSeconds"), {seconds}); +} + void ProjecteurApplet::showPreferences() { call(QStringLiteral("ShowPreferences")); @@ -162,6 +191,27 @@ void ProjecteurApplet::remoteCurrentPresetChanged(const QString& preset) emit currentPresetChanged(); } +void ProjecteurApplet::remoteTimerStateChanged(const QString& state) +{ + if (m_timerState == state) { return; } + m_timerState = state; + emit timerStateChanged(); +} + +void ProjecteurApplet::remoteTimerDurationSecondsChanged(int seconds) +{ + if (m_timerDurationSeconds == seconds) { return; } + m_timerDurationSeconds = seconds; + emit timerDurationSecondsChanged(); +} + +void ProjecteurApplet::remoteTimerRemainingSecondsChanged(int seconds) +{ + if (m_timerRemainingSeconds == seconds) { return; } + m_timerRemainingSeconds = seconds; + emit timerRemainingSecondsChanged(); +} + void ProjecteurApplet::refresh() { QDBusInterface interface(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), @@ -182,6 +232,17 @@ void ProjecteurApplet::refresh() interface.property("ConnectedDeviceBatteryStatuses").toStringList()); remotePresetsChanged(interface.property("Presets").toStringList()); remoteCurrentPresetChanged(interface.property("CurrentPreset").toString()); + const auto timerStateProperty = interface.property("TimerState"); + const bool timerAvailable = timerStateProperty.isValid(); + if (m_timerAvailable != timerAvailable) { + m_timerAvailable = timerAvailable; + emit timerAvailableChanged(); + } + if (timerAvailable) { + remoteTimerStateChanged(timerStateProperty.toString()); + remoteTimerDurationSecondsChanged(interface.property("TimerDurationSeconds").toInt()); + remoteTimerRemainingSecondsChanged(interface.property("TimerRemainingSeconds").toInt()); + } } void ProjecteurApplet::resetState() @@ -197,6 +258,13 @@ void ProjecteurApplet::resetState() remoteConnectedDeviceBatteryStatusesChanged({}); remotePresetsChanged({}); remoteCurrentPresetChanged({}); + if (m_timerAvailable) { + m_timerAvailable = false; + emit timerAvailableChanged(); + } + remoteTimerStateChanged(QStringLiteral("idle")); + remoteTimerDurationSecondsChanged(15 * 60); + remoteTimerRemainingSecondsChanged(15 * 60); } void ProjecteurApplet::call(const QString& method, const QVariantList& arguments) diff --git a/plasma/projecteurapplet.h b/plasma/projecteurapplet.h index 24d6a37a..d1947df8 100644 --- a/plasma/projecteurapplet.h +++ b/plasma/projecteurapplet.h @@ -13,6 +13,7 @@ class ProjecteurApplet : public Plasma::Applet { Q_OBJECT Q_PROPERTY(bool serviceAvailable READ serviceAvailable NOTIFY serviceAvailableChanged) + Q_PROPERTY(bool timerAvailable READ timerAvailable NOTIFY timerAvailableChanged) Q_PROPERTY(bool trayVisible READ trayVisible NOTIFY trayVisibleChanged) Q_PROPERTY(bool overlayEnabled READ overlayEnabled NOTIFY overlayEnabledChanged) Q_PROPERTY(bool spotlightActive READ spotlightActive NOTIFY spotlightActiveChanged) @@ -23,11 +24,15 @@ class ProjecteurApplet : public Plasma::Applet NOTIFY connectedDeviceBatteryStatusesChanged) Q_PROPERTY(QStringList presets READ presets NOTIFY presetsChanged) Q_PROPERTY(QString currentPreset READ currentPreset NOTIFY currentPresetChanged) + Q_PROPERTY(QString timerState READ timerState NOTIFY timerStateChanged) + Q_PROPERTY(int timerDurationSeconds READ timerDurationSeconds NOTIFY timerDurationSecondsChanged) + Q_PROPERTY(int timerRemainingSeconds READ timerRemainingSeconds NOTIFY timerRemainingSecondsChanged) public: ProjecteurApplet(QObject* parent, const KPluginMetaData& data, const QVariantList& args); bool serviceAvailable() const { return m_serviceAvailable; } + bool timerAvailable() const { return m_timerAvailable; } bool trayVisible() const { return m_trayVisible; } bool overlayEnabled() const { return m_overlayEnabled; } bool spotlightActive() const { return m_spotlightActive; } @@ -36,16 +41,24 @@ class ProjecteurApplet : public Plasma::Applet QStringList connectedDeviceBatteryStatuses() const { return m_connectedDeviceBatteryStatuses; } QStringList presets() const { return m_presets; } QString currentPreset() const { return m_currentPreset; } + QString timerState() const { return m_timerState; } + int timerDurationSeconds() const { return m_timerDurationSeconds; } + int timerRemainingSeconds() const { return m_timerRemainingSeconds; } Q_INVOKABLE void setOverlayEnabled(bool enabled); Q_INVOKABLE void setSpotlightActive(bool active); Q_INVOKABLE void loadPreset(const QString& preset); + Q_INVOKABLE void startTimer(); + Q_INVOKABLE void restartTimer(); + Q_INVOKABLE void resetTimer(); + Q_INVOKABLE void setTimerDurationSeconds(int seconds); Q_INVOKABLE void showPreferences(); Q_INVOKABLE void showAbout(); Q_INVOKABLE void quitProjecteur(); signals: void serviceAvailableChanged(); + void timerAvailableChanged(); void trayVisibleChanged(); void overlayEnabledChanged(); void spotlightActiveChanged(); @@ -54,6 +67,9 @@ class ProjecteurApplet : public Plasma::Applet void connectedDeviceBatteryStatusesChanged(); void presetsChanged(); void currentPresetChanged(); + void timerStateChanged(); + void timerDurationSecondsChanged(); + void timerRemainingSecondsChanged(); private slots: void serviceRegistered(const QString& service); @@ -65,6 +81,9 @@ private slots: void remoteConnectedDeviceBatteryStatusesChanged(const QStringList& statuses); void remotePresetsChanged(const QStringList& presets); void remoteCurrentPresetChanged(const QString& preset); + void remoteTimerStateChanged(const QString& state); + void remoteTimerDurationSecondsChanged(int seconds); + void remoteTimerRemainingSecondsChanged(int seconds); private: void refresh(); @@ -73,6 +92,7 @@ private slots: QDBusServiceWatcher* m_serviceWatcher = nullptr; bool m_serviceAvailable = false; + bool m_timerAvailable = false; bool m_trayVisible = true; bool m_overlayEnabled = true; bool m_spotlightActive = false; @@ -81,4 +101,7 @@ private slots: QStringList m_connectedDeviceBatteryStatuses; QStringList m_presets; QString m_currentPreset; + QString m_timerState = QStringLiteral("idle"); + int m_timerDurationSeconds = 15 * 60; + int m_timerRemainingSeconds = 15 * 60; }; diff --git a/plasma/qml/FullRepresentation.qml b/plasma/qml/FullRepresentation.qml index aab0c4b9..c163625c 100644 --- a/plasma/qml/FullRepresentation.qml +++ b/plasma/qml/FullRepresentation.qml @@ -79,6 +79,16 @@ PlasmaExtras.Representation { : i18n("Battery: %1%", level); } + function formatTimer(seconds) { + const safeSeconds = Math.max(0, seconds); + const hours = Math.floor(safeSeconds / 3600); + const minutes = Math.floor((safeSeconds % 3600) / 60); + const remainingSeconds = safeSeconds % 60; + const mm = minutes.toString().padStart(2, "0"); + const ss = remainingSeconds.toString().padStart(2, "0"); + return hours > 0 ? hours.toString() + ":" + mm + ":" + ss : mm + ":" + ss; + } + implicitWidth: Kirigami.Units.gridUnit * 22 implicitHeight: content.implicitHeight + header.implicitHeight focus: true @@ -96,129 +106,266 @@ PlasmaExtras.Representation { margins: Kirigami.Units.largeSpacing } - PlasmaExtras.Heading { - Layout.fillWidth: true - level: 4 - text: i18n("Connected presenters") - } - - PlasmaComponents3.Label { + ColumnLayout { Layout.fillWidth: true - visible: !root.backend || root.backend.connectedDevices.length === 0 - text: i18n("No compatible presenter connected") - opacity: 0.7 - wrapMode: Text.WordWrap - } - - Repeater { - model: root.backend ? root.backend.connectedDevices : [] - - delegate: RowLayout { - required property int index - required property string modelData + spacing: Kirigami.Units.smallSpacing + RowLayout { Layout.fillWidth: true spacing: Kirigami.Units.smallSpacing - Kirigami.Icon { - source: "input-mouse-symbolic" - implicitWidth: Kirigami.Units.iconSizes.smallMedium - implicitHeight: implicitWidth + PlasmaComponents3.Label { + text: i18n("Connected presenters") + font.bold: true } - PlasmaComponents3.Label { + Kirigami.Separator { Layout.fillWidth: true - text: modelData - elide: Text.ElideRight } + } - Kirigami.Icon { - id: batteryIcon - - readonly property string iconName: root.batteryIconName(index) - readonly property string toolTipText: root.batteryToolTip(index) + PlasmaComponents3.Label { + Layout.fillWidth: true + visible: !root.backend || root.backend.connectedDevices.length === 0 + text: i18n("No compatible presenter connected") + opacity: 0.7 + wrapMode: Text.WordWrap + } - visible: iconName.length > 0 - source: iconName - implicitWidth: Kirigami.Units.iconSizes.smallMedium - implicitHeight: implicitWidth - Accessible.name: toolTipText + Repeater { + model: root.backend ? root.backend.connectedDevices : [] - MouseArea { - id: batteryHover + delegate: RowLayout { + required property int index + required property string modelData - anchors.fill: parent - acceptedButtons: Qt.NoButton - hoverEnabled: true + Layout.fillWidth: true + Layout.leftMargin: Kirigami.Units.smallSpacing + Layout.rightMargin: Kirigami.Units.smallSpacing + spacing: Kirigami.Units.smallSpacing + + Kirigami.Icon { + source: "input-mouse-symbolic" + implicitWidth: Kirigami.Units.iconSizes.medium + implicitHeight: implicitWidth } - PlasmaComponents3.ToolTip { - text: batteryIcon.toolTipText - visible: batteryHover.containsMouse && text.length > 0 + PlasmaComponents3.Label { + Layout.fillWidth: true + text: modelData + elide: Text.ElideRight } - } - } + Kirigami.Icon { + id: batteryIcon - } + readonly property string iconName: root.batteryIconName(index) + readonly property string toolTipText: root.batteryToolTip(index) - Kirigami.Separator { - Layout.fillWidth: true + visible: iconName.length > 0 + source: iconName + implicitWidth: Kirigami.Units.iconSizes.smallMedium + implicitHeight: implicitWidth + Accessible.name: toolTipText + + MouseArea { + id: batteryHover + + anchors.fill: parent + acceptedButtons: Qt.NoButton + hoverEnabled: true + } + + PlasmaComponents3.ToolTip { + text: batteryIcon.toolTipText + visible: batteryHover.containsMouse && text.length > 0 + } + } + } + } } - RowLayout { + ColumnLayout { Layout.fillWidth: true spacing: Kirigami.Units.smallSpacing - PlasmaComponents3.Label { - text: i18n("Preset:") - } + RowLayout { + Layout.fillWidth: true + spacing: Kirigami.Units.smallSpacing + + PlasmaComponents3.Label { + text: i18n("Presentation timer") + font.bold: true + } - PlasmaComponents3.ComboBox { - id: presetCombo + Kirigami.Separator { + Layout.fillWidth: true + } + } + ColumnLayout { Layout.fillWidth: true - enabled: root.backend && root.backend.serviceAvailable - model: [i18n("Current Settings")].concat(root.backend ? root.backend.presets : []) - currentIndex: { - if (!root.backend || root.backend.currentPreset.length === 0) - return 0; + spacing: Kirigami.Units.smallSpacing - const index = root.backend.presets.indexOf(root.backend.currentPreset); - return index < 0 ? 0 : index + 1; + PlasmaComponents3.Label { + Layout.fillWidth: true + visible: root.backend && root.backend.serviceAvailable && !root.backend.timerAvailable + text: i18n("Restart Projecteur to load the timer controls.") + wrapMode: Text.WordWrap } - onActivated: (index) => { - if (index > 0) - root.backend.loadPreset(root.backend.presets[index - 1]); + PlasmaComponents3.Label { + Layout.fillWidth: true + visible: root.backend && root.backend.timerAvailable + && root.backend.timerState === "idle" + text: i18n("Ready — starts on the next presenter button press") + opacity: 0.8 + wrapMode: Text.WordWrap } - } + PlasmaComponents3.Label { + Layout.fillWidth: true + visible: root.backend && root.backend.timerAvailable + && root.backend.timerState !== "idle" + horizontalAlignment: Text.AlignHCenter + text: root.backend && root.backend.timerState === "completed" + ? i18n("Time’s up") + : root.formatTimer(root.backend ? root.backend.timerRemainingSeconds : 0) + font.pointSize: Kirigami.Theme.defaultFont.pointSize * 1.8 + font.bold: true + } + + RowLayout { + Layout.fillWidth: true + visible: root.backend && root.backend.timerAvailable + && root.backend.timerState === "idle" + spacing: Kirigami.Units.smallSpacing + + PlasmaComponents3.Label { + text: i18n("Duration:") + } + + PlasmaComponents3.SpinBox { + Layout.fillWidth: true + from: 1 + to: 180 + editable: true + value: root.backend ? Math.round(root.backend.timerDurationSeconds / 60) : 15 + enabled: root.backend && root.backend.serviceAvailable + onValueModified: root.backend.setTimerDurationSeconds(value * 60) + } + + PlasmaComponents3.Label { + text: i18n("min") + } + + PlasmaComponents3.Button { + enabled: root.backend && root.backend.serviceAvailable + text: i18n("Start now") + icon.name: "media-playback-start-symbolic" + onClicked: root.backend.startTimer() + } + } + + RowLayout { + Layout.fillWidth: true + visible: root.backend && root.backend.timerAvailable + && root.backend.timerState !== "idle" + spacing: Kirigami.Units.smallSpacing + + PlasmaComponents3.Button { + Layout.fillWidth: true + enabled: root.backend && root.backend.serviceAvailable + text: i18n("Restart") + icon.name: "view-refresh-symbolic" + onClicked: root.backend.restartTimer() + } + + PlasmaComponents3.Button { + Layout.fillWidth: true + enabled: root.backend && root.backend.serviceAvailable + text: i18n("Reset") + icon.name: "edit-clear-symbolic" + onClicked: root.backend.resetTimer() + } + } + } } - RowLayout { + ColumnLayout { Layout.fillWidth: true spacing: Kirigami.Units.smallSpacing - PlasmaComponents3.Button { + RowLayout { Layout.fillWidth: true - enabled: root.backend && root.backend.serviceAvailable - text: root.backend && root.backend.spotlightActive ? i18n("Hide Spotlight") : i18n("Test Spotlight") - icon.name: root.backend && root.backend.spotlightActive ? "visibility-hidden-symbolic" : "visibility-symbolic" - onClicked: root.backend.setSpotlightActive(!root.backend.spotlightActive) + spacing: Kirigami.Units.smallSpacing + + PlasmaComponents3.Label { + text: i18n("Spotlight") + font.bold: true + } + + Kirigami.Separator { + Layout.fillWidth: true + } } - PlasmaComponents3.Button { + ColumnLayout { Layout.fillWidth: true - enabled: root.backend && root.backend.serviceAvailable - text: i18n("Preferences…") - icon.name: "configure-symbolic" - onClicked: { - root.plasmoidItem.expanded = false; - root.backend.showPreferences(); + spacing: Kirigami.Units.smallSpacing + + RowLayout { + Layout.fillWidth: true + spacing: Kirigami.Units.smallSpacing + + PlasmaComponents3.Label { + text: i18n("Preset:") + } + + PlasmaComponents3.ComboBox { + id: presetCombo + + Layout.fillWidth: true + enabled: root.backend && root.backend.serviceAvailable + model: [i18n("Current Settings")].concat(root.backend ? root.backend.presets : []) + currentIndex: { + if (!root.backend || root.backend.currentPreset.length === 0) + return 0; + + const index = root.backend.presets.indexOf(root.backend.currentPreset); + return index < 0 ? 0 : index + 1; + } + onActivated: (index) => { + if (index > 0) + root.backend.loadPreset(root.backend.presets[index - 1]); + } + } } - } + RowLayout { + Layout.fillWidth: true + spacing: Kirigami.Units.smallSpacing + + PlasmaComponents3.Button { + Layout.fillWidth: true + enabled: root.backend && root.backend.serviceAvailable + text: root.backend && root.backend.spotlightActive ? i18n("Hide Spotlight") : i18n("Test Spotlight") + icon.name: root.backend && root.backend.spotlightActive ? "visibility-hidden-symbolic" : "visibility-symbolic" + onClicked: root.backend.setSpotlightActive(!root.backend.spotlightActive) + } + + PlasmaComponents3.Button { + Layout.fillWidth: true + enabled: root.backend && root.backend.serviceAvailable + text: i18n("Preferences…") + icon.name: "configure-symbolic" + onClicked: { + root.plasmoidItem.expanded = false; + root.backend.showPreferences(); + } + } + } + } } } diff --git a/plasma/qml/main.qml b/plasma/qml/main.qml index cddad60a..08f47aa0 100644 --- a/plasma/qml/main.qml +++ b/plasma/qml/main.qml @@ -10,17 +10,57 @@ PlasmoidItem { readonly property var backend: Plasmoid + function formatTimer(seconds) { + const safeSeconds = Math.max(0, seconds); + const hours = Math.floor(safeSeconds / 3600); + const minutes = Math.floor((safeSeconds % 3600) / 60); + const remainingSeconds = safeSeconds % 60; + const mm = minutes.toString().padStart(2, "0"); + const ss = remainingSeconds.toString().padStart(2, "0"); + return hours > 0 ? hours.toString() + ":" + mm + ":" + ss : mm + ":" + ss; + } + switchWidth: 320 switchHeight: 320 activationTogglesExpanded: true hideOnWindowDeactivate: true Plasmoid.icon: "projecteur" - Plasmoid.status: backend && backend.serviceAvailable && backend.trayVisible ? PlasmaCore.Types.ActiveStatus : PlasmaCore.Types.HiddenStatus + badgeText: { + if (!backend || !backend.serviceAvailable || !backend.timerAvailable) + return ""; + + if (backend.timerState === "completed") + return "!"; + + if (backend.timerState === "running") { + const seconds = Math.max(0, backend.timerRemainingSeconds); + return seconds >= 60 ? Math.ceil(seconds / 60).toString() : seconds.toString(); + } + + return "…"; + } + Plasmoid.status: { + if (!backend || !backend.serviceAvailable || !backend.trayVisible) + return PlasmaCore.Types.HiddenStatus; + if (backend.timerAvailable && backend.timerState === "completed") + return PlasmaCore.Types.NeedsAttentionStatus; + return PlasmaCore.Types.ActiveStatus; + } toolTipMainText: i18n("Projecteur") toolTipSubText: { if (!backend || !backend.serviceAvailable) return i18n("Projecteur is not running"); + if (backend.timerAvailable && backend.timerState === "running") + return i18n("Presentation timer: %1 remaining", root.formatTimer(backend.timerRemainingSeconds)); + + if (backend.timerAvailable && backend.timerState === "completed") + return i18n("Presentation timer finished"); + + if (backend.timerAvailable && backend.timerState === "idle") + return i18n("Timer ready: %1 — starts on the next presenter button press", + root.formatTimer(backend.timerDurationSeconds)); + if (backend.connectedDevices.length === 0) return i18n("No presenter connected"); diff --git a/src/device-vibration.cc b/src/device-vibration.cc deleted file mode 100644 index 66312460..00000000 --- a/src/device-vibration.cc +++ /dev/null @@ -1,456 +0,0 @@ -// This file is part of Projecteur - https://github.com/jahnf/projecteur -// - See LICENSE.md and README.md - -#include "device-vibration.h" - -#include "device-hidpp.h" -#include "hidpp.h" -#include "iconwidgets.h" -#include "logging.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -DECLARE_LOGGING_CATEGORY(hid) - -// ------------------------------------------------------------------------------------------------- -namespace { - constexpr uint32_t numTimers = 3; -} // end anonymous namespace - -// ------------------------------------------------------------------------------------------------- -struct TimerWidget::Impl -{ - // ----------------------------------------------------------------------------------------------- - explicit Impl(TimerWidget* parent) - : stack(new QStackedWidget(parent)) - , editor(new QWidget(parent)) - , overlay(new QWidget(parent)) - , checkbox(new QCheckBox(parent)) - , sbHours(new QSpinBox(parent)) - , sbMinutes(new QSpinBox(parent)) - , sbSeconds(new QSpinBox(parent)) - , btnStartStop(new IconButton(Font::Icon::media_control_48, parent)) - , timer(new QTimer(parent)) - , countdownTimer(new QTimer(parent)) - , overlayLabel(new QLabel(parent)) - { - const auto layout = new QHBoxLayout(parent); - layout->addWidget(checkbox); - layout->addWidget(stack); - layout->setContentsMargins(0, 0, 0, 0); - - stack->addWidget(editor); - stack->addWidget(overlay); - const auto editLayout = new QHBoxLayout(editor); - const auto m = editLayout->contentsMargins(); - editLayout->setContentsMargins(m.left(), 0, m.right(), 0); - editLayout->addWidget(sbHours); - editLayout->addWidget(new QLabel(TimerWidget::tr("h"), editor)); - editLayout->addWidget(sbMinutes); - editLayout->addWidget(new QLabel(TimerWidget::tr("m"), editor)); - editLayout->addWidget(sbSeconds); - editLayout->addWidget(new QLabel(TimerWidget::tr("s"), editor)); - editLayout->addStretch(1); - - constexpr auto day = std::chrono::hours(24); - constexpr auto hoursMax = (day - std::chrono::hours(1)).count(); - constexpr auto minutesMax = std::chrono::minutes(60).count() - 1; - constexpr auto secondsMax = std::chrono::seconds(60).count() - 1; - - sbHours->setRange(0, hoursMax); - sbMinutes->setRange(0, minutesMax); - sbSeconds->setRange(0, secondsMax); - - layout->addWidget(btnStartStop); - btnStartStop->setCheckable(true); - QObject::connect(btnStartStop, &IconButton::toggled, parent, [this](bool checked) { - stack->setCurrentWidget(checked ? overlay : editor); - btnStartStop->setText(checked - ? QChar(static_cast(Font::Icon::media_control_50)) - : QChar(static_cast(Font::Icon::media_control_48))); - if (checked) { - secondsLeft = valueSeconds(); - updateOverlayLabel(secondsLeft); - countdownTimer->start(); - timer->start(); - } else { - timer->stop(); - countdownTimer->stop(); - } - }); - - const auto overlayLayout = new QHBoxLayout(overlay); - overlayLayout->addWidget(overlayLabel); - overlayLayout->setContentsMargins(m.left(), 0, m.right(), 0); - overlayLabel->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont)); - - editor->setEnabled(checkbox->isChecked()); - btnStartStop->setEnabled(checkbox->isChecked()); - QObject::connect(checkbox, &QCheckBox::toggled, parent, [this, parent](bool checked) { - editor->setEnabled(checked); - if (!checked) { btnStartStop->setChecked(false); } - btnStartStop->setEnabled(checked); - emit parent->enabledChanged(checked); - }); - - QObject::connect(timer, &QTimer::timeout, parent, [this](){ btnStartStop->setChecked(false); }); - QObject::connect(sbHours, static_cast(&QSpinBox::valueChanged), parent, - [this, parent]() { - updateTimerInterval(); - emit parent->valueSecondsChanged(valueSeconds()); - }); - QObject::connect(sbMinutes, static_cast(&QSpinBox::valueChanged), parent, - [this, parent]() { - updateTimerInterval(); - emit parent->valueSecondsChanged(valueSeconds()); - }); - QObject::connect(sbSeconds, static_cast(&QSpinBox::valueChanged), parent, - [this, parent]() { - updateTimerInterval(); - emit parent->valueSecondsChanged(valueSeconds()); - }); - - timer->setSingleShot(true); - countdownTimer->setInterval(1000); - - QObject::connect(countdownTimer, &QTimer::timeout, parent, [this](){ - updateOverlayLabel(--secondsLeft); - }); - } - - int valueSeconds() const { - return sbSeconds->value() + sbMinutes->value() * 60 + sbHours->value() * 60 * 60; - } - - // ----------------------------------------------------------------------------------------------- - void updateTimerInterval() { - timer->setInterval(valueSeconds() * 1000); - } - - // ----------------------------------------------------------------------------------------------- - void updateOverlayLabel(int remainingSeconds) - { - const std::chrono::seconds remainingTime(remainingSeconds); - const auto hours = std::chrono::duration_cast(remainingTime); - const auto mins = std::chrono::duration_cast(remainingTime-hours); - const auto secs = std::chrono::duration_cast(remainingTime-hours-mins); - - overlayLabel->setText(QString("%1:%2:%3") - .arg(hours.count(), 2, 10, QChar('0')) - .arg(mins.count(), 2, 10, QChar('0')) - .arg(secs.count(), 2, 10, QChar('0'))); - } - - // ----------------------------------------------------------------------------------------------- - QStackedWidget* stack = nullptr; - QWidget* editor = nullptr; - QWidget* overlay = nullptr; - QCheckBox* checkbox = nullptr; - QSpinBox* sbHours = nullptr; - QSpinBox* sbMinutes = nullptr; - QSpinBox* sbSeconds = nullptr; - IconButton* btnStartStop = nullptr; - QTimer* timer = nullptr; - QTimer* countdownTimer = nullptr; - QLabel* overlayLabel = nullptr; - int secondsLeft = 0; -}; - -// ------------------------------------------------------------------------------------------------- -TimerWidget::TimerWidget(QWidget* parent) - : QWidget(parent) - , m_impl(new Impl(this)) -{ - connect(m_impl->timer, &QTimer::timeout, this, &TimerWidget::timeout); -} - -// ------------------------------------------------------------------------------------------------- -TimerWidget::~TimerWidget() = default; - -// ------------------------------------------------------------------------------------------------- -bool TimerWidget::timerEnabled() const { - return m_impl->checkbox->isChecked(); -} - -// ------------------------------------------------------------------------------------------------- -void TimerWidget::setTimerEnabled(bool enabled) { - m_impl->checkbox->setChecked(enabled); -} - -// ------------------------------------------------------------------------------------------------- -bool TimerWidget::timerRunning() const { - return m_impl->timer->isActive(); -} - -// ------------------------------------------------------------------------------------------------- -void TimerWidget::start() { - if (timerEnabled()) { - m_impl->btnStartStop->setChecked(true); - } -} - -// ------------------------------------------------------------------------------------------------- -void TimerWidget::stop() { - m_impl->btnStartStop->setChecked(false); -} - -// ------------------------------------------------------------------------------------------------- -void TimerWidget::setValueSeconds(int seconds) -{ - const std::chrono::seconds totalSecs(seconds); - const auto hours = std::chrono::duration_cast(totalSecs); - const auto mins = std::chrono::duration_cast(totalSecs-hours); - const auto secs = std::chrono::duration_cast(totalSecs-hours-mins); - m_impl->sbHours->setValue( static_cast(hours.count()) ); - m_impl->sbMinutes->setValue( static_cast(mins.count()) ); - m_impl->sbSeconds->setValue( static_cast(secs.count()) ); -} - -// ------------------------------------------------------------------------------------------------- -void TimerWidget::setValueMinutes(int minutes) { - setValueSeconds(minutes * 60); -} - -// ------------------------------------------------------------------------------------------------- -int TimerWidget::valueSeconds() const { - return m_impl->valueSeconds(); -} - -// ------------------------------------------------------------------------------------------------- -struct MultiTimerWidget::Impl -{ - explicit Impl(QWidget* parent) - { - for (size_t i = 0; i < numTimers; ++i) { - timers.at(i) = new TimerWidget(parent); - } - } - - std::array timers = {}; -}; - -// ------------------------------------------------------------------------------------------------- -MultiTimerWidget::MultiTimerWidget(QWidget* parent) - : QWidget(parent) - , m_impl(new Impl(this)) -{ - constexpr int defaultTimeoutIncrMin = 15; - - const auto layout = new QHBoxLayout(this); - const auto iconLabel = new IconLabel(Font::time_19, this); - layout->addWidget(iconLabel); - layout->setAlignment(iconLabel, Qt::AlignTop); - - const auto groupBox = new QGroupBox(tr("Timers"), this); - groupBox->setSizePolicy(groupBox->sizePolicy().horizontalPolicy(), - QSizePolicy::Maximum); - layout->addWidget(groupBox); - layout->setAlignment(groupBox, Qt::AlignTop); - const auto timerLayout = new QVBoxLayout(groupBox); - - for (uint32_t i = 0; i < numTimers; ++i) - { - timerLayout->addWidget(m_impl->timers.at(i)); - const auto timerDefaultValueMinutes = defaultTimeoutIncrMin + i * defaultTimeoutIncrMin; - - m_impl->timers.at(i)->setValueMinutes(static_cast(timerDefaultValueMinutes)); - - connect(m_impl->timers.at(i), &TimerWidget::valueSecondsChanged, this, [this, i](int secs) { - emit timerValueChanged(i, secs); - }); - - connect(m_impl->timers.at(i), &TimerWidget::enabledChanged, this, [this, i](bool enabled) { - emit timerEnabledChanged(i, enabled); - }); - - connect(m_impl->timers.at(i), &TimerWidget::timeout, this, [this, i](){ - emit timeout(i); - }); - } - - layout->setStretch(1, 1); -} - -// ------------------------------------------------------------------------------------------------- -MultiTimerWidget::~MultiTimerWidget() = default; - -// ------------------------------------------------------------------------------------------------- -int MultiTimerWidget::timerCount() { - return numTimers; -} - -// ------------------------------------------------------------------------------------------------- -void MultiTimerWidget::setTimerEnabled(uint32_t timerId, bool enabled) -{ - if (timerId >= numTimers) { return; } - m_impl->timers.at(timerId)->setTimerEnabled(enabled); -} - -// ------------------------------------------------------------------------------------------------- -bool MultiTimerWidget::timerEnabled(uint32_t timerId) const -{ - if (timerId >= numTimers) { return false; } - return m_impl->timers.at(timerId)->timerEnabled(); -} - -// ------------------------------------------------------------------------------------------------- -void MultiTimerWidget::startTimer(uint32_t timerId) -{ - if (timerId >= numTimers) { return; } - m_impl->timers.at(timerId)->start(); -} - -// ------------------------------------------------------------------------------------------------- -void MultiTimerWidget::stopTimer(uint32_t timerId) -{ - if (timerId >= numTimers) { return; } - m_impl->timers.at(timerId)->stop(); -} - -// ------------------------------------------------------------------------------------------------- -void MultiTimerWidget::stopAllTimers() -{ - for (size_t i = 0; i < numTimers; ++i) { - m_impl->timers.at(i)->stop(); - } -} - -// ------------------------------------------------------------------------------------------------- -bool MultiTimerWidget::timerRunning(uint32_t timerId) const -{ - if (timerId >= numTimers) { return false; } - return m_impl->timers.at(timerId)->timerRunning(); -} - -// ------------------------------------------------------------------------------------------------- -void MultiTimerWidget::setTimerValue(uint32_t timerId, int seconds) -{ - if (timerId >= numTimers) { return; } - m_impl->timers.at(timerId)->setValueSeconds(seconds); -} - -// ------------------------------------------------------------------------------------------------- -int MultiTimerWidget::timerValue(uint32_t timerId) const -{ - if (timerId >= numTimers) { return -1; } - return m_impl->timers.at(timerId)->valueSeconds(); -} - -// ------------------------------------------------------------------------------------------------- -VibrationSettingsWidget::VibrationSettingsWidget(QWidget* parent) - : QWidget(parent) - , m_sbLength(new QSpinBox(this)) - , m_sbIntensity(new QSpinBox(this)) -{ - constexpr int vibrationIntensityMin = 25; - constexpr int vibrationIntensityMax = 255; - - m_sbLength->setRange(0, 10); - m_sbIntensity->setRange(vibrationIntensityMin, vibrationIntensityMax); - - const auto layout = new QHBoxLayout(this); - const auto iconLabel = new IconLabel(Font::control_panel_9, this); - layout->addWidget(iconLabel); - layout->setAlignment(iconLabel, Qt::AlignTop); - - const auto groupBox = new QGroupBox(tr("Vibration Settings"), this); - groupBox->setSizePolicy(groupBox->sizePolicy().horizontalPolicy(), - QSizePolicy::Maximum); - layout->addWidget(groupBox); - layout->setAlignment(groupBox, Qt::AlignTop); - - const auto grid = new QGridLayout(groupBox); - m_lengthLabel = new QLabel(tr("Length"), this); - grid->addWidget(m_lengthLabel, 0, 0); - grid->addWidget(new QLabel(tr("Intensity"), this), 1, 0); - grid->addWidget(m_sbLength, 0, 1); - grid->addWidget(m_sbIntensity, 1, 1); - grid->setColumnStretch(0, 1); - grid->setColumnStretch(1, 2); - - const auto testBtn = new QPushButton(tr("Test"), this); - grid->addWidget(testBtn, 2, 0, 1, 2); - - m_sbLength->setValue(0x00); - m_sbIntensity->setValue(0x80); - - connect(m_sbLength, static_cast(&QSpinBox::valueChanged), this, - [this](int value){ - emit lengthChanged(value); - }); - - connect(m_sbIntensity, static_cast(&QSpinBox::valueChanged), this, - [this](int value){ - emit intensityChanged(value); - }); - - connect(testBtn, &QPushButton::clicked, this, &VibrationSettingsWidget::sendVibrateCommand); - - layout->setStretch(1, 1); -} - -// ------------------------------------------------------------------------------------------------- -uint8_t VibrationSettingsWidget::length() const { - return m_sbLength->value(); -} - -// ------------------------------------------------------------------------------------------------- -uint8_t VibrationSettingsWidget::intensity() const { - return m_sbIntensity->value(); -} - -// ------------------------------------------------------------------------------------------------- -void VibrationSettingsWidget::setLength(uint8_t len) -{ - if (m_sbLength->value() == len) { return; } - m_sbLength->setValue(len); -} - -// ------------------------------------------------------------------------------------------------- -void VibrationSettingsWidget::setIntensity(uint8_t intensity) -{ - if (m_sbIntensity->value() == intensity) { return; } - m_sbIntensity->setValue(intensity); -} - -// ------------------------------------------------------------------------------------------------- -void VibrationSettingsWidget::setSubDeviceConnection(SubDeviceConnection *sdc) -{ - m_subDeviceConnection = qobject_cast(sdc); - const bool usesHapticWaveform = m_subDeviceConnection - && m_subDeviceConnection->featureSet().featureCodeSupported(HIDPP::FeatureCode::Haptic); - - // HAPTIC devices provide predefined waveforms rather than a duration - // parameter. Projecteur currently uses the "Completed" waveform for timers. - m_lengthLabel->setVisible(!usesHapticWaveform); - m_sbLength->setVisible(!usesHapticWaveform); -} - -// ------------------------------------------------------------------------------------------------- -void VibrationSettingsWidget::sendVibrateCommand() -{ - if (!m_subDeviceConnection) { return; } - if (!m_subDeviceConnection->isConnected()) { return; } - if (!m_subDeviceConnection->hasFlags(DeviceFlag::Vibrate)) { return; } - - const uint8_t vlen = m_sbLength->value(); - const uint8_t vint = m_sbIntensity->value(); - m_subDeviceConnection->sendVibrateCommand(vint, vlen, - [](HidppConnectionInterface::MsgResult result, HIDPP::Message&& msg) { - logDebug(hid) << tr("Vibrate command returned: %1 (%2)") - .arg(toString(result)).arg(msg.hex()); - }); -} diff --git a/src/device-vibration.h b/src/device-vibration.h deleted file mode 100644 index acbb15d8..00000000 --- a/src/device-vibration.h +++ /dev/null @@ -1,103 +0,0 @@ -// This file is part of Projecteur - https://github.com/jahnf/projecteur -// - See LICENSE.md and README.md -#pragma once - -#include -#include -#include - -class QSpinBox; -class QLabel; -class SubDeviceConnection; -class SubHidppConnection; - -// ------------------------------------------------------------------------------------------------- -class TimerWidget : public QWidget -{ - Q_OBJECT - -public: - TimerWidget(QWidget* parent); - ~TimerWidget() override; - - bool timerEnabled() const; - void setTimerEnabled(bool enabled); - - void start(); - void stop(); - bool timerRunning() const; - void setValueSeconds(int seconds); - void setValueMinutes(int minutes); - int valueSeconds() const; - -signals: - void timeout(); - void valueSecondsChanged(int); - void enabledChanged(bool); - -private: - struct Impl; - std::unique_ptr m_impl; -}; - -// ------------------------------------------------------------------------------------------------- -class MultiTimerWidget : public QWidget -{ - Q_OBJECT - -public: - explicit MultiTimerWidget(QWidget* parent = nullptr); - virtual ~MultiTimerWidget() override; - - /// Returns the number of timers - static int timerCount(); - - void setTimerEnabled(uint32_t timerId, bool enabled); - bool timerEnabled(uint32_t timerId) const; - - void startTimer(uint32_t timerId); - void stopTimer(uint32_t timerId); - void stopAllTimers(); - bool timerRunning(uint32_t timerId) const; - - void setTimerValue(uint32_t timerId, int seconds); - int timerValue(uint32_t timerId) const; - -signals: - /// Emitted when a timer times out. - void timeout(uint32_t timerId); - void timerEnabledChanged(uint32_t timerId, bool enabled); - void timerValueChanged(uint32_t timerId, int seconds); - -private: - struct Impl; - std::unique_ptr m_impl; -}; - -// ------------------------------------------------------------------------------------------------- -class VibrationSettingsWidget : public QWidget -{ - Q_OBJECT - -public: - explicit VibrationSettingsWidget(QWidget* parent = nullptr); - - uint8_t length() const; - void setLength(uint8_t len); - - uint8_t intensity() const; - void setIntensity(uint8_t intensity); - - void setSubDeviceConnection(SubDeviceConnection* sdc); - void sendVibrateCommand(); - -signals: - void intensityChanged(uint8_t intensity); - void lengthChanged(uint8_t length); - -private: - QPointer m_subDeviceConnection; - QLabel* m_lengthLabel = nullptr; - QSpinBox* m_sbLength = nullptr; - QSpinBox* m_sbIntensity = nullptr; -}; diff --git a/src/deviceswidget.cc b/src/deviceswidget.cc index 720aff98..4c545d3a 100644 --- a/src/deviceswidget.cc +++ b/src/deviceswidget.cc @@ -4,7 +4,6 @@ #include "deviceswidget.h" #include "device-hidpp.h" -#include "device-vibration.h" #include "deviceinput.h" #include "iconwidgets.h" #include "inputmapconfig.h" @@ -16,7 +15,6 @@ #include #include #include -#include #include #include #include @@ -37,21 +35,11 @@ namespace { const auto invalidDeviceId = DeviceId(); // vendorId = 0, productId = 0 - bool removeTab(QTabWidget* tabWidget, QWidget* widget) - { - const auto idx = tabWidget->indexOf(widget); - if (idx >= 0) { - tabWidget->removeTab(idx); - return true; - } - return false; - } } // end anonymous namespace // ------------------------------------------------------------------------------------------------- DevicesWidget::DevicesWidget(Settings* settings, Spotlight* spotlight, QWidget* parent) : QWidget(parent) - , m_spotlight(spotlight) { createDeviceComboBox(spotlight); @@ -70,17 +58,6 @@ DevicesWidget::DevicesWidget(Settings* settings, Spotlight* spotlight, QWidget* }); } -// ------------------------------------------------------------------------------------------------- -void DevicesWidget::showEvent(QShowEvent* event) -{ - QWidget::showEvent(event); - - // HID++ feature discovery is asynchronous. Re-evaluate optional device tabs - // when this page becomes visible so a capability discovered during startup - // cannot be missed because of signal ordering. - if (m_spotlight) { updateTimerTab(m_spotlight); } -} - // ------------------------------------------------------------------------------------------------- DeviceId DevicesWidget::currentDeviceId() const { @@ -91,20 +68,6 @@ DeviceId DevicesWidget::currentDeviceId() const return qvariant_cast(m_devicesCombo->currentData()); } -// ------------------------------------------------------------------------------------------------- -TimerTabWidget* DevicesWidget::createTimerTabWidget(Settings* settings, Spotlight* spotlight) -{ - Q_UNUSED(spotlight); - const auto w = new TimerTabWidget(settings, this); - w->loadSettings(currentDeviceId()); - - connect(this, &DevicesWidget::currentDeviceChanged, this, [this](const DeviceId& dId) { - if (m_timerTabWidget) { m_timerTabWidget->loadSettings(dId); } - }); - - return w; -} - // ------------------------------------------------------------------------------------------------- QWidget* DevicesWidget::createDevicesWidget(Settings* settings, Spotlight* spotlight) { @@ -123,17 +86,10 @@ QWidget* DevicesWidget::createDevicesWidget(Settings* settings, Spotlight* spotl vLayout->addWidget(m_tabWidget); m_tabWidget->addTab(createInputMapperWidget(settings, spotlight), tr("Input Mapping")); - m_timerTabWidget = createTimerTabWidget(settings, spotlight); - - updateTimerTab(spotlight); m_deviceDetailsTabWidget = createDeviceInfoWidget(spotlight); m_tabWidget->addTab(m_deviceDetailsTabWidget, tr("Details")); - // Update the timer tab when the current device has changed - connect(this, &DevicesWidget::currentDeviceChanged, this, - [spotlight, this]() { updateTimerTab(spotlight); }); - return dw; } @@ -312,123 +268,6 @@ QWidget* DevicesWidget::createDisconnectedStateWidget() return stateWidget; } -// ------------------------------------------------------------------------------------------------- -TimerTabWidget::TimerTabWidget(Settings* settings, QWidget* parent) - : QWidget(parent) - , m_settings(settings) - , m_multiTimerWidget(new MultiTimerWidget(this)) - , m_vibrationSettingsWidget(new VibrationSettingsWidget(this)) -{ - const auto layout = new QVBoxLayout(this); - - layout->addWidget(m_multiTimerWidget); - layout->addWidget(m_vibrationSettingsWidget); - - connect(m_multiTimerWidget, &MultiTimerWidget::timerValueChanged, this, - [this](int id, int secs) { - m_settings->setTimerSettings(m_deviceId, id, m_multiTimerWidget->timerEnabled(id), secs); - }); - - connect(m_multiTimerWidget, &MultiTimerWidget::timerEnabledChanged, this, - [this](int id, bool enabled) { - m_settings->setTimerSettings(m_deviceId, id, enabled, m_multiTimerWidget->timerValue(id)); - }); - - connect(m_vibrationSettingsWidget, &VibrationSettingsWidget::intensityChanged, this, - [this](uint8_t intensity) { - m_settings->setVibrationSettings(m_deviceId, m_vibrationSettingsWidget->length(), intensity); - }); - - connect(m_vibrationSettingsWidget, &VibrationSettingsWidget::lengthChanged, this, - [this](uint8_t len) { - m_settings->setVibrationSettings(m_deviceId, len, m_vibrationSettingsWidget->intensity()); - }); - - connect(m_multiTimerWidget, &MultiTimerWidget::timeout, - m_vibrationSettingsWidget, &VibrationSettingsWidget::sendVibrateCommand); -} - -// ------------------------------------------------------------------------------------------------- -void DevicesWidget::updateTimerTab(Spotlight* spotlight) -{ - // Helper method to return the first subconnection that supports vibrate. - auto getVibrateConnection = [](const std::shared_ptr& conn) { - if (conn) { - for (const auto& item : conn->subDevices()) { - if (item.second->hasFlags(DeviceFlag::Vibrate)) { return item.second; } - - // Derive support from the initialized feature table as well. This makes - // the preferences UI resilient if its flag-change notification happened - // before the page was constructed or shown. - const auto hidpp = qobject_cast(item.second.get()); - if (hidpp - && (hidpp->featureSet().featureCodeSupported(HIDPP::FeatureCode::PresenterControl) - || hidpp->featureSet().featureCodeSupported(HIDPP::FeatureCode::Haptic))) { - return item.second; - } - } - } - return std::shared_ptr{}; - }; - - const auto currentConn = spotlight->deviceConnection(currentDeviceId()); - const auto vibrateConn = getVibrateConnection(currentConn); - - if (m_timerTabContext) { m_timerTabContext->deleteLater(); } - - if (vibrateConn) - { - if (m_tabWidget->indexOf(m_timerTabWidget) < 0) { - m_tabWidget->insertTab(1, m_timerTabWidget, tr("Vibration Timer")); - logDebug(preferences) << tr("Added Vibration Timer tab for '%1'.") - .arg(vibrateConn->path()); - } - m_timerTabWidget->setSubDeviceConnection(vibrateConn.get()); - } - else if (m_timerTabWidget) { - removeTab(m_tabWidget, m_timerTabWidget); - m_timerTabWidget->setSubDeviceConnection(nullptr); - } - - if (currentConn) { - m_timerTabContext = QPointer(new QObject(this)); - connect(&*currentConn, &DeviceConnection::subDeviceFlagsChanged, m_timerTabContext, - [currId=currentDeviceId(), spotlight, this](const DeviceId& id, const QString& /* path */) { - if (currId != id) { return; } - updateTimerTab(spotlight); - }); - } - -} - -// ------------------------------------------------------------------------------------------------- -void TimerTabWidget::loadSettings(const DeviceId& deviceId) -{ - m_multiTimerWidget->stopAllTimers(); - m_multiTimerWidget->blockSignals(true); - m_vibrationSettingsWidget->blockSignals(true); - - m_deviceId = deviceId; - - for (int i = 0; i < m_multiTimerWidget->timerCount(); ++i) { - const auto ts = m_settings->timerSettings(deviceId, i); - m_multiTimerWidget->setTimerEnabled(i, ts.first); - m_multiTimerWidget->setTimerValue(i, ts.second); - } - - const auto vs = m_settings->vibrationSettings(deviceId); - m_vibrationSettingsWidget->setLength(vs.first); - m_vibrationSettingsWidget->setIntensity(vs.second); - - m_vibrationSettingsWidget->blockSignals(false); - m_multiTimerWidget->blockSignals(false); -} - -// ------------------------------------------------------------------------------------------------- -void TimerTabWidget::setSubDeviceConnection(SubDeviceConnection* sdc) { - m_vibrationSettingsWidget->setSubDeviceConnection(sdc); -} - // ------------------------------------------------------------------------------------------------- DeviceInfoWidget::DeviceInfoWidget(QWidget* parent) : QWidget(parent) diff --git a/src/deviceswidget.h b/src/deviceswidget.h index 99390b8e..5658d499 100644 --- a/src/deviceswidget.h +++ b/src/deviceswidget.h @@ -13,17 +13,13 @@ class DeviceConnection; class InputMapper; -class MultiTimerWidget; class QComboBox; -class QShowEvent; class QTabWidget; class QTextEdit; class Settings; class Spotlight; -class VibrationSettingsWidget; class SubDeviceConnection; class SubHidppConnection; -class TimerTabWidget; // ------------------------------------------------------------------------------------------------- class DevicesWidget : public QWidget @@ -37,45 +33,18 @@ class DevicesWidget : public QWidget signals: void currentDeviceChanged(const DeviceId&); -protected: - void showEvent(QShowEvent* event) override; - private: QWidget* createDisconnectedStateWidget(); void createDeviceComboBox(Spotlight* spotlight); QWidget* createDevicesWidget(Settings* settings, Spotlight* spotlight); QWidget* createInputMapperWidget(Settings* settings, Spotlight* spotlight); QWidget* createDeviceInfoWidget(Spotlight* spotlight); - TimerTabWidget* createTimerTabWidget(Settings* settings, Spotlight* spotlight); - void updateTimerTab(Spotlight* spotlight); QComboBox* m_devicesCombo = nullptr; QTabWidget* m_tabWidget = nullptr; - TimerTabWidget* m_timerTabWidget = nullptr; - QPointer m_timerTabContext; QWidget* m_deviceDetailsTabWidget = nullptr; QPointer m_inputMapper; - QPointer m_spotlight; -}; - -// ------------------------------------------------------------------------------------------------- -class TimerTabWidget : public QWidget -{ - Q_OBJECT - -public: - TimerTabWidget(Settings* settings, QWidget* parent = nullptr); - VibrationSettingsWidget* vibrationSettingsWidget(); - - void loadSettings(const DeviceId& deviceId); - void setSubDeviceConnection(SubDeviceConnection* sdc); - -private: - DeviceId m_deviceId; - Settings* const m_settings = nullptr; - MultiTimerWidget* m_multiTimerWidget = nullptr; - VibrationSettingsWidget* m_vibrationSettingsWidget = nullptr; }; // ------------------------------------------------------------------------------------------------- diff --git a/src/preferencesdlg.cc b/src/preferencesdlg.cc index b586cd18..5a5938a3 100644 --- a/src/preferencesdlg.cc +++ b/src/preferencesdlg.cc @@ -77,6 +77,7 @@ PreferencesDialog::PreferencesDialog(Settings* settings, Spotlight* spotlight, tabWidget->addTab(settingsWidget, tr("Spotlight")); m_deviceswidget = new DevicesWidget(settings, spotlight, this); tabWidget->addTab(m_deviceswidget, tr("Devices")); + tabWidget->addTab(createGeneralTabWidget(settings), tr("General")); tabWidget->addTab(createLogTabWidget(), tr("Log")); const auto overlayCheckBox = new QCheckBox(this); @@ -103,6 +104,37 @@ PreferencesDialog::PreferencesDialog(Settings* settings, Spotlight* spotlight, }); } +// ------------------------------------------------------------------------------------------------- +QWidget* PreferencesDialog::createGeneralTabWidget(Settings* settings) +{ + const auto widget = new QWidget(this); + const auto group = new QGroupBox(tr("Presentation timer feedback"), widget); + const auto strengthSpinBox = new QSpinBox(group); + strengthSpinBox->setRange(0, 100); + strengthSpinBox->setSingleStep(5); + strengthSpinBox->setSuffix(tr("%")); + strengthSpinBox->setValue(settings->presentationTimerHapticStrength()); + strengthSpinBox->setToolTip(tr("Set to 0% to disable completion vibration.")); + + connect(strengthSpinBox, static_cast(&QSpinBox::valueChanged), + settings, &Settings::setPresentationTimerHapticStrength); + connect(settings, &Settings::presentationTimerHapticStrengthChanged, + strengthSpinBox, &QSpinBox::setValue); + + const auto groupLayout = new QGridLayout(group); + groupLayout->addWidget(new QLabel(tr("Completion vibration strength"), group), 0, 0); + groupLayout->addWidget(strengthSpinBox, 0, 1); + groupLayout->addWidget( + new QLabel(tr("Vibrates compatible connected presenters when the timer finishes."), group), + 1, 0, 1, 2); + groupLayout->setColumnStretch(1, 1); + + const auto layout = new QVBoxLayout(widget); + layout->addWidget(group); + layout->addStretch(1); + return widget; +} + // ------------------------------------------------------------------------------------------------- QWidget* PreferencesDialog::createSettingsTabWidget(Settings* settings) { diff --git a/src/preferencesdlg.h b/src/preferencesdlg.h index fdab5d86..e7de3df2 100644 --- a/src/preferencesdlg.h +++ b/src/preferencesdlg.h @@ -57,6 +57,7 @@ class PreferencesDialog : public QDialog void resetPresetCombo(); QWidget* createSettingsTabWidget(Settings* settings); + QWidget* createGeneralTabWidget(Settings* settings); QGroupBox* createShapeGroupBox(Settings* settings); QGroupBox* createSpotGroupBox(Settings* settings); QGroupBox* createDotGroupBox(Settings* settings); diff --git a/src/presentationtimer.cc b/src/presentationtimer.cc new file mode 100644 index 00000000..a6bff57f --- /dev/null +++ b/src/presentationtimer.cc @@ -0,0 +1,129 @@ +// This file is part of Projecteur - https://github.com/jahnf/projecteur +// - See LICENSE.md and README.md + +#include "presentationtimer.h" + +#include "device-command-helper.h" +#include "settings.h" +#include "spotlight.h" + +#include +#include + +#include + +namespace { +constexpr int MinimumDurationSeconds = 60; +constexpr int MaximumDurationSeconds = 180 * 60; +constexpr int TimerUpdateIntervalMs = 250; +} + +PresentationTimer::PresentationTimer(Settings* settings, Spotlight* spotlight, + DeviceCommandHelper* deviceCommandHelper, QObject* parent) + : QObject(parent) + , m_settings(settings) + , m_deviceCommandHelper(deviceCommandHelper) + , m_updateTimer(new QTimer(this)) + , m_durationSeconds(std::clamp(settings->presentationTimerDurationSeconds(), + MinimumDurationSeconds, MaximumDurationSeconds)) + , m_remainingSeconds(m_durationSeconds) + , m_hapticStrength(std::clamp(settings->presentationTimerHapticStrength(), 0, 100)) +{ + m_updateTimer->setTimerType(Qt::PreciseTimer); + m_updateTimer->setInterval(TimerUpdateIntervalMs); + connect(m_updateTimer, &QTimer::timeout, this, &PresentationTimer::updateRemaining); + connect(spotlight, &Spotlight::presenterButtonPressed, this, &PresentationTimer::start); + connect(m_settings, &Settings::presentationTimerHapticStrengthChanged, this, + [this](int strength) { + if (m_hapticStrength == strength) { return; } + m_hapticStrength = strength; + emit hapticStrengthChanged(strength); + }); +} + +QString PresentationTimer::stateName() const +{ + switch (m_state) { + case State::Idle: return QStringLiteral("idle"); + case State::Running: return QStringLiteral("running"); + case State::Completed: return QStringLiteral("completed"); + } + return QStringLiteral("idle"); +} + +void PresentationTimer::start() +{ + if (m_state == State::Idle) { beginCountdown(); } +} + +void PresentationTimer::restart() +{ + beginCountdown(); +} + +void PresentationTimer::reset() +{ + m_updateTimer->stop(); + setRemainingSeconds(m_durationSeconds); + setState(State::Idle); +} + +void PresentationTimer::setDurationSeconds(int seconds) +{ + const int duration = std::clamp(seconds, MinimumDurationSeconds, MaximumDurationSeconds); + if (m_durationSeconds == duration) { return; } + + m_durationSeconds = duration; + m_settings->setPresentationTimerDurationSeconds(duration); + emit durationSecondsChanged(duration); + if (m_state == State::Idle) { setRemainingSeconds(duration); } +} + +void PresentationTimer::setHapticStrength(int strength) +{ + m_settings->setPresentationTimerHapticStrength(strength); +} + +void PresentationTimer::updateRemaining() +{ + if (m_state != State::Running) { return; } + + const auto remainingMs = + std::chrono::duration_cast(m_deadline - Clock::now()).count(); + if (remainingMs > 0) { + setRemainingSeconds(static_cast((remainingMs + 999) / 1000)); + return; + } + + m_updateTimer->stop(); + setRemainingSeconds(0); + setState(State::Completed); + + if (m_hapticStrength > 0 && m_deviceCommandHelper) { + const auto intensity = static_cast( + std::lround(static_cast(m_hapticStrength) * 255.0 / 100.0)); + m_deviceCommandHelper->sendVibrateCommand(intensity, 0); + } +} + +void PresentationTimer::beginCountdown() +{ + m_deadline = Clock::now() + std::chrono::seconds(m_durationSeconds); + setRemainingSeconds(m_durationSeconds); + setState(State::Running); + m_updateTimer->start(); +} + +void PresentationTimer::setState(State state) +{ + if (m_state == state) { return; } + m_state = state; + emit stateChanged(state); +} + +void PresentationTimer::setRemainingSeconds(int seconds) +{ + if (m_remainingSeconds == seconds) { return; } + m_remainingSeconds = seconds; + emit remainingSecondsChanged(seconds); +} diff --git a/src/presentationtimer.h b/src/presentationtimer.h new file mode 100644 index 00000000..fb310ede --- /dev/null +++ b/src/presentationtimer.h @@ -0,0 +1,62 @@ +// This file is part of Projecteur - https://github.com/jahnf/projecteur +// - See LICENSE.md and README.md +#pragma once + +#include + +#include + +class DeviceCommandHelper; +class QTimer; +class Settings; +class Spotlight; + +class PresentationTimer : public QObject +{ + Q_OBJECT + +public: + enum class State { Idle, Running, Completed }; + Q_ENUM(State) + + PresentationTimer(Settings* settings, Spotlight* spotlight, + DeviceCommandHelper* deviceCommandHelper, QObject* parent = nullptr); + + State state() const { return m_state; } + QString stateName() const; + int durationSeconds() const { return m_durationSeconds; } + int remainingSeconds() const { return m_remainingSeconds; } + int hapticStrength() const { return m_hapticStrength; } + +public slots: + void start(); + void restart(); + void reset(); + void setDurationSeconds(int seconds); + void setHapticStrength(int strength); + +signals: + void stateChanged(PresentationTimer::State state); + void durationSecondsChanged(int seconds); + void remainingSecondsChanged(int seconds); + void hapticStrengthChanged(int strength); + +private slots: + void updateRemaining(); + +private: + using Clock = std::chrono::steady_clock; + + void beginCountdown(); + void setState(State state); + void setRemainingSeconds(int seconds); + + Settings* const m_settings; + DeviceCommandHelper* const m_deviceCommandHelper; + QTimer* const m_updateTimer; + Clock::time_point m_deadline; + State m_state = State::Idle; + int m_durationSeconds = 15 * 60; + int m_remainingSeconds = m_durationSeconds; + int m_hapticStrength = 50; +}; diff --git a/src/projecteurapp.cc b/src/projecteurapp.cc index 7a220311..7a738b3b 100644 --- a/src/projecteurapp.cc +++ b/src/projecteurapp.cc @@ -9,6 +9,7 @@ #include "linuxdesktop.h" #include "logging.h" #include "preferencesdlg.h" +#include "presentationtimer.h" #include "projecteurcontrol.h" #include "settings.h" #include "spotlight.h" @@ -64,6 +65,8 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio m_settings); m_deviceCommandHelper = new DeviceCommandHelper(this, m_spotlight); + m_presentationTimer = + new PresentationTimer(m_settings, m_spotlight, m_deviceCommandHelper, this); m_settings->setOverlayDisabled(options.disableOverlay); m_dialog = std::make_unique(m_settings, m_spotlight, @@ -259,7 +262,8 @@ void ProjecteurApplication::setupSpotlight() // ------------------------------------------------------------------------------------------------- void ProjecteurApplication::setupControlService(Options const& options) { - m_control = new ProjecteurControl(this, m_settings, m_spotlight, !options.hideSysTrayIcon); + m_control = new ProjecteurControl(this, m_settings, m_spotlight, m_presentationTimer, + !options.hideSysTrayIcon); if (!m_control->registerService()) { logError(mainapp) << tr("Could not register the Projecteur session D-Bus service."); } diff --git a/src/projecteurapp.h b/src/projecteurapp.h index 9d1fc926..7ea615d6 100644 --- a/src/projecteurapp.h +++ b/src/projecteurapp.h @@ -14,6 +14,7 @@ class AboutDialog; class DeviceCommandHelper; class LinuxDesktop; class PreferencesDialog; +class PresentationTimer; class ProjecteurControl; class QLocalServer; class QLocalSocket; @@ -85,6 +86,7 @@ private slots: Settings* m_settings = nullptr; Spotlight* m_spotlight = nullptr; DeviceCommandHelper* m_deviceCommandHelper = nullptr; + PresentationTimer* m_presentationTimer = nullptr; LinuxDesktop* m_linuxDesktop = nullptr; QQmlApplicationEngine* m_qmlEngine = nullptr; QQmlComponent* m_windowQmlComponent = nullptr; diff --git a/src/projecteurcontrol.cc b/src/projecteurcontrol.cc index 8145ce4b..b48a01a5 100644 --- a/src/projecteurcontrol.cc +++ b/src/projecteurcontrol.cc @@ -4,6 +4,7 @@ #include "projecteurcontrol.h" #include "device-hidpp.h" +#include "presentationtimer.h" #include "projecteurapp.h" #include "settings.h" #include "spotlight.h" @@ -36,11 +37,13 @@ QString batteryStatusName(HIDPP::BatteryStatus status) } ProjecteurControl::ProjecteurControl(ProjecteurApplication* application, Settings* settings, - Spotlight* spotlight, bool trayVisible) + Spotlight* spotlight, PresentationTimer* presentationTimer, + bool trayVisible) : QObject(application) , m_application(application) , m_settings(settings) , m_spotlight(spotlight) + , m_presentationTimer(presentationTimer) , m_trayVisible(trayVisible) { connect(m_settings, &Settings::overlayDisabledChanged, this, [this](bool disabled) { @@ -52,6 +55,26 @@ ProjecteurControl::ProjecteurControl(ProjecteurApplication* application, Setting emit spotlightActiveChanged(active); emitPropertiesChanged({{QStringLiteral("SpotlightActive"), active}}); }); + connect(m_presentationTimer, &PresentationTimer::stateChanged, this, [this]() { + const auto state = timerState(); + emit timerStateChanged(state); + emitPropertiesChanged({{QStringLiteral("TimerState"), state}}); + }); + connect(m_presentationTimer, &PresentationTimer::durationSecondsChanged, this, + [this](int seconds) { + emit timerDurationSecondsChanged(seconds); + emitPropertiesChanged({{QStringLiteral("TimerDurationSeconds"), seconds}}); + }); + connect(m_presentationTimer, &PresentationTimer::remainingSecondsChanged, this, + [this](int seconds) { + emit timerRemainingSecondsChanged(seconds); + emitPropertiesChanged({{QStringLiteral("TimerRemainingSeconds"), seconds}}); + }); + connect(m_presentationTimer, &PresentationTimer::hapticStrengthChanged, this, + [this](int strength) { + emit timerHapticStrengthChanged(strength); + emitPropertiesChanged({{QStringLiteral("TimerHapticStrength"), strength}}); + }); const auto updateConnectedDevices = [this]() { const auto devices = connectedDevices(); @@ -225,6 +248,26 @@ QStringList ProjecteurControl::presets() const return result; } +QString ProjecteurControl::timerState() const +{ + return m_presentationTimer->stateName(); +} + +int ProjecteurControl::timerDurationSeconds() const +{ + return m_presentationTimer->durationSeconds(); +} + +int ProjecteurControl::timerRemainingSeconds() const +{ + return m_presentationTimer->remainingSeconds(); +} + +int ProjecteurControl::timerHapticStrength() const +{ + return m_presentationTimer->hapticStrength(); +} + void ProjecteurControl::SetOverlayEnabled(bool enabled) { m_settings->setOverlayDisabled(!enabled); @@ -242,6 +285,31 @@ bool ProjecteurControl::LoadPreset(const QString& preset) return true; } +void ProjecteurControl::StartTimer() +{ + m_presentationTimer->start(); +} + +void ProjecteurControl::RestartTimer() +{ + m_presentationTimer->restart(); +} + +void ProjecteurControl::ResetTimer() +{ + m_presentationTimer->reset(); +} + +void ProjecteurControl::SetTimerDurationSeconds(int seconds) +{ + m_presentationTimer->setDurationSeconds(seconds); +} + +void ProjecteurControl::SetTimerHapticStrength(int strength) +{ + m_presentationTimer->setHapticStrength(strength); +} + void ProjecteurControl::ShowPreferences() { m_application->showPreferences(true); diff --git a/src/projecteurcontrol.h b/src/projecteurcontrol.h index b1e7bdbb..37f29c5f 100644 --- a/src/projecteurcontrol.h +++ b/src/projecteurcontrol.h @@ -8,6 +8,7 @@ #include class ProjecteurApplication; +class PresentationTimer; class Settings; class Spotlight; struct DeviceId; @@ -26,6 +27,10 @@ class ProjecteurControl : public QObject NOTIFY connectedDeviceBatteryStatusesChanged) Q_PROPERTY(QStringList Presets READ presets NOTIFY presetsChanged) Q_PROPERTY(QString CurrentPreset READ currentPreset NOTIFY currentPresetChanged) + Q_PROPERTY(QString TimerState READ timerState NOTIFY timerStateChanged) + Q_PROPERTY(int TimerDurationSeconds READ timerDurationSeconds NOTIFY timerDurationSecondsChanged) + Q_PROPERTY(int TimerRemainingSeconds READ timerRemainingSeconds NOTIFY timerRemainingSecondsChanged) + Q_PROPERTY(int TimerHapticStrength READ timerHapticStrength NOTIFY timerHapticStrengthChanged) public: static constexpr auto ServiceName = "org.projecteur.Projecteur"; @@ -33,7 +38,7 @@ class ProjecteurControl : public QObject static constexpr auto InterfaceName = "org.projecteur.Projecteur"; ProjecteurControl(ProjecteurApplication* application, Settings* settings, Spotlight* spotlight, - bool trayVisible); + PresentationTimer* presentationTimer, bool trayVisible); bool registerService(); void unregisterService(); @@ -46,11 +51,20 @@ class ProjecteurControl : public QObject QStringList connectedDeviceBatteryStatuses() const; QStringList presets() const; QString currentPreset() const { return m_currentPreset; } + QString timerState() const; + int timerDurationSeconds() const; + int timerRemainingSeconds() const; + int timerHapticStrength() const; public slots: void SetOverlayEnabled(bool enabled); void SetSpotlightActive(bool active); bool LoadPreset(const QString& preset); + void StartTimer(); + void RestartTimer(); + void ResetTimer(); + void SetTimerDurationSeconds(int seconds); + void SetTimerHapticStrength(int strength); void ShowPreferences(); void ShowAbout(); void Quit(); @@ -63,6 +77,10 @@ public slots: void connectedDeviceBatteryStatusesChanged(const QStringList& statuses); void presetsChanged(const QStringList& presets); void currentPresetChanged(const QString& preset); + void timerStateChanged(const QString& state); + void timerDurationSecondsChanged(int seconds); + void timerRemainingSecondsChanged(int seconds); + void timerHapticStrengthChanged(int strength); private: void clearCurrentPreset(); @@ -74,6 +92,7 @@ public slots: ProjecteurApplication* const m_application; Settings* const m_settings; Spotlight* const m_spotlight; + PresentationTimer* const m_presentationTimer; const bool m_trayVisible; QString m_currentPreset; bool m_objectRegistered = false; diff --git a/src/settings.cc b/src/settings.cc index 5ceb229b..d9aef369 100644 --- a/src/settings.cc +++ b/src/settings.cc @@ -40,14 +40,12 @@ namespace { constexpr char zoomEnabled[] = "enableZoom"; constexpr char zoomFactor[] = "zoomFactor"; constexpr char multiScreenOverlay[] = "multiScreenOverlay"; + constexpr char presentationTimerDurationSeconds[] = "presentationTimerDurationSeconds"; + constexpr char presentationTimerHapticStrength[] = "presentationTimerHapticStrength"; // -- device specific constexpr char inputSequenceInterval[] = "inputSequenceInterval"; constexpr char inputMapConfig[] = "inputMapConfig"; - constexpr char timerEnabled[] = "timer%1enabled"; - constexpr char timerSeconds[] = "timer%1seconds"; - constexpr char vibrationLength[] = "vibrationLength"; - constexpr char vibrationIntensity[] = "vibrationIntensity"; namespace defaultValue { constexpr bool showSpotShade = true; @@ -68,11 +66,11 @@ namespace { constexpr bool zoomEnabled = false; constexpr double zoomFactor = 2.0; constexpr bool multiScreenOverlay = false; + constexpr int presentationTimerDurationSeconds = 15 * 60; + constexpr int presentationTimerHapticStrength = 50; // -- device specific defaults constexpr int inputSequenceInterval = 250; - constexpr uint8_t vibrationLength = 0; - constexpr uint8_t vibrationIntensity = 128; } // end namespace defaultValue namespace ranges { @@ -846,39 +844,34 @@ InputMapConfig Settings::getDeviceInputMapConfig(const DeviceId& dId) } // ------------------------------------------------------------------------------------------------- -void Settings::setTimerSettings(const DeviceId& dId, int timerId, bool enabled, int seconds) +void Settings::setPresentationTimerDurationSeconds(int seconds) { - m_settings->setValue(settingsKey(dId, QString(::settings::timerEnabled).arg(timerId)), enabled); - m_settings->setValue(settingsKey(dId, QString(::settings::timerSeconds).arg(timerId)), seconds); + m_settings->setValue(::settings::presentationTimerDurationSeconds, seconds); } // ------------------------------------------------------------------------------------------------- -std::pair Settings::timerSettings(const DeviceId& dId, int timerId) const +int Settings::presentationTimerDurationSeconds() const { - const auto enabled = m_settings->value( - settingsKey(dId, QString(::settings::timerEnabled).arg(timerId)), false).toBool(); - const auto seconds = m_settings->value( - settingsKey(dId, QString(::settings::timerSeconds).arg(timerId)), 900 + 900 * timerId).toInt(); - return std::make_pair(enabled, seconds); + return m_settings->value( + ::settings::presentationTimerDurationSeconds, + ::settings::defaultValue::presentationTimerDurationSeconds).toInt(); } // ------------------------------------------------------------------------------------------------- -void Settings::setVibrationSettings(const DeviceId& dId, uint8_t len, uint8_t intensity) +void Settings::setPresentationTimerHapticStrength(int strength) { - m_settings->setValue(settingsKey(dId, ::settings::vibrationLength), len); - m_settings->setValue(settingsKey(dId, ::settings::vibrationIntensity), intensity); + const int clampedStrength = std::clamp(strength, 0, 100); + if (presentationTimerHapticStrength() == clampedStrength) { return; } + m_settings->setValue(::settings::presentationTimerHapticStrength, clampedStrength); + emit presentationTimerHapticStrengthChanged(clampedStrength); } // ------------------------------------------------------------------------------------------------- -std::pair Settings::vibrationSettings(const DeviceId& dId) const +int Settings::presentationTimerHapticStrength() const { - const auto len = m_settings->value( - settingsKey(dId, ::settings::vibrationLength), - ::settings::defaultValue::vibrationLength).toUInt(); - const auto intensity = m_settings->value( - settingsKey(dId, ::settings::vibrationIntensity), - ::settings::defaultValue::vibrationIntensity).toUInt(); - return std::make_pair(len, intensity); + return m_settings->value( + ::settings::presentationTimerHapticStrength, + ::settings::defaultValue::presentationTimerHapticStrength).toInt(); } // ------------------------------------------------------------------------------------------------- diff --git a/src/settings.h b/src/settings.h index f5cc11e4..2b26b7bb 100644 --- a/src/settings.h +++ b/src/settings.h @@ -41,6 +41,9 @@ class Settings : public QObject Q_PROPERTY(double zoomFactor READ zoomFactor WRITE setZoomFactor NOTIFY zoomFactorChanged) Q_PROPERTY(bool multiScreenOverlayEnabled READ multiScreenOverlayEnabled WRITE setMultiScreenOverlayEnabled NOTIFY multiScreenOverlayEnabledChanged) + Q_PROPERTY(int presentationTimerHapticStrength READ presentationTimerHapticStrength + WRITE setPresentationTimerHapticStrength + NOTIFY presentationTimerHapticStrengthChanged) public: explicit Settings(QObject* parent = nullptr); @@ -172,11 +175,10 @@ class Settings : public QObject void setDeviceInputMapConfig(const DeviceId& dId, const InputMapConfig& imc); InputMapConfig getDeviceInputMapConfig(const DeviceId& dId); - void setTimerSettings(const DeviceId& dId, int timerId, bool enabled, int seconds); - std::pair timerSettings(const DeviceId& dId, int timerId) const; - - void setVibrationSettings(const DeviceId& dId, uint8_t len, uint8_t intensity); - std::pair vibrationSettings(const DeviceId& dId) const; + void setPresentationTimerDurationSeconds(int seconds); + int presentationTimerDurationSeconds() const; + void setPresentationTimerHapticStrength(int strength); + int presentationTimerHapticStrength() const; signals: void showSpotShadeChanged(bool show); @@ -198,6 +200,7 @@ class Settings : public QObject void zoomEnabledChanged(bool enabled); void zoomFactorChanged(double zoomFactor); void multiScreenOverlayEnabledChanged(bool enabled); + void presentationTimerHapticStrengthChanged(int strength); void overlayDisabledChanged(bool disabled); void presetLoaded(const QString& preset); diff --git a/src/spotlight.cc b/src/spotlight.cc index 374d859f..a03fb1be 100644 --- a/src/spotlight.cc +++ b/src/spotlight.cc @@ -396,6 +396,12 @@ void Spotlight::onEventDataAvailable(int fd, SubEventConnection& connection) } ++buf; + if (ev.type == EV_KEY && ev.value == 1 + && (ev.code == BTN_LEFT || ev.code == KEY_RIGHT || ev.code == KEY_LEFT + || ev.code == KEY_PAGEDOWN || ev.code == KEY_PAGEUP)) { + emit presenterButtonPressed(); + } + if (ev.type == EV_SYN) { // Check for relative events -> set Spotlight active @@ -405,6 +411,7 @@ void Spotlight::onEventDataAvailable(int fd, SubEventConnection& connection) if (isMouseMoveEvent) { // Skip input mapping for mouse move events completely + if (!spotActive()) { emit presenterButtonPressed(); } // Note: During a Next or Back button press the Logitech Spotlight device can send // move events via hid++ notifications. It seems that just when releasing the diff --git a/src/spotlight.h b/src/spotlight.h index d77c9eef..5fd08797 100644 --- a/src/spotlight.h +++ b/src/spotlight.h @@ -55,6 +55,7 @@ class Spotlight : public QObject, public async::Async void subDeviceDisconnected(const DeviceId& id, const QString& name, const QString& path); void anySpotlightDeviceConnectedChanged(bool connected); void spotActiveChanged(bool isActive); + void presenterButtonPressed(); private: enum class ConnectionResult { CouldNotOpen, NotASpotlightDevice, Connected }; From 23446ecdffb98bd097fdf233e05752045bfc4705 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 14:58:49 -0500 Subject: [PATCH 30/67] more reliable reinstall --- Justfile | 46 ++++++++++++++++++++++++++++++++++++++++---- README.md | 4 +++- src/projecteurapp.cc | 8 +++++++- 3 files changed, 52 insertions(+), 6 deletions(-) diff --git a/Justfile b/Justfile index 3442d7e3..f0f86fea 100644 --- a/Justfile +++ b/Justfile @@ -22,6 +22,8 @@ build: _require-arch deps # Build an Arch Linux package from the current working tree. package: _require-arch deps #!/usr/bin/env bash + set -euo pipefail + if (( EUID == 0 )); then echo "error: makepkg must be run as a regular user, not root." >&2 exit 1 @@ -66,8 +68,19 @@ package: _require-arch deps # Build, package, and install Projecteur through pacman. install: build package #!/usr/bin/env bash + set -euo pipefail + stage="{{ arch_dir }}" packages="{{ package_dir }}" + was_running=0 + + restart_projecteur() { + if (( was_running )); then + was_running=0 + systemd-run --user --collect --quiet /usr/bin/projecteur + fi + } + package_file="$( cd "$stage" PKGDEST="$packages" makepkg --packagelist | head -n 1 @@ -78,20 +91,43 @@ install: build package exit 1 fi + if (( EUID != 0 )); then + if ! command -v sudo >/dev/null 2>&1; then + echo "error: installing the package requires root or sudo." >&2 + exit 1 + fi + # Authenticate before stopping a running Projecteur instance. + sudo -v + fi + + # KWin authorizes screenshot access by resolving the running executable. + # Replacing that executable underneath a live Projecteur process makes all + # subsequent zoom captures fail until the process is restarted. + if [[ -x /usr/bin/projecteur ]] \ + && /usr/bin/projecteur --command quit >/dev/null 2>&1; then + was_running=1 + while /usr/bin/projecteur --command quit >/dev/null 2>&1; do + sleep 0.1 + done + fi + trap restart_projecteur EXIT + if (( EUID == 0 )); then pacman -U --noconfirm "$package_file" - elif command -v sudo >/dev/null 2>&1; then - sudo pacman -U --noconfirm "$package_file" else - echo "error: installing the package requires root or sudo." >&2 - exit 1 + sudo pacman -U --noconfirm "$package_file" fi /usr/bin/projecteur --version + restart_projecteur + trap - EXIT + # Install the compiler and Projecteur build dependencies. deps: _require-arch #!/usr/bin/env bash + set -euo pipefail + dependencies=( base-devel cmake @@ -125,6 +161,8 @@ deps: _require-arch _require-arch: #!/usr/bin/env bash + set -euo pipefail + if [[ ! -r /etc/os-release ]]; then echo "error: /etc/os-release is unavailable; this workflow requires Arch Linux." >&2 exit 1 diff --git a/README.md b/README.md index 7b7c67e9..9bb9073c 100644 --- a/README.md +++ b/README.md @@ -185,7 +185,9 @@ just install # Build, package, and install the package with pacman `just package` packages the current working tree, including uncommitted files, through the checked-in `packaging/arch/PKGBUILD`. `just install` uses `sudo` -only for dependency installation and the final `pacman -U`. +only for dependency installation and the final `pacman -U`. If Projecteur is +running, `just install` stops it before the upgrade and starts it again afterward +so KWin can authorize zoom captures against the newly installed executable. Installing is required for zoom: KWin authorizes the screenshot interface by matching the running executable with the installed `projecteur.desktop` metadata. A binary run diff --git a/src/projecteurapp.cc b/src/projecteurapp.cc index 7a738b3b..39713804 100644 --- a/src/projecteurapp.cc +++ b/src/projecteurapp.cc @@ -213,7 +213,13 @@ void ProjecteurApplication::setupSpotlight() { m_linuxDesktop->setShakeCursorEffectSuppressed(true); - if (!m_settings->multiScreenOverlayEnabled()) { setScreenForCursorPos(); } + QScreen* const cursorScreen = screenAtCursorPos(); + if (!m_settings->multiScreenOverlayEnabled()) { + updateOverlayWindow(m_overlayWindows.first(), cursorScreen); + } + if (cursorScreen) { + setCurrentSpotScreen(quint64(cursorScreen)); + } for (const auto window : m_overlayWindows) { From 5f059744603417c7817acabb2b3d0b9cc416ce36 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 15:10:37 -0500 Subject: [PATCH 31/67] move timer and haptic feedbakc to the correct spots --- Justfile | 37 +++--------- README.md | 8 +-- plasma/projecteurapplet.cc | 17 ++++++ plasma/projecteurapplet.h | 6 ++ plasma/qml/FullRepresentation.qml | 8 ++- plasma/qml/main.qml | 15 +++-- src/device-command-helper.cc | 60 ++++++++++++------- src/device-command-helper.h | 2 + src/deviceswidget.cc | 96 +++++++++++++++++++++++++++++++ src/deviceswidget.h | 7 +++ src/preferencesdlg.cc | 33 ----------- src/preferencesdlg.h | 1 - src/presentationtimer.cc | 41 +++++++------ src/presentationtimer.h | 9 +-- src/projecteurcontrol.cc | 31 +++++----- src/projecteurcontrol.h | 8 +-- src/settings.cc | 63 ++++++++++++++------ src/settings.h | 11 ++-- 18 files changed, 296 insertions(+), 157 deletions(-) diff --git a/Justfile b/Justfile index f0f86fea..6d9dee10 100644 --- a/Justfile +++ b/Justfile @@ -9,15 +9,13 @@ package_dir := build_dir / "packages" default: @just --list -# Build and smoke-test the Projecteur binary. +# Compile Projecteur. build: _require-arch deps cmake -S "{{ project_root }}" -B "{{ build_dir }}" \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr \ -DPACKAGE_TARGETS=OFF cmake --build "{{ build_dir }}" --parallel - "{{ build_dir }}/projecteur" --version - "{{ build_dir }}/projecteur" --help >/dev/null # Build an Arch Linux package from the current working tree. package: _require-arch deps @@ -66,20 +64,12 @@ package: _require-arch deps ) # Build, package, and install Projecteur through pacman. -install: build package +install: _stop-projecteur build package #!/usr/bin/env bash set -euo pipefail stage="{{ arch_dir }}" packages="{{ package_dir }}" - was_running=0 - - restart_projecteur() { - if (( was_running )); then - was_running=0 - systemd-run --user --collect --quiet /usr/bin/projecteur - fi - } package_file="$( cd "$stage" @@ -96,32 +86,23 @@ install: build package echo "error: installing the package requires root or sudo." >&2 exit 1 fi - # Authenticate before stopping a running Projecteur instance. + # Authenticate before installing the package. sudo -v fi - # KWin authorizes screenshot access by resolving the running executable. - # Replacing that executable underneath a live Projecteur process makes all - # subsequent zoom captures fail until the process is restarted. - if [[ -x /usr/bin/projecteur ]] \ - && /usr/bin/projecteur --command quit >/dev/null 2>&1; then - was_running=1 - while /usr/bin/projecteur --command quit >/dev/null 2>&1; do - sleep 0.1 - done - fi - trap restart_projecteur EXIT - if (( EUID == 0 )); then pacman -U --noconfirm "$package_file" else sudo pacman -U --noconfirm "$package_file" fi - /usr/bin/projecteur --version + systemctl --user restart plasma-plasmashell.service - restart_projecteur - trap - EXIT +_stop-projecteur: + #!/usr/bin/env bash + if [[ -x /usr/bin/projecteur ]]; then + /usr/bin/projecteur --command quit >/dev/null 2>&1 || true + fi # Install the compiler and Projecteur build dependencies. deps: _require-arch diff --git a/README.md b/README.md index 9bb9073c..10455e19 100644 --- a/README.md +++ b/README.md @@ -178,16 +178,16 @@ On Arch Linux and Arch-based distributions, the `Justfile` can install missing build dependencies and run the complete local packaging workflow: ```sh -just build # Build and smoke-test build/projecteur +just build # Compile build/projecteur just package # Create build/packages/projecteur-*.pkg.tar.zst just install # Build, package, and install the package with pacman ``` `just package` packages the current working tree, including uncommitted files, through the checked-in `packaging/arch/PKGBUILD`. `just install` uses `sudo` -only for dependency installation and the final `pacman -U`. If Projecteur is -running, `just install` stops it before the upgrade and starts it again afterward -so KWin can authorize zoom captures against the newly installed executable. +only for dependency installation and the final `pacman -U`. It stops a running +Projecteur instance, compiles, packages and installs the current tree, then +restarts `plasma-plasmashell.service`. Installing is required for zoom: KWin authorizes the screenshot interface by matching the running executable with the installed `projecteur.desktop` metadata. A binary run diff --git a/plasma/projecteurapplet.cc b/plasma/projecteurapplet.cc index ba019ef4..8d9dda5a 100644 --- a/plasma/projecteurapplet.cc +++ b/plasma/projecteurapplet.cc @@ -56,6 +56,9 @@ ProjecteurApplet::ProjecteurApplet(QObject* parent, const KPluginMetaData& data, bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), QString::fromLatin1(interfaceName), QStringLiteral("currentPresetChanged"), this, SLOT(remoteCurrentPresetChanged(QString))); + bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), + QString::fromLatin1(interfaceName), QStringLiteral("timerEnabledChanged"), + this, SLOT(remoteTimerEnabledChanged(bool))); bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), QString::fromLatin1(interfaceName), QStringLiteral("timerStateChanged"), this, SLOT(remoteTimerStateChanged(QString))); @@ -87,6 +90,11 @@ void ProjecteurApplet::loadPreset(const QString& preset) call(QStringLiteral("LoadPreset"), {preset}); } +void ProjecteurApplet::setTimerEnabled(bool enabled) +{ + call(QStringLiteral("SetTimerEnabled"), {enabled}); +} + void ProjecteurApplet::startTimer() { call(QStringLiteral("StartTimer")); @@ -191,6 +199,13 @@ void ProjecteurApplet::remoteCurrentPresetChanged(const QString& preset) emit currentPresetChanged(); } +void ProjecteurApplet::remoteTimerEnabledChanged(bool enabled) +{ + if (m_timerEnabled == enabled) { return; } + m_timerEnabled = enabled; + emit timerEnabledChanged(); +} + void ProjecteurApplet::remoteTimerStateChanged(const QString& state) { if (m_timerState == state) { return; } @@ -239,6 +254,7 @@ void ProjecteurApplet::refresh() emit timerAvailableChanged(); } if (timerAvailable) { + remoteTimerEnabledChanged(interface.property("TimerEnabled").toBool()); remoteTimerStateChanged(timerStateProperty.toString()); remoteTimerDurationSecondsChanged(interface.property("TimerDurationSeconds").toInt()); remoteTimerRemainingSecondsChanged(interface.property("TimerRemainingSeconds").toInt()); @@ -262,6 +278,7 @@ void ProjecteurApplet::resetState() m_timerAvailable = false; emit timerAvailableChanged(); } + remoteTimerEnabledChanged(false); remoteTimerStateChanged(QStringLiteral("idle")); remoteTimerDurationSecondsChanged(15 * 60); remoteTimerRemainingSecondsChanged(15 * 60); diff --git a/plasma/projecteurapplet.h b/plasma/projecteurapplet.h index d1947df8..729cf2be 100644 --- a/plasma/projecteurapplet.h +++ b/plasma/projecteurapplet.h @@ -24,6 +24,7 @@ class ProjecteurApplet : public Plasma::Applet NOTIFY connectedDeviceBatteryStatusesChanged) Q_PROPERTY(QStringList presets READ presets NOTIFY presetsChanged) Q_PROPERTY(QString currentPreset READ currentPreset NOTIFY currentPresetChanged) + Q_PROPERTY(bool timerEnabled READ timerEnabled NOTIFY timerEnabledChanged) Q_PROPERTY(QString timerState READ timerState NOTIFY timerStateChanged) Q_PROPERTY(int timerDurationSeconds READ timerDurationSeconds NOTIFY timerDurationSecondsChanged) Q_PROPERTY(int timerRemainingSeconds READ timerRemainingSeconds NOTIFY timerRemainingSecondsChanged) @@ -41,6 +42,7 @@ class ProjecteurApplet : public Plasma::Applet QStringList connectedDeviceBatteryStatuses() const { return m_connectedDeviceBatteryStatuses; } QStringList presets() const { return m_presets; } QString currentPreset() const { return m_currentPreset; } + bool timerEnabled() const { return m_timerEnabled; } QString timerState() const { return m_timerState; } int timerDurationSeconds() const { return m_timerDurationSeconds; } int timerRemainingSeconds() const { return m_timerRemainingSeconds; } @@ -48,6 +50,7 @@ class ProjecteurApplet : public Plasma::Applet Q_INVOKABLE void setOverlayEnabled(bool enabled); Q_INVOKABLE void setSpotlightActive(bool active); Q_INVOKABLE void loadPreset(const QString& preset); + Q_INVOKABLE void setTimerEnabled(bool enabled); Q_INVOKABLE void startTimer(); Q_INVOKABLE void restartTimer(); Q_INVOKABLE void resetTimer(); @@ -67,6 +70,7 @@ class ProjecteurApplet : public Plasma::Applet void connectedDeviceBatteryStatusesChanged(); void presetsChanged(); void currentPresetChanged(); + void timerEnabledChanged(); void timerStateChanged(); void timerDurationSecondsChanged(); void timerRemainingSecondsChanged(); @@ -81,6 +85,7 @@ private slots: void remoteConnectedDeviceBatteryStatusesChanged(const QStringList& statuses); void remotePresetsChanged(const QStringList& presets); void remoteCurrentPresetChanged(const QString& preset); + void remoteTimerEnabledChanged(bool enabled); void remoteTimerStateChanged(const QString& state); void remoteTimerDurationSecondsChanged(int seconds); void remoteTimerRemainingSecondsChanged(int seconds); @@ -101,6 +106,7 @@ private slots: QStringList m_connectedDeviceBatteryStatuses; QStringList m_presets; QString m_currentPreset; + bool m_timerEnabled = false; QString m_timerState = QStringLiteral("idle"); int m_timerDurationSeconds = 15 * 60; int m_timerRemainingSeconds = 15 * 60; diff --git a/plasma/qml/FullRepresentation.qml b/plasma/qml/FullRepresentation.qml index c163625c..9a875995 100644 --- a/plasma/qml/FullRepresentation.qml +++ b/plasma/qml/FullRepresentation.qml @@ -193,9 +193,13 @@ PlasmaExtras.Representation { Layout.fillWidth: true spacing: Kirigami.Units.smallSpacing - PlasmaComponents3.Label { + PlasmaComponents3.CheckBox { text: i18n("Presentation timer") font.bold: true + checked: root.backend && root.backend.timerEnabled + enabled: root.backend && root.backend.serviceAvailable + && root.backend.timerAvailable + onClicked: root.backend.setTimerEnabled(checked) } Kirigami.Separator { @@ -206,6 +210,8 @@ PlasmaExtras.Representation { ColumnLayout { Layout.fillWidth: true spacing: Kirigami.Units.smallSpacing + enabled: !root.backend || !root.backend.timerAvailable + || root.backend.timerEnabled PlasmaComponents3.Label { Layout.fillWidth: true diff --git a/plasma/qml/main.qml b/plasma/qml/main.qml index 08f47aa0..5d879391 100644 --- a/plasma/qml/main.qml +++ b/plasma/qml/main.qml @@ -26,7 +26,8 @@ PlasmoidItem { hideOnWindowDeactivate: true Plasmoid.icon: "projecteur" badgeText: { - if (!backend || !backend.serviceAvailable || !backend.timerAvailable) + if (!backend || !backend.serviceAvailable || !backend.timerAvailable + || !backend.timerEnabled) return ""; if (backend.timerState === "completed") @@ -42,7 +43,8 @@ PlasmoidItem { Plasmoid.status: { if (!backend || !backend.serviceAvailable || !backend.trayVisible) return PlasmaCore.Types.HiddenStatus; - if (backend.timerAvailable && backend.timerState === "completed") + if (backend.timerAvailable && backend.timerEnabled + && backend.timerState === "completed") return PlasmaCore.Types.NeedsAttentionStatus; return PlasmaCore.Types.ActiveStatus; } @@ -51,13 +53,16 @@ PlasmoidItem { if (!backend || !backend.serviceAvailable) return i18n("Projecteur is not running"); - if (backend.timerAvailable && backend.timerState === "running") + if (backend.timerAvailable && backend.timerEnabled + && backend.timerState === "running") return i18n("Presentation timer: %1 remaining", root.formatTimer(backend.timerRemainingSeconds)); - if (backend.timerAvailable && backend.timerState === "completed") + if (backend.timerAvailable && backend.timerEnabled + && backend.timerState === "completed") return i18n("Presentation timer finished"); - if (backend.timerAvailable && backend.timerState === "idle") + if (backend.timerAvailable && backend.timerEnabled + && backend.timerState === "idle") return i18n("Timer ready: %1 — starts on the next presenter button press", root.formatTimer(backend.timerDurationSeconds)); diff --git a/src/device-command-helper.cc b/src/device-command-helper.cc index 85ad73df..a22b9b96 100644 --- a/src/device-command-helper.cc +++ b/src/device-command-helper.cc @@ -24,29 +24,45 @@ bool DeviceCommandHelper::sendVibrateCommand(uint8_t intensity, uint8_t length) return false; } - for ( auto const& dev : m_spotlight->connectedDevices()) { - if (auto connection = m_spotlight->deviceConnection(dev.id)) { - if (!connection->hasHidppSupport()) { - continue; - } - - for (auto const& subInfo : connection->subDevices()) { - auto const& subConn = subInfo.second; - if (!subConn || !subConn->hasFlags(DeviceFlag::Vibrate)) { - continue; - } - - if (auto hidppConn = std::dynamic_pointer_cast(subConn)) - { - hidppConn->sendVibrateCommand(intensity, length, - [](HidppConnectionInterface::MsgResult, HIDPP::Message&&) { - // logDebug(hid) << tr("Vibrate command returned: %1 (%2)") - // .arg(toString(result)).arg(msg.hex()); - }); - } - } + bool commandSent = false; + for (const auto& device : m_spotlight->connectedDevices()) { + commandSent = sendVibrateCommand(device.id, intensity, length) || commandSent; + } + return commandSent; +} + +// ------------------------------------------------------------------------------------------------- +bool DeviceCommandHelper::sendVibrateCommand(const DeviceId& deviceId, uint8_t intensity, + uint8_t length) +{ + if (m_spotlight.isNull()) { + return false; + } + + const auto connection = m_spotlight->deviceConnection(deviceId); + if (!connection || !connection->hasHidppSupport()) { + return false; + } + + bool commandSent = false; + for (const auto& subInfo : connection->subDevices()) + { + const auto& subConnection = subInfo.second; + if (!subConnection || !subConnection->hasFlags(DeviceFlag::Vibrate)) { + continue; + } + + if (const auto hidppConnection = + std::dynamic_pointer_cast(subConnection)) + { + hidppConnection->sendVibrateCommand(intensity, length, + [](HidppConnectionInterface::MsgResult, HIDPP::Message&&) { + // logDebug(hid) << tr("Vibrate command returned: %1 (%2)") + // .arg(toString(result)).arg(msg.hex()); + }); + commandSent = true; } } - return true; + return commandSent; } diff --git a/src/device-command-helper.h b/src/device-command-helper.h index 00fb34ed..01ae14f7 100644 --- a/src/device-command-helper.h +++ b/src/device-command-helper.h @@ -6,6 +6,7 @@ #include class Spotlight; +struct DeviceId; /// Class that offers easy access to device commands with a given Spotlight /// instance. @@ -18,6 +19,7 @@ class DeviceCommandHelper : public QObject virtual ~DeviceCommandHelper(); bool sendVibrateCommand(uint8_t intensity, uint8_t length); + bool sendVibrateCommand(const DeviceId& deviceId, uint8_t intensity, uint8_t length); private: QPointer m_spotlight; diff --git a/src/deviceswidget.cc b/src/deviceswidget.cc index 4c545d3a..742d4ba2 100644 --- a/src/deviceswidget.cc +++ b/src/deviceswidget.cc @@ -12,8 +12,10 @@ #include "spotlight.h" #include +#include #include #include +#include #include #include #include @@ -87,12 +89,106 @@ QWidget* DevicesWidget::createDevicesWidget(Settings* settings, Spotlight* spotl m_tabWidget->addTab(createInputMapperWidget(settings, spotlight), tr("Input Mapping")); + m_timerFeedbackWidget = createTimerFeedbackWidget(settings); + m_deviceDetailsTabWidget = createDeviceInfoWidget(spotlight); m_tabWidget->addTab(m_deviceDetailsTabWidget, tr("Details")); + updateTimerFeedbackTab(spotlight); + connect(this, &DevicesWidget::currentDeviceChanged, this, + [this, settings, spotlight](const DeviceId& deviceId) { + loadTimerFeedbackSettings(settings, deviceId); + updateTimerFeedbackTab(spotlight); + }); + return dw; } +// ------------------------------------------------------------------------------------------------- +QWidget* DevicesWidget::createTimerFeedbackWidget(Settings* settings) +{ + const auto widget = new QWidget(this); + const auto group = new QGroupBox(tr("Presentation timer feedback"), widget); + m_timerFeedbackStrength = new QSpinBox(group); + m_timerFeedbackStrength->setRange(0, 100); + m_timerFeedbackStrength->setSingleStep(5); + m_timerFeedbackStrength->setSuffix(tr("%")); + m_timerFeedbackStrength->setToolTip(tr("Set to 0% to disable completion vibration.")); + + const auto groupLayout = new QGridLayout(group); + groupLayout->addWidget(new QLabel(tr("Completion vibration strength"), group), 0, 0); + groupLayout->addWidget(m_timerFeedbackStrength, 0, 1); + groupLayout->addWidget( + new QLabel(tr("Vibrates this presenter when the presentation timer finishes."), group), + 1, 0, 1, 2); + groupLayout->setColumnStretch(1, 1); + + const auto layout = new QVBoxLayout(widget); + layout->addWidget(group); + layout->addStretch(1); + + loadTimerFeedbackSettings(settings, currentDeviceId()); + connect(m_timerFeedbackStrength, + static_cast(&QSpinBox::valueChanged), + this, [this, settings](int strength) { + settings->setDevicePresentationTimerHapticStrength(currentDeviceId(), strength); + }); + + return widget; +} + +// ------------------------------------------------------------------------------------------------- +void DevicesWidget::loadTimerFeedbackSettings(Settings* settings, const DeviceId& deviceId) +{ + if (!m_timerFeedbackStrength) { return; } + const QSignalBlocker blocker(m_timerFeedbackStrength); + m_timerFeedbackStrength->setValue( + settings->devicePresentationTimerHapticStrength(deviceId)); +} + +// ------------------------------------------------------------------------------------------------- +void DevicesWidget::updateTimerFeedbackTab(Spotlight* spotlight) +{ + const auto connection = spotlight->deviceConnection(currentDeviceId()); + bool supportsVibration = false; + if (connection) + { + for (const auto& item : connection->subDevices()) + { + const auto& subDevice = item.second; + if (subDevice && subDevice->hasFlags(DeviceFlag::Vibrate)) { + supportsVibration = true; + break; + } + + const auto hidpp = qobject_cast(subDevice.get()); + if (hidpp + && (hidpp->featureSet().featureCodeSupported(HIDPP::FeatureCode::PresenterControl) + || hidpp->featureSet().featureCodeSupported(HIDPP::FeatureCode::Haptic))) { + supportsVibration = true; + break; + } + } + } + + const int tabIndex = m_tabWidget->indexOf(m_timerFeedbackWidget); + if (supportsVibration && tabIndex < 0) { + m_tabWidget->insertTab(1, m_timerFeedbackWidget, tr("Timer Feedback")); + } else if (!supportsVibration && tabIndex >= 0) { + m_tabWidget->removeTab(tabIndex); + } + + if (m_timerFeedbackContext) { m_timerFeedbackContext->deleteLater(); } + if (connection) + { + m_timerFeedbackContext = new QObject(this); + connect(connection.get(), &DeviceConnection::subDeviceFlagsChanged, m_timerFeedbackContext, + [this, spotlight](const DeviceId& id, const QString&) { + if (id == currentDeviceId()) { updateTimerFeedbackTab(spotlight); } + }); + } +} + // ------------------------------------------------------------------------------------------------- QWidget* DevicesWidget::createDeviceInfoWidget(Spotlight* spotlight) { diff --git a/src/deviceswidget.h b/src/deviceswidget.h index 5658d499..1e76ad21 100644 --- a/src/deviceswidget.h +++ b/src/deviceswidget.h @@ -14,6 +14,7 @@ class DeviceConnection; class InputMapper; class QComboBox; +class QSpinBox; class QTabWidget; class QTextEdit; class Settings; @@ -38,11 +39,17 @@ class DevicesWidget : public QWidget void createDeviceComboBox(Spotlight* spotlight); QWidget* createDevicesWidget(Settings* settings, Spotlight* spotlight); QWidget* createInputMapperWidget(Settings* settings, Spotlight* spotlight); + QWidget* createTimerFeedbackWidget(Settings* settings); QWidget* createDeviceInfoWidget(Spotlight* spotlight); + void updateTimerFeedbackTab(Spotlight* spotlight); + void loadTimerFeedbackSettings(Settings* settings, const DeviceId& deviceId); QComboBox* m_devicesCombo = nullptr; QTabWidget* m_tabWidget = nullptr; + QWidget* m_timerFeedbackWidget = nullptr; + QSpinBox* m_timerFeedbackStrength = nullptr; QWidget* m_deviceDetailsTabWidget = nullptr; + QPointer m_timerFeedbackContext; QPointer m_inputMapper; }; diff --git a/src/preferencesdlg.cc b/src/preferencesdlg.cc index 5a5938a3..c22feb15 100644 --- a/src/preferencesdlg.cc +++ b/src/preferencesdlg.cc @@ -77,7 +77,6 @@ PreferencesDialog::PreferencesDialog(Settings* settings, Spotlight* spotlight, tabWidget->addTab(settingsWidget, tr("Spotlight")); m_deviceswidget = new DevicesWidget(settings, spotlight, this); tabWidget->addTab(m_deviceswidget, tr("Devices")); - tabWidget->addTab(createGeneralTabWidget(settings), tr("General")); tabWidget->addTab(createLogTabWidget(), tr("Log")); const auto overlayCheckBox = new QCheckBox(this); @@ -104,38 +103,6 @@ PreferencesDialog::PreferencesDialog(Settings* settings, Spotlight* spotlight, }); } -// ------------------------------------------------------------------------------------------------- -QWidget* PreferencesDialog::createGeneralTabWidget(Settings* settings) -{ - const auto widget = new QWidget(this); - const auto group = new QGroupBox(tr("Presentation timer feedback"), widget); - const auto strengthSpinBox = new QSpinBox(group); - strengthSpinBox->setRange(0, 100); - strengthSpinBox->setSingleStep(5); - strengthSpinBox->setSuffix(tr("%")); - strengthSpinBox->setValue(settings->presentationTimerHapticStrength()); - strengthSpinBox->setToolTip(tr("Set to 0% to disable completion vibration.")); - - connect(strengthSpinBox, static_cast(&QSpinBox::valueChanged), - settings, &Settings::setPresentationTimerHapticStrength); - connect(settings, &Settings::presentationTimerHapticStrengthChanged, - strengthSpinBox, &QSpinBox::setValue); - - const auto groupLayout = new QGridLayout(group); - groupLayout->addWidget(new QLabel(tr("Completion vibration strength"), group), 0, 0); - groupLayout->addWidget(strengthSpinBox, 0, 1); - groupLayout->addWidget( - new QLabel(tr("Vibrates compatible connected presenters when the timer finishes."), group), - 1, 0, 1, 2); - groupLayout->setColumnStretch(1, 1); - - const auto layout = new QVBoxLayout(widget); - layout->addWidget(group); - layout->addStretch(1); - return widget; -} - -// ------------------------------------------------------------------------------------------------- QWidget* PreferencesDialog::createSettingsTabWidget(Settings* settings) { const auto widget = new QWidget(this); diff --git a/src/preferencesdlg.h b/src/preferencesdlg.h index e7de3df2..fdab5d86 100644 --- a/src/preferencesdlg.h +++ b/src/preferencesdlg.h @@ -57,7 +57,6 @@ class PreferencesDialog : public QDialog void resetPresetCombo(); QWidget* createSettingsTabWidget(Settings* settings); - QWidget* createGeneralTabWidget(Settings* settings); QGroupBox* createShapeGroupBox(Settings* settings); QGroupBox* createSpotGroupBox(Settings* settings); QGroupBox* createDotGroupBox(Settings* settings); diff --git a/src/presentationtimer.cc b/src/presentationtimer.cc index a6bff57f..681aa3de 100644 --- a/src/presentationtimer.cc +++ b/src/presentationtimer.cc @@ -22,23 +22,18 @@ PresentationTimer::PresentationTimer(Settings* settings, Spotlight* spotlight, DeviceCommandHelper* deviceCommandHelper, QObject* parent) : QObject(parent) , m_settings(settings) + , m_spotlight(spotlight) , m_deviceCommandHelper(deviceCommandHelper) , m_updateTimer(new QTimer(this)) + , m_enabled(settings->presentationTimerEnabled()) , m_durationSeconds(std::clamp(settings->presentationTimerDurationSeconds(), MinimumDurationSeconds, MaximumDurationSeconds)) , m_remainingSeconds(m_durationSeconds) - , m_hapticStrength(std::clamp(settings->presentationTimerHapticStrength(), 0, 100)) { m_updateTimer->setTimerType(Qt::PreciseTimer); m_updateTimer->setInterval(TimerUpdateIntervalMs); connect(m_updateTimer, &QTimer::timeout, this, &PresentationTimer::updateRemaining); connect(spotlight, &Spotlight::presenterButtonPressed, this, &PresentationTimer::start); - connect(m_settings, &Settings::presentationTimerHapticStrengthChanged, this, - [this](int strength) { - if (m_hapticStrength == strength) { return; } - m_hapticStrength = strength; - emit hapticStrengthChanged(strength); - }); } QString PresentationTimer::stateName() const @@ -51,13 +46,24 @@ QString PresentationTimer::stateName() const return QStringLiteral("idle"); } +void PresentationTimer::setEnabled(bool enabled) +{ + if (m_enabled == enabled) { return; } + m_enabled = enabled; + m_settings->setPresentationTimerEnabled(enabled); + emit enabledChanged(enabled); + if (!enabled) { reset(); } +} + void PresentationTimer::start() { + if (!m_enabled) { return; } if (m_state == State::Idle) { beginCountdown(); } } void PresentationTimer::restart() { + if (!m_enabled) { return; } beginCountdown(); } @@ -79,11 +85,6 @@ void PresentationTimer::setDurationSeconds(int seconds) if (m_state == State::Idle) { setRemainingSeconds(duration); } } -void PresentationTimer::setHapticStrength(int strength) -{ - m_settings->setPresentationTimerHapticStrength(strength); -} - void PresentationTimer::updateRemaining() { if (m_state != State::Running) { return; } @@ -99,10 +100,18 @@ void PresentationTimer::updateRemaining() setRemainingSeconds(0); setState(State::Completed); - if (m_hapticStrength > 0 && m_deviceCommandHelper) { - const auto intensity = static_cast( - std::lround(static_cast(m_hapticStrength) * 255.0 / 100.0)); - m_deviceCommandHelper->sendVibrateCommand(intensity, 0); + if (m_deviceCommandHelper && m_spotlight) + { + for (const auto& device : m_spotlight->connectedDevices()) + { + const int strength = std::clamp( + m_settings->devicePresentationTimerHapticStrength(device.id), 0, 100); + if (strength == 0) { continue; } + + const auto intensity = static_cast( + std::lround(static_cast(strength) * 255.0 / 100.0)); + m_deviceCommandHelper->sendVibrateCommand(device.id, intensity, 0); + } } } diff --git a/src/presentationtimer.h b/src/presentationtimer.h index fb310ede..2d5a6258 100644 --- a/src/presentationtimer.h +++ b/src/presentationtimer.h @@ -24,22 +24,22 @@ class PresentationTimer : public QObject State state() const { return m_state; } QString stateName() const; + bool enabled() const { return m_enabled; } int durationSeconds() const { return m_durationSeconds; } int remainingSeconds() const { return m_remainingSeconds; } - int hapticStrength() const { return m_hapticStrength; } public slots: + void setEnabled(bool enabled); void start(); void restart(); void reset(); void setDurationSeconds(int seconds); - void setHapticStrength(int strength); signals: + void enabledChanged(bool enabled); void stateChanged(PresentationTimer::State state); void durationSecondsChanged(int seconds); void remainingSecondsChanged(int seconds); - void hapticStrengthChanged(int strength); private slots: void updateRemaining(); @@ -52,11 +52,12 @@ private slots: void setRemainingSeconds(int seconds); Settings* const m_settings; + Spotlight* const m_spotlight; DeviceCommandHelper* const m_deviceCommandHelper; QTimer* const m_updateTimer; Clock::time_point m_deadline; + bool m_enabled = false; State m_state = State::Idle; int m_durationSeconds = 15 * 60; int m_remainingSeconds = m_durationSeconds; - int m_hapticStrength = 50; }; diff --git a/src/projecteurcontrol.cc b/src/projecteurcontrol.cc index b48a01a5..771a5aee 100644 --- a/src/projecteurcontrol.cc +++ b/src/projecteurcontrol.cc @@ -55,6 +55,11 @@ ProjecteurControl::ProjecteurControl(ProjecteurApplication* application, Setting emit spotlightActiveChanged(active); emitPropertiesChanged({{QStringLiteral("SpotlightActive"), active}}); }); + connect(m_presentationTimer, &PresentationTimer::enabledChanged, this, + [this](bool enabled) { + emit timerEnabledChanged(enabled); + emitPropertiesChanged({{QStringLiteral("TimerEnabled"), enabled}}); + }); connect(m_presentationTimer, &PresentationTimer::stateChanged, this, [this]() { const auto state = timerState(); emit timerStateChanged(state); @@ -70,12 +75,6 @@ ProjecteurControl::ProjecteurControl(ProjecteurApplication* application, Setting emit timerRemainingSecondsChanged(seconds); emitPropertiesChanged({{QStringLiteral("TimerRemainingSeconds"), seconds}}); }); - connect(m_presentationTimer, &PresentationTimer::hapticStrengthChanged, this, - [this](int strength) { - emit timerHapticStrengthChanged(strength); - emitPropertiesChanged({{QStringLiteral("TimerHapticStrength"), strength}}); - }); - const auto updateConnectedDevices = [this]() { const auto devices = connectedDevices(); emit connectedDevicesChanged(devices); @@ -248,6 +247,11 @@ QStringList ProjecteurControl::presets() const return result; } +bool ProjecteurControl::timerEnabled() const +{ + return m_presentationTimer->enabled(); +} + QString ProjecteurControl::timerState() const { return m_presentationTimer->stateName(); @@ -263,11 +267,6 @@ int ProjecteurControl::timerRemainingSeconds() const return m_presentationTimer->remainingSeconds(); } -int ProjecteurControl::timerHapticStrength() const -{ - return m_presentationTimer->hapticStrength(); -} - void ProjecteurControl::SetOverlayEnabled(bool enabled) { m_settings->setOverlayDisabled(!enabled); @@ -285,6 +284,11 @@ bool ProjecteurControl::LoadPreset(const QString& preset) return true; } +void ProjecteurControl::SetTimerEnabled(bool enabled) +{ + m_presentationTimer->setEnabled(enabled); +} + void ProjecteurControl::StartTimer() { m_presentationTimer->start(); @@ -305,11 +309,6 @@ void ProjecteurControl::SetTimerDurationSeconds(int seconds) m_presentationTimer->setDurationSeconds(seconds); } -void ProjecteurControl::SetTimerHapticStrength(int strength) -{ - m_presentationTimer->setHapticStrength(strength); -} - void ProjecteurControl::ShowPreferences() { m_application->showPreferences(true); diff --git a/src/projecteurcontrol.h b/src/projecteurcontrol.h index 37f29c5f..2ecd99f2 100644 --- a/src/projecteurcontrol.h +++ b/src/projecteurcontrol.h @@ -27,10 +27,10 @@ class ProjecteurControl : public QObject NOTIFY connectedDeviceBatteryStatusesChanged) Q_PROPERTY(QStringList Presets READ presets NOTIFY presetsChanged) Q_PROPERTY(QString CurrentPreset READ currentPreset NOTIFY currentPresetChanged) + Q_PROPERTY(bool TimerEnabled READ timerEnabled NOTIFY timerEnabledChanged) Q_PROPERTY(QString TimerState READ timerState NOTIFY timerStateChanged) Q_PROPERTY(int TimerDurationSeconds READ timerDurationSeconds NOTIFY timerDurationSecondsChanged) Q_PROPERTY(int TimerRemainingSeconds READ timerRemainingSeconds NOTIFY timerRemainingSecondsChanged) - Q_PROPERTY(int TimerHapticStrength READ timerHapticStrength NOTIFY timerHapticStrengthChanged) public: static constexpr auto ServiceName = "org.projecteur.Projecteur"; @@ -51,20 +51,20 @@ class ProjecteurControl : public QObject QStringList connectedDeviceBatteryStatuses() const; QStringList presets() const; QString currentPreset() const { return m_currentPreset; } + bool timerEnabled() const; QString timerState() const; int timerDurationSeconds() const; int timerRemainingSeconds() const; - int timerHapticStrength() const; public slots: void SetOverlayEnabled(bool enabled); void SetSpotlightActive(bool active); bool LoadPreset(const QString& preset); + void SetTimerEnabled(bool enabled); void StartTimer(); void RestartTimer(); void ResetTimer(); void SetTimerDurationSeconds(int seconds); - void SetTimerHapticStrength(int strength); void ShowPreferences(); void ShowAbout(); void Quit(); @@ -77,10 +77,10 @@ public slots: void connectedDeviceBatteryStatusesChanged(const QStringList& statuses); void presetsChanged(const QStringList& presets); void currentPresetChanged(const QString& preset); + void timerEnabledChanged(bool enabled); void timerStateChanged(const QString& state); void timerDurationSecondsChanged(int seconds); void timerRemainingSecondsChanged(int seconds); - void timerHapticStrengthChanged(int strength); private: void clearCurrentPreset(); diff --git a/src/settings.cc b/src/settings.cc index d9aef369..f6b48cab 100644 --- a/src/settings.cc +++ b/src/settings.cc @@ -40,12 +40,14 @@ namespace { constexpr char zoomEnabled[] = "enableZoom"; constexpr char zoomFactor[] = "zoomFactor"; constexpr char multiScreenOverlay[] = "multiScreenOverlay"; + constexpr char presentationTimerEnabled[] = "presentationTimerEnabled"; constexpr char presentationTimerDurationSeconds[] = "presentationTimerDurationSeconds"; - constexpr char presentationTimerHapticStrength[] = "presentationTimerHapticStrength"; // -- device specific constexpr char inputSequenceInterval[] = "inputSequenceInterval"; constexpr char inputMapConfig[] = "inputMapConfig"; + constexpr char presentationTimerHapticStrength[] = "presentationTimerHapticStrength"; + constexpr char legacyVibrationIntensity[] = "vibrationIntensity"; namespace defaultValue { constexpr bool showSpotShade = true; @@ -66,11 +68,12 @@ namespace { constexpr bool zoomEnabled = false; constexpr double zoomFactor = 2.0; constexpr bool multiScreenOverlay = false; + constexpr bool presentationTimerEnabled = false; constexpr int presentationTimerDurationSeconds = 15 * 60; - constexpr int presentationTimerHapticStrength = 50; // -- device specific defaults constexpr int inputSequenceInterval = 250; + constexpr int presentationTimerHapticStrength = 50; } // end namespace defaultValue namespace ranges { @@ -844,37 +847,65 @@ InputMapConfig Settings::getDeviceInputMapConfig(const DeviceId& dId) } // ------------------------------------------------------------------------------------------------- -void Settings::setPresentationTimerDurationSeconds(int seconds) +void Settings::setDevicePresentationTimerHapticStrength(const DeviceId& dId, int strength) { - m_settings->setValue(::settings::presentationTimerDurationSeconds, seconds); + m_settings->setValue( + settingsKey(dId, ::settings::presentationTimerHapticStrength), + std::clamp(strength, 0, 100)); } // ------------------------------------------------------------------------------------------------- -int Settings::presentationTimerDurationSeconds() const +int Settings::devicePresentationTimerHapticStrength(const DeviceId& dId) const { - return m_settings->value( - ::settings::presentationTimerDurationSeconds, - ::settings::defaultValue::presentationTimerDurationSeconds).toInt(); + const auto deviceKey = settingsKey(dId, ::settings::presentationTimerHapticStrength); + if (m_settings->contains(deviceKey)) { + return std::clamp(m_settings->value(deviceKey).toInt(), 0, 100); + } + + const auto legacyDeviceKey = settingsKey(dId, ::settings::legacyVibrationIntensity); + if (m_settings->contains(legacyDeviceKey)) { + const int intensity = std::clamp(m_settings->value(legacyDeviceKey).toInt(), 0, 255); + return (intensity * 100 + 127) / 255; + } + + // Preserve the value from the short-lived global setting as the initial value + // for devices that do not have an older per-device vibration setting. + if (m_settings->contains(::settings::presentationTimerHapticStrength)) { + return std::clamp( + m_settings->value(::settings::presentationTimerHapticStrength).toInt(), 0, 100); + } + + return ::settings::defaultValue::presentationTimerHapticStrength; } // ------------------------------------------------------------------------------------------------- -void Settings::setPresentationTimerHapticStrength(int strength) +void Settings::setPresentationTimerEnabled(bool enabled) { - const int clampedStrength = std::clamp(strength, 0, 100); - if (presentationTimerHapticStrength() == clampedStrength) { return; } - m_settings->setValue(::settings::presentationTimerHapticStrength, clampedStrength); - emit presentationTimerHapticStrengthChanged(clampedStrength); + m_settings->setValue(::settings::presentationTimerEnabled, enabled); } // ------------------------------------------------------------------------------------------------- -int Settings::presentationTimerHapticStrength() const +bool Settings::presentationTimerEnabled() const { return m_settings->value( - ::settings::presentationTimerHapticStrength, - ::settings::defaultValue::presentationTimerHapticStrength).toInt(); + ::settings::presentationTimerEnabled, + ::settings::defaultValue::presentationTimerEnabled).toBool(); +} + +// ------------------------------------------------------------------------------------------------- +void Settings::setPresentationTimerDurationSeconds(int seconds) +{ + m_settings->setValue(::settings::presentationTimerDurationSeconds, seconds); } // ------------------------------------------------------------------------------------------------- +int Settings::presentationTimerDurationSeconds() const +{ + return m_settings->value( + ::settings::presentationTimerDurationSeconds, + ::settings::defaultValue::presentationTimerDurationSeconds).toInt(); +} + // ------------------------------------------------------------------------------------------------- PresetModel::PresetModel(QObject* parent) : PresetModel({}, parent) diff --git a/src/settings.h b/src/settings.h index 2b26b7bb..5583c982 100644 --- a/src/settings.h +++ b/src/settings.h @@ -41,10 +41,6 @@ class Settings : public QObject Q_PROPERTY(double zoomFactor READ zoomFactor WRITE setZoomFactor NOTIFY zoomFactorChanged) Q_PROPERTY(bool multiScreenOverlayEnabled READ multiScreenOverlayEnabled WRITE setMultiScreenOverlayEnabled NOTIFY multiScreenOverlayEnabledChanged) - Q_PROPERTY(int presentationTimerHapticStrength READ presentationTimerHapticStrength - WRITE setPresentationTimerHapticStrength - NOTIFY presentationTimerHapticStrengthChanged) - public: explicit Settings(QObject* parent = nullptr); explicit Settings(const QString& configFile, QObject* parent = nullptr); @@ -174,11 +170,13 @@ class Settings : public QObject int deviceInputSeqInterval(const DeviceId& dId) const; void setDeviceInputMapConfig(const DeviceId& dId, const InputMapConfig& imc); InputMapConfig getDeviceInputMapConfig(const DeviceId& dId); + void setDevicePresentationTimerHapticStrength(const DeviceId& dId, int strength); + int devicePresentationTimerHapticStrength(const DeviceId& dId) const; + void setPresentationTimerEnabled(bool enabled); + bool presentationTimerEnabled() const; void setPresentationTimerDurationSeconds(int seconds); int presentationTimerDurationSeconds() const; - void setPresentationTimerHapticStrength(int strength); - int presentationTimerHapticStrength() const; signals: void showSpotShadeChanged(bool show); @@ -200,7 +198,6 @@ class Settings : public QObject void zoomEnabledChanged(bool enabled); void zoomFactorChanged(double zoomFactor); void multiScreenOverlayEnabledChanged(bool enabled); - void presentationTimerHapticStrengthChanged(int strength); void overlayDisabledChanged(bool disabled); void presetLoaded(const QString& preset); From 788f90976285261a7df83c47063ed921ab424355 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 15:26:24 -0500 Subject: [PATCH 32/67] timer on next present button --- src/presentationtimer.cc | 2 +- src/spotlight.cc | 6 ++---- src/spotlight.h | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/presentationtimer.cc b/src/presentationtimer.cc index 681aa3de..43555594 100644 --- a/src/presentationtimer.cc +++ b/src/presentationtimer.cc @@ -33,7 +33,7 @@ PresentationTimer::PresentationTimer(Settings* settings, Spotlight* spotlight, m_updateTimer->setTimerType(Qt::PreciseTimer); m_updateTimer->setInterval(TimerUpdateIntervalMs); connect(m_updateTimer, &QTimer::timeout, this, &PresentationTimer::updateRemaining); - connect(spotlight, &Spotlight::presenterButtonPressed, this, &PresentationTimer::start); + connect(spotlight, &Spotlight::slideNavigationPressed, this, &PresentationTimer::start); } QString PresentationTimer::stateName() const diff --git a/src/spotlight.cc b/src/spotlight.cc index a03fb1be..f7bdbc54 100644 --- a/src/spotlight.cc +++ b/src/spotlight.cc @@ -397,9 +397,9 @@ void Spotlight::onEventDataAvailable(int fd, SubEventConnection& connection) ++buf; if (ev.type == EV_KEY && ev.value == 1 - && (ev.code == BTN_LEFT || ev.code == KEY_RIGHT || ev.code == KEY_LEFT + && (ev.code == KEY_RIGHT || ev.code == KEY_LEFT || ev.code == KEY_PAGEDOWN || ev.code == KEY_PAGEUP)) { - emit presenterButtonPressed(); + emit slideNavigationPressed(); } if (ev.type == EV_SYN) @@ -411,8 +411,6 @@ void Spotlight::onEventDataAvailable(int fd, SubEventConnection& connection) if (isMouseMoveEvent) { // Skip input mapping for mouse move events completely - if (!spotActive()) { emit presenterButtonPressed(); } - // Note: During a Next or Back button press the Logitech Spotlight device can send // move events via hid++ notifications. It seems that just when releasing the // next or back button sometimes a mouse move event 'leaks' through here as diff --git a/src/spotlight.h b/src/spotlight.h index 5fd08797..9915f1d7 100644 --- a/src/spotlight.h +++ b/src/spotlight.h @@ -55,7 +55,7 @@ class Spotlight : public QObject, public async::Async void subDeviceDisconnected(const DeviceId& id, const QString& name, const QString& path); void anySpotlightDeviceConnectedChanged(bool connected); void spotActiveChanged(bool isActive); - void presenterButtonPressed(); + void slideNavigationPressed(); private: enum class ConnectionResult { CouldNotOpen, NotASpotlightDevice, Connected }; From 007296fa30429bf94505333cc479f18fd3fe1253 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 15:31:44 -0500 Subject: [PATCH 33/67] fix the battery status dissapearing --- src/projecteurcontrol.cc | 16 ++++++++++++++++ src/projecteurcontrol.h | 3 +++ 2 files changed, 19 insertions(+) diff --git a/src/projecteurcontrol.cc b/src/projecteurcontrol.cc index 771a5aee..a22eb34a 100644 --- a/src/projecteurcontrol.cc +++ b/src/projecteurcontrol.cc @@ -88,6 +88,16 @@ ProjecteurControl::ProjecteurControl(ProjecteurApplication* application, Setting watchBatteryConnection(id, path); }); + for (const auto& device : m_spotlight->connectedDevices()) + { + const auto connection = m_spotlight->deviceConnection(device.id); + if (!connection) { continue; } + for (const auto& subDevice : connection->subDevices()) { + watchBatteryConnection(device.id, subDevice.first); + } + } + requestBatteryUpdates(); + auto* batteryTimer = new QTimer(this); batteryTimer->setTimerType(Qt::VeryCoarseTimer); batteryTimer->setInterval(5 * 60 * 1000); @@ -367,6 +377,12 @@ void ProjecteurControl::watchBatteryConnection(const DeviceId& id, const QString const auto subDevice = connection->subDevice(path); const auto hidpp = qobject_cast(subDevice.get()); if (!hidpp) { return; } + if (m_watchedBatteryConnections.contains(hidpp)) { return; } + + m_watchedBatteryConnections.insert(hidpp); + connect(hidpp, &QObject::destroyed, this, [this, hidpp]() { + m_watchedBatteryConnections.remove(hidpp); + }); connect(hidpp, &SubHidppConnection::batteryInfoChanged, this, [this](const HIDPP::BatteryInfo&) { emitBatteryPropertiesChanged(); }); diff --git a/src/projecteurcontrol.h b/src/projecteurcontrol.h index 2ecd99f2..ecfcebc6 100644 --- a/src/projecteurcontrol.h +++ b/src/projecteurcontrol.h @@ -4,6 +4,7 @@ #include #include +#include #include #include @@ -11,6 +12,7 @@ class ProjecteurApplication; class PresentationTimer; class Settings; class Spotlight; +class SubHidppConnection; struct DeviceId; class ProjecteurControl : public QObject @@ -95,6 +97,7 @@ public slots: PresentationTimer* const m_presentationTimer; const bool m_trayVisible; QString m_currentPreset; + QSet m_watchedBatteryConnections; bool m_objectRegistered = false; bool m_serviceRegistered = false; }; From af01809c944ea39a00122871e3501a370c6ef029 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 15:36:57 -0500 Subject: [PATCH 34/67] Dongle support --- 55-projecteur.rules.in | 3 +++ README.md | 5 +++-- src/devicescan.cc | 3 ++- src/spotlight.cc | 1 + 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/55-projecteur.rules.in b/55-projecteur.rules.in index beed87be..53774ab7 100644 --- a/55-projecteur.rules.in +++ b/55-projecteur.rules.in @@ -7,6 +7,9 @@ # Rule for the Logitech Spotlight USB Receiver SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c53e", MODE="0660", TAG+="uaccess" +# Rule for the Logitech Spotlight 2 Logi Bolt USB-C Receiver +SUBSYSTEMS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c548", MODE="0660", TAG+="uaccess" + # Additional supported USB devices @EXTRA_USB_UDEV_RULES@ # Rule fot the Logitech Spotlight when connected via Bluetooth diff --git a/README.md b/README.md index 10455e19..322e9ca0 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,8 @@ with Qt 6.11 and LayerShellQt 6.7. Wayland is the only supported windowing platform; Qt 5 and X11 are outside the scope of this fork. In addition to the hardware supported by the upstream project, this fork adds -support for the **Logitech Spotlight 2 over Bluetooth** (`046d:b506`). +support for the **Logitech Spotlight 2** through its Logi Bolt USB-C receiver +(`046d:c548`) and over Bluetooth (`046d:b506`). This is an independent, unofficial fork. Please report problems specific to this version in the [fork's issue tracker](https://github.com/gbin/Projecteur-kde/issues). @@ -296,7 +297,7 @@ your screen in an online presentation or call. Besides the _Logitech Spotlight_, the following devices are currently supported out of the box: -* Logitech Spotlight 2 via Bluetooth _(046d:b506)_ +* Logitech Spotlight 2 via Logi Bolt USB-C receiver _(046d:c548)_ or Bluetooth _(046d:b506)_ * AVATTO H100 / August WP200 _(0c45:8101)_ * August LP315 _(2312:863d)_ * AVATTO i10 Pro _(2571:4109)_ diff --git a/src/devicescan.cc b/src/devicescan.cc index 9c8948d5..485ddf63 100644 --- a/src/devicescan.cc +++ b/src/devicescan.cc @@ -20,9 +20,10 @@ namespace { // ----------------------------------------------------------------------------------------------- // List of supported devices - const std::array supportedDefaultDevices {{ + const std::array supportedDefaultDevices {{ {0x46d, 0xc53e, false, "Logitech Spotlight (USB)"}, {0x46d, 0xb503, true, "Logitech Spotlight (Bluetooth)"}, + {0x46d, 0xc548, false, "Logitech Spotlight 2 (USB-C receiver)"}, {0x46d, 0xb506, true, "Logitech Spotlight 2 (Bluetooth)"}, }}; diff --git a/src/spotlight.cc b/src/spotlight.cc index f7bdbc54..86d337cd 100644 --- a/src/spotlight.cc +++ b/src/spotlight.cc @@ -419,6 +419,7 @@ void Spotlight::onEventDataAvailable(int fd, SubEventConnection& connection) const bool isLogitechSpotlight = connection.deviceId().vendorId == 0x46d && (connection.deviceId().productId == 0xc53e || connection.deviceId().productId == 0xb503 + || connection.deviceId().productId == 0xc548 || connection.deviceId().productId == 0xb506); const bool logitechIsFirst = isLogitechSpotlight && workaroundLogitechFirstMoveEvent; From dc3ee8ce7aafb32d41a41662f2040063cd779151 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 15:46:17 -0500 Subject: [PATCH 35/67] usb c dongle support for spotlight 2 / couple bugs --- src/device-hidpp.cc | 113 +++++++++++++++++++++++++++++++++----------- src/device-hidpp.h | 5 ++ src/hidpp.cc | 10 ++-- src/hidpp.h | 1 + 4 files changed, 97 insertions(+), 32 deletions(-) diff --git a/src/device-hidpp.cc b/src/device-hidpp.cc index f5624a9f..45d23ce2 100644 --- a/src/device-hidpp.cc +++ b/src/device-hidpp.cc @@ -35,6 +35,10 @@ SubHidppConnection::SubHidppConnection(SubHidrawConnection::Token token, , m_featureSet(this) , m_requestCleanupTimer(new QTimer(this)) { + // A Bolt receiver can have the presenter paired in any of its six slots. + // Other supported connections have historically used slot 1. + m_deviceIndexKnown = id.busType != BusType::Usb || id.productId != 0xc548; + constexpr int cleanUpTimerInterval = 500; m_requestCleanupTimer->setInterval(cleanUpTimerInterval); m_requestCleanupTimer->setSingleShot(false); @@ -152,16 +156,14 @@ void SubHidppConnection::sendRequest(HIDPP::Message msg, RequestResultCallback r } // Device index sanity check - static const std::array validDeviceIndexes { - HIDPP::DeviceIndex::CordedDevice, - HIDPP::DeviceIndex::DefaultDevice, - HIDPP::DeviceIndex::WirelessDevice1, - }; - - const auto deviceIndexIt - = std::find(validDeviceIndexes.cbegin(), validDeviceIndexes.cend(), msg.deviceIndex()); - - if (deviceIndexIt == validDeviceIndexes.cend()) + const auto index = msg.deviceIndex(); + const bool validDeviceIndex = + index == HIDPP::DeviceIndex::CordedDevice + || index == HIDPP::DeviceIndex::DefaultDevice + || (index >= HIDPP::DeviceIndex::WirelessDevice1 + && index <= HIDPP::DeviceIndex::WirelessDevice6); + + if (!validDeviceIndex) { logWarn(hid) << tr("Invalid device index (%1) in message for '%2'") .arg(msg.deviceIndex()).arg(path()); @@ -387,7 +389,7 @@ void SubHidppConnection::sendVibrateCommand(uint8_t intensity, uint8_t length, length = length > 10 ? 10 : length; // length should be between 0 to 10. using namespace HIDPP; - Message vibrateMsg(Message::Type::Long, DeviceIndex::WirelessDevice1, pcIndex, 1, { + Message vibrateMsg(Message::Type::Long, m_deviceIndex, pcIndex, 1, { length, 0xe8, intensity }); @@ -415,7 +417,7 @@ void SubHidppConnection::sendVibrateCommand(uint8_t intensity, uint8_t length, const uint8_t level = enabled ? hapticLevelFromIntensity(intensity) : defaultDisabledLevel; - Message setLevelMsg(Message::Type::Long, DeviceIndex::WirelessDevice1, hapticIndex, 2, { + Message setLevelMsg(Message::Type::Long, m_deviceIndex, hapticIndex, 2, { static_cast(enabled), level }); @@ -427,7 +429,7 @@ void SubHidppConnection::sendVibrateCommand(uint8_t intensity, uint8_t length, return; } - Message playMsg(Message::Type::Long, DeviceIndex::WirelessDevice1, hapticIndex, 4, + Message playMsg(Message::Type::Long, m_deviceIndex, hapticIndex, 4, Message::Data{completedWaveform}); sendRequest(std::move(playMsg), std::move(cb)); })); @@ -452,7 +454,7 @@ void SubHidppConnection::getBatteryLevelStatus( // UNIFIED_BATTERY uses getStatus (function 1). const uint8_t function = batteryStatusIndex != 0 ? 0 : 1; Message batteryReqMsg( - Message::Type::Short, DeviceIndex::WirelessDevice1, batteryIndex, function); + Message::Type::Short, m_deviceIndex, batteryIndex, function); sendRequest(std::move(batteryReqMsg), [cb=std::move(cb), unified=unifiedBatteryIndex != 0 && batteryStatusIndex == 0] (MsgResult res, Message&& msg) mutable @@ -485,7 +487,7 @@ void SubHidppConnection::setPointerSpeed(uint8_t speed, const uint8_t pointerSpeed = 0x10 & speed; sendRequest( - HIDPP::Message(HIDPP::Message::Type::Long, HIDPP::DeviceIndex::WirelessDevice1, + HIDPP::Message(HIDPP::Message::Type::Long, m_deviceIndex, psIndex, 1, HIDPP::Message::Data{pointerSpeed}), std::move(cb) ); @@ -682,7 +684,7 @@ void SubHidppConnection::initFeatures( if (const auto resetFeatureIndex = m_featureSet.featureIndex(FeatureCode::Reset)) { batch.emplace(RequestBatchItem { - Message(Message::Type::Long, DeviceIndex::WirelessDevice1, resetFeatureIndex, 1), + Message(Message::Type::Long, m_deviceIndex, resetFeatureIndex, 1), [resultMap](MsgResult res, Message&& /* msg */) { resultMap->emplace(FeatureCode::Reset, res); } @@ -695,7 +697,7 @@ void SubHidppConnection::initFeatures( if (hasFlags(DeviceFlags::NextHold)) { batch.emplace(RequestBatchItem { - Message(Message::Type::Long, DeviceIndex::WirelessDevice1, contrFeatureIndex, 3, + Message(Message::Type::Long, m_deviceIndex, contrFeatureIndex, 3, Message::Data{0x00, 0xda, 0x33}), [resultMap](MsgResult res, Message&& /* msg */) { resultMap->emplace(FeatureCode::ReprogramControlsV4, res); @@ -706,7 +708,7 @@ void SubHidppConnection::initFeatures( if (hasFlags(DeviceFlags::BackHold)) { batch.emplace(RequestBatchItem { - Message(Message::Type::Long, DeviceIndex::WirelessDevice1, contrFeatureIndex, 3, + Message(Message::Type::Long, m_deviceIndex, contrFeatureIndex, 3, Message::Data{0x00, 0xdc, 0x33}), [resultMap](MsgResult res, Message&& /* msg */) { resultMap->emplace(FeatureCode::ReprogramControlsV4, res); @@ -719,7 +721,7 @@ void SubHidppConnection::initFeatures( { // Reset pointer speed to 0x14 - the device accepts values from 0x10 to 0x19 batch.emplace(RequestBatchItem { - HIDPP::Message(HIDPP::Message::Type::Long, HIDPP::DeviceIndex::WirelessDevice1, + HIDPP::Message(HIDPP::Message::Type::Long, m_deviceIndex, psFeatureIndex, 1, HIDPP::Message::Data{0x14}), [resultMap](MsgResult res, Message&& /* msg */) { resultMap->emplace(FeatureCode::PointerSpeed, res); @@ -853,9 +855,25 @@ void SubHidppConnection::registerForUsbNotifications() registerNotificationCallback(this, HIDPP::Notification::DeviceConnection, makeSafeCallback( [this](HIDPP::Message&& msg) { + const auto notificationDeviceIndex = msg.deviceIndex(); + const auto deviceKind = msg[4] & 0x0f; const bool linkEstablished = !static_cast(msg[4] & (1<<6)); - logDebug(hid) << tr("%1, link established = %2") - .arg(toString(HIDPP::Notification::DeviceConnection)).arg(linkEstablished); + logDebug(hid) << tr("%1, device index = %2, device kind = %3, link established = %4") + .arg(toString(HIDPP::Notification::DeviceConnection)) + .arg(notificationDeviceIndex).arg(deviceKind).arg(linkEstablished); + + if (!m_deviceIndexKnown && deviceKind == 0x04) + { + m_deviceIndex = notificationDeviceIndex; + m_deviceIndexKnown = true; + logInfo(hid) << tr("Found presenter in Bolt receiver slot %1.").arg(m_deviceIndex); + } + + // A Bolt receiver can carry several devices. Ignore notifications that do + // not belong to the presenter selected above. + if (!m_deviceIndexKnown || notificationDeviceIndex != m_deviceIndex) { + return; + } if (!linkEstablished) { if (m_presenterState == PresenterState::Initialized_Online) { @@ -889,10 +907,13 @@ void SubHidppConnection::subDeviceInit() initReceiver(makeSafeCallback([this](ReceiverState rs) { Q_UNUSED(rs); - // Independent of the receiver init result, try to initialize the - // presenter device HID++ features and more - checkAndUpdatePresenterState(makeSafeCallback([](PresenterState /* ps */) { - //... + // Independent of the receiver init result, find the presenter slot and + // initialize the device HID++ features. + findPresenterDeviceIndex(HIDPP::DeviceIndex::WirelessDevice1, + makeSafeCallback([this](bool /* found */) { + checkAndUpdatePresenterState(makeSafeCallback([](PresenterState /* ps */) { + //... + })); })); })); } @@ -933,13 +954,51 @@ const HIDPP::BatteryInfo& SubHidppConnection::batteryInfo() const { // ------------------------------------------------------------------------------------------------- void SubHidppConnection::sendPing(RequestResultCallback cb) +{ + sendPing(m_deviceIndex, std::move(cb)); +} + +// ------------------------------------------------------------------------------------------------- +void SubHidppConnection::sendPing(uint8_t deviceIndex, RequestResultCallback cb) { using namespace HIDPP; - // Ping wireless device 1 - same as requesting protocol version - Message pingMsg(Message::Type::Short, DeviceIndex::WirelessDevice1, 0, 1, getRandomPingPayload()); + // A HID++ root ping also returns the device protocol version. + Message pingMsg(Message::Type::Short, deviceIndex, 0, 1, getRandomPingPayload()); sendRequest(std::move(pingMsg), std::move(cb)); } +// ------------------------------------------------------------------------------------------------- +void SubHidppConnection::findPresenterDeviceIndex(uint8_t candidate, + std::function cb) +{ + if (m_deviceIndexKnown) + { + if (cb) { cb(true); } + return; + } + + if (candidate > HIDPP::DeviceIndex::WirelessDevice6) + { + if (cb) { cb(false); } + return; + } + + sendPing(candidate, makeSafeCallback( + [this, candidate, cb=std::move(cb)](MsgResult result, HIDPP::Message&& /* msg */) mutable + { + if (result == MsgResult::Ok) + { + m_deviceIndex = candidate; + m_deviceIndexKnown = true; + logInfo(hid) << tr("Found HID++ device in Bolt receiver slot %1.").arg(m_deviceIndex); + if (cb) { cb(true); } + return; + } + + findPresenterDeviceIndex(candidate + 1, std::move(cb)); + })); +} + // ------------------------------------------------------------------------------------------------- void SubHidppConnection::getProtocolVersion(std::function cb) diff --git a/src/device-hidpp.h b/src/device-hidpp.h index bf9791c8..c8c5bd3b 100644 --- a/src/device-hidpp.h +++ b/src/device-hidpp.h @@ -41,6 +41,7 @@ class SubHidppConnection : public SubHidrawConnection, public HidppConnectionInt // --- HidppConnectionInterface implementation: BusType busType() const override { return m_details.deviceId.busType; } + uint8_t deviceIndex() const override { return m_deviceIndex; } ssize_t sendData(std::vector msg) override; ssize_t sendData(HIDPP::Message msg) override; void sendData(std::vector msg, SendResultCallback resultCb) override; @@ -106,6 +107,8 @@ class SubHidppConnection : public SubHidrawConnection, public HidppConnectionInt void checkAndUpdatePresenterState(std::function cb); void clearTimedOutRequests(); + void findPresenterDeviceIndex(uint8_t candidate, std::function cb); + void sendPing(uint8_t deviceIndex, RequestResultCallback cb); void sendDataBatch(DataBatch dataBatch, DataBatchResultCallback cb, bool continueOnError, std::vector results); @@ -115,6 +118,8 @@ class SubHidppConnection : public SubHidrawConnection, public HidppConnectionInt HIDPP::FeatureSet m_featureSet; HIDPP::ProtocolVersion m_protocolVersion; HIDPP::BatteryInfo m_batteryInfo; + uint8_t m_deviceIndex = HIDPP::DeviceIndex::WirelessDevice1; + bool m_deviceIndexKnown = true; ReceiverState m_receiverState = ReceiverState::Uninitialized; PresenterState m_presenterState = PresenterState::Uninitialized; diff --git a/src/hidpp.cc b/src/hidpp.cc index ad3401e3..0e93058f 100644 --- a/src/hidpp.cc +++ b/src/hidpp.cc @@ -367,7 +367,7 @@ void FeatureSet::getFeatureIndex(FeatureCode fc, std::function(to_integral(fc) >> 8); const auto fcMSB = static_cast(to_integral(fc) & 0x00ff); - Message featureIndexReqMsg(Message::Type::Long, DeviceIndex::WirelessDevice1, + Message featureIndexReqMsg(Message::Type::Long, m_connection->deviceIndex(), Message::Data{fcLSB, fcMSB}); m_connection->sendRequest(std::move(featureIndexReqMsg), @@ -392,7 +392,7 @@ void FeatureSet::getFeatureCount(std::functiondeviceIndex(), featureIndex); m_connection->sendRequest(std::move(featureCountReqMsg), [featureIndex, cb=std::move(cb)](MsgResult result, Message&& msg) { @@ -413,7 +413,7 @@ void FeatureSet::getFirmwareCount(std::functiondeviceIndex(), featureIndex); m_connection->sendRequest(std::move(fwCountReqMsg), [featureIndex, cb=std::move(cb)](MsgResult result, Message&& msg) @@ -435,7 +435,7 @@ void FeatureSet::getFirmwareInfo(uint8_t fwIndex, uint8_t entity, return; } - Message fwVerReqMessage(Message::Type::Long, DeviceIndex::WirelessDevice1, fwIndex, 1, + Message fwVerReqMessage(Message::Type::Long, m_connection->deviceIndex(), fwIndex, 1, Message::Data{entity}); m_connection->sendRequest(std::move(fwVerReqMessage), @@ -601,7 +601,7 @@ void FeatureSet::getFeatureIds(uint8_t featureSetIndex, uint8_t count, for (uint8_t featureIndex = 1; featureIndex <= count; ++featureIndex) { batch.emplace(HidppConnectionInterface::RequestBatchItem { - Message(Message::Type::Long, DeviceIndex::WirelessDevice1, featureSetIndex, 1, + Message(Message::Type::Long, m_connection->deviceIndex(), featureSetIndex, 1, Message::Data{featureIndex}), [featureTable, featureIndex](MsgResult res, Message&& msg) { diff --git a/src/hidpp.h b/src/hidpp.h index f1f0e9c9..76141a88 100644 --- a/src/hidpp.h +++ b/src/hidpp.h @@ -249,6 +249,7 @@ class HidppConnectionInterface using RequestResultCallback = std::function; virtual BusType busType() const = 0; + virtual uint8_t deviceIndex() const = 0; // --- synchronous versions virtual ssize_t sendData(std::vector msg) = 0; From 419f65ffecaacabff1d10fa585ae30e6815be497 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 16:52:54 -0500 Subject: [PATCH 36/67] KDE migration part 2 this moves to kde config, kdbus, move kde friendly process management. --- .github/workflows/ci-build.yml | 2 +- CMakeLists.txt | 38 +- Justfile | 2 + README.md | 6 +- cmake/modules/PkgDependenciesProjecteur.cmake | 2 + cmake/templates/projecteur.desktop.in | 1 + cmake/templates/projecteur.metainfo.xml | 11 +- docker/Dockerfile.archlinux | 5 + packaging/arch/PKGBUILD | 2 + plasma/projecteurapplet.cc | 2 +- src/hidpp.cc | 108 +++-- src/main.cc | 61 +-- src/projecteurapp.cc | 176 ++------ src/projecteurapp.h | 26 +- src/projecteurconfig.kcfg | 87 ++++ src/projecteurcontrol.cc | 24 +- src/projecteurcontrol.h | 8 +- src/runguard.cc | 71 ---- src/runguard.h | 25 -- src/settings.cc | 380 ++++++++++++------ src/settings.h | 14 +- 21 files changed, 570 insertions(+), 481 deletions(-) create mode 100644 src/projecteurconfig.kcfg delete mode 100644 src/runguard.cc delete mode 100644 src/runguard.h diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 1455ac15..7db18240 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -16,7 +16,7 @@ jobs: - name: Install build dependencies run: >- pacman -Syu --noconfirm - base-devel cmake extra-cmake-modules git kcoreaddons layer-shell-qt libplasma + base-devel cmake extra-cmake-modules git kconfig kcoreaddons kdbusaddons layer-shell-qt libplasma qt6-base qt6-declarative qt6-tools - uses: actions/checkout@v4 diff --git a/CMakeLists.txt b/CMakeLists.txt index 9bec7f5e..040e927b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) find_package(Qt6 6.11 REQUIRED COMPONENTS Core DBus Gui LinguistTools Quick Widgets) -find_package(KF6 6.7 REQUIRED COMPONENTS Config CoreAddons Package KirigamiPlatform WindowSystem) +find_package(KF6 6.7 REQUIRED COMPONENTS Config CoreAddons DBusAddons Package KirigamiPlatform WindowSystem) find_package(Plasma 6.7 REQUIRED) find_package(LayerShellQt 6.7 REQUIRED) set(QT_PACKAGE_NAME Qt6) @@ -58,17 +58,26 @@ add_executable(projecteur src/presentationtimer.cc src/presentationtimer.h src/projecteurapp.cc src/projecteurapp.h src/projecteurcontrol.cc src/projecteurcontrol.h - src/runguard.cc src/runguard.h src/settings.cc src/settings.h src/spotlight.cc src/spotlight.h src/spotshapes.cc src/spotshapes.h src/virtualdevice.cc src/virtualdevice.h ${RESOURCES}) -target_include_directories(projecteur PRIVATE src) +kconfig_target_kcfg_file(projecteur + FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/projecteurconfig.kcfg" + CLASS_NAME ProjecteurConfig + MUTATORS + DEFAULT_VALUE_GETTERS + KCONFIG_CONSTRUCTOR +) + +target_include_directories(projecteur PRIVATE src "${CMAKE_CURRENT_BINARY_DIR}") target_link_libraries(projecteur - PRIVATE Qt6::Core Qt6::DBus Qt6::Quick Qt6::Widgets LayerShellQt::Interface + PRIVATE Qt6::Core Qt6::DBus Qt6::Quick Qt6::Widgets + KF6::ConfigCore KF6::ConfigGui KF6::CoreAddons KF6::DBusAddons + LayerShellQt::Interface ) target_compile_options(projecteur @@ -110,7 +119,8 @@ add_translation_update_task("projecteur" "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_ # Add target with non-source files for convenience when using IDEs like QtCreator and others add_custom_target(non-sources SOURCES README.md LICENSE.md doc/CHANGELOG.md devices.conf - src/extra-devices.cc.in 55-projecteur.rules.in + src/extra-devices.cc.in src/projecteurconfig.kcfg + 55-projecteur.rules.in cmake/templates/projecteur.desktop.in) # Install @@ -201,8 +211,16 @@ get_target_property(VERSION_STRING projecteur VERSION_STRING) get_target_property(VERSION_DATE_MONTH_YEAR projecteur VERSION_DATE_MONTH_YEAR) set(HOMEPAGE "https://github.com/gbin/Projecteur-kde") -configure_file("${TMPLDIR}/projecteur.desktop.in" "projecteur.desktop" @ONLY) -install(FILES "${OUTDIR}/projecteur.desktop" DESTINATION share/applications/) +set(PROJECTEUR_APPLICATION_ID "org.projecteur.Projecteur") +configure_file("${TMPLDIR}/projecteur.desktop.in" + "${PROJECTEUR_APPLICATION_ID}.desktop" @ONLY) +install(FILES "${OUTDIR}/${PROJECTEUR_APPLICATION_ID}.desktop" + DESTINATION share/applications/) +kdbusaddons_generate_dbus_service_file( + projecteur + "${PROJECTEUR_APPLICATION_ID}" + "${KDE_INSTALL_FULL_BINDIR}" +) # Configure man page and gzip it. option(COMPRESS_MAN_PAGE "Compress the man page" ON) @@ -221,8 +239,10 @@ else() install(FILES "${OUTDIR}/projecteur.1" DESTINATION share/man/man1/) endif() -configure_file("${TMPLDIR}/projecteur.metainfo.xml" "projecteur.metainfo.xml" @ONLY) -install(FILES "${OUTDIR}/projecteur.metainfo.xml" DESTINATION share/metainfo/) +configure_file("${TMPLDIR}/projecteur.metainfo.xml" + "${PROJECTEUR_APPLICATION_ID}.metainfo.xml" @ONLY) +install(FILES "${OUTDIR}/${PROJECTEUR_APPLICATION_ID}.metainfo.xml" + DESTINATION share/metainfo/) configure_file("${TMPLDIR}/projecteur.bash-completion" "projecteur.bash-completion" @ONLY) install(FILES "${OUTDIR}/projecteur.bash-completion" diff --git a/Justfile b/Justfile index 6d9dee10..5c62189f 100644 --- a/Justfile +++ b/Justfile @@ -114,7 +114,9 @@ deps: _require-arch cmake extra-cmake-modules git + kconfig kcoreaddons + kdbusaddons layer-shell-qt libplasma libglvnd diff --git a/README.md b/README.md index 322e9ca0..dc1d076a 100644 --- a/README.md +++ b/README.md @@ -159,7 +159,7 @@ and Hold Move actions for the same button. * C++17 compiler * CMake 3.20 or later * Qt 6.11 with Core, DBus, Gui, LinguistTools, Quick, and Widgets -* KDE Plasma 6.7 Wayland, including Libplasma and KCoreAddons +* KDE Plasma 6.7 Wayland, including Libplasma, KConfig, KCoreAddons, and KDBusAddons * LayerShellQt 6.7 * Extra CMake Modules 6.7 or later @@ -191,12 +191,14 @@ Projecteur instance, compiles, packages and installs the current tree, then restarts `plasma-plasmashell.service`. Installing is required for zoom: KWin authorizes the screenshot interface by matching -the running executable with the installed `projecteur.desktop` metadata. A binary run +the running executable with the installed `org.projecteur.Projecteur.desktop` metadata. A binary run directly from the build directory can use the normal spotlight, but KWin will reject its zoom capture request. ## Installation/Running +Projecteur stores its KDE configuration in `~/.config/projecteurrc`. + ### Pre-requisites #### When building Projecteur yourself diff --git a/cmake/modules/PkgDependenciesProjecteur.cmake b/cmake/modules/PkgDependenciesProjecteur.cmake index df4fc79c..a2f6f460 100644 --- a/cmake/modules/PkgDependenciesProjecteur.cmake +++ b/cmake/modules/PkgDependenciesProjecteur.cmake @@ -2,7 +2,9 @@ list(APPEND _PkgDeps_Projecteur_archlinux "qt6-base>=6.11" "qt6-declarative>=6.11" "layer-shell-qt>=6.7" + "kconfig>=6.7" "kcoreaddons>=6.7" + "kdbusaddons>=6.7" "libplasma>=6.7" "udev" ) diff --git a/cmake/templates/projecteur.desktop.in b/cmake/templates/projecteur.desktop.in index 2dad931f..e7cac718 100644 --- a/cmake/templates/projecteur.desktop.in +++ b/cmake/templates/projecteur.desktop.in @@ -6,5 +6,6 @@ GenericName=Wayland spotlight for Logitech presenter devices Icon=projecteur Terminal=false StartupNotify=false +DBusActivatable=true Categories=Office;Presentation; X-KDE-DBUS-Restricted-Interfaces=org.kde.KWin.ScreenShot2 diff --git a/cmake/templates/projecteur.metainfo.xml b/cmake/templates/projecteur.metainfo.xml index c8293939..471cbcd0 100644 --- a/cmake/templates/projecteur.metainfo.xml +++ b/cmake/templates/projecteur.metainfo.xml @@ -1,14 +1,14 @@ - io.github.jahnf.Projecteur + org.projecteur.Projecteur FSFAP MIT Projecteur

Virtual pointer for the Logitech Spotlight device - - Jahn Fuchs + + Guillaume Binet and Projecteur contributors - projecteur.desktop + org.projecteur.Projecteur.desktop @HOMEPAGE@ @@ -24,11 +24,12 @@ usb:v046DpC53Ed* + usb:v046DpC548d* Highlight virtual pointer effect - https://raw.githubusercontent.com/jahnf/Projecteur/develop/doc/screenshot-spot.png + https://raw.githubusercontent.com/gbin/Projecteur-kde/develop/doc/screenshot-spot.png diff --git a/docker/Dockerfile.archlinux b/docker/Dockerfile.archlinux index 1ab88380..7a7b41a2 100644 --- a/docker/Dockerfile.archlinux +++ b/docker/Dockerfile.archlinux @@ -18,6 +18,11 @@ RUN pacman --noconfirm -Sy && pacman --noconfirm -S \ qt6-tools \ qt6-base \ qt6-declarative \ + extra-cmake-modules \ + kconfig \ + kcoreaddons \ + kdbusaddons \ + libplasma \ layer-shell-qt RUN pacman --noconfirm -Sy && pacman --noconfirm -S \ diff --git a/packaging/arch/PKGBUILD b/packaging/arch/PKGBUILD index 75313d7a..04bfaeee 100644 --- a/packaging/arch/PKGBUILD +++ b/packaging/arch/PKGBUILD @@ -13,7 +13,9 @@ license=('MIT') depends=( 'gcc-libs' 'glibc' + 'kconfig>=6.7' 'kcoreaddons>=6.7' + 'kdbusaddons>=6.7' 'layer-shell-qt>=6.7' 'libplasma>=6.7' 'libglvnd' diff --git a/plasma/projecteurapplet.cc b/plasma/projecteurapplet.cc index 8d9dda5a..5ca8b822 100644 --- a/plasma/projecteurapplet.cc +++ b/plasma/projecteurapplet.cc @@ -15,7 +15,7 @@ namespace { constexpr auto serviceName = "org.projecteur.Projecteur"; -constexpr auto objectPath = "/org/projecteur/Projecteur"; +constexpr auto objectPath = "/org/projecteur/Projecteur/Control"; constexpr auto interfaceName = "org.projecteur.Projecteur"; } diff --git a/src/hidpp.cc b/src/hidpp.cc index 0e93058f..5a97c032 100644 --- a/src/hidpp.cc +++ b/src/hidpp.cc @@ -11,10 +11,10 @@ #include #include +#include + #include -#include -#include -#include +#include DECLARE_LOGGING_CATEGORY(hid) @@ -23,9 +23,8 @@ namespace { && qRegisterMetaType(); // ----------------------------------------------------------------------------------------------- - constexpr char featureSetFilename[] = "DeviceFeatureSet.conf"; - constexpr char firmwareKey[] = "firmwareVersion"; - constexpr char featureTableKey[] = "featureTable"; + constexpr quint32 featureSetCacheFormatVersion = 1; + constexpr unsigned featureSetCacheSize = 1024 * 1024; // ----------------------------------------------------------------------------------------------- namespace Defaults { @@ -74,9 +73,56 @@ namespace { } // ----------------------------------------------------------------------------------------------- - QString settingsKey(const DeviceId& dId, const QString& key) { - return QString("Device_%1_%2/%3") - .arg(logging::hexId(dId.vendorId), logging::hexId(dId.productId), key); + QString featureSetCacheKey(const DeviceId& dId) { + return QString("Device_%1_%2") + .arg(logging::hexId(dId.vendorId), logging::hexId(dId.productId)); + } + + // ----------------------------------------------------------------------------------------------- + KSharedDataCache& featureSetCache() + { + static KSharedDataCache cache( + QStringLiteral("projecteur-hidpp-features"), featureSetCacheSize); + return cache; + } + + // ----------------------------------------------------------------------------------------------- + bool loadCachedFeatureSet(const DeviceId& dId, const HIDPP::FirmwareInfo& firmware, + HIDPP::FeatureSet::FeatureTable& featureTable) + { + QByteArray data; + if (!featureSetCache().find(featureSetCacheKey(dId), &data)) { + return false; + } + + QDataStream stream(data); + stream.setVersion(QDataStream::Qt_6_0); + + quint32 formatVersion = 0; + HIDPP::FirmwareInfo cachedFirmware; + HIDPP::FeatureSet::FeatureTable cachedFeatureTable; + stream >> formatVersion >> cachedFirmware >> cachedFeatureTable; + if (stream.status() != QDataStream::Ok + || formatVersion != featureSetCacheFormatVersion + || !(cachedFirmware == firmware)) { + return false; + } + + featureTable = std::move(cachedFeatureTable); + return true; + } + + // ----------------------------------------------------------------------------------------------- + void cacheFeatureSet(const DeviceId& dId, const HIDPP::FirmwareInfo& firmware, + const HIDPP::FeatureSet::FeatureTable& featureTable) + { + QByteArray data; + QDataStream stream(&data, QIODevice::WriteOnly); + stream.setVersion(QDataStream::Qt_6_0); + stream << featureSetCacheFormatVersion << firmware << featureTable; + if (stream.status() == QDataStream::Ok) { + featureSetCache().insert(featureSetCacheKey(dId), data); + } } } // end anonymous namespace @@ -508,31 +554,15 @@ void FeatureSet::initFromDevice(DeviceId dId, std::function cb) m_mainFirmwareInfo = std::move(fi); } - // --- Try to load feature set from cache file - const auto cacheFile = QStandardPaths::locate( - QStandardPaths::StandardLocation::AppLocalDataLocation, featureSetFilename); - - if (!cacheFile.isEmpty() && res == MsgResult::Ok && m_mainFirmwareInfo.isValid()) + // --- Try to load the feature set from the KDE shared data cache. + if (res == MsgResult::Ok && m_mainFirmwareInfo.isValid() + && loadCachedFeatureSet(dId, m_mainFirmwareInfo, m_featureTable)) { - // load feature set and return - QSettings settings(cacheFile, QSettings::NativeFormat); - const auto fw = settings.value(settingsKey(dId, firmwareKey)); - if (fw.canConvert()) - { - auto cacheFirmwareInfo = fw.value(); - if (cacheFirmwareInfo == m_mainFirmwareInfo) - { - const auto table = settings.value(settingsKey(dId, featureTableKey)); - if (table.canConvert()) - { - m_featureTable = table.value(); - logDebug(hid) << tr("Loaded feature set with %1 entries from local cache").arg(m_featureTable.size()); - setState(State::Initialized); - if (cb) { cb(m_state); } - return; - } - } - } + logDebug(hid) + << tr("Loaded feature set with %1 entries from local cache").arg(m_featureTable.size()); + setState(State::Initialized); + if (cb) { cb(m_state); } + return; } getFeatureCount(makeSafeCallback( @@ -559,16 +589,8 @@ void FeatureSet::initFromDevice(DeviceId dId, std::function cb) m_featureTable = std::move(ft); setState(State::Initialized); - // Store feature table in cache file - const auto dataPath = QStandardPaths::writableLocation( - QStandardPaths::StandardLocation::AppLocalDataLocation); - - if (!dataPath.isEmpty() && m_mainFirmwareInfo.isValid()) - { - const auto cacheFile = QDir(dataPath).filePath(featureSetFilename); - QSettings settings(cacheFile, QSettings::NativeFormat); - settings.setValue(settingsKey(dId, firmwareKey), QVariant::fromValue(m_mainFirmwareInfo)); - settings.setValue(settingsKey(dId, featureTableKey), QVariant::fromValue(m_featureTable)); + if (m_mainFirmwareInfo.isValid()) { + cacheFeatureSet(dId, m_mainFirmwareInfo, m_featureTable); } } diff --git a/src/main.cc b/src/main.cc index 52f4f0af..8a67ce34 100644 --- a/src/main.cc +++ b/src/main.cc @@ -5,9 +5,10 @@ #include "projecteur-GitVersion.h" #include "logging.h" -#include "runguard.h" #include "settings.h" +#include + #include #ifndef NDEBUG @@ -21,11 +22,8 @@ #define XSTRINGIFY(s) STRINGIFY(s) #define STRINGIFY(x) #x -LOGGING_CATEGORY(appMain, "main") - namespace { // ----------------------------------------------------------------------------------------------- - constexpr int PROJECTEUR_ERROR_ANOTHER_INST_RUNNING = 42; constexpr int PROJECTEUR_ERROR_NO_INSTANCE_FOUND = 43; constexpr int PROJECTEUR_ERROR_EMPTY_COMMAND_PROPS = 44; @@ -337,9 +335,10 @@ namespace { int main(int argc, char *argv[]) { QCoreApplication::setApplicationName("Projecteur"); + QCoreApplication::setOrganizationDomain("projecteur.org"); QCoreApplication::setApplicationVersion(projecteur::version_string()); + QGuiApplication::setDesktopFileName(QStringLiteral("org.projecteur.Projecteur")); ProjecteurApplication::Options options; - QStringList ipcCommands; { ProjecteurCmdLineParser parser; parser.processArgs(argc, argv); @@ -371,13 +370,13 @@ int main(int argc, char *argv[]) // Check and trim ipc commands if set if (parser.commandOptionSet()) { - ipcCommands = parser.commandOptionValues(); - for (auto& value : ipcCommands) { + options.commands = parser.commandOptionValues(); + for (auto& value : options.commands) { value = value.trimmed(); } - ipcCommands.removeAll(""); + options.commands.removeAll(""); - if (ipcCommands.isEmpty()) { + if (options.commands.isEmpty()) { error() << Main::tr("Command/Properties cannot be an empty string."); return PROJECTEUR_ERROR_EMPTY_COMMAND_PROPS; } @@ -403,26 +402,38 @@ int main(int argc, char *argv[]) } } - RunGuard guard(QCoreApplication::applicationName()); - if (!guard.tryToRun()) - { - if (ipcCommands.size() > 0) { - return ProjecteurCommandClientApp(ipcCommands, argc, argv).exec(); + ProjecteurApplication app(argc, argv, options); + if (!app.isPrimaryInstance()) { + if (app.startupExitCode() == PROJECTEUR_ERROR_NO_INSTANCE_FOUND) { + error() << Main::tr("Cannot send commands '%1' - no running application instance found.") + .arg(options.commands.join("; ")); } - error() << Main::tr("Another application instance is already running. Exiting."); - return PROJECTEUR_ERROR_ANOTHER_INST_RUNNING; + return app.startupExitCode(); } - if (ipcCommands.size() > 0) - { - // No other application instance running - but command option was used. - logInfo(appMain) << Main::tr("Cannot send commands '%1' - no running application instance found.").arg(ipcCommands.join("; ")); - logWarning(appMain) << Main::tr("Cannot send commands '%1' - no running application instance found.").arg(ipcCommands.join("; ")); - error() << Main::tr("Cannot send commands '%1' - no running application instance found.").arg(ipcCommands.join("; ")); - return PROJECTEUR_ERROR_NO_INSTANCE_FOUND; - } + QObject::connect(app.dbusService(), &KDBusService::activateRequested, &app, + [&app](const QStringList& arguments, const QString& /*workingDirectory*/) { + QStringList commands; + bool showPreferences = false; + for (qsizetype i = 1; i < arguments.size(); ++i) { + const auto& argument = arguments[i]; + if ((argument == QStringLiteral("-c") || argument == QStringLiteral("--command")) + && i + 1 < arguments.size()) { + commands.push_back(arguments[++i].trimmed()); + } else if (argument.startsWith(QStringLiteral("--command="))) { + commands.push_back(argument.mid(QStringLiteral("--command=").size()).trimmed()); + } else if (argument == QStringLiteral("--show-dialog")) { + showPreferences = true; + } + } + commands.removeAll(QString()); + if (!commands.isEmpty()) { + app.applyCommands(commands); + } else if (showPreferences) { + app.activate(); + } + }); - ProjecteurApplication app(argc, argv, options); signal(SIGINT, ctrl_c_signal_handler); return app.exec(); } diff --git a/src/projecteurapp.cc b/src/projecteurapp.cc index 39713804..e411d1a1 100644 --- a/src/projecteurapp.cc +++ b/src/projecteurapp.cc @@ -14,11 +14,10 @@ #include "settings.h" #include "spotlight.h" +#include #include #include -#include -#include #include #include #include @@ -30,21 +29,31 @@ #include LOGGING_CATEGORY(mainapp, "mainapp") -LOGGING_CATEGORY(cmdclient, "cmdclient") LOGGING_CATEGORY(cmdserver, "cmdserver") -namespace { - QString localServerName() { - return QCoreApplication::applicationName() + "_local_socket"; - } -} // end anonymous namespace - // ------------------------------------------------------------------------------------------------- ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Options& options) : QApplication(argc, argv) - , m_localServer(new QLocalServer(this)) - , m_linuxDesktop(new LinuxDesktop(this)) { + m_dbusService = new KDBusService( + KDBusService::Unique | KDBusService::NoExitOnFailure, this); + if (!m_dbusService->isRegistered()) { + return; + } + m_primaryInstance = true; + + if (!options.commands.isEmpty()) { + const auto commands = options.commands.join(QStringLiteral("; ")); + logWarning(mainapp) + << tr("Cannot send commands '%1' - no running application instance found.").arg(commands); + m_startupExitCode = 43; + m_dbusService->unregister(); + m_primaryInstance = false; + return; + } + + m_linuxDesktop = new LinuxDesktop(this); + if (screens().empty()) { const auto title = tr("No Screens detected"); @@ -147,56 +156,12 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio // Setup the spotlight connections. setupSpotlight(); - - // Open local server for local IPC commands, e.g. from other command line instances - QLocalServer::removeServer(localServerName()); - if (m_localServer->listen(localServerName())) - { - connect(m_localServer, &QLocalServer::newConnection, this, [this]() - { - while(QLocalSocket *clientConnection = m_localServer->nextPendingConnection()) - { - connect(clientConnection, &QLocalSocket::readyRead, this, [this, clientConnection]() { - this->readCommand(clientConnection); - }); - connect(clientConnection, &QLocalSocket::disconnected, this, [this, clientConnection]() { - const auto it = m_commandConnections.find(clientConnection); - if (it != m_commandConnections.end()) - { - quint32& commandSize = it->second; - while (clientConnection->bytesAvailable() && commandSize <= clientConnection->bytesAvailable()) { - this->readCommand(clientConnection); - } - m_commandConnections.erase(it); - } - clientConnection->close(); - clientConnection->deleteLater(); - }); - - // Timeout timer - if after 5 seconds the connection is still open just disconnect... - const auto clientConnPtr = QPointer(clientConnection); - QTimer::singleShot(5000, clientConnection, [clientConnPtr](){ - if (clientConnPtr) { - // time out - clientConnPtr->disconnectFromServer(); - } - }); - - m_commandConnections.emplace(clientConnection, 0); - } - }); - } - else - { - logError(cmdserver) << tr("Error starting local socket for inter-process communication."); - } } // ------------------------------------------------------------------------------------------------- ProjecteurApplication::~ProjecteurApplication() { - if (m_control) { m_control->unregisterService(); } - if (m_localServer) { m_localServer->close(); } + if (m_control) { m_control->unregisterObject(); } for (const auto window : m_overlayWindows) { delete window; } m_overlayWindows.clear(); m_screenWindowMap.clear(); @@ -270,8 +235,8 @@ void ProjecteurApplication::setupControlService(Options const& options) { m_control = new ProjecteurControl(this, m_settings, m_spotlight, m_presentationTimer, !options.hideSysTrayIcon); - if (!m_control->registerService()) { - logError(mainapp) << tr("Could not register the Projecteur session D-Bus service."); + if (!m_control->registerObject()) { + logError(mainapp) << tr("Could not register the Projecteur D-Bus control object."); } } @@ -491,37 +456,27 @@ void ProjecteurApplication::setCurrentCursorPos(const QPoint& pos) } // ------------------------------------------------------------------------------------------------- -void ProjecteurApplication::readCommand(QLocalSocket* clientConnection) +void ProjecteurApplication::activate() { - auto it = m_commandConnections.find(clientConnection); - if (it == m_commandConnections.end()) { - return; + if (m_dialog) { + showPreferences(true); } +} - quint32& commandSize = it->second; - - // Read size of command (always quint32) if not already done. - if (commandSize == 0) { - if (clientConnection->bytesAvailable() < static_cast(sizeof(quint32))) { - return; - } - - QDataStream in(clientConnection); - in >> commandSize; - - if (commandSize > 256) - { - logWarning(cmdserver) << tr("Received invalid command size (%1)").arg(commandSize); - clientConnection->disconnectFromServer(); - return ; +// ------------------------------------------------------------------------------------------------- +void ProjecteurApplication::applyCommands(const QStringList& commands) +{ + for (const auto& command : commands) { + const auto trimmedCommand = command.trimmed(); + if (!trimmedCommand.isEmpty()) { + applyCommand(trimmedCommand); } } +} - if (clientConnection->bytesAvailable() < commandSize || clientConnection->atEnd()) { - return; - } - - const auto command = QString::fromLocal8Bit(clientConnection->read(commandSize)); +// ------------------------------------------------------------------------------------------------- +void ProjecteurApplication::applyCommand(const QString& command) +{ const QString cmdKey = command.section('=', 0, 0).trimmed(); const QString cmdValue = command.section('=', 1).trimmed(); @@ -617,8 +572,6 @@ void ProjecteurApplication::readCommand(QLocalSocket* clientConnection) logWarning(cmdserver) << tr("Received unknown command key (%1)").arg(cmdKey); } } - // reset command size, for next command - commandSize = 0; } // ------------------------------------------------------------------------------------------------- @@ -639,56 +592,3 @@ void ProjecteurApplication::showPreferences(bool show) } } } - -// ================================================================================================= -ProjecteurCommandClientApp::ProjecteurCommandClientApp(const QStringList& ipcCommands, int &argc, char **argv) - : QCoreApplication(argc, argv) -{ - if (ipcCommands.isEmpty()) - { - QMetaObject::invokeMethod(this, "quit", Qt::QueuedConnection); - return; - } - - QLocalSocket* const localSocket = new QLocalSocket(this); - - auto socketErrorFunc = [this, localSocket](QLocalSocket::LocalSocketError /*socketError*/) { - logError(cmdclient) << tr("Error sending commands: %1", "%1=error message") - .arg(localSocket->errorString()); - localSocket->close(); - QMetaObject::invokeMethod(this, "quit", Qt::QueuedConnection); - }; - - connect(localSocket, &QLocalSocket::errorOccurred, this, std::move(socketErrorFunc)); - - connect(localSocket, &QLocalSocket::connected, [localSocket, &ipcCommands]() - { - for (const auto& ipcCommand : ipcCommands) - { - if (ipcCommand.isEmpty()) { continue; } - - const QByteArray commandBlock = [&ipcCommand]() - { - const QByteArray ipcBytes = ipcCommand.toLocal8Bit(); - QByteArray block; - { - QDataStream out(&block, QIODevice::WriteOnly); - out << static_cast(ipcBytes.size()); - } - block.append(ipcBytes); - return block; - }(); - - localSocket->write(commandBlock); - localSocket->flush(); - } - localSocket->disconnectFromServer(); - }); - - connect(localSocket, &QLocalSocket::disconnected, this, [this, localSocket]() { - localSocket->close(); - QMetaObject::invokeMethod(this, "quit", Qt::QueuedConnection); - }); - - localSocket->connectToServer(localServerName()); -} diff --git a/src/projecteurapp.h b/src/projecteurapp.h index 7ea615d6..5a532a3f 100644 --- a/src/projecteurapp.h +++ b/src/projecteurapp.h @@ -12,12 +12,11 @@ class AboutDialog; class DeviceCommandHelper; +class KDBusService; class LinuxDesktop; class PreferencesDialog; class PresentationTimer; class ProjecteurControl; -class QLocalServer; -class QLocalSocket; class QQmlApplicationEngine; class QQmlComponent; class Settings; @@ -38,13 +37,19 @@ class ProjecteurApplication : public QApplication bool dialogMinimizeOnly = false; bool disableOverlay = false; bool hideSysTrayIcon = false; + QStringList commands; std::vector additionalDevices; }; explicit ProjecteurApplication(int &argc, char **argv, const Options& options); virtual ~ProjecteurApplication() override; + KDBusService* dbusService() const { return m_dbusService; } + bool isPrimaryInstance() const { return m_primaryInstance; } + int startupExitCode() const { return m_startupExitCode; } bool overlayVisible() const { return m_overlayVisible; } + void activate(); + void applyCommands(const QStringList& commands); signals: void overlayVisibleChanged(bool visible); @@ -57,12 +62,10 @@ public slots: void spotlightWindowClicked(); void cursorPositionChanged(const QPoint& pos); -private slots: - void readCommand(QLocalSocket* client); - private: friend class ProjecteurControl; + void applyCommand(const QString& command); void showPreferences(bool show = true); void showAbout(); void setScreenForCursorPos(); @@ -81,8 +84,8 @@ private slots: private: std::unique_ptr m_dialog; QPointer m_aboutDialog; + KDBusService* m_dbusService = nullptr; ProjecteurControl* m_control = nullptr; - QLocalServer* const m_localServer = nullptr; Settings* m_settings = nullptr; Spotlight* m_spotlight = nullptr; DeviceCommandHelper* m_deviceCommandHelper = nullptr; @@ -90,7 +93,8 @@ private slots: LinuxDesktop* m_linuxDesktop = nullptr; QQmlApplicationEngine* m_qmlEngine = nullptr; QQmlComponent* m_windowQmlComponent = nullptr; - std::map m_commandConnections; + bool m_primaryInstance = false; + int m_startupExitCode = 0; bool m_overlayVisible = false; QList m_overlayWindows; @@ -98,11 +102,3 @@ private slots: quint64 m_currentSpotScreen = 0; QPoint m_currentCursorPos; }; - -class ProjecteurCommandClientApp : public QCoreApplication -{ - Q_OBJECT - -public: - explicit ProjecteurCommandClientApp(const QStringList& ipcCommands, int &argc, char **argv); -}; diff --git a/src/projecteurconfig.kcfg b/src/projecteurconfig.kcfg new file mode 100644 index 00000000..49ce9d2c --- /dev/null +++ b/src/projecteurconfig.kcfg @@ -0,0 +1,87 @@ + + + + + + true + + + 32 + 5 + 100 + + + false + + + 5 + 3 + 100 + + + #ff0000 + + + 0.8 + 0.0 + 1.0 + + + #222222 + + + 0.3 + 0.0 + 1.0 + + + 10 + + + spotshapes/Circle.qml + + + 0.0 + 0.0 + 360.0 + + + true + + + #73d216 + + + 4 + 0 + 100 + + + 0.8 + 0.0 + 1.0 + + + false + + + 2.0 + 1.5 + 20.0 + + + false + + + false + + + 900 + 1 + + + diff --git a/src/projecteurcontrol.cc b/src/projecteurcontrol.cc index a22eb34a..d78b85bc 100644 --- a/src/projecteurcontrol.cc +++ b/src/projecteurcontrol.cc @@ -150,30 +150,19 @@ ProjecteurControl::ProjecteurControl(ProjecteurApplication* application, Setting }); } -bool ProjecteurControl::registerService() +bool ProjecteurControl::registerObject() { auto connection = QDBusConnection::sessionBus(); m_objectRegistered = connection.registerObject( QString::fromLatin1(ObjectPath), this, QDBusConnection::ExportAllProperties | QDBusConnection::ExportAllSignals | QDBusConnection::ExportAllSlots); - if (!m_objectRegistered) { return false; } - - m_serviceRegistered = connection.registerService(QString::fromLatin1(ServiceName)); - if (!m_serviceRegistered) { - connection.unregisterObject(QString::fromLatin1(ObjectPath)); - m_objectRegistered = false; - } - return m_serviceRegistered; + return m_objectRegistered; } -void ProjecteurControl::unregisterService() +void ProjecteurControl::unregisterObject() { auto connection = QDBusConnection::sessionBus(); - if (m_serviceRegistered) { - connection.unregisterService(QString::fromLatin1(ServiceName)); - m_serviceRegistered = false; - } if (m_objectRegistered) { connection.unregisterObject(QString::fromLatin1(ObjectPath)); m_objectRegistered = false; @@ -329,6 +318,11 @@ void ProjecteurControl::ShowAbout() m_application->showAbout(); } +void ProjecteurControl::ApplyCommands(const QStringList& commands) +{ + m_application->applyCommands(commands); +} + void ProjecteurControl::Quit() { QCoreApplication::quit(); @@ -400,7 +394,7 @@ void ProjecteurControl::watchBatteryConnection(const DeviceId& id, const QString void ProjecteurControl::emitPropertiesChanged(const QVariantMap& changedProperties) { - if (!m_serviceRegistered) { return; } + if (!m_objectRegistered) { return; } auto message = QDBusMessage::createSignal( QString::fromLatin1(ObjectPath), QStringLiteral("org.freedesktop.DBus.Properties"), QStringLiteral("PropertiesChanged")); diff --git a/src/projecteurcontrol.h b/src/projecteurcontrol.h index ecfcebc6..39c8ef38 100644 --- a/src/projecteurcontrol.h +++ b/src/projecteurcontrol.h @@ -36,14 +36,14 @@ class ProjecteurControl : public QObject public: static constexpr auto ServiceName = "org.projecteur.Projecteur"; - static constexpr auto ObjectPath = "/org/projecteur/Projecteur"; + static constexpr auto ObjectPath = "/org/projecteur/Projecteur/Control"; static constexpr auto InterfaceName = "org.projecteur.Projecteur"; ProjecteurControl(ProjecteurApplication* application, Settings* settings, Spotlight* spotlight, PresentationTimer* presentationTimer, bool trayVisible); - bool registerService(); - void unregisterService(); + bool registerObject(); + void unregisterObject(); bool trayVisible() const { return m_trayVisible; } bool overlayEnabled() const; @@ -69,6 +69,7 @@ public slots: void SetTimerDurationSeconds(int seconds); void ShowPreferences(); void ShowAbout(); + void ApplyCommands(const QStringList& commands); void Quit(); signals: @@ -99,5 +100,4 @@ public slots: QString m_currentPreset; QSet m_watchedBatteryConnections; bool m_objectRegistered = false; - bool m_serviceRegistered = false; }; diff --git a/src/runguard.cc b/src/runguard.cc deleted file mode 100644 index aecd4b70..00000000 --- a/src/runguard.cc +++ /dev/null @@ -1,71 +0,0 @@ -#include "runguard.h" - -#include - - -namespace { - QString generateKeyHash(const QString& key, const QString& salt) - { - const QByteArray data(key.toUtf8().append(salt.toUtf8())); - return QCryptographicHash::hash(data, QCryptographicHash::Sha1).toHex(); - } -} - -RunGuard::RunGuard(const QString& key) - : m_key(key) - , m_memLockKey(generateKeyHash(key, "_memLockKey")) - , m_sharedmemKey(generateKeyHash(key, "_sharedmemKey")) - , m_sharedMem(m_sharedmemKey) - , m_memLock(m_memLockKey, 1) -{ - m_memLock.acquire(); - { - QSharedMemory fix(m_sharedmemKey); // Fix for *nix: http://habrahabr.ru/post/173281/ - fix.attach(); - } - m_memLock.release(); -} - -RunGuard::~RunGuard() -{ - release(); -} - -bool RunGuard::isAnotherRunning() -{ - if (m_sharedMem.isAttached()) - return false; - - m_memLock.acquire(); - const bool isRunning = m_sharedMem.attach(); - if (isRunning) - m_sharedMem.detach(); - m_memLock.release(); - - return isRunning; -} - -bool RunGuard::tryToRun() -{ - if (isAnotherRunning()) // Extra check - return false; - - m_memLock.acquire(); - const bool result = m_sharedMem.create(sizeof(quint64)); - m_memLock.release(); - if (!result) - { - release(); - return false; - } - - return true; -} - -void RunGuard::release() -{ - m_memLock.acquire(); - if (m_sharedMem.isAttached()) - m_sharedMem.detach(); - m_memLock.release(); -} diff --git a/src/runguard.h b/src/runguard.h deleted file mode 100644 index 03cac1bf..00000000 --- a/src/runguard.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include -#include - -class RunGuard -{ -public: - explicit RunGuard(const QString& key); - ~RunGuard(); - - bool isAnotherRunning(); - bool tryToRun(); - void release(); - -private: - const QString m_key; - const QString m_memLockKey; - const QString m_sharedmemKey; - - QSharedMemory m_sharedMem; - QSystemSemaphore m_memLock; - - Q_DISABLE_COPY(RunGuard) -}; diff --git a/src/settings.cc b/src/settings.cc index f6b48cab..86c05d84 100644 --- a/src/settings.cc +++ b/src/settings.cc @@ -6,16 +6,19 @@ #include "device.h" #include "deviceinput.h" #include "logging.h" +#include "projecteurconfig.h" #include #include +#include +#include + #include #include #include #include #include -#include LOGGING_CATEGORY(lcSettings, "settings") @@ -45,9 +48,7 @@ namespace { // -- device specific constexpr char inputSequenceInterval[] = "inputSequenceInterval"; - constexpr char inputMapConfig[] = "inputMapConfig"; constexpr char presentationTimerHapticStrength[] = "presentationTimerHapticStrength"; - constexpr char legacyVibrationIntensity[] = "vibrationIntensity"; namespace defaultValue { constexpr bool showSpotShade = true; @@ -107,11 +108,52 @@ namespace { .arg(logging::hexId(dId.vendorId), logging::hexId(dId.productId), key); } + struct ConfigEntry { + KConfigGroup group; + QString key; + }; + + ConfigEntry configEntry(KConfig* config, const QString& path) + { + auto parts = path.split(QLatin1Char('/'), Qt::SkipEmptyParts); + if (parts.size() == 1) { + return {KConfigGroup(config, QStringLiteral("General")), parts.constFirst()}; + } + + KConfigGroup group(config, parts.takeFirst()); + while (parts.size() > 1) { + group = group.group(parts.takeFirst()); + } + return {group, parts.constFirst()}; + } + + void writeConfigValue(KConfig* config, const QString& path, const QVariant& value) + { + auto entry = configEntry(config, path); + if (value.metaType().id() == QMetaType::QByteArray) { + entry.group.writeEntry(entry.key, value.toByteArray()); + } else { + entry.group.writeEntry(entry.key, value); + } + } + + constexpr quint32 inputMapFormatVersion = 1; + constexpr auto inputMapConfigDataKey = "inputMapConfigData"; + + std::unique_ptr createConfig(const QString& configFile) + { + if (configFile.isEmpty()) { + return std::make_unique( + QStringLiteral("projecteurrc"), KConfig::SimpleConfig); + } + return std::make_unique(configFile, KConfig::SimpleConfig); + } + // ------------------------------------------------------------------------------------------------- - auto loadPresets(QSettings* settings) + auto loadPresets(KConfig* config) { std::vector presets; - for (const auto& group: settings->childGroups()) { + for (const auto& group: config->groupList()) { if (group.startsWith(SETTINGS_PRESET_PREFIX)) { presets.emplace_back(group.mid(sizeof(SETTINGS_PRESET_PREFIX)-1)); } @@ -125,38 +167,95 @@ namespace { // ------------------------------------------------------------------------------------------------- Settings::Settings(QObject* parent) : QObject(parent) - , m_settings(new QSettings(QCoreApplication::applicationName(), - QCoreApplication::applicationName(), this)) - , m_presetModel(new PresetModel(loadPresets(m_settings), this)) , m_shapeSettingsRoot(QQmlPropertyMap::create(this)) { + auto config = createConfig({}); + m_config = std::make_unique(std::move(config)); + m_presetModel = new PresetModel(loadPresets(m_config->config()), this); init(); } // ------------------------------------------------------------------------------------------------- Settings::Settings(const QString& configFile, QObject* parent) : QObject(parent) - , m_settings(new QSettings(configFile, QSettings::NativeFormat, this)) - , m_presetModel(new PresetModel(loadPresets(m_settings), this)) , m_shapeSettingsRoot(QQmlPropertyMap::create(this)) { + auto config = createConfig(configFile); + m_config = std::make_unique(std::move(config)); + m_presetModel = new PresetModel(loadPresets(m_config->config()), this); init(); } // ------------------------------------------------------------------------------------------------- Settings::~Settings() = default; +// ------------------------------------------------------------------------------------------------- +QVariant Settings::readValue(const QString& path, const QVariant& defaultValue) const +{ + const auto entry = configEntry(m_config->config(), path); + return entry.group.readEntry(entry.key, defaultValue); +} + +// ------------------------------------------------------------------------------------------------- +void Settings::writeValue(const QString& path, const QVariant& value) +{ + writeConfigValue(m_config->config(), path, value); + sync(); +} + +// ------------------------------------------------------------------------------------------------- +bool Settings::contains(const QString& path) const +{ + const auto entry = configEntry(m_config->config(), path); + return entry.group.hasKey(entry.key); +} + +// ------------------------------------------------------------------------------------------------- +void Settings::remove(const QString& path) +{ + if (!path.contains(QLatin1Char('/'))) { + KConfigGroup(m_config->config(), path).deleteGroup(); + sync(); + return; + } + auto entry = configEntry(m_config->config(), path); + entry.group.deleteEntry(entry.key); + sync(); +} + +// ------------------------------------------------------------------------------------------------- +QString Settings::configFileName() const +{ + return m_config->config()->name(); +} + +// ------------------------------------------------------------------------------------------------- +void Settings::save() +{ + if (!m_config->save()) { + logWarning(lcSettings) << tr("Could not save settings to '%1'.").arg(configFileName()); + } +} + +// ------------------------------------------------------------------------------------------------- +void Settings::sync() +{ + if (!m_config->config()->sync()) { + logWarning(lcSettings) << tr("Could not save settings to '%1'.").arg(configFileName()); + } +} + // ------------------------------------------------------------------------------------------------- void Settings::init() { - const QFileInfo fi(m_settings->fileName()); + const QFileInfo fi(configFileName()); if (!fi.isReadable()) { - logError(lcSettings) << tr("Settings file '%1' not readable.").arg(m_settings->fileName()); + logDebug(lcSettings) << tr("Settings file '%1' does not exist yet.").arg(configFileName()); } - if (!fi.isWritable()) { - logWarning(lcSettings) << tr("Settings file '%1' not writable.").arg(m_settings->fileName()); + if (fi.exists() && !fi.isWritable()) { + logWarning(lcSettings) << tr("Settings file '%1' not writable.").arg(configFileName()); } shapeSettingsInitialize(); @@ -341,7 +440,7 @@ void Settings::shapeSettingsLoad(const QString& preset) { const QString& key = settingDefinition.settingsKey(); const QString settingsKey = section + QString("Shape.%1/%2").arg(shape.name()).arg(key); - const QVariant loadedValue = m_settings->value(settingsKey, settingDefinition.defaultValue()); + const QVariant loadedValue = readValue(settingsKey, settingDefinition.defaultValue()); if (settingDefinition.defaultValue().metaType().id() == QMetaType::Int // Currently only int shape settings supported && settingDefinition.defaultValue() != loadedValue) { @@ -372,7 +471,7 @@ void Settings::shapeSettingsSavePreset(const QString& preset) { const QString& key = settingDefinition.settingsKey(); const QString settingsKey = section + QString("Shape.%1/%2").arg(shape.name()).arg(key); - m_settings->setValue(settingsKey, propertyMap->property(key.toLocal8Bit())); + writeValue(settingsKey, propertyMap->property(key.toLocal8Bit())); } } } @@ -407,7 +506,7 @@ void Settings::shapeSettingsInitialize() } logDebug(lcSettings) << QString("spot.shape.%1.%2 = ").arg(shape.name().toLower(), it->settingsKey()) << setValue; - m_settings->setValue(QString("Shape.%1/%2").arg(shape.name()).arg(key), newValue); + writeValue(QString("Shape.%1/%2").arg(shape.name()).arg(key), newValue); } } }); @@ -431,7 +530,7 @@ void Settings::loadPreset(const QString& preset) void Settings::removePreset(const QString& preset) { m_presetModel->removePreset(preset); - m_settings->remove(presetSection(preset, false)); + remove(presetSection(preset, false)); } // ------------------------------------------------------------------------------------------------- @@ -449,28 +548,52 @@ PresetModel* Settings::presetModel() // ------------------------------------------------------------------------------------------------- void Settings::load(const QString& preset) { - logDebug(lcSettings) << tr("Loading values from config:") << m_settings->fileName() + logDebug(lcSettings) << tr("Loading values from config:") << configFileName() << (preset.size() ? QString("(%1)").arg(preset) : ""); + if (preset.isEmpty()) + { + setShowSpotShade(m_config->showSpotShade()); + setSpotSize(m_config->spotSize()); + setShowCenterDot(m_config->showCenterDot()); + setDotSize(m_config->dotSize()); + setDotColor(m_config->dotColor()); + setDotOpacity(m_config->dotOpacity()); + setShadeColor(m_config->shadeColor()); + setShadeOpacity(m_config->shadeOpacity()); + setCursor(static_cast(m_config->cursor())); + setSpotShape(m_config->spotShape()); + setSpotRotation(m_config->spotRotation()); + setShowBorder(m_config->showBorder()); + setBorderColor(m_config->borderColor()); + setBorderSize(m_config->borderSize()); + setBorderOpacity(m_config->borderOpacity()); + setZoomEnabled(m_config->zoomEnabled()); + setZoomFactor(m_config->zoomFactor()); + setMultiScreenOverlayEnabled(m_config->multiScreenOverlay()); + shapeSettingsLoad(); + return; + } + const auto s = preset.size() ? presetSection(preset) : ""; - setShowSpotShade(m_settings->value(s+::settings::showSpotShade, settings::defaultValue::showSpotShade).toBool()); - setSpotSize(m_settings->value(s+::settings::spotSize, settings::defaultValue::spotSize).toInt()); - setShowCenterDot(m_settings->value(s+::settings::showCenterDot, settings::defaultValue::showCenterDot).toBool()); - setDotSize(m_settings->value(s+::settings::dotSize, settings::defaultValue::dotSize).toInt()); - setDotColor(m_settings->value(s+::settings::dotColor, QColor(settings::defaultValue::dotColor)).value()); - setDotOpacity(m_settings->value(s+::settings::dotOpacity, settings::defaultValue::dotOpacity).toDouble()); - setShadeColor(m_settings->value(s+::settings::shadeColor, QColor(settings::defaultValue::shadeColor)).value()); - setShadeOpacity(m_settings->value(s+::settings::shadeOpacity, settings::defaultValue::shadeOpacity).toDouble()); - setCursor(static_cast(m_settings->value(s+::settings::cursor, static_cast(settings::defaultValue::cursor)).toInt())); - setSpotShape(m_settings->value(s+::settings::spotShape, settings::defaultValue::spotShape).toString()); - setSpotRotation(m_settings->value(s+::settings::spotRotation, settings::defaultValue::spotRotation).toDouble()); - setShowBorder(m_settings->value(s+::settings::showBorder, settings::defaultValue::showBorder).toBool()); - setBorderColor(m_settings->value(s+::settings::borderColor, QColor(settings::defaultValue::borderColor)).value()); - setBorderSize(m_settings->value(s+::settings::borderSize, settings::defaultValue::borderSize).toInt()); - setBorderOpacity(m_settings->value(s+::settings::borderOpacity, settings::defaultValue::borderOpacity).toDouble()); - setZoomEnabled(m_settings->value(s+::settings::zoomEnabled, settings::defaultValue::zoomEnabled).toBool()); - setZoomFactor(m_settings->value(s+::settings::zoomFactor, settings::defaultValue::zoomFactor).toDouble()); - setMultiScreenOverlayEnabled(m_settings->value(s+::settings::multiScreenOverlay, settings::defaultValue::multiScreenOverlay).toBool()); + setShowSpotShade(readValue(s+::settings::showSpotShade, settings::defaultValue::showSpotShade).toBool()); + setSpotSize(readValue(s+::settings::spotSize, settings::defaultValue::spotSize).toInt()); + setShowCenterDot(readValue(s+::settings::showCenterDot, settings::defaultValue::showCenterDot).toBool()); + setDotSize(readValue(s+::settings::dotSize, settings::defaultValue::dotSize).toInt()); + setDotColor(readValue(s+::settings::dotColor, QColor(settings::defaultValue::dotColor)).value()); + setDotOpacity(readValue(s+::settings::dotOpacity, settings::defaultValue::dotOpacity).toDouble()); + setShadeColor(readValue(s+::settings::shadeColor, QColor(settings::defaultValue::shadeColor)).value()); + setShadeOpacity(readValue(s+::settings::shadeOpacity, settings::defaultValue::shadeOpacity).toDouble()); + setCursor(static_cast(readValue(s+::settings::cursor, static_cast(settings::defaultValue::cursor)).toInt())); + setSpotShape(readValue(s+::settings::spotShape, settings::defaultValue::spotShape).toString()); + setSpotRotation(readValue(s+::settings::spotRotation, settings::defaultValue::spotRotation).toDouble()); + setShowBorder(readValue(s+::settings::showBorder, settings::defaultValue::showBorder).toBool()); + setBorderColor(readValue(s+::settings::borderColor, QColor(settings::defaultValue::borderColor)).value()); + setBorderSize(readValue(s+::settings::borderSize, settings::defaultValue::borderSize).toInt()); + setBorderOpacity(readValue(s+::settings::borderOpacity, settings::defaultValue::borderOpacity).toDouble()); + setZoomEnabled(readValue(s+::settings::zoomEnabled, settings::defaultValue::zoomEnabled).toBool()); + setZoomFactor(readValue(s+::settings::zoomFactor, settings::defaultValue::zoomFactor).toDouble()); + setMultiScreenOverlayEnabled(readValue(s+::settings::multiScreenOverlay, settings::defaultValue::multiScreenOverlay).toBool()); shapeSettingsLoad(preset); } @@ -479,24 +602,24 @@ void Settings::savePreset(const QString& preset) { const auto section = presetSection(preset); - m_settings->setValue(section+::settings::showSpotShade, m_showSpotShade); - m_settings->setValue(section+::settings::spotSize, m_spotSize); - m_settings->setValue(section+::settings::showCenterDot, m_showCenterDot); - m_settings->setValue(section+::settings::dotSize, m_dotSize); - m_settings->setValue(section+::settings::dotColor, m_dotColor); - m_settings->setValue(section+::settings::dotOpacity, m_dotOpacity); - m_settings->setValue(section+::settings::shadeColor, m_shadeColor); - m_settings->setValue(section+::settings::shadeOpacity, m_shadeOpacity); - m_settings->setValue(section+::settings::cursor, static_cast(m_cursor)); - m_settings->setValue(section+::settings::spotShape, m_spotShape); - m_settings->setValue(section+::settings::spotRotation, m_spotRotation); - m_settings->setValue(section+::settings::showBorder, m_showBorder); - m_settings->setValue(section+::settings::borderColor, m_borderColor); - m_settings->setValue(section+::settings::borderSize, m_borderSize); - m_settings->setValue(section+::settings::borderOpacity, m_borderOpacity); - m_settings->setValue(section+::settings::zoomEnabled, m_zoomEnabled); - m_settings->setValue(section+::settings::zoomFactor, m_zoomFactor); - m_settings->setValue(section+::settings::multiScreenOverlay, m_multiScreenOverlayEnabled); + writeValue(section+::settings::showSpotShade, m_showSpotShade); + writeValue(section+::settings::spotSize, m_spotSize); + writeValue(section+::settings::showCenterDot, m_showCenterDot); + writeValue(section+::settings::dotSize, m_dotSize); + writeValue(section+::settings::dotColor, m_dotColor); + writeValue(section+::settings::dotOpacity, m_dotOpacity); + writeValue(section+::settings::shadeColor, m_shadeColor); + writeValue(section+::settings::shadeOpacity, m_shadeOpacity); + writeValue(section+::settings::cursor, static_cast(m_cursor)); + writeValue(section+::settings::spotShape, m_spotShape); + writeValue(section+::settings::spotRotation, m_spotRotation); + writeValue(section+::settings::showBorder, m_showBorder); + writeValue(section+::settings::borderColor, m_borderColor); + writeValue(section+::settings::borderSize, m_borderSize); + writeValue(section+::settings::borderOpacity, m_borderOpacity); + writeValue(section+::settings::zoomEnabled, m_zoomEnabled); + writeValue(section+::settings::zoomFactor, m_zoomFactor); + writeValue(section+::settings::multiScreenOverlay, m_multiScreenOverlayEnabled); shapeSettingsSavePreset(preset); m_presetModel->addPreset(preset); @@ -509,7 +632,8 @@ void Settings::setShowSpotShade(bool show) if (show == m_showSpotShade) { return; } m_showSpotShade = show; - m_settings->setValue(::settings::showSpotShade, m_showSpotShade); + m_config->setShowSpotShade(m_showSpotShade); + save(); logDebug(lcSettings) << "shade =" << m_showSpotShade; emit showSpotShadeChanged(m_showSpotShade); } @@ -520,7 +644,8 @@ void Settings::setSpotSize(int size) if (size == m_spotSize) { return; } m_spotSize = qMin(qMax(::settings::ranges::spotSize.min, size), ::settings::ranges::spotSize.max); - m_settings->setValue(::settings::spotSize, m_spotSize); + m_config->setSpotSize(m_spotSize); + save(); logDebug(lcSettings) << "spot.size =" << m_spotSize; emit spotSizeChanged(m_spotSize); } @@ -531,7 +656,8 @@ void Settings::setShowCenterDot(bool show) if (show == m_showCenterDot) { return; } m_showCenterDot = show; - m_settings->setValue(::settings::showCenterDot, m_showCenterDot); + m_config->setShowCenterDot(m_showCenterDot); + save(); logDebug(lcSettings) << "dot =" << m_showCenterDot; emit showCenterDotChanged(m_showCenterDot); } @@ -542,7 +668,8 @@ void Settings::setDotSize(int size) if (size == m_dotSize) { return; } m_dotSize = qMin(qMax(::settings::ranges::dotSize.min, size), ::settings::ranges::dotSize.max); - m_settings->setValue(::settings::dotSize, m_dotSize); + m_config->setDotSize(m_dotSize); + save(); logDebug(lcSettings) << "dot.size =" << m_dotSize; emit dotSizeChanged(m_dotSize); } @@ -553,7 +680,8 @@ void Settings::setDotColor(const QColor& color) if (color == m_dotColor) { return; } m_dotColor = color; - m_settings->setValue(::settings::dotColor, m_dotColor); + m_config->setDotColor(m_dotColor); + save(); logDebug(lcSettings) << "dot.color =" << m_dotColor.name(); emit dotColorChanged(m_dotColor); } @@ -564,7 +692,8 @@ void Settings::setDotOpacity(double opacity) if (opacity > m_dotOpacity || opacity < m_dotOpacity) { m_dotOpacity = qMin(qMax(::settings::ranges::dotOpacity.min, opacity), ::settings::ranges::dotOpacity.max); - m_settings->setValue(::settings::dotOpacity, m_dotOpacity); + m_config->setDotOpacity(m_dotOpacity); + save(); logDebug(lcSettings) << "dot.opacity = " << m_dotOpacity; emit dotOpacityChanged(m_dotOpacity); } @@ -576,7 +705,8 @@ void Settings::setShadeColor(const QColor& color) if (color == m_shadeColor) { return; } m_shadeColor = color; - m_settings->setValue(::settings::shadeColor, m_shadeColor); + m_config->setShadeColor(m_shadeColor); + save(); logDebug(lcSettings) << "shade.color =" << m_shadeColor.name(); emit shadeColorChanged(m_shadeColor); } @@ -587,7 +717,8 @@ void Settings::setShadeOpacity(double opacity) if (opacity > m_shadeOpacity || opacity < m_shadeOpacity) { m_shadeOpacity = qMin(qMax(::settings::ranges::shadeOpacity.min, opacity), ::settings::ranges::shadeOpacity.max); - m_settings->setValue(::settings::shadeOpacity, m_shadeOpacity); + m_config->setShadeOpacity(m_shadeOpacity); + save(); logDebug(lcSettings) << "shade.opacity = " << m_shadeOpacity; emit shadeOpacityChanged(m_shadeOpacity); } @@ -599,7 +730,8 @@ void Settings::setCursor(Qt::CursorShape cursor) if (cursor == m_cursor) { return; } m_cursor = qMin(qMax(static_cast(0), cursor), Qt::LastCursor); - m_settings->setValue(::settings::cursor, static_cast(m_cursor)); + m_config->setCursor(static_cast(m_cursor)); + save(); logDebug(lcSettings) << "cursor = " << m_cursor; emit cursorChanged(m_cursor); } @@ -616,7 +748,8 @@ void Settings::setSpotShape(const QString& spotShapeQmlComponent) if (it != spotShapes().cend()) { m_spotShape = it->qmlComponent(); - m_settings->setValue(::settings::spotShape, m_spotShape); + m_config->setSpotShape(m_spotShape); + save(); logDebug(lcSettings) << "spot.shape = " << m_spotShape; emit spotShapeChanged(m_spotShape); setSpotRotationAllowed(it->allowRotation()); @@ -629,7 +762,8 @@ void Settings::setSpotRotation(double rotation) if (rotation > m_spotRotation || rotation < m_spotRotation) { m_spotRotation = qMin(qMax(::settings::ranges::spotRotation.min, rotation), ::settings::ranges::spotRotation.max); - m_settings->setValue(::settings::spotRotation, m_spotRotation); + m_config->setSpotRotation(m_spotRotation); + save(); logDebug(lcSettings) << "spot.rotation = " << m_spotRotation; emit spotRotationChanged(m_spotRotation); } @@ -685,7 +819,8 @@ void Settings::setShowBorder(bool show) if (show == m_showBorder) { return; } m_showBorder = show; - m_settings->setValue(::settings::showBorder, m_showBorder); + m_config->setShowBorder(m_showBorder); + save(); logDebug(lcSettings) << "border = " << m_showBorder; emit showBorderChanged(m_showBorder); } @@ -696,7 +831,8 @@ void Settings::setBorderColor(const QColor& color) if (color == m_borderColor) { return; } m_borderColor = color; - m_settings->setValue(::settings::borderColor, m_borderColor); + m_config->setBorderColor(m_borderColor); + save(); logDebug(lcSettings) << "border.color = " << m_borderColor.name(); emit borderColorChanged(m_borderColor); } @@ -707,7 +843,8 @@ void Settings::setBorderSize(int size) if (size == m_borderSize) { return; } m_borderSize = qMin(qMax(::settings::ranges::borderSize.min, size), ::settings::ranges::borderSize.max); - m_settings->setValue(::settings::borderSize, m_borderSize); + m_config->setBorderSize(m_borderSize); + save(); logDebug(lcSettings) << "border.size = " << m_borderSize; emit borderSizeChanged(m_borderSize); } @@ -718,7 +855,8 @@ void Settings::setBorderOpacity(double opacity) if (opacity > m_borderOpacity || opacity < m_borderOpacity) { m_borderOpacity = qMin(qMax(::settings::ranges::borderOpacity.min, opacity), ::settings::ranges::borderOpacity.max); - m_settings->setValue(::settings::borderOpacity, m_borderOpacity); + m_config->setBorderOpacity(m_borderOpacity); + save(); logDebug(lcSettings) << "border.opacity = " << m_borderOpacity; emit borderOpacityChanged(m_borderOpacity); } @@ -730,7 +868,8 @@ void Settings::setZoomEnabled(bool enabled) if (enabled == m_zoomEnabled) { return; } m_zoomEnabled = enabled; - m_settings->setValue(::settings::zoomEnabled, m_zoomEnabled); + m_config->setZoomEnabled(m_zoomEnabled); + save(); logDebug(lcSettings) << "zoom = " << m_zoomEnabled; emit zoomEnabledChanged(m_zoomEnabled); } @@ -741,7 +880,8 @@ void Settings::setZoomFactor(double factor) if (factor > m_zoomFactor || factor < m_zoomFactor) { m_zoomFactor = qMin(qMax(::settings::ranges::zoomFactor.min, factor), ::settings::ranges::zoomFactor.max); - m_settings->setValue(::settings::zoomFactor, m_zoomFactor); + m_config->setZoomFactor(m_zoomFactor); + save(); logDebug(lcSettings) << "zoom.factor = " << m_zoomFactor; emit zoomFactorChanged(m_zoomFactor); } @@ -752,7 +892,8 @@ void Settings::setMultiScreenOverlayEnabled(bool enabled) { if (m_multiScreenOverlayEnabled == enabled) { return; } m_multiScreenOverlayEnabled = enabled; - m_settings->setValue(::settings::multiScreenOverlay, m_multiScreenOverlayEnabled); + m_config->setMultiScreenOverlay(m_multiScreenOverlayEnabled); + save(); logDebug(lcSettings) << "multi-screen-overlay = " << m_multiScreenOverlayEnabled; emit multiScreenOverlayEnabledChanged(m_multiScreenOverlayEnabled); } @@ -783,13 +924,13 @@ void Settings::setDeviceInputSeqInterval(const DeviceId& dId, int intervalMs) { const auto v = qMin(qMax(::settings::ranges::inputSequenceInterval.min, intervalMs), ::settings::ranges::inputSequenceInterval.max); - m_settings->setValue(settingsKey(dId, ::settings::inputSequenceInterval), v); + writeValue(settingsKey(dId, ::settings::inputSequenceInterval), v); } // ------------------------------------------------------------------------------------------------- int Settings::deviceInputSeqInterval(const DeviceId& dId) const { - const auto value = m_settings->value(settingsKey(dId, ::settings::inputSequenceInterval), + const auto value = readValue(settingsKey(dId, ::settings::inputSequenceInterval), ::settings::defaultValue::inputSequenceInterval).toInt(); return qMin(qMax(::settings::ranges::inputSequenceInterval.min, value), ::settings::ranges::inputSequenceInterval.max); @@ -798,24 +939,15 @@ int Settings::deviceInputSeqInterval(const DeviceId& dId) const // ------------------------------------------------------------------------------------------------- void Settings::setDeviceInputMapConfig(const DeviceId& dId, const InputMapConfig& imc) { - const int sizeBefore = m_settings->value(settingsKey(dId, ::settings::inputMapConfig) - + "/size", 0).toInt(); - m_settings->beginWriteArray(settingsKey(dId, ::settings::inputMapConfig), imc.size()); - int index = 0; + QByteArray serialized; + QDataStream stream(&serialized, QIODevice::WriteOnly); + stream.setVersion(QDataStream::Qt_6_0); + stream << inputMapFormatVersion << quint32(imc.size()); for (const auto& item : imc) { - m_settings->setArrayIndex(index++); - m_settings->setValue("deviceSequence", QVariant::fromValue(item.first)); - m_settings->setValue("mappedAction", QVariant::fromValue(item.second)); + stream << item.first << item.second; } - m_settings->endArray(); - - // Remove old entries... - m_settings->beginGroup(settingsKey(dId, ::settings::inputMapConfig)); - for (; index < sizeBefore; ++index) { - m_settings->remove(QString::number(index+1)); - } - m_settings->endGroup(); + writeValue(settingsKey(dId, inputMapConfigDataKey), serialized); } // ------------------------------------------------------------------------------------------------- @@ -823,15 +955,31 @@ InputMapConfig Settings::getDeviceInputMapConfig(const DeviceId& dId) { InputMapConfig cfg; - const int size = m_settings->beginReadArray(settingsKey(dId, ::settings::inputMapConfig)); - for (int i = 0; i < size; ++i) + const auto serialized = + readValue(settingsKey(dId, inputMapConfigDataKey), QByteArray()).toByteArray(); + if (serialized.isEmpty()) { + return cfg; + } + + QDataStream stream(serialized); + stream.setVersion(QDataStream::Qt_6_0); + quint32 version = 0; + quint32 size = 0; + stream >> version >> size; + if (version != inputMapFormatVersion || size > 1024) { + logWarning(lcSettings) << tr("Ignoring unsupported device input mapping data."); + return cfg; + } + + for (quint32 i = 0; i < size; ++i) { - m_settings->setArrayIndex(i); - const auto seq = m_settings->value("deviceSequence"); - if (!seq.canConvert()) { continue; } - const auto conf = m_settings->value("mappedAction"); - if (!conf.canConvert()) { continue; } - auto mappedAction = qvariant_cast(conf); + KeyEventSequence sequence; + MappedAction mappedAction; + stream >> sequence >> mappedAction; + if (stream.status() != QDataStream::Ok || !mappedAction.action) { + logWarning(lcSettings) << tr("Ignoring invalid device input mapping data."); + return {}; + } if (mappedAction.action->type() == Action::Type::ScrollHorizontal) { mappedAction.action = GlobalActions::scrollHorizontal(); } else if (mappedAction.action->type() == Action::Type::ScrollVertical) { @@ -839,9 +987,8 @@ InputMapConfig Settings::getDeviceInputMapConfig(const DeviceId& dId) } else if (mappedAction.action->type() == Action::Type::VolumeControl) { mappedAction.action = GlobalActions::volumeControl(); } - cfg.emplace(qvariant_cast(seq), std::move(mappedAction)); + cfg.emplace(std::move(sequence), std::move(mappedAction)); } - m_settings->endArray(); return cfg; } @@ -849,7 +996,7 @@ InputMapConfig Settings::getDeviceInputMapConfig(const DeviceId& dId) // ------------------------------------------------------------------------------------------------- void Settings::setDevicePresentationTimerHapticStrength(const DeviceId& dId, int strength) { - m_settings->setValue( + writeValue( settingsKey(dId, ::settings::presentationTimerHapticStrength), std::clamp(strength, 0, 100)); } @@ -858,21 +1005,8 @@ void Settings::setDevicePresentationTimerHapticStrength(const DeviceId& dId, int int Settings::devicePresentationTimerHapticStrength(const DeviceId& dId) const { const auto deviceKey = settingsKey(dId, ::settings::presentationTimerHapticStrength); - if (m_settings->contains(deviceKey)) { - return std::clamp(m_settings->value(deviceKey).toInt(), 0, 100); - } - - const auto legacyDeviceKey = settingsKey(dId, ::settings::legacyVibrationIntensity); - if (m_settings->contains(legacyDeviceKey)) { - const int intensity = std::clamp(m_settings->value(legacyDeviceKey).toInt(), 0, 255); - return (intensity * 100 + 127) / 255; - } - - // Preserve the value from the short-lived global setting as the initial value - // for devices that do not have an older per-device vibration setting. - if (m_settings->contains(::settings::presentationTimerHapticStrength)) { - return std::clamp( - m_settings->value(::settings::presentationTimerHapticStrength).toInt(), 0, 100); + if (contains(deviceKey)) { + return std::clamp(readValue(deviceKey).toInt(), 0, 100); } return ::settings::defaultValue::presentationTimerHapticStrength; @@ -881,29 +1015,27 @@ int Settings::devicePresentationTimerHapticStrength(const DeviceId& dId) const // ------------------------------------------------------------------------------------------------- void Settings::setPresentationTimerEnabled(bool enabled) { - m_settings->setValue(::settings::presentationTimerEnabled, enabled); + m_config->setPresentationTimerEnabled(enabled); + save(); } // ------------------------------------------------------------------------------------------------- bool Settings::presentationTimerEnabled() const { - return m_settings->value( - ::settings::presentationTimerEnabled, - ::settings::defaultValue::presentationTimerEnabled).toBool(); + return m_config->presentationTimerEnabled(); } // ------------------------------------------------------------------------------------------------- void Settings::setPresentationTimerDurationSeconds(int seconds) { - m_settings->setValue(::settings::presentationTimerDurationSeconds, seconds); + m_config->setPresentationTimerDurationSeconds(seconds); + save(); } // ------------------------------------------------------------------------------------------------- int Settings::presentationTimerDurationSeconds() const { - return m_settings->value( - ::settings::presentationTimerDurationSeconds, - ::settings::defaultValue::presentationTimerDurationSeconds).toInt(); + return m_config->presentationTimerDurationSeconds(); } // ------------------------------------------------------------------------------------------------- diff --git a/src/settings.h b/src/settings.h index 5583c982..0deee5d5 100644 --- a/src/settings.h +++ b/src/settings.h @@ -4,6 +4,7 @@ #include #include +#include #include #include @@ -13,7 +14,7 @@ struct DeviceId; class InputMapConfig; class PresetModel; -class QSettings; +class ProjecteurConfig; class QQmlPropertyMap; // ------------------------------------------------------------------------------------------------- @@ -203,9 +204,9 @@ class Settings : public QObject void presetLoaded(const QString& preset); private: - QSettings* m_settings = nullptr; + std::unique_ptr m_config; - PresetModel* m_presetModel; + PresetModel* m_presetModel = nullptr; std::map m_shapeSettings; QQmlPropertyMap* m_shapeSettingsRoot = nullptr; @@ -234,6 +235,13 @@ class Settings : public QObject private: void init(); + QVariant readValue(const QString& path, const QVariant& defaultValue = {}) const; + void writeValue(const QString& path, const QVariant& value); + bool contains(const QString& path) const; + void remove(const QString& path); + QString configFileName() const; + void save(); + void sync(); void load(const QString& preset = QString()); QObject* shapeSettingsRootObject(); void shapeSettingsPopulateRoot(); From 75c7154b5c0ae6045f0a7c9dffeb6ce8052f89e2 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 17:10:41 -0500 Subject: [PATCH 37/67] More KDEifacation dbus xml interface about box standardized standard kde notification --- .github/workflows/ci-build.yml | 3 +- CMakeLists.txt | 22 +- Justfile | 3 + README.md | 7 +- cmake/modules/PkgDependenciesProjecteur.cmake | 3 + docker/Dockerfile.archlinux | 3 + packaging/arch/PKGBUILD | 3 + plasma/CMakeLists.txt | 10 + plasma/projecteurapplet.cc | 149 +++++----- plasma/projecteurapplet.h | 4 +- projecteur.notifyrc | 35 +++ src/aboutdlg.cc | 272 ------------------ src/aboutdlg.h | 25 -- src/main.cc | 74 ++++- src/org.projecteur.Projecteur.xml | 103 +++++++ src/preferencesdlg.cc | 6 - src/preferencesdlg.h | 1 - src/projecteurapp.cc | 142 +++++++-- src/projecteurapp.h | 6 +- src/projecteurcontrol.cc | 19 +- src/projecteurcontrol.h | 1 + src/spotlight.cc | 12 +- src/spotlight.h | 1 + 23 files changed, 480 insertions(+), 424 deletions(-) create mode 100644 projecteur.notifyrc delete mode 100644 src/aboutdlg.cc delete mode 100644 src/aboutdlg.h create mode 100644 src/org.projecteur.Projecteur.xml diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 7db18240..ac9ee35e 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -16,7 +16,8 @@ jobs: - name: Install build dependencies run: >- pacman -Syu --noconfirm - base-devel cmake extra-cmake-modules git kconfig kcoreaddons kdbusaddons layer-shell-qt libplasma + base-devel cmake extra-cmake-modules git kconfig kcoreaddons kdbusaddons + knotifications kwindowsystem kxmlgui layer-shell-qt libplasma qt6-base qt6-declarative qt6-tools - uses: actions/checkout@v4 diff --git a/CMakeLists.txt b/CMakeLists.txt index 040e927b..e5aaf76a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,8 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) find_package(Qt6 6.11 REQUIRED COMPONENTS Core DBus Gui LinguistTools Quick Widgets) -find_package(KF6 6.7 REQUIRED COMPONENTS Config CoreAddons DBusAddons Package KirigamiPlatform WindowSystem) +find_package(KF6 6.7 REQUIRED COMPONENTS Config CoreAddons DBusAddons Notifications + Package KirigamiPlatform WindowSystem XmlGui) find_package(Plasma 6.7 REQUIRED) find_package(LayerShellQt 6.7 REQUIRED) set(QT_PACKAGE_NAME Qt6) @@ -36,7 +37,6 @@ qt6_add_resources(RESOURCES qml/qml.qrc resources.qrc) add_executable(projecteur src/main.cc src/enum-helper.h - src/aboutdlg.cc src/aboutdlg.h src/actiondelegate.cc src/actiondelegate.h src/colorselector.cc src/colorselector.h src/device.cc src/device.h @@ -64,6 +64,17 @@ add_executable(projecteur src/virtualdevice.cc src/virtualdevice.h ${RESOURCES}) +set(PROJECTEUR_CONTROL_XML + "${CMAKE_CURRENT_SOURCE_DIR}/src/org.projecteur.Projecteur.xml") +qt_add_dbus_adaptor(PROJECTEUR_DBUS_ADAPTOR_SOURCES + "${PROJECTEUR_CONTROL_XML}" + "${CMAKE_CURRENT_SOURCE_DIR}/src/projecteurcontrol.h" + ProjecteurControl + projecteurcontroladaptor + ProjecteurControlAdaptor +) +target_sources(projecteur PRIVATE ${PROJECTEUR_DBUS_ADAPTOR_SOURCES}) + kconfig_target_kcfg_file(projecteur FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/projecteurconfig.kcfg" CLASS_NAME ProjecteurConfig @@ -77,7 +88,7 @@ target_include_directories(projecteur PRIVATE src "${CMAKE_CURRENT_BINARY_DIR}") target_link_libraries(projecteur PRIVATE Qt6::Core Qt6::DBus Qt6::Quick Qt6::Widgets KF6::ConfigCore KF6::ConfigGui KF6::CoreAddons KF6::DBusAddons - LayerShellQt::Interface + KF6::Notifications KF6::WindowSystem KF6::XmlGui LayerShellQt::Interface ) target_compile_options(projecteur @@ -120,7 +131,8 @@ add_translation_update_task("projecteur" "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_ # Add target with non-source files for convenience when using IDEs like QtCreator and others add_custom_target(non-sources SOURCES README.md LICENSE.md doc/CHANGELOG.md devices.conf src/extra-devices.cc.in src/projecteurconfig.kcfg - 55-projecteur.rules.in + src/org.projecteur.Projecteur.xml + 55-projecteur.rules.in projecteur.notifyrc cmake/templates/projecteur.desktop.in) # Install @@ -205,6 +217,8 @@ install(FILES icons/projecteur-tray.svg DESTINATION share/icons/hicolor/48x48/ap install(FILES icons/projecteur-tray.svg DESTINATION share/icons/hicolor/64x64/apps/ RENAME projecteur.svg) install(FILES icons/projecteur-tray.svg DESTINATION share/icons/hicolor/128x128/apps/ RENAME projecteur.svg) install(FILES icons/projecteur-tray.svg DESTINATION share/icons/hicolor/256x256/apps/ RENAME projecteur.svg) +install(FILES projecteur.notifyrc DESTINATION ${KDE_INSTALL_KNOTIFYRCDIR}) +install(FILES src/org.projecteur.Projecteur.xml DESTINATION ${KDE_INSTALL_DBUSINTERFACEDIR}) # Set variables for file configurations get_target_property(VERSION_STRING projecteur VERSION_STRING) diff --git a/Justfile b/Justfile index 5c62189f..1f2f60e9 100644 --- a/Justfile +++ b/Justfile @@ -117,6 +117,9 @@ deps: _require-arch kconfig kcoreaddons kdbusaddons + knotifications + kwindowsystem + kxmlgui layer-shell-qt libplasma libglvnd diff --git a/README.md b/README.md index dc1d076a..380e98f8 100644 --- a/README.md +++ b/README.md @@ -159,7 +159,8 @@ and Hold Move actions for the same button. * C++17 compiler * CMake 3.20 or later * Qt 6.11 with Core, DBus, Gui, LinguistTools, Quick, and Widgets -* KDE Plasma 6.7 Wayland, including Libplasma, KConfig, KCoreAddons, and KDBusAddons +* KDE Plasma 6.7 Wayland, including Libplasma, KConfig, KCoreAddons, + KDBusAddons, KNotifications, KWindowSystem, and KXmlGui * LayerShellQt 6.7 * Extra CMake Modules 6.7 or later @@ -227,6 +228,10 @@ elsewhere. If the system tray icon is missing, see the [Troubleshooting](#missing-system-tray) section. +Presenter connection, battery, access-error, and presentation-timer notifications +are registered with Plasma and can be customized under System Settings → +Notifications → Applications → Projecteur. + ### Command Line Interface Additional to the standard `--help` and `--version` options, there is an option to send diff --git a/cmake/modules/PkgDependenciesProjecteur.cmake b/cmake/modules/PkgDependenciesProjecteur.cmake index a2f6f460..43b4516a 100644 --- a/cmake/modules/PkgDependenciesProjecteur.cmake +++ b/cmake/modules/PkgDependenciesProjecteur.cmake @@ -5,6 +5,9 @@ list(APPEND _PkgDeps_Projecteur_archlinux "kconfig>=6.7" "kcoreaddons>=6.7" "kdbusaddons>=6.7" + "knotifications>=6.7" + "kwindowsystem>=6.7" + "kxmlgui>=6.7" "libplasma>=6.7" "udev" ) diff --git a/docker/Dockerfile.archlinux b/docker/Dockerfile.archlinux index 7a7b41a2..4f6dc175 100644 --- a/docker/Dockerfile.archlinux +++ b/docker/Dockerfile.archlinux @@ -22,6 +22,9 @@ RUN pacman --noconfirm -Sy && pacman --noconfirm -S \ kconfig \ kcoreaddons \ kdbusaddons \ + knotifications \ + kwindowsystem \ + kxmlgui \ libplasma \ layer-shell-qt diff --git a/packaging/arch/PKGBUILD b/packaging/arch/PKGBUILD index 04bfaeee..3341837f 100644 --- a/packaging/arch/PKGBUILD +++ b/packaging/arch/PKGBUILD @@ -16,6 +16,9 @@ depends=( 'kconfig>=6.7' 'kcoreaddons>=6.7' 'kdbusaddons>=6.7' + 'knotifications>=6.7' + 'kwindowsystem>=6.7' + 'kxmlgui>=6.7' 'layer-shell-qt>=6.7' 'libplasma>=6.7' 'libglvnd' diff --git a/plasma/CMakeLists.txt b/plasma/CMakeLists.txt index 455b908c..7e6a1cad 100644 --- a/plasma/CMakeLists.txt +++ b/plasma/CMakeLists.txt @@ -2,6 +2,11 @@ if(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") endif() +qt_add_dbus_interface(PROJECTEUR_DBUS_INTERFACE_SOURCES + "${CMAKE_SOURCE_DIR}/src/org.projecteur.Projecteur.xml" + projecteurcontrolinterface +) + plasma_add_applet(org.projecteur.Projecteur QML_SOURCES qml/main.qml @@ -9,6 +14,11 @@ plasma_add_applet(org.projecteur.Projecteur CPP_SOURCES projecteurapplet.cc projecteurapplet.h + ${PROJECTEUR_DBUS_INTERFACE_SOURCES} +) + +target_include_directories(org.projecteur.Projecteur + PRIVATE "${CMAKE_CURRENT_BINARY_DIR}" ) target_link_libraries(org.projecteur.Projecteur diff --git a/plasma/projecteurapplet.cc b/plasma/projecteurapplet.cc index 5ca8b822..1373903b 100644 --- a/plasma/projecteurapplet.cc +++ b/plasma/projecteurapplet.cc @@ -3,20 +3,18 @@ #include "projecteurapplet.h" +#include "projecteurcontrolinterface.h" + #include -#include #include #include -#include -#include #include #include namespace { constexpr auto serviceName = "org.projecteur.Projecteur"; constexpr auto objectPath = "/org/projecteur/Projecteur/Control"; -constexpr auto interfaceName = "org.projecteur.Projecteur"; } ProjecteurApplet::ProjecteurApplet(QObject* parent, const KPluginMetaData& data, @@ -32,43 +30,7 @@ ProjecteurApplet::ProjecteurApplet(QObject* parent, const KPluginMetaData& data, connect(m_serviceWatcher, &QDBusServiceWatcher::serviceUnregistered, this, &ProjecteurApplet::serviceUnregistered); - auto bus = QDBusConnection::sessionBus(); - bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), - QString::fromLatin1(interfaceName), QStringLiteral("overlayEnabledChanged"), - this, SLOT(remoteOverlayEnabledChanged(bool))); - bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), - QString::fromLatin1(interfaceName), QStringLiteral("spotlightActiveChanged"), - this, SLOT(remoteSpotlightActiveChanged(bool))); - bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), - QString::fromLatin1(interfaceName), QStringLiteral("connectedDevicesChanged"), - this, SLOT(remoteConnectedDevicesChanged(QStringList))); - bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), - QString::fromLatin1(interfaceName), - QStringLiteral("connectedDeviceBatteryLevelsChanged"), - this, SLOT(remoteConnectedDeviceBatteryLevelsChanged(QList))); - bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), - QString::fromLatin1(interfaceName), - QStringLiteral("connectedDeviceBatteryStatusesChanged"), - this, SLOT(remoteConnectedDeviceBatteryStatusesChanged(QStringList))); - bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), - QString::fromLatin1(interfaceName), QStringLiteral("presetsChanged"), - this, SLOT(remotePresetsChanged(QStringList))); - bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), - QString::fromLatin1(interfaceName), QStringLiteral("currentPresetChanged"), - this, SLOT(remoteCurrentPresetChanged(QString))); - bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), - QString::fromLatin1(interfaceName), QStringLiteral("timerEnabledChanged"), - this, SLOT(remoteTimerEnabledChanged(bool))); - bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), - QString::fromLatin1(interfaceName), QStringLiteral("timerStateChanged"), - this, SLOT(remoteTimerStateChanged(QString))); - bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), - QString::fromLatin1(interfaceName), QStringLiteral("timerDurationSecondsChanged"), - this, SLOT(remoteTimerDurationSecondsChanged(int))); - bus.connect(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), - QString::fromLatin1(interfaceName), QStringLiteral("timerRemainingSecondsChanged"), - this, SLOT(remoteTimerRemainingSecondsChanged(int))); - + const auto bus = QDBusConnection::sessionBus(); const auto registered = bus.interface()->isServiceRegistered(QString::fromLatin1(serviceName)); if (registered.isValid() && registered.value()) { serviceRegistered(QString::fromLatin1(serviceName)); @@ -77,62 +39,63 @@ ProjecteurApplet::ProjecteurApplet(QObject* parent, const KPluginMetaData& data, void ProjecteurApplet::setOverlayEnabled(bool enabled) { - call(QStringLiteral("SetOverlayEnabled"), {enabled}); + if (m_interface) { m_interface->SetOverlayEnabled(enabled); } } void ProjecteurApplet::setSpotlightActive(bool active) { - call(QStringLiteral("SetSpotlightActive"), {active}); + if (m_interface) { m_interface->SetSpotlightActive(active); } } void ProjecteurApplet::loadPreset(const QString& preset) { - call(QStringLiteral("LoadPreset"), {preset}); + if (m_interface) { m_interface->LoadPreset(preset); } } void ProjecteurApplet::setTimerEnabled(bool enabled) { - call(QStringLiteral("SetTimerEnabled"), {enabled}); + if (m_interface) { m_interface->SetTimerEnabled(enabled); } } void ProjecteurApplet::startTimer() { - call(QStringLiteral("StartTimer")); + if (m_interface) { m_interface->StartTimer(); } } void ProjecteurApplet::restartTimer() { - call(QStringLiteral("RestartTimer")); + if (m_interface) { m_interface->RestartTimer(); } } void ProjecteurApplet::resetTimer() { - call(QStringLiteral("ResetTimer")); + if (m_interface) { m_interface->ResetTimer(); } } void ProjecteurApplet::setTimerDurationSeconds(int seconds) { - call(QStringLiteral("SetTimerDurationSeconds"), {seconds}); + if (m_interface) { m_interface->SetTimerDurationSeconds(seconds); } } void ProjecteurApplet::showPreferences() { - call(QStringLiteral("ShowPreferences")); + if (m_interface) { m_interface->ShowPreferences(); } } void ProjecteurApplet::showAbout() { - call(QStringLiteral("ShowAbout")); + if (m_interface) { m_interface->ShowAbout(); } } void ProjecteurApplet::quitProjecteur() { - call(QStringLiteral("Quit")); + if (m_interface) { m_interface->Quit(); } } void ProjecteurApplet::serviceRegistered(const QString& service) { if (service != QString::fromLatin1(serviceName)) { return; } + createInterface(); if (!m_serviceAvailable) { m_serviceAvailable = true; emit serviceAvailableChanged(); @@ -143,6 +106,8 @@ void ProjecteurApplet::serviceRegistered(const QString& service) void ProjecteurApplet::serviceUnregistered(const QString& service) { if (service != QString::fromLatin1(serviceName)) { return; } + delete m_interface; + m_interface = nullptr; if (m_serviceAvailable) { m_serviceAvailable = false; emit serviceAvailableChanged(); @@ -227,38 +192,63 @@ void ProjecteurApplet::remoteTimerRemainingSecondsChanged(int seconds) emit timerRemainingSecondsChanged(); } +void ProjecteurApplet::createInterface() +{ + delete m_interface; + m_interface = new OrgProjecteurProjecteurInterface( + QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), + QDBusConnection::sessionBus(), this); + + connect(m_interface, &OrgProjecteurProjecteurInterface::overlayEnabledChanged, + this, &ProjecteurApplet::remoteOverlayEnabledChanged); + connect(m_interface, &OrgProjecteurProjecteurInterface::spotlightActiveChanged, + this, &ProjecteurApplet::remoteSpotlightActiveChanged); + connect(m_interface, &OrgProjecteurProjecteurInterface::connectedDevicesChanged, + this, &ProjecteurApplet::remoteConnectedDevicesChanged); + connect(m_interface, + &OrgProjecteurProjecteurInterface::connectedDeviceBatteryLevelsChanged, + this, &ProjecteurApplet::remoteConnectedDeviceBatteryLevelsChanged); + connect(m_interface, + &OrgProjecteurProjecteurInterface::connectedDeviceBatteryStatusesChanged, + this, &ProjecteurApplet::remoteConnectedDeviceBatteryStatusesChanged); + connect(m_interface, &OrgProjecteurProjecteurInterface::presetsChanged, + this, &ProjecteurApplet::remotePresetsChanged); + connect(m_interface, &OrgProjecteurProjecteurInterface::currentPresetChanged, + this, &ProjecteurApplet::remoteCurrentPresetChanged); + connect(m_interface, &OrgProjecteurProjecteurInterface::timerEnabledChanged, + this, &ProjecteurApplet::remoteTimerEnabledChanged); + connect(m_interface, &OrgProjecteurProjecteurInterface::timerStateChanged, + this, &ProjecteurApplet::remoteTimerStateChanged); + connect(m_interface, &OrgProjecteurProjecteurInterface::timerDurationSecondsChanged, + this, &ProjecteurApplet::remoteTimerDurationSecondsChanged); + connect(m_interface, &OrgProjecteurProjecteurInterface::timerRemainingSecondsChanged, + this, &ProjecteurApplet::remoteTimerRemainingSecondsChanged); +} + void ProjecteurApplet::refresh() { - QDBusInterface interface(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), - QString::fromLatin1(interfaceName), QDBusConnection::sessionBus()); - if (!interface.isValid()) { return; } + if (!m_interface || !m_interface->isValid()) { return; } - const bool trayVisible = interface.property("TrayVisible").toBool(); + const bool trayVisible = m_interface->trayVisible(); if (m_trayVisible != trayVisible) { m_trayVisible = trayVisible; emit trayVisibleChanged(); } - remoteOverlayEnabledChanged(interface.property("OverlayEnabled").toBool()); - remoteSpotlightActiveChanged(interface.property("SpotlightActive").toBool()); - remoteConnectedDevicesChanged(interface.property("ConnectedDevices").toStringList()); - remoteConnectedDeviceBatteryLevelsChanged( - qdbus_cast>(interface.property("ConnectedDeviceBatteryLevels"))); - remoteConnectedDeviceBatteryStatusesChanged( - interface.property("ConnectedDeviceBatteryStatuses").toStringList()); - remotePresetsChanged(interface.property("Presets").toStringList()); - remoteCurrentPresetChanged(interface.property("CurrentPreset").toString()); - const auto timerStateProperty = interface.property("TimerState"); - const bool timerAvailable = timerStateProperty.isValid(); - if (m_timerAvailable != timerAvailable) { - m_timerAvailable = timerAvailable; + remoteOverlayEnabledChanged(m_interface->overlayEnabled()); + remoteSpotlightActiveChanged(m_interface->spotlightActive()); + remoteConnectedDevicesChanged(m_interface->connectedDevices()); + remoteConnectedDeviceBatteryLevelsChanged(m_interface->connectedDeviceBatteryLevels()); + remoteConnectedDeviceBatteryStatusesChanged(m_interface->connectedDeviceBatteryStatuses()); + remotePresetsChanged(m_interface->presets()); + remoteCurrentPresetChanged(m_interface->currentPreset()); + if (!m_timerAvailable) { + m_timerAvailable = true; emit timerAvailableChanged(); } - if (timerAvailable) { - remoteTimerEnabledChanged(interface.property("TimerEnabled").toBool()); - remoteTimerStateChanged(timerStateProperty.toString()); - remoteTimerDurationSecondsChanged(interface.property("TimerDurationSeconds").toInt()); - remoteTimerRemainingSecondsChanged(interface.property("TimerRemainingSeconds").toInt()); - } + remoteTimerEnabledChanged(m_interface->timerEnabled()); + remoteTimerStateChanged(m_interface->timerState()); + remoteTimerDurationSecondsChanged(m_interface->timerDurationSeconds()); + remoteTimerRemainingSecondsChanged(m_interface->timerRemainingSeconds()); } void ProjecteurApplet::resetState() @@ -284,15 +274,6 @@ void ProjecteurApplet::resetState() remoteTimerRemainingSecondsChanged(15 * 60); } -void ProjecteurApplet::call(const QString& method, const QVariantList& arguments) -{ - if (!m_serviceAvailable) { return; } - QDBusInterface interface(QString::fromLatin1(serviceName), QString::fromLatin1(objectPath), - QString::fromLatin1(interfaceName), QDBusConnection::sessionBus()); - if (!interface.isValid()) { return; } - interface.asyncCallWithArgumentList(method, arguments); -} - K_PLUGIN_CLASS_WITH_JSON(ProjecteurApplet, "metadata.json") #include "projecteurapplet.moc" diff --git a/plasma/projecteurapplet.h b/plasma/projecteurapplet.h index 729cf2be..3e9471c4 100644 --- a/plasma/projecteurapplet.h +++ b/plasma/projecteurapplet.h @@ -8,6 +8,7 @@ #include class QDBusServiceWatcher; +class OrgProjecteurProjecteurInterface; class ProjecteurApplet : public Plasma::Applet { @@ -91,11 +92,12 @@ private slots: void remoteTimerRemainingSecondsChanged(int seconds); private: + void createInterface(); void refresh(); void resetState(); - void call(const QString& method, const QVariantList& arguments = {}); QDBusServiceWatcher* m_serviceWatcher = nullptr; + OrgProjecteurProjecteurInterface* m_interface = nullptr; bool m_serviceAvailable = false; bool m_timerAvailable = false; bool m_trayVisible = true; diff --git a/projecteur.notifyrc b/projecteur.notifyrc new file mode 100644 index 00000000..40113088 --- /dev/null +++ b/projecteur.notifyrc @@ -0,0 +1,35 @@ +[Global] +IconName=projecteur +DesktopEntry=org.projecteur.Projecteur +Name=Projecteur +Comment=KDE Plasma spotlight for presenter devices + +[Event/presentationTimerFinished] +Name=Presentation timer finished +Comment=The configured presentation time has elapsed +Action=Popup + +[Event/presenterConnected] +Name=Presenter connected +Comment=A supported presenter became available +Action=Popup + +[Event/presenterDisconnected] +Name=Presenter disconnected +Comment=A connected presenter became unavailable +Action=Popup + +[Event/presenterBatteryLow] +Name=Presenter battery low +Comment=A presenter battery has reached a low level +Action=Popup + +[Event/presenterBatteryError] +Name=Presenter battery error +Comment=A presenter reported a battery or charging problem +Action=Popup + +[Event/deviceAccessError] +Name=Presenter access failed +Comment=Projecteur could not access a supported presenter device +Action=Popup diff --git a/src/aboutdlg.cc b/src/aboutdlg.cc deleted file mode 100644 index c1ede8ed..00000000 --- a/src/aboutdlg.cc +++ /dev/null @@ -1,272 +0,0 @@ -// This file is part of Projecteur - https://github.com/jahnf/projecteur -// - See LICENSE.md and README.md - -#include "aboutdlg.h" - -#include "projecteur-GitVersion.h" - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -namespace { - // ----------------------------------------------------------------------------------------------- - /// Contributor (name, github_name, email, url) - struct Contributor - { - explicit Contributor(const QString& name = {}, const QString& github_name = {}, - const QString& email = {}, const QString& url = {}) - : name(name), github_name(github_name), email(email), url(url) {} - - QString toHtml() const - { - auto html = QString("%1").arg(name.isEmpty() - ? QString("%1").arg(github_name) - : name); - - if (email.size()) { - html += QString(" <%1>").arg(email); - } - - if (url.size()) { - html += QString(" %1").arg(url); - } - else if (!name.isEmpty()) { - html += QString(" - github: %1").arg(github_name); - } - return html; - } - - QString name; - QString github_name; - QString email; - QString url; - }; - - // ----------------------------------------------------------------------------------------------- - QString getContributorsHtml() - { - static std::vector contributors = - { - Contributor("Ricardo Jesus", "rj-jesus"), - Contributor("Mayank Suman", "mayanksuman"), - Contributor("Tiziano Müller", "dev-zero"), - Contributor("Torsten Maehne", "maehne"), - Contributor("TBK", "TBK"), - Contributor("Louie Lu", "mlouielu"), - Contributor("fmuelle4711", "fmuelle4711"), - Contributor("Deniz Bahadir", "Bagira80"), - Contributor("Tomáš Chvátal", "scarabeusiv"), - Contributor("Brandon Johnson", "dbrandonjohnson"), - Contributor("Stuart Prescott", "llimeht"), - Contributor("Crista Renouard", "Lumnicence"), - Contributor("freddii", "freddii"), - Contributor("Matthias Blümel", "Blaimi"), - Contributor("Grzegorz Szymaszek", "gszy"), - Contributor("TheAssassin", "TheAssassin"), - }; - - static std::mt19937 g(std::random_device{}()); - std::shuffle(contributors.begin(), contributors.end(), g); - - QStringList contributorsHtml; - for (const auto& contributor : contributors) { - contributorsHtml.append(contributor.toHtml()); - } - return contributorsHtml.join("
"); - } -} // end anonymous namespace - -// ------------------------------------------------------------------------------------------------- -AboutDialog::AboutDialog(QWidget* parent) - : QDialog(parent) - , m_tabWidget(new QTabWidget(this)) -{ - setWindowTitle(tr("About %1", "%1=application name").arg(QCoreApplication::applicationName())); - setWindowIcon(QIcon(":/icons/projecteur-tray.svg")); - - const auto hbox = new QHBoxLayout(); - const auto iconLabel = new QLabel(this); - iconLabel->setPixmap(QIcon(":/icons/projecteur-tray.svg").pixmap(QSize(128,128))); - hbox->addWidget(iconLabel); - - hbox->addWidget(m_tabWidget, 1); - - m_tabWidget->addTab(createVersionInfoWidget(), tr("Version")); - m_tabWidget->addTab(createContributorInfoWidget(), tr("Contributors")); - m_tabWidget->addTab(createThirdPartyLicensesWidget(), tr("Licenses")); - - const auto bbox = new QDialogButtonBox(QDialogButtonBox::Ok, this); - connect(bbox, &QDialogButtonBox::clicked, this, &QDialog::accept); - - const auto mainVbox = new QVBoxLayout(this); - mainVbox->addLayout(hbox); - mainVbox->addSpacing(10); - mainVbox->addWidget(bbox); -} - -// ------------------------------------------------------------------------------------------------- -void AboutDialog::showEvent(QShowEvent* e) -{ - QDialog::showEvent(e); - m_tabWidget->setCurrentIndex(0); -} - -// ------------------------------------------------------------------------------------------------- -QWidget* AboutDialog::createVersionInfoWidget() -{ - const auto versionInfoWidget = new QWidget(this); - const auto vbox = new QVBoxLayout(versionInfoWidget); - const auto versionLabel = new QLabel(QString("%1
%2") - .arg(QCoreApplication::applicationName(), - tr("Version %1", "%1=application version number") - .arg(projecteur::version_string())), this); - vbox->addWidget(versionLabel); - const auto vInfo = QString("git-branch: %1
git-hash: %2
build-type: %3") - .arg(projecteur::version_branch(), - projecteur::version_shorthash(), - projecteur::version_buildtype()); - versionLabel->setToolTip(vInfo); - - if (QString(projecteur::version_flag()).size() || - (QString(projecteur::version_branch()) != "master" - && QString(projecteur::version_branch()) != "not-within-git-repo")) - { - vbox->addSpacing(4); - vbox->addWidget(new QLabel(vInfo, this)); - } - - vbox->addSpacing(4); - const auto projectLinksLabel = new QLabel( - tr("Independent, unofficial KDE/Wayland fork maintained by " - "Guillaume Binet.
" - "Fork source and support: " - "gbin/Projecteur-kde
" - "Based on Projecteur " - "by Jahn Fuchs."), this); - projectLinksLabel->setWordWrap(true); - projectLinksLabel->setTextFormat(Qt::TextFormat::RichText); - projectLinksLabel->setOpenExternalLinks(true); - vbox->addWidget(projectLinksLabel); - vbox->addSpacing(8); - - auto qtVerText = tr("Qt Version: %1", "%1=qt version number").arg(QT_VERSION_STR); - if (QString(QT_VERSION_STR) != qVersion()) { - qtVerText += QString(" (runtime: %1)").arg(qVersion()); - } - vbox->addWidget(new QLabel(qtVerText, this)); - vbox->addSpacing(15); - vbox->addWidget(new QLabel("Copyright 2018-2021 Jahn Fuchs", this)); - vbox->addWidget(new QLabel("Fork modifications Copyright 2026 Guillaume Binet", this)); - auto licenseText = new QLabel(tr("This project is distributed under the
" - "" - "MIT License"), this); - licenseText->setWordWrap(true); - licenseText->setTextFormat(Qt::TextFormat::RichText); - licenseText->setOpenExternalLinks(true); - vbox->addWidget(licenseText); - - vbox->addStretch(1); - return versionInfoWidget; -} - -// ------------------------------------------------------------------------------------------------- -QWidget* AboutDialog::createContributorInfoWidget() -{ - const auto contributorWidget = new QWidget(this); - const auto vbox = new QVBoxLayout(contributorWidget); - - const auto label = new QLabel(tr("Contributors, in random order:"), contributorWidget); - vbox->addWidget(label); - - const auto textBrowser = new QTextBrowser(contributorWidget); - textBrowser->setWordWrapMode(QTextOption::NoWrap); - textBrowser->setOpenLinks(true); - textBrowser->setOpenExternalLinks(true); - textBrowser->setFont([textBrowser]() - { - auto font = textBrowser->font(); - font.setPointSizeF(font.pointSizeF() - 2.0); - return font; - }()); - - // randomize contributors list on every contributors tab selection - connect(m_tabWidget, &QTabWidget::currentChanged, this, - [contributorWidget, textBrowser, this](int){ - if (contributorWidget == m_tabWidget->currentWidget()) { - textBrowser->setHtml(getContributorsHtml()); - } - }); - - vbox->addWidget(textBrowser); - return contributorWidget; -} - -// ------------------------------------------------------------------------------------------------- -QWidget* AboutDialog::createThirdPartyLicensesWidget() -{ - const auto tpLicenceWidget = new QWidget(this); - const auto layout = new QVBoxLayout(tpLicenceWidget); - - struct ThirdPartyProject { - const QString projectName; - const QString projectUrl; - const QString copyrightNotice; - const QString licenseName; - const QString licenseUrl; - }; - - static const std::vector thirdPartyProjects = { - ThirdPartyProject{ "Qt Toolkit", "https://www.qt.io", "Copyright (C) The Qt Company Ltd.", "GPL/LGPLv3", "" }, - }; - - const auto textBrowser = new QTextBrowser(tpLicenceWidget); - layout->addWidget(textBrowser); - - textBrowser->setOpenLinks(true); - textBrowser->setOpenExternalLinks(true); - textBrowser->setWordWrapMode(QTextOption::NoWrap); - textBrowser->setFont([textBrowser]() - { - auto font = textBrowser->font(); - font.setPointSizeF(font.pointSizeF() - 2.5); - return font; - }()); - - QString html = ""; - - html += "
    "; - for (const auto& tpl : thirdPartyProjects) - { - html += "
  • "; - if (tpl.projectUrl.size()) { - html += QString("%2").arg(tpl.projectUrl, tpl.projectName); - } else { - html += QString("%1").arg(tpl.projectName); - } - - if (tpl.copyrightNotice.size()) { - html += "
    " + tpl.copyrightNotice + ""; - } - - if (tpl.licenseUrl.size()) { - html += QString("
    %2").arg(tpl.licenseUrl, tpl.licenseName); - } else { - html += QString("
    License: %1").arg(tpl.licenseName); - } - - html += "
  • "; - } - html += "
"; - - textBrowser->setHtml(html); - return tpLicenceWidget; -} diff --git a/src/aboutdlg.h b/src/aboutdlg.h deleted file mode 100644 index 9b295364..00000000 --- a/src/aboutdlg.h +++ /dev/null @@ -1,25 +0,0 @@ -// This file is part of Projecteur - https://github.com/jahnf/projecteur -// - See LICENSE.md and README.md -#pragma once - -#include - -class QTabWidget; - -class AboutDialog : public QDialog -{ - Q_OBJECT - -public: - explicit AboutDialog(QWidget* parent = nullptr); - -protected: - void showEvent(QShowEvent*) override; - -private: - QTabWidget* m_tabWidget = nullptr; - - QWidget* createVersionInfoWidget(); - QWidget* createContributorInfoWidget(); - QWidget* createThirdPartyLicensesWidget(); -}; diff --git a/src/main.cc b/src/main.cc index 8a67ce34..f706747b 100644 --- a/src/main.cc +++ b/src/main.cc @@ -7,6 +7,7 @@ #include "logging.h" #include "settings.h" +#include #include #include @@ -30,6 +31,68 @@ namespace { // ----------------------------------------------------------------------------------------------- class Main : public QObject {}; + KAboutData projecteurAboutData() + { + KAboutData aboutData( + QStringLiteral("Projecteur"), + QStringLiteral("Projecteur"), + QString::fromUtf8(projecteur::version_string()), + Main::tr("A KDE Plasma spotlight for Logitech presenter devices."), + KAboutLicense::MIT, + Main::tr("Copyright 2018–2021 Jahn Fuchs\n" + "Fork modifications copyright 2026 Guillaume Binet"), + {}, + QStringLiteral("https://github.com/gbin/Projecteur-kde"), + QStringLiteral("https://github.com/gbin/Projecteur-kde/issues")); + + aboutData.setOrganizationDomain("projecteur.org"); + aboutData.setDesktopFileName(QStringLiteral("org.projecteur.Projecteur")); + aboutData.setOtherText( + Main::tr("Independent, unofficial KDE/Wayland fork based on Projecteur.\n\n" + "Build information:\n" + "Git branch: %1\n" + "Git hash: %2\n" + "Build type: %3") + .arg(QString::fromUtf8(projecteur::version_branch()), + QString::fromUtf8(projecteur::version_shorthash()), + QString::fromUtf8(projecteur::version_buildtype()))); + + aboutData.addAuthor( + QStringLiteral("Guillaume Binet"), Main::tr("KDE/Wayland fork maintainer"), {}, + QStringLiteral("https://github.com/gbin")); + aboutData.addAuthor( + QStringLiteral("Jahn Fuchs"), Main::tr("Original Projecteur author"), {}, + QStringLiteral("https://github.com/jahnf")); + + const struct { + const char* name; + const char* githubName; + } contributors[] = { + {"Ricardo Jesus", "rj-jesus"}, + {"Mayank Suman", "mayanksuman"}, + {"Tiziano Müller", "dev-zero"}, + {"Torsten Maehne", "maehne"}, + {"TBK", "TBK"}, + {"Louie Lu", "mlouielu"}, + {"fmuelle4711", "fmuelle4711"}, + {"Deniz Bahadir", "Bagira80"}, + {"Tomáš Chvátal", "scarabeusiv"}, + {"Brandon Johnson", "dbrandonjohnson"}, + {"Stuart Prescott", "llimeht"}, + {"Crista Renouard", "Lumnicence"}, + {"freddii", "freddii"}, + {"Matthias Blümel", "Blaimi"}, + {"Grzegorz Szymaszek", "gszy"}, + {"TheAssassin", "TheAssassin"}, + }; + for (const auto& contributor : contributors) { + aboutData.addCredit( + QString::fromUtf8(contributor.name), Main::tr("Contributor"), {}, + QStringLiteral("https://github.com/%1").arg(QString::fromUtf8(contributor.githubName))); + } + return aboutData; + } + std::ostream& operator<<(std::ostream& os, const QString& s) { os << s.toStdString(); return os; @@ -334,10 +397,13 @@ namespace { // ------------------------------------------------------------------------------------------------- int main(int argc, char *argv[]) { - QCoreApplication::setApplicationName("Projecteur"); - QCoreApplication::setOrganizationDomain("projecteur.org"); - QCoreApplication::setApplicationVersion(projecteur::version_string()); - QGuiApplication::setDesktopFileName(QStringLiteral("org.projecteur.Projecteur")); + const auto aboutData = projecteurAboutData(); + KAboutData::setApplicationData(aboutData); + QCoreApplication::setApplicationName(aboutData.componentName()); + QCoreApplication::setOrganizationDomain(aboutData.organizationDomain()); + QCoreApplication::setApplicationVersion(aboutData.version()); + QGuiApplication::setApplicationDisplayName(aboutData.displayName()); + QGuiApplication::setDesktopFileName(aboutData.desktopFileName()); ProjecteurApplication::Options options; { ProjecteurCmdLineParser parser; diff --git a/src/org.projecteur.Projecteur.xml b/src/org.projecteur.Projecteur.xml new file mode 100644 index 00000000..3b380bb2 --- /dev/null +++ b/src/org.projecteur.Projecteur.xml @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/preferencesdlg.cc b/src/preferencesdlg.cc index c22feb15..0823be37 100644 --- a/src/preferencesdlg.cc +++ b/src/preferencesdlg.cc @@ -55,7 +55,6 @@ PreferencesDialog::PreferencesDialog(Settings* settings, Spotlight* spotlight, : QDialog(parent) , m_presetComboStyle(std::make_unique()) , m_closeMinimizeBtn(new QPushButton(this)) - , m_exitBtn(new QPushButton(tr("&Quit %1").arg(QCoreApplication::applicationName()),this)) { setWindowTitle(QCoreApplication::applicationName() + " - " + tr("Preferences")); setWindowIcon(QIcon(":/icons/projecteur-tray.svg")); @@ -66,10 +65,6 @@ PreferencesDialog::PreferencesDialog(Settings* settings, Spotlight* spotlight, else { this->showMinimized(); } }); - connect(m_exitBtn, &QPushButton::clicked, this, [this](){ - emit exitApplicationRequested(); - }); - const auto settingsWidget = createSettingsTabWidget(settings); settingsWidget->setDisabled(settings->overlayDisabled()); @@ -84,7 +79,6 @@ PreferencesDialog::PreferencesDialog(Settings* settings, Spotlight* spotlight, tabWidget->tabBar()->setTabButton(0, QTabBar::ButtonPosition::LeftSide, overlayCheckBox); const auto btnHBox = new QHBoxLayout; - btnHBox->addWidget(m_exitBtn); btnHBox->addStretch(1); btnHBox->addWidget(m_closeMinimizeBtn); diff --git a/src/preferencesdlg.h b/src/preferencesdlg.h index fdab5d86..a315075a 100644 --- a/src/preferencesdlg.h +++ b/src/preferencesdlg.h @@ -71,7 +71,6 @@ class PreferencesDialog : public QDialog std::unique_ptr m_presetComboStyle; QComboBox* m_presetCombo = nullptr; QPushButton* m_closeMinimizeBtn = nullptr; - QPushButton* m_exitBtn = nullptr; DevicesWidget* m_deviceswidget = nullptr; bool m_active = false; Mode m_dialogMode = Mode::ClosableDialog; diff --git a/src/projecteurapp.cc b/src/projecteurapp.cc index e411d1a1..61930a8d 100644 --- a/src/projecteurapp.cc +++ b/src/projecteurapp.cc @@ -3,7 +3,6 @@ #include "projecteurapp.h" -#include "aboutdlg.h" #include "device-command-helper.h" #include "imageitem.h" #include "linuxdesktop.h" @@ -14,12 +13,19 @@ #include "settings.h" #include "spotlight.h" +#include +#include #include +#include +#include #include #include +#include #include #include +#include +#include #include #include #include @@ -31,6 +37,18 @@ LOGGING_CATEGORY(mainapp, "mainapp") LOGGING_CATEGORY(cmdserver, "cmdserver") +namespace { +constexpr auto notificationComponent = "projecteur"; + +void sendNotification(const QString& eventId, const QString& title, const QString& text, + const QString& iconName = QStringLiteral("projecteur")) +{ + KNotification::event( + eventId, title, text, iconName, KNotification::CloseOnTimeout, + QString::fromLatin1(notificationComponent)); +} +} + // ------------------------------------------------------------------------------------------------- ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Options& options) : QApplication(argc, argv) @@ -41,6 +59,8 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio return; } m_primaryInstance = true; + setWindowIcon(QIcon::fromTheme( + QStringLiteral("projecteur"), QIcon(QStringLiteral(":/icons/projecteur-tray.svg")))); if (!options.commands.isEmpty()) { const auto commands = options.commands.join(QStringLiteral("; ")); @@ -146,6 +166,7 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio // Expose application state and actions to the native Plasma system tray applet. setupControlService(options); + setupNotifications(); connect(this, &ProjecteurApplication::aboutToQuit, this, [this](){ m_linuxDesktop->setShakeCursorEffectSuppressed(false); @@ -224,8 +245,7 @@ void ProjecteurApplication::setupSpotlight() connect(m_spotlight, &Spotlight::spotActiveChanged, this, [this](bool active){ if (!active && m_dialog->isVisible()) { - m_dialog->raise(); - m_dialog->activateWindow(); + showAndActivate(m_dialog.get()); } }); } @@ -240,22 +260,113 @@ void ProjecteurApplication::setupControlService(Options const& options) } } +// ------------------------------------------------------------------------------------------------- +void ProjecteurApplication::setupNotifications() +{ + connect(m_presentationTimer, &PresentationTimer::stateChanged, this, + [this](PresentationTimer::State state) { + if (state == PresentationTimer::State::Completed) { + sendNotification( + QStringLiteral("presentationTimerFinished"), + tr("Presentation timer finished"), + tr("The configured presentation time has elapsed."), + QStringLiteral("chronometer")); + } + }); + + connect(m_spotlight, &Spotlight::deviceConnected, this, + [this](const DeviceId&, const QString& name) { + sendNotification( + QStringLiteral("presenterConnected"), + tr("Presenter connected"), + tr("%1 is ready.").arg(name), + QStringLiteral("input-mouse")); + }); + connect(m_spotlight, &Spotlight::deviceDisconnected, this, + [this](const DeviceId&, const QString& name) { + sendNotification( + QStringLiteral("presenterDisconnected"), + tr("Presenter disconnected"), + tr("%1 is no longer available.").arg(name), + QStringLiteral("input-mouse")); + }); + + const auto inaccessiblePaths = std::make_shared>(); + connect(m_spotlight, &Spotlight::deviceAccessError, this, + [this, inaccessiblePaths](const QString& name, const QString& path) { + if (inaccessiblePaths->contains(path)) { return; } + inaccessiblePaths->insert(path); + sendNotification( + QStringLiteral("deviceAccessError"), + tr("Presenter access failed"), + tr("%1 cannot access %2. Check the installed udev rules and device permissions.") + .arg(name, path), + QStringLiteral("dialog-warning")); + }); + connect(m_spotlight, &Spotlight::subDeviceConnected, this, + [inaccessiblePaths](const DeviceId&, const QString&, const QString& path) { + inaccessiblePaths->remove(path); + }); + + const auto batteryWarnings = std::make_shared>(); + connect(m_control, &ProjecteurControl::batteryStateChanged, this, + [this, batteryWarnings](const QString& name, int level, const QString& status) { + QString warningKey; + QString eventId; + QString title; + QString text; + QString iconName; + + if (status == QStringLiteral("invalid-battery") + || status == QStringLiteral("thermal-error") + || status == QStringLiteral("charging-error")) { + warningKey = QStringLiteral("error:") + status; + eventId = QStringLiteral("presenterBatteryError"); + title = tr("Presenter battery problem"); + text = tr("%1 reported a battery error: %2.").arg(name, status); + iconName = QStringLiteral("dialog-warning"); + } else if (level >= 0 && level <= 20 && status == QStringLiteral("discharging")) { + warningKey = QStringLiteral("low"); + eventId = QStringLiteral("presenterBatteryLow"); + title = tr("Presenter battery low"); + text = tr("%1 has %2% battery remaining.").arg(name).arg(level); + iconName = QStringLiteral("battery-low"); + } + + if (warningKey.isEmpty()) { + batteryWarnings->remove(name); + return; + } + if (batteryWarnings->value(name) == warningKey) { return; } + batteryWarnings->insert(name, warningKey); + sendNotification(eventId, title, text, iconName); + }); + connect(m_spotlight, &Spotlight::deviceDisconnected, this, + [batteryWarnings](const DeviceId&, const QString& name) { + batteryWarnings->remove(name); + }); +} + // ------------------------------------------------------------------------------------------------- void ProjecteurApplication::showAbout() { if (!m_aboutDialog) { - m_aboutDialog = new AboutDialog(); - connect(m_aboutDialog, &QDialog::finished, this, [this](int /* result */) { - m_aboutDialog->deleteLater(); - }); + m_aboutDialog = new KAboutApplicationDialog(KAboutData::applicationData()); + m_aboutDialog->setAttribute(Qt::WA_DeleteOnClose); } - if (m_aboutDialog->isVisible()) { - m_aboutDialog->show(); - m_aboutDialog->raise(); - m_aboutDialog->activateWindow(); - } else { - m_aboutDialog->open(); + showAndActivate(m_aboutDialog); +} + +// ------------------------------------------------------------------------------------------------- +void ProjecteurApplication::showAndActivate(QWidget* widget) +{ + if (!widget) { return; } + widget->show(); + widget->raise(); + if (auto* window = widget->windowHandle()) { + KWindowSystem::updateStartupId(window); + KWindowSystem::activateWindow(window); } } @@ -579,10 +690,7 @@ void ProjecteurApplication::showPreferences(bool show) { if (show) { - m_dialog->show(); - m_dialog->raise(); - static const bool qtPlatformIsWayland = QGuiApplication::platformName().toLower().startsWith("wayland"); - if (!qtPlatformIsWayland) { m_dialog->activateWindow(); } + showAndActivate(m_dialog.get()); } else { if (m_dialog->mode() == PreferencesDialog::Mode::MinimizeOnlyDialog) { diff --git a/src/projecteurapp.h b/src/projecteurapp.h index 5a532a3f..85ce60f5 100644 --- a/src/projecteurapp.h +++ b/src/projecteurapp.h @@ -10,8 +10,8 @@ #include #include -class AboutDialog; class DeviceCommandHelper; +class KAboutApplicationDialog; class KDBusService; class LinuxDesktop; class PreferencesDialog; @@ -66,6 +66,7 @@ public slots: friend class ProjecteurControl; void applyCommand(const QString& command); + void showAndActivate(QWidget* widget); void showPreferences(bool show = true); void showAbout(); void setScreenForCursorPos(); @@ -79,11 +80,12 @@ public slots: void setCurrentCursorPos(const QPoint& pos); void setupControlService(Options const& options); + void setupNotifications(); void setupSpotlight(); private: std::unique_ptr m_dialog; - QPointer m_aboutDialog; + QPointer m_aboutDialog; KDBusService* m_dbusService = nullptr; ProjecteurControl* m_control = nullptr; Settings* m_settings = nullptr; diff --git a/src/projecteurcontrol.cc b/src/projecteurcontrol.cc index d78b85bc..9109f44b 100644 --- a/src/projecteurcontrol.cc +++ b/src/projecteurcontrol.cc @@ -6,6 +6,7 @@ #include "device-hidpp.h" #include "presentationtimer.h" #include "projecteurapp.h" +#include "projecteurcontroladaptor.h" #include "settings.h" #include "spotlight.h" @@ -46,6 +47,8 @@ ProjecteurControl::ProjecteurControl(ProjecteurApplication* application, Setting , m_presentationTimer(presentationTimer) , m_trayVisible(trayVisible) { + new ProjecteurControlAdaptor(this); + connect(m_settings, &Settings::overlayDisabledChanged, this, [this](bool disabled) { const bool enabled = !disabled; emit overlayEnabledChanged(enabled); @@ -155,8 +158,7 @@ bool ProjecteurControl::registerObject() auto connection = QDBusConnection::sessionBus(); m_objectRegistered = connection.registerObject( QString::fromLatin1(ObjectPath), this, - QDBusConnection::ExportAllProperties | QDBusConnection::ExportAllSignals | - QDBusConnection::ExportAllSlots); + QDBusConnection::ExportAdaptors); return m_objectRegistered; } @@ -368,6 +370,7 @@ void ProjecteurControl::watchBatteryConnection(const DeviceId& id, const QString { const auto connection = m_spotlight->deviceConnection(id); if (!connection) { return; } + const auto deviceName = connection->deviceName(); const auto subDevice = connection->subDevice(path); const auto hidpp = qobject_cast(subDevice.get()); if (!hidpp) { return; } @@ -379,9 +382,17 @@ void ProjecteurControl::watchBatteryConnection(const DeviceId& id, const QString }); connect(hidpp, &SubHidppConnection::batteryInfoChanged, this, - [this](const HIDPP::BatteryInfo&) { emitBatteryPropertiesChanged(); }); - connect(hidpp, &SubHidppConnection::featureSetInitialized, this, [this, hidpp]() { + [this, deviceName](const HIDPP::BatteryInfo& info) { + emitBatteryPropertiesChanged(); + emit batteryStateChanged(deviceName, info.currentLevel, batteryStatusName(info.status)); + }); + connect(hidpp, &SubHidppConnection::featureSetInitialized, this, + [this, hidpp, deviceName]() { emitBatteryPropertiesChanged(); + const auto& info = hidpp->batteryInfo(); + if (info.status != HIDPP::BatteryStatus::Uninitialized) { + emit batteryStateChanged(deviceName, info.currentLevel, batteryStatusName(info.status)); + } if (hidpp->hasFlags(DeviceFlag::ReportBattery)) { hidpp->triggerBattyerInfoUpdate(); } diff --git a/src/projecteurcontrol.h b/src/projecteurcontrol.h index 39c8ef38..94418ffd 100644 --- a/src/projecteurcontrol.h +++ b/src/projecteurcontrol.h @@ -84,6 +84,7 @@ public slots: void timerStateChanged(const QString& state); void timerDurationSecondsChanged(int seconds); void timerRemainingSecondsChanged(int seconds); + void batteryStateChanged(const QString& deviceName, int level, const QString& status); private: void clearCurrentPreset(); diff --git a/src/spotlight.cc b/src/spotlight.cc index 86d337cd..2f56ed6a 100644 --- a/src/spotlight.cc +++ b/src/spotlight.cc @@ -184,10 +184,18 @@ int Spotlight::connectDevices() const bool anyConnectedBefore = anySpotlightDeviceConnected(); for (const auto& scanSubDevice : dev.subDevices) { - if (!scanSubDevice.deviceReadable) + const bool requiresWriteAccess = + scanSubDevice.type == DeviceScan::SubDevice::Type::Hidraw; + if (!scanSubDevice.deviceReadable + || (requiresWriteAccess && !scanSubDevice.deviceWritable)) { - logWarn(device) << tr("Sub-device not readable: %1 (%2:%3) %4") + logWarn(device) << tr("Sub-device not accessible: %1 (%2:%3) %4") .arg(dc->deviceName(), hexId(dev.id.vendorId), hexId(dev.id.productId), scanSubDevice.deviceFile); + QTimer::singleShot( + 0, this, + [this, name = dc->deviceName(), path = scanSubDevice.deviceFile]() { + emit deviceAccessError(name, path); + }); continue; } if (dc->hasSubDevice(scanSubDevice.deviceFile)) { continue; } diff --git a/src/spotlight.h b/src/spotlight.h index 9915f1d7..b6a72c07 100644 --- a/src/spotlight.h +++ b/src/spotlight.h @@ -53,6 +53,7 @@ class Spotlight : public QObject, public async::Async void deviceDisconnected(const DeviceId& id, const QString& name); void subDeviceConnected(const DeviceId& id, const QString& name, const QString& path); void subDeviceDisconnected(const DeviceId& id, const QString& name, const QString& path); + void deviceAccessError(const QString& name, const QString& path); void anySpotlightDeviceConnectedChanged(bool connected); void spotActiveChanged(bool isActive); void slideNavigationPressed(); From 67d38fc7bbb56768708048f53417be8638a10366 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Mon, 27 Jul 2026 17:25:23 -0500 Subject: [PATCH 38/67] KDEifaction of the preferences --- .github/workflows/ci-build.yml | 2 +- CMakeLists.txt | 4 +- Justfile | 1 + README.md | 2 +- cmake/modules/PkgDependenciesProjecteur.cmake | 1 + docker/Dockerfile.archlinux | 1 + packaging/arch/PKGBUILD | 1 + src/preferencesdlg.cc | 166 ++++++++++++++---- src/preferencesdlg.h | 28 ++- src/projecteurapp.cc | 6 +- src/settings.cc | 114 ++++++++++++ src/settings.h | 7 + 12 files changed, 280 insertions(+), 53 deletions(-) diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index ac9ee35e..818a0a06 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -16,7 +16,7 @@ jobs: - name: Install build dependencies run: >- pacman -Syu --noconfirm - base-devel cmake extra-cmake-modules git kconfig kcoreaddons kdbusaddons + base-devel cmake extra-cmake-modules git kconfig kconfigwidgets kcoreaddons kdbusaddons knotifications kwindowsystem kxmlgui layer-shell-qt libplasma qt6-base qt6-declarative qt6-tools diff --git a/CMakeLists.txt b/CMakeLists.txt index e5aaf76a..5207e43a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) find_package(Qt6 6.11 REQUIRED COMPONENTS Core DBus Gui LinguistTools Quick Widgets) -find_package(KF6 6.7 REQUIRED COMPONENTS Config CoreAddons DBusAddons Notifications +find_package(KF6 6.7 REQUIRED COMPONENTS Config ConfigWidgets CoreAddons DBusAddons Notifications Package KirigamiPlatform WindowSystem XmlGui) find_package(Plasma 6.7 REQUIRED) find_package(LayerShellQt 6.7 REQUIRED) @@ -87,7 +87,7 @@ target_include_directories(projecteur PRIVATE src "${CMAKE_CURRENT_BINARY_DIR}") target_link_libraries(projecteur PRIVATE Qt6::Core Qt6::DBus Qt6::Quick Qt6::Widgets - KF6::ConfigCore KF6::ConfigGui KF6::CoreAddons KF6::DBusAddons + KF6::ConfigCore KF6::ConfigGui KF6::ConfigWidgets KF6::CoreAddons KF6::DBusAddons KF6::Notifications KF6::WindowSystem KF6::XmlGui LayerShellQt::Interface ) diff --git a/Justfile b/Justfile index 1f2f60e9..aae918a1 100644 --- a/Justfile +++ b/Justfile @@ -115,6 +115,7 @@ deps: _require-arch extra-cmake-modules git kconfig + kconfigwidgets kcoreaddons kdbusaddons knotifications diff --git a/README.md b/README.md index 380e98f8..760ef575 100644 --- a/README.md +++ b/README.md @@ -159,7 +159,7 @@ and Hold Move actions for the same button. * C++17 compiler * CMake 3.20 or later * Qt 6.11 with Core, DBus, Gui, LinguistTools, Quick, and Widgets -* KDE Plasma 6.7 Wayland, including Libplasma, KConfig, KCoreAddons, +* KDE Plasma 6.7 Wayland, including Libplasma, KConfig, KConfigWidgets, KCoreAddons, KDBusAddons, KNotifications, KWindowSystem, and KXmlGui * LayerShellQt 6.7 * Extra CMake Modules 6.7 or later diff --git a/cmake/modules/PkgDependenciesProjecteur.cmake b/cmake/modules/PkgDependenciesProjecteur.cmake index 43b4516a..a87072e7 100644 --- a/cmake/modules/PkgDependenciesProjecteur.cmake +++ b/cmake/modules/PkgDependenciesProjecteur.cmake @@ -3,6 +3,7 @@ list(APPEND _PkgDeps_Projecteur_archlinux "qt6-declarative>=6.11" "layer-shell-qt>=6.7" "kconfig>=6.7" + "kconfigwidgets>=6.7" "kcoreaddons>=6.7" "kdbusaddons>=6.7" "knotifications>=6.7" diff --git a/docker/Dockerfile.archlinux b/docker/Dockerfile.archlinux index 4f6dc175..5a08a837 100644 --- a/docker/Dockerfile.archlinux +++ b/docker/Dockerfile.archlinux @@ -20,6 +20,7 @@ RUN pacman --noconfirm -Sy && pacman --noconfirm -S \ qt6-declarative \ extra-cmake-modules \ kconfig \ + kconfigwidgets \ kcoreaddons \ kdbusaddons \ knotifications \ diff --git a/packaging/arch/PKGBUILD b/packaging/arch/PKGBUILD index 3341837f..43081ccf 100644 --- a/packaging/arch/PKGBUILD +++ b/packaging/arch/PKGBUILD @@ -14,6 +14,7 @@ depends=( 'gcc-libs' 'glibc' 'kconfig>=6.7' + 'kconfigwidgets>=6.7' 'kcoreaddons>=6.7' 'kdbusaddons>=6.7' 'knotifications>=6.7' diff --git a/src/preferencesdlg.cc b/src/preferencesdlg.cc index 0823be37..f8340c89 100644 --- a/src/preferencesdlg.cc +++ b/src/preferencesdlg.cc @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -28,7 +29,6 @@ #include #include #include -#include #include @@ -52,39 +52,37 @@ namespace { // ------------------------------------------------------------------------------------------------- PreferencesDialog::PreferencesDialog(Settings* settings, Spotlight* spotlight, Mode dialogMode, QWidget* parent) - : QDialog(parent) + : KConfigDialog(parent, QStringLiteral("preferences"), settings->configSkeleton()) + , m_settings(settings) , m_presetComboStyle(std::make_unique()) - , m_closeMinimizeBtn(new QPushButton(this)) { + setAttribute(Qt::WA_DeleteOnClose, false); setWindowTitle(QCoreApplication::applicationName() + " - " + tr("Preferences")); setWindowIcon(QIcon(":/icons/projecteur-tray.svg")); + setFaceType(KPageDialog::Tabbed); setDialogMode(dialogMode); - connect(m_closeMinimizeBtn, &QPushButton::clicked, this, [this](){ - if (m_dialogMode == Mode::ClosableDialog) { this->close(); } - else { this->showMinimized(); } - }); const auto settingsWidget = createSettingsTabWidget(settings); settingsWidget->setDisabled(settings->overlayDisabled()); - const auto tabWidget = new QTabWidget(this); - tabWidget->addTab(settingsWidget, tr("Spotlight")); - m_deviceswidget = new DevicesWidget(settings, spotlight, this); - tabWidget->addTab(m_deviceswidget, tr("Devices")); - tabWidget->addTab(createLogTabWidget(), tr("Log")); - - const auto overlayCheckBox = new QCheckBox(this); + const auto spotlightPage = new QWidget(this); + const auto spotlightLayout = new QVBoxLayout(spotlightPage); + const auto overlayCheckBox = new QCheckBox(tr("Enable spotlight overlay"), spotlightPage); overlayCheckBox->setChecked(!settings->overlayDisabled()); - tabWidget->tabBar()->setTabButton(0, QTabBar::ButtonPosition::LeftSide, overlayCheckBox); + spotlightLayout->addWidget(overlayCheckBox); + spotlightLayout->addWidget(settingsWidget); - const auto btnHBox = new QHBoxLayout; - btnHBox->addStretch(1); - btnHBox->addWidget(m_closeMinimizeBtn); + addPage(spotlightPage, tr("Spotlight"), QStringLiteral("preferences-desktop-display"), + QString(), false); + m_deviceswidget = new DevicesWidget(settings, spotlight, this); + addPage(m_deviceswidget, tr("Devices"), QStringLiteral("input-mouse"), QString(), false); + addPage(createLogTabWidget(), tr("Log"), QStringLiteral("utilities-log-viewer"), + QString(), false); - const auto mainVBox = new QVBoxLayout(this); - mainVBox->addWidget(tabWidget); - mainVBox->addLayout(btnHBox); + if (auto* helpButton = buttonBox()->button(QDialogButtonBox::Help)) { + helpButton->hide(); + } connect(overlayCheckBox, &QCheckBox::toggled, this, [settings](bool checked){ settings->setOverlayDisabled(!checked); @@ -95,6 +93,34 @@ PreferencesDialog::PreferencesDialog(Settings* settings, Spotlight* spotlight, overlayCheckBox->setChecked(!disabled); settingsWidget->setDisabled(disabled); }); + + const auto modified = [this]() { settingsModified(); }; + connect(settings, &Settings::showSpotShadeChanged, this, modified); + connect(settings, &Settings::spotSizeChanged, this, modified); + connect(settings, &Settings::showCenterDotChanged, this, modified); + connect(settings, &Settings::dotSizeChanged, this, modified); + connect(settings, &Settings::dotColorChanged, this, modified); + connect(settings, &Settings::dotOpacityChanged, this, modified); + connect(settings, &Settings::shadeColorChanged, this, modified); + connect(settings, &Settings::shadeOpacityChanged, this, modified); + connect(settings, &Settings::cursorChanged, this, modified); + connect(settings, &Settings::spotShapeChanged, this, modified); + connect(settings, &Settings::spotRotationChanged, this, modified); + connect(settings, &Settings::showBorderChanged, this, modified); + connect(settings, &Settings::borderColorChanged, this, modified); + connect(settings, &Settings::borderSizeChanged, this, modified); + connect(settings, &Settings::borderOpacityChanged, this, modified); + connect(settings, &Settings::zoomEnabledChanged, this, modified); + connect(settings, &Settings::zoomFactorChanged, this, modified); + connect(settings, &Settings::multiScreenOverlayEnabledChanged, this, modified); + for (const auto& shape : Settings::spotShapes()) { + if (auto* shapeSettings = settings->shapeSettings(shape.name())) { + connect(shapeSettings, &QQmlPropertyMap::valueChanged, this, modified); + } + } + + m_appliedSpotlightSettings = settings->spotlightSettings(); + updateButtons(); } QWidget* PreferencesDialog::createSettingsTabWidget(Settings* settings) @@ -115,21 +141,12 @@ QWidget* PreferencesDialog::createSettingsTabWidget(Settings* settings) const auto presetSelector = createPresetSelector(settings); - const auto resetBtn = new IconButton(Font::Icon::gear_12, widget); - resetBtn->setToolTip(tr("Reset all settings to their default value.")); - resetBtn->setSizePolicy(resetBtn->sizePolicy().horizontalPolicy(), QSizePolicy::Minimum); - connect(resetBtn, &QPushButton::clicked, settings, &Settings::setDefaults); - const auto testBtn = new QPushButton(tr("&Show test..."), widget); connect(testBtn, &QPushButton::clicked, this, &PreferencesDialog::testButtonClicked); const auto hbox = new QHBoxLayout; - hbox->addWidget(resetBtn); hbox->addWidget(testBtn); - - const auto invisibleBtn = new QPushButton(this); - invisibleBtn->setVisible(false); - invisibleBtn->setDefault(true); + hbox->addStretch(1); const auto mainVBox = new QVBoxLayout(widget); mainVBox->addLayout(mainHBox); @@ -705,18 +722,88 @@ void PreferencesDialog::setDialogMode(Mode dialogMode) if (dialogMode == Mode::ClosableDialog) { setWindowFlags(Qt::Dialog); - m_closeMinimizeBtn->setText(tr("&Close")); - m_closeMinimizeBtn->setToolTip(tr("Close the preferences dialog.")); } else if (dialogMode == Mode::MinimizeOnlyDialog) { setWindowFlags(Qt::Window); setWindowFlags(windowFlags() & ~Qt::WindowMaximizeButtonHint); setWindowFlags(windowFlags() & ~Qt::WindowCloseButtonHint); + } +} + +// ------------------------------------------------------------------------------------------------- +void PreferencesDialog::settingsModified() +{ + if (isVisible()) { + updateButtons(); + } else { + m_appliedSpotlightSettings = m_settings->spotlightSettings(); + } +} + +// ------------------------------------------------------------------------------------------------- +void PreferencesDialog::restoreAppliedSettings() +{ + m_settings->setSpotlightSettings(m_appliedSpotlightSettings); + resetPresetCombo(); + updateButtons(); +} + +// ------------------------------------------------------------------------------------------------- +void PreferencesDialog::updateSettings() +{ + KConfigDialog::updateSettings(); + m_appliedSpotlightSettings = m_settings->spotlightSettings(); +} + +// ------------------------------------------------------------------------------------------------- +void PreferencesDialog::updateWidgets() +{ + KConfigDialog::updateWidgets(); + restoreAppliedSettings(); +} + +// ------------------------------------------------------------------------------------------------- +void PreferencesDialog::updateWidgetsDefault() +{ + KConfigDialog::updateWidgetsDefault(); + m_settings->setDefaults(); + resetPresetCombo(); +} - m_closeMinimizeBtn->setText(tr("&Minimize")); - m_closeMinimizeBtn->setToolTip(tr("Minimize the preferences dialog.")); +// ------------------------------------------------------------------------------------------------- +bool PreferencesDialog::hasChanged() +{ + return KConfigDialog::hasChanged() + || m_settings->spotlightSettings() != m_appliedSpotlightSettings; +} + +// ------------------------------------------------------------------------------------------------- +bool PreferencesDialog::isDefault() +{ + return KConfigDialog::isDefault() + && m_settings->spotlightSettings() == Settings::defaultSpotlightSettings(); +} + +// ------------------------------------------------------------------------------------------------- +void PreferencesDialog::accept() +{ + if (m_dialogMode == Mode::MinimizeOnlyDialog) { + showMinimized(); + return; } + KConfigDialog::accept(); +} + +// ------------------------------------------------------------------------------------------------- +void PreferencesDialog::reject() +{ + restoreAppliedSettings(); + if (m_dialogMode == Mode::MinimizeOnlyDialog) { + showMinimized(); + return; + } + KConfigDialog::reject(); } // ------------------------------------------------------------------------------------------------- @@ -745,15 +832,18 @@ bool PreferencesDialog::event(QEvent* e) else if (e->type() == QEvent::WindowDeactivate) { setDialogActive(false); } - return QDialog::event(e); + return KConfigDialog::event(e); } // ------------------------------------------------------------------------------------------------- -void PreferencesDialog::closeEvent(QCloseEvent* /* ev */) +void PreferencesDialog::closeEvent(QCloseEvent* e) { if (m_dialogMode == Mode::MinimizeOnlyDialog) { emit exitApplicationRequested(); + return; } + restoreAppliedSettings(); + KConfigDialog::closeEvent(e); } // ------------------------------------------------------------------------------------------------- @@ -767,7 +857,7 @@ void PreferencesDialog::keyPressEvent(QKeyEvent* e) return; } } - QDialog::keyPressEvent(e); + KConfigDialog::keyPressEvent(e); } // ------------------------------------------------------------------------------------------------- diff --git a/src/preferencesdlg.h b/src/preferencesdlg.h index a315075a..2374de5e 100644 --- a/src/preferencesdlg.h +++ b/src/preferencesdlg.h @@ -2,9 +2,11 @@ // - See LICENSE.md and README.md #pragma once -#include +#include + #include #include +#include #include @@ -23,7 +25,7 @@ class PresetComboCustomStyle : public QProxyStyle }; // ------------------------------------------------------------------------------------------------- -class PreferencesDialog : public QDialog +class PreferencesDialog : public KConfigDialog { Q_OBJECT @@ -41,19 +43,32 @@ class PreferencesDialog : public QDialog Mode mode() const { return m_dialogMode; } void setMode(Mode dialogMode); +public slots: + void accept() override; + void reject() override; + signals: void dialogActiveChanged(bool active); void testButtonClicked(); void exitApplicationRequested(); +protected slots: + void updateSettings() override; + void updateWidgets() override; + void updateWidgetsDefault() override; + protected: - virtual bool event(QEvent* event) override; - virtual void closeEvent(QCloseEvent* e) override; - virtual void keyPressEvent(QKeyEvent* e) override; + bool event(QEvent* event) override; + void closeEvent(QCloseEvent* e) override; + void keyPressEvent(QKeyEvent* e) override; + bool hasChanged() override; + bool isDefault() override; private: void setDialogActive(bool active); void setDialogMode(Mode dialogMode); + void settingsModified(); + void restoreAppliedSettings(); void resetPresetCombo(); QWidget* createSettingsTabWidget(Settings* settings); @@ -68,9 +83,10 @@ class PreferencesDialog : public QDialog QWidget* createLogTabWidget(); private: + Settings* const m_settings; + QVariantMap m_appliedSpotlightSettings; std::unique_ptr m_presetComboStyle; QComboBox* m_presetCombo = nullptr; - QPushButton* m_closeMinimizeBtn = nullptr; DevicesWidget* m_deviceswidget = nullptr; bool m_active = false; Mode m_dialogMode = Mode::ClosableDialog; diff --git a/src/projecteurapp.cc b/src/projecteurapp.cc index 61930a8d..5178f1e3 100644 --- a/src/projecteurapp.cc +++ b/src/projecteurapp.cc @@ -693,10 +693,6 @@ void ProjecteurApplication::showPreferences(bool show) showAndActivate(m_dialog.get()); } else { - if (m_dialog->mode() == PreferencesDialog::Mode::MinimizeOnlyDialog) { - m_dialog->showMinimized(); - } else { - m_dialog->hide(); - } + m_dialog->reject(); } } diff --git a/src/settings.cc b/src/settings.cc index 86c05d84..8b464d9c 100644 --- a/src/settings.cc +++ b/src/settings.cc @@ -382,6 +382,120 @@ const QList& Settings::spotShapes() return shapes; } +// ------------------------------------------------------------------------------------------------- +Settings::SpotlightSettings Settings::spotlightSettings() const +{ + SpotlightSettings values{ + {::settings::showSpotShade, m_showSpotShade}, + {::settings::spotSize, m_spotSize}, + {::settings::showCenterDot, m_showCenterDot}, + {::settings::dotSize, m_dotSize}, + {::settings::dotColor, m_dotColor}, + {::settings::dotOpacity, m_dotOpacity}, + {::settings::shadeColor, m_shadeColor}, + {::settings::shadeOpacity, m_shadeOpacity}, + {::settings::cursor, static_cast(m_cursor)}, + {::settings::spotShape, m_spotShape}, + {::settings::spotRotation, m_spotRotation}, + {::settings::showBorder, m_showBorder}, + {::settings::borderColor, m_borderColor}, + {::settings::borderSize, m_borderSize}, + {::settings::borderOpacity, m_borderOpacity}, + {::settings::zoomEnabled, m_zoomEnabled}, + {::settings::zoomFactor, m_zoomFactor}, + {::settings::multiScreenOverlay, m_multiScreenOverlayEnabled}, + }; + + for (const auto& shape : spotShapes()) + { + const auto propertyMap = m_shapeSettings.find(shape.name()); + if (propertyMap == m_shapeSettings.cend()) { continue; } + + for (const auto& setting : shape.shapeSettings()) { + values.insert(QString("Shape.%1/%2").arg(shape.name(), setting.settingsKey()), + propertyMap->second->property(setting.settingsKey().toLocal8Bit())); + } + } + return values; +} + +// ------------------------------------------------------------------------------------------------- +Settings::SpotlightSettings Settings::defaultSpotlightSettings() +{ + SpotlightSettings values{ + {::settings::showSpotShade, ::settings::defaultValue::showSpotShade}, + {::settings::spotSize, ::settings::defaultValue::spotSize}, + {::settings::showCenterDot, ::settings::defaultValue::showCenterDot}, + {::settings::dotSize, ::settings::defaultValue::dotSize}, + {::settings::dotColor, QColor(::settings::defaultValue::dotColor)}, + {::settings::dotOpacity, ::settings::defaultValue::dotOpacity}, + {::settings::shadeColor, QColor(::settings::defaultValue::shadeColor)}, + {::settings::shadeOpacity, ::settings::defaultValue::shadeOpacity}, + {::settings::cursor, static_cast(::settings::defaultValue::cursor)}, + {::settings::spotShape, QString(::settings::defaultValue::spotShape)}, + {::settings::spotRotation, ::settings::defaultValue::spotRotation}, + {::settings::showBorder, ::settings::defaultValue::showBorder}, + {::settings::borderColor, QColor(::settings::defaultValue::borderColor)}, + {::settings::borderSize, ::settings::defaultValue::borderSize}, + {::settings::borderOpacity, ::settings::defaultValue::borderOpacity}, + {::settings::zoomEnabled, ::settings::defaultValue::zoomEnabled}, + {::settings::zoomFactor, ::settings::defaultValue::zoomFactor}, + {::settings::multiScreenOverlay, ::settings::defaultValue::multiScreenOverlay}, + }; + + for (const auto& shape : spotShapes()) { + for (const auto& setting : shape.shapeSettings()) { + values.insert(QString("Shape.%1/%2").arg(shape.name(), setting.settingsKey()), + setting.defaultValue()); + } + } + return values; +} + +// ------------------------------------------------------------------------------------------------- +void Settings::setSpotlightSettings(const SpotlightSettings& values) +{ + setShowSpotShade(values.value(::settings::showSpotShade, m_showSpotShade).toBool()); + setSpotSize(values.value(::settings::spotSize, m_spotSize).toInt()); + setShowCenterDot(values.value(::settings::showCenterDot, m_showCenterDot).toBool()); + setDotSize(values.value(::settings::dotSize, m_dotSize).toInt()); + setDotColor(values.value(::settings::dotColor, m_dotColor).value()); + setDotOpacity(values.value(::settings::dotOpacity, m_dotOpacity).toDouble()); + setShadeColor(values.value(::settings::shadeColor, m_shadeColor).value()); + setShadeOpacity(values.value(::settings::shadeOpacity, m_shadeOpacity).toDouble()); + setCursor(static_cast( + values.value(::settings::cursor, static_cast(m_cursor)).toInt())); + setSpotShape(values.value(::settings::spotShape, m_spotShape).toString()); + setSpotRotation(values.value(::settings::spotRotation, m_spotRotation).toDouble()); + setShowBorder(values.value(::settings::showBorder, m_showBorder).toBool()); + setBorderColor(values.value(::settings::borderColor, m_borderColor).value()); + setBorderSize(values.value(::settings::borderSize, m_borderSize).toInt()); + setBorderOpacity(values.value(::settings::borderOpacity, m_borderOpacity).toDouble()); + setZoomEnabled(values.value(::settings::zoomEnabled, m_zoomEnabled).toBool()); + setZoomFactor(values.value(::settings::zoomFactor, m_zoomFactor).toDouble()); + setMultiScreenOverlayEnabled( + values.value(::settings::multiScreenOverlay, m_multiScreenOverlayEnabled).toBool()); + + for (const auto& shape : spotShapes()) + { + auto* propertyMap = shapeSettings(shape.name()); + if (!propertyMap) { continue; } + + for (const auto& setting : shape.shapeSettings()) { + const auto key = QString("Shape.%1/%2").arg(shape.name(), setting.settingsKey()); + propertyMap->setProperty( + setting.settingsKey().toLocal8Bit(), + values.value(key, propertyMap->property(setting.settingsKey().toLocal8Bit()))); + } + } +} + +// ------------------------------------------------------------------------------------------------- +KCoreConfigSkeleton* Settings::configSkeleton() const +{ + return m_config.get(); +} + // ------------------------------------------------------------------------------------------------- void Settings::setDefaults() { diff --git a/src/settings.h b/src/settings.h index 0deee5d5..54ce9cb0 100644 --- a/src/settings.h +++ b/src/settings.h @@ -13,6 +13,7 @@ struct DeviceId; class InputMapConfig; +class KCoreConfigSkeleton; class PresetModel; class ProjecteurConfig; class QQmlPropertyMap; @@ -149,6 +150,12 @@ class Settings : public QObject static const QList& spotShapes(); QQmlPropertyMap* shapeSettings(const QString& shapeName); + using SpotlightSettings = QVariantMap; + SpotlightSettings spotlightSettings() const; + static SpotlightSettings defaultSpotlightSettings(); + void setSpotlightSettings(const SpotlightSettings& values); + KCoreConfigSkeleton* configSkeleton() const; + struct StringProperty { enum Type { Integer, Double, Bool, StringEnum, Color }; From 32d276334aa94e652bf03f42728dd5a053f33d6a Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Tue, 28 Jul 2026 09:37:01 -0500 Subject: [PATCH 39/67] Better screenshots --- Justfile | 6 ++++ README.md | 36 +++++++++++++++---- doc/screenshot-applet-presentation-timer.png | Bin 0 -> 28178 bytes doc/screenshot-applet-timer-countdown.png | Bin 0 -> 42652 bytes doc/screenshot-notification.png | Bin 0 -> 54915 bytes doc/screenshot-plasma-applet.png | Bin 0 -> 30345 bytes doc/screenshot-settings.png | Bin 133056 -> 151252 bytes doc/screenshot-spot.png | Bin 163409 -> 791178 bytes 8 files changed, 35 insertions(+), 7 deletions(-) create mode 100644 doc/screenshot-applet-presentation-timer.png create mode 100644 doc/screenshot-applet-timer-countdown.png create mode 100644 doc/screenshot-notification.png create mode 100644 doc/screenshot-plasma-applet.png diff --git a/Justfile b/Justfile index aae918a1..c09664c2 100644 --- a/Justfile +++ b/Justfile @@ -97,6 +97,12 @@ install: _stop-projecteur build package fi systemctl --user restart plasma-plasmashell.service + dbus-send --session --print-reply=literal \ + --dest=org.freedesktop.DBus \ + /org/freedesktop/DBus \ + org.freedesktop.DBus.StartServiceByName \ + string:org.projecteur.Projecteur \ + uint32:0 >/dev/null _stop-projecteur: #!/usr/bin/env bash diff --git a/README.md b/README.md index 760ef575..f18fefeb 100644 --- a/README.md +++ b/README.md @@ -78,14 +78,32 @@ So here it is: a Linux application for the Logitech Spotlight. * Map any button on the device to (almost) any keyboard combination. * Switch between (cycle through) custom spotlight presets. * Audio Volume / Horizontal and Vertical Scrolling (Logitech Spotlight). -* Vibration (Timer) Support for the Logitech Spotlight and Spotlight 2 +* Vibration support for compatible presenters, including the Logitech Spotlight + and Spotlight 2; the presentation timer triggers haptic feedback on completion +* Native KDE Plasma system tray applet with presenter status, first-class + presentation timer settings, a live remaining-minutes badge, and quick controls +* Native KDE Plasma notifications for presenter status, battery level, access + errors, and presentation timers * Usable without a presenter device (e.g. for online presentations) ### Screenshots -[Projecteur preferences](./doc/screenshot-settings.png) -[Projecteur spotlight overlay](./doc/screenshot-spot.png) +[KDE-styled Projecteur preferences](./doc/screenshot-settings.png) +[Circular Projecteur spotlight demonstrating zoom, shade, and a green border](./doc/screenshot-spot.png) [Projecteur Plasma tray popup](./doc/screenshot-traymenu.png) +[Projecteur presenter connected notification in KDE Plasma](./doc/screenshot-notification.png) + +**KDE Plasma system tray applet integration** + +[Projecteur system tray applet showing one connected presenter in KDE Plasma](./doc/screenshot-plasma-applet.png) + +**Presentation timer in the Plasma applet** + +[First-class presentation timer settings in the Projecteur Plasma applet](./doc/screenshot-applet-presentation-timer.png) + +**Presentation timer countdown on the panel icon** + +[Projecteur panel icon and tooltip showing 14 minutes remaining](./doc/screenshot-applet-timer-countdown.png) ## Supported Environments @@ -189,7 +207,7 @@ just install # Build, package, and install the package with pacman through the checked-in `packaging/arch/PKGBUILD`. `just install` uses `sudo` only for dependency installation and the final `pacman -U`. It stops a running Projecteur instance, compiles, packages and installs the current tree, then -restarts `plasma-plasmashell.service`. +restarts `plasma-plasmashell.service` and Projecteur. Installing is required for zoom: KWin authorizes the screenshot interface by matching the running executable with the installed `org.projecteur.Projecteur.desktop` metadata. A binary run @@ -221,9 +239,13 @@ file in this repository: `55-projecteur.rules.in` Projecteur provides a native Plasma system tray popup while the application is running. It shows connected presenters and offers quick access to the overlay, -presets, spotlight test, preferences, about dialog, and quit action. Plasma owns -the popup placement and closes it when the icon is clicked again or focus moves -elsewhere. +presets, spotlight test, and first-class presentation timer controls, as well as +the preferences, about, and quit actions. Plasma owns the popup placement and +closes it when the icon is clicked again or focus moves elsewhere. + +While the presentation timer is running, the panel icon shows how many minutes +remain. When the timer finishes, Projecteur triggers configurable haptic feedback +on compatible presenter devices such as the Logitech Spotlight 2. If the system tray icon is missing, see the [Troubleshooting](#missing-system-tray) section. diff --git a/doc/screenshot-applet-presentation-timer.png b/doc/screenshot-applet-presentation-timer.png new file mode 100644 index 0000000000000000000000000000000000000000..baf506461ee52e497b50cdefb2d2ee26e8a59fc8 GIT binary patch literal 28178 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 literal 0 HcmV?d00001 diff --git a/doc/screenshot-applet-timer-countdown.png b/doc/screenshot-applet-timer-countdown.png new file mode 100644 index 0000000000000000000000000000000000000000..5133bf760c0f20d43b72d7b8b74d3ce5feedb966 GIT binary patch literal 42652 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 Ut>Ejv*mwNt)NqtnC)H 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⁣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 literal 0 HcmV?d00001 diff --git a/doc/screenshot-notification.png b/doc/screenshot-notification.png new file mode 100644 index 0000000000000000000000000000000000000000..f25fb1aa04fc8e36aec21e106d1123243f6f6098 GIT binary patch literal 54915 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

M6`c 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 Dif`xc literal 0 HcmV?d00001 diff --git a/doc/screenshot-settings.png b/doc/screenshot-settings.png index d48ea9811911d01338a470f7900b09fa4f40491e..310416d0ac8045e301f925bd825dc03185921878 100644 GIT binary patch literal 151252 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%0Dby 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⧁4E{y06iLqJor!lpvx=N=Zlv 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

6Upcd=P!Tb3 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
1}f7-4)bRrf)*4fh4CjeAF8uTS>u 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

O)bup~AMGu^JeqIW-E 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

UJbt3U^gnNH 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∨jJn_+b@ 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%0D{A%Oq-1>cc>PG3{%_?BMi+dx-3s$^ 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 DRx{R? literal 163409 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≀@gM|DG0|Ebg%6%;@|E;L#_jj`jOYYriR;} zMlqN-v~pMT`K(Q*A4mql3&U9(<&$<;9-v2RUcgYS(rDn>E-!_7K@qjP6Hj?*h8&%% zZc8nkldVHmqt`Gor@$1;Wh8R;Z85yBR9b{i05l^mGFlm8m|vMF%@w!0H8o^s5TtcR z4<zu+4}x<~8Om=3xU}cbqo#y*$1vHc<5OE34w_hhj-$@m2KCmOkcD~-lSYeT zv9Y4M;5qL%pe!p32j$*oVhY{dv@qcQfR}&s)~#X&Yiy$8fIzCM$+ff3vejNpz+Y}^ zrQMwNiP>5H7+dg$+ErLHmtmZp=GI$efY&q#b_el~Oaw0`Cz4yawC2L8eCC&*Bz`h+ zzeN|Nf%62FknYNyy6zJ^!Y5A=PV!G9G}Le-8WX9)nOEHN=nm-f+Y1NmHyGMV?J;iB zl}Nky@>%s|{@e(UdYmCG`I2bw%#;7p^WW_38}YK3@m(gr2`C7g*=1!-7j2hUd#3MN zj@1PC`CS6En3$`~nM?p<%Of);1DPH|HYX0W{at^Tm8gT{a-tzmIe{fl7h2v)t&>pk zS9nvJYV>Gqe`SELvQ<f}_J6dHlM zSfygpE5pQhz6(E~05gn{lSwMmU)=A9<7mq7hXKQ>PPH(>VWE4rKO6sG5|J!)ozhi& z!VwYWefIeJ2c1;cs|S%Cv4RNpS!hv_M$b2EWC=;CF9wwuGWvm8VrS)f!$E0wvL0b5gGt( zcr#-6lOZfHlM8si#}i?JKn4798hU55dXA6BhPVY!4;4wp#dmfUXXzQ( zicf57!JOcq^CbTI%4%+CDzwZxYRZ2jC(PQS7tr_5(xKzAAtcI6^d~!e=N+$ z-%Pd>Un;DiG2Fo_yEQnFfAcxq>e0)r*{oTqmDaIJ`_%M3PFx%@%q2w0+p%7IVmGDR z<9oilK1ksEXod5u%cLMmOQ>6j^>|g)c7;VF7zn5pTceG{G8Gw*vrZma)y$k8 zVR@d82)UZI8Tws98;^;1T<3qFoKGVpl!}T*X}D2`R881qsaH3HR2$8^qd`hCWEdttWpa+|kJ#UbumCDjK7yY-!yFHw=Rj`2c2ptv)V z293q4?IygJ3Z~*Zt(qv|T;)91b7mh{0RGG>U-V})fu?=RN{)lhM^I;knDA1SkU*-= zWcdZJma2=ItE-oK85fVZ>Mc9k4)-oOGP*mY&#D~;*R*clI@*m))@ z^kOn~Zw(#-+(L)PS^*+MYm~X@CDdIp>SyZ!tvgTk&SiRi3IkTW_00?~jS2Khg;)|cx9Jg80giy8r zE+~_elT$Tdr1IXS?@Zt_+VbOaH9sY=9NQ&~R~w0L>-yO_8|lNikVD%_aFbZoApU_$ z!TkA2RpDkQ*N>k+?{hJCm-aM|o6M}(l=baRc(`7yiH1<|y$&U-|2}OigpUWieNl!a zGXF{!6KH~es+KukTl-boFm1cJw9x*>in8(Jl^tTvU0l!oqgyxQJFUALJAoK`pZ9oK zcXcM?=64Yha4!6mk)g*yvNW=SO2ix&sE{)^g)4L^BF6a69saRsW~RLTm|6aoJ#XX3Zp|vIDDk5-aff?oN z*(Bf5bdMg5&;@xxr&qwh00#~Qk0!puo>!)FuG;>^gvs|qS`4h*v3!A({m6Im%@ze6 zdixz_rw7#=KRO+>mlyMeRz@?TZo*7Bo}98cnNMgKPIe*jN6snQ;?XtG=MzhltUenP z|DJ-DBq?K;VPdqPTc~PA?&eW{&uBqYEO)QDy?y2Nj=P7Oyy}alVb<_8#LCv@CXjln zq(SmV^WZ@+sMMyHmY%fYtRc0KmVG=bm1k6|fkTMEvOJCSt)7ZH#zFAW&QvL&ytn=f z4SJJ@A#-8Fr%&^?TMxn-5v_s9^5YHt+eb6a>hrnz*bc@rSt{Y^fKWRw_oTpaqLQ+F zylOn!Q*Of#YWfoMk@wJ_p^KKbI`lp}d+=&|EXkp+PYrm+^nGI8s42x0v5m;>C@NAA zJY6(6XE80D9D#89+46=rm3Bs0fLVH;aBP@TWvPgev|M0{gIzO-Gd#OBlykq zo{COoj-;uBgTv1sKXf-gJaKh%?<*AXxZcokPibIb-9bwwr-g%5oXfekE((-rpB!3P z9(6uTJ)9^B32h!7P0arBj4?y`8_xq`e78ORtPGMj*@s*WrW}0*HvCKm1|WDBhUc0k zpPt)F8miL*%$K)17!@nU z55R{e2&2Gr#KlvS8D_>UC?v34Mh7B~mY1@k&rnuW)Qf#8?kRP2KD$1{FiHVut$J=| zMaPPBWH|AZDLQu4Zt8J{a&I}}4A@0>o0}IHoBh4n@3@{r1)_U=&BlWqGkeEp7BdPg zm8RFc&W^*D``!jiejROh(`%EAo~U>JmVq$S>K7P z?nEFJJUvgSV6_6m3mj9Wd9qrk(G3>{#hkNX}O3`KyA2#$iHY#O;`~h?q zIw%9X@x%i5mnSX9TZ-z>C~mSqVT-b2qfWj2A{HtFW^-$bIbP~{F@C}eA!*e+a<|mr zw1^(Ts5cf^%#h4+T%J2U;v|*6PQw2qIwmqw(y|!^VJJb%He*he*w_E&x(m*y5SqK; zf^5s?3G~T97GaMvN#4}`?)za8o(s#?usAvrI53VcN>*x%pDzTN{fgp9e+Nm$g!@6Q zgc~I(E4l5YiOMHZX^;@7^?7*gubCXActK58L0MTMsKGZdFtE6T^tf0sBQs-bdo>=> zsj4mUJZFHJ(4xigHWF7DqYD)amB_inz<)hj;!Ub{V0~)X9S2s?-}?63+r#fF$`vSs zo7=Rk)F=A5uU|#GA}R{o)#0&bJ*RY(f}UH(&O}fa`s}3b@NQ(U=7(j=0?p9I{M=lTcOwmrv}a6QTxL>z zM8{jD+y@kjT0Rp}WN$ICs5$1$$w(jBlLc#MHEJsObsFb7?*wWKP=0tm+X9E^6$fK! z@$}vbrhdQ}`ij`VMjV2>;K8?p=BVc9QpnPT`@l1?aMGVk#U@9a8&v(7PKmrWu4(;d zthW*$lrl5df9T5yS{FocwMC`K*vjF3ek&Pa#YuJx82XO8&wz%a7RyX@AvO_Bp8W=MUoaOzy1hmHosqS z=M2-uXoxHQXHZsFtc7$8SVr|sH}VTiKgZn0dh<5KaKB>-G4FsdiEfi+XWLCc9etyi zHC#74d206k^2hYMN9$8hyw8uWKMp-pONBckiC25|;!A(+5HoDJN9rUI$QYlCfxqKh zyu&TXeCFnFMI@^DYG>VNxD(QF=3Y%H{qc@j@0TSesvy)?#Me2j#^Op>xD-H(A!AMH zbFxUVzdniUE0a49h7Pc0TaK5VWnQ#`*cHf^o1JA=@IB3EGQanZu)t^fkx7f&PxbBQ z;Ni7>vR{}rHlF0-VU+0}2oD=mmr5;gJZm-{rKoo&r^l8Y==cgqn5X(1lF+e&I z(KPNs$G`?5y?JzfzSXm_S~3Snpi>2<#l)_5CNx)s-e+O)#q)pZV>KEE4+?hs%+4f# zdVxkI<8-mm#h&wrchc`@t$ZJg&KW$O$?7k3xjy8W801ZZ!Tn6lD8;C_X~KBOj)~+1}py+13S0GimU8`5;I4?78&a zk{O=I=H{f-SN&J)+d@LF4=@k{U<_0jggZC9`<88HmF?rxfJgZwxuL zQCuB!K*0?~&(k-sUNNQ^JlaX6`Fh$OU2}>+Z0&B(rF3ak)O)y~AkVT~gf%#&`Vibg zL{5D}K}e}-NfTdOMh4r|dR)ku937`A>#bVl=cd-yLhpWKq3E$xgc~oo*GxK_BT4p+ z=j7-Y*$$A_`1#E*LtuKyVLrzhW0I2cZJSv+V$V{EvaPN_eU7>t}j z>Sd|~Tq;r+|*?zfQORE+^ ziARhF#+2a~G*|TtYPV?O)#8;hLrIS!Rwf)>ihh+$cf_+dHSc}d^A$PHST`C{ZtfuF zHfbRm zA!3}V-l!`;@cMKLp0(ObW$yB2)@it%J9{VoXnGzQ&uzvATWp?_x|VbzYa(Fr8%#=M zN~N`#+$$%iZ;olpCy*A7*20zJU9z;Ykty#2)YCJaEU)A1rJ*4GO>0gsAqp8X-lBSu zuG8e4T_oCyY3s5#`IN- zb9MZ_5k@KWJcydOR6fXHV`+otP-KF>)_(Ik`E#4^(k~yLurD3G zfxpIM4iR5QzfE|Zpb&HYW`!E{vP2>j7#c6QU*&1I=rS=GP5F9*#T>eA7xd!f1Z*4S zTgV7AyH%SZ1omoQ51D8L4sJp76{L5<@9(1g2eBq_INOr7|4kW#;>!Q3yTtXet5%w0 z$0{g*rKG{>Fl$p2M_%FD`f_f*7xcMMWA4uQ@WIy&i|A4hxZ|XF?318KWr7)^Hd4%U z?(H2yEErY&tJL6N!Yhf#A%@)~5;j3TaBP%G=IO-hmj3j7*0j8^BDZ_|sQpKW;aF36@jP*Xu}6x9GT-O>2av22|)c zSFsmmH?##T_;J^Nt%p^g->j#w?>B)NJVWy-q0g+ph$n@T^77%zn~h$IQi&^%VFjm9 zreKq&_3u;gEe_WSbSAV$7;{ukxNwsXx3!Oab;Ck-A3bv++Br1nV$R@mrrDeg4|MaM zDQ0xvaU$o2n?gaMr_cFhV%(EATFa=-f*YXl^GzhJjmBv>KmU6p$yj(Gqbq&?T_gZ_ zxO{%eQ61bM8{S6e+HsSED)was+&y^^s^!=zp+rr z=q-i#UDv@Ed~0eU3wocNDJB`KK0ci_hK3|5k#yfw<)c)i~IY zXv^HL2NQJ|4EG3a0vTP-kP}Q;D{Z&#Kn-rbRV2`~mo3Jl+HrcZ(BM&vf|l3R`Ki}o zZx)BeL{u}@#8l3f>{q*f=&fNi`C>G;zjme8@RJEVvP&RHKU_cY-(5a>oVTs>tnP=7 zPJHJp+Ll7I9ir`m_@n%=>ayzDe4%EWz`itF?t=~FCewsn_;=}aZ1l*X^9Jg9sl%-| zC+Cv(66*d<@sW}3FE6}hFVIhJkdpiLIy$k$B*x<6@Bt8>DQf8eq%lfL%3;g-)#3PW zv*7~5kSCOvbHQv$d4hHoB_biA#UJcw*f@y*uP#y7si`5go*KDm@P?zvbhPRbDK2)U zo7VuC=emlDFxuO7Sm4&nRATM!ee;a88QfNRaQh=D9 zo_?v2bMFCP;+HRsudh?S%F05g;47hJx$O(tjrHfcsvn)5_rY%p*tpa4OV1(WX9bA) z1-_)zEDf=rzv)^9tYQiIT)L2G3 zuPqPyH)(mGKnWAy&)@G&NVXdu4&Edm4&dwR<>t?y1-+aLzGcHeNj-phllvx4Jcu)3 z7nO6Xq(H}cVNU4fF)j<8kI->1!cl}M&b{5Q?ggVIvEx^|9i7_l((dvyox5w*wp6;c zBX(V<1UqFg{Y7Pu)f!?dq3GZX7I;8%$S0bGCsbxQGAZr-Mdtz>+V); z83g#+dxd*X3aZ`dv(+=c>y;xIpjFuxqx%X)i@-TIrs$e8`)IL^(6u+!Kf2pnjUU`) zVd;s^{DVG&syur8=B-%W^4Oj4QLzlQI*CuxtB;pIe)td}HX#UrGr|Lzmwp#U;pZ2C zK5c%1V*Uy_P1Y`BF{)r_=UG$xpxHi8LyPLMW;bQcaf>H>6X}N8opONSEjUj|)dJ8P z+RoVUQf{4OULARcw28>Z`rBmjoG>;M73hMOPR}+GD-hlzR&*J8j_$y*d=)}Tiu{A( zq9O>ZKaqrTgoV{T)bV~o$*VPJm(XeawzC;tEGiu%0U@!&d;O3 z6onC1^d-g8TF*3idmSOltQ=QuZ-K7L8d_riG&*}NEtPP{$jU0s<3k-!n5(S9+tMiF zpe6XP9CYQ0j@7aQqHcN7QN5$t7_ukxQil^?I1x`zcfocK!4p%}v*H*hDZ$We&$j}; zg!`G23lG0&mA~v*Wdy;*ibVrv+5w_mR>7PyZMczS8_YqaCtiz;52x^Y3r~ z;W=u6<9lO1&XhuE&eK;qLLYL2ldoM{m3n4dOUdbo0j|CdYjo(gGfmg(R4d=Ek5{of zcigpZKWY4c`bE3?rPb(#w5Fyk0HR-`V(Kcc^zGZ@7Jgn*@XqKnqGIz}4z@OkXF0#7{6$k*_`9_uug+Cm@}ThW zlWq~|Jtail1F(Ektv6%O9m=O=;}41N*AY&WV}Z_1@B<>kGu8mw9QG^94skzFO)OJU zO8ptNzJDsPvwJzlr_k?}4MFe99t0F2UwiP#al}ja1a@2XYIe@i^VuTbzefpLArz0T z=2K4G-+Z=^0p@I!(8<$%KYP4|0>wGdKl=v;bRoy*)F4S0!x7imD%Ku%vqkKmRJ-J{ zc6~lpJT0T+kY6Lm40JHJoSh`%a^x50AZ}%LE`kFZA+YLPy|VF{66{T9n{)c<3RH9P zKG+KF>W4Q|o(_#yl`Mt;!J3zq6&mT84w~dC{c;Pr6MNSp{leIa z*>a`G9&J-2ydu193NhpftH-+rmWqSI-p<5l(Q-I)3v+XA+HxEABE$17i``#3I@XJL zn(LobUuC}q!-^&J4Nga5;fibu9P#Fltnqh|pN)*ok7vgApV1&W-N>&$YSUL1nY|Pd zGyLnnG30fk=x)+Q1S2iG{#+mkB7`{xQRL4ew?dP)*EoOZxA2vBcvO+{Ki$rkQ%SEB zC4PjfLlrj~p6g zCGZ0S@}KFGJvP>TvjWi}Gy{xAI~S<`c*0C*e-eFbD1CuUN=)(UPkOWL7ZM4aVVP=? zbmeAndzXDl1JEklkq^jjwyk}Q+xCM(?&9c*H)il#Zr4Mf%ZE#wds{i2os+VYJ!#;h zRe?rVS>zx1<wdRDKT1lDDBxvi9;=k%P=8 z4*BVee16$j0BbGatXXsa8G9S|zaFYXXWZ%^FL<~NZ%=~$&#?cz37>y^69br)_5aM& z2KeItm5P0Eq`O&E36yx`2M7;*? zk;~~muB@GMz5^hf9a-`w7jPe4#upA+&Nli}K^@Tgo4hM3CI-fNz7n?K?t%`8rL`M5 zAmwjlvJ3zf;7S6Z8k$v==XPl1{R^xn-eS0Yn zqx(Jw8zE9^$xo-njb##-d7bAIoQB&h`C0c_%dKqTd6~>FmjZ2adSjtAXj-H)_oJ6$ zR<}Ob8LXZ<-$Fq0Q87s91o9Cm!#6r&3$+)}&(r27`*4rFSnwKB#dQN%& zuH9GRFn^?+o6(|L<+v^d3?P65kzoiqkLRnCs&Neivd^=&+{nU76KA+yubvSW1c z>BNHI2?Y`tC_8Q~KPUzYC}U#%FX1Oo^zwdzPz#~JAjjbdszB#S4rfs_7 zGlDnv$)_~!+nidB42@?|t~b2gqq@iPZy_{rBy(70AwdU$8K4Llva-0m&Ze@uk5Nn_ zyHKZ=mYypp+{oO$p3vO1d7NADL2lrTPZS<9%-h|t;Kug;NWl0J3`BVaxWJ&FJMl+H zJ)GQ1-L#&QwzS+K9hFNS8`ETCV^0Q?jm=0b^V}hVNNKC@Yt9J=Y8a>=}HrK}HsBHw&f zkODJZ2~aVqcT`Vaal5-A1`MG|)5rk4OOG%aTJ+dN{!BKEzl&rGEm({nK1{2qcs2F- z;_4e#TH08!gJcDmAF}xQ(*Q%|FX~zb|0leh4~d0_A<(zk5c*z1Cz=@Ci*r^0#;Lze z7RcDSb8WY%n`hM2kb|NKD1w|CYI*ug!)XFYJb56e|MYanOe~ySKG$=wcc~;UxDztn z0rQ28yq#?V7t}E^w1DzECwkzjb?e_ukQrD4Z5Nm0fCg z!GTd#6=TwJ^!1>6TL5@sr`F>+G*{&W1W*3%7`X?Rox2N=hN2@l3qP}sZ}qSAnmetI zlv4#af3JrQ^=-^=E#5+VlKw&wbl@C3jid<$QrTyvx@BZhl9cp&+1f>BNl8?rc=-F+ zM9JXaom#CBkA_xOyh@c#rGZq>xKm%#3@EQisu8pY8XEpH%wN+L+p@{m+mPo5*o0WUv4}q1RT|hegNN! z95ac_dt!Hb6q_O(5Bqo9LtRAO`TT#>T%(+oS*vatruqjIV27R{yZ0zd73Y*>-YZvwwq~0 From 548666691e82d33c93316b155b59895a24d76647 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Tue, 28 Jul 2026 09:39:30 -0500 Subject: [PATCH 40/67] screenshots reorg --- README.md | 48 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index f18fefeb..f01ae1dc 100644 --- a/README.md +++ b/README.md @@ -88,22 +88,50 @@ So here it is: a Linux application for the Logitech Spotlight. ### Screenshots -[KDE-styled Projecteur preferences](./doc/screenshot-settings.png) -[Circular Projecteur spotlight demonstrating zoom, shade, and a green border](./doc/screenshot-spot.png) -[Projecteur Plasma tray popup](./doc/screenshot-traymenu.png) -[Projecteur presenter connected notification in KDE Plasma](./doc/screenshot-notification.png) +#### Spotlight overlay -**KDE Plasma system tray applet integration** +The configurable overlay combines different spotlight shapes with shading, zoom, +and an optional border. This example uses a circular zoom area with a green border. -[Projecteur system tray applet showing one connected presenter in KDE Plasma](./doc/screenshot-plasma-applet.png) +[Circular Projecteur spotlight demonstrating zoom, shade, and a green border](./doc/screenshot-spot.png) -**Presentation timer in the Plasma applet** +#### KDE-styled preferences -[First-class presentation timer settings in the Projecteur Plasma applet](./doc/screenshot-applet-presentation-timer.png) +Projecteur uses native KDE controls for configuring the spotlight shape, shade, +zoom, cursor, border, multi-screen behavior, and presets. -**Presentation timer countdown on the panel icon** +[KDE-styled Projecteur preferences](./doc/screenshot-settings.png) -[Projecteur panel icon and tooltip showing 14 minutes remaining](./doc/screenshot-applet-timer-countdown.png) +#### Plasma system tray applet + +The native Plasma applet shows connected presenters and provides quick access to +the spotlight, presets, timer, test action, and preferences. + +[Projecteur Plasma applet with a connected Logitech Spotlight 2 and quick controls](./doc/screenshot-traymenu.png) + +The panel icon also provides connected-presenter status at a glance. + +[Projecteur system tray applet showing one connected presenter in KDE Plasma](./doc/screenshot-plasma-applet.png) + +#### KDE Plasma notifications + +Presenter connections, battery status, device-access errors, and timer completion +use KDE Plasma's native notification system. + +[Projecteur presenter connected notification in KDE Plasma](./doc/screenshot-notification.png) + +#### Presentation timer + +The presentation timer is a first-class applet setting. It can start immediately +or on the next presenter button press. + +[First-class presentation timer settings in the Projecteur Plasma applet](./doc/screenshot-applet-presentation-timer.png) + +While the timer runs, the panel icon displays the remaining minutes and its +tooltip shows the precise countdown. When time expires, compatible presenters +such as the Logitech Spotlight 2 provide configurable haptic feedback. + +[Projecteur panel icon and tooltip showing 14 minutes remaining](./doc/screenshot-applet-timer-countdown.png) ## Supported Environments From eeeb9567b11bcc6468a9b6ed29a4658f046c684b Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Tue, 28 Jul 2026 11:30:48 -0500 Subject: [PATCH 41/67] Added global shortcuts --- .github/workflows/ci-build.yml | 2 +- CMakeLists.txt | 5 +- Justfile | 1 + README.md | 32 ++++++---- cmake/modules/PkgDependenciesProjecteur.cmake | 1 + doc/screenshot-global-shortcuts.png | Bin 0 -> 116826 bytes docker/Dockerfile.archlinux | 1 + packaging/arch/PKGBUILD | 1 + src/preferencesdlg.cc | 36 ++++++++++- src/preferencesdlg.h | 6 ++ src/projecteurapp.cc | 59 +++++++++++++++++- src/projecteurapp.h | 3 + src/projecteurcontrol.cc | 27 ++++++++ src/projecteurcontrol.h | 3 + 14 files changed, 157 insertions(+), 20 deletions(-) create mode 100644 doc/screenshot-global-shortcuts.png diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 818a0a06..4540dfb8 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -17,7 +17,7 @@ jobs: run: >- pacman -Syu --noconfirm base-devel cmake extra-cmake-modules git kconfig kconfigwidgets kcoreaddons kdbusaddons - knotifications kwindowsystem kxmlgui layer-shell-qt libplasma + kglobalaccel knotifications kwindowsystem kxmlgui layer-shell-qt libplasma qt6-base qt6-declarative qt6-tools - uses: actions/checkout@v4 diff --git a/CMakeLists.txt b/CMakeLists.txt index 5207e43a..af6db030 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) find_package(Qt6 6.11 REQUIRED COMPONENTS Core DBus Gui LinguistTools Quick Widgets) -find_package(KF6 6.7 REQUIRED COMPONENTS Config ConfigWidgets CoreAddons DBusAddons Notifications +find_package(KF6 6.7 REQUIRED COMPONENTS Config ConfigWidgets CoreAddons DBusAddons GlobalAccel Notifications Package KirigamiPlatform WindowSystem XmlGui) find_package(Plasma 6.7 REQUIRED) find_package(LayerShellQt 6.7 REQUIRED) @@ -88,7 +88,8 @@ target_include_directories(projecteur PRIVATE src "${CMAKE_CURRENT_BINARY_DIR}") target_link_libraries(projecteur PRIVATE Qt6::Core Qt6::DBus Qt6::Quick Qt6::Widgets KF6::ConfigCore KF6::ConfigGui KF6::ConfigWidgets KF6::CoreAddons KF6::DBusAddons - KF6::Notifications KF6::WindowSystem KF6::XmlGui LayerShellQt::Interface + KF6::GlobalAccel KF6::Notifications KF6::WindowSystem KF6::XmlGui + LayerShellQt::Interface ) target_compile_options(projecteur diff --git a/Justfile b/Justfile index c09664c2..186222ef 100644 --- a/Justfile +++ b/Justfile @@ -124,6 +124,7 @@ deps: _require-arch kconfigwidgets kcoreaddons kdbusaddons + kglobalaccel knotifications kwindowsystem kxmlgui diff --git a/README.md b/README.md index f01ae1dc..a0abe4c4 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,7 @@ So here it is: a Linux application for the Logitech Spotlight. presentation timer settings, a live remaining-minutes badge, and quick controls * Native KDE Plasma notifications for presenter status, battery level, access errors, and presentation timers +* Native KDE global shortcuts, configurable in Projecteur or Plasma System Settings * Usable without a presenter device (e.g. for online presentations) ### Screenshots @@ -102,6 +103,14 @@ zoom, cursor, border, multi-screen behavior, and presets. [KDE-styled Projecteur preferences](./doc/screenshot-settings.png) +#### Plasma global shortcuts + +Projecteur's actions integrate with Plasma's global shortcut settings, where +shortcuts can be assigned for the spotlight, preferences, presentation timer, +and spotlight presets. + +[Projecteur actions in Plasma's global shortcut settings](./doc/screenshot-global-shortcuts.png) + #### Plasma system tray applet The native Plasma applet shows connected presenters and provides quick access to @@ -206,7 +215,7 @@ and Hold Move actions for the same button. * CMake 3.20 or later * Qt 6.11 with Core, DBus, Gui, LinguistTools, Quick, and Widgets * KDE Plasma 6.7 Wayland, including Libplasma, KConfig, KConfigWidgets, KCoreAddons, - KDBusAddons, KNotifications, KWindowSystem, and KXmlGui + KDBusAddons, KGlobalAccel, KNotifications, KWindowSystem, and KXmlGui * LayerShellQt 6.7 * Extra CMake Modules 6.7 or later @@ -332,23 +341,22 @@ projecteur -c border.color=#ff0000 projecteur -c vibrate=128,0 ``` -While _Projecteur_ does not provide global keyboard shortcuts, command line options -can but utilized for that. For instance, if you like to use _Projecteur_ as a tool while sharing -your screen in a video call without additional presenter hardware, you can assign global -shortcuts in your window manager (e.g. GNOME) to run the commands `projecteur -c spot=on` -and `projecteur -c spot=off` or `projecteur -c spot=toggle`, and therefore -turning the spot on and off with a keyboard shortcut. +Projecteur registers native KDE global actions for toggling the spotlight, showing +preferences, controlling the presentation timer, and cycling presets. No key +combinations are assigned by default. Configure them on the **Shortcuts** page in +Projecteur Preferences or under Plasma System Settings → Keyboard → Shortcuts → +Projecteur. + +The command line interface remains available for scripts and non-interactive use. A complete list the properties that can be set via the command line, can be listed with the `--help-all` command line option. ### Using Projecteur without a device -You can use _Projecteur_ for your online presentations and video conferences without a presenter -device. For this you can assign a global keyboard shortcut in your window manager -(e.g. KDE, GNOME...) to run the command `projecteur -c spot=toggle`. You will then be able to -turn the digital spot on and off with the assigned keyboard shortcut while sharing -your screen in an online presentation or call. +You can use _Projecteur_ for online presentations and video conferences without a +presenter device. Assign a key combination to **Toggle Spotlight** on the Shortcuts +page in Projecteur Preferences, then use it while sharing your screen. ### Device Support diff --git a/cmake/modules/PkgDependenciesProjecteur.cmake b/cmake/modules/PkgDependenciesProjecteur.cmake index a87072e7..c83b1716 100644 --- a/cmake/modules/PkgDependenciesProjecteur.cmake +++ b/cmake/modules/PkgDependenciesProjecteur.cmake @@ -6,6 +6,7 @@ list(APPEND _PkgDeps_Projecteur_archlinux "kconfigwidgets>=6.7" "kcoreaddons>=6.7" "kdbusaddons>=6.7" + "kglobalaccel>=6.7" "knotifications>=6.7" "kwindowsystem>=6.7" "kxmlgui>=6.7" diff --git a/doc/screenshot-global-shortcuts.png b/doc/screenshot-global-shortcuts.png new file mode 100644 index 0000000000000000000000000000000000000000..27a225fd460845f5fa78505093dfa226b48a517e GIT binary patch literal 116826 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

w{1|@Uf8&-G__S-Uk8Z?eY-!87X=AAZ= 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 W(gXb+UKsdq&FXbu=6.7' 'kcoreaddons>=6.7' 'kdbusaddons>=6.7' + 'kglobalaccel>=6.7' 'knotifications>=6.7' 'kwindowsystem>=6.7' 'kxmlgui>=6.7' diff --git a/src/preferencesdlg.cc b/src/preferencesdlg.cc index f8340c89..9d54ea7c 100644 --- a/src/preferencesdlg.cc +++ b/src/preferencesdlg.cc @@ -11,6 +11,10 @@ #include "logging.h" #include "settings.h" +#include +#include +#include + #include #include #include @@ -51,9 +55,11 @@ namespace { // ------------------------------------------------------------------------------------------------- PreferencesDialog::PreferencesDialog(Settings* settings, Spotlight* spotlight, + KActionCollection* actionCollection, Mode dialogMode, QWidget* parent) : KConfigDialog(parent, QStringLiteral("preferences"), settings->configSkeleton()) , m_settings(settings) + , m_actionCollection(actionCollection) , m_presetComboStyle(std::make_unique()) { setAttribute(Qt::WA_DeleteOnClose, false); @@ -77,6 +83,11 @@ PreferencesDialog::PreferencesDialog(Settings* settings, Spotlight* spotlight, QString(), false); m_deviceswidget = new DevicesWidget(settings, spotlight, this); addPage(m_deviceswidget, tr("Devices"), QStringLiteral("input-mouse"), QString(), false); + m_shortcutsEditor = new KShortcutsEditor( + actionCollection, this, KShortcutsEditor::GlobalAction, + KShortcutsEditor::LetterShortcutsDisallowed); + addPage(m_shortcutsEditor, tr("Shortcuts"), QStringLiteral("configure-shortcuts"), + QString(), false); addPage(createLogTabWidget(), tr("Log"), QStringLiteral("utilities-log-viewer"), QString(), false); @@ -118,6 +129,8 @@ PreferencesDialog::PreferencesDialog(Settings* settings, Spotlight* spotlight, connect(shapeSettings, &QQmlPropertyMap::valueChanged, this, modified); } } + connect(m_shortcutsEditor, &KShortcutsEditor::keyChange, + this, &PreferencesDialog::updateButtons); m_appliedSpotlightSettings = settings->spotlightSettings(); updateButtons(); @@ -744,15 +757,29 @@ void PreferencesDialog::settingsModified() // ------------------------------------------------------------------------------------------------- void PreferencesDialog::restoreAppliedSettings() { + m_shortcutsEditor->undo(); m_settings->setSpotlightSettings(m_appliedSpotlightSettings); resetPresetCombo(); updateButtons(); } +// ------------------------------------------------------------------------------------------------- +bool PreferencesDialog::shortcutsAreDefault() const +{ + for (const auto* action : m_actionCollection->actions()) { + if (KGlobalAccel::self()->shortcut(action) + != KGlobalAccel::self()->defaultShortcut(action)) { + return false; + } + } + return true; +} + // ------------------------------------------------------------------------------------------------- void PreferencesDialog::updateSettings() { KConfigDialog::updateSettings(); + m_shortcutsEditor->save(); m_appliedSpotlightSettings = m_settings->spotlightSettings(); } @@ -768,6 +795,7 @@ void PreferencesDialog::updateWidgetsDefault() { KConfigDialog::updateWidgetsDefault(); m_settings->setDefaults(); + m_shortcutsEditor->allDefault(); resetPresetCombo(); } @@ -775,20 +803,24 @@ void PreferencesDialog::updateWidgetsDefault() bool PreferencesDialog::hasChanged() { return KConfigDialog::hasChanged() - || m_settings->spotlightSettings() != m_appliedSpotlightSettings; + || m_settings->spotlightSettings() != m_appliedSpotlightSettings + || m_shortcutsEditor->isModified(); } // ------------------------------------------------------------------------------------------------- bool PreferencesDialog::isDefault() { return KConfigDialog::isDefault() - && m_settings->spotlightSettings() == Settings::defaultSpotlightSettings(); + && m_settings->spotlightSettings() == Settings::defaultSpotlightSettings() + && shortcutsAreDefault(); } // ------------------------------------------------------------------------------------------------- void PreferencesDialog::accept() { if (m_dialogMode == Mode::MinimizeOnlyDialog) { + updateSettings(); + updateButtons(); showMinimized(); return; } diff --git a/src/preferencesdlg.h b/src/preferencesdlg.h index 2374de5e..712ef30c 100644 --- a/src/preferencesdlg.h +++ b/src/preferencesdlg.h @@ -12,6 +12,8 @@ class QComboBox; class QGroupBox; +class KActionCollection; +class KShortcutsEditor; class Settings; class Spotlight; class DevicesWidget; @@ -36,6 +38,7 @@ class PreferencesDialog : public KConfigDialog }; explicit PreferencesDialog(Settings* settings, Spotlight* spotlight, + KActionCollection* actionCollection, Mode = Mode::ClosableDialog, QWidget* parent = nullptr); virtual ~PreferencesDialog() override = default; @@ -69,6 +72,7 @@ protected slots: void setDialogMode(Mode dialogMode); void settingsModified(); void restoreAppliedSettings(); + bool shortcutsAreDefault() const; void resetPresetCombo(); QWidget* createSettingsTabWidget(Settings* settings); @@ -84,10 +88,12 @@ protected slots: private: Settings* const m_settings; + KActionCollection* const m_actionCollection; QVariantMap m_appliedSpotlightSettings; std::unique_ptr m_presetComboStyle; QComboBox* m_presetCombo = nullptr; DevicesWidget* m_deviceswidget = nullptr; + KShortcutsEditor* m_shortcutsEditor = nullptr; bool m_active = false; Mode m_dialogMode = Mode::ClosableDialog; quint32 m_discardedLogCount = 0; diff --git a/src/projecteurapp.cc b/src/projecteurapp.cc index 5178f1e3..7fc43f22 100644 --- a/src/projecteurapp.cc +++ b/src/projecteurapp.cc @@ -15,11 +15,14 @@ #include #include +#include #include +#include #include #include #include +#include #include #include #include @@ -34,6 +37,8 @@ #include #include +#include + LOGGING_CATEGORY(mainapp, "mainapp") LOGGING_CATEGORY(cmdserver, "cmdserver") @@ -98,7 +103,10 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio new PresentationTimer(m_settings, m_spotlight, m_deviceCommandHelper, this); m_settings->setOverlayDisabled(options.disableOverlay); - m_dialog = std::make_unique(m_settings, m_spotlight, + setupControlService(options); + setupGlobalShortcuts(); + + m_dialog = std::make_unique(m_settings, m_spotlight, m_actionCollection, options.dialogMinimizeOnly ? PreferencesDialog::Mode::MinimizeOnlyDialog : PreferencesDialog::Mode::ClosableDialog); @@ -164,8 +172,6 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio connect(this, &ProjecteurApplication::screenAdded, this, [this](){ setupScreenOverlays(); }); connect(this, &ProjecteurApplication::screenRemoved, this, [this](){ setupScreenOverlays(); }); - // Expose application state and actions to the native Plasma system tray applet. - setupControlService(options); setupNotifications(); connect(this, &ProjecteurApplication::aboutToQuit, this, [this](){ @@ -260,6 +266,53 @@ void ProjecteurApplication::setupControlService(Options const& options) } } +// ------------------------------------------------------------------------------------------------- +void ProjecteurApplication::setupGlobalShortcuts() +{ + m_actionCollection = new KActionCollection(this); + m_actionCollection->setComponentDisplayName(tr("Projecteur")); + + const auto addAction = + [this](const QString& id, const QString& text, const QString& iconName, auto callback) + { + auto* action = new QAction(QIcon::fromTheme(iconName), text, m_actionCollection); + m_actionCollection->addAction(id, action); + connect(action, &QAction::triggered, this, std::move(callback)); + if (!KGlobalAccel::setGlobalShortcut(action, QList{})) { + logWarning(mainapp) << tr("Could not register global shortcut action '%1'.").arg(id); + } + }; + + addAction( + QStringLiteral("toggle_spotlight"), tr("Toggle Spotlight"), + QStringLiteral("view-visible"), + [this]() { + if (!m_settings->overlayDisabled()) { + m_control->SetSpotlightActive(!m_control->spotlightActive()); + } + }); + addAction( + QStringLiteral("show_preferences"), tr("Show Preferences"), + QStringLiteral("configure"), + [this]() { m_control->ShowPreferences(); }); + addAction( + QStringLiteral("start_restart_timer"), tr("Start or Restart Presentation Timer"), + QStringLiteral("chronometer"), + [this]() { m_control->RestartTimer(); }); + addAction( + QStringLiteral("reset_timer"), tr("Reset Presentation Timer"), + QStringLiteral("edit-undo"), + [this]() { m_control->ResetTimer(); }); + addAction( + QStringLiteral("next_preset"), tr("Next Spotlight Preset"), + QStringLiteral("go-next"), + [this]() { m_control->loadNextPreset(); }); + addAction( + QStringLiteral("previous_preset"), tr("Previous Spotlight Preset"), + QStringLiteral("go-previous"), + [this]() { m_control->loadPreviousPreset(); }); +} + // ------------------------------------------------------------------------------------------------- void ProjecteurApplication::setupNotifications() { diff --git a/src/projecteurapp.h b/src/projecteurapp.h index 85ce60f5..c7fca187 100644 --- a/src/projecteurapp.h +++ b/src/projecteurapp.h @@ -12,6 +12,7 @@ class DeviceCommandHelper; class KAboutApplicationDialog; +class KActionCollection; class KDBusService; class LinuxDesktop; class PreferencesDialog; @@ -80,12 +81,14 @@ public slots: void setCurrentCursorPos(const QPoint& pos); void setupControlService(Options const& options); + void setupGlobalShortcuts(); void setupNotifications(); void setupSpotlight(); private: std::unique_ptr m_dialog; QPointer m_aboutDialog; + KActionCollection* m_actionCollection = nullptr; KDBusService* m_dbusService = nullptr; ProjecteurControl* m_control = nullptr; Settings* m_settings = nullptr; diff --git a/src/projecteurcontrol.cc b/src/projecteurcontrol.cc index 9109f44b..97d0e8f5 100644 --- a/src/projecteurcontrol.cc +++ b/src/projecteurcontrol.cc @@ -310,6 +310,16 @@ void ProjecteurControl::SetTimerDurationSeconds(int seconds) m_presentationTimer->setDurationSeconds(seconds); } +void ProjecteurControl::loadNextPreset() +{ + loadRelativePreset(1); +} + +void ProjecteurControl::loadPreviousPreset() +{ + loadRelativePreset(-1); +} + void ProjecteurControl::ShowPreferences() { m_application->showPreferences(true); @@ -330,6 +340,23 @@ void ProjecteurControl::Quit() QCoreApplication::quit(); } +void ProjecteurControl::loadRelativePreset(int offset) +{ + const auto presetNames = presets(); + if (presetNames.isEmpty()) { return; } + + const auto currentIndex = presetNames.indexOf(m_currentPreset); + qsizetype targetIndex = 0; + if (offset < 0) { + targetIndex = currentIndex <= 0 ? presetNames.size() - 1 : currentIndex - 1; + } else { + targetIndex = currentIndex < 0 || currentIndex == presetNames.size() - 1 + ? 0 + : currentIndex + 1; + } + LoadPreset(presetNames.at(targetIndex)); +} + void ProjecteurControl::clearCurrentPreset() { if (m_currentPreset.isEmpty()) { return; } diff --git a/src/projecteurcontrol.h b/src/projecteurcontrol.h index 94418ffd..e130b447 100644 --- a/src/projecteurcontrol.h +++ b/src/projecteurcontrol.h @@ -57,6 +57,8 @@ class ProjecteurControl : public QObject QString timerState() const; int timerDurationSeconds() const; int timerRemainingSeconds() const; + void loadNextPreset(); + void loadPreviousPreset(); public slots: void SetOverlayEnabled(bool enabled); @@ -87,6 +89,7 @@ public slots: void batteryStateChanged(const QString& deviceName, int level, const QString& status); private: + void loadRelativePreset(int offset); void clearCurrentPreset(); void emitBatteryPropertiesChanged(); void requestBatteryUpdates(); From f9613677012def836f5ca16b14ce30edadd5b6e7 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Tue, 28 Jul 2026 11:37:34 -0500 Subject: [PATCH 42/67] use the KDE color picker --- .github/workflows/ci-build.yml | 2 +- CMakeLists.txt | 5 +- Justfile | 1 + README.md | 2 +- cmake/modules/PkgDependenciesProjecteur.cmake | 1 + docker/Dockerfile.archlinux | 1 + packaging/arch/PKGBUILD | 1 + src/colorselector.cc | 105 ------------------ src/colorselector.h | 39 ------- src/preferencesdlg.cc | 23 ++-- 10 files changed, 21 insertions(+), 159 deletions(-) delete mode 100644 src/colorselector.cc delete mode 100644 src/colorselector.h diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 4540dfb8..6832e18a 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -17,7 +17,7 @@ jobs: run: >- pacman -Syu --noconfirm base-devel cmake extra-cmake-modules git kconfig kconfigwidgets kcoreaddons kdbusaddons - kglobalaccel knotifications kwindowsystem kxmlgui layer-shell-qt libplasma + kglobalaccel knotifications kwidgetsaddons kwindowsystem kxmlgui layer-shell-qt libplasma qt6-base qt6-declarative qt6-tools - uses: actions/checkout@v4 diff --git a/CMakeLists.txt b/CMakeLists.txt index af6db030..68d6f659 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,7 @@ set(CMAKE_AUTOMOC ON) find_package(Qt6 6.11 REQUIRED COMPONENTS Core DBus Gui LinguistTools Quick Widgets) find_package(KF6 6.7 REQUIRED COMPONENTS Config ConfigWidgets CoreAddons DBusAddons GlobalAccel Notifications - Package KirigamiPlatform WindowSystem XmlGui) + Package KirigamiPlatform WidgetsAddons WindowSystem XmlGui) find_package(Plasma 6.7 REQUIRED) find_package(LayerShellQt 6.7 REQUIRED) set(QT_PACKAGE_NAME Qt6) @@ -38,7 +38,6 @@ qt6_add_resources(RESOURCES qml/qml.qrc resources.qrc) add_executable(projecteur src/main.cc src/enum-helper.h src/actiondelegate.cc src/actiondelegate.h - src/colorselector.cc src/colorselector.h src/device.cc src/device.h src/device-command-helper.cc src/device-command-helper.h src/device-hidpp.cc src/device-hidpp.h @@ -88,7 +87,7 @@ target_include_directories(projecteur PRIVATE src "${CMAKE_CURRENT_BINARY_DIR}") target_link_libraries(projecteur PRIVATE Qt6::Core Qt6::DBus Qt6::Quick Qt6::Widgets KF6::ConfigCore KF6::ConfigGui KF6::ConfigWidgets KF6::CoreAddons KF6::DBusAddons - KF6::GlobalAccel KF6::Notifications KF6::WindowSystem KF6::XmlGui + KF6::GlobalAccel KF6::Notifications KF6::WidgetsAddons KF6::WindowSystem KF6::XmlGui LayerShellQt::Interface ) diff --git a/Justfile b/Justfile index 186222ef..9d801894 100644 --- a/Justfile +++ b/Justfile @@ -126,6 +126,7 @@ deps: _require-arch kdbusaddons kglobalaccel knotifications + kwidgetsaddons kwindowsystem kxmlgui layer-shell-qt diff --git a/README.md b/README.md index a0abe4c4..b96d36cd 100644 --- a/README.md +++ b/README.md @@ -215,7 +215,7 @@ and Hold Move actions for the same button. * CMake 3.20 or later * Qt 6.11 with Core, DBus, Gui, LinguistTools, Quick, and Widgets * KDE Plasma 6.7 Wayland, including Libplasma, KConfig, KConfigWidgets, KCoreAddons, - KDBusAddons, KGlobalAccel, KNotifications, KWindowSystem, and KXmlGui + KDBusAddons, KGlobalAccel, KNotifications, KWidgetsAddons, KWindowSystem, and KXmlGui * LayerShellQt 6.7 * Extra CMake Modules 6.7 or later diff --git a/cmake/modules/PkgDependenciesProjecteur.cmake b/cmake/modules/PkgDependenciesProjecteur.cmake index c83b1716..33913e09 100644 --- a/cmake/modules/PkgDependenciesProjecteur.cmake +++ b/cmake/modules/PkgDependenciesProjecteur.cmake @@ -8,6 +8,7 @@ list(APPEND _PkgDeps_Projecteur_archlinux "kdbusaddons>=6.7" "kglobalaccel>=6.7" "knotifications>=6.7" + "kwidgetsaddons>=6.7" "kwindowsystem>=6.7" "kxmlgui>=6.7" "libplasma>=6.7" diff --git a/docker/Dockerfile.archlinux b/docker/Dockerfile.archlinux index 3dd9ab65..65cfa043 100644 --- a/docker/Dockerfile.archlinux +++ b/docker/Dockerfile.archlinux @@ -25,6 +25,7 @@ RUN pacman --noconfirm -Sy && pacman --noconfirm -S \ kdbusaddons \ kglobalaccel \ knotifications \ + kwidgetsaddons \ kwindowsystem \ kxmlgui \ libplasma \ diff --git a/packaging/arch/PKGBUILD b/packaging/arch/PKGBUILD index 23a55ac9..2c234efd 100644 --- a/packaging/arch/PKGBUILD +++ b/packaging/arch/PKGBUILD @@ -19,6 +19,7 @@ depends=( 'kdbusaddons>=6.7' 'kglobalaccel>=6.7' 'knotifications>=6.7' + 'kwidgetsaddons>=6.7' 'kwindowsystem>=6.7' 'kxmlgui>=6.7' 'layer-shell-qt>=6.7' diff --git a/src/colorselector.cc b/src/colorselector.cc deleted file mode 100644 index 5a0187d2..00000000 --- a/src/colorselector.cc +++ /dev/null @@ -1,105 +0,0 @@ -// This file is part of Projecteur - https://github.com/jahnf/projecteur -// - See LICENSE.md and README.md - -#include "colorselector.h" - -#include -#include -#include -#include - -#include - -namespace { - std::unique_ptr colorButtonStyle = std::make_unique(); - - QColor mixColors(const QColor& a, const QColor& b, double ratio = 0.5) { - return QColor( - a.red() *(1.0-ratio) + b.red() *ratio, - a.green()*(1.0-ratio) + b.green()*ratio, - a.blue() *(1.0-ratio) + b.blue() *ratio, - 255 - ); - } -} // end anonymous namespace - -ColorSelectorButtonStyle::ColorSelectorButtonStyle() -{ - setObjectName("ColorSelectorButtontyle"); -} - -void ColorSelectorButtonStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option, - QPainter *p, const QWidget *widget) const -{ - if (element != PE_PanelButtonCommand) - QProxyStyle::drawPrimitive(element, option, p, widget); - - p->save(); - - p->setRenderHint(QPainter::Antialiasing); - p->translate(0.5, -0.5); - QPainterPath path; - const auto rect = option->rect.adjusted(1,1,-1,0); - path.addRoundedRect(rect, 4, 4); - - - const auto borderColor = [option]() - { // Set border color based on window color - const auto w = option->palette.color(QPalette::Window); - const auto c = (w.redF() * 0.299 + w.greenF() * 0.587 + w.blueF() * 0.114 ) > 0.6 ? Qt::darkGray - : Qt::lightGray; - if (option->state & State_Enabled) return QColor(c); - return mixColors(c, option->palette.color(QPalette::Disabled, QPalette::Button)); - }(); - - const auto buttonBrush = [option]() { - if (option->state & State_Enabled) return option->palette.button(); - return QBrush(mixColors(option->palette.color(QPalette::Normal, QPalette::Button), - option->palette.color(QPalette::Disabled, QPalette::Button))); - }(); - - p->setPen(QPen(borderColor, 1)); - p->fillPath(path, buttonBrush); - p->drawPath(path); - - p->restore(); -} - -ColorSelector::ColorSelector(QWidget* parent) - : ColorSelector(tr("Select Color"), Qt::black, parent) -{ -} - -ColorSelector::ColorSelector(const QString& selectionDialogTitle, const QColor& color, QWidget* parent) - : QPushButton(parent) - , m_color(color) -{ - setStyle(colorButtonStyle.get()); - - setMinimumWidth(30); - updateButton(); - connect(this, &QPushButton::clicked, [this, selectionDialogTitle](){ - const QColor c = QColorDialog::getColor(m_color, this, selectionDialogTitle); - if (c.isValid()) - setColor(c); - }); -} - -void ColorSelector::setColor(const QColor& color) -{ - if (m_color == color) - return; - - m_color = color; - updateButton(); - emit colorChanged(color); -} - -void ColorSelector::updateButton() -{ - QPalette p(palette()); - p.setColor(QPalette::Button, m_color); - p.setColor(QPalette::ButtonText, m_color); - setPalette(p); - setToolTip(m_color.name()); -} diff --git a/src/colorselector.h b/src/colorselector.h deleted file mode 100644 index be922c87..00000000 --- a/src/colorselector.h +++ /dev/null @@ -1,39 +0,0 @@ -// This file is part of Projecteur - https://github.com/jahnf/projecteur -// - See LICENSE.md and README.md -#pragma once - -#include -#include - -class ColorSelectorButtonStyle : public QProxyStyle -{ - Q_OBJECT - -public: - ColorSelectorButtonStyle(); - void drawPrimitive(PrimitiveElement element, const QStyleOption *option, - QPainter *painter, const QWidget *widget) const override; -}; - - -class ColorSelector : public QPushButton -{ - Q_OBJECT - Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged) - -public: - explicit ColorSelector(QWidget* parent = nullptr); - explicit ColorSelector(const QString& selectionDialogTitle, const QColor& color, QWidget* parent = nullptr); - - void setColor(const QColor& color); - QColor color() const { return m_color; } - -signals: - void colorChanged(QColor); - -private: - void updateButton(); - -private: - QColor m_color; -}; diff --git a/src/preferencesdlg.cc b/src/preferencesdlg.cc index 9d54ea7c..92a7f25e 100644 --- a/src/preferencesdlg.cc +++ b/src/preferencesdlg.cc @@ -5,13 +5,13 @@ #include "projecteur-GitVersion.h" // auto generated version information -#include "colorselector.h" #include "deviceswidget.h" #include "iconwidgets.h" #include "logging.h" #include "settings.h" #include +#include #include #include @@ -419,9 +419,10 @@ QGroupBox* PreferencesDialog::createSpotGroupBox(Settings* settings) const auto spotGrid = new QGridLayout(spotGroup); // Shade color setting - const auto shadeColor = new ColorSelector(tr("Select Shade Color"), settings->shadeColor(), this); - connect(shadeColor, &ColorSelector::colorChanged, settings, &Settings::setShadeColor); - connect(settings, &Settings::shadeColorChanged, shadeColor, &ColorSelector::setColor); + const auto shadeColor = new KColorButton(settings->shadeColor(), this); + shadeColor->setAccessibleName(tr("Shade Color")); + connect(shadeColor, &KColorButton::changed, settings, &Settings::setShadeColor); + connect(settings, &Settings::shadeColorChanged, shadeColor, &KColorButton::setColor); connect(settings, &Settings::shadeColorChanged, this, &PreferencesDialog::resetPresetCombo); spotGrid->addWidget(new QLabel(tr("Shade Color"), this), 1, 0); spotGrid->addWidget(shadeColor, 1, 1); @@ -473,9 +474,10 @@ QGroupBox* PreferencesDialog::createDotGroupBox(Settings* settings) dotGrid->addWidget(new QLabel(tr("Dot Size"), this), 0, 0); dotGrid->addLayout(dotsizeHBox, 0, 1); - const auto dotColor = new ColorSelector(tr("Select Dot Color"), settings->dotColor(), this); - connect(dotColor, &ColorSelector::colorChanged, settings, &Settings::setDotColor); - connect(settings, &Settings::dotColorChanged, dotColor, &ColorSelector::setColor); + const auto dotColor = new KColorButton(settings->dotColor(), this); + dotColor->setAccessibleName(tr("Dot Color")); + connect(dotColor, &KColorButton::changed, settings, &Settings::setDotColor); + connect(settings, &Settings::dotColorChanged, dotColor, &KColorButton::setColor); connect(settings, &Settings::dotColorChanged, this, &PreferencesDialog::resetPresetCombo); dotGrid->addWidget(new QLabel(tr("Dot Color"), this), 1, 0); dotGrid->addWidget(dotColor, 1, 1); @@ -528,9 +530,10 @@ QGroupBox* PreferencesDialog::createBorderGroupBox(Settings* settings) borderGrid->addWidget(new QLabel(tr("Border Size"), this), 0, 0); borderGrid->addLayout(bordersizeHBox, 0, 1); - const auto borderColor = new ColorSelector(tr("Select Border Color"), settings->borderColor(), this); - connect(borderColor, &ColorSelector::colorChanged, settings, &Settings::setBorderColor); - connect(settings, &Settings::borderColorChanged, borderColor, &ColorSelector::setColor); + const auto borderColor = new KColorButton(settings->borderColor(), this); + borderColor->setAccessibleName(tr("Border Color")); + connect(borderColor, &KColorButton::changed, settings, &Settings::setBorderColor); + connect(settings, &Settings::borderColorChanged, borderColor, &KColorButton::setColor); connect(settings, &Settings::borderColorChanged, this, &PreferencesDialog::resetPresetCombo); borderGrid->addWidget(new QLabel(tr("Border Color"), this), 1, 0); borderGrid->addWidget(borderColor, 1, 1); From 6afbf4cba35d3e348bd69282849a070f04fb7e34 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Tue, 28 Jul 2026 11:50:03 -0500 Subject: [PATCH 43/67] moved to KDE localization --- .github/workflows/ci-build.yml | 6 +- CMakeLists.txt | 18 +-- Justfile | 4 +- Messages.sh | 4 + README.md | 11 +- cmake/modules/PkgDependenciesProjecteur.cmake | 6 +- cmake/modules/Translation.cmake | 144 ------------------ docker/Dockerfile.archlinux | 4 +- packaging/arch/PKGBUILD | 4 +- po/.gitkeep | 1 + src/actiondelegate.cc | 26 ++-- src/device-command-helper.cc | 2 +- src/device-hidpp.cc | 121 ++++++++------- src/device-key-lookup.cc | 14 +- src/device.cc | 41 ++--- src/deviceinput.cc | 14 +- src/devicescan.cc | 9 +- src/deviceswidget.cc | 48 +++--- src/hidpp.cc | 29 ++-- src/inputmapconfig.cc | 7 +- src/inputseqedit.cc | 6 +- src/linuxdesktop.cc | 36 ++--- src/main.cc | 82 +++++----- src/nativekeyseqedit.cc | 4 +- src/preferencesdlg.cc | 143 +++++++++-------- src/projecteurapp.cc | 98 ++++++------ src/settings.cc | 33 ++-- src/spotlight.cc | 30 ++-- src/virtualdevice.cc | 26 ++-- 29 files changed, 447 insertions(+), 524 deletions(-) create mode 100755 Messages.sh delete mode 100644 cmake/modules/Translation.cmake create mode 100644 po/.gitkeep diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 6832e18a..003ba6a4 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -16,9 +16,9 @@ jobs: - name: Install build dependencies run: >- pacman -Syu --noconfirm - base-devel cmake extra-cmake-modules git kconfig kconfigwidgets kcoreaddons kdbusaddons - kglobalaccel knotifications kwidgetsaddons kwindowsystem kxmlgui layer-shell-qt libplasma - qt6-base qt6-declarative qt6-tools + base-devel cmake extra-cmake-modules gettext git kconfig kconfigwidgets kcoreaddons kdbusaddons + kglobalaccel ki18n kio knotifications kwidgetsaddons kwindowsystem kxmlgui layer-shell-qt + libplasma qt6-base qt6-declarative - uses: actions/checkout@v4 with: diff --git a/CMakeLists.txt b/CMakeLists.txt index 68d6f659..28cba8cd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,14 +24,12 @@ set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) -find_package(Qt6 6.11 REQUIRED COMPONENTS Core DBus Gui LinguistTools Quick Widgets) -find_package(KF6 6.7 REQUIRED COMPONENTS Config ConfigWidgets CoreAddons DBusAddons GlobalAccel Notifications - Package KirigamiPlatform WidgetsAddons WindowSystem XmlGui) +find_package(Qt6 6.11 REQUIRED COMPONENTS Core DBus Gui Quick Widgets) +find_package(KF6 6.7 REQUIRED COMPONENTS Config ConfigWidgets CoreAddons DBusAddons GlobalAccel I18n KIO + Notifications Package KirigamiPlatform WidgetsAddons WindowSystem XmlGui) find_package(Plasma 6.7 REQUIRED) find_package(LayerShellQt 6.7 REQUIRED) -set(QT_PACKAGE_NAME Qt6) message(STATUS "Using Qt version: ${Qt6_VERSION}") -include(Translation) qt6_add_resources(RESOURCES qml/qml.qrc resources.qrc) @@ -87,7 +85,8 @@ target_include_directories(projecteur PRIVATE src "${CMAKE_CURRENT_BINARY_DIR}") target_link_libraries(projecteur PRIVATE Qt6::Core Qt6::DBus Qt6::Quick Qt6::Widgets KF6::ConfigCore KF6::ConfigGui KF6::ConfigWidgets KF6::CoreAddons KF6::DBusAddons - KF6::GlobalAccel KF6::Notifications KF6::WidgetsAddons KF6::WindowSystem KF6::XmlGui + KF6::GlobalAccel KF6::I18n KF6::KIOFileWidgets KF6::Notifications KF6::WidgetsAddons + KF6::WindowSystem KF6::XmlGui LayerShellQt::Interface ) @@ -122,11 +121,8 @@ string(REPLACE "-" "" PROJECTEUR_VERSION_STRING_ARCHLINUX "${PROJECTEUR_VERSION_ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/version-string" "${PROJECTEUR_VERSION_STRING}") file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/version-string.archlinux" "${PROJECTEUR_VERSION_STRING_ARCHLINUX}") -# Translation -list(APPEND languages de fr es) -set(ts_directories "${CMAKE_CURRENT_SOURCE_DIR}/i18n") -add_translations_target("projecteur" "${CMAKE_CURRENT_BINARY_DIR}" "${ts_directories}" "${languages}") -add_translation_update_task("projecteur" "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/i18n" "${languages}") +# Install gettext catalogs supplied by KDE's translation infrastructure. +ki18n_install(po) # Add target with non-source files for convenience when using IDEs like QtCreator and others add_custom_target(non-sources SOURCES README.md LICENSE.md doc/CHANGELOG.md devices.conf diff --git a/Justfile b/Justfile index 9d801894..ddb8da3c 100644 --- a/Justfile +++ b/Justfile @@ -119,12 +119,15 @@ deps: _require-arch base-devel cmake extra-cmake-modules + gettext git kconfig kconfigwidgets kcoreaddons kdbusaddons kglobalaccel + ki18n + kio knotifications kwidgetsaddons kwindowsystem @@ -135,7 +138,6 @@ deps: _require-arch pacman-contrib qt6-base qt6-declarative - qt6-tools ) mapfile -t missing < <(pacman -T "${dependencies[@]}" || true) diff --git a/Messages.sh b/Messages.sh new file mode 100755 index 00000000..682dec87 --- /dev/null +++ b/Messages.sh @@ -0,0 +1,4 @@ +#! /usr/bin/env bash +# SPDX-License-Identifier: MIT + +$XGETTEXT src/*.{cc,h} -o "$podir/projecteur.pot" diff --git a/README.md b/README.md index b96d36cd..35e3f651 100644 --- a/README.md +++ b/README.md @@ -213,9 +213,10 @@ and Hold Move actions for the same button. * C++17 compiler * CMake 3.20 or later -* Qt 6.11 with Core, DBus, Gui, LinguistTools, Quick, and Widgets +* Qt 6.11 with Core, DBus, Gui, Quick, and Widgets * KDE Plasma 6.7 Wayland, including Libplasma, KConfig, KConfigWidgets, KCoreAddons, - KDBusAddons, KGlobalAccel, KNotifications, KWidgetsAddons, KWindowSystem, and KXmlGui + KDBusAddons, KGlobalAccel, KI18n, KIO, KNotifications, KWidgetsAddons, KWindowSystem, + and KXmlGui * LayerShellQt 6.7 * Extra CMake Modules 6.7 or later @@ -229,6 +230,12 @@ cmake --build build sudo cmake --install build ``` +### Translations + +Projecteur uses KDE's KI18n/gettext translation system. Run `Messages.sh` through the standard +KDE translation tooling to extract `projecteur.pot`; translated catalogs placed under +`po//projecteur.po` are compiled and installed automatically. + ### Arch Linux On Arch Linux and Arch-based distributions, the `Justfile` can install missing diff --git a/cmake/modules/PkgDependenciesProjecteur.cmake b/cmake/modules/PkgDependenciesProjecteur.cmake index 33913e09..ec333756 100644 --- a/cmake/modules/PkgDependenciesProjecteur.cmake +++ b/cmake/modules/PkgDependenciesProjecteur.cmake @@ -7,6 +7,8 @@ list(APPEND _PkgDeps_Projecteur_archlinux "kcoreaddons>=6.7" "kdbusaddons>=6.7" "kglobalaccel>=6.7" + "ki18n>=6.7" + "kio>=6.7" "knotifications>=6.7" "kwidgetsaddons>=6.7" "kwindowsystem>=6.7" @@ -16,8 +18,8 @@ list(APPEND _PkgDeps_Projecteur_archlinux ) list(APPEND _PkgDepsMake_Projecteur_archlinux - "fakeroot" "awk" "cmake>=3.20" "extra-cmake-modules>=6.7" "make" "lsb-release" "tar" - "pkg-config" "qt6-tools>=6.11" + "fakeroot" "awk" "cmake>=3.20" "extra-cmake-modules>=6.7" "gettext" "make" "lsb-release" + "tar" "pkg-config" ) list(APPEND PkgDependencies_MAP_Projecteur diff --git a/cmake/modules/Translation.cmake b/cmake/modules/Translation.cmake deleted file mode 100644 index 18356179..00000000 --- a/cmake/modules/Translation.cmake +++ /dev/null @@ -1,144 +0,0 @@ -find_package(${QT_PACKAGE_NAME} REQUIRED COMPONENTS Core LinguistTools) - -# Extract the qmake executable location -get_target_property(QT_QMAKE_EXECUTABLE ${QT_PACKAGE_NAME}::qmake IMPORTED_LOCATION) - -# Find Qts own translations dir (containing qt_*.qm, qtbase_*.qm ...) -if(NOT QT_TRANSLATIONS_DIR) - # Ask the selected Qt version where to put the translations - execute_process(COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_TRANSLATIONS - OUTPUT_VARIABLE qt_translations_dir OUTPUT_STRIP_TRAILING_WHITESPACE) - # For windows systems: replace \ with / in directory path - file(TO_CMAKE_PATH "${qt_translations_dir}" qt_translations_dir) - set(QT_TRANSLATIONS_DIR ${qt_translations_dir} CACHE PATH "The location of the Qt translations" FORCE) -endif() - -get_target_property(QT_LRELEASE_EXECUTABLE ${QT_PACKAGE_NAME}::lrelease IMPORTED_LOCATION) -get_target_property(QT_LCONVERT_EXECUTABLE ${QT_PACKAGE_NAME}::lconvert IMPORTED_LOCATION) -get_target_property(QT_LUPDATE_EXECUTABLE ${QT_PACKAGE_NAME}::lupdate IMPORTED_LOCATION) - -# Helper function, takes the .qm file to be generated and a variable list of .ts files -# to create a custom command that then can be used for a custom target. -function(add_qm_translation_file _qm_file) - foreach(_current_FILE ${ARGN}) - get_filename_component(_abs_FILE ${_current_FILE} ABSOLUTE) - list(APPEND _ts_files ${_abs_FILE}) - endforeach() - foreach(tsfile ${_ts_files}) - SET(tsfiles_blank_sep "${tsfiles_blank_sep} ${tsfile}") - endforeach() - add_custom_command(OUTPUT ${_qm_file} - COMMAND ${QT_LRELEASE_EXECUTABLE} - ARGS ${_ts_files} -qm ${_qm_file} - DEPENDS ${_ts_files} VERBATIM - COMMENT "Executing: lrelease -silent ${tsfiles_blank_sep} -qm ${_qm_file}" - ) -endfunction() - -# Helper function, takes the qrc filename to generate and a variable list .qm files to be included. -function(mk_translation_qrc_file _qrc_file) - if(NOT EXISTS ${_qrc_file}) - file(WRITE ${_qrc_file} "\n") - file(APPEND ${_qrc_file} " \n") - foreach(_qm_file ${ARGN}) - get_filename_component(filename "${_qm_file}" NAME) - file(APPEND ${_qrc_file} " ${_qm_file}\n") - endforeach() - file(APPEND ${_qrc_file} " \n") - file(APPEND ${_qrc_file} "\n") - endif() -endfunction() - -# Helper function, takes the .qm file to be generated and a variable list .qm files -# to be combined to one. Creates a custom command for the .qm file to be created. -function(add_combined_qm_translation_file _combined_qm_file) - foreach(_current_FILE ${ARGN}) - get_filename_component(_abs_FILE ${_current_FILE} ABSOLUTE) - list(APPEND _single_qm_files ${_abs_FILE}) - endforeach() - list(REMOVE_DUPLICATES _single_qm_files) - add_custom_command(OUTPUT ${_combined_qm_file} - COMMAND ${QT_LCONVERT_EXECUTABLE} - ARGS -o ${_combined_qm_file} ${_single_qm_files} - DEPENDS ${_single_qm_files} VERBATIM - COMMENT "Executing: ${QT_LCONVERT_EXECUTABLE} -o ${_combined_qm_file} ${_single_qm_files}" - ) -endfunction() - -if(NOT TARGET ts_files) - add_custom_target(ts_files) - set_target_properties(ts_files PROPERTIES FOLDER "translation") - set_target_properties(ts_files PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1) -endif() - -# Function to add an updating 'task' to the custom translations_update target. -# _prefix : prefix for the *.ts files, i.e. myprefix_de.ts -# _input_dirs : list of directories to scan for translations with lupdate -# _ourput_dir : where to produce the *.ts files -function(add_translation_update_task _prefix _input_dirs _output_dir _languages) - foreach(_lang ${_languages}) - list(APPEND _tsfiles_lupdate "${_prefix}_${_lang}.ts") - endforeach() - - set(_ts_files_tgt ts_files_${_prefix}) - add_custom_target(${_ts_files_tgt}) - set_target_properties(${_ts_files_tgt} PROPERTIES FOLDER "translation") - set_target_properties(${_ts_files_tgt} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1) - add_custom_command(TARGET ${_ts_files_tgt} PRE_BUILD - COMMAND ${QT_LUPDATE_EXECUTABLE} - ARGS ${_input_dirs} - ARGS -locations relative - ARGS -ts - ARGS -noobsolete - ARGS ${_tsfiles_lupdate} - WORKING_DIRECTORY ${_output_dir} - COMMENT "Updating translations (${_prefix})..." - ) - add_dependencies(ts_files ${_ts_files_tgt}) -endfunction() - -if(NOT TARGET qm_files) - add_custom_target(qm_files) - set_target_properties(qm_files PROPERTIES FOLDER "translation") -endif() - -# Main function to be used in the main build configuration scripts. -# Will add a target 'translations' that will create/copy all the necessary -# .qm files to the given _target_dir for the given _languages. -# This includes also the translations from qt itself. -function(add_translations_target _prefix _target_dir _ts_dirs _languages) - file(MAKE_DIRECTORY "${_target_dir}") - # for each language - foreach(_lang ${_languages}) - # find all .ts files in the given _ts_dirs for our translations - foreach(_ts_dir ${_ts_dirs}) - file(GLOB _ts_files_glob LIST_DIRECTORIES false ${_ts_dir}/*_${_lang}.ts) - list(APPEND _ts_files_all${_lang} ${_ts_files_glob}) - endforeach() - list(LENGTH _ts_files_all${_lang} _num_ts_files) - if(_num_ts_files) - set(_qm_file ${_target_dir}/${_prefix}_${_lang}.qm) - add_qm_translation_file(${_qm_file} ${_ts_files_all${_lang}}) - list(APPEND _qm_files ${_qm_file}) - endif() - endforeach() - - list(LENGTH _qm_files _num_qm_files) - if(_num_qm_files) - set(_qm_files_tgt qm_files_${_prefix}) - add_custom_target(${_qm_files_tgt} ALL DEPENDS ${_qm_files}) - - if(TARGET ${_prefix}) - set(_qrc_file translations.qrc) - mk_translation_qrc_file(${_target_dir}/${_qrc_file} ${_qm_files}) - set_property(TARGET ${_prefix} APPEND PROPERTY SOURCES "${_target_dir}/${_qrc_file}" ) - add_dependencies(${_prefix} ${_qm_files_tgt}) - else() - message(FATAL_ERROR "'${_prefix}' is not a valid target.") - endif() - - set_target_properties(${_qm_files_tgt} PROPERTIES FOLDER "translation") - set_target_properties(${_qm_files_tgt} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1) - add_dependencies(qm_files ${_qm_files_tgt}) - endif() -endfunction() diff --git a/docker/Dockerfile.archlinux b/docker/Dockerfile.archlinux index 65cfa043..0b1122b9 100644 --- a/docker/Dockerfile.archlinux +++ b/docker/Dockerfile.archlinux @@ -14,8 +14,8 @@ RUN pacman --noconfirm -Sy && pacman --noconfirm -S \ gcc \ make \ cmake \ + gettext \ git \ - qt6-tools \ qt6-base \ qt6-declarative \ extra-cmake-modules \ @@ -24,6 +24,8 @@ RUN pacman --noconfirm -Sy && pacman --noconfirm -S \ kcoreaddons \ kdbusaddons \ kglobalaccel \ + ki18n \ + kio \ knotifications \ kwidgetsaddons \ kwindowsystem \ diff --git a/packaging/arch/PKGBUILD b/packaging/arch/PKGBUILD index 2c234efd..cc6e5838 100644 --- a/packaging/arch/PKGBUILD +++ b/packaging/arch/PKGBUILD @@ -18,6 +18,8 @@ depends=( 'kcoreaddons>=6.7' 'kdbusaddons>=6.7' 'kglobalaccel>=6.7' + 'ki18n>=6.7' + 'kio>=6.7' 'knotifications>=6.7' 'kwidgetsaddons>=6.7' 'kwindowsystem>=6.7' @@ -31,7 +33,7 @@ depends=( makedepends=( 'cmake>=3.20' 'extra-cmake-modules>=6.7' - 'qt6-tools>=6.11' + 'gettext' ) source=( 'projecteur-local.tar.gz' diff --git a/po/.gitkeep b/po/.gitkeep new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/po/.gitkeep @@ -0,0 +1 @@ + diff --git a/src/actiondelegate.cc b/src/actiondelegate.cc index 4c713f92..b445fadf 100644 --- a/src/actiondelegate.cc +++ b/src/actiondelegate.cc @@ -8,6 +8,8 @@ #include "nativekeyseqedit.h" #include "projecteur-icons-def.h" +#include + #include #include #include @@ -28,7 +30,7 @@ namespace { constexpr int verticalMargin = 3; constexpr int horizontalMargin = 3; const int h = opt.fontMetrics.height() + 2 * verticalMargin; - const int w = std::max(opt.fontMetrics.horizontalAdvance(ActionDelegate::tr("None")) + 2 * horizontalMargin, + const int w = std::max(opt.fontMetrics.horizontalAdvance(i18n("None")) + 2 * horizontalMargin, opt.fontMetrics.horizontalAdvance(action->keySequence.toString())); return { w, h }; } @@ -40,7 +42,7 @@ namespace { { const auto& fm = option.fontMetrics; const int xPos = (option.rect.height()-fm.height()) / 2; - NativeKeySeqEdit::drawText(xPos, *p, option, ActionDelegate::tr("Cycle Presets")); + NativeKeySeqEdit::drawText(xPos, *p, option, i18n("Cycle Presets")); } // --------------------------------------------------------------------------------------------- @@ -55,7 +57,7 @@ namespace { { const auto& fm = option.fontMetrics; const int xPos = (option.rect.height()-fm.height()) / 2; - NativeKeySeqEdit::drawText(xPos, *p, option, ActionDelegate::tr("Toggle Spotlight")); + NativeKeySeqEdit::drawText(xPos, *p, option, i18n("Toggle Spotlight")); } // --------------------------------------------------------------------------------------------- @@ -70,7 +72,7 @@ namespace { { const auto& fm = option.fontMetrics; const int xPos = (option.rect.height()-fm.height()) / 2; - NativeKeySeqEdit::drawText(xPos, *p, option, ActionDelegate::tr("Scroll Horizontal")); + NativeKeySeqEdit::drawText(xPos, *p, option, i18n("Scroll Horizontal")); } // --------------------------------------------------------------------------------------------- @@ -85,7 +87,7 @@ namespace { { const auto& fm = option.fontMetrics; const int xPos = (option.rect.height()-fm.height()) / 2; - NativeKeySeqEdit::drawText(xPos, *p, option, ActionDelegate::tr("Scroll Vertical")); + NativeKeySeqEdit::drawText(xPos, *p, option, i18n("Scroll Vertical")); } // --------------------------------------------------------------------------------------------- @@ -100,7 +102,7 @@ namespace { { const auto& fm = option.fontMetrics; const int xPos = (option.rect.height()-fm.height()) / 2; - NativeKeySeqEdit::drawText(xPos, *p, option, ActionDelegate::tr("Volume Control")); + NativeKeySeqEdit::drawText(xPos, *p, option, i18n("Volume Control")); } // --------------------------------------------------------------------------------------------- @@ -347,12 +349,12 @@ void ActionTypeDelegate::actionContextMenu(QWidget* parent, InputMapConfigModel* }; static std::vector items { - {Action::Type::KeySequence, QChar(static_cast(Font::Icon::keyboard_4)), tr("Key Sequence"), false}, - {Action::Type::CyclePresets, QChar(static_cast(Font::Icon::connection_8)), tr("Cycle Presets"), false}, - {Action::Type::ToggleSpotlight, QChar(static_cast(Font::Icon::power_on_off_11)), tr("Toggle Spotlight"), false}, - {Action::Type::ScrollHorizontal, QChar(static_cast(Font::Icon::cursor_21_rotated)), tr("Scroll Horizontal"), true}, - {Action::Type::ScrollVertical, QChar(static_cast(Font::Icon::cursor_21)), tr("Scroll Vertical"), true}, - {Action::Type::VolumeControl, QChar(static_cast(Font::Icon::audio_6)), tr("Volume Control"), true}, + {Action::Type::KeySequence, QChar(static_cast(Font::Icon::keyboard_4)), i18n("Key Sequence"), false}, + {Action::Type::CyclePresets, QChar(static_cast(Font::Icon::connection_8)), i18n("Cycle Presets"), false}, + {Action::Type::ToggleSpotlight, QChar(static_cast(Font::Icon::power_on_off_11)), i18n("Toggle Spotlight"), false}, + {Action::Type::ScrollHorizontal, QChar(static_cast(Font::Icon::cursor_21_rotated)), i18n("Scroll Horizontal"), true}, + {Action::Type::ScrollVertical, QChar(static_cast(Font::Icon::cursor_21)), i18n("Scroll Vertical"), true}, + {Action::Type::VolumeControl, QChar(static_cast(Font::Icon::audio_6)), i18n("Volume Control"), true}, }; static bool initIcons = []() diff --git a/src/device-command-helper.cc b/src/device-command-helper.cc index a22b9b96..511d928c 100644 --- a/src/device-command-helper.cc +++ b/src/device-command-helper.cc @@ -57,7 +57,7 @@ bool DeviceCommandHelper::sendVibrateCommand(const DeviceId& deviceId, uint8_t i { hidppConnection->sendVibrateCommand(intensity, length, [](HidppConnectionInterface::MsgResult, HIDPP::Message&&) { - // logDebug(hid) << tr("Vibrate command returned: %1 (%2)") + // logDebug(hid) << i18n("Vibrate command returned: %1 (%2)") // .arg(toString(result)).arg(msg.hex()); }); commandSent = true; diff --git a/src/device-hidpp.cc b/src/device-hidpp.cc index 45d23ce2..9968385b 100644 --- a/src/device-hidpp.cc +++ b/src/device-hidpp.cc @@ -7,6 +7,8 @@ #include "enum-helper.h" #include "logging.h" +#include + #include #include @@ -99,8 +101,8 @@ ssize_t SubHidppConnection::sendData(HIDPP::Message msg) if (busType() == BusType::Bluetooth) { if (msg.deviceIndex() == HIDPP::DeviceIndex::DefaultDevice) { - logWarn(hid) << tr("Invalid message device index in data '%1' for device connected " - "via bluetooth.").arg(msg.hex()); + logWarn(hid) << i18n("Invalid message device index in data '%1' for device connected " + "via bluetooth.", msg.hex()); return errorResult; } @@ -165,8 +167,8 @@ void SubHidppConnection::sendRequest(HIDPP::Message msg, RequestResultCallback r if (!validDeviceIndex) { - logWarn(hid) << tr("Invalid device index (%1) in message for '%2'") - .arg(msg.deviceIndex()).arg(path()); + logWarn(hid) << i18n("Invalid device index (%1) in message for '%2'", + msg.deviceIndex(), path()); if (cb) { cb(MsgResult::InvalidFormat, HIDPP::Message()); } return; } @@ -498,8 +500,8 @@ void SubHidppConnection::setReceiverState(ReceiverState rs) { if (rs == m_receiverState) { return; } - logDebug(hid) << tr("Receiver state (%1) changes from %3 to %4") - .arg(path()).arg(toString(m_receiverState), toString(rs)); + logDebug(hid) << i18n("Receiver state (%1) changes from %2 to %3", + path(), toString(m_receiverState), toString(rs)); m_receiverState = rs; emit receiverStateChanged(m_receiverState); } @@ -509,8 +511,8 @@ void SubHidppConnection::setPresenterState(PresenterState ps) { if (ps == m_presenterState) { return; } - logDebug(hid) << tr("Presenter state (%1) changes from %2 to %3") - .arg(path()).arg(toString(m_presenterState), toString(ps)); + logDebug(hid) << i18n("Presenter state (%1) changes from %2 to %3", + path(), toString(m_presenterState), toString(ps)); m_presenterState = ps; emit presenterStateChanged(m_presenterState); } @@ -557,8 +559,8 @@ void SubHidppConnection::initReceiver(std::function cb) Message(Type::Short, DeviceIndex::DefaultDevice, Commands::GetRegister, 0, 0, {}), [index=++index](MsgResult result, HIDPP::Message&& /* msg */) { if (result == MsgResult::Ok) { return; } - logWarn(hid) << tr("Usb receiver init error; step %1: %2") - .arg(index).arg(toString(result)); + logWarn(hid) << i18n("Usb receiver init error; step %1: %2", + index, toString(result)); } }, RequestBatchItem{ @@ -567,8 +569,8 @@ void SubHidppConnection::initReceiver(std::function cb) {0x00, 0x01, 0x00}), [index=++index](MsgResult result, HIDPP::Message&& /* msg */) { if (result == MsgResult::Ok) { return; } - logWarn(hid) << tr("Usb receiver init error; step %1: %2") - .arg(index).arg(toString(result)); + logWarn(hid) << i18n("Usb receiver init error; step %1: %2", + index, toString(result)); } }, RequestBatchItem{ @@ -576,8 +578,8 @@ void SubHidppConnection::initReceiver(std::function cb) Message(Type::Short, DeviceIndex::DefaultDevice, Commands::GetRegister, 0, 2, {}), [index=++index](MsgResult result, HIDPP::Message&& /* msg */) { if (result == MsgResult::Ok) { return; } - logWarn(hid) << tr("Usb receiver init error; step %1: %2") - .arg(index).arg(toString(result)); + logWarn(hid) << i18n("Usb receiver init error; step %1: %2", + index, toString(result)); } }, RequestBatchItem{ @@ -586,8 +588,8 @@ void SubHidppConnection::initReceiver(std::function cb) {0x02, 0x00, 0x00}), [index=++index](MsgResult result, HIDPP::Message&& /* msg */) { if (result == MsgResult::Ok) { return; } - logWarn(hid) << tr("Usb receiver init error; step %1: %2") - .arg(index).arg(toString(result)); + logWarn(hid) << i18n("Usb receiver init error; step %1: %2", + index, toString(result)); } }, RequestBatchItem{ @@ -596,8 +598,8 @@ void SubHidppConnection::initReceiver(std::function cb) {0x00, 0x09, 0x00}), [index=++index](MsgResult result, HIDPP::Message&& /* msg */) { if (result == MsgResult::Ok) { return; } - logWarn(hid) << tr("Usb receiver init error; step %1: %2") - .arg(index).arg(toString(result)); + logWarn(hid) << i18n("Usb receiver init error; step %1: %2", + index, toString(result)); } }, }}; @@ -639,14 +641,15 @@ void SubHidppConnection::initPresenter(std::function cb) } case FState::Uninitialized: case FState::Initializing: { - logError(hid) << tr("Unexpected state from feature set."); + logError(hid) << i18n("Unexpected state from feature set."); setPresenterState(PresenterState::Error); break; } case FState::Initialized: { - logDebug(hid) << tr("Received %1 supported features from device. (%2)") - .arg(m_featureSet.featureCount()).arg(path()); + logDebug(hid) << i18np("Received one supported feature from device. (%2)", + "Received %1 supported features from device. (%2)", + m_featureSet.featureCount(), path()); registerForFeatureNotifications(); updateDeviceFlags(); @@ -655,7 +658,8 @@ void SubHidppConnection::initPresenter(std::function cb) { if (!resultMap.empty()) { for (const auto& res : resultMap) { - logDebug(hid) << tr("InitFeature result %1 => %2").arg(toString(res.first)).arg(toString(res.second)); + logDebug(hid) << i18n("InitFeature result %1 => %2", + toString(res.first), toString(res.second)); } } emit featureSetInitialized(); @@ -747,10 +751,10 @@ void SubHidppConnection::updateDeviceFlags() m_featureSet.featureCodeSupported(HIDPP::FeatureCode::Haptic); if (hasPresenterControl || hasHaptic) { featureFlagsSet |= DeviceFlag::Vibrate; - logDebug(hid) << tr("Subdevice '%1' reported %2 support.") - .arg(path()).arg(toString(hasPresenterControl - ? HIDPP::FeatureCode::PresenterControl - : HIDPP::FeatureCode::Haptic)); + logDebug(hid) << i18n("Subdevice '%1' reported %2 support.", path(), + toString(hasPresenterControl + ? HIDPP::FeatureCode::PresenterControl + : HIDPP::FeatureCode::Haptic)); } else { featureFlagsUnset |= DeviceFlag::Vibrate; } @@ -761,10 +765,10 @@ void SubHidppConnection::updateDeviceFlags() m_featureSet.featureCodeSupported(HIDPP::FeatureCode::UnifiedBattery); if (hasBatteryStatus || hasUnifiedBattery) { featureFlagsSet |= DeviceFlag::ReportBattery; - logDebug(hid) << tr("Subdevice '%1' reported %2 support.") - .arg(path()).arg(toString(hasBatteryStatus - ? HIDPP::FeatureCode::BatteryStatus - : HIDPP::FeatureCode::UnifiedBattery)); + logDebug(hid) << i18n("Subdevice '%1' reported %2 support.", path(), + toString(hasBatteryStatus + ? HIDPP::FeatureCode::BatteryStatus + : HIDPP::FeatureCode::UnifiedBattery)); } else { featureFlagsUnset |= DeviceFlag::ReportBattery; } @@ -775,8 +779,8 @@ void SubHidppConnection::updateDeviceFlags() featureFlagsSet |= DeviceFlags::BackHold; specialMoveInputs.emplace_back(SpecialKeys::eventSequenceInfo(SpecialKeys::Key::NextHoldMove)); specialMoveInputs.emplace_back(SpecialKeys::eventSequenceInfo(SpecialKeys::Key::BackHoldMove)); - logDebug(hid) << tr("Subdevice '%1' reported %2 support.") - .arg(path()).arg(toString(HIDPP::FeatureCode::ReprogramControlsV4)); + logDebug(hid) << i18n("Subdevice '%1' reported %2 support.", + path(), toString(HIDPP::FeatureCode::ReprogramControlsV4)); } else { featureFlagsUnset |= DeviceFlags::NextHold; @@ -786,8 +790,8 @@ void SubHidppConnection::updateDeviceFlags() if (m_featureSet.featureCodeSupported(HIDPP::FeatureCode::PointerSpeed)) { featureFlagsSet |= DeviceFlags::PointerSpeed; - logDebug(hid) << tr("Subdevice '%1' reported %2 support.") - .arg(path()).arg(toString(HIDPP::FeatureCode::PointerSpeed)); + logDebug(hid) << i18n("Subdevice '%1' reported %2 support.", + path(), toString(HIDPP::FeatureCode::PointerSpeed)); } else { featureFlagsUnset |= DeviceFlags::BackHold; @@ -817,8 +821,8 @@ void SubHidppConnection::registerForFeatureNotifications() constexpr uint8_t ButtonBack = 0xdc; const auto isNextPressed = msg[5] == ButtonNext || msg[7] == ButtonNext; const auto isBackPressed = msg[5] == ButtonBack || msg[7] == ButtonBack; - logDebug(hid) << tr("Buttons pressed: Next = %1, Back = %2") - .arg(isNextPressed).arg(isBackPressed); + logDebug(hid) << i18n("Buttons pressed: Next = %1, Back = %2", + isNextPressed, isBackPressed); }), 0 /* function 0 */); @@ -858,15 +862,15 @@ void SubHidppConnection::registerForUsbNotifications() const auto notificationDeviceIndex = msg.deviceIndex(); const auto deviceKind = msg[4] & 0x0f; const bool linkEstablished = !static_cast(msg[4] & (1<<6)); - logDebug(hid) << tr("%1, device index = %2, device kind = %3, link established = %4") - .arg(toString(HIDPP::Notification::DeviceConnection)) - .arg(notificationDeviceIndex).arg(deviceKind).arg(linkEstablished); + logDebug(hid) << i18n("%1, device index = %2, device kind = %3, link established = %4", + toString(HIDPP::Notification::DeviceConnection), + notificationDeviceIndex, deviceKind, linkEstablished); if (!m_deviceIndexKnown && deviceKind == 0x04) { m_deviceIndex = notificationDeviceIndex; m_deviceIndexKnown = true; - logInfo(hid) << tr("Found presenter in Bolt receiver slot %1.").arg(m_deviceIndex); + logInfo(hid) << i18n("Found presenter in Bolt receiver slot %1.", m_deviceIndex); } // A Bolt receiver can carry several devices. Ignore notifications that do @@ -879,7 +883,7 @@ void SubHidppConnection::registerForUsbNotifications() if (m_presenterState == PresenterState::Initialized_Online) { setPresenterState(PresenterState::Initialized_Offline); } - logInfo(hid) << tr("HID++ device '%1' went offline.").arg(path()); + logInfo(hid) << i18n("HID++ device '%1' went offline.", path()); return; } @@ -888,7 +892,7 @@ void SubHidppConnection::registerForUsbNotifications() || m_presenterState == PresenterState::Uninitialized || m_presenterState == PresenterState::Error) { - logInfo(hid) << tr("HID++ device '%1' came online.").arg(path()); + logInfo(hid) << i18n("HID++ device '%1' came online.", path()); checkAndUpdatePresenterState(makeSafeCallback([](PresenterState /* ps */) { //... })); @@ -990,7 +994,7 @@ void SubHidppConnection::findPresenterDeviceIndex(uint8_t candidate, { m_deviceIndex = candidate; m_deviceIndexKnown = true; - logInfo(hid) << tr("Found HID++ device in Bolt receiver slot %1.").arg(m_deviceIndex); + logInfo(hid) << i18n("Found HID++ device in Bolt receiver slot %1.", m_deviceIndex); if (cb) { cb(true); } return; } @@ -1007,8 +1011,8 @@ void SubHidppConnection::getProtocolVersion(std::function %1, version = %2.%3") - .arg(toString(res)).arg(pv.major).arg(pv.minor); + logDebug(hid) << i18n("getProtocolVersion() => %1, version = %2.%3", + toString(res), pv.major, pv.minor); cb(res, (res == MsgResult::HidppError) ? msg.errorCode() : HIDPP::Error::NoError, pv); } @@ -1024,8 +1028,8 @@ void SubHidppConnection::checkPresenterOnline(std::function %2").arg(toString(res.first)).arg(toString(res.second)); + logDebug(hid) << i18n("InitFeature result %1 => %2", + toString(res.first), toString(res.second)); } } setPresenterState(PresenterState::Initialized_Online); @@ -1124,7 +1129,7 @@ void SubHidppConnection::onHidppDataAvailable(int fd) // just ignore regular HID reports from the Logitech Spotlight } else { - logDebug(hid) << tr("Received invalid HID++ message '%1' from %2").arg(msg.hex(), path()); + logDebug(hid) << i18n("Received invalid HID++ message '%1' from %2", msg.hex(), path()); } return; } @@ -1138,16 +1143,16 @@ void SubHidppConnection::onHidppDataAvailable(int fd) if (it != m_requests.end()) { - logDebug(hid) << tr("Received hiddpp error with code = %1 on") - .arg(to_integral(msg.errorCode())) << path() << "(" << msg.hex() << ")"; + logDebug(hid) << i18n("Received hiddpp error with code = %1 on", + to_integral(msg.errorCode())) << path() << "(" << msg.hex() << ")"; if (it->callBack) { it->callBack(MsgResult::HidppError, std::move(msg)); } m_requests.erase(it); } else { - logWarn(hid) << tr("Received error hidpp message '%1' " - "without matching request.").arg(qPrintable(msg.hex())); + logWarn(hid) << i18n("Received error hidpp message '%1' " + "without matching request.", msg.hex()); } return; } @@ -1161,7 +1166,7 @@ void SubHidppConnection::onHidppDataAvailable(int fd) if (it != m_requests.end()) { // Found matching request - logDebug(hid) << tr("Received %1 bytes on").arg(msg.size()) << path() + logDebug(hid) << i18np("Received one byte on", "Received %1 bytes on", msg.size()) << path() << "(" << msg.hex() << ")"; if (it->callBack) { it->callBack(MsgResult::Ok, std::move(msg)); @@ -1171,7 +1176,7 @@ void SubHidppConnection::onHidppDataAvailable(int fd) else if (msg.softwareId() == 0 || msg.subId() < 0x80) { // Event/Notification - // logDebug(hid) << tr("Received notification (%1) on %2").arg(msg.hex()).arg(path()); + // logDebug(hid) << i18n("Received notification (%1) on %2", msg.hex(), path()); // Notify subscribers const auto& callbackList = m_notificationSubscribers[msg.featureIndex()]; @@ -1183,8 +1188,8 @@ void SubHidppConnection::onHidppDataAvailable(int fd) } else { - logWarn(hid) << tr("Received hidpp message " - "'%1' without matching request.").arg(msg.hex()); + logWarn(hid) << i18n("Received hidpp message " + "'%1' without matching request.", msg.hex()); } } diff --git a/src/device-key-lookup.cc b/src/device-key-lookup.cc index 8697c863..02dda592 100644 --- a/src/device-key-lookup.cc +++ b/src/device-key-lookup.cc @@ -5,6 +5,8 @@ #include "enum-helper.h" +#include + #include #include @@ -38,9 +40,9 @@ const QString& lookup(const DeviceId& dId, const DeviceInputEvent& die) using KeyNameMap = std::unordered_map; static const KeyNameMap logitechSpotlightMapping = { - { eHash(EV_KEY, BTN_LEFT), QObject::tr("Click") }, - { eHash(EV_KEY, KEY_RIGHT), QObject::tr("Next") }, - { eHash(EV_KEY, KEY_LEFT), QObject::tr("Back") }, + { eHash(EV_KEY, BTN_LEFT), i18n("Click") }, + { eHash(EV_KEY, KEY_RIGHT), i18n("Next") }, + { eHash(EV_KEY, KEY_LEFT), i18n("Back") }, { eHash(EV_KEY, to_integral(SpecialKeys::Key::NextHold)), SpecialKeys::eventSequenceInfo(SpecialKeys::Key::NextHold).name }, { eHash(EV_KEY, to_integral(SpecialKeys::Key::BackHold)), @@ -48,9 +50,9 @@ const QString& lookup(const DeviceId& dId, const DeviceInputEvent& die) }; static const KeyNameMap avattoH100Mapping = { - { eHash(EV_KEY, BTN_LEFT), QObject::tr("Click") }, - { eHash(EV_KEY, KEY_PAGEDOWN), QObject::tr("Down") }, - { eHash(EV_KEY, KEY_PAGEUP), QObject::tr("Up") }, + { eHash(EV_KEY, BTN_LEFT), i18n("Click") }, + { eHash(EV_KEY, KEY_PAGEDOWN), i18n("Down") }, + { eHash(EV_KEY, KEY_PAGEUP), i18n("Up") }, }; static const std::unordered_map map = diff --git a/src/device.cc b/src/device.cc index 911e0cd3..8c04b249 100644 --- a/src/device.cc +++ b/src/device.cc @@ -9,6 +9,8 @@ #include "hidpp.h" #include "logging.h" +#include + #include #include @@ -97,8 +99,8 @@ bool DeviceConnection::removeSubDevice(const QString& path) if (find_it != m_subDeviceConnections.end()) { if (find_it->second) { find_it->second->disconnect(); } // Important - logDebug(device) << tr("Disconnected sub-device: %1 (%2:%3) %4") - .arg(m_deviceName, hexId(m_deviceId.vendorId), + logDebug(device) << i18n("Disconnected sub-device: %1 (%2:%3) %4", + m_deviceName, hexId(m_deviceId.vendorId), hexId(m_deviceId.productId), path); emit subDeviceDisconnected(m_deviceId, path); m_subDeviceConnections.erase(find_it); @@ -197,7 +199,7 @@ std::shared_ptr SubEventConnection::create(const DeviceScan: const int evfd = ::open(sd.deviceFile.toLocal8Bit().constData(), O_RDONLY, 0); if (evfd == -1) { - logWarn(device) << tr("Cannot open event device '%1' for read.").arg(sd.deviceFile); + logWarn(device) << i18n("Cannot open event device '%1' for read.", sd.deviceFile); return std::shared_ptr(); } @@ -208,8 +210,8 @@ std::shared_ptr SubEventConnection::create(const DeviceScan: if (id.vendor != dc.deviceId().vendorId || id.product != dc.deviceId().productId) { ::close(evfd); - logDebug(device) << tr("Device id mismatch: %1 (%2:%3)") - .arg(sd.deviceFile, hexId(id.vendor), hexId(id.product)); + logDebug(device) << i18n("Device id mismatch: %1 (%2:%3)", + sd.deviceFile, hexId(id.vendor), hexId(id.product)); return std::shared_ptr(); } @@ -217,8 +219,8 @@ std::shared_ptr SubEventConnection::create(const DeviceScan: if (ioctl(evfd, EVIOCGBIT(0, sizeof(bitmask)), &bitmask) < 0) { ::close(evfd); - logWarn(device) << tr("Cannot get device properties: %1 (%2:%3)") - .arg(sd.deviceFile, hexId(id.vendor), hexId(id.product)); + logWarn(device) << i18n("Cannot get device properties: %1 (%2:%3)", + sd.deviceFile, hexId(id.vendor), hexId(id.product)); return std::shared_ptr(); } @@ -247,7 +249,8 @@ std::shared_ptr SubEventConnection::create(const DeviceScan: if (res == 0) { return true; } // Grab not successful - logError(device) << tr("Error grabbing device: %1 (return value: %2)").arg(sd.deviceFile).arg(res); + logError(device) << i18n("Error grabbing device: %1 (return value: %2)", + sd.deviceFile, res); ioctl(evfd, EVIOCGRAB, 0); } return false; @@ -267,7 +270,7 @@ std::shared_ptr SubEventConnection::create(const DeviceScan: if (grabbed) { ioctl(evfd, EVIOCGRAB, 0); } - logDebug(device) << tr("Closing file descriptor for '%1'").arg(path); + logDebug(device) << i18n("Closing file descriptor for '%1'", path); ::close(evfd); }); @@ -320,7 +323,7 @@ int SubHidrawConnection::openHidrawSubDevice(const DeviceScan::SubDevice& sd, co const int devfd = ::open(sd.deviceFile.toLocal8Bit().constData(), O_RDWR|O_NONBLOCK , 0); if (devfd == errorResult) { - logWarn(device) << tr("Cannot open hidraw device '%1' for read/write.").arg(sd.deviceFile); + logWarn(device) << i18n("Cannot open hidraw device '%1' for read/write.", sd.deviceFile); return errorResult; } @@ -329,7 +332,8 @@ int SubHidrawConnection::openHidrawSubDevice(const DeviceScan::SubDevice& sd, co int descriptorSize = 0; if (ioctl(devfd, HIDIOCGRDESCSIZE, &descriptorSize) < 0) { - logWarn(device) << tr("Cannot retrieve report descriptor size of hidraw device '%1'.").arg(sd.deviceFile); + logWarn(device) << i18n("Cannot retrieve report descriptor size of hidraw device '%1'.", + sd.deviceFile); ::close(devfd); return errorResult; } @@ -338,7 +342,8 @@ int SubHidrawConnection::openHidrawSubDevice(const DeviceScan::SubDevice& sd, co reportDescriptor.size = descriptorSize; if (ioctl(devfd, HIDIOCGRDESC, &reportDescriptor) < 0) { - logWarn(device) << tr("Cannot retrieve report descriptor of hidraw device '%1'.").arg(sd.deviceFile); + logWarn(device) << i18n("Cannot retrieve report descriptor of hidraw device '%1'.", + sd.deviceFile); ::close(devfd); return errorResult; } @@ -348,7 +353,7 @@ int SubHidrawConnection::openHidrawSubDevice(const DeviceScan::SubDevice& sd, co // get the hidraw sub-device id info if (ioctl(devfd, HIDIOCGRAWINFO, &devinfo) < 0) { - logWarn(device) << tr("Cannot get info from hidraw device '%1'.").arg(sd.deviceFile); + logWarn(device) << i18n("Cannot get info from hidraw device '%1'.", sd.deviceFile); ::close(devfd); return errorResult; }; @@ -357,8 +362,8 @@ int SubHidrawConnection::openHidrawSubDevice(const DeviceScan::SubDevice& sd, co if (static_cast(devinfo.vendor) != devId.vendorId || static_cast(devinfo.product) != devId.productId) { - logDebug(device) << tr("Device id mismatch: %1 (%2:%3)") - .arg(sd.deviceFile, hexId(devinfo.vendor), hexId(devinfo.product)); + logDebug(device) << i18n("Device id mismatch: %1 (%2:%3)", + sd.deviceFile, hexId(devinfo.vendor), hexId(devinfo.product)); ::close(devfd); return errorResult; } @@ -384,7 +389,7 @@ ssize_t SubHidrawConnection::sendData(const void* msg, size_t msgLen) logDebug(hid) << res << "bytes written to" << path() << "(" << QByteArray::fromRawData(static_cast(msg), msgLen).toHex() << ")"; } else { - logWarn(hid) << tr("Writing to '%1' failed. (%2)").arg(path()).arg(res); + logWarn(hid) << i18n("Writing to '%1' failed. (%2)", path(), res); } return res; @@ -407,7 +412,7 @@ void SubHidrawConnection::createSocketNotifiers(int fd, const QString& path) connect(readNotifier, &QSocketNotifier::destroyed, [fdPtr, path]() { if (fdPtr && *fdPtr != -1) { - logDebug(device) << tr("Closing file descriptor for '%1'").arg(path); + logDebug(device) << i18n("Closing file descriptor for '%1'", path); ::close(*fdPtr); *fdPtr = -1; } @@ -420,7 +425,7 @@ void SubHidrawConnection::createSocketNotifiers(int fd, const QString& path) connect(writeNotifier, &QSocketNotifier::destroyed, [fdPtr, path]() { if (fdPtr && *fdPtr != -1) { - logDebug(device) << tr("Closing file descriptor for '%1'").arg(path); + logDebug(device) << i18n("Closing file descriptor for '%1'", path); ::close(*fdPtr); *fdPtr = -1; } diff --git a/src/deviceinput.cc b/src/deviceinput.cc index a8d870c2..4e70bb1e 100644 --- a/src/deviceinput.cc +++ b/src/deviceinput.cc @@ -8,6 +8,8 @@ #include "settings.h" #include "virtualdevice.h" +#include + #include #include #include @@ -815,12 +817,12 @@ void InputMapper::addEvents(const input_event* input_events, size_t num) } if (input_events[num-1].type != EV_SYN) { - logWarning(input) << tr("Input mapper expects events separated by SYN event."); + logWarning(input) << i18n("Input mapper expects events separated by SYN event."); return; } if (num == 1) { - logWarning(input) << tr("Ignoring single SYN event received."); + logWarning(input) << i18n("Ignoring single SYN event received."); return; } @@ -957,13 +959,13 @@ namespace SpecialKeys const std::map& keyEventSequenceMap() { static const std::map keyMap { - {Key::NextHold, {InputMapper::tr("Next Hold"), + {Key::NextHold, {i18n("Next Hold"), KeyEventSequence{{{EV_KEY, to_integral(Key::NextHold), 1}}}}}, - {Key::BackHold, {InputMapper::tr("Back Hold"), + {Key::BackHold, {i18n("Back Hold"), KeyEventSequence{{{EV_KEY, to_integral(Key::BackHold), 1}}}}}, - {Key::NextHoldMove, {InputMapper::tr("Next Hold Move"), + {Key::NextHoldMove, {i18n("Next Hold Move"), makeSpecialKeyEventSequence(to_integral(Key::NextHoldMove)) }}, - {Key::BackHoldMove, {InputMapper::tr("Back Hold Move"), + {Key::BackHoldMove, {i18n("Back Hold Move"), makeSpecialKeyEventSequence(to_integral(Key::BackHoldMove))}}, }; return keyMap; diff --git a/src/devicescan.cc b/src/devicescan.cc index 485ddf63..0f76c84e 100644 --- a/src/devicescan.cc +++ b/src/devicescan.cc @@ -3,6 +3,8 @@ #include "devicescan.h" +#include + #include #include @@ -16,8 +18,6 @@ bool isExtraDeviceSupported(quint16 vendorId, quint16 productId); QString getExtraDeviceName(quint16 vendorId, quint16 productId); namespace { - class DeviceScan_ : public QObject {}; // for i18n and logging - // ----------------------------------------------------------------------------------------------- // List of supported devices const std::array supportedDefaultDevices {{ @@ -173,12 +173,13 @@ namespace DeviceScan { const QFileInfo dpInfo(hidDevicePath); if (!dpInfo.exists()) { - result.errorMessages.push_back(DeviceScan_::tr("HID device path '%1' does not exist.").arg(hidDevicePath)); + result.errorMessages.push_back(i18n("HID device path '%1' does not exist.", hidDevicePath)); return result; } if (!dpInfo.isExecutable()) { - result.errorMessages.push_back(DeviceScan_::tr("HID device path '%1': Cannot list files.").arg(hidDevicePath)); + result.errorMessages.push_back( + i18n("HID device path '%1': Cannot list files.", hidDevicePath)); return result; } diff --git a/src/deviceswidget.cc b/src/deviceswidget.cc index 742d4ba2..f7a9fd59 100644 --- a/src/deviceswidget.cc +++ b/src/deviceswidget.cc @@ -11,6 +11,8 @@ #include "settings.h" #include "spotlight.h" +#include + #include #include #include @@ -78,7 +80,7 @@ QWidget* DevicesWidget::createDevicesWidget(Settings* settings, Spotlight* spotl const auto devHLayout = new QHBoxLayout(); vLayout->addLayout(devHLayout); - devHLayout->addWidget(new QLabel(tr("Device"), dw)); + devHLayout->addWidget(new QLabel(i18n("Device"), dw)); devHLayout->addWidget(m_devicesCombo); devHLayout->setStretch(1, 1); @@ -87,12 +89,12 @@ QWidget* DevicesWidget::createDevicesWidget(Settings* settings, Spotlight* spotl m_tabWidget = new QTabWidget(dw); vLayout->addWidget(m_tabWidget); - m_tabWidget->addTab(createInputMapperWidget(settings, spotlight), tr("Input Mapping")); + m_tabWidget->addTab(createInputMapperWidget(settings, spotlight), i18n("Input Mapping")); m_timerFeedbackWidget = createTimerFeedbackWidget(settings); m_deviceDetailsTabWidget = createDeviceInfoWidget(spotlight); - m_tabWidget->addTab(m_deviceDetailsTabWidget, tr("Details")); + m_tabWidget->addTab(m_deviceDetailsTabWidget, i18n("Details")); updateTimerFeedbackTab(spotlight); connect(this, &DevicesWidget::currentDeviceChanged, this, @@ -108,18 +110,18 @@ QWidget* DevicesWidget::createDevicesWidget(Settings* settings, Spotlight* spotl QWidget* DevicesWidget::createTimerFeedbackWidget(Settings* settings) { const auto widget = new QWidget(this); - const auto group = new QGroupBox(tr("Presentation timer feedback"), widget); + const auto group = new QGroupBox(i18n("Presentation timer feedback"), widget); m_timerFeedbackStrength = new QSpinBox(group); m_timerFeedbackStrength->setRange(0, 100); m_timerFeedbackStrength->setSingleStep(5); - m_timerFeedbackStrength->setSuffix(tr("%")); - m_timerFeedbackStrength->setToolTip(tr("Set to 0% to disable completion vibration.")); + m_timerFeedbackStrength->setSuffix(i18n("%")); + m_timerFeedbackStrength->setToolTip(i18n("Set to 0% to disable completion vibration.")); const auto groupLayout = new QGridLayout(group); - groupLayout->addWidget(new QLabel(tr("Completion vibration strength"), group), 0, 0); + groupLayout->addWidget(new QLabel(i18n("Completion vibration strength"), group), 0, 0); groupLayout->addWidget(m_timerFeedbackStrength, 0, 1); groupLayout->addWidget( - new QLabel(tr("Vibrates this presenter when the presentation timer finishes."), group), + new QLabel(i18n("Vibrates this presenter when the presentation timer finishes."), group), 1, 0, 1, 2); groupLayout->setColumnStretch(1, 1); @@ -173,7 +175,7 @@ void DevicesWidget::updateTimerFeedbackTab(Spotlight* spotlight) const int tabIndex = m_tabWidget->indexOf(m_timerFeedbackWidget); if (supportsVibration && tabIndex < 0) { - m_tabWidget->insertTab(1, m_timerFeedbackWidget, tr("Timer Feedback")); + m_tabWidget->insertTab(1, m_timerFeedbackWidget, i18n("Timer Feedback")); } else if (!supportsVibration && tabIndex >= 0) { m_tabWidget->removeTab(tabIndex); } @@ -213,15 +215,15 @@ QWidget* DevicesWidget::createInputMapperWidget(Settings* settings, Spotlight* / const auto intervalLayout = new QHBoxLayout(); const auto addBtn = new IconButton(Font::Icon::plus_5, imWidget); - addBtn->setToolTip(tr("Add a new input mapping entry.")); + addBtn->setToolTip(i18n("Add a new input mapping entry.")); const auto delBtn = new IconButton(Font::Icon::trash_can_1, imWidget); - delBtn->setToolTip(tr("Delete the selected input mapping entries (%1).", "%1=shortcut") - .arg(delShortcut->key().toString())); + delBtn->setToolTip(i18nc("%1=shortcut", "Delete the selected input mapping entries (%1).", + delShortcut->key().toString())); delBtn->setEnabled(false); - const auto intervalLbl = new QLabel(tr("Input Sequence Interval"), imWidget); + const auto intervalLbl = new QLabel(i18n("Input Sequence Interval"), imWidget); const auto intervalSb = new QSpinBox(this); - const auto intervalUnitLbl = new QLabel(tr("ms"), imWidget); + const auto intervalUnitLbl = new QLabel(i18n("ms"), imWidget); intervalSb->setMaximum(settings->inputSequenceIntervalRange().max); intervalSb->setMinimum(settings->inputSequenceIntervalRange().min); intervalSb->setValue(m_inputMapper ? m_inputMapper->keyEventInterval() @@ -299,7 +301,7 @@ QWidget* DevicesWidget::createInputMapperWidget(Settings* settings, Spotlight* / void DevicesWidget::createDeviceComboBox(Spotlight* spotlight) { m_devicesCombo = new QComboBox(this); - m_devicesCombo->setToolTip(tr("List of connected devices.")); + m_devicesCombo->setToolTip(i18n("List of connected devices.")); for (const auto& dev : spotlight->connectedDevices()) { const auto data = QVariant::fromValue(dev.id); @@ -352,7 +354,7 @@ QWidget* DevicesWidget::createDisconnectedStateWidget() { const auto stateWidget = new QWidget(this); const auto hbox = new QHBoxLayout(stateWidget); - const auto label = new QLabel(tr("No devices connected."), stateWidget); + const auto label = new QLabel(i18n("No devices connected."), stateWidget); label->setToolTip(label->text()); auto icon = style()->standardIcon(QStyle::SP_MessageBoxWarning); const auto iconLabel = new QLabel(stateWidget); @@ -550,7 +552,7 @@ void DeviceInfoWidget::updateTextEdit() { // Insert list of sub devices cursor.insertBlock(); cursor.insertBlock(); - cursor.insertText(tr("Sub devices:"), underlineFormat); + cursor.insertText(i18n("Sub devices:"), underlineFormat); cursor.insertText(" ", normalFormat); cursor.insertBlock(); cursor.movePosition(QTextCursor::PreviousBlock); @@ -575,7 +577,7 @@ void DeviceInfoWidget::updateTextEdit() if (!m_batteryInfo.isEmpty()) { cursor.insertBlock(); - cursor.insertText(tr("Battery Info:"), underlineFormat); + cursor.insertText(i18n("Battery Info:"), underlineFormat); cursor.insertText(" ", normalFormat); cursor.insertText(m_batteryInfo); cursor.insertBlock(); @@ -584,7 +586,7 @@ void DeviceInfoWidget::updateTextEdit() if (!m_hidppInfo.presenterState.isEmpty()) { cursor.insertBlock(); - cursor.insertText(tr("HID++ Info:"), underlineFormat); + cursor.insertText(i18n("HID++ Info:"), underlineFormat); cursor.insertText(" ", normalFormat); cursor.insertBlock(); cursor.movePosition(QTextCursor::PreviousBlock); @@ -596,23 +598,23 @@ void DeviceInfoWidget::updateTextEdit() cursor.insertList(listFormat); if (!m_hidppInfo.receiverState.isEmpty()) { - cursor.insertText(tr("Receiver state:"), italicFormat); + cursor.insertText(i18n("Receiver state:"), italicFormat); cursor.insertText(" ", normalFormat); cursor.insertText(m_hidppInfo.receiverState); } cursor.insertBlock(); - cursor.insertText(tr("Presenter state:"), italicFormat); + cursor.insertText(i18n("Presenter state:"), italicFormat); cursor.insertText(" ", normalFormat); cursor.insertText(m_hidppInfo.presenterState); cursor.insertBlock(); - cursor.insertText(tr("Protocol version:"), italicFormat); + cursor.insertText(i18n("Protocol version:"), italicFormat); cursor.insertText(" ", normalFormat); cursor.insertText(m_hidppInfo.protocolVersion); cursor.insertBlock(); - cursor.insertText(tr("Supported features:"), italicFormat); + cursor.insertText(i18n("Supported features:"), italicFormat); cursor.insertText(" ", normalFormat); cursor.insertText(m_hidppInfo.hidppFlags.join(", ")); diff --git a/src/hidpp.cc b/src/hidpp.cc index 5a97c032..014e9282 100644 --- a/src/hidpp.cc +++ b/src/hidpp.cc @@ -6,6 +6,7 @@ #include "enum-helper.h" #include "logging.h" +#include #include #include @@ -419,8 +420,8 @@ void FeatureSet::getFeatureIndex(FeatureCode fc, std::functionsendRequest(std::move(featureIndexReqMsg), [cb=std::move(cb), fc](MsgResult result, Message&& msg) { - logDebug(hid) << tr("getFeatureIndex(%1) => %2, %3") - .arg(to_integral(fc)).arg(toString(result)).arg(msg[4]); + logDebug(hid) << i18n("getFeatureIndex(%1) => %2, %3", + to_integral(fc), toString(result), msg[4]); if (cb) { cb(result, (result != MsgResult::Ok) ? 0 : msg[4]); } }); }); @@ -464,8 +465,8 @@ void FeatureSet::getFirmwareCount(std::functionsendRequest(std::move(fwCountReqMsg), [featureIndex, cb=std::move(cb)](MsgResult result, Message&& msg) { - logDebug(hid) << tr("getFirmwareCount() => %1, featureIndex = %2, count = %3") - .arg(toString(result)).arg(featureIndex).arg(msg[4]); + logDebug(hid) << i18n("getFirmwareCount() => %1, featureIndex = %2, count = %3", + toString(result), featureIndex, msg[4]); if (cb) { cb(result, featureIndex, (result != MsgResult::Ok) ? 0 : msg[4]); } }); })); @@ -512,9 +513,10 @@ void FeatureSet::getMainFirmwareInfo(uint8_t fwIndex, uint8_t max, uint8_t curre getFirmwareInfo(fwIndex, current, makeSafeCallback( [this, current, max, fwIndex, cb=std::move(cb)](MsgResult res, FirmwareInfo&& fi) mutable { - logDebug(hid) << tr("getFirmwareInfo(%1, %2, %3) => %4, fi.type = %5, fi.ver = %6, fi.pref = %7") - .arg(fwIndex).arg(max).arg(current).arg(toString(res)) - .arg(to_integral(fi.firmwareType())).arg(fi.firmwareVersion()).arg(fi.firmwarePrefix()); + logDebug(hid) << i18n( + "getFirmwareInfo(%1, %2, %3) => %4, fi.type = %5, fi.ver = %6, fi.pref = %7", + fwIndex, max, current, toString(res), to_integral(fi.firmwareType()), + fi.firmwareVersion(), fi.firmwarePrefix()); if (res == MsgResult::Ok && fi.firmwareType() == FirmwareInfo::FirmwareType::MainApp) { @@ -547,8 +549,8 @@ void FeatureSet::initFromDevice(DeviceId dId, std::function cb) getMainFirmwareInfo(makeSafeCallback( [this, dId, cb=std::move(cb)](MsgResult res, FirmwareInfo&& fi) mutable { - logDebug(hid) << tr("getMainFirmwareInfo() => %1, fi.type = %2").arg(toString(res)) - .arg(to_integral(fi.firmwareType())); + logDebug(hid) << i18n("getMainFirmwareInfo() => %1, fi.type = %2", + toString(res), to_integral(fi.firmwareType())); if (fi.firmwareType() == FirmwareInfo::FirmwareType::MainApp) { m_mainFirmwareInfo = std::move(fi); @@ -558,8 +560,9 @@ void FeatureSet::initFromDevice(DeviceId dId, std::function cb) if (res == MsgResult::Ok && m_mainFirmwareInfo.isValid() && loadCachedFeatureSet(dId, m_mainFirmwareInfo, m_featureTable)) { - logDebug(hid) - << tr("Loaded feature set with %1 entries from local cache").arg(m_featureTable.size()); + logDebug(hid) + << i18np("Loaded feature set with one entry from local cache", + "Loaded feature set with %1 entries from local cache", m_featureTable.size()); setState(State::Initialized); if (cb) { cb(m_state); } return; @@ -568,8 +571,8 @@ void FeatureSet::initFromDevice(DeviceId dId, std::function cb) getFeatureCount(makeSafeCallback( [this, dId, cb=std::move(cb)](MsgResult res, uint8_t featureIndex, uint8_t count) mutable { - logDebug(hid) << tr("getFeatureCount() => %1, featureIndex = %2, count = %3") - .arg(toString(res)).arg(featureIndex).arg(count); + logDebug(hid) << i18n("getFeatureCount() => %1, featureIndex = %2, count = %3", + toString(res), featureIndex, count); if (res != MsgResult::Ok) { diff --git a/src/inputmapconfig.cc b/src/inputmapconfig.cc index f23a494a..8fb4689d 100644 --- a/src/inputmapconfig.cc +++ b/src/inputmapconfig.cc @@ -7,6 +7,8 @@ #include "inputseqedit.h" #include "logging.h" +#include + #include #include @@ -60,9 +62,9 @@ QVariant InputMapConfigModel::headerData(int section, Qt::Orientation orientatio { switch(section) { - case InputSeqCol: return tr("Input Sequence"); + case InputSeqCol: return i18n("Input Sequence"); case ActionTypeCol: return "Type"; - case ActionCol: return tr("Mapped Action"); + case ActionCol: return i18n("Mapped Action"); default: return "Invalid"; } } @@ -412,4 +414,3 @@ void InputMapConfigView::keyPressEvent(QKeyEvent* e) QTableView::keyPressEvent(e); } - diff --git a/src/inputseqedit.cc b/src/inputseqedit.cc index d4afbf83..1df4a6d0 100644 --- a/src/inputseqedit.cc +++ b/src/inputseqedit.cc @@ -8,6 +8,8 @@ #include "inputmapconfig.h" #include "logging.h" +#include + #include #include #include @@ -208,7 +210,7 @@ void InputSeqEdit::paintEvent(QPaintEvent* /* paintEvent */) const auto spacingX = QStaticText(" ").size().width(); xPos += drawRecordingSymbol(xPos, p, option) + spacingX; if (m_recordedSequence.empty()) { - drawPlaceHolderText(xPos, p, option, tr("Press device button(s)...")); + drawPlaceHolderText(xPos, p, option, i18n("Press device button(s)...")); } else { drawKeyEventSequence(xPos, p, option, m_recordedSequence, m_deviceId, false); } @@ -380,7 +382,7 @@ int InputSeqEdit::drawEmptyIndicator(int startX, QPainter& p, const QStyleOption p.setPen(option.palette.color(QPalette::Disabled, QPalette::Text)); } - static const QStaticText textNone(InputSeqEdit::tr("None")); + static const QStaticText textNone(i18n("None")); const auto top = static_cast((option.rect.height() - textNone.size().height()) / 2); p.drawStaticText(startX + option.rect.left(), option.rect.top() + top, textNone); p.restore(); diff --git a/src/linuxdesktop.cc b/src/linuxdesktop.cc index 387cde3f..98bef867 100644 --- a/src/linuxdesktop.cc +++ b/src/linuxdesktop.cc @@ -5,6 +5,8 @@ #include "logging.h" +#include + #include #include #include @@ -34,7 +36,7 @@ namespace { { int pipeDescriptors[2] = {-1, -1}; if (::pipe2(pipeDescriptors, O_CLOEXEC) != 0) { - logError(desktop) << LinuxDesktop::tr("Could not create a pipe for the KWin screenshot."); + logError(desktop) << i18n("Could not create a pipe for the KWin screenshot."); return {}; } @@ -42,7 +44,7 @@ namespace { if (!readPipe.open(pipeDescriptors[0], QIODevice::ReadOnly, QFileDevice::AutoCloseHandle)) { ::close(pipeDescriptors[0]); ::close(pipeDescriptors[1]); - logError(desktop) << LinuxDesktop::tr("Could not open the KWin screenshot pipe."); + logError(desktop) << i18n("Could not open the KWin screenshot pipe."); return {}; } @@ -62,10 +64,10 @@ namespace { } if (!reply.isValid()) { - auto message = LinuxDesktop::tr("Screenshot via KWin ScreenShot2 failed: %1") - .arg(reply.error().message()); + auto message = i18n("Screenshot via KWin ScreenShot2 failed: %1", + reply.error().message()); if (reply.error().name() == QStringLiteral("org.kde.KWin.ScreenShot2.Error.NoAuthorized")) { - message += LinuxDesktop::tr( + message += i18n( " Install Projecteur so KWin can associate the executable with its desktop metadata."); } logError(desktop) << message; @@ -82,13 +84,13 @@ namespace { const quint64 expectedBytes = quint64(stride) * height; if (width == 0 || height == 0 || stride == 0 || expectedBytes > quint64(std::numeric_limits::max())) { - logError(desktop) << LinuxDesktop::tr("KWin returned invalid screenshot dimensions."); + logError(desktop) << i18n("KWin returned invalid screenshot dimensions."); return {}; } const QByteArray pixels = readPipe.readAll(); if (quint64(pixels.size()) < expectedBytes) { - logError(desktop) << LinuxDesktop::tr("KWin returned an incomplete screenshot."); + logError(desktop) << i18n("KWin returned an incomplete screenshot."); return {}; } @@ -96,7 +98,7 @@ namespace { const QImage image(reinterpret_cast(pixels.constData()), int(width), int(height), int(stride), format); if (image.isNull()) { - logError(desktop) << LinuxDesktop::tr("KWin returned an unsupported screenshot format."); + logError(desktop) << i18n("KWin returned an unsupported screenshot format."); return {}; } @@ -135,11 +137,11 @@ QPixmap LinuxDesktop::grabScreen(QScreen* screen) const return {}; } if (!isWayland()) { - logWarning(desktop) << tr("Screen capture is only supported on Wayland."); + logWarning(desktop) << i18n("Screen capture is only supported on Wayland."); return {}; } if (type() != LinuxDesktop::Type::KDE) { - logWarning(desktop) << tr("Screen capture is only supported on KDE Plasma."); + logWarning(desktop) << i18n("Screen capture is only supported on KDE Plasma."); return {}; } return grabScreenKWin(screen); @@ -154,7 +156,7 @@ void LinuxDesktop::setShakeCursorEffectSuppressed(bool suppressed) QDBusInterface interface(kwinService, kwinEffectsPath, kwinEffectsInterface); if (!interface.isValid()) { - logWarning(desktop) << tr("Could not access KWin's desktop effects interface."); + logWarning(desktop) << i18n("Could not access KWin's desktop effects interface."); return; } @@ -163,8 +165,8 @@ void LinuxDesktop::setShakeCursorEffectSuppressed(bool suppressed) const QDBusReply loadedReply = interface.call(QStringLiteral("isEffectLoaded"), QString::fromLatin1(shakeCursorEffect)); if (!loadedReply.isValid()) { - logWarning(desktop) << tr("Could not query KWin's Shake Cursor effect: %1") - .arg(loadedReply.error().message()); + logWarning(desktop) << i18n("Could not query KWin's Shake Cursor effect: %1", + loadedReply.error().message()); return; } if (!loadedReply.value()) { @@ -174,8 +176,8 @@ void LinuxDesktop::setShakeCursorEffectSuppressed(bool suppressed) const QDBusReply unloadReply = interface.call(QStringLiteral("unloadEffect"), QString::fromLatin1(shakeCursorEffect)); if (!unloadReply.isValid()) { - logWarning(desktop) << tr("Could not suppress KWin's Shake Cursor effect: %1") - .arg(unloadReply.error().message()); + logWarning(desktop) << i18n("Could not suppress KWin's Shake Cursor effect: %1", + unloadReply.error().message()); return; } @@ -187,9 +189,9 @@ void LinuxDesktop::setShakeCursorEffectSuppressed(bool suppressed) interface.call(QStringLiteral("loadEffect"), QString::fromLatin1(shakeCursorEffect)); if (!loadReply.isValid() || !loadReply.value()) { const auto error = loadReply.isValid() - ? tr("KWin refused to load the effect.") + ? i18n("KWin refused to load the effect.") : loadReply.error().message(); - logWarning(desktop) << tr("Could not restore KWin's Shake Cursor effect: %1").arg(error); + logWarning(desktop) << i18n("Could not restore KWin's Shake Cursor effect: %1", error); return; } diff --git a/src/main.cc b/src/main.cc index f706747b..e39050a1 100644 --- a/src/main.cc +++ b/src/main.cc @@ -9,6 +9,7 @@ #include #include +#include #include @@ -29,17 +30,15 @@ namespace { constexpr int PROJECTEUR_ERROR_EMPTY_COMMAND_PROPS = 44; // ----------------------------------------------------------------------------------------------- - class Main : public QObject {}; - KAboutData projecteurAboutData() { KAboutData aboutData( QStringLiteral("Projecteur"), QStringLiteral("Projecteur"), QString::fromUtf8(projecteur::version_string()), - Main::tr("A KDE Plasma spotlight for Logitech presenter devices."), + i18n("A KDE Plasma spotlight for Logitech presenter devices."), KAboutLicense::MIT, - Main::tr("Copyright 2018–2021 Jahn Fuchs\n" + i18n("Copyright 2018–2021 Jahn Fuchs\n" "Fork modifications copyright 2026 Guillaume Binet"), {}, QStringLiteral("https://github.com/gbin/Projecteur-kde"), @@ -48,20 +47,20 @@ namespace { aboutData.setOrganizationDomain("projecteur.org"); aboutData.setDesktopFileName(QStringLiteral("org.projecteur.Projecteur")); aboutData.setOtherText( - Main::tr("Independent, unofficial KDE/Wayland fork based on Projecteur.\n\n" + i18n("Independent, unofficial KDE/Wayland fork based on Projecteur.\n\n" "Build information:\n" "Git branch: %1\n" "Git hash: %2\n" - "Build type: %3") - .arg(QString::fromUtf8(projecteur::version_branch()), + "Build type: %3", + QString::fromUtf8(projecteur::version_branch()), QString::fromUtf8(projecteur::version_shorthash()), QString::fromUtf8(projecteur::version_buildtype()))); aboutData.addAuthor( - QStringLiteral("Guillaume Binet"), Main::tr("KDE/Wayland fork maintainer"), {}, + QStringLiteral("Guillaume Binet"), i18n("KDE/Wayland fork maintainer"), {}, QStringLiteral("https://github.com/gbin")); aboutData.addAuthor( - QStringLiteral("Jahn Fuchs"), Main::tr("Original Projecteur author"), {}, + QStringLiteral("Jahn Fuchs"), i18n("Original Projecteur author"), {}, QStringLiteral("https://github.com/jahnf")); const struct { @@ -87,7 +86,7 @@ namespace { }; for (const auto& contributor : contributors) { aboutData.addCredit( - QString::fromUtf8(contributor.name), Main::tr("Contributor"), {}, + QString::fromUtf8(contributor.name), i18n("Contributor"), {}, QStringLiteral("https://github.com/%1").arg(QString::fromUtf8(contributor.githubName))); } return aboutData; @@ -185,15 +184,16 @@ namespace { { const auto result = DeviceScan::getDevices(options.additionalDevices); print() << QCoreApplication::applicationName() << " " - << projecteur::version_string() << "; " << Main::tr("device scan") << std::endl; + << projecteur::version_string() << "; " << i18n("device scan") << std::endl; for (const auto& errmsg : result.errorMessages) { - print() << "** " << Main::tr("Error: ") << errmsg; + print() << "** " << i18n("Error: ") << errmsg; } print() << (!result.errorMessages.empty() ? "\n" : "") - << Main::tr(" * Found %1 supported devices. (%2 readable, %3 writable)") - .arg(result.devices.size()).arg(result.numDevicesReadable).arg(result.numDevicesWritable); + << i18np(" * Found one supported device. (%2 readable, %3 writable)", + " * Found %1 supported devices. (%2 readable, %3 writable)", + result.devices.size(), result.numDevicesReadable, result.numDevicesWritable); for (const auto& device : result.devices) { @@ -239,7 +239,7 @@ namespace { const uint16_t vendorId = devAttribs.size() > 0 ? devAttribs[0].toUShort(nullptr, 16) : 0; const uint16_t productId = devAttribs.size() > 1 ? devAttribs[1].toUShort(nullptr, 16) : 0; if (vendorId == 0 || productId == 0) { - error() << Main::tr("Invalid vendor/productId pair: ") << deviceValue; + error() << i18n("Invalid vendor/productId pair: ") << deviceValue; } else { const QString name = (devAttribs.size() >= 3) ? devAttribs[2] : ""; options.additionalDevices.push_back({vendorId, productId, false, name}); @@ -252,28 +252,28 @@ namespace { { QCommandLineParser parser; - const QCommandLineOption versionOption_ = {QStringList{ "v", "version"}, Main::tr("Print application version.")}; + const QCommandLineOption versionOption_ = {QStringList{ "v", "version"}, i18n("Print application version.")}; const QCommandLineOption fullVersionOption_ = QCommandLineOption{QStringList{ "f", "fullversion" }}; - const QCommandLineOption helpOption_ = {QStringList{ "h", "help"}, Main::tr("Show command line usage.")}; - const QCommandLineOption fullHelpOption_ = {QStringList{ "help-all"}, Main::tr("Show complete command line usage with all properties.")}; - const QCommandLineOption cfgFileOption_ = {QStringList{ "cfg" }, Main::tr("Set custom config file."), "file"}; - const QCommandLineOption commandOption_ = {QStringList{ "c", "command"}, Main::tr("Send command/property to a running instance."), "cmd"}; - const QCommandLineOption deviceInfoOption_ = {QStringList{ "d", "device-scan"}, Main::tr("Print device-scan results.")}; - const QCommandLineOption logLvlOption_ = {QStringList{ "l", "log-level" }, Main::tr("Set log level (dbg,inf,wrn,err)."), "lvl"}; - const QCommandLineOption disableUInputOption_ = {QStringList{ "disable-uinput" }, Main::tr("Disable uinput support.")}; - const QCommandLineOption showDlgOnStartOption_ = {QStringList{ "show-dialog" }, Main::tr("Show preferences dialog on start.")}; - const QCommandLineOption hideSysTrayOption_ = {QStringList{ "hide-systray-icon"}, Main::tr("Hide the system tray icon.")}; - const QCommandLineOption dialogMinOnlyOption_ = {QStringList{ "m", "minimize-only" }, Main::tr("Only allow minimizing the dialog.")}; - const QCommandLineOption disableOverlayOption_ = {QStringList{ "disable-overlay" }, Main::tr("Disable spotlight overlay completely.")}; + const QCommandLineOption helpOption_ = {QStringList{ "h", "help"}, i18n("Show command line usage.")}; + const QCommandLineOption fullHelpOption_ = {QStringList{ "help-all"}, i18n("Show complete command line usage with all properties.")}; + const QCommandLineOption cfgFileOption_ = {QStringList{ "cfg" }, i18n("Set custom config file."), "file"}; + const QCommandLineOption commandOption_ = {QStringList{ "c", "command"}, i18n("Send command/property to a running instance."), "cmd"}; + const QCommandLineOption deviceInfoOption_ = {QStringList{ "d", "device-scan"}, i18n("Print device-scan results.")}; + const QCommandLineOption logLvlOption_ = {QStringList{ "l", "log-level" }, i18n("Set log level (dbg,inf,wrn,err)."), "lvl"}; + const QCommandLineOption disableUInputOption_ = {QStringList{ "disable-uinput" }, i18n("Disable uinput support.")}; + const QCommandLineOption showDlgOnStartOption_ = {QStringList{ "show-dialog" }, i18n("Show preferences dialog on start.")}; + const QCommandLineOption hideSysTrayOption_ = {QStringList{ "hide-systray-icon"}, i18n("Hide the system tray icon.")}; + const QCommandLineOption dialogMinOnlyOption_ = {QStringList{ "m", "minimize-only" }, i18n("Only allow minimizing the dialog.")}; + const QCommandLineOption disableOverlayOption_ = {QStringList{ "disable-overlay" }, i18n("Disable spotlight overlay completely.")}; const QCommandLineOption additionalDeviceOption_ = {QStringList{ "D", "additional-device"}, - Main::tr("Additional accepted device; DEVICE = vendorId:productId\n" + i18n("Additional accepted device; DEVICE = vendorId:productId\n" " " "e.g., -D 04b3:310c; e.g. -D 0x0c45:0x8101"), "device"}; // --------------------------------------------------------------------------------------------- ProjecteurCmdLineParser() { - parser.setApplicationDescription(Main::tr("Wayland application for the Logitech Spotlight device.")); + parser.setApplicationDescription(i18n("Wayland application for the Logitech Spotlight device.")); parser.addOptions({versionOption_, helpOption_, fullHelpOption_, commandOption_, cfgFileOption_, fullVersionOption_, deviceInfoOption_, logLvlOption_, disableUInputOption_, showDlgOnStartOption_, dialogMinOnlyOption_, @@ -350,17 +350,17 @@ namespace { } print() << " -c COMMAND|PROPERTY " << commandOption_.description() << std::endl; print() << ""; - print() << " spot=[on|off|toggle] " << Main::tr("Turn spotlight on/off or toggle."); + print() << " spot=[on|off|toggle] " << i18n("Turn spotlight on/off or toggle."); if (fullHelp) { - print() << " preset=NAME " << Main::tr("Set a preset."); - print() << " vibrate[=I[,L]] " << Main::tr("Send vibrate command to device with intensity,length."); - print() << " spot.size.adjust=[+|-]N " << Main::tr("Increase or decrease spot size by N."); + print() << " preset=NAME " << i18n("Set a preset."); + print() << " vibrate[=I[,L]] " << i18n("Send vibrate command to device with intensity,length."); + print() << " spot.size.adjust=[+|-]N " << i18n("Increase or decrease spot size by N."); } - print() << " settings=[show|hide] " << Main::tr("Show/hide preferences dialog."); + print() << " settings=[show|hide] " << i18n("Show/hide preferences dialog."); if (fullHelp) { - print() << " preset=NAME " << Main::tr("Set a preset."); + print() << " preset=NAME " << i18n("Set a preset."); } - print() << " quit " << Main::tr("Quit the running instance."); + print() << " quit " << i18n("Quit the running instance."); // Early return if the user not explicitly requested the full help if (!fullHelp) { return; } @@ -397,6 +397,7 @@ namespace { // ------------------------------------------------------------------------------------------------- int main(int argc, char *argv[]) { + KLocalizedString::setApplicationDomain("projecteur"); const auto aboutData = projecteurAboutData(); KAboutData::setApplicationData(aboutData); QCoreApplication::setApplicationName(aboutData.componentName()); @@ -443,7 +444,7 @@ int main(int argc, char *argv[]) options.commands.removeAll(""); if (options.commands.isEmpty()) { - error() << Main::tr("Command/Properties cannot be an empty string."); + error() << i18n("Command/Properties cannot be an empty string."); return PROJECTEUR_ERROR_EMPTY_COMMAND_PROPS; } } @@ -463,7 +464,8 @@ int main(int argc, char *argv[]) if (lvl != logging::level::unknown) { logging::setCurrentLevel(lvl); } else { - error() << Main::tr("Cannot set log level, unknown level: '%1'").arg(parser.logLvlOptionValue()); + error() << i18n("Cannot set log level, unknown level: '%1'", + parser.logLvlOptionValue()); } } } @@ -471,8 +473,8 @@ int main(int argc, char *argv[]) ProjecteurApplication app(argc, argv, options); if (!app.isPrimaryInstance()) { if (app.startupExitCode() == PROJECTEUR_ERROR_NO_INSTANCE_FOUND) { - error() << Main::tr("Cannot send commands '%1' - no running application instance found.") - .arg(options.commands.join("; ")); + error() << i18n("Cannot send commands '%1' - no running application instance found.", + options.commands.join("; ")); } return app.startupExitCode(); } diff --git a/src/nativekeyseqedit.cc b/src/nativekeyseqedit.cc index 8abd8fe7..dc10b208 100644 --- a/src/nativekeyseqedit.cc +++ b/src/nativekeyseqedit.cc @@ -7,6 +7,8 @@ #include "inputseqedit.h" #include "logging.h" +#include + #include #include @@ -112,7 +114,7 @@ void NativeKeySeqEdit::paintEvent(QPaintEvent* /* event */) const int spacingX = static_cast(QStaticText(" ").size().width()); xPos += drawRecordingSymbol(xPos, p, option) + spacingX; if (m_recordedQtKeys.empty()) { - xPos += drawPlaceHolderText(xPos, p, option, tr("Press shortcut...")); + xPos += drawPlaceHolderText(xPos, p, option, i18n("Press shortcut...")); } else { xPos += drawText(xPos, p, option, NativeKeySequence::toString(m_recordedQtKeys, m_recordedNativeModifiers)); xPos += drawText(xPos, p, option, ", ..."); diff --git a/src/preferencesdlg.cc b/src/preferencesdlg.cc index 92a7f25e..e2fb54e9 100644 --- a/src/preferencesdlg.cc +++ b/src/preferencesdlg.cc @@ -12,7 +12,11 @@ #include #include +#include +#include #include +#include +#include #include #include @@ -20,8 +24,10 @@ #include #include #include +#include #include -#include +#include +#include #include #include #include @@ -33,6 +39,7 @@ #include #include #include +#include #include @@ -41,15 +48,15 @@ LOGGING_CATEGORY(preferences, "preferences") // ------------------------------------------------------------------------------------------------- namespace { #define CURSOR_PATH ":/icons/cursors/" - static const std::map> cursorMap { - { "", {"No Cursor", Qt::BlankCursor}}, - { CURSOR_PATH "cursor-arrow.png", {"Arrow Cursor", Qt::ArrowCursor}}, - { CURSOR_PATH "cursor-busy.png", {"Busy Cursor", Qt::BusyCursor}}, - { CURSOR_PATH "cursor-cross.png", {"Cross Cursor", Qt::CrossCursor}}, - { CURSOR_PATH "cursor-hand.png", {"Pointing Hand Cursor", Qt::PointingHandCursor}}, - { CURSOR_PATH "cursor-openhand.png", {"Open Hand Cursor", Qt::OpenHandCursor}}, - { CURSOR_PATH "cursor-uparrow.png", {"Up Arrow Cursor", Qt::UpArrowCursor}}, - { CURSOR_PATH "cursor-whatsthis.png", {"What't This Cursor", Qt::WhatsThisCursor}}, + static const std::map> cursorMap { + { "", {kli18n("No Cursor"), Qt::BlankCursor}}, + { CURSOR_PATH "cursor-arrow.png", {kli18n("Arrow Cursor"), Qt::ArrowCursor}}, + { CURSOR_PATH "cursor-busy.png", {kli18n("Busy Cursor"), Qt::BusyCursor}}, + { CURSOR_PATH "cursor-cross.png", {kli18n("Cross Cursor"), Qt::CrossCursor}}, + { CURSOR_PATH "cursor-hand.png", {kli18n("Pointing Hand Cursor"), Qt::PointingHandCursor}}, + { CURSOR_PATH "cursor-openhand.png", {kli18n("Open Hand Cursor"), Qt::OpenHandCursor}}, + { CURSOR_PATH "cursor-uparrow.png", {kli18n("Up Arrow Cursor"), Qt::UpArrowCursor}}, + { CURSOR_PATH "cursor-whatsthis.png", {kli18n("What's This Cursor"), Qt::WhatsThisCursor}}, }; } // end anonymous namespace @@ -63,7 +70,7 @@ PreferencesDialog::PreferencesDialog(Settings* settings, Spotlight* spotlight, , m_presetComboStyle(std::make_unique()) { setAttribute(Qt::WA_DeleteOnClose, false); - setWindowTitle(QCoreApplication::applicationName() + " - " + tr("Preferences")); + setWindowTitle(QCoreApplication::applicationName() + " - " + i18n("Preferences")); setWindowIcon(QIcon(":/icons/projecteur-tray.svg")); setFaceType(KPageDialog::Tabbed); @@ -74,21 +81,21 @@ PreferencesDialog::PreferencesDialog(Settings* settings, Spotlight* spotlight, const auto spotlightPage = new QWidget(this); const auto spotlightLayout = new QVBoxLayout(spotlightPage); - const auto overlayCheckBox = new QCheckBox(tr("Enable spotlight overlay"), spotlightPage); + const auto overlayCheckBox = new QCheckBox(i18n("Enable spotlight overlay"), spotlightPage); overlayCheckBox->setChecked(!settings->overlayDisabled()); spotlightLayout->addWidget(overlayCheckBox); spotlightLayout->addWidget(settingsWidget); - addPage(spotlightPage, tr("Spotlight"), QStringLiteral("preferences-desktop-display"), + addPage(spotlightPage, i18n("Spotlight"), QStringLiteral("preferences-desktop-display"), QString(), false); m_deviceswidget = new DevicesWidget(settings, spotlight, this); - addPage(m_deviceswidget, tr("Devices"), QStringLiteral("input-mouse"), QString(), false); + addPage(m_deviceswidget, i18n("Devices"), QStringLiteral("input-mouse"), QString(), false); m_shortcutsEditor = new KShortcutsEditor( actionCollection, this, KShortcutsEditor::GlobalAction, KShortcutsEditor::LetterShortcutsDisallowed); - addPage(m_shortcutsEditor, tr("Shortcuts"), QStringLiteral("configure-shortcuts"), + addPage(m_shortcutsEditor, i18n("Shortcuts"), QStringLiteral("configure-shortcuts"), QString(), false); - addPage(createLogTabWidget(), tr("Log"), QStringLiteral("utilities-log-viewer"), + addPage(createLogTabWidget(), i18n("Log"), QStringLiteral("utilities-log-viewer"), QString(), false); if (auto* helpButton = buttonBox()->button(QDialogButtonBox::Help)) { @@ -154,7 +161,7 @@ QWidget* PreferencesDialog::createSettingsTabWidget(Settings* settings) const auto presetSelector = createPresetSelector(settings); - const auto testBtn = new QPushButton(tr("&Show test..."), widget); + const auto testBtn = new QPushButton(i18n("&Show test..."), widget); connect(testBtn, &QPushButton::clicked, this, &PreferencesDialog::testButtonClicked); const auto hbox = new QHBoxLayout; @@ -175,7 +182,7 @@ QWidget* PreferencesDialog::createPresetSelector(Settings* settings) const auto widget = new QFrame(this); widget->setFrameStyle(QFrame::StyledPanel | QFrame::Plain); const auto hbox = new QHBoxLayout(widget); - hbox->addWidget(new QLabel(tr("Presets"), widget)); + hbox->addWidget(new QLabel(i18n("Presets"), widget)); m_presetCombo = new QComboBox(widget); m_presetCombo->setModel(settings->presetModel()); @@ -185,10 +192,10 @@ QWidget* PreferencesDialog::createPresetSelector(Settings* settings) m_presetCombo->setInsertPolicy(QComboBox::NoInsert); const auto deleteBtn = new IconButton(Font::Icon::trash_can_1, widget); - deleteBtn->setToolTip(tr("Delete currently selected preset.")); + deleteBtn->setToolTip(i18n("Delete currently selected preset.")); deleteBtn->setEnabled(m_presetCombo->currentIndex() > 0); const auto newBtn = new IconButton(Font::Icon::plus_5, widget); - newBtn->setToolTip(tr("Create new preset from current spotlight settings.")); + newBtn->setToolTip(i18n("Create new preset from current spotlight settings.")); const std::vector widgets{m_presetCombo, deleteBtn, newBtn}; for (const auto w : widgets) { @@ -240,7 +247,7 @@ QWidget* PreferencesDialog::createPresetSelector(Settings* settings) settings->savePreset(text); }); - le->setText(tr("New Preset")); + le->setText(i18n("New Preset")); le->setFocus(); le->selectAll(); }); @@ -271,7 +278,7 @@ QWidget* PreferencesDialog::createPresetSelector(Settings* settings) // ------------------------------------------------------------------------------------------------- QGroupBox* PreferencesDialog::createShapeGroupBox(Settings* settings) { - const auto shapeGroup = new QGroupBox(tr("Shape Settings"), this); + const auto shapeGroup = new QGroupBox(i18n("Shape Settings"), this); const auto spotSizeSpinBox = new QSpinBox(this); spotSizeSpinBox->setMaximum(settings->spotSizeRange().max); @@ -279,14 +286,14 @@ QGroupBox* PreferencesDialog::createShapeGroupBox(Settings* settings) spotSizeSpinBox->setValue(settings->spotSize()); const auto spotsizeHBox = new QHBoxLayout; spotsizeHBox->addWidget(spotSizeSpinBox); - spotsizeHBox->addWidget(new QLabel(QString("% ")+tr("of screen height"))); + spotsizeHBox->addWidget(new QLabel(QString("% ")+i18n("of screen height"))); connect(spotSizeSpinBox, static_cast(&QSpinBox::valueChanged), settings, &Settings::setSpotSize); connect(settings, &Settings::spotSizeChanged, spotSizeSpinBox, &QSpinBox::setValue); connect(settings, &Settings::spotSizeChanged, this, &PreferencesDialog::resetPresetCombo); const auto spotGrid = new QGridLayout(shapeGroup); - spotGrid->addWidget(new QLabel(tr("Spot Size"), this), 0, 0); + spotGrid->addWidget(new QLabel(i18n("Spot Size"), this), 0, 0); spotGrid->addLayout(spotsizeHBox, 0, 1); // Spotlight shape setting @@ -303,7 +310,7 @@ QGroupBox* PreferencesDialog::createShapeGroupBox(Settings* settings) resetPresetCombo(); }); emit settings->spotShapeChanged(settings->spotShape()); - spotGrid->addWidget(new QLabel(tr("Shape"), this), 4, 0); + spotGrid->addWidget(new QLabel(i18n("Shape"), this), 4, 0); spotGrid->addWidget(shapeCombo, 4, 1); // Spotlight rotation setting @@ -317,7 +324,7 @@ QGroupBox* PreferencesDialog::createShapeGroupBox(Settings* settings) settings, &Settings::setSpotRotation); connect(settings, &Settings::spotRotationChanged, shapeRotationSb, &QDoubleSpinBox::setValue); connect(settings, &Settings::spotRotationChanged, this, &PreferencesDialog::resetPresetCombo); - const auto shapeRotationLabel = new QLabel(tr("Rotation"), this); + const auto shapeRotationLabel = new QLabel(i18n("Rotation"), this); spotGrid->addWidget(shapeRotationLabel, 5, 0); spotGrid->addWidget(shapeRotationSb, 5, 1); @@ -409,7 +416,7 @@ QGroupBox* PreferencesDialog::createShapeGroupBox(Settings* settings) // ------------------------------------------------------------------------------------------------- QGroupBox* PreferencesDialog::createSpotGroupBox(Settings* settings) { - const auto spotGroup = new QGroupBox(tr("Show Spotlight Shade"), this); + const auto spotGroup = new QGroupBox(i18n("Show Spotlight Shade"), this); spotGroup->setCheckable(true); spotGroup->setChecked(settings->showSpotShade()); connect(spotGroup, &QGroupBox::toggled, settings, &Settings::setShowSpotShade); @@ -420,11 +427,11 @@ QGroupBox* PreferencesDialog::createSpotGroupBox(Settings* settings) // Shade color setting const auto shadeColor = new KColorButton(settings->shadeColor(), this); - shadeColor->setAccessibleName(tr("Shade Color")); + shadeColor->setAccessibleName(i18n("Shade Color")); connect(shadeColor, &KColorButton::changed, settings, &Settings::setShadeColor); connect(settings, &Settings::shadeColorChanged, shadeColor, &KColorButton::setColor); connect(settings, &Settings::shadeColorChanged, this, &PreferencesDialog::resetPresetCombo); - spotGrid->addWidget(new QLabel(tr("Shade Color"), this), 1, 0); + spotGrid->addWidget(new QLabel(i18n("Shade Color"), this), 1, 0); spotGrid->addWidget(shadeColor, 1, 1); // Spotlight shade opacity setting @@ -438,7 +445,7 @@ QGroupBox* PreferencesDialog::createSpotGroupBox(Settings* settings) settings, &Settings::setShadeOpacity); connect(settings, &Settings::shadeOpacityChanged, shadeOpacitySb, &QDoubleSpinBox::setValue); connect(settings, &Settings::shadeOpacityChanged, this, &PreferencesDialog::resetPresetCombo); - spotGrid->addWidget(new QLabel(tr("Shade Opacity"), this), 2, 0); + spotGrid->addWidget(new QLabel(i18n("Shade Opacity"), this), 2, 0); spotGrid->addWidget(shadeOpacitySb, 2, 1); spotGrid->addWidget(new QWidget(this), 100, 0); @@ -451,7 +458,7 @@ QGroupBox* PreferencesDialog::createSpotGroupBox(Settings* settings) // ------------------------------------------------------------------------------------------------- QGroupBox* PreferencesDialog::createDotGroupBox(Settings* settings) { - const auto dotGroup = new QGroupBox(tr("Show Center Dot"), this); + const auto dotGroup = new QGroupBox(i18n("Show Center Dot"), this); dotGroup->setCheckable(true); dotGroup->setChecked(settings->showCenterDot()); connect(dotGroup, &QGroupBox::toggled, settings, &Settings::setShowCenterDot); @@ -464,22 +471,22 @@ QGroupBox* PreferencesDialog::createDotGroupBox(Settings* settings) dotSizeSpinBox->setValue(settings->dotSize()); auto dotsizeHBox = new QHBoxLayout; dotsizeHBox->addWidget(dotSizeSpinBox); - dotsizeHBox->addWidget(new QLabel(tr("pixel"))); + dotsizeHBox->addWidget(new QLabel(i18n("pixel"))); connect(dotSizeSpinBox, static_cast(&QSpinBox::valueChanged), settings, &Settings::setDotSize); connect(settings, &Settings::dotSizeChanged, dotSizeSpinBox, &QSpinBox::setValue); connect(settings, &Settings::dotSizeChanged, this, &PreferencesDialog::resetPresetCombo); const auto dotGrid = new QGridLayout(dotGroup); - dotGrid->addWidget(new QLabel(tr("Dot Size"), this), 0, 0); + dotGrid->addWidget(new QLabel(i18n("Dot Size"), this), 0, 0); dotGrid->addLayout(dotsizeHBox, 0, 1); const auto dotColor = new KColorButton(settings->dotColor(), this); - dotColor->setAccessibleName(tr("Dot Color")); + dotColor->setAccessibleName(i18n("Dot Color")); connect(dotColor, &KColorButton::changed, settings, &Settings::setDotColor); connect(settings, &Settings::dotColorChanged, dotColor, &KColorButton::setColor); connect(settings, &Settings::dotColorChanged, this, &PreferencesDialog::resetPresetCombo); - dotGrid->addWidget(new QLabel(tr("Dot Color"), this), 1, 0); + dotGrid->addWidget(new QLabel(i18n("Dot Color"), this), 1, 0); dotGrid->addWidget(dotColor, 1, 1); @@ -494,7 +501,7 @@ QGroupBox* PreferencesDialog::createDotGroupBox(Settings* settings) settings, &Settings::setDotOpacity); connect(settings, &Settings::borderOpacityChanged, dotOpacitySb, &QDoubleSpinBox::setValue); connect(settings, &Settings::borderOpacityChanged, this, &PreferencesDialog::resetPresetCombo); - dotGrid->addWidget(new QLabel(tr("Dot Opacity"), this), 2, 0); + dotGrid->addWidget(new QLabel(i18n("Dot Opacity"), this), 2, 0); dotGrid->addWidget(dotOpacitySb, 2, 1); dotGrid->addWidget(new QWidget(this), 100, 0); @@ -507,7 +514,7 @@ QGroupBox* PreferencesDialog::createDotGroupBox(Settings* settings) // ------------------------------------------------------------------------------------------------- QGroupBox* PreferencesDialog::createBorderGroupBox(Settings* settings) { - const auto borderGroup = new QGroupBox(tr("Show Border"), this); + const auto borderGroup = new QGroupBox(i18n("Show Border"), this); borderGroup->setCheckable(true); borderGroup->setChecked(settings->showBorder()); connect(borderGroup, &QGroupBox::toggled, settings, &Settings::setShowBorder); @@ -520,22 +527,22 @@ QGroupBox* PreferencesDialog::createBorderGroupBox(Settings* settings) borderSizeSpinBox->setValue(settings->borderSize()); auto bordersizeHBox = new QHBoxLayout; bordersizeHBox->addWidget(borderSizeSpinBox); - bordersizeHBox->addWidget(new QLabel(tr("% of spotsize"))); + bordersizeHBox->addWidget(new QLabel(i18n("% of spotsize"))); connect(borderSizeSpinBox, static_cast(&QSpinBox::valueChanged), settings, &Settings::setBorderSize); connect(settings, &Settings::borderSizeChanged, borderSizeSpinBox, &QSpinBox::setValue); connect(settings, &Settings::borderSizeChanged, this, &PreferencesDialog::resetPresetCombo); const auto borderGrid = new QGridLayout(borderGroup); - borderGrid->addWidget(new QLabel(tr("Border Size"), this), 0, 0); + borderGrid->addWidget(new QLabel(i18n("Border Size"), this), 0, 0); borderGrid->addLayout(bordersizeHBox, 0, 1); const auto borderColor = new KColorButton(settings->borderColor(), this); - borderColor->setAccessibleName(tr("Border Color")); + borderColor->setAccessibleName(i18n("Border Color")); connect(borderColor, &KColorButton::changed, settings, &Settings::setBorderColor); connect(settings, &Settings::borderColorChanged, borderColor, &KColorButton::setColor); connect(settings, &Settings::borderColorChanged, this, &PreferencesDialog::resetPresetCombo); - borderGrid->addWidget(new QLabel(tr("Border Color"), this), 1, 0); + borderGrid->addWidget(new QLabel(i18n("Border Color"), this), 1, 0); borderGrid->addWidget(borderColor, 1, 1); // Spotlight border opacity setting @@ -549,7 +556,7 @@ QGroupBox* PreferencesDialog::createBorderGroupBox(Settings* settings) settings, &Settings::setBorderOpacity); connect(settings, &Settings::borderOpacityChanged, borderOpacitySb, &QDoubleSpinBox::setValue); connect(settings, &Settings::borderOpacityChanged, this, &PreferencesDialog::resetPresetCombo); - borderGrid->addWidget(new QLabel(tr("Border Opacity"), this), 2, 0); + borderGrid->addWidget(new QLabel(i18n("Border Opacity"), this), 2, 0); borderGrid->addWidget(borderOpacitySb, 2, 1); borderGrid->addWidget(new QWidget(this), 100, 0); @@ -562,7 +569,7 @@ QGroupBox* PreferencesDialog::createBorderGroupBox(Settings* settings) // ------------------------------------------------------------------------------------------------- QGroupBox* PreferencesDialog::createZoomGroupBox(Settings* settings) { - const auto zoomGroup = new QGroupBox(tr("Enable Zoom"), this); + const auto zoomGroup = new QGroupBox(i18n("Enable Zoom"), this); zoomGroup->setCheckable(true); zoomGroup->setChecked(settings->zoomEnabled()); connect(zoomGroup, &QGroupBox::toggled, settings, &Settings::setZoomEnabled); @@ -582,7 +589,7 @@ QGroupBox* PreferencesDialog::createZoomGroupBox(Settings* settings) settings, &Settings::setZoomFactor); connect(settings, &Settings::zoomFactorChanged, zoomLevelSb, &QDoubleSpinBox::setValue); connect(settings, &Settings::zoomFactorChanged, this, &PreferencesDialog::resetPresetCombo); - zoomGrid->addWidget(new QLabel(tr("Zoom Level"), this), 0, 0); + zoomGrid->addWidget(new QLabel(i18n("Zoom Level"), this), 0, 0); zoomGrid->addWidget(zoomLevelSb, 0, 1); zoomGrid->setColumnStretch(1, 1); return zoomGroup; @@ -591,13 +598,14 @@ QGroupBox* PreferencesDialog::createZoomGroupBox(Settings* settings) // ------------------------------------------------------------------------------------------------- QGroupBox* PreferencesDialog::createCursorGroupBox(Settings* settings) { - const auto cursorGroup = new QGroupBox(tr("Cursor Settings"), this); + const auto cursorGroup = new QGroupBox(i18n("Cursor Settings"), this); cursorGroup->setCheckable(false); const auto grid = new QGridLayout(cursorGroup); const auto cursorCb = new QComboBox(this); for (const auto& item : cursorMap) { - cursorCb->addItem(QIcon(item.first), item.second.first, static_cast(item.second.second)); + cursorCb->addItem( + QIcon(item.first), item.second.first.toString(), static_cast(item.second.second)); } connect(settings, &Settings::cursorChanged, cursorCb, [cursorCb, this](int cursor){ const int idx = cursorCb->findData(cursor); @@ -610,7 +618,7 @@ QGroupBox* PreferencesDialog::createCursorGroupBox(Settings* settings) settings->setCursor(static_cast(cursorCb->itemData(index).toInt())); }); - grid->addWidget(new QLabel(tr("Cursor"), this), 0, 0); + grid->addWidget(new QLabel(i18n("Cursor"), this), 0, 0); grid->addWidget(cursorCb, 0, 1); grid->setColumnStretch(1, 1); return cursorGroup; @@ -619,7 +627,7 @@ QGroupBox* PreferencesDialog::createCursorGroupBox(Settings* settings) // ------------------------------------------------------------------------------------------------- QWidget* PreferencesDialog::createMultiScreenWidget(Settings* settings) { - const auto cb = new QCheckBox(tr("Enable multi-screen overlay"), this); + const auto cb = new QCheckBox(i18n("Enable multi-screen overlay"), this); cb->setChecked(settings->multiScreenOverlayEnabled()); connect(cb, &QCheckBox::toggled, settings, &Settings::setMultiScreenOverlayEnabled); connect(settings, &Settings::multiScreenOverlayEnabledChanged, cb, &QCheckBox::setChecked); @@ -654,13 +662,13 @@ QWidget* PreferencesDialog::createLogTabWidget() }); const auto lvlHBox = new QHBoxLayout(); - lvlHBox->addWidget(new QLabel(tr("Log Level"), widget)); + lvlHBox->addWidget(new QLabel(i18n("Log Level"), widget)); // Log level combo box const auto logLvlCombo = new QComboBox(widget); - logLvlCombo->addItem(tr("Debug"), static_cast(logging::level::debug)); - logLvlCombo->addItem(tr("Info"), static_cast(logging::level::info)); - logLvlCombo->addItem(tr("Warning"), static_cast(logging::level::warning)); - logLvlCombo->addItem(tr("Error"), static_cast(logging::level::error)); + logLvlCombo->addItem(i18n("Debug"), static_cast(logging::level::debug)); + logLvlCombo->addItem(i18n("Info"), static_cast(logging::level::info)); + logLvlCombo->addItem(i18n("Warning"), static_cast(logging::level::warning)); + logLvlCombo->addItem(i18n("Error"), static_cast(logging::level::error)); lvlHBox->addWidget(logLvlCombo); const int idx = logLvlCombo->findData(static_cast(logging::currentLevel())); @@ -669,12 +677,12 @@ QWidget* PreferencesDialog::createLogTabWidget() connect(logLvlCombo, static_cast(&QComboBox::currentIndexChanged), this, [logLvlCombo, te](int index) { const auto lvl = static_cast(logLvlCombo->itemData(index).toInt()); - te->appendPlainText(tr("--- Setting new log level: %1").arg(logging::levelToString(lvl))); + te->appendPlainText(i18n("--- Setting new log level: %1", logging::levelToString(lvl))); logging::setCurrentLevel(lvl); }); - const auto saveLogBtn = new QPushButton(tr("&Save log..."), this); - saveLogBtn->setToolTip(tr("Save log to file.")); + const auto saveLogBtn = new QPushButton(i18n("&Save log..."), this); + saveLogBtn->setToolTip(i18n("Save log to file.")); connect(saveLogBtn, &QPushButton::clicked, this, [this, te]() { static auto saveDir = QDir::homePath(); @@ -682,10 +690,18 @@ QWidget* PreferencesDialog::createLogTabWidget() .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd_hh-mm")); const auto defaultFile = QDir(saveDir).filePath(defaultName); - QString logFilter(tr("Log files (*.log *.txt)")); - const auto logFile = QFileDialog::getSaveFileName(this, tr("Save log file"), - defaultFile, logFilter, &logFilter); - if (logFile.isEmpty()) { return; } + KFileCustomDialog saveDialog(QUrl::fromLocalFile(defaultFile), this); + saveDialog.setWindowTitle(i18n("Save Log File")); + saveDialog.setOperationMode(KFileWidget::Saving); + saveDialog.fileWidget()->setMode(KFile::File | KFile::LocalOnly); + saveDialog.fileWidget()->setConfirmOverwrite(true); + saveDialog.fileWidget()->setFilters({ + KFileFilter(i18n("Log Files"), {QStringLiteral("*.log"), QStringLiteral("*.txt")}, {}) + }); + if (saveDialog.exec() != QDialog::Accepted) { return; } + + const auto logFile = saveDialog.fileWidget()->selectedFile(); + if (logFile.isEmpty()) { return; } saveDir = QFileInfo(logFile).path(); QFile f(logFile); @@ -699,14 +715,15 @@ QWidget* PreferencesDialog::createLogTabWidget() .arg(qVersion()).toLocal8Bit()); f.write(QString("\n------------------------------------------------------------\n").toLocal8Bit()); if (m_discardedLogCount > 0) { - f.write(tr("Discarded %1 previous log entries.").arg(m_discardedLogCount).toLocal8Bit()); + f.write(i18np("Discarded one previous log entry.", + "Discarded %1 previous log entries.", m_discardedLogCount).toLocal8Bit()); f.write(QString("\n------------------------------------------------------------\n").toLocal8Bit()); } f.write(te->toPlainText().toLocal8Bit()); - logInfo(preferences) << tr("Log saved to: ") << logFile; + logInfo(preferences) << i18n("Log saved to: ") << logFile; } else { - logError(preferences) << tr("Could not open '%1' for writing.").arg(logFile); + logError(preferences) << i18n("Could not open '%1' for writing.", logFile); } }); diff --git a/src/projecteurapp.cc b/src/projecteurapp.cc index 7fc43f22..c8a26f94 100644 --- a/src/projecteurapp.cc +++ b/src/projecteurapp.cc @@ -18,6 +18,8 @@ #include #include #include +#include +#include #include #include #include @@ -25,7 +27,6 @@ #include #include #include -#include #include #include #include @@ -70,7 +71,7 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio if (!options.commands.isEmpty()) { const auto commands = options.commands.join(QStringLiteral("; ")); logWarning(mainapp) - << tr("Cannot send commands '%1' - no running application instance found.").arg(commands); + << i18n("Cannot send commands '%1' - no running application instance found.", commands); m_startupExitCode = 43; m_dbusService->unregister(); m_primaryInstance = false; @@ -81,10 +82,10 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio if (screens().empty()) { - const auto title = tr("No Screens detected"); - const auto text = tr("screens().size() returned a size < 1. Exiting."); + const auto title = i18n("No Screens detected"); + const auto text = i18n("screens().size() returned a size < 1. Exiting."); logError(mainapp) << title << ";" << text; - QMessageBox::critical(nullptr, title, text); + KMessageBox::error(nullptr, text, title); QTimer::singleShot(0, this, [this](){ this->exit(2); }); return; } @@ -115,17 +116,17 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio m_spotlight->setSpotActive(true); }); connect(&*m_dialog, &PreferencesDialog::exitApplicationRequested, this, [this]() { - logDebug(mainapp) << tr("Exit request from preferences dialog."); + logDebug(mainapp) << i18n("Exit request from preferences dialog."); quit(); }); const QString desktopEnv = m_linuxDesktop->type() == LinuxDesktop::Type::KDE ? QStringLiteral("KDE") - : tr("Unknown"); + : i18n("Unknown"); - logDebug(mainapp) << tr("Qt platform plugin: %1;").arg(QGuiApplication::platformName()) - << tr("Desktop Environment: %1;").arg(desktopEnv) - << tr("Wayland: %1").arg(m_linuxDesktop->isWayland() ? "true" : "false"); + logDebug(mainapp) << i18n("Qt platform plugin: %1;", QGuiApplication::platformName()) + << i18n("Desktop Environment: %1;", desktopEnv) + << i18n("Wayland: %1", m_linuxDesktop->isWayland() ? "true" : "false"); if (options.showPreferencesOnStart) { QTimer::singleShot(0, this, [this](){ showPreferences(true); }); @@ -143,15 +144,16 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio // Create qml overlay window component m_windowQmlComponent = new QQmlComponent(m_qmlEngine, QUrl(QStringLiteral("qrc:/main.qml")), m_qmlEngine); if (m_windowQmlComponent->status() != QQmlComponent::Status::Ready) { - const auto title = tr("Overlay window error."); - const auto text = tr("Qml component has status '%1'. Exiting.").arg(m_windowQmlComponent->status()); + const auto title = i18n("Overlay window error."); + const auto text = i18n("Qml component has status '%1'. Exiting.", + static_cast(m_windowQmlComponent->status())); logError(mainapp) << title << ";" << text; for (const auto& error : m_windowQmlComponent->errors()) { logError(mainapp) << error.toString(); } - QMessageBox::critical(nullptr, title, text); + KMessageBox::error(nullptr, text, title); QTimer::singleShot(0, this, [this](){ this->exit(2); }); return; } @@ -262,7 +264,7 @@ void ProjecteurApplication::setupControlService(Options const& options) m_control = new ProjecteurControl(this, m_settings, m_spotlight, m_presentationTimer, !options.hideSysTrayIcon); if (!m_control->registerObject()) { - logError(mainapp) << tr("Could not register the Projecteur D-Bus control object."); + logError(mainapp) << i18n("Could not register the Projecteur D-Bus control object."); } } @@ -270,7 +272,7 @@ void ProjecteurApplication::setupControlService(Options const& options) void ProjecteurApplication::setupGlobalShortcuts() { m_actionCollection = new KActionCollection(this); - m_actionCollection->setComponentDisplayName(tr("Projecteur")); + m_actionCollection->setComponentDisplayName(i18n("Projecteur")); const auto addAction = [this](const QString& id, const QString& text, const QString& iconName, auto callback) @@ -279,12 +281,12 @@ void ProjecteurApplication::setupGlobalShortcuts() m_actionCollection->addAction(id, action); connect(action, &QAction::triggered, this, std::move(callback)); if (!KGlobalAccel::setGlobalShortcut(action, QList{})) { - logWarning(mainapp) << tr("Could not register global shortcut action '%1'.").arg(id); + logWarning(mainapp) << i18n("Could not register global shortcut action '%1'.", id); } }; addAction( - QStringLiteral("toggle_spotlight"), tr("Toggle Spotlight"), + QStringLiteral("toggle_spotlight"), i18n("Toggle Spotlight"), QStringLiteral("view-visible"), [this]() { if (!m_settings->overlayDisabled()) { @@ -292,23 +294,23 @@ void ProjecteurApplication::setupGlobalShortcuts() } }); addAction( - QStringLiteral("show_preferences"), tr("Show Preferences"), + QStringLiteral("show_preferences"), i18n("Show Preferences"), QStringLiteral("configure"), [this]() { m_control->ShowPreferences(); }); addAction( - QStringLiteral("start_restart_timer"), tr("Start or Restart Presentation Timer"), + QStringLiteral("start_restart_timer"), i18n("Start or Restart Presentation Timer"), QStringLiteral("chronometer"), [this]() { m_control->RestartTimer(); }); addAction( - QStringLiteral("reset_timer"), tr("Reset Presentation Timer"), + QStringLiteral("reset_timer"), i18n("Reset Presentation Timer"), QStringLiteral("edit-undo"), [this]() { m_control->ResetTimer(); }); addAction( - QStringLiteral("next_preset"), tr("Next Spotlight Preset"), + QStringLiteral("next_preset"), i18n("Next Spotlight Preset"), QStringLiteral("go-next"), [this]() { m_control->loadNextPreset(); }); addAction( - QStringLiteral("previous_preset"), tr("Previous Spotlight Preset"), + QStringLiteral("previous_preset"), i18n("Previous Spotlight Preset"), QStringLiteral("go-previous"), [this]() { m_control->loadPreviousPreset(); }); } @@ -321,8 +323,8 @@ void ProjecteurApplication::setupNotifications() if (state == PresentationTimer::State::Completed) { sendNotification( QStringLiteral("presentationTimerFinished"), - tr("Presentation timer finished"), - tr("The configured presentation time has elapsed."), + i18n("Presentation timer finished"), + i18n("The configured presentation time has elapsed."), QStringLiteral("chronometer")); } }); @@ -331,16 +333,16 @@ void ProjecteurApplication::setupNotifications() [this](const DeviceId&, const QString& name) { sendNotification( QStringLiteral("presenterConnected"), - tr("Presenter connected"), - tr("%1 is ready.").arg(name), + i18n("Presenter connected"), + i18n("%1 is ready.", name), QStringLiteral("input-mouse")); }); connect(m_spotlight, &Spotlight::deviceDisconnected, this, [this](const DeviceId&, const QString& name) { sendNotification( QStringLiteral("presenterDisconnected"), - tr("Presenter disconnected"), - tr("%1 is no longer available.").arg(name), + i18n("Presenter disconnected"), + i18n("%1 is no longer available.", name), QStringLiteral("input-mouse")); }); @@ -351,9 +353,9 @@ void ProjecteurApplication::setupNotifications() inaccessiblePaths->insert(path); sendNotification( QStringLiteral("deviceAccessError"), - tr("Presenter access failed"), - tr("%1 cannot access %2. Check the installed udev rules and device permissions.") - .arg(name, path), + i18n("Presenter access failed"), + i18n("%1 cannot access %2. Check the installed udev rules and device permissions.", + name, path), QStringLiteral("dialog-warning")); }); connect(m_spotlight, &Spotlight::subDeviceConnected, this, @@ -375,14 +377,14 @@ void ProjecteurApplication::setupNotifications() || status == QStringLiteral("charging-error")) { warningKey = QStringLiteral("error:") + status; eventId = QStringLiteral("presenterBatteryError"); - title = tr("Presenter battery problem"); - text = tr("%1 reported a battery error: %2.").arg(name, status); + title = i18n("Presenter battery problem"); + text = i18n("%1 reported a battery error: %2.", name, status); iconName = QStringLiteral("dialog-warning"); } else if (level >= 0 && level <= 20 && status == QStringLiteral("discharging")) { warningKey = QStringLiteral("low"); eventId = QStringLiteral("presenterBatteryLow"); - title = tr("Presenter battery low"); - text = tr("%1 has %2% battery remaining.").arg(name).arg(level); + title = i18n("Presenter battery low"); + text = i18n("%1 has %2% battery remaining.", name, level); iconName = QStringLiteral("battery-low"); } @@ -646,7 +648,7 @@ void ProjecteurApplication::applyCommand(const QString& command) if (cmdKey == "quit") { - logDebug(cmdserver) << tr("Received quit command."); + logDebug(cmdserver) << i18n("Received quit command."); this->quit(); } else if (cmdKey == "vibrate") // with args intensity (0-255), length (0-10) @@ -675,9 +677,8 @@ void ProjecteurApplication::applyCommand(const QString& command) return std::uint8_t{0}; }(); - logDebug(cmdserver) << tr("Received command vibrate = intensity:%1, length:%2") - .arg(intensity) - .arg(length); + logDebug(cmdserver) << i18n("Received command vibrate = intensity:%1, length:%2", + intensity, length); m_deviceCommandHelper->sendVibrateCommand(intensity, length); } @@ -686,18 +687,17 @@ void ProjecteurApplication::applyCommand(const QString& command) bool ok = false; int const sizeAdjust = cmdValue.toInt(&ok); if (ok) { - logDebug(cmdserver) << tr("Received command spot.size.adjust = %1%2") - .arg(sizeAdjust > 0 ? "+" : "") - .arg(sizeAdjust); + logDebug(cmdserver) << i18n("Received command spot.size.adjust = %1%2", + sizeAdjust > 0 ? "+" : "", sizeAdjust); m_settings->setSpotSize(m_settings->spotSize() + sizeAdjust); } else { - logDebug(cmdserver) << tr("Received invalid value for command spot.size.adjust"); + logDebug(cmdserver) << i18n("Received invalid value for command spot.size.adjust"); } } else if (cmdKey == "spot") { if (cmdValue.isEmpty()) { - logDebug(cmdserver) << tr("Received empty command value for command spot"); + logDebug(cmdserver) << i18n("Received empty command value for command spot"); } else if (cmdValue.toLower() == "toggle") { m_spotlight->setSpotActive(!m_spotlight->spotActive()); } @@ -705,19 +705,19 @@ void ProjecteurApplication::applyCommand(const QString& command) const bool active = (cmdValue.toLower() == "on" || cmdValue == "1" || cmdValue.toLower() == "true"); - logDebug(cmdserver) << tr("Received command spot = %1").arg(active); + logDebug(cmdserver) << i18n("Received command spot = %1", active); m_spotlight->setSpotActive(active); } } else if (cmdKey == "settings" || cmdKey == "preferences") { const bool show = !(cmdValue.toLower() == "hide" || cmdValue == "0"); - logDebug(cmdserver) << tr("Received command settings = %1").arg(show); + logDebug(cmdserver) << i18n("Received command settings = %1", show); showPreferences(show); } else if (cmdKey == "preset") { - logDebug(cmdserver) << tr("Received command preset = %1").arg(cmdValue); + logDebug(cmdserver) << i18n("Received command preset = %1", cmdValue); if (!cmdValue.isEmpty()) { m_settings->loadPreset(cmdValue); } } else if (cmdValue.size()) @@ -728,12 +728,12 @@ void ProjecteurApplication::applyCommand(const QString& command) return (pair.first == cmdKey); }); if (it != m_settings->stringProperties().cend()) { - logDebug(cmdserver) << tr("Received command '%1'='%2'").arg(cmdKey, cmdValue); + logDebug(cmdserver) << i18n("Received command '%1'='%2'", cmdKey, cmdValue); it->second.setFunction(cmdValue); } else { // string property not found... - logWarning(cmdserver) << tr("Received unknown command key (%1)").arg(cmdKey); + logWarning(cmdserver) << i18n("Received unknown command key (%1)", cmdKey); } } } diff --git a/src/settings.cc b/src/settings.cc index 8b464d9c..fe330436 100644 --- a/src/settings.cc +++ b/src/settings.cc @@ -13,6 +13,7 @@ #include #include +#include #include #include @@ -233,7 +234,7 @@ QString Settings::configFileName() const void Settings::save() { if (!m_config->save()) { - logWarning(lcSettings) << tr("Could not save settings to '%1'.").arg(configFileName()); + logWarning(lcSettings) << i18n("Could not save settings to '%1'.", configFileName()); } } @@ -241,7 +242,7 @@ void Settings::save() void Settings::sync() { if (!m_config->config()->sync()) { - logWarning(lcSettings) << tr("Could not save settings to '%1'.").arg(configFileName()); + logWarning(lcSettings) << i18n("Could not save settings to '%1'.", configFileName()); } } @@ -251,11 +252,11 @@ void Settings::init() const QFileInfo fi(configFileName()); if (!fi.isReadable()) { - logDebug(lcSettings) << tr("Settings file '%1' does not exist yet.").arg(configFileName()); + logDebug(lcSettings) << i18n("Settings file '%1' does not exist yet.", configFileName()); } if (fi.exists() && !fi.isWritable()) { - logWarning(lcSettings) << tr("Settings file '%1' not writable.").arg(configFileName()); + logWarning(lcSettings) << i18n("Settings file '%1' not writable.", configFileName()); } shapeSettingsInitialize(); @@ -371,14 +372,14 @@ const Settings::SettingRange& Settings::inputSequenceIntervalRange() { retu const QList& Settings::spotShapes() { static const QList shapes{ - SpotShape(::settings::defaultValue::spotShape, "Circle", tr("Circle"), false), - SpotShape("spotshapes/Square.qml", "Square", tr("(Rounded) Square"), true, - {SpotShapeSetting(tr("Border-radius (%)"), "radius", 20, 0, 100, 0)} ), - SpotShape("spotshapes/Star.qml", "Star", tr("Star"), true, - {SpotShapeSetting(tr("Star points"), "points", 5, 3, 100, 0), - SpotShapeSetting(tr("Inner radius (%)"), "innerRadius", 50, 5, 100, 0)} ), - SpotShape("spotshapes/Ngon.qml", "Ngon", tr("N-gon"), true, - {SpotShapeSetting(tr("Sides"), "sides", 3, 3, 100, 0)} ) }; + SpotShape(::settings::defaultValue::spotShape, "Circle", i18n("Circle"), false), + SpotShape("spotshapes/Square.qml", "Square", i18n("(Rounded) Square"), true, + {SpotShapeSetting(i18n("Border-radius (%)"), "radius", 20, 0, 100, 0)} ), + SpotShape("spotshapes/Star.qml", "Star", i18n("Star"), true, + {SpotShapeSetting(i18n("Star points"), "points", 5, 3, 100, 0), + SpotShapeSetting(i18n("Inner radius (%)"), "innerRadius", 50, 5, 100, 0)} ), + SpotShape("spotshapes/Ngon.qml", "Ngon", i18n("N-gon"), true, + {SpotShapeSetting(i18n("Sides"), "sides", 3, 3, 100, 0)} ) }; return shapes; } @@ -662,7 +663,7 @@ PresetModel* Settings::presetModel() // ------------------------------------------------------------------------------------------------- void Settings::load(const QString& preset) { - logDebug(lcSettings) << tr("Loading values from config:") << configFileName() + logDebug(lcSettings) << i18n("Loading values from config:") << configFileName() << (preset.size() ? QString("(%1)").arg(preset) : ""); if (preset.isEmpty()) @@ -1081,7 +1082,7 @@ InputMapConfig Settings::getDeviceInputMapConfig(const DeviceId& dId) quint32 size = 0; stream >> version >> size; if (version != inputMapFormatVersion || size > 1024) { - logWarning(lcSettings) << tr("Ignoring unsupported device input mapping data."); + logWarning(lcSettings) << i18n("Ignoring unsupported device input mapping data."); return cfg; } @@ -1091,7 +1092,7 @@ InputMapConfig Settings::getDeviceInputMapConfig(const DeviceId& dId) MappedAction mappedAction; stream >> sequence >> mappedAction; if (stream.status() != QDataStream::Ok || !mappedAction.action) { - logWarning(lcSettings) << tr("Ignoring invalid device input mapping data."); + logWarning(lcSettings) << i18n("Ignoring invalid device input mapping data."); return {}; } if (mappedAction.action->type() == Action::Type::ScrollHorizontal) { @@ -1181,7 +1182,7 @@ QVariant PresetModel::data(const QModelIndex& index, int role) const if (role == Qt::DisplayRole) { if (index.row() == 0) { - return tr("Current Settings"); + return i18n("Current Settings"); } return m_presets[index.row()-1]; diff --git a/src/spotlight.cc b/src/spotlight.cc index 2f56ed6a..8890b30b 100644 --- a/src/spotlight.cc +++ b/src/spotlight.cc @@ -9,6 +9,8 @@ #include "settings.h" #include "virtualdevice.h" +#include + #include #include #include @@ -96,7 +98,7 @@ Spotlight::Spotlight(QObject* parent, Options options, Settings* settings) VirtualDevice::Type::Keyboard, "Projecteur_virtual_keyboard"); } else { - logInfo(device) << tr("Virtual device initialization was skipped."); + logInfo(device) << i18n("Virtual device initialization was skipped."); } m_connectionTimer->setSingleShot(true); @@ -107,7 +109,7 @@ Spotlight::Spotlight(QObject* parent, Options options, Settings* settings) m_connectionTimer->setInterval(delayedConnectionTimerIntervalMs); connect(m_connectionTimer, &QTimer::timeout, this, [this]() { - logDebug(device) << tr("New connection check triggered"); + logDebug(device) << i18n("New connection check triggered"); connectDevices(); }); @@ -189,8 +191,9 @@ int Spotlight::connectDevices() if (!scanSubDevice.deviceReadable || (requiresWriteAccess && !scanSubDevice.deviceWritable)) { - logWarn(device) << tr("Sub-device not accessible: %1 (%2:%3) %4") - .arg(dc->deviceName(), hexId(dev.id.vendorId), hexId(dev.id.productId), scanSubDevice.deviceFile); + logWarn(device) << i18n("Sub-device not accessible: %1 (%2:%3) %4", + dc->deviceName(), hexId(dev.id.vendorId), + hexId(dev.id.productId), scanSubDevice.deviceFile); QTimer::singleShot( 0, this, [this, name = dc->deviceName(), path = scanSubDevice.deviceFile]() { @@ -330,15 +333,15 @@ int Spotlight::connectDevices() { QTimer::singleShot(0, this, [this, id = dev.id, devName = dc->deviceName(), anyConnectedBefore](){ - logInfo(device) << tr("Connected device: %1 (%2:%3)") - .arg(devName, hexId(id.vendorId), hexId(id.productId)); + logInfo(device) << i18n("Connected device: %1 (%2:%3)", + devName, hexId(id.vendorId), hexId(id.productId)); emit deviceConnected(id, devName); if (!anyConnectedBefore) { emit anySpotlightDeviceConnectedChanged(true); } }); } - logDebug(device) << tr("Connected sub-device: %1 (%2:%3) %4") - .arg(dc->deviceName(), hexId(dev.id.vendorId), + logDebug(device) << i18n("Connected sub-device: %1 (%2:%3) %4", + dc->deviceName(), hexId(dev.id.vendorId), hexId(dev.id.productId), scanSubDevice.deviceFile); emit subDeviceConnected(dev.id, dc->deviceName(), scanSubDevice.deviceFile); } @@ -367,8 +370,8 @@ void Spotlight::removeDeviceConnection(const QString &devicePath) if (dc->subDeviceCount() == 0) { - logInfo(device) << tr("Disconnected device: %1 (%2:%3)") - .arg(dc->deviceName(), hexId(dc_it->first.vendorId), + logInfo(device) << i18n("Disconnected device: %1 (%2:%3)", + dc->deviceName(), hexId(dc_it->first.vendorId), hexId(dc_it->first.productId)); emit deviceDisconnected(dc_it->first, dc->deviceName()); dc_it = m_deviceConnections.erase(dc_it); @@ -456,7 +459,8 @@ void Spotlight::onEventDataAvailable(int fd, SubEventConnection& connection) } else if (buf.pos() >= buf.size()) { // No idea if this will ever happen, but log it to make sure we get notified. - logWarning(device) << tr("Discarded %1 input events without EV_SYN.").arg(buf.size()); + logWarning(device) << i18np("Discarded one input event without EV_SYN.", + "Discarded %1 input events without EV_SYN.", buf.size()); connection.inputMapper()->resetState(); buf.reset(); } @@ -586,7 +590,7 @@ bool Spotlight::setupDevEventInotify() { fd = inotify_init(); if (fd == -1) { - logError(device) << tr("inotify_init() failed. Detection of new attached devices will not work."); + logError(device) << i18n("inotify_init() failed. Detection of new attached devices will not work."); return false; } } @@ -594,7 +598,7 @@ bool Spotlight::setupDevEventInotify() const int wd = inotify_add_watch(fd, "/dev/input", IN_CREATE | IN_DELETE); if (wd < 0) { - logError(device) << tr("inotify_add_watch for /dev/input returned with failure."); + logError(device) << i18n("inotify_add_watch for /dev/input returned with failure."); return false; } diff --git a/src/virtualdevice.cc b/src/virtualdevice.cc index be163757..a6156c90 100644 --- a/src/virtualdevice.cc +++ b/src/virtualdevice.cc @@ -5,6 +5,8 @@ #include "logging.h" +#include + #include #include #include @@ -19,10 +21,6 @@ LOGGING_CATEGORY(virtualdevice, "virtualdevice") #define KEY_MACRO1 0x290 #endif -namespace { - class VirtualDevice_ : public QObject {}; // for i18n and logging -} // end anonymous namespace - struct VirtualDevice::Token {}; // ------------------------------------------------------------------------------------------------- @@ -40,7 +38,7 @@ VirtualDevice::~VirtualDevice() ioctl(m_uinpFd, UI_DEV_DESTROY); ::close(m_uinpFd); logDebug(virtualdevice) - << VirtualDevice_::tr("uinput Device Closed (%1; %2)").arg(m_userName, m_deviceName); + << i18n("uinput Device Closed (%1; %2)", m_userName, m_deviceName); } } @@ -55,15 +53,15 @@ std::shared_ptr VirtualDevice::create(Type deviceType, { const QFileInfo fi(location); if (!fi.exists()) { - logWarn(virtualdevice) << VirtualDevice_::tr("File not found: %1").arg(location); - logWarn(virtualdevice) << VirtualDevice_::tr("Please check if uinput kernel module is loaded"); + logWarn(virtualdevice) << i18n("File not found: %1", location); + logWarn(virtualdevice) << i18n("Please check if uinput kernel module is loaded"); return std::shared_ptr(); } const int fd = ::open(location, O_WRONLY | O_NDELAY); if (fd < 0) { - logWarn(virtualdevice) << VirtualDevice_::tr("Unable to open: %1").arg(location); - logWarn(virtualdevice) << VirtualDevice_::tr("Please check if current user has write access"); + logWarn(virtualdevice) << i18n("Unable to open: %1", location); + logWarn(virtualdevice) << i18n("Please check if current user has write access"); return std::shared_ptr(); } @@ -111,16 +109,16 @@ std::shared_ptr VirtualDevice::create(Type deviceType, if ((bytesWritten != sizeof(uinp)) || (ioctl(fd, UI_DEV_CREATE))) { ::close(fd); - logWarn(virtualdevice) << VirtualDevice_::tr("Unable to create Virtual (UINPUT) device."); + logWarn(virtualdevice) << i18n("Unable to create Virtual (UINPUT) device."); return std::unique_ptr(); } // Log the device name char sysfs_device_name[16]{}; ioctl(fd, UI_GET_SYSNAME(sizeof(sysfs_device_name)), sysfs_device_name); - logInfo(virtualdevice) << VirtualDevice_::tr("Created uinput device: %1") - .arg(QString("%1; /sys/devices/virtual/input/%2") - .arg(name, sysfs_device_name)); + logInfo(virtualdevice) << i18n("Created uinput device: %1", + QString("%1; /sys/devices/virtual/input/%2") + .arg(name, sysfs_device_name)); return std::make_shared(Token{}, fd, name, sysfs_device_name); } @@ -133,7 +131,7 @@ void VirtualDevice::emitEvents(const struct input_event input_events[], size_t n if (const ssize_t sz = sizeof(input_event) * num) { const auto bytesWritten = write(m_uinpFd, input_events, sz); if (bytesWritten != sz) { - logError(virtualdevice) << VirtualDevice_::tr("Error while writing to virtual device."); + logError(virtualdevice) << i18n("Error while writing to virtual device."); } } } From e6ad76d5ef87be242c863dfcdcc64a19bf3fb66e Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Tue, 28 Jul 2026 12:12:01 -0500 Subject: [PATCH 44/67] Simplify debug logs Remove the custom logger. Remove the internationalization of the logging strings too. Use standard KDE catergories. --- .github/workflows/ci-build.yml | 2 +- CMakeLists.txt | 78 ++++++- Justfile | 1 - README.md | 3 +- cmake/modules/PkgDependenciesProjecteur.cmake | 1 - cmake/templates/projecteur.1 | 3 - cmake/templates/projecteur.bash-completion | 8 +- docker/Dockerfile.archlinux | 1 - packaging/arch/PKGBUILD | 1 - src/device-command-helper.cc | 2 - src/device-defs.h | 5 + src/device-hidpp.cc | 108 ++++----- src/device.cc | 51 ++--- src/deviceinput.cc | 14 +- src/devicescan.cc | 2 +- src/deviceswidget.cc | 5 +- src/hidpp.cc | 31 +-- src/inputmapconfig.cc | 1 - src/inputseqedit.cc | 1 - src/linuxdesktop.cc | 30 ++- src/logging.cc | 212 ------------------ src/logging.h | 77 ------- src/main.cc | 20 +- src/nativekeyseqedit.cc | 1 - src/preferencesdlg.cc | 119 +--------- src/preferencesdlg.h | 2 - src/projecteurapp.cc | 55 +++-- src/settings.cc | 60 +++-- src/spotlight.cc | 39 ++-- src/virtualdevice.cc | 25 +-- 30 files changed, 259 insertions(+), 699 deletions(-) delete mode 100644 src/logging.cc delete mode 100644 src/logging.h diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 003ba6a4..90387d0c 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -17,7 +17,7 @@ jobs: run: >- pacman -Syu --noconfirm base-devel cmake extra-cmake-modules gettext git kconfig kconfigwidgets kcoreaddons kdbusaddons - kglobalaccel ki18n kio knotifications kwidgetsaddons kwindowsystem kxmlgui layer-shell-qt + kglobalaccel ki18n knotifications kwidgetsaddons kwindowsystem kxmlgui layer-shell-qt libplasma qt6-base qt6-declarative - uses: actions/checkout@v4 diff --git a/CMakeLists.txt b/CMakeLists.txt index 28cba8cd..d6e4ae76 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,6 +16,7 @@ add_compile_options(-Wall -Wextra -Werror) find_package(ECM 6.7 REQUIRED NO_MODULE) list(APPEND CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) include(KDEInstallDirs6) +include(ECMQtDeclareLoggingCategory) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules") include(GitVersion) @@ -25,7 +26,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) find_package(Qt6 6.11 REQUIRED COMPONENTS Core DBus Gui Quick Widgets) -find_package(KF6 6.7 REQUIRED COMPONENTS Config ConfigWidgets CoreAddons DBusAddons GlobalAccel I18n KIO +find_package(KF6 6.7 REQUIRED COMPONENTS Config ConfigWidgets CoreAddons DBusAddons GlobalAccel I18n Notifications Package KirigamiPlatform WidgetsAddons WindowSystem XmlGui) find_package(Plasma 6.7 REQUIRED) find_package(LayerShellQt 6.7 REQUIRED) @@ -49,7 +50,6 @@ add_executable(projecteur src/imageitem.cc src/imageitem.h src/inputmapconfig.cc src/inputmapconfig.h src/inputseqedit.cc src/inputseqedit.h - src/logging.cc src/logging.h src/nativekeyseqedit.cc src/nativekeyseqedit.h src/preferencesdlg.cc src/preferencesdlg.h src/presentationtimer.cc src/presentationtimer.h @@ -61,6 +61,78 @@ add_executable(projecteur src/virtualdevice.cc src/virtualdevice.h ${RESOURCES}) +ecm_qt_declare_logging_category(projecteur + HEADER projecteur_main_debug.h + IDENTIFIER PROJECTEUR_MAIN_LOG + CATEGORY_NAME projecteur.mainapp + DEFAULT_SEVERITY Info + DESCRIPTION "Projecteur application" + EXPORT Projecteur +) +ecm_qt_declare_logging_category(projecteur + HEADER projecteur_command_debug.h + IDENTIFIER PROJECTEUR_COMMAND_LOG + CATEGORY_NAME projecteur.cmdserver + DEFAULT_SEVERITY Info + DESCRIPTION "Projecteur command service" + EXPORT Projecteur +) +ecm_qt_declare_logging_category(projecteur + HEADER projecteur_desktop_debug.h + IDENTIFIER PROJECTEUR_DESKTOP_LOG + CATEGORY_NAME projecteur.desktop + DEFAULT_SEVERITY Info + DESCRIPTION "Projecteur desktop integration" + EXPORT Projecteur +) +ecm_qt_declare_logging_category(projecteur + HEADER projecteur_device_debug.h + IDENTIFIER PROJECTEUR_DEVICE_LOG + CATEGORY_NAME projecteur.device + DEFAULT_SEVERITY Info + DESCRIPTION "Projecteur device handling" + EXPORT Projecteur +) +ecm_qt_declare_logging_category(projecteur + HEADER projecteur_hid_debug.h + IDENTIFIER PROJECTEUR_HID_LOG + CATEGORY_NAME projecteur.hid + OLD_CATEGORY_NAMES projecteur.HID + DEFAULT_SEVERITY Info + DESCRIPTION "Projecteur HID++ protocol" + EXPORT Projecteur +) +ecm_qt_declare_logging_category(projecteur + HEADER projecteur_input_debug.h + IDENTIFIER PROJECTEUR_INPUT_LOG + CATEGORY_NAME projecteur.input + DEFAULT_SEVERITY Info + DESCRIPTION "Projecteur input mapping" + EXPORT Projecteur +) +ecm_qt_declare_logging_category(projecteur + HEADER projecteur_settings_debug.h + IDENTIFIER PROJECTEUR_SETTINGS_LOG + CATEGORY_NAME projecteur.settings + DEFAULT_SEVERITY Info + DESCRIPTION "Projecteur settings" + EXPORT Projecteur +) +ecm_qt_declare_logging_category(projecteur + HEADER projecteur_virtual_device_debug.h + IDENTIFIER PROJECTEUR_VIRTUAL_DEVICE_LOG + CATEGORY_NAME projecteur.virtualdevice + DEFAULT_SEVERITY Info + DESCRIPTION "Projecteur virtual input devices" + EXPORT Projecteur +) +ecm_qt_install_logging_categories( + EXPORT Projecteur + FILE projecteur.categories + DESTINATION "${KDE_INSTALL_LOGGINGCATEGORIESDIR}" + SORT +) + set(PROJECTEUR_CONTROL_XML "${CMAKE_CURRENT_SOURCE_DIR}/src/org.projecteur.Projecteur.xml") qt_add_dbus_adaptor(PROJECTEUR_DBUS_ADAPTOR_SOURCES @@ -85,7 +157,7 @@ target_include_directories(projecteur PRIVATE src "${CMAKE_CURRENT_BINARY_DIR}") target_link_libraries(projecteur PRIVATE Qt6::Core Qt6::DBus Qt6::Quick Qt6::Widgets KF6::ConfigCore KF6::ConfigGui KF6::ConfigWidgets KF6::CoreAddons KF6::DBusAddons - KF6::GlobalAccel KF6::I18n KF6::KIOFileWidgets KF6::Notifications KF6::WidgetsAddons + KF6::GlobalAccel KF6::I18n KF6::Notifications KF6::WidgetsAddons KF6::WindowSystem KF6::XmlGui LayerShellQt::Interface ) diff --git a/Justfile b/Justfile index ddb8da3c..e3529741 100644 --- a/Justfile +++ b/Justfile @@ -127,7 +127,6 @@ deps: _require-arch kdbusaddons kglobalaccel ki18n - kio knotifications kwidgetsaddons kwindowsystem diff --git a/README.md b/README.md index 35e3f651..fb4a1689 100644 --- a/README.md +++ b/README.md @@ -215,7 +215,7 @@ and Hold Move actions for the same button. * CMake 3.20 or later * Qt 6.11 with Core, DBus, Gui, Quick, and Widgets * KDE Plasma 6.7 Wayland, including Libplasma, KConfig, KConfigWidgets, KCoreAddons, - KDBusAddons, KGlobalAccel, KI18n, KIO, KNotifications, KWidgetsAddons, KWindowSystem, + KDBusAddons, KGlobalAccel, KI18n, KNotifications, KWidgetsAddons, KWindowSystem, and KXmlGui * LayerShellQt 6.7 * Extra CMake Modules 6.7 or later @@ -313,7 +313,6 @@ Usage: projecteur [OPTION]... -f, --fullversion Print extended version info. --cfg FILE Set custom config file. -d, --device-scan Print device-scan results. - -l, --log-level LEVEL Set log level (dbg,inf,wrn,err), default is 'inf'. --show-dialog Show preferences dialog on start. -m, --minimize-only Only allow minimizing the preferences dialog. -D DEVICE Additional accepted device; DEVICE=vendorId:productId diff --git a/cmake/modules/PkgDependenciesProjecteur.cmake b/cmake/modules/PkgDependenciesProjecteur.cmake index ec333756..8f7df68b 100644 --- a/cmake/modules/PkgDependenciesProjecteur.cmake +++ b/cmake/modules/PkgDependenciesProjecteur.cmake @@ -8,7 +8,6 @@ list(APPEND _PkgDeps_Projecteur_archlinux "kdbusaddons>=6.7" "kglobalaccel>=6.7" "ki18n>=6.7" - "kio>=6.7" "knotifications>=6.7" "kwidgetsaddons>=6.7" "kwindowsystem>=6.7" diff --git a/cmake/templates/projecteur.1 b/cmake/templates/projecteur.1 index 39c65336..297ee441 100644 --- a/cmake/templates/projecteur.1 +++ b/cmake/templates/projecteur.1 @@ -35,9 +35,6 @@ Set custom config file. \fB\-d\fR, \fB\-\-device\-scan\fR Print device\-scan results. .TP -\fB\-l\fR, \fB\-\-log\-level\fR \fILEVEL\fR -Set log level, where LEVEL is one of \fBdbg\fR, \fBinf\fR, \fBwrn\fR, \fBerr\fR -.TP \fB\-D\fR \fIDEVICE\fR Additional accepted device; DEVICE = vendorId:productId e.g., \fB\-D\fR 04b3:310c; e.g. \fB\-D\fR 0x0c45:0x8101; diff --git a/cmake/templates/projecteur.bash-completion b/cmake/templates/projecteur.bash-completion index 718ced85..43b683d5 100644 --- a/cmake/templates/projecteur.bash-completion +++ b/cmake/templates/projecteur.bash-completion @@ -15,7 +15,7 @@ _projecteur() fi local options="-h --help --help-all --version -v --cfg --device-scan -m --minimize-only" - options="${options} --log-level -l --show-dialog --disable-uinput -D -c" + options="${options} --show-dialog --disable-uinput -D -c" case "$prev" in "-c") @@ -89,12 +89,6 @@ _projecteur() # TODO: Auto completion for devices (vendorId:productId) COMPREPLY=( $(compgen -W "0123:4567" -- $cur) ) ;; - "-l") - COMPREPLY=( $(compgen -W "dbg inf wrn err" -- $cur) ) - ;; - "--log-level") - COMPREPLY=( $(compgen -W "dbg inf wrn err" -- $cur) ) - ;; "--cfg") # Auto completion for files local IFS=$'\n' diff --git a/docker/Dockerfile.archlinux b/docker/Dockerfile.archlinux index 0b1122b9..9fa7c813 100644 --- a/docker/Dockerfile.archlinux +++ b/docker/Dockerfile.archlinux @@ -25,7 +25,6 @@ RUN pacman --noconfirm -Sy && pacman --noconfirm -S \ kdbusaddons \ kglobalaccel \ ki18n \ - kio \ knotifications \ kwidgetsaddons \ kwindowsystem \ diff --git a/packaging/arch/PKGBUILD b/packaging/arch/PKGBUILD index cc6e5838..6a9c9209 100644 --- a/packaging/arch/PKGBUILD +++ b/packaging/arch/PKGBUILD @@ -19,7 +19,6 @@ depends=( 'kdbusaddons>=6.7' 'kglobalaccel>=6.7' 'ki18n>=6.7' - 'kio>=6.7' 'knotifications>=6.7' 'kwidgetsaddons>=6.7' 'kwindowsystem>=6.7' diff --git a/src/device-command-helper.cc b/src/device-command-helper.cc index 511d928c..a2e1cc3a 100644 --- a/src/device-command-helper.cc +++ b/src/device-command-helper.cc @@ -57,8 +57,6 @@ bool DeviceCommandHelper::sendVibrateCommand(const DeviceId& deviceId, uint8_t i { hidppConnection->sendVibrateCommand(intensity, length, [](HidppConnectionInterface::MsgResult, HIDPP::Message&&) { - // logDebug(hid) << i18n("Vibrate command returned: %1 (%2)") - // .arg(toString(result)).arg(msg.hex()); }); commandSent = true; } diff --git a/src/device-defs.h b/src/device-defs.h index 6539586d..22adb954 100644 --- a/src/device-defs.h +++ b/src/device-defs.h @@ -20,6 +20,11 @@ const char* toString(BusType bt, bool withClass = true); const char* toString(ConnectionType ct, bool withClass = true); const char* toString(ConnectionMode cm, bool withClass = true); +inline QString formatHexId(uint16_t id) +{ + return QStringLiteral("%1").arg(id, 4, 16, QLatin1Char('0')); +} + // ------------------------------------------------------------------------------------------------- struct DeviceId { diff --git a/src/device-hidpp.cc b/src/device-hidpp.cc index 9968385b..faee3f27 100644 --- a/src/device-hidpp.cc +++ b/src/device-hidpp.cc @@ -5,17 +5,13 @@ #include "deviceinput.h" #include "enum-helper.h" -#include "logging.h" - -#include +#include "projecteur_hid_debug.h" #include #include #include -DECLARE_LOGGING_CATEGORY(hid) - namespace { // The HAPTIC feature uses a percentage, while Projecteur's existing vibration // interface uses the original Spotlight's byte-sized intensity. @@ -101,8 +97,8 @@ ssize_t SubHidppConnection::sendData(HIDPP::Message msg) if (busType() == BusType::Bluetooth) { if (msg.deviceIndex() == HIDPP::DeviceIndex::DefaultDevice) { - logWarn(hid) << i18n("Invalid message device index in data '%1' for device connected " - "via bluetooth.", msg.hex()); + qCWarning(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("Invalid message device index in data '%1' for device connected " + "via bluetooth.").arg(msg.hex()); return errorResult; } @@ -167,8 +163,7 @@ void SubHidppConnection::sendRequest(HIDPP::Message msg, RequestResultCallback r if (!validDeviceIndex) { - logWarn(hid) << i18n("Invalid device index (%1) in message for '%2'", - msg.deviceIndex(), path()); + qCWarning(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("Invalid device index (%1) in message for '%2'").arg(msg.deviceIndex()).arg(path()); if (cb) { cb(MsgResult::InvalidFormat, HIDPP::Message()); } return; } @@ -189,7 +184,7 @@ void SubHidppConnection::sendRequest(HIDPP::Message msg, RequestResultCallback r [&msg](const RequestEntry& entry) { return entry.request == msg; }); if (it == m_requests.end()) { - logDebug(hid) << "Send request write error without matching request queue entry."; + qCDebug(PROJECTEUR_HID_LOG).noquote() << "Send request write error without matching request queue entry."; return; } @@ -500,8 +495,7 @@ void SubHidppConnection::setReceiverState(ReceiverState rs) { if (rs == m_receiverState) { return; } - logDebug(hid) << i18n("Receiver state (%1) changes from %2 to %3", - path(), toString(m_receiverState), toString(rs)); + qCDebug(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("Receiver state (%1) changes from %2 to %3").arg(path()).arg(toString(m_receiverState)).arg(toString(rs)); m_receiverState = rs; emit receiverStateChanged(m_receiverState); } @@ -511,8 +505,7 @@ void SubHidppConnection::setPresenterState(PresenterState ps) { if (ps == m_presenterState) { return; } - logDebug(hid) << i18n("Presenter state (%1) changes from %2 to %3", - path(), toString(m_presenterState), toString(ps)); + qCDebug(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("Presenter state (%1) changes from %2 to %3").arg(path()).arg(toString(m_presenterState)).arg(toString(ps)); m_presenterState = ps; emit presenterStateChanged(m_presenterState); } @@ -533,7 +526,7 @@ void SubHidppConnection::initReceiver(std::function cb) if (m_receiverState == ReceiverState::Initializing || m_receiverState == ReceiverState::Initialized) { - logDebug(hid) << "Cannot init receiver when initializing or already initialized."; + qCDebug(PROJECTEUR_HID_LOG).noquote() << "Cannot init receiver when initializing or already initialized."; if (cb) { cb(m_receiverState); } return; } @@ -559,8 +552,7 @@ void SubHidppConnection::initReceiver(std::function cb) Message(Type::Short, DeviceIndex::DefaultDevice, Commands::GetRegister, 0, 0, {}), [index=++index](MsgResult result, HIDPP::Message&& /* msg */) { if (result == MsgResult::Ok) { return; } - logWarn(hid) << i18n("Usb receiver init error; step %1: %2", - index, toString(result)); + qCWarning(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("Usb receiver init error; step %1: %2").arg(index).arg(toString(result)); } }, RequestBatchItem{ @@ -569,8 +561,7 @@ void SubHidppConnection::initReceiver(std::function cb) {0x00, 0x01, 0x00}), [index=++index](MsgResult result, HIDPP::Message&& /* msg */) { if (result == MsgResult::Ok) { return; } - logWarn(hid) << i18n("Usb receiver init error; step %1: %2", - index, toString(result)); + qCWarning(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("Usb receiver init error; step %1: %2").arg(index).arg(toString(result)); } }, RequestBatchItem{ @@ -578,8 +569,7 @@ void SubHidppConnection::initReceiver(std::function cb) Message(Type::Short, DeviceIndex::DefaultDevice, Commands::GetRegister, 0, 2, {}), [index=++index](MsgResult result, HIDPP::Message&& /* msg */) { if (result == MsgResult::Ok) { return; } - logWarn(hid) << i18n("Usb receiver init error; step %1: %2", - index, toString(result)); + qCWarning(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("Usb receiver init error; step %1: %2").arg(index).arg(toString(result)); } }, RequestBatchItem{ @@ -588,8 +578,7 @@ void SubHidppConnection::initReceiver(std::function cb) {0x02, 0x00, 0x00}), [index=++index](MsgResult result, HIDPP::Message&& /* msg */) { if (result == MsgResult::Ok) { return; } - logWarn(hid) << i18n("Usb receiver init error; step %1: %2", - index, toString(result)); + qCWarning(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("Usb receiver init error; step %1: %2").arg(index).arg(toString(result)); } }, RequestBatchItem{ @@ -598,8 +587,7 @@ void SubHidppConnection::initReceiver(std::function cb) {0x00, 0x09, 0x00}), [index=++index](MsgResult result, HIDPP::Message&& /* msg */) { if (result == MsgResult::Ok) { return; } - logWarn(hid) << i18n("Usb receiver init error; step %1: %2", - index, toString(result)); + qCWarning(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("Usb receiver init error; step %1: %2").arg(index).arg(toString(result)); } }, }}; @@ -622,7 +610,7 @@ void SubHidppConnection::initPresenter(std::function cb) || m_presenterState == PresenterState::Initialized_Offline || m_presenterState == PresenterState::Initialized_Online) { - logDebug(hid) << "Cannot init presenter when offline, initializing or already initialized."; + qCDebug(PROJECTEUR_HID_LOG).noquote() << "Cannot init presenter when offline, initializing or already initialized."; if (cb) { cb(m_presenterState); } return; } @@ -641,15 +629,16 @@ void SubHidppConnection::initPresenter(std::function cb) } case FState::Uninitialized: case FState::Initializing: { - logError(hid) << i18n("Unexpected state from feature set."); + qCCritical(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("Unexpected state from feature set."); setPresenterState(PresenterState::Error); break; } case FState::Initialized: { - logDebug(hid) << i18np("Received one supported feature from device. (%2)", - "Received %1 supported features from device. (%2)", - m_featureSet.featureCount(), path()); + qCDebug(PROJECTEUR_HID_LOG).noquote() + << QStringLiteral("Received %1 supported features from device. (%2)") + .arg(m_featureSet.featureCount()) + .arg(path()); registerForFeatureNotifications(); updateDeviceFlags(); @@ -658,8 +647,7 @@ void SubHidppConnection::initPresenter(std::function cb) { if (!resultMap.empty()) { for (const auto& res : resultMap) { - logDebug(hid) << i18n("InitFeature result %1 => %2", - toString(res.first), toString(res.second)); + qCDebug(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("InitFeature result %1 => %2").arg(toString(res.first)).arg(toString(res.second)); } } emit featureSetInitialized(); @@ -751,8 +739,7 @@ void SubHidppConnection::updateDeviceFlags() m_featureSet.featureCodeSupported(HIDPP::FeatureCode::Haptic); if (hasPresenterControl || hasHaptic) { featureFlagsSet |= DeviceFlag::Vibrate; - logDebug(hid) << i18n("Subdevice '%1' reported %2 support.", path(), - toString(hasPresenterControl + qCDebug(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("Subdevice '%1' reported %2 support.").arg(path()).arg(toString(hasPresenterControl ? HIDPP::FeatureCode::PresenterControl : HIDPP::FeatureCode::Haptic)); } else { @@ -765,8 +752,7 @@ void SubHidppConnection::updateDeviceFlags() m_featureSet.featureCodeSupported(HIDPP::FeatureCode::UnifiedBattery); if (hasBatteryStatus || hasUnifiedBattery) { featureFlagsSet |= DeviceFlag::ReportBattery; - logDebug(hid) << i18n("Subdevice '%1' reported %2 support.", path(), - toString(hasBatteryStatus + qCDebug(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("Subdevice '%1' reported %2 support.").arg(path()).arg(toString(hasBatteryStatus ? HIDPP::FeatureCode::BatteryStatus : HIDPP::FeatureCode::UnifiedBattery)); } else { @@ -779,8 +765,7 @@ void SubHidppConnection::updateDeviceFlags() featureFlagsSet |= DeviceFlags::BackHold; specialMoveInputs.emplace_back(SpecialKeys::eventSequenceInfo(SpecialKeys::Key::NextHoldMove)); specialMoveInputs.emplace_back(SpecialKeys::eventSequenceInfo(SpecialKeys::Key::BackHoldMove)); - logDebug(hid) << i18n("Subdevice '%1' reported %2 support.", - path(), toString(HIDPP::FeatureCode::ReprogramControlsV4)); + qCDebug(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("Subdevice '%1' reported %2 support.").arg(path()).arg(toString(HIDPP::FeatureCode::ReprogramControlsV4)); } else { featureFlagsUnset |= DeviceFlags::NextHold; @@ -790,8 +775,7 @@ void SubHidppConnection::updateDeviceFlags() if (m_featureSet.featureCodeSupported(HIDPP::FeatureCode::PointerSpeed)) { featureFlagsSet |= DeviceFlags::PointerSpeed; - logDebug(hid) << i18n("Subdevice '%1' reported %2 support.", - path(), toString(HIDPP::FeatureCode::PointerSpeed)); + qCDebug(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("Subdevice '%1' reported %2 support.").arg(path()).arg(toString(HIDPP::FeatureCode::PointerSpeed)); } else { featureFlagsUnset |= DeviceFlags::BackHold; @@ -821,8 +805,7 @@ void SubHidppConnection::registerForFeatureNotifications() constexpr uint8_t ButtonBack = 0xdc; const auto isNextPressed = msg[5] == ButtonNext || msg[7] == ButtonNext; const auto isBackPressed = msg[5] == ButtonBack || msg[7] == ButtonBack; - logDebug(hid) << i18n("Buttons pressed: Next = %1, Back = %2", - isNextPressed, isBackPressed); + qCDebug(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("Buttons pressed: Next = %1, Back = %2").arg(isNextPressed).arg(isBackPressed); }), 0 /* function 0 */); @@ -862,15 +845,13 @@ void SubHidppConnection::registerForUsbNotifications() const auto notificationDeviceIndex = msg.deviceIndex(); const auto deviceKind = msg[4] & 0x0f; const bool linkEstablished = !static_cast(msg[4] & (1<<6)); - logDebug(hid) << i18n("%1, device index = %2, device kind = %3, link established = %4", - toString(HIDPP::Notification::DeviceConnection), - notificationDeviceIndex, deviceKind, linkEstablished); + qCDebug(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("%1, device index = %2, device kind = %3, link established = %4").arg(toString(HIDPP::Notification::DeviceConnection)).arg(notificationDeviceIndex).arg(deviceKind).arg(linkEstablished); if (!m_deviceIndexKnown && deviceKind == 0x04) { m_deviceIndex = notificationDeviceIndex; m_deviceIndexKnown = true; - logInfo(hid) << i18n("Found presenter in Bolt receiver slot %1.", m_deviceIndex); + qCInfo(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("Found presenter in Bolt receiver slot %1.").arg(m_deviceIndex); } // A Bolt receiver can carry several devices. Ignore notifications that do @@ -883,7 +864,7 @@ void SubHidppConnection::registerForUsbNotifications() if (m_presenterState == PresenterState::Initialized_Online) { setPresenterState(PresenterState::Initialized_Offline); } - logInfo(hid) << i18n("HID++ device '%1' went offline.", path()); + qCInfo(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("HID++ device '%1' went offline.").arg(path()); return; } @@ -892,7 +873,7 @@ void SubHidppConnection::registerForUsbNotifications() || m_presenterState == PresenterState::Uninitialized || m_presenterState == PresenterState::Error) { - logInfo(hid) << i18n("HID++ device '%1' came online.", path()); + qCInfo(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("HID++ device '%1' came online.").arg(path()); checkAndUpdatePresenterState(makeSafeCallback([](PresenterState /* ps */) { //... })); @@ -994,7 +975,7 @@ void SubHidppConnection::findPresenterDeviceIndex(uint8_t candidate, { m_deviceIndex = candidate; m_deviceIndexKnown = true; - logInfo(hid) << i18n("Found HID++ device in Bolt receiver slot %1.", m_deviceIndex); + qCInfo(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("Found HID++ device in Bolt receiver slot %1.").arg(m_deviceIndex); if (cb) { cb(true); } return; } @@ -1011,8 +992,7 @@ void SubHidppConnection::getProtocolVersion(std::function %1, version = %2.%3", - toString(res), pv.major, pv.minor); + qCDebug(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("getProtocolVersion() => %1, version = %2.%3").arg(toString(res)).arg(pv.major).arg(pv.minor); cb(res, (res == MsgResult::HidppError) ? msg.errorCode() : HIDPP::Error::NoError, pv); } @@ -1028,8 +1008,7 @@ void SubHidppConnection::checkPresenterOnline(std::function %2", - toString(res.first), toString(res.second)); + qCDebug(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("InitFeature result %1 => %2").arg(toString(res.first)).arg(toString(res.second)); } } setPresenterState(PresenterState::Initialized_Online); @@ -1129,7 +1107,7 @@ void SubHidppConnection::onHidppDataAvailable(int fd) // just ignore regular HID reports from the Logitech Spotlight } else { - logDebug(hid) << i18n("Received invalid HID++ message '%1' from %2", msg.hex(), path()); + qCDebug(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("Received invalid HID++ message '%1' from %2").arg(msg.hex()).arg(path()); } return; } @@ -1143,16 +1121,15 @@ void SubHidppConnection::onHidppDataAvailable(int fd) if (it != m_requests.end()) { - logDebug(hid) << i18n("Received hiddpp error with code = %1 on", - to_integral(msg.errorCode())) << path() << "(" << msg.hex() << ")"; + qCDebug(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("Received hiddpp error with code = %1 on").arg(to_integral(msg.errorCode())) << path() << "(" << msg.hex() << ")"; if (it->callBack) { it->callBack(MsgResult::HidppError, std::move(msg)); } m_requests.erase(it); } else { - logWarn(hid) << i18n("Received error hidpp message '%1' " - "without matching request.", msg.hex()); + qCWarning(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("Received error hidpp message '%1' " + "without matching request.").arg(msg.hex()); } return; } @@ -1166,8 +1143,8 @@ void SubHidppConnection::onHidppDataAvailable(int fd) if (it != m_requests.end()) { // Found matching request - logDebug(hid) << i18np("Received one byte on", "Received %1 bytes on", msg.size()) << path() - << "(" << msg.hex() << ")"; + qCDebug(PROJECTEUR_HID_LOG).noquote() << "Received" << msg.size() << "bytes on" << path() + << "(" << msg.hex() << ")"; if (it->callBack) { it->callBack(MsgResult::Ok, std::move(msg)); } @@ -1176,7 +1153,6 @@ void SubHidppConnection::onHidppDataAvailable(int fd) else if (msg.softwareId() == 0 || msg.subId() < 0x80) { // Event/Notification - // logDebug(hid) << i18n("Received notification (%1) on %2", msg.hex(), path()); // Notify subscribers const auto& callbackList = m_notificationSubscribers[msg.featureIndex()]; @@ -1188,8 +1164,8 @@ void SubHidppConnection::onHidppDataAvailable(int fd) } else { - logWarn(hid) << i18n("Received hidpp message " - "'%1' without matching request.", msg.hex()); + qCWarning(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("Received hidpp message " + "'%1' without matching request.").arg(msg.hex()); } } diff --git a/src/device.cc b/src/device.cc index 8c04b249..a86bfbb0 100644 --- a/src/device.cc +++ b/src/device.cc @@ -7,9 +7,8 @@ #include "devicescan.h" #include "enum-helper.h" #include "hidpp.h" -#include "logging.h" - -#include +#include "projecteur_device_debug.h" +#include "projecteur_hid_debug.h" #include #include @@ -18,12 +17,8 @@ #include #include -LOGGING_CATEGORY(device, "device") -LOGGING_CATEGORY(hid, "HID") - namespace { - const auto hexId = logging::hexId; - // class i18n : public QObject {}; // for i18n and logging + const auto hexId = formatHexId; } // end anonymous namespace // ------------------------------------------------------------------------------------------------- @@ -99,9 +94,7 @@ bool DeviceConnection::removeSubDevice(const QString& path) if (find_it != m_subDeviceConnections.end()) { if (find_it->second) { find_it->second->disconnect(); } // Important - logDebug(device) << i18n("Disconnected sub-device: %1 (%2:%3) %4", - m_deviceName, hexId(m_deviceId.vendorId), - hexId(m_deviceId.productId), path); + qCDebug(PROJECTEUR_DEVICE_LOG).noquote() << QStringLiteral("Disconnected sub-device: %1 (%2:%3) %4").arg(m_deviceName).arg(hexId(m_deviceId.vendorId)).arg(hexId(m_deviceId.productId)).arg(path); emit subDeviceDisconnected(m_deviceId, path); m_subDeviceConnections.erase(find_it); return true; @@ -199,7 +192,7 @@ std::shared_ptr SubEventConnection::create(const DeviceScan: const int evfd = ::open(sd.deviceFile.toLocal8Bit().constData(), O_RDONLY, 0); if (evfd == -1) { - logWarn(device) << i18n("Cannot open event device '%1' for read.", sd.deviceFile); + qCWarning(PROJECTEUR_DEVICE_LOG).noquote() << QStringLiteral("Cannot open event device '%1' for read.").arg(sd.deviceFile); return std::shared_ptr(); } @@ -210,8 +203,7 @@ std::shared_ptr SubEventConnection::create(const DeviceScan: if (id.vendor != dc.deviceId().vendorId || id.product != dc.deviceId().productId) { ::close(evfd); - logDebug(device) << i18n("Device id mismatch: %1 (%2:%3)", - sd.deviceFile, hexId(id.vendor), hexId(id.product)); + qCDebug(PROJECTEUR_DEVICE_LOG).noquote() << QStringLiteral("Device id mismatch: %1 (%2:%3)").arg(sd.deviceFile).arg(hexId(id.vendor)).arg(hexId(id.product)); return std::shared_ptr(); } @@ -219,8 +211,7 @@ std::shared_ptr SubEventConnection::create(const DeviceScan: if (ioctl(evfd, EVIOCGBIT(0, sizeof(bitmask)), &bitmask) < 0) { ::close(evfd); - logWarn(device) << i18n("Cannot get device properties: %1 (%2:%3)", - sd.deviceFile, hexId(id.vendor), hexId(id.product)); + qCWarning(PROJECTEUR_DEVICE_LOG).noquote() << QStringLiteral("Cannot get device properties: %1 (%2:%3)").arg(sd.deviceFile).arg(hexId(id.vendor)).arg(hexId(id.product)); return std::shared_ptr(); } @@ -249,8 +240,7 @@ std::shared_ptr SubEventConnection::create(const DeviceScan: if (res == 0) { return true; } // Grab not successful - logError(device) << i18n("Error grabbing device: %1 (return value: %2)", - sd.deviceFile, res); + qCCritical(PROJECTEUR_DEVICE_LOG).noquote() << QStringLiteral("Error grabbing device: %1 (return value: %2)").arg(sd.deviceFile).arg(res); ioctl(evfd, EVIOCGRAB, 0); } return false; @@ -270,7 +260,7 @@ std::shared_ptr SubEventConnection::create(const DeviceScan: if (grabbed) { ioctl(evfd, EVIOCGRAB, 0); } - logDebug(device) << i18n("Closing file descriptor for '%1'", path); + qCDebug(PROJECTEUR_DEVICE_LOG).noquote() << QStringLiteral("Closing file descriptor for '%1'").arg(path); ::close(evfd); }); @@ -323,7 +313,7 @@ int SubHidrawConnection::openHidrawSubDevice(const DeviceScan::SubDevice& sd, co const int devfd = ::open(sd.deviceFile.toLocal8Bit().constData(), O_RDWR|O_NONBLOCK , 0); if (devfd == errorResult) { - logWarn(device) << i18n("Cannot open hidraw device '%1' for read/write.", sd.deviceFile); + qCWarning(PROJECTEUR_DEVICE_LOG).noquote() << QStringLiteral("Cannot open hidraw device '%1' for read/write.").arg(sd.deviceFile); return errorResult; } @@ -332,8 +322,7 @@ int SubHidrawConnection::openHidrawSubDevice(const DeviceScan::SubDevice& sd, co int descriptorSize = 0; if (ioctl(devfd, HIDIOCGRDESCSIZE, &descriptorSize) < 0) { - logWarn(device) << i18n("Cannot retrieve report descriptor size of hidraw device '%1'.", - sd.deviceFile); + qCWarning(PROJECTEUR_DEVICE_LOG).noquote() << QStringLiteral("Cannot retrieve report descriptor size of hidraw device '%1'.").arg(sd.deviceFile); ::close(devfd); return errorResult; } @@ -342,8 +331,7 @@ int SubHidrawConnection::openHidrawSubDevice(const DeviceScan::SubDevice& sd, co reportDescriptor.size = descriptorSize; if (ioctl(devfd, HIDIOCGRDESC, &reportDescriptor) < 0) { - logWarn(device) << i18n("Cannot retrieve report descriptor of hidraw device '%1'.", - sd.deviceFile); + qCWarning(PROJECTEUR_DEVICE_LOG).noquote() << QStringLiteral("Cannot retrieve report descriptor of hidraw device '%1'.").arg(sd.deviceFile); ::close(devfd); return errorResult; } @@ -353,7 +341,7 @@ int SubHidrawConnection::openHidrawSubDevice(const DeviceScan::SubDevice& sd, co // get the hidraw sub-device id info if (ioctl(devfd, HIDIOCGRAWINFO, &devinfo) < 0) { - logWarn(device) << i18n("Cannot get info from hidraw device '%1'.", sd.deviceFile); + qCWarning(PROJECTEUR_DEVICE_LOG).noquote() << QStringLiteral("Cannot get info from hidraw device '%1'.").arg(sd.deviceFile); ::close(devfd); return errorResult; }; @@ -362,8 +350,7 @@ int SubHidrawConnection::openHidrawSubDevice(const DeviceScan::SubDevice& sd, co if (static_cast(devinfo.vendor) != devId.vendorId || static_cast(devinfo.product) != devId.productId) { - logDebug(device) << i18n("Device id mismatch: %1 (%2:%3)", - sd.deviceFile, hexId(devinfo.vendor), hexId(devinfo.product)); + qCDebug(PROJECTEUR_DEVICE_LOG).noquote() << QStringLiteral("Device id mismatch: %1 (%2:%3)").arg(sd.deviceFile).arg(hexId(devinfo.vendor)).arg(hexId(devinfo.product)); ::close(devfd); return errorResult; } @@ -386,10 +373,10 @@ ssize_t SubHidrawConnection::sendData(const void* msg, size_t msgLen) const auto res = ::write(m_writeNotifier->socket(), msg, msgLen); if (static_cast(res) == msgLen) { - logDebug(hid) << res << "bytes written to" << path() << "(" + qCDebug(PROJECTEUR_HID_LOG).noquote() << res << "bytes written to" << path() << "(" << QByteArray::fromRawData(static_cast(msg), msgLen).toHex() << ")"; } else { - logWarn(hid) << i18n("Writing to '%1' failed. (%2)", path(), res); + qCWarning(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("Writing to '%1' failed. (%2)").arg(path()).arg(res); } return res; @@ -412,7 +399,7 @@ void SubHidrawConnection::createSocketNotifiers(int fd, const QString& path) connect(readNotifier, &QSocketNotifier::destroyed, [fdPtr, path]() { if (fdPtr && *fdPtr != -1) { - logDebug(device) << i18n("Closing file descriptor for '%1'", path); + qCDebug(PROJECTEUR_DEVICE_LOG).noquote() << QStringLiteral("Closing file descriptor for '%1'").arg(path); ::close(*fdPtr); *fdPtr = -1; } @@ -425,7 +412,7 @@ void SubHidrawConnection::createSocketNotifiers(int fd, const QString& path) connect(writeNotifier, &QSocketNotifier::destroyed, [fdPtr, path]() { if (fdPtr && *fdPtr != -1) { - logDebug(device) << i18n("Closing file descriptor for '%1'", path); + qCDebug(PROJECTEUR_DEVICE_LOG).noquote() << QStringLiteral("Closing file descriptor for '%1'").arg(path); ::close(*fdPtr); *fdPtr = -1; } @@ -446,7 +433,7 @@ void SubHidrawConnection::onHidrawDataAvailable(int fd) // For generic hidraw devices without known protocols, just print out the // received data into the debug log - logDebug(hid) << "Received" << readVal.toHex() << "from" << path(); + qCDebug(PROJECTEUR_HID_LOG).noquote() << "Received" << readVal.toHex() << "from" << path(); } // ------------------------------------------------------------------------------------------------- diff --git a/src/deviceinput.cc b/src/deviceinput.cc index 4e70bb1e..1f0f3f7f 100644 --- a/src/deviceinput.cc +++ b/src/deviceinput.cc @@ -4,7 +4,7 @@ #include "deviceinput.h" #include "enum-helper.h" -#include "logging.h" +#include "projecteur_input_debug.h" #include "settings.h" #include "virtualdevice.h" @@ -18,8 +18,6 @@ #include -LOGGING_CATEGORY(input, "input") - namespace { const auto registeredMetaTypes_ = qRegisterMetaType() && qRegisterMetaType(); @@ -621,13 +619,13 @@ void InputMapper::Impl::execAction(const std::shared_ptr& action, Device { if (!action || action->empty()) { return; } - logDebug(input) << "Input map execAction, type =" << toString(action->type()) + qCDebug(PROJECTEUR_INPUT_LOG).noquote() << "Input map execAction, type =" << toString(action->type()) << ", partial_hit =" << (r == DeviceKeyMap::Result::PartialHit); if (action->type() == Action::Type::KeySequence) { const auto keySequenceAction = static_cast(action.get()); - logDebug(input) << "Emitting Key Sequence:" << keySequenceAction->keySequence.toString(); + qCDebug(PROJECTEUR_INPUT_LOG).noquote() << "Emitting Key Sequence:" << keySequenceAction->keySequence.toString(); emitNativeKeySequence(keySequenceAction->keySequence); } else @@ -817,12 +815,12 @@ void InputMapper::addEvents(const input_event* input_events, size_t num) } if (input_events[num-1].type != EV_SYN) { - logWarning(input) << i18n("Input mapper expects events separated by SYN event."); + qCWarning(PROJECTEUR_INPUT_LOG).noquote() << QStringLiteral("Input mapper expects events separated by SYN event."); return; } if (num == 1) { - logWarning(input) << i18n("Ignoring single SYN event received."); + qCWarning(PROJECTEUR_INPUT_LOG).noquote() << QStringLiteral("Ignoring single SYN event received."); return; } @@ -839,7 +837,7 @@ void InputMapper::addEvents(const input_event* input_events, size_t num) if (impl->m_recordingMode) { - logDebug(input) << "Recorded device event:" << KeyEvent{input_events, input_events + num - 1}; + qCDebug(PROJECTEUR_INPUT_LOG).noquote() << "Recorded device event:" << KeyEvent{input_events, input_events + num - 1}; impl->record(input_events, num-1); // exclude closing syn event for recording return; } diff --git a/src/devicescan.cc b/src/devicescan.cc index 0f76c84e..076a3a32 100644 --- a/src/devicescan.cc +++ b/src/devicescan.cc @@ -167,7 +167,7 @@ namespace DeviceScan { // ----------------------------------------------------------------------------------------------- ScanResult getDevices(const std::vector& additionalDevices) { - constexpr char hidDevicePath[] = "/sys/bus/hid/devices"; + const QString hidDevicePath = QStringLiteral("/sys/bus/hid/devices"); ScanResult result; const QFileInfo dpInfo(hidDevicePath); diff --git a/src/deviceswidget.cc b/src/deviceswidget.cc index f7a9fd59..3fba9a04 100644 --- a/src/deviceswidget.cc +++ b/src/deviceswidget.cc @@ -7,7 +7,6 @@ #include "deviceinput.h" #include "iconwidgets.h" #include "inputmapconfig.h" -#include "logging.h" #include "settings.h" #include "spotlight.h" @@ -27,11 +26,9 @@ #include #include -DECLARE_LOGGING_CATEGORY(preferences) - // ------------------------------------------------------------------------------------------------- namespace { - const auto hexId = logging::hexId; + const auto hexId = formatHexId; QString descriptionString(const QString& name, const DeviceId& id) { return QString("%1 (%2:%3) [%4]").arg(name, hexId(id.vendorId), hexId(id.productId), id.phys); diff --git a/src/hidpp.cc b/src/hidpp.cc index 014e9282..bce238ce 100644 --- a/src/hidpp.cc +++ b/src/hidpp.cc @@ -4,9 +4,7 @@ #include "hidpp.h" #include "enum-helper.h" -#include "logging.h" - -#include +#include "projecteur_hid_debug.h" #include #include @@ -17,8 +15,6 @@ #include #include -DECLARE_LOGGING_CATEGORY(hid) - namespace { const auto registeredMetaTypes_ = qRegisterMetaType() && qRegisterMetaType(); @@ -76,7 +72,7 @@ namespace { // ----------------------------------------------------------------------------------------------- QString featureSetCacheKey(const DeviceId& dId) { return QString("Device_%1_%2") - .arg(logging::hexId(dId.vendorId), logging::hexId(dId.productId)); + .arg(formatHexId(dId.vendorId), formatHexId(dId.productId)); } // ----------------------------------------------------------------------------------------------- @@ -420,8 +416,7 @@ void FeatureSet::getFeatureIndex(FeatureCode fc, std::functionsendRequest(std::move(featureIndexReqMsg), [cb=std::move(cb), fc](MsgResult result, Message&& msg) { - logDebug(hid) << i18n("getFeatureIndex(%1) => %2, %3", - to_integral(fc), toString(result), msg[4]); + qCDebug(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("getFeatureIndex(%1) => %2, %3").arg(to_integral(fc)).arg(toString(result)).arg(msg[4]); if (cb) { cb(result, (result != MsgResult::Ok) ? 0 : msg[4]); } }); }); @@ -465,8 +460,7 @@ void FeatureSet::getFirmwareCount(std::functionsendRequest(std::move(fwCountReqMsg), [featureIndex, cb=std::move(cb)](MsgResult result, Message&& msg) { - logDebug(hid) << i18n("getFirmwareCount() => %1, featureIndex = %2, count = %3", - toString(result), featureIndex, msg[4]); + qCDebug(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("getFirmwareCount() => %1, featureIndex = %2, count = %3").arg(toString(result)).arg(featureIndex).arg(msg[4]); if (cb) { cb(result, featureIndex, (result != MsgResult::Ok) ? 0 : msg[4]); } }); })); @@ -513,10 +507,7 @@ void FeatureSet::getMainFirmwareInfo(uint8_t fwIndex, uint8_t max, uint8_t curre getFirmwareInfo(fwIndex, current, makeSafeCallback( [this, current, max, fwIndex, cb=std::move(cb)](MsgResult res, FirmwareInfo&& fi) mutable { - logDebug(hid) << i18n( - "getFirmwareInfo(%1, %2, %3) => %4, fi.type = %5, fi.ver = %6, fi.pref = %7", - fwIndex, max, current, toString(res), to_integral(fi.firmwareType()), - fi.firmwareVersion(), fi.firmwarePrefix()); + qCDebug(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("getFirmwareInfo(%1, %2, %3) => %4, fi.type = %5, fi.ver = %6, fi.pref = %7").arg(fwIndex).arg(max).arg(current).arg(toString(res)).arg(to_integral(fi.firmwareType())).arg(fi.firmwareVersion()).arg(fi.firmwarePrefix()); if (res == MsgResult::Ok && fi.firmwareType() == FirmwareInfo::FirmwareType::MainApp) { @@ -549,8 +540,7 @@ void FeatureSet::initFromDevice(DeviceId dId, std::function cb) getMainFirmwareInfo(makeSafeCallback( [this, dId, cb=std::move(cb)](MsgResult res, FirmwareInfo&& fi) mutable { - logDebug(hid) << i18n("getMainFirmwareInfo() => %1, fi.type = %2", - toString(res), to_integral(fi.firmwareType())); + qCDebug(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("getMainFirmwareInfo() => %1, fi.type = %2").arg(toString(res)).arg(to_integral(fi.firmwareType())); if (fi.firmwareType() == FirmwareInfo::FirmwareType::MainApp) { m_mainFirmwareInfo = std::move(fi); @@ -560,9 +550,9 @@ void FeatureSet::initFromDevice(DeviceId dId, std::function cb) if (res == MsgResult::Ok && m_mainFirmwareInfo.isValid() && loadCachedFeatureSet(dId, m_mainFirmwareInfo, m_featureTable)) { - logDebug(hid) - << i18np("Loaded feature set with one entry from local cache", - "Loaded feature set with %1 entries from local cache", m_featureTable.size()); + qCDebug(PROJECTEUR_HID_LOG).noquote() + << QStringLiteral("Loaded feature set with %1 entries from local cache") + .arg(m_featureTable.size()); setState(State::Initialized); if (cb) { cb(m_state); } return; @@ -571,8 +561,7 @@ void FeatureSet::initFromDevice(DeviceId dId, std::function cb) getFeatureCount(makeSafeCallback( [this, dId, cb=std::move(cb)](MsgResult res, uint8_t featureIndex, uint8_t count) mutable { - logDebug(hid) << i18n("getFeatureCount() => %1, featureIndex = %2, count = %3", - toString(res), featureIndex, count); + qCDebug(PROJECTEUR_HID_LOG).noquote() << QStringLiteral("getFeatureCount() => %1, featureIndex = %2, count = %3").arg(toString(res)).arg(featureIndex).arg(count); if (res != MsgResult::Ok) { diff --git a/src/inputmapconfig.cc b/src/inputmapconfig.cc index 8fb4689d..537bc694 100644 --- a/src/inputmapconfig.cc +++ b/src/inputmapconfig.cc @@ -5,7 +5,6 @@ #include "actiondelegate.h" #include "inputseqedit.h" -#include "logging.h" #include diff --git a/src/inputseqedit.cc b/src/inputseqedit.cc index 1df4a6d0..447030dc 100644 --- a/src/inputseqedit.cc +++ b/src/inputseqedit.cc @@ -6,7 +6,6 @@ #include "device-key-lookup.h" #include "deviceinput.h" #include "inputmapconfig.h" -#include "logging.h" #include diff --git a/src/linuxdesktop.cc b/src/linuxdesktop.cc index 98bef867..9cf6bece 100644 --- a/src/linuxdesktop.cc +++ b/src/linuxdesktop.cc @@ -3,7 +3,7 @@ #include "linuxdesktop.h" -#include "logging.h" +#include "projecteur_desktop_debug.h" #include @@ -20,8 +20,6 @@ #include #include -LOGGING_CATEGORY(desktop, "desktop") - namespace { constexpr auto kwinScreenshotService = "org.kde.KWin.ScreenShot2"; constexpr auto kwinScreenshotPath = "/org/kde/KWin/ScreenShot2"; @@ -36,7 +34,7 @@ namespace { { int pipeDescriptors[2] = {-1, -1}; if (::pipe2(pipeDescriptors, O_CLOEXEC) != 0) { - logError(desktop) << i18n("Could not create a pipe for the KWin screenshot."); + qCCritical(PROJECTEUR_DESKTOP_LOG).noquote() << QStringLiteral("Could not create a pipe for the KWin screenshot."); return {}; } @@ -44,7 +42,7 @@ namespace { if (!readPipe.open(pipeDescriptors[0], QIODevice::ReadOnly, QFileDevice::AutoCloseHandle)) { ::close(pipeDescriptors[0]); ::close(pipeDescriptors[1]); - logError(desktop) << i18n("Could not open the KWin screenshot pipe."); + qCCritical(PROJECTEUR_DESKTOP_LOG).noquote() << QStringLiteral("Could not open the KWin screenshot pipe."); return {}; } @@ -70,7 +68,7 @@ namespace { message += i18n( " Install Projecteur so KWin can associate the executable with its desktop metadata."); } - logError(desktop) << message; + qCCritical(PROJECTEUR_DESKTOP_LOG).noquote() << message; return {}; } @@ -84,13 +82,13 @@ namespace { const quint64 expectedBytes = quint64(stride) * height; if (width == 0 || height == 0 || stride == 0 || expectedBytes > quint64(std::numeric_limits::max())) { - logError(desktop) << i18n("KWin returned invalid screenshot dimensions."); + qCCritical(PROJECTEUR_DESKTOP_LOG).noquote() << QStringLiteral("KWin returned invalid screenshot dimensions."); return {}; } const QByteArray pixels = readPipe.readAll(); if (quint64(pixels.size()) < expectedBytes) { - logError(desktop) << i18n("KWin returned an incomplete screenshot."); + qCCritical(PROJECTEUR_DESKTOP_LOG).noquote() << QStringLiteral("KWin returned an incomplete screenshot."); return {}; } @@ -98,7 +96,7 @@ namespace { const QImage image(reinterpret_cast(pixels.constData()), int(width), int(height), int(stride), format); if (image.isNull()) { - logError(desktop) << i18n("KWin returned an unsupported screenshot format."); + qCCritical(PROJECTEUR_DESKTOP_LOG).noquote() << QStringLiteral("KWin returned an unsupported screenshot format."); return {}; } @@ -137,11 +135,11 @@ QPixmap LinuxDesktop::grabScreen(QScreen* screen) const return {}; } if (!isWayland()) { - logWarning(desktop) << i18n("Screen capture is only supported on Wayland."); + qCWarning(PROJECTEUR_DESKTOP_LOG).noquote() << QStringLiteral("Screen capture is only supported on Wayland."); return {}; } if (type() != LinuxDesktop::Type::KDE) { - logWarning(desktop) << i18n("Screen capture is only supported on KDE Plasma."); + qCWarning(PROJECTEUR_DESKTOP_LOG).noquote() << QStringLiteral("Screen capture is only supported on KDE Plasma."); return {}; } return grabScreenKWin(screen); @@ -156,7 +154,7 @@ void LinuxDesktop::setShakeCursorEffectSuppressed(bool suppressed) QDBusInterface interface(kwinService, kwinEffectsPath, kwinEffectsInterface); if (!interface.isValid()) { - logWarning(desktop) << i18n("Could not access KWin's desktop effects interface."); + qCWarning(PROJECTEUR_DESKTOP_LOG).noquote() << QStringLiteral("Could not access KWin's desktop effects interface."); return; } @@ -165,8 +163,7 @@ void LinuxDesktop::setShakeCursorEffectSuppressed(bool suppressed) const QDBusReply loadedReply = interface.call(QStringLiteral("isEffectLoaded"), QString::fromLatin1(shakeCursorEffect)); if (!loadedReply.isValid()) { - logWarning(desktop) << i18n("Could not query KWin's Shake Cursor effect: %1", - loadedReply.error().message()); + qCWarning(PROJECTEUR_DESKTOP_LOG).noquote() << QStringLiteral("Could not query KWin's Shake Cursor effect: %1").arg(loadedReply.error().message()); return; } if (!loadedReply.value()) { @@ -176,8 +173,7 @@ void LinuxDesktop::setShakeCursorEffectSuppressed(bool suppressed) const QDBusReply unloadReply = interface.call(QStringLiteral("unloadEffect"), QString::fromLatin1(shakeCursorEffect)); if (!unloadReply.isValid()) { - logWarning(desktop) << i18n("Could not suppress KWin's Shake Cursor effect: %1", - unloadReply.error().message()); + qCWarning(PROJECTEUR_DESKTOP_LOG).noquote() << QStringLiteral("Could not suppress KWin's Shake Cursor effect: %1").arg(unloadReply.error().message()); return; } @@ -191,7 +187,7 @@ void LinuxDesktop::setShakeCursorEffectSuppressed(bool suppressed) const auto error = loadReply.isValid() ? i18n("KWin refused to load the effect.") : loadReply.error().message(); - logWarning(desktop) << i18n("Could not restore KWin's Shake Cursor effect: %1", error); + qCWarning(PROJECTEUR_DESKTOP_LOG).noquote() << QStringLiteral("Could not restore KWin's Shake Cursor effect: %1").arg(error); return; } diff --git a/src/logging.cc b/src/logging.cc deleted file mode 100644 index a161dc50..00000000 --- a/src/logging.cc +++ /dev/null @@ -1,212 +0,0 @@ -// This file is part of Projecteur - https://github.com/jahnf/projecteur -// - See LICENSE.md and README.md - -#include "logging.h" - -#include -#include -#include -#include -#include -#include - -#include - -namespace { - // ----------------------------------------------------------------------------------------------- - void projecteurLogHandler(QtMsgType type, const QMessageLogContext &context, const QString &msgQString); - void categoryFilterInfo(QLoggingCategory *category); - - // Install our custom message handler, store previous message handler - const QtMessageHandler defaultMessageHandler = qInstallMessageHandler(projecteurLogHandler); - const QLoggingCategory::CategoryFilter defaultCategoryFilter = QLoggingCategory::installFilter(categoryFilterInfo); - QLoggingCategory::CategoryFilter currentCategoryFilter = categoryFilterInfo; - - constexpr char categoryPrefix[] = "projecteur."; - inline bool isAppCategory(QLoggingCategory* category) { - return (qstrncmp(categoryPrefix, category->categoryName(), sizeof(categoryPrefix)-1) == 0); - } - - inline void applyDefaultCategoryFilter(QLoggingCategory* category) { - // Qt 6.11 applies a newly installed filter to existing categories before installFilter() - // returns the previous filter. During that pass this pointer is still null. - if (defaultCategoryFilter) { - defaultCategoryFilter(category); - } - } - - void categoryFilterDebug(QLoggingCategory *category) - { - if (isAppCategory(category)) - { - category->setEnabled(QtDebugMsg, true); - category->setEnabled(QtInfoMsg, true); - category->setEnabled(QtWarningMsg, true); - category->setEnabled(QtCriticalMsg, true); - } else { - applyDefaultCategoryFilter(category); - } - } - - void categoryFilterInfo(QLoggingCategory *category) - { - if (isAppCategory(category)) { - category->setEnabled(QtDebugMsg, false); - category->setEnabled(QtInfoMsg, true); - category->setEnabled(QtWarningMsg, true); - category->setEnabled(QtCriticalMsg, true); - } else { - applyDefaultCategoryFilter(category); - } - } - - void categoryFilterWarning(QLoggingCategory *category) - { - if (isAppCategory(category)) { - category->setEnabled(QtDebugMsg, false); - category->setEnabled(QtInfoMsg, false); - category->setEnabled(QtWarningMsg, true); - category->setEnabled(QtCriticalMsg, true); - } else { - applyDefaultCategoryFilter(category); - } - } - - void categoryFilterError(QLoggingCategory *category) - { - if (isAppCategory(category)) - { - category->setEnabled(QtDebugMsg, false); - category->setEnabled(QtInfoMsg, false); - category->setEnabled(QtWarningMsg, false); - category->setEnabled(QtCriticalMsg, true); - } else { - applyDefaultCategoryFilter(category); - } - } - - // ----------------------------------------------------------------------------------------------- - QPointer logPlainTextEdit; - QMetaMethod logAppendMetaMethod; - QList logPlainTextCache; // log messages are stored here until a text edit is registered - constexpr int logPlainTextCacheMax = 1000; - - // ----------------------------------------------------------------------------------------------- - void logToTextEdit(const QString& logMsg) - { - if (logPlainTextEdit) { - logAppendMetaMethod.invoke(logPlainTextEdit, Qt::QueuedConnection, Q_ARG(QString, logMsg)); - } else if (logPlainTextCache.size() < logPlainTextCacheMax) { - logPlainTextCache.push_back(logMsg); - } - } - - // ----------------------------------------------------------------------------------------------- - inline const char* typeToShortString(QtMsgType type) { - switch (type) { - case QtDebugMsg: return "dbg"; - case QtInfoMsg: return "inf"; - case QtWarningMsg: return "wrn"; - case QtCriticalMsg: return "err"; - case QtFatalMsg: return "fat"; - } - return ""; - } - - // ----------------------------------------------------------------------------------------------- - // Currently all logging is done from within the Qt Gui thread - // - if that changes and multiple threads will log, this needs a serious overhaul - NOT thread safe - void projecteurLogHandler(QtMsgType type, const QMessageLogContext &context, const QString &msgQString) - { - const char *category = context.category ? context.category : ""; - - constexpr auto dateFormat = Qt::ISODateWithMs; - - const auto logMsg = QString("[%1][%2][%3] %4").arg(QDateTime::currentDateTime().toString(dateFormat), - typeToShortString(type), category, msgQString); - - if (type == QtDebugMsg || type == QtInfoMsg) { - std::cout << qUtf8Printable(logMsg) << std::endl; - } else { - std::cerr << qUtf8Printable(logMsg) << std::endl; - } - - logToTextEdit(logMsg); - } -} // end anonymous namespace - -namespace logging { - void registerTextEdit(QPlainTextEdit* textEdit) - { - logPlainTextEdit = textEdit; - if (!logPlainTextEdit) { return; } - - const auto index = logPlainTextEdit->metaObject()->indexOfMethod("appendPlainText(QString)"); - logAppendMetaMethod = logPlainTextEdit->metaObject()->method(index); - - for (const auto& logMsg : logPlainTextCache) { - logAppendMetaMethod.invoke(logPlainTextEdit, Qt::QueuedConnection, Q_ARG(QString, logMsg)); - } - - logPlainTextCache.clear(); - } - - const char* levelToString(level lvl) - { - switch (lvl) { - case level::debug: return "debug"; - case level::info: return "info"; - case level::warning: return "warning"; - case level::error: return "error"; - case level::custom: return "default/custom"; - case level::unknown: return "unknown"; - } - return ""; - } - - level levelFromName(const QString& name) - { - const auto lvlName = name.toLower(); - if (lvlName == "dbg" || lvlName == "debug") { return level::debug; } - if (lvlName == "inf" || lvlName == "info") { return level::info; } - if (lvlName == "wrn" || lvlName == "warning") { return level::warning; } - if (lvlName == "err" || lvlName == "error") { return level::error; } - return level::unknown; - } - - level currentLevel() - { - if (currentCategoryFilter == defaultCategoryFilter) { return level::custom; } - if (currentCategoryFilter == categoryFilterDebug) { return level::debug; } - if (currentCategoryFilter == categoryFilterInfo) { return level::info; } - if (currentCategoryFilter == categoryFilterWarning) { return level::warning; } - if (currentCategoryFilter == categoryFilterError) { return level::error; } - return level::unknown; - } - - void setCurrentLevel(level lvl) - { - QLoggingCategory::CategoryFilter newFilter = currentCategoryFilter; - - if (lvl == level::debug) { - newFilter = categoryFilterDebug; - } else if (lvl == level::info) { - newFilter = categoryFilterInfo; - } else if (lvl == level::warning) { - newFilter = categoryFilterWarning; - } else if (lvl == level::error) { - newFilter = categoryFilterError; - } else if (lvl == level::custom) { - newFilter = defaultCategoryFilter; - } - - if (newFilter != currentCategoryFilter) { - QLoggingCategory::installFilter(newFilter); - currentCategoryFilter = newFilter; - } - } - - QString hexId(uint16_t id) { - return QString("%1").arg(id, 4, 16, QChar('0')); - } -} // end namespace logging diff --git a/src/logging.h b/src/logging.h deleted file mode 100644 index b849c734..00000000 --- a/src/logging.h +++ /dev/null @@ -1,77 +0,0 @@ -// This file is part of Projecteur - https://github.com/jahnf/Projecteur -// - See LICENSE.md and README.md -#pragma once - -#include - -#define _NARG__(...) _NARG_I_(__VA_ARGS__,_RSEQ_N()) -#define _NARG_I_(...) _ARG_N(__VA_ARGS__) -#define _ARG_N( \ - _1, _2, _3, _4, _5, _6, _7, _8, _9,_10, \ - _11,_12,_13,_14,_15,_16,_17,_18,_19,_20, \ - _21,_22,_23,_24,_25,_26,_27,_28,_29,_30, \ - _31,_32,_33,_34,_35,_36,_37,_38,_39,_40, \ - _41,_42,_43,_44,_45,_46,_47,_48,_49,_50, \ - _51,_52,_53,_54,_55,_56,_57,_58,_59,_60, \ - _61,_62,_63,N,...) N - -#define _RSEQ_N() \ - 2,2,2,2, \ - 2,2,2,2,2,2,2,2,2,2, \ - 2,2,2,2,2,2,2,2,2,2, \ - 2,2,2,2,2,2,2,2,2,2, \ - 2,2,2,2,2,2,2,2,2,2, \ - 2,2,2,2,2,2,2,2,2,2, \ - 2,2,2,2,2,2,2,2,1,0 - -#define _VLOGFUNC_(name, n) name##n -#define _VLOGFUNC(name, n) _VLOGFUNC_(name, n) -#define VLOGFUNC(func, ...) _VLOGFUNC(func, _NARG__(__VA_ARGS__)) (__VA_ARGS__) - -// macro 'overloading': -// - call logDebug1 for one argument, logDebug2 for more than one argument (up to 64) -#define logDebug(...) VLOGFUNC(logDebug, __VA_ARGS__) -#define logDebug1(category) qCDebug(category).noquote() -#define logDebug2(...) qCDebug(__VA_ARGS__) - -#define logInfo(...) VLOGFUNC(logInfo, __VA_ARGS__) -#define logInfo1(category) qCInfo(category).noquote() -#define logInfo2(...) qCInfo(__VA_ARGS__) - -#define logWarn(...) VLOGFUNC(logWarning, __VA_ARGS__) -#define logWarning(...) VLOGFUNC(logWarning, __VA_ARGS__) -#define logWarning1(category) qCWarning(category).noquote() -#define logWarning2(...) qCWarning(__VA_ARGS__) - -#define logCritical(...) VLOGFUNC(logError, __VA_ARGS__) -#define logError(...) VLOGFUNC(logError, __VA_ARGS__) -#define logError1(category) qCCritical(category).noquote() -#define logError2(...) qCCritical(__VA_ARGS__) - -#define LOGGING_CATEGORY(cat, name) Q_LOGGING_CATEGORY(cat, "projecteur." name) -#define DECLARE_LOGGING_CATEGORY(name) extern const QLoggingCategory &name(); - -class QPlainTextEdit; - -namespace logging { - enum class level { - unknown = -1, - custom = 0, - debug = 1, - info = 2, - warning = 3, - error = 4 - }; - - const char* levelToString(level lvl); - level levelFromName(const QString& name); - level currentLevel(); - void setCurrentLevel(level lvl); - - void registerTextEdit(QPlainTextEdit* textEdit); - - QString hexId(uint16_t id); -} - - - diff --git a/src/main.cc b/src/main.cc index e39050a1..f3be3d64 100644 --- a/src/main.cc +++ b/src/main.cc @@ -4,7 +4,6 @@ #include "projecteurapp.h" #include "projecteur-GitVersion.h" -#include "logging.h" #include "settings.h" #include @@ -221,8 +220,8 @@ namespace { return subDevice.deviceWritable; }); - print() << " " << "vendorId: " << logging::hexId(device.id.vendorId); - print() << " " << "productId: " << logging::hexId(device.id.productId); + print() << " " << "vendorId: " << formatHexId(device.id.vendorId); + print() << " " << "productId: " << formatHexId(device.id.productId); print() << " " << "phys: " << device.id.phys; print() << " " << "busType: " << toString(device.id.busType); print() << " " << "devices: " << subDeviceList.join(", "); @@ -259,7 +258,6 @@ namespace { const QCommandLineOption cfgFileOption_ = {QStringList{ "cfg" }, i18n("Set custom config file."), "file"}; const QCommandLineOption commandOption_ = {QStringList{ "c", "command"}, i18n("Send command/property to a running instance."), "cmd"}; const QCommandLineOption deviceInfoOption_ = {QStringList{ "d", "device-scan"}, i18n("Print device-scan results.")}; - const QCommandLineOption logLvlOption_ = {QStringList{ "l", "log-level" }, i18n("Set log level (dbg,inf,wrn,err)."), "lvl"}; const QCommandLineOption disableUInputOption_ = {QStringList{ "disable-uinput" }, i18n("Disable uinput support.")}; const QCommandLineOption showDlgOnStartOption_ = {QStringList{ "show-dialog" }, i18n("Show preferences dialog on start.")}; const QCommandLineOption hideSysTrayOption_ = {QStringList{ "hide-systray-icon"}, i18n("Hide the system tray icon.")}; @@ -275,7 +273,7 @@ namespace { { parser.setApplicationDescription(i18n("Wayland application for the Logitech Spotlight device.")); parser.addOptions({versionOption_, helpOption_, fullHelpOption_, commandOption_, - cfgFileOption_, fullVersionOption_, deviceInfoOption_, logLvlOption_, + cfgFileOption_, fullVersionOption_, deviceInfoOption_, disableUInputOption_, showDlgOnStartOption_, dialogMinOnlyOption_, disableOverlayOption_, additionalDeviceOption_, hideSysTrayOption_}); } @@ -296,8 +294,6 @@ namespace { auto commandOptionValues() const { return parser.values(commandOption_); } bool cfgFileOptionSet() const { return parser.isSet(cfgFileOption_); } auto cfgFileOptionValue() const { return parser.value(cfgFileOption_); } - bool logLvlOptionSet() const { return parser.isSet(logLvlOption_); } - auto logLvlOptionValue() const { return parser.value(logLvlOption_); } bool hideSysTrayOptionSet() const { return parser.isSet(hideSysTrayOption_); } // --------------------------------------------------------------------------------------------- @@ -340,7 +336,6 @@ namespace { print() << " -v, --version " << versionOption_.description(); print() << " --cfg FILE " << cfgFileOption_.description(); print() << " -d, --device-scan " << deviceInfoOption_.description(); - print() << " -l, --log-level LEVEL " << logLvlOption_.description(); print() << " -D DEVICE " << additionalDeviceOption_.description(); if (fullHelp) { print() << " --disable-uinput " << disableUInputOption_.description(); @@ -459,15 +454,6 @@ int main(int argc, char *argv[]) options.disableOverlay = parser.disableOverlayOptionSet(); options.hideSysTrayIcon = parser.hideSysTrayOptionSet(); - if (parser.logLvlOptionSet()) { - const auto lvl = logging::levelFromName(parser.logLvlOptionValue()); - if (lvl != logging::level::unknown) { - logging::setCurrentLevel(lvl); - } else { - error() << i18n("Cannot set log level, unknown level: '%1'", - parser.logLvlOptionValue()); - } - } } ProjecteurApplication app(argc, argv, options); diff --git a/src/nativekeyseqedit.cc b/src/nativekeyseqedit.cc index dc10b208..c5640e2e 100644 --- a/src/nativekeyseqedit.cc +++ b/src/nativekeyseqedit.cc @@ -5,7 +5,6 @@ #include "inputmapconfig.h" #include "inputseqedit.h" -#include "logging.h" #include diff --git a/src/preferencesdlg.cc b/src/preferencesdlg.cc index e2fb54e9..9b38285c 100644 --- a/src/preferencesdlg.cc +++ b/src/preferencesdlg.cc @@ -3,17 +3,12 @@ #include "preferencesdlg.h" -#include "projecteur-GitVersion.h" // auto generated version information - #include "deviceswidget.h" #include "iconwidgets.h" -#include "logging.h" #include "settings.h" #include #include -#include -#include #include #include #include @@ -22,29 +17,22 @@ #include #include #include -#include #include -#include #include -#include -#include #include #include +#include #include #include #include #include -#include #include #include #include #include -#include #include -LOGGING_CATEGORY(preferences, "preferences") - // ------------------------------------------------------------------------------------------------- namespace { #define CURSOR_PATH ":/icons/cursors/" @@ -95,8 +83,6 @@ PreferencesDialog::PreferencesDialog(Settings* settings, Spotlight* spotlight, KShortcutsEditor::LetterShortcutsDisallowed); addPage(m_shortcutsEditor, i18n("Shortcuts"), QStringLiteral("configure-shortcuts"), QString(), false); - addPage(createLogTabWidget(), i18n("Log"), QStringLiteral("utilities-log-viewer"), - QString(), false); if (auto* helpButton = buttonBox()->button(QDialogButtonBox::Help)) { helpButton->hide(); @@ -635,109 +621,6 @@ QWidget* PreferencesDialog::createMultiScreenWidget(Settings* settings) return cb; } -// ------------------------------------------------------------------------------------------------- -QWidget* PreferencesDialog::createLogTabWidget() -{ - const auto widget = new QWidget(this); - const auto mainVBox = new QVBoxLayout(widget); - - const auto te = new QPlainTextEdit(widget); - te->setReadOnly(true); - te->setWordWrapMode(QTextOption::NoWrap); - te->setMaximumBlockCount(1000); - te->setFont([te]() - { - auto font = te->font(); - font.setPointSize(font.pointSize() - 1); - return font; - }()); - logging::registerTextEdit(te); - - // Count discarded logs - connect(te, &QPlainTextEdit::blockCountChanged, this, - [maxBlockCount=te->maximumBlockCount(), this](int newBlockCount) { - if (newBlockCount > maxBlockCount) { - m_discardedLogCount += (newBlockCount-maxBlockCount); - } - }); - - const auto lvlHBox = new QHBoxLayout(); - lvlHBox->addWidget(new QLabel(i18n("Log Level"), widget)); - // Log level combo box - const auto logLvlCombo = new QComboBox(widget); - logLvlCombo->addItem(i18n("Debug"), static_cast(logging::level::debug)); - logLvlCombo->addItem(i18n("Info"), static_cast(logging::level::info)); - logLvlCombo->addItem(i18n("Warning"), static_cast(logging::level::warning)); - logLvlCombo->addItem(i18n("Error"), static_cast(logging::level::error)); - lvlHBox->addWidget(logLvlCombo); - - const int idx = logLvlCombo->findData(static_cast(logging::currentLevel())); - logLvlCombo->setCurrentIndex((idx == -1) ? 0 : idx); - - connect(logLvlCombo, static_cast(&QComboBox::currentIndexChanged), this, - [logLvlCombo, te](int index) { - const auto lvl = static_cast(logLvlCombo->itemData(index).toInt()); - te->appendPlainText(i18n("--- Setting new log level: %1", logging::levelToString(lvl))); - logging::setCurrentLevel(lvl); - }); - - const auto saveLogBtn = new QPushButton(i18n("&Save log..."), this); - saveLogBtn->setToolTip(i18n("Save log to file.")); - connect(saveLogBtn, &QPushButton::clicked, this, [this, te]() - { - static auto saveDir = QDir::homePath(); - const auto defaultName = QString("projecteur_%1.log") - .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd_hh-mm")); - - const auto defaultFile = QDir(saveDir).filePath(defaultName); - KFileCustomDialog saveDialog(QUrl::fromLocalFile(defaultFile), this); - saveDialog.setWindowTitle(i18n("Save Log File")); - saveDialog.setOperationMode(KFileWidget::Saving); - saveDialog.fileWidget()->setMode(KFile::File | KFile::LocalOnly); - saveDialog.fileWidget()->setConfirmOverwrite(true); - saveDialog.fileWidget()->setFilters({ - KFileFilter(i18n("Log Files"), {QStringLiteral("*.log"), QStringLiteral("*.txt")}, {}) - }); - if (saveDialog.exec() != QDialog::Accepted) { return; } - - const auto logFile = saveDialog.fileWidget()->selectedFile(); - if (logFile.isEmpty()) { return; } - saveDir = QFileInfo(logFile).path(); - - QFile f(logFile); - if (f.open(QIODevice::WriteOnly)) - { - f.write(QString("%1 %2\n").arg(QCoreApplication::applicationName()) - .arg(projecteur::version_string()).toLocal8Bit()); - f.write(QString(" - git-branch: %1, git-hash: %2\n").arg(projecteur::version_branch()) - .arg(projecteur::version_shorthash()).toLocal8Bit()); - f.write(QString(" - qt-version: (build: %1, runtime: %2)\n").arg(QT_VERSION_STR) - .arg(qVersion()).toLocal8Bit()); - f.write(QString("\n------------------------------------------------------------\n").toLocal8Bit()); - if (m_discardedLogCount > 0) { - f.write(i18np("Discarded one previous log entry.", - "Discarded %1 previous log entries.", m_discardedLogCount).toLocal8Bit()); - f.write(QString("\n------------------------------------------------------------\n").toLocal8Bit()); - } - f.write(te->toPlainText().toLocal8Bit()); - logInfo(preferences) << i18n("Log saved to: ") << logFile; - } - else { - logError(preferences) << i18n("Could not open '%1' for writing.", logFile); - } - }); - - lvlHBox->addWidget(saveLogBtn); - lvlHBox->setStretch(0, 0); - lvlHBox->setStretch(1, 1); - lvlHBox->setStretch(2, 1); - - mainVBox->addLayout(lvlHBox); - mainVBox->addWidget(te); - return widget; -} - -// ------------------------------------------------------------------------------------------------- void PreferencesDialog::setMode(Mode dialogMode) { if (m_dialogMode == dialogMode) { diff --git a/src/preferencesdlg.h b/src/preferencesdlg.h index 712ef30c..7a01e0fd 100644 --- a/src/preferencesdlg.h +++ b/src/preferencesdlg.h @@ -84,7 +84,6 @@ protected slots: QWidget* createMultiScreenWidget(Settings* settings); QGroupBox* createZoomGroupBox(Settings* settings); QWidget* createPresetSelector(Settings* settings); - QWidget* createLogTabWidget(); private: Settings* const m_settings; @@ -96,5 +95,4 @@ protected slots: KShortcutsEditor* m_shortcutsEditor = nullptr; bool m_active = false; Mode m_dialogMode = Mode::ClosableDialog; - quint32 m_discardedLogCount = 0; }; diff --git a/src/projecteurapp.cc b/src/projecteurapp.cc index c8a26f94..ae1ed501 100644 --- a/src/projecteurapp.cc +++ b/src/projecteurapp.cc @@ -6,9 +6,10 @@ #include "device-command-helper.h" #include "imageitem.h" #include "linuxdesktop.h" -#include "logging.h" #include "preferencesdlg.h" #include "presentationtimer.h" +#include "projecteur_command_debug.h" +#include "projecteur_main_debug.h" #include "projecteurcontrol.h" #include "settings.h" #include "spotlight.h" @@ -40,9 +41,6 @@ #include -LOGGING_CATEGORY(mainapp, "mainapp") -LOGGING_CATEGORY(cmdserver, "cmdserver") - namespace { constexpr auto notificationComponent = "projecteur"; @@ -70,8 +68,8 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio if (!options.commands.isEmpty()) { const auto commands = options.commands.join(QStringLiteral("; ")); - logWarning(mainapp) - << i18n("Cannot send commands '%1' - no running application instance found.", commands); + qCWarning(PROJECTEUR_MAIN_LOG).noquote() + << QStringLiteral("Cannot send commands '%1' - no running application instance found.").arg(commands); m_startupExitCode = 43; m_dbusService->unregister(); m_primaryInstance = false; @@ -84,7 +82,8 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio { const auto title = i18n("No Screens detected"); const auto text = i18n("screens().size() returned a size < 1. Exiting."); - logError(mainapp) << title << ";" << text; + qCCritical(PROJECTEUR_MAIN_LOG).noquote() + << "No screens detected; screens().size() returned a size below one. Exiting."; KMessageBox::error(nullptr, text, title); QTimer::singleShot(0, this, [this](){ this->exit(2); }); return; @@ -116,17 +115,17 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio m_spotlight->setSpotActive(true); }); connect(&*m_dialog, &PreferencesDialog::exitApplicationRequested, this, [this]() { - logDebug(mainapp) << i18n("Exit request from preferences dialog."); + qCDebug(PROJECTEUR_MAIN_LOG).noquote() << QStringLiteral("Exit request from preferences dialog."); quit(); }); const QString desktopEnv = m_linuxDesktop->type() == LinuxDesktop::Type::KDE ? QStringLiteral("KDE") - : i18n("Unknown"); + : QStringLiteral("Unknown"); - logDebug(mainapp) << i18n("Qt platform plugin: %1;", QGuiApplication::platformName()) - << i18n("Desktop Environment: %1;", desktopEnv) - << i18n("Wayland: %1", m_linuxDesktop->isWayland() ? "true" : "false"); + qCDebug(PROJECTEUR_MAIN_LOG).noquote() << QStringLiteral("Qt platform plugin: %1;").arg(QGuiApplication::platformName()) + << QStringLiteral("Desktop Environment: %1;").arg(desktopEnv) + << QStringLiteral("Wayland: %1").arg(m_linuxDesktop->isWayland() ? "true" : "false"); if (options.showPreferencesOnStart) { QTimer::singleShot(0, this, [this](){ showPreferences(true); }); @@ -148,9 +147,11 @@ ProjecteurApplication::ProjecteurApplication(int &argc, char **argv, const Optio const auto text = i18n("Qml component has status '%1'. Exiting.", static_cast(m_windowQmlComponent->status())); - logError(mainapp) << title << ";" << text; + qCCritical(PROJECTEUR_MAIN_LOG).noquote() + << "Overlay QML component has unexpected status:" + << static_cast(m_windowQmlComponent->status()); for (const auto& error : m_windowQmlComponent->errors()) { - logError(mainapp) << error.toString(); + qCCritical(PROJECTEUR_MAIN_LOG).noquote() << error.toString(); } KMessageBox::error(nullptr, text, title); @@ -264,7 +265,7 @@ void ProjecteurApplication::setupControlService(Options const& options) m_control = new ProjecteurControl(this, m_settings, m_spotlight, m_presentationTimer, !options.hideSysTrayIcon); if (!m_control->registerObject()) { - logError(mainapp) << i18n("Could not register the Projecteur D-Bus control object."); + qCCritical(PROJECTEUR_MAIN_LOG).noquote() << QStringLiteral("Could not register the Projecteur D-Bus control object."); } } @@ -281,7 +282,7 @@ void ProjecteurApplication::setupGlobalShortcuts() m_actionCollection->addAction(id, action); connect(action, &QAction::triggered, this, std::move(callback)); if (!KGlobalAccel::setGlobalShortcut(action, QList{})) { - logWarning(mainapp) << i18n("Could not register global shortcut action '%1'.", id); + qCWarning(PROJECTEUR_MAIN_LOG).noquote() << QStringLiteral("Could not register global shortcut action '%1'.").arg(id); } }; @@ -648,7 +649,7 @@ void ProjecteurApplication::applyCommand(const QString& command) if (cmdKey == "quit") { - logDebug(cmdserver) << i18n("Received quit command."); + qCDebug(PROJECTEUR_COMMAND_LOG).noquote() << QStringLiteral("Received quit command."); this->quit(); } else if (cmdKey == "vibrate") // with args intensity (0-255), length (0-10) @@ -677,8 +678,7 @@ void ProjecteurApplication::applyCommand(const QString& command) return std::uint8_t{0}; }(); - logDebug(cmdserver) << i18n("Received command vibrate = intensity:%1, length:%2", - intensity, length); + qCDebug(PROJECTEUR_COMMAND_LOG).noquote() << QStringLiteral("Received command vibrate = intensity:%1, length:%2").arg(intensity).arg(length); m_deviceCommandHelper->sendVibrateCommand(intensity, length); } @@ -687,17 +687,16 @@ void ProjecteurApplication::applyCommand(const QString& command) bool ok = false; int const sizeAdjust = cmdValue.toInt(&ok); if (ok) { - logDebug(cmdserver) << i18n("Received command spot.size.adjust = %1%2", - sizeAdjust > 0 ? "+" : "", sizeAdjust); + qCDebug(PROJECTEUR_COMMAND_LOG).noquote() << QStringLiteral("Received command spot.size.adjust = %1%2").arg(sizeAdjust > 0 ? "+" : "").arg(sizeAdjust); m_settings->setSpotSize(m_settings->spotSize() + sizeAdjust); } else { - logDebug(cmdserver) << i18n("Received invalid value for command spot.size.adjust"); + qCDebug(PROJECTEUR_COMMAND_LOG).noquote() << QStringLiteral("Received invalid value for command spot.size.adjust"); } } else if (cmdKey == "spot") { if (cmdValue.isEmpty()) { - logDebug(cmdserver) << i18n("Received empty command value for command spot"); + qCDebug(PROJECTEUR_COMMAND_LOG).noquote() << QStringLiteral("Received empty command value for command spot"); } else if (cmdValue.toLower() == "toggle") { m_spotlight->setSpotActive(!m_spotlight->spotActive()); } @@ -705,19 +704,19 @@ void ProjecteurApplication::applyCommand(const QString& command) const bool active = (cmdValue.toLower() == "on" || cmdValue == "1" || cmdValue.toLower() == "true"); - logDebug(cmdserver) << i18n("Received command spot = %1", active); + qCDebug(PROJECTEUR_COMMAND_LOG).noquote() << QStringLiteral("Received command spot = %1").arg(active); m_spotlight->setSpotActive(active); } } else if (cmdKey == "settings" || cmdKey == "preferences") { const bool show = !(cmdValue.toLower() == "hide" || cmdValue == "0"); - logDebug(cmdserver) << i18n("Received command settings = %1", show); + qCDebug(PROJECTEUR_COMMAND_LOG).noquote() << QStringLiteral("Received command settings = %1").arg(show); showPreferences(show); } else if (cmdKey == "preset") { - logDebug(cmdserver) << i18n("Received command preset = %1", cmdValue); + qCDebug(PROJECTEUR_COMMAND_LOG).noquote() << QStringLiteral("Received command preset = %1").arg(cmdValue); if (!cmdValue.isEmpty()) { m_settings->loadPreset(cmdValue); } } else if (cmdValue.size()) @@ -728,12 +727,12 @@ void ProjecteurApplication::applyCommand(const QString& command) return (pair.first == cmdKey); }); if (it != m_settings->stringProperties().cend()) { - logDebug(cmdserver) << i18n("Received command '%1'='%2'", cmdKey, cmdValue); + qCDebug(PROJECTEUR_COMMAND_LOG).noquote() << QStringLiteral("Received command '%1'='%2'").arg(cmdKey).arg(cmdValue); it->second.setFunction(cmdValue); } else { // string property not found... - logWarning(cmdserver) << i18n("Received unknown command key (%1)", cmdKey); + qCWarning(PROJECTEUR_COMMAND_LOG).noquote() << QStringLiteral("Received unknown command key (%1)").arg(cmdKey); } } } diff --git a/src/settings.cc b/src/settings.cc index fe330436..36ab2b13 100644 --- a/src/settings.cc +++ b/src/settings.cc @@ -5,8 +5,8 @@ #include "device.h" #include "deviceinput.h" -#include "logging.h" #include "projecteurconfig.h" +#include "projecteur_settings_debug.h" #include #include @@ -21,8 +21,6 @@ #include #include -LOGGING_CATEGORY(lcSettings, "settings") - namespace { // ----------------------------------------------------------------------------------------------- namespace settings { @@ -106,7 +104,7 @@ namespace { // ----------------------------------------------------------------------------------------------- QString settingsKey(const DeviceId& dId, const QString& key) { return QString("Device_%1_%2/%3") - .arg(logging::hexId(dId.vendorId), logging::hexId(dId.productId), key); + .arg(formatHexId(dId.vendorId), formatHexId(dId.productId), key); } struct ConfigEntry { @@ -234,7 +232,7 @@ QString Settings::configFileName() const void Settings::save() { if (!m_config->save()) { - logWarning(lcSettings) << i18n("Could not save settings to '%1'.", configFileName()); + qCWarning(PROJECTEUR_SETTINGS_LOG).noquote() << QStringLiteral("Could not save settings to '%1'.").arg(configFileName()); } } @@ -242,7 +240,7 @@ void Settings::save() void Settings::sync() { if (!m_config->config()->sync()) { - logWarning(lcSettings) << i18n("Could not save settings to '%1'.", configFileName()); + qCWarning(PROJECTEUR_SETTINGS_LOG).noquote() << QStringLiteral("Could not save settings to '%1'.").arg(configFileName()); } } @@ -252,11 +250,11 @@ void Settings::init() const QFileInfo fi(configFileName()); if (!fi.isReadable()) { - logDebug(lcSettings) << i18n("Settings file '%1' does not exist yet.", configFileName()); + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << QStringLiteral("Settings file '%1' does not exist yet.").arg(configFileName()); } if (fi.exists() && !fi.isWritable()) { - logWarning(lcSettings) << i18n("Settings file '%1' not writable.", configFileName()); + qCWarning(PROJECTEUR_SETTINGS_LOG).noquote() << QStringLiteral("Settings file '%1' not writable.").arg(configFileName()); } shapeSettingsInitialize(); @@ -559,7 +557,7 @@ void Settings::shapeSettingsLoad(const QString& preset) if (settingDefinition.defaultValue().metaType().id() == QMetaType::Int // Currently only int shape settings supported && settingDefinition.defaultValue() != loadedValue) { - logDebug(lcSettings) << QString("spot.shape.%1.%2 = ").arg(shape.name().toLower(), key) << loadedValue.toInt(); + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << QString("spot.shape.%1.%2 = ").arg(shape.name().toLower(), key) << loadedValue.toInt(); } if (propertyMap->property(key.toLocal8Bit()).isValid()) { @@ -619,7 +617,7 @@ void Settings::shapeSettingsInitialize() if (newValue != setValue) { pm->setProperty(key.toLocal8Bit(), newValue); } - logDebug(lcSettings) << QString("spot.shape.%1.%2 = ").arg(shape.name().toLower(), it->settingsKey()) + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << QString("spot.shape.%1.%2 = ").arg(shape.name().toLower(), it->settingsKey()) << setValue; writeValue(QString("Shape.%1/%2").arg(shape.name()).arg(key), newValue); } @@ -663,7 +661,7 @@ PresetModel* Settings::presetModel() // ------------------------------------------------------------------------------------------------- void Settings::load(const QString& preset) { - logDebug(lcSettings) << i18n("Loading values from config:") << configFileName() + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << QStringLiteral("Loading values from config:") << configFileName() << (preset.size() ? QString("(%1)").arg(preset) : ""); if (preset.isEmpty()) @@ -749,7 +747,7 @@ void Settings::setShowSpotShade(bool show) m_showSpotShade = show; m_config->setShowSpotShade(m_showSpotShade); save(); - logDebug(lcSettings) << "shade =" << m_showSpotShade; + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << "shade =" << m_showSpotShade; emit showSpotShadeChanged(m_showSpotShade); } @@ -761,7 +759,7 @@ void Settings::setSpotSize(int size) m_spotSize = qMin(qMax(::settings::ranges::spotSize.min, size), ::settings::ranges::spotSize.max); m_config->setSpotSize(m_spotSize); save(); - logDebug(lcSettings) << "spot.size =" << m_spotSize; + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << "spot.size =" << m_spotSize; emit spotSizeChanged(m_spotSize); } @@ -773,7 +771,7 @@ void Settings::setShowCenterDot(bool show) m_showCenterDot = show; m_config->setShowCenterDot(m_showCenterDot); save(); - logDebug(lcSettings) << "dot =" << m_showCenterDot; + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << "dot =" << m_showCenterDot; emit showCenterDotChanged(m_showCenterDot); } @@ -785,7 +783,7 @@ void Settings::setDotSize(int size) m_dotSize = qMin(qMax(::settings::ranges::dotSize.min, size), ::settings::ranges::dotSize.max); m_config->setDotSize(m_dotSize); save(); - logDebug(lcSettings) << "dot.size =" << m_dotSize; + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << "dot.size =" << m_dotSize; emit dotSizeChanged(m_dotSize); } @@ -797,7 +795,7 @@ void Settings::setDotColor(const QColor& color) m_dotColor = color; m_config->setDotColor(m_dotColor); save(); - logDebug(lcSettings) << "dot.color =" << m_dotColor.name(); + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << "dot.color =" << m_dotColor.name(); emit dotColorChanged(m_dotColor); } @@ -809,7 +807,7 @@ void Settings::setDotOpacity(double opacity) m_dotOpacity = qMin(qMax(::settings::ranges::dotOpacity.min, opacity), ::settings::ranges::dotOpacity.max); m_config->setDotOpacity(m_dotOpacity); save(); - logDebug(lcSettings) << "dot.opacity = " << m_dotOpacity; + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << "dot.opacity = " << m_dotOpacity; emit dotOpacityChanged(m_dotOpacity); } } @@ -822,7 +820,7 @@ void Settings::setShadeColor(const QColor& color) m_shadeColor = color; m_config->setShadeColor(m_shadeColor); save(); - logDebug(lcSettings) << "shade.color =" << m_shadeColor.name(); + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << "shade.color =" << m_shadeColor.name(); emit shadeColorChanged(m_shadeColor); } @@ -834,7 +832,7 @@ void Settings::setShadeOpacity(double opacity) m_shadeOpacity = qMin(qMax(::settings::ranges::shadeOpacity.min, opacity), ::settings::ranges::shadeOpacity.max); m_config->setShadeOpacity(m_shadeOpacity); save(); - logDebug(lcSettings) << "shade.opacity = " << m_shadeOpacity; + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << "shade.opacity = " << m_shadeOpacity; emit shadeOpacityChanged(m_shadeOpacity); } } @@ -847,7 +845,7 @@ void Settings::setCursor(Qt::CursorShape cursor) m_cursor = qMin(qMax(static_cast(0), cursor), Qt::LastCursor); m_config->setCursor(static_cast(m_cursor)); save(); - logDebug(lcSettings) << "cursor = " << m_cursor; + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << "cursor = " << m_cursor; emit cursorChanged(m_cursor); } @@ -865,7 +863,7 @@ void Settings::setSpotShape(const QString& spotShapeQmlComponent) m_spotShape = it->qmlComponent(); m_config->setSpotShape(m_spotShape); save(); - logDebug(lcSettings) << "spot.shape = " << m_spotShape; + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << "spot.shape = " << m_spotShape; emit spotShapeChanged(m_spotShape); setSpotRotationAllowed(it->allowRotation()); } @@ -879,7 +877,7 @@ void Settings::setSpotRotation(double rotation) m_spotRotation = qMin(qMax(::settings::ranges::spotRotation.min, rotation), ::settings::ranges::spotRotation.max); m_config->setSpotRotation(m_spotRotation); save(); - logDebug(lcSettings) << "spot.rotation = " << m_spotRotation; + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << "spot.rotation = " << m_spotRotation; emit spotRotationChanged(m_spotRotation); } } @@ -936,7 +934,7 @@ void Settings::setShowBorder(bool show) m_showBorder = show; m_config->setShowBorder(m_showBorder); save(); - logDebug(lcSettings) << "border = " << m_showBorder; + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << "border = " << m_showBorder; emit showBorderChanged(m_showBorder); } @@ -948,7 +946,7 @@ void Settings::setBorderColor(const QColor& color) m_borderColor = color; m_config->setBorderColor(m_borderColor); save(); - logDebug(lcSettings) << "border.color = " << m_borderColor.name(); + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << "border.color = " << m_borderColor.name(); emit borderColorChanged(m_borderColor); } @@ -960,7 +958,7 @@ void Settings::setBorderSize(int size) m_borderSize = qMin(qMax(::settings::ranges::borderSize.min, size), ::settings::ranges::borderSize.max); m_config->setBorderSize(m_borderSize); save(); - logDebug(lcSettings) << "border.size = " << m_borderSize; + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << "border.size = " << m_borderSize; emit borderSizeChanged(m_borderSize); } @@ -972,7 +970,7 @@ void Settings::setBorderOpacity(double opacity) m_borderOpacity = qMin(qMax(::settings::ranges::borderOpacity.min, opacity), ::settings::ranges::borderOpacity.max); m_config->setBorderOpacity(m_borderOpacity); save(); - logDebug(lcSettings) << "border.opacity = " << m_borderOpacity; + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << "border.opacity = " << m_borderOpacity; emit borderOpacityChanged(m_borderOpacity); } } @@ -985,7 +983,7 @@ void Settings::setZoomEnabled(bool enabled) m_zoomEnabled = enabled; m_config->setZoomEnabled(m_zoomEnabled); save(); - logDebug(lcSettings) << "zoom = " << m_zoomEnabled; + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << "zoom = " << m_zoomEnabled; emit zoomEnabledChanged(m_zoomEnabled); } @@ -997,7 +995,7 @@ void Settings::setZoomFactor(double factor) m_zoomFactor = qMin(qMax(::settings::ranges::zoomFactor.min, factor), ::settings::ranges::zoomFactor.max); m_config->setZoomFactor(m_zoomFactor); save(); - logDebug(lcSettings) << "zoom.factor = " << m_zoomFactor; + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << "zoom.factor = " << m_zoomFactor; emit zoomFactorChanged(m_zoomFactor); } } @@ -1009,7 +1007,7 @@ void Settings::setMultiScreenOverlayEnabled(bool enabled) m_multiScreenOverlayEnabled = enabled; m_config->setMultiScreenOverlay(m_multiScreenOverlayEnabled); save(); - logDebug(lcSettings) << "multi-screen-overlay = " << m_multiScreenOverlayEnabled; + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << "multi-screen-overlay = " << m_multiScreenOverlayEnabled; emit multiScreenOverlayEnabledChanged(m_multiScreenOverlayEnabled); } @@ -1082,7 +1080,7 @@ InputMapConfig Settings::getDeviceInputMapConfig(const DeviceId& dId) quint32 size = 0; stream >> version >> size; if (version != inputMapFormatVersion || size > 1024) { - logWarning(lcSettings) << i18n("Ignoring unsupported device input mapping data."); + qCWarning(PROJECTEUR_SETTINGS_LOG).noquote() << QStringLiteral("Ignoring unsupported device input mapping data."); return cfg; } @@ -1092,7 +1090,7 @@ InputMapConfig Settings::getDeviceInputMapConfig(const DeviceId& dId) MappedAction mappedAction; stream >> sequence >> mappedAction; if (stream.status() != QDataStream::Ok || !mappedAction.action) { - logWarning(lcSettings) << i18n("Ignoring invalid device input mapping data."); + qCWarning(PROJECTEUR_SETTINGS_LOG).noquote() << QStringLiteral("Ignoring invalid device input mapping data."); return {}; } if (mappedAction.action->type() == Action::Type::ScrollHorizontal) { diff --git a/src/spotlight.cc b/src/spotlight.cc index 8890b30b..7257cad1 100644 --- a/src/spotlight.cc +++ b/src/spotlight.cc @@ -5,12 +5,12 @@ #include "device-hidpp.h" #include "deviceinput.h" -#include "logging.h" +#include "projecteur_device_debug.h" +#include "projecteur_hid_debug.h" +#include "projecteur_input_debug.h" #include "settings.h" #include "virtualdevice.h" -#include - #include #include #include @@ -21,12 +21,8 @@ #include #include -DECLARE_LOGGING_CATEGORY(device) -DECLARE_LOGGING_CATEGORY(hid) -DECLARE_LOGGING_CATEGORY(input) - namespace { - const auto hexId = logging::hexId; + const auto hexId = formatHexId; // See details on workaround in onEventDataAvailable bool workaroundLogitechFirstMoveEvent = true; @@ -98,7 +94,7 @@ Spotlight::Spotlight(QObject* parent, Options options, Settings* settings) VirtualDevice::Type::Keyboard, "Projecteur_virtual_keyboard"); } else { - logInfo(device) << i18n("Virtual device initialization was skipped."); + qCInfo(PROJECTEUR_DEVICE_LOG).noquote() << QStringLiteral("Virtual device initialization was skipped."); } m_connectionTimer->setSingleShot(true); @@ -109,7 +105,7 @@ Spotlight::Spotlight(QObject* parent, Options options, Settings* settings) m_connectionTimer->setInterval(delayedConnectionTimerIntervalMs); connect(m_connectionTimer, &QTimer::timeout, this, [this]() { - logDebug(device) << i18n("New connection check triggered"); + qCDebug(PROJECTEUR_DEVICE_LOG).noquote() << QStringLiteral("New connection check triggered"); connectDevices(); }); @@ -191,9 +187,7 @@ int Spotlight::connectDevices() if (!scanSubDevice.deviceReadable || (requiresWriteAccess && !scanSubDevice.deviceWritable)) { - logWarn(device) << i18n("Sub-device not accessible: %1 (%2:%3) %4", - dc->deviceName(), hexId(dev.id.vendorId), - hexId(dev.id.productId), scanSubDevice.deviceFile); + qCWarning(PROJECTEUR_DEVICE_LOG).noquote() << QStringLiteral("Sub-device not accessible: %1 (%2:%3) %4").arg(dc->deviceName()).arg(hexId(dev.id.vendorId)).arg(hexId(dev.id.productId)).arg(scanSubDevice.deviceFile); QTimer::singleShot( 0, this, [this, name = dc->deviceName(), path = scanSubDevice.deviceFile]() { @@ -333,16 +327,13 @@ int Spotlight::connectDevices() { QTimer::singleShot(0, this, [this, id = dev.id, devName = dc->deviceName(), anyConnectedBefore](){ - logInfo(device) << i18n("Connected device: %1 (%2:%3)", - devName, hexId(id.vendorId), hexId(id.productId)); + qCInfo(PROJECTEUR_DEVICE_LOG).noquote() << QStringLiteral("Connected device: %1 (%2:%3)").arg(devName).arg(hexId(id.vendorId)).arg(hexId(id.productId)); emit deviceConnected(id, devName); if (!anyConnectedBefore) { emit anySpotlightDeviceConnectedChanged(true); } }); } - logDebug(device) << i18n("Connected sub-device: %1 (%2:%3) %4", - dc->deviceName(), hexId(dev.id.vendorId), - hexId(dev.id.productId), scanSubDevice.deviceFile); + qCDebug(PROJECTEUR_DEVICE_LOG).noquote() << QStringLiteral("Connected sub-device: %1 (%2:%3) %4").arg(dc->deviceName()).arg(hexId(dev.id.vendorId)).arg(hexId(dev.id.productId)).arg(scanSubDevice.deviceFile); emit subDeviceConnected(dev.id, dc->deviceName(), scanSubDevice.deviceFile); } @@ -370,9 +361,7 @@ void Spotlight::removeDeviceConnection(const QString &devicePath) if (dc->subDeviceCount() == 0) { - logInfo(device) << i18n("Disconnected device: %1 (%2:%3)", - dc->deviceName(), hexId(dc_it->first.vendorId), - hexId(dc_it->first.productId)); + qCInfo(PROJECTEUR_DEVICE_LOG).noquote() << QStringLiteral("Disconnected device: %1 (%2:%3)").arg(dc->deviceName()).arg(hexId(dc_it->first.vendorId)).arg(hexId(dc_it->first.productId)); emit deviceDisconnected(dc_it->first, dc->deviceName()); dc_it = m_deviceConnections.erase(dc_it); } @@ -459,8 +448,8 @@ void Spotlight::onEventDataAvailable(int fd, SubEventConnection& connection) } else if (buf.pos() >= buf.size()) { // No idea if this will ever happen, but log it to make sure we get notified. - logWarning(device) << i18np("Discarded one input event without EV_SYN.", - "Discarded %1 input events without EV_SYN.", buf.size()); + qCWarning(PROJECTEUR_DEVICE_LOG).noquote() << "Discarded" << buf.size() + << "input events without EV_SYN."; connection.inputMapper()->resetState(); buf.reset(); } @@ -590,7 +579,7 @@ bool Spotlight::setupDevEventInotify() { fd = inotify_init(); if (fd == -1) { - logError(device) << i18n("inotify_init() failed. Detection of new attached devices will not work."); + qCCritical(PROJECTEUR_DEVICE_LOG).noquote() << QStringLiteral("inotify_init() failed. Detection of new attached devices will not work."); return false; } } @@ -598,7 +587,7 @@ bool Spotlight::setupDevEventInotify() const int wd = inotify_add_watch(fd, "/dev/input", IN_CREATE | IN_DELETE); if (wd < 0) { - logError(device) << i18n("inotify_add_watch for /dev/input returned with failure."); + qCCritical(PROJECTEUR_DEVICE_LOG).noquote() << QStringLiteral("inotify_add_watch for /dev/input returned with failure."); return false; } diff --git a/src/virtualdevice.cc b/src/virtualdevice.cc index a6156c90..6f6455b1 100644 --- a/src/virtualdevice.cc +++ b/src/virtualdevice.cc @@ -3,9 +3,7 @@ #include "virtualdevice.h" -#include "logging.h" - -#include +#include "projecteur_virtual_device_debug.h" #include #include @@ -14,8 +12,6 @@ #include -LOGGING_CATEGORY(virtualdevice, "virtualdevice") - // KEY_MACRO1 is only defined in newer linux versions #ifndef KEY_MACRO1 #define KEY_MACRO1 0x290 @@ -37,8 +33,8 @@ VirtualDevice::~VirtualDevice() { ioctl(m_uinpFd, UI_DEV_DESTROY); ::close(m_uinpFd); - logDebug(virtualdevice) - << i18n("uinput Device Closed (%1; %2)", m_userName, m_deviceName); + qCDebug(PROJECTEUR_VIRTUAL_DEVICE_LOG).noquote() + << QStringLiteral("uinput Device Closed (%1; %2)").arg(m_userName).arg(m_deviceName); } } @@ -53,15 +49,15 @@ std::shared_ptr VirtualDevice::create(Type deviceType, { const QFileInfo fi(location); if (!fi.exists()) { - logWarn(virtualdevice) << i18n("File not found: %1", location); - logWarn(virtualdevice) << i18n("Please check if uinput kernel module is loaded"); + qCWarning(PROJECTEUR_VIRTUAL_DEVICE_LOG).noquote() << QStringLiteral("File not found: %1").arg(location); + qCWarning(PROJECTEUR_VIRTUAL_DEVICE_LOG).noquote() << QStringLiteral("Please check if uinput kernel module is loaded"); return std::shared_ptr(); } const int fd = ::open(location, O_WRONLY | O_NDELAY); if (fd < 0) { - logWarn(virtualdevice) << i18n("Unable to open: %1", location); - logWarn(virtualdevice) << i18n("Please check if current user has write access"); + qCWarning(PROJECTEUR_VIRTUAL_DEVICE_LOG).noquote() << QStringLiteral("Unable to open: %1").arg(location); + qCWarning(PROJECTEUR_VIRTUAL_DEVICE_LOG).noquote() << QStringLiteral("Please check if current user has write access"); return std::shared_ptr(); } @@ -109,15 +105,14 @@ std::shared_ptr VirtualDevice::create(Type deviceType, if ((bytesWritten != sizeof(uinp)) || (ioctl(fd, UI_DEV_CREATE))) { ::close(fd); - logWarn(virtualdevice) << i18n("Unable to create Virtual (UINPUT) device."); + qCWarning(PROJECTEUR_VIRTUAL_DEVICE_LOG).noquote() << QStringLiteral("Unable to create Virtual (UINPUT) device."); return std::unique_ptr(); } // Log the device name char sysfs_device_name[16]{}; ioctl(fd, UI_GET_SYSNAME(sizeof(sysfs_device_name)), sysfs_device_name); - logInfo(virtualdevice) << i18n("Created uinput device: %1", - QString("%1; /sys/devices/virtual/input/%2") + qCInfo(PROJECTEUR_VIRTUAL_DEVICE_LOG).noquote() << QStringLiteral("Created uinput device: %1").arg(QString("%1; /sys/devices/virtual/input/%2") .arg(name, sysfs_device_name)); return std::make_shared(Token{}, fd, name, sysfs_device_name); @@ -131,7 +126,7 @@ void VirtualDevice::emitEvents(const struct input_event input_events[], size_t n if (const ssize_t sz = sizeof(input_event) * num) { const auto bytesWritten = write(m_uinpFd, input_events, sz); if (bytesWritten != sz) { - logError(virtualdevice) << i18n("Error while writing to virtual device."); + qCCritical(PROJECTEUR_VIRTUAL_DEVICE_LOG).noquote() << QStringLiteral("Error while writing to virtual device."); } } } From ef21d3b54e9cc0e08dea4aa32cc7fdede5d1948b Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Tue, 28 Jul 2026 12:21:49 -0500 Subject: [PATCH 45/67] Color code the minutes / seconds on the badge --- plasma/CMakeLists.txt | 1 + plasma/qml/CompactRepresentation.qml | 109 +++++++++++++++++++++++++++ plasma/qml/main.qml | 7 ++ 3 files changed, 117 insertions(+) create mode 100644 plasma/qml/CompactRepresentation.qml diff --git a/plasma/CMakeLists.txt b/plasma/CMakeLists.txt index 7e6a1cad..2f9a25b5 100644 --- a/plasma/CMakeLists.txt +++ b/plasma/CMakeLists.txt @@ -9,6 +9,7 @@ qt_add_dbus_interface(PROJECTEUR_DBUS_INTERFACE_SOURCES plasma_add_applet(org.projecteur.Projecteur QML_SOURCES + qml/CompactRepresentation.qml qml/main.qml qml/FullRepresentation.qml CPP_SOURCES diff --git a/plasma/qml/CompactRepresentation.qml b/plasma/qml/CompactRepresentation.qml new file mode 100644 index 00000000..cd835179 --- /dev/null +++ b/plasma/qml/CompactRepresentation.qml @@ -0,0 +1,109 @@ +// This file is part of Projecteur - https://github.com/jahnf/projecteur +// - See LICENSE.md and README.md + +pragma ComponentBehavior: Bound + +import QtQuick +import QtQuick.Layouts +import org.kde.kirigami as Kirigami +import org.kde.plasma.core as PlasmaCore +import org.kde.plasma.plasmoid + +Kirigami.Icon { + id: compact + + required property var backend + required property PlasmoidItem plasmoidItem + + readonly property bool timerUrgent: backend + && backend.timerState === "running" + && backend.timerRemainingSeconds < 60 + readonly property bool timerWarning: backend + && backend.timerState === "running" + && backend.timerRemainingSeconds <= 5 * 60 + readonly property color badgeAccentColor: { + if (backend && (backend.timerState === "completed" || compact.timerUrgent)) + return Kirigami.Theme.negativeTextColor; + if (compact.timerWarning) + return Kirigami.Theme.neutralTextColor; + return Kirigami.Theme.activeTextColor; + } + + Layout.minimumWidth: { + if (Plasmoid.formFactor === PlasmaCore.Types.Horizontal) + return height; + return 0; + } + Layout.minimumHeight: { + if (Plasmoid.formFactor === PlasmaCore.Types.Vertical) + return width; + return 0; + } + + source: Plasmoid.icon || "projecteur" + active: pointerArea.containsMouse + activeFocusOnTab: true + + Accessible.name: Plasmoid.title + Accessible.description: plasmoidItem.toolTipSubText + Accessible.role: Accessible.Button + + Keys.onPressed: event => { + switch (event.key) { + case Qt.Key_Space: + case Qt.Key_Enter: + case Qt.Key_Return: + case Qt.Key_Select: + Plasmoid.activated(); + event.accepted = true; + break; + } + } + + MouseArea { + id: pointerArea + + property bool wasExpanded: false + + anchors.fill: parent + acceptedButtons: Qt.LeftButton | Qt.MiddleButton + hoverEnabled: true + + onPressed: wasExpanded = compact.plasmoidItem.expanded + onClicked: mouse => { + if (mouse.button === Qt.MiddleButton) + Plasmoid.secondaryActivated(); + else + compact.plasmoidItem.expanded = !wasExpanded; + } + } + + Rectangle { + id: timerBadge + + readonly property int badgePadding: Math.max(2, Math.round(Kirigami.Units.smallSpacing / 2)) + + visible: compact.plasmoidItem.badgeText.length > 0 + z: 1 + x: width >= compact.width ? (compact.width - width) / 2 : compact.width - width + y: compact.height - height + implicitWidth: Math.max(implicitHeight, badgeLabel.implicitWidth + badgePadding * 2) + implicitHeight: badgeLabel.implicitHeight + 2 + radius: height / 2 + color: Kirigami.ColorUtils.tintWithAlpha( + Kirigami.Theme.backgroundColor, compact.badgeAccentColor, 0.35) + border.width: 1 + border.color: compact.badgeAccentColor + + Text { + id: badgeLabel + + anchors.centerIn: parent + text: compact.plasmoidItem.badgeText + color: Kirigami.Theme.textColor + font.family: Kirigami.Theme.smallFont.family + font.pointSize: Kirigami.Theme.smallFont.pointSize + font.bold: true + } + } +} diff --git a/plasma/qml/main.qml b/plasma/qml/main.qml index 5d879391..dcd1c29f 100644 --- a/plasma/qml/main.qml +++ b/plasma/qml/main.qml @@ -1,6 +1,8 @@ // This file is part of Projecteur - https://github.com/jahnf/projecteur // - See LICENSE.md and README.md +pragma ComponentBehavior: Bound + import QtQuick import org.kde.plasma.core as PlasmaCore import org.kde.plasma.plasmoid @@ -73,6 +75,11 @@ PlasmoidItem { } Plasmoid.onActivated: root.expanded = !root.expanded + compactRepresentation: CompactRepresentation { + backend: root.backend + plasmoidItem: root + } + Plasmoid.contextualActions: [ PlasmaCore.Action { text: i18n("About Projecteur") From 4f981d7726cb81f88613e8ea583cc2dcbfac5abd Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Tue, 28 Jul 2026 12:23:33 -0500 Subject: [PATCH 46/67] updates the readme for hte color coded badges --- README.md | 2 +- doc/screenshot-applet-timer-countdown.png | Bin 42652 -> 67182 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fb4a1689..f2e5e03d 100644 --- a/README.md +++ b/README.md @@ -140,7 +140,7 @@ While the timer runs, the panel icon displays the remaining minutes and its tooltip shows the precise countdown. When time expires, compatible presenters such as the Logitech Spotlight 2 provide configurable haptic feedback. -[Projecteur panel icon and tooltip showing 14 minutes remaining](./doc/screenshot-applet-timer-countdown.png) +[Projecteur panel icon with a highlighted five-minute badge and tooltip showing 04:27 remaining](./doc/screenshot-applet-timer-countdown.png) ## Supported Environments diff --git a/doc/screenshot-applet-timer-countdown.png b/doc/screenshot-applet-timer-countdown.png index 5133bf760c0f20d43b72d7b8b74d3ce5feedb966..100609891eeebbc41cb42f22005d11d390896a50 100644 GIT binary patch literal 67182 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 a*`5ovC&MP6{955Zb7#(f^{Bsb+y4P-;q2}J literal 42652 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 Ut>Ejv*mwNt)NqtnC)H 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⁣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 From 32e65f4dee07e8fe48967f8f1129d28684619983 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Tue, 28 Jul 2026 13:02:13 -0500 Subject: [PATCH 47/67] better fractional zoom support --- qml/main.qml | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/qml/main.qml b/qml/main.qml index 0203251b..3c2d195b 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -18,6 +18,11 @@ Window { color: "transparent" readonly property double diagonal: Math.sqrt(Math.pow(Math.max(width, height),2)*2) + readonly property real deviceScale: screen ? screen.devicePixelRatio : 1.0 + + function snapToDevicePixel(value) { + return Math.round(value * deviceScale) / deviceScale + } Item { id: rotationItem @@ -38,20 +43,35 @@ Window { Utils.Image { id: desktopImage - smooth: rotation == 0 ? false : true + smooth: rotation != 0 || mainWindow.deviceScale != 1.0 rotation: -rotationItem.rotation readonly property real xOffset: Math.floor(parent.width/2.0 + ((rotationItem.width-mainWindow.width)/2)) readonly property real yOffset: Math.floor(parent.height/2.0 + ((rotationItem.height-mainWindow.height)/2)) - x: -ma.mouseX + xOffset - y: -ma.mouseY + yOffset + readonly property real rawX: -ma.mouseX + xOffset + readonly property real rawY: -ma.mouseY + yOffset + readonly property real sampleScaleX: desktopTexture.textureSize.width / parent.width + readonly property real sampleScaleY: desktopTexture.textureSize.height / parent.height + x: rotation == 0 ? Math.round(rawX * sampleScaleX) / sampleScaleX : rawX + y: rotation == 0 ? Math.round(rawY * sampleScaleY) / sampleScaleY : rawY width: mainWindow.width; height: mainWindow.height } } + ShaderEffectSource { + id: desktopTexture + anchors.fill: centerRect + visible: false + sourceItem: desktopItem + smooth: true + textureSize: Qt.size( + Math.max(1, Math.round(desktopItem.width)), + Math.max(1, Math.round(desktopItem.height))) + } + MultiEffect { visible: Settings.zoomEnabled && mainWindow.spotOnCurrentWindow anchors.fill: centerRect - source: desktopItem + source: desktopTexture maskEnabled: true maskSource: spotShapeLoader enabled: false @@ -90,8 +110,8 @@ Window { opacity: Settings.shadeOpacity height: spotSize > 50 ? Math.min(spotSize, mainWindow.height) : 50 width: height - x: ma.posX - width/2 - y: ma.posY - height/2 + x: mainWindow.snapToDevicePixel(ma.posX - width/2) + y: mainWindow.snapToDevicePixel(ma.posY - height/2) color: Settings.shadeColor visible: false enabled: false From bb7415d71f8ddc72b815fdd10e1c72235218fb69 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Tue, 28 Jul 2026 13:30:27 -0500 Subject: [PATCH 48/67] Now uses stream protocol with a small 0 copy crop. --- CMakeLists.txt | 15 +++- README.md | 29 +++----- cmake/templates/projecteur.desktop.in | 1 + packaging/arch/PKGBUILD | 2 + protocols/zkde-screencast-unstable-v1.xml | 78 ++++++++++++++++++++ qml/main.qml | 49 +++++++++++-- src/kwinscreencast.cc | 88 +++++++++++++++++++++++ src/kwinscreencast.h | 59 +++++++++++++++ src/linuxdesktop.cc | 9 +++ src/linuxdesktop.h | 3 + src/projecteurapp.cc | 15 +++- 11 files changed, 321 insertions(+), 27 deletions(-) create mode 100644 protocols/zkde-screencast-unstable-v1.xml create mode 100644 src/kwinscreencast.cc create mode 100644 src/kwinscreencast.h diff --git a/CMakeLists.txt b/CMakeLists.txt index d6e4ae76..aa34d5ed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,7 @@ endif() set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") -project(Projecteur LANGUAGES CXX) +project(Projecteur LANGUAGES C CXX) add_compile_options(-Wall -Wextra -Werror) #set(CMAKE_CXX_CLANG_TIDY clang-tidy-12) @@ -17,6 +17,7 @@ find_package(ECM 6.7 REQUIRED NO_MODULE) list(APPEND CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) include(KDEInstallDirs6) include(ECMQtDeclareLoggingCategory) +find_package(QtWaylandScanner REQUIRED) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules") include(GitVersion) @@ -25,9 +26,10 @@ set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) -find_package(Qt6 6.11 REQUIRED COMPONENTS Core DBus Gui Quick Widgets) +find_package(Qt6 6.11 REQUIRED COMPONENTS Core DBus Gui Quick WaylandClient Widgets) find_package(KF6 6.7 REQUIRED COMPONENTS Config ConfigWidgets CoreAddons DBusAddons GlobalAccel I18n Notifications Package KirigamiPlatform WidgetsAddons WindowSystem XmlGui) +find_package(KPipeWire 6.7 REQUIRED) find_package(Plasma 6.7 REQUIRED) find_package(LayerShellQt 6.7 REQUIRED) message(STATUS "Using Qt version: ${Qt6_VERSION}") @@ -46,6 +48,7 @@ add_executable(projecteur src/deviceswidget.cc src/deviceswidget.h src/hidpp.cc src/hidpp.h src/linuxdesktop.cc src/linuxdesktop.h + src/kwinscreencast.cc src/kwinscreencast.h src/iconwidgets.cc src/iconwidgets.h src/imageitem.cc src/imageitem.h src/inputmapconfig.cc src/inputmapconfig.h @@ -61,6 +64,11 @@ add_executable(projecteur src/virtualdevice.cc src/virtualdevice.h ${RESOURCES}) +ecm_add_qtwayland_client_protocol(projecteur + PROTOCOL "${CMAKE_CURRENT_SOURCE_DIR}/protocols/zkde-screencast-unstable-v1.xml" + BASENAME zkde-screencast-unstable-v1 +) + ecm_qt_declare_logging_category(projecteur HEADER projecteur_main_debug.h IDENTIFIER PROJECTEUR_MAIN_LOG @@ -155,7 +163,8 @@ kconfig_target_kcfg_file(projecteur target_include_directories(projecteur PRIVATE src "${CMAKE_CURRENT_BINARY_DIR}") target_link_libraries(projecteur - PRIVATE Qt6::Core Qt6::DBus Qt6::Quick Qt6::Widgets + PRIVATE Qt6::Core Qt6::DBus Qt6::Quick Qt6::WaylandClient Qt6::Widgets + K::KPipeWire KF6::ConfigCore KF6::ConfigGui KF6::ConfigWidgets KF6::CoreAddons KF6::DBusAddons KF6::GlobalAccel KF6::I18n KF6::Notifications KF6::WidgetsAddons KF6::WindowSystem KF6::XmlGui diff --git a/README.md b/README.md index f2e5e03d..56a2a90d 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,6 @@ So here it is: a Linux application for the Logitech Spotlight. - [Troubleshooting](#troubleshooting) - [Opaque Spotlight / No Transparency](#opaque-spotlight--no-transparency) - [Missing System Tray](#missing-system-tray) - - [Zoom is not updated while spotlight is shown](#zoom-is-not-updated-while-spotlight-is-shown) - [Wayland](#wayland) - [Wayland Zoom](#wayland-zoom) - [Device shows as not connected](#device-shows-as-not-connected) @@ -146,7 +145,7 @@ such as the Logitech Spotlight 2 provide configurable haptic feedback. This port targets KDE Plasma 6.7 on Wayland with Qt 6.11. X11 and Qt 5 are not supported. The spotlight overlay and device features are Wayland-native; zoom uses -KWin's restricted `org.kde.KWin.ScreenShot2` interface. +KWin's restricted screencast protocol and KPipeWire. If you build the application yourself, install both the generated desktop entry and udev rules (see [pre-requisites](#pre-requisites)). @@ -253,10 +252,10 @@ only for dependency installation and the final `pacman -U`. It stops a running Projecteur instance, compiles, packages and installs the current tree, then restarts `plasma-plasmashell.service` and Projecteur. -Installing is required for zoom: KWin authorizes the screenshot interface by matching -the running executable with the installed `org.projecteur.Projecteur.desktop` metadata. A binary run -directly from the build directory can use the normal spotlight, but KWin will reject -its zoom capture request. +Installing is required for zoom: KWin authorizes the screencast and screenshot +interfaces by matching the running executable with the installed +`org.projecteur.Projecteur.desktop` metadata. A binary run directly from the build +directory can use the normal spotlight, but KWin will reject its zoom capture request. ## Installation/Running @@ -410,16 +409,6 @@ See [Command Line Interface](#command-line-interface). There is also a command line option (`-m`) to prevent the preferences dialog from hiding, allowing it only to minimize - behaving more like a regular application window. -#### Zoom is not updated while spotlight is shown - -Zoom does not update while spotlight is shown due to how the zoom currently works. A screenshot is -taken shortly before the overlay window is shown, and then a magnified section is shown wherever -the mouse/spotlight is. -If the zoom would be updated while the overlay window is shown, the overlay window it self would -show up in the magnified section. That is a general problem that other magnifier tools also face, -although they get around the problem by showing the magnified content rectangle always in the -same position on the screen. - #### Wayland Wayland is the only supported windowing platform in this port. Do not force @@ -427,9 +416,11 @@ Wayland is the only supported windowing platform in this port. Do not force #### Wayland Zoom -Zoom is implemented for KDE Plasma through KWin's `ScreenShot2` DBus interface. The -installed desktop entry declares the required restricted interface. If the log says -the process is not authorized to take a screenshot, install Projecteur instead of +Zoom is implemented for KDE Plasma through KWin's private screencast protocol and +KPipeWire. KWin omits Projecteur's own windows from the stream, preventing recursive +overlay capture while allowing videos and other changing content to remain live. +`ScreenShot2` remains as a fallback when streaming is unavailable. The installed +desktop entry declares both restricted interfaces; install Projecteur instead of running it from an arbitrary build path. #### Device shows as not connected diff --git a/cmake/templates/projecteur.desktop.in b/cmake/templates/projecteur.desktop.in index e7cac718..ae3da7a9 100644 --- a/cmake/templates/projecteur.desktop.in +++ b/cmake/templates/projecteur.desktop.in @@ -9,3 +9,4 @@ StartupNotify=false DBusActivatable=true Categories=Office;Presentation; X-KDE-DBUS-Restricted-Interfaces=org.kde.KWin.ScreenShot2 +X-KDE-Wayland-Interfaces=zkde_screencast_unstable_v1 diff --git a/packaging/arch/PKGBUILD b/packaging/arch/PKGBUILD index 6a9c9209..83377b2e 100644 --- a/packaging/arch/PKGBUILD +++ b/packaging/arch/PKGBUILD @@ -19,6 +19,7 @@ depends=( 'kdbusaddons>=6.7' 'kglobalaccel>=6.7' 'ki18n>=6.7' + 'kpipewire>=6.7' 'knotifications>=6.7' 'kwidgetsaddons>=6.7' 'kwindowsystem>=6.7' @@ -28,6 +29,7 @@ depends=( 'libglvnd' 'qt6-base>=6.11' 'qt6-declarative>=6.11' + 'qt6-wayland>=6.11' ) makedepends=( 'cmake>=3.20' diff --git a/protocols/zkde-screencast-unstable-v1.xml b/protocols/zkde-screencast-unstable-v1.xml new file mode 100644 index 00000000..2e6be64b --- /dev/null +++ b/protocols/zkde-screencast-unstable-v1.xml @@ -0,0 +1,78 @@ + + + + + SPDX-License-Identifier: LGPL-2.1-or-later + ]]> + + + + This protocol is a Plasma implementation detail. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/qml/main.qml b/qml/main.qml index 3c2d195b..8295c625 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -2,6 +2,7 @@ import QtQuick import QtQuick.Effects import QtQuick.Window +import org.kde.pipewire as KPipeWire import Projecteur.Utils 1.0 as Utils @@ -10,6 +11,7 @@ Window { property var screenId: -1 readonly property bool spotOnCurrentWindow: ProjecteurApp.currentSpotScreen === screenId property alias desktopPixmap: desktopImage.pixmap + property var desktopStream: null width: 300; height: 200 @@ -41,9 +43,8 @@ Window { scale: Settings.zoomFactor width: centerRect.width / scale; height: centerRect.height / scale - Utils.Image { - id: desktopImage - smooth: rotation != 0 || mainWindow.deviceScale != 1.0 + Item { + id: desktopSource rotation: -rotationItem.rotation readonly property real xOffset: Math.floor(parent.width/2.0 + ((rotationItem.width-mainWindow.width)/2)) readonly property real yOffset: Math.floor(parent.height/2.0 + ((rotationItem.height-mainWindow.height)/2)) @@ -54,14 +55,54 @@ Window { x: rotation == 0 ? Math.round(rawX * sampleScaleX) / sampleScaleX : rawX y: rotation == 0 ? Math.round(rawY * sampleScaleY) / sampleScaleY : rawY width: mainWindow.width; height: mainWindow.height + + Utils.Image { + id: desktopImage + anchors.fill: parent + smooth: desktopSource.rotation != 0 || mainWindow.deviceScale != 1.0 + visible: !desktopStreamItem.ready + } + + ShaderEffectSource { + anchors.fill: parent + sourceItem: desktopStreamItem + sourceRect: Qt.rect(0, 0, + desktopStreamItem.width, + desktopStreamItem.height) + live: true + smooth: true + visible: desktopStreamItem.ready + } } } + KPipeWire.PipeWireSourceItem { + id: desktopStreamItem + visible: true + enabled: false + width: mainWindow.width + height: mainWindow.height + nodeId: mainWindow.desktopStream + ? mainWindow.desktopStream.nodeId : 0 + allowDmaBuf: true + } + ShaderEffectSource { id: desktopTexture + readonly property bool useDirectStream: desktopStreamItem.ready anchors.fill: centerRect visible: false - sourceItem: desktopItem + sourceItem: useDirectStream ? desktopStreamItem : desktopItem + hideSource: useDirectStream + sourceRect: useDirectStream + ? Qt.rect( + mainWindow.snapToDevicePixel( + centerRect.x + centerRect.width / 2 - desktopItem.width / 2), + mainWindow.snapToDevicePixel( + centerRect.y + centerRect.height / 2 - desktopItem.height / 2), + desktopItem.width, + desktopItem.height) + : Qt.rect(0, 0, desktopItem.width, desktopItem.height) smooth: true textureSize: Qt.size( Math.max(1, Math.round(desktopItem.width)), diff --git a/src/kwinscreencast.cc b/src/kwinscreencast.cc new file mode 100644 index 00000000..dc45cbb1 --- /dev/null +++ b/src/kwinscreencast.cc @@ -0,0 +1,88 @@ +// This file is part of Projecteur - https://github.com/jahnf/projecteur +// - See LICENSE.md and README.md + +#include "kwinscreencast.h" + +#include "projecteur_desktop_debug.h" + +#include + +KWinScreencastStream::KWinScreencastStream( + struct ::zkde_screencast_stream_unstable_v1* stream, QObject* parent) + : QObject(parent) + , QtWayland::zkde_screencast_stream_unstable_v1(stream) +{ +} + +KWinScreencastStream::~KWinScreencastStream() +{ + if (isInitialized()) { + close(); + } +} + +void KWinScreencastStream::zkde_screencast_stream_unstable_v1_closed() +{ + if (isInitialized()) { + close(); + } + emit closed(); +} + +void KWinScreencastStream::zkde_screencast_stream_unstable_v1_created(uint32_t node) +{ + if (m_nodeId == node) { + return; + } + m_nodeId = node; + emit nodeIdChanged(); +} + +void KWinScreencastStream::zkde_screencast_stream_unstable_v1_failed( + const QString& error) +{ + m_error = error; + emit errorChanged(); + qCWarning(PROJECTEUR_DESKTOP_LOG).noquote() + << QStringLiteral("KWin screencast failed: %1").arg(error); +} + +void KWinScreencastStream::zkde_screencast_stream_unstable_v1_serial( + uint32_t objectSerialHi, uint32_t objectSerialLow) +{ + const quint64 serial = (quint64(objectSerialHi) << 32) | objectSerialLow; + if (m_objectSerial == serial) { + return; + } + m_objectSerial = serial; + emit objectSerialChanged(); +} + +KWinScreencast::KWinScreencast(QObject* parent) + : QWaylandClientExtensionTemplate(6) +{ + setParent(parent); +} + +KWinScreencast::~KWinScreencast() +{ + if (isInitialized()) { + destroy(); + } +} + +KWinScreencastStream* KWinScreencast::streamScreen(QScreen* screen, QObject* parent) +{ + if (!isActive() || !screen) { + return nullptr; + } + + const QRect geometry = screen->geometry(); + auto* const stream = QtWayland::zkde_screencast_unstable_v1::stream_region( + geometry.x(), geometry.y(), geometry.width(), geometry.height(), + 0, pointer_hidden); + if (!stream) { + return nullptr; + } + return new KWinScreencastStream(stream, parent); +} diff --git a/src/kwinscreencast.h b/src/kwinscreencast.h new file mode 100644 index 00000000..d4e86229 --- /dev/null +++ b/src/kwinscreencast.h @@ -0,0 +1,59 @@ +// This file is part of Projecteur - https://github.com/jahnf/projecteur +// - See LICENSE.md and README.md +#pragma once + +#include "qwayland-zkde-screencast-unstable-v1.h" + +#include + +class QScreen; + +class KWinScreencastStream final + : public QObject + , public QtWayland::zkde_screencast_stream_unstable_v1 +{ + Q_OBJECT + Q_PROPERTY(quint64 objectSerial READ objectSerial NOTIFY objectSerialChanged) + Q_PROPERTY(uint nodeId READ nodeId NOTIFY nodeIdChanged) + Q_PROPERTY(QString error READ error NOTIFY errorChanged) + +public: + explicit KWinScreencastStream( + struct ::zkde_screencast_stream_unstable_v1* stream, + QObject* parent = nullptr); + ~KWinScreencastStream() override; + + quint64 objectSerial() const { return m_objectSerial; } + uint nodeId() const { return m_nodeId; } + QString error() const { return m_error; } + +signals: + void objectSerialChanged(); + void nodeIdChanged(); + void errorChanged(); + void closed(); + +private: + void zkde_screencast_stream_unstable_v1_closed() override; + void zkde_screencast_stream_unstable_v1_created(uint32_t node) override; + void zkde_screencast_stream_unstable_v1_failed(const QString& error) override; + void zkde_screencast_stream_unstable_v1_serial( + uint32_t objectSerialHi, uint32_t objectSerialLow) override; + + quint64 m_objectSerial = 0; + uint m_nodeId = 0; + QString m_error; +}; + +class KWinScreencast final + : public QWaylandClientExtensionTemplate + , public QtWayland::zkde_screencast_unstable_v1 +{ + Q_OBJECT + +public: + explicit KWinScreencast(QObject* parent = nullptr); + ~KWinScreencast() override; + + KWinScreencastStream* streamScreen(QScreen* screen, QObject* parent = nullptr); +}; diff --git a/src/linuxdesktop.cc b/src/linuxdesktop.cc index 9cf6bece..d63c2a5f 100644 --- a/src/linuxdesktop.cc +++ b/src/linuxdesktop.cc @@ -3,6 +3,7 @@ #include "linuxdesktop.h" +#include "kwinscreencast.h" #include "projecteur_desktop_debug.h" #include @@ -122,6 +123,9 @@ LinuxDesktop::LinuxDesktop(QObject* parent) m_wayland = QGuiApplication::platformName().startsWith(QStringLiteral("wayland"), Qt::CaseInsensitive); + if (m_wayland && m_type == LinuxDesktop::Type::KDE) { + m_screencast = new KWinScreencast(this); + } } LinuxDesktop::~LinuxDesktop() @@ -145,6 +149,11 @@ QPixmap LinuxDesktop::grabScreen(QScreen* screen) const return grabScreenKWin(screen); } +QObject* LinuxDesktop::streamScreen(QScreen* screen, QObject* parent) +{ + return m_screencast ? m_screencast->streamScreen(screen, parent) : nullptr; +} + void LinuxDesktop::setShakeCursorEffectSuppressed(bool suppressed) { if (!isWayland() || type() != LinuxDesktop::Type::KDE diff --git a/src/linuxdesktop.h b/src/linuxdesktop.h index ba79897a..19144ff2 100644 --- a/src/linuxdesktop.h +++ b/src/linuxdesktop.h @@ -5,6 +5,7 @@ #include #include +class KWinScreencast; class QScreen; class LinuxDesktop : public QObject @@ -21,10 +22,12 @@ class LinuxDesktop : public QObject Type type() const { return m_type; }; QPixmap grabScreen(QScreen* screen) const; + QObject* streamScreen(QScreen* screen, QObject* parent = nullptr); void setShakeCursorEffectSuppressed(bool suppressed); private: bool m_wayland = false; Type m_type = Type::Other; bool m_shakeCursorEffectSuppressed = false; + KWinScreencast* m_screencast = nullptr; }; diff --git a/src/projecteurapp.cc b/src/projecteurapp.cc index ae1ed501..b81d52a4 100644 --- a/src/projecteurapp.cc +++ b/src/projecteurapp.cc @@ -221,7 +221,15 @@ void ProjecteurApplication::setupSpotlight() if (window->screen()) { if (m_settings->zoomEnabled()) { - window->setProperty("desktopPixmap", m_linuxDesktop->grabScreen(window->screen())); + auto* stream = window->property("desktopStream").value(); + if (!stream) { + stream = m_linuxDesktop->streamScreen(window->screen(), window); + window->setProperty("desktopStream", QVariant::fromValue(stream)); + } + if (!stream) { + window->setProperty("desktopPixmap", + m_linuxDesktop->grabScreen(window->screen())); + } } const auto screenGeometry = window->screen()->geometry(); @@ -246,6 +254,11 @@ void ProjecteurApplication::setupSpotlight() QTimer::singleShot(200, window, [this, window]() { if (!m_spotlight->spotActive()) { window->hide(); + auto* const stream = window->property("desktopStream").value(); + window->setProperty("desktopStream", QVariant::fromValue(nullptr)); + if (stream) { + stream->deleteLater(); + } } }); } From 0ff70635543b3027b969440613b44845433d26fa Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Tue, 28 Jul 2026 13:34:57 -0500 Subject: [PATCH 49/67] remove the actication artificial lag --- qml/main.qml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/qml/main.qml b/qml/main.qml index 8295c625..8df9dbda 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -34,7 +34,12 @@ Window { rotation: Settings.spotRotationAllowed ? Settings.spotRotation : 0 opacity: ProjecteurApp.overlayVisible ? 1.0 : 0.0 - Behavior on opacity { PropertyAnimation { easing.type: Easing.OutQuad } } + Behavior on opacity { + PropertyAnimation { + duration: ProjecteurApp.overlayVisible ? 0 : 180 + easing.type: Easing.OutQuad + } + } Item { id: desktopItem From 76c562be2d19bc583bc42f525f660777de3598ec Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Tue, 28 Jul 2026 13:39:23 -0500 Subject: [PATCH 50/67] more optimizations at click --- qml/main.qml | 2 +- src/projecteurapp.cc | 15 ++++++++---- src/spotlight.cc | 54 +++++++++++++++++++++++++------------------- 3 files changed, 42 insertions(+), 29 deletions(-) diff --git a/qml/main.qml b/qml/main.qml index 8df9dbda..3dcaa3b4 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -83,7 +83,7 @@ Window { KPipeWire.PipeWireSourceItem { id: desktopStreamItem - visible: true + visible: mainWindow.visible enabled: false width: mainWindow.width height: mainWindow.height diff --git a/src/projecteurapp.cc b/src/projecteurapp.cc index b81d52a4..91b3883f 100644 --- a/src/projecteurapp.cc +++ b/src/projecteurapp.cc @@ -222,9 +222,19 @@ void ProjecteurApplication::setupSpotlight() { if (m_settings->zoomEnabled()) { auto* stream = window->property("desktopStream").value(); + const auto streamScreenId = + window->property("desktopStreamScreenId").toULongLong(); + const auto currentScreenId = quint64(window->screen()); + if (stream && streamScreenId != currentScreenId) { + window->setProperty("desktopStream", + QVariant::fromValue(nullptr)); + stream->deleteLater(); + stream = nullptr; + } if (!stream) { stream = m_linuxDesktop->streamScreen(window->screen(), window); window->setProperty("desktopStream", QVariant::fromValue(stream)); + window->setProperty("desktopStreamScreenId", currentScreenId); } if (!stream) { window->setProperty("desktopPixmap", @@ -254,11 +264,6 @@ void ProjecteurApplication::setupSpotlight() QTimer::singleShot(200, window, [this, window]() { if (!m_spotlight->spotActive()) { window->hide(); - auto* const stream = window->property("desktopStream").value(); - window->setProperty("desktopStream", QVariant::fromValue(nullptr)); - if (stream) { - stream->deleteLater(); - } } }); } diff --git a/src/spotlight.cc b/src/spotlight.cc index 7257cad1..895feb1b 100644 --- a/src/spotlight.cc +++ b/src/spotlight.cc @@ -11,6 +11,7 @@ #include "settings.h" #include "virtualdevice.h" +#include #include #include #include @@ -24,8 +25,16 @@ namespace { const auto hexId = formatHexId; - // See details on workaround in onEventDataAvailable - bool workaroundLogitechFirstMoveEvent = true; + QElapsedTimer lastLogitechSlideNavigation; + + bool isLogitechSpotlight(const DeviceId& id) + { + return id.vendorId == 0x46d + && (id.productId == 0xc53e + || id.productId == 0xb503 + || id.productId == 0xc548 + || id.productId == 0xb506); + } } // end anonymous namespace @@ -84,7 +93,6 @@ Spotlight::Spotlight(QObject* parent, Options options, Settings* settings) connect(m_activeTimer, &QTimer::timeout, this, [this](){ setSpotActive(false); - workaroundLogitechFirstMoveEvent = true; }); if (m_options.enableUInput) { @@ -396,10 +404,17 @@ void Spotlight::onEventDataAvailable(int fd, SubEventConnection& connection) } ++buf; - if (ev.type == EV_KEY && ev.value == 1 - && (ev.code == KEY_RIGHT || ev.code == KEY_LEFT - || ev.code == KEY_PAGEDOWN || ev.code == KEY_PAGEUP)) { - emit slideNavigationPressed(); + const bool isSlideNavigationKey = + ev.type == EV_KEY + && (ev.code == KEY_RIGHT || ev.code == KEY_LEFT + || ev.code == KEY_PAGEDOWN || ev.code == KEY_PAGEUP); + if (isSlideNavigationKey) { + if (isLogitechSpotlight(connection.deviceId())) { + lastLogitechSlideNavigation.restart(); + } + if (ev.value == 1) { + emit slideNavigationPressed(); + } } if (ev.type == EV_SYN) @@ -415,22 +430,15 @@ void Spotlight::onEventDataAvailable(int fd, SubEventConnection& connection) // move events via hid++ notifications. It seems that just when releasing the // next or back button sometimes a mouse move event 'leaks' through here as // relative input event causing the spotlight to be activated. - // The workaround skips a first input move event from the logitech spotlight device. - const bool isLogitechSpotlight = connection.deviceId().vendorId == 0x46d - && (connection.deviceId().productId == 0xc53e - || connection.deviceId().productId == 0xb503 - || connection.deviceId().productId == 0xc548 - || connection.deviceId().productId == 0xb506); - const bool logitechIsFirst = isLogitechSpotlight && workaroundLogitechFirstMoveEvent; - - if (isLogitechSpotlight) - { - workaroundLogitechFirstMoveEvent = false; - if(!logitechIsFirst) { - if (!spotActive()) { setSpotActive(true); } - } - } - else if (!m_activeTimer->isActive()) { + // Suppress only moves immediately adjacent to slide navigation; skipping the + // first move after every idle period makes genuine activation feel delayed. + constexpr qint64 leakedMoveSuppressionMs = 250; + const bool suppressLeakedMove = + isLogitechSpotlight(connection.deviceId()) + && lastLogitechSlideNavigation.isValid() + && lastLogitechSlideNavigation.elapsed() < leakedMoveSuppressionMs; + + if (!suppressLeakedMove && !spotActive()) { setSpotActive(true); } From 0e5c72c11386e97e638a56630840d122597eada6 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Tue, 28 Jul 2026 13:49:01 -0500 Subject: [PATCH 51/67] remove even moar latency --- qml/main.qml | 6 ------ src/projecteurapp.cc | 1 - src/spotlight.cc | 1 - 3 files changed, 8 deletions(-) diff --git a/qml/main.qml b/qml/main.qml index 3dcaa3b4..b66ff9ae 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -34,12 +34,6 @@ Window { rotation: Settings.spotRotationAllowed ? Settings.spotRotation : 0 opacity: ProjecteurApp.overlayVisible ? 1.0 : 0.0 - Behavior on opacity { - PropertyAnimation { - duration: ProjecteurApp.overlayVisible ? 0 : 180 - easing.type: Easing.OutQuad - } - } Item { id: desktopItem diff --git a/src/projecteurapp.cc b/src/projecteurapp.cc index 91b3883f..3dcf7cba 100644 --- a/src/projecteurapp.cc +++ b/src/projecteurapp.cc @@ -277,7 +277,6 @@ void ProjecteurApplication::setupSpotlight() }); } -// ------------------------------------------------------------------------------------------------- void ProjecteurApplication::setupControlService(Options const& options) { m_control = new ProjecteurControl(this, m_settings, m_spotlight, m_presentationTimer, diff --git a/src/spotlight.cc b/src/spotlight.cc index 895feb1b..7172903b 100644 --- a/src/spotlight.cc +++ b/src/spotlight.cc @@ -540,7 +540,6 @@ void Spotlight::registerForNotifications(SubHidppConnection* connection) const int adjustedY = getReducedParam(y); if (adjustedX == 0 && adjustedY == 0) { return; } - static const auto scrollHAction = GlobalActions::scrollHorizontal(); scrollHAction->param = -adjustedX; From 2d56504bc15aa6353ee7ce530a45c4e77446c3e9 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Tue, 28 Jul 2026 13:50:36 -0500 Subject: [PATCH 52/67] fixing CI --- .github/workflows/ci-build.yml | 4 ++-- cmake/modules/PkgDependenciesProjecteur.cmake | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 90387d0c..4dacd2cf 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -17,8 +17,8 @@ jobs: run: >- pacman -Syu --noconfirm base-devel cmake extra-cmake-modules gettext git kconfig kconfigwidgets kcoreaddons kdbusaddons - kglobalaccel ki18n knotifications kwidgetsaddons kwindowsystem kxmlgui layer-shell-qt - libplasma qt6-base qt6-declarative + kglobalaccel ki18n knotifications kpipewire kwidgetsaddons kwindowsystem kxmlgui + layer-shell-qt libplasma qt6-base qt6-declarative qt6-wayland - uses: actions/checkout@v4 with: diff --git a/cmake/modules/PkgDependenciesProjecteur.cmake b/cmake/modules/PkgDependenciesProjecteur.cmake index 8f7df68b..7313125b 100644 --- a/cmake/modules/PkgDependenciesProjecteur.cmake +++ b/cmake/modules/PkgDependenciesProjecteur.cmake @@ -1,6 +1,7 @@ list(APPEND _PkgDeps_Projecteur_archlinux "qt6-base>=6.11" "qt6-declarative>=6.11" + "qt6-wayland>=6.11" "layer-shell-qt>=6.7" "kconfig>=6.7" "kconfigwidgets>=6.7" @@ -8,6 +9,7 @@ list(APPEND _PkgDeps_Projecteur_archlinux "kdbusaddons>=6.7" "kglobalaccel>=6.7" "ki18n>=6.7" + "kpipewire>=6.7" "knotifications>=6.7" "kwidgetsaddons>=6.7" "kwindowsystem>=6.7" From f9445f81051ae3b04a26b286af7248a619853901 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Tue, 28 Jul 2026 13:51:49 -0500 Subject: [PATCH 53/67] mentioned the new video pipeline --- README.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 56a2a90d..4c7b140f 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,8 @@ So here it is: a Linux application for the Logitech Spotlight. * Configurable desktop spotlight * _shade color_, _opacity_, _cursor_, _border_, _center dot_ and different _shapes_ - * Zoom (magnifier) functionality + * Live zoom through KWin and KPipeWire, so videos, animations, and other changing + desktop content continue updating inside the magnifier * Multiple screen support * Support of devices beyond the Logitech Spotlight (see [Device Support](#device-support)) * Button mapping: @@ -212,10 +213,11 @@ and Hold Move actions for the same button. * C++17 compiler * CMake 3.20 or later -* Qt 6.11 with Core, DBus, Gui, Quick, and Widgets +* Qt 6.11 with Core, DBus, Gui, Quick, WaylandClient, and Widgets * KDE Plasma 6.7 Wayland, including Libplasma, KConfig, KConfigWidgets, KCoreAddons, KDBusAddons, KGlobalAccel, KI18n, KNotifications, KWidgetsAddons, KWindowSystem, and KXmlGui +* KPipeWire 6.7 * LayerShellQt 6.7 * Extra CMake Modules 6.7 or later @@ -416,9 +418,10 @@ Wayland is the only supported windowing platform in this port. Do not force #### Wayland Zoom -Zoom is implemented for KDE Plasma through KWin's private screencast protocol and -KPipeWire. KWin omits Projecteur's own windows from the stream, preventing recursive -overlay capture while allowing videos and other changing content to remain live. +Zoom uses a low-latency live stream from KWin's private screencast protocol through +KPipeWire instead of repeatedly capturing static screenshots. Videos, animations, +and other changing desktop content therefore continue updating inside the magnifier. +KWin omits Projecteur's own windows from the stream, preventing recursive overlay capture. `ScreenShot2` remains as a fallback when streaming is unavailable. The installed desktop entry declares both restricted interfaces; install Projecteur instead of running it from an arbitrary build path. From 20810995263c0d0ed20df7247c955ecb217bf0d8 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Thu, 30 Jul 2026 15:00:24 -0500 Subject: [PATCH 54/67] improved AA --- qml/main.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qml/main.qml b/qml/main.qml index b66ff9ae..7c37bb9e 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -104,8 +104,8 @@ Window { : Qt.rect(0, 0, desktopItem.width, desktopItem.height) smooth: true textureSize: Qt.size( - Math.max(1, Math.round(desktopItem.width)), - Math.max(1, Math.round(desktopItem.height))) + Math.max(1, Math.round(desktopItem.width * mainWindow.deviceScale)), + Math.max(1, Math.round(desktopItem.height * mainWindow.deviceScale))) } MultiEffect { From efca970625ccffaf6e1de1dd8c394d83bd6ca668 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Thu, 30 Jul 2026 15:35:21 -0500 Subject: [PATCH 55/67] New specialized zoom-modes + doc update --- CMakeLists.txt | 9 +- Justfile | 1 + README.md | 112 ++++++------------ cmake/modules/PkgDependenciesProjecteur.cmake | 2 +- cmake/templates/projecteur.1 | 2 + cmake/templates/projecteur.bash-completion | 7 ++ doc/screenshot-text-zoom.png | Bin 0 -> 126541 bytes doc/screenshot-zoom-modes.png | Bin 0 -> 42694 bytes docker/Dockerfile.archlinux | 1 + packaging/arch/PKGBUILD | 1 + qml/main.qml | 15 ++- qml/shaders/textzoom.frag | 71 +++++++++++ src/preferencesdlg.cc | 22 ++++ src/projecteurconfig.kcfg | 3 + src/projecteurcontrol.cc | 1 + src/settings.cc | 32 +++++ src/settings.h | 5 + 17 files changed, 202 insertions(+), 82 deletions(-) create mode 100644 doc/screenshot-text-zoom.png create mode 100644 doc/screenshot-zoom-modes.png create mode 100644 qml/shaders/textzoom.frag diff --git a/CMakeLists.txt b/CMakeLists.txt index aa34d5ed..34ce54dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,7 @@ set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) -find_package(Qt6 6.11 REQUIRED COMPONENTS Core DBus Gui Quick WaylandClient Widgets) +find_package(Qt6 6.11 REQUIRED COMPONENTS Core DBus Gui Quick ShaderTools WaylandClient Widgets) find_package(KF6 6.7 REQUIRED COMPONENTS Config ConfigWidgets CoreAddons DBusAddons GlobalAccel I18n Notifications Package KirigamiPlatform WidgetsAddons WindowSystem XmlGui) find_package(KPipeWire 6.7 REQUIRED) @@ -64,6 +64,12 @@ add_executable(projecteur src/virtualdevice.cc src/virtualdevice.h ${RESOURCES}) +qt6_add_shaders(projecteur projecteur_shaders + PREFIX "/shaders" + BASE "${CMAKE_CURRENT_SOURCE_DIR}/qml/shaders" + FILES qml/shaders/textzoom.frag +) + ecm_add_qtwayland_client_protocol(projecteur PROTOCOL "${CMAKE_CURRENT_SOURCE_DIR}/protocols/zkde-screencast-unstable-v1.xml" BASENAME zkde-screencast-unstable-v1 @@ -209,6 +215,7 @@ ki18n_install(po) add_custom_target(non-sources SOURCES README.md LICENSE.md doc/CHANGELOG.md devices.conf src/extra-devices.cc.in src/projecteurconfig.kcfg src/org.projecteur.Projecteur.xml + qml/shaders/textzoom.frag 55-projecteur.rules.in projecteur.notifyrc cmake/templates/projecteur.desktop.in) diff --git a/Justfile b/Justfile index e3529741..dcf633bf 100644 --- a/Justfile +++ b/Justfile @@ -137,6 +137,7 @@ deps: _require-arch pacman-contrib qt6-base qt6-declarative + qt6-shadertools ) mapfile -t missing < <(pacman -T "${dependencies[@]}" || true) diff --git a/README.md b/README.md index 4c7b140f..92bc9b9a 100644 --- a/README.md +++ b/README.md @@ -51,12 +51,9 @@ So here it is: a Linux application for the Logitech Spotlight. - [Pre-requisites](#pre-requisites) - [When building Projecteur yourself](#when-building-projecteur-yourself) - [Application Menu](#application-menu) - - [Command Line Interface](#command-line-interface) - - [Scriptability](#scriptability) - [Using Projecteur without a device](#using-projecteur-without-a-device) - [Device Support](#device-support) - [Compile Time](#compile-time) - - [Runtime](#runtime) - [Troubleshooting](#troubleshooting) - [Opaque Spotlight / No Transparency](#opaque-spotlight--no-transparency) - [Missing System Tray](#missing-system-tray) @@ -96,6 +93,19 @@ and an optional border. This example uses a circular zoom area with a green bord [Circular Projecteur spotlight demonstrating zoom, shade, and a green border](./doc/screenshot-spot.png) +#### Text-optimized zoom + +The **Text and UI** content mode applies bounded edge enhancement after smooth +scaling, making documents, email, terminals, and application controls easier to +read without the blockiness of nearest-neighbor enlargement. + +[Projecteur magnifier using Text and UI mode on an email](./doc/screenshot-text-zoom.png) + +Choose the content type independently from the zoom level in the Zoom preferences. +The selected mode is also stored in spotlight presets. + +[Projecteur Zoom preferences showing Smooth, Text and UI, and Pixel-perfect content types](./doc/screenshot-zoom-modes.png) + #### KDE-styled preferences Projecteur uses native KDE controls for configuring the spotlight shape, shade, @@ -299,66 +309,12 @@ Presenter connection, battery, access-error, and presentation-timer notification are registered with Plasma and can be customized under System Settings → Notifications → Applications → Projecteur. -### Command Line Interface - -Additional to the standard `--help` and `--version` options, there is an option to send -commands to a running instance of _Projecteur_ and the ability to set properties. - -```txt -Usage: projecteur [OPTION]... - - - -h, --help Show command line usage. - --help-all Show complete command line usage with all properties. - -v, --version Print application version. - -f, --fullversion Print extended version info. - --cfg FILE Set custom config file. - -d, --device-scan Print device-scan results. - --show-dialog Show preferences dialog on start. - -m, --minimize-only Only allow minimizing the preferences dialog. - -D DEVICE Additional accepted device; DEVICE=vendorId:productId - -c COMMAND|PROPERTY Send command/property to a running instance. - - - spot=[on|off|toggle] Turn spotlight on/off or toggle. - spot.size.adjust=[+|-]N Increase or decrease spot size by N. - settings=[show|hide] Show/hide preferences dialog. - preset=NAME Set a preset. - quit Quit the running instance. -``` - -A complete list the properties that can be set via the command line, can be listed with the -`--help-all` option or can also be found on the man pagers with newer versions of -_Projecteur_ (`man projecteur`). - -### Scriptability - -_Projecteur_ allows you to set almost all aspects of the spotlight via the command line -for a running instance. - -Example: - -```bash -# Set showing the border to true -projecteur -c border=true -# Set the border color to red -projecteur -c border.color=#ff0000 -# Send a vibrate command to the device with -# intensity=128 and length=0 (length only applies to the original Logitech Spotlight) -projecteur -c vibrate=128,0 -``` - Projecteur registers native KDE global actions for toggling the spotlight, showing preferences, controlling the presentation timer, and cycling presets. No key combinations are assigned by default. Configure them on the **Shortcuts** page in Projecteur Preferences or under Plasma System Settings → Keyboard → Shortcuts → Projecteur. -The command line interface remains available for scripts and non-interactive use. - -A complete list the properties that can be set via the command line, can be -listed with the `--help-all` command line option. - ### Using Projecteur without a device You can use _Projecteur_ for online presentations and video conferences without a @@ -384,17 +340,6 @@ Additional devices can be added to `devices.conf`. At CMake configuration time, the project will be configured to support these devices and also create entries for them in the generated udev-rule file. -#### Runtime - -_Projecteur_ will also accept devices as supported when added via the `-D` -command line option. - -Example: `projecteur -D 04b3:310c` - -This will enable devices within _Projecteur_ and the application will try to -connect to that device if it is detected. It is, however, up to the user to make -sure the device is accessible (via udev rules). - ### Troubleshooting #### Opaque Spotlight / No Transparency @@ -404,12 +349,9 @@ The overlay requires the Plasma Wayland compositor. Verify that the session repo #### Missing System Tray -If the Plasma system tray does not show the _Projecteur_ applet, commands can be sent -to the application to bring up the preferences -dialog, test the spotlight, quit the application or set spotlight properties. -See [Command Line Interface](#command-line-interface). There is also a command -line option (`-m`) to prevent the preferences dialog from hiding, allowing it -only to minimize - behaving more like a regular application window. +If the Plasma system tray does not show the _Projecteur_ applet, verify that +Projecteur is running and that its applet is enabled in Plasma's system tray +configuration. #### Wayland @@ -426,14 +368,28 @@ KWin omits Projecteur's own windows from the stream, preventing recursive overla desktop entry declares both restricted interfaces; install Projecteur instead of running it from an arbitrary build path. +The **Content Type** setting controls how the captured desktop pixels are enlarged: + +| Mode | Best for | Scaling behavior | +| --- | --- | --- | +| **Smooth (images)** | Photographs, video, gradients, and mixed content | Bilinear filtering produces continuous tones and the fewest scaling artifacts. This is the safe general-purpose mode. | +| **Text and UI** | Documents, email, terminals, diagrams, and application controls | Starts with smooth scaling, then applies a contrast-adaptive edge enhancement in linear light. The result is clamped to neighboring colors to avoid halos and invented dark or bright pixels. | +| **Pixel-perfect** | Inspecting source pixels, pixel art, and debugging | Nearest-neighbor scaling preserves exact captured pixel values. Text will usually look blocky, especially with fractional zoom factors. | + +Text and UI mode improves the captured raster; it cannot recover the original font +outlines or rerender glyphs as vector text. Smooth remains preferable when the +magnifier covers both text and photographic content. + +The setting is available in **Preferences → Spotlight → Zoom → Content Type** and is +stored in spotlight presets. + #### Device shows as not connected If the device shows as not connected, there are some things you can do: -* Check for devices with _Projecteur_'s command line option `-d` or `--device-scan` option. - This will show you a list of all supported and detected devices and also if - they are readable/writable. If a detected device is not readable/writable, it is an indicator - that there is something wrong with the installed _udev_ rules. +* Use Projecteur's device scan to list supported and detected devices and whether + they are readable and writable. A detected device without the required access + usually indicates a problem with the installed _udev_ rules. * Manually on the shell: Check if the device is detected by the Linux system: Run `cat /proc/bus/input/devices | grep -A 5 "Vendor=046d"` \ This should show one or multiple spotlight devices (among other Logitech devices) diff --git a/cmake/modules/PkgDependenciesProjecteur.cmake b/cmake/modules/PkgDependenciesProjecteur.cmake index 7313125b..cf7bb54a 100644 --- a/cmake/modules/PkgDependenciesProjecteur.cmake +++ b/cmake/modules/PkgDependenciesProjecteur.cmake @@ -20,7 +20,7 @@ list(APPEND _PkgDeps_Projecteur_archlinux list(APPEND _PkgDepsMake_Projecteur_archlinux "fakeroot" "awk" "cmake>=3.20" "extra-cmake-modules>=6.7" "gettext" "make" "lsb-release" - "tar" "pkg-config" + "tar" "pkg-config" "qt6-shadertools>=6.11" ) list(APPEND PkgDependencies_MAP_Projecteur diff --git a/cmake/templates/projecteur.1 b/cmake/templates/projecteur.1 index 297ee441..53ead401 100644 --- a/cmake/templates/projecteur.1 +++ b/cmake/templates/projecteur.1 @@ -110,3 +110,5 @@ border.opacity=[Double] (0 ... 1) zoom=[Bool] (false, true) .TP zoom.factor=[Double] (1.5 ... 20) +.TP +zoom.mode=[Value] (smooth, text, pixel) diff --git a/cmake/templates/projecteur.bash-completion b/cmake/templates/projecteur.bash-completion index 43b683d5..c244bf9d 100644 --- a/cmake/templates/projecteur.bash-completion +++ b/cmake/templates/projecteur.bash-completion @@ -26,6 +26,7 @@ _projecteur() commands="${commands} spot.shape.star.points= spot.shape.star.innerradius= spot.shape.ngon.sides=" commands="${commands} shade= shade.opacity= shade.color= dot= dot.size= dot.color= dot.opacity=" commands="${commands} border= border.size= border.color= border.opacity= zoom= zoom.factor=" + commands="${commands} zoom.mode=" local fl=$(printf '%.1s' "$cur") [ ! "$fl" = "q" ] && compopt -o nospace @@ -85,6 +86,12 @@ _projecteur() COMPREPLY=( $(compgen -W "false true" -- $cur) ) fi ;; + "zoom.mode") + if [ "${prev_prev}" = "=" ] || [ "${cur}" = "=" ]; then + [ "${cur}" = "=" ] && cur="" + COMPREPLY=( $(compgen -W "smooth text pixel" -- $cur) ) + fi + ;; "-D") # TODO: Auto completion for devices (vendorId:productId) COMPREPLY=( $(compgen -W "0123:4567" -- $cur) ) diff --git a/doc/screenshot-text-zoom.png b/doc/screenshot-text-zoom.png new file mode 100644 index 0000000000000000000000000000000000000000..22520deeb1ef78e4d4c794af6d599aee5ad215af GIT binary patch literal 126541 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

8@F7F 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 RaSlIGQ)j$$eDXh2{s#p}AWQ%N literal 0 HcmV?d00001 diff --git a/doc/screenshot-zoom-modes.png b/doc/screenshot-zoom-modes.png new file mode 100644 index 0000000000000000000000000000000000000000..03a825c3dcdad5019b9a1e0068a168cc7f5278d7 GIT binary patch literal 42694 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 HUjLh*g=(bK-gwp3G#VSz~j{+Y9STO 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.20' 'extra-cmake-modules>=6.7' 'gettext' + 'qt6-shadertools>=6.11' ) source=( 'projecteur-local.tar.gz' diff --git a/qml/main.qml b/qml/main.qml index 7c37bb9e..34efc61c 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -102,16 +102,27 @@ Window { desktopItem.width, desktopItem.height) : Qt.rect(0, 0, desktopItem.width, desktopItem.height) - smooth: true + smooth: Settings.zoomMode !== "pixel" textureSize: Qt.size( Math.max(1, Math.round(desktopItem.width * mainWindow.deviceScale)), Math.max(1, Math.round(desktopItem.height * mainWindow.deviceScale))) } + ShaderEffect { + id: textZoom + anchors.fill: centerRect + visible: false + property variant source: desktopTexture + property size outputSize: Qt.size( + Math.max(1, Math.round(width * mainWindow.deviceScale)), + Math.max(1, Math.round(height * mainWindow.deviceScale))) + fragmentShader: "qrc:/shaders/textzoom.frag.qsb" + } + MultiEffect { visible: Settings.zoomEnabled && mainWindow.spotOnCurrentWindow anchors.fill: centerRect - source: desktopTexture + source: Settings.zoomMode === "text" ? textZoom : desktopTexture maskEnabled: true maskSource: spotShapeLoader enabled: false diff --git a/qml/shaders/textzoom.frag b/qml/shaders/textzoom.frag new file mode 100644 index 00000000..edbe9258 --- /dev/null +++ b/qml/shaders/textzoom.frag @@ -0,0 +1,71 @@ +#version 440 + +layout(location = 0) in vec2 qt_TexCoord0; +layout(location = 0) out vec4 fragColor; + +layout(std140, binding = 0) uniform buf { + mat4 qt_Matrix; + float qt_Opacity; + vec2 outputSize; +}; + +layout(binding = 1) uniform sampler2D source; + +vec3 srgbToLinear(vec3 color) +{ + vec3 low = color / 12.92; + vec3 high = pow((color + 0.055) / 1.055, vec3(2.4)); + return mix(low, high, step(vec3(0.04045), color)); +} + +vec3 linearToSrgb(vec3 color) +{ + vec3 low = color * 12.92; + vec3 high = 1.055 * pow(max(color, vec3(0.0)), vec3(1.0 / 2.4)) - 0.055; + return mix(low, high, step(vec3(0.0031308), color)); +} + +vec4 unpremultipliedSample(vec2 position) +{ + vec4 sampleColor = texture(source, position); + if (sampleColor.a > 0.0) { + sampleColor.rgb /= sampleColor.a; + } + return sampleColor; +} + +void main() +{ + vec2 pixelStep = vec2(1.0) / outputSize; + + vec4 centerSample = unpremultipliedSample(qt_TexCoord0); + vec4 northSample = unpremultipliedSample(qt_TexCoord0 - vec2(0.0, pixelStep.y)); + vec4 southSample = unpremultipliedSample(qt_TexCoord0 + vec2(0.0, pixelStep.y)); + vec4 westSample = unpremultipliedSample(qt_TexCoord0 - vec2(pixelStep.x, 0.0)); + vec4 eastSample = unpremultipliedSample(qt_TexCoord0 + vec2(pixelStep.x, 0.0)); + + vec3 center = srgbToLinear(centerSample.rgb); + vec3 north = srgbToLinear(northSample.rgb); + vec3 south = srgbToLinear(southSample.rgb); + vec3 west = srgbToLinear(westSample.rgb); + vec3 east = srgbToLinear(eastSample.rgb); + + vec3 localMinimum = min(center, min(min(north, south), min(west, east))); + vec3 localMaximum = max(center, max(max(north, south), max(west, east))); + vec3 localBlur = (4.0 * center + north + south + west + east) / 8.0; + + const vec3 luminanceWeights = vec3(0.2126, 0.7152, 0.0722); + float minimumLuminance = dot(localMinimum, luminanceWeights); + float maximumLuminance = dot(localMaximum, luminanceWeights); + float localContrast = maximumLuminance - minimumLuminance; + + // Keep low-contrast and photographic regions close to the smooth source. + // Text and UI edges get a bounded high-frequency boost with no overshoot. + float edgeConfidence = smoothstep(0.015, 0.18, localContrast); + vec3 enhanced = center + (center - localBlur) * (1.25 * edgeConfidence); + enhanced = clamp(enhanced, localMinimum, localMaximum); + + vec3 outputColor = linearToSrgb(clamp(enhanced, 0.0, 1.0)); + float outputAlpha = centerSample.a; + fragColor = vec4(outputColor * outputAlpha, outputAlpha) * qt_Opacity; +} diff --git a/src/preferencesdlg.cc b/src/preferencesdlg.cc index 9b38285c..48bd8f40 100644 --- a/src/preferencesdlg.cc +++ b/src/preferencesdlg.cc @@ -116,6 +116,7 @@ PreferencesDialog::PreferencesDialog(Settings* settings, Spotlight* spotlight, connect(settings, &Settings::borderOpacityChanged, this, modified); connect(settings, &Settings::zoomEnabledChanged, this, modified); connect(settings, &Settings::zoomFactorChanged, this, modified); + connect(settings, &Settings::zoomModeChanged, this, modified); connect(settings, &Settings::multiScreenOverlayEnabledChanged, this, modified); for (const auto& shape : Settings::spotShapes()) { if (auto* shapeSettings = settings->shapeSettings(shape.name())) { @@ -577,6 +578,27 @@ QGroupBox* PreferencesDialog::createZoomGroupBox(Settings* settings) connect(settings, &Settings::zoomFactorChanged, this, &PreferencesDialog::resetPresetCombo); zoomGrid->addWidget(new QLabel(i18n("Zoom Level"), this), 0, 0); zoomGrid->addWidget(zoomLevelSb, 0, 1); + + const auto zoomModeCombo = new QComboBox(this); + zoomModeCombo->addItem(i18n("Smooth (images)"), QStringLiteral("smooth")); + zoomModeCombo->addItem(i18n("Text and UI"), QStringLiteral("text")); + zoomModeCombo->addItem(i18n("Pixel-perfect"), QStringLiteral("pixel")); + zoomModeCombo->setCurrentIndex(zoomModeCombo->findData(settings->zoomMode())); + zoomModeCombo->setToolTip( + i18n("Choose edge reconstruction for text, smooth filtering for images, " + "or nearest-neighbor scaling for pixel inspection.")); + connect(zoomModeCombo, &QComboBox::currentIndexChanged, settings, + [settings, zoomModeCombo](int index) { + settings->setZoomMode(zoomModeCombo->itemData(index).toString()); + }); + connect(settings, &Settings::zoomModeChanged, zoomModeCombo, + [zoomModeCombo](const QString& mode) { + const auto index = zoomModeCombo->findData(mode); + if (index >= 0) { zoomModeCombo->setCurrentIndex(index); } + }); + connect(settings, &Settings::zoomModeChanged, this, &PreferencesDialog::resetPresetCombo); + zoomGrid->addWidget(new QLabel(i18n("Content Type"), this), 1, 0); + zoomGrid->addWidget(zoomModeCombo, 1, 1); zoomGrid->setColumnStretch(1, 1); return zoomGroup; } diff --git a/src/projecteurconfig.kcfg b/src/projecteurconfig.kcfg index 49ce9d2c..008430ab 100644 --- a/src/projecteurconfig.kcfg +++ b/src/projecteurconfig.kcfg @@ -72,6 +72,9 @@ 1.5 20.0 + + smooth + false diff --git a/src/projecteurcontrol.cc b/src/projecteurcontrol.cc index 97d0e8f5..eb540f75 100644 --- a/src/projecteurcontrol.cc +++ b/src/projecteurcontrol.cc @@ -137,6 +137,7 @@ ProjecteurControl::ProjecteurControl(ProjecteurApplication* application, Setting connect(m_settings, &Settings::borderOpacityChanged, this, settingsChanged); connect(m_settings, &Settings::zoomEnabledChanged, this, settingsChanged); connect(m_settings, &Settings::zoomFactorChanged, this, settingsChanged); + connect(m_settings, &Settings::zoomModeChanged, this, settingsChanged); connect(m_settings, &Settings::multiScreenOverlayEnabledChanged, this, settingsChanged); for (const auto& shape : Settings::spotShapes()) { diff --git a/src/settings.cc b/src/settings.cc index 36ab2b13..8e1df9ff 100644 --- a/src/settings.cc +++ b/src/settings.cc @@ -41,6 +41,7 @@ namespace { constexpr char borderOpacity[] = "borderOpacity"; constexpr char zoomEnabled[] = "enableZoom"; constexpr char zoomFactor[] = "zoomFactor"; + constexpr char zoomMode[] = "zoomMode"; constexpr char multiScreenOverlay[] = "multiScreenOverlay"; constexpr char presentationTimerEnabled[] = "presentationTimerEnabled"; constexpr char presentationTimerDurationSeconds[] = "presentationTimerDurationSeconds"; @@ -67,6 +68,7 @@ namespace { constexpr double borderOpacity = 0.8; constexpr bool zoomEnabled = false; constexpr double zoomFactor = 2.0; + constexpr char zoomMode[] = "smooth"; constexpr bool multiScreenOverlay = false; constexpr bool presentationTimerEnabled = false; constexpr int presentationTimerDurationSeconds = 15 * 60; @@ -95,6 +97,13 @@ namespace { return (value.toLower() == "true" || value.toLower() == "on" || value.toInt() > 0); } + // ----------------------------------------------------------------------------------------------- + bool isZoomMode(const QString& mode) { + return mode == QStringLiteral("smooth") + || mode == QStringLiteral("text") + || mode == QStringLiteral("pixel"); + } + // ----------------------------------------------------------------------------------------------- #define SETTINGS_PRESET_PREFIX "Preset_" QString presetSection(const QString& preset, bool withSeparator = true) { @@ -347,6 +356,9 @@ void Settings::initializeStringProperties() map.emplace_back( "zoom.factor", StringProperty{ StringProperty::Double, {::settings::ranges::zoomFactor.min, ::settings::ranges::zoomFactor.max}, [this](const QString& value){ setZoomFactor(value.toDouble()); } } ); + map.emplace_back( "zoom.mode", StringProperty{ StringProperty::StringEnum, + {QStringLiteral("smooth"), QStringLiteral("text"), QStringLiteral("pixel")}, + [this](const QString& value){ setZoomMode(value); } } ); } // ------------------------------------------------------------------------------------------------- @@ -402,6 +414,7 @@ Settings::SpotlightSettings Settings::spotlightSettings() const {::settings::borderOpacity, m_borderOpacity}, {::settings::zoomEnabled, m_zoomEnabled}, {::settings::zoomFactor, m_zoomFactor}, + {::settings::zoomMode, m_zoomMode}, {::settings::multiScreenOverlay, m_multiScreenOverlayEnabled}, }; @@ -439,6 +452,7 @@ Settings::SpotlightSettings Settings::defaultSpotlightSettings() {::settings::borderOpacity, ::settings::defaultValue::borderOpacity}, {::settings::zoomEnabled, ::settings::defaultValue::zoomEnabled}, {::settings::zoomFactor, ::settings::defaultValue::zoomFactor}, + {::settings::zoomMode, QString(::settings::defaultValue::zoomMode)}, {::settings::multiScreenOverlay, ::settings::defaultValue::multiScreenOverlay}, }; @@ -472,6 +486,7 @@ void Settings::setSpotlightSettings(const SpotlightSettings& values) setBorderOpacity(values.value(::settings::borderOpacity, m_borderOpacity).toDouble()); setZoomEnabled(values.value(::settings::zoomEnabled, m_zoomEnabled).toBool()); setZoomFactor(values.value(::settings::zoomFactor, m_zoomFactor).toDouble()); + setZoomMode(values.value(::settings::zoomMode, m_zoomMode).toString()); setMultiScreenOverlayEnabled( values.value(::settings::multiScreenOverlay, m_multiScreenOverlayEnabled).toBool()); @@ -515,6 +530,7 @@ void Settings::setDefaults() setBorderOpacity(settings::defaultValue::borderOpacity); setZoomEnabled(settings::defaultValue::zoomEnabled); setZoomFactor(settings::defaultValue::zoomFactor); + setZoomMode(settings::defaultValue::zoomMode); setMultiScreenOverlayEnabled(settings::defaultValue::multiScreenOverlay); shapeSettingsSetDefaults(); } @@ -683,6 +699,7 @@ void Settings::load(const QString& preset) setBorderOpacity(m_config->borderOpacity()); setZoomEnabled(m_config->zoomEnabled()); setZoomFactor(m_config->zoomFactor()); + setZoomMode(m_config->zoomMode()); setMultiScreenOverlayEnabled(m_config->multiScreenOverlay()); shapeSettingsLoad(); return; @@ -706,6 +723,7 @@ void Settings::load(const QString& preset) setBorderOpacity(readValue(s+::settings::borderOpacity, settings::defaultValue::borderOpacity).toDouble()); setZoomEnabled(readValue(s+::settings::zoomEnabled, settings::defaultValue::zoomEnabled).toBool()); setZoomFactor(readValue(s+::settings::zoomFactor, settings::defaultValue::zoomFactor).toDouble()); + setZoomMode(readValue(s+::settings::zoomMode, settings::defaultValue::zoomMode).toString()); setMultiScreenOverlayEnabled(readValue(s+::settings::multiScreenOverlay, settings::defaultValue::multiScreenOverlay).toBool()); shapeSettingsLoad(preset); } @@ -732,6 +750,7 @@ void Settings::savePreset(const QString& preset) writeValue(section+::settings::borderOpacity, m_borderOpacity); writeValue(section+::settings::zoomEnabled, m_zoomEnabled); writeValue(section+::settings::zoomFactor, m_zoomFactor); + writeValue(section+::settings::zoomMode, m_zoomMode); writeValue(section+::settings::multiScreenOverlay, m_multiScreenOverlayEnabled); shapeSettingsSavePreset(preset); @@ -1000,6 +1019,19 @@ void Settings::setZoomFactor(double factor) } } +// ------------------------------------------------------------------------------------------------- +void Settings::setZoomMode(const QString& mode) +{ + const auto normalizedMode = mode.trimmed().toLower(); + if (!isZoomMode(normalizedMode) || normalizedMode == m_zoomMode) { return; } + + m_zoomMode = normalizedMode; + m_config->setZoomMode(m_zoomMode); + save(); + qCDebug(PROJECTEUR_SETTINGS_LOG).noquote() << "zoom.mode = " << m_zoomMode; + emit zoomModeChanged(m_zoomMode); +} + // ------------------------------------------------------------------------------------------------- void Settings::setMultiScreenOverlayEnabled(bool enabled) { diff --git a/src/settings.h b/src/settings.h index 54ce9cb0..8f41796c 100644 --- a/src/settings.h +++ b/src/settings.h @@ -41,6 +41,7 @@ class Settings : public QObject Q_PROPERTY(double borderOpacity READ borderOpacity WRITE setBorderOpacity NOTIFY borderOpacityChanged) Q_PROPERTY(bool zoomEnabled READ zoomEnabled WRITE setZoomEnabled NOTIFY zoomEnabledChanged) Q_PROPERTY(double zoomFactor READ zoomFactor WRITE setZoomFactor NOTIFY zoomFactorChanged) + Q_PROPERTY(QString zoomMode READ zoomMode WRITE setZoomMode NOTIFY zoomModeChanged) Q_PROPERTY(bool multiScreenOverlayEnabled READ multiScreenOverlayEnabled WRITE setMultiScreenOverlayEnabled NOTIFY multiScreenOverlayEnabledChanged) public: @@ -85,6 +86,8 @@ class Settings : public QObject void setZoomEnabled(bool enabled); double zoomFactor() const { return m_zoomFactor; } void setZoomFactor(double factor); + QString zoomMode() const { return m_zoomMode; } + void setZoomMode(const QString& mode); bool multiScreenOverlayEnabled() const { return m_multiScreenOverlayEnabled; } void setMultiScreenOverlayEnabled(bool enabled); bool overlayDisabled() const { return m_overlayDisabled; } @@ -205,6 +208,7 @@ class Settings : public QObject void borderOpacityChanged(double opacity); void zoomEnabledChanged(bool enabled); void zoomFactorChanged(double zoomFactor); + void zoomModeChanged(const QString& mode); void multiScreenOverlayEnabledChanged(bool enabled); void overlayDisabledChanged(bool disabled); @@ -231,6 +235,7 @@ class Settings : public QObject double m_borderOpacity = 0.8; bool m_zoomEnabled = false; double m_zoomFactor = 2.0; + QString m_zoomMode = QStringLiteral("smooth"); bool m_showSpotShade = true; bool m_showCenterDot = false; bool m_spotRotationAllowed = false; From e033062dc8b9f6794c2bcfc60e81328dae79f012 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Thu, 30 Jul 2026 15:44:47 -0500 Subject: [PATCH 56/67] Cleanup the readme --- CMakeLists.txt | 4 +- CONTRIBUTING.md | 157 ++++++++++++- Justfile | 2 + README.md | 494 +++++++++++------------------------------ doc/TROUBLESHOOTING.md | 107 +++++++++ doc/USER-GUIDE.md | 127 +++++++++++ 6 files changed, 517 insertions(+), 374 deletions(-) create mode 100644 doc/TROUBLESHOOTING.md create mode 100644 doc/USER-GUIDE.md diff --git a/CMakeLists.txt b/CMakeLists.txt index 34ce54dc..521d4604 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -212,7 +212,9 @@ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/version-string.archlinux" "${PROJECTEUR_ ki18n_install(po) # Add target with non-source files for convenience when using IDEs like QtCreator and others -add_custom_target(non-sources SOURCES README.md LICENSE.md doc/CHANGELOG.md devices.conf +add_custom_target(non-sources SOURCES README.md CONTRIBUTING.md LICENSE.md + doc/CHANGELOG.md doc/USER-GUIDE.md + doc/TROUBLESHOOTING.md devices.conf src/extra-devices.cc.in src/projecteurconfig.kcfg src/org.projecteur.Projecteur.xml qml/shaders/textzoom.frag diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7545b51b..57f925f8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,5 +1,154 @@ -# Contributing +# Contributing to Projecteur -* Contributions are very welcome. -* When contributing to this repository, please first discuss the change(s) you wish to implement - via issue, email, or any other method with the owners of this repository before making a change. +Thanks for helping make Linux presentations better. Bug fixes, device support, +documentation, translations, and focused feature improvements are all welcome. + +For a substantial change, please open an issue before investing heavily so the +approach and project scope can be agreed on. Small, self-contained fixes can go +straight to a pull request. + +## Project scope + +This edition of Projecteur targets: + +- KDE Plasma 6.7 or newer on Wayland +- Qt 6.11 or newer +- LayerShellQt and KPipeWire 6.7 or newer +- Linux presenter devices exposed through evdev and hidraw + +Qt 5 and X11 support are outside the scope of this fork. + +## Requirements + +- A C++17 compiler +- CMake 3.20 or newer +- Extra CMake Modules 6.7 or newer +- Qt 6.11 or newer with Core, DBus, Gui, Quick, ShaderTools, WaylandClient, and + Widgets +- KDE Frameworks 6.7 or newer: Config, ConfigWidgets, CoreAddons, DBusAddons, + GlobalAccel, I18n, Notifications, Package, KirigamiPlatform, WidgetsAddons, + WindowSystem, and XmlGui +- Plasma 6.7 or newer +- KPipeWire 6.7 or newer +- LayerShellQt 6.7 or newer +- gettext for translations + +Package names vary by distribution. The CI workflow and +[`Justfile`](./Justfile) are the canonical dependency lists for Arch Linux. + +## Build from source + +```sh +git clone https://github.com/gbin/Projecteur-kde.git +cd Projecteur-kde +cmake -S . -B build \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DPACKAGE_TARGETS=OFF +cmake --build build --parallel +``` + +The binary in `build/projecteur` can exercise most of the application, but live +zoom requires a proper installation. KWin authorizes the restricted capture +interfaces by matching the executable to Projecteur's installed desktop +metadata. + +For a complete local install: + +```sh +sudo cmake --install build +sudo udevadm control --reload-rules +sudo udevadm trigger +``` + +The install also provides the Plasma applet, desktop entry, AppStream metadata, +udev rules, notifications, D-Bus service, shell completion, and manual page. + +## Arch Linux workflow + +On Arch Linux and Arch-based distributions, install `just` and use: + +```sh +just build +just package +just install +``` + +- `just build` installs missing dependencies and compiles Projecteur. +- `just package` packages the current working tree—including uncommitted + files—into `build/packages/`. +- `just install` builds and installs that package with `pacman`, then restarts + Plasma Shell and Projecteur. + +`sudo` is used only when dependencies or the finished package need to be +installed. + +## Verify a change + +At minimum, rebuild and run the same smoke checks as CI: + +```sh +cmake --build build --parallel +./build/projecteur --version +./build/projecteur --help +git diff --check +``` + +For UI or device changes, also test the relevant workflow manually on Plasma +Wayland. In the pull request, mention the Plasma and Qt versions, connection type, +and presenter model you tested. + +## Project map + +| Path | Purpose | +| --- | --- | +| `src/` | Application, device handling, settings, and QWidget UI | +| `qml/` | Wayland overlay and zoom shaders | +| `plasma/` | Native Plasma system tray applet | +| `protocols/` | Wayland protocol definitions used by the zoom pipeline | +| `cmake/` | Build, packaging, desktop, AppStream, and manual templates | +| `po/` | gettext translation catalogs | +| `doc/` | User documentation, screenshots, and changelog | +| `packaging/arch/` | Local Arch package recipe | + +## Adding a presenter + +Add compile-time device support to [`devices.conf`](./devices.conf) using: + +```text +vendorId, productId, [usb|bt], name +``` + +For example: + +```text +0x0abc, 0x1234, usb, Example Presenter +``` + +CMake uses this list to generate both device definitions and udev rules. If the +device needs special event decoding or HID++ behavior, changes in `src/` may also +be required. + +For quick experiments, Projecteur accepts +`--additional-device VENDOR:PRODUCT` at runtime. + +## Translations + +Projecteur uses KDE's KI18n/gettext system. Run `Messages.sh` through the standard +KDE translation tooling to update `projecteur.pot`. Catalogs placed at +`po//projecteur.po` are compiled and installed automatically. + +Keep user-visible strings translatable and avoid assembling sentences from +fragments. + +## Pull requests + +Keep each pull request focused. Include: + +- what changed and why; +- how it was verified; +- screenshots for visible UI changes; +- device IDs and connection type for hardware-specific changes. + +By contributing, you agree that your work is provided under the project's +[MIT License](./LICENSE.md). diff --git a/Justfile b/Justfile index dcf633bf..8c4ad640 100644 --- a/Justfile +++ b/Justfile @@ -127,6 +127,7 @@ deps: _require-arch kdbusaddons kglobalaccel ki18n + kpipewire knotifications kwidgetsaddons kwindowsystem @@ -138,6 +139,7 @@ deps: _require-arch qt6-base qt6-declarative qt6-shadertools + qt6-wayland ) mapfile -t missing < <(pacman -T "${dependencies[@]}" || true) diff --git a/README.md b/README.md index 92bc9b9a..55d08f7c 100644 --- a/README.md +++ b/README.md @@ -1,411 +1,167 @@ # Projecteur -[![Build Status][gh-badge]][gh-link] - -Qt 6 / KDE Plasma Wayland application for the Logitech Spotlight device and -similar presenters. - -## About This Fork - -This repository is a fork of [jahnf/Projecteur](https://github.com/jahnf/Projecteur) -focused on supporting modern KDE Plasma on Wayland. It targets KDE Plasma 6.7 -with Qt 6.11 and LayerShellQt 6.7. Wayland is the only supported windowing -platform; Qt 5 and X11 are outside the scope of this fork. - -In addition to the hardware supported by the upstream project, this fork adds -support for the **Logitech Spotlight 2** through its Logi Bolt USB-C receiver -(`046d:c548`) and over Bluetooth (`046d:b506`). - -This is an independent, unofficial fork. Please report problems specific to -this version in the [fork's issue tracker](https://github.com/gbin/Projecteur-kde/issues). -Only report a problem upstream when it also reproduces in the original project. - -[gh-badge]: https://github.com/gbin/Projecteur-kde/actions/workflows/ci-build.yml/badge.svg?branch=develop -[gh-link]: https://github.com/gbin/Projecteur-kde/actions/workflows/ci-build.yml?query=branch%3Adevelop +**A virtual laser pointer and live magnifier built for KDE Plasma presentations.** -## Motivation - -I saw the Logitech Spotlight device in action at a conference and liked it immediately. -Unfortunately as in a lot of cases, software is only provided for Windows and Mac. -The device itself works just fine on Linux, but the cool spotlight feature is -only available using additional software. +[![Build status](https://github.com/gbin/Projecteur-kde/actions/workflows/ci-build.yml/badge.svg?branch=develop)](https://github.com/gbin/Projecteur-kde/actions/workflows/ci-build.yml?query=branch%3Adevelop) +![KDE Plasma 6.7+](https://img.shields.io/badge/KDE_Plasma-6.7%2B-1d99f3?logo=kde&logoColor=white) +![Wayland only](https://img.shields.io/badge/display-Wayland_only-5c6bc0) +[![MIT license](https://img.shields.io/badge/license-MIT-2ea44f)](./LICENSE.md) -So here it is: a Linux application for the Logitech Spotlight. +Projecteur turns a Logitech Spotlight—or another supported presenter—into an +on-screen spotlight your audience can see in the room, in a screen share, and in +the recording. Point, magnify, change slides, run a timer, and keep everything +close at hand in Plasma. -## Table of Contents +[Projecteur highlighting and magnifying part of a presentation slide](./doc/screenshot-spot.png) -- [Projecteur](#projecteur) - - [About This Fork](#about-this-fork) - - [Motivation](#motivation) - - [Table of Contents](#table-of-contents) - - [Features](#features) - - [Screenshots](#screenshots) - - [Supported Environments](#supported-environments) - - [How it works](#how-it-works) - - [Button mapping](#button-mapping) - - [Hold Button Mapping for Logitech Spotlight](#hold-button-mapping-for-logitech-spotlight) - - [Building](#building) - - [Requirements](#requirements) - - [Build Example](#build-example) - - [Installation/Running](#installationrunning) - - [Pre-requisites](#pre-requisites) - - [When building Projecteur yourself](#when-building-projecteur-yourself) - - [Application Menu](#application-menu) - - [Using Projecteur without a device](#using-projecteur-without-a-device) - - [Device Support](#device-support) - - [Compile Time](#compile-time) - - [Troubleshooting](#troubleshooting) - - [Opaque Spotlight / No Transparency](#opaque-spotlight--no-transparency) - - [Missing System Tray](#missing-system-tray) - - [Wayland](#wayland) - - [Wayland Zoom](#wayland-zoom) - - [Device shows as not connected](#device-shows-as-not-connected) - - [Changelog](#changelog) - - [License](#license) +> [!NOTE] +> This KDE/Wayland edition requires **KDE Plasma 6.7 or newer**, **Qt 6.11 or +> newer**, and a **Wayland session**. Qt 5 and X11 are not supported. -## Features +## Why Projecteur? -* Configurable desktop spotlight - * _shade color_, _opacity_, _cursor_, _border_, _center dot_ and different _shapes_ - * Live zoom through KWin and KPipeWire, so videos, animations, and other changing - desktop content continue updating inside the magnifier -* Multiple screen support -* Support of devices beyond the Logitech Spotlight (see [Device Support](#device-support)) -* Button mapping: - * Map any button on the device to (almost) any keyboard combination. - * Switch between (cycle through) custom spotlight presets. - * Audio Volume / Horizontal and Vertical Scrolling (Logitech Spotlight). -* Vibration support for compatible presenters, including the Logitech Spotlight - and Spotlight 2; the presentation timer triggers haptic feedback on completion -* Native KDE Plasma system tray applet with presenter status, first-class - presentation timer settings, a live remaining-minutes badge, and quick controls -* Native KDE Plasma notifications for presenter status, battery level, access - errors, and presentation timers -* Native KDE global shortcuts, configurable in Projecteur or Plasma System Settings -* Usable without a presenter device (e.g. for online presentations) +- **Visible everywhere.** Unlike a physical laser, the spotlight appears in + projectors, screen shares, and recordings. +- **Live magnification.** KWin and KPipeWire keep video, animation, and changing + content moving inside the zoom area. +- **Made for Plasma.** Native system tray controls, global shortcuts, + notifications, and multi-screen support feel at home on KDE. +- **Designed for presenting.** Save spotlight presets, remap presenter buttons, + control volume or scrolling, and use haptic timer alerts on compatible devices. +- **Useful without hardware.** Trigger the spotlight from a global shortcut for + online demos and video calls. -### Screenshots +## See it in action -#### Spotlight overlay +### Magnify the content, not the pixels -The configurable overlay combines different spotlight shapes with shading, zoom, -and an optional border. This example uses a circular zoom area with a green border. +Choose smooth scaling for images, edge-enhanced **Text and UI** mode for +documents and application demos, or pixel-perfect scaling for source pixels. +The zoom mode is saved with each spotlight preset. -[Circular Projecteur spotlight demonstrating zoom, shade, and a green border](./doc/screenshot-spot.png) +[Projecteur magnifying text and interface content with a sharp green-bordered spotlight](./doc/screenshot-text-zoom.png) -#### Text-optimized zoom +### Stay in control from the Plasma panel -The **Text and UI** content mode applies bounded edge enhancement after smooth -scaling, making documents, email, terminals, and application controls easier to -read without the blockiness of nearest-neighbor enlargement. +See connected presenters, test the spotlight, switch presets, start a +presentation timer, and open preferences without breaking your flow. -[Projecteur magnifier using Text and UI mode on an email](./doc/screenshot-text-zoom.png) +[Projecteur Plasma applet showing a connected Logitech Spotlight 2 and quick controls](./doc/screenshot-traymenu.png) -Choose the content type independently from the zoom level in the Zoom preferences. -The selected mode is also stored in spotlight presets. +### Make the spotlight yours -[Projecteur Zoom preferences showing Smooth, Text and UI, and Pixel-perfect content types](./doc/screenshot-zoom-modes.png) +Tune the shape, shade, zoom, cursor, border, multi-screen behavior, and presets +with native KDE controls. -#### KDE-styled preferences +[Projecteur preferences with spotlight shape, shade, zoom, cursor, border, and preset controls](./doc/screenshot-settings.png) -Projecteur uses native KDE controls for configuring the spotlight shape, shade, -zoom, cursor, border, multi-screen behavior, and presets. +## Install -[KDE-styled Projecteur preferences](./doc/screenshot-settings.png) +Projecteur-kde is under active development and currently distributed from +source. The install step is important: KWin grants zoom access using Projecteur's +installed desktop metadata, and the presenter needs the installed udev rules. -#### Plasma global shortcuts +### Arch Linux and Arch-based distributions -Projecteur's actions integrate with Plasma's global shortcut settings, where -shortcuts can be assigned for the spotlight, preferences, presentation timer, -and spotlight presets. - -[Projecteur actions in Plasma's global shortcut settings](./doc/screenshot-global-shortcuts.png) - -#### Plasma system tray applet - -The native Plasma applet shows connected presenters and provides quick access to -the spotlight, presets, timer, test action, and preferences. - -[Projecteur Plasma applet with a connected Logitech Spotlight 2 and quick controls](./doc/screenshot-traymenu.png) - -The panel icon also provides connected-presenter status at a glance. - -[Projecteur system tray applet showing one connected presenter in KDE Plasma](./doc/screenshot-plasma-applet.png) - -#### KDE Plasma notifications - -Presenter connections, battery status, device-access errors, and timer completion -use KDE Plasma's native notification system. - -[Projecteur presenter connected notification in KDE Plasma](./doc/screenshot-notification.png) - -#### Presentation timer - -The presentation timer is a first-class applet setting. It can start immediately -or on the next presenter button press. - -[First-class presentation timer settings in the Projecteur Plasma applet](./doc/screenshot-applet-presentation-timer.png) - -While the timer runs, the panel icon displays the remaining minutes and its -tooltip shows the precise countdown. When time expires, compatible presenters -such as the Logitech Spotlight 2 provide configurable haptic feedback. - -[Projecteur panel icon with a highlighted five-minute badge and tooltip showing 04:27 remaining](./doc/screenshot-applet-timer-countdown.png) - -## Supported Environments - -This port targets KDE Plasma 6.7 on Wayland with Qt 6.11. X11 and Qt 5 are not -supported. The spotlight overlay and device features are Wayland-native; zoom uses -KWin's restricted screencast protocol and KPipeWire. - -If you build the application yourself, install both the generated desktop entry and -udev rules (see [pre-requisites](#pre-requisites)). - -## How it works - -With a connection via the USB Dongle Receiver or via Bluetooth, the Logitech Spotlight -device will be detected by Linux as a HID device with mouse and keyboard events. -As mouse events, the device sends relative cursor movements and left button presses. -Acting as a keyboard, the device basically just sends left and right arrow key press -events when forward or back is pressed on the device. - -The mouse move events of the device are what we are mainly interested in. Since the device is -already detected as a mouse input device and able to move the cursor, we simply detect -if the Spotlight device is sending mouse move events. If it is sending mouse events, -we will 'turn on' the desktop spot (virtual laser). - -For more details: Have a look at the source code ;) - -### Button mapping - -Button mapping works by **grabbing** all device events of connected -devices and forwarding them to a virtual _'uinput'_ device if not configured -differently by the button mapping configuration. If a mapped configuration for -a button exists, _Projecteur_ will inject the mapped action instead. -(You can still disable device grabbing with the `--disable-uinput` command -line option - button mapping will be disabled then.) - -Input events from the presenter device can be mapped to different actions. -The _Key Sequence_ action is particularly powerful as it can emit any user-defined -keystroke. These keystrokes can invoke shortcut in presentation software -(or any other software) being used. Similarly, the _Cycle Preset_ action can be -used for cycling different spotlight presets. However, it should be noted that -presets are ordered alphabetically on program start. To retain a certain -order of your presets, you can prepend the preset name with a number. - -#### Hold Button Mapping for Logitech Spotlight - -Logitech Spotlight can send Hold event for Next and Back buttons as HID++ -messages. Using this device feature, this program provides three different -usage of the Next or Hold button. - -1. Button Tap -2. Long-Press Event -3. Button Hold and Move Event - -On the Input Mapper tab (Devices tab in Preferences dialog box), the first two -button usages (_i.e._ tap and long-press) can be mapped directly by tapping or -long pressing the relevant button. For mapping the third button usage (_i.e._ -Hold Move Event), please ensure that the device is active by pressing any button, -and then right click in first column (Input Sequence) for any entry and select -the relevant option. Additional mapped actions (e.g. _Vertical Scrolling_, -_Horizontal Scrolling_, or _Volume control_) can be selected for these hold -move events. - -Please note that in case when both Long-Press event and Hold Move events are -mapped for a particular button, both actions will executed if user hold the -button and move device. To avoid this situation, do not set both Long-Press -and Hold Move actions for the same button. - -## Building - -### Requirements - -* C++17 compiler -* CMake 3.20 or later -* Qt 6.11 with Core, DBus, Gui, Quick, WaylandClient, and Widgets -* KDE Plasma 6.7 Wayland, including Libplasma, KConfig, KConfigWidgets, KCoreAddons, - KDBusAddons, KGlobalAccel, KI18n, KNotifications, KWidgetsAddons, KWindowSystem, - and KXmlGui -* KPipeWire 6.7 -* LayerShellQt 6.7 -* Extra CMake Modules 6.7 or later - -### Build Example +Install [`just`](https://github.com/casey/just), then use the included packaging +workflow. It installs missing build dependencies, creates a native package, and +installs it with `pacman`. ```sh -git clone https://github.com/gbin/Projecteur-kde +sudo pacman -S --needed just +git clone https://github.com/gbin/Projecteur-kde.git cd Projecteur-kde -cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -cmake --build build -sudo cmake --install build +just install ``` -### Translations - -Projecteur uses KDE's KI18n/gettext translation system. Run `Messages.sh` through the standard -KDE translation tooling to extract `projecteur.pot`; translated catalogs placed under -`po//projecteur.po` are compiled and installed automatically. - -### Arch Linux +### Other distributions -On Arch Linux and Arch-based distributions, the `Justfile` can install missing -build dependencies and run the complete local packaging workflow: +Install the [build dependencies](./CONTRIBUTING.md#requirements), then: ```sh -just build # Compile build/projecteur -just package # Create build/packages/projecteur-*.pkg.tar.zst -just install # Build, package, and install the package with pacman +git clone https://github.com/gbin/Projecteur-kde.git +cd Projecteur-kde +cmake -S . -B build \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DPACKAGE_TARGETS=OFF +cmake --build build --parallel +sudo cmake --install build +sudo udevadm control --reload-rules +sudo udevadm trigger ``` -`just package` packages the current working tree, including uncommitted files, -through the checked-in `packaging/arch/PKGBUILD`. `just install` uses `sudo` -only for dependency installation and the final `pacman -U`. It stops a running -Projecteur instance, compiles, packages and installs the current tree, then -restarts `plasma-plasmashell.service` and Projecteur. - -Installing is required for zoom: KWin authorizes the screencast and screenshot -interfaces by matching the running executable with the installed -`org.projecteur.Projecteur.desktop` metadata. A binary run directly from the build -directory can use the normal spotlight, but KWin will reject its zoom capture request. - -## Installation/Running - -Projecteur stores its KDE configuration in `~/.config/projecteurrc`. - -### Pre-requisites - -#### When building Projecteur yourself - -The input devices detected from the Spotlight device must be readable to the -user running the application. To make this easier there is a udev rule template -file in this repository: `55-projecteur.rules.in` - -* During the CMake run, the file `55-projecteur.rules` will be created from this template - in your **build directory**. Copy that generated file to `/lib/udev/rules.d/55-projecteur.rules` -* Most recent systems (using systemd) will automatically pick up the rule. - If not, run `sudo udevadm control --reload-rules` and `sudo udevadm trigger` - to load the rules without a reboot. -* After that, the input devices from the Logitech USB Receiver (but also the Bluetooth device) - in /dev/input should be readable/writable by you. - (See also about [device detection](#device-shows-as-not-connected)) - -### System Tray - -Projecteur provides a native Plasma system tray popup while the application is -running. It shows connected presenters and offers quick access to the overlay, -presets, spotlight test, and first-class presentation timer controls, as well as -the preferences, about, and quit actions. Plasma owns the popup placement and -closes it when the icon is clicked again or focus moves elsewhere. - -While the presentation timer is running, the panel icon shows how many minutes -remain. When the timer finishes, Projecteur triggers configurable haptic feedback -on compatible presenter devices such as the Logitech Spotlight 2. - -If the system tray icon is missing, see the -[Troubleshooting](#missing-system-tray) section. - -Presenter connection, battery, access-error, and presentation-timer notifications -are registered with Plasma and can be customized under System Settings → -Notifications → Applications → Projecteur. - -Projecteur registers native KDE global actions for toggling the spotlight, showing -preferences, controlling the presentation timer, and cycling presets. No key -combinations are assigned by default. Configure them on the **Shortcuts** page in -Projecteur Preferences or under Plasma System Settings → Keyboard → Shortcuts → -Projecteur. - -### Using Projecteur without a device - -You can use _Projecteur_ for online presentations and video conferences without a -presenter device. Assign a key combination to **Toggle Spotlight** on the Shortcuts -page in Projecteur Preferences, then use it while sharing your screen. - -### Device Support +Reconnect the presenter after installing, then launch **Projecteur** from the +application menu. -Besides the _Logitech Spotlight_, the following devices are currently supported out of the box: +## Your first minute -* Logitech Spotlight 2 via Logi Bolt USB-C receiver _(046d:c548)_ or Bluetooth _(046d:b506)_ -* AVATTO H100 / August WP200 _(0c45:8101)_ -* August LP315 _(2312:863d)_ -* AVATTO i10 Pro _(2571:4109)_ -* August LP310 _(69a7:9803)_ -* Norwii Wireless Presenter _(3243:0122)_ -* Kensington PowerPointer _(1ea7:0002)_ +1. Open the Projecteur applet in the Plasma system tray. +2. Confirm that your presenter appears under **Connected presenters**. +3. Select **Test Spotlight** to try the current look. +4. Open **Preferences** to adjust the spotlight or map presenter buttons. +5. Optionally assign **Toggle Spotlight** under **Preferences → Shortcuts** for + keyboard-only use. -#### Compile Time +The applet can also start a presentation timer immediately or on the next button +press. While it runs, the panel badge shows the remaining minutes; compatible +presenters vibrate when time expires. -Besides the Logitech Spotlight, similar devices can be used and are supported. -Additional devices can be added to `devices.conf`. At CMake configuration time, -the project will be configured to support these devices and also create entries -for them in the generated udev-rule file. +## Supported presenters -### Troubleshooting - -#### Opaque Spotlight / No Transparency - -The overlay requires the Plasma Wayland compositor. Verify that the session reports -`XDG_SESSION_TYPE=wayland` and that Projecteur logs `Qt platform plugin: wayland`. - -#### Missing System Tray - -If the Plasma system tray does not show the _Projecteur_ applet, verify that -Projecteur is running and that its applet is enabled in Plasma's system tray -configuration. - -#### Wayland - -Wayland is the only supported windowing platform in this port. Do not force -`QT_QPA_PLATFORM=xcb`. - -#### Wayland Zoom - -Zoom uses a low-latency live stream from KWin's private screencast protocol through -KPipeWire instead of repeatedly capturing static screenshots. Videos, animations, -and other changing desktop content therefore continue updating inside the magnifier. -KWin omits Projecteur's own windows from the stream, preventing recursive overlay capture. -`ScreenShot2` remains as a fallback when streaming is unavailable. The installed -desktop entry declares both restricted interfaces; install Projecteur instead of -running it from an arbitrary build path. - -The **Content Type** setting controls how the captured desktop pixels are enlarged: - -| Mode | Best for | Scaling behavior | +| Presenter | Connection | Device ID | | --- | --- | --- | -| **Smooth (images)** | Photographs, video, gradients, and mixed content | Bilinear filtering produces continuous tones and the fewest scaling artifacts. This is the safe general-purpose mode. | -| **Text and UI** | Documents, email, terminals, diagrams, and application controls | Starts with smooth scaling, then applies a contrast-adaptive edge enhancement in linear light. The result is clamped to neighboring colors to avoid halos and invented dark or bright pixels. | -| **Pixel-perfect** | Inspecting source pixels, pixel art, and debugging | Nearest-neighbor scaling preserves exact captured pixel values. Text will usually look blocky, especially with fractional zoom factors. | - -Text and UI mode improves the captured raster; it cannot recover the original font -outlines or rerender glyphs as vector text. Smooth remains preferable when the -magnifier covers both text and photographic content. - -The setting is available in **Preferences → Spotlight → Zoom → Content Type** and is -stored in spotlight presets. - -#### Device shows as not connected - -If the device shows as not connected, there are some things you can do: - -* Use Projecteur's device scan to list supported and detected devices and whether - they are readable and writable. A detected device without the required access - usually indicates a problem with the installed _udev_ rules. -* Manually on the shell: Check if the device is detected by the Linux system: Run - `cat /proc/bus/input/devices | grep -A 5 "Vendor=046d"` \ - This should show one or multiple spotlight devices (among other Logitech devices) - * Check that the corresponding `/dev/input/event??` device file is readable by you. \ - Example: `test -r /dev/input/event19 && echo "SUCCESS" || echo "NOT readable"` -* Make sure you don't have conflicting udev rules installed, e.g. first you installed - the udev rule yourself and later you used the automatically built Linux packages to - install _Projecteur_. - -## Changelog - -See [CHANGELOG.md](./doc/CHANGELOG.md) for a detailed changelog. +| Logitech Spotlight | USB receiver / Bluetooth | `046d:c53e` / `046d:b503` | +| Logitech Spotlight 2 | Logi Bolt USB-C receiver / Bluetooth | `046d:c548` / `046d:b506` | +| Lenovo ThinkPad X1 Presenter Mouse | USB / Bluetooth | `17ef:60d9` / `17ef:60db` | +| AVATTO H100 / August WP200 | USB | `0c45:8101` | +| August LP315 | USB | `2312:863d` | +| AVATTO i10 Pro | USB | `2571:4109` | +| August LP310 | USB | `69a7:9803` | +| Norwii Wireless Presenter | USB | `3243:0122` | +| Kensington PowerPointer | USB | `1ea7:0002` | + +Projecteur can also accept an additional device at runtime with +`--additional-device VENDOR:PRODUCT`. See `projecteur --help` for details. + +## Need help? + +- **Presenter not detected?** Run `projecteur --device-scan`. A detected device + that is not readable or writable usually means the udev rules are missing or + stale. +- **Zoom not working?** Confirm that Projecteur is installed—not run only from + the build directory—and that the session is KDE Plasma on Wayland. +- **Applet missing?** Check that Projecteur is running and enabled in the Plasma + system tray configuration. + +The [troubleshooting guide](./doc/TROUBLESHOOTING.md) has detailed checks. If the +problem remains, [open an issue](https://github.com/gbin/Projecteur-kde/issues) +with the output of `projecteur --fullversion` and `projecteur --device-scan`. + +## Documentation + +- [User guide](./doc/USER-GUIDE.md) — presets, zoom modes, button mapping, + shortcuts, timers, and device-free use +- [Troubleshooting](./doc/TROUBLESHOOTING.md) — display, zoom, device access, and + system tray diagnostics +- [Changelog](./doc/CHANGELOG.md) +- [Contributing and development setup](./CONTRIBUTING.md) +- Command-line reference: `man projecteur` + +## About this edition + +This is an independent, unofficial KDE Plasma/Wayland fork of +[Jahn Fuchs' Projecteur](https://github.com/jahnf/Projecteur). It adds a native +Plasma 6 experience, a Wayland-native overlay and live zoom pipeline, and +Logitech Spotlight 2 support. + +Please report issues that affect this edition in +[this repository](https://github.com/gbin/Projecteur-kde/issues). Report upstream +only when the same problem also occurs in the original project. ## License -Copyright 2018-2021 Jahn Fuchs +Projecteur is available under the [MIT License](./LICENSE.md). -This project is distributed under the [MIT License](https://opensource.org/licenses/MIT), -see [LICENSE.md](./LICENSE.md) for more information. +Copyright © 2018–2021 Jahn Fuchs. Fork modifications copyright © 2026 Guillaume +Binet and Projecteur contributors. diff --git a/doc/TROUBLESHOOTING.md b/doc/TROUBLESHOOTING.md new file mode 100644 index 00000000..8754fc94 --- /dev/null +++ b/doc/TROUBLESHOOTING.md @@ -0,0 +1,107 @@ +# Troubleshooting Projecteur + +Start with the checks below. If you still need help, open an issue in the +[Projecteur-kde issue tracker](https://github.com/gbin/Projecteur-kde/issues) and +include: + +```sh +projecteur --fullversion +projecteur --device-scan +``` + +Also mention your Linux distribution, Plasma version, Qt version, presenter +model, and whether it is connected over USB or Bluetooth. + +## Confirm the supported desktop + +This edition requires KDE Plasma on Wayland. Check the session: + +```sh +printf '%s\n' "$XDG_CURRENT_DESKTOP" +printf '%s\n' "$XDG_SESSION_TYPE" +``` + +The session type must report `wayland`. Do not force +`QT_QPA_PLATFORM=xcb`; X11 is not supported by this fork. + +## Presenter is not connected + +Ask Projecteur to list supported devices and their access state: + +```sh +projecteur --device-scan +``` + +If the presenter is detected but is not readable or writable, reload the +installed udev rules and reconnect it: + +```sh +sudo udevadm control --reload-rules +sudo udevadm trigger +``` + +You can also confirm that Linux sees a Logitech input device: + +```sh +grep -A 5 "Vendor=046d" /proc/bus/input/devices +``` + +For the relevant `/dev/input/eventN` path, check access: + +```sh +test -r /dev/input/eventN && echo readable || echo not-readable +test -w /dev/input/eventN && echo writable || echo not-writable +``` + +Conflicting hand-written and package-installed Projecteur rules can produce +surprising permissions. Check for duplicate `55-projecteur.rules` files under +`/etc/udev/rules.d`, `/run/udev/rules.d`, `/usr/lib/udev/rules.d`, and +`/lib/udev/rules.d`. + +## Zoom does not work + +Live zoom requires all of the following: + +- KDE Plasma on Wayland; +- KWin's restricted screencast protocol; +- KPipeWire; +- an installed Projecteur desktop entry that matches the running executable. + +Install Projecteur instead of launching only `build/projecteur`. KWin authorizes +the capture interface using the installed +`org.projecteur.Projecteur.desktop` metadata and can reject an executable from an +arbitrary build path. + +Projecteur uses KWin's low-latency stream for normal live zoom and falls back to +KWin's screenshot interface when streaming is unavailable. KWin excludes +Projecteur's own windows from capture to prevent recursive overlay images. + +## Spotlight is opaque + +Transparency requires the Plasma Wayland compositor. Confirm that +`XDG_SESSION_TYPE` is `wayland` and that the Projecteur log reports the Wayland +Qt platform plugin. + +## System tray applet is missing + +Confirm that Projecteur is running, then open the Plasma system tray +configuration and enable the Projecteur entry. Plasma owns the popup placement +and visibility. + +If the application was just upgraded, restart Plasma Shell or sign out and back +in so the updated applet package is loaded. + +## Reset the configuration + +Projecteur stores its KDE configuration in: + +```text +~/.config/projecteurrc +``` + +To test with clean settings without destroying your existing configuration, +start Projecteur with a separate file: + +```sh +projecteur --cfg /tmp/projecteur-clean-test.rc --show-dialog +``` diff --git a/doc/USER-GUIDE.md b/doc/USER-GUIDE.md new file mode 100644 index 00000000..f73de74b --- /dev/null +++ b/doc/USER-GUIDE.md @@ -0,0 +1,127 @@ +# Projecteur user guide + +This guide covers the controls you are likely to set once and rely on during +every presentation. For installation and the product overview, start with the +[README](../README.md). + +## Everyday workflow + +Launch Projecteur from the application menu. Its Plasma system tray applet shows +connected presenters and provides quick access to: + +- the current spotlight preset; +- **Test Spotlight**; +- presentation timer controls; +- preferences, About, and Quit. + +Connection, battery, access-error, and timer notifications use Plasma's native +notification system. Customize them under **System Settings → Notifications → +Applications → Projecteur**. + +Projecteur stores its settings in `~/.config/projecteurrc`. + +## Spotlight and presets + +Under **Preferences → Spotlight**, you can configure: + +- spotlight size, shape, and rotation; +- shade color and opacity; +- center dot and border; +- cursor appearance; +- zoom level and content type; +- multi-screen behavior. + +Save combinations as presets when different situations need different treatment: +for example, a small dot for slides, a large text magnifier for a code demo, and +a borderless highlight for video. + +Presets are ordered alphabetically when Projecteur starts. Prefix names with +numbers if you want a fixed cycle order, such as `1 Slides`, `2 Demo`, and +`3 Questions`. + +## Live zoom modes + +Zoom uses a low-latency stream from KWin through KPipeWire. Videos, animations, +and other changing desktop content continue updating inside the magnifier. + +| Mode | Best for | Behavior | +| --- | --- | --- | +| **Smooth (images)** | Photographs, video, gradients, and mixed content | Bilinear filtering produces continuous tones and few scaling artifacts. | +| **Text and UI** | Documents, terminals, diagrams, and application controls | Smooth scaling plus bounded edge enhancement makes interface details easier to read. | +| **Pixel-perfect** | Pixel art, source-pixel inspection, and debugging | Nearest-neighbor scaling preserves captured pixel values; text may look blocky. | + +The selected mode is stored in each preset. **Text and UI** improves the captured +raster; it cannot recover font outlines or rerender text as vectors. + +Live zoom requires Projecteur to be installed. KWin uses the installed desktop +metadata to authorize its restricted capture interfaces, so a binary launched +only from the build directory cannot use the normal zoom path. + +## Global shortcuts and device-free use + +Projecteur registers native KDE global actions for: + +- toggling the spotlight; +- opening preferences; +- starting or resetting the presentation timer; +- selecting the next or previous preset. + +No key combinations are assigned by default. Set them under **Preferences → +Shortcuts** or **System Settings → Keyboard → Shortcuts → Projecteur**. + +This also makes Projecteur useful without presenter hardware: assign **Toggle +Spotlight**, then use it while sharing your screen in a meeting or recording a +demo. + +## Presentation timer + +The system tray applet can start the timer immediately or arm it for the next +presenter button press. While it runs, the panel icon shows the remaining +minutes and its tooltip shows the precise countdown. + +When time expires, compatible presenters—including Logitech Spotlight models— +can provide configurable haptic feedback. + +## Button mapping + +Projecteur can map device input to: + +- a keyboard sequence; +- the next or previous spotlight preset; +- vertical or horizontal scrolling; +- volume control; +- other built-in presentation actions. + +Keyboard sequences are especially useful for presentation software shortcuts. +Projecteur grabs presenter events and forwards unmapped input through a virtual +uinput device. Starting with `--disable-uinput` disables both event grabbing and +button mapping. + +### Logitech hold gestures + +Logitech Spotlight devices distinguish three interactions for the Next and Back +buttons: + +1. tap; +2. long press; +3. hold while moving the presenter. + +On the Devices page in Preferences, record taps and long presses directly. To +map hold-and-move, wake the presenter with any button, right-click the input +sequence column, and choose the relevant hold-and-move input. + +Avoid mapping both long press and hold-and-move on the same button unless you +want both actions to run when the button is held during movement. + +## Command-line control + +Projecteur can control an already running instance from scripts. Common examples: + +```sh +projecteur --command spot=toggle +projecteur --command settings=show +projecteur --command preset="2 Demo" +``` + +Run `projecteur --help-all` or `man projecteur` for the complete command and +property reference. From e0a1b8f71a3be8c74ae268fba1a0161a3cd3cfe2 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Sat, 1 Aug 2026 09:45:48 -0500 Subject: [PATCH 57/67] docs: make Plasma 6 edition official --- CMakeLists.txt | 2 +- CONTRIBUTING.md | 9 +++-- README.md | 40 +++++++++---------- .../modules/travis-ci-bintray-deploy.json.in | 6 +-- cmake/templates/projecteur.metainfo.xml | 2 +- doc/TROUBLESHOOTING.md | 6 +-- docker/Dockerfile.archlinux | 1 - packaging/arch/PKGBUILD | 2 +- plasma/metadata.json | 2 +- src/main.cc | 10 ++--- 10 files changed, 39 insertions(+), 41 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 521d4604..3795b0d9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -309,7 +309,7 @@ install(FILES src/org.projecteur.Projecteur.xml DESTINATION ${KDE_INSTALL_DBUSIN # Set variables for file configurations get_target_property(VERSION_STRING projecteur VERSION_STRING) get_target_property(VERSION_DATE_MONTH_YEAR projecteur VERSION_DATE_MONTH_YEAR) -set(HOMEPAGE "https://github.com/gbin/Projecteur-kde") +set(HOMEPAGE "https://github.com/gbin/Projecteur") set(PROJECTEUR_APPLICATION_ID "org.projecteur.Projecteur") configure_file("${TMPLDIR}/projecteur.desktop.in" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 57f925f8..84804c7c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -9,14 +9,15 @@ straight to a pull request. ## Project scope -This edition of Projecteur targets: +The current Projecteur development line targets: - KDE Plasma 6.7 or newer on Wayland - Qt 6.11 or newer - LayerShellQt and KPipeWire 6.7 or newer - Linux presenter devices exposed through evdev and hidraw -Qt 5 and X11 support are outside the scope of this fork. +Qt 5, X11, and non-Plasma support are maintained only for critical fixes on the +[`legacy/qt5`](https://github.com/gbin/Projecteur/tree/legacy/qt5) branch. ## Requirements @@ -39,8 +40,8 @@ Package names vary by distribution. The CI workflow and ## Build from source ```sh -git clone https://github.com/gbin/Projecteur-kde.git -cd Projecteur-kde +git clone https://github.com/gbin/Projecteur.git +cd Projecteur cmake -S . -B build \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr \ diff --git a/README.md b/README.md index 55d08f7c..122fbf15 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ **A virtual laser pointer and live magnifier built for KDE Plasma presentations.** -[![Build status](https://github.com/gbin/Projecteur-kde/actions/workflows/ci-build.yml/badge.svg?branch=develop)](https://github.com/gbin/Projecteur-kde/actions/workflows/ci-build.yml?query=branch%3Adevelop) +[![Build status](https://github.com/gbin/Projecteur/actions/workflows/ci-build.yml/badge.svg?branch=develop)](https://github.com/gbin/Projecteur/actions/workflows/ci-build.yml?query=branch%3Adevelop) ![KDE Plasma 6.7+](https://img.shields.io/badge/KDE_Plasma-6.7%2B-1d99f3?logo=kde&logoColor=white) ![Wayland only](https://img.shields.io/badge/display-Wayland_only-5c6bc0) [![MIT license](https://img.shields.io/badge/license-MIT-2ea44f)](./LICENSE.md) @@ -15,8 +15,10 @@ close at hand in Plasma. [Projecteur highlighting and magnifying part of a presentation slide](./doc/screenshot-spot.png) > [!NOTE] -> This KDE/Wayland edition requires **KDE Plasma 6.7 or newer**, **Qt 6.11 or -> newer**, and a **Wayland session**. Qt 5 and X11 are not supported. +> The current development line requires **KDE Plasma 6.7 or newer**, **Qt 6.11 +> or newer**, and a **Wayland session**. The previous Qt 5, X11, and +> cross-desktop codebase is maintained for critical fixes on the +> [`legacy/qt5`](https://github.com/gbin/Projecteur/tree/legacy/qt5) branch. ## Why Projecteur? @@ -57,8 +59,8 @@ with native KDE controls. ## Install -Projecteur-kde is under active development and currently distributed from -source. The install step is important: KWin grants zoom access using Projecteur's +Projecteur is under active development and currently distributed from source. +The install step is important: KWin grants zoom access using Projecteur's installed desktop metadata, and the presenter needs the installed udev rules. ### Arch Linux and Arch-based distributions @@ -69,8 +71,8 @@ installs it with `pacman`. ```sh sudo pacman -S --needed just -git clone https://github.com/gbin/Projecteur-kde.git -cd Projecteur-kde +git clone https://github.com/gbin/Projecteur.git +cd Projecteur just install ``` @@ -79,8 +81,8 @@ just install Install the [build dependencies](./CONTRIBUTING.md#requirements), then: ```sh -git clone https://github.com/gbin/Projecteur-kde.git -cd Projecteur-kde +git clone https://github.com/gbin/Projecteur.git +cd Projecteur cmake -S . -B build \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr \ @@ -135,7 +137,7 @@ Projecteur can also accept an additional device at runtime with system tray configuration. The [troubleshooting guide](./doc/TROUBLESHOOTING.md) has detailed checks. If the -problem remains, [open an issue](https://github.com/gbin/Projecteur-kde/issues) +problem remains, [open an issue](https://github.com/gbin/Projecteur/issues) with the output of `projecteur --fullversion` and `projecteur --device-scan`. ## Documentation @@ -148,20 +150,16 @@ with the output of `projecteur --fullversion` and `projecteur --device-scan`. - [Contributing and development setup](./CONTRIBUTING.md) - Command-line reference: `man projecteur` -## About this edition +## About Projecteur -This is an independent, unofficial KDE Plasma/Wayland fork of -[Jahn Fuchs' Projecteur](https://github.com/jahnf/Projecteur). It adds a native -Plasma 6 experience, a Wayland-native overlay and live zoom pipeline, and -Logitech Spotlight 2 support. - -Please report issues that affect this edition in -[this repository](https://github.com/gbin/Projecteur-kde/issues). Report upstream -only when the same problem also occurs in the original project. +Projecteur was created by Jahn Fuchs and transferred to Guillaume Binet in 2026. +The current development line adds a native Plasma 6 experience, a +Wayland-native overlay and live zoom pipeline, and Logitech Spotlight 2 support. +Please report problems in the [Projecteur issue tracker](https://github.com/gbin/Projecteur/issues). ## License Projecteur is available under the [MIT License](./LICENSE.md). -Copyright © 2018–2021 Jahn Fuchs. Fork modifications copyright © 2026 Guillaume -Binet and Projecteur contributors. +Copyright © 2018–2021 Jahn Fuchs. Current development copyright © 2026 +Guillaume Binet and Projecteur contributors. diff --git a/cmake/modules/travis-ci-bintray-deploy.json.in b/cmake/modules/travis-ci-bintray-deploy.json.in index d933adc8..059d420b 100644 --- a/cmake/modules/travis-ci-bintray-deploy.json.in +++ b/cmake/modules/travis-ci-bintray-deploy.json.in @@ -4,9 +4,9 @@ "repo": "Projecteur", "subject": "jahnf", "desc": "Automated build of Projecteur.", - "website_url": "https://github.com/jahnf/Projecteur", - "issue_tracker_url": "https://github.com/jahnf/Projecteur/issues", - "vcs_url": "https://github.com/jahnf/Projecteur.git", + "website_url": "https://github.com/gbin/Projecteur", + "issue_tracker_url": "https://github.com/gbin/Projecteur/issues", + "vcs_url": "https://github.com/gbin/Projecteur.git", "github_use_tag_release_notes": false, "licenses": ["MIT"], "labels": ["linux", "wayland", "kde", "logitech", "spotlight", "desktop", "presentation"], diff --git a/cmake/templates/projecteur.metainfo.xml b/cmake/templates/projecteur.metainfo.xml index 471cbcd0..9927a68a 100644 --- a/cmake/templates/projecteur.metainfo.xml +++ b/cmake/templates/projecteur.metainfo.xml @@ -29,7 +29,7 @@ Highlight virtual pointer effect - https://raw.githubusercontent.com/gbin/Projecteur-kde/develop/doc/screenshot-spot.png + https://raw.githubusercontent.com/gbin/Projecteur/develop/doc/screenshot-spot.png diff --git a/doc/TROUBLESHOOTING.md b/doc/TROUBLESHOOTING.md index 8754fc94..e3fc8c26 100644 --- a/doc/TROUBLESHOOTING.md +++ b/doc/TROUBLESHOOTING.md @@ -1,7 +1,7 @@ # Troubleshooting Projecteur Start with the checks below. If you still need help, open an issue in the -[Projecteur-kde issue tracker](https://github.com/gbin/Projecteur-kde/issues) and +[Projecteur issue tracker](https://github.com/gbin/Projecteur/issues) and include: ```sh @@ -14,7 +14,7 @@ model, and whether it is connected over USB or Bluetooth. ## Confirm the supported desktop -This edition requires KDE Plasma on Wayland. Check the session: +The current development line requires KDE Plasma on Wayland. Check the session: ```sh printf '%s\n' "$XDG_CURRENT_DESKTOP" @@ -22,7 +22,7 @@ printf '%s\n' "$XDG_SESSION_TYPE" ``` The session type must report `wayland`. Do not force -`QT_QPA_PLATFORM=xcb`; X11 is not supported by this fork. +`QT_QPA_PLATFORM=xcb`; X11 is not supported by the current development line. ## Presenter is not connected diff --git a/docker/Dockerfile.archlinux b/docker/Dockerfile.archlinux index 1769d336..8fcb471f 100644 --- a/docker/Dockerfile.archlinux +++ b/docker/Dockerfile.archlinux @@ -1,5 +1,4 @@ # Container for building the Projecteur package -# Images available at: https://hub.docker.com/r/jahnf/projecteur/tags FROM archlinux diff --git a/packaging/arch/PKGBUILD b/packaging/arch/PKGBUILD index 4785fdef..1d5ef904 100644 --- a/packaging/arch/PKGBUILD +++ b/packaging/arch/PKGBUILD @@ -8,7 +8,7 @@ pkgver=0 pkgrel=1 pkgdesc='Virtual laser pointer for inertial pointer devices on KDE Plasma Wayland' arch=('x86_64') -url='https://github.com/gbin/Projecteur-kde' +url='https://github.com/gbin/Projecteur' license=('MIT') depends=( 'gcc-libs' diff --git a/plasma/metadata.json b/plasma/metadata.json index bbcda992..8cab53ed 100644 --- a/plasma/metadata.json +++ b/plasma/metadata.json @@ -12,7 +12,7 @@ "License": "MIT", "Name": "Projecteur", "Version": "1.0", - "Website": "https://github.com/gbin/Projecteur-kde" + "Website": "https://github.com/gbin/Projecteur" }, "KPackageStructure": "Plasma/Applet", "X-Plasma-API-Minimum-Version": "6.0", diff --git a/src/main.cc b/src/main.cc index f3be3d64..c26abb37 100644 --- a/src/main.cc +++ b/src/main.cc @@ -38,15 +38,15 @@ namespace { i18n("A KDE Plasma spotlight for Logitech presenter devices."), KAboutLicense::MIT, i18n("Copyright 2018–2021 Jahn Fuchs\n" - "Fork modifications copyright 2026 Guillaume Binet"), + "Current development copyright 2026 Guillaume Binet"), {}, - QStringLiteral("https://github.com/gbin/Projecteur-kde"), - QStringLiteral("https://github.com/gbin/Projecteur-kde/issues")); + QStringLiteral("https://github.com/gbin/Projecteur"), + QStringLiteral("https://github.com/gbin/Projecteur/issues")); aboutData.setOrganizationDomain("projecteur.org"); aboutData.setDesktopFileName(QStringLiteral("org.projecteur.Projecteur")); aboutData.setOtherText( - i18n("Independent, unofficial KDE/Wayland fork based on Projecteur.\n\n" + i18n("Official KDE Plasma/Wayland edition of Projecteur.\n\n" "Build information:\n" "Git branch: %1\n" "Git hash: %2\n" @@ -56,7 +56,7 @@ namespace { QString::fromUtf8(projecteur::version_buildtype()))); aboutData.addAuthor( - QStringLiteral("Guillaume Binet"), i18n("KDE/Wayland fork maintainer"), {}, + QStringLiteral("Guillaume Binet"), i18n("Projecteur maintainer"), {}, QStringLiteral("https://github.com/gbin")); aboutData.addAuthor( QStringLiteral("Jahn Fuchs"), i18n("Original Projecteur author"), {}, From cfc077017ce439bfce170de289dad2025ad6e7a0 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Sat, 1 Aug 2026 10:25:48 -0500 Subject: [PATCH 58/67] Poor working Corrected and clarified the description of Projecteur. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 122fbf15..e8044f3c 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ ![Wayland only](https://img.shields.io/badge/display-Wayland_only-5c6bc0) [![MIT license](https://img.shields.io/badge/license-MIT-2ea44f)](./LICENSE.md) -Projecteur turns a Logitech Spotlight—or another supported presenter—into an +Projecteur turns a Logitech Spotlight 1/2 and another supported presenter into an on-screen spotlight your audience can see in the room, in a screen share, and in the recording. Point, magnify, change slides, run a timer, and keep everything close at hand in Plasma. @@ -35,7 +35,7 @@ close at hand in Plasma. ## See it in action -### Magnify the content, not the pixels +### Magnify the content Choose smooth scaling for images, edge-enhanced **Text and UI** mode for documents and application demos, or pixel-perfect scaling for source pixels. From 4ce04b0a8be0509221eb58610feca0edfa0b6706 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Sat, 1 Aug 2026 10:36:37 -0500 Subject: [PATCH 59/67] build: prepare portable 1.0 packages --- .gitignore | 5 +- CMakeLists.txt | 23 +- CONTRIBUTING.md | 4 +- README.md | 10 +- VERSION | 1 + ci/build-target.sh | 88 ++++++ ci/install-dependencies.sh | 72 +++++ cmake/modules/GitVersion.cc.in | 2 +- cmake/modules/LinuxDistributionInfo.cmake | 2 +- cmake/modules/LinuxPackaging.cmake | 9 +- cmake/modules/LinuxPkgCPackConfig.cmake.in | 8 +- cmake/modules/PkgDependenciesProjecteur.cmake | 18 +- .../modules/travis-ci-bintray-deploy.json.in | 30 --- cmake/templates/postinst.in | 14 +- doc/LinuxRepositories.md | 255 ++---------------- packaging/arch/PKGBUILD | 8 +- src/settings.cc | 15 +- 17 files changed, 264 insertions(+), 300 deletions(-) create mode 100644 VERSION create mode 100755 ci/build-target.sh create mode 100755 ci/install-dependencies.sh delete mode 100644 cmake/modules/travis-ci-bintray-deploy.json.in diff --git a/.gitignore b/.gitignore index 0535854a..dbd0ab0b 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ CMakeLists.txt.user* .vscode .idea *.code-workspace -build-* -build/* +/build-* +/build/* +/release-assets/ icons/icon-font/output/ diff --git a/CMakeLists.txt b/CMakeLists.txt index 3795b0d9..ee9a6631 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,13 @@ endif() set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") -project(Projecteur LANGUAGES C CXX) +file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" PROJECTEUR_RELEASE_VERSION + LIMIT_COUNT 1 REGEX "^[0-9]+\\.[0-9]+\\.[0-9]+$") +if(NOT PROJECTEUR_RELEASE_VERSION) + message(FATAL_ERROR "VERSION must contain one semantic version such as 1.0.0") +endif() + +project(Projecteur VERSION "${PROJECTEUR_RELEASE_VERSION}" LANGUAGES C CXX) add_compile_options(-Wall -Wextra -Werror) #set(CMAKE_CXX_CLANG_TIDY clang-tidy-12) @@ -26,7 +32,7 @@ set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) -find_package(Qt6 6.11 REQUIRED COMPONENTS Core DBus Gui Quick ShaderTools WaylandClient Widgets) +find_package(Qt6 6.10 REQUIRED COMPONENTS Core DBus Gui Quick ShaderTools WaylandClient Widgets) find_package(KF6 6.7 REQUIRED COMPONENTS Config ConfigWidgets CoreAddons DBusAddons GlobalAccel I18n Notifications Package KirigamiPlatform WidgetsAddons WindowSystem XmlGui) find_package(KPipeWire 6.7 REQUIRED) @@ -193,16 +199,17 @@ add_subdirectory(plasma) # Update this information - the version numbers and the version type. # VERSION_TYPE must be either 'release' or 'develop' set_target_properties(projecteur PROPERTIES - VERSION_MAJOR 1 - VERSION_MINOR 0 - VERSION_PATCH 0 - VERSION_TYPE develop - VERSION_DISTANCE_OFFSET 200 + VERSION_MAJOR "${PROJECT_VERSION_MAJOR}" + VERSION_MINOR "${PROJECT_VERSION_MINOR}" + VERSION_PATCH "${PROJECT_VERSION_PATCH}" + # Source archives do not contain .git. They must still report the release version. + VERSION_TYPE release + VERSION_DISTANCE_OFFSET 0 ) add_version_info(projecteur "${CMAKE_CURRENT_SOURCE_DIR}") # Create files containing generated version strings, helping package maintainers -get_target_property(PROJECTEUR_VERSION_STRING projecteur VERSION_STRING) +get_target_property(PROJECTEUR_VERSION_STRING projecteur VERSION_STRING_FULL) # Arch Linux = PKGBUILD/makepkg: '-' is not allowed in version number string(REPLACE "-" "" PROJECTEUR_VERSION_STRING_ARCHLINUX "${PROJECTEUR_VERSION_STRING}") file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/version-string" "${PROJECTEUR_VERSION_STRING}") diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 84804c7c..521eb0db 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -12,7 +12,7 @@ straight to a pull request. The current Projecteur development line targets: - KDE Plasma 6.7 or newer on Wayland -- Qt 6.11 or newer +- Qt 6.10 or newer - LayerShellQt and KPipeWire 6.7 or newer - Linux presenter devices exposed through evdev and hidraw @@ -24,7 +24,7 @@ Qt 5, X11, and non-Plasma support are maintained only for critical fixes on the - A C++17 compiler - CMake 3.20 or newer - Extra CMake Modules 6.7 or newer -- Qt 6.11 or newer with Core, DBus, Gui, Quick, ShaderTools, WaylandClient, and +- Qt 6.10 or newer with Core, DBus, Gui, Quick, ShaderTools, WaylandClient, and Widgets - KDE Frameworks 6.7 or newer: Config, ConfigWidgets, CoreAddons, DBusAddons, GlobalAccel, I18n, Notifications, Package, KirigamiPlatform, WidgetsAddons, diff --git a/README.md b/README.md index e8044f3c..3ae1eedd 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ close at hand in Plasma. [Projecteur highlighting and magnifying part of a presentation slide](./doc/screenshot-spot.png) > [!NOTE] -> The current development line requires **KDE Plasma 6.7 or newer**, **Qt 6.11 +> The current development line requires **KDE Plasma 6.7 or newer**, **Qt 6.10 > or newer**, and a **Wayland session**. The previous Qt 5, X11, and > cross-desktop codebase is maintained for critical fixes on the > [`legacy/qt5`](https://github.com/gbin/Projecteur/tree/legacy/qt5) branch. @@ -59,9 +59,11 @@ with native KDE controls. ## Install -Projecteur is under active development and currently distributed from source. -The install step is important: KWin grants zoom access using Projecteur's -installed desktop metadata, and the presenter needs the installed udev rules. +Stable releases provide source, Arch Linux, Fedora, openSUSE Tumbleweed, +Debian testing, and Ubuntu packages on the +[GitHub Releases page](https://github.com/gbin/Projecteur/releases). The install +step is important: KWin grants zoom access using Projecteur's installed desktop +metadata, and the presenter needs the installed udev rules. ### Arch Linux and Arch-based distributions diff --git a/VERSION b/VERSION new file mode 100644 index 00000000..3eefcb9d --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +1.0.0 diff --git a/ci/build-target.sh b/ci/build-target.sh new file mode 100755 index 00000000..f1392e7b --- /dev/null +++ b/ci/build-target.sh @@ -0,0 +1,88 @@ +#!/usr/bin/env bash +set -euo pipefail + +target="${1:?usage: build-target.sh TARGET}" +build_dir="build/ci-${target}" +# Package managers require an absolute path for locally built packages. +asset_dir="$(pwd)/release-assets/${target}" + +case "$target" in + fedora-rawhide|debian-sid) + package_target=0 + ;; + *) + package_target=1 + ;; +esac + +package_targets=OFF +if (( package_target )); then + package_targets=ON +fi +if [[ "$target" == "archlinux" ]]; then + package_targets=OFF +fi + +cmake -S . -B "$build_dir" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_UDEVRULESDIR=/usr/lib/udev/rules.d \ + -DPACKAGE_TARGETS="$package_targets" +cmake --build "$build_dir" --parallel 2 +"$build_dir/projecteur" --version +"$build_dir/projecteur" --help >/dev/null + +if (( ! package_target )); then + exit 0 +fi + +mkdir -p "$asset_dir" + +if [[ "$target" == "archlinux" ]]; then + package_output_dir=build/packages + if (( EUID == 0 )); then + # GitHub container jobs run as root, while makepkg deliberately refuses to. + build_user=projecteur-ci + if ! id "$build_user" >/dev/null 2>&1; then + useradd --system --create-home --user-group "$build_user" + fi + build_group="$(id -gn "$build_user")" + rootless_stage="$(pwd)/build/ci-arch-package" + package_output_dir="$(pwd)/build/ci-arch-packages" + install -d -o "$build_user" -g "$build_group" "$rootless_stage" "$package_output_dir" + runuser -u "$build_user" -- env \ + HOME="$(getent passwd "$build_user" | cut -d: -f6)" \ + GIT_CONFIG_COUNT=1 \ + GIT_CONFIG_KEY_0=safe.directory \ + GIT_CONFIG_VALUE_0="$(pwd)" \ + just arch_dir="$rootless_stage" package_dir="$package_output_dir" package + else + just package + fi + cp "$package_output_dir"/projecteur-[0-9]*.pkg.tar.zst "$asset_dir/" +else + cmake --build "$build_dir" --target dist-package + cp "$build_dir"/dist-pkg/* "$asset_dir/" + if [[ "$target" == "fedora-44" ]]; then + cmake --build "$build_dir" --target source-archive + cp "$build_dir"/dist-pkg/*_source.tar.gz "$asset_dir/" + fi +fi + +case "$target" in + archlinux) + pacman -U --noconfirm "$asset_dir"/projecteur-[0-9]*.pkg.tar.zst + ;; + fedora-44) + dnf -y -q install "$asset_dir"/*.rpm + ;; + tumbleweed) + zypper -qn --no-gpg-checks install -y "$asset_dir"/*.rpm + ;; + debian-testing|ubuntu-26.10) + DEBIAN_FRONTEND=noninteractive apt-get install -y -qq "$asset_dir"/*.deb + ;; +esac + +/usr/bin/projecteur --version +find "$asset_dir" -maxdepth 1 -type f -printf '%f\n' | sort diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh new file mode 100755 index 00000000..523f38db --- /dev/null +++ b/ci/install-dependencies.sh @@ -0,0 +1,72 @@ +#!/usr/bin/env bash +set -euo pipefail + +target="${1:?usage: install-dependencies.sh TARGET}" + +case "$target" in + archlinux) + pacman -Syu --noconfirm --needed \ + base-devel cmake extra-cmake-modules gettext git just pacman-contrib \ + kconfig kconfigwidgets kcoreaddons kdbusaddons kglobalaccel ki18n \ + knotifications kpipewire kwidgetsaddons kwindowsystem kxmlgui \ + layer-shell-qt libplasma libglvnd qt6-base qt6-declarative \ + qt6-shadertools qt6-wayland + ;; + fedora-44|fedora-rawhide) + dnf -y -q install \ + gcc-c++ cmake extra-cmake-modules gettext git pkgconf-pkg-config \ + systemd-devel rpm-build qt6-qtbase-devel qt6-qtdeclarative-devel \ + qt6-qtshadertools-devel qt6-qtwayland-devel kf6-kconfig-devel \ + kf6-kconfigwidgets-devel kf6-kcoreaddons-devel kf6-kdbusaddons-devel \ + kf6-kglobalaccel-devel kf6-ki18n-devel kf6-knotifications-devel \ + kf6-kpackage-devel kf6-kirigami-devel kf6-kwidgetsaddons-devel \ + kf6-kwindowsystem-devel kf6-kxmlgui-devel kpipewire-devel \ + libplasma-devel layer-shell-qt-devel + ;; + tumbleweed) + zypper -qn refresh + zypper -qn install -y \ + gcc-c++ cmake extra-cmake-modules gettext-tools git-core \ + pkgconf-pkg-config libudev-devel rpm-build qt6-base-devel \ + qt6-declarative-devel qt6-shadertools-devel qt6-wayland-devel \ + kf6-kconfig-devel kf6-kconfigwidgets-devel kf6-kcoreaddons-devel \ + kf6-kdbusaddons-devel kf6-kglobalaccel-devel kf6-ki18n-devel \ + kf6-knotifications-devel kf6-kpackage-devel kf6-kirigami-devel \ + kf6-kwidgetsaddons-devel kf6-kwindowsystem-devel kf6-kxmlgui-devel \ + kpipewire6-devel libplasma6-devel layer-shell-qt6-devel + ;; + debian-testing|debian-sid|ubuntu-26.10) + export DEBIAN_FRONTEND=noninteractive + apt-get update -qq + apt-get install -y -qq \ + build-essential cmake dpkg-dev extra-cmake-modules file gettext git \ + pkg-config udev libudev-dev qt6-base-dev qt6-declarative-dev \ + qt6-shadertools-dev qt6-wayland-dev libkf6config-dev \ + libkf6configwidgets-dev libkf6coreaddons-dev libkf6dbusaddons-dev \ + libkf6globalaccel-dev libkf6i18n-dev libkf6notifications-dev \ + libkf6package-dev libkirigami-dev libkf6widgetsaddons-dev \ + libkf6windowsystem-dev libkf6xmlgui-dev libkpipewire-dev \ + libplasma-dev liblayershellqtinterface-dev + ;; + *) + echo "error: unsupported CI target: $target" >&2 + exit 2 + ;; +esac + +case "$target" in + debian-testing) + . /etc/os-release + if [[ "${VERSION_CODENAME:-}" != "forky" ]]; then + echo "error: debian-testing no longer identifies as forky" >&2 + exit 1 + fi + ;; + ubuntu-26.10) + . /etc/os-release + if [[ "${VERSION_ID:-}" != "26.10" ]]; then + echo "error: ubuntu:devel is no longer Ubuntu 26.10" >&2 + exit 1 + fi + ;; +esac diff --git a/cmake/modules/GitVersion.cc.in b/cmake/modules/GitVersion.cc.in index d2f4e557..0f470e2a 100644 --- a/cmake/modules/GitVersion.cc.in +++ b/cmake/modules/GitVersion.cc.in @@ -1,7 +1,7 @@ #include "@TARGET@-GitVersion.h" namespace @TARGET@ { - const char* version_string() { return "@VERSION_STRING@"; } + const char* version_string() { return "@VERSION_STRING_FULL@"; } unsigned int version_major() { return @VERSION_MAJOR@; } unsigned int version_minor() { return @VERSION_MINOR@; } unsigned int version_patch() { return @VERSION_PATCH@; } diff --git a/cmake/modules/LinuxDistributionInfo.cmake b/cmake/modules/LinuxDistributionInfo.cmake index 4c7a62bd..b8c6dd35 100644 --- a/cmake/modules/LinuxDistributionInfo.cmake +++ b/cmake/modules/LinuxDistributionInfo.cmake @@ -35,7 +35,7 @@ function(get_linux_distribution VAR_DIST_NAME VAR_DIST_VERSION) endforeach() # Get distribution version/release - try different keys - foreach(var VERSION_ID DISTRIB_RELEASE VERSION) + foreach(var VERSION_ID VERSION_CODENAME UBUNTU_CODENAME DISTRIB_RELEASE VERSION) foreach(line IN LISTS rel_info_all) if( "${line}" MATCHES "^${var}=[\"]?([^ \"]*)") string(STRIP "${CMAKE_MATCH_1}" DIST_VERSION) diff --git a/cmake/modules/LinuxPackaging.cmake b/cmake/modules/LinuxPackaging.cmake index 8bffc905..5774974a 100644 --- a/cmake/modules/LinuxPackaging.cmake +++ b/cmake/modules/LinuxPackaging.cmake @@ -8,6 +8,7 @@ list(APPEND _LinuxPackaging_MAP_dist_pkgtype "debian::DEB" "ubuntu::DEB" "opensuse::RPM" + "opensuse-tumbleweed::RPM" "opensuse-leap::RPM" "fedora::RPM" "centos::RPM" @@ -171,10 +172,6 @@ function(add_dist_package_target) _cpack_default_packaging() endif() - configure_file( - "${_LinuxPackaging_DIRECTORY}/travis-ci-bintray-deploy.json.in" - "${CMAKE_CURRENT_BINARY_DIR}/travis-ci-bintray-deploy.json" @ONLY) - message(STATUS "Configured target 'dist-package' with Linux '${PKG_DIST}' and package type '${PKG_TYPE}'") # Make some information available to parent scope @@ -276,7 +273,7 @@ endfunction() # Default cpack packaging (DEB, RPM, TGZ) function(_cpack_default_packaging) - set(PKG_CPACK_PKG_FILENAME "${PKG_NAME}-${PKG_VERSION_STRING}_${PKG_DIST}-${CMAKE_SYSTEM_PROCESSOR}") + set(PKG_CPACK_PKG_FILENAME "${PKG_NAME}-${PKG_VERSION_STRING_BASE}-1_${PKG_DIST}-${CMAKE_SYSTEM_PROCESSOR}") set(PKG_CPACK_PKG_FILE_PREFIX "dist-pkg") set(PKG_CONFIG_TEMPLATE "${_LinuxPackaging_DIRECTORY}/LinuxPkgCPackConfig.cmake.in") set(PKG_CONFIG_FILE "${CMAKE_CURRENT_BINARY_DIR}/CPackConfig-${PKG_TYPE}.cmake") @@ -295,7 +292,7 @@ function(add_source_archive_target target) find_program(TAR_EXECUTABLE tar) find_program(GZIP_EXECUTABLE gzip) if(GIT_FOUND) - get_target_property(VERSION_STRING ${target} VERSION_STRING) + get_target_property(VERSION_STRING ${target} VERSION_STRING_FULL) execute_process(COMMAND ${GIT_EXECUTABLE} describe --always RESULT_VARIABLE result OUTPUT_VARIABLE GIT_TREEISH diff --git a/cmake/modules/LinuxPkgCPackConfig.cmake.in b/cmake/modules/LinuxPkgCPackConfig.cmake.in index 4f567623..22a897d4 100644 --- a/cmake/modules/LinuxPkgCPackConfig.cmake.in +++ b/cmake/modules/LinuxPkgCPackConfig.cmake.in @@ -19,6 +19,7 @@ set(CPACK_PACKAGE_FILE_NAME "@PKG_CPACK_PKG_FILENAME@") set(CPACK_OUTPUT_FILE_PREFIX "@PKG_CPACK_PKG_FILE_PREFIX@") set(CPACK_DEBIAN_PACKAGE_NAME "${CPACK_PACKAGE_NAME}") +set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) set(CPACK_RPM_PACKAGE_NAME "${CPACK_PACKAGE_NAME}") set(CPACK_RPM_COMPRESSION_TYPE gzip) set(CPACK_DEBIAN_PACKAGE_VERSION "@PKG_VERSION_STRING_BASE@") @@ -46,8 +47,10 @@ set(CPACK_DEBIAN_PACKAGE_SECTION "@PKG_DEBIAN_SECTION@") set(CPACK_DEBIAN_COMPRESSION_TYPE xz) # Set requires/depends -set(CPACK_RPM_PACKAGE_REQUIRES "@PKG_DEPENDENCIES@") -set(CPACK_DEBIAN_PACKAGE_DEPENDS "@PKG_DEPENDENCIES@") +if(NOT "@PKG_DEPENDENCIES@" STREQUAL "") + set(CPACK_RPM_PACKAGE_REQUIRES "@PKG_DEPENDENCIES@") + set(CPACK_DEBIAN_PACKAGE_DEPENDS "@PKG_DEPENDENCIES@") +endif() # Post and Pre-install actions if necessary set(CPACK_RPM_PRE_INSTALL_SCRIPT_FILE "@PKG_PREINST_SCRIPT@") @@ -69,4 +72,3 @@ set(CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION TRUE) if(NUM_PKG_CTRL_SCRIPTS) set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${PKG_DEBIAN_CTRL_EXTRA}") endif() - diff --git a/cmake/modules/PkgDependenciesProjecteur.cmake b/cmake/modules/PkgDependenciesProjecteur.cmake index cf7bb54a..39f8463d 100644 --- a/cmake/modules/PkgDependenciesProjecteur.cmake +++ b/cmake/modules/PkgDependenciesProjecteur.cmake @@ -1,7 +1,7 @@ list(APPEND _PkgDeps_Projecteur_archlinux - "qt6-base>=6.11" - "qt6-declarative>=6.11" - "qt6-wayland>=6.11" + "qt6-base>=6.10" + "qt6-declarative>=6.10" + "qt6-wayland>=6.10" "layer-shell-qt>=6.7" "kconfig>=6.7" "kconfigwidgets>=6.7" @@ -20,12 +20,22 @@ list(APPEND _PkgDeps_Projecteur_archlinux list(APPEND _PkgDepsMake_Projecteur_archlinux "fakeroot" "awk" "cmake>=3.20" "extra-cmake-modules>=6.7" "gettext" "make" "lsb-release" - "tar" "pkg-config" "qt6-shadertools>=6.11" + "tar" "pkg-config" "qt6-shadertools>=6.10" ) +set(_PkgDeps_Projecteur_debian "udev") +set(_PkgDeps_Projecteur_ubuntu "udev") +set(_PkgDeps_Projecteur_fedora "systemd-udev") +set(_PkgDeps_Projecteur_opensuse "udev") + list(APPEND PkgDependencies_MAP_Projecteur "archlinux::_PkgDeps_Projecteur_archlinux" "arch::_PkgDeps_Projecteur_archlinux" + "debian::_PkgDeps_Projecteur_debian" + "ubuntu::_PkgDeps_Projecteur_ubuntu" + "fedora::_PkgDeps_Projecteur_fedora" + "opensuse::_PkgDeps_Projecteur_opensuse" + "opensuse-tumbleweed::_PkgDeps_Projecteur_opensuse" ) list(APPEND PkgDependenciesMake_MAP_Projecteur diff --git a/cmake/modules/travis-ci-bintray-deploy.json.in b/cmake/modules/travis-ci-bintray-deploy.json.in deleted file mode 100644 index 059d420b..00000000 --- a/cmake/modules/travis-ci-bintray-deploy.json.in +++ /dev/null @@ -1,30 +0,0 @@ -{ - "package": { - "name": "projecteur-@PKG_VERSION_BRANCH@", - "repo": "Projecteur", - "subject": "jahnf", - "desc": "Automated build of Projecteur.", - "website_url": "https://github.com/gbin/Projecteur", - "issue_tracker_url": "https://github.com/gbin/Projecteur/issues", - "vcs_url": "https://github.com/gbin/Projecteur.git", - "github_use_tag_release_notes": false, - "licenses": ["MIT"], - "labels": ["linux", "wayland", "kde", "logitech", "spotlight", "desktop", "presentation"], - "public_download_numbers": false, - "public_stats": false - }, - - "version": { - "name": "@PKG_VERSION_STRING_FULL@", - "desc": "Automated package build of Projecteur (@PKG_VERSION_STRING_FULL@)", - "released": "@PKG_DATE@", - "gpgSign": false - }, - - "files": [ - {"includePattern": "dist-pkg/(.*)", - "uploadPattern": "packages/branches/@PKG_VERSION_BRANCH@/@PKG_VERSION_STRING_FULL@/$1" - } - ], - "publish": true -} diff --git a/cmake/templates/postinst.in b/cmake/templates/postinst.in index 641c1daf..81f06a92 100755 --- a/cmake/templates/postinst.in +++ b/cmake/templates/postinst.in @@ -1,5 +1,9 @@ -# Make sure uinput module is loaded -modprobe uinput -# Reload udev rules. -udevadm control --reload-rules -udevadm trigger +# Package installation can also run in containers and image builders where +# kernel modules and the udev daemon are intentionally unavailable. +if command -v modprobe >/dev/null 2>&1; then + modprobe uinput 2>/dev/null || true +fi +if command -v udevadm >/dev/null 2>&1; then + udevadm control --reload-rules 2>/dev/null || true + udevadm trigger 2>/dev/null || true +fi diff --git a/doc/LinuxRepositories.md b/doc/LinuxRepositories.md index def5ca00..5ccf4f0a 100644 --- a/doc/LinuxRepositories.md +++ b/doc/LinuxRepositories.md @@ -1,237 +1,38 @@ -# Projecteur Linux Repositories +# Projecteur packages -This document aims to list all Linux repositories where _Projecteur_ is available. +Official Projecteur release files are published exclusively through +[GitHub Releases](https://github.com/gbin/Projecteur/releases). Each release +contains checksums and GitHub-hosted provenance information. -Is something missing? Please let me know or create a pull request. +## Upstream release assets -## Official Repositories +Projecteur currently builds x86-64 packages for: -### Debian (and Debian based distributions) +- Arch Linux and Arch-based distributions (`.pkg.tar.zst`) +- Fedora 44 (`.rpm`) +- openSUSE Tumbleweed (`.rpm`) +- Debian testing (`.deb`) +- Ubuntu 26.10 (`.deb`) -The stable version of _Projecteur_ is available in Debian starting -with _Debian bullseye_. -See [this listing](https://packages.debian.org/search?keywords=projecteur&searchon=names&suite=all§ion=all) -for all available `projecteur` packages in Debian. +These files are standalone release downloads, not package repositories. Your +package manager can install a downloaded file and resolve its dependencies from +the distribution's normal repositories. -### Ubuntu +Fedora Rawhide and Debian sid are continuous compatibility checks. They do not +produce additional release downloads because their packages would duplicate a +supported target while becoming stale quickly. -Thanks to debian packages, _Projecteur_ is available in the official Ubuntu repositories -from Ubuntu 20.10 on. See: https://packages.ubuntu.com/search?keywords=projecteur&searchon=names +## Distribution repositories -### Gentoo Linux +Some distributions independently package Projecteur. Their versions and +support schedules are controlled by the respective maintainers: -See: https://packages.gentoo.org/packages/x11-misc/projecteur +- [Debian](https://packages.debian.org/search?keywords=projecteur&searchon=names&suite=all§ion=all) +- [Ubuntu](https://packages.ubuntu.com/search?keywords=projecteur&searchon=names) +- [Gentoo](https://packages.gentoo.org/packages/x11-misc/projecteur) +- [Arch User Repository](https://aur.archlinux.org/packages?K=projecteur) +- [openSUSE Software](https://software.opensuse.org/search?baseproject=ALL&q=projecteur) -## User Repositories - -### Arch Linux - -* https://aur.archlinux.org/packages/projecteur/ -* https://aur.archlinux.org/packages/projecteur-git/ - -### OpenSUSE - -User/community repositories: -* https://software.opensuse.org/package/projecteur?search_term=projecteur - -### Projecteur's Development Repositories - -Automated project builds from the development branch of _Projecteur_ are also -uploaded to [cloudsmith.io](https://cloudsmith.io/~jahnf/repos/projecteur-develop/packages/) -and are accessible as a Linux repository for different distributions. - -See also: - * https://cloudsmith.io/~jahnf/repos/projecteur-develop/setup/#formats-deb - * https://cloudsmith.io/~jahnf/repos/projecteur-develop/setup/#formats-rpm - -[![Cloudsmith OSS Hosting](https://img.shields.io/badge/OSS%20hosting%20by-cloudsmith-blue?logo=cloudsmith&style=for-the-badge)](https://cloudsmith.com) - -#### Debian Stretch - -```sh -apt-get install -y debian-keyring -apt-get install -y debian-archive-keyring -apt-get install -y apt-transport-https -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/gpg/gpg.544E6934C0570750.key' | apt-key add - -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/setup/config.deb.txt?distro=debian&codename=stretch' > /etc/apt/sources.list.d/jahnf-projecteur-develop.list -apt-get update -``` - -#### Debian Buster - -```sh -apt-get install -y debian-keyring -apt-get install -y debian-archive-keyring -apt-get install -y apt-transport-https -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/gpg/gpg.544E6934C0570750.key' | apt-key add - -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/setup/config.deb.txt?distro=debian&codename=buster' > /etc/apt/sources.list.d/jahnf-projecteur-develop.list -apt-get update -``` - -#### Debian Bullseye - -```sh -apt-get install -y debian-keyring -apt-get install -y debian-archive-keyring -apt-get install -y apt-transport-https -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/gpg/gpg.544E6934C0570750.key' | apt-key add - -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/setup/config.deb.txt?distro=debian&codename=bullseye' > /etc/apt/sources.list.d/jahnf-projecteur-develop.list -apt-get update -``` - -#### Debian Bookworm - -```sh -apt-get install -y debian-keyring -apt-get install -y debian-archive-keyring -apt-get install -y apt-transport-https -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/gpg/gpg.544E6934C0570750.key' | apt-key add - -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/setup/config.deb.txt?distro=debian&codename=bookworm' > /etc/apt/sources.list.d/jahnf-projecteur-develop.list -apt-get update -``` - -#### Ubuntu 18.04 - -```sh -apt-get install -y apt-transport-https -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/gpg/gpg.544E6934C0570750.key' | apt-key add - -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/setup/config.deb.txt?distro=ubuntu&codename=bionic' > /etc/apt/sources.list.d/jahnf-projecteur-develop.list -apt-get update -``` - -#### Ubuntu 20.04 - -```sh -apt-get install -y apt-transport-https -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/gpg/gpg.544E6934C0570750.key' | apt-key add - -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/setup/config.deb.txt?distro=ubuntu&codename=focal' > /etc/apt/sources.list.d/jahnf-projecteur-develop.list -apt-get update -``` - -#### Ubuntu 22.04 - -```sh -apt-get install -y apt-transport-https -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/gpg/gpg.544E6934C0570750.key' | apt-key add - -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/setup/config.deb.txt?distro=ubuntu&codename=jammy' > /etc/apt/sources.list.d/jahnf-projecteur-develop.list -apt-get update -``` - -#### Ubuntu 23.04 - -```sh -apt-get install -y apt-transport-https -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/gpg/gpg.544E6934C0570750.key' | apt-key add - -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/setup/config.deb.txt?distro=ubuntu&codename=lunar' > /etc/apt/sources.list.d/jahnf-projecteur-develop.list -apt-get update -``` - -#### OpenSuse 15.1 - -```sh -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/setup/config.rpm.txt?distro=opensuse&codename=15.1' > /tmp/jahnf-projecteur-develop.repo -zypper ar -f '/tmp/jahnf-projecteur-develop.repo' -zypper --gpg-auto-import-keys refresh jahnf-projecteur-develop jahnf-projecteur-develop-source -``` - -#### OpenSuse 15.2 - -```sh -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/setup/config.rpm.txt?distro=opensuse&codename=15.2' > /tmp/jahnf-projecteur-develop.repo -zypper ar -f '/tmp/jahnf-projecteur-develop.repo' -zypper --gpg-auto-import-keys refresh jahnf-projecteur-develop jahnf-projecteur-develop-source -``` - -#### OpenSuse 15.3 - -```sh -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/setup/config.rpm.txt?distro=opensuse&codename=15.3' > /tmp/jahnf-projecteur-develop.repo -zypper ar -f '/tmp/jahnf-projecteur-develop.repo' -zypper --gpg-auto-import-keys refresh jahnf-projecteur-develop jahnf-projecteur-develop-source -``` - -#### OpenSuse 15.4 - -```sh -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/setup/config.rpm.txt?distro=opensuse&codename=15.4' > /tmp/jahnf-projecteur-develop.repo -zypper ar -f '/tmp/jahnf-projecteur-develop.repo' -zypper --gpg-auto-import-keys refresh jahnf-projecteur-develop jahnf-projecteur-develop-source -``` - -#### OpenSuse 15.5 - -```sh -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/setup/config.rpm.txt?distro=opensuse&codename=15.5' > /tmp/jahnf-projecteur-develop.repo -zypper ar -f '/tmp/jahnf-projecteur-develop.repo' -zypper --gpg-auto-import-keys refresh jahnf-projecteur-develop jahnf-projecteur-develop-source -``` - -#### Fedora 31 - - ```sh -dnf install yum-utils pygpgme -rpm --import 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/gpg/gpg.544E6934C0570750.key' -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/setup/config.rpm.txt?distro=fedora&codename=31' > /tmp/jahnf-projecteur-develop.repo -dnf config-manager --add-repo '/tmp/jahnf-projecteur-develop.repo' -dnf -q makecache -y --disablerepo='*' --enablerepo='jahnf-projecteur-develop' --enablerepo='jahnf-projecteur-develop-source' -``` - -#### Fedora 32 - -```sh -dnf install yum-utils pygpgme -rpm --import 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/gpg/gpg.544E6934C0570750.key' -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/setup/config.rpm.txt?distro=fedora&codename=32' > /tmp/jahnf-projecteur-develop.repo -dnf config-manager --add-repo '/tmp/jahnf-projecteur-develop.repo' -dnf -q makecache -y --disablerepo='*' --enablerepo='jahnf-projecteur-develop' --enablerepo='jahnf-projecteur-develop-source' -``` - -#### Fedora 33 - -```sh -dnf install yum-utils pygpgme -rpm --import 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/gpg/gpg.544E6934C0570750.key' -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/setup/config.rpm.txt?distro=fedora&codename=33' > /tmp/jahnf-projecteur-develop.repo -dnf config-manager --add-repo '/tmp/jahnf-projecteur-develop.repo' -dnf -q makecache -y --disablerepo='*' --enablerepo='jahnf-projecteur-develop' --enablerepo='jahnf-projecteur-develop-source' -``` - -#### Fedora 34 - -```sh -dnf install yum-utils pygpgme -rpm --import 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/gpg/gpg.544E6934C0570750.key' -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/setup/config.rpm.txt?distro=fedora&codename=34' > /tmp/jahnf-projecteur-develop.repo -dnf config-manager --add-repo '/tmp/jahnf-projecteur-develop.repo' -dnf -q makecache -y --disablerepo='*' --enablerepo='jahnf-projecteur-develop' --enablerepo='jahnf-projecteur-develop-source' -``` - -#### Fedora 37 - -```sh -dnf install yum-utils pygpgme -rpm --import 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/gpg/gpg.544E6934C0570750.key' -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/setup/config.rpm.txt?distro=fedora&codename=37' > /tmp/jahnf-projecteur-develop.repo -dnf config-manager --add-repo '/tmp/jahnf-projecteur-develop.repo' -dnf -q makecache -y --disablerepo='*' --enablerepo='jahnf-projecteur-develop' --enablerepo='jahnf-projecteur-develop-source' -``` - -#### Fedora 38 - -```sh -dnf install yum-utils pygpgme -rpm --import 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/gpg/gpg.544E6934C0570750.key' -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/setup/config.rpm.txt?distro=fedora&codename=38' > /tmp/jahnf-projecteur-develop.repo -dnf config-manager --add-repo '/tmp/jahnf-projecteur-develop.repo' -dnf -q makecache -y --disablerepo='*' --enablerepo='jahnf-projecteur-develop' --enablerepo='jahnf-projecteur-develop-source' -``` - -#### CentOS 8 - -```sh -yum install yum-utils pygpgme -rpm --import 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/gpg/gpg.544E6934C0570750.key' -curl -1sLf 'https://dl.cloudsmith.io/public/jahnf/projecteur-develop/cfg/setup/config.rpm.txt?distro=el&codename=8' > /tmp/jahnf-projecteur-develop.repo -yum-config-manager --add-repo '/tmp/jahnf-projecteur-develop.repo' -yum -q makecache -y --disablerepo='*' --enablerepo='jahnf-projecteur-develop' -``` +Check that a downstream package is the Plasma 6 / Wayland edition before +installing it. The older Qt 5 edition remains available from the +[`legacy/qt5`](https://github.com/gbin/Projecteur/tree/legacy/qt5) branch. diff --git a/packaging/arch/PKGBUILD b/packaging/arch/PKGBUILD index 1d5ef904..ae15dc23 100644 --- a/packaging/arch/PKGBUILD +++ b/packaging/arch/PKGBUILD @@ -27,15 +27,15 @@ depends=( 'layer-shell-qt>=6.7' 'libplasma>=6.7' 'libglvnd' - 'qt6-base>=6.11' - 'qt6-declarative>=6.11' - 'qt6-wayland>=6.11' + 'qt6-base>=6.10' + 'qt6-declarative>=6.10' + 'qt6-wayland>=6.10' ) makedepends=( 'cmake>=3.20' 'extra-cmake-modules>=6.7' 'gettext' - 'qt6-shadertools>=6.11' + 'qt6-shadertools>=6.10' ) source=( 'projecteur-local.tar.gz' diff --git a/src/settings.cc b/src/settings.cc index 8e1df9ff..e1f746cd 100644 --- a/src/settings.cc +++ b/src/settings.cc @@ -22,6 +22,15 @@ #include namespace { + QQmlPropertyMap* createQmlPropertyMap(QObject* parent) + { +#if QT_VERSION >= QT_VERSION_CHECK(6, 11, 0) + return QQmlPropertyMap::create(parent); +#else + return new QQmlPropertyMap(parent); +#endif + } + // ----------------------------------------------------------------------------------------------- namespace settings { constexpr char showSpotShade[] = "showSpotShade"; @@ -175,7 +184,7 @@ namespace { // ------------------------------------------------------------------------------------------------- Settings::Settings(QObject* parent) : QObject(parent) - , m_shapeSettingsRoot(QQmlPropertyMap::create(this)) + , m_shapeSettingsRoot(createQmlPropertyMap(this)) { auto config = createConfig({}); m_config = std::make_unique(std::move(config)); @@ -186,7 +195,7 @@ Settings::Settings(QObject* parent) // ------------------------------------------------------------------------------------------------- Settings::Settings(const QString& configFile, QObject* parent) : QObject(parent) - , m_shapeSettingsRoot(QQmlPropertyMap::create(this)) + , m_shapeSettingsRoot(createQmlPropertyMap(this)) { auto config = createConfig(configFile); m_config = std::make_unique(std::move(config)); @@ -613,7 +622,7 @@ void Settings::shapeSettingsInitialize() { if (shape.shapeSettings().size() && m_shapeSettings.count(shape.name()) == 0) { - auto pm = QQmlPropertyMap::create(this); + auto pm = createQmlPropertyMap(this); connect(pm, &QQmlPropertyMap::valueChanged, this, [this, shape, pm](const QString& key, const QVariant& value) { From 6d5a3400884360e1ffbe23820f9bea5241dd77c0 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Sat, 1 Aug 2026 10:36:55 -0500 Subject: [PATCH 60/67] ci: build and release entirely on GitHub --- .github/dependabot.yml | 9 ++ .github/workflows/ci-build.yml | 84 ++++++++++++++----- .github/workflows/release.yml | 149 +++++++++++++++++++++++++++++++++ 3 files changed, 222 insertions(+), 20 deletions(-) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/release.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..871c592e --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,9 @@ +version: 2 +updates: + - package-ecosystem: github-actions + directory: / + schedule: + interval: weekly + labels: + - dependencies + - github-actions diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 4dacd2cf..cc088619 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -2,35 +2,79 @@ name: ci-build on: push: - branches: [master, develop] + branches: [develop, master] pull_request: - branches: [master, develop, "feature/**"] + branches: [develop, master] workflow_dispatch: +concurrency: + group: ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +env: + LC_ALL: C.UTF-8 + # GitVersion predates GitHub Actions and uses this value for detached checkouts. + TRAVIS_BRANCH: ${{ github.base_ref || github.ref_name }} + jobs: - archlinux: + build: + name: ${{ matrix.id }} runs-on: ubuntu-latest - container: archlinux:latest + continue-on-error: ${{ matrix.moving && github.base_ref != 'master' && github.ref_name != 'master' }} + container: + image: ${{ matrix.image }} + strategy: + fail-fast: false + matrix: + include: + - id: archlinux + image: archlinux:latest + moving: false + package: true + - id: fedora-44 + image: fedora:44 + moving: false + package: true + - id: tumbleweed + image: opensuse/tumbleweed:latest + moving: true + package: true + - id: debian-testing + image: debian:testing-slim + moving: true + package: true + - id: ubuntu-26.10 + image: ubuntu:devel + moving: true + package: true + - id: fedora-rawhide + image: fedora:rawhide + moving: true + package: false + - id: debian-sid + image: debian:sid-slim + moving: true + package: false steps: - - name: Install build dependencies - run: >- - pacman -Syu --noconfirm - base-devel cmake extra-cmake-modules gettext git kconfig kconfigwidgets kcoreaddons kdbusaddons - kglobalaccel ki18n knotifications kpipewire kwidgetsaddons kwindowsystem kxmlgui - layer-shell-qt libplasma qt6-base qt6-declarative qt6-wayland - - - uses: actions/checkout@v4 + - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 with: fetch-depth: 0 - - name: Configure - run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DPACKAGE_TARGETS=OFF + - name: Install dependencies + run: ./ci/install-dependencies.sh "${{ matrix.id }}" - - name: Build - run: cmake --build build --parallel 2 + - name: Build, package, and smoke test + run: ./ci/build-target.sh "${{ matrix.id }}" - - name: Smoke test - run: | - ./build/projecteur --version - ./build/projecteur --help + - name: Preserve package for one day + if: matrix.package + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 + with: + name: package-${{ matrix.id }} + path: release-assets/${{ matrix.id }}/ + if-no-files-found: error + retention-days: 1 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..b1abb271 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,149 @@ +name: release + +on: + push: + tags: ['v*'] + workflow_dispatch: + +concurrency: + group: release-${{ github.ref }} + cancel-in-progress: false + +env: + LC_ALL: C.UTF-8 + TRAVIS_BRANCH: master + +jobs: + validate: + name: validate-release-ref + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 + with: + fetch-depth: 0 + - name: Validate version and release ancestry + shell: bash + run: | + set -euo pipefail + version="$( SHA256SUMS + + - name: Attest release assets + uses: actions/attest-build-provenance@43d14bc2b83dec42d39ecae14e916627a18bb661 # v3 + with: + subject-path: release-assets/* + + - name: Preserve rehearsal bundle for one day + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 + with: + name: release-bundle + path: release-assets/ + if-no-files-found: error + retention-days: 1 + + - name: Create immutable GitHub release + if: github.event_name == 'push' + env: + GH_TOKEN: ${{ github.token }} + shell: bash + run: | + set -euo pipefail + tag="${GITHUB_REF_NAME}" + gh release create "$tag" --repo "$GITHUB_REPOSITORY" --verify-tag \ + --draft --generate-notes --title "Projecteur ${tag#v}" + gh release upload "$tag" release-assets/* --repo "$GITHUB_REPOSITORY" + gh release edit "$tag" --repo "$GITHUB_REPOSITORY" --draft=false --latest From 666a3aa2be31ade4a8df3003e81fd0f36187146c Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Sat, 1 Aug 2026 10:38:32 -0500 Subject: [PATCH 61/67] fix: preserve full version in source archives --- cmake/modules/ArchiveVersionInfo.cmake.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmake/modules/ArchiveVersionInfo.cmake.in b/cmake/modules/ArchiveVersionInfo.cmake.in index f83b832c..ceb934ab 100644 --- a/cmake/modules/ArchiveVersionInfo.cmake.in +++ b/cmake/modules/ArchiveVersionInfo.cmake.in @@ -9,7 +9,9 @@ set(@prefix@_VERSION_DISTANCE "@VERSION_DISTANCE@") set(@prefix@_VERSION_SHORTHASH "@VERSION_SHORTHASH@") set(@prefix@_VERSION_FULLHASH "@VERSION_FULLHASH@") set(@prefix@_VERSION_STRING "@VERSION_STRING@") +set(@prefix@_VERSION_STRING_FULL "@VERSION_STRING_FULL@") set(@prefix@_VERSION_ISDIRTY "@VERSION_ISDIRTY@") set(@prefix@_VERSION_BRANCH "@VERSION_BRANCH@") +set(@prefix@_VERSION_BUILDTYPE "@VERSION_BUILDTYPE@") set(@prefix@_VERSION_DATE_MONTH_YEAR "@VERSION_DATE_MONTH_YEAR@") set(@prefix@_VERSION_SUCCESS 1) From fb84a19781ba24abbbbaaeb409a3dcf82138f3fa Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Sat, 1 Aug 2026 10:44:11 -0500 Subject: [PATCH 62/67] ci: bootstrap Git before container checkout --- .github/workflows/ci-build.yml | 12 +++++++++++- .github/workflows/release.yml | 14 ++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index cc088619..657c5601 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -32,35 +32,45 @@ jobs: include: - id: archlinux image: archlinux:latest + bootstrap: pacman -Sy --noconfirm git moving: false package: true - id: fedora-44 image: fedora:44 + bootstrap: dnf -y -q install git moving: false package: true - id: tumbleweed image: opensuse/tumbleweed:latest + bootstrap: zypper -qn refresh && zypper -qn install -y git-core moving: true package: true - id: debian-testing image: debian:testing-slim + bootstrap: apt-get update -qq && DEBIAN_FRONTEND=noninteractive apt-get install -y -qq git moving: true package: true - id: ubuntu-26.10 image: ubuntu:devel + bootstrap: apt-get update -qq && DEBIAN_FRONTEND=noninteractive apt-get install -y -qq git moving: true package: true - id: fedora-rawhide image: fedora:rawhide + bootstrap: dnf -y -q install git moving: true package: false - id: debian-sid image: debian:sid-slim + bootstrap: apt-get update -qq && DEBIAN_FRONTEND=noninteractive apt-get install -y -qq git moving: true package: false steps: - - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 + - name: Bootstrap Git for checkout + run: ${{ matrix.bootstrap }} + + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b1abb271..7fd1a6ef 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,7 +20,7 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0 - name: Validate version and release ancestry @@ -47,29 +47,39 @@ jobs: include: - id: archlinux image: archlinux:latest + bootstrap: pacman -Sy --noconfirm git package: true - id: fedora-44 image: fedora:44 + bootstrap: dnf -y -q install git package: true - id: tumbleweed image: opensuse/tumbleweed:latest + bootstrap: zypper -qn refresh && zypper -qn install -y git-core package: true - id: debian-testing image: debian:testing-slim + bootstrap: apt-get update -qq && DEBIAN_FRONTEND=noninteractive apt-get install -y -qq git package: true - id: ubuntu-26.10 image: ubuntu:devel + bootstrap: apt-get update -qq && DEBIAN_FRONTEND=noninteractive apt-get install -y -qq git package: true - id: fedora-rawhide image: fedora:rawhide + bootstrap: dnf -y -q install git package: false - id: debian-sid image: debian:sid-slim + bootstrap: apt-get update -qq && DEBIAN_FRONTEND=noninteractive apt-get install -y -qq git package: false permissions: contents: read steps: - - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 + - name: Bootstrap Git for checkout + run: ${{ matrix.bootstrap }} + + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0 From bd758790a7b0945f0891d472f94bfd8afb3fb6b9 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Sat, 1 Aug 2026 10:45:54 -0500 Subject: [PATCH 63/67] ci: select GNU awk on Tumbleweed --- .github/workflows/ci-build.yml | 2 +- .github/workflows/release.yml | 2 +- ci/install-dependencies.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 657c5601..ef26a974 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -42,7 +42,7 @@ jobs: package: true - id: tumbleweed image: opensuse/tumbleweed:latest - bootstrap: zypper -qn refresh && zypper -qn install -y git-core + bootstrap: zypper -qn refresh && zypper -qn install -y git-core gawk moving: true package: true - id: debian-testing diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7fd1a6ef..35d1982f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -55,7 +55,7 @@ jobs: package: true - id: tumbleweed image: opensuse/tumbleweed:latest - bootstrap: zypper -qn refresh && zypper -qn install -y git-core + bootstrap: zypper -qn refresh && zypper -qn install -y git-core gawk package: true - id: debian-testing image: debian:testing-slim diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh index 523f38db..e0387a22 100755 --- a/ci/install-dependencies.sh +++ b/ci/install-dependencies.sh @@ -26,7 +26,7 @@ case "$target" in tumbleweed) zypper -qn refresh zypper -qn install -y \ - gcc-c++ cmake extra-cmake-modules gettext-tools git-core \ + gcc-c++ cmake extra-cmake-modules gettext-tools git-core gawk \ pkgconf-pkg-config libudev-devel rpm-build qt6-base-devel \ qt6-declarative-devel qt6-shadertools-devel qt6-wayland-devel \ kf6-kconfig-devel kf6-kconfigwidgets-devel kf6-kcoreaddons-devel \ From 7b9281558d8a3f03a2418dc13b54b60f06f735b2 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Sat, 1 Aug 2026 10:50:02 -0500 Subject: [PATCH 64/67] ci: trust the checked-out workspace in containers --- ci/build-target.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ci/build-target.sh b/ci/build-target.sh index f1392e7b..da2f0caa 100755 --- a/ci/build-target.sh +++ b/ci/build-target.sh @@ -6,6 +6,11 @@ build_dir="build/ci-${target}" # Package managers require an absolute path for locally built packages. asset_dir="$(pwd)/release-assets/${target}" +# Container jobs run as root while actions/checkout creates the worktree as the +# runner user. Trust this exact checkout so versioning and source archives can +# inspect Git history in subsequent container steps. +git config --global --add safe.directory "$(pwd)" + case "$target" in fedora-rawhide|debian-sid) package_target=0 From c81dce80509b0d9279128c965e98e6e456123d9f Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Sat, 1 Aug 2026 10:59:53 -0500 Subject: [PATCH 65/67] ci: refresh GitHub Actions runtime pins --- .github/workflows/ci-build.yml | 2 +- .github/workflows/release.yml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index ef26a974..20c08b59 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -82,7 +82,7 @@ jobs: - name: Preserve package for one day if: matrix.package - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: package-${{ matrix.id }} path: release-assets/${{ matrix.id }}/ diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 35d1982f..173fdde4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -99,7 +99,7 @@ jobs: - name: Stage release package if: matrix.package - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: release-${{ matrix.id }} path: release-assets/${{ matrix.id }}/ @@ -115,7 +115,7 @@ jobs: id-token: write attestations: write steps: - - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 + - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: pattern: release-* path: release-assets @@ -133,12 +133,12 @@ jobs: sha256sum -- * | sort -k2 > SHA256SUMS - name: Attest release assets - uses: actions/attest-build-provenance@43d14bc2b83dec42d39ecae14e916627a18bb661 # v3 + uses: actions/attest-build-provenance@0f67c3f4856b2e3261c31976d6725780e5e4c373 # v4.1.1 with: subject-path: release-assets/* - name: Preserve rehearsal bundle for one day - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: release-bundle path: release-assets/ From 749b5f5d7271c378325926997e7880fbc965d161 Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Sat, 1 Aug 2026 11:38:09 -0500 Subject: [PATCH 66/67] docs: list Norwii N95s BLE support --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3ae1eedd..55fc43dc 100644 --- a/README.md +++ b/README.md @@ -123,6 +123,7 @@ presenters vibrate when time expires. | AVATTO i10 Pro | USB | `2571:4109` | | August LP310 | USB | `69a7:9803` | | Norwii Wireless Presenter | USB | `3243:0122` | +| Norwii N95s BLE Presenter | USB receiver / Bluetooth | `3243:0382` / `3243:03a2` | | Kensington PowerPointer | USB | `1ea7:0002` | Projecteur can also accept an additional device at runtime with From ddb942d87355fd5a4f90212b22b66da61deb6d3e Mon Sep 17 00:00:00 2001 From: Guillaume Binet Date: Sun, 2 Aug 2026 10:40:40 -0500 Subject: [PATCH 67/67] provides a reference AUR PKGBUILD version --- packaging/aur/.SRCINFO | 44 +++++++++++++++++++++++++ packaging/aur/LICENSE | 10 ++++++ packaging/aur/PKGBUILD | 75 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 129 insertions(+) create mode 100644 packaging/aur/.SRCINFO create mode 100644 packaging/aur/LICENSE create mode 100644 packaging/aur/PKGBUILD diff --git a/packaging/aur/.SRCINFO b/packaging/aur/.SRCINFO new file mode 100644 index 00000000..ef3e03fb --- /dev/null +++ b/packaging/aur/.SRCINFO @@ -0,0 +1,44 @@ +pkgbase = projecteur-git + pkgdesc = Virtual laser pointer for inertial pointer devices on KDE Plasma Wayland + pkgver = 1.0.0alpha.77.r723.8f187bf + pkgrel = 1 + url = https://github.com/gbin/Projecteur + arch = x86_64 + license = MIT + makedepends = cmake>=3.20 + makedepends = extra-cmake-modules>=6.7 + makedepends = gettext + makedepends = git + makedepends = qt6-shadertools>=6.10 + depends = glibc + depends = hicolor-icon-theme + depends = kcolorscheme>=6.7 + depends = kconfig>=6.7 + depends = kconfigwidgets>=6.7 + depends = kcoreaddons>=6.7 + depends = kdbusaddons>=6.7 + depends = kglobalaccel>=6.7 + depends = kguiaddons>=6.7 + depends = ki18n>=6.7 + depends = kirigami>=6.7 + depends = knotifications>=6.7 + depends = kpipewire>=6.7 + depends = kwidgetsaddons>=6.7 + depends = kwindowsystem>=6.7 + depends = kxmlgui>=6.7 + depends = layer-shell-qt>=6.7 + depends = libgcc + depends = libglvnd + depends = libplasma>=6.7 + depends = libstdc++ + depends = qt6-base>=6.10 + depends = qt6-declarative>=6.10 + depends = qt6-wayland>=6.10 + depends = udev + depends = wayland + provides = projecteur + conflicts = projecteur + source = projecteur::git+https://github.com/gbin/Projecteur.git#branch=develop + sha256sums = SKIP + +pkgname = projecteur-git diff --git a/packaging/aur/LICENSE b/packaging/aur/LICENSE new file mode 100644 index 00000000..5aec2581 --- /dev/null +++ b/packaging/aur/LICENSE @@ -0,0 +1,10 @@ +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. diff --git a/packaging/aur/PKGBUILD b/packaging/aur/PKGBUILD new file mode 100644 index 00000000..d2f22ebe --- /dev/null +++ b/packaging/aur/PKGBUILD @@ -0,0 +1,75 @@ +# Maintainer: dosssman +# Contributor: Guillaume Binet + +pkgname=projecteur-git +pkgver=1.0.0alpha.77.r723.8f187bf +pkgrel=1 +pkgdesc='Virtual laser pointer for inertial pointer devices on KDE Plasma Wayland' +arch=('x86_64') +url='https://github.com/gbin/Projecteur' +license=('MIT') +depends=( + 'glibc' + 'hicolor-icon-theme' + 'kcolorscheme>=6.7' + 'kconfig>=6.7' + 'kconfigwidgets>=6.7' + 'kcoreaddons>=6.7' + 'kdbusaddons>=6.7' + 'kglobalaccel>=6.7' + 'kguiaddons>=6.7' + 'ki18n>=6.7' + 'kirigami>=6.7' + 'knotifications>=6.7' + 'kpipewire>=6.7' + 'kwidgetsaddons>=6.7' + 'kwindowsystem>=6.7' + 'kxmlgui>=6.7' + 'layer-shell-qt>=6.7' + 'libgcc' + 'libglvnd' + 'libplasma>=6.7' + 'libstdc++' + 'qt6-base>=6.10' + 'qt6-declarative>=6.10' + 'qt6-wayland>=6.10' + 'udev' + 'wayland' +) +makedepends=( + 'cmake>=3.20' + 'extra-cmake-modules>=6.7' + 'gettext' + 'git' + 'qt6-shadertools>=6.10' +) +provides=('projecteur') +conflicts=('projecteur') +source=('projecteur::git+https://github.com/gbin/Projecteur.git#branch=develop') +sha256sums=('SKIP') + +prepare() { + cmake -S "$srcdir/projecteur" -B "$srcdir/build" \ + -DCMAKE_BUILD_TYPE=None \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_UDEVRULESDIR=/usr/lib/udev/rules.d \ + -DPACKAGE_TARGETS=OFF +} + +pkgver() { + cd "$srcdir/projecteur" + printf '%s.r%s.%s' \ + "$(<"$srcdir/build/version-string.archlinux")" \ + "$(git rev-list --count HEAD)" \ + "$(git rev-parse --short=7 HEAD)" +} + +build() { + cmake --build "$srcdir/build" +} + +package() { + DESTDIR="$pkgdir" cmake --install "$srcdir/build" + install -Dm644 "$srcdir/projecteur/LICENSE.md" \ + "$pkgdir/usr/share/licenses/$pkgname/LICENSE" +}