+
[](https://github.com/jens-maus/thinRoot/releases/latest)
[](https://github.com/jens-maus/thinRoot/releases/latest)
@@ -10,32 +10,65 @@
[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=RAQSDY9YNZVCL)
[](https://github.com/jens-maus/thinRoot/stargazers/)
-_thinRoot_ is a buildroot (https://buildroot.org/) powered operating system environment to create lightweight user-defined kiosk systems as ThinClients (e.g. using intel NUC, RaspberryPi, ASUS Tinkerboard, etc.) to smoothly connect to server-based desktop environments using ThinLinc, RDP (xfreerdp/remmina), VNC, etc. or to create simply web-kiosk systems displaying a webpage fullscreen.
+_thinRoot_ is a buildroot (https://buildroot.org/) powered operating system environment to create lightweight user-defined kiosk systems or ThinClients for generic x86_64 hardware (e.g. intelNUC, standard PCs, Laptops, etc.) or single-board computer (SBC) driven embedded systems (RaspberryPi, ASUS Tinkerboard, etc.) to smoothly connect to server-based desktop environments (Linux/Windows Terminalserver, VDIs, etc.) via included ThinLinc, RDP (xfreerdp), VNC, SPICE, etc. clients or to create simple web-kiosk systems displaying a single fullscreen webpage upon bootup.
## :cookie: Features
-* provides a lightweight kiosk system which after bootup provides a simple connection GUI with options to connect via [ThinLinc](http://www.cendio.se/), RDP (via [freerdp](https://github.com/FreeRDP/FreeRDP) or [remmina](https://remmina.org/)) or VNC to Linux and Windows-based Terminalservers.
-* allows to run a fullscreen webbrowser (e.g. [qt-webengine-kiosk](https://github.com/akdor1154/qt-webengine-kiosk)) for webkiosk-based applications.
-* allows to either use PXE/TFTP-based network boot environments or allow to directly install the thinRoot images onto a local storage disk.
-* allows to create full-fledged system images below 150MB in size (e.g. for a fast network-based bootup).
-
-## :fire: Limitations
-* The only limitation is, that we are **currently** not providing ready-to-use images for your selected hardware. Hence, you will have to create these images yourself using the provided information below.
+* allows to be setup as a lightweight and generic ThinClient system which after bootup providing a simple connection GUI (using [qutselect](https://github.com/hzdr/qutselect)) with options to connect via [ThinLinc](http://www.cendio.se/), RDP (via [freerdp](https://github.com/FreeRDP/FreeRDP)), VNC or [SPICE](https://www.spice-space.org/) to Linux- or Windows-based desktop systems (Terminalserver, VDI, etc.) including potential USB device redirection/forwarding.
+* allows to be setup to start only a fullscreen webbrowser (via [WebKit/MiniBrowser](https://github.com/WebKit/WebKit/tree/main/Tools/MiniBrowser)) for simple fullscreen webkiosk use-cases.
+* direct support for SPICE-based connections to SPICE-enabled VDI systems hosted via [ProxmoxVE](https://www.proxmox.com/en/) including cluster proxied connection support.
+* boots and operates completly in a full-fledged RAM disk with no mandatory local disk storage requirements.
+* allows to be booted solely using existing PXE+TFTP/HTTP+DHCP-based netboot environments or to directly install the thinRoot images onto a small local boot disk.
+* allows to use a TFTP/HTTP-connected bootserver: fetches environment files from a bootserver which then can be used to define alternative system bootup procedures (based on the hostname/MAC of the client system) by simply changing these environment files on the TFTP/HTTP bootserver.
+* highly optimized for a small footprint: compressed kernel and system for fast network-based bootup use-cases.
+* easily adaptable to other potential use cases apart from simple web-kiosk or ThinClient environment uses.
+* can be easily enhanced to support more x86/ARM-based hardware.
## :computer: Requirements
-1. One of the following ThinClient / single-board-computer (SBC) hardware:
- * RaspberryPi 4, RaspberryPi 400, RaspberryPi Compute Module 4
- * RaspberryPi 3, RaspberryPi Compute Module 3
- * ASUS Tinkerboard, ASUS Tinkerboard S
- * All "Intel NUC" type systems
-2. If you want to run thinRoot as a pure network booted system, you require a PXE+TFTP+DHCP environment.
-4. A server-based desktop environment to connect to (e.g. Linux via ThinLinc, Windows via RDP, etc.).
+1. A supported x86_64/ARM-based hardware. Well working and tested hardware:
+ * All generic x86_64-based hardware (e.g. Intel NUC, modern Laptops, etc.) which come with directly supported PXE boot capabilities (Legacy or UEFI) in the BIOS.
+ * All ARM-based single board computer (SBC) systems supported by the [U-Boot](https://www.denx.de/project/u-boot/) bootloader which is used to provide a common way to boot the kernel and initrd via network. This includes:
+ * [RaspberryPi5 Model B](https://www.raspberrypi.com/products/raspberry-pi-5/), [RaspberryPi Compute Module 5](https://www.raspberrypi.com/products/compute-module-5), [RaspberryPi 500](https://www.raspberrypi.com/products/raspberry-pi-500/)
+ * [RaspberryPi4 Model B](https://www.raspberrypi.com/products/raspberry-pi-4-model-b/), [RaspberryPi Compute Module 4](https://www.raspberrypi.com/products/compute-module-4), [RaspberryPi 400](https://www.raspberrypi.com/products/raspberry-pi-400-unit/)
+ * [RaspberryPi3 Model B+](https://www.raspberrypi.com/products/raspberry-pi-3-model-b-plus/), [RaspberryPi3 Model B](https://www.raspberrypi.com/products/raspberry-pi-3-model-b/), [RaspberryPi3 Model A+](https://www.raspberrypi.com/products/raspberry-pi-3-model-a-plus/), [RaspberryPi Compute Module 3](https://www.raspberrypi.com/products/compute-module-3-plus/), [RaspberryPi Zero 2 W](https://www.raspberrypi.com/products/raspberry-pi-zero-2-w/)
+ * [TinkerBoard S](https://www.asus.com/de/networking-iot-servers/aiot-industrial-solutions/all-series/tinker-board-s/), [TinkerBoard](https://www.asus.com/de/networking-iot-servers/aiot-industrial-solutions/all-series/tinker-board/)
+2. An already working PXE+TFTP/HTTP+DHCP bootserver environment where the thinRoot images and its environment files can be installed and directly accessed upon bootup via TFTP/HTTP sideloading.
+3. In case of a ThinClient use-case: A network-based desktop environment (e.g. Windows Terminalserver, VDI system, etc.) to connect to via ThinLinc, RDP, VNC or SPICE protocol.
+4. In case of a web-kisok use-case: A web page that can be configured using a bootserver-definable environment file so that thinRoot automatically starts as a lightweight web-kiosk.
-## :cloud: Installation
-The installation of thinRoot is quite straight forward as it is delivered as a full PXE bootable system image that can be directly booted using a PXE+TFTP+DHCP environment:
+## :cloud: Quick-Installation
+The installation of thinRoot is quite straight forward as it is delivered as fully network bootable system images which boot directly into a RAMdisk using images hosted by a an already existing PXE+TFTP/HTTP+DHCP environment:
-1. [Download latest release](https://github.com/jens-maus/thinRoot/releases) archive for the hardware platform you are using:
-2. Unarchive tar.bz2 file resulting in a 'bzImage' file to be bootable via a standard PXE environment.
+1. [Download latest release](https://github.com/jens-maus/thinRoot/releases) zip archive for the hardware platform you are interesed in:
+ - *generic-x86_64*
+ 1. Put the unarchived `*.img` file into your tftpboot PXE environment (e.g. under `/tftpboot/thinroot`).
+ - *RaspberryPi, Tinkerboard*:
+ 1. Put the unarchived `*-[platform]-kernel.img` and `*-[platform].img` file into your existing tftpboot PXE environment where `[platform]` corresponds to your chosen hardware image.
+ 2. Use an imaging tool (e.g. [Etcher](https://github.com/balena-io/etcher) to flash the included `*-[platform]-sdcard.img` files to a fresh microSD card or USB thumb drive.
+ 3. Modify the `/boot/bootEnv.txt` file in the FAT32 boot partition to match your TFTP/HTTP bootserver setup.
+2. Make sure your PXE+TFTP/HTTP+DHCP/bootserver provides the image files also via HTTP (e.g. using a nginx proxy against `/tftpboot`).
+3. (`generic-x86_64`): Modify your PXE+TFTP/HTTP+DHCP/bootserver environment to load the corresponding `*.img` via HTTP and with the following APPEND line
+ - *iPXE/UEFI boot environment*:
+ ```cfg
+ set root-path http://192.168.74.30/thinroot/
+ kernel ${root-path}thinroot.img
+ imgargs thinroot.img BOOT_IMAGE=${root-path}/thinroot.img console=tty2 noswap noinitrd consoleblank=120 init_on_alloc=1 init_on_free=0 slab_nomerge net.ifnames=0 intel_iommu=igfx_off quiet loglevel=0
+ ```
+ - *Syslinux/Legacy boot environment*:
+ ```cfg
+ LABEL thinroot
+ MENU LABEL ^thinRoot (stable)
+ KERNEL http://192.168.74.30/thinroot/thinroot.img
+ APPEND console=tty2 noswap noinitrd consoleblank=120 init_on_alloc=1 init_on_free=0 slab_nomerge net.ifnames=0 intel_iommu=igfx_off quiet loglevel=0
+ ```
+4. (`rpi*, tinkerboard*`): Modify the `/boot/bootEnv.txt` file on the microSD card/USB thumb drive to match your PXE+TFTP/HTTP+DHCP environment:
+ ```
+ bootserver=192.168.74.30
+ kernel_img=thinroot/thinroot-tinkerboard-kernel.img
+ initrd=thinroot/thinroot-tinkerboard.img
+ extraargs=BASE_PATH=http://192.168.74.30/thinroot
+ ```
+ Make sure to remove comments (`#`) from lines which are required and modify the pathes to match your PXE+TFTP/HTTP+DHCP environment. For example, it might also simply be enough to just enable the `extraargs=...` line if you want the image on the microSD card itself to be booted. However, if you want to fetch the kernel image and initrd from the `bootserver` make sure to uncomment these lines as well.
## :yum: How to contribute
As the thinRoot project is an open source based project everyone is invited to contribute to this project. So, if you are a talented developer and want to contribute to the success of thinRoot feel free to send over pull requests or report issues / enhancement requests. Please note, however, the licensing and contributing implications and accept that - in short - anything you contribute to this repository/project (especially source code) will be (re)licensed under the Apache 2.0 license (see [CONTRIBUTING.md](CONTRIBUTING.md)). In addition, please understand that we will only accept contributions (either source code or issues in the issue tracker) if these comply to our [CODE OF CONDUCT](CODE_OF_CONDUCT.md).
@@ -49,9 +82,9 @@ Building your own thinRoot image is a very straight forward process using this b
```sh
$ git clone https://github.com/jens-maus/thinRoot
$ cd thinRoot
-$ make PRODUCT=intelnuc release
+$ make PRODUCT=generic-x86_64 release
[wait up to 1h]
-$ cp release/thinroot-YYYYMMDD-intelnuc.img /tftpboot/thinroot/
+$ cp release/thinroot-YYYYMMDD-generic-x86_64.img /tftpboot/thinroot/
```
## :scroll: License
diff --git a/buildroot-external/Buildroot.config b/buildroot-external/Buildroot.config
index f9cebed..0fd19ce 100644
--- a/buildroot-external/Buildroot.config
+++ b/buildroot-external/Buildroot.config
@@ -10,11 +10,14 @@ BR2_TARGET_GENERIC_HOSTNAME="thinroot"
BR2_TARGET_GENERIC_ISSUE="Welcome to thinRoot"
BR2_TARGET_GENERIC_PASSWD_SHA512=y
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
+BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_TARGET_GENERIC_GETTY_PORT="tty2"
-BR2_ENABLE_LOCALE_WHITELIST="C en_US de_DE"
-BR2_GENERATE_LOCALE="en_US de_DE"
+BR2_ENABLE_LOCALE_PURGE=y
+BR2_ENABLE_LOCALE_WHITELIST="C.UTF-8 en_US.UTF-8 de_DE.UTF-8"
+BR2_GENERATE_LOCALE="C.UTF-8 en_US.UTF-8 de_DE.UTF-8"
BR2_SYSTEM_ENABLE_NLS=y
+BR2_TARGET_TZ_INFO=y
BR2_TARGET_LOCALTIME="Europe/Berlin"
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_THINROOT_PATH)/rootfs-overlay"
BR2_LINUX_KERNEL=y
@@ -23,6 +26,9 @@ BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y
# Buildroot packages
+BR2_PACKAGE_XZ=y
+BR2_PACKAGE_KMOD_TOOLS=y
+BR2_PACKAGE_HOST_KMOD_XZ=y
BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_THINROOT_PATH)/Busybox.config"
BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
BR2_PACKAGE_ALSA_UTILS=y
@@ -30,6 +36,10 @@ BR2_PACKAGE_ALSA_UTILS_AMIXER=y
BR2_PACKAGE_FFMPEG=y
# BR2_PACKAGE_FFMPEG_FFMPEG is not set
BR2_PACKAGE_FFMPEG_XCBGRAB=y
+BR2_PACKAGE_FFMPEG_GPL=y
+BR2_PACKAGE_GLIBC_UTILS=y
+BR2_PACKAGE_X264=y
+BR2_PACKAGE_X265=y
BR2_PACKAGE_PULSEAUDIO=y
BR2_PACKAGE_DOSFSTOOLS=y
BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y
@@ -40,34 +50,32 @@ BR2_PACKAGE_F2FS_TOOLS=y
BR2_PACKAGE_NTFS_3G=y
BR2_PACKAGE_DEJAVU=y
BR2_PACKAGE_LIBERATION=y
-BR2_PACKAGE_MESA3D_DEMOS=y
-BR2_PACKAGE_FREERDP=y
+BR2_PACKAGE_LIBDRM=y
BR2_PACKAGE_MESA3D=y
BR2_PACKAGE_MESA3D_LLVM=y
-BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y
+BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_LLVMPIPE=y
BR2_PACKAGE_MESA3D_OPENGL_GLX=y
BR2_PACKAGE_MESA3D_OPENGL_EGL=y
BR2_PACKAGE_MESA3D_OPENGL_ES=y
+BR2_PACKAGE_GSETTINGS_DESKTOP_SCHEMAS=y
BR2_PACKAGE_PSPLASH=y
-BR2_PACKAGE_PSPLASH_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/patches/psplash/hzdr"
-BR2_PACKAGE_QT5BASE_OPENGL=y
-BR2_PACKAGE_QT5BASE_OPENGL_ES2=y
-BR2_PACKAGE_QT5BASE_OPENGL_LIB=y
-BR2_PACKAGE_QT5BASE_DEFAULT_QPA="xcb"
+BR2_PACKAGE_PSPLASH_IMAGE="$(BR2_EXTERNAL_THINROOT_PATH)/patches/psplash/logo-hzdr.png"
BR2_PACKAGE_XORG7=y
BR2_PACKAGE_XSERVER_XORG_SERVER=y
BR2_PACKAGE_XLIB_LIBXAW=y
BR2_PACKAGE_XLIB_LIBXV=y
+BR2_PACKAGE_XAPP_XCOMPMGR=y
BR2_PACKAGE_XAPP_XPROP=y
BR2_PACKAGE_XAPP_XRANDR=y
BR2_PACKAGE_XAPP_XSETROOT=y
-BR2_PACKAGE_XDRIVER_XF86_INPUT_EVDEV=y
-BR2_PACKAGE_XDRIVER_XF86_INPUT_MOUSE=y
+BR2_PACKAGE_XDRIVER_XF86_INPUT_LIBINPUT=y
BR2_PACKAGE_XFONT_FONT_MISC_CYRILLIC=y
BR2_PACKAGE_NODM=y
BR2_PACKAGE_XDOTOOL=y
BR2_PACKAGE_OPENBOX=y
BR2_PACKAGE_LINUX_FIRMWARE=y
+BR2_PACKAGE_LINUX_FIRMWARE_COMPRESS=y
+BR2_PACKAGE_LINUX_FIRMWARE_COMPRESS_ZSTD=y
BR2_PACKAGE_ACPID=y
BR2_PACKAGE_EUDEV_RULES_GEN=y
BR2_PACKAGE_USBMOUNT=y
@@ -84,14 +92,24 @@ BR2_PACKAGE_NTP_NTPDATE=y
BR2_PACKAGE_WGET=y
BR2_PACKAGE_IRQBALANCE=y
BR2_PACKAGE_TAR=y
+BR2_PACKAGE_UTIL_LINUX_RFKILL=y
+BR2_PACKAGE_PCSC_LITE=y
+# BR2_PACKAGE_URANDOM_SCRIPTS is not set
+BR2_TARGET_ROOTFS_CPIO=y
BR2_TARGET_ROOTFS_CPIO_LZ4=y
# BR2_TARGET_ROOTFS_TAR is not set
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_E2FSPROGS=y
BR2_PACKAGE_HOST_MKPASSWD=y
BR2_PACKAGE_HOST_MTOOLS=y
-BR2_PACKAGE_QUTSELECT=y
-BR2_PACKAGE_THINLINC=y
BR2_PACKAGE_HOTKEYD=y
BR2_PACKAGE_NUMLOCKX=y
BR2_PACKAGE_XPRINTIDLE=y
+BR2_PACKAGE_XOSD=y
+BR2_PACKAGE_XKB_SWITCH=y
+BR2_PACKAGE_PIPEWIRE=y
+BR2_PACKAGE_SETROOTPIX=y
+
+# X11 debug
+#BR2_PACKAGE_XAPP_XDPYINFO=y
+#BR2_PACKAGE_MESA3D_DEMOS=y
diff --git a/buildroot-external/Busybox.config b/buildroot-external/Busybox.config
index 6cb7420..d80bfbb 100644
--- a/buildroot-external/Busybox.config
+++ b/buildroot-external/Busybox.config
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Busybox version: 1.36.1
-# Wed Mar 27 17:09:52 2024
+# Tue Feb 4 14:35:58 2025
#
CONFIG_HAVE_DOT_CONFIG=y
@@ -571,19 +571,19 @@ CONFIG_TUNE2FS=y
# Linux Module Utilities
#
# CONFIG_MODPROBE_SMALL is not set
-CONFIG_DEPMOD=y
-CONFIG_INSMOD=y
-CONFIG_LSMOD=y
-CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
-CONFIG_MODINFO=y
-CONFIG_MODPROBE=y
-CONFIG_FEATURE_MODPROBE_BLACKLIST=y
-CONFIG_RMMOD=y
+# CONFIG_DEPMOD is not set
+# CONFIG_INSMOD is not set
+# CONFIG_LSMOD is not set
+# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
+# CONFIG_MODINFO is not set
+# CONFIG_MODPROBE is not set
+# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set
+# CONFIG_RMMOD is not set
#
# Options common to multiple modutils
#
-CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS=y
+# CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS is not set
# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
# CONFIG_FEATURE_2_4_MODULES is not set
# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
@@ -591,12 +591,12 @@ CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS=y
# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
-CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
+# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set
# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set
-CONFIG_FEATURE_MODUTILS_ALIAS=y
-CONFIG_FEATURE_MODUTILS_SYMBOLS=y
-CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
-CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
+# CONFIG_FEATURE_MODUTILS_ALIAS is not set
+# CONFIG_FEATURE_MODUTILS_SYMBOLS is not set
+CONFIG_DEFAULT_MODULES_DIR=""
+CONFIG_DEFAULT_DEPMOD_FILE=""
#
# Linux System Utilities
@@ -1012,26 +1012,22 @@ CONFIG_VCONFIG=y
CONFIG_DHCPD_LEASES_FILE=""
# CONFIG_DUMPLEASES is not set
# CONFIG_DHCPRELAY is not set
-CONFIG_UDHCPC=y
-CONFIG_FEATURE_UDHCPC_ARPING=y
-CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y
-CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script"
-CONFIG_UDHCPC6_DEFAULT_SCRIPT="/usr/share/udhcpc/default6.script"
-CONFIG_UDHCPC6=y
-CONFIG_FEATURE_UDHCPC6_RFC3646=y
-CONFIG_FEATURE_UDHCPC6_RFC4704=y
-CONFIG_FEATURE_UDHCPC6_RFC4833=y
-CONFIG_FEATURE_UDHCPC6_RFC5970=y
-
-#
-# Common options for DHCP applets
-#
-CONFIG_UDHCPC_DEFAULT_INTERFACE="eth0"
+# CONFIG_UDHCPC is not set
+# CONFIG_FEATURE_UDHCPC_ARPING is not set
+# CONFIG_FEATURE_UDHCPC_SANITIZEOPT is not set
+CONFIG_UDHCPC_DEFAULT_SCRIPT=""
+CONFIG_UDHCPC6_DEFAULT_SCRIPT=""
+# CONFIG_UDHCPC6 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set
+# CONFIG_FEATURE_UDHCPC6_RFC5970 is not set
+CONFIG_UDHCPC_DEFAULT_INTERFACE=""
# CONFIG_FEATURE_UDHCP_PORT is not set
CONFIG_UDHCP_DEBUG=0
-CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
+CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=0
# CONFIG_FEATURE_UDHCP_RFC3397 is not set
-CONFIG_FEATURE_UDHCP_8021Q=y
+# CONFIG_FEATURE_UDHCP_8021Q is not set
CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n"
#
diff --git a/buildroot-external/Config.in b/buildroot-external/Config.in
index 700c8b5..d0a76cf 100644
--- a/buildroot-external/Config.in
+++ b/buildroot-external/Config.in
@@ -8,7 +8,15 @@ menu "Additional software"
source "$BR2_EXTERNAL_THINROOT_PATH/package/numlockx/Config.in"
source "$BR2_EXTERNAL_THINROOT_PATH/package/xprintidle/Config.in"
source "$BR2_EXTERNAL_THINROOT_PATH/package/remmina/Config.in"
+ source "$BR2_EXTERNAL_THINROOT_PATH/package/virt-viewer/Config.in"
+ source "$BR2_EXTERNAL_THINROOT_PATH/package/spice-gtk/Config.in"
+ source "$BR2_EXTERNAL_THINROOT_PATH/package/phodav/Config.in"
source "$BR2_EXTERNAL_THINROOT_PATH/package/rpi-eeprom/Config.in"
source "$BR2_EXTERNAL_THINROOT_PATH/package/qt-webengine-kiosk/Config.in"
source "$BR2_EXTERNAL_THINROOT_PATH/package/qt-kiosk-browser/Config.in"
+ source "$BR2_EXTERNAL_THINROOT_PATH/package/multilib32/Config.in"
+ source "$BR2_EXTERNAL_THINROOT_PATH/package/yoe-kiosk-browser/Config.in"
+ source "$BR2_EXTERNAL_THINROOT_PATH/package/xosd/Config.in"
+ source "$BR2_EXTERNAL_THINROOT_PATH/package/xkb-switch/Config.in"
+ source "$BR2_EXTERNAL_THINROOT_PATH/package/setrootpix/Config.in"
endmenu
diff --git a/buildroot-external/board/intelnuc/kernel.config b/buildroot-external/board/generic-x86_64/kernel.config
similarity index 66%
rename from buildroot-external/board/intelnuc/kernel.config
rename to buildroot-external/board/generic-x86_64/kernel.config
index 1197d14..a2cd499 100644
--- a/buildroot-external/board/intelnuc/kernel.config
+++ b/buildroot-external/board/generic-x86_64/kernel.config
@@ -19,13 +19,16 @@ CONFIG_SYSFB=y
CONFIG_FB=y
CONFIG_FB_EFI=y
-CONFIG_DRM=y
-CONFIG_DRM_FBDEV_EMULATION=y
+# disable simple framebuffer support
+# CONFIG_FB_SIMPLE is not set
+
CONFIG_DRM_I915=y
CONFIG_DRM_I915_CAPTURE_ERROR=y
CONFIG_DRM_I915_COMPRESS_ERROR=y
CONFIG_DRM_I915_USERPTR=y
-# CONFIG_DRM_SIMPLEDRM is not set
+CONFIG_DRM_AMDGPU=y
+CONFIG_DRM_AMDGPU_SI=y
+CONFIG_DRM_AMDGPU_CIK=y
CONFIG_MMC=y
CONFIG_MMC_BLOCK=y
@@ -34,11 +37,13 @@ CONFIG_MMC_SDHCI_ACPI=y
CONFIG_MMC_SDHCI_PCI=y
CONFIG_MMC_REALTEK_PCI=m
CONFIG_MMC_REALTEK_USB=m
+CONFIG_X86_X2APIC=y
CONFIG_X86_INTEL_LPSS=y
CONFIG_MISC_RTSX_PCI=m
CONFIG_MISC_RTSX_USB=m
+CONFIG_SND_HDA_COMPONENT=y
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_I915=y
CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM=y
@@ -47,23 +52,13 @@ CONFIG_SND_INTEL_SOUNDWIRE_ACPI=m
CONFIG_SND_SOC=m
CONFIG_SND_SOC_INTEL_SST_TOPLEVEL=y
-CONFIG_SND_SOC_INTEL_SST=m
CONFIG_SND_SOC_INTEL_CATPT=m
CONFIG_SND_SST_ATOM_HIFI2_PLATFORM=m
CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_PCI=m
CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI=m
-CONFIG_SND_SOC_INTEL_SKYLAKE=m
-CONFIG_SND_SOC_INTEL_SKL=m
-CONFIG_SND_SOC_INTEL_APL=m
-CONFIG_SND_SOC_INTEL_KBL=m
-CONFIG_SND_SOC_INTEL_GLK=m
-CONFIG_SND_SOC_INTEL_CNL=m
-CONFIG_SND_SOC_INTEL_CFL=m
-CONFIG_SND_SOC_INTEL_CML_H=m
-CONFIG_SND_SOC_INTEL_CML_LP=m
-CONFIG_SND_SOC_INTEL_SKYLAKE_FAMILY=m
-CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC=y
-CONFIG_SND_SOC_INTEL_SKYLAKE_COMMON=m
+CONFIG_SND_SOC_SOF_INTEL_SKL=m
+CONFIG_SND_SOC_SOF_INTEL_APL=m
+CONFIG_SND_SOC_SOF_INTEL_CNL=m
CONFIG_SND_SOC_ACPI_INTEL_MATCH=m
CONFIG_SND_SOC_INTEL_MACH=y
CONFIG_SND_SOC_INTEL_USER_FRIENDLY_LONG_NAMES=y
@@ -166,7 +161,6 @@ CONFIG_EDAC_IGEN6=m
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_COMPAT=y
CONFIG_I2C_CHARDEV=m
CONFIG_I2C_MUX=m
CONFIG_I2C_TINY_USB=m
@@ -178,6 +172,9 @@ CONFIG_SPI_DLN2=m
CONFIG_GPIO_DLN2=m
CONFIG_MFD_DLN2=m
+# Required for some PCIe devices such as ath12k
+CONFIG_IRQ_REMAP=y
+
CONFIG_HW_RANDOM_AMD=y
CONFIG_HW_RANDOM_INTEL=y
CONFIG_HW_RANDOM_TPM=y
@@ -186,3 +183,77 @@ CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
CONFIG_RTC_SYSTOHC=y
CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
+
+CONFIG_MEDIA_SUPPORT=m
+CONFIG_VIDEO_DEV=m
+CONFIG_DVB_CORE=m
+# CONFIG_DVB_NET is not set
+CONFIG_MEDIA_USB_SUPPORT=y
+CONFIG_USB_VIDEO_CLASS=m
+
+# set some ACPI options
+CONFIG_ACPI_BATTERY=y
+
+# enable input MOUSEDEV
+CONFIG_MOUSE_PS2_LIFEBOOK=y
+
+# DRM options
+CONFIG_DRM_TTM=y
+CONFIG_DRM_BUDDY=y
+
+# enable DESIGNWARE I2C/PCI support for touchpads and other
+CONFIG_I2C_DESIGNWARE_CORE=y
+CONFIG_I2C_DESIGNWARE_SLAVE=y
+CONFIG_I2C_DESIGNWARE_PLATFORM=y
+CONFIG_I2C_DESIGNWARE_BAYTRAIL=y
+CONFIG_I2C_DESIGNWARE_PCI=y
+
+# enable special multifunction device drivers
+CONFIG_MFD_INTEL_LPSS=m
+CONFIG_MFD_INTEL_LPSS_ACPI=m
+CONFIG_MFD_INTEL_LPSS_PCI=m
+
+# enable Synaptics RMI4 bus support
+CONFIG_RMI4_CORE=m
+CONFIG_RMI4_I2C=m
+CONFIG_RMI4_SPI=m
+CONFIG_RMI4_SMB=m
+CONFIG_RMI4_F03=y
+CONFIG_RMI4_F03_SERIO=m
+CONFIG_RMI4_2D_SENSOR=y
+CONFIG_RMI4_F11=y
+CONFIG_RMI4_F12=y
+CONFIG_RMI4_F30=y
+CONFIG_RMI4_F34=y
+CONFIG_RMI4_F3A=y
+# CONFIG_RMI4_F54 is not set
+CONFIG_RMI4_F55=y
+
+# enable special support for Thinkpad systems/laptops
+CONFIG_THINKPAD_ACPI=m
+# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
+# CONFIG_THINKPAD_ACPI_DEBUG is not set
+# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
+CONFIG_THINKPAD_ACPI_VIDEO=y
+CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
+CONFIG_THINKPAD_LMI=m
+
+# enable special support for DELL systems/laptops
+CONFIG_X86_PLATFORM_DRIVERS_DELL=y
+CONFIG_DELL_LAPTOP=m
+# CONFIG_DELL_RBU is not set
+CONFIG_DELL_RBTN=m
+CONFIG_DELL_SMBIOS=m
+CONFIG_DELL_SMBIOS_WMI=y
+CONFIG_DELL_SMBIOS_SMM=y
+CONFIG_DELL_SMO8800=m
+CONFIG_DELL_WMI=m
+CONFIG_DELL_WMI_PRIVACY=y
+CONFIG_DELL_WMI_AIO=m
+CONFIG_DELL_WMI_DESCRIPTOR=m
+CONFIG_DELL_WMI_DDV=m
+CONFIG_DELL_WMI_LED=m
+CONFIG_DELL_WMI_SYSMAN=m
+
+# disable unnecessary stuff
+# CONFIG_HYPERVISOR_GUEST is not set
diff --git a/buildroot-external/board/generic-x86_64/post-build.sh b/buildroot-external/board/generic-x86_64/post-build.sh
new file mode 100755
index 0000000..eba9dc3
--- /dev/null
+++ b/buildroot-external/board/generic-x86_64/post-build.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+# create VERSION file
+echo "VERSION=${PRODUCT_VERSION}" >"${TARGET_DIR}/VERSION"
+echo "PRODUCT=${PRODUCT}" >>"${TARGET_DIR}/VERSION"
+echo "PLATFORM=generic-x86_64" >>"${TARGET_DIR}/VERSION"
+
+# remove /etc/dbus-1/system.d/pulseaudio-system.conf
+rm -f "${TARGET_DIR}/etc/dbus-1/system.d/pulseaudio-system.conf"
+rm -f "${TARGET_DIR}/usr/share/dbus-1/system.d/pulseaudio-system.conf"
+
+# remove /etc/init.d/S40xorg as not needed
+rm -f "${TARGET_DIR}/etc/init.d/S40xorg"
+
+# remove /lib/dhcpcd/dhcpcd-hooks/50-timesyncd.conf as it is systemd only
+rm -f "${TARGET_DIR}/lib/dhcpcd/dhcpcd-hooks/50-timesyncd.conf"
+
+# remove unnecessary /etc/init.d/fuse3
+rm -f "${TARGET_DIR}/etc/init.d/fuse3"
+
+# remove unnecessary /usr/share/clc
+rm -rf "${TARGET_DIR}/usr/share/clc"
+
+# remove unnecessary /lib/firmware stuff
+rm -rf "${TARGET_DIR}/lib/firmware/intel-ucode"
+rm -rf "${TARGET_DIR}/lib/firmware/amd-ucode"
diff --git a/buildroot-external/board/intelnuc/post-image.sh b/buildroot-external/board/generic-x86_64/post-image.sh
similarity index 100%
rename from buildroot-external/board/intelnuc/post-image.sh
rename to buildroot-external/board/generic-x86_64/post-image.sh
diff --git a/buildroot-external/board/intelnuc/post-release.sh b/buildroot-external/board/generic-x86_64/post-release.sh
similarity index 100%
rename from buildroot-external/board/intelnuc/post-release.sh
rename to buildroot-external/board/generic-x86_64/post-release.sh
diff --git a/buildroot-external/board/intelnuc/users_table.txt b/buildroot-external/board/generic-x86_64/users_table.txt
similarity index 100%
rename from buildroot-external/board/intelnuc/users_table.txt
rename to buildroot-external/board/generic-x86_64/users_table.txt
diff --git a/buildroot-external/board/intelnuc/kernel_defconfig b/buildroot-external/board/intelnuc/kernel_defconfig
deleted file mode 100644
index cc6d663..0000000
--- a/buildroot-external/board/intelnuc/kernel_defconfig
+++ /dev/null
@@ -1,353 +0,0 @@
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_KERNEL_LZ4=y
-CONFIG_SYSVIPC=y
-CONFIG_POSIX_MQUEUE=y
-CONFIG_AUDIT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_PREEMPT_VOLUNTARY=y
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_TASKSTATS=y
-CONFIG_TASK_DELAY_ACCT=y
-CONFIG_TASK_XACCT=y
-CONFIG_TASK_IO_ACCOUNTING=y
-CONFIG_LOG_BUF_SHIFT=18
-CONFIG_CGROUPS=y
-CONFIG_CGROUP_SCHED=y
-CONFIG_CGROUP_FREEZER=y
-CONFIG_CPUSETS=y
-CONFIG_CGROUP_CPUACCT=y
-CONFIG_NAMESPACES=y
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE="${BR_BINARIES_DIR}/rootfs.cpio"
-CONFIG_EXPERT=y
-# CONFIG_COMPAT_BRK is not set
-CONFIG_PROFILING=y
-CONFIG_SMP=y
-CONFIG_X86_INTEL_LPSS=y
-CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
-CONFIG_MICROCODE_AMD=y
-CONFIG_X86_MSR=y
-CONFIG_X86_CPUID=y
-CONFIG_NUMA=y
-CONFIG_X86_CHECK_BIOS_CORRUPTION=y
-# CONFIG_MTRR_SANITIZER is not set
-CONFIG_EFI=y
-CONFIG_EFI_STUB=y
-CONFIG_HZ_1000=y
-CONFIG_KEXEC=y
-CONFIG_CRASH_DUMP=y
-# CONFIG_ACPI_BATTERY is not set
-CONFIG_ACPI_DOCK=y
-CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-CONFIG_X86_ACPI_CPUFREQ=y
-CONFIG_INTEL_IDLE=y
-CONFIG_IA32_EMULATION=y
-# CONFIG_VIRTUALIZATION is not set
-CONFIG_JUMP_LABEL=y
-# CONFIG_GCC_PLUGINS is not set
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_PARTITION_ADVANCED=y
-CONFIG_MAC_PARTITION=y
-CONFIG_BSD_DISKLABEL=y
-CONFIG_BINFMT_MISC=y
-CONFIG_NET=y
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_XFRM_USER=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-CONFIG_IP_MULTIPLE_TABLES=y
-CONFIG_IP_ROUTE_MULTIPATH=y
-CONFIG_IP_ROUTE_VERBOSE=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-CONFIG_IP_PNP_RARP=y
-CONFIG_IP_MROUTE=y
-CONFIG_IP_PIMSM_V1=y
-CONFIG_IP_PIMSM_V2=y
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_DIAG is not set
-CONFIG_TCP_CONG_ADVANCED=y
-# CONFIG_TCP_CONG_BIC is not set
-# CONFIG_TCP_CONG_WESTWOOD is not set
-# CONFIG_TCP_CONG_HTCP is not set
-CONFIG_TCP_MD5SIG=y
-CONFIG_INET6_AH=y
-CONFIG_INET6_ESP=y
-# CONFIG_IPV6_SIT is not set
-CONFIG_NETLABEL=y
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_ADVANCED is not set
-CONFIG_NF_CONNTRACK=y
-CONFIG_NF_CONNTRACK_FTP=y
-CONFIG_NF_CONNTRACK_IRC=y
-CONFIG_NF_CONNTRACK_SIP=y
-CONFIG_NF_CT_NETLINK=y
-CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y
-CONFIG_NETFILTER_XT_TARGET_NFLOG=y
-CONFIG_NETFILTER_XT_TARGET_SECMARK=y
-CONFIG_NETFILTER_XT_TARGET_TCPMSS=y
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
-CONFIG_NETFILTER_XT_MATCH_POLICY=y
-CONFIG_NETFILTER_XT_MATCH_STATE=y
-CONFIG_IP_NF_IPTABLES=y
-CONFIG_IP_NF_FILTER=y
-CONFIG_IP_NF_TARGET_REJECT=y
-CONFIG_IP_NF_MANGLE=y
-CONFIG_IP6_NF_IPTABLES=y
-CONFIG_IP6_NF_MATCH_IPV6HEADER=y
-CONFIG_IP6_NF_FILTER=y
-CONFIG_IP6_NF_TARGET_REJECT=y
-CONFIG_IP6_NF_MANGLE=y
-CONFIG_NET_SCHED=y
-CONFIG_NET_SCH_FQ_CODEL=y
-CONFIG_NET_SCH_DEFAULT=y
-CONFIG_NET_EMATCH=y
-CONFIG_NET_CLS_ACT=y
-CONFIG_BT=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-CONFIG_BT_HCIBTUSB=m
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_ATH3K=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIDTL1=m
-CONFIG_BT_HCIBT3C=m
-CONFIG_BT_HCIBLUECARD=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_BT_MRVL=m
-CONFIG_BT_ATH3K=m
-CONFIG_CFG80211=y
-CONFIG_MAC80211=y
-CONFIG_RFKILL=y
-CONFIG_PCI=y
-CONFIG_PCIEPORTBUS=y
-CONFIG_HOTPLUG_PCI=y
-CONFIG_PCCARD=y
-CONFIG_YENTA=y
-CONFIG_DEVTMPFS=y
-CONFIG_DEVTMPFS_MOUNT=y
-CONFIG_DEBUG_DEVRES=y
-CONFIG_CONNECTOR=y
-CONFIG_EFI_VARS=y
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_NVME_MULTIPATH=y
-CONFIG_NVME_FC=y
-CONFIG_MISC_RTSX_PCI=y
-CONFIG_MISC_RTSX_USB=m
-CONFIG_BLK_DEV_SD=y
-CONFIG_BLK_DEV_SR=y
-CONFIG_CHR_DEV_SG=y
-CONFIG_SCSI_CONSTANTS=y
-CONFIG_SCSI_SPI_ATTRS=y
-CONFIG_ATA=y
-CONFIG_MD=y
-CONFIG_BLK_DEV_MD=y
-CONFIG_BLK_DEV_DM=y
-CONFIG_DM_MIRROR=y
-CONFIG_DM_ZERO=y
-CONFIG_MACINTOSH_DRIVERS=y
-CONFIG_MAC_EMUMOUSEBTN=y
-CONFIG_NETDEVICES=y
-CONFIG_NETCONSOLE=y
-CONFIG_TIGON3=y
-CONFIG_NET_TULIP=y
-CONFIG_E100=y
-CONFIG_E1000=y
-CONFIG_E1000E=y
-CONFIG_IGB=y
-CONFIG_IGC=y
-CONFIG_SKY2=y
-CONFIG_FORCEDETH=y
-CONFIG_8139TOO=y
-CONFIG_R8169=y
-CONFIG_FDDI=y
-CONFIG_IWLWIFI=m
-CONFIG_IWLMVM=m
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_EVDEV=y
-CONFIG_INPUT_JOYSTICK=y
-CONFIG_INPUT_TABLET=y
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_INPUT_MISC=y
-# CONFIG_LEGACY_PTYS is not set
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=32
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_8250_MANY_PORTS=y
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-CONFIG_SERIAL_8250_DETECT_IRQ=y
-CONFIG_SERIAL_8250_RSA=y
-CONFIG_SERIAL_NONSTANDARD=y
-CONFIG_TTY_PRINTK=y
-CONFIG_HW_RANDOM=y
-CONFIG_NVRAM=y
-CONFIG_HPET=y
-# CONFIG_HPET_MMAP is not set
-CONFIG_I2C_CHARDEV=m
-CONFIG_I2C_I801=y
-CONFIG_POWER_RESET=y
-CONFIG_WATCHDOG=y
-CONFIG_DRM=y
-CONFIG_DRM_I915=y
-CONFIG_FB=y
-CONFIG_FB_EFI=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_SOUND=y
-CONFIG_SND=y
-CONFIG_SND_HRTIMER=y
-CONFIG_SND_SEQUENCER=y
-CONFIG_SND_SEQ_DUMMY=y
-CONFIG_SND_HDA_INTEL=m
-CONFIG_SND_HDA_HWDEP=y
-CONFIG_SND_HDA_PATCH_LOADER=y
-CONFIG_SND_HDA_CODEC_REALTEK=m
-CONFIG_SND_HDA_CODEC_ANALOG=m
-CONFIG_SND_HDA_CODEC_SIGMATEL=m
-CONFIG_SND_HDA_CODEC_VIA=m
-CONFIG_SND_HDA_CODEC_HDMI=m
-CONFIG_SND_HDA_CODEC_CIRRUS=m
-CONFIG_SND_HDA_CODEC_CONEXANT=m
-CONFIG_SND_HDA_CODEC_CA0110=m
-CONFIG_SND_HDA_CODEC_CA0132=m
-CONFIG_SND_HDA_CODEC_CMEDIA=m
-CONFIG_SND_HDA_CODEC_SI3054=m
-CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1
-CONFIG_SND_USB_AUDIO=y
-CONFIG_HIDRAW=y
-CONFIG_HID_A4TECH=y
-CONFIG_HID_APPLE=y
-CONFIG_HID_BELKIN=y
-CONFIG_HID_CHERRY=y
-CONFIG_HID_CHICONY=y
-CONFIG_HID_CYPRESS=y
-CONFIG_HID_EZKEY=y
-CONFIG_HID_GYRATION=y
-CONFIG_HID_ITE=y
-CONFIG_HID_KENSINGTON=y
-CONFIG_HID_LOGITECH=y
-CONFIG_LOGITECH_FF=y
-CONFIG_HID_REDRAGON=y
-CONFIG_HID_MICROSOFT=y
-CONFIG_HID_MONTEREY=y
-CONFIG_HID_NTRIG=y
-CONFIG_HID_PANTHERLORD=y
-CONFIG_PANTHERLORD_FF=y
-CONFIG_HID_PETALYNX=y
-CONFIG_HID_SAMSUNG=y
-CONFIG_HID_SUNPLUS=y
-CONFIG_HID_TOPSEED=y
-CONFIG_HID_PID=y
-CONFIG_USB_HIDDEV=y
-CONFIG_USB=y
-CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
-CONFIG_USB_MON=y
-CONFIG_USB_XHCI_HCD=y
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_OHCI_HCD=y
-CONFIG_USB_UHCI_HCD=y
-CONFIG_USB_PRINTER=m
-CONFIG_USB_WDM=m
-CONFIG_USB_STORAGE=y
-CONFIG_USB_STORAGE_REALTEK=m
-CONFIG_USB_STORAGE_DATAFAB=m
-CONFIG_USB_STORAGE_FREECOM=m
-CONFIG_USB_STORAGE_ISD200=m
-CONFIG_USB_STORAGE_USBAT=m
-CONFIG_USB_STORAGE_SDDR09=m
-CONFIG_USB_STORAGE_SDDR55=m
-CONFIG_USB_STORAGE_JUMPSHOT=m
-CONFIG_USB_STORAGE_ALAUDA=m
-CONFIG_USB_STORAGE_ONETOUCH=m
-CONFIG_USB_STORAGE_KARMA=m
-CONFIG_USB_STORAGE_CYPRESS_ATACB=m
-CONFIG_USB_STORAGE_ENE_UB6250=m
-CONFIG_USB_UAS=m
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-CONFIG_MMC=y
-CONFIG_MMC_SDHCI=y
-CONFIG_MMC_SDHCI_PCI=y
-CONFIG_MMC_SDHCI_ACPI=y
-CONFIG_MMC_SDHCI_PLTFM=y
-CONFIG_MMC_REALTEK_PCI=y
-CONFIG_MMC_REALTEK_USB=m
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_CLASS_FLASH=m
-CONFIG_LEDS_BRIGHTNESS_HW_CHANGED=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_ONESHOT=y
-CONFIG_LEDS_TRIGGER_DISK=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-CONFIG_LEDS_TRIGGER_BACKLIGHT=y
-CONFIG_LEDS_TRIGGER_CPU=y
-CONFIG_LEDS_TRIGGER_ACTIVITY=y
-CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
-CONFIG_LEDS_TRIGGER_TRANSIENT=y
-CONFIG_LEDS_TRIGGER_CAMERA=y
-CONFIG_LEDS_TRIGGER_PANIC=y
-CONFIG_LEDS_TRIGGER_NETDEV=y
-CONFIG_LEDS_TRIGGER_PATTERN=y
-CONFIG_LEDS_TRIGGER_AUDIO=y
-CONFIG_EDAC=y
-CONFIG_EDAC_I7CORE=m
-CONFIG_EDAC_SBRIDGE=m
-CONFIG_RTC_CLASS=y
-CONFIG_DMADEVICES=y
-CONFIG_AMD_IOMMU=y
-CONFIG_AMD_IOMMU_V2=m
-CONFIG_INTEL_IOMMU=y
-CONFIG_INTEL_IOMMU_SVM=y
-CONFIG_RAS=y
-CONFIG_EXT2_FS=y
-CONFIG_EXT3_FS=y
-CONFIG_EXT4_FS_POSIX_ACL=y
-CONFIG_EXT4_FS_SECURITY=y
-CONFIG_F2FS_FS=y
-CONFIG_AUTOFS4_FS=y
-CONFIG_FUSE_FS=y
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_CODEPAGE=850
-CONFIG_PROC_KCORE=y
-CONFIG_TMPFS_POSIX_ACL=y
-CONFIG_HUGETLBFS=y
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3_ACL=y
-CONFIG_NFS_V4=y
-CONFIG_ROOT_NFS=y
-CONFIG_NLS_DEFAULT="utf8"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_850=y
-CONFIG_NLS_CODEPAGE_1250=y
-CONFIG_NLS_ASCII=y
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_UTF8=y
-CONFIG_SECURITY=y
-CONFIG_SECURITY_NETWORK=y
-CONFIG_SECURITY_SELINUX=y
-CONFIG_SECURITY_SELINUX_BOOTPARAM=y
-CONFIG_SECURITY_SELINUX_DISABLE=y
-CONFIG_PRINTK_TIME=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_SCHED_DEBUG is not set
-CONFIG_SCHEDSTATS=y
-CONFIG_BLK_DEV_IO_TRACE=y
-CONFIG_DEBUG_BOOT_PARAMS=y
diff --git a/buildroot-external/board/intelnuc/post-build.sh b/buildroot-external/board/intelnuc/post-build.sh
deleted file mode 100755
index cb11502..0000000
--- a/buildroot-external/board/intelnuc/post-build.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# create VERSION file
-echo "VERSION=${PRODUCT_VERSION}" >"${TARGET_DIR}/VERSION"
-echo "PRODUCT=${PRODUCT}" >>"${TARGET_DIR}/VERSION"
-echo "PLATFORM=intelnuc" >>"${TARGET_DIR}/VERSION"
-
-# remove /etc/dbus-1/system.d/pulseaudio-system.conf
-rm -f "${TARGET_DIR}/etc/dbus-1/system.d/pulseaudio-system.conf"
-
-# remove /etc/init.d/S40xorg as not needed
-rm -f "${TARGET_DIR}/etc/init.d/S40xorg"
diff --git a/buildroot-external/board/rpi3/config.txt b/buildroot-external/board/rpi3/config.txt
index 68035ff..179aa50 100644
--- a/buildroot-external/board/rpi3/config.txt
+++ b/buildroot-external/board/rpi3/config.txt
@@ -18,9 +18,6 @@ dtparam=spi=on
# enable the UART
#enable_uart=1
-# make sure the uart is running at 48MHz
-#init_uart_clock=48000000
-
# switch the bluetooth UART to the miniuart
# for basic bluetooth support and fix core_freq
#dtoverlay=miniuart-bt
@@ -43,10 +40,6 @@ dtparam=watchdog=on
# start with heartbeat on PWR led and mmc0 on ACT led
dtparam=pwr_led_trigger=timer,act_led_trigger=mmc0
-# start device tree at 0x2008000 to have
-# space for the u-boot boot script
-device_tree_address=0x2008000
-
# use fixed names for start.elf/fixup.dat
start_file=start.elf
fixup_file=fixup.dat
diff --git a/buildroot-external/board/rpi3/genimage.cfg b/buildroot-external/board/rpi3/genimage.cfg
index c65b79d..8c3d22e 100644
--- a/buildroot-external/board/rpi3/genimage.cfg
+++ b/buildroot-external/board/rpi3/genimage.cfg
@@ -4,22 +4,19 @@ image boot.vfat {
files = {
"VERSION",
- "bcm2710-rpi-3-b-plus.dtb",
- "bcm2837-rpi-3-b-plus.dtb",
"bcm2710-rpi-3-b.dtb",
- "bcm2837-rpi-3-b.dtb",
+ "bcm2710-rpi-3-b-plus.dtb",
"bcm2710-rpi-2-b.dtb",
"bcm2710-rpi-cm3.dtb",
- "bcm2837-rpi-3-a-plus.dtb",
- "bcm2837-rpi-cm3-io3.dtb",
"bcm2710-rpi-zero-2.dtb",
+ "bcm2710-rpi-zero-2-w.dtb",
"cmdline.txt",
"config.txt",
"bootEnv.txt",
"rpi-firmware/bootcode.bin",
"rpi-firmware/fixup.dat",
"rpi-firmware/start.elf",
- "rpi-firmware/overlays",
+ "overlays",
"u-boot.bin",
"boot.scr"
}
diff --git a/buildroot-external/board/rpi3/kernel.config b/buildroot-external/board/rpi3/kernel.config
new file mode 100644
index 0000000..55e53a1
--- /dev/null
+++ b/buildroot-external/board/rpi3/kernel.config
@@ -0,0 +1,33 @@
+# disable old framebuffer for video display to work
+# CONFIG_FB_BCM2708 is not set
+
+# disable video camera support
+# CONFIG_VIDEO_BCM2835_UNICAM is not set
+
+# disable touchscreen
+# CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set
+
+# disable simple framebuffer support
+# CONFIG_FB_SIMPLE is not set
+
+# enable mmc support
+CONFIG_MMC_BCM2835=y
+
+# use pl011 serial as a kernel module and
+# disable serial console on amba
+CONFIG_SERIAL_AMBA_PL011=m
+# CONFIG_SERIAL_AMBA_PL011_CONSOLE is not set
+
+# disable backlight support
+# CONFIG_BACKLIGHT_RPI is not set
+
+# enable DRM
+CONFIG_DRM=y
+CONFIG_DRM_V3D=y
+CONFIG_DRM_VC4=y
+CONFIG_DRM_SIMPLEDRM=y
+
+# enable SND
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_SOC=y
diff --git a/buildroot-external/board/rpi3/kernel_defconfig b/buildroot-external/board/rpi3/kernel_defconfig
deleted file mode 100644
index 20c5b88..0000000
--- a/buildroot-external/board/rpi3/kernel_defconfig
+++ /dev/null
@@ -1,1267 +0,0 @@
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_DEFAULT_HOSTNAME="localhost"
-CONFIG_SYSVIPC=y
-CONFIG_POSIX_MQUEUE=y
-CONFIG_AUDIT=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_PREEMPT=y
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-CONFIG_TASKSTATS=y
-CONFIG_TASK_DELAY_ACCT=y
-CONFIG_TASK_XACCT=y
-CONFIG_TASK_IO_ACCOUNTING=y
-CONFIG_IKCONFIG=m
-CONFIG_IKCONFIG_PROC=y
-CONFIG_MEMCG=y
-CONFIG_BLK_CGROUP=y
-CONFIG_CGROUP_FREEZER=y
-CONFIG_CGROUP_DEVICE=y
-CONFIG_CGROUP_CPUACCT=y
-CONFIG_NAMESPACES=y
-CONFIG_USER_NS=y
-CONFIG_SCHED_AUTOGROUP=y
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_SGETMASK_SYSCALL is not set
-CONFIG_EMBEDDED=y
-# CONFIG_COMPAT_BRK is not set
-CONFIG_PROFILING=y
-CONFIG_SMP=y
-CONFIG_NR_CPUS=4
-# CONFIG_SCHED_MC is not set
-CONFIG_EFI=y
-CONFIG_EFI_STUB=y
-CONFIG_HZ_1000=y
-# CONFIG_RANDOMIZE_BASE is not set
-# CONFIG_SUSPEND is not set
-CONFIG_PM=y
-CONFIG_ACPI_REDUCED_HARDWARE_ONLY=y
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_STAT=y
-CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
-CONFIG_CPUFREQ_DT=y
-CONFIG_CPU_IDLE_GOV_LADDER=y
-# CONFIG_VIRTUALIZATION is not set
-CONFIG_JUMP_LABEL=y
-CONFIG_COMPAT_32BIT_TIME=y
-CONFIG_MODULES=y
-CONFIG_MODULE_FORCE_LOAD=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_BLK_DEV_THROTTLING=y
-CONFIG_PARTITION_ADVANCED=y
-CONFIG_MAC_PARTITION=y
-CONFIG_BINFMT_MISC=m
-CONFIG_KSM=y
-CONFIG_CLEANCACHE=y
-CONFIG_FRONTSWAP=y
-CONFIG_CMA=y
-CONFIG_ZSWAP=y
-CONFIG_Z3FOLD=m
-CONFIG_ZSMALLOC=m
-CONFIG_IDLE_PAGE_TRACKING=y
-CONFIG_NET=y
-CONFIG_PACKET=y
-CONFIG_PACKET_DIAG=m
-CONFIG_UNIX=y
-CONFIG_UNIX_DIAG=m
-CONFIG_TLS=m
-CONFIG_XFRM_USER=m
-CONFIG_NET_KEY=m
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-CONFIG_IP_FIB_TRIE_STATS=y
-CONFIG_IP_MULTIPLE_TABLES=y
-CONFIG_IP_ROUTE_MULTIPATH=y
-CONFIG_IP_ROUTE_VERBOSE=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-CONFIG_IP_PNP_RARP=y
-CONFIG_NET_IPIP=m
-CONFIG_NET_IPGRE_DEMUX=m
-CONFIG_NET_IPGRE=m
-CONFIG_NET_IPGRE_BROADCAST=y
-CONFIG_IP_MROUTE=y
-CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
-CONFIG_IP_PIMSM_V1=y
-CONFIG_IP_PIMSM_V2=y
-CONFIG_SYN_COOKIES=y
-CONFIG_NET_IPVTI=m
-CONFIG_NET_FOU=y
-CONFIG_INET_AH=m
-CONFIG_INET_ESP=m
-CONFIG_INET_ESP_OFFLOAD=m
-CONFIG_INET_IPCOMP=m
-CONFIG_INET_DIAG=m
-CONFIG_INET_UDP_DIAG=m
-CONFIG_INET_RAW_DIAG=m
-CONFIG_TCP_CONG_ADVANCED=y
-CONFIG_TCP_CONG_HSTCP=m
-CONFIG_TCP_CONG_HYBLA=m
-CONFIG_TCP_CONG_NV=m
-CONFIG_TCP_CONG_SCALABLE=m
-CONFIG_TCP_CONG_LP=y
-CONFIG_TCP_CONG_VENO=m
-CONFIG_TCP_CONG_YEAH=m
-CONFIG_TCP_CONG_ILLINOIS=m
-CONFIG_TCP_CONG_DCTCP=m
-CONFIG_TCP_CONG_CDG=m
-CONFIG_TCP_CONG_BBR=m
-CONFIG_TCP_MD5SIG=y
-CONFIG_IPV6=m
-CONFIG_IPV6_ROUTER_PREF=y
-CONFIG_IPV6_ROUTE_INFO=y
-CONFIG_IPV6_OPTIMISTIC_DAD=y
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_ESP_OFFLOAD=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_IPV6_MIP6=m
-CONFIG_IPV6_ILA=m
-CONFIG_IPV6_SIT_6RD=y
-CONFIG_IPV6_TUNNEL=m
-CONFIG_IPV6_MULTIPLE_TABLES=y
-CONFIG_IPV6_SUBTREES=y
-CONFIG_IPV6_MROUTE=y
-CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
-CONFIG_IPV6_PIMSM_V2=y
-CONFIG_NETLABEL=y
-CONFIG_NETWORK_SECMARK=y
-CONFIG_NETFILTER=y
-CONFIG_NF_CONNTRACK=m
-CONFIG_NF_CONNTRACK_SECMARK=y
-CONFIG_NF_CONNTRACK_ZONES=y
-CONFIG_NF_CONNTRACK_EVENTS=y
-CONFIG_NF_CONNTRACK_TIMEOUT=y
-CONFIG_NF_CONNTRACK_TIMESTAMP=y
-CONFIG_NF_CONNTRACK_AMANDA=m
-CONFIG_NF_CONNTRACK_FTP=m
-CONFIG_NF_CONNTRACK_H323=m
-CONFIG_NF_CONNTRACK_IRC=m
-CONFIG_NF_CONNTRACK_NETBIOS_NS=m
-CONFIG_NF_CONNTRACK_SNMP=m
-CONFIG_NF_CONNTRACK_PPTP=m
-CONFIG_NF_CONNTRACK_SANE=m
-CONFIG_NF_CONNTRACK_SIP=m
-CONFIG_NF_CONNTRACK_TFTP=m
-CONFIG_NF_CT_NETLINK=m
-CONFIG_NF_CT_NETLINK_TIMEOUT=m
-CONFIG_NF_CT_NETLINK_HELPER=m
-CONFIG_NETFILTER_NETLINK_GLUE_CT=y
-CONFIG_NETFILTER_XT_SET=m
-CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
-CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
-CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
-CONFIG_NETFILTER_XT_TARGET_DSCP=m
-CONFIG_NETFILTER_XT_TARGET_HMARK=m
-CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
-CONFIG_NETFILTER_XT_TARGET_LED=m
-CONFIG_NETFILTER_XT_TARGET_LOG=m
-CONFIG_NETFILTER_XT_TARGET_MARK=m
-CONFIG_NETFILTER_XT_TARGET_NFLOG=m
-CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
-CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
-CONFIG_NETFILTER_XT_TARGET_TEE=m
-CONFIG_NETFILTER_XT_TARGET_TPROXY=m
-CONFIG_NETFILTER_XT_TARGET_TRACE=m
-CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
-CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
-CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
-CONFIG_NETFILTER_XT_MATCH_BPF=m
-CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
-CONFIG_NETFILTER_XT_MATCH_COMMENT=m
-CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
-CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m
-CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
-CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
-CONFIG_NETFILTER_XT_MATCH_CPU=m
-CONFIG_NETFILTER_XT_MATCH_DCCP=m
-CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
-CONFIG_NETFILTER_XT_MATCH_DSCP=m
-CONFIG_NETFILTER_XT_MATCH_ESP=m
-CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
-CONFIG_NETFILTER_XT_MATCH_HELPER=m
-CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
-CONFIG_NETFILTER_XT_MATCH_IPVS=m
-CONFIG_NETFILTER_XT_MATCH_LENGTH=m
-CONFIG_NETFILTER_XT_MATCH_LIMIT=m
-CONFIG_NETFILTER_XT_MATCH_MAC=m
-CONFIG_NETFILTER_XT_MATCH_MARK=m
-CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
-CONFIG_NETFILTER_XT_MATCH_NFACCT=m
-CONFIG_NETFILTER_XT_MATCH_OSF=m
-CONFIG_NETFILTER_XT_MATCH_OWNER=m
-CONFIG_NETFILTER_XT_MATCH_POLICY=m
-CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
-CONFIG_NETFILTER_XT_MATCH_QUOTA=m
-CONFIG_NETFILTER_XT_MATCH_RATEEST=m
-CONFIG_NETFILTER_XT_MATCH_REALM=m
-CONFIG_NETFILTER_XT_MATCH_RECENT=m
-CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
-CONFIG_NETFILTER_XT_MATCH_STRING=m
-CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
-CONFIG_NETFILTER_XT_MATCH_TIME=m
-CONFIG_NETFILTER_XT_MATCH_U32=m
-CONFIG_IP_SET=m
-CONFIG_IP_SET_BITMAP_IP=m
-CONFIG_IP_SET_BITMAP_IPMAC=m
-CONFIG_IP_SET_BITMAP_PORT=m
-CONFIG_IP_SET_HASH_IP=m
-CONFIG_IP_SET_HASH_IPPORT=m
-CONFIG_IP_SET_HASH_IPPORTIP=m
-CONFIG_IP_SET_HASH_IPPORTNET=m
-CONFIG_IP_SET_HASH_NET=m
-CONFIG_IP_SET_HASH_NETPORT=m
-CONFIG_IP_SET_HASH_NETIFACE=m
-CONFIG_IP_SET_LIST_SET=m
-CONFIG_IP_VS=m
-CONFIG_IP_VS_PROTO_TCP=y
-CONFIG_IP_VS_PROTO_UDP=y
-CONFIG_IP_VS_PROTO_ESP=y
-CONFIG_IP_VS_PROTO_AH=y
-CONFIG_IP_VS_PROTO_SCTP=y
-CONFIG_IP_VS_RR=m
-CONFIG_IP_VS_WRR=m
-CONFIG_IP_VS_LC=m
-CONFIG_IP_VS_WLC=m
-CONFIG_IP_VS_LBLC=m
-CONFIG_IP_VS_LBLCR=m
-CONFIG_IP_VS_DH=m
-CONFIG_IP_VS_SH=m
-CONFIG_IP_VS_SED=m
-CONFIG_IP_VS_NQ=m
-CONFIG_IP_VS_FTP=m
-CONFIG_IP_VS_PE_SIP=m
-CONFIG_IP_NF_IPTABLES=y
-CONFIG_IP_NF_MATCH_AH=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_RPFILTER=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_FILTER=y
-CONFIG_IP_NF_TARGET_REJECT=m
-CONFIG_IP_NF_NAT=m
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-CONFIG_IP_NF_TARGET_NETMAP=m
-CONFIG_IP_NF_TARGET_REDIRECT=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_TARGET_CLUSTERIP=m
-CONFIG_IP_NF_TARGET_ECN=m
-CONFIG_IP_NF_TARGET_TTL=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_AH=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_MH=m
-CONFIG_IP6_NF_MATCH_RPFILTER=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_TARGET_HL=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_TARGET_REJECT=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_RAW=m
-CONFIG_IP6_NF_NAT=m
-CONFIG_IP6_NF_TARGET_MASQUERADE=m
-CONFIG_IP6_NF_TARGET_NPT=m
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_BROUTE=m
-CONFIG_BRIDGE_EBT_T_FILTER=m
-CONFIG_BRIDGE_EBT_T_NAT=m
-CONFIG_BRIDGE_EBT_802_3=m
-CONFIG_BRIDGE_EBT_AMONG=m
-CONFIG_BRIDGE_EBT_ARP=m
-CONFIG_BRIDGE_EBT_IP=m
-CONFIG_BRIDGE_EBT_IP6=m
-CONFIG_BRIDGE_EBT_LIMIT=m
-CONFIG_BRIDGE_EBT_MARK=m
-CONFIG_BRIDGE_EBT_PKTTYPE=m
-CONFIG_BRIDGE_EBT_STP=m
-CONFIG_BRIDGE_EBT_VLAN=m
-CONFIG_BRIDGE_EBT_ARPREPLY=m
-CONFIG_BRIDGE_EBT_DNAT=m
-CONFIG_BRIDGE_EBT_MARK_T=m
-CONFIG_BRIDGE_EBT_REDIRECT=m
-CONFIG_BRIDGE_EBT_SNAT=m
-CONFIG_BRIDGE_EBT_LOG=m
-CONFIG_BRIDGE_EBT_NFLOG=m
-CONFIG_SCTP_COOKIE_HMAC_SHA1=y
-CONFIG_ATM=m
-CONFIG_L2TP=m
-CONFIG_L2TP_V3=y
-CONFIG_L2TP_IP=m
-CONFIG_L2TP_ETH=m
-CONFIG_BRIDGE=m
-CONFIG_VLAN_8021Q=m
-CONFIG_VLAN_8021Q_GVRP=y
-CONFIG_VLAN_8021Q_MVRP=y
-CONFIG_ATALK=m
-CONFIG_6LOWPAN=m
-CONFIG_IEEE802154=m
-CONFIG_IEEE802154_6LOWPAN=m
-CONFIG_MAC802154=m
-CONFIG_NET_SCHED=y
-CONFIG_NET_SCH_CBQ=m
-CONFIG_NET_SCH_HTB=m
-CONFIG_NET_SCH_HFSC=m
-CONFIG_NET_SCH_ATM=m
-CONFIG_NET_SCH_PRIO=m
-CONFIG_NET_SCH_MULTIQ=m
-CONFIG_NET_SCH_RED=m
-CONFIG_NET_SCH_SFB=m
-CONFIG_NET_SCH_SFQ=m
-CONFIG_NET_SCH_TEQL=m
-CONFIG_NET_SCH_TBF=m
-CONFIG_NET_SCH_GRED=m
-CONFIG_NET_SCH_DSMARK=m
-CONFIG_NET_SCH_NETEM=m
-CONFIG_NET_SCH_DRR=m
-CONFIG_NET_SCH_MQPRIO=m
-CONFIG_NET_SCH_CHOKE=m
-CONFIG_NET_SCH_QFQ=m
-CONFIG_NET_SCH_CODEL=m
-CONFIG_NET_SCH_FQ_CODEL=m
-CONFIG_NET_SCH_FQ=m
-CONFIG_NET_SCH_HHF=m
-CONFIG_NET_SCH_PIE=m
-CONFIG_NET_SCH_INGRESS=m
-CONFIG_NET_SCH_PLUG=m
-CONFIG_NET_SCH_DEFAULT=y
-CONFIG_NET_SCH_FQ_CODEL=y
-CONFIG_NET_CLS_BASIC=m
-CONFIG_NET_CLS_TCINDEX=m
-CONFIG_NET_CLS_ROUTE4=m
-CONFIG_NET_CLS_FW=m
-CONFIG_NET_CLS_U32=m
-CONFIG_CLS_U32_MARK=y
-CONFIG_NET_CLS_RSVP=m
-CONFIG_NET_CLS_RSVP6=m
-CONFIG_NET_CLS_FLOW=m
-CONFIG_NET_CLS_CGROUP=m
-CONFIG_NET_EMATCH=y
-CONFIG_NET_EMATCH_CMP=m
-CONFIG_NET_EMATCH_NBYTE=m
-CONFIG_NET_EMATCH_U32=m
-CONFIG_NET_EMATCH_META=m
-CONFIG_NET_EMATCH_TEXT=m
-CONFIG_NET_EMATCH_IPSET=m
-CONFIG_NET_CLS_ACT=y
-CONFIG_NET_ACT_POLICE=m
-CONFIG_NET_ACT_GACT=m
-CONFIG_GACT_PROB=y
-CONFIG_NET_ACT_MIRRED=m
-CONFIG_NET_ACT_IPT=m
-CONFIG_NET_ACT_NAT=m
-CONFIG_NET_ACT_PEDIT=m
-CONFIG_NET_ACT_SIMP=m
-CONFIG_NET_ACT_SKBEDIT=m
-CONFIG_NET_ACT_CSUM=m
-CONFIG_BATMAN_ADV=m
-CONFIG_OPENVSWITCH=m
-CONFIG_VSOCKETS=m
-CONFIG_NET_PKTGEN=m
-CONFIG_HAMRADIO=y
-CONFIG_AX25=m
-CONFIG_NETROM=m
-CONFIG_ROSE=m
-CONFIG_MKISS=m
-CONFIG_6PACK=m
-CONFIG_BPQETHER=m
-CONFIG_BAYCOM_SER_FDX=m
-CONFIG_BAYCOM_SER_HDX=m
-CONFIG_YAM=m
-CONFIG_CAN=m
-CONFIG_CAN_VCAN=m
-CONFIG_CAN_SLCAN=m
-CONFIG_CAN_MCP251X=m
-CONFIG_CAN_GS_USB=m
-CONFIG_CAN_PEAK_USB=m
-CONFIG_BT=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-CONFIG_BT_6LOWPAN=m
-CONFIG_BT_HCIBTUSB=m
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_ATH3K=y
-CONFIG_BT_HCIUART_3WIRE=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_BT_MRVL=m
-CONFIG_BT_MRVL_SDIO=m
-CONFIG_BT_ATH3K=m
-CONFIG_CFG80211=m
-CONFIG_MAC80211=m
-CONFIG_MAC80211_MESH=y
-CONFIG_RFKILL=m
-CONFIG_RFKILL_INPUT=y
-CONFIG_NET_9P=m
-CONFIG_NFC=m
-CONFIG_DEVTMPFS=y
-CONFIG_DEVTMPFS_MOUNT=y
-# CONFIG_FIRMWARE_MEMMAP is not set
-CONFIG_MTD=m
-CONFIG_MTD_BLOCK=m
-CONFIG_MTD_SPI_NOR=m
-CONFIG_MTD_UBI=m
-CONFIG_OF=y
-CONFIG_OF_CONFIGFS=y
-CONFIG_ZRAM=m
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_CRYPTOLOOP=m
-CONFIG_BLK_DEV_DRBD=m
-CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_RAM=y
-CONFIG_CDROM_PKTCDVD=m
-CONFIG_ATA_OVER_ETH=m
-CONFIG_EEPROM_AT24=m
-CONFIG_TI_ST=m
-# CONFIG_SCSI_PROC_FS is not set
-CONFIG_BLK_DEV_SD=y
-CONFIG_CHR_DEV_ST=m
-CONFIG_BLK_DEV_SR=m
-CONFIG_CHR_DEV_SG=m
-CONFIG_SCSI_ISCSI_ATTRS=y
-CONFIG_ISCSI_TCP=m
-CONFIG_ISCSI_BOOT_SYSFS=m
-CONFIG_ATA=y
-CONFIG_MD=y
-CONFIG_MD_LINEAR=m
-CONFIG_BLK_DEV_DM=m
-CONFIG_DM_CRYPT=m
-CONFIG_DM_SNAPSHOT=m
-CONFIG_DM_THIN_PROVISIONING=m
-CONFIG_DM_MIRROR=m
-CONFIG_DM_LOG_USERSPACE=m
-CONFIG_DM_RAID=m
-CONFIG_DM_ZERO=m
-CONFIG_DM_DELAY=m
-CONFIG_NETDEVICES=y
-CONFIG_BONDING=m
-CONFIG_DUMMY=m
-CONFIG_WIREGUARD=m
-CONFIG_IFB=m
-CONFIG_MACVLAN=m
-CONFIG_VXLAN=m
-CONFIG_NETCONSOLE=m
-CONFIG_TUN=m
-CONFIG_VETH=m
-CONFIG_VSOCKMON=m
-CONFIG_ENC28J60=m
-CONFIG_LED_TRIGGER_PHY=y
-CONFIG_MDIO_BITBANG=m
-CONFIG_PPP=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_MPPE=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPPOATM=m
-CONFIG_PPPOE=m
-CONFIG_PPPOL2TP=m
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_SLIP=m
-CONFIG_SLIP_COMPRESSED=y
-CONFIG_SLIP_SMART=y
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_RTL8152=m
-CONFIG_USB_LAN78XX=y
-CONFIG_USB_USBNET=y
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_AX88179_178A=m
-CONFIG_USB_NET_CDCETHER=m
-CONFIG_USB_NET_CDC_EEM=m
-CONFIG_USB_NET_CDC_NCM=m
-CONFIG_USB_NET_HUAWEI_CDC_NCM=m
-CONFIG_USB_NET_CDC_MBIM=m
-CONFIG_USB_NET_DM9601=m
-CONFIG_USB_NET_SR9700=m
-CONFIG_USB_NET_SR9800=m
-CONFIG_USB_NET_SMSC75XX=m
-CONFIG_USB_NET_SMSC95XX=y
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
-CONFIG_USB_NET_CDC_SUBSET=m
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_KC2190=y
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_USB_NET_CX82310_ETH=m
-CONFIG_USB_NET_KALMIA=m
-CONFIG_USB_NET_QMI_WWAN=m
-CONFIG_USB_HSO=m
-CONFIG_USB_NET_INT51X1=m
-CONFIG_USB_IPHETH=m
-CONFIG_USB_SIERRA_NET=m
-CONFIG_USB_VL600=m
-CONFIG_ATH9K=m
-CONFIG_ATH9K_HTC=m
-CONFIG_CARL9170=m
-CONFIG_ATH6KL=m
-CONFIG_ATH6KL_USB=m
-CONFIG_AR5523=m
-CONFIG_AT76C50X_USB=m
-CONFIG_B43=m
-# CONFIG_B43_PHY_N is not set
-CONFIG_B43LEGACY=m
-CONFIG_BRCMFMAC=m
-CONFIG_BRCMFMAC_USB=y
-CONFIG_BRCMDBG=y
-CONFIG_HOSTAP=m
-CONFIG_P54_COMMON=m
-CONFIG_P54_USB=m
-CONFIG_LIBERTAS=m
-CONFIG_LIBERTAS_USB=m
-CONFIG_LIBERTAS_SDIO=m
-CONFIG_LIBERTAS_THINFIRM=m
-CONFIG_LIBERTAS_THINFIRM_USB=m
-CONFIG_MWIFIEX=m
-CONFIG_MWIFIEX_SDIO=m
-CONFIG_MT7601U=m
-CONFIG_RT2X00=m
-CONFIG_RT2500USB=m
-CONFIG_RT73USB=m
-CONFIG_RT2800USB=m
-CONFIG_RT2800USB_RT3573=y
-CONFIG_RT2800USB_RT53XX=y
-CONFIG_RT2800USB_RT55XX=y
-CONFIG_RT2800USB_UNKNOWN=y
-CONFIG_RTL8187=m
-CONFIG_RTL8192CU=m
-CONFIG_RTL8XXXU=m
-CONFIG_USB_ZD1201=m
-CONFIG_ZD1211RW=m
-CONFIG_MAC80211_HWSIM=m
-CONFIG_USB_NET_RNDIS_WLAN=m
-CONFIG_IEEE802154_AT86RF230=m
-CONFIG_IEEE802154_MRF24J40=m
-CONFIG_IEEE802154_CC2520=m
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_JOYDEV=m
-CONFIG_INPUT_EVDEV=m
-# CONFIG_KEYBOARD_ATKBD is not set
-CONFIG_KEYBOARD_GPIO=m
-CONFIG_KEYBOARD_TCA6416=m
-CONFIG_KEYBOARD_TCA8418=m
-# CONFIG_INPUT_MOUSE is not set
-CONFIG_INPUT_JOYSTICK=y
-CONFIG_JOYSTICK_IFORCE=m
-CONFIG_JOYSTICK_IFORCE_USB=m
-CONFIG_JOYSTICK_XPAD=m
-CONFIG_JOYSTICK_XPAD_FF=y
-CONFIG_JOYSTICK_XPAD_LEDS=y
-CONFIG_JOYSTICK_PSXPAD_SPI=m
-CONFIG_JOYSTICK_PSXPAD_SPI_FF=y
-CONFIG_JOYSTICK_RPISENSE=m
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_ADS7846=m
-CONFIG_TOUCHSCREEN_EGALAX=m
-CONFIG_TOUCHSCREEN_EXC3000=m
-CONFIG_TOUCHSCREEN_GOODIX=m
-CONFIG_TOUCHSCREEN_EDT_FT5X06=m
-CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
-CONFIG_TOUCHSCREEN_STMPE=m
-CONFIG_TOUCHSCREEN_IQS5XX=m
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_AD714X=m
-CONFIG_INPUT_ATI_REMOTE2=m
-CONFIG_INPUT_KEYSPAN_REMOTE=m
-CONFIG_INPUT_POWERMATE=m
-CONFIG_INPUT_YEALINK=m
-CONFIG_INPUT_CM109=m
-CONFIG_INPUT_UINPUT=m
-CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
-CONFIG_INPUT_ADXL34X=m
-CONFIG_INPUT_CMA3000=m
-CONFIG_SERIO=m
-CONFIG_SERIO_RAW=m
-CONFIG_GAMEPORT=m
-CONFIG_GAMEPORT_NS558=m
-CONFIG_GAMEPORT_L4=m
-CONFIG_BRCM_CHAR_DRIVERS=y
-CONFIG_BCM2835_DEVGPIOMEM=y
-# CONFIG_LEGACY_PTYS is not set
-CONFIG_SERIAL_8250=y
-# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
-CONFIG_SERIAL_8250_16550A_VARIANTS=y
-CONFIG_SERIAL_8250_CONSOLE=y
-# CONFIG_SERIAL_8250_DMA is not set
-CONFIG_SERIAL_8250_NR_UARTS=1
-CONFIG_SERIAL_8250_RUNTIME_UARTS=0
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_8250_SHARE_IRQ=y
-CONFIG_SERIAL_OF_PLATFORM=y
-CONFIG_SERIAL_SC16IS7XX=m
-CONFIG_SERIAL_SC16IS7XX_SPI=y
-CONFIG_SERIAL_DEV_BUS=m
-CONFIG_TTY_PRINTK=y
-CONFIG_HW_RANDOM=y
-CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=m
-CONFIG_I2C_MUX=m
-CONFIG_I2C_MUX_GPMUX=m
-CONFIG_I2C_MUX_PCA954x=m
-CONFIG_I2C_MUX_PINCTRL=m
-CONFIG_I2C_GPIO=m
-CONFIG_I2C_ROBOTFUZZ_OSIF=m
-CONFIG_I2C_TINY_USB=m
-CONFIG_SPI=y
-CONFIG_SPI_SPIDEV=m
-CONFIG_SPI_SLAVE=y
-CONFIG_PPS_CLIENT_LDISC=m
-CONFIG_PPS_CLIENT_GPIO=m
-CONFIG_PINCTRL=y
-CONFIG_PINCTRL_MCP23S08=m
-CONFIG_GPIO_SYSFS=y
-CONFIG_GPIO_PCF857X=m
-CONFIG_GPIO_ARIZONA=m
-CONFIG_GPIO_STMPE=y
-CONFIG_W1=m
-CONFIG_W1_MASTER_DS2490=m
-CONFIG_W1_MASTER_DS2482=m
-CONFIG_W1_MASTER_DS1WM=m
-CONFIG_W1_MASTER_GPIO=m
-CONFIG_W1_SLAVE_THERM=m
-CONFIG_W1_SLAVE_SMEM=m
-CONFIG_W1_SLAVE_DS2408=m
-CONFIG_W1_SLAVE_DS2413=m
-CONFIG_W1_SLAVE_DS2406=m
-CONFIG_W1_SLAVE_DS2423=m
-CONFIG_W1_SLAVE_DS2431=m
-CONFIG_W1_SLAVE_DS2433=m
-CONFIG_W1_SLAVE_DS2438=m
-CONFIG_W1_SLAVE_DS2780=m
-CONFIG_W1_SLAVE_DS2781=m
-CONFIG_W1_SLAVE_DS28E04=m
-CONFIG_POWER_RESET=y
-CONFIG_POWER_RESET_GPIO=y
-CONFIG_BATTERY_DS2760=m
-CONFIG_HWMON=m
-CONFIG_SENSORS_DS1621=m
-CONFIG_SENSORS_IIO_HWMON=m
-CONFIG_SENSORS_JC42=m
-CONFIG_SENSORS_LM75=m
-CONFIG_SENSORS_PWM_FAN=m
-CONFIG_SENSORS_SHT21=m
-CONFIG_SENSORS_SHT3x=m
-CONFIG_SENSORS_SHTC1=m
-CONFIG_SENSORS_INA2XX=m
-CONFIG_SENSORS_TMP102=m
-CONFIG_WATCHDOG=y
-CONFIG_WATCHDOG_CORE=y
-CONFIG_GPIO_WATCHDOG=m
-CONFIG_MFD_RASPBERRYPI_POE_HAT=m
-CONFIG_MFD_STMPE=y
-CONFIG_STMPE_SPI=y
-CONFIG_MFD_ARIZONA_I2C=m
-CONFIG_MFD_ARIZONA_SPI=m
-CONFIG_MFD_WM5102=y
-CONFIG_REGULATOR=y
-CONFIG_REGULATOR_FIXED_VOLTAGE=m
-CONFIG_REGULATOR_GPIO=y
-CONFIG_MEDIA_SUPPORT=m
-CONFIG_MEDIA_USB_SUPPORT=y
-CONFIG_USB_VIDEO_CLASS=m
-CONFIG_USB_PWC=m
-CONFIG_VIDEO_CPIA2=m
-CONFIG_USB_ZR364XX=m
-CONFIG_USB_STKWEBCAM=m
-CONFIG_USB_S2255=m
-CONFIG_VIDEO_USBTV=m
-CONFIG_VIDEO_PVRUSB2=m
-CONFIG_VIDEO_HDPVR=m
-CONFIG_VIDEO_STK1160_COMMON=m
-CONFIG_VIDEO_GO7007=m
-CONFIG_VIDEO_GO7007_USB=m
-CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m
-CONFIG_VIDEO_AU0828=m
-CONFIG_DVB_USB_V2=m
-CONFIG_DVB_USB_AF9035=m
-CONFIG_DVB_USB_ANYSEE=m
-CONFIG_DVB_USB_AU6610=m
-CONFIG_DVB_USB_AZ6007=m
-CONFIG_DVB_USB_CE6230=m
-CONFIG_DVB_USB_EC168=m
-CONFIG_DVB_USB_GL861=m
-CONFIG_DVB_USB_MXL111SF=m
-CONFIG_DVB_USB_DVBSKY=m
-CONFIG_SMS_USB_DRV=m
-CONFIG_DVB_B2C2_FLEXCOP_USB=m
-CONFIG_DVB_AS102=m
-CONFIG_VIDEO_EM28XX=m
-CONFIG_VIDEO_EM28XX_V4L2=m
-CONFIG_VIDEO_EM28XX_ALSA=m
-CONFIG_VIDEO_EM28XX_DVB=m
-CONFIG_RADIO_SI470X=m
-CONFIG_USB_SI470X=m
-CONFIG_I2C_SI470X=m
-CONFIG_RADIO_SI4713=m
-CONFIG_I2C_SI4713=m
-CONFIG_USB_MR800=m
-CONFIG_USB_DSBR=m
-CONFIG_RADIO_SHARK=m
-CONFIG_RADIO_SHARK2=m
-CONFIG_USB_KEENE=m
-CONFIG_USB_MA901=m
-CONFIG_RADIO_TEA5764=m
-CONFIG_RADIO_SAA7706H=m
-CONFIG_RADIO_TEF6862=m
-CONFIG_RADIO_WL1273=m
-CONFIG_RADIO_WL128X=m
-CONFIG_V4L_PLATFORM_DRIVERS=y
-CONFIG_VIDEO_UDA1342=m
-CONFIG_VIDEO_SONY_BTF_MPX=m
-CONFIG_VIDEO_TVP5150=m
-CONFIG_VIDEO_TW2804=m
-CONFIG_VIDEO_TW9903=m
-CONFIG_VIDEO_TW9906=m
-CONFIG_VIDEO_OV7640=m
-CONFIG_VIDEO_MT9V011=m
-CONFIG_VIDEO_AD5398=m
-CONFIG_DRM=m
-CONFIG_DRM_LOAD_EDID_FIRMWARE=y
-CONFIG_DRM_UDL=m
-CONFIG_DRM_PANEL_SIMPLE=m
-CONFIG_DRM_PANEL_ILITEK_ILI9806E=m
-CONFIG_DRM_PANEL_SITRONIX_ST7701=m
-CONFIG_DRM_PANEL_TPO_Y17P=m
-CONFIG_DRM_TOSHIBA_TC358762=m
-CONFIG_DRM_PANEL_MIPI_DBI=m
-CONFIG_TINYDRM_HX8357D=m
-CONFIG_TINYDRM_REPAPER=m
-CONFIG_FB=y
-CONFIG_FB_UDL=m
-CONFIG_FB_SIMPLE=y
-CONFIG_BACKLIGHT_PWM=m
-CONFIG_BACKLIGHT_GPIO=m
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_SOUND=y
-CONFIG_SND=m
-CONFIG_SND_OSSEMUL=y
-CONFIG_SND_PCM_OSS=m
-CONFIG_SND_HRTIMER=m
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
-CONFIG_SND_DUMMY=m
-CONFIG_SND_ALOOP=m
-CONFIG_SND_VIRMIDI=m
-CONFIG_SND_MTPAV=m
-CONFIG_SND_SERIAL_U16550=m
-CONFIG_SND_MPU401=m
-CONFIG_SND_USB_AUDIO=m
-CONFIG_SND_USB_UA101=m
-CONFIG_SND_USB_CAIAQ=m
-CONFIG_SND_USB_CAIAQ_INPUT=y
-CONFIG_SND_USB_6FIRE=m
-CONFIG_SND_USB_TONEPORT=m
-CONFIG_SND_SOC=m
-CONFIG_SND_RPI_SIMPLE_SOUNDCARD=m
-CONFIG_SND_RPI_WM8804_SOUNDCARD=m
-CONFIG_SND_SOC_AD193X_SPI=m
-CONFIG_SND_SOC_AD193X_I2C=m
-CONFIG_SND_SOC_ADAU1701=m
-CONFIG_SND_SOC_AK4554=m
-CONFIG_SND_SOC_CS4265=m
-CONFIG_SND_SOC_CS4271_I2C=m
-CONFIG_SND_SOC_DA7213=m
-CONFIG_SND_SOC_DMIC=m
-CONFIG_SND_SOC_ICS43432=m
-CONFIG_SND_SOC_MA120X0P=m
-CONFIG_SND_SOC_MAX98357A=m
-CONFIG_SND_SOC_PCM179X_I2C=m
-CONFIG_SND_SOC_PCM186X_I2C=m
-CONFIG_SND_SOC_PCM5102A=m
-CONFIG_SND_SOC_PCM512x_I2C=m
-CONFIG_SND_SOC_TAS571X=m
-CONFIG_SND_SOC_TLV320AIC32X4_I2C=m
-CONFIG_SND_SOC_WM8731=m
-CONFIG_SND_SOC_WM8741=m
-CONFIG_SND_SOC_WM8804_I2C=m
-CONFIG_SND_SOC_WM8960=m
-CONFIG_SND_SOC_TPA6130A2=m
-CONFIG_SND_SOC_I_SABRE_CODEC=m
-CONFIG_SND_SIMPLE_CARD=m
-CONFIG_SND_AUDIO_GRAPH_CARD=m
-CONFIG_HIDRAW=y
-CONFIG_UHID=m
-CONFIG_HID_A4TECH=m
-CONFIG_HID_ACRUX=m
-CONFIG_HID_APPLE=m
-CONFIG_HID_BELKIN=m
-CONFIG_HID_BETOP_FF=m
-CONFIG_HID_CHERRY=m
-CONFIG_HID_CHICONY=m
-CONFIG_HID_CYPRESS=m
-CONFIG_HID_DRAGONRISE=m
-CONFIG_HID_EMS_FF=m
-CONFIG_HID_ELECOM=m
-CONFIG_HID_ELO=m
-CONFIG_HID_EZKEY=m
-CONFIG_HID_GEMBIRD=m
-CONFIG_HID_HOLTEK=m
-CONFIG_HID_KEYTOUCH=m
-CONFIG_HID_KYE=m
-CONFIG_HID_UCLOGIC=m
-CONFIG_HID_WALTOP=m
-CONFIG_HID_GYRATION=m
-CONFIG_HID_TWINHAN=m
-CONFIG_HID_KENSINGTON=m
-CONFIG_HID_LCPOWER=m
-CONFIG_HID_LOGITECH=m
-CONFIG_HID_LOGITECH_DJ=m
-CONFIG_LOGITECH_FF=y
-CONFIG_LOGIRUMBLEPAD2_FF=y
-CONFIG_LOGIG940_FF=y
-CONFIG_HID_MAGICMOUSE=m
-CONFIG_HID_MICROSOFT=m
-CONFIG_HID_MONTEREY=m
-CONFIG_HID_MULTITOUCH=m
-CONFIG_HID_NTRIG=m
-CONFIG_HID_ORTEK=m
-CONFIG_HID_PANTHERLORD=m
-CONFIG_HID_PETALYNX=m
-CONFIG_HID_PICOLCD=m
-CONFIG_HID_PLAYSTATION=m
-CONFIG_PLAYSTATION_FF=y
-CONFIG_HID_ROCCAT=m
-CONFIG_HID_SAMSUNG=m
-CONFIG_HID_SONY=m
-CONFIG_HID_SPEEDLINK=m
-CONFIG_HID_STEAM=m
-CONFIG_HID_SUNPLUS=m
-CONFIG_HID_GREENASIA=m
-CONFIG_HID_SMARTJOYPLUS=m
-CONFIG_HID_TOPSEED=m
-CONFIG_HID_THINGM=m
-CONFIG_HID_THRUSTMASTER=m
-CONFIG_HID_WACOM=m
-CONFIG_HID_WIIMOTE=m
-CONFIG_HID_XINMO=m
-CONFIG_HID_ZEROPLUS=m
-CONFIG_HID_ZYDACRON=m
-CONFIG_HID_PID=y
-CONFIG_USB_HIDDEV=y
-CONFIG_USB_LED_TRIG=y
-CONFIG_USB=y
-CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
-CONFIG_USB_LEDS_TRIGGER_USBPORT=m
-CONFIG_USB_MON=m
-CONFIG_USB_PRINTER=m
-CONFIG_USB_TMC=m
-CONFIG_USB_STORAGE=y
-CONFIG_USB_STORAGE_REALTEK=m
-CONFIG_USB_STORAGE_DATAFAB=m
-CONFIG_USB_STORAGE_FREECOM=m
-CONFIG_USB_STORAGE_ISD200=m
-CONFIG_USB_STORAGE_USBAT=m
-CONFIG_USB_STORAGE_SDDR09=m
-CONFIG_USB_STORAGE_SDDR55=m
-CONFIG_USB_STORAGE_JUMPSHOT=m
-CONFIG_USB_STORAGE_ALAUDA=m
-CONFIG_USB_STORAGE_ONETOUCH=m
-CONFIG_USB_STORAGE_KARMA=m
-CONFIG_USB_STORAGE_CYPRESS_ATACB=m
-CONFIG_USB_STORAGE_ENE_UB6250=m
-CONFIG_USB_UAS=m
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-CONFIG_USBIP_CORE=m
-CONFIG_USBIP_VHCI_HCD=m
-CONFIG_USBIP_HOST=m
-CONFIG_USB_DWC2=y
-CONFIG_USB_DWC2_HOST=y
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_AIRCABLE=m
-CONFIG_USB_SERIAL_ARK3116=m
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_CH341=m
-CONFIG_USB_SERIAL_WHITEHEAT=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CP210X=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_F81232=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_IUU=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_METRO=m
-CONFIG_USB_SERIAL_MOS7720=m
-CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_NAVMAN=m
-CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_OTI6858=m
-CONFIG_USB_SERIAL_QCAUX=m
-CONFIG_USB_SERIAL_QUALCOMM=m
-CONFIG_USB_SERIAL_SPCP8X5=m
-CONFIG_USB_SERIAL_SAFE=m
-CONFIG_USB_SERIAL_SIERRAWIRELESS=m
-CONFIG_USB_SERIAL_SYMBOL=m
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_OPTION=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_SERIAL_OPTICON=m
-CONFIG_USB_SERIAL_XSENS_MT=m
-CONFIG_USB_SERIAL_WISHBONE=m
-CONFIG_USB_SERIAL_SSU100=m
-CONFIG_USB_SERIAL_QT2=m
-CONFIG_USB_SERIAL_DEBUG=m
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_ADUTUX=m
-CONFIG_USB_SEVSEG=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_CYPRESS_CY7C63=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_IDMOUSE=m
-CONFIG_USB_FTDI_ELAN=m
-CONFIG_USB_APPLEDISPLAY=m
-CONFIG_USB_LD=m
-CONFIG_USB_TRANCEVIBRATOR=m
-CONFIG_USB_IOWARRIOR=m
-CONFIG_USB_TEST=m
-CONFIG_USB_ISIGHTFW=m
-CONFIG_USB_YUREX=m
-CONFIG_USB_ATM=m
-CONFIG_USB_SPEEDTOUCH=m
-CONFIG_USB_CXACRU=m
-CONFIG_USB_UEAGLEATM=m
-CONFIG_USB_XUSBATM=m
-CONFIG_NOP_USB_XCEIV=y
-CONFIG_USB_GADGET=y
-CONFIG_MMC=y
-CONFIG_MMC_BLOCK_MINORS=32
-CONFIG_MMC_SDHCI=y
-CONFIG_MMC_SDHCI_PLTFM=y
-CONFIG_MMC_SPI=m
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_PCA9532=m
-CONFIG_LEDS_GPIO=y
-CONFIG_LEDS_PCA955X=m
-CONFIG_LEDS_PCA963X=m
-CONFIG_LEDS_PWM=y
-CONFIG_LEDS_IS31FL32XX=m
-CONFIG_LEDS_USER=m
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_ONESHOT=y
-CONFIG_LEDS_TRIGGER_DISK=y
-CONFIG_LEDS_TRIGGER_MTD=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-CONFIG_LEDS_TRIGGER_BACKLIGHT=y
-CONFIG_LEDS_TRIGGER_CPU=y
-CONFIG_LEDS_TRIGGER_ACTIVITY=y
-CONFIG_LEDS_TRIGGER_GPIO=y
-CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
-CONFIG_LEDS_TRIGGER_TRANSIENT=m
-CONFIG_LEDS_TRIGGER_CAMERA=m
-CONFIG_LEDS_TRIGGER_INPUT=y
-CONFIG_LEDS_TRIGGER_PANIC=y
-CONFIG_LEDS_TRIGGER_NETDEV=y
-CONFIG_LEDS_TRIGGER_PATTERN=m
-CONFIG_LEDS_TRIGGER_ACTPWR=y
-CONFIG_ACCESSIBILITY=y
-CONFIG_SPEAKUP=m
-CONFIG_SPEAKUP_SYNTH_SOFT=m
-CONFIG_RTC_CLASS=y
-# CONFIG_RTC_HCTOSYS is not set
-# CONFIG_RTC_SYSTOHC is not set
-CONFIG_RTC_DRV_ABX80X=m
-CONFIG_RTC_DRV_DS1307=m
-CONFIG_RTC_DRV_DS1374=m
-CONFIG_RTC_DRV_DS1672=m
-CONFIG_RTC_DRV_MAX6900=m
-CONFIG_RTC_DRV_RS5C372=m
-CONFIG_RTC_DRV_ISL1208=m
-CONFIG_RTC_DRV_ISL12022=m
-CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PCF8523=m
-CONFIG_RTC_DRV_PCF85063=m
-CONFIG_RTC_DRV_PCF85363=m
-CONFIG_RTC_DRV_PCF8563=m
-CONFIG_RTC_DRV_PCF8583=m
-CONFIG_RTC_DRV_M41T80=m
-CONFIG_RTC_DRV_BQ32K=m
-CONFIG_RTC_DRV_S35390A=m
-CONFIG_RTC_DRV_FM3130=m
-CONFIG_RTC_DRV_RX8581=m
-CONFIG_RTC_DRV_RX8025=m
-CONFIG_RTC_DRV_EM3027=m
-CONFIG_RTC_DRV_RV3028=m
-CONFIG_RTC_DRV_SD3078=m
-CONFIG_RTC_DRV_M41T93=m
-CONFIG_RTC_DRV_M41T94=m
-CONFIG_RTC_DRV_DS1302=m
-CONFIG_RTC_DRV_DS1305=m
-CONFIG_RTC_DRV_DS1390=m
-CONFIG_RTC_DRV_R9701=m
-CONFIG_RTC_DRV_RX4581=m
-CONFIG_RTC_DRV_RS5C348=m
-CONFIG_RTC_DRV_MAX6902=m
-CONFIG_RTC_DRV_PCF2123=m
-CONFIG_RTC_DRV_DS3232=m
-CONFIG_RTC_DRV_PCF2127=m
-CONFIG_RTC_DRV_RV3029C2=m
-CONFIG_DMADEVICES=y
-CONFIG_DMABUF_HEAPS=y
-CONFIG_DMABUF_HEAPS_SYSTEM=y
-CONFIG_DMABUF_HEAPS_CMA=y
-CONFIG_UIO=m
-CONFIG_UIO_PDRV_GENIRQ=m
-CONFIG_VHOST_VSOCK=m
-CONFIG_STAGING=y
-CONFIG_PRISM2_USB=m
-CONFIG_R8712U=m
-CONFIG_R8188EU=m
-CONFIG_VT6656=m
-CONFIG_STAGING_MEDIA=y
-CONFIG_FB_TFT=m
-CONFIG_FB_TFT_AGM1264K_FL=m
-CONFIG_FB_TFT_BD663474=m
-CONFIG_FB_TFT_HX8340BN=m
-CONFIG_FB_TFT_HX8347D=m
-CONFIG_FB_TFT_HX8353D=m
-CONFIG_FB_TFT_HX8357D=m
-CONFIG_FB_TFT_ILI9163=m
-CONFIG_FB_TFT_ILI9320=m
-CONFIG_FB_TFT_ILI9325=m
-CONFIG_FB_TFT_ILI9340=m
-CONFIG_FB_TFT_ILI9341=m
-CONFIG_FB_TFT_ILI9481=m
-CONFIG_FB_TFT_ILI9486=m
-CONFIG_FB_TFT_PCD8544=m
-CONFIG_FB_TFT_RA8875=m
-CONFIG_FB_TFT_S6D02A1=m
-CONFIG_FB_TFT_S6D1121=m
-CONFIG_FB_TFT_SH1106=m
-CONFIG_FB_TFT_SSD1289=m
-CONFIG_FB_TFT_SSD1306=m
-CONFIG_FB_TFT_SSD1331=m
-CONFIG_FB_TFT_SSD1351=m
-CONFIG_FB_TFT_ST7735R=m
-CONFIG_FB_TFT_TINYLCD=m
-CONFIG_FB_TFT_TLS8204=m
-CONFIG_FB_TFT_UC1701=m
-CONFIG_FB_TFT_UPD161704=m
-CONFIG_FB_TFT_WATTEROTT=m
-CONFIG_COMMON_CLK=y
-CONFIG_MAILBOX=y
-# CONFIG_IOMMU_SUPPORT is not set
-CONFIG_IIO=m
-CONFIG_IIO_BUFFER_CB=m
-CONFIG_MCP320X=m
-CONFIG_MCP3422=m
-CONFIG_BME680=m
-CONFIG_CCS811=m
-CONFIG_SENSIRION_SGP30=m
-CONFIG_SPS30_I2C=m
-CONFIG_MAX30102=m
-CONFIG_DHT11=m
-CONFIG_HTU21=m
-CONFIG_APDS9960=m
-CONFIG_BH1750=m
-CONFIG_MAXIM_THERMOCOUPLE=m
-CONFIG_MAX31856=m
-CONFIG_PWM=y
-CONFIG_PWM_PCA9685=m
-CONFIG_RESET_CONTROLLER=y
-CONFIG_GENERIC_PHY=y
-CONFIG_EXT4_FS=y
-CONFIG_EXT4_FS_POSIX_ACL=y
-CONFIG_EXT4_FS_SECURITY=y
-CONFIG_REISERFS_FS=m
-CONFIG_REISERFS_FS_XATTR=y
-CONFIG_REISERFS_FS_POSIX_ACL=y
-CONFIG_REISERFS_FS_SECURITY=y
-CONFIG_JFS_FS=m
-CONFIG_JFS_POSIX_ACL=y
-CONFIG_JFS_SECURITY=y
-CONFIG_JFS_STATISTICS=y
-CONFIG_XFS_FS=m
-CONFIG_XFS_QUOTA=y
-CONFIG_XFS_POSIX_ACL=y
-CONFIG_XFS_RT=y
-CONFIG_GFS2_FS=m
-CONFIG_OCFS2_FS=m
-CONFIG_BTRFS_FS=m
-CONFIG_BTRFS_FS_POSIX_ACL=y
-CONFIG_NILFS2_FS=m
-CONFIG_F2FS_FS=y
-CONFIG_F2FS_FS_SECURITY=y
-CONFIG_FANOTIFY=y
-CONFIG_QFMT_V1=m
-CONFIG_QFMT_V2=m
-CONFIG_AUTOFS4_FS=y
-CONFIG_FUSE_FS=m
-CONFIG_CUSE=m
-CONFIG_OVERLAY_FS=m
-CONFIG_FSCACHE=y
-CONFIG_FSCACHE_STATS=y
-CONFIG_CACHEFILES=y
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-CONFIG_UDF_FS=m
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_NTFS_FS=m
-CONFIG_NTFS_RW=y
-CONFIG_NTFS3_FS=m
-CONFIG_TMPFS=y
-CONFIG_TMPFS_POSIX_ACL=y
-CONFIG_ECRYPT_FS=m
-CONFIG_HFS_FS=m
-CONFIG_HFSPLUS_FS=m
-CONFIG_JFFS2_FS=m
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_UBIFS_FS=m
-CONFIG_SQUASHFS=m
-CONFIG_SQUASHFS_XATTR=y
-CONFIG_SQUASHFS_LZO=y
-CONFIG_SQUASHFS_XZ=y
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3_ACL=y
-CONFIG_NFS_V4=y
-CONFIG_NFS_SWAP=y
-CONFIG_NFS_V4_1=y
-CONFIG_NFS_V4_2=y
-CONFIG_ROOT_NFS=y
-CONFIG_NFS_FSCACHE=y
-CONFIG_NFSD=m
-CONFIG_NFSD_V3_ACL=y
-CONFIG_NFSD_V4=y
-CONFIG_RPCSEC_GSS_KRB5=m
-CONFIG_CIFS=m
-CONFIG_CIFS_UPCALL=y
-CONFIG_CIFS_XATTR=y
-CONFIG_CIFS_DFS_UPCALL=y
-CONFIG_CIFS_FSCACHE=y
-CONFIG_SMB_SERVER=m
-CONFIG_9P_FS=m
-CONFIG_9P_FS_POSIX_ACL=y
-CONFIG_NLS_DEFAULT="utf8"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=y
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=y
-CONFIG_DLM=m
-CONFIG_SECURITY=y
-CONFIG_SECURITYFS=y
-CONFIG_SECURITY_NETWORK=y
-CONFIG_SECURITY_PATH=y
-CONFIG_SECURITY_YAMA=y
-CONFIG_LSM=""
-CONFIG_CRYPTO_USER=m
-CONFIG_CRYPTO_CRYPTD=m
-CONFIG_CRYPTO_CHACHA20POLY1305=m
-CONFIG_CRYPTO_CBC=y
-CONFIG_CRYPTO_CTS=y
-CONFIG_CRYPTO_XTS=y
-CONFIG_CRYPTO_ADIANTUM=m
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_XCBC=m
-CONFIG_CRYPTO_SHA1=y
-CONFIG_CRYPTO_SHA512=y
-CONFIG_CRYPTO_SHA3=m
-CONFIG_CRYPTO_SM3=m
-CONFIG_CRYPTO_WP512=m
-CONFIG_CRYPTO_AES=y
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_DES=y
-CONFIG_CRYPTO_LZ4=m
-CONFIG_CRYPTO_USER_API_HASH=m
-CONFIG_CRYPTO_USER_API_SKCIPHER=m
-CONFIG_CRYPTO_USER_API_RNG=m
-CONFIG_CRYPTO_USER_API_AEAD=m
-CONFIG_CRC_ITU_T=y
-CONFIG_LIBCRC32C=y
-CONFIG_DMA_CMA=y
-CONFIG_CMA_SIZE_MBYTES=5
-CONFIG_PRINTK_TIME=y
-CONFIG_BOOT_PRINTK_DELAY=y
-CONFIG_KGDB=y
-CONFIG_KGDB_KDB=y
-CONFIG_KDB_KEYBOARD=y
-CONFIG_DEBUG_MEMORY_INIT=y
-CONFIG_DETECT_HUNG_TASK=y
-CONFIG_RCU_CPU_STALL_TIMEOUT=60
-CONFIG_LATENCYTOP=y
-CONFIG_FUNCTION_PROFILER=y
-CONFIG_STACK_TRACER=y
-CONFIG_IRQSOFF_TRACER=y
-CONFIG_SCHED_TRACER=y
-CONFIG_BLK_DEV_IO_TRACE=y
-# CONFIG_UPROBE_EVENTS is not set
-# CONFIG_RUNTIME_TESTING_MENU is not set
diff --git a/buildroot-external/board/rpi3/post-build.sh b/buildroot-external/board/rpi3/post-build.sh
index 1a31948..66d0fc3 100755
--- a/buildroot-external/board/rpi3/post-build.sh
+++ b/buildroot-external/board/rpi3/post-build.sh
@@ -1,5 +1,8 @@
#!/bin/sh
+# Stop on error
+set -e
+
# create VERSION file
echo "VERSION=${PRODUCT_VERSION}" >"${TARGET_DIR}/VERSION"
echo "PRODUCT=${PRODUCT}" >>"${TARGET_DIR}/VERSION"
@@ -11,6 +14,19 @@ ln -sf ../VERSION "${TARGET_DIR}/boot/VERSION"
# remove /etc/dbus-1/system.d/pulseaudio-system.conf
rm -f "${TARGET_DIR}/etc/dbus-1/system.d/pulseaudio-system.conf"
+rm -f "${TARGET_DIR}/usr/share/dbus-1/system.d/pulseaudio-system.conf"
# remove /etc/init.d/S40xorg as not needed
rm -f "${TARGET_DIR}/etc/init.d/S40xorg"
+
+# remove /etc/X11/xorg.conf.d/20-intel.conf as it will not work on rpi
+rm -f "${TARGET_DIR}/etc/X11/xorg.conf.d/20-intel.conf"
+
+# remove /lib/dhcpcd/dhcpcd-hooks/50-timesyncd.conf as it is systemd only
+rm -f "${TARGET_DIR}/lib/dhcpcd/dhcpcd-hooks/50-timesyncd.conf"
+
+# remove unnecessary /etc/init.d/fuse3
+rm -f "${TARGET_DIR}/etc/init.d/fuse3"
+
+# remove unnecessary /usr/share/clc
+rm -rf "${TARGET_DIR}/usr/share/clc"
diff --git a/buildroot-external/board/rpi3/post-image.sh b/buildroot-external/board/rpi3/post-image.sh
index 9e450c7..be8136f 100755
--- a/buildroot-external/board/rpi3/post-image.sh
+++ b/buildroot-external/board/rpi3/post-image.sh
@@ -1,17 +1,23 @@
#!/bin/sh
+# Stop on error
+set -e
+
BOARD_DIR="$(dirname "$0")"
-BOARD_NAME="$(basename "${BOARD_DIR}")"
+#BOARD_NAME="$(basename "${BOARD_DIR}")"
# Use our own cmdline.txt+config.txt
-cp "${BR2_EXTERNAL_THINROOT_PATH}/board/${BOARD_NAME}/cmdline.txt" "${BINARIES_DIR}/"
-cp "${BR2_EXTERNAL_THINROOT_PATH}/board/${BOARD_NAME}/config.txt" "${BINARIES_DIR}/"
-cp "${BR2_EXTERNAL_THINROOT_PATH}/board/${BOARD_NAME}/bootEnv.txt" "${BINARIES_DIR}/"
+cp "${BOARD_DIR}/cmdline.txt" "${BINARIES_DIR}/"
+cp "${BOARD_DIR}/config.txt" "${BINARIES_DIR}/"
+cp "${BOARD_DIR}/bootEnv.txt" "${BINARIES_DIR}/"
+
+# README needs to be present, otherwise os_prefix is not
+# prepended implicitly to the overlays' path, see:
+# https://www.raspberrypi.com/documentation/computers/config_txt.html#overlay_prefix
+touch "${BINARIES_DIR}/overlays/README" 2>/dev/null || true
# VERSION File
cp "${TARGET_DIR}/boot/VERSION" "${BINARIES_DIR}"
# create *.img file using genimage
-support/scripts/genimage.sh -c "${BR2_EXTERNAL_THINROOT_PATH}/board/${BOARD_NAME}/genimage.cfg"
-
-exit $?
+support/scripts/genimage.sh -c "${BOARD_DIR}/genimage.cfg"
diff --git a/buildroot-external/board/rpi3/uboot-patches b/buildroot-external/board/rpi3/uboot-patches
deleted file mode 120000
index bf535e8..0000000
--- a/buildroot-external/board/rpi3/uboot-patches
+++ /dev/null
@@ -1 +0,0 @@
-../rpi4/uboot-patches
\ No newline at end of file
diff --git a/buildroot-external/board/rpi3/uboot.config b/buildroot-external/board/rpi3/uboot.config
new file mode 100644
index 0000000..8b47431
--- /dev/null
+++ b/buildroot-external/board/rpi3/uboot.config
@@ -0,0 +1,21 @@
+# keep serial enabled
+CONFIG_SERIAL_PRESENT=y
+
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_MANUFACTURER="RaspberryPi"
+CONFIG_USB_GADGET_VENDOR_NUM=0x0a5c
+CONFIG_USB_GADGET_PRODUCT_NUM=0x000e
+CONFIG_USB_GADGET_DOWNLOAD=y
+
+CONFIG_CMD_NVME=y
+
+CONFIG_USB_STORAGE=y
+CONFIG_USB_FUNCTION_MASS_STORAGE=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_GENERIC=y
+CONFIG_USB_OHCI_HCD=y
+
+CONFIG_USB_XHCI_BRCM=y
+
+CONFIG_NVME=y
+CONFIG_NVME_PCI=y
diff --git a/buildroot-external/board/rpi3/uboot_defconfig b/buildroot-external/board/rpi3/uboot_defconfig
deleted file mode 100644
index 1c3497b..0000000
--- a/buildroot-external/board/rpi3/uboot_defconfig
+++ /dev/null
@@ -1,77 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_CPU_INIT=y
-CONFIG_ARCH_BCM283X=y
-CONFIG_SYS_TEXT_BASE=0x00080000
-CONFIG_TARGET_RPI_3=y
-CONFIG_SYS_MALLOC_F_LEN=0x2000
-CONFIG_NR_DRAM_BANKS=1
-CONFIG_ENV_SIZE=0x4000
-CONFIG_DEFAULT_DEVICE_TREE="bcm2836-rpi-2-b"
-CONFIG_DISTRO_DEFAULTS=y
-CONFIG_OF_BOARD_SETUP=y
-CONFIG_BOOTDELAY=-2
-CONFIG_AUTOBOOT_KEYED=y
-CONFIG_AUTOBOOT_PROMPT="Hit L\26E{\247(`\253\377\25Z\267\377\37`\264\377#^\254\377" \ -+ "\35W\250\377\34Z\261\377!a\271\377\"a\260\377\37[\243\377\240\37^\256" \ -+ "\377\17!\\\250\377\31X\250\377\40^\261\377'a\253\377\33J\202\260\10%" \ -+ "EX\0\10\24\17\1\0\0\0\12\1\2\0\3\0\0\0\1\1\0\0\0\1\0\0\0\2\2\0\0\3\4" \ -+ "\0\4\5\7\0\301\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"" \ -+ "[\254\377\35^\256\377\37^\253\377\36\\\261\377\230\37^\256\377\10\32" \ -+ "_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0" \ -+ "\300\0\0\0\0\10\2\1\0\0\0\0\4\0\1\0\6\0\6\36""6@!\\\236\377\35Z\263\377" \ -+ "\"Z\255\377\32_\254\377\230\37^\256\377\10\36\\\257\377\35_\253\377\34" \ -+ "Z\255\377\37U\237\331\0\4\12\0\1\0\0\0\1\0\5\0\0\1\3\0\210\0\0\0\0\10" \ -+ "\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"" \ -+ "\\\256\377\34]\255\377\360\37^\256\377\30\40Y\262\377\37^\255\377\31" \ -+ "[\245\377\31[\251\377\40_\256\377\37_\251\377\32\\\252\377\35_\266\377" \ -+ "\31Bn\223\0\20+2\0\0\5\0\7\0\0\0\3\0\0\0\0\2\5\0\0\1\2\0\2\1\0\0\0\1" \ -+ "\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377" \ -+ "\230\37^\256\377\10![\257\377\32]\264\377\33a\266\377%\\\235\377\21." \ -+ "Pg\0\0\11\0\1\0\0\0\2\1\0\0\300\0\2\0\0\10\12\0\14\3\2\1\0\0\0\2\0\0" \ -+ "\2\1\6\0\4\0\0\0\0\1\0\0\0\3\27\25\"A\201\260\230\37^\256\377\10\34]" \ -+ "\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377\31" \ -+ "9r\230\0\2\0\0\230\0\0\0\0\20\3\0\11\0\4\0\0\0\1\1\0\0\0\6\5\0\20*EX" \ -+ "(Y\224\377\"i\273\377\11^\271\377\37_\246\377\33\\\254\377\33\\\270\377" \ -+ "\40]\270\377\"\\\260\377\40Y\250\377\37\\\254\377\35_\265\377\240\37" \ -+ "^\256\377\12\34a\254\377!`\260\377(X\252\377\32>z\244\0\26""2;\0\3\4" \ -+ "\0\3\0\0\0\12\1\0\0\0\0\13\3\0\2\6\0\202\0\1\0\0\4\0\2\0\0\0\1\0\0\0" \ -+ "\0\2\0\0\0\4\0\300\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377" \ -+ "\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\230\37^\256\377\10\32" \ -+ "_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0" \ -+ "\300\0\0\0\0\10\1\0\0\0\1\0\2\0\5\4\12\0\16)DU#b\247\377\33[\263\377" \ -+ "\"Y\253\377\34a\256\377\230\37^\256\377\10\36\\\257\377\34^\252\377\34" \ -+ "Y\254\377\35S\235\326\0\1\7\0\1\0\0\0\1\0\5\0\1\2\4\0\210\0\0\0\0\10" \ -+ "\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"" \ -+ "\\\256\377\34]\255\377\360\37^\256\377\16)^\252\377\34Y\251\377\32_\255" \ -+ "\377\35b\255\377\33Z\247\377\35Z\255\377\37`\264\377\33`\256\3771d\245" \ -+ "\377\4\37J^\2\1\21\14\12\0\0\0\4\0\0\0\0\3\2\0\202\0\2\0\0\10\0\1\0\0" \ -+ "\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230" \ -+ "\37^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj" \ -+ "\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7" \ -+ "\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255" \ -+ "\377\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0" \ -+ "\0\221\0\0\0\0\17\0\1\0\0\1\3\0\0\0\3\6\0\0\0\5\0\0\1\0\0\2\1\0\0\4\0" \ -+ "\0\0\13\0\0\3\0\0\5\0\0\26""5@\21B}\252\37]\252\352\33\\\260\377\36X" \ -+ "\252\377%\\\254\377\240\37^\256\377\20\40`\252\377\33_\260\377\27_\264" \ -+ "\377\32]\264\377\40^\263\377#]\257\377\37\\\255\377\32[\257\377\35^\262" \ -+ "\377&Y\222\377\23""1I^\0\7\16\6\3\0\5\0\10\1\11\0\0\0\0\0\0\4\0\0\310" \ -+ "\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256" \ -+ "\377\37^\253\377\36\\\261\377\230\37^\256\377\10\32_\255\377\27""8c\204" \ -+ "\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0\270\0\0\0\0\20\0\2" \ -+ "\5\0\0\0\4\0\0\0\2\0\4\2\3\0\4\3\1\0\1\0\0\0\0\0\0\0\0\0\2\0\6\0\0\0" \ -+ "\1\1\0\0\0\6\21\14\36L\210\271\36Y\263\377\40^\261\377\33]\251\377\33" \ -+ "`\256\377\230\37^\256\377\10\37]\252\377\31`\262\377\37Z\266\377%C\203" \ -+ "\263\0\3\2\0\0\3\6\0\0\2\0\0\0\0\4\0\210\0\0\0\0\10\16'Og\40[\251\377" \ -+ "\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255" \ -+ "\377\230\37^\256\377\10\26_\273\377\31R\225\377\12\40""5\377\22!BR\22" \ -+ "&\77O\20$\77O\4(>L\14&=L\260\16\"CU\20\23!;I\16\40DU\25""0e\207#H\216" \ -+ "\301'W\251\377!Z\261\377\32\\\262\377\30_\261\377#]\261\377#]\257\377" \ -+ "\35W\250\377$a\261\377\34]\255\377\34_\260\377\33^\257\377\34]\257\377" \ -+ "\230\37^\256\377\20\31]\260\377\"V\241\377\0\15\32\27\3\0\2\0\7\0\0\0" \ -+ "\0\4\0\0\0\6\2\0\1\0\2\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1" \ -+ "Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377" \ -+ "\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1" \ -+ "\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256" \ -+ "\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34" \ -+ "\\\263\377\31""9r\230\0\2\0\0\220\0\0\0\0\20\0\2\4\0\1\2\7\0\2\0\1\0" \ -+ "\3\0\0\0\2\1\0\0\2\1\11\0\0\0\0\0\1\2\0\0\0\4\25\22\14#BR\40H{\247$]" \ -+ "\242\377\37`\262\377\34^\262\377\37\\\255\377\"[\252\377\240\37^\256" \ -+ "\377\20\32Z\264\377\37^\256\377!`\247\377\37]\246\377\36]\255\377\34" \ -+ "Z\261\377\35[\260\377\40_\256\377!H\201\377\7%I^\0\4\16\6\0\0\2\0\6\0" \ -+ "\2\0\5\0\6\0\0\0\2\0\0\5\0\0\310\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241" \ -+ "\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\230" \ -+ "\37^\256\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0" \ -+ "\0\1\0\0\0\0\0\2\0\270\0\0\0\0\202\1\1\3\0\203\0\0\2\0\13\0\1\2\0\0\2" \ -+ "\3\0\0\4\5\0\12\3\0\0\0\2\0\0\0\34""6@'X\233\377\34X\260\377\40_\257" \ -+ "\377\34^\252\377\34_\260\377\230\37^\256\377\10\37]\252\377\31`\262\377" \ -+ "\36Y\263\377\40>z\244\0\3\2\0\0\1\3\0\0\2\0\0\0\1\5\0\210\0\0\0\0\10" \ -+ "\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"" \ -+ "\\\256\377\34]\255\377\230\37^\256\377\4!Z\253\377\32Ez\244\0\5\13\3" \ -+ "\0\0\20\11\202\0\0\11\0\2\0\5\11\0\0\1\7\0\260\0\1\4\0\20\0\2\7\0\0\5" \ -+ "\12\0\0\3\11\0\0\6\24\17\0\37\34G|\247\36[\254\377\30" \ -+ "^\263\377\33^\257\377\40]\255\377\40^\253\377\40]\255\377\40_\257\377" \ -+ "!_\262\377\"`\263\377!_\262\377\34]\255\377\31[\251\377\240\37^\256\377" \ -+ "\16%^\257\377!O\212\274\12(BR\0\3\5\0\3\0\0\0\14\5\0\3\5\3\4\0\0\0\5" \ -+ "\0\0\0\4\0\3\2\7\0\0\0\4\0\0\0\2\0\1\1\1\0\4\4\4\0\202\2\2\0\0\310\0" \ -+ "\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256" \ -+ "\377\37^\253\377\36\\\261\377\230\37^\256\377\10\32_\255\377\27""8c\204" \ -+ "\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0\270\0\0\0\0\20\0\6" \ -+ "\10\0\0\1\0\0\3\0\0\0\5\0\0\0\0\0\13\3\0\4\36\35\3$Og\35H}\377%`\254" \ -+ "\377#]\257\377\34Z\255\377\36a\257\377\34^\254\377\36[\256\377\40^\261" \ -+ "\377\31^\251\377\230\37^\256\377\10\37]\262\377\33`\255\377\"X\236\377" \ -+ "\0\21\35\35\3\0\4\0\5\0\0\0\1\2\0\0\0\0\11\0\210\0\0\0\0\10\16'Og\40" \ -+ "[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377" \ -+ "\34]\255\377\230\37^\256\377\10\"Z\257\377\33Dx\241\0\6\2\0\4\0\3\0\5" \ -+ "\2\0\0\4\0\0\0\0\2\0\0\4\0\0\0\260\4\0\5\0\2\0\0\0\0\2\4\1\0\202\0\2" \ -+ "\0\0\14\0\1\0\0\2\2\0\0\1\0\0\0\3\0\0\0\1\0\4\0\14!@O%X\227\377\34`\263" \ -+ "\377\31[\262\377\37\\\257\377\"_\257\377\35\\\253\377\230\37^\256\377" \ -+ "\20\36[\253\377\40]\256\377\40^\265\377$^\262\377\7.Og\0\4\0\0\4\0\0" \ -+ "\0\0\0\2\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377" \ -+ "\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377\33\\\256\377" \ -+ "#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2" \ -+ "\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34" \ -+ "]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377" \ -+ "\31""9r\230\0\2\0\0\220\0\0\0\0\20\3\0\0\0\27*Ka#Q\236\331\40`\272\377" \ -+ "\34`\263\377\35_\253\377\35_\251\377\32^\251\377\34_\255\377\32]\256" \ -+ "\377\30\\\257\377\32^\263\377\33]\263\377\34]\257\377\37^\255\377\"`" \ -+ "\253\377\237\37^\256\377\21\37^\256\360\33A\177\255\0\23""2;\0\3\2\0" \ -+ "\10\4\0\0\6\1\0\0\0\0\5\0\0\2\5\0\0\6\5\0\3\0\2\0\4\0\2\0\5\0\1\0\5\0" \ -+ "\0\0\4\0\0\0\1\0\0\0\0\0\0\0\0\0\2\0\310\0\0\0\0\10\1\1\0\0\0\7\14\3" \ -+ "\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261" \ -+ "\377\230\37^\256\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2" \ -+ "\0\0\1\0\0\1\0\0\0\0\0\2\0\270\0\0\0\0\20\0\3\4\0\0\1\0\0\3\0\0\0\3\1" \ -+ "\6\0\17\27,2\35L\2\34""5@\250\6" \ -+ "\36:F\210\5#=L\20\5%Ka\7)Og\14-Xr\21""3a\201\25""9k\220\34Av\236#H\177" \ -+ "\255%L\205\377.W\225\377)X\234\377&[\247\377\"\\\260\377\37]\264\377" \ -+ "\36\\\263\377\36[\254\377\37Y\252\377\240\37^\256\377\10\24`\256\377" \ -+ "\"\\\260\377\32""9o\225\0\1\5\0\5\1\0\0\0\1\0\0\0\2\0\0\3\0\0\0\210\0" \ -+ "\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^" \ -+ "\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36Z\260\377\32H|" \ -+ "\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10\0" \ -+ "\1\4\0\0\1\0\0\3\16$L\216\377\33]\261\377\31`\256\377\36]\252\377#" \ -+ "\\\255\377\230\37^\256\377\7\36Z\260\377\33]\261\377\37]\252\377!^\256" \ -+ "\377\36W\246\377\0\31*/\3\0\0\0\202\0\1\0\0\7\4\0\0\0\0\0\4\0\1\0\0\0" \ -+ "\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34]\255" \ -+ "\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0" \ -+ "\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203" \ -+ "\263\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377" \ -+ "\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0\0\20\1\0\0\0\2" \ -+ "\2\4\0\1\1\0\0\0\2\7\0\0\0\0\0\3\16\40\40\26Q\215\277&f\255\377\40_\254" \ -+ "\377!`\255\377\37^\253\377\35\\\253\377\37^\256\377!_\262\377\40^\261" \ -+ "\377\37]\260\377\240\37^\256\377\10!\\\270\377\40]\266\377\36\\\257\377" \ -+ "\37[\244\377\30J\207\377\3%S\377\0\20""1\377\14\26/8\310\3\32,2\10\2" \ -+ "\25""3>\6\23""6@\1\31""5@\6\31""7C\1\0\0\0\3\0\2\0\0\2\0\0\1\0\2\0\210" \ -+ "\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256" \ -+ "\377\37^\253\377\36\\\261\377\230\37^\256\377\10\36b\307\377&[\267\377" \ -+ "&Q\240\377-V\245\377)\\\257\377!Z\261\377%_\263\377'\\\254\377\250\35" \ -+ "^\256\377\210![\255\377\202\36[\254\377\16\35[\256\377\35[\260\377\33" \ -+ "[\262\377\33]\264\377\34]\267\377\34_\270\377\40[\265\377\35]\265\377" \ -+ "\32]\266\377\27]\265\377\30^\264\377\34^\262\377!`\260\377%_\260\377" \ -+ "\240\37^\256\377\10\24]\254\377)^\254\377\15&Og\0\0\5\0\3\0\0\0\0\2\0" \ -+ "\0\0\0\2\0\3\0\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\" \ -+ "\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256" \ -+ "\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0" \ -+ "\1\0\2\0\270\0\0\0\0\202\0\1\0\0\6\0\7\15\6\15""2_~$^\260\377\34`\265" \ -+ "\377\35\\\251\377#^\254\377\230\37^\256\377\20\37\\\257\377\31[\257\377" \ -+ "\40^\253\377\37^\256\377\37\\\254\377\13)CU\2\0\3\0\0\0\0\0\0\1\0\0\4" \ -+ "\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37" \ -+ "^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2" \ -+ "\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1" \ -+ "\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377" \ -+ "\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\210" \ -+ "\0\0\0\0\10\0\0\5\0\3\2\7\0\1\0\0\0\0\1\5\0\3\1\2\0\5\25,2\32\\\246\377" \ -+ "\23_\265\377\203\35\\\253\377\3\36]\255\377\40_\257\377\40^\261\377\202" \ -+ "\37]\260\377\240\37^\256\377\10\33[\245\377\34^\250\377\34`\251\377\35" \ -+ "a\252\377\36\\\245\377\35S\235\377$R\235\3775\\\247\377\310\36]\252\377" \ -+ "\10![\244\377'X\244\377%\\\237\377$M\213\274\5\21\37\40\0\0\7\0\0\2\2" \ -+ "\0\1\0\2\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"" \ -+ "[\254\377\35^\256\377\37^\253\377\36\\\261\377\230\37^\256\377\10\30" \ -+ "\\\261\377\40]\256\377\40Y\246\377\40^\253\377\30_\261\377\21]\261\377" \ -+ "\27_\261\377\30]\252\377\250\37^\253\377\210\35_\253\377\203\35^\262" \ -+ "\377\202\34^\262\377\202\32^\261\377\11\33_\262\377\33_\260\377\34a\257" \ -+ "\377\33c\257\377\32d\255\377\33c\255\377\34_\255\377\36]\255\377\35Z" \ -+ "\253\377\240\37^\256\377\10\30\\\255\377-\\\242\377\1\25.5\0\0\5\0\3" \ -+ "\0\0\0\1\4\0\0\0\0\5\0\1\0\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256" \ -+ "\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230" \ -+ "\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0" \ -+ "\0\3\0\0\1\0\2\0\270\0\0\0\0\10\0\2\0\0\1\0\0\0\0\4\0\0\0\34""6@*[\250" \ -+ "\377\36]\272\377\32[\253\377$_\253\377\230\37^\256\377\20\37]\260\377" \ -+ "\31Z\256\377$^\257\377\36\\\257\377\35_\255\377\26""6\\x\1\0\5\0\0\0" \ -+ "\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\" \ -+ "\262\377\230\37^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257" \ -+ "\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0" \ -+ "\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377" \ -+ "\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230" \ -+ "\0\2\0\0\210\0\0\0\0\16\0\0\11\0\0\0\4\0\3\0\0\0\3\5\4\0\5\0\0\0\0\11" \ -+ "\35\35\36Z\242\377\32a\271\377\36]\255\377\35\\\254\377\37^\256\377\40" \ -+ "_\257\377\37^\256\377\35\\\254\377\202\35[\256\377\240\37^\256\377\10" \ -+ "\40_\254\377\34^\252\377\34`\253\377\33`\255\377\32a\261\377\40d\271" \ -+ "\377\40a\273\377\31X\265\377\310\"Z\255\377\10\27^\266\377\33\\\270\377" \ -+ "\33a\267\377\"V\242\377\0\14\34\32\0\0\4\0\0\1\2\0\1\0\2\0\210\0\0\0" \ -+ "\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377" \ -+ "\37^\253\377\36\\\261\377\230\37^\256\377\10\34[\252\377!_\254\377\40" \ -+ "^\251\377\34^\254\377\32^\257\377\30_\257\377\37a\255\377!`\247\377\250" \ -+ "\"Y\263\377\210!Z\263\377\1\"]\253\377\203\"]\251\377\14\"^\247\377!" \ -+ "]\246\377\37^\245\377\36]\244\377\35Z\252\377\34[\250\377\32]\244\377" \ -+ "\32]\243\377\31]\244\377\33]\251\377\33\\\254\377\33\\\256\377\240\37" \ -+ "^\256\377\10\34_\260\377(Q\211\274\0\10\26\22\1\0\4\0\1\0\0\0\0\2\0\0" \ -+ "\0\0\5\0\2\1\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255" \ -+ "\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377" \ -+ "\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0" \ -+ "\2\0\270\0\0\0\0\10\0\1\0\0\1\0\0\0\0\2\0\0\0\15\30\25(Q\223\377\36[" \ -+ "\270\377\30Z\256\377#a\252\377\231\37^\256\377\17\32[\255\377%_\260\377" \ -+ "\33\\\256\377\31^\254\377\31=m\223\0\0\5\0\1\0\0\0\0\1\0\0\4\0\0\0\0" \ -+ "\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377" \ -+ "\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0" \ -+ "\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0" \ -+ "\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260" \ -+ "\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0" \ -+ "\0\10\0\0\7\0\1\0\5\0\4\1\0\0\1\3\0\0\7\0\0\0\3\12\32\27&]\240\377\40" \ -+ "^\261\377\202\37]\260\377\2!_\262\377\40^\261\377\202\35\\\254\377\2" \ -+ "\37^\256\377\40_\257\377\240\37^\256\377\2!`\257\377\35\\\253\377\202" \ -+ "\37^\253\377\4\31X\245\377\35Z\252\377\"_\260\377\36[\256\377\310\33" \ -+ "]\261\377\10\"]\251\377!Z\253\377\36\\\261\377)W\242\377\2\15\23\17\10" \ -+ "\3\0\0\2\2\2\0\3\1\6\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33" \ -+ "^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\230\37^\256" \ -+ "\377\10\40[\265\377#\\\266\377\"[\265\377\37Z\264\377\36Y\263\377!Z\263" \ -+ "\377#[\260\377%Y\254\377\250\34_\260\377\210\37\\\257\377\204\40]\260" \ -+ "\377\202!^\257\377\5!^\256\377\40]\255\377%\\\267\377$[\265\377\"[\262" \ -+ "\377\202\37\\\255\377\1\36]\255\377\202\35^\260\377\240\37^\256\377\10" \ -+ "\35^\262\377\32=g\212\0\1\6\0\4\0\2\0\0\0\2\0\0\2\0\0\0\0\4\0\1\1\0\0" \ -+ "\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377" \ -+ "\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36Z\260\377\32" \ -+ "H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\271\0\0\0\0\7" \ -+ "\2\1\0\0\1\1\0\0\0\5\13\3\37@u\236!Z\264\377\27Z\263\377!a\251\377\230" \ -+ "\37^\256\377\20\37^\255\377\36\\\257\377%^\257\377\33]\261\377\23_\253" \ -+ "\377\32B}\252\0\0\7\0\3\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0" \ -+ "\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]" \ -+ "\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0" \ -+ "\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230" \ -+ "\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255" \ -+ "\377\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0\0\10\0\0\4\0\2\2\4\0\3" \ -+ "\4\0\0\0\3\0\0\3\2\0\0\11\22#&&]\240\377\33X\253\377\202\36\\\257\377" \ -+ "\6\40^\261\377\37]\260\377\35[\256\377\37^\256\377\"a\261\377\40_\257" \ -+ "\377\240\37^\256\377\10\33]\253\377\33Z\251\377\35Z\252\377\"\\\255\377" \ -+ "$]\254\377#\\\253\377\"]\253\377\40^\253\377\310\36]\252\377\10\"]\243" \ -+ "\377![\245\377\31Z\256\377'U\240\377\0\12\13\3\11\2\0\0\0\0\0\0\1\0\4" \ -+ "\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377" \ -+ "\35^\256\377\37^\253\377\36\\\261\377\230\37^\256\377\5\36[\253\377\36" \ -+ "]\254\377\37^\255\377\37]\252\377!\\\252\377\202\"]\251\377\1#^\252\377" \ -+ "\250![\255\377\210\35^\256\377\2\33]\263\377\34\\\263\377\202\33[\262" \ -+ "\377\6\34]\261\377\35^\262\377\36\\\261\377\35[\260\377\36\\\263\377" \ -+ "\37[\263\377\203\40\\\264\377\3\36\\\261\377\35[\256\377\32[\253\377" \ -+ "\240\37^\256\377\10\35[\262\377\7&BR\2\0\1\0\6\0\0\0\1\1\3\0\0\0\4\0" \ -+ "\0\0\0\0\1\1\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255" \ -+ "\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377" \ -+ "\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0" \ -+ "\2\0\270\0\0\0\0\10\1\0\4\0\2\0\1\0\3\0\0\0\0\1\6\0\22""0Vo#[\260\377" \ -+ "\30]\272\377\37_\246\377\230\37^\256\377\20\36]\252\377\37]\260\377#" \ -+ "Z\255\377\34^\262\377\23a\254\377\34G\213\274\0\2\13\3\3\0\0\0\0\1\0" \ -+ "\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230" \ -+ "\37^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj" \ -+ "\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7" \ -+ "\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255" \ -+ "\377\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0" \ -+ "\0\210\0\0\0\0\10\5\0\4\0\0\0\0\0\0\2\0\0\0\5\2\0\0\4\0\0\0\15!#\35Y" \ -+ "\237\377\37_\266\377\202\35[\260\377\202\37]\260\377\1\35[\256\377\202" \ -+ "\40_\257\377\1\33Z\252\377\240\37^\256\377\10\32\\\262\377\37_\266\377" \ -+ "\37]\264\377\36Z\262\377!_\264\377\35^\260\377\30]\252\377\31c\254\377" \ -+ "\310\37^\256\377\10\27`\255\377\31a\263\377\23`\274\377\"[\254\377\0" \ -+ "\12\15\6\5\1\0\0\0\0\0\0\1\0\6\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R" \ -+ "\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377" \ -+ "\230\37^\256\377\10\35^\256\377\35^\260\377\36_\261\377\35^\256\377\36" \ -+ "]\254\377\35^\256\377\33]\261\377\32`\265\377\250\34_\255\377\210\36" \ -+ "]\254\377\2\37a\255\377\36`\254\377\202\34^\252\377\1\40_\254\377\202" \ -+ "\40_\256\377\5\37^\255\377\30a\245\377\32`\250\377\33^\254\377\34]\257" \ -+ "\377\202\36\\\257\377\2\36]\255\377\36]\254\377\240\37^\256\377\10\32" \ -+ "W\260\377\0\26+2\6\0\0\0\7\0\0\0\1\2\4\0\0\0\5\0\0\0\0\0\1\1\1\0\210" \ -+ "\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34" \ -+ "^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36Z\260\377\32H" \ -+ "|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10" \ -+ "\1\0\5\0\1\0\2\0\4\0\2\0\0\0\7\0\12%CU$]\256\377\31]\276\377\34_\245" \ -+ "\377\230\37^\256\377\20\36]\252\377\40]\260\377\40W\252\377\34`\263\377" \ -+ "\25d\257\377\37K\222\307\0\4\17\11\3\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1" \ -+ "\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34" \ -+ "]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0" \ -+ "\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0" \ -+ "\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377!" \ -+ "[\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\211\0\0\0\0\7\0" \ -+ "\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]\255\377\370" \ -+ "\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37W\242\377\2\13" \ -+ "\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241" \ -+ "\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\370" \ -+ "\37^\256\377\20\34_\255\377\33^\255\377\35_\251\377!`\257\377\36Z\262" \ -+ "\377\35[\250\377\40c\252\377\30[\264\377%Cg\377\0\10\31\27\0\2\0\0\1" \ -+ "\2\0\0\0\1\0\0\0\3\10\0\0\0\4\0\5\0\0\0\210\0\0\0\0\10\16'Og\40[\251" \ -+ "\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34" \ -+ "]\255\377\230\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0" \ -+ "\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10\1\0\0\0\0\2\4\0\0\2\0\0\1" \ -+ "\0\0\0\15\22&)\37]\252\377\37^\256\377\34]\255\377\230\37^\256\377\20" \ -+ "\36]\255\377\36]\254\377\35]\264\377#[\256\377\32^\247\377\36P\227\315" \ -+ "\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]" \ -+ "\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377\33\\" \ -+ "\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3" \ -+ "\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377" \ -+ "\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263" \ -+ "\377\31""9r\230\0\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0" \ -+ "\2\17\30\25\"Y\251\377\34]\255\377\370\37^\256\377\10\37]\262\377\34" \ -+ "^\254\377\35^\262\377\37W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0" \ -+ "\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35" \ -+ "^\256\377\37^\253\377\36\\\261\377\370\37^\256\377\20\40b\260\377\32" \ -+ "[\253\377\35^\256\377\37]\260\377\36\\\261\377!`\260\377\36`\254\377" \ -+ "\36_\261\377\21)EX\0\3\16\6\0\2\0\0\3\2\0\0\0\0\2\0\2\3\10\0\0\0\2\0" \ -+ "\3\0\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35" \ -+ "]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36Z" \ -+ "\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270" \ -+ "\0\0\0\0\10\1\0\0\0\0\1\4\0\0\1\0\0\3\0\0\0\13\20$&\36\\\251\377\37^" \ -+ "\256\377\34]\255\377\230\37^\256\377\20\36]\255\377\36]\254\377\35]\264" \ -+ "\377#[\256\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0" \ -+ "\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256" \ -+ "\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0" \ -+ "\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0" \ -+ "\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377\40" \ -+ "]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\211\0" \ -+ "\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]\255" \ -+ "\377\370\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37W\242\377" \ -+ "\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37" \ -+ "R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377" \ -+ "\370\37^\256\377\20\40_\257\377\36]\255\377\34]\261\377\34\\\263\377" \ -+ "\32]\256\377\36_\261\377\40]\255\377\34W\233\323\0\15\32\27\0\2\5\0\0" \ -+ "\1\0\0\4\0\0\0\1\0\4\0\1\1\11\0\1\2\4\0\0\1\0\0\210\0\0\0\0\10\16'Og" \ -+ "\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256" \ -+ "\377\34]\255\377\230\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0" \ -+ "\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10\1\0\0\0\0\1\4\0\0" \ -+ "\1\0\0\3\0\0\0\10\15!#\33Y\244\377\36]\254\377\34]\255\377\230\37^\256" \ -+ "\377\20\36]\255\377\36]\254\377\35]\264\377#[\256\377\32^\247\377\36" \ -+ "P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16" \ -+ "1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377" \ -+ "\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1" \ -+ "\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256" \ -+ "\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34" \ -+ "\\\263\377\31""9r\230\0\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4" \ -+ "\0\6\0\2\17\30\25\"Y\251\377\34]\255\377\370\37^\256\377\10\37]\262\377" \ -+ "\34^\254\377\35^\262\377\37W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0" \ -+ "\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377" \ -+ "\35^\256\377\37^\253\377\36\\\261\377\370\37^\256\377\20\34[\253\377" \ -+ "#b\262\377\35Z\263\377\35_\266\377\30]\253\377\34Z\255\377'Z\251\377" \ -+ "\14:n\223\0\1\4\0\0\2\0\0\1\0\0\0\3\0\0\0\1\0\5\0\0\0\7\0\1\3\2\0\0\2" \ -+ "\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264" \ -+ "\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36Z\260\377" \ -+ "\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0" \ -+ "\10\1\0\0\0\0\2\2\0\0\3\0\0\3\0\0\0\6\13\36\35\31W\242\377\37\\\254\377" \ -+ "\34]\255\377\230\37^\256\377\20\36]\255\377\36]\254\377\35]\264\377#" \ -+ "[\256\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0" \ -+ "\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377" \ -+ "\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0" \ -+ "\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0" \ -+ "\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260" \ -+ "\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\211\0\0\0" \ -+ "\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]\255\377" \ -+ "\370\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37W\242\377\2" \ -+ "\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37" \ -+ "R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377" \ -+ "\370\37^\256\377\12\35[\256\377\"_\260\377\35Z\263\377\34^\265\377\31" \ -+ "^\253\377%`\254\377'P\220\377\0\27""9F\3\0\0\0\3\2\0\0\202\1\0\0\0\4" \ -+ "\3\0\5\0\1\0\5\0\0\2\1\0\0\3\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31" \ -+ "`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377" \ -+ "\230\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0" \ -+ "\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10\3\0\0\0\0\2\2\0\0\2\0\0\3\0\0\0\6" \ -+ "\11\34\32\31T\240\377\37\\\254\377\36]\254\377\230\37^\256\377\20\36" \ -+ "]\255\377\36]\254\377\35]\264\377#[\256\377\32^\247\377\36P\227\315\0" \ -+ "\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251" \ -+ "\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377\33\\\256" \ -+ "\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0" \ -+ "\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10" \ -+ "\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377" \ -+ "\31""9r\230\0\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17" \ -+ "\30\25\"Y\251\377\34]\255\377\370\37^\256\377\10\37]\262\377\34^\254" \ -+ "\377\35^\262\377\37W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0" \ -+ "\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256" \ -+ "\377\37^\253\377\36\\\261\377\370\37^\256\377\20\"`\265\377\34Y\252\377" \ -+ "\40\\\262\377\32\\\262\377\35`\256\377+`\242\377\32""7a\201\0\1\20\11" \ -+ "\4\0\0\0\1\0\0\0\0\1\0\0\2\2\2\0\3\1\4\0\3\0\2\0\1\1\1\0\0\3\0\0\210" \ -+ "\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34" \ -+ "^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36Z\260\377\32H" \ -+ "|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10" \ -+ "\4\0\0\0\0\1\2\0\0\1\0\0\4\0\0\0\5\10\33\32\31U\236\377\37]\252\377\36" \ -+ "]\254\377\230\37^\256\377\20\36]\255\377\36]\254\377\35]\264\377#[\256" \ -+ "\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0" \ -+ "\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10" \ -+ "\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0" \ -+ "\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1" \ -+ "\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377" \ -+ "![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\211\0\0\0\0\7" \ -+ "\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]\255\377\370" \ -+ "\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37W\242\377\2\13" \ -+ "\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241" \ -+ "\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\370" \ -+ "\37^\256\377\20\40a\265\377\33X\251\377!_\254\377\32]\254\377\36`\256" \ -+ "\377\32L\201\260\3\24(,\7\0\0\0\4\0\0\0\0\0\0\0\0\2\0\0\0\2\1\0\2\1\0" \ -+ "\0\4\0\1\0\1\0\0\0\0\1\2\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377" \ -+ "\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37" \ -+ "^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3" \ -+ "\0\0\1\0\2\0\270\0\0\0\0\1\4\0\0\0\202\0\1\0\0\5\4\0\0\0\6\11\32\27\32" \ -+ "V\237\377\"]\253\377\36]\254\377\230\37^\256\377\20\36]\255\377\36]\254" \ -+ "\377\35]\264\377#[\256\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0" \ -+ "\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377" \ -+ "\230\37^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12" \ -+ ",Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0" \ -+ "\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255" \ -+ "\377\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0" \ -+ "\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377" \ -+ "\34]\255\377\370\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37" \ -+ "W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0" \ -+ "\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36" \ -+ "\\\261\377\370\37^\256\377\20\33]\261\377\36]\255\377\37]\246\377\36" \ -+ "`\256\377\35\\\254\377\2.[x\0\3\7\0\22\0\0\14\5\0\6\0\0\0\4\0\0\5\4\0" \ -+ "\0\3\0\0\1\0\0\0\5\0\0\0\1\0\2\0\0\0\5\0\210\0\0\0\0\10\16'Og\40[\251" \ -+ "\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34" \ -+ "]\255\377\230\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0" \ -+ "\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\1\4\0\0\0\202\0\1\0\0\5\4\0" \ -+ "\0\0\7\10\32\27\33W\240\377#^\254\377\36]\254\377\230\37^\256\377\20" \ -+ "\36]\255\377\36]\254\377\35]\264\377#[\256\377\32^\247\377\36P\227\315" \ -+ "\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]" \ -+ "\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377\33\\" \ -+ "\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3" \ -+ "\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377" \ -+ "\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263" \ -+ "\377\31""9r\230\0\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0" \ -+ "\2\17\30\25\"Y\251\377\34]\255\377\370\37^\256\377\10\37]\262\377\34" \ -+ "^\254\377\35^\262\377\37W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0" \ -+ "\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35" \ -+ "^\256\377\37^\253\377\36\\\261\377\360\37^\256\377\4\40`\270\377\35]" \ -+ "\264\377\33[\262\377\34]\261\377\202\37]\260\377\202\37]\262\377\10+" \ -+ "_\252\377\31Z\256\377\34c\277\377\"\\\255\377\21""2]{\0\10\15\6\0\1\0" \ -+ "\0\6\4\11\0\220\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377" \ -+ "\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36" \ -+ "Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270" \ -+ "\0\0\0\0\10\4\0\1\0\0\1\4\0\0\2\0\0\4\1\0\0\4\7\30\25\33W\240\377\37" \ -+ "\\\254\377\34]\257\377\230\37^\256\377\20\36]\255\377\36]\254\377\35" \ -+ "]\264\377#[\256\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4" \ -+ "\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37" \ -+ "^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2" \ -+ "\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1" \ -+ "\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377" \ -+ "\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\211" \ -+ "\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]" \ -+ "\255\377\370\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37W\242" \ -+ "\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14" \ -+ "\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261" \ -+ "\377\360\37^\256\377\17\37Y\252\377\40]\255\377\40_\256\377\37^\255\377" \ -+ "\32[\253\377\33Z\252\377\34[\253\377\36]\255\377\27X\254\377\33]\264" \ -+ "\377$_\255\377\26An\223\0\20!#\0\0\4\0\6\2\3\0\221\0\0\0\0\10\16'Og\40" \ -+ "[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377" \ -+ "\34]\255\377\230\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0" \ -+ "\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10\4\0\1\0\0\1\4\0\0\2\0" \ -+ "\0\4\1\0\0\4\7\30\25\33W\240\377\37\\\254\377\34]\257\377\230\37^\256" \ -+ "\377\20\36]\255\377\36]\254\377\35]\264\377#[\256\377\32^\247\377\36" \ -+ "P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16" \ -+ "1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377" \ -+ "\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1" \ -+ "\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256" \ -+ "\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34" \ -+ "\\\263\377\31""9r\230\0\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4" \ -+ "\0\6\0\2\17\30\25\"Y\251\377\34]\255\377\370\37^\256\377\10\37]\262\377" \ -+ "\34^\254\377\35^\262\377\37W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0" \ -+ "\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377" \ -+ "\35^\256\377\37^\253\377\36\\\261\377\360\37^\256\377\17\37^\243\377" \ -+ "\40^\247\377!\\\250\377\36X\251\377\37\\\255\377#b\262\377\37`\260\377" \ -+ "\30[\252\377\34c\277\377#^\254\377\30>k\220\1\23\37\40\0\1\0\0\4\0\0" \ -+ "\0\4\0\1\0\221\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377" \ -+ "\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36" \ -+ "Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270" \ -+ "\0\0\0\0\10\4\0\1\0\0\1\4\0\0\2\0\0\4\1\0\0\4\7\30\25\33W\240\377\37" \ -+ "\\\254\377\34]\257\377\230\37^\256\377\20\36]\255\377\36]\254\377\35" \ -+ "]\264\377#[\256\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4" \ -+ "\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37" \ -+ "^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2" \ -+ "\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1" \ -+ "\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377" \ -+ "\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\211" \ -+ "\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]" \ -+ "\255\377\370\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37W\242" \ -+ "\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14" \ -+ "\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261" \ -+ "\377\360\37^\256\377\20\33_\262\377\34]\255\377!^\256\377(a\260\377%" \ -+ "_\260\377\34Z\255\377\32\\\262\377\34b\272\377$^\257\377\24\77l\220\0" \ -+ "\22\36\35\1\0\0\0\7\0\0\0\6\1\0\0\1\0\0\0\1\1\1\0\220\0\0\0\0\10\16'" \ -+ "Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256" \ -+ "\377\34]\255\377\230\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0" \ -+ "\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10\4\0\1\0\0\1\4\0\0" \ -+ "\2\0\0\4\1\0\0\4\7\30\25\33W\240\377\37\\\254\377\34]\257\377\230\37" \ -+ "^\256\377\20\36]\255\377\36]\254\377\35]\264\377#[\256\377\32^\247\377" \ -+ "\36P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0" \ -+ "\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]" \ -+ "\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0" \ -+ "\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230" \ -+ "\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255" \ -+ "\377\34\\\263\377\31""9r\230\0\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0" \ -+ "\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]\255\377\370\37^\256\377\10\37" \ -+ "]\262\377\34^\254\377\35^\262\377\37W\242\377\2\13\22\14\0\0\0\0\0\0" \ -+ "\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377" \ -+ "\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\360\37^\256\377\20\34" \ -+ "\\\275\377\35^\272\377\32^\263\377\27Z\251\377\32\\\250\377\"_\257\377" \ -+ "%\\\257\377\"V\254\355\16/Zu\0\14\35\35\0\1\0\0\13\3\0\3\5\0\5\0\0\0" \ -+ "\4\0\0\2\0\0\0\1\0\0\220\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37" \ -+ "\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256" \ -+ "\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0" \ -+ "\1\0\2\0\270\0\0\0\0\10\4\0\1\0\0\1\4\0\0\2\0\0\4\1\0\0\4\7\30\25\33" \ -+ "W\240\377\37\\\254\377\34]\257\377\230\37^\256\377\20\36]\255\377\36" \ -+ "]\254\377\35]\264\377#[\256\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0" \ -+ "\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262" \ -+ "\377\230\37^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377" \ -+ "\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0" \ -+ "\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35" \ -+ "_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0" \ -+ "\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251" \ -+ "\377\34]\255\377\370\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377" \ -+ "\37W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0" \ -+ "\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377" \ -+ "\36\\\261\377\360\37^\256\377\20\"[\254\377!_\264\377\32_\272\377\27" \ -+ "^\272\377\40a\265\377)Z\237\377\37@u\236\14#La\0\5\12\0\0\0\4\0\4\0\0" \ -+ "\0\10\3\0\0\0\0\4\0\0\0\14\3\0\3\10\0\1\1\0\0\220\0\0\0\0\10\16'Og\40" \ -+ "[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377" \ -+ "\34]\255\377\230\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0" \ -+ "\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10\4\0\1\0\0\1\4\0\0\2\0" \ -+ "\0\4\1\0\0\4\7\30\25\33W\240\377\37\\\254\377\34]\257\377\230\37^\256" \ -+ "\377\20\36]\255\377\36]\254\377\35]\264\377#[\256\377\32^\247\377\36" \ -+ "P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16" \ -+ "1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377" \ -+ "\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1" \ -+ "\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256" \ -+ "\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34" \ -+ "\\\263\377\31""9r\230\0\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4" \ -+ "\0\6\0\2\17\30\25\"Y\251\377\34]\255\377\370\37^\256\377\10\37]\262\377" \ -+ "\34^\254\377\35^\262\377\37W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0" \ -+ "\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377" \ -+ "\35^\256\377\37^\253\377\36\\\261\377\360\37^\256\377\20\40[\237\377" \ -+ "\37[\243\377$_\255\377(]\251\377\36J\207\271\13'Nd\0\12\27\25\0\2\0\0" \ -+ "\0\1\0\0\7\3\4\0\4\0\1\0\1\0\0\0\0\1\0\0\0\2\7\0\0\0\5\0\2\0\1\0\220" \ -+ "\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34" \ -+ "^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36Z\260\377\32H" \ -+ "|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10" \ -+ "\4\0\1\0\0\1\4\0\0\2\0\0\4\1\0\0\4\7\30\25\33W\240\377\37\\\254\377\34" \ -+ "]\257\377\230\37^\256\377\20\36]\255\377\36]\254\377\35]\264\377#[\256" \ -+ "\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0" \ -+ "\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10" \ -+ "\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0" \ -+ "\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1" \ -+ "\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377" \ -+ "![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\211\0\0\0\0\7" \ -+ "\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]\255\377\370" \ -+ "\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37W\242\377\2\13" \ -+ "\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241" \ -+ "\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\360" \ -+ "\37^\256\377\20\36_\263\377![\244\342\26Ey\244\0\"@O\0\11\26\22\0\3\4" \ -+ "\0\1\2\0\0\4\0\0\0\1\0\4\0\1\1\1\0\0\0\0\0\1\1\1\0\2\3\0\0\1\1\0\0\1" \ -+ "\0\0\0\4\0\17\11\220\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255" \ -+ "\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377" \ -+ "\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0" \ -+ "\2\0\270\0\0\0\0\10\4\0\1\0\0\1\4\0\0\2\0\0\4\1\0\0\4\7\30\25\33W\240" \ -+ "\377\37\\\254\377\34]\257\377\230\37^\256\377\20\36]\255\377\36]\254" \ -+ "\377\35]\264\377#[\256\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0" \ -+ "\0\13\3\1\0\2\0\15\4\0\6\7\0\0\0\0\1\11\0\21""2Sl&`\237\377\23^\261\377" \ -+ "\230\35_\253\377\6#]\257\377\32\\\263\377\32]\264\377$Y\235\377\23*T" \ -+ "l\0\0\20\11\202\4\0\5\0\300\0\0\0\0\10\3\0\11\0\0\4\0\0\0\3\0\0\2\0\5" \ -+ "\0\10\0\0\0\4\5\0\0\0\5\27\25\36F\203\263\230\35_\253\377\10\37^\255" \ -+ "\377\35X\264\377\37\\\265\377\30_\255\377\26^\262\377#Y\257\377\36""6" \ -+ "d\204\1\4\0\0\210\0\0\0\0\202\0\0\2\0\6\0\1\0\0\5\3\0\0\0\1\0\0\0\21" \ -+ "&)$a\232\377\10d\273\377\370\35_\253\377\10\40]\256\377\32]\256\377\37" \ -+ "]\264\377-U\232\377\0\11\35\35\5\1\2\0\7\0\5\0\1\0\5\0\210\0\0\0\0\10" \ -+ "\16\0\0\6\0\3\31\27!S\220\377\26`\267\377\22]\272\377\34b\270\377\35" \ -+ "a\262\377\30a\260\377\330\35_\253\377\1\35[\256\377\203\36\\\257\377" \ -+ "\202\37]\260\377\202\40^\261\377\202\40^\251\377\202\40^\253\377\202" \ -+ "\37\\\254\377\202\36[\254\377\20\27_\263\377\31_\264\377\35`\261\377" \ -+ "!^\256\377%^\253\377&Z\245\377\37O\227\315\25D\214\277\35\"6@\13\21\37" \ -+ "\40\0\2\10\0\0\1\0\0\1\3\0\0\2\3\0\0\1\0\0\0\1\0\2\0\230\0\0\0\0\10\1" \ -+ "(Sl']\233\377\33_\262\377\24[\265\377\37]\264\377%^\257\377\34[\253\377" \ -+ "\30`\264\377\230\35_\253\377\10\24`\264\377\27F|\247\0\2\22\14\6\0\0" \ -+ "\0\7\1\0\0\0\1\0\0\0\1\2\0\1\2\6\0\270\0\0\0\0\10\10\0\13\3\0\2\10\0" \ -+ "\0\3\0\0\7\0\0\0\2\10\30\25(U\226\377\27_\263\377\32c\257\377\230\35" \ -+ "_\253\377\20\27`\254\377\33`\255\377\34c\265\377\23_\267\377\25`\263" \ -+ "\377\35P\211\274\0\2\25\22\17\0\0\11\0\0\7\0\0\0\2\0\4\0\0\0\0\0\2\0" \ -+ "\0\2\25\22\14""1^{!]\246\377\25^\272\377\230\36]\255\377\10\35[\256\377" \ -+ "\32`\265\377\35d\264\377&\\\230\377\20.J^\0\1\5\0\3\0\0\0\3\1\0\0\300" \ -+ "\0\0\0\0\10\1\0\7\0\0\2\0\0\0\3\0\0\1\0\5\0\7\0\0\0\1\1\0\0\0\4\22\14" \ -+ "$Fv\377\230\36]\255\377\10\36]\252\377\"[\264\377#\\\263\377\32\\\250" \ -+ "\377\31]\260\377%[\263\377\31""7m\223\0\4\7\0\210\0\0\0\0\10\1\0\0\0" \ -+ "\0\1\3\0\0\0\2\0\1\0\0\0\0\0\5\0\0\16-5(U\230\377\27^\272\377\370\36" \ -+ "]\255\377\10\30\\\255\377\27`\257\377\34`\261\377%X\221\377\0\16\31\27" \ -+ "\0\3\0\0\0\2\0\0\0\4\0\0\210\0\0\0\0\10\10\0\0\0\0\14\35\35)T\211\377" \ -+ "$_\255\377\36[\256\377\"Y\253\377#Z\254\377\"\\\256\377\330\36]\255\377" \ -+ "\203!^\257\377\2\40]\256\377\37\\\255\377\203\36[\254\377\30\24Z\262" \ -+ "\377\25[\263\377\31\\\263\377\33]\263\377\35^\262\377\40]\260\377\40" \ -+ "]\256\377![\254\377'Z\255\377\"R\236\377\33D\206\266\24""6f\207\16(I" \ -+ "^\7\32+2\0\12\20\11\0\3\2\0\0\3\21\14\0\0\13\3\0\1\4\0\0\3\0\0\1\3\0" \ -+ "\0\1\1\0\0\1\0\0\0\2\0\5\0\230\0\0\0\0\10\5+Xr)]\231\377\40c\262\377" \ -+ "\34_\266\377!^\257\377#[\246\377\34Z\245\377\32_\255\377\230\36]\255" \ -+ "\377\10\37]\264\377\35A\177\377\0\0\33\32\4\0\2\0\6\1\0\0\1\2\4\0\0\4" \ -+ "\7\0\2\2\4\0\270\0\0\0\0\10\6\0\0\0\0\3\2\0\0\4\0\0\0\2\0\0\0\16%)'Y" \ -+ "\240\377\26_\273\377\24\\\260\377\230\36]\255\377\11![\257\377\"Y\253" \ -+ "\377\"Y\254\377\36Z\260\377#^\254\377&Q\206\377\0\12\33\32\11\0\0\0\2" \ -+ "\3\5\0\202\0\0\0\0\5\0\0\5\0\0\6\30\25\25.Vo.T\222\377.\\\247\345\230" \ -+ "!]\265\371\10'W\254\355#[\260\363\"\\\255\355\"R\220\304\16,Nd\0\11\22" \ -+ "\14\0\10\4\0\0\6\0\0\300\0\0\0\0\10\0\0\4\0\0\2\0\0\0\4\0\0\5\2\13\3" \ -+ "\7\0\2\0\10\3\0\0\0\12\16\6$=\\x\230!]\265\371\10\34]\235\326\"]\251" \ -+ "\350(`\252\352#c\243\337\37b\250\350\"[\252\352\21:r\230\0\14!#\210\0" \ -+ "\0\0\0\10\5\1\0\0\0\1\3\0\0\2\5\0\0\0\2\0\5\2\11\0\20\26,25P\177\255" \ -+ "2]\241\334\370!]\265\371\10*W\262\366(\\\262\366'W\254\355)L\214\277" \ -+ "\0\21)/\0\5\11\0\0\1\2\0\0\3\2\0\210\0\0\0\0\10\0\2\22\14\0\22""4>\33" \ -+ "L\207\271\"[\250\350(]\255\355(Y\250\350'Z\253\352\"Z\255\355\330!]\265" \ -+ "\371\26!]\245\342\40\\\244\342\37[\243\337\36Z\242\337\35Y\241\334\34" \ -+ "X\240\334\33W\237\331\32V\236\331!M\212\274\40J\206\266\35F~\252\30=" \ -+ "q\230\23""5c\204\13*Vo\7#Ka\2\36EX\4\12\26\22\0\7\21\14\0\3\13\3\0\1" \ -+ "\7\0\0\1\5\0\0\1\4\0\202\0\1\2\0\10\0\1\7\0\0\1\4\0\0\3\2\0\1\3\0\0\0" \ -+ "\1\0\0\0\0\0\0\1\0\2\0\1\0\4\0\230\0\0\0\0\10\6.k\220\35Q\232\323\32" \ -+ "X\257\360\33[\265\371\40Y\260\363#Z\252\352\"]\253\352\35`\261\363\230" \ -+ "!]\265\371\10/Y\225\312(Aj\215\0\5\30\25\3\0\2\0\1\0\0\0\0\1\4\0\0\0" \ -+ "\2\0\3\0\0\0\270\0\0\0\0\10\12\2\0\0\0\4\3\0\0\4\0\0\0\0\2\0\0\11*/'" \ -+ "I\221\304'V\256\3600[\252\352\230!]\265\371\20\"\\\246\345&Z\245\342" \ -+ "'Y\242\337']\247\345!\\\240\377\31K\200\255\0\22.5\0\3\13\3\0\0\0\0\0" \ -+ "\1\0\0\4\3\0\0\4\0\0\0\1\0\2\0\2\2\16\6\0\1\26\22\0\0\31\27\230\0\3\0" \ -+ "\0\10\0\1\0\0\0\3\7\0\0\7\17\11\0\12\22\14\0\1\4\0\4\0\0\0\5\0\0\0\1" \ -+ "\0\2\0\300\0\0\0\0\10\1\1\1\0\0\5\0\0\0\4\3\0\1\0\11\0\7\0\4\0\6\0\0" \ -+ "\0\0\1\0\0\0\11\31\27\230\0\3\0\0\10\0\12\1\0\0\1\4\0\0\0\2\0\0\2\0\0" \ -+ "\0\3\0\0\0\3\13\3\6\2\0\0\12\0\0\0\210\0\0\0\0\10\3\0\0\0\0\0\0\0\0\4" \ -+ "\5\0\0\1\0\0\1\1\0\0\0\1\0\0\0\5\15\6\0\4\27\25\370\0\3\0\0\10\0\3\5" \ -+ "\0\0\6\12\0\0\7\20\11\0\16\25\22\0\2\0\0\1\0\0\0\0\0\0\0\0\1\4\0\210" \ -+ "\0\0\0\0\10\12\1\0\0\1\1\0\0\0\10\13\3\0\2\13\3\0\1\7\0\0\1\2\0\0\5\7" \ -+ "\0\0\6\12\0\330\0\3\0\0\202\0\4\4\0\202\0\3\3\0\204\0\2\2\0\6\0\1\14" \ -+ "\3\0\2\13\3\0\1\7\0\0\2\5\0\0\2\1\0\1\2\0\0\202\1\1\0\0\2\4\5\0\0\1\2" \ -+ "\0\0\203\0\1\0\0\202\0\0\0\0\11\1\1\1\0\0\3\2\0\0\5\1\0\1\3\0\0\0\2\0" \ -+ "\0\0\1\0\0\1\1\0\0\2\2\4\0\2\0\5\0\230\0\0\0\0\10\7\0\0\0\5\6\1\0\0\4" \ -+ "\11\0\0\3\12\0\0\2\5\0\0\1\0\0\0\2\0\0\0\4\0\0\230\0\3\0\0\10\0\6\22" \ -+ "\14\0\11\14\3\0\2\0\0\1\3\0\0\3\6\0\0\1\5\4\0\2\2\2\0\4\0\0\0\270\0\0" \ -+ "\0\0\10\7\0\5\0\0\0\5\0\0\4\0\0\6\4\0\0\1\0\0\0\0\12\26\22\0\3\16\6\0" \ -+ "\4\2\0\230\0\3\0\0\20\0\5\16\6\0\3\11\0\0\0\7\0\0\0\13\3\0\2\16\6\0\7" \ -+ "\17\11\1\0\0\0\11\0\0\0\0\0\0\0\1\1\0\0\1\0\0\0\3\0\0\0\4\1\0\0\6\2\0" \ -+ "\0\10\1\0\0\7\0\0\0\230\4\0\0\0\3\6\2\0\0\0\1\0\0\0\2\0\0\202\0\1\0\0" \ -+ "\3\0\0\0\0\2\4\3\0\0\1\4\0\301\0\0\0\0\7\0\1\0\0\0\1\3\0\1\0\11\0\5\0" \ -+ "\5\0\14\7\3\3\0\1\0\0\0\1\5\0\230\4\0\0\0\10\0\0\2\0\4\0\11\0\7\0\10" \ -+ "\0\11\0\5\0\3\0\5\0\1\0\14\3\4\0\11\0\11\0\0\0\210\0\0\0\0\10\5\1\0\0" \ -+ "\0\0\0\0\0\2\3\0\0\2\0\0\1\2\0\0\2\2\0\0\0\1\0\0\0\2\0\0\370\4\0\0\0" \ -+ "\10\7\0\0\0\4\0\0\0\1\0\0\0\6\2\1\0\6\0\0\0\14\3\6\3\4\0\3\0\1\0\6\0" \ -+ "\210\0\0\0\0\10\4\0\0\0\1\0\2\0\0\0\5\0\1\0\4\0\10\2\4\0\7\0\0\0\5\1" \ -+ "\0\0\0\0\2\0\330\4\0\0\0\207\4\0\7\0\2\5\0\10\0\4\0\0\0\202\2\1\0\0\202" \ -+ "\1\2\0\0\202\0\3\0\0\11\0\4\0\0\0\1\11\0\0\0\11\0\0\0\5\0\0\1\3\0\0\0" \ -+ "\0\0\1\0\0\0\3\0\0\0\4\2\0\0\204\0\1\0\0\4\0\0\0\0\3\3\3\0\1\1\3\0\0" \ -+ "\0\4\0\230\0\0\0\0\2\14\0\0\3\10\0\4\0\202\1\0\5\0\4\4\0\2\0\6\0\0\0" \ -+ "\7\1\1\0\1\0\0\0\230\4\0\0\0\10\0\4\0\0\2\10\0\0\0\2\0\0\1\2\0\0\0\2" \ -+ "\0\0\0\1\0\0\2\1\0\0\6\0\0\0\270\0\0\0\0\10\4\0\4\0\0\0\7\0\0\2\5\0\6" \ -+ "\2\0\0\3\0\0\0\0\0\5\0\1\0\0\0\12\0\0\0\230\4\0\0\0\13\0\1\0\0\4\1\0" \ -+ "\0\6\0\0\0\7\2\0\0\1\0\0\0\0\1\0\0\1\0\0\0\3\0\0\0\1\2\4\0\0\1\3\0\0" \ -+ "\1\0\0\203\0\2\0\0\202\0\3\0\0\230\0\0\4\0\10\3\0\0\0\4\1\0\0\1\0\0\0" \ -+ "\3\0\0\0\6\0\0\0\10\0\1\0\10\0\3\0\6\0\4\0\300\0\0\0\0\10\1\1\1\0\0\0" \ -+ "\0\0\0\1\0\0\0\0\5\0\2\0\5\0\1\0\0\0\0\1\0\0\1\1\1\0\230\0\0\4\0\3\0" \ -+ "\3\0\0\0\2\1\0\2\3\5\0\203\0\2\0\0\2\0\1\2\0\0\1\0\0\210\0\0\0\0\3\3" \ -+ "\0\0\0\0\0\0\0\0\1\5\0\202\0\0\5\0\3\1\0\5\0\3\0\5\0\6\1\10\0\370\0\0" \ -+ "\4\0\10\1\2\0\0\1\3\0\0\0\2\0\0\0\1\0\0\1\0\4\0\4\0\5\0\3\0\0\0\3\0\4" \ -+ "\0\210\0\0\0\0\203\0\1\0\0\5\3\0\0\0\6\1\0\0\4\0\0\0\3\0\0\0\1\0\4\0" \ -+ "\330\0\0\4\0\210\0\1\0\0\6\4\0\0\0\3\0\0\0\1\0\2\0\0\0\2\0\0\0\4\0\0" \ -+ "\1\4\0\202\0\2\5\0\2\7\0\0\0\6\0\0\0\202\4\0\0\0\7\1\0\0\0\0\0\2\0\0" \ -+ "\0\4\0\0\3\6\0\0\1\0\0\1\1\0\0\2\2\0\0\204\0\0\0\0\1\0\0\2\0\230\0\0" \ -+ "\0\0\4\0\2\0\0\0\1\0\0\0\3\2\0\0\2\0\0\202\0\1\0\0\2\1\3\0\0\0\3\0\0" \ -+ "\230\0\0\4\0\3\2\0\6\0\3\1\6\0\0\0\4\0\202\0\0\5\0\3\0\0\4\0\3\1\2\0" \ -+ "\4\0\0\0\270\0\0\0\0\1\1\0\0\0\204\0\2\0\0\3\0\6\0\0\0\5\0\0\0\3\0\0" \ -+ "\230\0\0\4\0\10\1\0\7\0\3\0\5\0\4\0\2\0\5\0\1\0\3\0\0\0\0\0\0\0\0\2\1" \ -+ "\0\0\1\0\0\202\0\2\5\0\6\0\0\2\0\0\1\3\0\1\2\4\0\0\1\2\0\0\2\4\0\0\3" \ -+ "\5\0\230\0\2\0\0\4\0\2\11\0\0\3\10\0\0\2\5\0\0\2\0\0\202\0\3\0\0\2\0" \ -+ "\2\0\0\0\4\0\0\300\0\0\0\0\5\3\1\4\0\1\0\0\0\0\0\0\0\0\1\2\0\0\2\3\0" \ -+ "\202\0\1\0\0\1\3\3\5\0\231\0\2\0\0\7\0\4\7\0\0\0\11\0\0\2\5\0\0\4\0\0" \ -+ "\0\5\0\0\0\1\0\0\0\1\2\0\210\0\0\0\0\202\1\0\0\0\6\0\0\2\0\2\1\7\0\0" \ -+ "\0\10\0\0\0\7\0\1\0\6\0\2\0\5\0\370\0\2\0\0\202\0\0\14\3\6\0\1\0\0\0" \ -+ "\2\0\0\0\1\6\0\0\0\2\0\2\4\0\0\3\5\0\0\210\0\0\0\0\10\0\0\7\0\0\0\5\0" \ -+ "\0\0\4\0\1\0\4\0\0\0\5\0\0\0\7\0\0\0\13\3\2\0\15\6\330\0\2\0\0\210\0" \ -+ "\1\0\0\202\4\0\0\0\202\3\0\0\0\6\1\0\2\0\2\0\3\0\2\0\5\0\1\0\5\0\4\0" \ -+ "\2\0\3\0\2\0\203\3\0\0\0\1\1\0\0\0\202\2\1\0\0\3\1\0\0\0\2\0\1\0\2\0" \ -+ "\3\0\202\0\0\2\0\3\0\0\0\0\3\3\3\0\5\5\3\0\230\0\0\0\0\202\0\4\0\0\4" \ -+ "\0\6\0\0\0\3\0\0\0\5\0\0\0\2\0\0\202\0\3\0\0\230\0\2\0\0\10\5\0\6\0\1" \ -+ "\0\5\0\1\0\10\0\1\0\6\0\1\0\5\0\3\1\4\0\2\1\0\0\1\0\0\0\270\0\0\0\0\10" \ -+ "\1\4\0\0\0\3\0\0\0\2\3\0\0\0\4\0\2\2\12\0\0\1\15\6\0\3\22\14\0\0\16\6" \ -+ "\230\0\2\0\0\14\2\0\13\3\0\0\7\0\0\0\5\0\0\0\2\0\1\0\2\0\1\1\3\0\0\0" \ -+ "\2\0\0\1\4\0\0\2\5\0\0\0\2\0\3\0\0\0\6\0\0\0\202\7\0\0\0\2\6\0\0\0\4" \ -+ "\0\2\0\231\3\0\0\0\7\5\0\0\0\6\0\0\0\4\0\0\0\2\0\3\0\0\1\6\0\0\0\7\0" \ -+ "\0\1\10\0\300\0\0\0\0\10\3\0\4\0\2\0\1\0\0\0\0\0\0\2\0\0\0\6\3\0\0\3" \ -+ "\3\0\0\2\5\0\0\0\4\0\230\3\0\0\0\10\7\0\0\0\4\0\4\0\0\0\13\3\1\1\11\0" \ -+ "\5\5\3\0\3\0\0\0\4\0\0\0\7\1\3\0\210\0\0\0\0\4\3\3\3\0\4\3\1\0\1\0\0" \ -+ "\0\0\1\0\0\202\0\2\0\0\2\0\4\0\0\0\3\0\0\370\3\0\0\0\4\4\0\1\0\4\0\2" \ -+ "\0\5\2\0\0\1\1\0\0\202\0\0\14\3\202\0\1\2\0\210\0\0\0\0\10\0\0\2\0\0" \ -+ "\0\0\0\2\3\0\0\1\2\0\0\0\2\0\0\0\6\0\0\0\2\0\0\0\3\0\0\334\3\0\0\0\204" \ -+ "\4\0\0\0\202\0\2\0\0\1\0\1\0\0\202\0\2\1\0\1\0\0\0\0\202\1\0\0\0\3\0" \ -+ "\1\0\0\0\2\1\0\1\3\2\0\202\0\0\2\0\202\0\0\4\0\2\0\0\5\0\2\0\3\0\202" \ -+ "\1\0\4\0\3\2\0\5\0\1\0\5\0\0\0\2\0\232\0\0\0\0\10\1\4\13\3\0\0\5\0\3" \ -+ "\0\2\0\4\0\2\0\7\0\7\0\3\0\7\0\5\0\12\0\4\0\13\3\230\3\0\0\0\3\6\4\0" \ -+ "\0\1\1\0\0\2\3\0\0\202\1\0\0\0\2\4\0\0\0\3\2\0\0\271\0\0\0\0\10\0\4\3" \ -+ "\0\0\0\2\0\2\0\3\0\4\0\0\0\13\1\0\3\7\0\0\0\11\0\0\0\12\0\0\0\230\3\0" \ -+ "\0\0\202\0\2\0\0\6\1\6\0\0\0\2\0\0\0\1\0\0\3\4\0\0\0\0\0\0\0\0\4\0") -+ -+ diff --git a/buildroot-external/patches/psplash/hzdr/logo.png b/buildroot-external/patches/psplash/logo-hzdr.png similarity index 100% rename from buildroot-external/patches/psplash/hzdr/logo.png rename to buildroot-external/patches/psplash/logo-hzdr.png diff --git a/buildroot-external/patches/psplash/thinroot/logo.png b/buildroot-external/patches/psplash/logo-thinroot.png similarity index 100% rename from buildroot-external/patches/psplash/thinroot/logo.png rename to buildroot-external/patches/psplash/logo-thinroot.png diff --git a/buildroot-external/patches/psplash/thinroot/0001-logo.patch b/buildroot-external/patches/psplash/thinroot/0001-logo.patch deleted file mode 100644 index bdde4b6..0000000 --- a/buildroot-external/patches/psplash/thinroot/0001-logo.patch +++ /dev/null @@ -1,1308 +0,0 @@ ---- psplash/psplash-poky-img.h.orig -+++ psplash/psplash-poky-img.h -@@ -0,0 +1,1305 @@ -+/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ -+ -+#define POKY_IMG_ROWSTRIDE (1356) -+#define POKY_IMG_WIDTH (339) -+#define POKY_IMG_HEIGHT (104) -+#define POKY_IMG_BYTES_PER_PIXEL (4) /* 3:RGB, 4:RGBA */ -+#define POKY_IMG_RLE_PIXEL_DATA ((uint8*) \ -+ "\377\377\377\377\0\225\377\377\377\0\207\323\312\302\0""2\323\312\303" \ -+ "\0\322\310\275\0\277\252\215\0\272\234k\0\275\235j\0\307\252}\0\322\276" \ -+ "\241\0\323\267\206\0\323\265\201\0\325\271\206\0\327\272\202\0\333\272" \ -+ "x\0\320\264\201\0\305\253\202\0\312\242X\0\327\272\177\0\335\271i\0\341" \ -+ "\302\177\2\350\304q\33\353\317\2208\360\310jD\366\315lB\373\324b\36\371" \ -+ "\325s\0\365\317o\11\372\342t:\357\311VO\356\300M\207\371\305/\234\373" \ -+ "\316<\231\370\326d{\370\327rL\371\326k\37\370\325\206\0\372\327r\0\372" \ -+ "\330z\0\373\327l\0\372\331o\0\373\332d\0\371\335\222\0\371\335\215\0" \ -+ "\372\331}\0\367\331\226\0\371\330\207\0\365\330\235\0\370\327\214\0\373" \ -+ "\325|\0\366\330\226\0\365\336\257\0\363\337\273\0\221\363\337\272\0\377" \ -+ "\377\377\377\0\377\377\377\377\0\213\377\377\377\0\207\323\312\302\0" \ -+ "2\323\312\303\0\322\310\275\0\277\252\215\0\272\234k\0\275\235j\0\307" \ -+ "\252}\0\322\276\241\0\323\267\206\0\323\265\201\0\325\271\206\0\327\272" \ -+ "\202\0\333\272x\0\320\264\201\0\305\253\202\0\312\242X\0\327\274\206" \ -+ "\26\336\270bf\346\274P\252\362\3019\323\372\305'\360\375\314!\370\375" \ -+ "\320#\370\375\3242\326\373\325J\234\372\317M\263\376\332&\363\372\320" \ -+ "6\375\372\3055\377\376\312\40\377\376\314\5\377\377\315\0\377\377\322" \ -+ "\20\375\374\3304\331\373\326Y\237\372\327pQ\372\330\177\10\373\327m\0" \ -+ "\372\331o\0\373\332d\0\371\335\222\0\371\335\215\0\372\331}\0\367\331" \ -+ "\226\0\371\330\207\0\365\330\235\0\370\327\214\0\373\325|\0\366\330\226" \ -+ "\0\365\336\257\0\363\337\273\0\221\363\337\272\0\377\377\377\377\0\377" \ -+ "\377\377\377\0\213\377\377\377\0\207\323\312\302\0""2\323\312\303\0\322" \ -+ "\310\275\0\277\252\215\0\272\234k\0\275\235j\0\307\252}\0\322\276\241" \ -+ "\0\323\267\206\0\323\265\201\0\325\271\206\0\327\272\202\0\333\272x\0" \ -+ "\320\264\202\0\303\251\202\5\311\241Yb\317\234-\327\332\237\17\377\351" \ -+ "\253\1\377\372\276\0\377\377\313\0\377\376\320\0\377\376\325\0\377\376" \ -+ "\331\0\377\376\333\4\377\376\333\23\377\376\330'\377\377\327-\377\377" \ -+ "\331'\377\376\330.\377\375\327-\377\376\326\30\377\376\324\0\377\377" \ -+ "\325\0\377\376\334\7\377\376\335&\371\375\331M\304\372\327lM\372\331" \ -+ "r\2\373\332d\0\371\335\222\0\371\335\215\0\372\331}\0\367\331\226\0\371" \ -+ "\330\207\0\365\330\235\0\370\327\214\0\373\325|\0\366\330\226\0\365\336" \ -+ "\257\0\363\337\273\0\221\363\337\272\0\377\377\377\377\0\377\377\377" \ -+ "\377\0\213\377\377\377\0\207\323\312\302\0""2\323\312\303\0\322\310\275" \ -+ "\0\277\252\215\0\272\234k\0\275\235j\0\307\252}\0\322\276\241\0\323\267" \ -+ "\206\0\323\265\201\0\325\271\206\0\327\272\202\0\333\272x\0\320\266\207" \ -+ "\37\311\246g\256\333\253B\377\352\264)\377\361\270\23\377\356\262\2\377" \ -+ "\356\257\0\377\372\300\1\377\376\321\0\377\376\326\1\377\376\334\0\377" \ -+ "\376\337\0\377\376\341\2\377\376\341\11\377\376\336\32\377\375\335\36" \ -+ "\377\376\337\16\377\376\337\24\377\376\336\35\377\376\336\32\377\376" \ -+ "\334\6\377\376\332\0\377\376\337\0\377\376\341\16\377\375\335*\374\374" \ -+ "\332S\246\373\332i%\371\335\225\0\371\335\215\0\372\331}\0\367\331\226" \ -+ "\0\371\330\207\0\365\330\235\0\370\327\214\0\373\325|\0\366\330\226\0" \ -+ "\365\336\257\0\363\337\273\0\221\363\337\272\0\377\377\377\377\0\377" \ -+ "\377\377\377\0\213\377\377\377\0\207\323\312\302\0""2\323\312\303\0\322" \ -+ "\310\275\0\277\252\215\0\272\234k\0\275\235j\0\307\252}\0\322\276\241" \ -+ "\0\323\267\206\0\323\265\201\0\325\271\210\0\327\272\205\1\332\271{P" \ -+ "\336\264V\325\354\2703\377\370\300\40\377\376\306\22\377\377\314\14\377" \ -+ "\376\317\5\377\372\305\1\377\366\266\0\377\374\304\1\377\376\327\1\377" \ -+ "\375\333\0\377\376\336\1\377\376\342\5\377\376\343\4\377\375\344\6\377" \ -+ "\376\342\25\377\375\337\30\377\375\342\11\377\376\342\10\377\376\342" \ -+ "\17\377\376\342\16\377\375\340\5\377\376\332\0\377\376\342\3\377\376" \ -+ "\344\21\377\376\341\36\377\375\335>\334\373\334\177S\371\335\223\0\372" \ -+ "\331}\0\367\331\226\0\371\330\207\0\365\330\235\0\370\327\214\0\373\325" \ -+ "|\0\366\330\226\0\365\336\257\0\363\337\273\0\221\363\337\272\0\377\377" \ -+ "\377\377\0\377\377\377\377\0\213\377\377\377\0\207\323\312\302\0""2\323" \ -+ "\312\303\0\322\310\275\0\277\252\215\0\272\234k\0\275\235j\0\307\252" \ -+ "}\0\322\276\241\0\323\267\206\0\323\266\206\0\324\267\2065\332\260X\257" \ -+ "\346\262/\372\364\271\25\377\374\301\13\377\376\306\3\377\376\312\0\377" \ -+ "\376\315\0\377\376\322\0\377\377\327\4\377\375\317\2\377\374\275\0\377" \ -+ "\376\312\0\377\376\334\0\377\376\336\1\377\376\342\4\377\376\344\7\377" \ -+ "\376\346\12\377\376\350\13\377\376\347\20\377\376\343\24\377\376\344" \ -+ "\15\377\375\345\10\377\376\345\15\377\376\345\14\377\376\336\2\377\376" \ -+ "\331\1\377\376\346\12\377\376\346\20\377\376\343\26\377\377\337*\371" \ -+ "\373\334m\205\372\331\205\16\366\331\231\0\371\330\207\0\365\330\235" \ -+ "\0\370\327\214\0\373\325|\0\366\330\226\0\365\336\257\0\363\337\273\0" \ -+ "\221\363\337\272\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377" \ -+ "\0\207\323\312\302\0\34\323\312\303\0\322\310\275\0\277\252\215\0\272" \ -+ "\234k\0\275\235j\0\307\252}\0\322\277\243\0\323\271\217\22\322\254f\213" \ -+ "\334\2515\363\352\261\22\377\366\273\5\377\375\300\0\377\377\306\0\377" \ -+ "\377\312\1\377\376\316\0\377\376\321\0\377\376\324\2\377\376\330\2\377" \ -+ "\375\335\1\377\376\323\0\377\376\302\1\377\376\321\0\377\376\337\1\377" \ -+ "\375\341\3\377\375\344\10\377\376\347\15\377\376\350\20\377\202\376\351" \ -+ "\21\377\24\376\350\21\377\376\347\16\377\376\350\14\377\377\352\14\377" \ -+ "\376\343\6\377\376\325\1\377\376\346\12\377\376\352\21\377\376\347\23" \ -+ "\377\376\345\23\377\376\340\36\377\374\332^\306\370\327\217G\370\330" \ -+ "\212\0\365\330\235\0\370\327\214\0\373\325|\0\366\330\226\0\365\336\257" \ -+ "\0\363\337\273\0\221\363\337\272\0\377\377\377\377\0\377\377\377\377" \ -+ "\0\213\377\377\377\0\207\323\312\302\0""2\323\312\303\0\322\310\275\0" \ -+ "\277\252\215\0\272\234k\0\275\235j\0\307\254\202\0\317\267\2235\321\250" \ -+ "S\302\335\245\31\377\353\261\6\377\364\271\0\377\373\277\0\377\376\304" \ -+ "\0\377\376\311\1\377\376\314\0\377\376\320\1\377\376\323\1\377\376\326" \ -+ "\1\377\376\331\1\377\376\334\1\377\376\341\1\377\376\321\1\377\376\306" \ -+ "\0\377\376\332\3\377\375\341\3\377\375\343\7\377\376\346\15\377\376\351" \ -+ "\22\377\376\352\24\377\376\353\27\377\375\354\32\377\375\353\31\377\376" \ -+ "\352\22\377\376\352\21\377\376\344\14\377\376\341\14\377\376\352\16\377" \ -+ "\375\353\23\377\376\353\26\377\376\350\21\377\376\346\20\377\376\341" \ -+ "\35\377\376\330M\362\372\327\177\204\364\330\240\4\370\327\215\0\373" \ -+ "\325|\0\366\330\226\0\365\336\257\0\363\337\273\0\221\363\337\272\0\377" \ -+ "\377\377\377\0\377\377\377\377\0\213\377\377\377\0\207\323\312\302\0" \ -+ "\36\323\312\303\0\322\310\275\0\277\252\215\0\272\234k\0\275\237n\0\305" \ -+ "\246u]\315\2358\352\334\243\12\377\352\260\0\377\364\270\0\377\371\276" \ -+ "\0\377\375\302\1\377\376\306\2\377\376\313\1\377\376\316\0\377\376\321" \ -+ "\0\377\376\324\0\377\376\330\0\377\375\332\0\377\376\333\0\377\376\337" \ -+ "\2\377\376\341\2\377\376\314\0\377\376\316\1\377\376\340\5\377\376\342" \ -+ "\3\377\376\345\16\377\375\351\22\377\375\352\23\377\375\353\27\377\203" \ -+ "\375\354\30\377\21\376\353\25\377\376\354\20\377\376\354\16\377\376\353" \ -+ "\20\377\375\355\25\377\375\354\30\377\376\353\24\377\376\350\17\377\376" \ -+ "\347\15\377\376\341\40\377\376\331D\377\373\326q\252\370\327\214\33\373" \ -+ "\325}\0\366\330\226\0\365\336\257\0\363\337\273\0\221\363\337\272\0\377" \ -+ "\377\377\377\0\377\377\377\377\0\213\377\377\377\0\207\323\312\302\0" \ -+ "2\323\312\303\0\322\310\275\0\277\252\215\0\272\235o\0\276\233bg\311" \ -+ "\227+\365\331\237\4\377\346\253\0\377\357\264\0\377\367\273\0\377\374" \ -+ "\300\0\377\376\305\0\377\376\311\2\377\376\314\0\377\375\317\0\377\376" \ -+ "\322\0\377\376\326\0\377\376\330\1\377\376\332\0\377\376\334\1\377\376" \ -+ "\335\1\377\376\342\3\377\375\334\2\377\376\311\0\377\376\327\4\377\376" \ -+ "\344\31\377\376\3472\377\376\356:\377\376\3565\377\375\3571\377\375\357" \ -+ "-\377\376\357*\377\375\356%\377\376\356\40\377\375\355\31\377\375\355" \ -+ "\27\377\376\356\32\377\376\356\33\377\375\356\32\377\375\354\30\377\376" \ -+ "\353\24\377\376\351\21\377\376\346\16\377\375\337$\377\376\331>\377\374" \ -+ "\326c\307\372\325|#\365\330\230\0\365\336\257\0\363\337\273\0\221\363" \ -+ "\337\272\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\207" \ -+ "\323\312\302\0\35\323\312\303\0\322\310\275\0\300\254\222\0\272\230c" \ -+ "m\302\220#\371\325\232\0\377\342\246\0\377\353\257\1\377\362\266\1\377" \ -+ "\371\275\1\377\375\301\0\377\377\305\1\377\376\311\0\377\376\314\0\377" \ -+ "\376\317\0\377\376\322\1\377\376\326\1\377\376\330\0\377\375\332\0\377" \ -+ "\376\335\0\377\376\336\1\377\376\341\4\377\376\344\15\377\375\322\1\377" \ -+ "\376\314\0\377\376\3452\377\376\355S\377\376\362\\\377\376\365b\377\202" \ -+ "\376\366d\377\6\376\370c\377\376\370`\377\376\367X\377\376\363I\377\376" \ -+ "\3605\377\376\356$\377\202\376\356\36\377\13\375\355\34\377\376\354\30" \ -+ "\377\376\354\26\377\376\351\20\377\376\344\21\377\375\336)\377\375\330" \ -+ ";\377\375\325Z\314\366\330\225(\365\336\262\0\363\337\273\0\221\363\337" \ -+ "\272\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\210\323" \ -+ "\312\302\0""3\324\313\303\0\273\242~e\272\211\"\377\316\223\0\377\333" \ -+ "\240\0\377\346\251\1\377\355\261\1\377\362\266\1\377\371\275\1\377\375" \ -+ "\301\0\377\376\305\1\377\376\311\0\377\376\314\1\377\375\316\0\377\376" \ -+ "\322\1\377\376\325\1\377\376\330\1\377\375\333\1\377\376\334\1\377\376" \ -+ "\335\0\377\376\340\20\377\376\350;\377\375\344.\377\376\311\0\377\376" \ -+ "\332\26\377\375\360X\377\376\361^\377\376\366h\377\376\370m\377\376\371" \ -+ "o\377\376\372q\377\376\373r\377\376\373q\377\376\373p\377\376\371i\377" \ -+ "\375\366Y\377\376\362=\377\376\356'\377\376\355\36\377\375\354\33\377" \ -+ "\376\354\31\377\376\352\25\377\376\350\20\377\375\342\24\377\375\333" \ -+ "*\377\376\3279\377\376\324[\322\366\335\250*\362\340\301\0\363\337\273" \ -+ "\0\363\337\272\0\217\363\337\273\0\377\377\377\377\0\377\377\377\377" \ -+ "\0\213\377\377\377\0\206\324\313\303\0""5\323\313\303\0\326\316\311\0" \ -+ "\307\270\245E\261\203-\357\304\211\0\377\324\227\0\377\336\241\1\377" \ -+ "\350\252\0\377\356\262\0\377\363\267\0\377\371\274\0\377\375\300\0\377" \ -+ "\376\305\0\377\375\310\0\377\377\313\1\377\376\315\0\377\376\321\0\377" \ -+ "\376\324\1\377\376\327\0\377\375\331\0\377\375\333\0\377\376\335\10\377" \ -+ "\376\3423\377\376\350N\377\376\360Y\377\376\326\25\377\376\313\1\377" \ -+ "\375\354I\377\376\363g\377\376\366h\377\376\371o\377\376\373t\377\376" \ -+ "\373u\377\376\373v\377\376\373w\377\376\373u\377\376\372s\377\376\372" \ -+ "q\377\376\372j\377\376\365T\377\377\3603\377\376\354\36\377\375\354\32" \ -+ "\377\375\353\30\377\376\351\25\377\376\345\16\377\376\336\22\377\376" \ -+ "\332)\377\377\3267\377\374\325i\311\365\332\242\33\363\336\262\0\363" \ -+ "\337\266\0\217\363\337\265\0\377\377\377\377\0\377\377\377\377\0\213" \ -+ "\377\377\377\0\206\306\267\252\0""5\307\271\255\0\304\267\252\32\254" \ -+ "\207I\320\264|\0\377\312\216\0\377\326\230\1\377\340\242\1\377\351\253" \ -+ "\0\377\356\261\1\377\363\266\0\377\370\274\1\377\375\300\0\377\376\304" \ -+ "\1\377\376\310\0\377\376\313\1\377\376\315\0\377\376\317\0\377\376\323" \ -+ "\1\377\376\326\0\377\375\331\0\377\376\332\0\377\375\337\"\377\376\345" \ -+ "G\377\376\347K\377\376\361b\377\375\350E\377\376\306\0\377\376\337*\377" \ -+ "\376\364j\377\375\364h\377\376\370p\377\376\372w\377\376\373x\377\376" \ -+ "\373z\377\376\373{\377\376\373z\377\376\373x\377\376\372u\377\376\372" \ -+ "s\377\376\372n\377\376\367b\377\376\361E\377\375\354%\377\375\353\30" \ -+ "\377\376\351\25\377\376\347\21\377\376\341\12\377\376\334\24\377\376" \ -+ "\330'\377\377\3247\377\373\322k\246\363\336\261\4\363\337\264\0\217\363" \ -+ "\336\256\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\205" \ -+ "\306\270\253\0\"\307\270\254\0\307\272\260\0\260\226s\213\245q\11\377" \ -+ "\275\203\0\377\314\220\0\377\327\231\0\377\340\242\1\377\350\252\1\377" \ -+ "\356\260\0\377\363\265\0\377\367\273\0\377\374\277\0\377\376\303\0\377" \ -+ "\376\307\0\377\376\312\1\377\376\314\0\377\375\316\0\377\377\322\1\377" \ -+ "\376\324\1\377\376\327\0\377\375\332\10\377\375\3409\377\376\346L\377" \ -+ "\376\347O\377\375\354Y\377\376\363d\377\376\317\20\377\376\320\22\377" \ -+ "\376\361b\377\376\364j\377\376\367n\377\376\371w\377\376\372}\377\203" \ -+ "\376\373~\377\22\376\373|\377\376\373y\377\376\372w\377\376\372r\377" \ -+ "\376\371k\377\375\367b\377\376\363P\377\375\354&\377\375\351\24\377\376" \ -+ "\350\22\377\376\345\15\377\376\337\15\377\376\331\32\377\376\327*\377" \ -+ "\377\321\77\377\366\331\222l\363\337\266\0\363\344\303\0\216\363\344" \ -+ "\302\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\205\314" \ -+ "\300\266\0""7\315\302\272\0\306\271\2556\234s*\362\254t\0\377\300\205" \ -+ "\0\377\316\217\0\377\327\231\0\377\337\241\2\377\346\250\1\377\354\256" \ -+ "\0\377\361\263\1\377\365\271\0\377\372\276\1\377\375\301\0\377\376\305" \ -+ "\0\377\376\310\0\377\376\313\1\377\376\314\0\377\376\320\0\377\377\322" \ -+ "\0\377\376\325\0\377\376\331\26\377\376\340A\377\376\344K\377\376\347" \ -+ "Q\377\375\351V\377\376\362h\377\376\3379\377\376\304\2\377\376\351P\377" \ -+ "\376\365l\377\375\365l\377\376\370u\377\376\371}\377\376\372~\377\375" \ -+ "\374}\377\375\374~\377\376\374~\377\376\373}\377\376\373z\377\376\373" \ -+ "w\377\377\372q\377\376\370g\377\376\366a\377\376\360H\377\376\351\32" \ -+ "\377\376\347\21\377\376\344\16\377\375\341\6\377\376\332\17\377\376\326" \ -+ "\33\377\376\323,\377\374\320S\347\363\336\264!\363\356\345\0\216\363" \ -+ "\354\340\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\204" \ -+ "\303\267\255\0$\302\267\255\0\305\273\264\0\250\220o\242\227f\4\377\260" \ -+ "w\0\377\277\205\1\377\314\216\1\377\325\226\0\377\335\237\1\377\345\246" \ -+ "\1\377\352\255\0\377\357\261\1\377\364\266\0\377\370\273\0\377\374\277" \ -+ "\0\377\376\302\0\377\376\306\1\377\376\311\0\377\377\314\1\377\375\316" \ -+ "\0\377\376\320\0\377\376\323\0\377\375\330&\377\376\337D\377\375\344" \ -+ "L\377\376\346S\377\376\350U\377\376\356c\377\376\354[\377\376\304\1\377" \ -+ "\375\3323\377\376\364l\377\376\363k\377\376\366s\377\376\370{\377\376" \ -+ "\371}\377\203\376\373}\377\21\375\374~\377\376\373~\377\376\373|\377" \ -+ "\376\373w\377\376\371o\377\376\367e\377\376\363\\\377\376\352-\377\376" \ -+ "\345\20\377\376\344\21\377\376\341\10\377\376\334\11\377\376\327\22\377" \ -+ "\376\324\23\377\377\3170\377\370\326\207\240\362\353\337\1\216\362\351" \ -+ "\330\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\204\303" \ -+ "\272\261\0%\304\273\263\0\275\262\250,\222o2\356\232f\0\377\260w\0\377" \ -+ "\276\202\1\377\312\213\0\377\324\224\0\377\333\233\1\377\342\243\1\377" \ -+ "\350\252\1\377\355\257\0\377\361\263\0\377\365\270\0\377\372\274\0\377" \ -+ "\376\300\0\377\376\303\0\377\376\307\0\377\376\312\0\377\376\315\1\377" \ -+ "\375\317\0\377\376\321\2\377\376\330.\377\376\336D\377\375\343J\377\377" \ -+ "\346R\377\376\346U\377\376\352[\377\376\360g\377\376\316\35\377\376\314" \ -+ "\27\377\376\357e\377\376\361g\377\376\365p\377\376\370x\377\376\371|" \ -+ "\377\376\371}\377\204\376\372}\377\20\376\371|\377\376\371y\377\376\370" \ -+ "r\377\375\366i\377\375\364b\377\376\354\77\377\376\344\22\377\376\344" \ -+ "\21\377\376\342\12\377\376\335\3\377\376\330\16\377\376\323\12\377\376" \ -+ "\321\33\377\374\317P\357\361\335\2636\355\343\314\0\215\356\342\307\0" \ -+ "\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\204\306\277\270" \ -+ "\0$\311\303\276\0\252\232\205|\210]\20\377\233f\0\377\256t\1\377\272" \ -+ "\177\0\377\307\210\1\377\321\221\1\377\330\230\0\377\336\237\1\377\345" \ -+ "\247\0\377\352\254\0\377\356\260\0\377\362\264\1\377\366\271\0\377\373" \ -+ "\276\0\377\376\301\0\377\376\304\0\377\376\310\0\377\376\312\0\377\376" \ -+ "\314\0\377\376\317\4\377\376\3262\377\376\334C\377\376\341H\377\375\343" \ -+ "O\377\375\345T\377\376\346V\377\376\356g\377\376\3318\377\375\300\1\377" \ -+ "\376\347V\377\376\357g\377\376\363l\377\376\365u\377\377\367{\377\203" \ -+ "\376\370|\377\22\376\371|\377\376\370|\377\376\371{\377\376\371x\377" \ -+ "\376\370q\377\376\366j\377\376\363c\377\376\357Q\377\376\344\31\377\375" \ -+ "\342\15\377\376\341\10\377\376\337\2\377\375\331\10\377\376\323\15\377" \ -+ "\376\320\11\377\376\314-\377\364\324\212\221\356\337\301\0\215\357\336" \ -+ "\271\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\204\300" \ -+ "\267\255\0$\306\276\270\10\232\204c\277\202T\0\377\232e\0\377\251r\1" \ -+ "\377\267{\0\377\301\205\1\377\314\213\1\377\325\224\0\377\334\232\1\377" \ -+ "\341\242\2\377\346\247\0\377\353\255\1\377\357\261\0\377\364\265\0\377" \ -+ "\370\272\0\377\374\276\0\377\376\300\0\377\376\304\0\377\377\310\0\377" \ -+ "\376\312\0\377\376\315\4\377\376\324/\377\375\332C\377\376\336I\377\375" \ -+ "\342P\377\375\344T\377\376\345T\377\376\351a\377\376\343P\377\374\275" \ -+ "\4\377\376\334@\377\376\356h\377\375\357g\377\376\364q\377\376\366x\377" \ -+ "\202\376\370{\377\24\376\371|\377\376\370{\377\376\371{\377\376\371y" \ -+ "\377\376\367u\377\376\367q\377\376\365j\377\376\363b\377\376\360[\377" \ -+ "\376\346(\377\375\341\11\377\376\341\10\377\376\337\3\377\376\332\3\377" \ -+ "\376\323\16\377\376\317\4\377\377\315\26\377\371\315_\334\356\335\267" \ -+ "\37\355\340\302\0\214\355\337\277\0\377\377\377\377\0\377\377\377\377" \ -+ "\0\213\377\377\377\0\203\271\256\245\0;\272\260\247\0\267\254\243*\213" \ -+ "oD\340\200R\0\377\226d\0\377\244n\0\377\262w\1\377\274\200\1\377\306" \ -+ "\210\0\377\320\217\1\377\327\225\1\377\335\235\1\377\342\242\2\377\347" \ -+ "\250\1\377\354\256\1\377\360\261\1\377\365\265\1\377\370\272\0\377\373" \ -+ "\275\0\377\376\300\0\377\376\304\1\377\376\307\0\377\376\313\2\377\376" \ -+ "\321*\377\376\326\77\377\376\333G\377\376\337N\377\376\341Q\377\375\342" \ -+ "R\377\376\345X\377\376\347[\377\373\300\21\377\375\316'\377\375\354f" \ -+ "\377\375\354c\377\376\361m\377\376\363s\377\375\365v\377\376\366y\377" \ -+ "\376\366z\377\376\367w\377\376\366v\377\376\366u\377\376\365r\377\376" \ -+ "\364m\377\376\362g\377\376\361c\377\376\360_\377\375\3478\377\376\337" \ -+ "\10\377\376\337\7\377\376\337\4\377\376\333\0\377\376\323\12\377\376" \ -+ "\317\7\377\377\315\12\377\374\311A\377\357\327\244V\354\334\267\0\214" \ -+ "\355\333\263\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0" \ -+ "\203\303\272\265\0<\306\276\272\0\263\247\236M\200_.\371~Q\0\377\221" \ -+ "`\0\377\237j\0\377\254s\1\377\267{\0\377\300\203\0\377\312\213\0\377" \ -+ "\322\221\0\377\330\227\0\377\335\235\2\377\343\244\2\377\350\251\0\377" \ -+ "\354\255\0\377\361\261\0\377\365\266\1\377\370\272\0\377\374\275\1\377" \ -+ "\376\301\0\377\376\304\0\377\376\307\2\377\375\315\"\377\376\323;\377" \ -+ "\376\330D\377\376\332I\377\376\336N\377\376\340P\377\376\341R\377\377" \ -+ "\347]\377\373\307\37\377\373\301\20\377\376\347^\377\375\351b\377\376" \ -+ "\356h\377\376\361n\377\376\363p\377\376\363r\377\375\363s\377\375\364" \ -+ "s\377\376\364q\377\376\364p\377\375\364o\377\376\363h\377\376\361e\377" \ -+ "\376\360c\377\376\356_\377\376\347D\377\376\336\11\377\376\336\3\377" \ -+ "\376\335\2\377\376\332\0\377\376\323\6\377\375\316\10\377\375\314\6\377" \ -+ "\375\310-\377\362\317\204\233\353\334\275\0\353\334\274\0\213\353\334" \ -+ "\273\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\203\312" \ -+ "\303\277\0'\317\311\307\0\260\244\230sxV\37\377}P\0\377\215\\\0\377\232" \ -+ "f\0\377\246o\0\377\262v\1\377\272~\0\377\303\206\0\377\315\213\0\377" \ -+ "\324\221\1\377\331\230\0\377\337\236\2\377\343\244\0\377\350\251\1\377" \ -+ "\354\255\0\377\361\261\1\377\365\265\0\377\367\271\0\377\373\275\1\377" \ -+ "\376\300\0\377\376\303\1\377\376\312\35\377\376\3174\377\376\324>\377" \ -+ "\375\327D\377\376\332J\377\376\335N\377\376\336O\377\376\344[\377\374" \ -+ "\3172\377\370\267\6\377\376\341R\377\376\350a\377\376\351c\377\376\356" \ -+ "k\377\376\360m\377\376\361m\377\203\376\362n\377\22\376\362l\377\375" \ -+ "\361i\377\376\356e\377\376\356c\377\376\356a\377\375\353\\\377\376\346" \ -+ "J\377\376\336\16\377\376\334\1\377\376\333\1\377\375\331\1\377\376\323" \ -+ "\3\377\376\316\11\377\375\313\1\377\376\307\35\377\364\313k\326\353\334" \ -+ "\302\14\353\335\304\0\213\353\335\303\0\377\377\377\377\0\377\377\377" \ -+ "\377\0\213\377\377\377\0\203\274\263\253\0%\301\271\263\0\245\226\205" \ -+ "\217uR\31\377|O\0\377\212Z\0\377\226b\0\377\240j\0\377\254r\1\377\265" \ -+ "x\0\377\275\200\1\377\306\207\1\377\317\214\0\377\325\222\0\377\332\230" \ -+ "\1\377\336\236\1\377\343\244\1\377\350\251\0\377\354\256\1\377\360\261" \ -+ "\1\377\364\264\1\377\367\270\0\377\372\274\1\377\374\300\0\377\375\306" \ -+ "\25\377\376\314.\377\376\3208\377\376\322>\377\376\326C\377\376\330J" \ -+ "\377\376\332L\377\376\340V\377\374\325B\377\365\262\7\377\376\331D\377" \ -+ "\376\346a\377\376\347a\377\376\353f\377\202\376\354g\377\25\376\355i" \ -+ "\377\376\357i\377\376\357h\377\376\356g\377\376\356d\377\376\354b\377" \ -+ "\376\354a\377\375\353_\377\376\351Z\377\376\345L\377\376\335\23\377\376" \ -+ "\332\1\377\376\331\2\377\376\330\1\377\376\323\0\377\376\315\12\377\376" \ -+ "\311\0\377\376\306\23\377\365\307U\366\354\331\2650\354\331\267\0\213" \ -+ "\354\331\266\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0" \ -+ "\203\255\237\225\0(\260\244\234\6\233\210t\251uQ\30\377{N\0\377\210X" \ -+ "\0\377\222_\1\377\234f\0\377\246n\0\377\260u\1\377\271{\0\377\277\201" \ -+ "\1\377\310\210\0\377\317\215\1\377\325\223\1\377\332\230\0\377\337\236" \ -+ "\1\377\343\243\1\377\350\251\1\377\353\254\0\377\357\261\1\377\363\263" \ -+ "\0\377\367\267\0\377\371\274\0\377\375\300\11\377\376\307%\377\376\314" \ -+ "6\377\376\317<\377\376\322C\377\376\326L\377\375\327M\377\375\332R\377" \ -+ "\375\330N\377\362\261\5\377\374\3163\377\377\344g\377\376\346g\377\375" \ -+ "\351m\377\376\353m\377\375\351g\377\375\352e\377\202\375\353c\377\22" \ -+ "\375\352c\377\376\352b\377\375\353`\377\375\352_\377\375\351\\\377\376" \ -+ "\350X\377\376\344K\377\376\333\20\377\375\331\2\377\376\330\5\377\376" \ -+ "\325\2\377\376\321\0\377\376\314\10\377\376\310\2\377\376\305\14\377" \ -+ "\366\303G\377\355\330\253Y\354\332\263\0\213\354\332\261\0\377\377\377" \ -+ "\377\0\377\377\377\377\0\213\377\377\377\0\203\257\242\226\0<\263\247" \ -+ "\235\13\231\206q\267sQ\31\377yO\0\377\204U\0\377\217\\\1\377\231c\0\377" \ -+ "\241j\0\377\253q\1\377\264v\1\377\274|\0\377\301\202\1\377\311\210\0" \ -+ "\377\317\215\0\377\325\223\1\377\331\227\0\377\335\234\2\377\342\242" \ -+ "\1\377\346\247\1\377\353\253\0\377\356\257\0\377\362\263\1\377\366\266" \ -+ "\0\377\371\273\1\377\375\277\11\377\376\302\23\377\377\307\35\377\375" \ -+ "\312)\377\376\3161\377\376\3173\377\376\3227\377\377\324\77\377\361\260" \ -+ "\4\377\370\300\27\377\377\334N\377\376\337]\377\376\350o\377\376\355" \ -+ "w\377\376\353p\377\375\352k\377\376\351i\377\375\351c\377\377\350`\377" \ -+ "\376\350_\377\375\350^\377\376\347[\377\376\347X\377\376\345S\377\376" \ -+ "\341G\377\376\331\17\377\376\326\0\377\376\325\2\377\376\324\2\377\376" \ -+ "\317\1\377\376\313\4\377\376\307\5\377\376\304\10\377\367\302=\377\353" \ -+ "\321\232\200\351\334\300\0\213\351\333\275\0\377\377\377\377\0\377\377" \ -+ "\377\377\0\213\377\377\377\0\203\253\235\217\0<\256\243\225\26\226\202" \ -+ "j\323vR\35\377zP\4\377\201R\0\377\213Z\1\377\225a\1\377\235f\0\377\246" \ -+ "m\1\377\256r\0\377\266w\1\377\275}\0\377\303\204\0\377\313\211\1\377" \ -+ "\321\216\0\377\325\223\0\377\331\230\0\377\336\235\1\377\342\242\2\377" \ -+ "\347\246\0\377\352\253\0\377\356\257\0\377\361\262\1\377\365\265\1\377" \ -+ "\370\271\0\377\372\274\0\377\375\277\0\377\376\300\1\377\376\303\2\377" \ -+ "\375\304\3\377\376\306\4\377\377\312\11\377\361\260\2\377\364\264\3\377" \ -+ "\377\316\15\377\376\320\37\377\375\332@\377\376\343a\377\376\347n\377" \ -+ "\376\350m\377\376\351l\377\376\351j\377\376\350f\377\376\347a\377\375" \ -+ "\345\\\377\376\344V\377\376\344T\377\376\342O\377\376\337C\377\376\327" \ -+ "\16\377\377\324\0\377\376\322\2\377\376\322\3\377\376\317\0\377\376\313" \ -+ "\3\377\376\305\7\377\375\302\6\377\366\3006\377\352\314\212\240\351\332" \ -+ "\273\0\213\351\331\270\0\377\377\377\377\0\377\377\377\377\0\213\377" \ -+ "\377\377\0\202\304\274\267\0\36\306\276\271\0\300\270\261\26\215x]\323" \ -+ "wU!\377{S\13\377\177Q\0\377\210W\1\377\222]\1\377\232d\1\377\243j\0\377" \ -+ "\253n\0\377\261s\1\377\271y\0\377\276\177\0\377\305\205\1\377\314\211" \ -+ "\1\377\321\217\0\377\326\223\0\377\332\230\1\377\335\234\1\377\342\241" \ -+ "\2\377\346\246\0\377\352\252\1\377\355\256\0\377\361\261\1\377\365\264" \ -+ "\0\377\366\267\0\377\371\273\0\377\374\275\0\377\376\277\0\377\202\376" \ -+ "\301\0\377\35\377\305\0\377\360\261\1\377\356\254\0\377\377\310\0\377" \ -+ "\376\310\0\377\376\313\0\377\375\320\20\377\376\326+\377\376\334F\377" \ -+ "\376\341X\377\376\344d\377\376\346h\377\376\347e\377\376\345^\377\376" \ -+ "\344X\377\376\342Q\377\376\340M\377\376\333A\377\376\323\14\377\377\322" \ -+ "\0\377\376\320\1\377\376\317\5\377\376\316\1\377\376\312\1\377\375\304" \ -+ "\7\377\374\300\6\377\366\2771\377\353\314\206\274\356\346\333\3\213\356" \ -+ "\345\325\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\202" \ -+ "\303\274\266\0""3\304\276\270\0\277\267\260$\214wY\350wU\40\377~V\20" \ -+ "\377\177S\1\377\205T\0\377\217[\0\377\226a\1\377\237f\0\377\250k\1\377" \ -+ "\256p\0\377\264v\0\377\273{\1\377\301\200\0\377\310\206\0\377\315\212" \ -+ "\1\377\321\220\1\377\326\224\0\377\331\230\0\377\335\234\1\377\341\242" \ -+ "\2\377\345\244\0\377\352\252\1\377\354\256\1\377\360\260\0\377\362\263" \ -+ "\1\377\365\266\0\377\367\271\0\377\372\274\0\377\374\276\0\377\376\277" \ -+ "\0\377\377\301\1\377\362\262\0\377\351\246\0\377\376\304\0\377\377\307" \ -+ "\0\377\377\311\0\377\376\313\0\377\377\314\0\377\375\315\3\377\375\320" \ -+ "\22\377\376\325&\377\375\334E\377\376\341Z\377\377\343_\377\377\343\\" \ -+ "\377\375\341U\377\376\336L\377\376\330;\377\376\320\10\377\202\375\317" \ -+ "\0\377\10\375\316\3\377\377\315\1\377\376\311\1\377\375\302\7\377\372" \ -+ "\276\5\377\365\277/\377\352\306x\321\346\324\270\13\213\346\323\264\0" \ -+ "\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\202\272\260\246" \ -+ "\0)\274\262\251\0\267\257\251&\211sV\365yW#\377}W\23\377\200S\4\377\203" \ -+ "R\0\377\214Z\0\377\223^\1\377\232c\0\377\243h\0\377\253m\1\377\257r\1" \ -+ "\377\267x\0\377\275|\0\377\303\202\1\377\312\207\0\377\316\213\0\377" \ -+ "\323\220\1\377\327\224\1\377\332\230\1\377\335\234\1\377\341\240\1\377" \ -+ "\345\244\0\377\350\251\0\377\353\254\0\377\357\260\0\377\362\261\1\377" \ -+ "\365\264\1\377\367\270\0\377\370\272\0\377\373\274\0\377\375\277\0\377" \ -+ "\362\263\0\377\344\240\0\377\374\275\0\377\377\304\0\377\376\306\0\377" \ -+ "\377\310\1\377\376\312\1\377\376\312\0\377\202\376\313\0\377\22\376\315" \ -+ "\5\377\376\321\32\377\376\330:\377\375\335O\377\376\337U\377\376\333" \ -+ "N\377\376\3265\377\375\316\4\377\375\315\0\377\377\314\0\377\377\313" \ -+ "\1\377\376\311\1\377\377\307\1\377\374\302\7\377\372\275\7\377\365\276" \ -+ "/\377\353\304q\337\346\321\253\40\213\346\320\250\0\377\377\377\377\0" \ -+ "\377\377\377\377\0\213\377\377\377\0\77\260\223^\0\260\223]\0\265\233" \ -+ "o\14\247\223x\226\206oS\376{X%\377~W\23\377\177S\4\377\202S\0\377\212" \ -+ "Y\0\377\221\\\1\377\230a\0\377\240e\0\377\247k\0\377\254o\1\377\262t" \ -+ "\1\377\271z\0\377\277~\0\377\305\203\0\377\313\207\0\377\320\214\0\377" \ -+ "\323\221\0\377\327\224\0\377\331\227\0\377\335\234\1\377\341\241\2\377" \ -+ "\345\244\0\377\350\250\1\377\354\254\0\377\355\257\0\377\361\261\1\377" \ -+ "\364\262\1\377\365\266\0\377\367\271\0\377\372\273\1\377\362\263\1\377" \ -+ "\340\233\1\377\370\270\0\377\377\301\0\377\375\302\1\377\376\305\1\377" \ -+ "\376\307\0\377\376\310\0\377\376\311\1\377\376\312\0\377\376\313\0\377" \ -+ "\376\312\0\377\376\314\0\377\376\317\24\377\376\3231\377\375\326D\377" \ -+ "\376\322.\377\375\314\2\377\377\313\0\377\377\313\1\377\376\311\1\377" \ -+ "\376\307\0\377\376\305\0\377\375\301\4\377\371\274\11\377\364\274-\377" \ -+ "\352\302g\346\345\315\235*\213\345\314\232\0\377\377\377\377\0\377\377" \ -+ "\377\377\0\213\377\377\377\0/\261\224_\0\262\226b\0\255\2039\206\217" \ -+ "c\34\377\204mP\377{X&\377}U\23\377~R\3\377\203T\0\377\211V\1\377\217" \ -+ "[\0\377\226_\0\377\236c\0\377\244h\1\377\252m\0\377\257q\1\377\265v\1" \ -+ "\377\274{\1\377\301\200\0\377\307\205\1\377\314\211\0\377\317\215\0\377" \ -+ "\324\221\0\377\327\224\1\377\332\230\0\377\336\235\0\377\341\240\2\377" \ -+ "\345\244\0\377\351\247\0\377\353\253\1\377\356\256\0\377\361\260\1\377" \ -+ "\363\262\1\377\365\263\1\377\370\267\0\377\362\262\0\377\335\231\0\377" \ -+ "\363\262\0\377\375\277\1\377\376\277\0\377\376\301\0\377\375\303\0\377" \ -+ "\376\305\0\377\377\306\1\377\376\307\1\377\376\310\1\377\377\311\0\377" \ -+ "\202\376\312\0\377\16\376\313\1\377\376\315\26\377\376\316\32\377\376" \ -+ "\312\0\377\376\311\1\377\376\311\0\377\377\307\0\377\377\306\1\377\375" \ -+ "\303\0\377\373\300\3\377\367\274\14\377\363\273+\377\352\300d\356\347" \ -+ "\322\252:\213\347\321\244\0\377\377\377\377\0\377\377\377\377\0\213\377" \ -+ "\377\377\0-\234u8\0\234v<\17\234a\10\323\211]\32\377\177eG\377{V'\377" \ -+ "}T\24\377~Q\2\377\203S\0\377\210V\1\377\217Z\0\377\225_\0\377\234c\0" \ -+ "\377\242g\1\377\247j\1\377\254n\0\377\261r\1\377\270x\1\377\276}\0\377" \ -+ "\304\201\0\377\311\206\1\377\316\212\0\377\321\216\0\377\325\222\1\377" \ -+ "\330\225\1\377\333\231\0\377\337\234\1\377\343\240\2\377\346\244\0\377" \ -+ "\351\247\0\377\354\253\1\377\355\255\0\377\357\257\0\377\363\261\1\377" \ -+ "\366\263\1\377\362\260\1\377\334\227\0\377\355\254\0\377\372\274\0\377" \ -+ "\374\275\0\377\376\276\0\377\376\300\0\377\376\301\1\377\375\302\0\377" \ -+ "\376\305\0\377\202\376\306\1\377\22\376\307\0\377\377\310\0\377\375\310" \ -+ "\0\377\376\310\0\377\376\310\1\377\376\307\0\377\377\306\1\377\377\306" \ -+ "\0\377\376\306\1\377\376\305\0\377\376\302\0\377\374\277\2\377\366\274" \ -+ "\17\377\363\273,\377\351\276\\\375\347\316\235f\357\324\234\0\360\334" \ -+ "\260\0\211\360\334\262\0\377\377\377\377\0\377\377\377\377\0\213\377" \ -+ "\377\377\0""2\214_\34\0\214a\37\20\225d\27\317\262\200\36\377\261s\26" \ -+ "\377\217P\23\377\204Q\15\377}M\2\377\177N\0\377\210V\0\377\215Y\0\377" \ -+ "\223^\1\377\233b\0\377\241f\0\377\245i\0\377\253n\1\377\257r\1\377\265" \ -+ "u\1\377\273z\0\377\300~\0\377\307\203\0\377\313\206\0\377\316\212\0\377" \ -+ "\321\216\1\377\326\221\1\377\330\225\1\377\333\231\1\377\337\235\1\377" \ -+ "\343\240\1\377\345\243\0\377\351\246\1\377\353\252\0\377\355\254\0\377" \ -+ "\357\256\0\377\361\261\1\377\361\260\1\377\332\225\0\377\351\246\0\377" \ -+ "\370\271\0\377\372\273\0\377\374\275\1\377\375\276\0\377\376\277\0\377" \ -+ "\375\300\0\377\376\301\0\377\375\302\0\377\376\304\0\377\376\305\1\377" \ -+ "\377\306\1\377\377\306\0\377\202\377\307\0\377\14\376\306\0\377\377\306" \ -+ "\1\377\376\305\1\377\376\304\1\377\375\303\0\377\376\301\0\377\374\276" \ -+ "\1\377\365\274\23\377\362\273.\377\352\275W\377\354\310\177\342\361\324" \ -+ "\225I\212\361\336\263\0\377\377\377\377\0\377\377\377\377\0\213\377\377" \ -+ "\377\0\"\261\220a\0\244\202Q\17\221n3\322\251y\31\377\327\214\0\377\265" \ -+ "\\\0\377\220>\0\377\205C\0\377\201I\0\377\210U\1\377\216Y\0\377\224]" \ -+ "\1\377\232a\0\377\240e\0\377\245g\0\377\252l\1\377\256p\0\377\262s\1" \ -+ "\377\271x\1\377\276|\0\377\304\201\0\377\310\204\1\377\314\210\1\377" \ -+ "\317\212\0\377\323\217\1\377\327\223\1\377\332\227\0\377\334\231\0\377" \ -+ "\340\235\1\377\343\240\1\377\346\243\1\377\351\246\0\377\353\251\1\377" \ -+ "\355\254\1\377\202\357\256\0\377\14\331\224\0\377\345\241\1\377\366\265" \ -+ "\1\377\367\270\0\377\372\273\0\377\373\274\0\377\374\275\0\377\376\276" \ -+ "\0\377\376\277\0\377\376\300\0\377\376\301\0\377\376\302\0\377\202\376" \ -+ "\303\0\377\4\375\305\0\377\376\305\0\377\376\304\1\377\376\304\0\377" \ -+ "\202\375\302\0\377\12\376\301\1\377\375\300\0\377\372\276\2\377\364\273" \ -+ "\30\377\360\2722\377\354\273L\377\372\307/\377\371\316_\350\361\335\261" \ -+ "\"\361\336\265\0\210\361\336\263\0\377\377\377\377\0\377\377\377\377" \ -+ "\0\213\377\377\377\0-\306\254\212\7\253\206Q\222\210lE\373yX+\377\215" \ -+ "b\30\377\262w\11\377\265b\1\377\276o\10\377\273w\7\377\225Z\0\377\213" \ -+ "T\0\377\221Z\0\377\232a\0\377\237d\1\377\243g\0\377\250j\1\377\254n\1" \ -+ "\377\261r\1\377\267x\1\377\274|\1\377\302\200\0\377\307\204\0\377\313" \ -+ "\207\1\377\316\212\0\377\321\216\1\377\326\221\1\377\331\224\1\377\333" \ -+ "\227\1\377\335\232\0\377\340\236\1\377\343\241\1\377\345\243\0\377\350" \ -+ "\246\0\377\353\251\2\377\354\253\1\377\356\255\1\377\330\223\1\377\340" \ -+ "\235\0\377\365\263\1\377\366\264\1\377\367\267\0\377\371\272\0\377\373" \ -+ "\273\1\377\374\275\1\377\375\276\0\377\203\376\277\0\377\2\376\301\0" \ -+ "\377\375\301\0\377\202\375\302\0\377\17\376\301\0\377\376\302\0\377\375" \ -+ "\301\0\377\376\300\1\377\376\300\0\377\375\301\0\377\372\276\0\377\364" \ -+ "\272\30\377\357\2728\377\362\271.\377\376\306\5\377\376\316\"\377\363" \ -+ "\336\252I\362\340\272\0\361\340\270\0\207\361\340\267\0\377\377\377\377" \ -+ "\0\377\377\377\377\0\213\377\377\377\0""0\275\230]\205\241{>\377\213" \ -+ "tX\377\177]/\377{T\30\377{S\23\377\251q\3\377\352\245\6\377\346\245\5" \ -+ "\377\305\204\0\377\261t\0\377\242f\0\377\232c\1\377\236d\0\377\242f\1" \ -+ "\377\246h\0\377\254m\0\377\262q\1\377\264s\0\377\270v\0\377\275{\1\377" \ -+ "\303\200\1\377\311\205\1\377\315\211\1\377\320\214\0\377\324\221\1\377" \ -+ "\327\223\0\377\331\226\1\377\334\230\0\377\336\233\1\377\341\237\2\377" \ -+ "\343\240\1\377\346\242\0\377\350\246\0\377\353\247\0\377\355\252\0\377" \ -+ "\330\222\0\377\334\230\0\377\361\261\0\377\365\262\1\377\367\263\0\377" \ -+ "\367\266\0\377\370\270\0\377\372\272\1\377\373\274\1\377\374\274\1\377" \ -+ "\375\275\0\377\376\276\1\377\202\376\277\1\377\21\377\277\0\377\376\277" \ -+ "\1\377\376\300\0\377\376\277\1\377\377\277\0\377\376\277\0\377\376\300" \ -+ "\1\377\375\277\0\377\371\275\0\377\363\271\30\377\355\2719\377\362\267" \ -+ "\"\377\375\266\0\377\375\273\2\377\356\333\251Q\357\335\264\0\362\335" \ -+ "\250\0\207\362\336\256\0\377\377\377\377\0\377\377\377\377\0\213\377" \ -+ "\377\377\0""0\262\2040\350\234q-\377\210e4\377\177^2\377\177X\31\377" \ -+ "|S\15\377\226^\1\377\306\205\0\377\331\231\0\377\340\237\1\377\347\247" \ -+ "\2\377\332\232\3\377\243g\0\377\234a\0\377\242e\1\377\237b\0\377\303" \ -+ "\205\1\377\343\243\1\377\333\232\0\377\325\225\1\377\317\216\0\377\315" \ -+ "\213\0\377\314\211\0\377\315\211\0\377\317\211\0\377\322\214\0\377\325" \ -+ "\217\0\377\331\224\1\377\332\226\0\377\333\231\0\377\337\235\0\377\342" \ -+ "\236\2\377\344\240\2\377\346\242\1\377\350\245\0\377\353\247\0\377\330" \ -+ "\221\0\377\331\223\1\377\357\256\0\377\361\261\0\377\364\262\0\377\366" \ -+ "\262\1\377\367\265\0\377\367\267\0\377\370\270\0\377\371\271\0\377\373" \ -+ "\272\0\377\374\274\0\377\202\374\275\0\377\203\375\276\0\377\17\375\277" \ -+ "\1\377\375\276\0\377\375\276\1\377\374\277\0\377\373\275\0\377\370\273" \ -+ "\0\377\363\271\33\377\355\267:\377\360\267+\377\376\266\0\377\374\264" \ -+ "\4\377\361\311f{\366\322p\0\365\336\247\0\364\337\253\0\206\364\337\251" \ -+ "\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0""2\261\201(" \ -+ "\333\251p\13\377\210Z\22\377}\\1\377\201[\"\377\201U\20\377\231b\1\377" \ -+ "\222]\1\377\243l\0\377\304\210\0\377\351\253\5\377\350\243\7\377\253" \ -+ "i\0\377\234a\0\377\240c\1\377\246j\1\377\350\254\0\377\374\277\0\377" \ -+ "\373\277\0\377\374\301\1\377\373\277\0\377\373\276\0\377\370\273\0\377" \ -+ "\364\267\0\377\362\264\1\377\361\263\6\377\352\255\24\377\332\225\0\377" \ -+ "\331\223\1\377\333\226\1\377\334\231\0\377\337\234\1\377\342\235\1\377" \ -+ "\343\240\1\377\346\242\0\377\350\245\0\377\327\220\1\377\325\216\1\377" \ -+ "\356\253\0\377\360\256\0\377\362\260\1\377\364\261\0\377\366\261\0\377" \ -+ "\367\263\0\377\370\265\0\377\370\267\0\377\370\270\0\377\371\272\0\377" \ -+ "\372\273\0\377\373\273\0\377\202\374\274\0\377\21\374\275\0\377\374\275" \ -+ "\1\377\374\274\0\377\372\274\0\377\373\275\0\377\371\274\0\377\367\273" \ -+ "\1\377\363\270\33\377\356\2673\377\360\2724\377\376\276\4\377\373\272" \ -+ "\5\377\363\275A\365\372\314Mv\364\335\243\2\363\341\271\0\364\340\260" \ -+ "\0\205\364\340\256\0\377\377\377\377\0\377\377\377\377\0\213\377\377" \ -+ "\377\0""4\262\225_n\264w\0\377\251m\0\377\206W\27\377\177V%\377\202W" \ -+ "\25\377\227`\2\377\213Z\10\377\202Q\3\377\220Y\0\377\315\211\0\377\340" \ -+ "\227\0\377\265q\0\377\245e\1\377\241b\0\377\253o\0\377\330\233\0\377" \ -+ "\347\252\1\377\361\264\0\377\371\275\1\377\375\302\1\377\377\305\0\377" \ -+ "\377\307\0\377\377\312\0\377\377\313\0\377\377\330,\377\376\325A\377" \ -+ "\344\233\0\377\330\220\0\377\332\224\0\377\333\226\1\377\335\231\0\377" \ -+ "\337\232\0\377\342\234\2\377\343\237\1\377\346\242\1\377\326\216\1\377" \ -+ "\322\212\0\377\353\250\1\377\356\254\0\377\357\255\0\377\361\257\1\377" \ -+ "\362\261\1\377\364\261\0\377\367\262\1\377\367\264\0\377\370\264\1\377" \ -+ "\370\266\0\377\370\267\0\377\370\272\0\377\371\271\1\377\372\272\1\377" \ -+ "\202\372\272\0\377\20\371\272\1\377\370\271\0\377\370\272\0\377\366\271" \ -+ "\0\377\365\270\2\377\363\267\23\377\364\271\20\377\366\274\36\377\373" \ -+ "\303\40\377\375\277\4\377\363\300R\377\371\306K\376\371\320S\201\370" \ -+ "\326i\0\367\332\205\0\366\333\221\0\204\366\332\217\0\377\377\377\377" \ -+ "\0\377\377\377\377\0\213\377\377\377\0""2\270\253\233\4\253\206A\217" \ -+ "\302\201\1\377\277z\0\377\236c\13\377\210T\22\377\230\\\3\377\221Y\11" \ -+ "\377\207T\6\377\214W\0\377\304\177\0\377\336\226\1\377\303\200\1\377" \ -+ "\272x\0\377\262q\0\377\236d\0\377\240e\0\377\256o\0\377\271z\1\377\305" \ -+ "\206\1\377\322\222\0\377\336\240\1\377\351\252\0\377\361\264\0\377\367" \ -+ "\274\1\377\376\3249\377\375\310\36\377\345\230\0\377\331\215\0\377\332" \ -+ "\221\0\377\333\224\1\377\335\227\0\377\336\231\0\377\340\232\0\377\342" \ -+ "\234\1\377\345\237\1\377\325\214\1\377\320\206\2\377\350\245\0\377\355" \ -+ "\251\0\377\355\254\1\377\356\254\0\377\360\255\0\377\360\257\1\377\363" \ -+ "\260\1\377\365\261\1\377\367\261\0\377\367\262\0\377\370\264\0\377\370" \ -+ "\265\0\377\203\367\267\0\377\202\370\267\0\377\17\367\267\1\377\367\267" \ -+ "\0\377\367\270\0\377\366\270\0\377\367\272\10\377\374\276\1\377\375\300" \ -+ "\1\377\375\304\26\377\376\306&\377\374\305:\377\374\311S\377\374\307" \ -+ "7\377\375\312\33n\371\326d\0\367\326w\0\204\367\325t\0\365\377\377\377" \ -+ "\0\331\0\0\0\0\2\251\207\0""0\251\207\0`\203\251\207\0\200\2\251\207" \ -+ "\0`\251\207\0""0\264\0\0\0\0G\270\250\224\0\260\236\211\2\256\212Od\301" \ -+ "\210\22\337\325\220\0\377\310\204\0\377\302~\0\377\264s\2\377\234^\1" \ -+ "\377\226X\1\377\304~\1\377\333\226\1\377\320\215\1\377\313\210\1\377" \ -+ "\277|\0\377\240f\0\377\235d\1\377\243f\0\377\246h\1\377\250j\0\377\254" \ -+ "l\1\377\262q\0\377\272w\0\377\303}\1\377\312\204\0\377\351\242\3\377" \ -+ "\374\265\0\377\346\233\1\377\332\217\0\377\332\221\0\377\334\223\1\377" \ -+ "\335\226\1\377\336\230\0\377\340\231\0\377\342\233\0\377\343\234\0\377" \ -+ "\325\213\0\377\316\203\1\377\346\241\0\377\352\246\0\377\354\250\1\377" \ -+ "\356\252\0\377\357\252\0\377\357\253\0\377\361\255\0\377\362\257\1\377" \ -+ "\363\260\1\377\364\260\0\377\367\260\0\377\367\262\0\377\370\263\0\377" \ -+ "\370\264\0\377\370\265\0\377\370\266\0\377\371\267\0\377\371\270\1\377" \ -+ "\373\273\0\377\374\276\0\377\375\300\0\377\375\301\6\377\375\304\5\377" \ -+ "\376\307\0\377\377\307\0\377\376\312\31\377\376\314*\377\376\3124\377" \ -+ "\375\307E\377\375\310*\372\372\324VR\367\330\200\0\367\326w\0\203\367" \ -+ "\326x\0\377\0\0\0\0\234\0\0\0\0\1\251\207\0\20\204\251\207\0@\203\251" \ -+ "\207\0\200\4\251\207\0\257\251\207\0\277\251\207\0\317\251\207\0@\245" \ -+ "\0\0\0\0\2\251\207\0\200\251\207\0\357\207\251\207\0\377\2\251\207\0" \ -+ "\357\251\207\0\200\262\0\0\0\0=\270\250\223\0\260\234\202\0\257\226|" \ -+ "\0\246\203I(\257\201)\223\316\222\10\356\343\240\0\377\344\240\0\377" \ -+ "\334\227\0\377\320\213\1\377\331\226\1\377\335\235\1\377\332\230\1\377" \ -+ "\327\224\0\377\311\205\0\377\242d\0\377\237b\1\377\245e\0\377\247g\0" \ -+ "\377\252k\1\377\255n\1\377\262p\0\377\266t\1\377\274w\0\377\301z\1\377" \ -+ "\341\230\0\377\374\266\0\377\355\247\0\377\345\235\0\377\343\235\0\377" \ -+ "\343\237\0\377\344\237\0\377\345\240\0\377\346\241\0\377\350\243\0\377" \ -+ "\352\244\0\377\333\222\0\377\317\202\1\377\346\237\0\377\352\244\0\377" \ -+ "\353\246\1\377\354\250\1\377\356\251\0\377\357\253\0\377\362\254\0\377" \ -+ "\362\256\0\377\364\260\0\377\366\261\0\377\367\262\0\377\371\265\0\377" \ -+ "\372\266\0\377\372\271\0\377\374\273\0\377\375\276\0\377\376\301\0\377" \ -+ "\376\303\0\377\376\306\2\377\376\307\2\377\376\311\0\377\376\312\2\377" \ -+ "\375\311\13\377\202\376\315\0\377\10\376\315\12\377\376\315\34\377\376" \ -+ "\314$\377\376\3121\377\376\3107\377\375\314\"\341\370\325d)\367\327}" \ -+ "\0\203\367\326x\0\377\0\0\0\0\227\0\0\0\0\1\251\207\0\277\217\251\207" \ -+ "\0\377\1\251\207\0@\244\0\0\0\0\1\251\207\0\237\213\251\207\0\377\1\251" \ -+ "\207\0\237\261\0\0\0\0\20\270\250\223\0\260\234\202\0\257\225v\0\250" \ -+ "\204L\0\240|B\0\251~8*\270\2112\203\313\223\26\327\340\240\3\375\361" \ -+ "\255\0\377\364\260\0\377\355\255\0\377\347\246\1\377\343\241\1\377\330" \ -+ "\226\0\377\263n\0\377\202\250`\0\377'\250b\0\377\250e\1\377\255i\1\377" \ -+ "\261l\0\377\266o\1\377\273u\1\377\302z\0\377\342\227\0\377\375\271\0" \ -+ "\377\367\264\4\377\362\256\2\377\362\256\3\377\361\257\2\377\362\257" \ -+ "\2\377\362\257\1\377\362\257\0\377\364\260\0\377\366\263\0\377\352\244" \ -+ "\0\377\326\212\0\377\354\247\0\377\362\256\0\377\363\256\0\377\364\260" \ -+ "\0\377\366\260\0\377\370\263\0\377\371\265\0\377\372\267\0\377\373\271" \ -+ "\0\377\375\275\4\377\375\300\10\377\376\304\22\377\376\311!\377\376\315" \ -+ "/\377\376\3205\377\376\315\"\377\376\313\4\377\376\314\0\377\376\315" \ -+ "\1\377\202\376\317\0\377\15\376\320\0\377\375\315\13\377\376\317\10\377" \ -+ "\376\320\0\377\376\316\3\377\376\316\15\377\376\315\30\377\376\313!\377" \ -+ "\377\312/\377\377\311(\377\375\316\35\267\371\331m\14\367\332\206\0\202" \ -+ "\367\332\203\0\377\0\0\0\0\212\0\0\0\0\2\251\207\0""0\251\207\0\40\213" \ -+ "\0\0\0\0\1\251\207\0\277\217\251\207\0\377\1\251\207\0@\243\0\0\0\0\1" \ -+ "\251\207\0`\215\251\207\0\377\1\251\207\0`\260\0\0\0\0""8\270\250\223" \ -+ "\0\260\234\202\0\257\225v\0\250\204K\0\243}=\0\252\177;\0\263\213I\0" \ -+ "\266\227n\21\256\203\77Z\273\214-\241\321\230\24\327\350\246\0\377\367" \ -+ "\263\0\377\366\265\0\377\357\256\1\377\351\246\0\377\337\232\1\377\326" \ -+ "\217\0\377\314\204\1\377\304|\0\377\277v\0\377\273r\1\377\274o\2\377" \ -+ "\274p\1\377\303v\1\377\342\225\0\377\375\277\26\377\376\305&\377\374" \ -+ "\303&\377\374\304/\377\375\3040\377\374\3061\377\375\3061\377\374\306" \ -+ "/\377\375\307-\377\376\3133\377\372\303*\377\345\234\5\377\363\263\10" \ -+ "\377\375\303\26\377\375\305\32\377\376\310\40\377\376\312#\377\376\314" \ -+ "*\377\376\3171\377\376\3228\377\376\325B\377\376\330M\377\376\332V\377" \ -+ "\376\334[\377\376\336^\377\376\337[\377\376\337Z\377\375\336Y\377\376" \ -+ "\3318\377\376\322\3\377\202\376\323\1\377\20\376\324\0\377\376\325\0" \ -+ "\377\376\323\2\377\376\317\21\377\376\320\4\377\376\320\0\377\375\316" \ -+ "\1\377\376\315\7\377\376\314\25\377\376\313\36\377\376\311(\377\376\311" \ -+ "\33\377\374\324A\205\367\334\214\0\367\333\205\0\367\333\204\0\354\0" \ -+ "\0\0\0\2\251\207\0\20\251\207\0@\231\0\0\0\0\4\251\207\0\40\251\207\0" \ -+ "\237\251\207\0\377\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207" \ -+ "\0\377\1\251\207\0@\243\0\0\0\0\1\251\207\0\317\215\251\207\0\377\1\251" \ -+ "\207\0\317\260\0\0\0\0J\270\250\223\0\260\234\202\0\257\225v\0\250\204" \ -+ "K\0\243}=\0\252\177:\0\264\213G\0\267\227g\0\261\215]\0\252\215j\0\253" \ -+ "\204J\37\275\225UV\314\227'\252\345\245\4\375\373\272\0\377\377\300\0" \ -+ "\377\374\275\0\377\374\274\0\377\373\274\0\377\367\270\0\377\364\263" \ -+ "\0\377\360\255\0\377\353\246\0\377\345\236\0\377\343\232\0\377\361\256" \ -+ "\12\377\376\312\"\377\376\314/\377\376\317A\377\376\321I\377\377\322" \ -+ "O\377\376\325S\377\376\326W\377\376\327Y\377\376\331Z\377\376\333a\377" \ -+ "\377\336g\377\364\267\37\377\370\275$\377\377\337d\377\376\340g\377\376" \ -+ "\343m\377\376\344q\377\376\345r\377\376\346u\377\375\350v\377\376\347" \ -+ "s\377\376\350s\377\375\350u\377\375\350p\377\375\350m\377\376\347h\377" \ -+ "\376\344Z\377\376\340B\377\376\333$\377\376\326\3\377\376\327\0\377\376" \ -+ "\330\0\377\376\327\0\377\376\325\1\377\376\324\0\377\376\321\6\377\376" \ -+ "\316\20\377\376\317\4\377\376\316\0\377\375\315\0\377\376\314\5\377\375" \ -+ "\313\21\377\376\313\32\377\376\311\"\377\376\312\17\366\372\324OF\366" \ -+ "\333\206\0\366\335\226\0\352\0\0\0\0\4\251\207\0\20\251\207\0\200\251" \ -+ "\207\0\357\251\207\0\200\227\0\0\0\0\2\251\207\0\40\251\207\0\237\203" \ -+ "\251\207\0\377\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207\0" \ -+ "\377\1\251\207\0@\243\0\0\0\0\217\251\207\0\377\260\0\0\0\0\22\270\250" \ -+ "\223\0\260\234\202\0\257\225v\0\250\204K\0\243}=\0\252\177:\0\264\213" \ -+ "G\0\267\227g\0\261\214Y\0\254\215a\0\257\211P\0\272\234y\0\272\215B\2" \ -+ "\255\211\26\315\273\213\22\377\345\252\13\377\376\301\0\377\377\304\0" \ -+ "\377\202\377\301\0\377#\377\303\0\377\377\305\0\377\377\310\0\377\377" \ -+ "\312\0\377\377\312\1\377\377\313\3\377\376\313\2\377\376\314\16\377\376" \ -+ "\320%\377\375\3233\377\376\326@\377\376\331I\377\376\332Q\377\376\334" \ -+ "X\377\375\336\\\377\375\341b\377\376\347m\377\375\327K\377\374\300\30" \ -+ "\377\376\344h\377\376\350p\377\376\350n\377\376\350o\377\375\351q\377" \ -+ "\376\351r\377\375\351l\377\376\350f\377\376\347`\377\375\345X\377\376" \ -+ "\344H\377\376\3377\377\375\335!\377\375\332\16\377\376\327\1\377\376" \ -+ "\327\0\377\202\376\330\0\377\21\376\326\1\377\376\325\1\377\376\323\1" \ -+ "\377\377\323\1\377\376\322\0\377\376\317\10\377\375\315\20\377\375\317" \ -+ "\1\377\375\314\0\377\377\313\0\377\376\313\3\377\375\312\17\377\375\312" \ -+ "\27\377\375\311\23\377\375\313\20\323\366\332\200\32\364\337\242\0\350" \ -+ "\0\0\0\0\3\251\207\0\20\251\207\0\200\251\207\0\357\202\251\207\0\377" \ -+ "\1\251\207\0\200\225\0\0\0\0\2\251\207\0@\251\207\0\237\205\251\207\0" \ -+ "\377\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207\0\377\1\251" \ -+ "\207\0@\243\0\0\0\0\217\251\207\0\377\260\0\0\0\0\33\270\250\223\0\260" \ -+ "\234\202\0\257\225v\0\250\204K\0\243}=\0\252\177:\0\264\213G\0\267\227" \ -+ "g\0\261\214Y\0\254\215a\0\257\211N\0\273\233s\0\275\217\77\0\251\207" \ -+ "\0\277\251\207\0\377\254\206\16\377\300\216\17\377\354\263\3\377\377" \ -+ "\307\0\377\377\305\0\377\375\301\0\377\375\303\0\377\376\306\1\377\377" \ -+ "\307\1\377\376\310\1\377\376\312\0\377\376\313\0\377\202\377\314\0\377" \ -+ "\30\375\315\0\377\375\317\6\377\376\320\14\377\376\321\23\377\376\323" \ -+ "\32\377\376\325#\377\376\330.\377\376\3328\377\376\336H\377\376\313\36" \ -+ "\377\376\3256\377\376\343X\377\376\337@\377\376\334,\377\376\333(\377" \ -+ "\375\333#\377\376\332\34\377\376\331\25\377\376\330\14\377\376\327\3" \ -+ "\377\376\326\0\377\375\325\3\377\376\327\3\377\375\327\1\377\202\376" \ -+ "\326\0\377\1\376\327\0\377\202\376\325\1\377\2\376\325\0\377\377\324" \ -+ "\0\377\202\376\322\1\377\14\376\320\0\377\376\315\11\377\376\314\16\377" \ -+ "\376\315\1\377\377\314\1\377\376\314\0\377\376\311\2\377\375\312\13\377" \ -+ "\375\310\23\377\376\307\3\377\373\3209\225\365\336\233\5\346\0\0\0\0" \ -+ "\3\251\207\0\40\251\207\0\217\251\207\0\357\204\251\207\0\377\1\251\207" \ -+ "\0\200\222\0\0\0\0\3\251\207\0\20\251\207\0`\251\207\0\317\207\251\207" \ -+ "\0\377\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207\0\377\1\251" \ -+ "\207\0@\243\0\0\0\0\1\251\207\0\357\215\251\207\0\377\1\251\207\0\357" \ -+ "\260\0\0\0\0\16\270\250\223\0\260\234\202\0\257\225v\0\250\204K\0\243" \ -+ "}=\0\252\177:\0\264\213G\0\267\227g\0\261\214Y\0\254\215a\0\257\211N" \ -+ "\0\273\233s\0\275\217\77\0\251\207\0\277\202\251\207\0\377\15\251\207" \ -+ "\1\377\257\213\27\377\312\230\17\377\370\277\2\377\377\312\0\377\377" \ -+ "\306\0\377\376\305\1\377\376\306\1\377\377\310\0\377\375\310\0\377\376" \ -+ "\312\1\377\376\313\0\377\377\313\0\377\202\376\314\0\377\202\375\315" \ -+ "\0\377)\375\316\0\377\376\317\0\377\376\320\1\377\376\322\16\377\375" \ -+ "\326(\377\375\3257\377\376\310\24\377\376\332C\377\376\331.\377\376\322" \ -+ "\0\377\376\323\0\377\375\323\0\377\376\323\0\377\376\325\0\377\376\325" \ -+ "\3\377\376\325\7\377\375\326\14\377\375\325\17\377\375\326\16\377\376" \ -+ "\325\11\377\376\325\4\377\376\325\2\377\376\325\1\377\376\324\1\377\376" \ -+ "\324\0\377\377\323\0\377\376\322\1\377\376\321\1\377\376\321\0\377\375" \ -+ "\317\0\377\376\316\0\377\376\314\11\377\375\314\5\377\377\314\0\377\376" \ -+ "\313\0\377\376\312\0\377\376\310\1\377\376\310\4\377\377\307\7\377\376" \ -+ "\310\4\370\366\320XV\344\0\0\0\0\2\251\207\0P\251\207\0\257\207\251\207" \ -+ "\0\377\1\251\207\0\200\220\0\0\0\0\2\251\207\0P\251\207\0\237\212\251" \ -+ "\207\0\377\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207\0\377" \ -+ "\1\251\207\0@\243\0\0\0\0\1\251\207\0\237\215\251\207\0\377\1\251\207" \ -+ "\0\237\260\0\0\0\0\16\270\250\223\0\260\234\202\0\257\225v\0\250\204" \ -+ "K\0\243}=\0\252\177:\0\264\213G\0\267\227g\0\261\214Y\0\254\215a\0\257" \ -+ "\211N\0\273\233s\0\275\217\77\0\251\207\0\277\204\251\207\0\377/\251" \ -+ "\207\1\377\266\215\26\377\337\250\14\377\376\307\0\377\377\313\1\377" \ -+ "\376\305\1\377\377\307\0\377\376\310\0\377\375\311\1\377\376\312\1\377" \ -+ "\376\312\0\377\376\313\1\377\377\314\3\377\376\314\1\377\375\315\1\377" \ -+ "\375\316\5\377\376\317\17\377\376\321\37\377\376\324,\377\376\323+\377" \ -+ "\376\327<\377\376\314$\377\375\316'\377\376\333I\377\376\324\31\377\376" \ -+ "\322\3\377\376\323\5\377\376\322\2\377\376\324\7\377\376\325\20\377\375" \ -+ "\325\22\377\375\325\23\377\376\324\23\377\376\324\20\377\376\324\16\377" \ -+ "\376\324\11\377\375\324\4\377\376\323\1\377\376\324\0\377\377\323\0\377" \ -+ "\376\323\1\377\376\322\1\377\376\320\1\377\376\320\0\377\375\317\0\377" \ -+ "\376\315\0\377\375\316\0\377\202\376\314\0\377\7\377\313\0\377\376\313" \ -+ "\2\377\376\311\1\377\376\312\0\377\377\310\0\377\376\305\3\377\360\307" \ -+ "Io\341\0\0\0\0\3\251\207\0""0\251\207\0\217\251\207\0\357\211\251\207" \ -+ "\0\377\1\251\207\0\200\214\0\0\0\0\4\251\207\0\20\251\207\0P\251\207" \ -+ "\0\237\251\207\0\357\214\251\207\0\377\1\251\207\0@\213\0\0\0\0\1\251" \ -+ "\207\0\277\217\251\207\0\377\1\251\207\0@\243\0\0\0\0\2\251\207\0\40" \ -+ "\251\207\0\357\213\251\207\0\377\2\251\207\0\357\251\207\0\40\260\0\0" \ -+ "\0\0\16\270\250\223\0\260\234\202\0\257\225v\0\250\204K\0\243}=\0\252" \ -+ "\177:\0\264\213G\0\267\227g\0\261\214Y\0\254\215a\0\257\211N\0\273\233" \ -+ "s\0\275\217\77\0\251\207\0\277\206\251\207\0\377\7\254\210\16\377\302" \ -+ "\224\30\377\365\276\0\377\377\314\0\377\377\307\1\377\376\306\1\377\376" \ -+ "\307\0\377\202\375\310\0\377\37\376\311\1\377\376\312\1\377\377\314\0" \ -+ "\377\377\314\1\377\376\314\2\377\375\316\13\377\376\317\27\377\375\321" \ -+ "!\377\376\321!\377\376\322!\377\376\3239\377\376\310\31\377\375\326\77" \ -+ "\377\375\330A\377\376\322\35\377\376\322\20\377\376\321\7\377\376\321" \ -+ "\5\377\375\323\23\377\376\324\25\377\376\324\24\377\377\322\26\377\375" \ -+ "\323\27\377\376\323\25\377\376\323\17\377\376\322\7\377\376\321\1\377" \ -+ "\376\322\1\377\376\321\1\377\375\321\0\377\376\321\0\377\202\375\317" \ -+ "\0\377\14\375\316\1\377\375\316\0\377\376\315\0\377\377\314\1\377\377" \ -+ "\315\0\377\377\314\0\377\377\314\2\377\377\311\0\377\374\306\4\377\363" \ -+ "\276\35\316\354\300Hj\352\321\221\15\336\0\0\0\0\3\251\207\0@\251\207" \ -+ "\0\217\251\207\0\337\214\251\207\0\377\1\251\207\0\200\214\0\0\0\0\1" \ -+ "\251\207\0\277\217\251\207\0\377\1\251\207\0@\213\0\0\0\0\1\251\207\0" \ -+ "\277\217\251\207\0\377\1\251\207\0@\244\0\0\0\0\2\251\207\0""0\251\207" \ -+ "\0\357\211\251\207\0\377\2\251\207\0\357\251\207\0""0\261\0\0\0\0\16" \ -+ "\270\250\223\0\260\234\202\0\257\225v\0\250\204K\0\243}=\0\252\177:\0" \ -+ "\264\213G\0\267\227g\0\261\214Y\0\254\215a\0\257\211N\0\273\233s\0\275" \ -+ "\217\77\0\251\207\0\277\207\251\207\0\377\3\251\207\1\377\262\211\21" \ -+ "\377\337\251\11\377\202\377\312\0\377\6\376\305\1\377\377\307\0\377\376" \ -+ "\307\0\377\376\310\0\377\375\310\1\377\376\311\1\377\202\376\313\0\377" \ -+ "\25\377\313\0\377\376\313\0\377\376\314\2\377\375\315\2\377\375\315\1" \ -+ "\377\375\321\"\377\376\315/\377\375\311\36\377\375\331H\377\376\330F" \ -+ "\377\376\327@\377\376\327<\377\376\3266\377\376\324&\377\376\321\13\377" \ -+ "\376\317\10\377\375\321\33\377\375\324,\377\376\323)\377\376\321\31\377" \ -+ "\376\317\5\377\202\376\320\0\377\5\376\317\0\377\375\317\0\377\376\315" \ -+ "\0\377\375\316\0\377\376\316\0\377\202\377\317\0\377\12\377\315\0\377" \ -+ "\377\314\0\377\374\311\3\377\370\303\14\361\362\276\34\320\353\274;\223" \ -+ "\346\276aK\352\2718\21\344\300m\0\352\322\224\0\335\0\0\0\0\1\251\207" \ -+ "\0\200\217\251\207\0\377\1\251\207\0\200\214\0\0\0\0\1\251\207\0\277" \ -+ "\217\251\207\0\377\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207" \ -+ "\0\377\1\251\207\0@\245\0\0\0\0\4\251\207\0\20\251\207\0p\251\207\0\257" \ -+ "\251\207\0\337\203\251\207\0\377\4\251\207\0\337\251\207\0\257\251\207" \ -+ "\0p\251\207\0\20\262\0\0\0\0\16\270\250\223\0\260\234\202\0\257\225v" \ -+ "\0\250\204K\0\243}=\0\252\177:\0\264\213G\0\267\227g\0\261\214Y\0\254" \ -+ "\215a\0\257\211N\0\273\233s\0\275\217\77\0\251\207\0\277\211\251\207" \ -+ "\0\377\15\252\207\14\377\305\224\22\377\370\302\0\377\377\314\0\377\377" \ -+ "\307\0\377\377\306\0\377\376\307\0\377\376\310\1\377\375\310\0\377\375" \ -+ "\311\1\377\376\311\1\377\377\312\0\377\376\313\0\377\202\377\313\0\377" \ -+ "\23\376\314\0\377\376\315\0\377\376\316\33\377\375\307\33\377\375\326" \ -+ "C\377\376\331J\377\376\332O\377\376\333R\377\376\334U\377\376\334P\377" \ -+ "\376\3308\377\376\324%\377\376\324+\377\376\3257\377\376\3255\377\376" \ -+ "\322(\377\376\321\26\377\376\320\17\377\377\317\5\377\202\377\320\0\377" \ -+ "\17\377\320\3\377\377\320\7\377\376\312\1\377\372\305\4\377\364\300\22" \ -+ "\350\356\274&\311\346\2664\242\342\263:h\335\260W4\341\266Y\10\350\272" \ -+ "A\0\342\276r\0\353\2724\0\345\300g\0\352\322\223\0\335\0\0\0\0\1\251" \ -+ "\207\0\200\217\251\207\0\377\1\251\207\0\200\214\0\0\0\0\1\251\207\0" \ -+ "\277\217\251\207\0\377\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251" \ -+ "\207\0\377\1\251\207\0@\342\0\0\0\0\16\270\250\223\0\260\234\202\0\257" \ -+ "\225v\0\250\204K\0\243}=\0\252\177:\0\264\213G\0\267\227g\0\261\214Y" \ -+ "\0\254\215a\0\257\211N\0\273\233s\0\275\217\77\0\251\207\0\277\212\251" \ -+ "\207\0\377\6\251\207\3\377\266\214\26\377\352\262\3\377\377\313\0\377" \ -+ "\377\311\1\377\377\306\1\377\202\377\307\0\377*\376\307\0\377\375\307" \ -+ "\1\377\375\311\1\377\376\311\1\377\376\311\0\377\376\312\0\377\376\313" \ -+ "\1\377\376\313\0\377\377\312\0\377\376\315&\377\376\325B\377\376\332" \ -+ "T\377\376\335\\\377\376\336`\377\375\341b\377\377\341d\377\377\342g\377" \ -+ "\377\341c\377\377\336Y\377\377\335P\377\377\334F\377\377\332=\377\377" \ -+ "\3275\377\377\323.\377\375\316$\377\370\307\40\377\357\277)\377\340\263" \ -+ "+\377\333\2563\313\340\265N\201\333\264aU\335\261S0\330\261c\24\324\257" \ -+ "v\0\337\264N\0\336\261Q\0\342\267W\0\351\272\77\0\343\276o\0\353\272" \ -+ "4\0\345\300g\0\352\322\223\0\335\0\0\0\0\1\251\207\0\200\217\251\207" \ -+ "\0\377\1\251\207\0\200\214\0\0\0\0\1\251\207\0\277\217\251\207\0\377" \ -+ "\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207\0\377\1\251\207" \ -+ "\0@\342\0\0\0\0\16\270\250\223\0\260\234\202\0\257\225v\0\250\204K\0" \ -+ "\243}=\0\252\177:\0\264\213G\0\267\227g\0\261\214Y\0\254\215a\0\257\211" \ -+ "N\0\273\233s\0\275\217\77\0\251\207\0\277\214\251\207\0\377\6\257\213" \ -+ "\31\377\327\242\17\377\374\307\0\377\377\314\0\377\377\313\1\377\377" \ -+ "\310\0\377\202\377\307\0\377\1\376\311\0\377\202\377\312\0\377\7\377" \ -+ "\313\3\377\377\315\1\377\377\316\11\377\377\321\36\377\377\323%\377\377" \ -+ "\333N\377\377\337\\\377\202\377\337Y\377\34\377\334V\377\375\331N\377" \ -+ "\374\330P\377\372\324L\377\365\314G\377\355\302>\377\346\273:\377\334" \ -+ "\263:\377\321\2504\377\307\234#\377\274\225\40\377\265\221\34\377\257" \ -+ "\213\15\377\253\211\5\377\252\210\1\260\324\257p\0\323\265\206\0\336" \ -+ "\265]\0\333\262Y\0\326\260o\0\337\264L\0\336\261Q\0\342\267W\0\351\272" \ -+ "\77\0\343\276o\0\353\2724\0\345\300g\0\352\322\223\0\335\0\0\0\0\1\251" \ -+ "\207\0\200\217\251\207\0\377\1\251\207\0\200\214\0\0\0\0\1\251\207\0" \ -+ "\277\217\251\207\0\377\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251" \ -+ "\207\0\377\1\251\207\0@\342\0\0\0\0\16\270\250\223\0\260\234\202\0\257" \ -+ "\225v\0\250\204K\0\243}=\0\252\177:\0\264\213G\0\267\227g\0\261\214Y" \ -+ "\0\254\215a\0\257\211N\0\273\233s\0\275\217\77\0\251\207\0\277\215\251" \ -+ "\207\0\377\33\254\211\11\377\277\222\30\377\336\250\16\377\363\275\7" \ -+ "\377\374\305\6\377\377\311\10\377\377\312\7\377\377\310\5\377\375\310" \ -+ "\10\377\376\312\22\377\373\307\23\377\372\313!\377\370\310+\377\363\302" \ -+ "+\377\361\3022\367\357\301B\361\352\275B\341\335\2606\377\324\246-\377" \ -+ "\316\2441\377\310\2423\377\277\225\37\377\273\225\37\377\270\223\33\377" \ -+ "\261\214\17\377\256\213\14\377\252\211\5\377\206\251\207\0\377\16\251" \ -+ "\207\0\357\326\260j\0\325\265\200\0\336\265[\0\333\262Y\0\326\260o\0" \ -+ "\337\264L\0\336\261Q\0\342\267W\0\351\272\77\0\343\276o\0\353\2724\0" \ -+ "\345\300g\0\352\322\223\0\335\0\0\0\0\1\251\207\0\200\217\251\207\0\377" \ -+ "\1\251\207\0\200\214\0\0\0\0\1\251\207\0\277\217\251\207\0\377\1\251" \ -+ "\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207\0\377\1\251\207\0@\342" \ -+ "\0\0\0\0\16\270\250\223\0\260\234\202\0\257\225v\0\250\204K\0\243}=\0" \ -+ "\252\177:\0\264\213G\0\267\227g\0\261\214Y\0\254\215a\0\257\211N\0\273" \ -+ "\233s\0\275\217\77\0\251\207\0\277\217\251\207\0\377\21\254\207\11\377" \ -+ "\263\213#\332\312\232<\234\322\2371\267\330\2464\266\333\254B\270\330" \ -+ "\253H\247\316\2339\207\323\250S\212\313\227 +# + +# wrapper to call pactl as truser +pactl() +{ + /bin/su - truser -c "/usr/bin/pactl ${1} ${2} ${3}" +} + +# get the volume and return the volume in % +pa_get_sink_volume() +{ + VOLUME=$(pactl get-sink-volume @DEFAULT_SINK@ | grep -o '[0-9]\+%' | head -n1 | tr -d %) +} + +# get the volume and return the volume in % +pa_get_source_volume() +{ + VOLUME=$(pactl get-source-volume @DEFAULT_SOURCE@ | grep -o '[0-9]\+%' | head -n1 | tr -d %) +} + +# get the mute mode of the output sink +pa_get_sink_mute() +{ + MUTE=$(pactl get-sink-mute @DEFAULT_SINK@ | awk '{print ($2=="yes")?1:0}') +} + +# get the mute mode of the input source +pa_get_source_mute() +{ + MUTE=$(pactl get-source-mute @DEFAULT_SOURCE@ | awk '{print ($2=="yes")?1:0}') +} + +# function to optionally output the current +# speaker volume or source input in percentage +osd_notify() +{ + if [ -x /usr/bin/osd_cat ]; then + if [ "${MUTE}" == "1" ]; then + VOLUME="0" + MUTETEXT=" (mute)" + else + MUTETEXT="" + fi + + if [ "${TARGET}" == "speaker" ]; then + COLOR=green + TEXT="VOL:" + elif [ "${TARGET}" == "mic" ]; then + COLOR=orange + TEXT="MIC:" + fi + + # kill previous osd_cat + pkill /usr/bin/osd_cat + export LANG=en_US.UTF-8 + export DISPLAY=:0 + /usr/bin/osd_cat -A center -p bottom -f '-*-fixed-bold-r-*-*-30-*-*-*-*-*-*-*' -c "${COLOR}" -s 5 -d 3 --barmode=percentage -P "${VOLUME}" -T "${TEXT} ${VOLUME}%${MUTETEXT}" & + fi +} + +############################################ +# main starts here + +TARGET=${1} +CMD=${2} + +if [ "${TARGET}" == "speaker" ]; then + if [ "${CMD}" == "toggle" ]; then + pactl set-sink-mute @DEFAULT_SINK@ "${CMD}" + else + pactl set-sink-volume @DEFAULT_SINK@ "${CMD}" + pactl set-sink-mute @DEFAULT_SINK@ 0 + fi + pa_get_sink_volume + pa_get_sink_mute +elif [ "${TARGET}" == "mic" ]; then + if [ "${CMD}" == "toggle" ]; then + pactl set-source-mute @DEFAULT_SOURCE@ "${CMD}" + else + pactl set-source-volume @DEFAULT_SOURCE@ "${CMD}" + pactl set-source-mute @DEFAULT_SOURCE@ 0 + fi + pa_get_source_volume + pa_get_source_mute +fi + +osd_notify + +exit 0 diff --git a/buildroot-external/rootfs-overlay/bin/qutselect-disconnect.sh b/buildroot-external/rootfs-overlay/bin/qutselect-disconnect.sh index f83e94e..18c761c 100755 --- a/buildroot-external/rootfs-overlay/bin/qutselect-disconnect.sh +++ b/buildroot-external/rootfs-overlay/bin/qutselect-disconnect.sh @@ -2,4 +2,4 @@ # # kill all qutselect related sessions and return to the qutselect GUI # -pkill "tlclient.bin|xfreerdp|rdesktop|vncviewer" +pkill "tlclient.bin|xfreerdp|rdesktop|vncviewer|remote-viewer|chrome|zoom" diff --git a/buildroot-external/rootfs-overlay/bin/qutselect-lock.sh b/buildroot-external/rootfs-overlay/bin/qutselect-lock.sh index 45fc250..803ec6f 100755 --- a/buildroot-external/rootfs-overlay/bin/qutselect-lock.sh +++ b/buildroot-external/rootfs-overlay/bin/qutselect-lock.sh @@ -12,7 +12,7 @@ if /usr/bin/pgrep "tlclient.bin" >/dev/null 2>&1; then else # otherwise we check for xfreerdp or rdesktop and then use Windows+L to lock # the windows session - if /usr/bin/pgrep "xfreerdp|rdesktop|vncviewer" >/dev/null 2>&1; then + if /usr/bin/pgrep "xfreerdp|rdesktop|vncviewer|remote-viewer" >/dev/null 2>&1; then /bin/su - truser -c "DISPLAY=:0.0 /usr/bin/xdotool keydown Super_L key l keyup Super_L" & else # bring the system into standby mode diff --git a/buildroot-external/rootfs-overlay/bin/scripts/qutselect_connect_rdp.sh b/buildroot-external/rootfs-overlay/bin/scripts/qutselect_connect_rdp.sh deleted file mode 100755 index f908bcd..0000000 --- a/buildroot-external/rootfs-overlay/bin/scripts/qutselect_connect_rdp.sh +++ /dev/null @@ -1,204 +0,0 @@ -#!/bin/sh -# shellcheck shell=dash disable=SC2169 -# -# This is a startup script for qutselect which initates a -# RDP session to a windows server either via rdesktop or uttsc -# -# It receives the following inputs: -# -# $1 = PID of qutselect -# $2 = serverType (SRSS, RDP, VNC) -# $3 = 'true' if dtlogin mode was on while qutselect was running -# $4 = the resolution (either 'fullscreen' or 'WxH') -# $5 = the selected color depth (8, 16, 24) -# $6 = the current max. color depth (8, 16, 24) -# $7 = the selected keylayout (e.g. 'de' or 'en') -# $8 = the domain (e.g. 'FZR', used for RDP) -# $9 = the username -# $10 = the servername (hostname) to connect to -# - -XFREERDP=/usr/bin/xfreerdp -TLSSOPASSWORD=/opt/thinlinc/bin/tl-sso-password -TLBESTWINSERVER=/opt/thinlinc/bin/tl-best-winserver - -##################################################### -# check that we have 10 command-line options at hand -if [ $# -lt 10 ]; then - echo "ERROR: missing arguments!" - exit 2 -fi - -# catch all arguments is some local variables -#parentPID="${1}" -#serverType="${2}" -dtlogin="${3}" -resolution="${4}" -#colorDepth="${5}" -#curDepth="${6}" -keyLayout="${7}" -domain="${8}" -username="${9}" -serverName="${10}" - -# if this is a ThinLinc session we can grab the password -# using the tl-sso-password command in case the user wants -# to connect to one of our servers (FZR domain) -if [ -x ${TLSSOPASSWORD} ]; then - if ${TLSSOPASSWORD} -c && [ "${domain}" = "FZR" ]; then - password=$(${TLSSOPASSWORD}) - fi -fi - -# read the password from stdin if not specified yet -if [ -z "${password}" ]; then - read -r password -fi - -# if the serverName contains more than one server we go and -# check via the check_nrpe command which server to prefer -serverList=$(echo "${serverName}" | tr -s ',' ' ') -numServers=$(echo "${serverList}" | wc -w) -if [ "${numServers}" -gt 1 ]; then - # check if we can find a suitable binary - if [ -x ${TLBESTWINSERVER} ]; then - bestServer=$(${TLBESTWINSERVER} "${serverList}") - res=$? - else - # as an alternative we search for the tool in the scripts subdir - # this tool also allows to override the username via -u - if [ -x "scripts/tl-best-winserver" ]; then - bestServer=$(scripts/tl-best-winserver -u "${username}" "${serverList}") - res=$? - else - # we don't have tl-best-winserver so lets simply take the first - # one in the list - bestServer=$(echo "${serverList}" | awk '{ print $1 }') - res=0 - fi - fi - if [ $res -eq 0 ]; then - serverName=${bestServer} - fi -fi - -# variable to prepare the command arguments -cmdArgs="" -RET=2 - -## XFREERDP -# if $cmdArgs is empty and xfreerdp exists use that one -if [ -z "${cmdArgs}" ] && [ -x ${XFREERDP} ]; then - - # resolution - if [ "${resolution}" = "fullscreen" ]; then - cmdArgs="$cmdArgs /f" - - # enable multi monitor support, but only if the two displays - # are not mirrored (offset = 0) - for r in $(xrandr | grep " connected" | cut -d " " -f3); do - x=$(echo "${r}" | cut -d "+" -f2) - - # check the x-offset for being non-zero and if so - # enable multimon support - if [ "${x}" -ne 0 ]; then - cmdArgs="$cmdArgs /multimon" - break - fi - done - - else - cmdArgs="$cmdArgs /size:${resolution}" - fi - - # color depth - #cmdArgs="$cmdArgs /bpp:${colorDepth}" - cmdArgs="$cmdArgs /bpp:32" - - # keyboard - if [ "${keyLayout}" = "de" ]; then - cmdArgs="$cmdArgs /kbd:0x407" # German - else - cmdArgs="$cmdArgs /kbd:0x409" # US - fi - - # add domain - if [ "x${domain}" != "xNULL" ]; then - cmdArgs="$cmdArgs /d:${domain}" - else - cmdArgs="$cmdArgs /d:FZR" - fi - - # add username - if [ "x${username}" != "xNULL" ]; then - cmdArgs="$cmdArgs /u:${username}" - else - if [ "x${domain}" != "xNULL" ]; then - cmdArgs="$cmdArgs /u:${domain}\\" - fi - fi - - # set the window title to the server name we connect to - cmdArgs="$cmdArgs /t:${username}@${serverName}" - - # ignore the certificate in case of encryption - cmdArgs="$cmdArgs /cert-ignore" - - # add the usb path as a local path. if TLSESSIONDATA is set - # we are in a thinlinc session and thus have to forward - # ${HOME}/thindrives/mnt instead - if [ -n "${TLSESSIONDATA}" ]; then - mkdir -p "${TLSESSIONDATA}/drives" - cmdArgs="$cmdArgs /drive:USB,${TLSESSIONDATA}/drives/" - else - if [ -n "${SUN_SUNRAY_TOKEN}" ]; then - cmdArgs="$cmdArgs /drive:USB,/tmp/SUNWut/mnt/${USER}/" - else - cmdArgs="$cmdArgs /drive:USB,/run/usbmount/" - fi - fi - - # enable sound redirection - cmdArgs="$cmdArgs /sound:sys:pulse" - - # enable audio input redirection - cmdArgs="$cmdArgs /microphone:sys:pulse" - - # performance optimization options - cmdArgs="$cmdArgs +auto-reconnect +fonts +window-drag -menu-anims -themes +wallpaper +heartbeat /dynamic-resolution /gdi:hw /rfx /gfx:avc444 +gfx-thin-client /video /network:lan" - - # if we are not in dtlogin mode we go and - # output the rdesktop line that is to be executed - if [ "x${dtlogin}" != "xtrue" ]; then - - # add clipboard synchronization (only required in non-dtlogin mode) - cmdArgs="$cmdArgs /clipboard" - - echo "${XFREERDP} ${cmdArgs} /v:${serverName}" - else - # disable the full-screen toggling and floatbar in case we are in dtlogin mode - cmdArgs="$cmdArgs -toggle-fullscreen" - fi - - # increase logging - cmdArgs="$cmdArgs /log-level:INFO" - - # run xfreerdp finally - if [ "x${password}" != "xNULL" ]; then - cmdArgs="$cmdArgs /from-stdin" - # shellcheck disable=SC2086 - echo "${password}" | ${XFREERDP} ${cmdArgs} /v:"${serverName}" >/var/log/xfreerdp-$$.log 2>&1 & - RET=$? - else - # shellcheck disable=SC2086 - ${XFREERDP} ${cmdArgs} /v:"${serverName}" >var/log/xfreerdp-$$.log 2>&1 & - RET=$? - fi - - if [ ${RET} -ne 0 ]; then - cmdArgs="" - echo "ERROR: couldn't start xfreerdp" - fi -fi - -exit ${RET} diff --git a/buildroot-external/rootfs-overlay/bin/scripts/qutselect_connect_vnc.sh b/buildroot-external/rootfs-overlay/bin/scripts/qutselect_connect_vnc.sh deleted file mode 100755 index cfbab78..0000000 --- a/buildroot-external/rootfs-overlay/bin/scripts/qutselect_connect_vnc.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/sh -# -# This is a startup script for qutselect which initates a -# VNC session to a windows server via 'vncviewer' -# -# It receives the following inputs: -# -# $1 = PID of qutselect -# $2 = serverType (SRSS, RDP, VNC) -# $3 = 'true' if dtlogin mode was on while qutselect was running -# $4 = the resolution (either 'fullscreen' or 'WxH') -# $5 = the selected color depth (8, 16, 24) -# $6 = the current max. color depth (8, 16, 24) -# $7 = the selected keylayout (e.g. 'de' or 'en') -# $8 = the domain (e.g. 'FZR', used for RDP) -# $9 = the username -# $10 = the servername (hostname) to connect to - -VNCVIEWER=/lib/tlclient/vncviewer - -##################################################### -# check that we have 10 command-line options at hand -if [ $# -lt 10 ]; then - printf "ERROR: missing arguments!" - exit 2 -fi - -# catch all arguments is some local variables -#parentPID="${1}" -#serverType="${2}" -dtlogin="${3}" -resolution="${4}" -#colorDepth="${5}" -#curDepth="${6}" -#keyLayout="${7}" -#domain="${8}" -#username="${9}" -serverName="${10}" - -# read the password from stdin -read -r password - -# variable to prepare the command arguments -cmdArgs="-shared -menukey=" - -# resolution -if [ "${resolution}" = "fullscreen" ]; then - cmdArgs="$cmdArgs -fullscreen -fullscreensystemkeys" -fi - -# run vncviewer finally -if [ "${password}" != "NULL" ]; then - if [ "${dtlogin}" != "true" ]; then - echo "${VNCVIEWER} ${cmdArgs} ${serverName}" - fi - # shellcheck disable=SC2086 - VNC_PASSWORD="${password}" ${VNCVIEWER} ${cmdArgs} "${serverName}" 2>/dev/null >/dev/null - RET=$? -else - if [ "${dtlogin}" != "true" ]; then - echo "${VNCVIEWER} ${cmdArgs} ${serverName}" - fi - # shellcheck disable=SC2086 - ${VNCVIEWER} ${cmdArgs} "${serverName}" 2>/dev/null >/dev/null - RET=$? -fi - -if [ $RET != 0 ]; then - echo "ERROR: ${VNCVIEWER} returned invalid return code ($RET)" - exit 2 -fi - -exit ${RET} diff --git a/buildroot-external/rootfs-overlay/bin/umounter.sh b/buildroot-external/rootfs-overlay/bin/umounter.sh index e41f7bc..2a198da 100755 --- a/buildroot-external/rootfs-overlay/bin/umounter.sh +++ b/buildroot-external/rootfs-overlay/bin/umounter.sh @@ -1,8 +1,35 @@ #!/bin/sh -grep /media/usb /proc/mounts | awk '{ print $2 }' | while read -r MNTPATH; do + +# show an OSD display +if [ -x /usr/bin/osd_cat ]; then + export LANG=en_US.UTF-8 + export DISPLAY=:0 + echo "Unmounting USB..." | /usr/bin/osd_cat -A center -p top -f '-*-fixed-bold-r-*-*-30-*-*-*-*-*-*-*' -c green -s 5 -d 20 & +fi + +# umount all stuff including bind mounts +grep "/media/usb" /proc/mounts | awk '{ print $2 }' | while read -r MNTPATH; do /bin/umount "${MNTPATH}" done -grep /usbmount /proc/mounts | awk '{ print $2 }' | while read -r BINDPATH; do +grep "/usbmount" /proc/mounts | awk '{ print $2 }' | while read -r BINDPATH; do /bin/umount "${BINDPATH}" /bin/rmdir "${BINDPATH}" done + +# check if umount worked fine +if [ -x /usr/bin/osd_cat ]; then + if ! grep -q -m1 "/media/usb" /proc/mounts 2>/dev/null && + ! grep -q -m1 "/usbmount" /proc/mounts 2>/dev/null; then + RESULT="OK" + POS=180 + COLOR=green + else + RESULT="FAIL" + POS=200 + COLOR=red + fi + export LANG=en_US.UTF-8 + export DISPLAY=:0 + echo "${RESULT}" | /usr/bin/osd_cat -A center -p top -i ${POS} -f '-*-fixed-bold-r-*-*-30-*-*-*-*-*-*-*' -c ${COLOR} -s 5 -d 2 + pkill osd_cat +fi diff --git a/buildroot-external/rootfs-overlay/bin/wm-startup.sh b/buildroot-external/rootfs-overlay/bin/wm-startup.sh index 906b2fa..8e9d8ee 100755 --- a/buildroot-external/rootfs-overlay/bin/wm-startup.sh +++ b/buildroot-external/rootfs-overlay/bin/wm-startup.sh @@ -61,6 +61,13 @@ create_thinlinc_conf -remove _NET_DESKTOP_NAMES \ -remove _NET_CURRENT_DESKTOP 2> /dev/null +# set solid background color in root window +/usr/bin/setrootpix "#32436B" + +# start compositor process (xcompmgr) +/usr/bin/xcompmgr & +sleep 0.2 + # start wm (openbox is the default) if [ -z "${SESSION_0_WM}" ]; then SESSION_0_WM=/usr/bin/openbox @@ -72,11 +79,14 @@ if ! wait_for_wm; then echo "$0: Timeout waiting for wm to start" fi -# set solid background color in root window -/usr/bin/xsetroot -solid "#32436B" +# move mouse pointer off screen to hide it in case +# a user wants this upon startup +if [ "${SESSION_0_HIDECURSOR}" = "true" ]; then + /usr/bin/xdotool mousemove 0 5000 +fi # update the default pulseaudio sink -/bin/pa-update-default-sink.sh +#/bin/pa-update-default-sink.sh # if SESSION_0_STARTUP is not set we start qutselect-startup.sh as the # default topmost application @@ -86,7 +96,7 @@ fi # start qutselect unlimited while true; do - if ! ${SESSION_0_XSTARTUP} >/var/log/xm-startup.log 2>&1; then + if ! ${SESSION_0_XSTARTUP}; then break fi done diff --git a/buildroot-external/rootfs-overlay/etc/X11/Xsession b/buildroot-external/rootfs-overlay/etc/X11/Xsession index 3146ba5..2e551e3 100755 --- a/buildroot-external/rootfs-overlay/etc/X11/Xsession +++ b/buildroot-external/rootfs-overlay/etc/X11/Xsession @@ -21,15 +21,15 @@ message () { fi } -message_nonl () { - # pretty-print messages of arbitrary length (no trailing newline); use - # xmessage if it is available and $DISPLAY is set - MESSAGE="$PROGNAME: $*" - echo -n "$MESSAGE" | fold -s -w "${COLUMNS:-80}" >&2; - if [ -n "$DISPLAY" ] && command -v xmessage > /dev/null 2>&1; then - echo -n "$MESSAGE" | fold -s -w "${COLUMNS:-80}" | xmessage -center -file - - fi -} +#message_nonl () { +# # pretty-print messages of arbitrary length (no trailing newline); use +# # xmessage if it is available and $DISPLAY is set +# MESSAGE="$PROGNAME: $*" +# echo -n "$MESSAGE" | fold -s -w "${COLUMNS:-80}" >&2; +# if [ -n "$DISPLAY" ] && command -v xmessage > /dev/null 2>&1; then +# echo -n "$MESSAGE" | fold -s -w "${COLUMNS:-80}" | xmessage -center -file - +# fi +#} errormsg () { # exit script with error @@ -37,16 +37,16 @@ errormsg () { exit 1 } -internal_errormsg () { - # exit script with error; essentially a "THIS SHOULD NEVER HAPPEN" message - # One big call to message() for the sake of xmessage; if we had two then - # the user would have dismissed the error we want reported before seeing the - # request to report it. - errormsg "$*" \ - "Please report the installed version of the \"x11-common\"" \ - "package and the complete text of this error message to" \ - "
." -} +#internal_errormsg () { +# # exit script with error; essentially a "THIS SHOULD NEVER HAPPEN" message +# # One big call to message() for the sake of xmessage; if we had two then +# # the user would have dismissed the error we want reported before seeing the +# # request to report it. +# errormsg "$*" \ +# "Please report the installed version of the \"x11-common\"" \ +# "package and the complete text of this error message to" \ +# " ." +#} # initialize variables for use by all session scripts diff --git a/buildroot-external/rootfs-overlay/etc/X11/Xsession.d/99x11-common_start b/buildroot-external/rootfs-overlay/etc/X11/Xsession.d/99x11-common_start index 559f159..d834285 100644 --- a/buildroot-external/rootfs-overlay/etc/X11/Xsession.d/99x11-common_start +++ b/buildroot-external/rootfs-overlay/etc/X11/Xsession.d/99x11-common_start @@ -1,6 +1,6 @@ # $Id: 99x11-common_start 305 2005-07-03 18:51:43Z dnusinow $ # start windows manager and topmost app not exiting at all. -exec /bin/wm-startup.sh +exec /bin/wm-startup.sh >/var/log/wm-startup.log 2>&1 # vim:set ai et sts=2 sw=2 tw=80: diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/00-modules.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/00-modules.conf index 6043d56..03d089e 100644 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/00-modules.conf +++ b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/00-modules.conf @@ -1,11 +1,4 @@ Section "Module" - Load "fb" - Load "fbdevhw" - Load "wfb" - Load "int10" - Load "vbe" - Load "vgahw" - Load "shadow" - Load "shadowfb" - Load "exa" + Load "glx" + Load "glamoregl" EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/01-mouse.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/01-mouse.conf deleted file mode 100644 index f24b4eb..0000000 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/01-mouse.conf +++ /dev/null @@ -1,5 +0,0 @@ -Section "InputClass" - Identifier "Mouse Defaults" - MatchIsPointer "on" - Option "Resolution" "800" -EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/10-evdev.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/10-evdev.conf deleted file mode 100644 index cc83ab2..0000000 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/10-evdev.conf +++ /dev/null @@ -1,40 +0,0 @@ -# -# Catch-all evdev loader for udev-based systems -# We don't simply match on any device since that also adds accelerometers -# and other devices that we don't really want to use. The list below -# matches everything but joysticks. - -Section "InputClass" - Identifier "evdev pointer catchall" - MatchIsPointer "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" -EndSection - -Section "InputClass" - Identifier "evdev keyboard catchall" - MatchIsKeyboard "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" -EndSection - -Section "InputClass" - Identifier "evdev touchpad catchall" - MatchIsTouchpad "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" -EndSection - -Section "InputClass" - Identifier "evdev tablet catchall" - MatchIsTablet "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" -EndSection - -Section "InputClass" - Identifier "evdev touchscreen catchall" - MatchIsTouchscreen "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" -EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/12-screen.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/12-screen.conf index da0a511..47041bf 100644 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/12-screen.conf +++ b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/12-screen.conf @@ -1,33 +1,5 @@ Section "Screen" - Identifier "Screen0" - Device "Card0" - Monitor "Monitor0" - SubSection "Display" - Viewport 0 0 - Depth 1 - EndSubSection - SubSection "Display" - Viewport 0 0 - Depth 4 - EndSubSection - SubSection "Display" - Viewport 0 0 - Depth 8 - EndSubSection - SubSection "Display" - Viewport 0 0 - Depth 15 - EndSubSection - SubSection "Display" - Viewport 0 0 - Depth 16 - EndSubSection - SubSection "Display" - Viewport 0 0 - Depth 24 - EndSubSection - SubSection "Display" - Viewport 0 0 - Depth 32 - EndSubSection + Identifier "Screen0" + Device "Intel Graphics" + DefaultDepth 24 EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/15-dri.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/15-dri.conf deleted file mode 100644 index 4cfe2e5..0000000 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/15-dri.conf +++ /dev/null @@ -1,3 +0,0 @@ -Section "Dri" - Mode 0660 -EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/20-intel.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/20-intel.conf index 9748b4d..e5b3e4e 100644 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/20-intel.conf +++ b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/20-intel.conf @@ -1,6 +1,5 @@ Section "Device" - Identifier "Intel Graphics" - Driver "intel" - Option "AccelMethod" "sna" - Option "DRI" "iris" + Identifier "Intel Graphics" + Driver "modesetting" + Option "AccelMethod" "glamor" EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/40-libinput.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/40-libinput.conf new file mode 100644 index 0000000..43e22db --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/40-libinput.conf @@ -0,0 +1,37 @@ +# libinput catch-all configuration (Xorg) +# This replaces legacy evdev/synaptics catch-alls. + +Section "InputClass" + Identifier "libinput pointer catchall" + MatchIsPointer "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput keyboard catchall" + MatchIsKeyboard "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput touchpad catchall" + MatchIsTouchpad "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput touchscreen catchall" + MatchIsTouchscreen "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput tablet catchall" + MatchIsTablet "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/70-synaptics.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/70-synaptics.conf deleted file mode 100644 index aa50456..0000000 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/70-synaptics.conf +++ /dev/null @@ -1,46 +0,0 @@ -# Example xorg.conf.d snippet that assigns the touchpad driver -# to all touchpads. See xorg.conf.d(5) for more information on -# InputClass. -# DO NOT EDIT THIS FILE, your distribution will likely overwrite -# it when updating. Copy (and rename) this file into -# /etc/X11/xorg.conf.d first. -# Additional options may be added in the form of -# Option "OptionName" "value" -# -Section "InputClass" - Identifier "touchpad catchall" - Driver "synaptics" - MatchIsTouchpad "on" -# This option is recommend on all Linux systems using evdev, but cannot be -# enabled by default. See the following link for details: -# http://who-t.blogspot.com/2010/11/how-to-ignore-configuration-errors.html -# MatchDevicePath "/dev/input/event*" -EndSection - -Section "InputClass" - Identifier "touchpad ignore duplicates" - MatchIsTouchpad "on" - MatchOS "Linux" - MatchDevicePath "/dev/input/mouse*" - Option "Ignore" "on" -EndSection - -# This option enables the bottom right corner to be a right button on clickpads -# and the right and middle top areas to be right / middle buttons on clickpads -# with a top button area. -# This option is only interpreted by clickpads. -Section "InputClass" - Identifier "Default clickpad buttons" - MatchDriver "synaptics" - Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0" - Option "SecondarySoftButtonAreas" "58% 0 0 15% 42% 58% 0 15%" -EndSection - -# This option disables software buttons on Apple touchpads. -# This option is only interpreted by clickpads. -Section "InputClass" - Identifier "Disable clickpad buttons on Apple touchpads" - MatchProduct "Apple|bcm5974" - MatchDriver "synaptics" - Option "SoftButtonAreas" "0 0 0 0 0 0 0 0" -EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/90-input.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/90-input.conf index 7628653..581d674 100644 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/90-input.conf +++ b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/90-input.conf @@ -1,6 +1,4 @@ Section "ServerFlags" - Option "AutoAddDevices" "true" - Option "AutoEnableDevices" "true" - Option "AllowEmptyInput" "true" - Option "IgnoreABI" "true" + # Useful for headless/late-attached input devices. + Option "AllowEmptyInput" "true" EndSection diff --git a/buildroot-external/rootfs-overlay/etc/dhcpcd.conf b/buildroot-external/rootfs-overlay/etc/dhcpcd.conf index a4115e5..a4d3a08 100644 --- a/buildroot-external/rootfs-overlay/etc/dhcpcd.conf +++ b/buildroot-external/rootfs-overlay/etc/dhcpcd.conf @@ -54,3 +54,6 @@ env hostname_fqdn=false # setup NTP to use chrony env NTP_CONF=/etc/chrony.conf + +# allow specific interfaces (eth*, wlan*) only +allowinterfaces eth* wlan* diff --git a/buildroot-external/rootfs-overlay/etc/fstab b/buildroot-external/rootfs-overlay/etc/fstab new file mode 100644 index 0000000..4ee2725 --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/fstab @@ -0,0 +1,10 @@ +# +/dev/root / ext2 rw,noauto 0 1 +LABEL=bootfs /boot vfat rw,noauto 0 0 +proc /proc proc defaults 0 0 +devpts /dev/pts devpts defaults,gid=5,mode=620,ptmxmode=0666 0 0 +tmpfs /dev/shm tmpfs mode=1777 0 0 +tmpfs /tmp tmpfs mode=1777 0 0 +tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0 +tmpfs /opt tmpfs mode=1777,size=90% 0 0 +sysfs /sys sysfs defaults 0 0 diff --git a/buildroot-external/rootfs-overlay/etc/hotkeyd.conf b/buildroot-external/rootfs-overlay/etc/hotkeyd.conf index 3e95ffd..3e19614 100644 --- a/buildroot-external/rootfs-overlay/etc/hotkeyd.conf +++ b/buildroot-external/rootfs-overlay/etc/hotkeyd.conf @@ -22,6 +22,9 @@ RIGHTALT+F10 /bin/umounter.sh & LEFTALT+FN+F10 /bin/umounter.sh & RIGHTALT+FN+F10 /bin/umounter.sh & +# scrolllock keyboard language OSD +SCROLLLOCK /bin/display-kblayout.sh & + # SUN keyboard settings COPY /bin/su - truser -c "DISPLAY=:0.0 /bin/xdotool keydown Control_L key Insert keyup Control_L" & PASTE /bin/su - truser -c "DISPLAY=:0.0 /bin/xdotool keydown Shift_L key Insert keyup Shift_L" & @@ -29,12 +32,19 @@ CUT /bin/su - truser -c "DISPLAY=:0.0 /bin/xdotool keydown Shift_L key Delete 'k UNDO /bin/su - truser -c "DISPLAY=:0.0 /bin/xdotool keydown Control_L key z keyup Control_L" & # audo control hotkeys -VOLUMEUP /bin/su - truser -c "/usr/bin/amixer sset Master 5%+" & -VOLUMEDOWN /bin/su - truser -c "/usr/bin/amixer sset Master 5%-" & -MUTE /bin/su - truser -c "/usr/bin/amixer sset Master toggle" & -LEFTALT+KPPLUS /bin/su - truser -c "/usr/bin/amixer sset Master 5%+" & -RIGHTALT+KPPLUS /bin/su - truser -c "/usr/bin/amixer sset Master 5%+" & -LEFTALT+KPMINUS /bin/su - truser -c "/usr/bin/amixer sset Master 5%-" & -RIGHTALT+KPMINUS /bin/su - truser -c "/usr/bin/amixer sset Master 5%-" & -LEFTALT+KPASTERISK /bin/su - truser -c "/usr/bin/amixer sset Master toggle" & -RIGHTALT+KPASTERISK /bin/su - truser -c "/usr/bin/amixer sset Master toggle" & +VOLUMEUP /bin/pa-volume-control.sh speaker +5% & +VOLUMEDOWN /bin/pa-volume-control.sh speaker -5% & +MUTE /bin/pa-volume-control.sh speaker toggle & +MICMUTE /bin/pa-volume-control.sh mic toggle & +LEFTALT+KPPLUS /bin/pa-volume-control.sh speaker +5% & +RIGHTALT+KPPLUS /bin/pa-volume-control.sh speaker +5% & +LEFTALT+KPMINUS /bin/pa-volume-control.sh speaker -5% & +RIGHTALT+KPMINUS /bin/pa-volume-control.sh speaker -5% & +LEFTALT+KPASTERISK /bin/pa-volume-control.sh speaker toggle & +RIGHTALT+KPASTERISK /bin/pa-volume-control.sh speaker toggle & +LEFTSHIFT+KPPLUS /bin/pa-volume-control.sh mic +5% & +RIGHTSHIFT+KPPLUS /bin/pa-volume-control.sh mic +5% & +LEFTSHIFT+KPMINUS /bin/pa-volume-control.sh mic -5% & +RIGHTSHIFT+KPMINUS /bin/pa-volume-control.sh mic -5% & +LEFTSHIFT+KPASTERISK /bin/pa-volume-control.sh mic toggle & +RIGHTSHIFT+KPASTERISK /bin/pa-volume-control.sh mic toggle & diff --git a/buildroot-external/rootfs-overlay/etc/init.d/S42LoadNetFiles b/buildroot-external/rootfs-overlay/etc/init.d/S42LoadNetFiles index 3f7e8a0..c657bb9 100755 --- a/buildroot-external/rootfs-overlay/etc/init.d/S42LoadNetFiles +++ b/buildroot-external/rootfs-overlay/etc/init.d/S42LoadNetFiles @@ -42,7 +42,7 @@ install_net_overlay() { # file (overlay.tar.bz2) and installs it on top # of the rootfs if /usr/bin/wget -q "${BASE_PATH}/overlay.pkg" -O "${TMPDIR}/overlay.pkg"; then - /bin/tar -C / -xf "${TMPDIR}/overlay.pkg" + /bin/tar -C / -xf "${TMPDIR}/overlay.pkg" --warning=no-timestamp fi } @@ -70,7 +70,7 @@ load_thinroot_hosts() { # put all additional groups matching the hostname # to the host variable - FOUND_GRP=$(grep -m1 -e ^"${HOSTNAME}" "${TMPDIR}/thinroot.hosts" | cut -d" " -f "2-") + FOUND_GRP=$(grep -m1 -i -e "^${HOSTNAME} " "${TMPDIR}/thinroot.hosts" | awk '{for(i=3;i<=NF;i++) {printf $i " "}}') if [[ -n "${FOUND_GRP}" ]]; then for grp in ${FOUND_GRP}; do # a comment lets us break out here @@ -83,7 +83,7 @@ load_thinroot_hosts() { done fi MAC_ADDR=$(cat "/sys/class/net/$(ip route show default | awk '/default/ {print $5}')/address") - FOUND_GRP=$(grep -m1 -i "${MAC_ADDR}" "${TMPDIR}/thinroot.hosts" | cut -d" " -f "2-") + FOUND_GRP=$(grep -m1 -i " ${MAC_ADDR}" "${TMPDIR}/thinroot.hosts" | awk '{for(i=3;i<=NF;i++) {printf $i " "}}') if [[ -n "${FOUND_GRP}" ]]; then for grp in ${FOUND_GRP}; do # a comment lets us break out here @@ -95,8 +95,11 @@ load_thinroot_hosts() { fi done - if [[ "${HOSTNAME}" == "localhost" ]]; then - NEW_HOSTNAME=$(grep -m1 -i "${MAC_ADDR}" "${TMPDIR}/thinroot.hosts" | cut -f1) + # if no hostname can be queried (localhost or thinroot fallback), then + # we try to get it from the thinroot.hosts file instead + if [[ "${HOSTNAME}" == "localhost" ]] || + [[ "${HOSTNAME}" == "thinroot" ]]; then + NEW_HOSTNAME=$(grep -m1 -i " ${MAC_ADDR}" "${TMPDIR}/thinroot.hosts" | cut -d" " -f1) if [[ -n "${NEW_HOSTNAME}" && "${NEW_HOSTNAME}" != "-" ]]; then /bin/hostname "${NEW_HOSTNAME}" HOSTNAME=$(/bin/hostname) @@ -159,7 +162,7 @@ setup_dns() { setup_ntp() { if [[ -n "${NET_TIME_SERVER}" ]]; then - echo "server ${NET_TIME_SERVER}" >>/etc/chrony.conf + echo "server ${NET_TIME_SERVER} prefer iburst" >>/etc/chrony.conf fi # add some standard/default settings @@ -189,11 +192,6 @@ setup_xconf() { sed -i "/Option .*AutoRepeat/c\\\tOption \"AutoRepeat\" \"${KEYBOARD_AUTOREPEAT}\"" /etc/X11/xorg.conf.d/00-keyboard.conf fi - # 01-mouse.conf - if [[ -n "${MOUSE_RESOLUTION}" ]]; then - sed -i "/Option .*Resolution/c\\\tOption \"Resolution\" \"${MOUSE_RESOLUTION}\"" /etc/X11/xorg.conf.d/01-mouse.conf - fi - # 10-serverlayout.conf if [[ -n "${SCREEN_BLANK_TIME}" ]]; then sed -i "/Option .*BlankTime/c\\\tOption \"BlankTime\" \"${SCREEN_BLANK_TIME}\"" /etc/X11/xorg.conf.d/10-serverlayout.conf @@ -207,6 +205,9 @@ setup_xconf() { if [[ -n "${SCREEN_OFF_TIME}" ]]; then sed -i "/Option .*OffTime/c\\\tOption \"OffTime\" \"${SCREEN_OFF_TIME}\"" /etc/X11/xorg.conf.d/10-serverlayout.conf fi + if xargs -n1 -a /proc/cmdline | grep -q "^debug$"; then + DONT_VT_SWITCH_STATE=FALSE + fi if [[ -n "${DONT_VT_SWITCH_STATE}" ]]; then sed -i "/Option .*DontVTSwitch/c\\\tOption \"DontVTSwitch\" \"${DONT_VT_SWITCH_STATE}\"" /etc/X11/xorg.conf.d/10-serverlayout.conf fi @@ -265,6 +266,7 @@ start() { mkdir -p "${TMPDIR}" mkdir -p "${ENVDIR}" mkdir -p /var/run/usbmount + chown truser:truser /opt # initialize everything init diff --git a/buildroot-external/rootfs-overlay/etc/init.d/S49chrony b/buildroot-external/rootfs-overlay/etc/init.d/S49chronyd similarity index 94% rename from buildroot-external/rootfs-overlay/etc/init.d/S49chrony rename to buildroot-external/rootfs-overlay/etc/init.d/S49chronyd index 9ef59fb..77835a1 100755 --- a/buildroot-external/rootfs-overlay/etc/init.d/S49chrony +++ b/buildroot-external/rootfs-overlay/etc/init.d/S49chronyd @@ -11,7 +11,7 @@ test -x $DAEMON || exit 0 init() { # retrieve NTPSERVERS from chrony.conf if [[ -e /etc/chrony.conf ]]; then - NTPSERVERS=$(grep server /etc/chrony.conf | awk '{ print $2 }' | xargs echo) + NTPSERVERS=$(grep -e "^server " /etc/chrony.conf | cut -d' ' -f2 | xargs echo) fi # make sure /var/lib/chrony exists so that the drift file diff --git a/buildroot-external/rootfs-overlay/etc/init.d/S60hotkeyd b/buildroot-external/rootfs-overlay/etc/init.d/S60hotkeyd deleted file mode 100755 index 66f4dca..0000000 --- a/buildroot-external/rootfs-overlay/etc/init.d/S60hotkeyd +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh -# shellcheck shell=dash -# -# start/stop hotkey daemon -# - -start() { - echo -n "Starting hotkeyd: " - start-stop-daemon -S -q -b -m -p /var/run/hotkeyd.pid --exec /bin/hotkeyd -- -q - echo "OK" -} - -stop () { - echo -n "Stopping hotkeyd: " - start-stop-daemon -K -q -p /var/run/hotkeyd.pid - echo "OK" -} - -restart() { - stop - sleep 1 - start -} - -case "$1" in - start) - start - ;; - stop) - stop - ;; - restart|reload) - restart - ;; - *) - echo "Usage: $0 {start|stop|restart}" - exit 1 -esac - -exit $? diff --git a/buildroot-external/rootfs-overlay/etc/init.d/S99SetupLEDs b/buildroot-external/rootfs-overlay/etc/init.d/S99SetupLEDs index 388df82..5f13976 100755 --- a/buildroot-external/rootfs-overlay/etc/init.d/S99SetupLEDs +++ b/buildroot-external/rootfs-overlay/etc/init.d/S99SetupLEDs @@ -12,8 +12,13 @@ # leds accordingly case "${PLATFORM}" in rpi*) - LED_GREEN="/sys/class/leds/led0" - LED_RED="/sys/class/leds/led1" + if grep -q "Pi 400" /proc/device-tree/model 2>/dev/null; then + LED_GREEN="/sys/class/leds/PWR" + LED_RED= + else + LED_GREEN="/sys/class/leds/ACT" + LED_RED="/sys/class/leds/PWR" + fi ;; tinkerboard*) LED_GREEN="/sys/class/leds/led-0" diff --git a/buildroot-external/rootfs-overlay/etc/init.d/rcK b/buildroot-external/rootfs-overlay/etc/init.d/rcK index 0906a9a..3975f6f 100755 --- a/buildroot-external/rootfs-overlay/etc/init.d/rcK +++ b/buildroot-external/rootfs-overlay/etc/init.d/rcK @@ -1,5 +1,5 @@ #!/bin/sh -# shellcheck shell=dash disable=SC1090,SC2169,SC3010,SC3057 +# shellcheck shell=dash disable=SC2169 source=/dev/null # # Stop all init scripts in /etc/init.d # executing them in reversed numerical order. @@ -10,6 +10,11 @@ for i in $(ls -r /etc/init.d/S??*) ;do # Ignore dangling symlinks (if any). [[ ! -f "${i}" ]] && continue + # make sure psplash is running + if ! pgrep -n /usr/bin/psplash >/dev/null 2>&1; then + /usr/bin/psplash -n 2>/dev/null & + fi + # put the psplash progess bar to the # corresponding level name=${i##*/} @@ -33,5 +38,13 @@ for i in $(ls -r /etc/init.d/S??*) ;do esac done +# make sure psplash is running +if ! pgrep -n /usr/bin/psplash >/dev/null 2>&1; then + /usr/bin/psplash -n 2>/dev/null & +fi + /usr/bin/psplash-write "MSG Rebooting..." /usr/bin/psplash-write "PROGRESS 0" + +# quit psplash +/usr/bin/psplash-write "QUIT" diff --git a/buildroot-external/rootfs-overlay/etc/init.d/rcS b/buildroot-external/rootfs-overlay/etc/init.d/rcS index 6e3976b..cbf64d6 100755 --- a/buildroot-external/rootfs-overlay/etc/init.d/rcS +++ b/buildroot-external/rootfs-overlay/etc/init.d/rcS @@ -1,19 +1,36 @@ #!/bin/sh -# shellcheck shell=dash disable=SC1090,SC2169,SC3010,SC3057 +# shellcheck shell=dash disable=SC2169 source=/dev/null # # Start all init scripts in /etc/init.d # executing them in numerical order. +# make sure we have a secure umask +umask 0002 + +# mount all filesystems +/bin/mount -a + +# create /var/run, /var/cache and /run/lock +/bin/mkdir -p /var/run /var/cache /run/lock + +# create ld.so.cache file +/sbin/ldconfig -C /var/cache/ld.so.cache + for i in /etc/init.d/S??* ;do # Ignore dangling symlinks (if any). [[ ! -f "${i}" ]] && continue + # make sure psplash is running + if ! pgrep -n /usr/bin/psplash >/dev/null 2>&1; then + /usr/bin/psplash -n 2>/dev/null & + fi + # put the psplash progess bar to the # corresponding level name=${i##*/} num=${name:1:2} - /usr/bin/psplash-write "MSG ${name:3}..." + /usr/bin/psplash-write "MSG Starting ${name:3}..." /usr/bin/psplash-write "PROGRESS $((${num#0}+1))" case "${i}" in @@ -32,4 +49,16 @@ for i in /etc/init.d/S??* ;do esac done +# make sure psplash is running +if ! pgrep -n /usr/bin/psplash >/dev/null 2>&1; then + /usr/bin/psplash -n 2>/dev/null & +fi + /usr/bin/psplash-write "PROGRESS 100" + +[[ -r /VERSION ]] && . /VERSION + +echo "Finished Boot: thinRoot ${VERSION} (${PRODUCT})" + +# quit psplash after 5 seconds +(sleep 5; /usr/bin/psplash-write "QUIT") & diff --git a/buildroot-external/rootfs-overlay/etc/inittab b/buildroot-external/rootfs-overlay/etc/inittab index a079bee..eb5e866 100644 --- a/buildroot-external/rootfs-overlay/etc/inittab +++ b/buildroot-external/rootfs-overlay/etc/inittab @@ -13,16 +13,15 @@ # action == one of sysinit, respawn, askfirst, wait, and once # process == program to run -# Startup the system -null::sysinit:/bin/mount -t proc proc /proc -null::sysinit:/bin/mkdir -p /dev/pts -null::sysinit:/bin/mkdir -p /dev/shm -tty2::sysinit:/bin/mount -a -null::sysinit:/bin/mkdir -p /run/lock -null::sysinit:/bin/hostname -F /etc/hostname -null::sysinit:/usr/bin/psplash -n & -# now run any rc scripts -::sysinit:/etc/init.d/rcS +# Init the system +tty2::sysinit:/bin/mount /proc +tty2::sysinit:/bin/mount /sys +tty2::sysinit:/bin/mount /tmp +tty2::sysinit:/bin/mkdir -p /dev/pts /dev/shm + +# run any rc scripts (start) and move boot.log +::sysinit:/etc/init.d/rcS 2>&1 | /usr/bin/tee -a /tmp/boot.log +::sysinit:/bin/mv /tmp/boot.log /var/log/boot.log # Put a getty on tty2 tty2::askfirst:/sbin/getty -L tty2 0 vt100 @@ -32,5 +31,5 @@ tty2::askfirst:/sbin/getty -L tty2 0 vt100 # Stuff to do before rebooting ::shutdown:/etc/init.d/rcK -tty2::shutdown:/bin/umount -a -r -null::shutdown:/sbin/swapoff -a +tty2::shutdown:/bin/umount -a -r -f >/dev/null +tty2::shutdown:/sbin/swapoff -a diff --git a/buildroot-external/rootfs-overlay/etc/ld.so.cache b/buildroot-external/rootfs-overlay/etc/ld.so.cache new file mode 120000 index 0000000..a2de479 --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/ld.so.cache @@ -0,0 +1 @@ +/var/cache/ld.so.cache \ No newline at end of file diff --git a/buildroot-external/rootfs-overlay/etc/ld.so.conf b/buildroot-external/rootfs-overlay/etc/ld.so.conf new file mode 100644 index 0000000..83327c0 --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/ld.so.conf @@ -0,0 +1 @@ +include /etc/ld.so.conf.d/*.conf diff --git a/buildroot-external/rootfs-overlay/etc/network/interfaces b/buildroot-external/rootfs-overlay/etc/network/interfaces index 9066fd7..005b47c 100644 --- a/buildroot-external/rootfs-overlay/etc/network/interfaces +++ b/buildroot-external/rootfs-overlay/etc/network/interfaces @@ -3,3 +3,6 @@ iface lo inet loopback auto wlan0 iface wlan0 inet manual + +auto eth0 +iface eth0 inet manual diff --git a/buildroot-external/rootfs-overlay/etc/profile.d/0000-default-locale.sh b/buildroot-external/rootfs-overlay/etc/profile.d/0000-default-locale.sh new file mode 100755 index 0000000..3b20f55 --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/profile.d/0000-default-locale.sh @@ -0,0 +1,2 @@ +# shellcheck shell=dash +export LANG=en_US.UTF-8 diff --git a/buildroot-external/rootfs-overlay/etc/qt-webengine-kiosk.ini b/buildroot-external/rootfs-overlay/etc/qt-webengine-kiosk.ini deleted file mode 100644 index e23c464..0000000 --- a/buildroot-external/rootfs-overlay/etc/qt-webengine-kiosk.ini +++ /dev/null @@ -1,186 +0,0 @@ -[browser] -; Full URI or full path to HTML file -;homepage=http://www.example.com/ -homepage=default.html - -; Delay load homepage on startup -startup_load_delayed=true -; Delay in msec -startup_load_delay=100 - -; Delay in msec, default 15 sec -; Set to -1 to disable -network_error_reload_delay=15000 - -; Delay in msec, default 15 sec -page_load_timeout=15000 -; Show some error messages, like network errors -; Messages text box will appear above page -; For debug purpose mostly -show_error_messaged=false - -; When you enable the cookiejar your cookies will be remembered between runs. -; When you disable the cookiejar your cookies will disappear when you quit the program. -cookiejar=false - -java=false -javascript=true -; handle window.open? -; catch link and follow. no new windows. -javascript_can_open_windows=true -; handle window.close ? -javascript_can_close_windows=false -webgl=false -plugins=true - -; Custom User-Agent header -; Default value: Mozilla/5.0 (%Platform%%Security%%Subplatform%) AppleWebKit/%WebKitVersion% (KHTML, like Gecko) %AppVersion Safari/%WebKitVersion% -; Set it to empty value to use defaults -custom_user_agent_header= - -; Don't show any javascript console messages by default -; For debug purpose mostly -show_js_console_messages=false - -; Trust any certificate by default -ignore_ssl_errors=true - -; Don't close application, show default homepage. Used with javascript window.close() -show_homepage_on_window_close=true - -; Disable reaction on keyboard -disable_hotkeys=false - - -; Interrupt long running javascript ever -interrupt_javascript=true - -; Interrupt long running javascript after this time in seconds -; By defaults in Qt first check will be after 10s of hang and every 10s -interrupt_javascript_interval=30 - - -[signals] -enable=true - -; Warning! -; Some signals dont' exists on some systems... -; Windows - SIGUSR1, SIGUSR2 - -; Empty by default -; SIGUSR1 - reload config and load homepage URI -; If set - try to load defined URI -SIGUSR1= -; SIGUSR2 - load homepage URI from current config -; If set - try to load defined URI -SIGUSR2= - -[rpc] -; @TODO -; May be JSON-RPC -enable=false -; Do not forget to allow access in your firewall -listen=127.0.0.1:9000 - -[inspector] -; Call web-inspector by F12 -enable=false -; Visible on browser start -visible=false - -[attach] -; Attach files content then page loaded. Styles goes first -; Define each file full path and split with comma -styles= -javascripts= - -[event-sounds] -enable=false -; full-path to sound file -; format - supported by Qt or system -; Sound for click anywhere in window -;window-clicked=window-clicked.wav -; Sound for click on a link -;link-clicked=link-clicked.wav - -[cache] -enable=true -; Full path to cache directory -location=cache -; Max cache size in bytes, default 100Mb -size=100000000 -; cache clean up -clean-on-start=false -clean-on-exit=false - -[application] -; Used in User-Agent header -organization=Organization -organization-domain=www.example.com -name=QtWebkitKiosk -version=1.99.11-dev - -[printing] -enable=false -show-printer-dialog=false -printer=default -page_margin_left=0 -page_margin_top=0 -page_margin_right=0 -page_margin_bottom=0 - -[proxy] -enable=false -system=true -host=proxy.example.com -port=3128 -auth=false -username=username -password=password - -[view] -fullscreen=true -maximized=false -fixed-size=false -fixed-width=800 -fixed-height=600 -fixed-centered=true -; if not centered -fixed-x=0 -fixed-y=0 - -; Another window manager hint to prevent showing other windows or taskbar -stay_on_top=false - -;; Minimum window size, default - 320x200 -;minimum-width=320 -;minimum-height=200 - -; Try to avoid some bogus Windows behaviour when taskbar become visible after window fullscreened... -startup_resize_delayed=true -; Delay in msec -startup_resize_delay=200 - -; Try to hide window scrollbars for any content overflow. Scrolling works only with keyboard keys. If they not disabled. -hide_scrollbars=true - -; Try to hide selection -disable_selection=true - -; Show progress bar at page top then web-page loading -show_load_progress=true - -; Page scale factor -page_scale=1.0 - -; If you use this program without a mouse it can be nice to hide the mouse. -; This does not disable the mouse itself: you can still interact with websites -; using the mouse, you just won't be able to see the mouse pointer. -hide_mouse_cursor=true - -[localstorage] -enable=true - -[security] -; Locally loaded documents are allowed to access remote urls. -local_content_can_access_remote_urls=false diff --git a/buildroot-external/rootfs-overlay/etc/sysctl.conf b/buildroot-external/rootfs-overlay/etc/sysctl.conf index d16adc4..ab4d70e 100644 --- a/buildroot-external/rootfs-overlay/etc/sysctl.conf +++ b/buildroot-external/rootfs-overlay/etc/sysctl.conf @@ -10,8 +10,8 @@ kernel.perf_event_paranoid = 3 # Avoid non-ancestor ptrace access to running processes and their credentials. kernel.yama.ptrace_scope = 1 -# Disable User Namespaces, as it opens up a large attack surface to unprivileged users. -user.max_user_namespaces = 0 +# Enable User Namespaces for sanboxing applications like chrome, etc. +user.max_user_namespaces = 15000 # increase netfilter conntrack maximum hash table size to 256K net.netfilter.nf_conntrack_buckets = 65536 diff --git a/buildroot-external/rootfs-overlay/etc/usbmount/mount.d/00_create_model_symlink b/buildroot-external/rootfs-overlay/etc/usbmount/mount.d/00_create_model_symlink index ed6b56c..2a7e19d 100755 --- a/buildroot-external/rootfs-overlay/etc/usbmount/mount.d/00_create_model_symlink +++ b/buildroot-external/rootfs-overlay/etc/usbmount/mount.d/00_create_model_symlink @@ -38,4 +38,11 @@ fi # If the symlink does not yet exist, create it. test -e "/var/run/usbmount/${name}" || (mkdir "/var/run/usbmount/${name}"; mount --bind "${UM_MOUNTPOINT}" "/var/run/usbmount/${name}") +if [ -x /usr/bin/osd_cat ]; then + export LANG=en_US.UTF-8 + export DISPLAY=:0 + COLOR=green + echo "Mounted USB: '${name}'..." | /usr/bin/osd_cat -A center -p top -f '-*-fixed-bold-r-*-*-30-*-*-*-*-*-*-*' -c ${COLOR} -s 5 -d 3 +fi + exit 0 diff --git a/buildroot-external/rootfs-overlay/etc/usbmount/umount.d/00_remove_model_symlink b/buildroot-external/rootfs-overlay/etc/usbmount/umount.d/00_remove_model_symlink index 5f2c9a5..31e1db2 100755 --- a/buildroot-external/rootfs-overlay/etc/usbmount/umount.d/00_remove_model_symlink +++ b/buildroot-external/rootfs-overlay/etc/usbmount/umount.d/00_remove_model_symlink @@ -21,4 +21,11 @@ if [ -n "${MOUNTNAME}" ]; then /bin/rmdir "${MOUNTNAME}" fi +if [ -x /usr/bin/osd_cat ]; then + export LANG=en_US.UTF-8 + export DISPLAY=:0 + COLOR=red + echo "Unclean USB eject: Press ALT+F10 next time!" | /usr/bin/osd_cat -A center -p top -f '-*-fixed-bold-r-*-*-30-*-*-*-*-*-*-*' -c ${COLOR} -s 5 -d 10 +fi + exit 0 diff --git a/buildroot-external/rootfs-overlay/etc/xdg/openbox/rc.xml b/buildroot-external/rootfs-overlay/etc/xdg/openbox/rc.xml index beef1fb..a7a5668 100644 --- a/buildroot-external/rootfs-overlay/etc/xdg/openbox/rc.xml +++ b/buildroot-external/rootfs-overlay/etc/xdg/openbox/rc.xml @@ -47,7 +47,7 @@ Clearlooks -LM +CLM