From nobody@FreeBSD.org  Fri Sep 21 18:47:02 2012
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
	by hub.freebsd.org (Postfix) with ESMTP id 3D3E5106564A
	for <freebsd-gnats-submit@FreeBSD.org>; Fri, 21 Sep 2012 18:47:02 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22])
	by mx1.freebsd.org (Postfix) with ESMTP id 1DC5C8FC08
	for <freebsd-gnats-submit@FreeBSD.org>; Fri, 21 Sep 2012 18:47:02 +0000 (UTC)
Received: from red.freebsd.org (localhost [127.0.0.1])
	by red.freebsd.org (8.14.5/8.14.5) with ESMTP id q8LIl1TC026889
	for <freebsd-gnats-submit@FreeBSD.org>; Fri, 21 Sep 2012 18:47:01 GMT
	(envelope-from nobody@red.freebsd.org)
Received: (from nobody@localhost)
	by red.freebsd.org (8.14.5/8.14.5/Submit) id q8LIl1TN026888;
	Fri, 21 Sep 2012 18:47:01 GMT
	(envelope-from nobody)
Message-Id: <201209211847.q8LIl1TN026888@red.freebsd.org>
Date: Fri, 21 Sep 2012 18:47:01 GMT
From: Frank Wall <fw@moov.de>
To: freebsd-gnats-submit@FreeBSD.org
Subject: [PATCH] databases/mysql55-server: add support for multiple instances (profiles)
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         171852
>Category:       ports
>Synopsis:       [PATCH] databases/mysql55-server: add support for multiple instances (profiles)
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    ale
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Fri Sep 21 18:50:08 UTC 2012
>Closed-Date:    
>Last-Modified:  Mon Sep 24 23:20:08 UTC 2012
>Originator:     Frank Wall
>Release:        7.4-RELEASE-p9
>Organization:
>Environment:
FreeBSD XXX 7.4-RELEASE-p9 FreeBSD 7.4-RELEASE-p9 #0: Mon Jun 11 19:47:58 UTC 2012     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64

>Description:
This patch adds support for multiple MySQL instances ("profiles"). It's based upon the profile support in databases/postgresql91-server. It does NOT violate POLA, because the ports works the same until you define mysql_profiles="a b c" in /etc/rc.conf.

This patch changes two things among the profile support:

1.) Add "mysql_bindip" tunable to allow profiles to bind to different IP addresses. It defaults to 0.0.0.0, just like not defining it at all.

2.) Add "mysql_port" tunable to allow profiles to listen on different TCP ports. It defaults to 3306, of course.

3.) In case profile support is enabled, make sure either "mysql_bindip" or "mysql_port" is defined to avoid having multiple profiles using the same (conflicting) default configuration.

You may wonder: "Why add profile support? There is mysqld_multi included!"
Well, mysqld_multi does not handle startup and shutdown of instances on system startup/shutdown. The approach of using profiles will just do that. And it's proven to work, since profiles are already used in databases/postgresql91-server and www/apache22.

In case you agree to commit this patch I would provide a patch for databases/mysql51-server with a new PR.
>How-To-Repeat:
apply the patch
>Fix:


Patch attached with submission follows:

--- databases/mysql55-server/files/mysql-server.in.orig	2012-09-20 16:26:05.550514234 +0200
+++ databases/mysql55-server/files/mysql-server.in	2012-09-21 20:30:00.783520896 +0200
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $FreeBSD: ports/databases/mysql55-server/files/mysql-server.in,v 1.1 2012/08/05 23:19:36 dougb Exp $
+# $FreeBSD$
 #
 
 # PROVIDE: mysql
@@ -11,13 +11,19 @@
 # Add the following line to /etc/rc.conf to enable mysql:
 # mysql_enable (bool):	Set to "NO" by default.
 #			Set it to "YES" to enable MySQL.
+# mysql_profiles (str):	Set to "" by default.
+#			Define your profiles here.
 # mysql_limits (bool):	Set to "NO" by default.
 #			Set it to yes to run `limits -e -U mysql`
 #			just before mysql starts.
 # mysql_dbdir (str):	Default to "/var/db/mysql"
 #			Base database directory.
-# mysql_pidfile (str):	Custum PID file path and name.
+# mysql_pidfile (str):	Custom PID file path and name.
 #			Default to "${mysql_dbdir}/${hostname}.pid".
+# mysql_bindip (str):	Custom IP address to bind to.
+#			Default is 0.0.0.0.
+# mysql_port (str):	Custom port number.
+#			Default is 3306.
 # mysql_args (str):	Custom additional arguments to be passed
 #			to mysqld_safe (default empty).
 #
@@ -32,16 +38,78 @@
 : ${mysql_enable="NO"}
 : ${mysql_limits="NO"}
 : ${mysql_dbdir="/var/db/mysql"}
+: ${mysql_user="mysql"}
+: ${mysql_bindip="0.0.0.0"}
+: ${mysql_port="3306"}
 
-mysql_user="mysql"
 mysql_limits_args="-e -U ${mysql_user}"
 pidfile=${mysql_pidfile:-"${mysql_dbdir}/`/bin/hostname`.pid"}
 command="/usr/sbin/daemon"
-command_args="-c -f %%PREFIX%%/bin/mysqld_safe --defaults-extra-file=${mysql_dbdir}/my.cnf --user=${mysql_user} --datadir=${mysql_dbdir} --pid-file=${pidfile} ${mysql_args}"
 procname="%%PREFIX%%/libexec/mysqld"
 start_precmd="${name}_prestart"
 start_postcmd="${name}_poststart"
 mysql_install_db="%%PREFIX%%/bin/mysql_install_db"
+
+if [ -n "$2" ]; then
+	profile="$2"
+	if [ "x${mysql_profiles}" != "x" ]; then
+		eval _bindip="\${mysql_${profile}_bindip}"
+		eval _port="\${mysql_${profile}_port}"
+		if [ "x$_bindip" = "x" ] && [ "x$_port" = "x" ]; then
+			echo "You must define either \"mysql_${profile}_port\" or \"mysql_${profile}_bindip\""
+			exit 1
+		fi
+
+		eval mysql_enable="\${mysql_${profile}_enable:-${mysql_enable}}"
+		eval mysql_dbdir="\${mysql_${profile}_dbdir:-"/var/db/mysql-profile/${profile}"}"
+		eval pidfile="\${mysql_${profile}_pidfile:-"${mysql_dbdir}/${profile}.pid"}"
+		eval mysql_bindip="\${mysql_${profile}_bindip:-${mysql_bindip}}"
+		eval mysql_port="\${mysql_${profile}_port:-${mysql_port}}"
+		eval mysql_user="\${mysql_${profile}_user:-${mysql_user}}"
+		eval mysql_limits="\${mysql_${profile}_limits:-${mysql_limits}}"
+		eval mysql_args="\${mysql_${profile}_args:-${mysql_args}}"
+	else
+		echo "$0: extra argument ignored"
+	fi
+else
+	eval mysql_envvars=${envvars}
+	if [ "x${mysql_profiles}" != "x" -a "x$1" != "x" ]; then
+		for profile in ${mysql_profiles}; do
+			eval _enable="\${mysql_${profile}_enable}"
+			case "x${_enable:-${mysql_enable}}" in
+			x|x[Nn][Oo]|x[Nn][Oo][Nn][Ee])
+				continue
+				;;
+			x[Yy][Ee][Ss])
+				;;
+			*)
+				if test -z "$_enable"; then
+					_var=mysql_enable
+				else
+					_var=mysql_"${profile}"_enable
+				fi
+				echo "Bad value" \
+				    "'${_enable:-${mysql_enable}}'" \
+				    "for ${_var}. " \
+				    "Profile ${profile} skipped."
+				continue
+				;;
+			esac
+			echo "===> mysql profile: ${profile}"
+			/usr/local/etc/rc.d/mysql-server $1 ${profile}
+			retcode="$?"
+			if [ "0${retcode}" -ne 0 ]; then
+				failed="${profile} (${retcode}) ${failed:-}"
+			else
+				success="${profile} ${success:-}"
+			fi
+		done
+		exit 0
+	fi
+fi
+
+# Construct arguments after the profile configuration has been processed. 
+command_args="-c -f %%PREFIX%%/bin/mysqld_safe --defaults-extra-file=${mysql_dbdir}/my.cnf --user=${mysql_user} --datadir=${mysql_dbdir} --pid-file=${pidfile} --bind-address=${mysql_bindip} --port=${mysql_port} ${mysql_args}"
 mysql_install_db_args="--basedir=%%PREFIX%% --datadir=${mysql_dbdir} --force"
 
 mysql_create_auth_tables()


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-ports-bugs->ale 
Responsible-Changed-By: edwin 
Responsible-Changed-When: Fri Sep 21 18:50:19 UTC 2012 
Responsible-Changed-Why:  
Over to maintainer (via the GNATS Auto Assign Tool) 

http://www.freebsd.org/cgi/query-pr.cgi?pr=171852 

From: Frank Wall <fw@moov.de>
To: <bug-followup@freebsd.org>, <freebsd-ports-bugs@freebsd.org>
Cc:  
Subject: Re: ports/171852: [PATCH] databases/mysql55-server: add support for
 multiple instances (profiles)
Date: Tue, 25 Sep 2012 01:12:58 +0200

 --=_d059d562dc98cb85a3f6188de212aa57
 Content-Transfer-Encoding: 7bit
 Content-Type: text/plain; charset=UTF-8;
  format=flowed
 
 Hi,
 
 >>Category:       ports
 >>Responsible:    freebsd-ports-bugs
 >>Synopsis:       [PATCH] databases/mysql55-server: add support for 
 >> multiple instances (profiles)
 >>Arrival-Date:   Fri Sep 21 18:50:08 UTC 2012
 
 attached is an updated version of the original patch.
 Few more changes were required to make it work in
 real world.
 
 
 Bye
 - Frank
 --=_d059d562dc98cb85a3f6188de212aa57
 Content-Transfer-Encoding: base64
 Content-Type: text/plain;
  name=patch.txt
 Content-Disposition: attachment;
  filename=patch.txt;
  size=4685
 
 LS0tIGRhdGFiYXNlcy9teXNxbDU1LXNlcnZlci9maWxlcy9teXNxbC1zZXJ2ZXIuaW4ub3JpZwky
 MDEyLTA4LTA2IDAxOjE5OjM2LjAwMDAwMDAwMCArMDIwMAorKysgZGF0YWJhc2VzL215c3FsNTUt
 c2VydmVyL2ZpbGVzL215c3FsLXNlcnZlci5pbgkyMDEyLTA5LTI1IDAwOjQwOjMyLjAwMDAwMDAw
 MCArMDIwMApAQCAtMSw2ICsxLDYgQEAKICMhL2Jpbi9zaAogIwotIyAkRnJlZUJTRDogcG9ydHMv
 ZGF0YWJhc2VzL215c3FsNTUtc2VydmVyL2ZpbGVzL215c3FsLXNlcnZlci5pbix2IDEuMSAyMDEy
 LzA4LzA1IDIzOjE5OjM2IGRvdWdiIEV4cCAkCisjICRGcmVlQlNEJAogIwogCiAjIFBST1ZJREU6
 IG15c3FsCkBAIC0xMSwxMyArMTEsMTkgQEAKICMgQWRkIHRoZSBmb2xsb3dpbmcgbGluZSB0byAv
 ZXRjL3JjLmNvbmYgdG8gZW5hYmxlIG15c3FsOgogIyBteXNxbF9lbmFibGUgKGJvb2wpOglTZXQg
 dG8gIk5PIiBieSBkZWZhdWx0LgogIwkJCVNldCBpdCB0byAiWUVTIiB0byBlbmFibGUgTXlTUUwu
 CisjIG15c3FsX3Byb2ZpbGVzIChzdHIpOglTZXQgdG8gIiIgYnkgZGVmYXVsdC4KKyMJCQlEZWZp
 bmUgeW91ciBwcm9maWxlcyBoZXJlLgogIyBteXNxbF9saW1pdHMgKGJvb2wpOglTZXQgdG8gIk5P
 IiBieSBkZWZhdWx0LgogIwkJCVNldCBpdCB0byB5ZXMgdG8gcnVuIGBsaW1pdHMgLWUgLVUgbXlz
 cWxgCiAjCQkJanVzdCBiZWZvcmUgbXlzcWwgc3RhcnRzLgogIyBteXNxbF9kYmRpciAoc3RyKToJ
 RGVmYXVsdCB0byAiL3Zhci9kYi9teXNxbCIKICMJCQlCYXNlIGRhdGFiYXNlIGRpcmVjdG9yeS4K
 LSMgbXlzcWxfcGlkZmlsZSAoc3RyKToJQ3VzdHVtIFBJRCBmaWxlIHBhdGggYW5kIG5hbWUuCisj
 IG15c3FsX3BpZGZpbGUgKHN0cik6CUN1c3RvbSBQSUQgZmlsZSBwYXRoIGFuZCBuYW1lLgogIwkJ
 CURlZmF1bHQgdG8gIiR7bXlzcWxfZGJkaXJ9LyR7aG9zdG5hbWV9LnBpZCIuCisjIG15c3FsX2Jp
 bmRpcCAoc3RyKToJQ3VzdG9tIElQIGFkZHJlc3MgdG8gYmluZCB0by4KKyMJCQlEZWZhdWx0IGlz
 IDAuMC4wLjAuCisjIG15c3FsX3BvcnQgKHN0cik6CUN1c3RvbSBwb3J0IG51bWJlci4KKyMJCQlE
 ZWZhdWx0IGlzIDMzMDYuCiAjIG15c3FsX2FyZ3MgKHN0cik6CUN1c3RvbSBhZGRpdGlvbmFsIGFy
 Z3VtZW50cyB0byBiZSBwYXNzZWQKICMJCQl0byBteXNxbGRfc2FmZSAoZGVmYXVsdCBlbXB0eSku
 CiAjCkBAIC0zMiwxNiArMzgsODcgQEAKIDogJHtteXNxbF9lbmFibGU9Ik5PIn0KIDogJHtteXNx
 bF9saW1pdHM9Ik5PIn0KIDogJHtteXNxbF9kYmRpcj0iL3Zhci9kYi9teXNxbCJ9Cis6ICR7bXlz
 cWxfdXNlcj0ibXlzcWwifQorOiAke215c3FsX2JpbmRpcD0iMC4wLjAuMCJ9Cis6ICR7bXlzcWxf
 cG9ydD0iMzMwNiJ9Cis6ICR7bXlzcWxfbmV0d29ya2luZz0iWUVTIn0KKzogJHtteXNxbF9zb2Nr
 ZXQ9Ii90bXAvbXlzcWwuc29jayJ9CiAKLW15c3FsX3VzZXI9Im15c3FsIgogbXlzcWxfbGltaXRz
 X2FyZ3M9Ii1lIC1VICR7bXlzcWxfdXNlcn0iCiBwaWRmaWxlPSR7bXlzcWxfcGlkZmlsZTotIiR7
 bXlzcWxfZGJkaXJ9L2AvYmluL2hvc3RuYW1lYC5waWQifQogY29tbWFuZD0iL3Vzci9zYmluL2Rh
 ZW1vbiIKLWNvbW1hbmRfYXJncz0iLWMgLWYgJSVQUkVGSVglJS9iaW4vbXlzcWxkX3NhZmUgLS1k
 ZWZhdWx0cy1leHRyYS1maWxlPSR7bXlzcWxfZGJkaXJ9L215LmNuZiAtLXVzZXI9JHtteXNxbF91
 c2VyfSAtLWRhdGFkaXI9JHtteXNxbF9kYmRpcn0gLS1waWQtZmlsZT0ke3BpZGZpbGV9ICR7bXlz
 cWxfYXJnc30iCiBwcm9jbmFtZT0iJSVQUkVGSVglJS9saWJleGVjL215c3FsZCIKIHN0YXJ0X3By
 ZWNtZD0iJHtuYW1lfV9wcmVzdGFydCIKIHN0YXJ0X3Bvc3RjbWQ9IiR7bmFtZX1fcG9zdHN0YXJ0
 IgogbXlzcWxfaW5zdGFsbF9kYj0iJSVQUkVGSVglJS9iaW4vbXlzcWxfaW5zdGFsbF9kYiIKKwor
 aWYgWyAtbiAiJDIiIF07IHRoZW4KKwlwcm9maWxlPSIkMiIKKwlpZiBbICJ4JHtteXNxbF9wcm9m
 aWxlc30iICE9ICJ4IiBdOyB0aGVuCisJCWV2YWwgX2JpbmRpcD0iXCR7bXlzcWxfJHtwcm9maWxl
 fV9iaW5kaXB9IgorCQlldmFsIF9wb3J0PSJcJHtteXNxbF8ke3Byb2ZpbGV9X3BvcnR9IgorCQll
 dmFsIF9uZXR3b3JraW5nPSJcJHtteXNxbF8ke3Byb2ZpbGV9X25ldHdvcmtpbmd9IgorCQlpZiBb
 ICJ4JF9iaW5kaXAiID0gIngiIF0gJiYgWyAieCRfcG9ydCIgPSAieCIgXSAmJiBbICJ4JF9uZXR3
 b3JraW5nIiA9ICJ4WUVTIiBdOyB0aGVuCisJCQllY2hvICJZb3UgbXVzdCBkZWZpbmUgZWl0aGVy
 IFwibXlzcWxfJHtwcm9maWxlfV9wb3J0XCIgb3IgXCJteXNxbF8ke3Byb2ZpbGV9X2JpbmRpcFwi
 IgorCQkJZXhpdCAxCisJCWZpCisKKwkJZXZhbCBteXNxbF9lbmFibGU9Ilwke215c3FsXyR7cHJv
 ZmlsZX1fZW5hYmxlOi0ke215c3FsX2VuYWJsZX19IgorCQlldmFsIG15c3FsX2RiZGlyPSJcJHtt
 eXNxbF8ke3Byb2ZpbGV9X2RiZGlyOi0iL3Zhci9kYi9teXNxbC1wcm9maWxlLyR7cHJvZmlsZX0i
 fSIKKwkJZXZhbCBwaWRmaWxlPSJcJHtteXNxbF8ke3Byb2ZpbGV9X3BpZGZpbGU6LSIke215c3Fs
 X2RiZGlyfS8ke3Byb2ZpbGV9LnBpZCJ9IgorCQlldmFsIG15c3FsX2JpbmRpcD0iXCR7bXlzcWxf
 JHtwcm9maWxlfV9iaW5kaXA6LSR7bXlzcWxfYmluZGlwfX0iCisJCWV2YWwgbXlzcWxfcG9ydD0i
 XCR7bXlzcWxfJHtwcm9maWxlfV9wb3J0Oi0ke215c3FsX3BvcnR9fSIKKwkJZXZhbCBteXNxbF9u
 ZXR3b3JraW5nPSJcJHtteXNxbF8ke3Byb2ZpbGV9X25ldHdvcmtpbmc6LSR7bXlzcWxfbmV0d29y
 a2luZ319IgorCQlldmFsIG15c3FsX3NvY2tldD0iXCR7bXlzcWxfJHtwcm9maWxlfV9zb2NrZXQ6
 LSR7bXlzcWxfc29ja2V0fX0iCisJCWV2YWwgbXlzcWxfdXNlcj0iXCR7bXlzcWxfJHtwcm9maWxl
 fV91c2VyOi0ke215c3FsX3VzZXJ9fSIKKwkJZXZhbCBteXNxbF9saW1pdHM9Ilwke215c3FsXyR7
 cHJvZmlsZX1fbGltaXRzOi0ke215c3FsX2xpbWl0c319IgorCQlldmFsIG15c3FsX2FyZ3M9Ilwk
 e215c3FsXyR7cHJvZmlsZX1fYXJnczotJHtteXNxbF9hcmdzfX0iCisJZWxzZQorCQllY2hvICIk
 MDogZXh0cmEgYXJndW1lbnQgaWdub3JlZCIKKwlmaQorZWxzZQorCWV2YWwgbXlzcWxfZW52dmFy
 cz0ke2VudnZhcnN9CisJaWYgWyAieCR7bXlzcWxfcHJvZmlsZXN9IiAhPSAieCIgLWEgIngkMSIg
 IT0gIngiIF07IHRoZW4KKwkJZm9yIHByb2ZpbGUgaW4gJHtteXNxbF9wcm9maWxlc307IGRvCisJ
 CQlldmFsIF9lbmFibGU9Ilwke215c3FsXyR7cHJvZmlsZX1fZW5hYmxlfSIKKwkJCWNhc2UgIngk
 e19lbmFibGU6LSR7bXlzcWxfZW5hYmxlfX0iIGluCisJCQl4fHhbTm5dW09vXXx4W05uXVtPb11b
 Tm5dW0VlXSkKKwkJCQljb250aW51ZQorCQkJCTs7CisJCQl4W1l5XVtFZV1bU3NdKQorCQkJCTs7
 CisJCQkqKQorCQkJCWlmIHRlc3QgLXogIiRfZW5hYmxlIjsgdGhlbgorCQkJCQlfdmFyPW15c3Fs
 X2VuYWJsZQorCQkJCWVsc2UKKwkJCQkJX3Zhcj1teXNxbF8iJHtwcm9maWxlfSJfZW5hYmxlCisJ
 CQkJZmkKKwkJCQllY2hvICJCYWQgdmFsdWUiIFwKKwkJCQkgICAgIicke19lbmFibGU6LSR7bXlz
 cWxfZW5hYmxlfX0nIiBcCisJCQkJICAgICJmb3IgJHtfdmFyfS4gIiBcCisJCQkJICAgICJQcm9m
 aWxlICR7cHJvZmlsZX0gc2tpcHBlZC4iCisJCQkJY29udGludWUKKwkJCQk7OworCQkJZXNhYwor
 CQkJZWNobyAiPT09PiBteXNxbCBwcm9maWxlOiAke3Byb2ZpbGV9IgorCQkJL3Vzci9sb2NhbC9l
 dGMvcmMuZC9teXNxbC1zZXJ2ZXIgJDEgJHtwcm9maWxlfQorCQkJcmV0Y29kZT0iJD8iCisJCQlp
 ZiBbICIwJHtyZXRjb2RlfSIgLW5lIDAgXTsgdGhlbgorCQkJCWZhaWxlZD0iJHtwcm9maWxlfSAo
 JHtyZXRjb2RlfSkgJHtmYWlsZWQ6LX0iCisJCQllbHNlCisJCQkJc3VjY2Vzcz0iJHtwcm9maWxl
 fSAke3N1Y2Nlc3M6LX0iCisJCQlmaQorCQlkb25lCisJCWV4aXQgMAorCWZpCitmaQorCisjIE5P
 VEU6IENvbnN0cnVjdCBhcmd1bWVudHMgYWZ0ZXIgdGhlIHByb2ZpbGUgY29uZmlndXJhdGlvbiBo
 YXMgYmVlbiBwcm9jZXNzZWQuCitpZiBbICJ4JHtteXNxbF9uZXR3b3JraW5nfSIgPT0gInhOTyIg
 XTsgdGhlbgorCWNvbW1hbmRfYXJncz0iLWMgLWYgJSVQUkVGSVglJS9iaW4vbXlzcWxkX3NhZmUg
 LS1kZWZhdWx0cy1leHRyYS1maWxlPSR7bXlzcWxfZGJkaXJ9L215LmNuZiAtLXVzZXI9JHtteXNx
 bF91c2VyfSAtLWRhdGFkaXI9JHtteXNxbF9kYmRpcn0gLS1waWQtZmlsZT0ke3BpZGZpbGV9IC0t
 c29ja2V0PSR7bXlzcWxfc29ja2V0fSAke215c3FsX2FyZ3N9IgorZWxzZQorCWNvbW1hbmRfYXJn
 cz0iLWMgLWYgJSVQUkVGSVglJS9iaW4vbXlzcWxkX3NhZmUgLS1kZWZhdWx0cy1leHRyYS1maWxl
 PSR7bXlzcWxfZGJkaXJ9L215LmNuZiAtLXVzZXI9JHtteXNxbF91c2VyfSAtLWRhdGFkaXI9JHtt
 eXNxbF9kYmRpcn0gLS1waWQtZmlsZT0ke3BpZGZpbGV9IC0tc29ja2V0PSR7bXlzcWxfc29ja2V0
 fSAtLWJpbmQtYWRkcmVzcz0ke215c3FsX2JpbmRpcH0gLS1wb3J0PSR7bXlzcWxfcG9ydH0gJHtt
 eXNxbF9hcmdzfSIKK2ZpCiBteXNxbF9pbnN0YWxsX2RiX2FyZ3M9Ii0tYmFzZWRpcj0lJVBSRUZJ
 WCUlIC0tZGF0YWRpcj0ke215c3FsX2RiZGlyfSAtLWZvcmNlIgogCiBteXNxbF9jcmVhdGVfYXV0
 aF90YWJsZXMoKQo=
 --=_d059d562dc98cb85a3f6188de212aa57--
 
>Unformatted:
