(command.CommandList
  children: [
    (command.ShFunction
      name: p666_show_usage
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-ne>} {<0>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [(C {<p666_printf_error>} {(DQ (${ Id.VSub_At '@'))})]
                  spids: [104 117]
                )
              ]
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.MultiLine
                      here_begin: {(SQ <HEREDOC>)}
                      here_end_span_id: 496
                      stdin_parts: [
                        <'usage: posixcube.sh -h HOST... [OPTION]... COMMAND...\n'>
                        <'\n'>
                        <
'  posixcube.sh is a POSIX compliant shell script server automation framework.\n'
                        >
                        <
'  Use consistent APIs for common tasks and package functionality and file\n'
                        >
                        <'  templates in cubes (like recipes/playbooks from other frameworks).\n'>
                        <'\n'>
                        <'  -?        Help.\n'>
                        <
'  -h HOST   Target host. Option may be specified multiple times. If a host has\n'
                        >
                        <
'            a wildcard (\'*\'), then HOST is interpeted as a regular expression,\n'
                        >
                        <
'            with \'*\' replaced with \'.*\' and any matching hosts in the following\n'
                        >
                        <'            files are added to the HOST list: /etc/ssh_config,\n'>
                        <'            /etc/ssh/ssh_config, ~/.ssh/config, /etc/ssh_known_hosts,\n'>
                        <
'            /etc/ssh/ssh_known_hosts, ~/.ssh/known_hosts, and /etc/hosts.\n'
                        >
                        <
'  -c CUBE   Execute a cube. Option may be specified multiple times. If COMMANDS\n'
                        >
                        <'            are also specified, cubes are run first.\n'>
                        <'  -u USER   SSH user. Defaults to ${USER}.\n'>
                        <
'  -e ENVAR  Shell script with environment variable assignments which is\n'
                        >
                        <'            uploaded and sourced on each HOST. Option may be specified\n'>
                        <'            multiple times. Files ending with .enc will be decrypted\n'>
                        <
'            temporarily. If not specified, defaults to envars*sh envars*sh.enc\n'
                        >
                        <'  -p PWD    Password for decrypting .enc ENVAR files.\n'>
                        <
'  -w PWDF   File that contains the password for decrypting .enc ENVAR files.\n'
                        >
                        <'            Defaults to ~/.posixcube.pwd\n'>
                        <'  -r ROLE   Role name. Option may be specified multiple times.\n'>
                        <
'  -o P=V    Set the specified parameter P with the value V. Do not put double\n'
                        >
                        <
'            quotes around V. If V contains *, try to find matching hosts per\n'
                        >
                        <'            the -h algorithm. Option may be specified multiple times.\n'>
                        <
'  -i CUBE   Upload a CUBE but do not execute it. This is needed when one CUBE\n'
                        >
                        <'            includes this CUBE using cube_include.\n'>
                        <'  -v        Show version information.\n'>
                        <'  -d        Print debugging information.\n'>
                        <'  -q        Quiet; minimize output.\n'>
                        <
'  -b        If using bash, install programmable tab completion for SSH hosts.\n'
                        >
                        <
'  -s        Skip remote host initialization (making ~/posixcubes, uploading\n'
                        >
                        <'            posixcube.sh, etc.\n'>
                        <'  -k        Keep the cube_exec.sh generated script.\n'>
                        <'  -z SPEC   Use the SPEC set of options from the ./cubespecs.ini file\n'>
                        <
'  -a        Asynchronously execute remote CUBEs/COMMANDs. Works on Bash only.\n'
                        >
                        <
'  -y        If a HOST returns a non-zero code, continue processing other HOSTs.\n'
                        >
                        <
'  COMMAND   Remote command to run on each HOST. Option may be specified\n'
                        >
                        <
'            multiple times. If no HOSTs are specified, available sub-commands:\n'
                        >
                        <
'              edit: Decrypt, edit, and re-encrypt ENVAR file with $EDITOR.\n'
                        >
                        <'              show: Decrypt and print ENVAR file.\n'>
                        <'              source: Source all ENVAR files. Must be run with\n'>
                        <
'                      POSIXCUBE_SOURCED (see Public Variables section below).\n'
                        >
                        <'\n'>
                        <'Description:\n'>
                        <'\n'>
                        <
'  posixcube.sh is used to execute CUBEs and/or COMMANDs on one or more HOSTs.\n'
                        >
                        <'  \n'>
                        <
'  A CUBE is a shell script or directory containing shell scripts. The CUBE\n'
                        >
                        <
'  is rsync\'ed to each HOST. If CUBE is a shell script, it\'s executed. If\n'
                        >
                        <
'  CUBE is a directory, a shell script of the same name in that directory\n'
                        >
                        <
'  is executed. In both cases, the directory is changed to the directory\n'
                        >
                        <
'  containing the script before execution so that you may reference files\n'
                        >
                        <'  such as templates using relative paths.\n'>
                        <'  \n'>
                        <
'  An ENVAR script is encouraged to use environment variable names of the form\n'
                        >
                        <
'  cubevar_${uniquecontext}_envar="value". If a CUBE directory contains the\n'
                        >
                        <
'  file `envars.sh`, it\'s sourced before anything else (including `-e ENVARs`).\n'
                        >
                        <'  \n'>
                        <
'  Both CUBEs and COMMANDs may execute any of the functions defined in the\n'
                        >
                        <
'  "Public APIs" in the posixcube.sh script. Short descriptions of the functions\n'
                        >
                        <
'  are in the APIs section below. See the source comments above each function\n'
                        >
                        <'  for details.\n'>
                        <'  \n'>
                        <
'Examples (assuming posixcube.sh is on ${PATH}, or executed absolutely):\n'
                        >
                        <'\n'>
                        <'  posixcube.sh -h socrates uptime\n'>
                        <'  \n'>
                        <
'    Run the `uptime` command on host `socrates`. This is not very different\n'
                        >
                        <
'    from ssh ${USER}@socrates uptime, except that COMMANDs (`uptime`) have\n'
                        >
                        <'    access to the cube_* public functions.\n'>
                        <'  \n'>
                        <'  posixcube.sh -h socrates -c test.sh\n'>
                        <'  \n'>
                        <'    Run the `test.sh` script (CUBE) on host `socrates`. The script has\n'>
                        <'    access to the cube_* public functions.\n'>
                        <'  \n'>
                        <'  posixcube.sh -h socrates -c test\n'>
                        <'  \n'>
                        <
'    Upload the entire `test` directory (CUBE) to the host `socrates` and\n'
                        >
                        <'    then execute the `test.sh` script within that directory (the name\n'>
                        <
'    of the script is expected to be the same as the name of the CUBE). This\n'
                        >
                        <'    allows for easily packaging other scripts and resources needed by\n'>
                        <'    `test.sh`.\n'>
                        <'  \n'>
                        <'  posixcube.sh -u root -h socrates -h seneca uptime\n'>
                        <'  \n'>
                        <'    Run the `uptime` command on hosts `socrates` and `seneca`\n'>
                        <'    as the user `root`.\n'>
                        <'  \n'>
                        <'  posixcube.sh -h web*.test.com uptime\n'>
                        <'  \n'>
                        <
'    Run the `uptime` command on all hosts matching the regular expression\n'
                        >
                        <'    web.*.test.com in the SSH configuration files.\n'>
                        <'  \n'>
                        <
'  sudo ${PATH_TO}/posixcube.sh -b && . /etc/bash_completion.d/posixcube_completion.sh\n'
                        >
                        <'  \n'>
                        <
'    For Bash users, install a programmable completion script to support tab\n'
                        >
                        <'    auto-completion of hosts from SSH configuration files.\n'>
                        <'\n'>
                        <'  posixcube.sh -e production.sh.enc show\n'>
                        <'  \n'>
                        <'    Decrypt and show the contents of production.sh\n'>
                        <'  \n'>
                        <'  posixcube.sh -e production.sh.enc edit\n'>
                        <'  \n'>
                        <
'    Decrypt, edit, and re-encrypt the contents of production.sh with $EDITOR\n'
                        >
                        <'\n'>
                        <'Philosophy:\n'>
                        <'\n'>
                        <
'  Fail hard and fast. In principle, a well written script would check ${?}\n'
                        >
                        <
'  after each command and either gracefully handle it, or report an error.\n'
                        >
                        <'  Few people write scripts this well, so we enforce this check (using\n'>
                        <
'  `cube_check_return` within all APIs) and we encourage you to do the same\n'
                        >
                        <
'  in your scripts with `touch /etc/fstab || cube_check_return`. All cube_*\n'
                        >
                        <
'  APIs are guaranteed to do their own checks, so you don\'t have to do this\n'
                        >
                        <
'  for those calls; however, note that if you\'re executing a cube_* API in a\n'
                        >
                        <
'  sub-shell, although any failures will be reported by cube_check_return,\n'
                        >
                        <
'  the script will continue unless you also check the return of the sub-shell.\n'
                        >
                        <'  For example: $(cube_readlink /etc/localtime) || cube_check_return\n'>
                        <
'  With this strategy, unfortunately piping becomes more difficult. There are\n'
                        >
                        <
'  non-standard mechanisms like pipefail and PIPESTATUS, but the standardized\n'
                        >
                        <
'  approach is to run each command separately and check the status. For example:\n'
                        >
                        <
'  cube_app_result1="$(command1 || cube_check_return)" || cube_check_return\n'
                        >
                        <
'  cube_app_result2="$(printf \'%s\' "${cube_app_result1}" | command2 || cube_check_return)" || cube_check_return\n'
                        >
                        <'  \n'>
                        <'  We do not use `set -e` because some functions may handle all errors\n'>
                        <
'  internally (with `cube_check_return`) and use a positive return code as a\n'
                        >
                        <'  "benign" result (e.g. `cube_set_file_contents`).\n'>
                        <'\n'>
                        <'Frequently Asked Questions:\n'>
                        <'\n'>
                        <
'  * Why is there a long delay between "Preparing hosts" and the first remote\n'
                        >
                        <'    execution?\n'>
                        <'  \n'>
                        <
'    You can see details of what\'s happening with the `-d` flag. By default,\n'
                        >
                        <
'    the script first loops through every host and ensures that ~/posixcubes/\n'
                        >
                        <
'    exists, then it transfers itself to the remote host. These two actions\n'
                        >
                        <
'    may be skipped with the `-s` parameter if you\'ve already run the script\n'
                        >
                        <
'    at least once and your version of this script hasn\'t been updated. Next,\n'
                        >
                        <
'    the script loops through every host and transfers any CUBEs and a script\n'
                        >
                        <
'    containing the CUBEs and COMMANDs to run (`cube_exec.sh`). Finally,\n'
                        >
                        <
'    you\'ll see the "Executing on HOST..." line and the real execution starts.\n'
                        >
                        <'\n'>
                        <'Cube Development:\n'>
                        <'\n'>
                        <
'  Shell scripts don\'t have scoping, so to reduce the chances of function name\n'
                        >
                        <
'  conflicts, name functions cube_${cubename}_${function} and name variables\n'
                        >
                        <'  cubevar_${cubename}_${var}.\n'>
                        <'\n'>
                        <'Public APIs:\n'>
                        <'  \n'>
                        <'  * cube_echo\n'>
                        <'      Print ${@} to stdout prefixed with ([$(date)] [$(hostname)]) and\n'>
                        <'      suffixed with a newline.\n'>
                        <'      Example: cube_echo "Hello World"\n'>
                        <'\n'>
                        <'  * cube_printf\n'>
                        <'      Print $1 to stdout prefixed with ([$(date)] [$(hostname)]) and\n'>
                        <'      suffixed with a newline (with optional printf arguments in $@).\n'>
                        <'      Example: cube_printf "Hello World from PID %5s" $$\n'>
                        <'\n'>
                        <'  * cube_error_echo\n'>
                        <
'      Same as cube_echo except output to stderr and include a red "Error: "\n'
                        >
                        <'      message prefix.\n'>
                        <'      Example: cube_error "Goodbye World"\n'>
                        <'\n'>
                        <'  * cube_error_printf\n'>
                        <
'      Same as cube_printf except output to stderr and include a red "Error: "\n'
                        >
                        <'      message prefix.\n'>
                        <'      Example: cube_error "Goodbye World from PID %5s" $$\n'>
                        <'\n'>
                        <'  * cube_throw\n'>
                        <
'      Same as cube_error_echo but also print a stack of functions and processes\n'
                        >
                        <'      (if available) and then call `exit 1`.\n'>
                        <'      Example: cube_throw "Expected some_file."\n'>
                        <'\n'>
                        <'  * cube_check_return\n'>
                        <'      Check if $? is non-zero and call cube_throw if so.\n'>
                        <'      Example: some_command || cube_check_return\n'>
                        <'\n'>
                        <'  * cube_include\n'>
                        <'      Include the ${1} cube\n'>
                        <'      Example: cube_include core_cube\n'>
                        <'\n'>
                        <'  * cube_check_numargs\n'>
                        <'      Call cube_throw if there are less than $1 arguments in $@\n'>
                        <'      Example: cube_check_numargs 2 "${@}"\n'>
                        <'\n'>
                        <'  * cube_service\n'>
                        <'      Run the $1 action on the $2 service.\n'>
                        <'      Example: cube_service start crond\n'>
                        <'\n'>
                        <'  * cube_package\n'>
                        <
'      Pass $@ to the package manager. Implicitly passes the the parameter\n'
                        >
                        <'      to say yes to questions.\n'>
                        <'      Example: cube_package install python\n'>
                        <'\n'>
                        <'  * cube_append_str\n'>
                        <'      Echo $1 with $2 appended after a space if $1 was not blank.\n'>
                        <
'      Example: cubevar_app_str=$(cube_append_str "${cubevar_app_str}" "Test")\n'
                        >
                        <'\n'>
                        <'  * cube_command_exists\n'>
                        <'      Check if $1 command or function exists in the current context.\n'>
                        <'      Example: cube_command_exists systemctl\n'>
                        <'\n'>
                        <'  * cube_dir_exists\n'>
                        <'      Check if $1 exists as a directory.\n'>
                        <'      Example: cube_dir_exists /etc/cron.d/\n'>
                        <'\n'>
                        <'  * cube_file_exists\n'>
                        <'      Check if $1 exists as a file with read access.\n'>
                        <'      Example: cube_file_exists /etc/cron.d/0hourly\n'>
                        <'\n'>
                        <'  * cube_operating_system\n'>
                        <
'      Detect operating system and return one of the POSIXCUBE_OS_* values.\n'
                        >
                        <
'      Example: [ $(cube_operating_system) -eq ${POSIXCUBE_OS_LINUX} ] && ...\n'
                        >
                        <'\n'>
                        <'  * cube_operating_system_has_flavor\n'>
                        <
'      Check if the operating system flavor includes the flavor specified in $1\n'
                        >
                        <'      by one of the POSIXCUBE_OS_FLAVOR_* values.\n'>
                        <
'      Example: cube_operating_system_has_flavor ${POSIXCUBE_OS_FLAVOR_FEDORA} && ...\n'
                        >
                        <'\n'>
                        <'  * cube_shell\n'>
                        <'      Detect running shell and return one of the CUBE_SHELL_* values.\n'>
                        <'      Example: [ $(cube_shell) -eq ${POSIXCUBE_SHELL_BASH} ] && ...\n'>
                        <'\n'>
                        <'  * cube_current_script_name\n'>
                        <'      echo the basename of the currently executing script.\n'>
                        <'      Example: script_name=$(cube_current_script_name)\n'>
                        <'\n'>
                        <'  * cube_current_script_abs_path\n'>
                        <'      echo the absolute path the currently executing script.\n'>
                        <'      Example: script_name=$(cube_current_script_abs_path)\n'>
                        <'\n'>
                        <'  * cube_file_size\n'>
                        <'      echo the size of a file $1 in bytes\n'>
                        <'      Example: cube_file_size some_file\n'>
                        <'\n'>
                        <'  * cube_set_file_contents\n'>
                        <
'      Copy the contents of $2 on top of $1 if $1 doesn\'t exist or the contents\n'
                        >
                        <
'      are different than $2. If $2 ends with ".template", first evaluate all\n'
                        >
                        <'      ${VARIABLE} expressions (except for \\${VARIABLE}).\n'>
                        <
'      Example: cube_set_file_contents "/etc/npt.conf" "templates/ntp.conf"\n'
                        >
                        <'\n'>
                        <'  * cube_set_file_contents_string\n'>
                        <
'      Set the contents of $1 to the string $@. Create file if it doesn\'t exist.\n'
                        >
                        <'      Example: cube_set_file_contents_string ~/.info "Hello World"\n'>
                        <'\n'>
                        <'  * cube_expand_parameters\n'>
                        <
'      echo stdin to stdout with all ${VAR}\'s evaluated (except for \\${VAR})\n'
                        >
                        <'      Example: cube_expand_parameters < template > output\n'>
                        <'\n'>
                        <'  * cube_readlink\n'>
                        <'      Echo the absolute path of $1 without any symbolic links.\n'>
                        <'      Example: cube_readlink /etc/localtime\n'>
                        <'\n'>
                        <'  * cube_random_number\n'>
                        <'      Echo a random number between 1 and $1\n'>
                        <'      Example: cube_random_number 10\n'>
                        <'\n'>
                        <'  * cube_tmpdir\n'>
                        <'      Echo a temporary directory\n'>
                        <'      Example: cube_tmpdir\n'>
                        <'\n'>
                        <'  * cube_total_memory\n'>
                        <'      Echo total system memory in bytes\n'>
                        <'      Example: cube_total_memory\n'>
                        <'\n'>
                        <'  * cube_ensure_directory\n'>
                        <'      Ensure directory $1 exists\n'>
                        <'      Example: cube_ensure_directory ~/.ssh/\n'>
                        <'\n'>
                        <'  * cube_ensure_file\n'>
                        <'      Ensure file $1 exists\n'>
                        <'      Example: cube_ensure_file ~/.ssh/authorized_keys\n'>
                        <'\n'>
                        <'  * cube_pushd\n'>
                        <'      Equivalent to `pushd` with $1\n'>
                        <'      Example: cube_pushd ~/.ssh/\n'>
                        <'\n'>
                        <'  * cube_popd\n'>
                        <'      Equivalent to `popd`\n'>
                        <'      Example: cube_popd\n'>
                        <'\n'>
                        <'  * cube_has_role\n'>
                        <'      Return true if the role $1 is set.\n'>
                        <'      Example: cube_has_role "database_backup"\n'>
                        <'\n'>
                        <'  * cube_file_contains\n'>
                        <'      Check if the file $1 contains $2\n'>
                        <'      Example: cube_file_contains /etc/fstab nfsmount\n'>
                        <'\n'>
                        <'  * cube_stdin_contains\n'>
                        <'      Check if stdin contains $1\n'>
                        <'      Example: echo "Hello World" | cube_stdin_contains "Hello"\n'>
                        <'\n'>
                        <'  * cube_interface_ipv4_address\n'>
                        <'      Echo the IPv4 address of interface $1\n'>
                        <'      Example: cube_interface_ipv4_address eth0\n'>
                        <'\n'>
                        <'  * cube_interface_ipv6_address\n'>
                        <'      Echo the IPv6 address of interface $1\n'>
                        <'      Example: cube_interface_ipv6_address eth0\n'>
                        <'\n'>
                        <'  * cube_prompt\n'>
                        <
'      Prompt the question $1 followed by " (y/N)" and prompt for an answer.\n'
                        >
                        <
'      A blank string answer is equivalent to No. Return true if yes, false otherwise.\n'
                        >
                        <'      Example: cube_prompt "Are you sure?"\n'>
                        <'\n'>
                        <'  * cube_hostname\n'>
                        <'      Echo full hostname.\n'>
                        <'      Example: cube_hostname\n'>
                        <'\n'>
                        <'  * cube_user_exists\n'>
                        <'      Check if the $1 user exists\n'>
                        <'      Example: cube_user_exists nginx\n'>
                        <'\n'>
                        <'  * cube_create_user\n'>
                        <'      Create the user $1\n'>
                        <'      Example: cube_create_user nginx\n'>
                        <'\n'>
                        <'  * cube_group_exists\n'>
                        <'      Check if the $1 group exists\n'>
                        <'      Example: cube_group_exists nginx\n'>
                        <'\n'>
                        <'  * cube_create_group\n'>
                        <'      Create the group $1\n'>
                        <'      Example: cube_create_group nginx\n'>
                        <'\n'>
                        <'  * cube_group_contains_user\n'>
                        <'      Check if the $1 group contains the user $2\n'>
                        <'      Example: cube_group_contains_user nginx nginx\n'>
                        <'\n'>
                        <'  * cube_add_group_user\n'>
                        <'      Add the user $2 to group $1\n'>
                        <'      Example: cube_add_group_user nginx nginx\n'>
                        <'\n'>
                        <'Public Variables:\n'>
                        <'\n'>
                        <'  * POSIXCUBE_APIS_ONLY\n'>
                        <
'      Set this to any value to only source the public APIs in posixcube.sh.\n'
                        >
                        <
'      Example: POSIXCUBE_APIS_ONLY=true . posixcube.sh && cube_echo $(cube_random_number 10)\n'
                        >
                        <'  \n'>
                        <'  * POSIXCUBE_SOURCED\n'>
                        <
'      Set this to any value to only run a sub-COMMAND, most commonly `source`,\n'
                        >
                        <
'      to source in all ENVAR files, but skip actual execution of posixcube.\n'
                        >
                        <
'      Example: POSIXCUBE_SOURCED=true . posixcube.sh source; POSIXCUBE_SOURCED= ; cube_echo Test\n'
                        >
                        <'\n'>
                        <'Source: https://github.com/myplaceonline/posixcube\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-ne>} {<0>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [(C {<p666_printf_error>} {(DQ (${ Id.VSub_At '@'))})]
                  spids: [499 512]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name POSIXCUBE_SOURCED))} 
                          {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})]
                  spids: [528 546]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_VERSION)
          op: assign_op.Equal
          rhs: {<0.1>}
          spids: [569]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_DEBUG)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [572]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_COLOR_RESET)
          op: assign_op.Equal
          rhs: {(DQ <Id.Lit_Other '\\'> <'x1B[0m'>)}
          spids: [575]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_COLOR_RED)
          op: assign_op.Equal
          rhs: {(DQ <Id.Lit_Other '\\'> <'x1B[31m'>)}
          spids: [581]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_COLOR_GREEN)
          op: assign_op.Equal
          rhs: {(DQ <Id.Lit_Other '\\'> <'x1B[32m'>)}
          spids: [587]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_COLOR_YELLOW)
          op: assign_op.Equal
          rhs: {(DQ <Id.Lit_Other '\\'> <'x1B[33m'>)}
          spids: [593]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_COLOR_BLUE)
          op: assign_op.Equal
          rhs: {(DQ <Id.Lit_Other '\\'> <'x1B[34m'>)}
          spids: [599]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_COLOR_PURPLE)
          op: assign_op.Equal
          rhs: {(DQ <Id.Lit_Other '\\'> <'x1B[35m'>)}
          spids: [605]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_COLOR_CYAN)
          op: assign_op.Equal
          rhs: {(DQ <Id.Lit_Other '\\'> <'x1B[36m'>)}
          spids: [611]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_COLOR_WHITE)
          op: assign_op.Equal
          rhs: {(DQ <Id.Lit_Other '\\'> <'x1B[37m'>)}
          spids: [617]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_NEWLINE)
          op: assign_op.Equal
          rhs: {(DQ <'\n'>)}
          spids: [624]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_CUBE_NAME)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [629]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_CUBE_NAME_WITH_PREFIX)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [633]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_OS_UNKNOWN)
          op: assign_op.Equal
          rhs: {<-1>}
          spids: [638]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_OS_LINUX)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [641]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_OS_MAC_OSX)
          op: assign_op.Equal
          rhs: {<2>}
          spids: [644]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_OS_WINDOWS)
          op: assign_op.Equal
          rhs: {<3>}
          spids: [647]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_OS_FLAVOR_UNKNOWN)
          op: assign_op.Equal
          rhs: {<-1>}
          spids: [651]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_OS_FLAVOR_FEDORA)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [654]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_OS_FLAVOR_DEBIAN)
          op: assign_op.Equal
          rhs: {<2>}
          spids: [657]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_OS_FLAVOR_UBUNTU)
          op: assign_op.Equal
          rhs: {<3>}
          spids: [660]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_SHELL_UNKNOWN)
          op: assign_op.Equal
          rhs: {<-1>}
          spids: [664]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_SHELL_BASH)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [667]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:POSIXCUBE_NODE_HOSTNAME)
          op: assign_op.Equal
          rhs: {(DQ (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<hostname>})))}
          spids: [671]
        )
      ]
    )
    (command.ShFunction
      name: cube_echo
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} 
                          {(DQ (${ Id.VSub_Name POSIXCUBE_CUBE_NAME_WITH_PREFIX))} {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<printf>} 
                      {
                        (DQ <'['> (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<date>})) 
                          <'] ['> (${ Id.VSub_Name POSIXCUBE_COLOR_GREEN) (${ Id.VSub_Name POSIXCUBE_NODE_HOSTNAME) 
                          (${ Id.VSub_Name POSIXCUBE_COLOR_RESET) <'] '>
                        )
                      }
                    )
                  ]
                  spids: [710 728]
                )
              ]
              else_action: [
                (C {<printf>} 
                  {
                    (DQ <'['> (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<date>})) 
                      <'] ['> (${ Id.VSub_Name POSIXCUBE_COLOR_GREEN) (${ Id.VSub_Name POSIXCUBE_NODE_HOSTNAME) 
                      (${ Id.VSub_Name POSIXCUBE_COLOR_RESET) (${ Id.VSub_Name POSIXCUBE_COLOR_CYAN) (${ Id.VSub_Name POSIXCUBE_CUBE_NAME_WITH_PREFIX) 
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<cube_line_number>} {(DQ <':'>)})
                      ) (${ Id.VSub_Name POSIXCUBE_COLOR_RESET) <'] '>
                    )
                  }
                )
              ]
            )
            (C {<echo>} {(DQ (${ Id.VSub_At '@'))})
          ]
        )
    )
    (command.ShFunction
      name: cube_printf
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:cube_printf_str)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$1')}
                      spids: [849]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} 
                          {(DQ (${ Id.VSub_Name POSIXCUBE_CUBE_NAME_WITH_PREFIX))} {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<printf>} 
                      {
                        (DQ <'['> (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<date>})) 
                          <'] ['> (${ Id.VSub_Name POSIXCUBE_COLOR_GREEN) (${ Id.VSub_Name POSIXCUBE_NODE_HOSTNAME) 
                          (${ Id.VSub_Name POSIXCUBE_COLOR_RESET) <'] '> (${ Id.VSub_Name cube_printf_str) <Id.Lit_Other '\\'> <n>
                        )
                      } {(DQ (${ Id.VSub_At '@'))}
                    )
                  ]
                  spids: [856 874]
                )
              ]
              else_action: [
                (C {<printf>} 
                  {
                    (DQ <'['> (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<date>})) 
                      <'] ['> (${ Id.VSub_Name POSIXCUBE_COLOR_GREEN) (${ Id.VSub_Name POSIXCUBE_NODE_HOSTNAME) 
                      (${ Id.VSub_Name POSIXCUBE_COLOR_RESET) (${ Id.VSub_Name POSIXCUBE_COLOR_CYAN) (${ Id.VSub_Name POSIXCUBE_CUBE_NAME_WITH_PREFIX) 
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<cube_line_number>} {(DQ <':'>)})
                      ) (${ Id.VSub_Name POSIXCUBE_COLOR_RESET) <'] '> (${ Id.VSub_Name cube_printf_str) <Id.Lit_Other '\\'> <n>
                    )
                  } {(DQ (${ Id.VSub_At '@'))}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_error_echo
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} 
                          {(DQ (${ Id.VSub_Name POSIXCUBE_CUBE_NAME_WITH_PREFIX))} {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ <'['> 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<date>})
                            ) <'] ['> (${ Id.VSub_Name POSIXCUBE_COLOR_RED) (${ Id.VSub_Name POSIXCUBE_NODE_HOSTNAME) 
                            (${ Id.VSub_Name POSIXCUBE_COLOR_RESET) <'] '> (${ Id.VSub_Name POSIXCUBE_COLOR_RED) <Error> (${ Id.VSub_Name POSIXCUBE_COLOR_RESET) <': '>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_GreatAnd '1>&'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<2>}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [996 1014]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {<printf>}
                    {
                      (DQ <'['> (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<date>})) 
                        <'] ['> (${ Id.VSub_Name POSIXCUBE_COLOR_RED) (${ Id.VSub_Name POSIXCUBE_NODE_HOSTNAME) 
                        (${ Id.VSub_Name POSIXCUBE_CUBE_NAME_WITH_PREFIX) (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<cube_line_number>} {(DQ <':'>)})) 
                        (${ Id.VSub_Name POSIXCUBE_COLOR_RESET) <'] '> (${ Id.VSub_Name POSIXCUBE_COLOR_RED) <Error> (${ Id.VSub_Name POSIXCUBE_COLOR_RESET) <': '>
                      )
                    }
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {(DQ (${ Id.VSub_At '@'))}]
              redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_error_printf
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:cube_error_printf_str)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$1')}
                      spids: [1154]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} 
                          {(DQ (${ Id.VSub_Name POSIXCUBE_CUBE_NAME_WITH_PREFIX))} {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ <'['> 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<date>})
                            ) <'] ['> (${ Id.VSub_Name POSIXCUBE_COLOR_RED) (${ Id.VSub_Name POSIXCUBE_NODE_HOSTNAME) 
                            (${ Id.VSub_Name POSIXCUBE_COLOR_RESET) <'] '> (${ Id.VSub_Name POSIXCUBE_COLOR_RED) <Error> (${ Id.VSub_Name POSIXCUBE_COLOR_RESET) <': '> 
                            (${ Id.VSub_Name cube_error_printf_str) <Id.Lit_Other '\\'> <n>
                          )
                        }
                        {(DQ (${ Id.VSub_At '@'))}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_GreatAnd '1>&'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<2>}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [1161 1179]
                )
              ]
              else_action: [
                (command.Simple
                  words: [
                    {<printf>}
                    {
                      (DQ <'['> (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<date>})) 
                        <'] ['> (${ Id.VSub_Name POSIXCUBE_COLOR_RED) (${ Id.VSub_Name POSIXCUBE_NODE_HOSTNAME) 
                        (${ Id.VSub_Name POSIXCUBE_CUBE_NAME_WITH_PREFIX) (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<cube_line_number>} {(DQ <':'>)})) 
                        (${ Id.VSub_Name POSIXCUBE_COLOR_RESET) <'] '> (${ Id.VSub_Name POSIXCUBE_COLOR_RED) <Error> (${ Id.VSub_Name POSIXCUBE_COLOR_RESET) <': '> 
                        (${ Id.VSub_Name cube_error_printf_str) <Id.Lit_Other '\\'> <n>
                      )
                    }
                    {(DQ (${ Id.VSub_At '@'))}
                  ]
                  redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_throw
      body: 
        (BraceGroup
          children: [
            (C {<cube_error_echo>} {(DQ (${ Id.VSub_At '@'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cube_throw_pid)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Dollar '$$')}
                  spids: [1322]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (C {<cube_command_exists>} {<caller>})
                            (C {<Id.Lit_LBracket '['>} {<-r>} 
                              {<'/proc/'> (${ Id.VSub_Name cube_throw_pid) <'/cmdline'>} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [(C {<cube_error_echo>} {<Stack> <Id.Lit_Colon ':'>})]
                  spids: [1328 1349]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {<cube_command_exists>} {<caller>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:x)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [1374]
                        )
                      ]
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: [(command.Sentence child:(C {<true>}) terminator:<Id.Op_Semi _>)]
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:cube_error_caller)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: (C {<caller>} {($ Id.VSub_DollarName '$x')})
                                      )
                                    }
                                  spids: [1386]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:cube_error_caller_result)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_QMark '?')}
                                  spids: [1394]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} 
                                          {(${ Id.VSub_Name cube_error_caller_result)} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              name: cube_error_caller_result_lineno
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (C {<echo>} 
                                                        {(DQ (${ Id.VSub_Name cube_error_caller))}
                                                      )
                                                      (C {<awk>} {(SQ <'{ print $1 }'>)})
                                                    ]
                                                    negated: F
                                                  )
                                              )
                                            }
                                          spids: [1418]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              name: cube_error_caller_result_subroutine
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (C {<echo>} 
                                                        {(DQ (${ Id.VSub_Name cube_error_caller))}
                                                      )
                                                      (C {<awk>} {(SQ <'{ print $2 }'>)})
                                                    ]
                                                    negated: F
                                                  )
                                              )
                                            }
                                          spids: [1438]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              name: cube_error_caller_result_sourcefile
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (C {<echo>} 
                                                        {(DQ (${ Id.VSub_Name cube_error_caller))}
                                                      )
                                                      (C {<awk>} 
                                                        {
                                                          (SQ 
                                                            <
'{ for(i=3;i<=NF;i++){ printf "%s ", $i }; printf "\\n" }'
                                                            >
                                                          )
                                                        }
                                                      )
                                                      (C {<sed>} {(SQ <'s/ $//'>)})
                                                    ]
                                                    negated: F
                                                  )
                                              )
                                            }
                                          spids: [1458]
                                        )
                                      ]
                                    )
                                    (C {<cube_error_printf>} 
                                      {
                                        (DQ <'  [func] %4s '> 
                                          (${ Id.VSub_Name cube_error_caller_result_subroutine) <' '> (${ Id.VSub_Name cube_error_caller_result_sourcefile)
                                        )
                                      } {(DQ (${ Id.VSub_Name cube_error_caller_result_lineno))}
                                    )
                                  ]
                                  spids: [1400 1415]
                                )
                              ]
                              else_action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:x)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (word_part.ArithSub
                                        anode: 
                                          (arith_expr.Binary
                                            op_id: Id.Arith_Plus
                                            left: {(${ Id.VSub_Name x)}
                                            right: {<Id.Lit_Digits 1>}
                                          )
                                      )
                                    }
                                  spids: [1515]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  spids: [1363 1371]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<-r>} 
                          {<'/proc/'> (${ Id.VSub_Name cube_throw_pid) <'/cmdline'>} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: [(C {<true>})]
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:cube_throw_cmdline)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (C {<cat>} 
                                            {<'/proc/'> (${ Id.VSub_Name cube_throw_pid) <'/cmdline'>}
                                          )
                                      )
                                    }
                                  spids: [1564]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:cube_throw_ppid)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<grep>} {<PPid>} 
                                                {<'/proc/'> (${ Id.VSub_Name cube_throw_pid) 
                                                  <'/status'>
                                                }
                                              )
                                              (C {<awk>} {(SQ <'{ print $2; }'>)})
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                  spids: [1576]
                                )
                              ]
                            )
                            (C {<cube_error_printf>} 
                              {(DQ <'  [pid] %5s '> (${ Id.VSub_Name cube_throw_cmdline))} {(${ Id.VSub_Name cube_throw_pid)}
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} 
                                          {(DQ (${ Id.VSub_Name cube_throw_pid))} {<Id.Lit_Equals '='>} {(DQ <1>)} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                                  spids: [1612 1631]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:cube_throw_pid)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name cube_throw_ppid)}
                                  spids: [1643]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  spids: [1538 1553]
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
        )
    )
    (command.ShFunction
      name: cube_line_number
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {<cube_command_exists>} {<caller>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:x)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [1703]
                        )
                      ]
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: [(command.Sentence child:(C {<true>}) terminator:<Id.Op_Semi _>)]
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:cube_api_caller_output)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: (C {<caller>} {($ Id.VSub_DollarName '$x')})
                                      )
                                    }
                                  spids: [1715]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:cube_api_caller_result)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_QMark '?')}
                                  spids: [1723]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} 
                                          {(${ Id.VSub_Name cube_api_caller_result)} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:cube_api_caller_result_lineno)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (C {<echo>} 
                                                        {
                                                          (DQ 
                                                            (${ Id.VSub_Name cube_api_caller_output)
                                                          )
                                                        }
                                                      )
                                                      (C {<awk>} {(SQ <'{ print $1 }'>)})
                                                    ]
                                                    negated: F
                                                  )
                                              )
                                            }
                                          spids: [1747]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              name: cube_api_caller_result_subroutine
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (C {<echo>} 
                                                        {
                                                          (DQ 
                                                            (${ Id.VSub_Name cube_api_caller_output)
                                                          )
                                                        }
                                                      )
                                                      (C {<awk>} {(SQ <'{ print $2 }'>)})
                                                    ]
                                                    negated: F
                                                  )
                                              )
                                            }
                                          spids: [1767]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              name: cube_api_caller_result_sourcefile
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (C {<echo>} 
                                                        {
                                                          (DQ 
                                                            (${ Id.VSub_Name cube_api_caller_output)
                                                          )
                                                        }
                                                      )
                                                      (C {<awk>} 
                                                        {
                                                          (SQ 
                                                            <
'{ for(i=3;i<=NF;i++){ printf "%s ", $i }; printf "\\n" }'
                                                            >
                                                          )
                                                        }
                                                      )
                                                      (C {<sed>} {(SQ <'s/ $//'>)})
                                                    ]
                                                    negated: F
                                                  )
                                              )
                                            }
                                          spids: [1787]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              name: cube_api_caller_result_sourcefile_basename
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (C {<basename>} 
                                                    {
                                                      (DQ 
                                                        (${ Id.VSub_Name 
cube_api_caller_result_sourcefile
                                                        )
                                                      )
                                                    }
                                                  )
                                              )
                                            }
                                          spids: [1815]
                                        )
                                      ]
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} 
                                                  {
                                                    (DQ 
                                                      (${ Id.VSub_Name 
cube_api_caller_result_sourcefile_basename
                                                      )
                                                    )
                                                  } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <posixcube.sh>)} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                          action: [
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (command.Sentence
                                                      child: 
                                                        (C {<Id.Lit_LBracket '['>} 
                                                          {(DQ (${ Id.VSub_Number 1))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                                        )
                                                      terminator: <Id.Op_Semi _>
                                                    )
                                                  ]
                                                  action: [
                                                    (C {<printf>} {(DQ <'%s'>)} 
                                                      {(DQ (${ Id.VSub_Number 1))}
                                                    )
                                                  ]
                                                  spids: [1850 1869]
                                                )
                                              ]
                                            )
                                            (C {<printf>} {(DQ <'%s'>)} 
                                              {(DQ (${ Id.VSub_Name cube_api_caller_result_lineno))}
                                            )
                                            (command.ControlFlow
                                              token: <Id.ControlFlow_Break break>
                                            )
                                          ]
                                          spids: [1827 1847]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [1729 1744]
                                )
                              ]
                              else_action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:x)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (word_part.ArithSub
                                        anode: 
                                          (arith_expr.Binary
                                            op_id: Id.Arith_Plus
                                            left: {(${ Id.VSub_Name x)}
                                            right: {<Id.Lit_Digits 1>}
                                          )
                                      )
                                    }
                                  spids: [1916]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  spids: [1692 1700]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_check_return
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cube_check_return_val)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_QMark '?')}
                  spids: [1957]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name cube_check_return_val)} {<-ne>} 
                          {<0>} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cube_check_return_info)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                          spids: [1981]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Star '*'))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:cube_check_return_info)
                                  op: assign_op.Equal
                                  rhs: {(DQ <' ('> (${ Id.VSub_Star '*') <')'>)}
                                  spids: [2008]
                                )
                              ]
                            )
                          ]
                          spids: [1986 2005]
                        )
                      ]
                    )
                    (C {<cube_throw>} 
                      {
                        (DQ <'Previous command failed with code '> 
                          (${ Id.VSub_Name cube_check_return_val) (${ Id.VSub_Name cube_check_return_info)
                        )
                      }
                    )
                  ]
                  spids: [1963 1978]
                )
              ]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name cube_check_return_val)}
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_append_str
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Number 1))} {<Id.Lit_Equals '='>} {(DQ )} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [(C {<echo>} {(DQ (${ Id.VSub_Number 2))})]
                  spids: [2096 2114]
                )
              ]
              else_action: [
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Number 3))} 
                              {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                      action: [(C {<echo>} {(DQ (${ Id.VSub_Number 1) <' '> (${ Id.VSub_Number 2))})]
                      spids: [2129 2147]
                    )
                  ]
                  else_action: [
                    (C {<echo>} {(DQ (${ Id.VSub_Number 1) (${ Id.VSub_Number 3) (${ Id.VSub_Number 2))})
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_command_exists
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (command.Simple
              words: [{<command>} {<-v>} {(${ Id.VSub_Number 1)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_dir_exists
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (C {<Id.Lit_LBracket '['>} {<-d>} {(DQ (${ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>})
          ]
        )
    )
    (command.ShFunction
      name: cube_file_exists
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (C {<Id.Lit_LBracket '['>} {<-r>} {(DQ (${ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>})
          ]
        )
    )
    (command.ShFunction
      name: cube_operating_system
      body: 
        (BraceGroup
          children: [
            (command.Case
              to_match: 
                {(DQ (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<uname>} {<-s>})))}
              arms: [
                (case_arm
                  pat_list: [{<Linux>}]
                  action: [(C {<echo>} {(${ Id.VSub_Name POSIXCUBE_OS_LINUX)})]
                  spids: [2392 2393 2403 -1]
                )
                (case_arm
                  pat_list: [{<Darwin>}]
                  action: [(C {<echo>} {(${ Id.VSub_Name POSIXCUBE_OS_MAC_OSX)})]
                  spids: [2406 2407 2417 -1]
                )
                (case_arm
                  pat_list: [
                    {<CYGWIN> <Id.Lit_Star '*'>}
                    {<MINGW32> <Id.Lit_Star '*'>}
                    {<MSYS> <Id.Lit_Star '*'>}
                  ]
                  action: [(C {<echo>} {(${ Id.VSub_Name POSIXCUBE_OS_WINDOWS)})]
                  spids: [2420 2428 2438 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<echo>} {(${ Id.VSub_Name POSIXCUBE_OS_UNKNOWN)})]
                  spids: [2441 2442 2452 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_operating_system_has_flavor
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (command.Case
              to_match: {(DQ (${ Id.VSub_Number 1))}
              arms: [
                (case_arm
                  pat_list: [{(${ Id.VSub_Name POSIXCUBE_OS_FLAVOR_FEDORA)}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: (C {<cube_file_exists>} {(DQ <'/etc/fedora-release'>)})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [2516 2525]
                        )
                      ]
                    )
                  ]
                  spids: [2510 2513 2536 -1]
                )
                (case_arm
                  pat_list: [{(${ Id.VSub_Name POSIXCUBE_OS_FLAVOR_UBUNTU)}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: (C {<cube_file_exists>} {(DQ <'/etc/lsb-release'>)})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [2545 2554]
                        )
                      ]
                    )
                  ]
                  spids: [2539 2542 2565 -1]
                )
                (case_arm
                  pat_list: [{(${ Id.VSub_Name POSIXCUBE_OS_FLAVOR_DEBIAN)}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Id.Op_DPipe]
                                  children: [
                                    (C {<cube_file_contains>} {<'/etc/os-release'>} 
                                      {
                                        (DQ <'NAME='> 
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\"'>
                                          ) <Debian>
                                        )
                                      }
                                    )
                                    (C {<cube_file_exists>} {(DQ <'/etc/lsb-release'>)})
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [2574 2595]
                        )
                      ]
                    )
                  ]
                  spids: [2568 2571 2606 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [(C {<cube_throw>} {(DQ <'Unknown flavor '> (${ Id.VSub_Number 1))})]
                  spids: [2609 2610 2623 -1]
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
        )
    )
    (command.ShFunction
      name: cube_shell
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$BASH'))} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [(C {<echo>} {(${ Id.VSub_Name POSIXCUBE_SHELL_BASH)})]
                  spids: [2662 2679]
                )
              ]
              else_action: [(C {<echo>} {(${ Id.VSub_Name POSIXCUBE_SHELL_UNKNOWN)})]
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_check_numargs
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:cube_check_numargs_expected)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$1')}
                      spids: [2735]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Pound '#')} {<-lt>} 
                  {(${ Id.VSub_Name cube_check_numargs_expected)} {<Id.Lit_RBracket ']'>}
                )
                (C {<cube_throw>} 
                  {
                    (DQ <'Expected '> (${ Id.VSub_Name cube_check_numargs_expected) 
                      <' arguments, received '> (${ Id.VSub_Pound '#') <.>
                    )
                  }
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
    (command.ShFunction
      name: cube_service
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {<cube_command_exists>} {<systemctl>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Number 1))} 
                                  {<Id.Lit_Equals '='>} {(DQ <daemon-reload>)} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<systemctl>} {($ Id.VSub_Number '$1')})
                                (C {<cube_check_return>})
                              ]
                            )
                          ]
                          spids: [2833 2852]
                        )
                      ]
                      else_action: [
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (C {<systemctl>} {($ Id.VSub_Number '$1')} {($ Id.VSub_Number '$2')})
                            (C {<cube_check_return>})
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [2822 2830]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {<cube_command_exists>} {<service>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Number 1))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <daemon-reload>)} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<service>} {($ Id.VSub_Number '$2')} {($ Id.VSub_Number '$1')})
                                (C {<cube_check_return>})
                              ]
                            )
                          ]
                          spids: [2892 2912]
                        )
                      ]
                    )
                  ]
                  spids: [2881 2889]
                )
              ]
              else_action: [(C {<cube_throw>} {(DQ <'Could not find service program'>)})]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Number 2))} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.Case
                      to_match: {(DQ (${ Id.VSub_Number 1))}
                      arms: [
                        (case_arm
                          pat_list: [{<stop>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:cube_service_verb)
                                  op: assign_op.Equal
                                  rhs: {(DQ <stopped>)}
                                  spids: [2979]
                                )
                              ]
                            )
                          ]
                          spids: [2975 2976 2985 -1]
                        )
                        (case_arm
                          pat_list: [{<enable>} {<disable>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:cube_service_verb)
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Number 1) <d>)}
                                  spids: [2994]
                                )
                              ]
                            )
                          ]
                          spids: [2988 2991 3003 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:cube_service_verb)
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Number 1) <ed>)}
                                  spids: [3010]
                                )
                              ]
                            )
                          ]
                          spids: [3006 3007 3019 -1]
                        )
                      ]
                    )
                    (C {<cube_echo>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Pipeline
                                children: [
                                  (C {<echo>} {(${ Id.VSub_Name cube_service_verb)})
                                  (C {<cut>} {<-c1>})
                                  (C {<tr>} {<Id.Lit_LBracket '['> <a-z> <Id.Lit_RBracket ']'>} 
                                    {<Id.Lit_LBracket '['> <A-Z> <Id.Lit_RBracket ']'>}
                                  )
                                ]
                                negated: F
                              )
                          ) 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Pipeline
                                children: [
                                  (C {<echo>} {(${ Id.VSub_Name cube_service_verb)})
                                  (C {<cut>} {<-c2->})
                                ]
                                negated: F
                              )
                          ) <' '> ($ Id.VSub_Number '$2') <' service'>
                        )
                      }
                    )
                  ]
                  spids: [2942 2961]
                )
              ]
              else_action: [(C {<cube_echo>} {(DQ <'Executed '> ($ Id.VSub_Number '$1'))})]
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_service_exists
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {<cube_command_exists>} {<systemctl>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cube_service_exists_output)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      words: [{<systemctl>} {<status>} {(${ Id.VSub_Number 1)}]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_GreatAnd '2>&'>
                                          loc: (redir_loc.Fd fd:2)
                                          arg: {<1>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                )
                              )
                            }
                          spids: [3138]
                        )
                      ]
                    )
                    (command.Pipeline
                      children: [
                        (C {<echo>} {(DQ (${ Id.VSub_Name cube_service_exists_output))})
                        (command.Simple
                          words: [{<grep>} {<-l>} {<loaded>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                            (redir
                              op: <Id.Redir_GreatAnd '2>&'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<1>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      negated: F
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {($ Id.VSub_QMark '$?')}
                    )
                  ]
                  spids: [3127 3135]
                )
              ]
              else_action: [(C {<cube_throw>} {(DQ <'Not implemented'>)})]
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_package
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {<cube_command_exists>} {<dnf>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<cube_echo>} {(DQ <'Executing dnf -y '> (${ Id.VSub_At '@'))})
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [(C {<dnf>} {<-y>} {(DQ (${ Id.VSub_At '@'))}) (C {<cube_check_return>})]
                    )
                  ]
                  spids: [3242 3250]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {<cube_command_exists>} {<yum>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<cube_echo>} {(DQ <'Executing yum -y '> (${ Id.VSub_At '@'))})
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [(C {<yum>} {<-y>} {(DQ (${ Id.VSub_At '@'))}) (C {<cube_check_return>})]
                    )
                  ]
                  spids: [3278 3286]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {<cube_command_exists>} {<apt-get>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<cube_echo>} {(DQ <'Executing apt-get -y '> (${ Id.VSub_At '@'))})
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.Simple
                          words: [{<apt-get>} {<-y>} {(DQ (${ Id.VSub_At '@'))}]
                          more_env: [
                            (env_pair
                              name: DEBIAN_FRONTEND
                              val: {<noninteractive>}
                              spids: [3339]
                            )
                          ]
                          do_fork: T
                        )
                        (C {<cube_check_return>})
                      ]
                    )
                  ]
                  spids: [3314 3322]
                )
              ]
              else_action: [
                (C {<cube_throw>} {(DQ <'cube_package has not implemented your operating system yet'>)})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_current_script_name
      body: (BraceGroup children:[(C {<basename>} {(DQ ($ Id.VSub_Number '$0'))})])
    )
    (command.ShFunction
      name: cube_current_script_abs_path
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cube_current_script_abs_path_dirname)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.CommandList
                            children: [
                              (command.Sentence
                                child: 
                                  (C {<cd>} 
                                    {
                                      (DQ 
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: (C {<dirname>} {(DQ ($ Id.VSub_Number '$0'))})
                                        )
                                      )
                                    }
                                  )
                                terminator: <Id.Op_Semi _>
                              )
                              (C {<pwd>} {<-P>})
                            ]
                          )
                      )
                    }
                  spids: [3425]
                )
              ]
            )
            (C {<echo>} 
              {
                (DQ (${ Id.VSub_Name cube_current_script_abs_path_dirname) <'/'> 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<cube_current_script_name>})
                  )
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_file_size
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {<cube_file_exists>} {(DQ (${ Id.VSub_Number 1))})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{<wc>} {<-c>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {(DQ (${ Id.VSub_Number 1))}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [3503 3515]
                )
              ]
              else_action: [
                (C {<cube_throw>} {(DQ <'Could not find or read file '> (${ Id.VSub_Number 1))})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_expand_parameters
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cube_expand_parameters_is_bash)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [3577]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} 
                          {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<cube_shell>}))} {<-eq>} {(${ Id.VSub_Name POSIXCUBE_SHELL_BASH)} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cube_expand_parameters_is_bash)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [3609]
                        )
                      ]
                    )
                  ]
                  spids: [3581 3598]
                )
              ]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: [
                (command.Sentence
                  child: 
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.Simple
                          words: [{<read>} {<-r>} {<cube_expand_parameters_line>}]
                          more_env: [(env_pair name:IFS val:{(SQ )} spids:[3628])]
                          do_fork: T
                        )
                        (C {<Id.Lit_LBracket '['>} {<-n>} 
                          {(DQ (${ Id.VSub_Name cube_expand_parameters_line))} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cube_expand_parameters_line_escaped)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {<printf>} {<Id.Lit_Other '%'> <s>} 
                                        {(DQ (${ Id.VSub_Name cube_expand_parameters_line))}
                                      )
                                      (C {<tr>} {(SQ <'`([$\\\\"'>)} {(SQ <'\\1\\2\\3\\4\\5\\6'>)})
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          spids: [3660]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} 
                                  {($ Id.VSub_DollarName '$cube_expand_parameters_is_bash')} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:cube_expand_parameters_line_escaped)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (braced_var_sub
                                        token: <Id.VSub_Name cube_expand_parameters_line_escaped>
                                        suffix_op: 
                                          (suffix_op.PatSub
                                            pat: 
                                              {
                                                (single_quoted
                                                  left: <Id.Left_SingleQuoteC '$\''>
                                                  tokens: [<Id.Char_Octal3 '\\4'>]
                                                ) <'{'>
                                              }
                                            replace: 
                                              {
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\$'>
                                                ) <'{'>
                                              }
                                            replace_mode: Id.Lit_Slash
                                          )
                                      )
                                    }
                                  spids: [3709]
                                )
                              ]
                            )
                          ]
                          spids: [3693 3706]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:cube_expand_parameters_line_escaped)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Pipeline
                                        children: [
                                          (C {<printf>} {<Id.Lit_Other '%'> <s>} 
                                            {
                                              (DQ 
                                                (${ Id.VSub_Name cube_expand_parameters_line_escaped)
                                              )
                                            }
                                          )
                                          (C {<sed>} {(SQ <'s/\\([^\\x05]\\)\\x04{/\\1${/g'>)})
                                          (C {<sed>} {(SQ <'s/^\\x04{/${/g'>)})
                                        ]
                                        negated: F
                                      )
                                  )
                                }
                              spids: [3727]
                            )
                          ]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:cube_expand_parameters_output)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (C {<eval>} 
                                        {
                                          (DQ <'printf \'%s'> <Id.Lit_Other '\\'> <'n\' '> 
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\"'>
                                            ) (${ Id.VSub_Name cube_expand_parameters_line_escaped) 
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\"'>
                                            )
                                          )
                                        }
                                      )
                                  )
                                }
                              spids: [3763]
                            )
                          ]
                        )
                        (C {<cube_check_return>} 
                          {(DQ (${ Id.VSub_Name cube_expand_parameters_line_escaped))}
                        )
                      ]
                    )
                    (command.Pipeline
                      children: [
                        (C {<echo>} {(DQ (${ Id.VSub_Name cube_expand_parameters_output))})
                        (C {<tr>} {(SQ <'\\1\\2\\3\\4\\5\\6'>)} {(SQ <'`([$\\\\"'>)})
                      ]
                      negated: F
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_read_heredoc
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cube_read_heredoc_first)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [3846]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cube_read_heredoc_result)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [3850]
                )
              ]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: [
                (command.Sentence
                  child: 
                    (command.Simple
                      words: [{<read>} {<-r>} {<cube_read_heredoc_line>}]
                      more_env: [(env_pair name:IFS val:{(SQ <'\\n'>)} spids:[3857])]
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name cube_read_heredoc_first)} 
                                  {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:cube_read_heredoc_result)
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Name cube_read_heredoc_line))}
                                  spids: [3890]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:cube_read_heredoc_first)
                                  op: assign_op.Equal
                                  rhs: {<0>}
                                  spids: [3898]
                                )
                              ]
                            )
                          ]
                          spids: [3872 3887]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:cube_read_heredoc_result)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ (${ Id.VSub_Name cube_read_heredoc_result) 
                                    (${ Id.VSub_Name POSIXCUBE_NEWLINE) (${ Id.VSub_Name cube_read_heredoc_line)
                                  )
                                }
                              spids: [3905]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_set_file_contents
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<2>} {(DQ (${ Id.VSub_At '@'))})
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:cube_set_file_contents_target_file)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_Number '$1'))}
                      spids: [3978]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:cube_set_file_contents_input_file)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_Number '$1'))}
                      spids: [3987]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cube_set_file_contents_debug)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name cube_set_file_contents_input_file))}
                  spids: [3997]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cube_set_file_contents_needs_replace)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [4007]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cube_set_file_contents_input_file_needs_remove)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [4011]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [
                            (C {<cube_file_exists>} 
                              {(DQ (${ Id.VSub_Name cube_set_file_contents_input_file))}
                            )
                          ]
                          negated: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<cube_throw>} 
                      {
                        (DQ <'Could not find or read input '> 
                          (${ Id.VSub_Name cube_set_file_contents_input_file)
                        )
                      }
                    )
                  ]
                  spids: [4017 4031]
                )
              ]
            )
            (C {<cube_ensure_directory>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<dirname>} {(DQ (${ Id.VSub_Name cube_set_file_contents_target_file))})
                  )
                )
              }
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cube_set_file_contents_input_file_is_template)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (C {<expr>} {(DQ (${ Id.VSub_Name cube_set_file_contents_input_file))} 
                            {<Id.Lit_Colon ':'>} {(SQ <'.*\\.template$'>)}
                          )
                      )
                    }
                  spids: [4066]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} 
                          {(${ Id.VSub_Name cube_set_file_contents_input_file_is_template)} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cube_set_file_contents_input_file_original)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name cube_set_file_contents_input_file))}
                          spids: [4104]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cube_set_file_contents_input_file)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name cube_set_file_contents_input_file) <.tmp>)}
                          spids: [4112]
                        )
                      ]
                    )
                    (C {<cube_echo>} 
                      {
                        (DQ <'Expanding parameters of '> 
                          (${ Id.VSub_Name cube_set_file_contents_input_file_original)
                        )
                      }
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.Simple
                          words: [{<cube_expand_parameters>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {(DQ (${ Id.VSub_Name cube_set_file_contents_input_file_original))}
                            )
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {(DQ (${ Id.VSub_Name cube_set_file_contents_input_file))}
                            )
                          ]
                          do_fork: T
                        )
                        (C {<cube_check_return>})
                      ]
                    )
                    (C {<cube_echo>} {(DQ <'Expansion complete'>)})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cube_set_file_contents_input_file_needs_remove)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [4204]
                        )
                      ]
                    )
                  ]
                  spids: [4084 4099]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<cube_file_exists>} 
                          {(DQ (${ Id.VSub_Name cube_set_file_contents_target_file))}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cube_set_file_contents_target_file_size)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C {<cube_file_size>} 
                                    {(DQ (${ Id.VSub_Name cube_set_file_contents_target_file))}
                                  )
                              )
                            }
                          spids: [4234]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cube_set_file_contents_input_file_size)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C {<cube_file_size>} 
                                    {(DQ (${ Id.VSub_Name cube_set_file_contents_input_file))}
                                  )
                              )
                            }
                          spids: [4246]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name POSIXCUBE_DEBUG)} {<-eq>} 
                                  {<1>} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (C {<cube_echo>} 
                              {
                                (DQ <'Target file '> 
                                  (${ Id.VSub_Name cube_set_file_contents_target_file) <' exists. Target size: '> (${ Id.VSub_Name cube_set_file_contents_target_file_size) 
                                  <', source size: '> (${ Id.VSub_Name cube_set_file_contents_input_file_size)
                                )
                              }
                            )
                          ]
                          spids: [4260 4275]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} 
                                  {(${ Id.VSub_Name cube_set_file_contents_target_file_size)} {<-eq>} {(${ Id.VSub_Name cube_set_file_contents_input_file_size)} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      name: cube_set_file_contents_target_file_cksum
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<cksum>} 
                                                {
                                                  (DQ 
                                                    (${ Id.VSub_Name 
cube_set_file_contents_target_file
                                                    )
                                                  )
                                                }
                                              )
                                              (C {<awk>} {(SQ <'{print $1}'>)})
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                  spids: [4326]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      name: cube_set_file_contents_input_file_cksum
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<cksum>} 
                                                {
                                                  (DQ 
                                                    (${ Id.VSub_Name 
cube_set_file_contents_input_file
                                                    )
                                                  )
                                                }
                                              )
                                              (C {<awk>} {(SQ <'{print $1}'>)})
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                  spids: [4346]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name POSIXCUBE_DEBUG)} 
                                          {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (C {<cube_echo>} 
                                      {
                                        (DQ <'Target cksum: '> 
                                          (${ Id.VSub_Name cube_set_file_contents_target_file_cksum) <', source cksum: '> (${ Id.VSub_Name cube_set_file_contents_input_file_cksum)
                                        )
                                      }
                                    )
                                  ]
                                  spids: [4367 4382]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} 
                                          {
                                            (DQ 
                                              (${ Id.VSub_Name 
cube_set_file_contents_target_file_cksum
                                              )
                                            )
                                          } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name cube_set_file_contents_input_file_cksum))} 
                                          {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              name: cube_set_file_contents_needs_replace
                                            )
                                          op: assign_op.Equal
                                          rhs: {<1>}
                                          spids: [4429]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [4404 4426]
                                )
                              ]
                            )
                          ]
                          spids: [4301 4318]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:cube_set_file_contents_needs_replace)
                              op: assign_op.Equal
                              rhs: {<1>}
                              spids: [4439]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [4213 4225]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:cube_set_file_contents_needs_replace)
                      op: assign_op.Equal
                      rhs: {<1>}
                      spids: [4449]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} 
                          {(${ Id.VSub_Name cube_set_file_contents_needs_replace)} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<cube_echo>} 
                      {
                        (DQ <'Updating file contents of '> 
                          (${ Id.VSub_Name cube_set_file_contents_target_file) <' with '> (${ Id.VSub_Name cube_set_file_contents_debug)
                        )
                      }
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<cp>} {(DQ (${ Id.VSub_Name cube_set_file_contents_input_file))} 
                          {(DQ (${ Id.VSub_Name cube_set_file_contents_target_file))}
                        )
                        (C {<cube_check_return>})
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} 
                                  {(${ Id.VSub_Name cube_set_file_contents_input_file_needs_remove)} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<rm>} {<-f>} 
                                  {(DQ (${ Id.VSub_Name cube_set_file_contents_input_file))}
                                )
                                (C {<cube_check_return>})
                              ]
                            )
                          ]
                          spids: [4509 4525]
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [4457 4473]
                )
              ]
              else_action: [
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {(${ Id.VSub_Name cube_set_file_contents_input_file_needs_remove)} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                      action: [
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (C {<rm>} {<-f>} {(DQ (${ Id.VSub_Name cube_set_file_contents_input_file))})
                            (C {<cube_check_return>})
                          ]
                        )
                      ]
                      spids: [4554 4570]
                    )
                  ]
                )
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_random_number
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (command.Pipeline
              children: [
                (C {<echo>} {(DQ )})
                (C {<awk>} {(DQ <'{ srand(); print int('> (${ Id.VSub_Number 1) <' * rand()) + 1; }'>)})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_tmpdir
      body: (BraceGroup children:[(C {<echo>} {(DQ <'/tmp/'>)})])
    )
    (command.ShFunction
      name: cube_set_file_contents_string
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<2>} {(DQ (${ Id.VSub_At '@'))})
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:cube_set_file_contents_target_file)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_Number '$1'))}
                      spids: [4736]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cube_set_file_contents_tmp)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<cube_tmpdir>})) 
                        <'/tmpcontents_'> (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<cube_random_number>} {<10000>})) 
                        <.template>
                      )
                    }
                  spids: [4747]
                )
              ]
            )
            (command.Simple
              words: [{<echo>} {(DQ (${ Id.VSub_At '@'))}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ (${ Id.VSub_Name cube_set_file_contents_tmp))}
                )
              ]
              do_fork: T
            )
            (C {<cube_set_file_contents>} {(DQ (${ Id.VSub_Name cube_set_file_contents_target_file))} 
              {(DQ (${ Id.VSub_Name cube_set_file_contents_tmp))} {(DQ <'from string'>)}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cube_set_file_contents_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [4798]
                )
              ]
            )
            (C {<rm>} {(DQ (${ Id.VSub_Name cube_set_file_contents_tmp))})
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name cube_set_file_contents_result)}
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_readlink
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cube_readlink_target)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [4884]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:cube_readlink_path)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.AndOr
                                ops: [Id.Op_DAmp]
                                children: [
                                  (C {<cd>} {<-P>} {<-->} 
                                    {
                                      (DQ 
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (C {<dirname>} {<-->} 
                                              {(DQ (${ Id.VSub_Name cube_readlink_target))}
                                            )
                                        )
                                      )
                                    }
                                  )
                                  (C {<pwd>} {<-P>})
                                ]
                              )
                          )
                        }
                      spids: [4888]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:cube_readlink_path)
                      op: assign_op.Equal
                      rhs: 
                        {(${ Id.VSub_Name cube_readlink_path) <'/'> 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<basename>} {<-->} {(DQ (${ Id.VSub_Name cube_readlink_target))})
                          )
                        }
                      spids: [4919]
                    )
                  ]
                )
              ]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-h>} {(DQ (${ Id.VSub_Name cube_readlink_path))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cube_readlink_dir)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C {<dirname>} {<-->} {(DQ (${ Id.VSub_Name cube_readlink_path))})
                              )
                            }
                          spids: [4957]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cube_readlink_sym)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: (C {<readlink>} {(DQ (${ Id.VSub_Name cube_readlink_path))})
                              )
                            }
                          spids: [4971]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cube_readlink_path)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.AndOr
                                    ops: [Id.Op_DAmp Id.Op_DAmp]
                                    children: [
                                      (C {<cd>} {(DQ (${ Id.VSub_Name cube_readlink_dir))})
                                      (C {<cd>} 
                                        {
                                          (DQ 
                                            (command_sub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (C {<dirname>} {<-->} 
                                                  {(DQ (${ Id.VSub_Name cube_readlink_sym))}
                                                )
                                            )
                                          )
                                        }
                                      )
                                      (C {<pwd>})
                                    ]
                                  )
                              ) <'/'> 
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C {<basename>} {<-->} {(DQ (${ Id.VSub_Name cube_readlink_sym))})
                              )
                            }
                          spids: [4983]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<echo>} {(${ Id.VSub_Name cube_readlink_path)})
          ]
        )
    )
    (command.ShFunction
      name: cube_total_memory
      body: 
        (BraceGroup
          children: [
            (command.Case
              to_match: {(DQ (${ Id.VSub_Number 1))}
              arms: [
                (case_arm
                  pat_list: [{<kb>} {<KB>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cube_total_memory_divisor)
                          op: assign_op.Equal
                          rhs: {<1024>}
                          spids: [5092]
                        )
                      ]
                    )
                  ]
                  spids: [5086 5089 5096 -1]
                )
                (case_arm
                  pat_list: [{<mb>} {<MB>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cube_total_memory_divisor)
                          op: assign_op.Equal
                          rhs: {<1048576>}
                          spids: [5105]
                        )
                      ]
                    )
                  ]
                  spids: [5099 5102 5109 -1]
                )
                (case_arm
                  pat_list: [{<gb>} {<GB>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cube_total_memory_divisor)
                          op: assign_op.Equal
                          rhs: {<1073741824>}
                          spids: [5118]
                        )
                      ]
                    )
                  ]
                  spids: [5112 5115 5122 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cube_total_memory_divisor)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [5129]
                        )
                      ]
                    )
                  ]
                  spids: [5125 5126 5133 -1]
                )
              ]
            )
            (C {<echo>} 
              {
                (word_part.ArithSub
                  anode: 
                    (arith_expr.Binary
                      op_id: Id.Arith_Slash
                      left: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Star
                          left: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {<grep>} {(DQ <'^MemTotal:'>)} {<'/proc/meminfo'>})
                                      (C {<awk>} {(SQ <'{print $2}'>)})
                                    ]
                                    negated: F
                                  )
                              )
                            }
                          right: {<Id.Lit_Digits 1024>}
                        )
                      right: {(${ Id.VSub_Name cube_total_memory_divisor)}
                    )
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_ensure_directory
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cube_ensure_directory_result)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [5224]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [(C {<cube_dir_exists>} {(DQ (${ Id.VSub_Number 1))})]
                          negated: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<mkdir>} {<-p>} {(DQ (${ Id.VSub_Number 1))})
                        (C {<cube_check_return>})
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cube_ensure_directory_result)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [5261]
                        )
                      ]
                    )
                    (C {<cube_echo>} {(DQ <'Created directory '> (${ Id.VSub_Number 1))})
                  ]
                  spids: [5230 5243]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Number 2))} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<chmod>} {(${ Id.VSub_Number 2)} {(DQ (${ Id.VSub_Number 1))})
                        (C {<cube_check_return>})
                      ]
                    )
                  ]
                  spids: [5278 5297]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Number 3))} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<chown>} {(${ Id.VSub_Number 3)} {(DQ (${ Id.VSub_Number 1))})
                        (C {<cube_check_return>})
                      ]
                    )
                  ]
                  spids: [5320 5339]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Number 4))} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<chgrp>} {(${ Id.VSub_Number 4)} {(DQ (${ Id.VSub_Number 1))})
                        (C {<cube_check_return>})
                      ]
                    )
                  ]
                  spids: [5362 5381]
                )
              ]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name cube_ensure_directory_result)}
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_ensure_file
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cube_ensure_file_result)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [5466]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Pipeline
                          children: [(C {<cube_file_exists>} {(DQ (${ Id.VSub_Number 1))})]
                          negated: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<cube_ensure_directory>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<dirname>} {(DQ (${ Id.VSub_Number 1))})
                          )
                        )
                      } {($ Id.VSub_Number '$2')} {($ Id.VSub_Number '$3')} {($ Id.VSub_Number '$4')}
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [(C {<touch>} {(DQ (${ Id.VSub_Number 1))}) (C {<cube_check_return>})]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cube_ensure_file_result)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [5526]
                        )
                      ]
                    )
                    (C {<cube_echo>} {(DQ <'Created file '> (${ Id.VSub_Number 1))})
                  ]
                  spids: [5472 5485]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Number 2))} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<chmod>} {(${ Id.VSub_Number 2)} {(DQ (${ Id.VSub_Number 1))})
                        (C {<cube_check_return>})
                      ]
                    )
                  ]
                  spids: [5543 5562]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Number 3))} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<chown>} {(${ Id.VSub_Number 3)} {(DQ (${ Id.VSub_Number 1))})
                        (C {<cube_check_return>})
                      ]
                    )
                  ]
                  spids: [5585 5604]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Number 4))} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<chgrp>} {(${ Id.VSub_Number 4)} {(DQ (${ Id.VSub_Number 1))})
                        (C {<cube_check_return>})
                      ]
                    )
                  ]
                  spids: [5627 5646]
                )
              ]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {(${ Id.VSub_Name cube_ensure_file_result)}
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_pushd
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {<cube_command_exists>} {<pushd>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [(C {<pushd>} {(DQ (${ Id.VSub_At '@'))}) (C {<cube_check_return>})]
                    )
                  ]
                  spids: [5720 5728]
                )
              ]
              else_action: [(C {<cube_throw>} {(DQ <'TODO: Not implemented'>)})]
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_popd
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {<cube_command_exists>} {<popd>})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [(C {<popd>} {(DQ (${ Id.VSub_At '@'))}) (C {<cube_check_return>})]
                    )
                  ]
                  spids: [5781 5789]
                )
              ]
              else_action: [(C {<cube_throw>} {(DQ <'TODO: Not implemented'>)})]
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_has_role
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (command.ForEach
              iter_name: cube_has_role_name
              iter_words: [{(${ Id.VSub_Name cubevar_api_roles)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name cube_has_role_name))} 
                                  {<Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [5875 5896]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
        )
    )
    (command.ShFunction
      name: cube_file_contains
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<2>} {(DQ (${ Id.VSub_At '@'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cube_file_contains_grep_output)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (C {<grep>} {<-l>} {(DQ (${ Id.VSub_Number 2))} {(DQ (${ Id.VSub_Number 1))})
                        )
                      )
                    }
                  spids: [5965]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cube_file_contains_grep_results)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [5987]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name cube_file_contains_grep_results)} 
                          {<-eq>} {<2>} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [(C {<cube_throw>} {(DQ (${ Id.VSub_Name cube_file_contains_grep_output))})]
                  spids: [5993 6008]
                )
              ]
              else_action: [
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {(${ Id.VSub_Name cube_file_contains_grep_results)}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_stdin_contains
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cube_stdin_contains_output)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<grep>} {<-l>} {(DQ (${ Id.VSub_Number 1))} {<->})
                      )
                    }
                  spids: [6074]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cube_stdin_contains_result)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [6090]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name cube_stdin_contains_result)} 
                          {<-eq>} {<2>} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [(C {<cube_throw>} {(DQ (${ Id.VSub_Name cube_stdin_contains_output))})]
                  spids: [6094 6109]
                )
              ]
              else_action: [
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {(${ Id.VSub_Name cube_stdin_contains_result)}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_interface_ipv4_address
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Pipeline
                  children: [
                    (C {<ip>} {<-4>} {<-o>} {<address>} {<show>} {<dev>} {(${ Id.VSub_Number 1)})
                    (C {<head>} {<-1>})
                    (C {<awk>} {(SQ <'{print $4}'>)})
                    (C {<sed>} {(SQ <'s/\\/.*$//g'>)})
                  ]
                  negated: F
                )
                (C {<cube_check_return>})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_interface_ipv6_address
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Pipeline
                  children: [
                    (C {<ip>} {<-6>} {<-o>} {<address>} {<show>} {<dev>} {(${ Id.VSub_Number 1)})
                    (C {<head>} {<-1>})
                    (C {<awk>} {(SQ <'{print $4}'>)})
                    (C {<sed>} {(SQ <'s/\\/.*$//g'>)})
                  ]
                  negated: F
                )
                (C {<cube_check_return>})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_prompt
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: [(command.Sentence child:(C {<true>}) terminator:<Id.Op_Semi _>)]
              body: 
                (command.DoGroup
                  children: [
                    (C {<printf>} {(DQ (${ Id.VSub_Number 1) <' (y/N)? '>)})
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [(C {<read>} {<cube_prompt_response>}) (C {<cube_check_return>})]
                    )
                    (command.Case
                      to_match: {(DQ (${ Id.VSub_Name cube_prompt_response))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {<Id.Lit_LBracket '['> <Yy> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>}
                          ]
                          action: [
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [6384 6388 6396 -1]
                        )
                        (case_arm
                          pat_list: [
                            {(DQ )}
                            {<Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>}
                          ]
                          action: [
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [6399 6406 6414 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [(C {<echo>} {(DQ <'Please answer yes or no.'>)})]
                          spids: [6417 6418 6428 -1]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_hostname
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Number 1))} {<Id.Lit_Equals '='>} {(DQ )} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [(C {<uname>} {<-n>}) (C {<cube_check_return>})]
                    )
                  ]
                  spids: [6467 6485]
                )
              ]
              else_action: [
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (command.Pipeline
                      children: [(C {<uname>} {<-n>}) (C {<sed>} {(SQ <'s/\\..*$//g'>)})]
                      negated: F
                    )
                    (C {<cube_check_return>})
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_user_exists
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (command.Simple
              words: [{<id>} {<-u>} {(DQ (${ Id.VSub_Number 1))}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_QMark '$?')}
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_create_user
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [(C {<useradd>} {(DQ (${ Id.VSub_Number 1))}) (C {<cube_check_return>})]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Number 2))} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<usermod>} {<-s>} {(DQ (${ Id.VSub_Number 2))} {(DQ (${ Id.VSub_Number 1))})
                        (C {<cube_check_return>})
                      ]
                    )
                  ]
                  spids: [6647 6666]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_group_exists
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (C {<cube_file_contains>} {<'/etc/group'>} {(DQ <'^'> (${ Id.VSub_Number 1) <':'>)})
          ]
        )
    )
    (command.ShFunction
      name: cube_create_group
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [(C {<groupadd>} {(DQ (${ Id.VSub_Number 1))}) (C {<cube_check_return>})]
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_group_contains_user
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<2>} {(DQ (${ Id.VSub_At '@'))})
            (command.ForEach
              iter_name: cube_group_contains_user
              iter_words: [
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [
                          (C {<groups>} {(DQ (${ Id.VSub_Number 2))})
                          (C {<sed>} {(DQ <'s/'> (${ Id.VSub_Number 2) <' : //g'>)})
                        ]
                        negated: F
                      )
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} 
                                  {(DQ (${ Id.VSub_Name cube_group_contains_user))} {<Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ControlFlow
                              token: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [6881 6902]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
        )
    )
    (command.ShFunction
      name: cube_add_group_user
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<2>} {(DQ (${ Id.VSub_At '@'))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Number 3))} {<Id.Lit_Equals '='>} {(DQ )} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<usermod>} {<-a>} {<-G>} {(DQ (${ Id.VSub_Number 1))} {(DQ (${ Id.VSub_Number 2))})
                  ]
                  spids: [6973 6991]
                )
              ]
              else_action: [
                (C {<usermod>} {<-g>} {(DQ (${ Id.VSub_Number 1))} {(DQ (${ Id.VSub_Number 2))})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: cube_include
      body: 
        (BraceGroup
          children: [
            (C {<cube_check_numargs>} {<1>} {(DQ (${ Id.VSub_At '@'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cube_include_name)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Number 1>
                          suffix_op: 
                            (suffix_op.Unary
                              op_id: Id.VOp1_DPercent
                              arg_word: {<Id.Lit_Slash '/'>}
                            )
                        )
                      )
                    }
                  spids: [7079]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<-d>} 
                          {(DQ <'../'> (${ Id.VSub_Name cube_include_name))} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:cube_include_name_base)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C {<basename>} {(DQ (${ Id.VSub_Name cube_include_name))} {<.sh>})
                              )
                            }
                          spids: [7108]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {<-r>} 
                                  {
                                    (DQ <'../'> (${ Id.VSub_Name cube_include_name) <'/'> 
                                      (${ Id.VSub_Name cube_include_name_base) <.sh>
                                    )
                                  } {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (C {<cube_echo>} 
                              {(DQ <'Including '> (${ Id.VSub_Name cube_include_name) <' cube...'>)}
                            )
                            (C {<.>} 
                              {
                                (DQ <'../'> (${ Id.VSub_Name cube_include_name) <'/'> 
                                  (${ Id.VSub_Name cube_include_name_base) <.sh>
                                )
                              }
                            )
                          ]
                          spids: [7122 7143]
                        )
                      ]
                      else_action: [
                        (C {<cube_throw>} 
                          {
                            (DQ <'Cannot read '> (${ Id.VSub_Name cube_include_name) <'/'> 
                              (${ Id.VSub_Name cube_include_name_base) <.sh>
                            )
                          }
                        )
                      ]
                    )
                  ]
                  spids: [7089 7105]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<-r>} 
                          {(DQ <'../'> (${ Id.VSub_Name cube_include_name))} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<cube_echo>} 
                      {(DQ <'Including '> (${ Id.VSub_Name cube_include_name) <' cube...'>)}
                    )
                    (C {<.>} {(DQ <'../'> (${ Id.VSub_Name cube_include_name))})
                  ]
                  spids: [7193 7209]
                )
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<-r>} 
                          {(DQ (${ Id.VSub_Name cube_include_name) <.sh>)} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (C {<cube_echo>} 
                      {(DQ <'Including '> (${ Id.VSub_Name cube_include_name) <' cube...'>)}
                    )
                    (C {<.>} {(DQ <'../'> (${ Id.VSub_Name cube_include_name) <.sh>)})
                  ]
                  spids: [7233 7249]
                )
              ]
              else_action: [
                (C {<cube_throw>} 
                  {
                    (DQ <'Cube '> (${ Id.VSub_Name cube_include_name) 
                      <' not found (did you upload it with -i '> (${ Id.VSub_Name cube_include_name) <' ?).'>
                    )
                  }
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:cubevar_api_post_restart)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [7300]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:cubevar_api_roles)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [7305]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name POSIXCUBE_APIS_ONLY))} 
                  {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:p666_debug)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [7354]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:p666_quiet)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [7358]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:p666_skip_init)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [7362]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:p666_keep_exec)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [7366]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:p666_skip_host_errors)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [7370]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:p666_hosts)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [7374]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:p666_cubes)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [7379]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:p666_include_cubes)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [7384]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:p666_envar_scripts)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [7389]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:p666_envar_scripts_password)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [7394]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:p666_user)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name USER))}
                  spids: [7399]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:p666_cubedir)
                  op: assign_op.Equal
                  rhs: {(DQ <'~/posixcubes/'>)}
                  spids: [7407]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:p666_roles)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [7413]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:p666_options)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [7418]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:p666_specfile)
                  op: assign_op.Equal
                  rhs: {(DQ <'./cubespecs.ini'>)}
                  spids: [7423]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:p666_parallel)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [7429]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:p666_async_cubes)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [7433]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:p666_default_envars)
                  op: assign_op.Equal
                  rhs: {(DQ <'envars*sh envars*sh.enc'>)}
                  spids: [7437]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} 
                          {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<cube_shell>}))} {<-eq>} {(${ Id.VSub_Name POSIXCUBE_SHELL_BASH)} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:p666_parallel)
                          op: assign_op.Equal
                          rhs: {<64>}
                          spids: [7465]
                        )
                      ]
                    )
                  ]
                  spids: [7445 7462]
                )
              ]
            )
            (command.ShFunction
              name: p666_show_version
              body: 
                (BraceGroup
                  children: [
                    (C {<p666_printf>} 
                      {
                        (DQ <'posixcube.sh version '> (${ Id.VSub_Name POSIXCUBE_VERSION) 
                          <Id.Lit_Other '\\'> <n>
                        )
                      }
                    )
                  ]
                )
            )
            (command.ShFunction
              name: p666_printf
              body: 
                (BraceGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:p666_printf_str)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [7503]
                        )
                      ]
                    )
                    (C {<shift>})
                    (C {<printf>} 
                      {
                        (DQ <'['> (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<date>})) 
                          <'] '> (${ Id.VSub_Name p666_printf_str)
                        )
                      } {(DQ (${ Id.VSub_At '@'))}
                    )
                  ]
                )
            )
            (command.ShFunction
              name: p666_printf_error
              body: 
                (BraceGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:p666_printf_str)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [7541]
                        )
                      ]
                    )
                    (C {<shift>})
                    (command.Simple
                      words: [
                        {<printf>}
                        {
                          (DQ <Id.Lit_Other '\\'> <'n['> 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<date>})
                            ) <'] '> (${ Id.VSub_Name POSIXCUBE_COLOR_RED) <Error> (${ Id.VSub_Name POSIXCUBE_COLOR_RESET) <': '> 
                            (${ Id.VSub_Name p666_printf_str) <Id.Lit_Other '\\'> <n> <Id.Lit_Other '\\'> <n>
                          )
                        }
                        {(DQ (${ Id.VSub_At '@'))}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_GreatAnd '1>&'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<2>}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                )
            )
            (command.ShFunction
              name: p666_exit
              body: 
                (BraceGroup
                  children: [
                    (command.ForEach
                      iter_name: p666_envar_script
                      iter_words: [{(${ Id.VSub_Name p666_envar_scripts)}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:p666_envar_script_enc_matches)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (C {<expr>} {(${ Id.VSub_Name p666_envar_script)} 
                                            {<Id.Lit_Colon ':'>} {(SQ <'.*\\.dec$'>)}
                                          )
                                      )
                                    }
                                  spids: [7610]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} 
                                          {(${ Id.VSub_Name p666_envar_script_enc_matches)} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.Simple
                                      words: [{<rm>} {(DQ (${ Id.VSub_Name p666_envar_script))}]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_Great '2>'>
                                          loc: (redir_loc.Fd fd:2)
                                          arg: {<'/dev/null'>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  ]
                                  spids: [7626 7641]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name p666_keep_exec)} {<-eq>} {<0>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (command.Simple
                          words: [{<rm>} {<-f>} {(DQ (${ Id.VSub_Name p666_script))}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {(${ Id.VSub_Number 1)}
                    )
                  ]
                )
            )
            (command.ShFunction
              name: p666_install
              body: 
                (BraceGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:p666_func_result)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [7719]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {<-d>} {(DQ <'/etc/bash_completion.d/'>)} 
                                  {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:p666_autocomplete_file)
                                  op: assign_op.Equal
                                  rhs: {<'/etc/bash_completion.d/posixcube_completion.sh'>}
                                  spids: [7739]
                                )
                              ]
                            )
                            (command.Pipeline
                              children: [
                                (command.Simple
                                  words: [{<cat>}]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_DLess '<<'>
                                      loc: (redir_loc.Fd fd:0)
                                      arg: 
                                        (redir_param.MultiLine
                                          here_begin: {(SQ <HEREDOC>)}
                                          here_end_span_id: 7800
                                          stdin_parts: [
                                            <'_posixcube_complete() {\n'>
                                            <'  COMPREPLY=()\n'>
                                            <'  cur="${COMP_WORDS[COMP_CWORD]}"\n'>
                                            <'  prev="${COMP_WORDS[COMP_CWORD-1]}"\n'>
                                            <'  case "${prev}" in\n'>
                                            <'    \\-h)\n'>
                                            <'      p666_host_list=$({ \n'>
                                            <
'        for c in /etc/ssh_config /etc/ssh/ssh_config ~/.ssh/config\n'
                                            >
                                            <
'        do [ -r $c ] && sed -n -e \'s/^Host[[:space:]]//p\' -e \'s/^[[:space:]]*HostName[[:space:]]//p\' $c\n'
                                            >
                                            <'        done\n'>
                                            <
'        for k in /etc/ssh_known_hosts /etc/ssh/ssh_known_hosts ~/.ssh/known_hosts\n'
                                            >
                                            <
'        do [ -r $k ] && egrep -v \'^[#\\[]\' $k|cut -f 1 -d \' \'|sed -e \'s/[,:].*//g\'\n'
                                            >
                                            <'        done\n'>
                                            <
'        sed -n -e \'s/^[0-9][0-9\\.]*//p\' /etc/hosts; }|tr \' \' \'\\n\'|grep -v \'*\')\n'
                                            >
                                            <
'      COMPREPLY=( $(compgen -W "${p666_host_list}" -- $cur))\n'
                                            >
                                            <'      ;;\n'>
                                            <'    \\-z)\n'>
                                            <
'      p666_complete_specs="$(sed \'s/=.*//g\' cubespecs.ini)"\n'
                                            >
                                            <
'      COMPREPLY=( $(compgen -W "${p666_complete_specs}" -- $cur))\n'
                                            >
                                            <'      ;;\n'>
                                            <'    *)\n'>
                                            <'      ;;\n'>
                                            <'  esac\n'>
                                            <'  return 0\n'>
                                            <'}\n'>
                                            <
'complete -o default -F _posixcube_complete posixcube.sh\n'
                                            >
                                          ]
                                        )
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.Simple
                                  words: [{<tee>} {(${ Id.VSub_Name p666_autocomplete_file)}]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                              negated: F
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:p666_func_result)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '$?')}
                                  spids: [7803]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name p666_func_result)} 
                                          {<-eq>} {<0>} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (C {<chmod>} {<Id.Lit_Other '+'> <x>} 
                                      {(${ Id.VSub_Name p666_autocomplete_file)}
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_func_result)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_QMark '$?')}
                                          spids: [7835]
                                        )
                                      ]
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} 
                                                  {(${ Id.VSub_Name p666_func_result)} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                          action: [
                                            (C {<.>} {(${ Id.VSub_Name p666_autocomplete_file)})
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:p666_func_result)
                                                  op: assign_op.Equal
                                                  rhs: {($ Id.VSub_QMark '$?')}
                                                  spids: [7864]
                                                )
                                              ]
                                            )
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (command.Sentence
                                                      child: 
                                                        (C {<Id.Lit_LBracket '['>} 
                                                          {(${ Id.VSub_Name p666_func_result)} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>}
                                                        )
                                                      terminator: <Id.Op_Semi _>
                                                    )
                                                  ]
                                                  action: [
                                                    (C {<p666_printf>} 
                                                      {
                                                        (DQ 
                                                          <
'Installed Bash programmable completion script into '
                                                          > (${ Id.VSub_Name p666_autocomplete_file) <Id.Lit_Other '\\'> <n>
                                                        )
                                                      }
                                                    )
                                                  ]
                                                  spids: [7868 7883]
                                                )
                                              ]
                                              else_action: [
                                                (C {<p666_printf>} 
                                                  {
                                                    (DQ <'Could not execute '> 
                                                      (${ Id.VSub_Name p666_autocomplete_file) <Id.Lit_Other '\\'> <n>
                                                    )
                                                  }
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [7839 7854]
                                        )
                                      ]
                                      else_action: [
                                        (C {<p666_printf>} 
                                          {
                                            (DQ <'Could not chmod +x '> 
                                              (${ Id.VSub_Name p666_autocomplete_file) <Id.Lit_Other '\\'> <n>
                                            )
                                          }
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [7807 7822]
                                )
                              ]
                              else_action: [
                                (C {<p666_printf>} 
                                  {
                                    (DQ <'Could not create '> (${ Id.VSub_Name p666_autocomplete_file) 
                                      <Id.Lit_Other '\\'> <n>
                                    )
                                  }
                                )
                                (C {<p666_printf>} 
                                  {
                                    (DQ <'You may need to try with sudo. For example:'> 
                                      <Id.Lit_Other '\\'> <n>
                                    )
                                  }
                                )
                                (C {<p666_printf>} 
                                  {
                                    (DQ <'  sudo '> 
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: (C {<cube_current_script_abs_path>})
                                      ) <' -b && . '> (${ Id.VSub_Name p666_autocomplete_file) <Id.Lit_Other '\\'> <n>
                                    )
                                  }
                                )
                                (C {<p666_printf>} 
                                  {
                                    (DQ 
                                      <
'You only need to source the command the first time. Subsequent shells will automatically source it.'
                                      > <Id.Lit_Other '\\'> <n>
                                    )
                                  }
                                )
                              ]
                            )
                          ]
                          spids: [7723 7736]
                        )
                      ]
                      else_action: [
                        (C {<p666_printf>} 
                          {
                            (DQ 
                              <
'No directory /etc/bash_completion.d/ found, skipping Bash programmable completion installation.'
                              > <Id.Lit_Other '\\'> <n>
                            )
                          }
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {(${ Id.VSub_Name p666_func_result)}
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:p666_all_hosts)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [8012]
                )
              ]
            )
            (command.ShFunction
              name: p666_process_hostname
              body: 
                (BraceGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:p666_hostname_wildcard)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (C {<expr>} {(DQ (${ Id.VSub_Number 1))} {<Id.Lit_Colon ':'>} 
                                    {(SQ <'.*\\*.*'>)}
                                  )
                              )
                            }
                          spids: [8025]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name p666_hostname_wildcard)} 
                                  {<-ne>} {<0>} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} 
                                          {(DQ (${ Id.VSub_Name p666_all_hosts))} {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_all_hosts)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (BraceGroup
                                                        children: [
                                                          (command.ForEach
                                                            iter_name: c
                                                            iter_words: [
                                                              {<'/etc/ssh_config'>}
                                                              {<'/etc/ssh/ssh_config'>}
                                                              {
                                                                (word_part.TildeSub
                                                                  token: <Id.Lit_TildeLike '~'>
                                                                ) <'/.ssh/config'>
                                                              }
                                                            ]
                                                            do_arg_iter: F
                                                            body: 
                                                              (command.DoGroup
                                                                children: [
                                                                  (command.AndOr
                                                                    ops: [Id.Op_DAmp]
                                                                    children: [
                                                                      (C {<Id.Lit_LBracket '['>} {<-r>} 
                                                                        {($ Id.VSub_DollarName '$c')} {<Id.Lit_RBracket ']'>}
                                                                      )
                                                                      (C {<sed>} {<-n>} {<-e>} 
                                                                        {
                                                                          (SQ 
                                                                            <
's/^Host[[:space:]]//p'
                                                                            >
                                                                          )
                                                                        } {<-e>} {(SQ <'s/^[[:space:]]*HostName[[:space:]]//p'>)} {($ Id.VSub_DollarName '$c')}
                                                                      )
                                                                    ]
                                                                  )
                                                                ]
                                                              )
                                                          )
                                                          (command.ForEach
                                                            iter_name: k
                                                            iter_words: [
                                                              {<'/etc/ssh_known_hosts'>}
                                                              {<'/etc/ssh/ssh_known_hosts'>}
                                                              {
                                                                (word_part.TildeSub
                                                                  token: <Id.Lit_TildeLike '~'>
                                                                ) <'/.ssh/known_hosts'>
                                                              }
                                                            ]
                                                            do_arg_iter: F
                                                            body: 
                                                              (command.DoGroup
                                                                children: [
                                                                  (command.AndOr
                                                                    ops: [Id.Op_DAmp]
                                                                    children: [
                                                                      (C {<Id.Lit_LBracket '['>} {<-r>} 
                                                                        {($ Id.VSub_DollarName '$k')} {<Id.Lit_RBracket ']'>}
                                                                      )
                                                                      (command.Pipeline
                                                                        children: [
                                                                          (C {<egrep>} {<-v>} 
                                                                            {(SQ <'^[#\\[]'>)} {($ Id.VSub_DollarName '$k')}
                                                                          )
                                                                          (C {<cut>} {<-f>} {<1>} {<-d>} 
                                                                            {(SQ <' '>)}
                                                                          )
                                                                          (C {<sed>} {<-e>} 
                                                                            {(SQ <'s/[,:].*//g'>)}
                                                                          )
                                                                        ]
                                                                        negated: F
                                                                      )
                                                                    ]
                                                                  )
                                                                ]
                                                              )
                                                          )
                                                          (command.Sentence
                                                            child: 
                                                              (C {<sed>} {<-n>} {<-e>} 
                                                                {(SQ <'s/^[0-9][0-9\\.]*//p'>)} {<'/etc/hosts'>}
                                                              )
                                                            terminator: <Id.Op_Semi _>
                                                          )
                                                        ]
                                                      )
                                                      (C {<tr>} {(SQ <'\\n'>)} {(SQ <' '>)})
                                                      (C {<grep>} {<-v>} {(SQ <'*'>)})
                                                    ]
                                                    negated: F
                                                  )
                                              )
                                            }
                                          spids: [8088]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [8067 8085]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:p666_process_hostname_search)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<printf>} {(DQ (${ Id.VSub_Number 1))})
                                              (C {<sed>} {(SQ <'s/\\*/\\.\\*/g'>)})
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                  spids: [8242]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:p666_process_hostname_list)
                                  op: assign_op.Equal
                                  rhs: {(DQ )}
                                  spids: [8264]
                                )
                              ]
                            )
                            (command.ForEach
                              iter_name: p666_all_host
                              iter_words: [{(${ Id.VSub_Name p666_all_hosts)}]
                              do_arg_iter: F
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_all_host_match)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (C {<expr>} {(${ Id.VSub_Name p666_all_host)} 
                                                    {<Id.Lit_Colon ':'>} {(${ Id.VSub_Name p666_process_hostname_search)}
                                                  )
                                              )
                                            }
                                          spids: [8283]
                                        )
                                      ]
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} 
                                                  {(${ Id.VSub_Name p666_all_host_match)} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      name: p666_process_hostname_list
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (command_sub
                                                        left_token: <Id.Left_DollarParen '$('>
                                                        child: 
                                                          (C {<cube_append_str>} 
                                                            {
                                                              (DQ 
                                                                (${ Id.VSub_Name 
p666_process_hostname_list
                                                                )
                                                              )
                                                            } {(DQ (${ Id.VSub_Name p666_all_host))}
                                                          )
                                                      )
                                                    }
                                                  spids: [8317]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [8299 8314]
                                        )
                                      ]
                                    )
                                  ]
                                )
                            )
                            (C {<echo>} {(DQ (${ Id.VSub_Name p666_process_hostname_list))})
                          ]
                          spids: [8043 8058]
                        )
                      ]
                      else_action: [(C {<echo>} {(DQ (${ Id.VSub_Number 1))})]
                    )
                  ]
                )
            )
            (command.ShFunction
              name: p666_process_options
              body: 
                (BraceGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:OPTIND)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [8381]
                        )
                      ]
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: [
                        (command.Sentence
                          child: 
                            (C {<getopts>} {(DQ <'?vdqbskyah:u:c:e:p:w:r:o:z:i:'>)} {<p666_opt>} 
                              {(DQ (${ Id.VSub_At '@'))}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Case
                              to_match: {(DQ ($ Id.VSub_DollarName '$p666_opt'))}
                              arms: [
                                (case_arm
                                  pat_list: [
                                    {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'>)}
                                  ]
                                  action: [(C {<p666_show_usage>})]
                                  spids: [8419 8420 8426 -1]
                                )
                                (case_arm
                                  pat_list: [{<v>}]
                                  action: [
                                    (C {<p666_show_version>})
                                    (command.ControlFlow
                                      token: <Id.ControlFlow_Exit exit>
                                      arg_word: {<1>}
                                    )
                                  ]
                                  spids: [8429 8430 8441 -1]
                                )
                                (case_arm
                                  pat_list: [{<d>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_debug)
                                          op: assign_op.Equal
                                          rhs: {<1>}
                                          spids: [8448]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [8444 8445 8452 -1]
                                )
                                (case_arm
                                  pat_list: [{<q>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_quiet)
                                          op: assign_op.Equal
                                          rhs: {<1>}
                                          spids: [8459]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [8455 8456 8463 -1]
                                )
                                (case_arm
                                  pat_list: [{<s>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_skip_init)
                                          op: assign_op.Equal
                                          rhs: {<1>}
                                          spids: [8470]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [8466 8467 8474 -1]
                                )
                                (case_arm
                                  pat_list: [{<k>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_keep_exec)
                                          op: assign_op.Equal
                                          rhs: {<1>}
                                          spids: [8481]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [8477 8478 8485 -1]
                                )
                                (case_arm
                                  pat_list: [{<y>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_skip_host_errors)
                                          op: assign_op.Equal
                                          rhs: {<1>}
                                          spids: [8492]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [8488 8489 8496 -1]
                                )
                                (case_arm
                                  pat_list: [{<a>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_async_cubes)
                                          op: assign_op.Equal
                                          rhs: {<1>}
                                          spids: [8503]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [8499 8500 8507 -1]
                                )
                                (case_arm
                                  pat_list: [{<b>}]
                                  action: [(C {<p666_install>})]
                                  spids: [8510 8511 8517 -1]
                                )
                                (case_arm
                                  pat_list: [{<h>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_processed_hostname)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (C {<p666_process_hostname>} 
                                                    {(DQ (${ Id.VSub_Name OPTARG))}
                                                  )
                                              )
                                            }
                                          spids: [8524]
                                        )
                                      ]
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} 
                                                  {(DQ (${ Id.VSub_Name p666_processed_hostname))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:p666_hosts)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (command_sub
                                                        left_token: <Id.Left_DollarParen '$('>
                                                        child: 
                                                          (C {<cube_append_str>} 
                                                            {(DQ (${ Id.VSub_Name p666_hosts))} {(DQ (${ Id.VSub_Name p666_processed_hostname))}
                                                          )
                                                      )
                                                    }
                                                  spids: [8558]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [8536 8555]
                                        )
                                      ]
                                      else_action: [
                                        (C {<p666_printf_error>} 
                                          {
                                            (DQ <'No known hosts match '> (${ Id.VSub_Name OPTARG) 
                                              <' from '> (${ Id.VSub_Name p666_all_hosts)
                                            )
                                          }
                                        )
                                        (command.ControlFlow
                                          token: <Id.ControlFlow_Exit exit>
                                          arg_word: {<1>}
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [8520 8521 8601 -1]
                                )
                                (case_arm
                                  pat_list: [{<c>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_cubes)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (C {<cube_append_str>} 
                                                    {(DQ (${ Id.VSub_Name p666_cubes))} {(DQ (${ Id.VSub_Name OPTARG))}
                                                  )
                                              )
                                            }
                                          spids: [8608]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [8604 8605 8626 -1]
                                )
                                (case_arm
                                  pat_list: [{<i>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_include_cubes)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (C {<cube_append_str>} 
                                                    {(DQ (${ Id.VSub_Name p666_include_cubes))} {(DQ (${ Id.VSub_Name OPTARG))}
                                                  )
                                              )
                                            }
                                          spids: [8633]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [8629 8630 8651 -1]
                                )
                                (case_arm
                                  pat_list: [{<e>}]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-r>} 
                                                  {(DQ (${ Id.VSub_Name OPTARG))} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                          action: [
                                            (C {<p666_printf_error>} 
                                              {
                                                (DQ <'Could not find '> (${ Id.VSub_Name OPTARG) 
                                                  <' ENVAR script.'>
                                                )
                                              }
                                            )
                                            (command.ControlFlow
                                              token: <Id.ControlFlow_Exit exit>
                                              arg_word: {<1>}
                                            )
                                          ]
                                          spids: [8658 8675]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_envar_scripts)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (C {<cube_append_str>} 
                                                    {(DQ (${ Id.VSub_Name p666_envar_scripts))} {(DQ (${ Id.VSub_Name OPTARG))}
                                                  )
                                              )
                                            }
                                          spids: [8697]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [8654 8655 8715 -1]
                                )
                                (case_arm
                                  pat_list: [{<u>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_user)
                                          op: assign_op.Equal
                                          rhs: {(DQ (${ Id.VSub_Name OPTARG))}
                                          spids: [8722]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [8718 8719 8730 -1]
                                )
                                (case_arm
                                  pat_list: [{<p>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_envar_scripts_password)
                                          op: assign_op.Equal
                                          rhs: {(DQ (${ Id.VSub_Name OPTARG))}
                                          spids: [8737]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [8733 8734 8745 -1]
                                )
                                (case_arm
                                  pat_list: [{<w>}]
                                  action: [
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  name: p666_envar_scripts_password
                                                )
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ 
                                                    (command_sub
                                                      left_token: <Id.Left_DollarParen '$('>
                                                      child: (C {<cat>} {(${ Id.VSub_Name OPTARG)})
                                                    )
                                                  )
                                                }
                                              spids: [8752]
                                            )
                                          ]
                                        )
                                        (C {<cube_check_return>})
                                      ]
                                    )
                                  ]
                                  spids: [8748 8749 8768 -1]
                                )
                                (case_arm
                                  pat_list: [{<r>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_roles)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (C {<cube_append_str>} 
                                                    {(DQ (${ Id.VSub_Name p666_roles))} {(DQ (${ Id.VSub_Name OPTARG))}
                                                  )
                                              )
                                            }
                                          spids: [8775]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [8771 8772 8793 -1]
                                )
                                (case_arm
                                  pat_list: [{<o>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_option_name)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (C {<echo>} {(DQ (${ Id.VSub_Name OPTARG))})
                                                      (C {<sed>} {(SQ <'s/=.*//'>)})
                                                    ]
                                                    negated: F
                                                  )
                                              )
                                            }
                                          spids: [8804]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_option_value)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (C {<echo>} {(DQ (${ Id.VSub_Name OPTARG))})
                                                      (C {<sed>} 
                                                        {
                                                          (DQ <'s/^'> 
                                                            (${ Id.VSub_Name p666_option_name) <'=//'>
                                                          )
                                                        }
                                                      )
                                                    ]
                                                    negated: F
                                                  )
                                              )
                                            }
                                          spids: [8824]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_option_value)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (C {<p666_process_hostname>} 
                                                    {(DQ (${ Id.VSub_Name p666_option_value))}
                                                  )
                                              )
                                            }
                                          spids: [8848]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_options)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (C {<cube_append_str>} 
                                                    {(DQ (${ Id.VSub_Name p666_options))} 
                                                    {
                                                      (DQ (${ Id.VSub_Name p666_option_name) <'='> 
                                                        (word_part.EscapedLiteral
                                                          token: <Id.Lit_EscapedChar '\\"'>
                                                        ) (${ Id.VSub_Name p666_option_value) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                                                      )
                                                    } {(DQ (${ Id.VSub_Name POSIXCUBE_NEWLINE))}
                                                  )
                                              )
                                            }
                                          spids: [8860]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [8796 8797 8890 -1]
                                )
                                (case_arm
                                  pat_list: [{<z>}]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} {<-r>} 
                                                  {(DQ (${ Id.VSub_Name p666_specfile))} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:p666_foundspec)
                                                  op: assign_op.Equal
                                                  rhs: {<0>}
                                                  spids: [8915]
                                                )
                                              ]
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:p666_foundspec_names)
                                                  op: assign_op.Equal
                                                  rhs: {(DQ )}
                                                  spids: [8921]
                                                )
                                              ]
                                            )
                                            (command.WhileUntil
                                              keyword: <Id.KW_While while>
                                              cond: [
                                                (command.Sentence
                                                  child: (C {<read>} {<p666_specfile_line>})
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                              body: 
                                                (command.DoGroup
                                                  children: [
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: 
                                                            (sh_lhs_expr.Name
                                                              name: p666_specfile_line_name
                                                            )
                                                          op: assign_op.Equal
                                                          rhs: 
                                                            {
                                                              (command_sub
                                                                left_token: 
                                                                  <Id.Left_DollarParen '$('>
                                                                child: 
                                                                  (command.Pipeline
                                                                    children: [
                                                                      (C {<echo>} 
                                                                        {
                                                                          (DQ 
                                                                            (${ Id.VSub_Name 
p666_specfile_line
                                                                            )
                                                                          )
                                                                        }
                                                                      )
                                                                      (C {<sed>} {(SQ <'s/=.*//'>)})
                                                                    ]
                                                                    negated: F
                                                                  )
                                                              )
                                                            }
                                                          spids: [8938]
                                                        )
                                                      ]
                                                    )
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: 
                                                            (sh_lhs_expr.Name
                                                              name: p666_foundspec_names
                                                            )
                                                          op: assign_op.Equal
                                                          rhs: 
                                                            {
                                                              (command_sub
                                                                left_token: 
                                                                  <Id.Left_DollarParen '$('>
                                                                child: 
                                                                  (C {<cube_append_str>} 
                                                                    {
                                                                      (DQ 
                                                                        (${ Id.VSub_Name 
p666_foundspec_names
                                                                        )
                                                                      )
                                                                    } {(DQ (${ Id.VSub_Name p666_specfile_line_name))}
                                                                  )
                                                              )
                                                            }
                                                          spids: [8958]
                                                        )
                                                      ]
                                                    )
                                                    (command.If
                                                      arms: [
                                                        (if_arm
                                                          cond: [
                                                            (command.Sentence
                                                              child: 
                                                                (C {<Id.Lit_LBracket '['>} 
                                                                  {
                                                                    (DQ 
                                                                      (${ Id.VSub_Name 
p666_specfile_line_name
                                                                      )
                                                                    )
                                                                  } {<Id.Lit_Equals '='>} {(DQ (${ Id.VSub_Name OPTARG))} {<Id.Lit_RBracket ']'>}
                                                                )
                                                              terminator: <Id.Op_Semi _>
                                                            )
                                                          ]
                                                          action: [
                                                            (command.ShAssignment
                                                              pairs: [
                                                                (assign_pair
                                                                  lhs: 
                                                                    (sh_lhs_expr.Name
                                                                      name: p666_foundspec
                                                                    )
                                                                  op: assign_op.Equal
                                                                  rhs: {<1>}
                                                                  spids: [9000]
                                                                )
                                                              ]
                                                            )
                                                            (command.ShAssignment
                                                              pairs: [
                                                                (assign_pair
                                                                  lhs: 
                                                                    (sh_lhs_expr.Name
                                                                      name: p666_specfile_line_value
                                                                    )
                                                                  op: assign_op.Equal
                                                                  rhs: 
                                                                    {
                                                                      (command_sub
                                                                        left_token: 
                                                                          <Id.Left_DollarParen '$('>
                                                                        child: 
                                                                          (command.Pipeline
                                                                            children: [
                                                                              (C {<echo>} 
                                                                                {
                                                                                  (DQ 
                                                                                    (${ Id.VSub_Name 
p666_specfile_line
                                                                                    )
                                                                                  )
                                                                                }
                                                                              )
                                                                              (C {<sed>} 
                                                                                {
                                                                                  (DQ <'s/^'> 
                                                                                    (${ Id.VSub_Name 
p666_specfile_line_name
                                                                                    ) <'=//'>
                                                                                  )
                                                                                }
                                                                              )
                                                                            ]
                                                                            negated: F
                                                                          )
                                                                      )
                                                                    }
                                                                  spids: [9004]
                                                                )
                                                              ]
                                                            )
                                                            (C {<p666_process_options>} 
                                                              {
                                                                (${ Id.VSub_Name 
p666_specfile_line_value
                                                                )
                                                              }
                                                            )
                                                            (command.ControlFlow
                                                              token: <Id.ControlFlow_Break break>
                                                            )
                                                          ]
                                                          spids: [8976 8997]
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                )
                                              redirects: [
                                                (redir
                                                  op: <Id.Redir_Less '<'>
                                                  loc: (redir_loc.Fd fd:0)
                                                  arg: {(DQ (${ Id.VSub_Name p666_specfile))}
                                                )
                                              ]
                                            )
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (command.Sentence
                                                      child: 
                                                        (C {<Id.Lit_LBracket '['>} 
                                                          {(${ Id.VSub_Name p666_foundspec)} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>}
                                                        )
                                                      terminator: <Id.Op_Semi _>
                                                    )
                                                  ]
                                                  action: [
                                                    (C {<p666_printf_error>} 
                                                      {
                                                        (DQ <'Could not find '> 
                                                          (${ Id.VSub_Name OPTARG) <' in '> (${ Id.VSub_Name p666_specfile) <' file with specs '> (${ Id.VSub_Name p666_foundspec_names)
                                                        )
                                                      }
                                                    )
                                                    (command.ControlFlow
                                                      token: <Id.ControlFlow_Exit exit>
                                                      arg_word: {<1>}
                                                    )
                                                  ]
                                                  spids: [9054 9069]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [8897 8912]
                                        )
                                      ]
                                      else_action: [
                                        (C {<p666_printf_error>} 
                                          {
                                            (DQ <'Could not find '> (${ Id.VSub_Name p666_specfile) 
                                              <' file'>
                                            )
                                          }
                                        )
                                        (command.ControlFlow
                                          token: <Id.ControlFlow_Exit exit>
                                          arg_word: {<1>}
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [8893 8894 9120 -1]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                )
            )
            (C {<p666_process_options>} {(DQ (${ Id.VSub_At '@'))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (C {<Id.Lit_LBracket '['>} 
                              {(DQ (${ Id.VSub_Name p666_envar_scripts_password))} {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                            )
                            (C {<Id.Lit_LBracket '['>} {<-r>} 
                              {(word_part.TildeSub token:<Id.Lit_TildeLike '~'>) <'/.posixcube.pwd'>} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:p666_envar_scripts_password)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ 
                                    (command_sub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (C {<cat>} 
                                          {(word_part.TildeSub token:<Id.Lit_TildeLike '~'>) 
                                            <'/.posixcube.pwd'>
                                          }
                                        )
                                    )
                                  )
                                }
                              spids: [9180]
                            )
                          ]
                        )
                        (C {<cube_check_return>})
                      ]
                    )
                  ]
                  spids: [9148 9177]
                )
              ]
            )
            (C {<shift>} 
              {
                (word_part.ArithSub
                  anode: 
                    (arith_expr.Binary
                      op_id: Id.Arith_Minus
                      left: {(${ Id.VSub_Name OPTIND)}
                      right: {<Id.Lit_Digits 1>}
                    )
                )
              }
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_Equals '='>} 
                  {(DQ <-->)} {<Id.Lit_RBracket ']'>}
                )
                (C {<shift>})
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name p666_envar_scripts))} 
                          {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:p666_envar_scripts)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (command.Simple
                                          words: [{<ls>} {<-1>} {(${ Id.VSub_Name p666_default_envars)}]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_Great '2>'>
                                              loc: (redir_loc.Fd fd:2)
                                              arg: {<'/dev/null'>}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                        (C {<paste>} {<-sd>} {(SQ <' '>)} {<->})
                                      ]
                                      negated: F
                                    )
                                )
                              )
                            }
                          spids: [9254]
                        )
                      ]
                    )
                  ]
                  spids: [9233 9251]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name p666_envar_scripts))} 
                          {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name p666_debug)} {<-eq>} {<1>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (C {<p666_printf>} 
                          {
                            (DQ <'Using ENVAR files: '> (${ Id.VSub_Name p666_envar_scripts) 
                              <Id.Lit_Other '\\'> <n>
                            )
                          }
                        )
                      ]
                    )
                  ]
                  spids: [9287 9306]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:p666_commands)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_At '@'))}
                  spids: [9340]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name p666_hosts))} 
                          {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name p666_commands))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.Case
                              to_match: {(DQ (${ Id.VSub_Number 1))}
                              arms: [
                                (case_arm
                                  pat_list: [{<edit>} {<show>} {<source>}]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} 
                                                  {(DQ (${ Id.VSub_Name p666_envar_scripts))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                          action: [
                                            (command.ForEach
                                              iter_name: p666_envar_script
                                              iter_words: [{(${ Id.VSub_Name p666_envar_scripts)}]
                                              do_arg_iter: F
                                              body: 
                                                (command.DoGroup
                                                  children: [
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: 
                                                            (sh_lhs_expr.Name
                                                              name: p666_envar_scripts_enc
                                                            )
                                                          op: assign_op.Equal
                                                          rhs: 
                                                            {
                                                              (command_sub
                                                                left_token: 
                                                                  <Id.Left_DollarParen '$('>
                                                                child: 
                                                                  (C {<expr>} 
                                                                    {
                                                                      (${ Id.VSub_Name 
p666_envar_script
                                                                      )
                                                                    } {<Id.Lit_Colon ':'>} {(SQ <'.*enc$'>)}
                                                                  )
                                                              )
                                                            }
                                                          spids: [9451]
                                                        )
                                                      ]
                                                    )
                                                    (command.If
                                                      arms: [
                                                        (if_arm
                                                          cond: [
                                                            (command.Sentence
                                                              child: 
                                                                (C {<Id.Lit_LBracket '['>} 
                                                                  {
                                                                    (${ Id.VSub_Name 
p666_envar_scripts_enc
                                                                    )
                                                                  } {<-ne>} {<0>} {<Id.Lit_RBracket ']'>}
                                                                )
                                                              terminator: <Id.Op_Semi _>
                                                            )
                                                          ]
                                                          action: [
                                                            (command.If
                                                              arms: [
                                                                (if_arm
                                                                  cond: [
                                                                    (command.Sentence
                                                                      child: 
                                                                        (C {<cube_command_exists>} 
                                                                          {<gpg>}
                                                                        )
                                                                      terminator: <Id.Op_Semi _>
                                                                    )
                                                                  ]
                                                                  action: [
                                                                    (command.ShAssignment
                                                                      pairs: [
                                                                        (assign_pair
                                                                          lhs: 
                                                                            (sh_lhs_expr.Name
                                                                              name: 
p666_envar_script_new
                                                                            )
                                                                          op: assign_op.Equal
                                                                          rhs: 
                                                                            {
                                                                              (command_sub
                                                                                left_token: 
                                                                                  <
Id.Left_DollarParen '$('
                                                                                  >
                                                                                child: 
                                                                                  (command.Pipeline
                                                                                    children: [
                                                                                      (C {<echo>} 
                                                                                        {
                                                                                          (DQ 
                                                                                            (${ 
Id.VSub_Name p666_envar_script
                                                                                            )
                                                                                          )
                                                                                        }
                                                                                      )
                                                                                      (C {<sed>} 
                                                                                        {
                                                                                          (SQ 
                                                                                            <
's/enc$/dec/g'
                                                                                            >
                                                                                          )
                                                                                        }
                                                                                      )
                                                                                    ]
                                                                                    negated: F
                                                                                  )
                                                                              )
                                                                            }
                                                                          spids: [9496]
                                                                        )
                                                                      ]
                                                                    )
                                                                    (command.If
                                                                      arms: [
                                                                        (if_arm
                                                                          cond: [
                                                                            (command.Sentence
                                                                              child: 
                                                                                (C 
                                                                                  {
                                                                                    <
Id.Lit_LBracket '['
                                                                                    >
                                                                                  } {(DQ (${ Id.VSub_Name p666_envar_scripts_password))} {<Id.Lit_Equals '='>} {(DQ )} 
                                                                                  {
                                                                                    <
Id.Lit_RBracket ']'
                                                                                    >
                                                                                  }
                                                                                )
                                                                              terminator: 
                                                                                <Id.Op_Semi _>
                                                                            )
                                                                          ]
                                                                          action: [
                                                                            (C {<p666_printf>} 
                                                                              {
                                                                                (DQ 
                                                                                  <
'Enter the password for '
                                                                                  > (${ Id.VSub_Name p666_envar_script) <':'> <Id.Lit_Other '\\'> <n>
                                                                                )
                                                                              }
                                                                            )
                                                                            (command.AndOr
                                                                              ops: [Id.Op_DPipe]
                                                                              children: [
                                                                                (C {<gpg>} {<--output>} 
                                                                                  {
                                                                                    (DQ 
                                                                                      (${ 
Id.VSub_Name p666_envar_script_new
                                                                                      )
                                                                                    )
                                                                                  } {<--yes>} {<--decrypt>} {(DQ (${ Id.VSub_Name p666_envar_script))}
                                                                                )
                                                                                (C 
                                                                                  {
                                                                                    <
cube_check_return
                                                                                    >
                                                                                  }
                                                                                )
                                                                              ]
                                                                            )
                                                                          ]
                                                                          spids: [9518 9536]
                                                                        )
                                                                      ]
                                                                      else_action: [
                                                                        (command.AndOr
                                                                          ops: [Id.Op_DAmp]
                                                                          children: [
                                                                            (C {<Id.Lit_LBracket '['>} 
                                                                              {
                                                                                (${ Id.VSub_Name 
p666_debug
                                                                                )
                                                                              } {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                                                            )
                                                                            (C {<p666_printf>} 
                                                                              {
                                                                                (DQ <'Decrypting '> 
                                                                                  (${ Id.VSub_Name 
p666_envar_script
                                                                                  ) <' ...'> <Id.Lit_Other '\\'> <n>
                                                                                )
                                                                              }
                                                                            )
                                                                          ]
                                                                        )
                                                                        (command.AndOr
                                                                          ops: [Id.Op_DPipe]
                                                                          children: [
                                                                            (command.ShAssignment
                                                                              pairs: [
                                                                                (assign_pair
                                                                                  lhs: 
                                                                                    (sh_lhs_expr.Name
                                                                                      name: 
p666_gpg_output
                                                                                    )
                                                                                  op: 
assign_op.Equal
                                                                                  rhs: 
                                                                                    {
                                                                                      (DQ 
                                                                                        (command_sub
                                                                                          left_token: 
                                                                                            <
Id.Left_DollarParen '$('
                                                                                            >
                                                                                          child: 
                                                                                            (command.Pipeline
                                                                                              children: [
                                                                                                (C 
                                                                                                  {
                                                                                                    <
echo
                                                                                                    >
                                                                                                  } {(DQ (${ Id.VSub_Name p666_envar_scripts_password))}
                                                                                                )
                                                                                                (command.Simple
                                                                                                  words: [
                                                                                                    {
                                                                                                      <
gpg
                                                                                                      >
                                                                                                    }
                                                                                                    {
                                                                                                      <
--passphrase-fd
                                                                                                      >
                                                                                                    }
                                                                                                    {
                                                                                                      <
0
                                                                                                      >
                                                                                                    }
                                                                                                    {
                                                                                                      <
--batch
                                                                                                      >
                                                                                                    }
                                                                                                    {
                                                                                                      <
--yes
                                                                                                      >
                                                                                                    }
                                                                                                    {
                                                                                                      <
--output
                                                                                                      >
                                                                                                    }
                                                                                                    {
                                                                                                      (DQ 
                                                                                                        (${ 
Id.VSub_Name p666_envar_script_new
                                                                                                        )
                                                                                                      )
                                                                                                    }
                                                                                                    {
                                                                                                      <
--decrypt
                                                                                                      >
                                                                                                    }
                                                                                                    {
                                                                                                      (DQ 
                                                                                                        (${ 
Id.VSub_Name p666_envar_script
                                                                                                        )
                                                                                                      )
                                                                                                    }
                                                                                                  ]
                                                                                                  redirects: [
                                                                                                    (redir
                                                                                                      op: 
                                                                                                        <
Id.Redir_GreatAnd '2>&'
                                                                                                        >
                                                                                                      loc: 
                                                                                                        (redir_loc.Fd
                                                                                                          fd: 
2
                                                                                                        )
                                                                                                      arg: 
                                                                                                        {
                                                                                                          <
1
                                                                                                          >
                                                                                                        }
                                                                                                    )
                                                                                                  ]
                                                                                                  do_fork: 
T
                                                                                                )
                                                                                              ]
                                                                                              negated: 
F
                                                                                            )
                                                                                        )
                                                                                      )
                                                                                    }
                                                                                  spids: [9607]
                                                                                )
                                                                              ]
                                                                            )
                                                                            (C {<cube_check_return>} 
                                                                              {
                                                                                (DQ 
                                                                                  (${ Id.VSub_Name 
p666_gpg_output
                                                                                  )
                                                                                )
                                                                              }
                                                                            )
                                                                          ]
                                                                        )
                                                                      ]
                                                                    )
                                                                    (command.Case
                                                                      to_match: 
                                                                        {(DQ (${ Id.VSub_Number 1))}
                                                                      arms: [
                                                                        (case_arm
                                                                          pat_list: [{<show>}]
                                                                          action: [
                                                                            (C {<p666_printf>} 
                                                                              {
                                                                                (DQ <'Contents of '> 
                                                                                  (${ Id.VSub_Name 
p666_envar_script
                                                                                  ) <':'> <Id.Lit_Other '\\'> <n>
                                                                                )
                                                                              }
                                                                            )
                                                                            (C {<cat>} 
                                                                              {
                                                                                (DQ 
                                                                                  (${ Id.VSub_Name 
p666_envar_script_new
                                                                                  )
                                                                                )
                                                                              }
                                                                            )
                                                                          ]
                                                                          spids: [9678 9679 9704 -1]
                                                                        )
                                                                        (case_arm
                                                                          pat_list: [{<source>}]
                                                                          action: [
                                                                            (C {<chmod>} 
                                                                              {<u> <Id.Lit_Other '+'> 
                                                                                <x>
                                                                              } {(DQ (${ Id.VSub_Name p666_envar_script_new))}
                                                                            )
                                                                            (C {<.>} 
                                                                              {
                                                                                (DQ 
                                                                                  (command_sub
                                                                                    left_token: 
                                                                                      <
Id.Left_DollarParen '$('
                                                                                      >
                                                                                    child: 
                                                                                      (C 
                                                                                        {
                                                                                          <
cube_readlink
                                                                                          >
                                                                                        } {(DQ (${ Id.VSub_Name p666_envar_script_new))}
                                                                                      )
                                                                                  )
                                                                                )
                                                                              }
                                                                            )
                                                                            (command.AndOr
                                                                              ops: [Id.Op_DAmp]
                                                                              children: [
                                                                                (C 
                                                                                  {
                                                                                    <
Id.Lit_LBracket '['
                                                                                    >
                                                                                  } {(${ Id.VSub_Name p666_debug)} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                                                                )
                                                                                (C {<p666_printf>} 
                                                                                  {
                                                                                    (DQ <'Sourced '> 
                                                                                      (${ 
Id.VSub_Name p666_envar_script
                                                                                      ) <...> <Id.Lit_Other '\\'> <n>
                                                                                    )
                                                                                  }
                                                                                )
                                                                              ]
                                                                            )
                                                                          ]
                                                                          spids: [9707 9708 9766 -1]
                                                                        )
                                                                        (case_arm
                                                                          pat_list: [{<edit>}]
                                                                          action: [
                                                                            (command.AndOr
                                                                              ops: [Id.Op_DPipe]
                                                                              children: [
                                                                                (C 
                                                                                  {
                                                                                    (DQ 
                                                                                      (braced_var_sub
                                                                                        token: 
                                                                                          <
Id.VSub_Name EDITOR
                                                                                          >
                                                                                        suffix_op: 
                                                                                          (suffix_op.Unary
                                                                                            op_id: 
Id.VTest_ColonHyphen
                                                                                            arg_word: 
                                                                                              {<vi>}
                                                                                          )
                                                                                      )
                                                                                    )
                                                                                  } {(DQ (${ Id.VSub_Name p666_envar_script_new))}
                                                                                )
                                                                                (C 
                                                                                  {
                                                                                    <
cube_check_return
                                                                                    >
                                                                                  }
                                                                                )
                                                                              ]
                                                                            )
                                                                            (command.If
                                                                              arms: [
                                                                                (if_arm
                                                                                  cond: [
                                                                                    (command.Sentence
                                                                                      child: 
                                                                                        (C 
                                                                                          {
                                                                                            <
Id.Lit_LBracket '['
                                                                                            >
                                                                                          } {(DQ (${ Id.VSub_Name p666_envar_scripts_password))} {<Id.Lit_Equals '='>} {(DQ )} 
                                                                                          {
                                                                                            <
Id.Lit_RBracket ']'
                                                                                            >
                                                                                          }
                                                                                        )
                                                                                      terminator: 
                                                                                        <Id.Op_Semi 
_
                                                                                        >
                                                                                    )
                                                                                  ]
                                                                                  action: [
                                                                                    (C {<p666_printf>} 
                                                                                      {
                                                                                        (DQ 
                                                                                          <
'Enter the password to re-encrypt '
                                                                                          > (${ Id.VSub_Name p666_envar_script) <':'> <Id.Lit_Other '\\'> <n>
                                                                                        )
                                                                                      }
                                                                                    )
                                                                                    (command.AndOr
                                                                                      ops: [
Id.Op_DPipe
                                                                                      ]
                                                                                      children: [
                                                                                        (C {<gpg>} 
                                                                                          {<--yes>} {<--s2k-mode>} {<3>} {<--s2k-count>} {<65536>} {<--force-mdc>} {<--cipher-algo>} {<AES256>} 
                                                                                          {
                                                                                            <
--s2k-digest-algo
                                                                                            >
                                                                                          } {<SHA512>} {<-o>} {(DQ (${ Id.VSub_Name p666_envar_script))} {<--symmetric>} 
                                                                                          {
                                                                                            (DQ 
                                                                                              (${ 
Id.VSub_Name p666_envar_script_new
                                                                                              )
                                                                                            )
                                                                                          }
                                                                                        )
                                                                                        (C 
                                                                                          {
                                                                                            <
cube_check_return
                                                                                            >
                                                                                          }
                                                                                        )
                                                                                      ]
                                                                                    )
                                                                                  ]
                                                                                  spids: [9794 9812]
                                                                                )
                                                                              ]
                                                                              else_action: [
                                                                                (command.AndOr
                                                                                  ops: [Id.Op_DAmp]
                                                                                  children: [
                                                                                    (C 
                                                                                      {
                                                                                        <
Id.Lit_LBracket '['
                                                                                        >
                                                                                      } {(${ Id.VSub_Name p666_debug)} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                                                                    )
                                                                                    (C {<p666_printf>} 
                                                                                      {
                                                                                        (DQ 
                                                                                          <
'Re-encrypting '
                                                                                          > (${ Id.VSub_Name p666_envar_script) <' ...'> <Id.Lit_Other '\\'> <n>
                                                                                        )
                                                                                      }
                                                                                    )
                                                                                  ]
                                                                                )
                                                                                (command.AndOr
                                                                                  ops: [Id.Op_DPipe]
                                                                                  children: [
                                                                                    (command.ShAssignment
                                                                                      pairs: [
                                                                                        (assign_pair
                                                                                          lhs: 
                                                                                            (sh_lhs_expr.Name
                                                                                              name: 
p666_gpg_output
                                                                                            )
                                                                                          op: 
assign_op.Equal
                                                                                          rhs: 
                                                                                            {
                                                                                              (DQ 
                                                                                                (command_sub
                                                                                                  left_token: 
                                                                                                    <
Id.Left_DollarParen '$('
                                                                                                    >
                                                                                                  child: 
                                                                                                    (command.Pipeline
                                                                                                      children: [
                                                                                                        (C 
                                                                                                          {
                                                                                                            <
echo
                                                                                                            >
                                                                                                          } {(DQ (${ Id.VSub_Name p666_envar_scripts_password))}
                                                                                                        )
                                                                                                        (command.Simple
                                                                                                          words: [
                                                                                                            {
                                                                                                              <
gpg
                                                                                                              >
                                                                                                            }
                                                                                                            {
                                                                                                              <
--batch
                                                                                                              >
                                                                                                            }
                                                                                                            {
                                                                                                              <
--passphrase-fd
                                                                                                              >
                                                                                                            }
                                                                                                            {
                                                                                                              <
0
                                                                                                              >
                                                                                                            }
                                                                                                            {
                                                                                                              <
--yes
                                                                                                              >
                                                                                                            }
                                                                                                            {
                                                                                                              <
--no-use-agent
                                                                                                              >
                                                                                                            }
                                                                                                            {
                                                                                                              <
--s2k-mode
                                                                                                              >
                                                                                                            }
                                                                                                            {
                                                                                                              <
3
                                                                                                              >
                                                                                                            }
                                                                                                            {
                                                                                                              <
--s2k-count
                                                                                                              >
                                                                                                            }
                                                                                                            {
                                                                                                              <
65536
                                                                                                              >
                                                                                                            }
                                                                                                            {
                                                                                                              <
--force-mdc
                                                                                                              >
                                                                                                            }
                                                                                                            {
                                                                                                              <
--cipher-algo
                                                                                                              >
                                                                                                            }
                                                                                                            {
                                                                                                              <
AES256
                                                                                                              >
                                                                                                            }
                                                                                                            {
                                                                                                              <
--s2k-digest-algo
                                                                                                              >
                                                                                                            }
                                                                                                            {
                                                                                                              <
SHA512
                                                                                                              >
                                                                                                            }
                                                                                                            {
                                                                                                              <
-o
                                                                                                              >
                                                                                                            }
                                                                                                            {
                                                                                                              (DQ 
                                                                                                                (${ 
Id.VSub_Name p666_envar_script
                                                                                                                )
                                                                                                              )
                                                                                                            }
                                                                                                            {
                                                                                                              <
--symmetric
                                                                                                              >
                                                                                                            }
                                                                                                            {
                                                                                                              (DQ 
                                                                                                                (${ 
Id.VSub_Name p666_envar_script_new
                                                                                                                )
                                                                                                              )
                                                                                                            }
                                                                                                          ]
                                                                                                          redirects: [
                                                                                                            (redir
                                                                                                              op: 
                                                                                                                <
Id.Redir_GreatAnd '2>&'
                                                                                                                >
                                                                                                              loc: 
                                                                                                                (redir_loc.Fd
                                                                                                                  fd: 
2
                                                                                                                )
                                                                                                              arg: 
                                                                                                                {
                                                                                                                  <
1
                                                                                                                  >
                                                                                                                }
                                                                                                            )
                                                                                                          ]
                                                                                                          do_fork: 
T
                                                                                                        )
                                                                                                      ]
                                                                                                      negated: 
F
                                                                                                    )
                                                                                                )
                                                                                              )
                                                                                            }
                                                                                          spids: [
9903
                                                                                          ]
                                                                                        )
                                                                                      ]
                                                                                    )
                                                                                    (C 
                                                                                      {
                                                                                        <
cube_check_return
                                                                                        >
                                                                                      } {(DQ (${ Id.VSub_Name p666_gpg_output))}
                                                                                    )
                                                                                  ]
                                                                                )
                                                                              ]
                                                                            )
                                                                          ]
                                                                          spids: [9769 9770 9981 -1]
                                                                        )
                                                                        (case_arm
                                                                          pat_list: [
                                                                            {<Id.Lit_Star '*'>}
                                                                          ]
                                                                          action: [
                                                                            (C {<p666_show_usage>} 
                                                                              {
                                                                                (DQ 
                                                                                  <
'Not implemented'
                                                                                  >
                                                                                )
                                                                              }
                                                                            )
                                                                          ]
                                                                          spids: [9984 9985 9995 -1]
                                                                        )
                                                                      ]
                                                                    )
                                                                    (command.AndOr
                                                                      ops: [Id.Op_DPipe]
                                                                      children: [
                                                                        (C {<rm>} {<-f>} 
                                                                          {
                                                                            (DQ 
                                                                              (${ Id.VSub_Name 
p666_envar_script_new
                                                                              )
                                                                            )
                                                                          }
                                                                        )
                                                                        (C {<cube_check_return>})
                                                                      ]
                                                                    )
                                                                  ]
                                                                  spids: [9485 9493]
                                                                )
                                                              ]
                                                              else_action: [
                                                                (C {<p666_show_usage>} 
                                                                  {
                                                                    (DQ 
                                                                      <
'gpg program not found on the PATH'
                                                                      >
                                                                    )
                                                                  }
                                                                )
                                                              ]
                                                            )
                                                          ]
                                                          spids: [9467 9482]
                                                        )
                                                      ]
                                                      else_action: [
                                                        (command.Case
                                                          to_match: {(DQ (${ Id.VSub_Number 1))}
                                                          arms: [
                                                            (case_arm
                                                              pat_list: [{<show>}]
                                                              action: [
                                                                (command.Pipeline
                                                                  children: [
                                                                    (C {<cat>} 
                                                                      {
                                                                        (DQ 
                                                                          (${ Id.VSub_Name 
p666_envar_script
                                                                          )
                                                                        )
                                                                      }
                                                                    )
                                                                    (C {<grep>} {<-v>} 
                                                                      {
                                                                        (DQ <'^#!/bin/sh'> 
                                                                          <Id.Lit_Other '$'>
                                                                        )
                                                                      }
                                                                    )
                                                                  ]
                                                                  negated: F
                                                                )
                                                              ]
                                                              spids: [10045 10046 10069 -1]
                                                            )
                                                            (case_arm
                                                              pat_list: [{<source>}]
                                                              action: [
                                                                (C {<.>} 
                                                                  {
                                                                    (DQ 
                                                                      (command_sub
                                                                        left_token: 
                                                                          <Id.Left_DollarParen '$('>
                                                                        child: 
                                                                          (C {<cube_readlink>} 
                                                                            {
                                                                              (DQ 
                                                                                (${ Id.VSub_Name 
p666_envar_script
                                                                                )
                                                                              )
                                                                            }
                                                                          )
                                                                      )
                                                                    )
                                                                  }
                                                                )
                                                                (command.AndOr
                                                                  ops: [Id.Op_DAmp]
                                                                  children: [
                                                                    (C {<Id.Lit_LBracket '['>} 
                                                                      {(${ Id.VSub_Name p666_debug)} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                                                    )
                                                                    (C {<p666_printf>} 
                                                                      {
                                                                        (DQ <'Sourced '> 
                                                                          (${ Id.VSub_Name 
p666_envar_script
                                                                          ) <...> <Id.Lit_Other '\\'> <n>
                                                                        )
                                                                      }
                                                                    )
                                                                  ]
                                                                )
                                                              ]
                                                              spids: [10072 10073 10118 -1]
                                                            )
                                                            (case_arm
                                                              pat_list: [{<Id.Lit_Star '*'>}]
                                                              action: [
                                                                (C {<p666_show_usage>} 
                                                                  {(DQ <'Not implemented'>)}
                                                                )
                                                              ]
                                                              spids: [10121 10122 10132 -1]
                                                            )
                                                          ]
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                )
                                            )
                                            (command.Case
                                              to_match: {(DQ (${ Id.VSub_Number 1))}
                                              arms: [
                                                (case_arm
                                                  pat_list: [{<source>}]
                                                  action: [(C {<true>})]
                                                  spids: [10157 10158 10164 -1]
                                                )
                                                (case_arm
                                                  pat_list: [{<Id.Lit_Star '*'>}]
                                                  action: [
                                                    (command.ControlFlow
                                                      token: <Id.ControlFlow_Exit exit>
                                                      arg_word: {<0>}
                                                    )
                                                  ]
                                                  spids: [10167 10168 10176 -1]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [9415 9434]
                                        )
                                      ]
                                      else_action: [
                                        (C {<p666_show_usage>} 
                                          {
                                            (DQ <'Sub-COMMAND without -e ENVAR file and '> 
                                              (${ Id.VSub_Name p666_default_envars) <' not found.'>
                                            )
                                          }
                                        )
                                      ]
                                    )
                                    (command.Case
                                      to_match: {(DQ (${ Id.VSub_Number 1))}
                                      arms: [
                                        (case_arm
                                          pat_list: [{<source>}]
                                          action: [(C {<true>})]
                                          spids: [10210 10211 10217 -1]
                                        )
                                        (case_arm
                                          pat_list: [{<Id.Lit_Star '*'>}]
                                          action: [
                                            (command.ControlFlow
                                              token: <Id.ControlFlow_Exit exit>
                                              arg_word: {<0>}
                                            )
                                          ]
                                          spids: [10220 10221 10229 -1]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [9407 9412 10235 -1]
                                )
                                (case_arm
                                  pat_list: [{<Id.Lit_Star '*'>}]
                                  action: [
                                    (C {<p666_show_usage>} 
                                      {(DQ <'Unknown sub-COMMAND '> (${ Id.VSub_Number 1))}
                                    )
                                  ]
                                  spids: [10238 10239 10252 -1]
                                )
                              ]
                            )
                          ]
                          spids: [9374 9393]
                        )
                      ]
                      else_action: [
                        (C {<p666_show_usage>} 
                          {(DQ <'No hosts specified with -h and no sub-COMMAND specified.'>)}
                        )
                      ]
                    )
                  ]
                  spids: [9349 9367]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name POSIXCUBE_SOURCED))} 
                          {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Id.Op_DAmp]
                                  children: [
                                    (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name p666_commands))} 
                                      {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                    )
                                    (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name p666_cubes))} 
                                      {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [(C {<p666_show_usage>} {(DQ <'No COMMANDs or CUBEs specified.'>)})]
                          spids: [10297 10332]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name p666_debug)} {<-eq>} {<1>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (C {<p666_show_version>})
                      ]
                    )
                    (command.ShFunction
                      name: p666_handle_remote_response
                      body: 
                        (BraceGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:p666_handle_remote_response_context)
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Number 1))}
                                  spids: [10372]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} 
                                          {(DQ (${ Id.VSub_Name p666_handle_remote_response_context))} {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              name: p666_handle_remote_response_context
                                            )
                                          op: assign_op.Equal
                                          rhs: {(DQ <'Last command'>)}
                                          spids: [10401]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [10380 10398]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:p666_host_output_color)
                                  op: assign_op.Equal
                                  rhs: {(${ Id.VSub_Name POSIXCUBE_COLOR_GREEN)}
                                  spids: [10410]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:p666_host_output)
                                  op: assign_op.Equal
                                  rhs: {(DQ )}
                                  spids: [10416]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} 
                                          {(${ Id.VSub_Name p666_host_output_result)} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_host_output_color)
                                          op: assign_op.Equal
                                          rhs: {(${ Id.VSub_Name POSIXCUBE_COLOR_RED)}
                                          spids: [10439]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_host_output)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (${ Id.VSub_Name p666_handle_remote_response_context) <' failed with return code '> (${ Id.VSub_Name p666_host_output_result)
                                              )
                                            }
                                          spids: [10445]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [10421 10436]
                                )
                              ]
                              else_action: [
                                (command.AndOr
                                  ops: [Id.Op_DAmp]
                                  children: [
                                    (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name p666_debug)} {<-eq>} 
                                      {<1>} {<Id.Lit_RBracket ']'>}
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_host_output)
                                          op: assign_op.Equal
                                          rhs: {(DQ <'Commands succeeded.'>)}
                                          spids: [10474]
                                        )
                                      ]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name p666_host_output))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                )
                                (C {<p666_printf>} 
                                  {
                                    (DQ <'['> (${ Id.VSub_Name p666_host_output_color) 
                                      (${ Id.VSub_Name p666_host) (${ Id.VSub_Name POSIXCUBE_COLOR_RESET) <'] %s'> <Id.Lit_Other '\\'> <n>
                                    )
                                  } {(DQ (${ Id.VSub_Name p666_host_output))}
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} 
                                          {(${ Id.VSub_Name p666_host_output_result)} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (C {<p666_exit>} {(${ Id.VSub_Name p666_host_output_result)})
                                  ]
                                  spids: [10526 10541]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (command.ShFunction
                      name: p666_remote_ssh
                      body: 
                        (BraceGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:p666_remote_ssh_commands)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                                  spids: [10565]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name p666_debug)} {<-eq>} {<1>} 
                                  {<Id.Lit_RBracket ']'>}
                                )
                                (C {<p666_printf>} 
                                  {
                                    (DQ <'['> (${ Id.VSub_Name POSIXCUBE_COLOR_GREEN) 
                                      (${ Id.VSub_Name p666_host) (${ Id.VSub_Name POSIXCUBE_COLOR_RESET) <'] Executing ssh '> (${ Id.VSub_Name p666_user) <'@'> 
                                      (${ Id.VSub_Name p666_host) <' '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                                      (${ Id.VSub_Name p666_remote_ssh_commands) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' ...'> <Id.Lit_Other '\\'> <n>
                                    )
                                  }
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.AndOr
                                          ops: [Id.Op_DAmp]
                                          children: [
                                            (C {<Id.Lit_LBracket '['>} 
                                              {(${ Id.VSub_Name p666_parallel)} {<-gt>} {<0>} {<Id.Lit_RBracket ']'>}
                                            )
                                            (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name p666_async)} 
                                              {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                            )
                                          ]
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.Sentence
                                      child: 
                                        (command.Simple
                                          words: [
                                            {<ssh>}
                                            {<-o>}
                                            {<Id.Lit_VarLike 'ConnectTimeout='> <10>}
                                            {(${ Id.VSub_Name p666_user) <Id.Lit_Other '@'> 
                                              (${ Id.VSub_Name p666_host)
                                            }
                                            {(${ Id.VSub_Name p666_remote_ssh_commands)}
                                          ]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_GreatAnd '2>&'>
                                              loc: (redir_loc.Fd fd:2)
                                              arg: {<1>}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                      terminator: <Id.Op_Amp _>
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_wait_pids)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (C {<cube_append_str>} 
                                                    {(DQ (${ Id.VSub_Name p666_wait_pids))} {(DQ ($ Id.VSub_Bang '$!'))}
                                                  )
                                              )
                                            }
                                          spids: [10677]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [10620 10649]
                                )
                              ]
                              else_action: [
                                (command.Simple
                                  words: [
                                    {<ssh>}
                                    {<-o>}
                                    {<Id.Lit_VarLike 'ConnectTimeout='> <10>}
                                    {(${ Id.VSub_Name p666_user) <Id.Lit_Other '@'> 
                                      (${ Id.VSub_Name p666_host)
                                    }
                                    {(${ Id.VSub_Name p666_remote_ssh_commands)}
                                  ]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_GreatAnd '2>&'>
                                      loc: (redir_loc.Fd fd:2)
                                      arg: {<1>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:p666_host_output_result)
                                      op: assign_op.Equal
                                      rhs: {($ Id.VSub_QMark '$?')}
                                      spids: [10719]
                                    )
                                  ]
                                )
                                (command.AndOr
                                  ops: [Id.Op_DAmp]
                                  children: [
                                    (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name p666_debug)} {<-eq>} 
                                      {<1>} {<Id.Lit_RBracket ']'>}
                                    )
                                    (C {<p666_printf>} 
                                      {
                                        (DQ <'Finished executing on '> (${ Id.VSub_Name p666_host) 
                                          <Id.Lit_Other '\\'> <n>
                                        )
                                      }
                                    )
                                  ]
                                )
                                (C {<p666_handle_remote_response>} 
                                  {(DQ <'Remote commands through SSH'>)}
                                )
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Return return>
                                  arg_word: {(${ Id.VSub_Name p666_host_output_result)}
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (command.ShFunction
                      name: p666_remote_transfer
                      body: 
                        (BraceGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:p666_remote_transfer_source)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                                  spids: [10781]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:p666_remote_transfer_dest)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number '$2'))}
                                  spids: [10787]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name p666_debug)} {<-eq>} {<1>} 
                                  {<Id.Lit_RBracket ']'>}
                                )
                                (C {<p666_printf>} 
                                  {
                                    (DQ <'['> (${ Id.VSub_Name POSIXCUBE_COLOR_GREEN) 
                                      (${ Id.VSub_Name p666_host) (${ Id.VSub_Name POSIXCUBE_COLOR_RESET) <'] Executing rsync '> 
                                      (${ Id.VSub_Name p666_remote_transfer_source) <' to '> (${ Id.VSub_Name p666_user) <'@'> (${ Id.VSub_Name p666_host) <':'> 
                                      (${ Id.VSub_Name p666_remote_transfer_dest) <' ...'> <Id.Lit_Other '\\'> <n>
                                    )
                                  }
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (command.AndOr
                                          ops: [Id.Op_DAmp]
                                          children: [
                                            (C {<Id.Lit_LBracket '['>} 
                                              {(${ Id.VSub_Name p666_parallel)} {<-gt>} {<0>} {<Id.Lit_RBracket ']'>}
                                            )
                                            (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name p666_async)} 
                                              {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                            )
                                          ]
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name p666_debug)} 
                                          {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                        )
                                        (C {<p666_printf>} 
                                          {
                                            (DQ <'Rsyncing in background: '> 
                                              (${ Id.VSub_Name p666_remote_transfer_source) <' '> (${ Id.VSub_Name p666_user) <'@'> (${ Id.VSub_Name p666_host) <':'> 
                                              (${ Id.VSub_Name p666_remote_transfer_dest) <Id.Lit_Other '\\'> <n>
                                            )
                                          }
                                        )
                                      ]
                                    )
                                    (command.Sentence
                                      child: 
                                        (C {<rsync>} {<-rlpt>} 
                                          {(${ Id.VSub_Name p666_remote_transfer_source)} 
                                          {
                                            (DQ (${ Id.VSub_Name p666_user) <'@'> 
                                              (${ Id.VSub_Name p666_host) <':'> (${ Id.VSub_Name p666_remote_transfer_dest)
                                            )
                                          }
                                        )
                                      terminator: <Id.Op_Amp _>
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_wait_pids)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (C {<cube_append_str>} 
                                                    {(DQ (${ Id.VSub_Name p666_wait_pids))} {(DQ ($ Id.VSub_Bang '$!'))}
                                                  )
                                              )
                                            }
                                          spids: [10943]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [10848 10877]
                                )
                              ]
                              else_action: [
                                (command.AndOr
                                  ops: [Id.Op_DAmp]
                                  children: [
                                    (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name p666_debug)} {<-eq>} 
                                      {<1>} {<Id.Lit_RBracket ']'>}
                                    )
                                    (C {<p666_printf>} 
                                      {
                                        (DQ <'Rsyncing in foreground: '> 
                                          (${ Id.VSub_Name p666_remote_transfer_source) <' '> (${ Id.VSub_Name p666_user) <'@'> (${ Id.VSub_Name p666_host) <':'> 
                                          (${ Id.VSub_Name p666_remote_transfer_dest) <Id.Lit_Other '\\'> <n>
                                        )
                                      }
                                    )
                                  ]
                                )
                                (C {<rsync>} {<-rlpt>} {(${ Id.VSub_Name p666_remote_transfer_source)} 
                                  {
                                    (DQ (${ Id.VSub_Name p666_user) <'@'> (${ Id.VSub_Name p666_host) 
                                      <':'> (${ Id.VSub_Name p666_remote_transfer_dest)
                                    )
                                  }
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:p666_host_output_result)
                                      op: assign_op.Equal
                                      rhs: {($ Id.VSub_QMark '$?')}
                                      spids: [11023]
                                    )
                                  ]
                                )
                                (C {<p666_handle_remote_response>} {(DQ <rsync>)})
                              ]
                            )
                          ]
                        )
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:p666_cubedir)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name p666_cubedir>
                                suffix_op: 
                                  (suffix_op.Unary
                                    op_id: Id.VOp1_Percent
                                    arg_word: {<Id.Lit_Slash '/'>}
                                  )
                              )
                            }
                          spids: [11041]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:p666_script_name)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: (C {<cube_current_script_name>})
                                )
                              )
                            }
                          spids: [11051]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:p666_script_path)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: (C {<cube_current_script_abs_path>})
                                )
                              )
                            }
                          spids: [11059]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:p666_remote_script)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (${ Id.VSub_Name p666_cubedir) <'/'> 
                                (${ Id.VSub_Name p666_script_name)
                              )
                            }
                          spids: [11069]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:p666_script_contents)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ <'cube_initial_directory='> 
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\$'>
                                ) <'{PWD}'>
                              )
                            }
                          spids: [11086]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:p666_script_envar_contents)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                          spids: [11094]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:p666_envar_scripts_final)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                          spids: [11101]
                        )
                      ]
                    )
                    (command.ForEach
                      iter_name: p666_envar_script
                      iter_words: [{(${ Id.VSub_Name p666_envar_scripts)}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:p666_envar_script_remove)
                                  op: assign_op.Equal
                                  rhs: {<0>}
                                  spids: [11123]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:p666_envar_script_enc_matches)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (C {<expr>} {(${ Id.VSub_Name p666_envar_script)} 
                                            {<Id.Lit_Colon ':'>} {(SQ <'.*\\.enc$'>)}
                                          )
                                      )
                                    }
                                  spids: [11129]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} 
                                          {(${ Id.VSub_Name p666_envar_script_enc_matches)} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: (C {<cube_command_exists>} {<gpg>})
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                          action: [
                                            (command.AndOr
                                              ops: [Id.Op_DAmp]
                                              children: [
                                                (C {<Id.Lit_LBracket '['>} 
                                                  {(${ Id.VSub_Name p666_debug)} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                                )
                                                (C {<p666_printf>} 
                                                  {
                                                    (DQ <'Decrypting '> 
                                                      (${ Id.VSub_Name p666_envar_script)
                                                    )
                                                  }
                                                )
                                              ]
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:p666_envar_script_new)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (command_sub
                                                        left_token: <Id.Left_DollarParen '$('>
                                                        child: 
                                                          (command.Pipeline
                                                            children: [
                                                              (C {<echo>} 
                                                                {
                                                                  (DQ 
                                                                    (${ Id.VSub_Name 
p666_envar_script
                                                                    )
                                                                  )
                                                                }
                                                              )
                                                              (C {<sed>} {(SQ <'s/enc$/dec/g'>)})
                                                            ]
                                                            negated: F
                                                          )
                                                      )
                                                    }
                                                  spids: [11202]
                                                )
                                              ]
                                            )
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (command.Sentence
                                                      child: 
                                                        (C {<Id.Lit_LBracket '['>} 
                                                          {
                                                            (DQ 
                                                              (${ Id.VSub_Name 
p666_envar_scripts_password
                                                              )
                                                            )
                                                          } {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                                        )
                                                      terminator: <Id.Op_Semi _>
                                                    )
                                                  ]
                                                  action: [
                                                    (C {<p666_printf>} 
                                                      {
                                                        (DQ <'Enter the password for '> 
                                                          (${ Id.VSub_Name p666_envar_script) <':'> <Id.Lit_Other '\\'> <n>
                                                        )
                                                      }
                                                    )
                                                    (command.AndOr
                                                      ops: [Id.Op_DPipe]
                                                      children: [
                                                        (C {<gpg>} {<--output>} 
                                                          {
                                                            (DQ 
                                                              (${ Id.VSub_Name p666_envar_script_new)
                                                            )
                                                          } {<--yes>} {<--decrypt>} {(DQ (${ Id.VSub_Name p666_envar_script))}
                                                        )
                                                        (C {<cube_check_return>})
                                                      ]
                                                    )
                                                  ]
                                                  spids: [11224 11242]
                                                )
                                              ]
                                              else_action: [
                                                (command.AndOr
                                                  ops: [Id.Op_DAmp]
                                                  children: [
                                                    (C {<Id.Lit_LBracket '['>} 
                                                      {(${ Id.VSub_Name p666_debug)} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                                    )
                                                    (C {<p666_printf>} 
                                                      {
                                                        (DQ <'Decrypting '> 
                                                          (${ Id.VSub_Name p666_envar_script) <' ...'> <Id.Lit_Other '\\'> <n>
                                                        )
                                                      }
                                                    )
                                                  ]
                                                )
                                                (command.AndOr
                                                  ops: [Id.Op_DPipe]
                                                  children: [
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: 
                                                            (sh_lhs_expr.Name
                                                              name: p666_gpg_output
                                                            )
                                                          op: assign_op.Equal
                                                          rhs: 
                                                            {
                                                              (DQ 
                                                                (command_sub
                                                                  left_token: 
                                                                    <Id.Left_DollarParen '$('>
                                                                  child: 
                                                                    (command.Pipeline
                                                                      children: [
                                                                        (C {<echo>} 
                                                                          {
                                                                            (DQ 
                                                                              (${ Id.VSub_Name 
p666_envar_scripts_password
                                                                              )
                                                                            )
                                                                          }
                                                                        )
                                                                        (command.Simple
                                                                          words: [
                                                                            {<gpg>}
                                                                            {<--passphrase-fd>}
                                                                            {<0>}
                                                                            {<--batch>}
                                                                            {<--yes>}
                                                                            {<--output>}
                                                                            {
                                                                              (DQ 
                                                                                (${ Id.VSub_Name 
p666_envar_script_new
                                                                                )
                                                                              )
                                                                            }
                                                                            {<--decrypt>}
                                                                            {
                                                                              (DQ 
                                                                                (${ Id.VSub_Name 
p666_envar_script
                                                                                )
                                                                              )
                                                                            }
                                                                          ]
                                                                          redirects: [
                                                                            (redir
                                                                              op: 
                                                                                <Id.Redir_GreatAnd 
'2>&'
                                                                                >
                                                                              loc: 
                                                                                (redir_loc.Fd
                                                                                  fd: 2
                                                                                )
                                                                              arg: {<1>}
                                                                            )
                                                                          ]
                                                                          do_fork: T
                                                                        )
                                                                      ]
                                                                      negated: F
                                                                    )
                                                                )
                                                              )
                                                            }
                                                          spids: [11313]
                                                        )
                                                      ]
                                                    )
                                                    (C {<cube_check_return>} 
                                                      {(DQ (${ Id.VSub_Name p666_gpg_output))}
                                                    )
                                                  ]
                                                )
                                              ]
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:p666_envar_script)
                                                  op: assign_op.Equal
                                                  rhs: {(DQ (${ Id.VSub_Name p666_envar_script_new))}
                                                  spids: [11373]
                                                )
                                              ]
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      name: p666_envar_script_remove
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {<1>}
                                                  spids: [11381]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [11165 11173]
                                        )
                                      ]
                                      else_action: [
                                        (C {<p666_printf_error>} 
                                          {(DQ <'gpg program not found on the PATH'>)}
                                        )
                                        (C {<p666_exit>} {<1>})
                                      ]
                                    )
                                  ]
                                  spids: [11147 11162]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:p666_envar_scripts_final)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (C {<cube_append_str>} 
                                            {(DQ (${ Id.VSub_Name p666_envar_scripts_final))} {(DQ (${ Id.VSub_Name p666_envar_script))}
                                          )
                                      )
                                    }
                                  spids: [11408]
                                )
                              ]
                            )
                            (C {<chmod>} {<u> <Id.Lit_Other '+'> <x>} 
                              {(DQ (${ Id.VSub_Name p666_envar_script))}
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:p666_script_contents)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ (${ Id.VSub_Name p666_script_contents) <'\n'> <'cd '> 
                                        (${ Id.VSub_Name p666_cubedir) <'/ || cube_check_return\n'> <'. '> (${ Id.VSub_Name p666_cubedir) <'/'> 
                                        (command_sub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: (C {<basename>} {(${ Id.VSub_Name p666_envar_script)})
                                        ) <' || cube_check_return'>
                                      )
                                    }
                                  spids: [11443]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} 
                                          {(${ Id.VSub_Name p666_envar_script_remove)} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_script_contents)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ (${ Id.VSub_Name p666_script_contents) <'\n'> 
                                                <'rm -f '> (${ Id.VSub_Name p666_cubedir) <'/'> 
                                                (command_sub
                                                  left_token: <Id.Left_DollarParen '$('>
                                                  child: 
                                                    (C {<basename>} 
                                                      {(${ Id.VSub_Name p666_envar_script)}
                                                    )
                                                ) <' || cube_check_return'>
                                              )
                                            }
                                          spids: [11489]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [11471 11486]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:p666_envar_scripts)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name p666_envar_scripts_final))}
                          spids: [11519]
                        )
                      ]
                    )
                    (command.ForEach
                      iter_name: p666_cube
                      iter_words: [{(${ Id.VSub_Name p666_cubes)}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} {<-d>} 
                                          {(DQ (${ Id.VSub_Name p666_cube))} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_cube_name)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (C {<basename>} {(DQ (${ Id.VSub_Name p666_cube))})
                                              )
                                            }
                                          spids: [11561]
                                        )
                                      ]
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} {<-r>} 
                                                  {
                                                    (DQ (${ Id.VSub_Name p666_cube) <'/'> 
                                                      (${ Id.VSub_Name p666_cube_name) <.sh>
                                                    )
                                                  } {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                          action: [
                                            (C {<chmod>} {<u> <Id.Lit_Other '+'> <x>} 
                                              {(${ Id.VSub_Name p666_cube) <'/'> <Id.Lit_Star '*'> 
                                                <.sh>
                                              }
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:p666_cube)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (braced_var_sub
                                                        token: <Id.VSub_Name p666_cube>
                                                        suffix_op: 
                                                          (suffix_op.Unary
                                                            op_id: Id.VOp1_Percent
                                                            arg_word: {<Id.Lit_Slash '/'>}
                                                          )
                                                      )
                                                    }
                                                  spids: [11610]
                                                )
                                              ]
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:p666_script_contents)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ (${ Id.VSub_Name p666_script_contents) 
                                                        <'\n'> <'cd '> (${ Id.VSub_Name p666_cubedir) <'/'> (${ Id.VSub_Name p666_cube) <'/ || cube_check_return\n'> 
                                                        <'cube_echo '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'Started cube: '> 
                                                        (${ Id.VSub_Name p666_cube_name) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'POSIXCUBE_CUBE_NAME='> 
                                                        (word_part.EscapedLiteral
                                                          token: <Id.Lit_EscapedChar '\\"'>
                                                        ) (${ Id.VSub_Name p666_cube_name) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                                                        <' POSIXCUBE_CUBE_NAME_WITH_PREFIX='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' '> (${ Id.VSub_Name p666_cube_name) <.sh> 
                                                        (word_part.EscapedLiteral
                                                          token: <Id.Lit_EscapedChar '\\"'>
                                                        ) <' . '> (${ Id.VSub_Name p666_cubedir) <'/'> (${ Id.VSub_Name p666_cube) <'/'> 
                                                        (${ Id.VSub_Name p666_cube_name) <'.sh || cube_check_return '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                                                        <'Last command in cube'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'cube_echo '> 
                                                        (word_part.EscapedLiteral
                                                          token: <Id.Lit_EscapedChar '\\"'>
                                                        ) <'Finished cube: '> (${ Id.VSub_Name p666_cube_name) 
                                                        (word_part.EscapedLiteral
                                                          token: <Id.Lit_EscapedChar '\\"'>
                                                        ) <'\n'>
                                                      )
                                                    }
                                                  spids: [11618]
                                                )
                                              ]
                                            )
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (command.Sentence
                                                      child: 
                                                        (C {<Id.Lit_LBracket '['>} {<-r>} 
                                                          {
                                                            (DQ (${ Id.VSub_Name p666_cube) 
                                                              <'/envars.sh'>
                                                            )
                                                          } {<Id.Lit_RBracket ']'>}
                                                        )
                                                      terminator: <Id.Op_Semi _>
                                                    )
                                                  ]
                                                  action: [
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: 
                                                            (sh_lhs_expr.Name
                                                              name: p666_script_envar_contents
                                                            )
                                                          op: assign_op.Equal
                                                          rhs: 
                                                            {
                                                              (DQ 
                                                                (${ Id.VSub_Name 
p666_script_envar_contents
                                                                ) <'\n'> <'. '> (${ Id.VSub_Name p666_cubedir) <'/'> (${ Id.VSub_Name p666_cube) 
                                                                <'/envars.sh || cube_check_return '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'Failed loading cube envars'> 
                                                                (word_part.EscapedLiteral
                                                                  token: <Id.Lit_EscapedChar '\\"'>
                                                                ) <'\n'>
                                                              )
                                                            }
                                                          spids: [11702]
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                  spids: [11683 11699]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [11573 11593]
                                        )
                                      ]
                                      else_action: [
                                        (C {<p666_printf_error>} 
                                          {
                                            (DQ <'Could not find '> (${ Id.VSub_Name p666_cube_name) 
                                              <'.sh in cube '> (${ Id.VSub_Name p666_cube) <' directory.'>
                                            )
                                          }
                                        )
                                        (C {<p666_exit>} {<1>})
                                      ]
                                    )
                                  ]
                                  spids: [11543 11558]
                                )
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} {<-r>} 
                                          {(DQ (${ Id.VSub_Name p666_cube))} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_cube_name)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (C {<basename>} {(DQ (${ Id.VSub_Name p666_cube))})
                                              )
                                            }
                                          spids: [11771]
                                        )
                                      ]
                                    )
                                    (C {<chmod>} {<u> <Id.Lit_Other '+'> <x>} 
                                      {(DQ (${ Id.VSub_Name p666_cube))}
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_script_contents)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ (${ Id.VSub_Name p666_script_contents) <'\n'> <'cd '> 
                                                (${ Id.VSub_Name p666_cubedir) <'/ || cube_check_return\n'> <'cube_echo '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                                                <'Started cube: '> (${ Id.VSub_Name p666_cube_name) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> 
                                                <'POSIXCUBE_CUBE_NAME='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Name p666_cube_name) 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\"'>
                                                ) <' POSIXCUBE_CUBE_NAME_WITH_PREFIX='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' '> 
                                                (${ Id.VSub_Name p666_cube_name) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' . '> (${ Id.VSub_Name p666_cubedir) <'/'> 
                                                (${ Id.VSub_Name p666_cube_name) <' || cube_check_return '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                                                <'Last command in cube'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'cube_echo '> 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\"'>
                                                ) <'Finished cube: '> (${ Id.VSub_Name p666_cube_name) 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\"'>
                                                ) <'\n'>
                                              )
                                            }
                                          spids: [11796]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [11753 11768]
                                )
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} {<-r>} 
                                          {(DQ (${ Id.VSub_Name p666_cube) <.sh>)} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_cube_name)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (C {<basename>} 
                                                    {(DQ (${ Id.VSub_Name p666_cube) <.sh>)}
                                                  )
                                              )
                                            }
                                          spids: [11871]
                                        )
                                      ]
                                    )
                                    (C {<chmod>} {<u> <Id.Lit_Other '+'> <x>} 
                                      {(DQ (${ Id.VSub_Name p666_cube) <.sh>)}
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_script_contents)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ (${ Id.VSub_Name p666_script_contents) <'\n'> <'cd '> 
                                                (${ Id.VSub_Name p666_cubedir) <'/ || cube_check_return\n'> <'cube_echo '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                                                <'Started cube: '> (${ Id.VSub_Name p666_cube_name) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> 
                                                <'POSIXCUBE_CUBE_NAME='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) (${ Id.VSub_Name p666_cube_name) 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\"'>
                                                ) <' POSIXCUBE_CUBE_NAME_WITH_PREFIX='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' '> 
                                                (${ Id.VSub_Name p666_cube_name) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' . '> (${ Id.VSub_Name p666_cubedir) <'/'> 
                                                (${ Id.VSub_Name p666_cube_name) <' || cube_check_return '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                                                <'Last command in cube'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'\n'> <'cube_echo '> 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\"'>
                                                ) <'Finished cube: '> (${ Id.VSub_Name p666_cube_name) 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\"'>
                                                ) <'\n'>
                                              )
                                            }
                                          spids: [11898]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [11852 11868]
                                )
                              ]
                              else_action: [
                                (C {<p666_printf_error>} 
                                  {
                                    (DQ <'Cube '> (${ Id.VSub_Name p666_cube) 
                                      <
' could not be found as a directory or script, or you don\'t have read permissions.'
                                      >
                                    )
                                  }
                                )
                                (C {<p666_exit>} {<1>})
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:p666_script_contents)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ (${ Id.VSub_Name p666_script_contents) 
                                        (${ Id.VSub_Name POSIXCUBE_NEWLINE) <'cd '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'{cube_initial_directory}'>
                                      )
                                    }
                                  spids: [11976]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (command.ForEach
                      iter_name: p666_cube
                      iter_words: [{(${ Id.VSub_Name p666_include_cubes)}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} {<-d>} 
                                          {(DQ (${ Id.VSub_Name p666_cube))} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_cube_name)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (C {<basename>} {(DQ (${ Id.VSub_Name p666_cube))})
                                              )
                                            }
                                          spids: [12027]
                                        )
                                      ]
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} {<-r>} 
                                                  {
                                                    (DQ (${ Id.VSub_Name p666_cube) <'/'> 
                                                      (${ Id.VSub_Name p666_cube_name) <.sh>
                                                    )
                                                  } {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                          action: [
                                            (C {<chmod>} {<u> <Id.Lit_Other '+'> <x>} 
                                              {(${ Id.VSub_Name p666_cube) <'/'> <Id.Lit_Star '*'> 
                                                <.sh>
                                              }
                                            )
                                          ]
                                          spids: [12039 12059]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [12009 12024]
                                )
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} {<-r>} 
                                          {(DQ (${ Id.VSub_Name p666_cube))} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (C {<chmod>} {<u> <Id.Lit_Other '+'> <x>} 
                                      {(DQ (${ Id.VSub_Name p666_cube))}
                                    )
                                  ]
                                  spids: [12079 12094]
                                )
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} {<-r>} 
                                          {(DQ (${ Id.VSub_Name p666_cube) <.sh>)} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (C {<chmod>} {<u> <Id.Lit_Other '+'> <x>} 
                                      {(DQ (${ Id.VSub_Name p666_cube) <.sh>)}
                                    )
                                  ]
                                  spids: [12110 12126]
                                )
                              ]
                              else_action: [
                                (C {<p666_printf_error>} 
                                  {
                                    (DQ <'Cube '> (${ Id.VSub_Name p666_cube) 
                                      <
' could not be found as a directory or script, or you don\'t have read permissions.'
                                      >
                                    )
                                  }
                                )
                                (C {<p666_exit>} {<1>})
                              ]
                            )
                          ]
                        )
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name p666_commands))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:p666_script_contents)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ (${ Id.VSub_Name p666_script_contents) <'\n'> <'  '> 
                                        (${ Id.VSub_Name p666_commands)
                                      )
                                    }
                                  spids: [12192]
                                )
                              ]
                            )
                          ]
                          spids: [12170 12189]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:p666_script)
                          op: assign_op.Equal
                          rhs: {(DQ <'./cube_exec.sh'>)}
                          spids: [12210]
                        )
                      ]
                    )
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.MultiLine
                              here_begin: {<HEREDOC>}
                              here_end_span_id: 12299
                              stdin_parts: [
                                <'#!/bin/sh\n'>
                                <'POSIXCUBE_APIS_ONLY=1\n'>
                                <'. '>
                                (${ Id.VSub_Name p666_remote_script)
                                <'\n'>
                                <'if [ '>
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\$'>
                                )
                                <'? -ne 0 ] ; then\n'>
                                <'  echo '>
                                <Id.Right_DoubleQuote '"'>
                                <'Could not source '>
                                (${ Id.VSub_Name p666_remote_script)
                                <' script'>
                                <Id.Right_DoubleQuote '"'>
                                <' 1>&2\n'>
                                <'  exit 1\n'>
                                <'fi\n'>
                                <'\n'>
                                <'POSIXCUBE_DEBUG='>
                                (${ Id.VSub_Name p666_debug)
                                <'\n'>
                                <'cubevar_api_roles='>
                                <Id.Right_DoubleQuote '"'>
                                (${ Id.VSub_Name p666_roles)
                                <Id.Right_DoubleQuote '"'>
                                <'\n'>
                                (${ Id.VSub_Name p666_script_envar_contents)
                                <'\n'>
                                (${ Id.VSub_Name p666_options)
                                <'\n'>
                                (${ Id.VSub_Name p666_script_contents)
                                <'\n'>
                                <'\n'>
                                <'if [ '>
                                <Id.Right_DoubleQuote '"'>
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\$'>
                                )
                                <'{cubevar_api_post_restart}'>
                                <Id.Right_DoubleQuote '"'>
                                <' != '>
                                <Id.Right_DoubleQuote '"'>
                                <Id.Right_DoubleQuote '"'>
                                <' ]; then\n'>
                                <'  for p666_post in '>
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\$'>
                                )
                                <'{cubevar_api_post_restart}; do\n'>
                                <'    cube_service restart '>
                                <Id.Right_DoubleQuote '"'>
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\$'>
                                )
                                <'{p666_post}'>
                                <Id.Right_DoubleQuote '"'>
                                <'\n'>
                                <'  done\n'>
                                <'fi\n'>
                              ]
                            )
                        )
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ (${ Id.VSub_Name p666_script))}
                        )
                      ]
                      do_fork: T
                    )
                    (C {<chmod>} {<Id.Lit_Other '+'> <x>} {(DQ (${ Id.VSub_Name p666_script))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:p666_upload)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name p666_script) <' '>)}
                          spids: [12316]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name p666_cubes))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ForEach
                              iter_name: p666_cube
                              iter_words: [{(${ Id.VSub_Name p666_cubes)}]
                              do_arg_iter: F
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} {<-d>} 
                                                  {(DQ (${ Id.VSub_Name p666_cube))} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:p666_cube_name)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (command_sub
                                                        left_token: <Id.Left_DollarParen '$('>
                                                        child: 
                                                          (C {<basename>} 
                                                            {(DQ (${ Id.VSub_Name p666_cube))}
                                                          )
                                                      )
                                                    }
                                                  spids: [12380]
                                                )
                                              ]
                                            )
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (command.Sentence
                                                      child: 
                                                        (C {<Id.Lit_LBracket '['>} {<-r>} 
                                                          {
                                                            (DQ (${ Id.VSub_Name p666_cube) <'/'> 
                                                              (${ Id.VSub_Name p666_cube_name) <.sh>
                                                            )
                                                          } {<Id.Lit_RBracket ']'>}
                                                        )
                                                      terminator: <Id.Op_Semi _>
                                                    )
                                                  ]
                                                  action: [
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: (sh_lhs_expr.Name name:p666_cube)
                                                          op: assign_op.Equal
                                                          rhs: 
                                                            {
                                                              (braced_var_sub
                                                                token: <Id.VSub_Name p666_cube>
                                                                suffix_op: 
                                                                  (suffix_op.Unary
                                                                    op_id: Id.VOp1_Percent
                                                                    arg_word: {<Id.Lit_Slash '/'>}
                                                                  )
                                                              )
                                                            }
                                                          spids: [12415]
                                                        )
                                                      ]
                                                    )
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: (sh_lhs_expr.Name name:p666_upload)
                                                          op: assign_op.Equal
                                                          rhs: 
                                                            {
                                                              (DQ (${ Id.VSub_Name p666_upload) <' '> 
                                                                (${ Id.VSub_Name p666_cube)
                                                              )
                                                            }
                                                          spids: [12423]
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                  spids: [12392 12412]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [12362 12377]
                                        )
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} {<-r>} 
                                                  {(DQ (${ Id.VSub_Name p666_cube))} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:p666_cube_name)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (command_sub
                                                        left_token: <Id.Left_DollarParen '$('>
                                                        child: 
                                                          (C {<basename>} 
                                                            {(DQ (${ Id.VSub_Name p666_cube))}
                                                          )
                                                      )
                                                    }
                                                  spids: [12456]
                                                )
                                              ]
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:p666_upload)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ (${ Id.VSub_Name p666_upload) <' '> 
                                                        (${ Id.VSub_Name p666_cube)
                                                      )
                                                    }
                                                  spids: [12468]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [12438 12453]
                                        )
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} {<-r>} 
                                                  {(DQ (${ Id.VSub_Name p666_cube) <.sh>)} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:p666_cube_name)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (command_sub
                                                        left_token: <Id.Left_DollarParen '$('>
                                                        child: 
                                                          (C {<basename>} 
                                                            {(DQ (${ Id.VSub_Name p666_cube) <.sh>)}
                                                          )
                                                      )
                                                    }
                                                  spids: [12499]
                                                )
                                              ]
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:p666_upload)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ (${ Id.VSub_Name p666_upload) <' '> 
                                                        (${ Id.VSub_Name p666_cube) <.sh>
                                                      )
                                                    }
                                                  spids: [12512]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [12480 12496]
                                        )
                                      ]
                                    )
                                  ]
                                )
                            )
                          ]
                          spids: [12326 12345]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name p666_include_cubes))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ForEach
                              iter_name: p666_cube
                              iter_words: [{(${ Id.VSub_Name p666_include_cubes)}]
                              do_arg_iter: F
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} {<-d>} 
                                                  {(DQ (${ Id.VSub_Name p666_cube))} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:p666_cube_name)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (command_sub
                                                        left_token: <Id.Left_DollarParen '$('>
                                                        child: 
                                                          (C {<basename>} 
                                                            {(DQ (${ Id.VSub_Name p666_cube))}
                                                          )
                                                      )
                                                    }
                                                  spids: [12589]
                                                )
                                              ]
                                            )
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (command.Sentence
                                                      child: 
                                                        (C {<Id.Lit_LBracket '['>} {<-r>} 
                                                          {
                                                            (DQ (${ Id.VSub_Name p666_cube) <'/'> 
                                                              (${ Id.VSub_Name p666_cube_name) <.sh>
                                                            )
                                                          } {<Id.Lit_RBracket ']'>}
                                                        )
                                                      terminator: <Id.Op_Semi _>
                                                    )
                                                  ]
                                                  action: [
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: (sh_lhs_expr.Name name:p666_cube)
                                                          op: assign_op.Equal
                                                          rhs: 
                                                            {
                                                              (braced_var_sub
                                                                token: <Id.VSub_Name p666_cube>
                                                                suffix_op: 
                                                                  (suffix_op.Unary
                                                                    op_id: Id.VOp1_Percent
                                                                    arg_word: {<Id.Lit_Slash '/'>}
                                                                  )
                                                              )
                                                            }
                                                          spids: [12624]
                                                        )
                                                      ]
                                                    )
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: (sh_lhs_expr.Name name:p666_upload)
                                                          op: assign_op.Equal
                                                          rhs: 
                                                            {
                                                              (DQ (${ Id.VSub_Name p666_upload) <' '> 
                                                                (${ Id.VSub_Name p666_cube)
                                                              )
                                                            }
                                                          spids: [12632]
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                  spids: [12601 12621]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [12571 12586]
                                        )
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} {<-r>} 
                                                  {(DQ (${ Id.VSub_Name p666_cube))} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:p666_cube_name)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (command_sub
                                                        left_token: <Id.Left_DollarParen '$('>
                                                        child: 
                                                          (C {<basename>} 
                                                            {(DQ (${ Id.VSub_Name p666_cube))}
                                                          )
                                                      )
                                                    }
                                                  spids: [12665]
                                                )
                                              ]
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:p666_upload)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ (${ Id.VSub_Name p666_upload) <' '> 
                                                        (${ Id.VSub_Name p666_cube)
                                                      )
                                                    }
                                                  spids: [12677]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [12647 12662]
                                        )
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} {<-r>} 
                                                  {(DQ (${ Id.VSub_Name p666_cube) <.sh>)} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:p666_cube_name)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (command_sub
                                                        left_token: <Id.Left_DollarParen '$('>
                                                        child: 
                                                          (C {<basename>} 
                                                            {(DQ (${ Id.VSub_Name p666_cube) <.sh>)}
                                                          )
                                                      )
                                                    }
                                                  spids: [12708]
                                                )
                                              ]
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:p666_upload)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ (${ Id.VSub_Name p666_upload) <' '> 
                                                        (${ Id.VSub_Name p666_cube) <.sh>
                                                      )
                                                    }
                                                  spids: [12721]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [12689 12705]
                                        )
                                      ]
                                      else_action: [
                                        (C {<p666_printf_error>} 
                                          {(DQ <'Could not find '> (${ Id.VSub_Name p666_cube))}
                                        )
                                        (C {<p666_exit>} {<1>})
                                      ]
                                    )
                                  ]
                                )
                            )
                          ]
                          spids: [12535 12554]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name p666_quiet)} {<-eq>} {<0>} 
                          {<Id.Lit_RBracket ']'>}
                        )
                        (C {<p666_printf>} 
                          {
                            (DQ <'Transferring files to hosts: '> (${ Id.VSub_Name p666_hosts) <' ...'> 
                              <Id.Lit_Other '\\'> <n>
                            )
                          }
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:p666_async)
                          op: assign_op.Equal
                          rhs: {<1>}
                          spids: [12791]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name p666_skip_init)} {<-eq>} 
                                  {<0>} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:p666_wait_pids)
                                  op: assign_op.Equal
                                  rhs: {(DQ )}
                                  spids: [12815]
                                )
                              ]
                            )
                            (command.ForEach
                              iter_name: p666_host
                              iter_words: [{(${ Id.VSub_Name p666_hosts)}]
                              do_arg_iter: F
                              body: 
                                (command.DoGroup
                                  children: [
                                    (C {<p666_remote_ssh>} 
                                      {
                                        (DQ <'[ ! -d '> 
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\"'>
                                          ) (${ Id.VSub_Name p666_cubedir) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                                          <' ] && mkdir -p '> (${ Id.VSub_Name p666_cubedir) <'; RC='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) 
                                          <
'?; command -v rsync >/dev/null 2>&1 || (command -v apt-get >/dev/null 2>&1 && apt-get -y install rsync); exit '
                                          > (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'{RC};'>
                                        )
                                      }
                                    )
                                  ]
                                )
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} 
                                          {(DQ (${ Id.VSub_Name p666_wait_pids))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.AndOr
                                      ops: [Id.Op_DAmp]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name p666_debug)} 
                                          {<-eq>} {<1>} {<Id.Lit_RBracket ']'>}
                                        )
                                        (C {<p666_printf>} 
                                          {
                                            (DQ <'Waiting on initialization PIDs: '> 
                                              (${ Id.VSub_Name p666_wait_pids) <' ...'> <Id.Lit_Other '\\'> <n>
                                            )
                                          }
                                        )
                                      ]
                                    )
                                    (C {<wait>} {(${ Id.VSub_Name p666_wait_pids)})
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:p666_host_output_result)
                                          op: assign_op.Equal
                                          rhs: {($ Id.VSub_QMark '$?')}
                                          spids: [12922]
                                        )
                                      ]
                                    )
                                    (C {<p666_handle_remote_response>} 
                                      {(DQ <'Remote commands through SSH'>)}
                                    )
                                  ]
                                  spids: [12866 12885]
                                )
                              ]
                            )
                          ]
                          spids: [12797 12812]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:p666_wait_pids)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                          spids: [12941]
                        )
                      ]
                    )
                    (command.ForEach
                      iter_name: p666_host
                      iter_words: [{(${ Id.VSub_Name p666_hosts)}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name p666_skip_init)} 
                                          {<-eq>} {<0>} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (C {<p666_remote_transfer>} 
                                      {
                                        (DQ (${ Id.VSub_Name p666_upload) <' '> 
                                          (${ Id.VSub_Name p666_script_path) <' '> (${ Id.VSub_Name p666_envar_scripts)
                                        )
                                      } {(DQ (${ Id.VSub_Name p666_cubedir) <'/'>)}
                                    )
                                  ]
                                  spids: [12960 12975]
                                )
                              ]
                              else_action: [
                                (C {<p666_remote_transfer>} 
                                  {
                                    (DQ (${ Id.VSub_Name p666_upload) <' '> 
                                      (${ Id.VSub_Name p666_envar_scripts)
                                    )
                                  } {(DQ (${ Id.VSub_Name p666_cubedir) <'/'>)}
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name p666_wait_pids))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name p666_debug)} {<-eq>} {<1>} 
                                  {<Id.Lit_RBracket ']'>}
                                )
                                (C {<p666_printf>} 
                                  {
                                    (DQ <'Waiting on transfer PIDs: '> 
                                      (${ Id.VSub_Name p666_wait_pids) <' ...'> <Id.Lit_Other '\\'> <n>
                                    )
                                  }
                                )
                              ]
                            )
                            (C {<wait>} {(${ Id.VSub_Name p666_wait_pids)})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:p666_host_output_result)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '$?')}
                                  spids: [13089]
                                )
                              ]
                            )
                            (C {<p666_handle_remote_response>} {(DQ <rsync>)})
                          ]
                          spids: [13033 13052]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:p666_wait_pids)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                          spids: [13104]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:p666_async)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name p666_async_cubes)}
                          spids: [13109]
                        )
                      ]
                    )
                    (command.ForEach
                      iter_name: p666_host
                      iter_words: [{(${ Id.VSub_Name p666_hosts)}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name p666_quiet)} {<-eq>} {<0>} 
                                  {<Id.Lit_RBracket ']'>}
                                )
                                (C {<p666_printf>} 
                                  {
                                    (DQ <'['> (${ Id.VSub_Name POSIXCUBE_COLOR_GREEN) 
                                      (${ Id.VSub_Name p666_host) (${ Id.VSub_Name POSIXCUBE_COLOR_RESET) <'] Executing on '> (${ Id.VSub_Name p666_host) <' ...'> 
                                      <Id.Lit_Other '\\'> <n>
                                    )
                                  }
                                )
                              ]
                            )
                            (C {<p666_remote_ssh>} 
                              {
                                (DQ <'. '> (${ Id.VSub_Name p666_cubedir) <'/'> 
                                  (${ Id.VSub_Name p666_script)
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:p666_remote_ssh_result)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '$?')}
                                  spids: [13182]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name p666_async)} 
                                          {<-eq>} {<0>} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  action: [
                                    (command.AndOr
                                      ops: [Id.Op_DAmp Id.Op_DAmp]
                                      children: [
                                        (C {<Id.Lit_LBracket '['>} 
                                          {(${ Id.VSub_Name p666_skip_host_errors)} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>}
                                        )
                                        (C {<Id.Lit_LBracket '['>} 
                                          {(${ Id.VSub_Name p666_remote_ssh_result)} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>}
                                        )
                                        (C {<p666_exit>} {(${ Id.VSub_Name p666_remote_ssh_result)})
                                      ]
                                    )
                                  ]
                                  spids: [13186 13201]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name p666_wait_pids))} 
                                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name p666_debug)} {<-eq>} {<1>} 
                                  {<Id.Lit_RBracket ']'>}
                                )
                                (C {<p666_printf>} 
                                  {
                                    (DQ <'Waiting on cube execution PIDs: '> 
                                      (${ Id.VSub_Name p666_wait_pids) <' ...'> <Id.Lit_Other '\\'> <n>
                                    )
                                  }
                                )
                              ]
                            )
                            (C {<wait>} {(${ Id.VSub_Name p666_wait_pids)})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:p666_host_output_result)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_QMark '$?')}
                                  spids: [13302]
                                )
                              ]
                            )
                            (C {<p666_handle_remote_response>} {(DQ <'Cube execution'>)})
                          ]
                          spids: [13246 13265]
                        )
                      ]
                    )
                    (C {<p666_exit>} {<0>})
                  ]
                  spids: [10276 10294]
                )
              ]
            )
          ]
          spids: [7333 7351]
        )
      ]
    )
  ]
)