diff options
Diffstat (limited to 'poky/meta/recipes-graphics')
187 files changed, 1896 insertions, 3429 deletions
diff --git a/poky/meta/recipes-graphics/cairo/cairo-fpu.inc b/poky/meta/recipes-graphics/cairo/cairo-fpu.inc deleted file mode 100644 index fe7c53337a..0000000000 --- a/poky/meta/recipes-graphics/cairo/cairo-fpu.inc +++ /dev/null @@ -1,6 +0,0 @@ - -def get_cairo_fpu_setting(bb, d): - if d.getVar('TARGET_FPU') in [ 'soft' ]: - return "--disable-some-floating-point" - return "" - diff --git a/poky/meta/recipes-graphics/cairo/cairo.inc b/poky/meta/recipes-graphics/cairo/cairo.inc deleted file mode 100644 index 20e0d2c92a..0000000000 --- a/poky/meta/recipes-graphics/cairo/cairo.inc +++ /dev/null @@ -1,48 +0,0 @@ -SUMMARY = "The Cairo 2D vector graphics library" -DESCRIPTION = "Cairo is a multi-platform library providing anti-aliased \ -vector-based rendering for multiple target backends. Paths consist \ -of line segments and cubic splines and can be rendered at any width \ -with various join and cap styles. All colors may be specified with \ -optional translucence (opacity/alpha) and combined using the \ -extended Porter/Duff compositing algebra as found in the X Render \ -Extension." -HOMEPAGE = "http://cairographics.org" -BUGTRACKER = "http://bugs.freedesktop.org" -SECTION = "libs" - -LICENSE = "MPL-1 & LGPLv2.1 & GPLv3+" -LICENSE_${PN} = "MPL-1 & LGPLv2.1" -LICENSE_${PN}-dev = "MPL-1 & LGPLv2.1" -LICENSE_${PN}-doc = "MPL-1 & LGPLv2.1" -LICENSE_${PN}-gobject = "MPL-1 & LGPLv2.1" -LICENSE_${PN}-script-interpreter = "MPL-1 & LGPLv2.1" -LICENSE_${PN}-perf-utils = "GPLv3+" - -X11DEPENDS = "virtual/libx11 libsm libxrender libxext" -DEPENDS = "libpng fontconfig pixman glib-2.0 zlib" - -PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11 xcb', '', d)} \ - ${@bb.utils.filter('DISTRO_FEATURES', 'directfb', d)}" - -PACKAGECONFIG[x11] = "--with-x=yes -enable-xlib,--with-x=no --disable-xlib,${X11DEPENDS}" -PACKAGECONFIG[xcb] = "--enable-xcb,--disable-xcb,libxcb" -PACKAGECONFIG[directfb] = "--enable-directfb=yes,,directfb" -PACKAGECONFIG[valgrind] = "--enable-valgrind=yes,--disable-valgrind,valgrind" -PACKAGECONFIG[egl] = "--enable-egl=yes,--disable-egl,virtual/egl" -PACKAGECONFIG[glesv2] = "--enable-glesv2,--disable-glesv2,virtual/libgles2" -PACKAGECONFIG[opengl] = "--enable-gl,--disable-gl,virtual/libgl" - -#check for TARGET_FPU=soft and inform configure of the result so it can disable some floating points -require cairo-fpu.inc -EXTRA_OECONF += "${@get_cairo_fpu_setting(bb, d)} \ - --enable-tee \ - " - -inherit autotools pkgconfig upstream-version-is-even gtk-doc - -# We don't depend on binutils so we need to disable this -export ac_cv_lib_bfd_bfd_openr="no" -# Ensure we don't depend on LZO -export ac_cv_lib_lzo2_lzo2a_decompress="no" - -BBCLASSEXTEND = "native" diff --git a/poky/meta/recipes-graphics/cairo/cairo_1.14.12.bb b/poky/meta/recipes-graphics/cairo/cairo_1.14.12.bb index 075ca1ed34..18b947948a 100644 --- a/poky/meta/recipes-graphics/cairo/cairo_1.14.12.bb +++ b/poky/meta/recipes-graphics/cairo/cairo_1.14.12.bb @@ -1,7 +1,27 @@ -require cairo.inc +SUMMARY = "The Cairo 2D vector graphics library" +DESCRIPTION = "Cairo is a multi-platform library providing anti-aliased \ +vector-based rendering for multiple target backends. Paths consist \ +of line segments and cubic splines and can be rendered at any width \ +with various join and cap styles. All colors may be specified with \ +optional translucence (opacity/alpha) and combined using the \ +extended Porter/Duff compositing algebra as found in the X Render \ +Extension." +HOMEPAGE = "http://cairographics.org" +BUGTRACKER = "http://bugs.freedesktop.org" +SECTION = "libs" + +LICENSE = "MPL-1 & LGPLv2.1 & GPLv3+" +LICENSE_${PN} = "MPL-1 & LGPLv2.1" +LICENSE_${PN}-dev = "MPL-1 & LGPLv2.1" +LICENSE_${PN}-doc = "MPL-1 & LGPLv2.1" +LICENSE_${PN}-gobject = "MPL-1 & LGPLv2.1" +LICENSE_${PN}-script-interpreter = "MPL-1 & LGPLv2.1" +LICENSE_${PN}-perf-utils = "GPLv3+" LIC_FILES_CHKSUM = "file://COPYING;md5=e73e999e0c72b5ac9012424fa157ad77" +DEPENDS = "fontconfig glib-2.0 libpng pixman zlib" + SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.xz \ file://cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff \ file://0001-cairo-Fix-CVE-2017-9814.patch \ @@ -10,16 +30,43 @@ SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.xz \ SRC_URI[md5sum] = "9f0db9dbfca0966be8acd682e636d165" SRC_URI[sha256sum] = "8c90f00c500b2299c0a323dd9beead2a00353752b2092ead558139bd67f7bf16" -PACKAGES =+ "cairo-gobject cairo-script-interpreter cairo-perf-utils" +inherit autotools pkgconfig upstream-version-is-even gtk-doc multilib_script -SUMMARY_${PN} = "The Cairo 2D vector graphics library" -DESCRIPTION_${PN} = "Cairo is a multi-platform library providing anti-aliased \ -vector-based rendering for multiple target backends. Paths consist \ -of line segments and cubic splines and can be rendered at any width \ -with various join and cap styles. All colors may be specified with \ -optional translucence (opacity/alpha) and combined using the \ -extended Porter/Duff compositing algebra as found in the X Render \ -Extension." +MULTILIB_SCRIPTS = "${PN}-perf-utils:${bindir}/cairo-trace" + +X11DEPENDS = "virtual/libx11 libsm libxrender libxext" + +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'directfb', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11 xcb', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'opengl', '', d)}" + +PACKAGECONFIG[x11] = "--with-x=yes -enable-xlib,--with-x=no --disable-xlib,${X11DEPENDS}" +PACKAGECONFIG[xcb] = "--enable-xcb,--disable-xcb,libxcb" +PACKAGECONFIG[directfb] = "--enable-directfb=yes,,directfb" +PACKAGECONFIG[valgrind] = "--enable-valgrind=yes,--disable-valgrind,valgrind" +PACKAGECONFIG[egl] = "--enable-egl=yes,--disable-egl,virtual/egl" +PACKAGECONFIG[glesv2] = "--enable-glesv2,--disable-glesv2,virtual/libgles2" +PACKAGECONFIG[opengl] = "--enable-gl,--disable-gl,virtual/libgl" + +EXTRA_OECONF += " \ + ${@bb.utils.contains('TARGET_FPU', 'soft', '--disable-some-floating-point', '', d)} \ + --enable-tee \ +" + +# We don't depend on binutils so we need to disable this +export ac_cv_lib_bfd_bfd_openr="no" +# Ensure we don't depend on LZO +export ac_cv_lib_lzo2_lzo2a_decompress="no" + +do_install_append () { + rm -rf ${D}${bindir}/cairo-sphinx + rm -rf ${D}${libdir}/cairo/cairo-fdr* + rm -rf ${D}${libdir}/cairo/cairo-sphinx* + rm -rf ${D}${libdir}/cairo/.debug/cairo-fdr* + rm -rf ${D}${libdir}/cairo/.debug/cairo-sphinx* +} + +PACKAGES =+ "cairo-gobject cairo-script-interpreter cairo-perf-utils" SUMMARY_cairo-gobject = "The Cairo library GObject wrapper library" DESCRIPTION_cairo-gobject = "A GObject wrapper library for the Cairo API." @@ -32,15 +79,9 @@ to replay rendering." DESCRIPTION_cairo-perf-utils = "The Cairo library performance utilities" FILES_${PN} = "${libdir}/libcairo.so.*" -FILES_${PN}-dev += "${libdir}/cairo/*.so" FILES_${PN}-gobject = "${libdir}/libcairo-gobject.so.*" FILES_${PN}-script-interpreter = "${libdir}/libcairo-script-interpreter.so.*" -FILES_${PN}-perf-utils = "${bindir}/cairo-trace ${libdir}/cairo/*.la ${libdir}/cairo/libcairo-trace.so.*" +FILES_${PN}-perf-utils = "${bindir}/cairo-trace* ${libdir}/cairo/*.la ${libdir}/cairo/libcairo-trace.so.*" +FILES_${PN}-dev += "${libdir}/cairo/*.so" -do_install_append () { - rm -rf ${D}${bindir}/cairo-sphinx - rm -rf ${D}${libdir}/cairo/cairo-fdr* - rm -rf ${D}${libdir}/cairo/cairo-sphinx* - rm -rf ${D}${libdir}/cairo/.debug/cairo-fdr* - rm -rf ${D}${libdir}/cairo/.debug/cairo-sphinx* -} +BBCLASSEXTEND = "native" diff --git a/poky/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_git.bb b/poky/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_git.bb index 9d8fb28281..db480bd397 100644 --- a/poky/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_git.bb +++ b/poky/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_git.bb @@ -10,10 +10,10 @@ SECTION = "fonts" LICENSE = "OFL-1.1" LIC_FILES_CHKSUM = "file://COPYING;md5=df91e3ffcab8cfb972a66bf11255188d" -PV = "0.0.24" +PV = "0.0.25" -SRCREV = "07b6ea2cbbebfc360aa4668612a376be5e214eaa" -SRC_URI = "git://gitlab.gnome.org/GNOME/cantarell-fonts;protocol=https;branch=master" +SRCREV = "e28a9096da43984212b5b4002b949bcb8c7527f9" +SRC_URI = "git://gitlab.gnome.org/GNOME/cantarell-fonts.git;protocol=https;branch=reconstruction-0.0.25" UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(?!0\.13)(?!0\.10\.1)\d+\.\d+(\.\d+)+)" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.24.bb b/poky/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.26.bb index ca5e0ae414..8a0dda5427 100644 --- a/poky/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.24.bb +++ b/poky/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.26.bb @@ -3,5 +3,5 @@ require clutter-gst-3.0.inc LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \ file://clutter-gst/clutter-gst.h;beginline=1;endline=24;md5=95baacba194e814c110ea3bdf25ddbf4" -SRC_URI[archive.md5sum] = "3e145e24bb3c340eeeddafd18efe547d" -SRC_URI[archive.sha256sum] = "e9f1c87d8f4c47062e952fb8008704f8942cf2d6f290688f3f7d13e83578cc6c" +SRC_URI[archive.md5sum] = "7809ca6ce9d1a3490597fd4a7375c389" +SRC_URI[archive.sha256sum] = "d8618a6d9accec0f2a8574c5e1220051f8505fb82b20336c26bdbd482aa6cb3a" diff --git a/poky/meta/recipes-graphics/drm/libdrm/0001-configure.ac-Allow-explicit-enabling-of-cunit-tests.patch b/poky/meta/recipes-graphics/drm/libdrm/0001-configure.ac-Allow-explicit-enabling-of-cunit-tests.patch deleted file mode 100644 index 40bebc0f50..0000000000 --- a/poky/meta/recipes-graphics/drm/libdrm/0001-configure.ac-Allow-explicit-enabling-of-cunit-tests.patch +++ /dev/null @@ -1,53 +0,0 @@ -From e6bd4205b0b546afe991ae6f72256645f4404ad4 Mon Sep 17 00:00:00 2001 -From: Jussi Kukkonen <jussi.kukkonen@intel.com> -Date: Mon, 5 Sep 2016 14:41:37 +0300 -Subject: [PATCH libdrm] configure.ac: Allow explicit enabling of cunit tests - -Add --with-cunit to make it easier to do reproducible builds. Default -is still to probe cunit and build opportunistically. - -Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> -Upstream-Status: Submitted [mailing list] ---- - configure.ac | 14 ++++++++++++-- - 1 file changed, 12 insertions(+), 2 deletions(-) - -Index: libdrm-2.4.91/configure.ac -=================================================================== ---- libdrm-2.4.91.orig/configure.ac -+++ libdrm-2.4.91/configure.ac -@@ -163,6 +163,12 @@ AC_ARG_ENABLE(install-test-programs, - [Install test programs (default: no)]), - [INSTALL_TESTS=$enableval], [INSTALL_TESTS=no]) - -+AC_ARG_WITH([cunit], -+ [AS_HELP_STRING([--with-cunit], -+ [Build tests that use cunit (default: auto)])], -+ [], -+ [with_cunit=auto]) -+ - dnl =========================================================================== - dnl check compiler flags - AC_DEFUN([LIBDRM_CC_TRY_FLAG], [ -@@ -411,7 +417,7 @@ else - AC_DEFINE(HAVE_RADEON, 0) - fi - --if test "x$AMDGPU" != xno; then -+if test "x$with_cunit" != xno -a "x$AMDGPU" != xno; then - # Detect cunit library - PKG_CHECK_MODULES([CUNIT], [cunit >= 2.1], [have_cunit=yes], [have_cunit=no]) - # If pkg-config does not find cunit, check it using AC_CHECK_LIB. We -@@ -436,7 +442,11 @@ if test "x$AMDGPU" = xyes; then - AC_DEFINE(HAVE_AMDGPU, 1, [Have amdgpu support]) - - if test "x$have_cunit" = "xno"; then -- AC_MSG_WARN([Could not find cunit library. Disabling amdgpu tests]) -+ if test "x$with_cunit" = "xyes"; then -+ AC_MSG_ERROR([Could not find cunit library but --with-cunit was given]) -+ elif test "x$with_cunit" = "xauto"; then -+ AC_MSG_WARN([Could not find cunit library. Disabling amdgpu tests]) -+ fi - fi - else - AC_DEFINE(HAVE_AMDGPU, 0) diff --git a/poky/meta/recipes-graphics/drm/libdrm/fix_O_CLOEXEC_undeclared.patch b/poky/meta/recipes-graphics/drm/libdrm/fix_O_CLOEXEC_undeclared.patch deleted file mode 100644 index 4708bf1ebb..0000000000 --- a/poky/meta/recipes-graphics/drm/libdrm/fix_O_CLOEXEC_undeclared.patch +++ /dev/null @@ -1,24 +0,0 @@ -drmdevice.c: define _GNU_SOURCE - -Include config.h to fix this build error with uclibc: - -libdrm-2.4.66/tests/drmdevice.c: In function 'main': -libdrm-2.4.66/tests/drmdevice.c:96:60: error: -'O_CLOEXEC' undeclared (first use in this function) -fd = open(devices[i]->nodes[j],O_RDONLY | O_CLOEXEC, 0); - -Upstream-Status: Pending - -Signed-off-by: Maxin B. John <maxin.john@intel.com> ---- -diff -Naur libdrm-2.4.66-orig/tests/drmdevice.c libdrm-2.4.66/tests/drmdevice.c ---- libdrm-2.4.66-orig/tests/drmdevice.c 2016-02-23 11:34:02.054904502 +0200 -+++ libdrm-2.4.66/tests/drmdevice.c 2016-02-23 11:35:34.371750383 +0200 -@@ -21,6 +21,7 @@ - * - */ - -+#include <config.h> - #include <errno.h> - #include <stdio.h> - #include <stdlib.h> diff --git a/poky/meta/recipes-graphics/drm/libdrm/installtests.patch b/poky/meta/recipes-graphics/drm/libdrm/installtests.patch deleted file mode 100644 index ec1fb0236e..0000000000 --- a/poky/meta/recipes-graphics/drm/libdrm/installtests.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 5c6eb43c2f6e7f2ee7c25c92e42f4e4403fa0527 Mon Sep 17 00:00:00 2001 -From: Jussi Kukkonen <jussi.kukkonen@intel.com> -Date: Tue, 21 Feb 2017 14:37:52 +0200 -Subject: [PATCH] tests: also install test apps - -Upstream-Status: Inappropriate [configuration] - -Signed-off-by: Yu Ke <ke.yu@intel.com> -Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> ---- - tests/Makefile.am | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/tests/Makefile.am b/tests/Makefile.am -index 0355a92..b4882cd 100644 ---- a/tests/Makefile.am -+++ b/tests/Makefile.am -@@ -45,3 +45,4 @@ TESTS = \ - check_PROGRAMS = \ - $(TESTS) \ - drmdevice -+bin_PROGRAMS = $(check_PROGRAMS) --- -2.1.4 - diff --git a/poky/meta/recipes-graphics/drm/libdrm/musl-ioctl.patch b/poky/meta/recipes-graphics/drm/libdrm/musl-ioctl.patch new file mode 100644 index 0000000000..e3d6c5b853 --- /dev/null +++ b/poky/meta/recipes-graphics/drm/libdrm/musl-ioctl.patch @@ -0,0 +1,35 @@ +Upstream-Status: Submitted +Signed-off-by: Ross Burton <ross.burton@intel.com> + +From 46c0fd6c827a8cb4d04e067bf04fab579ac4712e Mon Sep 17 00:00:00 2001 +From: Ross Burton <ross.burton@intel.com> +Date: Mon, 18 Jun 2018 15:07:03 +0100 +Subject: [PATCH] tests/nouveau/threaded: adapt ioctl signature + +POSIX says ioctl() has the signature (int, int, ...) but glibc has decided to +use (int, unsigned long int, ...) instead. + +Use a #ifdef to adapt the replacement function as appropriate. +--- + tests/nouveau/threaded.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/tests/nouveau/threaded.c b/tests/nouveau/threaded.c +index 3669bcd3..e1c27c01 100644 +--- a/tests/nouveau/threaded.c ++++ b/tests/nouveau/threaded.c +@@ -36,7 +36,11 @@ static int failed; + + static int import_fd; + ++#ifdef __GLIBC__ + int ioctl(int fd, unsigned long request, ...) ++#else ++int ioctl(int fd, int request, ...) ++#endif + { + va_list va; + int ret; +-- +2.11.0 + diff --git a/poky/meta/recipes-graphics/drm/libdrm_2.4.91.bb b/poky/meta/recipes-graphics/drm/libdrm_2.4.94.bb index c490285883..d6542921f5 100644 --- a/poky/meta/recipes-graphics/drm/libdrm_2.4.91.bb +++ b/poky/meta/recipes-graphics/drm/libdrm_2.4.94.bb @@ -8,27 +8,34 @@ SECTION = "x11/base" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://xf86drm.c;beginline=9;endline=32;md5=c8a3b961af7667c530816761e949dc71" PROVIDES = "drm" -DEPENDS = "libpthread-stubs libpciaccess" +DEPENDS = "libpthread-stubs" SRC_URI = "http://dri.freedesktop.org/libdrm/${BP}.tar.bz2 \ - file://installtests.patch \ - file://fix_O_CLOEXEC_undeclared.patch \ - file://0001-configure.ac-Allow-explicit-enabling-of-cunit-tests.patch \ - " + file://musl-ioctl.patch" +SRC_URI[md5sum] = "e9803233838007047f39eb385c70d9e0" +SRC_URI[sha256sum] = "b73c59b0a3760502c428ba81de49cd4807657d26be5e697eba3a87dd021d16be" -SRC_URI[md5sum] = "23d87cda92700b710a37d9b8edaa9f54" -SRC_URI[sha256sum] = "634a0ed0cc1eff06f48674b1da81aafa661a9f001e7a4f43dde81076886dc800" +inherit meson pkgconfig manpages -inherit autotools pkgconfig manpages - -EXTRA_OECONF += "--disable-cairo-tests \ - --without-cunit \ - --enable-omap-experimental-api \ - --enable-etnaviv-experimental-api \ - --enable-install-test-programs \ - --disable-valgrind \ - " -PACKAGECONFIG[manpages] = "--enable-manpages, --disable-manpages, libxslt-native xmlto-native" +PACKAGECONFIG ??= "libkms intel radeon amdgpu nouveau vmwgfx omap freedreno vc4 etnaviv install-test-programs" +PACKAGECONFIG[libkms] = "-Dlibkms=true,-Dlibkms=false" +PACKAGECONFIG[intel] = "-Dintel=true,-Dintel=false,libpciaccess" +PACKAGECONFIG[radeon] = "-Dradeon=true,-Dradeon=false" +PACKAGECONFIG[amdgpu] = "-Damdgpu=true,-Damdgpu=false" +PACKAGECONFIG[nouveau] = "-Dnouveau=true,-Dnouveau=false" +PACKAGECONFIG[vmwgfx] = "-Dvmwgfx=true,-Dvmwgfx=false" +PACKAGECONFIG[omap] = "-Domap=true,-Domap=false" +PACKAGECONFIG[exynos] = "-Dexynos=true,-Dexynos=false" +PACKAGECONFIG[freedreno] = "-Dfreedreno=true,-Dfreedreno=false" +PACKAGECONFIG[tegra] = "-Dtegra=true,-Dtegra=false" +PACKAGECONFIG[vc4] = "-Dvc4=true,-Dvc4=false" +PACKAGECONFIG[etnaviv] = "-Detnaviv=true,-Detnaviv=false" +PACKAGECONFIG[freedreno-kgsl] = "-Dfreedreno-kgsl=true,-Dfreedreno-kgsl=false" +PACKAGECONFIG[valgrind] = "-Dvalgrind=true,-Dvalgrind=false,valgrind" +PACKAGECONFIG[install-test-programs] = "-Dinstall-test-programs=true,-Dinstall-test-programs=false" +PACKAGECONFIG[cairo-tests] = "-Dcairo-tests=true,-Dcairo-tests=false" +PACKAGECONFIG[udev] = "-Dudev=true,-Dudev=false,udev" +PACKAGECONFIG[manpages] = "-Dman-pages=true,-Dman-pages=false,libxslt-native xmlto-native" ALLOW_EMPTY_${PN}-drivers = "1" PACKAGES =+ "${PN}-tests ${PN}-drivers ${PN}-radeon ${PN}-nouveau ${PN}-omap \ @@ -49,3 +56,5 @@ FILES_${PN}-kms = "${libdir}/libkms*.so.*" FILES_${PN}-freedreno = "${libdir}/libdrm_freedreno.so.*" FILES_${PN}-amdgpu = "${libdir}/libdrm_amdgpu.so.*" FILES_${PN}-etnaviv = "${libdir}/libdrm_etnaviv.so.*" + +BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-graphics/eglinfo/eglinfo.inc b/poky/meta/recipes-graphics/eglinfo/eglinfo.inc index 8e7d9bddda..07ad07220b 100644 --- a/poky/meta/recipes-graphics/eglinfo/eglinfo.inc +++ b/poky/meta/recipes-graphics/eglinfo/eglinfo.inc @@ -7,15 +7,17 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=8d4f33bc3add976f7dfae85dab66f03c" DEPENDS = "virtual/egl" SRC_URI = "git://github.com/dv1/eglinfo.git;branch=master \ + file://waf \ file://0001-Add-STAGING_INCDIR-to-searchpath-for-egl-headers.patch \ - " + file://0001-Check-for-libegl-using-pkg-config.patch \ + " SRCREV = "4b317648ec6cf39556a9e5d8078f605bc0edd5de" CVE_PRODUCT = "eglinfo" S = "${WORKDIR}/git" -inherit waf distro_features_check +inherit waf distro_features_check pkgconfig # depends on virtual/egl REQUIRED_DISTRO_FEATURES ?= "opengl" @@ -28,6 +30,9 @@ EXTRA_OECONF = "--platform=${EGLINFO_PLATFORM} \ --device=${EGLINFO_DEVICE} \ --sysroot ${STAGING_DIR_TARGET}" +do_configure_prepend() { + install -D -m 0755 ${WORKDIR}/waf ${S}/waf +} do_install_append() { mv ${D}/${bindir}/eglinfo ${D}/${bindir}/${EGLINFO_BINARY_NAME} } diff --git a/poky/meta/recipes-graphics/eglinfo/files/0001-Check-for-libegl-using-pkg-config.patch b/poky/meta/recipes-graphics/eglinfo/files/0001-Check-for-libegl-using-pkg-config.patch new file mode 100644 index 0000000000..0289ac228c --- /dev/null +++ b/poky/meta/recipes-graphics/eglinfo/files/0001-Check-for-libegl-using-pkg-config.patch @@ -0,0 +1,31 @@ +From 58d51d941d3f4dfa38be18282d3e285d76d9020d Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Mon, 13 Aug 2018 15:46:53 -0700 +Subject: [PATCH] Check for libegl using pkg-config + +Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + wscript | 1 + + 1 file changed, 1 insertion(+) + +Index: git/wscript +=================================================================== +--- git.orig/wscript ++++ git/wscript +@@ -160,14 +160,9 @@ def configure_raspberrypi_device(conf, p + conf.env['PLATFORM_USELIBS'] += ["X11"] + elif platform == "fb": + conf.env['PLATFORM_SOURCE'] = ['src/platform_fb_raspberrypi.cpp'] +- conf.check_cxx(mandatory = 1, lib = ['GLESv2', 'EGL', 'bcm_host'], uselib_store = 'EGL') ++ conf.check_cfg(package='egl', args='--libs --cflags') + import os + sysroot = conf.options.sysroot + conf.options.prefix +- std_include_path = os.path.join(sysroot, 'include') +- vcos_pthread_path = os.path.join(sysroot, 'include/interface/vcos/pthreads') +- vcms_host_path = os.path.join(sysroot, 'include/interface/vmcs_host/linux') +- if not conf.check_cxx(mandatory = 0, header_name = ['vcos_platform_types.h', 'EGL/egl.h', 'bcm_host.h'], includes = [vcos_pthread_path, vcms_host_path, std_include_path], uselib_store = 'EGL'): +- conf.fatal('Check if --prefix and --sysroot are set correctly.') + conf.env['WITH_APIS'] = [] + if check_gles2(conf): + conf.env['WITH_APIS'] += ['GLES1', 'GLES2'] diff --git a/poky/meta/recipes-graphics/eglinfo/files/waf b/poky/meta/recipes-graphics/eglinfo/files/waf new file mode 100755 index 0000000000..04ddd9f63a --- /dev/null +++ b/poky/meta/recipes-graphics/eglinfo/files/waf @@ -0,0 +1,169 @@ +#!/usr/bin/env python +# encoding: latin-1 +# Thomas Nagy, 2005-2018 +# +""" +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +""" + +import os, sys, inspect + +VERSION="2.0.11" +REVISION="41b69b45f8aa445dce066a4aec3cdb75" +GIT="fe03c6fa470f0bc3c086baafed8c6b4b6d28a245" +INSTALL='' +C1='#4' +C2='#*' +C3='#)' +cwd = os.getcwd() +join = os.path.join + + +WAF='waf' +def b(x): + return x +if sys.hexversion>0x300000f: + WAF='waf3' + def b(x): + return x.encode() + +def err(m): + print(('\033[91mError: %s\033[0m' % m)) + sys.exit(1) + +def unpack_wafdir(dir, src): + f = open(src,'rb') + c = 'corrupt archive (%d)' + while 1: + line = f.readline() + if not line: err('run waf-light from a folder containing waflib') + if line == b('#==>\n'): + txt = f.readline() + if not txt: err(c % 1) + if f.readline() != b('#<==\n'): err(c % 2) + break + if not txt: err(c % 3) + txt = txt[1:-1].replace(b(C1), b('\n')).replace(b(C2), b('\r')).replace(b(C3), b('\x00')) + + import shutil, tarfile + try: shutil.rmtree(dir) + except OSError: pass + try: + for x in ('Tools', 'extras'): + os.makedirs(join(dir, 'waflib', x)) + except OSError: + err("Cannot unpack waf lib into %s\nMove waf in a writable directory" % dir) + + os.chdir(dir) + tmp = 't.gz' + t = open(tmp,'wb') + try: t.write(txt) + finally: t.close() + + try: + t = tarfile.open(tmp) + except: + try: + os.system('gzip -d t.gz') + t = tarfile.open('t') + tmp = 't' + except: + os.chdir(cwd) + try: shutil.rmtree(dir) + except OSError: pass + err("Waf cannot be unpacked, check that bzip2 support is present") + + try: + for x in t: t.extract(x) + finally: + t.close() + + for x in ('Tools', 'extras'): + os.chmod(join('waflib',x), 493) + + if sys.hexversion<0x300000f: + sys.path = [join(dir, 'waflib')] + sys.path + import fixpy2 + fixpy2.fixdir(dir) + + os.remove(tmp) + os.chdir(cwd) + + try: dir = unicode(dir, 'mbcs') + except: pass + try: + from ctypes import windll + windll.kernel32.SetFileAttributesW(dir, 2) + except: + pass + +def test(dir): + try: + os.stat(join(dir, 'waflib')) + return os.path.abspath(dir) + except OSError: + pass + +def find_lib(): + src = os.path.abspath(inspect.getfile(inspect.getmodule(err))) + base, name = os.path.split(src) + + #devs use $WAFDIR + w=test(os.environ.get('WAFDIR', '')) + if w: return w + + #waf-light + if name.endswith('waf-light'): + w = test(base) + if w: return w + err('waf-light requires waflib -> export WAFDIR=/folder') + + dirname = '%s-%s-%s' % (WAF, VERSION, REVISION) + for i in (INSTALL,'/usr','/usr/local','/opt'): + w = test(i + '/lib/' + dirname) + if w: return w + + #waf-local + dir = join(base, (sys.platform != 'win32' and '.' or '') + dirname) + w = test(dir) + if w: return w + + #unpack + unpack_wafdir(dir, src) + return dir + +wafdir = find_lib() +sys.path.insert(0, wafdir) + +if __name__ == '__main__': + + from waflib import Scripting + Scripting.waf_entry_point(cwd, VERSION, wafdir) + +#==> +#‹‰†[ÿtmp-waf-2.0.11.tar#)ì½kcÛƱ0ܯâ¯`Ôê#)° Z’/iu‚´Ž$>q$?–Ó´Gfq(”‘€•&ïoçº#)¤ä6iŸç4n#‹ÝÙÙûÌì\nãéäâá`^Nª¬˜õ·¿úÉÿíÿ§Ó/ü«ý|¼ð«ƒG?z´øñÁá¯ö?~òèWÝý_ýþ-ËjPt»¿*ò¼Ú”ï®ïõÆý?òï×u.ËâáÅdþ0›¿ï.n««|Þùu7›óÑd~yÔ]Vã½ßBÊ·ÏÞœ¼<ùâ£î‹¼;Ï«n6šTu¯ªjQ=|x3÷&ùË<¿~8™²U漢MæÕ`2@iu•¥+O¦Y§3™-ò¢êæe\dqy[vÆE>ëÞÐtìÊÇoªÉ´ìÜLóáuBϽêªÈˆVï$†Q§*n:[TvXÝ.²RËžUÅrX-ø#* 3Æô¼‚ð»4Ó|~ ¿“y_ÜÙžo†Wƒ"~}úòäíñxÇ,l5ÌU÷%>.Š¼€J‡ÓAYvŸÁÊy+'Ì/¾Ë†U¶FÙ¸›ÔI•¦a™MÇqYÞ3ú¸… =NHøS¹!ú9Ã:ÊÄÉ*I˜E°yVUÅäbYeŠü[#)J¦BŒ$#4š7¬{ƱZ1öêùÞ`ø×å¤È ³·|ì{\Ë5>§ÐË\d<™¦Sd‘M³AÉ œóœÐ`Š†nÞõ rS„*°%Ú+Çœ“rPU·›Kž¨“MËÌŒíóÓÓ7/B3“¨4Lßl:*Óä<ÜþӶΪ(·ÿlßú#4áìëg¯^¥oŽŸ¿Ý#)æU6®<Hoó…÷þfryåçø,¯ª|ÖRáóÓ“³ÓWÇéÙó7ÇÇ'égß|þùñ›ôåÉç§8›|ŸmÇÔZþ|Y”yñ:‡#a’ÏfÆ•Ûfaú·°Âò›íضS¿¬&³åŒ?ºU4}þÍ›³Ó»°F$ÐuUœ”“‹)%Â"FÈ2ySÜ’å|³=ëè’9Ììjá,0 PŽÅ“é`v1tçËÙEVÄ0wËiuįÝÁ|Ô…L!¿FyÑ•³·/ÒÓoÞ¾þæmú峓¯Ž“½ƒN>~óZfR;[¼õ®³bžMö¾Èª³jô%€Ÿf½AqI»Xr.ìßQ ÈJj†doÍý<Ÿ—ù4;Y6ÿl9gÅËù8oV¦Û^¸~EýªÂ¢×ŽÝ™)ú6[Uf~µ ¦ó wUþùd:•‚§Ëj±¬žÃÖ?ôm+|44ûŠV‡¾êììX}Œë}úê§ÄõþÝj‡ÃßH6Î7Ùî#*ëC‘¸ç„wv¢û Ó:Ç?ˆ.h! ÖSÿ#*àžüümHmH¯&e•·Éy¿\Ѿ’„¥9p“ä0Âͯ¾ualì|øÕ;*Ù´}…\[dJ¥%¢ã<ÙpŒ9™‡¥—Ù=F(×úÊ_èaËd`è‚œ#4óbry_‹äþûä$œ*]L˜`IŠ$9‰UÌô‚€¦…Êì'AÅÅÂ¥¡äƒà1Ò®H§“¹•Øã„òÁYœÐ»9Mù+̤}jw-/‡f{¨æɸKp’žîXSŠL\•0½¶3˜^mËøsdóÃ̾¬®ÉˆtEïO´¬¦üáðíÀÿôwVº·#C´¨Dkþ¿¿<ÒÊ ù*›+Ѿz6_µI#Getƒ(vЊm;dbyÕG÷«ÖìyµZ¥•–HýЪíìå¹×>™Vä‰ïGï´•Š¼yËÐä“?’õ±{°fºµO⬌§Í÷íÏ̽Ýóx®Ï[}äOl±õ3ÛÃ1ï5¹£]¿1^©?ï[Ñ?gQ¸-r»çŸ²,>¸r\ )S¦ëâ>ó¿…âè#*‹l>jßQM½ùb]µ0Ë[ òÄʧ£t‘‹¥V-€aÆß9Ÿ¸¢XfÕ:oã2[Ä+>ôzð·bxÁ„ÁJ·“U|íPMº5I÷éßyvC#*æå=›ÌÃÙ`Ë|ÅÞBˆbûíÖÿöçö™vÏN¼NɧËYs]ù{èÏÓÊMÇñOÓÂYþ>óÆ}•æã1´;ž5÷_!ëÚ¶fƒÛÕê6ðšNؽm-ú“Ž?õÎrÑÜ+°Ûu¦«öj³Âƒ4Êoæ#)k¨i6®îµºZJæ>#)ØXólUµ“Ì÷ÞZÛq_G¬ÞÕQ‹"{ÿ¯Ah]w—‡—²Ò†® 7‡ÿq}òÉaô<á_øy}úéam/jÙŸ!µ”͹\L'•Ù˜ïÓLàÀŠ¤q¼’Èš!ð7]„/”ŽvõP)/8¾÷Éð“G¿å/Ä¿ÿ±¿ÇûÑT¿6}¸÷HŠ…÷?^SxýP+ýxzé±a˜$ûnñÇYk–)uà”ú!Ù_íÿÖûü¸öù·ûÞçÛQþíoqèäõã}ÀÇNÂþÇù{ÊÿjûÂ1â*¿YKÌ8¼OÌÄeßKt?y"q5e†ÄþO‹^úº˜Í€O«Öð·àYp$[w|&ϸùÆÁsy£=/^È+n§qp™M,>ŽÌ_G–ˆƒ/å•°ƒ±ÿú_Á‘˃ÅÁWšÀÀ® »½8˜GNGÆÁÌT†o% b ×8X»!(㵪ü:›—I‘õ ;“iáïÞ.Þ‡çû{¿ûýöDáù`ïûg{ÿ݇iyþüÚߢ j¹JËîu—¦¬HsdYàæÁ»ßp6Â[9ÜH(ŸƒkoÓ`0†¶*eômžÓñr>Llio¸{—ìG³Q¤¸<•1@w’ÊGËÈ霥Nygo|-÷‡™d»ÇE¡Þ¿µÜÄ´9¥R¹oñ£¬ gÂVÀz›K4Rbº)’N¾7¬o1û(ŸË²òQž#)Ïe:exµœ_'?ùä€×õÌ».fûHwåQŽ’[$ç(sŒ¹Cá,J#)Ð9Â?Â?»”—$¸(y¬w“³,Ç1åmåöâ€e&gaÏBàÓOyÄss^MæËLЄúJïˆæžyÿ‰îwEª}ç…®¬¥-®Û òee.xamIjV&¡ˆà»¥Œ#4¿=A·J¿]‰x‡:æC¤Þ÷“%c£a©¦¨¡ƒ;[~°T·v´Hr=¡Ê(Vˆ2EI—²ñx8¯¦1b1ÉËv¥&Yî¨è¾#@œã%ÅûI!îLÁÛã7_qD¨n« -gÍÃ2 >øüźs’ujùU×'ÜrúÓ‰Ý[΃áu¸ý%üÛæ.èMòa5#*?¡}Ñ{ûòôùß¾<9ûïXŠ¹…öùQàÕCªì˜Ëœcúz¸;(»™;ëÍþéÍ‚ÊwþAýV¸y¨·Rÿý¯ýýƒú_ž>ýEÿëµþׯ~ù÷Ã?Yÿp^L`ë™_þÀúŸO5Öÿ“Yÿÿ»×?©l¦ÀX ®WšªÚæͤºÂÛˆ*›eóÊÑ-¯¦Ù#4þ.« Å`˜]À ÃA>ÏQ4ÆBk•Hc ‹Æ“KT}•_–ñ)³š,4>!#!SÆŸ-'ÓPã¬séhR¤Àî0› RÉyž§“Ù…òTerµš ßõ°ø§d›€lwˆ‡>€¶·é"'в(àkȆxAC5% CNHD¢‘îÑ=͉©êV0î}ûìó?¿9{yzòQ"%‘V "¤0ßH?#)–xw‡5Ù ƒŠAq‹¯#ÎÙ ^uCƒ|ŠƒJ³2Å©X ª²Õ¤#4àMsb3á{ÂÙlz±œSº¾OÀ[^QR£':[t1µî£Ž@R'ONŸ¿zùõgwr]ˆâ ¸|}J²«EÜN5LÓî±TW½ïrd·C¢å€ÃT-püé|0ËÂÌ(1ü(û—¯ß¦Ÿ¿ÎAH]*=)q9´”ò¯º2˜Íób†¡&#)vk*f¦é:-0¸( #)þá+íÀ·órÚLº#ÃÑV+Óà)`]¦C~#*ƒœör(ϱ®…Æ#J 4^z•.‚#)—!pøùM#4Ìä<¿™S½<H WålºE~ݼŒÜ8[°Óh‘¬ÅáÕ+ï”—‚Áü(¹F Lc¹©¤÷–%½N*ºíQJÜÑÂkÑ4zxyèÖkèée‘˜VwD#)‰GÃ0-i¢N'ÀÂL#4œ¦ûpzf•À0#ës¹ÛÀgmÝ]ÎQ›%A±#)Ìesì¡g'6#)`ÖÄlš=óÄr#ì‚\Pz0#4ë«*®ÃŽDØ0ϱa¸‡S«Îñ©wöxàÓ¾£ïv̫φ7+fÂaY!ˈ˜ÈÌÁ)©³†že#4èÐÈà¯T åÉ8ð+› LÊøîG‡®Ì#*†.1嶰åÎøš®KÌLwqšX5Û¿Õ:Ìnãëâ8cA¯&Ù#4ó¸9È9ÅiÖÜ#4à¹'ó÷ƒéN±®N‡ÒLúù#)ŠëäÇU_¿ÎˆøtA;ÃägÐ%댷‚tk5ª®@ë^ìLí¦Ð@ÜQ )©o¹v±ÐçDÖ©Ág~Q¤ì~¢YêçNcw§%SC)nkC™KËÂa\Veèž%ÎNxs•Mi“u‡ùíUVfÝA‘uNë^f󬘵H7œç]öpQä¨ÑÚçËùˆÅß[f£/z‹ˆš«Ë@%èîªF•uß,ç]¢Ú#)p:ÊŠ.®;&!#*6*šs!,hX/ݽ«.®íXií:}"«ºjx…›h‹£NËBk`#*½¥èÖ·R‹†…ØŠ^SÌ ¡é,-ÐÑ20)Úƒ#4éÉH…›õs¼9~ÄYè´‹ÎÙYyYëæ²*BÞf=$ÖÊœZÛ*¸ÑÒ¿O{#*.Ójqa‡Ñ¡OÀÃÜ4o™Š¾æ¤x;#nxš‚ÕÂôƒÚß°µÿi M=C˜5ûÿP½jUÑŒ^$\Qïÿ†õ¯½ÀŸßªÉ,"i)§}ü»XöSÝçÍ~ïc`7C;˜~]èáÄ#*‚~lj6æeW ÷ãй›nùP€À+aúÌlVkšb0¡ÝüŽ©ˆÈÒ„‘ù÷©ÜßcŠº-ëi¢7Gµö³ÛÐ<†d–ÏÖpkŠMï9ýüù§ð¾Ên/òA1z ³º(–2,Í&C6#4|pOuTñÀ]âˆCJÔ÷‘eˆ.å«åˆàðl–hè¡L‚>&&[Ç(<À/ÚÐægV/½4ÅÇ4µ‡%¾ã²n#)Oa-«4•ûè#4ïÏÃz®‹ÇXMÇPÊÀB–UŒðÞvÎOWÙi`EíÚœZòµÁ](4>b)±#4ÃNd ¡ˆ#)/¬?¢–lƒª¼Î•‚.LR°!®H>Ò½Ã=9-<i³U6D{ð+Yír!õ4U·tä@36èƒõ§º{¨“vŽÝÑðB™fÙ2Ù¸MÓü2Å´žz‹Ï¡|ÔN¬aÊQ¾¢ÀÌáZë&çj¿Ðëä{ú$·=\o Km¤:îîòÜ”]kE-iŒòØDa/µö Ç´¯DÍ'åU6ê–Ëá0+ËñZÕ#*wúÑR±×u„Íòà3ËOîPÈ[l6¬æ÷X¾EãþRF0ùs¤§×nNZøÈl¥Vê±€¶G#æ~à —Ã~Ù›åCüq "áºÆ¼5¹4/Õ:æɲH¥ÈPá$k׬a‰¢öy¾œŽhpY ^‚XËQ'è‹Ï`ŒEˆ‡]ÈwŒŠ„Eaµ†íf^Lé;’UöŠYUdYÃ&´’—TÌÆë‚€«,»$A¢³$ÒhP#* oùœ-EÝ^ÇãåÜÃ/¯ÝÛÆ+íéY«%ôÓ;>9=>yëíº÷zó®dä)Ž#èqG›! Pz¸wØå¿øòˆßà'M½ÈPK×®¤e¥ì|£C¼ñˆXà5¶Î&œXŠ¼.S©£0§›ƒdEÒ¯"™5D³×#ê3a'y+êÜ!ƒ'wKUœq_'±o˜uæ°å±£<`© ‡5G Mv¾öeC´ÐÙš$uxþæÊuÜ‹óÚlp²5æ…%dÜ\uá‘2;¼îý!¹n:‹Øl(Q‡F_@[Ìv$¿²#*ð鉘ôáÕV›Ã(#?¬|y™/‹!~e´;àù`/Á3læy0½Ì“#)VNïâûÃ#)'m•RÚß~ä-EÏO£hÃú¤jÏeáy]&²ž<HfÎJhŒ;ž£X…¾š*„ϬèšhksðùIåQÂ$…î<§Ï(Œ:xƒ‰¬Ÿ•K¡9šMùß{³Áu–â‡ÐÔìVŒ_z£lš1©±þ\Ø¢óѶƒ^C‘#qï@÷»›Žìð˜H·ÀF”ÍCªWEúQÜ»J‘-¦À T¢‰ÜÖ9«e`F¨XRá*†ÇHjí#*§¹¨à‘¯©#I‚ï'‹€Ï7x—qÛ‚ÇD^{ÿ=Y|Žp(xa°(€’åb³¿|¾8þüÕ³·Ç/Öb-S§67hÔxnìƒÝ#*lŠ²ÐV¦ JQC\9ˆ¹°ãµXaY·od«¡jÆp6OÃà´¿aguÙ;#* ØxÉÅôpù=ÿ®¾Ç#*ûÓ[$Ó¸”WŽP£¼>yj'š¯€…âe‡.}‹”&vC.žàíÞ?ó°àÎŽ§ƒË2 Š˜.½«lÅÅÂ!z’ÝØMˆö¥ÑQw§D¡°YäÜw\^;)/Á£N&åM¬˜f·áþü-˜lgC³“';ð0Ñf©ÕQÿfüÞ4S8¸þœ¡¢E6ž¬îž4xo9‘f'¿]zoKª À#*0°YüDç#4Q/U«¯ºêÒ#4_Ä4@˜yÎcƒ ?(7%ÂØïdìMÁF¾úpkÍ®«ÓÍU¤´ù6î¥n‘Ú´uÚ»Q¥?aîÞ¶[ÎoÍ÷dÔÓŒ.„Í–›'Kouë((Ön;ÖæûF¬ë&t/׉P4áÙë×'Ͼþcžc)ÉýûÝ¥õV>8èíQÇDðØ#*ö‚]Zë§=ÚЬéæi‚9î5Ì• 6=-GYZd—ånÐ}ðà!ù½øØsž™Ú·éæåÁÿGaÃúŽÐ`…Ÿ·C}ÈùábpÍåÍ‚ !E¶wó ¨]#4 ™ÇËl>âÉ…K•íùô¯å5jÒó‘«ÛŽ#*Ü…6Ø6>ÍnÔngÊ Ñïý@ûÝÉlI™Á¼J/§ùE`§1‹YH4Ú‘³2¸åL¦I"8ÌðäºL§t'Sd˜‰ÐP’”IÑ’ÈP¢,™û%‚!>‘´AéRºD«&üR±Q&Ädó"ÒÏ "3±:˜-”øŽ/ùª½E’fK¢î›)@vÒe6vsoW§šV]C©²Fj^ydã^€Þk¨ÏYT‡‡·5V‘e¿;êJq@òø%ˇ鞖sû¼·7ʈÃM‚]n|ð±Sêâ.ãþkôÙŒ¨¨ØRötÎym…§_å äu«Â=míùÈG\?©7»ásôð“&µó"’^b‹Åæ`PY"š,—Àk¡ø÷šðF;áͨõDŠ`ïšTJå{…Q¿U í„ïŽÐ„©Ã'‡œñ”®)ÉE¯¢y?Ø$;ÌFÙ(îÂZåE޽ɀ2E[.¹ÞßqšîK²Úûш¯høíNAï%NQ—G3«²š)]fM#»_¸¬r3QCÙÒYV]å#¬¤ug°ª#)\®g¡¸G˜‹w6k¹Œò”áGÒÒ¢õRSoh×€¹·†›Scùù¼·ˆ‰~‡Ù8D„""‹’6‰fqç:ðŠm˜¬¤Á9¼˜«Êr%«ä*E™X^ÅüŽüÅ83I+j?›ÕzÚpZ§°bs^}D""dšx˜O¼‰ÂjÇ‹ø.g#´tAcâ#)¿ìÞÅEV²Íõ+ s¤ÄÉø› º®Dâd ¿k—Üyž¹Üz¨€¤?˜mÀÜ4>ùƒ#?Û°^üÒíÑ_iò)ñ×òúŒÑ/öÿTýÿ·ƒòú‹lþ³˜ÿÜ¡ÿÿèððÑ£ºþÿÁÓÑÿÿwðÿ<Ì·è:/ñÂjXåù´Õ4NP>HX_Ôôþ>©ê³A¥WírÍ»`ˆ®N:_?{qü&=þÓÛ³ä<è]áUäÕbA?«ý\}aQ*¨/½Úκoœ#*íPøy1’i”¢ßtÚk‘:X#)3²®þ÷®ã®o,/Ãó*…R‹…yL¤ÂÎ[:°É°—–^™òº4< j/\#)e§öõÑoR䥓ъ}#g»‡º¨€'×7çTI߃¯Ÿñú£P>Ëh²ˆü}Ë—È»ÂÀºWLÄχ—sÌØ÷’HøƒÉñ~´{p‡ßL· ÝÜQÑA¥ê2…ïp’.ç•-rwêýp»ô½¾ÊnQ;¬KƒÞƒ):S›aÕä¡ù'ÙÌÜö]¦¦#•ÝþDY‹d°@`Þ3›ðéöÓ$ím6ºÈl£¡nÙY2ßvµŽ¯íªí/Ì!äR‰GöÃ0Õ!åê@«®ËöN™ì”€ä*FÂK·õ«(r„Û#))¸aPd;în3 #)£#*C^Ø¿z¿uÍÁsrC¹Û…ŠžûrEßM³YÄSª¨#)j€®"¿Ÿ9+«–[i*K#4q+4íöiÇzÖRúRà¹b-+H,ÝÇFmÄÃyY>_#)K]T·¡öS¬Å¥·«œ†“WØ=§3 Í°=knHSź¾vÄÝœ€V°ÞŒ ðs3Ü$¸#)”äYB¹”gE†r8‘BÓþIro¹#*€m¥së<xX¹”Ù×%ðÓjó-j,ýÂK½Jðª¯îòDtâÖmÆXí·=: •Ås¸P©„mÇ€‡'b#)ݽ.Уî ê¢ÛŽª½ÔeV†;©~Ä$«¡c’¶X|J«Bâ›Û&ýjwÜÐ#)y±û€ÏиD³qC‘+3;ËÀ+áî‘úlé(’Pfµã0l¦ý#)Y7–AÄ5‘"pXd(QÏÔœi+_Êæ&N=f¬nŸ!3fÝ"wè7H™âÍq%S{3×æ«ìv£Ì(›vR¶æÆêÁš0aFǪÅtÔùmÿè.SÛ3«ÈIkíÉØV…ŽL΃ç·Cè¦QV©ÅGJ7dæ0KˆVL^Ðù¿7ÃèžnO ö`ïÆ*é—ÁNx»ÒS›*”¾8Ãh—½›ËŽà£È'ÅHˆ—Ç(»X^†—G´› ¬ðر2žÈAá-^1N³ãý>©Uwkge}\ ƒ.ëÚ rl:1¨ vîã`geU²ØûîŒ"X¾þ[ïíÕpkãa0Í°êMÈŽÉ»£žˆWÀ7Ôî„ùdÀ;#9ê˜Hk™÷û#*71Èmu¯>˜=]µìùµ»˜ÞÞ.Ü.%Í2²Š#*Í™µmôv—Ö=L—k•ÖQÚþœUŸð¢Æª+ÅØ"D‘"ðC]d~m‚Ý‚Ô[©4ˆ(×bïÛc6.‹!ÑìquYñƒa70gânóçX¢ºÝ¥Ùc3a‘âiRå¶ à)=™/–UBºä€jý9¹ª-Cø †äÓ ô8]ÏøâÌ|•¶OsuTˆV§4w²¼W#4,ŒîAhúD¦·kHG$çCú2êq«¹•¸æêa±ÔéMwndGn¸‡š„ªi”RJqø¤4À’>RÀcÅÓi#4 å9üé»L™AË)UãÛ”²£,ñgn ^“Ï#4AhÍ@Ó#*½UÅ`.³¼²%Ág¯¾9Æ»Gœ1pNÒ™ñEÄpL7>@@‚!”ÃÁœŸän*5Œi\^eÓ)÷¶_àûô'Füël~fãÇ<ÂlFØ.ŒïPò¡n< ‹Zj;5\Éèþ1í”_m,ÿHƒé/7ÿH£è¯,õ•£#4c6K¤%¨ÂÔ«÷|ŸÈ"Xï,Úu¶#4š€àEÓ>ñU"îÔ2¡ÑÆÄ.NXueOâ..H"®y놉1¿Ì`Á«ÔaÕ“MA×ùµGfò|DãkveÀó4Ã1ß#Ï·‰P|`¾aðmû";¾|Üßzk»T ¶KL8YßÚ j¥%šJû¯Ñ¼ÓT¾ø7yòÄb¦<ÊǧçÜ]7E3:F<-ôh¶ÇÐÎ<›Œ_^‰Ñ‚ì[eý(žÃÎÐMK¡‘ÜÎÑ›½À7&;eøàZ¯ì`2åè=¡RËÔbéšIzâpèìÒäÜ+Ûwõ}A7^ÚΟ#)CxN},M×=í㇠Ô"‘õöÁ—¯HqÓøç6 å.Ü-œ#*p¶8}˜¢Ù’~#4ÜW-H»ž±Zãüyß™îf¬’ë›SÑSŽ“ñªr:ZŨBDé¬Lm#ÚÙpIGêDwußÀŸ¾³¦ýkZV-•C B3V+F+HÃ#)I½¹ŠÖ4³9Wž!pp46r)hºA(‡82ž3FÙ&%ÑMǬd>~DæÄsÒn@¬•±pøI9t›-:ÐÍ$x VL¢Ž‘2x#¿qEê~|©g âsâiA•=%ø³Yv…0sNÈbð÷•ÀG²†9RoéLIÌážÔ>ˆáüÜ4®œ[ç"‹èpjºY{D³º”„WÃÄÈšªÃ«ÌÒôJ(§§³ž1Ý\D@ëY>ò¹Ý€ÒuFÊ$PmÈ0-ˆE¤À$W#*¦NÄ&BA’ª’L-éûAQÖ2`M¢úP<^¯„S#*|¶ì&/F-9å‹É½DÇ8ÔCµ¼¦›#)lb@¤_¶«–ÝùÄLþrs¡IÓ{:Êe¢«^-Jñ„Yivkdñá¾Æ5u+ègbGŠ‰T&|cé’Øip¬cêäØA8âN“›%@Æô‰+Ç”xûvñK¿díÙï:q"[Þ§e‹Â’U×àú:ŒŠ|O2]‡Þ²&‰TÂ3Àl†[æïQS\O}W-S+¢ÔôôLšî‚5û)¡ò6¿«áÜìøh¹»8‡ãpyaéex½»$HÄnd‘lN!™Í‚fU˜‚’"…ÙB…©N"BQ‰„Ìdliy(và?˜;g-3èøÑñ%LÇ ÜžÖev\õøõvRóYV/sëùidtÖL“&0âÓúºeN-Œª˜™Xû<FR£›AÙTæºî÷‘Êø¤…µãÕ¶Îé+ìy}¿¹ëtË®ÊòvÖs™®Ám@ #4Zè„D¾Ä¤È¬²À§úÊë†,Ek‡š‘=¼;ˆá.Jè]C ÔÍW£PV^!x7…à¹Ó¼Bój¬ÊžÉXTR…Þà—–ÂƒéÍඬ•åDØøçÖ}YN:Ãbëo#*èê8ÏÎm˜Ìµ;¯]HçµkĶëÅ–{J‡2mãýí%+Š¼He‡#*á¹&ÈæêùN#4qmÒrµ]ä¹|µ{÷÷ðè^™Œz¼ØácöôéãÇ2¯ÛiToÂ9àӶ͵è•4 oF5°F—êL#4~‡ jµu8ª•ÜÃÊפñՔÓÕ!”Ëì¯úJùë2ƒRR¬qia{ÙBfïöõ|ï ÿQø%ƒ#ï~ÆÜÕrÕìký•C¢µÜµÌ¸#*£ó 콓×jµ@: l[$Ðæ;I¹}o‚VúÍ“ý–¤ç¨¥I['MjW¹Ç^‹?„ïnv£?1$~fÆåò¢¬ÒÅ0¤£ÿ(×#*@-Ы9™d–kïÂÝÓÎ%×ý{VÊéQMDSídSªIüq܇I™¢à¼ŽÅ$f©ä|9Ãœ²³©ÜLwºC–Ôù¤Ï‘¤7ĸ‡ÚŸ¾ZW/„[ºÄÀ«ÒˇäæÆb€c}›á›íµ9*®¢…(emèX5•…:!2Ö^îXÒCmîƒüPð%q¤Sö¥Mâuj #)¦Ðó½¶WÞÐ(žÄµ¦#*[ˆ,“QbG)Áƒt)±ù5N`Ë/hÏÌÿÝ#*ù€¤6Ù$Wl¸w#)ÜÎMA£7ÅN?Ó®(¹ù— ½ô.‹|¹6^†M½(Lt©¾íÔ}*·w.Ù󖤓Þ!!´®Á´åàö?öuˆH™^VnT•Ñ°Ú¨Þ4<³•…”¶Áf…vî*ïÈæïÏW}ï·„æЯé×#È@®øáÙs.S»¦¼(o1ùF(Ud-{3t;£ÎÏ3Zx€bpC#*SdK`Þ£~½åö~6mˆÊÉemQ'Y?séØž\Ûh7iÔm¢)V5:ðº\¨Ý•î?hƒ"¡J&tmûZÄÏÅÊëCw’;à›2~-$CÚ0F֙ƉEK[Àˆãp$˜íVð‚–;¯sñ!âþ#4%§Ù6«é#)ú¿IFx\·ƒžõŒÍÿ¬\>è-†°©©†Ôðbؼ…leþ¥6Êׯ4jJJØ| #*¾‰º~ó·W/?{ñòÍ×—l~òNõõ×i™*ú‘F·qˆWüt·¤7\)o]dÍ•¨ÄºÖn¤7IªkÌ_1¬] ´søƒ#4 ›#)+cÙÊÖ#)#´søÓ·þÕ‹aôÇ·ºdnqÍ#*€º‚ì"+ºùXŒ„Šxg-Þ5B“8&šøûÉ‚Ú¨}Eq4t»éâa¾œNÕ3úmlk_°*¥©¼+E®·‰·&q•$ŒÂ ©±±d=ÎÒ—çÙP¢rŠãaæÖ¥Àjþ!.#4S´Ýš<°kô·†ïnàW>‘œÌ+ë>BX5«¸uª¸HÖsò·•Ü6*¹Hní(6#*î°!þÒõî”ÖïNA#ï¹~º¯ˆjååÞRº¶1Ô#)wøìëú ,ëZ”îyv“Åcœ¢£wQSE0qþp«U#4û¸K&-LØØйwmŽŠ¬(,@öHW~ý}õâþ2š¤â㼞ýŸ5wýÄÿy|p؈ÿóä—ø?ÿöy‰Ö^pæCâãÅ¹Í ÐZþ±U Fô!ë@#*æÃQ|ø¼è|ûìóôùéÉç/¿H_~‘¸n>;Ž‘7ëUâKŠî#€qBÆà×ÆwÁNLtTvó¨›Ï»¨“{©·ÐU¨«»Âß÷Yiáàb‚Å.&QKÃûâ?¯¸4´š¢Œõùëî²$ñ\€”_£C¦Iu¡°µÒÌu¿Òó`\º6ïä†;帔ß~µX+SÅ%rÑm¨ðiÛ3å¨HÇš¢•B&‘6duÅ"ª©Ìù‹P›cB=¦u#dÍŽ $rQ¤Ëh帒[.Þm"ÐPy‘±ZÂw«Lì«{ïB#4RlÖõðG~JN_7ÇOÙR#¤êòµkµ\¿÷X.a›¾#)ÿ7AÜšk'i\ÃbÍ#)r÷)—é5¾ÚP*!Ã*ÄÙ³ë"-eþ•Þ¦ù‚®†³¸|‘¸“Àƒâ–•rÔýp –ŒwzÐz{úÚ¥†êåÛmRñK=¼¤Ù‹—bH¿¡¥å!e1wx´xcÓÌHÒ,ÔÐ/Dr ÕÎÈ]s5(Áõ.bÝ–ŒwvÑé7oë]ÔV‘º6±Lq»»ÿN™¿u½;+п3U´d$—•ÒDí; k§#EÂGÈ#*H[c–M=lY®`?Õ`Åðƒ—·Æ”á¶Ú¼—gžƒ6bväìÄY+™m¸Éí•]1Öuni¸5úm1-eÏŸ=ÿò8}ñòM£œÓl/òÉEÛQŒýSÕ€„Sõ2+²"8±ƒá˜ep®Ÿt8ÄÓ™€z^pnn('®ð´±a™ˆo±Æm²f*ÑŽ^1Ä·¸Ìàì àŽ#)é#*éú&Š:©ƒ#œ¶WÙJcârfó;ŸñÔŽ¶ÕzØ„ž‹¦‚£–hzPöóÏ^BÊbÁç4$ÇÁm²Ãx[£´ò2àDalùþÍÙ7ükªfX¶LÛ”$VqäïEI¢)R"ª».rQJ’.1Ъ“3q.þ£’:p=H½Và}ßfÌÇNá†ê³"ëÞæËî¶ÏÙ*J¨‡7pJ¡m*œFˆZ²ÝÛîþž0»“ÈqÂhTû¼à×zH«öþo‰F×Þéwx¤Br#)'X¢3MÒÖDMp]ùžuý#_ê!÷lØ.Çv= ŸV¾ôÃ÷ÙJ½3%†R“Ä6÷†ì‘.!i·g“Ü;9…mèùWéË“ôÍ7'B‰ÕƒCºYè¾H÷’ZO¡+Nã¯Q$öÆ`]ž¾6 È]C–{#ãqO„7º&Û€0w!Yî0í ÷BX²·!ÌÂuKB{vŽ›ú×oŽ?ù'Ý[êk„=ßbëÚ¢þÙòI{Áͮك‡Æg/Oà(^‡šÓ«ƒ6›;iÏÖ¬T²·…eÅ×JÁoþÆøüˆŒ›á Å&ëÐ>ÜC‹s'íÙšhIöMhAQ¤‹8¼<}ç°exn‚Hô<-cHvk){\oqK[û\®b9É»Iwµ³z7'6ÞvŠwó`ÇL·/ÿ¤Ç´å6ÅáóM#*'àãŠ>Æ[íÛ‡îÙÒ•¸8‘õáÒ`-Õ,Ã\¥¶K£åcÛâñ»ÈRpPrץϾù†@—94dŸ§È5ãÕ=)ŽŠ`¬¾sìæÛ’M2Qƒ1f&Û˜dn1Ÿî_D¸j4ÌÐ…ñâšš%Ä5%„WêS®SÖª¨nÍ— •QÛuÜ"m5Àøò…¼Vÿʈ \ûB!‚ˆ†ñ“²;˜¢šË-uºÕ,¯'dp;˜Kôn½€¢µT1ê§ÜLdVU¡-TBáöi“0 ™?$Þ›ëQÀq!oÃÀxsØr2dŽŽÓ÷[1H§ûÐáª!G„‹îø‘½¦Ú€<бè8ãæ÷ød¶ Õføï?(:õŽßjȨQ΃Cò| ‘ð¢ŽæŽAñ5Ê@ÙûÁ”.oËÐÌǦt9vD™Çµ®¹’Z†ÖÜÙ¶rƒŠéÅq–iLO1ƒUÏò=o´à7´B!ÖÁ”¹õ·#)_·ÁN¤×ø»5,€oÁ¿?FÖNªþ•}ƒã;Éc¯¬#4,¬pη*1é±E`…Z’ÐÕZoòɶWztüDãkm'á,#*ÕLJfÂ6?²ë›Ëä$GïºWµ´añ¯$Ä8d5#)ÌŽúåM ýq¢BÇmr}C~c“blŸêî£ÆB#|£7Zž')öÈ]€Ž±±LÆNð@'`søÇž]fds7Ý}6ój#:Àž1Ú&y™Rh#4<1º£æcg´\ØF:ƒãX¸~¶]Æá#)ôm˜&׊ÈÑò¸èVÔÂbÄâ^MkqÍ„jfˆRŽT‹Ä¦ÑôMÉóPè䋼ÓjŒæ湺B¬GuÕô<·îÍ€RĘvÀ{ßd,³E‚ä¨çzÌé°ºX½´5oë}²JÔülúÜÚŠ7âN'#n<>„R㮘Mæ“$8èý®÷»ßñl°‚·Ã>0KGr§NÒ#*r7D.t¼žQÒ¼½íѱ…Z}:Šé ÀF‘®$”85ÉÁŽ#*>_Î!øTäMîÖàVZ^Ñqz‘YWYr°IPå°*Iª¢¶:ÕO>¤ÎY~w•T«” <âÎ̯¥£¡"‰µU Ã'º5¡8‹“ó¾ÄìΛvÌšß5óPõ [Ùjûײ¬=ŠwÏ#Ý°kÓ‘75ÔŽ(”;Áz›E~Yfµfë<„ùRâæM|1¾¨Òƒ2”hÒ@!cTÚ{ƒ*FL€Æ«=8{‹i,Œ‹JB<~|Ó(›ìܱñ#4#?¢Šc²f:[0Ȧxâ îê6¨¹pM#4“#*žEÞ*‡#$±B$Ú#^pp¾×ëC®40ý„j±¢“±ý<ÏkR,p“t$bj.±nªØ0Ì6¯'¬xýìí—]¶#™(°=r}¶…Ó¥˜Êzw“F¨œ‡Ž–)ûþ6õ¼—Eeëç’ ³…Ç &®-éår[Óá7eiÊÏ?(nÍX¢_–RZ=Ånï9Èú†û¦n‘OúÒùx³©ä6…“Žã1¹z_~uüçôù7oÞŸ¼M¿9;~;Óîg¨êÕéóg¯Ò¯¯}yrìÕÕÚ›`ÁÆiåFLN’Å—ü°[ד¤|°£ iâªÉÊÚ½ÓH6ÚeàkÌ…ôà‘>ÑYø×å$3Ö‘oDû”@J`S§)Œ¸#)á}¸¡>\s_&j#4[h+“Ö;;¢ÙqŠ‚7êÕ·IÑ20qº{‚¡²#)7³[†“&KÛIAFL™0ÁŠG—IØ/C‚X.Äi—kˆ^^t”³³¡PL<#*o#*ùè2o¢ý]*àØÁÔÎYlÞñPÒ’£1(õP4t)ƒƒ«bvŒ®$œÓxÒjgß|jëײFÖ28îûÕëlÍa¹4AG‰ˆ¯ZÝyúÒUŸ©Ëš5×°1[¢Žgc»åê$Îk8Ï6nnߣÖ{¸ˆßGžçc<6>JÈ»¬ÙóÉ^n×ß¾ì2±¼ÚIèÞxTÑ.±ü)ÏÏ`לGWÙ*¼²®4r¾¥‹[–a‰ì c³u™Ýé>ÌI‹c…ìǦåÉ#)Iú4s-|"zCÙŒ(CåkTŽ7FePͨõ¦Ê§ÌPÞ n.dTƒ;#¡ˆAŠ»å¢^Éwç#*Pý—b'KæÏN¼¤·Ø5Æ—`ÓàîßÁ1{p'ͦa_˜N]…@(Ð#*ØãΈ”iÉ«\÷JÓ²>y*êÆý®Áœ”pGlPÓ#*LÖ†c—*c½ÖÃvè%ž EþÏ]µ¶>…--.à¤Ùç4V¯/“#)ã¬a‚¨8ªœ®âkãŒØ•iK¸Á#q%«“®o …qr²ñë9¡§N@[ž~Ÿ…ìÝ;0ËIç)—e+Ù¦¤DuËÍ4k›"G¤ºÑ.^ì´Noæê’1$#)ñÄû~°ú–…¶~…Eúµe=ð±ÆŸÛ.6,Hãìß‹Å3¢õ؃7â™WR†Ô²ü¢²Iç™õÈ8‘›¿Ä8Àéab˜ùÒôeZ'ê'8ñxµ Ï)}vDZ$`¤€úJŸáH²”^f–!,íqer2Ë©MB9á¦Ö0åÕƒ?¿zuúm`d|ÐRx#)Vý"/³O¬©Äº°´o‡Ç+¥Hae©ÓÇé8’îrl>ÃÖ` ']:ÐRÓЦû ë„D«‘k#3ýz:±ºüškƒ*œÑÓùûoÿO¶7?KðŸ»õÿŸ<~ü¤¦ÿÿèÉá/ñþôÿoKÑþoSõgÑâwãÇ¢^~‡"Ââß_?ø5þô~ý#)vìÐ[JoÿžÿñL~> /½áûrr9‡ßΞ??Ó_Éð¾,agí•Ã!e/ßÏõW2|6©¾Ê²4˜~9©ôWk€G[CïâûBýTÍ~u)?’~ýöD5ÈÜ›ŒJ|ù¾üH9FðXÚ'Í#*ìê”Îvz{q–ž!€G÷+sØ"Ñm#)z]‰§á€¯SŠŒoRŠ¬÷ýåÛ¯ìxŸÀóõ*ùn•¬¬Žï»w@¡>tµ~>ä>ÍVÖæ#*éôZí1IQ{ÃáÒÆw ðz“`rãA•PÑú„2ë<_'׎ú1àqÞ뻸=@ãänÊï1ÅMØ…„wïvÅEÈuüe§üM°s]ó2#)Œ²ë›å:Ö¾•ËŸÍwáë¬_ŠE-sUVÌ™*½ŽåÊÙ¹+v{p)˜‰h_ýQ'G¹¼ÀE‹~gØ_ôœ§†w`¡)¨ÄÜר¿Ã´¡0D‘32NýlFdnø*¤Ì–”<è·»ãw œõëÎðl¶¶w0iÀ«A; hkºD׌ŠÓh¦Ï¡“¶NÃP#€›Ùwë³ô‰f:ïcBNv>@±¯ÕE¼ÇøQ£•»‰TFêô…”&;[iZNóªLÓ$Ï c,%Ô¢…ç@é|˜wRyZã— ÚÉŠ$ˆ>è3$ü#ñ?èÙXȈ«a1fVŒ6F¶ ;%ž)U¥Š!HHÛBs‚ÐE•%¿21›aNR¢a[!,¶`Pk&&±Øm)¥ÈU+½öëŠ%kš+g†Á[(…L§_ú¨8<S3ü¢×ÍmuŒÙ%áÆx_¢qf•ÛxmÌŒ®˜¼Ìë±ìƬE·\#)ûQ¬ ¤ùfI˜©T=4Þ5ƒ"°^T¬37ì¬%ƒ0Å¥ëŠFZë¹Y[\7`±F#*B½D(ý®Ì;¢9«ËÙŠˆè#4ÜÚX¥E´ÊÓÅ`R”ä†8±¾#4{Iól>Ù_=bÂÔ¿ËOQç(YÎ'CŠOfΟ˜OÎ=g+«ÂxJåšBºð²‚f?4È Ef”¤h6ÍPºGnJ䙕@¹¾]m —z0ý*õ3ÏÆ÷b½;DÞíÂþú—Á¤hNÚ#)ø7m%N€-:b±ø¤àmkÂZZÇM±SÇ’t÷JåR]'YfÂÄ›áQŠ;yiEóo(ª[Ž»ÔœIH¥ÃfuH›Z‘#)QX&xG]¶€ì)…µaP„d:™g(óÄ_(i|ÎÄ»:WýÅfL,)4ò3ÅîWêœÑr¶àm0Pü;ìcl5OÑ®#)×Í™×7WÒ\ijjE²Ùú&WÝúk]-eX[IÇn¬^Ýáy•ÆI^mW±±G°dt·ÊÞĵ£¬‹Û‰´#*ÕnmFy¯y´sÖUŽ;ë,ßš±yIѦ‚ÑŽ…ÊÜèÖx•Žmô42%â*+þ©iAÁ gÎYhxsTª5ër<ž¬lÁëd6X…û6\U¯ ÏùHí×ý$‘öÂõ‘@ºÊ&—W.#4BH{”>K$¸‘ø6õ5„Y8fH=!nžÞœš=÷“ßùè䢮9“30„Èö}®;E6%¤Y᪊9ÓÈíIÇÍLsˆ…ÐW 9ÇÎC÷¢ãž³F#Ú¹zö.¶ë‹VÃKÇäÒñùS᪓å>Y×’o2/óÑâ³£>Ç9t‘é© änYÅaP*ò8ôQSSèLäÁ0Q8÷zëüèâËt¢C€[ÇÔÃjE¦²ŽýC‹4_Ïa 4¾¥ …ßm“-ÿ´5\ºîü°1Àözªc^øODõHxk„â2c6¼¢Ü÷57kÛ yÁ#*ßN(]IÍškF3mµá½”ë#)’xC¢«EŒ8ÉŽY,ÍþÖæç³µX”_Hµ+±+i#0üsÏÌŸsì%»ÙßWý|üïWÓÅgÓ ×û½ÌPX÷ÿPϯ]Í~—¾ýŽµ+k$ûš‰IjI(®™´-Ãă)C,þƒžœ½´ÑBÊ¡›bÜ¥.ä„a(ù)äÕî5ALJ¬^í)#*Eö{CéO!I\Eòù¨AíN™C¯-ÛTDnªÚ«ãàÃGŽïÀÝÉžÄë9DZí?X²Rü QX½Ý5[l°ç¼€¹Ó¹É××a¬=‰Ò}œº½Ó2$£ÙŽªØ%M¹a³î:Äm~w6ô|ÜRÍF°GV3úØ®‘hk5•èÛ:iÓÖF9ýD#fêŽ^²Ý€I»¦o¿¶£zìM“EÈ…Zûm}Ç5¨Üº!¿]ó]ò£Éx,Öâ²²÷ˆØpÖ¹×ñSqà#/>€³°‹F¾YPƒ²£8vRi¼ÃÁûŸK€#ÁËUrø„´‘ˆÒé¤#)«$¹afˆŸIGÓ1z„ìx^ˆö‹Pî‘ý`éu¸k™ˆáºÍ:qd×O;éRÏA$c]t•ïaå‚\ÑÙòbÃÊ'¥˜²¤ãÞtÄä:ñ…ά¹ÇÍe#*äÏF ËÀå[Ç¡b ÜŠ}Ñ¥âÂF…@Ï!ÔšÞQ'ܵó¶u;Ɉ}`™˜¬%#*wÛü^ƒ¶–PS+žPƸOo±XëP'¢ÌAþ±³Pöx6R÷Ī¯…Ó]¤Êlä™ô7ª5ñÚNÿËi~ÑÐ!²ªóÏÖê«Ôr?€Órê;§äÕ^×Òõ޳Ш_èbÛ:0æÇ›!&œ¨Fÿ^mí¦?Œ™‚$ñáªÇ\TZ}c“d£dmqßøÚÕö+uqè^"–îiì~Äƺå>S¡ÿÌËjËÙ1|›šÂËdˆÃÚ“™±l‡Ç›+—MÇΪ‡ã·a<TúZ†¬z>ífýOO*W—”"›?ThH‡f]YžT<§@âM=]K‘òÕ˜€/IëÛ?q5l²“aåeÐÅê“Ä:#)ÁþB´‘ëØÿãˆ~#)h#*ñw£!•ï‡fƒ¦4úÛ¾ø ÚÔÙ‚¤G C½–#4_Óx{M§N”ÿ©m¯aßhÝÚ¾©WÝÒU÷îŠz%Ž¨©¥®wê(ÌI’CWRd•-ŽÃqâ5=ÿðÙ{7þçAš¢ð(Mƒþ®èÔ«Ì8˜þ¹y^7Èš:×vyî©gÓd‚«ùÅp)E¾$ËeL±8$ÆÑZq‹¥/ë>°ïÑXoØ¡ùï”ØùáÜ[º¤‘›ÚÓò¶7CEÈÿœq¼cª#4'ô#)ßž¬*#*Ln¼{rPU‡Ÿ1áÕ]»$Œqî_¨îѧɾT]ˆó£ë¾ZìXË|–OvÐl¹=\¹1]A¸«QF>ÃYL®§#Ÿõ¸Ç¶»ºÕÙN1ü ÒÖA%ßwOýÒíô½OÉæÒÓæÝydô´)¶_Ò¶[;·càtÓcœ›ÊÎÇÆ5Ÿ¬>ßÑ”™8qr±3L„–¼ÞºBì?×ÇHìT̹6xjR—ñøÂ#4„°âÜVσK›ÑNë-Ò2a´$ŽN£ÏJë|—k2Ïå "ú‘'U+s‹è$/&ÃëiFÎÆÔXø#4ïÝ'óËÞ+H#«Lõ(Ô8$où߯ÿ-ÑH0$éÏãÿýã'OÖèï>yú´îÿýéÓG¿èÿ›è“¿w5¢Š/€q~ú8FìÁ´Ã[侦%Üi:²yx•£Ö¬æö@#)ï+SÉâÒyßÕÉÆàÞr`×ãÕbRd£Ä~ïù_:ëvoÞjüÌ¡ÑúŒ¨†@$ß6«Š\|¢#)qN:C¨Þ‚.‰c¥!d$Ù#*äÍV“Š"º¡ó—øú-ªâ!þí'ÒC¢ˆÄß»xúH¤·#)#4EçÆÌ ýíæ-¸OtP]'Ίˆ'¾$4¡sìkøŠävÔëxòƒÂ&¶ô²gŽ#)GóÎ!jLÏPG#*-<j^õ0ãu¢Ñÿ&"¸"óyv“–E/ãËpœcêÉtº¸T£O8™8!¤ú“‘LÈÞÙË/¾zùêUí®˜ra >×"¯‡eRxÊHC£áƒ©‘ç&Æp?å(qV@4J1E'VMHïÃØaÏ?Vî[«ZH©…uìš(®.ž=C8oǹª|¤¤ò•´™<2Ì°,NTªC?»Á»y°«~”d®&ÉìUªãt#4ï£o}âM“_|—Ø ,Ùt~³.ÆëC{>^@#)CÂ.¾ëÉŒoýŽ˜úéãé²D‰ ÕëuŠªëVê"£—è, X.hMrhžÿëÎÿñdµ¸=ü™,À6ÛíÂÉ_?ÿ÷Ÿürþÿï>ÿÉÎ+MÇK¥—¦jëÅ.*QÕ¹K%tÐ(þɘƒ°0b……˜Ñ›k›Q}h¼÷“ϯù¢‰ÞZ¬ yI†éb'}œ?Ò%zª»cdÓÑÊýÈ•!jç ×}Kei/e ×ýɹÕækàrYÝj×*ŠüA #åÈoõ*vµ)}Øf¬ÄÛžÑö3>¡(ˆüëíÒ‰m<È£%{ADÒDÔ˜#&TЕ!RíEolQU̥̬•‰˜˜Ô£\‚$J¿Û†]ûwêίúÚ'ÒÐvůDryY'¼ÛÅ¡óF%x a‹#4èŠxµÄí¥õ3ÒwnæØÖ£Ç9^tå¡óAµ7ˆÙX< ¤`m³C,ÕŸñª5!IÙk–âüf9Ÿgû#ÜÜ[ÁÌUFÖ»ÀË#„fßzô5rÀ«c ÿÉFøÛapLÎxÔ¤66^C*!‹b¤ ÷ËÇ$§O´œö·£_âÈÝãügÈÏd#)¾ùüôä|«Ùüøà—óÿ—ó_Ïx>6aì…sŠ2¹È†š£¿Šgb°xR„˜üïâILìÕO!T`k9þÉói FWbqE[Ðù~ÿ“G–?¸[±ÕŠF‹BxϹ|‚†q˜O§y8.uGÙ_õƒS`°œVd„êõzÊNú°õüÔÞÿ~¿IÎ5}Ä_Ùâ¨Å‰€¸`ˆôÝM;f£'‘ 2ÉͿ꯽FÔ¼fž±›ÿ:ýì,`’P<Ú‰1ú‡äý$8tˆdÇþW´9ɶo¤ï3üërâPP½B¹°Éeó£/.Oìë[zJ0µsöò‹ôäå«$‡T-QÒÁx¯ÉãÃýÎéÇOž$÷¨Säè4¦HÎÙ7Àä#* ö‚>}šŒVɾHçób”Á\$uŠcâ¥k]E&R¾f¦¨ß#*«^{ ¹*„Žp.‡(¿“Ö#4Õ˜£ë9{ÝÆÖT¥SÛ ’ZŸíl©öUðÙAv-`ãé€J2B£lZ+g›ÔúµnÔÄHfò±úº¯ŒŽQÓdX”ĺͪ#4ø±>3O„i±”ømfn{fî@ŠRäõì=ü#)hø‹¶ÚìØ£îlUéå¤c|ï%#)$/ò$jÉһŊî°Ö 5¬¦dkÏ.(ãà#4–N»q=gMö÷-~’Æ?Æ(‚r‚f"ÈÄtOä&ÛÒ«÷É4U>Ëó¶‰c/è©v#*?¢—ó“²k Õm„X˜U NƉ^ç|½mž'“Óý”ømr¶·/YÕÖßiÁsÓz®fÛ5ů‹¶¶*D‹íˆíh]_Ž¢.ê#)XPÑ'Îd8²š±Þ˜¯ë}¸~Xl§ÕTL+©“[ ZÃc˜ÉB°µWî°¤Ò¼ ü·¶m?3¢²$}ÍJÇMFcÉ¡K<=ëZs9OH`,!1L ÿܱѹÎ$°;Ü,Ú+ª¢9©6ÞõÛl‰b>prÕu1'#*KAº£ê`‰qþ‡-Åt‚B"å :êª`ŽId3Ûàqoø=wŸwª¦\ a3£ » ¼ÅfC\…‘ ÕäI¤~£üˆ~†ÿTxâxXpâøy/q÷®W:;ÆÆ^ûƒLÓgÜC|X§ 8ò¢d’Û&í±õˆ«\”t=•±ú¶™%@°†Q…YQ8|¥16f"cö5Ì=rHÈsx"uØ9ù :mì&—è¤1²ˆg]8Þ8…ØÙÌÌÓôäôåÉ—Ço^¾ý^ß¼8=yõgìO§»(ûœÿ³—'ÏÞp†ÝÖo^|ûÆ’ñ#LäökÔÓc¾M{yªöÄìXÛ£±Ž‚qôNý²71&£òä¿WÍÓߌæ¿b8³äù›ãg2CÞ¾ùæä9?~û'Ëþ<ú×ÌI0s‡º]ÛèÔÙ4ëÖ³ö¾®êÄhQ;sWQc>#)ûÚÌ×@þ¦â¶åçÚVxKYÎ'«„;2-)…Ÿ;ÒW”ÄÏ(°q¯ûN`]€w9Å]U“8[4—êIÜÑÙâšw D°JÃþÁ¿z_úýUž_/5qzŒ/‡“ “âB¼4nVõ3â;ŒoÃÒQinqxm´#)ѹ™lÖ뉫"'{D[DÎÔÚÀy}̇ÀÜloowÞÈ–q•uáÓ#)j›ÌÓ.úŽÊÊl^±ÿÖ|Ü Ï”‡tŽˆ€é–G’‚KDÜítŽP•À~ê`ŽgY#*¥õÜ-=ÚJD|¥ìl‘Ö¨c¢Õnp‘Þ.Ï>{þâøó/¾|ù__½úúäôõÿysöö›?~û§?ÿwà~!Gö˜¦ï`5B'Ãerø”|L/Ç W®Þ¶¹)|sˆÎÿ#)a°“ Å £éßbžMö¾ÈªWùåd8˜¾À|g®|VƒKé‹Ûè¨,rŒ~ÉO>¤õŠÁÍùã“#øo÷°ofÍ€=M)P_:œÌ«P{HØFýŽáLŒIú¯K’í£m"ŸwÍn{uš\Yböšo`u@*m=û&ô·w|rz|òÖìVYDZh6¾Q¢Ž<&6µCÊêÆLW3xŠ¦˜†AÂ#)H#*×Õh–F†ª–‹)¥ª#JvÓ,DÍJÞ—ËL§›–“O°k¥z½ÝäðÉÓÂG{“è|=Ÿôk«ØXØfEG–2iÐ#4ÃÚð©UwÂ#*IzSíE2Q«]ñÿUæS°Ë‡t5¤µºê6ˆH#*t£#*3p1¸Ì6Lÿç\óó×at{r—‰Vè®y0\쌂ýd:¯ý>6„ì‡Og‘#TKøð¶1p C(ÔØäj|ŒkÀº,Þ^ÞHü0.àxtyøкݮAC˜ümx e×Īi™$uT#4Ø£</¥ÁùCtÓßmâÉ»ï&4ÙñŒ"J°¥2*…þaT)·Å–‡³¿Püô{/T~2ÅëjÔÔ™Á€âËêj#*Á›Ú’4›bœè´dá<”E{Z8ú´b{Dk#4ëd(^Î#*‡a…¿ð<€é þ8÷nH0Þî©5y5èƒU¥XFåcü?)ÿkFÕ&‘h±º2Z'@G¨}GÀÓÍIÓ¼#^þÌ–ÌWk^ˆ®¯Ïþ|ööøk {Ô#4qvüÀ·æáÍ]ò´gÁÕÚ±ïms†É%Mçâ¶ûý¤¼{÷ŸÝ_ˆ¢“z½§˜‰ùI¤1ýùŸÿÑ®¦þç:BàDCäAÄiTŽÆ#ƒ£.þÃMI©mij@gF7_ýh5nï\Øç¬/âÍ×{åb^ÂqÉå„£‘pAI9ÍÀ8O¢lþÞ˜g©õžp\™½†0õp¨'´ëf³Eu+=õQ`þØ ÞðÙÇ"ú.æx#4ˆÀiÈeý)=ý#4CvÐûØS¡âíG`»”‡¨$©Ø¸®Õ«F8RT'µºÂIgHÇЄÁ©8¢]¿ÎNÎE˜ñ²{á6l‘–"þ¥Ãɘ NLŸinßqf½&—щýŽSäÆJ<cnéH‰/&}=¼Éñ),–¹Öë²Ê&©ÂÞ_—9Ûð4™sø)¦5ÇKEœÿe°÷ý³½ÿÞßû„$D*ÓÉîJ¤Â%§—¨Ð©]Òqyå—ïÞ•?¼~ØÖãò*Ãh6åp°0ñXׇpu‚ ÖÍë‘…#4WŠP§XµB#4ùawL,)œ*KLx+Kz ¿N 0Ù\ÉF¾Øî#4診#*k"Jq=O¼IzùÍC‘ºÑ¿@au5‘‹V‡ãØ“#)Uµú)YÝ¡g”Œ”øPø“£R§Ed3Ë}§A»GA°9βà›Ho%u³=f#¼JDµ±[-ÂMvnWI0ÏTàÀ²Õ߇Xœ®d`$íj‰œî”A|;#*o¹˜‰Üï"ƒá'û\òƒç\ÛÊqÚ0/û>ýO¹'h}ƒ„ÏÒ|•‘eÆ`5›¯p§FŸÑs³^d—¬oé.b;Dò*ú!|÷›w¿‰~€¿Ïÿòc7z÷㶣;š¾oQ8—9,Ž^Lñc8ÓMeÖ»,òå"<ð\Z#)#*ç>ô>ÿ&hz»âŠÈÄ]d„ZòÑþz¼âç¶Tßéé¢*Mˆ±y‘l¥e•—Ãòb2ϪPîhùb±Ñ BL[0÷ò@æß^†rñ+ÝKþAÒÊu¬,pŠËs6ó]Ñr.s ¥P UBöï2qiCž8£ðÝàý€ë #¾ö¦À«²ÍÙm «)»„±§_9lÈÕmˆ.–(¡Ñ_†@·tÿä2#*ÚêCÌÇá[`6ó›²ë»7‘ë0-OÏzPóÒÏðåë½oüz¯{Ë•ÍCÝ}¶œŸžA÷žåÓA1)ýZËå</'6è¾Þ4¿áÃG*Yàûb莪idaÔñ†^IW–gr#*§“@ˆÑg›W.Tí#)3•]|7Úý#*›È‘Äd0¸ÑëiS³zdo^íu+Ûj¡žžàç7á:õ£lZ#*œl{5bQ*dT{ø‡’¸ÿdó+T#4äý¨L8/]XÜÊ[!å#4Î#4g3KF“÷è½™¿JÉøÑS–rÏ&sØ`WˆœÊÅO÷Y[ƒ>ì#4ôÙdXä’öà Û{JcS.§Î™cÜ–2}0}7 vF#øñ’H8ŠõœWÁ¥·dÅÁ·^jìÈ;WvÊÞ£1ÆRçŒÚF@¤ú¹éj󰬆2èŽÐžÔ;aç)Æé0_Î)f¬j³y`Í‚ró;W’étÀ·£Jùû""øœ+ œ+É» ì=ˆÞÁ–M’’#*<Â’„vtCN`xY[è1Vi<ÍÆU\ ¯º8MŒ`³*/N$ÉhxŽ9û e½CÃJ»ohB£æBn‘-¹@lùæn°ƒŠú¹Åöö×ëÜàNª5Gsk4AWô‚• Ýy!HÙߤ²#*‚rú¤4f騇„fPgÔµq£ÃËŠ¶a¡=†Z¥õ!¡ ÿÏ2+n© ÚöY>®nEöîÝ×´¶àõÝ;Ùþß½{¾,ÐñÃù8{÷îÙbÑ},Ô»w;h]mï8áË7pubq×XJF/òåY˜$·O‡‘‘…°²ÆÃ@`é1JA €¢u± ìéã‹ oß-×Rõ&ðÖôº<°é{Ü€¶Ç>Ÿùå#)Ø+¤…ÃbÔ¹À–8Áh‰)Ò®tŒÚMéô°É{¸%z‹|áØZ¾DsÓýØÇžhk4)ˆ¬£–ò]]'–ë wW ‹“s6+ÑÀÑq°7bQŽ‘ª"×IR›‘3‹é<è—¯c²ån¤^,Çåäû,ÙÌê^#)±œ×¦{êæÜm‘01C9²51GÄ$¥Y+ApBßmDÛ´"Ì „ooâó×'t=uNh#4,É%Ð<ë›Òacqo6tl‰|ø÷ÃycöÛ–ŒÖ¾–-ö2¨Ù/õ“¦£èÕZâ[YÛÅw-wé¯y³N‘=ÁÃ0ÐÍŽÚšKµfª{‹iǺ¾ÃrÛ9aÂh0M+IžÐmØO'€\©¯#¢s íÀ†5-¡b&–嶇”[À‘ʵ”ñÍ‚£5Öñ8œ?]¼õkÌJc¶®ÈÙM{‰wäáU~#Ò0ÜÀ’½ƒ˜85xh²ç˜ÃðçjBr3",µž‘}YÜÀžD™û{ÊÑÒãÁ7ók sæÛ›å¥Zð¡bç‡ý:*„d—ËbapgÄå÷GÎý!ÈPÂÆån±ø8÷²µNŒ¥Œîpwb gˆ¸‰†\¨7»–#øbð_Oü-·–e‹ï ÁX]!ÖÐÀ)}3#)ù®>÷n$þ•oQŽœ.±wfÔ0oKá3}ãL_3‰ÉwîšYìŠwËýû¥d?4æÃÔ=¤ÂyµÁYbÜ^Ëý§ÓÎØ9Ðã&sx 22 x<sò€çæŒ(LºÌ2»÷H#Ãd•Š9Òf-zn±¤¥å¸•Y IÝå¶ÖömGøJºÌ¹ß<ßn™ÚÝ͵kš˜¿Û€ÇLÒk‘“qØÐo;ÜÿxlÜ(ê#*l$áŽP7A©îSÌ#*`÷óièQض%ê´ÜÝ~ûìóôä4}ýæøóÓ7_QSáPè@µ·<:YŠ»é>cô‹•÷öߧDýLà›í¿>~úh¿îÿåðãÃ_ì¿ÿMü¿UÙliq¾¨ƒ¢äpàE«ï«"Ž.î&4.xÎ38Q =b=qD:h€‚Öó~šˆ—CøˆŽ õ»¾c½:}þyÆ<{ˆóN™^,'S`ÒÜÍKM¡Î”*ÊB«çõšRÛ†ÕŠNÁ›tÉä´2¢LÍVÕM¦Ûá#4Z7& @7ËSt“?Ò«lºH¹W$X…ìç z¸ÁйáN;¡úí€vÿñøÍÙËÓ“ØIzsüÇ—˜;Böù….@n&£ê*Á1¡‹/Hš¥Ã|ZZ›Chcÿé«ß\ïMzHwo¤5ÄË0ý%SWVe•òBEN”¹ö®»`ë(ÆägƒCbцI6»˜\.óeé|l´nõzê5R]öñ¦‘¸{8}E«ÇXä@‡Äq±§£/ŠÉ¼J—åàRIÓ46΋=¶”§B(Š*f³ÅÙ)ïlT"lFŠÉpJQ•u*ÐL—[#)#*A6-{P®Ë™ñï™x6Ñ»dK•àv#h• f]+T`£#)6ŠÒ¹Àé'rC¡(]¢ïž¥X[Ê!ê8(ëw„Œë$u5J˜e ›8E9py¡—›«%ÐÚ7sãcÉùåPk+„ºJ~2}ÄJÞC~l¬‘÷¦qJn]·÷ŠÓêë~bŠÁ·ïà 2#4Ã×¢èA9©$}Fjb$˜¯#ÿ*èÂrg—9@BN1å‹ ¿œ~S€ÚMý–p’ ÈLÀ({õЮr®›m¿{.ÝÚït¾ tùÒ#*³Õ`¶€aëöðÔèÒÆÚÝûîqÔÙ);#)hïxgºD:ØtôsÛÃ8ëÌ¢¦ÎÜ}mñ `,Q›Ç¯€"FvŸ_#)ÆòE-ÎfïyàJSj”¼Œ¾Ë/J¾žÄ'Ö¸?Ë°As\{ù4/ÇÐÉéóÓW§oÈ…ô[0ÏaMƒe•æNÁ+ðüÕK[Vâ~ Z6‹«ìm]Á(ôçÇZüÀ+~›Ñuô"$Ùw°·GéAŒÊ@ÂãK¨¿„Þã)@&À æJ¸ÁÙs•!P N#êJrÉnðÎó‡Ø¼¨{.pŽºøÞâáU>Ý; sWÐ$G¬¾#¬°Ÿ)}f”ð-¦0Ö°Ê+Åf0ÃËAÔ¢D#*Œé4›v1#ø¨ð¯ þu–-¾>3ü}Ó\ºoÔ#4tç@-€±#¯n¸w}}#)ÇV÷j€>-¢@«zOUÁi}‘c¬®ÍyÝX!ç›T·Ýiöš³÷þOJƒðóÞéÚý¾©pï{8;L¿™®'Úr”],//Qã˜#4tÃjP^£um]”qßá'«†¶i(ôƃHër^ë¢ÊÒªXjæä=ûæ5°“ggé—ǯ^[È£•ÿAˆ¤q½‡î¾Ü y»¼ÊoXß»3 =༥íùåm•Ö7Þ=È•Úˆ‹BÌ¥d;kßjÎqŽQîÌäì'—UàÀ†åÔ""Õ‡Ôl]Þ”G“‚QU†#4Õ7´/HÕRGEuTùâî:Êb¸©„ÑVÃÞ<ß#Â|2ß+–ó uꕵµÔ4ÏÉ-<ìú)¼«Òfþƒ•®ëK·Òfþƒ•j÷Jy’NVxéF"Ò:~Æ ®#(âyù§ r.ü"J;²³¹õ#4cFu‰i¢Q¢"ÖƒÏ6²[#*ùƳ5Ýݑ؇8$u-»ÜuçÃÁôaÐÖÿÚTݬô{܇&“š®^¦S^¹üÅÙtwŠ~°ã—kx`Ç1¨šT¬o²4ùµ°ÊN9}ãrò¶yçùŒÖ=)©»#*¹kº¨»k+ZÐ6+þ˜ÖÒ9è=½wžt{‹£®èBÿìî- i2‚}î,Ú»ÈnÔë5»Œ}Ý|ÞáqÖ5nDð`ë]öºÛ\þ æßÃí;ú÷¬ÊwöféfZÓ{¸ L+ÌËæ6P6$;T#4f,Ev™Úžg@÷†ñƒ‡€æ·|ÛÛ*°N1«ôv€Çgo_¼dtc/¼tçΚåüƒ¦›d~hŠÝÙ[‚rжJQ´·nJ¹Æš·éØý#4½mÂi¦Ó†-}a˜,YKKpö.Ž·(Û§÷hRVd;³‡B† žÁ~þ~#)ü³7_œ²·¸\¢ö:Ïr#—wMI‹ÝÒù3IDÄÐXé®Ë-RëS‚ÖÅûz(PÆOä$N¾ùú³ã7ééçéë7§Ïá¬:}Óâ#)oüVñAT»®«™ÿÃyƒDi¢•eÔƒ³ç鉔žž¼:|¼"†Ywñ’a+(²‘D랟ž|þ×B@"ï”íÑ·qt{ù¢¦ n¢ŽÎµç¤‰üì³ðn6J¡4P—á9õY…:÷P)üê¦7.–A_¢‹îkûÄBÂ7ýRÐêÍÉs±¡gBR†Á_ÎÑ$5‹Ña¿ Wjû#)“›“‰¿(‹K¯Ÿì>v¿Â«cdƒiþÔ® †ßÀZD(”%:Ù}®M»Y·F_Ȩë41µD©Êb²µ2oÒ ËÂÊ›8«Hr]\oºä^‡:Ò÷¬)2ñ;Òƒb*½öªI5Í’D@û±ã)G#Ô›h$NªÉ÷¢•HM!}“áÍÈ#4HuyÜ°Î~Sjw:X·Wh=I²š6ÕE1\ø†r#)$^øéÆž¶–®Ê‡Çn!’]ì—”ÖSÓ#ïÄÚŠµ×ÞÙ$kß#4åÀ$Ýä(qª&òæcC˜©ÑÅ°·(¸¶ìõ#45d£‹p²îøxôbP¤¢pHLèrxùÈŠòôàºjœøÓÈ5"ùו#YIp&š»B{žø'´ølN!“S3_Äh’¼ ÖV.ÂaâÝ°l«H£ä›6-–>U”C2ÆVMŸ¼¸Lµ>›²ø"åõ‰®u#)œ½—2-75"Ùsâ“0E#4sB£´8çqª7ß"g&¨ñž‹š3mÜÏŠ¬FjbÅŠ©Ô÷lþË>NHUë“OyÑP÷¸Q4êû •qºŽ±Òìn}N}F×Y"mK´™ò.‚W?ñÓäÀq“šFaSR‘ŠwËäo$»<:Áåщ1öTAy3ö‡lŽJ)§†üùä*§ôšxµ»bœ·>·<ýV›cÔMýt¿^ÑyPPD@¼5x¹›¹`F»Íµmqî¬m³9Ù=ÒxvŒ×¯—Õ]UJ ¾bHîX*¿;мþµÅ•…-#4T:l,tþ'ë°Àñ,«~®øâÿ|üø铺þÇ“Ã'¿èü;èóÅ-ºðÏËÍêhi‰ž©ý_Â_G~žÿå×IÿÁï£wÝä]7ìÁÓoÐ:£÷µªg˜É½Æ'³ºb怯íΘM€³KÕ]/£‡ÉT;Œõ’ÆK!蔲îTy+a?$|A.Áj=ؾŸîõÆÇN$yß7¾Á¦Ë—¿NØ^¡—Õ!—’x—Ðf¯æ‘‰È«”<›Ž6ú¿T™ç㓦x÷Έ'&Þáq“CõÓ]šØ»#*ËQξýn¾ÍäûùöjÕoï„«¸áyY•Rv?ºÃG¶Ž“·eBs'¡CFÉœÍ+/Ä´iÙª£*!‰3à÷Þóþ½œÒ×(;ÔÓZïñø¹m%2КÕø8‘hY¦Ítg"¯ÏžB#*ò@yFvþs´k§¡u|÷û01(¬ââ`+oôØßÑ#*¦ò¶âžÏAñ¤í¶{”¡w>;ÇçÙ#*ºŒ±»_deöèz6Ž£ñ›«C'hwu1µAägYq™8ú‚«¿/X3ÎÎvúnÚh+€Êdy‘Ò0‰dÀ€]xxôFY¶À‡#ß8ÂjsÈm5ø:1SºáȤôœiŠ#*}ÝK‹RŒ8ÉáÇÀL¡#*hÍ1Œœ©¾QPÞ—ñmB#°s#4qGóë{]#4÷RRß5à2c"²q)úË¢'ǘôÓoóÉ.ÄóÉW3ÎoÔÙ#4éÄú%ԵǢîwîft—áxë_ãýñ'À}>ì°+S§sïR¨&ªU^«Wå½ì'ÀÏé(Mݲû!X:µœOþú¯é)³°!›Î‡•È¨»\‘þx=kM*Ì‚v÷%»sèð|Ç=Ñ£cø`¶Ù€=D»Ép¹@ ¸à8qÄeàM+¾nm nÁHjøŠÍµÕ³[@'·ÒVuåääé'ÞÐøôêZo¾—2“-Ú7X— O[êG¯AkKÚyM²Ô¡Oé9~“ñ¬¸œ#)zŽL2 +W!ÒœHG”Ë9†m„sìZćèõV¦#*úšMº;å»9êD¢‡*Áóë>;˜bv]=ÿ›ø•²Ý‹k]2EJ¿¥ëõÜ”ab§WÕZ›ßº0fì^™žÞ…—HÙj8ÅËD|uä8¼£~’ÁÚ/Åë _HM+DÓoR#)("Œ¸Ì.B}T#uê"`ƒÒ!#4òbré·Îo®KêÒíz{Êuî>Ó ”Ѥö¾{ŽÈ%„bœIUs,có’ƒHB¡«éZfý–rÿûìÞÊëŸ+üãòŸ'ûO÷ëñŸ=yôôùÏ¿‰ýOÁ?ÆÈD—o“±íÉ…Äðçäômú曓d¿óõ˳3@09è<óììËãÉaçøOÏ_¿}yz’<ê<vòüø$?îœ}õòõkxúmçì›çx…žü®óìì«ôÕ³·Ço’½Ê~}œìv#)8=)#)zyÜy~úõë—¯ŽÓ·Ç_¿Æb)ÔøêUˆo”qX•äq{5éÂK˜«Ël.¯F—¨³u1A"$ô੃7’+“©JáwÎ$!Ù¡¬Kg3L@g¡FÒå¿ïüÚ÷èS׺"4VÙPïeȾoB¬3î*i#~FY@ƒMj´öäôçn¯ë»|µj¡IW€0Ѥ]iÝùjåð«Ã sb4Î=TH˜BÚ˜èòuøáühï ßÝížÓ?c>¼G×GÏý4Aãä£ÚƒdÒ;ZÇ4X¾:>;1‰ß~cLÉ5ǺÁƒßàaPÆ?>{sÖ=¾ÙÀšÒ”¤§icÅQ¯œ\òeIô³Îi ©œ®Ãì&(ù-E’ËqЂ#*Ó$¤ªYà+*T¨Nö9ø§aƒ‡c‰îB÷)e¬Q$¥j bÈíØ…ÔË¡`…ÃlƤþTؤhö~2%/{òŽçmP¿}FŒðJ#*…•{ýŒÑvè:*Ù79áÄÊ$7¢×#W³,JÄ×+‡ÒdïžN›#*ɦTR'‡É ß$è¡ILÆæ.çh¢°XSvçÈËfI}Vá‘d! U¯M4óMóDÆœ#4²Ý(l¸ä”0m|uYïTéP#*<D½ƒºbyF—ØGww!áÃKø –y‰<¾vpÜ“útäÙËmDÅûQ¯*p^„øGÞèX¦7ƒÛG)Y=µ¾ˆ‰ÎoŽOЩ窂yJñzàóºƒ`™Ï`øÒ“ÛN‰ÔÚÙBÖT÷ ä&C§thVäæuQLò”¢²â›{¯r5(©ã³+À3ú BC»Å•nÖÔŧTŠQûðç!Ù~ÓˆëÊ5%B#4ÔC—šê“ë›s™u¢µZ!7ú'n±„<iÙëdlsŬÅrRLãœ4ÓH½bá†NM3s4”j3é„5[3õ)epˆìÞ ’u0.ïÆ'kAÜOÖ ¡'…aÎà(IüááÓ…LuY²øÊÉšGõ3ù™å<aѹøƒö)/t’ç¾opQâWë/A@VE+~3ø’UrŸìãM#)e\ŠÖ“9Æãf1”C7¬kôU»ÛV¬’UO*‡I™ãQpÎí5·)߶:ÏØ%+´ÂíR|zWéãv°í@ ¶wÊí`gÕq¯©ÄD™²vãÆws¼yìšIÀÛG¼ç í©8¨.1t*Úÿû*rá8#*ƒâ’|*²M<{X×ÚÐ]Rlñ9t:Óñty€”ë;ʆÂR v¿{8‡ÈÇßZÀ–€)}+ÇÕ<æy©ž•"SÒøZy ¿v¬#*9RHèÔŸ¤¹[;ó»¾aehL"+Z¨. $ ñàwk7î7ZäkÞF;7[k“Õs‘i±$Hõü¶¦ qm¤1ÁdTÍ‹õªOdr&îóqvÀ–÷Ûƒßv’LJœåa¶O%*Ý‘X¢Ç¤¢ÄµzÓŽÜí»Òa~‡:ÊÖjiv«Bõä"N¤ yï#4cNMÊ•®ëAÎ;œæ%æ5$SSwËô ^GÝ?ìݽOÑ9¢÷úÞìm£#*Îp÷<øC°¥ûF·xk<™¦Si«ÕÏK.úÙ2äæ}ßý‘qÕÕS#š®‰0ìÃ"ÚÈÄ’÷ådÄÖím§¿`è(Y$z\»!§Œï@K2À\Lgåebâ*#…"¡½—bÅH&j7bP¡sõ…0‰F»søGÞ_s ã÷;ôóz~kïÝÊõílº·L"…qö<þð‘~áèr´ü†ƒ¹ºfÐ'³EÛ˜·š¶aë§ù%°°È|z!¥ ;K-®ÉZ’<r&µ¹Oî)8uO¯C塺ËLàçÄ&û#+Ÿqµw¶î‡(ØK+‘ö†ËØ°4wØúuîT#44î8ËŠbü#*öá"Ì‚# @…ÞDtÿ›RÖGÆ8Ž†ð{¿‡?Fm©ÃmƒA¿‡øû£,wxÄþhêµÏ$z#*\¿‰'§o¾~ö#4/±%àmý8ZièJaY„Þå?—ìÉN”ö$/un{E÷½f¼ï7Jë·B“›¼Ì*±TWåÕ`cûñÏá}kdyW6PP¶=öûœ :Eb…©9[‘ê½ÑfaN¨Ýq'JßkòKw@¶êNð+pÂ)ü𻩻Sþ νññ%!‹O§Ñ¿$þÒ½ ßÇÔí>áÇÐw¯ðÊ:qƒúÆ)[$q!’ƒC#4Ÿ‰þí1…Ný1à~¾³³3=¤¿ýîÎNiþOxÍc"ä®oUGÃÈ8:ÝMº›#) ï„î)wdîpƒ®oxÞ”:s(êÌ ¼BBÀi0™Weƒ€çP—T/K¢ØI"~ÖKaiD# ݉ª¦ÈäŒÓ¯$T‰'å„a_HŠQ1„'S€6œïæè––wpŸ1TÉ™©zZUT¸Â¹ÃÛöÞ‹]$î6Ý4¶‹ûâ‡b¨ØoßB1IÄÖIÛrŽn;‚>wϪ‰OÓÊž‹n¬2L†5ôÞ̀çŠúˆP™Ã”†m©„sœ|õ²øRç,‡$qÎb%+üCV€¤t*€Öqo¡_ñt#4ŸÈÙ©ÈÐ11´é®õ»©*V#)5Ñ—k ·‹ÔlR–è„m æ=€éQ 4DF[‘#*èË&›JF¤äÄü$ƒ:°Š&ÑüãûÁt2Ò>c}mo}¨£Ho¸§ªDö~Pà¾×0Æ›Èä᧾ݖà[M/´¡äS:rʃtè=†˜Ö#)¬FMOîÒvœËŽIåAšþÿì½{CG²7üþk}#4…7œÑ˜Aì8YÎŽ³Æ OÛÇìîV¯PÐm5ˆÝÍwëÚ]=¹gO¼Y£™ž¾_ª«««~¥Š9¤pË1„GÈçª@åN&:·qxiS£ëKK´†Ô˜íRv§˜†¶DPŠº÷ÎPEwQ`|âXKý¶ÇuFaNj3dg¦^É–‘¯I¼ÝlÑko¾TËñ;ýñ µLM=ÚKÎe¢Q×@Úe|F±²¾²üAêúЪæ³]85Èã®I×HDf‚UlÃübþ³²²<BÕÈ¢/#*ZÀQ¨Å;e†Áù±AeüO¶Ê]Š[#*«sšHµc§EOò¦à]ÓÍÒ׃ñ™¨vlùVSÃu¶„|f´G÷,>ŸªÙ\Õƒ.=‚ÝIòPÒ‰_ß/Æcù(!ï˜Sæ@^¨(”±+Õùmþp-QÕü¥ç—•œ&ñ{wÄ·ó¢~ë F¾l߻ܪè¶X±9ÐèÑÉødþO"øHí£õL˜Z¶h¹FüçÎß5fC£#\.ýrWZê#):+›?’› tYS jøbšê¥l mzh£<oÓÖÒ?Ç^‚Õ‚üœÊÊZ“¼7CV3äž+´ Ô(Û*¥ð[ÔÝ—oº¥`–¾0©¾Üa,æ¥!¤{¡4Iµ‘²P3,N>jyŒª¯å¹!.çå+Ž<ì6Ÿ¼,ŒK·I#*@ß5c„±'A+'ûm‚È÷Qק¥Ù¢»8r\t²åt8è#*.ejL5*£1e¹Ž‹;³)ȱ°'Þg.‡ a¾ý#4a¶—_ƒùW¼„A3WÒÏeNí×Q"ÜäAlùã–íqÑ.R%`·vÜ Zõø¹åù5§¬ä.¼5ÚE·)ˆî4—Ìè“wmØKåÞ}3™¿GɆm…zšôr6SÊt–]S1¡v…eƒ•fc‚ݦÉæh‘Ïq0vCä³ênbH“Ï¢MA’£8›½KôÐÜqG+ÏZ]²õqO|”jeï]W˜ë¿{”HR#*¬\a—`*!]…¨«èjG¯)ÝF-u¼W%»cÄâR/éèkljZª*N쯟\ Ž”ˆÓú8ÕO•`î(œ}³C`rOÿäZô'™Ž!§UåÚ«J¯zALÇAæß-aºP!ûÝ”aåà×7ØJå€Û(‰ä£Â1—Ï”›ÛwWøg·yQ¼`ãÓi¸ÈkïVªˆŠå1“i¾~¾CZà%÷åçîá#).F7#)ÇÐÔó3Nc—Ù >p4xÙya¸ƒöV 3’ öäÊŒºCªXj#<€…òw;ý´åñòÔ^Ý„·!€5!m`aý2øÓuz¶(€uªêÿàÚö:‰ÐäpØ1Ö˜©f„}ví9“jú[¦nõh‘¬ œtsôÔ¬±VýÆ4!amÀ.#*¹ðíP0Zª#)æ©›š;8VCÒ4£“85_ûØ(Na?€¤pEBFˆ¬Lj`JLÐÝ}UÚ‘qsKíŘš'Çz\Æ(áj”ÀT˜&83¢EnSZ+cšj6-`$˜ÙˆUžÕýêpƒeRõ}±q,©ÝÈ*êú²@Uƒ©O”g©–ô½ËÁ°Orœ<•HÕËË_bÁå£c$×ó«-tÚ#)¿$#ní£¤¤§4ëÞøÁh¢ÄqÜn˜p·‰Ña~Щ˜¤³ÿl.Æâ0¢OE¢·wWÁðw¥ÆÞ9S«GÛ™sÝo°e¬¯Š#K]pÓ…}<z©ÂØ[’#cÌÐÈ^¶ÊÝ&aõx^®ŸÁ©wæÁ)ñœ’žÒGQre˜;žÁbvTÓf·Z«¶æ3ØÔ‹ÓyêÐM¢3™ºr»CHaîì!¤¸Wå]Ê‘ìá‡,Cë*s7ÕÑiÁˆi›ëÍ™<aV'I½Cc¯ëÑ›s0íjJFquG‹UI8s>ånBÒÜ͔ӃóFû5ø€÷Êdîš9íÙ’02„Å#*ºguAÂ#>—ÇÛª+NB ½íUqÎtMh“=j–i–ïV„ñiNDäõ«à1†ÑÿvCÑ”êNE:ÞÜŽ’h9ÂqFù\´!ó—`= ¸û‹¹à¯úüHÉ&Ï4iH#4ÿÈl÷7:ø¶˜n€ÄbFºKÞŒ‹9µ¨™ïèÕ¬"Ï_·Ý-«m2fåÞ/äÍÁFãW’îÜ•t[¯•Ã´ò´ÕPY9n¶Õ´JÉmâ8—֌؃£¤D¶uýâÖïî–T|œwOi.ã0Vx@XÑN,¬”7Œ¯w2PSi¨#)ôhž/Ê#*soDí—RÇ*\òÄa6©ä«Sk}ð€z ¤²ö=òvÉX܈/°ˆÂóQ#)~NñS€^65@C¸1ñ„!Üæ/êvø#41˜×øWÉš*’ÉYy:›L³Ùü¶åØ!HPN/Cî f:õð:Q¼º”gÉ~«¦Îeºl—”)HÉçw|yja¼¼‰ãGyÔ]H_D@’°Ìws‰Ÿ™¾n§¶Œ}<8=å»=LôƒO4ØØN\ÂGórÊ4%¾Kô'V:`óúô'41w’ù¶‹ùƒÄ„·Fö|Ú-W¢K°¸¬ôåìTë†=Óÿ¸ƒ2@|>ƒçâñAöµey%têiìÆØ/\]¼š™CÆñÝÙâZ6þÏ°Z=ZP=â4PE£ÕKú=ïuºß;ŽÎ£S„:ƒþèXg/ÞýŒÏOn6âáËžÿÅÀ£>ÿô±2C[û6)gÑßZ‡ï÷þuôÕQ|òçöã/>¦˜.0CADÌ:s —ÏON8÷þd8Ä‚?>ù˜òÅY>Ç÷ÚJá3î‡Ï€íäÇX!Ø”1«µY.µP‘ŒE—ó™ÂM³E0Ð4].Rzv0¨AǪNd·¥µ×Tw"¸qØÂD£VH¬….Ä|»Æx #1‚вÖóµFA·“J¶!_T6&ÔDœ‹:Å;c.ŠÆ–3ku¸'}g׷иËØ÷Q¯5ÒdÑBÛ°½trq#*vñ&³B4¨ap¾L]\ê‘^iuMRÔ!¬üeŽ¿³›–M§)¾H½‰J¡^ âÐ_¢“1ìk©<ÎÔ4‚Éé,!1’PŠ)T#)RÞwñ"žrW)ÅZk®U¨#4 ½iÜtû ÏꔽQ·p#*`i¬ªlÕ¿HÜ}°¯ƒ+QžÇp»*EsC Ø9ÈclõqB©mob„èž=5šžòpýq¯<´I&¥C‚é>ŠMnvLaŸ8$©{¤tcQHê”Ê]?¼¹èèx÷É©BßÏñÎ#)á/œÅ¼”Š@iù¨bT±dÖ¸ZŸ%Íõ<F·™4©cW]»/4ïl9E’LDÝч^¢Ãû§èwMSÐ5'¤¬IY˜KÑJZ¡Ú¬§âVY8a0Ž/Bß\¥‰…±Ö¦Åkë: ÌÞ& •¾¶¾ÎU\[oE *2œÌE_¿ÇÆ·8ÅGÝš^Z˜°N›ABé¡)ñº[ÓS\g6¿Á$ÌÉen°b(Ì&6•µÝíbS8Ÿ=?É7²©QTû}Þ:þÛÇMhöødvr~r}ú/Ú7ⵚmOêá6>…QòûÁ(‹ŒdÔ£ý/Ý4ÌQ0XïH{+¨5œT(è´€[€c&Ih¡q#4Ÿ½IäÇuøXµƒƒÂ#*Û€»G¹Ýdã‚™ƒò^Øð؇Eß‘.ªX>ªJEHä(æ=i»§P…Ý®¶xKdzùn_ðð¥ÉKõ^W±ÙuÆøn·«Øî¼ßUnxßñVo\«÷¼{¦Þõ*¥}ïþ_¸óy¾'ØñÂ#*ÏgõŽW·åéƶ(‘üew¿ãÓ¸´ýÙv—6@?_«v@.1I´Tjš‹P`ë#4Uƒ˜nB§è@pfø=š¦ÃάçÚ}@Î7wNúÝæ. Û"~o0>>¦^öD¢KÛEdô¡)O£T#*NÙûmRÏúîÓk¸®~³…lîµÝÂ_·á6<ÞÔ#*LIæÕ9Ž!ºâx€‡w"ýèQü|«)‡' {^öÿ¬7CEqoé0RÕ:NÁªeßøÎ`ìŒ/-º×cÇ”ÜÎ#)€e™ÈWÖFÚgÿ|‰º!Ÿ€ˆŸgÅËX#*Î Ižõ©$§ èk =¾ÀRµþ#4v¤:[Ñ,É9Cò¥%®)4bÔÆÝ0jÅaÞ÷zE¼€û ¦Š»IWÿÊy™üd6Ïúî;ñ=H×êiš…y4ϼd˜›…`SUžÍµ(I뤪B>Ú^$ *TH8‡E4™Ý²ÑdÚco=4qØEjIPKâqZÓ’(J‹]E‰SÀ¦¢ÏâzÁ¢]üR°Cæh—ý0³Ò.#WRfÑ.ýÀ^=ïâßäÇâúÄÐ@9c!˜¬¹báï¡Ç·èQxzÿ¯ßÝ·Þ0O ‡4X¹»è9‰Žc$BÓ1`:X?î3²ùærƒÞu´äZÃE‡Žµñ±ŸË Xgõ¿&ÑãËEw·h›G,ŒÌ!nÂ`;_Ûë½ ¶Ôî*LtùSóÝ~.iÔ4HR2-…•Äü¾ìæÉ@ÍýÀa6êN/Q°»êŽ`¼ùÛxIá_ÃùDè¡ù‚s,À ÝÁÜÊåFÍú%”gÚ YÅÏS-HŽJ½¿/#4…+ÈfNÑØç+‡ºå<@ÌBÖƒ‹öºcäš0[ý!{Xhë\;•ëY6Ì ëÂâƒøŠ•€IþoÀÿ”;Þ_ôÿ/ÛŸ}¶Uôÿ²½½ýÿó÷€ÿéP$TÈŒSHuøÕD†T^qõNY\ŠvÕ«ÙA¶ª›Šl|K|©Î^‡Õ`2[ÚkIHaT40´Ê–q™£Ì–‰6ÍjõrîÐaô²‡&‚ÇÛ °„Þ¼3?k¡ÞE¶ìuF!>Þ9#*ë¼Q‘Š>@Ü]>t°*"뎱±0:%|øÓ¼ïðÒtÀ¤MÌ#KÞ¥ylmO”‡–,½Yñ&¥ÁeÆó>hN᳎e`8¯´&§ƒø¿f[ãH VuÆ+Í—sÔö)”!Ãw‹öªæ5¯"üƒz¥§¢ëž•û‰”ýV,„+b8}RœýOŽÜþGèÿÎö ùEúŸ?Ðÿßý¿ÌºÓ¿ÈgV#àç¿/²E¦¸Ïÿ…/É;•£·†h‹PU£¤ÿUJÚPµ³ò÷0ÓG•¹òi$ŒÚ¢¿±àNCê#;Sw‰#)0–ÊKP*¿þ5S,à)àÜžqž©,º©§Aàç„É¥U}Â8Ð’1©'S“8®GئÓs…„¶ÝøêÅ»ôÓFØ#*)_u0Œ¯ˆ] r\±cx¶>ŸÇ÷vôå#³sÓúr…‡¶•U=‹¸ÊÆ‚’Ó¡;Û‡§Õ·u¯ß‘ïQAÃ|œ\TÜcq£Í³"$‹(fenù¼ä]»ˆ„=Á<œßòÎTæG$þú}+_Œ`Däì{‰ª¡xÎ9¢§ê=>Ÿvo`ÓñÝY¸†“ÃT)þqg—ʯÎæ/»pÚ·¶-o4sÇÌ@ÍY [%É°-Ø=ù|2µÌYøU]zbÍZ®¢¤üg€ó‚”y6jë‰1nÔä;YÌÛJ\–¦'9è#4#4ä:ä #*ýð¡P-þñã *¼>/KVžݟþ¬Á““ödZ×gáÞì#4µx`®þ¡› èì#)êëBÄ®™m•>XƒÍÒäÁŒÚkŽuzJï––'=J…»3˜PÙp¥ oHwav1)â1ŠÓ°Ÿ²î¾j<#ÀñIC:ï=ÚNòù¦V¿.Â`ŒâÝa6ÏB!uXn¢[±)9-†ä+âJ«ž© ù ìQw¬Œ“™ÁY>ýBˆàñÍæ·a¢YvMB±:Ýàpaéj’i¯#4¨ðêW¾õ5_ìÚÝZI|1&9‰½™)v|…`ɉ;lip\CÆwg8JÉÛwôs;CÃŽoá°IFJcÉÉj›¥»ei(¥Í"€ R{Yɵ®hIz’bÖ×í£tM,ÕÜLiÜe¾èA/ýµ"]nŽÕ<Ò@UØRêFœL¤ãAߢàAÑi‡6k$kÖö°ç'sÆo]gôZÑóŽõŠWg™xiXÉɸé,£-&šø4Q';ã§Á<o>.à<þ‚@I°\-±Úp8z)n#¡AYÁ¦ÊØOá]mdξ±Ÿ"nËcX3JËÅðO>®)Â/f½v‚›Ðfâ:™±£hê© `2RøìuÙ—Ec›:ö`ên÷‹dUåÇË8ˆ`ûÁ2ƒÅ¼mÖ5#úålr•á!‘E7®ÍÉØÃ}}J÷ò,§AzØò48ÖëHØ/ðWp¨x‡½Ñ±î}ãѪ¦\lÓ;¢Ó-EØHŒÂ¨û¿ªi²tªZÔiC^ºFP ?J"ÏúìÀPÚüȃ‰‹Âî#H½C&º?òtÒ ÕMÎâ‚âzWºõvÁ*ZV«Ÿ›k#*s,öaR>_\Íœ#*O=ÓvÚñ±±¿R4ÓJ7M]™\¹Ùéì®Èðã?Fr gf·ÌÅãNƒ´´v©Ú6MâÊØàÜgú•‡ìîYx9ègàÙq”Ê!oEÝÙUÎ#4ƒü2ë‡3î™g·Åø|–eÿÈDÐYV’¢ÕƒZE†<¡(‚5× •äÅ¡ÖøGe·ly§ã±O«<Ò.kæÝ’æLp©Ú;[¢°C>¹Iföç2y#*ºÝÍZÎAYKþÂQ#4Ém#CÌ{"'¹ž‰"…”‘”Ù…K ;2js•™é]jSÞ1¬xéI~È]Te2u$;H#)‰‘µîU'ëV5¿r0‡î›õ¨Ã²‰¢Î#*rU8ãíÚˆ7ÓíoWïËÓlÇ{‡Ì1Ôðøì¹âNuüŸ4±ÊŸþt\Tžèî—}Tí}{€‡».Øð]àx"SþDOuñ7/ž-+–!ÐV ¹ÐÚhÿn¸}OÐÍ\Ÿú~. D\Wc¥Èß“ üNK]ÌùŒýɬsÙEyÜÌ“_#*¦åìųbX¬U³Ž„ˆ„êº:+…½+¯°²ÅyæV#4r"ˆcDCx¨•yî›]>Ú1Š%ó5m¬åô€˜öeP˜gÔw#ÿ׿GíÚ(Ä!›µ ¢Ã®/\<ßnZìÕÌÂpÔõÕ£ªŽ-žøÂBî‘¥t.M‰ÀËAq¾k§qm†ây·ì¤¶Ž™-ÐCJ\ÄReï»ÆË1ì¨B”ðPdÎI!ÀéWÇL«»LvÜDrrØ€NlæòËç©“~ê”Ö~Ädó”ûž»v«ö6G¡‡6CµÛ-k’تVUÌøûb!‡Þ·ÛX5WWLÕ•‚'QHˆrò+ØvIšSØdÙ¾º†0z>Ûªî ^õÑs¢Þß”áà¬4w†å¡u6°n×ÀXÎE’H> sèQ}P«È«žÅ¾ß±éŽSSí¡©pfrœ¬´¦pP2‹R#Øsö"uIkW\«ë®BËŨʼn¯b×câŽqžn R¶Ùv($l#*DµóuMµ¾*(¯aé¸mn°¯§ëx£²Jø¥Øõ™j¹ã%E¾-Û»•r1‡<Ô»í#*”x1îYjo˯ž_x¾Ó?ÒÞ³dÒ1rÜàeBjèéG„mg‹‹ÕKàéhÖRAY=mô¬ªÍßsþWœ0ÛŠ¨ŒÜ׃I#M±ñÄþ 8Ä«WÛO\£Ÿp~*šßÀg+\I·×{À‚(Ì~i±LDÊ+dòi_„‚ǧn]Èëv˜Ÿ´‚Ñ@#*Ö™f#*I6\ö’…Ÿ±ZĶSJÒS«gCrÉÔˆèÙŸ©)zÞ¬Ô,ƒ#FÕ*¬(qÍÍ—µ¦ÁÉ +”’Œ¸bÈd¾€Ýÿóá?]ÿw¨ L×_Gìý¯OwÊú_;Ÿ>û ÿõ{Ðÿš }Nè5ä6¯WG²šHò£µßLúYãëý¿|¿ÿþNKéÖ=7žmm5þüâ•®í´·ÚÛÛkö~ÿûìþá³ógçg[xº½õ‡í³§xöììÙΧçÛŸf½';çÝÏ>Òýü,ë5^|yîl5^~ùêàõ~µ¡ìé w5Ì6×óÍõ>üýDÜæíé°;ÇCq¢%AÜxñîÝ›ßBzyˆZ¿H¢ÆÑÛwi¼rÔxûÝQŠî‘£ÆŸ÷Þ¼;êpá7yo6˜B°¸Áèfh_”T!¹>Bz}Ä®—G¹ÞîèË7RàÉ0sÁÀï^À᤿f|}~xôkµûïߧ›Û/ß}#*[¦º`‡M…„(肬?‘ª ÷F‚ú²Ž›½ûUNª¦]mô9j#4+ÄX¶4yãQo¾L…f…¡mr!.©½AË|¸†×ŠÝË1|…_xI¿Â+üNáÉ&ê%‘4$°±·PŠ84ƒ\]³ñ~+`ÐâF“]]fM©?÷=Þ#*“SvTdNnŸósçCÝÕŠúÚÕNÎfxVkmQï4p¤ÂNçVWy?×…DÍI¹Uˆl7æĽUxW÷¼NðÕ''¹²*j]}C4‰âôc›‘ªÃ&j˜'P]CnèT¼”#4†š—L§kÕ'Š*¢Rßïâ¸Ç¤…HHzÝI„³“€@§-ÖS—ÙÇb³Z³~hСˆ^;†Ü¬¢¢KúO˜]ñž=Ÿë3ZVÊã=þè-šÈ)¥Ç*&‘1z?,éeIT“ì>¾&Üi€dx§ÒáÄ-þÑÛëá>¨ïøᤫi0ƒHæxçyZí¹˜œŒ=~WËç—º’C;øÐ~îe„F Êcëûj ×ÆDm±ÊmÍL“„ùo,§‡•¨«•óH´pvBÇÖh¯“ ù¹žÉÎUÎûÀ^̳‚¼q–¡kЬu¬îСå˜{Kw šz\©S'þÏ:šŽ-Ñ@·<%ÛF;×ÌñªiYÓ^U!˜«Åã¯/ÖdV¬†Þ„9!§‹j„ãnù¯AùAÑÐK¼¡°#*0b¼†á‹¬d‡I~r»±#²!˜®ƒ\>u‰üù·s/œ×X×ØjÀêP³çû¾œ:û©†{à<ˆŠŽšð“°.aô~b9¯óê»7©<oDhƒöTç÷LÍç½Û2OëȘÉÆK®û#41[Ôè즂ËÄ:%V<%ÄfGî–@Ñ(Ý„rÎ8Œ"6ã#*#4;k¦ ‰2ŠV4û.r#ëÀôúOЈ‚„Iè«!‰0j$¡¥øA{5g}=ké”›Æ~å®”Ö-¦)e“TŽBmïBºªÎ•Þ#Ö²ëÜU½kÁÙ…ëíXÉÏBŸ¹eTèõG`K:ÚÝŽZ†'å ç ¦_AVEµ.·À½þJp;RÏ®½™45SV؃Éh•:O•¶j…ÙW6´åýœ¦Ìª9S5ij۶άz¤*ȆôCG¡Søºþ;l\HĶžÃf›ÍHMó«ïIXr„BYh%V›:³{oßêdž¨5zšÆ #4Yÿ|4Gb–1r=ï°p¨ìì}û²ó#4½J9´'Œš¢§ltyÈC‹ó8#ððÙ#):há7¥Xq×F&{ŒÜ_ÿOì6¯nRÄu¡C’îïåf;Ž(_œÉ]‘VÆÛácA‘8M+ZbCW„tª5eñnÏÍ;»—ÖΡóúxbâë‡ÓÔ׬ýîàݾKg‡êdø¡:Y0ØNyÆ´Vƒä´Œ#4®èI¬ïñÖi¼ê öŽ9ÂÔ£ä`]Râá©;»àÃ#*6#)½ocû|íËë)‚¬?õG’ñKzJç÷f¦_DwÉrz…'cSŽöS1†'Ù¨ÈT̪Lˆa…1ŸU”°Ô|oø’dW+Ø'b{7ý°ÐÂúÂçÔ¬2–º§À?’ÛA€…Fv0êg¸9wº°„Š¢“8T¶@/h¼,ëÏ–ªâÂk ¡>¨Ò½hvóf¶jíSŽ1Ñ<y1ËXLNææ1ZÁëÑ]#)O*zkçû#*.P‡›×Ò&%r½½Š77X¹Bu°lÂb@{™CË‹8uš£Ã™ª“uGp¨„ÙÍ«ŸÛÑný(ÍêÔ4¾˜æ`·Ã¿_¦9lÍaÙÔËðPÛ¬FMsð“mNѳ JªðÚJýméð߃lî&8½y9œfæ+ÃÏE ‹ÿâߎXÎjˆe°ÜMשuxcõFoÕE}†º]v›øþ¥ð*ªû¢{Å{Áãm*-‡R^Í6eù¥åá(úºPt¦È…œöß¿¿;§"15 uYZfþEf#*T€©fÖgc(G,ä6¤c· ÜeBy±sÜ»ô»^ñ“#´ÎWY4d9Xǵ÷\Š¼P$í¢6žâÔ 5÷á#º#4[—«ðJ âªÄ¡xÏ:V¾Ú#*CtìÞÆ›‰WoF xŹSqäy÷þàÍQçÕ‹ƒ×ß½ßï¼~û•¢ŠìMjâî힌×ó“14D*™Èò„“ݹ†Á)LÖR]/<ñi5±[5iCGÕk®åí#44ŠLÕÚejê0YÕ\öq÷1÷6ñœéµ¢Ð¾™#*P¢:§Jˆ_ ÿõ|ˆj’K•1µ3v’Mø½Ö 8ì¶ÃÛL£î.u€Ü–²™Eåûz¬¿.‘˜ÇÄh†*gfÈÁj²Å8„ŽpqBÎɆ#)"Bò¿î¿~ýöÏî®$ÖkÍQ>Q«ï´b;•ÝEÛ׌¹›Âíw#GÀ®D”Cé2 ʆå‰T‹ÒeY¿¢L*o¹ls M×ã¬óÃ"Ÿ#XH+JPÁM'Іù<Ý#4Òêýk!ÿÇÑfäVB@¾IýŠ¸¾ét6C·½AyÇë(YƒSíîÚ:¤j1B–(¾œ¦‘^Çè˜>xÄL§mÆf|\d7§9C™×f¡*§îG4'WDnË¥hråPÑY"…ÑügǦFbÊ'Yûéì(‚"„q΂;Yè‡üË#4;–ÕU·.ÅýÍUü|›¶a\ @'i´(¥Š•<y .x0\ë^k^y\;½SëäÓ¬7èé¢J4î‚ù¬;VÌ.Þ9äÅ€¢„À#;Tî‚Z#™ ¹Iý„ŽYy·»è·o89sáeLgý%×íÍ3uÿÈ߯ñWüÞžÞºË<×7´ýc0eQ¢ Ýþ÷`ŠÛ)Ù^QíòÔº6h;%•æµîk+=Ë<lø'È R¸«ïc¨mûqcÏÇ•Î~ÝÝîÿt]'#4—ý Ž”ÃΧʜ…ý4KÏÊE9a°«ä,9w& œ«“ï«…úÄgzžž—û»8.çqƒ®D.O'37ñDðO7£¥[3Y;ªùa39Ƨª%Ä<Ü.À·ñì%ån«¤#)â8-CÕ¥Á½„Xáô´Nþ=YûÍPŽSÙ`¹ú]Tì)ÞÊJRK¢¨z>oMp'EWQÔ½€’ûÝÝ?u:è}Ìß%¸Äl2È¿b#)R~sÚ9òꆗ/¾áO"×ëž<gºpN·é.ŽÑÓ4ú¡{ÝôfŸ_o"HL¡øÇÏÂ#*ôÞ¸ŒÓ;<(ƒ<ž:Ý m®i9éSHOJ= ÚÖÞÁ0Cò5QõŸ‹|Ù0%øë”N‡)O§C9¶…«Ìbá؃DÈõCHÎqè}9¸rWöåQî«;uˆ0¦9ÜÒ(¥ÍƒÓœßì)£²ãUÌ`K]]9ŽFÕnŽ°è6#4#5„©hDÏèë¦ìÝôørÝõyJ¡-Ž#*l“ÉZüf£Xߥ‘´½YOnøCFÔÔ¢¶ZƒÔ-«úÛÿ“úß{ú+ÁÞ¡ÿýé“gÏžô¿Ÿ|¶õéýï߉þ7”´'¨ ž_.€¥JÐ S°@%bï)\Wƒ~JÖÉF⩱+ÊIy“ñnÉ„ç«lÌÒ¨„åE‡ÙœÑ/ñü“¼%Ñ0}#_QFÝ{±÷õ~çåÁû4ê='’Ãï^½:øK±ª2·ƒ7‡G/^¿Na†Öøî¾nÒûá‹ï÷_v^½?Æq"úè#ãn|‚šóì{CHýMçA<b-pœØ{õq¨Qïü‚z9ïÞAþ·oööÓ-~}ýâ¿ÿ#4èwïß½Ý{‹UQÞª¾LTo8@ÊEڲΪ¨«[‚üâE‘hæÄ°ðSDàFý4â×úÎÀŽ<ÃPçe¥k[&éB¥kf)´?±Y᳨6¼WÙ¤÷(ñûÙT·?E8È»O ÞòUTï°A”Ž] ðWr^s_£ø ‹è†|s–ºAsê‹ÄSÛ"]HT4¼u_¼@Ç'/kñIÛ7Á]¥»¨Ž2¾–;2¯¥ŒÓ„¹YkÂtþ“PšÓÙ]Ìí"óz"%zû™0/d‰¶'ò‹>ýú§GÂ5ã` ݸ˜!ŒÅYwVŠh?:¨hGgÔ×»Œvš¨¨6Ê>ý¤Ó^M›lû‘Û½F.ÝËG+Š ‹eÞëܲ»¢»ÈŠ$¥ñJøB‰°[ô\/SÆÜÔÎ*ý2C·6c”¹˜J„®»Í½¦f²¾»Ù0ÒDš¡âú©jØ#g+ôÞM+c;r¯ùFЬÞ6ò°é*¤7–/ú¡¢“ém#)d\}æg <±•ÈŽàm6¦ƒ¬o•Úi9úk•:ÃEo„Óí«³Ûú#*£€v°‰²êRO.UãèZs#*vW¸Ö<Ìò9[8£Ü‹UUX=~üÉc”aÙÝ2a]ÕŠ—º©DlEÕ¨IF¯o#)‡¦Ñt~»‹ú×Z#Ú„¤Q`Fª%jöÒ¸ü#-H'ªY/‘''ptüDüŽ¯SÇ?´ÝSkiô3=LŽRñm*<ÇŠ¡»9·›ËÍý8»©_ ;“Ž2ÅöÔ'±(E^áø¤'W¨»†Ìõ™#4ž’º¾ý(ZWëÚ™Q“¼HGZ¡6¹Ýžc[W|Ö½6þçiA§?ŸõªºZéb‰_#)*Sˆ?ê^eféÚULÔ]a¾w˜]ýT `Kg‘½‰T¢[óȲCd¥PŽºÒ¼FÓôínsŒè0üûÿ`ñ®%µr"–/ò>IPÍÛUDî`ä\fás+.^‡©T²¢íAíÞœòˆ¹Yà>x«“¾ç Eû‹žÇëFdËYs[k‡ÙâEV«—ôsÒþòõwûA#)_†ÅÕ°ÑŠa6ì¼É¬39G¬êo㽦¯«×Y÷ú¾Cô®ë ÄV‰•«Ó¯÷Ñð\k0Ùtú–ÌÁêHf™}p{WÂÛc›×1¯ì=h•d½J™#4n‹×•ÿöÄ+=Þ*ã)I¸š]èüóóÙ¹¦dßœœ£7£¤9%¬¾€vx;òV`X-o æ#)ÐÓxü˜ÆþÙù¸‚e·¬‘6‡-•í`÷»ónp]¹%Ñì,ò=Ø*ö`²ÿö•ñWdÕËi v›þŠ‰?ñÉ漞7[#ÞOâ(Á"ƒ‹5'l%³J>¾Naˆ¡þH.Ÿ#V8ÔH9û5Ì[[è#4}¯;Z&b…rÛXùž:²ëøŒ"ƒ^ä× Ö‘8È%²äeà½RïXwr®[®ÓŒÖuL|R¬FAü“‹ n<ï~ò¬[=®+‡u鲿My G÷‚•=ijžôopÚoDíùhA¿Òè†ç¿#‰dÝÒ'ˆHuœäîÂãÌ¢¡q¦ƒ¼s3?Ù…jTtÜŒM!ùrë,}yºôÍz‰i"V1±%\T>ÝçùL©&Æ‹jaç±Û>#*¯#T=·OΓ€wœ¸að{ÄÀyGÀC•@ZШU¿·8Ÿ#*æêõlÒõŘ-¦óPá&ïÔg+t“¦L»ñ°Dý> #*ÇÀõʪ#*蛲ŠøÞ=%—Ur|$¡8²&‰˜;Käðvýù*‚…C㶗ð@/èJ›Å@óC}'¾Úvò¦Ê‹Ö8D@›¸5Êx-6Êmß#B€¬¼ÍÛ^qKBê•Í*FÑ©ëLW^rÝz~¹ºâ4ˆçä#4HV±ÁþîŽÝaÇCq1t%ù,2+q·Z<‡¾ÇïÂ.Œ!ö#)/S§Žhïî£L¹;|îm:XÈU0i…G$Êh·Î$Öµ<·^|lʬ:vµÀ6Ïo‘˜ŸW·‘:ÏLå@VƆ·#4Íý\‚˜-D«qL¢¥ºóWílœv†÷PÛÃXµgA/¶«sÇ#4ÁrºÄ ÆŽ®Ù¿!L;õ²mçñ€ˆÒê8dQÓr-ÀßãÍýU¿9x¹õ—¤d6è£ïú8ÞÀW^µe93Ù,‹¸—U¹KÀŒE™©³½á"CÝNÍw°äuÓ#|2ŒÜ=Eb×Eb§Õ'ÍS²$ÆœðZØÚK6a—ÚrÂ1@]jâØœÍûe¶D1^œH¢¢Ô)ÄÅg·$,DIÙmQ%8ôÃJŽv_8Àsózõ…9}º(«"ˆéôE›%Fó‹@û Ò¯‰öea拉;fSGwïRF¢ÅÞe¿UÚa˶R#)“hs–fçvýeBˆµ¨Õ»v‰sÍ^œg¢Jå˜@ôqfS>±gõf“yòˆì±šÔbpïrvDZŠý0í¥íöc‰?¡üÃÌÓµãõõõ~ÿøs#4ùúúNþ—Ã;ü[[o(ƒžÙù<=Ï×[…ÆM{Ü>œa,™F˜ÿ;E{Œâ…!.jaIhÓ4Ìf£µâMl7–ÅO”e¼±ó_03ó¼#$þñ3Õ)ÍÓÏH#)#*§ ´…Ñrn77<ÞÜ&}§YÚŠÒè1EÛˆžG±h÷büX4¨EÑôp¬SHšp¥ü’"§»ŒÒ>¢]vå(ˆí#*2#4êÃØ^Z¯Ð" ÎÁ-!{ˆ‰0&òW‘ÃMYÖÅÈ,îÌ £®È#4™)MŒ#42Ù¡Œ1WH·/ŠuH’¥Ç˜àÔ)ÕZY¦Vý¡…jº Tœ’|#*"çÄâm‘!mîê„È”\yv¯à¤Çåû±ÓFÁÙ…¹«Î…¿ÓŽSQÄÒô¡»×a›Üî8¦œUùZ–1ÇXÅK%T2¯ŠCX¡l±A$o³àO¾Géoì0œ1ËB§›Í(°Y1Å^.KÜœH£/×Ê~D¦M xÂnŒÓ>\„è¿Ë†¥ËaE®h‡#4‡ŽÌ/ô&N+£)K¿ÐË]W¤ßRWÞaœ¤ÑÔã*C.1:ûr8Áì´Qð«¦ÃkÆÖ`ñÀ¹Þ):d62]ñêiV½CºbveÌ›Ý!!Õ"ÊaG‰"¬]TßíÊÐEx¬SáB–VÛÈǃ+dçDUz‰¹ž—L ½/4qßrV:vÖHí”w»ïÈÉ@]ð´ø±…« +>Q€C®¿µ¿Tó-5²$/Äß’©Eq«X-ÃiÑh„ˆÖCÏEÛø¢ZÅmI¢m㘄™ÇF²Æ,‘mž£ÁÚ6uu¦Ÿ$MŸ(]Õù…—ÄLªÎ1½ÉW#¯=šFÏ¥X±·“:Œ¸?´zó‹S‡"4JÓ ‰Dò¤Ê@4KÄDâÖU÷Ù¸à]IS%‹Œ¨Är845ÉwÛÇý÷>“.ðKK(Q>š¶·ÆêÁU^¸{ˆ“Tɘ¥¨0ÁîØϤ]ýÖé¡dúT´ÉÿÈþ‚y`ÑaÙ¶…a>lÙíá4sɨãZÁù\ÏÉö#)®sm8Fá\ó–½#*žÂMfNDò7¼Í"õ=/ww—[ ž6zcsS{_-S´r `UÕBâ•k±÷ç—HÂ|Ÿ¼ôP^Yt³…WÌ}ØpÑ©àø‹8J (oªk*(TÕWÄ‹22U\¤QSšºb"ðSÜ[NƒŽp%xÜ#*¸ª(ûæ'È ¹¸k àyyþYo\á©Wö¤rë+jgB²®œW–£m|8þ(è]ã–¡¢MUcñÀUWw»Îü–#)[KÕ¦ÌÞ1,ûpHË(‰RÇ`ÛZ198Qñfˆu_Ó‚ ߪuXRå…HÀGŽ$¶Z•„D%6™l“¸^G÷#?ºŽÎ–G"éÜ5)}®þDò󪫣¨ÜÖ—'ƒlN†°”‚ÈÇ¡.NÇà凙.pœ½e×u1~%WDFœí—À¾8•ÔÖ6}9>U•Òºec½ÌòyBïþt/'(üÄç jë<ë¬Ëò4Ò|°À(qo“”rs¥À¶š¬)«6FA²èSq8ÂøúœE/Úû¦Ý=u7#ð¬Âaù]NÆEØà®m-#*7øUÚdþwææ·£á`|Ujî¯ÖÔû7ÓW-â`|Ã,~N£ÿ¤‡z©+¬~ì#œeçn¢‘IŠww³ÅŠq¯|µé¬K<›¥£©NX|}ü˜)¦³¿ü“•: óÏhèq·”·©¢ç9¯3ïåo#*ßsǾå†2Q†F!:MƒÀ} |Anü)LË•óŒÉ¬0wë¢E;oe¶™r+ÁÐóÔnÊÙBô<Ö»òìæñMoÞ>{úTbÑäÑHøBÖÉ av¢Šå2y×C#)êÁ5<ô®î€#*Ž²¶–$4}}£9Ь|¥©_„0&…jvZ¨ûÆßôƒ6±+ZîïlIˆ+šû£BÄP+:õQsÙ-âÆ=Ö©úOOn0qþyß•`¶&]#4U3N÷‡àö¹¼‘8Ý·äî=ŠíþBe uU™Å¼G™løƒZ^Žé¼&#)k¨µ‚ÀÅ žðeÕNó|C|éåXAC®á‰Ô]i{d$¹×~NýØvȨâšz€¹8ªsÜ^©„µ™Oè`+êÉv͸‚R^æ§Ä…Kœœzç®È·q¨~$ †vÛ}æVšô×ý®fž«bK•,ø!R¿‰³z#*˜"Â#)mö± ša-÷ÀálQ1Ú%5òŽê.û9YçþÒõ–Ü¡S¯†^,«:ƒ:À´BàräTn¥@˜Rϸ¤¸2+'ªûiÍt°YnúH6-ùUÜ‚ïW»ZS¶±ÃnÛº*O±ŒÕú»ôǽ°¢!Gx5eoœ7íC½0ò@\è 4˜÷ŽEí)+¾7¢ì=˜küªòqBBAŠéà7ó¹×â°Ù\Õµô•TŽz¨h.&ß|æÁĨ‰íÖ û³ÁµLôãíÓöA¦§¨8gSk~„1TSpzëo‘Áž_8Í“UcÁ I¿çñóOÿàà=!€UùrTxF˜““/NNœ<zžº #*xÃyIæ¼m,}§¥¥ê|=,;0õFy‹Ci¦Ž:dÃãíG\Eùð o®´"=’̽T•'G¨¬£_ªàÇåÆAÖ‰Ù3¼1éÊIn¯ß*&~é²M–¦÷)èŠIÅ8X<´‹Þ·¹‹¾£Šìü:í£›‡ñ•‘‡÷ÅCƈل¥ªˆH-=e½G‰ò1,Ô÷Ý##.®êè’4™z3!zþqú-EPéØ{61FX@sý³5ú2ÅÄžj¿éÍqˆ¦jÜRE$ùMÜ´ÍK,嬰fÂÏo&ó÷x]h•mä°Ø\Ÿíjæ„‚Éë˜bk‰ìuÂççìG]T0Ü˜Ô ž#*46,¾HŽPø]PóÊçÛNiZ×î¸@È¿vñ•ïV¨·QWz„ú0;ÏSÈ̽óÔâùà°ä+¾„Ž#4*&“µR©²7¥‰6U®C†ÁGÚ;qpÕ¬ÈY(͵qwQÚäVÇUì]sbývnû°sðíÛ—û-;m‘EÞ×8Æ$ºî2Ž#VH"Zº¹x#4_S¬7º(8˜ÛDœ+æ&F`¸_±ñ!ÌÜŒ×ÅŽ7³†%w5ç¤_™Ûiã®Ïôj§KÆ>·;àtä@.Õwó;[°ƒÕ›ÐÑ:T5#4ØlóŒ£&ŽŸm•±ê;º&c>ß;g]ÆkêM;÷3·mÈfØ%gs›µièÑhûÃ]§¥=Îyždø;#4FÑòeIWE¶b`Šú.,E9¡÷"Á=˜Vñ|â×°L¦²Vli‘¤‹?±^wÕ«!QìªgÌì®}÷¶ñ@b¸Ùä.!ÏR•{¥€ dm’ù(¥Ÿöþ›·ûoŽ<¬p)¸uˆ4Xÿ†Ò…Æq‘¹)K›|2bz€¶J+β¦Ë#ë7QÝxv˃›××M_ )Å‘3â¶èúÏ·wK%Zd@é¸f‹jØDð> H0ÜYû\àžéÏ(lva”W,-ûÓ–Kyœ²ëÔÕ%TÜË#4NcQc™FÆ‘iôÒr2¦×ü6Ÿg#T£Âé{àÓ„ß¡Fxe©üw:I´úa¦Ò#)þnrùº»wŸÚK¾oý–‘zïDÕ‡Oªy€Çà*Lߢ_Í#4¾Þ.=äc°%;óЈŒÓo¥ÑÆhöxX#4VUâ`cˆ´Ù«9ŽÝ)Ñ|(AÐ[¡ÔL”h*Ô¼“wÌÁ½kª6™Í8@£_U°w™Ì:¢‰Ý:kp*ârä Äÿ#)´ì#*Ó¨†š›Ñ$ºÃBàëc±«FXõ&aka#4âÉy#)œ¢ÞåC#4/p¦¾Bç:e<®HÁ‘}æ :¼#)^!_1ÿ‘·+ˆ¿Lv¿0ÖÿÄBx@CŽ^IŸÇ¸H´êvÖY:/›—–£Èž<Bþ=8¼ˆÞV>™Í3™ìU<dÓ€¨“X,ö#4ÉœQL:<¦X妪qr ‰)¢«l\o5tÌQOE<È^J•m!eòHƒÑ/Œ‚'³ÐÑ;*•F¦ü#¦“½ñÈf±› }wÜ™"½3DzÂy%ÃîY6L5²ÎþÃy6]1û=(ê’`—táŸM7Ïn7ñ·yÞÍ/ÑU:5½@Çyna`¤ûlg¦+w2"%,/#41®¶«ÍfÕ½è£]<æÙl좨-¬ÁÈË–]ôgÁ4ÔöÍM®Í¨;·{Iw:]ãQµÙ*º#4— ^Ý©”åÖAµ–ñƒÖ¹YX ˜ª©P;ý¤ú—%T1WgêØ¢êô#Â-·¦ì€Æ¯q9^Á&û" .C=Ò-W¦ƒÊÑUËóøóü*ÜÄŽ+ÅÀ²Ë¦Š\ý€n¼ÛöK4¹¥ö䬕埜ƒQÔœý &D2.cåÔ+Ê1›ò½ŠÐ)ã¸Dx³$ü-ÅX¶Ç8Ül>G™ÏœÌ7!*9#)ò·CZ/µÒæå:v8ô©'¯ˆ\cÆ»‘wÎäz¢¡éµÇûÂxBn‰ÿ*惞’$#,»>#Š(9ukaÛd*#49Ql!B]Çæy+ô 2Ó©Ž¥Gko|^#4i€Û“)Öó]tÂ,s4H*GÞjÈ€™N3’_Ýõ‘ú%,#4P,(Œ}XÝ7_¿r?¦^å;¿KÚ¾¶á•†Ú)âgÙÑöÇ×uÞ{à®ämŒ~CfíWÀæÝþ×¾ÿy{ç³þó§Ow>à?ÿNðŸgY2Ÿ]D(xƒ®mf€æî8GôQïdoÞþõÍžjÙ±®£÷+êÉ‘À ^’ûÂæiøŽêLÒéÄêÙB|ÇiÙíðp6½-Éš¬‡%¡;¹°$ KB¯uµ%‘;:ét:Úxýö+ñ;]é–ÚF/nÞÃó\œ7×[½í8_oýžðÛÛ¡@8äݽéë·ß½_•·ùŽ™½»þíîú!$Ä<‰&bG;'Dé?£ï÷£]ÜŽ“èË·¯_F»ÑÉrûìxkû?·Q¥òý¾#*zBa|#)‘Ð';$¾•4ì †½;xóùC§Ïæö÷þúÂgöLòÿ«ùCĹ•&Å Á§¡_ì|ziÂÏÏ͇a”üØp–ñit2£/ß°Ý$àæ‹ñ#)嵊jþXfåsåo1ì8‹î›¹+[7Ãá)M·#*ÊfÅDÄ»÷òBˆõî‰ì«A&ì³è#ãVåÎÎÒ”8ÚÿgôÖcEÌþbt¦²1ŒG®;(0‰²Q·§r1©·ô9·ÔgyÌÙ¦Ñõ|{kO‹n®ÓT;M!ôw€¤àWZܨ;y8»Å` >ßjQY{ÒëtÒµµµÆ£÷‰Å?h1óßÍ ?¿Dn»wÙ)óv£ñh—3Üe4#*è¼@;7‘špÌmâQã¢*È.dŒ¤u¤Nhõ†2GJ}b]$¹o4<½!¢Sädfˆb‘úykr†Â[¯* =wm¯øºt+!›ë#sµRSnܘ!ºÛ…åCgQëäf#Þm¶Úãö’ö·*@ÇÇ°×@µ„Z¶_Ñ«¯¹#UxÄs.Œß.Gt÷¼”=·&m鵑¦ø žŽX®×f×Ùp<yžj o^½#*´äø”2J¹©ê`³Êù·$rF|.omnjȪ D”mI*R‚IôÒ¶†Ö£R#*ÆlNfÑãH߬ï;½•Ú±™)on[áGA¼ºa8$,Ô¯9TG##*æ®''³~pßä•MXéSŽ'ow˜ºqÿcôÒ_ãpL¦©-ΓբèáÎ4âx–•¡ ôâl#)‡<i«¿zU? #4XBÊKé¢jNÃFÈ%ð'#4îuV^pÅhOû˜.7¢4’)Œiû2“ãEþÌš“1C–šÏ3O62ïýÚ9™èD&O¶#Îs<~F…Jó`pnq8Ы©C<—»å¥jÀv"̬\ðª¸#4:ÏÕ}2Çm[¿Ò!“D`?®çùº,H?ï¾ãì“3â#)Š)Hªi¹¨rÁ%#*⺂ÅúW?_ðpX¹2Û¥%)kÚ#*ž'¬RI[CšêF>$«žUMg©„–'I@hC\¡z:–ÚÆ#4/ßÅ$#*f0J$ÍÝóVÄa|éXÇ?[E1˜ö¶Ó€¨ö¶Cu™Þv#)yƒñ Ȫ~wØÿþí{šnK%ÛÀ Ë©K’4Ÿ’yæ;»-ɦ$œ¹ShäN””!°Åw3±ºxÔ Ø½¸è öë|q»øɬõÅG'ãø_À%yrÜúæ_íÇ_´Fÿºü×0ŽqgJüþ·ºÖ½¼ H¿®B`*¿kº7ßt<ThàN´Õ€P”fwqÊ6sqÌ<_ä+¼s䕼W°£·+l1:¬%oÎÆó#)Þû4ÙÉÂä¢fƇ"û&ŒÚ2y7GµžÄÙW^oŽú½+¯Þª0¹°Pv7Ù‡ìÙâÜ\4;äPÇ“Ä=“H^$€D-¢fó•ú hëý„|ÃÌ©Ê,vZ2(3Õfø“â·6ëÅǺ#)!’Üt»ÎÀ®dÅ{øsßÑeN¡ë‚°›OŠ±‚°†3FBϾïÀ»Cœ+ÝÍ]XP¯É‰¸º.Ä‘ÅüÔ};u/0ÃÉï—ýá,µìUÌahâ¦aËÓêX2íöûBà[݇¾r̲òÍšr|ÎÑû—û_~÷·,RØ:C˜*<"‡U4Rh™\fKAK¾µ|ÂÒ3òHª.TÍÁUü3ÏÀý«ïåÞ3m){3½©öÌêú(--ãV#4EVõp¬m®îbüPב–Œd3߯£l¤}KË€ÝD'¤øüùö2‘ÄešŸÎœ}›&³[©ÌÝcBý¤iaY‰^&Sñ¿iAH›RüðSzò|–¹Ê?ÆO°wÃùj¡X¶{É ˆkÁ¬‚¥•]Ǿ–Å J2lr´iä»ó(bŸèÈ9#í—[.üTãDÆ?1ïœvÓá<œc ÊïB¦?>ì~@äÿä*õ“_ÉäjùÿÖÓí‚üÿéöÓgäÿÿ«åÿµB~ò½(nM¤¶>käÐþ9œ†„ô×p3 ÓâôÖ”ýNÞ뎓~‡ÍÊÛ½¹bTQ;šXaqI>wÏrê‡Ñ´NS‘V)ZŒÑ<:>þçË›ðçÕë_ÒÓÁ›½ÎáÑ.ü¼{qô5‡ußïu^íÂ_~=úê^áïÖ9媷ñV CÞu/³n¨ MZê×/á°µ‹¶}jîµ}Šª{|7º¢f6É–M¹ÊI½ª:‰$óµí|½ÿâåþ{|Æò\^¤XܵÜÛÚy#*Œ:'Ä'ßê×o¾áüÈYj˜ï_y=‚CçðèõÁ—o_¼—\9@ã¹Wƒ9èëBr“8Húµ$Å„îùñ M_¼yyðÞ÷A~ “´¥]Á[‡‹ÉÃÈsŒlæ,Ƨ}éOn•´¢vŽíþ#)ÿ¾€7XÆ"í“YHâ|æóIŽx©@4ÎG|ÄAq<lÁ‡G·‡qšFÓA@¢ÉÙlLh^¢Á×^ï·‰µ§+xbjX±¸¿ÄÅ«¶Œâ!RÞ¾1¡°÷ÃÅ¡?jFYÔdÅ‹»:gS\¢ÇÆÂÞ»*7LœãÏiªEloh„ úó™,–ÜX! ÎI}WDÁâ¸W+£`NNýÐÞæ"ë >ƒ2^mˆ¡lõ]»Â,G$E¡mœ\u†c%Å¡‹©ö±;ÿöÖHfN=ãUŽBvéñªŒNr(?ýD©6±Úêy#A_’ƒ…^éaa#)äònÅÄŒ±×'¼”7á¬uͪŒ}ÓæERœ´æãøƒÛõþßÿßý*€;øÿO·?+òÿOž|ðÿþ»áÿÅ÷9ÅgïÐøýåkV žÝY˜ƒ³Â\+ê΄b;Çza,Jª¬#ÆF·+iôâ=J&(‚;s>ì^ä-ø@|cäA©(n•ò‰ÂÒãhÖË£ÓÆ¿÷ú¿èþ*J€w¯ÿ'ÅõÿéÖö‡õÿ{ÐÿÎÝÝ|TlïÎî½Î#˜Ép ¹èõ¢SYð‡nÁÓº=äÓ,ÜÍÄÜ$X=óÙ1†ÿ¨”(‰P>ŠþM9©`ý'ì^õ¦wÿ§ÛÏ#4ëÿÓ'Ï>ìÿ¿;ù#4ˆh³ âÙ°¯Ú.S=šÒRTH#*¢± 7ÌQ‰dP$Éò6ĉú^}A-Æ)üû†‚õ6È'ã_ž¸cýo?ýl§¸þ·>Èÿ§ë…ÈßËöYÂIÓõž²å/ß¾Aq+=8Ùðáû½#)ÜìÇææ‚açÇ`$(‘…‚XXö%°øô§·=ú{+g‘³ÁE‡+ˆP/»yç26û‘/ä5|…HFÊwûtöù¨1Ñ‚ˆhMVÈö"ô ÙÖ'öÀKµo»#Ùåedå€÷(ç§C©æ• ÍÔs"µš0†%á7ßôS+Î%¿l©Î*‡$[Ób'|)ñ€³¡KÜ"IÀ0úQB†°ÿïxÔ»›þ«BÞ/¼ÜÅÿmV¼ÿýôé³ôÿ7ýÿ zý¿oý÷GýÿùÏγ¢üçégO?¬ÿ߃ü§`ïYù$ý‡Ša¯”#*Áw´>õwàgØw""¼ý¦[jJÔõ;]H‡º›Žx¹›ÿæe6œF§,!FDÌ¿µö²¹Ç7¥³æõZœ¦›ÛÂ@Ý•Ÿh?Fz%è³D@qºì{ùíËæõvÛg+#*ë¢ûõ~6ÏzsˆÙÓ#4°%´ñhàZlºâŒ&cwwà£ëªëT«Ïí—ž×Ñ#4¦ï&ù`‰¢°ë¶S° nU£wXASͲᤇžƒÇ›ˆD:L§ƒ²ÎÕõ°CV¨kn°œŽ‹¹\´99GCJ#4bÕéÝi|‚½”“±:hˆÕÙÀܬ#4ˆæ¥ª©‹Oy¼Þº\ŒžÆ2oïµÄsØQl&A]EÕ½zþî`¯0#)æëëÍüxã¾$ö7û)]öÚâ#)&ýe _Ÿk“JáÜÉ?ãÐyeÞé°;GíÎ4e/Ñ=×€_SÁ#4ˆì¢ÚiGñóòô§•Œ‹äÏbrãöå‹é”ð´Ñh^ô{U#43~‡ó éQ\¾J²>Bi²ê +Òb¹@’®˜ÏLciÒmA9[\‹¿½9Øÿ¯»Ãî¯À#)¬Þÿw*ä¿OŸ}úÿÿ]ìÿ³¬JDp+‰¢x±BL‚%äÆ!Ð.V%¥´{‰’‚‚Òݜ˙pYôB9ú€H×¾ñúÅÞZ¿ï÷ß¼}#ïDi×NKÒ£²@dœ8ˆ²Ú^E8ôHõ‡ò 3Ö¯ƒ˜Š‹~F#4Hœ§b9w½|eç]';g ©&âé(P—+ã4V÷ T•eÖCM°ïä 4†¾PáýÁ¬S†ÔaŸ!ÖL˜Ü}8€2Û_Œ¦~6Í;Nje•ó;ã’Ë ÞU÷"Ë-²–]¥¢F"jEÙlËäº%ìo ÅF6…T¥å¦îU&Ñní¹#4ùH$3Íí W%Zä™Æ'*ÎÂ&iNóÓXÇ»,ZÚ–ºVx‰è«·_þŸý½#'¨\XgÜðâl4bì<ó>H½)1NeNÒ!ÌÑVä&v”pÜRÍÈ« æ,‚VµGm¼—#ìÂNTßeÔUQÇàÝ knáL7º}Niœóy…>Iªó3N>*ñÀY5Ð9íÖg¯;&Ÿ^fŠ~’ ’¾º¨ÀsUë4È‹ƒïß`èœãf¼š°´£4póËqlÖ™WõvSøèë÷À—¦pÅ–˜AÇXÇw\blÂx<ir}Ð#*´ð™ê6ÏÍI5¢§ˆ©qa‚©$ÛQÚ̆C[FÞ>êÉù *Í&ôâZÓ/Ž^\74ëJפG¬¢x]©¢Â4jo_–òp‰*Ç—n²ÙÊÈ‘ëÂœ¬º|P¹ëîtÖO¶¡‚Âõ @z¿Ðiü€’0.èBÖ·m$„Q5gïæ«®‘~mú¥Çmè\à¨ØñÍç(Ñï<Óª¨àgM1Fqþð§Mª†›CÅDvÁãy6ƒÁ˜iõ²énìWmlÜé”LvDdAtëêLgƒk r÷ÚP5²n”AͦWÅjÓ*T#*¶æTG$ ¬0`Òh»½…ðÞŠÖzÑað—$zñî@yC4ÒäŸmU0K×Úkj¾,©Ð<]ÛZ‡‚¦6k[íµ#*ŶÙFÂFô9m¬µ·Ö<“d") _¹š“ÑHÚánš[Eû7$øIp£Ì„zT¤qáàã¾|qôâýÛ·GhõBg×Oˆ#)ØŒ`° U¹ÈÁIpäü¶µß½ØûæÅWû6±¨õWÔÃ|¡š¼Ù{ýÝË}ªÈz¾Iö-¥:$åéTÙWgˆ6¾¨é.ù*®Q¹€\ÑBêŸV¯5‰eXÉp¿E6S`;z]¤J~V·Ò˜8K¨K6f$#)öÕ†hÙaúøù–#)qÓ{~mO'âݳ¶¼Ýeã*öl¬ôS"‡œ–Âô‡ÔqN%Ðp›ttxP´ÉÙ{v¡4ál¦“êôÝ#*¬‰Âä]c[ÈÙuxÄ:`S¢@¯Ã[¥Ý&Mmm`•ã¯)›sè2µ$ºçh—fN‚èX g*‡ÝëÆ.‰Ž÷li«Æw÷š™›†.7bîñ}º»ò–Ë3Ï×,``ÜJ0luþÛA^äÒ^´_še¸ÆÅp¼¸†Ž"Ð惿ÿŒgp|s#*ÉƧa²šmlÊ9Ù±9eí7×½¥®Ï=ú©è"óZ¹"þœ:UöMx€ÑØƼéÚê#*Sý¡’ÿ¼(ÈšßãÉö¿¦;,ìÚ³ÍÑUÀò'¡/×uù(Á>ñ€E„l³ÇI·s¼*õøDLtoŽ¹¢¬¸²–u[VXŒi~¦Çšža©8å&í|q~>X¶bà(Ú—koóðÇ~-ìZxø’Ëhö¹l<˜Wí¤Ià·Ü–Ä]ƒ}Ÿª·|Õã–·d:|-Ž¥!.»ŠVÀ§‡4Á±a\ X{äâÜï&¤ÂšC¹¾x¦¸»º¥ƒN#*·_6‘uÃÖhñqèĉ#gå˜;’hüb‡‘ã’è@¤•®¾úµB˜¹AÙÚXl©âMú[½`#4 ÉRÌ_ùÄxj(ôa1¨Íw‘‹6Õè\/8m>a3êDOµ¶©Õ *ôàHìyÏK¡œ2䋶¾ð•¸#)wú<Þõú„3¾ŽjGñéFÔî!dꃛlíud¬œdCµ<ýVèqâÚ¹¯a9ýÛõuAïØ=>2÷?Œ•ñçø"XˆV?Á¤ ºÀšIˆ×n‚¹O¥tt•jõ êZ.G„¼!:1PwDf˺3Númù)Æ¿À‹ÆêZ£Å¥\ç‹)Œä1âß,c·<áë©ÎŽQ~ÑŠöÐ÷ŠÒ0Êz®çÜæó”]ÝÖtb¾¹mÒ…<OmZÆ>Ãïå˜4 ª¦vì?t>™4'èØeœe}®ñÚz8ˆ¶’¶ÚîÖGOþiÆÙØS¨Õ —YÊsÍ䶶’Ï“89›‹w™ª°Ky -²óíÁ([iSWÅ©MÜùòý‹7{_cRÚŠXΪ’£šD¦üãÝSÏTXQ¼T7E¢sƒSoJS·Oã$iY\+^zÛG#4*nIT…ÙUõ?ñkîæÈúyÀ^øúÅ÷û¹'!h¨«‹‚¦ÿTU´«ìÍØ”é̼^‡|GÀG½dI"L››=Úך$ÝÍ£C1ç}…€|—êGÝù0뢃{% %ïHÅ|ð#)uEïü¢õø±æ×õKÛë{‚eà5=!¢ú³ž•h‚+FV5¹/X£D¡8¹Êá.(4`ö÷j–¾ÈÝÛb<ø{áò#*vŒ½Hôä¥q-øÅúÁOEõ°lø’§ø™Ê¦Tì²ÆcœSÚ‘n³éL>½#*»VÄ%P“îb8'¢• ØLZ1j#`Ú¿}ñÞ¾o‘yû>JP‹(ŽØëšê L<9áîBµûê-5ö”*—Æ8ÊñïÝþ«×é]´ûE•€îÒÿýìIÑÿ˧Ϟ}°ÿþÝÙ1þ[ô[µrŽº:pG‰¼5̉p¡Ú#4Š¡kî$–nOF¶ô×þËtI§%¾Q~y¼4ǧíÝS„#4&X§|<8‡VÊílKña¡š¤¸cë{usñ‰¸õùí4Å øE#)f‘#*‰zËe³76{Í^¯¹ ûí¡ÖbIì¤3p×Ü–#4Š7¶ÁyÔ‹$:ÂýÓÁ×¼Ãþj2+ä%¶\+8÷üa«ùªù#4þbà+ ŨØy¯X¯~}É}†æ`o$µ±è«WþáwbH oÉшި'éÏâïœw1³›ÁpHæݽ½›JTŽê,)+ìXÂÄ–$QOÅÅA•–P2‹ƒ}îÞ'NDî´y®nØcŠN&/U%#4!” DUF‡ãˆû†G¬´æ–®õšªY°öE´N˜Ð2™©î<aʺÉ|u“`3 #4nž¦ð—_]-O×D•Íˆ7#4wIËƲÛz@>ƒÓ–].VÏ#*¬o*¤8PfŸ!ƒéÝ•ÏŽ»3›ß+³ù½2ã³@~gv¯.ÃïÿpPÂvøÛÚÿ}¶ý¬„ÿðlëƒþïï`ÿïtÎ8;ÝÙÉ.†dž²ñ<ðWÅ2¨Š°×&5áJtFu]¥)¬ ²gûL¡eWh#*cYNÍ)ð=ØhÝí0ãã|ϺxŠÅýŽ:WóÉ_q/¹Êné€{Ï_LæYŸŽ»ü¸I™¸/ËÑÐ|„7÷}vÞû|g§ŸáwtÖ’Ã rÔ¥œ"GR.Ñ[Y•v,p*rEÔë3¼à«“r¼~»÷â5j@X#*=2ð÷þV#HÂèÑ«ò&W TÑ»wNïÞï¿:øÒòî;Åeö§`¤‰) ØGáÉbƒ©´±3‹¬6öámÇ„wÎ]ïXXKÌ<ØðŠ"T>õ=êÅ:Y{8–†#)Õ¢&xãYPjÁ0¼¹ˆ4BÝ%-}ôò—#)õ‰‘XëMCæA0©–R4’ojz瀚ܗ—VæC#4Ç*ù+•8xsôzïÅÞ×ûéq8p’IA§4N¨à„2Â+¾ £woq¸¶x8âF#42¦)HXuZ›F7ÈEì¼Üõâ»×G¬2ƒ&iÉÁEsCoTußgýŸßÏ››½&€Ì¤NÒç a·øö¦å[èPYÒ¢BVF·¬%íleI-•9¦çS_ûMv[@®55šKh®çkjU]7èC5ñC\¡Ý&ӷǾ*ª™0pÚ&¯‰{à§ÆµÐ¿®úu°§W'¾•úhª„ƒªc{»òúÃU{AVIN¦“jr2üfÄJ®Ð‘“P¿6JŠðâÝ»7/¾Ý‡#4+õªÒ´¬_߇VÝ9n$þGòüÄ¢›'©Þ”„ Fôø–$ç“Þü²9™¢¢Ý‘nÞd1C˜>¹qq£ÞlÐEs·o‚%åŽrâ}Æ»ãþõPÈ™m¤ƒÏÈDI;Ú(ãÝ0:ÞìnþãÅæwþÔ>݈ô–³ Å!ÌÊ;=ÒÄi ~•BW®¦Š«ÎK¯ü6¢6ÎZ>ÌÖ,CˆP‡;<riíâÂë†hÖŒÂðpª]«!^µÛí©1s‡,-*qŽN&ø´Ñólº¡yè{ôz¯óíþáዯö##*”Ù¿AÕmx=2»ü»¥µO…Õ#)¼¦ê]Âê)Ìv#4‹˜m¿…£’…àa×ÜìE„|ã&k´°Ñ#4Aæ5ù\hhÔ›xª5õÙô$°`3ØHß~õêÛ#}ä¡÷C<%ÎH)TmvHúÞ¾}Ù¸m@_h»gò¢_hÿÖ¢¥"Å.ÚGùâϯ#)õá‚êÃíŒJ÷õŽæŽ²Ù…·q.⿾ÛÿÚ™î†ÅL³ÙP#4ÁXrmuŠ÷UÄ+‘ x'`0Èm²!ô¤+Që¼IuŽ`ÎͳÙø±LëÀÕÑÁ¸J®ôflÃ#4]‹3Y©öÞšTû׿üÅ›6ã=UKô¾Øµ*ï9ýôüåÿÎûŸQ~ÝûÍí¿Ÿ=ÝÙ*á¶ýáþçwaÿ=É“ü¥;‰ó<X5Dàjü}·‹ Rj/8º‡€¦Ž†HI/é-—IwÖ#)FL''¼¨}FQÔèö†‹A³Û›®³~Þìö·áÔcóÁ ?¨å†îÕóÛ:ÚkvóË4Ï.Ñ”°y6˜çè©ð<›¡ÞóáäfÑìua€²y£×6{ÙlÞíèwÐ6{ƒÅ²…bsÈUzó!dýá?PÎòÛׇ÷ÀA×½¼L\ªß›ÝN瘡`~€ý'ýÏç—WÍ~wB¥öÏ.2`FáïÞ›ýÞ`ÔE×ñ}ˆðäSùé7øw!ïH—#*»·Ð¯ÍþeoÚƒ¢éÐöègÌo9ìy-_€Ãkö…‚¤"0˦ÍsÜOûÃ!<šç}øûcÖ¿íëøyÑÇÞ†¿Sè¢æÅ°»X^4Å9?#lKãbìú“›&=@ó/éç15§:ViÐAbøýͽÈ.áã`DSx¦8XëÆU6g8WùöÖ6fy¿‹œ|¸ŸõFsùéÓïTÞ§0™S 9üä1‚|#ž:£‹Ñ‹ÁÒBñæhÔkŽ&gùí~§3üGßÿ>阼£¼KÕå½QŽ'³,kŒò~7‡ù`tAQÆs”“DçĈ_÷þ·7ù¤‡–£!¤›/ñ_Ô€¹Â5cMÇ<ñÆÓéœÒxÞ§AÅß³ÞFð÷E6»mNúg=HŒ?Ð#*üíM1`ØG&"‡‡Œ^³n¯G?‹9¿÷ÏèïðþB'c #4$òg[ôp£Ð˜äÓùUsÚaçOû—Mø0ÇÇ‹ Ð9ð°ø8C‰ØÍ-y›<#§ð)Ÿô·/‹†üö›Ÿäd%3ëæÜ|x€ºàå#)‡’°æl#)ó·¿³ÕœM{ãþŒ~ò§ø3›ÃÏ|Ô˜Í%æ:§K-ïug}Ì,ïÍ`M\gúpÓÌ3(-Ïx±À|AÓ/?ï5s˜´Øêüòºš™_oèã ?»ZL›ùxÄ‘ºÑ÷ šÓäóBØäÝs(ëºGSW†u~¹_A¦@ÏÏ=vî}“7³!þMƈ¶ƒuÂÜQùt{«IÄb±„=#)zéÏ·ü·ß¼î€z4T[çúüßœe´&›Í›ì-¬š7ƒ.Õã7“ßÇ£þ¥î¡‡)JÒða>5à—§y3ìwq#4݌ܱ7*!ßéÐtýÂt¦_H1—A\vñôÞ»l.aRÁÂn#)}wgv<áýW <=nEËgOQ9mÔ‡ß8÷ÏŸ¡”þâÛ KŸéG¾v8n!M§2ælDŠo#ÂiéC)—NX*‡…©]˜MJ‚žëea«àûõS›ß&`4˜ÂÞø`B:çÓRàu9¤-¿|J÷ò¦{µ†k8è#*ÃúáégXèÅš4BÝ';¦[æÝñ`1r½|Z§*¬Ñ˜«b Þ†ÃÑý£M&ëŸaÕ>KèÆ}‚¶·Ú[ =ý¡½µæÝÈöµ¦ VzËW$1¤ ˜ÀšŒîÎ}<¡6‡ÝÜF ²+hÎLz–sTzÐB Â`xËÚ®MS"pˆ×ƒÙdŒ÷t¹/UDk@ù7åH£håÐ4‘ŽêzÔá~\ku8ÃŽö©z"n[|pŽŽNIê‚Bwxýöðû½ÎÑ‹÷_íÆ“Ùñ€4YÉ(Q)¯õÒ<ܨX;„ö“€§ÒsW³ÜĪhV)+׺җ°Y¢W~H#)hØj1Oì·rBHk™1hã½#Z&£˜Æ®Ãè‚wT›g‘˜$[•ÿúÅÿµó⻣·/÷ö÷Žð.ôjȾؔ!Ê6*Cõ_öÿº;W]ºËQñ+ÁÍ€`£p#4_µAbÅ{~êõÇëTCÚæÒ«½¦J~àË ïЕ‡È(mmÚäa;Þ½xýzÿ¥ëñÔTUŒ2eŸƒGÍIûØŸ;õìn“{#)™²õYs“M"…¶3°Þe}Ø#4ËsÝM±p&KnX©-9k¯º©bgýPm£íáØZ»ßoa‚ÐNÇDªëÇ¥ª‚AÖåqÃyW2ÅÄ„#æõÀ‚´g²¼šQ²Íã.J4¥$ fK6–³œža•»gàÖÝsoºhØ„<„p~Ìóػ҅j—oÒ¨û8Àx#4ÅŽ&ßv´×[ÅaNxjW®Ù?ª‘–¤0µumÓ9ÄŸ\÷ÒIysB»\þT—Ÿ·W¢Þ Ô½ñ|#Ý^aDŘg0×PzOÎà@@Id)‚Cú& Æy+[ï·!E´ä»l4lmmíOYïrÒœœŸ7`Š7¼!¥—×_¦pʆó$Ýz®ç#*Š‹ðéú:þ¬¯s&[_—'ý€Y¬¯Ãßõõÿ¤_I¯·¸ŸO“W¢cGà†—çŸìïÒ†ðÉ÷ò»%Ú$kÅøˆ.¢RÌw¹˜jØK)¼ƒ ²‹Ï„·°ˆzQ…Žíá]:Ónò*+böò‹reÒuå%W^„Ÿ1Ž?%”Sš¿½iEÿ)ÊUÙi_KŽ¶’ºQk•Ž?ß=5YâÓim¾8T6Oil)ϧUyÂö#4ª€º%¦j‰É2ö–0ì…Zw…Vq-vžÄtí;¾N‘àežðeÚ^LûH ]w“xŸ×,¨¡ŒÃ?Ÿ±°ž Jð²^óv`ËeZ¾•3ÆÒØÚu«Mì½&ÅÝñ5³.Ã<cèilx±ËåÆqô ãÄ&Ø^øç/¼¿Ãshßx€§N ØÆ#*«‹Š×½–ÜéÊëÅE6óx²üÎ6b-¶è.™Äê^@¡™/Fý#4žv/²/ÌEü>ýEbÞ̪wøzúÚÜ|Þ<ï†8ÖóZj‹Zë-Âtª¨pU‚Q¸ÁµTŒèq©àfcÑ•øæ5nUýÌúî-76ç™f¯%ÐŒ·ß¬Ú,`ͽµ¾ƒÙtJè˼Aßc¹ñ’3Oîà€=wNL£/{½"¦ï_ÉÑâͲ‹öÛi6î¤~ýÍþ_;¤«ÐùöÅÞ×oö“èðí«£?¿x¿ròçÉͳ§Ovpó:9ùvЛMòÉù¹xo¿I瓓×ßäf(@åš~¡*Ý«Uˆ„R~ù‹R#4Ùõ`Rµ]‹*ýl™n5(h;Ðbê_Û=èeaëöÇ‹¶ŽËI(‹XT÷ƒÄôÖ´E¸VÄ£¸Ê⽃þ¥•¬d³laôÕûÉdþr0«ë1ƒKtÿ<ÆL¼Ø>2„&‚Ì—£a¨ÑÒÏ›qN7> ‘î®N"ÃËq|§¬L®"w‚H,õ©8/ë¡B3䨢*¨ø²“è5nÐBŽw.'5»hÅ&õYŒr‚²KîU¦ôNXýÚYïª$9¹±×߯_2† ‘UÐw* j¦\ÔxžÍÆ.ÑßZ'ý“þ'mú‰[ûËiüÅÇŒÜZÈË»Šä™VäsZÑ÷{l–å(x'¤}?ÈÝáá|ÑLHpAƒ±ÎËôä/Ú b̪#€ËO"q\zÍJ,W²6~Åþ’õ¹k;Òhi£ýJÒhëidU‰Jó,Ñ{DÊ^ia‰#4˜7¨§IOA• gÙ,=Nºó}…±mV÷ò²#)K¯JsÏ-“ [e6h.JwnD4\OTzãÖ|A6JºªàŽ=ó¼ò¯œžSHåWa)ž¨>‰²R“Ûߨ“JõžÅJ]½ùÒ“Þtáx8º‰ð<k"“ê0Äθ òÐwâÊùæ aé°à,Ô4´‘Â@FªîÃt‘’ÈBPCtH§Äì*œúGóC]ŽÚ}à®qr‡ynP°Â$¼Ø±‘Óp-ZŸÄ&–dA{Ûª¤Ð÷nhÄþ*tˆšn÷µÖ&iÓÃêJ ÀÂäqi¥Ü6)vqSœ^ç:í`;—Yg'=nòUýsñ~£(¨Y6*ƒvF`%ì:²knS³Wù;Üu»ýEv8ú1 9?Ÿ~ßcsMä›?½šÿEkv¿ÊTm:‰Wñå?a繯8+·¢„Zke—uU³»Ø}øp›=2‰¤ÙK„á]ª×̆ŽHšp¤F£^ÏØÈU™ËŒ`åu˜Í÷Ç×(#)nÊÉóÿù£^tÈZR|ùŽjW´Y²Î¿§iq£áªc¶ÖmTÑ'ц”q¿zšI’SŽÍÈÃïžjÙyyÑÛ+½pÍ»ê`Ëðt¦/‚ÓB¹S%UŒ+T÷Åb9º3tÚJ>Fà—%²Ð{$<Ž‹ii:Lס\xVvòñîîæö©¢;z“G&Û¢,çgV¿Á¢Î{õÉ¿GÓN÷ÈÃÒgÐO$ÒÀþÊ1·';¦ÉZyÒX]wÖFp+„Þ~bÉiÆ—´Ø¸#~¡ª×Õ»²(FNಠNV9)òªÜ-Ö¯q>ÑÞk‘'ÜWI…Лs´xˆ¦;ÈrtÓIL: -W¾z]àR9-ÞrBÅ÷öIpRÝelyåö±PxáÇå³ÏjI‡K™DP¡•RY‡ðˆÛI“ŠH´Ú'+£‘:Q´ábóݸpžõEH¿Eõ¹wçÃÁbø¨òÄE?[_DØö»Ë)ćW.Hœ¢m‡¯áùÍõO¯ä–¿%ŽÙ”ïl'8µQ9¢È£%ÞF!™òíʲ۱Öpõ¢u35$9²<Âæˆ4Ê,S¿NyµlD~C^½P§—pôzÐZ-îË?i¹'¯"õ[µ•H¥ê —fr¯¹Îoà'[q,vT4ÅÈñø,lá…9Ö.NøŽI$gM5w¶¶?Su ¯þ¾Ì²¼ùŽtò›;íg‘5ºžÎ.:J•äÎaVÞñuÜ+²N…ù¯kfo÷äD‚šÖät䟀ÛÒ>-;‰üA#hLä˜ålF{eB7ÚhqŠ ǘDèÚ©¿è‘6×c´zfÝr9›,ý†'ìÒÈßÈÌ—·æ;X#*zºâÎÔŽ®Û²>ݶe¶·ÅÁ¥RãóÉñÖéŸheàdŠw€rbƒÚå“aÖQC#4#ïÎf)¶„põò$â@/ˆvGgýns¹»<V+X:n|oP]qmec„õÁõ4›)f+…Õ$“((ˆÚâ5#*|+ÂnÆÁ¹jTäÿ#*tOU® ²å ºAÛzŒØ„XÑÿÚßúU,ÙIøz¡úô°BdÀ„ÊIµ[׎ZÀy/Æ‹Ð;ë^¯J±w<ï:¹CðÆÚÉÉ!*Džœ|¿·V+¬ý¥Ë*-Ú½µŸx&~Çk÷>_?¿kw‹aìm4xyA‡ŸqëÞ<+/¸ëê͸uÆeÙIqE¹›8¾L²Ùyg?-³Úkïôî{ñ@UQ7zZ³R¢8y'`ŠxªèA¢£ÌmÎïyBb’R[Ë*yŠgEBŠ=î:uÔùÛôõÿüîðå7ôûù–;ÃâÂGÂ=òt®¢Ïh·ÀÌIÝ/Óâ{Ñ÷@ÎS&ó¨nýÃm'þÍ$Ãh“pr¢P¸9<nlü†ÂàÚòÿ—È‹‡ú#4qh Ÿ¿ë\*ÑUVêŒF¬˜v±4ÚÿöÙӣΛGßïG!a÷±ŒO'ÝÞî-}æ{K——(ûÙý@9ö½v5“}iÏ®ÜÙ4Æ6þ„ñ4jÂPG¡ªh”ÏGÜ÷;÷Ñ€„Ôþ&U³|ÈtpC÷“:ßã¯8Õ,Æ¿Í`Œº?LfÞã aû›s8å‡pŠ¶âNñ¨“Oä?wøâ·Þƒy–ÿö€/÷áÿ•¿{x$VpùÈÈKIE[tÅÖPE|‹°R…º«ï»_¤:”³ÐÓ#‚ALÏ‹Aÿ.²§Uº8ƒÒ%Ã[(ª»égqŸoôaK¢âÞ#4ëÒA~ˆé&iÔ©üvƒ¬Õµä&ëö“OojSX”òg³Â]áºWÒΑ);¥†,fÃ4B‡ÝO>AADÏÚÔ|Ü>ÉÆ›‹ü ‹QþÉ|2ô>y²óùÓÏ?ð¯ (ì®úñ*E5#ǧ©¢Œ ÷áÿ?ÜÞÞÚ{ûíÄi:„ `ËhÓ©mÒ¦—êzšy'cÍ¢løا=ݘEíöÉÁËý“ïÿ<‹J'Ig5£~v÷÷Ë"£‰M?8oÍ"¨1‰›këa+×kŠ_‹Z?Bë·J+6zAÖXhx]4Û¬Øõ¬õLÙŠŽ.³&mžMSºÉæd¬æÐ9{ùg¡ì»yøÍwÍ(j7ÏÐ{ë¼ÙŸd¹ çf#´³8Ëš"TÍúM(b}Ö†°ÇD¶Wh¦¶˜Z<I«1‡ëÕ\Œ‡ª*BZvZ?‹¢AÞ¤EõÛÍÃ,ÛEIl¼^첤Ô׉[:ñ/Áɱd•M¿U—L•ÕþÓ[†³kõ‚vš8®0pô˜ú½¹m¶Èú"‘”ÂÁVÉ ]ñs#*×YŽª•¿‡5-/]1q”:{`˜'“ì0É$´oLA½2ko^¼ÎÙ¬Ë÷5ÞQ’ÑÖ 'ôíA±75vzŒw«ëy{ØÖ5~Tx½q•yˆf6ƒÜu–d['9ÈæyMv‰pö‡CÕ~¸g€¤ê¡wŽƒœz#4ÒQßG¢tøBÖeHŒ”/Çø3i²+f§KÃñŽ5Ωµw}G¢ÉBŽ³îŒNç6ch÷É×Ä<5¡Òš1‡“›lf?¢Ó¾ÅY+:iÃÛÇXPqpYíÚ‚ŸìFÉ&’¦Ö“a¿#õ±už@˜«¯sêQ‡ãSVÌÓ_©™û¢@¦VRçÒ(²rߪ|+K ?‡EÞ–#“ªB<½pXÏrÞÇ`ÌÆœ˜ökV'¢Lxg¤-Èý±dNVÖ=×*#*ö³ýÌ€7žØ9‡KJ/%83£êKÎl>cŸ)a.ÀÙ"“Šö8¯eêy64KÕcã3$KØé®…Rgô\Ydš%ª=²foθÍâ$)Ô©¢LŸåöP¾n©š·Šô±Ëq¸FŠRšãhñL”¶º÷ð«ý„–·PåBf¸æKùaX×çF)|§~¡ðTB:Úê[Ö(C¶6—˜¶ÞA2»k¸^tÛ¤gcì3¿a܇Î`¥#)唽Â-Æ}ZI]r‹#*Q½ŽÆº™‹å-rnBÑüÕƒéŸ L¯Û0û¨Êœ)NÑé$ÚißIë;Ñ™—`äT- <a)åáal6Ø“A¶JlÓ)HD¥Óò&®ˆãèðENÝ&§SX_ש_K>þŠØ=SÁÖäU´R'ⶕ}„IBc‘ö|E‡#)Øí.æfÜZ²‘XÜÝëžCÝeØ#4Ö#cŽú¥+e#*!éùÐå²2¸×A¸§B·ŠöÿÁ×t¢éät¢ ¾û.Ãß° ÁHùÞ¼íM6£þ įÐ;&«B>$‘ðCuí#)Øqo!ë]늢hc.>ÛIåÐéâ%dú„yÚC O_,šn5Û/÷:{ï¾c#©ë¶QÀÁ¤8L5obŸJ1Dõ„ƒï»ƒ×ûï –ú´ šÄz®ä¼6Äó_•æxwó‰¸ó\#*â°+@Mb&bшMðå}콎2äÊ…ýåàõÁ›o8øÌ„}ù\Ȧ"—rœCˆ§¨¢Œ.°bêíøhº‚¡‰½Û‹›Á8*‚q`o6Ù©?›ßLfWpšF`DN&zx‘3S3!IB“ÃO¿´0ðî^"#*ïAã,¿}ñæàLÙ´eF•ôHÉǵúÁþ<žÌl2ýb<+Äà™DÙÞ¾'#4¡ïýå/‘Á¥#)Z¢})°%b0CÞh#4&ÑF~{Žã¤½.d<TF,‡§#)ÊKHIÍY¨›ö ŸçƒóAFîù<%¼óÊá÷ºÀà@~äžw5DÚð曎ÅHzÍ|ØS -FùE#4ìWó¦Ë““±þ%QŒÜ„OM=®…Eq©{LBä%õ31_¼g˜‚䨰ª¾g••¥Ò_¼r€Ë&´òÄRô>õu*ô=˜Ï5 ûßE•…Ë—ÉQEöÿ?{ïÞÖÆ‘ô#*ÿ#*ŸbÂ.×hÌ ƒ;÷²g `‡]<€û•õèÒ#)Z„¤ÕHX<Ž¿û[§î®žƒo²{Û{mŒ¦Õçîêêª_i|vnL¢}ý07×Ô #4Ãñ á挚º¸@FÌãhƒåq½QUÚç}šJnûª:oLëÖÞ(<OìN¥WÎ#¾¦ßÖGãÔ÷uħU7fuf©©4,…ÖѬU‰›uyqrÎ+#*3—”äz¤È#4™]ï¾rJÿ¸øüåYŽPwô´c}]Û‰•¤zýz¡t¸\*îî=ß?Ü;%OwÉÇí#*§';ç„•BŸg/Îà2£½ÂÃç4/yçðÂwYÊÞE-ÏUèmÞ;^d·/¦w›~.ýSP]Íç;asÍq¼®I`¨úÇÇ8¸/ö¥/¶O$R;€mÇ~½~í>ÇG¯Î¶¸Ø-ÆÎÉYë嫃³}öÿ¾·ËYª"¡J°4çhíÌ%B Ðî}„~|q!H@5êÞ_¥¨I"ªšPÄö³\Ð'ÊÝo¤¯2#4|ÿÊe ÀŠ,å{òü…aRÊÒFwÈŸ*ib«VÂ)ªÃ-!“ܲia‰pp:Ä„:Û;9„ô&•#*a5µw3ÊG™^Øylúæ!ÿ6¦+5quå\É“*òÆÝ®Ÿ>ˆ9ø-íî'.ü!|Q}þ¦}ÔBö†G¬ç³¼“×gç`ŒvRÿ#*F{kFæÙQ†|¦ùîŠèƈøðâ&M_¿Ü=[¹ÕqƒäŠÙB{I‚P|2=gÉcÞë '4WÖbó…]ÊWí#4‘ÈÛ¦' …û€6ª™[âÒŽg7Qˆ-ͨ\Ð…gÝEîáCHóÓM.´ÔA}Ñ26dL‰âƨ{î<vÙNÒ.±<‡Z\ž—Ë3Åq!kuÊ]®åÖP…Ì-$¹ßž€W¸<îcè;ÉòjÆŠBj;WÝã«Û-þ0^šç·nÚƒÞE*^+V€>Smœ·Z…¡zeÀ ´æ&=8‘I]µÇpå`–w8nuÓNBj6Þx'“¦„P¤røMžÛÆÝ#wm$â¼bØbÈÈ#*»hßôúwئ•”»}4ѵP!T`ß?Ü>Þo=ß~¹ðÝ^#41—Øc¼þ¿_Ó9;¶†N¸•Î{N,R nïÓ‹äÔ[¢Ñƒ‡\ÅébÜ)N³´4rÔ¾Dw"ˆÄgr™V¦ÃXÅÞtöW¡+ýiÿtt¸×Ú>>Kü”gšþÁzx$NÂðp"u^ÇXúöhô¹ÿÓ0›Px3×üOË\ä£\û?ÎŽŽ¥é_qý'øÿêuþî¿îóÿ¾ñÝwyÿïß>è¯þ¿¾#)ÿ_ÀMÝëp«=Ž/;<wåý:vœ,¸Ó)‘a5BH‚–ʈ=,’Ê뼑Ô%|z'†Ô‰~¾Ñ쑺×Ç"VÉ{üií7´±üå#n`0.z°)iö}ïBEžzrë<=¿ûÝýÿm|÷í·›Eÿß}]ÿ_†ÿ¿2w,µ®þЯ{Ççîï<½@ç5¾¿?tœÎpýÃòI¸ 'òBYs¥è#*:¤ #)›GÎw,)Χƒnß}ª;¡DJ–]òîJô¢þùýöÉÎO»û'“W?¾A_¸”ˆy°ÄóžîßB8#±škjˆ4¬·zNaŸ¶ùÓÜ8©ŸsïõÙGdÆÔÑGô&uN<—Ïä„H:šü®Ã8'ráyY‘Š™ˆ‚6•§±%ã›Þ#)aØŸF+ý%û2áâ—ú2&B’sC¥Ãºky%d•õ …‰×á:N)¼ÕPËÞ íþPÑmüÈÏ`+ÀrP®#)ut5ªU‚cØÑ”ç0÷ø…ïããÔ;Ƙ@ﶢËrà¡®AÉd:ê§pÿÕz‹Ô¢'¢…ë5X³l¯>ä(Žš#€¯&ç£7#4}„kMæg‘}¡à´òt¿¾w™½jPѽ,€3]šÒM§Üd—pÅ„ï?Hݯ+ÜMWÙT¸tÞáÄDÅú¾S°Ö¸êø|QID*)82]`ŠÆ,(ÈÓ&0:ó.B3ó… ôƒÎÃÎÚš{ý²ôÍ$öǽt¾È,X©¯Do”Ôv‡ÓI#*¦¿†õt#4Ä#+e<>gVqd`Ù@â¦WÇ"êŠj*Åó2;9ç³bkkçèðùþ‹Æ긮b˜f£mÕ¨1‚ÊÁšj(Òßöἶÿ%Þàq”¯ºãBVŒàpëH1k‰Ê°¼äS}oU•<O«TF×ÇÞR¥ ÃúB£Â‚ Ì©EùŽ¾‰¼#4ÒM"Ù‡ìŽïö„¦,S 7Ò´ ZBs‚¾äŒšr^#)Ô’ãÆo«(gÏI¿fÆL%1O¤–¦T[%‘GŒÒBwvvÙ‡»Wnî„!Ñ~¸æeÜ= ó’,§ö¢vOÚ>ÙÛE²lœI‰h±Ò/Èÿÿ& ×I|Ì$8fs‹Ôûé€ØѳM•q³™$+£Qg%ŸïÑVÓë;óòaN©æ¥ÈM>èýÓÜpÜ›#¶O^´\ë¡!eG¨Œ¤V¬kÎ)™“©¨mègõ*•õ&©]Õ4\5âùçQe¿$Õõá,%Õѵ1+Sz†°R“°.ô›Ö¨e›ÈR‹Î«\…¢…'”NnOóûw]äOäÄ ÞÂlþ•öÑMbóþ?%u®ËšµPÐPÎqjïŒuýÇùú{$ùÿ7{5#)&d|.Œ¦°óÜe$.ÏY)u`&)IØqW´˜ÛcÉ:ãÄ›ÐÞPèšÂÜâ#)¡º‘±'†>€¿?Ò"ø¬ïÃ×éɾíˆäߺöúÀQÂÅü“¢ûžu,}ÝÌÕœïPvΩñôy:J;½à`ì:“áø. “$´/“› {ûË(]¯C›uVî^ÔÕÂXÓTUÂÄûuh÷Ñ:šÇÕ(ScÜW ³ÔÕšø¹J¢ÿõ’iOþ³wpùù@÷È67¾}œ“ÿ<Ù€?_å?ÿ›å?ÿ.¡/ÍáùbßÒ„|)aµÈ—éÜ+ôå*yb_'î÷oo`§&_ÚFÍê“ÿ9Bâ¯ÿû2öÿYÿxÿ{´ñ¨ ÿ²¹ùuÿÿÂ÷ÿßûaþÞ÷àIZ¸ÙÂߊ'?LᎀÒ}3«²1ÇzÊVX”‚í:>B®í÷¹ºú;;œ•e}jN}¶!´|Üu£ƒ«•”×wv#+=®÷]€ËzPPµé|µQ›òÄýÒ×Ç$ÿ1YŽ°1’ë~úR}¹}ò½tVRú—2œØP$~>žôE#*´D“2,Ñ>#*×/Ž÷wÂreSˆ}ãaHÿélt1í÷KuMÅÐ6~„–¨äißÏ;à”®â#4óîëiÿõ¿éþÇŠ¹Ÿ›˜þ?~úèñ·ùûߣÇ_Ïÿ/äý?§e*#)îÍ?>vÓXTÐüjž€Ö\ŒË5Prw™Lp¹‚€Ï’´Úý^;K³¸ÓBC§ñ®†"ˆ…Ãlÿâ;E¶#)Ïrúæôlï%:ª&Ödž†##)9ž~‹Ê«òa;í~.ÖÁôêtIý¼}r*°7‚´G–•"“ª$ØžBk#*e>?ù—£“°Ñ–RßÂhÕîììîÓ‚¢rÔ/õ˜Í>½ˆ×¯MN›·´”nY»œ%ŸÖ¼C-Rò&]óf’oª‹aÒhÕ3Àüµfp¡e“(Ôªó†'*Lšn«TU=H]ÑRÑ/VÓ„ÿgTrRQɉ®¤1ÏPÅ&ÁgïýB Ÿ¹ãŠô?¶ÍíÌ5wûÔöðßü]ùJ~©÷ù.?Yð»îšÇátBÏ’«Ýú0\Yëq>ÚE@Wgñ¡Ÿ?,™ø“…(ÿ‚¤«d#*ÄHÞ…¶'“qï|:Iýg!?kÒÀ?MûBƒ_¥}1¢ÎVSžvzƒ~F/(ð‡˜ô,MÔ¯bwàLVÊÍ‚·4‰†“Gl¤fy ZŒÄGŠÚLJ”EÔŒµú¡ÁÖÂtè)ë³}žA´@¹ìNµßûFš÷ØRHŠíÈ9_ƺ76ÐäèO'v”X#4ð¥"‚¯È‚uëfãNuB‘%´©x½†¼µÈ«£GšÒb#)=åv®z}˜[µ|}©Ò¨~sŽÔ¢|#4!·zBK¬æâý+âz‹CíÁ,[ÔB¢ ¨UÙŒ¡UîÁyh¦›7U+´ülmâF3ŠÖ#4j‘U*ätÔ¡Y‚m]ê¼y¿ëÖ"_B“#*™hÕ •Ó“"Myë´æFþcggØŽ“ðÍÞÁÁÑ/p3~—ö.¯&ÉcDšÎ&hÆà`«›aW—£ïž<aõ¼2~$7V0Ö·#4ëÈøžŒyœ—fZ6HÇíÉp\g˜Ì¯Þ¾Ö`DáY`+Ys¢‚ šwâ2‡€Æ-^ýhµ¨Z-øE0KµÐÜÿ)OD=’Ý 3-–[ =!:™¥ýÚ‚#²Æ”‚7ÖkÅ"i/®…b÷l£`²æZ‡·ƒégøßY¾í˜Hiî™ÕéìÉ”1>Yãˤ°ÍÚz¸†”ÙðM#)þüüG§w«ô<ëÚ=ÊõLÕjÈ‚¢²FÏ’GÎO¯%!e¦<›f¸“eÜŒþ^ƒþÎÒÑšd]%¸Òæc£ô,-„Þê1ÀAÓû<7”ä*}–²T§-{üà:~ðàúÑQK²)Bm9sZÚ@ê^>“Åap@ÆÀ3eT†–Cf0º¹¨EZ%n¢*wsá¹q÷_žiĽ#*¶l$Eƒ¶Iˆ¹bÄhOXé {ài#GÔÚµª¬Å¡”!nsX eJªÆLWÍ-QGÔö%†næËù ¾u„ðSµQêE§ä7]må±›Ëf 9eáj~^H Î÷¨Ô‘]zsžvñÖ˜ž!Vìj‰½ëOfyÖÔ¨q`îÂÝZI?p2b7£ÈOÝ×í¸ÄæWÓ$2záë<Æek5û+-c=þ¨ýbk«fáóù39—”u¹Ë“SÃÙ>AÝaºù'‹Ð?üù=ü•³0:8þ‰õôÛoéLÃÐ^Nj>MØ?’ÐN¼nÞÛÎ2Òº"DíÍð6î„#4_#4$o€-û¼SÐ!.ðèý,Få¤0Æ¢£e©Ÿgr_Åñ¯ƒlO¥•h ;ƒtm}öÙ,Ã8#—Yh‡%—¥]š%zI-›u‚ùyA,›*–¸š"F²—eÓs#4«éèƬ{Sg‰áË’™Þ\ÌÞb†çÿÄk‰NrRA«çßdˆ3Z—¶Ôâ£b,#ʧ縦º=WŒsRá¼#4¶&sî\^W”Ó{•ü¶7´D ì> @…üV3æå—‹§ÀبgyÉe˜ôÖ8í¨»°9`ñ<<Hô-B’—Çá=OO#)éí;wWB.{‚u8g`çš(%Þ£é[ÖHž¥|½èŠi"M#4ÌQ¹«†]uïl2(Îó÷úÀ@ówh ]~áâMjh˜´Òn>ß¹±™3ë\ôB«0MåH+tYAoÛ+: &¹ÕË55Yó¥0ô ãrÑ,õY6Z7‚‰T%00ëýŽl²ø¢&» ½,¬ðSçÊÚ¬Yðt#çÄ6¢ü,®ûGz§NH—4H½VM!šé³87º±»ê£€jÂbvp¥Ö[Õ÷c…E`O™ëI~òMa¾“HÇŒOqÄÈ{ÐGšÓ5ÈzÄ»S'ßÏ——*yn9&NíØMDzB‹¥L+r&íÛ#)˜ ,ïóû‹ì©¨ÇðJ#^rõ|Îít{ª“›xʵոÞ*gÂœ–u±Qàc‚±£!ÙªaUMJšõfE .±¢é^º ˜M²{]Áþç]OI®/ݺ±Ø»»¦¹^š&z’¯\3{A†ŽßË£ÆïÜu„Ôøx€âP·2šeÌ=ª·Z#*(0’¨³’2Ü»ÙlçƒÓ¨Q#4÷Y$‰ÃÐÛÅ©=Ä= —`¦¦çûÔ?7‚¯‚^*qãNØû£>&áßÒ£µÍf³©›ŽXôeî+wEÆ"2÷y6½½+]ù¶“‰ù"´¨´ ‚ámXÑ”ÓÌzg±êÒvçP*œF§v'W|uÒ¤3|kl¹íÇItJö.óµvçÉïê92•å°j±˜Â(º?o´% ¡òíÏ,ü{gh5K•—U8òYÓ>º-Ï9—2c¾ŒÞî‡þsjrmkr]Z“²ªTð¸ívÍüÕhp]jÓ‚…•ÊZU¬”téTdAí%’.p}þ’œÃøñŽm:–.NÙµ¾:M.K/N[Þ^>qëvË“P–uÊÌ:yQ·›5+ӱ¬#4}•?$åoÂ$sr{TÊþ«÷6:sï[;ÿæþÏöm›‚³PA̽Ï3ê“ð^E&®Ð4ÙõtsvµÐyI~€þàŠ·4×ezemaŒœ¨Á™Ó“á³~)l=(Ð?ÿî0³9¯úìns4¢ÃÅ+"£HKý:³GL Nw5k‘©Ì¢¦=ö˜¾-#)iêQ›'ä[ÃŽ1,+MÃKåðævˆ®‚æ ÑùO,J”{´$™¾Š®³Ü¬Þ’G-– ù;·Â2øÈœ"U—D誤≙S” ¨‘IÝ3—Aú\åÜx¨X¡Û|$=[\DÆÇ…¾´½l8* u5ÊÈG¹«œâcc—3Æå+D‹dž“Bwl—õʺ*Oÿ<Q´<#3—Z‘KÛµ mÒ½/©°4¬C¥ôK–’cŠÇ’r]-C›—ßæÿüž'Þîþɇб0™˜¦Kœ_ç–˜f¼ˆ$gJlÅt¼Ô>‡´ŽI}´h½Ý#*¦7¾‡æZcsý/Í·o»~݈jzÓˆÞoÄ>üðçð¾í´›ßWå}ó^yÄ=4H$¿éúÓŸQÃu/`÷cßTáh˜õfx*ÛX„5¨…YoÚõaèÁê’Ø9ÏEÙ§=ª•¸M¦Dø͹eîËFéÐA‘s£L[†#ûmÃÆð6@+Û=ž…ioúz'K‡;'§îBóqº,éä‰Êãn‡_wí;/#4f)ï–‹m~CÙ³9`vKœ{íIï¼å@Z°Ÿ«Ä²ÉÆßYžeîÞÙg:Œzl½#ÓQ¿#*›ºIã3´ü^u#&ù-–Oj§[[""ܬYÂyºÛ¡} X»2:IŠát?Z^䨸5ž}ßæ}ÿÿ}æH–4´™S¢vk%ÂùGß"Ác~CËåùEVrî™ïóZ%#*¶!‹=UŠ›öU;O = þcÿøxo·4Ý`ØJÇcÆh@Q¡î²Ã鹈ÉËKK(J˜¹Z#*m56‹Û}ÛÛëaj>4ªWÖ™¿õSßUoüîøÇ®ö›Úd3öNýûkDp5¢—Asàã+3yì#4ÉînØþ¥²ëåË+†f¤)ägäÒäÑÇ”@ù«èÏëºÉ£xò8§Û7/ùcšÝẸàÃ-¤§ü^ži.³tß›aîÑpi$¯é®>áë¤a3Lõ"Q´Ê»ÝŽyu/ƾ6ÂuÓ>ȬnÌlæÖù»:+>‚ÔtŒ;•GD¬Å@ìF™bÝΛíC|›¡ˆ.i„uô=ÞdmƒëôîÝpÜu#4ÌE„§<CP°¦—ÈUhñ õûÌW±±Sb¯N¥#4Fïå“ÅQ“Ù¥7¨x.1†lJ']à^O\ž¯é!M ³ÂèŸf~s'¶¹¨B|¡–NdO÷#4¥ÁØ>ýGë`ûÝzyá¸ï·^îyõšÐ5}òR3gµJ`BÜkî\<6ãœøW‰œ6a©›BÆ©Y?cj“%!õ±.=£í<ñµ¢…ô|‘¹ï|ù9±q¡e“ÿ„–M>GË„>êfÉ{鮆3<%ϬôWœ¾#4³h]À†Æ×kØŒ¥R6›#Ûåéµ_Zë#)¶P×/Ûþó–NÑm€#)Å•øŒ÷:R¨pjŪ¡#*㣔º²Yx“´¾Ö°"”æZÞ¸j«TE }?K|zÅ8úœŒFi¦mÖý×o÷öѽnQ'̉;G¢kTJÍö¸ÄGâ;/÷UEÇ^^:ØŸÖ#*%j‡”;s©!³p}Ð=ï®BKRµ#¯äT~•Êú9×·¡æè~Ý&žJö 4ƒÃ¥ËAÓ¾ô³–¥7Ü¡^ÎÝjKwH#*†kª><ÿ§‘ †ÕÕèD4â=©Lª5DÙµ€„-b#4ó)–0h“[–\õ¼îÆ\µÔ-ó4ù<MÝÉ°¥,˜€»ûGZ¬R£~An¯æÇ$îKøD+jÑBDì¢ÕuD+¨RŠýÝ<·‡cÅR7,„åÖçÿ”Y«äLžÓós1#*÷Ä‚šß&À»Wëj4•ú¡q7å«Ñútæ ðU‚¶ÙQš{!i”š©‘悱|Z*xèk@Þ¦Õåðì%†Eû£¼‰‘Š2ìú`8¾¡Êyü;¶#žE‘vICe“™ÊWëüßÙþÐÎn~üÿï¾}’ÇÿyúÝ·_íÿ¿üù¥#*ïë0çYùË–¬öf~ßvrzœÊþãuŽÜØÐÆs^Ÿ‰¤ðtt/l‹°áÙí#4¼Ûi¨a…¶Os¸=*¦ê£×r›uò—>ÚȘ–Æÿ0ž›á¤ûŒûÀ=ëÿñ·6rëÿé·]ÿ_Âú÷Á?ÊÀÊÀAŠ¾@ÐÊÄ’IÔ2Ìá–õaþ=Ÿ=~„·^òꇗkkÈÅ!4#ü‚k±ñ#*ß% ÛK€I›¨vo†á³~džz´€ù›Î©XåïuFºƒOÃÀŽ¦Ü÷fªÈªÏav±ù³ú¾L‹¥4YÈEH‹‹µ¤’&~ Nâm7²‚ïù°#*ĤÈn§‘c¦(ôÎ<ÊÑ0Ëzxý²ûyìÖD¶>áXÇ7l]›–™ã¾”~Õ&-—/´ÄkA9nŽÐ>j0¹ù}FWõUK:dÎ-Mù—_Ùîv}èfü’}\o»a´"ì»-·‡˜æ´ÄM¥BíC{< `OËXPKA#4åÛóJ±:j;ʃC®ÚŸêÀ9:VšÍeVyLÚY:"„ˆšÊ–"K`è{Ilu¿l‘cš×˜uØ|¯_[Œ#i£Q!𠹉E‚â2‹_ìD&¦T? Zö&9³Òh”©´šJjbgiÐô€|#<Mô»8wK'¦™a-ìn÷ï±p¾ó f8¢ig‰Ýº§#”©¡5õ)%Ã妅´©ÖM*Äâ¦Ú’DP`¸qÅïõè_%€I4V³f¸Zh5cz¯—êŠÖ¼,d3/Ó$8°‹¥N³/þÎãÿúÓö€ÿº¹¹ùÝWü×/ÿÕ¿Ý•"²i\8_F³V‰gák¡,$ë„#4»Ès¨M‘¤¹"/Ùå*!äŒÀ)E¼ÚÞÝ?!×â~ÏPãKŒmJ,e?^ÓnâÙ¬Ð#ècŠW:€*í|Ö³`}XûvcÔίÊÇû‡ÿ¾ÜJ'²ñ$ÿêÇ÷¿ÿóß±ûßÿ½ù]ÿ{óÉ×ûÿ³ÿëŽr÷9ŒS 8‹Iê,10)K-Á—ÿ&ÅÔõÒ‘¤Óº‚øHÑ[ž¤#WA>òêȃة}ŸBÕûúΕì äoÿâ÷Ž5ñà1‰@i-Lø–ÿÂ`¾%?)ñŽ‡ˆÂ!#45ÅÃ/ê\ÈF¢†mj¦+üÌ:íAbG¸ŽŸ¦ýæÔ©sŒt,ÑêZqí,Vº®²•¬VÔÚ#)˜o˜^º¿m€[6:ßÜ~ºöÃ¥4¡ò“ŸWåTù$—ä,΢2†z§NgLÅAN.ksk~ ãÀ*Cf8h¸ÄÖ°Á$.Ó~"]°¯GïàùBÀÏ*ú_èþ·ñ$ÿ{òø»¯þ¿¿ û_…ÿ§Ùìý?ÍfîÚ2›Uº€By7»#)A¡`…¨Ù¬Ê#*”8Çý8?PPµÏä Š^%ž bŽ'(ˆ-sÁ_½C|áûÿE§…×ï¼ÿ?~ôx£°ÿ?úêÿïKyÿ…+GëdïÅÞëdee¥öÃÖÿýµ®<k¾Íü5‚ ä×?ÁßH€ßfkôöÝZ+ú¡ñýJجÕ×~ˆj?$•ðY3˜ž£H” sfk¿Âúõ æÚþáÙÉþáéþNôomET<”DD_í–…àW@÷ø}|r´³·ûêd/ú#*åŒST×F±¶ƒbÜ'»Ùi–ê¶Á.A©¶ö’BfaÆíAk7€t\c=L£5Û‚zô&–ÁKg¤/§ìia¶ø“á¥Õ7+z7HÌ.…Žµn:Ê©Ò.Mf6¸D#*QzXƒ|BZ/¿ •™Óa„ãŠ4U!/?ò`€A¥B;cìY¨7z±Å{dj°oŒ‘vÇjàÞÔùåk“)7”;'7Öj^n¨ëœÜØ’òÜ,*¨aåb,Q3A¦—Ý\ÏQo¿k÷&°èبû‡Q¶t+¥‹©œ„òÖ†³cêM`ZºR}ù…ùµ@;¤Æ°ß>Æar#ÌΤ‚½›d¾š)ëiï¨öÏ1M4îQ“wÇßV³•Õ™RØ÷€ó#)TôܳԱŠ:,¬ßN<øM¢nÆÒøë†La´ŒòÀ–a–”Àà`ºAN#*Ú’² ×JWK2P¤²@4³£mžÂ¥åŽª bëWɯœÙÀÿáé<Å=ßÌ?8ŸÿÛ¾ïi^ÿïéWÿÏ_ÿ7Ìâ쪟Îâì.[@ã7öü{åP¹ªéA<‡ÅG¬¸r¯Î!.€þ°s-Úm“+äBp<€@àFNwNöÏZg{/ÑÚYBèÉÕw_d•š³é¹X€Ä¶°sÓ#*H£1ô)‚þ#*§P“Á•]Hñ)@C‹à²{¾µü'Nßá+Œƒp½=¾ÌÂf°@Ä2ŽCûèñ2Û6A€+³Þi÷ûXV 8üèúc•¼yŒ¡JWi¿Ÿ(#J‹Þ4¢e¨n=!hŽ–‘9-B»jº}`Žò‡ÎëôŽDP–÷tá±{‡è¢Gtî<#4Îo°Þ”ÊLªüß`êy+ço†r8rÒÊ:ãÞhb``(mo#)³pŒ¾Ö¤‚‘¯‘Ï^Vchû¡“ôÅ3)[ãÈyÕÎ\ 6ý¿k¶M"ázÁMO°AYi)‡#*mO1šü0Ä9ßZb^/YÌÄWð[† ˜ÕÜÐЋÂÅ×L‰ÅXI·ˆ²–ÊIÌ‚"D÷R5Ž)9Tˆ*5ô£ž=k@ƒ×̇„3â"-`ô¤år*+L§=©d¢ûý#)!¡`àÍé-ˆÕ€O‡í;iÉuÊ‚:‚ÜùÁbHÙÞÕjé65§4Af~ÿ{¸vßFгŒœý\Ñš"MÜkÄ/=9Y€²ZX¬·n©Þ&·¥éÆu3q‘¢»»v›_pmQGKÒ[†¥ÀLyü[³}Þì*ÇR)‹vB‡äabî]{œt±aTn‰UMî²9Ê;©°½`4Ožb"_°ô¢}@´ùˆ¬®j.>šÁ‡ðü”å,@ïbqP[#)v—º›kÄ] j¯g=mz[\˜“$çXsÁÕ½‡:*,ÕΤd¹ZÇVT#*2®:$f‹G¯NkL+Ñ#ÃPV3#½¬EÆai2¸pd¼dܧ•Ÿ$Ö¾Á'³ûæ`íçO¶OÞ´,M• ,ÚŽÚÜdUL‡ß‰`—plF1Ÿ·8Ì!¢¡–¶B¸þNû‘-M¦#,F¹ÍY™NP±|…¢|»ì©ÎoͲ)Ù|³l/cÒ€,MŸ2.•O¦^È,%V´*µIE$|”¶A†uý–h§M¶›Ó hÞc?¯6ÀÂ8#*†ì×”ö¿äÜk¯VT]ñì“/U&N4Ã)VÖ„*UñêròêÐVÅóxE{v7,än@ÎC/·î5Z¾N±6MtOWvúi{ܺh³vn‰UDò®îfn46›NÓ÷_‡‹¦•õ.gcÚ>§)Â¥4PïÂ[´ÚiŸm¡7ºÅn±ÔôN9K;I•/:‰GÎβÛ8±y¹½¢„ŠÞ)¨!æºÅÔ„n¡ÂÁpšUk`¤z©¬¿4í°Í¦¬r膗,ëÑM;ñŸŽÙÔoˆ÷L‹îÎeç·0¶DÉ]WW߇|Q#*·ø–—v¦\jqˆÚ–Åpµ3?‚I|Ėu…ØÑ[ðÏU6Þô“ª\qZ ʲ…;y7¶ô¢¦²Çª‘8Í"07/‘óiÄ›Ôpø³ôÙ&/x#4ë#*.†µð]£ñm›€r±à Ü£Úƒ–8ÚHYN‡Qf.×ǼG7æ¢;MÕ3;ס٤›ŽÇ%d÷÷0u´*"Ëní|i_ZªqV!%¤G‡Óv‡°¶µÈ=”l œ&IjÌb¢Æ³G$ö³:œÔÛM{c.Î0‹åûCá°æspé¢7€›sZ²ãöBösa¶g#uÐ;ó¼æqœk óˆ‚Ï1…¥:¾«Á.iܲj‡Þé2¨8²ûšc£Ñ¸7@[3iCO ¸¾ÐnJhÏ4NÚýKÉkàOY ]ä²w“ý[x¼8ÙÛÃ’#4dÁäªEáÜ_í>\톫5*eHÇôÛ`›×`ÜËÇŽ‹Ò¢ûŽE%ª(3 aÃEEÐÝ*µ(Ù?OövóUÅxWÕdEM9¶zu¥Y´‘|ÔØΆ®ÅMvÉ—'qa)ïz™}6 yµlf„ª9D0A#4÷$g#)U-$qk(ÈÙ($K)ax‘„–SÂCŸí]j>Ý€nTjfè[¢1Læ>ÚB€3ÄšŒ§©³ê£3HÌúö`êÃd#4pŸ $/Yí9ö0*+þ§”ÙJŠrü_iYÄ]3wµxyχãNp.U&JqáXÚ—mÿJgÞ»IMUJ8¹Ò:ÙKŽW|M˜¦MË;™ŠÏ W§)I1¿×Q¨Ç†¥³öÍο[d²rÛî_ŽÆk}ìz×qݱ +jÅ´p:€)˜ÄåÍ@…¯[eÑþÝ!AŒ¼GVÞ90ZŽno”‹ÜÐ×WÄ|ÿCØ€wŸßhþûߣǟô7¾Úÿ|AïÀõ«‚˜·rpÐ ^à!уÄóžï})¤vÑ#^wšä÷§îlŸž#4èÚß·ÞfcÄ®8=zu²ƒÊZIøàÁÃuBêXþûö‰#*Û‰›µ.]†Ë£éy¿× X®C˜÷ËKˆ"øs;ìuƒèïÚ)íïfÐ_ÞF˜ri‡MD{çeÆ¥†Quà7/'WÁ÷Á&§Z:½Ë&é#*B:Ô‰¡êj+/åq rLir%ú«NŠ¯„ß}Ga˜ÝgR8”I@åÖ¡·Q&Œ…"Ê?%:è³ ¨Q’Ãáä9ªì‘#)ÙåtN•Ê³”TlÓÖ‹«3˜öû¢Ól`šË–±ŸÝkê‚ø‰üHYìm„¯oè,YL‘Bþ³=&Í¡0Œi( ]94„üU‡Ïq§ÛÓOÈѺa$Ì’÷L #AÌ*0’˜ËCà@ýðÄ!åਗGHÂîÍo^ÀSÂU×½žähH© /ª³šúÖo®á_ëÇS2ðÜuôêý™H…vH)h°X´ü5ÇŒ¦ur)]ìw†,tÏyB¢¨\Ï‘ÿÕ0µ9/ê¼`´wä_Ú¹¡Í#[bWyè³wêmÛ±ù#4ð•@Y‘ý»ö‘i[ÍÚãèò0s¨šüºäÜV">,¾/I!¦äÍ‹!ѵÃ~cÍᬩmØÍ‹xf.éL&’Û´ÿFà–F(špýnÒ¨èC‰Î‚"j/w[¹£^OJýÐÅ·¡Æ{ƒ'žóõiæ\q ÆqIR×Mëm:ûÈ^cÜÊٌۮ÷ÌKRdÝdóªrX·æÚÜh~¢ÿÜqƒk1~Ë^绉ķ³ûBÞë×ÑyÉödàw°5æ§ä"ê]ÝDêWÈxsnǪ£xÂ"½+9õåñŽDø™vûTIÑ„+#)¯B‚¨’ùT9Oª<&Ñ(ê¹£°o퉥_ës[ŠI’I/úUÕÕ¯$’sª,ÒÒ{36æ2d#4+ÞÙy›$ÞÓ°î®ñ=Uì”…8œþ#4Ä/ ×óÞç8Xê\£%øCÈN~b )×M{лH•<Œ™`Ë< boñДPÍbHP9Á‹šSä?SÂ|VCR©MwN>ûô¬*µÀi)©ƒ,çËÔœaYþc<Ÿû·8@ÓµXˆä¸âI˜Ï7aTÚ›†R¾'çú4™¼#*r˜˜¿ƒùN3.´LãuÐõ—›é+:è*=#)ʤD_1ˆ§¶ïM]ë2¥v :̬“\‡ÙU•ë3åhÒ$qdMHÙœrþ9×3¶¦g&²oË©¡ËÂ(3¿å¯]ÖV&¼¾£» •ÔžsË|Fòfø¸ŠŸ&’È‹Ø9ÙCeWÛÅ%[·;ƒr¡"åΫè¾mÔnk’ß¿(†ÄÛtœ›˜útÔÅg>ጥ×ßQRôŒ@ïÝ-¸““› ó:-–=øJ4àò¿6 Õá+ˆaôæVXüúß#*ƒÄÔª#)㙲‰¥–ýk:„½íŽ!µg…„bÎaZç6×Úßsj.üå!…ÀLFL;¡?88,™ýÂßËG—á÷H_½NE$úYPŸCõö`ÒºìÏk,GŠÙ!‹Ó#¼mb“ôº5íÛ ¥0M¥–g…(RãrW¿åœ´À¤#4ãRáÇŒ.ì…ýñàÕ^~\&„3Ëù!ЋaÚ ¼ß,Cà¡6W+…ƒfðiÊåwò™Œq¸5í©hºQó#4ø…;B«çž¾ó¢Œ¢ê%ßÙµŸr¸àß'¤[ËÚÃøQùÄÞÜmzÚómã#Aͽ¦—ŸÁš¨áf®[Iª?ÝK¦Ìžj•²re‚ߓ☙z°—FZ6»u+ò8OêV¤¢ž8¥«åPÏb®²Ý¹"Z¹›ZwØ©öð>žöÍmB¸RÉb›\-3cÂtˆ;iã¼»–ÈAÞ֨ݹn_¦INV’¤”YóòÖ•ÁS¸Sº”+É¡7ì—2•IÙrØ86±Ö>öV³-¯?ƒßÌFxÿN ²Å\h¾ŠEÕ<«]Dš‡øÊŸ§šÿvå*†å–Îå¨KMÝåt´ÄIeie‘µDëJ»Ð2Úî2·p)nÖy×p“«Ai¸ºÎÛøÈ#¿²Âi¼hÖþog¬jh}æàn,›’?±™Wþy{÷h‡6#•°®Ý£ª1Î)8ú™µøO:¹$•ZŒög±é¹,»,ÌGWTÑ-S>åJÔ”šåût]«#*k°?¼Ä“‰4æÞuc±xÁÉRjü¯i¸ìÊY™Uw¢ÚœÃ(·Ÿ[“¢ßm£öLK°Î-·ÅR ÁŠüÍ2c½Ô{ÄŒ´~:z¹§¹"#*¾ê#*Ïå’_–#ÑŒC„ƒ‹šk6§–ºÙ„ÂÛ”QP|¤Í™s³«†{Ûa¤Íà#4ƒwD>ÙW€;±uüYI˵0ϯ«ËÖ´'#*]l]uøâŽUîeÁ8%Æ.Mó›6áæS“ì‰<:À)a?äi±%GË”©é{6Ê/8Äp ¾ï4~!¦®!#4rßä«ï`êÐ\Ç1Šùyñ]ûbÝ„ °M®’ùŽÉl/nUí´kÅ´ù·4¿nÖŒ¬œœŸØÒ¨o&ã4©ŠÆ‚ÑyùIQÅE˾’±·*4#*Ræ‡ù(.¾Å[IzAïÛ¬“µÆBÄ›¢ÉkÔÓñ|ñán>RÛ8gÝ›W<|`k]A¦þƯñ$ôžˆ¯Â¤2ì•NiŠ>"Ü¥çB7»,ÜC´À€GNé‹3xÐÔ‹Ì¢¦YT¶¶CXk„¼êG#4[Þ¹bœmçEã¢7†#ªvÙéÄÁåÚZÔë‘Z¾–žÝÏò³tØHzʃ«oFJAêœp²î¶ýÓð&MŠTáÒ#*[O¼8g£8YKS¯…ÅO¬ÔoÚ°Ÿàj&¡åÇѪ×þÄ]]NN·Øµ¶;L3¹âAk'Ãà¡d&è3vê>)4_$…kQ#*FöW]˜‹õ+*pÐÙíém4o—ç^S?²‡ÊË~ðÏÛ›z-þÚí÷%‡¸4Üðw#4Ç#*3†Í9Ô#*Q„SÙb&Þ˜ÅwúMíçÓÖIìŸG¶yâû1IÂXPçY7ôÜ»äžÀ,Üm»ý‹° ”W¯®*t+ïØ…Ö`×_‹5S`È`¸bv@,a?mÿ¼×úûá~ë'rx‰noèÝØ:7–!Žå=ô<“k&²YþÒÂPOô$¶ V<˜óA[îBÅ8ž#* ^Ø\ôm³Uø®:ìŽQ¸*}ðU1´\ÿQ}~ø×{ñßKðÿ=yòUÿóKÃgYóÈ°#4›)DØ[{,ËÕIÊ XwPÆÛ!_jVöMÞ6Õ¶ÓAND6 oÉÞ»VéàÅžl§ÓeU€ÉêÐMÀÌÂÂ<-®S…P©]s³<,lY³™6a¢“4ƒ¿£Iô·Ž®¯½{¬3ؽûJ(¯°HëŽj΃%Ó„9/¾*1ÐÎCà®29ô]€Ëz &]¥Ó˜ê:åö)‡ýÒׯb¡pÕ!îÇîœ|½Ž"ïâXß–¢œWh4t?Û;9LB¡ÍçsÒl:öÁŒL)F½ÎãGØÍ»Çû;Ü%î×É_p¤ reÀÇjVφa1ïDòšjZ#4“#4íû‹³<h±‚!Ϊ`ˆ¿#*ÿ÷á¿?nÝÏÊÜwþ?ÝÈÛ<ÝxòÿíKÁÿ„mC«Îå®v⪖^vñ”ê¢Ý[Øïvý>>K»s=–vÿh¥ÝßÓ[i÷w÷Uºûç©T£7¸Ž¹ÏYéîb®Jw«•îþánJw?““Òîos?Ú]Àùhw1×£»éx4̯¹ð¿Ðí¨þ·DZòy%#)óÏ8ýŸîÿO67¾žÿÿûïÿÖÅ5XZ-sòÓS^[R¦++ÑqÊ@±eìÂxÇ#4ëU róULGO\gži¨‡-+º5ˆ~Ù~ÞÚ9:|¾ÿ¢õl#4¼‚®Âe¸ÍþcïÍiŠõ:½ÑÙŠ¼”CO÷[{/ÏÞ´ŽOŽ^œl¿$‹ÏÞ`ÂÖœø£=¾ìÄAç#4fëƒÖª³†&ŸÆý5°¿oÿj_\6þ*V/·wNŽZgG-”-3Õj‘›úV+܇õ1„½8|E!èZ¿ŸÓôÇÓ]#43Âh?L'&xNLèÑ(˜`„Ç1á(Àد÷øÍ~íÙ½=Å_öà³7îÑçöþkøjóGkçÍ‹_ö‰dçî!ë0ôåé›Ó\Ø+HSù„¯§ßÂ7åI#)üP½ÃŸ÷OŽ_îžÁå~§utÚzÝúyïätÿè°õ#4=Ùû?¯öOö¸A˜—ϸüÓÑáæ]$çÿ9|MAÿpëp¤Ý+ØïÁ|çîlwúáÀZ;ǯhÈfÿó´õô[JÇ?‰Hû¦[ì=†ßÆmIÔkÓ÷Mo”Ñ7þàaµÇ#4¢_L»?ºjSýâ0ôb Ää7…O®¦7çJ¿8íø†ÓodèGLPÈhø.¸\ùÍá%a°¼nSž³ü“[òô®¹%ðƒ[òø/œŒ~Ù0Ä!Wü}E_ä’ëÆ?Ãøƒ’¬‘“PÐK;)"ëgÒg!ÎâÑAZ,~Xàú{3ûþÀ‰©q¢&(N¢cEã# ú¹Ž‰â#+©a†o߆ôÔñ]ƒàÀ„G¨ÄûöKˆbéÌàŸá¿\ÎKÿr’ú»«p5£6¶y)£ïL9ƒ‹-Y5ÅÌò죻Šµ{Ú£!\Þ¶ûF›-g¶šµÈJSqþˆRÛüÓ*æu¬š‚žeq!¸>3TôrÎ0 9³ÆÖ#TnâÏG[MV{…”_¢›gúùp?Ôê³C‚L½%ªx(mNÃx8±ÈL²ÇtÈTy»ÌMÉ#*,±è$C’ÈŠÄÑ+’»PËšç¸, o²ÛNH ‚TûÝ0Z´úp=aimIåû‹uÂhã, I¸ö.jzÕÐܧ_¡GaS4g,–{ð å²Ñ½eS2;rÅ#4øv%Ç–ôçg+qW¸QV .mÕ+*²žMºI®vŽÀ~±¶†ÛÀŒºdFåzyVAz-Œä®SsÎq¸~mü;êuä{O¾S©‰7ge³WZÑv¨«‚Ã}1nߤï†ãëpË)ëv5T«¦ªwž»#4鬬ùOËÜ/ßƤZ‰M7!'¡kÕ‰µ¤•¢ë}„Z‚LZ=ND'Öýsbjñ®EI®ÒLOçg³6QYÎÍͲV›§ÓnóÍz”¼‘Ê1”ËhžQlN ³Ê\Q_=ÓÆ&;ª9ø3ª|¦hbÿ†æ"þ£á?—0:3=Ëêz>Eøí®biáÐk|Ai‚P_–í¾Š.¨YI4$ÜËî2¼ÆÊ¿ùp)ÔD:hWÝ5u¨#§‡Uð/)ãàüéXì«LÙŠŽ[øjÀ çÝ#)y127šéP²¹$‡Ú—âvâS)iù¦wýn+gº‚gãñ?^ð]Εë;]_®óO|‡Ú¤Ðrý®Á%4“"M`9€kOÂrÒJLȼär¢µZx3ìÂDçTX%ó›„ MÙTëgä˜ÄJ+µ;“þ]#)l"Š¶*‹ŒWéÖI)ÁÍ4›ˆ–—Ó’váRwÝ}M¡>ÄÁ|ÍÄ躎Lž%4š˜£šrS&X¡“æ–¶:6¥0}•¹©gZu~`!ypyš®W†×¶_Œ~biå0;§êw)¾…t<öºSJX¡EÓ’2,Òé¬AUÙKRªæÇs]èE5“’JG,GBÇ4ñIÜ\ÃU~~aO•¬V,Y‰¤?ºÒ¾Y†?vÉ!Zæßq´pk*_Zo·±Þ¿‘Ò\Yqç Ý?”u͘ëwôø„[‘l[G64q-²d]‡hMøˆoJ#*Ü»ŒèŠÕâi¤ótÅÊQ:ÁÈ°µv`¡¸"¦¢¨6ÙîKo…ñ¦2““T™ãM‡×í#)%—;£1‚7¼â(Ä+«Y²¹²ª¨G~Íð¹€FFœ³èºa©¬ÍdsÑõ‡šÜ¤ÅÞ@,SN¿nÓ¯KúÄÔzÎfgíi<}£k:)'&«Ý”V ck¨rÅù¥Þ´%Õ™‘UFm|v©˜#*N,ûã\˜(±¤Sf›6'ÛZ±Î?æJÌ° 8{hÎj8†‹ž™Þ læ¹ÌXPï?ðs#*:¥žm0—öŒ£LnÍ”J]7¥ÂðÑÖ„@äD#4¦žúŠç`èq¡/ÛqøU²°³/îo(^È@.Œ€Ø°u˜ó™‰(áÈÑOL‚qËÕfkþþȵ4-UU½%'¦}´dL/cEÉ~ºHØjk¬[ìoLÎÞƒÚýâüÄjãô´®Ý–NÇ%bÄŒ §d¸åT䄈œ@yjáŒ#*¬CÞLÍ-2µù‰©„¸¤Øònò…ƒüG¤mvgÇ/º,*y³ {¤<¸¶î¨^ÑgÝØüÚ¾´[¦‡ép‡ðq#/붇ìaFéäec|mGûžeçÙ³½vmé†Ù‰Ã7{G¿„¦&XþÞ…`‡mZŒy:N·ÈP%r–XgW©}Àægd|.ðØÛ¯Þ,!¬d6í 15lnä[–ß½†±Y}êúXöFäTO›ñÅ‘e…t%判ÔïÖ1·u%NRÙmAö`’lÜ!°…‘T™1’Œl¥v9rˆkò–%&Þ@—´ºˆfÂ¥ÞžÌëøuLKŸsêÍ6“òa|MÖ`6qBZdÊ|Y•¢–‚1}J’gohÿô}’¬¬æ›Tv=ÔÙ…•0LîFr8ÅáE/…á0ÓaWó·a¶è±_F_ùéÛ胘ŠÑ#4`ÿ|r„Ú÷™ÜLìow]€ýÄ¿+@€ºpvÓqï–|$ðf- l~«°àßYìðz´mb`âQãU×Y)2eg¿flÆÈCÕ™ÍDR 1JLëlYµØ_µí ³¶¦ô‹œ!e˜W¯ñ‰í”Òª¤ä÷úêNK»c\WPk#4`Ÿöü7=JøA8ù%©Œ$Ü!ùžråPoIõpnúÕ¢L—¶8š¡L}d¨Š‘"®¤`ïwdÁg«ç¶€¤Q¬nìªT¸UÏÏÙt›p.q‘›p‘ųPéà¹í‰÷¥z'\«ÕJºû±DÃÑ(V+4^º‡ÆAw·3‘= ߣc\»åjÎÞ¼ÔMå©3õÀFø'Q¾_Íž!Š„2´MÇ,‡,°’ðÜåõâݵ½ŸåÒ4?åJ-ô#4Wg;}¦{díCdÌ®fõ+`Í$,#*°¦ÉÍ@.îpÒº2ÀQHþklÓóqŠ&½îIáZ{=œdÔ×@±¹\-í±}Å.D¸¶fjÚWÛ"j),,µèŠ¥²r™B`î…^;/Y…ÙÄ/Ë9–‰b«Ý&¶8…TÜӛфœ0¹ó2qÓ…Eõ”O™<ýÏ+té³é'ô;Ê‘?¿!ç¸=¾³Ž”šŸ* £Ì®P1²·øĪɻ`¾†Lò“ë(Ù½Z„¾$ËåÜ–Ù5™l‚æÇ6‰Ù ¥MB—¹pÈË;Cq»ƒ—+Þ0ð,lÄ\°µU¬NÒÂKCñL3ÞÛ#4Úíš"WÚÄjÉpÆDMÛVBK¼©àº‹/k¾IK®£r§™ lšg3ÚBUxñµRv@†®õÌkyS³Û$úPû$±t™@¨ZàÝ)á¯h¾•m5#4|¢!úsÍ\¶NÉÒÓÓ;;TšÑæ\s”<ëM#4W##45çC³$._'¼Œà•Ä @‘³2¡ÅÞµk‰m¿I@Et¹ÓÕ\@£ÂÔ‡Ë÷SƦT á*x4ïlÜ‹¯@ŠÂ}t¶ãu†RPšRÚÃqyE/kI¥“ò‰+a¶ib#i4žôøH#ÆæN¸¤É{Drp“.UÍïF²ҀùÉŠqCчJ¿O;¨øò]Hv®ú¯XeÆp¥Bæ*ìürß+†¯”Ã+jôT“¸[øpBùcÓLù<8²h? œ„+«ÙJ¸êÊ¡8—ŸS¡O7—„- øU×S™$ãäžç×ú‚Þ™Ñ)Ë]1ïI\èݪîœßm¿½æ¥]“ëÇhÁ—•Ä«ƒn2n©‹<ŠÑŠ¨,4¿sex1þ´qÝW‘:?‹æðë¶K¦ÐÔ/*aTúÅ}/ÇJ|—n<‹˜ê ¥‚‘»ÏÑÒ!î“ß¡H£‡ú翅祻࿈{Ž(ýš”¸7š`Rr=вbûYr]ï£v®õ‘ Åa½t½¶øÈ-ˆË¡ 'Uœ}ß'öfáô§¹#4•¤n5SF©¨»hD¦|ºl›´9#4Ÿ!Å.‘UÛ¦©£ÙµÍ{D©©N#)iUÁß"%g(*ËÆÎsm^æǺÊ1ì8çnb^ZµCyÅKà!}ÚªFDœïä:¿·-Z‚‡÷5¿[B‰ÞÁûaÅI`˜Ye‚È ûÞ"jÞ ì¶`ç8Ù>yÓåÝ7Å0ú#=gßåJýòúH¡„«fáÄ`’O½0úÏ8ý>ÿo@W”Ö×¼R$x»M›–Þ<,}ØÑä·LçüÜDÅWÊÙ¬°]—¿hïйª@´s?ÍE)¢c˳?&ïBéaÔxk¹ÉÜÒ`ö¬µsôM€NŒÜM&üuê—¦h@MÃâƒ~¨êuY]¯{ë#ËVÚIi•`“Bï¦&¼šm0ÌDaöQìoÕ0t6+úÂYð¦ánªéÝ–§‘fE 9Ò€©¾ÉòRŽ°í±Ûy1ÅF.ë,^¾s¡ýa›ñ™¹¨ƒ&¡Æqtߎm2X#4I¶jZQŽóö µ0K–\/Ÿ*+_çÚSº‘Álo ÊYDÖfÀC™%˜f¾™¬‰—xp-(14¤™aØžâäÑóYÍ#)+ÈOúOôBÿ5JD0¦/¡Q辦j®‰ôÑ)Í¿£ôÍ[Ÿglåµ ×fÉ-Л#*N\£Æ¤¤îÀ&‹ò¸·?H]á+ÈI \½‘ª¢¹Ü¸ - ù`©dÙNöÖpÖÀ#4mÚšûï*ª¯¯º¦âzÄKXˆÀ¿à–M¿a7‰ªµZqFºBHå"'dà^#4"+a_NÛã.þ˜GÖÝ7Íxk–÷‰#esŸ0§ÊE)PÛ0//¡•6—Oÿb36¶ Uµò®£†NuP+jN#k°ø €Ûs̨<tQŽœK¤a¿PÚ^‡œqúv¿FÒƒË4n ‹Êá#4N rÀô®ÑçiЇkÐ7Áƒ‡oI™Y«ùý©wàûÿÄí3Pþ¶[bû+Š¼Üb^83f¹ò¾rC¨ü…áƒ6®f\ãUWü²VãqBptþQ}^¹|}çù‹Öóýƒ½Ó¸á;Ùq0O)ãW©– ËvÛT~‹Ô~©#Í&õÁ«‹½D‹`Î/›×Ž_ãSë¹Ü:>ÙCËœ2çÜ´â”ËÞ*xdÉ¿Bäfÿö »Ü(‚ñ9ïûç¤)e›ÙR;nÅçÉ5Î÷IÑL¾Þ#)F»™œ—‘ðG¥Ó&„ÄNÊüYh®K’P@i$Whg\¸*ažc¢ÉNE·@V3úÇÉÅzð:Æ#4_7c¡)‡CÿHïœï+&eþi*ë#4/%©i©Þ#4VV°òv°âÖ‚¾@tÎœuGÐ1™Ä„;ÇÇbŠÔŽDwIÂb2Uš‡v÷YŠ³FX¥æ€ô攨Œî)ò`wn;æ¯#4¿[=ä'ƒr|?—Ãu#4;a¾×ÒQ+(¿‹)(N;ø²c¬þ{öW§‡RbÅh"À¸¡Ý—hœG6²xámÞVÒ3ýµ·í8þWÞ,@ÜßlÄ$)àwQ‚rIk‘’I,†Pê|}uÓI:¾Á¥>!1Ÿ(ÑÃ-ñ!à<;ìt„!ƒÊõ\-lµöÏöZÀ*Œž%mK‰á–—ö] °æQY=Ðq mœ`jâ/_í´Zaôý1:Šºã#4åÝÛ>Rei}§S o¡K8D_FÎÃ^gÔBT¡ûª™§AÑéßµ5#*[?Ÿ˜try› 1:ô!jÃAÿ.ØÁŒQÐñ\]—`°ÒË`g'´ßþO€˜¯~â Á°R×t´IgÁ´½ä?T™¹è½‘°d"³oø…GD›CÕ@Rl– UÐÈ“jìêωúDz‡WÃÆfÓ>â'ë‹-]³”…5þù´‹òBïvÀ¢ËàÚi´•íÅÍõï¨þ=ÌžÃØ1rd,°mùHm†B.O£×ô°Ûôë#ÒÑÝ>>>ØÃÑå[…•Ÿ0¨¢@c_ß$0„³yÙHÙ3Z¿’iïà¹Íãgùqÿðù˳$†#\öKúeÿð𳑇‚,®c„žy¤a=*u_›fÿåñÁþ»û'¹–Øp·¥ò·WB> ÆItl·Ï©ÝM»³>«&§ªÎÎ'bËÁÙ;¶Î{ƒ‹›I-?,Qå”C” û'B ²åçlH‚[äÆ60ãV®YDˆ)¡1kÂeñ‡Ð©ÓK¥ñÀ5Õ|AÁaÔ4OÑ=>8Ð`-¹n÷צ×s;;Æ 4©AREk²†ý»ÙŒÊWÝÕ#4â°›ö?‡ã’¡£ªùÉ›±ì#*ŠpµêÀvv›ö1&÷*P]ŒlBŠ¾^îp?SKøñöÙÎO{?Cµ 7´ùÐuŽe™õ<‹Ï“üK™ú~Ûñ ¬CP!ÅDû°ÚxeÿÇ—Áëƒ`çáÎÛµ·kõÁϵŽ¿§~ö¶û z[§oìrú^‰#eóاÉ8Ëy^»ác?ªg)B"@²•Ä%®A;ðÄ‚vÊœ¤¬£˜Ðï:!RÒX´<g쨊<pT;ô9¾,ª¸‘×;†Ñª˜Ï|ÙXþüÙQÙta=kWíŒÞÙÒ8ä‰Fšl´ªTT6éå²`¨‰€˜37¨‰jv‘Ö™,.ph}Âekíê¥ 5ý¨9rÉS>aÆ°÷mµl2íö†õ?üú6[‹~¨AàGƒSò×Nôkí—áøúôj8‚Ѓ!E?`¢¹³5ÌMÈÂ|tÖ±z.–OÅš‰3y#)J§ ^ÛYk¦ÝÔùÀÕÒ}À1g€1ÈÇ+gtÖ˜(V<•½ŽßàÝ ÁfÖÛÙ:×%4þ<;—“R××VoЛˆOý’¸d“ÖËÓ˜Y¹Fû†žz0·ÚwÇ ‹x”žÍwÆ;[ȯ?yuØz¹Wâ¤Øó|ºÿ¢u¸ Á{—~D^ ±§]“BÌhqz°3R–5Ò¿;C¸ÚÍ&µÉpÔ²þŒÕ¢•>â.ä¢Ejì»;¦·ñögAA4T“/‚J%¤t†Ÿ°Ï]Ò`áã5ý–ˆ›iÒã—eœ+”˜eSj¶¶Â/Tš‡5áY\!|"¯Y{=2¹npÒfŒ5Á#)Q-Î.I4&mÁÚ/Åz7*Nq(2ÇBpQª!¨4€šwaSkCg6—We£W%îc{K~CGôQQÄ„#*ºÝï›4EBóªUåþI¦Û¦8#)eÆnš¹ÕéE±%–è/ÛA#‚ø”èW¨jõ‡k¥¡‘C"·äDƒ,2ê¢ôˆ‹2I¨N‡Gg-XuÚƒµ´MZAŸ¹ú}Â{ªH”_}ªß0ÕÓW;;{§§•Tmsód0„™’/Á©×ÞGÇÌETÝ:/Nöö½íßõ`¹JžÖ¾Óó~?QŸ|µ›SÃþÉÂU¼ã_GVL«ÙGq‘vGÕè¨äR—©bÜ£AÁgȨ=®#*Ïÿ™ŠÅ_áôP:¡×i:²hfb¦n\IJà_ÐÐ\=sŸ·Ç¨î Æ…x;Š²°/HÙtij.÷ßGüz!#Ch¬”5²Ã£¥ßoqG›m€¶Ë›‘«'Èo+(]åÑ@ft;ä7þš¡2µño#”7l¢Y9ˆ[TTBêG²Ö=†ÌhÂ%@’>$ý¶'J1™ìåtM¥Ã›ô¦Å5Ôåè!õ(V{½ì½®6Ñtmkm&Ä6›ÉLã¸c…s¯`¾~ïL˜ó’¥¦oÑè—‘Ö ïTQ(Rç:ÄÊ‘^Àñ:Ò‚XGàXüºFîØ-—€{îÍ…jÉ#4a¿C%g¹*a“ŠÐZØs'£—rÂ`e5XŠÁùG^ÜÇÃî´>JÇ»~ÜÃ,Nû8ËÞ·õ†ñÏáy&“:·ÉJ‚«„#*¨~#)äð£~ÞCVN!|Ø=›¶1Ö±ñžV‹Ê¦ˆ™–u˜ŒŒQ7®_ô§ìÞ"·!†ëÏÌÙ†û u lP[ã™sÄzÆs¨Â´¢ã,Æ=¿E›«SaõP2fuIiÕli jꆱhÏžìíÊYÁC»’˜~L–£íA@Õ1ÞPÅX1°s•çEöŸ<ÄL”ÑNOxŒØÑ꧃ nƒÅ>%½>i ÄXŸºbs¬‰®1hSà–h9çÎUV16ÊÕ«^öÈôTNºT½9„Y¯C}’U¶°ä¸§Øj®€r`¡ðÁïˆa#)qŒhÕã=\Ú¶ð`åu0á#4׶šO"4G½K¹ö“š¾ÍÉ••DŸ}«u¤l"ë ïºH©y‡ûÎN©;9âšLSÐWËÒLÝ$¤·kò®®Ö5ÅùûSú£È;óÏwéúž]f"#4²Ü0ð°Ï+ÚÇØÖÅüøƒíÝ¥ VhýÂÌ÷ÿñopþ¹€ÿ¯Ç›9ÿß>yôô«ÿ/Íÿ§¸ã -}ŽPÔÁ“³˜¤Î/&¥UPÑì]~/ÿMŠa4›†õÎh„ˆ´ý;CõúMÏFÕà#4ZÇ›J%œj` µåExصy¢FÉ—ÅȶN’S#*ºÀÅØØÑú τʸfn&sã¡)M#üšÍ|Á²cÀ'áŸßþø!øóûí“t¹…ñÛè—àoy”ÚºñÜÚ?ÜÁŸ”Ñ9òÜ’ŸBš½ƒ~øó{øk‚hg† øë6}®#*z¹D;·*ÀìîŸÒ¾?›À5ÂêR™Áµ:±Ó£ŽŸ®€¯¹î0þL±T+W”*Z·¦^Åí©RQ÷Ó3'¦·îïOàÅ–“öHj¿#*]ûáRšP#4ùÉÏ«rª|’Kòˆì%=(–‡¡€„ÌèÙîصüœ#49í`Ða[s£B,ƒËÀï±^Ĩ©eÌ ªYöÕQègôÿÕ=Ÿfÿà¾óóQÞÿ×·OŸ~õÿõEžÿq™pßM.8óŒ£.¹ð×òßüXûH…S›JæãÛ#)Å¢Sz#ǹ;Ì3%¥#*)o?{t6ä …ÒÊmžŠ²Bh¬Ff³Ñ—Uö2 ¡lR5ʪŠvv^»1fžE—`åŠpUB/¥ÚrR5…DlÒ©ï2>ÜV¨Èš¡©`Á0½³i.JH'ßâÈᚦ1‘—ß#4‘ê³µKS#4¶-f®èŸ:+þ·ð• y‚HÈ°€÷ÇW§-:Š_´ÎŽŽPßûùþë„»`nÊ—G»{ ö‘œH…J”š!ÿxðj/ôÎFbSÓQ(éC°¾.#4î%±RcLD·Ý²$XUL ùĚЙ|T&»Jû}~ß¹Ïë·uy€]—Ö®s—3FE¾ðð«ßîÿêóŸ7ÿÏÎÌ?ÿ¿Åÿòþ?}ûÝ×óÿKðÿ=Ìâì.+ãÄm'¹ð<ÄÞ8õ$6Äøó¸{»÷„ø|Â]ìùät>ǼZ®žAØ¿ vFýi†ÿ-cñãA°²³¼_f.¸8#*{Ýàø®µ?èMzí~ïÿ¥ì²ó¯.ê9>¨«ˆÒ½{܃.¿_‚ ÊA(Dù5‰L˜‡ä‰îžž±wR{,»ŸV#4’ û¶±ÙŒûñH<†~ŠDÒ»û§g¯ÎöN[û/D „ñéö²É”^o —xŽ‘:(c2|ò¥ožÉ-†K¼—[rÐ £;až$ù d¦Úï“oŒÄg˜tTÃüæì§#¾ýF|ÅÅhlNENŒ’7‘¢»pÔìA~©xZ&õCaeýÒrLšOêø(×6Ê£?HCN9T v™¾å›oS'‘ÆÇ7Q,ÛgB(2çQ!þÓ0gO.&£0g†Òè¤Fö}BœC¼:;Â{öxÓÖÁ´àñ#fyþ¦e~v Íd¶²=ñÑé_¼!Ž¢³+¿_Ý„NN'–§žB7;ݼ§Øì ;D“aR {cE<pç]7)ÐÇiŸ}ÌNƽÎubô~|x¡ß\vy)eö™Çovò¾5FwÆ:F¥:*¦êTwîè®+ϾÙô<›|Um…P‰WšÑkœXO®ˆD@Ô輋íÈÏQ~úô#*y¤îëÂñU¦´D¡éö»iØàÃ#íŸÈ(v‰0‰.þjl?nr[†çÿL´ÍµµÕVÚè¤÷®Ó†UŠ:ó*Z]§ÿCØϫT•fÜ *§`ÖûÔÖC]îVˆrJöžå÷Dˆã{!0÷@ìCø¯d²˜I´Àj0DPW2|‚‘¿ ¨LZ¥X¾VDÕèî^H«Þµæ‘»•; §¶™›eÜ•“Y½ßž:W<\QT¦ÏyÓM…ùlµÚ¥I¸Þ cäâ*˜¢8WÁ|ôbSc°ÍB5ð(tûcß•'#i{ëèøì?©Ÿ5—+,,CÚ—¸Ü[³‡:UŠHe\g2¨ *×Q>ï%ž¤bj6ùŒ§`µ&+š;~³÷úÌÊä8‰Z¡O{ÊpZ3Ø¡ç#44°9Û;9tLyÈ(ÆÜ´;Üœb5Ê«B.ªJéV„牮‚öƒQØیƅ¨lC¯õΧ“ÔW%ðø[;eñ݉eîŸj°ã²ÑE`Ð&÷b'ÖŒÑÉSÛ!$üÝB³ÑçöÓ›sRíÒÓƒ>×Ä{ùãÞîâSRç|ÿk¼hq‰ö3æ[PfËË$à-¹.)e+ ²æÔ±‹óÂæó.fËK""d_ï’&²Á¶]¡²é#4lµ‰©ñS®ŒÆÈÖãnm5‹¢•U䀆Y˺1T¸ƒvÎwÓ~ÀiáËí£Ó×ݽャ7¨ÉÛ:Û>y±wÆ”Ø v”錣ŠnÀrW4¨B%µb^0†«1×#4.™i¯µ¨Á4í“bÝt0Í°¶Ìý/XáÁZï¢ áÊví>¨ºµöcÝgÖÝ%ObWí=1:ZVðédÆkÒ#)rJ°ôpn…j‘RÌÈý^TŪṓ$+á#4¡ÿ !&}EñD…+¡Š‚¯¨šrz‹:ÑÎq6j½¬Û»4:¤åùHÿ,²Ì¤Þ¹ÃÌåP«0õ³>ª}A_a)Ú×[f")Š)À_`@DRÆø›¡£Ìš§2à?§'†"'c¢l³È¼$h››4Õ¥ÕAà„1Á%ŒÃ8§Ü&“ÔTÝSs‹Jš/Çnyãg“Ï×t8i?²á¦Ùæ"ŸKç%W´²¡²õuÆC¸÷[1½Zbfœå”ÛR*ƒ¾jµRÚÃÈP9EaôàÖ…€Z’‚ú`±t8MªRj;-±>0Š¦¡/\ øVèq¡€,h²àQ€">F§¥ä!q‚Dx˜’žðîWg¥n\3çÓÀôl–ì ¹5¨ ':ì눇Š3ÝN#4ÒˆTã‘d-ØÒ^Ž+Ó™Æ"{À†l½è8JX^·=\ƒ“«ñpzy”‹Æ³å¾Ë#4î$éßØq¢²Õ»Å9c`)˽|toxsé÷ì]ð'õˆ0H¹>¡ýšzEæU–eÕ´[Kÿ¶õ."²ÀÓ®8Y£x¥¬.6ž•ˆÍƒ¥‹ëà!,h!¸âÃ-+¯ÏÆpÖÊ}ôrÊ[ü"¨%ïæ¢7†Òk—N\®Å{ö ØÌVºmÚ¦å€/Máþþc«P&Ú%CŒ»óÞ q--Š¸G#)· {B ™q|ãKïêÁéQ`æë™áŸãƒ`ÿpÑߎßàÈÞáö{ÓŸ¶Oövƒ*¦IŠ!¸k|œ›Õ2—( ¥Š—2ôÿ £"¤$Ú¯‡áŠvasÛtÌåɘ´›´_a…ÏÝ€ØÅáˆð…ÍTsúµõ[¢Ü…‹L𨾂=ÇGÒÀ£4a¯÷³ø.BoLøjðÿ€_¼§)ÚƧ§ž.,¬'zºXo±wΕÕ#*¤b¡±DòGóˆËwe@è,©æê^¯3dKœšÏšv]ÈÑ’pZ3þµ9†p,¿NðŠ0˜Þ$a]êUœ¼2ª"jl=jFeê#*ãÇšÁ}ú.#*<ì«™ Y…âL¨„#à#4^Íntê&k^H¹9¨ÌJl#*EçvZ/GÎKÞ§QlI'F½-[ZëìVš~t9°)ÎiðÙî*ɪý~cöhã;|õfìBEïºiA#4m0ðïHŽûy'ýœã5˜ø(Rt–ŠsL<ävvíÞž¤‡hâ›-Uè…«Ò†¾£˜„ …n‹ÅS6â³j'‰=¡b²Vd"n"¯˜Â±e/ß<wçÙ{,™9æ7*v¤BQ¼µ‰ã†ï/€'°Ò¯qÃË(FÎÕõÕ–ÄÆeE{öYGl6ù¼ã…w…FË0^èXam)Wײq¢¤×jîbÔ]?¡ßuŒ»µÌE#4?ØDè'Þ7þÒœši³™=Æí~’æTý¤b˜cfKJëAM€ÎŠ=¡W¨»óaIÙã6Î;qX“mÙÖÔœ÷ÍØÆI¬…7á¼ø¶ç‹[BÜœ@•éUËodfÎç"-®Ž9 ÑÝŸ€5¾ÃµÃßFÊyŠ°¸ð”¦‡H®PW*o(¥G=ŠºM¾¨2ô¼™;bßvÎw¿‰ÛB~CZÍ)“ªž(.*6·.*ÚÊíË6”HÀëvLäþÈÀŠ/ÐîãƒÒfc𧴸ßZ6„ ç:úcº0O'Vö¨˜jSa ógæ§BPýõûv•®{E‡©þ1/¶tPPgqÝaÕ® ³}D¯ÙVg1 WåõÞ"`ÿ¿BàЫ¶©äëú› ö®7xüè÷ï&][¯›T‰`Ô,ÙL¨ËÞé$N*ÐNÈ1ÆÝ©0åuêŸþ„3=8<:ž½:Üå^±@½¬E½0ÎDÙÉYRÅ×g; „úi\¼W½}¹vcS©7óÂÆ Æ7§Û^» ¸ÌÎÁSÌÞ'a–á5†à(9ìTjÓÈ'l“Qß—%v^®ûIB˜Z[¥#槤pýb0\GÙg²Þî÷ÚˆAà\Vå&Þ£:¯©‘pôó«$f†Ÿ\)•Áj™ŽZ¹Én;+Ö¹žS+Äp+#4Í—§?ïH7äzè>M¾Io(^4RåÊzÖÏlÒ¤Åb½ð $¬c9#*¹ùµ²«ö8íšïGú#*sYØÞÊ…þ»vi1äCi÷‡àÇñð:5;«‰ –û‡àE:É]Ãwß” ädN$¼éỳ}Aß$jžï}ˆ#ãÉtDþ)XneAø^u^¡6 0¯NõöíÀÇÝ‘'A‚D膀_SgEÈ;kTW.i¥H¥™)Ê(ú‰Y„^K##'åÒ^ç1}”$OâÞ,WÞÎËt6J;¸p?Á½vJ—>æ?Ø·Nƒ½šÐ#E lDì¾6½¯GMÉŽjÄ.øÛfä®5,Q:«Jz–pt”;)‰“5¸/‹£€ò ¦Ãèóø ¥å;²Õ#4#eHoT#*ô#á°ˆËsÚ×?7I¿TŽf×?nù†XS¬ðÞéYL£\JV+½ŒW|mì.Ÿn{ÜÅdÃ$Ëcâú‘›×ªß_§Êã@,¬VÇVÂêzœ,¬¬¿v¿ÞˇŠ;i¹eçªîqŸ¹îVHÓ£pa_ˆ×}ÛŸ‡%í´ž’I‡è£%O2ø“¯„Šš€yJzšœÞD¬Ù<7¦¨ÔÊ`;é]ô:Éf|ú óþ,µ0³Ï4„¦3ÍFœq&©áÀ@Å-9Y?)LĶ´’ýÉMʇ'±ÙÍæy1í÷ݦuÓá{›Õc£¥äo‹ö„"è"ïf!çƒQÂ]QŠÛgjlÞ˜/_vØhÑ"‚gI@î_Ñ8RÅ#4#4“»@áp¬W¼¿‰\™=ô41†ý®9¥pl«¼¼ìì/v_Áälïå1‚¯j£¸~µ³ 3£æo‹ï˦ŒÄšÙú â l®1¼ù BÔU;lŒ”;Þ#*Lp´,ÁQátp#*<4¶®©à‡¸ÂÑovŽ^ñzìˆf;½6”›è/áÁ®ò›×C¦A“Y<è!TñÂ~Í.]†Ãt@iY¦\49Y“T>HºfÍûÑÊ#*Š—yCYðíÑöD¨ËŸÓðŸS»Ê÷W*{MfŽdשüpÎAΦ‘¥*AG›ô¹Êäï?v–ñ>³ôgàÉÁô¦öà:rpúÎe0hä¡Ó'Ö$j•\Ô5{#)Pç^Yökr/õHÞ‡Pp‹^É Îá–—;#*q6ÓÛ„TÇl÷Æï?Ä]%&JoKиþ#4ºÃ”ìû½ìâŽúS4Õ+×£¦Œ˜ã‚9Nq”jçžÿÍ–’ƒB4ü#)œ#4P.yìD›~²rð”6‡S9y{`Í+b0ã¼5_)¶é=šTFW,iÜÓ&)#*5'áFånbˆohø#4!&¸ô=ØRU/·¤‘P%r"c¿På? ×$l'™SÛ¿Ö±Ô¼tCN'{¨Øà,º®Èv#)þÊÇ#4ü"&mÒ¾¬Epîn;«ÞNIÓg²Ô« Äç~$ð;£ÈÛ[%iÑJ$©UÊZ¸¾NÃŽb‡l’p§´;|\Ñ_ë÷nKà{°ŠWi”„bÅl„Üçw“Ýe˜n#)Sµ#†Š5Oá1#4»LlKr7Ã9uºº#*?nH聯‘Ω«ÜðsTNÖWPøÕœÀ&úu›fi ¬¿à³4ß¡§.[qMÎ\•ÚÓÉ°²>f¡PeDŸaEJ•ƒõ¼7hsç)V¡ëHÃÆÝ®Â[²s¢}ËŒŒ#*àâö•dɉƒ½Ó:~t[8ëhôŽ‚5TµÑ¡·7…¢ù¶û¨®#*\ NVDµBã7W1Ulˆw¡z÷5dm½¾¢`|Åÿ`ü¯bæýÎøOž|—Çÿz²ùô+þçÿáƒo˜«£{C¯¦‚â³6s SÀ: ÇXfÄÂøBPõLú|zAF07íYBúd/|ž^öÍ`ã½ï!šn^ ij4¼”‘Y#4:/$Ó~)^(W³#*"´Õc1R7í÷n’]Œsz)Oß+Á”AÙŒ‡#*q½&v.Xƒ·oC‰4Díó—›Ó[V¹†÷V×RK\’ØÚ*èª#4Õ5©ŠÉ€MBä«ãD´…†/Æp눚’î’±b$ÖOL]’-”è•Âí•Ìk6óÃ|æu›/Rgq>êw»OÞ´Óvëƒ|üæ&?(©µªN¡ó5PÅ¿ÁÅ|Cn_·òDÌåZfÌú¦Ñp3–^%sJO¢0ð•ô9ué,k:E|ˆ7 i-ÒÚÒ®4Š~˜`Š{ƒ²7™ƒÛ¶6Û´‰ó¥TVÚ_×#4¡ßÆÿýks-Z‰TzÞ\¼ô47½Áy˼Œ~ÒoÕêJ3Ñ´—£ñ“æZR«ëBÄ!¯ùD{rÝÆ|›MÇ$æ÷ ÜëÈó«‡l(N¥¦ƒ.¹!6kÒcò‹n&&T ùùºiÃh-¬³µ„`^…AO-0ó"•»wí.¾’h3éåÚ#)©Œm#)õŒ.¿-awX7ypA…!ä.ꄶ!æYDž\#*\Éò¶?×ÄQ[ÃøðTO)ÝŠ›–Ùô¼ÂäB¥¾Ø$d¯mµM¶©áÙ‚ž'P¯'ñg#* ÆésY¬z„“g8짲tK:IéóµÔ ¼šÂ É:àȤb•Ô)¶–/ȺLò©˜M*_-?•¥¦ XùLF9?ïäÇÀô†d2Žªpu–·ƒ¢¤ôodwm•ËìÖLBEøUÕð5–˜ñê“MÄã9ñ‡¼õ’40¸iÝ£è8†pÔ³¾FÃQm#²ó‘&4v¼’Žs…‘~YZf §\²²"ÚÕ96Œaj–>&3Hn™ùje¼nÁ¢C»ŽÍƾU8‹¼hÏaX~ɦ7H¸¸X‹}ÜVÍþº¼t9žö®{úà “C¾s«Œ#)=PÁ¡‚X„#*¡#î_Ï}‰7lŽ ßËÒ!„¿ÍIHy²˜ÂþsîÜÞýïòñÿðdóÛþó“Ç_ï_þsοùpˆÛãPÝK&1/0Žíl–”g]®áA‡nÄ–jçõëÐîI—E¹ÓÍâËNÇ€™9«FÑ5XÇlF{äp ¶ e5œŸü ³ÁßÖ?#*êwæzÄ0¾ Xzo¾Ê(ù‹G2çõ†ƒ¿†$\ß_Íè•Áyk€À] dôè»#)—õ@o•N;"P)O\zj“>³Ér„½é"]„rT q?vï`%Ÿô¦x?«J´s0àüIÿðs‹ñÁNº8Þßá~rZ‘:ž• 9EüÕoV³z6‹&B@WÐR™”Pi爼ÜÞùñÕáîÁR,˜&ðƒ4JФôK«+p:#4›^+½ü®™Eœ"蟺ÐÏÍkà_{=`H]¬bf—÷8JäÃòNƒÈn¿O‘°°K¢¤+ö_Û™Fž~‡ÓÉ:爫‡”Y¡ïJ:ÃD*%¼ëø6±Î»ê#*W´¾swùN”¯°ùU=SÒ1¹–!Õø*¥\“¯ª¶íËtý¼¥¤é\Ñ-a0¥ê-êãׇLA†\³Fèýš÷ˆ£û\†S»B¡ÂaR¥ï†ãk¦-þP0¯deÕš¸9àm$tV²ûPu¯µ{³Š.ó#47ÈH2jçãI%v©áßt6B=§°´Õ»M«ê·XìT;Tm×åæׯÜ5†0¿Ï³®3‡iU§Ã9ì2g›?ÿ¦f-2´j¬tq£gûÈÎ*€^|¸f›D>ÏNŒoå…ÀZt/(?²8žš{yeî%Ï}èˆb+2?Ä"92ȼ`|ªôI‘žbpÑ% Ùr}[ü¯zÿƒÑËþ#*7Àù÷¿Í§Oóïß~½ÿ}1øÿW¨~›}©Ò3нÿ9Ç@@à#þûÞ‚€ë"SRÝýþ‡ÙMßhê%+›õÛÉÊ«³çëÿ³òóåï¿Ù=Ú9{s¼ŒPù+8}sz¶÷2XÁfA?ô‡vÿj˜Mž’1íöÈ|¸{¶›=<Ã98žÜ@ÎzwÒ]zLÆ–»Qÿ†"ʳå¥ï¯Ó»g;Ï$–ü˜QÎîFé÷1âYâölûøøàû‡ò‘Ëö"ìC#O)2Ÿq‡@“»Áù]ðKû¢ŠÄiïr@½™Ïþü/Ÿéðèl/Ÿîì§ýÓ#)þ¿¼Ø;Ü;Ù>ÛÛ#*žïìÅÁ¾<ÚÝþ¦ªü=«Ò“'üÇ…j\Þïrï}ÿúök=[ÌO¼aóédÀHá;_«›ŽúÃ;”p¶`S@ ,Oj±ÉªÀhB2sFÕP”ɽ´Ø§m5 Ö\q¢uúqª‹V×jîB¼z‹FƘÅ)óÁ%ØÜrÛìöÆòCæˆ^‰¯½q‚8•‚—MìÍî)i§!5ó¤Ó; p¸ƒò©áÎp0a×»áËvçè”®H”ÁåY<ª¢b-¥zXRÚÙbåšÔ„°‚¬Ö~ðû‰¡±õ4M®ŸñÛ2㪤úus-Ä^è„m¬1ˆÓHZMU¹GðŒ5Ê‚®¬º›üƒB“!¾j*ÃÆ:a>–-/V+f½wÕº`ô³©Esú¬cÇP»žv ©ÍEG46£Ñ´OªPm¬\‰ç0îA»+´"ЛñB9ׯÇÃmèï^‡4ñ2|}¸š=4•{HU{ÈæöË‹#)ÊK™9§#4›qç#4˜vÑp9úîÉy#),QÔžßm`Ù–¤"EZg#y~?YŒox[òþæÏy!Lt?‰}ûÃ]Ë’w´¢ÃÛv¿×Í%&{#4‹ûœ£?†œ`ƒM³§Î[Á‰<ngò~ýÉcí™Qævñ¢gyéŧæ×ØHôݳ›C˜Ï5XhJSÔSzéÄ?ÔªÙRT¤²ëéØ.un@Û½™˜†BÑíGÉ”Äq„^ÌLz^zøâ´úØク½ÿÇþqëåÞçßþˆø_¶"GW§†…nó£oÚþܯÒùÂãFS¶=›¼Žo°él’¼#*cnU6›öÞ8„ž”Dðëƒ!×êLf¹µ%á\„Ûyz5›ƒ'J¡>õé¨-Péª6Ciš¸ù^+íê¤|Î$´kìmMø)Ø<E›Ù¯M–U¥M‰–²çÔÄOhn!ŸçøùíÆÇïˆô9´‚è{àþ« ÷É«rPµù™¢|Eš‡7¶6§«²Ü²,F¿|V÷@Z›Lÿ{ÜÆI€m5ÚTOeŽÀ_«xçDteÅ#*#ñvŸùÐî¨2Ná…¼ÇSŠçÎ$ïS¤à¯‡ïð0Gwj9×$Ù¸sŸk’ÈU÷ê9•sNßÅÓx¡¶…mW™>†Pq˜·Et骦pµGÕbчá1OZö²÷ÈÉ$€ÿêxIjOjH|TÒ‰ïÆ=ØÐH)ù?DþwÑOg€ÿïGßmü÷Õÿ÷—"ÿ+7 ‘ŸøîS¡Ã¸¤^—݃yêm½ö¶\Ã’òvœ÷z’÷ƒ „”Kàãv˜ ïG¨^&¾¢——€Û¥ÏÒòÒ»n‚÷°LZdëJººr(Ìff«RW®ÙÌ]³¤"³™rG5›-“3Ø+ºé&F_Õɬ[3à9õü`ïuͦ“‘ hÇKmuávAQï`${í6áü[fÈÁ!ÖËÓ7§ìy’iͬò0\+²tDúÃV%Ð’PÕã0ã8Pá^÷ý"ÀÞÀ=ûV›®B4ù[{×E§G¹ÜõãM{é$AȉϿÚ=Ø©9¿¿°ƒ—HJP´,s².\y«s….Xí#4'JQýWæL,ÇL(4îÃ):NÜT™^Ž¿4k0…&Î<áíAéøÏpšñõW§{øÆùóöÉi#„yŠŒ^M¥ÊÎfeIöÎí#µ)ªŽVŠ²ñÉx"úKc«2=^yûö«Þ66ÖÿRo®½}{ÎÛ·t椳ôÏ+±G#4ý·4æ‰aìêéëÓÝ¿áýOPßZÏÉÜsþ?~ô8¯ÿùôÑæ×óÿK·ÿ#×ßÕGÿEgù¢ã°ß‡¤}n5ÂK85&ã6îâ½ÒæŠí«‡{ù—':#*Ü`§³ùIþÙ¾mÏO!¦ü^"n÷|ÊÍ´PjÛöÌEžŽì«MrߣÎòÒh˜e½s¸ÚŒ‡|¢ú‡ÜºøtcÝ°õv¦[Z½œzÕ±!(DŽ"0;B´“¬V‘Þ°ióµØ%s<jŸÛÝ®._uTmA¨E»µ…d€…œ…ûÐIÅïX n®…q¡þqÛFf%<¼"ÒjuÔžs+mqQ¸j*ß|¬_ƒµÕ±AÍ#Ø”‡s¬Ë-z¦‰#42ÊÈCƒtýÕÝ"#)H™FÞ=ßQ#)ù†´E¦ñ¦°;¡žöôÑËãýƒ½“Ö󣓳“íäãðUU2ÔdêI”aêÂíó#)ˆ€›vÞK›Ÿo„%Ê!•gtéT5sŽÁéÚ}Q«#4aµ=`ŸãKùipY9Jè;U‘*UÉKÐ*[—”ë&¥Ã!æ˜Ñ%H axQèÄÚ@ìÁkú@À:Ê—³YgÄÁ²j§cn¡"âÛì«ÞØÂÿeÓA§ó{ëm<Ú|ú]AÿëÉæWþïK±ÿ1£Fý[,ƒ²N§T}¸Ó)1#4;¹äîì„7«ˆ—ÕAˆ,ñŒt?– œA«cãØN§n£¦ Ã:üTÂr•aNg›ÔÑо…vþö¾¼¯+Yûoô)ÚJH«¡%/IˆÙæ#*p&s…Ò?¡4h³ZÂb‚ïgk;[wKàÄÉÜ{ã™uŸ>ûR§Nª§\#¡ÝŒÙQèçXíÚ†G»hw´ËÉÕc˜qˆetÄÙý'íŽj[´È®È±)škQä\?Aëgt¹7ê6áTâhÏgîª òkQ¬ M‘¶(r‰æÙÝ'àÁå1O«<3µ´Îw3Wm¼ùñ/ïÿÄýÎÄÈ}fàýï'Ï62úßO7¿èÿßÞÿ'·£aýêË}Œ¿¥žð:[]YoɱB.ñÊ\Øl‚”?¶g{¡¿¹E»·ä!ÑH¿ÂÉM4#ôG£›à}7†£3Tx¢Û}¬"]ò, ‚DsKk~71qÌJ¢Ö¤Ô+ˆrï &=7>òx%<»‡/Qž¢Ú—}]2KtÚž„Ì‹ä©ÎϹEãƒ\‚úKÒãú^½?I”œÉS§(ÍL»-Ì|ÇÅy®‘ܘ)†ÂºëšH}õ-¿q:gcc40ŒiB*?ÝV½³îwXrÄè£#4³d.X驪RŽ%Ýí[ãÐ/•"Âç:s/µîÝÙ3„OècuhÏ‚ô!!Ϙ“Ë#4v–'IuŸåo0+þrc#Pvk:jGÆxé:¼A¯ýâ€ôíãÑn‚í#*ʅѵʒÀs¯x8<fV›b#ЗM®†0„ÀZx˜Œe{úú3ñãö–¿“| øÕ‹aÒŽ¢#*D¨*z%4iôúí$i\¶!χé•oà??(ÇÅ¢‘M‘¼K#)À-,‘íÁ.Ašâ$õ=o¹U!QÖÆêM…èRi„3s]›q¹—K]” ëÁ)Íë,u¢¤{’n˜¿ßñn‡SèQ`°_'øHþµ¡‹)NHîÕSó{m¢:^-(ìGSæž~œµöÈÌ#)§^+Þ)J×=*"!¬W,0!&„%SŠ'.à#*Ø8ª±¡æɪçÏKoQ·5l&k´öq‹xqÕ½"xy5‰ –_Y¦=üÐgr‹§âÔ»ÒÁÍL ñj27ez%ÞäβàØ’0ýIˆÑ½š˜%w¼Âcx"íσCSp`‘×.«7£"d2ÃöhQYÜ#ô’-;Ó:QxñŒ1 ‰h)£É8_T™ð\ˆIg'V.›UJÒ‡…ÆWFãvÓž”¯…I2•Û-y/›ek•É¶ä“0 TåÈ÷×L²Ö=CÚÔ|ü‹£¹+˜È#)¤1¬j˜à\5nÚ**¬˜ð¬¹åy3(¸ÏËÛžÒb\s×íaô°+êf —8ý®.èÝnÏxBÞ^Ÿ=fþàøºI2½ ”%ÈÐÚîø£Þácå#4O‹–úzjM‹Jþ.©ÉQ/$%ñ¨F4ìxÀj´=´ŒÚ¶½W<GlëdÛ+á:æ-ü#4ÕGJ÷0`Ýt¶©äsÏcB}&;/~&.º6Ž†üf¤ã¸ekþ;ýxI+g¹aCíá4ñ†ãVïhÔ6FØ̾¦t…eÝRýùeë#)bu|ÔÉ°U#)ó‹l¨#*Ö+b‚b¦0¯4f ºÉ£ðªø©âI#QTGúXÞ°×BÞOëãV¡¿»¬ öŸã±ÓÊu¸²rý!P~/$÷£±EŒ¦ƒ±uýAÀ,ŠÃŠ®R`b&ä¦ÙUg´xp_ŽÊåôÛ«îŒ÷!(û–#4U§6«‡âÆB”˜à§°”,èˆ[ÉØ\á!‡?DÒàÜgÍÝ£:›;U®.{ËlG¢…µŒÜé«LP)°m‹Ú‘ ŽÐ¦º"\ó•M‹_©jÙ(;•‹û]ÌÖvÍ–‡i Aâù“C¯5D^Z#>kÖ4u¿êzQq¿¡4]ú°k¡É—%Þgr“ÁbÕÊ<¥GÍÄC±Bì‘ VAvTÍ|TféMdwùvªß˜µàå*Ú|ŠÎ½3D;#4v€šŒ æXxÃ<¬h{%qÒCÂÏ.®Ïñôv…ãë.7'3Tâ#B¤ÔØY”§ô:ç¯ØewMìÂÜEš«‡Aëqz{è%Ø%˜ƒ#)¯Õ\¶áœ#)lžÉÔ[“êrØ`í¾c#)¹WÈ6êWîRݛԕØ؃ÒyÜo¹‹Y¤ƒÒKÑÌGH͆=Ðü¡z-M6ÂɦMà$D»P¡m”Â7ÃÉF–t#Ñ7ð$ŠžÒ;íá²ã i"fM`“#·–Qª¾Ì´A‰±"F×Ɉ£íï(™Šû5>ä[äÄn‚Äõ(ÒP–‡^‹C1¶öÞ¬ì˜C‘cP±ÁÆLÕj“Ø…Ö/,ðî 6[½õÔ6^š+êÙÃô£jNcHzѸèÝz}àvÄWÍØyI›g%{’?(eû3Hw4¤£ÑMRBÞ«hKWÔlh.Qw‡cË>Gf˜¡ HŒ¤ÁHHÓlü¡1Üø e¬³‡xMÔ±YöLµÔõyôNÌ°bóMNlVì~^ìÁÌX©ÍÞ+#*†^2m^ñZ˜#“¦Ü3(_gø`²ü{ÎL–4‰“¾q÷RgD‹¦;#)Â,z6sD\)šeMœl£œïò)7Jæ4’Û#*ly;°e¯ÙÕ²ÛH›È’ç´®¿¸%†SÙÅ/¸~T»ƒÑäiÍÜI`C°îŠ¥áü8·ÊLâlC€Ø£_8e¹K"P¯Ñoæ#*P„bÅ…ÂÈdáË=dž\j{ØEÉ>'>ê¨ÛŒä†ÒqBN…à—PsÅ0ÉC–•„P4Ƀ"çÇ"Õ—ó`"‹2“L63åõ¹ØŽe¾Ê‡œt*‰ŽAxéÎâ¦rmuM/Q!=òY ‰ŽT@«å/:aÑ´aÐ+°'-‘ùÏ€¼l‘@(íJzÍ#4˜ºï§m‹7•ÉͽåK<ã-U¬|çrýÀ4XÂ8NzÀUDZ%)5‚MEÇ+FLN“I×ÆqÉîW‡ [ûº/,åähç©Ç<¥2ç„Søßÿ]þÚ?÷ãÿ®?~œ¶ÿzòìé—û¿/ø¿ŸŠÿkiùäjöÔ°7DŸºá“þÛÌÇþÝýû¹4p~“úÊíæïÃõs:r¬ßOÕÊÉâüþ¡(¿Ÿã×Ü\ˆñ»á÷Ä÷u‡è3aûÚNcûÎé‘L‡ü6dßOÂõM·}Ncú~Ú#4È ùþÇ°|?’¯ÝWBò}ŽïçAñµ«öÙP|aø>Á×áýŸ‰àk—’Eðµ¿æ!øÚß#ø¦s"ßtàC|èZ^ÎÓµÌoåçÐÄœ‡ßûEGó¯§ÿÙo='À¶ôGŸõxÏùoã1œùRö¿ëë›_Îüä“çÇÂéÙÉÑák Ì|÷ÆBÖÓŸª{1lb'§/骑\µ“ØLg1転²ªø‰c1§åû*™ ÖËö%Gž®#}C˜)„¶ ÛS% )=ÕÔ·zm½EÉJˆû“.ûŽ¹R:æuÓÕ]™Rã Y•Trª.ù›TNãýÓ½ý“R2©ñûYüöh¯Z·µLöDövHF)˜›8å@#!‡q©dU:äç¤ûïvThºÀ®TZÝËvBŠB©¶DNjV#4°îÜ–J·†Í8¶nÝ…ô‡ˆ¾lW¿Ÿþw›£æŸÿ´þí·ßfðŸž}±ÿûKÐÿ”zûQ`x9›}º8§ó=þÀ|Œã?ÈXw¡#°.Jïcý©Bÿ£¼w¸ëÿCw0n'¶ÿwXùûßÍ/þþÊø/xºÈÓƒÖó]@;b¼%›£\ò+ã¦ð‚ã¦a5VÜðâ_ˆÊa¼#4ŠwmpÒìž(q}ä¯u†ti%i£°kÜœƒº‹‹«) ÍêܼB#*0¬“Lcl,ð”¤%Т4ò,—°%'qTãdõÂ/mÇ9µ_z±õKÍ;ŸÔWJ_Ý-oòÜí@WÝu;þ¹Cîòotï "ðW,¥î¸ÏïXL}Gòê»Ñ¸qÙo¨œ*+/‚ódåëàΧÂÎ?¬Ê—ýݣû—ûgowŽïvߜܽ9{{p÷êèðìîmõôtçuõlçåAõn쿼;©¾Þ†øŸw{÷^ýœ)ÁÞ²²ÿúð褺»sZ½ƒ··ïÎöö«#4hF_ÜÁêyRQAÊ1yÚçë4—Œ{i5B(â£èÜðÎÆv™‘ö³=.5ÂTÈ7Ñ0J¥)4Èÿˆ¢i#`žíפ„qôØy³*»Ù8Íш"Ù£žN€<>ÁájÕZè.ívZÍã2›\^‹“ãMe®—Ì·P=>‚P²@[ñéøO9¾u4à1£ä"Êväý+Ξ<øßÌå×Öþá.>R°¹þÚ’G”W8¾Âƒ ¥{6|…‡¾¥}yð®*ˆ¹Žâ¥I™YvŸÃaŒ^1Ž #*þl¨Èé’ÆegÂôÄ…óy[Ъo©ArH4š‘ßOnš¾Ar¥“]a“(µJ$¡LÝT°[iˆ]"I4Ò6Pf2äÝ"ôO-¯œ[\¹ë9>Lÿc0%lé?Õþ{ýéãÇ›ûï'_ô?þ*ò¿E€G¬-Šef(ae¡C§Ü¥Æ!j…”[¿1h%!PèêÏÕÝøøèúϱa…DEMÈ%—¯q·ŒP‰ö¬Ý¤B“Ê„åÕé6ç'•T(I¥F7`&iÓFòÂô*i{ÉèêEtmJŠ÷ °7Qg¶Œý‰»%k¢ðE¯íµ“†ô@œ™LæÆ…ØLŠ$¶dKÖ#_esš·œdßâÆÛONì¼%NaØkÍ‹î±Åö üzwWãß@&4Uz¬3.ºÅݱ<’XU ΤîOŒéövÎvNŽŽÎööO>Є•’½>|çñ赆Í)2zèìk仺ž›ÊåÅå°£¸vg-&‚ßi£ç—ÜN\øX€:PD§.ºéNtˆ²½±³û#ðθ))òÕ9m9Ú¥†·nºkï§ýù‘F-žÚÇ{¯DJ8LÿÓæ¸g”¹Qa!/³Œfس'ÀG|ÁG‹¹UèY°ÑBøq§¥€‘¡óY º$nOæf¾£Úi‰ÞÕÍ°ÐUª$¾xJF7Ì{šx m"ðé—û‡øˆœ5¾ZK)2uñ`q«+üp"?}c4É/Q4íA…vŽ‘u»F¨œ•9Ôþ¨×žh4#)²ÎY/,}¸‚å& ˆƒUáós´ W¬’R6†¯Ft¸Åô©#ZÅ„ ¨z‡HåÀÞW”«³Êt„ú·e£õe%Z>hÓ¬%ýA. Ⱥƒ\‰”Lÿ9i°º×üáƃPøfž-£©luœ~Q>#4ˆ<ŒÃØnŸg5c¦šW'ÀvºX±A;†óOŠ*S£º“)-äN£ÛCy&*¸÷ºjJY˜üµ—¼\¨È}†'aÂ#)§½Nmƒ^Þª9zET…“"¨z@p¦Öˆ'ÂÜœ¼"Ña¢O¸}C'Öiу-«âíT^v‘Þ²C6a¥,zp@ò.ÚÞe÷¦ŽNÐZ¨X.s2(û¸=k`ß›ðèë7Go«EA¼ô®ÉF}D–2"PB§ø#4H½hbñÑ‹D¹‚ˆy-§t~eˆ&"[Á9quÛ¸šür?B}#*ÐõcpͼnÂÖ(n«ñʯhNßghM‡H°ûÃD“ÈÌeÜÙm+ÔÐû׬dǘö岿ª<#4MÐ×OÓA#4åf.'Z¢ÜRwzQûç_ŸÿZªýò±¾œôCØðC+³@œcé†e»;Ö•ŽTy™®²‰Ìõ•ßpþ뵚›þýßƳ§ÿ/OŸ~ûåü÷×ÔÿoŒÃÖ§ßõáÔ]๢æc¥ô¿‡”ýùe!=µ B{Êõéàâ¶1e§´¥"[puÝ{»çÝlVŠA•7Òxä6: ¢Ágs&¬KÑÖB¶ïýܦ¸š’{JÝê¢e_¥Ú£njõ$‚GzO£tî+;ÙþánÊFÀQÌÄwGõ^â(k#)ŸM#)´mÀžc€¥;¦ÚXÀ(Ô¶´Ö꣆¿÷¦º³W=‘ë–V—³—4ñ‡îä*æS&&}ƒ¼Á›Žê¥7{'ØÜtY¢[º—.xÜF–7ž20ÛíÂxúõ{/xièôe+áY7ƾÐÒïÙQW_Hÿ˜éúÿHþó¯ûèÿ·³þ¿‘ÿýuè¿+ò#$C%÷˃„v¯‚h§ÐFv#4Åäü^ÜÃû7›\_J 9rŸ [ÖSå¤içô´úöåÁ~_Nª§GïNv«äy\²@•{AgI06©ÍYFÐGÛñfŽ§M¼¿k'I,¨˜¶Wͦ¥hʽ·ÁÐzÑB”Åœ§2žÑ½:UH°–ü#4Vˆol${u…7sìcUyöW+ÿH}/,Á”C¼ª”CE 7ÝhmÕmjñÁgAå?ûhy¤Ê€ªÑíû$ßï-4!TµSa-?»ªä@ü…‘¦Ï)Þ>Gþ›¥o¡›©ª‰tô¶´5`èsÊÕ˜_ªT#4\Û 3Öù§ŒÒ>tù"An›£©¨³è=ŽcU‡GÔgØ_ÿÊ‚ªØ‘_ÿʬ%(Y⨢ò”ßKôMž“¥gÜ•#r‰¼õ×fó¶ûçè7ú¨µ[÷ñV]<¦Ã¿ ³’ò<F7•cZ¼¬·]©>Љë¥ÂœÈÃf°VåéB:\Tßbä†û§Ê¸ÝiZ··Äu†Ùu[#*Y§©Å[Bî?#=´¾ig϶“f¢ú‰©˜å²½™0¢ Ó#*†^ -1#){#)#*÷•óv=ÔøµÚ#!ÊG¡ÔLd ¸1ÞúÓp*|ÔOí¤y+óÁ³†f€™>äCÇ¥À”^3êë;} *{Õ—ï^èN‰b¤ÒË{uz¯×]¥ÝS}“?ˆvr,òRGßpj®ú•~‹#)†%×I-=%¿2âHyõQŸ˜gœðÚëÞBâc2ܺˆ?‘.d]É›.±ÐõQ£ùPÞpл¥.‚É»ï}ZŹÂ# ¢ ¿ç$&k¾)•µŸêH;Z?Ü7]áý¾™¨fœš€Ãfjú#*›ÙÉ7lºSïh×™xÃæç]þä˜õ{ÀäÀÆýÁ“ã~‚½ƒ¤e#)Y·ÕÐ÷y«ÿY=88ú‡ïè)½Ýe½$â'øI++÷ˆI†‰ÄÀVSÒÌ$†£a©"‘òÞ†ÅÀ›¥Æf¿ÅÜÜ#)oÉ¢¼ÃØÕ)„'´ÞmPøyc«®ñ#á¸ú%©¨ë8ò©×8,ÊÑáÿ,í.Î]}¥®}?†GYƦUšLœQÈ)æšN&f.§ïæ`Z7Iˆ~ë[¶šèøjƒ> ,_0`€‰7ô/ñG„DÈñoʃ1Þ")‚þpRUÄÕzê»"ËTSl±?U•T_³x‰*l[%'"îy×Cîm#)^E Û\†b˪ˆYó¡|8©Ó…j>w׸»ÑÙdñÄVl'ö½öÄN†ì1ª!L-¤<¹e¥ìNÜ?ŽßV- *Qê"#*²®3<º²ŸAÞ)éKEuÈK€.cɤ^Y’þÒ;·\¸¾\äÊbtÒöÙ…@÷øÿXßÜÌè¡Hè‹üç/&ÿÉhýçcƒ„„ó…BàìíUI…ì+Rp÷â·§»ñOÕ“ÂW¬ÁN¾#4«?œy1ñʨÄUjõzìL$(|…Û]Ntø€Šñ+KDDð#)7Ãn+ð~õ„–}ÿƒG*0…·;û‡¿£ZÜüßY#4ÖGoæø#)¼D3ô€¿{++ðrõ.,qTüöƒ§Ÿo~ÐÔùQIgxQä}Ùr#*CK‡K¢ÉP‡J¹œDX€ÞYð+ùq—OÈ#)M”S‘窾7ÿ¢OøDÄeøSÜVÇ,E1¸Â_Ÿ„I˜„"#)x½\³‰a_sÓøïtYŽe Â>× -‹ÔÔ#@Í_¿¡”6]È^‹èDçS}²¤*¢ä•Ê!û#)µ‚$Æéà$Ö3UR›ýwYöÖå~(²>§h»:~NbáȤSÂö,ÐÙØ•PÙ#){é‡p#4—Cúëܬ°…ˆy0i,[Zw,öméÓF¹2#*~aÉ=hÿü3;—áϳ™¯=XšrßkûòZÝbSÜÙ’·Çe°VÂô¹ªÜl]UýöѦÅÐ#*äq`–og8Œ'?„#4:•<~áŃú«¬Úu¤C:Žú¨õºZÃRàO;盛p¨eþç8æGòn¤^üzf øƒÀ²È)K‡çøO–œôAU|6‘tÍ×÷×j·zäKUßîìžù:µÆ·×IóƳÓ1Q6C\·¥ÜÙ¾-^wúIU°ƒQíÁâ[·\šR²–ZI!ü‹|ë9ÏôVJð§ë*ÍcïÈ3¥~7{©á„{:kS'–ôÀÎB:ºEÆi´L‰™Œ[Ʊ2Šú8µ‡»€rW|°sòº¿:Ùyý¶zx†³õ+QôõžOÝdÒª\mž#* †Ò°Ó‰'·yß™=(M˜Xv€jJ~â\{³óS5¦¾Ú?¨šÙ†«t:I¥UuQ£üý3“PÀ„÷}Ó"[QSóÒ%þ³Ûè’(ì7RDPUBU£&ÉT¶@€J/÷_½=ƒ‰7’I§›ùþàéΰÆäÅX0úÕY“j3¯å½‡+>zõê´Š•;;ž=ñÖs§åF«ëf~ÖF8«0S°>{’u¥a–áÙU™e’ÀËÀ¤Æ×bõpoçÐYŒ…ä#4ãÒ²KšÝnÜï×ê^œêúìÉæ“ïCüýöÙSü}V}ò„~¿¶ÁïOãï·ßÓ¯÷ñ‡LnÝ®ÎíÙ÷Ov1öÓ'O9—§Ïv%WÎý{ɽJ¹cn˜ÊÛ)/hC×Þžt»uoÕ”Øã²7Ui_4[°õYuùîû=ªyõq•~¿{ú=ý~ÿt—êòÝ÷»Oøý»LË$;«£v7w©£v¿ýî©d󄳡äð^ÝÄßïè×ng–Ó6S#45δ[‡7&ãÚð "Ç2œËq{DîÖ‘óo`.çË(÷ôµèƲ_œM"ב#*]I%òÇ~#)ó”@_|T5”73$AÖA÷ì¬×®ö Z¢µ”2†D#F…ÜÓëN&=8ÚdõrÎy˜Ïéí郲ºè^ú9ÈÍå#*ë$’ÓIYY{îq$'¥s(ÉÞ>ç•æXjcO›K–—µÆS†¶¦xl1‘p«OKÞ Éî-Z¥H”" »Úôr+že[í¯LÀ"Ÿ³=¬žåÂJ¿pxiu5#*Ôï‹Lî?‡ÿã8ùü*`‹å›7à9%ÿ[òEÿ÷¯cÿNÆfû¢Ñ¼ž¯FoóÔÁl…®N3ì ‚&òYø„&ùô`E¯²Å\Õ²4â. }qÕiæ"a±må¢Ó'#*:ÔiÚ×O¯îøþ«£“3û(éR@ÅŠøßDŠ'”eLÿcÿðñ¦°ê˜qŽZ/¾É Ôª¾*Þ{-“힉aT}]Xð5yÙR À»‚ÈÀ_÷u°M¾¦°É;Øi;Œ„"yxÔ€Ô*w.DµÕ4£5M:^¬ñÖ×ðpµ6D×yuþÄZÅRéD£æ¬Ã×ö|ÆAÎ`c¯ñ³ê¿¹Ø×þZ–‘©óºËö”#)EÍ€·;‡û¯Mp!ˆöšŠé¢f§¦\#4uZ/Á#4F7ù1çç—ñÅ‹Êx˜Di|^£b6Ȳ6#4šîàd¥rÏNÅðW¥@ëN9'>tf‚K¾xfYS‰°¶qqrP<nÛ`<ãâùÅþ`Òî_TVÎ/~âHçÉJéÅñó~ã_Ãñöyk%8¯Ð{w ïE‚½ *Ií©ÎÜ5Ý„iÝ&÷[Q§iŽ›üŽ¶½á%ù€‰Ây52ƒM`~”«IB4¸h¡P¿1i^E¦1¤ä#c…@ŽFׄ⧌%ü&¹rõÐfbÜGéõšÊ£‚ø:¢”CÞÇSò§êÉéþÑaTº†?v”_ñû'p¾~A~G‰ÉF( ›èPᶄl<Ÿ„ØÕ<+ÙØCv#)<wØ–K2cwßE<:KŒbBÔô´ðàDŠTâóHf$åQØÛÓŸvãÝ£·Çû@šUE- ¢DQ½Ñé#*“’´Ã'þ„ë݈¥ªm•×ƒ‚Ö“š7ý%w+²tÊRÉKn–z‹œucÙ!wN|7#æI@ÓàÛéõ.·Zm@= þª“¨†âOX~Ïž Šm¿¿AXòÛýgO&NH·ñxfß=£×ýIcТ^n·1”òź”€]„¨ –ØA4Ĉ®_*•Ê‹Ê‹ó#4ÿú+¡r{iBò»¬aÿ±}[rßüXýg|p´»s€Òñ7°Õ†þéÑ«3àïªççÿ~xöäñ&*wŸ3:ßU#*ç篘¢ûFÂutªçš€ŸµBëS ÁF\¨1xß°k(µs+WLûX9»ú!å2§¤8ß_“>Äay²äd…—^ƒiQ½¸¡‹~ý(#4Y@Ô¯rf©RÓ’ë°HOY±¤§à½.¬ êÛgO΀w<Ûÿ©ê»šZ&?9îQsÇÍéyXõÏÏýU—¸ªmêˆÑƒs#4Ä•)PZR×qþ}Úß2Íš•¬ìCÿx<lM›X¶o»IµGJyÀ³CÂÂÄïn kŠG3_øD¨@líó×Sñ» ]˜œ”EÐÿÖ¥{•×?Íuàù4Êz›‘‘·²ü´)a¼Ûþ–°‡òÛ£ôÿÊ!æBq<µõM¼uQYã|<•¢©Âk;H€D¬Ó¢*#*™¬²ÙŒ\o¦Fi·ê3¼9;V«ÖåËÒð_sæ “î¸cM˜ÝÌdß'–šÊ·1f»U¢7«‚•ëö-l®„Ò×1l–œ.Ã&¹ŠÈY9Õä¹nÈ+ÌÌÜÛL,HÍý93¾Ù¹T]]èukú9Ù:óRUÚxôiLÚ›$W–*‰ðƒÐ-]ZTŠ3H燂7$(÷t’³e(ª„žÕÓÏŠ£ÄçæhZp˜cÍ-o¿?&I±C&C’8x#*ýmÚG-èøì×+³ÛÌôè„FvÁ Ær…fØdY.7M\¤$›æá¡Ö À`ÜLh«œ‹^êDŘ°öˆ*ÐqÌ#*;êu›ÌFJèß³<â+cªòr‹ˆÃ²“O ³ b±ø·vójè#*;¬GOðˆ^€ïŽ#4è‡Þ+.'Eo9)P\âÅ——ñgy™ƒT²åeyR0‹åeø»¼üýJ*(x¹Äý#½…)É5G¯ùðF²8ÔW·†H×~’ß]?TM2ªFV;[mÄ°Á9Íx¯X„ƒš¤dô^['Ýoz®Œ†£Ò:D Ò@¦'h"Âѳ ±æ/ëÈíå ²¤'NºbÂGy‰!!iì`ŒÚÓ-Z¬¦4¢æ²°~0×A™ìTïKŽv%MTUª}·U·²Ä#}}n¾8xvžÒØLžOòò„ìDªÑ-#4ª…V–Aú,K}W+T<p™—æ¬ÓÀg8©ˆÌ°QÂswL¼Ò~8H#áÓ4©cÈTW2Ï#4×è5qiA0Gòéækð<uÑ„ôwPê†=s¸„èJZ\jb/’a¬!*ù±µŒü$4æÝ ‹•yi‰3ʨ€;!ªñecýËËöØ@”ò»8ÆN&Aþ°IIìZè.]s¾#ºÛëìT¥Ü<‰Gl9E&ëgf`·Ø—=Qöm…ÆsÈ1´ƒ9uÉËx:Š*°ŠA¶h¯„Ñp GeØ„Z]˜þ[npØdŸÞ”£ç6'•ñáX—š3§ê$bÓ’ûWž\”§YAÆCTŠ¥¨ËÖı˜ÔLf¦‚°KëJÍ#*§âΓ+r-™°Úä¡Þi-1ÛXá9™mA$7PUÃ#)ñ‡Ñ4"‚_Õ@~U°©pdªsTQÜ5škÒÍJáG*ìœÆݦ‚œ>Ž‹µmþMˆu¥¡›ÚSMÒïYãÚ9zsù½o*¯Z¦zÀµò¹1F«:Ci.7Aq€¢]Ñ4/ÂÑM¢f_BÞ¨ÓWùì‹ça™*+„ÿÎɃ?!3Ã:O•«e¤S±O9¢¨1I‹ÀX†¼ßäuœnDï“ÆM[+춚›pþ¹R6ˆb”ॠ¼¨Û;/oµƒ±TX/1‘®ø¶`XÐÑø6ù¦kú3‚ÍÿÈÁVØKß–…:ídrÉæÁ9¤Îó÷éÜëɾ]‰!cÁ´a¢”ÄYK)#÷äøY‡ôUTÊ‚H#*¶£‡qê¶Õb;„ÛѬ‘êaŽ`ü1ŽTšOVÏH&ˆ6Ÿ+én%Ìð'iÖó`ÑÜ›™½Øè×^#)_‰ ²(Ê&(¡ìÕpÊô«Ý\1»=@Ô?;ÝI!BÔ¢zÕò£óß9™—õEšË£œ”H?›%Ý~#4$“î²úÜKËœKƒ·g~nqÎù¿=ËÉßf(Ÿ‰àØLZ–X›#*`3ü1ú4cELûp:hU<Z#{®lCYi¶› ã„f’y(8:¾mÞi:x/Œå_tk]÷{C®˜kÖ’†y°#*Àaóbc¨›Éô )Ð(:•èUTð]‚ð(«.ŸSè:oÈy™{jÜ2u:ûÍAô#4‚HÿPWŽddæ yŒ¹½ž‹A9„:O3Ÿu¦["pêh¨†÷•¬ióoEeµ+B#2Ÿ2Å "vn]CzÝI¶ARº‚bH2 ”r£d«åŸ2¦_ú3Àœšñýˆ=…•êyèw”ÿkßÕâ¸g=˜#)$¤ÛÁkúÌÈÿ¸mÜ?ùSÝÎ÷Ê‘3€B..%õA‘Ö#)F:^<eHþ<àH*ö<|ý]a|H§ùAá¾9¦Êp#)VöŽÌÖLLí#*ÊÿKöߊgjþ™þ?YœñÿÑ¿èþåü¿ÝÏ稄: ‘#S_i.4µH'úÕ§3¿UcGä÷-¡z°÷Cî7o/!~ÇÀzjÀqBõ¡Ña謗“ÒéLeê”]N™LÿÂC³ir쎻V"|ãð«‘É^‡Igã'ëýr0M¡ÿjÜ4L°46UÍÎ6î£ëé³î½¤„ûÉ™õ}bt¿Òº©Òù0_nF¥%7ÛÐ|éjÖõáÝ÷Ô¹+7ïyú]Ââ³móp[’3`úâ8$˜#4xÆ׃Ý÷Ý[ ôïN«å¢³à›0•õƒ¢Ü¡ÚB×±òþæ×¼°¾ê‡™š0°äÊ(;ͳ¤]{%ãm%Àû1}ìÖ‚8s²¿J“mwY9ša›šÑ2ky©@¶B5æ¤"6}‚a?l;–;J&O–»ú×䧿¢xø{è»Ý]ŸÝÎY:"Áˆwwm©©y»RaÝó íqõÜÒ¦±zjz#*ÏŒÄ#?××CvºæÎF5br3Ôè‰X¿¯ÀŽ7„4ûŒ[Óþ…r#)Ḩšf²ÇäT)ß›€3Òª–~Núö-¨r³¬â×d{ÏpÝzÃŽÕ Þ*ÀtO™n`Тbz¹ª…Dæ×™D² ”‡Yˆ‚—ø…ÿSüßûÉÓ?#)z1ÿ÷øÙ·ÿßO¾àÿÿðâ¸3EÑ@+ÞPÜɃÚ%x_¢¸³~¯’4f*"é°ç7Bå#4Ú´•rDr›4˜¼áЂìeûôQíÝW$†äêâÇMñ`Aˆ»ŠKÇ_cÅüO¸™u=˜Û˜G¡ëëŽåÚåÝàŽÓ$ííØEAú4ã'ŽluáíÑnüv‘Ê°Š•+^¨\]ùõBõç³ø6Uˆò~Ü”€wûø>íÊëßÏžâ{“S{Zað‚Ê.Dá»Ø÷³)Ók;äüËØ•k×°¤-›+ùq”£?lòäú=huJÀ£8°º°Üä6çBš›ZŠ¨k·”àŽuaÆ&ðIdtv!;§?Æ;gxé"#*À=ëD¦Â¥àSjEÜ1[$«¸“®HÎöcíÜX±ƒ¯Ù€½6JZ#Ü‘þh8Ä,SüÀ,XõY+-Ò_k\Ãyj‚ˆkœ‰¹ó¾ûuT%ѼPW%U³@ò$¬a¶~/]iQ˜þ"â²Rßýd‰›§ƒî{´¨Âõ£L³Ê]_É‹ÝR-ËžÝöû-`ÇKð9¯/G¤xË-¦CýPh4<'‡ÊdÜ)ë¬kìäÚž»vÏÆÅÎ6ª')¬3õÂ1²K#*#)¡²Ê©sõr°¨8˜3Ô¢Æý:.‰!‚¿·Ä¤õÕ…þ˜ ø©)nÓëüF"q‚ûW#4Ù-\ÖØñãƇ¸Õ%t ¥Œ§ÝV)µR/ó–#*dÓ1È*£â-f«#4ÌÆP_”Z4š<7•Éú¦ÙŒZµòRª7jZ#4\ÛÒ•1c+TÐX…‹çÔ'ââ%ÿ—Ù#4ÛšßvzZÈAàGÚ=$På5cA5©oR‰«rc@uàH*‰9‡Ùe»½bEJ¥çÕq{ÙBcrLNnûªi}‡COÝÞ὞:N¸ê¢BrÇ9È‹nöües¯’¦¸.±•!u×yÃB5×[†ºÆ)¨RÙ}mCi5ƒ$–4ó|¦ÿý,>xw¼ŒBöÊ“D<Ÿ§}œs¾?¿=¶¨ärI¹{4Mq7ž»Aë\L;¼ÖΆV›‚´ ‰FµG¡…#*‹?Q›5iD>…O/¹’ºÒ •ÉcqjYh‚cTÆù“Ê;PÊ5RÕhNðLΊ$¢ü¬k¡r¡…¿i´"¼“¯x²Œ›öö¬våqS¯Cg"CôÊr‹8«e&¼-ítÃA #×E³³Â3üh”™ª™x3Ž'?îê’xEÈwŒ‰n1—°Hp–“:ªIººQwá€Lç½ÛwúnÚÍë;©'~´˜¤Þ:hA%#Î…H|‹ªÉÓ%1u±¬1’íòi÷)O`’©[9gÿÊ÷XBj*]e¼¾l|4Þ¬ÛçW:·q”»ýÅWƒ¼ÈÑ#*Æ*·Éºê}?yúPdO4ÌðèvÕuRã–Ä[<pØÞeÔVÊ”Dzï‚‚…‹wÉ™ôØ,od.¸˜ð¼œèuWâô¡µþ(ºìvs†Íd¨é ×RßÁJÆ#*†ãÏû`šH™îÐE:ĵoÏóÆXßN¿ï[lQÆ›õºž:šû±ôGf¨Š,Œ`<JG¦4[• º¤Ktàä^˜$›ïûØ3—@ÁÐ@¸¡ˆhw§<¹Ð)-ÄúÂ|…7Rè#mÏfÂN6K¶Iº\BV_“" aƒT¬èLpšfNMw½tuzp;ÇbüPÕºŠËÈí;B6´TGÞ÷¥Ù3K!] ª™ìRzˆëØÔ<ÅL;Y®S&Ž°*;nÚ#KWA}ßߤ=Ojo¶½¥¥ë(w¯8Ð[Y=î65¯ÝØä*Z`@QÉ(iœ#ÿn·1Eð|3cøáecq;ìy“û¨UˆOkû¾Zn¥Ô6¨TKƒ¢•ýUÊnc«žb}XT“¹N1¬Ó,ù©NïÇ?{*òl_#*‡i.ÆR–!pVŒr<PÌsÂåB×1_šbh—.gð±x ‡A‡—R ,®ãð‡ükì¢ÛKH34Œ/4 Ï÷,óþQòI«O+ÓSºa@Ê“Í#6“ÁÄÊ6GÈ„ƒHiH³°Jè©À?4>ƒ„Ø+;adÚƒ&ú&wÞ¨:PþËù–€¨T«ãÞGˆ“(5, *ßNÇJâiqù&J=\^¾d’`42BÒ} û;ôÇ~€MÃ<eK?%:#4Ou⃋QôžÆ"äÕñ_¢ëR1gçA+"#*ÅÔþ¢}Ћu§ã±nÐJ-#*ªŠãíDz”©#4}–ƒ€åè„fýÌž*3å.fø ó–ÎR½êäe÷øX “¶EI}1èI[ò¨wœÍ)ùŽ‘™þàJsúðJ¿Ûß5'ÊùëJŽª¸?<êAu甎¬Ö«é.õ}_+²eÚ•CÜR$ÅHLÿ| ‡ÀšÿçÙörò|üåk"¤ÉKÀÒóä (öž5ŸY±ÄŸ?Ú;ÚEÏ@¥íçðGéºGÅÊzqû|ðü½šÇð²œ@Àšò|#*SúËPYÅ4fàïïÞÕ–p€+i¹#)Ï+õÚk!J>ñC¯{‘Äî8ÿlx0™þ*°º:\¤AÏõ'<˜à—±ã51!ˆ®Î.Ë2cµèèç'£h™¨õ~þY”õµ²§>ÇÊ?#4±Œ^7¼µåµº-ïv8E°]xÙmÔŒÄlæuºãdBÆ‚ˆÒYxÙß¾½Ëî‰aÄïÍÖ(îaò–¦ âzÂ6½{tRõà÷û{ˆ#€¯ßíûSƒ]Ã/wŽ÷«>ÿîâo2iEÍÕÕ#*ijß$j=/xׯ“…1A‡ž¶áÉûû„Q‰UÓ=ÚÇÒùú ¹\|ÚYðºÃó±Ò#*b)̤è#)‹h‘Là,J߉fMrüjT| lSF&ýäõ´dZ’®³Ì#*cÛKêOp" YÝÆÞh˜¡ùûTPn5n·/’‰®~ïdñìXÇ¢Ï?(Ç%‡ï¼G#°¯^éˆÈ{Ððxf¹©ì@ø»÷¡Í%¡ƒ$M‚Þ×_A»_žîÁš·›“ÞíÿÓÆìÓë—3“àì¦|ºGG·á½5RlÏiË~â¹± ?ßO”«ž²Örè¯"Ïö#*iÿD©kaéýúCÛ^@pèS˜]¼Ÿ@¦éÏŒ®‚Ÿ•Ç-š{”ŽÎý”Èe¡oŒËbH°•#)+¡jŠ6Ut=‚d'>9::“Ò$ãüx/÷}Ä‘[\,åÀ@êTsz¯gkÄŸ³%!ïDµ%!)-i•J9&ñ“OzT–Yãns‡T¨ÛŠux6ä•Œ'AÜ8ídgãa¯7i7¯ÖæZ¥ÉYrÅG·DÁ©ñ«€·HF~ËÉš¿Iøžî#½¤:EbJ€¢d`¾åjÅ£ý%ðy°@üuú'ã÷ýk:À¾ÇãG™V?ëß¹‚¦ È0ÊÞòI™{%¿`kÅp1u°Ìù¨*ˆ•øÑ ºÀ~Šñ#v½êJ6è‘]Ç«oº‰M<ßh#*ڨΌè„Vdh~s”mÕßúj‡‚j+z@$…1YlðÈ¡Ø®]ÝûINñpPó_ÿ"Ô¤)üýl÷ÍÌïêÎI„ƒ_f»Œê‹\uòdñ€Qç¹còÇ‚úòe+`é"S÷·;?V#¾o{'èj]²PÖÊè,~sÄn1N#‹ÚsKM5T§v¦¯Îî A]ÕõPO½¯Àk <ZG*)<ztؽk#8Ekôph§Îdéä-ÉO˜39c(P½z4f|:ÅXé¦Ôüi·)„žPÃO Ö¶$½#*éÁð)D¿€Óž´yªÕ˜Hæ'Æ…W\k™±4µÀqT ê!ŸÏ"Qøª¼<"(ÉEÝ9ò«5Ìò€àGØlÃÆ9ñÞÁÈ{›8î@§=ÞåtÌyÑ°EŸÈí8’:P·J¹|Aâ=²ô(*oxÜÖ—'ò%Ýñ“«nâöv7‘ìÑÏ“/§(Žž–àì4&Ël?p&A¨&©úÐ$x{´›Š§=‰5nªX'»éX½q»×n$j{R¯_IÒ‰Xʮ҈Ì]’ð-»@ñT`r6JGΙpØŽ8¸<”#)s›ÁÔÆû¦+ù’|DxàBcr=͹!dºo—cCl— bÛ§søù¼ç{ÄÎNæ{æåïÆ»|>ÇX,‰É€Ê_N9TèáÙÎÁfíÆÝ6¿ú)eŸ@GþœÚý¥Ây<ûž#*¤#¯H¡)Ïßa~k)ˆ‡Œ%ç¨ÇöD–>*$@‰zm5j–ŽŸW$'øÑ#)Æ°¢šm1wÎŽ-žÀ‚0›$°#*ÔØ”f¨[SŸ€Þ-l9æÅæ¸ìÔñB€ ‚-[–‹éµþ$ó‹ÑSBØr±š=,²æûu£’4¢øl[¬î@–n»í^«4â^¹&k¤›91–—SkMuá»:¤Ç“zôZnÐÔ·ö¶¾„!Ÿná•G‘²DcN½{ÎáÂj[åÌÍÇRiYCî×U?öWe¼9IÈQr´(÷Öœ.0S.7¡Â¨6™õð4©~ÔS’oÜÍ>†dö!¾¸Uâèk}ƒÄºÚ9gf#JœG¸T‘sΪʾ&[ŸBÞTwö€uh‚½˜æúêèd·#4ôxçŒ9—¬57þÏ"”noögoq&ot}YfQ£ ÷·bIAâfç²Ô˜àf7‰!>G×0²þzeÃÿ×f+ÀÃØ ê!Õ—çBÔLaº…»”i&¯÷×GΤá¯À“¶?Çׇ¨ßqWýŠó帻w¯Û<€Ú83ÓÝÐÉ'„|2À³²îíÜåÉY¯NvÞVÿqtò£Y:Ó…ñiÝê4¦†ïcù½Úuý×'Õê¡t“¥U¹0Zq¡rþ–~ÓŠŸÛ¯þ›v£ã.v{–V¦sÖHíuÝ0Ós÷9[ëÞþ@z„'þ_™#4Òæžî„"Ô8°ëBÚˬîU=ÀâÅåd‹þ[Ós‹:"rÂ_ëðayÁ©N<ØrÄc?¾Žw_í¿Žµ¤Ìn·; ¬ø™5š×ËvÔ#*ct(W.7I ï•ËÌ7ˆ žw#*µ_Bhžøªˆ©«Ò>€³wFùƒŒ†ÃŒUÃæpŒÐcšA!múÄ pqÔJQ1ü`ñ³:ܤH¬¥òã¯âW'‡ï*Ù˜cJ-XF×h6§|5¾$È«\)Ž±W)SæëLc6JŠ‡»¿>o§ªaD”ê™®q†7Ôñ¥Évç»×xùo© eŽƒIÖõ¶=Tœsv°òF+;\‹G#5sÆÃy#"ãQjbÌ«ôh9Ãå—ÿÑËevzí¯êÑãá;ÉÞ’Û[¿ü{]ç¶Xå“+wµÊT$¥€icUÙtŽIYY¹%2S”šaĉÍÙÌqóTXÊ÷êB©àŸáÈ”uF™Ëo¹ü™ÎÌ©ÂdNÌÏ`ŽÅåäÜp)EÒÄ€°}@´eäu^ d›·++¿êíö)Š»’¯Q#ÊDüPhý—¾¥7¨AM±"°œ—û1'@¥E™;vs%kÁu¾½õJË@Õ÷(#)7î,èH¾å É#4Ö²&Ý&¹À±â(yzèyÓ])*Ø°R·ÀÆÈÈ=²rJ\êêÃÚsÍò˜ÔÚæVÝ¢Ei…;ÅP)a#*Ù««øtæXNPÊá/ßæB¸öüh“Ä´,Ä´A'€È§»Ìx<‹±Ðç—,íÌFûm².$¡…‹xÎr\/§käøî‘oéD¸ã§ÍñÝJú«]ö8áãù ÕUµ|ŸëÔ#*òGº®=RtÍk×½9ìõàìã©ÈxÉÍÅ$’¹¯5~Sý‘[¨3×Ú¸\Ȭ‹Y5zNâå6v/#Ô¡Ø%¡·ÌyÂwà3QtÚoÀl5ààEP‚¿Óÿ'Ï|v€{ðŸ67?Kûÿ„°/öÿÿ÷íÿ]cóû¼{2œ`ËžF¾¥™zÛlÊ5A2¼„ác¼ ”ñfVâØA5ŒfÔšM;Ž{£Š*éMºkßQI#4Ÿ*MÊjSÔ_#)‚ßl:÷JLír|]á»;@³íY»9E²ÜlÒ,ç4ùA g ½ÊöäHuF•îþp ~Øòz²8=ÙEg—¾¼*Gše(Ù‹fΊSÓ×)Ì[Fý"£‰Ñ‹§[®ñëYÓ¥*—›åž”h;2-H ñªã¹.OuÌŒóR_}H¹'…—ååæüq’ó±áϺ²¼ëñtì°æhä°'=v—3jê„ÀY¡Ž£=ŽB; ;ø¾âÿ*üŸNó€ÿ¹oÿÿöÛõ§iüŸÇ7¾ìÿµýŸapç¬@ÆÙ÷"´m§ô#)öA€ßV‘Âÿ´srZC#)î:!@Ô|qíÛ”ìDð¤oBø||Ì`ÎÏÊ<®G#ébñ¬Êe«Ú¨y¶ý@ŸXa{ÕãÕa,æ?¡œ‰]ŽÂívS:vÊμÂ?ï×é™àxIoG'üí)£ŸÎúczãŸÎúwüöX½ÂTù-fi¦²J3ÜNØ"‡ƒäÆ@#4pV¿ú„îoѵ¦ …#ó°…ê!ø^y{´—ùŽa¡ÿîø¸zBqù»úuzúžù†i?ÖlÈïîïŸíìÿ×ÎÙþÑ¡Ç5«kwÊM7C¹LØ6![Ð~.…ØÂö¿h)éMU½ÅÝÖ¬ä$4Žgmæ¨>eë wšº’Qb Yè†Ôxmª›úuKCb*3£N¾í_À8FF¯ÈxIÖ8?OõŽ¹Õ«9ÖVñ«]èù£wgVÌc~$£¤Œâ+a†?æÛ(j‚‚FT$j\üdçÊÁêà×b®‘á¤?Š„:jìbõ·'à´!珞²ð³lâ0#4ÛÅÑ“e·k+mÜŸ;’66T2ÅIßi’Å}¼#4a¡|9;í ©…$׎Ö#L›t”OŸœèxw8ÉÁáRRWü¹ø^)@Ú½4ˬ€~æ"…uµ×e‘“„QjþלÖ\·o©5jäØžÛàG5ˆVךÌ3Ç™LÑ¿iE‚Zaì/¦–d”"â£\fI8ÆM$mN$W<¼¦`¹Œj2Tj’ `ý!M…íîaM¥ˆ÷6U[¬Z#*UX#L#*èÈÄ€…X7Nø‘bI#ð9ÝŠ%Z+©OÚÖô#N¬ü~¼f¨DˆêÛ·†„×®¥¨FЈF纸+@Bmµ„|¸34u JϸV#*ΩžuC:Éæ‰äI®´Õ •„™êýQöÙ\àœé5ú†7Ûš²=”(j…\ßÓÀeÐô”‚ôC© Úú´W$æÊŒ»³ŠÞAÎN¨Y=ÞŠ´å£6+~e„(s6¸µ}Ò§añÉÛ“«'VˆŠ©_ìØ*\ÂÞ¤s°Ò;©%¤<ØÓ»)rèâZûrÿpoÿDW\Ò½G÷@&:«®ÚÑ‘¹-åøÄAÎ8n©Ñ æßÍ~á>I:)2âvö@g·9ýqÿ8~[Õ{ž¼;„0ÛÜDð²fm–5v%lö[qsîîzý¡æ'Wí^Ø|‹©ÃÄ÷¡bLZ°æ Š¼´ÇÀʾ”L/䶺r¼\•Í-¿i?rðªvy\½D;!’êQ ^CZ›°å¡´¿õPuàE™®[ÚÆ%É0”Ê9ep¢AEhs–7x$W6#*µj‡aR3‰˜P|&†Y °†…Ï%ÿ¹üþ?€ÿ¼¾ùìñzVþóô‹üç¯çÿc¾Gú^Fòó›®…`Âkéy®AÿE#4Ê{ ’sÓ)÷û§J1ȱú"Çn¾y#*imÇ–bÑ…ˆ8cÙwð6‚æé£>ía$ú\e„,dÝN¼W}ùŽ>ÿƒ4sá£[H„žÇ)/º;õ1/â¼¼Ø}ÊC2³cÎËb’›s^nZ×Få‡wññ0Ñ]¯tóÑèè~·&NÞé ©õTHä;ßýU)ÌRSÉd€>XJ{Dµ§•Ô!³#*å!wܶõƒÆEˆ~ž¬ zP¿ñ¯áxû¼µœWè½;÷b#)&t(^ ÛLrVY6ׇ<7…¸¥š€šð¦)Ž;iO*¡$P%šw9Ò4ŠLýJ¼µ)ÖÌgÚÈÔ‰…¾fi°B*¯ûèki›Ý]G”ŒÕ•èP›Z•b•®k>u‹_ñ{÷ݪ!µ˜wƒ}äÞ…uò.È °C²sõÏ»9söÿFÒÿìÿO62÷?O7¾Üÿüåîð<’Ýô+| R‘ŒóQë„õ°k>~Á$ ØÔxwNõÙwçômž8_¼sš>%CˆuD†ƒ£sÓ‘à-Þ…T †ø¥áOÂNjgÒÿM”«¶/`}Vuº#)ÿ\yG#)¯î‰ßÚv1¿cÑ‘jÄgnSµÅ‡nL@§î¼ãözŽ;‚M¥YòW¿ÿ¿ë3o÷ù|¶™¦ÿOŸ>[ÿBÿ¿œÿþðóŸLøŇÀš¯â¡«Äo¿¶1÷D¨Î'÷å,çœ#*UÚÏx@üŸv8\tðûM'Ä…‡¿ßvL\xümgÅLÄÏ}`ÌwjÌDÊ=:æfEçÇÜ/ÙCdz†>à$ùúðœ$_qÂbßöÿ—#*9:¢r½Aµ}Zɺ5-ä¼Êyø‰#*ÛOn` Ä1tânûÁóõß\¹kr4€ŒfL=¥)¨B{Vû³A[®¼¶äÆ›¾Šå~ô4â8ooê+PDÛ¨‹¥"½öôÒ5]FÈ7Ýd¯¤@„„ý ¡kál^º¾¼&dŸG‘¿îÏ?©ëޣú¼½Ý?<:I…3·ûæ úSõ#)?<à8¯ˆÿï<Ó»¤;œwºZ2†Õ‡q2»á?UmÖáÿZjzÿ©üßæfFÿóé“o¿øükê~g\GËêSw¥)ëb¶}›-"Ëý;8tM§?Ñ:3ÉdH†°lLS%C&þ’&òGìPè¦Òʱ#)¨´gmŸ¿æš mª|žc@*¦´~£Y.(paa·¨šyoq¼#*zödÒ°(ï=8ÚG¾ïs²ÿÄO›÷«ÙänµÃP. `¶a‰À;½A©8º^“ÍbðƒÙyÖáùcá#,`tUÌYcp9䤈 †`!M]Rº¨¥ÑB:¥"Åårì‚ ¤%ST^Ý39¦k¿1'×ÂÇö’Y¼´Ä¶–¥Bb¹ÃìK‡"€¡iÞ¶¼–ºÕ˜µ8¡0!´bI™ÉGuƒJË×ùËoÈæ²1ihH>:à‰˜ïÉÎÉ?ÎOãã|1ÃøŸbÿñ‡0#)‹÷ÿMø_ÆþóÙÓ/òÿ¿ˆü'çÉ|zù$/Åóü!»Žá<ñêdçõÛêáYä{ò?¡xDÏ*´#*‡’ìWßÎbÓäq|rôúdç÷vgÿÐäQ=ÜÃ$–¤©yTGìk"«É·ƒ´uÐ-KÈW»÷ÚB¾²m!_¡-ä«]Njl!UÙy¶yb§$ÓÌgÈnq„ÎBÇÎ\G®NÚ¼ÒVð³Ì+v wŽ1¦«y1–ÊKRÞd#´>‹Í<P–ÇÙâÇ«ÐÅÐtNŠÎÑ“àùbY#4…éH‹Crc>,že—s_̽l¼4W¡ŽÈi‡Û)^Bq#*Ö:™Ç<t€ÉЬG§i´!}û§dˆ”¥Ý"H%ПSÅf¦v¤.(¿ŽÅèE¡ÂñXÞF³îë[JÁÐþ’JER'6…P,UÿLªåùÅè¯uÕ3߯Ûyd«GÕ²º8uéGÀ<Úá¹5ïš~‚9wµËº î+^/ ÎŽÖÐ+µ452cÑ/[þ„ʯç-ØÜež^¸þ¢>r…ßnu2ÖÜvŽeÎ!/§_ô ï¦Be™OB÷ßkâF°OÃé¤Ì)BMÒRÃBÝâ:n³(CM2b$—rc:–y%¼ùÝ’á/º#4ÈôZªù—ÕsêªZ4¯ÎËvù‚°™ƒ9ý0‡¤Åi¿Ó ,M?l|#r×—#*ßñ\àjåƃÛæ•ã+>rq»{ã#>È/}‘_œóèÌAyŸè+3A,¤/VâxPƒå•ï1Þ'ÐÔWÀA•?´½A»®g¨zžªåÜ £#*e²€´G3F«Gø“ëæÅÙ|<á.'x¾õô!ÖC1Ë%*c8&ÂçÖŽànPC*jAw`aW)kGè´ˆ4®—\àr0L»úΤ“F¥SÞ¶ÂkÄÏåØç“=!8®¬ŠYÀ.~–s3Ðœè±S̹ۡÄÄ*¤nè$×¢QÉëÝÝxïdÿ§êIK«j_ñø¿ì»7ÈéC¼ã£ÓýŸå,®þ|æD<?]=’¤b!Mbìq;R¹Ñœmº›ÏY¼tº&mq´9#ˆ*è™60î–#)|;ûB;Ë{bªir7ÅW#4‚9Ý,'“jP6mkGFsˆÝu/͵üê¥ù'k…ª1%/G’’œ`ù–¯bèÜ<”%>[?¹ŽSæ‰{lž‹ÍÏÃ<þms‡µdïYµY=g•þv'!#4~/oÎThgUF#4šyqL¼<ÜÊ®jÀËõÑ¥Wf§ÑíAeÖ¥¹±ã£--¶¹ãç•p=šµ8@øªëå‘ øG³‚q»h¶ÀýׇG'Õ½¨6†ÕÕ\®ø!>5Ç“Z£üïò—¿?¯ÔWÎ+Cùò5ÿž|?w/úÝ=쟞mq‡GðT/0’1#*rä&(Aί·!Ì3žH-¦°€oòóu{<h÷Ô[£uÓuÕ[?¹#4ó3™é@z>Èã°×b–8(È d«!Æ¿l6W ?OòºÊ¤N ݘd"²#*|L÷Æq÷r0·õª×X¶Ùü…ütOÑЉùd‚KÑìZœ+”4¡ÒºƒF/–UUw©EZ@òÒµˆ¥ ZLßB«m‹ïY…ÓãÝj|t|æ’ô_ʵƒ“é?ÿ]G|Éãù±NꢣèÔ`2¼ÆKfàƒÇ!=£i¸Ôƒ¹-w#)(NÀÈǼsB#4tlmùFp#)6>cDì¥ÂÕÔÅ©ÉÃ%HΦ=Ò‘¦üIDµf¨j…ÜšOœš‡bó;‰&ˆé(¦ŸÃæf‹qätXB±ŒèR5»³³•[تô–ö ©ê4ö}nÈÔ™d‡:²Av”‹ÒAÀ¿k4Lº3µopI®º@¾ñ&<¦~CûÜŠèFÐ’”KÉ7Z³ÏYv–ï¢E2o¿ojÏx4i´ZTñEÇŠõOŸ1r¢àQƒ³˜l©ë•lÇ‹¼ÃÀëöd"@äÌFN“n_,R-Œ¹ûå<›Ÿ,è¦Ãb"æõˆ#*aG?âÍÙ¨•„»÷úöj–ÄÕ#*Ø<µíù©©Ñiu'¨¥€Z79U?‡ª§Ut‚w1¼öJËIà/ûžxÿà)çàÀš}ÅžÏ?½ÉÈ«`ªh4—EŠV¸ÏÌÅ]$ggJ G\!N·f¹x/dddM ƒ‚‚ß9|b]²¯FßVT Ôù!ÿÉt·Ð.!Ç`2Û”žUÙÚÂ?å-k=äœéï\¨C¯‘xm³s–® ©ÝµCetL[‡Œ†Éìç.0rm›EÅÉЮp4:RB…éæDÞtuŒ˜îÓ÷R@ŒËce«,À*Ò9Àî½;#‰ÿîÑ^5*‹ç¾yH¦cˆ…Yv†ÃÒdâ/‚P¬/9rÄS@9N¨RèúÕ[.±|õ#*ãdÛã !·°Á9QRHD@Ò#)Éq.Hd#)EÏÉ’yù™Òs_þ‘*ý7¡Bè¶*KZPr<¬:7F%_¥3ú†ð49É'—*‰R<Áˆt“Ïr@‚ýPF „”õÆM¡ÆŠžsûz²ª‡?¥ñ´×ŽRy‡@×aÍ£æGwPiú!¹×ãÄÛqŒ5Žƒä£H7åãÌ4I¢éèrG™ävv~&¥#äQIUTR”ö“ã]• nÁñ/â6%寉\ðÑù8Ö.Ÿûª<GžÁ$ib`‘$iÅ°HàYE9#²“¨iØš†M«¼6MK OÁ|iä"r,ÕJÁêt•^”ò§8ÆC2Ž}î5K¬š÷¹%’Ù©ëyüH6SÅ%üî¬IÈ–q•i{EQ7‚tr¯¤xžâ<kQü¦a}t‰<›DÖ¢&@w?ÝæHX2lPn1@óh_z#*†ðã#y·_³Ô/Ê™>Óz?Óq^옣»T7Jwöïä8ÜN¹Ô=ý·ÜD©}P\VÝ©,›3@M_ô:ÒËò¹fíyÆ1va”e_Uùš}bt'ü]aÔ¸DË:qÎþ,Rõn‰ñ*…8TøŽ{®§lYúD bµûKÉ‘Ä¿ñNiý‘ÎÏ#4vø)è'þ;³>ñÏû¤?ŠðyÞTî4K|k¯Í#Èæí1K´È#*‘úiUŠf£×ó „jƒ)ðûW0^-X<çT°°ãÃÝþD3ë@0KùY?:®¾=þþ‡ó&Mþi€›C¦3ªÚ¶wkùàã#ËÐIKUÔh¸#vÞöÛ‰„Žt+¹*¹Ò”zÛ÷dj™!D‰0™å!ŸòúÓ„ð½éˆâщ#)6Ý)g’/#*NåøNîS|ÁéVkr²ÍOß”%õÑ/Ä…ÀÿŒþߤ=ûóíÿ7Ÿ|ûmÖþÿÉýÿ¿„þß0 ˜€Ú`ÐáÁðáZíOW„§‹îÅtÐuÜ(ýós„DAUžm8“A”༆!XÅíÚ/çµóz}%8¯ûh÷ö–7wÉÈY%ôF•Y0iá0Z¦Pô5³ -A>â.YÒ—ð“æJMÕé@§64d›öh¡ž”|¬¹rd…_åØ,Æ#*u|êV.Žóñ;¸Òj_LUR°åÁ΂»Çr‚L抓ÊN—k<jŒa£HaUbÄUã"³ÓÝR~Ñ°›*—ZúÜéÚ×ûuN¥šîfªÉ3Q;Ú¹rg؃6F:ÓÃŽJ¶(¹‚»uÆ]&’g°Ý’“°É @õüŒZ„Q=B—?~ÐýM&·°ASNœ‰Cg%Ï›‘StìCNïNøDt,¯Ô{5èu‘™]Ý–xºþú&ìOf"t›ÉMÎ;^)w襨;¸ë%#4G_k”ÎkjæŸ×ƒ¿Zë2ÿ¨Ã%NLh@ÊdÔ‡ÐðU&Úeo˜$ä×(õüüoƒöù~«R0´äìâtHipb cÆ.ÔG®)Lf“xyVý(øIƒUœžì¾Ú?¨BÍéæQ+EšQF2lÆ1 ¶–ªrÊÄ™£¸Õ•Ž½²RX¢HýÆu›Ý‚¡›àýÃ=®”~¹·^NÖ©šNàÔÎê÷ÅU|}ptzºs²_½·Vn–šI¥ë÷#)„I›©>>9z{|FÇ?³ê\I!sB*Œ›€d:eZHŽ#47;nLg.°Š¢ã|ËÞø NzÕþÖÐüÅ".+éª#)s*éìs6€¥Ì#)%æÿ…€"¸Bmá'áBMÔåTü$¸ÂÔ|!ás(,ÔŽA†—Çp|À Ä[¬ŽÐÁéÎÉì”YlóÜ}×Úx ‚Y“v{ÀO©íX µ\!–Ï/ÀLŽþÚ[?ˆÒíA<ù!cŒÜwÞ÷§½Iˆ;ÎÊ.\9J>õâÜQÛ{…F¨6YËC#*ÍÁÓqëx:7gØåpÊåú˜µ\Kë²4~9v#)ù$I[f[S[ÍÓ s«Å¢+ÃS¤X‹Ûñœ#*]_“ìx¤6Â'žI±=í?‰72µ˜ŽpFö¢3ÅhíB]9ÁNAídý–‘f›–‚òAÁÓ…XC´hÅÚýÍ-KV-¡suÛÝkÚHÚE(¥ãYÓžM+V.AÈ®C¨œiŸWŒÃß.ÙøÛ–»sÉd^³ qçdÕ(yÝ@°«nÓIˆÄ¨Â Ρ~ÝÌÅ™¢ä([ÃK• Ò¿F¹ßš£Å¹ü/²¼Œµ€—b˜"|¹äÐÁ,Tj^£sM¬n_EëÖjêV–\ÎÉ&s¦‹–±˜)]z–ìL¥äî 3Ì܉è±Ä¯9XÔöI6¼¼l£o‹Î°°h,)êA‰JejsŠ%9úÑ…žÞã~:‹Í~#)•P‰øÞœDꋵ ¨ûb¾AG±›5½¨:mî1¾ÎÆ„Lv¶h³Õ9:¸ó.FäêIjôz¥¦£IõQt+‡$<¢®¦4ÞÀ#I*Lù;Š#)ùq~õ5ß?<~wvêo¹]Ú¾<=›÷ñc*SáRMŸâLm•ŸÔM<gÂúÔ‘¨E=ðRíù¢UŸz¿Ø”µØÉ™õV!¿“ÐGDez(Û;¿¿slAˆåjFæºúed%f š‰nÏs®ˆ•Åþ–‚°ú&>S€©ó/¦þjÃÓ#*´Òæ¸1¸l—6BdhTŠ`u#ÐnÝ;Û¹DÞüG/¼*©oüS&©›Züo»Tnjð:Vøï1}L4CÆoñJ±ÒP vb{5l¤‰:AS]HDÇ'CˆHW&ANqRRq猿5T=ÎÐ>u‘#)EÙ?ª4R7Âl›Gw8M’üâ¶#)—Ê¢%}ï0èâèªLU’GÅ9ÚÛKi2u›f\Fé±Hïû¼ÛŠN)k» L#õJ#4e#3¡1Á#$üSšMîVµAìÁE5%¥¶^þ¾Î±ÍÌ1§xkúŒ›$ÏM×ÖžhžÅ‘Tõ0„.¥Ur-ŒubþqæéäÁÿª#*×ze7Ý´‚„+†Ú’Ï<Ï,‹ïŽŒúýn’@Ó¨#*`éœa%š³µbÏÂfêfJsŸÆTÏ{Wx¤zNœqš‚h;=A€QžæÉ]»6# xyG¸z°jÒj+&\Ü+HK®Ì SfŠ;J̈WëÝœÜÅõüžgÉ’8ÈOzŒÖ׿9õÏÕ‡&æ±ûÐz#)=±(')Ñxx…Ž› qE“Œd³qO¸€I§l©9ÇWDv|Šõ’4ã4‰{#*ëê°yq5=´Cˆõ¶˜ûÐ!fws‚,²¥(ˆÍ ¬ó‚Û7ÜÕÛÜ×2í¼["fÉÈá VåÊ›=Q+ôUJ•ŠÎcº¬H×e«àsv¶{F&¯çq¤Z’aà\²ºðܤɛ†{Ì‘¨Îc,xS²hóþ‘E’eý»R]Æ⺊ñ΢TSoâcÍPf}€vëVWçYÓ/.?älú÷³ñù\<,Ï…Œú.$w}¦¦È|€'¡±|›ÂÍ„ØJþ’#ɼ;¢-ä'kç×(\À¨Õù¤2ýÃŒZxoI³ö'$¤³µ©æ½Å´nº£Ä½²€Ñ÷~Ú?fðw|°süˆj6#4á=.OŽïà¼"#å«NƒGi•_·Šou–¿÷JU`ï•[ƒß_<|Ú\Ð|(q“ÛÏOŸ¯x£†Çˆ©f³ž½….»çv’™3 .^/¨‡¡˜&2Q#4¶MôÉ…È-#` eF“NæÓUñ͉ÔýÑDI\Õ!'õ•åß¹—e‘[7Nà‡nDGILଯà&kѵ¶vŠ¯b#=@/¬¶XxF‹AêÜnyC0y3‰p^Äö»sˆØì²sèÆ^ÌWà[&#y–&RQ8)ÜŒTåbãjU½êËAÈV•P*‡æ†&’«mËTg™ý¶ÂMtn:i®E2/ywUÎw•Ovå Ós£?î†#4¤ƒ7Tª»³žÆ‹27ËaNþ¨ñŸ¿Z>‹²WqîÍì"²ì¹3jÔÇÙ±´G™²ÑN;•óO'ÐñnG› ÕpÊÔsH}Šò ¶l"7Qͺ¡#*íÛZÍ›‡z}˜'ó•$Z¸t#*WÂVp† }Ísj*¡¿r—@«‘9)fãIº“±HœôëÖB®+cô•kîñÔ1¿›#)ŸSšéš‘6z©M¢t+2Ì•ÊHߥäõ¨¾ZQ)œ+.›9ßÀyªÛòtñ¢¤Õ_#4´SÛ‰wÙ«ÞM~a^wẛnrÕÙÍ_éÝŽ4V¼Ôrq“ÜõC| šÉ˜«½¼U”(×Â^E•9{T0,¹–ÜêÜ_´ZÀ÷–}}Êé’\jµùðþ°(o$&“"<<˜î¨a0‘#409]ň*i1#*ŒðmÞ(ÙÄ##4äz¦%/²x²‡/ÇňüMŒ*d¬Är“OÕƒ¿©F5òËÇ8H…Œÿ—Vó?áÿëéÓ´þï“g_ôÿ2øß®s—Æ8lýO.fÄ¿qãÙjŠÏ=Ü Ñ†7kd¬ý{¸-RîŠW1ˆ¢òFʶ·È†:í–c,G§La[“ûý¡8pjî"¦1>£`¹í)¤N„•6ñËCAÛC8ĺƒGz7#)ŸŒ~·gH¬Tû‡».¨èžƒ¦‡ïY ½=¸©ã;è›{ø&?g¡8…{+=tïMug¯z‚D<ƶë›~‰[1ªxÄWíÚºùå"r7¥#ÞìP#9°L×Xæ½N!ZMퟡ7lÀm圀–~ÏŒ£úÁ¥ÿkÒâÐØ]zÀpýúìqÆþãÛõÇ_èÿ_Ãþcž'Èðˆ#)’-A¤âwáCkw‹a¾™HZÖÄb¥î I,½kéÎ1uIa=±))+1u'±¹f¡œÞ•¨¸Ž¡¤J‚{\=9¨þ|æ+ùGÒò&~ÕàB*¶mQ8ϵ9›Í3Råú3UÛ…å,‘¦Î’éÅhke)L#*»è@«Â:zSWÌ•PN",Ô.¯¨?Š”˜Î`BoHøôÝËãã^y0„ñœñ ’xeüé7FºìÝÙþÁi|öÏãêÛc-äÜž'æ´^^ùYüQìA퀋µèºè}$Râ5´²d‰jÜÒ7â40Ž_´¨\ š"iËš’ãùYëw×ØfcÚ÷°6s$ñ—19ä†áQö$BSZ8)ìB|ìMÛZÊ(k¶2”µKñ¶u50О7ä„iq`yµV,·‹¸ºpçö΋Ë7óbè}ýËOŠ#ls΃oˆ‘ª².¾\†EAÃ"ÌPê*äÉ°"[;šLG0I±;¡¼PÒ˱¬X)ÛáËs3v¡Žù¹dò” tÎAË}R¢°ÿÏêÁÁÑ?Œõ9JògHØšªÕÃÏĨô[f-â#) «Šè°Ø¦”¢Ö³£OÍ_ˆFD=ÎÃÏäëÌ·»w.ìœ(cTM¬/ÕüüÆãjµoÚ=M']9 ÍNÕzN`hÚ´›äÁÔvºÒVú,ØL*‰yÁRbëð4ôËoyƒÁûõ¶/3'dr^ô—“ºäÔ¹DšR‚_;¼ÎtJÄøÉ¢$?•…{Ç`—#éhe#4Óê¨ì`#*ïIº7´eø7ÐÿÃqOëAsŠH•êÍÍüu9ù¸VM¨Ø5Ž¤>µgD¦?úËèÎM…î®4ï`éÚ¶;w¸œê#—¼¹hÀÓl^ÙJ÷Z±ØU"8ͼ۫.HƒØ®Ð×vNª*Ùî=5§#)È¿h¦‹NïÙ\dT¬Ž–FeÁûQämæ6+—Êb«ZݱuMCNŽOvßìíŸP»"5‡tu’î„n?Úhg™d*VêŸâÉÜ_ÍÜêÑtbnAò+!ð!ò£ {* àÅñœWÆœËj+á[9ô„f—è”+r¶š«voù§£v³Û¹õ½I{<#)¦‚)Š$—`‘xØ\T®îÜyënÉÔn"ÞÔ£:zt“Ôëy˜ÂK(^·Éæ¨é*ýÙç¿&,Ä6^°þ™þžl<y¼žöÿóíú³/ç¿¿ˆÿ^LádÜh¶/Íë¼!Ùþ;Aæòy¾²bdŠEÑ~àQÇ#ÞÝÙ}SO÷ÿ«mÐ!Àr^ðñÑ1©ãøe¿#)‹wÊžf{Ý~wm<]/\ãÆE2ì¡û3æ#)ñf¸Õ·b±·N€õ§Ní#*›Þš„ÂNLê•P—yï&ì8σټê`îbè$2ÈK¢õöXs¿Ÿ'm|¿Dš5n’èW”÷·üGP<Åí÷ò‚\è–ÿÍ7üÈáßDðLé–wGO|‡Á3#4ÿ…Ÿ8ü¿èN$+~áäðŒ2Ï<ÿ·~DËvB¾t‚kÞù¤¾Rz±õÕÝòV oÝм»ngÀ?w¸Ý!Ï~lüU¶îbµÎŽæî¦}„H5#*•Se%8¯|M·ŒÓ¼»sZ½CûÛw°-ÃpX³~£i׫ø‹ hÇõó+EŠÒ™RUWQâv\_©•ïâsEâá éÚ·ÿrž¬` ü¤ªEɽ”5<üo¼r>`£a§ÒMàØ“ãµµÊÊ‹¯ïÖÎWà÷|eíî܇ž=?¯ÜÕ~l଴rîß°")ë½£³ƒƒTÏ঻ÕJþ‹þj#¼ :øÅËÌwG¥bT^{ä—‚çÛÅpìõßçw¿Ôê¿Â6^/4¯`–$M˜€ëþÖ:L2ë[˜ þÖw¡ò{˜ŽþÖ|èÀÏ0¥ð³ú0{6‡Ðrˆ²ýâÖãï?ß½ü®_8:Žü#¿°¿G®»ÎüÂéÙ l¾~a÷Í<4ýÂdxÓ‘=ªA¢¾‡;<:Fà…‘ú8.‹ëµÙÏu4оj϶a;;åW¨ç¾`àûi£·±]›¾ë ‚ÂÁʃ›WñvIu!ôêjàßá‡ÁÆöyk5¨UÛ”'”µ¾][-×a0Zœc§7lL °óŠ³¤T›jå¼Bq¬´VÚà…N½‘JýËÄÔ+NêÍüÔ›nêas²½¾BU¬o«Zb»7u»¡›`d^Kµ_Šççõ;h9Ïß^%ø¾¼µ¼u÷üyt·½ÝAàÿðz÷|ùî9„cð~X=_…?Ñ]¹|WÞ¾+CÈJt·¸[†¿ÛwQt÷Í7wßÀø?ü¿Dw[Ûw¢»¯¾º«—΃ó_Ï?"$Åóíóí—ó•óÕo¢G_ý.¯—!ð¿Ï+u?$L&cMÛ+ëN¤&µ"6y9Ù^NyŽ0GpD¦‰®ßÔtד+Ô3)¨bÐßhⱸ݊`ª¸¼E“–HÐ(x›ú…äº;á³Ü=À~Õ+õIòõÅÞ™|TúŒ"Í7G@ßó§ðfMTIŽpƒYñÖ¼e »«^þ>îmoã¯÷<ò¶á?xŽ"ï’ìo¼; ù7ð€”:„‡Ô3Âä¶OŠ#4íÁ´ªim`ÁQÓÃö5Ö¡6G3iLkÚl#Æ[Rºiôâ#*”Å›ôwH(ç"\hDë«A‹Î 7µ ¡!<E0‰I³™ŸæB§ÙÄãpÄeRO¶ —©›QcùBD@ºªBWíв#4-Û¡+*tÅ]S¡kvè/*ô;þã`¬i#Š.ëã¢Âáƒl¢œþÎN§ã蔊Qœ¼¾±ò¢Ý™3ûÆÎìÉÄàÜð#)ïd÷(RQab?r[ñ‹Š9s«ø‹ë¹ÓÏÝ,ž;ßœOÛö§m÷““åv*K•gãùs»¶U†ííKb#4,”ZfM£³ºgwK™TT™Ø*Çá<ýv4¹õPPCÒUI‡bTÞPOŠ°)Pw)ŠŽŽEëï*Uòd:˜ h}Dþ‹ºüÃöÝçhÅ(•ÿ™<»ÚœQg»¤s|ƒÉ ™—9[1?ÐEŠ±vÊØžúͪ¢ÑªdÔ•£$•×=cÒhó€Œò9jfbs0A :*Œƒˆ€ýÛcêôÚÆV·Ø؇ڻº±UתC7zI[h¼jàj阼̗$«('ª*ͦk~yÃ1#*„ ”Jë<=8Oœ§Œ¨2ÁÖÙ¼þûÁyý·ÊÄä!½Ÿ×ùJÉm8b'J=VMR ªÌ"à£,!äM(å›Ä`YQÖí(\EÕXPµôÔ4øÍk3ÀÅ—Ó—A&K3Ãjõ‡,Ø03ã¬iëN¹éµ½þg¬í‡¬[iKGºŸ$üþÕŽÊÔ2yÙpþê·Êɉf‰ÙnÎ]<î°säÈ^ê8(‡› ·ÌZ Ï#¨¯ª ú¦ž.<\›ôxåõ,Äy}CüÕÍf};â§ú笪éMøðxn?Ñ×ti›!¥¹Ù¼§¼ ¤ ª÷Ǻü¼žh*Z,Ëô…Å[¶h¨Õa¯fM"4Ž³ª#)#0“L©ûï¶JK¦#*(‚† Æ7#*[ .UÅ"t%Fo¢‘b%¥ÉF8Ù$¡Ò†#)!¬î±íGÇÄFM6åxå#*xPÞ‹8‘NŒY’˜€0?ü$-}r“ÃW»¡ÔXwoÍ-ØÆ<BÉíðZCq¡xÝöej(åƀ礴ÖtïÞ7jõU(|£îŒ‘ôôʯ“ð¢@[D¼‘àåѹ•³6ªÐ¥¢œ¢Š4c[ížgh"‘Ù¤MÎMk»â¹Éæ#*ˆÄI"š@9:ßö÷õ ‰'f.ãÀ¢¶nesë–‰óùj¦?/Ú„¹s‘Û‰ö7bs$îx85KÄt T–=O#¼ˆÚ3”çNPØ6ª8XËÐKtoôÄNLfCôžéo0á²åš¯ëõwmŒãô,œÓ§gX$3wÚb=oWu- {«OFLCúí `ÝE?R2(Ù}±1§TÙa3¶#wúæ36j“(yd:‡ë³tIÈu“+„êô—…üÏ›ý¸!u¹'3?X–Î=U }È!4úª}ših˜Á™ÃÚX{å‚e`-+;cÃÐRq¸S%¥$¢A¼¬œ4$,ЦÃM‘ª¯ÊÍ€|ápjE#õ9È93Y™†N¦ä02›ñ|†–"ÔÌt@úÖˆÜ[£Ì¥Œ`îé0;î}}›3ïm+¦b_ï¡`ýFõja¦ì#4ZåÒTè™x‚>¢#›DЧ9óó_4?™6¨)ªV’PŒåÎKjÅW6ßü¯Õ#*;3Ú¤%‡Õº»÷;_6êH`TYÓð:‰pˆkú[ÍMV¯ë™#)m×cƒpÃü`6Yÿ²GÚ#*N©‰×r§é˜˜¾¥úÀ´e#Â8µòFÝZ¿«{>©¸4.qIÕ'Ê0xõVܨÚ3 ~Õlr<qAGæeÆOè€8þi'Þ9y}Çf)-Ý4bê–ši9ZèµÎViê3âØ‹æHv{Ô¹£I9™à)Ëj££2²ŸT£´9p#)/%NN†£á¨äD¥ÚAŸÛVôÒŽ!ƒÌœÂ/O›'êËfÝ¡¼yìÎ\= n±÷ ‘oìûÑä¹6ž›ƒV#iG>®æ‚§÷s¬S‹gÛôòÖNÞʧê,—7ÂÈ9¼ÑÜ©l×v~euó̈Í`‹žåþòX3êîå@¼ÁMãó£ê¨Â궹‡˜Z=xˆðI°–<9[M†TÌ´1i‹,Iç#$Ȳׂµ¬YìEEQ,~³NŸ–µ<›.I‚G°ï1â¶Í•‹öID•§ýb&ò1¾W~Ð%"”Dð¯Ò#4,w¬96HË<³—윀&ÀˆôDhK&#aÀ„¿Av¢ öi^ýŠÇæbõAbî#%¢\RYãƒË“PzÖëŒrYg;³ãÙ‹aôîáR¦Ýb–w–¾ÁàJ[µÌ©™GŠzóùjF°«x&¨T*Z•©š.ÿéO(zÑY„CÔk#:Ι#*é»ßÔ6¯´™íz«#4ªÉb‘àÓuŒèÛhºx¹\ã¾EtY·”.Y bè1Rjã“<nÂZ’ Î{:ßk%ÿŒþ1¬cQ É襔ž—^lUV‚mR‡b ú˜ŠJHJ\þšZö#“¥MØX̘g}³½a)„C8žÔñgc‹ömÚŠR´gÞþSóQuLëNÚ¬˜‰üù `A]Ù“äD;u¥™e…-,Š6DÊ/\ ±aÀP[}ì}Å#åSC`%"í¹ÏŒ•×¶ï#*ð{šK¯ô0`T‚OAe,ÏÛ¾uíƒÐÊ…ßÖNƒeú,Šž«œÍÝÝ“ F‰ŠIÞ#*o0…Ã(æ#;죈´x,ľqKÆ´Ñ ómJ/‹ý-k–Cœ(zÂœ.Ä{Œ,?wNåª=ku/Ö«µ¥aÄÍz¸ñÌša™´à›•nB™”Ö#4VaÈ”¿i—°nãÄ=7Ã#*%÷R ¶»º¾[«Ýº[ˆ^’ð)TÕâˆáw¶±Ž²ùW·Ï¬EUkÖ‰ÿíÛÿßÞ³ö¶qc»_£_1WÙ‘ê‘jgû#)ŒN4u“ ͱÓ[@kdi«Ö«£G,,òß—çEÎp$¥›{[#*`k†<$_‡äy8eþ}Zš&ã™Eìw;ÖÊ©f ›2 ‹6”ixEépQö_@r7Î…éTL´Û±ªl&C4Í"6X·u:ÁiRîBÖΖp•ƒ\´Ë,’Âu"(»»#‡.úzm™Fn.‹UÞеe²1ž¡S]ƒ”§JvJFjFˆ(ŸË³Ë„V<, ú5ɘn J3@7buÊI(÷r<=Ö°PeÁ1JFª¥›ÝN¬S5'¬ƒÆR(ó1¸ê†·/âv¹¶å›ÉûîBq#*§$¥ëFó#)Bå(S.įe± Ab7¸ž®yGÁÌš&Q=fV˜®—ÑQ÷BÎ!uïÝ(5¦tŠóÙ"Ý°óÞÔšÍPVù÷Ù(Îb¶xx\ˆï“)ÔÖ¦wj .“MÏüàÍe£ø ôéö:ß´½*“@ô Ã6-Z³«_r²6´È2Ô>Íœ6&ª´â=V²#4ˆ¤@E¼â0…a´öÜ=6úuÍ|»oÃÑæ'µvÁ‚a.>Y@K#4Ï#)Q‡®#4°˜‚ÉÃÁJàзofµñã^;¡¼Ñ#)(I²)±þÔ \/ò¥3ºùPÂÈjäà&f¾¡2KÖDÜÿz&]0#*+½.ﺬe‘a0Ú,Újbsgj6G7.VØ*I¼CmnóMÚò1¬?ºg@k×3z¿ú:Kva'oÑ2a‰™ŒFã¡iX¥¥Ä¹Z—-8–`#)‚g³ë–üÕxè<ñü'sG˜E1ÀwbKÉjd=$¥‚j6m;uÁ],é‚®ù®C×Ãב,EþÌçÖp-68›`J%·&(v4mîè/ ´“Él+³Ýžö¾µT¯·\£ä$lj¸#)2Âæ Eê󟬛ÚS{3¥ÅÔ\sªRu¨¶=‡l‚60h¦^Wøñ›Z7IîÊ3Œ0á^a?ƒ¶nþ³_¡åŠ”ê!Õ°s‰W%6Ή`¢g&iÏ=eÄÙð”Ø´7'VÜaÜá'{®Ý-HÕvèQ`{7å^ŠÅ‰*+¨è¡c6pB\òÀðžeó´b¤[ ¶#)¬%k3°)xÈ`€sÊ2÷Û$èqÕ–ÜQ£»X]WÌ;à‘˜Á|ŽQ ¼m#í0'UgââÝ–‹hë×h¯…þö•ðòÒPÒzª]ÄÝ]hP)•Âª¼~#ZïgD aÝXÁ#4Ž(T,Ï)-=1ЫôQŸŽáá®Ý¯±1Åv€Û Ó*1A§"–ô¾j·^.B¸ˆ•ù<ÍdŒæM½®f<ž´1nSëc€¼^dìB7Œ¢±îR¶Í¥Áö#*#”Lþ¡¸èûå<ñ‡#*-”k$Ü®6Šø¡aò"ºî›L‡ÖêSðë2gnÊ`cvçHý/ÆÌ:’PW¿X*VˬRØ ‚DÓãS2‘µF`Û¢Mxà´äÙÙ”iIw&rXÁ¬™?K#4‰xüîì{3¤ÈŠ&H™•¶#4¤Í ~_¯Ö¹×Š)5Ô†4ñÔÎÄ]*,¸…[õÚ©ÊÑÞSx7Ÿ¦<ü´=E×óå¾f\¹k/íGÎÞ1ù{ªäÞé8]ËîAd¨Zµ¿d„cTôS9Dlöx•Çn3ʪ7v)Å”p:ÌÚ:~DÐ}¡BÂa#)ÜŸºK²‡*HüÄn~Oc¹aÆïE¨ºkw0Œh•"¨4)øà‘¬Á¥‹-„†;~ ?y¢i$UÖRfŸ§éï‚”.°'o)>0a. BERÁ³¼obÀÚiùØp®4guŽ «MÌã›´ÈÙãÜÔ¸WîC^ÑÕ'2R•B#bìºã'F¦„%E•H<ÔqŒJÆDVbûôp{L´OSàÈïˆó>8ð´*›GçÒÖ©'oiP¥‰Ïiìö¹‡Ð%äD×·vPxH®>é8’#)ð՜éð$ËZ6I xÒeV-åë7+D䈴ý[:t™Áˆú‹(·‡Æ©f•GZ#4ÏÁGË,õèå8×ÄzÞø#4ÝÚÈ] •O=¿ÔVsÓú$^²1îT†Óm;³ÿB±^Û‘êf:ïNQ?b;sÑb5¸ò5ÍÄü»»kÂ*ה⚧Q|ßG….n”%q¦LÇj€üQ¯„½o’|Ž*æ¤b¶@ݹ|{w‘MeD`EÈ;ç¹Ó9p芖øBœÌS{äijcY¿Â†qnU±*ï$Û”œâ9<ýÛ_äñí?›×ŸÞ#)èvû/¾<ùâ«ŠýÏì?ÿUìòˆ9/¡†ì¿<1\¹áÏ4Jv`Ä<(M“ ,Ûl¸7“Ûöô#*Zs Ö˜å>¨ý|JaVŠbqcx'güÒžùšeëzt§®Þ}G’NÕ”Œ·jJµg*Ö+ÃZ[š:=€)㳧“RÖ4úDå¼¾ru¥Ä]®s6púrhp›i<·p§¦ÀUar:ý˜½Á£™A¶Í#4iç˜3ÓâBd:…èQY åy©=—tŸ‚Yì§g/_<~sþìñÙë7gß?ÿ9%ZùÞ|1>#*¹ØúkÀö)•-¦OKxú6PÑOV/c'å0ýռiÕ£¢YžÞ¸M„©”3^ J|àGZc2<I›È°E'Åw²í=7å÷[èÔ¤ŒïGœß4Ã<°ÓÓ¼T”“±ÃÏßî¦Àðäwù cOå`Âñ¤Ýð¶ôú®çÞ ãøEøÆT¨ùÏ© ¹_.‰oa¼à“ËîûÂpçA›(ò L‘«Ùp=üý rR%T4D“íÚ¹‹,ðê-A¢1Ê@—æNƒßŽú¼1DŠ'ðt†lÞk§Kʼ4YºÀ]S%B*kÈ’N#)ÿ%Ãî”~“˜POéÂ&„ßœ°ÛƧ¦ôiJÔŸf=Ó'ªbÑ”®JLßåx—\ˆŸÊÛ‡MQO|ÀMéÛ(×~@¡ð¹ØÄÇ&¢/?N’ýw6§m> f¹qUCZÚxíi‰ä5«¥–׺–l~#;úíHé7º#j]ãÌ:îz„¬âR]ÁUÃÈú½mœÜÚ¦@«½²â¦æ–Ä@”¨i=Ãçº'u©x•bK ûcÈ1|Ž&7JÅöê8[åRØÁ_Ú¥*˜-¦â´ú⇳—o_œgç¯Þ¾yr–†—r‡ÃPkî„—ûÔ`Ëõ[¾[f!îjVdÃÜ°EÞò‹bKºnYôÀ<ð¹IÓ‘àâñ›§g©ÍW»3eƒ¯V¸ˆ1’ñHÕ—Ïl+³XNJnçÙPÌŽ#)(–—µZç覛ØÖQƒ¶•¦‚7Ów:×øæOø&ßüyß„â›?ýw:9Ãz«@§³æŒ½ÅÀ{Ð6ë5gífh?>°ü%Ö!!*A—¤:uáppÁ¬Ò*Åê_e²¦(<Qðí`—xõúâù«—çi±96Îв̋NßÑG.ýx1Ìš¨n§Ø]žujíýkDÀ„±J8#*c2õèÜÊôÿëç/˜þ¯Y‹Mm–f›yyp“Oú›˜‰2{p™,¥¥k;µbãÅ«'Šp8z¯D§Cï§=ïÓZ–#˜~Mv“Añ&xü6ïò 9jHË«MIÄϞ͋bDÒìèä€}µ·îÑd†šÍ®0‚óîæ}+ËÒ.×Ý/7µo¿±<jPP¹Á#¼ÒB/é•1}XÑíRƒ¬R«îîH¥i°3Zݹ`´t²[AZO^½x#*R‹çOž½x|¾¥ ßNAiQùSžžK;ò€Š:8+tXá¥#ÁïûuZ0\’sÕlïìdj´1÷ä„*ìN ßÿœ=q8é¹Tµ} ÿ„qá½Ã¶q#Þ½›Œãý˜Êµ]Kuöß^“müG¹ÿËqxj „8a^ÔÂ5¿ùŸN'zÄßÌ>ýa3b¦ÀDR÷Âaðš‚£è›G ýð(#*Ó‚_‰î£3ƒÙKC¾Gæ›`aXk}4#*nü~Â#)Gä‡Å…¯&ü9e\ø9•HØQè7Ÿ{è™õ|[“î"»¬ñL%ÚWP$o˜pí¢ïmà /Q!Œ`iXQ²,"Áè„K´…Ñn²Wô 2R\•2Íåò#*õUJyðûßQO^ú´Ø2Œ5TÝ,j›£×jvx$_xÍ#5ÄwŒq&¯CÒ?35ƒ»‹m·ÈÛq벪Åþ§Ç?>ÿîñ… Ÿ½z{ñúÃ.©ÆìI&xa¤20”×¼«ñPª¡áÜj´È¸¡ÔÑJyzy”|»ã‰W#*yÛè}±ŽŠ´ä£Ëá¸c€»OÈ'+£[äï@‚¶I`NÄ~[!™øU&†™ãa…A#)N—ÛÄØ/oˆ¡§[Ð{•@'…8G6-qI”ÄoçftÁ‚X^NI"y}ÈÃó$]=ô«xÔƒ$â~ß/¦Úeû#4ÊÍ÷(U—é7&¥€fpLÅùÙÅÅó—OÏ©¾{þ¦<¡köÙÕ0-‹©EÅ#*ÖিΣ«<ǹÍÔ%ꯖ³‰!$tÅM…Çh‹h¨7gœjYìÌ‹jÉ×r–Z¼RÌ&©Ïò³Ò¯l¯ÖŒP0‰·ôFÖwPV«9Š¦S¥$ÛF[#4°J6"42F)òl>[,Áò@«n`×TM„<Þΰ´lÔì‹IÔ¹–m^xúýýïQš>˜åtXl:&»·Ç4™,g ±±½°òÞÒs´÷N7ä¬|nßÆeeÝ$µ§óÞoΈÿûHîû#*HKc‰õlöc¾c‹½õjÈ[›…“ÇiÔ^ïe°áß`D¯Aº7+‘¯ö–oË5œÚŽÙêÔ5Ò•!Æ8÷ŽaGV2U!UÖîûÓÑÎ+ÌRá\Å#4H>f˜|üŸÌ9P¾›-x^3à{ÎhíÏgÚ•»§éï/r$û—”Ÿ³¼¸4m‡!K™Á²>᲌EÂíY#*˜™¯Pª#*ãÔÊ€í¾½}Oº’·ï{ñàý0¾°ef>qF„¨_W#8›MYì¡ûí«‹gt-ÈÜÉbuew¹=kˆ·‡¥OÆ.ïsè¿ùt0ÊY[µt‡X&KùŽÑÒ#Á<f"sn¢°u‘)*9ÉK>ûìö}›û8+N[!”iôd¾=º4lè#4”Â2c4TP3ÐÀX r»àbµIÅòˆ§ÖĹˆ•#c²`Çå1èÎåËùJ{Âe»Y³›;¾¬´¸ÉÇãP¦]G±ioÞ²£ßRïÊûƒî|éNnNa¦„Ÿ¦Ð“ºByq…î3ðœYL(vœ:°¡5 M¿5í!ìÁGUR<Ä‚V 9s-û«/Éhló]Ë©;Aï«•kÿ` r,.Ùóòo]݃?çÆ~«§×v=rrЦ.òbnZ&WþaY>"¨Á´Äðí$HéhOTb½Äç§i 4#)m¶¢ŸíÌX2h"ñB6AK¤=FvÛ.+°‰ˆ•;ÇJ:ÀÉðª^†7”t’Ah›HÂ!®EQœm&sFÞ’À“Øô¤‚°÷÷œ”MBdÐ=6[E!ºô‰ð†+f½µé-«¸wãÛ¡æw'ñ^–Õd_ŽíJ¤Œ¤jL¹çÂ6–üM*>qk¸úV’Üb¾+RßCeF2èñsâúx›''G9¶Î»¢äÒ²Ú$â²²²ÿïu˜g»àçÒøÄpqéVÆâ3Øãÿvxþ?Èßww´ü÷ñƒã¯¿(ûÿ<9>9Èÿ©å¿=Qmè}V¸z#)¤NúÅ>2Øþj‚ý×Íîw¼,zH/6PGGY®-á-¾¤µãÉÏ?Ûõöc&2coî-“•^êhöòñ‹³”sPx #4xj&hômñYÛEÚ¼c†K̾Ç}#*}æ¾ãÎ#)|ŽÏbwiO¾°3„~ëíWŠ 9ý&¬”%Ù\1CüúõëÇϲó‹4î<7»=de#4üŽa5Å€±pIäÀó‹#4U!߸ ÿ'˜ŒD’¼ŠB$!þyÆÇo~8{#A• ç!Ü›ª#4Ù_Ë1ÕØÅi¿Ô1ÓȦ_€WpH}ýúù“¸š¿#4Í#E˜ÿùÝüz5v…! +Ê|Ü7[öY\Íq‰9ÚtË@º~¼“{¡~ï1ýÂ~º¤DAÄxÖf¨xáÛà›=ö|X=ÿ4ë?ê>/>3a¤ÿïã㓯OÊëÿW†%8¬ÿæõÿ0ôþÇ?ìLûË“/ÿÈñÿà'_Uøÿ/¿þò0þÿ#4úŸ‹M¾§ávÎó%êuZ]ÏóA1šÃ!)‚~»‡‰Ý$/áëÍj:Í‹„Õ?YY”•Dù>¥aJíNfÃÕ8_ôbe7‰®\¨ä†}ë*ßu^v€°ÉõQ½®„‰ã7?ÚÖÍ#)ØwêdbáÇ@B˜üõ£,ulÝÌ»d3±ðãG)M½T‘1f|Ì›t7‘ø[A „b—wÃÕ›.³“Ã8¶!ßþø‡Ôo36á—æ°%â°ý,(,£< кƒÙ|êÝa^ŒÖy0#*HG™çÈP‚oõ¦ýa¿A¯sÀÖ]öñ½q¸‹ÿ…>(I½ºŽŠEˆ&ey(å4×ÂpðJš¡ÔE–…Ò:ù›ô¸=§û’ìóÑÚ&äèBÎí•£#)ñîhÈ=^à0òƒh74²d™»3Ÿê ½¤CT' #)%¸}‚B#)w¬u‰2\ã–"Q„Ü%3#){à¬n‚¯Óµé"¬Ÿxïc”ü7 .ò`94èËðPDè¾~þúŒD™S.À$È‹¢>›™âgó|êݬòåënó&«éh#)j™mt=À&I^ã„im²TL£ÎQ›®2æ]ºFð%ªˆ˜XüïMïÒ&ˆE -¶Âse²×‚¦Z:Q¤R¨Ô"I!§R¸ÉNU¬øŠÉyá~äºHê^±ó Üürf–¦_X!Ò3Â0?£äÖˆE:HP"jêÌðNŒÂµ›ÑÕ&jb¿Å‡«#*Y—Á‹§fì7ÛÛlÑWWRªÞÉeÃtÍ®• ¹ââ~¡‹ƒ1mà=€qm®-<j‹~Ó˜ÉÝ"xÅG%[žhL6€´B,Uïd7ÇÔÂ|¬Å¬_#)×ÏθDx·š=Ä)\êö^º,FùZ#*s”î#4L=Ú—t#)˜íEiX‰úEù´X¢¶ªÊ½£æä7©;^Üäºe`,Mú%•hφQö7qÂm·?!…T©¼ì¤üꊗËtgÖ´>í#)Üäƒ[<¦Ú•!œg©Ü#)‹%ÜLùAuåa;¦,õVá¹EÄáÒ’x\CnùW“Côj@„5ÑPs›…zU–„Ïú ÑPÔ”Ó@1Ž:·¡ÅH¸Ã~’Æ>dQ×}¸WÜ4¬ÔU*òEª?d`ƒ.!#*¬Û|CÚà<·šo²ÌĦOžàq()Õ€•róGÞäI=”¡}mÌ%ÈJe™e)¿51[ÚµÂx nCISº÷çóñÌV¡x4_ÏÆÃŒøBµB'Êœ9‹Á9 «ÍPÖš<|9°-Ömùx˜ê6ÅþŽÙ¯Ög·–ÛAC”ã¡#*"Ždîy§¦º:`‡?ËN·¥õW·‚L>7UnMù”œyæI ˜º#41æË|°üHPFX~ÓÉ‹ZlbAÀžg„#4ISŸ¸(}·*@~MZ¯—(#4áôʃR¦†ÝšçÅrÓr¹%Ž«oÛ‚Å ® ±_u–żü¢),XôÕxXW´ˆÇí]4ååMa^Ñ{ÍêæößåÙÉ®©§Ì°—ïƒ]ùæÓ!æ#4®Á¼ÎBû@7é»…÷Vr@b™Ž&?ö”MûѺ_´ãD”4v#*Pê*Ÿ!̈pYÎæ!<L0ဠX<u—OP<eĤX-ƒdX-±xmÜã&7¨mt hÜ“ÕsÜ7«à#*ȶºžaƒêgÎWw"XS@½AŽKº²õîB(I‡ÏXÖÛò¿"üžVÅÁ%ŠzØ`˜ß“’hœIÑp–“¨~~gŠ‹úÓ#*êD·VfÖ4I‡Å+Ë°/“™a¥j¤ÄŒ,Øj#*Ì#4øɶ9î@¯XÉ>¦\¸n¯Cµ¶^êî®RpKñ¬ˆ©l–ÿóÙˆÁ#)ïT•›‘=iÐä”MÔ® 1¤…’ÂÖÀ:ôá6ÎÜ7YR6ØCSÛMáW$#;¢Ð{o¶#ï"†‰Z*ã ÄEÜ&*:é~M@cRÁ¦ê]Ù¬2v .MìÅâ%`gÞZ¦SŽP±Ð)û×àÀŒÂ½7%ªÚÒ!ÎæÆJÉ~mµÑ÷*çŽ]’súÆô9rú”©?ðý^CžY8Ÿí'IHÒõ;Ë¡êI"«ú#*Âõå@&ŸŠŽ¼g¶6çiÔÜÃü׋,Ø›àdþ1ý_ãÖó¸ÃÜl°áDk˜D௣?Èñ,Æ#)â` óù\#4$%—¶“9Ø”ç×Kq/"q¤Œ““e~º-‚D'¼Ó‡^4zñjØoÊTuþ…œMÝP‹lBÍÁæY®~A”Ø#·ùtøx…›˜$¶ÝÍ÷mT5\ùXàDõSköˆÇSá]µžÁ‚0)¿é’ì|O^ºZRgµÖ#Ü ’f‘Ãi³#Ñ"|2Ü2¶b”2´²Å^–|¯U“ˆg…[§ß*4](¤BÀ¦c’qÇ£TAŠžSƒèˆúT¡x¥„cUj”z¦$…~cêÒ‹YþŠm)aýààɯ B$=I|)ÃëÝÝOu<ôÅÈÎÔX6#)ÇÃZéÜ, UëŠÖ—~tXèïéÙQ~'ëjÇËï`fÍÜt纟7WŠÕš#*ÔÌR£ÎM·”¾Ý<,WFú µ>q#)„ݸ0~º$CRäÖåH¯>f€š¾å)h>÷§pG€Ê<X`ZX#*dvÞgÎY6šbmÎwdǺ6¾ófT* x¬W&ÙÀ¬âUÈ5¬ ·ä |±ll6]•"ìˆzþJy„$'S²%÷ TyLaµÕ%žŒ/x` ÄiÙcJe¡P“'`±ÔFø6h͆8#¸ƒ¦òÖ˸;/#4åÎŽ$¼¡ëhª¯ª#**·u×ñW.´SaõNy[,ÕÅÓÃ{¤ùÒ€=))Ñ™ÓÚ·>ÂÊZV\¡ŒåóÑ¥3Ò4J©Ši”#4Ñ~ÑÚ¸9$Ë»Î*dŸÜg—G¥£mçÓÀ;M~]Í–9j£‰AN¶ÇéJ$ØvðôöÙãŸÎ2Ï`çškO°NâÖgÿZIŠšzI´C´Z•Z˜¬Â±½¥2k#)ܯS††2¥íNùNЊîK«IÓ™*õ#à”»ºóstÇnè¿UaHÃY´©å´ŽBÜX€O7p{¨]¹Àãéªz1žf)Õ]1Âá#)È#*’c4½žµâÏ"Ô9'ç[¤$g1|5‹Çs€Š#÷.~ÖßT³Æ½c(kñæ2³›wë_l³•°@…¢^ªÞ°›HÿÅ“çÀì,ãÓò¦0±S+ï)k!`pÝ(ð/ùÀ°—c]~~ çòÏé½M{€,Ê-èïælúäèâøöÒîô½•@ìÄšL0KÞ0ÿÖ<}㳩“ÒÏAôóðžÃsxÏá9<‡çðžÃsxÏá9<‡çðžÃsxÏá9<‡çðžÃsxÏá9<‡çðžOôü~._k#)¨#) +#<== diff --git a/poky/meta/recipes-graphics/fontconfig/fontconfig_2.12.6.bb b/poky/meta/recipes-graphics/fontconfig/fontconfig_2.12.6.bb index d4cbce80b4..cec524755d 100644 --- a/poky/meta/recipes-graphics/fontconfig/fontconfig_2.12.6.bb +++ b/poky/meta/recipes-graphics/fontconfig/fontconfig_2.12.6.bb @@ -35,9 +35,15 @@ do_configure_prepend() { rm -f ${S}/src/fcobjshash.h ${S}/src/fcobjshash.gperf } +do_install_append_class-target() { + # duplicate fc-cache for postinstall script + mkdir -p ${D}${libexecdir} + ln ${D}${bindir}/fc-cache ${D}${libexecdir}/${MLPREFIX}fc-cache +} + PACKAGES =+ "fontconfig-utils" FILES_${PN} =+ "${datadir}/xml/*" -FILES_fontconfig-utils = "${bindir}/*" +FILES_fontconfig-utils = "${bindir}/* ${libexecdir}/*" # Work around past breakage in debian.bbclass RPROVIDES_fontconfig-utils = "libfontconfig-utils" diff --git a/poky/meta/recipes-graphics/freetype/freetype_2.9.bb b/poky/meta/recipes-graphics/freetype/freetype_2.9.1.bb index da05916b36..1e6f66ee9f 100644 --- a/poky/meta/recipes-graphics/freetype/freetype_2.9.bb +++ b/poky/meta/recipes-graphics/freetype/freetype_2.9.1.bb @@ -13,15 +13,16 @@ LIC_FILES_CHKSUM = "file://docs/LICENSE.TXT;md5=4af6221506f202774ef74f64932878a1 file://docs/GPLv2.TXT;md5=8ef380476f642c20ebf40fecb0add2ec" SRC_URI = "${SOURCEFORGE_MIRROR}/freetype/freetype-${PV}.tar.bz2 \ - file://use-right-libtool.patch" + file://use-right-libtool.patch \ + " UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/freetype/files/freetype2/" UPSTREAM_CHECK_REGEX = "freetype-(?P<pver>\d+(\.\d+)+)" -SRC_URI[md5sum] = "513c403c110016fdc7e537216a642b1d" -SRC_URI[sha256sum] = "e6ffba3c8cef93f557d1f767d7bc3dee860ac7a3aaff588a521e081bc36f4c8a" +SRC_URI[md5sum] = "60ef7d8160cd4bf8cb118ee9d65367ca" +SRC_URI[sha256sum] = "db8d87ea720ea9d5edc5388fc7a0497bb11ba9fe972245e0f7f4c7e8b1e1e84d" -inherit autotools pkgconfig binconfig-disabled multilib_header +inherit autotools pkgconfig multilib_header # Adapt autotools to work with the minimal autoconf usage in freetype AUTOTOOLS_SCRIPT_PATH = "${S}/builds/unix" @@ -35,6 +36,7 @@ PACKAGECONFIG[bzip2] = "--with-bzip2,--without-bzip2,bzip2" PACKAGECONFIG[harfbuzz] = "--with-harfbuzz,--without-harfbuzz,harfbuzz" PACKAGECONFIG[pixmap] = "--with-png,--without-png,libpng" PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib" +PACKAGECONFIG[freetypeconfig] = "--enable-freetype-config=yes,--enable-freetype-config=no," EXTRA_OECONF = "CC_BUILD='${BUILD_CC}'" @@ -44,6 +46,4 @@ do_install_append() { oe_multilib_header freetype2/freetype/config/ftconfig.h } -BINCONFIG = "${bindir}/freetype-config" - BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-graphics/fstests/fstests_git.bb b/poky/meta/recipes-graphics/fstests/fstests_git.bb deleted file mode 100644 index 69f217830a..0000000000 --- a/poky/meta/recipes-graphics/fstests/fstests_git.bb +++ /dev/null @@ -1,19 +0,0 @@ -SUMMARY = "Various benchmarning tests for X" -HOMEPAGE = "http://www.o-hand.com" -SECTION = "devel" -LICENSE = "Zlib" -DEPENDS = "pango libxext libxft virtual/libx11 gtk+" - -SRCREV = "e5939ff608b95cdd4d0ab0e1935781ab9a276ac0" -PV = "0.1+git${SRCPV}" - -SRC_URI = "git://git.yoctoproject.org/${BPN}" -UPSTREAM_CHECK_COMMITS = "1" - -LIC_FILES_CHKSUM = "file://test-pango-gdk.c;endline=24;md5=1ee74ec851ecda57eb7ac6cc180f7655" - -S = "${WORKDIR}/git/tests" - -inherit autotools pkgconfig distro_features_check -# depends on virtual/libx11 -REQUIRED_DISTRO_FEATURES = "x11" diff --git a/poky/meta/recipes-graphics/harfbuzz/harfbuzz_1.7.5.bb b/poky/meta/recipes-graphics/harfbuzz/harfbuzz_1.8.8.bb index 0a9b029461..b904d93531 100644 --- a/poky/meta/recipes-graphics/harfbuzz/harfbuzz_1.7.5.bb +++ b/poky/meta/recipes-graphics/harfbuzz/harfbuzz_1.8.8.bb @@ -11,9 +11,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=e021dd6dda6ff1e6b1044002fc662b9b \ DEPENDS = "glib-2.0 cairo fontconfig freetype" SRC_URI = "http://www.freedesktop.org/software/harfbuzz/release/${BP}.tar.bz2" - -SRC_URI[md5sum] = "1466ab51fc5aaa6af4065936939cec62" -SRC_URI[sha256sum] = "84574e1b1f65ca694cb8fb6905309665c0368af18a312357f8ff886ee2f29563" +SRC_URI[md5sum] = "81dbce82d6471ec2b2a627ce02d03e5d" +SRC_URI[sha256sum] = "a8e5c86e4d99e1cc9865ec1b8e9b05b98e413c2a885cd11f8e9bb9502dd3e3a9" inherit autotools pkgconfig lib_package gtk-doc @@ -28,8 +27,16 @@ EXTRA_OECONF = " \ --without-graphite2 \ " +do_configure_prepend() { + # This is ancient and can get used instead of the patched one we ship, + # so delete it. In 1.8.9 this should be removed upstream. + rm -f ${S}/m4/pkg.m4 +} + PACKAGES =+ "${PN}-icu ${PN}-icu-dev" +LEAD_SONAME = "libharfbuzz.so" + FILES_${PN}-icu = "${libdir}/libharfbuzz-icu.so.*" FILES_${PN}-icu-dev = "${libdir}/libharfbuzz-icu.la \ ${libdir}/libharfbuzz-icu.so \ diff --git a/poky/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-package_qa-error.patch b/poky/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-package_qa-error.patch new file mode 100644 index 0000000000..44c2c768b2 --- /dev/null +++ b/poky/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-package_qa-error.patch @@ -0,0 +1,32 @@ +From 0a24f03a67425a7b58b3fd40d965c0c9801ae7a1 Mon Sep 17 00:00:00 2001 +From: Changqing Li <changqing.li@windriver.com> +Date: Mon, 27 Aug 2018 16:10:55 +0800 +Subject: [PATCH] libjpeg-turbo: fix package_qa error + +Fix package qa errors like below: +libjpeg.so.62.3.0 contains probably-redundant RPATH /usr/lib [useless-rpaths] +usr/bin/cjpeg contains probably-redundant RPATH /usr/lib + +Upstream-Status: Inappropriate[oe-specific] + +Signed-off-by: Changqing Li <changqing.li@windriver.com> +--- + CMakeLists.txt | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 1719522..682cef1 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -109,8 +109,6 @@ endif() + + include(cmakescripts/GNUInstallDirs.cmake) + +-set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR}) +- + macro(report_directory var) + if(CMAKE_INSTALL_${var} STREQUAL CMAKE_INSTALL_FULL_${var}) + message(STATUS "CMAKE_INSTALL_${var} = ${CMAKE_INSTALL_${var}}") +-- +2.7.4 + diff --git a/poky/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-wrongly-defined-define-HAVE_STDLIB.patch b/poky/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-wrongly-defined-define-HAVE_STDLIB.patch new file mode 100644 index 0000000000..16767ebb6b --- /dev/null +++ b/poky/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-wrongly-defined-define-HAVE_STDLIB.patch @@ -0,0 +1,119 @@ +From d301019d0f23d12b9666d3d88b0859067a4ade77 Mon Sep 17 00:00:00 2001 +From: Changqing Li <changqing.li@windriver.com> +Date: Thu, 30 Aug 2018 15:08:23 +0800 +Subject: [PATCH] libjpeg-turbo: fix wrongly defined define HAVE_STDLIB_H + +when change build system from autotools to cmake, below +part is replace wrongly: + +"#undef HAVE_STDLIB_H" +should be change to "#cmakedefine HAVE_STDLIB_H 1" +not "#cmakedefine HAVE_STDLIB_H" + +otherwise, even if stdlib.h is found, output file +of configure_file() will define like: #define HAVE_STDLIB_H +but we need it as #define HAVE_STDLIB_H 1, since for +different defination of HAVE_STDLIB_H will cause below error: +error: "HAVE_STDLIB_H" redefined [-Werror] + +Upstream-Status: Submitted[https://github.com/libjpeg-turbo/libjpeg-turbo/pull/275] + +Signed-off-by: Changqing Li <changqing.li@windriver.com> +--- + jconfig.h.in | 28 ++++++++++++++-------------- + jconfigint.h.in | 4 ++-- + 2 files changed, 16 insertions(+), 16 deletions(-) + +diff --git a/jconfig.h.in b/jconfig.h.in +index 2842754..18a69a4 100644 +--- a/jconfig.h.in ++++ b/jconfig.h.in +@@ -10,16 +10,16 @@ + #define LIBJPEG_TURBO_VERSION_NUMBER @LIBJPEG_TURBO_VERSION_NUMBER@ + + /* Support arithmetic encoding */ +-#cmakedefine C_ARITH_CODING_SUPPORTED ++#cmakedefine C_ARITH_CODING_SUPPORTED 1 + + /* Support arithmetic decoding */ +-#cmakedefine D_ARITH_CODING_SUPPORTED ++#cmakedefine D_ARITH_CODING_SUPPORTED 1 + + /* Support in-memory source/destination managers */ +-#cmakedefine MEM_SRCDST_SUPPORTED ++#cmakedefine MEM_SRCDST_SUPPORTED 1 + + /* Use accelerated SIMD routines. */ +-#cmakedefine WITH_SIMD ++#cmakedefine WITH_SIMD 1 + + /* + * Define BITS_IN_JSAMPLE as either +@@ -33,37 +33,37 @@ + #define BITS_IN_JSAMPLE @BITS_IN_JSAMPLE@ /* use 8 or 12 */ + + /* Define to 1 if you have the <locale.h> header file. */ +-#cmakedefine HAVE_LOCALE_H ++#cmakedefine HAVE_LOCALE_H 1 + + /* Define to 1 if you have the <stddef.h> header file. */ +-#cmakedefine HAVE_STDDEF_H ++#cmakedefine HAVE_STDDEF_H 1 + + /* Define to 1 if you have the <stdlib.h> header file. */ +-#cmakedefine HAVE_STDLIB_H ++#cmakedefine HAVE_STDLIB_H 1 + + /* Define if you need to include <sys/types.h> to get size_t. */ +-#cmakedefine NEED_SYS_TYPES_H ++#cmakedefine NEED_SYS_TYPES_H 1 + + /* Define if you have BSD-like bzero and bcopy in <strings.h> rather than + memset/memcpy in <string.h>. */ +-#cmakedefine NEED_BSD_STRINGS ++#cmakedefine NEED_BSD_STRINGS 1 + + /* Define to 1 if the system has the type `unsigned char'. */ +-#cmakedefine HAVE_UNSIGNED_CHAR ++#cmakedefine HAVE_UNSIGNED_CHAR 1 + + /* Define to 1 if the system has the type `unsigned short'. */ +-#cmakedefine HAVE_UNSIGNED_SHORT ++#cmakedefine HAVE_UNSIGNED_SHORT 1 + + /* Compiler does not support pointers to undefined structures. */ +-#cmakedefine INCOMPLETE_TYPES_BROKEN ++#cmakedefine INCOMPLETE_TYPES_BROKEN 1 + + /* Define if your (broken) compiler shifts signed values as if they were + unsigned. */ +-#cmakedefine RIGHT_SHIFT_IS_UNSIGNED ++#cmakedefine RIGHT_SHIFT_IS_UNSIGNED 1 + + /* Define to 1 if type `char' is unsigned and you are not using gcc. */ + #ifndef __CHAR_UNSIGNED__ +- #cmakedefine __CHAR_UNSIGNED__ ++ #cmakedefine __CHAR_UNSIGNED__ 1 + #endif + + /* Define to empty if `const' does not conform to ANSI C. */ +diff --git a/jconfigint.h.in b/jconfigint.h.in +index 55df053..6c898ac 100644 +--- a/jconfigint.h.in ++++ b/jconfigint.h.in +@@ -17,10 +17,10 @@ + #define SIZEOF_SIZE_T @SIZE_T@ + + /* Define if your compiler has __builtin_ctzl() and sizeof(unsigned long) == sizeof(size_t). */ +-#cmakedefine HAVE_BUILTIN_CTZL ++#cmakedefine HAVE_BUILTIN_CTZL 1 + + /* Define to 1 if you have the <intrin.h> header file. */ +-#cmakedefine HAVE_INTRIN_H ++#cmakedefine HAVE_INTRIN_H 1 + + #if defined(_MSC_VER) && defined(HAVE_INTRIN_H) + #if (SIZEOF_SIZE_T == 8) +-- +2.7.4 + diff --git a/poky/meta/recipes-graphics/jpeg/libjpeg-turbo_1.5.3.bb b/poky/meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.0.bb index 50a5ae0850..282bf95e8a 100644 --- a/poky/meta/recipes-graphics/jpeg/libjpeg-turbo_1.5.3.bb +++ b/poky/meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.0.bb @@ -4,16 +4,18 @@ HOMEPAGE = "http://libjpeg-turbo.org/" LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://cdjpeg.h;endline=13;md5=8184bcc7c4ac7b9edc6a7bc00f231d0b \ - file://jpeglib.h;endline=16;md5=f67d70e547a2662c079781c72f877f72 \ + file://jpeglib.h;endline=16;md5=7ea97dc83b0f59052ee837e61ef0e08f \ file://djpeg.c;endline=11;md5=c59e19811c006cb38f82d6477134d314 \ " DEPENDS_append_x86-64_class-target = " nasm-native" DEPENDS_append_x86_class-target = " nasm-native" -SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz" +SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz \ + file://0001-libjpeg-turbo-fix-package_qa-error.patch \ + file://0001-libjpeg-turbo-fix-wrongly-defined-define-HAVE_STDLIB.patch" -SRC_URI[md5sum] = "7c82f0f6a3130ec06b8a4d0b321cbca3" -SRC_URI[sha256sum] = "b24890e2bb46e12e72a79f7e965f409f4e16466d00e1dd15d93d73ee6b592523" +SRC_URI[md5sum] = "b12a3fcf1d078db38410f27718a91b83" +SRC_URI[sha256sum] = "778876105d0d316203c928fd2a0374c8c01f755d0a00b12a1c8934aeccff8868" UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/libjpeg-turbo/files/" UPSTREAM_CHECK_REGEX = "/libjpeg-turbo/files/(?P<pver>(\d+[\.\-_]*)+)/" @@ -25,28 +27,23 @@ RPROVIDES_${PN} += "jpeg" RREPLACES_${PN} += "jpeg" RCONFLICTS_${PN} += "jpeg" -inherit autotools pkgconfig +inherit cmake pkgconfig # Add nasm-native dependency consistently for all build arches is hard -EXTRA_OECONF_append_class-native = " --without-simd" +EXTRA_OECMAKE_append_class-native = " -DWITH_SIMD=False" # Work around missing x32 ABI support -EXTRA_OECONF_append_class-target = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", "--without-simd", "", d)}" +EXTRA_OECMAKE_append_class-target = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", "-DWITH_SIMD=False", "", d)}" # Work around missing non-floating point ABI support in MIPS -EXTRA_OECONF_append_class-target = " ${@bb.utils.contains("MIPSPKGSFX_FPU", "-nf", "--without-simd", "", d)}" +EXTRA_OECMAKE_append_class-target = " ${@bb.utils.contains("MIPSPKGSFX_FPU", "-nf", "-DWITH_SIMD=False", "", d)}" # Provide a workaround if Altivec unit is not present in PPC -EXTRA_OECONF_append_class-target_powerpc = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "--without-simd", d)}" -EXTRA_OECONF_append_class-target_powerpc64 = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "--without-simd", d)}" +EXTRA_OECMAKE_append_class-target_powerpc = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "-DWITH_SIMD=False", d)}" +EXTRA_OECMAKE_append_class-target_powerpc64 = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "-DWITH_SIMD=False", d)}" -def get_build_time(d): - if d.getVar('SOURCE_DATE_EPOCH') != None: - import datetime - return " --with-build-date="+ datetime.datetime.fromtimestamp(float(d.getVar('SOURCE_DATE_EPOCH'))).strftime("%Y%m%d") - return "" - -EXTRA_OECONF_append_class-target = "${@get_build_time(d)}" +DEBUG_OPTIMIZATION_append_armv4 = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}" +DEBUG_OPTIMIZATION_append_armv5 = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}" PACKAGES =+ "jpeg-tools libturbojpeg" diff --git a/poky/meta/recipes-graphics/kmscube/kmscube/detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch b/poky/meta/recipes-graphics/kmscube/kmscube/detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch index 3605446e44..611e541598 100644 --- a/poky/meta/recipes-graphics/kmscube/kmscube/detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch +++ b/poky/meta/recipes-graphics/kmscube/kmscube/detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch @@ -49,9 +49,9 @@ diff --git a/configure.ac b/configure.ac index 8397f7b..c7f1f4d 100644 --- a/configure.ac +++ b/configure.ac -@@ -65,5 +65,8 @@ if test "x$enable_gbm_modifiers" = xyes; then - AC_DEFINE(HAVE_GBM_MODIFIERS, 1, [Define if you can use GBM properties.]) +@@ -49,5 +49,8 @@ if test "x$HAVE_GST" = "xyes"; then fi + AM_CONDITIONAL(ENABLE_GST, [test "x$HAVE_GST" = "xyes"]) +AC_CHECK_LIB([gbm], [gbm_bo_map], [HAVE_GBM_BO_MAP=yes], []) +AM_CONDITIONAL(ENABLE_GBM_MAP, [test "x$HAVE_GBM_BO_MAP" = "xyes"]) @@ -99,12 +99,12 @@ diff --git a/kmscube.c b/kmscube.c index 3a2c4dd..276dc55 100644 --- a/kmscube.c +++ b/kmscube.c -@@ -142,7 +142,11 @@ int main(int argc, char *argv[]) +@@ -148,7 +148,11 @@ int main(int argc, char *argv[]) else if (mode == VIDEO) - egl = init_cube_video(gbm, video); + egl = init_cube_video(gbm, video, samples); else +#if HAVE_GBM_BO_MAP - egl = init_cube_tex(gbm, mode); + egl = init_cube_tex(gbm, mode, samples); +#else + printf("gbm_bo_map() support missing\n"); +#endif diff --git a/poky/meta/recipes-graphics/kmscube/kmscube_git.bb b/poky/meta/recipes-graphics/kmscube/kmscube_git.bb index 5b64ed6438..46aeeb0179 100644 --- a/poky/meta/recipes-graphics/kmscube/kmscube_git.bb +++ b/poky/meta/recipes-graphics/kmscube/kmscube_git.bb @@ -6,7 +6,7 @@ DEPENDS = "virtual/libgles2 virtual/egl libdrm gstreamer1.0 gstreamer1.0-plugins LIC_FILES_CHKSUM = "file://kmscube.c;beginline=1;endline=23;md5=8b309d4ee67b7315ff7381270dd631fb" -SRCREV = "0d8de4ce3a03f36af1817f9b0586d132ad2c5d2e" +SRCREV = "9dcce71e603616ee7a54707e932f962cdf8fb20a" SRC_URI = "git://anongit.freedesktop.org/mesa/kmscube;branch=master;protocol=git \ file://detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch" UPSTREAM_CHECK_COMMITS = "1" diff --git a/poky/meta/recipes-graphics/libepoxy/libepoxy/no-tests.patch b/poky/meta/recipes-graphics/libepoxy/libepoxy/no-tests.patch deleted file mode 100644 index d2b6c1a254..0000000000 --- a/poky/meta/recipes-graphics/libepoxy/libepoxy/no-tests.patch +++ /dev/null @@ -1,33 +0,0 @@ -Add option to disable tests. - -Upstream-Status: Submitted (https://github.com/anholt/libepoxy/pull/158) -Signed-off-by: Ross Burton <ross.burton@intel.com> - -diff --git a/meson.build b/meson.build -index b2ebaef..9632c7a 100644 ---- a/meson.build -+++ b/meson.build -@@ -242,7 +242,10 @@ libepoxy_inc = [ - - subdir('include/epoxy') - subdir('src') --subdir('test') -+ -+if get_option('tests') -+ subdir('test') -+endif - - if get_option('docs') - doxygen = find_program('doxygen', required: false) -diff --git a/meson_options.txt b/meson_options.txt -index b5d7c98..dc30e68 100644 ---- a/meson_options.txt -+++ b/meson_options.txt -@@ -15,3 +15,7 @@ option('x11', - type: 'boolean', - value: true, - description: 'Enable X11 support (GLX or EGL-X11)') -+option('tests', -+ type: 'boolean', -+ value: true, -+ description: 'Build the test suite') diff --git a/poky/meta/recipes-graphics/libepoxy/libepoxy_1.5.0.bb b/poky/meta/recipes-graphics/libepoxy/libepoxy_1.5.2.bb index 5ca0868c22..106721226b 100644 --- a/poky/meta/recipes-graphics/libepoxy/libepoxy_1.5.0.bb +++ b/poky/meta/recipes-graphics/libepoxy/libepoxy_1.5.2.bb @@ -6,10 +6,9 @@ LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=58ef4c80d401e07bd9ee8b6b58cf464b" SRC_URI = "https://github.com/anholt/${BPN}/releases/download/${PV}/${BP}.tar.xz \ - file://no-tests.patch \ " -SRC_URI[md5sum] = "63fe3847789258254dcd7e3fdb9e7f5e" -SRC_URI[sha256sum] = "4c94995398a6ebf691600dda2e9685a0cac261414175c2adf4645cdfab42a5d5" +SRC_URI[md5sum] = "4a6b9e581da229dee74c2263c84b1eca" +SRC_URI[sha256sum] = "a9562386519eb3fd7f03209f279f697a8cba520d3c155d6e253c3e138beca7d8" UPSTREAM_CHECK_URI = "https://github.com/anholt/libepoxy/releases" inherit meson pkgconfig distro_features_check diff --git a/poky/meta/recipes-graphics/libsdl2/libsdl2/more-gen-depends.patch b/poky/meta/recipes-graphics/libsdl2/libsdl2/more-gen-depends.patch new file mode 100644 index 0000000000..29076bf6cb --- /dev/null +++ b/poky/meta/recipes-graphics/libsdl2/libsdl2/more-gen-depends.patch @@ -0,0 +1,47 @@ +Many source files include e.g. wayland-protocols.h which should be found in the +sysroot but SDL wants to build its own headers from the XML definitions. + +However the rules to generate those headers are only dependencies of the +top-level libSDL2.la object so can be built in parallel with the rest of the +objects, which can lead to interesting errors if the header is parsed by the +compiler whilst it's being written by another process: + +| gen/wayland-client-protocol.h:3: error: unterminated #ifndef +| #ifndef WAYLAND_CLIENT_PROTOCOL_H + +Solve this by adding more dependencies so the generated files are built before +the primary objects. + +Upstream-Status: Pending +Signed-off-by: Ross Burton <ross.burton@intel.com> + +diff --git a/configure.in b/data/poky-tmp/master/work/corei7-64-poky-linux/libsdl2/2.0.8-r0/SDL2-2.0.8/configure.in +index 1c7e79338..ba07a4a4e 100644 +--- a/configure.in ++++ b/data/poky-tmp/master/work/corei7-64-poky-linux/libsdl2/2.0.8-r0/SDL2-2.0.8/configure.in +@@ -4011,7 +4011,7 @@ DEPENDS=`echo $SOURCES | tr ' ' '\n'` + for EXT in asm cc m c S; do + OBJECTS=`echo "$OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.'$EXT',$(objects)/\1.lo,g'` + DEPENDS=`echo "$DEPENDS" | sed "s,^\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.$EXT\\$,\\\\ +-\\$(objects)/\\2.lo: \\1/\\2.$EXT\\\\ ++\\$(objects)/\\2.lo: \\1/\\2.$EXT \\$(GEN_OBJECTS)\\\\ + \\$(RUN_CMD_CC)\\$(LIBTOOL) --tag=CC --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@,g"` + done + +@@ -4028,14 +4028,14 @@ SDLMAIN_OBJECTS=`echo $SDLMAIN_SOURCES` + SDLMAIN_DEPENDS=`echo $SDLMAIN_SOURCES` + SDLMAIN_OBJECTS=`echo "$SDLMAIN_OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.c,$(objects)/\1.lo,g'` + SDLMAIN_DEPENDS=`echo "$SDLMAIN_DEPENDS" | sed "s,\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.c,\\\\ +-\\$(objects)/\\2.lo: \\1/\\2.c\\\\ ++\\$(objects)/\\2.lo: \\1/\\2.c \\$(GEN_OBJECTS)\\\\ + \\$(RUN_CMD_CC)\\$(LIBTOOL) --tag=CC --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@,g"` + + SDLTEST_OBJECTS=`echo $SDLTEST_SOURCES` + SDLTEST_DEPENDS=`echo $SDLTEST_SOURCES` + SDLTEST_OBJECTS=`echo "$SDLTEST_OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.c,$(objects)/\1.lo,g'` + SDLTEST_DEPENDS=`echo "$SDLTEST_DEPENDS" | sed "s,\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.c,\\\\ +-\\$(objects)/\\2.lo: \\1/\\2.c\\\\ ++\\$(objects)/\\2.lo: \\1/\\2.c\\\\ \\$(GEN_OBJECTS)\\\\ + \\$(RUN_CMD_CC)\\$(LIBTOOL) --tag=CC --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@,g"` + + # Set runtime shared library paths as needed diff --git a/poky/meta/recipes-graphics/libsdl2/libsdl2_2.0.8.bb b/poky/meta/recipes-graphics/libsdl2/libsdl2_2.0.8.bb index 8092fad11e..812a9abf3c 100644 --- a/poky/meta/recipes-graphics/libsdl2/libsdl2_2.0.8.bb +++ b/poky/meta/recipes-graphics/libsdl2/libsdl2_2.0.8.bb @@ -12,11 +12,9 @@ LIC_FILES_CHKSUM = "file://COPYING.txt;md5=02ee26814dd044bd7838ae24e05b880f" PROVIDES = "virtual/libsdl2" -DEPENDS_class-nativesdk = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'virtual/nativesdk-libx11 nativesdk-libxrandr nativesdk-libxrender nativesdk-libxext', '', d)}" - -SRC_URI = " \ - http://www.libsdl.org/release/SDL2-${PV}.tar.gz \ - file://0001-GLES2-Get-sin-cos-out-of-vertex-shader.patch \ +SRC_URI = "http://www.libsdl.org/release/SDL2-${PV}.tar.gz \ + file://more-gen-depends.patch \ + file://0001-GLES2-Get-sin-cos-out-of-vertex-shader.patch \ " S = "${WORKDIR}/SDL2-${PV}" @@ -32,12 +30,15 @@ EXTRA_OECONF = "--disable-oss --disable-esd --disable-arts \ --enable-pthreads \ --enable-sdl-dlopen \ --disable-rpath \ + --disable-sndio \ " # opengl packageconfig factored out to make it easy for distros # and BSP layers to pick either (desktop) opengl, gles2, or no GL PACKAGECONFIG_GL ?= "${@bb.utils.filter('DISTRO_FEATURES', 'opengl', d)}" +PACKAGECONFIG_class-native = "x11" +PACKAGECONFIG_class-nativesdk = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" PACKAGECONFIG ??= " \ ${PACKAGECONFIG_GL} \ ${@bb.utils.filter('DISTRO_FEATURES', 'alsa directfb pulseaudio x11', d)} \ @@ -64,3 +65,5 @@ do_configure_prepend() { } FILES_${PN}-dev += "${libdir}/cmake" + +BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-graphics/libva/libva-utils_2.1.0.bb b/poky/meta/recipes-graphics/libva/libva-utils_2.2.0.bb index a8018ea728..e35085cb98 100644 --- a/poky/meta/recipes-graphics/libva/libva-utils_2.1.0.bb +++ b/poky/meta/recipes-graphics/libva/libva-utils_2.2.0.bb @@ -15,8 +15,8 @@ LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=b148fc8adf19dc9aec17cf9cd29a9a5e" SRC_URI = "https://github.com/intel/${BPN}/releases/download/${PV}/${BP}.tar.bz2" -SRC_URI[md5sum] = "6649be70390606651cb636320bfd43c6" -SRC_URI[sha256sum] = "f6a7790c3dcc56537372c90a83036a3136194a8b397e84e97bf9cc9254fa2c51" +SRC_URI[md5sum] = "93b58aa5b14c16f4bace8a45dc255ec9" +SRC_URI[sha256sum] = "ed7a6ed1fab657df4e83ea11f90310efcf31c27828f32d65351a28ca3c404dc0" UPSTREAM_CHECK_URI = "https://github.com/intel/libva-utils/releases" diff --git a/poky/meta/recipes-graphics/libva/libva_2.1.0.bb b/poky/meta/recipes-graphics/libva/libva_2.2.0.bb index d3cf6334ce..11e57e0eb8 100644 --- a/poky/meta/recipes-graphics/libva/libva_2.1.0.bb +++ b/poky/meta/recipes-graphics/libva/libva_2.2.0.bb @@ -19,8 +19,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=2e48940f94acb0af582e5ef03537800f" SRC_URI = "https://github.com/intel/${BPN}/releases/download/${PV}/${BP}.tar.bz2" -SRC_URI[md5sum] = "9d6e4f1d36c407566343e9dde5a972b8" -SRC_URI[sha256sum] = "f3fa953a11d3210c3a4ee79031abdbe0863d5ce13d9b3f93f315f1eec60a4b0f" +SRC_URI[md5sum] = "92d04ad1700136dc75b1e5f47516e704" +SRC_URI[sha256sum] = "6f6ca04c785544d30d315ef130a6aeb9435b75f934d7fbe0e4e9ba6084ce4ef2" UPSTREAM_CHECK_URI = "https://github.com/intel/libva/releases" diff --git a/poky/meta/recipes-graphics/mesa/files/0001-Makefile.vulkan.am-explictly-add-lib-expat-to-intel-.patch b/poky/meta/recipes-graphics/mesa/files/0001-Makefile.vulkan.am-explictly-add-lib-expat-to-intel-.patch deleted file mode 100644 index f908d46550..0000000000 --- a/poky/meta/recipes-graphics/mesa/files/0001-Makefile.vulkan.am-explictly-add-lib-expat-to-intel-.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 342311dbb190735b7b32ab20f81c1d8dbcfe717a Mon Sep 17 00:00:00 2001 -From: Hongxu Jia <hongxu.jia@windriver.com> -Date: Wed, 11 Oct 2017 15:40:42 +0800 -Subject: [PATCH] Makefile.vulkan.am: explictly add lib expat to intel - libvulkan's lib depends - -While built with "-fvisibility=default" -... -|i586-oe-linux-gcc ... -fvisibility=default ... -o common/.libs/common_libintel_common_la-gen_decoder.o -... - -It triggered the failure -... -|i586-oe-linux-g++ ... common/.libs/libintel_common.a ... -o vulkan/.libs/libvulkan_intel.so -|common/.libs/libintel_common.a(common_libintel_common_la-gen_decoder.o): -|In function `start_element': -|/usr/src/debug/mesa/2_17.1.7-r0/mesa-17.1.7/src/intel/common/gen_decoder.c:371: -undefined reference to `XML_GetCurrentLineNumber' -... - -explictly add EXPAT_LIBS to intel's VULKAN_LIB_DEPS - -Upstream-Status: Accepted -https://cgit.freedesktop.org/mesa/mesa/commit/?id=05fc62d89f59ce19a18bfd4e63a09624910d6caf - -Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> ---- - src/intel/Makefile.vulkan.am | 1 + - 1 file changed, 1 insertion(+) - -Index: mesa-17.3.6/src/intel/Makefile.vulkan.am -=================================================================== ---- mesa-17.3.6.orig/src/intel/Makefile.vulkan.am -+++ mesa-17.3.6/src/intel/Makefile.vulkan.am -@@ -144,6 +144,7 @@ VULKAN_LIB_DEPS = \ - $(LIBDRM_LIBS) \ - $(PTHREAD_LIBS) \ - $(DLOPEN_LIBS) \ -+ $(EXPAT_LIBS) \ - -lm - - if HAVE_PLATFORM_ANDROID diff --git a/poky/meta/recipes-graphics/mesa/files/0001-Simplify-wayland-scanner-lookup.patch b/poky/meta/recipes-graphics/mesa/files/0001-Simplify-wayland-scanner-lookup.patch new file mode 100644 index 0000000000..a50d2a2ba2 --- /dev/null +++ b/poky/meta/recipes-graphics/mesa/files/0001-Simplify-wayland-scanner-lookup.patch @@ -0,0 +1,39 @@ +From 7e8e0f8a8ac2425e19a2f340c9e3da9345f25940 Mon Sep 17 00:00:00 2001 +From: Jussi Kukkonen <jussi.kukkonen@intel.com> +Date: Tue, 15 Nov 2016 15:20:49 +0200 +Subject: [PATCH 1/6] Simplify wayland-scanner lookup +Organization: O.S. Systems Software LTDA. + +Don't use pkg-config to lookup the path of a binary that's in the path. + +Alternatively we'd have to prefix the path returned by pkg-config with +PKG_CONFIG_SYSROOT_DIR. + +Upstream-Status: Pending +Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> +Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> +--- + configure.ac | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 14f1af2b2f..916d0bd207 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1825,12 +1825,7 @@ for plat in $platforms; do + PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED]) + WAYLAND_PROTOCOLS_DATADIR=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols` + +- PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner], +- WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`, +- WAYLAND_SCANNER='') +- if test "x$WAYLAND_SCANNER" = x; then +- AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:]) +- fi ++ AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:]) + + if test "x$WAYLAND_SCANNER" = "x:"; then + AC_MSG_ERROR([wayland-scanner is needed to compile the wayland platform]) +-- +2.18.0 + diff --git a/poky/meta/recipes-graphics/mesa/files/0001-Use-wayland-scanner-in-the-path.patch b/poky/meta/recipes-graphics/mesa/files/0001-Use-wayland-scanner-in-the-path.patch deleted file mode 100644 index 2444b2846b..0000000000 --- a/poky/meta/recipes-graphics/mesa/files/0001-Use-wayland-scanner-in-the-path.patch +++ /dev/null @@ -1,34 +0,0 @@ -From c908f0c13ac81a3a52140f129a13b2bc997ff4ee Mon Sep 17 00:00:00 2001 -From: Jussi Kukkonen <jussi.kukkonen@intel.com> -Date: Tue, 15 Nov 2016 15:20:49 +0200 -Subject: [PATCH] Simplify wayland-scanner lookup - -Don't use pkg-config to lookup the path of a binary that's in the path. - -Alternatively we'd have to prefix the path returned by pkg-config with -PKG_CONFIG_SYSROOT_DIR. - -Upstream-Status: Pending -Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> ---- - configure.ac | 7 +------ - 1 file changed, 1 insertion(+), 6 deletions(-) - -Index: mesa-17.3.6/configure.ac -=================================================================== ---- mesa-17.3.6.orig/configure.ac -+++ mesa-17.3.6/configure.ac -@@ -1694,12 +1694,7 @@ if test "x$with_platforms" = xauto; then - with_platforms=$with_egl_platforms - fi - --PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner], -- WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`, -- WAYLAND_SCANNER='') --if test "x$WAYLAND_SCANNER" = x; then -- AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:]) --fi -+AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner]) - - PKG_CHECK_EXISTS([wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED], [have_wayland_protocols=yes], [have_wayland_protocols=no]) - if test "x$have_wayland_protocols" = xyes; then diff --git a/poky/meta/recipes-graphics/mesa/files/0001-st-dri-Initialise-modifier-to-INVALID-for-DRI2.patch b/poky/meta/recipes-graphics/mesa/files/0001-st-dri-Initialise-modifier-to-INVALID-for-DRI2.patch deleted file mode 100644 index 6aba7859ee..0000000000 --- a/poky/meta/recipes-graphics/mesa/files/0001-st-dri-Initialise-modifier-to-INVALID-for-DRI2.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 4cbecb61682a0ee426faaa03d824fc8fd7aef826 Mon Sep 17 00:00:00 2001 -From: Daniel Stone <daniels@collabora.com> -Date: Mon, 2 Apr 2018 13:20:34 +0100 -Subject: [PATCH] st/dri: Initialise modifier to INVALID for DRI2 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -When allocating a buffer for DRI2, set the modifier to INVALID to inform -the backend that we have no supplied modifiers and it should do its own -thing. The missed initialisation forced linear, even if the -implementation had made other decisions. - -This resulted in VC4 DRI2 clients failing with: - Modifier 0x0 vs. tiling (0x700000000000001) mismatch - -Signed-off-by: Daniel Stone <daniels@collabora.com> -Reported-by: Andreas Müller <schnitzeltony@gmail.com> -Reviewed-by: Eric Anholt <eric@anholt.net> -Fixes: 3f8513172ff6 ("gallium/winsys/drm: introduce modifier field to winsys_handle") - -Upstream-Status: Backport [1] - -[1] https://cgit.freedesktop.org/mesa/mesa/commit/?id=4cbecb61682a0ee426faaa03d824fc8fd7aef826 ---- - src/gallium/state_trackers/dri/dri2.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/gallium/state_trackers/dri/dri2.c b/src/gallium/state_trackers/dri/dri2.c -index 31d17d46c2..58a6757f03 100644 ---- a/src/gallium/state_trackers/dri/dri2.c -+++ b/src/gallium/state_trackers/dri/dri2.c -@@ -806,6 +806,7 @@ dri2_allocate_textures(struct dri_context *ctx, - whandle.handle = buf->name; - whandle.stride = buf->pitch; - whandle.offset = 0; -+ whandle.modifier = DRM_FORMAT_MOD_INVALID; - if (screen->can_share_buffer) - whandle.type = DRM_API_HANDLE_TYPE_SHARED; - else --- -2.14.3 - diff --git a/poky/meta/recipes-graphics/mesa/files/0002-hardware-gloat.patch b/poky/meta/recipes-graphics/mesa/files/0002-hardware-gloat.patch deleted file mode 100644 index 0e014dcc80..0000000000 --- a/poky/meta/recipes-graphics/mesa/files/0002-hardware-gloat.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 00bcd599310dc7fce4fe336ffd85902429051a0c Mon Sep 17 00:00:00 2001 -From: Igor Gnatenko <i.gnatenko.brain@gmail.com> -Date: Sun, 20 Mar 2016 13:27:04 +0100 -Subject: [PATCH 2/4] hardware gloat - -Upstream-Status: Inappropriate [not author] -Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com> ---- - src/gallium/drivers/llvmpipe/lp_screen.c | 7 +++++++ - src/gallium/drivers/softpipe/sp_screen.c | 7 +++++++ - 2 files changed, 14 insertions(+) - -diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c -index 4f61de8..3b0ec77 100644 ---- a/src/gallium/drivers/llvmpipe/lp_screen.c -+++ b/src/gallium/drivers/llvmpipe/lp_screen.c -@@ -411,6 +411,13 @@ llvmpipe_is_format_supported( struct pipe_screen *_screen, - if (!format_desc) - return FALSE; - -+ if ((bind & PIPE_BIND_RENDER_TARGET) && -+ format != PIPE_FORMAT_R9G9B9E5_FLOAT && -+ format != PIPE_FORMAT_R11G11B10_FLOAT && -+ util_format_is_float(format)) { -+ return FALSE; -+ } -+ - assert(target == PIPE_BUFFER || - target == PIPE_TEXTURE_1D || - target == PIPE_TEXTURE_1D_ARRAY || -diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c -index 031602b..c279120 100644 ---- a/src/gallium/drivers/softpipe/sp_screen.c -+++ b/src/gallium/drivers/softpipe/sp_screen.c -@@ -358,6 +358,13 @@ softpipe_is_format_supported( struct pipe_screen *screen, - if (!format_desc) - return FALSE; - -+ if ((bind & PIPE_BIND_RENDER_TARGET) && -+ format != PIPE_FORMAT_R9G9B9E5_FLOAT && -+ format != PIPE_FORMAT_R11G11B10_FLOAT && -+ util_format_is_float(format)) { -+ return FALSE; -+ } -+ - if (sample_count > 1) - return FALSE; - --- -2.7.4 - diff --git a/poky/meta/recipes-graphics/mesa/files/0001-winsys-svga-drm-Include-sys-types.h.patch b/poky/meta/recipes-graphics/mesa/files/0002-winsys-svga-drm-Include-sys-types.h.patch index 549b8671ab..ffb3bf7a63 100644 --- a/poky/meta/recipes-graphics/mesa/files/0001-winsys-svga-drm-Include-sys-types.h.patch +++ b/poky/meta/recipes-graphics/mesa/files/0002-winsys-svga-drm-Include-sys-types.h.patch @@ -1,7 +1,8 @@ -From d8750776404b1031d762966d0f551d13d2fe05a7 Mon Sep 17 00:00:00 2001 +From 7792f228991744a0396b8bf811e281dca86165d3 Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Wed, 16 Aug 2017 18:58:20 -0700 -Subject: [PATCH] winsys/svga/drm: Include sys/types.h +Subject: [PATCH 2/6] winsys/svga/drm: Include sys/types.h +Organization: O.S. Systems Software LTDA. vmw_screen.h uses dev_t which is defines in sys/types.h this header is required to be included for getting dev_t @@ -10,15 +11,14 @@ on glibc since sys/types.h is included through another system headers Signed-off-by: Khem Raj <raj.khem@gmail.com> +Upstream-Status: Backport [7dfdfbf8c37e52e7b9b09f7d1d434edad3ebc864] +Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> --- - -Upstream-Status: Submitted - src/gallium/winsys/svga/drm/vmw_screen.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gallium/winsys/svga/drm/vmw_screen.h b/src/gallium/winsys/svga/drm/vmw_screen.h -index 0ef8e84..2eda97e 100644 +index f21cabb51f..4c972fdaa9 100644 --- a/src/gallium/winsys/svga/drm/vmw_screen.h +++ b/src/gallium/winsys/svga/drm/vmw_screen.h @@ -41,6 +41,7 @@ @@ -30,5 +30,5 @@ index 0ef8e84..2eda97e 100644 #define VMW_GMR_POOL_SIZE (16*1024*1024) #define VMW_QUERY_POOL_SIZE (8192) -- -2.14.1 +2.18.0 diff --git a/poky/meta/recipes-graphics/mesa/files/llvm-config-version.patch b/poky/meta/recipes-graphics/mesa/files/0003-Properly-get-LLVM-version-when-using-LLVM-Git-releas.patch index fd79991aab..5e735ca105 100644 --- a/poky/meta/recipes-graphics/mesa/files/llvm-config-version.patch +++ b/poky/meta/recipes-graphics/mesa/files/0003-Properly-get-LLVM-version-when-using-LLVM-Git-releas.patch @@ -1,5 +1,8 @@ +From 8b42fb47138f91d9378439ab716bac7701e4e326 Mon Sep 17 00:00:00 2001 From: Otavio Salvador <otavio@ossystems.com.br> -Subject: [PATCH] Properly get LLVM version when using LLVM Git releases +Date: Tue, 5 Jun 2018 11:11:10 -0300 +Subject: [PATCH 3/6] Properly get LLVM version when using LLVM Git releases +Organization: O.S. Systems Software LTDA. $ llvm-config-host --version 5.0.0git-9a5c333388c @@ -15,10 +18,10 @@ Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac -index a02173f244..b107f04c2e 100644 +index 916d0bd207..dd172f1ebe 100644 --- a/configure.ac +++ b/configure.ac -@@ -995,7 +995,7 @@ strip_unwanted_llvm_flags() { +@@ -1090,7 +1090,7 @@ strip_unwanted_llvm_flags() { llvm_set_environment_variables() { if test "x$LLVM_CONFIG" != xno; then @@ -27,7 +30,7 @@ index a02173f244..b107f04c2e 100644 LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"` LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir` LLVM_LIBDIR=`$LLVM_CONFIG --libdir` -@@ -2644,7 +2644,7 @@ detect_old_buggy_llvm() { +@@ -2808,7 +2808,7 @@ detect_old_buggy_llvm() { dnl ourselves. dnl (See https://llvm.org/bugs/show_bug.cgi?id=6823) dnl We can't use $LLVM_VERSION because it has 'svn' stripped out, @@ -37,5 +40,5 @@ index a02173f244..b107f04c2e 100644 if test "x$llvm_have_one_so" = xyes; then -- -2.15.1 +2.18.0 diff --git a/poky/meta/recipes-graphics/mesa/files/Use-Python-3-to-execute-the-scripts.patch b/poky/meta/recipes-graphics/mesa/files/0004-Use-Python-3-to-execute-the-scripts.patch index 0b4aabf979..8953c4a18f 100644 --- a/poky/meta/recipes-graphics/mesa/files/Use-Python-3-to-execute-the-scripts.patch +++ b/poky/meta/recipes-graphics/mesa/files/0004-Use-Python-3-to-execute-the-scripts.patch @@ -1,7 +1,7 @@ -From 18c3e684a8259a0644214f88c7ead7fa31573fd9 Mon Sep 17 00:00:00 2001 +From ebe6077a1d74e56b28249f71e8760295fa846ed2 Mon Sep 17 00:00:00 2001 From: Otavio Salvador <otavio@ossystems.com.br> Date: Fri, 29 Dec 2017 10:27:59 -0200 -Subject: [PATCH] Use Python 3 to execute the scripts +Subject: [PATCH 4/6] Use Python 3 to execute the scripts Organization: O.S. Systems Software LTDA. The MESA build system uses Python 2 but as OE-Core has moved away from @@ -15,11 +15,11 @@ Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac -index b107f04c2e..055546142d 100644 +index dd172f1ebe..40cac36ac2 100644 --- a/configure.ac +++ b/configure.ac -@@ -114,7 +114,7 @@ AC_PROG_CXX - AM_PROG_CC_C_O +@@ -122,7 +122,7 @@ AM_PROG_CC_C_O + AC_PROG_NM AM_PROG_AS AX_CHECK_GNU_MAKE -AC_CHECK_PROGS([PYTHON2], [python2.7 python2 python]) @@ -28,5 +28,5 @@ index b107f04c2e..055546142d 100644 AC_PROG_MKDIR_P -- -2.15.1 +2.18.0 diff --git a/poky/meta/recipes-graphics/mesa/files/0005-dri-i965-Add-missing-time.h-include.patch b/poky/meta/recipes-graphics/mesa/files/0005-dri-i965-Add-missing-time.h-include.patch new file mode 100644 index 0000000000..d40e7b5855 --- /dev/null +++ b/poky/meta/recipes-graphics/mesa/files/0005-dri-i965-Add-missing-time.h-include.patch @@ -0,0 +1,36 @@ +From 9e0368af471af3a36e0eb526453f892598120065 Mon Sep 17 00:00:00 2001 +From: Otavio Salvador <otavio@ossystems.com.br> +Date: Wed, 6 Jun 2018 09:50:35 -0300 +Subject: [PATCH 5/6] dri: i965: Add missing time.h include +Organization: O.S. Systems Software LTDA. + +This fixes a build error when using musl: + +,---- +| In file included from .../src/mesa/drivers/dri/i965/intel_upload.c:33:0: +| .../src/mesa/drivers/dri/i965/brw_bufmgr.h:132:4: error: unknown type name 'time_t' +| time_t free_time; +| ^~~~~~ +`---- + +Upstream-Status: Backport [3c288da5eec81ee58b85927df18d9194ead8f5c2] +Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> +--- + src/mesa/drivers/dri/i965/brw_bufmgr.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/mesa/drivers/dri/i965/brw_bufmgr.h b/src/mesa/drivers/dri/i965/brw_bufmgr.h +index 68f5e0c2c8..5b60a23763 100644 +--- a/src/mesa/drivers/dri/i965/brw_bufmgr.h ++++ b/src/mesa/drivers/dri/i965/brw_bufmgr.h +@@ -37,6 +37,7 @@ + #include <stdbool.h> + #include <stdint.h> + #include <stdio.h> ++#include <time.h> + #include "util/u_atomic.h" + #include "util/list.h" + +-- +2.18.0 + diff --git a/poky/meta/recipes-graphics/mesa/files/0006-use-PKG_CHECK_VAR-for-defining-WAYLAND_PROTOCOLS_DAT.patch b/poky/meta/recipes-graphics/mesa/files/0006-use-PKG_CHECK_VAR-for-defining-WAYLAND_PROTOCOLS_DAT.patch new file mode 100644 index 0000000000..0212922c5d --- /dev/null +++ b/poky/meta/recipes-graphics/mesa/files/0006-use-PKG_CHECK_VAR-for-defining-WAYLAND_PROTOCOLS_DAT.patch @@ -0,0 +1,37 @@ +From 754ccf89a732fc3da6e9bc62ebd6b28686ff3d26 Mon Sep 17 00:00:00 2001 +From: Otavio Salvador <otavio@ossystems.com.br> +Date: Wed, 29 Aug 2018 22:10:30 -0300 +Subject: [PATCH 6/6] use PKG_CHECK_VAR for defining WAYLAND_PROTOCOLS_DATADIR +Organization: O.S. Systems Software LTDA. + +This allows to override the wayland-protocols pkgdatadir with the +WAYLAND_PROTOCOLS_DATADIR from environment. + +pkgconfig would return an absolute path in +/usr/share/wayland-protocols +for the pkgdatadir value, which is not suitable for cross-compiling. + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Upstream-Status: Pending + +Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 40cac36ac2..728bbdcbc4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1823,7 +1823,7 @@ for plat in $platforms; do + PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= $WAYLAND_REQUIRED]) + PKG_CHECK_MODULES([WAYLAND_SERVER], [wayland-server >= $WAYLAND_REQUIRED]) + PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED]) +- WAYLAND_PROTOCOLS_DATADIR=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols` ++ PKG_CHECK_VAR([WAYLAND_PROTOCOLS_DATADIR], [wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED], pkgdatadir) + + AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:]) + +-- +2.18.0 + diff --git a/poky/meta/recipes-graphics/mesa/files/disable-asm-on-non-gcc.patch b/poky/meta/recipes-graphics/mesa/files/disable-asm-on-non-gcc.patch deleted file mode 100644 index d2d67558b6..0000000000 --- a/poky/meta/recipes-graphics/mesa/files/disable-asm-on-non-gcc.patch +++ /dev/null @@ -1,29 +0,0 @@ -Configure checks for compiler to be gcc and then it enables asm_offsets -generation. see - -https://cgit.freedesktop.org/mesa/mesa/commit/?id=73c9b4b0e05fc66629ba250846948dc55c0e7a0d - -However, we missed the check when enabling this on cross compilation -when architecture for both host and target is x86 - -Fixes errors like -./gen_matypes > matypes.h -/bin/bash: ./gen_matypes: No such file or directory - --Khem - -Upstream-Status: Submitted - -Index: mesa-12.0.1/configure.ac -=================================================================== ---- mesa-12.0.1.orig/configure.ac -+++ mesa-12.0.1/configure.ac -@@ -732,7 +732,7 @@ test "x$enable_asm" = xno && AC_MSG_RESU - if test "x$enable_asm" = xyes -a "x$cross_compiling" = xyes; then - case "$host_cpu" in - i?86 | x86_64 | amd64) -- if test "x$host_cpu" != "x$target_cpu"; then -+ if test "x$host_cpu" != "x$target_cpu" -o "x$acv_mesa_CLANG" = xyes; then - enable_asm=no - AC_MSG_RESULT([no, cross compiling]) - fi diff --git a/poky/meta/recipes-graphics/mesa/mesa-gl_17.3.8.bb b/poky/meta/recipes-graphics/mesa/mesa-gl_18.1.9.bb index 73267eb4f0..73267eb4f0 100644 --- a/poky/meta/recipes-graphics/mesa/mesa-gl_17.3.8.bb +++ b/poky/meta/recipes-graphics/mesa/mesa-gl_18.1.9.bb diff --git a/poky/meta/recipes-graphics/mesa/mesa.inc b/poky/meta/recipes-graphics/mesa/mesa.inc index b501b7e726..0cc0a82de4 100644 --- a/poky/meta/recipes-graphics/mesa/mesa.inc +++ b/poky/meta/recipes-graphics/mesa/mesa.inc @@ -29,12 +29,16 @@ inherit autotools pkgconfig python3native gettext distro_features_check ANY_OF_DISTRO_FEATURES = "opengl vulkan" PLATFORMS ??= "${@bb.utils.filter('PACKAGECONFIG', 'x11 wayland', d)} \ - ${@bb.utils.contains('PACKAGECONFIG', 'gbm', 'drm', '', d)}" + ${@bb.utils.contains('PACKAGECONFIG', 'gbm', 'drm', '', d)} \ + surfaceless" export LLVM_CONFIG = "${STAGING_BINDIR_NATIVE}/llvm-config${MESA_LLVM_RELEASE}" export YOCTO_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR}/llvm${MESA_LLVM_RELEASE}/llvm-config" +export YOCTO_ALTERNATE_MULTILIB_NAME = "${base_libdir}" EXTRA_OECONF = "--enable-shared-glapi \ --disable-opencl \ + --enable-glx-read-only-text \ + PYTHON2=python2 \ --with-llvm-prefix=${STAGING_LIBDIR}/llvm${MESA_LLVM_RELEASE} \ --with-platforms='${PLATFORMS}'" @@ -47,7 +51,7 @@ PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland vulkan', d)} \ # "gbm" requires "dri", "opengl" PACKAGECONFIG[gbm] = "--enable-gbm,--disable-gbm" -X11_DEPS = "xf86driproto glproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes" +X11_DEPS = "xorgproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes" # "x11" requires "opengl" PACKAGECONFIG[x11] = "--enable-glx-tls,--disable-glx,${X11_DEPS}" PACKAGECONFIG[xvmc] = "--enable-xvmc,--disable-xvmc,libxvmc" @@ -57,8 +61,8 @@ DRIDRIVERS = "swrast" DRIDRIVERS_append_x86 = ",radeon,r200,nouveau,i965,i915" DRIDRIVERS_append_x86-64 = ",radeon,r200,nouveau,i965,i915" # "dri" requires "opengl" -PACKAGECONFIG[dri] = "--enable-dri --with-dri-drivers=${DRIDRIVERS}, --disable-dri, dri2proto libdrm" -PACKAGECONFIG[dri3] = "--enable-dri3, --disable-dri3, dri3proto presentproto libxshmfence" +PACKAGECONFIG[dri] = "--enable-dri --with-dri-drivers=${DRIDRIVERS}, --disable-dri, xorgproto libdrm" +PACKAGECONFIG[dri3] = "--enable-dri3, --disable-dri3, xorgproto libxshmfence" # Vulkan drivers need dri3 enabled # radeon could be enabled as well but requires gallium-llvm with llvm >= 3.9 @@ -87,6 +91,8 @@ GALLIUMDRIVERS_LLVM33_ENABLED = "${@oe.utils.version_less_or_equal('MESA_LLVM_RE GALLIUMDRIVERS_LLVM = "r300,svga,nouveau${@',${GALLIUMDRIVERS_LLVM33}' if ${GALLIUMDRIVERS_LLVM33_ENABLED} else ''}" GALLIUMDRIVERS_append_x86 = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',${GALLIUMDRIVERS_LLVM}', '', d)}" GALLIUMDRIVERS_append_x86-64 = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',${GALLIUMDRIVERS_LLVM}', '', d)}" +GALLIUMDRIVERS_append_x86 = ",virgl" +GALLIUMDRIVERS_append_x86-64 = ",virgl" # keep --with-gallium-drivers separate, because when only one of gallium versions is enabled, other 2 were adding --without-gallium-drivers PACKAGECONFIG[gallium] = "--enable-texture-float --with-gallium-drivers=${GALLIUMDRIVERS}, --without-gallium-drivers" MESA_LLVM_RELEASE ?= "6.0" @@ -100,10 +106,15 @@ PACKAGECONFIG[osmesa] = "--enable-${OSMESA},--disable-${OSMESA}" PACKAGECONFIG[unwind] = "--enable-libunwind,--disable-libunwind,libunwind" +EXTRA_OECONF_remove_libc-musl = "--enable-glx-tls" +EXTRA_OECONF_append_libc-musl = " --disable-glx-tls" +EXTRA_OECONF_append_libc-musl_x86 = " --disable-asm" + # llvmpipe is slow if compiled with -fomit-frame-pointer (e.g. -O2) FULL_OPTIMIZATION_append = " -fno-omit-frame-pointer" CFLAGS_append_armv5 = " -DMISSING_64BIT_ATOMICS" +EXTRA_OEMAKE += "WAYLAND_PROTOCOLS_DATADIR=${STAGING_DATADIR}/wayland-protocols" # Remove the mesa dependency on mesa-dev, as mesa is empty RDEPENDS_${PN}-dev = "" @@ -119,7 +130,6 @@ PACKAGES =+ "libegl-mesa libegl-mesa-dev \ libgles1-mesa libgles1-mesa-dev \ libgles2-mesa libgles2-mesa-dev \ libgles3-mesa libgles3-mesa-dev \ - libwayland-egl libwayland-egl-dev \ libxatracker libxatracker-dev \ mesa-megadriver mesa-vulkan-drivers \ " @@ -134,6 +144,11 @@ do_install_append () { # it was packaged in libdricore9.1.3-1 and preventing upgrades when debian.bbclass was used rm -f ${D}${sysconfdir}/drirc chrpath --delete ${D}${libdir}/dri/*_dri.so || true + + # libwayland-egl has been moved to wayland 1.15+ + rm -f ${D}${libdir}/libwayland-egl* + rm -f ${D}${libdir}/pkgconfig/wayland-egl.pc + rmdir --ignore-fail-on-non-empty ${D}${libdir}/pkgconfig } # For the packages that make up the OpenGL interfaces, inject variables so that @@ -204,7 +219,6 @@ FILES_libgles2-mesa = "${libdir}/libGLESv2.so.*" FILES_libgl-mesa = "${libdir}/libGL.so.*" FILES_libglapi = "${libdir}/libglapi.so.*" FILES_libosmesa = "${libdir}/libOSMesa.so.*" -FILES_libwayland-egl = "${libdir}/libwayland-egl.so.*" FILES_libxatracker = "${libdir}/libxatracker.so.*" FILES_${PN}-dev = "${libdir}/pkgconfig/dri.pc ${includedir}/vulkan" @@ -216,7 +230,6 @@ FILES_libgles1-mesa-dev = "${libdir}/libGLESv1*.* ${includedir}/GLES ${libdir}/p FILES_libgles2-mesa-dev = "${libdir}/libGLESv2.* ${includedir}/GLES2 ${libdir}/pkgconfig/glesv2.pc" FILES_libgles3-mesa-dev = "${includedir}/GLES3" FILES_libosmesa-dev = "${libdir}/libOSMesa.* ${includedir}/GL/osmesa.h ${libdir}/pkgconfig/osmesa.pc" -FILES_libwayland-egl-dev = "${libdir}/pkgconfig/wayland-egl.pc ${libdir}/libwayland-egl.*" FILES_libxatracker-dev = "${libdir}/libxatracker.so ${libdir}/libxatracker.la \ ${includedir}/xa_tracker.h ${includedir}/xa_composite.h ${includedir}/xa_context.h \ ${libdir}/pkgconfig/xatracker.pc" diff --git a/poky/meta/recipes-graphics/mesa/mesa_17.3.8.bb b/poky/meta/recipes-graphics/mesa/mesa_17.3.8.bb deleted file mode 100644 index 2d3fd3ca38..0000000000 --- a/poky/meta/recipes-graphics/mesa/mesa_17.3.8.bb +++ /dev/null @@ -1,23 +0,0 @@ -require ${BPN}.inc - -SRC_URI = "https://mesa.freedesktop.org/archive/mesa-${PV}.tar.xz \ - file://disable-asm-on-non-gcc.patch \ - file://Use-Python-3-to-execute-the-scripts.patch \ - file://0001-Use-wayland-scanner-in-the-path.patch \ - file://0002-hardware-gloat.patch \ - file://llvm-config-version.patch \ - file://0001-winsys-svga-drm-Include-sys-types.h.patch \ - file://0001-Makefile.vulkan.am-explictly-add-lib-expat-to-intel-.patch \ - file://0001-st-dri-Initialise-modifier-to-INVALID-for-DRI2.patch \ - " - -SRC_URI[md5sum] = "203d1a79156ab6926f2d253b377e9d9d" -SRC_URI[sha256sum] = "8f9d9bf281c48e4a8f5228816577263b4c655248dc7666e75034ab422951a6b1" - -#because we cannot rely on the fact that all apps will use pkgconfig, -#make eglplatform.h independent of MESA_EGL_NO_X11_HEADER -do_install_append() { - if ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'true', 'false', d)}; then - sed -i -e 's/^#if defined(MESA_EGL_NO_X11_HEADERS)$/#if defined(MESA_EGL_NO_X11_HEADERS) || ${@bb.utils.contains('PACKAGECONFIG', 'x11', '0', '1', d)}/' ${D}${includedir}/EGL/eglplatform.h - fi -} diff --git a/poky/meta/recipes-graphics/mesa/mesa_18.1.9.bb b/poky/meta/recipes-graphics/mesa/mesa_18.1.9.bb new file mode 100644 index 0000000000..86d6a6bf3a --- /dev/null +++ b/poky/meta/recipes-graphics/mesa/mesa_18.1.9.bb @@ -0,0 +1,21 @@ +require ${BPN}.inc + +SRC_URI = "https://mesa.freedesktop.org/archive/mesa-${PV}.tar.xz \ + file://0001-Simplify-wayland-scanner-lookup.patch \ + file://0002-winsys-svga-drm-Include-sys-types.h.patch \ + file://0003-Properly-get-LLVM-version-when-using-LLVM-Git-releas.patch \ + file://0004-Use-Python-3-to-execute-the-scripts.patch \ + file://0005-dri-i965-Add-missing-time.h-include.patch \ + file://0006-use-PKG_CHECK_VAR-for-defining-WAYLAND_PROTOCOLS_DAT.patch \ +" + +SRC_URI[md5sum] = "2f8d2098ab478bc3907e42130577b54a" +SRC_URI[sha256sum] = "55f5778d58a710a63d6635f000535768faf7db9e8144dc0f4fd1989f936c1a83" + +#because we cannot rely on the fact that all apps will use pkgconfig, +#make eglplatform.h independent of MESA_EGL_NO_X11_HEADER +do_install_append() { + if ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'true', 'false', d)}; then + sed -i -e 's/^#if defined(MESA_EGL_NO_X11_HEADERS)$/#if defined(MESA_EGL_NO_X11_HEADERS) || ${@bb.utils.contains('PACKAGECONFIG', 'x11', '0', '1', d)}/' ${D}${includedir}/EGL/eglplatform.h + fi +} diff --git a/poky/meta/recipes-graphics/pango/pango/0001-Drop-introspection-macros-from-acinclude.m4.patch b/poky/meta/recipes-graphics/pango/pango/0001-Drop-introspection-macros-from-acinclude.m4.patch deleted file mode 100644 index 9e1626e9a0..0000000000 --- a/poky/meta/recipes-graphics/pango/pango/0001-Drop-introspection-macros-from-acinclude.m4.patch +++ /dev/null @@ -1,120 +0,0 @@ -From 867a512eddbeb1899d3e7096df3da1dd0ce3e7b7 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Fri, 23 Oct 2015 14:06:17 +0300 -Subject: [PATCH] Drop introspection macros from acinclude.m4 - -They take precendence over our customized macros, and so -introspection doesn't work correctly. - -Upstream-Status: Backport [upstream 5ccfe0] -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - acinclude.m4 | 96 ------------------------------------------------------------ - 1 file changed, 96 deletions(-) - -diff --git a/acinclude.m4 b/acinclude.m4 -index 8899c7c..48fd5d8 100644 ---- a/acinclude.m4 -+++ b/acinclude.m4 -@@ -55,99 +55,3 @@ AC_DEFUN([JH_CHECK_XML_CATALOG], - ]) - - --dnl REMOVE THIS WHEN introspection.m4 is widely available --dnl --dnl -*- mode: autoconf -*- --dnl Copyright 2009 Johan Dahlin --dnl --dnl This file is free software; the author(s) gives unlimited --dnl permission to copy and/or distribute it, with or without --dnl modifications, as long as this notice is preserved. --dnl -- --# serial 1 -- --m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL], --[ -- AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first -- AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first -- AC_BEFORE([LT_INIT],[$0])dnl setup libtool first -- -- dnl enable/disable introspection -- m4_if([$2], [require], -- [dnl -- enable_introspection=yes -- ],[dnl -- AC_ARG_ENABLE(introspection, -- AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]], -- [Enable introspection for this build]),, -- [enable_introspection=auto]) -- ])dnl -- -- AC_MSG_CHECKING([for gobject-introspection]) -- -- dnl presence/version checking -- AS_CASE([$enable_introspection], -- [no], [dnl -- found_introspection="no (disabled, use --enable-introspection to enable)" -- ],dnl -- [yes],[dnl -- PKG_CHECK_EXISTS([gobject-introspection-1.0],, -- AC_MSG_ERROR([gobject-introspection-1.0 is not installed])) -- PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], -- found_introspection=yes, -- AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME])) -- ],dnl -- [auto],[dnl -- PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no) -- ],dnl -- [dnl -- AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@]) -- ])dnl -- -- AC_MSG_RESULT([$found_introspection]) -- -- INTROSPECTION_SCANNER= -- INTROSPECTION_COMPILER= -- INTROSPECTION_GENERATE= -- INTROSPECTION_GIRDIR= -- INTROSPECTION_TYPELIBDIR= -- if test "x$found_introspection" = "xyes"; then -- INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0` -- INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0` -- INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0` -- INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0` -- INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)" -- INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0` -- INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0` -- INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection -- fi -- AC_SUBST(INTROSPECTION_SCANNER) -- AC_SUBST(INTROSPECTION_COMPILER) -- AC_SUBST(INTROSPECTION_GENERATE) -- AC_SUBST(INTROSPECTION_GIRDIR) -- AC_SUBST(INTROSPECTION_TYPELIBDIR) -- AC_SUBST(INTROSPECTION_CFLAGS) -- AC_SUBST(INTROSPECTION_LIBS) -- AC_SUBST(INTROSPECTION_MAKEFILE) -- -- AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes") --]) -- -- --dnl Usage: --dnl GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version]) -- --AC_DEFUN([GOBJECT_INTROSPECTION_CHECK], --[ -- _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1]) --]) -- --dnl Usage: --dnl GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version]) -- -- --AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE], --[ -- _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require]) --]) --- -2.1.4 diff --git a/poky/meta/recipes-graphics/pango/pango_1.40.14.bb b/poky/meta/recipes-graphics/pango/pango_1.42.4.bb index 3bd9c64716..22fe3af15d 100644 --- a/poky/meta/recipes-graphics/pango/pango_1.40.14.bb +++ b/poky/meta/recipes-graphics/pango/pango_1.42.4.bb @@ -14,27 +14,22 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7" inherit gnomebase gtk-doc ptest-gnome upstream-version-is-even gobject-introspection SRC_URI += "file://run-ptest \ - file://0001-Drop-introspection-macros-from-acinclude.m4.patch \ file://0001-Enforce-recreation-of-docs-pango.types-it-is-build-c.patch \ " -SRC_URI[archive.md5sum] = "18d7eb8d52e7e445e733c109ddaa7b78" -SRC_URI[archive.sha256sum] = "90af1beaa7bf9e4c52db29ec251ec4fd0a8f2cc185d521ad1f88d01b3a6a17e3" +SRC_URI[archive.md5sum] = "deb171a31a3ad76342d5195a1b5bbc7c" +SRC_URI[archive.sha256sum] = "1d2b74cd63e8bd41961f2f8d952355aa0f9be6002b52c8aa7699d9f5da597c9d" -DEPENDS = "glib-2.0 glib-2.0-native fontconfig freetype virtual/libiconv cairo harfbuzz" +DEPENDS = "glib-2.0 glib-2.0-native fontconfig freetype virtual/libiconv cairo harfbuzz fribidi" PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" PACKAGECONFIG[x11] = "--with-xft,--without-xft,virtual/libx11 libxft" -EXTRA_OECONF = " \ - --disable-debug \ - " - LEAD_SONAME = "libpango-1.0*" LIBV = "1.8.0" # This binary needs to be compiled for the host architecture. This isn't pretty! do_compile_prepend_class-target () { - if ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'true', 'false', d)}; then + if ${@bb.utils.contains('PTEST_ENABLED', '1', 'true', 'false', d)}; then make CC="${BUILD_CC}" CFLAGS="" LDFLAGS="${BUILD_LDFLAGS}" AM_CPPFLAGS="$(pkg-config-native --cflags glib-2.0)" gen_all_unicode_LDADD="$(pkg-config-native --libs glib-2.0)" -C ${B}/tests gen-all-unicode fi } diff --git a/poky/meta/recipes-graphics/piglit/piglit/0001-cmake-use-proper-WAYLAND_INCLUDE_DIRS-variable.patch b/poky/meta/recipes-graphics/piglit/piglit/0001-cmake-use-proper-WAYLAND_INCLUDE_DIRS-variable.patch new file mode 100644 index 0000000000..5d6ec368ba --- /dev/null +++ b/poky/meta/recipes-graphics/piglit/piglit/0001-cmake-use-proper-WAYLAND_INCLUDE_DIRS-variable.patch @@ -0,0 +1,32 @@ +From 3bf1beee1ddd19bc536ff2856e04ac269d43daa2 Mon Sep 17 00:00:00 2001 +From: Pascal Bach <pascal.bach@siemens.com> +Date: Thu, 4 Oct 2018 14:43:17 +0200 +Subject: [PATCH] cmake: use proper WAYLAND_INCLUDE_DIRS variable + +WAYLAND_wayland-client_INCLUDEDIR is an internal variable and is not correctly +set when cross compiling. WAYLAND_INCLUDE_DIRS includes the correct path even +when cross compiling. + +Signed-off-by: Pascal Bach <pascal.bach@siemens.com> + +Upstream-Status: Submitted [piglit@lists.freedesktop.org] +--- + tests/util/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/util/CMakeLists.txt b/tests/util/CMakeLists.txt +index a5f080156..a303a9f58 100644 +--- a/tests/util/CMakeLists.txt ++++ b/tests/util/CMakeLists.txt +@@ -97,7 +97,7 @@ if(PIGLIT_USE_WAFFLE) + piglit-framework-gl/piglit_wl_framework.c + ) + list(APPEND UTIL_GL_INCLUDES +- ${WAYLAND_wayland-client_INCLUDEDIR} ++ ${WAYLAND_INCLUDE_DIRS} + ) + endif() + if(PIGLIT_HAS_X11) +-- +2.11.0 + diff --git a/poky/meta/recipes-graphics/piglit/piglit_git.bb b/poky/meta/recipes-graphics/piglit/piglit_git.bb index b936ad8a73..9e45751648 100644 --- a/poky/meta/recipes-graphics/piglit/piglit_git.bb +++ b/poky/meta/recipes-graphics/piglit/piglit_git.bb @@ -5,11 +5,12 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b2beded7103a3d8a442a2a0391d607b0" SRC_URI = "git://anongit.freedesktop.org/piglit \ file://0001-cmake-install-bash-completions-in-the-right-place.patch \ file://0001-tests-Use-FE_UPWARD-only-if-its-defined-in-fenv.h.patch \ + file://0001-cmake-use-proper-WAYLAND_INCLUDE_DIRS-variable.patch \ " UPSTREAM_CHECK_COMMITS = "1" -# From 2018-02-26 -SRCREV = "4ce0887e2f7f848d2be2e435a2d0f3c80e44ea3b" +# From 2018-08-13 +SRCREV = "57859e15dc8ba4034348b04d0b72f213b74d6347" # (when PV goes above 1.0 remove the trailing r) PV = "1.0+gitr${SRCPV}" @@ -17,7 +18,7 @@ S = "${WORKDIR}/git" DEPENDS = "libpng virtual/libx11 libxkbcommon libxrender waffle virtual/libgl libglu python3-mako-native python3-numpy-native python3-six-native virtual/egl" -inherit cmake python3native distro_features_check bash-completion +inherit cmake pkgconfig python3native distro_features_check bash-completion # depends on virtual/libx11 REQUIRED_DISTRO_FEATURES = "x11" diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-demos/0001-Don-t-build-demos-with-questionably-licensed-data.patch b/poky/meta/recipes-graphics/vulkan/vulkan-demos/0001-Don-t-build-demos-with-questionably-licensed-data.patch index d32c8f2803..93bcfbf851 100644 --- a/poky/meta/recipes-graphics/vulkan/vulkan-demos/0001-Don-t-build-demos-with-questionably-licensed-data.patch +++ b/poky/meta/recipes-graphics/vulkan/vulkan-demos/0001-Don-t-build-demos-with-questionably-licensed-data.patch @@ -1,6 +1,6 @@ -From 55770fb07c42fe410cf8d09f8f5976babc89b9ef Mon Sep 17 00:00:00 2001 -From: Jussi Kukkonen <jussi.kukkonen@intel.com> -Date: Tue, 4 Jul 2017 17:13:45 +0300 +From 0a27144d43b70121f57f6036514d069ca9d2b971 Mon Sep 17 00:00:00 2001 +From: "Maxin B. John" <maxin.john@intel.com> +Date: Mon, 30 Jul 2018 17:23:29 +0300 Subject: [PATCH] Don't build demos with questionably licensed data Some of the models don't have open source compatible licenses: @@ -9,43 +9,46 @@ resources that are not included. ssao: scenerendering: - Sibenik model, no license found + Sibenik model, no license found deferred: deferredmultisampling: deferredshadows: - armor model, CC-BY-3.0 + armor model, CC-BY-3.0 vulkanscene: imgui: shadowmapping: - vulkanscene model, no license found + vulkanscene model, no license found indirectdraw: - plant model, no license found + plant model, no license found hdr: pbribl: pbrtexture: - Require external Vulkan Asset Pack + Require external Vulkan Asset Pack Upstream-Status: Inappropriate [configuration] + Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> +Signed-off-by: Maxin B. John <maxin.john@intel.com> --- - CMakeLists.txt | 13 ------------- - 1 file changed, 13 deletions(-) + examples/CMakeLists.txt | 14 -------------- + 1 file changed, 14 deletions(-) -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 4958fff..0f9d3e4 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -150,17 +150,11 @@ set(EXAMPLES - computeparticles +diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt +index 8eee3a4..698d3b3 100644 +--- a/examples/CMakeLists.txt ++++ b/examples/CMakeLists.txt +@@ -47,18 +47,12 @@ set(EXAMPLES computeshader + conservativeraster debugmarker - deferred - deferredmultisampling - deferredshadows + descriptorsets displacement distancefieldfonts dynamicuniformbuffer @@ -53,32 +56,36 @@ index 4958fff..0f9d3e4 100644 geometryshader - hdr - imgui -- indirectdraw +- indirectdraw + inputattachments instancing mesh - multisampling -@@ -170,20 +164,14 @@ set(EXAMPLES +@@ -70,8 +64,6 @@ set(EXAMPLES parallaxmapping particlefire pbrbasic - pbribl - pbrtexture pipelines + pipelinestatistics pushconstants +@@ -79,15 +71,10 @@ set(EXAMPLES radialblur raytracing + renderheadless - scenerendering screenshot - shadowmapping - shadowmappingomni +- shadowmappingcascade skeletalanimation specializationconstants sphericalenvmapping - ssao + stencilbuffer subpasses terraintessellation - tessellation -@@ -196,7 +184,6 @@ set(EXAMPLES +@@ -101,7 +88,6 @@ set(EXAMPLES texturesparseresidency triangle viewportarray @@ -87,5 +94,5 @@ index 4958fff..0f9d3e4 100644 buildExamples() -- -2.13.2 +2.4.0 diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-demos/0001-Fix-build-on-x86.patch b/poky/meta/recipes-graphics/vulkan/vulkan-demos/0001-Fix-build-on-x86.patch deleted file mode 100644 index 681b3422d9..0000000000 --- a/poky/meta/recipes-graphics/vulkan/vulkan-demos/0001-Fix-build-on-x86.patch +++ /dev/null @@ -1,41 +0,0 @@ -From b0495efb6c3ea3a530fcbaddac86da57ecce5a66 Mon Sep 17 00:00:00 2001 -From: Jussi Kukkonen <jussi.kukkonen@intel.com> -Date: Mon, 10 Jul 2017 13:11:12 +0300 -Subject: [PATCH] Fix build on x86 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -| func_common.inl:193:51: error: wrong number of template arguments -| (5, should be 6) struct compute_sign<T, P, vecType, false, Aligned> - -The fix is backported from the upstream glm project. - -Upstream-Status: Pending [https://github.com/SaschaWillems/Vulkan/issues/356] -Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> ---- - external/glm/glm/detail/func_common.inl | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/external/glm/glm/detail/func_common.inl b/external/glm/glm/detail/func_common.inl -index cafaed5..2dd94e1 100644 ---- a/external/glm/glm/detail/func_common.inl -+++ b/external/glm/glm/detail/func_common.inl -@@ -190,12 +190,12 @@ namespace detail - - # if GLM_ARCH == GLM_ARCH_X86 - template<length_t L, typename T, precision P, template<length_t, typename, precision> class vecType, bool Aligned> -- struct compute_sign<T, P, vecType, false, Aligned> -+ struct compute_sign<L, T, P, vecType, false, Aligned> - { - GLM_FUNC_QUALIFIER static vecType<L, T, P> call(vecType<L, T, P> const & x) - { - T const Shift(static_cast<T>(sizeof(T) * 8 - 1)); -- vecType<L, T, P> const y(vecType<typename make_unsigned<T>::type, P>(-x) >> typename make_unsigned<T>::type(Shift)); -+ vecType<L, T, P> const y(vecType<L, typename make_unsigned<T>::type, P>(-x) >> typename make_unsigned<T>::type(Shift)); - - return (x >> Shift) | y; - } --- -2.1.4 - diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-demos/0001-Support-installing-demos-support-out-of-tree-builds.patch b/poky/meta/recipes-graphics/vulkan/vulkan-demos/0001-Support-installing-demos-support-out-of-tree-builds.patch deleted file mode 100644 index 4addea3bf1..0000000000 --- a/poky/meta/recipes-graphics/vulkan/vulkan-demos/0001-Support-installing-demos-support-out-of-tree-builds.patch +++ /dev/null @@ -1,85 +0,0 @@ -From edca667684764cfcc0460e448e834fadf623a887 Mon Sep 17 00:00:00 2001 -From: Jussi Kukkonen <jussi.kukkonen@intel.com> -Date: Mon, 3 Jul 2017 14:49:18 +0300 -Subject: [PATCH] Support installing demos, support out-of-tree builds - -This is especially useful for cross-compile situation where testing -happens on target. - --DRESOURCE_INSTALL_DIR=<path> decides where data is installed (and -where the binaries will load the data from): if it's left empty, -then nothing will be installed and binaries will load the data from -CMAKE_SOURCE_DIR. - -Binaries are now correctly built in CMAKE_BINARY_DIR. - -Upstream-Status: Submitted [https://github.com/SaschaWillems/Vulkan/pull/352] -Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> ---- - CMakeLists.txt | 15 ++++++++++++++- - base/vulkanexamplebase.cpp | 2 +- - 2 files changed, 15 insertions(+), 2 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index b9886bc..4958fff 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -16,6 +16,8 @@ include_directories(base) - OPTION(USE_D2D_WSI "Build the project using Direct to Display swapchain" OFF) - OPTION(USE_WAYLAND_WSI "Build the project using Wayland swapchain" OFF) - -+set(RESOURCE_INSTALL_DIR "" CACHE PATH "Path to install resources to (leave empty for running uninstalled)") -+ - # Use FindVulkan module added with CMAKE 3.7 - if (NOT CMAKE_VERSION VERSION_LESS 3.7.0) - message(STATUS "Using module to find Vulkan") -@@ -108,6 +110,10 @@ function(buildExample EXAMPLE_NAME) - add_executable(${EXAMPLE_NAME} ${MAIN_CPP} ${SOURCE} ${SHADERS}) - target_link_libraries(${EXAMPLE_NAME} ${Vulkan_LIBRARY} ${ASSIMP_LIBRARIES} ${WAYLAND_CLIENT_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) - endif(WIN32) -+ -+ if(RESOURCE_INSTALL_DIR) -+ install(TARGETS ${EXAMPLE_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR}) -+ endif() - endfunction(buildExample) - - # Build all examples -@@ -117,6 +123,13 @@ function(buildExamples) - endforeach(EXAMPLE) - endfunction(buildExamples) - -+if(RESOURCE_INSTALL_DIR) -+ add_definitions(-DVK_EXAMPLE_DATA_DIR=\"${RESOURCE_INSTALL_DIR}/\") -+ install(DIRECTORY data/ DESTINATION ${RESOURCE_INSTALL_DIR}/) -+else() -+ add_definitions(-DVK_EXAMPLE_DATA_DIR=\"${CMAKE_SOURCE_DIR}/data/\") -+endif() -+ - # Compiler specific stuff - IF(MSVC) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc") -@@ -128,7 +141,7 @@ ELSE(WIN32) - link_libraries(${XCB_LIBRARIES} ${Vulkan_LIBRARY}) - ENDIF(WIN32) - --set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin/") -+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/") - - set(EXAMPLES - bloom -diff --git a/base/vulkanexamplebase.cpp b/base/vulkanexamplebase.cpp -index 647368a..a0f28a5 100644 ---- a/base/vulkanexamplebase.cpp -+++ b/base/vulkanexamplebase.cpp -@@ -84,7 +84,7 @@ const std::string VulkanExampleBase::getAssetPath() - #if defined(__ANDROID__) - return ""; - #else -- return "./../data/"; -+ return VK_EXAMPLE_DATA_DIR; - #endif - } - #endif --- -2.13.2 - diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-demos_git.bb b/poky/meta/recipes-graphics/vulkan/vulkan-demos_git.bb index 5fc9c2dba7..bf30c980c0 100644 --- a/poky/meta/recipes-graphics/vulkan/vulkan-demos_git.bb +++ b/poky/meta/recipes-graphics/vulkan/vulkan-demos_git.bb @@ -3,15 +3,18 @@ LICENSE = "MIT" DEPENDS = "zlib" LIC_FILES_CHKSUM = "file://LICENSE.md;md5=dcf473723faabf17baa9b5f2207599d0 \ - file://triangle/triangle.cpp;endline=12;md5=bccd1bf9cadd9e10086cf7872157e4fa" + file://examples/triangle/triangle.cpp;endline=12;md5=bccd1bf9cadd9e10086cf7872157e4fa" + +SRCREV_glm = "01f9ab5b6d21e5062ac0f6e0f205c7fa2ca9d769" +SRCREV_gli = "8e43030b3e12bb58a4663d85adc5c752f89099c0" SRC_URI = "git://github.com/SaschaWillems/Vulkan.git \ - file://0001-Support-installing-demos-support-out-of-tree-builds.patch \ + git://github.com/g-truc/glm;destsuffix=git/external/glm;name=glm \ + git://github.com/g-truc/gli;destsuffix=git/external/gli;name=gli \ file://0001-Don-t-build-demos-with-questionably-licensed-data.patch \ - file://0001-Fix-build-on-x86.patch \ " UPSTREAM_CHECK_COMMITS = "1" -SRCREV = "18df00c7b4677b0889486e16977857aa987947e2" +SRCREV = "ae0b59c6e2e8630a2ae26f4a0b7a72cbe7547948" UPSTREAM_CHECK_GITTAGREGEX = "These are not the releases you're looking for" S = "${WORKDIR}/git" diff --git a/poky/meta/recipes-graphics/vulkan/vulkan/demos-Don-t-build-tri-or-cube.patch b/poky/meta/recipes-graphics/vulkan/vulkan/demos-Don-t-build-tri-or-cube.patch index bcf84a5a3e..b0b9fc4e43 100644 --- a/poky/meta/recipes-graphics/vulkan/vulkan/demos-Don-t-build-tri-or-cube.patch +++ b/poky/meta/recipes-graphics/vulkan/vulkan/demos-Don-t-build-tri-or-cube.patch @@ -1,21 +1,30 @@ -commit f63cbe944107b5cd8f150ceaaec43b26099d5688 +From 9b13be109bc66f4d4a1ad53ce5c92c7c495e41d7 Mon Sep 17 00:00:00 2001 +From: "Maxin B. John" <maxin.john@intel.com> +Date: Tue, 24 Jul 2018 17:40:52 +0300 +Subject: [PATCH] commit f63cbe944107b5cd8f150ceaaec43b26099d5688 + Author: Adam Jackson <ajax@redhat.com> Date: Tue Feb 16 10:05:25 2016 -0500 - demos: Don't build tri or cube - - There are more interesting demos, all we really want here is vulkaninfo. - This helps because we don't need to pre-build glslang/llvm/lunarglass - just to get the loader and layers. +demos: Don't build tri or cube + +There are more interesting demos, all we really want here is vulkaninfo. +This helps because we don't need to pre-build glslang/llvm/lunarglass +just to get the loader and layers. Upstream-Status: Inappropriate [configuration] + Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> +Signed-off-by: Maxin B. John <maxin.john@intel.com> +--- + demos/CMakeLists.txt | 88 ---------------------------------------------------- + 1 file changed, 88 deletions(-) -Index: git/demos/CMakeLists.txt -=================================================================== ---- git.orig/demos/CMakeLists.txt -+++ git/demos/CMakeLists.txt -@@ -63,46 +63,6 @@ elseif(UNIX) +diff --git a/demos/CMakeLists.txt b/demos/CMakeLists.txt +index 4f32679..26e4cdf 100644 +--- a/demos/CMakeLists.txt ++++ b/demos/CMakeLists.txt +@@ -93,42 +93,6 @@ elseif(UNIX) else() endif() @@ -37,38 +46,40 @@ Index: git/demos/CMakeLists.txt - endif() - endforeach() - -- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/demos/cube-vert.spv -- COMMAND ${GLSLANG_VALIDATOR} -s -V -o ${CMAKE_BINARY_DIR}/demos/cube-vert.spv ${PROJECT_SOURCE_DIR}/demos/cube.vert -- DEPENDS cube.vert ${GLSLANG_VALIDATOR} -- ) -- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/demos/cube-frag.spv -- COMMAND ${GLSLANG_VALIDATOR} -s -V -o ${CMAKE_BINARY_DIR}/demos/cube-frag.spv ${PROJECT_SOURCE_DIR}/demos/cube.frag -- DEPENDS cube.frag ${GLSLANG_VALIDATOR} -- ) - file(COPY cube.vcxproj.user DESTINATION ${CMAKE_BINARY_DIR}/demos) - file(COPY vulkaninfo.vcxproj.user DESTINATION ${CMAKE_BINARY_DIR}/demos) --else() -- if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR}) -- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/demos/cube-vert.spv -- COMMAND ${GLSLANG_VALIDATOR} -s -V -o cube-vert.spv ${PROJECT_SOURCE_DIR}/demos/cube.vert -- DEPENDS cube.vert ${GLSLANG_VALIDATOR} -- ) -- add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/demos/cube-frag.spv -- COMMAND ${GLSLANG_VALIDATOR} -s -V -o cube-frag.spv ${PROJECT_SOURCE_DIR}/demos/cube.frag -- DEPENDS cube.frag ${GLSLANG_VALIDATOR} -- ) -- endif() -endif() +- +-add_custom_command( +- COMMENT "Compiling cube demo vertex shader" +- OUTPUT cube.vert.inc +- COMMAND ${GLSLANG_VALIDATOR} -V -x -o ${CMAKE_CURRENT_BINARY_DIR}/cube.vert.inc ${PROJECT_SOURCE_DIR}/demos/cube.vert +- MAIN_DEPENDENCY ${PROJECT_SOURCE_DIR}/demos/cube.vert +- DEPENDS ${PROJECT_SOURCE_DIR}/demos/cube.vert ${GLSLANG_VALIDATOR} +-) +-add_custom_command( +- COMMENT "Compiling cube demo fragment shader" +- OUTPUT cube.frag.inc +- COMMAND ${GLSLANG_VALIDATOR} -V -x -o ${CMAKE_CURRENT_BINARY_DIR}/cube.frag.inc ${PROJECT_SOURCE_DIR}/demos/cube.frag +- MAIN_DEPENDENCY ${PROJECT_SOURCE_DIR}/demos/cube.frag +- DEPENDS ${PROJECT_SOURCE_DIR}/demos/cube.frag ${GLSLANG_VALIDATOR} +-) - if(WIN32) - include_directories ( -@@ -116,43 +76,6 @@ endif() - add_executable(${API_LOWERCASE}info vulkaninfo.c) - target_link_libraries(${API_LOWERCASE}info ${LIBRARIES}) + include_directories(${CMAKE_CURRENT_BINARY_DIR}) --if(NOT WIN32) +@@ -172,55 +136,3 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + install(TARGETS ${API_LOWERCASE}info DESTINATION ${CMAKE_INSTALL_BINDIR}) + endif() + endif() +- +-###################################################################################### +-# cube +- +-if(APPLE) +- include(macOS/cube/cube.cmake) +-elseif(NOT WIN32) - if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR}) -- add_executable(cube cube.c ${CMAKE_BINARY_DIR}/demos/cube-vert.spv ${CMAKE_BINARY_DIR}/demos/cube-frag.spv) +- add_executable(cube cube.c ${PROJECT_SOURCE_DIR}/demos/cube.vert ${PROJECT_SOURCE_DIR}/demos/cube.frag cube.vert.inc cube.frag.inc) - target_link_libraries(cube ${LIBRARIES}) - endif() -else() @@ -78,13 +89,18 @@ Index: git/demos/CMakeLists.txt - set (LIB_DIR "Win32") - endif() - -- add_executable(cube WIN32 cube.c ${CMAKE_BINARY_DIR}/demos/cube-vert.spv ${CMAKE_BINARY_DIR}/demos/cube-frag.spv) +- add_executable(cube WIN32 cube.c ${PROJECT_SOURCE_DIR}/demos/cube.vert ${PROJECT_SOURCE_DIR}/demos/cube.frag cube.vert.inc cube.frag.inc) - target_link_libraries(cube ${LIBRARIES}) -endif() - --if(NOT WIN32) +-###################################################################################### +-# cubepp +- +-if(APPLE) +- include(macOS/cubepp/cubepp.cmake) +-elseif(NOT WIN32) - if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR}) -- add_executable(cubepp cube.cpp ${CMAKE_BINARY_DIR}/demos/cube-vert.spv ${CMAKE_BINARY_DIR}/demos/cube-frag.spv) +- add_executable(cubepp cube.cpp ${PROJECT_SOURCE_DIR}/demos/cube.vert ${PROJECT_SOURCE_DIR}/demos/cube.frag cube.vert.inc cube.frag.inc) - target_link_libraries(cubepp ${LIBRARIES}) - endif() -else() @@ -94,15 +110,19 @@ Index: git/demos/CMakeLists.txt - set (LIB_DIR "Win32") - endif() - -- add_executable(cubepp WIN32 cube.cpp ${CMAKE_BINARY_DIR}/demos/cube-vert.spv ${CMAKE_BINARY_DIR}/demos/cube-frag.spv) +- add_executable(cubepp WIN32 cube.cpp ${PROJECT_SOURCE_DIR}/demos/cube.vert ${PROJECT_SOURCE_DIR}/demos/cube.frag cube.vert.inc cube.frag.inc) - target_link_libraries(cubepp ${LIBRARIES}) -endif() - +-###################################################################################### +-# smoke +- -if ((${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR})) -- if ((DEMOS_WSI_SELECTION STREQUAL "XCB") OR (DEMOS_WSI_SELECTION STREQUAL "WAYLAND") OR WIN32 OR (CMAKE_SYSTEM_NAME STREQUAL "Android")) +- if ((DEMOS_WSI_SELECTION STREQUAL "XCB") OR (DEMOS_WSI_SELECTION STREQUAL "WAYLAND") OR WIN32 OR +- (CMAKE_SYSTEM_NAME STREQUAL "Android") OR (CMAKE_SYSTEM_NAME STREQUAL "Darwin")) - add_subdirectory(smoke) - endif() -endif() - - if(UNIX) - if(INSTALL_LVL_FILES) +-- +2.4.0 + diff --git a/poky/meta/recipes-graphics/vulkan/vulkan_1.0.65.2.bb b/poky/meta/recipes-graphics/vulkan/vulkan_1.1.73.0.bb index 1c8a895504..5496f53967 100644 --- a/poky/meta/recipes-graphics/vulkan/vulkan_1.0.65.2.bb +++ b/poky/meta/recipes-graphics/vulkan/vulkan_1.1.73.0.bb @@ -9,11 +9,11 @@ SECTION = "libs" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=99c647ca3d4f6a4b9d8628f757aad156 \ - file://loader/loader.c;endline=25;md5=a87cd5442291c23d1fce4eece4cfde9d" -SRC_URI = "git://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers.git;branch=sdk-1.0.65 \ + file://loader/loader.c;endline=25;md5=151b392f46568aaedb4ad22b246237ec" +SRC_URI = "git://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers.git;branch=sdk-1.1.73 \ file://demos-Don-t-build-tri-or-cube.patch \ " -SRCREV = "73486a1a169d862d5210e2ad520d95319a2383fa" +SRCREV = "5998d6f444a85e6381b7a089ebf3f9e86482a31d" UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)" S = "${WORKDIR}/git" @@ -34,3 +34,4 @@ PACKAGECONFIG[x11] = "-DBUILD_WSI_XLIB_SUPPORT=ON -DBUILD_WSI_XCB_SUPPORT=ON -DD PACKAGECONFIG[wayland] = "-DBUILD_WSI_WAYLAND_SUPPORT=ON, -DBUILD_WSI_WAYLAND_SUPPORT=OFF, wayland" RRECOMMENDS_${PN} = "mesa-vulkan-drivers" +INSANE_SKIP_${PN}-dev += "dev-elf" diff --git a/poky/meta/recipes-graphics/wayland/libinput_1.9.4.bb b/poky/meta/recipes-graphics/wayland/libinput_1.11.3.bb index 67a49dfe0c..12e2091c0f 100644 --- a/poky/meta/recipes-graphics/wayland/libinput_1.9.4.bb +++ b/poky/meta/recipes-graphics/wayland/libinput_1.11.3.bb @@ -3,14 +3,14 @@ HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libinput/" SECTION = "libs" LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=2184aef38ff137ed33ce9a63b9d1eb8f" +LIC_FILES_CHKSUM = "file://COPYING;md5=1f2ea9ebff3a2c6d458faf58492efb63" DEPENDS = "libevdev udev mtdev" SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BP}.tar.xz \ " -SRC_URI[md5sum] = "8b43d07d1698fb207a0492fc67554d4f" -SRC_URI[sha256sum] = "0bcdbd4c4e3c2a2db322fbdf2ef3284f2e6d6fb7be3af80e6d8de7783f675190" +SRC_URI[md5sum] = "df6e877f11de4a9793511e9abfe7ef01" +SRC_URI[sha256sum] = "f31191d96e425b4f16319842279d65946d9d983dcd3d9e466ae1206aa10ecb06" UPSTREAM_CHECK_REGEX = "libinput-(?P<pver>\d+\.\d+\.(?!9\d+)\d+)" inherit meson pkgconfig lib_package diff --git a/poky/meta/recipes-graphics/wayland/wayland-protocols_1.13.bb b/poky/meta/recipes-graphics/wayland/wayland-protocols_1.16.bb index 1ef1ee1418..fc4b711172 100644 --- a/poky/meta/recipes-graphics/wayland/wayland-protocols_1.13.bb +++ b/poky/meta/recipes-graphics/wayland/wayland-protocols_1.16.bb @@ -11,8 +11,10 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=c7b12b6702da38ca028ace54aae3d484 \ SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \ " -SRC_URI[md5sum] = "29312149dafcd4a0e739ba94995a574d" -SRC_URI[sha256sum] = "0758bc8008d5332f431b2a84fea7de64d971ce270ed208206a098ff2ebc68f38" +SRC_URI[md5sum] = "e0b523ff162e30bab46be1d65d527683" +SRC_URI[sha256sum] = "6b1485951fdcd36a960c870c46f28b03a3e5121fb46246916333ed07f78c98c5" + +UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html" inherit allarch autotools pkgconfig diff --git a/poky/meta/recipes-graphics/wayland/wayland_1.14.0.bb b/poky/meta/recipes-graphics/wayland/wayland_1.16.0.bb index 1a9ff9807b..112ee1a25e 100644 --- a/poky/meta/recipes-graphics/wayland/wayland_1.14.0.bb +++ b/poky/meta/recipes-graphics/wayland/wayland_1.16.0.bb @@ -15,8 +15,10 @@ DEPENDS = "expat libxml2 libffi wayland-native" SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \ file://fixpathinpcfiles.patch \ " -SRC_URI[md5sum] = "0235f6075c32c3be61cff94fa0b9f108" -SRC_URI[sha256sum] = "ed80cabc0961a759a42092e2c39aabfc1ec9a13c86c98bbe2b812f008da27ab8" +SRC_URI[md5sum] = "0c215e53de71d6fb26f7102cdc6432d3" +SRC_URI[sha256sum] = "4e72c2b56109ccfb6610d776e465f4ca0af2280c9c2f7d5cc23f0ed2548752f5" + +UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html" inherit autotools pkgconfig diff --git a/poky/meta/recipes-graphics/wayland/weston-conf.bb b/poky/meta/recipes-graphics/wayland/weston-conf.bb new file mode 100644 index 0000000000..f52200c46a --- /dev/null +++ b/poky/meta/recipes-graphics/wayland/weston-conf.bb @@ -0,0 +1,35 @@ +SUMMARY = "Weston, a Wayland compositor, configuration files" +HOMEPAGE = "http://wayland.freedesktop.org" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +PACKAGE_ARCH = "${MACHINE_ARCH}" + +CONFFILES_${PN} = "${sysconfdir}/xdg/weston/weston.ini" + +FILES_${PN} = "${sysconfdir}/xdg/weston/weston.ini" + +PACKAGES = "${PN}" + +do_configure[noexec] = '1' +do_compile[noexec] = '1' + +do_install() { + : +} + +do_install_qemux86() { + mkdir -p ${D}/${sysconfdir}/xdg/weston + cat << EOF > ${D}/${sysconfdir}/xdg/weston/weston.ini +[core] +backend=fbdev-backend.so +EOF +} + +do_install_qemux86-64() { + mkdir -p ${D}/${sysconfdir}/xdg/weston + cat << EOF > ${D}/${sysconfdir}/xdg/weston/weston.ini +[core] +backend=fbdev-backend.so +EOF +} diff --git a/poky/meta/recipes-graphics/wayland/weston-init/weston.service b/poky/meta/recipes-graphics/wayland/weston-init/weston.service index 689ce41064..18f72626e0 100644 --- a/poky/meta/recipes-graphics/wayland/weston-init/weston.service +++ b/poky/meta/recipes-graphics/wayland/weston-init/weston.service @@ -4,6 +4,7 @@ RequiresMountsFor=/run [Service] User=root +PAMName=login EnvironmentFile=-/etc/default/weston ExecStart=/usr/bin/weston-start -v -e -- $OPTARGS diff --git a/poky/meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch b/poky/meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch index 0671a45044..09ec1559ec 100644 --- a/poky/meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch +++ b/poky/meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch @@ -1,26 +1,27 @@ -From c22e90365d89346258394833cbcad03ff32b2e27 Mon Sep 17 00:00:00 2001 +From ad1d2161c811cff25d1684c33611f300adb753bc Mon Sep 17 00:00:00 2001 From: Khem Raj <raj.khem@gmail.com> Date: Fri, 29 May 2015 20:56:00 -0700 -Subject: [PATCH weston] make error() portable +Subject: [PATCH] make error() portable error() is not posix but gnu extension so may not be available on all kind of systemsi e.g. musl. -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- Upstream-Status: Submitted - configure.ac | 2 ++ - libweston/weston-error.h | 20 ++++++++++++++++++++ - libweston/weston-launch.c | 2 +- +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +--- + configure.ac | 2 ++ + libweston/weston-error.h | 20 ++++++++++++++++++++ + libweston/weston-launch.c | 2 +- 3 files changed, 23 insertions(+), 1 deletion(-) - create mode 100644 src/weston-error.h + create mode 100644 libweston/weston-error.h -Index: weston-3.0.0/configure.ac -=================================================================== ---- weston-3.0.0.orig/configure.ac -+++ weston-3.0.0/configure.ac -@@ -103,6 +103,8 @@ AC_CHECK_DECL(CLOCK_MONOTONIC,[], +diff --git a/configure.ac b/configure.ac +index 7aebbdb..dc9c802 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -109,6 +109,8 @@ AC_CHECK_DECL(CLOCK_MONOTONIC,[], [[#include <time.h>]]) AC_CHECK_HEADERS([execinfo.h]) @@ -29,10 +30,11 @@ Index: weston-3.0.0/configure.ac AC_CHECK_FUNCS([mkostemp strchrnul initgroups posix_fallocate]) # check for libdrm as a build-time dependency only -Index: weston-3.0.0/libweston/weston-error.h -=================================================================== +diff --git a/libweston/weston-error.h b/libweston/weston-error.h +new file mode 100644 +index 0000000..2089d02 --- /dev/null -+++ weston-3.0.0/libweston/weston-error.h ++++ b/libweston/weston-error.h @@ -0,0 +1,20 @@ +#ifndef _WESTON_ERROR_H +#define _WESTON_ERROR_H @@ -54,10 +56,10 @@ Index: weston-3.0.0/libweston/weston-error.h + +#endif + -Index: weston-3.0.0/libweston/weston-launch.c -=================================================================== ---- weston-3.0.0.orig/libweston/weston-launch.c -+++ weston-3.0.0/libweston/weston-launch.c +diff --git a/libweston/weston-launch.c b/libweston/weston-launch.c +index 1adcf21..166bf3b 100644 +--- a/libweston/weston-launch.c ++++ b/libweston/weston-launch.c @@ -33,7 +33,6 @@ #include <poll.h> #include <errno.h> @@ -66,7 +68,7 @@ Index: weston-3.0.0/libweston/weston-launch.c #include <getopt.h> #include <sys/types.h> -@@ -60,6 +59,7 @@ +@@ -59,6 +58,7 @@ #endif #include "weston-launch.h" diff --git a/poky/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch b/poky/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch index 70b988898c..d648538b89 100644 --- a/poky/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch +++ b/poky/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch @@ -1,8 +1,7 @@ -From 8ff6ed03ec4079f32e9b34085414e57be4730e04 Mon Sep 17 00:00:00 2001 +From b98b9dbda902225cdd972b5bff6a641c36cc7e90 Mon Sep 17 00:00:00 2001 From: Tom Hochstein <tom.hochstein@nxp.com> Date: Wed, 22 Feb 2017 15:53:30 +0200 -Subject: [PATCH] weston-launch: Provide a default version that doesn't require - PAM +Subject: [PATCH] weston-launch: Provide a default version that doesn't require PAM weston-launch requires PAM for starting weston as a non-root user. @@ -14,16 +13,18 @@ Upstream-Status: Pending Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com> Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> +Signed-off-by: Denys Dmytriyenko <denys@ti.com> + --- configure.ac | 9 +++++++-- libweston/weston-launch.c | 20 ++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac -index 46cb2c7..bb45f46 100644 +index dc9c802..48cf5cb 100644 --- a/configure.ac +++ b/configure.ac -@@ -435,13 +435,17 @@ AC_ARG_ENABLE(resize-optimization, +@@ -451,13 +451,17 @@ AC_ARG_ENABLE(resize-optimization, AS_IF([test "x$enable_resize_optimization" = "xyes"], [AC_DEFINE([USE_RESIZE_POOL], [1], [Use resize memory pool as a performance optimization])]) @@ -43,7 +44,7 @@ index 46cb2c7..bb45f46 100644 fi AM_CONDITIONAL(HAVE_PANGO, test "x$have_pango" = "xyes") -@@ -701,6 +705,7 @@ AC_MSG_RESULT([ +@@ -702,6 +706,7 @@ AC_MSG_RESULT([ Enable developer documentation ${enable_devdocs} weston-launch utility ${enable_weston_launch} @@ -52,7 +53,7 @@ index 46cb2c7..bb45f46 100644 systemd notify support ${enable_systemd_notify} diff --git a/libweston/weston-launch.c b/libweston/weston-launch.c -index 0491896..07e7469 100644 +index 166bf3b..6fb9232 100644 --- a/libweston/weston-launch.c +++ b/libweston/weston-launch.c @@ -51,7 +51,9 @@ @@ -65,7 +66,7 @@ index 0491896..07e7469 100644 #ifdef HAVE_SYSTEMD_LOGIN #include <systemd/sd-login.h> -@@ -93,8 +95,10 @@ drmSetMaster(int drm_fd) +@@ -101,8 +103,10 @@ drmSetMaster(int drm_fd) #endif struct weston_launch { @@ -76,7 +77,7 @@ index 0491896..07e7469 100644 int tty; int ttynr; int sock[2]; -@@ -181,6 +185,7 @@ weston_launch_allowed(struct weston_launch *wl) +@@ -189,6 +193,7 @@ weston_launch_allowed(struct weston_launch *wl) return false; } @@ -84,7 +85,7 @@ index 0491896..07e7469 100644 static int pam_conversation_fn(int msg_count, const struct pam_message **messages, -@@ -221,6 +226,7 @@ setup_pam(struct weston_launch *wl) +@@ -229,6 +234,7 @@ setup_pam(struct weston_launch *wl) return 0; } @@ -92,7 +93,7 @@ index 0491896..07e7469 100644 static int setup_launcher_socket(struct weston_launch *wl) -@@ -414,6 +420,7 @@ quit(struct weston_launch *wl, int status) +@@ -422,6 +428,7 @@ quit(struct weston_launch *wl, int status) close(wl->signalfd); close(wl->sock[0]); @@ -100,7 +101,7 @@ index 0491896..07e7469 100644 if (wl->new_user) { err = pam_close_session(wl->ph, 0); if (err) -@@ -421,6 +428,7 @@ quit(struct weston_launch *wl, int status) +@@ -429,6 +436,7 @@ quit(struct weston_launch *wl, int status) err, pam_strerror(wl->ph, err)); pam_end(wl->ph, err); } @@ -108,7 +109,7 @@ index 0491896..07e7469 100644 if (ioctl(wl->tty, KDSKBMUTE, 0) && ioctl(wl->tty, KDSKBMODE, wl->kb_mode)) -@@ -600,6 +608,7 @@ setup_session(struct weston_launch *wl, char **child_argv) +@@ -608,6 +616,7 @@ setup_session(struct weston_launch *wl, char **child_argv) setenv("HOME", wl->pw->pw_dir, 1); setenv("SHELL", wl->pw->pw_shell, 1); @@ -116,7 +117,7 @@ index 0491896..07e7469 100644 env = pam_getenvlist(wl->ph); if (env) { for (i = 0; env[i]; ++i) { -@@ -608,6 +617,7 @@ setup_session(struct weston_launch *wl, char **child_argv) +@@ -616,6 +625,7 @@ setup_session(struct weston_launch *wl, char **child_argv) } free(env); } @@ -124,17 +125,18 @@ index 0491896..07e7469 100644 /* * We open a new session, so it makes sense -@@ -675,7 +685,9 @@ static void +@@ -683,8 +693,10 @@ static void help(const char *name) { fprintf(stderr, "Usage: %s [args...] [-- [weston args..]]\n", name); +#ifdef HAVE_PAM - fprintf(stderr, " -u, --user Start session as specified username\n"); + fprintf(stderr, " -u, --user Start session as specified username,\n" + " e.g. -u joe, requires root.\n"); +#endif - fprintf(stderr, " -t, --tty Start session on alternative tty\n"); + fprintf(stderr, " -t, --tty Start session on alternative tty,\n" + " e.g. -t /dev/tty4, requires -u option.\n"); fprintf(stderr, " -v, --verbose Be verbose\n"); - fprintf(stderr, " -h, --help Display this help message\n"); -@@ -688,7 +700,9 @@ main(int argc, char *argv[]) +@@ -698,7 +710,9 @@ main(int argc, char *argv[]) int i, c; char *tty = NULL; struct option opts[] = { @@ -144,8 +146,8 @@ index 0491896..07e7469 100644 { "tty", required_argument, NULL, 't' }, { "verbose", no_argument, NULL, 'v' }, { "help", no_argument, NULL, 'h' }, -@@ -700,9 +714,13 @@ main(int argc, char *argv[]) - while ((c = getopt_long(argc, argv, "u:t::vh", opts, &i)) != -1) { +@@ -710,9 +724,13 @@ main(int argc, char *argv[]) + while ((c = getopt_long(argc, argv, "u:t:vh", opts, &i)) != -1) { switch (c) { case 'u': +#ifdef HAVE_PAM @@ -158,7 +160,7 @@ index 0491896..07e7469 100644 break; case 't': tty = optarg; -@@ -740,8 +758,10 @@ main(int argc, char *argv[]) +@@ -753,8 +771,10 @@ main(int argc, char *argv[]) if (setup_tty(&wl, tty) < 0) exit(EXIT_FAILURE); @@ -169,6 +171,3 @@ index 0491896..07e7469 100644 if (setup_launcher_socket(&wl) < 0) exit(EXIT_FAILURE); --- -2.1.4 - diff --git a/poky/meta/recipes-graphics/wayland/weston/fix-missing-header.patch b/poky/meta/recipes-graphics/wayland/weston/fix-missing-header.patch deleted file mode 100644 index 55c0d4fd0f..0000000000 --- a/poky/meta/recipes-graphics/wayland/weston/fix-missing-header.patch +++ /dev/null @@ -1,30 +0,0 @@ -On the musl C library, tests/timespec-text.c does not build, with the -following error: - - In file included from tests/timespec-test.c:36:0: - ./shared/timespec-util.h:41:21: warning: ‘struct timespec’ declared - inside parameter list will not be visible outside of this definition - or declaration - timespec_sub(struct timespec *r, - ^~~~~~~~ - [...] - -Indeed, struct timespec is defined in time.h, so we must include it. - -Upstream-Status: Backport [fa41bdfbc0b962fd73b89f01aab1a5370c9c28eb] - -Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> -Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> - -Index: weston-3.0.0/shared/timespec-util.h -=================================================================== ---- weston-3.0.0.orig/shared/timespec-util.h -+++ weston-3.0.0/shared/timespec-util.h -@@ -28,6 +28,7 @@ - - #include <stdint.h> - #include <assert.h> -+#include <time.h> - - #define NSEC_PER_SEC 1000000000 - diff --git a/poky/meta/recipes-graphics/wayland/weston/weston-gl-renderer-Set-pitch-correctly-for-subsampled-textures.patch b/poky/meta/recipes-graphics/wayland/weston/weston-gl-renderer-Set-pitch-correctly-for-subsampled-textures.patch deleted file mode 100644 index b3e1d06f57..0000000000 --- a/poky/meta/recipes-graphics/wayland/weston/weston-gl-renderer-Set-pitch-correctly-for-subsampled-textures.patch +++ /dev/null @@ -1,55 +0,0 @@ -Multi-plane sub-sampled textures have partial width/height, e.g. -YUV420/I420 has a full-size Y plane, followed by a half-width/height U -plane, and a half-width/height V plane. - -zwp_linux_dmabuf_v1 allows clients to pass an explicit pitch for each -plane, but for wl_shm this must be inferred. gl-renderer was correctly -accounting for the width and height when subsampling, but the pitch was -being taken as the pitch for the first plane. - -This does not match the requirements for GStreamer's waylandsink, in -particular, as well as other clients. Fix the SHM upload path to -correctly set the pitch for each plane, according to subsampling. - -Tested with: - $ gst-launch-1.0 videotestsrc ! waylandsink - -Upstream-Status: Backport [https://patchwork.freedesktop.org/patch/180767/] - -Signed-off-by: Daniel Stone <daniels@collabora.com> -Fixes: fdeefe42418 ("gl-renderer: add support of WL_SHM_FORMAT_YUV420") -Reported-by: Fabien Lahoudere <fabien.lahoudere@collabora.co.uk> -Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103063 - ---- - libweston/gl-renderer.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/libweston/gl-renderer.c b/libweston/gl-renderer.c -index 244ce309..40bf0bb6 100644 ---- a/libweston/gl-renderer.c -+++ b/libweston/gl-renderer.c -@@ -1445,14 +1445,13 @@ gl_renderer_flush_damage(struct weston_surface *surface) - goto done; - } - -- glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, gs->pitch); -- - if (gs->needs_full_upload) { - glPixelStorei(GL_UNPACK_SKIP_PIXELS_EXT, 0); - glPixelStorei(GL_UNPACK_SKIP_ROWS_EXT, 0); - wl_shm_buffer_begin_access(buffer->shm_buffer); - for (j = 0; j < gs->num_textures; j++) { - glBindTexture(GL_TEXTURE_2D, gs->textures[j]); -+ glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, gs->pitch / gs->hsub[j]); - glTexImage2D(GL_TEXTURE_2D, 0, - gs->gl_format[j], - gs->pitch / gs->hsub[j], -@@ -1477,6 +1476,7 @@ gl_renderer_flush_damage(struct weston_surface *surface) - glPixelStorei(GL_UNPACK_SKIP_ROWS_EXT, r.y1); - for (j = 0; j < gs->num_textures; j++) { - glBindTexture(GL_TEXTURE_2D, gs->textures[j]); -+ glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, gs->pitch / gs->hsub[j]); - glTexSubImage2D(GL_TEXTURE_2D, 0, - r.x1 / gs->hsub[j], - r.y1 / gs->vsub[j], diff --git a/poky/meta/recipes-graphics/wayland/weston_3.0.0.bb b/poky/meta/recipes-graphics/wayland/weston_5.0.0.bb index ad0cdc2b0f..e51710928a 100644 --- a/poky/meta/recipes-graphics/wayland/weston_3.0.0.bb +++ b/poky/meta/recipes-graphics/wayland/weston_5.0.0.bb @@ -3,7 +3,7 @@ DESCRIPTION = "Weston is the reference implementation of a Wayland compositor" HOMEPAGE = "http://wayland.freedesktop.org" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=d79ee9e66bb0f95d3386a7acae780b70 \ - file://libweston/compositor.c;endline=26;md5=e342df749174a8ee11065583157c7a38" + file://libweston/compositor.c;endline=27;md5=6c53bbbd99273f4f7c4affa855c33c0a" SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \ file://weston.png \ @@ -11,11 +11,11 @@ SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \ file://0001-make-error-portable.patch \ file://xwayland.weston-start \ file://0001-weston-launch-Provide-a-default-version-that-doesn-t.patch \ - file://weston-gl-renderer-Set-pitch-correctly-for-subsampled-textures.patch \ - file://fix-missing-header.patch \ " -SRC_URI[md5sum] = "9c42a4c51a1b9f35d040fa9d45ada36d" -SRC_URI[sha256sum] = "cde1d55e8dd70c3cbb3d1ec72f60e60000041579caa1d6a262bd9c35e93723a5" +SRC_URI[md5sum] = "752a04ce3c65af4884cfac4e57231bdb" +SRC_URI[sha256sum] = "15a23423bcfa45e31e1dedc0cd524ba71e2930df174fde9c99b71a537c4e4caf" + +UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html" inherit autotools pkgconfig useradd distro_features_check # depends on virtual/egl @@ -24,15 +24,11 @@ REQUIRED_DISTRO_FEATURES = "opengl" DEPENDS = "libxkbcommon gdk-pixbuf pixman cairo glib-2.0 jpeg" DEPENDS += "wayland wayland-protocols libinput virtual/egl pango wayland-native" +WESTON_MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:1])}" + EXTRA_OECONF = "--enable-setuid-install \ --disable-rdp-compositor \ " -EXTRA_OECONF_append_qemux86 = "\ - WESTON_NATIVE_BACKEND=fbdev-backend.so \ - " -EXTRA_OECONF_append_qemux86-64 = "\ - WESTON_NATIVE_BACKEND=fbdev-backend.so \ - " PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'kms fbdev wayland egl', '', d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'x11 wayland', 'xwayland', '', d)} \ ${@bb.utils.filter('DISTRO_FEATURES', 'pam systemd x11', d)} \ @@ -41,7 +37,7 @@ PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'kms fbdev # Compositor choices # # Weston on KMS -PACKAGECONFIG[kms] = "--enable-drm-compositor,--disable-drm-compositor,drm udev virtual/mesa mtdev" +PACKAGECONFIG[kms] = "--enable-drm-compositor,--disable-drm-compositor,drm udev virtual/mesa virtual/libgbm mtdev" # Weston on Wayland (nested Weston) PACKAGECONFIG[wayland] = "--enable-wayland-compositor,--disable-wayland-compositor,virtual/mesa" # Weston on X11 @@ -62,8 +58,6 @@ PACKAGECONFIG[cairo-glesv2] = "--with-cairo-glesv2,--with-cairo=image,cairo" PACKAGECONFIG[lcms] = "--enable-lcms,--disable-lcms,lcms" # Weston with webp support PACKAGECONFIG[webp] = "--with-webp,--without-webp,libwebp" -# Weston with unwinding support -PACKAGECONFIG[libunwind] = "--enable-libunwind,--disable-libunwind,libunwind" # Weston with systemd-login support PACKAGECONFIG[systemd] = "--enable-systemd-login,--disable-systemd-login,systemd dbus" # Weston with Xwayland support (requires X11 and Wayland) @@ -77,7 +71,7 @@ PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam" do_install_append() { # Weston doesn't need the .la files to load modules, so wipe them - rm -f ${D}/${libdir}/libweston-3/*.la + rm -f ${D}/${libdir}/libweston-${WESTON_MAJOR_VERSION}/*.la # If X11, ship a desktop file to launch it if [ "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" ]; then @@ -94,20 +88,20 @@ do_install_append() { } PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', '${PN}-xwayland', '', d)} \ - libweston-3 ${PN}-examples" + libweston-${WESTON_MAJOR_VERSION} ${PN}-examples" FILES_${PN} = "${bindir}/weston ${bindir}/weston-terminal ${bindir}/weston-info ${bindir}/weston-launch ${bindir}/wcap-decode ${libexecdir} ${libdir}/${BPN}/*.so ${datadir}" -FILES_libweston-3 = "${libdir}/lib*${SOLIBS} ${libdir}/libweston-3/*.so" -SUMMARY_libweston-3 = "Helper library for implementing 'wayland window managers'." +FILES_libweston-${WESTON_MAJOR_VERSION} = "${libdir}/lib*${SOLIBS} ${libdir}/libweston-${WESTON_MAJOR_VERSION}/*.so" +SUMMARY_libweston-${WESTON_MAJOR_VERSION} = "Helper library for implementing 'wayland window managers'." FILES_${PN}-examples = "${bindir}/*" -FILES_${PN}-xwayland = "${libdir}/libweston-3/xwayland.so" +FILES_${PN}-xwayland = "${libdir}/libweston-${WESTON_MAJOR_VERSION}/xwayland.so" RDEPENDS_${PN}-xwayland += "xserver-xorg-xwayland" RDEPENDS_${PN} += "xkeyboard-config" -RRECOMMENDS_${PN} = "liberation-fonts" +RRECOMMENDS_${PN} = "weston-conf liberation-fonts" RRECOMMENDS_${PN}-dev += "wayland-protocols" USERADD_PACKAGES = "${PN}" diff --git a/poky/meta/recipes-graphics/xorg-app/mkfontscale_1.1.2.bb b/poky/meta/recipes-graphics/xorg-app/mkfontscale_1.1.3.bb index 31cf186767..2a6bec1649 100644 --- a/poky/meta/recipes-graphics/xorg-app/mkfontscale_1.1.2.bb +++ b/poky/meta/recipes-graphics/xorg-app/mkfontscale_1.1.3.bb @@ -8,11 +8,11 @@ font name (XLFD) is generated, and is written together with the file \ name to a file fonts.scale in the directory. The resulting fonts.scale \ is used by the mkfontdir program." -DEPENDS = "util-macros-native zlib libfontenc freetype xproto" +DEPENDS = "util-macros-native zlib libfontenc freetype xorgproto" BBCLASSEXTEND = "native" LIC_FILES_CHKSUM = "file://COPYING;md5=2e0d129d05305176d1a790e0ac1acb7f" -SRC_URI[md5sum] = "9bdd6ebfa62b1bbd474906ac86a40fd8" -SRC_URI[sha256sum] = "8c6d5228af885477b9aec60ca6f172578e7d2de42234357af62fb00439453f20" +SRC_URI[md5sum] = "987c438e79f5ddb84a9c5726a1610819" +SRC_URI[sha256sum] = "1e98df69ee5f4542d711e140e1d93e2c3f2775407ccbb7849110d52b91782a6a" diff --git a/poky/meta/recipes-graphics/xorg-app/rgb_1.0.6.bb b/poky/meta/recipes-graphics/xorg-app/rgb_1.0.6.bb index 87268046e6..c3e853631b 100644 --- a/poky/meta/recipes-graphics/xorg-app/rgb_1.0.6.bb +++ b/poky/meta/recipes-graphics/xorg-app/rgb_1.0.6.bb @@ -6,7 +6,7 @@ to RGB values (rgb.txt) and, if configured to use a database for color \ lookup, the rgb program to convert the text file into the binary database \ format." -DEPENDS += " xproto util-macros" +DEPENDS += " xorgproto util-macros" LIC_FILES_CHKSUM = "file://COPYING;md5=ef598adbe241bd0b0b9113831f6e249a" PE = "1" diff --git a/poky/meta/recipes-graphics/xorg-app/xev_1.2.2.bb b/poky/meta/recipes-graphics/xorg-app/xev_1.2.2.bb index f151b579e3..0705b7f7f1 100644 --- a/poky/meta/recipes-graphics/xorg-app/xev_1.2.2.bb +++ b/poky/meta/recipes-graphics/xorg-app/xev_1.2.2.bb @@ -10,7 +10,7 @@ LICENSE = "MIT" PE = "1" -DEPENDS += "libxrandr xproto" +DEPENDS += "libxrandr xorgproto" SRC_URI += "file://diet-x11.patch" diff --git a/poky/meta/recipes-graphics/xorg-app/xeyes_1.1.1.bb b/poky/meta/recipes-graphics/xorg-app/xeyes_1.1.2.bb index 84d0cb8044..06885f8f53 100644 --- a/poky/meta/recipes-graphics/xorg-app/xeyes_1.1.1.bb +++ b/poky/meta/recipes-graphics/xorg-app/xeyes_1.1.2.bb @@ -8,7 +8,7 @@ PE = "1" LIC_FILES_CHKSUM = "file://COPYING;md5=3ea51b365051ac32d1813a7dbaa4bfc6" -SRC_URI[md5sum] = "a3035dcecdbdb89e864177c080924981" -SRC_URI[sha256sum] = "975e98680cd59e1f9439016386609546ed08c284d0f05a95276f96aca6e8a521" +SRC_URI[md5sum] = "6f0543ec84283df5743eeafc173bea4a" +SRC_URI[sha256sum] = "57bcec0d2d167af9e5d44d0dbd74c6d7c0f0591cd0608952b23c749fdd910553" DEPENDS += "libxau libxt libxext libxmu libxrender" diff --git a/poky/meta/recipes-graphics/xorg-app/xinit_1.3.4.bb b/poky/meta/recipes-graphics/xorg-app/xinit_1.4.0.bb index 93185188ee..dc2a06b586 100644 --- a/poky/meta/recipes-graphics/xorg-app/xinit_1.3.4.bb +++ b/poky/meta/recipes-graphics/xorg-app/xinit_1.4.0.bb @@ -12,8 +12,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=18f01e7b39807bebe2b8df101a039b68" PE = "1" -SRC_URI[md5sum] = "4e928452dfaf73851413a2d8b8c76388" -SRC_URI[sha256sum] = "75d88d7397a07e01db253163b7c7a00b249b3d30e99489f2734cac9a0c7902b3" +SRC_URI[md5sum] = "2da154b2f80ca9637b1a17b13af0880c" +SRC_URI[sha256sum] = "230835eef2f5978a1e1344928168119373f6df1d0a32c09515e545721ee582ef" EXTRA_OECONF = "ac_cv_path_MCOOKIE=${bindir}/mcookie" diff --git a/poky/meta/recipes-graphics/xorg-app/xkbcomp_1.4.0.bb b/poky/meta/recipes-graphics/xorg-app/xkbcomp_1.4.2.bb index c9dc327c42..eaf8eaaf74 100644 --- a/poky/meta/recipes-graphics/xorg-app/xkbcomp_1.4.0.bb +++ b/poky/meta/recipes-graphics/xorg-app/xkbcomp_1.4.2.bb @@ -9,11 +9,9 @@ be read directly by XKB-capable X servers or utilities." LIC_FILES_CHKSUM = "file://COPYING;md5=08436e4f4476964e2e2dd7e7e41e076a" -PR = "${INC_PR}.0" - DEPENDS += "libxkbfile" BBCLASSEXTEND = "native" -SRC_URI[md5sum] = "cc22b232bc78a303371983e1b48794ab" -SRC_URI[sha256sum] = "bc69c8748c03c5ad9afdc8dff9db11994dd871b614c65f8940516da6bf61ce6b" +SRC_URI[md5sum] = "12610df19df2af3797f2c130ee2bce97" +SRC_URI[sha256sum] = "6dd8bcb9be7e85bd7294abe261b8c7b0539d2fc93e41b80fb8bd013767ce8424" diff --git a/poky/meta/recipes-graphics/xorg-app/xprop_1.2.2.bb b/poky/meta/recipes-graphics/xorg-app/xprop_1.2.3.bb index d78bf0451c..ca58d47519 100644 --- a/poky/meta/recipes-graphics/xorg-app/xprop_1.2.2.bb +++ b/poky/meta/recipes-graphics/xorg-app/xprop_1.2.3.bb @@ -14,5 +14,5 @@ DEPENDS += "libxmu" PE = "1" -SRC_URI[md5sum] = "fae3d2fda07684027a643ca783d595cc" -SRC_URI[sha256sum] = "9bee88b1025865ad121f72d32576dd3027af1446774aa8300cce3c261d869bc6" +SRC_URI[md5sum] = "4becb3ddc4674d741487189e4ce3d0b6" +SRC_URI[sha256sum] = "d22afb28c86d85fff10a50156a7d0fa930c80ae865d70b26d805fd28a17a521b" diff --git a/poky/meta/recipes-graphics/xorg-app/xset_1.2.3.bb b/poky/meta/recipes-graphics/xorg-app/xset_1.2.4.bb index f683b7603f..5748837fd5 100644 --- a/poky/meta/recipes-graphics/xorg-app/xset_1.2.3.bb +++ b/poky/meta/recipes-graphics/xorg-app/xset_1.2.4.bb @@ -12,8 +12,8 @@ PE = "1" SRC_URI += "file://disable-xkb.patch" -SRC_URI[md5sum] = "dcd227388b57487d543cab2fd7a602d7" -SRC_URI[sha256sum] = "4382f4fb29b88647e13f3b4bc29263134270747fc159cfc5f7e3af23588c8063" +SRC_URI[md5sum] = "70ea7bc7bacf1a124b1692605883f620" +SRC_URI[sha256sum] = "e4fd95280df52a88e9b0abc1fee11dcf0f34fc24041b9f45a247e52df941c957" CFLAGS += "-D_GNU_SOURCE" EXTRA_OECONF = "--disable-xkb --without-fontcache" diff --git a/poky/meta/recipes-graphics/xorg-app/xwininfo_1.1.3.bb b/poky/meta/recipes-graphics/xorg-app/xwininfo_1.1.4.bb index 0c23d19437..1fb90dd244 100644 --- a/poky/meta/recipes-graphics/xorg-app/xwininfo_1.1.3.bb +++ b/poky/meta/recipes-graphics/xorg-app/xwininfo_1.1.4.bb @@ -11,5 +11,5 @@ DEPENDS += "libxext libxmu gettext-native" PE = "0" -SRC_URI[md5sum] = "b777bafb674555e48fd8437618270931" -SRC_URI[sha256sum] = "218eb0ea95bd8de7903dfaa26423820c523ad1598be0751d2d8b6a2c23b23ff8" +SRC_URI[md5sum] = "9a505b91ae7160bbdec360968d060c83" +SRC_URI[sha256sum] = "839498aa46b496492a5c65cd42cd2e86e0da88149b0672e90cb91648f8cd5b01" diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.10.5.bb b/poky/meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.10.6.bb index 96b220ccbc..60e325cebb 100644 --- a/poky/meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.10.5.bb +++ b/poky/meta/recipes-graphics/xorg-driver/xf86-input-evdev_2.10.6.bb @@ -16,6 +16,5 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=fefe33b1cf0cacba0e72e3b0fa0f0e16" DEPENDS += "mtdev libevdev" -SRC_URI[md5sum] = "94c2c8354c74ab1cfbbb0a222078b9c6" -SRC_URI[sha256sum] = "9edaa6205baf6d2922cc4db3d8e54a7e7773b5f733b0ae90f6be7725f983b70d" - +SRC_URI[md5sum] = "e8bd1edc6751f92e425cae7eba3c61eb" +SRC_URI[sha256sum] = "8726073e81861bc7b2321e76272cbdbd33c7e1a121535a9827977265b9033ec0" diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.26.0.bb b/poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.28.0.bb index 54c33d790e..5853b5b5c0 100644 --- a/poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.26.0.bb +++ b/poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.28.0.bb @@ -5,7 +5,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=5e6b20ea2ef94a998145f0ea3f788ee0" DEPENDS += "libinput" -SRC_URI[md5sum] = "da47ef62eab1d0e922a8fa929ff81758" -SRC_URI[sha256sum] = "abca558fc2226f295691f1cf3412d4c0edeaa439f677ca25b5c9fab310d2387b" +SRC_URI[md5sum] = "2d7519ac0e39d4c88f3be32e81a637aa" +SRC_URI[sha256sum] = "21994d065fc26e85d1c3fc87d8479b9c22699ed5a0119df98fbe0000e84630a1" FILES_${PN} += "${datadir}/X11/xorg.conf.d" diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-input-mouse_1.9.2.bb b/poky/meta/recipes-graphics/xorg-driver/xf86-input-mouse_1.9.3.bb index 0750476a23..c38dab505b 100644 --- a/poky/meta/recipes-graphics/xorg-driver/xf86-input-mouse_1.9.2.bb +++ b/poky/meta/recipes-graphics/xorg-driver/xf86-input-mouse_1.9.3.bb @@ -10,5 +10,5 @@ driver." LIC_FILES_CHKSUM = "file://COPYING;md5=90ea9f90d72b6d9327dede5ffdb2a510" -SRC_URI[md5sum] = "ce2d679283a22c8e0dccdd9248594845" -SRC_URI[sha256sum] = "f425d5b05c6ab412a27e0a1106bb83f9e2662b307210abbe48270892387f4b2f" +SRC_URI[md5sum] = "a2104693bbcfe1413397f7905eecd3dc" +SRC_URI[sha256sum] = "93ecb350604d05be98b7d4e5db3b8155a44890069a7d8d6b800c0bea79c85cc5" diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.0.bb b/poky/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.1.bb index d327a3b42e..dc31890f69 100644 --- a/poky/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.0.bb +++ b/poky/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.1.bb @@ -10,7 +10,7 @@ advanced features of the touchpad to become available." LIC_FILES_CHKSUM = "file://COPYING;md5=55aacd3535a741824955c5eb8f061398" -SRC_URI[md5sum] = "58e5b7722a402114093bf193962d1e3a" -SRC_URI[sha256sum] = "afba3289d7a40217a19d90db98ce181772f9ca6d77e1898727b0afcf02073b5a" +SRC_URI[md5sum] = "cfb79d3c975151f9bbf30b727c260cb9" +SRC_URI[sha256sum] = "7af83526eff1c76e8b9e1553b34245c203d029028d8044dd9dcf71eef1001576" DEPENDS += "libxi mtdev libxtst libevdev" diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-video-fbdev_0.4.4.bb b/poky/meta/recipes-graphics/xorg-driver/xf86-video-fbdev_0.5.0.bb index 52e9bd1dfa..7b4ac88a4c 100644 --- a/poky/meta/recipes-graphics/xorg-driver/xf86-video-fbdev_0.4.4.bb +++ b/poky/meta/recipes-graphics/xorg-driver/xf86-video-fbdev_0.5.0.bb @@ -5,5 +5,5 @@ DESCRIPTION = "fbdev is an Xorg driver for framebuffer devices. This is a non-ac LIC_FILES_CHKSUM = "file://COPYING;md5=d8cbd99fff773f92e844948f74ef0df8" -SRC_URI[md5sum] = "3931c0e19d441cc576dc088f9eb9fd73" -SRC_URI[sha256sum] = "9dd4b326498223abbfdf786089a46ea3db4fa6bbd341308eb48a9e00bc3fd51b" +SRC_URI[md5sum] = "f07475655376be5a124d8187aacd87b6" +SRC_URI[sha256sum] = "dcc3d85f378022180e437a9ec00a59b6cb7680ff79c40394d695060af2374699" diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/always_include_xorg_server.h.patch b/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/always_include_xorg_server.h.patch deleted file mode 100644 index 8a5dd39ae1..0000000000 --- a/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/always_include_xorg_server.h.patch +++ /dev/null @@ -1,24 +0,0 @@ -Include xorg-server.h to fix build errors seen with glibc 2.20 - -In file included from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/string.h:634:0, - from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/work/i586-oe-linux/xf86-video-intel/2_2.99.912-r0/xf86-video-intel-2.99.912/src/backlight.c:39: -/home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/xorg/os.h:579:1: error: expected identifier or '(' before '__extension__' - strndup(const char *str, size_t n); - ^ - -Signed-off-by: Khem Raj <raj.khem@gmail.com> - -Upstream-Status: Pending - -Index: xf86-video-intel-2.99.912/src/backlight.c -=================================================================== ---- xf86-video-intel-2.99.912.orig/src/backlight.c 2014-04-09 10:41:18.000000000 -0700 -+++ xf86-video-intel-2.99.912/src/backlight.c 2014-08-28 18:52:25.524070587 -0700 -@@ -29,6 +29,7 @@ - #include "config.h" - #endif - -+#include <xorg-server.h> - #include <sys/types.h> - #include <sys/wait.h> - #include <sys/stat.h> diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/disable-x11-dri3.patch b/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/disable-x11-dri3.patch deleted file mode 100644 index 3dddd334bf..0000000000 --- a/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/disable-x11-dri3.patch +++ /dev/null @@ -1,17 +0,0 @@ -These modules are only used for tests that don't get installed, and the -automatic detection without explicit dependencies means that a build can find -e.g. xshmfence at configure time but then it's been removed from the sysroot by -the time compile happens. - -As the tests don't get installed, just disable the checks. - -Upstream-Status: Inappropriate [OE-specific] -Signed-off-by: Ross Burton <ross.burton@intel.com> - -diff --git a/configure.ac b/configure.ac -index bd654f3..78a0e0d 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -279 +279 @@ fi --PKG_CHECK_MODULES(X11_DRI3, [xcb-dri3 xcb-sync xcb-xfixes xcb-present x11-xcb xshmfence x11 xcomposite xdamage xrender xrandr xxf86vm xext libdrm], [x11_dri3="yes"], [x11_dri3="no"]) -+#PKG_CHECK_MODULES(X11_DRI3, [xcb-dri3 xcb-sync xcb-xfixes xcb-present x11-xcb xshmfence x11 xcomposite xdamage xrender xrandr xxf86vm xext libdrm], [x11_dri3="yes"], [x11_dri3="no"]) diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/glibc.patch b/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/glibc.patch new file mode 100644 index 0000000000..ada9eb5e52 --- /dev/null +++ b/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/glibc.patch @@ -0,0 +1,25 @@ +Add a missing include needed for glibc 2.28 to avoid: + +| ../../git/tools/backlight_helper.c: In function 'main': +| ../../git/tools/backlight_helper.c:54:34: error: implicit declaration of function 'major' [-Werror=implicit-function-declaration] +| if (fd < 0 || fstat(fd, &st) || major(st.st_dev)) +| ^~~~~ +| ../../git/tools/backlight_helper.c:54:34: warning: nested extern declaration of 'major' [-Wnested-externs] +| cc1: some warnings being treated as errors +| Makefile:666: recipe for target 'backlight_helper.o' failed + +Upstream-Status: Pending +RP 2018/8/12 + +Index: git/tools/backlight_helper.c +=================================================================== +--- git.orig/tools/backlight_helper.c ++++ git/tools/backlight_helper.c +@@ -8,6 +8,7 @@ + + #include <sys/types.h> + #include <sys/stat.h> ++#include <sys/sysmacros.h> + + #if MAJOR_IN_MKDEV + #include <sys/mkdev.h> diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb b/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb index 2623cb2f31..655fd4dc69 100644 --- a/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb +++ b/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb @@ -14,28 +14,25 @@ PV = "2.99.917+git${SRCPV}" S = "${WORKDIR}/git" SRC_URI = "git://anongit.freedesktop.org/xorg/driver/xf86-video-intel \ - file://disable-x11-dri3.patch \ - file://always_include_xorg_server.h.patch \ file://0001-Add-Coffeelake-PCI-IDs-for-S-Skus.patch \ + file://glibc.patch \ " -SRC_URI[md5sum] = "fa196a66e52c0c624fe5d350af7a5e7b" -SRC_URI[sha256sum] = "00b781eea055582820a123c47b62411bdf6aabf4f03dc0568faec55faf9667c9" UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)" DEPENDS += "virtual/libx11 drm libpciaccess pixman" -PACKAGECONFIG ??= "xvmc uxa udev ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'dri dri1 dri2', '', d)}" +PACKAGECONFIG ??= "xvmc uxa udev ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'dri dri2 dri3', '', d)}" PACKAGECONFIG[dri] = "--enable-dri,--disable-dri" -PACKAGECONFIG[dri1] = "--enable-dri1,--disable-dri1,xf86driproto" -PACKAGECONFIG[dri2] = "--enable-dri2,--disable-dri2,dri2proto" -PACKAGECONFIG[dri3] = "--enable-dri3,--disable-dri3,dri3proto" +PACKAGECONFIG[dri1] = "--enable-dri1,--disable-dri1" +PACKAGECONFIG[dri2] = "--enable-dri2,--disable-dri2" +PACKAGECONFIG[dri3] = "--enable-dri3,--disable-dri3" PACKAGECONFIG[sna] = "--enable-sna,--disable-sna" PACKAGECONFIG[uxa] = "--enable-uxa,--disable-uxa" PACKAGECONFIG[udev] = "--enable-udev,--disable-udev,udev" PACKAGECONFIG[xvmc] = "--enable-xvmc,--disable-xvmc,libxvmc xcb-util" -PACKAGECONFIG[tools] = "--enable-tools,--disable-tools,libxinerama libxrandr libxdamage libxfixes libxcursor libxtst libxext libxrender" +PACKAGECONFIG[tools] = "--enable-tools,--disable-tools,libxinerama libxrandr libxdamage libxfixes libxcursor libxtst libxrender libxscrnsaver libxext libx11 pixman libxcb libxshmfence" # --enable-kms-only option is required by ROOTLESS_X EXTRA_OECONF += '${@oe.utils.conditional( "ROOTLESS_X", "1", " --enable-kms-only", "", d )}' diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-video-omap_0.4.5.bb b/poky/meta/recipes-graphics/xorg-driver/xf86-video-omap_0.4.5.bb deleted file mode 100644 index bef3636092..0000000000 --- a/poky/meta/recipes-graphics/xorg-driver/xf86-video-omap_0.4.5.bb +++ /dev/null @@ -1,41 +0,0 @@ -require xorg-driver-video.inc - -SUMMARY = "X.Org X server -- Texas Instruments OMAP framebuffer driver" - -SUMMARY = "X.Org X server -- TI OMAP integrated graphics chipsets driver" - -DESCRIPTION = "Open-source X.org graphics driver for TI OMAP graphics \ -Currently relies on a closed-source submodule for EXA acceleration on \ -the following chipsets: \ - + OMAP3430 \ - + OMAP3630 \ - + OMAP4430 \ - + OMAP4460 \ - + OMAP5430 \ - + OMAP5432 \ -\ -NOTE: this driver is work in progress.. you probably don't want to try \ -and use it yet. The API/ABI between driver and kernel, and driver and \ -acceleration submodules is not stable yet. This driver requires the \ -omapdrm kernel driver w/ GEM support. \ -" - -LICENSE = "GPLv2+" -LIC_FILES_CHKSUM = "file://COPYING;md5=10ce5de3b111315ea652a5f74ec0c602" -DEPENDS += "virtual/libx11 libdrm xf86driproto" - -SRC_URI[md5sum] = "3b8ea5e8fba63355c0dc6681c49d5fe5" -SRC_URI[sha256sum] = "93e7d42107521e61f61980eaea64fb452e87b7b94272e48938ac8d904ccfab5a" - -CFLAGS += " -I${STAGING_INCDIR}/xorg " - -# Use overlay 2 on omap3 to enable other apps to use overlay 1 (e.g. dmai or omapfbplay) -do_compile_prepend_armv7a () { - sed -i -e s:fb1:fb2:g ${S}/src/omap_xv.c -} - -python () { - if not bb.utils.contains ('DISTRO_FEATURES', 'opengl', True, False, d): - raise bb.parse.SkipRecipe("'opengl' not in DISTRO_FEATURES") -} - diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0001-Prevents-omapfb-from-from-crashing-when-pixelclock-o.patch b/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0001-Prevents-omapfb-from-from-crashing-when-pixelclock-o.patch deleted file mode 100644 index ac19219284..0000000000 --- a/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0001-Prevents-omapfb-from-from-crashing-when-pixelclock-o.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 28c006c94e57ea71df11ec4fff79d7ffcfc4860f Mon Sep 17 00:00:00 2001 -From: Far McKon <FarMcKon@buglabs.net> -Date: Tue, 3 May 2011 20:59:04 +0300 -Subject: [PATCH] Prevents omapfb from from crashing when pixelclock of 0 is - sent to it. - -Due to a Linux design bug it is easy to get a pixelclock set to zero -when changing displays at runtime. - -Upstream-Status: Pending ---- - src/omapfb-output.c | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -diff --git a/src/omapfb-output.c b/src/omapfb-output.c -index f8b4db3..4d59265 100644 ---- a/src/omapfb-output.c -+++ b/src/omapfb-output.c -@@ -125,8 +125,13 @@ OMAPFBOutputGetModes(xf86OutputPtr output) - /* Only populate the native (current) mode */ - mode = calloc(1, sizeof(DisplayModeRec)); - mode->type |= M_T_PREFERRED; -- mode->Clock = PICOS2KHZ(ofb->state_info.pixclock); -- mode->SynthClock = PICOS2KHZ(ofb->state_info.pixclock); -+ if (ofb->state_info.pixclock == 0) { -+ mode->Clock = 0; -+ mode->SynthClock = 0; -+ } else { -+ mode->Clock = PICOS2KHZ(ofb->state_info.pixclock); -+ mode->SynthClock = PICOS2KHZ(ofb->state_info.pixclock); -+ } - mode->HDisplay = ofb->state_info.xres; - mode->HSyncStart = mode->HDisplay - + ofb->state_info.right_margin; --- -2.1.4 - diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0001-Revert-Set-a-large-CRTC-upper-limit-to-not-prune-lar.patch b/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0001-Revert-Set-a-large-CRTC-upper-limit-to-not-prune-lar.patch deleted file mode 100644 index 9fb01d438a..0000000000 --- a/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0001-Revert-Set-a-large-CRTC-upper-limit-to-not-prune-lar.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 8fb7d0f99d4afbb574b30cb4f1e66a8f89d94ad5 Mon Sep 17 00:00:00 2001 -From: Koen Kooi <koen@dominion.thruhere.net> -Date: Wed, 26 Jan 2011 12:04:36 +0100 -Subject: [PATCH 1/6] Revert "Set a large CRTC upper limit to not prune larger - resolutions" - -Picture is garbled after switching resolutions, so revert it. -Virtual size too big, revert the commit 9c4d7592dcb7dc20a48a6f941d9d94bd73d34153. - -Upstream-Status: Pending - -Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> ---- - src/omapfb-crtc.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/omapfb-crtc.c b/src/omapfb-crtc.c -index 9aaa52f..cbeff35 100644 ---- a/src/omapfb-crtc.c -+++ b/src/omapfb-crtc.c -@@ -190,13 +190,13 @@ OMAPFBCRTCInit(ScrnInfoPtr pScrn) - * In practise, this doesn't seem to be supported. - * (no way to setup the overlay offset/base address) - */ -- /* FIXME: figure out what makes sense here. A known max resolution? -- * framebuffer size? -- */ - xf86CrtcSetSizeRange(pScrn, -- 8, 8, 2048, 2048); -+ 8, 8, -+ ofb->state_info.xres_virtual, -+ ofb->state_info.yres_virtual); - - ofb->crtc = xf86CrtcCreate(pScrn, &OMAPFBCrtcFuncs); -+ - } - - --- -1.8.0 - diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0002-Revert-Set-virtual-size-when-configuring-framebuffer.patch b/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0002-Revert-Set-virtual-size-when-configuring-framebuffer.patch deleted file mode 100644 index 683a989832..0000000000 --- a/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0002-Revert-Set-virtual-size-when-configuring-framebuffer.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 855c333ac0d16350f895f1d1b9391e9cbb0b6db4 Mon Sep 17 00:00:00 2001 -From: Koen Kooi <koen@dominion.thruhere.net> -Date: Wed, 26 Jan 2011 13:27:20 +0100 -Subject: [PATCH 2/6] Revert "Set virtual size when configuring framebuffer" - -Virtual size too big, so revert it. - -This reverts commit 2653ef07883fbd1a5e7025f9300cf89b79ba429a. - -Upstream-Status: Pending - -Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> ---- - src/omapfb-crtc.c | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/src/omapfb-crtc.c b/src/omapfb-crtc.c -index cbeff35..9655db2 100644 ---- a/src/omapfb-crtc.c -+++ b/src/omapfb-crtc.c -@@ -98,8 +98,6 @@ OMAPFBCrtcCommitChangeMode (xf86CrtcPtr crtc) - v = ofb->state_info; - v.xres = mode->HDisplay; - v.yres = mode->VDisplay; -- v.xres_virtual = crtc->scrn->virtualX; -- v.yres_virtual = crtc->scrn->virtualY; - v.activate = FB_ACTIVATE_NOW; - v.pixclock = KHZ2PICOS(mode->Clock ? mode->Clock : 56000); - v.left_margin = mode->HTotal - mode->HSyncEnd; --- -1.8.0 - diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0003-force-plain-mode.patch b/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0003-force-plain-mode.patch deleted file mode 100644 index 67ea7c1a5f..0000000000 --- a/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0003-force-plain-mode.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 252f44c072d3447a32127fc9afe5d0d40f3c510e Mon Sep 17 00:00:00 2001 -From: Koen Kooi <koen@dominion.thruhere.net> -Date: Wed, 26 Jan 2011 13:20:20 +0100 -Subject: [PATCH 3/6] force 'plain' mode - -The new DSS mode breaks XV, so force plain mode - -Upstream-Status: Pending - -Signed-off-by: Koen Kooi <koen@dominion.thruhere.net> -Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> ---- - src/omapfb-driver.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/omapfb-driver.c b/src/omapfb-driver.c -index 018e040..48aa09c 100644 ---- a/src/omapfb-driver.c -+++ b/src/omapfb-driver.c -@@ -326,7 +326,7 @@ OMAPFBPreInit(ScrnInfoPtr pScrn, int flags) - OMAPFBProbeController(ofb->ctrl_name); - - /* Do we have the DSS kernel API? */ -- if (stat(SYSFS_DSS_DIR, &st) == 0) { -+ if (0) { //stat(SYSFS_DSS_DIR, &st) == 0) { - ofb->dss = TRUE; - } else { - ofb->dss = FALSE; --- -1.8.0 - diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0004-blacklist-tv-out.patch b/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0004-blacklist-tv-out.patch deleted file mode 100644 index b0ac9a44c8..0000000000 --- a/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0004-blacklist-tv-out.patch +++ /dev/null @@ -1,33 +0,0 @@ -From cfa46b67f59115f6d8ef9414af60380749ff3eb3 Mon Sep 17 00:00:00 2001 -From: Koen Kooi <koen@dominion.thruhere.net> -Date: Wed, 26 Jan 2011 13:21:12 +0100 -Subject: [PATCH 4/6] blacklist tv out - -The tv-out gets added last and the driver tries to reconfigure dvi to TV resolutions, which fails. so blacklist it - -Upstream-Status: Pending - -Signed-off-by: Koen Kooi <koen@dominion.thruhere.net> -Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> ---- - src/omapfb-output-dss.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/src/omapfb-output-dss.c b/src/omapfb-output-dss.c -index 6cc52de..83cb711 100644 ---- a/src/omapfb-output-dss.c -+++ b/src/omapfb-output-dss.c -@@ -205,6 +205,10 @@ OMAPFBDSSOutputDetect (xf86OutputPtr output) - if(ofb->timings[idx][0] == '\0') - return XF86OutputStatusDisconnected; - -+ // Hack to disable the tv out -+ if (strncmp(output->name, "tv", 2) == 0) -+ return XF86OutputStatusDisconnected; -+ - return XF86OutputStatusConnected; - } - --- -1.8.0 - diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0005-Attempt-to-fix-VRFB.patch b/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0005-Attempt-to-fix-VRFB.patch deleted file mode 100644 index 67b284023d..0000000000 --- a/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0005-Attempt-to-fix-VRFB.patch +++ /dev/null @@ -1,325 +0,0 @@ -From 8b1f697a60e35ab82fffdabfaefdb45e9a9df379 Mon Sep 17 00:00:00 2001 -From: Eino-Ville Talvala <talvala@stanford.edu> -Date: Tue, 23 Aug 2011 18:37:01 +0200 -Subject: [PATCH 5/6] Attempt to fix VRFB - -Upstream-Status: Pending - -http://dominion.thruhere.net/git/cgit.cgi/xf86-video-omapfb/commit/?h=koen/fixups&id=6833fc9f795265e4943d248103fbaf3463b515d6 - -Signed-off-by: Sebastian Krzyszkowiak <dos@dosowisko.net> -Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> ---- - src/image-format-conversions.c | 4 +-- - src/image-format-conversions.h | 2 +- - src/omapfb-driver.c | 28 +++++++++++++--- - src/omapfb-xv-blizzard.c | 1 + - src/omapfb-xv-generic.c | 72 +++++++++++++++++++++++++++++++++--------- - src/omapfb-xv.c | 3 ++ - 6 files changed, 88 insertions(+), 22 deletions(-) - -diff --git a/src/image-format-conversions.c b/src/image-format-conversions.c -index dcefa9b..d43427d 100644 ---- a/src/image-format-conversions.c -+++ b/src/image-format-conversions.c -@@ -38,13 +38,13 @@ - #include "image-format-conversions.h" - - /* Basic line-based copy for packed formats */ --void packed_line_copy(int w, int h, int stride, uint8_t *src, uint8_t *dest) -+void packed_line_copy(int w, int h, int src_stride, int dst_stride, uint8_t *src, uint8_t *dest) - { - int i; - int len = w * 2; - for (i = 0; i < h; i++) - { -- memcpy(dest + i * len, src + i * stride, len); -+ memcpy(dest + i * dst_stride, src + i * src_stride, len); - } - } - -diff --git a/src/image-format-conversions.h b/src/image-format-conversions.h -index 584896a..ba7caf2 100644 ---- a/src/image-format-conversions.h -+++ b/src/image-format-conversions.h -@@ -27,7 +27,7 @@ - #include <stdint.h> - - /* Basic line-based copy for packed formats */ --void packed_line_copy(int w, int h, int stride, uint8_t *src, uint8_t *dest); -+void packed_line_copy(int w, int h, int src_stride, int dst_stride, uint8_t *src, uint8_t *dest); - - /* Basic C implementation of YV12/I420 to UYVY conversion */ - void uv12_to_uyvy(int w, int h, int y_pitch, int uv_pitch, uint8_t *y_p, uint8_t *u_p, uint8_t *v_p, uint8_t *dest); -diff --git a/src/omapfb-driver.c b/src/omapfb-driver.c -index 48aa09c..07989f5 100644 ---- a/src/omapfb-driver.c -+++ b/src/omapfb-driver.c -@@ -66,6 +66,7 @@ - #define OMAPFB_VERSION 1000 - #define OMAPFB_DRIVER_NAME "OMAPFB" - #define OMAPFB_NAME "omapfb" -+#define ENFORCE_MODES - - static Bool OMAPFBProbe(DriverPtr drv, int flags); - static Bool OMAPFBPreInit(ScrnInfoPtr pScrn, int flags); -@@ -105,11 +106,13 @@ static SymTabRec OMAPFBChipsets[] = { - typedef enum { - OPTION_ACCELMETHOD, - OPTION_FB, -+ OPTION_ROTATE, - } FBDevOpts; - - static const OptionInfoRec OMAPFBOptions[] = { - { OPTION_ACCELMETHOD, "AccelMethod", OPTV_STRING, {0}, FALSE }, - { OPTION_FB, "fb", OPTV_STRING, {0}, FALSE }, -+ { OPTION_ROTATE, "rotation", OPTV_STRING, {0}, FALSE }, - { -1, NULL, OPTV_NONE, {0}, FALSE } - }; - -@@ -286,6 +289,7 @@ OMAPFBPreInit(ScrnInfoPtr pScrn, int flags) - { - OMAPFBPtr ofb; - EntityInfoPtr pEnt; -+ char *rotate; - rgb zeros = { 0, 0, 0 }; - struct stat st; - -@@ -379,6 +383,8 @@ OMAPFBPreInit(ScrnInfoPtr pScrn, int flags) - pScrn->progClock = TRUE; - pScrn->chipset = "omapfb"; - -+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Rotate test version 0.02\n"); -+ - /* Start with configured virtual size */ - pScrn->virtualX = pScrn->display->virtualX; - pScrn->virtualY = pScrn->display->virtualY; -@@ -496,12 +502,21 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) - ofb->CloseScreen = pScreen->CloseScreen; - pScreen->CloseScreen = OMAPFBCloseScreen; - -+ /* Enforce the default mode (this is silly I guess) */ -+#ifdef ENFORCE_MODES -+ //xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Enforcing modes\n"); -+ //set_mode(ofb, &ofb->default_mode); -+ //pScrn->displayWidth = ofb->fixed_info.line_length / -+ // (ofb->state_info.bits_per_pixel>>3); //ofb->state_info.xres; -+#endif -+ - /* Map our framebuffer memory */ -+ ofb->mem_info.size = ofb->fixed_info.line_length * ofb->state_info.yres; - ofb->fb = mmap (NULL, ofb->mem_info.size, - PROT_READ | PROT_WRITE, MAP_SHARED, - ofb->fd, 0); -- if (ofb->fb == NULL) { -- xf86DrvMsg(scrnIndex, X_ERROR, "Mapping framebuffer memory failed\n"); -+ if (ofb->fb == MAP_FAILED) { -+ xf86DrvMsg(scrnIndex, X_ERROR, "Mapping framebuffer memory failed, wanted %d bytes.\n", ofb->mem_info.size); - return FALSE; - } - -@@ -578,8 +593,13 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) - } else if (!ofb->dss) { - - ofb->plane_info.enabled = 1; -- ofb->plane_info.out_width = ofb->state_info.xres; -- ofb->plane_info.out_height = ofb->state_info.yres; -+ if (ofb->state_info.rotate == 0 || ofb->state_info.rotate == 2) { -+ ofb->plane_info.out_width = ofb->state_info.xres; -+ ofb->plane_info.out_height = ofb->state_info.yres; -+ } else { -+ ofb->plane_info.out_width = ofb->state_info.yres; -+ ofb->plane_info.out_height = ofb->state_info.xres; -+ } - - if (ioctl (ofb->fd, OMAPFB_SETUP_PLANE, &ofb->plane_info)) { - xf86DrvMsg(scrnIndex, X_ERROR, -diff --git a/src/omapfb-xv-blizzard.c b/src/omapfb-xv-blizzard.c -index 406ffc6..b71d2aa 100644 ---- a/src/omapfb-xv-blizzard.c -+++ b/src/omapfb-xv-blizzard.c -@@ -220,6 +220,7 @@ int OMAPFBXVPutImageBlizzard (ScrnInfoPtr pScrn, - packed_line_copy(src_w & ~3, - src_h & ~3, - ((src_w + 1) & ~1) * 2, -+ ofb->port->fixed_info.line_length, - (uint8_t*)buf, - (uint8_t*)ofb->port->fb); - break; -diff --git a/src/omapfb-xv-generic.c b/src/omapfb-xv-generic.c -index e6f89fe..b33f344 100644 ---- a/src/omapfb-xv-generic.c -+++ b/src/omapfb-xv-generic.c -@@ -62,7 +62,7 @@ int OMAPXVAllocPlane(ScrnInfoPtr pScrn) - { - OMAPFBPtr ofb = OMAPFB(pScrn); - -- /* The memory size is already set in OMAPFBXVQueryImageAttributes */ -+ /* The memory size is already set before we get here */ - if (ioctl(ofb->port->fd, OMAPFB_SETUP_MEM, &ofb->port->mem_info) != 0) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "Failed to allocate video plane memory\n"); -@@ -73,19 +73,20 @@ int OMAPXVAllocPlane(ScrnInfoPtr pScrn) - ofb->port->fb = mmap (NULL, ofb->port->mem_info.size, - PROT_READ | PROT_WRITE, MAP_SHARED, - ofb->port->fd, 0); -- if (ofb->port->fb == NULL) { -+ if (ofb->port->fb == MAP_FAILED) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "Mapping video memory failed\n"); - return XvBadAlloc; - } - - /* Update the state info */ -+ /* Let's not - it's bad - if (ioctl (ofb->port->fd, FBIOGET_VSCREENINFO, &ofb->port->state_info)) - { - xf86Msg(X_ERROR, "%s: Reading state info failed\n", __FUNCTION__); - return XvBadAlloc; - } -- -+ */ - return Success; - } - -@@ -93,6 +94,7 @@ int OMAPXVAllocPlane(ScrnInfoPtr pScrn) - int OMAPXVSetupVideoPlane(ScrnInfoPtr pScrn) - { - OMAPFBPtr ofb = OMAPFB(pScrn); -+ int ret; - - if (ioctl (ofb->port->fd, FBIOPUT_VSCREENINFO, &ofb->port->state_info)) - { -@@ -104,6 +106,31 @@ int OMAPXVSetupVideoPlane(ScrnInfoPtr pScrn) - xf86Msg(X_ERROR, "%s: Reading state info failed\n", __FUNCTION__); - return XvBadAlloc; - } -+ /* Changing rotation/nonstd flags can change the fixed info! */ -+ if (ioctl (ofb->port->fd, FBIOGET_FSCREENINFO, &ofb->port->fixed_info)) -+ { -+ xf86Msg(X_ERROR, "%s: Reading state info failed\n", __FUNCTION__); -+ return XvBadAlloc; -+ } -+ /* Correct fixed info requires recalculation of needed memory */ -+ ofb->port->mem_info.size = ofb->port->fixed_info.line_length * ofb->port->state_info.yres; -+ -+ /* Allocate buffer memory */ -+ ret = OMAPXVAllocPlane(pScrn); -+ if (ret != Success) -+ return ret; -+ -+ /* Workaround for reset of mode after memory allo */ -+ if (ioctl (ofb->port->fd, FBIOPUT_VSCREENINFO, &ofb->port->state_info)) -+ { -+ xf86Msg(X_ERROR, "%s: setting state info failed\n", __FUNCTION__); -+ return XvBadAlloc; -+ } -+ if (ioctl (ofb->port->fd, FBIOGET_VSCREENINFO, &ofb->port->state_info)) -+ { -+ xf86Msg(X_ERROR, "%s: Reading state info failed\n", __FUNCTION__); -+ return XvBadAlloc; -+ } - - if(ioctl(ofb->port->fd, OMAPFB_SETUP_PLANE, - &ofb->port->plane_info) != 0) { -@@ -124,6 +151,8 @@ int OMAPFBXVPutImageGeneric (ScrnInfoPtr pScrn, - DrawablePtr pDraw) - { - OMAPFBPtr ofb = OMAPFB(pScrn); -+ short drw_temp; -+ short rot_xres, rot_yres; - - if (!ofb->port->plane_info.enabled - || ofb->port->update_window.x != src_x -@@ -163,13 +192,6 @@ int OMAPFBXVPutImageGeneric (ScrnInfoPtr pScrn, - return Success; - } - -- /* If we don't have the plane running, enable it */ -- if (!ofb->port->plane_info.enabled) { -- ret = OMAPXVAllocPlane(pScrn); -- if (ret != Success) -- return ret; -- } -- - /* Set up the state info, xres and yres will be used for - * scaling to the values in the plane info struct - */ -@@ -179,12 +201,31 @@ int OMAPFBXVPutImageGeneric (ScrnInfoPtr pScrn, - ofb->port->state_info.yres_virtual = 0; - ofb->port->state_info.xoffset = 0; - ofb->port->state_info.yoffset = 0; -- ofb->port->state_info.rotate = 0; -+ //ofb->port->state_info.rotate = 0; - ofb->port->state_info.grayscale = 0; - ofb->port->state_info.activate = FB_ACTIVATE_NOW; - ofb->port->state_info.bits_per_pixel = 0; - ofb->port->state_info.nonstd = xv_to_omapfb_format(image); - -+ /* Plane info does not rotate with state_info */ -+ if (ofb->port->state_info.rotate == 1 || -+ ofb->port->state_info.rotate == 3) { -+ drw_temp = drw_x; -+ drw_x = drw_y; -+ drw_y = drw_temp; -+ -+ drw_temp = drw_w; -+ drw_w = drw_h; -+ drw_h = drw_temp; -+ -+ rot_xres = ofb->port->state_info.yres; -+ rot_yres = ofb->port->state_info.xres; -+ } else { -+ rot_xres = ofb->port->state_info.xres; -+ rot_yres = ofb->port->state_info.yres; -+ } -+ -+ - /* Set up the video plane info */ - ofb->port->plane_info.enabled = 1; - ofb->port->plane_info.pos_x = drw_x; -@@ -193,13 +234,13 @@ int OMAPFBXVPutImageGeneric (ScrnInfoPtr pScrn, - ofb->port->plane_info.out_height = drw_h & ~15; - - /* Cap output to screen size */ -- if (ofb->port->plane_info.out_width > ofb->state_info.xres) { -+ if (ofb->port->plane_info.out_width > rot_xres) { - ofb->port->plane_info.pos_x = 0; -- ofb->port->plane_info.out_width = ofb->state_info.xres; -+ ofb->port->plane_info.out_width = rot_xres; - } -- if (ofb->port->plane_info.out_height > ofb->state_info.yres) { -+ if (ofb->port->plane_info.out_height > rot_yres) { - ofb->port->plane_info.pos_y = 0; -- ofb->port->plane_info.out_height = ofb->state_info.yres; -+ ofb->port->plane_info.out_height = rot_yres; - } - - ret = OMAPXVSetupVideoPlane(pScrn); -@@ -223,6 +264,7 @@ int OMAPFBXVPutImageGeneric (ScrnInfoPtr pScrn, - packed_line_copy(src_w & ~15, - src_h & ~15, - ((src_w + 1) & ~1) * 2, -+ ofb->port->fixed_info.line_length, - (uint8_t*)buf, - (uint8_t*)ofb->port->fb); - break; -diff --git a/src/omapfb-xv.c b/src/omapfb-xv.c -index 1df651e..0fee2c6 100644 ---- a/src/omapfb-xv.c -+++ b/src/omapfb-xv.c -@@ -169,8 +169,11 @@ static int OMAPFBXVQueryImageAttributes (ScrnInfoPtr pScrn, - h = *height; - - w = (w + 1) & ~1; -+ -+ /* Can't calculate these here - don't know line length - ofb->port->mem_info.size = w << 1; - ofb->port->mem_info.size *= h; -+ */ - - return size; - } --- -1.8.0 - diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0006-omapfb-port-to-new-xserver-video-API.patch b/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0006-omapfb-port-to-new-xserver-video-API.patch deleted file mode 100644 index d56729987c..0000000000 --- a/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0006-omapfb-port-to-new-xserver-video-API.patch +++ /dev/null @@ -1,272 +0,0 @@ -From 803ecf2909949e6152f4a81b6cbb92a4430679ac Mon Sep 17 00:00:00 2001 -From: Martin Jansa <Martin.Jansa@gmail.com> -Date: Fri, 23 Nov 2012 00:31:06 +0100 -Subject: [PATCH 6/6] omapfb: port to new xserver video API - -Upstream-Status: Pending - -Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> ---- - src/compat-api.h | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/omapfb-driver.c | 41 ++++++++++++----------- - 2 files changed, 118 insertions(+), 19 deletions(-) - create mode 100644 src/compat-api.h - -diff --git a/src/compat-api.h b/src/compat-api.h -new file mode 100644 -index 0000000..b1591b1 ---- /dev/null -+++ b/src/compat-api.h -@@ -0,0 +1,96 @@ -+/* -+ * Copyright 2012 Red Hat, Inc. -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, including without limitation -+ * the rights to use, copy, modify, merge, publish, distribute, sublicense, -+ * and/or sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following conditions: -+ * -+ * The above copyright notice and this permission notice (including the next -+ * paragraph) shall be included in all copies or substantial portions of the -+ * Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -+ * DEALINGS IN THE SOFTWARE. -+ * -+ * Author: Dave Airlie <airlied@redhat.com> -+ */ -+ -+/* this file provides API compat between server post 1.13 and pre it, -+ it should be reused inside as many drivers as possible */ -+#ifndef COMPAT_API_H -+#define COMPAT_API_H -+ -+#ifndef GLYPH_HAS_GLYPH_PICTURE_ACCESSOR -+#define GetGlyphPicture(g, s) GlyphPicture((g))[(s)->myNum] -+#define SetGlyphPicture(g, s, p) GlyphPicture((g))[(s)->myNum] = p -+#endif -+ -+#ifndef XF86_HAS_SCRN_CONV -+#define xf86ScreenToScrn(s) xf86Screens[(s)->myNum] -+#define xf86ScrnToScreen(s) screenInfo.screens[(s)->scrnIndex] -+#endif -+ -+#ifndef XF86_SCRN_INTERFACE -+ -+#define SCRN_ARG_TYPE int -+#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = xf86Screens[(arg1)] -+ -+#define SCREEN_ARG_TYPE int -+#define SCREEN_PTR(arg1) ScreenPtr pScreen = screenInfo.screens[(arg1)] -+ -+#define SCREEN_INIT_ARGS_DECL int index, ScreenPtr pScreen, int argc, char **argv -+ -+#define BLOCKHANDLER_ARGS_DECL int arg, pointer blockData, pointer pTimeout, pointer pReadmask -+#define BLOCKHANDLER_ARGS arg, blockData, pTimeout, pReadmask -+ -+#define CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr pScreen -+#define CLOSE_SCREEN_ARGS scrnIndex, pScreen -+ -+#define ADJUST_FRAME_ARGS_DECL int arg, int x, int y, int flags -+ -+#define SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags -+ -+#define FREE_SCREEN_ARGS_DECL int arg, int flags -+#define FREE_SCREEN_ARGS(x) (x)->scrnIndex, 0 -+ -+#define VT_FUNC_ARGS_DECL int arg, int flags -+#define VT_FUNC_ARGS(flags) pScrn->scrnIndex, (flags) -+ -+#define XF86_ENABLEDISABLEFB_ARG(x) ((x)->scrnIndex) -+#else -+#define SCRN_ARG_TYPE ScrnInfoPtr -+#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1) -+ -+#define SCREEN_ARG_TYPE ScreenPtr -+#define SCREEN_PTR(arg1) ScreenPtr pScreen = (arg1) -+ -+#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv -+ -+#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask -+#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask -+ -+#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen -+#define CLOSE_SCREEN_ARGS pScreen -+ -+#define ADJUST_FRAME_ARGS_DECL ScrnInfoPtr arg, int x, int y -+#define SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode -+ -+#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg -+#define FREE_SCREEN_ARGS(x) (x) -+ -+#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg -+#define VT_FUNC_ARGS(flags) pScrn -+ -+#define XF86_ENABLEDISABLEFB_ARG(x) (x) -+ -+#endif -+ -+#endif -diff --git a/src/omapfb-driver.c b/src/omapfb-driver.c -index 07989f5..486ffa4 100644 ---- a/src/omapfb-driver.c -+++ b/src/omapfb-driver.c -@@ -44,6 +44,8 @@ - - #include "exa.h" - -+#include "compat-api.h" -+ - #ifdef HAVE_XEXTPROTO_71 - #include <X11/extensions/dpmsconst.h> - #else -@@ -70,10 +72,10 @@ - - static Bool OMAPFBProbe(DriverPtr drv, int flags); - static Bool OMAPFBPreInit(ScrnInfoPtr pScrn, int flags); --static Bool OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv); --static Bool OMAPFBEnterVT(int scrnIndex, int flags); --static void OMAPFBLeaveVT(int scrnIndex, int flags); --static Bool OMAPFBSwitchMode(int scrnIndex, DisplayModePtr mode, int flags); -+static Bool OMAPFBScreenInit(SCREEN_INIT_ARGS_DECL); -+static Bool OMAPFBEnterVT(VT_FUNC_ARGS_DECL); -+static void OMAPFBLeaveVT(VT_FUNC_ARGS_DECL); -+static Bool OMAPFBSwitchMode(SWITCH_MODE_ARGS_DECL); - - static Bool - OMAPFBEnsureRec(ScrnInfoPtr pScrn) -@@ -481,7 +483,7 @@ OMAPFBXvScreenInit(ScreenPtr pScreen) - } - - static Bool --OMAPFBCloseScreen(int scrnIndex, ScreenPtr pScreen) -+OMAPFBCloseScreen(CLOSE_SCREEN_ARGS_DECL) - { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - OMAPFBPtr ofb = OMAPFB(pScrn); -@@ -490,11 +492,11 @@ OMAPFBCloseScreen(int scrnIndex, ScreenPtr pScreen) - - pScreen->CloseScreen = ofb->CloseScreen; - -- return (*pScreen->CloseScreen)(scrnIndex, pScreen); -+ return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS); - } - - static Bool --OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) -+OMAPFBScreenInit(SCREEN_INIT_ARGS_DECL) - { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - OMAPFBPtr ofb = OMAPFB(pScrn); -@@ -516,7 +518,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) - PROT_READ | PROT_WRITE, MAP_SHARED, - ofb->fd, 0); - if (ofb->fb == MAP_FAILED) { -- xf86DrvMsg(scrnIndex, X_ERROR, "Mapping framebuffer memory failed, wanted %d bytes.\n", ofb->mem_info.size); -+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Mapping framebuffer memory failed, wanted %d bytes.\n", ofb->mem_info.size); - return FALSE; - } - -@@ -526,7 +528,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) - /* Only support TrueColor for now */ - if (!miSetVisualTypes(pScrn->depth, TrueColorMask, - pScrn->rgbBits, pScrn->defaultVisual)) { -- xf86DrvMsg(scrnIndex, X_ERROR, "visual type setup failed" -+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "visual type setup failed" - " for %d bits per pixel [1]\n", - pScrn->bitsPerPixel); - return FALSE; -@@ -534,7 +536,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) - - /* Set up pixmap depth information */ - if (!miSetPixmapDepths()) { -- xf86DrvMsg(scrnIndex,X_ERROR,"pixmap depth setup failed\n"); -+ xf86DrvMsg(pScrn->scrnIndex,X_ERROR,"pixmap depth setup failed\n"); - return FALSE; - } - -@@ -546,7 +548,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) - pScrn->virtualY, pScrn->xDpi, - pScrn->yDpi, pScrn->displayWidth, - pScrn->bitsPerPixel)) { -- xf86DrvMsg(scrnIndex, X_ERROR, "fbScreenInit failed\n"); -+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "fbScreenInit failed\n"); - return FALSE; - } - -@@ -567,7 +569,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) - - /* Initialize XRender fallbacks */ - if (!fbPictureInit(pScreen, NULL, 0)) { -- xf86DrvMsg(scrnIndex, X_ERROR, "fbPictureInit failed\n"); -+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "fbPictureInit failed\n"); - return FALSE; - } - -@@ -579,7 +581,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) - - /* Initialize default colormap */ - if (!miCreateDefColormap(pScreen)) { -- xf86DrvMsg(scrnIndex, X_ERROR, -+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "creating default colormap failed\n"); - return FALSE; - } -@@ -589,7 +591,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) - /* This is non-fatal since we might be running against older - * kernel driver in which case we only do basic 2D stuff... - */ -- xf86DrvMsg(scrnIndex, X_ERROR, "Reading plane info failed\n"); -+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Reading plane info failed\n"); - } else if (!ofb->dss) { - - ofb->plane_info.enabled = 1; -@@ -602,7 +604,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) - } - - if (ioctl (ofb->fd, OMAPFB_SETUP_PLANE, &ofb->plane_info)) { -- xf86DrvMsg(scrnIndex, X_ERROR, -+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "%s: Plane setup failed: %s\n", - __FUNCTION__, strerror(errno)); - return FALSE; -@@ -645,9 +647,10 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) - return TRUE; - } - --static Bool OMAPFBSwitchMode(int scrnIndex, DisplayModePtr mode, int flags) -+static Bool OMAPFBSwitchMode(SWITCH_MODE_ARGS_DECL) - { -- return xf86SetSingleMode (xf86Screens[scrnIndex], mode, RR_Rotate_0); -+ SCRN_INFO_PTR(arg); -+ return xf86SetSingleMode (pScrn, mode, RR_Rotate_0); - } - - void -@@ -699,14 +702,14 @@ OMAPFBPrintCapabilities(ScrnInfoPtr pScrn, - /*** Unimplemented: */ - - static Bool --OMAPFBEnterVT(int scrnIndex, int flags) -+OMAPFBEnterVT(VT_FUNC_ARGS_DECL) - { - xf86Msg(X_NOT_IMPLEMENTED, "%s\n", __FUNCTION__); - return TRUE; - } - - static void --OMAPFBLeaveVT(int scrnIndex, int flags) -+OMAPFBLeaveVT(VT_FUNC_ARGS_DECL) - { - xf86Msg(X_NOT_IMPLEMENTED, "%s\n", __FUNCTION__); - } --- -1.8.0 - diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0007-always_include_xorg_server.h.patch b/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0007-always_include_xorg_server.h.patch deleted file mode 100644 index dc0b9b3f41..0000000000 --- a/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb/0007-always_include_xorg_server.h.patch +++ /dev/null @@ -1,48 +0,0 @@ -Fix errors with glibc 2.20 - -In file included from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/string.h:634:0, - from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/xorg/os.h:53, - from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/xorg/misc.h:115, - from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/xorg/xf86str.h:37, - from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/xorg/xf86.h:44, - from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/work/i586-oe-linux/xf86-video-omapfb/2_0.1.1+gitrAUTOINC+28c006c94e-r21.7/git/src/omapfb-xv-blizzard.c:33: -/home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/xorg/os.h:579:1: error: expected identifier or '(' before '__extension__' - strndup(const char *str, size_t n); - ^ -In file included from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/string.h:634:0, - from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/xorg/os.h:53, - from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/xorg/misc.h:115, - from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/xorg/xf86str.h:37, - from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/xorg/xf86.h:44, - from /home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/work/i586-oe-linux/xf86-video-omapfb/2_0.1.1+gitrAUTOINC+28c006c94e-r21.7/git/src/omapfb-xv-generic.c:28: -/home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/qemux86/usr/include/xorg/os.h:579:1: error: expected identifier or '(' before '__extension__' - strndup(const char *str, size_t n); - ^ - -Singed-off-by: Khem Raj <raj.khem@gmail.com> - -Upstream-Status: Pending -Index: git/src/omapfb-xv-blizzard.c -=================================================================== ---- git.orig/src/omapfb-xv-blizzard.c 2014-08-28 05:16:25.684070587 -0700 -+++ git/src/omapfb-xv-blizzard.c 2014-08-28 19:05:39.440070587 -0700 -@@ -30,6 +30,7 @@ - * - - */ - -+#include <xorg-server.h> - #include "xf86.h" - #include "xf86_OSlib.h" - #include "xf86xv.h" -Index: git/src/omapfb-xv-generic.c -=================================================================== ---- git.orig/src/omapfb-xv-generic.c 2014-08-28 05:16:25.684070587 -0700 -+++ git/src/omapfb-xv-generic.c 2014-08-28 19:05:51.780070587 -0700 -@@ -25,6 +25,7 @@ - * Generic functions for the XV driver - */ - -+#include <xorg-server.h> - #include "xf86.h" - #include "xf86_OSlib.h" - #include "xf86xv.h" diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb_git.bb b/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb_git.bb deleted file mode 100644 index 7ebb960f11..0000000000 --- a/poky/meta/recipes-graphics/xorg-driver/xf86-video-omapfb_git.bb +++ /dev/null @@ -1,37 +0,0 @@ -require xorg-driver-video.inc - -SUMMARY = "X.Org X server -- Texas Instruments OMAP framebuffer driver" - -DESCRIPTION = "omapfb driver supports the basic Texas Instruments OMAP \ -framebuffer." - -LICENSE = "MIT-X & GPLv2+" -LIC_FILES_CHKSUM = "file://COPYING;md5=63e2cbac53863f60e2f43343fb34367f" -DEPENDS += "virtual/libx11" - -SRCREV = "33e36c12dde336edbdd34626dd8adfcaebc8fbb8" -PR = "${INC_PR}.7" -PV = "0.1.1+gitr${SRCPV}" - -# Blacklist debian-specific tags in upstream version check -UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)(?!-)" - -SRC_URI = "git://anonscm.debian.org/collab-maint/xf86-video-omapfb.git \ - file://0001-Prevents-omapfb-from-from-crashing-when-pixelclock-o.patch \ - file://0001-Revert-Set-a-large-CRTC-upper-limit-to-not-prune-lar.patch \ - file://0002-Revert-Set-virtual-size-when-configuring-framebuffer.patch \ - file://0003-force-plain-mode.patch \ - file://0004-blacklist-tv-out.patch \ - file://0005-Attempt-to-fix-VRFB.patch \ - file://0006-omapfb-port-to-new-xserver-video-API.patch \ - file://0007-always_include_xorg_server.h.patch \ -" - -S = "${WORKDIR}/git" - -CFLAGS += " -I${STAGING_INCDIR}/xorg " - -# Use overlay 2 on omap3 to enable other apps to use overlay 1 (e.g. dmai or omapfbplay) -do_compile_prepend_armv7a () { - sed -i -e s:fb1:fb2:g ${S}/src/omapfb-xv.c -} diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.3.4.bb b/poky/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.4.0.bb index fa251b50ea..9a110148d8 100644 --- a/poky/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.3.4.bb +++ b/poky/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.4.0.bb @@ -9,13 +9,11 @@ can drive most VESA-compatible video cards, but only makes use of the \ basic standard VESA core that is common to these cards. The driver \ supports depths 8, 15 16 and 24." -PR = "${INC_PR}.0" - -DEPENDS += "virtual/libx11 randrproto libpciaccess" +DEPENDS += "virtual/libx11 xorgproto libpciaccess" COMPATIBLE_HOST = '(i.86|x86_64).*-linux' RRECOMMENDS_${PN} += "xserver-xorg-module-libint10" -SRC_URI[md5sum] = "a893c37c589f7a31cea929a5d896a0e2" -SRC_URI[sha256sum] = "7bddf4d879dd6f67088ecb203a31e12334aab980174bd0909930a21f32e251c1" +SRC_URI[md5sum] = "8134201beaf6f77150c7809c3cc802e6" +SRC_URI[sha256sum] = "bf443c94d7bf6cd4e248f8a3147f4647be04dc4c80250d9405006263bbdee38c" diff --git a/poky/meta/recipes-graphics/xorg-driver/xf86-video-vmware_13.2.1.bb b/poky/meta/recipes-graphics/xorg-driver/xf86-video-vmware_13.3.0.bb index 706d35d2fc..41612b7f07 100644 --- a/poky/meta/recipes-graphics/xorg-driver/xf86-video-vmware_13.2.1.bb +++ b/poky/meta/recipes-graphics/xorg-driver/xf86-video-vmware_13.3.0.bb @@ -6,12 +6,12 @@ DESCRIPTION = "vmware is an Xorg driver for VMware virtual video cards." LIC_FILES_CHKSUM = "file://COPYING;md5=5fcd7d437a959a15fbee8707747c6b53" -DEPENDS += "virtual/libx11 xineramaproto videoproto libpciaccess" +DEPENDS += "virtual/libx11 xorgproto libpciaccess" SRC_URI += "file://0002-add-option-for-vmwgfx.patch" -SRC_URI[md5sum] = "4c3912e4d8947f6c2fc1ee9e2f211d74" -SRC_URI[sha256sum] = "e2f7f7101fba7f53b268e7a25908babbf155b3984fb5268b3d244eb6c11bf62b" +SRC_URI[md5sum] = "08d66d062055080ff699ab4869726ea2" +SRC_URI[sha256sum] = "47971924659e51666a757269ad941a059ef5afe7a47b5101c174a6022ac4066c" COMPATIBLE_HOST = '(i.86.*-linux|x86_64.*-linux)' diff --git a/poky/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc b/poky/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc index bca0aade6c..e657c65b4c 100644 --- a/poky/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc +++ b/poky/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc @@ -7,7 +7,7 @@ LICENSE = "MIT-X" PE = "2" INC_PR = "r21" -DEPENDS = "virtual/xserver xproto randrproto util-macros" +DEPENDS = "virtual/xserver xorgproto util-macros" SRC_URI = "${XORG_MIRROR}/individual/driver/${BPN}-${PV}.tar.bz2" diff --git a/poky/meta/recipes-graphics/xorg-driver/xorg-driver-input.inc b/poky/meta/recipes-graphics/xorg-driver/xorg-driver-input.inc index 342067d6c1..57912e70db 100644 --- a/poky/meta/recipes-graphics/xorg-driver/xorg-driver-input.inc +++ b/poky/meta/recipes-graphics/xorg-driver/xorg-driver-input.inc @@ -1,6 +1,6 @@ require xorg-driver-common.inc -DEPENDS += "inputproto kbproto " +DEPENDS += "xorgproto" python add_xorg_abi_depends() { _add_xorg_abi_depends(d, "input") diff --git a/poky/meta/recipes-graphics/xorg-driver/xorg-driver-video.inc b/poky/meta/recipes-graphics/xorg-driver/xorg-driver-video.inc index b5862dae10..2938ef1161 100644 --- a/poky/meta/recipes-graphics/xorg-driver/xorg-driver-video.inc +++ b/poky/meta/recipes-graphics/xorg-driver/xorg-driver-video.inc @@ -1,6 +1,6 @@ require xorg-driver-common.inc -DEPENDS =+ "renderproto videoproto xextproto fontsproto" +DEPENDS =+ "xorgproto" python add_xorg_abi_depends() { _add_xorg_abi_depends(d, "video") diff --git a/poky/meta/recipes-graphics/xorg-lib/libdmx_1.1.3.bb b/poky/meta/recipes-graphics/xorg-lib/libdmx_1.1.4.bb index e623cee421..66172cb30c 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libdmx_1.1.3.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libdmx_1.1.4.bb @@ -11,10 +11,10 @@ LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=a3c3499231a8035efd0e004cfbd3b72a \ file://src/dmx.c;endline=33;md5=c43f19af03c7c8619cadc9724ed9afe1" -DEPENDS += "libxext dmxproto" +DEPENDS += "libxext xorgproto" PE = "1" -SRC_URI[md5sum] = "ba983eba5a9f05d152a0725b8e863151" -SRC_URI[sha256sum] = "c97da36d2e56a2d7b6e4f896241785acc95e97eb9557465fd66ba2a155a7b201" +SRC_URI[md5sum] = "d2f1f0ec68ac3932dd7f1d9aa0a7a11c" +SRC_URI[sha256sum] = "253f90005d134fa7a209fbcbc5a3024335367c930adf0f3203e754cf32747243" diff --git a/poky/meta/recipes-graphics/xorg-lib/libfontenc_1.1.3.bb b/poky/meta/recipes-graphics/xorg-lib/libfontenc_1.1.3.bb index a181f05c29..34d5fc4487 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libfontenc_1.1.3.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libfontenc_1.1.3.bb @@ -8,7 +8,7 @@ require xorg-lib-common.inc LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=96254c20ab81c63e65b26f0dbcd4a1c1" -DEPENDS += "zlib xproto font-util" +DEPENDS += "zlib xorgproto font-util" PE = "1" BBCLASSEXTEND = "native" diff --git a/poky/meta/recipes-graphics/xorg-lib/libice_1.0.9.bb b/poky/meta/recipes-graphics/xorg-lib/libice_1.0.9.bb index 5ccd1d8c36..999434ee55 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libice_1.0.9.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libice_1.0.9.bb @@ -11,7 +11,7 @@ require xorg-lib-common.inc LICENSE = "MIT-style" LIC_FILES_CHKSUM = "file://COPYING;md5=d162b1b3c6fa812da9d804dcf8584a93" -DEPENDS += "xproto xtrans" +DEPENDS += "xorgproto xtrans" PROVIDES = "ice" PE = "1" diff --git a/poky/meta/recipes-graphics/xorg-lib/libpciaccess_0.14.bb b/poky/meta/recipes-graphics/xorg-lib/libpciaccess_0.14.bb index a44a5c8927..d030c31bd0 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libpciaccess_0.14.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libpciaccess_0.14.bb @@ -16,3 +16,5 @@ LICENSE = "MIT & MIT-style" LIC_FILES_CHKSUM = "file://COPYING;md5=277aada5222b9a22fbf3471ff3687068" REQUIRED_DISTRO_FEATURES = "" + +BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-graphics/xorg-lib/libsm_1.2.2.bb b/poky/meta/recipes-graphics/xorg-lib/libsm_1.2.2.bb index 48922cb992..fdc693be14 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libsm_1.2.2.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libsm_1.2.2.bb @@ -11,7 +11,7 @@ require xorg-lib-common.inc LICENSE = "MIT-style" LIC_FILES_CHKSUM = "file://COPYING;md5=c0fb37f44e02bdbde80546024400728d" -DEPENDS += "libice xproto xtrans" +DEPENDS += "libice xorgproto xtrans" # libSM can work without libuuid, we explicitly disable it to break the following circular dependency # when DISTRO_FEATURES contains 'systemd' and 'x11'. diff --git a/poky/meta/recipes-graphics/xorg-lib/libx11-diet_1.6.5.bb b/poky/meta/recipes-graphics/xorg-lib/libx11-diet_1.6.6.bb index 295f96a2e7..a4ba4e54ed 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libx11-diet_1.6.5.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libx11-diet_1.6.6.bb @@ -3,16 +3,16 @@ require libx11.inc DESCRIPTION += " Support for XCMS and XLOCALE is disabled in \ this version." -SRC_URI += "file://X18NCMSstubs.diff \ - file://fix-disable-xlocale.diff \ +SRC_URI += "file://X18NCMSstubs.patch \ + file://fix-disable-xlocale.patch \ file://fix-utf8-wrong-define.patch \ " RPROVIDES_${PN}-dev = "libx11-dev" RPROVIDES_${PN}-locale = "libx11-locale" -SRC_URI[md5sum] = "0f618db70c4054ca67cee0cc156a4255" -SRC_URI[sha256sum] = "4d3890db2ba225ba8c55ca63c6409c1ebb078a2806de59fb16342768ae63435d" +SRC_URI[md5sum] = "6b0f83e851b3b469dd660f3a95ac3e42" +SRC_URI[sha256sum] = "65fe181d40ec77f45417710c6a67431814ab252d21c2e85c75dd1ed568af414f" EXTRA_OECONF += "--disable-xlocale" diff --git a/poky/meta/recipes-graphics/xorg-lib/libx11.inc b/poky/meta/recipes-graphics/xorg-lib/libx11.inc index 4af40ab8a1..36c950ad34 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libx11.inc +++ b/poky/meta/recipes-graphics/xorg-lib/libx11.inc @@ -6,8 +6,6 @@ basic functions of the window system." require xorg-lib-common.inc -inherit siteinfo - FILESEXTRAPATHS =. "${FILE_DIRNAME}/libx11:" PE = "1" @@ -18,8 +16,8 @@ XORG_PN = "libX11" LICENSE = "MIT & MIT-style & BSD" LIC_FILES_CHKSUM = "file://COPYING;md5=172255dee66bb0151435b2d5d709fcf7" -DEPENDS += "xproto xextproto xtrans libxcb kbproto inputproto" -DEPENDS += "xproto-native" +DEPENDS += "xorgproto xtrans libxcb" +DEPENDS += "xorgproto-native" EXTRA_OECONF += "--with-keysymdefdir=${STAGING_INCDIR}/X11/ --disable-xf86bigfont" EXTRA_OEMAKE += 'CWARNFLAGS=""' diff --git a/poky/meta/recipes-graphics/xorg-lib/libx11/X18NCMSstubs.diff b/poky/meta/recipes-graphics/xorg-lib/libx11/X18NCMSstubs.patch index 744cedc777..c1172147a6 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libx11/X18NCMSstubs.diff +++ b/poky/meta/recipes-graphics/xorg-lib/libx11/X18NCMSstubs.patch @@ -1,52 +1,50 @@ -Upstream-Status: Pending +From 62005ad019d6afb81da100b3113292a16472d241 Mon Sep 17 00:00:00 2001 +From: Changqing Li <changqing.li@windriver.com> +Date: Mon, 10 Sep 2018 09:08:27 +0800 +Subject: [PATCH] Stub out x18n +Update patch to version 1.6.6 +Signed-off-by: Changqing Li <changqing.li@windriver.com> Upstream-Status: Inappropriate [configuration] -Index: libX11-1.3/src/imConv.c -=================================================================== ---- libX11-1.3.orig/src/imConv.c -+++ libX11-1.3/src/imConv.c -@@ -83,6 +83,7 @@ static const struct SubstRec SubstTable[ - * from UCS char to specified charset char. - * This converter is needed for _XimGetCharCode subroutine. - */ -+#ifdef XLOCALE - XPointer - _XimGetLocaleCode ( - _Xconst char* encoding_name) -@@ -96,6 +97,7 @@ _XimGetLocaleCode ( - } - return cvt; - } -+#endif +--- + src/Makefile.am | 5 +- + src/X18NCMSstubs.c | 426 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/imConv.c | 5 +- + src/locking.c | 4 + + 4 files changed, 438 insertions(+), 2 deletions(-) + create mode 100644 src/X18NCMSstubs.c + +diff --git a/src/Makefile.am b/src/Makefile.am +index f8c476d..cdbcbbd 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -336,13 +336,16 @@ if THRSTUBS + libX11_la_SOURCES+=UIThrStubs.c + endif - /* - * Returns the locale dependent representation of a keysym. -@@ -106,6 +108,7 @@ _XimGetLocaleCode ( - * terminating NUL byte. Return 0 if the keysym is not representable in the - * locale - */ -+#ifdef XLOCALE - /*ARGSUSED*/ - int - _XimGetCharCode ( -@@ -135,6 +138,7 @@ _XimGetCharCode ( - buf[count]= '\0'; - return count; - } -+#endif ++libX11_la_SOURCES+=X18NCMSstubs.c ++ + x11datadir = @X11_DATADIR@ + x11data_DATA = XErrorDB - #ifdef XKB - static int lookup_string( -Index: libX11-1.3/src/X18NCMSstubs.c -=================================================================== + EXTRA_DIST = \ + $(x11data_DATA) \ + os2Stubs.c \ +- UIThrStubs.c ++ UIThrStubs.c \ ++ X18NCMSstubs.c + + libX11_xcb_la_SOURCES = x11_xcb.c Xxcbint.h + libX11_xcb_la_LDFLAGS = -version-number 1:0:0 -no-undefined +diff --git a/src/X18NCMSstubs.c b/src/X18NCMSstubs.c +new file mode 100644 +index 0000000..429cb31 --- /dev/null -+++ libX11-1.3/src/X18NCMSstubs.c -@@ -0,0 +1,428 @@ -+/* -+ * X18NCMSstubs.c -+ * - Provides stubs and dummy funcs needed when Xcms and XLocale stuff removed ++++ b/src/X18NCMSstubs.c +@@ -0,0 +1,426 @@ ++ /* - Provides stubs and dummy funcs needed when Xcms and XLocale stuff removed + * -+ * Copyright © 2003 Matthew Allum ++ * Copyright © 2003 Matthew Allum + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that @@ -470,33 +468,48 @@ Index: libX11-1.3/src/X18NCMSstubs.c +} + +#endif -Index: libX11-1.3/src/Makefile.am -=================================================================== ---- libX11-1.3.orig/src/Makefile.am -+++ libX11-1.3/src/Makefile.am -@@ -335,6 +335,8 @@ if THRSTUBS - libX11_la_SOURCES+=UIThrStubs.c - endif - -+libX11_la_SOURCES+=X18NCMSstubs.c -+ - x11datadir = @X11_DATADIR@ - x11data_DATA = XKeysymDB XErrorDB - -@@ -342,6 +344,7 @@ EXTRA_DIST = \ - $(x11data_DATA) \ - os2Stubs.c \ -- UIThrStubs.c -+ UIThrStubs.c \ -+ X18NCMSstubs.c - - if XCB - libX11_la_SOURCES += \ -Index: libX11-1.3/src/locking.c -=================================================================== ---- libX11-1.3.orig/src/locking.c -+++ libX11-1.3/src/locking.c -@@ -66,7 +66,9 @@ in this Software without prior written a +diff --git a/src/imConv.c b/src/imConv.c +index c3c1974..04ecc81 100644 +--- a/src/imConv.c ++++ b/src/imConv.c +@@ -80,6 +80,7 @@ static const struct SubstRec SubstTable[] = { + * from UCS char to specified charset char. + * This converter is needed for _XimGetCharCode subroutine. + */ ++#ifdef XLOCALE + XPointer + _XimGetLocaleCode ( + _Xconst char* encoding_name) +@@ -93,7 +94,7 @@ _XimGetLocaleCode ( + } + return cvt; + } +- ++#endif + /* + * Returns the locale dependent representation of a keysym. + * The locale's encoding is passed in form of pointer to UCS convertor. +@@ -105,6 +105,7 @@ _XimGetLocaleCode ( + * locale + */ + /*ARGSUSED*/ ++#ifdef XLOCALE + int + _XimGetCharCode ( + XPointer ucs_conv, +@@ -133,6 +134,7 @@ _XimGetCharCode ( + buf[count]= '\0'; + return count; + } ++#endif + + #ifdef XKB + static int lookup_string( +diff --git a/src/locking.c b/src/locking.c +index 9f4fe06..e6967ee 100644 +--- a/src/locking.c ++++ b/src/locking.c +@@ -65,7 +65,9 @@ in this Software without prior written authorization from The Open Group. #define NUM_FREE_CVLS 4 /* in lcWrap.c */ @@ -506,7 +519,7 @@ Index: libX11-1.3/src/locking.c #ifdef WIN32 static DWORD _X_TlsIndex = (DWORD)-1; -@@ -594,9 +596,11 @@ Status XInitThreads(void) +@@ -597,9 +599,11 @@ Status XInitThreads(void) _Xglobal_lock = &global_lock; xmutex_init(_Xglobal_lock->lock); xmutex_set_name(_Xglobal_lock->lock, "Xlib global"); @@ -518,3 +531,6 @@ Index: libX11-1.3/src/locking.c _XLockMutex_fn = _XLockMutex; _XUnlockMutex_fn = _XUnlockMutex; _XCreateMutex_fn = _XCreateMutex; +-- +2.7.4 + diff --git a/poky/meta/recipes-graphics/xorg-lib/libx11/fix-disable-xlocale.diff b/poky/meta/recipes-graphics/xorg-lib/libx11/fix-disable-xlocale.diff deleted file mode 100644 index a7c3984fd5..0000000000 --- a/poky/meta/recipes-graphics/xorg-lib/libx11/fix-disable-xlocale.diff +++ /dev/null @@ -1,17 +0,0 @@ -Upstream-Status: Pending - -Signed-off-by: Xiaofeng Yan <xiaofeng.yan@windriver.com> ---- libX11-X11R7.0-1.0.0/src/Font.c.orig 2006-03-12 18:35:42.000000000 +0100 -+++ libX11-X11R7.0-1.0.0/src/Font.c 2006-03-12 18:40:27.000000000 +0100 -@@ -701,7 +701,11 @@ - } - if (l - 2 - (p - charset) < 0) - return 0; -+#ifdef XLOCALE - if (_XlcNCompareISOLatin1(name + l - 2 - (p - charset), charset, p - charset)) -+#else -+ if (strncasecmp(name + l - 2 - (p - charset), charset, p - charset)) -+#endif - return 0; - if (strlen(p + 1) + l - 1 >= sizeof(buf) - 1) - return 0; diff --git a/poky/meta/recipes-graphics/xorg-lib/libx11/fix-disable-xlocale.patch b/poky/meta/recipes-graphics/xorg-lib/libx11/fix-disable-xlocale.patch new file mode 100644 index 0000000000..09cf74fff4 --- /dev/null +++ b/poky/meta/recipes-graphics/xorg-lib/libx11/fix-disable-xlocale.patch @@ -0,0 +1,33 @@ +From 5c1693028ef12ab767d7cdbc349c27efa1ada87a Mon Sep 17 00:00:00 2001 +From: Changqing Li <changqing.li@windriver.com> +Date: Mon, 10 Sep 2018 09:13:38 +0800 +Subject: [PATCH] Fix build when xlocale disabled + +Signed-off-by: Xiaofeng Yan <xiaofeng.yan@windriver.com> + +Update patch to version 1.6.6 +Signed-off-by: Changqing Li <changqing.li@windriver.com> +Upstream-Status: Pending +--- + src/Font.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/Font.c b/src/Font.c +index a73f9b1..8f4d210 100644 +--- a/src/Font.c ++++ b/src/Font.c +@@ -675,7 +675,11 @@ int _XF86LoadQueryLocaleFont( + } + if (l - 2 - (p - charset) < 0) + return 0; ++#ifdef XLOCALE + if (_XlcNCompareISOLatin1(name + l - 2 - (p - charset), charset, p - charset)) ++#else ++ if (strncasecmp(name + l - 2 - (p - charset), charset, p - charset)) ++#endif + return 0; + if (strlen(p + 1) + l - 1 >= sizeof(buf) - 1) + return 0; +-- +2.7.4 + diff --git a/poky/meta/recipes-graphics/xorg-lib/libx11/fix-utf8-wrong-define.patch b/poky/meta/recipes-graphics/xorg-lib/libx11/fix-utf8-wrong-define.patch index c6347f5be1..0b57e0b068 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libx11/fix-utf8-wrong-define.patch +++ b/poky/meta/recipes-graphics/xorg-lib/libx11/fix-utf8-wrong-define.patch @@ -1,19 +1,31 @@ -Upstream-Status: Pending +From 046703373055c7029c19d171e415ff3caaa87372 Mon Sep 17 00:00:00 2001 +From: Changqing Li <changqing.li@windriver.com> +Date: Mon, 10 Sep 2018 09:16:33 +0800 +Subject: [PATCH] Disable unicode Signed-off-by: Xiaofeng Yan <xiaofeng.yan@windriver.com> -# -# Patch managed by http://www.holgerschurig.de/patcher.html -# +Update patch to version 1.6.6 + +Signed-off-by: Changqing Li <changqing.li@windriver.com> +Upstream-Status: Pending +--- + include/X11/Xlib.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) ---- libX11-X11R7.0-1.0.0/include/X11/Xlib.h~fix-utf8-wrong-define -+++ libX11-X11R7.0-1.0.0/include/X11/Xlib.h -@@ -103,7 +103,7 @@ +diff --git a/include/X11/Xlib.h b/include/X11/Xlib.h +index 84403f7..56be654 100644 +--- a/include/X11/Xlib.h ++++ b/include/X11/Xlib.h +@@ -67,7 +67,7 @@ _Xmblen( /* API mentioning "UTF8" or "utf8" is an XFree86 extension, introduced in November 2000. Its presence is indicated through the following macro. */ -#define X_HAVE_UTF8_STRING 1 +#undef X_HAVE_UTF8_STRING - typedef char *XPointer; - + /* The Xlib structs are full of implicit padding to properly align members. + We can't clean that up without breaking ABI, so tell clang not to bother +-- +2.7.4 + diff --git a/poky/meta/recipes-graphics/xorg-lib/libx11_1.6.5.bb b/poky/meta/recipes-graphics/xorg-lib/libx11_1.6.6.bb index 427bf28ceb..0fee1a9089 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libx11_1.6.5.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libx11_1.6.6.bb @@ -10,5 +10,5 @@ do_configure_append () { sed -i -e "/X11_CFLAGS/d" ${B}/src/util/Makefile } -SRC_URI[md5sum] = "0f618db70c4054ca67cee0cc156a4255" -SRC_URI[sha256sum] = "4d3890db2ba225ba8c55ca63c6409c1ebb078a2806de59fb16342768ae63435d" +SRC_URI[md5sum] = "6b0f83e851b3b469dd660f3a95ac3e42" +SRC_URI[sha256sum] = "65fe181d40ec77f45417710c6a67431814ab252d21c2e85c75dd1ed568af414f" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxau_1.0.8.bb b/poky/meta/recipes-graphics/xorg-lib/libxau_1.0.8.bb index 2ef8bfa8b6..8c52475b85 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxau_1.0.8.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxau_1.0.8.bb @@ -11,7 +11,7 @@ inherit gettext LICENSE = "MIT-style" LIC_FILES_CHKSUM = "file://COPYING;md5=7908e342491198401321cec1956807ec" -DEPENDS += " xproto" +DEPENDS += " xorgproto" PROVIDES = "xau" PE = "1" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxcalibrate/fix-xcb.patch b/poky/meta/recipes-graphics/xorg-lib/libxcalibrate/fix-xcb.patch deleted file mode 100644 index d6148834a6..0000000000 --- a/poky/meta/recipes-graphics/xorg-lib/libxcalibrate/fix-xcb.patch +++ /dev/null @@ -1,29 +0,0 @@ -Upstream-Status: Pending - -There is no extra reply data and if we say not to disgard it, xcb -throws fatal asserts. - -RP - 26/11/09 - -Index: git/xcalibrate.c -=================================================================== ---- git.orig/xcalibrate.c 2009-11-26 08:11:48.000000000 +0000 -+++ git/xcalibrate.c 2009-11-26 08:09:55.000000000 +0000 -@@ -216,7 +216,7 @@ - req->reqType = info->codes->major_opcode; - req->xCalibrateReqType = X_XCalibrateRawMode; - req->on = enable; -- if (!_XReply (dpy, (xReply *) &rep, 0, xFalse)) -+ if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) - { - UnlockDisplay (dpy); - SyncHandle (); -@@ -240,7 +240,7 @@ - req->xCalibrateReqType = X_XCalibrateScreenToCoord; - req->x = *x; - req->y = *y; -- if (!_XReply (dpy, (xReply *) &rep, 0, xFalse)) -+ if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) - { - UnlockDisplay (dpy); - SyncHandle (); diff --git a/poky/meta/recipes-graphics/xorg-lib/libxcalibrate_git.bb b/poky/meta/recipes-graphics/xorg-lib/libxcalibrate_git.bb deleted file mode 100644 index 0fe65318be..0000000000 --- a/poky/meta/recipes-graphics/xorg-lib/libxcalibrate_git.bb +++ /dev/null @@ -1,23 +0,0 @@ -SUMMARY = "XCalibrate: Touchscreen calibration library" - -DESCRIPTION = "libXCalibrate is a library for performing touchscreen \ -calibration with the kdrive tslib touchscreen driver." - -require xorg-lib-common.inc - -LICENSE = "MIT-style" -LIC_FILES_CHKSUM = "file://xcalibrate.h;endline=21;md5=fa572df6439f0f235f2612f370f153d7 \ - file://xcalibrate.c;endline=21;md5=fa572df6439f0f235f2612f370f153d7" - -DEPENDS = "virtual/libx11 calibrateproto libxext" - -SRCREV = "209d83af61ed38a002c8096377deac292b3e396c" -PV = "0.0+git${SRCPV}" - -SRC_URI = "git://anongit.freedesktop.org/git/xorg/lib/libXCalibrate \ - file://fix-xcb.patch" -UPSTREAM_CHECK_COMMITS = "1" - -S = "${WORKDIR}/git" - -FILES_${PN}-locale += "${datadir}/X11/locale" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxcb/Fix-inconsistent-use-of-tabs-vs.-space.patch b/poky/meta/recipes-graphics/xorg-lib/libxcb/Fix-inconsistent-use-of-tabs-vs.-space.patch deleted file mode 100644 index 8992386359..0000000000 --- a/poky/meta/recipes-graphics/xorg-lib/libxcb/Fix-inconsistent-use-of-tabs-vs.-space.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 8740a288ca468433141341347aa115b9544891d3 Mon Sep 17 00:00:00 2001 -From: Thomas Klausner <wiz@NetBSD.org> -Date: Thu, 19 May 2016 17:31:18 +0200 -Subject: [PATCH] Fix inconsistent use of tabs vs. space. - -Needed for at least python-3.5.x. - -Signed-off-by: Thomas Klausner <wiz@NetBSD.org> -Signed-off-by: Uli Schlachter <psychon@znc.in> - -Upstream-Status: Backport - -Signed-off-by: Robert Yang <liezhi.yang@windriver.com> ---- - src/c_client.py | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) - -diff --git a/src/c_client.py b/src/c_client.py -index 57de3fb..043338d 100644 ---- a/src/c_client.py -+++ b/src/c_client.py -@@ -1364,7 +1364,7 @@ def _c_serialize(context, self): - _c(' unsigned int xcb_align_to = 0;') - if self.is_switch: - _c(' unsigned int xcb_padding_offset = %d;', -- self.get_align_offset() ) -+ self.get_align_offset() ) - prefix = [('_aux', '->', self)] - aux_ptr = 'xcb_out' - -@@ -1390,7 +1390,7 @@ def _c_serialize(context, self): - _c(' unsigned int xcb_align_to = 0;') - if self.is_switch: - _c(' unsigned int xcb_padding_offset = %d;', -- self.get_align_offset() ) -+ self.get_align_offset() ) - - elif 'sizeof' == context: - param_names = [p[2] for p in params] -@@ -1930,14 +1930,14 @@ def _c_accessors_list(self, field): - # from the request size and divide that by the member size - return '(((R->length * 4) - sizeof('+ self.c_type + '))/'+'sizeof('+field.type.member.c_wiretype+'))' - else: -- # use the accessor to get the start of the list, then -- # compute the length of it by subtracting it from -+ # use the accessor to get the start of the list, then -+ # compute the length of it by subtracting it from - # the adress of the first byte after the end of the - # request -- after_end_of_request = '(((char*)R) + R->length * 4)' -- start_of_list = '%s(R)' % (field.c_accessor_name) -+ after_end_of_request = '(((char*)R) + R->length * 4)' -+ start_of_list = '%s(R)' % (field.c_accessor_name) - bytesize_of_list = '%s - (char*)(%s)' % (after_end_of_request, start_of_list) -- return '(%s) / sizeof(%s)' % (bytesize_of_list, field.type.member.c_wiretype) -+ return '(%s) / sizeof(%s)' % (bytesize_of_list, field.type.member.c_wiretype) - else: - raise Exception( - "lengthless lists with varsized members are not supported. Fieldname '%s'" --- -2.9.0 - diff --git a/poky/meta/recipes-graphics/xorg-lib/libxcb_1.12.bb b/poky/meta/recipes-graphics/xorg-lib/libxcb_1.13.bb index a38bdea5df..a8e0307e1a 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxcb_1.12.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxcb_1.13.bb @@ -13,14 +13,14 @@ SRC_URI = "http://xcb.freedesktop.org/dist/libxcb-${PV}.tar.bz2 \ file://xcbincludedir.patch \ file://disable-check.patch \ file://gcc-mips-pr68302-mips-workaround.patch \ - file://Fix-inconsistent-use-of-tabs-vs.-space.patch \ " -SRC_URI[md5sum] = "28e552bd78bc1050b6b26ca1db0e5bb6" -SRC_URI[sha256sum] = "4adfb1b7c67e99bc9c2ccb110b2f175686576d2f792c8a71b9c8b19014057b5b" + +SRC_URI[md5sum] = "c2b6cf928afa16b0047c974e7aaa783f" +SRC_URI[sha256sum] = "188c8752193c50ff2dbe89db4554c63df2e26a2e47b0fa415a70918b5b851daa" BBCLASSEXTEND = "native nativesdk" -DEPENDS = "xcb-proto xproto libxau libpthread-stubs libxdmcp" +DEPENDS = "xcb-proto xorgproto libxau libpthread-stubs libxdmcp" PACKAGES_DYNAMIC = "^libxcb-.*" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.4.bb b/poky/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.4.bb index 70257194a9..73e2948404 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.4.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.4.bb @@ -14,7 +14,7 @@ require xorg-lib-common.inc LICENSE = "MIT-style" LIC_FILES_CHKSUM = "file://COPYING;md5=3f2907aad541f6f226fbc58cc1b3cdf1" -DEPENDS += " compositeproto virtual/libx11 libxfixes libxext" +DEPENDS += " xorgproto virtual/libx11 libxfixes libxext" PROVIDES = "xcomposite" BBCLASSEXTEND = "native" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxdamage_1.1.4.bb b/poky/meta/recipes-graphics/xorg-lib/libxdamage_1.1.4.bb index c3d70043ca..6d6ffadf20 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxdamage_1.1.4.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxdamage_1.1.4.bb @@ -16,7 +16,7 @@ require xorg-lib-common.inc LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=9fe101f30dd24134cf43146863241868" -DEPENDS += "virtual/libx11 damageproto libxfixes" +DEPENDS += "virtual/libx11 xorgproto libxfixes" PROVIDES = "xdamage" BBCLASSEXTEND = "native" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.2.bb b/poky/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.2.bb index f4e30d93d4..466f3491fd 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.2.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.2.bb @@ -13,7 +13,7 @@ inherit gettext LICENSE = "MIT-style" LIC_FILES_CHKSUM = "file://COPYING;md5=d559fb26e129626022e052a5e6e0e123" -DEPENDS += "xproto" +DEPENDS += "xorgproto" PROVIDES = "xdmcp" PE = "1" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxext_1.3.3.bb b/poky/meta/recipes-graphics/xorg-lib/libxext_1.3.3.bb index 063e531c02..aae8f2af6d 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxext_1.3.3.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxext_1.3.3.bb @@ -13,7 +13,7 @@ require xorg-lib-common.inc LICENSE = "MIT-style" LIC_FILES_CHKSUM = "file://COPYING;md5=879ce266785414bd1cbc3bc2f4d9d7c8" -DEPENDS += "xproto virtual/libx11 xextproto" +DEPENDS += "xorgproto virtual/libx11" PROVIDES = "xext" PE = "1" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxfixes_5.0.3.bb b/poky/meta/recipes-graphics/xorg-lib/libxfixes_5.0.3.bb index c80042d349..f0e2f606ce 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxfixes_5.0.3.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxfixes_5.0.3.bb @@ -10,7 +10,7 @@ require xorg-lib-common.inc LICENSE = "MIT-style" LIC_FILES_CHKSUM = "file://COPYING;md5=3c1ce42c334a6f5cccb0277556a053e0" -DEPENDS += "virtual/libx11 xproto fixesproto xextproto" +DEPENDS += "virtual/libx11 xorgproto" PE = "1" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxfont2_2.0.3.bb b/poky/meta/recipes-graphics/xorg-lib/libxfont2_2.0.3.bb index 5f27a55827..2b72d6750c 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxfont2_2.0.3.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxfont2_2.0.3.bb @@ -9,7 +9,7 @@ require xorg-lib-common.inc LICENSE = "MIT & MIT-style & BSD" LIC_FILES_CHKSUM = "file://COPYING;md5=a46c8040f2f737bcd0c435feb2ab1c2c" -DEPENDS += "freetype xtrans fontsproto libfontenc zlib" +DEPENDS += "freetype xtrans xorgproto libfontenc zlib" XORG_PN = "libXfont2" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb b/poky/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb index 79f77fceac..94c6c66e87 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb @@ -9,7 +9,7 @@ require xorg-lib-common.inc LICENSE = "MIT & MIT-style & BSD" LIC_FILES_CHKSUM = "file://COPYING;md5=a46c8040f2f737bcd0c435feb2ab1c2c" -DEPENDS += "freetype xtrans fontsproto libfontenc zlib" +DEPENDS += "freetype xtrans xorgproto libfontenc zlib" PROVIDES = "xfont" PE = "1" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxi_1.7.9.bb b/poky/meta/recipes-graphics/xorg-lib/libxi_1.7.9.bb index 74f0527b78..08381d9c4d 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxi_1.7.9.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxi_1.7.9.bb @@ -11,7 +11,7 @@ LICENSE = "MIT & MIT-style" LIC_FILES_CHKSUM = "file://COPYING;md5=17b064789fab936a1c58c4e13d965b0f \ file://src/XIGetDevFocus.c;endline=23;md5=cdfb0d435a33ec57ea0d1e8e395b729f" -DEPENDS += "libxext inputproto libxfixes" +DEPENDS += "libxext xorgproto libxfixes" PE = "1" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxinerama_1.1.3.bb b/poky/meta/recipes-graphics/xorg-lib/libxinerama_1.1.4.bb index bb03f44e25..edce35da5d 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxinerama_1.1.3.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxinerama_1.1.4.bb @@ -10,13 +10,13 @@ LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=6f4f634d1643a2e638bba3fcd19c2536 \ file://src/Xinerama.c;beginline=2;endline=25;md5=fcef273bfb66339256411dd06ea79c02" -DEPENDS += "libxext xineramaproto" +DEPENDS += "libxext xorgproto" PROVIDES = "xinerama" PE = "1" XORG_PN = "libXinerama" -SRC_URI[md5sum] = "9336dc46ae3bf5f81c247f7131461efd" -SRC_URI[sha256sum] = "7a45699f1773095a3f821e491cbd5e10c887c5a5fce5d8d3fced15c2ff7698e2" +SRC_URI[md5sum] = "0d5f826a197dae74da67af4a9ef35885" +SRC_URI[sha256sum] = "0008dbd7ecf717e1e507eed1856ab0d9cf946d03201b85d5dcf61489bb02d720" BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_0.8.0.bb b/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_0.8.2.bb index 050d0b740b..8cf508b0bf 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_0.8.0.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_0.8.2.bb @@ -9,8 +9,8 @@ DEPENDS = "util-macros flex-native bison-native" SRC_URI = "http://xkbcommon.org/download/${BPN}-${PV}.tar.xz" -SRC_URI[md5sum] = "7d0e4c4a137d0ac45bf6b328c84c3a81" -SRC_URI[sha256sum] = "e829265db04e0aebfb0591b6dc3377b64599558167846c3f5ee5c5e53641fe6d" +SRC_URI[md5sum] = "5f7f8533f907ebcfb1cf8dceb9501264" +SRC_URI[sha256sum] = "7ab8c4b3403d89d01898066b72cb6069bddeb5af94905a65368f671a026ed58c" UPSTREAM_CHECK_URI = "http://xkbcommon.org/" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxkbfile_1.0.9.bb b/poky/meta/recipes-graphics/xorg-lib/libxkbfile_1.0.9.bb index 39a344ccad..f5c18607ac 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxkbfile_1.0.9.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxkbfile_1.0.9.bb @@ -8,7 +8,7 @@ require xorg-lib-common.inc LICENSE = "MIT-style" LIC_FILES_CHKSUM = "file://COPYING;md5=8be7367f7e5d605a426f76bb37d4d61f" -DEPENDS += "virtual/libx11 kbproto" +DEPENDS += "virtual/libx11 xorgproto" PE = "1" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxrandr_1.5.1.bb b/poky/meta/recipes-graphics/xorg-lib/libxrandr_1.5.1.bb index 48e88d20a7..b90ebc6232 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxrandr_1.5.1.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxrandr_1.5.1.bb @@ -11,7 +11,7 @@ require xorg-lib-common.inc LICENSE = "MIT-style" LIC_FILES_CHKSUM = "file://COPYING;md5=c9d1a2118a6cd5727521db8e7a2fee69" -DEPENDS += "virtual/libx11 randrproto libxrender libxext" +DEPENDS += "virtual/libx11 xorgproto libxrender libxext" PE = "1" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxrender_0.9.10.bb b/poky/meta/recipes-graphics/xorg-lib/libxrender_0.9.10.bb index 92b3102704..9b18366138 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxrender_0.9.10.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxrender_0.9.10.bb @@ -11,7 +11,7 @@ require xorg-lib-common.inc LICENSE = "MIT-style" LIC_FILES_CHKSUM = "file://COPYING;md5=d8bc71986d3b9b3639f6dfd6fac8f196" -DEPENDS += "virtual/libx11 renderproto xproto" +DEPENDS += "virtual/libx11 xorgproto" PE = "1" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxres_1.2.0.bb b/poky/meta/recipes-graphics/xorg-lib/libxres_1.2.0.bb index 8c34e47b43..af6bb19a25 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxres_1.2.0.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxres_1.2.0.bb @@ -10,7 +10,7 @@ require xorg-lib-common.inc LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=8c89441a8df261bdc56587465e13c7fa" -DEPENDS += "libxext resourceproto" +DEPENDS += "libxext xorgproto" PE = "1" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.2.bb b/poky/meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.3.bb index 354e5de7fd..aed52e75ee 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.2.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.3.bb @@ -12,12 +12,12 @@ image is to be displayed and to provide the graphics." LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=21fd154ee757813632ada871a34113fb" -DEPENDS += "libxext scrnsaverproto" +DEPENDS += "libxext xorgproto" PROVIDES = "libxss" RREPLACES_${PN} = "libxss" PE = "1" XORG_PN = "libXScrnSaver" -SRC_URI[md5sum] = "7a773b16165e39e938650bcc9027c1d5" -SRC_URI[sha256sum] = "8ff1efa7341c7f34bcf9b17c89648d6325ddaae22e3904e091794e0b4426ce1d" +SRC_URI[md5sum] = "eeea9d5af3e6c143d0ea1721d27a5e49" +SRC_URI[sha256sum] = "f917075a1b7b5a38d67a8b0238eaab14acd2557679835b154cf2bca576e89bf8" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxshmfence/extensions.patch b/poky/meta/recipes-graphics/xorg-lib/libxshmfence/extensions.patch deleted file mode 100644 index 4cc9e05ab5..0000000000 --- a/poky/meta/recipes-graphics/xorg-lib/libxshmfence/extensions.patch +++ /dev/null @@ -1,17 +0,0 @@ -With glibc 2.27 memfd_create is behind a _GNU_SOURCE guard, so call -AC_USE_SYSTEM_EXTENSIONS to get that defined. - -Upstream-Status: Submitted -Signed-off-by: Ross Burton <ross.burton@intel.com> - -diff --git a/configure.ac b/configure.ac -index 0c98875..ebf4dee 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -29,4 +29,6 @@ AC_CONFIG_SRCDIR([Makefile.am]) - AC_CONFIG_HEADERS([config.h]) - -+AC_USE_SYSTEM_EXTENSIONS -+ - # Initialize Automake - AM_INIT_AUTOMAKE([foreign dist-bzip2]) diff --git a/poky/meta/recipes-graphics/xorg-lib/libxshmfence_1.2.bb b/poky/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb index 1df068d1b0..85a48e4c58 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxshmfence_1.2.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb @@ -13,7 +13,5 @@ DEPENDS += "virtual/libx11" BBCLASSEXTEND = "native nativesdk" -SRC_URI += "file://extensions.patch" - -SRC_URI[md5sum] = "66662e76899112c0f99e22f2fc775a7e" -SRC_URI[sha256sum] = "d21b2d1fd78c1efbe1f2c16dae1cb23f8fd231dcf891465b8debe636a9054b0c" +SRC_URI[md5sum] = "42dda8016943dc12aff2c03a036e0937" +SRC_URI[sha256sum] = "b884300d26a14961a076fbebc762a39831cb75f92bed5ccf9836345b459220c7" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxt_1.1.5.bb b/poky/meta/recipes-graphics/xorg-lib/libxt_1.1.5.bb index 180d00d9b0..f8d94a2f54 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxt_1.1.5.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxt_1.1.5.bb @@ -16,7 +16,7 @@ LICENSE = "MIT & MIT-style" LIC_FILES_CHKSUM = "file://COPYING;md5=6565b1e0094ea1caae0971cc4035f343" -DEPENDS += "util-linux libxcb libsm virtual/libx11 kbproto libxdmcp" +DEPENDS += "util-linux libxcb libsm virtual/libx11 xorgproto libxdmcp" PROVIDES = "xt" PE = "1" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxtst_1.2.3.bb b/poky/meta/recipes-graphics/xorg-lib/libxtst_1.2.3.bb index 5717fa5b79..266bd1ca59 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxtst_1.2.3.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxtst_1.2.3.bb @@ -10,7 +10,7 @@ LICENSE = "MIT-style" LIC_FILES_CHKSUM = "file://COPYING;md5=bb4f89972c3869f617f61c1a79ad1952 \ file://src/XTest.c;beginline=2;endline=32;md5=b1c8c9dff842b4d5b89ca5fa32c40e99" -DEPENDS += "libxext recordproto inputproto libxi" +DEPENDS += "libxext xorgproto libxi" PROVIDES = "xtst" PE = "1" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxv_1.0.11.bb b/poky/meta/recipes-graphics/xorg-lib/libxv_1.0.11.bb index a226c2753a..c6027233ef 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxv_1.0.11.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxv_1.0.11.bb @@ -10,7 +10,7 @@ require xorg-lib-common.inc LICENSE = "MIT-style" LIC_FILES_CHKSUM = "file://COPYING;md5=827da9afab1f727f2a66574629e0f39c" -DEPENDS += "libxext videoproto" +DEPENDS += "libxext xorgproto" XORG_PN = "libXv" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxvmc_1.0.10.bb b/poky/meta/recipes-graphics/xorg-lib/libxvmc_1.0.10.bb index 6ed49b1f37..7e49a98ddb 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxvmc_1.0.10.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxvmc_1.0.10.bb @@ -9,7 +9,7 @@ LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=0a207f08d4961489c55046c9a5e500da \ file://wrapper/XvMCWrapper.c;endline=26;md5=5151daa8172a3f1bb0cb0e0ff157d9de" -DEPENDS += "libxext libxv videoproto" +DEPENDS += "libxext libxv xorgproto" PE = "1" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.4.bb b/poky/meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.4.bb index 695a39637c..626199e09c 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.4.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.4.bb @@ -9,7 +9,7 @@ emulators for games." LIC_FILES_CHKSUM = "file://COPYING;md5=abb99ac125f84f424a4278153988e32f" -DEPENDS += "libxext xf86dgaproto" +DEPENDS += "libxext" PE = "1" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.3.bb b/poky/meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.4.bb index af6f1f76a2..45b0673e73 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.3.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.4.bb @@ -8,13 +8,12 @@ require xorg-lib-common.inc LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=27c91ecc435bd3d2bfad868914c94b45" -DEPENDS += "libxext xf86miscproto" +DEPENDS += "libxext" PROVIDES = "xxf86misc" PE = "1" XORG_PN = "libXxf86misc" -SRC_URI[md5sum] = "6bc0bf78909fd71021c466c793d4385c" -SRC_URI[sha256sum] = "563f4200862efd3334c33a669e0a0aae5bab31f3998db75b87a99a697cc26b5b" - +SRC_URI[md5sum] = "37ad70f8b53b94b550f9290be97fbe2d" +SRC_URI[sha256sum] = "a89c03e2b0f16239d67a2031b9003f31b5a686106bbdb3c797fb88ae472af380" diff --git a/poky/meta/recipes-graphics/xorg-lib/libxxf86vm_1.1.4.bb b/poky/meta/recipes-graphics/xorg-lib/libxxf86vm_1.1.4.bb index 35f87d2719..95fc0b642c 100644 --- a/poky/meta/recipes-graphics/xorg-lib/libxxf86vm_1.1.4.bb +++ b/poky/meta/recipes-graphics/xorg-lib/libxxf86vm_1.1.4.bb @@ -10,7 +10,7 @@ require xorg-lib-common.inc LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=fa0b9c462d8f2f13eba26492d42ea63d" -DEPENDS += "libxext xf86vidmodeproto" +DEPENDS += "libxext xorgproto" PE = "1" diff --git a/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.22.bb b/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.24.bb index 4fd894fd79..7d0e608e7e 100644 --- a/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.22.bb +++ b/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.24.bb @@ -14,8 +14,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=0e7f21ca7db975c63467d2e7624a12f9" SRC_URI = "${XORG_MIRROR}/individual/data/xkeyboard-config/${BPN}-${PV}.tar.bz2" -SRC_URI[md5sum] = "eb61fb3fd419e817df572b0c8d94a883" -SRC_URI[sha256sum] = "deaec9989fbc443358b43864437b7b6d39caff07890a4a8055105ce9fcaa59bd" +SRC_URI[md5sum] = "74c4bdf52382127cb5802c3f2ab441e0" +SRC_URI[sha256sum] = "91b18580f46b4e4ea913707f6c8d68ab5286879c3a6591462f3b9e760d3ac4d7" SECTION = "x11/libs" DEPENDS = "intltool-native util-macros libxslt-native" diff --git a/poky/meta/recipes-graphics/xorg-lib/xtrans/multilibfix.patch b/poky/meta/recipes-graphics/xorg-lib/xtrans/multilibfix.patch new file mode 100644 index 0000000000..c513bad20e --- /dev/null +++ b/poky/meta/recipes-graphics/xorg-lib/xtrans/multilibfix.patch @@ -0,0 +1,18 @@ +The xtrans.pc file is installed into a non-arch directory yet contains libdir +which can vary depending on which multilib is configured. The .pc file does +not require libdir so remove this to fix multilib builds. + +Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> +Upstream-Status: Pending + +Index: xtrans-1.3.5/xtrans.pc.in +=================================================================== +--- xtrans-1.3.5.orig/xtrans.pc.in ++++ xtrans-1.3.5/xtrans.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: XTrans diff --git a/poky/meta/recipes-graphics/xorg-lib/xtrans_1.3.5.bb b/poky/meta/recipes-graphics/xorg-lib/xtrans_1.3.5.bb index d5b7f1a2c6..200716fb02 100644 --- a/poky/meta/recipes-graphics/xorg-lib/xtrans_1.3.5.bb +++ b/poky/meta/recipes-graphics/xorg-lib/xtrans_1.3.5.bb @@ -12,6 +12,8 @@ require xorg-lib-common.inc LICENSE = "MIT & MIT-style" LIC_FILES_CHKSUM = "file://COPYING;md5=49347921d4d5268021a999f250edc9ca" +SRC_URI += "file://multilibfix.patch" + PE = "1" RDEPENDS_${PN}-dev = "" diff --git a/poky/meta/recipes-graphics/xorg-proto/bigreqsproto_1.1.2.bb b/poky/meta/recipes-graphics/xorg-proto/bigreqsproto_1.1.2.bb deleted file mode 100644 index f798a43538..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/bigreqsproto_1.1.2.bb +++ /dev/null @@ -1,16 +0,0 @@ -require xorg-proto-common.inc - -PE = "1" - -SUMMARY = "BigReqs: X Big Requests extension headers" - -DESCRIPTION = "This package provides the wire protocol for the \ -BIG-REQUESTS extension, used to send larger requests that usual in order \ -to avoid fragmentation." - -BBCLASSEXTEND = "native nativesdk" - -LIC_FILES_CHKSUM = "file://COPYING;md5=b12715630da6f268d0d3712ee1a504f4" - -SRC_URI[md5sum] = "1a05fb01fa1d5198894c931cf925c025" -SRC_URI[sha256sum] = "462116ab44e41d8121bfde947321950370b285a5316612b8fce8334d50751b1e" diff --git a/poky/meta/recipes-graphics/xorg-proto/calibrateproto/fix.patch b/poky/meta/recipes-graphics/xorg-proto/calibrateproto/fix.patch deleted file mode 100644 index ff8cb25cd5..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/calibrateproto/fix.patch +++ /dev/null @@ -1,42 +0,0 @@ -Upstream-Status: Pending - -Add missing length fields to the replies. Without these, sanity checking in recent X -breaks things. - -RP 11/2/10 - - -Index: git/xcalibrateproto.h -=================================================================== ---- git.orig/xcalibrateproto.h 2010-02-11 11:47:45.711985932 +0000 -+++ git/xcalibrateproto.h 2010-02-11 11:40:21.000000000 +0000 -@@ -67,13 +67,13 @@ - BYTE type; /* X_Reply */ - BYTE pad1; - CARD16 sequenceNumber B16; -+ CARD32 length; - CARD32 status; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; - CARD32 pad6 B32; -- CARD32 pad7 B32; - } xXCalibrateRawModeReply; - - #define sz_xXCalibrateRawModeReply 32 -@@ -92,13 +92,13 @@ - BYTE type; /* X_Reply */ - BYTE pad1; - CARD16 sequenceNumber B16; -+ CARD32 length; - CARD32 x; - CARD32 y; - CARD32 pad2 B32; - CARD32 pad3 B32; - CARD32 pad4 B32; - CARD32 pad5 B32; -- CARD32 pad6 B32; - } xXCalibrateScreenToCoordReply; - - #define sz_xXCalibrateScreenToCoordReply 32 diff --git a/poky/meta/recipes-graphics/xorg-proto/calibrateproto_git.bb b/poky/meta/recipes-graphics/xorg-proto/calibrateproto_git.bb deleted file mode 100644 index eb4b4224ca..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/calibrateproto_git.bb +++ /dev/null @@ -1,21 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "XCalibrate: Touchscreen calibration headers" - -DESCRIPTION = "This package provides the wire protocol for the \ -Touchscreen calibration extension." - -LICENSE = "MIT-style" -LIC_FILES_CHKSUM = "file://xcalibratewire.h;endline=23;md5=7f86ef7b03cce6c4c9ebd59d20ca485f \ - file://xcalibrateproto.h;endline=23;md5=e4490491edcc171ca24f98569ee580db" - -SRCREV = "1da6fd1e2c7a49648245c98481fabea8b9690a8c" - -PV = "0.0+git${SRCPV}" -PR = "r2" - -SRC_URI = "git://anongit.freedesktop.org/git/xorg/proto/calibrateproto \ - file://fix.patch;apply=yes" -S = "${WORKDIR}/git" -UPSTREAM_CHECK_COMMITS = "1" - diff --git a/poky/meta/recipes-graphics/xorg-proto/compositeproto_0.4.2.bb b/poky/meta/recipes-graphics/xorg-proto/compositeproto_0.4.2.bb deleted file mode 100644 index adfee26306..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/compositeproto_0.4.2.bb +++ /dev/null @@ -1,21 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "Xcomposite: X composite extension headers" - -DESCRIPTION = "This package provides the wire protocol for the X \ -composite extension. The X composite extension provides three related \ -mechanisms for compositing and off-screen storage." - -LICENSE = "MIT & MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=2c4bfe136f4a4418ea2f2a96b7c8f3c5 \ - file://composite.h;endline=43;md5=cbd44d4079053aa75930ed2f02b92926" - -RCONFLICTS_${PN} = "compositeext" -BBCLASSEXTEND = "native" - -PR = "r1" -PE = "1" - -SRC_URI[md5sum] = "98482f65ba1e74a08bf5b056a4031ef0" -SRC_URI[sha256sum] = "049359f0be0b2b984a8149c966dd04e8c58e6eade2a4a309cf1126635ccd0cfc" - diff --git a/poky/meta/recipes-graphics/xorg-proto/damageproto_1.2.1.bb b/poky/meta/recipes-graphics/xorg-proto/damageproto_1.2.1.bb deleted file mode 100644 index 75d0268108..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/damageproto_1.2.1.bb +++ /dev/null @@ -1,20 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "Xdamage: X Damage extension headers" - -DESCRIPTION = "This package provides the wire protocol for the DAMAGE \ -extension. The DAMAGE extension allows applications to receive \ -information about changes made to pixel contents of windows and \ -pixmaps." - -LICENSE = "MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=d5f5a2de65c3a84cbde769f07a769608 \ - file://damagewire.h;endline=23;md5=4a4501a592dbc7de5ce89255e50d0296" - -RCONFLICTS_${PN} = "damageext" -BBCLASSEXTEND = "native" -PR = "r1" -PE = "1" - -SRC_URI[md5sum] = "998e5904764b82642cc63d97b4ba9e95" -SRC_URI[sha256sum] = "5c7c112e9b9ea8a9d5b019e5f17d481ae20f766cb7a4648360e7c1b46fc9fc5b" diff --git a/poky/meta/recipes-graphics/xorg-proto/dmxproto_2.3.1.bb b/poky/meta/recipes-graphics/xorg-proto/dmxproto_2.3.1.bb deleted file mode 100644 index d960e5d4cf..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/dmxproto_2.3.1.bb +++ /dev/null @@ -1,18 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "DMX: Distributed Multihead extension headers" - -DESCRIPTION = "This package provides the wire protocol for the DMX \ -extension. The DMX extension provides support for communication with \ -and control of Xdmx server. Attributes of the Xdmx server and of the \ -back-end screens attached to the server can be queried and modified via \ -this protocol." - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=a3c3499231a8035efd0e004cfbd3b72a \ - file://dmxproto.h;endline=32;md5=ab8509955c3dd4c65fac728e1b367bc4" - -PE = "1" - -SRC_URI[md5sum] = "4ee175bbd44d05c34d43bb129be5098a" -SRC_URI[sha256sum] = "e72051e6a3e06b236d19eed56368117b745ca1e1a27bdc50fd51aa375bea6509" diff --git a/poky/meta/recipes-graphics/xorg-proto/dri2proto_2.8.bb b/poky/meta/recipes-graphics/xorg-proto/dri2proto_2.8.bb deleted file mode 100644 index f4c40c5719..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/dri2proto_2.8.bb +++ /dev/null @@ -1,15 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "DRI2: Direct Rendering Infrastructure 2 headers" - -DESCRIPTION = "This package provides the wire protocol for the Direct \ -Rendering Ifnrastructure 2. DIR is required for may hardware \ -accelerated OpenGL drivers." - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=2e396fa91834f8786032cad2da5638f3 \ - file://dri2proto.h;endline=31;md5=22f28bf68d01b533f26195e94b3ed8ca" - - -SRC_URI[md5sum] = "b2721d5d24c04d9980a0c6540cb5396a" -SRC_URI[sha256sum] = "f9b55476def44fc7c459b2537d17dbc731e36ed5d416af7ca0b1e2e676f8aa04" diff --git a/poky/meta/recipes-graphics/xorg-proto/dri3proto_1.0.bb b/poky/meta/recipes-graphics/xorg-proto/dri3proto_1.0.bb deleted file mode 100644 index bed97b3f49..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/dri3proto_1.0.bb +++ /dev/null @@ -1,14 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "Direct Rendering Infrastructure 3 Extension" - -DESCRIPTION = "The DRI3 extension provides mechanisms to translate between direct \ -rendered buffers and X pixmaps. When combined with the Present extension, \ -a complete direct rendering solution for OpenGL is provided." - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://dri3proto.h;endline=21;md5=ac90d1d416be3cb13e1d3c88cd5166bf" - - -SRC_URI[md5sum] = "a3d2cbe60a9ca1bf3aea6c93c817fee3" -SRC_URI[sha256sum] = "01be49d70200518b9a6b297131f6cc71f4ea2de17436896af153226a774fc074" diff --git a/poky/meta/recipes-graphics/xorg-proto/fixesproto_5.0.bb b/poky/meta/recipes-graphics/xorg-proto/fixesproto_5.0.bb deleted file mode 100644 index 39fb88d84c..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/fixesproto_5.0.bb +++ /dev/null @@ -1,22 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "XFixes: X Fixes extension headers" - -DESCRIPTION = "This package provides the wire protocol for the X Fixes \ -extension. This extension is designed to provide server-side support \ -for application work arounds to shortcomings in the core X window \ -system." - - -LICENSE = "MIT & MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=262a7a87da56e66dd639bf7334a110c6 \ - file://xfixesproto.h;endline=43;md5=c3a9ee6db3532ed0d44dea266cfc97f4" - -RCONFLICTS_${PN} = "fixesext" -PR = "r1" -PE = "1" - -BBCLASSEXTEND = "native nativesdk" - -SRC_URI[md5sum] = "e7431ab84d37b2678af71e29355e101d" -SRC_URI[sha256sum] = "ba2f3f31246bdd3f2a0acf8bd3b09ba99cab965c7fb2c2c92b7dc72870e424ce" diff --git a/poky/meta/recipes-graphics/xorg-proto/fontsproto_2.1.3.bb b/poky/meta/recipes-graphics/xorg-proto/fontsproto_2.1.3.bb deleted file mode 100644 index 27fc281748..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/fontsproto_2.1.3.bb +++ /dev/null @@ -1,18 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "XFont: X Font rasterisation headers" - -DESCRIPTION = "This package provides the wire protocol for the X Font \ -rasterisation extensions. These extensions are used to control \ -server-side font configurations." - -LICENSE = "MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=c3e48aa9ce868c8e90f0401db41c11a2 \ - file://FSproto.h;endline=44;md5=d2e58e27095e5ea7d4ad456ccb91986c" - -PE = "1" - -BBCLASSEXTEND = "native" - -SRC_URI[md5sum] = "36934d00b00555eaacde9f091f392f97" -SRC_URI[sha256sum] = "259046b0dd9130825c4a4c479ba3591d6d0f17a33f54e294b56478729a6e5ab8" diff --git a/poky/meta/recipes-graphics/xorg-proto/glproto_1.4.17.bb b/poky/meta/recipes-graphics/xorg-proto/glproto_1.4.17.bb deleted file mode 100644 index eb03d33c2b..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/glproto_1.4.17.bb +++ /dev/null @@ -1,18 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "OpenGL: X OpenGL extension headers" - -DESCRIPTION = "This package provides the wire protocol for the \ -OpenGL-related extensions, used to enable the rendering of applications \ -using OpenGL." - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=d44ed0146997856304dfbb512a59a8de \ - file://glxproto.h;beginline=4;endline=32;md5=6b79c570f644363b356456e7d44471d9" - -PE = "1" - -BBCLASSEXTEND = "nativesdk" - -SRC_URI[md5sum] = "5565f1b0facf4a59c2778229c1f70d10" -SRC_URI[sha256sum] = "adaa94bded310a2bfcbb9deb4d751d965fcfe6fb3a2f6d242e2df2d6589dbe40" diff --git a/poky/meta/recipes-graphics/xorg-proto/inputproto_2.3.2.bb b/poky/meta/recipes-graphics/xorg-proto/inputproto_2.3.2.bb deleted file mode 100644 index eb5e66bd66..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/inputproto_2.3.2.bb +++ /dev/null @@ -1,22 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "XI: X Input extension headers" - -DESCRIPTION = "This package provides the wire protocol for the X Input \ -extension. The extension supports input devices other then the core X \ -keyboard and pointer." - -LICENSE = "MIT & MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=e562cc0f6587b961f032211d8160f31e \ - file://XI2proto.h;endline=48;md5=1ac1581e61188da2885cc14ff49b20be" - -PE = "1" - -inherit gettext - -BBCLASSEXTEND = "native nativesdk" - -SRC_URI[md5sum] = "b290a463af7def483e6e190de460f31a" -SRC_URI[sha256sum] = "893a6af55733262058a27b38eeb1edc733669f01d404e8581b167f03c03ef31d" - -EXTRA_OECONF += "--without-asciidoc" diff --git a/poky/meta/recipes-graphics/xorg-proto/kbproto_1.0.7.bb b/poky/meta/recipes-graphics/xorg-proto/kbproto_1.0.7.bb deleted file mode 100644 index 46f5c92b61..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/kbproto_1.0.7.bb +++ /dev/null @@ -1,18 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "XKB: X Keyboard extension headers" - -DESCRIPTION = "This package provides the wire protocol for the X \ -Keyboard extension. This extension is used to control options related \ -to keyboard handling and layout." - -LICENSE = "MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=7dd6ea99e2a83a552c02c80963623c38 \ - file://XKBproto.h;beginline=1;endline=25;md5=5744eeff407aeb6e7a1346eebab486a2" - -PE = "1" - -BBCLASSEXTEND = "native nativesdk" - -SRC_URI[md5sum] = "94afc90c1f7bef4a27fdd59ece39c878" -SRC_URI[sha256sum] = "f882210b76376e3fa006b11dbd890e56ec0942bc56e65d1249ff4af86f90b857" diff --git a/poky/meta/recipes-graphics/xorg-proto/presentproto_git.bb b/poky/meta/recipes-graphics/xorg-proto/presentproto_git.bb deleted file mode 100644 index e6d32f95af..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/presentproto_git.bb +++ /dev/null @@ -1,22 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "This package provides the basic headers for the X Window System" -DESCRIPTION = "The Present extension provides a way for applications to update their \ - window contents from a pixmap in a well defined fashion, synchronizing \ - with the display refresh and potentially using a more efficient \ - mechanism than copying the contents of the source pixmap.\ - " - -LICENSE = "GPLv2" - -SRCREV = "bfdc7e052302c79c5803ad95a73c9b63b350c40c" -PV = "1.1+git${SRCPV}" - -LIC_FILES_CHKSUM = "file://COPYING;md5=47e508ca280fde97906eacb77892c3ac" - -SRC_URI = "git://anongit.freedesktop.org/git/xorg/proto/presentproto" -S = "${WORKDIR}/git" - -inherit autotools - -BBCLASSEXTEND = "native" diff --git a/poky/meta/recipes-graphics/xorg-proto/randrproto_1.5.0.bb b/poky/meta/recipes-graphics/xorg-proto/randrproto_1.5.0.bb deleted file mode 100644 index b59e52513f..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/randrproto_1.5.0.bb +++ /dev/null @@ -1,19 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "XRandR: X Resize, Rotate and Reflect extension headers" - -DESCRIPTION = "This package provides the wire protocol for the X Resize, \ -Rotate and Reflect extension. This extension provides the ability to \ -resize, rotate and reflect the root window of a screen." - -LICENSE = "MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=00426d41bd3d9267cf9bbb2df9323a5e \ - file://randrproto.h;endline=30;md5=3885957c6048fdf3310ac8ba54ca2c3f" - -RCONFLICTS_${PN} = "randrext" -PE = "1" - -BBCLASSEXTEND = "native nativesdk" - -SRC_URI[md5sum] = "a46765c8dcacb7114c821baf0df1e797" -SRC_URI[sha256sum] = "4c675533e79cd730997d232c8894b6692174dce58d3e207021b8f860be498468" diff --git a/poky/meta/recipes-graphics/xorg-proto/recordproto_1.14.2.bb b/poky/meta/recipes-graphics/xorg-proto/recordproto_1.14.2.bb deleted file mode 100644 index ad2317c26e..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/recordproto_1.14.2.bb +++ /dev/null @@ -1,18 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "XRecord: X Record extension headers" - -DESCRIPTION = "This package provides the wire protocol for the X Record \ -extension. This extension is used to record and play back event \ -sequences." - -LICENSE = "MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=575827a0f554bbed332542976d5f3d40 \ - file://recordproto.h;endline=19;md5=1cbb0dd45a0b060ff833901620a3e738" - -RCONFLICTS_${PN} = "recordext" -PR = "r1" -PE = "1" - -SRC_URI[md5sum] = "1b4e5dede5ea51906f1530ca1e21d216" -SRC_URI[sha256sum] = "a777548d2e92aa259f1528de3c4a36d15e07a4650d0976573a8e2ff5437e7370" diff --git a/poky/meta/recipes-graphics/xorg-proto/renderproto_0.11.1.bb b/poky/meta/recipes-graphics/xorg-proto/renderproto_0.11.1.bb deleted file mode 100644 index ff800ec831..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/renderproto_0.11.1.bb +++ /dev/null @@ -1,21 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "XRender: X rendering Extension headers" - -DESCRIPTION = "This package provides the wire protocol for the X \ -Rendering extension. This is the basis the image composition within the \ -X window system." - -LICENSE = "MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=f826d99765196352e6122a406cf0d024 \ - file://renderproto.h;beginline=4;endline=24;md5=3e5e2851dad240b0a3a27c4776b4fd1f" - -RCONFLICTS_${PN} = "renderext" -PR = "r1" -PE = "1" - -BBCLASSEXTEND = "native nativesdk" - -SRC_URI[md5sum] = "a914ccc1de66ddeb4b611c6b0686e274" -SRC_URI[sha256sum] = "06735a5b92b20759204e4751ecd6064a2ad8a6246bb65b3078b862a00def2537" - diff --git a/poky/meta/recipes-graphics/xorg-proto/resourceproto_1.2.0.bb b/poky/meta/recipes-graphics/xorg-proto/resourceproto_1.2.0.bb deleted file mode 100644 index 08b610aea5..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/resourceproto_1.2.0.bb +++ /dev/null @@ -1,19 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "XRes: X Resource extension headers" - -DESCRIPTION = "This package provides the wire protocol for the X \ -Resource extension. XRes provides an interface that allows X clients to \ -see and monitor X resource usage of various clients." - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=604859305e662503077240fee8c77d97" - -RCONFLICTS_${PN} = "resourceext" - -PR = "r1" -PE = "1" - -SRC_URI[md5sum] = "cfdb57dae221b71b2703f8e2980eaaf4" -SRC_URI[sha256sum] = "3c66003a6bdeb0f70932a9ed3cf57cc554234154378d301e0c5cfa189d8f6818" - diff --git a/poky/meta/recipes-graphics/xorg-proto/scrnsaverproto_1.2.2.bb b/poky/meta/recipes-graphics/xorg-proto/scrnsaverproto_1.2.2.bb deleted file mode 100644 index ab07f518cf..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/scrnsaverproto_1.2.2.bb +++ /dev/null @@ -1,19 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "Xscrnsaver: X Screen Saver extension headers" - -DESCRIPTION = "This package provides the wire protocol for the X Screen \ -Saver extension. This extension allows an external \"screen saver\" \ -client to detect when the alternative image is to be displayed and to \ -provide the graphics." - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=eed49b78b15b436c933b6b8b054e3901 \ - file://saverproto.h;endline=26;md5=a84c0637305159f3c0ab173aaeede48d" - -PE = "1" - -EXTRA_OECONF_append = " --enable-specs=no" - -SRC_URI[md5sum] = "edd8a73775e8ece1d69515dd17767bfb" -SRC_URI[sha256sum] = "8bb70a8da164930cceaeb4c74180291660533ad3cc45377b30a795d1b85bcd65" diff --git a/poky/meta/recipes-graphics/xorg-proto/videoproto_2.3.3.bb b/poky/meta/recipes-graphics/xorg-proto/videoproto_2.3.3.bb deleted file mode 100644 index 6f97a2653b..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/videoproto_2.3.3.bb +++ /dev/null @@ -1,14 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "Xv: X Video extension headers" - -DESCRIPTION = "This package provides the wire protocol for the X Video \ -extension. This extension alows for accerlated drawing of videos." - -LICENSE = "MIT & MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=ce3472a119a864085fa4155cb0979a7b" - -PE = "1" - -SRC_URI[md5sum] = "fe86de8ea3eb53b5a8f52956c5cd3174" -SRC_URI[sha256sum] = "c7803889fd08e6fcaf7b68cc394fb038b2325d1f315e571a6954577e07cca702" diff --git a/poky/meta/recipes-graphics/xorg-proto/xcb-proto/0001-Make-whitespace-use-consistent.patch b/poky/meta/recipes-graphics/xorg-proto/xcb-proto/0001-Make-whitespace-use-consistent.patch deleted file mode 100644 index 89ec66618e..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/xcb-proto/0001-Make-whitespace-use-consistent.patch +++ /dev/null @@ -1,215 +0,0 @@ -From ea7a3ac6c658164690e0febb55f4467cb9e0bcac Mon Sep 17 00:00:00 2001 -From: Thomas Klausner <wiz@NetBSD.org> -Date: Thu, 19 May 2016 17:30:04 +0200 -Subject: [PATCH 1/2] Make whitespace use consistent. - -At least python-3.5.x complains about this forcefully. - -Signed-off-by: Thomas Klausner <wiz@NetBSD.org> -Signed-off-by: Uli Schlachter <psychon@znc.in> - -Upstream-Status: Backport - -Signed-off-by: Robert Yang <liezhi.yang@windriver.com> ---- - xcbgen/align.py | 96 ++++++++++++++++++++++++++++----------------------------- - 1 file changed, 48 insertions(+), 48 deletions(-) - -diff --git a/xcbgen/align.py b/xcbgen/align.py -index 5e31838..d4c12ee 100644 ---- a/xcbgen/align.py -+++ b/xcbgen/align.py -@@ -16,12 +16,12 @@ class Alignment(object): - return self.align == other.align and self.offset == other.offset - - def __str__(self): -- return "(align=%d, offset=%d)" % (self.align, self.offset) -+ return "(align=%d, offset=%d)" % (self.align, self.offset) - - @staticmethod - def for_primitive_type(size): -- # compute the required start_alignment based on the size of the type -- if size % 8 == 0: -+ # compute the required start_alignment based on the size of the type -+ if size % 8 == 0: - # do 8-byte primitives require 8-byte alignment in X11? - return Alignment(8,0) - elif size % 4 == 0: -@@ -33,7 +33,7 @@ class Alignment(object): - - - def align_after_fixed_size(self, size): -- new_offset = (self.offset + size) % self.align -+ new_offset = (self.offset + size) % self.align - return Alignment(self.align, new_offset) - - -@@ -41,7 +41,7 @@ class Alignment(object): - ''' - Assuming the given external_align, checks whether - self is fulfilled for all cases. -- Returns True if yes, False otherwise. -+ Returns True if yes, False otherwise. - ''' - if self.align == 1 and self.offset == 0: - # alignment 1 with offset 0 is always fulfilled -@@ -55,9 +55,9 @@ class Alignment(object): - # the external align guarantees less alignment -> not guaranteed - return False - -- if external_align.align % self.align != 0: -+ if external_align.align % self.align != 0: - # the external align cannot be divided by our align -- # -> not guaranteed -+ # -> not guaranteed - # (this can only happen if there are alignments that are not - # a power of 2, which is highly discouraged. But better be - # safe and check for it) -@@ -72,7 +72,7 @@ class Alignment(object): - - def combine_with(self, other): - # returns the alignment that is guaranteed when -- # both, self or other, can happen -+ # both, self or other, can happen - new_align = gcd(self.align, other.align) - new_offset_candidate1 = self.offset % new_align - new_offset_candidate2 = other.offset % new_align -@@ -83,8 +83,8 @@ class Alignment(object): - new_align = gcd(new_align, offset_diff) - new_offset_candidate1 = self.offset % new_align - new_offset_candidate2 = other.offset % new_align -- assert new_offset_candidate1 == new_offset_candidate2 -- new_offset = new_offset_candidate1 -+ assert new_offset_candidate1 == new_offset_candidate2 -+ new_offset = new_offset_candidate1 - # return the result - return Alignment(new_align, new_offset) - -@@ -92,44 +92,44 @@ class Alignment(object): - class AlignmentLog(object): - - def __init__(self): -- self.ok_list = [] -- self.fail_list = [] -- self.verbosity = 1 -+ self.ok_list = [] -+ self.fail_list = [] -+ self.verbosity = 1 - - def __str__(self): -- result = "" -+ result = "" - -- # output the OK-list -- for (align_before, field_name, type_obj, callstack, align_after) in self.ok_list: -- stacksize = len(callstack) -+ # output the OK-list -+ for (align_before, field_name, type_obj, callstack, align_after) in self.ok_list: -+ stacksize = len(callstack) - indent = ' ' * stacksize -- if self.ok_callstack_is_relevant(callstack): -+ if self.ok_callstack_is_relevant(callstack): - if field_name is None or field_name == "": -- result += (" %sok: %s:\n\t%sbefore: %s, after: %s\n" -- % (indent, str(type_obj), indent, str(align_before), str(align_after))) -- else: -- result += (" %sok: field \"%s\" in %s:\n\t%sbefore: %s, after: %s\n" -- % (indent, str(field_name), str(type_obj), -- indent, str(align_before), str(align_after))) -+ result += (" %sok: %s:\n\t%sbefore: %s, after: %s\n" -+ % (indent, str(type_obj), indent, str(align_before), str(align_after))) -+ else: -+ result += (" %sok: field \"%s\" in %s:\n\t%sbefore: %s, after: %s\n" -+ % (indent, str(field_name), str(type_obj), -+ indent, str(align_before), str(align_after))) - if self.verbosity >= 1: -- result += self.callstack_to_str(indent, callstack) -+ result += self.callstack_to_str(indent, callstack) - -- # output the fail-list -- for (align_before, field_name, type_obj, callstack, reason) in self.fail_list: -- stacksize = len(callstack) -+ # output the fail-list -+ for (align_before, field_name, type_obj, callstack, reason) in self.fail_list: -+ stacksize = len(callstack) - indent = ' ' * stacksize -- if field_name is None or field_name == "": -- result += (" %sfail: align %s is incompatible with\n\t%s%s\n\t%sReason: %s\n" -- % (indent, str(align_before), indent, str(type_obj), indent, reason)) -- else: -- result += (" %sfail: align %s is incompatible with\n\t%sfield \"%s\" in %s\n\t%sReason: %s\n" -- % (indent, str(align_before), indent, str(field_name), str(type_obj), indent, reason)) -+ if field_name is None or field_name == "": -+ result += (" %sfail: align %s is incompatible with\n\t%s%s\n\t%sReason: %s\n" -+ % (indent, str(align_before), indent, str(type_obj), indent, reason)) -+ else: -+ result += (" %sfail: align %s is incompatible with\n\t%sfield \"%s\" in %s\n\t%sReason: %s\n" -+ % (indent, str(align_before), indent, str(field_name), str(type_obj), indent, reason)) - - if self.verbosity >= 1: -- result += self.callstack_to_str(indent, callstack) -+ result += self.callstack_to_str(indent, callstack) - - -- return result -+ return result - - - def callstack_to_str(self, indent, callstack): -@@ -137,41 +137,41 @@ class AlignmentLog(object): - for stack_elem in callstack: - result += "\t %s%s\n" % (indent, str(stack_elem)) - result += "\t%s]\n" % indent -- return result -+ return result - - - def ok_callstack_is_relevant(self, ok_callstack): - # determine whether an ok callstack is relevant for logging -- if self.verbosity >= 2: -- return True -+ if self.verbosity >= 2: -+ return True - - # empty callstacks are always relevant -- if len(ok_callstack) == 0: -+ if len(ok_callstack) == 0: - return True - -- # check whether the ok_callstack is a subset or equal to a fail_callstack -+ # check whether the ok_callstack is a subset or equal to a fail_callstack - for (align_before, field_name, type_obj, fail_callstack, reason) in self.fail_list: - if len(ok_callstack) <= len(fail_callstack): - zipped = zip(ok_callstack, fail_callstack[:len(ok_callstack)]) -- is_subset = all([i == j for i, j in zipped]) -- if is_subset: -+ is_subset = all([i == j for i, j in zipped]) -+ if is_subset: - return True - - return False - - - def ok(self, align_before, field_name, type_obj, callstack, align_after): -- self.ok_list.append((align_before, field_name, type_obj, callstack, align_after)) -+ self.ok_list.append((align_before, field_name, type_obj, callstack, align_after)) - - def fail(self, align_before, field_name, type_obj, callstack, reason): -- self.fail_list.append((align_before, field_name, type_obj, callstack, reason)) -+ self.fail_list.append((align_before, field_name, type_obj, callstack, reason)) - - def append(self, other): -- self.ok_list.extend(other.ok_list) -- self.fail_list.extend(other.fail_list) -+ self.ok_list.extend(other.ok_list) -+ self.fail_list.extend(other.fail_list) - - def ok_count(self): -- return len(self.ok_list) -+ return len(self.ok_list) - - - --- -2.9.0 - diff --git a/poky/meta/recipes-graphics/xorg-proto/xcb-proto/0002-print-is-a-function-and-needs-parentheses.patch b/poky/meta/recipes-graphics/xorg-proto/xcb-proto/0002-print-is-a-function-and-needs-parentheses.patch deleted file mode 100644 index 542acb82b8..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/xcb-proto/0002-print-is-a-function-and-needs-parentheses.patch +++ /dev/null @@ -1,75 +0,0 @@ -From bea5e1c85bdc0950913790364e18228f20395a3d Mon Sep 17 00:00:00 2001 -From: Thomas Klausner <wiz@NetBSD.org> -Date: Thu, 19 May 2016 17:30:05 +0200 -Subject: [PATCH 2/2] print() is a function and needs parentheses. - -Fixes build with python-3.x. - -Signed-off-by: Thomas Klausner <wiz@NetBSD.org> -Signed-off-by: Uli Schlachter <psychon@znc.in> - -Upstream-Status: Backport - -Signed-off-by: Robert Yang <liezhi.yang@windriver.com> ---- - xcbgen/xtypes.py | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/xcbgen/xtypes.py b/xcbgen/xtypes.py -index c3b5758..b83b119 100644 ---- a/xcbgen/xtypes.py -+++ b/xcbgen/xtypes.py -@@ -501,7 +501,7 @@ class ComplexType(Type): - int(required_start_align_element.get('align', "4"), 0), - int(required_start_align_element.get('offset', "0"), 0)) - if verbose_align_log: -- print "Explicit start-align for %s: %s\n" % (self, self.required_start_align) -+ print ("Explicit start-align for %s: %s\n" % (self, self.required_start_align)) - - def resolve(self, module): - if self.resolved: -@@ -592,7 +592,7 @@ class ComplexType(Type): - if verbose_align_log: - print ("calc_required_start_align: %s has start-align %s" - % (str(self), str(self.required_start_align))) -- print "Details:\n" + str(log) -+ print ("Details:\n" + str(log)) - if self.required_start_align.offset != 0: - print (("WARNING: %s\n\thas start-align with non-zero offset: %s" - + "\n\tsuggest to add explicit definition with:" -@@ -619,12 +619,12 @@ class ComplexType(Type): - for offset in range(0,align): - align_candidate = Alignment(align, offset) - if verbose_align_log: -- print "trying %s for %s" % (str(align_candidate), str(self)) -+ print ("trying %s for %s" % (str(align_candidate), str(self))) - my_log = AlignmentLog() - if self.is_possible_start_align(align_candidate, callstack, my_log): - log.append(my_log) - if verbose_align_log: -- print "found start-align %s for %s" % (str(align_candidate), str(self)) -+ print ("found start-align %s for %s" % (str(align_candidate), str(self))) - return align_candidate - else: - my_ok_count = my_log.ok_count() -@@ -641,7 +641,7 @@ class ComplexType(Type): - # none of the candidates applies - # this type has illegal internal aligns for all possible start_aligns - if verbose_align_log: -- print "didn't find start-align for %s" % str(self) -+ print ("didn't find start-align for %s" % str(self)) - log.append(best_log) - return None - -@@ -900,7 +900,7 @@ class SwitchType(ComplexType): - # aux function for unchecked_get_alignment_after - def get_align_for_selected_case_field(self, case_field, start_align, callstack, log): - if verbose_align_log: -- print "get_align_for_selected_case_field: %s, case_field = %s" % (str(self), str(case_field)) -+ print ("get_align_for_selected_case_field: %s, case_field = %s" % (str(self), str(case_field))) - total_align = start_align - for field in self.bitcases: - my_callstack = callstack[:] --- -2.9.0 - diff --git a/poky/meta/recipes-graphics/xorg-proto/xcb-proto_1.12.bb b/poky/meta/recipes-graphics/xorg-proto/xcb-proto_1.13.bb index 25a8373e0b..d5037868d5 100644 --- a/poky/meta/recipes-graphics/xorg-proto/xcb-proto_1.12.bb +++ b/poky/meta/recipes-graphics/xorg-proto/xcb-proto_1.13.bb @@ -11,12 +11,10 @@ LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=d763b081cb10c223435b01e00dc0aba7 \ file://src/dri2.xml;beginline=2;endline=28;md5=f8763b13ff432e8597e0d610cf598e65" -SRC_URI = "http://xcb.freedesktop.org/dist/${BP}.tar.bz2 \ - file://0001-Make-whitespace-use-consistent.patch \ - file://0002-print-is-a-function-and-needs-parentheses.patch \ - " -SRC_URI[md5sum] = "14e60919f859560f28426a685a555962" -SRC_URI[sha256sum] = "5922aba4c664ab7899a29d92ea91a87aa4c1fc7eb5ee550325c3216c480a4906" +SRC_URI = "http://xcb.freedesktop.org/dist/${BP}.tar.bz2" + +SRC_URI[md5sum] = "abe9aa4886138150bbc04ae4f29b90e3" +SRC_URI[sha256sum] = "7b98721e669be80284e9bbfeab02d2d0d54cd11172b72271e47a2fe875e2bde1" inherit autotools pkgconfig diff --git a/poky/meta/recipes-graphics/xorg-proto/xcmiscproto_1.2.2.bb b/poky/meta/recipes-graphics/xorg-proto/xcmiscproto_1.2.2.bb deleted file mode 100644 index 0751b94c9d..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/xcmiscproto_1.2.2.bb +++ /dev/null @@ -1,17 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "XC-MISC: X XC-Miscellaneous extension headers" - -DESCRIPTION = "This package provides the wire protocol for the XC-MISC \ -extension, which is used to get details of XID allocations within the \ -server." - -LICENSE = "MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=09d83047c15994e05db29b423ed6662e" - -PE = "1" - -BBCLASSEXTEND = "native nativesdk" - -SRC_URI[md5sum] = "5f4847c78e41b801982c8a5e06365b24" -SRC_URI[sha256sum] = "b13236869372256c36db79ae39d54214172677fb79e9cdc555dceec80bd9d2df" diff --git a/poky/meta/recipes-graphics/xorg-proto/xextproto_7.3.0.bb b/poky/meta/recipes-graphics/xorg-proto/xextproto_7.3.0.bb deleted file mode 100644 index dd0bd951b2..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/xextproto_7.3.0.bb +++ /dev/null @@ -1,24 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "XExt: X Extension headers" - -DESCRIPTION = "This package provides the wire protocol for several X \ -extensions. These protocol extensions include DOUBLE-BUFFER, DPMS, \ -Extended-Visual-Information, LBX, MIT_SHM, MIT_SUNDRY-NONSTANDARD, \ -Multi-Buffering, SECURITY, SHAPE, SYNC, TOG-CUP, XC-APPGROUP, XC-MISC, \ -XTEST. In addition a small set of utility functions are also \ -available." - -LICENSE = "MIT & MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=86f273291759d0ba2a22585cd1c06c53" - -PE = "1" - -inherit gettext - -EXTRA_OECONF_append = " --enable-specs=no" - -BBCLASSEXTEND = "native nativesdk" - -SRC_URI[md5sum] = "70c90f313b4b0851758ef77b95019584" -SRC_URI[sha256sum] = "f3f4b23ac8db9c3a9e0d8edb591713f3d70ef9c3b175970dd8823dfc92aa5bb0" diff --git a/poky/meta/recipes-graphics/xorg-proto/xf86dgaproto_2.1.bb b/poky/meta/recipes-graphics/xorg-proto/xf86dgaproto_2.1.bb deleted file mode 100644 index 86f3ce328f..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/xf86dgaproto_2.1.bb +++ /dev/null @@ -1,18 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "XFree86-DGA: XFree86 Direct Graphics Access extension headers" - -DESCRIPTION = "This package provides the wire protocol for the XFree86 \ -Direct Graphics Access extension. This extension allows direct graphics \ -access to a framebuffer-like region, as well as relative mouse \ -reporting." - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=e01e66e4b317088cf869bc98e6af4fb6" - -RCONFLICTS_${PN} = "xxf86dgaext" -PR = "r2" -PE = "1" - -SRC_URI[md5sum] = "a036dc2fcbf052ec10621fd48b68dbb1" -SRC_URI[sha256sum] = "ac5ef65108e1f2146286e53080975683dae49fc94680042e04bd1e2010e99050" diff --git a/poky/meta/recipes-graphics/xorg-proto/xf86driproto_2.1.1.bb b/poky/meta/recipes-graphics/xorg-proto/xf86driproto_2.1.1.bb deleted file mode 100644 index b3f9210ccb..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/xf86driproto_2.1.1.bb +++ /dev/null @@ -1,17 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "XFree86-DRI: XFree86 Direct Rendering Infrastructure extension headers" - -DESCRIPTION = "This package provides the wire protocol for the XFree86 \ -Direct Rendering Infrastructure extension. The XFree86-DRI extension is \ -used to organize direct rendering support or 3D clients and help \ -arbitrate requests." - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=ef103b9d951e39ff7e23d386e2011fa3 \ - file://xf86driproto.h;endline=35;md5=42be3d8e6d429ab79172572bb0cff544" - -PE = "1" - -SRC_URI[md5sum] = "1d716d0dac3b664e5ee20c69d34bc10e" -SRC_URI[sha256sum] = "9c4b8d7221cb6dc4309269ccc008a22753698ae9245a398a59df35f1404d661f" diff --git a/poky/meta/recipes-graphics/xorg-proto/xf86miscproto_0.9.3.bb b/poky/meta/recipes-graphics/xorg-proto/xf86miscproto_0.9.3.bb deleted file mode 100644 index d4663ea880..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/xf86miscproto_0.9.3.bb +++ /dev/null @@ -1,17 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "XFree86-Misc: XFree86 miscellaneous extension headers" - -DESCRIPTION = "This package provides the wire protocol for the XFree \ -miscellaneous extension. The XFree86-Misc extension provides a means to \ -access input device configuration settings specific to the XFree86/Xorg \ -DDX." - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=e01e66e4b317088cf869bc98e6af4fb6" - -PR = "r1" -PE = "1" - -SRC_URI[md5sum] = "ca63bbb31cf5b7f37b2237e923ff257a" -SRC_URI[sha256sum] = "45b8ec6a4a8ca21066dce117e09dcc88539862e616e60fb391de05b36f63b095" diff --git a/poky/meta/recipes-graphics/xorg-proto/xf86vidmodeproto_2.3.1.bb b/poky/meta/recipes-graphics/xorg-proto/xf86vidmodeproto_2.3.1.bb deleted file mode 100644 index 0f31900a9e..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/xf86vidmodeproto_2.3.1.bb +++ /dev/null @@ -1,18 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "XFree86-VM: XFree86 video mode extension headers" - -DESCRIPTION = "This package provides the wire protocol for the XFree86 \ -video mode extension. This extension allows client applications to get \ -and set video mode timings." - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=499be2ff387a42f84628c35f311f1502" - -RCONFLICTS_${PN} = "xxf86vmext" - -PR = "r1" -PE = "1" - -SRC_URI[md5sum] = "e793ecefeaecfeabd1aed6a01095174e" -SRC_URI[sha256sum] = "45d9499aa7b73203fd6b3505b0259624afed5c16b941bd04fcf123e5de698770" diff --git a/poky/meta/recipes-graphics/xorg-proto/xineramaproto_1.2.1.bb b/poky/meta/recipes-graphics/xorg-proto/xineramaproto_1.2.1.bb deleted file mode 100644 index dde7e9db7a..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/xineramaproto_1.2.1.bb +++ /dev/null @@ -1,19 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "Xinerama: Xinerama extension headers" - -DESCRIPTION = "This package provides the wire protocol for the Xinerama \ -extension. This extension is used for retrieving information about \ -physical output devices which may be combined into a single logical X \ -screen." - -LICENSE = "MIT & MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=3e397a5326c83d5d0ebf5b3f87163ac6 \ - file://panoramiXproto.h;endline=24;md5=098e0bc089368a988092b3cbda617a57" - -PE = "1" - -SRC_URI[md5sum] = "9959fe0bfb22a0e7260433b8d199590a" -SRC_URI[sha256sum] = "977574bb3dc192ecd9c55f59f991ec1dff340be3e31392c95deff423da52485b" - -BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-graphics/xorg-proto/xorgproto/0001-Remove-libdir-specification.patch b/poky/meta/recipes-graphics/xorg-proto/xorgproto/0001-Remove-libdir-specification.patch new file mode 100644 index 0000000000..48296f7844 --- /dev/null +++ b/poky/meta/recipes-graphics/xorg-proto/xorgproto/0001-Remove-libdir-specification.patch @@ -0,0 +1,468 @@ +Upstream-Status: Submitted + +https://cgit.freedesktop.org/xorg/proto/xorgproto/commit/?id=91c1c8e1490c970379efb16784003426faec806e + +From 6feb974e0deb3355908c30e07293d82a3f6996ed Mon Sep 17 00:00:00 2001 +From: Jeremy Puhlman <jpuhlman@mvista.com> +Date: Mon, 11 Jun 2018 16:42:43 +0000 +Subject: [PATCH] Remove libdir specification. + +Currently the pc files define libdir, however they are installed into +/usr/share, which means they should be architecture agnostic. In a +multilib system, xorg-proto built for each multilib abi, the value of +libdir is going to be different. These should either be installed in +<libdir>/pkgconfig or they shouldn't define libdir, espeically since +they don't actually use the definition. This specifically causes an +issue when trying to install both abis at the same time, since they are +not binary identical, something like rpm will complain that they + +--- + applewmproto.pc.in | 1 - + bigreqsproto.pc.in | 1 - + compositeproto.pc.in | 1 - + damageproto.pc.in | 1 - + dmxproto.pc.in | 1 - + dri2proto.pc.in | 1 - + dri3proto.pc.in | 1 - + evieproto.pc.in | 1 - + fixesproto.pc.in | 1 - + fontcacheproto.pc.in | 1 - + fontsproto.pc.in | 1 - + glproto.pc.in | 1 - + inputproto.pc.in | 1 - + kbproto.pc.in | 1 - + lg3dproto.pc.in | 1 - + presentproto.pc.in | 1 - + printproto.pc.in | 1 - + randrproto.pc.in | 1 - + recordproto.pc.in | 1 - + renderproto.pc.in | 1 - + resourceproto.pc.in | 1 - + scrnsaverproto.pc.in | 1 - + trapproto.pc.in | 1 - + videoproto.pc.in | 1 - + windowswmproto.pc.in | 1 - + xcalibrateproto.pc.in | 1 - + xcmiscproto.pc.in | 1 - + xextproto.pc.in | 1 - + xf86bigfontproto.pc.in | 1 - + xf86dgaproto.pc.in | 1 - + xf86driproto.pc.in | 1 - + xf86miscproto.pc.in | 1 - + xf86rushproto.pc.in | 1 - + xf86vidmodeproto.pc.in | 1 - + xineramaproto.pc.in | 1 - + xproto.pc.in | 1 - + xproxymngproto.pc.in | 1 - + 37 files changed, 37 deletions(-) + +diff --git a/applewmproto.pc.in b/applewmproto.pc.in +index 17841ac..3227b21 100644 +--- a/applewmproto.pc.in ++++ b/applewmproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: AppleWMProto +diff --git a/bigreqsproto.pc.in b/bigreqsproto.pc.in +index 94577ed..e21bb59 100644 +--- a/bigreqsproto.pc.in ++++ b/bigreqsproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: BigReqsProto +diff --git a/compositeproto.pc.in b/compositeproto.pc.in +index da429c7..b0dada1 100644 +--- a/compositeproto.pc.in ++++ b/compositeproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: CompositeExt +diff --git a/damageproto.pc.in b/damageproto.pc.in +index 6fd9ef1..bfd5244 100644 +--- a/damageproto.pc.in ++++ b/damageproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: DamageProto +diff --git a/dmxproto.pc.in b/dmxproto.pc.in +index e82ee7d..d140e1c 100644 +--- a/dmxproto.pc.in ++++ b/dmxproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: DMXProto +diff --git a/dri2proto.pc.in b/dri2proto.pc.in +index cb5b171..fa9d24d 100644 +--- a/dri2proto.pc.in ++++ b/dri2proto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: DRI2Proto +diff --git a/dri3proto.pc.in b/dri3proto.pc.in +index e42d60e..20da358 100644 +--- a/dri3proto.pc.in ++++ b/dri3proto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: DRI3Proto +diff --git a/evieproto.pc.in b/evieproto.pc.in +index 64e0ec4..fd5442b 100644 +--- a/evieproto.pc.in ++++ b/evieproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: EvIEExt +diff --git a/fixesproto.pc.in b/fixesproto.pc.in +index f8258e2..c7fcb81 100644 +--- a/fixesproto.pc.in ++++ b/fixesproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: FixesProto +diff --git a/fontcacheproto.pc.in b/fontcacheproto.pc.in +index eb4238b..8ffffe9 100644 +--- a/fontcacheproto.pc.in ++++ b/fontcacheproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: FontcacheProto +diff --git a/fontsproto.pc.in b/fontsproto.pc.in +index 9d22354..ebb61a4 100644 +--- a/fontsproto.pc.in ++++ b/fontsproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: FontsProto +diff --git a/glproto.pc.in b/glproto.pc.in +index b951db5..e97bfc9 100644 +--- a/glproto.pc.in ++++ b/glproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: GLProto +diff --git a/inputproto.pc.in b/inputproto.pc.in +index 1eb6619..270b95c 100644 +--- a/inputproto.pc.in ++++ b/inputproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: InputProto +diff --git a/kbproto.pc.in b/kbproto.pc.in +index bdd39f1..32a172d 100644 +--- a/kbproto.pc.in ++++ b/kbproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: KBProto +diff --git a/lg3dproto.pc.in b/lg3dproto.pc.in +index 3930ad7..43fba29 100644 +--- a/lg3dproto.pc.in ++++ b/lg3dproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: Lg3dProto +diff --git a/presentproto.pc.in b/presentproto.pc.in +index 6ec4b7d..55b84dc 100644 +--- a/presentproto.pc.in ++++ b/presentproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: PresentProto +diff --git a/printproto.pc.in b/printproto.pc.in +index 8a2e2d6..a2da66d 100644 +--- a/printproto.pc.in ++++ b/printproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: PrintProto +diff --git a/randrproto.pc.in b/randrproto.pc.in +index 5a5edb2..6d60cbb 100644 +--- a/randrproto.pc.in ++++ b/randrproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: RandrProto +diff --git a/recordproto.pc.in b/recordproto.pc.in +index 0ff4c0b..a87aa82 100644 +--- a/recordproto.pc.in ++++ b/recordproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: RecordProto +diff --git a/renderproto.pc.in b/renderproto.pc.in +index e6028ac..34b15e0 100644 +--- a/renderproto.pc.in ++++ b/renderproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: RenderProto +diff --git a/resourceproto.pc.in b/resourceproto.pc.in +index a409db9..f927cbb 100644 +--- a/resourceproto.pc.in ++++ b/resourceproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: ResourceProto +diff --git a/scrnsaverproto.pc.in b/scrnsaverproto.pc.in +index 6556a2c..fd9d368 100644 +--- a/scrnsaverproto.pc.in ++++ b/scrnsaverproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: ScrnSaverProto +diff --git a/trapproto.pc.in b/trapproto.pc.in +index 8cb0aa8..8a220b9 100644 +--- a/trapproto.pc.in ++++ b/trapproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: TrapProto +diff --git a/videoproto.pc.in b/videoproto.pc.in +index 14b907a..5c22f7a 100644 +--- a/videoproto.pc.in ++++ b/videoproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: VideoProto +diff --git a/windowswmproto.pc.in b/windowswmproto.pc.in +index 0a2ec0b..ec56e82 100644 +--- a/windowswmproto.pc.in ++++ b/windowswmproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: WindowsWMProto +diff --git a/xcalibrateproto.pc.in b/xcalibrateproto.pc.in +index 40b6fd0..f1ea5de 100644 +--- a/xcalibrateproto.pc.in ++++ b/xcalibrateproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: XCalibrate +diff --git a/xcmiscproto.pc.in b/xcmiscproto.pc.in +index 0dfbf21..b72bbc6 100644 +--- a/xcmiscproto.pc.in ++++ b/xcmiscproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: XCMiscProto +diff --git a/xextproto.pc.in b/xextproto.pc.in +index f66eeae..9419c91 100644 +--- a/xextproto.pc.in ++++ b/xextproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: XExtProto +diff --git a/xf86bigfontproto.pc.in b/xf86bigfontproto.pc.in +index 18c5647..4a67be6 100644 +--- a/xf86bigfontproto.pc.in ++++ b/xf86bigfontproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: XF86BigFontProto +diff --git a/xf86dgaproto.pc.in b/xf86dgaproto.pc.in +index 5c5f8b1..e029cd4 100644 +--- a/xf86dgaproto.pc.in ++++ b/xf86dgaproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: XF86DGAProto +diff --git a/xf86driproto.pc.in b/xf86driproto.pc.in +index 93df292..c8faf14 100644 +--- a/xf86driproto.pc.in ++++ b/xf86driproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: XF86DRIProto +diff --git a/xf86miscproto.pc.in b/xf86miscproto.pc.in +index af73fa3..05d5d9e 100644 +--- a/xf86miscproto.pc.in ++++ b/xf86miscproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: XF86MiscProto +diff --git a/xf86rushproto.pc.in b/xf86rushproto.pc.in +index fc5f63b..1c7ff1b 100644 +--- a/xf86rushproto.pc.in ++++ b/xf86rushproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: XF86RushProto +diff --git a/xf86vidmodeproto.pc.in b/xf86vidmodeproto.pc.in +index fcb74f2..ef062b3 100644 +--- a/xf86vidmodeproto.pc.in ++++ b/xf86vidmodeproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: XF86VidModeProto +diff --git a/xineramaproto.pc.in b/xineramaproto.pc.in +index 1ffd37d..9172f1e 100644 +--- a/xineramaproto.pc.in ++++ b/xineramaproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: XineramaProto +diff --git a/xproto.pc.in b/xproto.pc.in +index 8ff2d3d..899316a 100644 +--- a/xproto.pc.in ++++ b/xproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + includex11dir=@includedir@/X11 + +diff --git a/xproxymngproto.pc.in b/xproxymngproto.pc.in +index 5c6fad6..1a81e28 100644 +--- a/xproxymngproto.pc.in ++++ b/xproxymngproto.pc.in +@@ -1,6 +1,5 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ +-libdir=@libdir@ + includedir=@includedir@ + + Name: XProxyManagementProtocol +-- +2.11.1 + diff --git a/poky/meta/recipes-graphics/xorg-proto/xorgproto_2018.4.bb b/poky/meta/recipes-graphics/xorg-proto/xorgproto_2018.4.bb new file mode 100644 index 0000000000..cec6e87559 --- /dev/null +++ b/poky/meta/recipes-graphics/xorg-proto/xorgproto_2018.4.bb @@ -0,0 +1,16 @@ +require xorg-proto-common.inc + +SUMMARY = "XCalibrate: Touchscreen calibration headers" + +DESCRIPTION = "This package provides the headers and specification documents defining \ +the core protocol and (many) extensions for the X Window System" + +LICENSE = "MIT-style" +LIC_FILES_CHKSUM = "file://COPYING-x11proto;md5=b9e051107d5628966739a0b2e9b32676" + +SRC_URI += "file://0001-Remove-libdir-specification.patch" + +SRC_URI[md5sum] = "81557ca47ee66a4e54590fcdadd28114" +SRC_URI[sha256sum] = "fee885e0512899ea5280c593fdb2735beb1693ad170c22ebcc844470eec415a0" + +BBCLASSEXTEND = "native nativesdk" diff --git a/poky/meta/recipes-graphics/xorg-proto/xproto/xproto_fix_for_x32.patch b/poky/meta/recipes-graphics/xorg-proto/xproto/xproto_fix_for_x32.patch deleted file mode 100644 index 4f9ed99c9c..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/xproto/xproto_fix_for_x32.patch +++ /dev/null @@ -1,24 +0,0 @@ -Upstream-Status: Pending - -Don't always define LONG64 for AMD64 - -X32 defines __amd64__/amd64 with 32bit long. We should simply check -__LP64__ before defining LONG64 without checking __amd64__/amd64. - -This fixes compilation with x32 toolchain. - -Received this patch from H.J. Lu <hjl.tools@gmail.com> -Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/1 - -Index: xproto-7.0.31/Xmd.h -=================================================================== ---- xproto-7.0.31.orig/Xmd.h -+++ xproto-7.0.31/Xmd.h -@@ -62,7 +62,6 @@ SOFTWARE. - defined(__ia64__) || defined(ia64) || \ - defined(__sparc64__) || \ - defined(__s390x__) || \ -- defined(__amd64__) || defined(amd64) || \ - defined(__powerpc64__) - # if !defined(__ILP32__) /* amd64-x32 is 32bit */ - # define LONG64 /* 32/64-bit architecture */ diff --git a/poky/meta/recipes-graphics/xorg-proto/xproto_7.0.31.bb b/poky/meta/recipes-graphics/xorg-proto/xproto_7.0.31.bb deleted file mode 100644 index febcc67921..0000000000 --- a/poky/meta/recipes-graphics/xorg-proto/xproto_7.0.31.bb +++ /dev/null @@ -1,19 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "Xlib: C Language X interface headers" - -DESCRIPTION = "This package provides the basic headers for the X Window \ -System." - -LICENSE = "MIT & MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=b9e051107d5628966739a0b2e9b32676" - -PE = "1" - -SRC_URI += "file://xproto_fix_for_x32.patch" - -EXTRA_OECONF_append = " --enable-specs=no" -BBCLASSEXTEND = "native nativesdk" - -SRC_URI[md5sum] = "16791f7ca8c51a20608af11702e51083" -SRC_URI[sha256sum] = "c6f9747da0bd3a95f86b17fb8dd5e717c8f3ab7f0ece3ba1b247899ec1ef7747" diff --git a/poky/meta/recipes-graphics/xorg-util/gccmakedep_1.0.3.bb b/poky/meta/recipes-graphics/xorg-util/gccmakedep_1.0.3.bb deleted file mode 100644 index be3a667449..0000000000 --- a/poky/meta/recipes-graphics/xorg-util/gccmakedep_1.0.3.bb +++ /dev/null @@ -1,21 +0,0 @@ -SUMMARY = "Program to create dependencies in makefiles" - -DESCRIPTION = "The gccmakedep program calls 'gcc -M' to output makefile \ -rules describing the dependencies of each sourcefile, so that make knows \ -which object files must be recompiled when a dependency has changed." - -require xorg-util-common.inc -LIC_FILES_CHKSUM = "file://Makefile.am;endline=20;md5=23c277396d690413245ebb89b18c5d4d" -DESCRIPTION = "create dependencies in makefiles using 'gcc -M'" -DEPENDS = "util-macros" -RDEPENDS_${PN} = "gcc" - -PR = "r3" -PE = "1" - -SRC_URI[md5sum] = "127ddb6131eb4a56fdf6644a63ade788" -SRC_URI[sha256sum] = "f9e2e7a590e27f84b6708ab7a81e546399b949bf652fb9b95193e0e543e6a548" - -do_install_append() { - sed -i "s,--sysroot=${STAGING_DIR_TARGET},," ${D}${bindir}/gccmakedep -} diff --git a/poky/meta/recipes-graphics/xorg-util/makedepend_1.0.5.bb b/poky/meta/recipes-graphics/xorg-util/makedepend_1.0.5.bb index 84a967a81e..727ab54965 100644 --- a/poky/meta/recipes-graphics/xorg-util/makedepend_1.0.5.bb +++ b/poky/meta/recipes-graphics/xorg-util/makedepend_1.0.5.bb @@ -10,7 +10,7 @@ directives would be used in a compilation. Any #include, directives \ can reference files having other #include directives, and parsing will \ occur in these files as well." -DEPENDS = "xproto util-macros" +DEPENDS = "xorgproto util-macros" PE = "1" BBCLASSEXTEND = "native" diff --git a/poky/meta/recipes-graphics/xorg-util/util-macros_1.19.1.bb b/poky/meta/recipes-graphics/xorg-util/util-macros_1.19.2.bb index b39d787568..268059935c 100644 --- a/poky/meta/recipes-graphics/xorg-util/util-macros_1.19.1.bb +++ b/poky/meta/recipes-graphics/xorg-util/util-macros_1.19.2.bb @@ -9,8 +9,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=1970511fddd439b07a6ba789d28ff662" PE = "1" -SRC_URI[md5sum] = "3f8a8e6100556f7f28e469809805dee8" -SRC_URI[sha256sum] = "472ad0e41d1e0abf5ecafd29460bf1b8d47e53d4b7d3abf1f66d02dc576547b8" +SRC_URI[md5sum] = "5059b328fac086b733ffac6607164c41" +SRC_URI[sha256sum] = "9225c45c3de60faf971979a55a5536f3562baa4b6f02246c23e98ac0c09a75b7" # ${PN} is empty so we need to tweak -dev and -dbg package dependencies RDEPENDS_${PN}-dev = "" diff --git a/poky/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips64/xorg.conf b/poky/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips64/xorg.conf index f4cd139e8d..03b94dc3af 100644 --- a/poky/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips64/xorg.conf +++ b/poky/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips64/xorg.conf @@ -26,6 +26,7 @@ Section "Screen" Identifier "Default Screen" Device "Graphics Controller" Monitor "Generic Monitor" + DefaultDepth 16 SubSection "Display" Modes "640x480" EndSubSection diff --git a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc b/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc index cf2286c653..489a428500 100644 --- a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc +++ b/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc @@ -17,7 +17,6 @@ INC_PR = "r8" XORG_PN = "xorg-server" SRC_URI = "${XORG_MIRROR}/individual/xserver/${XORG_PN}-${PV}.tar.bz2" -SRC_URI += "file://macro_tweak.patch" S = "${WORKDIR}/${XORG_PN}-${PV}" @@ -26,7 +25,7 @@ inherit autotools pkgconfig inherit distro_features_check REQUIRED_DISTRO_FEATURES = "x11" -PROTO_DEPS = "randrproto renderproto fixesproto damageproto xextproto xproto xf86dgaproto xf86miscproto xf86vidmodeproto compositeproto recordproto resourceproto videoproto scrnsaverproto xineramaproto fontsproto kbproto inputproto bigreqsproto xcmiscproto presentproto" +PROTO_DEPS = "xorgproto" LIB_DEPS = "pixman libxfont2 xtrans libxau libxext libxdmcp libdrm libxkbfile libpciaccess" DEPENDS = "${PROTO_DEPS} ${LIB_DEPS} font-util" @@ -123,22 +122,22 @@ OPENGL_PKGCONFIGS = "dri glx glamor dri3 xshmfence" PACKAGECONFIG ??= "dri2 udev ${XORG_CRYPTO} \ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', '${OPENGL_PKGCONFIGS}', '', d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl wayland', 'xwayland', '', d)} \ - ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd systemd-logind', '', d)} \ " PACKAGECONFIG[udev] = "--enable-config-udev,--disable-config-udev,udev" -PACKAGECONFIG[dri] = "--enable-dri,--disable-dri,glproto virtual/mesa xf86driproto" -PACKAGECONFIG[dri2] = "--enable-dri2,--disable-dri2,dri2proto" +PACKAGECONFIG[dri] = "--enable-dri,--disable-dri,xorgproto virtual/mesa" +PACKAGECONFIG[dri2] = "--enable-dri2,--disable-dri2,xorgproto" # DRI3 requires xshmfence to also be enabled -PACKAGECONFIG[dri3] = "--enable-dri3,--disable-dri3,dri3proto" -PACKAGECONFIG[glx] = "--enable-glx,--disable-glx,glproto virtual/libgl virtual/libx11" +PACKAGECONFIG[dri3] = "--enable-dri3,--disable-dri3,xorgproto" +PACKAGECONFIG[glx] = "--enable-glx,--disable-glx,xorgproto virtual/libgl virtual/libx11" PACKAGECONFIG[glamor] = "--enable-glamor,--disable-glamor,libepoxy virtual/libgbm,libegl" PACKAGECONFIG[unwind] = "--enable-libunwind,--disable-libunwind,libunwind" PACKAGECONFIG[xshmfence] = "--enable-xshmfence,--disable-xshmfence,libxshmfence" PACKAGECONFIG[xmlto] = "--with-xmlto, --without-xmlto, xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native" PACKAGECONFIG[systemd-logind] = "--enable-systemd-logind=yes,--enable-systemd-logind=no,dbus," PACKAGECONFIG[systemd] = "--with-systemd-daemon,--without-systemd-daemon,systemd" -PACKAGECONFIG[xinerama] = "--enable-xinerama,--disable-xinerama,xineramaproto" +PACKAGECONFIG[xinerama] = "--enable-xinerama,--disable-xinerama,xorgproto" PACKAGECONFIG[xwayland] = "--enable-xwayland,--disable-xwayland,wayland wayland-native wayland-protocols libepoxy" # Xorg requires a SHA1 implementation, pick one diff --git a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-config-fix-NULL-value-detection-for-ID_INPUT-being-u.patch b/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-config-fix-NULL-value-detection-for-ID_INPUT-being-u.patch deleted file mode 100644 index 964d5dd4cf..0000000000 --- a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-config-fix-NULL-value-detection-for-ID_INPUT-being-u.patch +++ /dev/null @@ -1,40 +0,0 @@ -From a309323328d9d6e0bf5d9ea1d75920e53b9beef3 Mon Sep 17 00:00:00 2001 -From: Peter Hutterer <peter.hutterer@who-t.net> -Date: Fri, 5 Jan 2018 11:58:42 +1000 -Subject: [PATCH] config: fix NULL value detection for ID_INPUT being unset - -Erroneous condition caused us to keep going with all devices that didn't have -ID_INPUT set. - -Fixes: 5aad81445c8c3d6 -Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104382 -Reviewed-by: Adam Jackson <ajax@redhat.com> -Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> - -Upstream-status: Backport -https://patchwork.freedesktop.org/patch/196090/ -Affects: < 1.20.0 -[Yocto # 12899] - -Signed-off-by: Armin Kuster <akuser808@gmail.com> - ---- - config/udev.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/config/udev.c b/config/udev.c -index e198e8609..3a73189e2 100644 ---- a/config/udev.c -+++ b/config/udev.c -@@ -135,7 +135,7 @@ device_added(struct udev_device *udev_device) - #endif - - value = udev_device_get_property_value(udev_device, "ID_INPUT"); -- if (value && !strcmp(value, "0")) { -+ if (!value || !strcmp(value, "0")) { - LogMessageVerb(X_INFO, 10, - "config/udev: ignoring device %s without " - "property ID_INPUT set\n", path); --- -2.17.1 - diff --git a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch b/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch deleted file mode 100644 index 16ec3edb3b..0000000000 --- a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch +++ /dev/null @@ -1,61 +0,0 @@ -Discover monotonic clock using compile-time check - -monotonic clock check does not work when cross-compiling. - -Upstream-Status: Denied [Does not work on OpenBSD] -Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> - - - -Original patch follows: - -When xorg-xserver is being cross-compiled, there is currently no way -for us to detect whether the monotonic clock is available on the -target system, because we aren't able to run a test program on the host -system. Currently, in this situation, we default to not use the -monotonic clock. One problem with this situation is that the user will -be treated as idle when the date is updated. - -To fix this situation, we now use a compile-time check to detect whether the -monotonic clock is available. This check can run just fine when we are -cross-compiling. - -Signed-off-by: David James <davidjames at google.com> ---- - configure.ac | 17 +++++++---------- - 1 file changed, 7 insertions(+), 10 deletions(-) - -diff --git a/configure.ac b/configure.ac -index f7ab48c..26e85cd 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1048,19 +1048,16 @@ if ! test "x$have_clock_gettime" = xno; then - CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L" - fi - -- AC_RUN_IFELSE([AC_LANG_SOURCE([ -+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ - #include <time.h> -- --int main(int argc, char *argv[[]]) { -- struct timespec tp; -- -- if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0) -+#include <unistd.h> -+int main() { -+#if !(defined(_POSIX_MONOTONIC_CLOCK) && _POSIX_MONOTONIC_CLOCK >= 0 && defined(CLOCK_MONOTONIC)) -+ #error No monotonic clock -+#endif - return 0; -- else -- return 1; - } -- ])], [MONOTONIC_CLOCK=yes], [MONOTONIC_CLOCK=no], -- [MONOTONIC_CLOCK="cross compiling"]) -+]])],[MONOTONIC_CLOCK=yes], [MONOTONIC_CLOCK=no]) - - LIBS="$LIBS_SAVE" - CPPFLAGS="$CPPFLAGS_SAVE" --- -2.1.4 - diff --git a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0003-Remove-check-for-useSIGIO-option.patch b/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0003-Remove-check-for-useSIGIO-option.patch deleted file mode 100644 index beed6cb4a4..0000000000 --- a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0003-Remove-check-for-useSIGIO-option.patch +++ /dev/null @@ -1,47 +0,0 @@ -From cf407b16cd65ad6e26a9c8e5984e163409a5c0f7 Mon Sep 17 00:00:00 2001 -From: Prabhu Sundararaj <prabhu.sundararaj@nxp.com> -Date: Mon, 30 Jan 2017 16:32:06 -0600 -Subject: [PATCH] Remove check for useSIGIO option - -Commit 6a5a4e60373c1386b311b2a8bb666c32d68a9d99 removes the configure of useSIGIO -option. - -As the xfree86 SIGIO support is reworked to use internal versions of OsBlockSIGIO -and OsReleaseSIGIO. - -No longer the check for useSIGIO is needed - -Upstream-Status: Pending - -Signed-off-by: Prabhu Sundararaj <prabhu.sundararaj@nxp.com> ---- - hw/xfree86/os-support/shared/sigio.c | 6 ------ - 1 file changed, 6 deletions(-) - -diff --git a/hw/xfree86/os-support/shared/sigio.c b/hw/xfree86/os-support/shared/sigio.c -index 884a71c..be76498 100644 ---- a/hw/xfree86/os-support/shared/sigio.c -+++ b/hw/xfree86/os-support/shared/sigio.c -@@ -185,9 +185,6 @@ xf86InstallSIGIOHandler(int fd, void (*f) (int, void *), void *closure) - int i; - int installed = FALSE; - -- if (!xf86Info.useSIGIO) -- return 0; -- - for (i = 0; i < MAX_FUNCS; i++) { - if (!xf86SigIOFuncs[i].f) { - if (xf86IsPipe(fd)) -@@ -256,9 +253,6 @@ xf86RemoveSIGIOHandler(int fd) - int max; - int ret; - -- if (!xf86Info.useSIGIO) -- return 0; -- - max = 0; - ret = 0; - for (i = 0; i < MAX_FUNCS; i++) { --- -2.7.4 - diff --git a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0003-modesetting-Fix-16-bit-depth-bpp-mode.patch b/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0003-modesetting-Fix-16-bit-depth-bpp-mode.patch deleted file mode 100644 index 5243761f1e..0000000000 --- a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0003-modesetting-Fix-16-bit-depth-bpp-mode.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 5028ef46ff4ab0930224b71024a7349b05610d42 Mon Sep 17 00:00:00 2001 -From: Stefan Agner <stefan@agner.ch> -Date: Thu, 22 Dec 2016 15:41:06 +0100 -Subject: [PATCH] modesetting: Fix 16 bit depth/bpp mode - -When setting DefaultDepth to 16 in the Screen section, the current -code requests a 32 bpp framebuffer, however the X-Server seems to -assumes 16 bpp. - -Fixes commit 21217d02168d ("modesetting: Implement 32->24 bpp -conversion in shadow update") - -Signed-off-by: Stefan Agner <stefan@agner.ch> - -Upstream-Status: Submitted [1] - -[1] https://lists.x.org/archives/xorg-devel/2016-December/052113.html ---- - hw/xfree86/drivers/modesetting/driver.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c -index d7030e5..647ad83 100644 ---- a/hw/xfree86/drivers/modesetting/driver.c -+++ b/hw/xfree86/drivers/modesetting/driver.c -@@ -930,7 +930,7 @@ PreInit(ScrnInfoPtr pScrn, int flags) - "Using 24bpp hw front buffer with 32bpp shadow\n"); - defaultbpp = 32; - } else { -- ms->drmmode.kbpp = defaultbpp; -+ ms->drmmode.kbpp = 0; - } - bppflags = PreferConvert24to32 | SupportConvert24to32 | Support32bppFb; - -@@ -950,6 +950,8 @@ PreInit(ScrnInfoPtr pScrn, int flags) - return FALSE; - } - xf86PrintDepthBpp(pScrn); -+ if (!ms->drmmode.kbpp) -+ ms->drmmode.kbpp = pScrn->bitsPerPixel; - - /* Process the options */ - xf86CollectOptions(pScrn, NULL); --- -2.7.4 - diff --git a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/CVE-2018-14665.patch b/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/CVE-2018-14665.patch new file mode 100644 index 0000000000..7f6235b432 --- /dev/null +++ b/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/CVE-2018-14665.patch @@ -0,0 +1,62 @@ +Incorrect command-line parameter validation in the Xorg X server can lead to +privilege elevation and/or arbitrary files overwrite, when the X server is +running with elevated privileges (ie when Xorg is installed with the setuid bit +set and started by a non-root user). The -modulepath argument can be used to +specify an insecure path to modules that are going to be loaded in the X server, +allowing to execute unprivileged code in the privileged process. The -logfile +argument can be used to overwrite arbitrary files in the file system, due to +incorrect checks in the parsing of the option. + +CVE: CVE-2018-14665 +Upstream-Status: Backport +Signed-off-by: Ross Burton <ross.burton@intel.com> + +From 50c0cf885a6e91c0ea71fb49fa8f1b7c86fe330e Mon Sep 17 00:00:00 2001 +From: Matthieu Herrb <matthieu@herrb.eu> +Date: Tue, 23 Oct 2018 21:29:08 +0200 +Subject: [PATCH] Disable -logfile and -modulepath when running with elevated + privileges + +Could cause privilege elevation and/or arbitrary files overwrite, when +the X server is running with elevated privileges (ie when Xorg is +installed with the setuid bit set and started by a non-root user). + +CVE-2018-14665 + +Issue reported by Narendra Shinde and Red Hat. + +Signed-off-by: Matthieu Herrb <matthieu@herrb.eu> +Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> +Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> +Reviewed-by: Adam Jackson <ajax@redhat.com> +--- + hw/xfree86/common/xf86Init.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c +index 6c25eda73..0f57efa86 100644 +--- a/hw/xfree86/common/xf86Init.c ++++ b/hw/xfree86/common/xf86Init.c +@@ -935,14 +935,18 @@ ddxProcessArgument(int argc, char **argv, int i) + /* First the options that are not allowed with elevated privileges */ + if (!strcmp(argv[i], "-modulepath")) { + CHECK_FOR_REQUIRED_ARGUMENT(); +- xf86CheckPrivs(argv[i], argv[i + 1]); ++ if (xf86PrivsElevated()) ++ FatalError("\nInvalid argument -modulepath " ++ "with elevated privileges\n"); + xf86ModulePath = argv[i + 1]; + xf86ModPathFrom = X_CMDLINE; + return 2; + } + if (!strcmp(argv[i], "-logfile")) { + CHECK_FOR_REQUIRED_ARGUMENT(); +- xf86CheckPrivs(argv[i], argv[i + 1]); ++ if (xf86PrivsElevated()) ++ FatalError("\nInvalid argument -logfile " ++ "with elevated privileges\n"); + xf86LogFile = argv[i + 1]; + xf86LogFileFrom = X_CMDLINE; + return 2; +-- +2.18.1 diff --git a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/macro_tweak.patch b/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/macro_tweak.patch deleted file mode 100644 index c36e4e7301..0000000000 --- a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/macro_tweak.patch +++ /dev/null @@ -1,25 +0,0 @@ -This is the revised version of files/macro_tweak.patch for -xorg-server 1.8.99.904 and newer. - -Upstream-Status: Pending - -Signed-off-by: Yu Ke <ke.yu@intel.com> - -Index: xorg-server-1.19.6/xorg-server.m4 -=================================================================== ---- xorg-server-1.19.6.orig/xorg-server.m4 -+++ xorg-server-1.19.6/xorg-server.m4 -@@ -28,10 +28,12 @@ dnl - # Checks for the MACRO define in xorg-server.h (from the sdk). If it - # is defined, then add the given PROTO to $REQUIRED_MODULES. - -+m4_pattern_allow(PKG_CONFIG_SYSROOT_DIR) -+ - AC_DEFUN([XORG_DRIVER_CHECK_EXT],[ - AC_REQUIRE([PKG_PROG_PKG_CONFIG]) - SAVE_CFLAGS="$CFLAGS" -- CFLAGS="$CFLAGS -I`$PKG_CONFIG --variable=sdkdir xorg-server`" -+ CFLAGS="$CFLAGS -I$PKG_CONFIG_SYSROOT_DIR`$PKG_CONFIG --variable=sdkdir xorg-server`" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ - #include "xorg-server.h" - #if !defined $1 diff --git a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/pkgconfig.patch b/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/pkgconfig.patch new file mode 100644 index 0000000000..2ef9fa9fe4 --- /dev/null +++ b/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/pkgconfig.patch @@ -0,0 +1,34 @@ +Upstream-Status: Submitted [https://gitlab.freedesktop.org/xorg/xserver/merge_requests/22] +Signed-off-by: Ross Burton <ross.burton@intel.com> + +From 5f65a6246fe752764045dd1e38912f1dccec71e4 Mon Sep 17 00:00:00 2001 +From: Ross Burton <ross.burton@intel.com> +Date: Thu, 20 Sep 2018 20:12:24 +0100 +Subject: [PATCH] xorg-server.m4: just all cflags instead of just sdkdir + +Instead of fetching just the sdkdir variable of xorg-server using pkg-config, +simply get all of the CFLAGS. Aside from completeness, this helps builds in +sysroots as pkg-config knows what to do with --cflags but doesn't remap +arbitrary variables. + +Signed-off-by: Ross Burton <ross.burton@intel.com> +--- + xorg-server.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/xorg-server.m4 b/xorg-server.m4 +index 18255b91a..195bda5d8 100644 +--- a/xorg-server.m4 ++++ b/xorg-server.m4 +@@ -31,7 +31,7 @@ dnl + AC_DEFUN([XORG_DRIVER_CHECK_EXT],[ + AC_REQUIRE([PKG_PROG_PKG_CONFIG]) + SAVE_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -I`$PKG_CONFIG --variable=sdkdir xorg-server`" ++ CFLAGS="$CFLAGS `$PKG_CONFIG --cflags xorg-server`" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include "xorg-server.h" + #if !defined $1 +-- +2.11.0 + diff --git a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.19.6.bb b/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.1.bb index 7e8a9541cb..9fd2e8d870 100644 --- a/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.19.6.bb +++ b/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.1.bb @@ -1,14 +1,12 @@ require xserver-xorg.inc SRC_URI += "file://musl-arm-inb-outb.patch \ - file://0001-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch \ - file://0003-modesetting-Fix-16-bit-depth-bpp-mode.patch \ - file://0003-Remove-check-for-useSIGIO-option.patch \ file://0001-xf86pciBus.c-use-Intel-ddx-only-for-pre-gen4-hardwar.patch \ - file://0001-config-fix-NULL-value-detection-for-ID_INPUT-being-u.patch \ + file://pkgconfig.patch \ + file://CVE-2018-14665.patch \ " -SRC_URI[md5sum] = "3e47777ff034a331aed2322b078694a8" -SRC_URI[sha256sum] = "a732502f1db000cf36a376cd0c010ffdbf32ecdd7f1fa08ba7f5bdf9601cc197" +SRC_URI[md5sum] = "e525846d1d0af5732ba835f2e2ec066d" +SRC_URI[sha256sum] = "59c99fe86fe75b8164c6567bfc6e982aecc2e4a51e6fbac1b842d5d00549e918" # These extensions are now integrated into the server, so declare the migration # path for in-place upgrades. |