(command.CommandList
  children: [
    (C {<set>} {<-e>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DOCKER_ISSUE_URL)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name DOCKER_ISSUE_URL>
                suffix_op: 
                  (suffix_op.Unary
                    tok: <Id.VTest_ColonHyphen ':-'>
                    arg_word: {(DQ <'https://github.com/docker/docker/issues/new'>)}
                  )
              )
            }
          spids: [16]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DOCKER_ISSUE_NAME_PREFIX)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name DOCKER_ISSUE_NAME_PREFIX>
                suffix_op: 
                  (suffix_op.Unary
                    tok: <Id.VTest_ColonHyphen ':-'>
                    arg_word: {(DQ <'Report: '>)}
                  )
              )
            }
          spids: [25]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DOCKER)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name DOCKER>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{(DQ <docker>)})
              )
            }
          spids: [34]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DOCKER_COMMAND)
          op: assign_op.Equal
          rhs: {(DQ (${ Id.VSub_Name DOCKER))}
          spids: [43]
        )
      ]
    )
    (C {<export>} {<DOCKER_COMMAND>})
    (command.ShFunction
      name: urlencode
      body: 
        (BraceGroup
          children: [
            (C {<local>} 
              {<Id.Lit_VarLike 'length='> 
                (DQ (braced_var_sub token:<Id.VSub_Number 1> prefix_op:(Id.VSub_Pound)))
              }
            )
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: <Id.Lit_ArithVarLike i>
                  right: {<Id.Lit_Digits 0>}
                )
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_Less
                  left: <Id.Lit_ArithVarLike i>
                  right: <Id.Lit_ArithVarLike length>
                )
              update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>)
              body: 
                (command.DoGroup
                  children: [
                    (C {<local>} 
                      {<Id.Lit_VarLike 'c='> 
                        (DQ 
                          (braced_var_sub
                            token: <Id.VSub_Number 1>
                            suffix_op: 
                              (suffix_op.Slice
                                begin: <Id.Lit_ArithVarLike i>
                                length: {<Id.Lit_Digits 1>}
                              )
                          )
                        )
                      }
                    )
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$c')}
                      arms: [
                        (case_arm
                          pat_list: [
                            {<Id.Lit_LBracket '['> <a-zA-Z0-9.> <Id.Lit_TildeLike '~_-'> 
                              <Id.Lit_RBracket ']'>
                            }
                          ]
                          action: [(C {<printf>} {(DQ ($ Id.VSub_DollarName '$c'))})]
                          spids: [132 136 144 -1]
                        )
                        (case_arm
                          pat_list: [{<Id.Lit_Star '*'>}]
                          action: [
                            (C {<printf>} {(SQ <'%%%02X'>)} {(DQ <'\''> ($ Id.VSub_DollarName '$c'))})
                          ]
                          spids: [147 148 -1 162]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: template
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLessDash '<<-'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOM>}
                      here_end_span_id: 263
                      stdin_parts: [
                        <'Description of problem:\n'>
                        <'\n'>
                        <'\n'>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\`'>
                        )
                        <'docker version'>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\`'>
                        )
                        <':\n'>
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: (C {(${ Id.VSub_Name DOCKER_COMMAND)} {<-D>} {<version>})
                        )
                        <'\n'>
                        <'\n'>
                        <'\n'>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\`'>
                        )
                        <'docker info'>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\`'>
                        )
                        <':\n'>
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: (C {(${ Id.VSub_Name DOCKER_COMMAND)} {<-D>} {<info>})
                        )
                        <'\n'>
                        <'\n'>
                        <'\n'>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\`'>
                        )
                        <'uname -a'>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\`'>
                        )
                        <':\n'>
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: (C {<uname>} {<-a>})
                        )
                        <'\n'>
                        <'\n'>
                        <'\n'>
                        <'Environment details (AWS, VirtualBox, physical, etc.):\n'>
                        <'\n'>
                        <'\n'>
                        <'How reproducible:\n'>
                        <'\n'>
                        <'\n'>
                        <'Steps to Reproduce:\n'>
                        <'1.\n'>
                        <'2.\n'>
                        <'3.\n'>
                        <'\n'>
                        <'\n'>
                        <'Actual Results:\n'>
                        <'\n'>
                        <'\n'>
                        <'Expected Results:\n'>
                        <'\n'>
                        <'\n'>
                        <'Additional info:\n'>
                        <'\n'>
                        <'\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: format_issue_url
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} 
                              {(braced_var_sub token:<Id.VSub_At '@'> prefix_op:(Id.VSub_Pound))} {<-ne>} {<2>} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})]
                  spids: [276 293]
                )
              ]
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'issue_name='> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (C {<urlencode>} 
                      {(DQ (${ Id.VSub_Name DOCKER_ISSUE_NAME_PREFIX) (${ Id.VSub_Number 1))}
                    )
                )
              }
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'issue_body='> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<urlencode>} {(DQ (${ Id.VSub_Number 2))})
                )
              }
            )
            (C {<echo>} 
              {
                (DQ (${ Id.VSub_Name DOCKER_ISSUE_URL) <'?title='> (${ Id.VSub_Name issue_name) 
                  <'&body='> (${ Id.VSub_Name issue_body)
                )
              }
            )
          ]
        )
    )
    (C {<echo>} {<-ne>} 
      {
        (DQ <'Do you use '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) <sudo> 
          (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) <' to call docker? [y|N]: '>
        )
      }
    )
    (C {<read>} {<-r>} {<-n>} {<1>} {<use_sudo>})
    (C {<echo>} {(DQ )})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ <x> (${ Id.VSub_Name use_sudo))} 
                      {<Id.Lit_Equals '='>} {(DQ <xy>)} {<-o>} {(DQ <x> (${ Id.VSub_Name use_sudo))} {<Id.Lit_Equals '='>} {(DQ <xY>)} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<export>} {<Id.Lit_VarLike 'DOCKER_COMMAND='> (DQ <'sudo '> (${ Id.VSub_Name DOCKER))})
          ]
          spids: [383 418]
        )
      ]
    )
    (C {<echo>} {<-ne>} {(DQ <'Title of new issue?: '>)})
    (C {<read>} {<-r>} {<issue_title>})
    (C {<echo>} {(DQ )})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:issue_url)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<format_issue_url>} {(DQ (${ Id.VSub_Name issue_title))} 
                    {(DQ (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<template>})))}
                  )
              )
            }
          spids: [454]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      words: [{<which>} {<xdg-open>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '2>'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<'/dev/null'>}
                        )
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} {<-ne>} {(DQ <'Would like to launch this report in your browser? [Y|n]: '>)})
            (C {<read>} {<-r>} {<-n>} {<1>} {<launch_now>})
            (C {<echo>} {(DQ )})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name launch_now))} 
                              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <n>)} {<-a>} {(DQ (${ Id.VSub_Name launch_now))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <N>)} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<xdg-open>} {(DQ (${ Id.VSub_Name issue_url))})]
                  spids: [516 551]
                )
              ]
            )
          ]
          spids: [472 486]
        )
      ]
    )
    (C {<echo>} 
      {
        (DQ <'If you would like to manually open the url, you can open this link if your browser: '> 
          (${ Id.VSub_Name issue_url)
        )
      }
    )
  ]
)