This patch will upgrade Sudo version 1.8.1 patchlevel 1 to Sudo version 1.8.1 patchlevel 2. To apply: $ cd sudo-1.8.1p1 $ patch -p1 < sudo-1.8.1p2.patch diff -urNa sudo-1.8.1p1/ChangeLog sudo-1.8.1p2/ChangeLog --- sudo-1.8.1p1/ChangeLog Fri Apr 15 21:50:56 2011 +++ sudo-1.8.1p2/ChangeLog Mon May 16 15:01:13 2011 @@ -1,9 +1,65 @@ +2011-05-04 Todd C. Miller + + * Don't let the fnmatch/glob macros expand the function prototype. + [d449e9a8f447] <1.8> + +2011-05-03 Todd C. Miller + + * Resolve namespace collisions on HP-UX ia64 and possibly others by + adding a rpl_ prefix to our fnmatch and glob replacements and + #defining rpl_foo to foo in the header files. + [d23889375b21] <1.8> + +2011-04-29 Todd C. Miller + + * Split ALL, ROLE and TYPE into their own actions. Since you can only + have #ifdefs inside of braces, ROLE and TYPE use a naughty goto in + the non-SELinux case. This is safe because the actions are in one + big switch() statement. + [0bd9b7e37ab1] <1.8> + + * Fix regexp for matching a CIDR-style IPv4 netmask. From Marc Espie. + [8dec97b359e0] <1.8> + + * askpass moved from sudoers to sudo.conf in sudo 1.8.0 + [1001d87d82ed] <1.8> + + * Remove obsolete warning about runas_default and ordering. Move + syslog facility and priority lists into the section where the + relevant options are described. + [1286b9624021] <1.8> + +2011-04-26 Todd C. Miller + + * Fix SIA support; we no longer have access to the real argc and argv + so allocate space for a fake one and use the argv passed to the + plugin with "sudo" for argv[0]. + [7c11eeffb91c] <1.8> + + * Remove useless realloc when trying to get the buffer size right. + [58128e7f4e28] <1.8> + + * Be explicit when setting euid to 0 before call to setreuid(0, 0) + [95769a564ab8] <1.8> + +2011-04-18 Todd C. Miller + + * NEWS: + sudo 1.8.1p1 updates + [de3d688b5bb1] <1.8> + + * configure, configure.in: + Need to do checks for krb5_verify_user, krb5_init_secure_context and + krb5_get_init_creds_opt_alloc regardless of whether or + notkrb5-config is present. + [456c4a9cd5d6] <1.8> + 2011-04-15 Todd C. Miller * Work around weird AIX saved uid semantics on setuid() and setreuid(). On AIX, setuid() will only set the saved uid if the euid is already 0. - [5d0a69e9d181] [tip] <1.8> + [5d0a69e9d181] <1.8> 2011-04-14 Todd C. Miller diff -urNa sudo-1.8.1p1/NEWS sudo-1.8.1p2/NEWS --- sudo-1.8.1p1/NEWS Fri Apr 15 21:50:08 2011 +++ sudo-1.8.1p2/NEWS Mon May 16 14:59:49 2011 @@ -1,3 +1,15 @@ +What's new in Sudo 1.8.1p2? + + * Two-character CIDR-style IPv4 netmasks are now matched correctly + in the sudoers file. + + * A build error with MIT Kerberos V has been resolved. + + * A crash on HP-UX in the sudoers plugin when wildcards are + present in the sudoers file has been resolved. + + * Sudo now works correctly on Tru64 Unix again. + What's new in Sudo 1.8.1p1? * Fixed a problem on AIX where sudo was unable to set the final diff -urNa sudo-1.8.1p1/compat/fnmatch.c sudo-1.8.1p2/compat/fnmatch.c --- sudo-1.8.1p1/compat/fnmatch.c Mon Jan 24 14:54:56 2011 +++ sudo-1.8.1p2/compat/fnmatch.c Tue May 3 13:46:35 2011 @@ -68,7 +68,7 @@ static int classmatch(const char *, int, int, const char **); int -fnmatch(const char *pattern, const char *string, int flags) +rpl_fnmatch(const char *pattern, const char *string, int flags) { const char *stringstart; char *newp; diff -urNa sudo-1.8.1p1/compat/fnmatch.h sudo-1.8.1p2/compat/fnmatch.h --- sudo-1.8.1p1/compat/fnmatch.h Tue May 25 14:46:57 2010 +++ sudo-1.8.1p2/compat/fnmatch.h Wed May 4 11:21:27 2011 @@ -41,6 +41,8 @@ #define FNM_LEADING_DIR 0x08 /* Ignore / after Imatch. */ #define FNM_CASEFOLD 0x10 /* Case insensitive search. */ -int fnmatch(const char *, const char *, int); +int rpl_fnmatch(const char *, const char *, int); + +#define fnmatch(_a, _b, _c) rpl_fnmatch((_a), (_b), (_c)) #endif /* !_FNMATCH_H_ */ diff -urNa sudo-1.8.1p1/compat/glob.c sudo-1.8.1p2/compat/glob.c --- sudo-1.8.1p1/compat/glob.c Mon Feb 7 06:46:28 2011 +++ sudo-1.8.1p2/compat/glob.c Tue May 3 13:46:35 2011 @@ -174,7 +174,7 @@ #endif int -glob(const char *pattern, int flags, int (*errfunc)(const char *, int), +rpl_glob(const char *pattern, int flags, int (*errfunc)(const char *, int), glob_t *pglob) { const unsigned char *patnext; @@ -810,7 +810,7 @@ /* Free allocated data belonging to a glob_t structure. */ void -globfree(glob_t *pglob) +rpl_globfree(glob_t *pglob) { int i; char **pp; diff -urNa sudo-1.8.1p1/compat/glob.h sudo-1.8.1p2/compat/glob.h --- sudo-1.8.1p1/compat/glob.h Tue May 25 14:46:57 2010 +++ sudo-1.8.1p2/compat/glob.h Wed May 4 11:21:27 2011 @@ -69,7 +69,10 @@ #define GLOB_NOSYS (-4) /* Function not supported. */ #define GLOB_ABEND GLOB_ABORTED -int glob(const char *, int, int (*)(const char *, int), glob_t *); -void globfree(glob_t *); +int rpl_glob(const char *, int, int (*)(const char *, int), glob_t *); +void rpl_globfree(glob_t *); + +#define glob(_a, _b, _c, _d) rpl_glob((_a), (_b), (_c), (_d)) +#define globfree(_a) rpl_globfree((_a)) #endif /* !_GLOB_H_ */ diff -urNa sudo-1.8.1p1/configure sudo-1.8.1p2/configure --- sudo-1.8.1p1/configure Fri Apr 15 14:41:59 2011 +++ sudo-1.8.1p2/configure Mon May 16 13:13:29 2011 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.65 for sudo 1.8.1p1. +# Generated by GNU Autoconf 2.65 for sudo 1.8.1p2. # # Report bugs to . # @@ -562,8 +562,8 @@ # Identity of this package. PACKAGE_NAME='sudo' PACKAGE_TARNAME='sudo' -PACKAGE_VERSION='1.8.1p1' -PACKAGE_STRING='sudo 1.8.1p1' +PACKAGE_VERSION='1.8.1p2' +PACKAGE_STRING='sudo 1.8.1p2' PACKAGE_BUGREPORT='http://www.sudo.ws/bugs/' PACKAGE_URL='' @@ -1429,7 +1429,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures sudo 1.8.1p1 to adapt to many kinds of systems. +\`configure' configures sudo 1.8.1p2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1494,7 +1494,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of sudo 1.8.1p1:";; + short | recursive ) echo "Configuration of sudo 1.8.1p2:";; esac cat <<\_ACEOF @@ -1706,7 +1706,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -sudo configure 1.8.1p1 +sudo configure 1.8.1p2 generated by GNU Autoconf 2.65 Copyright (C) 2009 Free Software Foundation, Inc. @@ -2405,7 +2405,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by sudo $as_me 1.8.1p1, which was +It was created by sudo $as_me 1.8.1p2, which was generated by GNU Autoconf 2.65. Invocation command line was $ $0 $@ @@ -17587,17 +17587,15 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - fi -fi -if test ${with_kerb5-'no'} != "no" -a -z "$KRB5CONFIG"; then - $as_echo "#define HAVE_KERB5 1" >>confdefs.h + else + $as_echo "#define HAVE_KERB5 1" >>confdefs.h - if test "$with_kerb5" = "yes"; then - found=no - O_CPPFLAGS="$CPPFLAGS" - for dir in "" "kerberosV/" "krb5/" "kerberos5/" "kerberosv5/"; do - CPPFLAGS="$O_CPPFLAGS -I/usr/include/${dir}" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + if test "$with_kerb5" = "yes"; then + found=no + O_CPPFLAGS="$CPPFLAGS" + for dir in "" "kerberosV/" "krb5/" "kerberos5/" "kerberosv5/"; do + CPPFLAGS="$O_CPPFLAGS -I/usr/include/${dir}" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF @@ -17605,13 +17603,13 @@ found=yes; break fi rm -f conftest.err conftest.$ac_ext - done - if test X"$found" = X"no"; then - CPPFLAGS="$O_CPPFLAGS" - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to locate Kerberos V include files, you will have to edit the Makefile and add -I/path/to/krb/includes to CPPFLAGS" >&5 + done + if test X"$found" = X"no"; then + CPPFLAGS="$O_CPPFLAGS" + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to locate Kerberos V include files, you will have to edit the Makefile and add -I/path/to/krb/includes to CPPFLAGS" >&5 $as_echo "$as_me: WARNING: Unable to locate Kerberos V include files, you will have to edit the Makefile and add -I/path/to/krb/includes to CPPFLAGS" >&2;} - fi - else + fi + else if test X"$with_rpath" = X"yes"; then case "$host" in @@ -17627,12 +17625,12 @@ blibpath_add="${blibpath_add}:${with_kerb5}/lib" fi - CPPFLAGS="$CPPFLAGS -I${with_kerb5}/include" - fi + CPPFLAGS="$CPPFLAGS -I${with_kerb5}/include" + fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using Heimdal" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using Heimdal" >&5 $as_echo_n "checking whether we are using Heimdal... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -17645,13 +17643,13 @@ _ACEOF if ac_fn_c_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - $as_echo "#define HAVE_HEIMDAL 1" >>confdefs.h + $as_echo "#define HAVE_HEIMDAL 1" >>confdefs.h - # XXX - need to check whether -lcrypo is needed! - SUDOERS_LIBS="${SUDOERS_LIBS} -lkrb5 -lcrypto -ldes -lcom_err -lasn1" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lroken" >&5 + # XXX - need to check whether -lcrypo is needed! + SUDOERS_LIBS="${SUDOERS_LIBS} -lkrb5 -lcrypto -ldes -lcom_err -lasn1" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lroken" >&5 $as_echo_n "checking for main in -lroken... " >&6; } if test "${ac_cv_lib_roken_main+set}" = set; then : $as_echo_n "(cached) " >&6 @@ -17688,10 +17686,10 @@ else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - SUDOERS_LIBS="${SUDOERS_LIBS} -lkrb5 -lk5crypto -lcom_err" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lkrb5support" >&5 + SUDOERS_LIBS="${SUDOERS_LIBS} -lkrb5 -lk5crypto -lcom_err" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lkrb5support" >&5 $as_echo_n "checking for main in -lkrb5support... " >&6; } if test "${ac_cv_lib_krb5support_main+set}" = set; then : $as_echo_n "(cached) " >&6 @@ -17728,7 +17726,8 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - AUTH_OBJS="$AUTH_OBJS kerb5.lo" + AUTH_OBJS="$AUTH_OBJS kerb5.lo" + fi _LIBS="$LIBS" LIBS="${LIBS} ${SUDOERS_LIBS}" for ac_func in krb5_verify_user krb5_init_secure_context @@ -19622,7 +19621,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by sudo $as_me 1.8.1p1, which was +This file was extended by sudo $as_me 1.8.1p2, which was generated by GNU Autoconf 2.65. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -19688,7 +19687,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -sudo config.status 1.8.1p1 +sudo config.status 1.8.1p2 configured by $0, generated by GNU Autoconf 2.65, with options \\"\$ac_cs_config\\" diff -urNa sudo-1.8.1p1/configure.in sudo-1.8.1p2/configure.in --- sudo-1.8.1p1/configure.in Fri Apr 15 14:41:51 2011 +++ sudo-1.8.1p2/configure.in Mon May 16 13:13:18 2011 @@ -3,7 +3,7 @@ dnl dnl Copyright (c) 1994-1996,1998-2011 Todd C. Miller dnl -AC_INIT([sudo], [1.8.1p1], [http://www.sudo.ws/bugs/], [sudo]) +AC_INIT([sudo], [1.8.1p2], [http://www.sudo.ws/bugs/], [sudo]) AC_CONFIG_HEADER([config.h pathnames.h]) dnl dnl Note: this must come after AC_INIT @@ -2455,46 +2455,45 @@ AC_MSG_RESULT(no) ] ) - fi -fi -if test ${with_kerb5-'no'} != "no" -a -z "$KRB5CONFIG"; then - AC_DEFINE(HAVE_KERB5) - dnl - dnl Use the specified directory, if any, else search for correct inc dir - dnl - if test "$with_kerb5" = "yes"; then - found=no - O_CPPFLAGS="$CPPFLAGS" - for dir in "" "kerberosV/" "krb5/" "kerberos5/" "kerberosv5/"; do - CPPFLAGS="$O_CPPFLAGS -I/usr/include/${dir}" - AC_PREPROC_IFELSE([#include ], [found=yes; break]) - done - if test X"$found" = X"no"; then - CPPFLAGS="$O_CPPFLAGS" - AC_MSG_WARN([Unable to locate Kerberos V include files, you will have to edit the Makefile and add -I/path/to/krb/includes to CPPFLAGS]) - fi else - dnl XXX - try to include krb5.h here too - SUDO_APPEND_LIBPATH(SUDOERS_LDFLAGS, [${with_kerb5}/lib]) - CPPFLAGS="$CPPFLAGS -I${with_kerb5}/include" - fi + AC_DEFINE(HAVE_KERB5) + dnl + dnl Use the specified directory, if any, else search for correct inc dir + dnl + if test "$with_kerb5" = "yes"; then + found=no + O_CPPFLAGS="$CPPFLAGS" + for dir in "" "kerberosV/" "krb5/" "kerberos5/" "kerberosv5/"; do + CPPFLAGS="$O_CPPFLAGS -I/usr/include/${dir}" + AC_PREPROC_IFELSE([#include ], [found=yes; break]) + done + if test X"$found" = X"no"; then + CPPFLAGS="$O_CPPFLAGS" + AC_MSG_WARN([Unable to locate Kerberos V include files, you will have to edit the Makefile and add -I/path/to/krb/includes to CPPFLAGS]) + fi + else + dnl XXX - try to include krb5.h here too + SUDO_APPEND_LIBPATH(SUDOERS_LDFLAGS, [${with_kerb5}/lib]) + CPPFLAGS="$CPPFLAGS -I${with_kerb5}/include" + fi - dnl - dnl Try to determine whether we have Heimdal or MIT Kerberos - dnl - AC_MSG_CHECKING(whether we are using Heimdal) - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[const char *tmp = heimdal_version;]])], [ - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_HEIMDAL) - # XXX - need to check whether -lcrypo is needed! - SUDOERS_LIBS="${SUDOERS_LIBS} -lkrb5 -lcrypto -ldes -lcom_err -lasn1" - AC_CHECK_LIB(roken, main, [SUDOERS_LIBS="${SUDOERS_LIBS} -lroken"]) - ], [ - AC_MSG_RESULT(no) - SUDOERS_LIBS="${SUDOERS_LIBS} -lkrb5 -lk5crypto -lcom_err" - AC_CHECK_LIB(krb5support, main, [SUDOERS_LIBS="${SUDOERS_LIBS} -lkrb5support"]) - ]) - AUTH_OBJS="$AUTH_OBJS kerb5.lo" + dnl + dnl Try to determine whether we have Heimdal or MIT Kerberos + dnl + AC_MSG_CHECKING(whether we are using Heimdal) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[const char *tmp = heimdal_version;]])], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_HEIMDAL) + # XXX - need to check whether -lcrypo is needed! + SUDOERS_LIBS="${SUDOERS_LIBS} -lkrb5 -lcrypto -ldes -lcom_err -lasn1" + AC_CHECK_LIB(roken, main, [SUDOERS_LIBS="${SUDOERS_LIBS} -lroken"]) + ], [ + AC_MSG_RESULT(no) + SUDOERS_LIBS="${SUDOERS_LIBS} -lkrb5 -lk5crypto -lcom_err" + AC_CHECK_LIB(krb5support, main, [SUDOERS_LIBS="${SUDOERS_LIBS} -lkrb5support"]) + ]) + AUTH_OBJS="$AUTH_OBJS kerb5.lo" + fi _LIBS="$LIBS" LIBS="${LIBS} ${SUDOERS_LIBS}" AC_CHECK_FUNCS(krb5_verify_user krb5_init_secure_context) diff -urNa sudo-1.8.1p1/doc/UPGRADE sudo-1.8.1p2/doc/UPGRADE --- sudo-1.8.1p1/doc/UPGRADE Wed Mar 30 08:59:17 2011 +++ sudo-1.8.1p2/doc/UPGRADE Fri Apr 29 11:23:53 2011 @@ -58,6 +58,17 @@ file in the doc directory or refer to the updated sudo manual to see how to configure sudo.conf. + The "askpass" setting has moved from the sudoers file to the + sudo.conf file. If you have a sudoers file that uses the + "askpass" option, you will need to move the definition to the + sudo.conf file. + + Old style in /etc/sudoers: + Defaults askpass=/usr/X11R6/bin/ssh-askpass + + New style in /etc/sudo.conf: + Path askpass /usr/X11R6/bin/ssh-askpass + o Upgrading from a version prior to 1.7.5: Sudo 1.7.5 includes an updated LDAP schema with support for diff -urNa sudo-1.8.1p1/doc/sudo.cat sudo-1.8.1p2/doc/sudo.cat --- sudo-1.8.1p1/doc/sudo.cat Sat Apr 9 10:47:15 2011 +++ sudo-1.8.1p2/doc/sudo.cat Mon May 16 13:27:23 2011 @@ -1,9 +1,7 @@ +SUDO(1m) MAINTENANCE COMMANDS SUDO(1m) -SUDO(1m) MAINTENANCE COMMANDS SUDO(1m) - - NNAAMMEE sudo, sudoedit - execute a command as another user @@ -57,19 +55,6 @@ If an I/O plugin is configured, the running command's input and output may be logged as well. - - - - -1.8.1 April 9, 2011 1 - - - - - -SUDO(1m) MAINTENANCE COMMANDS SUDO(1m) - - OOPPTTIIOONNSS ssuuddoo accepts the following command line options: @@ -125,17 +110,6 @@ is already root. This option is only available on systems with BSD login classes. - - -1.8.1 April 9, 2011 2 - - - - - -SUDO(1m) MAINTENANCE COMMANDS SUDO(1m) - - -D _l_e_v_e_l Enable debugging of ssuuddoo plugins and ssuuddoo itself. The _l_e_v_e_l may be a value from 1 through 9. @@ -190,18 +164,6 @@ behavior. -h The --hh (_h_e_l_p) option causes ssuuddoo to print a short help - - - -1.8.1 April 9, 2011 3 - - - - - -SUDO(1m) MAINTENANCE COMMANDS SUDO(1m) - - message to the standard output and exit. -i [command] @@ -256,18 +218,6 @@ messages and exit. -P The --PP (_p_r_e_s_e_r_v_e _g_r_o_u_p _v_e_c_t_o_r) option causes ssuuddoo to - - - -1.8.1 April 9, 2011 4 - - - - - -SUDO(1m) MAINTENANCE COMMANDS SUDO(1m) - - preserve the invoking user's group vector unaltered. By default, the _s_u_d_o_e_r_s policy will initialize the group vector to the list of groups the target user is in. The @@ -322,18 +272,6 @@ role. -U _u_s_e_r The --UU (_o_t_h_e_r _u_s_e_r) option is used in conjunction with the - - - -1.8.1 April 9, 2011 5 - - - - - -SUDO(1m) MAINTENANCE COMMANDS SUDO(1m) - - --ll option to specify the user whose privileges should be listed. The security policy may restrict listing other users' privileges. The _s_u_d_o_e_r_s policy only allows root or @@ -384,22 +322,6 @@ security policy and I/O logging, which corresponds to the following _/_e_t_c_/_s_u_d_o_._c_o_n_f file. - - - - - - - -1.8.1 April 9, 2011 6 - - - - - -SUDO(1m) MAINTENANCE COMMANDS SUDO(1m) - - # # Default /etc/sudo.conf file # @@ -454,18 +376,6 @@ that support LD_PRELOAD or its equivalent. Defaults to _/_u_s_r_/_l_o_c_a_l_/_l_i_b_e_x_e_c_/_s_u_d_o___n_o_e_x_e_c_._s_o. - - - -1.8.1 April 9, 2011 7 - - - - - -SUDO(1m) MAINTENANCE COMMANDS SUDO(1m) - - RREETTUURRNN VVAALLUUEESS Upon successful execution of a program, the exit status from ssuuddoo will simply be the exit status of the program that was executed. @@ -521,17 +431,6 @@ SHELL Used to determine shell to run with -s option - - -1.8.1 April 9, 2011 8 - - - - - -SUDO(1m) MAINTENANCE COMMANDS SUDO(1m) - - SUDO_ASKPASS Specifies the path to a helper program used to read the password if no terminal is available or if the -A option is specified. @@ -587,17 +486,6 @@ To shutdown a machine: - - -1.8.1 April 9, 2011 9 - - - - - -SUDO(1m) MAINTENANCE COMMANDS SUDO(1m) - - $ sudo shutdown -r +15 "quick reboot" To make a usage listing of the directories in the /home partition. @@ -652,75 +540,8 @@ including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. See the LICENSE file distributed with ssuuddoo or - - - -1.8.1 April 9, 2011 10 - - - - - -SUDO(1m) MAINTENANCE COMMANDS SUDO(1m) - - http://www.sudo.ws/sudo/license.html for complete details. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1.8.1 April 9, 2011 11 - - +1.8.1p2 May 16, 2011 SUDO(1m) diff -urNa sudo-1.8.1p1/doc/sudo.man.in sudo-1.8.1p2/doc/sudo.man.in --- sudo-1.8.1p1/doc/sudo.man.in Sat Apr 9 10:47:15 2011 +++ sudo-1.8.1p2/doc/sudo.man.in Mon May 16 13:27:20 2011 @@ -149,7 +149,7 @@ .\" ======================================================================== .\" .IX Title "SUDO @mansectsu@" -.TH SUDO @mansectsu@ "April 9, 2011" "1.8.1" "MAINTENANCE COMMANDS" +.TH SUDO @mansectsu@ "May 16, 2011" "1.8.1p2" "MAINTENANCE COMMANDS" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -urNa sudo-1.8.1p1/doc/sudo_plugin.cat sudo-1.8.1p2/doc/sudo_plugin.cat --- sudo-1.8.1p1/doc/sudo_plugin.cat Sat Apr 9 10:47:16 2011 +++ sudo-1.8.1p2/doc/sudo_plugin.cat Mon May 16 13:27:23 2011 @@ -1,9 +1,7 @@ +SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m) -SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m) - - NNAAMMEE sudo_plugin - Sudo Plugin API @@ -58,18 +56,6 @@ Plugin sudoers_policy sudoers.so Plugin sudoers_io sudoers.so - - - -1.8.1 April 9, 2011 1 - - - - - -SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m) - - PPoolliiccyy PPlluuggiinn AAPPII A policy plugin must declare and populate a policy_plugin struct in the global scope. This structure contains pointers to the functions that @@ -124,18 +110,6 @@ version The version passed in by ssuuddoo allows the plugin to determine the major and minor version number of the plugin API supported - - - -1.8.1 April 9, 2011 2 - - - - - -SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m) - - by ssuuddoo. conversation @@ -190,18 +164,6 @@ login_shell=bool Set to true if the user specified the -i flag, indicating - - - -1.8.1 April 9, 2011 3 - - - - - -SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m) - - that the user wishes to run a login shell. implied_shell=bool @@ -257,17 +219,6 @@ The command name that sudo was run as, typically "sudo" or "sudoedit". - - -1.8.1 April 9, 2011 4 - - - - - -SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m) - - sudoedit=bool Set to true when the -e flag is is specified or if invoked as ssuuddooeeddiitt. The plugin shall substitute an editor into @@ -323,17 +274,6 @@ is no terminal device available, a default value of 24 is used. - - -1.8.1 April 9, 2011 5 - - - - - -SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m) - - cols=int The number of columns the user's terminal supports. If there is no terminal device available, a default value of @@ -388,18 +328,6 @@ the _o_p_e_n function, the user has requested _s_u_d_o_e_d_i_t mode. _s_u_d_o_e_d_i_t is a mechanism for editing one or more files where an editor is run with the user's credentials instead of with elevated privileges. - - - -1.8.1 April 9, 2011 6 - - - - - -SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m) - - ssuuddoo achieves this by creating user-writable temporary copies of the files to be edited and then overwriting the originals with the temporary copies after editing is complete. If the plugin supports @@ -453,19 +381,6 @@ command=string Fully qualified path to the command to be executed. - - - - -1.8.1 April 9, 2011 7 - - - - - -SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m) - - runas_uid=uid User ID to run the command as. @@ -520,18 +435,6 @@ timeout=int Command timeout. If non-zero then when the timeout expires - - - -1.8.1 April 9, 2011 8 - - - - - -SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m) - - the command will be killed. sudoedit=bool @@ -587,17 +490,6 @@ screen, not output to a pipe or file. This is a hint to the I/O logging plugin which may choose to ignore it. - - -1.8.1 April 9, 2011 9 - - - - - -SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m) - - use_pty=bool Allocate a pseudo-tty to run the command in, regardless of whether or not I/O logging is in use. By default, ssuuddoo @@ -651,19 +543,6 @@ policy allows it. If NULL, the plugin should list the privileges of the invoking user. - - - - -1.8.1 April 9, 2011 10 - - - - - -SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m) - - argc The number of elements in _a_r_g_v, not counting the final NULL pointer. @@ -718,18 +597,6 @@ Returns 1 on success, 0 on failure and -1 on error. On error, the plugin may optionally call the conversation or plugin_printf - - - -1.8.1 April 9, 2011 11 - - - - - -SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m) - - function with SUDO_CONF_ERROR_MSG to present additional error information to the user. @@ -785,17 +652,6 @@ logging is to be performed. If the open function returns 0, no I/O will be sent to the plugin. - - -1.8.1 April 9, 2011 12 - - - - - -SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m) - - The io_plugin struct has the following fields: type @@ -850,18 +706,6 @@ "name=value" strings. The vector is terminated by a NULL pointer. These settings correspond to flags the user specified when running ssuuddoo. As such, they will only be present when the - - - -1.8.1 April 9, 2011 13 - - - - - -SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m) - - corresponding flag has been specified on the command line. When parsing _s_e_t_t_i_n_g_s, the plugin should split on the ffiirrsstt @@ -916,18 +760,6 @@ error If the command could not be executed, this is set to the value of errno set by the _e_x_e_c_v_e(2) system call. If the command was - - - -1.8.1 April 9, 2011 14 - - - - - -SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m) - - successfully executed, the value of error is 0. show_version @@ -982,18 +814,6 @@ the data should be passed to the command, 0 if the data is rejected (which will terminate the command) or -1 if an error occurred. - - - -1.8.1 April 9, 2011 15 - - - - - -SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m) - - The function arguments are as follows: buf The buffer containing user input. @@ -1049,17 +869,6 @@ informational or error messages to the user, which is usually more convenient for simple messages where no use input is required. - - -1.8.1 April 9, 2011 16 - - - - - -SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m) - - struct sudo_conv_message { #define SUDO_CONV_PROMPT_ECHO_OFF 0x0001 /* do not echo user input */ #define SUDO_CONV_PROMPT_ECHO_ON 0x0002 /* echo user input */ @@ -1111,21 +920,6 @@ in the global scope. This structure contains pointers to the functions that implement plugin initialization, cleanup and group lookup. - - - - - - -1.8.1 April 9, 2011 17 - - - - - -SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m) - - struct sudoers_group_plugin { unsigned int version; int (*init)(int version, sudo_printf_t sudo_printf, @@ -1179,19 +973,6 @@ close open file handles. query - - - - -1.8.1 April 9, 2011 18 - - - - - -SUDO_PLUGIN(1m) MAINTENANCE COMMANDS SUDO_PLUGIN(1m) - - int (*query)(const char *user, const char *group, const struct passwd *pwd); @@ -1249,6 +1030,4 @@ -1.8.1 April 9, 2011 19 - - +1.8.1p2 May 16, 2011 SUDO_PLUGIN(1m) diff -urNa sudo-1.8.1p1/doc/sudo_plugin.man.in sudo-1.8.1p2/doc/sudo_plugin.man.in --- sudo-1.8.1p1/doc/sudo_plugin.man.in Sat Apr 9 10:47:15 2011 +++ sudo-1.8.1p2/doc/sudo_plugin.man.in Mon May 16 13:27:20 2011 @@ -139,7 +139,7 @@ .\" ======================================================================== .\" .IX Title "SUDO_PLUGIN @mansectsu@" -.TH SUDO_PLUGIN @mansectsu@ "April 9, 2011" "1.8.1" "MAINTENANCE COMMANDS" +.TH SUDO_PLUGIN @mansectsu@ "May 16, 2011" "1.8.1p2" "MAINTENANCE COMMANDS" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -urNa sudo-1.8.1p1/doc/sudoers.cat sudo-1.8.1p2/doc/sudoers.cat --- sudo-1.8.1p1/doc/sudoers.cat Sat Apr 9 10:47:16 2011 +++ sudo-1.8.1p2/doc/sudoers.cat Mon May 16 13:27:23 2011 @@ -1,9 +1,7 @@ +SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - NNAAMMEE sudoers - default sudo security policy module @@ -58,18 +56,6 @@ _s_u_d_o_e_r_s also supports logging a command's input and output streams. I/O logging is not on by default but can be enabled using the _l_o_g___i_n_p_u_t and _l_o_g___o_u_t_p_u_t Defaults flags as well as the LOG_INPUT and LOG_OUTPUT - - - -1.8.1 April 9, 2011 1 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - command tags. CCoommmmaanndd EEnnvviirroonnmmeenntt @@ -124,18 +110,6 @@ Form (EBNF). Don't despair if you don't know what EBNF is; it is fairly simple, and the definitions below are annotated. - - - -1.8.1 April 9, 2011 2 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - QQuuiicckk gguuiiddee ttoo EEBBNNFF EBNF is a concise and exact way of describing the grammar of a language. Each EBNF definition is made up of _p_r_o_d_u_c_t_i_o_n _r_u_l_e_s. E.g., @@ -191,17 +165,6 @@ Alias_Type NAME = item1, item2, item3 : NAME = item4, item5 - - -1.8.1 April 9, 2011 3 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - The definitions of what constitutes a valid _a_l_i_a_s member follow. User_List ::= User | @@ -256,18 +219,6 @@ '!'* %:nonunix_group | '!'* %:#nonunix_gid | '!'* +netgroup | - - - -1.8.1 April 9, 2011 4 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - '!'* Runas_Alias A Runas_List is similar to a User_List except that instead of @@ -322,18 +273,6 @@ he/she wishes. However, you may also specify command line arguments (including wildcards). Alternately, you can specify "" to indicate that the command may only be run wwiitthhoouutt command line arguments. A - - - -1.8.1 April 9, 2011 5 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - directory is a fully qualified path name ending in a '/'. When you specify a directory in a Cmnd_List, the user will be able to run any file within that directory (but not in any subdirectories therein). @@ -388,18 +327,6 @@ See "SUDOERS OPTIONS" for a list of supported Defaults parameters. - - - -1.8.1 April 9, 2011 6 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - UUsseerr SSppeecciiffiiccaattiioonn User_Spec ::= User_List Host_List '=' Cmnd_Spec_List \ (':' Host_List '=' Cmnd_Spec_List)* @@ -454,18 +381,6 @@ dgb boulder = (operator) /bin/ls, (root) /bin/kill, /usr/bin/lprm - - - -1.8.1 April 9, 2011 7 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - Then user ddggbb is now allowed to run _/_b_i_n_/_l_s as ooppeerraattoorr, but _/_b_i_n_/_k_i_l_l and _/_u_s_r_/_b_i_n_/_l_p_r_m as rroooott. @@ -520,18 +435,6 @@ the tag unless it is overridden by the opposite tag (i.e.: PASSWD overrides NOPASSWD and NOEXEC overrides EXEC). - - - -1.8.1 April 9, 2011 8 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - _N_O_P_A_S_S_W_D _a_n_d _P_A_S_S_W_D By default, ssuuddoo requires that a user authenticate him or herself @@ -587,17 +490,6 @@ _L_O_G___I_N_P_U_T _a_n_d _N_O_L_O_G___I_N_P_U_T - - -1.8.1 April 9, 2011 9 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - These tags override the value of the _l_o_g___i_n_p_u_t option on a per-command basis. For more information, see the description of _l_o_g___i_n_p_u_t in the "SUDOERS OPTIONS" section below. @@ -653,17 +545,6 @@ file currently being parsed using the #include and #includedir directives. - - -1.8.1 April 9, 2011 10 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - This can be used, for example, to keep a site-wide _s_u_d_o_e_r_s file in addition to a local, per-machine file. For the sake of this example the site-wide _s_u_d_o_e_r_s will be _/_e_t_c_/_s_u_d_o_e_r_s and the per-machine one will @@ -718,18 +599,6 @@ User_Alias, Runas_Alias, or Host_Alias. You should not try to define your own _a_l_i_a_s called AALLLL as the built-in alias will be used in preference to your own. Please note that using AALLLL can be dangerous - - - -1.8.1 April 9, 2011 11 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - since in a command context, it allows the user to run aannyy command on the system. @@ -784,18 +653,6 @@ zzlliibb support. env_editor If set, vviissuuddoo will use the value of the EDITOR or - - - -1.8.1 April 9, 2011 12 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - VISUAL environment variables before falling back on the default editor list. Note that this may create a security hole as it allows the user to run any @@ -850,18 +707,6 @@ _o_f_f by default. ignore_dot If set, ssuuddoo will ignore '.' or '' (current dir) in the - - - -1.8.1 April 9, 2011 13 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - PATH environment variable; the PATH itself is not modified. This flag is _o_f_f by default. @@ -916,18 +761,6 @@ log line, prefixed with _T_S_I_D_=. The _i_o_l_o_g___f_i_l_e option may be used to control the format of the session ID. - - - -1.8.1 April 9, 2011 14 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - Output logs may be viewed with the _s_u_d_o_r_e_p_l_a_y(1m) utility, which can also be used to list or search the available logs. @@ -982,18 +815,6 @@ passprompt_override The password prompt specified by _p_a_s_s_p_r_o_m_p_t will - - - -1.8.1 April 9, 2011 15 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - normally only be used if the password prompt provided by systems such as PAM matches the string "Password:". If _p_a_s_s_p_r_o_m_p_t___o_v_e_r_r_i_d_e is set, _p_a_s_s_p_r_o_m_p_t will always @@ -1048,18 +869,6 @@ the the _e_n_v___r_e_s_e_t option is enabled, so _s_e_t___h_o_m_e is only effective for configurations where either _e_n_v___r_e_s_e_t is disabled or HOME is present in the - - - -1.8.1 April 9, 2011 16 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - _e_n_v___k_e_e_p list. This flag is _o_f_f by default. set_logname Normally, ssuuddoo will set the LOGNAME, USER and USERNAME @@ -1115,17 +924,6 @@ not listed in the passwd database as an argument to the --uu option. This flag is _o_f_f by default. - - -1.8.1 April 9, 2011 17 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - tty_tickets If set, users must authenticate on a per-tty basis. With this flag enabled, ssuuddoo will use a file named for the tty the user is logged in on in the user's time @@ -1181,17 +979,6 @@ IInntteeggeerrss tthhaatt ccaann bbee uusseedd iinn aa bboooolleeaann ccoonntteexxtt: - - -1.8.1 April 9, 2011 18 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - loglinelen Number of characters per line for the file log. This value is used to decide when to wrap lines for nicer log files. This has no effect on the syslog log file, @@ -1247,17 +1034,6 @@ The following percent (`%') escape sequences are supported: - - -1.8.1 April 9, 2011 19 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - %{seq} expanded to a monotonically increasing base-36 sequence number, such as 0100A5, where every two @@ -1312,18 +1088,6 @@ noexec_file This option is deprecated and will be removed in a future release of ssuuddoo. The path to the noexec file - - - -1.8.1 April 9, 2011 20 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - should now be set in the _/_e_t_c_/_s_u_d_o_._c_o_n_f file. passprompt The default prompt to use when asking for a password; @@ -1360,15 +1124,20 @@ runas_default The default user to run commands as if the --uu option is not specified on the command line. This defaults to - root. Note that if _r_u_n_a_s___d_e_f_a_u_l_t is set it mmuusstt occur - before any Runas_Alias specifications. + root. syslog_badpri Syslog priority to use when user authenticates unsuccessfully. Defaults to alert. + The following syslog priorities are supported: aalleerrtt, + ccrriitt, ddeebbuugg, eemmeerrgg, eerrrr, iinnffoo, nnoottiiccee, and wwaarrnniinngg. + syslog_goodpri Syslog priority to use when user authenticates successfully. Defaults to notice. + See syslog_badpri for the list of supported syslog + priorities. + sudoers_locale Locale to use when parsing the sudoers file, logging commands, and sending email. Note that changing the locale may affect how sudoers is interpreted. Defaults @@ -1378,18 +1147,6 @@ The default is _/_v_a_r_/_a_d_m_/_s_u_d_o. timestampowner The owner of the timestamp directory and the timestamps - - - -1.8.1 April 9, 2011 21 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - stored therein. The default is root. type The default SELinux type to use when constructing a new @@ -1400,16 +1157,6 @@ SSttrriinnggss tthhaatt ccaann bbee uusseedd iinn aa bboooolleeaann ccoonntteexxtt: - askpass The _a_s_k_p_a_s_s option specifies the fully qualified path to a - helper program used to read the user's password when no - terminal is available. This may be the case when ssuuddoo is - executed from a graphical (as opposed to text-based) - application. The program specified by _a_s_k_p_a_s_s should - display the argument passed to it as the prompt and write - the user's password to the standard output. The value of - _a_s_k_p_a_s_s may be overridden by the SUDO_ASKPASS environment - variable. - env_file The _e_n_v___f_i_l_e options specifies the fully qualified path to a file containing variables to be set in the environment of the program being run. Entries in this file should either @@ -1444,18 +1191,6 @@ along with the password prompt. It has the following possible values: - - - -1.8.1 April 9, 2011 22 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - always Always lecture the user. never Never lecture the user. @@ -1511,17 +1246,6 @@ should be enclosed in double quotes (") to protect against ssuuddoo interpreting the @ sign. Defaults to root. - - -1.8.1 April 9, 2011 23 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - secure_path Path used for every command run from ssuuddoo. If you don't trust the people running ssuuddoo to have a sane PATH environment variable you may want to use this. Another use @@ -1533,6 +1257,10 @@ syslog Syslog facility if syslog is being used for logging (negate to disable syslog logging). Defaults to auth. + The following syslog facilities are supported: aauutthhpprriivv (if + your OS supports it), aauutthh, ddaaeemmoonn, uusseerr, llooccaall00, llooccaall11, + llooccaall22, llooccaall33, llooccaall44, llooccaall55, llooccaall66, and llooccaall77. + verifypw This option controls when a password will be required when a user runs ssuuddoo with the --vv option. It has the following possible values: @@ -1576,18 +1304,6 @@ environment when the _e_n_v___r_e_s_e_t option is not in effect. The argument may be a double-quoted, space-separated list or a single value without double-quotes. The list - - - -1.8.1 April 9, 2011 24 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - can be replaced, added to, deleted from, or disabled by using the =, +=, -=, and ! operators respectively. The default list of environment variables to remove is @@ -1607,13 +1323,6 @@ variables to keep is displayed when ssuuddoo is run by root with the _-_V option. - When logging via _s_y_s_l_o_g(3), ssuuddoo accepts the following values for the - syslog facility (the value of the ssyysslloogg Parameter): aauutthhpprriivv (if your - OS supports it), aauutthh, ddaaeemmoonn, uusseerr, llooccaall00, llooccaall11, llooccaall22, llooccaall33, - llooccaall44, llooccaall55, llooccaall66, and llooccaall77. The following syslog priorities - are supported: aalleerrtt, ccrriitt, ddeebbuugg, eemmeerrgg, eerrrr, iinnffoo, nnoottiiccee, and - wwaarrnniinngg. - FFIILLEESS _/_e_t_c_/_s_u_d_o_e_r_s List of who can run what @@ -1642,18 +1351,6 @@ # User alias specification User_Alias FULLTIMERS = millert, mikef, dowdy User_Alias PARTTIMERS = bostley, jwfox, crawl - - - -1.8.1 April 9, 2011 25 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - User_Alias WEBMASTERS = will, wendy, wim # Runas alias specification @@ -1707,19 +1404,6 @@ The _U_s_e_r _s_p_e_c_i_f_i_c_a_t_i_o_n is the part that actually determines who may run what. - - - - -1.8.1 April 9, 2011 26 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - root ALL = (ALL) ALL %wheel ALL = (ALL) ALL @@ -1775,17 +1459,6 @@ bob SPARC = (OP) ALL : SGI = (OP) ALL - - -1.8.1 April 9, 2011 27 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - The user bboobb may run anything on the _S_P_A_R_C and _S_G_I machines as any user listed in the _O_P Runas_Alias (rroooott and ooppeerraattoorr). @@ -1840,18 +1513,6 @@ ALL CDROM = NOPASSWD: /sbin/umount /CDROM,\ /sbin/mount -o nosuid\,nodev /dev/cd0a /CDROM - - - -1.8.1 April 9, 2011 28 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - Any user may mount or unmount a CD-ROM on the machines in the CDROM Host_Alias (orion, perseus, hercules) without entering a password. This is a bit tedious for users to type, so it is a prime candidate for @@ -1906,18 +1567,6 @@ noexec Many systems that support shared libraries have the ability to override default library functions by pointing an environment variable (usually LD_PRELOAD) to an alternate - - - -1.8.1 April 9, 2011 29 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - shared library. On such systems, ssuuddoo's _n_o_e_x_e_c functionality can be used to prevent a program run by ssuuddoo from executing any other programs. Note, however, that this applies only to @@ -1972,18 +1621,6 @@ _s_u_d_o_e_r_s will not honor time stamps set far in the future. Time stamps with a date greater than current_time + 2 * TIMEOUT will be ignored and sudo will log and complain. This is done to keep a user from creating - - - -1.8.1 April 9, 2011 30 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - his/her own time stamp with a bogus date on systems that allow users to give away files if the time stamp directory is located in a world- writable directory. @@ -2038,75 +1675,10 @@ DDIISSCCLLAAIIMMEERR ssuuddoo is provided ``AS IS'' and any express or implied warranties, including, but not limited to, the implied warranties of - - - -1.8.1 April 9, 2011 31 - - - - - -SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - - merchantability and fitness for a particular purpose are disclaimed. See the LICENSE file distributed with ssuuddoo or http://www.sudo.ws/sudo/license.html for complete details. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1.8.1 April 9, 2011 32 - - +1.8.1p2 May 16, 2011 SUDOERS(4) diff -urNa sudo-1.8.1p1/doc/sudoers.ldap.cat sudo-1.8.1p2/doc/sudoers.ldap.cat --- sudo-1.8.1p1/doc/sudoers.ldap.cat Sat Apr 9 10:47:16 2011 +++ sudo-1.8.1p2/doc/sudoers.ldap.cat Mon May 16 13:27:23 2011 @@ -1,9 +1,7 @@ +SUDOERS.LDAP(4) MAINTENANCE COMMANDS SUDOERS.LDAP(4) -SUDOERS.LDAP(4) MAINTENANCE COMMANDS SUDOERS.LDAP(4) - - NNAAMMEE sudoers.ldap - sudo LDAP configuration @@ -58,18 +56,6 @@ Sudo first looks for the cn=default entry in the SUDOers container. If found, the multi-valued sudoOption attribute is parsed in the same - - - -1.8.1 April 9, 2011 1 - - - - - -SUDOERS.LDAP(4) MAINTENANCE COMMANDS SUDOERS.LDAP(4) - - manner as a global Defaults line in _/_e_t_c_/_s_u_d_o_e_r_s. In the following example, the SSH_AUTH_SOCK variable will be preserved in the environment for all users. @@ -124,18 +110,6 @@ A timestamp in the form yyyymmddHHMMZ that can be used to provide a start date/time for when the sudoRole will be valid. If multiple sudoNotBefore entries are present, the earliest is used. Note that - - - -1.8.1 April 9, 2011 2 - - - - - -SUDOERS.LDAP(4) MAINTENANCE COMMANDS SUDOERS.LDAP(4) - - timestamps must be in Coordinated Universal Time (UTC), not the local timezone. @@ -190,18 +164,6 @@ that the user belongs to. (The special ALL tag is matched in this query too.) If no match is returned for the user's name and groups, a third query returns all entries containing user netgroups and checks to - - - -1.8.1 April 9, 2011 3 - - - - - -SUDOERS.LDAP(4) MAINTENANCE COMMANDS SUDOERS.LDAP(4) - - see if the user belongs to any of them. If timed entries are enabled with the SSUUDDOOEERRSS__TTIIMMEEDD configuration @@ -255,19 +217,6 @@ currently ignored. For example, the following attributes do not behave the way one might expect. - - - - -1.8.1 April 9, 2011 4 - - - - - -SUDOERS.LDAP(4) MAINTENANCE COMMANDS SUDOERS.LDAP(4) - - # does not match all but joe # rather, does not match anyone sudoUser: !joe @@ -323,17 +272,6 @@ commercial versions of Unix are only capable of supporting one or the other. - - -1.8.1 April 9, 2011 5 - - - - - -SUDOERS.LDAP(4) MAINTENANCE COMMANDS SUDOERS.LDAP(4) - - HHOOSSTT name[:port] ... If no UURRII is specified, the HHOOSSTT parameter specifies a whitespace- delimited list of LDAP servers to connect to. Each host may @@ -388,18 +326,6 @@ in a moderate amount of debugging information. A value of 2 shows the results of the matches themselves. This parameter should not be set in a production environment as the extra information is - - - -1.8.1 April 9, 2011 6 - - - - - -SUDOERS.LDAP(4) MAINTENANCE COMMANDS SUDOERS.LDAP(4) - - likely to confuse users. BBIINNDDDDNN DN @@ -453,19 +379,6 @@ TTLLSS__CCAACCEERRTT file name An alias for TTLLSS__CCAACCEERRTTFFIILLEE for OpenLDAP compatibility. - - - - -1.8.1 April 9, 2011 7 - - - - - -SUDOERS.LDAP(4) MAINTENANCE COMMANDS SUDOERS.LDAP(4) - - TTLLSS__CCAACCEERRTTFFIILLEE file name The path to a certificate authority bundle which contains the certificates for all the Certificate Authorities the client knows @@ -519,19 +432,6 @@ the OpenSSL manual for a list of valid ciphers. This option is only supported by the OpenLDAP libraries. - - - - -1.8.1 April 9, 2011 8 - - - - - -SUDOERS.LDAP(4) MAINTENANCE COMMANDS SUDOERS.LDAP(4) - - UUSSEE__SSAASSLL on/true/yes/off/false/no Enable UUSSEE__SSAASSLL for LDAP servers that support SASL authentication. @@ -586,18 +486,6 @@ sudoers: files - - - -1.8.1 April 9, 2011 9 - - - - - -SUDOERS.LDAP(4) MAINTENANCE COMMANDS SUDOERS.LDAP(4) - - Note that _/_e_t_c_/_n_s_s_w_i_t_c_h_._c_o_n_f is supported even when the underlying operating system does not use an nsswitch.conf file. @@ -652,18 +540,6 @@ #uri ldaps://secureldapserver #uri ldaps://secureldapserver ldap://ldapserver # - - - -1.8.1 April 9, 2011 10 - - - - - -SUDOERS.LDAP(4) MAINTENANCE COMMANDS SUDOERS.LDAP(4) - - # The amount of time, in seconds, to wait while trying to connect to # an LDAP server. bind_timelimit 30 @@ -718,18 +594,6 @@ #tls_randfile /etc/egd-pool # # You may restrict which ciphers are used. Consult your SSL - - - -1.8.1 April 9, 2011 11 - - - - - -SUDOERS.LDAP(4) MAINTENANCE COMMANDS SUDOERS.LDAP(4) - - # documentation for which options go here. # Only supported when using OpenLDAP. # @@ -784,18 +648,6 @@ attributetype ( 1.3.6.1.4.1.15953.9.1.2 NAME 'sudoHost' - - - -1.8.1 April 9, 2011 12 - - - - - -SUDOERS.LDAP(4) MAINTENANCE COMMANDS SUDOERS.LDAP(4) - - DESC 'Host(s) who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch @@ -850,18 +702,6 @@ DESC 'an integer to order the sudoRole entries' EQUALITY integerMatch ORDERING integerOrderingMatch - - - -1.8.1 April 9, 2011 13 - - - - - -SUDOERS.LDAP(4) MAINTENANCE COMMANDS SUDOERS.LDAP(4) - - SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) objectclass ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL @@ -898,27 +738,4 @@ - - - - - - - - - - - - - - - - - - - - - -1.8.1 April 9, 2011 14 - - +1.8.1p2 May 16, 2011 SUDOERS.LDAP(4) diff -urNa sudo-1.8.1p1/doc/sudoers.ldap.man.in sudo-1.8.1p2/doc/sudoers.ldap.man.in --- sudo-1.8.1p1/doc/sudoers.ldap.man.in Sat Apr 9 10:47:16 2011 +++ sudo-1.8.1p2/doc/sudoers.ldap.man.in Mon May 16 13:27:21 2011 @@ -140,7 +140,7 @@ .\" ======================================================================== .\" .IX Title "SUDOERS.LDAP @mansectform@" -.TH SUDOERS.LDAP @mansectform@ "April 9, 2011" "1.8.1" "MAINTENANCE COMMANDS" +.TH SUDOERS.LDAP @mansectform@ "May 16, 2011" "1.8.1p2" "MAINTENANCE COMMANDS" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -urNa sudo-1.8.1p1/doc/sudoers.man.in sudo-1.8.1p2/doc/sudoers.man.in --- sudo-1.8.1p1/doc/sudoers.man.in Sat Apr 9 10:47:16 2011 +++ sudo-1.8.1p2/doc/sudoers.man.in Mon May 16 13:27:22 2011 @@ -148,7 +148,7 @@ .\" ======================================================================== .\" .IX Title "SUDOERS @mansectform@" -.TH SUDOERS @mansectform@ "April 9, 2011" "1.8.1" "MAINTENANCE COMMANDS" +.TH SUDOERS @mansectform@ "May 16, 2011" "1.8.1p2" "MAINTENANCE COMMANDS" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -1391,16 +1391,19 @@ .IX Item "runas_default" The default user to run commands as if the \fB\-u\fR option is not specified on the command line. This defaults to \f(CW\*(C`@runas_default@\*(C'\fR. -Note that if \fIrunas_default\fR is set it \fBmust\fR occur before -any \f(CW\*(C`Runas_Alias\*(C'\fR specifications. .IP "syslog_badpri" 16 .IX Item "syslog_badpri" Syslog priority to use when user authenticates unsuccessfully. Defaults to \f(CW\*(C`@badpri@\*(C'\fR. +.Sp +The following syslog priorities are supported: \fBalert\fR, \fBcrit\fR, +\&\fBdebug\fR, \fBemerg\fR, \fBerr\fR, \fBinfo\fR, \fBnotice\fR, and \fBwarning\fR. .IP "syslog_goodpri" 16 .IX Item "syslog_goodpri" Syslog priority to use when user authenticates successfully. Defaults to \f(CW\*(C`@goodpri@\*(C'\fR. +.Sp +See syslog_badpri for the list of supported syslog priorities. .IP "sudoers_locale" 16 .IX Item "sudoers_locale" Locale to use when parsing the sudoers file, logging commands, and @@ -1424,16 +1427,6 @@ \} .PP \&\fBStrings that can be used in a boolean context\fR: -.IP "askpass" 12 -.IX Item "askpass" -The \fIaskpass\fR option specifies the fully qualified path to a helper -program used to read the user's password when no terminal is -available. This may be the case when \fBsudo\fR is executed from a -graphical (as opposed to text-based) application. The program -specified by \fIaskpass\fR should display the argument passed to it -as the prompt and write the user's password to the standard output. -The value of \fIaskpass\fR may be overridden by the \f(CW\*(C`SUDO_ASKPASS\*(C'\fR -environment variable. .IP "env_file" 12 .IX Item "env_file" The \fIenv_file\fR options specifies the fully qualified path to a @@ -1553,6 +1546,10 @@ .IX Item "syslog" Syslog facility if syslog is being used for logging (negate to disable syslog logging). Defaults to \f(CW\*(C`@logfac@\*(C'\fR. +.Sp +The following syslog facilities are supported: \fBauthpriv\fR (if your +\&\s-1OS\s0 supports it), \fBauth\fR, \fBdaemon\fR, \fBuser\fR, \fBlocal0\fR, \fBlocal1\fR, +\&\fBlocal2\fR, \fBlocal3\fR, \fBlocal4\fR, \fBlocal5\fR, \fBlocal6\fR, and \fBlocal7\fR. .IP "verifypw" 12 .IX Item "verifypw" This option controls when a password will be required when a user runs @@ -1617,14 +1614,6 @@ to, deleted from, or disabled by using the \f(CW\*(C`=\*(C'\fR, \f(CW\*(C`+=\*(C'\fR, \f(CW\*(C`\-=\*(C'\fR, and \&\f(CW\*(C`!\*(C'\fR operators respectively. The default list of variables to keep is displayed when \fBsudo\fR is run by root with the \fI\-V\fR option. -.PP -When logging via \fIsyslog\fR\|(3), \fBsudo\fR accepts the following values -for the syslog facility (the value of the \fBsyslog\fR Parameter): -\&\fBauthpriv\fR (if your \s-1OS\s0 supports it), \fBauth\fR, \fBdaemon\fR, \fBuser\fR, -\&\fBlocal0\fR, \fBlocal1\fR, \fBlocal2\fR, \fBlocal3\fR, \fBlocal4\fR, \fBlocal5\fR, -\&\fBlocal6\fR, and \fBlocal7\fR. The following syslog priorities are -supported: \fBalert\fR, \fBcrit\fR, \fBdebug\fR, \fBemerg\fR, \fBerr\fR, \fBinfo\fR, -\&\fBnotice\fR, and \fBwarning\fR. .SH "FILES" .IX Header "FILES" .ie n .IP "\fI@sysconfdir@/sudoers\fR" 24 diff -urNa sudo-1.8.1p1/doc/sudoers.pod sudo-1.8.1p2/doc/sudoers.pod --- sudo-1.8.1p1/doc/sudoers.pod Tue Apr 5 09:13:44 2011 +++ sudo-1.8.1p2/doc/sudoers.pod Fri Apr 29 11:23:53 2011 @@ -1311,19 +1311,22 @@ The default user to run commands as if the B<-u> option is not specified on the command line. This defaults to C<@runas_default@>. -Note that if I is set it B occur before -any C specifications. =item syslog_badpri Syslog priority to use when user authenticates unsuccessfully. Defaults to C<@badpri@>. +The following syslog priorities are supported: B, B, +B, B, B, B, B, and B. + =item syslog_goodpri Syslog priority to use when user authenticates successfully. Defaults to C<@goodpri@>. +See L for the list of supported syslog priorities. + =item sudoers_locale Locale to use when parsing the sudoers file, logging commands, and @@ -1353,17 +1356,6 @@ =over 12 -=item askpass - -The I option specifies the fully qualified path to a helper -program used to read the user's password when no terminal is -available. This may be the case when B is executed from a -graphical (as opposed to text-based) application. The program -specified by I should display the argument passed to it -as the prompt and write the user's password to the standard output. -The value of I may be overridden by the C -environment variable. - =item env_file The I options specifies the fully qualified path to a @@ -1501,6 +1493,10 @@ Syslog facility if syslog is being used for logging (negate to disable syslog logging). Defaults to C<@logfac@>. +The following syslog facilities are supported: B (if your +OS supports it), B, B, B, B, B, +B, B, B, B, B, and B. + =item verifypw This option controls when a password will be required when a user runs @@ -1578,14 +1574,6 @@ is displayed when B is run by root with the I<-V> option. =back - -When logging via L, B accepts the following values -for the syslog facility (the value of the B Parameter): -B (if your OS supports it), B, B, B, -B, B, B, B, B, B, -B, and B. The following syslog priorities are -supported: B, B, B, B, B, B, -B, and B. =head1 FILES diff -urNa sudo-1.8.1p1/doc/sudoreplay.cat sudo-1.8.1p2/doc/sudoreplay.cat --- sudo-1.8.1p1/doc/sudoreplay.cat Sat Apr 9 10:47:17 2011 +++ sudo-1.8.1p2/doc/sudoreplay.cat Mon May 16 13:27:24 2011 @@ -1,9 +1,7 @@ +SUDOREPLAY(1m) MAINTENANCE COMMANDS SUDOREPLAY(1m) -SUDOREPLAY(1m) MAINTENANCE COMMANDS SUDOREPLAY(1m) - - NNAAMMEE sudoreplay - replay sudo session logs @@ -58,18 +56,6 @@ -l [_s_e_a_r_c_h _e_x_p_r_e_s_s_i_o_n] Enable "list mode". In this mode, ssuuddoorreeppllaayy will list available session IDs. If a _s_e_a_r_c_h _e_x_p_r_e_s_s_i_o_n is - - - -1.8.1 April 9, 2011 1 - - - - - -SUDOREPLAY(1m) MAINTENANCE COMMANDS SUDOREPLAY(1m) - - specified, it will be used to restrict the IDs that are displayed. An expression is composed of the following predicates: @@ -124,18 +110,6 @@ well as '(' and ')' for grouping (note that parentheses must generally be escaped from the shell). The _a_n_d operator is optional, adjacent predicates have an implied - - - -1.8.1 April 9, 2011 2 - - - - - -SUDOREPLAY(1m) MAINTENANCE COMMANDS SUDOREPLAY(1m) - - _a_n_d unless separated by an _o_r. -m _m_a_x___w_a_i_t Specify an upper bound on how long to wait between key @@ -189,19 +163,6 @@ tomorrow Exactly one day from now. - - - - -1.8.1 April 9, 2011 3 - - - - - -SUDOREPLAY(1m) MAINTENANCE COMMANDS SUDOREPLAY(1m) - - yesterday 24 hours ago. @@ -256,18 +217,6 @@ Example session timing file. Note that the _s_t_d_i_n, _s_t_d_o_u_t and _s_t_d_e_r_r files will be empty unless ssuuddoo - - - -1.8.1 April 9, 2011 4 - - - - - -SUDOREPLAY(1m) MAINTENANCE COMMANDS SUDOREPLAY(1m) - - was used as part of a pipeline for a particular command. EEXXAAMMPPLLEESS @@ -311,20 +260,4 @@ - - - - - - - - - - - - - - -1.8.1 April 9, 2011 5 - - +1.8.1p2 May 16, 2011 SUDOREPLAY(1m) diff -urNa sudo-1.8.1p1/doc/sudoreplay.man.in sudo-1.8.1p2/doc/sudoreplay.man.in --- sudo-1.8.1p1/doc/sudoreplay.man.in Sat Apr 9 10:47:17 2011 +++ sudo-1.8.1p2/doc/sudoreplay.man.in Mon May 16 13:27:22 2011 @@ -139,7 +139,7 @@ .\" ======================================================================== .\" .IX Title "SUDOREPLAY @mansectsu@" -.TH SUDOREPLAY @mansectsu@ "April 9, 2011" "1.8.1" "MAINTENANCE COMMANDS" +.TH SUDOREPLAY @mansectsu@ "May 16, 2011" "1.8.1p2" "MAINTENANCE COMMANDS" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -urNa sudo-1.8.1p1/doc/visudo.cat sudo-1.8.1p2/doc/visudo.cat --- sudo-1.8.1p1/doc/visudo.cat Sat Apr 9 10:47:17 2011 +++ sudo-1.8.1p2/doc/visudo.cat Mon May 16 13:27:24 2011 @@ -1,9 +1,7 @@ +VISUDO(1m) MAINTENANCE COMMANDS VISUDO(1m) -VISUDO(1m) MAINTENANCE COMMANDS VISUDO(1m) - - NNAAMMEE visudo - edit the sudoers file @@ -58,18 +56,6 @@ --ff may be "-", indicating that _s_u_d_o_e_r_s will be read from the standard input. - - - -1.8.1 April 9, 2011 1 - - - - - -VISUDO(1m) MAINTENANCE COMMANDS VISUDO(1m) - - -h The --hh (_h_e_l_p) option causes vviissuuddoo to print a short help message to the standard output and exit. @@ -123,19 +109,6 @@ used. You may wish to comment out or remove the unused alias. In --ss (strict) mode this is an error, not a warning. - - - - -1.8.1 April 9, 2011 2 - - - - - -VISUDO(1m) MAINTENANCE COMMANDS VISUDO(1m) - - SSEEEE AALLSSOO _v_i(1), _s_u_d_o_e_r_s(4), _s_u_d_o(1m), _v_i_p_w(1m) @@ -170,29 +143,4 @@ - - - - - - - - - - - - - - - - - - - - - - - -1.8.1 April 9, 2011 3 - - +1.8.1p2 May 16, 2011 VISUDO(1m) diff -urNa sudo-1.8.1p1/doc/visudo.man.in sudo-1.8.1p2/doc/visudo.man.in --- sudo-1.8.1p1/doc/visudo.man.in Sat Apr 9 10:47:17 2011 +++ sudo-1.8.1p2/doc/visudo.man.in Mon May 16 13:27:22 2011 @@ -144,7 +144,7 @@ .\" ======================================================================== .\" .IX Title "VISUDO @mansectsu@" -.TH VISUDO @mansectsu@ "April 9, 2011" "1.8.1" "MAINTENANCE COMMANDS" +.TH VISUDO @mansectsu@ "May 16, 2011" "1.8.1p2" "MAINTENANCE COMMANDS" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -urNa sudo-1.8.1p1/plugins/sudoers/auth/sia.c sudo-1.8.1p2/plugins/sudoers/auth/sia.c --- sudo-1.8.1p1/plugins/sudoers/auth/sia.c Wed Mar 16 13:40:56 2011 +++ sudo-1.8.1p2/plugins/sudoers/auth/sia.c Tue Apr 26 09:53:27 2011 @@ -52,6 +52,8 @@ static int sudo_collect(int, int, uchar_t *, int, prompt_t *); static char *def_prompt; +static char **sudo_argv; +static int sudo_argc; /* * Collection routine (callback) for limiting the timeouts in SIA @@ -86,12 +88,20 @@ sia_setup(struct passwd *pw, char **promptp, sudo_auth *auth) { SIAENTITY *siah = NULL; - extern int Argc; - extern char **Argv; + int i; + extern int NewArgc; + extern char **NewArgv; - if (sia_ses_init(&siah, Argc, Argv, NULL, pw->pw_name, ttyname(0), 1, NULL) - != SIASUCCESS) { + /* Rebuild argv for sia_ses_init() */ + sudo_argc = NewArgc + 1; + sudo_argv = emalloc2(sudo_argc + 1, sizeof(char *)); + sudo_argv[0] = "sudo"; + for (i = 0; i < NewArgc; i++) + sudo_argv[i + 1] = NewArgv[i]; + sudo_argv[sudo_argc] = NULL; + if (sia_ses_init(&siah, sudo_argc, sudo_argv, NULL, pw->pw_name, user_ttypath, 1, NULL) != SIASUCCESS) { + log_error(USE_ERRNO|NO_EXIT|NO_MAIL, "unable to initialize SIA session"); return AUTH_FATAL; @@ -121,5 +131,6 @@ SIAENTITY *siah = (SIAENTITY *) auth->data; (void) sia_ses_release(&siah); + efree(sudo_argv); return AUTH_SUCCESS; } diff -urNa sudo-1.8.1p1/plugins/sudoers/set_perms.c sudo-1.8.1p2/plugins/sudoers/set_perms.c --- sudo-1.8.1p1/plugins/sudoers/set_perms.c Fri Apr 15 12:30:58 2011 +++ sudo-1.8.1p2/plugins/sudoers/set_perms.c Tue Apr 26 09:52:49 2011 @@ -383,9 +383,7 @@ * setreuid(0, 0) may fail on some systems * when the euid is not already 0. */ - state->ruid = -1; - state->euid = ROOT_UID; - if (setreuid(ID(ruid), ID(euid))) { + if (setreuid(-1, ROOT_UID)) { errstr = "setreuid(-1, ROOT_UID)"; goto bad; } @@ -394,6 +392,7 @@ goto bad; } state->ruid = ROOT_UID; + state->euid = ROOT_UID; state->rgid = -1; state->egid = -1; state->groups = NULL; diff -urNa sudo-1.8.1p1/plugins/sudoers/toke.c sudo-1.8.1p2/plugins/sudoers/toke.c --- sudo-1.8.1p1/plugins/sudoers/toke.c Thu Apr 14 15:08:15 2011 +++ sudo-1.8.1p2/plugins/sudoers/toke.c Fri Apr 29 16:06:21 2011 @@ -289,76 +289,77 @@ *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 56 -#define YY_END_OF_BUFFER 57 -static yyconst short int yy_accept[599] = +#define YY_NUM_RULES 59 +#define YY_END_OF_BUFFER 60 +static yyconst short int yy_accept[607] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 57, 44, 52, 51, 50, 43, 55, 32, - 45, 46, 32, 47, 44, 44, 44, 44, 49, 48, - 55, 39, 39, 39, 39, 39, 39, 39, 55, 44, - 44, 52, 55, 39, 39, 39, 39, 39, 2, 55, - 1, 44, 44, 17, 16, 17, 16, 16, 55, 55, - 55, 3, 9, 8, 9, 4, 9, 5, 55, 13, - 13, 13, 11, 12, 44, 0, 52, 50, 0, 54, - 0, 44, 34, 0, 32, 0, 33, 0, 42, 42, - 0, 44, 44, 0, 44, 44, 44, 44, 0, 37, + 0, 0, 60, 47, 55, 54, 53, 46, 58, 32, + 48, 49, 32, 50, 47, 47, 47, 47, 52, 51, + 58, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 58, 47, 47, 55, 58, 42, 42, 42, 42, + 42, 2, 58, 1, 47, 47, 17, 16, 17, 16, + 16, 58, 58, 58, 3, 9, 8, 9, 4, 9, + 5, 58, 13, 13, 13, 11, 12, 47, 0, 55, + 53, 0, 57, 0, 47, 34, 0, 32, 0, 33, + 0, 45, 45, 0, 47, 47, 0, 47, 47, 47, - 39, 39, 39, 39, 39, 39, 39, 44, 53, 44, - 52, 0, 0, 0, 0, 0, 0, 44, 44, 44, - 44, 44, 2, 1, 0, 1, 40, 40, 0, 44, - 17, 17, 15, 14, 15, 0, 0, 3, 9, 0, - 6, 7, 9, 9, 13, 0, 13, 13, 0, 10, - 0, 0, 0, 34, 34, 0, 0, 44, 44, 44, - 44, 44, 0, 0, 37, 37, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 44, 0, 0, 0, 0, - 0, 0, 44, 44, 44, 44, 44, 0, 44, 10, - 0, 44, 44, 44, 44, 44, 44, 0, 38, 38, + 47, 0, 37, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 47, 56, 47, 55, 0, 0, 0, + 0, 0, 0, 47, 47, 47, 47, 47, 2, 1, + 0, 1, 43, 43, 0, 47, 17, 17, 15, 14, + 15, 0, 0, 3, 9, 0, 6, 7, 9, 9, + 13, 0, 13, 13, 0, 10, 0, 0, 0, 34, + 34, 0, 0, 47, 47, 47, 47, 47, 0, 0, + 37, 37, 42, 39, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 47, 0, 0, 0, 0, 0, + 0, 47, 47, 47, 47, 47, 0, 47, 10, 0, - 38, 0, 0, 37, 37, 37, 37, 37, 37, 37, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 44, - 0, 0, 0, 0, 0, 0, 44, 44, 44, 44, - 44, 44, 44, 0, 0, 38, 38, 38, 0, 37, - 37, 0, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 0, 25, 39, 39, 39, 39, 39, - 39, 39, 39, 44, 0, 0, 0, 0, 44, 44, - 44, 44, 44, 44, 44, 44, 0, 38, 0, 37, - 37, 37, 0, 0, 0, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 39, 39, + 47, 47, 47, 47, 47, 47, 0, 38, 38, 38, + 0, 0, 37, 37, 37, 37, 37, 37, 37, 42, + 42, 42, 42, 42, 42, 42, 42, 40, 42, 41, + 47, 0, 0, 0, 0, 0, 0, 47, 47, 47, + 47, 47, 47, 47, 0, 0, 38, 38, 38, 0, + 37, 37, 0, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 0, 25, 42, 42, 42, 42, + 42, 42, 42, 42, 47, 0, 0, 0, 0, 47, + 47, 47, 47, 47, 47, 47, 47, 0, 38, 0, + 37, 37, 37, 0, 0, 0, 37, 37, 37, 37, - 39, 39, 39, 39, 39, 39, 44, 0, 0, 0, - 44, 44, 44, 35, 35, 35, 0, 0, 37, 37, - 37, 37, 37, 37, 37, 0, 0, 0, 0, 0, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 39, 39, 0, 24, 39, 39, - 39, 39, 0, 23, 0, 26, 44, 0, 0, 0, - 44, 44, 44, 44, 35, 35, 35, 35, 0, 37, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 42, + 42, 42, 42, 42, 42, 42, 42, 47, 0, 0, + 0, 47, 47, 47, 35, 35, 35, 0, 0, 37, + 37, 37, 37, 37, 37, 37, 0, 0, 0, 0, 0, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 0, 0, 0, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 39, 39, + 37, 37, 37, 37, 37, 42, 42, 0, 24, 42, + 42, 42, 42, 0, 23, 0, 26, 47, 0, 0, + 0, 47, 47, 47, 47, 35, 35, 35, 35, 0, + 37, 0, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 0, 0, 0, 37, 37, 37, 37, - 39, 39, 39, 39, 41, 0, 0, 0, 44, 20, - 40, 44, 36, 36, 36, 37, 0, 0, 0, 37, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 42, + 42, 42, 42, 42, 42, 44, 0, 0, 0, 47, + 20, 43, 36, 36, 36, 36, 37, 0, 0, 0, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 0, 0, 0, 0, 0, 37, 37, 37, - 37, 37, 37, 37, 37, 39, 39, 39, 39, 0, - 22, 0, 27, 0, 20, 0, 0, 44, 0, 44, - 44, 44, 36, 36, 36, 36, 36, 0, 0, 0, + 37, 37, 37, 0, 0, 0, 0, 0, 37, 37, + 37, 37, 37, 37, 37, 37, 42, 42, 42, 42, + 0, 22, 0, 27, 0, 20, 0, 0, 47, 0, + 47, 47, 47, 36, 36, 36, 36, 0, 0, 0, 0, 0, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 0, 30, 39, 39, 39, 0, 0, 0, - 21, 20, 0, 0, 0, 0, 0, 20, 0, 44, - 44, 44, 36, 36, 0, 0, 0, 37, 37, 37, + 37, 37, 0, 30, 42, 42, 42, 0, 0, 0, + 21, 20, 0, 0, 0, 0, 0, 20, 0, 47, + 47, 47, 0, 0, 0, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 0, 28, 39, 39, 21, - 0, 18, 0, 0, 20, 44, 44, 44, 44, 44, - 0, 0, 0, 0, 0, 37, 37, 37, 37, 37, - 37, 37, 37, 0, 31, 39, 0, 44, 44, 44, - 37, 37, 37, 37, 37, 37, 0, 29, 0, 44, - 44, 44, 44, 44, 37, 37, 37, 37, 37, 0, - 19, 35, 35, 35, 35, 35, 35, 0 + 37, 37, 37, 0, 28, 42, 42, 21, 0, 18, + 0, 0, 20, 47, 47, 47, 47, 47, 0, 0, + 0, 0, 0, 37, 37, 37, 37, 37, 37, 37, + 37, 0, 31, 42, 0, 47, 47, 47, 37, 37, + 37, 37, 37, 37, 0, 29, 0, 47, 47, 47, + 47, 47, 37, 37, 37, 37, 37, 0, 19, 35, + 35, 35, 35, 35, 35, 0 } ; static yyconst int yy_ec[256] = @@ -371,12 +372,12 @@ 19, 20, 21, 22, 22, 22, 23, 24, 1, 1, 25, 26, 10, 27, 28, 29, 30, 31, 32, 29, 33, 34, 35, 36, 36, 37, 36, 38, 39, 40, - 36, 41, 42, 43, 44, 45, 46, 47, 36, 36, - 10, 48, 10, 1, 49, 1, 50, 51, 52, 53, + 36, 41, 42, 43, 44, 45, 46, 47, 48, 36, + 10, 49, 10, 1, 50, 1, 51, 52, 53, 54, - 54, 55, 56, 56, 57, 56, 56, 58, 59, 60, - 61, 56, 56, 62, 63, 64, 65, 56, 56, 56, - 56, 56, 1, 1, 1, 1, 1, 1, 1, 1, + 55, 56, 57, 57, 58, 57, 57, 59, 60, 61, + 62, 57, 57, 63, 64, 65, 66, 57, 57, 57, + 57, 57, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -393,587 +394,587 @@ 1, 1, 1, 1, 1 } ; -static yyconst int yy_meta[66] = +static yyconst int yy_meta[67] = { 0, 1, 2, 3, 4, 5, 6, 1, 7, 7, 1, 1, 8, 1, 9, 10, 11, 11, 11, 11, 11, 11, 11, 11, 12, 13, 7, 1, 11, 11, 11, 11, 11, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 14, 15, 16, - 16, 16, 16, 16, 16, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15 + 1, 1, 1, 1, 1, 1, 1, 1, 14, 15, + 16, 16, 16, 16, 16, 16, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15 } ; -static yyconst short int yy_base[663] = +static yyconst short int yy_base[671] = { 0, - 0, 64, 65, 66, 85, 100, 147, 211, 275, 322, - 71, 111, 2613, 2557, 2602, 3671, 2599, 3671, 368, 87, - 3671, 3671, 2554, 3671, 113, 378, 124, 146, 2577, 3671, - 3671, 433, 2553, 483, 2560, 2551, 2555, 2550, 537, 154, - 21, 150, 561, 2522, 2526, 2482, 2477, 2478, 80, 203, - 2529, 288, 31, 0, 3671, 2516, 3671, 0, 305, 616, - 81, 0, 2469, 3671, 75, 3671, 82, 3671, 124, 2468, - 83, 86, 3671, 152, 2467, 638, 2512, 2509, 2509, 3671, - 211, 219, 289, 230, 130, 336, 2447, 663, 294, 2437, - 688, 356, 699, 2458, 2467, 395, 500, 169, 2456, 145, + 0, 65, 67, 72, 99, 114, 162, 227, 292, 340, + 86, 125, 2840, 2790, 2836, 3665, 2833, 3665, 387, 70, + 3665, 3665, 2771, 3665, 136, 397, 133, 159, 2795, 3665, + 3665, 453, 2781, 33, 504, 2770, 2767, 2777, 2765, 2771, + 2754, 559, 170, 19, 165, 583, 38, 49, 2739, 68, + 2727, 81, 219, 2771, 305, 48, 0, 3665, 2761, 3665, + 0, 250, 639, 119, 0, 2709, 3665, 108, 3665, 112, + 3665, 140, 2699, 98, 121, 3665, 195, 2693, 661, 2739, + 2736, 2736, 3665, 227, 247, 300, 316, 152, 354, 2681, + 686, 373, 2670, 711, 352, 722, 2692, 2669, 375, 414, - 739, 0, 2439, 2428, 314, 2408, 2396, 135, 3671, 236, - 524, 2379, 2383, 2375, 2370, 2352, 96, 72, 230, 242, - 197, 256, 180, 2409, 569, 2408, 567, 2356, 793, 253, - 0, 2399, 252, 3671, 3671, 578, 280, 0, 2354, 433, - 3671, 3671, 2353, 316, 2352, 2394, 310, 312, 319, 2393, - 2388, 2377, 586, 604, 357, 699, 545, 806, 841, 876, - 911, 2339, 2328, 951, 328, 992, 1032, 2317, 2291, 2292, - 2299, 2294, 2289, 2275, 2268, 307, 2239, 2243, 2225, 2217, - 2220, 328, 371, 2220, 301, 208, 131, 649, 321, 2240, - 2222, 661, 318, 1074, 1109, 511, 335, 2183, 2158, 716, + 302, 2656, 57, 763, 0, 2628, 2625, 2614, 505, 2602, + 2606, 2599, 2601, 202, 3665, 153, 546, 2572, 2565, 2549, + 2537, 2524, 200, 110, 244, 28, 111, 252, 171, 2578, + 422, 2577, 565, 2529, 818, 262, 0, 2573, 179, 3665, + 3665, 599, 269, 0, 2513, 453, 3665, 3665, 2512, 548, + 2490, 2533, 206, 253, 323, 2535, 2524, 2513, 607, 615, + 306, 722, 586, 831, 867, 903, 939, 2499, 2456, 980, + 333, 1022, 1063, 0, 2430, 2394, 2363, 2364, 2374, 2369, + 2327, 2330, 2329, 2328, 266, 2289, 2283, 2272, 2274, 2279, + 409, 334, 2279, 145, 335, 83, 672, 278, 2327, 2325, - 404, 2148, 2145, 412, 725, 1144, 756, 764, 1185, 790, - 2138, 401, 402, 2118, 2116, 2106, 2103, 2069, 2075, 496, - 2008, 2004, 1989, 2002, 1974, 553, 460, 593, 504, 512, - 1227, 1262, 1297, 2011, 1990, 814, 1990, 1967, 1964, 1963, - 630, 823, 642, 849, 671, 1332, 0, 859, 1343, 884, - 831, 1384, 894, 628, 3671, 1948, 1941, 1924, 1900, 1871, - 1859, 1843, 1823, 500, 1803, 1786, 1757, 611, 600, 309, - 657, 928, 752, 1426, 1461, 938, 1795, 1794, 1793, 1791, - 1494, 772, 971, 1011, 1051, 867, 1042, 1065, 1082, 1092, - 1536, 0, 1094, 1547, 1117, 902, 1588, 1127, 1759, 1755, + 627, 259, 1106, 1142, 741, 210, 2293, 2279, 683, 513, + 2275, 2271, 352, 747, 1178, 780, 788, 1220, 815, 2270, + 400, 325, 2261, 2258, 2248, 2246, 2242, 0, 2240, 0, + 489, 2223, 2213, 2198, 2211, 2198, 420, 407, 529, 490, + 491, 1263, 1299, 1335, 2235, 2234, 839, 2234, 2232, 2228, + 2226, 528, 848, 657, 856, 665, 1371, 0, 877, 1382, + 886, 894, 1424, 913, 570, 3665, 2208, 2197, 2198, 2177, + 2184, 2193, 2190, 2169, 558, 2145, 2098, 2099, 648, 626, + 530, 559, 923, 336, 1467, 1503, 964, 2138, 2137, 2108, + 2086, 1537, 551, 1000, 1041, 1082, 653, 694, 797, 1049, - 629, 577, 1751, 1738, 762, 885, 878, 1719, 1686, 607, - 601, 889, 969, 1629, 1663, 1697, 1719, 1718, 1717, 1161, - 1732, 1169, 979, 1772, 1204, 1235, 1725, 1245, 1272, 1282, - 1127, 1195, 1218, 1307, 1307, 1318, 1814, 0, 1320, 1825, - 1360, 1019, 1866, 1403, 1666, 1669, 936, 3671, 1670, 1662, - 1643, 1627, 1017, 3671, 1057, 3671, 1105, 1613, 1606, 456, - 1212, 643, 1106, 1437, 773, 1907, 1941, 1370, 1645, 1630, - 1445, 1263, 1470, 1283, 1976, 0, 676, 1987, 1478, 1411, - 2027, 1513, 1566, 1607, 1639, 1426, 1504, 1649, 1651, 1671, - 1681, 2069, 0, 1683, 2080, 1705, 1486, 1715, 1594, 1589, + 923, 1580, 0, 1116, 1591, 1090, 1008, 1633, 1125, 2069, + 2065, 747, 686, 2046, 2005, 786, 926, 905, 2014, 1982, + 679, 634, 544, 915, 1675, 1710, 1745, 2015, 1978, 1962, + 1150, 1781, 1158, 1133, 1822, 1197, 1166, 1954, 1239, 1273, + 1207, 950, 951, 962, 991, 1247, 1073, 1865, 0, 1283, + 1876, 1307, 1315, 1918, 1323, 1923, 1923, 1188, 3665, 1924, + 1898, 1893, 1873, 1286, 3665, 1336, 3665, 707, 1790, 1783, + 786, 930, 764, 1298, 1358, 1041, 1960, 1995, 1400, 1823, + 1799, 1348, 708, 1406, 1348, 2031, 0, 559, 2042, 1441, + 1449, 2083, 1477, 1487, 1513, 1523, 1230, 1290, 1458, 1548, - 1591, 1547, 1169, 1210, 1525, 1463, 1445, 883, 715, 1866, - 1424, 2122, 2157, 2192, 2227, 1446, 1751, 1791, 1844, 1445, - 1567, 1608, 1883, 1716, 2262, 0, 792, 2273, 1915, 1521, - 2313, 1925, 1949, 1438, 1959, 2006, 2046, 1652, 1742, 2090, - 963, 1061, 2355, 0, 1055, 1368, 1325, 1299, 1272, 1409, - 3671, 1449, 3671, 1256, 1568, 2104, 336, 1321, 1773, 1867, - 2104, 970, 2365, 2400, 2435, 2470, 1256, 2052, 1197, 2137, - 2167, 2147, 1128, 1100, 1792, 1926, 2175, 1960, 2505, 0, - 1097, 2516, 2200, 1891, 2556, 2210, 2236, 2245, 2291, 1835, - 1106, 1141, 1519, 3671, 1572, 1074, 1014, 825, 881, 288, + 1557, 1602, 2126, 0, 1613, 2137, 1650, 1565, 1660, 1765, + 1763, 1680, 1675, 1359, 1406, 1626, 1601, 1577, 897, 938, + 1695, 1589, 2180, 2216, 2252, 2288, 1611, 1686, 1720, 1731, + 1563, 1478, 1504, 1694, 1524, 2324, 0, 617, 2335, 1753, + 1761, 2376, 1769, 1798, 1550, 1808, 1841, 1851, 1335, 1358, + 1887, 714, 825, 2419, 0, 926, 1407, 1508, 1506, 1471, + 1547, 3665, 1616, 3665, 1423, 1731, 1907, 1512, 1575, 1910, + 1915, 1935, 1498, 2429, 2465, 1971, 1611, 1977, 1457, 2005, + 2015, 1987, 1408, 1254, 1732, 1782, 2059, 1842, 2501, 0, + 1025, 2512, 2067, 2100, 2553, 2108, 2155, 2164, 2189, 1769, - 833, 2028, 2267, 2314, 2344, 2338, 2381, 2392, 2400, 2598, - 2633, 2668, 2411, 1935, 2446, 2456, 2480, 832, 829, 1988, - 2007, 2488, 2104, 2703, 0, 1206, 2714, 2533, 2183, 2575, - 801, 2542, 2607, 2426, 788, 1591, 3671, 1611, 683, 3671, - 699, 3671, 1228, 2615, 2641, 2649, 1257, 2756, 2791, 2659, - 2682, 656, 2692, 2733, 2766, 589, 549, 2123, 510, 428, - 2774, 0, 1286, 1612, 3671, 1756, 2114, 2826, 2861, 2896, - 2799, 2807, 2815, 399, 0, 280, 1757, 3671, 215, 2837, - 1620, 2931, 2966, 2847, 3671, 2870, 2880, 2218, 3671, 155, - 3671, 2907, 2915, 2948, 53, 2981, 2741, 3671, 3029, 3045, + 1207, 1189, 1634, 3665, 1699, 1162, 1113, 1074, 1118, 384, + 1040, 2211, 2218, 2238, 2243, 2263, 2288, 2249, 2307, 2596, + 2632, 2668, 2304, 2354, 2395, 1025, 1006, 1889, 2016, 2362, + 2043, 2704, 0, 1224, 2715, 2403, 2437, 2445, 992, 2454, + 2474, 2483, 903, 1921, 3665, 1941, 839, 3665, 843, 3665, + 1306, 2489, 2529, 2537, 1911, 2758, 2794, 2573, 2579, 811, + 2607, 2617, 2642, 640, 629, 2109, 535, 447, 2650, 0, + 1428, 1942, 3665, 2044, 2216, 2830, 2866, 2902, 2676, 2684, + 2692, 337, 0, 333, 2067, 3665, 327, 2733, 1912, 2938, + 2974, 2743, 3665, 2767, 2777, 2658, 3665, 166, 3665, 2805, - 3061, 3077, 3093, 3109, 3125, 3141, 3157, 3163, 3179, 3195, - 1394, 3211, 3227, 3243, 3259, 3275, 3291, 3307, 3313, 3320, - 3336, 3352, 3358, 3365, 3371, 3377, 3383, 3390, 3396, 3402, - 3408, 3415, 3423, 3429, 3435, 3441, 3448, 3456, 3462, 3468, - 3475, 3483, 3489, 3497, 3504, 3512, 3518, 3526, 3533, 3541, - 3557, 3573, 3579, 3587, 3594, 3610, 3616, 3624, 3630, 3638, - 1460, 3654 + 2813, 2847, 63, 2855, 2881, 3665, 3023, 3039, 3055, 3071, + 3087, 3103, 3119, 3135, 3151, 3157, 3173, 3189, 1498, 3205, + 3221, 3237, 3253, 3269, 3285, 3301, 3307, 3314, 3330, 3346, + 3352, 3359, 3365, 3371, 3377, 3384, 3390, 3396, 3402, 3409, + 3417, 3423, 3429, 3435, 3442, 3450, 3456, 3462, 3469, 3477, + 3483, 3491, 3498, 3506, 3512, 3520, 3527, 3535, 3551, 3567, + 3573, 3581, 3588, 3604, 3610, 3618, 3624, 3632, 1295, 3648 } ; -static yyconst short int yy_def[663] = +static yyconst short int yy_def[671] = { 0, - 598, 1, 1, 1, 599, 599, 600, 600, 601, 601, - 602, 602, 598, 603, 598, 598, 598, 598, 604, 605, - 598, 598, 606, 598, 607, 603, 26, 26, 608, 598, - 598, 598, 32, 32, 34, 34, 34, 34, 603, 26, - 603, 598, 604, 32, 32, 34, 34, 34, 598, 598, - 598, 609, 603, 610, 598, 610, 598, 610, 598, 604, - 598, 611, 612, 598, 612, 598, 612, 598, 613, 614, - 614, 614, 598, 598, 603, 603, 598, 598, 615, 598, - 616, 598, 605, 598, 617, 605, 606, 606, 607, 618, - 603, 603, 26, 608, 93, 93, 93, 93, 619, 620, + 606, 1, 1, 1, 607, 607, 608, 608, 609, 609, + 610, 610, 606, 611, 606, 606, 606, 606, 612, 613, + 606, 606, 614, 606, 615, 611, 26, 26, 616, 606, + 606, 606, 32, 32, 32, 35, 35, 35, 35, 35, + 35, 611, 26, 611, 606, 612, 32, 32, 35, 35, + 35, 606, 606, 606, 617, 611, 618, 606, 618, 606, + 618, 606, 612, 606, 619, 620, 606, 620, 606, 620, + 606, 621, 622, 622, 622, 606, 606, 611, 611, 606, + 606, 623, 606, 624, 606, 613, 606, 625, 613, 614, + 614, 615, 626, 611, 611, 26, 616, 96, 96, 96, - 32, 34, 34, 34, 34, 34, 34, 603, 598, 603, - 598, 598, 598, 598, 598, 598, 615, 603, 93, 603, - 603, 603, 598, 598, 598, 598, 609, 621, 603, 603, - 610, 610, 598, 598, 598, 616, 598, 611, 612, 612, - 598, 598, 612, 612, 614, 598, 614, 614, 598, 598, - 615, 622, 598, 598, 617, 617, 598, 603, 603, 603, - 93, 161, 623, 598, 624, 598, 32, 34, 34, 34, - 34, 34, 34, 34, 34, 603, 598, 598, 598, 598, - 598, 615, 603, 161, 603, 603, 603, 598, 603, 598, - 622, 603, 603, 603, 603, 603, 603, 625, 626, 626, + 96, 627, 628, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 611, 606, 611, 606, 606, 606, 606, + 606, 606, 623, 611, 96, 611, 611, 611, 606, 606, + 606, 606, 617, 629, 611, 611, 618, 618, 606, 606, + 606, 624, 606, 619, 620, 620, 606, 606, 620, 620, + 622, 606, 622, 622, 606, 606, 623, 630, 606, 606, + 625, 625, 606, 611, 611, 611, 96, 167, 631, 606, + 632, 606, 104, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 611, 606, 606, 606, 606, 606, + 623, 611, 167, 611, 611, 611, 606, 611, 606, 630, - 200, 627, 626, 628, 166, 598, 206, 206, 598, 206, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 603, - 598, 598, 598, 598, 598, 615, 603, 603, 603, 603, - 603, 603, 603, 598, 629, 629, 236, 629, 630, 631, - 632, 598, 633, 209, 633, 633, 246, 633, 598, 249, - 249, 598, 249, 598, 598, 34, 34, 34, 34, 34, - 34, 34, 34, 603, 598, 598, 598, 615, 603, 603, - 603, 603, 603, 603, 603, 603, 634, 634, 635, 636, - 598, 598, 598, 598, 598, 637, 637, 638, 252, 638, - 638, 291, 638, 598, 294, 294, 598, 294, 34, 34, + 611, 611, 611, 611, 611, 611, 633, 634, 634, 209, + 635, 634, 636, 172, 606, 215, 215, 606, 215, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 611, 606, 606, 606, 606, 606, 623, 611, 611, 611, + 611, 611, 611, 611, 606, 637, 637, 247, 637, 638, + 639, 640, 606, 641, 218, 641, 641, 257, 641, 606, + 260, 260, 606, 260, 606, 606, 35, 35, 35, 35, + 35, 35, 35, 35, 611, 606, 606, 606, 623, 611, + 611, 611, 611, 611, 611, 611, 611, 642, 642, 643, + 644, 606, 606, 606, 606, 606, 645, 645, 646, 263, - 34, 34, 34, 34, 34, 34, 603, 598, 598, 615, - 603, 603, 603, 603, 603, 603, 598, 639, 640, 281, - 598, 321, 321, 598, 321, 598, 598, 598, 598, 598, - 598, 641, 641, 642, 297, 642, 642, 337, 642, 598, - 340, 340, 598, 340, 34, 34, 598, 598, 34, 34, - 34, 34, 598, 598, 598, 598, 603, 598, 598, 615, - 603, 603, 603, 603, 603, 603, 603, 603, 598, 643, - 598, 644, 324, 644, 644, 375, 375, 598, 378, 378, - 598, 378, 598, 598, 598, 598, 645, 645, 646, 343, - 646, 646, 392, 646, 598, 395, 395, 395, 34, 34, + 646, 646, 302, 646, 606, 305, 305, 606, 305, 35, + 35, 35, 35, 35, 35, 35, 35, 611, 606, 606, + 623, 611, 611, 611, 611, 611, 611, 606, 647, 648, + 292, 606, 332, 332, 606, 332, 606, 606, 606, 606, + 606, 606, 649, 649, 650, 308, 650, 650, 348, 650, + 606, 351, 351, 606, 351, 35, 35, 606, 606, 35, + 35, 35, 35, 606, 606, 606, 606, 611, 606, 606, + 623, 611, 611, 611, 611, 611, 611, 611, 611, 606, + 651, 606, 652, 335, 652, 652, 386, 386, 606, 389, + 389, 606, 389, 606, 606, 606, 606, 653, 653, 654, - 34, 34, 34, 34, 603, 598, 598, 615, 603, 603, - 603, 603, 603, 603, 603, 598, 598, 598, 598, 647, - 647, 648, 381, 648, 648, 425, 425, 598, 428, 428, - 598, 428, 598, 598, 598, 598, 598, 598, 649, 649, - 650, 650, 650, 443, 443, 34, 34, 34, 34, 598, - 598, 598, 598, 598, 598, 615, 615, 603, 651, 652, - 603, 603, 603, 603, 603, 603, 603, 598, 598, 598, - 598, 598, 598, 653, 653, 654, 431, 654, 654, 479, - 479, 598, 482, 482, 598, 482, 598, 598, 598, 598, - 655, 655, 598, 598, 34, 34, 34, 598, 656, 615, + 354, 654, 654, 403, 654, 606, 406, 406, 406, 35, + 35, 35, 35, 35, 35, 611, 606, 606, 623, 611, + 611, 611, 611, 611, 611, 611, 606, 606, 606, 606, + 655, 655, 656, 392, 656, 656, 436, 436, 606, 439, + 439, 606, 439, 606, 606, 606, 606, 606, 606, 657, + 657, 658, 658, 658, 454, 454, 35, 35, 35, 35, + 606, 606, 606, 606, 606, 606, 623, 623, 611, 659, + 660, 611, 611, 611, 611, 611, 611, 606, 606, 606, + 606, 606, 606, 661, 661, 662, 442, 662, 662, 489, + 489, 606, 492, 492, 606, 492, 606, 606, 606, 606, - 603, 651, 651, 651, 651, 598, 651, 652, 652, 603, - 603, 603, 603, 603, 598, 598, 598, 598, 657, 657, - 658, 485, 658, 658, 524, 524, 598, 527, 527, 527, - 598, 598, 598, 598, 598, 598, 598, 34, 34, 598, - 656, 598, 615, 598, 598, 603, 603, 603, 603, 603, - 598, 598, 598, 598, 598, 598, 659, 659, 660, 660, - 660, 561, 561, 598, 598, 34, 615, 603, 603, 603, - 598, 598, 598, 598, 661, 661, 598, 598, 662, 603, - 603, 603, 603, 603, 598, 598, 598, 598, 598, 662, - 598, 603, 603, 603, 603, 603, 603, 0, 598, 598, + 663, 663, 606, 606, 35, 35, 35, 606, 664, 623, + 611, 659, 659, 659, 659, 606, 659, 660, 660, 611, + 611, 611, 606, 606, 606, 606, 665, 665, 666, 495, + 666, 666, 532, 532, 606, 535, 535, 535, 606, 606, + 606, 606, 606, 606, 606, 35, 35, 606, 664, 606, + 623, 606, 606, 611, 611, 611, 611, 611, 606, 606, + 606, 606, 606, 606, 667, 667, 668, 668, 668, 569, + 569, 606, 606, 35, 623, 611, 611, 611, 606, 606, + 606, 606, 669, 669, 606, 606, 670, 611, 611, 611, + 611, 611, 606, 606, 606, 606, 606, 670, 606, 611, - 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, - 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, - 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, - 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, - 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, - 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, - 598, 598 + 611, 611, 611, 611, 611, 0, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606 } ; -static yyconst short int yy_nxt[3737] = +static yyconst short int yy_nxt[3732] = { 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, 14, 23, 24, 14, 14, 25, 26, 27, 28, 26, 26, - 26, 26, 26, 29, 30, 31, 14, 32, 32, 32, - 32, 33, 34, 34, 34, 34, 35, 36, 34, 37, - 34, 38, 34, 34, 34, 34, 34, 39, 14, 40, - 40, 40, 40, 40, 40, 14, 14, 14, 14, 14, - 14, 14, 41, 14, 14, 42, 49, 49, 76, 43, - 50, 50, 71, 16, 72, 73, 51, 51, 76, 52, - 52, 123, 137, 109, 147, 110, 15, 55, 56, 148, - 57, 124, 84, 44, 45, 130, 57, 46, 80, 141, + 26, 26, 26, 29, 30, 31, 14, 32, 33, 33, + 33, 34, 35, 35, 35, 35, 36, 37, 35, 38, + 39, 40, 41, 35, 35, 35, 35, 35, 42, 14, + 43, 43, 43, 43, 43, 43, 14, 14, 14, 14, + 14, 14, 14, 44, 14, 14, 45, 79, 52, 105, + 46, 170, 53, 52, 105, 87, 79, 53, 54, 107, + 172, 55, 129, 54, 116, 105, 55, 74, 16, 75, + 76, 194, 130, 88, 47, 48, 79, 124, 49, 153, - 76, 15, 55, 56, 47, 57, 142, 48, 57, 58, - 85, 57, 71, 16, 72, 73, 90, 90, 74, 76, - 90, 90, 140, 57, 58, 144, 109, 53, 53, 140, - 146, 183, 59, 146, 86, 84, 137, 109, 90, 96, - 96, 96, 96, 96, 96, 96, 96, 59, 15, 16, - 17, 111, 60, 149, 150, 182, 145, 591, 74, 164, - 91, 97, 97, 97, 97, 97, 98, 75, 166, 95, - 95, 95, 95, 95, 95, 95, 95, 156, 76, 112, - 113, 123, 76, 114, 162, 162, 162, 162, 162, 162, - 115, 124, 227, 116, 61, 62, 62, 62, 62, 62, + 15, 58, 59, 125, 60, 50, 111, 35, 51, 35, + 60, 79, 35, 136, 35, 15, 58, 59, 89, 60, + 143, 115, 60, 61, 154, 60, 74, 16, 75, 76, + 56, 79, 147, 127, 77, 56, 148, 60, 61, 93, + 93, 150, 115, 93, 93, 238, 152, 62, 99, 99, + 99, 99, 99, 99, 99, 99, 146, 87, 79, 79, + 146, 93, 62, 15, 16, 17, 117, 63, 599, 152, + 192, 195, 129, 77, 100, 100, 100, 100, 100, 101, + 143, 115, 130, 78, 94, 98, 98, 98, 98, 98, + 98, 98, 98, 79, 118, 119, 155, 156, 120, 151, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 15, 16, 17, 125, 60, 591, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 153, 75, 76, 154, 154, 154, 154, 154, - 154, 154, 154, 137, 109, 76, 186, 229, 61, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 15, 16, 17, 64, - 60, 137, 109, 76, 184, 65, 66, 67, 176, 76, - 80, 128, 128, 371, 598, 128, 128, 90, 90, 68, + 162, 79, 83, 143, 115, 121, 185, 153, 122, 238, + 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 15, 16, + 17, 131, 63, 97, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 79, 139, 115, 140, 152, 141, 154, 78, 79, 140, + 191, 141, 85, 85, 85, 85, 85, 85, 85, 85, + 143, 115, 201, 141, 141, 64, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 15, 16, 17, 67, 63, 141, 193, - 76, 90, 90, 76, 185, 189, 133, 109, 134, 187, - 135, 147, 598, 128, 134, 148, 135, 137, 109, 90, - 149, 150, 69, 15, 16, 17, 64, 60, 135, 135, - 80, 192, 65, 66, 67, 129, 86, 83, 80, 83, - 83, 91, 164, 83, 83, 170, 68, 83, 76, 543, - 171, 205, 135, 172, 76, 173, 76, 146, 94, 146, - 83, 83, 598, 140, 227, 76, 312, 220, 76, 69, - 80, 158, 159, 160, 158, 158, 158, 158, 158, 226, - 81, 230, 76, 82, 82, 82, 82, 82, 82, 82, - 82, 92, 500, 93, 93, 93, 93, 93, 93, 93, + 79, 152, 68, 69, 70, 606, 196, 79, 134, 134, + 79, 606, 134, 134, 79, 198, 71, 168, 168, 168, + 168, 168, 168, 606, 155, 156, 79, 231, 159, 599, + 134, 160, 160, 160, 160, 160, 160, 160, 160, 241, + 72, 15, 16, 17, 67, 63, 382, 170, 89, 283, + 68, 69, 70, 135, 162, 86, 214, 86, 86, 267, + 530, 86, 86, 268, 71, 86, 170, 164, 165, 166, + 164, 164, 164, 164, 164, 214, 93, 93, 86, 86, + 93, 93, 79, 79, 79, 240, 83, 238, 72, 83, + 168, 168, 168, 168, 168, 168, 168, 168, 93, 84, - 93, 94, 254, 76, 156, 95, 95, 95, 95, 95, - 162, 162, 162, 162, 162, 162, 162, 162, 76, 238, - 238, 238, 522, 227, 255, 76, 164, 95, 95, 95, - 95, 95, 95, 75, 139, 205, 256, 139, 139, 75, - 257, 598, 75, 75, 139, 75, 75, 75, 101, 101, - 101, 101, 101, 101, 101, 101, 94, 139, 80, 75, - 101, 101, 101, 101, 101, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 76, 102, 95, 95, 95, 95, 95, 95, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 102, 102, + 79, 265, 85, 85, 85, 85, 85, 85, 85, 85, + 95, 83, 96, 96, 96, 96, 96, 96, 96, 96, + 97, 94, 83, 266, 98, 98, 98, 98, 98, 168, + 168, 168, 168, 168, 168, 168, 168, 85, 85, 85, + 85, 85, 85, 85, 85, 79, 551, 98, 98, 98, + 98, 98, 98, 78, 145, 79, 280, 145, 145, 78, + 606, 237, 78, 78, 145, 78, 78, 78, 104, 104, + 104, 104, 104, 104, 104, 104, 97, 145, 279, 78, + 104, 104, 104, 104, 104, 105, 105, 105, 105, 106, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 102, 102, 102, 102, 102, 102, 598, 76, 269, 408, - 102, 102, 102, 102, 102, 162, 162, 162, 162, 162, - 162, 162, 162, 371, 192, 111, 193, 193, 193, 193, - 193, 193, 75, 75, 75, 75, 75, 75, 108, 109, - 75, 75, 75, 76, 75, 75, 90, 76, 75, 264, - 90, 76, 307, 112, 113, 80, 90, 114, 76, 76, - 75, 75, 75, 80, 115, 271, 227, 116, 90, 90, - 128, 128, 522, 81, 128, 128, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 128, 598, 598, 598, 598, 598, 598, 598, + 105, 79, 105, 98, 98, 98, 98, 98, 98, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 105, + 105, 105, 105, 105, 105, 105, 105, 606, 249, 249, + 249, 105, 105, 105, 105, 105, 177, 79, 79, 79, + 105, 178, 170, 275, 179, 282, 180, 117, 382, 143, + 115, 214, 97, 238, 78, 78, 78, 78, 78, 78, + 114, 115, 78, 78, 78, 170, 78, 78, 134, 134, + 78, 265, 134, 134, 214, 118, 119, 79, 79, 120, + 431, 431, 78, 78, 78, 83, 121, 93, 323, 122, + 134, 93, 79, 266, 281, 84, 146, 93, 85, 85, - 598, 154, 154, 154, 154, 154, 154, 154, 154, 80, - 268, 349, 477, 80, 129, 350, 94, 117, 80, 154, - 154, 154, 154, 154, 154, 154, 154, 311, 136, 254, - 347, 598, 598, 598, 598, 598, 598, 598, 598, 75, - 76, 75, 75, 75, 164, 75, 75, 76, 76, 75, - 128, 255, 348, 205, 128, 242, 164, 270, 361, 360, - 128, 75, 75, 75, 87, 244, 87, 87, 87, 551, - 87, 87, 128, 128, 87, 310, 231, 232, 233, 231, - 231, 231, 231, 231, 598, 164, 87, 87, 87, 89, - 76, 75, 75, 89, 244, 75, 75, 420, 420, 89, + 85, 85, 85, 85, 85, 85, 79, 79, 373, 93, + 93, 318, 324, 135, 606, 606, 606, 606, 606, 606, + 606, 606, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 484, 484, + 123, 83, 242, 243, 244, 242, 242, 242, 242, 242, + 83, 142, 530, 322, 606, 606, 606, 606, 606, 606, + 606, 606, 78, 487, 78, 78, 78, 170, 78, 78, + 253, 170, 78, 134, 79, 79, 255, 134, 606, 170, + 255, 83, 79, 134, 78, 78, 78, 90, 255, 90, + 90, 90, 372, 90, 90, 134, 134, 90, 247, 247, - 155, 542, 155, 155, 76, 410, 155, 155, 76, 313, - 155, 89, 89, 75, 161, 161, 161, 161, 161, 161, - 161, 161, 155, 155, 155, 566, 161, 161, 161, 161, - 161, 236, 236, 237, 238, 238, 238, 238, 238, 202, - 210, 210, 210, 210, 210, 210, 210, 210, 161, 161, - 161, 161, 161, 161, 167, 167, 167, 167, 167, 167, - 167, 167, 76, 353, 458, 272, 167, 167, 167, 167, - 167, 246, 246, 246, 246, 246, 246, 246, 246, 247, - 247, 247, 247, 247, 248, 354, 164, 364, 161, 161, - 161, 161, 161, 161, 127, 205, 75, 75, 127, 76, + 248, 249, 249, 249, 249, 249, 211, 253, 170, 90, + 90, 90, 92, 321, 78, 78, 92, 255, 78, 78, + 360, 382, 92, 161, 361, 161, 161, 253, 170, 161, + 161, 384, 371, 161, 92, 92, 78, 167, 167, 167, + 167, 167, 167, 167, 167, 161, 161, 161, 358, 167, + 167, 167, 167, 167, 201, 79, 202, 202, 202, 202, + 202, 202, 219, 219, 219, 219, 219, 219, 219, 219, + 359, 416, 167, 167, 167, 167, 167, 167, 173, 173, + 173, 173, 173, 173, 173, 173, 97, 364, 83, 79, + 173, 173, 173, 173, 173, 257, 257, 257, 257, 257, - 75, 75, 164, 598, 127, 245, 245, 245, 245, 245, - 245, 245, 245, 474, 474, 164, 127, 127, 75, 192, - 76, 193, 193, 193, 193, 193, 193, 193, 193, 278, - 278, 278, 278, 278, 278, 278, 278, 202, 283, 284, - 285, 283, 283, 283, 283, 283, 292, 292, 292, 292, - 292, 293, 477, 76, 192, 423, 194, 194, 194, 194, - 194, 194, 194, 194, 253, 253, 253, 253, 253, 253, - 253, 253, 242, 164, 287, 287, 287, 287, 287, 287, - 76, 164, 244, 542, 456, 80, 355, 540, 76, 192, - 244, 195, 195, 195, 195, 195, 196, 193, 193, 291, + 257, 257, 257, 258, 258, 258, 258, 258, 259, 365, + 253, 170, 79, 167, 167, 167, 167, 167, 167, 133, + 300, 78, 78, 133, 559, 78, 78, 421, 606, 133, + 256, 256, 256, 256, 256, 256, 256, 256, 606, 170, + 419, 133, 133, 78, 201, 550, 202, 202, 202, 202, + 202, 202, 202, 202, 289, 289, 289, 289, 289, 289, + 289, 289, 211, 294, 295, 296, 294, 294, 294, 294, + 294, 264, 264, 264, 264, 264, 264, 264, 264, 79, + 201, 574, 203, 203, 203, 203, 203, 203, 203, 203, + 253, 170, 298, 298, 298, 298, 298, 298, 467, 83, - 291, 291, 291, 291, 291, 291, 291, 598, 356, 290, - 290, 290, 290, 290, 290, 290, 290, 338, 338, 338, - 338, 338, 339, 76, 75, 76, 197, 197, 197, 197, - 197, 197, 197, 197, 357, 457, 76, 347, 197, 197, - 197, 197, 197, 314, 315, 316, 314, 314, 314, 314, - 314, 272, 362, 273, 273, 273, 273, 273, 273, 348, - 197, 197, 197, 197, 197, 197, 199, 200, 201, 201, - 201, 201, 201, 201, 202, 76, 242, 164, 203, 203, - 203, 203, 203, 461, 326, 76, 327, 327, 327, 327, - 327, 327, 327, 327, 376, 376, 376, 376, 376, 377, + 255, 302, 302, 302, 302, 302, 302, 302, 302, 303, + 303, 303, 303, 303, 304, 79, 201, 170, 204, 204, + 204, 204, 204, 205, 202, 202, 606, 366, 301, 301, + 301, 301, 301, 301, 301, 301, 606, 170, 325, 326, + 327, 325, 325, 325, 325, 325, 300, 501, 501, 367, + 468, 79, 78, 79, 206, 206, 206, 206, 206, 206, + 206, 206, 368, 79, 170, 170, 206, 206, 206, 206, + 206, 79, 374, 255, 300, 253, 170, 283, 79, 284, + 284, 284, 284, 284, 284, 300, 79, 420, 469, 206, + 206, 206, 206, 206, 206, 208, 209, 210, 210, 210, - 203, 203, 203, 203, 203, 203, 164, 206, 207, 208, - 206, 206, 206, 206, 206, 209, 76, 76, 353, 210, - 210, 210, 210, 210, 326, 363, 328, 328, 328, 328, - 328, 328, 328, 328, 393, 393, 393, 393, 393, 394, - 354, 210, 210, 210, 210, 210, 210, 211, 211, 211, - 211, 211, 211, 211, 211, 242, 164, 539, 355, 211, - 211, 211, 211, 211, 326, 244, 329, 329, 329, 329, - 329, 330, 327, 327, 598, 164, 491, 491, 242, 164, - 356, 197, 197, 197, 197, 197, 197, 192, 289, 193, - 193, 193, 193, 193, 193, 193, 193, 298, 298, 298, + 210, 210, 210, 211, 253, 170, 170, 212, 212, 212, + 212, 212, 79, 337, 346, 338, 338, 338, 338, 338, + 338, 338, 338, 349, 349, 349, 349, 349, 350, 487, + 212, 212, 212, 212, 212, 212, 170, 215, 216, 217, + 215, 215, 215, 215, 215, 218, 527, 527, 434, 219, + 219, 219, 219, 219, 337, 375, 339, 339, 339, 339, + 339, 339, 339, 339, 309, 309, 309, 309, 309, 309, + 309, 309, 219, 219, 219, 219, 219, 219, 220, 220, + 220, 220, 220, 220, 220, 220, 606, 170, 79, 79, + 220, 220, 220, 220, 220, 337, 346, 340, 340, 340, - 298, 298, 298, 298, 298, 598, 164, 242, 164, 333, - 333, 333, 333, 333, 333, 289, 538, 289, 519, 519, - 164, 76, 192, 423, 193, 193, 193, 193, 193, 193, - 193, 193, 337, 337, 337, 337, 337, 337, 337, 337, - 598, 164, 336, 336, 336, 336, 336, 336, 336, 336, - 244, 373, 76, 76, 242, 164, 76, 242, 164, 243, - 243, 243, 243, 243, 243, 243, 243, 244, 405, 411, - 450, 245, 245, 245, 245, 245, 325, 325, 325, 325, - 325, 325, 325, 325, 375, 375, 375, 375, 375, 375, - 375, 375, 451, 245, 245, 245, 245, 245, 245, 164, + 340, 340, 341, 338, 338, 348, 348, 348, 348, 348, + 348, 348, 348, 206, 206, 206, 206, 206, 206, 201, + 550, 202, 202, 202, 202, 202, 202, 202, 202, 253, + 170, 344, 344, 344, 344, 344, 344, 548, 606, 300, + 347, 347, 347, 347, 347, 347, 347, 347, 387, 387, + 387, 387, 387, 388, 79, 201, 547, 202, 202, 202, + 202, 202, 202, 202, 202, 336, 336, 336, 336, 336, + 336, 336, 336, 386, 386, 386, 386, 386, 386, 386, + 386, 394, 395, 396, 394, 394, 394, 394, 394, 358, + 79, 253, 170, 254, 254, 254, 254, 254, 254, 254, - 249, 250, 251, 249, 249, 249, 249, 249, 252, 164, - 468, 452, 253, 253, 253, 253, 253, 598, 289, 374, - 374, 374, 374, 374, 374, 374, 374, 557, 557, 567, - 80, 242, 164, 453, 253, 253, 253, 253, 253, 253, - 272, 289, 273, 273, 273, 273, 273, 273, 273, 273, - 383, 384, 385, 383, 383, 383, 383, 383, 326, 76, - 327, 327, 327, 327, 327, 327, 327, 327, 409, 461, - 546, 514, 514, 514, 76, 272, 371, 274, 274, 274, - 274, 274, 274, 274, 274, 326, 373, 327, 327, 327, - 327, 327, 327, 327, 327, 326, 598, 327, 327, 327, + 254, 255, 253, 170, 546, 256, 256, 256, 256, 256, + 606, 359, 385, 385, 385, 385, 385, 385, 385, 385, + 337, 170, 338, 338, 338, 338, 338, 338, 256, 256, + 256, 256, 256, 256, 170, 260, 261, 262, 260, 260, + 260, 260, 260, 263, 170, 565, 565, 264, 264, 264, + 264, 264, 337, 300, 338, 338, 338, 338, 338, 338, + 338, 338, 355, 355, 355, 355, 355, 355, 355, 355, + 264, 264, 264, 264, 264, 264, 283, 434, 284, 284, + 284, 284, 284, 284, 284, 284, 337, 364, 338, 338, + 338, 338, 338, 338, 338, 338, 253, 170, 399, 399, - 327, 327, 327, 76, 76, 498, 373, 575, 575, 76, - 272, 497, 275, 275, 275, 275, 275, 276, 273, 273, - 242, 164, 344, 344, 344, 344, 344, 344, 344, 344, - 335, 598, 164, 242, 164, 388, 388, 388, 388, 388, - 388, 335, 496, 335, 76, 242, 164, 287, 287, 287, - 287, 287, 287, 287, 287, 244, 242, 164, 288, 288, - 288, 288, 288, 288, 288, 288, 289, 495, 76, 493, - 290, 290, 290, 290, 290, 392, 392, 392, 392, 392, - 392, 392, 392, 501, 364, 365, 365, 365, 365, 365, - 365, 494, 290, 290, 290, 290, 290, 290, 164, 294, + 399, 399, 399, 399, 170, 597, 346, 575, 83, 365, + 597, 79, 283, 346, 285, 285, 285, 285, 285, 285, + 285, 285, 403, 403, 403, 403, 403, 403, 403, 403, + 404, 404, 404, 404, 404, 405, 606, 366, 402, 402, + 402, 402, 402, 402, 402, 402, 79, 79, 283, 170, + 286, 286, 286, 286, 286, 287, 284, 284, 346, 367, + 461, 606, 422, 428, 429, 430, 428, 428, 428, 428, + 428, 384, 170, 423, 424, 425, 426, 423, 423, 423, + 423, 401, 462, 79, 253, 170, 298, 298, 298, 298, + 298, 298, 298, 298, 255, 253, 170, 299, 299, 299, - 295, 296, 294, 294, 294, 294, 294, 297, 138, 138, - 450, 298, 298, 298, 298, 298, 598, 76, 391, 391, - 391, 391, 391, 391, 391, 391, 426, 426, 426, 426, - 426, 427, 451, 298, 298, 298, 298, 298, 298, 272, - 164, 273, 273, 273, 273, 273, 273, 273, 273, 289, - 452, 433, 412, 413, 414, 415, 412, 412, 412, 412, - 417, 418, 419, 417, 417, 417, 417, 417, 373, 320, - 589, 76, 453, 76, 272, 589, 273, 273, 273, 273, - 273, 273, 273, 273, 76, 382, 382, 382, 382, 382, - 382, 382, 382, 425, 425, 425, 425, 425, 425, 425, + 299, 299, 299, 299, 299, 300, 79, 463, 503, 301, + 301, 301, 301, 301, 375, 376, 376, 376, 376, 376, + 376, 393, 393, 393, 393, 393, 393, 393, 393, 464, + 504, 384, 301, 301, 301, 301, 301, 301, 170, 305, + 306, 307, 305, 305, 305, 305, 305, 308, 79, 583, + 583, 309, 309, 309, 309, 309, 436, 436, 436, 436, + 436, 436, 436, 436, 437, 437, 437, 437, 437, 438, + 478, 253, 170, 508, 309, 309, 309, 309, 309, 309, + 283, 346, 284, 284, 284, 284, 284, 284, 284, 284, + 606, 382, 435, 435, 435, 435, 435, 435, 435, 435, - 425, 444, 444, 444, 444, 444, 445, 455, 76, 321, - 322, 323, 321, 321, 321, 321, 321, 324, 164, 454, - 493, 325, 325, 325, 325, 325, 598, 335, 424, 424, - 424, 424, 424, 424, 424, 424, 480, 480, 480, 480, - 480, 481, 494, 325, 325, 325, 325, 325, 325, 242, - 164, 333, 333, 333, 333, 333, 333, 333, 333, 289, - 242, 164, 334, 334, 334, 334, 334, 334, 334, 334, - 335, 459, 76, 536, 336, 336, 336, 336, 336, 433, - 371, 434, 434, 434, 434, 434, 434, 434, 434, 449, - 373, 459, 536, 459, 459, 537, 336, 336, 336, 336, + 444, 384, 445, 445, 445, 445, 445, 445, 445, 445, + 507, 472, 144, 144, 83, 79, 283, 382, 284, 284, + 284, 284, 284, 284, 284, 284, 444, 434, 446, 446, + 446, 446, 446, 446, 446, 446, 444, 606, 447, 447, + 447, 447, 447, 448, 445, 445, 79, 434, 461, 506, + 505, 79, 332, 333, 334, 332, 332, 332, 332, 332, + 335, 253, 170, 444, 336, 336, 336, 336, 336, 510, + 462, 401, 409, 409, 409, 409, 409, 409, 409, 409, + 455, 455, 455, 455, 455, 456, 384, 336, 336, 336, + 336, 336, 336, 253, 170, 344, 344, 344, 344, 344, - 336, 336, 164, 340, 341, 342, 340, 340, 340, 340, - 340, 343, 564, 564, 537, 344, 344, 344, 344, 344, - 433, 371, 435, 435, 435, 435, 435, 435, 435, 435, - 448, 423, 447, 580, 565, 565, 446, 344, 344, 344, - 344, 344, 344, 364, 365, 365, 365, 365, 365, 365, - 365, 365, 433, 320, 436, 436, 436, 436, 436, 437, - 434, 434, 242, 164, 242, 164, 164, 76, 240, 407, - 406, 404, 335, 403, 390, 335, 76, 364, 366, 366, - 366, 366, 366, 366, 366, 366, 398, 398, 398, 398, - 398, 398, 398, 398, 598, 164, 242, 164, 440, 440, + 344, 344, 344, 300, 253, 170, 345, 345, 345, 345, + 345, 345, 345, 345, 346, 606, 170, 463, 347, 347, + 347, 347, 347, 79, 472, 401, 253, 170, 451, 451, + 451, 451, 451, 451, 331, 503, 401, 79, 511, 464, + 466, 347, 347, 347, 347, 347, 347, 170, 351, 352, + 353, 351, 351, 351, 351, 351, 354, 504, 465, 79, + 355, 355, 355, 355, 355, 454, 454, 454, 454, 454, + 454, 454, 454, 606, 79, 453, 453, 453, 453, 453, + 453, 453, 453, 355, 355, 355, 355, 355, 355, 375, + 376, 376, 376, 376, 376, 376, 376, 376, 470, 478, - 440, 440, 440, 440, 390, 402, 390, 401, 400, 399, - 76, 364, 367, 367, 367, 367, 367, 368, 365, 365, - 443, 443, 443, 443, 443, 443, 443, 443, 598, 598, - 442, 442, 442, 442, 442, 442, 442, 442, 326, 423, - 320, 240, 202, 359, 76, 371, 358, 372, 372, 372, - 372, 372, 372, 372, 372, 373, 164, 577, 577, 374, - 374, 374, 374, 374, 468, 390, 469, 469, 469, 469, - 469, 469, 469, 469, 503, 352, 504, 505, 506, 578, - 578, 374, 374, 374, 374, 374, 374, 378, 379, 380, - 378, 378, 378, 378, 378, 381, 351, 346, 345, 382, + 544, 479, 479, 479, 479, 479, 479, 479, 479, 443, + 443, 443, 443, 443, 443, 443, 443, 460, 470, 459, + 470, 471, 545, 79, 375, 377, 377, 377, 377, 377, + 377, 377, 377, 478, 470, 480, 480, 480, 480, 480, + 480, 480, 480, 79, 478, 382, 481, 481, 481, 481, + 481, 482, 479, 479, 470, 434, 470, 470, 79, 375, + 378, 378, 378, 378, 378, 379, 376, 376, 489, 489, + 489, 489, 489, 489, 489, 489, 490, 490, 490, 490, + 490, 491, 606, 170, 488, 488, 488, 488, 488, 488, + 488, 488, 401, 79, 382, 382, 383, 383, 383, 383, - 382, 382, 382, 382, 468, 371, 470, 470, 470, 470, - 470, 470, 470, 470, 320, 423, 240, 202, 202, 265, - 507, 382, 382, 382, 382, 382, 382, 242, 164, 388, - 388, 388, 388, 388, 388, 388, 388, 335, 242, 164, - 389, 389, 389, 389, 389, 389, 389, 389, 390, 164, - 309, 308, 391, 391, 391, 391, 391, 468, 390, 471, - 471, 471, 471, 471, 472, 469, 469, 306, 503, 459, - 504, 505, 506, 305, 391, 391, 391, 391, 391, 391, - 164, 395, 396, 397, 395, 395, 395, 395, 395, 459, - 304, 459, 460, 398, 398, 398, 398, 398, 432, 432, + 383, 383, 383, 383, 384, 487, 458, 457, 385, 385, + 385, 385, 385, 497, 498, 499, 497, 497, 497, 497, + 497, 444, 331, 445, 445, 445, 445, 445, 445, 445, + 445, 385, 385, 385, 385, 385, 385, 389, 390, 391, + 389, 389, 389, 389, 389, 392, 251, 418, 417, 393, + 393, 393, 393, 393, 444, 606, 445, 445, 445, 445, + 445, 445, 445, 445, 444, 487, 445, 445, 445, 445, + 445, 445, 393, 393, 393, 393, 393, 393, 253, 170, + 399, 399, 399, 399, 399, 399, 399, 399, 346, 253, + 170, 400, 400, 400, 400, 400, 400, 400, 400, 401, - 432, 432, 432, 432, 432, 432, 525, 525, 525, 525, - 525, 526, 303, 76, 509, 398, 398, 398, 398, 398, - 398, 364, 365, 365, 365, 365, 365, 365, 365, 365, - 479, 479, 479, 479, 479, 479, 479, 479, 598, 371, - 478, 478, 478, 478, 478, 478, 478, 478, 302, 477, - 514, 514, 514, 301, 76, 364, 365, 365, 365, 365, - 365, 365, 365, 365, 487, 488, 489, 487, 487, 487, - 487, 487, 433, 598, 434, 434, 434, 434, 434, 434, - 434, 434, 76, 477, 300, 299, 281, 240, 76, 371, - 202, 421, 421, 421, 421, 421, 421, 421, 421, 373, + 253, 170, 382, 402, 402, 402, 402, 402, 467, 83, + 401, 513, 487, 514, 515, 516, 513, 415, 514, 515, + 516, 509, 544, 414, 554, 588, 402, 402, 402, 402, + 402, 402, 170, 406, 407, 408, 406, 406, 406, 406, + 406, 413, 572, 572, 545, 409, 409, 409, 409, 409, + 520, 521, 522, 520, 520, 520, 520, 520, 517, 79, + 79, 412, 411, 519, 573, 573, 410, 337, 409, 409, + 409, 409, 409, 409, 375, 376, 376, 376, 376, 376, + 376, 376, 376, 79, 472, 331, 473, 473, 473, 473, + 473, 473, 523, 524, 525, 523, 523, 523, 523, 523, - 371, 371, 422, 422, 422, 422, 422, 422, 422, 422, - 423, 477, 277, 202, 424, 424, 424, 424, 424, 433, - 371, 434, 434, 434, 434, 434, 434, 434, 434, 598, - 522, 598, 598, 598, 100, 265, 424, 424, 424, 424, - 424, 424, 428, 429, 430, 428, 428, 428, 428, 428, - 431, 267, 265, 266, 432, 432, 432, 432, 432, 433, - 265, 434, 434, 434, 434, 434, 434, 515, 516, 517, - 515, 515, 515, 515, 515, 507, 432, 432, 432, 432, - 432, 432, 242, 164, 440, 440, 440, 440, 440, 440, - 440, 440, 390, 242, 164, 441, 441, 441, 441, 441, + 478, 251, 479, 479, 479, 479, 479, 479, 79, 375, + 376, 376, 376, 376, 376, 376, 376, 376, 478, 79, + 479, 479, 479, 479, 479, 479, 479, 479, 478, 382, + 479, 479, 479, 479, 479, 479, 479, 479, 211, 530, + 370, 369, 363, 79, 382, 585, 432, 432, 432, 432, + 432, 432, 432, 432, 384, 382, 606, 433, 433, 433, + 433, 433, 433, 433, 433, 434, 530, 586, 585, 435, + 435, 435, 435, 435, 496, 496, 496, 496, 496, 496, + 496, 496, 532, 532, 532, 532, 532, 532, 532, 532, + 586, 362, 435, 435, 435, 435, 435, 435, 439, 440, - 441, 441, 441, 242, 164, 456, 80, 442, 442, 442, - 442, 442, 263, 390, 262, 567, 80, 598, 499, 510, - 511, 512, 510, 510, 510, 510, 510, 522, 579, 442, - 442, 442, 442, 442, 442, 461, 371, 462, 462, 462, - 462, 462, 462, 462, 462, 261, 522, 260, 259, 258, - 468, 76, 469, 469, 469, 469, 469, 469, 469, 469, - 468, 94, 469, 469, 469, 469, 469, 469, 202, 76, - 461, 240, 463, 463, 463, 463, 463, 463, 463, 463, - 468, 202, 469, 469, 469, 469, 469, 469, 469, 469, - 486, 486, 486, 486, 486, 486, 486, 486, 562, 562, + 441, 439, 439, 439, 439, 439, 442, 357, 356, 331, + 443, 443, 443, 443, 443, 533, 533, 533, 533, 533, + 534, 606, 382, 531, 531, 531, 531, 531, 531, 531, + 531, 251, 530, 443, 443, 443, 443, 443, 443, 253, + 170, 451, 451, 451, 451, 451, 451, 451, 451, 401, + 253, 170, 452, 452, 452, 452, 452, 452, 452, 452, + 211, 211, 276, 320, 453, 453, 453, 453, 453, 170, + 539, 539, 539, 539, 539, 539, 539, 539, 170, 540, + 540, 540, 540, 540, 540, 540, 540, 453, 453, 453, + 453, 453, 453, 472, 319, 473, 473, 473, 473, 473, - 562, 562, 562, 563, 76, 461, 100, 464, 464, 464, - 464, 464, 465, 466, 466, 524, 524, 524, 524, 524, - 524, 524, 524, 598, 80, 523, 523, 523, 523, 523, - 523, 523, 523, 585, 585, 585, 585, 585, 585, 76, - 461, 190, 467, 467, 467, 462, 462, 462, 462, 462, - 164, 531, 531, 531, 531, 531, 531, 531, 531, 164, - 532, 532, 532, 532, 532, 532, 532, 532, 503, 228, - 504, 505, 506, 225, 76, 371, 224, 475, 475, 475, - 475, 475, 475, 475, 475, 423, 371, 223, 476, 476, - 476, 476, 476, 476, 476, 476, 477, 222, 221, 219, + 473, 473, 473, 170, 541, 541, 541, 541, 541, 542, + 539, 539, 606, 317, 606, 606, 606, 575, 83, 513, + 316, 514, 515, 516, 315, 314, 313, 312, 79, 472, + 587, 474, 474, 474, 474, 474, 474, 474, 474, 606, + 311, 514, 515, 516, 606, 310, 606, 606, 516, 292, + 606, 251, 606, 606, 606, 211, 288, 211, 103, 517, + 276, 278, 276, 277, 79, 472, 517, 475, 475, 475, + 475, 475, 476, 477, 477, 552, 276, 274, 553, 553, + 553, 553, 553, 553, 553, 553, 517, 273, 272, 271, + 270, 517, 269, 97, 211, 512, 512, 519, 251, 512, - 478, 478, 478, 478, 478, 164, 533, 533, 533, 533, - 533, 534, 531, 531, 507, 598, 218, 504, 505, 506, - 217, 216, 478, 478, 478, 478, 478, 478, 482, 483, - 484, 482, 482, 482, 482, 482, 485, 215, 214, 213, - 486, 486, 486, 486, 486, 598, 212, 598, 598, 506, - 544, 100, 92, 545, 545, 545, 545, 545, 545, 545, - 545, 507, 486, 486, 486, 486, 486, 486, 242, 164, - 492, 492, 492, 492, 492, 492, 492, 492, 461, 80, - 466, 466, 466, 466, 466, 466, 466, 466, 502, 502, - 80, 507, 502, 598, 190, 598, 598, 598, 145, 146, + 79, 472, 211, 477, 477, 477, 473, 473, 473, 473, + 473, 512, 512, 512, 518, 518, 103, 559, 518, 560, + 560, 560, 560, 560, 560, 560, 560, 83, 199, 239, + 518, 518, 518, 236, 235, 234, 79, 382, 233, 485, + 485, 485, 485, 485, 485, 485, 485, 434, 382, 232, + 486, 486, 486, 486, 486, 486, 486, 486, 487, 230, + 229, 228, 488, 488, 488, 488, 488, 559, 227, 561, + 561, 561, 561, 561, 561, 561, 561, 538, 538, 538, + 538, 538, 538, 538, 538, 488, 488, 488, 488, 488, + 488, 492, 493, 494, 492, 492, 492, 492, 492, 495, - 140, 140, 132, 188, 502, 502, 502, 508, 508, 126, - 126, 508, 76, 461, 181, 466, 466, 466, 466, 466, - 466, 466, 466, 508, 508, 508, 513, 513, 513, 513, - 513, 513, 513, 513, 180, 179, 178, 177, 175, 509, - 164, 531, 531, 531, 531, 531, 531, 76, 461, 174, - 466, 466, 466, 466, 466, 466, 513, 513, 76, 551, - 169, 552, 552, 552, 552, 552, 552, 552, 552, 551, - 168, 553, 553, 553, 553, 553, 553, 553, 553, 100, - 75, 100, 76, 461, 157, 513, 513, 513, 513, 513, - 513, 513, 513, 551, 88, 554, 554, 554, 554, 554, + 226, 225, 224, 496, 496, 496, 496, 496, 559, 223, + 562, 562, 562, 562, 562, 563, 560, 560, 569, 569, + 569, 569, 569, 569, 569, 569, 496, 496, 496, 496, + 496, 496, 253, 170, 502, 502, 502, 502, 502, 502, + 502, 502, 472, 222, 473, 473, 473, 473, 473, 473, + 473, 473, 570, 570, 570, 570, 570, 571, 606, 221, + 568, 568, 568, 568, 568, 568, 568, 568, 170, 539, + 539, 539, 539, 539, 539, 539, 539, 79, 472, 103, + 473, 473, 473, 473, 473, 473, 473, 473, 170, 539, + 539, 539, 539, 539, 539, 539, 539, 170, 539, 539, - 555, 552, 552, 530, 530, 530, 530, 530, 530, 530, - 530, 80, 78, 77, 76, 146, 140, 76, 371, 132, - 520, 520, 520, 520, 520, 520, 520, 520, 477, 371, - 126, 521, 521, 521, 521, 521, 521, 521, 521, 522, - 122, 121, 120, 523, 523, 523, 523, 523, 561, 561, - 561, 561, 561, 561, 561, 561, 164, 531, 531, 531, - 531, 531, 531, 531, 531, 523, 523, 523, 523, 523, - 523, 527, 528, 529, 527, 527, 527, 527, 527, 119, - 118, 107, 106, 530, 530, 530, 530, 530, 598, 105, - 560, 560, 560, 560, 560, 560, 560, 560, 104, 103, + 539, 539, 539, 539, 553, 553, 553, 553, 553, 553, + 553, 553, 95, 79, 382, 83, 528, 528, 528, 528, + 528, 528, 528, 528, 487, 382, 83, 529, 529, 529, + 529, 529, 529, 529, 529, 530, 199, 151, 152, 531, + 531, 531, 531, 531, 553, 553, 553, 553, 553, 553, + 553, 553, 576, 577, 578, 576, 576, 576, 576, 576, + 146, 146, 531, 531, 531, 531, 531, 531, 535, 536, + 537, 535, 535, 535, 535, 535, 138, 197, 132, 132, + 538, 538, 538, 538, 538, 79, 554, 190, 555, 555, + 555, 555, 555, 555, 579, 580, 581, 579, 579, 579, - 100, 88, 78, 77, 76, 530, 530, 530, 530, 530, - 530, 546, 598, 547, 547, 547, 547, 547, 547, 547, - 547, 164, 531, 531, 531, 531, 531, 531, 531, 531, - 545, 545, 545, 545, 545, 545, 545, 545, 598, 598, - 598, 598, 598, 598, 598, 76, 546, 598, 548, 548, - 548, 548, 548, 548, 548, 548, 545, 545, 545, 545, - 545, 545, 545, 545, 568, 569, 570, 568, 568, 568, - 568, 568, 546, 598, 547, 547, 547, 547, 547, 547, - 76, 546, 598, 549, 549, 549, 549, 549, 550, 547, - 547, 598, 598, 598, 598, 598, 76, 571, 572, 573, + 579, 579, 189, 538, 538, 538, 538, 538, 538, 554, + 188, 555, 555, 555, 555, 555, 555, 555, 555, 187, + 559, 79, 560, 560, 560, 560, 560, 560, 560, 560, + 559, 186, 560, 560, 560, 560, 560, 560, 560, 560, + 184, 183, 182, 181, 79, 554, 176, 556, 556, 556, + 556, 556, 556, 556, 556, 559, 175, 560, 560, 560, + 560, 560, 560, 382, 174, 584, 584, 584, 584, 584, + 584, 584, 584, 593, 593, 593, 593, 593, 593, 103, + 79, 554, 78, 557, 557, 557, 557, 557, 558, 555, + 555, 593, 593, 593, 593, 593, 593, 593, 593, 594, - 571, 571, 571, 571, 571, 551, 76, 552, 552, 552, - 552, 552, 552, 552, 552, 76, 371, 598, 558, 558, - 558, 558, 558, 558, 558, 558, 522, 371, 598, 559, - 559, 559, 559, 559, 559, 559, 559, 598, 598, 598, - 598, 560, 560, 560, 560, 560, 551, 598, 552, 552, - 552, 552, 552, 552, 552, 552, 595, 595, 595, 595, - 595, 595, 598, 560, 560, 560, 560, 560, 560, 546, - 598, 547, 547, 547, 547, 547, 547, 547, 547, 551, - 598, 552, 552, 552, 552, 552, 552, 371, 76, 576, - 576, 576, 576, 576, 576, 576, 576, 598, 598, 598, + 594, 594, 594, 594, 594, 594, 594, 595, 595, 595, + 595, 595, 596, 593, 593, 103, 79, 382, 163, 566, + 566, 566, 566, 566, 566, 566, 566, 530, 382, 91, + 567, 567, 567, 567, 567, 567, 567, 567, 83, 81, + 80, 79, 568, 568, 568, 568, 568, 152, 600, 601, + 602, 600, 600, 600, 600, 600, 588, 146, 589, 589, + 589, 589, 589, 589, 138, 568, 568, 568, 568, 568, + 568, 554, 132, 555, 555, 555, 555, 555, 555, 555, + 555, 79, 593, 593, 593, 593, 593, 593, 593, 593, + 128, 79, 593, 593, 593, 593, 593, 593, 593, 593, - 598, 598, 598, 76, 546, 598, 547, 547, 547, 547, - 547, 547, 547, 547, 585, 585, 585, 585, 585, 585, - 585, 585, 586, 586, 586, 586, 586, 586, 586, 586, - 587, 587, 587, 587, 587, 588, 585, 585, 76, 580, - 598, 581, 581, 581, 581, 581, 581, 581, 581, 598, - 598, 598, 592, 593, 594, 592, 592, 592, 592, 592, - 580, 598, 581, 581, 581, 581, 581, 581, 598, 598, - 598, 598, 598, 76, 580, 598, 582, 582, 582, 582, - 582, 582, 582, 582, 76, 585, 585, 585, 585, 585, - 585, 585, 585, 598, 76, 585, 585, 585, 585, 585, + 126, 113, 112, 111, 110, 109, 79, 554, 108, 555, + 555, 555, 555, 555, 555, 555, 555, 105, 103, 91, + 603, 603, 603, 603, 603, 603, 603, 603, 600, 600, + 600, 600, 600, 600, 600, 600, 81, 80, 79, 606, + 606, 606, 79, 588, 606, 589, 589, 589, 589, 589, + 589, 589, 589, 79, 606, 606, 606, 606, 606, 606, + 606, 79, 604, 604, 604, 604, 604, 605, 603, 603, + 603, 603, 603, 603, 603, 603, 603, 603, 79, 588, + 606, 590, 590, 590, 590, 590, 590, 590, 590, 606, + 606, 606, 606, 606, 606, 79, 603, 603, 603, 603, - 585, 585, 585, 598, 598, 598, 598, 598, 76, 580, - 598, 583, 583, 583, 583, 583, 584, 581, 581, 598, - 598, 598, 595, 595, 595, 595, 595, 595, 595, 595, - 592, 592, 592, 592, 592, 592, 592, 592, 598, 598, - 598, 598, 598, 76, 580, 598, 581, 581, 581, 581, - 581, 581, 581, 581, 76, 598, 598, 598, 598, 598, - 598, 598, 76, 596, 596, 596, 596, 596, 597, 595, - 595, 598, 598, 598, 598, 598, 598, 598, 76, 580, - 598, 581, 581, 581, 581, 581, 581, 581, 581, 598, - 598, 598, 598, 598, 598, 76, 595, 595, 595, 595, + 603, 603, 606, 79, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 79, 588, 606, 591, 591, 591, + 591, 591, 592, 589, 589, 606, 606, 606, 606, 79, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 79, 588, 606, 589, 589, 589, 589, 589, 589, 589, + 589, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 79, 588, 606, 589, + 589, 589, 589, 589, 589, 589, 589, 606, 606, 606, - 595, 595, 595, 595, 598, 598, 598, 598, 598, 598, - 598, 598, 598, 76, 598, 598, 598, 598, 598, 598, - 598, 598, 598, 598, 598, 598, 598, 598, 76, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 54, 54, 54, 54, 31, 31, 31, 31, 31, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 79, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 75, 598, 598, 598, 598, 598, 598, + 31, 31, 31, 31, 31, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 78, 606, 606, + 606, 606, 606, 606, 606, 78, 78, 78, 606, 606, - 598, 75, 75, 75, 598, 598, 75, 75, 75, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 83, 598, 598, 598, 598, - 83, 598, 598, 83, 83, 83, 83, 598, 83, 83, - 83, 87, 598, 598, 598, 598, 598, 598, 598, 87, - 87, 87, 598, 598, 87, 87, 87, 89, 598, 598, - 89, 89, 598, 89, 598, 89, 89, 89, 598, 598, - 89, 89, 89, 99, 99, 598, 598, 598, 99, 127, - 598, 598, 127, 127, 598, 127, 598, 127, 127, 127, - 598, 598, 127, 127, 127, 131, 598, 598, 131, 131, + 78, 78, 78, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 86, + 606, 606, 606, 606, 86, 606, 606, 86, 86, 86, + 86, 606, 86, 86, 86, 90, 606, 606, 606, 606, + 606, 606, 606, 90, 90, 90, 606, 606, 90, 90, + 90, 92, 606, 606, 92, 92, 606, 92, 606, 92, + 92, 92, 606, 606, 92, 92, 92, 102, 102, 606, + 606, 606, 102, 133, 606, 606, 133, 133, 606, 133, + 606, 133, 133, 133, 606, 606, 133, 133, 133, 137, + 606, 606, 137, 137, 606, 137, 606, 137, 137, 137, - 598, 131, 598, 131, 131, 131, 598, 131, 598, 131, - 131, 139, 598, 598, 139, 598, 598, 139, 598, 139, - 139, 139, 139, 598, 139, 139, 139, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 145, 145, 598, 145, 598, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 151, - 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 152, 152, 598, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 155, 598, 598, 598, 598, 155, 598, 598, 155, + 606, 137, 606, 137, 137, 145, 606, 606, 145, 606, + 606, 145, 606, 145, 145, 145, 145, 606, 145, 145, + 145, 149, 149, 149, 149, 149, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 151, 151, 606, + 151, 606, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 158, + 158, 606, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 161, 606, 606, 606, 606, + 161, 606, 606, 161, 161, 161, 606, 606, 161, 161, - 155, 155, 598, 598, 155, 155, 155, 90, 598, 598, - 90, 90, 598, 90, 598, 90, 90, 90, 598, 598, - 90, 90, 90, 163, 163, 598, 598, 598, 163, 165, - 165, 165, 598, 598, 598, 165, 128, 598, 598, 128, - 128, 598, 128, 598, 128, 128, 128, 598, 598, 128, - 128, 128, 191, 191, 191, 191, 191, 191, 191, 191, - 191, 191, 191, 191, 191, 191, 191, 191, 198, 198, - 598, 598, 598, 198, 204, 204, 204, 598, 598, 598, - 204, 234, 234, 598, 598, 598, 234, 235, 235, 598, - 598, 598, 235, 239, 239, 598, 598, 598, 239, 241, + 161, 93, 606, 606, 93, 93, 606, 93, 606, 93, + 93, 93, 606, 606, 93, 93, 93, 169, 169, 606, + 606, 606, 169, 171, 171, 171, 606, 606, 606, 171, + 134, 606, 606, 134, 134, 606, 134, 606, 134, 134, + 134, 606, 606, 134, 134, 134, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 207, 207, 606, 606, 606, 207, 213, 213, + 213, 606, 606, 606, 213, 245, 245, 606, 606, 606, + 245, 246, 246, 606, 606, 606, 246, 250, 250, 606, + 606, 606, 250, 252, 252, 252, 606, 606, 606, 252, - 241, 241, 598, 598, 598, 241, 277, 277, 598, 598, - 598, 277, 279, 279, 598, 598, 598, 279, 280, 280, - 598, 598, 598, 280, 282, 282, 282, 598, 598, 598, - 282, 286, 286, 286, 286, 598, 598, 598, 286, 317, - 317, 598, 598, 598, 317, 318, 318, 598, 598, 598, - 318, 319, 319, 598, 598, 598, 319, 331, 331, 331, - 598, 598, 598, 331, 332, 332, 332, 332, 598, 598, - 598, 332, 369, 369, 598, 598, 598, 369, 370, 370, - 598, 598, 598, 370, 386, 386, 386, 598, 598, 598, - 386, 387, 387, 387, 387, 598, 598, 598, 387, 416, + 288, 288, 606, 606, 606, 288, 290, 290, 606, 606, + 606, 290, 291, 291, 606, 606, 606, 291, 293, 293, + 293, 606, 606, 606, 293, 297, 297, 297, 297, 606, + 606, 606, 297, 328, 328, 606, 606, 606, 328, 329, + 329, 606, 606, 606, 329, 330, 330, 606, 606, 606, + 330, 342, 342, 342, 606, 606, 606, 342, 343, 343, + 343, 343, 606, 606, 606, 343, 380, 380, 606, 606, + 606, 380, 381, 381, 606, 606, 606, 381, 397, 397, + 397, 606, 606, 606, 397, 398, 398, 398, 398, 606, + 606, 606, 398, 427, 427, 606, 606, 606, 427, 431, - 416, 598, 598, 598, 416, 420, 598, 420, 420, 598, - 598, 598, 420, 438, 438, 438, 598, 598, 598, 438, - 439, 439, 439, 439, 598, 598, 598, 439, 473, 473, - 598, 598, 598, 473, 474, 598, 474, 474, 598, 598, - 598, 474, 490, 490, 490, 598, 598, 598, 490, 491, - 491, 491, 598, 598, 598, 598, 491, 502, 502, 598, - 502, 502, 502, 598, 598, 502, 502, 502, 598, 598, - 502, 502, 502, 508, 508, 598, 508, 508, 508, 598, - 598, 508, 508, 508, 598, 598, 508, 508, 508, 518, - 518, 598, 598, 598, 518, 519, 598, 519, 519, 598, + 606, 431, 431, 606, 606, 606, 431, 449, 449, 449, + 606, 606, 606, 449, 450, 450, 450, 450, 606, 606, + 606, 450, 483, 483, 606, 606, 606, 483, 484, 606, + 484, 484, 606, 606, 606, 484, 500, 500, 500, 606, + 606, 606, 500, 501, 501, 501, 606, 606, 606, 606, + 501, 512, 512, 606, 512, 512, 512, 606, 606, 512, + 512, 512, 606, 606, 512, 512, 512, 518, 518, 606, + 518, 518, 518, 606, 606, 518, 518, 518, 606, 606, + 518, 518, 518, 526, 526, 606, 606, 606, 526, 527, + 606, 527, 527, 606, 606, 606, 527, 543, 543, 606, - 598, 598, 519, 535, 535, 598, 598, 598, 598, 535, - 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, - 541, 541, 541, 541, 541, 541, 556, 556, 598, 598, - 598, 556, 557, 598, 557, 557, 598, 598, 598, 557, - 574, 574, 598, 598, 598, 574, 575, 598, 575, 598, - 598, 598, 598, 575, 590, 590, 590, 590, 590, 590, - 590, 590, 590, 590, 590, 590, 590, 590, 590, 590, - 13, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 606, 606, 606, 543, 549, 549, 549, 549, 549, 549, + 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, + 564, 564, 606, 606, 606, 564, 565, 606, 565, 565, + 606, 606, 606, 565, 582, 582, 606, 606, 606, 582, + 583, 606, 583, 606, 606, 606, 606, 583, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, - 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 13, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, - 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, - 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, - 598, 598, 598, 598, 598, 598 + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606 } ; -static yyconst short int yy_chk[3737] = +static yyconst short int yy_chk[3732] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -981,411 +982,411 @@ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 3, 4, 41, 2, - 3, 4, 11, 11, 11, 11, 3, 4, 53, 3, - 4, 49, 61, 61, 71, 41, 5, 5, 5, 72, - 5, 49, 20, 2, 2, 53, 5, 2, 117, 65, + 1, 1, 1, 1, 1, 1, 2, 44, 3, 34, + 2, 103, 3, 4, 47, 20, 126, 4, 3, 34, + 103, 3, 52, 4, 44, 48, 4, 11, 11, 11, + 11, 126, 52, 20, 2, 2, 56, 47, 2, 74, - 595, 6, 6, 6, 2, 6, 67, 2, 5, 5, - 20, 6, 12, 12, 12, 12, 25, 25, 11, 118, - 25, 25, 65, 6, 6, 69, 69, 3, 4, 67, - 71, 118, 5, 72, 20, 85, 108, 108, 25, 27, - 27, 27, 27, 27, 27, 27, 27, 6, 7, 7, - 7, 42, 7, 74, 74, 117, 74, 590, 12, 100, - 25, 28, 28, 28, 28, 28, 28, 40, 100, 40, - 40, 40, 40, 40, 40, 40, 40, 85, 187, 42, - 42, 123, 108, 42, 98, 98, 98, 98, 98, 98, - 42, 123, 187, 42, 7, 7, 7, 7, 7, 7, + 5, 5, 5, 48, 5, 2, 50, 3, 2, 3, + 5, 603, 4, 56, 4, 6, 6, 6, 20, 6, + 64, 64, 5, 5, 75, 6, 12, 12, 12, 12, + 3, 196, 68, 50, 11, 4, 70, 6, 6, 25, + 25, 72, 72, 25, 25, 196, 74, 5, 27, 27, + 27, 27, 27, 27, 27, 27, 68, 88, 124, 127, + 70, 25, 6, 7, 7, 7, 45, 7, 598, 75, + 124, 127, 129, 12, 28, 28, 28, 28, 28, 28, + 139, 139, 129, 43, 25, 43, 43, 43, 43, 43, + 43, 43, 43, 194, 45, 45, 77, 77, 45, 77, + 88, 116, 123, 114, 114, 45, 116, 153, 45, 194, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 8, 8, 8, 50, 8, 579, 50, 50, - 50, 50, 50, 50, 50, 50, 81, 81, 81, 81, - 81, 81, 81, 81, 82, 82, 82, 82, 82, 82, - 82, 82, 84, 119, 121, 84, 84, 84, 84, 84, - 84, 84, 84, 133, 133, 186, 121, 186, 8, 8, + 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, + 8, 53, 8, 206, 53, 53, 53, 53, 53, 53, + 53, 53, 84, 84, 84, 84, 84, 84, 84, 84, + 114, 62, 62, 62, 153, 62, 154, 125, 206, 62, + 123, 62, 85, 85, 85, 85, 85, 85, 85, 85, + 143, 143, 202, 62, 62, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, - 9, 137, 137, 110, 119, 9, 9, 9, 110, 120, - 500, 52, 52, 576, 83, 52, 52, 89, 89, 9, + 8, 8, 8, 9, 9, 9, 9, 9, 62, 125, - 130, 89, 89, 122, 120, 130, 59, 59, 59, 122, - 59, 147, 83, 52, 59, 148, 59, 144, 144, 89, - 149, 149, 9, 10, 10, 10, 10, 10, 59, 59, - 182, 193, 10, 10, 10, 52, 83, 86, 457, 86, - 86, 89, 165, 86, 86, 105, 10, 86, 185, 500, - 105, 165, 59, 105, 176, 105, 270, 147, 197, 148, - 86, 86, 155, 144, 185, 193, 270, 176, 189, 10, - 19, 92, 92, 92, 92, 92, 92, 92, 92, 182, - 19, 189, 197, 19, 19, 19, 19, 19, 19, 19, - 19, 26, 457, 26, 26, 26, 26, 26, 26, 26, + 128, 154, 9, 9, 9, 86, 128, 202, 55, 55, + 136, 161, 55, 55, 185, 136, 9, 101, 101, 101, + 101, 101, 101, 86, 155, 155, 198, 185, 87, 587, + 55, 87, 87, 87, 87, 87, 87, 87, 87, 198, + 9, 10, 10, 10, 10, 10, 584, 171, 86, 284, + 10, 10, 10, 55, 161, 89, 171, 89, 89, 222, + 582, 89, 89, 222, 10, 89, 213, 95, 95, 95, + 95, 95, 95, 95, 95, 213, 92, 92, 89, 89, + 92, 92, 192, 195, 284, 195, 510, 192, 10, 19, + 99, 99, 99, 99, 99, 99, 99, 99, 92, 19, - 26, 26, 212, 92, 155, 26, 26, 26, 26, 26, - 96, 96, 96, 96, 96, 96, 96, 96, 183, 201, - 201, 201, 574, 183, 212, 26, 204, 26, 26, 26, - 26, 26, 26, 32, 140, 204, 213, 140, 140, 32, - 213, 560, 32, 32, 140, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 140, 360, 32, + 95, 221, 19, 19, 19, 19, 19, 19, 19, 19, + 26, 191, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 92, 237, 221, 26, 26, 26, 26, 26, 100, + 100, 100, 100, 100, 100, 100, 100, 131, 131, 131, + 131, 131, 131, 131, 131, 26, 510, 26, 26, 26, + 26, 26, 26, 32, 146, 238, 238, 146, 146, 32, + 568, 191, 32, 32, 146, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 146, 237, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 34, 34, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 210, 210, + 210, 35, 35, 35, 35, 35, 109, 231, 240, 241, + 35, 109, 252, 231, 109, 241, 109, 117, 567, 150, + 150, 252, 239, 240, 35, 35, 35, 35, 35, 35, + 42, 42, 42, 42, 42, 293, 42, 42, 133, 133, + 42, 265, 133, 133, 293, 117, 117, 239, 281, 117, + 388, 388, 42, 42, 42, 46, 117, 163, 281, 117, + 133, 163, 323, 265, 239, 46, 150, 163, 46, 46, - 34, 34, 34, 34, 34, 34, 34, 227, 227, 360, - 34, 34, 34, 34, 34, 97, 97, 97, 97, 97, - 97, 97, 97, 559, 196, 111, 196, 196, 196, 196, - 196, 196, 34, 34, 34, 34, 34, 34, 39, 39, - 39, 39, 39, 220, 39, 39, 157, 264, 39, 220, - 157, 229, 264, 111, 111, 226, 157, 111, 196, 230, - 39, 39, 39, 43, 111, 230, 229, 111, 157, 157, - 127, 127, 557, 43, 127, 127, 43, 43, 43, 43, - 43, 43, 43, 43, 125, 125, 125, 125, 125, 125, - 125, 125, 127, 136, 136, 136, 136, 136, 136, 136, + 46, 46, 46, 46, 46, 46, 275, 282, 323, 163, + 163, 275, 282, 133, 142, 142, 142, 142, 142, 142, + 142, 142, 159, 159, 159, 159, 159, 159, 159, 159, + 160, 160, 160, 160, 160, 160, 160, 160, 438, 438, + 46, 63, 201, 201, 201, 201, 201, 201, 201, 201, + 279, 63, 565, 280, 63, 63, 63, 63, 63, 63, + 63, 63, 79, 564, 79, 79, 79, 297, 79, 79, + 254, 254, 79, 197, 280, 201, 297, 197, 256, 256, + 254, 321, 322, 197, 79, 79, 79, 91, 256, 91, + 91, 91, 322, 91, 91, 197, 197, 91, 209, 209, - 136, 153, 153, 153, 153, 153, 153, 153, 153, 310, - 226, 302, 556, 268, 127, 302, 228, 43, 60, 154, - 154, 154, 154, 154, 154, 154, 154, 269, 60, 254, - 301, 60, 60, 60, 60, 60, 60, 60, 60, 76, - 228, 76, 76, 76, 241, 76, 76, 269, 311, 76, - 188, 254, 301, 241, 188, 243, 243, 228, 311, 310, - 188, 76, 76, 76, 88, 243, 88, 88, 88, 552, - 88, 88, 188, 188, 88, 268, 192, 192, 192, 192, - 192, 192, 192, 192, 245, 245, 88, 88, 88, 91, - 362, 91, 91, 91, 245, 91, 91, 377, 377, 91, + 209, 209, 209, 209, 209, 209, 209, 298, 298, 91, + 91, 91, 94, 279, 94, 94, 94, 298, 94, 94, + 313, 383, 94, 162, 313, 162, 162, 452, 452, 162, + 162, 383, 321, 162, 94, 94, 94, 96, 96, 96, + 96, 96, 96, 96, 96, 162, 162, 162, 312, 96, + 96, 96, 96, 96, 205, 368, 205, 205, 205, 205, + 205, 205, 214, 214, 214, 214, 214, 214, 214, 214, + 312, 368, 96, 96, 96, 96, 96, 96, 104, 104, + 104, 104, 104, 104, 104, 104, 104, 316, 371, 205, + 104, 104, 104, 104, 104, 216, 216, 216, 216, 216, - 156, 541, 156, 156, 271, 362, 156, 156, 192, 271, - 156, 91, 91, 91, 93, 93, 93, 93, 93, 93, - 93, 93, 156, 156, 156, 539, 93, 93, 93, 93, - 93, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 205, 205, 205, 205, 205, 205, 205, 205, 93, 93, - 93, 93, 93, 93, 101, 101, 101, 101, 101, 101, - 101, 101, 409, 305, 409, 273, 101, 101, 101, 101, - 101, 207, 207, 207, 207, 207, 207, 207, 207, 208, - 208, 208, 208, 208, 208, 305, 282, 365, 101, 101, - 101, 101, 101, 101, 129, 282, 129, 129, 129, 273, + 216, 216, 216, 217, 217, 217, 217, 217, 217, 316, + 299, 299, 373, 104, 104, 104, 104, 104, 104, 135, + 299, 135, 135, 135, 560, 135, 135, 373, 219, 135, + 219, 219, 219, 219, 219, 219, 219, 219, 453, 453, + 371, 135, 135, 135, 164, 549, 164, 164, 164, 164, + 164, 164, 164, 164, 247, 247, 247, 247, 247, 247, + 247, 247, 247, 253, 253, 253, 253, 253, 253, 253, + 253, 255, 255, 255, 255, 255, 255, 255, 255, 164, + 165, 547, 165, 165, 165, 165, 165, 165, 165, 165, + 259, 259, 259, 259, 259, 259, 259, 259, 419, 419, - 129, 129, 535, 210, 129, 210, 210, 210, 210, 210, - 210, 210, 210, 427, 427, 531, 129, 129, 129, 158, - 365, 158, 158, 158, 158, 158, 158, 158, 158, 236, - 236, 236, 236, 236, 236, 236, 236, 236, 242, 242, - 242, 242, 242, 242, 242, 242, 251, 251, 251, 251, - 251, 251, 519, 158, 159, 518, 159, 159, 159, 159, - 159, 159, 159, 159, 244, 244, 244, 244, 244, 244, - 244, 244, 248, 248, 248, 248, 248, 248, 248, 248, - 501, 286, 248, 499, 408, 408, 306, 498, 159, 160, - 286, 160, 160, 160, 160, 160, 160, 160, 160, 250, + 259, 261, 261, 261, 261, 261, 261, 261, 261, 262, + 262, 262, 262, 262, 262, 165, 166, 543, 166, 166, + 166, 166, 166, 166, 166, 166, 264, 317, 264, 264, + 264, 264, 264, 264, 264, 264, 301, 301, 283, 283, + 283, 283, 283, 283, 283, 283, 301, 456, 456, 317, + 419, 166, 167, 318, 167, 167, 167, 167, 167, 167, + 167, 167, 318, 324, 342, 343, 167, 167, 167, 167, + 167, 283, 324, 342, 343, 344, 344, 287, 372, 287, + 287, 287, 287, 287, 287, 344, 420, 372, 420, 167, + 167, 167, 167, 167, 167, 170, 170, 170, 170, 170, - 250, 250, 250, 250, 250, 250, 250, 253, 306, 253, - 253, 253, 253, 253, 253, 253, 253, 296, 296, 296, - 296, 296, 296, 160, 161, 307, 161, 161, 161, 161, - 161, 161, 161, 161, 307, 408, 312, 347, 161, 161, - 161, 161, 161, 272, 272, 272, 272, 272, 272, 272, - 272, 276, 312, 276, 276, 276, 276, 276, 276, 347, - 161, 161, 161, 161, 161, 161, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 272, 441, 441, 164, 164, - 164, 164, 164, 462, 283, 276, 283, 283, 283, 283, - 283, 283, 283, 283, 323, 323, 323, 323, 323, 323, + 170, 170, 170, 170, 345, 345, 539, 170, 170, 170, + 170, 170, 287, 294, 345, 294, 294, 294, 294, 294, + 294, 294, 294, 307, 307, 307, 307, 307, 307, 527, + 170, 170, 170, 170, 170, 170, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 491, 491, 526, 172, + 172, 172, 172, 172, 295, 376, 295, 295, 295, 295, + 295, 295, 295, 295, 300, 300, 300, 300, 300, 300, + 300, 300, 172, 172, 172, 172, 172, 172, 173, 173, + 173, 173, 173, 173, 173, 173, 347, 347, 511, 376, + 173, 173, 173, 173, 173, 296, 347, 296, 296, 296, - 164, 164, 164, 164, 164, 164, 166, 166, 166, 166, - 166, 166, 166, 166, 166, 166, 313, 462, 353, 166, - 166, 166, 166, 166, 284, 313, 284, 284, 284, 284, - 284, 284, 284, 284, 342, 342, 342, 342, 342, 342, - 353, 166, 166, 166, 166, 166, 166, 167, 167, 167, - 167, 167, 167, 167, 167, 287, 287, 497, 355, 167, - 167, 167, 167, 167, 285, 287, 285, 285, 285, 285, - 285, 285, 285, 285, 442, 442, 445, 445, 288, 288, - 355, 167, 167, 167, 167, 167, 167, 194, 288, 194, - 194, 194, 194, 194, 194, 194, 194, 289, 289, 289, + 296, 296, 296, 296, 296, 306, 306, 306, 306, 306, + 306, 306, 306, 173, 173, 173, 173, 173, 173, 203, + 509, 203, 203, 203, 203, 203, 203, 203, 203, 304, + 304, 304, 304, 304, 304, 304, 304, 508, 309, 304, + 309, 309, 309, 309, 309, 309, 309, 309, 334, 334, + 334, 334, 334, 334, 203, 204, 507, 204, 204, 204, + 204, 204, 204, 204, 204, 331, 331, 331, 331, 331, + 331, 331, 331, 333, 333, 333, 333, 333, 333, 333, + 333, 337, 337, 337, 337, 337, 337, 337, 337, 358, + 204, 215, 215, 215, 215, 215, 215, 215, 215, 215, - 289, 289, 289, 289, 289, 290, 290, 293, 293, 293, - 293, 293, 293, 293, 293, 290, 496, 293, 481, 481, - 491, 194, 195, 474, 195, 195, 195, 195, 195, 195, - 195, 195, 295, 295, 295, 295, 295, 295, 295, 295, - 298, 331, 298, 298, 298, 298, 298, 298, 298, 298, - 331, 473, 357, 363, 492, 492, 195, 206, 206, 206, - 206, 206, 206, 206, 206, 206, 206, 206, 357, 363, - 403, 206, 206, 206, 206, 206, 320, 320, 320, 320, - 320, 320, 320, 320, 322, 322, 322, 322, 322, 322, - 322, 322, 403, 206, 206, 206, 206, 206, 206, 209, + 215, 215, 502, 502, 506, 215, 215, 215, 215, 215, + 336, 358, 336, 336, 336, 336, 336, 336, 336, 336, + 341, 501, 341, 341, 341, 341, 341, 341, 215, 215, + 215, 215, 215, 215, 218, 218, 218, 218, 218, 218, + 218, 218, 218, 218, 397, 534, 534, 218, 218, 218, + 218, 218, 339, 397, 339, 339, 339, 339, 339, 339, + 339, 339, 346, 346, 346, 346, 346, 346, 346, 346, + 218, 218, 218, 218, 218, 218, 242, 484, 242, 242, + 242, 242, 242, 242, 242, 242, 340, 364, 340, 340, + 340, 340, 340, 340, 340, 340, 350, 350, 350, 350, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 332, - 469, 404, 209, 209, 209, 209, 209, 325, 332, 325, - 325, 325, 325, 325, 325, 325, 325, 526, 526, 543, - 543, 333, 333, 404, 209, 209, 209, 209, 209, 209, - 231, 333, 231, 231, 231, 231, 231, 231, 231, 231, - 326, 326, 326, 326, 326, 326, 326, 326, 328, 361, - 328, 328, 328, 328, 328, 328, 328, 328, 361, 467, - 547, 467, 467, 467, 231, 232, 372, 232, 232, 232, - 232, 232, 232, 232, 232, 329, 372, 329, 329, 329, - 329, 329, 329, 329, 329, 330, 374, 330, 330, 330, + 350, 350, 350, 350, 398, 669, 350, 551, 551, 364, + 669, 242, 243, 398, 243, 243, 243, 243, 243, 243, + 243, 243, 352, 352, 352, 352, 352, 352, 352, 352, + 353, 353, 353, 353, 353, 353, 355, 366, 355, 355, + 355, 355, 355, 355, 355, 355, 374, 243, 244, 449, + 244, 244, 244, 244, 244, 244, 244, 244, 449, 366, + 414, 385, 374, 382, 382, 382, 382, 382, 382, 382, + 382, 385, 450, 375, 375, 375, 375, 375, 375, 375, + 375, 450, 414, 244, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 260, 260, 260, 260, 260, - 330, 330, 330, 467, 547, 454, 374, 563, 563, 232, - 233, 449, 233, 233, 233, 233, 233, 233, 233, 233, - 334, 334, 335, 335, 335, 335, 335, 335, 335, 335, - 334, 336, 336, 339, 339, 339, 339, 339, 339, 339, - 339, 336, 448, 339, 233, 246, 246, 246, 246, 246, - 246, 246, 246, 246, 246, 246, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 447, 458, 446, - 249, 249, 249, 249, 249, 341, 341, 341, 341, 341, - 341, 341, 341, 458, 368, 368, 368, 368, 368, 368, - 368, 446, 249, 249, 249, 249, 249, 249, 252, 252, + 260, 260, 260, 260, 260, 260, 375, 415, 457, 260, + 260, 260, 260, 260, 379, 379, 379, 379, 379, 379, + 379, 384, 384, 384, 384, 384, 384, 384, 384, 415, + 457, 483, 260, 260, 260, 260, 260, 260, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, 379, 571, + 571, 263, 263, 263, 263, 263, 390, 390, 390, 390, + 390, 390, 390, 390, 391, 391, 391, 391, 391, 391, + 479, 399, 399, 465, 263, 263, 263, 263, 263, 263, + 285, 399, 285, 285, 285, 285, 285, 285, 285, 285, + 393, 432, 393, 393, 393, 393, 393, 393, 393, 393, - 252, 252, 252, 252, 252, 252, 252, 252, 611, 611, - 450, 252, 252, 252, 252, 252, 344, 368, 344, 344, - 344, 344, 344, 344, 344, 344, 380, 380, 380, 380, - 380, 380, 450, 252, 252, 252, 252, 252, 252, 274, - 386, 274, 274, 274, 274, 274, 274, 274, 274, 386, - 452, 434, 364, 364, 364, 364, 364, 364, 364, 364, - 371, 371, 371, 371, 371, 371, 371, 371, 420, 416, - 661, 411, 452, 274, 275, 661, 275, 275, 275, 275, - 275, 275, 275, 275, 364, 373, 373, 373, 373, 373, - 373, 373, 373, 379, 379, 379, 379, 379, 379, 379, + 394, 432, 394, 394, 394, 394, 394, 394, 394, 394, + 460, 473, 619, 619, 468, 285, 286, 433, 286, 286, + 286, 286, 286, 286, 286, 286, 395, 433, 395, 395, + 395, 395, 395, 395, 395, 395, 396, 435, 396, 396, + 396, 396, 396, 396, 396, 396, 473, 435, 461, 459, + 458, 286, 292, 292, 292, 292, 292, 292, 292, 292, + 292, 400, 400, 445, 292, 292, 292, 292, 292, 468, + 461, 400, 401, 401, 401, 401, 401, 401, 401, 401, + 408, 408, 408, 408, 408, 408, 431, 292, 292, 292, + 292, 292, 292, 302, 302, 302, 302, 302, 302, 302, - 379, 397, 397, 397, 397, 397, 397, 407, 275, 281, - 281, 281, 281, 281, 281, 281, 281, 281, 387, 406, - 493, 281, 281, 281, 281, 281, 382, 387, 382, 382, - 382, 382, 382, 382, 382, 382, 430, 430, 430, 430, - 430, 430, 493, 281, 281, 281, 281, 281, 281, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 455, 405, 495, 294, 294, 294, 294, 294, 383, - 421, 383, 383, 383, 383, 383, 383, 383, 383, 402, - 421, 455, 536, 455, 455, 495, 294, 294, 294, 294, + 302, 302, 302, 302, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 402, 402, 463, 305, 305, + 305, 305, 305, 469, 477, 402, 405, 405, 405, 405, + 405, 405, 405, 405, 427, 503, 405, 422, 469, 463, + 418, 305, 305, 305, 305, 305, 305, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 503, 417, 477, + 308, 308, 308, 308, 308, 407, 407, 407, 407, 407, + 407, 407, 407, 409, 416, 409, 409, 409, 409, 409, + 409, 409, 409, 308, 308, 308, 308, 308, 308, 325, + 325, 325, 325, 325, 325, 325, 325, 325, 421, 428, - 294, 294, 297, 297, 297, 297, 297, 297, 297, 297, - 297, 297, 538, 564, 536, 297, 297, 297, 297, 297, - 384, 422, 384, 384, 384, 384, 384, 384, 384, 384, - 401, 422, 400, 581, 538, 564, 399, 297, 297, 297, - 297, 297, 297, 314, 314, 314, 314, 314, 314, 314, - 314, 314, 385, 370, 385, 385, 385, 385, 385, 385, - 385, 385, 388, 388, 389, 389, 438, 581, 369, 359, - 358, 352, 388, 351, 389, 438, 314, 315, 315, 315, - 315, 315, 315, 315, 315, 315, 390, 390, 390, 390, - 390, 390, 390, 390, 391, 391, 394, 394, 394, 394, + 505, 428, 428, 428, 428, 428, 428, 428, 428, 434, + 434, 434, 434, 434, 434, 434, 434, 413, 421, 412, + 421, 421, 505, 325, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 429, 466, 429, 429, 429, 429, 429, + 429, 429, 429, 421, 430, 485, 430, 430, 430, 430, + 430, 430, 430, 430, 466, 485, 466, 466, 326, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 440, 440, + 440, 440, 440, 440, 440, 440, 441, 441, 441, 441, + 441, 441, 443, 500, 443, 443, 443, 443, 443, 443, + 443, 443, 500, 327, 332, 486, 332, 332, 332, 332, - 394, 394, 394, 394, 391, 350, 394, 349, 346, 345, - 315, 316, 316, 316, 316, 316, 316, 316, 316, 316, - 396, 396, 396, 396, 396, 396, 396, 396, 398, 424, - 398, 398, 398, 398, 398, 398, 398, 398, 327, 424, - 319, 318, 317, 309, 316, 321, 308, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 439, 566, 577, 321, - 321, 321, 321, 321, 417, 439, 417, 417, 417, 417, - 417, 417, 417, 417, 459, 304, 459, 459, 459, 566, - 577, 321, 321, 321, 321, 321, 321, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 303, 300, 299, 324, + 332, 332, 332, 332, 332, 486, 411, 410, 332, 332, + 332, 332, 332, 444, 444, 444, 444, 444, 444, 444, + 444, 446, 381, 446, 446, 446, 446, 446, 446, 446, + 446, 332, 332, 332, 332, 332, 332, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 380, 370, 369, 335, + 335, 335, 335, 335, 447, 488, 447, 447, 447, 447, + 447, 447, 447, 447, 448, 488, 448, 448, 448, 448, + 448, 448, 335, 335, 335, 335, 335, 335, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 351, + 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, - 324, 324, 324, 324, 418, 475, 418, 418, 418, 418, - 418, 418, 418, 418, 280, 475, 279, 278, 277, 267, - 459, 324, 324, 324, 324, 324, 324, 337, 337, 337, - 337, 337, 337, 337, 337, 337, 337, 337, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 490, - 266, 265, 340, 340, 340, 340, 340, 419, 490, 419, - 419, 419, 419, 419, 419, 419, 419, 263, 460, 410, - 460, 460, 460, 262, 340, 340, 340, 340, 340, 340, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 410, - 261, 410, 410, 343, 343, 343, 343, 343, 423, 423, + 451, 451, 528, 351, 351, 351, 351, 351, 467, 467, + 451, 470, 528, 470, 470, 470, 471, 363, 471, 471, + 471, 467, 544, 362, 555, 589, 351, 351, 351, 351, + 351, 351, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 361, 546, 572, 544, 354, 354, 354, 354, 354, + 472, 472, 472, 472, 472, 472, 472, 472, 470, 555, + 589, 360, 357, 471, 546, 572, 356, 338, 354, 354, + 354, 354, 354, 354, 377, 377, 377, 377, 377, 377, + 377, 377, 377, 472, 476, 330, 476, 476, 476, 476, + 476, 476, 478, 478, 478, 478, 478, 478, 478, 478, - 423, 423, 423, 423, 423, 423, 484, 484, 484, 484, - 484, 484, 260, 410, 460, 343, 343, 343, 343, 343, - 343, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 429, 429, 429, 429, 429, 429, 429, 429, 432, 476, - 432, 432, 432, 432, 432, 432, 432, 432, 259, 476, - 514, 514, 514, 258, 366, 367, 367, 367, 367, 367, - 367, 367, 367, 367, 433, 433, 433, 433, 433, 433, - 433, 433, 435, 478, 435, 435, 435, 435, 435, 435, - 435, 435, 514, 478, 257, 256, 240, 239, 367, 375, - 238, 375, 375, 375, 375, 375, 375, 375, 375, 375, + 482, 329, 482, 482, 482, 482, 482, 482, 377, 378, + 378, 378, 378, 378, 378, 378, 378, 378, 480, 476, + 480, 480, 480, 480, 480, 480, 480, 480, 481, 529, + 481, 481, 481, 481, 481, 481, 481, 481, 328, 529, + 320, 319, 315, 378, 386, 574, 386, 386, 386, 386, + 386, 386, 386, 386, 386, 389, 531, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 531, 574, 585, 389, + 389, 389, 389, 389, 487, 487, 487, 487, 487, 487, + 487, 487, 493, 493, 493, 493, 493, 493, 493, 493, + 585, 314, 389, 389, 389, 389, 389, 389, 392, 392, - 378, 520, 378, 378, 378, 378, 378, 378, 378, 378, - 378, 520, 237, 235, 378, 378, 378, 378, 378, 436, - 521, 436, 436, 436, 436, 436, 436, 436, 436, 502, - 521, 502, 502, 502, 234, 225, 378, 378, 378, 378, - 378, 378, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 224, 223, 222, 381, 381, 381, 381, 381, 437, - 221, 437, 437, 437, 437, 437, 437, 468, 468, 468, - 468, 468, 468, 468, 468, 502, 381, 381, 381, 381, - 381, 381, 392, 392, 392, 392, 392, 392, 392, 392, - 392, 392, 392, 395, 395, 395, 395, 395, 395, 395, + 392, 392, 392, 392, 392, 392, 392, 311, 310, 291, + 392, 392, 392, 392, 392, 494, 494, 494, 494, 494, + 494, 496, 566, 496, 496, 496, 496, 496, 496, 496, + 496, 290, 566, 392, 392, 392, 392, 392, 392, 403, + 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, + 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, + 289, 288, 278, 277, 406, 406, 406, 406, 406, 497, + 497, 497, 497, 497, 497, 497, 497, 497, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 406, 406, 406, + 406, 406, 406, 423, 276, 423, 423, 423, 423, 423, - 395, 395, 395, 440, 440, 456, 456, 395, 395, 395, - 395, 395, 219, 440, 218, 567, 567, 523, 456, 461, - 461, 461, 461, 461, 461, 461, 461, 523, 567, 395, - 395, 395, 395, 395, 395, 412, 558, 412, 412, 412, - 412, 412, 412, 412, 412, 217, 558, 216, 215, 214, - 470, 461, 470, 470, 470, 470, 470, 470, 470, 470, - 472, 211, 472, 472, 472, 472, 472, 472, 203, 412, - 413, 202, 413, 413, 413, 413, 413, 413, 413, 413, - 471, 199, 471, 471, 471, 471, 471, 471, 471, 471, - 477, 477, 477, 477, 477, 477, 477, 477, 529, 529, + 423, 423, 423, 499, 499, 499, 499, 499, 499, 499, + 499, 499, 512, 274, 512, 512, 512, 575, 575, 513, + 273, 513, 513, 513, 272, 271, 270, 269, 423, 424, + 575, 424, 424, 424, 424, 424, 424, 424, 424, 514, + 268, 514, 514, 514, 515, 267, 515, 515, 515, 251, + 518, 250, 518, 518, 518, 249, 248, 246, 245, 512, + 236, 235, 234, 233, 424, 425, 513, 425, 425, 425, + 425, 425, 425, 425, 425, 516, 232, 229, 516, 516, + 516, 516, 516, 516, 516, 516, 514, 227, 226, 225, + 224, 515, 223, 220, 212, 517, 517, 518, 211, 517, - 529, 529, 529, 529, 413, 414, 198, 414, 414, 414, - 414, 414, 414, 414, 414, 483, 483, 483, 483, 483, - 483, 483, 483, 486, 191, 486, 486, 486, 486, 486, - 486, 486, 486, 588, 588, 588, 588, 588, 588, 414, - 415, 190, 415, 415, 415, 415, 415, 415, 415, 415, - 487, 487, 487, 487, 487, 487, 487, 487, 487, 488, - 488, 488, 488, 488, 488, 488, 488, 488, 503, 184, - 503, 503, 503, 181, 415, 425, 180, 425, 425, 425, - 425, 425, 425, 425, 425, 425, 428, 179, 428, 428, - 428, 428, 428, 428, 428, 428, 428, 178, 177, 175, + 425, 426, 208, 426, 426, 426, 426, 426, 426, 426, + 426, 517, 517, 517, 519, 519, 207, 523, 519, 523, + 523, 523, 523, 523, 523, 523, 523, 200, 199, 193, + 519, 519, 519, 190, 189, 188, 426, 436, 187, 436, + 436, 436, 436, 436, 436, 436, 436, 436, 439, 186, + 439, 439, 439, 439, 439, 439, 439, 439, 439, 184, + 183, 182, 439, 439, 439, 439, 439, 524, 181, 524, + 524, 524, 524, 524, 524, 524, 524, 530, 530, 530, + 530, 530, 530, 530, 530, 439, 439, 439, 439, 439, + 439, 442, 442, 442, 442, 442, 442, 442, 442, 442, - 428, 428, 428, 428, 428, 489, 489, 489, 489, 489, - 489, 489, 489, 489, 503, 504, 174, 504, 504, 504, - 173, 172, 428, 428, 428, 428, 428, 428, 431, 431, - 431, 431, 431, 431, 431, 431, 431, 171, 170, 169, - 431, 431, 431, 431, 431, 505, 168, 505, 505, 505, - 506, 163, 162, 506, 506, 506, 506, 506, 506, 506, - 506, 504, 431, 431, 431, 431, 431, 431, 443, 443, - 443, 443, 443, 443, 443, 443, 443, 443, 463, 152, - 463, 463, 463, 463, 463, 463, 463, 463, 507, 507, - 151, 505, 507, 508, 150, 508, 508, 508, 146, 145, + 180, 179, 178, 442, 442, 442, 442, 442, 525, 177, + 525, 525, 525, 525, 525, 525, 525, 525, 536, 536, + 536, 536, 536, 536, 536, 536, 442, 442, 442, 442, + 442, 442, 454, 454, 454, 454, 454, 454, 454, 454, + 454, 454, 474, 176, 474, 474, 474, 474, 474, 474, + 474, 474, 537, 537, 537, 537, 537, 537, 538, 175, + 538, 538, 538, 538, 538, 538, 538, 538, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 474, 475, 169, + 475, 475, 475, 475, 475, 475, 475, 475, 541, 541, + 541, 541, 541, 541, 541, 541, 541, 542, 542, 542, - 143, 139, 132, 128, 507, 507, 507, 509, 509, 126, - 124, 509, 463, 464, 116, 464, 464, 464, 464, 464, - 464, 464, 464, 509, 509, 509, 513, 513, 513, 513, - 513, 513, 513, 513, 115, 114, 113, 112, 107, 508, - 534, 534, 534, 534, 534, 534, 534, 464, 465, 106, - 465, 465, 465, 465, 465, 465, 465, 465, 513, 515, - 104, 515, 515, 515, 515, 515, 515, 515, 515, 516, - 103, 516, 516, 516, 516, 516, 516, 516, 516, 99, - 95, 94, 465, 466, 90, 466, 466, 466, 466, 466, - 466, 466, 466, 517, 87, 517, 517, 517, 517, 517, + 542, 542, 542, 542, 552, 552, 552, 552, 552, 552, + 552, 552, 168, 475, 489, 158, 489, 489, 489, 489, + 489, 489, 489, 489, 489, 492, 157, 492, 492, 492, + 492, 492, 492, 492, 492, 492, 156, 152, 151, 492, + 492, 492, 492, 492, 553, 553, 553, 553, 553, 553, + 553, 553, 554, 554, 554, 554, 554, 554, 554, 554, + 149, 145, 492, 492, 492, 492, 492, 492, 495, 495, + 495, 495, 495, 495, 495, 495, 138, 134, 132, 130, + 495, 495, 495, 495, 495, 554, 558, 122, 558, 558, + 558, 558, 558, 558, 559, 559, 559, 559, 559, 559, - 517, 517, 517, 522, 522, 522, 522, 522, 522, 522, - 522, 79, 78, 77, 75, 70, 63, 466, 479, 56, - 479, 479, 479, 479, 479, 479, 479, 479, 479, 482, - 51, 482, 482, 482, 482, 482, 482, 482, 482, 482, - 48, 47, 46, 482, 482, 482, 482, 482, 528, 528, - 528, 528, 528, 528, 528, 528, 532, 532, 532, 532, - 532, 532, 532, 532, 532, 482, 482, 482, 482, 482, - 482, 485, 485, 485, 485, 485, 485, 485, 485, 45, - 44, 38, 37, 485, 485, 485, 485, 485, 530, 36, - 530, 530, 530, 530, 530, 530, 530, 530, 35, 33, + 559, 559, 121, 495, 495, 495, 495, 495, 495, 520, + 120, 520, 520, 520, 520, 520, 520, 520, 520, 119, + 561, 558, 561, 561, 561, 561, 561, 561, 561, 561, + 562, 118, 562, 562, 562, 562, 562, 562, 562, 562, + 113, 112, 111, 110, 520, 521, 108, 521, 521, 521, + 521, 521, 521, 521, 521, 563, 107, 563, 563, 563, + 563, 563, 563, 569, 106, 569, 569, 569, 569, 569, + 569, 569, 569, 596, 596, 596, 596, 596, 596, 102, + 521, 522, 98, 522, 522, 522, 522, 522, 522, 522, + 522, 579, 579, 579, 579, 579, 579, 579, 579, 580, - 29, 23, 17, 15, 14, 485, 485, 485, 485, 485, - 485, 510, 13, 510, 510, 510, 510, 510, 510, 510, - 510, 533, 533, 533, 533, 533, 533, 533, 533, 533, - 544, 544, 544, 544, 544, 544, 544, 544, 0, 0, - 0, 0, 0, 0, 0, 510, 511, 0, 511, 511, - 511, 511, 511, 511, 511, 511, 545, 545, 545, 545, - 545, 545, 545, 545, 546, 546, 546, 546, 546, 546, - 546, 546, 550, 0, 550, 550, 550, 550, 550, 550, - 511, 512, 0, 512, 512, 512, 512, 512, 512, 512, - 512, 0, 0, 0, 0, 0, 546, 551, 551, 551, + 580, 580, 580, 580, 580, 580, 580, 581, 581, 581, + 581, 581, 581, 581, 581, 97, 522, 532, 93, 532, + 532, 532, 532, 532, 532, 532, 532, 532, 535, 90, + 535, 535, 535, 535, 535, 535, 535, 535, 82, 81, + 80, 78, 535, 535, 535, 535, 535, 73, 588, 588, + 588, 588, 588, 588, 588, 588, 592, 66, 592, 592, + 592, 592, 592, 592, 59, 535, 535, 535, 535, 535, + 535, 556, 54, 556, 556, 556, 556, 556, 556, 556, + 556, 588, 594, 594, 594, 594, 594, 594, 594, 594, + 51, 592, 595, 595, 595, 595, 595, 595, 595, 595, - 551, 551, 551, 551, 551, 553, 550, 553, 553, 553, - 553, 553, 553, 553, 553, 512, 524, 0, 524, 524, - 524, 524, 524, 524, 524, 524, 524, 527, 0, 527, - 527, 527, 527, 527, 527, 527, 527, 0, 0, 0, - 0, 527, 527, 527, 527, 527, 554, 0, 554, 554, - 554, 554, 554, 554, 554, 554, 597, 597, 597, 597, - 597, 597, 0, 527, 527, 527, 527, 527, 527, 548, - 0, 548, 548, 548, 548, 548, 548, 548, 548, 555, - 0, 555, 555, 555, 555, 555, 555, 561, 597, 561, - 561, 561, 561, 561, 561, 561, 561, 0, 0, 0, + 49, 41, 40, 39, 38, 37, 556, 557, 36, 557, + 557, 557, 557, 557, 557, 557, 557, 33, 29, 23, + 600, 600, 600, 600, 600, 600, 600, 600, 601, 601, + 601, 601, 601, 601, 601, 601, 17, 15, 14, 13, + 0, 0, 557, 576, 0, 576, 576, 576, 576, 576, + 576, 576, 576, 600, 0, 0, 0, 0, 0, 0, + 0, 601, 602, 602, 602, 602, 602, 602, 602, 602, + 604, 604, 604, 604, 604, 604, 604, 604, 576, 577, + 0, 577, 577, 577, 577, 577, 577, 577, 577, 0, + 0, 0, 0, 0, 0, 602, 605, 605, 605, 605, - 0, 0, 0, 548, 549, 0, 549, 549, 549, 549, - 549, 549, 549, 549, 571, 571, 571, 571, 571, 571, - 571, 571, 572, 572, 572, 572, 572, 572, 572, 572, - 573, 573, 573, 573, 573, 573, 573, 573, 549, 568, - 0, 568, 568, 568, 568, 568, 568, 568, 568, 0, - 0, 0, 580, 580, 580, 580, 580, 580, 580, 580, - 584, 0, 584, 584, 584, 584, 584, 584, 0, 0, - 0, 0, 0, 568, 569, 0, 569, 569, 569, 569, - 569, 569, 569, 569, 580, 586, 586, 586, 586, 586, - 586, 586, 586, 0, 584, 587, 587, 587, 587, 587, + 605, 605, 0, 604, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 577, 578, 0, 578, 578, 578, + 578, 578, 578, 578, 578, 0, 0, 0, 0, 605, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 578, 590, 0, 590, 590, 590, 590, 590, 590, 590, + 590, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 590, 591, 0, 591, + 591, 591, 591, 591, 591, 591, 591, 0, 0, 0, - 587, 587, 587, 0, 0, 0, 0, 0, 569, 570, - 0, 570, 570, 570, 570, 570, 570, 570, 570, 0, - 0, 0, 592, 592, 592, 592, 592, 592, 592, 592, - 593, 593, 593, 593, 593, 593, 593, 593, 0, 0, - 0, 0, 0, 570, 582, 0, 582, 582, 582, 582, - 582, 582, 582, 582, 592, 0, 0, 0, 0, 0, - 0, 0, 593, 594, 594, 594, 594, 594, 594, 594, - 594, 0, 0, 0, 0, 0, 0, 0, 582, 583, - 0, 583, 583, 583, 583, 583, 583, 583, 583, 0, - 0, 0, 0, 0, 0, 594, 596, 596, 596, 596, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 591, 607, 607, 607, 607, 607, 607, 607, + 607, 607, 607, 607, 607, 607, 607, 607, 607, 608, + 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, + 608, 608, 608, 608, 608, 609, 609, 609, 609, 609, + 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, + 609, 610, 610, 610, 610, 610, 610, 610, 610, 610, + 610, 610, 610, 610, 610, 610, 610, 611, 0, 0, + 0, 0, 0, 0, 0, 611, 611, 611, 0, 0, - 596, 596, 596, 596, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 583, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 596, 599, - 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, - 599, 599, 599, 599, 599, 600, 600, 600, 600, 600, - 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, - 600, 601, 601, 601, 601, 601, 601, 601, 601, 601, - 601, 601, 601, 601, 601, 601, 601, 602, 602, 602, - 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, - 602, 602, 602, 603, 0, 0, 0, 0, 0, 0, + 611, 611, 611, 612, 612, 612, 612, 612, 612, 612, + 612, 612, 612, 612, 612, 612, 612, 612, 612, 613, + 0, 0, 0, 0, 613, 0, 0, 613, 613, 613, + 613, 0, 613, 613, 613, 614, 0, 0, 0, 0, + 0, 0, 0, 614, 614, 614, 0, 0, 614, 614, + 614, 615, 0, 0, 615, 615, 0, 615, 0, 615, + 615, 615, 0, 0, 615, 615, 615, 616, 616, 0, + 0, 0, 616, 617, 0, 0, 617, 617, 0, 617, + 0, 617, 617, 617, 0, 0, 617, 617, 617, 618, + 0, 0, 618, 618, 0, 618, 0, 618, 618, 618, - 0, 603, 603, 603, 0, 0, 603, 603, 603, 604, - 604, 604, 604, 604, 604, 604, 604, 604, 604, 604, - 604, 604, 604, 604, 604, 605, 0, 0, 0, 0, - 605, 0, 0, 605, 605, 605, 605, 0, 605, 605, - 605, 606, 0, 0, 0, 0, 0, 0, 0, 606, - 606, 606, 0, 0, 606, 606, 606, 607, 0, 0, - 607, 607, 0, 607, 0, 607, 607, 607, 0, 0, - 607, 607, 607, 608, 608, 0, 0, 0, 608, 609, - 0, 0, 609, 609, 0, 609, 0, 609, 609, 609, - 0, 0, 609, 609, 609, 610, 0, 0, 610, 610, + 0, 618, 0, 618, 618, 620, 0, 0, 620, 0, + 0, 620, 0, 620, 620, 620, 620, 0, 620, 620, + 620, 621, 621, 621, 621, 621, 621, 621, 621, 621, + 621, 621, 621, 621, 621, 621, 621, 622, 622, 0, + 622, 0, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 623, 623, 623, 623, 623, 623, 623, + 623, 623, 623, 623, 623, 623, 623, 623, 623, 624, + 624, 0, 624, 624, 624, 624, 624, 624, 624, 624, + 624, 624, 624, 624, 624, 625, 0, 0, 0, 0, + 625, 0, 0, 625, 625, 625, 0, 0, 625, 625, - 0, 610, 0, 610, 610, 610, 0, 610, 0, 610, - 610, 612, 0, 0, 612, 0, 0, 612, 0, 612, - 612, 612, 612, 0, 612, 612, 612, 613, 613, 613, - 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, - 613, 613, 613, 614, 614, 0, 614, 0, 614, 614, - 614, 614, 614, 614, 614, 614, 614, 614, 614, 615, - 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, - 615, 615, 615, 615, 615, 616, 616, 0, 616, 616, - 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, - 616, 617, 0, 0, 0, 0, 617, 0, 0, 617, + 625, 626, 0, 0, 626, 626, 0, 626, 0, 626, + 626, 626, 0, 0, 626, 626, 626, 627, 627, 0, + 0, 0, 627, 628, 628, 628, 0, 0, 0, 628, + 629, 0, 0, 629, 629, 0, 629, 0, 629, 629, + 629, 0, 0, 629, 629, 629, 630, 630, 630, 630, + 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, + 630, 630, 631, 631, 0, 0, 0, 631, 632, 632, + 632, 0, 0, 0, 632, 633, 633, 0, 0, 0, + 633, 634, 634, 0, 0, 0, 634, 635, 635, 0, + 0, 0, 635, 636, 636, 636, 0, 0, 0, 636, - 617, 617, 0, 0, 617, 617, 617, 618, 0, 0, - 618, 618, 0, 618, 0, 618, 618, 618, 0, 0, - 618, 618, 618, 619, 619, 0, 0, 0, 619, 620, - 620, 620, 0, 0, 0, 620, 621, 0, 0, 621, - 621, 0, 621, 0, 621, 621, 621, 0, 0, 621, - 621, 621, 622, 622, 622, 622, 622, 622, 622, 622, - 622, 622, 622, 622, 622, 622, 622, 622, 623, 623, - 0, 0, 0, 623, 624, 624, 624, 0, 0, 0, - 624, 625, 625, 0, 0, 0, 625, 626, 626, 0, - 0, 0, 626, 627, 627, 0, 0, 0, 627, 628, - - 628, 628, 0, 0, 0, 628, 629, 629, 0, 0, - 0, 629, 630, 630, 0, 0, 0, 630, 631, 631, - 0, 0, 0, 631, 632, 632, 632, 0, 0, 0, - 632, 633, 633, 633, 633, 0, 0, 0, 633, 634, - 634, 0, 0, 0, 634, 635, 635, 0, 0, 0, - 635, 636, 636, 0, 0, 0, 636, 637, 637, 637, - 0, 0, 0, 637, 638, 638, 638, 638, 0, 0, + 637, 637, 0, 0, 0, 637, 638, 638, 0, 0, 0, 638, 639, 639, 0, 0, 0, 639, 640, 640, - 0, 0, 0, 640, 641, 641, 641, 0, 0, 0, - 641, 642, 642, 642, 642, 0, 0, 0, 642, 643, + 640, 0, 0, 0, 640, 641, 641, 641, 641, 0, + 0, 0, 641, 642, 642, 0, 0, 0, 642, 643, + 643, 0, 0, 0, 643, 644, 644, 0, 0, 0, + 644, 645, 645, 645, 0, 0, 0, 645, 646, 646, + 646, 646, 0, 0, 0, 646, 647, 647, 0, 0, + 0, 647, 648, 648, 0, 0, 0, 648, 649, 649, + 649, 0, 0, 0, 649, 650, 650, 650, 650, 0, + 0, 0, 650, 651, 651, 0, 0, 0, 651, 652, - 643, 0, 0, 0, 643, 644, 0, 644, 644, 0, - 0, 0, 644, 645, 645, 645, 0, 0, 0, 645, - 646, 646, 646, 646, 0, 0, 0, 646, 647, 647, - 0, 0, 0, 647, 648, 0, 648, 648, 0, 0, - 0, 648, 649, 649, 649, 0, 0, 0, 649, 650, - 650, 650, 0, 0, 0, 0, 650, 651, 651, 0, - 651, 651, 651, 0, 0, 651, 651, 651, 0, 0, - 651, 651, 651, 652, 652, 0, 652, 652, 652, 0, - 0, 652, 652, 652, 0, 0, 652, 652, 652, 653, - 653, 0, 0, 0, 653, 654, 0, 654, 654, 0, + 0, 652, 652, 0, 0, 0, 652, 653, 653, 653, + 0, 0, 0, 653, 654, 654, 654, 654, 0, 0, + 0, 654, 655, 655, 0, 0, 0, 655, 656, 0, + 656, 656, 0, 0, 0, 656, 657, 657, 657, 0, + 0, 0, 657, 658, 658, 658, 0, 0, 0, 0, + 658, 659, 659, 0, 659, 659, 659, 0, 0, 659, + 659, 659, 0, 0, 659, 659, 659, 660, 660, 0, + 660, 660, 660, 0, 0, 660, 660, 660, 0, 0, + 660, 660, 660, 661, 661, 0, 0, 0, 661, 662, + 0, 662, 662, 0, 0, 0, 662, 663, 663, 0, - 0, 0, 654, 655, 655, 0, 0, 0, 0, 655, - 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, - 656, 656, 656, 656, 656, 656, 657, 657, 0, 0, - 0, 657, 658, 0, 658, 658, 0, 0, 0, 658, - 659, 659, 0, 0, 0, 659, 660, 0, 660, 0, - 0, 0, 0, 660, 662, 662, 662, 662, 662, 662, - 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, - 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, - 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, - 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 0, 0, 0, 663, 664, 664, 664, 664, 664, 664, + 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, + 665, 665, 0, 0, 0, 665, 666, 0, 666, 666, + 0, 0, 0, 666, 667, 667, 0, 0, 0, 667, + 668, 0, 668, 0, 0, 0, 0, 668, 670, 670, + 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, + 670, 670, 670, 670, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, - 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, - 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, - 598, 598, 598, 598, 598, 598 + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606 } ; static yy_state_type yy_last_accepting_state; @@ -1507,7 +1508,7 @@ #define INSTR 5 -#line 1510 "lex.yy.c" +#line 1511 "lex.yy.c" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -1663,7 +1664,7 @@ #line 119 "toke.l" -#line 1666 "lex.yy.c" +#line 1667 "lex.yy.c" if ( yy_init ) { @@ -1715,13 +1716,13 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 599 ) + if ( yy_current_state >= 607 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 3671 ); + while ( yy_base[yy_current_state] != 3665 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -2215,30 +2216,49 @@ YY_RULE_SETUP #line 470 "toke.l" { - if (strcmp(yytext, "ALL") == 0) { - LEXTRACE("ALL "); - return ALL; - } + LEXTRACE("ALL "); + return ALL; + + } + YY_BREAK +case 40: +YY_RULE_SETUP +#line 476 "toke.l" +{ #ifdef HAVE_SELINUX - /* XXX - restrict type/role to initial state */ - if (strcmp(yytext, "TYPE") == 0) { - LEXTRACE("TYPE "); - return TYPE; - } - if (strcmp(yytext, "ROLE") == 0) { - LEXTRACE("ROLE "); - return ROLE; - } -#endif /* HAVE_SELINUX */ + LEXTRACE("ROLE "); + return ROLE; +#else + goto got_alias; +#endif + } + YY_BREAK +case 41: +YY_RULE_SETUP +#line 485 "toke.l" +{ +#ifdef HAVE_SELINUX + LEXTRACE("TYPE "); + return TYPE; +#else + goto got_alias; +#endif + } + YY_BREAK +case 42: +YY_RULE_SETUP +#line 494 "toke.l" +{ + got_alias: if (!fill(yytext, yyleng)) yyterminate(); LEXTRACE("ALIAS "); return ALIAS; } YY_BREAK -case 40: +case 43: YY_RULE_SETUP -#line 492 "toke.l" +#line 502 "toke.l" { /* no command args allowed for Defaults!/path */ if (!fill_cmnd(yytext, yyleng)) @@ -2247,9 +2267,9 @@ return COMMAND; } YY_BREAK -case 41: +case 44: YY_RULE_SETUP -#line 500 "toke.l" +#line 510 "toke.l" { BEGIN GOTCMND; LEXTRACE("COMMAND "); @@ -2257,9 +2277,9 @@ yyterminate(); } /* sudo -e */ YY_BREAK -case 42: +case 45: YY_RULE_SETUP -#line 507 "toke.l" +#line 517 "toke.l" { /* directories can't have args... */ if (yytext[yyleng - 1] == '/') { @@ -2275,9 +2295,9 @@ } } /* a pathname */ YY_BREAK -case 43: +case 46: YY_RULE_SETUP -#line 522 "toke.l" +#line 532 "toke.l" { LEXTRACE("BEGINSTR "); yylval.string = NULL; @@ -2285,9 +2305,9 @@ BEGIN INSTR; } YY_BREAK -case 44: +case 47: YY_RULE_SETUP -#line 529 "toke.l" +#line 539 "toke.l" { /* a word */ if (!fill(yytext, yyleng)) @@ -2296,49 +2316,49 @@ return WORD; } YY_BREAK -case 45: +case 48: YY_RULE_SETUP -#line 537 "toke.l" +#line 547 "toke.l" { LEXTRACE("( "); return '('; } YY_BREAK -case 46: +case 49: YY_RULE_SETUP -#line 542 "toke.l" +#line 552 "toke.l" { LEXTRACE(") "); return ')'; } YY_BREAK -case 47: +case 50: YY_RULE_SETUP -#line 547 "toke.l" +#line 557 "toke.l" { LEXTRACE(", "); return ','; } /* return ',' */ YY_BREAK -case 48: +case 51: YY_RULE_SETUP -#line 552 "toke.l" +#line 562 "toke.l" { LEXTRACE("= "); return '='; } /* return '=' */ YY_BREAK -case 49: +case 52: YY_RULE_SETUP -#line 557 "toke.l" +#line 567 "toke.l" { LEXTRACE(": "); return ':'; } /* return ':' */ YY_BREAK -case 50: +case 53: YY_RULE_SETUP -#line 562 "toke.l" +#line 572 "toke.l" { if (yyleng & 1) { LEXTRACE("!"); @@ -2346,9 +2366,9 @@ } } YY_BREAK -case 51: +case 54: YY_RULE_SETUP -#line 569 "toke.l" +#line 579 "toke.l" { if (YY_START == INSTR) { LEXTRACE("ERROR "); @@ -2361,25 +2381,25 @@ return COMMENT; } /* return newline */ YY_BREAK -case 52: +case 55: YY_RULE_SETUP -#line 581 "toke.l" +#line 591 "toke.l" { /* throw away space/tabs */ sawspace = TRUE; /* but remember for fill_args */ } YY_BREAK -case 53: +case 56: YY_RULE_SETUP -#line 585 "toke.l" +#line 595 "toke.l" { sawspace = TRUE; /* remember for fill_args */ ++sudolineno; continued = TRUE; } /* throw away EOL after \ */ YY_BREAK -case 54: +case 57: YY_RULE_SETUP -#line 591 "toke.l" +#line 601 "toke.l" { BEGIN INITIAL; ++sudolineno; @@ -2388,9 +2408,9 @@ return COMMENT; } /* comment, not uid/gid */ YY_BREAK -case 55: +case 58: YY_RULE_SETUP -#line 599 "toke.l" +#line 609 "toke.l" { LEXTRACE("ERROR "); return ERROR; @@ -2402,7 +2422,7 @@ case YY_STATE_EOF(STARTDEFS): case YY_STATE_EOF(INDEFS): case YY_STATE_EOF(INSTR): -#line 604 "toke.l" +#line 614 "toke.l" { if (YY_START != INITIAL) { BEGIN INITIAL; @@ -2413,12 +2433,12 @@ yyterminate(); } YY_BREAK -case 56: +case 59: YY_RULE_SETUP -#line 614 "toke.l" +#line 624 "toke.l" ECHO; YY_BREAK -#line 2421 "lex.yy.c" +#line 2441 "lex.yy.c" case YY_END_OF_BUFFER: { @@ -2709,7 +2729,7 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 599 ) + if ( yy_current_state >= 607 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2744,11 +2764,11 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 599 ) + if ( yy_current_state >= 607 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 598); + yy_is_jam = (yy_current_state == 606); return yy_is_jam ? 0 : yy_current_state; } @@ -3309,7 +3329,7 @@ return 0; } #endif -#line 614 "toke.l" +#line 624 "toke.l" struct path_list { char *path; diff -urNa sudo-1.8.1p1/plugins/sudoers/toke.l sudo-1.8.1p2/plugins/sudoers/toke.l --- sudo-1.8.1p1/plugins/sudoers/toke.l Thu Apr 14 15:08:15 2011 +++ sudo-1.8.1p2/plugins/sudoers/toke.l Fri Apr 29 16:06:21 2011 @@ -438,7 +438,7 @@ return NTWKADDR; } -{IPV4ADDR}\/([12][0-9]*|3[0-2]*) { +{IPV4ADDR}\/([12]?[0-9]|3[0-2]) { if (!fill(yytext, yyleng)) yyterminate(); LEXTRACE("NTWKADDR "); @@ -467,22 +467,32 @@ return NTWKADDR; } -[[:upper:]][[:upper:][:digit:]_]* { - if (strcmp(yytext, "ALL") == 0) { - LEXTRACE("ALL "); - return ALL; - } +ALL { + LEXTRACE("ALL "); + return ALL; + + } + +ROLE { #ifdef HAVE_SELINUX - /* XXX - restrict type/role to initial state */ - if (strcmp(yytext, "TYPE") == 0) { - LEXTRACE("TYPE "); - return TYPE; - } - if (strcmp(yytext, "ROLE") == 0) { - LEXTRACE("ROLE "); - return ROLE; - } -#endif /* HAVE_SELINUX */ + LEXTRACE("ROLE "); + return ROLE; +#else + goto got_alias; +#endif + } + +TYPE { +#ifdef HAVE_SELINUX + LEXTRACE("TYPE "); + return TYPE; +#else + goto got_alias; +#endif + } + +[[:upper:]][[:upper:][:digit:]_]* { + got_alias: if (!fill(yytext, yyleng)) yyterminate(); LEXTRACE("ALIAS "); diff -urNa sudo-1.8.1p1/src/net_ifs.c sudo-1.8.1p2/src/net_ifs.c --- sudo-1.8.1p1/src/net_ifs.c Mon Oct 11 15:50:06 2010 +++ sudo-1.8.1p2/src/net_ifs.c Mon May 9 10:04:20 2011 @@ -121,7 +121,7 @@ !ISSET(ifa->ifa_flags, IFF_UP) || ISSET(ifa->ifa_flags, IFF_LOOPBACK)) continue; - switch(ifa->ifa_addr->sa_family) { + switch (ifa->ifa_addr->sa_family) { case AF_INET: #ifdef HAVE_IN6_ADDR case AF_INET6: @@ -142,7 +142,7 @@ !ISSET(ifa->ifa_flags, IFF_UP) || ISSET(ifa->ifa_flags, IFF_LOOPBACK)) continue; - switch(ifa->ifa_addr->sa_family) { + switch (ifa->ifa_addr->sa_family) { case AF_INET: sin = (struct sockaddr_in *)ifa->ifa_addr; len = snprintf(cp, ailen - (*addrinfo - cp), @@ -224,27 +224,25 @@ * Get interface configuration or return. */ for (;;) { - ifconf_buf = erealloc(ifconf_buf, buflen); + ifconf_buf = emalloc(buflen); ifconf = (struct ifconf *) ifconf_buf; ifconf->ifc_len = buflen - sizeof(struct ifconf); ifconf->ifc_buf = (caddr_t) (ifconf_buf + sizeof(struct ifconf)); #ifdef _ISC STRSET(SIOCGIFCONF, (caddr_t) ifconf, buflen); - if (ioctl(sock, I_STR, (caddr_t) &strioctl) < 0) { + if (ioctl(sock, I_STR, (caddr_t) &strioctl) < 0) #else /* Note that some kernels return EINVAL if the buffer is too small */ - if (ioctl(sock, SIOCGIFCONF, (caddr_t) ifconf) < 0 && errno != EINVAL) { + if (ioctl(sock, SIOCGIFCONF, (caddr_t) ifconf) < 0 && errno != EINVAL) #endif /* _ISC */ - efree(ifconf_buf); - (void) close(sock); - return 0; - } + goto done; /* Break out of loop if we have a big enough buffer. */ if (ifconf->ifc_len + sizeof(struct ifreq) < buflen) break; buflen += BUFSIZ; + efree(ifconf_buf); } /* Allocate space for the maximum number of interfaces that could exist. */