(command.CommandList
  children: [
    (command.Simple
      blame_tok: <Id.Lit_Colon ':'>
      more_env: []
      words: [{<Id.Lit_Colon ':'>} {<generate>} {<local>} {<host>} {<info>}]
      redirects: []
      do_fork: T
    )
    (command.Case
      case_kw: <Id.KW_Case case>
      to_match: (case_arg.Word w:{($ Id.VSub_DollarName RANDOM)})
      arms_start: <Id.KW_In in>
      arms: [
        (CaseArm
          left: <Id.VSub_DollarName '$RANDOM'>
          pattern: (pat.Words words:[{($ Id.VSub_DollarName RANDOM)}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <exec>
                  more_env: []
                  words: [{<exec>} {<ksh>} {($ Id.VSub_Number 0)} {(DQ ($ Id.VSub_At '@'))}]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ ($ Id.VSub_Number 0) <': ksh required'>)}]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          right: <Id.Op_DSemi _>
        )
      ]
      arms_end: <Id.KW_Esac esac>
      redirects: []
    )
    (command.Simple
      blame_tok: <integer>
      more_env: []
      words: [{<integer>} {<Id.Lit_VarLike 'cluster='> <5>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'dir='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'dir='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dir='> name:dir)
          op: assign_op.Equal
          rhs: {<.>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'file='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'file='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'heading='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'heading='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'heading='> name:heading)
          op: assign_op.Equal
          rhs: {<1>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'list='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'list='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'list='> name:list)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'rsh='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'rsh='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rsh='> name:rsh)
          op: assign_op.Equal
          rhs: {<rsh>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'timeout='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'timeout='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'timeout='> name:timeout)
          op: assign_op.Equal
          rhs: {<90>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'verbose='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'verbose='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'verbose='> name:verbose)
          op: assign_op.Equal
          rhs: {<Id.Lit_Colon ':'>}
        )
      ]
      redirects: []
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (command.Simple
              blame_tok: <Id.Lit_Colon ':'>
              more_env: []
              words: [{<Id.Lit_Colon ':'>}]
              redirects: []
              do_fork: T
            )
          ]
        )
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <0>
                  pattern: (pat.Words words:[{<0>}])
                  middle: <Id.Right_CasePat _>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_Number 1)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <->
                  pattern: 
                    (pat.Words
                      words: [{<-> <Id.Lit_LBracket '['> <frt> <Id.Lit_RBracket ']'>}]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <1>
                          pattern: (pat.Words words:[{<1>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <set>
                              more_env: []
                              words: [{<set>} {<-->} {(SQ <'-?'>)}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_Number 1)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <-f>
                          pattern: (pat.Words words:[{<-f>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'file='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'file='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number 2)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-r>
                          pattern: (pat.Words words:[{<-r>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'rsh='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'rsh='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rsh='> name:rsh)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number 2)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-t>
                          pattern: (pat.Words words:[{<-t>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'timeout='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'timeout='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'timeout='>
                                      name: timeout
                                    )
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_Number 2)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <-h>
                  pattern: (pat.Words words:[{<-h>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'heading='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'heading='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'heading='> name:heading)
                          op: assign_op.Equal
                          rhs: (rhs_word__Empty)
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <-n>
                  pattern: (pat.Words words:[{<-n>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'list='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'list='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'list='> name:list)
                          op: assign_op.Equal
                          rhs: {<1>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <-v>
                  pattern: (pat.Words words:[{<-v>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'verbose='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'verbose='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'verbose='> name:verbose)
                          op: assign_op.Equal
                          rhs: {(SQ <'print -u2'>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Left_SingleQuote '\''>
                  pattern: (pat.Words words:[{(SQ <'-?'>)}])
                  middle: <Id.Right_CasePat _>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_LBracket '['>
                  pattern: 
                    (pat.Words
                      words: [
                        {<Id.Lit_LBracket '['> <-> <Id.Lit_Other '+'> <Id.Lit_RBracket ']'> 
                          <Id.Lit_Star '*'>
                        }
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <print>
                      more_env: []
                      words: [
                        {<print>}
                        {<-u2>}
                        {(DQ ($ Id.VSub_Number 0) <': '> ($ Id.VSub_Number 1) <': invalid option'>)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <set>
                      more_env: []
                      words: [{<set>} {<-->} {(SQ <'-?'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow keyword:<Id.ControlFlow_Break break>)
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.Case
      case_kw: <Id.KW_Case case>
      to_match: (case_arg.Word w:{($ Id.VSub_Number 1)})
      arms_start: <Id.KW_In in>
      arms: [
        (CaseArm
          left: <Id.Left_SingleQuote '\''>
          pattern: (pat.Words words:[{(SQ <'-?'>)}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <print>
                  more_env: []
                  words: [
                    {<print>}
                    {<-u2>}
                    {
                      (DQ <'Usage: '> ($ Id.VSub_Number 0) 
                        <' [-hnv] [-f share-file] [-r rsh-path] [-t timeout] [host ...]'>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          right: <Id.Op_DSemi _>
        )
      ]
      arms_end: <Id.KW_Esac esac>
      redirects: []
    )
    (command.Case
      case_kw: <Id.KW_Case case>
      to_match: (case_arg.Word w:{($ Id.VSub_DollarName file)})
      arms_start: <Id.KW_In in>
      arms: [
        (CaseArm
          left: <Id.Left_DoubleQuote '"'>
          pattern: (pat.Words words:[{(DQ )}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'ifs='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'ifs='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifs='> name:ifs)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name IFS>
                        var_name: IFS
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VTest_Hyphen _>
                            arg_word: {(SQ <'\n'> <'\t '>)}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'IFS='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'IFS='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
                  op: assign_op.Equal
                  rhs: {<Id.Lit_Colon ':'>}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <set>
              more_env: []
              words: [{<set>} {(DQ )} {($ Id.VSub_DollarName PATH)} {(DQ <-->)} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'IFS='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'IFS='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName ifs)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'f='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'f='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f='> name:f)
                  op: assign_op.Equal
                  rhs: {<'lib/cs/share'>}
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <Id.Lit_Colon ':'>
                      more_env: []
                      words: [{<Id.Lit_Colon ':'>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_Number 1)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Left_DoubleQuote '"'>
                          pattern: (pat.Words words:[{(DQ )}])
                          middle: <Id.Right_CasePat _>
                          action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-->
                          pattern: (pat.Words words:[{<-->}])
                          middle: <Id.Right_CasePat _>
                          action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_DollarName file)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Left_DoubleQuote '"'>
                          pattern: (pat.Words words:[{(DQ )}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [
                                    {<test>}
                                    {<-f>}
                                    {
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Number 1>
                                        var_name: 1
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op: <Id.VOp1_Percent '%'>
                                            arg_word: {<bin>}
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      ) ($ Id.VSub_DollarName f)
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'file='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'file='>
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (BracedVarSub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Number 1>
                                            var_name: 1
                                            suffix_op: 
                                              (suffix_op.Unary
                                                op: <Id.VOp1_Percent '%'>
                                                arg_word: {<bin>}
                                              )
                                            right: <Id.Right_DollarBrace '}'>
                                          ) ($ Id.VSub_DollarName f)
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_DollarName file)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Left_DoubleQuote '"'>
                  pattern: (pat.Words words:[{(DQ )}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <print>
                          more_env: []
                          words: [
                            {<print>}
                            {<-u2>}
                            {($ Id.VSub_Number 0) <Id.Lit_Colon ':'>}
                            {($ Id.VSub_DollarName f) <Id.Lit_Colon ':'>}
                            {<not>}
                            {<found>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <Id.Lit_Star '*'>
          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<Id.KW_Bang '!'>} {<-f>} {($ Id.VSub_DollarName file)}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <print>
                          more_env: []
                          words: [
                            {<print>}
                            {<-u2>}
                            {
                              (DQ ($ Id.VSub_Number 0) <': '> ($ Id.VSub_DollarName file) 
                                <': cannot read share file'>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [552 563]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          right: <Id.Op_DSemi _>
        )
      ]
      arms_end: <Id.KW_Esac esac>
      redirects: []
    )
    (command.Simple
      blame_tok: <print>
      more_env: []
      words: [
        {<print>}
        {<-u2>}
        {
          (DQ ($ Id.VSub_Number 0) <': warning: '> ($ Id.VSub_DollarName rsh) 
            <' may hang on some hosts -- monitor the progress with the -v option or ps '> ($ Id.VSub_Dollar '$')
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'server='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'server='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'server='> name:server)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ForEach
      keyword: <Id.KW_For for>
      iter_names: [host]
      iterable: 
        (for_iter.Words
          words: [
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <egrep>
                    more_env: []
                    words: [{<egrep>} {<-v>} {(SQ <'^#'>)} {($ Id.VSub_DollarName file)}]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
          ]
        )
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_DollarName server)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Left_DoubleQuote '"'>
                  pattern: (pat.Words words:[{(DQ )}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'server='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'server='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'server='> name:server)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName host)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'server='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'server='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'server='> name:server)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName server) <'|'> ($ Id.VSub_DollarName host))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'hostname='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'hostname='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hostname='> name:hostname)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <package>
                    more_env: []
                    words: [{<package>} {<host>} {<name>}]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'hostname='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'hostname='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hostname='> name:hostname)
          op: assign_op.Equal
          rhs: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name hostname>
                var_name: hostname
                suffix_op: 
                  (suffix_op.Unary
                    op: <Id.VOp1_DPercent '%%'>
                    arg_word: {<.> <Id.Lit_Other '*'>}
                  )
                right: <Id.Right_DollarBrace '}'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.Case
      case_kw: <Id.KW_Case case>
      to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')})
      arms_start: <Id.KW_In in>
      arms: [
        (CaseArm
          left: <0>
          pattern: (pat.Words words:[{<0>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'domain='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'domain='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'domain='> name:domain)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (BraceGroup
                                left: <Id.Lit_LBrace '{'>
                                children: [
                                  (command.Simple
                                    blame_tok: <cat>
                                    more_env: []
                                    words: [{<cat>} {<'/etc/hosts'>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                  (command.Simple
                                    blame_tok: <ypcat>
                                    more_env: []
                                    words: [{<ypcat>} {<hosts>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                ]
                                redirects: [
                                  (Redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                right: <Id.Lit_RBrace '}'>
                              )
                              (command.Simple
                                blame_tok: <egrep>
                                more_env: []
                                words: [
                                  {<egrep>}
                                  {
                                    (DQ <'[^#].*[ \t]'> ($ Id.VSub_DollarName hostname) <'('> 
                                      (word_part.EscapedLiteral
                                        token: <Id.Lit_EscapedChar '\\$'>
                                        ch: '$'
                                      ) <'|[. \t])'>
                                    )
                                  }
                                ]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <sed>
                                more_env: []
                                words: [
                                  {<sed>}
                                  {<-e>}
                                  {(SQ <'1!d'>)}
                                  {<-e>}
                                  {(SQ <'s/^[^ \t]*//'>)}
                                  {<-e>}
                                  {(SQ <'s/[^.]*.//'>)}
                                  {<-e>}
                                  {(SQ <'s/[ \t].*//'>)}
                                ]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <set>
              more_env: []
              words: [
                {<set>}
                {<-->}
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [
                          (BraceGroup
                            left: <Id.Lit_LBrace '{'>
                            children: [
                              (command.Simple
                                blame_tok: <print>
                                more_env: []
                                words: [{<print>} {(DQ ($ Id.VSub_DollarName hostname))}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <egrep>
                                more_env: []
                                words: [{<egrep>} {<-v>} {(SQ <'^#'>)} {($ Id.VSub_DollarName file)}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Pipeline
                                children: [
                                  (command.Simple
                                    blame_tok: <ruptime>
                                    more_env: []
                                    words: [{<ruptime>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                  (command.Simple
                                    blame_tok: <fgrep>
                                    more_env: []
                                    words: [{<fgrep>} {<-v>} {(SQ <'no hosts'>)}]
                                    redirects: []
                                    do_fork: T
                                  )
                                ]
                                ops: [<Id.Op_Pipe _>]
                              )
                              (command.Pipeline
                                children: [
                                  (BraceGroup
                                    left: <Id.Lit_LBrace '{'>
                                    children: [
                                      (command.ForEach
                                        keyword: <Id.KW_For for>
                                        iter_names: [i]
                                        iterable: 
                                          (for_iter.Words
                                            words: [{<'/etc/resolv.conf'>} {<'/usr/etc/resolv.conf'>}]
                                          )
                                        body: 
                                          (command.DoGroup
                                            left: <Id.KW_Do do>
                                            children: [
                                              (command.If
                                                if_kw: <Id.KW_If if>
                                                arms: [
                                                  (IfArm
                                                    keyword: <Id.KW_If if>
                                                    cond: 
                                                      (condition.Shell
                                                        commands: [
                                                          (command.Simple
                                                            blame_tok: <test>
                                                            more_env: []
                                                            words: [
                                                              {<test>}
                                                              {<-f>}
                                                              {($ Id.VSub_DollarName i)}
                                                            ]
                                                            redirects: []
                                                            do_fork: T
                                                          )
                                                        ]
                                                      )
                                                    then_kw: <Id.KW_Then then>
                                                    action: [
                                                      (command.Pipeline
                                                        children: [
                                                          (command.Simple
                                                            blame_tok: <echo>
                                                            more_env: []
                                                            words: [
                                                              {<echo>}
                                                              {
                                                                (DQ <'ls -t A '> 
                                                                  (CommandSub
                                                                    left_token: 
                                                                      <Id.Left_DollarParen '$('>
                                                                    child: 
                                                                      (command.Simple
                                                                        blame_tok: <sed>
                                                                        more_env: []
                                                                        words: [
                                                                          {<sed>}
                                                                          {<-e>}
                                                                          {(SQ <'/^domain/!d'>)}
                                                                          {<-e>}
                                                                          {(SQ <'s/.*[ ][ \t]*//'>)}
                                                                          {($ Id.VSub_DollarName i)}
                                                                        ]
                                                                        redirects: []
                                                                        do_fork: T
                                                                      )
                                                                    right: <Id.Eof_RParen _>
                                                                  )
                                                                )
                                                              }
                                                            ]
                                                            redirects: []
                                                            do_fork: T
                                                          )
                                                          (command.Simple
                                                            blame_tok: <nslookup>
                                                            more_env: []
                                                            words: [{<nslookup>}]
                                                            redirects: []
                                                            do_fork: T
                                                          )
                                                        ]
                                                        ops: [<Id.Op_Pipe _>]
                                                      )
                                                      (command.ControlFlow
                                                        keyword: <Id.ControlFlow_Break break>
                                                      )
                                                    ]
                                                    spids: [808 817]
                                                  )
                                                ]
                                                else_action: []
                                                fi_kw: <Id.KW_Fi fi>
                                                redirects: []
                                              )
                                            ]
                                            right: <Id.KW_Done done>
                                          )
                                        redirects: []
                                      )
                                      (command.Simple
                                        blame_tok: <cat>
                                        more_env: []
                                        words: [{<cat>} {<'/etc/hosts'>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <ypcat>
                                        more_env: []
                                        words: [{<ypcat>} {<hosts>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                    redirects: []
                                    right: <Id.Lit_RBrace '}'>
                                  )
                                  (command.Simple
                                    blame_tok: <fgrep>
                                    more_env: []
                                    words: [{<fgrep>} {(DQ <.> ($ Id.VSub_DollarName domain))}]
                                    redirects: []
                                    do_fork: T
                                  )
                                  (command.Simple
                                    blame_tok: <awk>
                                    more_env: []
                                    words: [{<awk>} {(SQ <'{print $2}'>)}]
                                    redirects: []
                                    do_fork: T
                                  )
                                ]
                                ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                              )
                            ]
                            redirects: [
                              (Redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            right: <Id.Lit_RBrace '}'>
                          )
                          (command.Simple
                            blame_tok: <sed>
                            more_env: []
                            words: [
                              {<sed>}
                              {<-e>}
                              {(SQ <'s/[. \t].*//'>)}
                              {<-e>}
                              {(SQ <'/^[a-zA-Z].*[a-zA-Z0-9]$/!d'>)}
                            ]
                            redirects: []
                            do_fork: T
                          )
                          (command.Simple
                            blame_tok: <sort>
                            more_env: []
                            words: [{<sort>} {<-u>}]
                            redirects: []
                            do_fork: T
                          )
                        ]
                        ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_DollarName list)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Lit_QMark '?'>
                  pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <print>
                      more_env: []
                      words: [{<print>} {<Id.Lit_VarLike 'domain='> ($ Id.VSub_DollarName domain)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          right: <Id.Op_DSemi _>
        )
      ]
      arms_end: <Id.KW_Esac esac>
      redirects: []
    )
    (command.Case
      case_kw: <Id.KW_Case case>
      to_match: (case_arg.Word w:{($ Id.VSub_DollarName list)})
      arms_start: <Id.KW_In in>
      arms: [
        (CaseArm
          left: <Id.Lit_QMark '?'>
          pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <print>
                  more_env: []
                  words: [
                    {<print>}
                    {<Id.Lit_VarLike 'hosts='> (SQ <'"'>) ($ Id.VSub_Star '*') (SQ <'"'>)}
                  ]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>)
          ]
          right: <Id.Op_DSemi _>
        )
      ]
      arms_end: <Id.KW_Esac esac>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'hosts='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'hosts='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hosts='> name:hosts)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.Pipeline
      children: [
        (command.ForEach
          keyword: <Id.KW_For for>
          iter_names: [host]
          iterable: (for_iter__Args)
          body: 
            (command.DoGroup
              left: <Id.KW_Do do>
              children: [
                (command.Case
                  case_kw: <Id.KW_Case case>
                  to_match: (case_arg.Word w:{($ Id.VSub_DollarName host)})
                  arms_start: <Id.KW_In in>
                  arms: [
                    (CaseArm
                      left: <local>
                      pattern: (pat.Words words:[{<local>} {<localhost>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'host='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'host='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'host='> name:host)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_DollarName hostname)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                  ]
                  arms_end: <Id.KW_Esac esac>
                  redirects: []
                )
                (command.Case
                  case_kw: <Id.KW_Case case>
                  to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_DollarName hosts) <' '>)})
                  arms_start: <Id.KW_In in>
                  arms: [
                    (CaseArm
                      left: <Id.Lit_Star '*'>
                      pattern: 
                        (pat.Words
                          words: [
                            {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName host) <' '>) 
                              <Id.Lit_Star '*'>
                            }
                          ]
                        )
                      middle: <Id.Right_CasePat _>
                      action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)]
                      right: <Id.Op_DSemi _>
                    )
                  ]
                  arms_end: <Id.KW_Esac esac>
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'hosts='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'hosts='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hosts='> name:hosts)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_DollarName hosts) <' '> ($ Id.VSub_DollarName host))}
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$verbose'>
                  more_env: []
                  words: [
                    {($ Id.VSub_DollarName verbose)}
                    {<-n>}
                    {(DQ ($ Id.VSub_DollarName host) <' '>)}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Case
                  case_kw: <Id.KW_Case case>
                  to_match: (case_arg.Word w:{($ Id.VSub_DollarName host)})
                  arms_start: <Id.KW_In in>
                  arms: [
                    (CaseArm
                      left: <Id.VSub_DollarName '$hostname'>
                      pattern: (pat.Words words:[{($ Id.VSub_DollarName hostname)}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <package>
                          more_env: []
                          words: [{<package>} {<host>} {<name>} {<type>} {<cpu>} {<rating>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <Id.Lit_Star '*'>
                      pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.If
                          if_kw: <Id.KW_If if>
                          arms: [
                            (IfArm
                              keyword: <Id.KW_If if>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Simple
                                      blame_tok: <ping>
                                      more_env: []
                                      words: [
                                        {<ping>}
                                        {<-c>}
                                        {<1>}
                                        {<-w>}
                                        {<4>}
                                        {($ Id.VSub_DollarName host)}
                                      ]
                                      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
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <Id.VSub_DollarName '$rsh'>
                                      more_env: []
                                      words: [
                                        {($ Id.VSub_DollarName rsh)}
                                        {($ Id.VSub_DollarName host)}
                                        {<'bin/package'>}
                                        {<host>}
                                        {<name>}
                                        {<type>}
                                        {<cpu>}
                                        {<rating>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Amp _>
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'info='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'info='>
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'info='> name:info)
                                      op: assign_op.Equal
                                      rhs: {($ Id.VSub_Bang '!')}
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.Sentence
                                  child: 
                                    (BraceGroup
                                      left: <Id.Lit_LBrace '{'>
                                      children: [
                                        (command.Simple
                                          blame_tok: <sleep>
                                          more_env: []
                                          words: [{<sleep>} {($ Id.VSub_DollarName timeout)}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <kill>
                                          more_env: []
                                          words: [{<kill>} {<-9>} {($ Id.VSub_DollarName info)}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      redirects: []
                                      right: <Id.Lit_RBrace '}'>
                                    )
                                  terminator: <Id.Op_Amp _>
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'time='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'time='>
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'time='> name:time)
                                      op: assign_op.Equal
                                      rhs: {($ Id.VSub_Bang '!')}
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.Simple
                                  blame_tok: <wait>
                                  more_env: []
                                  words: [{<wait>} {($ Id.VSub_DollarName info)}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <kill>
                                  more_env: []
                                  words: [{<kill>} {<-9>} {($ Id.VSub_DollarName time)}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              spids: [1081 1102]
                            )
                          ]
                          else_action: []
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                  ]
                  arms_end: <Id.KW_Esac esac>
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '2>'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<'/dev/null'>}
                    )
                  ]
                )
              ]
              right: <Id.KW_Done done>
            )
          redirects: []
        )
        (command.WhileUntil
          keyword: <Id.KW_While while>
          cond: 
            (condition.Shell
              commands: [
                (command.Simple
                  blame_tok: <read>
                  more_env: []
                  words: [{<read>} {<host>} {<type>} {<cpu>} {<rating>}]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          body: 
            (command.DoGroup
              left: <Id.KW_Do do>
              children: [
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$verbose'>
                  more_env: []
                  words: [
                    {($ Id.VSub_DollarName verbose)}
                    {<Id.Lit_VarLike 'type='> ($ Id.VSub_DollarName type)}
                    {<Id.Lit_VarLike 'cpu='> ($ Id.VSub_DollarName cpu)}
                    {<Id.Lit_VarLike 'rating='> ($ Id.VSub_DollarName rating)}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'host='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'host='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'host='> name:host)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (BracedVarSub
                            left: <Id.Left_DollarBrace '${'>
                            token: <Id.VSub_Name host>
                            var_name: host
                            suffix_op: 
                              (suffix_op.Unary
                                op: <Id.VOp1_DPercent '%%'>
                                arg_word: {<.> <Id.Lit_Other '*'>}
                              )
                            right: <Id.Right_DollarBrace '}'>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <eval>
                  more_env: []
                  words: [
                    {<eval>}
                    {
                      (DQ <'case \''> ($ Id.VSub_DollarName host) <'\' in\n'> <'\t'> 
                        ($ Id.VSub_DollarName server) <')\tidle= ;;\n'> <'\t*)\t\tidle=15m ;;\n'> <'\tesac'>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <print>
                  more_env: []
                  words: [
                    {<print>}
                    {($ Id.VSub_DollarName host) (DQ <'\t'>) <Id.Lit_VarLike 'type='> 
                      ($ Id.VSub_DollarName type) (DQ <'\t'>) (${ Id.VSub_Name rating) 
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name idle>
                        var_name: idle
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VTest_ColonPlus _>
                            arg_word: {(DQ <'\tidle='> ($ Id.VSub_DollarName idle))}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      ) 
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name cpu>
                        var_name: cpu
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VTest_ColonPlus _>
                            arg_word: {(DQ <'\tcpu='> ($ Id.VSub_DollarName cpu))}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              right: <Id.KW_Done done>
            )
          redirects: []
        )
        (command.Simple
          blame_tok: <sort>
          more_env: []
          words: [{<sort>} {<-b>} {<Id.Lit_Other '+'> <2n>} {<-3>}]
          redirects: []
          do_fork: T
        )
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <integer>
              more_env: []
              words: [{<integer>} {<v>} {<c>} {<d>} {<i>} {<j>} {<k>} {<n>}]
              redirects: []
              do_fork: T
            )
            (command.DParen
              left: <Id.Op_DLeftParen _>
              child: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: ($ Id.Lit_ArithVarLike n)
                  right: {<Id.Lit_Digits 0>}
                )
              right: <Id.Op_DRightParen _>
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <read>
                      more_env: []
                      words: [{<read>} {<host>} {<type>} {<rate>} {<attr>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.DParen
                      left: <Id.Op_DLeftParen _>
                      child: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: ($ Id.Lit_ArithVarLike n)
                          right: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Plus
                              left: ($ Id.Lit_ArithVarLike n)
                              right: {<Id.Lit_Digits 1>}
                            )
                        )
                      right: <Id.Op_DRightParen _>
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_ArrayLhsOpen 'h['>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_ArrayLhsOpen 'h['>
                          lhs: 
                            (sh_lhs_expr.IndexedName
                              left: <Id.Lit_ArrayLhsOpen 'h['>
                              name: h
                              index: ($ Id.Lit_ArithVarLike n)
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName host)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_ArrayLhsOpen 't['>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_ArrayLhsOpen 't['>
                          lhs: 
                            (sh_lhs_expr.IndexedName
                              left: <Id.Lit_ArrayLhsOpen 't['>
                              name: t
                              index: ($ Id.Lit_ArithVarLike n)
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName type)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_ArrayLhsOpen 'v['>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_ArrayLhsOpen 'v['>
                          lhs: 
                            (sh_lhs_expr.IndexedName
                              left: <Id.Lit_ArrayLhsOpen 'v['>
                              name: v
                              index: ($ Id.Lit_ArithVarLike n)
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName rate)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_ArrayLhsOpen 'a['>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_ArrayLhsOpen 'a['>
                          lhs: 
                            (sh_lhs_expr.IndexedName
                              left: <Id.Lit_ArrayLhsOpen 'a['>
                              name: a
                              index: ($ Id.Lit_ArithVarLike n)
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName attr)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'c='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'c='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'c='> name:c)
                  op: assign_op.Equal
                  rhs: {<1>}
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.DParen
                      left: <Id.Op_DLeftParen _>
                      child: ($ Id.Lit_ArithVarLike c)
                      right: <Id.Op_DRightParen _>
                      redirects: []
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.DParen
                      left: <Id.Op_DLeftParen _>
                      child: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: ($ Id.Lit_ArithVarLike c)
                          right: {<Id.Lit_Digits 0>}
                        )
                      right: <Id.Op_DRightParen _>
                      redirects: []
                    )
                    (command.DParen
                      left: <Id.Op_DLeftParen _>
                      child: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: ($ Id.Lit_ArithVarLike i)
                          right: {<Id.Lit_Digits 1>}
                        )
                      right: <Id.Op_DRightParen _>
                      redirects: []
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.DParen
                              left: <Id.Op_DLeftParen _>
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_Less
                                  left: ($ Id.Lit_ArithVarLike i)
                                  right: ($ Id.Lit_ArithVarLike n)
                                )
                              right: <Id.Op_DRightParen _>
                              redirects: []
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.DParen
                              left: <Id.Op_DLeftParen _>
                              child: 
                                (arith_expr.BinaryAssign
                                  op_id: Id.Arith_Equal
                                  left: ($ Id.Lit_ArithVarLike d)
                                  right: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Minus
                                      left: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_LBracket
                                          left: ($ Id.Lit_ArithVarLike v)
                                          right: 
                                            (arith_expr.Binary
                                              op_id: Id.Arith_Plus
                                              left: ($ Id.Lit_ArithVarLike i)
                                              right: {<Id.Lit_Digits 1>}
                                            )
                                        )
                                      right: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_LBracket
                                          left: ($ Id.Lit_ArithVarLike v)
                                          right: ($ Id.Lit_ArithVarLike i)
                                        )
                                    )
                                )
                              right: <Id.Op_DRightParen _>
                              redirects: []
                            )
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.DParen
                                          left: <Id.Op_DLeftParen _>
                                          child: 
                                            (arith_expr.Binary
                                              op_id: Id.Arith_DAmp
                                              left: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_Great
                                                  left: ($ Id.Lit_ArithVarLike d)
                                                  right: {<Id.Lit_Digits 1>}
                                                )
                                              right: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_Less
                                                  left: ($ Id.Lit_ArithVarLike d)
                                                  right: ($ Id.Lit_ArithVarLike cluster)
                                                )
                                            )
                                          right: <Id.Op_DRightParen _>
                                          redirects: []
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.DParen
                                      left: <Id.Op_DLeftParen _>
                                      child: 
                                        (arith_expr.BinaryAssign
                                          op_id: Id.Arith_Equal
                                          left: ($ Id.Lit_ArithVarLike d)
                                          right: 
                                            (arith_expr.Binary
                                              op_id: Id.Arith_Slash
                                              left: ($ Id.Lit_ArithVarLike d)
                                              right: {<Id.Lit_Digits 2>}
                                            )
                                        )
                                      right: <Id.Op_DRightParen _>
                                      redirects: []
                                    )
                                    (command.DParen
                                      left: <Id.Op_DLeftParen _>
                                      child: 
                                        (arith_expr.BinaryAssign
                                          op_id: Id.Arith_Equal
                                          left: 
                                            (arith_expr.Binary
                                              op_id: Id.Arith_LBracket
                                              left: ($ Id.Lit_ArithVarLike v)
                                              right: ($ Id.Lit_ArithVarLike i)
                                            )
                                          right: 
                                            (arith_expr.Binary
                                              op_id: Id.Arith_Plus
                                              left: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_LBracket
                                                  left: ($ Id.Lit_ArithVarLike v)
                                                  right: ($ Id.Lit_ArithVarLike i)
                                                )
                                              right: ($ Id.Lit_ArithVarLike d)
                                            )
                                        )
                                      right: <Id.Op_DRightParen _>
                                      redirects: []
                                    )
                                    (command.DParen
                                      left: <Id.Op_DLeftParen _>
                                      child: 
                                        (arith_expr.BinaryAssign
                                          op_id: Id.Arith_Equal
                                          left: 
                                            (arith_expr.Binary
                                              op_id: Id.Arith_LBracket
                                              left: ($ Id.Lit_ArithVarLike v)
                                              right: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_Plus
                                                  left: ($ Id.Lit_ArithVarLike i)
                                                  right: {<Id.Lit_Digits 1>}
                                                )
                                            )
                                          right: 
                                            (arith_expr.Binary
                                              op_id: Id.Arith_Minus
                                              left: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_LBracket
                                                  left: ($ Id.Lit_ArithVarLike v)
                                                  right: 
                                                    (arith_expr.Binary
                                                      op_id: Id.Arith_Plus
                                                      left: ($ Id.Lit_ArithVarLike i)
                                                      right: {<Id.Lit_Digits 1>}
                                                    )
                                                )
                                              right: ($ Id.Lit_ArithVarLike d)
                                            )
                                        )
                                      right: <Id.Op_DRightParen _>
                                      redirects: []
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'c='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'c='>
                                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'c='> name:c)
                                          op: assign_op.Equal
                                          rhs: {<1>}
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [1421 1435]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.DParen
                              left: <Id.Op_DLeftParen _>
                              child: 
                                (arith_expr.BinaryAssign
                                  op_id: Id.Arith_Equal
                                  left: ($ Id.Lit_ArithVarLike i)
                                  right: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Plus
                                      left: ($ Id.Lit_ArithVarLike i)
                                      right: {<Id.Lit_Digits 1>}
                                    )
                                )
                              right: <Id.Op_DRightParen _>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.DParen
              left: <Id.Op_DLeftParen _>
              child: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: ($ Id.Lit_ArithVarLike i)
                  right: {<Id.Lit_Digits 1>}
                )
              right: <Id.Op_DRightParen _>
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.DParen
                      left: <Id.Op_DLeftParen _>
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_LessEqual
                          left: ($ Id.Lit_ArithVarLike i)
                          right: ($ Id.Lit_ArithVarLike n)
                        )
                      right: <Id.Op_DRightParen _>
                      redirects: []
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.DParen
                      left: <Id.Op_DLeftParen _>
                      child: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: ($ Id.Lit_ArithVarLike c)
                          right: 
                            (arith_expr.Binary
                              op_id: Id.Arith_LBracket
                              left: ($ Id.Lit_ArithVarLike v)
                              right: ($ Id.Lit_ArithVarLike i)
                            )
                        )
                      right: <Id.Op_DRightParen _>
                      redirects: []
                    )
                    (command.DParen
                      left: <Id.Op_DLeftParen _>
                      child: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: ($ Id.Lit_ArithVarLike j)
                          right: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Plus
                              left: ($ Id.Lit_ArithVarLike i)
                              right: {<Id.Lit_Digits 1>}
                            )
                        )
                      right: <Id.Op_DRightParen _>
                      redirects: []
                    )
                    (command.DParen
                      left: <Id.Op_DLeftParen _>
                      child: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: ($ Id.Lit_ArithVarLike k)
                          right: {<Id.Lit_Digits 1>}
                        )
                      right: <Id.Op_DRightParen _>
                      redirects: []
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.DParen
                              left: <Id.Op_DLeftParen _>
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_LessEqual
                                  left: ($ Id.Lit_ArithVarLike j)
                                  right: ($ Id.Lit_ArithVarLike n)
                                )
                              right: <Id.Op_DRightParen _>
                              redirects: []
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.DParen
                                          left: <Id.Op_DLeftParen _>
                                          child: 
                                            (arith_expr.Binary
                                              op_id: Id.Arith_DPipe
                                              left: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_Great
                                                  left: 
                                                    (arith_expr.Binary
                                                      op_id: Id.Arith_Minus
                                                      left: 
                                                        (arith_expr.Binary
                                                          op_id: Id.Arith_LBracket
                                                          left: ($ Id.Lit_ArithVarLike v)
                                                          right: ($ Id.Lit_ArithVarLike j)
                                                        )
                                                      right: 
                                                        (arith_expr.Binary
                                                          op_id: Id.Arith_LBracket
                                                          left: ($ Id.Lit_ArithVarLike v)
                                                          right: 
                                                            (arith_expr.Binary
                                                              op_id: Id.Arith_Minus
                                                              left: ($ Id.Lit_ArithVarLike j)
                                                              right: {<Id.Lit_Digits 1>}
                                                            )
                                                        )
                                                    )
                                                  right: {<Id.Lit_Digits 1>}
                                                )
                                              right: 
                                                (arith_expr.Binary
                                                  op_id: Id.Arith_Great
                                                  left: 
                                                    (arith_expr.Binary
                                                      op_id: Id.Arith_Minus
                                                      left: 
                                                        (arith_expr.Binary
                                                          op_id: Id.Arith_LBracket
                                                          left: ($ Id.Lit_ArithVarLike v)
                                                          right: ($ Id.Lit_ArithVarLike j)
                                                        )
                                                      right: 
                                                        (arith_expr.Binary
                                                          op_id: Id.Arith_LBracket
                                                          left: ($ Id.Lit_ArithVarLike v)
                                                          right: ($ Id.Lit_ArithVarLike i)
                                                        )
                                                    )
                                                  right: ($ Id.Lit_ArithVarLike cluster)
                                                )
                                            )
                                          right: <Id.Op_DRightParen _>
                                          redirects: []
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                                  spids: [1567 1603]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.DParen
                              left: <Id.Op_DLeftParen _>
                              child: 
                                (arith_expr.BinaryAssign
                                  op_id: Id.Arith_Equal
                                  left: ($ Id.Lit_ArithVarLike c)
                                  right: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Plus
                                      left: ($ Id.Lit_ArithVarLike c)
                                      right: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_LBracket
                                          left: ($ Id.Lit_ArithVarLike v)
                                          right: ($ Id.Lit_ArithVarLike j)
                                        )
                                    )
                                )
                              right: <Id.Op_DRightParen _>
                              redirects: []
                            )
                            (command.DParen
                              left: <Id.Op_DLeftParen _>
                              child: 
                                (arith_expr.BinaryAssign
                                  op_id: Id.Arith_Equal
                                  left: ($ Id.Lit_ArithVarLike k)
                                  right: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Plus
                                      left: ($ Id.Lit_ArithVarLike k)
                                      right: {<Id.Lit_Digits 1>}
                                    )
                                )
                              right: <Id.Op_DRightParen _>
                              redirects: []
                            )
                            (command.DParen
                              left: <Id.Op_DLeftParen _>
                              child: 
                                (arith_expr.BinaryAssign
                                  op_id: Id.Arith_Equal
                                  left: ($ Id.Lit_ArithVarLike j)
                                  right: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Plus
                                      left: ($ Id.Lit_ArithVarLike j)
                                      right: {<Id.Lit_Digits 1>}
                                    )
                                )
                              right: <Id.Op_DRightParen _>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                    (command.DParen
                      left: <Id.Op_DLeftParen _>
                      child: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: ($ Id.Lit_ArithVarLike c)
                          right: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Slash
                              left: ($ Id.Lit_ArithVarLike c)
                              right: ($ Id.Lit_ArithVarLike k)
                            )
                        )
                      right: <Id.Op_DRightParen _>
                      redirects: []
                    )
                    (command.DParen
                      left: <Id.Op_DLeftParen _>
                      child: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: ($ Id.Lit_ArithVarLike d)
                          right: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Percent
                              left: ($ Id.Lit_ArithVarLike c)
                              right: {<Id.Lit_Digits 10>}
                            )
                        )
                      right: <Id.Op_DRightParen _>
                      redirects: []
                    )
                    (command.DParen
                      left: <Id.Op_DLeftParen _>
                      child: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: ($ Id.Lit_ArithVarLike c)
                          right: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Minus
                              left: ($ Id.Lit_ArithVarLike c)
                              right: ($ Id.Lit_ArithVarLike d)
                            )
                        )
                      right: <Id.Op_DRightParen _>
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.DParen
                                  left: <Id.Op_DLeftParen _>
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Great
                                      left: ($ Id.Lit_ArithVarLike d)
                                      right: {<Id.Lit_Digits 6>}
                                    )
                                  right: <Id.Op_DRightParen _>
                                  redirects: []
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.DParen
                              left: <Id.Op_DLeftParen _>
                              child: 
                                (arith_expr.BinaryAssign
                                  op_id: Id.Arith_Equal
                                  left: ($ Id.Lit_ArithVarLike c)
                                  right: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Plus
                                      left: ($ Id.Lit_ArithVarLike c)
                                      right: {<Id.Lit_Digits 10>}
                                    )
                                )
                              right: <Id.Op_DRightParen _>
                              redirects: []
                            )
                          ]
                          spids: [1677 1687]
                        )
                        (IfArm
                          keyword: <Id.KW_Elif elif>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.DParen
                                  left: <Id.Op_DLeftParen _>
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Great
                                      left: ($ Id.Lit_ArithVarLike d)
                                      right: {<Id.Lit_Digits 3>}
                                    )
                                  right: <Id.Op_DRightParen _>
                                  redirects: []
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.DParen
                              left: <Id.Op_DLeftParen _>
                              child: 
                                (arith_expr.BinaryAssign
                                  op_id: Id.Arith_Equal
                                  left: ($ Id.Lit_ArithVarLike c)
                                  right: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Plus
                                      left: ($ Id.Lit_ArithVarLike c)
                                      right: {<Id.Lit_Digits 5>}
                                    )
                                )
                              right: <Id.Op_DRightParen _>
                              redirects: []
                            )
                          ]
                          spids: [1699 1709]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.DParen
                              left: <Id.Op_DLeftParen _>
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_Less
                                  left: ($ Id.Lit_ArithVarLike i)
                                  right: ($ Id.Lit_ArithVarLike j)
                                )
                              right: <Id.Op_DRightParen _>
                              redirects: []
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.DParen
                              left: <Id.Op_DLeftParen _>
                              child: 
                                (arith_expr.BinaryAssign
                                  op_id: Id.Arith_Equal
                                  left: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_LBracket
                                      left: ($ Id.Lit_ArithVarLike v)
                                      right: ($ Id.Lit_ArithVarLike i)
                                    )
                                  right: ($ Id.Lit_ArithVarLike c)
                                )
                              right: <Id.Op_DRightParen _>
                              redirects: []
                            )
                            (command.DParen
                              left: <Id.Op_DLeftParen _>
                              child: 
                                (arith_expr.BinaryAssign
                                  op_id: Id.Arith_Equal
                                  left: ($ Id.Lit_ArithVarLike i)
                                  right: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_Plus
                                      left: ($ Id.Lit_ArithVarLike i)
                                      right: {<Id.Lit_Digits 1>}
                                    )
                                )
                              right: <Id.Op_DRightParen _>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.DParen
              left: <Id.Op_DLeftParen _>
              child: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: ($ Id.Lit_ArithVarLike i)
                  right: {<Id.Lit_Digits 1>}
                )
              right: <Id.Op_DRightParen _>
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.DParen
                      left: <Id.Op_DLeftParen _>
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_LessEqual
                          left: ($ Id.Lit_ArithVarLike i)
                          right: ($ Id.Lit_ArithVarLike n)
                        )
                      right: <Id.Op_DRightParen _>
                      redirects: []
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'rate='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'rate='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rate='> name:rate)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name v>
                                var_name: v
                                bracket_op: (bracket_op.ArrayIndex expr:($ Id.Lit_ArithVarLike i))
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <print>
                      more_env: []
                      words: [
                        {<print>}
                        {
                          (BracedVarSub
                            left: <Id.Left_DollarBrace '${'>
                            token: <Id.VSub_Name h>
                            var_name: h
                            bracket_op: (bracket_op.ArrayIndex expr:($ Id.Lit_ArithVarLike i))
                            right: <Id.Right_DollarBrace '}'>
                          )
                        }
                        {
                          (BracedVarSub
                            left: <Id.Left_DollarBrace '${'>
                            token: <Id.VSub_Name t>
                            var_name: t
                            bracket_op: (bracket_op.ArrayIndex expr:($ Id.Lit_ArithVarLike i))
                            right: <Id.Right_DollarBrace '}'>
                          )
                        }
                        {<Id.Lit_VarLike 'rating='> 
                          (BracedVarSub
                            left: <Id.Left_DollarBrace '${'>
                            token: <Id.VSub_Name v>
                            var_name: v
                            bracket_op: (bracket_op.ArrayIndex expr:($ Id.Lit_ArithVarLike i))
                            right: <Id.Right_DollarBrace '}'>
                          ) 
                          (DQ <'\t'> 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name a>
                              var_name: a
                              bracket_op: (bracket_op.ArrayIndex expr:($ Id.Lit_ArithVarLike i))
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.DParen
                      left: <Id.Op_DLeftParen _>
                      child: 
                        (arith_expr.BinaryAssign
                          op_id: Id.Arith_Equal
                          left: ($ Id.Lit_ArithVarLike i)
                          right: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Plus
                              left: ($ Id.Lit_ArithVarLike i)
                              right: {<Id.Lit_Digits 1>}
                            )
                        )
                      right: <Id.Op_DRightParen _>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
        (command.Simple
          blame_tok: <sort>
          more_env: []
          words: [
            {<sort>}
            {<-b>}
            {<Id.Lit_Other '+'> <1>}
            {<-2>}
            {<Id.Lit_Other '+'> <2.7n>}
            {<-3>}
            {<Id.Lit_Other '+'> <0>}
            {<-1>}
          ]
          redirects: []
          do_fork: T
        )
        (command.WhileUntil
          keyword: <Id.KW_While while>
          cond: 
            (condition.Shell
              commands: [
                (command.Simple
                  blame_tok: <read>
                  more_env: []
                  words: [{<read>} {<host>} {<type>} {<attr>}]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          body: 
            (command.DoGroup
              left: <Id.KW_Do do>
              children: [
                (command.Case
                  case_kw: <Id.KW_Case case>
                  to_match: (case_arg.Word w:{($ Id.VSub_DollarName heading)})
                  arms_start: <Id.KW_In in>
                  arms: [
                    (CaseArm
                      left: <1>
                      pattern: (pat.Words words:[{<1>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <print>
                          more_env: []
                          words: [{<print>} {(SQ <'#'>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <print>
                          more_env: []
                          words: [{<print>} {(SQ <'# local host attributes'>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <print>
                          more_env: []
                          words: [{<print>} {(SQ <'#'>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <print>
                          more_env: []
                          words: [{<print>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <print>
                          more_env: []
                          words: [{<print>} {(SQ <'local\t\tbusy=2m\t\tpool=9'>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <print>
                          more_env: []
                          words: [{<print>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <Id.Left_SingleQuote '\''>
                      pattern: (pat.Words words:[{(SQ )} {($ Id.VSub_DollarName type)}])
                      middle: <Id.Right_CasePat _>
                      action: []
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <Id.Lit_Star '*'>
                      pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <print>
                          more_env: []
                          words: [{<print>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                  ]
                  arms_end: <Id.KW_Esac esac>
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'heading='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'heading='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'heading='> name:heading)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName type)}
                    )
                  ]
                  redirects: []
                )
                (command.Case
                  case_kw: <Id.KW_Case case>
                  to_match: (case_arg.Word w:{($ Id.VSub_DollarName host)})
                  arms_start: <Id.KW_In in>
                  arms: [
                    (CaseArm
                      left: <Id.Lit_QMark '?'>
                      pattern: 
                        (pat.Words
                          words: [
                            {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> 
                              <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_Star '*'>
                            }
                          ]
                        )
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'tab1='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'tab1='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tab1='> name:tab1)
                              op: assign_op.Equal
                              rhs: {(DQ <'\t'>)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <Id.Lit_Star '*'>
                      pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'tab1='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'tab1='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tab1='> name:tab1)
                              op: assign_op.Equal
                              rhs: {(DQ <'\t\t'>)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                  ]
                  arms_end: <Id.KW_Esac esac>
                  redirects: []
                )
                (command.Case
                  case_kw: <Id.KW_Case case>
                  to_match: (case_arg.Word w:{($ Id.VSub_DollarName type)})
                  arms_start: <Id.KW_In in>
                  arms: [
                    (CaseArm
                      left: <Id.Lit_QMark '?'>
                      pattern: 
                        (pat.Words
                          words: [
                            {<Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> 
                              <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_Star '*'>
                            }
                          ]
                        )
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'tab2='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'tab2='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tab2='> name:tab2)
                              op: assign_op.Equal
                              rhs: {(DQ <'\t'>)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                    (CaseArm
                      left: <Id.Lit_Star '*'>
                      pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'tab2='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'tab2='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tab2='> name:tab2)
                              op: assign_op.Equal
                              rhs: {(DQ <'\t\t'>)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                  ]
                  arms_end: <Id.KW_Esac esac>
                  redirects: []
                )
                (command.Simple
                  blame_tok: <print>
                  more_env: []
                  words: [
                    {<print>}
                    {($ Id.VSub_DollarName host) (DQ ($ Id.VSub_DollarName tab1)) 
                      ($ Id.VSub_DollarName type) (DQ ($ Id.VSub_DollarName tab2) ($ Id.VSub_DollarName attr))
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              right: <Id.KW_Done done>
            )
          redirects: []
        )
      ]
      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
    )
  ]
)