From owner-freebsd-rc@FreeBSD.ORG Sun Jun 30 21:31:51 2013 Return-Path: Delivered-To: freebsd-rc@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id AA7F02A1; Sun, 30 Jun 2013 21:31:51 +0000 (UTC) (envelope-from hrs@FreeBSD.org) Received: from mail.allbsd.org (gatekeeper.allbsd.org [IPv6:2001:2f0:104:e001::32]) by mx1.freebsd.org (Postfix) with ESMTP id D480C1CD5; Sun, 30 Jun 2013 21:31:50 +0000 (UTC) Received: from alph.d.allbsd.org (p3086-ipbf906funabasi.chiba.ocn.ne.jp [122.26.46.86]) (authenticated bits=128) by mail.allbsd.org (8.14.5/8.14.5) with ESMTP id r5ULVXpQ055378 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 1 Jul 2013 06:31:43 +0900 (JST) (envelope-from hrs@FreeBSD.org) Received: from localhost (localhost [127.0.0.1]) (authenticated bits=0) by alph.d.allbsd.org (8.14.5/8.14.5) with ESMTP id r5ULVVWK041542; Mon, 1 Jul 2013 06:31:33 +0900 (JST) (envelope-from hrs@FreeBSD.org) Date: Mon, 01 Jul 2013 06:29:53 +0900 (JST) Message-Id: <20130701.062953.1443190655468739608.hrs@allbsd.org> To: freebsd-rc@FreeBSD.org, freebsd-current@FreeBSD.org Subject: Proposal: multi-instance and self-contained rc.d script From: Hiroki Sato X-PGPkey-fingerprint: BDB3 443F A5DD B3D0 A530 FFD7 4F2C D3D8 2793 CF2D X-Mailer: Mew version 6.5 on Emacs 24.3 / Mule 6.0 (HANACHIRUSATO) Mime-Version: 1.0 Content-Type: Multipart/Signed; protocol="application/pgp-signature"; micalg=pgp-sha1; boundary="--Security_Multipart0(Mon_Jul__1_06_29_53_2013_545)--" Content-Transfer-Encoding: 7bit X-Virus-Scanned: clamav-milter 0.97.4 at gatekeeper.allbsd.org X-Virus-Status: Clean X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (mail.allbsd.org [133.31.130.32]); Mon, 01 Jul 2013 06:31:43 +0900 (JST) X-Spam-Status: No, score=-88.8 required=13.0 tests=CONTENT_TYPE_PRESENT, DIRECTOCNDYN,DYN_PBL,FAKEDWORD_VERTICALLINE,ONLY1HOPDIRECT,QENCPTR2, RCVD_IN_PBL,SAMEHELOBY2HOP,USER_IN_WHITELIST autolearn=no version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on gatekeeper.allbsd.org X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: freebsd-rc@FreeBSD.org List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 30 Jun 2013 21:31:51 -0000 ----Security_Multipart0(Mon_Jul__1_06_29_53_2013_545)-- Content-Type: Multipart/Mixed; boundary="--Next_Part(Mon_Jul__1_06_29_53_2013_150)--" Content-Transfer-Encoding: 7bit ----Next_Part(Mon_Jul__1_06_29_53_2013_150)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi, I am working on rc.d script improvements in terms of the following two points. A prototype is attached. This still includes some rough edges but should be enough to understand the concepts. I would like your comments about them. (This is posted to -current@ and -rc@, but please reply to freebsd-rc@ only) 1. Multi-instance support As you know, an rc.d script invokes ${name}_program with configuration variables in /etc/rc.conf. It works, but it is difficult to run multiple instances of a program. A typical example is named---a sysadmin often wants to run two instances of named as a caching server and a content DNS server by using different named.conf. In the current framework, two rc.d scripts are needed by copying /etc/rc.d/named to /etc/rc.d/named_cache and rewriting name= and rcvar=. The attached patch allows the following: named_enable="YES" named_instances="cache1 cache2" named_conf="/etc/namedb/named.conf" named_cache1_enable="YES" named_cache1_conf="/etc/namedb/named_cache1.conf" named_cache2_enable="NO" named_cache2_conf="/etc/namedb/named_cache2.conf" A new variable "{name}_instances" defines instances. In this example, it is named_instances="cache1 cache2". All of the default values of $named_{instname}_foo are automatically set to the same as $named_foo. In the implementation, load_rc_config() reads variables for all instances and run_rc_command() runs each instance in order. When doing "rc.d/foo stop", run_rc_command() stops the instances in reverse order. In the patch, killing the processes without pid file does not work well yet. This can be improved. 2. Self-contained rc.d script rc.d scripts depend on /etc/default/rc.conf for the default configuration and rc.conf(5) manual page describes the knobs. However, it is difficult to understand which variable is related to which script. In addition, /etc/defaults/rc.conf is often out of sync with the rc.d scripts. So, my proposal is as follows: a) Define rc.conf variables and the default values in the rc.d script which uses them. "rc.d/foo rcvar" shows the variables and the default values. b) Make rc.d/foo always have rc.d/foo(8) manual page. The attached patch includes an example of rc.d/routed. The primary difference is declaration part of rc.conf variables: set_rcvar enable NO set_rcvar program /sbin/routed set_rcvar flags -q These sets the default value of $routed_{enable,program,flags} at load_rc_config(). The reason why a simple ": ${routed_enable="NO"}" does not work is that it does not work with multi-instance support. This is backward-compatible with the current /etc/defaults/rc.conf. load_rc_config() sets these values first, and then reads /etc/defaults/rc.conf and /etc/rc.conf.d/$name. "rc.d/route rcvar" displays the current configuration and available variables briefly like the following: # routed: network RIP and router discovery routing daemon # routed_enable="NO" # (default: "NO") routed_program="/sbin/routed" # (default: "/sbin/routed") routed_flags="-q" # (default: "-q") When multi-instance is enabled in rc.conf like this: routed_enable="YES" routed_instances="hoge fuga" routed_hoge_desc="hogehoge" routed_fuga_enable="NO" routed_fuga_flags="" The results of rcvar will be the following: # routed: network RIP and router discovery routing daemon # routed_enable="YES" # (default: "NO") routed_program="/sbin/routed" # (default: "/sbin/routed") routed_flags="-q" # (default: "-q") # routed_hoge: network RIP and router discovery routing daemon: hogehoge # routed_hoge_enable="YES" # (default: "NO") routed_hoge_program="/sbin/routed" # (default: "/sbin/routed") routed_hoge_flags="-q" # (default: "-q") # routed_fuga: network RIP and router discovery routing daemon # routed_fuga_enable="NO" # (default: "NO") routed_fuga_program="/sbin/routed" # (default: "/sbin/routed") routed_fuga_flags="" # (default: "-q") We can remove or comment out all of lines in /etc/defaults/rc.conf, and mismatch between /etc/defaults/rc.conf and scripts does not occur. Running "rc.d/foo rcvar" can be used to generate /etc/defaults/rc.conf if needed. That's all. Both changes are fully backward compatible and I believe they improve flexibility and manageability of rc.d scripts. An example of rc.d/routed(8) manual page is also attached. If these changes are acceptable, I would like to split the current (lengthy) rc.conf(5) manual page into rc.d/foo(8). -- Hiroki ----Next_Part(Mon_Jul__1_06_29_53_2013_150)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="routed.8.catman.txt" RC.D/ROUTED(8) FreeBSD System Manager's Manual RC.D/ROUTED(8) NAME routed -- rc.d script for routed(8) daemon SYNOPSIS routed [fast|force|one]start|stop|restart|rcvar|status|poll DESCRIPTION routed is an rc.d(8) script to control routed(8) daemon. COMMAND LINE ARGUMENTS The standard rc.d(8) arguments are supported. For more information, see the section of run_rc_command() in the rc(8) manual page. CONFIGURATION VARIABLES The following rc.conf(5) variables are supported. To show all of the supported variables and the default values, use rcvar argument: routed_enable (bool) Set to ``YES'' to start the routed(8) daemon at boot time. routed_flags (str) Specify command line flags to the routed(8) daemon. SEE ALSO rc.conf(5), rc(8), routed(8) HISTORY The routed script appeared in FreeBSD 8.0. AUTHORS This manual page was written by Hiroki Sato . FreeBSD 10.0 January 26, 2012 FreeBSD 10.0 ----Next_Part(Mon_Jul__1_06_29_53_2013_150)-- Content-Type: Text/X-Patch; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="rc.d_multi_20130701-1.diff" Index: etc/rc.d/routed =================================================================== --- etc/rc.d/routed (revision 252378) +++ etc/rc.d/routed (working copy) @@ -13,6 +13,10 @@ name="routed" rcvar="routed_enable" desc="network RIP and router discovery routing daemon" +set_rcvar enable NO +set_rcvar program /sbin/routed +set_rcvar flags -q + set_rcvar_obsolete router_enable routed_enable set_rcvar_obsolete router routed_program set_rcvar_obsolete router_flags routed_flags Index: etc/rc.subr =================================================================== --- etc/rc.subr (revision 252378) +++ etc/rc.subr (working copy) @@ -54,6 +54,21 @@ JID=`$PS -p $$ -o jid=` # functions # --------- +# set_rcvar [var] [defval] +# Define rc.conf variable. +# +set_rcvar() +{ + case $# in + 0) echo $name + ;; + 1) eval rcvars=\"${rcvars# } $1\" + ;; + 2) eval rcvars=\"${rcvars# } $1\" + eval ${rcvar%_enable}_${1}_defval=\"$2\" + ;; + esac +} # set_rcvar_obsolete oldvar [newvar] [msg] # Define obsolete variable. # Global variable $rcvars_obsolete is used. @@ -570,6 +585,39 @@ check_startmsgs() # run_rc_command() { + local _act _instances _inst _name _desc _rcvar + + _act=$1 + shift + eval _instances=\"DEFAULT \$${name}_instances\" + _name=$name + _desc=$desc + _rcvar=$rcvar + + # Use reverse order for stop. + case $_act in + *stop) _instances=$(reverse_list $_instances) ;; + esac + + for _inst in $_instances; do + case $_inst in + DEFAULT) + name=$_name + desc=$_desc + rcvar=$_rcvar + ;; + *) + name=${_name}_${_inst} + eval desc=\"$_desc\${${_name}_${_inst}_desc+:\ }\$${_name}_${_inst}_desc\" + rcvar=${_rcvar%_enable}_${_inst}_enable + ;; + esac + _run_rc_command0 $_act "$@" + done +} + +_run_rc_command0() +{ _return=0 rc_arg=$1 if [ -z "$name" ]; then @@ -823,47 +871,25 @@ $command $rc_flags $command_args" ;; rcvar) - echo -n "# $name" - if [ -n "$desc" ]; then - echo " : $desc" - else - echo "" - fi + echo "# $name${desc+: }${desc}" echo "#" # Get unique vars in $rcvar - for _v in $rcvar; do - case $v in - $_v\ *|\ *$_v|*\ $_v\ *) ;; - *) v="${v# } $_v" ;; - esac + v= + for _v in $(uniqlist ${rcvar%_enable} $rcvars $_rc_namevarlist); do + if [ "$_v" = "instances" ]; then + continue + fi + v="${v# } ${name}_$_v" done # Display variables. for _v in $v; do - if [ -z "$_v" ]; then + eval __v=\$$_v + eval _defval=\$${_v}_defval + if [ -z "$__v" -a "$__v" = "$_defval" ]; then continue fi - - eval _desc=\$${_v}_desc - eval _defval=\$${_v}_defval - _h="-" - - eval echo \"$_v=\\\"\$$_v\\\"\" - # decode multiple lines of _desc - while [ -n "$_desc" ]; do - case $_desc in - *^^*) - echo "# $_h ${_desc%%^^*}" - _desc=${_desc#*^^} - _h=" " - ;; - *) - echo "# $_h ${_desc}" - break - ;; - esac - done - echo "# (default: \"$_defval\")" + echo ${_v}=\"$__v\"${_defval:+\ # (default: \"$_defval\")} done echo "" ;; @@ -1004,11 +1030,55 @@ run_rc_script() } # +# uniqlist +# Return a list with duplicate words removed. +# +uniqlist() +{ + local v _v + + v= + for _v in "$@"; do + case $v in + $_v\ *|\ *$_v|*\ $_v\ *) ;; + *) v="${v# } $_v" ;; + esac + done + echo $v +} + +# # load_rc_config name # Source in the configuration file for a given name. # load_rc_config() { + local _instances _inst _name _k _v + + _name=$1 + _load_rc_config0 $_name + + eval _instances=\$${_name}_instances + + for _inst in $_instances; do + _load_rc_config0 ${_name}_${_inst} + + # Set default values by using $name. + for _k in $(uniqlist $rcvars $_rc_namevarlist); do + if [ "$_k" = "instances" ]; then + continue + fi + eval : \${${_name}_${_inst}_${_k}="\$${_name}_${_k}"} + eval : \${${_name}_${_inst}_${_k}_defval="\$${_name}_${_k}_defval"} +# eval echo DEBUG ${_name}_${_inst}_${_k}=\$${_name}_${_inst}_${_k} + done +# eval echo DEBUG ${rcvar%_enable}_${_inst}_enable=\$${rcvar%_enable}_${_inst}_enable + eval : \${${rcvar%_enable}_${_inst}_enable="\$${rcvar}"} + done +} + +_load_rc_config0() +{ local _name _rcvar_val _var _defval _v _msg _new _name=$1 if [ -z "$_name" ]; then @@ -1034,10 +1104,10 @@ load_rc_config() fi # Set defaults if defined. - for _var in $rcvar; do - eval _defval=\$${_var}_defval + for _var in $rcvars; do + eval _defval=\$${rcvar%_enable}_${_var}_defval if [ -n "$_defval" ]; then - eval : \${$_var:=\$${_var}_defval} + eval : \${${rcvar%_enable}_${_var}=\$${rcvar%_enable}_${_var}_defval} fi done @@ -1051,7 +1121,7 @@ load_rc_config() ;; *) if [ -z "$_new" ]; then - _msg="Ignored." + : ${_msg="Ignored."} else eval $_new=\"\$$_var\" if [ -z "$_msg" ]; then @@ -1736,7 +1806,7 @@ check_kern_features() # check_namevarlist var # Return "0" if ${name}_var is reserved in rc.subr. -_rc_namevarlist="program chroot chdir flags fib nice user group groups" +_rc_namevarlist="program chroot chdir flags fib nice user group groups instances" check_namevarlist() { local _v Index: etc/mtree/BSD.usr.dist =================================================================== --- etc/mtree/BSD.usr.dist (revision 252378) +++ etc/mtree/BSD.usr.dist (working copy) @@ -938,6 +938,8 @@ .. sparc64 .. + rc.d + .. .. man9 .. Index: share/man/man8/Makefile =================================================================== --- share/man/man8/Makefile (revision 252378) +++ share/man/man8/Makefile (working copy) @@ -24,4 +24,6 @@ MLINKS+=yp.8 NIS.8 \ yp.8 nis.8 \ yp.8 YP.8 +SUBDIR= man8.rc.d + .include Index: share/man/man8/man8.rc.d/Makefile =================================================================== --- share/man/man8/man8.rc.d/Makefile (revision 0) +++ share/man/man8/man8.rc.d/Makefile (working copy) @@ -0,0 +1,7 @@ +# $FreeBSD$ + +MAN= routed.8 + +MANSUBDIR=/rc.d + +.include Index: share/man/man8/man8.rc.d/routed.8 =================================================================== --- share/man/man8/man8.rc.d/routed.8 (revision 0) +++ share/man/man8/man8.rc.d/routed.8 (working copy) @@ -0,0 +1,90 @@ +.\" Copyright (c) 2012,2013 +.\" Hiroki Sato . All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd January 26, 2012 +.Dt RC.D/ROUTED 8 +.Os +.Sh NAME +.Nm routed +.Nd rc.d script for +.Xr routed 8 +daemon +.Sh SYNOPSIS +.Nm +.Oo fast|force|one Oc Ns Ar start|stop|restart|rcvar|status|poll +.Sh DESCRIPTION +.Nm +is an +.Xr rc.d 8 +script to control +.Xr routed 8 +daemon. +.Sh COMMAND LINE ARGUMENTS +The standard +.Xr rc.d 8 +arguments are supported. +For more information, see the section of +.Fn run_rc_command +in the +.Xr rc 8 +manual page. +.Sh CONFIGURATION VARIABLES +The following +.Xr rc.conf 5 +variables are supported. +To show all of the supported variables and the default values, +use +.Li rcvar +argument: +.Pp +.Bl -tag -width "01234567890123456789" -compact +.It Va routed_enable +.Pq Vt bool +Set to +.Dq Li YES +to start the +.Xr routed 8 +daemon at boot time. +.Pp +.It Va routed_flags +.Pq Vt str +Specify command line flags to the +.Xr routed 8 +daemon. +.El +.Pp +.Sh SEE ALSO +.Xr rc.conf 5 , +.Xr rc 8 , +.Xr routed 8 +.Sh HISTORY +The +.Nm +script appeared in +.Fx 8.0 . +.Sh AUTHORS +This manual page was written by +.An Hiroki Sato Aq hrs@FreeBSD.org . ----Next_Part(Mon_Jul__1_06_29_53_2013_150)---- ----Security_Multipart0(Mon_Jul__1_06_29_53_2013_545)-- Content-Type: application/pgp-signature Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.13 (FreeBSD) iEYEABECAAYFAlHQo1EACgkQTyzT2CeTzy2+NwCdF1ZRsxibXcFZg9cn7/OLNcAJ b4EAnikHdj5+1bz0TegXrHXQCKdg/5FV =e8U+ -----END PGP SIGNATURE----- ----Security_Multipart0(Mon_Jul__1_06_29_53_2013_545)---- From owner-freebsd-rc@FreeBSD.ORG Sun Jun 30 22:09:02 2013 Return-Path: Delivered-To: freebsd-rc@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 807E57DA; Sun, 30 Jun 2013 22:09:02 +0000 (UTC) (envelope-from lev@FreeBSD.org) Received: from onlyone.friendlyhosting.spb.ru (onlyone.friendlyhosting.spb.ru [IPv6:2a01:4f8:131:60a2::2]) by mx1.freebsd.org (Postfix) with ESMTP id 492241DC5; Sun, 30 Jun 2013 22:09:02 +0000 (UTC) Received: from lion.home.serebryakov.spb.ru (unknown [IPv6:2001:470:923f:1:4576:f46b:6d13:91c5]) (Authenticated sender: lev@serebryakov.spb.ru) by onlyone.friendlyhosting.spb.ru (Postfix) with ESMTPSA id 2FA4E4AC1C; Mon, 1 Jul 2013 02:09:01 +0400 (MSK) Date: Mon, 1 Jul 2013 02:08:48 +0400 From: Lev Serebryakov Organization: FreeBSD X-Priority: 3 (Normal) Message-ID: <1021348336.20130701020848@serebryakov.spb.ru> To: Hiroki Sato Subject: Re: Proposal: multi-instance and self-contained rc.d script In-Reply-To: <20130701.062953.1443190655468739608.hrs@allbsd.org> References: <20130701.062953.1443190655468739608.hrs@allbsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Cc: freebsd-current@FreeBSD.org, freebsd-rc@FreeBSD.org X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: lev@FreeBSD.org List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 30 Jun 2013 22:09:02 -0000 Hello, Hiroki. You wrote 1 =D0=B8=D1=8E=D0=BB=D1=8F 2013 =D0=B3., 1:29:53: HS> The attached patch allows the following: HS> named_enable=3D"YES" HS> named_instances=3D"cache1 cache2" HS> named_conf=3D"/etc/namedb/named.conf" HS> named_cache1_enable=3D"YES" HS> named_cache1_conf=3D"/etc/namedb/named_cache1.conf" HS> named_cache2_enable=3D"NO" HS> named_cache2_conf=3D"/etc/namedb/named_cache2.conf" If it will work with ports rc scripts it will be great! For example, nsd DNS server doesn't support views and often need to be run in multiple instances. --=20 // Black Lion AKA Lev Serebryakov From owner-freebsd-rc@FreeBSD.ORG Sun Jun 30 22:10:35 2013 Return-Path: Delivered-To: freebsd-rc@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id F3D5390F for ; Sun, 30 Jun 2013 22:10:34 +0000 (UTC) (envelope-from jilles@stack.nl) Received: from mx1.stack.nl (relay02.stack.nl [IPv6:2001:610:1108:5010::104]) by mx1.freebsd.org (Postfix) with ESMTP id 5E2471DDB for ; Sun, 30 Jun 2013 22:10:34 +0000 (UTC) Received: from snail.stack.nl (snail.stack.nl [IPv6:2001:610:1108:5010::131]) by mx1.stack.nl (Postfix) with ESMTP id 105C1359319 for ; Mon, 1 Jul 2013 00:10:33 +0200 (CEST) Received: by snail.stack.nl (Postfix, from userid 1677) id E8F5628493; Mon, 1 Jul 2013 00:10:32 +0200 (CEST) Date: Mon, 1 Jul 2013 00:10:32 +0200 From: Jilles Tjoelker To: freebsd-rc@FreeBSD.org Subject: Re: Proposal: multi-instance and self-contained rc.d script Message-ID: <20130630221032.GB43309@stack.nl> References: <20130701.062953.1443190655468739608.hrs@allbsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20130701.062953.1443190655468739608.hrs@allbsd.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 30 Jun 2013 22:10:35 -0000 On Mon, Jul 01, 2013 at 06:29:53AM +0900, Hiroki Sato wrote: > I am working on rc.d script improvements in terms of the following > two points. A prototype is attached. This still includes some rough > edges but should be enough to understand the concepts. I would like > your comments about them. (This is posted to -current@ and -rc@, but > please reply to freebsd-rc@ only) > 1. Multi-instance support > [snip] > A new variable "{name}_instances" defines instances. In this > example, it is named_instances="cache1 cache2". All of the default > values of $named_{instname}_foo are automatically set to the same as > $named_foo. > In the implementation, load_rc_config() reads variables for all > instances and run_rc_command() runs each instance in order. When > doing "rc.d/foo stop", run_rc_command() stops the instances in > reverse order. This looks OK in concept. > In the patch, killing the processes without pid file does not work > well yet. This can be improved. I don't think it is possible to fix that properly. Killing processes by name has a high risk of killing unrelated processes in any case. > 2. Self-contained rc.d script > rc.d scripts depend on /etc/default/rc.conf for the default > configuration and rc.conf(5) manual page describes the knobs. > However, it is difficult to understand which variable is related to > which script. In addition, /etc/defaults/rc.conf is often out of > sync with the rc.d scripts. So, my proposal is as follows: > a) Define rc.conf variables and the default values in the rc.d > script which uses them. "rc.d/foo rcvar" shows the variables > and the default values. This could be done. > b) Make rc.d/foo always have rc.d/foo(8) manual page. However, I don't like another set of manual pages. > The attached patch includes an example of rc.d/routed. The primary > difference is declaration part of rc.conf variables: > set_rcvar enable NO > set_rcvar program /sbin/routed > set_rcvar flags -q > These sets the default value of $routed_{enable,program,flags} at > load_rc_config(). The reason why a simple ": ${routed_enable="NO"}" > does not work is that it does not work with multi-instance support. > This is backward-compatible with the current /etc/defaults/rc.conf. > load_rc_config() sets these values first, and then reads > /etc/defaults/rc.conf and /etc/rc.conf.d/$name. > "rc.d/route rcvar" displays the current configuration and available > variables briefly like the following: > # routed: network RIP and router discovery routing daemon > # > routed_enable="NO" # (default: "NO") > routed_program="/sbin/routed" # (default: "/sbin/routed") > routed_flags="-q" # (default: "-q") > When multi-instance is enabled in rc.conf like this: > routed_enable="YES" > routed_instances="hoge fuga" > routed_hoge_desc="hogehoge" > routed_fuga_enable="NO" > routed_fuga_flags="" > The results of rcvar will be the following: > # routed: network RIP and router discovery routing daemon > # > routed_enable="YES" # (default: "NO") > routed_program="/sbin/routed" # (default: "/sbin/routed") > routed_flags="-q" # (default: "-q") > # routed_hoge: network RIP and router discovery routing daemon: hogehoge > # > routed_hoge_enable="YES" # (default: "NO") > routed_hoge_program="/sbin/routed" # (default: "/sbin/routed") > routed_hoge_flags="-q" # (default: "-q") > # routed_fuga: network RIP and router discovery routing daemon > # > routed_fuga_enable="NO" # (default: "NO") > routed_fuga_program="/sbin/routed" # (default: "/sbin/routed") > routed_fuga_flags="" # (default: "-q") > We can remove or comment out all of lines in /etc/defaults/rc.conf, > and mismatch between /etc/defaults/rc.conf and scripts does not > occur. Running "rc.d/foo rcvar" can be used to generate > /etc/defaults/rc.conf if needed. This looks good. > That's all. Both changes are fully backward compatible and I believe > they improve flexibility and manageability of rc.d scripts. > An example of rc.d/routed(8) manual page is also attached. If these > changes are acceptable, I would like to split the current (lengthy) > rc.conf(5) manual page into rc.d/foo(8). > Index: etc/rc.subr > =================================================================== > --- etc/rc.subr (revision 252378) > +++ etc/rc.subr (working copy) > @@ -54,6 +54,21 @@ JID=`$PS -p $$ -o jid=` > # functions > # --------- > > +# set_rcvar [var] [defval] > +# Define rc.conf variable. > +# > +set_rcvar() > +{ > + case $# in > + 0) echo $name > + ;; > + 1) eval rcvars=\"${rcvars# } $1\" This eval is not needed. > + ;; > + 2) eval rcvars=\"${rcvars# } $1\" This eval is not needed either. > + eval ${rcvar%_enable}_${1}_defval=\"$2\" To ensure $2 may contain any and all characters, use instead eval ${rcvar%_enable}_${1}_defval=\$2 > + ;; > + esac > +} > # set_rcvar_obsolete oldvar [newvar] [msg] > # Define obsolete variable. > # Global variable $rcvars_obsolete is used. > @@ -570,6 +585,39 @@ check_startmsgs() > # > run_rc_command() > { > + local _act _instances _inst _name _desc _rcvar > + > + _act=$1 > + shift > + eval _instances=\"DEFAULT \$${name}_instances\" > + _name=$name > + _desc=$desc > + _rcvar=$rcvar > + > + # Use reverse order for stop. > + case $_act in > + *stop) _instances=$(reverse_list $_instances) ;; This should use a version of reverse_list that writes to a variable passed as an argument so it does not add a few dozen forks to the shutdown sequence. > + esac > + > + for _inst in $_instances; do > + case $_inst in > + DEFAULT) > + name=$_name > + desc=$_desc > + rcvar=$_rcvar > + ;; > + *) > + name=${_name}_${_inst} > + eval desc=\"$_desc\${${_name}_${_inst}_desc+:\ }\$${_name}_${_inst}_desc\" > + rcvar=${_rcvar%_enable}_${_inst}_enable > + ;; > + esac > + _run_rc_command0 $_act "$@" > + done > +} > + > +_run_rc_command0() > +{ > _return=0 > rc_arg=$1 > if [ -z "$name" ]; then > @@ -823,47 +871,25 @@ $command $rc_flags $command_args" > ;; > > rcvar) > - echo -n "# $name" > - if [ -n "$desc" ]; then > - echo " : $desc" > - else > - echo "" > - fi > + echo "# $name${desc+: }${desc}" > echo "#" > # Get unique vars in $rcvar > - for _v in $rcvar; do > - case $v in > - $_v\ *|\ *$_v|*\ $_v\ *) ;; > - *) v="${v# } $_v" ;; > - esac > + v= > + for _v in $(uniqlist ${rcvar%_enable} $rcvars $_rc_namevarlist); do > + if [ "$_v" = "instances" ]; then > + continue > + fi > + v="${v# } ${name}_$_v" > done > > # Display variables. > for _v in $v; do > - if [ -z "$_v" ]; then > + eval __v=\$$_v > + eval _defval=\$${_v}_defval > + if [ -z "$__v" -a "$__v" = "$_defval" ]; then > continue > fi > - > - eval _desc=\$${_v}_desc > - eval _defval=\$${_v}_defval > - _h="-" > - > - eval echo \"$_v=\\\"\$$_v\\\"\" > - # decode multiple lines of _desc > - while [ -n "$_desc" ]; do > - case $_desc in > - *^^*) > - echo "# $_h ${_desc%%^^*}" > - _desc=${_desc#*^^} > - _h=" " > - ;; > - *) > - echo "# $_h ${_desc}" > - break > - ;; > - esac > - done > - echo "# (default: \"$_defval\")" > + echo ${_v}=\"$__v\"${_defval:+\ # (default: \"$_defval\")} > done > echo "" > ;; > @@ -1004,11 +1030,55 @@ run_rc_script() > } > > # > +# uniqlist > +# Return a list with duplicate words removed. > +# > +uniqlist() > +{ > + local v _v > + > + v= > + for _v in "$@"; do > + case $v in > + $_v\ *|\ *$_v|*\ $_v\ *) ;; > + *) v="${v# } $_v" ;; > + esac > + done > + echo $v > +} > + This function should write its result to a variable whose name is passed, so that it does not add forks to the boot sequence. Its local variables should have uniqlist in their name so they do not clash with the caller's destination variable. > +# > # load_rc_config name > # Source in the configuration file for a given name. > # > load_rc_config() > { > + local _instances _inst _name _k _v > + > + _name=$1 > + _load_rc_config0 $_name > + > + eval _instances=\$${_name}_instances > + > + for _inst in $_instances; do > + _load_rc_config0 ${_name}_${_inst} > + > + # Set default values by using $name. > + for _k in $(uniqlist $rcvars $_rc_namevarlist); do > + if [ "$_k" = "instances" ]; then > + continue > + fi > + eval : \${${_name}_${_inst}_${_k}="\$${_name}_${_k}"} > + eval : \${${_name}_${_inst}_${_k}_defval="\$${_name}_${_k}_defval"} > +# eval echo DEBUG ${_name}_${_inst}_${_k}=\$${_name}_${_inst}_${_k} > + done > +# eval echo DEBUG ${rcvar%_enable}_${_inst}_enable=\$${rcvar%_enable}_${_inst}_enable > + eval : \${${rcvar%_enable}_${_inst}_enable="\$${rcvar}"} > + done > +} > + > +_load_rc_config0() > +{ > local _name _rcvar_val _var _defval _v _msg _new > _name=$1 > if [ -z "$_name" ]; then > @@ -1034,10 +1104,10 @@ load_rc_config() > fi > > # Set defaults if defined. > - for _var in $rcvar; do > - eval _defval=\$${_var}_defval > + for _var in $rcvars; do > + eval _defval=\$${rcvar%_enable}_${_var}_defval > if [ -n "$_defval" ]; then > - eval : \${$_var:=\$${_var}_defval} > + eval : \${${rcvar%_enable}_${_var}=\$${rcvar%_enable}_${_var}_defval} > fi > done > > @@ -1051,7 +1121,7 @@ load_rc_config() > ;; > *) > if [ -z "$_new" ]; then > - _msg="Ignored." > + : ${_msg="Ignored."} > else > eval $_new=\"\$$_var\" > if [ -z "$_msg" ]; then > @@ -1736,7 +1806,7 @@ check_kern_features() > # check_namevarlist var > # Return "0" if ${name}_var is reserved in rc.subr. > > -_rc_namevarlist="program chroot chdir flags fib nice user group groups" > +_rc_namevarlist="program chroot chdir flags fib nice user group groups instances" > check_namevarlist() > { > local _v On another note, this function is more complicated than necessary. A case $1 in program|chroot|chdir|flags|fib|nice|user|group|groups|instances) return 0 esac return 1 will do. -- Jilles Tjoelker From owner-freebsd-rc@FreeBSD.ORG Mon Jul 1 09:33:38 2013 Return-Path: Delivered-To: freebsd-rc@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 398F5FD5 for ; Mon, 1 Jul 2013 09:33:38 +0000 (UTC) (envelope-from hrs@FreeBSD.org) Received: from mail.allbsd.org (gatekeeper.allbsd.org [IPv6:2001:2f0:104:e001::32]) by mx1.freebsd.org (Postfix) with ESMTP id 2BC231CAD for ; Mon, 1 Jul 2013 09:33:37 +0000 (UTC) Received: from alph.d.allbsd.org (p3086-ipbf906funabasi.chiba.ocn.ne.jp [122.26.46.86]) (authenticated bits=128) by mail.allbsd.org (8.14.5/8.14.5) with ESMTP id r619XJPC030001 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 1 Jul 2013 18:33:29 +0900 (JST) (envelope-from hrs@FreeBSD.org) Received: from localhost (localhost [127.0.0.1]) (authenticated bits=0) by alph.d.allbsd.org (8.14.5/8.14.5) with ESMTP id r619XGWm083831; Mon, 1 Jul 2013 18:33:19 +0900 (JST) (envelope-from hrs@FreeBSD.org) Date: Mon, 01 Jul 2013 18:33:06 +0900 (JST) Message-Id: <20130701.183306.662470761675862613.hrs@allbsd.org> To: jilles@stack.nl Subject: Re: Proposal: multi-instance and self-contained rc.d script From: Hiroki Sato In-Reply-To: <20130630221032.GB43309@stack.nl> References: <20130701.062953.1443190655468739608.hrs@allbsd.org> <20130630221032.GB43309@stack.nl> X-PGPkey-fingerprint: BDB3 443F A5DD B3D0 A530 FFD7 4F2C D3D8 2793 CF2D X-Mailer: Mew version 6.5 on Emacs 24.3 / Mule 6.0 (HANACHIRUSATO) Mime-Version: 1.0 Content-Type: Multipart/Signed; protocol="application/pgp-signature"; micalg=pgp-sha1; boundary="--Security_Multipart(Mon_Jul__1_18_33_06_2013_982)--" Content-Transfer-Encoding: 7bit X-Virus-Scanned: clamav-milter 0.97.4 at gatekeeper.allbsd.org X-Virus-Status: Clean X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (mail.allbsd.org [133.31.130.32]); Mon, 01 Jul 2013 18:33:30 +0900 (JST) X-Spam-Status: No, score=-89.2 required=13.0 tests=CONTENT_TYPE_PRESENT, DIRECTOCNDYN,DYN_PBL,ONLY1HOPDIRECT,QENCPTR1,RCVD_IN_PBL,SAMEHELOBY2HOP, USER_IN_WHITELIST,X_CHINESE_RELAY autolearn=no version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on gatekeeper.allbsd.org Cc: freebsd-rc@FreeBSD.org X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jul 2013 09:33:38 -0000 ----Security_Multipart(Mon_Jul__1_18_33_06_2013_982)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Jilles Tjoelker wrote in <20130630221032.GB43309@stack.nl>: ji> On Mon, Jul 01, 2013 at 06:29:53AM +0900, Hiroki Sato wrote: ji> > In the patch, killing the processes without pid file does not work ji> > well yet. This can be improved. ji> ji> I don't think it is possible to fix that properly. Killing processes by ji> name has a high risk of killing unrelated processes in any case. Yes. The current patch does not care about it at all, so probably we need to make it less harmful. ji> > b) Make rc.d/foo always have rc.d/foo(8) manual page. ji> ji> However, I don't like another set of manual pages. Why? rc.conf(5) manual page has been bloated. What do you think about the best place to document variables and non-standard script arguments? ji> ji> > That's all. Both changes are fully backward compatible and I believe ji> > they improve flexibility and manageability of rc.d scripts. ji> ji> > An example of rc.d/routed(8) manual page is also attached. If these ji> > changes are acceptable, I would like to split the current (lengthy) ji> > rc.conf(5) manual page into rc.d/foo(8). ji> ji> > Index: etc/rc.subr ji> > =================================================================== ... (snip) Thank you for your feedback about the code! I will revise the patch and post it again. -- Hiroki ----Security_Multipart(Mon_Jul__1_18_33_06_2013_982)-- Content-Type: application/pgp-signature Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.13 (FreeBSD) iEYEABECAAYFAlHRTNIACgkQTyzT2CeTzy11WwCfRfk2oV62WWDBOYnoasS52rX3 x7wAoLHEsd1gTr+UIERba7cNwfheKLks =5E6A -----END PGP SIGNATURE----- ----Security_Multipart(Mon_Jul__1_18_33_06_2013_982)---- From owner-freebsd-rc@FreeBSD.ORG Mon Jul 1 09:36:30 2013 Return-Path: Delivered-To: freebsd-rc@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id A9B7DB8; Mon, 1 Jul 2013 09:36:30 +0000 (UTC) (envelope-from hrs@FreeBSD.org) Received: from mail.allbsd.org (gatekeeper.allbsd.org [IPv6:2001:2f0:104:e001::32]) by mx1.freebsd.org (Postfix) with ESMTP id 1DB0A1CCB; Mon, 1 Jul 2013 09:36:29 +0000 (UTC) Received: from alph.d.allbsd.org (p3086-ipbf906funabasi.chiba.ocn.ne.jp [122.26.46.86]) (authenticated bits=128) by mail.allbsd.org (8.14.5/8.14.5) with ESMTP id r619aDMp030473 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 1 Jul 2013 18:36:23 +0900 (JST) (envelope-from hrs@FreeBSD.org) Received: from localhost (localhost [127.0.0.1]) (authenticated bits=0) by alph.d.allbsd.org (8.14.5/8.14.5) with ESMTP id r619aD9s083869; Mon, 1 Jul 2013 18:36:13 +0900 (JST) (envelope-from hrs@FreeBSD.org) Date: Mon, 01 Jul 2013 18:35:27 +0900 (JST) Message-Id: <20130701.183527.809286302367636716.hrs@allbsd.org> To: lev@FreeBSD.org Subject: Re: Proposal: multi-instance and self-contained rc.d script From: Hiroki Sato In-Reply-To: <1021348336.20130701020848@serebryakov.spb.ru> References: <20130701.062953.1443190655468739608.hrs@allbsd.org> <1021348336.20130701020848@serebryakov.spb.ru> X-PGPkey-fingerprint: BDB3 443F A5DD B3D0 A530 FFD7 4F2C D3D8 2793 CF2D X-Mailer: Mew version 6.5 on Emacs 24.3 / Mule 6.0 (HANACHIRUSATO) Mime-Version: 1.0 Content-Type: Multipart/Signed; protocol="application/pgp-signature"; micalg=pgp-sha1; boundary="--Security_Multipart(Mon_Jul__1_18_35_27_2013_461)--" Content-Transfer-Encoding: 7bit X-Virus-Scanned: clamav-milter 0.97.4 at gatekeeper.allbsd.org X-Virus-Status: Clean X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (mail.allbsd.org [133.31.130.32]); Mon, 01 Jul 2013 18:36:23 +0900 (JST) X-Spam-Status: No, score=-86.4 required=13.0 tests=CONTENT_TYPE_PRESENT, DIRECTOCNDYN,DYN_PBL,MIMEQENC,MIME_CHARSET_FARAWAY,ONLY1HOPDIRECT,QENCPTR1, QENCPTR2,RCVD_IN_PBL,SAMEHELOBY2HOP,USER_IN_WHITELIST,X_CHINESE_RELAY autolearn=no version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on gatekeeper.allbsd.org Cc: freebsd-rc@FreeBSD.org X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jul 2013 09:36:30 -0000 ----Security_Multipart(Mon_Jul__1_18_35_27_2013_461)-- Content-Type: Text/Plain; charset=koi8-r Content-Transfer-Encoding: quoted-printable Lev Serebryakov wrote in <1021348336.20130701020848@serebryakov.spb.ru>: le> Hello, Hiroki. le> You wrote 1 =C9=C0=CC=D1 2013 =C7., 1:29:53: le> = le> HS> The attached patch allows the following: le> HS> named_enable=3D"YES" le> HS> named_instances=3D"cache1 cache2" le> HS> named_conf=3D"/etc/namedb/named.conf" le> HS> named_cache1_enable=3D"YES" le> HS> named_cache1_conf=3D"/etc/namedb/named_cache1.conf" le> HS> named_cache2_enable=3D"NO" le> HS> named_cache2_conf=3D"/etc/namedb/named_cache2.conf" le> If it will work with ports rc scripts it will be great! For examp= le, le> nsd DNS server doesn't support views and often need to be run in mu= ltiple le> instances. Yes, it should work with third-party rc.d scripts, too. -- Hiroki ----Security_Multipart(Mon_Jul__1_18_35_27_2013_461)-- Content-Type: application/pgp-signature Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.13 (FreeBSD) iEYEABECAAYFAlHRTV8ACgkQTyzT2CeTzy38xQCfdZ7mIZ0q0cY4vo01f2VzEtl0 tMAAmwfXY3XTRL4OQqlXSGnt1mAmI8Lx =0ZSI -----END PGP SIGNATURE----- ----Security_Multipart(Mon_Jul__1_18_35_27_2013_461)---- From owner-freebsd-rc@FreeBSD.ORG Mon Jul 1 10:38:56 2013 Return-Path: Delivered-To: freebsd-rc@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 726D8F4 for ; Mon, 1 Jul 2013 10:38:56 +0000 (UTC) (envelope-from ale@FreeBSD.org) Received: from relay.andxor.it (relay.andxor.it [195.223.2.3]) by mx1.freebsd.org (Postfix) with ESMTP id 5B7E41F81 for ; Mon, 1 Jul 2013 10:38:53 +0000 (UTC) Received: (qmail 14291 invoked from network); 1 Jul 2013 10:38:45 -0000 Received: from alex.andxor.it (a.premoli@andxor.it@192.168.2.30) by relay.andxor.it with ESMTPSA; 1 Jul 2013 10:38:45 -0000 Message-ID: <51D15C35.3000200@FreeBSD.org> Date: Mon, 01 Jul 2013 12:38:45 +0200 From: Alex Dupre User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:20.0) Gecko/20100101 Firefox/20.0 SeaMonkey/2.17.1 MIME-Version: 1.0 To: freebsd-rc@FreeBSD.org, freebsd-current@FreeBSD.org Subject: Re: Proposal: multi-instance and self-contained rc.d script References: <20130701.062953.1443190655468739608.hrs@allbsd.org> In-Reply-To: <20130701.062953.1443190655468739608.hrs@allbsd.org> X-Enigmail-Version: 1.5.1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jul 2013 10:38:56 -0000 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hiroki Sato ha scritto: > 1. Multi-instance support > > In the implementation, load_rc_config() reads variables for all > instances and run_rc_command() runs each instance in order. When > doing "rc.d/foo stop", run_rc_command() stops the instances in > reverse order. I haven't looked at the implementation, but a useful feature that's usually missing is these multi-instance implementations and that is available in the multi-rc.d scripts scenario (take tomcat7 rc script as an example) is the ability to start/stop a single instance. Not always the instances are related each other, sometime they serve completely different purposes/applications and would be very useful to allow starting/stopping them independently. If we can get the best from the two implementations it'll be a win-win solution. > 2. Self-contained rc.d script I like the idea of defaults inside the scripts, but I like also a file that lists all available knobs with default values. If it can be automatically generated from the scripts for human reading purpose only, I'll appreciate it. - -- Alex Dupre -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.20 (FreeBSD) Comment: Using GnuPG with SeaMonkey - http://www.enigmail.net/ iEYEARECAAYFAlHRXDUACgkQgRXp2M5fVU2C5QCfbRJAmtDUwJVid45FyWU1TSgr SF4An26x5n4nq7qI12C57TdvaB9hFjuq =IErn -----END PGP SIGNATURE----- From owner-freebsd-rc@FreeBSD.ORG Mon Jul 1 11:06:53 2013 Return-Path: Delivered-To: freebsd-rc@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 80599642 for ; Mon, 1 Jul 2013 11:06:53 +0000 (UTC) (envelope-from owner-bugmaster@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) by mx1.freebsd.org (Postfix) with ESMTP id 7004A10E8 for ; Mon, 1 Jul 2013 11:06:53 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.7/8.14.7) with ESMTP id r61B6r4J085902 for ; Mon, 1 Jul 2013 11:06:53 GMT (envelope-from owner-bugmaster@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.7/8.14.7/Submit) id r61B6rJQ085900 for freebsd-rc@FreeBSD.org; Mon, 1 Jul 2013 11:06:53 GMT (envelope-from owner-bugmaster@FreeBSD.org) Date: Mon, 1 Jul 2013 11:06:53 GMT Message-Id: <201307011106.r61B6rJQ085900@freefall.freebsd.org> X-Authentication-Warning: freefall.freebsd.org: gnats set sender to owner-bugmaster@FreeBSD.org using -f From: FreeBSD bugmaster To: freebsd-rc@FreeBSD.org Subject: Current problem reports assigned to freebsd-rc@FreeBSD.org X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jul 2013 11:06:53 -0000 Note: to view an individual PR, use: http://www.freebsd.org/cgi/query-pr.cgi?pr=(number). The following is a listing of current problems submitted by FreeBSD users. These represent problem reports covering all versions including experimental development code and obsolete releases. S Tracker Resp. Description -------------------------------------------------------------------------------- o conf/179828 rc [rc.d] [PATCH] rc.d/syslogd link socket to /dev/log fa o conf/177217 rc [patch] rc.d/ddb -- squelch warning when ddb_enable=ye o conf/177089 rc ntpd startup script does not work well o conf/176347 rc [rc.conf] [patch] Add support for firewall deny lists o conf/176181 rc [rc.subr] rc.subr emitting warnings for non-defined xx o conf/175311 rc [patch] add "dump" fs type support to rc.d/dumpon o conf/175105 rc /etc/rc.d/* and more: syntax 'return_boolean_cmd && do o conf/175079 rc [rc.subr] [patch] rc.subr poorly handles recursive run o bin/173153 rc [rc.d] [patch] $netwait_ip should be more parallel o conf/172787 rc [rc.conf] FreeBSD 9.x broken alias syntax on vlan inte o conf/172532 rc [rc] [patch] service routing restart always fails o conf/169047 rc [rc.subr] [patch] /etc/rc.subr not checking some scrip p bin/168544 rc [patch] [rc]: addswap-mounted swapfiles cause panic on o conf/167566 rc [rc.d] [patch] ipdivert module loading vs. ipfw rc.d o o conf/166484 rc [rc] [patch] rc.initdiskless patch for different major o conf/165769 rc [rc][jai][ipv6] IPv6 Initialization on external iface o conf/164393 rc [rc.d] restarting netif with static addresses doesn't o conf/163508 rc [rc.subr] [patch] Add "enable" and "disable" commands o conf/163488 rc Confusing explanation in defaults/rc.conf o conf/163321 rc [rc.conf] [patch] allow _fib syntax in rc.conf o conf/162642 rc .sh scripts in /usr/local/etc/rc.d get executed, not s o conf/161107 rc [rc] stop_boot in mountcritlocal usage is incorrect. o conf/160403 rc [rc] [patch] concurrently running rc-scripts during bo o conf/160240 rc rc.d/mdconfig and mdconfig2 should autoset $_type to v o conf/159846 rc [rc.conf] routing_stop_inet6() logic doesn't handle ip o conf/158557 rc [patch] /etc/rc.d/pf broken messages o conf/158127 rc [patch] remount_optional option in rc.initdiskless doe o conf/153666 rc [rc.d][patch] mount filesystems from fstab over zfs da o conf/153200 rc post-boot /etc/rc.d/network_ipv6 start can miss neighb o conf/153123 rc [rc] [patch] add gsched rc file to automatically inser o conf/150474 rc [patch] rc.d/accounting: Add ability to set location o o conf/149867 rc [PATCH] rc.d script to manage multiple FIBS (kern opti o conf/149831 rc [PATCH] add support to /etc/rc.d/jail for delegating Z o conf/148656 rc rc.firewall(8): {oip} and {iip} variables in rc.firewa o conf/147685 rc [rc.d] [patch] new feature for /etc/rc.d/fsck o conf/147444 rc [rc.d] [patch] /etc/rc.d/zfs stop not called on reboot o conf/146053 rc [patch] [request] shutdown of jails breaks inter-jail o conf/145399 rc [patch] rc.d scripts are unable to start/stop programs o conf/145009 rc [patch] rc.subr(8): rc.conf should allow mac label con o conf/143637 rc [patch] ntpdate(8) support for ntp-servers supplied by o conf/143085 rc [patch] ftp-proxy(8) rc(8) with multiple instances a conf/142973 rc [jail] [patch] Strange counter init value in jail rc o conf/142434 rc [patch] Add cpuset(1) support to rc.subr(8) o conf/142304 rc rc.conf(5): mdconfig and mdconfig2 rc.d scripts lack e o conf/141909 rc rc.subr(8): [patch] add rc.conf.d support to /usr/loca o conf/141678 rc [patch] A minor enhancement to how /etc/rc.d/jail dete o conf/140440 rc [patch] allow local command files in rc.{suspend,resum o conf/140261 rc [patch] Improve flexibility of mdconfig2 startup scrip p conf/138208 rc [rc.d] [patch] Making rc.firewall (workstation) IPv6 a o conf/137271 rc [rc.d] Cannot update /etc/host.conf when root filesyst o conf/136624 rc [rc.d] sysctl variables for ipnat are not applied on b o conf/134918 rc [patch] rc.subr fails to detect perl daemons o conf/134660 rc [patch] rc-script for initializing ng_netflow+ng_ipfw o conf/134333 rc PPP configuration problem in the rc.d scripts in combi o conf/133890 rc [patch] sshd(8): add multiple profiles to the rc.d scr o conf/128299 rc [patch] /etc/rc.d/geli does not mount partitions using o conf/126392 rc [patch] rc.conf ifconfig_xx keywords cannot be escaped o conf/124747 rc [patch] savecore can't create dump from encrypted swap o conf/124248 rc [jail] [patch] add support for nice value for rc.d/jai o conf/123734 rc [patch] Chipset VIA CX700 requires extra initializatio o conf/123222 rc [patch] Add rtprio(1)/idprio(1) support to rc.subr(8). o conf/122968 rc [rc.d] /etc/rc.d/addswap: md swapfile multiplication a o conf/122477 rc [patch] /etc/rc.d/mdconfig and mdconfig2 are ignoring o conf/122170 rc [patch] [request] New feature: notify admin via page o o kern/121566 rc [nfs] [request] [patch] ethernet iface should be broug a conf/119874 rc [patch] "/etc/rc.d/pf reload" fails if there are macro o conf/119076 rc [patch] [rc.d] /etc/rc.d/netif tries to remove alias a o bin/118325 rc [patch] [request] new periodic script to test statuses f conf/118255 rc savecore never finding kernel core dumps (rcorder prob f conf/117935 rc [patch] ppp fails to start at boot because of missing f conf/113915 rc [ndis] [patch] ndis wireless driver fails to associate o conf/108589 rc rtsol(8) fails due to default ipfw rules o conf/106009 rc [ppp] [patch] [request] Fix pppoed startup script to p f conf/105689 rc [ppp] [request] syslogd starts too late at boot f conf/105145 rc [ppp] [patch] [request] add redial function to rc.d/pp f conf/104549 rc [patch] rc.d/nfsd needs special _find_processes functi o conf/102700 rc [geli] [patch] Add encrypted /tmp support to GELI/GBDE o conf/93815 rc [patch] Adds in the ability to save ipfw rules to rc.d f conf/92523 rc [patch] allow rc scripts to kill process after a timeo o conf/89870 rc [patch] [request] make netif verbose rc.conf toggle a conf/88913 rc [patch] wrapper support for rc.subr o conf/85819 rc [patch] script allowing multiuser mode in spite of fsc o kern/81006 rc ipnat not working with tunnel interfaces on startup o conf/77663 rc Suggestion: add /etc/rc.d/addnetswap after addcritremo o conf/73677 rc [patch] add support for powernow states to power_profi a conf/58939 rc [patch] dumb little hack for /etc/rc.firewall{,6} f conf/56934 rc [patch] rc.firewall rules for natd expect an interface f conf/13775 rc multi-user boot may hang in NIS environment 88 problems total. From owner-freebsd-rc@FreeBSD.ORG Mon Jul 1 13:25:43 2013 Return-Path: Delivered-To: freebsd-rc@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 1B8966F2; Mon, 1 Jul 2013 13:25:43 +0000 (UTC) (envelope-from wblock@wonkity.com) Received: from wonkity.com (wonkity.com [67.158.26.137]) by mx1.freebsd.org (Postfix) with ESMTP id D30BF1BD0; Mon, 1 Jul 2013 13:25:42 +0000 (UTC) Received: from wonkity.com (localhost [127.0.0.1]) by wonkity.com (8.14.7/8.14.7) with ESMTP id r61DPf88030031; Mon, 1 Jul 2013 07:25:41 -0600 (MDT) (envelope-from wblock@wonkity.com) Received: from localhost (wblock@localhost) by wonkity.com (8.14.7/8.14.7/Submit) with ESMTP id r61DPfSX030028; Mon, 1 Jul 2013 07:25:41 -0600 (MDT) (envelope-from wblock@wonkity.com) Date: Mon, 1 Jul 2013 07:25:41 -0600 (MDT) From: Warren Block To: Jilles Tjoelker Subject: Re: Proposal: multi-instance and self-contained rc.d script In-Reply-To: <20130630221032.GB43309@stack.nl> Message-ID: References: <20130701.062953.1443190655468739608.hrs@allbsd.org> <20130630221032.GB43309@stack.nl> User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.4.3 (wonkity.com [127.0.0.1]); Mon, 01 Jul 2013 07:25:41 -0600 (MDT) Cc: freebsd-rc@FreeBSD.org X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jul 2013 13:25:43 -0000 On Mon, 1 Jul 2013, Jilles Tjoelker wrote: > On Mon, Jul 01, 2013 at 06:29:53AM +0900, Hiroki Sato wrote: ... >> b) Make rc.d/foo always have rc.d/foo(8) manual page. > > However, I don't like another set of manual pages. They could be autogenerated by reading comments and variable values in the rc.d scripts. Of course the rc.d scripts would have to contain that information. At least it would be in the same file, helping to keep the doc in sync with the script. This is not to suggest a full man page in the script, just a short text summary along with variables that may be used. '/etc/rc.d/routed manpage' would return the generated mdoc code. '/etc/rc.d/routed help' could pipe that output to man. What filenames or section would be used for the generated man pages? routed(8) already exists, and "rc.d/routed.8" has problems both as a filename and an argument to man(1). From owner-freebsd-rc@FreeBSD.ORG Mon Jul 1 18:27:54 2013 Return-Path: Delivered-To: freebsd-rc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 964C1E3F for ; Mon, 1 Jul 2013 18:27:54 +0000 (UTC) (envelope-from lists@eitanadler.com) Received: from mail-pa0-x231.google.com (mail-pa0-x231.google.com [IPv6:2607:f8b0:400e:c03::231]) by mx1.freebsd.org (Postfix) with ESMTP id 71E621A70 for ; Mon, 1 Jul 2013 18:27:54 +0000 (UTC) Received: by mail-pa0-f49.google.com with SMTP id ld11so5277874pab.8 for ; Mon, 01 Jul 2013 11:27:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eitanadler.com; s=0xdeadbeef; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=MMuz5wqoFG+H6r968gZ1Eon5k+Iio8huobkuyWNUrIs=; b=RxOkzVv1wDaiIWjV2YbhgXXkaHcjcOGEJ6EYFfd5mTcne31s/n1mevWa64SxwQyisN t6YdYMhKPoyaKWMfOSdB+EPiLHN1hOLgEHqVBE178mtZqqyNA+XvJZRFTWj1UBvWThjD 4mqlLofT29p3E15tqxOrjk4GsyT7PnQ6dOyJc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type:x-gm-message-state; bh=MMuz5wqoFG+H6r968gZ1Eon5k+Iio8huobkuyWNUrIs=; b=KhFQGWgNNPrOjZ6WT7QV6DV5Yeykcy9S7eKQotVBWsGPTUHBkTnXucQNMSJoszlvZ4 ncRG8DjdeKPdKD4ixccrSVLHI8KHfgU1oz1JScKvFDdAcNo51fGJ6PsCU7WKegLL2JQS fYyLIG1c6ORKyRjjVakL+nxW3/85V4mOcYk7b4AwblwKlj79DTBy0Kg1Ar+NjhS6b6Tm VCgpljgCA/qOMMwf4Ugy8UD14BZSLy2w1ehquHljYTrAs06VpH+lBugQmebauf4FIcxR K6rmh2snBt5qRY65F+btdiFkZPI1ERJitG8l/uI7LKHh0k9nu1oIxpDrSDOx7v+qK0rT v9DA== X-Received: by 10.68.113.2 with SMTP id iu2mr25255971pbb.108.1372703274252; Mon, 01 Jul 2013 11:27:54 -0700 (PDT) MIME-Version: 1.0 Received: by 10.70.45.33 with HTTP; Mon, 1 Jul 2013 11:27:24 -0700 (PDT) In-Reply-To: References: <20130701.062953.1443190655468739608.hrs@allbsd.org> <20130630221032.GB43309@stack.nl> From: Eitan Adler Date: Mon, 1 Jul 2013 20:27:24 +0200 Message-ID: Subject: Re: Proposal: multi-instance and self-contained rc.d script To: Warren Block Content-Type: text/plain; charset=UTF-8 X-Gm-Message-State: ALoCoQkYAcjrHFQ5ZC7pXHDXqwAXAdC/ukRJIJ/sV5A2D2U5hk+Uasx9gp/F5AjPo6fl7j6TnZza Cc: freebsd-rc@freebsd.org X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jul 2013 18:27:54 -0000 On Mon, Jul 1, 2013 at 3:25 PM, Warren Block wrote: > '/etc/rc.d/routed manpage' would return the generated mdoc code. > '/etc/rc.d/routed help' could pipe that output to man. We should discourage directly running rc.d scripts and should instead encourage people to use the service(1) interface. +1 for both ideas though: they both sound like a very good direction to go in. -- Eitan Adler From owner-freebsd-rc@FreeBSD.ORG Mon Jul 1 18:44:39 2013 Return-Path: Delivered-To: freebsd-rc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id D6E7C51D for ; Mon, 1 Jul 2013 18:44:39 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from mail-yh0-f46.google.com (mail-yh0-f46.google.com [209.85.213.46]) by mx1.freebsd.org (Postfix) with ESMTP id 9D1E71B22 for ; Mon, 1 Jul 2013 18:44:39 +0000 (UTC) Received: by mail-yh0-f46.google.com with SMTP id i57so2658546yha.33 for ; Mon, 01 Jul 2013 11:44:33 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=sender:subject:mime-version:content-type:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to:x-mailer :x-gm-message-state; bh=7n7qHZH6IU5JAK8cwxIugnPMZTjk7+xIoZqMpSs/NWY=; b=C7MnA5PxgH/KYjo548oed+EveKDTmzpn7KuEJYCui36n2qOyFR7eLKBFgvHmRi54NW 20nGD+OsWCIRh9EGQaxLcEBOlx+CrsP+rc1/UeBy/arxyj+cdSLepUpbTHKiPdvx2ZaV R4dTekZKscjtXjf7oZi+sxp5h3bFPvJWCd2tkDzNoXt4HlFlzsrhehzVF3vM7UcDEcCW qXdrdGmZO62X88PD9yIJ3MPhjs58sSAkoWWpug7zh84XdA1WSCA0OzRQlyl+NfsCTUBi 6dttnezBlxh4oCwDgi/hOOjtijCIimCG3WnjHhaSMPjcKdUSMKwbkb93HoxRUPmLcM+A IdTw== X-Received: by 10.236.152.228 with SMTP id d64mr12440371yhk.88.1372704273550; Mon, 01 Jul 2013 11:44:33 -0700 (PDT) Received: from monkey-bot.int.fusionio.com ([209.117.142.2]) by mx.google.com with ESMTPSA id 66sm19460065yhe.20.2013.07.01.11.44.31 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 01 Jul 2013 11:44:32 -0700 (PDT) Sender: Warner Losh Subject: Re: Proposal: multi-instance and self-contained rc.d script Mime-Version: 1.0 (Apple Message framework v1085) Content-Type: text/plain; charset=us-ascii From: Warner Losh In-Reply-To: Date: Mon, 1 Jul 2013 12:44:29 -0600 Content-Transfer-Encoding: quoted-printable Message-Id: <6E2CC3DE-E77E-4ECB-AA14-B90BAD2DFB3E@bsdimp.com> References: <20130701.062953.1443190655468739608.hrs@allbsd.org> <20130630221032.GB43309@stack.nl> To: Eitan Adler X-Mailer: Apple Mail (2.1085) X-Gm-Message-State: ALoCoQnb0IAZAAGAO4vcNN6q4e57NVO6fJd2SGURoQFruMXnwnNUsoIuxrSpNyRk2k3REdcvGa8e Cc: freebsd-rc@freebsd.org X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jul 2013 18:44:39 -0000 On Jul 1, 2013, at 12:27 PM, Eitan Adler wrote: > On Mon, Jul 1, 2013 at 3:25 PM, Warren Block = wrote: >> '/etc/rc.d/routed manpage' would return the generated mdoc code. >> '/etc/rc.d/routed help' could pipe that output to man. >=20 > We should discourage directly running rc.d scripts and should instead > encourage people to use the service(1) interface. >=20 > +1 for both ideas though: they both sound like a very good direction = to go in. I just need a tcsh magic command to make command completion work with = service. :) Warner From owner-freebsd-rc@FreeBSD.ORG Mon Jul 1 18:47:21 2013 Return-Path: Delivered-To: freebsd-rc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id AB9B06C6 for ; Mon, 1 Jul 2013 18:47:21 +0000 (UTC) (envelope-from wblock@wonkity.com) Received: from wonkity.com (wonkity.com [67.158.26.137]) by mx1.freebsd.org (Postfix) with ESMTP id 6ED401B44 for ; Mon, 1 Jul 2013 18:47:21 +0000 (UTC) Received: from wonkity.com (localhost [127.0.0.1]) by wonkity.com (8.14.7/8.14.7) with ESMTP id r61IlHIc045002; Mon, 1 Jul 2013 12:47:17 -0600 (MDT) (envelope-from wblock@wonkity.com) Received: from localhost (wblock@localhost) by wonkity.com (8.14.7/8.14.7/Submit) with ESMTP id r61IlHNG044999; Mon, 1 Jul 2013 12:47:17 -0600 (MDT) (envelope-from wblock@wonkity.com) Date: Mon, 1 Jul 2013 12:47:17 -0600 (MDT) From: Warren Block To: Warner Losh Subject: Re: Proposal: multi-instance and self-contained rc.d script In-Reply-To: <6E2CC3DE-E77E-4ECB-AA14-B90BAD2DFB3E@bsdimp.com> Message-ID: References: <20130701.062953.1443190655468739608.hrs@allbsd.org> <20130630221032.GB43309@stack.nl> <6E2CC3DE-E77E-4ECB-AA14-B90BAD2DFB3E@bsdimp.com> User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.4.3 (wonkity.com [127.0.0.1]); Mon, 01 Jul 2013 12:47:17 -0600 (MDT) Cc: freebsd-rc@freebsd.org X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jul 2013 18:47:21 -0000 On Mon, 1 Jul 2013, Warner Losh wrote: > > On Jul 1, 2013, at 12:27 PM, Eitan Adler wrote: > >> On Mon, Jul 1, 2013 at 3:25 PM, Warren Block wrote: >>> '/etc/rc.d/routed manpage' would return the generated mdoc code. >>> '/etc/rc.d/routed help' could pipe that output to man. >> >> We should discourage directly running rc.d scripts and should instead >> encourage people to use the service(1) interface. >> >> +1 for both ideas though: they both sound like a very good direction to go in. > > I just need a tcsh magic command to make command completion work with service. :) Like this? complete service 'c/-/(e l r v)/' \ 'p/1/`service -l`/' \ 'n/*/(start stop reload restart status rcvar onestart onestop)/' From owner-freebsd-rc@FreeBSD.ORG Mon Jul 1 19:13:36 2013 Return-Path: Delivered-To: freebsd-rc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id D2FB7FE1 for ; Mon, 1 Jul 2013 19:13:36 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from mail-gh0-f175.google.com (mail-gh0-f175.google.com [209.85.160.175]) by mx1.freebsd.org (Postfix) with ESMTP id 97D971CC3 for ; Mon, 1 Jul 2013 19:13:36 +0000 (UTC) Received: by mail-gh0-f175.google.com with SMTP id z19so2103331ghb.20 for ; Mon, 01 Jul 2013 12:13:30 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=sender:subject:mime-version:content-type:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to:x-mailer :x-gm-message-state; bh=3m7yr5V5rjoNQhmpB/fV2ySkzn6Tiy572yehNszJ4V0=; b=Ujvd0EHup+kc91X7eVYeLJpg4RnfetTbILxyBmZrndlBVteQikJkawW/DS5jNnbs4r fhrxx/IPu/+4LWTaBegtz8gFgQEnV0zexrCWveIP0QFUr+RtqDNDS1Wco+wVVZOs5j53 +jqApUUxR6yYRK4Ndjmi1YLmcKTnDiY/Y6RHlQ+MTiCIIRFqWhDu/4mi60/udI4HVKCh 3nV4TYPZ0Iwp9esZqQjl+8om8dFLJFhMkYQcpkMLfZTrXnbodYS+hHZwjfMOH29d4L1h Dvbhe85qJoQiKbrTlc2jQ4V2RHp7DrK5ELlE9UE6CbXxfIt8RsKmAweBDezmiItB7nCW bV4w== X-Received: by 10.236.19.38 with SMTP id m26mr8719263yhm.113.1372706010010; Mon, 01 Jul 2013 12:13:30 -0700 (PDT) Received: from monkey-bot.int.fusionio.com ([209.117.142.2]) by mx.google.com with ESMTPSA id m63sm26027633yhb.10.2013.07.01.12.13.28 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 01 Jul 2013 12:13:29 -0700 (PDT) Sender: Warner Losh Subject: Re: Proposal: multi-instance and self-contained rc.d script Mime-Version: 1.0 (Apple Message framework v1085) Content-Type: text/plain; charset=us-ascii From: Warner Losh In-Reply-To: Date: Mon, 1 Jul 2013 13:13:25 -0600 Content-Transfer-Encoding: quoted-printable Message-Id: <154C0FE2-C895-4C65-98D7-59BED731E91E@bsdimp.com> References: <20130701.062953.1443190655468739608.hrs@allbsd.org> <20130630221032.GB43309@stack.nl> <6E2CC3DE-E77E-4ECB-AA14-B90BAD2DFB3E@bsdimp.com> To: Warren Block X-Mailer: Apple Mail (2.1085) X-Gm-Message-State: ALoCoQmMPB7fiLcaAP0H1cBJLmCzXAY6AI0OcZV4XD1knsIhMNvcccqcFahjmJ13ffwXV35f5oGx Cc: freebsd-rc@freebsd.org X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jul 2013 19:13:36 -0000 On Jul 1, 2013, at 12:47 PM, Warren Block wrote: > On Mon, 1 Jul 2013, Warner Losh wrote: >=20 >>=20 >> On Jul 1, 2013, at 12:27 PM, Eitan Adler wrote: >>=20 >>> On Mon, Jul 1, 2013 at 3:25 PM, Warren Block = wrote: >>>> '/etc/rc.d/routed manpage' would return the generated mdoc code. >>>> '/etc/rc.d/routed help' could pipe that output to man. >>>=20 >>> We should discourage directly running rc.d scripts and should = instead >>> encourage people to use the service(1) interface. >>>=20 >>> +1 for both ideas though: they both sound like a very good direction = to go in. >>=20 >> I just need a tcsh magic command to make command completion work with = service. :) >=20 > Like this? >=20 > complete service 'c/-/(e l r v)/' \ > 'p/1/`service -l`/' \ > 'n/*/(start stop reload restart status rcvar = onestart onestop)/' That works, as does the more complicated: set = _service=3D({fast,one,force,}{start,stop,reload,restart,status,rcvar,jails= tatus,poll}) complete service 'c/-/(e l r v)/' \ 'p/1/`service -l`/' \ 'n/*/$_service/' Warner= From owner-freebsd-rc@FreeBSD.ORG Mon Jul 1 21:22:34 2013 Return-Path: Delivered-To: freebsd-rc@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 66B02A30 for ; Mon, 1 Jul 2013 21:22:34 +0000 (UTC) (envelope-from hrs@FreeBSD.org) Received: from mail.allbsd.org (gatekeeper.allbsd.org [IPv6:2001:2f0:104:e001::32]) by mx1.freebsd.org (Postfix) with ESMTP id 5445512C8 for ; Mon, 1 Jul 2013 21:22:33 +0000 (UTC) Received: from alph.d.allbsd.org (p3086-ipbf906funabasi.chiba.ocn.ne.jp [122.26.46.86]) (authenticated bits=128) by mail.allbsd.org (8.14.5/8.14.5) with ESMTP id r61LMFSH003968 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 2 Jul 2013 06:22:25 +0900 (JST) (envelope-from hrs@FreeBSD.org) Received: from localhost (localhost [127.0.0.1]) (authenticated bits=0) by alph.d.allbsd.org (8.14.5/8.14.5) with ESMTP id r61LMDxY090833; Tue, 2 Jul 2013 06:22:14 +0900 (JST) (envelope-from hrs@FreeBSD.org) Date: Tue, 02 Jul 2013 06:21:49 +0900 (JST) Message-Id: <20130702.062149.303421326784941070.hrs@allbsd.org> To: wblock@wonkity.com Subject: Re: Proposal: multi-instance and self-contained rc.d script From: Hiroki Sato In-Reply-To: References: <20130701.062953.1443190655468739608.hrs@allbsd.org> <20130630221032.GB43309@stack.nl> X-PGPkey-fingerprint: BDB3 443F A5DD B3D0 A530 FFD7 4F2C D3D8 2793 CF2D X-Mailer: Mew version 6.5 on Emacs 24.3 / Mule 6.0 (HANACHIRUSATO) Mime-Version: 1.0 Content-Type: Multipart/Signed; protocol="application/pgp-signature"; micalg=pgp-sha1; boundary="--Security_Multipart(Tue_Jul__2_06_21_49_2013_915)--" Content-Transfer-Encoding: 7bit X-Virus-Scanned: clamav-milter 0.97.4 at gatekeeper.allbsd.org X-Virus-Status: Clean X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (mail.allbsd.org [133.31.130.32]); Tue, 02 Jul 2013 06:22:27 +0900 (JST) X-Spam-Status: No, score=-89.5 required=13.0 tests=CONTENT_TYPE_PRESENT, DIRECTOCNDYN,DYN_PBL,ONLY1HOPDIRECT,RCVD_IN_PBL,SAMEHELOBY2HOP, USER_IN_WHITELIST autolearn=no version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on gatekeeper.allbsd.org Cc: freebsd-rc@FreeBSD.org X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jul 2013 21:22:34 -0000 ----Security_Multipart(Tue_Jul__2_06_21_49_2013_915)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Warren Block wrote in : wb> On Mon, 1 Jul 2013, Jilles Tjoelker wrote: wb> wb> > On Mon, Jul 01, 2013 at 06:29:53AM +0900, Hiroki Sato wrote: wb> ... wb> >> b) Make rc.d/foo always have rc.d/foo(8) manual page. wb> > wb> > However, I don't like another set of manual pages. wb> wb> They could be autogenerated by reading comments and variable values in wb> the rc.d scripts. Of course the rc.d scripts would have to contain wb> that information. At least it would be in the same file, helping to wb> keep the doc in sync with the script. This is not to suggest a full wb> man page in the script, just a short text summary along with variables wb> that may be used. wb> wb> '/etc/rc.d/routed manpage' would return the generated mdoc code. wb> '/etc/rc.d/routed help' could pipe that output to man. wb> wb> What filenames or section would be used for the generated man pages? wb> routed(8) already exists, and "rc.d/routed.8" has problems both as a wb> filename and an argument to man(1). I do not think manual page autogeneration is simple becuase what we need is not just for one-line comments about each variable. The goal of adding manual pages is a replacement of rc.conf(5) manual page. It includes examples and usage of complex rc.d scripts like rc.d/netif. If we want an option to show comments for variables, adding the third parameter into set_rcvar like this: set_rcvar program /sbin/routed "Pathname of routing daemon" makes "rc.d/routed rcvar" possible to show them as routed_program="/sbin/routed" # Pathname of routing daemon (default: "/sbin/routed") wb> routed(8) already exists, and "rc.d/routed.8" has problems both as a wb> filename and an argument to man(1). What is the problem with the name rc.d/routed(8)? -- Hiroki ----Security_Multipart(Tue_Jul__2_06_21_49_2013_915)-- Content-Type: application/pgp-signature Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.13 (FreeBSD) iEYEABECAAYFAlHR8u0ACgkQTyzT2CeTzy1engCg0Jz0qm0nCNNe3KELpaBBpSmd +3AAoKnJid7N4xn9LVGLiTOGUaQ2gZZl =AA0J -----END PGP SIGNATURE----- ----Security_Multipart(Tue_Jul__2_06_21_49_2013_915)---- From owner-freebsd-rc@FreeBSD.ORG Mon Jul 1 22:30:55 2013 Return-Path: Delivered-To: freebsd-rc@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 88863230; Mon, 1 Jul 2013 22:30:55 +0000 (UTC) (envelope-from wblock@wonkity.com) Received: from wonkity.com (wonkity.com [67.158.26.137]) by mx1.freebsd.org (Postfix) with ESMTP id 3326B16F0; Mon, 1 Jul 2013 22:30:54 +0000 (UTC) Received: from wonkity.com (localhost [127.0.0.1]) by wonkity.com (8.14.7/8.14.7) with ESMTP id r61MUsNd046447; Mon, 1 Jul 2013 16:30:54 -0600 (MDT) (envelope-from wblock@wonkity.com) Received: from localhost (wblock@localhost) by wonkity.com (8.14.7/8.14.7/Submit) with ESMTP id r61MUrP2046444; Mon, 1 Jul 2013 16:30:53 -0600 (MDT) (envelope-from wblock@wonkity.com) Date: Mon, 1 Jul 2013 16:30:53 -0600 (MDT) From: Warren Block To: Hiroki Sato Subject: Re: Proposal: multi-instance and self-contained rc.d script In-Reply-To: <20130702.062149.303421326784941070.hrs@allbsd.org> Message-ID: References: <20130701.062953.1443190655468739608.hrs@allbsd.org> <20130630221032.GB43309@stack.nl> <20130702.062149.303421326784941070.hrs@allbsd.org> User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.4.3 (wonkity.com [127.0.0.1]); Mon, 01 Jul 2013 16:30:54 -0600 (MDT) Cc: freebsd-rc@FreeBSD.org X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jul 2013 22:30:55 -0000 On Tue, 2 Jul 2013, Hiroki Sato wrote: > Warren Block wrote > in : > > wb> On Mon, 1 Jul 2013, Jilles Tjoelker wrote: > wb> > wb> > On Mon, Jul 01, 2013 at 06:29:53AM +0900, Hiroki Sato wrote: > wb> ... > wb> >> b) Make rc.d/foo always have rc.d/foo(8) manual page. > wb> > > wb> > However, I don't like another set of manual pages. > wb> > wb> They could be autogenerated by reading comments and variable values in > wb> the rc.d scripts. Of course the rc.d scripts would have to contain > wb> that information. At least it would be in the same file, helping to > wb> keep the doc in sync with the script. This is not to suggest a full > wb> man page in the script, just a short text summary along with variables > wb> that may be used. > wb> > wb> '/etc/rc.d/routed manpage' would return the generated mdoc code. > wb> '/etc/rc.d/routed help' could pipe that output to man. > wb> > wb> What filenames or section would be used for the generated man pages? > wb> routed(8) already exists, and "rc.d/routed.8" has problems both as a > wb> filename and an argument to man(1). > > I do not think manual page autogeneration is simple becuase what we > need is not just for one-line comments about each variable. The goal > of adding manual pages is a replacement of rc.conf(5) manual page. > It includes examples and usage of complex rc.d scripts like > rc.d/netif. If we want an option to show comments for variables, > adding the third parameter into set_rcvar like this: > > set_rcvar program /sbin/routed "Pathname of routing daemon" > > makes "rc.d/routed rcvar" possible to show them as > > routed_program="/sbin/routed" # Pathname of routing daemon (default: "/sbin/routed") I agree that full man pages give a lot more capabilities. > wb> routed(8) already exists, and "rc.d/routed.8" has problems both as a > wb> filename and an argument to man(1). > > What is the problem with the name rc.d/routed(8)? If you mean to add an rc.d directory to /usr/share/man/man8, then that will work. I thought you meant creating filenames with embedded slashes. From owner-freebsd-rc@FreeBSD.ORG Mon Jul 1 23:17:09 2013 Return-Path: Delivered-To: freebsd-rc@smarthost.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 6E6FBB7F; Mon, 1 Jul 2013 23:17:09 +0000 (UTC) (envelope-from linimon@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) by mx1.freebsd.org (Postfix) with ESMTP id 4807918CE; Mon, 1 Jul 2013 23:17:09 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.7/8.14.7) with ESMTP id r61NH9O7037191; Mon, 1 Jul 2013 23:17:09 GMT (envelope-from linimon@freefall.freebsd.org) Received: (from linimon@localhost) by freefall.freebsd.org (8.14.7/8.14.7/Submit) id r61NH9bG037190; Mon, 1 Jul 2013 23:17:09 GMT (envelope-from linimon) Date: Mon, 1 Jul 2013 23:17:09 GMT Message-Id: <201307012317.r61NH9bG037190@freefall.freebsd.org> To: linimon@FreeBSD.org, freebsd-bugs@FreeBSD.org, freebsd-rc@FreeBSD.org From: linimon@FreeBSD.org Subject: Re: conf/180183: [rc.d] rc.d allows scripts without rcvar set to start unconditionally X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jul 2013 23:17:09 -0000 Old Synopsis: rc.d allows scripts without rcvar set to start unconditionally New Synopsis: [rc.d] rc.d allows scripts without rcvar set to start unconditionally Responsible-Changed-From-To: freebsd-bugs->freebsd-rc Responsible-Changed-By: linimon Responsible-Changed-When: Mon Jul 1 23:16:48 UTC 2013 Responsible-Changed-Why: Over to maintainer(s). http://www.freebsd.org/cgi/query-pr.cgi?pr=180183 From owner-freebsd-rc@FreeBSD.ORG Wed Jul 3 05:10:31 2013 Return-Path: Delivered-To: freebsd-rc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 89B773DB for ; Wed, 3 Jul 2013 05:10:31 +0000 (UTC) (envelope-from jyoti.mickey@gmail.com) Received: from mail-ie0-x233.google.com (mail-ie0-x233.google.com [IPv6:2607:f8b0:4001:c03::233]) by mx1.freebsd.org (Postfix) with ESMTP id 64B4A1C34 for ; Wed, 3 Jul 2013 05:10:31 +0000 (UTC) Received: by mail-ie0-f179.google.com with SMTP id c10so13272541ieb.24 for ; Tue, 02 Jul 2013 22:10:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=L36GRy5DWLDdO4SDMztD4q75gEjLCh5a3qPQKtX1AHQ=; b=qRLZrd5xWuvsK7MIGOM+Rq/7KauaHofRWvZDDMCE+HdDS5s36iud3WuO0eBNHGD/+P 5Mw4Xp7YBTCnmDGw1DYtBCKJVDpqYrtU4N3TAoNGY2BpWIcdigF+XMEH93+MTsfKZaty YDAKWmovoOHkPVFlDMVvyySAfOCUP0teAvLf7urmwpnIpAdo40aIoTczPo4U5/08xUgn vyThacDqNO2P5hHkajCVqBkVtOeVjkGS/8Fxlj92Aw2kRqMx9FF4nhS/P7XGURZy5nOh 4USNK13zljr6fDSCbREYH05Uy1CS5Z7qgy52ArntqwKZ5NPbkB/na1WTTSxy3CiS8dP0 HYyw== MIME-Version: 1.0 X-Received: by 10.43.129.1 with SMTP id hg1mr1081195icc.11.1372828231064; Tue, 02 Jul 2013 22:10:31 -0700 (PDT) Received: by 10.42.134.68 with HTTP; Tue, 2 Jul 2013 22:10:30 -0700 (PDT) Date: Wed, 3 Jul 2013 10:40:30 +0530 Message-ID: Subject: /usr/local/etc missing in default FreeBSD 9.1 installation. From: Jyoti Sharma To: freebsd-rc@freebsd.org Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.14 X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Jul 2013 05:10:31 -0000 Is this a known issue? I installed it over web selecting all components. At the end of the installation the (pristine) system had /usr/local folder but absolutely nothing under it. Regards, Jyoti From owner-freebsd-rc@FreeBSD.ORG Wed Jul 3 05:58:13 2013 Return-Path: Delivered-To: freebsd-rc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 89D05346 for ; Wed, 3 Jul 2013 05:58:13 +0000 (UTC) (envelope-from matthew@FreeBSD.org) Received: from smtp.infracaninophile.co.uk (smtp6.infracaninophile.co.uk [IPv6:2001:8b0:151:1:3cd3:cd67:fafa:3d78]) by mx1.freebsd.org (Postfix) with ESMTP id 226AE1E98 for ; Wed, 3 Jul 2013 05:58:11 +0000 (UTC) Received: from seedling.black-earth.co.uk (seedling.black-earth.co.uk [81.2.117.99]) (authenticated bits=0) by smtp.infracaninophile.co.uk (8.14.7/8.14.7) with ESMTP id r635w5G5017551 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO) for ; Wed, 3 Jul 2013 06:58:06 +0100 (BST) (envelope-from matthew@FreeBSD.org) DKIM-Filter: OpenDKIM Filter v2.8.3 smtp.infracaninophile.co.uk r635w5G5017551 Authentication-Results: smtp.infracaninophile.co.uk/r635w5G5017551; dkim=none reason="no signature"; dkim-adsp=none (unprotected policy) Message-ID: <51D3BD65.4060401@FreeBSD.org> Date: Wed, 03 Jul 2013 06:57:57 +0100 From: Matthew Seaman User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:17.0) Gecko/20130620 Thunderbird/17.0.7 MIME-Version: 1.0 To: freebsd-rc@freebsd.org Subject: Re: /usr/local/etc missing in default FreeBSD 9.1 installation. References: In-Reply-To: X-Enigmail-Version: 1.5.1 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="----enig2FVXRSABWVLVFXNTCDKSR" X-Virus-Scanned: clamav-milter 0.97.8 at lucid-nonsense.infracaninophile.co.uk X-Virus-Status: Clean X-Spam-Status: No, score=-1.6 required=5.0 tests=AWL,BAYES_00,SPF_HELO_FAIL, SPF_SOFTFAIL autolearn=no version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on lucid-nonsense.infracaninophile.co.uk X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Jul 2013 05:58:13 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) ------enig2FVXRSABWVLVFXNTCDKSR Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On 03/07/2013 06:10, Jyoti Sharma wrote: > Is this a known issue? I installed it over web selecting all components= =2E At > the end of the installation the (pristine) system had /usr/local folder= but > absolutely nothing under it. That's normal. /usr/local/etc and other directory structures under /usr/local will be created as soon as you install anything from ports. Cheers, Matthew --=20 Dr Matthew J Seaman MA, D.Phil. PGP: http://www.infracaninophile.co.uk/pgpkey ------enig2FVXRSABWVLVFXNTCDKSR Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.16 (Darwin) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iEYEARECAAYFAlHTvWwACgkQ8Mjk52CukIwP4gCfeu+cEE6AAVllKyDXATbV2d2l zRgAn3l3mdXypb4lBE4enx1JVaJU0Viy =fGLA -----END PGP SIGNATURE----- ------enig2FVXRSABWVLVFXNTCDKSR-- From owner-freebsd-rc@FreeBSD.ORG Sat Jul 6 07:50:24 2013 Return-Path: Delivered-To: freebsd-rc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id DE28ABAA; Sat, 6 Jul 2013 07:50:24 +0000 (UTC) (envelope-from yaneurabeya@gmail.com) Received: from mail-pd0-x230.google.com (mail-pd0-x230.google.com [IPv6:2607:f8b0:400e:c02::230]) by mx1.freebsd.org (Postfix) with ESMTP id B247E1CAD; Sat, 6 Jul 2013 07:50:24 +0000 (UTC) Received: by mail-pd0-f176.google.com with SMTP id t12so2572862pdi.21 for ; Sat, 06 Jul 2013 00:50:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=references:mime-version:in-reply-to:content-type :content-transfer-encoding:message-id:cc:x-mailer:from:subject:date :to; bh=a79FSbpYNVDw3NBqlUouBRG+/PTuUQzZ2GVDgnvutv8=; b=YBhdURE9JsNfuaI06mWKLfIkeGon28OI6N1Is6cWud4p9cdK7o8aC0ew9j+iwxhw9a kpjRFgjrl6Et9Q4KErrNz7SIg1DxLKgNJRgVk94yG4FzGOIjyV1CexWJmQrJJyg5ShPj pfAHRJeqpLO7ABEXOIrn0mmI7VpW47F3T64HLSgVTmbu/5JhpABwUWYl90nW6cO2TCbN LBdgPlbeTCOKZC6PAxji/qxKNA141OauUGT3p45BsTdlJnK6VWO3USqr7pEmRvLfRSKN dEzIzGKgxidRDE4LZo7Ise0e5/5JpZ5Cq4nEfznyokf4e23vmtIDOuIAd28gP9GINhW/ qaYA== X-Received: by 10.66.226.111 with SMTP id rr15mr14443627pac.122.1373097024570; Sat, 06 Jul 2013 00:50:24 -0700 (PDT) Received: from [10.13.64.69] (mobile-166-147-080-076.mycingular.net. [166.147.80.76]) by mx.google.com with ESMTPSA id cx3sm11013775pbb.30.2013.07.06.00.50.22 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 06 Jul 2013 00:50:23 -0700 (PDT) References: <201307060413.r664DmT5009602@svn.freebsd.org> <43915FB0-442B-42CA-BA1A-E346D95838B5@gmail.com> <13CA24D6AB415D428143D44749F57D7201FB2721@ltcfiswmsgmb21> Mime-Version: 1.0 (1.0) In-Reply-To: <13CA24D6AB415D428143D44749F57D7201FB2721@ltcfiswmsgmb21> Message-Id: X-Mailer: iPhone Mail (10B329) From: Garrett Cooper Subject: Re: svn commit: r252862 - head/usr.sbin Date: Sat, 6 Jul 2013 00:50:17 -0700 To: Devin Teske Content-Type: text/plain; charset=cp932 Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.14 Cc: Devin Teske , "freebsd-rc@freebsd.org" X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 06 Jul 2013 07:50:24 -0000 On Jul 5, 2013, at 11:05 PM, "Teske, Devin" wrot= e: > On Jul 5, 2013, at 10:09 PM, Garrett Cooper wrote: >=20 >> On Jul 5, 2013, at 9:13 PM, Devin Teske wrote: >>=20 >>> Author: dteske >>> Date: Sat Jul 6 04:13:47 2013 >>> New Revision: 252862 >>> URL: https://urldefense.proofpoint.com/v1/url?u=3Dhttp://svnweb.freebsd.= org/changeset/base/252862&k=3D%2FbkpAUdJWZuiTILCq%2FFnQg%3D%3D%0A&r=3DMrjs6v= R4%2Faj2Ns9%2FssHJjg%3D%3D%0A&m=3D6Emrz4%2BdiEiu3QIuKxkRkKl%2BdgggvTvDq79TFh= oaAC8%3D%0A&s=3Df8e3ea5c36067381ada1de66dd547b09eb051cd0761b399929dfa68851d0= ca37 >>> Log: >>> Take the training-wheels off, after nearly 30 months of development. MFC= to >>> stable/9 planned after MFC 3-day period. The MFC to stable/9 is desired f= or >>> the next release to get some much-needed time: >>> + Living side-by-side with sysinstall for compare/contrast/transition >>> + Living side-by-side with bsdinstall for integration/transition >>> + Additional feedback/testing before eventual 10.0-R to make it even bet= ter >>> MFC after: >>> 3 days >>=20 >> Uh, why did you remove the conditional..? Why not just change the default= from WITHOUT_BSDCONFIG to WITH_BSDCONFIG? >>=20 >> I don't need this necessarily on an already tuned system and this doesn't= seem like something that should always be included on an appliance=81c >=20 > One plans was to use the libraries I'm bringing in to solve this PR: >=20 > http://www.freebsd.org/cgi/query-pr.cgi?pr=3Dconf/163508 > "[rc.subr] [patch] Add "enable" and "disable" commands to rc.subr" >=20 > The initial patch was rejected by dougb and I (as can be seen in the audit= trail) because editing rc.conf(5) is not a simple proposition. bsdconfig(8)= brings in a shell library called "sysrc.subr" (and the sysrc(8) utility lev= erages it to provide all the nifty things it can do). The shell library is o= f interest if we want to implement the high-level concept from the PR: >=20 > sevice {name} { enable | disable | . . . } >=20 > Since sysrc.subr provides a simple "f_sysrc_set $var $value" syntax (I'll l= eave the rest up to your imagination). >=20 > Staying on-topic, bsdconfig (or rather, its libraries) could end up entwin= ed to the shell commands and you may end up using it without ever directly e= xecuting "bsdconfig". I'd like to read more about this. We (isilon) have hacked around rc(5) becau= se the performance of rc is serialized and poor. I would prefer to avoid add= ing more end-user bloat to rc because it will drive users and consumers to t= ake more drastic measures to bypass the rc system. Thanks..= From owner-freebsd-rc@FreeBSD.ORG Sat Jul 6 08:55:15 2013 Return-Path: Delivered-To: freebsd-rc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 922EFC91; Sat, 6 Jul 2013 08:55:15 +0000 (UTC) (envelope-from yaneurabeya@gmail.com) Received: from mail-pa0-x231.google.com (mail-pa0-x231.google.com [IPv6:2607:f8b0:400e:c03::231]) by mx1.freebsd.org (Postfix) with ESMTP id 660D41E3B; Sat, 6 Jul 2013 08:55:15 +0000 (UTC) Received: by mail-pa0-f49.google.com with SMTP id ld11so2843152pab.36 for ; Sat, 06 Jul 2013 01:55:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=references:mime-version:in-reply-to:content-type :content-transfer-encoding:message-id:cc:x-mailer:from:subject:date :to; bh=XKEgl20qM9hjCBP6UH7Xj86aPeFi66qFr3kOytT2v+U=; b=PmCpeC/vT0TBIhTzL0HJdruLVl1KyBfOsZx84OGc5BqtnfE2WsK/K2o3hIsIM4yQdE qpQhYc2ScygQJXV5FgpZgwuQ07aa4CNCpchHLtmHSPp+RtQGlgO26qXMVK3Tfpg8B89q MRSYZMebkd4rkgHiV6me4UtcunTjqfXaZ3M5HBcfW+aL6R0Trgqaj5LLh1BugbNTrbC+ 3k5/lWxQOkZt8ZK9fNqeZCCOMAaj3iPn+lCHB9zaUsyA1LRREf6dkbZiZMHVOTwMIFJl Vs8Ffdu4HFcM9wN17cldrqdTDoYf6SGjHn6WZOMgocTkplwVNUXiSzFucN4DNjLGSMYf /tTQ== X-Received: by 10.68.217.137 with SMTP id oy9mr12882729pbc.130.1373100915146; Sat, 06 Jul 2013 01:55:15 -0700 (PDT) Received: from [10.13.64.69] (mobile-166-147-080-076.mycingular.net. [166.147.80.76]) by mx.google.com with ESMTPSA id ib9sm11248901pbc.43.2013.07.06.01.55.13 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 06 Jul 2013 01:55:14 -0700 (PDT) References: <201307060413.r664DmT5009602@svn.freebsd.org> <43915FB0-442B-42CA-BA1A-E346D95838B5@gmail.com> <13CA24D6AB415D428143D44749F57D7201FB2721@ltcfiswmsgmb21> Mime-Version: 1.0 (1.0) In-Reply-To: Message-Id: X-Mailer: iPhone Mail (10B329) From: Garrett Cooper Subject: Re: svn commit: r252862 - head/usr.sbin Date: Sat, 6 Jul 2013 01:55:09 -0700 To: Devin Teske Content-Type: text/plain; charset=cp932 Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.14 Cc: Devin Teske , "freebsd-rc@freebsd.org" X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 06 Jul 2013 08:55:15 -0000 On Jul 6, 2013, at 12:50 AM, Garrett Cooper wrote: > On Jul 5, 2013, at 11:05 PM, "Teske, Devin" wr= ote: >=20 >> On Jul 5, 2013, at 10:09 PM, Garrett Cooper wrote: >>=20 >>> On Jul 5, 2013, at 9:13 PM, Devin Teske wrote: >>>=20 >>>> Author: dteske >>>> Date: Sat Jul 6 04:13:47 2013 >>>> New Revision: 252862 >>>> URL: https://urldefense.proofpoint.com/v1/url?u=3Dhttp://svnweb.freebsd= .org/changeset/base/252862&k=3D%2FbkpAUdJWZuiTILCq%2FFnQg%3D%3D%0A&r=3DMrjs6= vR4%2Faj2Ns9%2FssHJjg%3D%3D%0A&m=3D6Emrz4%2BdiEiu3QIuKxkRkKl%2BdgggvTvDq79TFh= oaAC8%3D%0A&s=3Df8e3ea5c36067381ada1de66dd547b09eb051cd0761b399929dfa68851d0= ca37 >>>> Log: >>>> Take the training-wheels off, after nearly 30 months of development. MFC= to >>>> stable/9 planned after MFC 3-day period. The MFC to stable/9 is desired= for >>>> the next release to get some much-needed time: >>>> + Living side-by-side with sysinstall for compare/contrast/transition >>>> + Living side-by-side with bsdinstall for integration/transition >>>> + Additional feedback/testing before eventual 10.0-R to make it even be= tter >>>> MFC after: >>>> 3 days >>>=20 >>> Uh, why did you remove the conditional..? Why not just change the defaul= t from WITHOUT_BSDCONFIG to WITH_BSDCONFIG? >>>=20 >>> I don't need this necessarily on an already tuned system and this doesn'= t seem like something that should always be included on an appliance=81c >>=20 >> One plans was to use the libraries I'm bringing in to solve this PR: >>=20 >> http://www.freebsd.org/cgi/query-pr.cgi?pr=3Dconf/163508 >> "[rc.subr] [patch] Add "enable" and "disable" commands to rc.subr" >>=20 >> The initial patch was rejected by dougb and I (as can be seen in the audi= t trail) because editing rc.conf(5) is not a simple proposition. bsdconfig(8= ) brings in a shell library called "sysrc.subr" (and the sysrc(8) utility le= verages it to provide all the nifty things it can do). The shell library is o= f interest if we want to implement the high-level concept from the PR: >>=20 >> sevice {name} { enable | disable | . . . } >>=20 >> Since sysrc.subr provides a simple "f_sysrc_set $var $value" syntax (I'll= leave the rest up to your imagination). >>=20 >> Staying on-topic, bsdconfig (or rather, its libraries) could end up entwi= ned to the shell commands and you may end up using it without ever directly e= xecuting "bsdconfig". >=20 > I'd like to read more about this. We (isilon) have hacked around rc(5) bec= ause the performance of rc is serialized and poor. I would prefer to avoid a= dding more end-user bloat to rc because it will drive users and consumers to= take more drastic measures to bypass the rc system. >=20 > Thanks.. Also, if the day comes where rc depends on bsdconfig, I hope that the pieces= of bsdconfig would potentially be moved to .../etc for the sake of "code lo= cality". Thanks!= From owner-freebsd-rc@FreeBSD.ORG Sat Jul 6 14:27:00 2013 Return-Path: Delivered-To: freebsd-rc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id CAEA1CE2; Sat, 6 Jul 2013 14:27:00 +0000 (UTC) (envelope-from Devin.Teske@fisglobal.com) Received: from mx1.fisglobal.com (mx1.fisglobal.com [199.200.24.190]) by mx1.freebsd.org (Postfix) with ESMTP id 58F5D1957; Sat, 6 Jul 2013 14:27:00 +0000 (UTC) Received: from smtp.fisglobal.com ([10.132.206.15]) by ltcfislmsgpa06.fnfis.com (8.14.5/8.14.5) with ESMTP id r66EQxiW032086 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT); Sat, 6 Jul 2013 09:26:59 -0500 Received: from LTCFISWMSGMB21.FNFIS.com ([10.132.99.23]) by LTCFISWMSGHT04.FNFIS.com ([10.132.206.15]) with mapi id 14.02.0309.002; Sat, 6 Jul 2013 09:26:58 -0500 From: "Teske, Devin" To: Garrett Cooper Subject: Re: svn commit: r252862 - head/usr.sbin Thread-Topic: svn commit: r252862 - head/usr.sbin Thread-Index: AQHOef86piUiwSurPEaqx7GbKlXPFplXbckAgAAPlACAAB1fgIAAEiCAgABctIA= Date: Sat, 6 Jul 2013 14:26:57 +0000 Message-ID: <13CA24D6AB415D428143D44749F57D7201FB2E7F@ltcfiswmsgmb21> References: <201307060413.r664DmT5009602@svn.freebsd.org> <43915FB0-442B-42CA-BA1A-E346D95838B5@gmail.com> <13CA24D6AB415D428143D44749F57D7201FB2721@ltcfiswmsgmb21> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [10.132.253.126] Content-Type: multipart/mixed; boundary="_004_13CA24D6AB415D428143D44749F57D7201FB2E7Fltcfiswmsgmb21_" MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.10.8794, 1.0.431, 0.0.0000 definitions=2013-07-06_05:2013-07-05,2013-07-06,1970-01-01 signatures=0 X-Content-Filtered-By: Mailman/MimeDel 2.1.14 Cc: Devin Teske , FreeBSD RC X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: Devin Teske List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 06 Jul 2013 14:27:00 -0000 --_004_13CA24D6AB415D428143D44749F57D7201FB2E7Fltcfiswmsgmb21_ Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8" DQpPbiBKdWwgNiwgMjAxMywgYXQgMTo1NSBBTSwgR2FycmV0dCBDb29wZXIgd3JvdGU6DQoNCk9u IEp1bCA2LCAyMDEzLCBhdCAxMjo1MCBBTSwgR2FycmV0dCBDb29wZXIgPHlhbmV1cmFiZXlhQGdt YWlsLmNvbTxtYWlsdG86eWFuZXVyYWJleWFAZ21haWwuY29tPj4gd3JvdGU6DQoNCk9uIEp1bCA1 LCAyMDEzLCBhdCAxMTowNSBQTSwgIlRlc2tlLCBEZXZpbiIgPERldmluLlRlc2tlQGZpc2dsb2Jh bC5jb208bWFpbHRvOkRldmluLlRlc2tlQGZpc2dsb2JhbC5jb20+PiB3cm90ZToNCg0KT24gSnVs IDUsIDIwMTMsIGF0IDEwOjA5IFBNLCBHYXJyZXR0IENvb3BlciB3cm90ZToNCg0KT24gSnVsIDUs IDIwMTMsIGF0IDk6MTMgUE0sIERldmluIFRlc2tlIHdyb3RlOg0KDQpBdXRob3I6IGR0ZXNrZQ0K RGF0ZTogU2F0IEp1bCAgNiAwNDoxMzo0NyAyMDEzDQpOZXcgUmV2aXNpb246IDI1Mjg2Mg0KVVJM OiBodHRwczovL3VybGRlZmVuc2UucHJvb2Zwb2ludC5jb20vdjEvdXJsP3U9aHR0cDovL3N2bndl Yi5mcmVlYnNkLm9yZy9jaGFuZ2VzZXQvYmFzZS8yNTI4NjImaz0lMkZia3BBVWRKV1p1aVRJTENx JTJGRm5RZyUzRCUzRCUwQSZyPU1yanM2dlI0JTJGYWoyTnM5JTJGc3NISmpnJTNEJTNEJTBBJm09 NkVtcno0JTJCZGlFaXUzUUl1S3hrUmtLbCUyQmRnZ2d2VHZEcTc5VEZob2FBQzglM0QlMEEmcz1m OGUzZWE1YzM2MDY3MzgxYWRhMWRlNjZkZDU0N2IwOWViMDUxY2QwNzYxYjM5OTkyOWRmYTY4ODUx ZDBjYTM3DQoNCkxvZzoNClRha2UgdGhlIHRyYWluaW5nLXdoZWVscyBvZmYsIGFmdGVyIG5lYXJs eSAzMCBtb250aHMgb2YgZGV2ZWxvcG1lbnQuIE1GQyB0bw0Kc3RhYmxlLzkgcGxhbm5lZCBhZnRl ciBNRkMgMy1kYXkgcGVyaW9kLiBUaGUgTUZDIHRvIHN0YWJsZS85IGlzIGRlc2lyZWQgZm9yDQp0 aGUgbmV4dCByZWxlYXNlIHRvIGdldCBzb21lIG11Y2gtbmVlZGVkIHRpbWU6DQorIExpdmluZyBz aWRlLWJ5LXNpZGUgd2l0aCBzeXNpbnN0YWxsIGZvciBjb21wYXJlL2NvbnRyYXN0L3RyYW5zaXRp b24NCisgTGl2aW5nIHNpZGUtYnktc2lkZSB3aXRoIGJzZGluc3RhbGwgZm9yIGludGVncmF0aW9u L3RyYW5zaXRpb24NCisgQWRkaXRpb25hbCBmZWVkYmFjay90ZXN0aW5nIGJlZm9yZSBldmVudHVh bCAxMC4wLVIgdG8gbWFrZSBpdCBldmVuIGJldHRlcg0KDQpNRkMgYWZ0ZXI6IDMgZGF5cw0KDQpV aCwgd2h5IGRpZCB5b3UgcmVtb3ZlIHRoZSBjb25kaXRpb25hbC4uPyBXaHkgbm90IGp1c3QgY2hh bmdlIHRoZSBkZWZhdWx0IGZyb20gV0lUSE9VVF9CU0RDT05GSUcgdG8gV0lUSF9CU0RDT05GSUc/ DQoNCkkgZG9uJ3QgbmVlZCB0aGlzIG5lY2Vzc2FyaWx5IG9uIGFuIGFscmVhZHkgdHVuZWQgc3lz dGVtIGFuZCB0aGlzIGRvZXNuJ3Qgc2VlbSBsaWtlIHNvbWV0aGluZyB0aGF0IHNob3VsZCBhbHdh eXMgYmUgaW5jbHVkZWQgb24gYW4gYXBwbGlhbmNl77+9DQoNCg0KT25lIHBsYW5zIHdhcyB0byB1 c2UgdGhlIGxpYnJhcmllcyBJJ20gYnJpbmdpbmcgaW4gdG8gc29sdmUgdGhpcyBQUjoNCg0KaHR0 cDovL3d3dy5mcmVlYnNkLm9yZy9jZ2kvcXVlcnktcHIuY2dpP3ByPWNvbmYvMTYzNTA4PGh0dHBz Oi8vdXJsZGVmZW5zZS5wcm9vZnBvaW50LmNvbS92MS91cmw/dT1odHRwOi8vd3d3LmZyZWVic2Qu b3JnL2NnaS9xdWVyeS1wci5jZ2k/cHIlM0Rjb25mLzE2MzUwOCZrPSUyRmJrcEFVZEpXWnVpVElM Q3ElMkZGblFnJTNEJTNEJTBBJnI9TXJqczZ2UjQlMkZhajJOczklMkZzc0hKamclM0QlM0QlMEEm bT1yalprdTZXbXRWYUV5QkdvJTJGNkJmOXdveHZoeDhBSUclMkJ3RmFzOUslMkJYTUtVJTNEJTBB JnM9NThlZTBhNGVhZDZkNzUzMjRiY2Y5ZjJkMWQ5YzFkOGNhMWJiNzdhOGQ5N2M1MjUxYjgwMWI1 ZjgzMDM3NmEzOD4NCiJbcmMuc3Vicl0gW3BhdGNoXSBBZGQgImVuYWJsZSIgYW5kICJkaXNhYmxl IiBjb21tYW5kcyB0byByYy5zdWJyIg0KDQpUaGUgaW5pdGlhbCBwYXRjaCB3YXMgcmVqZWN0ZWQg YnkgZG91Z2IgYW5kIEkgKGFzIGNhbiBiZSBzZWVuIGluIHRoZSBhdWRpdCB0cmFpbCkgYmVjYXVz ZSBlZGl0aW5nIHJjLmNvbmYoNSkgaXMgbm90IGEgc2ltcGxlIHByb3Bvc2l0aW9uLiBic2Rjb25m aWcoOCkgYnJpbmdzIGluIGEgc2hlbGwgbGlicmFyeSBjYWxsZWQgInN5c3JjLnN1YnIiIChhbmQg dGhlIHN5c3JjKDgpIHV0aWxpdHkgbGV2ZXJhZ2VzIGl0IHRvIHByb3ZpZGUgYWxsIHRoZSBuaWZ0 eSB0aGluZ3MgaXQgY2FuIGRvKS4gVGhlIHNoZWxsIGxpYnJhcnkgaXMgb2YgaW50ZXJlc3QgaWYg d2Ugd2FudCB0byBpbXBsZW1lbnQgdGhlIGhpZ2gtbGV2ZWwgY29uY2VwdCBmcm9tIHRoZSBQUjoN Cg0Kc2V2aWNlIHtuYW1lfSB7IGVuYWJsZSB8IGRpc2FibGUgfCAuIC4gLiB9DQoNClNpbmNlIHN5 c3JjLnN1YnIgcHJvdmlkZXMgYSBzaW1wbGUgImZfc3lzcmNfc2V0ICR2YXIgJHZhbHVlIiBzeW50 YXggKEknbGwgbGVhdmUgdGhlIHJlc3QgdXAgdG8geW91ciBpbWFnaW5hdGlvbikuDQoNClN0YXlp bmcgb24tdG9waWMsIGJzZGNvbmZpZyAob3IgcmF0aGVyLCBpdHMgbGlicmFyaWVzKSBjb3VsZCBl bmQgdXAgZW50d2luZWQgdG8gdGhlIHNoZWxsIGNvbW1hbmRzIGFuZCB5b3UgbWF5IGVuZCB1cCB1 c2luZyBpdCB3aXRob3V0IGV2ZXIgZGlyZWN0bHkgZXhlY3V0aW5nICJic2Rjb25maWciLg0KDQpJ J2QgbGlrZSB0byByZWFkIG1vcmUgYWJvdXQgdGhpcy4gV2UgKGlzaWxvbikgaGF2ZSBoYWNrZWQg YXJvdW5kIHJjKDUpIGJlY2F1c2UgdGhlIHBlcmZvcm1hbmNlIG9mIHJjIGlzIHNlcmlhbGl6ZWQg YW5kIHBvb3IuIEkgd291bGQgcHJlZmVyIHRvIGF2b2lkIGFkZGluZyBtb3JlIGVuZC11c2VyIGJs b2F0IHRvIHJjIGJlY2F1c2UgaXQgd2lsbCBkcml2ZSB1c2VycyBhbmQgY29uc3VtZXJzIHRvIHRh a2UgbW9yZSBkcmFzdGljIG1lYXN1cmVzIHRvIGJ5cGFzcyB0aGUgcmMgc3lzdGVtLg0KDQpUaGFu a3MuLg0KDQpBbHNvLCBpZiB0aGUgZGF5IGNvbWVzIHdoZXJlIHJjIGRlcGVuZHMgb24gYnNkY29u ZmlnLCBJIGhvcGUgdGhhdCB0aGUgcGllY2VzIG9mIGJzZGNvbmZpZyB3b3VsZCBwb3RlbnRpYWxs eSBiZSBtb3ZlZCB0byAuLi4vZXRjIGZvciB0aGUgc2FrZSBvZiAiY29kZSBsb2NhbGl0eSIuDQoN Cg0KWW91IHJlYWQgbXkgcGxheWJvb2suDQoNCkFmdGVyIGJzZGNvbmZpZyBoYXMgYmVlbiBNRkMn ZCB0byA5LCBteSBwbGFuIHdhcyB0byAoaW4gSEVBRCksIHRyeSBvdXQgdGhlIGZvbGxvd2luZzoN Cg0KDQorIE1vdmluZyAvdXNyL3NoYXJlL2JzZGNvbmZpZy9zeXNyYy5zdWJyIHRvIC9ldGMNCisg Q2hhbmdpbmcgYWxsIHNjcmlwdHMvbGlicmFyaWVzIG9mIGJzZGNvbmZpZyg4KSB0byBwb2ludCBh dCAvZXRjL3N5c3JjLnN1YnINCisgQ2hhbmdpbmcgc3lzcmMoOCkgdG8gcG9pbnQgYXQgL2V0Yy9z eXNyYy5zdWJyDQorIEFsdGVyaW5nIG5ldyAvZXRjL3N5c3JjLnN1YnIgc2xpZ2h0bHkgdG8gbGl2 ZSB3aXRob3V0IGJzZGNvbmZpZydzICJjb21tb24uc3ViciIgKG9mIHdoaWNoIGl0IHVzZWQgZl9l cnIoKSBhbmQgZl9xdWlldGx5KCkpDQoNCkhvd2V2ZXIsIEkgd291bGQgcmVhbGx5IGxpa2UgdG8g c2VlIGJzZGNvbmZpZydzICJjb21tb24uc3ViciIgZ2V0IHB1bGxlZCBiYWNrIHRvIC9ldGMgdG9v Lg0KDQpUaGF0IHdvdWxkIG1lYW4gdGhhdCBJIGNvdWxkIHRoZW4gdGFrZSBzeXNyYyg4KSBhbmQg bW92ZSBmcm9tIHVzci5zYmluIHRvIHNiaW4gLS0gd2hpY2ggd291bGQgYWxsb3cgdXMgdG8gcHJv YmUvbW9kaWZ5IHJjLmNvbmYoNSkgd2l0aCBpdCBpbiBzaW5nbGUtdXNlciBtb2RlLg0KLS0NCkRl dmluDQoKX19fX19fX19fX19fXwpUaGUgaW5mb3JtYXRpb24gY29udGFpbmVkIGluIHRoaXMgbWVz c2FnZSBpcyBwcm9wcmlldGFyeSBhbmQvb3IgY29uZmlkZW50aWFsLiBJZiB5b3UgYXJlIG5vdCB0 aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBwbGVhc2U6IChpKSBkZWxldGUgdGhlIG1lc3NhZ2UgYW5k IGFsbCBjb3BpZXM7IChpaSkgZG8gbm90IGRpc2Nsb3NlLCBkaXN0cmlidXRlIG9yIHVzZSB0aGUg bWVzc2FnZSBpbiBhbnkgbWFubmVyOyBhbmQgKGlpaSkgbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRp YXRlbHkuIEluIGFkZGl0aW9uLCBwbGVhc2UgYmUgYXdhcmUgdGhhdCBhbnkgbWVzc2FnZSBhZGRy ZXNzZWQgdG8gb3VyIGRvbWFpbiBpcyBzdWJqZWN0IHRvIGFyY2hpdmluZyBhbmQgcmV2aWV3IGJ5 IHBlcnNvbnMgb3RoZXIgdGhhbiB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LiBUaGFuayB5b3UuCg== --_004_13CA24D6AB415D428143D44749F57D7201FB2E7Fltcfiswmsgmb21_ Content-Type: text/plain; name="patch.txt" Content-Description: patch.txt Content-Disposition: attachment; filename="patch.txt"; size=38740; creation-date="Sat, 06 Jul 2013 14:26:57 GMT"; modification-date="Sat, 06 Jul 2013 14:26:57 GMT" Content-ID: <964D9BBAFFD9164C9DB49B8ECD19FE1B@fisglobal.com> Content-Transfer-Encoding: base64 SW5kZXg6IGV0Yy9NYWtlZmlsZQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGV0Yy9NYWtlZmlsZQkocmV2aXNp b24gMjUyODg2KQ0KKysrIGV0Yy9NYWtlZmlsZQkod29ya2luZyBjb3B5KQ0KQEAgLTQ3LDYgKzQ3 LDcgQEAgQklOMT0JY3JvbnRhYiBcDQogCXNoZWxscyBcDQogCXN5c2N0bC5jb25mIFwNCiAJc3lz bG9nLmNvbmYgXA0KKwlzeXNyYy5zdWJyIFwNCiAJdGVybWNhcC5zbWFsbA0KIA0KIC5pZiBleGlz dHMoJHsuQ1VSRElSfS9ldGMuJHtNQUNISU5FfS90dHlzKQ0KSW5kZXg6IGV0Yy9zeXNyYy5zdWJy DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQotLS0gZXRjL3N5c3JjLnN1YnIJKHdvcmtpbmcgY29weSkNCisrKyBldGMv c3lzcmMuc3Vicgkod29ya2luZyBjb3B5KQ0KQEAgLTI2LDE3ICsyNiw2IEBAIGlmIFsgISAiJF9T WVNSQ19TVUJSIiBdOyB0aGVuIF9TWVNSQ19TVUJSPTENCiAjDQogIyAkRnJlZUJTRCQNCiAjDQot IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIElOQ0xVREVTDQotDQotQlNEQ0ZHX1NIQVJFPSIvdXNyL3NoYXJlL2JzZGNvbmZpZyINCi1b ICIkX0NPTU1PTl9TVUJSIiBdIHx8IC4gJEJTRENGR19TSEFSRS9jb21tb24uc3ViciB8fCBleGl0 IDENCi0NCi1CU0RDRkdfTElCRT0iL3Vzci9saWJleGVjL2JzZGNvbmZpZyINCi1pZiBbICEgIiRf U1lTUkNfSkFJTEVEIiBdOyB0aGVuDQotCWZfZHByaW50ZiAiJXM6IGxvYWRpbmcgaW5jbHVkZXMu Li4iIHN5c3JjLnN1YnINCi0JZl9pbmNsdWRlX2xhbmcgJEJTRENGR19MSUJFL2luY2x1ZGUvbWVz c2FnZXMuc3Vicg0KLWZpDQotDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIENPTkZJR1VSQVRJT04NCiANCiAjDQpAQCAtNDcwLDgg KzQ1OSw4IEBAIGZfc3lzcmNfc2V0KCkNCiAJIyBQZXJmb3JtIHNhbml0eSBjaGVja3MuDQogCSMN CiAJaWYgWyAhIC13ICIkZmlsZSIgXTsgdGhlbg0KLQkJZl9lcnIgIiRtc2dfY2Fubm90X2NyZWF0 ZV9wZXJtaXNzaW9uX2RlbmllZFxuIiBcDQotCQkgICAgICAiJHBnbSIgIiRmaWxlIg0KKwkJcHJp bnRmICIlczogY2Fubm90IGNyZWF0ZSAlczogUGVybWlzc2lvbiBkZW5pZWRcbiIgXA0KKwkJICAg ICAgICIkcGdtIiAiJGZpbGUiID4mMg0KIAkJcmV0dXJuICRGQUlMVVJFDQogCWZpDQogDQpAQCAt NDg5LDcgKzQ3OCw3IEBAIGZfc3lzcmNfc2V0KCkNCiAJIw0KIAlsb2NhbCBtb2RlDQogCW1vZGU9 JCggc3RhdCAtZiAnJSNMcCcgIiRmaWxlIiAyPiAvZGV2L251bGwgKQ0KLQlmX3F1aWV0bHkgY2ht b2QgIiR7bW9kZTotMDY0NH0iICIkdG1wZmlsZSINCisJY2htb2QgIiR7bW9kZTotMDY0NH0iICIk dG1wZmlsZSIgPiAvZGV2L251bGwgMj4mMQ0KIA0KIAkjDQogCSMgRml4dXAgb3duZXJzaGlwLiBU aGUgZGVzdGluYXRpb24gZmlsZSBfaXNfIHdyaXRhYmxlICh3ZSB0ZXN0ZWQNCkBAIC00OTgsNyAr NDg3LDcgQEAgZl9zeXNyY19zZXQoKQ0KIAkjDQogCWxvY2FsIG93bmVyDQogCW93bmVyPSQoIHN0 YXQgLWYgJyV1OiVnJyAiJGZpbGUiIDI+IC9kZXYvbnVsbCApDQotCWZfcXVpZXRseSBjaG93biAi JHtvd25lcjotcm9vdDp3aGVlbH0iICIkdG1wZmlsZSINCisJY2hvd24gIiR7b3duZXI6LXJvb3Q6 d2hlZWx9IiAiJHRtcGZpbGUiID4gL2Rldi9udWxsIDI+JjENCiANCiAJIw0KIAkjIE9wZXJhdGUg b24gdGhlIG1hdGNoaW5nIGZpbGUsIHJlcGxhY2luZyBvbmx5IHRoZSBsYXN0IG9jY3VycmVuY2Uu DQpAQCAtNTIxLDcgKzUxMCw4IEBAIGZfc3lzcmNfc2V0KCkNCiAJIyBUYWludC1jaGVjayBvdXIg cmVzdWx0cy4NCiAJIw0KIAlpZiAhIC9iaW4vc2ggLW4gIiR0bXBmaWxlIjsgdGhlbg0KLQkJZl9l cnIgIiRtc2dfcHJldmlvdXNfc3ludGF4X2Vycm9yc1xuIiAiJHBnbSIgIiRmaWxlIg0KKwkJcHJp bnRmICIlczogTm90IG92ZXJ3cml0aW5nIFxgJXMnIGR1ZSB0byAlc1xuIg0KKwkJICAgICAgICIk cGdtIiAiJGZpbGUiICJwcmV2aW91cyBzeW50YXggZXJyb3JzIiA+JjINCiAJCXJtIC1mICIkdG1w ZmlsZSINCiAJCXJldHVybiAkRkFJTFVSRQ0KIAlmaQ0KQEAgLTU4NSw4ICs1NzUsOCBAQCBmX3N5 c3JjX2RlbGV0ZSgpDQogCQlsb2NhbCBtb2RlIG93bmVyDQogCQltb2RlPSQoIHN0YXQgLWYgJyUj THAnICIkZmlsZSIgMj4gL2Rldi9udWxsICkNCiAJCW93bmVyPSQoIHN0YXQgLWYgJyV1OiVnJyAi JGZpbGUiIDI+IC9kZXYvbnVsbCApDQotCQlmX3F1aWV0bHkgY2htb2QgIiR7bW9kZTotMDY0NH0i ICIkdG1wZmlsZSINCi0JCWZfcXVpZXRseSBjaG93biAiJHtvd25lcjotcm9vdDp3aGVlbH0iICIk dG1wZmlsZSINCisJCWNobW9kICIke21vZGU6LTA2NDR9IiAiJHRtcGZpbGUiID4gL2Rldi9udWxs IDI+JjENCisJCWNob3duICIke293bmVyOi1yb290OndoZWVsfSIgIiR0bXBmaWxlIiA+IC9kZXYv bnVsbCAyPiYxDQogDQogCQkjDQogCQkjIE9wZXJhdGUgb24gdGhlIGZpbGUsIHJlbW92aW5nIGFs bCBvY2N1cnJlbmNlcywgc2F2aW5nIHRoZQ0KQEAgLTYwNCw4ICs1OTQsOCBAQCBmX3N5c3JjX2Rl bGV0ZSgpDQogCQkjIFRhaW50LWNoZWNrIG91ciByZXN1bHRzLg0KIAkJIw0KIAkJaWYgISAvYmlu L3NoIC1uICIkdG1wZmlsZSI7IHRoZW4NCi0JCQlmX2VyciAiJG1zZ19wcmV2aW91c19zeW50YXhf ZXJyb3JzXG4iIFwNCi0JCQkgICAgICAiJHBnbSIgIiRmaWxlIg0KKwkJCXByaW50ZiAiJXM6IE5v dCBvdmVyd3JpdGluZyBcYCVzJyBkdWUgdG8gJXNcbiIgXA0KKwkJCSAgICAgICAiJHBnbSIgIiRm aWxlIiAicHJldmlvdXMgc3ludGF4IGVycm9ycyIgPiYyDQogCQkJcm0gLWYgIiR0bXBmaWxlIg0K IAkJCXJldHVybiAkRkFJTFVSRQ0KIAkJZmkNCkBAIC02MTQsNyArNjA0LDcgQEAgZl9zeXNyY19k ZWxldGUoKQ0KIAkJIyBQZXJmb3JtIHNhbml0eSBjaGVja3MNCiAJCSMNCiAJCWlmIFsgISAtdyAi JGZpbGUiIF07IHRoZW4NCi0JCQlmX2VyciAiJG1zZ19wZXJtaXNzaW9uX2RlbmllZFxuIiAiJHBn bSIgIiRmaWxlIg0KKwkJCXByaW50ZiAiJXM6ICVzOiBQZXJtaXNzaW9uIGRlbmllZFxuIiAiJHBn bSIgIiRmaWxlIiA+JjINCiAJCQlybSAtZiAiJHRtcGZpbGUiDQogCQkJcmV0dXJuICRGQUlMVVJF DQogCQlmaQ0KQEAgLTYyNiw4ICs2MTYsNCBAQCBmX3N5c3JjX2RlbGV0ZSgpDQogCWRvbmUNCiB9 DQogDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIE1BSU4NCi0NCi1mX2RwcmludGYgIiVzOiBTdWNjZXNzZnVsbHkgbG9hZGVkLiIg c3lzcmMuc3Vicg0KLQ0KIGZpICMgISAkX1NZU1JDX1NVQlINCkluZGV4OiB1c3Iuc2Jpbi9ic2Rj b25maWcvY29uc29sZS9mb250DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gdXNyLnNiaW4vYnNkY29uZmlnL2Nv bnNvbGUvZm9udAkocmV2aXNpb24gMjUyMTc4KQ0KKysrIHVzci5zYmluL2JzZGNvbmZpZy9jb25z b2xlL2ZvbnQJKHdvcmtpbmcgY29weSkNCkBAIC0zMyw3ICszMyw3IEBAIEJTRENGR19TSEFSRT0i L3Vzci9zaGFyZS9ic2Rjb25maWciDQogZl9kcHJpbnRmICIlczogbG9hZGluZyBpbmNsdWRlcy4u LiIgIiQwIg0KIGZfaW5jbHVkZSAkQlNEQ0ZHX1NIQVJFL2RpYWxvZy5zdWJyDQogZl9pbmNsdWRl ICRCU0RDRkdfU0hBUkUvbXVzdGJlcm9vdC5zdWJyDQotZl9pbmNsdWRlICRCU0RDRkdfU0hBUkUv c3lzcmMuc3Vicg0KK2ZfaW5jbHVkZSAvZXRjL3N5c3JjLnN1YnINCiANCiBCU0RDRkdfTElCRT0i L3Vzci9saWJleGVjL2JzZGNvbmZpZyIgQVBQX0RJUj0iMDgwLmNvbnNvbGUiDQogZl9pbmNsdWRl X2xhbmcgJEJTRENGR19MSUJFLyRBUFBfRElSL2luY2x1ZGUvbWVzc2FnZXMuc3Vicg0KSW5kZXg6 IHVzci5zYmluL2JzZGNvbmZpZy9jb25zb2xlL2tleW1hcA0KPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHVzci5z YmluL2JzZGNvbmZpZy9jb25zb2xlL2tleW1hcAkocmV2aXNpb24gMjUyMTc4KQ0KKysrIHVzci5z YmluL2JzZGNvbmZpZy9jb25zb2xlL2tleW1hcAkod29ya2luZyBjb3B5KQ0KQEAgLTMzLDcgKzMz LDcgQEAgQlNEQ0ZHX1NIQVJFPSIvdXNyL3NoYXJlL2JzZGNvbmZpZyINCiBmX2RwcmludGYgIiVz OiBsb2FkaW5nIGluY2x1ZGVzLi4uIiAiJDAiDQogZl9pbmNsdWRlICRCU0RDRkdfU0hBUkUvZGlh bG9nLnN1YnINCiBmX2luY2x1ZGUgJEJTRENGR19TSEFSRS9tdXN0YmVyb290LnN1YnINCi1mX2lu Y2x1ZGUgJEJTRENGR19TSEFSRS9zeXNyYy5zdWJyDQorZl9pbmNsdWRlIC9ldGMvc3lzcmMuc3Vi cg0KIA0KIEJTRENGR19MSUJFPSIvdXNyL2xpYmV4ZWMvYnNkY29uZmlnIiBBUFBfRElSPSIwODAu Y29uc29sZSINCiBmX2luY2x1ZGVfbGFuZyAkQlNEQ0ZHX0xJQkUvJEFQUF9ESVIvaW5jbHVkZS9t ZXNzYWdlcy5zdWJyDQpJbmRleDogdXNyLnNiaW4vYnNkY29uZmlnL2NvbnNvbGUvcmVwZWF0DQo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQotLS0gdXNyLnNiaW4vYnNkY29uZmlnL2NvbnNvbGUvcmVwZWF0CShyZXZpc2lv biAyNTIxNzgpDQorKysgdXNyLnNiaW4vYnNkY29uZmlnL2NvbnNvbGUvcmVwZWF0CSh3b3JraW5n IGNvcHkpDQpAQCAtMzMsNyArMzMsNyBAQCBCU0RDRkdfU0hBUkU9Ii91c3Ivc2hhcmUvYnNkY29u ZmlnIg0KIGZfZHByaW50ZiAiJXM6IGxvYWRpbmcgaW5jbHVkZXMuLi4iICIkMCINCiBmX2luY2x1 ZGUgJEJTRENGR19TSEFSRS9kaWFsb2cuc3Vicg0KIGZfaW5jbHVkZSAkQlNEQ0ZHX1NIQVJFL211 c3RiZXJvb3Quc3Vicg0KLWZfaW5jbHVkZSAkQlNEQ0ZHX1NIQVJFL3N5c3JjLnN1YnINCitmX2lu Y2x1ZGUgL2V0Yy9zeXNyYy5zdWJyDQogDQogQlNEQ0ZHX0xJQkU9Ii91c3IvbGliZXhlYy9ic2Rj b25maWciIEFQUF9ESVI9IjA4MC5jb25zb2xlIg0KIGZfaW5jbHVkZV9sYW5nICRCU0RDRkdfTElC RS8kQVBQX0RJUi9pbmNsdWRlL21lc3NhZ2VzLnN1YnINCkluZGV4OiB1c3Iuc2Jpbi9ic2Rjb25m aWcvY29uc29sZS9zYXZlcg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHVzci5zYmluL2JzZGNvbmZpZy9jb25z b2xlL3NhdmVyCShyZXZpc2lvbiAyNTIxNzgpDQorKysgdXNyLnNiaW4vYnNkY29uZmlnL2NvbnNv bGUvc2F2ZXIJKHdvcmtpbmcgY29weSkNCkBAIC0zMyw3ICszMyw3IEBAIEJTRENGR19TSEFSRT0i L3Vzci9zaGFyZS9ic2Rjb25maWciDQogZl9kcHJpbnRmICIlczogbG9hZGluZyBpbmNsdWRlcy4u LiIgIiQwIg0KIGZfaW5jbHVkZSAkQlNEQ0ZHX1NIQVJFL2RpYWxvZy5zdWJyDQogZl9pbmNsdWRl ICRCU0RDRkdfU0hBUkUvbXVzdGJlcm9vdC5zdWJyDQotZl9pbmNsdWRlICRCU0RDRkdfU0hBUkUv c3lzcmMuc3Vicg0KK2ZfaW5jbHVkZSAvZXRjL3N5c3JjLnN1YnINCiANCiBCU0RDRkdfTElCRT0i L3Vzci9saWJleGVjL2JzZGNvbmZpZyIgQVBQX0RJUj0iMDgwLmNvbnNvbGUiDQogZl9pbmNsdWRl X2xhbmcgJEJTRENGR19MSUJFLyRBUFBfRElSL2luY2x1ZGUvbWVzc2FnZXMuc3Vicg0KSW5kZXg6 IHVzci5zYmluL2JzZGNvbmZpZy9jb25zb2xlL3NjcmVlbm1hcA0KPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHVz ci5zYmluL2JzZGNvbmZpZy9jb25zb2xlL3NjcmVlbm1hcAkocmV2aXNpb24gMjUyMTc4KQ0KKysr IHVzci5zYmluL2JzZGNvbmZpZy9jb25zb2xlL3NjcmVlbm1hcAkod29ya2luZyBjb3B5KQ0KQEAg LTMzLDcgKzMzLDcgQEAgQlNEQ0ZHX1NIQVJFPSIvdXNyL3NoYXJlL2JzZGNvbmZpZyINCiBmX2Rw cmludGYgIiVzOiBsb2FkaW5nIGluY2x1ZGVzLi4uIiAiJDAiDQogZl9pbmNsdWRlICRCU0RDRkdf U0hBUkUvZGlhbG9nLnN1YnINCiBmX2luY2x1ZGUgJEJTRENGR19TSEFSRS9tdXN0YmVyb290LnN1 YnINCi1mX2luY2x1ZGUgJEJTRENGR19TSEFSRS9zeXNyYy5zdWJyDQorZl9pbmNsdWRlIC9ldGMv c3lzcmMuc3Vicg0KIA0KIEJTRENGR19MSUJFPSIvdXNyL2xpYmV4ZWMvYnNkY29uZmlnIiBBUFBf RElSPSIwODAuY29uc29sZSINCiBmX2luY2x1ZGVfbGFuZyAkQlNEQ0ZHX0xJQkUvJEFQUF9ESVIv aW5jbHVkZS9tZXNzYWdlcy5zdWJyDQpJbmRleDogdXNyLnNiaW4vYnNkY29uZmlnL2NvbnNvbGUv dHR5cw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQ0KLS0tIHVzci5zYmluL2JzZGNvbmZpZy9jb25zb2xlL3R0eXMJKHJl dmlzaW9uIDI1MjE3OCkNCisrKyB1c3Iuc2Jpbi9ic2Rjb25maWcvY29uc29sZS90dHlzCSh3b3Jr aW5nIGNvcHkpDQpAQCAtMzMsNyArMzMsNyBAQCBCU0RDRkdfU0hBUkU9Ii91c3Ivc2hhcmUvYnNk Y29uZmlnIg0KIGZfZHByaW50ZiAiJXM6IGxvYWRpbmcgaW5jbHVkZXMuLi4iICIkMCINCiBmX2lu Y2x1ZGUgJEJTRENGR19TSEFSRS9kaWFsb2cuc3Vicg0KIGZfaW5jbHVkZSAkQlNEQ0ZHX1NIQVJF L211c3RiZXJvb3Quc3Vicg0KLWZfaW5jbHVkZSAkQlNEQ0ZHX1NIQVJFL3N5c3JjLnN1YnINCitm X2luY2x1ZGUgL2V0Yy9zeXNyYy5zdWJyDQogDQogQlNEQ0ZHX0xJQkU9Ii91c3IvbGliZXhlYy9i c2Rjb25maWciIEFQUF9ESVI9IjA4MC5jb25zb2xlIg0KIGZfaW5jbHVkZV9sYW5nICRCU0RDRkdf TElCRS8kQVBQX0RJUi9pbmNsdWRlL21lc3NhZ2VzLnN1YnINCkluZGV4OiB1c3Iuc2Jpbi9ic2Rj b25maWcvbW91c2UvZGlzYWJsZQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHVzci5zYmluL2JzZGNvbmZpZy9t b3VzZS9kaXNhYmxlCShyZXZpc2lvbiAyNTIxNzgpDQorKysgdXNyLnNiaW4vYnNkY29uZmlnL21v dXNlL2Rpc2FibGUJKHdvcmtpbmcgY29weSkNCkBAIC0zMyw3ICszMyw3IEBAIEJTRENGR19TSEFS RT0iL3Vzci9zaGFyZS9ic2Rjb25maWciDQogZl9kcHJpbnRmICIlczogbG9hZGluZyBpbmNsdWRl cy4uLiIgIiQwIg0KIGZfaW5jbHVkZSAkQlNEQ0ZHX1NIQVJFL2RpYWxvZy5zdWJyDQogZl9pbmNs dWRlICRCU0RDRkdfU0hBUkUvbXVzdGJlcm9vdC5zdWJyDQotZl9pbmNsdWRlICRCU0RDRkdfU0hB UkUvc3lzcmMuc3Vicg0KK2ZfaW5jbHVkZSAvZXRjL3N5c3JjLnN1YnINCiANCiBCU0RDRkdfTElC RT0iL3Vzci9saWJleGVjL2JzZGNvbmZpZyIgQVBQX0RJUj0iMTEwLm1vdXNlIg0KIGZfaW5jbHVk ZV9sYW5nICRCU0RDRkdfTElCRS8kQVBQX0RJUi9pbmNsdWRlL21lc3NhZ2VzLnN1YnINCkluZGV4 OiB1c3Iuc2Jpbi9ic2Rjb25maWcvbW91c2UvZW5hYmxlDQo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gdXNyLnNi aW4vYnNkY29uZmlnL21vdXNlL2VuYWJsZQkocmV2aXNpb24gMjUyMTc4KQ0KKysrIHVzci5zYmlu L2JzZGNvbmZpZy9tb3VzZS9lbmFibGUJKHdvcmtpbmcgY29weSkNCkBAIC0zMyw3ICszMyw3IEBA IEJTRENGR19TSEFSRT0iL3Vzci9zaGFyZS9ic2Rjb25maWciDQogZl9kcHJpbnRmICIlczogbG9h ZGluZyBpbmNsdWRlcy4uLiIgIiQwIg0KIGZfaW5jbHVkZSAkQlNEQ0ZHX1NIQVJFL2RpYWxvZy5z dWJyDQogZl9pbmNsdWRlICRCU0RDRkdfU0hBUkUvbXVzdGJlcm9vdC5zdWJyDQotZl9pbmNsdWRl ICRCU0RDRkdfU0hBUkUvc3lzcmMuc3Vicg0KK2ZfaW5jbHVkZSAvZXRjL3N5c3JjLnN1YnINCiAN CiBCU0RDRkdfTElCRT0iL3Vzci9saWJleGVjL2JzZGNvbmZpZyIgQVBQX0RJUj0iMTEwLm1vdXNl Ig0KIGZfaW5jbHVkZV9sYW5nICRCU0RDRkdfTElCRS8kQVBQX0RJUi9pbmNsdWRlL21lc3NhZ2Vz LnN1YnINCkluZGV4OiB1c3Iuc2Jpbi9ic2Rjb25maWcvbW91c2UvZmxhZ3MNCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N Ci0tLSB1c3Iuc2Jpbi9ic2Rjb25maWcvbW91c2UvZmxhZ3MJKHJldmlzaW9uIDI1MjE3OCkNCisr KyB1c3Iuc2Jpbi9ic2Rjb25maWcvbW91c2UvZmxhZ3MJKHdvcmtpbmcgY29weSkNCkBAIC0zMyw3 ICszMyw3IEBAIEJTRENGR19TSEFSRT0iL3Vzci9zaGFyZS9ic2Rjb25maWciDQogZl9kcHJpbnRm ICIlczogbG9hZGluZyBpbmNsdWRlcy4uLiIgIiQwIg0KIGZfaW5jbHVkZSAkQlNEQ0ZHX1NIQVJF L2RpYWxvZy5zdWJyDQogZl9pbmNsdWRlICRCU0RDRkdfU0hBUkUvbXVzdGJlcm9vdC5zdWJyDQot Zl9pbmNsdWRlICRCU0RDRkdfU0hBUkUvc3lzcmMuc3Vicg0KK2ZfaW5jbHVkZSAvZXRjL3N5c3Jj LnN1YnINCiANCiBCU0RDRkdfTElCRT0iL3Vzci9saWJleGVjL2JzZGNvbmZpZyIgQVBQX0RJUj0i MTEwLm1vdXNlIg0KIGZfaW5jbHVkZV9sYW5nICRCU0RDRkdfTElCRS8kQVBQX0RJUi9pbmNsdWRl L21lc3NhZ2VzLnN1YnINCkluZGV4OiB1c3Iuc2Jpbi9ic2Rjb25maWcvbW91c2UvcG9ydA0KPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KLS0tIHVzci5zYmluL2JzZGNvbmZpZy9tb3VzZS9wb3J0CShyZXZpc2lvbiAyNTIx NzgpDQorKysgdXNyLnNiaW4vYnNkY29uZmlnL21vdXNlL3BvcnQJKHdvcmtpbmcgY29weSkNCkBA IC0zMyw3ICszMyw3IEBAIEJTRENGR19TSEFSRT0iL3Vzci9zaGFyZS9ic2Rjb25maWciDQogZl9k cHJpbnRmICIlczogbG9hZGluZyBpbmNsdWRlcy4uLiIgIiQwIg0KIGZfaW5jbHVkZSAkQlNEQ0ZH X1NIQVJFL2RpYWxvZy5zdWJyDQogZl9pbmNsdWRlICRCU0RDRkdfU0hBUkUvbXVzdGJlcm9vdC5z dWJyDQotZl9pbmNsdWRlICRCU0RDRkdfU0hBUkUvc3lzcmMuc3Vicg0KK2ZfaW5jbHVkZSAvZXRj L3N5c3JjLnN1YnINCiANCiBCU0RDRkdfTElCRT0iL3Vzci9saWJleGVjL2JzZGNvbmZpZyIgQVBQ X0RJUj0iMTEwLm1vdXNlIg0KIGZfaW5jbHVkZV9sYW5nICRCU0RDRkdfTElCRS8kQVBQX0RJUi9p bmNsdWRlL21lc3NhZ2VzLnN1YnINCkluZGV4OiB1c3Iuc2Jpbi9ic2Rjb25maWcvbW91c2UvdHlw ZQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQ0KLS0tIHVzci5zYmluL2JzZGNvbmZpZy9tb3VzZS90eXBlCShyZXZpc2lv biAyNTIxNzgpDQorKysgdXNyLnNiaW4vYnNkY29uZmlnL21vdXNlL3R5cGUJKHdvcmtpbmcgY29w eSkNCkBAIC0zMyw3ICszMyw3IEBAIEJTRENGR19TSEFSRT0iL3Vzci9zaGFyZS9ic2Rjb25maWci DQogZl9kcHJpbnRmICIlczogbG9hZGluZyBpbmNsdWRlcy4uLiIgIiQwIg0KIGZfaW5jbHVkZSAk QlNEQ0ZHX1NIQVJFL2RpYWxvZy5zdWJyDQogZl9pbmNsdWRlICRCU0RDRkdfU0hBUkUvbXVzdGJl cm9vdC5zdWJyDQotZl9pbmNsdWRlICRCU0RDRkdfU0hBUkUvc3lzcmMuc3Vicg0KK2ZfaW5jbHVk ZSAvZXRjL3N5c3JjLnN1YnINCiANCiBCU0RDRkdfTElCRT0iL3Vzci9saWJleGVjL2JzZGNvbmZp ZyIgQVBQX0RJUj0iMTEwLm1vdXNlIg0KIGZfaW5jbHVkZV9sYW5nICRCU0RDRkdfTElCRS8kQVBQ X0RJUi9pbmNsdWRlL21lc3NhZ2VzLnN1YnINCkluZGV4OiB1c3Iuc2Jpbi9ic2Rjb25maWcvbmV0 d29ya2luZy9kZXZpY2VzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gdXNyLnNiaW4vYnNkY29uZmlnL25ldHdv cmtpbmcvZGV2aWNlcwkocmV2aXNpb24gMjUyMTc4KQ0KKysrIHVzci5zYmluL2JzZGNvbmZpZy9u ZXR3b3JraW5nL2RldmljZXMJKHdvcmtpbmcgY29weSkNCkBAIC0zMyw3ICszMyw3IEBAIEJTRENG R19TSEFSRT0iL3Vzci9zaGFyZS9ic2Rjb25maWciDQogZl9kcHJpbnRmICIlczogbG9hZGluZyBp bmNsdWRlcy4uLiIgIiQwIg0KIGZfaW5jbHVkZSAkQlNEQ0ZHX1NIQVJFL2RpYWxvZy5zdWJyDQog Zl9pbmNsdWRlICRCU0RDRkdfU0hBUkUvbXVzdGJlcm9vdC5zdWJyDQotZl9pbmNsdWRlICRCU0RD RkdfU0hBUkUvc3lzcmMuc3Vicg0KK2ZfaW5jbHVkZSAvZXRjL3N5c3JjLnN1YnINCiBmX2luY2x1 ZGUgJEJTRENGR19TSEFSRS9tZWRpYS90Y3BpcC5zdWJyDQogZl9pbmNsdWRlICRCU0RDRkdfU0hB UkUvbmV0d29ya2luZy9kZXZpY2Uuc3Vicg0KIGZfaW5jbHVkZSAkQlNEQ0ZHX1NIQVJFL25ldHdv cmtpbmcvaXBhZGRyLnN1YnINCkluZGV4OiB1c3Iuc2Jpbi9ic2Rjb25maWcvbmV0d29ya2luZy9z aGFyZS9kZXZpY2Uuc3Vicg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHVzci5zYmluL2JzZGNvbmZpZy9uZXR3 b3JraW5nL3NoYXJlL2RldmljZS5zdWJyCShyZXZpc2lvbiAyNTI4NTMpDQorKysgdXNyLnNiaW4v YnNkY29uZmlnL25ldHdvcmtpbmcvc2hhcmUvZGV2aWNlLnN1YnIJKHdvcmtpbmcgY29weSkNCkBA IC00MCw3ICs0MCw3IEBAIGZfaW5jbHVkZSAkQlNEQ0ZHX1NIQVJFL25ldHdvcmtpbmcvbWVkaWEu c3Vicg0KIGZfaW5jbHVkZSAkQlNEQ0ZHX1NIQVJFL25ldHdvcmtpbmcvbmV0bWFzay5zdWJyDQog Zl9pbmNsdWRlICRCU0RDRkdfU0hBUkUvbmV0d29ya2luZy9yZXNvbHYuc3Vicg0KIGZfaW5jbHVk ZSAkQlNEQ0ZHX1NIQVJFL25ldHdvcmtpbmcvcm91dGluZy5zdWJyDQotZl9pbmNsdWRlICRCU0RD RkdfU0hBUkUvc3lzcmMuc3Vicg0KK2ZfaW5jbHVkZSAvZXRjL3N5c3JjLnN1YnINCiANCiBCU0RD RkdfTElCRT0iL3Vzci9saWJleGVjL2JzZGNvbmZpZyIgQVBQX0RJUj0iMTIwLm5ldHdvcmtpbmci DQogZl9pbmNsdWRlX2xhbmcgJEJTRENGR19MSUJFLyRBUFBfRElSL2luY2x1ZGUvbWVzc2FnZXMu c3Vicg0KSW5kZXg6IHVzci5zYmluL2JzZGNvbmZpZy9uZXR3b3JraW5nL3NoYXJlL2hvc3RuYW1l LnN1YnINCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0NCi0tLSB1c3Iuc2Jpbi9ic2Rjb25maWcvbmV0d29ya2luZy9zaGFy ZS9ob3N0bmFtZS5zdWJyCShyZXZpc2lvbiAyNTIxNzgpDQorKysgdXNyLnNiaW4vYnNkY29uZmln L25ldHdvcmtpbmcvc2hhcmUvaG9zdG5hbWUuc3Vicgkod29ya2luZyBjb3B5KQ0KQEAgLTM0LDcg KzM0LDcgQEAgZl9kcHJpbnRmICIlczogbG9hZGluZyBpbmNsdWRlcy4uLiIgbmV0d29ya2luZy9o b3MNCiBmX2luY2x1ZGUgJEJTRENGR19TSEFSRS9kaWFsb2cuc3Vicg0KIGZfaW5jbHVkZSAkQlNE Q0ZHX1NIQVJFL25ldHdvcmtpbmcvY29tbW9uLnN1YnINCiBmX2luY2x1ZGUgJEJTRENGR19TSEFS RS9uZXR3b3JraW5nL3Jlc29sdi5zdWJyDQotZl9pbmNsdWRlICRCU0RDRkdfU0hBUkUvc3lzcmMu c3Vicg0KK2ZfaW5jbHVkZSAvZXRjL3N5c3JjLnN1YnINCiANCiBCU0RDRkdfTElCRT0iL3Vzci9s aWJleGVjL2JzZGNvbmZpZyIgQVBQX0RJUj0iMTIwLm5ldHdvcmtpbmciDQogZl9pbmNsdWRlX2xh bmcgJEJTRENGR19MSUJFLyRBUFBfRElSL2luY2x1ZGUvbWVzc2FnZXMuc3Vicg0KSW5kZXg6IHVz ci5zYmluL2JzZGNvbmZpZy9uZXR3b3JraW5nL3NoYXJlL21lZGlhLnN1YnINCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N Ci0tLSB1c3Iuc2Jpbi9ic2Rjb25maWcvbmV0d29ya2luZy9zaGFyZS9tZWRpYS5zdWJyCShyZXZp c2lvbiAyNTI4NTMpDQorKysgdXNyLnNiaW4vYnNkY29uZmlnL25ldHdvcmtpbmcvc2hhcmUvbWVk aWEuc3Vicgkod29ya2luZyBjb3B5KQ0KQEAgLTM0LDcgKzM0LDcgQEAgZl9kcHJpbnRmICIlczog bG9hZGluZyBpbmNsdWRlcy4uLiIgbmV0d29ya2luZy9tZWQNCiBmX2luY2x1ZGUgJEJTRENGR19T SEFSRS9kaWFsb2cuc3Vicg0KIGZfaW5jbHVkZSAkQlNEQ0ZHX1NIQVJFL25ldHdvcmtpbmcvY29t bW9uLnN1YnINCiBmX2luY2x1ZGUgJEJTRENGR19TSEFSRS9zdHJpbmdzLnN1YnINCi1mX2luY2x1 ZGUgJEJTRENGR19TSEFSRS9zeXNyYy5zdWJyDQorZl9pbmNsdWRlIC9ldGMvc3lzcmMuc3Vicg0K IA0KIEJTRENGR19MSUJFPSIvdXNyL2xpYmV4ZWMvYnNkY29uZmlnIiBBUFBfRElSPSIxMjAubmV0 d29ya2luZyINCiBmX2luY2x1ZGVfbGFuZyAkQlNEQ0ZHX0xJQkUvJEFQUF9ESVIvaW5jbHVkZS9t ZXNzYWdlcy5zdWJyDQpJbmRleDogdXNyLnNiaW4vYnNkY29uZmlnL25ldHdvcmtpbmcvc2hhcmUv cm91dGluZy5zdWJyDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gdXNyLnNiaW4vYnNkY29uZmlnL25ldHdvcmtp bmcvc2hhcmUvcm91dGluZy5zdWJyCShyZXZpc2lvbiAyNTI4NTMpDQorKysgdXNyLnNiaW4vYnNk Y29uZmlnL25ldHdvcmtpbmcvc2hhcmUvcm91dGluZy5zdWJyCSh3b3JraW5nIGNvcHkpDQpAQCAt MzUsNyArMzUsNyBAQCBmX2luY2x1ZGUgJEJTRENGR19TSEFSRS9kaWFsb2cuc3Vicg0KIGZfaW5j bHVkZSAkQlNEQ0ZHX1NIQVJFL21lZGlhL3RjcGlwLnN1YnINCiBmX2luY2x1ZGUgJEJTRENGR19T SEFSRS9uZXR3b3JraW5nL2NvbW1vbi5zdWJyDQogZl9pbmNsdWRlICRCU0RDRkdfU0hBUkUvbmV0 d29ya2luZy9pcGFkZHIuc3Vicg0KLWZfaW5jbHVkZSAkQlNEQ0ZHX1NIQVJFL3N5c3JjLnN1YnIN CitmX2luY2x1ZGUgL2V0Yy9zeXNyYy5zdWJyDQogDQogQlNEQ0ZHX0xJQkU9Ii91c3IvbGliZXhl Yy9ic2Rjb25maWciIEFQUF9ESVI9IjEyMC5uZXR3b3JraW5nIg0KIGZfaW5jbHVkZV9sYW5nICRC U0RDRkdfTElCRS8kQVBQX0RJUi9pbmNsdWRlL21lc3NhZ2VzLnN1YnINCkluZGV4OiB1c3Iuc2Jp bi9ic2Rjb25maWcvbmV0d29ya2luZy9zaGFyZS9zZXJ2aWNlcy5zdWJyDQo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot LS0gdXNyLnNiaW4vYnNkY29uZmlnL25ldHdvcmtpbmcvc2hhcmUvc2VydmljZXMuc3VicgkocmV2 aXNpb24gMjUyNzQ2KQ0KKysrIHVzci5zYmluL2JzZGNvbmZpZy9uZXR3b3JraW5nL3NoYXJlL3Nl cnZpY2VzLnN1YnIJKHdvcmtpbmcgY29weSkNCkBAIC0zMiw3ICszMiw3IEBAIEJTRENGR19TSEFS RT0iL3Vzci9zaGFyZS9ic2Rjb25maWciDQogLiAkQlNEQ0ZHX1NIQVJFL2NvbW1vbi5zdWJyIHx8 IGV4aXQgMQ0KIGZfZHByaW50ZiAiJXM6IGxvYWRpbmcgaW5jbHVkZXMuLi4iIG5ldHdvcmtpbmcv c2VydmljZXMuc3Vicg0KIGZfaW5jbHVkZSAkQlNEQ0ZHX1NIQVJFL3BhY2thZ2VzL3BhY2thZ2Vz LnN1YnINCi1mX2luY2x1ZGUgJEJTRENGR19TSEFSRS9zeXNyYy5zdWJyDQorZl9pbmNsdWRlIC9l dGMvc3lzcmMuc3Vicg0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBGVU5DVElPTlMNCiANCkluZGV4OiB1c3Iuc2Jpbi9ic2Rj b25maWcvc2VjdXJpdHkva2Vybl9zZWN1cmVsZXZlbA0KPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHVzci5zYmlu L2JzZGNvbmZpZy9zZWN1cml0eS9rZXJuX3NlY3VyZWxldmVsCShyZXZpc2lvbiAyNTIxNzgpDQor KysgdXNyLnNiaW4vYnNkY29uZmlnL3NlY3VyaXR5L2tlcm5fc2VjdXJlbGV2ZWwJKHdvcmtpbmcg Y29weSkNCkBAIC0zMyw3ICszMyw3IEBAIEJTRENGR19TSEFSRT0iL3Vzci9zaGFyZS9ic2Rjb25m aWciDQogZl9kcHJpbnRmICIlczogbG9hZGluZyBpbmNsdWRlcy4uLiIgIiQwIg0KIGZfaW5jbHVk ZSAkQlNEQ0ZHX1NIQVJFL2RpYWxvZy5zdWJyDQogZl9pbmNsdWRlICRCU0RDRkdfU0hBUkUvbXVz dGJlcm9vdC5zdWJyDQotZl9pbmNsdWRlICRCU0RDRkdfU0hBUkUvc3lzcmMuc3Vicg0KK2ZfaW5j bHVkZSAvZXRjL3N5c3JjLnN1YnINCiANCiBCU0RDRkdfTElCRT0iL3Vzci9saWJleGVjL2JzZGNv bmZpZyIgQVBQX0RJUj0iMTMwLnNlY3VyaXR5Ig0KIGZfaW5jbHVkZV9sYW5nICRCU0RDRkdfTElC RS8kQVBQX0RJUi9pbmNsdWRlL21lc3NhZ2VzLnN1YnINCkluZGV4OiB1c3Iuc2Jpbi9ic2Rjb25m aWcvc2VjdXJpdHkvc2VjdXJpdHkNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB1c3Iuc2Jpbi9ic2Rjb25maWcv c2VjdXJpdHkvc2VjdXJpdHkJKHJldmlzaW9uIDI1MjE3OCkNCisrKyB1c3Iuc2Jpbi9ic2Rjb25m aWcvc2VjdXJpdHkvc2VjdXJpdHkJKHdvcmtpbmcgY29weSkNCkBAIC0zMyw3ICszMyw3IEBAIEJT RENGR19TSEFSRT0iL3Vzci9zaGFyZS9ic2Rjb25maWciDQogZl9kcHJpbnRmICIlczogbG9hZGlu ZyBpbmNsdWRlcy4uLiIgIiQwIg0KIGZfaW5jbHVkZSAkQlNEQ0ZHX1NIQVJFL2RpYWxvZy5zdWJy DQogZl9pbmNsdWRlICRCU0RDRkdfU0hBUkUvbXVzdGJlcm9vdC5zdWJyDQotZl9pbmNsdWRlICRC U0RDRkdfU0hBUkUvc3lzcmMuc3Vicg0KK2ZfaW5jbHVkZSAvZXRjL3N5c3JjLnN1YnINCiANCiBC U0RDRkdfTElCRT0iL3Vzci9saWJleGVjL2JzZGNvbmZpZyIgQVBQX0RJUj0iMTMwLnNlY3VyaXR5 Ig0KIGZfaW5jbHVkZV9sYW5nICRCU0RDRkdfTElCRS8kQVBQX0RJUi9pbmNsdWRlL21lc3NhZ2Vz LnN1YnINCkluZGV4OiB1c3Iuc2Jpbi9ic2Rjb25maWcvc2hhcmUvTWFrZWZpbGUNCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0NCi0tLSB1c3Iuc2Jpbi9ic2Rjb25maWcvc2hhcmUvTWFrZWZpbGUJKHJldmlzaW9uIDI1MTM1 MSkNCisrKyB1c3Iuc2Jpbi9ic2Rjb25maWcvc2hhcmUvTWFrZWZpbGUJKHdvcmtpbmcgY29weSkN CkBAIC02LDcgKzYsNyBAQCBTVUJESVI9CW1lZGlhIHBhY2thZ2VzDQogDQogRklMRVNESVI9CSR7 U0hBUkVESVJ9L2JzZGNvbmZpZw0KIEZJTEVTPQkJY29tbW9uLnN1YnIgZGV2aWNlLnN1YnIgZGlh bG9nLnN1YnIgbXVzdGJlcm9vdC5zdWJyIFwNCi0JCXNjcmlwdC5zdWJyIHN0cmluZ3Muc3ViciBz dHJ1Y3Quc3ViciBzeXNyYy5zdWJyIHZhcmlhYmxlLnN1YnINCisJCXNjcmlwdC5zdWJyIHN0cmlu Z3Muc3ViciBzdHJ1Y3Quc3ViciB2YXJpYWJsZS5zdWJyDQogDQogYmVmb3JlaW5zdGFsbDoNCiAJ bWtkaXIgLXAgJHtERVNURElSfSR7RklMRVNESVJ9DQpJbmRleDogdXNyLnNiaW4vYnNkY29uZmln L3NoYXJlL3N5c3JjLnN1YnINCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB1c3Iuc2Jpbi9ic2Rjb25maWcvc2hh cmUvc3lzcmMuc3VicgkocmV2aXNpb24gMjM4NDkxKQ0KKysrIHVzci5zYmluL2JzZGNvbmZpZy9z aGFyZS9zeXNyYy5zdWJyCSh3b3JraW5nIGNvcHkpDQpAQCAtMSw2MzMgKzAsMCBAQA0KLWlmIFsg ISAiJF9TWVNSQ19TVUJSIiBdOyB0aGVuIF9TWVNSQ19TVUJSPTENCi0jDQotIyBDb3B5cmlnaHQg KGMpIDIwMDYtMjAxMiBEZXZpbiBUZXNrZQ0KLSMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCi0jDQot IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo IG9yIHdpdGhvdXQNCi0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0 IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KLSMgYXJlIG1ldDoNCi0jIDEuIFJlZGlzdHJpYnV0 aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQotIyAg ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns YWltZXIuDQotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1 Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0 aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KLSMgICAgZG9jdW1lbnRh dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv bi4NCi0jDQotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENP TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EDQotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB TlRJRVMsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQ0KLSMgSU1QTElFRCBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UNCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBP UiBDT05UUklCVVRPUlMgQkUgTElBQkxFDQotIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTA0KLSMgREFNQUdF UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV VEUgR09PRFMNCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQ0KLSMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QNCi0jIExJQUJJ TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H IElOIEFOWSBXQVkNCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YNCi0jIFNVQ0ggREFNQUdFLg0KLSMNCi0jICRG cmVlQlNEJA0KLSMNCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMgSU5DTFVERVMNCi0NCi1CU0RDRkdfU0hBUkU9Ii91c3Ivc2hhcmUv YnNkY29uZmlnIg0KLVsgIiRfQ09NTU9OX1NVQlIiIF0gfHwgLiAkQlNEQ0ZHX1NIQVJFL2NvbW1v bi5zdWJyIHx8IGV4aXQgMQ0KLQ0KLUJTRENGR19MSUJFPSIvdXNyL2xpYmV4ZWMvYnNkY29uZmln Ig0KLWlmIFsgISAiJF9TWVNSQ19KQUlMRUQiIF07IHRoZW4NCi0JZl9kcHJpbnRmICIlczogbG9h ZGluZyBpbmNsdWRlcy4uLiIgc3lzcmMuc3Vicg0KLQlmX2luY2x1ZGVfbGFuZyAkQlNEQ0ZHX0xJ QkUvaW5jbHVkZS9tZXNzYWdlcy5zdWJyDQotZmkNCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgQ09ORklHVVJBVElPTg0KLQ0K LSMNCi0jIFN0YW5kYXJkIHBhdGhuYW1lcyAoaW5oZXJpdCB2YWx1ZXMgZnJvbSBzaGVsbCBpZiBh dmFpbGFibGUpDQotIw0KLTogJHtSQ19ERUZBVUxUUzo9Ii9ldGMvZGVmYXVsdHMvcmMuY29uZiJ9 DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIEdMT0JBTFMNCi0NCi0jDQotIyBHbG9iYWwgZXhpdCBzdGF0dXMgdmFyaWFibGVz DQotIw0KLVNVQ0NFU1M9MA0KLUZBSUxVUkU9MQ0KLQ0KLSMNCi0jIFZhbGlkIGNoYXJhY3RlcnMg dGhhdCBjYW4gYXBwZWFyIGluIGFuIHNoKDEpIHZhcmlhYmxlIG5hbWUNCi0jDQotIyBQbGVhc2Ug bm90ZSB0aGF0IHRoZSBjaGFyYWN0ZXIgcmFuZ2VzIEEtWiBhbmQgYS16IHNob3VsZCBiZSBhdm9p ZGVkIGJlY2F1c2UNCi0jIHRoZXNlIGNhbiBpbmNsdWRlIGFjY2VudCBjaGFyYWN0ZXJzICh3aGlj aCBhcmUgbm90IHZhbGlkIGluIGEgdmFyaWFibGUgbmFtZSkuDQotIyBGb3IgZXhhbXBsZSwgQS1a IG1hdGNoZXMgYW55IGNoYXJhY3RlciB0aGF0IHNvcnRzIGFmdGVyIEEgYnV0IGJlZm9yZSBaLA0K LSMgaW5jbHVkaW5nIEEgYW5kIFouIEFsdGhvdWdoIEFTQ0lJIG9yZGVyIHdvdWxkIG1ha2UgbW9y ZSBzZW5zZSwgdGhhdCBpcyBub3QNCi0jIGhvdyBpdCB3b3Jrcy4NCi0jDQotVkFMSURfVkFSTkFN RV9DSEFSUz0iMC05QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJz dHV2d3h5el8iDQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIEZVTkNUSU9OUw0KLQ0KLSMgZl9jbGVhbl9lbnYgWyAtLWV4Y2Vw dCAkdmFybmFtZSAuLi4gXQ0KLSMNCi0jIFVuc2V0IGFsbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMg aW4gdGhlIGN1cnJlbnQgc2NvcGUuIEFuIG9wdGlvbmFsIGxpc3Qgb2YNCi0jIGFyZ3VtZW50cyBj YW4gYmUgcGFzc2VkLCBpbmRpY2F0aW5nIHdoaWNoIHZhcmlhYmxlcyB0byBhdm9pZCB1bnNldHRp bmc7IHRoZQ0KLSMgYC0tZXhjZXB0JyBpcyByZXF1aXJlZCB0byBlbmFibGUgdGhlIGV4Y2x1c2lv bi1saXN0IGFzIHRoZSByZW1haW5kZXIgb2YNCi0jIHBvc2l0aW9uYWwgYXJndW1lbnRzLg0KLSMN Ci0jIEJlIGNhcmVmdWwgbm90IHRvIGNhbGwgdGhpcyBpbiBhIHNoZWxsIHRoYXQgeW91IHN0aWxs IGV4cGVjdCB0byBwZXJmb3JtDQotIyAkUEFUSCBleHBhbnNpb24gaW4sIGJlY2F1c2UgdGhpcyB3 aWxsIGJsb3cgJFBBVEggYXdheS4gVGhpcyBpcyBiZXN0IHVzZWQNCi0jIHdpdGhpbiBhIHN1Yi1z aGVsbCBibG9jayAiKC4uLikiIG9yICIkKC4uLikiIG9yICJgLi4uYCIuDQotIw0KLWZfY2xlYW5f ZW52KCkNCi17DQotCWxvY2FsIHZhciBhcmcgZXhjZXB0PQ0KLQ0KLQkjDQotCSMgU2hvdWxkIHdl IHByb2Nlc3MgYW4gZXhjbHVzaW9uLWxpc3Q/DQotCSMNCi0JaWYgWyAiJDEiID0gIi0tZXhjZXB0 IiBdOyB0aGVuDQotCQlleGNlcHQ9MQ0KLQkJc2hpZnQgMQ0KLQlmaQ0KLQ0KLQkjDQotCSMgTG9v cCBvdmVyIGEgbGlzdCBvZiB2YXJpYWJsZSBuYW1lcyBmcm9tIHNldCgxKSBidWlsdC1pbi4NCi0J Iw0KLQlmb3IgdmFyIGluICQoIHNldCB8IGF3ayAtRj0gXA0KLQkJJy9eW1s6YWxwaGE6XV9dW1s6 YWxudW06XV9dKj0vIHtwcmludCAkMX0nIFwNCi0JCXwgZ3JlcCAtdiAnXmV4Y2VwdCQnDQotCSk7 IGRvDQotCQkjDQotCQkjIEluIFBPU0lYIGJvdXJuZS1zaGVsbCwgYXR0ZW1wdGluZyB0byB1bnNl dCgxKSBPUFRJTkQgcmVzdWx0cw0KLQkJIyBpbiAidW5zZXQ6IElsbGVnYWwgbnVtYmVyOiIgYW5k IGNhdXNlcyBhYnJ1cHQgdGVybWluYXRpb24uDQotCQkjDQotCQlbICIkdmFyIiA9IE9QVElORCBd ICYmIGNvbnRpbnVlDQotDQotCQkjDQotCQkjIFByb2Nlc3MgdGhlIGV4Y2x1c2lvbi1saXN0Pw0K LQkJIw0KLQkJaWYgWyAiJGV4Y2VwdCIgXTsgdGhlbg0KLQkJCWZvciBhcmcgaW4gIiRAIiAiIjsg ZG8NCi0JCQkJWyAiJHZhciIgPSAiJGFyZyIgXSAmJiBicmVhaw0KLQkJCWRvbmUNCi0JCQlbICIk YXJnIiBdICYmIGNvbnRpbnVlDQotCQlmaQ0KLQ0KLQkJdW5zZXQgIiR2YXIiDQotCWRvbmUNCi19 DQotDQotIyBmX3N5c3JjX2dldCAkdmFybmFtZQ0KLSMNCi0jIEdldCBhIHN5c3RlbSBjb25maWd1 cmF0aW9uIHNldHRpbmcgZnJvbSB0aGUgY29sbGVjdGlvbiBvZiBzeXN0ZW0tDQotIyBjb25maWd1 cmF0aW9uIGZpbGVzIChpbiBvcmRlcjogL2V0Yy9kZWZhdWx0cy9yYy5jb25mIC9ldGMvcmMuY29u Zg0KLSMgYW5kIC9ldGMvcmMuY29uZikuDQotIw0KLSMgTk9URTogQWRkaXRpb25hbCBzaGVsbCBw YXJhbWV0ZXItZXhwYW5zaW9uIGZvcm1hdHMgYXJlIHN1cHBvcnRlZC4gRm9yDQotIyBleGFtcGxl LCBwYXNzaW5nIGFuIGFyZ3VtZW50IG9mICJob3N0bmFtZSUlLioiIChwcm9wZXJseSBxdW90ZWQp IHdpbGwNCi0jIHJldHVybiB0aGUgaG9zdG5hbWUgdXAgdG8gKGJ1dCBub3QgaW5jbHVkaW5nKSB0 aGUgZmlyc3QgYC4nIChzZWUgc2goMSksDQotIyAiUGFyYW1ldGVyIEV4cGFuc2lvbiIgZm9yIG1v cmUgaW5mb3JtYXRpb24gb24gYWRkaXRpb25hbCBmb3JtYXRzKS4NCi0jDQotZl9zeXNyY19nZXQo KQ0KLXsNCi0JIyBTYW5pdHkgY2hlY2sNCi0JWyAtZiAiJFJDX0RFRkFVTFRTIiAtYSAtciAiJFJD X0RFRkFVTFRTIiBdIHx8IHJldHVybiAkRkFJTFVSRQ0KLQ0KLQkjIFRhaW50LWNoZWNrIHZhcmlh YmxlIG5hbWUNCi0JY2FzZSAiJDEiIGluDQotCVswLTldKikNCi0JCSMgRG9uJ3QgZXhwYW5kIHBv c3NpYmxlIHBvc2l0aW9uYWwgcGFyYW1ldGVycw0KLQkJcmV0dXJuICRGQUlMVVJFIDs7DQotCSop DQotCQlbICIkMSIgXSB8fCByZXR1cm4gJEZBSUxVUkUNCi0JZXNhYw0KLQ0KLQkoICMgRXhlY3V0 ZSB3aXRoaW4gc3ViLXNoZWxsIHRvIHByb3RlY3QgcGFyZW50IGVudmlyb25tZW50DQotDQotCQkj DQotCQkjIENsZWFyIHRoZSBlbnZpcm9ubWVudCBvZiBhbGwgdmFyaWFibGVzLCBwcmV2ZW50aW5n IHRoZQ0KLQkJIyBleHBhbnNpb24gb2Ygbm9ybWFscyBzdWNoIGFzIGBQUzEnLCBgVEVSTScsIGV0 Yy4NCi0JCSMNCi0JCWZfY2xlYW5fZW52IC0tZXhjZXB0IElGUyBSQ19DT05GUyBSQ19ERUZBVUxU Uw0KLQ0KLQkJLiAiJFJDX0RFRkFVTFRTIiA+IC9kZXYvbnVsbCAyPiYxDQotDQotCQl1bnNldCBS Q19ERUZBVUxUUw0KLQkJCSMgbm8gbG9uZ2VyIG5lZWRlZA0KLQ0KLQkJIw0KLQkJIyBJZiB0aGUg cXVlcnkgaXMgZm9yIGByY19jb25mX2ZpbGVzJyB0aGVuIHN0b3JlIHRoZSB2YWx1ZSB0aGF0DQot CQkjIHdlIGluaGVyaXRlZCBmcm9tIHNvdXJjaW5nIFJDX0RFRkFVTFRTIChhYm92ZSkgc28gdGhh dCB3ZSBtYXkNCi0JCSMgY29uZGl0aW9uYWxseSByZXN0b3JlIHRoaXMgdmFsdWUgYWZ0ZXIgc291 cmNlX3JjX2NvbmZzIGluIHRoZQ0KLQkJIyBldmVudCB0aGF0IFJDX0NPTkZTIGRvZXMgbm90IGN1 c3RvbWl6ZSB0aGUgdmFsdWUuDQotCQkjDQotCQlpZiBbICIkMSIgPSAicmNfY29uZl9maWxlcyIg XTsgdGhlbg0KLQkJCV9yY19jb25mX2ZpbGVzPSIkcmNfY29uZl9maWxlcyINCi0JCWZpDQotDQot CQkjDQotCQkjIElmIFJDX0NPTkZTIGlzIGRlZmluZWQsIHNldCAkcmNfY29uZl9maWxlcyB0byBh biBleHBsaWNpdA0KLQkJIyB2YWx1ZSwgbW9kaWZ5aW5nIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9m IHNvdXJjZV9yY19jb25mcygpLg0KLQkJIw0KLQkJaWYgWyAiJHtSQ19DT05GUytzZXR9IiBdOyB0 aGVuDQotCQkJcmNfY29uZl9maWxlcz0iJFJDX0NPTkZTIg0KLQkJCV9yY19jb25mc19zZXQ9MQ0K LQkJZmkNCi0NCi0JCXNvdXJjZV9yY19jb25mcyA+IC9kZXYvbnVsbCAyPiYxDQotDQotCQkjDQot CQkjIElmIHRoZSBxdWVyeSB3YXMgZm9yIGByY19jb25mX2ZpbGVzJyBBTkQgYWZ0ZXIgY2FsbGlu Zw0KLQkJIyBzb3VyY2VfcmNfY29uZnMgdGhlIHZhbHVlIGhhcyBub3QgY2hhbmdlZCwgdGhlbiB3 ZSBzaG91bGQNCi0JCSMgcmVzdG9yZSB0aGUgdmFsdWUgdG8gdGhlIG9uZSBpbmhlcml0ZWQgZnJv bSBSQ19ERUZBVUxUUw0KLQkJIyBiZWZvcmUgcGVyZm9ybWluZyB0aGUgZmluYWwgcXVlcnkgKHBy ZXZlbnRpbmcgdXMgZnJvbQ0KLQkJIyByZXR1cm5pbmcgd2hhdCB3YXMgc2V0IHZpYSBSQ19DT05G UyB3aGVuIHRoZSBpbnRlbnQgd2FzDQotCQkjIGluc3RlYWQgdG8gcXVlcnkgdGhlIHZhbHVlIGZy b20gdGhlIGZpbGUocykgc3BlY2lmaWVkKS4NCi0JCSMNCi0JCWlmIFsgIiQxIiA9ICJyY19jb25m X2ZpbGVzIiAtYSBcDQotCQkgICAgICIkX3JjX2NvbmZzX3NldCIgLWEgXA0KLQkJICAgICAiJHJj X2NvbmZfZmlsZXMiID0gIiRSQ19DT05GUyIgXA0KLQkJXTsgdGhlbg0KLQkJCXJjX2NvbmZfZmls ZXM9IiRfcmNfY29uZl9maWxlcyINCi0JCQl1bnNldCBfcmNfY29uZl9maWxlcw0KLQkJCXVuc2V0 IF9yY19jb25mc19zZXQNCi0JCWZpDQotDQotCQl1bnNldCBSQ19DT05GUw0KLQkJCSMgbm8gbG9u Z2VyIG5lZWRlZA0KLQ0KLQkJIw0KLQkJIyBUaGlzIG11c3QgYmUgdGhlIGxhc3QgZnVuY3Rpb25h bCBsaW5lIGZvciBib3RoIHRoZSBzdWItc2hlbGwNCi0JCSMgYW5kIHRoZSBmdW5jdGlvbiB0byBw cmVzZXJ2ZSB0aGUgcmV0dXJuIHN0YXR1cyBmcm9tIGZvcm1hdHMNCi0JCSMgc3VjaCBhcyAiJHt2 YXJuYW1lP30iIGFuZCAiJHt2YXJuYW1lOj99IiAoc2VlICJQYXJhbWV0ZXINCi0JCSMgRXhwYW5z aW9uIiBpbiBzaCgxKSBmb3IgbW9yZSBpbmZvcm1hdGlvbikuDQotCQkjDQotCQlldmFsIGVjaG8g JyIkeyciJDEiJ30iJyAyPiAvZGV2L251bGwNCi0JKQ0KLX0NCi0NCi0jIGZfc3lzcmNfZ2V0X2Rl ZmF1bHQgJHZhcm5hbWUNCi0jDQotIyBHZXQgYSBzeXN0ZW0gY29uZmlndXJhdGlvbiBkZWZhdWx0 IHNldHRpbmcgZnJvbSB0aGUgZGVmYXVsdCByYy5jb25mKDUpIGZpbGUNCi0jIChvciB3aGF0ZXZl ciBSQ19ERUZBVUxUUyBwb2ludHMgYXQpLg0KLSMNCi1mX3N5c3JjX2dldF9kZWZhdWx0KCkNCi17 DQotCSMgU2FuaXR5IGNoZWNrDQotCVsgLWYgIiRSQ19ERUZBVUxUUyIgLWEgLXIgIiRSQ19ERUZB VUxUUyIgXSB8fCByZXR1cm4gJEZBSUxVUkUNCi0NCi0JIyBUYWludC1jaGVjayB2YXJpYWJsZSBu YW1lDQotCWNhc2UgIiQxIiBpbg0KLQlbMC05XSopDQotCQkjIERvbid0IGV4cGFuZCBwb3NzaWJs ZSBwb3NpdGlvbmFsIHBhcmFtZXRlcnMNCi0JCXJldHVybiAkRkFJTFVSRSA7Ow0KLQkqKQ0KLQkJ WyAiJDEiIF0gfHwgcmV0dXJuICRGQUlMVVJFDQotCWVzYWMNCi0NCi0JKCAjIEV4ZWN1dGUgd2l0 aGluIHN1Yi1zaGVsbCB0byBwcm90ZWN0IHBhcmVudCBlbnZpcm9ubWVudA0KLQ0KLQkJIw0KLQkJ IyBDbGVhciB0aGUgZW52aXJvbm1lbnQgb2YgYWxsIHZhcmlhYmxlcywgcHJldmVudGluZyB0aGUN Ci0JCSMgZXhwYW5zaW9uIG9mIG5vcm1hbHMgc3VjaCBhcyBgUFMxJywgYFRFUk0nLCBldGMuDQot CQkjDQotCQlmX2NsZWFuX2VudiAtLWV4Y2VwdCBSQ19ERUZBVUxUUw0KLQ0KLQkJLiAiJFJDX0RF RkFVTFRTIiA+IC9kZXYvbnVsbCAyPiYxDQotDQotCQl1bnNldCBSQ19ERUZBVUxUUw0KLQkJCSMg bm8gbG9uZ2VyIG5lZWRlZA0KLQ0KLQkJIw0KLQkJIyBUaGlzIG11c3QgYmUgdGhlIGxhc3QgZnVu Y3Rpb25hbCBsaW5lIGZvciBib3RoIHRoZSBzdWItc2hlbGwNCi0JCSMgYW5kIHRoZSBmdW5jdGlv biB0byBwcmVzZXJ2ZSB0aGUgcmV0dXJuIHN0YXR1cyBmcm9tIGZvcm1hdHMNCi0JCSMgc3VjaCBh cyAiJHt2YXJuYW1lP30iIGFuZCAiJHt2YXJuYW1lOj99IiAoc2VlICJQYXJhbWV0ZXINCi0JCSMg RXhwYW5zaW9uIiBpbiBzaCgxKSBmb3IgbW9yZSBpbmZvcm1hdGlvbikuDQotCQkjDQotCQlldmFs IGVjaG8gJyIkeyciJDEiJ30iJyAyPiAvZGV2L251bGwNCi0JKQ0KLX0NCi0NCi0jIGZfc3lzcmNf ZmluZCAkdmFybmFtZQ0KLSMNCi0jIEZpbmQgd2hpY2ggZmlsZSBob2xkcyB0aGUgZWZmZWN0aXZl IGxhc3QtYXNzaWdubWVudCB0byBhIGdpdmVuIHZhcmlhYmxlDQotIyB3aXRoaW4gdGhlIHJjLmNv bmYoNSkgZmlsZShzKS4NCi0jDQotIyBJZiB0aGUgdmFyaWFibGUgaXMgZm91bmQgaW4gYW55IG9m IHRoZSByYy5jb25mKDUpIGZpbGVzLCB0aGUgZnVuY3Rpb24gcHJpbnRzDQotIyB0aGUgZmlsZW5h bWUgaXQgd2FzIGZvdW5kIGluIGFuZCB0aGVuIHJldHVybnMgc3VjY2Vzcy4gT3RoZXJ3aXNlIG91 dHB1dCBpcw0KLSMgTlVMTCBhbmQgdGhlIGZ1bmN0aW9uIHJldHVybnMgd2l0aCBlcnJvciBzdGF0 dXMuDQotIw0KLWZfc3lzcmNfZmluZCgpDQotew0KLQlsb2NhbCB2YXJuYW1lPSIkezElJVshJFZB TElEX1ZBUk5BTUVfQ0hBUlNdKn0iDQotCWxvY2FsIHJlZ2V4PSJeW1s6c3BhY2U6XV0qJHZhcm5h bWU9Ig0KLQlsb2NhbCByY19jb25mX2ZpbGVzPSIkKCBmX3N5c3JjX2dldCByY19jb25mX2ZpbGVz ICkiDQotCWxvY2FsIGNvbmZfZmlsZXM9DQotCWxvY2FsIGZpbGUNCi0NCi0JIyBDaGVjayBwYXJh bWV0ZXJzDQotCWNhc2UgIiR2YXJuYW1lIiBpbg0KLQkiInxbMC05XSopIHJldHVybiAkRkFJTFVS RQ0KLQllc2FjDQotDQotCSMNCi0JIyBJZiBSQ19DT05GUyBpcyBkZWZpbmVkLCBzZXQgJHJjX2Nv bmZfZmlsZXMgdG8gYW4gZXhwbGljaXQNCi0JIyB2YWx1ZSwgbW9kaWZ5aW5nIHRoZSBkZWZhdWx0 IGJlaGF2aW9yIG9mIHNvdXJjZV9yY19jb25mcygpLg0KLQkjDQotCVsgIiR7UkNfQ09ORlMrc2V0 fSIgXSAmJiByY19jb25mX2ZpbGVzPSIkUkNfQ09ORlMiDQotDQotCSMNCi0JIyBSZXZlcnNlIHRo ZSBvcmRlciBvZiBmaWxlcyBpbiByY19jb25mX2ZpbGVzICh0aGUgYm9vdCBwcm9jZXNzIHNvdXJj ZXMNCi0JIyB0aGVzZSBpbiBvcmRlciwgc28gd2Ugd2lsbCBzZWFyY2ggdGhlbSBpbiByZXZlcnNl LW9yZGVyIHRvIGZpbmQgdGhlDQotCSMgbGFzdC1hc3NpZ25tZW50IC0tIHRoZSBvbmUgdGhhdCB1 bHRpbWF0ZWx5IGVmZmVjdHMgdGhlIGVudmlyb25tZW50KS4NCi0JIw0KLQlmb3IgZmlsZSBpbiAk cmNfY29uZl9maWxlczsgZG8NCi0JCWNvbmZfZmlsZXM9IiRmaWxlJHtjb25mX2ZpbGVzOisgfSRj b25mX2ZpbGVzIg0KLQlkb25lDQotDQotCSMNCi0JIyBBcHBlbmQgdGhlIGRlZmF1bHRzIGZpbGUg KHNpbmNlIGRpcmVjdGl2ZXMgaW4gdGhlIGRlZmF1bHRzIGZpbGUNCi0JIyBpbmRlZWQgYWZmZWN0 IHRoZSBib290IHByb2Nlc3MsIHdlJ2xsIHdhbnQgdG8ga25vdyB3aGVuIGEgZGlyZWN0aXZlDQot CSMgaXMgZm91bmQgdGhlcmUpLg0KLQkjDQotCWNvbmZfZmlsZXM9IiRjb25mX2ZpbGVzJHtjb25m X2ZpbGVzOisgfSRSQ19ERUZBVUxUUyINCi0NCi0JIw0KLQkjIEZpbmQgd2hpY2ggZmlsZSBtYXRj aGVzIGFzc2lnbm1lbnQgdG8gdGhlIGdpdmVuIHZhcmlhYmxlIG5hbWUuDQotCSMNCi0JZm9yIGZp bGUgaW4gJGNvbmZfZmlsZXM7IGRvDQotCQlbIC1mICIkZmlsZSIgLWEgLXIgIiRmaWxlIiBdIHx8 IGNvbnRpbnVlDQotCQlpZiBncmVwIC1FcSAiJHJlZ2V4IiAkZmlsZTsgdGhlbg0KLQkJCWVjaG8g JGZpbGUNCi0JCQlyZXR1cm4gJFNVQ0NFU1MNCi0JCWZpDQotCWRvbmUNCi0NCi0JcmV0dXJuICRG QUlMVVJFICMgTm90IGZvdW5kDQotfQ0KLQ0KLSMgZl9zeXNyY19kZXNjICR2YXJuYW1lDQotIw0K LSMgQXR0ZW1wdHMgdG8gcmV0dXJuIHRoZSBjb21tZW50cyBhc3NvY2lhdGVkIHdpdGggdmFybmFt ZSBmcm9tIHRoZSByYy5jb25mKDUpDQotIyBkZWZhdWx0cyBmaWxlIGAvZXRjL2RlZmF1bHRzL3Jj LmNvbmYnIChvciB3aGF0ZXZlciBSQ19ERUZBVUxUUyBwb2ludHMgdG8pLg0KLSMNCi0jIE11bHRp LWxpbmUgY29tbWVudHMgYXJlIGpvaW5lZCB0b2dldGhlci4gUmVzdWx0cyBhcmUgTlVMTCBpZiBu byBkZXNjcmlwdGlvbg0KLSMgY291bGQgYmUgZm91bmQuDQotIw0KLSMgVGhpcyBmdW5jdGlvbiBp cyBhIHR3by1wYXJ0ZXIuIEJlbG93IGlzIHRoZSBhd2soMSkgcG9ydGlvbiBvZiB0aGUgZnVuY3Rp b24sDQotIyBhZnRlcndhcmQgaXMgdGhlIHNoKDEpIGZ1bmN0aW9uIHdoaWNoIHV0aWxpemVzIHRo ZSBiZWxvdyBhd2sgc2NyaXB0Lg0KLSMNCi1mX3N5c3JjX2Rlc2NfYXdrPScNCi0jIFZhcmlhYmxl cyB0aGF0IHNob3VsZCBiZSBkZWZpbmVkIG9uIHRoZSBpbnZvY2F0aW9uIGxpbmU6DQotIyAJLXYg dmFybmFtZT0idmFybmFtZSINCi0jDQotQkVHSU4gew0KLQlyZWdleCA9ICJeW1s6c3BhY2U6XV0q InZhcm5hbWUiPSINCi0JZm91bmQgPSAwDQotCWJ1ZmZlciA9ICIiDQotfQ0KLXsNCi0JaWYgKCAh IGZvdW5kICkNCi0Jew0KLQkJaWYgKCAhIG1hdGNoKCQwLCByZWdleCkgKSBuZXh0DQotDQotCQlm b3VuZCA9IDENCi0JCXN1YigvXlteI10qKCNbWzpzcGFjZTpdXSopPy8sICIiKQ0KLQkJYnVmZmVy ID0gJDANCi0JCW5leHQNCi0JfQ0KLQ0KLQlpZiAoICEvXltbOnNwYWNlOl1dKiMvIHx8DQotCSAg ICAgIC9eW1s6c3BhY2U6XV0qW1s6YWxwaGE6XV9dW1s6YWxudW06XV9dKj0vIHx8DQotCSAgICAg IC9eW1s6c3BhY2U6XV0qI1tbOmFscGhhOl1fXVtbOmFsbnVtOl1fXSo9LyB8fA0KLQkgICAgICAv XltbOnNwYWNlOl1dKiQvICkgZXhpdA0KLQ0KLQlzdWIoLyguKiMpKltbOnNwYWNlOl1dKi8sICIi KQ0KLQlidWZmZXIgPSBidWZmZXIiICIkMA0KLX0NCi1FTkQgew0KLQkjIENsZWFuIHVwIHRoZSBi dWZmZXINCi0Jc3ViKC9eW1s6c3BhY2U6XV0qLywgIiIsIGJ1ZmZlcikNCi0Jc3ViKC9bWzpzcGFj ZTpdXSokLywgIiIsIGJ1ZmZlcikNCi0NCi0JcHJpbnQgYnVmZmVyDQotCWV4aXQgISBmb3VuZA0K LX0NCi0nDQotZl9zeXNyY19kZXNjKCkNCi17DQotCWF3ayAtdiB2YXJuYW1lPSIkMSIgIiRmX3N5 c3JjX2Rlc2NfYXdrIiA8ICIkUkNfREVGQVVMVFMiDQotfQ0KLQ0KLSMgZl9zeXNyY19zZXQgJHZh cm5hbWUgJG5ld192YWx1ZQ0KLSMNCi0jIENoYW5nZSBhIHNldHRpbmcgaW4gdGhlIHN5c3RlbSBj b25maWd1cmF0aW9uIGZpbGVzIChlZGl0cyB0aGUgZmlsZXMgaW4tcGxhY2UNCi0jIHRvIGNoYW5n ZSB0aGUgdmFsdWUgaW4gdGhlIGxhc3QgYXNzaWdubWVudCB0byB0aGUgdmFyaWFibGUpLiBJZiB0 aGUgdmFyaWFibGUNCi0jIGRvZXMgbm90IGFwcGVhciBpbiB0aGUgc291cmNlIGZpbGUsIGl0IGlz IGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIHByaW1hcnkNCi0jIHN5c3RlbSBjb25maWd1cmF0 aW9uIGZpbGUgYC9ldGMvcmMuY29uZicuDQotIw0KLSMgVGhpcyBmdW5jdGlvbiBpcyBhIHR3by1w YXJ0ZXIuIEJlbG93IGlzIHRoZSBhd2soMSkgcG9ydGlvbiBvZiB0aGUgZnVuY3Rpb24sDQotIyBh ZnRlcndhcmQgaXMgdGhlIHNoKDEpIGZ1bmN0aW9uIHdoaWNoIHV0aWxpemVzIHRoZSBiZWxvdyBh d2sgc2NyaXB0Lg0KLSMNCi1mX3N5c3JjX3NldF9hd2s9Jw0KLSMgVmFyaWFibGVzIHRoYXQgc2hv dWxkIGJlIGRlZmluZWQgb24gdGhlIGludm9jYXRpb24gbGluZToNCi0jIAktdiB2YXJuYW1lPSJ2 YXJuYW1lIg0KLSMgCS12IG5ld192YWx1ZT0ibmV3X3ZhbHVlIg0KLSMNCi1CRUdJTiB7DQotCXJl Z2V4ID0gIl5bWzpzcGFjZTpdXSoidmFybmFtZSI9Ig0KLQlmb3VuZCA9IHJldHZhbCA9IDANCi19 DQotew0KLQkjIElmIGFscmVhZHkgZm91bmQuLi4ganVzdCBzcGV3DQotCWlmICggZm91bmQgKSB7 IHByaW50OyBuZXh0IH0NCi0NCi0JIyBEb2VzIHRoaXMgbGluZSBtYXRjaCBhbiBhc3NpZ25tZW50 IHRvIG91ciB2YXJpYWJsZT8NCi0JaWYgKCAhIG1hdGNoKCQwLCByZWdleCkgKSB7IHByaW50OyBu ZXh0IH0NCi0NCi0JIyBTYXZlIGltcG9ydGFudCBtYXRjaCBpbmZvcm1hdGlvbg0KLQlmb3VuZCA9 IDENCi0JbWF0Y2hsZW4gPSBSU1RBUlQgKyBSTEVOR1RIIC0gMQ0KLQ0KLQkjIFN0b3JlIHRoZSB2 YWx1ZSB0ZXh0IGZvciBsYXRlciBtdW5naW5nDQotCXZhbHVlID0gc3Vic3RyKCQwLCBtYXRjaGxl biArIDEsIGxlbmd0aCgkMCkgLSBtYXRjaGxlbikNCi0NCi0JIyBTdG9yZSB0aGUgZmlyc3QgY2hh cmFjdGVyIG9mIHRoZSB2YWx1ZQ0KLQl0MSA9IHQyID0gc3Vic3RyKHZhbHVlLCAwLCAxKQ0KLQ0K LQkjIEFzc2lnbm1lbnQgdy8gYmFjay10aWNrcywgZXhwcmVzc2lvbiwgb3IgbWlzYy4NCi0JIyBX ZSBpZ25vcmUgdGhlc2Ugc2luY2Ugd2UgZGlkIG5vdCBnZW5lcmF0ZSB0aGVtDQotCSMNCi0JaWYg KCB0MSB+IC9bYCRcXF0vICkgeyByZXR2YWwgPSAxOyBwcmludDsgbmV4dCB9DQotDQotCSMgQXNz aWdubWVudCB3LyBzaW5nbGUtcXVvdGVkIHZhbHVlDQotCWVsc2UgaWYgKCB0MSA9PSAiJ1wnJyIg KSB7DQotCQlzdWIoL14nXCcnW14nXCcnXSovLCAiIiwgdmFsdWUpDQotCQlpZiAoIGxlbmd0aCh2 YWx1ZSkgPT0gMCApIHQyID0gIiINCi0JCXN1YigvXidcJycvLCAiIiwgdmFsdWUpDQotCX0NCi0N Ci0JIyBBc3NpZ25tZW50IHcvIGRvdWJsZS1xdW90ZWQgdmFsdWUNCi0JZWxzZSBpZiAoIHQxID09 ICJcIiIgKSB7DQotCQlzdWIoL14iKC4qXFxcXCsiKSpbXiJdKi8sICIiLCB2YWx1ZSkNCi0JCWlm ICggbGVuZ3RoKHZhbHVlKSA9PSAwICkgdDIgPSAiIg0KLQkJc3ViKC9eIi8sICIiLCB2YWx1ZSkN Ci0JfQ0KLQ0KLQkjIEFzc2lnbm1lbnQgdy8gbm9uLXF1b3RlZCB2YWx1ZQ0KLQllbHNlIGlmICgg dDEgfiAvW15bOnNwYWNlOl07XS8gKSB7DQotCQl0MSA9IHQyID0gIlwiIg0KLQkJc3ViKC9eW15b OnNwYWNlOl1dKi8sICIiLCB2YWx1ZSkNCi0JfQ0KLQ0KLQkjIE51bGwtYXNzaWdubWVudA0KLQll bHNlIGlmICggdDEgfiAvW1s6c3BhY2U6XTtdLyApIHsgdDEgPSB0MiA9ICJcIiIgfQ0KLQ0KLQlw cmludGYgIiVzJWMlcyVjJXNcbiIsIHN1YnN0cigkMCwgMCwgbWF0Y2hsZW4pLCBcDQotCQl0MSwg bmV3X3ZhbHVlLCB0MiwgdmFsdWUNCi19DQotRU5EIHsgZXhpdCByZXR2YWwgfQ0KLScNCi1mX3N5 c3JjX3NldCgpDQotew0KLQlsb2NhbCB2YXJuYW1lPSIkMSIgbmV3X3ZhbHVlPSIkMiINCi0NCi0J IyBDaGVjayBhcmd1bWVudHMNCi0JWyAiJHZhcm5hbWUiIF0gfHwgcmV0dXJuICRGQUlMVVJFDQot DQotCSMNCi0JIyBGaW5kIHdoaWNoIHJjLmNvbmYoNSkgZmlsZSBjb250YWlucyB0aGUgbGFzdC1h c3NpZ25tZW50DQotCSMNCi0JbG9jYWwgbm90X2ZvdW5kPQ0KLQlsb2NhbCBmaWxlPSIkKCBmX3N5 c3JjX2ZpbmQgIiR2YXJuYW1lIiApIg0KLQlpZiBbICIkZmlsZSIgPSAiJFJDX0RFRkFVTFRTIiAt byAhICIkZmlsZSIgXTsgdGhlbg0KLQkJIw0KLQkJIyBXZSBlaXRoZXIgZ290IGEgbnVsbCByZXNw b25zZSAobm90IGZvdW5kKSBvciB0aGUgdmFyaWFibGUNCi0JCSMgd2FzIG9ubHkgZm91bmQgaW4g dGhlIHJjLmNvbmYoNSkgZGVmYXVsdHMuIEluIGVpdGhlciBjYXNlLA0KLQkJIyBsZXQncyBpbnN0 ZWFkIG1vZGlmeSB0aGUgZmlyc3QgZmlsZSBmcm9tICRyY19jb25mX2ZpbGVzLg0KLQkJIw0KLQ0K LQkJbm90X2ZvdW5kPTENCi0NCi0JCSMNCi0JCSMgSWYgUkNfQ09ORlMgaXMgZGVmaW5lZCwgdXNl ICRSQ19DT05GUw0KLQkJIyByYXRoZXIgdGhhbiAkcmNfY29uZl9maWxlcy4NCi0JCSMNCi0JCWlm IFsgIiR7UkNfQ09ORlMrc2V0fSIgXTsgdGhlbg0KLQkJCWZpbGU9IiR7UkNfQ09ORlMlJVskSUZT XSp9Ig0KLQkJZWxzZQ0KLQkJCWZpbGU9JCggZl9zeXNyY19nZXQgJ3JjX2NvbmZfZmlsZXMlJVsk SUZTXSonICkNCi0JCWZpDQotCWZpDQotDQotCSMNCi0JIyBJZiBub3QgZm91bmQsIGFwcGVuZCBu ZXcgdmFsdWUgdG8gbGFzdCBmaWxlIGFuZCByZXR1cm4uDQotCSMNCi0JaWYgWyAiJG5vdF9mb3Vu ZCIgXTsgdGhlbg0KLQkJZWNobyAiJHZhcm5hbWU9XCIkbmV3X3ZhbHVlXCIiID4+ICIkZmlsZSIN Ci0JCXJldHVybiAkPw0KLQlmaQ0KLQ0KLQkjDQotCSMgUGVyZm9ybSBzYW5pdHkgY2hlY2tzLg0K LQkjDQotCWlmIFsgISAtdyAiJGZpbGUiIF07IHRoZW4NCi0JCWZfZXJyICIkbXNnX2Nhbm5vdF9j cmVhdGVfcGVybWlzc2lvbl9kZW5pZWRcbiIgXA0KLQkJICAgICAgIiRwZ20iICIkZmlsZSINCi0J CXJldHVybiAkRkFJTFVSRQ0KLQlmaQ0KLQ0KLQkjDQotCSMgQ3JlYXRlIGEgbmV3IHRlbXBvcmFy eSBmaWxlIHRvIHdyaXRlIHRvLg0KLQkjDQotCWxvY2FsIHRtcGZpbGU9IiQoIG1rdGVtcCAtdCAi JHBnbSIgKSINCi0JWyAiJHRtcGZpbGUiIF0gfHwgcmV0dXJuICRGQUlMVVJFDQotDQotCSMNCi0J IyBGaXh1cCBwZXJtaXNzaW9ucyAoZWxzZSB3ZSdyZSBpbiBmb3IgYSBzdXJwcmlzZSwgYXMgbWt0 ZW1wKDEpIGNyZWF0ZXMNCi0JIyB0aGUgdGVtcG9yYXJ5IGZpbGUgd2l0aCAwNjAwIHBlcm1pc3Np b25zLCBhbmQgaWYgd2Ugc2ltcGx5IG12KDEpIHRoZQ0KLQkjIHRlbXBvcmFyeSBmaWxlIG92ZXIg dGhlIGRlc3RpbmF0aW9uLCB0aGUgZGVzdGluYXRpb24gd2lsbCBpbmhlcml0IHRoZQ0KLQkjIHBl cm1pc3Npb25zIGZyb20gdGhlIHRlbXBvcmFyeSBmaWxlKS4NCi0JIw0KLQlsb2NhbCBtb2RlDQot CW1vZGU9JCggc3RhdCAtZiAnJSNMcCcgIiRmaWxlIiAyPiAvZGV2L251bGwgKQ0KLQlmX3F1aWV0 bHkgY2htb2QgIiR7bW9kZTotMDY0NH0iICIkdG1wZmlsZSINCi0NCi0JIw0KLQkjIEZpeHVwIG93 bmVyc2hpcC4gVGhlIGRlc3RpbmF0aW9uIGZpbGUgX2lzXyB3cml0YWJsZSAod2UgdGVzdGVkDQot CSMgZWFybGllciBhYm92ZSkuIEhvd2V2ZXIsIHRoaXMgd2lsbCBmYWlsIGlmIHdlIGRvbid0IGhh dmUgc3VmZmljaWVudA0KLQkjIHBlcm1pc3Npb25zIChzbyB3ZSB0aHJvdyBzdGRlcnIgaW50byB0 aGUgYml0LWJ1Y2tldCkuDQotCSMNCi0JbG9jYWwgb3duZXINCi0Jb3duZXI9JCggc3RhdCAtZiAn JXU6JWcnICIkZmlsZSIgMj4gL2Rldi9udWxsICkNCi0JZl9xdWlldGx5IGNob3duICIke293bmVy Oi1yb290OndoZWVsfSIgIiR0bXBmaWxlIg0KLQ0KLQkjDQotCSMgT3BlcmF0ZSBvbiB0aGUgbWF0 Y2hpbmcgZmlsZSwgcmVwbGFjaW5nIG9ubHkgdGhlIGxhc3Qgb2NjdXJyZW5jZS4NCi0JIw0KLQls b2NhbCBuZXdfY29udGVudHMgcmV0dmFsDQotCW5ld19jb250ZW50cz0kKCB0YWlsIC1yICRmaWxl IDI+IC9kZXYvbnVsbCApDQotCW5ld19jb250ZW50cz0kKCBlY2hvICIkbmV3X2NvbnRlbnRzIiB8 IGF3ayAtdiB2YXJuYW1lPSIkdmFybmFtZSIgXA0KLQkJLXYgbmV3X3ZhbHVlPSIkbmV3X3ZhbHVl IiAiJGZfc3lzcmNfc2V0X2F3ayIgKQ0KLQlyZXR2YWw9JD8NCi0NCi0JIw0KLQkjIFdyaXRlIHRo ZSB0ZW1wb3JhcnkgZmlsZSBjb250ZW50cy4NCi0JIw0KLQllY2hvICIkbmV3X2NvbnRlbnRzIiB8 IHRhaWwgLXIgPiAiJHRtcGZpbGUiIHx8IHJldHVybiAkRkFJTFVSRQ0KLQlpZiBbICRyZXR2YWwg LW5lICRTVUNDRVNTIF07IHRoZW4NCi0JCWVjaG8gIiR2YXJuYW1lPVwiJG5ld192YWx1ZVwiIiA+ PiAiJHRtcGZpbGUiDQotCWZpDQotDQotCSMNCi0JIyBUYWludC1jaGVjayBvdXIgcmVzdWx0cy4N Ci0JIw0KLQlpZiAhIC9iaW4vc2ggLW4gIiR0bXBmaWxlIjsgdGhlbg0KLQkJZl9lcnIgIiRtc2df cHJldmlvdXNfc3ludGF4X2Vycm9yc1xuIiAiJHBnbSIgIiRmaWxlIg0KLQkJcm0gLWYgIiR0bXBm aWxlIg0KLQkJcmV0dXJuICRGQUlMVVJFDQotCWZpDQotDQotCSMNCi0JIyBGaW5hbGx5LCBtb3Zl IHRoZSB0ZW1wb3JhcnkgZmlsZSBpbnRvIHBsYWNlLg0KLQkjDQotCW12ICIkdG1wZmlsZSIgIiRm aWxlIg0KLX0NCi0NCi0jIGZfc3lzcmNfZGVsZXRlICR2YXJuYW1lDQotIw0KLSMgUmVtb3ZlIGEg c2V0dGluZyBmcm9tIHRoZSBzeXN0ZW0gY29uZmlndXJhdGlvbiBmaWxlcyAoZWRpdHMgZmlsZXMg aW4tcGxhY2UpLg0KLSMgRGVsZXRlcyBhbGwgYXNzaWdubWVudHMgdG8gdGhlIGdpdmVuIHZhcmlh YmxlIGluIGFsbCBjb25maWcgZmlsZXMuIElmIHRoZQ0KLSMgYC1mIGZpbGUnIG9wdGlvbiBpcyBw YXNzZWQsIHRoZSByZW1vdmFsIGlzIHJlc3RyaWN0ZWQgdG8gb25seSB0aG9zZSBmaWxlcw0KLSMg c3BlY2lmaWVkLCBvdGhlcndpc2UgdGhlIHN5c3RlbSBjb2xsZWN0aW9uIG9mIHJjX2NvbmZfZmls ZXMgaXMgdXNlZC4NCi0jDQotIyBUaGlzIGZ1bmN0aW9uIGlzIGEgdHdvLXBhcnRlci4gQmVsb3cg aXMgdGhlIGF3aygxKSBwb3J0aW9uIG9mIHRoZSBmdW5jdGlvbiwNCi0jIGFmdGVyd2FyZCBpcyB0 aGUgc2goMSkgZnVuY3Rpb24gd2hpY2ggdXRpbGl6ZXMgdGhlIGJlbG93IGF3ayBzY3JpcHQuDQot Iw0KLWZfc3lzcmNfZGVsZXRlX2F3az0nDQotIyBWYXJpYWJsZXMgdGhhdCBzaG91bGQgYmUgZGVm aW5lZCBvbiB0aGUgaW52b2NhdGlvbiBsaW5lOg0KLSMgCS12IHZhcm5hbWU9InZhcm5hbWUiDQot Iw0KLUJFR0lOIHsNCi0JcmVnZXggPSAiXltbOnNwYWNlOl1dKiJ2YXJuYW1lIj0iDQotCWZvdW5k ID0gMA0KLX0NCi17DQotCWlmICggJDAgfiByZWdleCApDQotCQlmb3VuZCA9IDENCi0JZWxzZQ0K LQkJcHJpbnQNCi19DQotRU5EIHsgZXhpdCAhIGZvdW5kIH0NCi0nDQotZl9zeXNyY19kZWxldGUo KQ0KLXsNCi0JbG9jYWwgdmFybmFtZT0iJDEiDQotCWxvY2FsIGZpbGUNCi0NCi0JIyBDaGVjayBh cmd1bWVudHMNCi0JWyAiJHZhcm5hbWUiIF0gfHwgcmV0dXJuICRGQUlMVVJFDQotDQotCSMNCi0J IyBPcGVyYXRlIG9uIGVhY2ggb2YgdGhlIHNwZWNpZmllZCBmaWxlcw0KLQkjDQotCWZvciBmaWxl IGluICR7UkNfQ09ORlMtJCggZl9zeXNyY19nZXQgcmNfY29uZl9maWxlcyApfTsgZG8NCi0JCVsg LWUgIiRmaWxlIiBdIHx8IGNvbnRpbnVlDQotDQotCQkjDQotCQkjIENyZWF0ZSBhIG5ldyB0ZW1w b3JhcnkgZmlsZSB0byB3cml0ZSB0by4NCi0JCSMNCi0JCWxvY2FsIHRtcGZpbGU9IiQoIG1rdGVt cCAtdCAiJHBnbSIgKSINCi0JCVsgIiR0bXBmaWxlIiBdIHx8IHJldHVybiAkRkFJTFVSRQ0KLQ0K LQkJIw0KLQkJIyBGaXh1cCBwZXJtaXNzaW9ucyBhbmQgb3duZXJzaGlwIChta3RlbXAoMSkgZGVm YXVsdHMgdG8gMDYwMA0KLQkJIyBwZXJtaXNzaW9ucykgdG8gaW5zdGVhZCBtYXRjaCB0aGUgZGVz dGluYXRpb24gZmlsZS4NCi0JCSMNCi0JCWxvY2FsIG1vZGUgb3duZXINCi0JCW1vZGU9JCggc3Rh dCAtZiAnJSNMcCcgIiRmaWxlIiAyPiAvZGV2L251bGwgKQ0KLQkJb3duZXI9JCggc3RhdCAtZiAn JXU6JWcnICIkZmlsZSIgMj4gL2Rldi9udWxsICkNCi0JCWZfcXVpZXRseSBjaG1vZCAiJHttb2Rl Oi0wNjQ0fSIgIiR0bXBmaWxlIg0KLQkJZl9xdWlldGx5IGNob3duICIke293bmVyOi1yb290Ondo ZWVsfSIgIiR0bXBmaWxlIg0KLQ0KLQkJIw0KLQkJIyBPcGVyYXRlIG9uIHRoZSBmaWxlLCByZW1v dmluZyBhbGwgb2NjdXJyZW5jZXMsIHNhdmluZyB0aGUNCi0JCSMgb3V0cHV0IGluIG91ciB0ZW1w b3JhcnkgZmlsZS4NCi0JCSMNCi0JCWF3ayAtdiB2YXJuYW1lPSIkdmFybmFtZSIgIiRmX3N5c3Jj X2RlbGV0ZV9hd2siICIkZmlsZSIgXA0KLQkJCT4gIiR0bXBmaWxlIg0KLQkJaWYgWyAkPyAtbmUg JFNVQ0NFU1MgXTsgdGhlbg0KLQkJCSMgVGhlIGZpbGUgZGlkbid0IGNvbnRhaW4gYW55IGFzc2ln bm1lbnRzDQotCQkJcm0gLWYgIiR0bXBmaWxlIg0KLQkJCWNvbnRpbnVlDQotCQlmaQ0KLQ0KLQkJ Iw0KLQkJIyBUYWludC1jaGVjayBvdXIgcmVzdWx0cy4NCi0JCSMNCi0JCWlmICEgL2Jpbi9zaCAt biAiJHRtcGZpbGUiOyB0aGVuDQotCQkJZl9lcnIgIiRtc2dfcHJldmlvdXNfc3ludGF4X2Vycm9y c1xuIiBcDQotCQkJICAgICAgIiRwZ20iICIkZmlsZSINCi0JCQlybSAtZiAiJHRtcGZpbGUiDQot CQkJcmV0dXJuICRGQUlMVVJFDQotCQlmaQ0KLQ0KLQkJIw0KLQkJIyBQZXJmb3JtIHNhbml0eSBj aGVja3MNCi0JCSMNCi0JCWlmIFsgISAtdyAiJGZpbGUiIF07IHRoZW4NCi0JCQlmX2VyciAiJG1z Z19wZXJtaXNzaW9uX2RlbmllZFxuIiAiJHBnbSIgIiRmaWxlIg0KLQkJCXJtIC1mICIkdG1wZmls ZSINCi0JCQlyZXR1cm4gJEZBSUxVUkUNCi0JCWZpDQotDQotCQkjDQotCQkjIEZpbmFsbHksIG1v dmUgdGhlIHRlbXBvcmFyeSBmaWxlIGludG8gcGxhY2UuDQotCQkjDQotCQltdiAiJHRtcGZpbGUi ICIkZmlsZSINCi0JZG9uZQ0KLX0NCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTUFJTg0KLQ0KLWZfZHByaW50ZiAiJXM6IFN1 Y2Nlc3NmdWxseSBsb2FkZWQuIiBzeXNyYy5zdWJyDQotDQotZmkgIyAhICRfU1lTUkNfU1VCUg0K SW5kZXg6IHVzci5zYmluL2JzZGNvbmZpZy9zdGFydHVwL21pc2MNCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSB1 c3Iuc2Jpbi9ic2Rjb25maWcvc3RhcnR1cC9taXNjCShyZXZpc2lvbiAyNTIxNzgpDQorKysgdXNy LnNiaW4vYnNkY29uZmlnL3N0YXJ0dXAvbWlzYwkod29ya2luZyBjb3B5KQ0KQEAgLTMzLDcgKzMz LDcgQEAgQlNEQ0ZHX1NIQVJFPSIvdXNyL3NoYXJlL2JzZGNvbmZpZyINCiBmX2RwcmludGYgIiVz OiBsb2FkaW5nIGluY2x1ZGVzLi4uIiAiJDAiDQogZl9pbmNsdWRlICRCU0RDRkdfU0hBUkUvZGlh bG9nLnN1YnINCiBmX2luY2x1ZGUgJEJTRENGR19TSEFSRS9tdXN0YmVyb290LnN1YnINCi1mX2lu Y2x1ZGUgJEJTRENGR19TSEFSRS9zeXNyYy5zdWJyDQorZl9pbmNsdWRlIC9ldGMvc3lzcmMuc3Vi cg0KIA0KIEJTRENGR19MSUJFPSIvdXNyL2xpYmV4ZWMvYnNkY29uZmlnIiBBUFBfRElSPSIxNDAu c3RhcnR1cCINCiBmX2luY2x1ZGVfbGFuZyAkQlNEQ0ZHX0xJQkUvJEFQUF9ESVIvaW5jbHVkZS9t ZXNzYWdlcy5zdWJyDQpJbmRleDogdXNyLnNiaW4vYnNkY29uZmlnL3N0YXJ0dXAvcmNjb25mDQo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQotLS0gdXNyLnNiaW4vYnNkY29uZmlnL3N0YXJ0dXAvcmNjb25mCShyZXZpc2lv biAyNTIxNzgpDQorKysgdXNyLnNiaW4vYnNkY29uZmlnL3N0YXJ0dXAvcmNjb25mCSh3b3JraW5n IGNvcHkpDQpAQCAtMzMsNyArMzMsNyBAQCBCU0RDRkdfU0hBUkU9Ii91c3Ivc2hhcmUvYnNkY29u ZmlnIg0KIGZfZHByaW50ZiAiJXM6IGxvYWRpbmcgaW5jbHVkZXMuLi4iICIkMCINCiBmX2luY2x1 ZGUgJEJTRENGR19TSEFSRS9kaWFsb2cuc3Vicg0KIGZfaW5jbHVkZSAkQlNEQ0ZHX1NIQVJFL211 c3RiZXJvb3Quc3Vicg0KLWZfaW5jbHVkZSAkQlNEQ0ZHX1NIQVJFL3N5c3JjLnN1YnINCitmX2lu Y2x1ZGUgL2V0Yy9zeXNyYy5zdWJyDQogZl9pbmNsdWRlICRCU0RDRkdfU0hBUkUvc3RhcnR1cC9y Y2NvbmYuc3Vicg0KIA0KIEJTRENGR19MSUJFPSIvdXNyL2xpYmV4ZWMvYnNkY29uZmlnIiBBUFBf RElSPSIxNDAuc3RhcnR1cCINCkluZGV4OiB1c3Iuc2Jpbi9ic2Rjb25maWcvc3RhcnR1cC9yY2Rl bGV0ZQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQ0KLS0tIHVzci5zYmluL2JzZGNvbmZpZy9zdGFydHVwL3JjZGVsZXRl CShyZXZpc2lvbiAyNTIxNzgpDQorKysgdXNyLnNiaW4vYnNkY29uZmlnL3N0YXJ0dXAvcmNkZWxl dGUJKHdvcmtpbmcgY29weSkNCkBAIC0zMyw3ICszMyw3IEBAIEJTRENGR19TSEFSRT0iL3Vzci9z aGFyZS9ic2Rjb25maWciDQogZl9kcHJpbnRmICIlczogbG9hZGluZyBpbmNsdWRlcy4uLiIgIiQw Ig0KIGZfaW5jbHVkZSAkQlNEQ0ZHX1NIQVJFL2RpYWxvZy5zdWJyDQogZl9pbmNsdWRlICRCU0RD RkdfU0hBUkUvbXVzdGJlcm9vdC5zdWJyDQotZl9pbmNsdWRlICRCU0RDRkdfU0hBUkUvc3lzcmMu c3Vicg0KK2ZfaW5jbHVkZSAvZXRjL3N5c3JjLnN1YnINCiBmX2luY2x1ZGUgJEJTRENGR19TSEFS RS9zdGFydHVwL3JjY29uZi5zdWJyDQogDQogQlNEQ0ZHX0xJQkU9Ii91c3IvbGliZXhlYy9ic2Rj b25maWciIEFQUF9ESVI9IjE0MC5zdGFydHVwIg0KSW5kZXg6IHVzci5zYmluL2JzZGNvbmZpZy9z dGFydHVwL3JjdmFyDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gdXNyLnNiaW4vYnNkY29uZmlnL3N0YXJ0dXAv cmN2YXIJKHJldmlzaW9uIDI1MjE3OCkNCisrKyB1c3Iuc2Jpbi9ic2Rjb25maWcvc3RhcnR1cC9y Y3Zhcgkod29ya2luZyBjb3B5KQ0KQEAgLTMzLDcgKzMzLDcgQEAgQlNEQ0ZHX1NIQVJFPSIvdXNy L3NoYXJlL2JzZGNvbmZpZyINCiBmX2RwcmludGYgIiVzOiBsb2FkaW5nIGluY2x1ZGVzLi4uIiAi JDAiDQogZl9pbmNsdWRlICRCU0RDRkdfU0hBUkUvZGlhbG9nLnN1YnINCiBmX2luY2x1ZGUgJEJT RENGR19TSEFSRS9tdXN0YmVyb290LnN1YnINCi1mX2luY2x1ZGUgJEJTRENGR19TSEFSRS9zeXNy Yy5zdWJyDQorZl9pbmNsdWRlIC9ldGMvc3lzcmMuc3Vicg0KIGZfaW5jbHVkZSAkQlNEQ0ZHX1NI QVJFL3N0YXJ0dXAvcmN2YXIuc3Vicg0KIA0KIEJTRENGR19MSUJFPSIvdXNyL2xpYmV4ZWMvYnNk Y29uZmlnIiBBUFBfRElSPSIxNDAuc3RhcnR1cCINCkluZGV4OiB1c3Iuc2Jpbi9ic2Rjb25maWcv c3RhcnR1cC9zaGFyZS9yY2NvbmYuc3Vicg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIHVzci5zYmluL2JzZGNv bmZpZy9zdGFydHVwL3NoYXJlL3JjY29uZi5zdWJyCShyZXZpc2lvbiAyNTI3OTUpDQorKysgdXNy LnNiaW4vYnNkY29uZmlnL3N0YXJ0dXAvc2hhcmUvcmNjb25mLnN1YnIJKHdvcmtpbmcgY29weSkN CkBAIC0zMSw3ICszMSw3IEBAIGlmIFsgISAiJF9TVEFSVFVQX1JDQ09ORl9TVUJSIiBdOyB0aGVu IF9TVEFSVFVQX1JDDQogQlNEQ0ZHX1NIQVJFPSIvdXNyL3NoYXJlL2JzZGNvbmZpZyINCiAuICRC U0RDRkdfU0hBUkUvY29tbW9uLnN1YnIgfHwgZXhpdCAxDQogZl9kcHJpbnRmICIlczogbG9hZGlu ZyBpbmNsdWRlcy4uLiIgc3RhcnR1cC9yY2NvbmYuc3Vicg0KLWZfaW5jbHVkZSAkQlNEQ0ZHX1NI QVJFL3N5c3JjLnN1YnINCitmX2luY2x1ZGUgL2V0Yy9zeXNyYy5zdWJyDQogDQogQlNEQ0ZHX0xJ QkU9Ii91c3IvbGliZXhlYy9ic2Rjb25maWciIEFQUF9ESVI9IjE0MC5zdGFydHVwIg0KIGZfaW5j bHVkZV9sYW5nICRCU0RDRkdfTElCRS8kQVBQX0RJUi9pbmNsdWRlL21lc3NhZ2VzLnN1YnINCklu ZGV4OiB1c3Iuc2Jpbi9ic2Rjb25maWcvc3RhcnR1cC9zaGFyZS9yY2VkaXQuc3Vicg0KPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KLS0tIHVzci5zYmluL2JzZGNvbmZpZy9zdGFydHVwL3NoYXJlL3JjZWRpdC5zdWJyCShy ZXZpc2lvbiAyNTEzNTEpDQorKysgdXNyLnNiaW4vYnNkY29uZmlnL3N0YXJ0dXAvc2hhcmUvcmNl ZGl0LnN1YnIJKHdvcmtpbmcgY29weSkNCkBAIC0zMiw3ICszMiw3IEBAIEJTRENGR19TSEFSRT0i L3Vzci9zaGFyZS9ic2Rjb25maWciDQogLiAkQlNEQ0ZHX1NIQVJFL2NvbW1vbi5zdWJyIHx8IGV4 aXQgMQ0KIGZfZHByaW50ZiAiJXM6IGxvYWRpbmcgaW5jbHVkZXMuLi4iIHN0YXJ0dXAvcmNlZGl0 LnN1YnINCiBmX2luY2x1ZGUgJEJTRENGR19TSEFSRS9kaWFsb2cuc3Vicg0KLWZfaW5jbHVkZSAk QlNEQ0ZHX1NIQVJFL3N5c3JjLnN1YnINCitmX2luY2x1ZGUgL2V0Yy9zeXNyYy5zdWJyDQogDQog QlNEQ0ZHX0xJQkU9Ii91c3IvbGliZXhlYy9ic2Rjb25maWciIEFQUF9ESVI9IjE0MC5zdGFydHVw Ig0KIGZfaW5jbHVkZV9sYW5nICRCU0RDRkdfTElCRS8kQVBQX0RJUi9pbmNsdWRlL21lc3NhZ2Vz LnN1YnINCkluZGV4OiB1c3Iuc2Jpbi9ic2Rjb25maWcvc3RhcnR1cC9zaGFyZS9yY3Zhci5zdWJy DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQotLS0gdXNyLnNiaW4vYnNkY29uZmlnL3N0YXJ0dXAvc2hhcmUvcmN2YXIu c3VicgkocmV2aXNpb24gMjUxMzUxKQ0KKysrIHVzci5zYmluL2JzZGNvbmZpZy9zdGFydHVwL3No YXJlL3JjdmFyLnN1YnIJKHdvcmtpbmcgY29weSkNCkBAIC0zMSw3ICszMSw3IEBAIGlmIFsgISAi JF9TVEFSVFVQX1JDVkFSX1NVQlIiIF07IHRoZW4gX1NUQVJUVVBfUkNWDQogQlNEQ0ZHX1NIQVJF PSIvdXNyL3NoYXJlL2JzZGNvbmZpZyINCiAuICRCU0RDRkdfU0hBUkUvY29tbW9uLnN1YnIgfHwg ZXhpdCAxDQogZl9kcHJpbnRmICIlczogbG9hZGluZyBpbmNsdWRlcy4uLiIgc3RhcnR1cC9yY3Zh ci5zdWJyDQotZl9pbmNsdWRlICRCU0RDRkdfU0hBUkUvc3lzcmMuc3Vicg0KK2ZfaW5jbHVkZSAv ZXRjL3N5c3JjLnN1YnINCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgQ09ORklHVVJBVElPTg0KIA0KSW5kZXg6IHVzci5zYmlu L3N5c3JjL3N5c3JjDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gdXNyLnNiaW4vc3lzcmMvc3lzcmMJKHJldmlz aW9uIDI1Mjc5NykNCisrKyB1c3Iuc2Jpbi9zeXNyYy9zeXNyYwkod29ya2luZyBjb3B5KQ0KQEAg LTMwLDcgKzMwLDcgQEANCiANCiBCU0RDRkdfU0hBUkU9Ii91c3Ivc2hhcmUvYnNkY29uZmlnIg0K IFsgIiRfQ09NTU9OX1NVQlIiIF0gfHwgLiAkQlNEQ0ZHX1NIQVJFL2NvbW1vbi5zdWJyIHx8IGV4 aXQgMQ0KLVsgIiRfU1lTUkNfU1VCUiIgIF0gfHwgZl9pbmNsdWRlICRCU0RDRkdfU0hBUkUvc3lz cmMuc3Vicg0KK1sgIiRfU1lTUkNfU1VCUiIgIF0gfHwgZl9pbmNsdWRlIC9ldGMvc3lzcmMuc3Vi cg0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyBHTE9CQUxTDQogDQpAQCAtMTgwLDcgKzE4MCw3IEBAIGphaWxfZGVwZW5kKCkN CiAJIyBQcmludCBpbmNsdWRlIGRlcGVuZGVuY2llcw0KIAkjDQogCWNhdCAkQlNEQ0ZHX1NIQVJF L2NvbW1vbi5zdWJyDQotCWNhdCAkQlNEQ0ZHX1NIQVJFL3N5c3JjLnN1YnINCisJY2F0IC9ldGMv c3lzcmMuc3Vicg0KIH0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTUFJTiBTT1VSQ0UNCg== --_004_13CA24D6AB415D428143D44749F57D7201FB2E7Fltcfiswmsgmb21_--