(CommandList
  children: [
    (C {(Lit_Other ":")} {(generate)} {(Assign_Local local)} {(host)} {(info)})
    (Case
      to_match: {($ VSub_Name "$RANDOM")}
      arms: [
        (case_arm
          pat_list: [{($ VSub_Name "$RANDOM")}]
          action: [
            (Sentence
              child: (C {(exec)} {(ksh)} {($ VSub_Number "$0")} {(DQ ($ VSub_At "$@"))})
              terminator: <Op_Semi ";">
            )
            (Sentence
              child: 
                (SimpleCommand
                  words: [{(echo)} {(DQ ($ VSub_Number "$0") (": ksh required"))}]
                  redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[116])]
                )
              terminator: <Op_Semi ";">
            )
            (C {(exit)} {(1)})
          ]
          spids: [95 96 124 -1]
        )
      ]
      spids: [89 93 126]
    )
    (C {(integer)} {(Lit_VarLike "cluster=") (5)})
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:dir) op:Equal rhs:{(.)} spids:[133])]
      spids: [133]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:file) op:Equal rhs:{(SQ )} spids:[136])]
      spids: [136]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:heading) op:Equal rhs:{(1)} spids:[138])]
      spids: [138]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:list) op:Equal rhs:{(SQ )} spids:[141])]
      spids: [141]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:rsh) op:Equal rhs:{(rsh)} spids:[143])]
      spids: [143]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:timeout) op:Equal rhs:{(90)} spids:[146])]
      spids: [146]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:verbose) op:Equal rhs:{(Lit_Other ":")} spids:[149])]
      spids: [149]
    )
    (While
      cond: [(C {(Lit_Other ":")})]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {($ VSub_Pound "$#")}
              arms: [
                (case_arm
                  pat_list: [{(0)}]
                  action: [(ControlFlow token:<ControlFlow_Break break>)]
                  spids: [165 166 170 -1]
                )
              ]
              spids: [158 162 173]
            )
            (Case
              to_match: {($ VSub_Number "$1")}
              arms: [
                (case_arm
                  pat_list: [{(-) (Lit_Other "[") (frt) (Lit_Other "]")}]
                  action: [
                    (Case
                      to_match: {($ VSub_Pound "$#")}
                      arms: [
                        (case_arm
                          pat_list: [{(1)}]
                          action: [
                            (C {(set)} {(--)} {(SQ <"-?">)})
                            (ControlFlow token:<ControlFlow_Break break>)
                          ]
                          spids: [195 196 210 -1]
                        )
                      ]
                      spids: [188 192 213]
                    )
                    (Case
                      to_match: {($ VSub_Number "$1")}
                      arms: [
                        (case_arm
                          pat_list: [{(-f)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:file)
                                  op: Equal
                                  rhs: {($ VSub_Number "$2")}
                                  spids: [226]
                                )
                              ]
                              spids: [226]
                            )
                          ]
                          spids: [223 224 229 -1]
                        )
                        (case_arm
                          pat_list: [{(-r)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:rsh)
                                  op: Equal
                                  rhs: {($ VSub_Number "$2")}
                                  spids: [235]
                                )
                              ]
                              spids: [235]
                            )
                          ]
                          spids: [232 233 238 -1]
                        )
                        (case_arm
                          pat_list: [{(-t)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:timeout)
                                  op: Equal
                                  rhs: {($ VSub_Number "$2")}
                                  spids: [244]
                                )
                              ]
                              spids: [244]
                            )
                          ]
                          spids: [241 242 247 -1]
                        )
                      ]
                      spids: [216 220 250]
                    )
                    (C {(shift)})
                  ]
                  spids: [183 187 256 -1]
                )
                (case_arm
                  pat_list: [{(-h)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:heading)
                          op: Equal
                          rhs: {(SQ )}
                          spids: [262]
                        )
                      ]
                      spids: [262]
                    )
                  ]
                  spids: [259 260 265 -1]
                )
                (case_arm
                  pat_list: [{(-n)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:list) op:Equal rhs:{(1)} spids:[271])]
                      spids: [271]
                    )
                  ]
                  spids: [268 269 275 -1]
                )
                (case_arm
                  pat_list: [{(-v)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:verbose)
                          op: Equal
                          rhs: {(SQ <"print -u2">)}
                          spids: [281]
                        )
                      ]
                      spids: [281]
                    )
                  ]
                  spids: [278 279 287 -1]
                )
                (case_arm
                  pat_list: [{(SQ <"-?">)}]
                  action: [(ControlFlow token:<ControlFlow_Break break>)]
                  spids: [291 293 298 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "[") (-) (Lit_Other "+") (Lit_Other "]") (Lit_Other "*")}]
                  action: [
                    (C {(print)} {(-u2)} 
                      {(DQ ($ VSub_Number "$0") (": ") ($ VSub_Number "$1") (": invalid option"))}
                    )
                    (C {(set)} {(--)} {(SQ <"-?">)})
                    (ControlFlow token:<ControlFlow_Break break>)
                  ]
                  spids: [301 306 332 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [(ControlFlow token:<ControlFlow_Break break>)]
                  spids: [335 336 341 -1]
                )
              ]
              spids: [176 180 344]
            )
            (C {(shift)})
          ]
          spids: [156 349]
        )
    )
    (Case
      to_match: {($ VSub_Number "$1")}
      arms: [
        (case_arm
          pat_list: [{(SQ <"-?">)}]
          action: [
            (Sentence
              child: 
                (C {(print)} {(-u2)} 
                  {
                    (DQ ("Usage: ") ($ VSub_Number "$0") 
                      (" [-hnv] [-f share-file] [-r rsh-path] [-t timeout] [host ...]")
                    )
                  }
                )
              terminator: <Op_Semi ";">
            )
            (C {(exit)} {(1)})
          ]
          spids: [358 360 377 -1]
        )
      ]
      spids: [351 355 379]
    )
    (Case
      to_match: {($ VSub_Name "$file")}
      arms: [
        (case_arm
          pat_list: [{(DQ )}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ifs)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name IFS>
                        suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(SQ <"\n"> <"\t ">)})
                        spids: [392 399]
                      )
                    }
                  spids: [391]
                )
              ]
              spids: [391]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:IFS) op:Equal rhs:{(Lit_Other ":")} spids:[402])]
              spids: [402]
            )
            (C {(set)} {(DQ )} {($ VSub_Name "$PATH")} {(DQ (--))} {(DQ ($ VSub_At "$@"))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:IFS)
                  op: Equal
                  rhs: {($ VSub_Name "$ifs")}
                  spids: [422]
                )
              ]
              spids: [422]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:f) op:Equal rhs:{(lib/cs/share)} spids:[426])]
              spids: [426]
            )
            (While
              cond: [(C {(Lit_Other ":")})]
              body: 
                (DoGroup
                  children: [
                    (C {(shift)})
                    (Case
                      to_match: {($ VSub_Number "$1")}
                      arms: [
                        (case_arm
                          pat_list: [{(DQ )}]
                          action: [(ControlFlow token:<ControlFlow_Continue continue>)]
                          spids: [-1 449 453 -1]
                        )
                        (case_arm
                          pat_list: [{(--)}]
                          action: [(ControlFlow token:<ControlFlow_Break break>)]
                          spids: [456 457 461 -1]
                        )
                      ]
                      spids: [440 444 464]
                    )
                    (Case
                      to_match: {($ VSub_Name "$file")}
                      arms: [
                        (case_arm
                          pat_list: [{(DQ )}]
                          action: [
                            (AndOr
                              children: [
                                (C {(test)} {(-f)} 
                                  {
                                    (BracedVarSub
                                      token: <VSub_Number 1>
                                      suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(bin)})
                                      spids: [482 486]
                                    ) ($ VSub_Name "$f")
                                  }
                                )
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:file)
                                      op: Equal
                                      rhs: 
                                        {
                                          (BracedVarSub
                                            token: <VSub_Number 1>
                                            suffix_op: 
                                              (StringUnary
                                                op_id: VOp1_Percent
                                                arg_word: {(bin)}
                                              )
                                            spids: [492 496]
                                          ) ($ VSub_Name "$f")
                                        }
                                      spids: [491]
                                    )
                                  ]
                                  spids: [491]
                                )
                              ]
                              op_id: Op_DAmp
                            )
                          ]
                          spids: [-1 476 499 -1]
                        )
                      ]
                      spids: [467 471 502]
                    )
                  ]
                  spids: [435 505]
                )
            )
            (C {(shift)})
            (Case
              to_match: {($ VSub_Name "$file")}
              arms: [
                (case_arm
                  pat_list: [{(DQ )}]
                  action: [
                    (Sentence
                      child: 
                        (C {(print)} {(-u2)} {($ VSub_Number "$0") (Lit_Other ":")} 
                          {($ VSub_Name "$f") (Lit_Other ":")} {(not)} {(found)}
                        )
                      terminator: <Op_Semi ";">
                    )
                    (C {(exit)} {(1)})
                  ]
                  spids: [-1 520 541 -1]
                )
              ]
              spids: [511 515 544]
            )
          ]
          spids: [-1 389 547 -1]
        )
        (case_arm
          pat_list: [{(Lit_Other "*")}]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(KW_Bang "!")} {(-f)} {($ VSub_Name "$file")})]
                  action: [
                    (Sentence
                      child: 
                        (C {(print)} {(-u2)} 
                          {
                            (DQ ($ VSub_Number "$0") (": ") ($ VSub_Name "$file") 
                              (": cannot read share file")
                            )
                          }
                        )
                      terminator: <Op_Semi ";">
                    )
                    (C {(exit)} {(1)})
                  ]
                  spids: [-1 563]
                )
              ]
              spids: [-1 582]
            )
          ]
          spids: [549 550 585 -1]
        )
      ]
      spids: [381 385 587]
    )
    (C {(print)} {(-u2)} 
      {
        (DQ ($ VSub_Number "$0") (": warning: ") ($ VSub_Name "$rsh") 
          (" may hang on some hosts -- monitor the progress with the -v option or ps ") ($ VSub_Dollar "$$")
        )
      }
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:server) op:Equal rhs:{(SQ )} spids:[601])]
      spids: [601]
    )
    (ForEach
      iter_name: host
      iter_words: [
        {
          (CommandSubPart
            command_list: 
              (CommandList
                children: [(C {(egrep)} {(-v)} {(SQ <"^#">)} {($ VSub_Name "$file")})]
              )
            left_token: <Left_CommandSub "$(">
            spids: [609 619]
          )
        }
      ]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {($ VSub_Name "$server")}
              arms: [
                (case_arm
                  pat_list: [{(DQ )}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:server)
                          op: Equal
                          rhs: {($ VSub_Name "$host")}
                          spids: [634]
                        )
                      ]
                      spids: [634]
                    )
                  ]
                  spids: [-1 632 637 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:server)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name "$server") ("|") ($ VSub_Name "$host"))}
                          spids: [643]
                        )
                      ]
                      spids: [643]
                    )
                  ]
                  spids: [640 641 650 -1]
                )
              ]
              spids: [623 627 653]
            )
          ]
          spids: [621 655]
        )
      spids: [608 -1]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:hostname)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(package)} {(host)} {(name)})])
                left_token: <Left_CommandSub "$(">
                spids: [658 664]
              )
            }
          spids: [657]
        )
      ]
      spids: [657]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:hostname)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name hostname>
                suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{(".*")})
                spids: [667 671]
              )
            }
          spids: [666]
        )
      ]
      spids: [666]
    )
    (Case
      to_match: {($ VSub_Pound "$#")}
      arms: [
        (case_arm
          pat_list: [{(0)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:domain)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (BraceGroup
                                    children: [(C {(cat)} {(/etc/hosts)}) (C {(ypcat)} {(hosts)})]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [701]
                                      )
                                    ]
                                    spids: [686]
                                  )
                                  (C {(egrep)} 
                                    {
                                      (DQ ("[^#].*[ \t]") ($ VSub_Name "$hostname") ("(") 
                                        (EscapedLiteralPart
                                          token: <Lit_EscapedChar "\\$">
                                        ) ("|[. \t])")
                                      )
                                    }
                                  )
                                  (C {(sed)} {(-e)} {(SQ <"1!d">)} {(-e)} {(SQ <"s/^[^ \t]*//">)} {(-e)} 
                                    {(SQ <"s/[^.]*.//">)} {(-e)} {(SQ <"s/[ \t].*//">)}
                                  )
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [683 747]
                      )
                    }
                  spids: [682]
                )
              ]
              spids: [682]
            )
            (C {(set)} {(--)} 
              {
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [
                        (Pipeline
                          children: [
                            (BraceGroup
                              children: [
                                (C {(print)} {(DQ ($ VSub_Name "$hostname"))})
                                (C {(egrep)} {(-v)} {(SQ <"^#">)} {($ VSub_Name "$file")})
                                (Pipeline
                                  children: [(C {(ruptime)}) (C {(fgrep)} {(-v)} {(SQ <"no hosts">)})]
                                  negated: False
                                )
                                (Pipeline
                                  children: [
                                    (BraceGroup
                                      children: [
                                        (ForEach
                                          iter_name: i
                                          iter_words: [{(/etc/resolv.conf)} {(/usr/etc/resolv.conf)}]
                                          do_arg_iter: False
                                          body: 
                                            (DoGroup
                                              children: [
                                                (If
                                                  arms: [
                                                    (if_arm
                                                      cond: [(C {(test)} {(-f)} {($ VSub_Name "$i")})]
                                                      action: [
                                                        (Pipeline
                                                          children: [
                                                            (C {(echo)} 
                                                              {
                                                                (DQ ("ls -t A ") 
                                                                  (CommandSubPart
                                                                    command_list: 
                                                                      (CommandList
                                                                        children: [
                                                                          (C {(sed)} {(-e)} 
                                                                            {(SQ <"/^domain/!d">)} {(-e)} {(SQ <"s/.*[ ][ \t]*//">)} {($ VSub_Name "$i")}
                                                                          )
                                                                        ]
                                                                      )
                                                                    left_token: 
                                                                      <Left_CommandSub "$(">
                                                                    spids: [822 838]
                                                                  )
                                                                )
                                                              }
                                                            )
                                                            (C {(nslookup)})
                                                          ]
                                                          negated: False
                                                        )
                                                        (ControlFlow
                                                          token: <ControlFlow_Break break>
                                                        )
                                                      ]
                                                      spids: [-1 816]
                                                    )
                                                  ]
                                                  spids: [-1 849]
                                                )
                                              ]
                                              spids: [805 852]
                                            )
                                          spids: [799 -1]
                                        )
                                        (C {(cat)} {(/etc/hosts)})
                                        (C {(ypcat)} {(hosts)})
                                      ]
                                      spids: [791]
                                    )
                                    (C {(fgrep)} {(DQ (.) ($ VSub_Name "$domain"))})
                                    (C {(awk)} {(SQ <"{print $2}">)})
                                  ]
                                  negated: False
                                )
                              ]
                              redirects: [
                                (Redir
                                  op_id: Redir_Great
                                  fd: 2
                                  arg_word: {(/dev/null)}
                                  spids: [889]
                                )
                              ]
                              spids: [757]
                            )
                            (C {(sed)} {(-e)} {(SQ <"s/[. \t].*//">)} {(-e)} 
                              {(SQ <"/^[a-zA-Z].*[a-zA-Z0-9]$/!d">)}
                            )
                            (C {(sort)} {(-u)})
                          ]
                          negated: False
                        )
                      ]
                    )
                  left_token: <Left_CommandSub "$(">
                  spids: [754 917]
                )
              }
            )
            (Case
              to_match: {($ VSub_Name "$list")}
              arms: [
                (case_arm
                  pat_list: [{(Lit_Other "?") (Lit_Other "*")}]
                  action: [(C {(print)} {(Lit_VarLike "domain=") ($ VSub_Name "$domain")})]
                  spids: [927 929 937 -1]
                )
              ]
              spids: [920 924 940]
            )
          ]
          spids: [679 680 943 -1]
        )
      ]
      spids: [673 677 945]
    )
    (Case
      to_match: {($ VSub_Name "$list")}
      arms: [
        (case_arm
          pat_list: [{(Lit_Other "?") (Lit_Other "*")}]
          action: [
            (Sentence
              child: (C {(print)} {(Lit_VarLike "hosts=") (SQ <"\"">) ($ VSub_Star "$*") (SQ <"\"">)})
              terminator: <Op_Semi ";">
            )
            (C {(exit)})
          ]
          spids: [953 955 971 -1]
        )
      ]
      spids: [947 951 973]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:hosts) op:Equal rhs:{(SQ )} spids:[975])]
      spids: [975]
    )
    (Pipeline
      children: [
        (ForEach
          iter_name: host
          do_arg_iter: True
          body: 
            (DoGroup
              children: [
                (Case
                  to_match: {($ VSub_Name "$host")}
                  arms: [
                    (case_arm
                      pat_list: [{(Assign_Local local)} {(localhost)}]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:host)
                              op: Equal
                              rhs: {($ VSub_Name "$hostname")}
                              spids: [995]
                            )
                          ]
                          spids: [995]
                        )
                      ]
                      spids: [990 993 998 -1]
                    )
                  ]
                  spids: [983 987 1001]
                )
                (Case
                  to_match: {(DQ (" ") ($ VSub_Name "$hosts") (" "))}
                  arms: [
                    (case_arm
                      pat_list: [
                        {(Lit_Other "*") (DQ (" ") ($ VSub_Name "$host") (" ")) (Lit_Other "*")}
                      ]
                      action: [(ControlFlow token:<ControlFlow_Continue continue>)]
                      spids: [1015 1022 1026 -1]
                    )
                  ]
                  spids: [1004 1012 1029]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:hosts)
                      op: Equal
                      rhs: {(DQ ($ VSub_Name "$hosts") (" ") ($ VSub_Name "$host"))}
                      spids: [1032]
                    )
                  ]
                  spids: [1032]
                )
                (C {($ VSub_Name "$verbose")} {(-n)} {(DQ ($ VSub_Name "$host") (" "))})
                (Case
                  to_match: {($ VSub_Name "$host")}
                  arms: [
                    (case_arm
                      pat_list: [{($ VSub_Name "$hostname")}]
                      action: [(C {(package)} {(host)} {(name)} {(type)} {(cpu)} {(rating)})]
                      spids: [1057 1058 1074 -1]
                    )
                    (case_arm
                      pat_list: [{(Lit_Other "*")}]
                      action: [
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (SimpleCommand
                                  words: [{(ping)} {(-c)} {(1)} {(-w)} {(4)} {($ VSub_Name "$host")}]
                                  redirects: [
                                    (Redir
                                      op_id: Redir_Great
                                      fd: -1
                                      arg_word: {(/dev/null)}
                                      spids: [1094]
                                    )
                                    (Redir
                                      op_id: Redir_GreatAnd
                                      fd: 2
                                      arg_word: {(1)}
                                      spids: [1097]
                                    )
                                  ]
                                )
                              ]
                              action: [
                                (Sentence
                                  child: 
                                    (C {($ VSub_Name "$rsh")} {($ VSub_Name "$host")} {(bin/package)} 
                                      {(host)} {(name)} {(type)} {(cpu)} {(rating)}
                                    )
                                  terminator: <Op_Amp "&">
                                )
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:info)
                                      op: Equal
                                      rhs: {($ VSub_Bang "$!")}
                                      spids: [1122]
                                    )
                                  ]
                                  spids: [1122]
                                )
                                (Sentence
                                  child: 
                                    (BraceGroup
                                      children: [
                                        (C {(sleep)} {($ VSub_Name "$timeout")})
                                        (C {(kill)} {(-9)} {($ VSub_Name "$info")})
                                      ]
                                      spids: [1126]
                                    )
                                  terminator: <Op_Amp "&">
                                )
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:time)
                                      op: Equal
                                      rhs: {($ VSub_Bang "$!")}
                                      spids: [1146]
                                    )
                                  ]
                                  spids: [1146]
                                )
                                (C {(wait)} {($ VSub_Name "$info")})
                                (C {(kill)} {(-9)} {($ VSub_Name "$time")})
                              ]
                              spids: [-1 1101]
                            )
                          ]
                          spids: [-1 1162]
                        )
                      ]
                      spids: [1077 1078 1165 -1]
                    )
                  ]
                  redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[1170])]
                  spids: [1050 1054 1168]
                )
              ]
              spids: [981 1173]
            )
          spids: [-1 -1]
        )
        (While
          cond: [(C {(read)} {(host)} {(type)} {(cpu)} {(rating)})]
          body: 
            (DoGroup
              children: [
                (C {($ VSub_Name "$verbose")} {(Lit_VarLike "type=") ($ VSub_Name "$type")} 
                  {(Lit_VarLike "cpu=") ($ VSub_Name "$cpu")} {(Lit_VarLike "rating=") ($ VSub_Name "$rating")}
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:host)
                      op: Equal
                      rhs: 
                        {
                          (BracedVarSub
                            token: <VSub_Name host>
                            suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{(".*")})
                            spids: [1204 1208]
                          )
                        }
                      spids: [1203]
                    )
                  ]
                  spids: [1203]
                )
                (C {(eval)} 
                  {
                    (DQ ("case '") ($ VSub_Name "$host") ("' in\n") ("\t") ($ VSub_Name "$server") 
                      (")\tidle= ;;\n") ("\t*)\t\tidle=15m ;;\n") ("\tesac")
                    )
                  }
                )
                (C {(print)} 
                  {($ VSub_Name "$host") (DQ ("\t")) (Lit_VarLike "type=") ($ VSub_Name "$type") 
                    (DQ ("\t")) (${ VSub_Name rating) 
                    (BracedVarSub
                      token: <VSub_Name idle>
                      suffix_op: 
                        (StringUnary
                          op_id: VTest_ColonPlus
                          arg_word: {(DQ ("\tidle=") ($ VSub_Name "$idle"))}
                        )
                      spids: [1239 1246]
                    ) 
                    (BracedVarSub
                      token: <VSub_Name cpu>
                      suffix_op: 
                        (StringUnary
                          op_id: VTest_ColonPlus
                          arg_word: {(DQ ("\tcpu=") ($ VSub_Name "$cpu"))}
                        )
                      spids: [1247 1254]
                    )
                  }
                )
              ]
              spids: [1189 1256]
            )
        )
        (C {(sort)} {(-b)} {(Lit_Other "+") (2n)} {(-3)})
        (BraceGroup
          children: [
            (C {(integer)} {(v)} {(c)} {(d)} {(i)} {(j)} {(k)} {(n)})
            (DParen
              child: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:n)
                  right: (ArithWord w:{(Lit_Digits 0)})
                )
            )
            (While
              cond: [(C {(read)} {(host)} {(type)} {(rate)} {(attr)})]
              body: 
                (DoGroup
                  children: [
                    (DParen
                      child: 
                        (BinaryAssign
                          op_id: Arith_Equal
                          left: (LhsName name:n)
                          right: 
                            (ArithBinary
                              op_id: Arith_Plus
                              left: (ArithVarRef name:n)
                              right: (ArithWord w:{(Lit_Digits 1)})
                            )
                        )
                    )
                    (C {(h) (Lit_Other "[") (n) (Lit_Other "]") (Lit_Other "=") ($ VSub_Name "$host")})
                    (C {(t) (Lit_Other "[") (n) (Lit_Other "]") (Lit_Other "=") ($ VSub_Name "$type")})
                    (C {(v) (Lit_Other "[") (n) (Lit_Other "]") (Lit_Other "=") ($ VSub_Name "$rate")})
                    (C {(a) (Lit_Other "[") (n) (Lit_Other "]") (Lit_Other "=") ($ VSub_Name "$attr")})
                  ]
                  spids: [1312 1356]
                )
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:c) op:Equal rhs:{(1)} spids:[1359])]
              spids: [1359]
            )
            (While
              cond: [(DParen child:(ArithVarRef name:c))]
              body: 
                (DoGroup
                  children: [
                    (DParen
                      child: 
                        (BinaryAssign
                          op_id: Arith_Equal
                          left: (LhsName name:c)
                          right: (ArithWord w:{(Lit_Digits 0)})
                        )
                    )
                    (DParen
                      child: 
                        (BinaryAssign
                          op_id: Arith_Equal
                          left: (LhsName name:i)
                          right: (ArithWord w:{(Lit_Digits 1)})
                        )
                    )
                    (While
                      cond: [
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_Less
                              left: (ArithVarRef name:i)
                              right: (ArithVarRef name:n)
                            )
                        )
                      ]
                      body: 
                        (DoGroup
                          children: [
                            (DParen
                              child: 
                                (BinaryAssign
                                  op_id: Arith_Equal
                                  left: (LhsName name:d)
                                  right: 
                                    (ArithBinary
                                      op_id: Arith_Minus
                                      left: 
                                        (ArithBinary
                                          op_id: Arith_LBracket
                                          left: (ArithVarRef name:v)
                                          right: 
                                            (ArithBinary
                                              op_id: Arith_Plus
                                              left: (ArithVarRef name:i)
                                              right: (ArithWord w:{(Lit_Digits 1)})
                                            )
                                        )
                                      right: 
                                        (ArithBinary
                                          op_id: Arith_LBracket
                                          left: (ArithVarRef name:v)
                                          right: (ArithVarRef name:i)
                                        )
                                    )
                                )
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (DParen
                                      child: 
                                        (ArithBinary
                                          op_id: Arith_DAmp
                                          left: 
                                            (ArithBinary
                                              op_id: Arith_Great
                                              left: (ArithVarRef name:d)
                                              right: (ArithWord w:{(Lit_Digits 1)})
                                            )
                                          right: 
                                            (ArithBinary
                                              op_id: Arith_Less
                                              left: (ArithVarRef name:d)
                                              right: (ArithVarRef name:cluster)
                                            )
                                        )
                                    )
                                  ]
                                  action: [
                                    (DParen
                                      child: 
                                        (BinaryAssign
                                          op_id: Arith_Equal
                                          left: (LhsName name:d)
                                          right: 
                                            (ArithBinary
                                              op_id: Arith_Slash
                                              left: (ArithVarRef name:d)
                                              right: (ArithWord w:{(Lit_Digits 2)})
                                            )
                                        )
                                    )
                                    (DParen
                                      child: 
                                        (BinaryAssign
                                          op_id: Arith_Equal
                                          left: (LhsIndexedName name:v index:(ArithVarRef name:i))
                                          right: 
                                            (ArithBinary
                                              op_id: Arith_Plus
                                              left: 
                                                (ArithBinary
                                                  op_id: Arith_LBracket
                                                  left: (ArithVarRef name:v)
                                                  right: (ArithVarRef name:i)
                                                )
                                              right: (ArithVarRef name:d)
                                            )
                                        )
                                    )
                                    (DParen
                                      child: 
                                        (BinaryAssign
                                          op_id: Arith_Equal
                                          left: 
                                            (LhsIndexedName
                                              name: v
                                              index: 
                                                (ArithBinary
                                                  op_id: Arith_Plus
                                                  left: (ArithVarRef name:i)
                                                  right: (ArithWord w:{(Lit_Digits 1)})
                                                )
                                            )
                                          right: 
                                            (ArithBinary
                                              op_id: Arith_Minus
                                              left: 
                                                (ArithBinary
                                                  op_id: Arith_LBracket
                                                  left: (ArithVarRef name:v)
                                                  right: 
                                                    (ArithBinary
                                                      op_id: Arith_Plus
                                                      left: (ArithVarRef name:i)
                                                      right: (ArithWord w:{(Lit_Digits 1)})
                                                    )
                                                )
                                              right: (ArithVarRef name:d)
                                            )
                                        )
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:c)
                                          op: Equal
                                          rhs: {(1)}
                                          spids: [1481]
                                        )
                                      ]
                                      spids: [1481]
                                    )
                                  ]
                                  spids: [-1 1433]
                                )
                              ]
                              spids: [-1 1485]
                            )
                            (DParen
                              child: 
                                (BinaryAssign
                                  op_id: Arith_Equal
                                  left: (LhsName name:i)
                                  right: 
                                    (ArithBinary
                                      op_id: Arith_Plus
                                      left: (ArithVarRef name:i)
                                      right: (ArithWord w:{(Lit_Digits 1)})
                                    )
                                )
                            )
                          ]
                          spids: [1399 1498]
                        )
                    )
                  ]
                  spids: [1371 1501]
                )
            )
            (DParen
              child: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: (ArithWord w:{(Lit_Digits 1)})
                )
            )
            (While
              cond: [
                (DParen
                  child: 
                    (ArithBinary
                      op_id: Arith_LessEqual
                      left: (ArithVarRef name:i)
                      right: (ArithVarRef name:n)
                    )
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (DParen
                      child: 
                        (BinaryAssign
                          op_id: Arith_Equal
                          left: (LhsName name:c)
                          right: 
                            (ArithBinary
                              op_id: Arith_LBracket
                              left: (ArithVarRef name:v)
                              right: (ArithVarRef name:i)
                            )
                        )
                    )
                    (DParen
                      child: 
                        (BinaryAssign
                          op_id: Arith_Equal
                          left: (LhsName name:j)
                          right: 
                            (ArithBinary
                              op_id: Arith_Plus
                              left: (ArithVarRef name:i)
                              right: (ArithWord w:{(Lit_Digits 1)})
                            )
                        )
                    )
                    (DParen
                      child: 
                        (BinaryAssign
                          op_id: Arith_Equal
                          left: (LhsName name:k)
                          right: (ArithWord w:{(Lit_Digits 1)})
                        )
                    )
                    (While
                      cond: [
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_LessEqual
                              left: (ArithVarRef name:j)
                              right: (ArithVarRef name:n)
                            )
                        )
                      ]
                      body: 
                        (DoGroup
                          children: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (DParen
                                      child: 
                                        (ArithBinary
                                          op_id: Arith_DPipe
                                          left: 
                                            (ArithBinary
                                              op_id: Arith_Great
                                              left: 
                                                (ArithBinary
                                                  op_id: Arith_Minus
                                                  left: 
                                                    (ArithBinary
                                                      op_id: Arith_LBracket
                                                      left: (ArithVarRef name:v)
                                                      right: (ArithVarRef name:j)
                                                    )
                                                  right: 
                                                    (ArithBinary
                                                      op_id: Arith_LBracket
                                                      left: (ArithVarRef name:v)
                                                      right: 
                                                        (ArithBinary
                                                          op_id: Arith_Minus
                                                          left: (ArithVarRef name:j)
                                                          right: (ArithWord w:{(Lit_Digits 1)})
                                                        )
                                                    )
                                                )
                                              right: (ArithWord w:{(Lit_Digits 1)})
                                            )
                                          right: 
                                            (ArithBinary
                                              op_id: Arith_Great
                                              left: 
                                                (ArithBinary
                                                  op_id: Arith_Minus
                                                  left: 
                                                    (ArithBinary
                                                      op_id: Arith_LBracket
                                                      left: (ArithVarRef name:v)
                                                      right: (ArithVarRef name:j)
                                                    )
                                                  right: 
                                                    (ArithBinary
                                                      op_id: Arith_LBracket
                                                      left: (ArithVarRef name:v)
                                                      right: (ArithVarRef name:i)
                                                    )
                                                )
                                              right: (ArithVarRef name:cluster)
                                            )
                                        )
                                    )
                                  ]
                                  action: [(ControlFlow token:<ControlFlow_Break break>)]
                                  spids: [-1 1601]
                                )
                              ]
                              spids: [-1 1606]
                            )
                            (DParen
                              child: 
                                (BinaryAssign
                                  op_id: Arith_Equal
                                  left: (LhsName name:c)
                                  right: 
                                    (ArithBinary
                                      op_id: Arith_Plus
                                      left: (ArithVarRef name:c)
                                      right: 
                                        (ArithBinary
                                          op_id: Arith_LBracket
                                          left: (ArithVarRef name:v)
                                          right: (ArithVarRef name:j)
                                        )
                                    )
                                )
                            )
                            (DParen
                              child: 
                                (BinaryAssign
                                  op_id: Arith_Equal
                                  left: (LhsName name:k)
                                  right: 
                                    (ArithBinary
                                      op_id: Arith_Plus
                                      left: (ArithVarRef name:k)
                                      right: (ArithWord w:{(Lit_Digits 1)})
                                    )
                                )
                            )
                            (DParen
                              child: 
                                (BinaryAssign
                                  op_id: Arith_Equal
                                  left: (LhsName name:j)
                                  right: 
                                    (ArithBinary
                                      op_id: Arith_Plus
                                      left: (ArithVarRef name:j)
                                      right: (ArithWord w:{(Lit_Digits 1)})
                                    )
                                )
                            )
                          ]
                          spids: [1563 1642]
                        )
                    )
                    (DParen
                      child: 
                        (BinaryAssign
                          op_id: Arith_Equal
                          left: (LhsName name:c)
                          right: 
                            (ArithBinary
                              op_id: Arith_Slash
                              left: (ArithVarRef name:c)
                              right: (ArithVarRef name:k)
                            )
                        )
                    )
                    (DParen
                      child: 
                        (BinaryAssign
                          op_id: Arith_Equal
                          left: (LhsName name:d)
                          right: 
                            (ArithBinary
                              op_id: Arith_Percent
                              left: (ArithVarRef name:c)
                              right: (ArithWord w:{(Lit_Digits 10)})
                            )
                        )
                    )
                    (DParen
                      child: 
                        (BinaryAssign
                          op_id: Arith_Equal
                          left: (LhsName name:c)
                          right: 
                            (ArithBinary
                              op_id: Arith_Minus
                              left: (ArithVarRef name:c)
                              right: (ArithVarRef name:d)
                            )
                        )
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (DParen
                              child: 
                                (ArithBinary
                                  op_id: Arith_Great
                                  left: (ArithVarRef name:d)
                                  right: (ArithWord w:{(Lit_Digits 6)})
                                )
                            )
                          ]
                          action: [
                            (DParen
                              child: 
                                (BinaryAssign
                                  op_id: Arith_Equal
                                  left: (LhsName name:c)
                                  right: 
                                    (ArithBinary
                                      op_id: Arith_Plus
                                      left: (ArithVarRef name:c)
                                      right: (ArithWord w:{(Lit_Digits 10)})
                                    )
                                )
                            )
                          ]
                          spids: [-1 1685]
                        )
                        (if_arm
                          cond: [
                            (DParen
                              child: 
                                (ArithBinary
                                  op_id: Arith_Great
                                  left: (ArithVarRef name:d)
                                  right: (ArithWord w:{(Lit_Digits 3)})
                                )
                            )
                          ]
                          action: [
                            (DParen
                              child: 
                                (BinaryAssign
                                  op_id: Arith_Equal
                                  left: (LhsName name:c)
                                  right: 
                                    (ArithBinary
                                      op_id: Arith_Plus
                                      left: (ArithVarRef name:c)
                                      right: (ArithWord w:{(Lit_Digits 5)})
                                    )
                                )
                            )
                          ]
                          spids: [1697 1707]
                        )
                      ]
                      spids: [-1 1719]
                    )
                    (While
                      cond: [
                        (DParen
                          child: 
                            (ArithBinary
                              op_id: Arith_Less
                              left: (ArithVarRef name:i)
                              right: (ArithVarRef name:j)
                            )
                        )
                      ]
                      body: 
                        (DoGroup
                          children: [
                            (DParen
                              child: 
                                (BinaryAssign
                                  op_id: Arith_Equal
                                  left: (LhsIndexedName name:v index:(ArithVarRef name:i))
                                  right: (ArithVarRef name:c)
                                )
                            )
                            (DParen
                              child: 
                                (BinaryAssign
                                  op_id: Arith_Equal
                                  left: (LhsName name:i)
                                  right: 
                                    (ArithBinary
                                      op_id: Arith_Plus
                                      left: (ArithVarRef name:i)
                                      right: (ArithWord w:{(Lit_Digits 1)})
                                    )
                                )
                            )
                          ]
                          spids: [1732 1755]
                        )
                    )
                  ]
                  spids: [1522 1758]
                )
            )
            (DParen
              child: 
                (BinaryAssign
                  op_id: Arith_Equal
                  left: (LhsName name:i)
                  right: (ArithWord w:{(Lit_Digits 1)})
                )
            )
            (While
              cond: [
                (DParen
                  child: 
                    (ArithBinary
                      op_id: Arith_LessEqual
                      left: (ArithVarRef name:i)
                      right: (ArithVarRef name:n)
                    )
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:rate)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name v>
                                bracket_op: (ArrayIndex expr:(ArithVarRef name:i))
                                spids: [1782 1787]
                              )
                            }
                          spids: [1781]
                        )
                      ]
                      spids: [1781]
                    )
                    (C {(print)} 
                      {
                        (BracedVarSub
                          token: <VSub_Name h>
                          bracket_op: (ArrayIndex expr:(ArithVarRef name:i))
                          spids: [1792 1797]
                        )
                      } 
                      {
                        (BracedVarSub
                          token: <VSub_Name t>
                          bracket_op: (ArrayIndex expr:(ArithVarRef name:i))
                          spids: [1799 1804]
                        )
                      } 
                      {(Lit_VarLike "rating=") 
                        (BracedVarSub
                          token: <VSub_Name v>
                          bracket_op: (ArrayIndex expr:(ArithVarRef name:i))
                          spids: [1807 1812]
                        ) 
                        (DQ ("\t") 
                          (BracedVarSub
                            token: <VSub_Name a>
                            bracket_op: (ArrayIndex expr:(ArithVarRef name:i))
                            spids: [1815 1820]
                          )
                        )
                      }
                    )
                    (DParen
                      child: 
                        (BinaryAssign
                          op_id: Arith_Equal
                          left: (LhsName name:i)
                          right: 
                            (ArithBinary
                              op_id: Arith_Plus
                              left: (ArithVarRef name:i)
                              right: (ArithWord w:{(Lit_Digits 1)})
                            )
                        )
                    )
                  ]
                  spids: [1779 1834]
                )
            )
          ]
          spids: [1271]
        )
        (C {(sort)} {(-b)} {(Lit_Other "+") (1)} {(-2)} {(Lit_Other "+") (2.7n)} {(-3)} 
          {(Lit_Other "+") (0)} {(-1)}
        )
        (While
          cond: [(C {(read)} {(host)} {(type)} {(attr)})]
          body: 
            (DoGroup
              children: [
                (Case
                  to_match: {($ VSub_Name "$heading")}
                  arms: [
                    (case_arm
                      pat_list: [{(1)}]
                      action: [
                        (C {(print)} {(SQ <"#">)})
                        (C {(print)} {(SQ <"# local host attributes">)})
                        (C {(print)} {(SQ <"#">)})
                        (C {(print)})
                        (C {(print)} {(SQ <"local\t\tbusy=2m\t\tpool=9">)})
                        (C {(print)})
                      ]
                      spids: [1880 1881 1917 -1]
                    )
                    (case_arm
                      pat_list: [{(SQ )} {($ VSub_Name "$type")}]
                      spids: [-1 1924 1927 -1]
                    )
                    (case_arm
                      pat_list: [{(Lit_Other "*")}]
                      action: [(C {(print)})]
                      spids: [1930 1931 1936 -1]
                    )
                  ]
                  spids: [1873 1877 1939]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:heading)
                      op: Equal
                      rhs: {($ VSub_Name "$type")}
                      spids: [1942]
                    )
                  ]
                  spids: [1942]
                )
                (Case
                  to_match: {($ VSub_Name "$host")}
                  arms: [
                    (case_arm
                      pat_list: [
                        {(Lit_Other "?") (Lit_Other "?") (Lit_Other "?") (Lit_Other "?") 
                          (Lit_Other "?") (Lit_Other "?") (Lit_Other "?") (Lit_Other "?") (Lit_Other "*")
                        }
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:tab1)
                              op: Equal
                              rhs: {(DQ ("\t"))}
                              spids: [1965]
                            )
                          ]
                          spids: [1965]
                        )
                      ]
                      spids: [1953 1962 1971 -1]
                    )
                    (case_arm
                      pat_list: [{(Lit_Other "*")}]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:tab1)
                              op: Equal
                              rhs: {(DQ ("\t\t"))}
                              spids: [1977]
                            )
                          ]
                          spids: [1977]
                        )
                      ]
                      spids: [1974 1975 1983 -1]
                    )
                  ]
                  spids: [1946 1950 1986]
                )
                (Case
                  to_match: {($ VSub_Name "$type")}
                  arms: [
                    (case_arm
                      pat_list: [
                        {(Lit_Other "?") (Lit_Other "?") (Lit_Other "?") (Lit_Other "?") 
                          (Lit_Other "?") (Lit_Other "?") (Lit_Other "?") (Lit_Other "?") (Lit_Other "*")
                        }
                      ]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:tab2)
                              op: Equal
                              rhs: {(DQ ("\t"))}
                              spids: [2008]
                            )
                          ]
                          spids: [2008]
                        )
                      ]
                      spids: [1996 2005 2014 -1]
                    )
                    (case_arm
                      pat_list: [{(Lit_Other "*")}]
                      action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:tab2)
                              op: Equal
                              rhs: {(DQ ("\t\t"))}
                              spids: [2020]
                            )
                          ]
                          spids: [2020]
                        )
                      ]
                      spids: [2017 2018 2026 -1]
                    )
                  ]
                  spids: [1989 1993 2029]
                )
                (C {(print)} 
                  {($ VSub_Name "$host") (DQ ($ VSub_Name "$tab1")) ($ VSub_Name "$type") 
                    (DQ ($ VSub_Name "$tab2") ($ VSub_Name "$attr"))
                  }
                )
              ]
              spids: [1871 2044]
            )
        )
      ]
      negated: False
    )
  ]
)