rpminspect-1.8-1.el8 > 6 6_6 3!y덏%!E/֡a !E/֡rTϴqr)pU7RW͖ sMc,ـK;wOeu*=r{)am`7w6Tzjl`v{e_Q}fb)e`9j'J3{̫?bUh`n6FVź}xېO0nO2ps jcNK2s+Iߨ|w@T=@d:8`#-UBJ-2M׉smow7FfS(K*îM~L4Ŧ;t[^A5;TT^ĄoMȀTN_bЏX]/Y}g,HrKN"䒌*ZwWbeYH G >p=?d   748`ds  @  Z  t        U  H( 8 9D : G H IP X`Yh\| ]۰ ^P b)dye~fށlރtޜ u vw| x y >DCrpminspect1.81.el8Build deviation compliance toolBuild deviation and compliance tool. This program runs a number of tests against one or two builds of source RPM files. The built artifacts are inspected and compared to report changes and validate policy compliance against the defined parameters.a|buildhw-x86-16.iad2.fedoraproject.org Fedora ProjectFedora ProjectGPLv3+ and LGPLv2+ and ASL 2.0 and MIT and CC-BYFedora ProjectDevelopment/Toolshttps://github.com/rpminspect/rpminspectlinuxx86_64t8]H[MӜsAAA큤A큤a{a{a{a{a{aaaaa{aa{ac7f95a6cd9abfec434cff97c0517a3fa675f5f4f615d8429055e61de04e72b01efa32bff140a8c08aa0524c4030b6113aac064f8205856e54c00e650c3455466e8042c175f66e3fe6f5696f2382fce8675685dc6175590313a76f577559582e763f773a253f760be5f99f06fee6a777977dd56cfe5b6b1591d511e5d8ef534a0794e2c917d8557d88cc70eec81f336fb62e02432cfc1d1fca051b5f98dd753163972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb369861c870234259a01b13a2f3c8ece6bcb952bec6fb316c1016b72a6be2f6cf8abb098a8e1640254eb99377ea7b606887d41ef579ca0ac2631cad9ce40c14fc837c5../../../../usr/bin/rpminspectrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrpminspect-1.8-1.el8.src.rpmrpminspectrpminspect(x86-64)@@@@@@@@@@    @libc.so.6()(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.4)(64bit)libc.so.6(GLIBC_2.4)(64bit)libc.so.6(GLIBC_2.8)(64bit)librpm.so.8()(64bit)librpminspect(x86-64)librpminspect.so.0()(64bit)librpmio.so.8()(64bit)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)rtld(GNU_HASH)1.8-1.el83.0.4-14.6.0-14.0-15.2-14.14.3aW@a@a0`@`\{@`7@`7@`U_@_@_@_@_[fDavid Cantrell - 1.8-1David Cantrell - 1.7-1David Cantrell - 1.6-1David 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- Upgrade to rpminspect-1.8- Upgrade to rpminspect-1.7- Upgrade to rpminspect-1.6- 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 translations ru1.8-1.el81.8-1.el8 rpminspect.build-id67343f521d583a7c6559452f9d2dcae9d143979brpminspectAUTHORS.mdCHANGES.mdREADME.mdTODOrpminspectCOPYINGrpminspect.morpminspect.1.gz/usr/bin//usr/lib//usr/lib/.build-id//usr/lib/.build-id/67//usr/share/doc//usr/share/doc/rpminspect//usr/share/licenses//usr/share/licenses/rpminspect//usr/share/locale/ru_RU/LC_MESSAGES//usr/share/man/man1/-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-protectioncpioxz2x86_64-redhat-linux-gnuELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=67343f521d583a7c6559452f9d2dcae9d143979b, strippeddirectoryUTF-8 Unicode textASCII textASCII text, with very long linestroff or preprocessor input, UTF-8 Unicode text (gzip compressed data, max compression, from Unix) RRRRRRR RR RRhttps://bugz.fedoraproject.org/rpminspectutf-8cb1456d83a87591def15a88e5724c3fc8a8e899316173a2927636b2cdd390c5b?07zXZ !#,] b2u y-iSqi/3A自?6MaAYIWUz|.dz^njHd%>Y7%T+SPW\AnGҍ{6Ȉ81#L>U2K @`f\ΘG_$Rn[Db{X(_R[C Ms,n/hx/_P.g(h! v CMiQ.ӄc&M}W[h;sϷl2/{U,EKbmdwmf7{M=~,60g¤>\mpG}Ugf>k !"4jU$@5k=B k|MZH/Ojh Ng*CH>v*ڥޡ}@4=Lïse׈5wG68SAQnF{,ҊIWmb>PhͺTʀFG$;|\:"뼭6̠d <囔 §̨87xz%LFDƓSySH{DR?6jM?/"V(${Ԯ8n)Ȗ<>ߜGiӌf*7x)Z9rX'uk+'}e`ٮve8F ݺVD)E5<0tfb <O6y,wXf8,ЙAZb>׶,Tfe:f"]QRUzާXSUɄ6t:~ Nlst0vpMvTPĎ)MB%A['AoM%o+FeZoٹ?DVh(<e[|&&M !mn2bMԴX-VtzP= ( pd/r}z=K^9u442 >v |I"@z]K. fpAqϪSAR9s(_8`|!({5_o@|y 1Pu :F^ 7 |UYb f&Wݖ7rA̰ڂs#Ό 6~=n X ٘}Zdx~>`! W؄.$3ʐpI[б_+hlM$(.eG/8bz̅ yNH_ovCnDQ#A;L6V,x8 1 '"uӶdQP1qk6q?%ڇhiQk?IȖ#?`0-giȒfQ.?Iub4?0A6:uFT  Ў !`%AXi͕x.A6tGx)M5=Ga!Cyo~8 ]͂5*rMnGaԏ9G4VR#؈+tGVCcՙ t,3U~cyXlVPNÞ3=}V褉iʇ0ZtLLHk } Llז0+ut ko;_BYY7Ë}y=?#)MN$+lWp1z>$]Wz͠t@y49`ⰇztlnLPkXeR"#=gGCݥ2%ٸ8p w =n.[, 6-']hPىZY0v&5XI?uM&!^O+qG bf>VXˊ%Т#6|6kED$_u[½ ` V\> Y1=S2~뭒u|k,>yy@}L@ԒgP:oprP>DHy]yvg͚=;[hj W)]Фִiw T?|hགྷ>m$9~8̔ f*~I$6^诟%Y_mW. ҆R[݁LP+IG>8ϊڊfOO㪂)okmp*CZhu4buFt{P :gu*6:X7kh^՟9omvC8VO,_y $ ȔdTUnHF1ơfY5v=ɑQj4>C{C9KKRY 䝂B*Jv[bќ̟v !%iA[T P%*K . 6NK5_fDʊ.&t>] ,* PA8yr1fv}UHa ?f!0ty|,>hL2a,VF$¼z>_5m{YlZ/ ߨT=E35jL~V(E(nGP]] (:4]3Y'3'*$èr\M&V8*bC^Gk&f;fV7I|z.eJ~34?w ~җ@@1:O 4L8uOʑ] b;|C M.eI "G7}}`W51cn4v61p2- 7\+U7lbG]_+S"3^S@7=Ix#5F/Kn.JZy H2n>|SL{˵KjŠE~ҿtRłMJB0;ݳ>l1+rqn07]o0轫 IovB8C0IN h8&w( yv- 0aR\nJCg(AJ =S#$Ljy3"( :oQҫ[;,'N< ıb&9=#آnkq0U骣cQ-ml%8Aib!>;eha r"YI= l_x~ܻeY;M@_U+b&r<-4ήtĦl2`!+HGOaEor1Ԙ㥭"$) 6 چ>-!Þ)v>cm2wJF&]j akA͏U˵"X=뻺\m+E"D*-g۩u>/m1тCKIR/D?Л n,0u*z\KE)5UyyKms}*I= nĀ mfɓ=ß8X b ~h߂6Rp@ꞭPpHm12A;<%"q.ԣPi( ?̛Y"`ΧEazxf{Qe"Pl'T5+0`bVV!rmQ*BP;2B4($rP0%vlFWL*$wBpL_-ȷĭQm/ Y=奻æ٣~=OJ:hS-bSs'C$:@:)?\K9('[ qw?)ad9Xqlj~u8! An&|.bv]a`kTt acg\^\wAeB]5).aS@ҧˠ:lJc3Js픸'|b #.~q. r7ŹVVq+|rus9efo7&WV`def vM|_GGyX™|#Tx Io luha2\{1$e${Ej|8򱷉.z o|/cFhGWr~\zќ<\2Ig٭έiΒGu&DAE_)\J ;ud ]}0V0ޗ 7#>ٯT*$YdJ+I5cp) 9zu3uM_K$g!טhٕ^UX&pK2'P_gb6qV L& ՗el 8 t.ϑX9W5Gkv xfXL䲋##(ohg7*@|9QF%NIRhGMI|}.>"M/R:27ҊݣձQVD{&kFDŽ@+i~A"]Г2 !M<o_a\ws9/8x`X⚛67+ZdjkbZ>zAa#qcߺ|v_njY^6z75fKȪb3FrG}^CvAB*NCj~A~xAΤz땳 'u"r7'uD@0c$$ <O@R%"^Dӳru>U2I,X,BSD / ~xPh OQ6y=1` &3%qmc| >@~{EFDzfpwoWodޤ2%c;*J?I Hlި5JV0JtzLf  stƙK1:sXD;6w*v0u_3GbG$ٴ^-"GEe xRqWuٜ9tu4;6ȹ2o?Mm|Π 9VZTviv7CtP`,L<馲!6W[fo00d7f7|# -^6U3HYӲ<-~~pq|gvKB±[--׹LEDz۝.кBj5> /Lig+JuQdUy1`y76pچ%$[@ە 4n}Q6Aڐ"kܚ0xJ "YnE+F(꽋rO)oiA<ʎ:5, WOy<yը#^g8wQ)N<="#SfXsoӎYi) 'EC(-~Fr!p~髅ߝ{T$}h&(`QNJ䕨S;FEnCE5,ƗajMe9NSVoD8t֋^ !19xd(B/ bp&žK+73RGş4"SY)5= LrrVV5y`δ JN'N/oN|^ľ#'`fFN4}+>q73WO^]C\ km}giub"r!<8Jb {{XmP=po^}=@X`N0>o5 hёdɡ*6S 2rRxt9XrHw:s8Mio `"3 bD1툅͗u>!iˈo㣖nT'6,8oNcl8abGofYĢ!FHTJs&y\d_Kltx%^[GdK% to m 9|i* ǿRJ'f&5x˅Fn?)SyW?ΟV..n6fC 4Om}T) A_A3"w끚o9[1O, vЫМK$lt'$ⓐb4CdQ'#!N/Svm>|2P@}?q)`3|`Ma =eJ͉{J hÕbe\H4]] ]lxyI~BxQG:G~$ B7 Y HnU\p+L$}lK[ /1خgV2 tEQ}HUU5> ;K0BVZ+Q>|[Xo~22p1ЕK)7y -)oWk*$V\oR|Par>BhHtbǓrś3,|^tz0s-2~HP41 ͝chQp -!I w5dh!xƭ'%lRvP`J#RCMuZQ[GXkoomyE)<2G} E-b u+./Adve7,%~0D |)Mʊm(lOud!1agqGXy)o)5`D:둖r5@aD-a4J_ 5VF=:!]1Š4-BE!5p57`ޅ̹UWa{ ًWƋZ_6q޺qw5i4 xΟ+ Mo)J#Ek keN<axPmV䢌Wy5r-W9 5I`-7B 4h!hȹIQS֝M爛9W nJl4ʹ_'I8#^_qz2d oeEXKAkI_DG&}\8Lnoc%ru q ^9 9??"h[ 8D^vWmOexg|5Xm*;'Mxİ#';m9rc虗6Cy*Nx)7 $cK 8vpMǭ(q&x{vb[NYe%Gu8qf,,Ȁ>oK%k^ n}z M[VUHR+jH,uzzEf֮Qcj2ipT\QE^1୿-mN]#V{F;0<*HofPA.ݾ+Vw>ȣ(vJN̬pe$y/Azڗ AˀK@Sm\.mZPQl2s^dD@7Q$#6'sabIed!㞛|:ߞۡmͪndu"zq-iO;r\6/L$ݣ)T@'u|#e'_FXe6"w6[0RÛ%3;Fퟯ}ռd[P`SKA$ݯ;u p$o5wk@ $E@X7  Grŋܥ .lGeNinlLKGS ͙/l 3B5p!% ı gt"$9'iƇZ|pXJ%Jߗ~,?5*R%(ȝ3XVN⤍UfK# ^ehxWg ^.o)W}|Vrap`$, c0)5q|d-SpH;t,;|YPigB(u[pqtXao$ Rj}fRk!+R5h"Ѝ#ar L^۟ԝǧdaQ:檽[ Z0b8>gYwjxgǖ,f5PˊqZG]URJ.ů P5vq#Pʷ7]6K[߉k38bȯc٪Ӿ:7nJ:ʽ*s+՘CʶWZXn[lp>:_Jڧ2t Lµvmx BďŬ5!z\}fߪI@,2h8]\qRzt2P.*6uK˪JM:,њqM$x7DÝ˶iѝg٠.&-d66`Ĺ$k L؈#gM_\T4_A]1ݢK> 2}!.U:K7HTfl/SN-wFL_@|Ŝ`M$DMߢ"N3,O>oQNcO y^fH4/ds -_DA-OB4y Wd#\)Tͥ,Ru Ɛx5X-0p0颴iMdRĦZFFppGr?rCJfS&3 so3u}A߳FS.vκwb}uxiΆW^, kC :!xn!pϺ4I7/)bll7jը!{ETf\KvA\C-5xSvǀ<N]cMBkDSR1@kVZg~^ Młl!8M/d߇H !ݟF9&:<y4B *>V6d@ӈK=&?(GTaE~Pgr71^=֭]If1RZt~ 4pV>L`V޼Q9.z U>BBK&KiM|4:3/:`rV|g| nЮ-4d4HokAskPE:垩g9;Dܷ!p B`#?itPJ:RQڌ C)%8b-wyǵBu@KR'T](?v6ݗL\.h,S Q[$'hu+( EK%Ҧيl [,xIV&!HȸaR}}(]ȲXȰZ:XS'M$ l^fe EbV~Q}XƐ8jĄkюƷ򊜹cD+SU"A/+s[v\.Ḃ'coZ>zeHIS\E->Q;̫o`+I(Ri|&(u%}x"ɦìXSVy#U8'֒z(" v>Й93Uٛeo 8~o 'U eucU[0"MDGJKKj[8B-~xQjdQ?x<) Z/Z[Y*oO?]_RwUϣ$$@)@oCpF^)T@%_@"{-ҷI)B`5_1!1'=d>h%X'[L)5ݐrfjRo굾c$a~tkH9:Ü;rRTSWf3 e<JJKjU)v= *Gdq xꊧ?iI𴵼rG{<<iC/O}F4鄡!:Q6؁\uȼƃzniYK(Ren;jb҉R`K/&cXg:"̑kR&:٬:Hrw{bS!$16%@ `kPy#].S,ѣ_t[cBxK.)k$육k ~n?_?~{=1LMlyao  Lg/Au%=R^ TO$\f[_j}hg_``{q dS#7idT\uTV/=5ÊCPOEQ!4|[AV5Wf?4ɠJF4jaY&0 Kf%]m`cqg&cg~|5Ҩq^2ǀ=_կø.<ˆZ=' $P6"RBc.Fog h_x[n3R&x6x65]~+fQ,7ǥm ^Δ7V[~gGx'~8=v,~}^+KmW:$m//82-k($=G" lBP7Ap-aE)R6F,pd urMvKsNM¥e*uU8#A`k- u1}`yw]yqWZa<@ h-n0RG wUM(0Sc |PJP'[|%vnT}7h@zպ3AH!Gp1gf&U`z\3=Mzw ~YSm/5SZSP\KG<,z`ɞ)W@f ]gۦ[g 6 vU2%LXLoΆ2K )MGK9-&nIFc\GST9C[#u'N G1g0-EhAVc}]d0X&v o?iФ{'BQ`Pb< oՂu_ JND0UJS=64ˌ}% MlR:9] #Λ蘔o9(_|P!SϦy&*Y} >5ا:wqdk٫_I'\\p_+v 0d~KBL>2Sz'\^ėj =CX;|$ *$n>yʔ i*EɼZgvB`Š,y燋B&O`'4Gdq"ꐰW^!9jDqCuR{rD)mIuK oV ?{}t bdZ@yG n'"` d\Axm^+oֶ*a7V+Pz~'!O^H0BGT}2 l{7E#zΓ= T#q򧤏,+}zI4z+ AkE!pA}p֡&^St430 'W Vx$]2a?.ze {FGFS2gmV@Y@Dkm9t[-1<ŴB;m?̨*QX{E:X@'^_[҄KPS#؅FhFȬaLsx'' Ɨy(]g![*h9$BpQ P- ;!ʎ01?Ej$ta}cY9LpR\xp](jb%m+6 }:CB37mE#2?q P;ܝs+*O@p%M^h0]b/JTBtaÒ<_hɩC~{lxA #XUhzcҠK&[) OT0Og}kbTo JjҜ[ Thˑ9JrbTzt] hAϰ@3RIAg mA8 =twWqϻ㹝rOzj.cRAc׹­+/X~<}KKt$R]RW&ѵGi W:,uZ:".vosG|)"2| Urf-_]E5 dIt.&Ekր!p\FLW150ǺMpBpX"]hս3S)TZbXe8*V{H|oH͒H0{p(jS!7|{B_FJ(S-'Ǐ\AsS%6#:99 PwM(MXqC,R{w1T,&zx7KBhC@SCg1,uZ7q^PִX(7 )n"OyY4cj}MPP:ˈ O=E~UԮAn|uQL'w_[;l)uZ oev[ ^'gUE/M9&v@ie$yH[֌)Z j.xsAj-M)@j*22F4xA5ZiuƬNCMs,k//h|Un7 Q&Y׳VlwThKǧ2< K˿:2py1P-vKrwxhzN8c1_7| n FK Ư^W]M 0m0KZZ q{^$փ]R)sL(r!tQ(~T[/+i6{1AbJġ ``R9ZCnhLmpU-fpVL-9qqLgM}l$+z|4B~1j , ط'J@8dSg&%&h//Z(܀CUmS/d<(g=9`\֌ 6oY#.` /L" HRӚ1+u y$h0僜QlQO$M.:-ϋƧYS4Jg UQ,裉 JpSKɩt1eTZ or[M_y`T!E86Lw3&4؈"V}IeQ`|,FG(&^xnt'2i Ѷ?/.+ W8-$4Am}p  4_S. QܝHH*73N=YZVZx/~-̄Wtc!c.BQ2PdS箺H?6|X.T,t]8(4ʁb^[=nDFs!ʺynR9':" ;mZfaӼ &¶82I-%K% >.ȅNrЕ\%:*o'eV~Xa\T77=Eo'|BN UU4&=1G}xǣMa]S۔1_rϳxd+({5^peM„ a`5^6ɂX[XXV KZn0^"H/x%KjcfU߭,Q c=oDr9C OIiĻGbW~rJ uf֣fe5hCSĬFnm ɬmz YZAs#GBy]sH #S!(-c}")N@L=*eDpdS@-i`A0svjxuK#S%&/ۺ~" }; 6p6hD2٪)՘HN P>P-qOq:4Daed)fo,w7 S{L(W MA--BP\ @sqiLV9d˧thT[wNF2ww. 2X3"<67*k=> (XNHs-v1g)9٭];^:N>1;Tk{O]#Qٱ){ seggJ񕑛JӖ >ªNQ|h_|V\j ymBS—;wZ$jjxꔎhVE?7,Zj7}s4ZSH~ncxѸ#5RF* Kb r7jZMBhtҥfSd}O۞m]ͨQƟv~e;E E<؀IlxȆc]zG(ǁ"kivK@jxi69*mSY鎝;MJ3!pK$;d=2UQE}Ţ$* (i/]EB~Jej)8 F q ¾Pv}duÓޖm%{^)3ʎWLGLʣDՃ戵?c! J{U.5;J0jW$g@'`&ZйxyWYB M/@WHkyЧ)oUzq$qa &{~hf uz8a37FO"eKk]Yr܇ LDFg#|b)cZ4REEnG:U.OG ?DnK9J2aLi %Vm&1\a  lPd K' 56tn" x5"Qk$FM}1pR"{q.FrC0tQ]DߜaU~='#5 ZzRۙ&SxB0W)hCc<7*8hp.td_|`{lf+0 0zrIݪԭEa:7 tHt<+NC噦saK U X ώ!=$4D' m+l :=h{ָQڶ(_iV >Yn͂ ޲ VĈ /f/<":d݉H1am2X,֟j~–lc>P[0|a6̪LUetNew!E~DYn䇏1&!VH³,TGhn+O1 U3_}fӦ]*JݯF塲cfV h<=X:Y) ;8p4, lZY;[+Vlm w+?Vejt4S+z3;gJ5- "[4gҶ@)y$.V;|;/R9!# d'V'rǂ}VKzȓJaW8"C; IB\܃0-ApnI7V=$hUgu50eiKaOۃʑF?Z %3 80¸ A0@$Q++w)/ K&k翍$d삝+$ e.[ ]+qʦaz BO{* `{bP^/_*+_ h!`SG+*#7 r<|Kۢ 垪T Ξ4EVhgLxM.&*-lȒf#OhL2?049N)К3,j[4%g)(S 蒆ȏè46?BR')+3lK:hG>߭ЗUj7\SgFM|'&O7Os ٭B".1nn"TZJ Ot/A\n~h僚샅T0~#gs BFIt>dY 3|~}(i`fշ~hjhNE|]PY- "p Z2Vg%Sseq#7f3W@I\.9_qkXNo|W#9|cMiIcHlI8U\Vh>-)֯o݋:ٔH2 f <$0sqlIm=nrU^#)W,nSOeb~#[(^\JuR-SU[7DmMnU\/#._ox8wiwZgLXJDpΆ%!O2pgi]LVIx1H6ԓdO(*lCCUO-*IbOK:Wp$d{LAdˉV,ٵu;uҼwZS-A$/"*裫a l{$h@) &c6/CZp›j5F{Qg껠0RZ\@}FH8&:W|ϩp@;gR)0Zo7N6ޑa.fIIe0Ai-!9 |L AZ*Ϡ\U AWa=}y9v&cqO~dTx5WM>i媦\:<ɞU{OI0>|9&{Ϋhu5}8? pوq$GO0W9XKcEB3jQrمjqTa^ӓ)\Wئ qyuհG(H9G8i*"iOo' q*K#  "|Rmu*@[7̆@"^ (JS -p^ Niob\9\Vˑ?Kz᪔rx҂~۳|_#K`t? t=''h,%y Ih43c3م&i1'fmװVe7Z>7MfG{d)QT+pi'r>փE\(襳[dyd||Ę~4( 8 .X$!vezg,"8ާODp ik.A[4 eh=n;F݉W5U@j3"%%{'gҨDD#\λd[OiַOKI>)75K^`6 ce@sxn+5B,Y솈Q+nkv?gmmrys/Nß23X;,6Swd.UC&oF0We e=N imy~ہZD"vbHwRX)5jqt (vI!ҹIHȚM~M'm*WloBEB(Z[?gEW':i("ȼ_Z$C͍`d0^ʈ: A->ڀ[8#; /CLz^~h*IrU,bqNU0Eg!\o{:l"u >F! .% '] y}|ݍ">_vDF#0>dFf{CB1d4g61T{R}v+<ɟRHX=.Ҽeylt'S!d{eQ8 Ni;+ !螖CzU,`cnT}} 6m`R_U$/!f(=kM5NTd| ߄(8r=MhvͶ1}PT/؋t e9zAC֦Vp #aGu7uymRGƲ%rK 9'FId!͎r6,CӹycW>mcQ&F?Vsd@mwv71k[?{==-ϫ 'zMJI"|zɈEy"udnu -Rџ47YRo<56Z+WثjE拍:CkLҷ[K8+;lB3?a$j%|Bef^NdMy_)=2ixa.dH`Hϼ#tb+F6L$¹#Su褡zvVW)8挒 */CJ{QcY%]BQ+<~dV[shaaو"*ö]C yW\SyDgP\?1͟jRHUӴ,S7qޣ`mӺƨԗ R= vAU?P7b89}mY"?yUCHkC6 4c18x8g*|Ї^󰟠r >oy~tl9щ DYx.k^3Xil謜`z":NIعO&o [Lz$tvܜ0J+˰BEbTeDB[?N}=:ač8z) yt(d `|U%JlVUtB40 K2-<׶$ֹu4Jl`OK"ypdGkc 'j!ꇎ?Kӝ bo"\0y|"8/C @`T5Kn: ƙ{Z,|4Չ jVF*ޮA` ̋ i;$W5kKY B0Tsw٣*|5;Y2/U0}A9=?r/|K_bM{ \"cx蚕0yEjۧLnXeG#?D a$ݧ|"HCDL8RJ6A<^Hͨs)ZIԱ߅ K=( h05(DJry} $Q'f,VM``!2HP(g)hGC<ĀFN^jU9%- 2t?azfQ%(g8[t}EE`kQ9~paq_y ^J ~VK:۸ {43aYE=,fU\BF`cKvy bbV SCFfa}QVxE*W*]8Ai.Ciص5+{QF:I Bn riYL+-.q/kM{((O!pcdA1RKɨ!$fB#R-ʳ_>C 3/H -eBBkL7Ê. * ɪbg%l] 0nY$иbI&x AVCue#|⠜1^bw1M!\AwwE$,Zcax?X1wFa]71)4GkI۩[VhT1rH^!#h㩥"6I )kuH^ xًoAAO"m5є $ w2e>+,cfnQyu". u8ɊsQCشusj Bp5eSc!g@.5Ad%l)#\R~]T&q+Z]5d@%޲Wj ^QsvStws0?!r>gi{ĸjo9vhTù%-ٹ"r<@6XOK3^iک*D0Hj CÆU.*F[sB1p3RRXwF{ >q_G,F\yNF$'%#/ERE:F"ųX M1 b=iZ.d .4wN`C^ j]ۓ3nn{iW}GXbI_ m6@E"(qtԥ`TuH F"}wU\" );6%Qob.+@0iIJckJeY56V %^G]rt ƣ_s4 ~ LN$+䲮0뤡a?NRЦ{Pʢ+bCEP`}d->AaZA8+gMa#;fb[bǮ}tW{ )H֙ S  Ȅ~Ct Kܮud=!PC1Qo|+ B3]#*2ܿ$a>ۗ.]Ӻ~rQ-2-Ӯ#bI ,Ƅ̴+JS_ W<YjTUK%5c"lcpo+uoL5Nbt7 u3J߼΢lN!%;YRAβʯ3niY?k*#hE;Nw.d?{sjbW(MM ΐE0cU%URJwVDtK YhfDC^b}UZ) ]D1p=lN5 f:(z+# z?HaLAyc}: H [JSFA3 +H`?z~* sv9ni8b)ON~" 4@VPN~U~ejhyb?FVjH_X;te1]zb.[Dumw\yF*).! -ěՉ8*K!mp _桏\:`gywaJ/~N1fL/|0gE)m Mm*q*YVnJ8Ȼm01]YXG =}aqy=*nihlVNAtxK{=R TSDC eG_ӈtkYUWJ`NHUtrN.MV[VPAwp؏pgh`߁ Z@ڐ͓Rs KM ld+i*{fr?, \@,?o]lӨcꎳ"\C!~EQ2D8J;xZv٘3BTСNM63Ԓ} RQOj]In}NpQXRŮ-RHèirImQ\a?pN7,&i8y΄-XR e< ;.yTĽ! ('3}!n(8 ogGce/-u"(L'J[\]j9rӰNI'gdF Z,E"0Eg|Ya uh(p옰NHO3q83 ;gPFυg<7_O;{ ݅Z~ 8%Gt'qܺ](C]Y .{2&./XFMȧCczK!z\0-Xd,QZ5ʅH:-Twh9?^`\CoE1ÉK~6i e<2ˢdWata#1<ԑXޞK>NqKa؟nu>Թ Ji7eV庰' !$2ܿGTIN Itٵ orD3;(ኦtGOK*:Lu/wi7MX6>8ӶAÅަ崗M!e"gø >\E %2ХԚo bx8z+JzLغJjKI30xr"\#&b ׁ7D4 Mа{`_*fX8gQ҉ Gg'4#П5ժSuKhBŏ. 81ˍ}D7T&'nBC ;kG7K@=#? eVBO[R-DkKXG\`tyqAE8O3փD$OluigBI.>3sJBva9;z3M8VJp$sx%Uk2Qٮ17 fםj¤t:0:"}։?i^H8oꍶVMdфpo=17 ,7ԫEcJMI(;CGԂWEB/]WMxU92EaPR>D01>4Gd*{o0? +/M^0,_$EZ2!_ho1IJ"󽒒+RP?^LטkQ,§CW/roqnB DSBeUzs2)ٜM 5E/ DSm7qgl5ObH6 v5%2R'#%Da^ɌF-&VgT:x !p#,m™Pnmd5+(5-qȜJb|U%27h܊p/W:Rk) I|e#P#HêI`n7!Pp14ک]"f =hN1ƘIQZ~gfdɑNs@[ q>qdm<^Aʌ㮡5ӻoJ&F%-v8 B6pzTkE&تbZ1tY~Ks#uч.̜tzɂ7G(iiX5ߧ4խ1@%_jT7Coģ*#lmvq:hY$ Wb.ϯ;mg ū2n&Br4QՂO|uLaMQeVTa ?n /:Pkt58暚lw2-;V;6.%JV.Xd^f[kfLj%O\]vd_uczs:s-4\~^ )9L ? K=;wn@ ុl;?KxrՌS1 w=Kqg_*C[8Z潹Pфpc(]ChWM Ev7u(Ԯnw__MIV::$NơW[Xl}΂ L{!Kˉ:&Dݖ/;N4 {@W ZB7י*6f;&NדCLL, F#'~qG;*ZQ`HyW׽ͽ!; 8 Hd @/X~0bvumN$uvixқ{6ܙVp%g! 6AIJ;f^Z(/lWY;Vgy"V;z %7h+z*pSk:櫕m+H٪ Qwd ,ZchܧcˡчO:ko{N- ~9#\6Ze#ϲOj0 F -=싼Ƌ̀oa,r'cuwX"JvפqFB?tL\.Xa ^ Q?!4[4a6 z=- $tT/`5ZK,}\g.:"(dAy(PSkC;!k-qF,ވM;HcbM#K7ej } ǧ{,Qsfi!,>C2YzY>J/:un\ vٰR>WCcz2JXOk~KPY\<<~7j YrXL6=񞋴1iEmŞvO?^KnCin:ܶ],:Vo[&jh^CicQm` _< d6[+sxeѻV.O7PE7D)=޻1F7C޾LfU\XU{[(h 5VЇ\Om<ZAu6, /. n4q +cnBi'پݤy-CD|nYW:zĊggh +rhV2En޻GLnmfrdasY+H=yfo% j\F 0Ex(+{3wʯCPX[uƝKSaW=iN7 ֺ`#Qx_ 2O6x.9`l|#H{LX3b\ -7 9Y~rHfo4 =Lo.5XΌ ~v|LHXȺ 3΄|ũ`Y46ċXAoYFd7Dyjd.;^oRUTfh3rP梇2LODip9Fjx0"=QYf0RD9zdPB?qeCxEk>>tZ9!kB$Iۍ䃩6m@4~\*K9'n|A3ǻ_}݈GR$K[TQ-ds3CeT1g8h%.>tQ7 EC}d0$wǺ`" ~e٣GvoJ=VתAgq D>KweRxG˸Ӥ9ԅnO*pJGЈCd. ?5| uKOهܘI44Fq\H Y/K]<,ZUY|rzxC"D_lo&>l<>&I۔k#8gj]V<>6NnpWMyʰ0W~Iޣ ~;NKN4?y%8c?Q*+|g Sy!YWTn9SIH[bWIј̲p:\? IVqY 9 73" !g&! ?.̷)#U]XŘvPX) )ӡ%[OR#3Kno8)̀L==[YzUàje?cK-#gٲ((ѳųdؼɪ3O(] 7ϡgqˑSל# ~?Ġ]q`Z>mv h>/UN2։Uy[ꄚ j^8U $"1n8ԸASD4?+\DDMթ/0y]<|SDJa7>i2_`c%*7@IJEtHi4}Yb !=ޯ x2}p8`@ԺM̢0֭{ΦOYb(FV[!f;"]xc602ciR2=bsBA^|^XXV} Iܘ:pF`e5~un^ЊDidQ+bO,|ȆGM| a,ߑ3RnG#āBF +g:'D(Sd*7)pF amW^ @pu3keh)dNpۀq Yw+R^% Ao}t>QDzND^4T -8Zi_AXVlWgփhE&oE@xR׹SעU SפSŴ/{{DƜto݈nӔHy{Uq߾U΅I4nZ_ F%Kw8hkΒm A! 8ԑGOg}x_E~R'yZ!bLr%T]\SަMc}P(u<Û>\.U㉾!qj~ѿ`9&kk"d\WvH^"d U<-  +D6ɢR7ޞ ,ʋ\ޟ|ԾNu)Sݳ{w?Tް誺#s"VÊn-}I,>g,KoI0!z{$Dx0ڄ$ApɢdLaۑ{Uߡh~q`N⽢.h&c|*jR 8wzG-^n,f&;|F@lM 73]j ||#bl!s46X?gpmVHbOim%)f_ l2PBO?`3x >]&o:u\r`x'ܮy "30d˔iEҸ+= ?e~V܇Y8vZFCE*Q[hPD[Jim˕mA55J]2K bQU{^lA̼_:$kW7Ʀ:cئ R[ջ3FmonBY ڭ<>X894_b~ԘFtGc{g,H`8WC s@H YoJSI$N9X2Y^ ^ [MY${mCUd"GGt,SՖɄɛIdڵ`SQVol?5%m, CTȘAqpFwش<3;)H*.>,уWH惸kt 5Pxgoʗlr M&P):b7'%U_J5OIwAslYB&Q3b3F"4K4bFoe'Yw52i-̇']$=Y=!?J-Vl!jV6 :X1P 67[RTʅ`TZ4%_X&}~q30ZgגlH8sϜJק$ ΜjKXes7>FU6Z:E+HN#m-59r^X 3APHb1Js8q%sח۸[Фut
c ʺs׭I4@{&*!; *)kb3vt7v6Z2/*)"͉]V0໽X*ho9`wާm !|G#?쁳TrZz*3/ˎMK%ъP6/_5UcyjQȓFUa~lT&?!/ȱe36&:QN"4NH9M?B?ܑԀfu,PsؐSn/@w"ձ%2$/{pxiO _Dg΀I" n{l Ă r9 z(ڬh\^:3=ѵM%[i ЂiX#H:ߑ\=ʢ*Tk0_'/!| . *+ֳvWʗpas_:f˹DStQ9*jȾqArdyꤨ<=u!mv@,QW "ld^e?R!t8GVw)#UszdeӧFbJn(2/us$DOOŋtDip ϭQH{AF%KU𩱏VAM=6>J&1߈k4F^ gp3yaSP9dN:$X7(.0YSMO F't!?i?E'6ł0*lAf2Z̊{Uk`h.w$ͷWw" c֎TYDTb"l#AւJq/]%5ݏr8Zm9 z^B~K J r<Ř!@dcaVwTexMN[b~p_9 A]fb?RQ;HNc|21:V7/&|ӧiQcd[@Ppe83O .9Dc^yޔ$ݫB|m8rM3$×Kرvr#n"oh^Jي'A-iΦً@ylZn=ϕh -s3D"T]Rj.̚\`_ [Ƭ{, gExN)!½lfBHC'630\~ԩN`Q27Q*_Uyƅ; prspBm_ 08ʊjU)ȝ/\z:{ G'hUvGLv;7D}%IJjKrҝ$/Nn) ]E jHWbS?ޟP Uw#6 - 8R!δ |,8$G@&*/T f, NIfJ$N2p(%V'ϾԯPF;=Z-*SH4)/cVh C[&vlSGnx h] ӫx.d4)|[32@F&&e LŌ?'he׹>mSD /-2Ge/@h7[QKx 3 fëx}Sur9#:z]&ӫyT>9\0ѧKGB=k,vܜQ&wuAqمpO \cnVP,6%%*ͭVnEQi BZeE+F=>؊y\6jbjv3P;ύ"IZ, &z=cHLk2RmHW>rK}]#Igܔ46L8;=ʲ1`\|:b:9o2iNbN`P-JON|ND: U޸9-,{vEך1/(k'TdkL ʫZ:ir4]^Y(lwyX>%&6}MK-$4?b]t!9ybdx0AL"w?i!uVB Lnx|->g*@d9s[_կX}lZir |/_̨N]k.&ұL+&-]]Qe"HK w}WTDYt dt<"Ҫ[_ );6$Y*'L.Y+OvP NGj㍸!>həѥwٵWw^;si@mg.A#|dD 3IE^@O_0UCo:|;:v/,А۔Xd;5{Kƚ2l U+TI^WM1ך26ۦV_6&ףQmZrm/l@SBlc( B?_@ B= m-.3ag}aTpK Ar Py#dR";tU>? A0)v|k|Hn3J[cԶ`BѩNb%$'8aKmb4Ṣ0y<s54_8@qnޓ{ ~1uBnB1tf\vm\]JB({Ɛio(xoڗPUSA{G%L'Gl).)0ϖw'J$8z/Ѐ4}qffaJDH|İdT[ouU3Ujd߬Ṙ.cw5!/!˄ގЛ4?VRr/|%%Î 9|2^ ΗCLv*.+# vaɒbJ? .V4W\ Hj'|%|l0xoN lP3--Df1+*S{Y;ц wsdl؈ZJ ú%9+]eBN"R&ʷs~w`Q5Nӷ} u콷U(}նp (<X*%}s~Ò(eZNF!;!` !;0Xo#cw|1zv=0G2 jv uzp9 _-BL/kusHJ0J@j`EoY:|PH!'By[j&,긻~Ӫ^MrCtjKy[I[c34sxQx^+9@=Dz';-܋hϬ ($~3ՂQ~ƹv05;ADkBG^jqd x2 kN̥0uVPb)~UK'qF0L M K!U[%]oTT«my*i 2/ي\^ֵd%oA-y[no2'~q86FHؗՂ$_kG4AnчR+E+eRa.!1[wwݮٟU"pE sVe -PUZ yj5 ȡ㨑>y^uk& w ^58h`NW8ݺᄥMQ+' xb2]4NR^SWތE. vk1EY߾}eZ'@0f NJ0EM+-@z=h7uΆCQϭBkkL0xzzjA!p8?v g^آ·D~яk .ΎRXlӶn:sH N+h2u–[ʛte@gIZ)o\?i%?M\o==#IfEvBѶ쵑_̳]ɲ4S#"o!e\Pf6w'ɰ 5G1(haVi}n&γbE9^sdRXzN` q ,m\IΊadˆQk&5j=ͫoyG1|=;lbt MX ?_n4lK'޽|߆9MN:'0%:*,wu /<XoDF^{a?+C^lyF9Yy,P=|ׂozfB3!0WtiSfX6@\ɳ j/ː Gayw+= ':NQWu8ێ)Ǻ#.n $InVZU`x+d[Ҝ?ť3iqE+ aiHr|o; ]5iU֮ A9șcfå1RrX3Ky@V: A4K62v'@l5=9Zf!^ٺHt}Uڭشu' &_=wς  W,e <#mҘ>SR$**t0Q(/D-③VpL!Y==D)u">ǁR&'Mqot:D(N0[+u#׏ڠ NhA{:)^U1-hν+yrpQNߍ Qq:7)Hm頗2qv(\#ӈDrAPgOy<&i eEqh".Ǔˠ,;d'n9f Oy5\l{5i-µp VX*Ol 3nL(Mq y XmQJv<$-I]^օ /;Qpƪ" W~_[el2r A Eb9-f+X^ImKQ+ i҂m5o+(L`?ȁ(߀GPa&yYY@0(׀owbYT576XFw(4PvP$ P~r:3~J N.Ȓ~0a˾S&g.8x8^31baK@%_QQf`zFN>I8( #3b'9]Ԍx5?Sm_'$3V`s*܇&2 ڿ0">\1#UsUk.Pn0%>H/Ayqp/LzSj|FpаTcp W7>Oӵ>]VK4i܄RqR]ꢗ4=G#_Ɵp#Cq RdY!6HsyGAkk# [vV561X0key+ 6FzK BJu+2|QIˢlg;!u RuDsuE:mY$28Vr$?Xwm1!O*^E4fY)xx,tCxQ Féw6(u!ډ;p@䝒)cw߄Y+*nSM 'm?p5Ss܉ҷn QgԞ#s;]o cyD-{ȯXs\կTknƹ4h:a1'c'w(5k5sD!S_\wG2^(](ݜ;{\b*a"j][޵AO* z\2ߺ3qf5({fRYHi{SVl&ƷrD/C x0^..0V^c8Yfty>O>2h)v'JMe{ c.J }.1fgU勤ϲ}_#ytz:VW;$yb 5WqfΧNzqܟ=iËR[rEg SJ fmnjELB_I t/lKIVWf~w-M!}N _) _\b|8fOFayѳ&_7gɍ Dt@e6tֲ)ebǀϑ[̂X*k6x< i&0ι/|oGT_T R(>Sd{^imj!c [\Pַw$DZb=^_lʍV\\ o!SY﹒My>;%DJ+IA<s>b mM:"V%Oѻ-.ք),QAN(oqOA15 n=^@x#Xw1,r$2wffQx!uO"3zMY7)+ʮ¨oR,M}2Jƭ/>};l lfͪe:1eX=QHiL|رjr Ё@l^E$!5dՃ}Z幪{􁸕U>{8@2TӾlxT|R_k)k`oĐ#ޒ _4qmz!~f5&WP̀#"x1$ޭxRbExO7N%b vDŽy6dhuSaAֳ 3|tsK&%oڋ&z}J`-xBx;z6xJl͑fpvsKJSK?~T6s^K_0JWQt D U [qPq;1/n73՗24%¦?]_\K!geE6h25t<ρ#ogr![-Iz2xMN&}^!mAg׺qGp}ޝ|̸{F'֪̓8{Y|*Қ:gB؂ѻ ml!=n:?t 4~i[67U>ʈRƼlNS fܤ~T !ybɖGX+ j +d5&pqb%Cl(l-m$ĶYB^wbq'#Hѥۿ_] m< v~ޞ1 j:Gԃ+A`ySC+ 8OZE*j̬+*BbH@';,z0Z:;A5hRd`7k0ǐiT70X%)\lCCQ1tϏUa2t.pv"|66\{mhkg}REN-8m +<tTΕ&Y535M92#RG(^Wx$5YТ 3c]*G_ysZzNpo~*;-2ƣ($;Tʘ/ HؓoqwA ME b4g})_o˜'. v#F1$+:Mxj~*~!v8Ȇϔ- Aq%kOp00C A# ywπ7|F R6}b=L~W=T<Uc@jdOHCx7B:I§3-Rth#%*r$1>YnuT:sLl~HO@]K XX04Mw^7Ie]F8|_:f65AΛ}Q7_z?_ŌEkAx>e8W."ːI2Ix j o^Y-i#c~V A+9A䷉R*Ľ>/5png"5^\uAQ0lJhE8DM7oUI n8'T6~Re&wIaN+!Acjv(b8~>iU56crRXSVPn$81oW~Kb3yLY">hTkiGUB_ɨ#l`{3=rzFA9ucCbMڦ%ܵ3j?zÜ/X+wV'_uW:ϩv<)1dGq\`ج~*h?}_mhe؋x\,S[`].UCh4B}`w6ʢ9.r-e:nWIy8pk4KUBR6̉TZ럭i,a0D/s, jMn&Zq9(xeTU<Hq/d;l%pYeY)1ahȄvUo_%iY nd-atG:hf"GB4}@-ž t";"k''Y'A#-awDrl*$"N]}$bvA{ۭ*4^R '!ȣ\r/ڞ3H -n~-inLL#}h^kf^9+)Hozk9 S\kተLҫ7aKtnPF/Skٕ"t K7w^=JaO7[7M"%7m Pqc:qੳRmFz)Ag;7vdg T^vfJUh#f|h ڊ68XlqTs$ o?ߨQI)2/_ e&9=1=@CdD8QQ-z!B+`K x@K17VdtI}a@7?Vĩe ޖFyW-k?Ka)Z+$M+oDR'bTft|,iey%akW^ fB>+?)%c#lErcAϑ˛(zfQ^6,I%HqG/!Uj)n' ײ],= "kU"TTkl/uDt *D6 hiCb|>pe69oǧ? {rFvm}1Ӿ\3{^Z+`,<o]1햌)K#^ b%C5!8{? \+Fi0Z:R>뻍mh!Ǻ%@`+~])VϷdN)!SV$@Vl"򵩑Ū|n7k2rcu􅹛Ybjp°g}5zfK 8 Ҍ}CLnsM_6 QF!g&S1+v}V_M}j:|PZ/+p *\ 7h|ǹ$ q.G8 Q MX8 P#y|RvҢ}0]@@1P~λ퇝0p4䆮U+5sD4ppmi>#yD?J vvgV˃T7Z,*-HeH6ֳYMWR`NZ$6li_9$zΘOG8)؅󋈳إ|DQ3b~a+hn1TIi3!54:!;T-zxh!0FKC\=& %~dof9e~c '|KX7ܑGp)C]M̈,t}"@?l-34PkZ.:>P4 M:Qޤq8ywgYf.+Ja1YM̓'+’vd?tvBuC&V]=MQn`ENg|f2ȶoo^g{%rr+jvW:*ʒ6pXe E B @⏤,*)evbQĎ!.Mjt]B&Y #F#ZlmsA]4l8Y@7C(y h)!w+b^њxyMXiLs=AcQvA#0 xX st4LUBzXMK=Dz&ڣ𝸒٧Hhuo7F|&@\=m&F`w!VdlVډ`NGzf Uj)u}WS;3 RשC&©$? 2DhIP[5 e]ZY= ZU!W `ī.Hfu1v Udz2ӡA/-ySjc8ɏ-~i28iQSR΀wK|%2ÜC?,V+_#Q5 |S kd0{y,ۣ+E%9f[S lw99fߎ*P I]xpڅbfb@dPoZ-vD}2~}=mx-@wE J08wujJ,qTZ4d6DX =Bo4Ua${rP~݆ nK\\t@q "ϹjܓurH]=bK"׎CӰz'R;M'Ÿb(+2_a~DwɳI׷t(iĒ b96(«/OQ@b_52njex?y 1 n_gY}Cc_{C:)?Ҵ?ْz*$`rAjnuGhD"&/>^xR]hx&*V]MNϬVFNNrO. lV穖flU܅KTs-ؘvuEtq:~g`3_0 5Bgw yqֻ8{//s 5͓J cDuc5o<=.O 1q\w"xYp,8!~&D筊40~j#0\5gTj41WJujh8S3t8F1CnYЂ{JnHir0'GA` S^ӿ~Q˂u{1Ca|RuCu!9S_ I#=5¯Enj bܟuŌWI$1  ^  0m+>'z+idkʼ.35JP<Nˁ bq ~B!!IvvD1?GݻTj/s Ca>ڵAX(*u Lpі)eJ=n h9kL`˰(?gS;NA)h'@1Sn 35?hl~|C%HU8ow؛ɬli#v9!37OJ" ^>,IYD>;" r(C%rhl[թc]+rESHͨCytp{8U_a>wpܿc !OOϷ{8d)Jlc3LPX&[]F#SӾuOFN7`9qiqBdzHAdZĘChnhήR y&ieI+omE,g[ sYwjx$|riA26@m^֙m"pƒ4fpŻ{X m0E1K#ݥa1ס|ԾF = jR&nAdg 9tVy7~/? ,%]0]6t„jCkX!nu#gJ`ŵ4 9% X)-=qR|XG' ~4K_bIqWh0W,Ւc1؉^-b7V ;jwD`/7>M#TaG-MP XˤlS*g+?gzH+B:g +aOBp #fv,9ft2G=_Yn,h~-Me942eԣaq1LR;67q&{ҊO,JXZ1!A='+!`7,7,@(Lj>6{ذ6wUG E|E>KVg[peؓl^ӊufTz g ]Ѭ]E grk .J^[G;_Sx"k839H(Py"#(p5/eEҪO8NTtȵZ#0[t,=bph:Sf8Om`m4 0 kU'֚XAvC~^͠UU0F<&v#P?8{ӯ%5d!ck"Nw=q-K;%4XP{͋H0?`1S+yן RL.ٿgGung`\ brbjhS6{ +HjأB:.NQӏt&S^\VM\ *F\B\$[~A@&.=~uS) پMIКoxoGdkLG*au8{!߃ Lq,!Rc\-3(`js\;szqkX \{K*u4 b?#7[.Gq |]i֒v;04_>oS}⯯T=\^EzvAh-?ہP 7L?KLa=)~-j͠ P7,zPGuqWfI4UoÄ o)Ȳ=uw`=)P$ f(&; ͋u=^WOf$Ri-jg# NC*!s#1c'A[`>s(y{ @ϥ Q\y^2C~fv-NI_r )xg#TG.eJTq?SKfW~{@wzUDu-^,{ȎJ 2UFC`z@XݭEDՏG齃 7;ОC'>PApyâ;cK^6#=k̒4L;8N84lf^M X;3&2&͙n8&u[36* f7iMԺkY=N- ~dm !5dXnnmK#K{5ǔ,7 "av?ԄlCL@!sZa$h`# [Igv&_fϝvx^1x/H&s*l=ư<:WyW$Dq$kAj ^R`*-N( + ̋cUw5 K%?q x#w{KLH3GƧ+ ^4ұd^+ƜԕY5*V;M1|}rgĮ[[z(D&ۢXRJi=03.*~n\={pw mAbHG Txag4ݳ >y7*#zL@_H1gL+ԋ#ؘvO"p/ס$,@0sP܄]j_"P2Tڿ& & 3q%gBhTGkLz4XFq"ltdR[1M*\v$dDkIcjeGgi(WVQ|a9S:NZ}lN B_@Gxf?BtwO(YJ\b.폮 !g~`yMٍz,-) 9 Scs!=A}gDk@"HP$:DȎS,He eHb\qdE/ιtM-Si=J;|z=0_ |HfQО(&\1[y!Ư xnbXmVԷ=x8ęthslKLUXPp})zMf|7vOPAkFv$dKipƆK&/~pFyDo|_7ӷ/@\w|KW i3)[$539E=ߟiDȥhSKxI(ӗqdIP|][XpN")7(v+楉1i ѳ iLCs`R gNWZѫQ )OvxĹ`{K&~S KS-}x=:|7X;r-† )IVEhl˺D7h;D3D*iB3< ^"@/CmyΣRT"7Ԏo;SJ#^J;5u~ly[t0A@1Nw/o&L/c$a.loa4ch$]ᦻC(( bK4c 9zԟ=kA<1dۯ%>JtUH D>ohj3Ta~Ɂ{>3a5nбv} :N JܪŘKo t'?;S;P+zw;Z3{Ͱ2kZxtj?K;soO΍ՐV(D?`^+7L<I C# 7BJqQRJӾlWsNJX]yOu doQ%+'Y]n\v4Y5xtة;lzH!VqU)7FԬycDB[4wҰ[R @KIf1UtKu^\/zo؋JhW$a'[zrNh :Ub-/吭pn![|jQUsB4e}5$]S`na~eiv"1mNX`>1tU07{ :Y"1(4.dJZ꣙ TL\He7SxVP>^/\oIsŸemEhI̕o0VU6NБ. By v-6#M2E*ɷrSdZ膤duAUlLLƺdՠʉ c5 ~8>QGX/=BǮj#{f85%x ɽ&݈|wBN&rܬR..q\GwrSW(ڪ݂GهEeuud00_SS;'_Gql@m]ְOOWh61a;>[2]a~Ҏj^5da|fmVYOrj7iJQEfq *!} t|՜dVAʐKZK۶Ww4MQl s n=RnYOawLE$mhs[`mE+^D<*اz yqo$5ND_ͭeA <)Wadw(Yy7G6(t.p]<1rf $II]NACFEIL7,z*_x0AhBt<-ypy^C{Mo[~Il~ ?y~m †#ZA_=v["pQ\%-_aa'fJQwH`hgnإC~}el5bnfGcK\j=#/s+bA ];H'\SILWd¼a8B +XŰ`[|;B/sUix <(2Ԡ쩺n_[88ڀӨn䆥>ǡh{g̽5/ۑ"ꔫtJ}?;,ruQ3 r6t(ҧw8d(rODS{\ -pK6jVvӼI1a P*:nQS}?Rv ,9MY/%Pu\PߊxOz(z}'ʿW5[Q$rnNP,0G?*a wno 4ALgMǰځ "d!'!RUy&YF`6]$حD;~uKG<'޸`ߜdž7G~2e]#:Fkb7dn}>~jS"0z\P,meb̟%&[0ҙhS鐼0DY,,#p/k"B3Q6L3b끎)r54/QBxA`eЪ?(+/,GC%4oVa?BvQLemY3e 2ɕh\ljL) wKݥ4NԎdI+^5bdW@[&jl%Η!.WFeѭJް?ujfĦQmmP%}Av`| `Cs zȘLHj"v ;NهFr{z vҤie9w\Rxf[~)ڱ?8L 7!uy$Ѣ #)5߹U]d׃i[yΝ?{2^pāsJ ouYPL4my}"3ܦCs&<4aEi1L1w~LYXŐzͽX))`@d!_gĚа[.{k}x:JNJS wΉʵP̫WcG~ch"+OO50q(fovZo@g#Jjo2p[ݚQ=uYlꮛ?1mq{=yJ /X\~ڨى&_vY. OVQKeΐsDi\9tpr2fPtPj>k,+xœaAzcҞ7ZSTu8xZ)L|~ى3l$Nf)Z*_ g4,KИ19ΆQC[X|ہcFV;;Hx,jSM,I}}6?X~5=S9h$O/ԫQ:anc(hJ4q6Cm*qrSE.XqUBѐu(f bѦ@6)JAhj۸,y5O>a;@_0Qs}N!FIP QaT:ׁfA؀K'דcNQde'\v*., Lo~0,iL|k*` l}#`Mc/c9/clb켉(.=R!2T7S !5;K]@60q{Kd(q^}:ɛVCH6X.5=A*B1[ĞnoELиĄnݜ;~;f o- DLJf(ӎMeH>qB uګ+hBuBCx-ljL3|AlWB؈3ii;mb" >–Ghceҥ&3>j|I|R&%W*v&{G+@;20w~P YUT+ݡz"HcQ'Cc L,q3b;h]\rRHcV)`UN3ϾBҾidԝ Ֆf{\>U+.qw[|kU7!,C!K;?E 1oų|>/׫+pUKaY یU97:odTDXXŸVJ QA 8Cb^oOl>\]mX;uux L[;D}7poc1E9*"զ ac7tk3eݢyc2ˑg޽ U5>y-lfGP5A/xğ,"؅ppR9'e#ÛX4}X :m4^|o4Mn}EiNl RZCݏJnr K }ND&>h:^bK+/q]oǝ\O^]=Zň}*x_Kv-= 3wnA Tѿ CF8ɩF_J]b` aƶ%$1C?bor"J9L/#}KP nڱk5b]X`3:Xs{܁ ] J4Fa#6ٟpN1vl:ݘSE 8da,eFwȲfdd܋{+<R*m#eG݃NmJ)?;Dxl: ܭaCgd Xp@ aylvAq\#eIdT gut`KB{LKsI<򪍺`\_AvJA#*L!|s(_ѽ0i6'n9i hhgܘ73RT zw#gE[U=bh[\珪I7FnMPGDO 3H;SV& ?&yGB_ƒzNoj~Gy BCFC[C|Hl7ZayUQw@\z 8ّ {~Dئc+pe#"s%r^Gj \PBJARziuX,"ËnSߝxj̝)"w*%n€ ]`a IkJw 竁D6.d'dqܨ9 Aa;. :܋|'0f FgB  _gBĚ(y#hp%7iHy:Z <*xAH AUSfBI]qr @enq@[`0Apο% 1C, ̍NSCz3bS~-ȷ:"EC¨jgYx?ZP2rq;+)oFX5J*y˃[223ЮYЄ%% <H1ͺfOET #ey%k|R -IOm=,6(0Kf!Øfu$59XqR|tmjwHYX>rvbx$eCŽpb`NZ*Υpeh&JT5VagҞ7WAbrhO?̯fax\Պfڪc5}pUGvb%ڽN5&1  s`WqWmoAOyUHBX~]SdWI}{>"*AjCj ҅dܺV!6Ek/,-1k"<26},Bj6HG7jcac*ƽM@ax6}k0 tR'V;U,[馶7 e<ݚ V86IĿw%ҡ?7nee=-{vY3^ВlkP`hs٧άj1X>#aA p? 0A_Xc\/-DtbH2ݔӼ{ ŵ;rDYah"Mv(sBF ##&l $Us0J_ӊh/mY{h|CMe'ZI>tq {ܛCQqlSwKWC>hqO!dw{>';IbǐyX'Jt"cC {0%Hw3(iSpDg:ZKGx-Hᘥn|ˎrաsM r1-^ =qf#wFhш!xa5GK.ުAJÀpPX1_5>}{+<M_WbF⊛T&'mr)н:ψWv'%v`.yF?gZίzW'-~t^0N\d9$uEWS+⯟؃ʬc4^/{D :km!Y*J)P*)21719bDJ#/JlK, Bs>l?5AdtOє[ gL63-(^W[NVcSշ ^a'$pVcΪtHg:nZ]qtP3Nj8 3*. #tB"$iCGkjE6%_`~ ƽ_1wSp>2tS$#;jb+A_/~FYkO&*PI8;sp9zτ䆴4{PL68FѾN6:QaV !=1N43sK2Β^ڽ$d+uR̾_+R_h*7X@N9:gFXPc,t]F/wg_U<F3% .m%Wll# `JwCh͑Y2gd8o1$L9|HUZpO]ML fU6*ˣfA^@v]W9ϥsڧ+ى PsXܩZ;qha6'^*"ot#sf&t|mHEQHr: @ {?hJ{+YP+Vx7~Xoy(g5T L JWZ<B\<9w6?%d ȅrHe4>&V 5vV G*<);`/yȮYPHiIfi{ܛDCp1%|Pc#K(SXXE'OmV?Nw}Ȳ9_[~s]`MW7yL%Úd #G'rY"Si SrNpnϹn%/N @@ܞx5ob pPP Q0*w˜}t>l/kVb+k:j>aĐ3f 7[Od jodU)+ 8I7|1tP|&WJA%F: !]CclrC~10ct؞H:%EkRr*5v7Bb]AcXLy"H &[aqx&О\~`̱dZru]^YX5!xٴƻ糦󁷝 c#_w_ZX;N斒rZ󱐽"&eQy&X mxQvV gkV>Ah`cF6{k2qSN-OvM] 5^M\+\HF<:6KI!i*H5?QjrEyAayb/= )IvW ?G &4 a {XmkGy-]=((IN< _1.  !PVj7weϾ.)w}`;yO[G.zta_*KP)\roZ<|RcJ5W-y:mb2Jj Θj8_8$ɁLX[yqCMif>c t'9}] y %vgVrONr~5¼\`oa.f1a}[*(*X/4G)`(͸o+Jӛdoeb߁tmajVC9IFK$u]c扽cX{ڋaFV*9zUQH)(P_c3CǺ' EHNѹ\# #Cer<͸7u3.?Ksvys>9Çm@T-pЇ8e{#J_3Ik>:D~MtS*f+6b(Y^pҚCr2Ap_RM}?JAj~ɖaofH7pd<ꅅ s7/&u7񮿟!OwTi#ҀK D@&h7$kC? N,?O=ן=>~hb]5Ѱ?Bd=c4b#L%^"$𑫕Ldkپ:dꅉkIev6n {Z;iNy"Qq1y&i°`DDB۲^:edh.^XUI8j׉_ k!%䩑 W,xܟ7˩]H煠'!7 "vp*VVvE LIqeVh7(,0*GjSZcYAF[Gzǭo290h|OSHcLШ ^!f))6#Rpwt3T;U#vg& 1oUR>9o8C*Gt\o^Z(24Lh)-<t_SXLꭙ/jMC{ϮN?@d雵AsxVQnE!Y纑)TlUE/Cn h̙\D+Il#OE]  ! ye5#Rs3_<$=eƣ/'_2~>eˆWI{`UPtf.jWȈwWa(7AOV tA ЗqhC$Sи/pFyץc{/t޼?X"M6#Xn:3_; x Jp8QjcdH?dqIi m_IR h֋0FMv|KG^8 M߉e a#Tw>i##+iCO1xXɇ:'fۑM"uV9@"0Z,v8FЍ&uK1C;kە cnk˝km Mf<C# 7Nb<3^Ϲg gqN> >:7J cP=D}|3^A5mSW RuXѼF-;ofWȍb?z}ژY6&SK:ߨL6xG!p 8h >xc̽˚ [YءT<+.\`펓Rkr 5I=3Sf?-fm$+(?dvR*',K $\${l,>(}QRUzi$7bY#Ni'n9=ll|6B<)4LɄO?6XB\bJzdhߞ-dlu>yC?#9c ~/{Q]zb^Ds}fbH<=9c ׷qK<*gr=g#@u_p"D| Xb3*9QB?WM>30DrjVOJ*`1DF|[CPSLi &066:gƭVź{#6zeC$!xTDׇ~˶oag}a’z/j 6g"o%_7YGLS1nΑwŰ %>.߽̃M@كg]v7i*4$tF:ݒ lbOZ`3wA Y)eH*Op20b% cd(Gpڳ Ќ~`9EjěAl@2#ԩ4&q<&>z`am)<, UΔ|G_I#Ŗ{8ٟїO[hӹaK%8ǕyndUdDDnkzڀ! ߂ј#岄QKv?^ȭcyr#}rJ#)00 r88:lA Zٙ'D* ׈ Xt}}Y]?]˟p(UÛuQ`ULO&U\~cCkK7M&V ӝcfykĪl8f g58tMJ.5;pg{ AҲe,[+ߘb#?2Ć>6}7$E<՗p}:IJ쩆n<{Ӯe#]NsW7crv1=Y"b<%t==p4<m<~|4iozv%a@IWc G[' 0tppkP yE9脋OM\m/^\t#a㖂8̉HRR:Thkpeqa"QKu'Ӯ"rA# V ÒOݒ^b?nB.C>OQAƷ4WmU^EBg @)P|y7Rs{e^&.k4/irnF<+e.F 'W0McWhgLw iN-q۲ a54Up#(bJ?j4K((fB ZU.|q,[>AM2O9j03h^0{]k`2Bmr#b {hChmM[DY@QU ''0P[11 $v æ歹l (/OӷRCy)ݍ*2|04+(+%D$UX5ӯ2q/6p|_Cr Ǵ&7k!՗aqK (=t%mslS IlxIcYI)\<=_O Szh^?6fp^~0WWInX5z"=:Ė7/ d5ui{]ohn$3t[dc!pTd A&yL_I6/+}29g;X 5Z=G9DO_Q͡tfQ(OCX#r+B”Y,5- MpNL#W1,C*eo2 OӔLCuzwΛ>+[}%X5oAeӲ@bMHWv4 HXA1?GaǃL]hfq+n;2~09؍N>7 YJ06#Լy zF2 :W|Pg`7ޢ)p\Y(G} #Pjd L6-"OO(I IHcOSY 葎\ V?䐗Fۙ3U2bHLsyj**-xhw=+T])`qڗe`y2.kNue Yg\R!yqD* &9-}G 9@L2Lׂ~+w0EE[`{'t8E9LQNIdD i`?"uC2>ⱩO.nwoXC%W7ձ_qvIM`'8.'4E5ҩ* R]cUZ3}|j׉ȡfkzm&NInL8O.y1Efnm671A/ f˽ 5^N4_|2!׃ @B.70-F1Ƌ#*LXP4hOWľ٥(\D:m2vz"/#\^!%t}Tr0 wfcg쩕vf] p]MfK*W&YB2v<. /=&OmeTYuigrk #4rk/A-A,=E >!i^qz6D `%n,;X? -ʿà1[n+_륱YN5fktvef7 6^/Uw>8t!-r)kz`imWd{vRhkV\5`tfm$)T7w<`MV;@cV 7y2Ns0+nϺ t ȩ_suC]»IUnn n;/"kK{xazȭa=K@Ǫ/Dmbz-4emWBzXspHF;ѕOxINѱ\pcSfJ7+Jxs@-3A`bE)Z \n-%1W8q0E7YuIۼ @./;>Ar#1IA .z϶M!0~B$:0KOQ=KruodEdBaE%3^JJ22=h~$F-դyc.G08O=zy nw:^%JsX1Uۺ@#'{b2Te&/*Sk^"jzp 4Y ^;NC-Wҗȩ5܌yBb6=Pm]$oMc\:{"c #"SyEHsb#|_If*8j{p95<~dfr\%)ekhبL\](9$2lk">Vdds|)RȰK,4RMͲ  m0߇of/il@ O09ɇ5+]oY8wX\ $-`z>s3yfe4]$j1?tP H j%jj2CU>  ¯2"; GaL8U5D~DT8Ta̵\ɨ/>{%UIv@_!$,~3j!ɁRʎ?*'na!iDsGoK}vyL{ ro@ô٧ ڂ%8y"A`̝|kzQ Nٽ9QH72(7vRذɸX*6gЕAЄ7v[,|gN^ao;OBuUbE6/<7ooR֧j-$GIې0&{Ra-|qTCJQcEmF_ .GW;ri5ߥˌǟAeW4̰ LeFiDą _\c=A/тmG_̐3dބNG~w%2fmC(![i9iMʄ-\Ip <VS4 E-LrQPCrb-k-m[ֈ% rào7jjꁚ@aek75UuQ/5HeIfV<>cK]#!@jΠIjp]a hMYT#{uk|8VaZV܌MqeD\2?2pBͫC>|:FХF`F\Gjϊr+@/1(r{ҋzϜpӋ cu6#U?m$~gF3q3p}Yzs6;0/W/5Y" UqN[nnX_,eQV&ZokNT `Y)@7rA!v k}!Y G_u>e#I^2mHAĿS bdM@ p': N[EEQ̮JԀID-[k$DJ 8ވji߽1Ovo#An?AV͜{ǍY[ٛon動Kd>Pk=ù~t,6݊ԫȴCsJɮ N2㓬IFF:Vu__7G|SKj+L98R jrh^}6,'qĨ*I}wg=@3. yq]it|gݼƜQ=ca+jAN,8k:ZA䍻GQsĄ"Cd ph16RŪ7Yisc]gV$%(q"u?wTNё:՜>l_ )ƚ\[$?zPrpi,['+=)[7Ӫ3lao #.r;1j=ľɕ94pInq52Nc &MSmRjˀI~Ԩ/}`T`SUc֞-5<+pb4 .&yXȮ3&bKۖcMGI)ɂg}[d܌tcbt0k8 y|MC{1|dB\R SȖi?CL3w ۤ}zsڗav'cDى֝k*py,mBli8K̴6Ɇor" V9=ԉ mJ։$ oO57dcfdwT3pV8@ZUşU{G_S*wf fn_gߴ.  ǩvbŘl{E?=XL&n xs6U(U:!lï8'kK$e7=W"cːlm υ"EPzYr;=3"9{jDљy^7I;:gmzi$O%1$քJAv}Q8:I)sa4 ʅE.{C#qzXs>aUͱIè6Kd/RtCx"kz7 dvrt"m^*}s5Yaz(*/e| 7ۈ1 d*TĆK㤝}0qfO/#F?tG6n˝ 'f]MZPJ?,RDTT"EK2R($UeGDvXiE. .TcLeltq fV=˿ %Th|,v+d9<1 Sp˵ FIZ¤~O*I+;sO!1F,)nv%\ߙ<Gc,do~IdL-*X2vn(VԈq[ b۶50qC(܊N=yVji,^gQ"*[p#%zOi>ftY++^.sAЄ0/]n)gkymF"I;Y9O':qz"pgbRga *ۙtv@i/oG؇YoOVr1e|H՛.i$)=J4MoomMq.IjU~#O2``gmoB.ARFHUjTD-޶lTbl10dtvxeOhaK6)1`Q?(ID:sZؼɀ92c#d/n] 6hf'k6˛_^Q4`sǤU',Pِl喒d`wZvR l&G)2@\[L^ ߈\e{Q0%" -m~晼;23SBX|PIϧ>q>[_[Oިoy|꒿:@}ht'Uq '"y P[Fe _V((ƀ@B `T`7.JPJ"u/K ?b<B$AF{@JQ::^DzjvJYD\靳.-Mfq6U͢R+Vv}/Wz2dW*2?_fXgYڡpA,!:) YgXgR?g/1ӚUD~k6_lOWE2hqޥϑUɻ.бT cyo};:Lf_qc|):&au(V{ly>+˛S@MdJ ]? T.21ٴm[4Ml^c\!n+9]~28 L!u縥w}L$ gٰt4D?4W&@ 0RiԢ{5&N/`@F"uC}!'{˨l<Ӻ8CxV W<