(CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (Assignment
      keyword: Assign_Readonly
      pairs: [
        (assign_pair
          lhs: (LhsName name:THIS_DIR)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (AndOr
                        ops: [Op_DAmp]
                        children: [
                          (C {(cd)} 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(dirname)} {($ VSub_Number '$0')})]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [53 57]
                              )
                            }
                          )
                          (C {(pwd)})
                        ]
                      )
                    ]
                  )
                left_token: <Left_CommandSub '$('>
                spids: [50 62]
              )
            }
          spids: [49]
        )
      ]
      spids: [47]
    )
    (C {(source)} {($ VSub_Name '$THIS_DIR') (/common.sh)})
    (C {(source)} {($ VSub_Name '$THIS_DIR') (/../build/common.sh)})
    (FuncDef
      name: grammar
      body: 
        (BraceGroup
          children: [
            (C {(mkdir)} {(-p)} {(_tmp)})
            (C {(opy_)} {(pgen2)} {($ VSub_Name '$THIS_DIR') (/py27.grammar)} 
              {($ VSub_Name '$THIS_DIR') (/) ($ VSub_Name '$GRAMMAR')}
            )
          ]
          spids: [83]
        )
      spids: [79 82]
    )
    (FuncDef
      name: md5-manifest
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:tree)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [116]
                )
              ]
              spids: [114]
            )
            (C {(pushd)} {($ VSub_Name '$tree')})
            (Pipeline
              children: [
                (C {(find)} {(.)} {(-type)} {(f)})
                (C {(sort)})
                (C {(xargs)} {(stat)} {(--format)} {(SQ <'%s %n'>)})
                (C {(tee)} {(SIZES.txt)})
              ]
              negated: F
            )
            (Pipeline
              children: [
                (C {(find)} {(.)} {(-type)} {(f)})
                (C {(sort)})
                (C {(xargs)} {(md5sum)})
                (C {(tee)} {(MD5.txt)})
              ]
              negated: F
            )
            (C {(popd)})
          ]
          spids: [111]
        )
      spids: [107 110]
    )
    (FuncDef
      name: _compile-tree
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:src_tree)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [199]
                )
              ]
              spids: [197]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dest_tree)
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [205]
                )
              ]
              spids: [203]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:version)
                  op: Equal
                  rhs: {($ VSub_Number '$3')}
                  spids: [211]
                )
              ]
              spids: [209]
            )
            (C {(shift)} {(3)})
            (C {(rm)} {(-r)} {(-f)} {($ VSub_Name '$dest_tree')})
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:ext) op:Equal rhs:{(pyc)} spids:[237])]
              spids: [235]
            )
            (ForEach
              iter_name: rel_path
              iter_words: [{(DQ ($ VSub_At '$@'))}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(echo)} {($ VSub_Name '$rel_path')})
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:dest)
                          op: Equal
                          rhs: 
                            {(${ VSub_Name dest_tree) (/) 
                              (BracedVarSub
                                token: <VSub_Name rel_path>
                                suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(.py)})
                                spids: [268 272]
                              ) (.) (${ VSub_Name ext)
                            }
                          spids: [263]
                        )
                      ]
                      spids: [261]
                    )
                    (C {(mkdir)} {(-p)} 
                      {
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [(C {(dirname)} {($ VSub_Name '$dest')})]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [283 287]
                        )
                      }
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(test)} {($ VSub_Name '$version')} {(Lit_Other '=')} {(stdlib)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(_stdlib-compile-one)} 
                              {($ VSub_Name '$src_tree') (/) (${ VSub_Name rel_path)} {($ VSub_Name '$dest')}
                            )
                          ]
                          spids: [16777215 302]
                        )
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(test)} {($ VSub_Name '$version')} {(Lit_Other '=')} {(compiler2)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(_compile2-one)} 
                              {($ VSub_Name '$src_tree') (/) (${ VSub_Name rel_path)} {($ VSub_Name '$dest')}
                            )
                          ]
                          spids: [316 327]
                        )
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(test)} {($ VSub_Name '$version')} {(Lit_Other '=')} {(ccompile)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(_ccompile-one)} 
                              {($ VSub_Name '$src_tree') (/) (${ VSub_Name rel_path)} {($ VSub_Name '$dest')}
                            )
                          ]
                          spids: [341 352]
                        )
                        (if_arm
                          cond: [
                            (Sentence
                              child: (C {(test)} {($ VSub_Name '$version')} {(Lit_Other '=')} {(opy)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(_compile-one)} {($ VSub_Name '$src_tree') (/) (${ VSub_Name rel_path)} 
                              {($ VSub_Name '$dest')}
                            )
                          ]
                          spids: [366 377]
                        )
                      ]
                      else_action: [(C {(die)} {(DQ (bad))})]
                      spids: [391 401]
                    )
                  ]
                  spids: [253 404]
                )
              spids: [247 251]
            )
            (C {(tree)} {($ VSub_Name '$dest_tree')})
            (C {(md5-manifest)} {($ VSub_Name '$dest_tree')})
          ]
          spids: [194]
        )
      spids: [190 193]
    )
    (FuncDef
      name: compile-manifest
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dest_dir)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [432]
                )
              ]
              spids: [430]
            )
            (While
              cond: [
                (Sentence
                  child: (C {(read)} {(full_src_path)} {(rel_dest_path)})
                  terminator: <Op_Semi ';'>
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:dest)
                          op: Equal
                          rhs: {($ VSub_Name '$dest_dir') (/) ($ VSub_Name '$rel_dest_path')}
                          spids: [450]
                        )
                      ]
                      spids: [448]
                    )
                    (C {(mkdir)} {(-p)} 
                      {
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [(C {(dirname)} {($ VSub_Name '$dest')})]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [460 464]
                        )
                      }
                    )
                    (C {(log)} {(DQ ('     ') ($ VSub_Name '$full_src_path'))})
                    (C {(_compile-one)} {($ VSub_Name '$full_src_path')} {($ VSub_Name '$dest')})
                    (Assignment
                      keyword: Assign_Local
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:rel_py_path)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name rel_dest_path>
                                suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(.pyc)})
                                spids: [486 490]
                              ) (.py)
                            }
                          spids: [485]
                        )
                      ]
                      spids: [483]
                    )
                    (C {(echo)} {($ VSub_Name '$dest')} {($ VSub_Name '$rel_dest_path')})
                    (C {(echo)} {($ VSub_Name '$full_src_path')} {($ VSub_Name '$rel_py_path')})
                  ]
                  spids: [445 516]
                )
            )
          ]
          spids: [427]
        )
      spids: [423 426]
    )
    (FuncDef
      name: make-mains
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dir)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {(_tmp) (Lit_Slash /) (oil-opy)}
                          )
                        spids: [531 537]
                      )
                    }
                  spids: [530]
                )
              ]
              spids: [528]
            )
            (ForEach
              iter_name: link
              iter_words: [
                {
                  (DQ 
                    (BracedVarSub
                      token: <VSub_Name OIL_SYMLINKS>
                      bracket_op: (WholeArray op_id:Lit_At)
                      spids: [560 565]
                    )
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (BraceGroup
                      children: [
                        (C {(echo)} {(SQ <'#!/bin/sh'>)})
                        (C {(echo)} {(DQ ('main=') ($ VSub_Name '$link'))})
                        (C {(echo)} {(SQ <'exec python $(dirname $0)/oil.pyc $main "$@"'>)})
                      ]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {($ VSub_Name '$dir') (/bin/) ($ VSub_Name '$link')}
                          spids: [598]
                        )
                      ]
                      spids: [572]
                    )
                    (C {(chmod)} {(--verbose)} {(Lit_Other '+') (x)} 
                      {($ VSub_Name '$dir') (/bin/) ($ VSub_Name '$link')}
                    )
                  ]
                  spids: [569 617]
                )
              spids: [558 567]
            )
          ]
          spids: [525]
        )
      spids: [521 524]
    )
    (FuncDef
      name: _fill-oil-tree
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:dir)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {(_tmp) (Lit_Slash /) (oil-opy)}
                          )
                        spids: [669 675]
                      )
                    }
                  spids: [668]
                )
              ]
              spids: [666]
            )
            (C {(cp)} {(-v)} 
              (BracedWordTree
                parts: [(../osh/) (BracedAltPart words:[{(osh)} {(types)}]) (.asdl)]
              ) {($ VSub_Name '$dir') (/osh)}
            )
            (C {(cp)} {(-v)} {(../core/runtime.asdl)} {($ VSub_Name '$dir') (/core)})
            (C {(cp)} {(-v)} {(../asdl/arith.asdl)} {($ VSub_Name '$dir') (/asdl)})
            (C {(ln)} {(-v)} {(-s)} {(-f)} 
              (BracedWordTree
                parts: [($ VSub_Name '$PWD') (/../) (BracedAltPart words:[{(libc)} {(fastlex)}]) (.so)]
              ) {($ VSub_Name '$dir')}
            )
            (C {(ln)} {(-v)} {(-s)} {(-f)} {($ VSub_Name '$PWD') (/../oil-version.txt)} 
              {($ VSub_Name '$dir')}
            )
            (C {(ln)} {(-v)} {(-s)} {(-f)} {(--no-target-directory)} {($ VSub_Name '$PWD') (/../_build)} 
              {($ VSub_Name '$dir') (/_build)}
            )
            (C {(make-mains)} {($ VSub_Name '$dir')})
          ]
          spids: [663]
        )
      spids: [659 662]
    )
    (FuncDef
      name: oil-repo
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:src)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (AndOr
                                ops: [Op_DAmp]
                                children: [(C {(cd)} {(..)}) (C {(echo)} {($ VSub_Name '$PWD')})]
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [807 817]
                      )
                    }
                  spids: [806]
                )
              ]
              spids: [804]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:files)
                  op: Equal
                  rhs: 
                    {
                      (ArrayLiteralPart
                        words: [
                          {
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [
                                    (C {(find)} {($ VSub_Name '$src')} {(-name)} {(_tmp)} {(-a)} {(-prune)} 
                                      {(-o)} {(-name)} {(_chroot)} {(-a)} {(-prune)} {(-o)} {(-name)} {(cpython-full)} {(-a)} {(-prune)} {(-o)} {(-name)} 
                                      {(_deps)} {(-a)} {(-prune)} {(-o)} {(-name)} {(Python-2.7.13)} {(-a)} {(-prune)} {(-o)} {(-name)} {(opy)} {(-a)} {(-prune)} 
                                      {(-o)} {(-name)} {(SQ <test>)} {(-a)} {(-prune)} {(-o)} {(-name)} {(SQ <'*.py'>)} {(-a)} {(-printf)} {(SQ <'%P\\n'>)}
                                    )
                                  ]
                                )
                              left_token: <Left_CommandSub '$('>
                              spids: [830 936]
                            )
                          }
                        ]
                      )
                    }
                  spids: [827]
                )
              ]
              spids: [825]
            )
            (C {(_compile-tree)} {($ VSub_Name '$src')} {(_tmp/oil-ccompile/)} {(ccompile)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name files>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [951 956]
                  )
                )
              }
            )
            (C {(_compile-tree)} {($ VSub_Name '$src')} {(_tmp/oil-opy/)} {(opy)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name files>
                    bracket_op: (WholeArray op_id:Lit_At)
                    spids: [969 974]
                  )
                )
              }
            )
            (C {(_fill-oil-tree)} {(_tmp/oil-ccompile/)})
            (C {(_fill-oil-tree)} {(_tmp/oil-opy/)})
          ]
          spids: [801]
        )
      spids: [797 800]
    )
    (FuncDef
      name: _oil-bin-manifest
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (BraceGroup
                  children: [
                    (C {(build/actions.sh)} {(runpy-py-to-compile)})
                    (C {(build/actions.sh)} {(py-to-compile)} {(SQ <.>)} {(SQ <bin.oil>)})
                  ]
                  spids: [1030]
                )
                (C {(sort)})
                (C {(uniq)})
              ]
              negated: F
            )
          ]
          spids: [1014]
        )
      spids: [1010 1013]
    )
    (FuncDef
      name: oil-bin
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(pushd)} {($ VSub_Name '$THIS_DIR') (/..)}]
              redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(/dev/null)} spids:[1075])]
            )
            (Pipeline
              children: [(C {(_oil-bin-manifest)}) (C {(compile-manifest)} {(_tmp/oil-with-opy)})]
              negated: F
            )
            (SimpleCommand
              words: [{(popd)}]
              redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(/dev/null)} spids:[1090])]
            )
          ]
          spids: [1067]
        )
      spids: [1063 1066]
    )
    (FuncDef
      name: _opy-bin-manifest
      body: 
        (BraceGroup
          children: [(C {(build/actions.sh)} {(py-to-compile)} {(SQ <.>)} {(SQ <bin.opy_>)})]
          spids: [1100]
        )
      spids: [1096 1099]
    )
    (FuncDef
      name: opy-bin
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(pushd)} {(..)}]
              redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(/dev/null)} spids:[1129])]
            )
            (Pipeline
              children: [(C {(_opy-bin-manifest)}) (C {(compile-manifest)} {(_tmp/opy-with-opy)})]
              negated: F
            )
            (SimpleCommand
              words: [{(popd)}]
              redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(/dev/null)} spids:[1144])]
            )
          ]
          spids: [1122]
        )
      spids: [1118 1121]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)