(CommandList
  children: [
    (FuncDef
      name: 'http::parse_request'
      body: 
        (BraceGroup
          children: [
            (C {(http) (Lit_Other ':') (Lit_Other ':') (read)} {(req_line)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:req_line)
                  op: Equal
                  rhs: {(ArrayLiteralPart words:[{($ VSub_Name '$req_line')}])}
                  spids: [23]
                )
              ]
              spids: [23]
            )
            (C {(export)} 
              {(Lit_VarLike 'REQUEST_METHOD=') 
                (BracedVarSub
                  token: <VSub_Name req_line>
                  bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)}))
                  spids: [32 37]
                )
              }
            )
            (C {(export)} 
              {(Lit_VarLike 'REQUEST_URI=') 
                (BracedVarSub
                  token: <VSub_Name req_line>
                  bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)}))
                  spids: [44 49]
                )
              }
            )
            (C {(export)} 
              {(Lit_VarLike 'REQUEST_PATH=') 
                (BracedVarSub
                  token: <VSub_Name REQUEST_URI>
                  suffix_op: 
                    (StringUnary
                      op_id: VOp1_DPercent
                      arg_word: {(EscapedLiteralPart token:<Lit_EscapedChar '\\?'>) ('*')}
                    )
                  spids: [55 60]
                )
              }
            )
            (C {(export)} 
              {(Lit_VarLike 'QUERY_STRING=') 
                (BracedVarSub
                  token: <VSub_Name REQUEST_URI>
                  suffix_op: 
                    (StringUnary
                      op_id: VOp1_Pound
                      arg_word: {('*') (EscapedLiteralPart token:<Lit_EscapedChar '\\?'>)}
                    )
                  spids: [66 71]
                )
              }
            )
            (C {(export)} 
              {(Lit_VarLike 'HTTP_VERSION=') 
                (BracedVarSub
                  token: <VSub_Name req_line>
                  bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 2)}))
                  spids: [78 83]
                )
              }
            )
            (C {(export)} {(Lit_VarLike 'SERVER_SOFTWARE=') (DQ (balls/0.0))})
            (Assignment
              keyword: Assign_Declare
              flags: ["'-A'"]
              pairs: [(assign_pair lhs:(LhsName name:HEADERS) op:Equal spids:[100])]
              spids: [96]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:key) op:Equal spids:[106])]
              spids: [104]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:val) op:Equal spids:[111])]
              spids: [109]
            )
            (While
              cond: [
                (Sentence
                  child: (C {(http) (Lit_Other ':') (Lit_Other ':') (read)} {(HEADER_LINE)})
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:key)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name HEADER_LINE>
                                  suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{('*( ):*')})
                                  spids: [129 133]
                                )
                              )
                            }
                          spids: [127]
                        )
                      ]
                      spids: [127]
                    )
                    (C {(trim)} {(key)})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:val)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name HEADER_LINE>
                                  suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('*:*( )')})
                                  spids: [144 148]
                                )
                              )
                            }
                          spids: [142]
                        )
                      ]
                      spids: [142]
                    )
                    (C {(trim)} {(val)})
                    (C 
                      {(HEADERS) (Lit_Other '[') (DQ ($ VSub_Name '$key')) (Lit_Other ']') 
                        (Lit_Other '=') (DQ ($ VSub_Name '$val'))
                      }
                    )
                  ]
                  spids: [124 170]
                )
            )
          ]
          spids: [11]
        )
      spids: [4 10]
    )
    (FuncDef
      name: 'http::read'
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_Local
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:__var)
                      op: Equal
                      rhs: {($ VSub_Number '$1')}
                      spids: [187]
                    )
                  ]
                  spids: [185]
                )
              terminator: <Op_Semi ';'>
            )
            (C {(shift)})
            (C {(read)} {(__in)})
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:RETVAL)
                  op: Equal
                  rhs: {($ VSub_QMark '$?')}
                  spids: [201]
                )
              ]
              spids: [199]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:__in)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(echo)} {(DQ ($ VSub_Name '$__in'))})
                                  (C {(tr)} {(-d)} {(SQ <'\\r'>)})
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [211 227]
                      )
                    }
                  spids: [210]
                )
              ]
              spids: [210]
            )
            (C {(export)} {(DQ ($ VSub_Name '$__var')) (Lit_Other '=') (DQ ($ VSub_Name '$__in'))})
            (AndOr
              children: [
                (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$RETVAL'))} {(Lit_Other '=')} {(0)} 
                  {(Lit_Other ']')}
                )
                (C {(Lit_Other '[')} {(-n)} 
                  {(DQ (BracedVarSub token:<VSub_Name __var> prefix_op:VSub_Bang spids:[267270]))} {(Lit_Other ']')}
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [182]
        )
      spids: [175 181]
    )
    (Assignment
      keyword: Assign_Declare
      flags: ["'-a'"]
      pairs: [(assign_pair lhs:(LhsName name:HTTP_STATUSES) op:Equal spids:[282])]
      spids: [278]
    )
    (C {(HTTP_STATUSES) (Lit_Other '[') (200) (Lit_Other ']') (Lit_Other '=') (SQ <OK>)})
    (C {(HTTP_STATUSES) (Lit_Other '[') (404) (Lit_Other ']') (Lit_Other '=') (SQ <'Not Found'>)})
    (C 
      {(HTTP_STATUSES) (Lit_Other '[') (500) (Lit_Other ']') (Lit_Other '=') 
        (SQ <'Internal Server Error'>)
      }
    )
    (FuncDef
      name: 'http::status'
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_Local
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:code)
                      op: Equal
                      rhs: {($ VSub_Number '$1')}
                      spids: [327]
                    )
                  ]
                  spids: [325]
                )
              terminator: <Op_Semi ';'>
            )
            (C {(shift)})
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_Local
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:message)
                      op: Equal
                      rhs: {($ VSub_Number '$1')}
                      spids: [336]
                    )
                  ]
                  spids: [334]
                )
              terminator: <Op_Semi ';'>
            )
            (C {(shift)})
            (AndOr
              children: [
                (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$message'))} {(Lit_Other ']')})
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:message)
                      op: Equal
                      rhs: 
                        {
                          (BracedVarSub
                            token: <VSub_Name HTTP_STATUSES>
                            bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$code')}))
                            spids: [356 361]
                          )
                        }
                      spids: [355]
                    )
                  ]
                  spids: [355]
                )
              ]
              op_id: Op_DAmp
            )
            (C {(http) (Lit_Other ':') (Lit_Other ':') (header_echo)} 
              {
                (DQ ($ VSub_Name '$HTTP_VERSION') (' ') ($ VSub_Name '$code') (' ') 
                  ($ VSub_Name '$message')
                )
              }
            )
          ]
          spids: [322]
        )
      spids: [315 321]
    )
    (FuncDef
      name: 'http::header'
      body: 
        (BraceGroup
          children: [
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_Local
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:header_name)
                      op: Equal
                      rhs: {($ VSub_Number '$1')}
                      spids: [393]
                    )
                  ]
                  spids: [391]
                )
              terminator: <Op_Semi ';'>
            )
            (C {(shift)})
            (Sentence
              child: 
                (Assignment
                  keyword: Assign_Local
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:header_val)
                      op: Equal
                      rhs: {($ VSub_Number '$1')}
                      spids: [401]
                    )
                  ]
                  spids: [399]
                )
              terminator: <Op_Semi ';'>
            )
            (C {(shift)})
            (C {(http) (Lit_Other ':') (Lit_Other ':') (header_echo)} 
              {(DQ ($ VSub_Name '$header_name') (': ') ($ VSub_Name '$header_val'))}
            )
          ]
          spids: [388]
        )
      spids: [381 387]
    )
    (FuncDef
      name: 'http::header_echo'
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(echo)} {(DQ ($ VSub_At '$@'))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(3)} spids:[437])]
            )
          ]
          spids: [428]
        )
      spids: [421 427]
    )
    (FuncDef
      name: 'http::content_type'
      body: 
        (BraceGroup
          children: [
            (C {(http) (Lit_Other ':') (Lit_Other ':') (header)} {(SQ <Content-Type>)} 
              {(DQ ($ VSub_At '$@'))}
            )
          ]
          spids: [450]
        )
      spids: [443 449]
    )
  ]
)