librpminspect-1.5-1.el8$>8 d2qiv8>@?d  K<@O^     @  TtD// /( 8 9  : GHIX$Y0\H]h^bid޹e޾fltuvwxy'  , TZClibrpminspect1.51.el8Library providing RPM test API and functionalityThe library providing the backend test functionality and API for the rpminspect frontend program. This library can also be used by other programs wanting to incorporate RPM test functionality.`-buildhw-x86-06.iad2.fedoraproject.org Fedora ProjectFedora ProjectGPLv3+ and LGPLv2+ and ASL 2.0 and CC-BYFedora ProjectDevelopment/Toolshttps://github.com/rpminspect/rpminspectlinuxx86_64, X,^AAA큤`-`-`-`-`-`-`)`)2080d38d19db7233f60d4279a5014a804b31b2b32a655ff787c1d7325c7d0b57e3a994d82e644b03a792a930f574002658412f62407f5fee083f2555c5f23118cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30../../../../usr/lib64/librpminspect.so.0.5.0librpminspect.so.0.5.0rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrpminspect-1.5-1.el8.src.rpmlibrpminspectlibrpminspect(x86-64)librpminspect.so.0()(64bit)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    @clamav-datadesktop-file-utilsdiffstatdiffutilsgettextlibarchive.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.27)(64bit)libc.so.6(GLIBC_2.3)(64bit)libc.so.6(GLIBC_2.3.3)(64bit)libc.so.6(GLIBC_2.3.4)(64bit)libc.so.6(GLIBC_2.4)(64bit)libc.so.6(GLIBC_2.8)(64bit)libcap.so.2()(64bit)libclamav.so.9()(64bit)libclamav.so.9(CLAMAV_PUBLIC)(64bit)libcrypto.so.1.1()(64bit)libcrypto.so.1.1(OPENSSL_1_1_0)(64bit)libcurl.so.4()(64bit)libdl.so.2()(64bit)libdl.so.2(GLIBC_2.2.5)(64bit)libdl.so.2(GLIBC_2.3.3)(64bit)libelf.so.1()(64bit)libelf.so.1(ELFUTILS_1.0)(64bit)libelf.so.1(ELFUTILS_1.5)(64bit)libelf.so.1(ELFUTILS_1.6)(64bit)libjson-c.so.4()(64bit)libkmod.so.2()(64bit)libkmod.so.2(LIBKMOD_5)(64bit)libmagic.so.1()(64bit)librpm.so.8()(64bit)librpmio.so.8()(64bit)libxml2.so.2()(64bit)libxml2.so.2(LIBXML2_2.4.30)(64bit)libxml2.so.2(LIBXML2_2.6.0)(64bit)libxmlrpc.so.3()(64bit)libxmlrpc_client.so.3()(64bit)libxmlrpc_util.so.4()(64bit)libyaml-0.so.2()(64bit)libz.so.1()(64bit)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)rtld(GNU_HASH)3.0.4-14.6.0-14.0-15.2-14.14.3`@`\{@`7@`7@`U_@_@_@_@_[fDavid Cantrell - 1.5-1David Cantrell - 1.4-1David Cantrell - 1.3.1-1David Cantrell - 1.3-2Fedora Release Engineering David Cantrell - 1.2-1David Cantrell - 1.2-1David Cantrell - 1.2-1David Cantrell - 1.2-1David Cantrell - 1.1-1- Begin work on version 1.5 - Use llabs() instead of labs() in the filesize inspection - Improve has invalid execstack flags reporting - Use long unsigned int to report size changes in patches - Fix some errors in the changedfiles inspection - Update the changedfiles test cases - Check DT_SONAME in is_elf_shared_library() - Skip debuginfo and debugsource files in abidiff - Make sure abidiff test cases add a DT_SONAME to the test lib - Report INFO level for patches findings by default - Python black fixes in test/test_abidiff.py - Update the test/test_patches.py cases for patches changes - Generate regular changelog in utils/srpm.h - Skip branches without targets in submit-koji-builds.sh - Fedora and CentOS systems in ci need diffstat - opensuse-leap CI job requires diffstat - Fix the Debian CI jobs in GitHub Actions - Fix and enable the Ubuntu extra-ci job in GitHub Actions - Use pip instead of pip3 for the Ubuntu command - Use apt-get -y install in - Enable the opensuse-tumbleweed GHA job again - Make sure the Gentoo GHA job has diffstat - Get the Arch Linux GHA job working again - Use ubuntu:latest for the ubuntu GHA image - Simplify the utils/determine-os.sh script - Update license table in README.md - Allow any number of builds specified for fetch only mode - Handle old or broken versions of libmagic in changedfiles - Update GitHub Action status badges in README.md - Fix $(OS) check in the Makefile - Fix the ubuntu GitHub Actions extra-ci job - Make sure the centos8 job has git available before cloning - Change strappend() to work as a variadic function - Use json_tokener_parse_ex() to get better error reporting - Fix reading of the javabytecode block in the config file - Catch missing/losing -fPIC correctly on .a ELF objects (#352) - Refactor elf_archive_tests() and its helper functions - Followup fix for find_no_pic, find_pic, and find_all - Install cpp-coveralls using pacman on Arch Linux - Install cpp-coveralls using pip on Arch Linux - Install cpp-coveralls in pre.sh on Arch Linux - Install required Python modules in pre.sh on Arch Linux - Do not upgrade pip on Arch Linux, go back to using pip.txt - Drop DEBUG_PRINT from source generated by pic_bits.sh - Do not run apt-get update as a second time on Debians systems - The lost PIC tests need to invoke gcc with -fno-PIC - Update the OpenSUSE Tumbleweed files, but disable it anyway - Define inspection_ignores in struct rpminspect - Clean up the config file section reading code - Add add_ignore() to init.c - Fix fetch only mode download directory - Stub out libcurl download progress callback function - Perform symbolic owner and group matching in ownership (#364) - Restrict download_progress() to systems with CURLOPT_XFERINFOFUNCTION - Read per-inspection ignore lists from the config file. - Add commented out per-inspection ignore blocks - Implement per-inspection path ignore support (#351) - Report annocheck failures correctly in librpminspect. - Note all regular expression settings use regex(7) syntax - Allow size_threshold: info in the config file (#261) - Check ignore list in files for path prefixes to ignore (#360) - Support a list of expected empty RPMs in the config file (#355) - Call mparse_reset() before mparse_readfd() - Do not crash with the -c option specifies a non-existent file - Update TODO list - Make sure brp-compress is disabled in test_manpage.py - Require/Recommend /usr/bin/annocheck - Note size_threshold can be the keyword info - Ensure ctxt->lastError.message is not NULL before strdup (#382) - Handle corrupt compressed files in changedfiles (#382) - Disable debugging output for the ignore lists in init.c - Drop debugging output in the xml inspection - Remove what working directories we can - Correctly find icons for desktop files in subpackages (#367) - Followup to the Icon= check in the desktop inspection (#367) - BuildRequires libmandoc-devel >= 1.14.5 - Manually install mandoc on centos7 for now- Start work on the 1.4 release - Trim git commit summary prefix from changelog lines - Report the program version number in the results (#309) - Handle compressed but otherwise empty man pages (#308) - Flake8 fixes for test_manpage.py - s/self.rpm/self.after_rpm/ in two test_manpage.py tests - Disable broken ELF heurisitic and size limit in libclamav - Modify dump_cfg() to write valid YAML to stdout (#306) - Migrate more code off hsearch and to uthash - Replace hsearch() with uthash in the kmod inspection - Update TEST_METADATA status in TODO and MISSING - Restrict style checks to specific directories - Replace hsearch() with uthash in the abidiff inspection - Change tsearch/twalk use to uthash - Correct misuse of entry with hentry variables (#321) - Normalize copyright boilerplates in source files - Use hentry->key over hentry->value in pathmigration - Adjust lib/meson.build for Fedora rawhide - Drop gate.yml and begin non-x86_64 arches in ci.yml - Add armv7, aarch64, and s390x to the other_arches job - Change init.c error reporting over to err/warn functions - Modify file triggers and matrix use in ci.yml - Split 32-bit osdeps out to post.sh scripts in osdeps/ - Split style.yml in to shellcheck.yml and python.yml - Rewrite extra-ci.yml to use the matrix strategy method for GHA - Move the emulated CI jobs to extra-ci.yml - s/pkg/pki/ for the centos jobs - Debian and Ubuntu fixes for CI - Python pip on Debian is called pip - Try to fix just debian:stable - Enable debian:testing in extra-ci.yml - Enable centos8 in extra-ci.yml again - Enable centos7 in extra-ci.yml again - Enable opensuse-leap and gentoo in extra-ci.yml again - Run each test script individually on emulated targets - Try a different syntax for the emulated matrix jobs - Install s390 glibc headers on s390x fedora systems - Detect 32-bit and musl presence in test_elf.py - Skip lost -fPIC tests if gcc lacks -m32 support - Add stretch and buster to the emulated targets list - Drop Debian buster from the emulated targets - Install gcc-multilib only on Debian x86_64 and s390x systems - libc-dev:i386 -> libc6-dev:i386 - Disable Debian targets in extra-ci temporarily - s/AUR/git/g in osdeps/arch/post.sh - In read_cfgfile(), keep track of block depth correctly (#329) - A few more yaml parsing fixes for block vs group - Recommend or Require libabigail >= 1.8.2 - Finish normalizing all the error reporting statements - Advertise of rpminspect-report in the contrib README. - Report libclamav version and CVD versions (#258) - Ensure first argument of warn(3) is a format string. - Enable werror=true and warning_level=3 in default_options - Update the translation template file - Get rid of invalid free() in get_product_release() - Add inspection_id() to librpminspect - Update the po/rpminspect.pot template - Improve mkannounce.sh to handle stable and devel releases- Remove duplicate elf_end() call in init_elf_data() (#303) - Update translation template- Small change to the way Koji builds are submitted - Move the master branch to version 1.3 - Drop DEBUG_PRINT in process_table() - Add doc/git.md to explain source control conventions - Change Suggests to Recommends in the spec file - Add kmidiff and politics to the inspections section of generic.yaml - Update TODO list - Use warn() for non-fatal errors in mkdirp() - Require libabigail >= 1.8 in rpminspect.spec.in - Enable multiple --headers-dir1 and --headers-dir2 args in abidiff - Swap out some more fprintf()/fflush() reporting with warn() - #include in peers.c and rmtree.c - On fedora-rawhide CI jobs, install gcc-c++ and gcc-plugin-devel - Disable fedora-rawhide GitHub Action for now - Correctly handle the -w option on rpminspect(1) (#256) - Drop the relative path handling for the -w option - Build and install rc from source on opensuse-leap - Update doc/git.md on how to track upstream - Add .github/ and osdeps/ directories to extra-ci.yml - Build and install rc from source on opensuse-tumbleweed - Adjust curl(1) command line used for rc in opensuse CI jobs - Trying to figure out why the opensuse jobs produce curl errors - Another slight change to post.sh for the opensuse-leap CI job - s/PowerTools/powertools/g in the centos8 PKG_CMD definition - The output of html2text on opensuse systems is different - Rename HEADER_MAN to HEADER_MANPAGE (#264) - Add inspection_header_to_desc() to librpminspect (#264) - Add xunit output format support (#264) - Support the new output function call syntax (#264) - Move init_elf_data() to readelf.c, move data to struct rpminspect - Update inspect_elf.c unit tests for librpminspect changes - Remove check_ipv6() from inspect_elf.c - Create the badfuncs inspection - Update po/ translation files. - Add badfuncs test cases - Forgot to commit test_badfuncs.py. - Fix flake8 and black errors with test_badfuncs.py - Skip debug packages in filesize, display changes correctly - Fix spurious execstack failure - Fix YAML config file reading for BLOCK_INSPECTIONS - Expand dump_config() to cover all config file settings - Minor spelling fixes in strfuncs.c and making code explicit - Simplify list_to_string() so it handles 1-elements lists right - Add abspath() to canonicalize path strings - In the doc inspection, only show diff(1) output for text files (#254) - Add strxmlescape() to strfuncs.c in librpminspect (#264) - Output the system-out xunit portion as CDATA (#264) - Slightly change how strxmlescape() works - Add the runpath inspection to librpminspect - Rename test/data/lto.c to test/data/mathlib.c - Handle the empty string case in abspath() - Expand dump_cfg() to show runpath settings - Fix block handling problems in the YAML config reader - Note single builds cannot be rebases in is_rebase() - Hook up the driver for the runpath inspection - Install patchelf for tests on fedora and centos - Update TODO and README.md files - Pass -D to rpminspect in the test suite - Add integration tests for the runpath inspection - Python flake8 and black fixes in test_runpath.py - Fixes for GitHub Actions on Debian and Ubuntu - Disable Rust support in pip modules, more extra-ci fixes - Update pip and setuptools on debian and ubuntu CI jobs - Make sure pip is updated on debian, centos7, and centos8 - Fixes for extra-ci on arch, centos7, centos8, and debian - Adjust docker image names for opensuse and arch - Add Gentoo Linux to the Extra CI set - extra-ci.yml typo fix for the gentoo job - Use gentoo/stage3 as the container for the gentoo CI job - Disable opensuse-tumbleweed and archlinux CI jobs - Make sure util/determine-os.sh picks up Gentoo Linux - In the runpath inspection, fail if DT_RPATH and DT_RUNPATH exist - Use pip install for PIP_CMD on gentoo - Set PIP_CMD to pip install -user for gentoo - Handle a NULL from list_to_string() in abspath() - Do not match path prefixes in the runpath inspection - Python black fixes for test_runpath.py - Stop doing an emerge --sync on the gentoo CI job - Replace emerge --sync with a manual portage sync - Use emerge-webrsync to update portage on gentoo - Add uthash and move the file matching code to it. - Typo fix in README.md - Fix some memory leaks found by valgrind - Create mkannounce.sh to help make release announcements easier - shellcheck fixes for mkannounce.sh- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild- For BUILDTYPE=release, generate the correct type of changelog - Minor logic error in submit-koji-builds.sh - Fix reading existing spec file in submit-koji-builds.sh - Bump development build version to 1.2 - Use is_rebase() in the 'upstream' inspection - Use rpmtdSetIndex() and rpmtdGetString() in get_header_value() - Add get_rpmtag_fileflags() to files.c and call from extract_rpm() - Use correct Version and Release values in download_build() - #include -> #include - Add the 'config' inspection to librpminspect - Rephrase reporting messages in the 'config' inspection - Add the 'doc' inspection to librpminspect - Update TODO list - Minor updates to try and make gate.sh more reliable - Add config and doc to the inspections list in generic.yaml - Rename the '%files' inspection to 'files' (#194) - Modify baseclass.py to allow 'before' and 'after' NVR tuples - Use the after tuple to override the NVR in test_abidiff.py - Use the after tuple to override the NVR in test_upstream.py - Write rpminspect output to a file in the test suite - Add 28 test cases for the 'config' inspection - Fix the errors in the 'config' inspection found by the test suite - Fix Python problems in the test suite reported by black and flake8 - Add Makefile targets for black and flake8 - One more formatting issue reporting by Python black in test_config.py - More 'python black' formatting errors reported for test_config.py - https://mandoc.bsd.lv -> http://mandoc.bsd.lv - Add a -D/--dump-config option to rpminspect(1) - Use global reported variable in 'config' inspection - Fix reporting errors in the 'doc' inspection - Add test_doc.py with 'doc' inspection test cases - Ignore flake8 W291 in test_doc.py where we explicitly want whitepsace. - Add init_rebaseable() to librpminspect - Check the rebaseable list in is_rebase() in librpminspect - Update TODO list - Define a new GitHub Action using utils/gate.sh - Update the README.md file - shellcheck fixes for utils/gate.sh - Use utils/find-ninja.sh to determine what ninja-build command to use - Install fedora-packager for the gate.yml GitHub Action - Remove before and after variables from gate.sh; unused - Remove unnecessary basename() calls in inspect_upstream.c - Do not assume an or bn contain strings in is_rebase() (#196) - Adjust what things run during with GitHub Actions - Add get_rpm_header_string_array() to librpminspect - Replace init_source() with get_rpm_header_string_array() in inspect_upstream.c - free() allocated output string in inspect_changelog.c on errors - s/10240/16384/ in archive_read_open_filename() call in unpack.c - Add the 'patches' inspection to librpminspect - Add uncompress_file() to librpminspect - Add filecmp() and use that in place of zcmp/bzcmp/xzcmp - README.md updates - Restrict some GitHub Actions to source code and test suite changes. - Only enable lz4 compression if ARCHIVE_FILTER_LZ4 is defined - Go ahead and wrap the rest of the libarchive compression filters - s/class Test/class /g - Make sure uncompress_file() supports xz compression - Handle more compressed file MIME types. - Add test_changedfiles.py to the test suite. - Add test_patches.py with test cases for the 'patches' inspection - flake8 fixes in the test suite - Python format fixes for test_changedfiles.py - Python format fixes in test_patches.py - More Python format fixes for test_patches.py - Remove unnecessary 'a' in DESC_PATCHES - Better explanation as to why the EmptyLicenseTag tests are skipped. - Test suite cleanup; add rebase= and same= to TestCompareSRPM - Black formatting fixes for the test suite. - Remove unused imports in test_upstream.py - Revert black fixes for test_config.py - Fix my email address in test suite source files. - Support single package URLs for before and after builds (#190) - Handle invalid/missing RPMs in get_product_release() - Use warnx(), errx(), and err() in src/rpminspect.c - Modify submit-koji-builds.sh to pick up all pkg-git branches. - Update the rpminspect.1 man page to reflect current status. - Update translation template files in po/ - Support relative directory paths for the -w option (#188) - Implement the 'virus' inspection and add test cases for it. - Update po/ template files - Python formatting fixes for test_virus.py - Update the osdeps/*/reqs.txt files. - More osdeps updates for the clamav needs - Install 'xz' for the 'style' GitHub Action - Fix a variety of small memory leaks in librpminspect - Stop the freshclam service for the Ubuntu gate job - Support slightly older versions of libclamav in inspect_virus.c - Add the 'politics' inspection to librpminspect. - In tearDown() in the test suite, call rpmfluff clean() methods - Add test_politics.py with 'politics' inspection test cases - Python black format fixes for test_politics.py - 'it should added' -> 'it should be added' - Increase the runtime timeout for test_virus.py - Install the timeout decorator on all OSes in our GitHub Actions - Install timeout-decorator with pip, not timeout - Expand librpminspect with support for SHA-224, SHA-384, and SHA-512 - Define DEFAULT_MESSAGE_DIGEST in constants.h and use that. - Replace some fprintf()/fflush() calls with warn()/warnx() calls - Rename the 'DT_NEEDED' inspection to 'dsodeps' - Rename 'LTO' inspection to 'lto' - Update translation template and fix two incorrect error strings. - Note all valid message digests in data/politics/GENERIC - Improve reporting in the patches inspection - Only fail 'changedfiles' for VERIFY and higher results - If 'removedfiles' only reports INFO messages, pass the inspection - If 'addedfiles' only reports INFO results, pass the inspection - If 'patches' only reports INFO results, pass the inspection - No need to check value of allowed in permissions_driver() - Do not let INFO results fail the 'doc' inspection. - Do not let all INFO results in 'upstream' fail the inspection - Fix RPMFILE_FLAGS handling for %config files (#221) - Still report file changes in the 'config' inspection for rebases - Correctly check RPMFILE_DOC flags in the 'doc' inspection - Include rpm/rpmfi.h insted of rpm/rpmfiles.h - Only check regular files and symlinks in the 'doc' inspection - Remove unnecessary assert() statements in filecmp() - Remove incorrect warnx() reportings based on filecmp() return value - Exclude man pages from the 'doc' inspection - Honor the -a command line option for downloads as well as runtime (#233) - Allow optional 'commands' block in the config file - Fix assorted non-critical memory leaks - Remove unnecessary warn() after a failed stat() - Additional memory fixes for the abidiff inspection (#244) - Free ELF symbol names list in find_lto_symbols() before return - Followup to the memory fixes for read_abi() and free_abi() - Prevent invalid pointer dereferencing in invalid result in 'patches' (#245) - Avoid reusing the same abi_pkg_entry_t struct in read_abi() - Allow a set of excluded path prefixes in 'pathmigration' - Fix the YAML parsing for the pathmigration block - Document the BRANCHES variable for 'make koji' - Include the .asc file when submitting new Koji builds (#191) - Include the .asc file in the spec file- For BUILDTYPE=release, generate the correct type of changelog - Minor logic error in submit-koji-builds.sh - Fix reading existing spec file in submit-koji-builds.sh - Bump development build version to 1.2 - Use is_rebase() in the 'upstream' inspection - Use rpmtdSetIndex() and rpmtdGetString() in get_header_value() - Add get_rpmtag_fileflags() to files.c and call from extract_rpm() - Use correct Version and Release values in download_build() - #include -> #include - Add the 'config' inspection to librpminspect - Rephrase reporting messages in the 'config' inspection - Add the 'doc' inspection to librpminspect - Update TODO list - Minor updates to try and make gate.sh more reliable - Add config and doc to the inspections list in generic.yaml - Rename the '%files' inspection to 'files' (#194) - Modify baseclass.py to allow 'before' and 'after' NVR tuples - Use the after tuple to override the NVR in test_abidiff.py - Use the after tuple to override the NVR in test_upstream.py - Write rpminspect output to a file in the test suite - Add 28 test cases for the 'config' inspection - Fix the errors in the 'config' inspection found by the test suite - Fix Python problems in the test suite reported by black and flake8 - Add Makefile targets for black and flake8 - One more formatting issue reporting by Python black in test_config.py - More 'python black' formatting errors reported for test_config.py - https://mandoc.bsd.lv -> http://mandoc.bsd.lv - Add a -D/--dump-config option to rpminspect(1) - Use global reported variable in 'config' inspection - Fix reporting errors in the 'doc' inspection - Add test_doc.py with 'doc' inspection test cases - Ignore flake8 W291 in test_doc.py where we explicitly want whitepsace. - Add init_rebaseable() to librpminspect - Check the rebaseable list in is_rebase() in librpminspect - Update TODO list - Define a new GitHub Action using utils/gate.sh - Update the README.md file - shellcheck fixes for utils/gate.sh - Use utils/find-ninja.sh to determine what ninja-build command to use - Install fedora-packager for the gate.yml GitHub Action - Remove before and after variables from gate.sh; unused - Remove unnecessary basename() calls in inspect_upstream.c - Do not assume an or bn contain strings in is_rebase() (#196) - Adjust what things run during with GitHub Actions - Add get_rpm_header_string_array() to librpminspect - Replace init_source() with get_rpm_header_string_array() in inspect_upstream.c - free() allocated output string in inspect_changelog.c on errors - s/10240/16384/ in archive_read_open_filename() call in unpack.c - Add the 'patches' inspection to librpminspect - Add uncompress_file() to librpminspect - Add filecmp() and use that in place of zcmp/bzcmp/xzcmp - README.md updates - Restrict some GitHub Actions to source code and test suite changes. - Only enable lz4 compression if ARCHIVE_FILTER_LZ4 is defined - Go ahead and wrap the rest of the libarchive compression filters - s/class Test/class /g - Make sure uncompress_file() supports xz compression - Handle more compressed file MIME types. - Add test_changedfiles.py to the test suite. - Add test_patches.py with test cases for the 'patches' inspection - flake8 fixes in the test suite - Python format fixes for test_changedfiles.py - Python format fixes in test_patches.py - More Python format fixes for test_patches.py - Remove unnecessary 'a' in DESC_PATCHES - Better explanation as to why the EmptyLicenseTag tests are skipped. - Test suite cleanup; add rebase= and same= to TestCompareSRPM - Black formatting fixes for the test suite. - Remove unused imports in test_upstream.py - Revert black fixes for test_config.py - Fix my email address in test suite source files. - Support single package URLs for before and after builds (#190) - Handle invalid/missing RPMs in get_product_release() - Use warnx(), errx(), and err() in src/rpminspect.c - Modify submit-koji-builds.sh to pick up all pkg-git branches. - Update the rpminspect.1 man page to reflect current status. - Update translation template files in po/ - Support relative directory paths for the -w option (#188) - Implement the 'virus' inspection and add test cases for it. - Update po/ template files - Python formatting fixes for test_virus.py - Update the osdeps/*/reqs.txt files. - More osdeps updates for the clamav needs - Install 'xz' for the 'style' GitHub Action - Fix a variety of small memory leaks in librpminspect - Stop the freshclam service for the Ubuntu gate job - Support slightly older versions of libclamav in inspect_virus.c - Add the 'politics' inspection to librpminspect. - In tearDown() in the test suite, call rpmfluff clean() methods - Add test_politics.py with 'politics' inspection test cases - Python black format fixes for test_politics.py - 'it should added' -> 'it should be added' - Increase the runtime timeout for test_virus.py - Install the timeout decorator on all OSes in our GitHub Actions - Install timeout-decorator with pip, not timeout - Expand librpminspect with support for SHA-224, SHA-384, and SHA-512 - Define DEFAULT_MESSAGE_DIGEST in constants.h and use that. - Replace some fprintf()/fflush() calls with warn()/warnx() calls - Rename the 'DT_NEEDED' inspection to 'dsodeps' - Rename 'LTO' inspection to 'lto' - Update translation template and fix two incorrect error strings. - Note all valid message digests in data/politics/GENERIC - Improve reporting in the patches inspection - Only fail 'changedfiles' for VERIFY and higher results - If 'removedfiles' only reports INFO messages, pass the inspection - If 'addedfiles' only reports INFO results, pass the inspection - If 'patches' only reports INFO results, pass the inspection - No need to check value of allowed in permissions_driver() - Do not let INFO results fail the 'doc' inspection. - Do not let all INFO results in 'upstream' fail the inspection - Fix RPMFILE_FLAGS handling for %config files (#221) - Still report file changes in the 'config' inspection for rebases - Correctly check RPMFILE_DOC flags in the 'doc' inspection - Include rpm/rpmfi.h insted of rpm/rpmfiles.h - Only check regular files and symlinks in the 'doc' inspection - Remove unnecessary assert() statements in filecmp() - Remove incorrect warnx() reportings based on filecmp() return value - Exclude man pages from the 'doc' inspection - Honor the -a command line option for downloads as well as runtime (#233) - Allow optional 'commands' block in the config file - Fix assorted non-critical memory leaks - Remove unnecessary warn() after a failed stat() - Additional memory fixes for the abidiff inspection (#244) - Free ELF symbol names list in find_lto_symbols() before return - Followup to the memory fixes for read_abi() and free_abi() - Prevent invalid pointer dereferencing in invalid result in 'patches' (#245) - Avoid reusing the same abi_pkg_entry_t struct in read_abi() - Allow a set of excluded path prefixes in 'pathmigration' - Fix the YAML parsing for the pathmigration block - Document the BRANCHES variable for 'make koji' - Include the .asc file when submitting new Koji builds (#191) - Include the .asc file in the spec file- For BUILDTYPE=release, generate the correct type of changelog - Minor logic error in submit-koji-builds.sh - Fix reading existing spec file in submit-koji-builds.sh - Bump development build version to 1.2 - Use is_rebase() in the 'upstream' inspection - Use rpmtdSetIndex() and rpmtdGetString() in get_header_value() - Add get_rpmtag_fileflags() to files.c and call from extract_rpm() - Use correct Version and Release values in download_build() - #include -> #include - Add the 'config' inspection to librpminspect - Rephrase reporting messages in the 'config' inspection - Add the 'doc' inspection to librpminspect - Update TODO list - Minor updates to try and make gate.sh more reliable - Add config and doc to the inspections list in generic.yaml - Rename the '%files' inspection to 'files' (#194) - Modify baseclass.py to allow 'before' and 'after' NVR tuples - Use the after tuple to override the NVR in test_abidiff.py - Use the after tuple to override the NVR in test_upstream.py - Write rpminspect output to a file in the test suite - Add 28 test cases for the 'config' inspection - Fix the errors in the 'config' inspection found by the test suite - Fix Python problems in the test suite reported by black and flake8 - Add Makefile targets for black and flake8 - One more formatting issue reporting by Python black in test_config.py - More 'python black' formatting errors reported for test_config.py - https://mandoc.bsd.lv -> http://mandoc.bsd.lv - Add a -D/--dump-config option to rpminspect(1) - Use global reported variable in 'config' inspection - Fix reporting errors in the 'doc' inspection - Add test_doc.py with 'doc' inspection test cases - Ignore flake8 W291 in test_doc.py where we explicitly want whitepsace. - Add init_rebaseable() to librpminspect - Check the rebaseable list in is_rebase() in librpminspect - Update TODO list - Define a new GitHub Action using utils/gate.sh - Update the README.md file - shellcheck fixes for utils/gate.sh - Use utils/find-ninja.sh to determine what ninja-build command to use - Install fedora-packager for the gate.yml GitHub Action - Remove before and after variables from gate.sh; unused - Remove unnecessary basename() calls in inspect_upstream.c - Do not assume an or bn contain strings in is_rebase() (#196) - Adjust what things run during with GitHub Actions - Add get_rpm_header_string_array() to librpminspect - Replace init_source() with get_rpm_header_string_array() in inspect_upstream.c - free() allocated output string in inspect_changelog.c on errors - s/10240/16384/ in archive_read_open_filename() call in unpack.c - Add the 'patches' inspection to librpminspect - Add uncompress_file() to librpminspect - Add filecmp() and use that in place of zcmp/bzcmp/xzcmp - README.md updates - Restrict some GitHub Actions to source code and test suite changes. - Only enable lz4 compression if ARCHIVE_FILTER_LZ4 is defined - Go ahead and wrap the rest of the libarchive compression filters - s/class Test/class /g - Make sure uncompress_file() supports xz compression - Handle more compressed file MIME types. - Add test_changedfiles.py to the test suite. - Add test_patches.py with test cases for the 'patches' inspection - flake8 fixes in the test suite - Python format fixes for test_changedfiles.py - Python format fixes in test_patches.py - More Python format fixes for test_patches.py - Remove unnecessary 'a' in DESC_PATCHES - Better explanation as to why the EmptyLicenseTag tests are skipped. - Test suite cleanup; add rebase= and same= to TestCompareSRPM - Black formatting fixes for the test suite. - Remove unused imports in test_upstream.py - Revert black fixes for test_config.py - Fix my email address in test suite source files. - Support single package URLs for before and after builds (#190) - Handle invalid/missing RPMs in get_product_release() - Use warnx(), errx(), and err() in src/rpminspect.c - Modify submit-koji-builds.sh to pick up all pkg-git branches. - Update the rpminspect.1 man page to reflect current status. - Update translation template files in po/ - Support relative directory paths for the -w option (#188) - Implement the 'virus' inspection and add test cases for it. - Update po/ template files - Python formatting fixes for test_virus.py - Update the osdeps/*/reqs.txt files. - More osdeps updates for the clamav needs - Install 'xz' for the 'style' GitHub Action - Fix a variety of small memory leaks in librpminspect - Stop the freshclam service for the Ubuntu gate job - Support slightly older versions of libclamav in inspect_virus.c - Add the 'politics' inspection to librpminspect. - In tearDown() in the test suite, call rpmfluff clean() methods - Add test_politics.py with 'politics' inspection test cases - Python black format fixes for test_politics.py - 'it should added' -> 'it should be added' - Increase the runtime timeout for test_virus.py - Install the timeout decorator on all OSes in our GitHub Actions - Install timeout-decorator with pip, not timeout - Expand librpminspect with support for SHA-224, SHA-384, and SHA-512 - Define DEFAULT_MESSAGE_DIGEST in constants.h and use that. - Replace some fprintf()/fflush() calls with warn()/warnx() calls - Rename the 'DT_NEEDED' inspection to 'dsodeps' - Rename 'LTO' inspection to 'lto' - Update translation template and fix two incorrect error strings. - Note all valid message digests in data/politics/GENERIC - Improve reporting in the patches inspection - Only fail 'changedfiles' for VERIFY and higher results - If 'removedfiles' only reports INFO messages, pass the inspection - If 'addedfiles' only reports INFO results, pass the inspection - If 'patches' only reports INFO results, pass the inspection - No need to check value of allowed in permissions_driver() - Do not let INFO results fail the 'doc' inspection. - Do not let all INFO results in 'upstream' fail the inspection - Fix RPMFILE_FLAGS handling for %config files (#221) - Still report file changes in the 'config' inspection for rebases - Correctly check RPMFILE_DOC flags in the 'doc' inspection - Include rpm/rpmfi.h insted of rpm/rpmfiles.h - Only check regular files and symlinks in the 'doc' inspection - Remove unnecessary assert() statements in filecmp() - Remove incorrect warnx() reportings based on filecmp() return value - Exclude man pages from the 'doc' inspection - Honor the -a command line option for downloads as well as runtime (#233) - Allow optional 'commands' block in the config file - Fix assorted non-critical memory leaks - Remove unnecessary warn() after a failed stat() - Additional memory fixes for the abidiff inspection (#244) - Free ELF symbol names list in find_lto_symbols() before return - Followup to the memory fixes for read_abi() and free_abi() - Prevent invalid pointer dereferencing in invalid result in 'patches' (#245) - Avoid reusing the same abi_pkg_entry_t struct in read_abi() - Allow a set of excluded path prefixes in 'pathmigration' - Fix the YAML parsing for the pathmigration block - Document the BRANCHES variable for 'make koji' - Include the .asc file when submitting new Koji builds (#191) - Include the .asc file in the spec file- For BUILDTYPE=release, generate the correct type of changelog - Minor logic error in submit-koji-builds.sh - Fix reading existing spec file in submit-koji-builds.sh - Bump development build version to 1.2 - Use is_rebase() in the 'upstream' inspection - Use rpmtdSetIndex() and rpmtdGetString() in get_header_value() - Add get_rpmtag_fileflags() to files.c and call from extract_rpm() - Use correct Version and Release values in download_build() - #include -> #include - Add the 'config' inspection to librpminspect - Rephrase reporting messages in the 'config' inspection - Add the 'doc' inspection to librpminspect - Update TODO list - Minor updates to try and make gate.sh more reliable - Add config and doc to the inspections list in generic.yaml - Rename the '%files' inspection to 'files' (#194) - Modify baseclass.py to allow 'before' and 'after' NVR tuples - Use the after tuple to override the NVR in test_abidiff.py - Use the after tuple to override the NVR in test_upstream.py - Write rpminspect output to a file in the test suite - Add 28 test cases for the 'config' inspection - Fix the errors in the 'config' inspection found by the test suite - Fix Python problems in the test suite reported by black and flake8 - Add Makefile targets for black and flake8 - One more formatting issue reporting by Python black in test_config.py - More 'python black' formatting errors reported for test_config.py - https://mandoc.bsd.lv -> http://mandoc.bsd.lv - Add a -D/--dump-config option to rpminspect(1) - Use global reported variable in 'config' inspection - Fix reporting errors in the 'doc' inspection - Add test_doc.py with 'doc' inspection test cases - Ignore flake8 W291 in test_doc.py where we explicitly want whitepsace. - Add init_rebaseable() to librpminspect - Check the rebaseable list in is_rebase() in librpminspect - Update TODO list - Define a new GitHub Action using utils/gate.sh - Update the README.md file - shellcheck fixes for utils/gate.sh - Use utils/find-ninja.sh to determine what ninja-build command to use - Install fedora-packager for the gate.yml GitHub Action - Remove before and after variables from gate.sh; unused - Remove unnecessary basename() calls in inspect_upstream.c - Do not assume an or bn contain strings in is_rebase() (#196) - Adjust what things run during with GitHub Actions - Add get_rpm_header_string_array() to librpminspect - Replace init_source() with get_rpm_header_string_array() in inspect_upstream.c - free() allocated output string in inspect_changelog.c on errors - s/10240/16384/ in archive_read_open_filename() call in unpack.c - Add the 'patches' inspection to librpminspect - Add uncompress_file() to librpminspect - Add filecmp() and use that in place of zcmp/bzcmp/xzcmp - README.md updates - Restrict some GitHub Actions to source code and test suite changes. - Only enable lz4 compression if ARCHIVE_FILTER_LZ4 is defined - Go ahead and wrap the rest of the libarchive compression filters - s/class Test/class /g - Make sure uncompress_file() supports xz compression - Handle more compressed file MIME types. - Add test_changedfiles.py to the test suite. - Add test_patches.py with test cases for the 'patches' inspection - flake8 fixes in the test suite - Python format fixes for test_changedfiles.py - Python format fixes in test_patches.py - More Python format fixes for test_patches.py - Remove unnecessary 'a' in DESC_PATCHES - Better explanation as to why the EmptyLicenseTag tests are skipped. - Test suite cleanup; add rebase= and same= to TestCompareSRPM - Black formatting fixes for the test suite. - Remove unused imports in test_upstream.py - Revert black fixes for test_config.py - Fix my email address in test suite source files. - Support single package URLs for before and after builds (#190) - Handle invalid/missing RPMs in get_product_release() - Use warnx(), errx(), and err() in src/rpminspect.c - Modify submit-koji-builds.sh to pick up all pkg-git branches. - Update the rpminspect.1 man page to reflect current status. - Update translation template files in po/ - Support relative directory paths for the -w option (#188) - Implement the 'virus' inspection and add test cases for it. - Update po/ template files - Python formatting fixes for test_virus.py - Update the osdeps/*/reqs.txt files. - More osdeps updates for the clamav needs - Install 'xz' for the 'style' GitHub Action - Fix a variety of small memory leaks in librpminspect - Stop the freshclam service for the Ubuntu gate job - Support slightly older versions of libclamav in inspect_virus.c - Add the 'politics' inspection to librpminspect. - In tearDown() in the test suite, call rpmfluff clean() methods - Add test_politics.py with 'politics' inspection test cases - Python black format fixes for test_politics.py - 'it should added' -> 'it should be added' - Increase the runtime timeout for test_virus.py - Install the timeout decorator on all OSes in our GitHub Actions - Install timeout-decorator with pip, not timeout - Expand librpminspect with support for SHA-224, SHA-384, and SHA-512 - Define DEFAULT_MESSAGE_DIGEST in constants.h and use that. - Replace some fprintf()/fflush() calls with warn()/warnx() calls - Rename the 'DT_NEEDED' inspection to 'dsodeps' - Rename 'LTO' inspection to 'lto' - Update translation template and fix two incorrect error strings. - Note all valid message digests in data/politics/GENERIC - Improve reporting in the patches inspection - Only fail 'changedfiles' for VERIFY and higher results - If 'removedfiles' only reports INFO messages, pass the inspection - If 'addedfiles' only reports INFO results, pass the inspection - If 'patches' only reports INFO results, pass the inspection - No need to check value of allowed in permissions_driver() - Do not let INFO results fail the 'doc' inspection. - Do not let all INFO results in 'upstream' fail the inspection - Fix RPMFILE_FLAGS handling for %config files (#221) - Still report file changes in the 'config' inspection for rebases - Correctly check RPMFILE_DOC flags in the 'doc' inspection - Include rpm/rpmfi.h insted of rpm/rpmfiles.h - Only check regular files and symlinks in the 'doc' inspection - Remove unnecessary assert() statements in filecmp() - Remove incorrect warnx() reportings based on filecmp() return value - Exclude man pages from the 'doc' inspection - Honor the -a command line option for downloads as well as runtime (#233) - Allow optional 'commands' block in the config file - Fix assorted non-critical memory leaks - Remove unnecessary warn() after a failed stat() - Additional memory fixes for the abidiff inspection (#244) - Free ELF symbol names list in find_lto_symbols() before return - Followup to the memory fixes for read_abi() and free_abi() - Prevent invalid pointer dereferencing in invalid result in 'patches' (#245) - Avoid reusing the same abi_pkg_entry_t struct in read_abi() - Allow a set of excluded path prefixes in 'pathmigration' - Fix the YAML parsing for the pathmigration block - Document the BRANCHES variable for 'make koji' - Include the .asc file when submitting new Koji builds (#191) - Include the .asc file in the spec file- Formatting fixes in Makefile help output - Begin config file restructuring starting with rpminspect-data-generic - Support multiple configuration files. - Docs work in progress. - Only fail the annocheck inspection for RESULT_VERIFY. - Read debuginfo if available when running the 'annocheck' inspection. - Add the '%files' inspection to librpminspect - Add __attribute__((__sentinel__)) to the run_cmd() prototype - Add test suite cases for the '%files' inspection. - Added the 'types' inspection to compare MIME types between builds. - Update TODO file - Update the MISSING file - s/rpminspect.yaml/generic.yaml/ in the Makefile and README - Skip debuginfo and debugsource packages in the 'types' inspection - Add test_types.py to the test suite - Note the 'types' inspection generic.yaml - Modify add_entry() in init.c to skip duplicate entries - Start GitHub Action workflow files for rpminspect. - Install meson in ci-ubuntu.yml - Change 'nls' option in meson_options.txt to a boolean - Install gettext for ci-ubuntu - Add more build dependencies to ci-ubuntu.yml - Drop the 'method' parameter from dependency() lines in meson.build - Split xmlrpc libs to separate dependency() lines in meson.build - More xmlrpc updates for meson.build and lib/meson.build - Try to support systems with xmlrpc-c without the pkgconfig file. - Changes to build on Ubuntu, specifically the GitHub Actions system - Syntax error in ci-ubuntu.yml - Add ci-fedora.yml for GitHub Action CI on Fedora - Fix errors in ci-fedora.yml - Put all of the ci-ubuntu.yml steps in ci-ubuntu.yml - Remove install-libmandoc.sh and ubuntu-pkgs.sh helper scripts. - Install python3-setuptools in ci-ubuntu.yml - Install rpm-build in ci-fedora.yml - Install libxmlrpc-core-c3-dev in ci-ubuntu.yml - Disable ci-ubuntu.yml for now, enable code coverage in ci-fedora.yml - Remove Travis-CI files. - coverage fixes for ci-fedora.yml - Install git in ci-fedora.yml - Enable manual dispatching of the CI on Fedora tests - Remove actionspanel thing for GitHub Actions, drop Coveralls block - Comment the ci-fedora-yaml file - Fix the 'elf' inspection and test_elf.py on Ubuntu - Enable the ci-ubuntu GitHub Action again - Check all return values of getcwd() - Ignore installed Python modules with pip3 in ci-ubuntu.yml - Build 'execstack' test program with -Wl,-z,lazy - Add ci-centos8.yml to enable CI on CentOS 8 as a GitHub Action - s/centos8:latest/centos8/g - Trying 'container: centos:centos8' - Drop 'sudo' from ci-centos8.yml - Rename README to README.md - Enable GitHub Action for CI on CentOS 7 - Drop -I from the pip install line in ci-centos7.yml - Use the 'make instreqs' target for install test suite deps. - Add back 'dnf -y install 'dnf-command(builddep)'' to ci-fedora.yml - Nope, that doesn't do it. Just install make in ci-fedora.yml first - More 'make instreqs' fixes. - s/scripts/utils/g in the Makefile - s/TOPDIR/topdir/g in the Makefile - Install make in ci-centos7.yml - Move REQS and PIP lists out of the Makefile to files in osdep/ - '^$$' -> '^$' - Slightly different sourcing of the osdep/ files - Set OS using := in the Makefile - Make the reqs.txt files in osdep/ contain all deps - linux-headers -> linux-headers-$(uname -r) for Ubuntu - Remove html401-dtds from osdep/centos8/reqs.txt - Use `` instead of $() since this list goes through make(1) - Does $(shell uname -r) work in this case? - More osdep/ work and simplification. - Rename 'osdep' to 'osdeps' - meson patches for opensuse - Move mandoc installation to post.sh in osdep/ubuntu - Add GitHub Action for CI on OpenSUSE - opensuse:latest -> opensuse/leap:latest - Install tar in ci-opensuse.yml - Install gzip in ci-opensuse.yml - More fixes for ci-opensuse.yml - Small fixes to determine-os.sh - ci: Add Python linting jobs - ShellCheck fixes for the regress/ scripts - ci: Add ShellCheck to lint shell scripts - Adjust how the Makefile reports unknown operating system. - Just check $ID in determine-os.sh for opensuse - Use pip for PIP_CMD on opensuse-leap - Update the centos images before doing anything else. - Install curl in opensuse-leap - Get 'rc' from Fedora on opensuse and copy it to /usr/local - Install kernel-default-devel for opensuse CI - Move the 'uses' part of the centos CI jobs to the first step - ShellCheck fixes for the utils/ scripts. - Some flake8 fixes in test/, using yapf - Combine all of the GitHub Actions CI runs in to ci.yml - Manually install rpmfluff on CentOS 7; pip is failing here - Use rpmfluff-0.5.7 explicitly for centos7 - Use rpmfluff-0.5.6 on centos7 - OK, let's try rpmfluff-0.5 for centos7 - Last try, rpmfluff-0.5.4.1 for centos7 - Back to trying to manually install rpmfluff for centos7 - Style the Python code with Black - Add the Black formatting commit to blame revision ignore list - OK, just copy rpmfluff.py in place - Make sure to manually install rpmfluff-0.5.7.1 for centos7 - Don't assume we have a header or even a list of files (#161) - python: flake8: drop * imports - python: flake8: wrap long lines to less than 100 characters - python: flake8: drop unused imports - python: flake8: remove unused local variables - python: flake8: add PEP8 whitespace - python: flake8: mark in-line bash scripts as raw strings - python: rename several duplicate test cases - ci: merge style workflows - Adjust rpminspect.spec.in for file moves and default changes. - Return the reallybadword to the metadata tests - Adjust test_metadata.LosingVendorCompareKojiBuild to expect VERIFY - The shared libmandoc check should not look for a static libmandoc - Update the AUTHORS file - Rename ipv6_blacklist to forbidden_ipv6_functions - Rename stat-whitelist to fileinfo - Rename 'caps_whitelist' to 'caps' and drop the use of 'whitelist' - Rename abi-checking-whitelist/ to abi/ in /usr/share/rpminspect - Rename 'version-whitelist/' to 'rebaseable/' in /usr/share/rpminspect - Rename "political-whitelist/" to "politics/" in /usr/share/rpminspect - Drop unnecessary method re-definitions in base test classes - Use super() rather than explicitly calling the parent class - Call configFile() on object instance rather than using the parent class - Upload coverage report to codecov - Improve the error reporting for test result checking - Convert to AUTHORS.md file, add Makefile target to generate it. - Introduce the 'movedfiles' inspection and a lot of other fixes (#155) - AUTHORS -> AUTHORS.md in rpminspect.spec.in - Add basic tests for the filesize inspection - Multiply the file size difference before dividing - Update README.md - Update README.md (more Markdown changes) - Update POTFILES and rpminspect.pot - chmod 0755 test_filesize.py - tests: optionally check the result message - tests: add further filesize tests for shrinking files - inspect_filesize: drop extra - from the message about file shrinkage - Enable 'permissions' inspect for single build analysis. - Add 24 new test cases to cover the 'permissions' inspection. - chmod 0755 test_permissions.py - Make sure all RESULT_INFO results are set to NOT_WAIVABLE - Fix some specific problems with the 'permissions' inspection. - Pass "-r GENERIC" to rpminspect in the TestCompareKoji class - Add 12 more permissions test cases for setuid file checks - Update TODO list - Update test_symlink.py tests for new waiver_auth values - Add a fedora-rawhide job and renamed 'fedora' to fedora-stable - Update the rpminspect.pot translation template - Relicense librpminspect (lib/ and include/) as LGPL-3.0-or-later - Ignore .tox/ subdirectory - License the rpminspect-data-generic subpackage as CC-BY-4.0 - Add a copy of the Apache 2.0 license for the 5 files in librpminspect - Update the License tag in the spec file and the %license lines - Add debian-testing as a CI workflow; add missing osdeps files. - Update determine-os.sh to handle Fedora stable and rawhide - Drop the use of 'sudo' in ci.yml - sudo required for Ubuntu CI job, install make for debian-testing - See what $ID is set to in determine-os.sh - Workaround a bug in meson 0.55.0 for Fedora CI jobs - Add 'debian' catch to utils/determine-os.sh - Rename 'osdeps/debian-testing/' to 'osdeps/debian/' - Add opensuse-tumbleweed to the CI job list - Add libmagic-dev to osdeps/debian/reqs.txt - Fix memory corruption in init_rpminspect - Add comment clarifying the License tag in the spec file. - If check_results() raises AssertionError, dump the JSON output - Fix test_changelog.py test cases that are failing. - Fix UnbalancedChangeLogEditCompareKoji - Handle rpm versions with x.y.z.w version numbers in test_symlinks.py - Fix mandoc build problems in opensuse-tumbleweed CI job - Install gcovr using pip on opensuse-tumbleweed - Handle systems that lack pkg-config files for libelf and libcap - Add archlinux CI job in GitHub Actions - Forgot --noconfirm on the 'pacman -Syu' line. - Add missing DESC_MOVEDFILES block to inspection_desc() - More minor fixes to the Arch Linux CI job. - Install gcovr with pip for the Arch Linux CI job. - Support building on systems that lack - Add detection for to meson.build - Ensure an int is used for snprintf() in inspect_manpage_path() - WIP: 'abidiff' inspection - Only report permissions change if there is a mode_diff (#181) - Fix -Werror failures in inspect_abidiff.c - Add sl_run_cmd() to librpminspect. - Add get_arches() to librpminspect - WIP: abidiff inspection - Some minor edits to the README.md file - More minor updates to the README.md file - Replace get_arches() with init_arches() - Add test_addedfiles.py to the integration test suite - Expand find_one_peer() to soft match versioned ELF shared libraries - Add the beginnings of the 'abidiff' inspection code. - Report out findings in the abidiff inspection. - Update the test suite to cover rpmfluff 0.6 - libmandoc configure workaround needed on Debian too - shellcheck fixes for the scripts in utils/ - Add abi.c, the code that reads in the ABI compat level files (#144) - Be sure to close the open file before exiting init_fileinfo() - Python formatting cleanups - Add --diff to the Python format checker - Add new setting to abidiff section of the config file - Add -n/--no-rebase command line option to disable rebase detection - Store size_threshold as a long int rather than a char * - Check abidiff(1) results against the ABI compat level definitions (#144) - Add 'apt-get -y install libgcc-s1:i386' to pre.sh for Debian - Add integration test cases for the abidiff inspection (#144) - Add 'dpkg --configure -a' to pre.sh for debian - Install libterm-readline-perl-perl for debian CI - Install libabigail for Fedora and CentOS CI jobs - libgcc-s1:i386 -> lib32gcc-s1 for debian CI - Install libabigail for opensuse-leap, opensuse-tumbleweed, and arch CI - Install libabigail for debian and ubuntu CI - Install libabigail-dev for debian and ubuntu, not libabigail - Install libabigail-tools on opensuse-leap and opensuse-tumbleweed - Install libabigail-git for arch linux CI - Move free_argv_table() to runcmd.c - Install 'abigail-tools' for debian-testing and ubuntu CI - Install libabigail using the Arch User Repo on arch CI - Explain the osdeps/ subdirectory. - No, just clone libabigail from git and build it manually on arch - Add beginning of kmidiff inspection, put ABI functions in abi.c - Read list of possible kernel executable filenames from the config file. - Drop abidiff_ and kmidiff_ from extra_args; add kernel_filenames - Just call the abidiff and kmidiff extra args settings "extra_args" - Define 'kmi_ignore_pattern' in the config file. - Handle builds that lack all debuginfo packages (#186) - Do not assume peer->after_hdr exists (#187) - Store copy of original pointer in strsplit() to free at the end. - Use mmap() and strsplit() in read_file() rather than a getline() loop - Fix memory leaks in abi.c functions - open() failure in readfile() is not fatal, just return NULL - Add utils/gate.sh - Have check_abi() pass back the ABI compat level found - Update descriptions for abidiff and kmidiff inspections - Hook up the kmidiff inspection. - Use read_file() in init_fileinfo() and init_caps() - Use read_file() in validate_desktop_contents() - Use read_file() in disttag_driver() - Adjust how init_fileinfo() and init_caps() iterate over file contents - Fix 'tox -e format' style problems found. - Avoid comparing elf files that are not shared libraries - Support --kmi-whitelist in the kmidiff inspection - Trim worksubdir from paths in reported abidiff and kmidiff commands - Remove the kmi_ignore_pattern setting for the config file. - Create include/queue.h to replace the _COMPAT_QUEUE blocks everywhere - Update AUTHORS.md - Report metadata changes for rebased packages as INFO - Do not fail the specname inspection when given a non-SRPM - For passing upstream inspections, do not report a remedy string. - Do not fail the lostpayload inspections if it only gives INFO messages - Clarify unapproved license message in the license inspection - Use FOPEN_MAX for nopenfd parameter in nftw() calls - Make sure to close open file descriptors from get_elf() calls. - Include 'src' architecture in the rpminspect runs in gate.sh - Make sure kmidiff is listed in the spec file - TODO updates - Update rpminspect.pot and POTFILES for translations1.5-1.el81.5-1.el8.build-ida46d5fae0a48a7a5c013a724a7984a6885c94b07librpminspect.so.0librpminspect.so.0.5.0librpminspectCOPYING.LIBLICENSE-2.0.txt/usr/lib//usr/lib/.build-id//usr/lib/.build-id/a4//usr/lib64//usr/share/licenses//usr/share/licenses/librpminspect/-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protectiondrpmxz2x86_64-redhat-linux-gnudirectoryELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=a46d5fae0a48a7a5c013a724a7984a6885c94b07, strippedASCII text'PRRR$R#RRRRRRRR R R RR RR RR%R'R&R"R R!RRRRR(RRRRRR)RR-https://bugz.fedoraproject.org/rpminspect/usr/bin/annocheckbashdashhtml401-dtdskshlibabigailrctcshxhtml1-dtdszsh1.8.2 utf-82bd597339c613b1538151a939e1bc1e0e25340a890e08fec9b0d48fb99e8f251?7zXZ !#,-]"k%jjd+T2jq8´v_Iq&$-9tlZXDsT> (jCpn B\33?RREQPLq mj8I쿡9W6@. 4nzX5v/).,GUƤ.!A iW!Ӈ"/SkwRfZ5G195lcYѡVf3lJ! CԬ'pVҗU{a4ST¬t|owW0C|%~$@yYD}=6˟)-170ؒܭ'jq'hU|.𶤞,/QХh'DW' dvmyj?h,29 2$gWH~Itw>jH%o:a'եQy&0]rd,!;7j_.U Bm,d(TZ(]RD řuŀM.=-5.P. i^g}Ff$e ɇ2;Q<3Q$RtܢY(lΊv4C&c }\~r{~H3yӟzy|7.|r.FNHN͓ l]cXMsGZϥ̴ 8ه@6Hw 3,`bV!{t9{9󧉐=L֫tJm\z|QJ1[eP6.?7qxbTm[ׁ Ǵ {"'JE8CL~K՚C?(؜!_<\Vj ½O/]mC-iaR=!G}=n]ɾ+r+d+lWp34~k^p/gŮ*{ԇk30=C-B.}\PJUkkfPeSh"kn]?8lJ%hBs&%ЎG9i1`ykɸpV3Y+[syX'9yTSkGB]x@?ӽ=\Mc"O&sqbu!;;0A⮈HL B%Eu߳΄䭸1Q:HxgY^ArZ8h&J~+t, bk'N0;~$۪+!3_1zzG-mp|r(m0~lI459,ꬂz7JO( lLUFl~Ӻ0|f__ǟPy3":'34쳷A[ m]?_W3 Jh˙kEA1b –G%@İ%"GZYېR2LrjBTD!>"LC,=~0,CԎr"J+`*ExI4ӖT= HX~6g&E牐gH תd9ĭ-}}oC|P*H\2 mP~iX VR 3.ޯe|R m"Ql}.1KhRң'[cy|ZX52T 716A9}gܣ"!B ";̀oV0=S0diD= oRύze^Q7@[C$,wL-Gom#1hט| ۷!T|ͣ/ : \kxUIRh( /<`j_ɁwiaDدuz5R]9v, q4fH n=HԎ4=<͑<<A5@|uIaڞu%FObp !2;"PQ"'|/ul'kO<z|9 A5I5q$/ӭz]T궭A2%Qʹ'Q fN~Ok^8,60VWY焰IgI2VQҌ9P =~F箕=V3 1~Rp wBbA8m餄3D3>'!N|Z Jp/nG⑐{9:g^Ni~_߬my8p[L ŋ[M +5?+]~ v9)m%t}U>ƐpP ф?` KZ#?:[6u,+|BvB1Dt.]p"=-uf?VɵW5Dܵ 4s?$dnrgf6ǧǒ! -|=0TuH -ã&>B1{'oTpٓVbӜQ=gy)S4|٭RNI3w re> g+iъ deȐ0wPzA*!MH2TV\MD8 tTZdMB-)9~M~a]́4)P8&P=>@gvu =3U:К L^8/ e{ z/MWNM.`UkH 9o|p4R_'Do2Ar l~>?БΉ4xqD0.?;c#JUq\MO]þ@2PR}E54q~ԈvHvx]uK4!#g$ۨIQcȴ_&Nm 4WJC09ӎK{FT+bS 혜 tku^nnf՘,=>@O2wquާ2Y/+CK KT S < h+sl1EtP'0Y 2)g01&}kWaBj15p^ 'S`%/:Jv(Mӆ5aC_*aJT$59ףo jK&6e7Ч*Uo!XxMV7[Uo8`l UAC?{^ԩ~3{yaâ{{fOVs\ü~ Cmiˣ )^Tu5 "C61#iT’?C&6gDa8\^ ]A+o43'|6z G PټO.fbH麪iriN4RIZ$'vrOvPno %U%nܐ G x>lb>Lu[G[ҧtnr@̣Lda}@:$tCop{gAjI}J.gfAh( &\mCfoXq~Zؿ`o;~5KJL?D K\=L\)N^Y2JF׈6NȕQ \]O!=%*g# nϚ0+C yuQϐ>ď Xb)}CM\Lel6v־#-f2Cc 뭳?G }Lu~g^'v\8At6fjȲc`i0e w=m55Q|n_tb d<[%4L `ܟtj2~{s2gw<$MM<˶cGxA[Zf= 2@sD~w:P5 Ȗ1nrQ&|HThK07Az7Iu)dvT\!8+AǠ!|B_2 hk2uwKpveZOg#%i#̳A䗻^\źC>&&f"c/91:eڲց SӄWXhhu0IYW[0'`X+4!_\ɂ}ȜT(eK0?-'i58juTW "4:vy QB'o׹3Yݩwמehv#O Fʋ7SxW{xE)쯰XKa % ˶-,PO[,8\-,+`0ȇ«:&D{ J4( E(}9TKk)_aac\8fV"T*Η~Gܜ{e>2dro%MdRC`(^3q5|_Ua}#*cDh=T`B6k)4U7)$9zm^ {p"ra5$p %^uE 8d$٬K+6VĀB@x˰eWnbl~7qHĕ7i+J9,}v]‰_|̶0!`ɹ#4=;ϻG4Lp4jZAsb;@.gJҏx"W"PY`yn4CJ*sLzPN9ZhD8{\xr6ơ0m|]7 [5M 43Z}NlGf/2eS5N?Z?hmzM^70H0H%&)쑣¡I$l1wl8a,I *뚮슩Q&5ʛs .lߗ@lE/Y?ې\ U9j]8)l!+,f@r׿pD/8muC~\􋽪OɟG$n˼sJH:-qfiSQ 8̑4vYi >QabUƹ0¥os"M@h(4K |p2yo QiUlߜƣz{,Qb3d008s\P6M?k P~=}n˜R>\%ԸemI^>T1/Ag6u[Q]Z֭=ϣl+:s3Q J31 R*vT rX@hfBlLVGrJCAl3&TH.`'\m7rCB^k^˘‘"fLzTBƾFKJ@?B̛Wq~2u7| $c0QXz[Ak'7Gh " Da e,qʱ1Pڍ0Dnh~o$Evfr16h=2}18 n? "HSDe2o2jf6X(fkoGo2U_'uʘDFtTq]j4!> ,F\K3DmQ$-Y5K|!lQ7ȕԡ&A9|}{24EC}>8$0]/Ex$iozSָҷYoEQ(hi\6k / VkƩĽ"纐~.f z1#ո>I~P$v͎ۻ$6 [ff:k!$8OтW (s0N T?r ?QQ{ %ő\xj:!%j(\sEi31,$sz ?D`h?u!v v6k`HX0b9Nw%7PpG b HKar D|f@[cѓ1/3n.BL~H.(T 3 ~םh4E?)ReI=#+z0üY7E-ϟ {"ójM;0XQO!\ 0VPأjL`-v /+Zr)zh_bBdF:]cccG 3-ƙ/¿2HسLDėc6qzMKS ˑli$ 3+y<@45a"+7 \VK#֖AîL 7`¤Y̻t/4mEnnlɃobf_R50(`c֏Ҷ!il|SHv{ 8~;GWNjj.`sU$]b 8v:cQѨ\9Q1$,ҏ iBl><1 l1 Gn,Jvْ$Wo8CgpBK/qU>x΁lguN 6KXLSBXEI ۥW`6rLw^zpBx-Ow_y+UYqJdKNw׶WWebgaV]6cA4C k~7('<3{Sg؆-Wg2#icS En& B"FmY\Ƚ0[2N)?핰; ޚ98-_xW3V)$Buz(&c?OV8==fl-LXOq,"pD낍\e;)7-4*³+mhJ4X,&Nw4$!\ M5n2[GĿk3xw^s L;aHF͂x}}Fn# \ӎmYZ'&hZM d. S*ӢxʼnwE.LQfrgAS~%^? (!$_BL*G1DagwZHhz 8-Ď $k~Hwe q'qTT\J N3n9?%/Xq(@E :jAYP=Jkݼ 2Ic"0i>pC3%NmS^53 :).|!u$ @Bhnq"m  B&j2B6%j1 ֊lf0,'hDϘRv粀rвHuHH2pҽP!^LBb#u&6?װC$ hx.Yrd*`؄^5G$24Io.[G$^yI]E8W˼eIqw|2o"/lܖ|ON1%hF;䓻J6.`gh`Bgf xLȟ_zV(v+7;<1!(dΔuߋYbd'&fRgW04[ Roj2y1΋[aձY3#n8v}~T)e@|>`8,j=2ty^6p.`}?﯋9SŘJ9BS[L[e` ~<v0`}ai~aTP-.Ѷ"M~Yb-mhFdz :d]Ĕnc0T/qS$K?g; |b'ɿkiup OznRuyLϳEƹ@P6W3ݼ9q0#9r<0*:3NL/Gpi}N@*z}V5nB X eOә)P^-V)fJwx7+O??6 v/'dg_ B{nL\ݭE Gg{r y={*M?`E 0`i+Ff;I v9?Û[_?t?xńBYN7}&34vEP? hxŁu TFSI2YGH h .&Gqfgd ~TfP1.h +N R]hy;*RTpe Ǡ|C5ݖ%!vQpHΒa0)dijK|Qwo6\Z|mUګa/-@Uiz#Bު\*/fs E(c$p]# oG6%ݹYo)Pv wCE8 J%u Au)Ȳ UR~Gsk7t_Tȿ+0#ŵP{׸$Ӑbl*H%toYfm?(1^O렏ؚ5J@50c) @|Wi^^st+xy3TsvJ+  Eٍot3&gyt)lIBm_pu;6W+y +$Xpr7'i{A rFi_")l期inXp;u̳jc8>\R6Z vjio$vmsNJ!s5`cCp?>ڄ rC,[/_rUVt`rJ|*dDƠ/覼XAx/f&n>eB+Gi{-ry/V0nIVԧot.CR: ~ൠH''rr (p~S3dKFK+ 2lH!>jo[?C[9!h?*j~]g + 'S O~ψ؏m0 Et/PiI߻B-wN6_i'}b`5Th0$8e!Uu%B6"FԲV7p+f"dO"!9X#U!pc썤eϯNH~Kx7#ȶR T^;iQF_  ?oĞ"1X.f `0vW_7B_G/ | *_GR yE$Y #[g\J<M3Lep9nxMM{c ^pPN^ BrǠ >g}[è Z' ;7k9䖾p{85 (o$O)Ἥdl4gTXK!]vysN<6)%$yd?#15FM (sPkzw 3I+#< p VQm=: OD$ޣxV84 T"M9,$ؐcud-xIDIn*[vߜO ZbX#=Ɋ5ylH \5fˍm{gC&B3/̅N|Ե:-S` PG5.k0"zD(&eZFj7@c֙C·Jpb}^ ?h4o"x.ܟaapіvt 0ؿ)A@n[i<@BES uʛܔ }]Jg$.JJT^\bQ~G84zeh QXLjx˯L7Ez\d')I| rv'zmD<&aԂ@vzOEpw{B;j~!>g$UEÃG>[Ѵ|KrS6jl\2F1W<}Z]_/Bɟ,Wr?kK+@6xd&Xb/޼O?{Nx4v@ALZ>C 6[-!N^k$i@Ȑ fK.|22~Hb$p{Fx\s=,Oc{_qzKU$ JA\d?gWp.(zG2V7e*}!EMZ^Et= FULD(mvq&_EXe :ks* vm Uux@͟m=AMS3!مc´g1l]@\~6|SM]Jwn0 Ic S>? fu39.`81aƇJlA=_~43Kx^;#)R;C ͍T@k,uWuc*ɕy{x Qהŗ[l[N MEWUqVyB iS.׎M ;=Gd_A:R(dp/P/M%>f A~بy;Oxf9G)>ka+@Hw A,*;FGΤ.IgImsokñbTY-\q'#bϒ0cEjw s,!Q r% 1\9.fBv>ѪEhQ(FLo>k8~1[aY .H(sT6V-h7 aYd?%J0vX Q+hQ"A `cLMFbY+[px\١sbMPH0);F\Q>x`' 4qx-5zvJ@d.Iq6yCr*nTf 4A)G(s~Fvm2qѪ۳-0"/>˹o3 # ix"1 S-(ύ~X0x/u8uZEcG= l-sef9C6 {7uΞwL]2Hiqt|HN-\"i.܄ta& +DžX[V~q]jVG֐t3rEhՠ1k[d`׎J6P VQW i{(8"ж),2՞3a-w-$C8}\ҁq.r\}jF':\v_?{y 75O1]֩ _KXw5y[ NG,Tp7W4ޡoovT ) MT}"}JݍB ܠIPRbm]] ӢR^vfBku <;O) ZKZ+|5qHPW黲I/wp7 Xu B@|?읃\)8|ϬE06?$;iUK# y[V~װ^O@ ҭD{ ׳*5qT䫷sWz#ZQ GZy-j{H4(fS̎ \tUD(J` Znvތ.4~YĈʓ!?|t ;q=q!~^NTNms/d7>^}'z6w \7/L;74v%yV% 06 =mCA;9<2e8Hs r];ʏo "4#ro)2M 3 "Az\h<8ŭ 9&tpGZEClK{dχƍڰLzrS@ C"4N8EAZG#sh3tY3SLk|JfXYEiqXϗZI@( +# o)ܼrrPi[ā600%[6Gt+n;iic˧Pmm22M 'SGx$[ *g #֠<P#zLmY蝁 9 S]j[vŋNV6tjguVb<E1w~Vr)FfR `={VŚ?a`X?+3C>sFT$ќrXx;c~FD 4C sd(er DD(EQΎګxY#jhaͱ#;+}䋙5=l9P9,#~dJ 2ih9:dlc0ڗMN㥏 dO>IMu`=J $] S/_-4iN{i/eǴaY@T-!=%G0x f~Uc"Ȋq huz/.뻣KGpN|;USn>P-Ѓ!0%W.QRab&[kGFMH$JMKDY빾̓Ъ S}o/VB. ) ˳,63w D⒬ > pCxOe@.4= I)}]5l v- PĤ1Am,`!{r94y;< 7xx@MHvP@' xxk*d_䗻-ne$=fRO1sxatDM+P 3B.ҷ 0;~K޾'QeYzd=ɦuyc%~WKQO"8K#B*;k5]aRp! )HSE4T!]*͉#]-߇ GHKr" ,W!Ţl 관*[6 "nhUB}gQԬ 0kC!Z;[D<AYEz?ӥ Q·AZ`̛??{{P챸}nV#DNм49\1ncr@1"ɰ윆eu!sw6s;"1^wQh |pL>#AۘUcǖ4_C=5̓25jd (FڪlY6L[ٰm&8iv!44Th1|Qt"%)it %K练Ѓ/1qȻ LcdkM0gCcvŴ<=kѺ4[Gqb?Hl@JDyKj`#!yLV^d-s)U˸§k( y@(EF^WYB$hU:9ÝhĬT<5>(AVvtU_HoUwgWiI7Pp87'ݏyX?idg~tO<&L-4J7̒~d/Dt%t睠Qe꥙y }'[%y$mPOmnBT}{9G L-EI8PTrᗡGy<]0Z6m FjD Z]b/vGsPy@zy]k bY4+RiQܚ".yN[/—YzY,UrkK ̃E-?Iݫ["kj(f0='C-pO8{a xEq ^hc[PmK+/\PT6pS+ ٝE"z=q- ݀K%%>(55%AEHG~yۋwOڲ}M}3DTByn*[l&B^PAp΂_f!49R6~ӅੂxX|̒4NDLNJ dah=DU hCԬ?@;$'-J=1/yb[O*ӭ/wݭ8(qUWH~Ip<r1 1+YHbhK @Gt^WGe&iM٦ bmO9 1j"z+rFyߵx+NJ0@XRj$`LŒUʸނUvI1:7\^ɲ2DAZ> WaqVvz~*Y*lFK0G5$ˮ!U\C5/tPneގׯ?B}x>æ'϶V)GQX S o\,^f*\Oo@4@/(5ù~e2-JbSom#?CƆ+,H^Vqh+6qղc3D:~Ydkݾ(残IJ|n#;*56>k@7B[9IY.~(kT$V5yeIˠk 4Z{NG {~9^3dyPl?-klG.9*3nH>=%YF#V];MZa#~Yvt23a.Lq:#W֙l,QWtRu_ab!E bcj jc篙XHPm߽հMqtwf"G)z#kUZD Đ5E &oF3s=͸~SP1jeo<fl/x)nWY\گxW51֠ R2 QgiD:d}tq, {GJj0T%ۋ۱1|tb07ᄋE0EuUrOz1ސ}Co)t#XpӕN| $pC[\klP:x(Xnb(ƾYvEO][7_eX Be5޽$I 1x$=>'6*ˏuʘVrHb5ь axHQ ~g[c3αfp@S֏FB/9zJs]] 0~`{D9Cxpp=9<ߟ/0R\\H2aX.<ÔU-fgt]M QS^mb5pyfpm&!.R%ړ~Ci w7쓸 Od|\<ØO v*@&~;kDk/- *?V(F2df wEY6[_E4f7j~PŃ uLr7JSE[;uP-)X/zEw$tj{ m? p~W@;~.cW8׾ϖgY3èrVY.RkYe{ W4~O[7WX"҆3[+=Z cy g8[FuōL)-ҹ*b).1sCA~WGm!-cuMXzdH;hgySH8Ox_0.P%ӲڞG3z5N&j|x!ªݴO_:CVS F"5="wPT V7@@P;gX:jR|IL9eFM5ٍq<]Iq Q)ЛV_KtE Eeɟ&_3\ Xc_Z.3U<5%8djo{59 /03.m`('[[s0:52*(\㧓2r/Ġ'[0oK;UyIM(I/Id2vE)4@Rw!>hXM$ =d.Dfڵ8Ur.}K>m9F\̂sRo. [Zq K[\T9ڪ:#{|wտ7Cr$)so'%Tp/f%#^\v<ViUNKTN/[6إxD_68jki}mQdCϭ$dBÉPG +H@]ȼeT$dqCOv'N=wu7b?R h"hVJά&5xp0Kt/L<,@92) LV>d4P4 ~fL3,~'.*.%zԏE{V ƪL %L4-> 3p+鞷TO4[UL)H҅m[j>Fu( ǔyzT)uU JR;)=P8Yru*}LӺ^ j@佗fB׽o&z~ocƓ :C{u_Ê&s܍PPe*;M ʇY=q|,N ˔k )RjYS#B_O %9|Z#.T|<C2$ Lr`+w$)j3KX̫h3hO&+sWvhylÄuMЉ0`m|<[ښW0BJE֣NZMi<Ч2}NaF~Hj^cE1ZD{K_f@&)"hM`>lMř T_hh\4rZy7[Vyf$&GGQ,gpQ0 %L%=~[邍6+QIZo s%([=;S+cHRAqKRj`/JC$#3~3j996wݯnLMH4dߩq!6LK$޺{Tuj,IJ 7mov|9(h2it!yiWtSxԱԗ?4t cU :یŋgxE.;YACyĐ]R49 [5rQeX#7N&i5~LHnuSa?[O/PGi*I&UnJ&E5-rGQT~?wǯ%:lXqfQEU+wryX)l" )ɗ V,*|Đʬ0PM_"#mf`){AP0TyiZU%ӑ*/87T$C򒫀-덆~ 7[,%uσ΀m'܅(z'O,vMЏumӶOkrG(F%kB^ RbB76zRzR;nXhIgwd.R>{[GUi?#PvǖDa) Ϧ}>xM`qNk9`@5^kUPViYH۾D|&/S(to F*p8KUcLM`brY:2jlnMsM*(yo~;A%qCgc-E /͒7&;sZ瑶sу;#ZI fDK u}Esv,gIgŹu٧ aHI#s*nI`49RSuy; ˃욜ĵ0$< Z/+$Ѷh'UY_C/1`=@U$}@Gi`UmIivcJI"D7'w1L`d^EH~O1>m%)xKh dhxOT34b[aa)ߓ +/;Usny6GF# B{[۱Fż vԣ g6le*π#DY,oyXͻLQI缤[.Y? dKq8ij]Ji=HJdoXA1&4$H·ы׻dK#7 J[Fd JRBgS~z3༶F aczl.o`0|ޞC0kA.hk5 #-,a7'>z6ôaԷWh`D6FzeR?.hg l O7} Ya=c_czc=GkuOV ׈>}lg?xjGbIl(}8֢:1|-(7] &5P \Db;&X`́bfR1?Ә_[~);)ZvjUDokD'51DP|'nq7dKXB0RmSIh̐S+9t`z볣7V]Wљ$68g&Ҋ@?*2xVeP߭BC,M0%#褹rj+KsR n,{+pNa=Ck9aB_$;Աgfؽ;tn#S1, yQS/p G14]S0~f,Kt6Mawݶ!JKz|Sy] %1b.5db~Kj74C(QwLs=n)Iʁ5N.崌pz%/srpښ%~hw-RVI(R7ҼroR rT,_R/7$Lȸ)7y p <_$l|:O9o^ YMg~RUE NȊZLWJs$ay㦮$9-ion^Qn}1[^-q7ӭ[jD= (%^zA5F+<ӠViiE <^%9nQ@y)kp:eӊ#+0`PVX+;s~d" ; ƁM'<=Ś8|͌ Fh|$#Vr.Bw |bˉYم}0CgXHwEHiԟoXq:#($a'i'%m:< OeЉn UʵsB|rV⩹%r!<$'|Uކ2/WN8(^Wo&DH3qnCeWnhp˓LK4 y3h-k:\.V7g 3GTx A &1j$Q)9wvs)aaRJs4me,؀Oy7>X_ѤU|N~T/%Rh>{K"r㖽%eZfQn:|gLqS.J,Ab/Πcu ݯ(aє4%o/==X" ,]\ )Lvo愛ďJ"nm4}?r^e=ծ$Hz8 2t>i=bIdp(kk/xKPi ϛ#]IL$1ߑ6 T_g8nUb2I&?IآTp rko1mLs/ǏI՛Z[1"JEdW){F}'vw/eh}ͺ̐& ZjT :QXj3$EQ&b ,E2d#Jރ]k$}#bݽ=U  k0M/&Ba&9õӯõjED Re.꫘9X+ xuי5]{B+p/7:1PcDTAA1?r ˌ 8-{ȼG}OGe16McQq;rPbizZώj'$dp\bmb i;U4cR~8־y[өZлTFNӽl/2Z+`;ͤŵG~ 5*UюҐb=g42kfNȧi,J*Z:%PI[A|(,h >bke&.X6DL@Jh&Rb7Va7c !`hJj0/Mܧ6bCv\Uֲ =!Pa2[KUezlf0{?A_0eպ>,̬nxQӔe0*TthIm $M+zl-,+1j?K,)@ޅ}l AyGkeѐX쇧}t[zojaȱ@^Ӆ17}-AI(os"S]Էi(vBumcW#Iz_pTn⫶ѳy|MC>t'n~} @( Dg;?ܪT=Z|}(pܭZc_-GA']'(;ߙlǨ\u$" U J[~agR^CsZ͝{XԖ-ywW!nh5zMX2+3>`tj*PSD2YSNG^jbOoo\;$MwVdAc?@zpPZui ]i2ķfoӛ8{Qk٘(#2QlnWir{wJ%p0 J pED9U V zvw"AF\ c. ܲj * #hB̘b[5i0Vot7W a8vXLU2pu<4-t,wzIh+@,nfibZs]?ànbW2<;Us!WA"{RaӜT5;s&l)Š ,BIs%qb- K;-UNR5fE=LTTX䎿#}LƷ{ D)q|%>rt~] =zYh  a9z0#8q5vfW`2'OY9\QlpY>giOD綱ΫI?/x )=8+(ZQ[$gxB82YSs1DmKq'#>hzyr~3"'f>v##_:_g.II>;a6;:0?i$wOSڜ8!9%Zܖp(jq{:2wcW1(.|Kn FH!?OA.lj`FxdM()l&sZtC%{VMuG&Z2Ƈ^٠!e޽7>. ` RV׊C e^A%in4%˗RsBl♢cW!+ Y \óX Q7[##<e [\"GjUs5|_Em+Bk]|5WP8N#)X1v?$Ys MA6'<єh~֝cS#b vUHPӀƙEςoDrΔk3 WQh7rmms?bR*/>" K aK?o/ 5x@δhI)[r sG™&AknD&Yi:-e0h0YGwNersTdTb4Y(&]${,|N15h76CoR#7tG/ySTu[?b?uU"趈wZBu9KDxiNAR8k܎sڑ@زuB9a:"$Sh,ÌDJw`~uTvQ' x!J кO[nG/8O3uRH w_@;NſNK5KѺ,XA[Fxa00LOwݮ^n=UWP̽ D/B[ҀN iݗvB@vy+XzC‹ʯ9wҰQ(NR1uϱ_F^9<{EFS گOs-[ ^"l/C%ÝZ9Q6TU4Fǂ4E%q<4zҍA[?ZjS`*ԺdV l#%RD,Oa _Duo1`h0ѵFF\vkz0[>{ҼդY#g  ќ%ԭ^de~% Oc<@&t3<`_.*R4e;Yrn8 :tWu%MQ[$p>}Z|y赔˲<|]Bw3bK낯/RL9Ք} ^pUJvH%M ]3^Auu=NڍzO++k7b}'€ǹ9w)F1[M}t?VÌE%s]Fxsɀ4pt>td%f߸C@j"f ;61 b5ց^Yم,bC ߋΝ(<4ʜ,VWٟ!ČNذTZ̷| &jrFU+pe k5[ ]jOP~#J0\B3Gox.)N @t>9n݊pPi{RfA-S76=cDOJ#c:=d,SN|[T$!h/)N,nNdśo)4UW2h@ 9ש#V.0NV<7rƔz]z qH_Mu;QVr =)Q.:*cjk͏_rbF nn<@Ebgb۸7!«ag`p"5*$UCfC@@M3AZzA_$,} hz&[w?ʱf׌+yɛz3ZkPr߶jk7x%x55׽8P70fM$. ]UH*  9ze= ˉ:Qk}W.=dÍ38]$Z SQo1K*69*=jY욕*^[05݂6g*M@zi0GɈp1Dc\xyb8>VVk&u{C#25 h{RΏ:POx8%Ms"bVLk`.azC/mB+qLH}m|g4~TY| ${* R! VI?.+.raιT+oʛovƧehn8Ɓ !Ta"|h;ժ{u%)%']HJ "z?S&[n9);`[Rg0Q"MCX󚪼3ul֒1J G-b;a;sN))&6`e9c,M  'Y0E.qXˇT zX2!¹+J2 I SP΅_C4A~*c$/nʋC(yg'K8 hW3/XKU-w7|p%iyWI:ZZhpF18{o̊>L{T$ob,~ pzd_ٴ.#<f*l' JGmv]NB(%u=KdģE>WΥ9p}c pv(u6#+M?Fo-Y!}-Wz itM-G!-7~[BZI~@H{`dec qZrW\ZZb8*c`k9V;g4!MB׵b فy_O[E8҇\=0k#JըYZ 9187 ȼYa{85?H1떈NK(5y]dh6[3c.< M١P]E>?;\iЉ}5&kfr=MORgNL/k~,SOÛIH\`<v̩Ţ/'yfVLkqPS0_$8ǮKPhl7Ui{-)s@&ШϵAR>YUQM|\ S]ސzZnL]*prk:ᖂRA)H D &VFT<^j.35sۼ=nxH6@P7_4r6B '6tDg ]Q{Y#IRtCSh}[#"9u|V Gex2ܠ64)R>IPX6MA7.n䎏gt-7H+iO 2Y]K~0Bs:t? /0 zz]Bf[u}0yI4"8AV _]Fa#Ug"kEGYL" -Č,Y9Au܀hsc:3̤835N, _#4pk3aKjٓj V/{Ӭ0&x1M5AHĞ)o#SY)62L/:y :F5þRoq}a!݈Kw$6!.-2ʮV,2L9d;@4MkR GxTE]*"bl^\UMyag~,7ur?&JW%~*92@='jz?KW=[ ߊ=x .v=Kˬ ȝ>"ҾZeA* s!9+ Pwv䇍hTƟAKɸ7,! &As ibŎPB9Hj)MQ' &: iB5 %, x.Z6)0͌T#9ʇS.aryPT[3<3vP^筻}s@cN%-WK(XC2ֵj]Pdب|SMtHnK.WmEq¸oBg@怼8~"x3F:j-p'¸UMqM{f@qb8%~V9o_qF.zlCc+afBT.;3:#?vތs(}.~B8EtīLT]%~]G,tx@#<аln_j_bh.D.+05:GıX(1F-Cdڜ0?j R/ /?w[ibD-y"8qQ&n+]z:^ O Wul7f}1JSMeoy LnU8X%xsΈ'9~^Tf%| F&vVr~BT&-Vc#GwK &[ky;j5mV|6fF /*Q$n$a 1pv Pk.Z2lGxM[_.DPzPxxN|Kj=|Tm8v.%Z+b]p#;]N-'⨌=aTHw/; 901]8*Ctl7댮Z v8ʼnB{3XN(Qm2}c%݃ه05'r8=G I5(v;'{JkRQMi3\Zx=q{J̖r!#l! o` P97f"z!\N,Ufr"Tq͓ ي,.P: G+Z%2K֋qe Gȧ*m#zBX3+r&KsRhXZkTKEH%<DY`8u!tݳ>d̎V'N I d#ɍ g=r qS'fJR(4ִw-Yy-Ht?Q\S`ʔ%9{ qɓNuQ^Ye}_A:9ɯSmGY3l%u{FXi\ 8fYK {]_˦ZHp 92(Z&&_m4uMڅ{l/Mh*t/|&|֙Л*7P_xNd+4:EfU`-7"ֻzrRsj +Hr![#56"?V%99' 'i^ qrdhrcI_rN=9 IXOgGpMm7.TODàtWo!TW 2 t`qǷ6#|0ěǩq(1jpv˱LD ~ $fo?3Šg_z})GthA&8+柷>ۋX&kޠB];O??R C, ;M77_mSʹ:#^(W @K,uMU4g)#y<^4 a[8l 8Ǹ]SƒCrɉoi2Zc60IW0ۊvudKzn\o S:aPjp7|bY{@%p!eM䋻jI|UmjrnR]B$T-98C*F&0Nޓp9 Zឩ(P99SI$AS:E\볭TzO-~j0%YXl"ē(:nQr]"k{*Ev!θ55Kvg̐,4„=d慡FD2›rܐ#bT@ƪ ^]ysFBxVϞ  tn\F=J=+TA]G>Y"놬Mb¬~^d5U/0% T q_: -{X'3b(R@p~s`mQ)kW6d3KםK}Cdf%M؆\n 锎F<[0Q@18X(]Gv~)۪Ka ӮI_mu]eF%r^A-@0[ cx!ٟTjTM>`VYUy~ae[+7Q'&IʷVPɊu I>k] 3wF,xN۩Lex?d a#P xY3d"*?VWS`F0<{ ԥjIz;\wޭELoNEb-n3P]&38'Jf=6ݨ_;N[.8nBN67Y @wR̒]\:gvPx6syAȆBQ֖unB903fx]i|$HD&"ImdGlt2>u\.=+ 1}̮h t@0&**$L[,^xI$dyqyIؽԈ)c!y:w@ִA$qd[/ЭNR{VQ hGUK2vܰۗHY2po K 1WiF M9.lo%'%Vz1#JWʔFQxʋ`/S 6~BUtf=4D[͢āГ>o#gU3YMjͩזA' }<5b&zi: Ņ*AҲQ tHo*|, 2m<<ā2ON0ibz ~ ҙBG6:%-Wh+hXO'+u;}+V˥*dOpB]Ysٵ0cpk(ib^X4>%~o^ .&ran tl# kh1`&͜7"B+Ȁ2cUt/6ůkx^bc;rԹu@(M}X"wrIoHn-G7)OY;4{Y;i׵Vp  J(^h29Cmi)w$E(Bv6RkOrZeWg|>*rӕDKED2x ;\[15 T_ZhU+Óq"Ƀ%h!ҧ/ Y`+300R$738G\;r+@<,؛{́lزRdb0ޕS*bn9LOўIzVN2%4>$WPL?uجD FD/lK4 ,JtEG9o5CW`z 1'ϝJT23vS` c-0wRK ](Y6z7EHQ]ӿ8`[ūI)e6P.O H+j;E1V9ҭI&zLލgad[ iFt ⤭QbVeEd}9BUnS%`,}@.[]<{2=*kf-ɡb+HZ_ԯc6)5"C<7`rq-taǟSRmN䏈 ECowG+ 3FBnspc#C6 O?-D'/'t  8u0H/8s>55IͩNw,.Jq~Ku?yE0(p<$dg*v5[=a/:SR&+<uQEֱ'Eh`~//$dޓ ?Ʋ ]Np.!1Ny/jK*~K|(?J_͡b;(>)?瘷U_StoQj4B8Obo$žh8yVPŦwp2"_y@@XB#H<(.).6EÚc߁}` oM TR&oEVcrs T++AG/#f!ۿso֛E,+A[:"=KiFBq-:Tߜ"@DQKNh!8Hpx1%-ǟIĦs)g#r'GwoްjW iIZS=m\:|R"E@WV8ˣ+Xb sTteUk#zSUiK誳\i5+ܭ+ސ*^1|HbZ'mu^skd [:]S c_N_z~wik'\,sk zm!lɗV`I] : :QXBpnWF%QGse$(ݗPӷ&֜n?1b5Xt%Ciz( ^=9JT[WE 2d%F-DWl 4S/\sg\A3M q=(!#Tbc:1?LMZS0mc1.a$&8۲ $ DB>.i+4܈H{ T隔Ќ=A5/u] M0MW8L ))_8i+*5[*KZxw1^(ZKq DWro*b]~ZTm$ + 514MXGVPu{՚b2Wx/+ FP)k{ &&lfyKYT9 ^w}Ǣt#kJP4~.7 L+I*yx/ `B`eSB&C6mDD +w 9V@RݩGE- 8$*.v_lYQ l,q $oK`"哤0@3_n#G{o4 7nO 0TS)XjQ(Cp+=ml &+bWa뀾roQL#;;#>J"՛m>-ya@<{#Cb" s;2ҳcKPDr޷Jb SX%^ C,\fDϕABY!Xw`sXVio=Gy.b {rnUSj*!a# <Q_S0Alz~r/ͺjfu" e}S13?7S(xYeCz#pG"Zp3P @k|:dž?[^fYtIӓj(j&zJp Gj>l0pʯ1sOvZ=+`f^[i~>fa aꏔST%,HI/Wj ]󆋏WU$jGRDG׈qroe]gď#B+fS#jmUTJjWr[;v6M"kt hnm{TnJ/>ˤiǓkgP}e"/3 4j`LWx msV%"*pW⽒g;Kr!׻Q@*L~ W.btŏsJ_gFOkv8quUbb[$˞|ef*ƛzF7{GFL` ^}HZRWNw>iBW'+xΤ^}\`^$]5DD 5ӆu\=CX c*4PQUH7Wi~%k[A`9̅g7N5cG3%ɏW&+lAU 68ZRaI3f~$E] xSd*fGK[+wq2,8}=ZPa^B~><mHOQQJwg9ЈgU|m^mw9~_K قlX'# jVt|^V%%?/;,OC0GrYo"z@TRsˢV{oy M}U&q@8(ͼ/赬%|kFߌneem>CWȑ#áʛ/3"%^H>mf\Bn SrGI~[w`uس8PlS-I^'.ojƙ{p)g Q|]}o6?0(x惴 ~ᘺ\˚o0b7QGAC&?yzB:^]:YgN(eS($G̅;FbtWE&.N1-.T*䝪1GV1V"}"M$w,;.[DSjTqM#_~Zu(%ךP]),̧{+z v9²I TN͍&Oͣ" !mžSd;CGy4t''Yv#{=~`H4d' `\SuX3\4cRz-0 iSZ6مpR[l&Pa4&\BT7V#ۣC9'> ܠ(\>@?e~xr8ch#4ن.C%k ІUh ֺj)&>jN $֐O<8,:Y7Ss;pqbGAh[=qҸ:Dի70("F,T>1Au ́h= fQ\6q4+lM%&Z[ˁy~z-pαʓ`)pDI %4:YvbcII쉔J2A$(mbsIV c43.nbx]P>ц(*.=NdcsO6%Yg}O&WǼÚt&LUmaYˠl"7 >ތe!*`э9(NUKݞ] 5R/ 3Xob`r|'cYh{8%\[{B _/T;gsT0ż |VSK$0]byvz%yLnrִ -nFf9OY'݈i&7JˮT>UD,PҍDEN OXϋ#G /dJ&'ʍbk՚Xw9`үU3/H݄-l6# @dSAA7]s$~xdb/79!.@+S㳹Ʋu8O`\;N$}MH8IwAHӏ厍8 Hw{Wҟ9uT$X6M6JF:LƳ(8)Us㗀I#}B4v`QYlR9.xU Dv7^l+lDa7ӖQLa(l_zSѲyXCJE+C/}9Go/;+ {"uf\L-I%q+s6,4[S\sAD(kڥrɤmՁkW*utS)j`JbYp/ PI У+I7=#=@qY c ],.!1rz*h(;RUڒIj Ow;o^Q9g;څ.+RfU ;kC.QPǠ)A,i|] ;uNr@K'%evڒ G/U(N? )^P).d5q/=I%bQ]Lдlk& <p4JEH@TX~2]•ՎAQ5zrnp_´hX-aLkMNB%YI*+Mi{:T* [Y=y!ʉ |χ)Y|H/5?7k~(Lca6$prRs0A$mUgV5BkR&_8]/0엽:v smv>*P'dYv]d,R#l>|^IGh!5 ¸mB/;q Z]kiT9a-=<0jٕD9. gی-~z2*Ooeq E s=.$69vb;z\y`/kus)iaI}[owK^zs'O uKr[> ?aK5+4e`Ɍ2ПJ C *" .Nz; %%BAiP8 ! "楣ї́`ƄU5['A~e4 ( &MYlf\I.an,g{^~XQk8s*w]aG lBVJ0L۵Ne7-NRB?r/|8'Ba=T|AgJ,6KFnf"aC5cvk|_I{?sk(0X߃ bT 36f3y8w;m_1Z7CR{tJ{, eL9#w]:c`G&`y)@6Qw1e74zWH\ [?ñL݀JTy.?ɡ<!z?f{&DY ZPL(vkȉ>\چƏsx?Ӛ$f6,Km<g޸ۍ˒h)*~ $W«l ,IHr׌ \ gH{ xpS.\aV;;E $Ztd 0oADDasfPH\Њ~#4¯ 1e:rK>T>|9۹U"vy%%j?(4vg ^v\XRhP҈nhVKGM. 0Wv" Ca]Y=dz؋]{6Kv >;$2x vyvFe ƃع=ߖăUH?MǵS5fYٱ9吤3cXϻ;l<뾅Œ/AЫd jy<1 62R9wTO*avOT/'$760+o̖ByC /RmCixx*sYdYa" RB&LQE6JjJKR'm `0w5+^&nOsmפc4llIRsSoAJCӼRLFFfn:v(/ ݂ɎD'}l&@-X~{$Š;u1 n 3}\aSNQ2ӶpX&^#q۰ f|RPNddFx>x%v$sLD Iጊms&w:g"UrlsG 8 1WK{fO*ˬ,)FPdj418T1kUyɕPiɊ6e(!/0? .n]ptjœ]'f {=NKzrf?o`I^Hu$^I%Jl$} ƫL6`p5^ۙN&RuCű=ڑ >KQU`=D;dڈؚKFBS H˨gO@S+L%B43͑E:[euzG<:NSTŒ|ШTcK%sSfOjrl\ J4W`GE1(a'H;  =9E,kSԈSj88HrUpr!Tп+j(5r'PB^7ɎE-fͅw?Q?Svjy|(猹 MͿ櫡c,voOIW;OyLjmԛ#Z0D:bd2^jgE4sz}L!T%"g0C bVhڛ32v$#dUE1Q`v?0KLɘ1~Eטx ] \oU;b'$Bt \HMnv] "&%s כ_1y6Mw mm?!kɻkКFi1LjqVVƣ+~_X5pm4}*IFFɵ!{?$E|f~cX%#~RauWU3R,V%6CQyHDP?5*u%qب&{}At%G${rxg3>4b]yz|N ֓=[ :.q``|Z˹DW))6U9 kMV̡j{x3e~h7voeqeO bU.俒%5Qp& W FoWHt%4Mv$8W=WҴU@ Gox3`\paG=#Z>6T Zt] b Lue'[#;oYh"/6njv3 PĠ{~f<44,dH蒭ai`~gc{4hAiVEkCnŽvh(&EdvM:G1kB=fn u?E #R2lΈL/;H-GSIhfZ8yho^1M{)sA5S#+dsxJJQU'$*::\S&E7ъVcw0L w0e%܄`.=Db C LN_DF\b{1ݎ消2eC@+>Ț|ņ9*~,58HCw0#=gri]w#>LI,up]WSv6t}֡U.6œ 1O$4 ]JϹGb|YD#Ӫ!rjqCe;YS6 9M B|a G)̈́n+0 !axIF殾ӥ_khS-߮fo 3aPХ8辰{v%TlTx>bꌨd&"r 뱘|HOfLn+S`jtD憋j"t5$E~1_zSC]Hdj:g^ag>r8:KN&). Gx97"?!ޏoZKa;Jn}Xw21B|֪y^$x$}S/!ĘݺVa6F)XH6E6Vpc NhI92<%/A)eGn`8 7 :vu{$yXO} v94C^\/nIo4IwhS6*2?=^DK0]!y2LvW5r 9ͽuG1U[s]'WJ"Otd,A&.s{Rp6Geɍc}"fJ@0ͷ$WMt5J,ynoCrs6-oU5-{#K {!!iTRzΚAFQ|2@yuEsK1$B=6ry\*UP>NͥZ'aN?r [PN":*Hl⡂XLٵRq, +qTO˓ ݺR.ˆcq߶`Ȧ WfUHpīxSkY'0U+K%TKCcY@af[}]kȚVFrNS“A?^ZKfiMߦ& Y =S ` [>cT%Y4dq`D]1)A,𗒳Yj3_鼙xRV c''/~츳bK=GZE1V| !{Jp'F'uX0,*a34n2a^0²$*T3BD$W`ѥf8{,̄( >:u)S9hYWJx<3c-JgIU+W9R,xWm(&IS,jc3 aSuvASR ](MT>bk!ACYs5yO9?Ռ¸qaA!:nVc}nQ%\4Sѝ8yEYe\ql~(- fA9WPM/}+Hm#H+30bbiڞ WNυu{YIU߆~{趹HکU6qjkvț#[>Jeʧ-U=*uv-Gf!4u!U)R_;_eGqp7]eJiA' 3JYL?yc(rh1J㱱 KA5림DDs}N1J /$ FVXc%+uLٞtnFT-UZAiñS2j %^G3_YR-zd-!UQn7(@"Nd5Q3xH13zGL%tp1$7*yBp6kjNrn_Z%#K *%/bY*X4+\#Y1,HDo̭X0.$g|ǣ0yvs8jKk -F*>oŭ?Uo=vȣmA7DA`1]#|]Vŭ8ƜP++J2 ƋR@rlނwC_б1zw{l5wD'BV&s,x̀GWOd6=hMh=@5-]N>q̥>_Bn~ 9CsE̠1>GQEڪ鐂k"u396}qgفnif!/vn1"2VZo _8.<n#|Q-r=NÜ$7Ut/eёI]# 14t lI#!Z"0VFPF?oӞWh+#:Dc:x7\Dq]Ծ,Pw,WYW!8Xzh/eDZ0r!Jp+f>d"~(5hSDKDۿ#O.ޚJ)5#u +Q$KˌsFXe'pʼnjqˈ$ZQCXehbp3'- _n}ͲB??d7<@ehɁ^+-e[V"<1 Bb2_̣>^(9Ώ-$DG{\篍8 {Ia*t T{qmvJxE\mw_(\_= pQ[>R<>WK )c$Foö;[ J#Z:cYԆ|ca_hM xd{]Fg\"} Zpoe!''F'hjg,6B<QlAuLыaa)FL)lgࡤQ tу>3z\g|`GN ղ)+ a1 my!H /%ՖPֆ&L?;vja6FBԸ Mwz~tמ#a20r[,Yo:ْ<l~CD1}GVW 1-j؇J6 6j~d4ӀTG`2Cr!:891y~V! Ba5 8Uj<ςߴ4EagORt{>APj7ʒ.9)b}jM2lֻ L缨r魽n8g{A 5lS'0 BHf&OpZ’ܬZ|̯̂=85 \DV؜LlQOՈYMMsVVIqWA^ȠQ }_D(uXPAw 8e&C% %eTG6ȀjKoM:0#@έKqz]S?]~K^'tPρuylllS[6ܚ4 Kn妈UB6"ĜOF6SN>Cw5/g8l(4]PEk avSwƚG/P#X!p؋z9Sİgx Nd1#P -݃mޞ+>གྷ1oP] _^]s{,c:gI(oD]Cun]"IACKVc ٻt[466upTjHKn@xCUX^cͰ$F/ pj7g[XF]5w9WXŒ^ePa ӁjT WOUĥiQxP[E݅ڢÊW/_u`1|й9#34a6Xfv ݨ7>.u%?7RgK0DE0 @t+<=;G=t0]aR)+RHiP?I \,}vMW';0b%g/$!z oG W׺H,fg [Z±.f tz%.$9:9Ir4:hSG@u\=Ʀ?OímljDz+rrGs Wᔠi!@M"pmBst.b(4K )o8 B*^6JL!ޡIf bA-BI[/C/rtX/8ƍ4s;\#8DqE^G؊:ǂN#t+zE$ HuUYg癘[ 2ςaЩP'gz8#doXtkm6!Z^[#<=iaC##q>< 9-l,\e_%!HSg#L[5Dk\Ff[r Z[ϧ*m oS2ZdǥAD2ϷЕ94[߆+5K̅r{1QD ŧ_Ot*Zl!9$C91NjZ_Rتg0s;Xb%0]2O[kc>"52TDdfwO@ʯ 'r&jQd160i6~m@YM$3&q D dQFw\`UH2M?qE5e`hc/OJl{̩kK=V:lmU.ᜇŽݓUD1Ǧ#XA24N;oǸgqyc2'p[{-NøP=4|kCjoAGZP&[o ZgY$D9yY+k1l A5AY]IH!/>VB3Cu9/SF`IY _:CX i ц6 m2#R4,k DdljL[LU74NxEb{a*FىwkRC9\4͢_ ;U콷<7y>SA+c_#ۜ޲yOnPZC(25VE$ΆŦF\=y"!٘ɜFf{if{_0& PP)Pw^B_Fw|[9fV=M_'yh8V>\A2Wgĸ \Eӂm峅mHc;q]ɈffCc y?__^L#bLSk,FYEԵdOAwX4eNGx] L~bCRLh>nQ9l2Xs_G줽8Eu뛓7s go 1_ZL,Sݸwa8NL,*ur)>\("o{ɔh Q{q8cPfƧ;U/Oag|+C6R[)^"j}=v;^) IL~C,?ڡ"-ϑp(-[\BԂSytJg#p/ùc|^Svr /$m8#dȼGnz>,jܩTqh[u_<9yzµ)ͫwԇ +%n팱k/Вd4O\&iU"?)}8E.Ge!tp|/tW;'L\3wD_.?CL:迠+-1.48܏5+5sen-GinŔ@cu|ÇN vAjW1vsTXGb-![ \7"%,F?wD`ԌYF8 htէ[)7Rg/O|39OVY^0G]CFc8L>[O_`o,:~6ʱ?XCkud/xjo5i F}QD>޽LTn ogI6sM$4R*T߃Ť>`>``}o@.|3gƨT1N6%is+`d\S,k){`o+9Jl!grWK4: b9S/Z?ZJSGl~'mPБOL71T?9,I}pӄIMČ$iK7|+&Z!qG+1[;MMVrXN)ۦTFK(IqV+-F\:hPUxڑWO~GI!::-<; Js`@WVb{붷-ob~\́gًRo!T|Pm-xhƁ7-VM2Z+.4ךn5[?ζ"瞑}bΚt! 0BQ%RQwo*5.1(=fk$*yG#&Xsnl _S4N/+-~ZpRT" B9SP$uH-g￐PQ:6 , 7,"ןK0YUlE?iH 0IsZ)ȭ aJe*R<kɊ_]rL -TA`S?+[Ov%[e9fnW\eW6oM T+Og;w3*! 3ݨEw M͹hM7CVo GR<<ŃBtZbbE3:W:3u\Q$w$֎diYt)n@cX&K]z TH8:b;7%/ļb VTHد(:ET$lp|]!mJLL]>!/*!(nֱC~ŅbZžJ0hW*[5^׶z }n avv9?+x ~Ft.E|t5,ˎoONTv}걹၀%q8.|011DžjRC\=>ŷB濃M}>3 `*|UG JrÈX AN gc.VNˏ8CMڈx])%fc(`.iYG&R'UtXk[ vAt]P#J[4.CWoibI2EL{(ǾyP<^׍HݠhYu:4 m*TcOs30j4yfahI~TX3r6^饁4bXdX}l y˒bbH_/v% pu|;"Y{Çnj%DR槟a +ҹ)-=B:= /D!}dF t#b=u@l-]+ȐݱZ0xsT&2l6-jF[ň?rqGՉBe:GMs 7a1k 4a uG\&JG8z|d5^Xš6ߍ3`q&0h$\1*Rc>]Һ}Uh7c`.ӖPvvXN.J,`* |F3-a,& ~4=!Z10’ݤwl,5E :Aܭ->q<ⰺ8?nDkgT<%< @eQUL\ [ݔz]?5* I.OaU&EY\@ `% ̐櫑O||CJ> CƘ]nKQ3 mzJ#;wO!ҕ viD!QZ=ۼyn(Ǥٵ qyTJ xY ֯CȊ~7.6:0Άʐ\ϼP*|ݽG;޼,Њ0@)~?LBb4G^zQVʍw\ڝַ dm8mVF׿>EF"DIsqY3kDR&6r ds8m^M3*ƈCtO[Mkm ȇd盻$U̺H3OC0/I= O<8"M[a\vʓq;t'۹O)G ߺv)=sHOe'MP4F'=ItYjqőYM" rD?i$C^I%Qk"./9.RJUg4YuYGY4WsCH 2gkk /c Վ$f9S{< B_[՟I4qt3anWHepӵ,Tɮإ5j$rsS,'g. ]pịƯGl}vq .AQ+yl A8aY_4 \ Mش~t#!|fJ~:UQw dTXT[%m^yERQ2{|ρN .X|;xw4gïpJTͼ6jW[gx)BO3m (zGjThk$/QyHgw3gfnM;SHDpYI˫1e$ q!I%~o2J?OƬI$>jq0f槍y fr{ h$8o\K^5p̐b奭y ϖg\)j6 ߲ %/7VAmֲ BY\6#eYv/$f8dL7S1JO$W#N+1=]fMt[&#g81 ӀB#_ 5Y9{N\x`"'1RFhADPN^ń҅c&?YwM!(L1gXamCȘ{ t;ȱ;Vܲe1pT*q'9,v>03{o#mS6fA,G93P7 Nk~k?iB p=L\l^> ŜS:#|{bMb|S{}E p!X70d04-b[ BdG&#oF\lkW#uSq%1 "nlxp)j%./O@?VӀxSD;"yX9d;8V=yx7^瘲ʲržlvWt?~)-hU6*J l]Z` _HH̩։*r(NSz}$˯LLĮ# 8J߬Y~B7SXy Y??vQYxyϷgL+ziVqKi29M?jYXoDnN`d$3 i0}#4-GMmb׼07O}jA#B@G0C`4"b.K7]$?P}@W9q/"{ݩ^mĹD.rFhtXFXϪGfswrL jlwC+=!M_9dB$ؿ&FB;j{F}p'nǍBbe`95gJm$ec[2yn'R$Ʀ-۟^u_\2OZl^ZzdraVȤʩ`!~jQ+qnh='AAIl1b#zroohT<>gFIf*@ -}Rcn[C6۽݅?bS@cUy_ yԑ'DI7@oNTpj}ׯvV~8,c:>Zj Vo^BAmh;3шFTFs֊bޏNHkɏ[otg#sFDzF\z.0X3;Y46i}6Y42u)/Q5^3`8.DuBTm <ΐ*^ ]LHPPŵwՀId) fbo c6x$ вf/'`TJxmAEB߲GWN Asǜr/$Q!u6|٭Ϫk .Ѱ0{{za`0hAX,nI룉{b\5>~mС/h hnȮ3RM (W\5b(#Fmq!\=W gdoG L֢IbZߩ&W%MyL?T04huҭ :M4Pha~ zg@iBO/RkRC09w2;)gxx >GN2eҙDy~_xU]M$U5F0&xⴢH U(8Z@ X)(]4}2Bkf T|_GT0"3sV-uӴ$ -8~-0A/8//D확7]T0'7M`&~cP#{CCmocM$!oRjQλLnȃ0: OTies]*";mZ+@sb{ iMPw<-]{dK,7RN5{*k X"H<&ؕqܹerE nBw )BE[%^73X$?#?oiqr&KUfdjsMn{i8\(JUgHn 4H.i?oZ7Vdխ yIz 䘀5H0pTmS2"qHOPƅdhɴPE &TDr4Gcl3Ԅ4{]O4\ YMGfq Q;yJS7]mѲ,`;wDD[ZTxx@y\"zG02@Ak\Hk HC)ӕ~`l'ݩMQNQРONZAKj@2DU|BaXc}֨é,v]ko>-oWO {sF1r[cs ުY@>SZ4ެc\ώ.|Y:0 1ѓ~#J 2~tv ]Sl-*e𾃐*Tls[[6pZ֩S#vȒz,g^]2/Hd7zm54!e;Lu=)޵ 4D{Bߝ*gvIgbK mľppsiچA7d;Ʒ%d-A[Tń!lL*4 ~r3IKEȱsOђ%!m(/# 3YVX^#hbtln Vu"j Tl, Unu̻?`%3?J_B"x*5nT [U/M$1K7QtAK`,g>|'JMG?6%g +ogB^hR0wlXS8k5̦̱0N/(/.tB2) ^t'-r {3K+NR ? g$;}Ch1_+.%>'hCqE2ִXN,? tF{$% A4gCHk>[aڅ3 +qwc,- )DD_ Qr.hAw:r Naw`' >{/|"&ȓ=RnPrC[!͜JLY,{۠;C`3(~† @dꉂST T)9$1wICP3-dAN--A^saۂkׯ>5QO3ƻ, 2ZﭫyaF(dԭps[67-. ??Cr_nOd).;&@*_CL|fJǡ6 _dYk"Yxp7$ f9@2+v~!A/NlkpfN )3.N^7uw0N V$td%wKӾt?|]> c 4^P3FUm-^LB њ+ ;AvѲE@&2wI .u+uqqUMs~ ÷i^8+")k8 %>G0ᬵ1ӂyM/Bœ_{)fC/h pV%<^v[ת2~ HF a 4\5 o+@U {Qݧd_gyY}'-ϕ6 Nq);8RFZr]3qb61EcjX=у-P3iכH>f1И+{?`򴩘Gz<]W(jc`h)2o^*iz̬. r?>v$.`{ԶaUJ' ab Oj&45#9jj}֔/#M ɣ#j@xMbΙT\öeQf۞ʰ3@1+%VQFPR,OɊ?'?Ҿ~0M$m\dh¬B6`V֌5-kq1Zk}qbLL‡V3zӟi/4q'J5ݓO[Ff3VR8_M1351$DbУ㜶e]c&R=4GUJ\[n=(wPmI ^CϜE+z"BP >j E$3] h3wSc8wd(rti]` CSV.x>Oܮʕ!*"w+71&Y ҇Fӿ^f~qn?Tr410̶hM52$"]]yC&+kÎ zPvݴ}]uŸŝv7%&+sx7۝shޠd*Ŋ!1%`߮-AEcO0ќi΄>(ʟZbHaރ 8C~lʪxxG0ZH!%Z}kH^aX7/sh ,oԳd6T}jʙNf?"?*z3MxlSECY/L{T{YљPG 9hHlדM3イ/avmm틳\BQt{ON$Xɻ0kl$l3(+̈Kz#=E";lr|Ǣ3Κ䞠Ne*jJ ):w&Du cdΏ'\5uʱCQ3iDf4 NuЌ7LoB,wj={˜;8a+NOU`tLu1 )c$tAs_0?͏pm跃}fp-47}i2Q) -m !s^dljTnm& `RACڕ7r~w$w=_r4(pg'/ 3|G."Je&na9qh2H^'TIJ4QFI2}_=28\8L^@FbS3̆oebFDN4ՈNL<俪U; x \j%}1BEAy̹,I8S;B'&;"ZFU`6EǝW+>U4 Ji9;٫;=SĤ&ǭۙY{I꟎+.4{6*UdOAyI=7RBg*>>g[i@*=5ZOg;a٬x7 GKJ69YtsP(=Idr@"N8% f;츱gP8Lփ3KMq=9}[׻Y[S:0b&ƾPYJxffmzʵʁ_I_'պRy@A:ɑ  jZ1VQVh{ Υ2Bܻuf'a'&}%f#=^ܝ,lY\}$稨;E#[u#go )O###9CogR< t[U!lh򖸕/֙]ڧ\vaG}5q֛$9B.ʒ s}|Ot ˹283ʠ{9L7*j"-ћ}-yL 92cHjؐӺڡ*(9pff^ۏ8oʙ`z"gpxl'_1ȵhXSmDeA¤GYu'aE\h.n|+5qjM(WIr*WpSgd\j-F)qxt&KDmשĔe *(3<6g+]J~RҞ=er]blm1@iCmWX3-M*(u_g*7d# ._s/zbx6vH=,gn]e x<$\K]"{4twH PMN;[@R fIO1C7I?Y+!4dOW7e+>~JZIzNXXJVSzH73)KfvU;x{Us6]s $9VCF29XwKw3q!! ,02"2LrG1s _͖Za@u[Xjqirxc&e4uEnY8 9Sʥ2u“)OH4>LW<@߮dC|f,\FѯjPImژ ",3a򰁣?ʪk_}c8i8*lB8\._̗$ο:;hl|ԳBImYg+==쮫(|" 䞃{QIcX(l.MjUE ϊԬ{fht%[X;Pk[4\On!0*PtTITԗġufGm+Jqbt m{u, H%䵵a&,7{Ys+͛[A!cֽb亦\<7غy) ƍCd*p+>)2~[\{#0Ƣ؏BuhET;@U64P!,NҌN-mt:I3ǔ(%(Է4/lY05Z\Zt,y ۼb::^'L_7!lh{Wc@*"NU°D9f5vBdzi`>y dk銅>p=3غ&)Ffy+OV'|!698^Tg`Nѳh $,\yJՓ<̊4f rL'Տ-';7"=%#EGgAR&d.lO"඄B' TV14uQMjnjQvB/H1?딡<7eL꨿%J\Ctcd;g?.4EV`N ;`\M'lCۣ姷$6,b^̉1 1CPdtt"WE-$a!éZ?_/gzԄ` ׻y_eD pߥ9&BW̳u}rA9o7 U6sTPROud۫7Ude!pq @H=5œÆ0B|]djgĆqM+JXM ;h4"ֱ%D8#?%^ O7mJ. 7}Y/eTZrƲH5AVTMt] CM$dY>sF|.rjGl&Fco n gf 0#.NVSӀ2KȞÈ:PJlkKz#56QY H tmrۋ$ЦJC r0Gp%j&z?öm+EpAVOd똷\"'2^ =7!f1Z--nְ*9]C$b\(Ø;ɰ&{@cӨ"c¯IM)ƓS)ej oϵ(<sӹFB xLUmτu! L6:N H9O4a~tngߙ%xGgk,5.EMOU-Z{D.6Tiwk'⊰)ˆeS#vCkT,n!iv0]vE6F;$~Ʉ\p%wf6M۴Bt¹{goO+Vy%I?!w`$DJtЊfvӨX[f$i?Aӣ, *`VOhj'%'M|4]\Tj͗ [u)F^[3Ui Spx9hMSG[zGvY%{ȓTH=3$V ,E'c{V / Ji"L75} "r NÜt `zWZڲOi"!UILځQC1,&}2~zJlux 2q}Uw'4߶j3VGI@rOn@5vJ[r_Ѐl+O@5TVl̰Tƺ+g&vk1t^reK@h7/ʼn@c;󣮫jo/9q\oXWjJa+*C*? \F&m IfqdUs ';3h#O`BFJ/ًtȽ.v􅵠v$"̇Ld}(Fy߆CWAesztYuيձh N_/2cECBəlCHns+T{;9 -P/վ|Z%H!1k =kn-kisDo!%Pǯ7='O5M0zB=Mݹ/igM}mD}̧ P}y7Rу-ꬆ U>a3ϰY0\7>AjpSs\Fl4/? $HquI8։E)uDZ\BxQqrîGM9%fT /Y ؤa/ y %5K4 RԽ $o+Ra lWƗP^"B:yFH*j_NM`RYȟTq՚ai2{'t=KQ]^8zC$\ )ǂJe4zL$DB1בڐ޶*vW?X9+,[0+q}FbKƃtc 3E`0i@[mk'- sFdn,cfyrCs~nnrґSEtjdU2׊hz.CX8ΩS&:c#{tܒ\QIeT֔&$9jp LP/z?WZɌѡ'[dO~9zbϵV*%P^֚aH t;{mQ+b̄%y-lٖNvg3@1;#DOm@^Kև22A홇~ U%\bڭ3MyT)piy07$1^ʻL"ESk- }N5e|;WU3ޭBpy GFP?}7'BcXY3niB9phSse-?)ïxQzOD J4L'V^Z5c \Ht'==mD|9ǜӹfSp(+.kώتgJ-/9d'H7DUĺ4~>ׇHO ¾4W ċD 26:'Pl${%[g7鋊ޮ:3CDB9O":zmbT@F䗱`U}iݲAPj(Էc:$X׉ydD{gb6SwW]k9\QK($i0Ly@kۨ 1o)b=Nw>}_[/ f!iAMƍf hH핸22_Nxo7ewÕn©Sǂp|@"SDwmX|ʁ0[?&=??[&a'52ӊ@))dZnh,%8P3AsFբP_O3t ^ڰ4?҈ܭ flYqSBed{d30xlhԀ?.8ЇU÷.,"1&]Չ9_6:fDJrJZh,ݽ&:%B͂%+x!>px{;yqJL(.`(/N_7pʷ){]/k5 A&VWkRgη2O޻ȳ#Ũ:M"q[T8-@ ^ 6Xfsa|imbM7m[ٛ;yL 2i:s$&? ە\`c5 7+~uJ"34Tf4ȆxMצh#ĉ]+n+Vɿ@69^7]6 Zy!!L<f5/D7>,>z48~ mނ[Ehh" n'7:|})+4Gn^4utL{eS.ȋ ,LMӗRFZmsWYa__X7=] 7z#A_/Tmڤ bh~0,'C+AQ~qpb<ٰ%mU7Yhb%m8AqOM YNGNr:Ib KjlưQKSxq@ khv,qd7qvkCXdM0}MK2OOE=˝Ԗ_ı$>uYzBsȮ<]ݽGq wSKz@Oq\o/n`$GGb]]XdW/k'>|XN66ў G| ~fA%PGȭ)Zgw(l^I=q﮵&_+vј%<^Pd(RV^ v4R7 mKSnw|֠ (j#m%C쓭¯h(G}}*'"~0ЍtT**Q:@PIHJpfQ찀SR}ihbG*d ?`eLA ūPI`Qz zs0eQ28%j6S""FS0dx. FGr KX{^e1tu,QC~Y]N:mZd@G4&蛣|rͨ jC=~/|BGn`^4qU%TIWn 7V\W# 7U~=:_tڔ$SCcNLu/rRޑH[ptuHua״ a< CI&6 P޿;Zs:2_s_w[rQgչpu%CԕQZuZ_z7~ R6|``(<1zt)/0] XA bě66Ꟛj/t}nJݒ/kcZUJj+H,l+ÅURͣQP~ |n);.td֏*pmt+\O%i8D>{oh'CZ\EyN<YO}i}A N lեO?RbdCF !t/öH%xxɐ]ӓ|%ɚu"8s5#`87xMB ? 3+:/RJU?[TNƈ)}Zwtk@k3݅Ijru YvM^[Q] 81:OjR1F~{yOM/ߜ11QL4A~ǼVXhRŭ&W mZHrS֚hq!`7"Ⱥx.OYkƞ1}XhjcS &D-z.IAumZ,&@[,ַ;n%7 ֻzdt~ʹt5̨^r|{͑iҸ R| d2>t j o`rj.ڃPFo4Xo㷌 yڀ-Jrƅu nD&.3^% χdʇv Guk>E{}圝ȾzDKǩEx 6tVI$ h\)U-0{h O,B>ڐ?;_wl.tp"ȝ@썜cG^'s\BAڴV ^#e N\tZ =ZpQ4\CJsއ& ND:+^d7J$mrL}P#^½nW#0$8Mȹ[}n8J L 9[HHko% ѷgtGAA4Gn4|aq` m^o@zV0DLiPtT–9 )O RōNK7 R`0Mn/4*Ot^〚:2s'v瑤pmT k}uϙ,ޥX#?dP@eNZNB kE! i%w 4eh| Qb^ > W+\ {!IvFٛ!\[LL$:T['ըpܒ1y$:D3u+Ug.&|πqF ο<-tD/Do43?tv^K-pg.GjC?;uNd^e:ٛ>,8]v WRce*A腚U,O&O  7?l{``dYzr0z<-+9t_BtS̒Ll*5DNkO5$%2N&6 ϗbr|-ExzySҝ Xim=`[f6ɶqlꇙzX,PtAQTMݣꜳP0QV8"ю5Y{6κl,I4cǴ,Kߋ}<` G,#t#ɾȅ0ݭn'dDz.݁Yr,JL~5~4&d%_Շ8<8ߥZ+ 7=nK#IhݘkeZ['bS YZ