libfwupdplugin1-1.5.8-150300.3.3.1 >  A b 5p9|+0LT"K Vse'۟mzAv:5ͬ97udRejE-sbʵڻ5yDP|a&ivMHYMAA]o_M%Ż~ËCx:ƬZ6Xp;ϯaVY;):/\|X侟f=xfZ eewQF晴!{1_fǜ xfabf6025738cb3ac53600979b290537ed4786029b643a5303133ae878ba6395290a574945b45a3ac25c9438a0ec6dc00ee451432 b 5p9|OħM]L dy 9ѝ)QyU.+7u9vcʤk2gs{@>0?,z.)׶(9]+ tfIpW"ic<+&0BDCZIVsRuvWC&y$ y|U\`-0 xǜ!K2Q1wy/̆)-Ƕh]c1[N)p-%w{n=wb#?VY3ڵS[]7F)>p>9D?94d % V% ;L_elt x |    (7 dB lBB(8R9LR:kR>2@2G2H2I2X27Y37\4(]40^4\b4hc5d5e5f5l5u5v5w6Hx6Py6X88890Clibfwupdplugin11.5.8150300.3.3.1Allow session software to update device firmwarefwupd is a daemon to allows session software to update device firmware on the local machine.b 5sheep52SUSE Linux Enterprise 15SUSE LLC GPL-2.0-or-later AND LGPL-2.1-or-laterhttps://www.suse.com/System/Librarieshttps://fwupd.org/linuxx86_64ȡb 4Wb 4a12d62a20f440581eec8ed490176c9f8e851f9c77e00ffbed75a860760dda9b4libfwupdplugin.so.1.0.0rootrootrootrootfwupd-1.5.8-150300.3.3.1.src.rpmlibfwupdplugin.so.1()(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.1.0)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.3.5)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.6.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.7.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.7.2)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.8.0)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.9.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.9.3)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.9.5)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.9.7)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.9.8)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.0)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.2)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.3)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.4)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.5)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.6)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.7)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.8)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.9)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.1.0)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.1.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.1.2)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.2.0)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.2.2)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.2.4)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.2.5)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.2.6)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.2.9)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.2)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.3)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.4)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.5)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.6)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.8)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.9)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.4.0)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.4.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.4.5)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.4.6)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.4.7)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.0)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.2)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.3)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.4)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.5)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.6)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.7)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.8)(64bit)libfwupdplugin1libfwupdplugin1(x86-64) @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    /sbin/ldconfig/sbin/ldconfigfwupdlibarchive.so.13()(64bit)libc.so.6()(64bit)libc.so.6(GLIBC_2.14)(64bit)libc.so.6(GLIBC_2.2.5)(64bit)libc.so.6(GLIBC_2.4)(64bit)libc.so.6(GLIBC_2.7)(64bit)libfwupd.so.2()(64bit)libfwupd.so.2(LIBFWUPD_0.1.1)(64bit)libfwupd.so.2(LIBFWUPD_0.7.0)(64bit)libfwupd.so.2(LIBFWUPD_0.9.3)(64bit)libfwupd.so.2(LIBFWUPD_0.9.8)(64bit)libfwupd.so.2(LIBFWUPD_1.0.0)(64bit)libfwupd.so.2(LIBFWUPD_1.0.8)(64bit)libfwupd.so.2(LIBFWUPD_1.1.0)(64bit)libfwupd.so.2(LIBFWUPD_1.1.2)(64bit)libfwupd.so.2(LIBFWUPD_1.1.3)(64bit)libfwupd.so.2(LIBFWUPD_1.2.4)(64bit)libfwupd.so.2(LIBFWUPD_1.2.5)(64bit)libfwupd.so.2(LIBFWUPD_1.2.9)(64bit)libfwupd.so.2(LIBFWUPD_1.3.6)(64bit)libfwupd.so.2(LIBFWUPD_1.3.7)(64bit)libfwupd.so.2(LIBFWUPD_1.4.0)(64bit)libfwupd.so.2(LIBFWUPD_1.4.1)(64bit)libfwupd.so.2(LIBFWUPD_1.4.5)(64bit)libfwupd.so.2(LIBFWUPD_1.5.0)(64bit)libfwupd.so.2(LIBFWUPD_1.5.1)(64bit)libfwupd.so.2(LIBFWUPD_1.5.5)(64bit)libfwupd.so.2(LIBFWUPD_1.5.8)(64bit)libgcab-1.0.so.0()(64bit)libgcab-1.0.so.0(LIBGCAB1_0.0)(64bit)libgcab-1.0.so.0(LIBGCAB1_0.2)(64bit)libgcab-1.0.so.0(LIBGCAB1_0.6)(64bit)libgcab-1.0.so.0(LIBGCAB1_1.0)(64bit)libgio-2.0.so.0()(64bit)libglib-2.0.so.0()(64bit)libgmodule-2.0.so.0()(64bit)libgobject-2.0.so.0()(64bit)libgudev-1.0.so.0()(64bit)libgusb.so.2()(64bit)libgusb.so.2(LIBGUSB_0.1.0)(64bit)libgusb.so.2(LIBGUSB_0.1.1)(64bit)libgusb.so.2(LIBGUSB_0.1.7)(64bit)libgusb.so.2(LIBGUSB_0.2.5)(64bit)libgusb.so.2(LIBGUSB_0.2.8)(64bit)libgusb.so.2(LIBGUSB_0.3.1)(64bit)libjcat.so.1()(64bit)libjcat.so.1(LIBJCAT_0.1.0)(64bit)libpthread.so.0()(64bit)libpthread.so.0(GLIBC_2.2.5)(64bit)libxmlb.so.2()(64bit)libxmlb.so.2(LIBXMLB_0.1.0)(64bit)libxmlb.so.2(LIBXMLB_0.1.1)(64bit)libxmlb.so.2(LIBXMLB_0.1.13)(64bit)libxmlb.so.2(LIBXMLB_0.1.15)(64bit)libxmlb.so.2(LIBXMLB_0.1.3)(64bit)libxmlb.so.2(LIBXMLB_0.1.4)(64bit)libxmlb.so.2(LIBXMLB_0.1.5)(64bit)libxmlb.so.2(LIBXMLB_0.1.6)(64bit)libxmlb.so.2(LIBXMLB_0.1.7)(64bit)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)1.5.83.0.4-14.6.0-14.0-15.2-14.14.3aZ@`e`c`KW`6?`.V_S_м@_$_i_F@__@_O@_"@_"@_"@_@^א^א^1^@^h^)^ @]@]@]c]8H@] \\-@\@\Yz\73\\U@\ @[k@[Q@[\[h@[Xf@[GB[E@Zľ@ZlZ@Z`@Z1@Z1@Z1@Z;@Z8@Z2gYYYX @XX*X*X*X*X*X*X*X*X*Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@UeU+U+jlee@suse.comglin@suse.comglin@suse.comglin@suse.comglin@suse.cominfo@paolostivanin.comglin@suse.comglin@suse.comglin@suse.comglin@suse.comglin@suse.comdimstar@opensuse.orgdimstar@opensuse.orgqkzhu@suse.comdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgyfjiang@suse.comdimstar@opensuse.orgdimstar@opensuse.orgglin@suse.comglin@suse.comhpj@urpla.netstefan.bruens@rwth-aachen.debjorn.lie@gmail.comschwab@suse.debjorn.lie@gmail.comglin@suse.comglin@suse.commpluskal@suse.commaurizio.galli@gmail.comdimstar@opensuse.orgglin@suse.commail@bernhard-voelker.debjorn.lie@gmail.comglin@suse.comschwab@suse.deglin@suse.comndas@suse.denico.kruber@gmail.comjengelh@inai.denico.kruber@gmail.comtchvatal@suse.comoliver@getspam.deoliver@getspam.dedimstar@opensuse.orgmpluskal@suse.comantoine.belvire@opensuse.orgfcrozat@suse.comdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgstefan.bruens@rwth-aachen.defcrozat@suse.comstefan.bruens@rwth-aachen.dedimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgmpluskal@suse.comzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.org- Add fwupd-bsc1193921-nvme-ignore-non-PCI-NVMe-devices.patch to ignore non-PCI NVMe devices (e.g. NVMe-over-Fabrics) when probing. (bsc#1193921)- Remove valgrind from BuildRequires since it's not a hard requirement anymore. (bsc#1184248)- Update to version 1.5.8: New features: * Add a new internal flag to opt-in to GUID matching * Add D501 Baklava device support * Add fu_device_set_battery_level() * Add missing uint64 read and write helpers * Add Qubes wrapper source and create packages * Allow enabling plugins only matching a specific HwId * Prompt for unlock keypress if reset command is blocked * Remove obsolete dell-dock non-passive update flow support * Remove the Hughski public key * Show a warning when parsing invalid quirk files * Support for GATT characteristic signals/notifications * Support more than one protocol for a given device Fixes: * Align the CCGX DMC firmware to 64 byte chunks * Be more strict for custom quirk keys * Check pixart firmware compatibility with hardware before flashing * Correct a thunderbolt assertion if kernel failed FW read * Correctly erase STM32 devices when transfer size is less than sector size * Detect SREC overflow to avoid adding ~4GB of 0xFF padding * Do not show a critical error when flashing footer-less binary files * Don't allow device updates while needing activation * Fix a regression in the elantp defined IAP start address * Fix a regression where activate stopped working * Fix firmware update of pointing device on Lenovo ThinkPad Nano * Fix the HSI plugin 'Disabled' state * Fix the quirk key name for the Lenovo HDMI with power * Fix writing to the GD32VF103 bootloader * Only call elantp->detach() when writing a firmware blob * Updated StarLabs GUIDs * Wait a few ms for the Logitech hardware to settle after detach - Remove GPG-KEY-Hughski-Limited from the filelist - Drop upstreamed patch + fwupd-bsc1182057-fix-sbat-section-copy.patch- Add fwupd-bsc1182057-fix-sbat-section-copy.patch to set the proper section flags for .sbat section so that objcopy can copy it into fwupd*.efi (bsc#1182057)- Update to version 1.5.7: New features: * Add initial support for Bluez bluetooth devices * Add more supported pixart devices * Add support for the RTD21xx HDMI converter Fixes * Convert MBR types to GPT GUIDs to help find the ESP * Do not allow updating a synaptics-mst device with no customer ID * Drop unused heap pages after startup has completed * Ensure SBAT metadata is added correctly * Move the plugin build logic to the plugins themselves * Only allow verify-update for plugins that support CAN_VERIFY - Specify SBAT metadata for openSUSE/SLE (bsc#1182057) - Adjust the meson options + plugin_uefi => plugin_uefi_capsule and plugin_uefi_pk + plugin_synaptics => plugin_synaptics_mst and plugin_synaptics_rmi + Disable Intel AMT plugin in non-x86 systems- Update to 1.5.6: New features: * Add SBAT metadata to the fwupd EFI binary * Add support for GD32VF103 as found in the Longan Nano * Add support for RMI PS2 devices * Add support for the System76 Keyboard * Allow downloading firmware from IPFS * Install the UX data into a single .tar.xz file * Add a plugin to update PixArt RF devices * Add new hardware to use the elantp and rts54hid plugins * Allow specifying more than one VendorID for a device * Detect the AMD TSME encryption state for HSI-4 * Detect the AMI PK test key is not installed for HSI-1 * Add Maple Ridge Thunderbolt firmware parsing support * Add --no-remote-check to ignore checking for download remotes * Allow creating FMAP and Synaptics firmware using builder.xml Fixes: * Add support for the Starlabs LabTop L4 * Allow using an external ESP again * Ask the user to reboot when required if downgrading * Be more paranoid when parsing ASCII buffers and devices * Check if the fwupd BootXXXX entry exists on failure * Clear the pending flag if restarting the system * Do not allow flashing using flashrom if BLE is enabled * Do not allow Lenovo hardware to install multiple capsules * Do not parse the OptionROM image * Do not show Unknown [***] for every client connection * Fix dnload wBlockNum wraparound for ST devices * Fix OOM when using large ArchiveSizeMax values * Fix several crashes spotted by AddressSanitizer * Fix several places where the Goodix MOC plugin could crash * Include the PCR0 to the report metadata * Report the lockdown status from UEFI and SuperIO plugins * Show a console warning if the system clock is not set * Fix flashing a fingerprint reader that is in use * Fix several critical warnings when parsing invalid firmware * Fix updating DFU devices that use DNLOAD_BUSY * Ignore the legacy UEFI OVMF dummy GUID * Make libfwupd more thread safe to fix a crash in gnome-software * Never show unprintable chars from invalid firmware in the logs * Allow using fwupdtool as non-root for firmware commands * Do not trust the Block.HintSystem boolean for ESP filtering * Fix a memory leak when parsing Synaptics firmware * Fix a possible crash when reading the Goodix MOC USB request * Fix crashes when parsing invalid FMAP, DMC, Solokey and Synaptics images - Deprecate fwupd-bsc1179790-disable-hintsystem.patch- Add fwupd-bsc1179790-disable-hintsystem.patch to remove Block.HintSystem from ESP filtering (bsc#1179790)- Update to version 1.5.3: + Lower the CURL version required to fix build in RHEL + Do not use meson ternary operations to avoid bumping the required meson version + Added Lite Mk III + Allow setting the GMainContext when used for sync methods + Fall back to the misc device for serio devices + Actually implement rescan in FuUdevDevice + bcm57xx: Refactor CRC code to remove extra byteswap + bcm57xx: Fix CRC check + synaptics-rmi: Don't crash if calling ->to_string() before - >setup() + Fix a possible critical warning due to missing retval + Add the serio->firmare_id for UDev devices + Export the driver name from FuUdevDevice + Allow the client to send PKCS7 and GPG signatures + Force the remote kind to JCat server-side + Only parse the signature if the remote is JCat + fu-main: Fix sender_features insert with wrong size + make platform integrity plugin optional and disabled by default + Add quirk for Western Digital + Mark more user-visible strings as translatable + modem-manager: validate firmware update method combinations + modem-manager: remove unused byte counts in QMI/PDC update logic + modem-manager: make sure the correct interface number is used for QMI + modem-manager: udev monitoring only if device switches layout + modem-manager: plug udev client leak + Restrict loading component types of firmware - Enable supported_build to clarify that this package is supported (bsc#1179790) - Drop fwupd-platform-integrity.conf since upstream disables the platform integrity module by default now due to incompleteness. - Address fwupd-refresh.service in %preun, %pre, %post, and %postun and provide a rc link for it - Version "Obsoletes: dbxtool" and "Obsoletes: fwupdate"- Update to version 1.5.2: + ata: Add OUI quirk for Toshiba + libfwupd: Restore recognizing gpg and pkcs7 types still + Register the SoupSession gtype when required + Switch from libsoup to libcurl + Fix sync method when called from threads without a context + Move ABI check to Github actions + Enable github workflows + libfwupd: Add fwupd_client_download_file() + libfwupd: Add fwupd_client_get_user_agent() + Only download the remote metadata as required + Add breaks for fwupdate 12-7 (Closes: #960688) + Install modules-load configs in the correct directory + vli: Do not be clever replugging the MSP430 device + vli: Make some trivial debugging more specific to help debug an issue + make gcab optional + Fall back to FAT32 internal partitions for detecting ESP + Add a flag to indicate if packages are supported + uefi: a new option for uefi configuration to use UEFI removable path + Add a section to man page on scripting + synaptics-mst: Improve reliability by waiting 2 seconds after writing data + hailuck: Add an plugin for the Pinebook Pro laptop + Allow setting global flags for FuHidDevice + Set the SMBIOS chassis type to portable if a DT battery exists + colorhug: Don't set the version format to triplet at startup + Allow components to set the icon from the metadata + colorhug: Fix detection of version on older firmware versions + bcm57xx: Fix reading vendor/device ids from firmware. + Remove HSI update and attestation suffixes + trivial: make dbxtool executable to fix snap build + Ignore an invalid vendor-id when adding releases for display + Notify the service manager when idle-quitting - Refresh fwupd-bsc1130056-change-shim-path.patch - Changes in BuildRequires: + Replace pkgconfig(libsoup-2.4) with pkgconfig(libcurl) + Replace pkgconfig(systemd) with pkgconfig(libsystemd) - fwupd-msr.conf and fwupd-platform-integrity.conf are moved to %{_modulesloaddir}.- Obsoletes and Provides dbxtool since fwupd 1.5.0+ now embeds dbxtool in the dbxtool plugin- Amend the spec file (jsc#SLE-16818) + Only enable fish support for Tumbleweed + Only enable the MSR plugin for x86 + Only install dbxtool in the architectures with UEFI support- Update to version 1.5.1: + Use UDisks to find out if swap devices are encrypted. + Show a link to discover more information about a specific plugin failure. + updated fish completions to 1.5.0. + Remove the duplicate parent-child data in FwupdDevice and FuDevice. + Show a less scary fwupdate output for devices without info. + thunderbolt: recognize authorized value of '2' as well. + bcm57xx: Make hotplug more reliable. + Use a different Device ID for the OptionROM devices. + contrib/ci: switch TPM simulator from ibmswtpm to swtpm. + Delete unused EFI variables when deploying firmware. + Fix probe warning for the Logitech Unifying device. + Include the amount of NVRAM size in use in the LVFS failure report. + Add external interface messages.- Update to version 1.5.0: + Add a compatible re-implementation of the rhboot dbxtool. + Add async versions of the library for GUI tools. + Add commands for interacting with the ESP to fwupdtool. + Add firmware-extract subcommand to fwupdtool. + Add FwupdPlugin so we can convey enumerated system errors to the end user. + Add plugin for Goodix fingerprint sensors. + Add plugin that can update the BCM5719 network adapter. + Add plugin to update Elan Touchpads using HID. + Add support for a delayed activation flow for Thunderbolt. + Add support for ChromeOS Quiche and Gingerbread. + Add support for Hyper hardware. + Add support for the Host Security ID. + Add support for ThunderBolt retimers. + Add switch-branch command to fwupdtool and fwupdmgr. + Allow blocking specific firmware releases by checksum. + Allow contructing a firmware with multiple images. + Allow firmware to require specific features from front-end clients. + Allow updating the dbx using the LVFS, validating it is safe to apply. + Include the HSI results and attributes in the uploaded report. + Support loading DMI data from DT systems. + Support LVFS::UpdateImage for GUI clients.- Add fwupd-jscSLE-11766-close-efidir-leap-gap.patch: Set SLE and openSUSE esp os dir at runtime (jsc#SLE-11766) - Drop _multibuild and build option -Defi_os_dir="%{efidir}": with the above patch fwupd can detect esp os dir dynamically - Update the efidir related %post and %postun scripts in spec file- Update to version 1.4.5: * Add XB_QUERY_FLAG_FORCE_NODE_CACHE * Add support for a delayed activation flow for Thunderbolt * Allow firmware to require specific features from front-end clients * Allow multi-byte FuUdevDevice preads and writes * Be more defensive when remotes are missing required keys * Disable the SQLite lookaside cache * ccgx: Add more hybrid dock support * ccgx: Modify readme to remove customer info * ccgx: add new protocol for dmc dock * ccgx: remove verify flag in plugin * modem-manager: read the vendor ID directly from sysfs attribute Fixes: #2209 * thelio-io: Add the DFU instance ID as a counterpart only * thunderbolt: Add a new subclassed thunderbolt firmware update type * thunderbolt: Allow quirks to skip the authentication step * thunderbolt: drop support for force power * tpm-eventlog: fix PCR0 calculation * uefi: check for free space after cleaning up ESP * vli: Add dual-image feature for VL103 backup firmware * vli: Add the project ID shared SPI PD controllers * vli: Allow chained usb hub devices where the parent needs GPIOB reset * vli: Do not modify the class vfuncs depending on device type * vli: Do not use GUID matching for the MSP device * vli: Rename FuVliUsbhubI2cDevice to FuVliUsbhubMsp430Device * vli: Set FuQuirks on the shared SPI object * vli: Set the i2c instance IDs in probe() * vli: Use the GPIOB reset for the MiniDock VL103 * vli: Wait for the root device to be replugged when updating the MSP430- Update to version 1.4.4: * Release fwupd 1.4.4 * Fix regression when checking for downgraded metadata- Update to version 1.4.3: * Release fwupd 1.4.3 * ata: A OUI quirk for Kingston * ccgx: Fix a potential division by zero * Check the device requirements when returning from GetDetails * fu-engine: Allow --plugin-whitelist to use dashes instead of underscores * Always enforce the metadata signature has a valid timestamp * ccgx: modify install duration for dmc device * ccgx: Add support for HP DMC dock devices * dell-dock: prevent updates to occur via synaptics-mst plugin * dell-dock: Capture the dock SKU in metadata * synaptics-prometheus: Force the minor version from 0x02 to 0x01 to make sure the devices can be updated back to 0x01. * Generate a body for github releases (Fixes: #2034)- Build the package separately for openSUSE and SLE using _multibuild (jsc#SLE-11744).- Update to version 1.4.2: * vli: Add no-guid-matching for all VLI devices * vli: Remove a copy-and-paste mistake * Add two OUI quirks * ata: Add WD OUI quirk 000cca * synaptics-rmi: Essentially blacklist Dell K12A * dfu: Avoid communicating when bitManifestationTolerant is off * ata: Add OUI quirk for Western Digital * dfu: Support MATEKF722SE quirk * Fix various build issues with -Wdiscarded-qualifiers * thunderbolt/dell-dock: Delay activation for Thunderbolt updates * Switch the default of EnumerateAllDevices to false * Add OUI quirk for SanDisk * vli: Add two standard USB instance IDs for shared-PD devices * vli: Use GPIOB to reset the VL817 found in two Lenovo products * tpm-eventlog: Correct the display of final calculated PCRs * wacom-raw: fixup switching to bootloader mode- Update to version 1.4.1: * thunderbolt: Don't show safe mode errors for USB4 host controllers * ep963x: Various changes to make the plugin actually work on real hardware * Make tss2-esys conditional * ep963x: Remove some dead code spotted by Coverity * ccgx: Only update the FW2 partition of the ThinkPad USB-C Dock Gen2 * ccgx: Expand the FWImageType for future hardware * Allow specifying the device on the command line by GUID * Fix the DeviceID set by GetDetails * wacom-usb: Fix a theoretical buffer over-read to make GCC happy * vli: Only show the i2c devices on the USB3 hub * Allow devices to be updatable, but only when upgrading a proxy device * Reset the progressbar time estimate if the percentage is invalid * ccgx: Always report 100% when finished writing * Add a device quirk that forces an explicit device-id match * ccgx: Set the device name and summary from quirk files * vli: Only do the APP5 FW bug fix on affected hardware * vli: Show all the buffer when debugging with FWUPD_VLI_USBHUB_VERBOSE * fu-engine: Refresh device name and format before setting supported flag * Allow a device to set the logical or physical ID during ->setup() * ccgx: Split out a trivial helper to set the instance IDs * ccgx: Set the device name to be more useful * ccgx: Set the logical ID as the FwMode * ccgx: Split out a trivial function to set the version * ccgx: Do not reboot the device write after installing * ccgx: Do no show the flash parameters when unknown * Allow devices to match the proxy device by GUID * Do not skip attach() if the device is marked _WILL_DISAPPEAR * dell-dock: Port to using fu_device_get_proxy() * Allow adding a device 'proxy' device that can do actions on it * vli: Do not show the USB 2 recovery devices for USB 3 hubs * vli: Add metadata to identify which is the same physical device * uefi: correctly format firmware version of Dynabook (né Toshiba) X30, X40 and probably others * synaptics-cxaudio: Use the ->attach() device vfunc * synaptics-cxaudio: Wait for the device to reboot after writing firmware * logitech_hidpp: decrease verbosity of messages that hid++ ID is missing * Prefer to update the child first if the order is unspecified * Do not modify the device priority for child devices- Exclude fwupdate from the architectures without UEFI support.- Update to version 1.4.0: * Release fwupd 1.4.0 * Allow removing device flags from quirk files * Use black to format python source in a consistent manner * Define SOURCE_VERSION when building a package * Only set the parent when adopting children * Do not conditionalize attach() and detach() on IS_BOOTLOADER * Do not crash the daemon if a plugin does something dumb * wacom-usb: Add more sanity checks in case the daemon goes crazy * wacom-usb: Use a per-device cleanup function * Add some more device regression tests * wacom-usb: Add a lot of missing metadata about the devices * wacom-usb: Hide a lot of debugging behind FWUPD_WACOM_VERBOSE * Only auto-add counterpart GUIDs when required * ccgx: remove update message * ccgx: add parent guid for hybrid dock * ccgx: Use a smaller timeout for i2c read and write operations * ccgx: Retry the register read and write with a i2c reset * ccgx: Fix buffer overflow when reading out i2c status * ccgx: Retry the HID disconnect up to 5 times * ccgx: Show a better error message on failure * ccgx: Allow forcing firmware of the wrong app_type with fwupdtool * Modularize the hardware tests * Ignore indirect devices that replug during the composite firmware update * Export the device state as part of the D-Bus interface * Fix devices that use CounterpartGuid when more than one device is installed * Use the GUID as a fallback rather than the connection ID * ccgx: Fix critical warning on i2c write failure * logitech-hidpp: Do not add peripheral devices for receiver in BL mode * Install the installed-tests only if tests are enabled * Load the signature to get the aliased CDN-safe version of the metadata * vli: Only reboot the USB hub once * synaptics-cxaudio: Only use the PATCH2 address when the patch level is 2 * add STM32F745 stm dfuse quirk * dfu: Add a way to set the timeout from a quirk * Export the release urgency * Export the release creation time * Check the firmware requirements before adding SUPPORTED * data/motd/fwupd-refresh: Only order after network.target * ccgx: Do not add the HID device that will disconnect * ccgx: Use Silicon ID and Application type to set flash parameters * Add a new daemon configuration option to control EnumerateAllDevices * logitech_hidpp: set the bootloader protocol * Install meson from pip for LGTM * bash: add completion for fwupdtool reinstall * fu-tool: add reinstall command * fu-engine: export fu_engine_get_releases_for_device in header * vli: Wait for the VL103 to timeout to fix detach * ccgx: Show the UpdateMessage in the correct device mode * ccgx: Add extra instance IDs to match specific firmware * Use a static version number * thunderbolt: Rather than hardcoding to PCI slot numbers, use domain in GUID * Revert "thunderbolt: Create a unique GUID including Thunderbolt controller path" * dell-dock: Port to fu_device_retry() * nitrokey: Convert to use FuHidDevice * nitrokey: Port to fu_device_retry() * vli: Port to fu_device_retry() * Add fu_device_retry() helper functionality * ccgx: Implement writing firmware to flash * ccgx: Add i2c status check when reading or writing registers * ccgx: Add 5ms delay between read registers to avoid an i2c error * libfwupdplugin: Use fu_device_locker_close() * synaptics-mst: Use fu_device_locker_close() * Add fu_device_locker_close() * ccgx: Do not store the silicon ID in the image address * ccgx: Add device quirks for the Lenovo Hybrid Dock * ccgx: Switch HID mode to HPI mode at startup * ccgx: Clear the event queue when in startup * ccgx: Wait for hardware to settle when coming out of reset * ccgx: Do not mark the device as updatable when in boot mode * ccgx: Verify the firmware app type when preparing firmware * ccgx: Set the update message when running in backup firmware * ccgx: Read the FwAppType from the hardware * ccgx: Set the HPI version number for the current firmware * ccgx: Get the silicon ID to map the flash parameters * ccgx: Read the HPI device mode at startup * ccgx: Set up the HPI I²C config at startup * ccgx: Create devices when in HID and I2C modes * Add a new ChromeOS CI target to build without GPG and PKCS7 * Use Jcat files in firmware archives and for metadata - Removed fu-keyring-gpg which caused CVE-2020-10759 (boo#1172643) * csr: Allow truncated HID reads * vli: Only consider the high nibble when building the sub-version * csr: Parse the firmware as a DFU file * Add support for EP963x hardware * Add FuHidDevice abstraction * vli: Correctly attach VL103 after a firmware update * ccgx: Parse the metadata block in the firmware image * ccgx: Add a firmare parser for cyacd files * logitech: Correctly set the protocol * Add the optional device-id to the update --help output * Fix a difficult-to-trigger daemon hang when replugging devices * vli: Remove a dock device from the whitelist that is never going to be updated * vli: Add some trivial debugging to help track down a bug * vli: Never add USB hub devices that are not upgradable * uefi: Don't use shim for non-secure boot configurations * Start fwupd-activate.service after snapd.service * dfu: Actually reload the DFU device after upgrade has completed * dfu: Add one more m-stack device requiring a quirk * Apply version format to releases and devices at same time * Ensure that the DeviceID is set for child devices * Fix a daemon crash when removing children * Allow waiting for the parent device when replugging * Add fu_device_get_root() shared API * vli: Fix an error when detaching MSP430 * vli: Fix a critical warning when getting the USB speed * vli: Fix the error enum values for the MSP430 * Do not add blank lines when tokenizing Intel hex files * vli: Fix the version calculation for MSP430 * vli: Ignore one more error when attaching * vli: Always expect the VL103 header at 0x1003 or 0x4000 * vli: Do not fall back to the recovery write for usbhubs * vli: Only show the 2nd header if the device ID is valid * vli: Fix VL103 reboot from ROM mode to FW mode * vli: Add some better comments for writing GPIOs * Add a helper script to add a DFU header * Add 'firmware-convert' subcommand to fwupdtool * fu-engine: Make two passes of requirements checking * fu-engine: Copy the VersionFormat from the CAB if specified in `get-details` * Add a new plugin for CPU microcode * Don't build/install fwupdagent man page if agent build is not requested * Introduce a new VersionFormat for `hex` * Drop UEFI quirks we now inherit from metadata * ci: build Debian using libflashrom * When TPM PCR0 measurements fail, query if secure boot is available and enabled * fix fwupd.shutdown.in according to the movement of fwupdtool to bindir * ata: Add OUI quirk for Western Digital and Intel * improved fish shell completion * vli: Set the MSP430 version format to pair * Always return AppStream markup for remote agreements * ata: Add trivial OUI quirk for Micron * added completion script for fish shell * Do not fail loading in /etc/machine-id is not available * Use xb_builder_source_add_simple_adapter * Create FuCabinet and untangle a lot of legacy code * nvme: Do not try to handle integer version numbers * Allow server metadata to set the version format on some devices * fu-tool: Correctly append the release to devices in `get-details` * For the `get-details` command make sure to always show devices * fu-engine: Copy the version and format from donor device in get-details * fu-engine: Use unknown for version format by default on get-details * Inihbit all power management actions using logind when updating * Decouple the version format from the version itself * Add raw versions for bootloader and lowest * Allow server metadata to set the device name on some devices * Remove support for GCab less than v1.0 * fu-device-list: Check protocol before de-duping devices * Do not allow devices that have no vendor ID to be UPDATABLE * ata: Include a vendor ID for ATA hardware * ata: Switch off the verbose logging by default * Always check for PLAIN when doing vercmp() operations * Discard the reason upgrades aren't available (Fixes: #1678) * Improve the description of `fwupdtpmevlog` for man page * Move `fwupdtpmevlog` into `bindir` * uefi: Move `fwupdate` into `bindir` * Move `fwupdtool` and `fwupdagent` into `bindir` * Use the system provided flashrom on Fedora * Add a plugin vfunc to run after subclassed FuDevice creation * ci: use standalone script to generate build dependencies * Move the daemons from /usr/lib/fwupd to /usr/libexec/fwupd * Use the recently released flashrom v1.2 * Generate an additional UEFI quirk file using the stable LVFS metadata * uefi: Apply capsule update even with single valid capsule * Fix a critical warning when installing some firmware * ebitdo: Fix the endpoint address logged in the error message * uefi: Find the correct lds and crt name when specifying -Defi_ldsdir * upower: Move battery threshold declaration into a configuration file * upower: Decrease minimum battery requirement to 10% - Refresh fwupd-bsc1130056-change-shim-path.patch - Add new dependency: jcat- Update to version 1.3.9: * Release fwupd 1.3.9 * Always check for PLAIN when doing vercmp() operations * improved fish shell completion * vli: Set the MSP430 version format to pair * added completion script for fish shell * Always return AppStream markup for remote agreements * Do not fail loading in /etc/machine-id is not available * fu-engine: Fixup broken-ness from 0c0fada18fc9cb2a0efec351db67f0867bf045cd * Use xb_builder_source_add_simple_adapter * fu-tool: Correctly append the release to devices in `get-details` * For the `get-details` command make sure to always show devices * fu-engine: Copy the version and format from donor device in get-details * fu-engine: Use unknown for version format by default on get-details * Inihbit all power management actions using logind when updating * fu-device-list: Check protocol before de-duping devices * ata: Switch off the verbose logging by default * Discard the reason upgrades aren't available (Fixes: #1678) * Improve the description of `fwupdtpmevlog` for man page * Move `fwupdtpmevlog` into `bindir` * uefi: Move `fwupdate` into `bindir` * Move `fwupdtool` and `fwupdagent` into `bindir` * ci: use standalone script to generate build dependencies * Move the daemons from /usr/lib/fwupd to /usr/libexec/fwupd * Use the recently released flashrom v1.2 * uefi: Apply capsule update even with single valid capsule * Fix a critical warning when installing some firmware * ebitdo: Fix the endpoint address logged in the error message * fu-util: fix a logic error in report uploading introduced in e076d48afb74d1447936d353f12781755f13b047 * uefi: Find the correct lds and crt name when specifying -Defi_ldsdir * upower: Move battery threshold declaration into a configuration file * upower: Decrease minimum battery requirement to 10% - Update to version 1.3.8: * Release fwupd 1.3.8 * Do not use fu_common_vercmp() when the device verfmt is PLAIN * altos: Output raw buffer data when using FWUPD_ALTOS_VERBOSE * altos: Prefix an error to provide more context * altos: Add a trivial _to_string() implementation * synaptics-cxaudio: Make the verfmt match that of the existing Windows tools * synaptics-mst: Allow MST to fall back if no PCI device is marked as parent * Allow specifying a list of subsystems when setting a physical ID * synaptics-mst: Fix trivial thinko caused by the wrong dock connected * vli: Invert the logic to reboot the parent FuCliUsbhubDevice, not the child * vli: Switch around the hub tier values * uefi: Fix a build regression with Fedora 30 * logitech_hidpp: Ignore detach failures (Fixes: #1183) * logitech_hidpp: When detaching to bootloader use non-blocking IO and wait for timeout * vli: Show erase progress when doing a v2 recovery * uefi: Do not remove the 'Linux Firmware Updater' boot entry before update * uefi: Do not rewrite BootOrder in the EFI helper * vli: Add support for the PS186 device * Set up more parent devices for various Lenovo USB hubs * cxaudio: Set the update protocol to prevent a daemon warning * vli: Add support for Lenovo Modularized dock * Add an extra instance ID to disambiguate USB hubs * vli: Remove the unused tierX custom flags for each device * Revert "Correctly delete UEFI variables" * uefi: make debugging output more readable * vli: Fix a potential buffer-overflow when parsing firmware * tpm: Optimize the string parsing and fix the boolean logic * synaptics-rmi: Add a missing error enum value * synaptics-rmi: Correctly identify a checksum failure * synaptics-rmi: Fix Coverity issue that is impossible to hit in reality * solokeys: Parse old versions of the bootloader string * Add a plugin to update PD controllers by Fresco Logic * vli: Set the device progress correctly when erasing a PD device * vli: Use the correct command to get the device firmware version * vli: Correctly reset all VL100 devices * vli: Set all standalone PD devices to not do SPI auto-detection * vli: Mark standalone PD devices as updatable * vli: Set the protocol for FuVliUsbhubPdDevice types * Support the new gnuefi file locations * Cleanup ancient fwupdate-* EFI variables too (Fixes: #1739) * Detect kernel lockdown status * vli: Add the DEV instance ID to all devices * tpm-eventlog: Replay the TPM event log to get the PCRx values * tpm-eventlog: Store the eventlog hashes in binary form - Update to version 1.3.7: * Release fwupd 1.3.7 * Correctly delete UEFI variables * ci: allow working with podman w/o aliases * ci: fedora: force correct rpm package version * src: fu-engine: check version was updated by checking version * Correctly import PKCS-7 remote metadata * Add 'refresh' to fwupdtool * Add 'get-remotes' to fwupdtool * Generate a win32 setup binary * Fix display of UTF-8 characters on Windows * Move MOTD population into the daemon * fu-util: Discourage metadata refreshes more than once per day * Disable the battery percentage checks if UPower is unavailable * Allow getting the list of updates in JSON format from fwupdagent * Revert "trivial: Attempt to fix Debian CI" * fu-remote-list: emit a changed signal when modifying a remote * synaptics-mst: Skip self tests for systems with amdgpu * Allow applying all releases to get to a target version * Split up fu_engine_install() into two halves * logitech_hidpp: use the correct timeout for IO channel writes * Allow quirking devices that always require a version check * Shut down automatically when there is system memory pressure * Show the device parent if there is an interesting child * Allow the client to get the list of FwupdDevice children * Set the FwupdDevice parents in fwupdtool * Don't always get the vendor ID for udev devices using the parent * Add a runtime warning when adding a device without an vendor-id or protocol set * vli: Set more of the firmware max sizes automatically * vli: Add a SpiAutoDetect quirk for some of the PD devices * vli: Use a different protocol ID for i2c devices * vli: Add support for standalone Single PD devices * vli: Move generic SPI functionality into the FuVliDevice base class * vli: Remove the PD emulation code * vli: Use a more standard GUID for the child i²c and shared SPI devices * vli: Allow setting the device kind from a quirk * vli: Make more function names match the docs * vli: Move the SPI command quirking from FuVliUsbhubDevice down to FuVliDevice * vli: Rename FuVliUsbhubPdFirmware to FuVliPdFirmware * vli: Allow the device to specify the PD firmware header offset * vli: Add a FuVliDevice as a subclass to FuVliUsbhubDevice * vli: Define the device GType in the quirk file * vli: Move the CRC calculations out of usbhub scope * vli: Have one 'DeviceKind' for all objects * vli: Rename the `vli_usbhub` plugin to `vli` * Capitalize GNOME - package has grown a few new binaries: fwupdagent, fwupdate, fwupdtool and a tpm event debugging tool, that is packaged separately: fwupdtpmevlog- Drop docbook-utils-minimal build dependency, manpages are generated with gtk-doc.- Update to version 1.3.6: * plugins/coreboot: Add missing fu_hash dependency * trivial: synaptics-cxaudio: Add Google type C <-> 3.5mm adapter * fu-engine: don't expose bootloader version errors to users * trivial: dell-dock: drop unused quirk keyx * trivial: rename synapticsmst to synaptics-mst * trivial: actually set vendor ID for synaptics * fu-remote-list: Drop fallback path behavior * libfwupdplugin: Make sure systemd created environment variables exist * trivial: fu-remotes-list: drop usage of `FU_SELF_TEST_REMOTES_DIR` * trivial: synaptics-rmi: hardcode Vendor string * trivial: Set vendor ID for Dell WD19 to USB:0x413C (Fixes: #1653) * trivial: Document the use of vendor-id in each plugin * superio: Use the baseboard vendor as the vendor ID * uefi: Use the BIOS vendor as the vendor ID * coreboot: Use the BIOS vendor as the vendor ID * flashrom: Use the BIOS vendor as the vendor ID * dell: Hardcode a plausible vendor ID * emmc: Set the correct vendor ID prefix * fu-util-common: correct the default prompt for reboot/shutdown (Fixes: #1617) * Split out the remote loading from FuConfig * vli-usbhub: Fix the quirk for the legacy VIA 813 chip * Clarify error messages when no upgrades available * trivial: Don't handle a vendor-id requirement error that cannot happen * Only check the vendor ID if the device has one set * fu-install-task: Enforce that device protocol matches metadata * Add a new plugin that can parse the TPM event log * Allow other plugins to contribute report metadata * trivial: dell: hardcode the physical device ID for tpm to match the tpm plugin * Add a new plugin that exposes the system TPM device firmware version * Add fu_udev_device_set_flags() * trivial: Render large values of VersionRaw in a more portable way * trivial: wacom-raw: mark all Moffett SKUs as self recovery * Throw exit status 0 (instead of 2) if there is no firmware to be updated * Add a `dell-bios` version format * Add support for multiple LVFS::VersionFormat tags * Do not do semver conversion in fu_common_vercmp() * trivial: Deprecate fu_common_version_parse() * trivial: Support 'plain' in fu_common_version_from_uintXX() * Add the sysfs 'description' as the one-line device summary * trivial: Also print the parent keys when using FU_UDEV_DEVICE_DEBUG * trivial: Add fu_common_version_from_uint64() * trivial: Convert the VersionRaw value to a uint64_t for future use * Allow building on Windows with MinGW * synaptics-prometheus: Allow incremental version major and minor number * Replace 'scheduing' with 'scheduling' * Export the raw device version to the client --verbose output * trivial: Only dlopen the test plugin once * Export the device protocol to the client --verbose output * trivial: installed-tests: try to display journal for failed tests * trivial: ci: debian: enable verbose daemon logging for failure analysis * trivial: installed-tests: explicitly choose webcam device ID * trivial: debian: remove obj-* built files to fix back to back builds * trivial: ci: don't let bad symlinks cause debian build failures * trivial: debian: correct a dependency for libfwupdplugin-dev - Changes from version 1.3.5: * plugins: Fix potential use of NULL pointer in fu_dell_dock_mst_write_register * Fix shifting integer by more than 31 in fu_util_filter_device * synaptics-prometheus: Reload the device version after IOTA update * synaptics-prometheus: Reload the device version after update * trivial: wacom: remove coretronic config from Moffett scope * trivial: Fix a NULL/FALSE confusion * trivial: Add a BR for Fedora * trivial: Fix coreboot commit to fix CI * trivial: libfwupdplugin: clarify name of self test * plugins/coreboot: Improve version detection * plugins/coreboot: Get rid of FU_HWIDS_KEY_BIOS_VENDOR in coldplug * trivial: Move progressbar out of libfwupdplugin * trivial: Unexport fu_test_get_filename() * trivial: Unexport fu_test_compare_lines() * trivial: Unexport fu_test_loop_run_with_timeout() * trivial: Do not include non-introspectable functions in the GIR * trivial: Fix up a few introspection problems in FwupdPlugin * trivial: Include the Fwupd GIR in the FwupdPLugin GIR * trivial: Never add duplicate symbols to the map file * trivial: Properly namespace the defines in the exported header * Install development files for libfwupdplugin * Convert libfwupdprivate to a shared library libfwupdplugin * trivial: Allow building GCab from a subpackage * trivial: Fix under-include to define O_RDONLY * trivial: Allow compiling without * trivial: Do not use FuProgressbar in dfu-tool * synaptics-prometheus: Manually set the bootloader mode when attaching * trivial: Split out a new helper funtion * trivial: Add some optional debugging when hotplugging devices * trivial: Include the correct header for S_IRWXU * Always use the more portable 3-arg form for open() * trivial: Untangle FuHistory from FuPlugin * trivial: Allow compiling without * Revert "synaptics-rmi: Use the build ID as the version number to match the vendor tool" * Add missing documentation from the plugin interface * trivial: fu-udev-device: remove a prototype that was missed in b3d4d2ff * trivial: add missing gtk-doc fields for many files in src/ * trivial: fix compile failure without gudev * synaptics-prometheus: Mirror the _IS_BOOTLOADER from device to config * Allow setting the device flags using GObject properties * vli_usbhub: Set the composite parent at construction time * synaptics-prometheus: Set the composite parent at construction time * Allow plugins to set the parent during construction * vli-usbhub: Whitelist the PD and I²C devices * Set the protocol per-device not per-plugin * synaptics-rmi: Use the build ID as the version number to match the vendor tool * Create a REV_00 instance ID as this may be what the vendor needs to target * fu-util-common: Invert default behavior for reboot and shutdown prompts * trivial: fu-plugin-vfuncs: Add GTK documentation for all vfuncs * Make gudev a compile-time option * trivial: Set the offline trigger using an environment variable * trivial: ci: pull lintian from unstable for now. * trivial: stop including fu-hash.h as part of fu-plugin-vfuncs.h * Fix shebangs on scripts * trivial: Use prefixes for DATADIR in config.h for portability * Allow compiling GUsb as a subproject * trivial: fu-udev-device: add a to_string func for debugging * trivial: Don't assume that plugins end in .so * trivial: optionrom: remove unneeded includes * trivial: debian: ci: ignore library-not-linked-against-libc for more * trivial: remove version-format.md * trivial: Allow compiling without pwrite() * trivial: Allow compiling without * trivial: Allow compiling without realpath() * trivial: Allow compiling without HAVE_LC_MESSAGES * trivial: Allow compiling without getuid() * trivial: Allow compiling without * trivial: Allow compiling without * trivial: Allow compiling without * Ensure the _get_type() gets the same ABI version as the constructor * Use the correct unlocker when using GRWLock * trivial: plugins: only build coreboot when option set * fwupdtool: don't show a warning when calling `get-plugins` - Changes from version 1.3.4: * trivial: Don't force specific linker flash when cross building * dell: Use the more portable g_usleep() * trivial: Fix unused header includes * vli-usbhub: Make erasing less verbose and writing more obvious * vli-usbhub: Correctly print the 24-bit USB3 offset * vli-usbhub: Print the PD firmware offset and size for debugging * vli-usbhub: Open the parent device before attempting to read or write from the child * vli-usbhub: Set the install duration for the PD device * trivial: Fix a failed error prefix string * trivial: wacom-raw: Remove embedded from device name * wacom-raw: Correct HWID support * uefi: Just use a uint16_t for BootNext processing * uefi: Use a simpler entries set algorithm * vli-usbhub: Add support for writing using I2C passthru * vli-usbhub: Support updating PD devices that share the hub flash * vli-usbhub: Support the PD file format * trivial: uefi: correct a NULL pointer dereference * uefi: fall back to `ID_LIKE` when the path for `ID` doesn't exist (Fixes:# 1566) * uefi: Make generate_binary.sh more robust * Tokenize the Intel Hex file before parsing * trivial: Detect the USB version automatically * trivial: fu-util/fu-tool: explicitly block unsupported flags * Add support for matching requirements on device parents * Skip cleanup after device is done updating if `will-disappear` is set (Fixes: #1529) * efi: use a wildcard section copy for final EFI generation * modem-manager: explicitly use plain version format * modem-manager: add quirks for the Foxconn T77W968 modules * Allows confined snaps to activate fwupd via D-Bus * trivial: thunderbolt: clarify error message * Add a new property `Interactive` to the daemon * trivial: contrib/get-version.py: require git less hard * superio: Never read from port offset zero * superio: Fix regression when coldplugging superio devices * trivial: Fix Fedora CI build * trivial: Fix the autobuilt spec file with the new tarball version * Dynamically determine release version * trivial: synapticmst: allow missing `/proc/modules` * synapticsmst: filter invalid chip IDs * trivial: Provide some defines for common image names * Allow aborting early when using fu_archive_iterate() * Add fu_firmware_image_set_version() for future use * modem-manager: increase re-enumeration delay to 20000ms * modem-manager: add counterpart GUID for the DW5821e/eSIM * Add versions formats for the Microsoft Surface devices * usb: make loading vendor/product/serial strings non-fatal * trivial: Fix the protocol ID for VLI usbhub devices * trivial: wacom-raw: add more device IDs for Dell devices * trivial: contrib: don't require TSS for debian archs without EFI * fu-udev-device: Adjust bounds checking to be safer * fu-udev-device: Don't assume all devices have `device_file` * synaptics-rmi: correct an error cleaning up on probe * trivial: fu-udev-device: add some safety checks for fd * udev-device: fix offset of vendor id of hidraw devices * flashrom: switch to upstream source * trivial: fu-plugin: only show an error once "failed to open plugin" was being prefixed twice * trivial: debian: only use mingw-w64-tools in archs with UEFI plugin * fastboot: Fix a regression when updating modem firmware * trivial: conflict with old unifying plugin * Rename unifying plugin to logitech-hidpp (Fixes: #1329) * Add a new contrib script for installing a Dell BIOS from an EXE file * trivial: add-capsule-header: rename to make it easier to import * trivial: simple_client: make it easier to reuse code * trivial: firmware-packager: make it easier to reuse code * trivial: add-capsule-header: make it actually work * trivial: fix some gtkdoc sections * Bump the required gudev version * trivial: Fix a compile error with older versions of gudev * trivial: wacom: add vid/pid for panels in Moffett * trivial: post release version bump - Changes from version 1.3.3 * unifying: notify users to replug when using dfu control (Fixes: #1383) * trivial: 8bitdo: set a transient failure while waiting for user action * libfwupd: Add a new error type for user action needed * trivial: 8bitdo: show the same message for SN30pro and SN30pro+ * trivial: Fix up some typos from codespell * trivial: Ensure config.h is included in all source files * trivial: Fix up some NULL/FALSE confusion * trivial: Add all the _LAST enums that shouldn't be checked for ABI * trivial: Fix a typo that means that UEFI results were never cleared * Always report the update-error correctly for multiple updates * trivial: Fix fwupdmgr get-history if the firmware was not installed from the LVFS * trivial: Do not emit a warning if a child has no version number * Move the file descriptor lifecycle into FuUdevDevice * trivial: Fix some GtkDoc annotations * ebitdo: Modernize the plugin to use FuFirmware * nitrokey: Use fu_common_dump_raw() when debugging * thunderbolt: Create a unique GUID including Thunderbolt controller path * Use device safety flags to show prompts before installing updates * trivial: Use the new possible_plugin support for USB devices too * jabra: Move the Jabra-specific detach out into its own plugin * Ensure the device is open when doing the subclassed prepare() and cleanup() * vli-usbhub: Add support for updating V2 devices * Allow verifying the device image itself from fwupdtool * Use XMLb to query quirks * trivial: ci: disable pulling libxmlb from unstable * synaptics-prometheus: Don't add a config-subdevice in bootloader mode * dfu: Use the VID/PID to identify devices without download capability in runtime * trivial: debian: remove some unneeded lintian * trivial: debian: bump compat version * ebitdo: Add SN30Pro+ to recognized quirk list (Fixes: #1503) * dfu: Add several quirks for Realtek camera hardware * dfu: Always mark devices as UPDATABLE * uefi: use `genpeimg` to mark ASLR and DP/NX on EFI binary * trivial: solokey: correct a typo * trivial: fu-util: fix typo * uefi: rework ESP path detection and lifecycle * trivial: uefi: show more metadata in to_string method * trivial: fu-device: add new method to remove metadata * Add a plugin to update VIA USB hub hardware * trivial: Add fu_common_read_uint8_safe() * trivial: Fix two typos in fu_common_read_uint16_safe() * solokey: Allow parsing firmware with fwupdtool * Allow fwupdtool to dump details of common firmware formats * trivial: Do not do system coldplug when using FU_ENGINE_LOAD_FLAG_NO_ENUMERATE * trivial: fu-self-test: set polling self tests to slow * trivial: fu-tool: Allow `detach`/`attach` to prompt for device * Strip trailing whitespace from USB descriptors * trivial: Add fu_common_read_uint16_safe() * trivial: Add version to the FuFirmware->to_string() output * Add fu_firmware_set_version() * Add a systemd preset file for `fwupd-refresh.service` * trivial: dell: work around a memory leak caught by address sanitizer * ebitdo: if the device has the will disappear flag, don't wait for ack (Fixes: #994) * Add a new plugin for working with eMMC devices (Fixes: #1455) * fu-engine: Check multiple plugins if quirks match * trivial: don't try to enable LVFS from systemd * trivial: coreboot: fix a clang compiler error * fu-util: Add user friendly strings for all device flags * Add new device flags indicating update resilience * plugins: Add coreboot plugin * fu-plugin: Add fu_plugin_get_hwid_replace_value * trivial: Increase verbosity when actually updating devices * trivial: Allow plugins to use WAIT_FOR_REPLUG in prepare and cleanup * Add FuDevice->prepare() and FuDevice->cleanup() vfuncs for future use * dfu: Implement FuDevice->to_string() * trivial: colorhug: fix a crash that occurs when flashing sometimes * trivial: fu-util: break out of automatic reports if one is not automatic * thunderbolt: some more clarifications when using ICL * trivial: fwupd-refresh: activate motd if using systemd v243 or later * trivial: fwupd-refresh: allow exit code 2 for success * trivial: synaptics-cxaudio: Add Google Pixel buds * trivial: arch: ci: Wait some time for tpm_server to start up * Allow a custom FuFirmwareImage->write() in superclassed objects * dfu: Remove two completely unused helpers * dfu: Make DfuFirmware derive from FuFirmware * dfu: Make DfuImage derive from FuFirmwareImage * dfu: Remove private headers that do not need to exist * Fix device flag filtering * trivial: fu-engine: Don't compare device and content checksums * fu-engine: Read all releases and convert versions when comparing * Add new flags `can-verify` and `can-verify-image` * trivial: make verify and verify-update safer * trivial: test: add checksums for "stock" 1.2.2 * trivial: fu-udev-device: use parent udev device to indicate `internal` * trivial: fix TPM2 simulator tests for arch * trivial: uefi: don't add PCRs with all 0's * trivial: Fix a recent regression causing a double-free * synaptics-cxaudio: Support the ThinkPad USB-C Dock Gen2 * trivial: fu-util: add some extra checks around automatic reports * trivial: fu-tool: typo * fu-systemd: Use correct method for stopping units. * trivial: fu-udev-device: Use ID_PCI_CLASS_FROM_DATABASE if name not set * trivial: fu-plugin: quiet down debug output for optionrom plugin * 8bitdo: use will-disappear flag for sf30/sn30 controllers (Fixes: #783) * trivial: ebitdo: don't dump out firmware header unless plugin verbose * trivial: ebitdo: don't use local errors when writing firmware * Add a new device flag for indicating device won't come back * wacom-emr: Fix a regression for EMR devices * Add a generic DFU firmware object for plugins to use * dfu: Use FwupdInstallFlags rather than a DFU-specific version * dfu: Remove functionality for modifying DfuSe files * dfu: Remove functionality you can do now with fwupdtool * dfu: Remove the merge command as it's unused and broken * trivial: Add fu_firmware_parse_file() helper for future use * trivial: Remove the fuzzing details for DfuPatch * trivial: Add klass->to_string for superclassed FuFirmwareImage objects * dfu: Remove DfuPatch as no vendor actually uses this * dfu: Don't wrap provided VID-PID functions * dfu: Use the standard FuDevice custom flags functionality * dfu: Use klass_device->write_firmware() directly * dfu: Use the generic fu_plugin_usb_device_added() function * dfu: Use daemon flags to ignore devices rather than a special flag * dfu: Set the device state directly to avoid proxying signals * dfu: Use the built-in detach() and attach() vfuncs * Read firmware back from the device as a FuFirmware * dfu: Remove a pointless function * dfu: Remove support for the Metadata Store Proposal * dfu: Remove XTEA support * dfu: Remove the SREC and IHEX parsing out of the DFU plugin * ebitdo: Use klass_device->write_firmware like other plugins * trivial: Remove G_BEGIN_DECLS from all private headers * Remove FU_PLUGIN_RULE_REQUIRES_QUIRK as all the plugins now use it * Set all FuUdevDevice plugins to use FU_QUIRKS_PLUGIN * thunderbolt: recognize new 'generation' sysfs attribute * Rename and modernize the udev plugin * synaptics-rmi: Also add the product ID as a GUID without the minor version * synaptics-rmi: Correctly set the payload length rather than hardcoding it * synaptics-rmi: Write the core config correctly * synaptics-rmi: Decode BL7 status failures as actual errors * synaptics-rmi: Add some trivial debugging to help debug a write problem * trivial: uefi: Make efivarvs errors clearer (Fixes: 1330) * trivial: uefi: don't prefix efivar errors * trivial: Remove some now-unused vfuncs * altos: Modernize the plugin to simplify it * Create the custom plugin GType in common code * Reduce more boilerplate in plugins * synaptics-rmi: Check the correct register when querying bootloader mode * trivial: fu-engine: fix never reporting remotes * trivial: fu-util: don't show warnings for no reports to upload * trivial: debian: remove more conffiles from transitions (Closes: #932617) * trivial: debian/control*: Update for fwupdate transition * trivial: Fix a tiny memory leak when starting the daemon * modem-manager: Fix a tiny memory leak when starting the daemon * synaptics-rmi: Copy the behavior of rmi4utils for BL7 detach * synaptics-rmi: Simplify fu_synaptics_rmi_device_read() * synaptics-rmi: Set the version after ->setup has run * synaptics-rmi: Use the correct mask when getting the bootloader mode on BL7 * syanptics-rmi: The build_id is 3 bytes long, not 2 * synaptics-rmi: Read the config partition the same as rmi4utils * Provide a default implementation of common FuDevice actions * thunderbolt-power: avoid checking for bolt support * synaptics-rmi: Add some debugging for BL7 devices * Fix usage of incorrect type for return value * synaptics-rmi: Do as little as possible in device setup * synaptics-rmi: Speed up reading the PDT from 900ms to 30ms * fu-util: add support for a reinstall command * trivial: fu-util/fu-tool: update re-install help text to reinstall * trivial: fu-util: remove double printed message about succesful firmware update * trivial: fu-util: show no updatable devices error for update command * synaptics-rmi: Ignore the ATTN reports from the hardware when reading DATA * synaptics-rmi: Move the fuzzing instructions to the toplevel README * Fuzz the SREC and IHEX file parsers once more * Use parallel fuzzing for the SMBIOS checks too * synaptics-rmi: Fix the packing of the partition table * Add a plugin to update Synaptics RMI4 devices * trivial: Add a parallel fuzzing script * trivial: fu-util: output newline after prompt. * trivial: fix %u output in report upload * Add a --no-domain logging option * trivial: Fix compiler warning for impossible-to-hit condition * Add support for automatically uploading reports * trivial: motd: disable updating motd for now * trivial: fwupd-refresh: fix a clash with fwupd.service (Closes: #941360) * trivial: Fix Fedora CI * trivial: fu-udev-device: fix some assertions * Search up the tree for a vendor name rather than (ab)using the HID_NAME * Add some success messages when CLI tasks have completed * trivial: Put the boolean prompt on the same line as the text * Never show LicenseRef-proprietary to the end user * trivial: snap: correct install hook root directory * Export the instructions for detaching the device * uefi: detect unmounted ESP partitions (Fixes: #1405) * uefi: stop recording efibootmgr output after flash * trivial: post release version bump - Changes from version 1.3.2: * Add support for '' to disambiguate some firmware * thelio-io: Add a plugin to detach the Thelio IO board * trivial: uefi, dell: skip self tests with TPM if non-root (Fixes: #1396) * trivial: dell: quiet the TSS output * trivial: uefi: allow forcing to TPM2 via environment variable * Do not ask the user to upload a report if ReportURI is not set * Do not enumerate physical devices when running the internal self tests * trivial: libfwupd: skip tests if machine-id is empty too * Add a new plugin to update Conexant audio devices * Export the salted machine ID as a daemon property * Fall back to /var/lib/dbus/machine-id when required * trivial: add stalebot (Fixes: #1393) * trivial: dell-dock: correct another write_size error * Align the key values to the text *width* not the number of bytes * trivial: Move dbus directory location for snap too * trivial: Fix some NULL/FALSE confusion * synaptics-prometheus: Fix tiny memory leak when using FuSynapromConfig * trivial: Fix tiny memory leak when using FuSrecFirmware * snap: switch to core18 * trivial: Return the correct property when getting the host product * trivial: fu-util-common: fix description wrapping (Fixes: #1378) * fu-util/fu-tool: Map out changelogs from remotes * fu-util/fu-tool: Better display historical information * fu-history: Update device_modified in sql database during updates * unifying: Use the instance ID to check for supported devices * unifying: Ensure HID++ v2.0 peripheral devices get scanned by the plugin * trivial: Add some more defines to the srec parser * trivial: fix wget command in fu-tool.c * Allow parsing a raw SREC file * trivial: wacom: Add support for second vendor ID * uefi, dell-esrt: Show firmware version when capsule updates unavailable * Add some more debugging to the SREC and IHEX parsers * Print the instance IDs if the GUIDs are unconverted * Add fu_common_bytes_compare_raw() for future usage * Call the set_quirk_kv() vfunc for the superclassed object * uefi: make the TPM optional for runtime again (Fixes: #1362) * trivial: uefi: Make the TCTI output less verbose * Support in AppStream metadata * Include all GUIDs when uploading a report * Do not crash when starting tpm2-abrmd * trivial: Update DBus conf path for example Fedora package * Move D-Bus conf file to datadir/dbus-1/system.d * trivial: Add fu_io_channel_write_byte_array() for future use * trivial: post release version bump - Package new sub-packages typelib-1_0-FwupdPlugin-1_0 and libfwupdplugin1.- Fix file list- Update to version 1.3.1: (jsc#SLE-10751) * Allow disabling all plugins * trivial: Specify the tpm2-tss-devel version in the example spec file * Move to CI Fedora 30 * modem-manager: Fix two build warnings on Fedora 30 * synapticsmst: Add another name quirk for the ThinkPad USB-C Dock * Re-introduce GUID support to fwupdmgr and fwupdtool * uefi-recovery: Add a plugin to add a fake ESRT entry for device recovery * Add a DMI quirk for the Minnowboard Turbot * trivial: Make it easy to disable or enable libflashrom for distros * trivial: Don't use Recommends for RHEL 7 * unifying: fix timeout metadata * ci: arch: minor improvements * unifying: fix timeout * Allow disabling SSL strict mode for broken corporate proxies * trivial: Allow ignoring the daemon version check by using --force * Try to only show DMI product name once * trivial: fu-util-common: Show unknown devices as interesting devices * dell: Use TSS to query and build TPM vendor strings for GUIDs * trivial: dell: show reasons for lack of updates in `UpdateError` * fu-util-common: strip all trailing whitespace in XML description * trivial: fu-common: match all whitespace not just ' ' in `fu_common_strstrip` * fu-util: show release output in get-details again * unifying: use fu_firmware_strparse_uint16 to read be 16bit values * unifying: fix incomplete hex file parsing * fu-util/fu-tool: Print devices, remotes, releases using a tree * Add aliases for `get-upgrades` and `upgrade` * trivial: UEFI skip self tests if library fails to initialize * libfwupd: Add a new private function `fwupd_remote_set_remotes_dir` * trivial: add libtss2-dev into debian/control (Closes: #1324) * trivial: Fix up the GtkDoc Since lines for API only available in 1.3.x * trivial: Post branch version bump * thunderbolt: Add support for kernel safety checks (Fixes: #1312) * Include the kernel release as a runtime version * trivial: fu-util: Drop GUID support from get-devices * synapticsmst: Partially rewrite the plugin (Fixes #1105) * Remove replug flag after the device comes back from reboot * trivial: Fix running the tests on devices with the TPM in v1.2 mode * trivial: fu-util-common: more cleanup related to topology * trivial: fu-util: cleanup fwupdmgr get-details output * trivial: Don't use topology printing in --verbose mode * Make get-devices and get-topology aliases for one another * trivial: Adjust daemon device sorting * Make get-topology more useful by showing all information * trivial: Fix fu_common_string_append_kv() to align properly with idx > 0 * trivial: dell-dock: correct an error preventing write_size from being set * trivial: Do not warn about deprecated declarations * trivial: Update BRs for the example Fedora package * uefi: add test for TPM 2.0 PCR read function * uefi: use tpm2-tss library to read PCR values * fu-common: Use environment variables for systemd managed directories * Use more systemd directives for directories * trivial: fu-util: fix debug output for devices * Allow turning off the timestamp prefix for debugging * Add a ->udev_device_changed plugin vfunc * Add fu_device_rescan() and a FuDevice->rescan() vfunc * Remove the duplicate files in meson.build * Hash the source files when generating the daemon hash * Split up source files in the build script * uefi: add support for tpm2-tools 4.X * trivial: plugins: clarify stance on afuefi.efi * trivial: plugins/: Update README * trivial: disable gtkdoc by default * trivial: update references of hughsie/fwupd to fwupd/fwupd * Publish docs to fwupd.github.io using CircelCI * Add support to integrate into the motd (Fixes: #1270) * Simplify get-devices output to not show un-useful fields * fu-engine/fu-config: Reload metadata store when configuration changes * trivial: If no devices support updates, show messaging (Closes: #1295) * trivial: uefi: set vendor name for system firwmare from DMI data * unifying: update Solaar url * thunderbolt: Fix logic to work properly with ICL thunderbolt controller * Add fu_udev_device_get_device_file() helper * trivial: Fix regression when using fu_device_incorporate() * trivial: Fix a potential crash when using FuPlugin in the self tests * synapticsmst: Make FuSynapticsmstConnection an actual GObject * synapticsmst: Use the same style as other plugins * trivial: Add some helper functions for GByteArray * Do not use FuDevice metadata for the physical and logical IDs * Use fu_common_string_append_kv() in subclassed device * synapticsmst: Use G_DECLARE_FINAL_TYPE to simplify the object * synapticsmst: Add a SynapticsMSTBoardID for another Lenovo dock * trivial: remove unnecessary CUSTOMERID_DELL define * synapticsmst: Add a SynapticsMSTBoardID for a Lenovo dock * synapticsmst: Display the board ID in non-hex form in the error message * synapticsmst: Use a more suitable icon for the device * trivial: Remove unused variable * Never use memcpy() in a possibly unsafe way * Add a ->to_string() vfunc to FuFirmware * Use FuFirmware as a container for firmware images * Allow filtering devices when using the command line tools * Be more accepting when trying to recover a failed database migration * trivial: Add translation for X-ThunderboltController * trivial: fixup standalone installer * modem-manager: add counterpart GUID for the DW5821e * solokey: Release the interface and rebind the kernel driver on close * fu-tool: Port ability to update a single device from fwupdmgr * uefi: Actually write the new device path if different than before * Allow setting custom flags when using fwupdate * trivial: Do not show a critical warning if no firmware is specified * trivial: Fix overzealous search-replace action in user string * Verify we don't break the ABI * Fix a crash when stopping the fwupd service * Relax the certificate time checks in the self tests for the legacy certificate * trivial: add cache directory into systemd unit rw paths * Never show AppStream markup on the console * Do not segfault when trying to quit the downgrade selection * trivial: Update icons for Thunderbolt and MST devices * Add support for the SoloKey Secure * trivial: Allow a device to *clear* a firmware version * trivial: debian: For signed package fill out Built-Using (Closes: #932757) * Allow specifying GUID to check any version exists * trivial: post release version bump * Release fwupd 1.2.10 * Disable the flashrom plugin by default * trivial: thunderbolt: catch failure setting up device * dell-esrt: Improve the experience for the plugin (Closes: #1245) * fu-util: When unlocking prompt for reboot if applicable * remove those PIDs with Bluetooth interface, Wacom updater doesn't support updating from Bluetooth interface * flashrom: Only show DEBUG and DEBUG2 output if using --plugin-verbose=flashrom * flashrom: Only call flashrom_programmer_init() on whitelisted boards * flashrom: Fix no version format set * fu-util: Show devices with an UpdateError in get-devices output * trivial: uefi: use UEFI-dummy for device ID instead of just uefi * trivial: fix error handling for non UEFI case (#1220) * Add a specific error code for the low battery case * Fix Fedora docker build missing directory: dist * uefi: Determine whether running in legacy mode or not (Fixes: #1220) * trivial: ci: debian: Only turn on flashrom when running CI * trivial: Fix typos in error messages * Allow client code to construct objects from GVariant blobs * Export functionality to build an array of objects * flashrom: Use libflashrom * trivial: Fix the version script to pick up boxed types * trivial: Correctly order the map entries according to vercmp rules * trivial: Fix pylint issue in the version script * Add meson target to fix translations * Add support for 8bitdo USB Retro Receiver * Use the newer features of GRWLock rather than reinventing it * Revert "Allow SuperIO updates to be done live" * uefi: Try to find a duplicate using the loadopt name * uefi: Provide a quirk to disable the use of the UX capsule * trivial: uefi: use the path for efibootmgr that was detected * synaptics-prometheus: Fix installing CONFIG firmware updates * synaptics-prometheus: Set the install duration from a quirk * synaptics-prometheus: Don't emit critial warning when updating config firmware * synaptics-prometheus: Fix missing field in the IOTA reply struct * Create SECURITY.md * redfish: Never set NULL device name * modem-manager: Never set NULL device name * ata: Never set NULL device name * trivial: Add some parameter guards to FuDevice * trivial: snap: make polkit directories if they don't exist (Fixes: #1205) * trivial: fu-main: clarify missing PK file error * synapticsmst: fix GUID generation (Closes: #1207) * Lite Mk II flag for use-shim-unique * trivial: circleci: try to fix automatic snap deployment * Allow SuperIO updates to be done live * fu-util-common: Support empty proxy strings (Fixes: #1199) * trivial: uefi: clarify error message * trivial: Fix non-systemd build * trivial: Sync example spec file with downstream * trivial: post release version bump - Drop fwupd-bsc1143905-hash-the-source-files.patch: Applied upstream. - Add pkgconfig(tss2-esys) BuildRequires: New dependency. - Add gtk-doc BuildRequires and pass gtkdoc=true to meson, build api docs even when using source service.- Add fwupd-bsc1143905-hash-the-source-files.patch to hash the source files instead of libfwupdprivate.a to avoid the checksum change due to the random naming LTO profile sections (bsc#1143905)- Update to version 1.2.10: * Disable the flashrom plugin by default * dell-esrt: Improve the experience for the plugin (Closes: #1245) * fu-util: When unlocking prompt for reboot if applicable * remove those PIDs with Bluetooth interface, Wacom updater doesn't support updating from Bluetooth interface * flashrom: Only show DEBUG and DEBUG2 output if using - -plugin-verbose=flashrom * flashrom: Only call flashrom_programmer_init() on whitelisted boards * flashrom: Fix no version format set * fu-util: Show devices with an UpdateError in get-devices output * Add a specific error code for the low battery case * Fix Fedora docker build missing directory: dist * uefi: Determine whether running in legacy mode or not (Fixes: #1220) * Allow client code to construct objects from GVariant blobs * Export functionality to build an array of objects * flashrom: Use libflashrom * Add meson target to fix translations * Add support for 8bitdo USB Retro Receiver * Use the newer features of GRWLock rather than reinventing it * uefi: Try to find a duplicate using the loadopt name * uefi: Provide a quirk to disable the use of the UX capsule * synaptics-prometheus: Fix installing CONFIG firmware updates * synaptics-prometheus: Set the install duration from a quirk * synaptics-prometheus: Don't emit critial warning when updating config firmware * synaptics-prometheus: Fix missing field in the IOTA reply struct * Create SECURITY.md * redfish: Never set NULL device name * modem-manager: Never set NULL device name * ata: Never set NULL device name * synapticsmst: fix GUID generation (Closes: #1207) * Lite Mk II flag for use-shim-unique * fu-util-common: Support empty proxy strings (Fixes: #1199) - Add python3-setuptools to BuildRequires for generate-version-script.py- Update to version 1.2.9: * Release fwupd 1.2.9 * trivial: Add two new translatable strings for new category types * Check if the system is offline during install, rather than at startup * Prompt the user to shutdown if requried when installing by ID * Use the correct file extension for the offline updates cache * trivial: Allow using --force to use the wrong daemon version * trivial: Display the correct expected command * standalone-installer: Be smarter about existing installed fwupd * Add a plugin to update Synaptics Prometheus fingerprint readers * trivial: standalone-installer: rename uninstall argument to cleanup * fu-util: Check the daemon version is at least the client version * fu-util: Check that daemon is started by expected unit * fu-util-common: when stopping a daemon, check for snap too * Allow using --force to trigger a duplicate offline update * trivial: Allow using FuUsbDevice without a GUsbDevice * trivial: Copy the icons if unset for the device child * trivial: Copy the physical ID if unset for the device child * trivial: Ensure the parent ID is up to date if the device ID changes * trivial: Fix typo when setting the parent ID * trivial: Disable the flatpak CI build * Allow handling FORCE for devices that subclass FuDevice * uefi: Fix a libasan failure when reading a UEFI variable * trivial: Fix a memory leak found using libasan * trivial: Fix an libasan failure in the dell plugin * trivial: Fix some dead code spotted by coverity * trivial: Fix a typo spotted by coverity * trivial: Fix a missing config.h include in a new source file * Dynamically read path to use for /system-update * Display the remote warning on the console in an easy-to-read way * ata: Set version format to plain for devices obtained from udev * trivial: Only apply SmbiosManufacturer to release version for internal * trivial: Fix two bugs in the hardware self tests script * Never guess the version format from the version string * Only force a semver when the device opts-in * Export the version-format to clients * Add missing gtk-doc documentation * dfu: Add some trivial, but useful, debugging for AVR DFU devices * dfu: Correctly identify DFU firmware that starts at offset zero * dfu: Don't keep showing trivial debug output * dfu: Reset the forced version during attach and detach * ata/nvme: For devices running Dell firmware, set `VersionFormat` (Fixes: #1169) * fu-engine: Check if VersionFormat is ambiguous when adding devices * trivial: Fix fwupdate --apply * Only use class-based instance IDs for quirk matching * trivial: dell-dock: set minimum board to 6 * trivial: post release version bump- Update to version 1.2.8: * Don't upload reports when the user has configured their system in a broken way * Allow setting the daemon verbose domains at runtime * Allow fwupdmgr to modify the daemon config * Do not compare version formats when the release format is unknown * Do not fall back integers to a plain version format * Use the device version format when converting the release version * Set the VersionFormat using the metadata or the UEFI quirk - Changes from version 1.2.7: * l10n: Create Lithuanian translation file * l10n: Update LINGUAS * Updated: Add support for 8BitDo M30. * modem-manager: increase the timeout to wait for modem after uninhibited * modem-manager: implement qmi pdc active config selection as attach() * fu-engine: When removing activation flag match the correct version * Require --force to install a release with a different version format * Match the old or new version number when setting NEEDS_REBOOT * Make an error message clearer when there are no updates available * Add support for the not-child extension from Logitech * thunderbolt: Set require-ac for Thunderbolt devices (Fixes: gh#hughsie/fwupd#1142) * Fix some typos spotted using codespell * Add a component categories to express the firmware type * fu-tool: Port get-history command to fwupdtool * Recreate the history database if migration failed * Move the core built-in 'fwupd' remote over to the dell-esrt plugin * snap: Add a custom systemd unit to call activation on shutdown (Fixes: gh#hughsie/fwupd#1125) * ata: Flush cache before standby and activate * synapticsmst: blacklist plugin when using amdgpu (Fixes: gh#hughsie/fwupd#1121) * uefi: add a new option to specify the os name * Return the newest device when using fu_history_get_device_by_id() * uefi: More carefully check the output from tpm2_pcrlist * uefi: Don't overwrite CustomFlags if set from a quirk * Shut down the daemon if the on-disk binary is replaced * ata: Correct activation functionality * Fix version comparisons after reboot for some formats * fu-tool: save history from stuff installed with `fwupdtool` - Changes from version 1.2.6: * ata: send ATA standby immediate when activating firmware * offline: Be more graceful when dealing with Plymouth failures * Save the new version in the history database for offline updates * Show the DeviceID when showing the updates list * Allow forcing an offline-only update on a live system using --force * Do not schedule an update on battery power if it requires AC power * superio: Add InstallDuration default value * superio: Add support for writing new e-flash contents * superio: Fix reading the attestation checksum * superio: Add support for reading the device checksum * superio: Use the chipset ID in the device name * superio: Move the device flush before getting the register map * superio: Move all the IT89xx code to a subclassed device object * superio: Move all the IT85xx code to a subclassed device object * superio: Split and export fu_superio_device_ec_writeX() * superio: Remove the port from fu_superio_device_ec_read() * superio: Move the register read/write into the FuSuperioDevice object * superio: Check the IOBAD0 is usable during setup * superio: Use fu_device_set_firmware_size() * superio: Move some constants out to the common header * superio: Use GObject properties in FuSuperioDevice * superio: Convert FuSuperioDevice to be derivable * Update Plymouth when updating pending firmware * Ask to reboot after scheduling an offline firmware update * Do not fail when scheduling more than one update to be run offline * Allow running offline updates when in system-update.target * Fix the location of fwupdoffline in the service file * Add optional vfuncs to allow detaching and attaching verify() * superio: Add list of SPI commands for future usage * Add a verify-update command to fwupdtool * uefi: Actually upload the UPDATE_INFO entry for the UX capsule * superio: Get the chip size from the EC rather than hardcoding * uefi: Check the error code of QueryCapsuleCapabilities() correctly * Update the UEFI UX Capsule Header checksum when needed. * uefi: Copy the shimx64.efi binary for known broken firmware * Correctly get the check the new version for devices that replug * Add a simple script to add a capsule header * Ensure the PKCS-7 client certificate exists at startup * fix makecab directive options * fwpup.service: use display-manager.service instead of gdm.service * Allow signing the fwupd report with the client certificate * Add a D-Bus method to generate a signature using the self-signed client certificate * Allow signing and verifying data using a PKCS-7 self-signed client certificate * Fix a critical warning when loading a PKCS-7 certificate with no DN * Include all device checksums in the LVFS report * modem-manager: Fix a trivial build warning * superio: Fix a trivial build warning * Move out the offline update functionality to a new binary * Do not reboot when failing to start fwupd during offline updates * Do not write the schema version to the db when loading * Do not recreate XbSilo caches when running on a readonly filesystem * Add the fwupdagent binary for use in shell scripts * Allow restricting firmware updates for enterprise use * standalone-installer: new --allow-older and --allow-reinstall options * Show the upgrade and downgrade flags when getting releases for a device * Rename FwupdRelease:trust-flags to FwupdRelease:flags * fu-tool: Save device state to @LOCALSTATEDIR@/lib/fwupd/state.json on actions * modem-manager: implement support for qmi-pdc * Add a plugin to support ModemManager hardware * fu-tool: Don't let failing to find dbus prevent engine from starting * ata: Support delayed activation * dell-dock: Use activation when calling fwupdtool activate * Add a support for delayed activation * uefi: Fix the self tests when running on Fedora SilverBlue * Do not fail to start the daemon if tpm2_pcrlist hangs * po/make-images.sh: quote LOCALEDIR and PYTHON3 * meson: print stderr of python3 command instead of stdout * Revert "contrib/debian: Switch to debian unstable" * Add elogind support - Changes from version 1.2.5: * uefi: fix segfault in fwup_set_update_statuses * Show in Flathub correctly * debian: explicitly depend on shared-mime-info * superio: Implement detach() and attach() * superio: Correct the names of some constants and improve debugging support * dell-dock: Filter the last supported payloads of certain board 4 SKUs * circleci: Manage the lifecycle of the snap * Add support to run snap build in CircleCI * wacom-usb: Use the correct buffer format for the touch module * wacom-usb: Set the install duration for each device type * wacom-usb: Return with an error if there were too many retries * wacom-usb: Make updating less verbose * Convert all child instance IDs when converting the parent * uefi: Allow devices to create more complete fake UEFI devices * unifying: Fix regression when recovering from failed flash * Ensure libxmlb dir exists for LGTM.com * Add C build configuration for LGTM.com * Use G_BEGIN_DECLS correctly for internal headers * standalone-installer: Fix issue found by LGTM * Use '#pragma once' to avoid a lot of boilerplate * Force LGTM to see Python 3 * fwupd: Hide firmware-packager behind meson option` * fu-common-cab: Correct handling of CAB files w/ nested directories and older libgcab * Fix a regression in using the InstanceIDs for quirk matching * thunderbolt: Convert the instance IDs as we never open the device * udev: Manally call fu_device_setup() to convert the instance IDs * fu-tool: Correct a crash caused by calling fwupdtool update * fu-tool: Don't fail if dbus is unavailable * contrib/debian: Switch to debian unstable * wacom-usb: Record the block number when failing * wacom-usb: The touch address is big endian * wacom-usb: Accept a non-binary IHEX file for the touch update * wacom-usb: Only poll when the device status is 'busy' * wacom-usb: Only reboot the device when all composite devices have been updated * wacom-usb: Fix flashing failure with latest Intuos Pro tablet * dfu: Fill holes when reading SREC files * Add fwupd_guid_from_string() to drop dep on uuid * wacom-raw: Check the InstanceID rather than GUID * Defer the InstanceID->GUID hashing until after setup * ata: Check for USB enclosures as well * Do not use efivar just to print a mixed endian GUID * Add fu_device_add_instance_id() and prefer explicit conversion * Report the DeviceInstanceIDs to `fwupdmgr get-updates` * Export some of the GUID functionality * Allow a plugin to set _ANOTHER_WRITE_REQUIRED to run more than one plugin * nvme: Add an extra check for Dell plugins to avoid false positives * ata: Add support for detecting Dell GUIDs * Fix the self tests when using glib2 >=2.59.0 * Add support to call composite prepare and cleanup using fwupdtool * uefi: Disable -Wno-address-of-packed-member * uefi: Don't unconditionally enable Werror for the EFI binary * Disable -Wno-address-of-packed-member - Changes from version 1.2.4: * Remove the autogenerated headers in the gettext files * ata: Default to the non-activation 0xE subcommand * fastboot: Use a much longer timeout as the removal delay * fu-progressbar: be more quiet when running non-interactive * fu-tool: Show UpdateMessage if applicable for install command * dfu: Simplify the SREC parser to avoid a crash with an invalid file * wacom-raw: Use the correct error codes when the panel is not supported * wacom-usb: Add some more information to the README * fu-keyring-utils: Don't fail missing PKI directory when compiled with GPG/PKCS7 * dell: Check that the flash interface command is available * wacom-usb: Fix the plugin name to allow devices to be updated * fastboot: flash the partition after downloading the file * uefi: Add a quirk to use the legacy bootmgr description * ata: Mark all devices as needing a reboot * ata: Add a new plugin to upgrade firmware on ATA/ATAPI hardware * udev-device: Add a utility function for debugging * udev-device: Set the firmware revision automatically * udev-device: Set the serial number automatically * udev-device: Fall back to non-database model and vendor values * udev-device: Fix critical warning if the device has no parent * dell-dock: Add support for a passive flow * Add support for an `UpdateMessage` and display it in tools * fu-tool: Port the `get-updates` command over * When using `directory` remote type automatically generate metadata * libfwupd: Add support for new remote type "directory" * Ensure cabinet archives always have a container checksum * Add support for a per-release source and details URL * When generating a CAB Silo use the prefix "components" * uefi: Add a trivial debugging statement to debug a UX capsule failure * uefi: Use fwup_new0() to allocate the updates table array * nitrokey: Correct Nitrokey Storage invalid firmware version read * dell-dock: Add support for flashing Thunderbolt over I2C * wacom-raw: Add a plugin to update Wacom embedded EMR and AES panels * fu-util/fu-tool: sync up reboot and shutdown behavior * dfu: Ignore the SUB ASCII value * dfu: Fix the parser to support extended segment addresses * dfu: Support ihex files with leading comments don't show an error * uefi: Correct a boot order creation bug (Fixes: gh#hughsie/fwupd#956) * uefi: Remove all variable length arrays * uefi: Fix a logic bug in fwup_search_file() * uefi: Use _cleanup_free in one more place * uefi: Do not pass required attrs to fwup_delete_variable() * uefi: Delete the old Linux-Firmware-Updater boot entry * uefi: Use the GNU-EFI BOOL type * Check if plugin changed after the device attaches or detaches * uefi: Refactor and simplify the EFI loader * Show a console warning if loading an out-of-tree plugin * UEFI: Do the UX checksum calculation in fwupd * wacom-usb: Add two more Intuos tablets * nvme: Add the needs-shutdown quirk to Phison NVMe drives * Add _NEEDS_SHUTDOWN flag for devices * Use GCC __cleanup__ features in the EFI loader * nvme: Add flag to support manually aligning the firmware to the FWUG value * nvme: Support FGUID to get the SKU GUID * nvme: Support FWUG to get the write block size * nvme: Add trivial comment to clarify address bitshifting * uefi: Do not check the BGRT status before uploading a UX capsule * dfu: Fix flashing various Jabra devices * upower: Add support for checking battery percentage * nvme: Check the return code of the admin passthru ioctl * fu-tool: Add support for an 'update' command to fwupdtool * dell-dock: Set minimum board to board 4 * dell-dock: Workaround a manufacturing bug for board level 4 * dell-dock: Wait longer for re-enumeration on TBT SKU * superio: Support IT89xx devices * fu-main: remove incompatible locale error message * Add a new plugin checklist (Fixes: gh#hughsie/fwupd#899) - Dropped obsolete patch: fwupd-bsc1130056-change-esp-os-name.patch (upstream PR: gh#hughsie/fwupd#1119 - Fixed fwupd-bsc1130056-change-shim-path.patch so that it works with the new files - Cleaned up changelog- Stop shipping polkit rules, as we have the distro specific setup in polkit-default-privs (boo#1125428).- Add fwupd-bsc1130056-change-esp-os-name.patch to change the OS directory in ESP (bsc#1130056) - Add fwupd-bsc1130056-change-shim-path.patch to set the default shim binary for openSUSE/SLE (bsc#1130056) - Link fwupd*.efi.signed to fwupd*.efi as requested by fwupd (bsc#1129466)- fwupd.spec: fix shell syntax error in %postun section (boo#1120363).- Update to version 1.2.3: * Correctly migrate the history database - Changes from version 1.2.2: * Log an error if started with an incompatible locale * Fix building with -Wl,-z,defs * ebitdo: Fix the reported version number if the daemon locale is not C.UTF-8 * Add Dell TB18DC to the known devices list * Allow replacing the last byte in the image when using 'dfu-tool replace-data' * Check the device checksum as well as the content checksum during verify * Submit the device firmware checksum and update protocol in the submitted report * Include the device checksum and update protocol in the historydb * uefi: Add the PCR0 value as the device checksum for system firmware * Add new API to get the release protocol from the metadata * Allow plugins to define support for a 'well-known' protocol * uefi: When adding headers set the header size to 4k * uefi: Append the header on capsules without headers from Linux * flashrom: Ensure the quirks database is set on the new object * uefi: Do not add devices with invalid GUIDs * Do not allow a GUID of zero * Add shared functionality for reading and writing with O_NONBLOCK * Only run attach and detach if the device is in the wrong mode * Sanitize the version if the version format has been specified * wacom-usb: Remove the DTH generation hardware as it will not work with fwupd * thunderbolt: Remove a superfluous boundary condition when verifying update * Add a plugin to update hardware that supports fastboot * Fix a regression when doing GetReleases on unsupported hardware * dfu: Require a specific USB class and subclass for DFU mode * Correctly parse format the version numbers correctly using old metadata * amt: Fix a crash if AMT returns an empty response * Check plugins set error on failure * contrib: Add a simple python3 client * installed-tests: Adjust to actually use a remote for installed tests * Add more standard USB identifier GUIDs * wacomhid: Rename to wacom-usb * Provide a way for plugins to decompress a custom archive to ram - Changes from version 1.2.1: * Remove DaemonVersionFormat=quad * Shut down the daemon after 2h of inactivity * Create a silo index to speed up GUID queries * Fix flashing the 8bitdo SF30 * Speed up fwupd startup by loading less thunderbolt firmware * Query the XbSilo when calling fu_plugin_check_supported() * Guess the version format when it is not provided * Fix a use-after-free when using valgrind and --immediate-exit * Add per-release install duration values * Fix showing the custom remote agreements * Be more explicit setting the update state * Include the os-release information in the release metadata - Changes from version 1.2.0: * ebitdo: remove SF30/SN30 pro device ids * dell-dock: Drop delayed MST callback routine * synapticsmst: Adjust EVB board handling * synapticsmst: Remove the content checking of firmware * synapticsmst: Access Board ID through memory instead In firmware images HDCP 2.2 will be enabled by default,so access to flash region will fail.` * contrib: Adjust flatpak build for moving to flathub * dell-dock: Prefer to flash VMM5331 via I2C instead of DP aux * Use HTTPS_PROXY if set * firmware-packager: Make it clearer to use * Sort the firmware sack by component priority * flatpak: Update gnu-efi to latest version * amt: Set the full device version including the BuildNum * fwupdmgr/fwupdtool: Move monitor command to fwupdtool * fwupdmgr/fwupdtool: Move firmware builder from fwupdmgr to fwupdtool * Add version format quirks for several Lenovo machines * uefi: Set the quirks on created devices * dell_dock: Use correct offset for finding version of MST * dell-dock: Add missing unlock call for MST via dell_dock plugin * Support the Intel ME version format * Port from libappstream-glib to libxmlb * Bump requirement to meson 0.46.0 * fu-main: Catch SIGTERM while update is in progress * fu-tool: Stop any running daemon over dbus before loading engine * meson: Bump dependency to 0.44 and adjust sysconfdir handling * dell-dock: If marketing name is invalid don't fail initialization * Readme Updated: Added KDE Discover as one more graphical front-end available for fwupd. * dell-dock: Correct a situation that error wasn't propagating * Don't segfault if a plugin returns FALSE from UpdateFunc with no error set * dell-dock: Use different debug strings for each device type * dell-dock: Don't use the VLA feature in the new dock * Add a plugin for an upcoming Dell USB-C dock * contrib: Add information on how to use debugging scripts * Allow setting the version format from a quirk entry * Don't use AppStream-glib for string helpers * Don't use AppStream-glib for version helpers * Don't use AppStream-glib for the GUID helpers * fu-device: Ensure that parent ID is created before creating quirked children * Update all sub-devices for a composite update * Stop showing the current release during updates in fwupdmgr * uefi: Move the TPM unlocking functionality from the Dell to UEFI plugin * Run the Dell plugin initialization after the UEFI plugin * thunderbolt-power: Fix possible linker problem * Allow firmware files to depend on versions from other devices * fu-debug: Redirect all debugging output to stderr instead of stdout * synapticsmst: Adjust panamera ESM update routine for some reported issues * fu-engine: Optionally wait for replug before updating a device * fu-device-list: Use delayed device removal when removing the tree * thunderbolt: Use replugging from the daemon * Add support for devices to show an estimated flash time * Marked some CL options for translation * ci: Run clang static analysis for Ubuntu build rather than just clang compiler * nvme: Initialize the buffer before reading the contents * contrib: Add a standalone installer creation script * rts54hid: Add support for Realtek USB devices using vendor HID commands * fu-engine: Don't show devices pending a reboot in GetUpgrades * Add FuMutex helper to make various parts of the daemon thread-safe * rts54hub: Add support for Realtek USB devices using vendor HUB commands * uefi: Check the amount of free space on the ESP * fu-tool: Import debugging options from fu-debug like fu-main * superio: Set the physical and logical IDs - Add pkgconfig(xmlb) BuildRequires: New dependency.- Add pesign-obs-integration to BuildRequires and add fwupd*.efi to BRP_PESIGN_FILES to get it signed - Add LC_IMAGES and use efivar only if %{with efi_fw_update} + Also update the version requirement of efivar - Disable Redfish and NVME plugins if %{without efi_fw_update} since those two plugins require efivar - Remove fwup from BuildRequires since fwupdate is already merged into fwupd.- Use gnu-efi only if %{with efi_fw_update}, always use pkgconfig(efivar) - Fix file list- Amend %post and %postun to install/uninstall fwupd*.efi to the EFI system partition + Also add shim to Requires for fwupdx64.efi - Mark fwupdate as obsolete + fwupdate has been merged into fwupd since fwupd 1.1.0.- fwupd is require for thunderbolt firmware update in SLE15-SP1(fate#322681)- Update to version 1.1.2: + New Features: - Add a new device flag "ignore-validation" that will override checks - Add a new plugin to enumerate EC firmware - Add a new plugin to update NVMe hardware - Add a plugin for updating using the flashrom command line tool - Allow the device list to take care of waiting for the device replug - Allow updating just one specific device from the command line - Allow upgrades using a self-signed fwupd.efi binary - Download firmware if the user specifies a URI - Include serial number in daemon device output when trusted - Notify all plugins of device removals through a new vfunc - Use boltd force power API if available + Bugfixes: - Add an install hook for classic snap - Allow forcing installation even if no AC power is applied - Allow using --force to ignore version_lowest - Always use the same HardwareIDs as Windows - Check the device state before assuming a fake DFU runtime - Copy over parent GUIDs from other plugin donors - Detect location of python3 interpreter - Do not add udev devices after a small delay - Don't fail to run if compiled without GPG/PKCS7 - Fix a segfault in fwupdtool caused by cleanup of USB plugins - Implement the systemd recommendations for offline updates - Improve performance when reading keys from the quirk database - Remove children of devices when the parent is removed - Rewrite synapticsmst to use modern error handling - Rewrite the unifying plugin to use the new daemon-provided functionality - Show a time estimate on the progressbar after an update has started- Use noun phrase for summary. Trim request for comments from description.- Update to version 1.1.1: + New Features: - Add support for the Synaptics Panamera hardware - Add validation for Alpine and Titan Ridge - Improve the Redfish plugin to actually work with real hardware + Bugfixes: - Allow different plugins to add the same device - Allow flashing unifying devices in recovery mode - Allow running synapticsmst on non-Dell hardware - Check the ESP for sanity at at startup - Do not hold hidraw devices open forever - Don't override _FORTIFY_SOURCE when building the EFI binary - Don't show passwords in fwupdmgr - Fix a potential segfault in smbios data parsing - Fix encoding the GUID into the capsule EFI variable - Fix various bugs when reading the thunderbolt version number - Reboot synapticsmst devices at the end of flash cycle - Show status messages when the daemon is initializing - Show the correct title when updating devices - Show the reasons that plugins are not run on the CLI - Use localedir in po/make-images- Run %udev_rules_update in post as package install udev rules- Update to version 1.1.0: (FATE#326702) + New Features: - Add a initial Redfish support - Add a tool to mimic the original fwupdate CLI interface - Allow devices to assign a plugin from the quirk subsystem - Change the quirk file structure to be more efficient - Merge fwupdate functionality into fwupd - Run a plugin vfunc before and after all the composite devices are updated - Support more Wacom tablets + Bugfixes: - Add release information for locked devices - Allow building with older meson - Detect the EFI system partition location at runtime - Do not use 8bitdo bootloader commands after a successful flash - Enable accesing downloaded files in flatpak and snap - Fix a potential buffer overflow when applying a DFU patch - Fix downgrading older releases to devices - Fix flashing devices that require a manual replug - Fix several small memory leaks in various places - Fix the retrieval of Redfish version - Fix unifying failure to detach when using a slow host controller - Set the Wacom device status when erasing and writing firmware - Show errors in the CLI if unable to access directory - Use the parent device name for Wacom sub-modules - Removed enable_pkcs7_when_testing_only.patch- Update to version 1.0.8: + New Features (including version 1.0.7): - Add an plugin to update some future Wacom tablets - Add 'fwupdmgr get-topology' to show logical device tree - Add support for creating a flatpak - Add support for creating a snap - Add support for Motorola S-record files - Add the Linux Foundation public GPG keys for firmware and metadata - Show a translated warning when the server is limiting downloads - Add enable-remote and disable-remote commands to fwupdmgr - Add fu_plugin_add_compile_version() for libraries to use - Allow requiring specific versions of libraries for firmware updates - If no remotes are enabled try to enable the LVFS - Show a warning with interactive prompt when enabling a remote + Bugfixes (including version 1.0.7): - Add a firmware diagnostic tool called fwupdtool - Adjust all licensing to LGPL 2.1+ - Allow installing more than one firmware using 'fwupdmgr install' - Allow specifying hwids with OR relationships - Do not call fu_plugin_init() on blacklisted plugins - Do not require libcolorhug to build - Fix a crash in libfwupd where no device ID is set - Fix a potential DoS in libdfu by limiting holes to 1MiB - Fix a segfault that sometimes occurs during cleanup of USB plugins - Fix Hardware-ID{0,1,2,12} compatibility with Microsoft - Hide devices that aren't updatable by default in fwupdmgr - Search all UEFI GUIDs when matching hardware - Stop matching Nintendo Switch Pro in the 8bitdo plugin - Check that EFI system partition is mounted before update - Disable synapticsmst remote control on failure - Don't recoldplug thunderbolt to fix a flashing failure - Fix SQL error when running 'fwupdmgr clear-offline' - Improve the update report message - Only enumerate Dell Docks if the type is known - Only run certtool if a new enough gnutls is present - Prevent a client crash if the daemon somehow sends invalid data - Reboot after scheduling using logind not systemd - Use the right encoding for the label in make-images - Added/backported enable_pkcs7_when_testing_only.patch: + needed to disable pkcs7 test during build (can be removed for fwupd >= 1.0.9)- Update hasbang in installed files from /usr/bin/env python3 to /usr/bin/python3.- Update url - Small packaging cleanup with spec-cleaner- Update to version 1.0.6: + New Features: - Add bash completion for fwupdmgr. - Add support for newest Thunderbolt chips. - Allow all functions that take device arguments to be prompted. - Allow devices to use the runtime version when in bootloader mode. - Allow overriding ESP mount point via conf file. - Delete any old fwupdate capsules and efivars when launching fwupd. - Generate Vala bindings. + Bugfixes: - Allow ctrl-d out of the prompt for devices. - Allow to create package out of provided binary. - Correct handling of unknown Thunderbolt devices. - Correctly detect new remotes that are manually copied. - Fix a crash related to when passing device to downgrade in CLI. - Fix running the self tests when no fwupd is installed. - Fix Unifying signature writing and parsing for Texas bootloader. - Only send success and failure reports to the server. - Use a CNAME to redirect to the correct CDN for metadata. - Use a longer timeout when powering back the Thunderbolt device.- Ensure library package has a dependency on main package, otherwise it won't be usable.- Update to version 1.0.5: + New Features: - Offer to reboot when processing an offline update. - Report the efivar, libsmbios and fwupdate library versions. - Report Thunderbolt safe mode and SecureBoot status. - Show the user a URL when they report a known problem. - Support split cabinet archives as produced by Windows Update. + Bugfixes: - Be more careful deleting and modifying device history. - Clarify which devices don't have upgrades. - Ensure the Thunderbolt version is xx.yy. - Fix a daemon warning when using fwupdmgr get-results. - Fix crasher with MST flashing. - Fix DFU detach with newer releases of libusb. - Include the device VID and PID when generating the device-id. - Set the RemoteId when using GetDetails. - Stop matching 8bitdo DS4 controller VID/PID. - Use help2man for dfu-tool and drop docbook dependencies. - Use ngettext for any strings with plurals. - Use the default value if ArchiveSizeMax is unspecified.- Update to version 1.0.4: + New Features: - Add D-Bus methods to get and modify the history information. - Allow the user to share firmware update success or failure. - Ask the user to refresh metadata when it is very old. - Store firmware update success and failure to a local database. + Bugfixes: - Add a device name for locked UEFI devices. - Allow each plugin to opt-in to the recoldplug action. - Fix firmware downloading using gnome-software. - Fix UX capsule reference to the one specified in efivar. - Never add two devices to the daemon with the same ID. - Rescan supported flags when refreshing metadata. - Add pkgconfig(json-glib-1.0) BuildRequires: new dependency.- Update to version 1.0.3: + New Features: - Add a new plugin to add support for CSR "Driverless DFU". - Add initial SF30/SN30 Pro support. - Support AppStream metadata with relative URLs. + Bugfixes: - Add more metadata to the user-agent string. - Block owned Dell TPM updates. - Choose the correct component from provides matches using requirements. - Do not try to parse huge compressed archive files. - Fix a double-free bug in the Udev code. - Handle Thunderbolt "native" mode. - Use the new functionality in libgcab >= 1.0 to avoid writing temp files.- Unbreak compilation on non-x86, upstream renamed options to disable plugins.- Update to version 1.0.2: + Add a plugin for the Nitrokey Storage device + Add support for the original AVR DFU protocol + Allow different plugins to claim the same device + Allow quirks to set common USB properties + Move a common plugin functionality out to a new shared object + Optionally delay the device removal for better replugging + Set environment variables to allow easy per-plugin debugging + Use a SHA1 hash for the internal DeviceID + Add quirk for AT32UC3B1256 as used in the RubberDucky + Disable the dell plugin if libsmbios fails + Don't register for USB UDev events to later ignore them + Fix a possible buffer overflow when debugging ebitdo devices + Fix critical warning when more than one remote fails to load + Fix DFU attaching AVR32 devices like the XMEGA + Ignore useless Thunderbolt device types + Refactor ColorHug into a much more modern plugin + Release the Steelseries interface if getting the version failed + Remove autoconf-isms from the meson configure options + Show a nicer error message if the requirement fails + Sort the output of GetUpgrades correctly - Changes from version 1.0.1: + Add support for HWID requirements + Add support for programming various AVR32 and XMEGA parts using DFU + Add the various DFU quirks for the Jabra Speak devices + Allow specifying the output file type for 'dfu-tool read' + Move the database of supported devices out into runtime loaded files + Support the IHEX record type 0x05 + Use help2man to generate the man page at build time + Use the new quirk infrastructure for version numbers + Catch invalid Dell dock component requests + Correctly output Intel HEX files with > 16bit offset addresses + Do not try to verify the element write if upload is unsupported + Fix a double-unref when updating any 8Bitdo device + Fix crash when enumerating with Dell dock connected but with no UEFI + Fix uploading large firmware files over DFU + Format the BCD USB revision numbers correctly + Guess the DFU transfer size if it is not specified + Include the reset timeout as wValue to fix some DFU bootloaders + Make the error message clearer when sans fonts are missing + Support devices with truncated DFU interface data + Use the correct remote-specified username and passord when using fwupdmgr + Use the correct wDetachTimeOut when writing DFU firmware + Verify devices with legacy VIDs are actually 8Bitdo controllers - Add help2man as BuildRequires.- Fix dependencies and build options for non-x86 architectures. At least FW updates for USB are arch independent, and EFI FW updates can also be applied on Aarch64.- Update to version 1.0.0: * Add the plugin documentation to the main gtk-doc * Add a waiting-for-auth daemon state * Add fwupd_remote_get_checksum() to use in client programs * Generate the LD script from the GObject Introspection data * Prevent fwupd from mounting filesystems * uefi: Do not use system-specific infomation for PCI devices * uefi: Support uploading the firmware splash image * dell: only set coldplug delay when we know we need it * dell: only run SMI to toggle host MST GPIO on systems with host MST * dell: add functionality to blacklist HW with problems * dell: only run on intended chassis * thunderbolt-power: always run after thunderbolt plugin * Allow plugins to depend on each other * Add support for SMBIOSv3 * dell: prefer to use hwids to get DMI keys and DE table * debian: remove /etc/fwupd.conf on upgrade * unifying: Use fu_plugin_check_supported() * Add fu_plugin_check_supported() * unifying: Use a device whitelist to avoid breaking devices * Fix various printing issues with the progressbar * dell: Fix a trivial whitespace issue * Do not fail to load the daemon if cached metadata is invalid * Do not store the newest release as part of the FuDevice object * Add a method to return a list of upgrades for a specific device * Move the downgrade calculation to the daemon * Make FuDevice derive from FwupdDevice rather than FwupdResult * Add a command 'clear-offline' to fwupdmgr * Merge releases where multiple remotes provide the same firmware * Remove the UniqueID property * uefi: Do not set the release version * udev: Do not match USB devices, even with a GUID set * Use the intel-wmi-thunderbolt kernel module to force power * dell: drop thunderbolt force power code * unifying: Add hardcoded summaries for peripheral kinds * Create CODE_OF_CONDUCT.md * Ensure more devices set the device summary * Add an 'Summary' property to each device * Add a human-readable title for each remote * unifying: Disable if the kernel has no CONFIG_HIDRAW support * Move deprecated symbols to a new header * Introduce an s390x cross compile target to CI * Add ModifyRemote as an easy way to enable and disable remotes like the LVFS * Do not auto-open all USB devices at startup * dfu: Use FuDeviceLocker * unifying: Use FuDeviceLocker * colorhug: Use FuDeviceLocker * ebitdo: Use FuDeviceLocker * altos: Use FuDeviceLocker * steelseries: Use FuDeviceLocker * usb: Use FuDeviceLocker * Add FuDeviceLocker to simplify device open/close lifecycles * dfu: Remove DEVO support * dfu: Remove the now-unused symtab support * Remove the ELF support from libdfu and move the code to the altos plugin * Use -Werror when building in Travis CI * Do not install the libdfu helper library * Parse the SMBIOS DMI table directly * usb: Disable the fallback USB plugin * Test for missing language translations at build time * Fix the libdfu self test failure on s390 and ppc64- Update to version 0.9.8: * Add a command 'clear-offline' to fwupdmgr * Do not fail to load the daemon if cached metadata is invalid * Fix a crash when using fu_plugin_device_add_delay() * Fix the libdfu self test failure on s390 and ppc64 * Format the BCD USB revision numbers correctly * Never fallback to an offline update from client code * Prevent fwupd from mounting filesystems * dfu: Allow flashing when the target does not specify an alt-name * dfu: Do not try to verify the element write if upload is unsupported * dfu: Fix uploading large firmware files * dfu: Include the reset timeout as wValue to fix some hardware * dfu: Set the vendor ID to the runtime USB VID * dfu: Use 0x0101 as an alias for 0x0110 * thunderbolt: move test for mock environment (gh#hughsie/fwupd#280) * udev: Do not match USB devices, even with a GUID set * uefi: Do not set the release version * unifying: Disable if the kernel has no CONFIG_HIDRAW support- Update to version 0.9.7: + 10 months worth of bugfixing, integrating more vendor specific Firmware update paths.- Update to version 0.8.1: + Delete duplicate translations (gh#hughsie/fwupd#89). + Do not hardcode docbook2man path. + Fix fwupdmgr timeout with missing pending database. + Fix compiler warnings. + Fix a crash when enumerating devices on a Dell WLD15. + dell: don't initialize libsmbios on unsupported systems. + Do not fail to start on Dell hardware. + Adjust systemd confinement restrictions. + Do not dlclose modules when running under valgrind. + Really remove the NoNewPrivileges systemd confinement. + Release fwupd 0.8.1.- Update to version 0.8.0: + Show a different error when checking for updates while on + battery power (gh#hughsie/fwupd#68). + Clarify the test in --help and man page related to offline + (gh#hughsie/fwupd#69). + libdfu: Use a heuristic for the start address if the firmware + has no DfuSe footer. + dell: Don't return the address of a stack variable. + dell: Fix a possibly-impossible-to-hit buffer overrun. + close USB devices before error returns (gh#hughsie/fwupd#73). + Make libelf support optional. + Always make sure we're getting a C99 compiler. + Fix redeclaration of polkit autocleanup functions. + Uncomment SystemdService parameter in the dbus service file + (gh#hughsie/fwupd#74). + Make all providers and plugins share a GUsbContext. + Unexport libebitdo. + Move the plugins into plugin-specific directories. + Convert the providers to plugins to simplify code and for + future features. + Add support for Logitech Unifying devices. + Add a set of vfuncs that are run before and after a device + update. + Return the pending UEFI update when not on AC power. + Move the UPower functionality to a plugin. + Fix udev plugin loading. + fix dfu plugin loading. + Disable PrivateNetwork on systemd service. + Use more restrictive settings when running under systemd. + dell: add a new method for forcing a controller to flash mode. + Add VerifyUpdate to update the device checksums server-side. + Move the Option ROM parsing to the Udev plugin. + Move the device add delay to shared code. + Add initial skeleton for Intel Thunderbolt support. + unifying: Use the actual bootloader VID/PIDs when in firmware + mode. + Allow the metadata to match a version of fwupd and the existing + fw version. + Add fwupd_result_get_device_version_bootloader(). + Fix the appstream-glib version guards. + dell: Add coldplug methods to let other plugins turn on + TBT/GPIO. + libdfu: Don't read data from some DfuSe targets. + Add the ability to run a prepare->exec->cleanup on coldplug. + Allow plugins to request that all plugins re-coldplug. + thunderbolt: Detecting new devices and add an actual device to + the daemon. + Add support for flashing the ChaosKey. + thunderbolt: add some guards around empty arrays. + dell: Adjust the coldplug preparation and cleanup sequence. + dell: Fix possible linker problem. + Revert "thunderbolt: add some guards around empty arrays". + Add fu_plugin_set_coldplug_delay() to allow hardware to + initialize if required. + altos: Add error checking when using termios. + ebitdo: Subclass FuDevice like the altos plugin. + altos: Set the flags in the init_real so they work for the + cmdline tool. + unifying: Subclass FuDevice like the altos plugin. + Include all debug messages when run with --verbose. + dell: introduce a standalone (noinst) tool to force mode + flashes. + Introduce plugin for Synaptics MST hubs. + synapticsmst: Add cascade support. + Only register the D-Bus service when all devices have been + added. + synapticsmst: Refactor away the global state. + synapticsmst: fix cascade support in the plugin. + Updates for thunderbolt plugin. + thunderbolt: Add special handling for safe mode on Dell systems + (gh#hughsie/fwupd#84). + synapticsmst: Iterate all nodes rather than hardcoding to 3. + synapticsmst: build GUID using dock type. + Add a new function fu_dell_supported to fu-dell-common. + synapticsmst: add a test suite. + synapticsmst: Fix up some trivial whitespace issues. + Fix a refcounting issue in the udev plugin. - Add rpmlintrc untill security review is resolved- Update to version 0.7.5: + Clean up PO files + Verify devices support updating in mode they are called. + Fix an assert when unlocking the dummy ESRT device + Don't create the UEFI dummy device if the unlock will happen on + next boot + dell: Match on TB16 as well + Fix a -fstack-protector-strong crash when uploading firmware + Enable the stack protection in local builds + dell: If running in test suite, don't try to get product ID + from sysfs + libfdfu: Show a warning when getting the alt-name failed + dfu: Fix listing devices using the ST reference bootloader + Show the nicely formatted target name for DfuSe devices + libdfu: Fix two possible critical warnings for corrupt USB + descriptors + libdfu: Correctly offset addresses when one zone has multiple + sectors + libdfu: Do not do GetStatus on dfuse upload + libdfu: Fix uploading from DfuSe devices + libdfu: Use the device offset when writing DfuSe firmware + libdfu: Add DfuAction enumerated value to represent a device + action + libdfu: Use an animated progress bar when performing DFU + operations + libdfu: Do not do a zero-byte download when in DfuSe mode + libdfu: Fix verification of written DfuSe firmware + libdfu: Ensure the device is open before claiming the interface + libdfu: Ensure the mode is set correctly when faking a runtime + libdfu: Re-get the quirks when the DfuDevice gets a new + GUsbDevice + libdfu: Add quirks for HydraBus as it does not have a DFU + runtime + libdfu: Match the device booloader or runtime VID and PID when + checking firmware + Add a 'replace-data' command to dfu-tool + string + libdfu: Add dfu_sector_get_zone() to get the continuous memory + zone number + libdfu: Wait for DNBUSY to be cleared when checking the DfuSe + status + libdfu: Correctly erase DfuSe devices + Enable hardening flags on more binaries + libdfu: Correctly set the element address when uploading from + DfuSe devices - Add pkgconfig(gmodule-2.0) BuildRequires: Align with what + configure checks for. - Add pkgconfig(libsmbios_c) BuildRequires: Support dell bios. + Unfortunatly, until we have fwup packaged and enabled, this will + not work. - Add disabled pkgconfig(libtbtfwu): For future thunderbolt + support.- Update to version 0.7.4: + Add a fallback for older appstream-glib releases + Write the ELF files with the correct section type + Fix libfwupd self tests when a host-provided fwupd is not + available + Add dfu_firmware_add_symbol() + Add the Altos symbol table to the DfuFirmware + Use the symtab to set the VID/PID from Altos IHEX firmware + images + Show the human-readable version in the 'dfu-tool dump' output + Allow specifying the argument to 'dfu-tool set-release' in + major.minor format. + sections + Support writing the IHEX symbol table + call + Load the symbol table from ELF firmware + Load the Altos USB descriptor from ELF files + Add DFU_CIPHER_KIND_RSA + Fix a possible crash when uploading firmware files using libdfu- Update to version 0.7.3: + build: Fix gtk-doc build when srcdir != builddir + In get-details output, display the blob filename + Ensure the update ID is set when getting local firmware details + Use a private gnupg key store + Add support for installing against multiple devices from a CAB + file + Use the correct firmware blob when installing a composite + device update + in get-details output, display update_name rather than Unknown + Device + statements + Don't make failures critical while checking versions or locked + state + Show a more detailed error when installing firmware on the + wildcard + Add Dell TPM and TB15/WD15 support via new Dell provider. + file + Allow blacklisting devices by their GUID + header file + Add XPS 9250 to Dell TPM modeswitch blacklist + Only display flashes left in results output when it gets low. + Add a small library for talking with 0bitdo hardware + Add another compile warning and fix up any build failures + Embed fwupd version in generated libfwupd and libdfu + documentation + Update fwupdmgr manpage for new commands and arguments + build: Fix gtk-doc build when srcdir != builddir + online not offline + Get the firmware version correctly from 0Bitdo gamepads + Switch to the Amazon S3 CDN for firmware metadata + Fix writing 8Bitdo device firmware + be updated + Show the vendor flashing instructions when installing + Split out the DFU file formats to separate files + Add fwupd_result_remove_device_flag() + Add FU_DEVICE_FLAG_NEEDS_BOOTLOADER + get-updates output + Allow providers to export percentage completion + Add fwupd_client_get_status() + Handle the 8Bitdo bootloader in a better way + Show a progress notification when installing firmware + Add fwupd_result_get_unique_id() + Use the SHA1 hash of the local file data as the component + origin + Use the correct define prefix for FwupdDeviceFlags + libdfu: Fix hang when parsing corrupt IHEX files + Add a set-target-size command to dfu-tool + Support the 'DEVO' cipher kind in libdfu + Add a set-address command to dfu-util + Disable the Dell specific code by default + Conditionally enable all providers based upon what's installed + Add a summary of providers that are enabled from configure + Do not use the deprecated GNOME_COMPILE_WARNINGS + Ignore devices that do not add at least one GUID + Do not attempt to add DFU devices not in runtime mode + Save the unique ID in the pending database + libdfu: Add initial ELF reading and writing support + Add dfu_firmware_format_from_string() + Normalize the DfuFirmwareFormat enums- Update to version 0.7.2: + Allow devices to have multiple assigned GUIDs + Only return updatable devices from GetDevices() + Add fu_device_get_alternate() + Allow metainfo files to match only specific revisions of + devices + Re-read flags for a device after a provider's unlock routine is + done + Test for a locked device when trying to install firmware update + Enforce allowing providers to take away flash abilities + Support returning multiple GUIDs from GetDetails + Add a GetDetailsLocal() method to eventually replace + GetDetails() + break + libdfu: Add DfuVersion enumerated values + libdfu: Show the DFU protocol version in 'dfu-tool list' + Only claim the DFU interface when required- Update to version 0.7.1: + Fix libdfu CRC check for big endian architectures + Add dfu_image_get_element_default() + Fix libdfu CRC check for big endian architectures + Fix big endian issues when reading and writing DFU and DfuSe + files + Remove non-interactive pinentry setting from fu-keyring + Set the system's DMI product name as the DisplayName for UEFI + Re-order output of get-devices to be easier to read + Make the device display name nicer + update version + Return all update descriptions newer than the installed version + Add summary and name field for Rival SteelSeries + Fix a critical warning when restarting the daemon + Add a 'supported' flag to the FuDevice + Add fwupd_client_connect() + Add a 'monitor' debugging command for fwupdmgr + Add device-added, device-removed and device-changed signals + Match the AppStream metadata after a device has been adedd + Re-match devices when the AppStream metadata is updated + Show 'Unknow Device' in fwupdmgr when a device name is not set + Set the device description when parsing local firmware files + Add support for a new device field "Flashes Left". + src/Makefile.am: reshuffle so enableable bits are only + referenced when on + Add support for a --force flag to override provider warnings- Update to version 0.7.0: + Use g_usb_context_wait_for_replug() + Run vendor plugins as required + Add a plugin for SteelSeries hardware + Add fwupd_device_flag_to_string() + Return the device flags when getting firmware details + Show device flags in 'fwupdmgr get-devices' + Add fwupd_trust_flag_to_string() + Export FwupdUpdateState in libfwupd + Export FwupdUpdateFlags in libfwupd + Add FwupdResult to libfwupd + Add a self test framework for libfwupd + Add FwupdClient to libfwupd + Use FwupdClient from libfwupd in fwupdmgr + Use libfwupd inside the daemon + Emit a FwupdClient::changed when the daemon emits this signal + Rename some of the new libfwupd API to align with the D-Bus + names + libdfu: Fix up some NULL/FALSE confusion + libfwup: Fix up some NULL/FALSE confusion + FwupdClient + Allow other checksum kinds in FwupdResult + Allow SHA-256 hashes when verifying + Show the checksum kind in the fwupdmgr output + Add Alienware to the version quirk table + Do not use /tmp for downloaded files + Add fwupd_result_has_device_flag() + Do not return updates that require AC when on battery + Connect to UPower at startup + Test that GPG key import actually was successful (or didn't + change a key already in the keyring) + Use g_auto() in FuKeyring + Return errors of the correct type when using libfwupd + Allow overridding the location of the pending database for + test suite + Allow overriding the location of the provider offline files for + test suite + Validate that the dbus system bus is available before running + libfwupd tests + Update README.md for changes that have happened in the project + Add some basic explanation of how to use fwupd with various + frontends + Split out the libdfu-devel package + Revert "Allow overridding the location of the pending database + for test suite" + Revert "Allow overriding the location of the provider offline + files for test suite" + Allow the test suite to run in %check + Generate gtk-doc documentation for libfwupd- Update to version 0.6.3: + Require AC power before scheduling some types of firmware + update + Install the hardcoded firmware AppStream file + Correct the BCD version number for DFU 1.1 + Add an unlock method for devices + Add ESRT enable method into UEFI provider. + Only read PCI OptionROM firmware when devices are manually + unlocked + Do not use deprecated API from libappstream-glib + Ignore the DFU runtime on the DW1820A + Export the attribute and quirk values in libdfu + Show ignored DFU devices in dfu-util, but not in fwupd + Allow defining update vfuncs with no runtime support + Revert "Allow defining update vfuncs with no runtime support" + Add a simple plugin infrastructure- Update to version 0.6.2: + Add 'Created' and 'Modified' properties on managed devices + Fix get-results for UEFI provider. + Support vendor-specific UEFI version encodings + Move quirks directly into a single table and file.- Update to version 0.6.1: + Only dump the profiling data when run with --verbose + Always persist ColorHug devices after replug + Do not misdetect different ColorHug devices- Update to version 0.6.0: + Add support for updating USB devices with DFU + libdfu: Add support for DfuSe firmware + libdfu: Generate gtk-doc documentation + libdfu: Don't rely on specific hardware to be present + libdfu: Move the VID:PID checks from the tool to DfuDevice + libdfu: Use a custom error domain + Use the same device identification string format as Microsoft + libdfu: Fix crash when setting a target size + libdfu: Allow setting the alternate settings in DfuSe firmware + libdfu: Add a merge command to dfu-tool + libdfu: Allow choosing a different alt-setting when downloading + libdfu: Fix a crash when setting a NULL image name + libdfu: Correctly implement auto-boot in dfu_device_download() + libdfu: Check for extra args to dfu-tool convert + libdfu: Call the progress callback when doing detach + Ignore the DFU device detach:attach when verifying + libdfu: Require a --force flag to flash wildcard firmware + Use new API available in fwup 0.5 + libdfu: Make the element address 32 bits in size + libdfu: Support the ST-specific bitCanAccelerate + libdfu: Only do a Detach notification if we're actually doing to do it + libdfu: Use the progress bar for all uploads and downloads + libdfu: Improve the output of 'dfu-util list' + libdfu: Support download and upload to ST DfuSe devices + libdfu: Fix multi-interface devices like the Neo Freerunner + libdfu: Add a pkgconfig file + libdfu: Use signals to propagate device state + libdfu: Add a context object to handle device hotplug + libdfu: Add an example showing GObject Introspection + libdfu: Do not ref DfuDevice in DfuTarget so the auto-close + logic works + Close DFU devices as soon as possible after the transfer has completed + Emit the changed signal after doing an update + Rescan the DFU device after replug to get the new version + libdfu: Add dfu_context_get_device_by_platform_id() + libdfu: Add dfu_device_get_runtime_release() + libdfu: Add dfu_device_get_display_name() + libdfu: Fix self tests after recent API change + Split out the DFU provider as a new file + libdfu: Copy the platform ID and invalidate the GUsbDevice when removed + libdfu: Accept multiple spaces after the DfuSe sector name + libdfu: Verify the GUsbDevice is set before using it + libdfu: Remove the weak pointer when destroying the DfuTarget + libdfu: Fix dfu_device_wait_for_replug() so it can work with a DfuContext + Export the AppStream ID when returning device results + Rescan the DFU device after firmware has been updated + libdfu: Handle cancellation with ctrl+c in dfu-tool + libdfu: Add a quirk to support DFU runtime-less devices + libdfu: Add an explicit 'attach' method + libdfu: Add dfu_firmware_get_image_by_name() + libdfu: Make reading and writing to targets easier to + understand + Fix compile with --disable-shared + libdfu: Display all the files shown with 'dfu-tool dump' + libdfu: Fix a few crashers found using afl + libdfu: Fix another bug discovered by the fuzzer + libdfu: Add commands to encrypt and decrypt firmware images + libdfu: Show better device errors + libdfu: Add DfuCipher which is a property on a target and a + firmware file + libdfu: Add support for the draft 'DFU Metadata Table + Specification' + libdfu: Only enumerate the DfuContext when required + libdfu: Fix several reported crashes in the inhex32 import code + Release fwupd 0.6.0- Update to version 0.5.4: + Fix compile error against fwupdate git due to dropped + functions. + Use strerror() when printing errors from libfwupdate + Use new API available in fwup 0.5 + Release fwupd 0.5.4- Update to version 0.5.3: + Avoid seeking when reading the file magic during refresh + Do not assume that the compressed XML data will be NUL + terminated + debugging + Use the correct user agent string for fwupdmgr + Release fwupd 0.5.3- Update to version 0.5.2: + Ensure D-Bus remote errors are registered at fwupdmgr startup + Show the dotted-decimal representation of the UEFI version + number + require appstream-glib 0.5.1 + not found + When the version is from the 'FW' extension do not cache the + device + Support cabinet archives files with more than one firmware + Add the update description to the GetDetails results + Add profiling data to debug slow startup times + Fix verify-update to produce components with the correct + provide values + Clear the in-memory firmware store only after parsing a valid + XML file + Release fwupd 0.5.2- Update to version 0.5.1: + Fix the error message when no devices can be updated + offline update: Use glib api for for reading symlinks + Release fwupd 0.5.1- Update to version 0.5.0: + Do not merge the existing firmware metadata with the submitted + files + Raise the dep on GLib to support and use g_autoptr() + Do not reboot if racing with the PackageKit offline update + mechanism + Release fwupd 0.5.0- Update to version 0.1.6: + Install fwupd and fwsignd into /usr/lib/$(triplet)/fwupd + instead. + Use the new secure metadata URI + Update the offline update service to invoke right command + Don't apply firmware if something else is processing the + offline update + Remove fwsignd, we have the LVFS now + Depend on appstream-glib >= 0.5.0 + Add application metadata when getting the updates list + Simplify the version properties on devices to avoid complexity + and bugs + Release fwupd 0.1.6- Update to version 0.1.5: + Allow fwupd to be autostarted by systemd + Sign the test binary with the correct key + Do not pre-convert the update description from AppStream XML + Devices with option ROM are always internal + Prefer the GUID from the firmware than the device + Allow no arguments to 'fwupdmgr verify-update' and use sane + defaults + Add the ability to remove a vendor on the LVFS site + Fix validation of written firmware + Move the verification and metadata matching phase to the daemon + Add a simple config file to store the correct LVFS download URI + Make parsing the option ROM runtime optional + Add a Raspberry Pi firmware provider + Use the AppStream 0.9 firmware specification by default + Generate the ColorHug test files at runtime + Release fwupd 0.1.5- Update to version 0.1.4: + man/Makefile.am: Add --sgml to docbook2man invocation + Make statements about storing private keys stronger. + Provide a way for clients to add new firmware metadata to the + system cache + Fix fwupd-offline-update.service + Revert "man/Makefile.am: Add --sgml to docbook2man invocation" + Add a Udev firmware provider + Extract the version string from the ROM in PCI devices + Add a 'verify' command that verifies the cryptographic hash of + device firmware + Make the ROM parsing more robust and add self tests + Get the version number out from Intel VBIOS too + Provide a way to dump the option ROM using the command line + build: gusb is required even without colorhug + remove unused variables + Do not return NULL as a gboolean + Fix Intel VBIOS detection on Dell hardware + Do not use the subsystem information when constructing the fake + GUID + Actually parse the PCI option ROM + Accept multiple files at one time when using fwupdmgr dump-rom + verify run + Add a 'verify-update' command to fwupdmgr + Fix trivial bug when parsing firmware versions + Keep hitting the hardware until it gives us enough ROM + Make the version parsing more resilient to corrupt firmware + Fix the example .inf file to reflect reality + Fix ROM PPID searching to work for all ROMs + Move the LVFS website to the fwupd project + Add the ability to create detached signatures + Allow cab files to be saved + Add a simple signing server that operates on .cab files + Automatically download metadata using fwupdmgr if required + Don't call efibootmgr after fwupdate. + Associate the contact email address directly with the vendor + key + Use the actual LVFS GPG key + Allow running fwsignd as the non-root user + metadata + Do not merge existing LVFS metadata + Do not use the file hash when storing the LVFS submitted + firmwares + Move GetUpdates to the daemon + Change the DBus method for installing firmware to 'Install' + Allow installing an offline UEFI update without --offline + Add a 'fwupdmgr update' command to update all devices to latest + versions + 'update' command + Increase the size limit of firmware to 50Mb + Only sign files when the entire file has been copied + Fallback to offline install when calling the update argument. + Reload appstream data after refreshing. + Release fwupd 0.1.4- Update to version 0.1.3: + Coldplug the devices before acquiring the well known name + Add an UNKNOWN status so we can return meaningful enum values + Run the offline actions using systemd when required + Get the firmware version from the device descriptors + Added syntax highlighting + More markup + Support OpenHardware devices using the fwupd vendor extensions + Move boolean properties on the device to a set of flags + Release fwupd 0.1.3- Update to version 0.1.2: + More markup + Fixed typos and markup for executable + Add slovak translation + Add helper code to validate public key signatures + Decompress any firmware signatures in the .cab file + Verify firmware if a detached signature is present + Show the firmware trust status when doing GetDetails() + Only allow signed firmware to be upgraded without a password + Add some guidelines for vendors to README + Small grammar fix + Extract the .cat file alongside the firmware + Release fwupd 0.1.2- Update to version fwupd_0_1_1: + Do not crash when there are no devices to return + Add a 'get-updates' command to fwupdmgr + Add and document the offline-update lifecycle + Create runtime directories if they do not exist + Create a libfwupd shared library + Export the status as an enumerated value rather than a string + Release fwupd 0.1.1- Initial package./sbin/ldconfig/sbin/ldconfig1.5.8-150300.3.3.11.5.8-150300.3.3.1libfwupdplugin.so.1libfwupdplugin.so.1.0.0/usr/lib64/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:22836/SUSE_SLE-15-SP3_Update/00c4c34deff390e635959ab2b1d97878-fwupd.SUSE_SLE-15-SP3_Updatecpioxz5x86_64-suse-linuxELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=cde90c3ae09131ac3cbc4e0f3422d31b7db54a85, strippedPPPPPPPPPPPPPPPP P P P P P P P P P PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP P P!P!P"P"P#P#P$P$P%P%P&P&P'P'P(P(P)P)P*P*P+P+P,P,P-P-P.P.P/P/P0P0P1P1P2P2P3P3P4P4PR1R3R#R!R"R RRRRR/R,R.R+R-R*R:R7R;R9R=R6RԈ`8`{|p5 ҧuc+8vuҫ.f.ne t[4=+ \^Ʀg Avb\\8@6ښz͵NAcsFULEgڟP|G {*,yiJ`t1S!o!w[}3<ʹ>i__uli?z4iKo\֨ί5 u /25G9M>v \jF_~LvSWGf 2#",|3 ep᰺;SDQmeG0kxrdiH~zf6ᧇ- Or*Z5zit?Hù<تOvzyt+q&E )/Ps>pT҃MN{tO|¿#k_kP Bg'n,E^t%0{ u9gY cRё9Eo4 g]T17Xי5Fb#] K-V}^qx MladMTlvB,}쓮^"Z]97$)Iه(I8d?5 3T6TvHpؑ{^q:U%,905* \0kͶfuIA l`Y4"=[oѦ@>b 1w'Ls:ZoE sMgj5r|Kg}lW]w d{lK TdY*BAz_g4#S90ʤ||bAUS3Ѳmus4{N>&H}زO 'ēLpKL3jaNӈ3~.~#/DU~+ms/ws~lC{K/8aC1Uɭ*L{wz:sڈR=H%w7A2U i =^ߦ,q;4 g6"TϝH1},"XETC&=SRLu [ tel9@xdTڇpZ0sF&,:'mQsqvnvIz+ :뫟U5I `+K&Qm@5n8X2B7>-5%^ɪ;)õ>S4vX$ +6ت<|AA5)82*50I_L7.2WWD{~Jv MŚheÞIdq [kn5s2DVj~7T8)VRaxbl P碝2)GPuy9Fмfˍ&B"<䠨Cyl!Lj4•<-:(/Y%D3&sΕWg4I֖}C\ku `헵CbR)e|]˃&XWRgT1=;DtHÁjP8infn i큓:Ўy`M?M0 aTs&~ o*7`.;iIf̦xJy ]A#x5·v7GqyvgVPbcIWm _~-t0;•@|bbHֶ geqb5-%jg`]JYGGHuT̫rmdtM,SHe<cy-gL)R*r[)B./[ )WR.W*Wo/umm$F*y`$?H& DL5|Ŧ=kM b"M?fv,0ك`#nX&O{z}CfuЙl|jIwC"`;trIY|&ϱ?,)0-Pbh ^MEU&2!\tB_pt0YDW@"8qU6PCT@Le*~tg6,?_7ݥF^md:2N@P4B$8_z0IiOP/Hq?q15{.lTvdVRs51WZR/DNӉR,8R]I?L.=8@L:*DnF.vr#o*Xh &:")\hoL(=}ڹCWKP`ŽU1"NZ,n}V$ 6!gw@rym?U#jpBq.5e#ZUx&WU DŖD UE(w-$@l7"rЬƦm>/;>)jiB].l:|0#1yA'^>4AT'WxJ,1SټT) #`[C2y[0(N'_Yw1Wѕx>e PX4r+M1& }ݫɱtܰ{]ߐ p6n9EV₝~ e_Hϊke,nERr,<=}:Th)#-2HANQC͎.GV[ =&,s鑵@ HOj>d(QaztG1Ye&Exb6dtwWasIfKZ3go$ m]ttXi{Sܼ8Iw+5j> ;ټŷ }u\YWH?. n!h ?]X9";ypk8tywk5&Q1SKtqn bt$ht*8ׁ #x~TGؓBlC kRW $sFR3sW GAY6;֕NX>mH3O|iK<5·4^ocŒhYqJ6+_+[q:7ʘ"Ep>:&ZShI!uө^h5kηTCuiDg`ħ:C_f0C(jRX _}tcw|N",Iq">yNeulE'3O" |(j9|&Yo͏?&hefT#$)8"1C ~èX"zCw@},'Y _jׂaÆJn}*s=&a,CNLU"_A D&>u-N&<)pĥn(%NJtch"3zPN4!͡m2kl7腫`|;ª;P~K>U{dfX ig9=@jp`4\#[v%th y0jeҌ# 7b#g>N,X_pgjC!̏ w=A,Zΐ@!RuarӧH~ e Τ\FP5~wwV3t]LS-fZh Tٌ!>aA"GR}¹>2+k h"?:F3t?4`^$qjPtngsDjNsSIk!utYK9'pBhA= hgљ=}?*PƤQ4\V֨~:C>8':~G@A@/ CpR Ȩ8+0zg{"ahʚ*o-<}%p0X0o7 q昞P+c#D3[JX5X(X[W¼yU6Ղ4sroDe ٟߔ9;9{•f~`Nj(8|4? .^亪4QGMG4i%)m%vre1ML+PGeXExPr'Z!%4 RQ}C=㞎Cǥa9UTn6,z S ;^a]?#Y" *[IKvlLD[WVP/ܩٚ_ ʎ"<g|l} 6r{^iϩH=%[8R(eEvr-ypՊJ]Z:q6u56/M=*6eTr/W?1UzybSE 8-1B;ڪ* $~sPdc](my6cI5(QuXWZZ2'OW<HDnSC,?F=ƍfeFg,Rt瑫Rwc^Gtr Sim3rڙ3 )sAԕ.r`)M6z|BC/%BQLyYk(a 1t$̃ e&D1y/yy_[Y!9\qGpރ}W6!ܬu" 9Tݮ",aR?0% V{0E9WA)}1~yb`*['B &'p%b?X0dQӦt"=dAY˲f}dpuÏUWڎZVS2қ!Χ($|Dh _5S-ي)]Vסsv7G%-*6VUH~6wA-})g$1,|-ߘQ?8 bmpqGaK+@{4/̕/FB{l1~柹j7+\Bz jg.{tA)غ^aF|U[-r"N1KaUTX'~=2{}lB}d S}_a*OMZz%?WT%ߟ(Mւu,}XX,=F¹2$2P+͐b\~;_+lӎreУYnC~+C֯]\E;bsQ(~ow'Ȝ/{?pyxW9ƭ&UDy?u.L-+Jodo0*:;R5K!{:$n-'#f|I ׋[eod`;YlsJ.~&5T?2xP' N$Zq-z'@PSl@N_T7SP%bo(/ *F+F༉dW5 ^VqX?'_p{6v9ꡟT&Nǭ|#:Ǟ5(O˲S;}^t^H/y$d&[%sjHpmX|=IpBOVV.W߀I5_;{cϡN8 nrk!sڭbŌuE,eyߋlHom(e,r9Nh WEQxfo|I?%S9UfN 6y|MQqmf6۠-xR C]11]˰@!2%TѣT`lKYYÊ+0ME4q cL@ #O)ط̨\06I37E6ևGK2N$v×.BT3ҘzwA :cI\ KQ&뽫ՠԽ0*|(64#S2^ KJ61 3; IJrТ 5)4y%(W3hERŭ}Ku/]<`:WȫI$}=C.hӻoxpg=U\jÇa/ 6,2O[,|A2,@."n[3g3,9 a_j<ϝ^̖Ő%95PY0^<ƀ Q{/ pY.=ъњ434jb@t dpI}ht'!v ^nJi]|1.~J^':<9ڍn{!Nip`V6. U8ٺRrݦ9mso`K_s'lIqbT,^c V쇿HU-ӮI)Y&ׇ;wyJ-ԝ5j~|'10g `ije1p8Wi!+_B&Ciz[g !Q eOH7xv(eE &/Ow`}F: LIl(}Le5"cUReC.) ߛY#S,nG(Λ03y:՚ /0.,':fzIDnBeo{Pβ:+\U rhfSfpGy)Lh(Σ!ۥp5 "f} oɶ&<9a'.Eө`8ƚ [g5[Ś;&A6hwE['Bډ[0rLv|<+/Ut.sԣnwzXGbi4?sd^0:'^m*K<󛷀cg!/@)<}wj5}w)<]s]竉9`'S(>FnR]4`1~N0ԟ|5ƥ)E$߅w 4HXtno4gJo'Z"}_SM ;WW4A*:\u\KW}z$pTٮBo_i4W|Mg ?ǡ@^@3fR  ݮe{^j‹`y,EV9| rf!Lye-T7dKSz`~G1=W%@\` 7qU#/bg*df p YYɷhqݟNZuV2)].9hX1qpA K4A@uI_)ʟ=L>9(bH%o;x`}\uIJ54L_vusG`l4*osn*\"?7g1$xUa{fb (#WN^DD*fwpgEd\jȺ𯸤~{TM¦?r9B2inbhR%dCxRѕ ١'ӲCz1:R~ |zeM:߇Q3o_:MW,4U U8y)w+\5FzqIld md1B˰zi RL<']*tTVYz¨}"]G"m 8%IIZ;Vݰx`;7FUs#չVoːx`Ic[OjA }M!ds=~Ċ)g5td!_b],J|%37-/SX@2]C~lD1 w6kI`zdWlbB*G[fi\V룧fArknCz`󢒮_kK` ϩpP @_u|o{56(E)IHFkԞwi13bsMW2^J"o[7M Sų24gyow̔b?=J3ոia>vCH˖/1G4<*+D,!k>! (}sX(Grlmf#tSce>@N]mf{uO/,H-Vt"}ϑRT?fxysΞs\Xp2':"i #u#nͫu? y *[-ϕoQ`f4j%1YO& #t$û l18[{N* c("Q?7ٛ  wƖ-4Ч^wgXmVNK5k՚,"$C <]VzW:B=fI~NkEJ6yGԁכ #N- a-ޗS[AȖ P z ](4OnX}lxx!b@uxt0G k R)si<7ybP Ot(ˏ,3wYhsNƛV8^ۧnDiS_3,J9EX8:m-`21-=১zZȨ%HFދuIE=V^Y 1qՌ1Rɵ.;5ZCfl+qJaK2z?GՋݠ+RT:SE0ןP`#' T]Ds?ۛՈǘGwo¡yS4F eQH%8*kǟ͏p%oHz? -{KzzYL#ت ?W _ w⸩֗,Z}W55 aYU7)31['Y6<3EO~Pr:;UpvŘ)o$e#ފ1c|'lj%x m 0}93WtS_ԏ |jݜsl׊O2)HS?LRӹ,E\w4i(.bt/"U0-ZJ/1`$W:X#  )%zl_)ٔdva {uh@2OcAf %аQŎIkU;>Gࡩ e -Aym4RP/R'5gfl \yȦ&>3VYHxϲTQyCq8w) Swu Q?RM391mM?EvҮL/XG,־+FM@H̗ÖD۳r M$911|9&M_\886;Ou)B#`0|ds:%y3ElL y؞: ?0r"uZ)#j`=яrA^gro6FM<9 o3Ww+#D\n`BEoDh@s0eef-:ˎv.0Zdfaken[J3|Xi]^4;Xk @u?9Ƀ5gT XFlXj$axyZh0go5Sʌw/+ՈSQ\3^۵?,PT kA]!Gtwt ǽHd\Ӆˣ?&> Mwע` (be e獡ly?'H^g2i0k-V# fBt/aPs'*|R]rvtFDcr"wk[TiT1a\r}fXG0;yz*K骦eozl8|ŶȦsڃot88К+)H޹(1r]?g=Ўnޤh˟1Osi"{'1ZjShgXd-x)!Uu0o͛J B1pyGYXU tq[XWb=$,3$ZJiQ$3*>4b?[ VV-ej]0"gǞSxRls$YoU㇅O8(T9 >ԁUKo'' v\~`D6}ϙPڈ)(ciҞ *|dWp2Av[ٕ&~Qy{a(4#T{mgoɉ~:oDmQ;IXU ٢@d }@gP8|:-,Moj/IZ`;CGCâw=Xip C\8nǗ5n* Zw;< ˥nBoz |}K %XAV)[kEt?Ʒ]6nа dEJ:,Yw Gv)|^=F{cf[ -]Ng4 @5 huih Ld@hAegeàeDqIQ r"CP6qUptU^oIU<@Eb_ 2+#)N_it;bR{eڸU$ 6O#bg/,7"Od|(]д8#tl;9VTrDo"hx^a{W')qtz`2 +>cݢABXitrUz.0eycFQ9JcGRZ'DBBQun6BX, J_DO[ɩlGD3GsM`8\UJԅ}ֿ$7(i<:׳!P(Ka  6 ":8TAr*c# ڑ))1aPa_`q|R \$w |@R^$rzW%b 'HjNL{cǫq䯸XV@d&`;@Y9'QTg&-13 WL= V vh?OZuQJYjf52q{z ,Pƚw{UmCPɟJZxm%1yy3 ”`-j~ CP0'ڎtR{}G5Rk_w@EL1xt>s=u~@ߐmsG~  )S8uGކ)Ƕq[´`l 2ůHG!#N6(MӉo:g݋m’1t]~sfLdV"/ktEL+QT/}9ɘB>yF'P \*3 dX(=5l/tz@=3fSB!Vj$$:袗\r^-8d4t! *˴O46w2aM焃3nž6hP)q ߓrdV6`bѶqy,/]wGw$©SAzݳnqyeUf|e[ (B DZTB:|N>2'bTUHğyJ͸ z֫)U1.>Tױ\Gۢǘ %W>uU{D$Ώ>n)E'~ qX&3%]g+SGo&!-k5%& G!,8&_±K:7Ϋ+cR0}j grp9|(V&1OG% w.Ɯ ԔE~qwg]9YO--IdOȔ#79v(z/2}jFN0+jd8$ ;oԄcl3Nixn]7(SX־"HSƦ {ET;0DkWZ]33bT?+|dEfַnޕc%C5c[(l׋)tǗ۲4.(S?G4z>ԟ6 ?J)X_3F |*~ =gYX;] 3Kw$?F<Ê/̨OTY5$z=%qAIRe~E]gq x&1\NHG4te7+V0N$?i>n=;Yד{Wh$p[AVI"2:'ߝ@p0)M5\W(q)N:7ucCdgg2?HP΋vB")&3YS77DC.AD߶hk8 asps%[j(/?uL"F`NXua| K'H.ˠ*vY 7Aav^Œx$a6h\cQYПx``ig< lN I;l RWw>YJLF 7B&餝B-0Go D͋%Gt;| Ā|0#eߊ3k",:/܉;׻W`vMm(4xt œ@&=&[JCJhS -]ݭE}5!U]~8$Lǰbk`ޑѸD2%tsI堀BWHG(XfۮIh.lWdQjo! o;2dA ؓ3rt)3%"Tu3b7dⓏ } i9JfP]?Q G-ք5k5ɑx%}& |x@,26v^ѨćQ *OdڧŚꞔk*J!TxRBKW/*Uh,΁pݓH%H^h }B''Lk]EM+РPj0_PSeLB=0&} HBt ؜,&(nL_"%a7Bާ'hm'E>sq+Rat/i23}UJX^U wVAS\dA fWocm2Rj6-$e[ X=*[ 2HFڣ_Nv)ô eWL_9wHam I u~{Raf&j7?陯_p[-]G6ݩ׶J/.*n> *XmOue3 [h5~oR/13A~nfYLzvZ_HS5f|D##5q׫ 4W t֔}r^]>nf33uՍu$72DjsPL(1FLZH^ʯѥ**(xJ_N'FͺiJ_' wn|~kc˜iֿF^':}/8Ԙ94\w` 6٦ J&1$xb1OQ z ғ@Hw!ԋ#V_[0\i k$%eQ3d[!P-7<$lVdԕDvV.b^A-먠pejy`'Gr!Ӹ4Y̬Mx,=fПG"'= T!̉myU=7酣u7+oTOZ>9#֘$u) Mɲ7$Xx9IÎ@+9s)Q̕vy"m-beO'ɔ⭉s .73ЁM0 T .%KAc K|E@ .^`X'aUv]Kq.6wڸ#oCt5MՕyTj,Um1S>%[м0t747ާm*'W&,qRCV[4FYNMa:NV;/ :zaIf52Juڂmׯ#b2+!lw^b[eNзZ'-<Brd-;H@n3S5"2?rr$C+zs7PNۻxW.B=#zʏF&`1QS w˥7ck/ ?-Y@јe<)@Gg~*m@‰;>ߪD/ob0#+Z*wR4S)le =Fb~#΂!5>2 ߒ z߼~:!Lc/k?JMtx&~kŬL|cq] `;7*7J$hFIH2^CK9=G@[`u ~ #snTցVe3~BsMڮ4G>[ov6>U)I jv3SDqZ$"v͂1wOd a$fKvs#7!Y p<_hJ_]Ⱦ`^ϓw+؝HpC* %IJBλlv'Û.Hˬ\q>$*Kظ<Ek0S1Y^`P&N'X}Kpt(sh ͍kdڨ>Ffئ!U Y.Sݢ],AgM;%ZмδCWR=u9met Enps0e-0NOt MM(?68|5i%PDZոFX  a,:^)tc2/ٚȊhr'+ܷLir+Y=o}^ArN,7%TwW|Lfs}b kv# [|D+29J*>oLfIV;UD"f%boUD)MV3)A\/Z 7:Wc(n[4z*F Svm("فbg;I^M9oaf(͏l7-b8#J}M^=0?U,b2$}0cR4sM'Q1<(˜"j v@?YR=_*GaSW C@p2H&l.+2wK،7lp8vx{T42F/ŞHI"AxR#z/a5W1+"*iq0wLP"(D`OӐ+z$#zkr?vIbz;9aFۻO~+Zz+6pׅu'MpG$xfQԫ+<44Sx+0O&?Z~_bcq_Tq(:D+ʯEY3h | BFL\[]q4e"?k+IkĤXm/4 nFQ *9yU.8h td&^5A.̯?`Gѿ$VŠ*ry3ͺl"˶ ȾwO+^oTX)s$OЫGgnqxʳ425|0ibI6x_Ў?iRU~_{"Fڣ3#lPتPk~EFϨJ5kȤkMMbʲ$ _gHmZDt8/Q E3Ar̥ /AVn'/{!G>>:}[o6>QkF).ۓaע敲3`A >`˴^hǏ,>ZJSߎv=+]ڤm>a#xTPOQ_*YTpt9g`2)dI:bn~ =&XnBt]s_)Qr V܊wQ%gUwŊ`O?̶âe*Fxh@~\6VEodm095L3vd{0ugJbE-5X("!24UɄiJE2f![AIN͈AVzi?*?Z65hSuV?ؽ{RI^붓6f| u7b,TxoXEՅqh+_Z4AnM҆<'Rz" <85;#WCtмeRU@gl$05~kt>t$J8ChQ?Yt UjT/Fk\B` (@W&@.S2q@e7 ;i$uv(!xDv 'V{x@QHy|+I2XUH*Y,eV#/Pf~g8S'9@\> R6Vܕ3֏]o6,&fK9nE>\DdzpJɬFe&oqӴƳ.b;dyH]Wj{ RXYfYeYe=RWʌwQCӗ19Uf+%.vKY2_`lxuh@}7b!-!3Ie?E&x܁kˇ|yhX GKTIUAV' 6 7x}Hn>Wq+~qx7&kڛ5%R.Fah:l4nUeeH2Ujn߂C8ObLϯx'FNj5ȶ}U %2 [c,u^^66Ɲa^mmSMR(INP~ŷBij0 !zwܯ1Rԩ,TvQA) 1q(#YfCc |*Wt_:> XÄvdΰ_zCq1H3wcaiooHōXTfn $ш~4c,Ĩ+Y=(N8k2Bi |bh7dT n/gnRzm\ykYq*@ A\vu2 0`vP_9oyݗ#Ra9qJj[ @+^ÑwGr0 P}>̘yc{v0ZQT'ep^p6htv6ez/'_oN6_z`b]ӭ,:8#=7A ;u+G52(Pb6B-ISYU~v@wFfn6|Ud,"I<бՍ!Sa;-vUNM_yz!M-'"w ~z! ѭ"bF<_:"E|挫" =RL%Ĭ2_&GK31%p9!MyF߼iZ6\fD;PžEO8C-wuj,^3-$=AKtj7y<9A;$i& |k0r?m_/ȦCu&~)<}w@lq$ _jvrDa;l2^XXi}ʗ׺kGj-H*wr+ɆݖAT!E ;]Db Щ%.(Ϩr21m{ZDC6)B=G'L+QA|ׯsV!0?BQbʞ':#8Xzv"Gѣ Si:Iٝ_{N˵Z3V=zgM}AYR\>T*QVΏC5LV/IkİGkp07%8/dz OY0KLS 9!=[_q)Q'1f?R7z1Z-S{xL Q*;".: %s !e4_Eڦ ':[d(/k?u Ө PiovoXS*>GwT"RkC3uO|J3&'0u.5h_n5`zQ7?"#DPf8 w%!gECw=%"4Px%}6%-X.(mfzxAHOrmA\8]]=E'G!| ؟yCA)[f+|!\31׷,N HfMISb#NӀIXR d| :Ix ݻvm2xÝO`شJ'G'儊A!/{WjAv 3iΓ\7LL˴bwU$^#輨@ܷeSd:D4{5R^&o i 27ṻ{=?$¡p -ytoK~qֻjf3ye57#f']5]'szA*ɦH)$"Lœi3o0 L[]շkr?>~rm<K[heEN9i7<`@ 6|f v*y)MJV鬶+jb$?V񉀗e@z{S3m6:jlw|q7y5y'Uf` _;ʱDoOaC١gSفS`tTVZ-I%e!kw<hT8'3w,MNY0ؕ$O}X?GC4djFt&+`/nK2 =@.õ[ׇ{\,t'ׂc6sVa~Gl6d?^L~0m+3yKAYO"WXIQcNv<nܩ↯j:U`˃bmɮ\o!?Je<)lr"vhqeM͖p ϏP,Bde : IX@WY䈫'#It&Yc\UaL#ӟf/oSBF=ZR-nK 8D6RMH__e{!s!` 4]rn},kb}9C%qZF$\^Ch ցmݯyQ ]Q;,7buKO z*] mG&8+֯STYI:7:J#.e?TFHv:%36B]q"W>C}(FnNZy%V$8[Һz t̎V'X7*،Ӥmhlݮ!$tk6 Bs-ce'<4jS4{摠&ؾU2Dgp# @!)90]s@yqfae[CWz7̀g `[w+#If2B"9Ԯ7{];cđfp1%jLogF*dήbL`gؕO8⹁.Qsk3i2+bCrO1Tks^Ik}O#gVDР y>:8RZwM%$M<$~e ȵ7 sD[$74wU̽DrЖFoXĚ͔smk4Rr(Y};MQ;|xݧgz~i|!~B=S\ۡvqUh4Wp2fh-Yx D\]Xὲ}Omܧa5mAy8vC5 9SǎN˥kE3"#U")귶p˰J`jO(@ veTɈ.+A>8婼x*Rhs$ y||㎭i>I{ӍCZb! Kp + *hm1am$=?i wFyJMSKfS4Ga!cŸK7diZ4ٸ TC6_1$Sho|$BsSLzTL "S1qU&)#?{ԉm:jB>Qz:ὈP~a)cje3zybٟ088GH3É݄Kuyh#%]l18.48?7pM~*ԺLNBO% z^z~C 8 qHڪf;Z{ Zmoีĩ@4#peڶh2{DߎOɛ}3 ,Ŧ^3Ә_HǹҰڮʦ,T! f*I:~^t]3ĺGmG6覑uw#R 𨣺oU)"o,/v;仇O[Su Ε|R6e!Qhoo z+i)Z 0?7A/jpbW`_U\.$#)tl%㉿Ωm΅J?I}كor[W}/zKl%|Uk+I38T g^"x&ݗoi aSp#w DO-H<7e$@0IOO$wJDנe0!jÎNŠil5tAT>P.yY1t@ b$AIdWԜ'LZ<$Go{Л68[קx '%ɚT|~#3(s,Q?IPQ3a?XySlD4VUBVFH+[:UXk]<^+SD'&̓7/n"rlz֥eGؒ$)"}$Td;OB;L:N6t$ o`eAG+qz1=5ǔ,zGdPR=2G~&o&tsehz:ID\_ t>r%]6,^7d?!A$Q\wwi"ۘu# 2n1M(JjVeqAa -$BA2Iӄj_/p"Le X!C$jD9y/7DŽ4 r(6hX<^ DaphU,}\2xzC4QOh1&0^ټR<MspQ󛣼549i9mC3nifpv) jA*#Z&"~R ) PNY6=,DWw;nߑt-ni X?Z)v}1X~9UD;FeDUL Xm8-zߙUQ7Oyo6QkWb'Vb4$!jQ. !M+,BOg05L`06t sBDqhB[ˉ-;&Ι5kcLbs(P;F5@D2 ĥ@dT{HnÖbVtl+4ċz90j3#*.ZUD>.S" iW)ͳ=Q:T͊q>`"'g?j4n@gj1Nxvk_\͸()94:O'^=%w]c%M_$y9FFlBlieQ_97OE#]垿X>fUb qLmzۭAdeңBzM+R0j(#1| ɫP\Ma^], 6M3gMG _E!PYv\PNx% &@uMTuƌN;ni#f?3 BFpa:|"H&u!S=Q#>t"V olT7fIw%Ѡiô\l̏RgS_7KrI3{v1D!TGYڃp;^`-.fZJ6'X;O#HD IDYyrxR6e)XN)7,5\ݫkb+rP1cS{k>JS^$g"Eo m)zT/ۓf+m3|X{^#7mS Nh4'WoF/[ L3ڛ[1_* 0IH?LL sFC\* $D qXZЅOVq4Gxi/gKfnV%{X4hxw@)w+!݄Gut="F)eX>2rTş#c?b|ꀣ\JjSY8ˌ)h6a;A4,e"zr_N7VFq"aܦc$W F泒TGό,׸t(m;#Hq3ctWt'\6+b)%!0tE1Fi@jyYmrIz`#M ?bv"GY:29_9 "&S ~j8dL'`-d% >ϡZCLB=F\m~ȮO{v7~*yi(:ܤ;78mJ:E"f.X B@ Rr"abC.BE-Xa X"phy0G BYfShЧEO'hE DPxqՊQyR,ư]u 2 fr#p|ۏ-M v9 *Iq.D;KcwE7\lY[jBN.mrsm$%rW4$eGp!&ks# ]rwPLGu*$8*>X{y,IjLFq)IkJyQ&9ܭRc5*3jFIϣ1`L4= I?(^ q@ڮgw&ut |a..W ?c\OEckBf,M W,<Yq`Hl~6bdgvSxI/u.N{®)3L~Y`2Ǚfo$D Ni2PO띤P|Jz?/MQ;)sz@!Zb]?\q^٪yKE-4ɛWaʭW6: }^*#m`[4J2=m -m'ؠR(gΗWl$z-O39Hn5ڇM""&0B`~Qo$Eyz4IK0m&d(d/X̪}%_MrپrfrNRG&FC; xk3Y\/õR"-s\Z,w  y ]tۄ)1M*ݧ;; J@Bfj Q><9j a aBedx~9rw-͏aKݯnFJN9~`m=аm|ZǨZG띾ߘo#;0)0H0 Afc?#D3Ic]_n1b~(152wmŠ<&:+tg!Kr8xNhDfyҿKzZ'1L60~3ퟶoIګ6:|⛣+7b'ڢ\iE;JT7I0jR[Z@n ^{7HO3_֛,-£/2k8e{"̔hXT؜/Bډ̯FѷXQwűyi$9k(5<> 5< ~m.-)/gLPh=S)4DBy=J'ի Ɣ(sU)Ob^'{3!xy@j`IF}Aԇu'e1%(ݹ ]>Q9G>X+BQWVOMϵ|/phֺD_c=ʧwn=w Ż́hg_u{b&%N]Gk=&.P`:0LIBhWeQfgKN^{Tɫ"ImbZ\rgk'bkګH)=W#3:8B&;~([fesW Tdv` kVa&ut@͍n6oPnj\EʱU|7/yR-XyQ*pP;UN턵jR`XI 8|,Wi4| fp~Y[2XǍ})J#CGxeizE@/ڵVN:KA*I[<̖~* c,$[a[U BӰ7I Na܃pFEsa4P_U7 5=]S2n7k|AI?DJ}E~`:.p/).l'C6Lx ЧfFɛBWKddjK8;pңD['w^1mB5n1 ~L}9>O1dOL `8yMo8S$8mBfW竇J4O˞tk]}GBک|vᅾdS5m%CWqK*yiihF!G˳9A_5aӫ?Jyg`%7LR7-)M7 -V[IBZP2b#5[f|G@N!Ө>I-^$BCTnօ1m".6(hMIatj7 8Sc;pGbTyo v% ;eWEORoO,%"29@ `nul˩Y*4͝ya:TWӨX|(0@PCא*@mc; $'\l(AE1tA[c0͹u)vzJcάƸL(.Jң&j㧳` Zf%P *Z5>K.$4_?dݸwU9 gQɞBY܄ 䏹(}Q|5jr k(S_tq!p_O3uؤvа$ɡ͉e dLg;ջ&#yAѾWpGr<fEAz|. ̍$bHI{D^J_g-juCĠq)Rv1hF);I9[:2 m2i*;önhYRJHeE7;>âNmH~")*קPyj860e~w(}R:-aw,V+x WK@b(#' !4&nBbBAӠ"]W%S2jrP=}MOh@Xhʪn2PIΈ j`P:9Auc %!^;l|?Dua[_q멿YxCsՔ㔬 4 $c_ڡZ{` ._vrG ΣBR)c=}QI5>`}X^y)oJgI#RSIZ>A^bh 5,#!3;;V굣 ٻJڃ}E*+,@RBQ,HZ!}> ;8l=UGGNd|T{m+2V&0#MO5TWܶ/&PuH 08X48RlRQ1Vo`H鍇ٔ3`2⬶w1'#`?*nNH!qY?.;>4:hԭۊMG BT"1ZI)pieIд"oEzObU9w,wC~6IT#PTD8f؎{q8lR5Y @|.3 Yȗk&xǼ Y#_~8Y9O7_Q q l3oicG͹'H`>lsYesMT+Jo { Όoåf&ymƻX?b&rRiS7Թ>_LRbIڟ2|/Ĝ*m=PΓ4jezʧKv >%:T|B %7x-6q-9Eӳ 9076qy}bĿL4ebM}%JZ>Ah'c*=k˒bs sw~hm{ZOґ!kB4ڴfuJ'glq{V"gOm p3?ƍ2h:`*Muy?\قԊEXՃ>Pu24jF>:a #D{ &sj{,Q ti'IG=kǁݧ\4X41C+bZ\K2M{RYCޛM pCv6!_qZsٴNJ>+RsKeTjwO0S9aNWD3nM$N6{YFPn!e߄7_NE| l˚/vO5{ eS_+XԾ3S'ujȦ;N" e9tr\a+/A/Vg[}Ҁk5PϤtlH: r]wMQ~7'a WdvVP:޲Z ȖZOn]GӫN6VHˆFU†>-#W/@[o%y/x%P4Grl/q|ǏA2w-ێCl)֩hYgcN,U(AQl{q=3VE)_8>#fҀ"?FG$<'HL bhRG&JX9f)GI*]硈53?jW =)JbSd36N]\Ğ PQtW;C{@+ ]OtjU)5; ~< iI{#aCvq9oQPCh7E'^Ŷ j$P%N{X u'_+>SIw60,5I%#m3G*&RH"9%풐5s=0m֞LI}ZX-󕯖A B wţZ*aCC+kfl5kIJ?`Q,P`yl[to)F{@; w G̒c8 gj/Ȋ#D%-ZpZ"9ܽ&BhS:rp" <\3 w=4a65 eE1Uuϓj&͆D?3l6MU]0Q 5Si=~t<X#H6i[4Hb@+ne6²ֶc_[_Y x%')RJ> 鶟rka1Fb {Łӛ[P^6+N}6l V(_]oWYR0^K6Tĉ|o<*)[d-m,Jgq℉EơQk:H4BڀZnco8>ԸB'zɠqt@KS8P_`c Qh37yuēXlmcFL-[<B҂?ĆIՇ]H@ W,'¯G4#ٌ $ \ JȚ ƴ5YibqnOzd9"1?WkL5 ȟSPԐs~-zu`o[RlD7P.ŭ)7Y? GF\Q)z 7}ks,Ff׫-$GZmϹ8&ף5plHKxUIolVvߡmSx^ t6-yhLj^unQ/m)"~k| QOT[dDc_JE+ BWӺ᳧:NJt xZy- ]jRcf1.jS `9BÉl ;;k6q@:2I|Zp* rKtԣfz#@Ӟψ<|75cwIfbij$e!v&NbZ,ő}Ir ƍ7sk2`;s UMuզ PYu +?}hcR99ej5Cл#;\e~&'1^뺭l1i6ϕjv[p̠G\rIw-xbKmz"tX䕈 "Kb0;4b+5`Kƌ_9 =JZy7ld`Rhak()X)e*rmd+Ցe"{_vvDEE %WZ+`5`=@䩗51lIa!t%]2jʂ(n-0'M=i--WjUjD0e;gM 2 c40},ۛ';{f̲V8p &' $BYK%RK).u>ZF)!]뉹ݖGԥdVj{x,/Aw9KJ!G$bՈ.m l5X2ᴹy4 iLrX5zڝ*8Po!^,C>ӉkR-ct=(l/ 'Ÿb&Ӟ ҫ'zO rb@tXyTX.ٶMfFn&M)R ɸK*42'^F%X荥zww%7R{Q1/ b,441d86/X8P8jxqVު '<"N$'6TqdFу)v-W8j[L4<0a+}W?V-#p)v59{ 59˄ M;iӐ&%1aôH=MP$ ܕ6Y֔rh$W1+Lf-]|+KHuC;YM, |jމ42Zwv烦Zm'hRorg7ՃZ7VAS0Meͯ؜):bu:H%au)ppv;XUS*}ӕ&[! I?X.wFyߞ--U\iHu$eyv{%/E!a&Y,BCXlrh˱o&˭SI0pk;)}/o6qPْ8'ش-o9 ld.q,[K bڷ]YӑBZ!m::%:OMtLzM,rLԵ_. [%MÉ{N9.g/XҍY8ci;u&7x+u(Z6i"DշxFq~B^NK*t dة.c$"*KvKu_F EgAazcdܭ[8[ %xpGF0^$ !ƺ=)zW0XC/2/Y]vpX#*OCMXn|PZZR fǑKyj{0DŽ'<5gdV \:;r77ɾDlF+C.׬שC|zOA s31 Ɯd5V-颱4A͠ANruCKCO=xZ֨Ģޞаp271d"A?=$%\7sKf`0ʱժZa\FO^{á΍(֩)>p֐I]B)j?~(@]W7'\Onu%bZy XF9BwҊ^#bQmiH(٬ B4] /^q:p/g(%gm0pYrNzV{L9yҵJsj F-`[H#+oD+ZFw/( K[6wݖz z1y|<ڇ 4c_d;LNk,h]߭[A$T-ƤD3lTW(Ow~Y@v[1:=bJ<%[Οʹtª)9.BVjz'}N3-i˽] ٚUBQF <4mjd -I.a;@8{M/)>|!j([KBϬ i]o1GV0[;u]X"EH0':a>v׭!F+ ܀G](]8A<H ,1?d|h P8:>JI Ol4*fr.x4N4XHn^B ;ظԊwfc̍W5y7( OL7*_4}'l)>j89 ]zي=-{f+8TJwI|iE?jm\6/t# x`NFE ˁK$&H Ap* c ^^l14ccH+,,Hрrs"t?VV|zslJK}Z  d5SxIzwi36ۇvWB.lJp>$n_Gǂ` @~诣惏p=U>5݅W5|5`׶hof`d 8^a-7n A4?T! 8tm+N3o4D$_#u'WDS&.yӶ]d,( |ŷٿg#e. F"<@y-.Dn4zvHB+('@c9IdU`U"WJU[5Y+:y4џrrTml@&aYlxqF# jͶBvWR)9*ߑ%X,0IUI) @谿.L%N I0,F;d[Q_' N3~XfփZmsC7E$2ę8Sd KȽZK2Wv$Ib+=y>k% X-U- @&da[pw3uuf"FZјLj}ZhѤ-۷[d ~~d {]0T)wmaZy/a?eRl?##49s=*(C)d%sp TTÜ 5 &lBoЕF^ >n*y\",RA(8"Kk\cz r5nߒqŤ z'Ȓuݧ.bUaaֹ4 ݧؕ?'-"ԊCJ)X #-$e'$bv|e[ÚZbނ JrL.3M:?0($u9)2p/͡oP4.Eg yRW Gsnc WL(֦㟌?l^IA7U0\R%2Iz+v&d;9RW#c/ k@v{{rW^Z`;( {D8􂲦Smy5ԉHfz?VRȰ'fxy!_@&݃:r ہC1jIO)Nj-LV[a<s忀Ybn(Wʮ,XMhTи,ۋ |i=xWDt[ڰ# ޭn|A LIN4i-*_^_m2`QO :/ds aAսdqH*ZZD|񹵫.d`D5awLr22?G4+.µ \c*)7_[ߘU㏸LEh=©8E7,v/_jF? u|K$bZ_U?~{~#J#iTxOvBg9HgoLE|=4XWƠvom{kf0F>$*e+4bҫ FY@qXN`i͊cv{wbX^*`.p%PTR ZT5?{P)"&l7,C#{ϨJ[ (E늺:=^ AI?z1 NNx?LaX6v+BX!ui ,5m]:ШPd=,?~m"LͮV?^`6@Y%_^Oz \iI|MI$hVc{/ɏR"eS6bmXN,.Qj'1W)>$58܃t2xs$C ֓Vbdeר-D޲bLP8A<3\Ƨc~_>xv˹xvP=ge!@:joZqZw"I!WjG`}ik O+4FpF/yAJITcܹǜomoVk??g0ʜ)z iT /Easz*)c!^h8w٩ỵ|}QRɚ4@<`ƨEJߠ5FgBp/ܩ`p!b-<̢?;?),uA4N}cDn砖aկN5\j{e~0),1 ,?רP v%$&c'۾p D y_Rבa cM5|߫Fntd7 9ސMDH#ۜhvitwpe# tDM%kV]3R7YPL_^tԖoTۓ嬨ظW ?qSxhRAi TߴޝH BLJ8zt/-q(y/ߒٷ9"g*1`yD4+dDP-N.NLbLWeMmѣbzg.oB7418VPaBڴ9 pc̶35%Oe E'\^⎪x{Z) q҇߸.N)TqxioZUj`ܻ \"x jJRX6K` JhDپ/_ ?N2@Lm(!'_u`g[>Y#Zg[ V7cƃ|HήJdc8=iƭKJMz:Cn?)Pj|#ue%GC IhX):F*;ŔWɉ%[N]s ӊ Jڣ"M q @>}t׫ZA %5$7SQ&/"4#jDZ8kz@Gɦ R9Yv!XU[AhaQJj@4S SKџbłވ SWzL=\ {mnΧuPy0^}hCow"JT}a%g΀K]U8w Ɇ$d}Z.B,k`kWX:Y^+A#\luš#ٳQv?,(?̳715'jFu{1hB!=aGC"3G8y.Ai}x "[Qtԕު(*,2/zHt)Vog^Ck#7=a+ON,ӥՔ*\8zGV υrW Ce/eE$bNnPŭ'tKt-z&*qj/#xEn;B88rXQV%I<5dnΐѣ{ѧֿFtVfSކj$g"ucscx-J*'VVasJPA\wkA@;̼ՑhjA~#g.]5YAcsa+z7bUgAUHmTvY2c <&C3Rʧڤ4;$G^<̚'׍/ڧ A\k`)݋(ԋ VMjL@o%s3DZ~Jy'|D4&tH/΄I G\ΒbgJyX-_}}'th3ҴGH ̥76agmS, "22$gꂳ د!J bp[C_2[Aav,5o#nY෵h,^x -|mx "JLBjq;.ai7$y4vzA.կ@pEq<ҺHu1V]*-(;U&7,BH|l3.D3TVYG_Mi@VG*vFk8l|Q6Wֆ)U*wfAp?DP)͘ۻ 'MG I/'^FhÅ;(I9!݈K*z)WR5|fjo=_e#h TAlwʏ\j#-vp^ ^W/O8 ߷nxOTc$k.3Dm/28<BkQso@$z|}UZ<(#ýۭT n+|4 O:}?eA V6|,GGVCT[*A`!U 㴎‚:D\`L|q}0ܗUXفsD-Qo; Pr2պENoilb[JS/תl;iؚm YCx."˹&H؆}{7`o`5SRFI99-E9Wf2Z(J dmNl jԙ5r[^y0> 9Lfe8ڬőZt5Xʠ0W3aŽLh((Y юlh6- +M.kH֑{dUHcn_A]WA1S[d&fpB"fÑV"qB@K*F4-5jP7(c!i'L9o 'Oq5rzV13d( $:ƗPf8W1Hm'H&^٪ergb'9ːﱢџ]Pcp#Us6WePqL..W'=8od 6q+S#_fH4uO t%<@G/ȀĵlQhӞ+#I3MԜ^ܴLbNr%iRANPr%_jă03,\,-coRCtҘ[r'?&*bHwَ:7SD8ɜ3HO79&%@ Nz?O~AHnv0VP@rR92=HLUpxl>{ { 4:jٺ>rAi ZdȄU՚f=lI'hV!"څ_ wIP+Ð{N 9݋;)K>85)1THF߾$m|ڰ)hϧrN9,y7)0}ۈǺ٨B9BUSFyi?O%x]N,%~ǔy|A%Ȇg!Y] $h'26>{֛aY0 d4m\js$zn9#!pRFUk7[vlb"(bfp~ {G1(wl/1a ';>!"xɰm*dqBB3Ԟy`@¶!⍾Shߏ?HY(YL hQצ K|K&Xpr3ET濂娿_R\spߤ(w|EDj !V E'WWkqAGގnKv$*TTӪ|S"U ż 7@!­ىFǺVcj;f@6x sDl~{V!b!mէϠ4V$^CGl۠T ukE\3 7 GV ZNT9&ILHw x2xh+w-ݤ%/LGǥ_jOÆ鐪-y<9{?R-af 빼;q0 ςVћeц&䴗;a%`%Ekd 9\LtX݋.)2ckV!+{%lsT=%X;V7m]V#>| >MLTMӅ^mNC?\_FM{PTu2iʘB:MyOA- u [47Wolx (ƅa] jaFҲSf dK 4/)Nclqï錅+[6aMF =Ν[_A4$ 4'uG:cDGsăUϾ!O! l ǭse_ "R*x+ F 10X+u| UT):~36[ n8) yzr<l葰w2sX6}p,[.|w! (`"T=)T`">U.P?jp#=[g'_9y(qQ[Gz"S؉2^+y(BքAn|i QxƖN:~3 2W91M8SABՍj)\ 9][PQ%GPa6UrJ2K)-F9Xw='Ȧ&V9 U_}cѢGNN7]XBMnu5uHço1Wbua+I\naic6InۨY;̈́q䪝ԾOO':!Ӏ㩍_~5!1#K:M_*7}gK\8gɣE.kO#.WKx(l0|ʗpXI猁9TW [DD҇q`?SYD:iԍ| QUCBge=Tv/LKhAQr9<)T\fTq$&l#a%"I^g Z>/P&u~~R_ lK76' O>[zJM}M^Æw ]0gc Q[DKjb;@rJROh ϠQF.x|{Xdz8)`B#,Wwr xїkvX]q]R#fUpYLN ݘ8"ͳ6 U0^8Vp@(*~">bU4l (ۓ:\FqkC/a45OBLBB>W) ఐڄrrY`ue'0DQfw+J)q0Cu5ksl9 -FâZ(wDgH_%_FruF\÷ czZ@28YwfûzA$&.zrf"G{\M9bP-epq CɣV\żeks(vև 'E4xe 3mֳǣroX^Gx,U(#.a"N^.7PWVRM)j᪕&ǪٲL臍A*9+qs?"4ь]s;(tH[/ͣT:i7`.%Q]aQ8Z\f6_Hԯq_7F RJ3 3䶣]^iģ!Zi~r8hj 1#džsxmSCiQ:yd)^5{01E-C~ %Rl[~< P(*NJ֒YNKC<\Bꓫz/A}l~t9@r532paά #R[iK틍@lUM F>٥.z]}=;ڽ.v1\_Zbn l*{vII&'16괼exh<C,Ch◾t?"+.քVOoIWzIҢtP^ )i?D) jZtV\h &Dl>1*\cp68`G5'9쮁kԴd~-P(2!:90@c`9 IAlb3a.5OHSa&TOe>fN5CҠerR"+lef F,VikѕoηXI4~?am@ݟ@oLfZ`\:$=sӱH>Þ Q*,e2ycEuE f3zǐ"_&wߠDܽVEdɲ=\Bv`vS? |dx{ubpӘ3=:㑸ҌF5m"! rƐ6DrBQJ߄]d^)t^Q+*\'AKb9,9rğ]<gXԍn&P_Q/BM$̕\BcJ[8.8nOeX"#/N/*uJ_R r? @I%7.+w,ENK5^XÃx\=/", ^8J!&|.6቉uI`6A^ 9#Đj*6ӽcv֬|bf.IYbK@Ȍ@-C}9Jr\WD~ ybm¬-rų;QS~*M4!B#e7CaUlˏ'Su.bRn<CFen.틽|%̿pڅ*zȼ4eB8WM6,iH]OTӊ>U +X&cš{YxcK50}%wUjP!V59wv]Ru E9`? VS$JFȩZk7̋c;{gmİϲ 'ͷ<:R嵸F?s#j%H7qOrU|xAϯ1S587B=L=J%5h?**KAxdMP6wC@G~g,mO-*a|[3)ߎ^ve p ! ("o#T]^Q ZZF[MgHUf$,L =jNyҀ`r=܇~~F$ToPF}fy\AZYH I4IѮ]A#J *E~6UJI9檀vnuE.w<+@ A. 0@5.7F+=ITdԡm"Zt]k\*xwȼzE|50"H&xQWOQ?L|Y-.P}hu\EtF.4MN,]/ r++0kq\>7޶)ivHrNS&wԷQ!a†l}'<^@v.@8'g]"6|_k٣ײ_NжVf"L@=oϲЋqRhIdY46N.EuzAzs1Ӯ<>d e-vR|o^(gf9$)glK0a~ :E_fZqJ@՞NS*So4\Y٦C?OGhx0U-*{&+߇eNW^rh=D8.EOZE˔V>Ļ}?hXp?vS‡n06#SlS"~Zэ>? !K_F`S,XA晠3*ٿ, w(~O0BCݐKLBx d,KaGc m5{R.Z#z BInfj|OYpѾAEȺ.X ZA Ҋ\O{^0D0mު}cM~SGq 'p\Yyn?fRwe UiȞ9.,o~`_U Cn>V%}wD:G&˖;s֚A8޼&=Le臔>KߪL e9-]P%G錤ƣrd~!Hx;#X&QJuEYcm|PYLҒh:Xth/ҏ0s+nq8|M" 5>)}~_J߲-͈Q(/a_2zK.w<4^禡ڢ [@(a,CdA5Ҭ~8*a`BLo1${6Ăޘ۝RשtԄH=3 Vk[m: <>ȸR4EΝwwP7wP& a+WDP;IG'q9uQd2qJ$/L:Wtzb+SR>zV媜He>Am$V|Dvw FF\@9 54Vc <#X*}yS!s-Օ=q kawhJZz8=_nmz h$odL Ϊ+?X >CgmoOCvi|ch0j&HL .Ҽ& ^u+w<#-%RzݓJoQIt=˝hD#yf-s56Z5$ żiK)%s`GiKh;+̈9YeR9óR5ﴏ 㞽fHdeޅh+g|AցJ\ OtB.s+DP[ƑoVx+ĐaqhkHmxFd:,$Q$n=- o^5-PlW!PZٮG|ˡ&}jPM;YՍu4C-;7hP)!ZIypeB;nfd dV+wnFoMfDks8zB+C.T$va)/f?|)~ T5v.-{p8bVD1"F!pmEGUGL#80K~2?)p(cVLй2,Rqm h SQh:@*AYUI|Cϱb }F. 8:kSUDf Ђ"3>AdTM<%M).s,QLgT7>rW3Tŗ]66`OV8zDdaѱ7:<\ U;(4lHCh˄?t;D?Pf޶ApuTR9畯ٗWP'?UkhPPQ %=X@Fa`Yݵc6n6NKz=`Q3R;q^LvO \Q;lH6꠻wNyx J`ϹB($Je)- 5bJ߲n&7y E(^!,yK`*à)X{qoN2Qпdn{y/KlsTA9Iư0 밴~3՜3A&jnk#>B'4.:ʠl( hUk]፲2/TȲ,F!] 1 ɮSZc~Iy!nPO9R~u!w`(ht]ϡ 1ּNB#]vx6SSO/\{jD|` p 2L@i '49% $6Y؆%I ;~vq%CG$5C8ׄCE^"NёզACWfd~жANG7S4ahޯx.Ҹvuۘobiڎʦ^kC LSբ$ls{""IQ2"|9kR $49i?T*}DPQOiEUrUjޥ1󴅧I[б%W.nV >ҐL.L:A3b%z2hc( @ǘ={g8k=3!Su/W;y[Yxy n7;):-¼-Pth08;,])Փ#GEu{OdC&'@#E3r ԕ8T+\Dp´|Vڅf׸PX3*P~p>E\1 KEю{`weWl(nBޕϭ_ A:NLL&-/: 3a>@YSK2ղE":]Ԥ ^--H0~8Lz.]9bQ36%U[y+W{Ь <_SpCN#DVT\@-8ĺK%QO0, -9la~~Լ޷rWrPӢOG+01Nk}<9iӻ-HHZ תּA< ֣htr9{acwJZkbV]}nGWmǒTӮ>#zA#NWxtpEQYrԍ#IG!QdDsSÿikۈ^] QTQ7 ("otۥ5Fs4{K dqjŏREja:z!6Ђ,XVp+lX"V؛ n*ĸQkR57SJaā|{m:b̪ HP7/%M- #Y d˘F/c=}7LWް¬4Js#U<&G7xܐI2nߌk璢!f/5?sϱrij0M { ;&"D~{0`ٚ&B< PKT*ECL$Aѵ=F8ĀXɄ?]rJ"͌Sz?cP,|(IיoեeHW>~"$ ߴZui51֘,ZjKOe{RB١ÀV Fmg{Uyq%ːQȲT9`OI\f.( p:%E8=JޖK5reyP\.$χa)f񷩍]3ݤ"!f9Q%uK•gX3bEڝx ^{ 3p_ 9`Bq˃(6T殯 %vY.7 ݳ69d),pC',|%P<$jmc0uZ 4@$HVog8}aXyR¿$:-mԘK?7vrچO;uN 3x@Kk'=!a5)?RF3PܴNKmR867Dj<#_ޚh# یN ˗İK) @Q'8~1XJCaFb "IY$(Prď>ÁE,-[ (/rcy8ЌڋгIOA*T=_Fj*JYQHhI8l Oivs M:KjM!c<N/B ӎ}("AT%@`-t&VDU HE+o Vw\QNɅ4,p )DN[b3l`pVFb֛X@ש[~=K96B1 Q5r]JP(m _;Y8KOݴu~hb%60M9㼈:ᣫE} guz43 IXzy]#N3t\QyEJb$p*#m\{Z%\iva=vMb>= E1/F!*dbzh&guuMTlRem~vU  k-Mi.|aif;6n e(^r}& 4Rdg!8J Wx̰i}k*'~ AQ;/&;򫙾Y3hܛy!\j ey./w5!3/4@aF^=g=0ʪ&yLAq9WB$ +b𠛭286LOhbξ,>n8Ke. X`}^YJƪ&6{͘S= kA(E^zNXP ,lp+򷴯3^Ö-:wxqŞː y^!j{aӈ02% %x7Fs:E8BSF- mi*J }F 4]g%~ʚV+m̆o>Tu aaORl9 63$qe(cH!;ݗC{t$nj9%fmMphXjӽh h\ځg{JMἁlL6tl/EGWƩHA6}L>DLܨ9~:6o BgEZŎTwQ F;b5lL0ۊ@IY?x0dnx̰ag'h?aJZt9CO%::9FMҩވ0E3HISǟ!lϵFNB+CoӉSn[ߞ #=jo!oa!~Hd<5>C[˼m|Yfn_뻒H4c=a_ 7^ * gI`! I 2k/PV.eHX(˱%E@(4j +ꭵ <2NC)[Q&?dwU}&~۔C5 |5k<C} `a=ASltimD0?cOv 58^jWn#Cz`Eusg &IX5bh*6y2U" q k+ڢUfQx,HhᴂV0'-IA퓗qb~B<|8'r}MWtzvhF)64б(d))w^GQfujud#e>|⸅<[]Gci")սM1Pm՗5k,EQ>S;J5s.UPuo9 \qcj!PM:TW<8ڥt2u`j۱Dꭓ|pg ҡ[ȕ$<yא]Lj':0*7=%m7:v8WP4LǐAOje s{!яc疚,7|Y[BMl*P>+(SG d\݄'^2Qevn$~hC^%&:s1Q*kX;M0vk}Xy/g+> {t3y b;(yU!2Y͞8~2+;U-)Cb,>3ޜc$<)DF;q"pcٸ%$r;8?slw<2LgNQ-椛tICE,Q\@O|sހ)n~;](xXa"O"2dm=0$aG2F4z7{+ݙѫ~exFxƔ)v ^,لcy ԏ Kfc|Βz߿V$T8pK= H)mWAd[HIDS t ybԯ R9XtC-G#UktwɁT@Icm&T965 DW"dAUe bH]V`_(`ݞT6% } DtRI!@0MQ~D3`XuSˉ Sj/ e}829yq7%>jR$ޱmW\M5}s>bFwۢlk Rt)P^I[r`\<YU0fUP,9}ۆEֈV嚋lJC3Ue6O˸Ե6<=o6& q eբ 瘓hfqQ˪+:/R4mw  &S,Wq40=T?R)+-~v@0+?n}0f Gͬ'%cc-\Iq涍L9FSۢUHP}bRi~א6n#.]<׾ƟͦWExrW8\Gv(FυMO-` KESЩrO4iʊ^nuZW=4PX٣"eo3C3~t70FK9F}MIpJVIzeb0^V'*G%:dy}/` ™$W%2sd3'470Q^?|ȅZPiydkZ=N.t-ր;uYlsLH:'$j y QO蝥[3Q?ZhLˤ~ګDTO5/.%]KHk{94r`jzIݛMG3=E'&0iR9њ?C3 WLDbNeX0$:sH\q#VcYo8leN_"i͙ᵶRzYdW9{ln*2Yu;/p? AQi }aY31CGC'uBt]?qU9IPtΨ}Hצr/A&T`I9 9]̠Y(kp誮OJԔt@ ش#~W9߶N, ^y:z1Qo(O5k^^b{a#;~?)" "),f~AA S<޲4䗳]e|U|}"o4Işk;r)< /fg$ NzU69Bq KA/T,=G$W2H%|X{ kB'2J]qCjI MsU:P\_\<B->6.8U[݀3 w-FѾ.`L̆L6lP bێ ømAL LQW5b(V9wSiW2u7$eILFSzᮂv1,4gm}z]Deh&[d)+hḴ~'HOr)^) 0gR2R_`yn҂0ASٿ4oqo. ބIPqo،s"'#yu1zM֋m_ߋ!s:=:2/&?q7lyn"q@O~41gY$:=i4!COt|<!zDy{ z`>kv>"Mmp 芠i<) o'OuE{~C;԰迷{grȫhId',#:}QU~^z4 W%9ie셫 wJf}E4h::Z[NNźHG9b엑R<@)D|j2rNb!*\n1Gf-'s8WuęP} ˛˹I[5h#(~륻3\~@lf5g"~O;RM{0sfYIq' 撺J` 6t@9T.x\'%J9i~Ă D FkziʯLj.]p '[`d;lqj3^xÔXc6ZU8 =di}tދ.e e<i c3֍,J6u |z{+.zP zLB͊oP›Ͱ0mD5{1vCmMѨpk4ּ!*DkTs'7!S{hGE Xۋ%>mX>g:, Hq {6Z:nmnFKqoMD'Qeҝ.Q=h!{蹻Srȣwv—Ȣ!nƼ> |x,\tz̠iO/Dř;Q*Gbt{J cЂ-A򱞲JOȳͣMCzlA0DE\55O Jw~9!bf7<KtzR?z>MՕ-}xSo׮~(en7#*gD9}{mh tF&C5/eǟ\nϟC$c@b^`F_ڤ6]ڠTo7^`%W Jqnc8<$;n0N=]F&z=h-Fk,vQ1/YK֢!78-ux4NaxK]i–ۉޚl$|n111ziAG`3Y|8IĔTNHv>KQ"O̻¿ҿ]4fU0`.MhvnF%0d޼3l O B_?0m'_STאF[ nX6b{ 艽Y7av6xY{V;  &Tž0n_!ò (i`3| ;~ Wp4- yXj?zs[| kĤSwrCߵ& =Ph/+Լ]~J,~0.?h$nքN49+ݢ7J-l"γ@2Do²vWD D*BTU Pͷoy! (KJ@Xtmt\1g24%;_@ lۑdpޮxxxoM|u80ɿLLZ :w37K0#,N7Ar.~ 23NP a˾?*=>~X8[Lw/~wx&fTŃkC&~T:nN Tl@rP7hN:<"@iaƞ!2l PeL ͉vz_nZE` GZNNvSw k JO،\/sw*͗k"._1Nv; Z 6n#4v-q_+|3T뼄'p?}P8f ½yÅ]ƶy&V- k@o|v'b, TҩZ,h^;VM[Gd7N+c! S`<Ӥ:_tJo/,姃 9{bSa>eUMU,Sѕw0kxX`}D8-~~\ eTt(7L%6“l2qҝ?)7NHĠIi< 5ˑaaQ{S'ߑs@Px4}Vj$!@휠oxȽn Aίax/Dz?jNSOR ;̻ p/*%&&?vfdO̓?rk֫_^ʊPhvSzj$VZV8bUU R}^YJH}y˿ޱ2RDC<`P ʺup< -TLi1Eeِ lXa\3/5Q."  JWyv`^$޼hMrJV,_7N^)y2$]Qo& ۖ-Pݰ\좳dZ-~  kf qO@Z;G ÍqRh18Gx͞>p)$l$꬟#N~Ʈ_LݤI~(ڼ!n>!Y _xf5$^؊ Cd|5Vf`/>O3 +ѻ s\K$`"GhO4zE1u9ey*ִ̲=1QӾU tJq:dOhL mepHCjO]"ntG y7 ?'.+U[|MۄNaPMb*/$5Gi3UC(j*x-3 R/hd_!~lG )q!ޜ }ڃ?(^e=!6l/]܄z|UQM('[OA $ exX9yA̩ PC}_[O6 ]ЂLekR-KKsP4 = >Z؆'kGNK":EH:A!M.$ӿ@kղC|v pi"Foahu1Zԁrϲ6+,Wu.>KIvsvJ40.F\dU/V6 s̎iy;6> m򯈅G2M?a1hMZj8E%,Sl|2,,M',8_d,3Wm #jR& Ѕ>kUO|IxԜ5f=Rԕkex>ԱHǑZӊZ8ӊfunΪx͓1La9qq 5ty~V xB(ajWqZ}U"0qIh o O5 K{pQ%7Bwbk95vʄĘ(׻qFibɑM+yqj3yS$!S-u28g@Ӂh:tъCTdYc.Ls=U6Z r-t6a>InIJ4JD0ؒɦWp|862Vߢ;Sȕj'".\2<]6wLd:W)uf.kQ6zl'ucj(62fGd-U>si?l4!ǚFhUҰY"6)3qIu.;IqsK&Ne}93{|cd #Dvc5NmhmJyNTiY=Vn+=Pqd)! {nuf&eBx㻌]T϶c ?fNgus !H'Vyk,uGZ,-]¤l=]ΐ'@\_]}\(S*Eߊ/@R9{CvOpK!E*E67MQE~ HX; ]h^ Ms_7[ w`M1 tiCtZ&Gv$WwL"Icw Ђ(8bT*B‌\dEF>2ć'AztE~$<,ySS(d0rWO}1oD*7d~sK'bKx\g}~wq$L؞Ùqhqŗ 9JS5/6نO8|Ύlũ~ MP="žo7{2̐X!Tˡ i[՟tsx' wp#ՃM >nybǎ4l)Kx mKjӣzt@~(l>LseU7 PJGɔ5a7-X)˛~/j?s^U~ݤ ɞNSCҖ%gĺ !يGs~߼yf>ͥ aNhQ%=yTHA6b]*x&q,KkYa؊6'dTì  5w<+0=NjZPKޢ{/ܰP\tz ȜȞIgH \Q^lYYy P}p># ` l-  r7P#s3"6ҊϢv~mTG7.-q2$M<)7iTeNc FD䐕U!2pf7ODEjeI9'c6'S}[Lo['(- , x6>/%apgwC> ;owM?'{{Yu͏^OFJ@h)4do=7 y!ώ=H `̂¨:z;Mf֊DI PuN(Q3l2"71G n&vO`rp*lHLiG\C kbZĖ2>J%↽3aؗNiSzM@k*x.PBk)obE`1&Udz7Mzm U2Y.dXx)TO*-)Y R[T *W6>yّ$̻ǟCU5<4Kd| тӀ2`έt_Dkh%=eρ^EsOSlX"ؗ%+,쭴޽Wٙ&3.(pVHrUL܃7V34`3Y`ǩRI@#&W$mR}E.< -]=J[ۉea+j{;'yokW_ ,C5u-tWux%h}5tUڡ Iɍ8N}t_"t7NY98EʮnVˎ%#eGZ$M %/kK_@tE&VYMi~d;xՖ+g|־G@˘9bP٘ȵQWrOt }CFz(Q˘̴9T$&N g D2 4AB(_ NTgFRݿSn A,i=Cߐ^M]:$'µս9 Mg o۰?$OG &;9?ISpPeTi0I͌.v23,^3ɃKω "B_>xJ1sk^T(l~|ր:݌2EvF4jJl/ZA<ʐ,/CÞo p@DTQ$1/c3d! k$Ś tJ'9$I~si,q/ih =arIAIne][8D{)RIe7UBO <\M>rA }St!fEk/̈́W#m$=ӵ% yr;<i Ȋ9w-O@r,iY~꺰lVLYw.Sq!LI,ԻKab 6BHp.Ya7&izs)0_qGW.Tv&t2,fov&ye79Bx0IᴑXRN'c4ry_!0eY{6pXp: v3)Ӛ-[d72%hĚ"=.1 xJRq3{8U@P3a^:,[5`"9{nr~R$!s$>C焁'+n,$x=_%G;{I=Lbp1!XyTwtH?:zGuSSÛ7Ԁ;3ak_(+>T(BGxFQsTT5O> .։55c"NY)bFt pn736Sb<êgPw,]0Lb{5UcP8rM6h%݀Q|  H[ nׁePVU|p6XNx] Pįgz.)rt/똄D:D Ml ;4YZu\VI!^vO$EйWgGH8n\)4!_"cVfk=ֳ1Dvou*HYɷj\H"Y=8.\0E@jyA-g: d*jGl^$Z,w0u" 鵉f;R11xRTlG]J]fI/`q@)~){7lcUG\ۈhyh ~(Q9Be?TVё Lok,-pd„sl Yé)`axk9Q^xmu7AꬆӺ^fNJӱA|R*+z7An'F ?mG*s=k8?o3Hc[ѱCJIFg?-qzCHmzO&&G*NX4Zv@&tR\]pȐ([GC԰f7"'-SK=A:*1[HC)@mWdo> HR'Wf;"`A>>B,mQȧZi4kwm7ltP4&63~&'hP>i3t|^ƋwF ǟouKa%AE[wSrPߦZL꿓2,p/o]S ,8D^$Cj_-+.~w1#=!~ddx]Kc!:;3'm$ljL|T$&C0 rl)bEYiE40($ѐ]9Ab^R$5 .欄EN-a6J֘ ]ΆX+j!eeR0  h}A XpMMZ/_e5&U+ B aTlSѴcNʄ:G:\f ;OfXiR dգ,jL㣖Rs9ZΨ'o }mlDy%N{X)&N_i[͎;jM?žK}sVH4Y7͎Ί13J,UG ҷ8+L7Ͷ +2YOi>t00J`|r3Q{wD%/ˣcaj@&\uϦ'|9$Z19ˎ#  ҲDXy,UMk&'t*ى{NB"5Ҫ Kϰ8zvּ>6:SUe7pSxL#Ey&gpϟɨ@Yy3&ppq\ ʘԛIx@E'r.4/3G+슕ZJeȤkk .OOlת c hqȓsncfj 3{p|ѕ[lC Bw v©X++XR9;{ŽP&,T):L9%7vBYgAЭ@oP&,:Ewz:M|}5)_2wojbhFR KgM_D) m@dd mϤ V{_+itX\ֳgmw0Hui,{̄iˆP$y70$F``M7֘|dEt4#{.hj/&9|72~r DY5Үɀz{}QZi#$$u{FC5hHӨt zDvTc~{>I 1lB%1 'v'_$]͠t{7m䗿v`6 ơC^`fix@k2V@, L(^=x=sWJd2$sW&WV1pB"DXZhHZԶPH kaԾB!{HbNlk2A6"_S0m(칓DJe!7*-vwz v\j۹F6K9^L"6$zzEx'*4 ey.BC#mdM0 ƚB~ ޥA OYE)Pd<'%ƻ23{B nq|: qMZ<K@WS˝)b&/;-pS77==Q @LO7eQ_nvk[u$2'뢒{zM%]z k fAnW8 81v,pVW概r 4> Uڱ|гPʅ{Æ1 ;"frI@Je.Z@}{`D%~JPV}(4m3+{ח8< .^,&s`gXTP^ZG!qs+X'ZEg V #d^nItE!tBRXw8۩4Yi10Yxƙ^XWm U%qrZҍ)ݺT=f򦅇$-I*.+i(!̝엨԰;9la*̰W]Sע_S¡ [i- f-i㛎=4\͗ >ychڹDqpԿ,r>YW}XL% +22KXc_nAܡ.wC& CyR .b2IїBpW'4og8D{M{~e"y}ecyY)F 4O(9NvV{5@\wI^@銬]Ǐ-^TvE= }iW90Қ89! 3P6?fFce- :vӝRmenZCY从Ӡf2p9[>M9M3" åǂWEũABXOg.?O0S⿿ƫ]Ԉ]#y;f&Vn,C-XT?Pcm5 rJ2w}IE'^80䚨QzT-#"Ǐa7>vŵPPr~Mkuq//߷"a{Xu  f癚m,%2 Ea8N-Ks.K,D.MJXJ{)BMʄq OK, F[g#rlcFsqx> `TR5?䩄'c{Z~v,FIp$1REuKv$ >ys:*3_D_"EaV``#=B(59Ӈ Nל²R.\(q+|T6W P!uِM=쪗]kZ7qӉ~=-\>z['j^W^ J=$MjCat|jWk%|U((4yr85FZF+vllx0q!cry ktGCI?Pjy D3bu SlD*{lggeqN! T0H-!Cf%4.XE GioY+'z%:ȭR<Ĺ7uA5~qG GcC#~SuvJpuo7Bލ Ck $)7q%hN&lϟ:S>@\D׾7wL+RYξ7@&_UAS `A!rR5 \>-0MlB={/cE1J6 k&>mD2*!xrrat&j N]*Pb\LAn3qP9ݰGB֟eu~NFfv4-i7JZ=s H)N?Ju ѣuȨccTXO*n_T+;/+R[`!eSzo #\M $LVV&LX5oJ AKa3M[YM^}E+- {[%yf] mq۱w6Ï]JY&GԱ0T_d(؆BpL "ע>9^t {9Q(I< q>'t p6ե b ɢz 98(覀>ڇ[ :ߤSd$;!4$[ج|$6}HYUHź.މD>}і)[{Ya)>,T?[LjpR[Tܙ) ] q|x_եYBރ&/va^>@g.85U{?53 v_|Vۏ84@*!-$YI&f0T z~m<|{jc8 =1_;)j-@kLw{ 5 | wg+*/U{?N@C'qc^Sxl Y+K#ոߙ>~ѪoW;R~cL 0hNIc J~6`t\kut)J eI`+euNe^UnIr >n>z\_ :81m2 i{BzyLdط^_.;16&;"qCFzWұla$ \ws3Xit"T7‚zI4a /U_OP%z;fzM7J/dx? h}1+B/z[p8 SPlau{Gm\mƁ׉]u^!<39L9:U9ܩE {|$J2NsNїH{b/ #I~} 7ń6w7L\)h,W37X bfNttECMbpL2:exD )l`歠v֍US В:]~>5kv8ټVϠЄOM7YwgnK OCI&r:RJkvWH]-rAltu-,"VbN.c^AH:= j#"?CYT s/Q .R`o!_ ig'^mHz&r%IZ-I@ DGn(W 0 EUMznc5$=fTFw&qEiI ^TW=Kٵ [f6 r7d>qdQ>v]ccZa N$`эQaYPe,ⅺB(Ci'ecBv 5V ӪV2In[ܝg-Aj.?V+ef6>fрln_yFL5 R~0":" !jvIiBGz4&1Sn A$0YsۓWAb__:ng>_,9G5#Pjlpf'i"Gn_QڈdЁ,V԰t&t*?E@hGj!v.d̚J??kYUòKf&jCL'Iel<FY9mG_ۅگWPKӎBEʘ S4uW\~oX>2$Oe$)TT}~xreQRފ`ͬE-.E 3V("pRR*}tulIji#%3Xsērw YdșA I!E)L'aVw+ݣR>SdKn/A&z?0}ן! 7#&o7=U aTjĹKk舚T=+2-γ?4孨e^& Z.f#޳NN/zaum:c'/JV+A[vqwm7#m"iR:g|c h̤}ƾuh *A'VK胢hN`ȹ( et&*R썬G6t@S#[\}39"rrKR(q݅3].OHj3?8aYBE|cx6t7',߃o62o%Ze3"{)>;۳G"hɠTc`u-}ʡ;h&T?pYCm~o)5yQ@Nuh} P-bK㖨!["ڕ(ղ[ҴZ q LJ(y's3J[#nk OZ1Z[ U(#l8&-# ֐?#no XNk|̒Jf5SHW.i8~FH;guN,.68x_Q4X{yj2FKsMYe@j~'K&QC&-3V:Yp2AaIG9$Fή]͕JTABh=ȅv7_xeq"`T?=ѭ5sEat`d>NicQ+&V}݇H̽;2Uk>XYclùjѱX9?bvc>lg>'=Y}x\ga>J , b[ Js$yTb#hM@8i~ JBvr>nqnOIp&k8Ҁ90!L}_h+4%_i?\ ŶX=h3PB}mnI6_b7UvAOx-ypp/fza>(2y)O RpP[_[92Ԭ-#ߴ^ U. mq%Wg|* _9Z=C\vfp['vG+Ci 7YS}ǚ\_f1.Q~-gkR<B2ZѢbƘ0""|霟RƚH/˦b58<3*X8F*\Ȧ>+jz\[zf7mo_po@?A qis K9/ [/y߉1^bTBBԬbiB6ȺAovMj*sjR͇nZ6e'-1NN>g @GT3{ yntI;5H-j2COoͺū'#G}фCJTP O>PFZ><2u~:jaUϠ(b}sp g\kDgbeT́MG%m!EH|uilCVjf&q$:t- )D !/94åK eaXޗ=Abσu&)`GU"GӓwՏTIpRu[ȾiK!8%(N[Ҏ !rUw1BWDTn>GƄtB Ho;Ul.6!}FJmп{8bߧ?I۪VE}3sR_.%?@.uz:VMoS !/n?H9:Ԇ +=b%}hZ3cu$V/&߆Ζ뎪j߇*';̈21JIX;]έDfN܌svA[f7Cc4ʲs'Γ~;icf0ȢFIY Б8Θ64A|D>gEz47J.#1\&Ζ{(R%:2qùP"p9a?8\=@Ƙ2=ت9kL8nچb(/9!<Maiq +0jl/h.SFWARO`W|ՅK2S) : O ٩;,Ǧ]J^2n1{^% |e~`AM36._fÛh^b**C2ԑkEE=yCwixO«m ^W\'T>aINn*pyԃW 30x/7#5BǛhkgx{EA'3 { `=`tv#9jFq_FTscȕ ;\AI?_S녧ytLEIj mtE5 k-bK Ba28f,[)&j CN6`@kK;ZAΆQ9Nw9lJZ{] a!}ȣ+s==7x.<8p .fׇ'| dDغج+7&$ gjl5`r%[u7ǰJ ZVqBt$,{h+{r 4=1\2W]gTda & ?P>bzUҁ"h ahX'mԐA"L4;p˗A3j^'Ij$ ү/@4v¦T[T:HV:)q*aCw&8wqqa~Y򎞀{%EI`JW'wkC-Јt[z`GO|}59Vy<;RP ,kymIQ=W di5@5`+@ qw2m#@V?Gt:J ӞIv*n9* "Y:~&MQ%qۡR)0Q q:?X"(d ~\}) E gqDGݧm"XA:]*ͺ; r)ot\~qOԠ"2JI<^3Eʝc$Wl2vKzZ9\[1ХwolA+i]xciR Jy1R4-;[qGSBTDt#`rUtIzxhGnTw]׍Wth:\ZˠaJa: I^-H|9OkL;wWztU;}%gC6]b2zo*j%Tҝ蜷Fp]v5'5)RJH.X^mjsEds$fCX55VY6Fʢ5 (åm9_*u7B5P Β-#`LD)Gjtxi@+6v''#:d B)WvY[K792|ŏL=c;\P7F@3Ni ME)B[]qAwuQxE4֥qn&̾$W[&$B!t*?;GgC}tl +ߞK?Io&DJ _Sl5Ov€eTkT"$, Nhg.&3071 @ajW4ǻ3]zfdu~(T'Dh`31?ǃb~o(y:,=T j̲U|o RF#>SBxY!ش00Y ކ[Pq}\-R<ߕGW6^]H|wTO: z8D"sC\MDǠNxRbc?HKpYŮ.4sYce|Ɏ}ktw^fhO8ly\$SZ&d!>'RE= PЦ*̚1K_[Ύ$!#ecqhi,6 xo>Pȃ-;~^’#$3uʑ :t6Q];DXU -' m~ ؀e9{aգ+Ԧj\;}VNϘ4mI&'Ou~x%7qU5$Fj9KŠ_;$4ud">UW,L[$bA8 UIW V [f ͜\~]IN< f=c%ҖjΟ,7 #%dr4Vc`t:lv+iAp߹M&Ike3 %oC$44# "]dA;3Յm19@O4eDqʼnnFnKޱ,YpѶ\\MH[8/ե vI :}w[yek昛n}D[x JԮ56# oigS{+F1Y2ӗP6E_<Ҫr!bW.ⳞJ(׺ՙF̊qkKU0Vz RfV"S:(U\iӝ}-T bWt gd5 ;wVIb"eU_xFu݆ )B>kS_>~[NRJJJ0efӢ;`eh'[ͺ~zQ|ڱvegS洠sdF*Teg}6鯳NjZg=*n@i֥K2[ >H!\9 0ʲMB_A|2]*cxo5a8#0Ϗ)mfХƛE(D1::? 'aXW%ZϴXqv;6Q '+ Ȃ3=#ހc ?<0Zdtee(2OV=̤Ɉ:(O KJۃȽ~hWtK8&2ZOKd:fO@?IoޓA؝lMiHBAcޞѧY8=A~.^\A»9д 8T?YG6]@踘N#Pk1tR;{5<;#i첬ahB|7z;(e]7pP{&Lm>(mM=c.^4ۃk&q8NOAƤO!Zd)㶗e($o@/>mC` 8\wEBG\L;Mӥb c\MAMu[kFlf`S* :q`UƢ_j=\tW!}oFaM^eVDJRRmAae墫J}M|ޒ9w'x 8PЈ(rYѽF@A?9‚^7FFF q—=׼ow`>&~A,ʃQ7,N%ܣaFQ"1Y}n#W#e8M-T]2#$v˥QGĂ^ek+W'@`eA[H=F Hޝ=R8St9фQ %fkػLM. 9k+l'ӚO\#&±$J#8n]9<)at1:F%* ʀSUa{mx1LӬtLGh'ϥeWvƭ\q:b"Zl"͵rx "Àoo9s'H'h?˜" b|Vm1X̞)0ixEc֢">G& k2(ShM5bvm,X? )2 {<6JQU:5Iՙi)6KIt/Zc{ұ'G )W2GܔHχ= 'Mo]Kcg`b6W_~t+7TQqضˆ8P 条]ATkޝ]T/U}Mnc=\xLEOEU]?^qWe@BPȻ5c-8dBU`Cb,# Ev6~Bpr<MPƴ}Iׂؾ)2$:頙?loͻJۦʙPDOhsX@OeP š>\϶ `u1 [H|w\=B8MOHļ3cuKg|VzY!b'LB>~l:N;=&i<XӍ #S `+asKD SDix$,fZH2C2Y UF1qw\=dQdĈݫ&0gcAʳ>y> V@s6iZ!WNpI{Iw "l.ǖu*i qL#jd!mUCdsAlh~VB1mBEZXoրCS ;*u)lB*9xqW8uf$BFi;<?t fd^4ߙ֝~hZ I.#ó xfR[vt(L␶؝dC[dȂoI8eJ)֤ V >2X'}AY PUq4%teƱ49n#.sd(]Q4P"A|  2}<q.ɷZL2_>oCž! RM  Bv!w4BJߤցu Ā٥Ib:gG[}r[@ت#m|s'Wq<``/xzukȄ1BVT$F)aJTe: пvju&0(SP`@LÁ5Oc@|Ci0 p8_)u%n%E{2 Ѩ19ڟզkw~KKV 8tb>U׵aq nS4o_["Ԓ+e$||h2ߒaﴹ6f\^,qϜRDm{ZxG7k0mj#6T Q"N-#,wɘJ%/u ?UZΚACdf45&8 ^6fD8?SG &Uju/ `!Bz"Ё2n,ã)^9yȦ0W1GBg=ѝwȽ5*߫~ABɓ$k͡~4Bm(O '2E+P*؃/7%G.Q~؏m ލztyί/-iY(W}` c]eVBhu@Z#CJ2=3$w.T#!Rru^w@ZXKoMP81]yXCs~gdc %b^jX$ ,;By, /M"rtꚣ]G5"gnyB-Cߤ\`BT** r 5) /Q~k/8B,FQ-r&ȬXկC,:0rQ`qF .6nP^EW`)Y'ӁJi AWa I6ۏhkkrJM8zwj沄/O ,Εu|mݪMhd$]@& Xd~EB UËOKwEd*Q>;Y5KxӎYI6JXQFMz ' O*ɵNf(,!)lH4D^Nԗ'؞DV`tBusϕC==: x/>\$u"C\B`Y@t3=Km,nj}I x ܳB]'(mi Y9VP~" >f2QMY Sk37*Q)NRNIxi8Kҿz׀cS+.70v47 7:t3'{c4[}$);IO%T-\gdŜ0ﱛW$ao( yT3ו"+X.[N|ˇcI P\!DI"òO8-:!\~'h5:h_Hy*jDm, >ZPG9Xڴ5֪+~w/!pEt36(oxvesqʥ sIKVYClT ] q3I4X'jaGɠMETDz*›`PP7q=i܉C.+oYƭ@3L!G < d0K3VQVa'q +cuH= fz[hˊ 'F;$ g4E4 5j RexPr<{X9>,ꗀa|B.κ X#Y)K , l_tAYnRQXeإNf懋S:3XS{&h|?V!mvG4Ř%/'(ioaGX}:f~Gtɐ%{KA ɂT1i_*c[~|a<S܊Sļ&y*o=t4YH7|#')8T'HzԞr<=h]#ⶪvNU6A?ETp?vuKrK>6=fCttd;$3\QԛUۏVidio/%s8(.%Q vte8d_DFY>8Yj*7I.6zyAν54biB]4 ˶u$e茴geF 7sj60 !@ 6Y|slŀD_ yd߿͇~..OUH2OJaBYsmcixT'N.{$KDӇ>1 salZ_EVj xwh܅' m ;] - [yODi #8o-)TƜ6^Zv4IpiS-r bV+;hz. p1aaڞ-)+H5-Ar;V@F_>1 _X$+/[~n}@a 4l!11;=[gʜ+Ita֤4$@-ELPr[`3.!zs~TxSzxȷkZTsP5=E#kF( x\7*Ye*TA8󔞲l!LM]1G,GaJreO(*E8ڒ:3? "Xc6/68!ryC-}|@gUYwO)!YS$嵖\&ݴ3q0p„XB,OYN~d΀Ur{o]B~m?NI/ll9ќ8-?&hcj-K8rWN%;7#N▋>|mu4\f*c/lX 0]&*Um[GYO$fU]bd"z^6಻ ;A7r7M % BTdc=-T˃e3xڊfcr to_l6?)^$&tՐFՏ$e[Dp t39F41L pp;BA"|v *lZFFF5R:k>< m4p kz~O]~>!9w6}$S0DSw\G_4=f8ƊP]]jeq?LB LOXWIz&ڌ vjW+da%\ֈ>L3XN IcNVrOx3ԍ}/r_hl3g{EJ9/bG~lLs :ڲ`v"1RPa'1B}Dl{ xAf{$Q\NIt2ҹ.>=yu7' .͛sĞ+ GZ%t4:]%Kut#RifA<=lMW/<'7BMJfC?yiQ _,x-aڵ\C#mBr "f(-m =آȉ l NX4s eI#uv{辀:q7ܸtkh^Ooitf#owK͸d1MYJHEcO-J*(\SƯi%f]9T\ړ fhT=>tx7~"/<;q">%4[AM< %ړ94ØH*qD:yd}k\~=+afn֫_Y&NXaKzJhb\xN$ETVts\eĽ(Oy~9Oj@"Qؼ%lC1B{n>oGc<#3L0kvtp/QZU탍v3Enۂ'.LbP]l}6) (.ӟrgT;dWB-PLJ y?q[:lr U@,(-'7Y6-v:u DC+9h!&`dVM!u*58ǔz>OdʀOҕ(&no ɟ .GJW%jS0=ǕF|N[o![@dkdE`wA90"v}0!U9GSJ$m8 tlgqx #Ӫ" n`M2zf;]aqsa_8o_oy#`꠆z@p0$,#o EAQ+bV br&ڐ=@\(=81Y5saStপ\|Ԑ܊I&DPm  eΒ{RR`3ZeEa=䎞sY IiE˖%m6W'5DDxpiRyW,qg_„8+0Ԣ+D28nϔ* 3,𝶞V!wGEV:ڕ q|X4%bk-.%4v>tFC$7. %]`.o2ݔàhEDp} @f f0b!ӿP}az@ ((VފCB dKCT6kLn %燱П͝R5FYyq^W=N[(~t֞8*渲H'PR[3XX}"4^68=dS>+ܬ®7Mz1.4Y2fҶ3I1;F cX?Y)-`E9D%!h~|oyjnmFBMY:ͥn\k?fx G՝;H*RTUp8nmIMjRcΔone-!t/6^h9,lp>i)3#TI}򇶈? h`{83pTǦL?xcsFME|;@@'Gz2/ e^L ΰ"1z!{J#EW7B3W0OZO@di  $ oW2zpE \ 4 8+V)'ԍ4p_.#5Aۂ8A4\5!z"'O=MV1dH蕼D'W4 >J&v>55k SJY]Cr-QL<~!wM_G/:OhpA { { Ű%PMGsEDTkZE2B }M%rBW: cP_E'5Ey3ںȰ몤Z0ʍJV_nx$: 6LdG񇭿&PxNPU%|k6@-* o'PHØC]q5;俛M(72bEIdɇk19 gu"V\Q n+!b"W;M,[奿9ǟbi%76^da"2hȳ!Z3Ϭ=M96P ǯ`mߘؕo4 njqBهLzY{*(vT!M"+5XCS=mPᏩc≇@ D9IP0lɒU"+%큺Hؖ=^w2WƔ*'}d]'&8u0H$~qcʖ8(pٛ`\]oPK" @k5,µ$0&Ċ/5_wLnSf}@lMhb#aYGC *zK3$h3h 1ԏL1֕Z 6o:o)W.QѮn 8_ԕFUIR魲AK2tN醎_9F1O MOJ꼓{΀}@6jG! ˔?6>Xj Xu8AXX&:1^{~u]6PW"*(FX[&8>@Cԓ>{MDk(f$'$h6y!zVuU  ,&:gOdB4'*ԑEvTsMy087*@fP\E,yhMԼwF}?2{ QQH5-w*0zs*4|} tk&%O9!aSwӋA(bI`T^`-[_@0Tli9MYxPm*b.A oقE~/l;G)}  Yvp; sD ;7"XyK%J-SKցvZ%2(B5\`h4]-RxxK_|AueRLxpRSP/T>PDWQ]UR\EKA4̢9%s|mKR~3s0r f=e֣2čguԑdfp5;zz%wDR ÌͥBO>$~1fW?/(#lhKw&2sWz ^VGbzM@3q1=Ezg%;AN\PHMM{#xmn*ď{C%㧴 ;6s`v;$a"fHl;,0gDju|-0 9KJs6)Z,D*M[xz$ƴbY7'>{4` hMplS^(mfh ty.][sgfr8AYߥ4{ s;#~+#~704Y=x)Zf(/j,ڶol Oh 0$9b}?T\ fi`Rf&LPwAo;:i)ȸPɊܬbjc ыZ*c>:{gέN$5r? [_4f-fW6~W*n;Ud1!MVdܶ A˱&ma#E2H`6;UY)VsR$?MюW_@-b}7bRl@Bʗ %d*fJauGphhcp 2Grm?@*.#(h֖<`s\#dCgqA_xMЎ!UA(ō; 3fy:EnBxT$H jok>3'`UN6Ρy*fm0㧞N+!8t=zM!z`Y~=gH'ю`w.ⴚa}rDM0E?kMbqT'檖SˉG˜!ȥ;6^TvN[ֻeY҈KJ N˵d* dHD_D,(DM^L7LuSa#)MSl!j7)aؔ&3C7^n`DAw^_ w%.b;UR[ajf+٧XZ,؁4[Tٍ֖J4+)\XdIơF|x4`=O+ \# [ NK\5+E;?'7Q%9= m5q [E&ox+Cϐ5V{!o2ł%'w5ԭ ړ IY> "PU gM ~|2\n nVȩ'h6Kfhp;-'{XzA~ g@؅G[#5"yLFtYJץNo2 CZ7<6ux:%i0Uw}3ڿV/M[ݭRj;œ:'-ʎ҅OJs/)=,7>迟 :(#$!ܠQXzFz{yKX%Y+c3C'?)F|.բ.fw҅i@~G\7p.h󒊭uPmz㫢*tPq6K䤼Mn)kY* r倾y83@-p ݙ/旂!}[f' ς~+Oou~m ;i;lmC)im[ ;z׹LI'"o-5Y(jAJ8w=#};nEWЄv`[)k?sPW>jx#6 ųb6"i^_uV:;pϹU'uj"uW 'I0tWzV4,gV0SWE~]?΃\!Q$EhPF')%Gׇ'Oj<;u h>Ò&\sSM`2;,Y0G9Cډ&]>SjTd¢3tn␸[jcJ!e1ƛsPDDMK4\'nhbkq ”0U}]eY~ΦgmQHn\ɞ8%/L][T.d|B"v !+ ]hk!5iyԴmLiFn3&|miapniײ(M'L# '>(߾EOj_hNΩmE&@N^8ೈʛ 2D1{,fzl>݁[m)d9T{C [|0Pƙ\džxUUh(@8}aCu']r};WPfT7 >H0_ 4|l>de<* hHUC΂ܴ 6 FU[u>' TnmL4tjL!p !>cD&wc؞6{֬Aխ!6(ט3OL}rx;Y4`TX͍C4#8L>fuqQ",, Q#%S@kY 0~/'^̷V&pnxۼ3CgS~7DYbu]`g:Ge7mP4%t=@DQ486TXg4:hIv>{Ww3Ce.jƭCF%tvzi=3iF~Kr 6Jpb$ *k$QLtu"~d7ʷ5kι"l'\ϲz,P+>Go0qjQ.UAa XR8S2mVdxݍ F&gf]͒%+PFw*N&Qxma/})۹(P#\#m]J0Nz +6Y{! n`,$b%M3kȰ1` R\9 TVG&) 37 O&v(=of=y%u/ Z=$ڕ%-$٪QXZ֎@Jb|S\ HϧT"h]z%iXv\if :@.)(U^a;Q?֤9 'PwAy<"B_]e ݖ544 p(CyQťN>S46Zdip>?a^]9č҇Ab0-aJgT O({8l45)k[5w CO5rѸb3ms S'Ⱥe"MuڡT'6pL^&"aJtR&$aD*s-Sau=_+ʥDb$Dm}.#&}U&Gesn>LJo%D-o떮;2E(vQ$H]( @im (PEY$<9S} < ^$+cn"!N$hR6db{JڗS= Yӑ_X0:<]K~Ca<;٣fPuᲪ}Rob%}Suԫ0+;3\4#\t}H"FNl_$[?GWK+G -6W)i31Yd_c\ȝS-][HmWo[ڻ} 3 $Mˮ;\Yf.JMO/@ Iz zWR,ˇ+dMq\k%Vrb y<`y(]m.f1/ul/9voNwiqIv,Ɖz'N:̤;;C&K+N2Y h"߾Z)XB$M'+r%*V5*>YX4dBb ?޿ SK^ig) N` یe's#7.Ks+ סg2s9~\*>օn>W$_ }_ X9zأ+;|GkMءv ۾ʟb ?r=b CfXfuXbpe/:|ƐŶyp,CQI)оw7(A*ýR*s.5[m#)qDoƠ3vR,RI i*"U᫄'1P4&>擮%<&\j/CdVG4:E3gsV=-bVڅYc[.V#wMyف>\DcY8SqEB!l|X 3I`'g+I"H /eWqbs d&mFPPmݦ˱xqbl(9:SZ.{Td((l"Z$Z`(,MQ$mLva!5֐}]i9?4ف*Z$d` ,T%@\i xGp&*@zy_{/>\&kr )Jk goRa Rdp_Z%A,' I R閽9 7c/H e)]=Se^͚ 5 "sEzgX qjղ% fC[CVAԄlxbib,WtX'WAkc=聻n !!~F4Ex+G꒵ߙa`$KУ(a |su׮U ۫X֡|:t+.Wpl1V_R`˖O߰*yiWVO08jhazT//H^ CbERťƗz!*֥fZ+Lm0 hY`5eb"gM4ߒXWK1HqZ7}2:\Ud ^rvoE pͲgdG1S>SK})JCΧSU] .wZ&̟Ž2!QL$ qHW/[F7Q{36B _vQP3h`H3tQ3 \榵b5֎5{;I5:&܊S/uոk.hЀ ^L_Ȣ| sQO, d0[ۺܒMɋaY R&rׄ(Z0c$\ܔ3sqѷ2f(85ڨX8%FA}wW*%]S*<@0 Ɨf}tܟs賭O_NbO1'n*RlNe\AY]4MeF c/z>ާcbbyk}3x6H]ݚ+v+31J_~xe-X5[hNoL9A$lzGiqib3kTλY30*.dK*›+$XzoR_z<*u*5g}6|ޭCz0D9k1>3?vm=F/M(PW! TfɾM4+.GP86K9c,O!aέR6ђg/k2 k0VZBk]@w O*ƄP)cgb@T9P"S&ȅ ˓HQ(8c]N#2"ƣU)ߘY}+I}mn[¢ɈOb C}g&@G.py)r>j֜0"U7n_TXfFFD;qk-,AcJ iUbpğav` *o)dӧA3-V0\Db ;?f} lVL"9ghGĬ ;E)ECUr < z.uOkYH> ʷ*^{M s<.7ZTU&0m؃>>f7(=pʸ<" wkFNNѐZА"xo#^ތ[Ad0rq/b'Mj{);" t{hoc.'O%r)NѴsX~hHh)qI;\̨d&xD>Ŋ}  rҘP*]\1Ls7YA|rx+ǫ]S8@R! 7̊` @Dh4QkZ+*Y 0JsF14_iyA"=L]NN3zo TV1S TArE5\_=VكBE&H ۘai}^=^E f!>%f4ݺ.ABǶ 3'򝁚%KhrVfvG.-_1S{z(mK\֕q.UPC@,)ɳz$F,&*ri8 uL$'⑎;ڨ j:NWFY1Uu: t~E$[xKlOɝQxAۜRC{BH0$(*1^3ma3!O3dxi}\,?,=o,64҆ H^BlCriyИ/Y?xАě:4uF)wfNn{kM߅<"}4,R+5SxR*AX6 [lc*-LCmDC!,xEt ī L,E]eH#'qqNhFnJ7,Ļ*@#<Ӻ!:/`f>( ZlytJ0vZ<-;8I`* 思 f ܁"AFOLqor+1r :.Pʪ n'MNkW,;AB4|P%[.}s}-\Wdw_ Om$A{ 8,3S^<3W62_Jx i߫ڜv!RԃG=_V>Eqz`7X r q&ZZ n9OY+3R?[@!?ZkB G:xoo/MFG!Mh `Z3g:g]5H#Tc􃘖l8N5Ie.ܺ.8}"ir٘@" D `̉7sW;+{[j\>[ 0Ӟ*_'j"N68Q3b"O"]%]xiy;4_'))d6W5"WM;akekEmw[]ڕX>孅Ţ )`c)^DdoSF]@^ &z5OеFF.s}dg5]l3J;4J%Qc#xܐ]^һ"A4}S yŷu-D><}!̘Mx,q)>cO.+qd}oKj8ɹqKT #hCqaH,(C&r|j"-k$Ә-꺭袃8-~!tGf( JH mzAZ7|䫇 f(.Ĵ؉4-;&xS6Dhc(TDž_f[)-=xm$u$߬ٔERh>4"wͨ?fI #KX4Yz4<];>>i N%/zQnjwnf&=0I ؈I!yܱzm /=& <@S1нH F'n`VXhp/'Á/LjLS:VFZò=X!v7T^GdԦQzT^uSR!S&=ԓ+WRS` 2)^L`oH7a puHxw#2F<)HB%Ft%>ORH~G>Qsdiܿ]J'%Ox<?"Pvq6>QO^or%IX- erXCfdOGEGuɆ;-RLmoH (ucsd' ^ABFn6czt%=㝌Ѥ6צ};D;c!t[ha(NdM=!L/'3:QP/&=hp?f@4, aX!@ 5TI|Oz]gױ#F%h8L-Ek@{/ŻKXŤS3jճ>);m6oᛍ.ke gAրɛx[Veo:&Xme |V0Xda\6ꤱ޲AL2+w07J~)." d^A-0뵵О/u/btppH3+ދ?r4tTL/ZϺ--Z?ךWs]] @KSdպ|;f~bͩ'Hb; Y*LL&S㍷vۄ [EIv:/+f%=}O,*9C\(L08 $"d8L쾁^ïЛ nY9{8닢dQ=:G ]8ERB:}&XD%mih3+Vhofum\lsxV.Yh&9~&*OSNđ8#?-w/p1>,Cr ~2xEGI&rDyu|_CZdW3T9ۮݹeڙxpK|QFECyFG bw x) Tb8nIe,ALD\(V6D סQ#z]: Cx : O2L?Q9V\qB\[5[)xoE@nf[^ʷ!fP)q(^C p_'# cJ4u4>ᶷT#%m3X#:ޑYۉu[jqMFAdCd5NϐqDm.BA<g֜< *v=[=n>W3ew16!kTYv>wmތ`)vV4G ݣoޖeK#0j2!Giz_BgUUԄԕPp=D@ݏ/c<^eJG&~fR5cg3N(Rk3,g8ۮ@$>9pM]69i8]%".7|ݞ%%8;g +&>U,xz斵 10u8_ee4h2l`*sb@cxqR8g_O |>uшsp5`a[B72#?n&20KEt)<]W gj-%W )V; `OauX=nuNCP 9 yS|َ1=+ Is"sKZ"CMV߂V^Y5qdj{F9!Οr,x`jqCrۥRk{𝕗sy}D.#nMvi!^%mE6S2D?d]H>oF;RpLo5AsU0 8r9:<>u eY3wJK\YA~i1{ɒXgC .h, 桓8aTxm=pي_7ܥ,[Ɵ+}_.eu<>q{wBɠ]}3?W5o({qkv_B<iEP#c"\LҀcɤ8v)ǚiWr쇘|SKVKK12)unFƍP~3oy&zZoyhNOAkӱKW6Jn_&;bBy<;CjS*URknzreʔ١xc| 1ל*f'Ҧ%@Fp |sO0=rheAU|X{m489fV}7pt̜;r>˵*e{&qä'2 YZ