From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from pty.hi.pengutronix.de ([2001:67c:670:100:1d::c5]) by metis.ext.pengutronix.de with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1fj2Um-0000LS-3v for ptxdist@pengutronix.de; Fri, 27 Jul 2018 15:09:24 +0200 Received: from mgr by pty.hi.pengutronix.de with local (Exim 4.89) (envelope-from ) id 1fj2Ul-0003vv-SG for ptxdist@pengutronix.de; Fri, 27 Jul 2018 15:09:23 +0200 Date: Fri, 27 Jul 2018 15:09:23 +0200 From: Michael Grzeschik Message-ID: <20180727130923.r5edqqrelpxb24iu@pengutronix.de> References: <20180726173925.1982-1-m.grzeschik@pengutronix.de> <20180726173925.1982-2-m.grzeschik@pengutronix.de> MIME-Version: 1.0 In-Reply-To: <20180726173925.1982-2-m.grzeschik@pengutronix.de> Subject: Re: [ptxdist] [PATCH v5 1/6] sdl2: add new package List-Id: PTXdist Development Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ptxdist@pengutronix.de Content-Type: multipart/mixed; boundary="===============1826746815==" Errors-To: ptxdist-bounces@pengutronix.de Sender: "ptxdist" To: ptxdist@pengutronix.de --===============1826746815== Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="hixiqxgxmlvit3fj" Content-Disposition: inline --hixiqxgxmlvit3fj Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Jul 26, 2018 at 07:39:20PM +0200, Michael Grzeschik wrote: > Signed-off-by: Michael Grzeschik > --- > v1 -> v2: - added select to MESALIB_GL* on SDL2_OPENGL* > - padded prompt entry with extra spaces > v2 -> v3: - added patch to add egl cflags on configure.in and enabled aut= ogen.sh > v3 -> v4: - improved egl check with PKG_CHECK_MODULES > - removed extract stage and added custom autogen.sh > v4 -> v5: - reworked the configuration for the package > - added a patch to find a valid dri device in kms backend >=20 > ...001-sdl-2.0.8-add-egl-cflags-to-test.patch | 55 +++++++ > ...-find-available-card-if-called-witho.patch | 129 +++++++++++++++ > patches/SDL2-2.0.8/autogen.sh | 3 + > patches/SDL2-2.0.8/series | 5 + > rules/sdl2.in | 153 ++++++++++++++++++ > rules/sdl2.make | 153 ++++++++++++++++++ > 6 files changed, 498 insertions(+) > create mode 100644 patches/SDL2-2.0.8/0001-sdl-2.0.8-add-egl-cflags-to-t= est.patch > create mode 100644 patches/SDL2-2.0.8/0002-sdl-2.0.8-KMSDRM-find-availab= le-card-if-called-witho.patch > create mode 100755 patches/SDL2-2.0.8/autogen.sh > create mode 100644 patches/SDL2-2.0.8/series > create mode 100644 rules/sdl2.in > create mode 100644 rules/sdl2.make >=20 > diff --git a/patches/SDL2-2.0.8/0001-sdl-2.0.8-add-egl-cflags-to-test.pat= ch b/patches/SDL2-2.0.8/0001-sdl-2.0.8-add-egl-cflags-to-test.patch > new file mode 100644 > index 000000000..c86d48e5a > --- /dev/null > +++ b/patches/SDL2-2.0.8/0001-sdl-2.0.8-add-egl-cflags-to-test.patch > @@ -0,0 +1,55 @@ > +From: Sergey Zhuravlevich > +Date: Mon, 16 Jul 2018 12:03:42 +0200 > +Subject: [PATCH] sdl-2.0.8: add egl-cflags to test > + > +- also call aclocal to expand PKG_CHECK_MODULES > + > +Signed-off-by: Sergey Zhuravlevich > +Signed-off-by: Michael Grzeschik > +--- > + autogen.sh | 2 +- > + configure.in | 11 +++++++++++ > + 2 files changed, 12 insertions(+), 1 deletion(-) > + > +diff --git a/autogen.sh b/autogen.sh > +index 9edfb8a7d913..2f1e2ef3d419 100755 > +--- a/autogen.sh > ++++ b/autogen.sh > +@@ -8,7 +8,7 @@ test -z "$srcdir" && srcdir=3D. > + cd "$srcdir" > +=20 > + # Regenerate configuration files > +-cat acinclude/* >aclocal.m4 > ++aclocal > + found=3Dfalse > + for autoconf in autoconf autoconf259 autoconf-2.59 > + do if which $autoconf >/dev/null 2>&1; then $autoconf && found=3Dtrue; = break; fi > +diff --git a/configure.in b/configure.in > +index 1c7e79338a88..06e37a1b7f98 100644 > +--- a/configure.in > ++++ b/configure.in > +@@ -2335,6 +2335,14 @@ dnl Find OpenGL ES > + CheckOpenGLESX11() > + { > + if test x$enable_video =3D xyes -a x$enable_video_opengles =3D xyes= ; then > ++ PKG_CHECK_MODULES(EGL, [egl], [have_egl=3D"yes"], [have_egl=3D"= no"]) > ++ > ++ save_CFLAGS=3D"$CFLAGS" > ++ if test x$have_egl =3D xyes; then > ++ CFLAGS=3D"$save_CFLAGS $EGL_CFLAGS" > ++ EXTRA_CFLAGS=3D"$EXTRA_CFLAGS $EGL_CFLAGS" > ++ fi > ++ > + AC_MSG_CHECKING(for EGL support) > + video_opengl_egl=3Dno > + AC_TRY_COMPILE([ > +@@ -2347,6 +2355,9 @@ CheckOpenGLESX11() > + video_opengl_egl=3Dyes > + ]) > + AC_MSG_RESULT($video_opengl_egl) > ++ > ++ CFLAGS=3D"$save_CFLAGS" > ++ > + if test x$video_opengl_egl =3D xyes; then > + AC_DEFINE(SDL_VIDEO_OPENGL_EGL, 1, [ ]) > + fi > diff --git a/patches/SDL2-2.0.8/0002-sdl-2.0.8-KMSDRM-find-available-card= -if-called-witho.patch b/patches/SDL2-2.0.8/0002-sdl-2.0.8-KMSDRM-find-avai= lable-card-if-called-witho.patch > new file mode 100644 > index 000000000..e889f87ae > --- /dev/null > +++ b/patches/SDL2-2.0.8/0002-sdl-2.0.8-KMSDRM-find-available-card-if-cal= led-witho.patch > @@ -0,0 +1,129 @@ > +From 212c7c68ec228a1058f39497d18c65e9312d00df Mon Sep 17 00:00:00 2001 > +From: Michael Grzeschik > +Date: Thu, 12 Jul 2018 13:48:54 +0200 > +Subject: [PATCH] sdl-2.0.8: KMSDRM: find available card if called without > + index > + > +Signed-off-by: Michael Grzeschik > +--- > + src/video/kmsdrm/SDL_kmsdrmvideo.c | 84 ++++++++++++++++++++++++++++-- > + 1 file changed, 80 insertions(+), 4 deletions(-) > + > +diff --git a/src/video/kmsdrm/SDL_kmsdrmvideo.c b/src/video/kmsdrm/SDL_k= msdrmvideo.c > +index 7855eeddb..f63c91b0a 100644 > +--- a/src/video/kmsdrm/SDL_kmsdrmvideo.c > ++++ b/src/video/kmsdrm/SDL_kmsdrmvideo.c > +@@ -41,15 +41,22 @@ > + #include "SDL_kmsdrmopengles.h" > + #include "SDL_kmsdrmmouse.h" > + #include "SDL_kmsdrmdyn.h" > ++#include > ++#include > ++#include > +=20 > +-#define KMSDRM_DRI_CARD_0 "/dev/dri/card0" > ++#define KMSDRM_DRI_PATH "/dev/dri/" > +=20 > + static int > +-KMSDRM_Available(void) > ++check_modestting(int devindex) > + { > + int available =3D 0; > ++ char device[512]; > ++ int drm_fd; > ++ > ++ sprintf(device, "%scard%d", KMSDRM_DRI_PATH, devindex); > +=20 > +- int drm_fd =3D open(KMSDRM_DRI_CARD_0, O_RDWR | O_CLOEXEC); > ++ drm_fd =3D open(device, O_RDWR | O_CLOEXEC); > + if (drm_fd >=3D 0) { > + if (SDL_KMSDRM_LoadSymbols()) { > + drmModeRes *resources =3D KMSDRM_drmModeGetResources(drm_fd= ); > +@@ -65,6 +72,72 @@ KMSDRM_Available(void) > + return available; > + } > +=20 > ++static int get_dricount(void) > ++{ > ++ int devcount =3D 0; > ++ struct dirent *res; > ++ struct stat sb; > ++ DIR *folder; > ++ > ++ if (!(stat(KMSDRM_DRI_PATH, &sb) =3D=3D 0 > ++ && S_ISDIR(sb.st_mode))) { > ++ printf("The path %s cannot be opened or is not available\n", > ++ KMSDRM_DRI_PATH); > ++ return 0; > ++ } > ++ > ++ if (access(KMSDRM_DRI_PATH, F_OK) =3D=3D -1) { > ++ printf("The path %s cannot be opened\n", > ++ KMSDRM_DRI_PATH); > ++ return 0; > ++ } > ++ > ++ folder =3D opendir(KMSDRM_DRI_PATH); > ++ if (!folder) > ++ return 0; > ++ > ++ while ((res =3D readdir(folder))) { > ++ if (res->d_type =3D=3D DT_CHR) > ++ devcount++; > ++ } > ++ > ++ closedir(folder); > ++ > ++ return devcount; > ++} > ++ > ++static int > ++get_driindex(void) > ++{ > ++ int i =3D 0; > ++ int available =3D 0; > ++ int devcount =3D get_dricount(); > ++ > ++ for (i =3D 0; i < devcount; i++) { > ++ if (check_modestting(i)) { > ++ available =3D 1; > ++ break; > ++ } > ++ } > ++ > ++ if (available) > ++ return i; > ++ > ++ return -ENOENT; > ++} > ++ > ++static int > ++KMSDRM_Available(void) > ++{ > ++ int ret =3D -ENOENT; > ++ > ++ ret =3D get_driindex(); > ++ if (ret >=3D 0) > ++ return 1; > ++ > ++ return ret; > ++} > ++ > + static void > + KMSDRM_Destroy(SDL_VideoDevice * device) > + { > +@@ -83,7 +156,10 @@ KMSDRM_Create(int devindex) > + SDL_VideoDevice *device; > + SDL_VideoData *vdata; > +=20 > +- if (devindex < 0 || devindex > 99) { > ++ if (!devindex || devindex > 99) > ++ devindex =3D get_driindex(); > ++ > ++ if (devindex < 0) { > + SDL_SetError("devindex (%d) must be between 0 and 99.\n", devin= dex); > + return NULL; > + } > +--=20 > +2.18.0 > + > diff --git a/patches/SDL2-2.0.8/autogen.sh b/patches/SDL2-2.0.8/autogen.sh > new file mode 100755 > index 000000000..a430a4eb7 > --- /dev/null > +++ b/patches/SDL2-2.0.8/autogen.sh > @@ -0,0 +1,3 @@ > +#!/bin/sh > + > +./autogen.sh > diff --git a/patches/SDL2-2.0.8/series b/patches/SDL2-2.0.8/series > new file mode 100644 > index 000000000..e4e931f38 > --- /dev/null > +++ b/patches/SDL2-2.0.8/series > @@ -0,0 +1,5 @@ > +# generated by git-ptx-patches > +#tag:base --start-number 1 > +0001-sdl-2.0.8-add-egl-cflags-to-test.patch > +0002-sdl-2.0.8-KMSDRM-find-available-card-if-called-witho.patch > +# b803bb470cfcfd4d04f208304b9fd212 - git-ptx-patches magic > diff --git a/rules/sdl2.in b/rules/sdl2.in > new file mode 100644 > index 000000000..0f20181a2 > --- /dev/null > +++ b/rules/sdl2.in > @@ -0,0 +1,153 @@ > +## SECTION=3Dmultimedia_sdl > + > +menuconfig SDL2 > + tristate > + prompt "SDL2 " > + select LIBC_M > + select LIBC_DL > + select LIBC_PTHREAD > + select GCCLIBS_GCC_S > + select LIBUNWIND > + select CROSS_NASM if SDL2_VIDEO > + select ALSA_LIB if SDL2_ALSA > + sleect XORG_PROTO if SDL2_XORG ^^^^^^ Whoops! this should be a select. I must have typed something wrong while reviewing my mails. Hope you fix it while applying. Thanks, Michael > + select XORG_LIB_X11 if SDL2_XORG > + select XORG_LIB_XXF86VM if SDL2_XORG > + select XORG_LIB_XRANDR if SDL2_XORG > + select XORG_LIB_XCURSOR if SDL2_XORG > + select XORG_LIB_XI if SDL2_XORG > + select TSLIB if SDL2_TSLIB > + select DBUS if SDL2_DBUS > + select LIBDRM if SDL2_WAYLAND > + select MESALIB_GLX if SDL2_OPENGL > + select MESALIB_GLES1 if SDL2_OPENGLES1 > + select MESALIB_GLES2 if SDL2_OPENGLES2 > + select MESALIB_EGL_DRM if SDL2_KMS > + select MESALIB if SDL2_WAYLAND || SDL2_OPENGL > + select MESALIB_GBM if SDL2_WAYLAND > + select MESALIB_EGL_WAYLAND if SDL2_WAYLAND > + select LIBXKBCOMMON if SDL2_WAYLAND > + select UDEV if SDL2_UDEV > + select UDEV_LIBUDEV if SDL2_UDEV > + select PULSEAUDIO if SDL2_PULSEAUDIO > + select WAYLAND_PROTOCOLS if SDL2_WAYLAND > + help > + Simple DirectMedia Layer is a cross-platform multimedia > + library designed to provide low level access to audio, > + keyboard, mouse, joystick, 3D hardware via OpenGL, and > + 2D video framebuffer. > + > +if SDL2 > + > +menuconfig SDL2_AUDIO > + bool > + prompt "SDL2 Audio Support " > + default y > + help > + Turn on to enable audio support in libsdl2 > + > +if SDL2_AUDIO > + > +config SDL2_OSS > + bool > + prompt "SDL2 OSS Support" > + help > + Open Sound System (OSS) is the first attempt in > + unifying the digital audio architecture for UNIX. > + OSS is a set of device drivers that provide a > + uniform API across all the major UNIX architectures. > + > +config SDL2_ALSA > + bool > + prompt "SDL2 ALSA Support" > + default y > + help > + The Advanced Linux Sound Architecture (ALSA) > + provides audio and MIDI functionality to the > + Linux operating system. > + > +config SDL2_PULSEAUDIO > + bool > + prompt "SDL2 Pulseaudio Support" > + default y > + help > + PulseAudio is a sound system for POSIX OSes, meaning that it > + is a proxy for your sound applications. > + > +endif > + > +menuconfig SDL2_VIDEO > + bool > + prompt "SDL2 Video Support " > + default y > + help > + Turn on to enable video support in libsdl2 > + > +if SDL2_VIDEO > + > +config SDL2_KMS > + bool > + prompt "KMS Support" > + help > + kms video support > + > +config SDL2_XORG > + bool > + prompt "Xorg Support" > + help > + X.Org provides an open source implementation of the > + X Window System. > + > +config SDL2_WAYLAND > + bool > + prompt "Wayland Support" > + help > + Wayland Window System. > + > +config SDL2_OPENGL > + bool > + prompt "OpenGL Support" > + depends on SDL2_XORG > + help > + OpenGL is a multi-platform software interface to > + graphics hardware, supporting rendering and imaging > + operations. > + > +config SDL2_OPENGLES > + bool > + default SDL2_OPENGLES1 || SDL2_OPENGLES2 > + > +config SDL2_OPENGLES1 > + bool > + prompt "OpenGLES1 Support" > + help > + OpenGL ES1 graphics support > + > +config SDL2_OPENGLES2 > + bool > + prompt "OpenGLES2 Support" > + help > + OpenGL ES2 graphics support > + > +endif > + > +config SDL2_TSLIB > + bool > + prompt "tslib Support" > + help > + Turn on support for the touchscreen library 'tslib' > + > +config SDL2_UDEV > + bool > + prompt "udev Support" > + help > + Turn on support for the udev library > + > +config SDL2_DBUS > + bool > + prompt "dbus Support" > + > + help > + Turn on support for the dbus library > + > +endif > diff --git a/rules/sdl2.make b/rules/sdl2.make > new file mode 100644 > index 000000000..43c8e5e0b > --- /dev/null > +++ b/rules/sdl2.make > @@ -0,0 +1,153 @@ > +# -*-makefile-*- > +# > +# Copyright (C) 2018 by Sergey Zhuravlevich > +# > +# See CREDITS for details about who has contributed to this project. > +# > +# For further information about the PTXdist project and license conditio= ns > +# see the README file. > +# > + > +# > +# We provide this package > +# > +PACKAGES-$(PTXCONF_SDL2) +=3D sdl2 > + > +# > +# Paths and names > +# > +SDL2_VERSION :=3D 2.0.8 > +SDL2_MD5 :=3D 3800d705cef742c6a634f202c37f263f > +SDL2 :=3D SDL2-$(SDL2_VERSION) > +SDL2_SUFFIX :=3D tar.gz > +SDL2_URL :=3D https://www.libsdl.org/release/$(SDL2).$(SDL2_SUFFIX) > +SDL2_SOURCE :=3D $(SRCDIR)/$(SDL2).$(SDL2_SUFFIX) > +SDL2_DIR :=3D $(BUILDDIR)/$(SDL2) > +SDL2_LICENSE :=3D zlib > + > +# ----------------------------------------------------------------------= ------ > +# Prepare > +# ----------------------------------------------------------------------= ------ > + > +# > +# autoconf > +# > +SDL2_CONF_TOOL :=3D autoconf > +SDL2_CONF_OPT :=3D \ > + $(CROSS_AUTOCONF_USR) \ > + --enable-shared \ > + --disable-static \ > + --enable-libtool-lock \ > + --enable-assertions=3Dauto \ > + --enable-dependency-tracking \ > + --enable-libc \ > + --enable-gcc-atomics \ > + --enable-atomic \ > + --$(call ptx/endis,PTXCONF_SDL2_AUDIO)-audio \ > + --$(call ptx/endis,PTXCONF_SDL2_VIDEO)-video \ > + --enable-render \ > + --enable-events \ > + --enable-joystick \ > + --enable-haptic \ > + --disable-power \ > + --disable-filesystem \ > + --enable-threads \ > + --enable-timers \ > + --enable-file \ > + --enable-loadso \ > + --enable-cpuinfo \ > + --enable-assembly \ > + --disable-ssemath \ > + --disable-mmx \ > + --disable-3dnow \ > + --disable-sse \ > + --disable-sse2 \ > + --disable-sse3 \ > + --disable-jack \ > + --disable-jack-shared \ > + --disable-sndio \ > + --disable-sndio-shared \ > + --disable-fusionsound \ > + --disable-fusionsound-shared \ > + --$(call ptx/endis,PTXCONF_SDL2_OSS)-oss \ > + --$(call ptx/endis,PTXCONF_SDL2_ALSA)-alsa \ > + --disable-alsatest \ > + --disable-alsa-shared \ > + --disable-esd \ > + --disable-esdtest \ > + --disable-esd-shared \ > + --$(call ptx/endis,PTXCONF_SDL2_PULSEAUDIO)-pulseaudio \ > + --$(call ptx/endis,PTXCONF_SDL2_PULSEAUDIO)-pulseaudio-shared \ > + --disable-arts \ > + --disable-arts-shared \ > + --disable-nas \ > + --disable-nas-shared \ > + --disable-diskaudio \ > + --disable-dummyaudio \ > + --disable-libsamplerate \ > + --disable-libsamplerate-shared \ > + --$(call ptx/endis,PTXCONF_SDL2_WAYLAND)-video-wayland \ > + --disable-video-wayland-qt-touch \ > + --$(call ptx/endis,PTXCONF_SDL2_WAYLAND)-wayland-shared \ > + --disable-video-mir \ > + --disable-mir-shared \ > + --disable-video-rpi \ > + --disable-altivec \ > + --$(call ptx/endis,PTXCONF_SDL2_XORG)-video-x11 \ > + --disable-x11-shared \ > + --$(call ptx/endis,PTXCONF_SDL2_XORG)-video-x11-vm \ > + --disable-video-vivante \ > + --disable-video-x11-xinerama \ > + --$(call ptx/endis,PTXCONF_SDL2_XORG)-video-x11-xrandr \ > + --$(call ptx/endis,PTXCONF_SDL2_XORG)-video-x11-xcursor \ > + --disable-video-x11-xdbe \ > + --$(call ptx/endis,PTXCONF_SDL2_XORG)-video-x11-xinput \ > + --disable-video-x11-scrnsaver \ > + --disable-video-x11-xshape \ > + --disable-video-cocoa \ > + --disable-render-metal \ > + --disable-video-directfb \ > + --disable-directfb-shared \ > + --$(call ptx/endis,PTXCONF_SDL2_KMS)-video-kmsdrm \ > + --$(call ptx/endis,PTXCONF_SDL2_KMS)-kmsdrm-shared \ > + --enable-video-dummy \ > + --$(call ptx/endis,PTXCONF_SDL2_OPENGL)-video-opengl \ > + --$(call ptx/endis,PTXCONF_SDL2_OPENGLES)-video-opengles \ > + --$(call ptx/endis,PTXCONF_SDL2_OPENGLES1)-video-opengles1 \ > + --$(call ptx/endis,PTXCONF_SDL2_OPENGLES2)-video-opengles2 \ > + --disable-video-vulkan \ > + --$(call ptx/endis,PTXCONF_SDL2_UDEV)-libudev \ > + --$(call ptx/endis,PTXCONF_SDL2_DBUS)-dbus \ > + --disable-ime \ > + --disable-ibus \ > + --disable-fcitx \ > + --$(call ptx/endis,PTXCONF_SDL2_TSLIB)-input-tslib \ > + --enable-pthreads \ > + --enable-pthread-sem \ > + --disable-directx \ > + --enable-sdl-dlopen \ > + --enable-clock_gettime \ > + --disable-rpath \ > + --disable-render-d3d \ > + --$(call ptx/wwo,PTXCONF_SDL2_XORG)-x > + > +# ----------------------------------------------------------------------= ------ > +# Target-Install > +# ----------------------------------------------------------------------= ------ > + > +$(STATEDIR)/sdl2.targetinstall: > + @$(call targetinfo) > + > + @$(call install_init, sdl2) > + @$(call install_fixup, sdl2,PRIORITY,optional) > + @$(call install_fixup, sdl2,SECTION,base) > + @$(call install_fixup, sdl2,AUTHOR,"Sergey Zhuravlevich ") > + @$(call install_fixup, sdl2,DESCRIPTION,missing) > + > + @$(call install_lib, sdl2, 0, 0, 0644, libSDL2-2.0) > + > + @$(call install_finish, sdl2) > + > + @$(call touch) > + > +# vim: syntax=3Dmake > --=20 > 2.18.0 >=20 >=20 > _______________________________________________ > ptxdist mailing list > ptxdist@pengutronix.de --=20 Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | --hixiqxgxmlvit3fj Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEElXvEUs6VPX6mDPT8C+njFXoeLGQFAltbGYMACgkQC+njFXoe LGQ6zA//f7dXe/KXRbPEFD66gzdOR6UvZpadf6yKZEaSkWhIa5m1kvAnv1r640TK rKxbhiJA0q3ddVZJXpA/wQRNQMNrJsfKNzX0dFPEQQwpoKMTodpVfGgkKjlWOVY0 SRbsygGZLZRzh079Cc9coJc5rly4Cm6cd1uVwjs+RxQoxGCL0UTXqTa6cg+eHrF9 m/L0bmHJnn94Gu2q3DHWXhnbh8nV6/UdP5YGTl5lF1OOxN8XB0+AxL+Qy2XUNcAR NqOKMqPrilSlvOXxZGJkm2O4ZvDk4xpEmpyLvREc3DBGaNxSAKRQDSHpnbu0Q1kQ tYpsPgbp1LLdePMjatKETJnbF5mAuyDjD0FrB42p7wSeSQH1GjVC6BCQZfj0ZOJK BFt5lfO4EbWJR+8I4C0Szk8qPgddiCcEj34M3PbBf6WE1P89xIUPrzEO7MmweRpX xAcV6JeXBv+2cFpuw7XPFn8GYQqAHu/7m8agNQDPZ/cQZDEQJXpqI/oVcQeKG7b/ yq8v7ResWOijKc3AaTKMakda7wCLZKMpadu4kIMwOy/7DrQ5SI2G5w2Dqtu1rjH+ RBp/5ES5KSHGZYDKEYYtEDTq09ltJx6+qb2tQlE0oIwokVqQCGCF9huBOY12agpr gQ8npy7NA9os9gxiUHWFOVzSXfWbBISXxQqM7B5qqzPscubh2EE= =I/AC -----END PGP SIGNATURE----- --hixiqxgxmlvit3fj-- --===============1826746815== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcHR4ZGlzdCBt YWlsaW5nIGxpc3QKcHR4ZGlzdEBwZW5ndXRyb25peC5kZQ== --===============1826746815==--