sapconf-5.0.2-7.15.1 >  A `eep9|e-s0e||LCͶJ]o\E}E@iiᩄo 0sVnb>Ca> ǯA4Jd#F "Iw0r[ԓZ02ERO5H}IAG'}M v:9OJfIɧoI<<kE"6-: E:V*6J@DZ*,w}բL tbBre|"767d5b6ce75e1f55213e094ba7f7f6bfc43e3102d4ea1b777dff3beeedbd9d4215f653d84a19b4cd4c2cd7eca699eefd98fbd82b 4`eep9|uS⨩Qڻgr@A>9_L>݊[N /Tp}+Z_Dk+e]Z槖N@?iɩq_\5!]0FsG<S dӻMHTҰzg,ԝ8;NE^*kW^lY1n% 0}lTLs%و<@'`I.82!Rd)J\R)%ܺ9GrT"ʭGT>pK?td   H$(04Mn  &[+G00 1 1< 1 4 455c556,6D67(888$&98&:;&=>?@FGH\IXY\],^ bcdeflu0v|wxHyz !$(.pCsapconf5.0.27.15.1Kernel Parameter Initializiation for SAP SystemsThe utility adjusts operating system parameters, such as kernel tuning settings and resource limits, to allow running various SAP solutions at satisfactory performance. Authors: -------- Angela Briel, Howard Guo`eesheep24LGPL-2.1-or-laterhttps://www.suse.com/Productivity/Otherhttps://www.suse.com/partners/alliance/sap/linuxnoarch if [ -x /usr/bin/systemctl ]; then test -n "$FIRST_ARG" || FIRST_ARG="$1" [ -d /var/lib/systemd/migrated ] || mkdir -p /var/lib/systemd/migrated || : for service in sapconf.service ; do sysv_service=${service%.*} if [ ! -e /usr/lib/systemd/system/$service ] && [ ! -e /etc/init.d/$sysv_service ]; then mkdir -p /run/systemd/rpm/needs-preset touch /run/systemd/rpm/needs-preset/$service elif [ -e /etc/init.d/$sysv_service ] && [ ! -e /var/lib/systemd/migrated/$sysv_service ]; then /usr/sbin/systemd-sysv-convert --save $sysv_service || : mkdir -p /run/systemd/rpm/needs-sysv-convert touch /run/systemd/rpm/needs-sysv-convert/$service fi done fi touch /run/sapconf_during_pkg_inst if [ $1 -eq 1 ]; then # package initial install # check, if old config files from a former installation still exist SC=/etc/sysconfig for f in sapconf sapnote-1557506 sapnote-1680803; do if [ -f "${SC}${f}" ]; then mv "${SC}${f}" "${SC}${f}".rpmold || : fi done else # package update # to prevent sapconf related tuned error messages anytime after this # sapconf package installation switch off tuned to remove the 'active' # sapconf profile # 'tuned-adm off' is sadly the only possibility to remove an 'active' # sapconf profile # # check for active tuned systemctl -q is-active tuned && [[ $(cat /etc/tuned/active_profile) == sap-* || $(cat /etc/tuned/active_profile) == sapconf ]] && (echo "found active tuned with a sap related profile"; touch /run/sapconf_tuned_removal_started; mkdir -p /var/run/sapconf; touch /var/run/sapconf/active; tuned-adm off) || : # if the tuned profile is a sap related profile, try to switch off tuned # if 'tuned-adm off' before had worked, the profile is empty # if not try again [[ $(cat /etc/tuned/active_profile) == sap-* || $(cat /etc/tuned/active_profile) == sapconf ]] && (tuned-adm off || systemctl stop tuned.service) || : # check for enabled and/or active sapconf.service systemctl -q is-active sapconf.service && (echo "found active sapconf.service"; touch /run/sapconf_pre_actss_found) || : systemctl -q is-enabled sapconf.service && (echo "found enabled sapconf.service"; touch /run/sapconf_pre_enblss_found) || : ([ ! -f /run/sapconf_tuned_removal_started ] && [ -f /usr/lib/tuned/sapconf/script.sh ]) && touch /run/sapconf_tuned_removal_started || : if ([ -f /etc/sysconfig/sapnote-155750 ] || ([ -f /etc/sysconfig/sapnote-1680803 ] && [ ! -f /etc/sysconfig/sapnote-bobj ]) || [ -f /usr/lib/tuned/sapconf/script.sh ]); then touch /tmp/sapconf_remove_nofile || : fi fiif [ $1 -eq 1 ]; then # package initial install PNAME=sapconf SUBPNAME= SYSC_TEMPLATE=/usr/share/fillup-templates/sysconfig.$PNAME$SUBPNAME # If template not in new /usr/share/fillup-templates, fallback to old TEMPLATE_DIR if [ ! -f $SYSC_TEMPLATE ] ; then TEMPLATE_DIR=/var/adm/fillup-templates SYSC_TEMPLATE=$TEMPLATE_DIR/sysconfig.$PNAME$SUBPNAME fi SD_NAME="" if [ -x /bin/fillup ] ; then if [ -f $SYSC_TEMPLATE ] ; then echo "Updating /etc/sysconfig/$SD_NAME$PNAME ..." mkdir -p /etc/sysconfig/$SD_NAME touch /etc/sysconfig/$SD_NAME$PNAME /bin/fillup -q /etc/sysconfig/$SD_NAME$PNAME $SYSC_TEMPLATE fi else echo "ERROR: fillup not found. This should not happen. Please compare" echo "/etc/sysconfig/$PNAME and $TEMPLATE_DIR/sysconfig.$PNAME and" echo "update by hand." fi touch /tmp/initial_sapconf_inst || : else # package update if [ -f /etc/sysconfig/sapnote-1557506 ]; then # covers updates from SLE12 sapconf versions < 4.1.12 mv /etc/sysconfig/sapconf /etc/sysconfig/sapconf.rpmsave || : PNAME=sapconf SUBPNAME= SYSC_TEMPLATE=/usr/share/fillup-templates/sysconfig.$PNAME$SUBPNAME # If template not in new /usr/share/fillup-templates, fallback to old TEMPLATE_DIR if [ ! -f $SYSC_TEMPLATE ] ; then TEMPLATE_DIR=/var/adm/fillup-templates SYSC_TEMPLATE=$TEMPLATE_DIR/sysconfig.$PNAME$SUBPNAME fi SD_NAME="" if [ -x /bin/fillup ] ; then if [ -f $SYSC_TEMPLATE ] ; then echo "Updating /etc/sysconfig/$SD_NAME$PNAME ..." mkdir -p /etc/sysconfig/$SD_NAME touch /etc/sysconfig/$SD_NAME$PNAME /bin/fillup -q /etc/sysconfig/$SD_NAME$PNAME $SYSC_TEMPLATE fi else echo "ERROR: fillup not found. This should not happen. Please compare" echo "/etc/sysconfig/$PNAME and $TEMPLATE_DIR/sysconfig.$PNAME and" echo "update by hand." fi # remove no longer needed 'pagecache' sysconfig file rm -f /etc/sysconfig/sapnote-1557506 || : # remove no longer needed 'ase' sysconfig file rm -f /etc/sysconfig/sapnote-1680803 || : elif [ -f /etc/sysconfig/sapnote-1680803 ]; then # covers updates from SLE12 sapconf versions >= 4.1.12 echo "covers updates from SLE12 sapconf versions >= 4.1.12" # remove pagecache section from sapconf sysconfig file # no longer supported in SLE15 sed -i '/## Path: SAP\/Note\/1557506 - Linux paging improvements/,/.*PAGECACHE_LIMIT_IGNORE_DIRTY[[:blank:]]*=.*/d' /etc/sysconfig/sapconf sed -i '/.*PAGECACHE_LIMIT_IGNORE_DIRTY[[:blank:]]*=.*/d' /etc/sysconfig/sapconf # bsc#1096496/bsc#1096498 # to update the comment sections in /etc/sysconfig/sapconf # does not work with /bin/fillup, but is mandatory for SAP /usr/lib/sapconf/sccu.sh || : echo "Updating /etc/sysconfig/sapconf ..." /bin/fillup -q -t /etc/sysconfig/sapconf /usr/share/fillup-templates/sysconfig.sapconf # remove no longer needed 'ase' sysconfig file rm -f /etc/sysconfig/sapnote-1680803 || : # remove no longer needed 'bobj' sysconfig file rm -f /etc/sysconfig/sapnote-bobj || : else # covers updates from SLE15 echo "covers updates from SLE15" # bsc#1096496/bsc#1096498 # to update the comment sections in /etc/sysconfig/sapconf # does not work with /bin/fillup, but is mandatory for SAP /usr/lib/sapconf/sccu.sh || : echo "Updating /etc/sysconfig/sapconf ..." /bin/fillup -q -t /etc/sysconfig/sapconf /usr/share/fillup-templates/sysconfig.sapconf fi PNAME=sapconf DEF_VAL="no" DEL_TEMPL=/usr/share/fillup-templates/$PNAME.del rm -f $DEL_TEMPL for var in SEMMSL SEMMNS SEMOPM SEMMNI ; do echo -e "#\n$var=$DEF_VAL\n" >> $DEL_TEMPL done if [ -f /etc/sysconfig/$PNAME ] ; then /bin/fillup -q -t -r -i -d "=" /etc/sysconfig/$PNAME $DEL_TEMPL /etc/sysconfig/$PNAME.deleted.$$ test -f /etc/sysconfig/$PNAME.new && mv /etc/sysconfig/$PNAME.new /etc/sysconfig/$PNAME fi for i in $DEL_TEMPL /etc/sysconfig/$PNAME.deleted.$$ ; do if [ -f $i ] ; then . $i rm -f $i fi done # move custom specific sapconf related tuned profiles from /etc/tuned/ # to /var/lib/sapconf/saved_configs /usr/lib/sapconf/mv_tuned_conf.sh || : # remove nofile related limits.conf entries for @sapsys @sdba @dba if [ -f /tmp/sapconf_remove_nofile ]; then lim_chg=false for ulimit_group in @sapsys @sdba @dba; do for ulimit_type in soft hard; do limits_line=$(grep -E "^${ulimit_group}[[:space:]]+${ulimit_type}[[:space:]]+nofile.+" /etc/security/limits.conf) if [ -n "$limits_line" ]; then sed -i "/$limits_line/d" /etc/security/limits.conf || : lim_chg=true fi done done [[ $lim_chg ]] && echo "Updating /etc/security/limits.conf..." || : rm -f /tmp/sapconf_remove_nofile || : fi fi sed -i '/^[^#].*[[:blank:]][[:blank:]]*=[[:blank:]][[:blank:]]*.*/s;[[:blank:]];;g' /etc/sysconfig/sapconf >/dev/null 2>&1 || : if [ -x /usr/bin/systemctl ]; then test -n "$FIRST_ARG" || FIRST_ARG="$1" [ -d /var/lib/systemd/migrated ] || mkdir -p /var/lib/systemd/migrated || : if [ "$YAST_IS_RUNNING" != "instsys" ]; then /usr/bin/systemctl daemon-reload || : fi for service in sapconf.service ; do sysv_service=${service%.*} if [ -e /run/systemd/rpm/needs-preset/$service ]; then /usr/bin/systemctl preset $service || : rm "/run/systemd/rpm/needs-preset/$service" || : elif [ -e /run/systemd/rpm/needs-sysv-convert/$service ]; then /usr/sbin/systemd-sysv-convert --apply $sysv_service || : rm "/run/systemd/rpm/needs-sysv-convert/$service" || : touch /var/lib/systemd/migrated/$sysv_service || : fi done fi # Amend logind's behaviour (bsc#1031355, bsc#1039309, bsc#1043844), there is no rollback. # Not needed any longer as the limit is removed from logind (jsc#SLE-10123) SAP_LOGIN_FILE=/etc/systemd/logind.conf.d/sap.conf if [ -f $SAP_LOGIN_FILE ]; then echo "removing no longer needed file '$SAP_LOGIN_FILE'" rm -rf $SAP_LOGIN_FILE || : fi test -n "$FIRST_ARG" || FIRST_ARG="$1" if [ "$FIRST_ARG" -eq 0 -a -x /usr/bin/systemctl ]; then # Package removal, not upgrade /usr/bin/systemctl --no-reload disable sapconf.service || : ( test "$YAST_IS_RUNNING" = instsys && exit 0 test -f /etc/sysconfig/services -a \ -z "$DISABLE_STOP_ON_REMOVAL" && . /etc/sysconfig/services test "$DISABLE_STOP_ON_REMOVAL" = yes -o \ "$DISABLE_STOP_ON_REMOVAL" = 1 && exit 0 /usr/bin/systemctl stop sapconf.service ) || : fi test -n "$FIRST_ARG" || FIRST_ARG=$1 if [ $FIRST_ARG -eq 0 ]; then # Package removal, not upgrade # revert settings - not needed, done by service_del_preun # clean up custom specific sapconf tuned configuration # move custom specific sapconf related tuned profiles from /etc/tuned/ # to /var/lib/sapconf/saved_configs [ ! -d /var/lib/sapconf/saved_configs ] && mkdir -p /var/lib/sapconf/saved_configs for prof in sapconf sap-hana sap-netweaver sap-ase sap-bobj; do if [ -f /etc/tuned/"$prof"/tuned.conf ]; then echo "moving custom profile /etc/tuned/$prof to /var/lib/sapconf/saved_configs" mv /etc/tuned/"$prof" /var/lib/sapconf/saved_configs || : fi done fi test -n "$FIRST_ARG" || FIRST_ARG="$1" if [ $1 -eq 0 ]; then # Package removal for service in sapconf.service ; do sysv_service="${service%.*}" rm "/var/lib/systemd/migrated/$sysv_service" || : done fi if [ -x /usr/bin/systemctl ]; then /usr/bin/systemctl daemon-reload || : fi if [ "$FIRST_ARG" -ge 1 ]; then # Package upgrade, not uninstall if [ -x /usr/bin/systemctl ]; then ( test "$YAST_IS_RUNNING" = instsys && exit 0 test -f /etc/sysconfig/services -a \ -z "$DISABLE_RESTART_ON_UPDATE" && . /etc/sysconfig/services test "$DISABLE_RESTART_ON_UPDATE" = yes -o \ "$DISABLE_RESTART_ON_UPDATE" = 1 && exit 0 /usr/bin/systemctl try-restart sapconf.service ) || : fi fi test -n "$FIRST_ARG" || FIRST_ARG=$1 if [ $FIRST_ARG -eq 0 ]; then if [ -f /etc/security/limits.d/sapconf-nofile.conf ]; then echo "removing no longer needed file '/etc/security/limits.d/sapconf-nofile.conf'" rm -f /etc/security/limits.d/sapconf-nofile.conf fi fi # remove no longer needed UserTasksMax setting, if still available SAP_LOGIN_FILE=/etc/systemd/logind.conf.d/sap.conf if [ -f $SAP_LOGIN_FILE ]; then echo "removing no longer needed file '$SAP_LOGIN_FILE'" rm -rf $SAP_LOGIN_FILE fi~o # E )F/O A큤큤AA큤큤AAA`ee`ee`ee`ee`ee`ee`ee`ee`ee`ee`ee`ee`ee`ee`ee`ee`ee`ee`eeb766380fbe5b5b0af2a403f7c37b407ea1620d4dbcba93d23aa2b5e4c56debb6c2aeb3db7dfd61d436d5f048ec55633130cb550823d49f909dc1695ca9ff96b8321bbe663b75cc5f1771c302d6c2f521004416cef28c6da89f11c5e91c3fe4888ad443e2e95acf170e36076132a9feaba2c3dd3860cd7f66f021756667344fcc88e45f2ab77482f5e09426e343c5352128aa16e51ce66d58101a009c33fe14c3ba60779bc853f9e0cf95b07979ff60a767f591c70f35653aefc7a7d2720e25309a289119ab23ddd0b443f5fa74301b91a1d76c1719f24153d2ee0e5ae3aaa380e0c2ad66494284e047c1a62a4685630bbaab832c7d32a7f2f67ad62ebe17c49a5259a1a5f257dd295f1fa8b68a074ea44ae6e242b6cbd947d0c6a541b633577de3e704daf2861a9b236c3da7199a8a70e7b9ed5a07293641ee1a5feac25ff276280c83c90dbd30429debc2aff8873e610fea99742523e1e70c2d18978e881fbdd02357209429b32de0606ca5bfb98436a7acb8922e78c4ff21f1e1f2088977e1service@rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootsapconf-5.0.2-7.15.1.src.rpmconfig(sapconf)sapconf @ @      /bin/bash/bin/bash/bin/sh/bin/sh/bin/sh/bin/sh/usr/bin/cpupower/usr/bin/envbcconfig(sapconf)coreutilsdiffutilsfillupgreplogrotaterpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)sysstatsystemdsystemdsystemdsystemdsystemduuidd5.0.2-7.15.13.0.4-14.6.0-14.0-15.2-1234-24.424.14.1`S@^^s^\Q[[#@Z@ZЛZJ@Za@ZZ@ZkZZ8@Z&@Y@YJYaY@Y@YyYJ_Y>@Y@X-XXO@XX=mW@WzOWV@W'A@V@VIV@V +abriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comabriel@suse.comhguo@suse.comabriel@suse.comabriel@suse.comabriel@suse.comhguo@suse.comhguo@suse.comhguo@suse.comhguo@suse.comhguo@suse.comhguo@suse.comhguo@suse.comhguo@suse.comhguo@suse.comhguo@suse.comhguo@suse.comhguo@suse.comhguo@suse.com- version update from 5.0.0 to 5.0.2 - added sapconf_check and supportconfig plugin for sapconf - change log message for 'MIN_PERF_PCT' parameter to reduce the spot light (bsc#1179524) - add additional check to detect an active saptune service (started but disabled and without any notes applied). Improve the logging message. (bsc#1182314) - enable and start sapconf.service during package update, if tuned is running with sapconf as profile (bsc#1176061) - preserve the state of the sapconf.service during the package update. Only disable the sapconf service, if saptune is active. In any other cases don't touch the state of the sapconf service. If tuned has problems and the command 'tune-adm off' does not work properly in the preinstall script of the package, try to stop the tuned service to avoid weird error messages in the log of tuned during and after the package update (bsc#1182906)- version update from 4.2.3 to 5.0.0 - check the values of the vm.dirty_* settings to be in a valid range before activating or restoring these system values. (bsc#1168067) - add a logrotate drop-in file for sapconf to control the size of the /var/log/sapconf.log logfile (bsc#1166925) - use a drop-in file in /etc/security/limits.d instead of modifying /etc/security/limits.conf directly. So during sapconf service start the ulimits for the max number of open files configured with sapconf will be written to /etc/security/limits.d/sapconf-nofile.conf. During sapconf service stop this file will be removed. During package update from version 4 to version 5 of sapconf the nofile related entries added by version 4 of sapconf will be removed from /etc/security/limits.conf. (bsc#1168840) - support multi-queued scheduler for block devices (jsc#SLE-11140, jsc#SLE-11142, jsc#SLE-11143) - remove usage of tuned from sapconf That means: Now there is only ONE configuration file for sapconf /etc/sysconfig/sapconf All trailing comment sections, which were only used for documentation purpose are now removed. All parameters of the tuned profile defined in tuned.conf governor, energy_perf_bias, min_perf_pct, force_latency and elevator are moved to /etc/sysconfig/sapconf Customer specific tuned profile changes in /etc/tuned/ are transferred to /etc/sysconfig/sapconf. The customer specific tuned profile files from /etc/tuned/sapconf are moved to /var/lib/sapconf/saved_configs. Additional parameter settings in these tuned configuration files are NOT covered by sapconf. Additional changes during package update: if sapconf with tuned support was not used during package update stop and disable the sapconf service if sapconf with tuned support was used during package update stop and disable tuned service if saptune is active during package update stop and disable sapconf service To prevent sapconf related tuned error messages anytime after the package installation we need to switch off tuned in the preinstall of the package to remove the 'active' sapconf profile before the package installation removes the no longer shipped sapconf profile files. The system tuning will be restarted after the configuration transfer in the post phase of the package installation. (jsc#SLE-10985, jsc#SLE-10987, jsc#SLE-10988)- version update from 4.2.2 to 4.2.3 - file /etc/systemd/logind.conf.d/sap.conf will be removed during the package update. It is not needed any longer as the limits for TasksMax and UserTasksMax are removed from systemd/logind (bsc#1148163, jsc#SLE-10123) - if sapconf detects an improper tuned profile during start it will write an information to the log file and the start of the sapconf service will fail to guide the administrator to the problem. (bsc#1139176) - use absolute path to script.sh in tuned.conf file (bsc#1124453) - use ';' as new delimiter for a sed command in postinstall script, because the used '%' is used and expanded by rpm macros. (bsc#1150868, bsc#1150870)- source /etc/sysconfig/sapconf entries correctly, even if the /etc filesystem is read-only (bsc#1122741) - log skipping of existing /etc/systemd/logind.conf.d/sap.conf file during package installation (bsc#1111243)- Do not change the system settings for kernel.sem. So remove the variables SEM* from sapconf. (bsc#1099101)- correct the SAP Note references in the man pages and in the sysconfig file of the sapconf package (bsc#1096498)- never ever stop or disable uuidd.socket in sapconf. It is mandatory for every SAP application running. (bsc#1093843) - remove hardcoded default value for VSZ_TMPFS_PERCENT. This allows an admin to exclude VSZ_TMPFS settings from the sysconfig file, so current system value will remain untouched. This value only got used in the previous version, if the variable VSZ_TMPFS_PERCENT was removed from the sapconf configuration file /etc/sysconfig/sapconf. If the value of the variable was only changed (increase or decrease) in the sapconf configuration file everything works fine. (bsc#1093844)- remove the no longer needed sysconfig file '/etc/sysconfig/sapnote-1680803' in any update case. (bsc#1089549)- sapconf will set ALL values specified in the file /etc/sysconfig/sapconf irrespective of the current system value. The values will be not just increase, but also decrease, if the value in the sysconfig file is lower than the current system value. All actions are logged to /var/log/sapconf.log (fate#325548) - change variable names in sysconfig file for the avoidance of doubt (bsc#1070495) - remove unnecessary TMPFS_SIZE_MIN from sysconfig file (bsc#1070496)- remove the pagecache references from the sysconfig file during the package update from SLE12 to SLE15 (bsc#1071539)- consolidate the 4 former sapconf profiles sap-hana, sap-netweaver, sap-ase and sap-bobj to one basic sapconf profile 'sapconf' as requested by SAP. If one of the former profiles is the currently active tuned profile, the active tuned profile will be reset to the 'sapconf' profile during the update installation of the package. Additionally the no longer needed sysconfig file '/etc/sysconfig/sapnote-1680803' will be removed during the package update. (fate#324489, bsc#1070504)- add directive ExecStop to the systemd unit file sapconf.service and start sapconf.service after initial package installation (fate#325363)- add system unit file sapconf.service to start tuned, uuidd.socket and sysstat during system boot and to restart tuned during package update installation so that the changes will take effect immediately (fate#325363) - remove left over pagecache limit references (bsc#1071539)- Remove sapconf legacy interface /usr/lib/systemd/system/sapconf.service /usr/sbin/SAPconf /usr/sbin/rcsapconf /usr/sbin/sapconf The man pages are adapted to reflect the changed handling. (bsc#1070505, fate#324490)- Check, if pagecache limit is available at the system. If yes, set pagecache limit according the settings in /etc/sysconfig/sapconf. If not, log a message to the log file. (bsc#1071539, fate#323778)- Refactoring sapconf parameter settings together with SAP Linux Lab. (fate#324491) - ATTENTION: One main feature of this sapconf package update to version 4.1.12 is a consolidation of all sapconf configuration settings into the central /etc/sysconfig/sapconf configuration file (except those settings related to ASE or BOBJ and those settings which can only be set via tuned.conf) This will result in a lot of configuration file changes concerning /etc/sysconfig/sapconf, /etc/sysconfig/sapnote-1557506, /usr/lib/tuned/sap-netweaver/tuned.conf and /usr/lib/tuned/sap-hana/tuned.conf. That means that your system configuration get changed after a restart of tuned or during a system reboot. Please read carefully the following information about configuration file handling before restarting tuned or rebooting the system. (bsc#1070508) - use the same tuning values for HANA and Netweaver workloads. That means the use of the same tuned.conf and script.sh file for both profiles (sap-hana and sap-netweaver) This should lead to a better base for mixed HANA and ABAB workloads on one system. (bsc#1070508) - the pagecache configuration is now integrated in the general sapconf sysconfig file and the old sysconfig file sapnote-1557506 is obsolete. As before pagecache handling is disabled by default. ATTENTION: configuration file handling during package installation. During an initial package installation the new sysconfig file, which includes the pagecache values from the former file sapnote-1557506, is copied to /etc/sysconfig/sapconf and the changes will take effect immediately after restarting tuned. During a package update previously copied /etc/sysconfig files will exist. If both files in /etc/sysconfig are unchanged - that means, there are no custom changes present - the new sysconfig file is copied to /etc/sysconfig, the old obsolete /etc/sysconfig/sapnote-1557506 is removed and the changes will take effect immediately after restarting tuned. If the file /etc/sysconfig/sapconf is unchanged - that means, there are no custom changes present - but the file /etc/sysconfig/sapnote-1557506 contains custom modifications, the new sysconfig file is copied to /etc/sysconfig, the changed values from /etc/sysconfig/sapnote-1557506 are copied to /etc/sysconfig/sapconf and /etc/sysconfig/sapnote-1557506 is moved to /etc/sysconfig/sapnote-1557506.rmpsave. The changes will take effect immediately after restarting tuned. If the file /etc/sysconfig/sapconf contains custom modifications, the new sysconfig file is copied to /etc/sysconfig as sapconf.rpmnew. Custom modifications from /etc/sysconfig/sapnote-1557506 - if available - are not merged in this new file. Please merge the needed custom modifications manually from both files into /etc/sysconfig/sapconf.rpmnew, move this file to /etc/sysconfig/sapconf and remove /etc/sysconfig/sapnote-1557506 before you restart tuned to get the changes take effect. (bsc#1070496, bsc#1070508) - The following parameters are additional specified (instead of static tuning inside the tuning script or defined in other configuration files like tuned.conf or sapnote-1557506) or changed in the central configuration file /etc/sysconfig/sapconf. vm.max_map_count, vm.dirty_bytes, vm.dirty_background_bytes, kernel.shmmni, net.ipv4.tcp_slow_start_after_idle, ksm, transparent_hugepages, numa_balancing added and value changed vm.pagecache_limit_ignore_dirty, vm.pagecache_limit_mb added and commented out kernel.shmall, kernel.shmmax, kernel.sem changed But be in mind: higher system value will ever remain unchanged. sapconf will respect higher values set by the system or by the administrator using sysctl configuration files. Values set with sysctl command will respect too, but do not survive a system reboot. Every tuning action is logged to /var/log/sapconf.log ATTENTION: configuration file handling during package installation. During an initial package installation the new sysconfig file is copied to /etc/sysconfig and the changes will take effect immediately after restarting tuned. During a package update a previously copied /etc/sysconfig file will exist. If this file in /etc/sysconfig is unchanged - that means, there are no custom changes present - the new sysconfig file is copied to /etc/sysconfig and the changes will take effect immediately after restarting tuned. If this file in /etc/sysconfig includes custom modifications, the new sysconfig file is copied to /etc/sysconfig as sapconf.rpmnew. Please merge the needed custom modifications into /etc/sysconfig/sapconf.rpmnew and move this file to /etc/sysconfig/sapconf before you restart tuned to get the changes take effect (bsc#1070494, bsc#1070495, bsc#1070496, bsc#1070508) - The following parameters were specified in tuned.conf of profile sap-hana and/or sap-netweaver before. But they are removed from tuned.conf because they are redundant, no SAP Note is mentioned it, replaced by another parameter, moved to another configuration file or commented out, because they are only valid for a special architecture or special tasks (like the [cpu] part was only valid for Intel architecture and only performance related) vm.swappiness, kernel.sched_min_granularity_ns, kernel.sched_wakeup_granularity_ns, readahead removed [cpu] section with governor, energy_perf_bias, min_perf_pct commented out vm.dirty_ratio, vm.dirty_background_ratio removed from tuned.conf replaced by vm.dirty_bytes, vm.dirty_background_bytes defined in sysconfig/sapconf kernel.sem, net.ipv4.tcp_slow_start_after_idle, transparent_hugepages moved to sysconfig/sapconf ATTENTION: these changes will take effect immediately after restarting tuned. Except the administrator is using an own copy of the tuned.conf file in /etc/tuned/ (where may be sap-hana or sap-netweaver) to set own or changed values. The tuned.conf files in /etc/tuned/ remain untouched during package installation. To get the new behaviour SAP is recommended, remove the profile copy from /etc/tuned or copy the new tuned.conf file from /usr/lib/tuned/ to /etc/tuned/ or compare the files in /etc/tuned/ with the files in /usr/lib/tuned/ manually and adjust the content, if needed. (bsc#1070494, bsc#1070495, bsc#1070496, bsc#1070503) (bsc#1048550, bsc#1064720) - Setting of UserTasksMax, a parameter of the systemd login manager, will be done in the post script during the package installation. The value is set to 'infinity'. Note: A reboot is needed after the first setup to get the change take effect. A message will indicate if a reboot is necessary. As before there is no automatic rollback. (bsc#1070386) - enable and start sysstat service during post script of the package installation (see SAP Note 1310037) (bsc#1070390) - add package requirements including a short description to the man page of sapconf and to the central configuration file /etc/sysconfig/sapconf (bsc#1070390) - Update the sapconf man page and associated man pages to reflect all the changes of sapconf package version 4.1.12 (bsc#1070506) - respect active tuned profile during reboot of the system even if it is not a 'sap' profile. sapconf only activates sap-netweaver profile by default, if NO tuned profile is actually set. (bsc#1026862) - reinsert 'elevator=noop' to tuned.conf of profile sap-hana and sap-netweaver. (bsc#1031073, bsc#1032516, bsc#1070494)- fix variable name for pagecache handling (bsc#1057986)- restrict UserTasksMax setting to os releases > 12.1- add SLE12-SP1 specific change for UserTasksMax (bsc#1039309 and comment #35 of bsc#1031355)- add a message to %post to remind the admin to restart the tuned service, if he want the configuration changes to take effect immediately (bsc#1048550)- increase MAX_MAP_COUNT_REQ to 2147483647, see SAP Note 900929 (bsc#1048550)- Update package description. - Make "tuned" a mandatory runtime dependency to address bsc#1043844. - In all tuning profiles, do not overwrite a parameter if present value is higher than optimal value. (bsc#1048550)- Amend logind's behaviour (bsc#1031355, bsc#1039309, bsc#1043844)- Add a dependency against the package sapinit-systemd-compat to prevent SAP systems to be stopped every time the SAP Host Agent is restarted (SLE12-SP1 only) (bsc#1043841)- add new profiles for SAP ASE (Sybase) and SAP BOBJ according to fate#320359.- Upgrade to upstream version 4.1.7 that addresses exactly one issue: Lee Martin and colleagues noticed that SAP HANA performs better with "force_latency=70" in its tuning profile, so the setting is now introduced to the profile. (bsc#1032516)- Upgrade to upstream version 4.1.6 that addresses exactly one issue: sapconf's sap-hana tuning profile incorrectly uses "noop" IO scheduler on disk block devices, which is not explicitly recommended by either SUSE or SAP. Performance regression showed up during benchmark runs. Hence, the IO scheduler setting is removed from tuning profile, and left to be decided by end-user. (bsc#1031073)- Use arbitrary precision calculator rather than bash's built-in integer calculator to calculate parameter values, this gets rid of all integer overflow issues observed in production. (bsc#1027411) - Apply tuning technique of Netweaver in HANA profile too. (bsc#1016795) Upgrade to upstream version 4.1.5.- "force_latency=1" is removed from HANA's configuration, so that CPUs are no longer kept busy when idling. (bsc#1025824) - Introduce complementary README.d and LICENSE files from upstream git repository.- Do not touch THP configuration in Netweaver profile, avoid inheriting configuration from high throughput profile. (bsc#994306)- Put version number in source archive name. - Fix a race condition during start (bsc#977575).- Start uuidd.socket as soon as the package is installed. Further fix bsc#983454.- Control uuidd as a step of the tuning process. Fix bsc#983454.- Introduce mandatory dependency on package tuned. Implement fate#320783.- Redo the directory structure in the source archive file. - Introduce /etc/sysconfig/sapnote-1557506 to: * Disable pagecache_limit by default. * Let user decide if and how to tune pagecache_limit. Fix bsc#966930 and bsc#971625.- Mention tuned parameters in manual pages: fix bsc#966720- Fix a misplaced optimisation routine that should have been applied to SAP HANA but in fact applied to SAP NetWeaver. (bsc#962059)- Implement fate#319480 - [ECO] Include tuned architecture in sapconf * Replace the entire sapconf package content with tune daemon SAP profiles, * The executables remain compatible with the original sapconf implementation. * Following files are removed from package source: LGPL README SAPconf SAPconf-reconfig SAPconf.8 config.b64 functions sapconf sapconf.8 sapconf.service * Following file is added into package source: sapconf.tgz/bin/sh/bin/sh/bin/sh/bin/shsheep24 1617257865 5.0.2-7.15.15.0.2-7.15.1 sapconfsapconfcommon.shmv_tuned_conf.shsapconfsccu.shutil.shsupportconfigpluginssapconfsapconf.servicercsapconfsapconf_checksysconfig.sapconfsapconf.5.gzsapconf.7.gzsapconfsaved_configssaved_state/etc/logrotate.d//usr/lib//usr/lib/sapconf//usr/lib/supportconfig//usr/lib/supportconfig/plugins//usr/lib/systemd/system//usr/sbin//usr/share/fillup-templates//usr/share/man/man5//usr/share/man/man7//var/lib//var/lib/sapconf/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:18933/SUSE_SLE-15_Update/533769b9377a230afca200d53395143a-sapconf.SUSE_SLE-15_Updatecpioxz5noarch-suse-linuxASCII textdirectoryBourne-Again shell script, ASCII text executableBourne-Again shell script, UTF-8 Unicode text executableUTF-8 Unicode texttroff or preprocessor input, UTF-8 Unicode text, with very long lines (gzip compressed data, max compression, from Unix)troff or preprocessor input, ASCII text, with very long lines (gzip compressed data, max compression, from Unix)RRRRRyLz_ p# Use a real bash script with an explicit "exit 0" at the end to be by default fail safe # an explicit "exit 1" must be use to enforce package install/upgrade/erase failure where needed # see the "Shared_libraries" section in http://en.opensuse.org/openSUSE:Packaging_scriptlet_snippets # Begin refresh systemd units and clean up possibly obsolete systemd units # The following is a generic way how to refresh and/or clean up systemd units. # A systemd unit may need a refresh after updating a package when the new package # had installed a changed systemd unit file for an enabled systemd unit. # A systemd unit may become obsolete by updating a package (see bnc#904215). # A systemd unit is considered to have become obsolete when the systemd # symlink /etc/systemd/system/.../unit_name -> /path/to/unit_file is broken. # When during package update the new package does no longer provide a unit file # then the systemd symlink becomes broken after the files of the old package # had been actually removed by RPM. # According to /usr/share/doc/packages/rpm/manual/triggers and according # to https://en.opensuse.org/openSUSE:Packaging_scriptlet_snippets#Scriptlet_Ordering # and http://fedoraproject.org/wiki/Packaging:ScriptletSnippets#Scriptlet_Ordering # from the new package only "posttrans of new package" is run after "removal of old package" # so that the new package must do the clean up as RPM posttrans scriptlet. if systemctl --quiet is-enabled sapconf.service 2>/dev/null; then # Refresh still valid enabled systemd units and clean up possibly obsoleted systemd units: # Enforce systemd to use the current unit file which is usually the unit file of the new package # but also in case of custom units (that use other unit files) a "reenable" won't hurt because # "reenable" does not implicitly stop a running service which is "the right thing" because # a RPM package installation must not automatically disrupt (restart) a running service. # Using "--force reenable" is essential to clean up possibly conflicting/broken symlinks. # (without "|| :" build fails with "Failed to get D-Bus connection: No connection to service manager. posttrans script ... failed"): systemctl --quiet --force reenable sapconf.service 2>/dev/null || : else # Refresh still valid disabled systemd units and clean up possibly obsoleted systemd units: # First using "--force reenable" is essential to clean up possibly conflicting/broken symlinks # because there is no "--force disable" that would clean up possibly conflicting/broken symlinks # see https://bugzilla.opensuse.org/show_bug.cgi?id=904215#c34 # so that first the unit has a clean state and then it is set back to disabled (as it was before). # If a disabled systemd unit has become obsoleted, "systemctl --force reenable" will clean it up # which means the unit gets removed and the subsequent "systemctl disable" will do nothing. # (without "|| :" build fails with "Failed to get D-Bus connection: No connection to service manager. posttrans script ... failed"): systemctl --quiet --force reenable sapconf.service 2>/dev/null || : systemctl --quiet disable sapconf.service 2>/dev/null || : fi rm -f /run/sapconf_during_pkg_inst if [ -f /tmp/initial_sapconf_inst ]; then # package initial install rm -f /tmp/initial_sapconf_inst || : [[ $(cat /etc/tuned/active_profile 2>/dev/null) == "" && ! -f /var/run/sapconf/active ]] && systemctl start sapconf.service || : else # package update # check sapconf service state before update sapconfServEnable=false sapconfServActive=false if [ -f /run/sapconf_pre_enblss_found ] && [ -f /run/sapconf_pre_actss_found ]; then echo "sapconf service was active and enabled before, stay with it" rm -f /run/sapconf_pre_enblss_found /run/sapconf_pre_actss_found || : sapconfServEnable=true sapconfServActive=true fi if [ -f /run/sapconf_pre_enblss_found ]; then echo "sapconf service was enabled before, stay with it" rm -f /run/sapconf_pre_enblss_found || : sapconfServEnable=true fi if [ -f /run/sapconf_pre_actss_found ]; then echo "sapconf service was active before, stay with it" rm -f /run/sapconf_pre_actss_found || : sapconfServActive=true fi # if sapconf with tuned support was not used - stop and disable sapconf service # (jsc#SLE-10987 decision) if [ ! -f /var/run/sapconf/active ] && [ -f /run/sapconf_tuned_removal_started ]; then echo "sapconf with tuned support was not used" if [ "$sapconfServEnable" == "true" ]; then echo "but sapconf.service was enabled, so skip disable sapconf service" else echo "disable sapconf service" systemctl disable sapconf.service || : fi if [ "$sapconfServActive" == "true" ]; then echo "but sapconf.service was active, so skip stopping sapconf servi ce" else echo "stop sapconf service" systemctl stop sapconf.service || : fi fi # if sapconf with tuned support was used - stop and disable tuned service # (jsc#SLE-10987 decision) # and enable and start sapconf service (bsc#1176061) ([ -f /var/run/sapconf/active ] && [ -f /run/sapconf_tuned_removal_started ]) && (echo "sapconf with tuned support was used, stop and disable tuned service, enable and start sapconf service"; systemctl stop tuned.service; systemctl disable tuned.service; systemctl enable sapconf.service; systemctl reload-or-restart sapconf.service) || : # if saptune is active - stop and disable sapconf service # (jsc#SLE-10987 decision) [[ $(cat /etc/tuned/active_profile 2>/dev/null) == "saptune" || $(ls -A /var/lib/saptune/saved_state 2>/dev/null) ]] && (echo "saptune is active, stop and disable sapconf service"; systemctl stop sapconf.service; systemctl disable sapconf.service) || : # cleanup 'sapconf with tuned support' indicator rm -f /run/sapconf_tuned_removal_started || : # if sapconf is/was active - reload new configuration (systemctl -q is-active sapconf && [ -f /var/run/sapconf/active ] ) && systemctl reload sapconf.service || : # remove active indicator, so that a restart of sapconf after the package # installation will work correctly, side effect found by bsc#1176061 ! (systemctl -q is-active sapconf) && rm -f /var/run/sapconf/active || : fi exit 0/bin/bashcronutf-8727275f08707753b161c4fc4625009b66086d7cfd9dd639b083d04d6cf426968?P7zXZ !t/GSc] crv(vX0ʱL衁>U¥mW'(QL`L >QQ>aGr yR"#(*NQ# l{ 9S}#F29'7=5Fӽx1<3e/8}$HQ얒+6oM[*35F21Fu"}wV$Sz\^pI\/hVBh狭4o'xVᕚփRŬ8ItǗR 3;S ah\ htN̼ EC5iy:fڡ =N -wr_+A N9t\>*Zqt޻~ځ͡Jod(5_1EvVUTx94u 3 J"Lʌ/ 5*摦68-,@Qc>\*mn#VG; ı+ &\AO&˰ &7ǬT?ʾ 0)+J!lď] wb#1y:۴ 3l&-L|H@m ^R"p6 TmMT7wѹ)%Ynd+wBp.\  L`,c<\_+ = 'kvL8G02.[IJw]Ix?߉PM(2 IDt^s ]nX|+FA WX㠅eNA =sq#o5ZD*Sھ{D1/3hvbX9sjqߌ'ۯ* ѩ9Qk#|R M242A }EEB%mEZ3y.vTj[fzظ m8z)e [z9IDG~S]"{-n`)bӋ^SrHC/kaB2˷i&~.fT^"G-a!mW ';SC|8 FuU{dbŚㄯa'F)N7idMa_q{PZ9b?w!ڢpSy]Abodk#a+c\*جXF͝A1=4}F8bbbY)k>(nq(ϷSS#i=݃E WJR`vۗEt|"'X<#PoaFhHE^Cq&kzsKuo_z ҇ ,&b IC)DsЁQ ZR,JFbJ\pL+3٥fзK C=\(NcSOd:WsdXs|LX)>vgSw*i3n |jn,]XDCG"dUkV*MFx^v`ԍmP'1F꾝w$ͣ.)"N\h~CNQH€*tI9&[}#;/ W3_þyd*}ZH*c׿1~* _S,w!2?h)jl=+r/.5R=H0M|9&U#i:3$<Җ-%Y[AX2Ɯ=-)C6d6 ʿ#XV?Z?a|1Q *hn3q#|$'ELlXjwEcZm܆;æ*e9B^YUR||~2nodN1[=ؠ*a't)`6ZsO鈶MCZCUu@my/NE:!8jE5|pXc%>Sgxk39ޘZ+y5ӃƦe=Ih Lct5:f{*8Z7CY!PM=92Wu]q<* W)Oq\]뻿&.] JZܵo;%Η myQ" c3bxXHH?B~/r]=SI*irupEcmMMfKYq!L51{3/.,o0Uno 9#WeR7i)O!Ȁn4@8YE|f?D]#tϜ6 LrI C3ċ|~ \3Te=<M޳&dh$kRi^j">BQa`dOZY7E6\i-&וEeFja"تk2 1Ǹ{Eնs+˺Z󋊷Y& 9L nI  qg_]Z癆B8x1a瓡u._JP?ysFv\wh삅 Ċ SGʁoe%t82d-Oqe%d8J^;Jc_>RXuoOl^ƋGӜW<8?86 s4Vdm{TL :Egc$MO6- \O4pIFRƇSwս\CJ8"z}پ״M榐3BpǪ7.];,bqǟQfaΛ`#/CCx d^UWU`ɧ-ߢFHzt1^jyxMw`Fe*$}h]`"F,DiV%7Jjx_ãSc"!(Je;Q:ѹC[gًa0ǶRp~&7;qB ~)l[R=u"PǷ ukaEȿPn= L1*ẫx^Ͻ;Hw;.S,oC{i:ƉTsx JFL{R%a'/-(O"NIU|]ߥ BIv*Wd9Zjjd5 O)IǐhB=I }x.Yp>(] ޭp)\m&Iס#'-@{<"&|}axF_$=oQ| 8㧤|KU} Fv둷h-Х2]PրOP1`SI4X!԰BxH9 㮜`BQI,Y 1~|)2&.NjZQ5|5yi'Ė^ »>ub4SPRv%@ŧTRJ^tÜj 0K . ud=DMdrDeK55^3Ha8|w]!m g뒔0"4O_l Flh1I5lPs9NE(> f--ø-}Ws#/2䠅uqR哏g&ubaSg.{9`R9>}ƯFO_ev$03nb-b|P{r\>I9O˿\Џ-RCx/3|<媤>;/6qV|T_Tk3ov4V=~!2Jl&h@RLS`>r+r,*.p;Z>[2||aәQ#nBrkS3%Q|(*z@]͠{-o?;ݞ> e+yCmXUC{Q gcJKA)ipֺ45?kR]"Ul1^j%Lm(sU2G\ߣ=291jIYWQ. su=U yr}\IPG![fEmt83~畟ʼn[@\HSAp0L $z{닎* Gl~K{!LP0+_#~e:[{4pր ( aBf6{>FW;0d$5~mFP[ad{`]agU!Q!`Ay=#V9W N'ߍ~>0y't`ג !@I"n C_ XM.6)3ATg}d ٲ dN]% WwN(USQh$U0D̓+eDTqQŦ4ZG|GQKl*v#G< ĤY3^qy1Ӑevt7]tz/ypRSmF21N)޾fo=>=Oeu'haAnH cKEcB\KkQwZ 8zuuôА,ja=>rh :V%wWnזؤdD~\Sq*\eb ӛ@y->{pbo)R~= 3nǛ;A:'Eu\n"6FB ̔Cdy݆/6*݁oi". HR6jk;ˡl-i:wS#nߨ}$wRbJb0]i9nw 6^ ?zu|;0Y-_h{{xXhd1RU Z[1j;ɈCncA:>ـ/P-;.}=2r*d^$rnz%DryWٗ3GȖ^\TM+k `EpY 7ZE{>(;k=B8cpB4V glX4cb# _eA_dHw2@7UE8 TW=>s0˲\NU*A 7dp2ri#@#ā ].H}Y‹ ֽL}0rj;6T(36Gt|rI:Thj6Sn"&C"穀]do'>R>QN!D 9UT;un"~@,*'ъ>?cʢܛ4`~(Iu\߷&2Jf.z4˚ܾ,]2`#*A2v",ooo@׽ 1&̊~Pɒ 0':5MCYVcqr–3/ݛ_=t_ábǕd\V`Gّq"XT\Bȩx Iw8v")f)C?#^\K݈b,s<`ՇORۜȢ7,K࣍,Y6Yg#cY[j6.$'vCYpyrt!ٝWHy!4$HxC%X Y)#ym_۩7~r&zB zޠ]Kn.8$#kj챨ӈGÔ`O:S3>%(.J> 9^k[^?c,b0P6cЂܳ^1&pZC膇8&Eϟw_@Uo3' Y={6Y`W]S{̔Ua0ȮXn(y>GX &+SN9QGD~0qHNRߩf"b9`80a$( G_qꌏ0v!_Ǿiٚt4[EE"c?Wd k&Mufj7vMiC7?۷b9:𧼫-rW N@˰䝜%D\Bu<1n+b^꿁c%# !BA"soQR1D*Is5ԀIT ޗ hKjQBļ3z}1~TN>q]`abt>a&A?n'6koMĦZ /ft Q=+}O۰cLĕb\V93J;?,g^LmjJv0O8h#ŁIa]qڤc MsՎn}U]N@/x>qԁ7%Z:zc*:lwyЧ/OPܣzo@:'.omJ u* ٦-黫3ERl)ˑBG!\ ag|!M7F]@# Z)]zqYl y۔K5@W2ZSx`RΦ6c߶ĜtCq"axt#+"oB0ZcԳ!t|Li&&A9ߎ`ET3+}{wupOZ'^d$b4[CwIcd(2MF:?In>Y6UI}vu92߁{!}&O(W 9o?. 'SրT5ټ+ܔ( lE%5Oi wx>$?mBNNm|Ѕ!~;q%|&o־`֌NH}O蠊Zr9=ſݫY` ︅ɫӘ2c4^5ʽs΁R\j|tVPW`3z.{U s`뚆 qPKL~pxy&.QBB.C e^)܀WO?A lh/IJ5#FFw*=wG<W@e:,coqߪp6[61 %C̛u#,I*&5ZFIZD"xlrW#b>chHm8#51)3^H(D|b8Et®MzV"4e I&-hQs^Z_|:Tz1sA7Ý~ɓ !IǑ DRxrDfd*Yk+٪+1MiŁ masY)Ӡ)Hc@qnu>+/$钃sSмt?h3ZtW={/PN$ع/,akv} *:E;NABin!Mނ)yZF_7::jc,>8|dX bF#efS%Jߺ:t:`x.m`w(-n# %4եAjo?tsSncCL>cГ%ks,6͑ ,d_ k`|;. &ѝn]@ZgO^q/]C2Ǝ^*8 (˜Jn_TꄩXG@R،@+&Y@QnMVa@5eN["3CRT뒥oeQؠ5pl>l.XdzD᥽T65&Ve̜;"o V5ܑ#41lY9&D&6 Hnu$xf5*gaGuSس^rvv7ٗ9aה>E}i$'_x|SDs7"FJpG<\sbv{"mlbQ(&wp6.X4qJ:8p}5V00m1ӷnsyz >*\2tO#VC?wR:~ˆ^o !Sl(''}dH<0cH5Z$;]Etj|BM1QNqYDӯ*`I OMl/ vιX vu<Dž% 34oUoe.G9EB5Xx38Cj-Of ̉=W̃/7a|ӎA 9Ar?}L0Bj}ѫ j7h2v,6}):8s_,JB6Qϡuo2ic%Jk!zRX5$R+*"U*Jx[{azGMrq93:<3H,u÷S20J ;4o{:l&`WG3.sza^=Nxʷ BO|BTte4WeOFak&|'|!i][x,;zQX4G>ۉt?G*j:gp 2kF| C6Nn mU~K۩ʲIjs.@ [,sb;r<dJ-pI[9DXoTKv:;q+jqm~En߯VڞL9Dҏ6XI9\qq>2=K;Om hH\vo] LR {iECBX>*s1Dǔ0Syf_ ٷ0>NUnysPb RDE,W=y37`9끆 3 QxYz\eV;R +m- nR M-+֚G Az- VpjSfKFw>Lg{5NOZgd'pE̎9YŠS|^ԃA1U`'/YFxhҿz&7'iG|B 3w";:=fs#5H{!;`v(ip1Ti+}u8ļZA}8Jq#ۨ&oҵA1̄ ,+#\<"VRM!Г|99:(eFC0Z&1Û^7 H|cx:(/7020Vv~0` ^5x`/cE*'/_u˄J8>~Oq>a^s$εF]aL/ڠMGuA#3lk }CKI5m&45w|YZ?["j^z@[2A6 x1w$EHG -/#Rsde 6Ur b"Jx5qOzCՙu|8MϐL {WÂH/5E 6I9ɧ3ժ_Yn߶ K7w`͇gӠk(Bʭmv)U.XeVFш,; '*̠e6p%hS"1&] E̊_<9,E=UNzAzDN_JD5O5it{w9y ,3)S7)%(Il[..ѮT:;A8sW8*J+?"vEϔh |E^N/86q8PޛJJ n4"F +F`G"u*+]h feZߒaA薈1by{ Ul8]=sWx)Z}/: PIC Y8O qPƊzTF3]AZi8g"ʷQE6.~=9+VtJT.g'Cޥ\vg- ]5$Hgrx.*KZL|v aC59|V G}$B'.ޏeF0JLc_2:X?_ƚU{^lLej BAk ;+ 58VHCh8|Moċ5sb/CnNzy+BԠ Y`.IVnp4A{l^@7Hc dޮ4A5P/G1ҩ+AH|`1 *5U#- O+e{4Gp/ݤH B]~Ybi pwdJSwAY:z`hyx$ 6#W xk裻at q;GtVB6rSBkpg5"$jnw&*w,3 m6eZʑ]2}l J@ ͌-X;4U`~&IzY>w| 7/>\\F;lq36\ň-?dr-}@|7B&P=Q'd6 m|[峇ه\yZET`ͭ pN{*mS·+KĀ6103!wiPS"2 FGձJr.YCyj 3Z!͹CdK8(W4>M^VdSצ_/ׅWs_Je*ПQ4<>1q"vLHk冁]C0B30o RV6jLe\~gap_a*Zp v]1F"""7fp;h"-!tJn;Z`&78^m[k!X_b,a55:'A3o=*|jnһ^PſMӰc@r2kM}dFR/m?Y~Ѽ^(\3u#xAnmso(ۚ~}o#^#Lfd a&>5.s(sd#\=xFeM! $P?vw#e,X0E:WF.϶5jBL8`J3z0:yZ iz(>Y sAa*]l_u[!}bqk7,EKlYﴱk,[7R]2+t< &A5zhFY_2}EH5.azYl"VS_Nι?Hw)NR_ƦEOSp; hq9$1DEE9{M3LC#UuOǓUXх-IG4.eM =k8 YƧNEDgLط1Z"+8sa3Z Ɍ[6^q;b ?j`[ M4DۈoŘ] @)*R7N?Q-YIБFw syY -3(sOWTdD΄㘟(LcʒLOr"&u5Dyi`i_ɜ M̝g;)NIn1YP y1EAeӫѡ8ǣ3wLK=JT7~E:i-zPf^H*h[qRg;wRv?p4V34J>?1?_.@jN`8q)K$,qȇᗚV %bK*IZ-m4-AGDU*PtǕEЁYMo\џ4=2t~4:]A U3vdj"lnV 4]Cx(.?KjBglY 9,j¹eQ!>ϖdN=]޺U~߆,r58%vȓ.L%"][WG%,E_-X"4=f-;Q`XO;IW'(EJ I *w?#e~Ӱ?7IsX +I& #t^jlYUB K}Lm8Ϝd%v!:7EoT]X:efH#qk>>$3iw~{.Eϒ٥(ng' PhL5߂فñ:mRKs#f(9T.ong۱DpRűOG:j*5Fo: DYC PܦQdv+yX/k‰_!P? P;SvS5ǜ b[:fz )ꪏ&'*/Nܚ7G+H:4ipkyAh`lDS ?|\)`5EI0u6r:Ab^]F[:ƵwЛB >J^N<25ϊ͐1rD{Sc̋7g:[pV*kZTOfkpm|5%m 0{&{L1ZJ/"6<\ D@R):;K)^䁉P.~piυPcs`Uu ӮHS#Ѫv8<d?eX2ЙA?wRϬ Mrx[]5EsTc^16|03;.?b^R5vB,=$j<h.Jj0&>VAC\E\.W*tTf?C:cA1v]_TҌ ȳ8\Ǝ~8Kn"\5[1:9qC.I ̑,ϼ*RCQrQ8$  MLTs^u~1*冇@7f+B5] |6 .ޝREíspgfꌕ짢 t1wlJ;zIMd:Tq)e}X 2ǏäD3e"^})ޥ[ ,Ho;D3b Lρg܉+ `6% fE Vz79oJC\ǘg${]]pbTVG{{8Vpsas ! Ƴ*5S8&'ksaT ,uðД%nq?WVB٧hxN Tr2Z G!02BC?¶γx.T|z~C?p7dK} [:`%=B PgH}TMb;<e>yU;1!JE"fazIx9%`hjz^`>ҩWځB7+2:7{IRi:zs^L wE_/a$xĠ`!Ox9Ao/`AShbOx pj=Hw{D%n<vz(BP/zt@nkDq}h#4N0Qx%Bi'H~"뻛NB|Cq죮nUa睒 %eTCLsjot?co@EV=8Bb(,i1h"7 Sd mz-lh  pK*O-,ࣅK9 <"ȟjw[UTc}/hUӚ9>3FeU<D(1<ӳLN@"o+G\' Tjۼa?i_bh׿ϲ5j[\>''*[)=/V L%J #a#s(g{]ep1 2&w7*g/Ux׾d1IYJ5vW 6䕠!C6s9<^PTA4>G"Թ4KgY@Z03ZZ@Xò ՎnE: Ks[߭G6G1ZjS75@hdi)P11  ;@51gP~q4.D,g\PKaH`^2Ino ذdvSdT~ɗ%m]dmҼc̜,t5!0)#i)K"MrqU>.t )`0DіɪJC,vI_,:p|QO9}h,M_TK| S۬E0nI[&+ƿ=&3:qT5HEg [3d6oAM>O$Oy^85q+;d#q\`I9zoT<)_R)*th(rR=N̼Pᄡ߸J?z/XE:jȐ4v@a- c N;RHCIxɋ5vqַoXagQ˳ЩׂV;Tr\w/[[XQ[)W$8+PDQpR|Y&?'zefǻH}C_bZ7 ;mHD?(Hv#tpy{qkLJ[i4c[K}Eep<ԱP^DH:$r ^tL/ ׉0֖&?|W 'C[94:Յgy`1 ፔ u~e y?ƒ-u:ёG [L02=i-LűJ&g"9Ysj̑HjeB*]D B/.RM?02dSUR3mkZ,2)\BЀ S'No?0xQU5s1T*=RspNQY+vJ:vדn~V^c7DeD3 j1y)URUYzoObժ8.7O S+ieӜ-^jg!qw U9K!ʓd:?T䄢+q~+?lBs.< Kڟ ?_=<7qP5HCqqM]OVJ5kyz-! km\~vAo C@m*~sLxB[tH$S^JJmE o<=ڜkB/@Nb OӠ`4A{teijYc< MN((PGOXK۞Eme(C3sB,ƴ[F-Y32-ƻf.: uG܊nS'ss0V8~|w~_ CoͻpֺpGqJի"{=(r7t)D}=ᢂhĵ8 %6e~\EUXjMDQ!YbQX{NN7AVddUr -M߾`BE 2ih(9n+L K#ٹ`&߱ 22CBuFLZ<Ø!cZ^q'esQ9EOx8f5љ65p`ȤU]mzmBYԑMgjXq L/+h]U >0. }VfGaOK@7u.P$zAEw }ӎNٰ+UqVB _YN v3Je}{h-dQVF/F1g̱#++Q :]w'񺥀 pRmp`t/gJEnbb엾~~9I BB11}N+'Ms f${^PⒻҽ&ѰV t% Hc`һ;mC:"MZD[tk ʓۥ%ؚputH7^h$J摛*<~^Wbr4XfQ56Dbڣˇm'U(9fPb1) %їD<g>530`ﱫaEfZC8"(@j?Ӫo7{ >4B l/i[ -7ȟrKD~{ :!4 9$ ; y&:[V.Epsۿ苌ړ5U$m]Ç/~"G',+pEۑ<֌%bD>4lTS*X_Yoݍs.b/bLC7PP.(jûOBid[TJU6hw-BPÒ;Q9؞"z b$Bv!f^PMa9 pLW1 \c?Dw9?}A5?b-s~hӗ) 36ts ٻT%kˈǮ#1{(ę524mun>L{;Lu@KL0IdӮ+{ _w@ .=X#m#( [ DK`>۴X} 0YVpR)AI1VOS1_(yuEiijɨh~2)>@X`liU[j"{BO2Be|hߑ$fϤU$J_& G2iJ ܠzJf' aBSwUp=%e &`ngϞ 6+J']K\7Vg5G.mmߡ%3ŽlNmJO_);j(dXIU·#e櫱v99F`8@hĴ뗏LGM_w{pZ*XÇEg=GiHFG7*Ioj Bd"n!Rzh]Ǧ9ޡvwIYnۺ1X ?I<JjnUo eGG?=:IBa %ֺ=턅je_K5|Ojfs2+Q"})_kϷfOȝ2֕Ȝ*kNԚ" ܶQ2O}hM[̊IlT$2*θ}BȨz|ߚѢZhǫZJ]"fm eljʚlgT ޲)臓<薄"E0L$T ;"W1(S]T#9mPp9m. ECy{9ڳ.,ojn@jvf-@i;) hp8ѥJj-?&ƭ$2o0!6o̥@絉<ӡv!8=WsU%P bzјT"=$WB:Fx`eGW5`ily'k:NZ߷U%xül}NwqFtWߧm@ mStYN"㠐 mՏ ?x`RR > @4at .eƚ- asÉf`6|g5#R$XOSN&p)Ù gZ< 6&<irCa]Q`>GSK:?zhF 6%ߚi^'{(b>ud]sx0GSlO6Z}у/(PttC]iw\pF W 5<-䖋'&4w)Ĵ{T)v9f>g>C!GZz!H~^X'II.%?&i UWk{ek[K8_\[Yp?$Psȳ!GG)fD1#yAy$Y_F4*WD=hM=][ϵL+2`9N a|6%Ák&= ThzEURvܼŖ%Kli+# %.H)f*VL) ͗bfQEn}jci֏KKSmx_xIV;Oc"[{G"H~TEU(7N㭩ݭPd]ߊ};Ψ;oM }uJ`(~EE{/(qh:GᑏCO.M'% k`Y\4 gM/X=o}P,W'3o/ Gܘv.yleҩ*ԉMqA`8o)2!:ɵSϓ`YvipK 2XH!͐`K*`rȾ@uZc5#Lz/=V9Tf:Yũ`ûI[j{^=oZ3P Ζ@m6 @uiUEFZҝ#/;WP{K'U\C7Py hܻE9)E5ZQ am'W1/nۅS S:rEV*nB^/\CHnPԯN&Я}qf(4Z_XT@`5ӵAms,t+  19TR-Y~iT| A~I9lnAcLZvQJ:+4^)3z|ubj\: qa@7{LN#ǡX+) BOݦPTY)2A=Gj7i'GX7c NğG?ېhck)}ycD~ N[m)(Ȗ:k7R T4 @ʹPXWC%4HkkR><_B4&^|51BUgrUQ~{]|c/Ҵ`t~>l ݯjv߈ GVm*0& M>SF >ӞͫGҎ_޻.e9%Drw(͹aZIE?ĻV=~:uXc!nq' nm.| dqطWRrфMN$0Gt0Ҍl U}Iqfe{}|hauY( $t1>#b R5ۘU?Jh: ^(&[ľԮ'f j/GYE'/ęU~蛲'|'{1Bp mM樬]Ecr-N\uG=<md]daoSf:ĶdUHAb#{9؄EnPN Okx}4w::lpPQdע?lB`d:ԎfE϶ YZ