(CommandList
  children: [
    (C {(set)} {(-o)} {(errexit)})
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {
              (DQ ("Note: This assumes that the 'types_swagger_doc_generated.go' file has been\n") 
                ('updated for all API group versions. If you are unsure, please run\n') ('hack/update-generated-swagger-docs.sh and\n') 
                ('hack/update-federation-generated-swagger-docs.sh first.\n')
              )
            }
          do_expansion: True
          here_end: __EOF__
          was_filled: True
          spids: [72]
        )
      ]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:KUBE_ROOT)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(dirname)} {(DQ (${ VSub_Name BASH_SOURCE))})]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [83 91]
              ) (/..)
            }
          spids: [82]
        )
      ]
      spids: [82]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SWAGGER_ROOT_DIR)
          op: Equal
          rhs: {(DQ (${ VSub_Name KUBE_ROOT) (/federation/apis/swagger-spec))}
          spids: [94]
        )
      ]
      spids: [94]
    )
    (C {(source)} {(DQ (${ VSub_Name KUBE_ROOT) (/hack/lib/init.sh))})
    (C {(kube) (Lit_Other ':') (Lit_Other ':') (golang) (Lit_Other ':') (Lit_Other ':') (setup_env)})
    (C {(make)} {(-C)} {(DQ (${ VSub_Name KUBE_ROOT))} {(Lit_VarLike 'WHAT=') (DQ (cmd/hyperkube))})
    (FuncDef
      name: cleanup
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (DBracket
                  expr: 
                    (BoolUnary
                      op_id: BoolUnary_n
                      child: 
                        {
                          (BracedVarSub
                            token: <VSub_Name APISERVER_PID>
                            suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{})
                            spids: [150 153]
                          )
                        }
                    )
                )
                (SimpleCommand
                  words: [{(kill)} {(${ VSub_Name APISERVER_PID)}]
                  redirects: [
                    (Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[165])
                    (Redir
                      op_id: Redir_Great
                      fd: 2
                      arg_word: {(/dev/null)}
                      spids: [168]
                    )
                  ]
                )
              ]
              op_id: Op_DAmp
            )
            (C 
              {(kube) (Lit_Other ':') (Lit_Other ':') (etcd) (Lit_Other ':') (Lit_Other ':') (cleanup)}
            )
            (C {(kube) (Lit_Other ':') (Lit_Other ':') (log) (Lit_Other ':') (Lit_Other ':') (status)} 
              {(DQ ('Clean up complete'))}
            )
          ]
          spids: [143]
        )
      spids: [137 142]
    )
    (C {(trap)} {(cleanup)} {(EXIT)} {(SIGINT)})
    (C {(kube) (Lit_Other ':') (Lit_Other ':') (golang) (Lit_Other ':') (Lit_Other ':') (setup_env)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TMP_DIR)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(mktemp)} {(-d)} {(/tmp/update-federation-swagger-spec.XXXX)})]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [217 223]
              )
            }
          spids: [216]
        )
      ]
      spids: [216]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ETCD_HOST)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name ETCD_HOST>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(127.0.0.1)})
                spids: [226 230]
              )
            }
          spids: [225]
        )
      ]
      spids: [225]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ETCD_PORT)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name ETCD_PORT>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(2379)})
                spids: [233 237]
              )
            }
          spids: [232]
        )
      ]
      spids: [232]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:API_PORT)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name API_PORT>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(8050)})
                spids: [240 244]
              )
            }
          spids: [239]
        )
      ]
      spids: [239]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:API_HOST)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name API_HOST>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(127.0.0.1)})
                spids: [247 251]
              )
            }
          spids: [246]
        )
      ]
      spids: [246]
    )
    (C {(kube) (Lit_Other ':') (Lit_Other ':') (etcd) (Lit_Other ':') (Lit_Other ':') (start)})
    (C {(kube) (Lit_Other ':') (Lit_Other ':') (log) (Lit_Other ':') (Lit_Other ':') (status)} 
      {(DQ ('Starting federation-apiserver'))}
    )
    (Sentence
      child: 
        (SimpleCommand
          words: [
            {(DQ (${ VSub_Name KUBE_OUTPUT_HOSTBIN) (/hyperkube))}
            {(federation-apiserver)}
            {(--insecure-bind-address) (Lit_Other '=') (DQ (${ VSub_Name API_HOST))}
            {(--bind-address) (Lit_Other '=') (DQ (${ VSub_Name API_HOST))}
            {(--insecure-port) (Lit_Other '=') (DQ (${ VSub_Name API_PORT))}
            {(--etcd-servers) (Lit_Other '=') 
              (DQ ('http://') (${ VSub_Name ETCD_HOST) (':') (${ VSub_Name ETCD_PORT))
            }
            {(--advertise-address) (Lit_Other '=') (DQ (10.10.10.10))}
            {(--cert-dir) (Lit_Other '=') (DQ (${ VSub_Name TMP_DIR) (/certs))}
          ]
          redirects: [
            (Redir
              op_id: Redir_Great
              fd: 16777215
              arg_word: {(/tmp/swagger-federation-api-server.log)}
              spids: [351]
            )
            (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[354])
          ]
        )
      terminator: <Op_Amp '&'>
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:APISERVER_PID)
          op: Equal
          rhs: {($ VSub_Bang '$!')}
          spids: [359]
        )
      ]
      spids: [359]
    )
    (C {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') (wait_for_url)} 
      {(DQ (${ VSub_Name API_HOST) (':') (${ VSub_Name API_PORT) (/))} {(DQ ('apiserver: '))}
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SWAGGER_API_PATH)
          op: Equal
          rhs: {(DQ (${ VSub_Name API_HOST) (':') (${ VSub_Name API_PORT) (/swaggerapi/))}
          spids: [387]
        )
      ]
      spids: [387]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DEFAULT_GROUP_VERSIONS)
          op: Equal
          rhs: {(DQ ('v1 extensions/v1beta1 federation/v1beta1'))}
          spids: [399]
        )
      ]
      spids: [399]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:VERSIONS)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name VERSIONS>
                suffix_op: 
                  (StringUnary
                    op_id: VTest_ColonHyphen
                    arg_word: {($ VSub_Name '$DEFAULT_GROUP_VERSIONS')}
                  )
                spids: [405 409]
              )
            }
          spids: [404]
        )
      ]
      spids: [404]
    )
    (C {(kube) (Lit_Other ':') (Lit_Other ':') (log) (Lit_Other ':') (Lit_Other ':') (status)} 
      {(DQ ('Updating '))} {(${ VSub_Name SWAGGER_ROOT_DIR)}
    )
    (SimpleCommand
      words: [
        {(kube) (Lit_Other ':') (Lit_Other ':') (util) (Lit_Other ':') (Lit_Other ':') 
          (fetch-swagger-spec)
        }
      ]
      more_env: [
        (env_pair
          name: SWAGGER_API_PATH
          val: {(DQ (${ VSub_Name SWAGGER_API_PATH))}
          spids: [429]
        )
        (env_pair
          name: SWAGGER_ROOT_DIR
          val: {(DQ (${ VSub_Name SWAGGER_ROOT_DIR))}
          spids: [436]
        )
        (env_pair name:VERSIONS val:{(DQ (${ VSub_Name VERSIONS))} spids:[443])
      ]
    )
    (C {(kube) (Lit_Other ':') (Lit_Other ':') (log) (Lit_Other ':') (Lit_Other ':') (status)} 
      {(DQ (SUCCESS))}
    )
  ]
)