(BraceGroup
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:GIT_BRANCH)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name GIT_BRANCH>
                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonEquals arg_word:{<master>})
              )
            }
          spids: [39]
        )
      ]
    )
    (C {<echo>} {<-e>} {(DQ <'Git Branch: '> ($ Id.VSub_DollarName '$GIT_BRANCH'))})
    (C {<cd>} {(DQ ($ Id.VSub_DollarName '$HOME'))})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_NEqual
                          left: {($ Id.VSub_DollarName '$UID')}
                          right: {<Id.Lit_Digits 0>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} {<-e>} 
              {
                (SQ 
                  <
'Error: Root privileges required. Please run the command with "sudo"\\nIn case install the "sudo" package with root privileges: #apt-get install sudo\\n'
                  >
                )
              }
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [86 100]
        )
      ]
    )
    (command.Simple
      words: [{<echo>} {(SQ <'Acquire::ForceIPv4 "true";'>)}]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {<'/etc/apt/apt.conf.d/99-dietpi-force-ipv4'>}
        )
      ]
      do_fork: T
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:a_MIN_APT_PREREQS)
          op: assign_op.Equal
          rhs: 
            {
              (sh_array_literal
                left: <Id.Op_LParen _>
                words: [{(SQ <wget>)} {(SQ <ca-certificates>)} {(SQ <locales>)}]
              )
            }
          spids: [143]
        )
      ]
    )
    (command.Simple
      words: [{<rm>} {<'/etc/apt/sources.list.d/deb-multimedia.list'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (C {<apt-get>} {<clean>})
    (C {<apt-get>} {<update>})
    (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: 
            {
              (braced_var_sub
                token: <Id.VSub_Name a_MIN_APT_PREREQS>
                prefix_op: (Id.VSub_Pound)
                bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
              )
            }
        )
      update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>)
      body: 
        (command.DoGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Unary
                                  op_id: Id.Arith_Bang
                                  child: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<dpkg>} {<--get-selections>})
                                              (C {<grep>} {<-ci>} {<-m1>} 
                                                {
                                                  (DQ <'^'> 
                                                    (braced_var_sub
                                                      token: <Id.VSub_Name a_MIN_APT_PREREQS>
                                                      bracket_op: 
                                                        (bracket_op.ArrayIndex
                                                          expr: {($ Id.VSub_DollarName '$i')}
                                                        )
                                                    ) <'[[:space:]]'>
                                                  )
                                                }
                                              )
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<apt-get>} {<install>} {<-y>} 
                      {
                        (braced_var_sub
                          token: <Id.VSub_Name a_MIN_APT_PREREQS>
                          bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$i')})
                        )
                      }
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DParen
                                      child: 
                                        (arith_expr.Binary
                                          op_id: Id.Arith_NEqual
                                          left: {($ Id.VSub_QMark '$?')}
                                          right: {<Id.Lit_Digits 0>}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} {<-e>} 
                              {
                                (DQ <'Error: Unable to install '> 
                                  (braced_var_sub
                                    token: <Id.VSub_Name a_MIN_APT_PREREQS>
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: {($ Id.VSub_DollarName '$i')}
                                      )
                                  ) <', please try to install it manually with'> <Id.Lit_BadBackslash '\\'> <'n - apt-get install -y '> 
                                  (braced_var_sub
                                    token: <Id.VSub_Name a_MIN_APT_PREREQS>
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: {($ Id.VSub_DollarName '$i')}
                                      )
                                  )
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [275 289]
                        )
                      ]
                    )
                  ]
                  spids: [222 257]
                )
              ]
            )
          ]
        )
    )
    (C {<unset>} {<a_MIN_APT_PREREQS>})
    (command.AndOr
      ops: [Id.Op_DAmp Id.Op_DPipe Id.Op_DAmp Id.Op_DPipe]
      children: [
        (C {<grep>} {<-q>} {(SQ <'^[[:blank:]]*prefer-family ='>)} {<'/etc/wgetrc'>})
        (C {<sed>} {<-i>} {(SQ <'/^[[:blank:]]*prefer-family =/c\\prefer-family = IPv4'>)} 
          {<'/etc/wgetrc'>}
        )
        (C {<grep>} {<-q>} {(SQ <'^[[:blank:]#;]*prefer-family ='>)} {<'/etc/wgetrc'>})
        (C {<sed>} {<-i>} {(SQ <'/^[[:blank:]#;]*prefer-family =/c\\prefer-family = IPv4'>)} 
          {<'/etc/wgetrc'>}
        )
        (command.Simple
          words: [{<echo>} {(SQ <'prefer-family = IPv4'>)}]
          redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<'/etc/wgetrc'>})]
          do_fork: T
        )
      ]
    )
    (command.Simple
      words: [{<echo>} {(SQ <'en_GB.UTF-8 UTF-8'>)}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/etc/locale.gen'>})]
      do_fork: T
    )
    (C {<dpkg-reconfigure>} {<-f>} {<noninteractive>} {<locales>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_NEqual
                          left: {($ Id.VSub_QMark '$?')}
                          right: {<Id.Lit_Digits 0>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} {<-e>} {(SQ <'Error: Locale generation failed. Aborting...\\n'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [449 463]
        )
      ]
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<_EOF_>}
              here_end_span_id: 501
              stdin_parts: [
                <
'# Force locale on remote access, especially via dropbear, where overwriting server locale by SSH client cannot be suppressed:\n'
                >
                <'export LANG=en_GB.UTF-8\n'>
                <'export LC_ALL=en_GB.UTF-8\n'>
                <'export LANGUAGE=en_GB:en\n'>
              ]
            )
        )
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {<'/etc/profile.d/99-dietpi-force-locale.sh'>}
        )
      ]
      do_fork: T
    )
    (C {<chmod>} {<Id.Lit_Other '+'> <x>} {<'/etc/profile.d/99-dietpi-force-locale.sh'>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LANG)
          op: assign_op.Equal
          rhs: {<en_GB.UTF-8>}
          spids: [516]
        )
      ]
    )
    (C {<wget>} 
      {<https> <Id.Lit_Colon ':'> <'//raw.githubusercontent.com/Fourdee/DietPi/'> 
        ($ Id.VSub_DollarName '$GIT_BRANCH') <'/dietpi/func/dietpi-globals'>
      } {<-O>} {<dietpi-globals>}
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_NEqual
                          left: {($ Id.VSub_QMark '$?')}
                          right: {<Id.Lit_Digits 0>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} {<-e>} {(SQ <'Error: Unable to download dietpi-globals. Aborting...\\n'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [554 568]
        )
      ]
    )
    (C {<chmod>} {<Id.Lit_Other '+'> <x>} {<dietpi-globals>})
    (C {<.>} {<'./dietpi-globals'>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_NEqual
                          left: {($ Id.VSub_QMark '$?')}
                          right: {<Id.Lit_Digits 0>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} {<-e>} {(SQ <'Error: Unable to load dietpi-globals. Aborting...\\n'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [608 622]
        )
      ]
    )
    (C {<export>} {<Id.Lit_VarLike 'G_PROGRAM_NAME='> (SQ <DietPi-PREP_SYSTEM_FOR_DIETPI>)})
    (C {<export>} {<Id.Lit_VarLike 'G_DISTRO='> <0>})
    (C {<export>} {<Id.Lit_VarLike 'G_DISTRO_NAME='> (SQ <NULL>)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DISTRO_TARGET)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [673]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DISTRO_TARGET_NAME)
          op: assign_op.Equal
          rhs: {(SQ )}
          spids: [677]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<grep>} {<-q>} {(SQ <wheezy>)} {<'/etc/os-release'>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_DISTRO)
                  op: assign_op.Equal
                  rhs: {<2>}
                  spids: [699]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_DISTRO_NAME)
                  op: assign_op.Equal
                  rhs: {(SQ <wheezy>)}
                  spids: [703]
                )
              ]
            )
          ]
          spids: [682 695]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<grep>} {<-q>} {(SQ <jessie>)} {<'/etc/os-release'>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_DISTRO)
                  op: assign_op.Equal
                  rhs: {<3>}
                  spids: [727]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_DISTRO_NAME)
                  op: assign_op.Equal
                  rhs: {(SQ <jessie>)}
                  spids: [731]
                )
              ]
            )
          ]
          spids: [710 723]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<grep>} {<-q>} {(SQ <stretch>)} {<'/etc/os-release'>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_DISTRO)
                  op: assign_op.Equal
                  rhs: {<4>}
                  spids: [755]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_DISTRO_NAME)
                  op: assign_op.Equal
                  rhs: {(SQ <stretch>)}
                  spids: [759]
                )
              ]
            )
          ]
          spids: [738 751]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<grep>} {<-q>} {(SQ <buster>)} {<'/etc/os-release'>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_DISTRO)
                  op: assign_op.Equal
                  rhs: {<5>}
                  spids: [783]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_DISTRO_NAME)
                  op: assign_op.Equal
                  rhs: {(SQ <buster>)}
                  spids: [787]
                )
              ]
            )
          ]
          spids: [766 779]
        )
      ]
      else_action: [
        (C {<echo>} {<-e>} {(SQ <'Error: Unknown or unsupported distribution version. Aborting...\\n'>)})
        (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:G_HW_ARCH_DESCRIPTION)
          op: assign_op.Equal
          rhs: {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<uname>} {<-m>}))}
          spids: [825]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$G_HW_ARCH_DESCRIPTION'))} 
                      {<Id.Lit_Equals '='>} {(DQ <armv6l>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_HW_ARCH)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [854]
                )
              ]
            )
          ]
          spids: [833 850]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$G_HW_ARCH_DESCRIPTION'))} 
                      {<Id.Lit_Equals '='>} {(DQ <armv7l>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_HW_ARCH)
                  op: assign_op.Equal
                  rhs: {<2>}
                  spids: [880]
                )
              ]
            )
          ]
          spids: [859 876]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$G_HW_ARCH_DESCRIPTION'))} 
                      {<Id.Lit_Equals '='>} {(DQ <aarch64>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_HW_ARCH)
                  op: assign_op.Equal
                  rhs: {<3>}
                  spids: [906]
                )
              ]
            )
          ]
          spids: [885 902]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$G_HW_ARCH_DESCRIPTION'))} 
                      {<Id.Lit_Equals '='>} {(DQ <x86_64>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:G_HW_ARCH)
                  op: assign_op.Equal
                  rhs: {<10>}
                  spids: [932]
                )
              ]
            )
          ]
          spids: [911 928]
        )
      ]
      else_action: [
        (C {<echo>} {<-e>} 
          {
            (DQ <'Error: Unknown or unsupported CPU architecture '> 
              ($ Id.VSub_DollarName '$G_HW_ARCH_DESCRIPTION') <'. Aborting...'>
            )
          }
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:INTERNET_ADDRESS)
          op: assign_op.Equal
          rhs: {(SQ )}
          spids: [966]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_BACKTITLE)
          op: assign_op.Equal
          rhs: {(SQ <DietPi-Prep>)}
          spids: [976]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [982]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_DESC)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [986]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_MENU_ARRAY)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [990]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_RETURN_VALUE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [994]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_DEFAULT_ITEM)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [998]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_OPTION)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [1002]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_CHOICE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [1006]
        )
      ]
    )
    (command.ShFunction
      name: Run_Whiptail
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:WHIP_OPTION)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            words: [
                              {<whiptail>}
                              {<--title>}
                              {(DQ ($ Id.VSub_DollarName '$WHIP_TITLE'))}
                              {<--menu>}
                              {(DQ ($ Id.VSub_DollarName '$WHIP_DESC'))}
                              {<--default-item>}
                              {(DQ ($ Id.VSub_DollarName '$WHIP_DEFAULT_ITEM'))}
                              {<--backtitle>}
                              {(DQ ($ Id.VSub_DollarName '$WHIP_BACKTITLE'))}
                              {<24>}
                              {<85>}
                              {<12>}
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name WHIP_MENU_ARRAY>
                                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                  )
                                )
                              }
                            ]
                            redirects: [
                              (redir
                                op: <Id.Redir_GreatAnd '3>&'>
                                loc: (redir_loc.Fd fd:3)
                                arg: {<1>}
                              )
                              (redir
                                op: <Id.Redir_GreatAnd '1>&'>
                                loc: (redir_loc.Fd fd:1)
                                arg: {<2>}
                              )
                              (redir
                                op: <Id.Redir_GreatAnd '2>&'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<3>}
                              )
                            ]
                            do_fork: T
                          )
                      )
                    }
                  spids: [1017]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:WHIP_CHOICE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [1071]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (command.DParen
                                  child: 
                                    (arith_expr.Binary
                                      op_id: Id.Arith_DEqual
                                      left: {($ Id.VSub_DollarName '$WHIP_CHOICE')}
                                      right: {<Id.Lit_Digits 0>}
                                    )
                                )
                                (C {<Id.Lit_LBracket '['>} {<-n>} 
                                  {(DQ ($ Id.VSub_DollarName '$WHIP_OPTION'))} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:WHIP_RETURN_VALUE)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$WHIP_OPTION')}
                          spids: [1106]
                        )
                      ]
                    )
                  ]
                  spids: [1075 1102]
                )
              ]
              else_action: [
                (C {<G_DIETPI-NOTIFY>} {<1>} {(SQ <'No choices detected, aborting...'>)})
                (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
              ]
            )
            (C {<unset>} {<WHIP_MENU_ARRAY>})
          ]
        )
    )
    (C {<echo>} {<-e>} {(SQ )})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<0>} {(SQ <'Step 0: Detecting existing DietPi system:'>)})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Pipeline
                                children: [
                                  (C {<systemctl>} {<is-active>} {<dietpi-ramdisk>})
                                  (C {<grep>} {<-ci>} {<-m1>} {(SQ <'^active'>)})
                                ]
                                negated: F
                              )
                          )
                        }
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'DietPi system found, running pre-prep'>)})
            (C {<'/DietPi/dietpi/dietpi-services'>} {<stop>})
            (C {<G_RUN_CMD>} {<systemctl>} {<stop>} {<dietpi-ramlog>})
            (C {<G_RUN_CMD>} {<systemctl>} {<stop>} {<dietpi-ramdisk>})
            (C {<rm>} {<-R>} {<'/DietPi/'> <Id.Lit_Star '*'>})
            (C {<rm>} {<-R>} {<'/boot/dietpi'>})
            (command.Simple
              words: [{<rm>} {<-R>} {<'/mnt/dietpi-backup'>}]
              redirects: [
                (redir
                  op: <Id.Redir_AndGreat '&>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<rm>} {<-R>} {<'/mnt/dietpi-sync'>}]
              redirects: [
                (redir
                  op: <Id.Redir_AndGreat '&>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<rm>} {<-R>} {<'/mnt/dietpi_userdata'>}]
              redirects: [
                (redir
                  op: <Id.Redir_AndGreat '&>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<rm>} {<-R>} {<'/etc/dietpi'>}]
              redirects: [
                (redir
                  op: <Id.Redir_AndGreat '&>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<rm>} {<-R>} {<'/var/lib/dietpi'>}]
              redirects: [
                (redir
                  op: <Id.Redir_AndGreat '&>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<rm>} {<-R>} {<'/var/tmp/dietpi'>}]
              redirects: [
                (redir
                  op: <Id.Redir_AndGreat '&>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<rm>} {<'/root/DietPi-Automation.log'>}]
              redirects: [
                (redir
                  op: <Id.Redir_AndGreat '&>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<rm>} {<'/boot/Automation_Format_My_Usb_Drive'>}]
              redirects: [
                (redir
                  op: <Id.Redir_AndGreat '&>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
              ]
              do_fork: T
            )
          ]
          spids: [1220 1248]
        )
      ]
      else_action: [(C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Non-DietPi system'>)})]
    )
    (C {<echo>} {<-e>} {(SQ )})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<0>} {(SQ <'Step 1: Initial prep to allow this script to function:'>)})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Updating APT:'>)})
    (C {<G_RUN_CMD>} {<mkdir>} {<-p>} {<'/var/tmp/dietpi/logs'>})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <'Installing core packages, required for next stage of this script:'>)}
    )
    (C {<G_AGI>} {<apt-transport-https>} {<unzip>} {<whiptail>})
    (C {<echo>} {<-e>} {(SQ )})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<0>} {(SQ <'Step 2: Hardware selection:'>)})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
          op: assign_op.Equal
          rhs: {(SQ <'Hardware selection:'>)}
          spids: [1550]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_DESC)
          op: assign_op.Equal
          rhs: 
            {
              (SQ 
                <
'Please select the current device this is being installed on:\\n - NB: Select "Generic device" if not listed.'
                >
              )
            }
          spids: [1556]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_DEFAULT_ITEM)
          op: assign_op.Equal
          rhs: {<22>}
          spids: [1562]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_MENU_ARRAY)
          op: assign_op.Equal
          rhs: 
            {
              (sh_array_literal
                left: <Id.Op_LParen _>
                words: [
                  {(SQ )}
                  {
                    (SQ 
                      <
'────Other──────────────────────────────'
                      >
                    )
                  }
                  {(SQ <22>)}
                  {(SQ <'Generic device (unknown to DietPi)'>)}
                  {(SQ )}
                  {
                    (SQ 
                      <
'────SBC────────────────────────────────'
                      >
                    )
                  }
                  {(SQ <52>)}
                  {(SQ <'Asus Tinker Board'>)}
                  {(SQ <51>)}
                  {(SQ <'BananaPi Pro (Lemaker)'>)}
                  {(SQ <50>)}
                  {(SQ <'BananaPi M2+ (sinovoip)'>)}
                  {(SQ <71>)}
                  {(SQ <'Beagle Bone Black'>)}
                  {(SQ <66>)}
                  {(SQ <'NanoPi M1 Plus'>)}
                  {(SQ <65>)}
                  {(SQ <'NanoPi NEO 2'>)}
                  {(SQ <64>)}
                  {(SQ <'NanoPi NEO Air'>)}
                  {(SQ <63>)}
                  {(SQ <'NanoPi M1/T1'>)}
                  {(SQ <62>)}
                  {(SQ <'NanoPi M3/T3'>)}
                  {(SQ <61>)}
                  {(SQ <'NanoPi M2/T2'>)}
                  {(SQ <60>)}
                  {(SQ <'NanoPi Neo'>)}
                  {(SQ <13>)}
                  {(SQ <'Odroid U3'>)}
                  {(SQ <12>)}
                  {(SQ <'Odroid C2'>)}
                  {(SQ <11>)}
                  {(SQ <'Odroid XU3/4/HC1'>)}
                  {(SQ <10>)}
                  {(SQ <'Odroid C1'>)}
                  {(SQ <38>)}
                  {(SQ <'OrangePi PC 2'>)}
                  {(SQ <37>)}
                  {(SQ <'OrangePi Prime'>)}
                  {(SQ <36>)}
                  {(SQ <'OrangePi Win'>)}
                  {(SQ <35>)}
                  {(SQ <'OrangePi Zero Plus 2 (H3/H5)'>)}
                  {(SQ <34>)}
                  {(SQ <'OrangePi Plus'>)}
                  {(SQ <33>)}
                  {(SQ <'OrangePi Lite'>)}
                  {(SQ <32>)}
                  {(SQ <'OrangePi Zero (H2+)'>)}
                  {(SQ <31>)}
                  {(SQ <'OrangePi One'>)}
                  {(SQ <30>)}
                  {(SQ <'OrangePi PC'>)}
                  {(SQ <40>)}
                  {(SQ <'Pine A64'>)}
                  {(SQ <3>)}
                  {(SQ <'Raspberry Pi 3'>)}
                  {(SQ <2>)}
                  {(SQ <'Raspberry Pi 2'>)}
                  {(SQ <1>)}
                  {(SQ <'Raspberry Pi 1/Zero (512mb)'>)}
                  {(SQ <0>)}
                  {(SQ <'Raspberry Pi 1 (256mb)'>)}
                  {(SQ <43>)}
                  {(SQ <Rock64>)}
                  {(SQ <70>)}
                  {(SQ <'Sparky SBC'>)}
                  {(SQ )}
                  {
                    (SQ 
                      <
'────PC─────────────────────────────────'
                      >
                    )
                  }
                  {(SQ <21>)}
                  {(SQ <'x86_64 Native PC'>)}
                  {(SQ <20>)}
                  {(SQ <'x86_64 VMware/VirtualBox'>)}
                ]
              )
            }
          spids: [1566]
        )
      ]
    )
    (C {<Run_Whiptail>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:G_HW_MODEL)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$WHIP_RETURN_VALUE')}
          spids: [1909]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(DQ <'Setting G_HW_MODEL index of: '> ($ Id.VSub_DollarName '$G_HW_MODEL'))}
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {
        (DQ <'CPU ARCH = '> ($ Id.VSub_DollarName '$G_HW_ARCH') <' : '> 
          ($ Id.VSub_DollarName '$G_HW_ARCH_DESCRIPTION')
        )
      }
    )
    (command.Simple
      words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName '$G_HW_MODEL'))}]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {<'/etc/.dietpi_hw_model_identifier'>}
        )
      ]
      do_fork: T
    )
    (C {<echo>} {<-e>} {(SQ )})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<0>} {(SQ <'Step 3: Distro selection:'>)})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
          op: assign_op.Equal
          rhs: {(SQ <'Distro selection:'>)}
          spids: [1995]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_DESC)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                <
'Please select a distro to install on this system. Selecting a distro that is older than the current installed on system, is not supported.'
                > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nCurrently installed:'> 
                <Id.Lit_BadBackslash '\\'> <'n - '> ($ Id.VSub_DollarName '$G_DISTRO') <' '> ($ Id.VSub_DollarName '$G_DISTRO_NAME')
              )
            }
          spids: [2001]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_DEFAULT_ITEM)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$G_DISTRO')}
          spids: [2016]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DISTRO_LIST_ARRAY)
          op: assign_op.Equal
          rhs: 
            {
              (sh_array_literal
                left: <Id.Op_LParen _>
                words: [
                  {(SQ <3>)}
                  {(SQ <'Jessie (oldstable, just if you need to avoid upgrade to current release)'>)}
                  {(SQ <4>)}
                  {(SQ <'Stretch (current stable release, recommended)'>)}
                  {(SQ <5>)}
                  {(SQ <'Buster (testing only, not officially supported)'>)}
                ]
              )
            }
          spids: [2020]
        )
      ]
    )
    (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: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Slash
                    left: 
                      {
                        (braced_var_sub
                          token: <Id.VSub_Name DISTRO_LIST_ARRAY>
                          prefix_op: (Id.VSub_Pound)
                          bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                        )
                      }
                    right: {<Id.Lit_Digits 2>}
                  )
              )
            }
        )
      update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>)
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:temp_distro_available)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [2100]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:temp_distro_index)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (word_part.ArithSub
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Plus
                            left: {($ Id.VSub_DollarName '$i')}
                            right: {<Id.Lit_Digits 3>}
                          )
                      )
                    }
                  spids: [2104]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_Less
                                  left: {($ Id.VSub_DollarName '$temp_distro_index')}
                                  right: {($ Id.VSub_DollarName '$G_DISTRO')}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<G_DIETPI-NOTIFY>} {<2>} 
                      {
                        (DQ <'Disabled Distro downgrade: index '> 
                          ($ Id.VSub_DollarName '$temp_distro_index')
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:temp_distro_available)
                          op: assign_op.Equal
                          rhs: {<0>}
                          spids: [2150]
                        )
                      ]
                    )
                  ]
                  spids: [2122 2136]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: {($ Id.VSub_DollarName '$temp_distro_available')}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:WHIP_MENU_ARRAY)
                          op: assign_op.PlusEqual
                          rhs: 
                            {
                              (sh_array_literal
                                left: <Id.Op_LParen _>
                                words: [
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: <Id.VSub_Name DISTRO_LIST_ARRAY>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: 
                                              {
                                                (word_part.ArithSub
                                                  anode: 
                                                    (arith_expr.Binary
                                                      op_id: Id.Arith_Star
                                                      left: {($ Id.VSub_DollarName '$i')}
                                                      right: {<Id.Lit_Digits 2>}
                                                    )
                                                )
                                              }
                                          )
                                      )
                                    )
                                  }
                                  {
                                    (DQ 
                                      (braced_var_sub
                                        token: <Id.VSub_Name DISTRO_LIST_ARRAY>
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: 
                                              {
                                                (word_part.ArithSub
                                                  anode: 
                                                    (arith_expr.Binary
                                                      op_id: Id.Arith_Plus
                                                      left: 
                                                        (arith_expr.Binary
                                                          op_id: Id.Arith_Star
                                                          left: {($ Id.VSub_DollarName '$i')}
                                                          right: {<Id.Lit_Digits 2>}
                                                        )
                                                      right: {<Id.Lit_Digits 1>}
                                                    )
                                                )
                                              }
                                          )
                                      )
                                    )
                                  }
                                ]
                              )
                            }
                          spids: [2177]
                        )
                      ]
                    )
                  ]
                  spids: [2163 2173]
                )
              ]
            )
          ]
        )
    )
    (C {<unset>} {<DISTRO_LIST_ARRAY>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-z>} 
                      {
                        (braced_var_sub
                          token: <Id.VSub_Name WHIP_MENU_ARRAY>
                          suffix_op: (suffix_op.Unary op_id:Id.VTest_Plus arg_word:{<x>})
                        )
                      } {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<G_DIETPI-NOTIFY>} {<1>} 
              {(SQ <'Error: No available Distros for this system. Aborting...'>)}
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [2244 2259]
        )
      ]
    )
    (C {<Run_Whiptail>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DISTRO_TARGET)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$WHIP_RETURN_VALUE')}
          spids: [2285]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$DISTRO_TARGET')}
                          right: {<Id.Lit_Digits 3>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DISTRO_TARGET_NAME)
                  op: assign_op.Equal
                  rhs: {(SQ <jessie>)}
                  spids: [2307]
                )
              ]
            )
          ]
          spids: [2289 2303]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$DISTRO_TARGET')}
                          right: {<Id.Lit_Digits 4>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DISTRO_TARGET_NAME)
                  op: assign_op.Equal
                  rhs: {(SQ <stretch>)}
                  spids: [2332]
                )
              ]
            )
          ]
          spids: [2314 2328]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$DISTRO_TARGET')}
                          right: {<Id.Lit_Digits 5>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DISTRO_TARGET_NAME)
                  op: assign_op.Equal
                  rhs: {(SQ <buster>)}
                  spids: [2357]
                )
              ]
            )
          ]
          spids: [2339 2353]
        )
      ]
    )
    (C {<echo>} {<-e>} {(SQ )})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<0>} {(SQ <'Step 4: APT configuration:'>)})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Removing conflicting apt sources.list.d'>)})
    (command.Simple
      words: [{<rm>} {<'/etc/apt/sources.list.d/deb-multimedia.list'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {
        (DQ <'Setting APT sources.list: '> ($ Id.VSub_DollarName '$DISTRO_TARGET_NAME') <' '> 
          ($ Id.VSub_DollarName '$DISTRO_TARGET')
        )
      }
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Less
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 10>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<_EOF_>}
                      here_end_span_id: 2497
                      stdin_parts: [
                        <'deb https://www.mirrorservice.org/sites/archive.raspbian.org/raspbian '>
                        ($ Id.VSub_DollarName '$DISTRO_TARGET_NAME')
                        <' main contrib non-free rpi\n'>
                      ]
                    )
                )
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/etc/apt/sources.list'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<_EOF_>}
                      here_end_span_id: 2514
                      stdin_parts: [
                        <'deb https://archive.raspberrypi.org/debian/ '>
                        ($ Id.VSub_DollarName '$DISTRO_TARGET_NAME')
                        <' main ui\n'>
                      ]
                    )
                )
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/etc/apt/sources.list.d/raspi.list'>}
                )
              ]
              do_fork: T
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_Great
                      left: {($ Id.VSub_DollarName '$DISTRO_TARGET')}
                      right: {<Id.Lit_Digits 4>}
                    )
                )
                (C {<sed>} {<-i>} 
                  {(DQ <'s/'> ($ Id.VSub_DollarName '$DISTRO_TARGET_NAME') <'/stretch/'>)} {<'/etc/apt/sources.list.d/raspi.list'>}
                )
              ]
            )
          ]
          spids: [2465 2479]
        )
      ]
      else_action: [
        (command.Simple
          words: [{<cat>}]
          redirects: [
            (redir
              op: <Id.Redir_DLess '<<'>
              loc: (redir_loc.Fd fd:0)
              arg: 
                (redir_param.HereDoc
                  here_begin: {<_EOF_>}
                  here_end_span_id: 2579
                  stdin_parts: [
                    <'deb https://deb.debian.org/debian/ '>
                    ($ Id.VSub_DollarName '$DISTRO_TARGET_NAME')
                    <' main contrib non-free\n'>
                    <'deb https://deb.debian.org/debian/ '>
                    ($ Id.VSub_DollarName '$DISTRO_TARGET_NAME')
                    <'-updates main contrib non-free\n'>
                    <'deb https://deb.debian.org/debian-security/ '>
                    ($ Id.VSub_DollarName '$DISTRO_TARGET_NAME')
                    <'/updates main contrib non-free\n'>
                    <'deb https://deb.debian.org/debian/ '>
                    ($ Id.VSub_DollarName '$DISTRO_TARGET_NAME')
                    <'-backports main contrib non-free\n'>
                  ]
                )
            )
            (redir
              op: <Id.Redir_Great '>'>
              loc: (redir_loc.Fd fd:1)
              arg: {<'/etc/apt/sources.list'>}
            )
          ]
          do_fork: T
        )
        (command.If
          arms: [
            (if_arm
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Less
                              left: {($ Id.VSub_DollarName '$G_DISTRO')}
                              right: {<Id.Lit_Digits 4>}
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              action: [(C {<sed>} {<-i>} {(SQ <'s/https:/http:/g'>)} {<'/etc/apt/sources.list'>})]
              spids: [2586 2600]
            )
            (if_arm
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.DParen
                          child: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Great
                              left: {($ Id.VSub_DollarName '$DISTRO_TARGET')}
                              right: {<Id.Lit_Digits 4>}
                            )
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              action: [(C {<sed>} {<-i>} {(SQ <'/backports/d'>)} {<'/etc/apt/sources.list'>})]
              spids: [2620 2634]
            )
          ]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(DQ <'Updating APT for '> ($ Id.VSub_DollarName '$DISTRO_TARGET_NAME') <':'>)}
    )
    (C {<G_RUN_CMD>} {<apt-get>} {<clean>})
    (C {<G_AGUP>})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {
        (DQ 
          <'Marking all packages as auto installed first, to allow effective autoremove afterwards'>
        )
      }
    )
    (C {<G_RUN_CMD>} {<apt-mark>} {<auto>} 
      {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<apt-mark>} {<showmanual>}))}
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {
        (DQ 
          <
'Temporary disable automatic recommends/suggests installation and allow them to be autoremoved:'
          >
        )
      }
    )
    (C {<export>} 
      {<Id.Lit_VarLike 'G_ERROR_HANDLER_COMMAND='> (SQ <'/etc/apt/apt.conf.d/99-dietpi-norecommends'>)}
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<_EOF_>}
              here_end_span_id: 2763
              stdin_parts: [
                <'APT::Install-Recommends '>
                <Id.Right_DoubleQuote '"'>
                <false>
                <Id.Right_DoubleQuote '"'>
                <';\n'>
                <'APT::Install-Suggests '>
                <Id.Right_DoubleQuote '"'>
                <false>
                <Id.Right_DoubleQuote '"'>
                <';\n'>
                <'APT::AutoRemove::RecommendsImportant '>
                <Id.Right_DoubleQuote '"'>
                <false>
                <Id.Right_DoubleQuote '"'>
                <';\n'>
                <'APT::AutoRemove::SuggestsImportant '>
                <Id.Right_DoubleQuote '"'>
                <false>
                <Id.Right_DoubleQuote '"'>
                <';\n'>
              ]
            )
        )
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$G_ERROR_HANDLER_COMMAND')}
        )
      ]
      do_fork: T
    )
    (C {<export>} {<Id.Lit_VarLike 'G_ERROR_HANDLER_EXITCODE='> ($ Id.VSub_QMark '$?')})
    (C {<G_ERROR_HANDLER>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Forcing use of modified apt configs'>)})
    (C {<export>} 
      {<Id.Lit_VarLike 'G_ERROR_HANDLER_COMMAND='> (SQ <'/etc/apt/apt.conf.d/99-dietpi-forceconf'>)}
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<_EOF_>}
              here_end_span_id: 2816
              stdin_parts: [
                <'Dpkg::options {\n'>
                <'   '>
                <Id.Right_DoubleQuote '"'>
                <--force-confdef>
                <Id.Right_DoubleQuote '"'>
                <';\n'>
                <'   '>
                <Id.Right_DoubleQuote '"'>
                <--force-confold>
                <Id.Right_DoubleQuote '"'>
                <';\n'>
                <'}\n'>
              ]
            )
        )
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$G_ERROR_HANDLER_COMMAND')}
        )
      ]
      do_fork: T
    )
    (C {<export>} {<Id.Lit_VarLike 'G_ERROR_HANDLER_EXITCODE='> ($ Id.VSub_QMark '$?')})
    (C {<G_ERROR_HANDLER>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
          op: assign_op.Equal
          rhs: 
            {
              (sh_array_literal
                left: <Id.Op_LParen _>
                words: [
                  {(SQ <apt-transport-https>)}
                  {(SQ <apt-utils>)}
                  {(SQ <bash-completion>)}
                  {(SQ <bc>)}
                  {(SQ <bzip2>)}
                  {(SQ <ca-certificates>)}
                  {(SQ <console-setup>)}
                  {(SQ <cron>)}
                  {(SQ <curl>)}
                  {(SQ <dbus>)}
                  {(SQ <debconf>)}
                  {(SQ <dosfstools>)}
                  {(SQ <dphys-swapfile>)}
                  {(SQ <ethtool>)}
                  {(SQ <fake-hwclock>)}
                  {(SQ <fbset>)}
                  {(SQ <gnupg>)}
                  {(SQ <hfsplus>)}
                  {(SQ <htop>)}
                  {(SQ <initramfs-tools>)}
                  {(SQ <iputils-ping>)}
                  {(SQ <isc-dhcp-client>)}
                  {(SQ <locales>)}
                  {(SQ <nano>)}
                  {(SQ <net-tools>)}
                  {(SQ <ntfs-3g>)}
                  {(SQ <ntp>)}
                  {(SQ <p7zip-full>)}
                  {(SQ <parted>)}
                  {(SQ <psmisc>)}
                  {(SQ <resolvconf>)}
                  {(SQ <sudo>)}
                  {(SQ <systemd-sysv>)}
                  {(SQ <tzdata>)}
                  {(SQ <unzip>)}
                  {(SQ <usbutils>)}
                  {(SQ <wget>)}
                  {(SQ <whiptail>)}
                  {(SQ <wput>)}
                  {(SQ <zip>)}
                ]
              )
            }
          spids: [2832]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Less
                          left: {($ Id.VSub_DollarName '$G_DISTRO')}
                          right: {<Id.Lit_Digits 4>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
                  op: assign_op.PlusEqual
                  rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <dropbear>)}])}
                  spids: [3184]
                )
              ]
            )
          ]
          spids: [3166 3180]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
              op: assign_op.PlusEqual
              rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <dropbear-run>)}])}
              spids: [3200]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_GreatEqual
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 10>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<G_AGI>} {<debian-archive-keyring>})]
          spids: [3224 3238]
        )
      ]
      else_action: [(C {<G_AGI>} {<raspbian-archive-keyring>})]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_NEqual
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 20>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<G_AGI>} {<firmware-realtek>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
                  op: assign_op.PlusEqual
                  rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <hdparm>)}])}
                  spids: [3296]
                )
              ]
            )
          ]
          spids: [3270 3284]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$G_HW_ARCH')}
                          right: {<Id.Lit_Digits 10>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<G_AGI>} {<linux-image-amd64>})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DParen
                  child: 
                    (arith_expr.Binary
                      op_id: Id.Arith_NEqual
                      left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                      right: {<Id.Lit_Digits 20>}
                    )
                )
                (C {<G_AGI>} {<firmware-linux-nonfree>})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.Pipeline
                  children: [
                    (C {<grep>} {(SQ <vendor_id>)} {<'/proc/cpuinfo'>})
                    (C {<grep>} {<-qi>} {(SQ <intel>)})
                  ]
                  negated: F
                )
                (C {<G_AGI>} {<intel-microcode>})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.Pipeline
                  children: [
                    (C {<grep>} {(SQ <vendor_id>)} {<'/proc/cpuinfo'>})
                    (C {<grep>} {<-qi>} {(SQ <amd>)})
                  ]
                  negated: F
                )
                (C {<G_AGI>} {<amd64-microcode>})
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (command.DParen
                                  child: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<dpkg>} {<--get-selections>})
                                              (C {<grep>} {<-ci>} {<-m1>} 
                                                {(SQ <'^grub-efi-amd64[[:space:]]'>)}
                                              )
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                )
                                (C {<Id.Lit_LBracket '['>} {<-d>} {<'/boot/efi'>} {<Id.Lit_RBracket ']'>})
                              ]
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<G_AGI>} {<grub-efi-amd64>})]
                  spids: [3440 3477]
                )
              ]
              else_action: [(C {<G_AGI>} {<grub-pc>})]
            )
          ]
          spids: [3332 3346]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Less
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 10>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<apt-mark>} {<unhold>} {<libraspberrypi-bin>} {<libraspberrypi0>} 
              {<raspberrypi-bootloader>} {<raspberrypi-kernel>} {<raspberrypi-sys-mods>} {<raspi-copies-and-fills>}
            )
            (C {<rm>} {<-R>} {<'/lib/modules/'> <Id.Lit_Star '*'>})
            (C {<G_AGI>} {<libraspberrypi-bin>} {<libraspberrypi0>} {<raspberrypi-bootloader>} 
              {<raspberrypi-kernel>} {<raspberrypi-sys-mods>} {<raspi-copies-and-fills>} {<--reinstall>}
            )
          ]
          spids: [3513 3527]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 12>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<G_AGI>} {<linux-image-arm64-odroid-c2>})]
          spids: [3579 3593]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 11>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<G_AGI>} 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Pipeline
                      children: [
                        (C {<dpkg>} {<--get-selections>})
                        (C {<grep>} {(SQ <'^linux-image'>)})
                        (C {<awk>} {(SQ <'{print $1}'>)})
                      ]
                      negated: F
                    )
                )
              }
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.DParen
                  child: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<dpkg>} {<--get-selections>})
                              (C {<grep>} {<-ci>} {<-m1>} {(SQ <'^linux-image'>)})
                            ]
                            negated: F
                          )
                      )
                    }
                )
                (C {<G_AGI>} {<linux-image-armhf-odroid-xu3>})
              ]
            )
          ]
          spids: [3607 3621]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 10>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<G_AGI>} {<linux-image-armhf-odroid-c1>})]
          spids: [3689 3703]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 43>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<G_AGI>} {<linux-rock64-package>})]
          spids: [3717 3731]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 71>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<G_AGI>} {<device-tree-compiler>})]
          spids: [3745 3759]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:AUTO_DETECT_KERN_PKG)
              op: assign_op.Equal
              rhs: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [
                          (C {<dpkg>} {<--get-selections>})
                          (C {<grep>} {(SQ <'^linux-image'>)})
                          (C {<awk>} {(SQ <'{print $1}'>)})
                        ]
                        negated: F
                      )
                  )
                }
              spids: [3781]
            )
          ]
        )
        (command.If
          arms: [
            (if_arm
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<-n>} 
                          {(DQ ($ Id.VSub_DollarName '$AUTO_DETECT_KERN_PKG'))} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              action: [(C {<G_AGI>} {($ Id.VSub_DollarName '$AUTO_DETECT_KERN_PKG')})]
              spids: [3805 3818]
            )
          ]
          else_action: [
            (C {<G_DIETPI-NOTIFY>} {<2>} 
              {
                (SQ 
                  <
'Unable to find kernel packages for installation. Assuming non-APT/.deb kernel installation.'
                  >
                )
              }
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:AUTO_DETECT_DTB_PKG)
              op: assign_op.Equal
              rhs: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [
                          (C {<dpkg>} {<--get-selections>})
                          (C {<grep>} {(SQ <'^linux-dtb-'>)})
                          (C {<awk>} {(SQ <'{print $1}'>)})
                        ]
                        negated: F
                      )
                  )
                }
              spids: [3850]
            )
          ]
        )
        (command.If
          arms: [
            (if_arm
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<-n>} 
                          {(DQ ($ Id.VSub_DollarName '$AUTO_DETECT_DTB_PKG'))} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              action: [(C {<G_AGI>} {($ Id.VSub_DollarName '$AUTO_DETECT_DTB_PKG')})]
              spids: [3874 3887]
            )
          ]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'WiFi selection'>)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_TITLE)
          op: assign_op.Equal
          rhs: {(SQ <'WiFi required?'>)}
          spids: [3959]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_DESC)
          op: assign_op.Equal
          rhs: {(SQ <'Please select an option'>)}
          spids: [3965]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_DEFAULT_ITEM)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [3971]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:WHIP_MENU_ARRAY)
          op: assign_op.Equal
          rhs: 
            {
              (sh_array_literal
                left: <Id.Op_LParen _>
                words: [
                  {(SQ <0>)}
                  {(DQ <'I don\'t require WiFi, do not install.'>)}
                  {(SQ <1>)}
                  {(SQ <'I require WiFi functionality, keep/install related packages.'>)}
                ]
              )
            }
          spids: [3975]
        )
      ]
    )
    (C {<Run_Whiptail>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$WHIP_RETURN_VALUE')}
                          right: {<Id.Lit_Digits 1>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Marking WiFi as needed'>)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
                  op: assign_op.PlusEqual
                  rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <crda>)}])}
                  spids: [4034]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
                  op: assign_op.PlusEqual
                  rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <firmware-atheros>)}])}
                  spids: [4045]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
                  op: assign_op.PlusEqual
                  rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <firmware-brcm80211>)}])}
                  spids: [4056]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
                  op: assign_op.PlusEqual
                  rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <firmware-ralink>)}])}
                  spids: [4067]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
                  op: assign_op.PlusEqual
                  rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <iw>)}])}
                  spids: [4078]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
                  op: assign_op.PlusEqual
                  rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <rfkill>)}])}
                  spids: [4089]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
                  op: assign_op.PlusEqual
                  rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <wireless-tools>)}])}
                  spids: [4100]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:aPACKAGES_REQUIRED_INSTALL)
                  op: assign_op.PlusEqual
                  rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[{(SQ <wpasupplicant>)}])}
                  spids: [4111]
                )
              ]
            )
          ]
          spids: [4006 4020]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(DQ <'Generating list of minimal packages, required for DietPi installation:'>)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:INSTALL_PACKAGES)
          op: assign_op.Equal
          rhs: {(SQ )}
          spids: [4137]
        )
      ]
    )
    (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: 
            {
              (braced_var_sub
                token: <Id.VSub_Name aPACKAGES_REQUIRED_INSTALL>
                prefix_op: (Id.VSub_Pound)
                bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
              )
            }
        )
      update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:<Id.Lit_ArithVarLike i>)
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:INSTALL_PACKAGES)
                  op: assign_op.PlusEqual
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Name aPACKAGES_REQUIRED_INSTALL>
                          bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName '$i')})
                        ) <' '>
                      )
                    }
                  spids: [4175]
                )
              ]
            )
          ]
        )
    )
    (C {<unset>} {<aPACKAGES_REQUIRED_INSTALL>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Marking required packages as manually installed:'>)})
    (C {<G_RUN_CMD>} {<apt-mark>} {<manual>} {($ Id.VSub_DollarName '$INSTALL_PACKAGES')})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Purging APT with autoremoval:'>)})
    (C {<G_AGA>})
    (C {<echo>} {<-e>} {(SQ )})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<0>} {(SQ <'Step 5: APT installations:'>)})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Upgrading existing APT installed packages:'>)})
    (C {<G_AGDUG>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:G_DISTRO)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$DISTRO_TARGET')}
          spids: [4299]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:G_DISTRO_NAME)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$DISTRO_TARGET_NAME')}
          spids: [4303]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(DQ <'Disabling swapfile generation for dphys-swapfile during install'>)}
    )
    (command.Simple
      words: [{<G_RUN_CMD>} {<echo>} {<-e>} {(DQ <'CONF_SWAPSIZE=0'>)}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/etc/dphys-swapfile'>})]
      do_fork: T
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Installing core DietPi pre-req APT packages'>)})
    (C {<G_AGI>} {($ Id.VSub_DollarName '$INSTALL_PACKAGES')})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Returning installation of recommends back to default'>)})
    (C {<G_RUN_CMD>} {<rm>} {<'/etc/apt/apt.conf.d/99-dietpi-norecommends'>})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(DQ <'Purging APT with autoremoval (in case of DISTRO upgrade/downgrade):'>)}
    )
    (C {<G_AGA>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DAmp
                          left: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Great
                              left: {($ Id.VSub_DollarName '$G_DISTRO')}
                              right: {<Id.Lit_Digits 3>}
                            )
                          right: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Great
                              left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                              right: {<Id.Lit_Digits 9>}
                            )
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<sed>} {<-i>} {(SQ <'s/http:/https:/g'>)} {<'/etc/apt/sources.list'>})]
          spids: [4390 4412]
        )
      ]
    )
    (C {<echo>} {<-e>} {(SQ )})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<0>} {(SQ <'Step 6: Downloading and installing DietPi sourcecode'>)})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:INTERNET_ADDRESS)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'https://github.com/Fourdee/DietPi/archive/'> ($ Id.VSub_DollarName '$GIT_BRANCH') 
                <.zip>
              )
            }
          spids: [4476]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(DQ <'Checking connection to '> ($ Id.VSub_DollarName '$INTERNET_ADDRESS'))}
    )
    (C {<G_CHECK_URL>} {(DQ ($ Id.VSub_DollarName '$INTERNET_ADDRESS'))})
    (C {<G_RUN_CMD>} {<wget>} {(DQ ($ Id.VSub_DollarName '$INTERNET_ADDRESS'))} {<-O>} {<package.zip>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Extracting DietPi sourcecode'>)})
    (C {<G_RUN_CMD>} {<unzip>} {<-o>} {<package.zip>})
    (C {<rm>} {<package.zip>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Removing files not required'>)})
    (C {<rm>} {<DietPi-> <Id.Lit_Star '*'> <'/CHANGELOG.txt'>})
    (C {<rm>} {<DietPi-> <Id.Lit_Star '*'> <'/PREP_SYSTEM_FOR_DIETPI.sh'>})
    (C {<rm>} {<DietPi-> <Id.Lit_Star '*'> <'/TESTING-BRANCH.md'>})
    (C {<rm>} {<DietPi-> <Id.Lit_Star '*'> <'/uEnv.txt'>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Creating /boot'>)})
    (C {<G_RUN_CMD>} {<mkdir>} {<-p>} {<'/boot'>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Moving to /boot'>)})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 10>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<G_RUN_CMD>} {<mv>} {<DietPi-> <Id.Lit_Star '*'> <'/boot_c1.ini'>} {<'/boot/boot.ini'>})
          ]
          spids: [4625 4639]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 11>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<G_RUN_CMD>} {<mv>} {<DietPi-> <Id.Lit_Star '*'> <'/boot_xu4.ini'>} {<'/boot/boot.ini'>})
          ]
          spids: [4655 4669]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 12>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<G_RUN_CMD>} {<mv>} {<DietPi-> <Id.Lit_Star '*'> <'/boot_c2.ini'>} {<'/boot/boot.ini'>})
          ]
          spids: [4685 4699]
        )
      ]
    )
    (C {<rm>} {<DietPi-> <Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'> <.ini>})
    (C {<G_RUN_CMD>} {<cp>} {<-R>} {<DietPi-> <Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'>} {<'/boot/'>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Cleaning up extracted files'>)})
    (C {<G_RUN_CMD>} {<rm>} {<-R>} {<DietPi-> <Id.Lit_Star '*'>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Setting execute permissions for /boot/dietpi'>)})
    (C {<G_RUN_CMD>} {<chmod>} {<-R>} {<Id.Lit_Other '+'> <x>} {<'/boot/dietpi'>})
    (C {<echo>} {<-e>} {(SQ )})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<0>} {(DQ <'Step 7: Prep system for DietPi ENV:'>)})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Deleting list of known users, not required by DietPi'>)})
    (command.Simple
      words: [{<userdel>} {<-f>} {<pi>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<userdel>} {<-f>} {<test>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<userdel>} {<-f>} {<odroid>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<userdel>} {<-f>} {<rock64>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<userdel>} {<-f>} {<linaro>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<userdel>} {<-f>} {<dietpi>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<userdel>} {<-f>} {<debian>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Removing misc files/folders/services, not required by DietPi'>)})
    (command.Simple
      words: [{<rm>} {<-R>} {<'/home'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<-R>} {<'/media'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<-R>} {<'/selinux'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<-R>} {<'/var/www/'> <Id.Lit_Star '*'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<-R>} {<'/usr/src/'> <Id.Lit_Star '*'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<-R>} {<'/root/.cache/'> <Id.Lit_Star '*'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<-R>} {<'/root/.local/'> <Id.Lit_Star '*'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<-R>} {<'/root/.config/'> <Id.Lit_Star '*'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<-R>} {<'/usr/share/man'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<-R>} {<'/usr/share/doc'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<-R>} {<'/usr/share/doc-base'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<-R>} {<'/usr/share/calendar'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<'/var/cache/debconf/'> <Id.Lit_Star '*'> <-old>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<-R>} {<'/usr/share/fonts/'> <Id.Lit_Star '*'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<-R>} {<'/usr/share/icons/'> <Id.Lit_Star '*'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<'/etc/init.d/resize2fs'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<'/etc/update-motd.d/'> <Id.Lit_Star '*'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<systemctl>} {<disable>} {<firstrun>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<'/etc/init.d/firstrun'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<systemctl>} {<disable>} {<log2ram.service>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<systemctl>} {<stop>} {<log2ram.service>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<'/usr/local/sbin/log2ram'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<'/etc/systemd/system/log2ram.service'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<systemctl>} {<daemon-reload>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<'/etc/cron.hourly/log2ram'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<'/etc/init.d/cpu_governor'>} {<Meveric>}]
      redirects: [
        (redir
          op: <Id.Redir_AndGreat '&>'>
          loc: (redir_loc.Fd fd:1)
          arg: {<'/dev/null'> <Id.Lit_Pound '#'>}
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<'/etc/systemd/system/cpu_governor.service'>} {<Meveric>}]
      redirects: [
        (redir
          op: <Id.Redir_AndGreat '&>'>
          loc: (redir_loc.Fd fd:1)
          arg: {<'/dev/null'> <Id.Lit_Pound '#'>}
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<systemctl>} {<disable>} {<resize2fs>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<'/etc/systemd/system/resize2fs.service'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<'/etc/profile.d/check_first_login_reboot.sh'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Creating DietPi core environment'>)})
    (C {<G_RUN_CMD>} {<'/boot/dietpi/func/dietpi-set_core_environment'>})
    (command.Simple
      words: [
        {<echo>}
        {<-e>}
        {
          (DQ <'Samba client can be installed and setup by DietPi-Config.'> <Id.Lit_BadBackslash '\\'> 
            <'nSimply run: dietpi-config and select the Networking option: NAS/Misc menu'>
          )
        }
      ]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/mnt/samba/readme.txt'>})
      ]
      do_fork: T
    )
    (command.Simple
      words: [
        {<echo>}
        {<-e>}
        {
          (DQ <'FTP client mount can be installed and setup by DietPi-Config.'> 
            <Id.Lit_BadBackslash '\\'> <'nSimply run: dietpi-config and select the Networking option: NAS/Misc menu'>
          )
        }
      ]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {<'/mnt/ftp_client/readme.txt'>}
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [
        {<echo>}
        {<-e>}
        {
          (DQ <'NFS client can be installed and setup by DietPi-Config.'> <Id.Lit_BadBackslash '\\'> 
            <'nSimply run: dietpi-config and select the Networking option: NAS/Misc menu'>
          )
        }
      ]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {<'/mnt/nfs_client/readme.txt'>}
        )
      ]
      do_fork: T
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Deleting all log files /var/log'>)})
    (command.Simple
      words: [{<'/boot/dietpi/dietpi-logclear'>} {<2>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Generating DietPi /etc/fstab'>)})
    (C {<G_RUN_CMD>} {<'/boot/dietpi/dietpi-drive_manager'>} {<4>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Less
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 10>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PARTUUID_CURRENT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<blkid>} {<'/dev/mmcblk0p1'>} {<-s>} {<PARTUUID>} {<-o>} {<value>})
                      )
                    }
                  spids: [5444]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:UUID_CURRENT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<blkid>} {<'/dev/mmcblk0p1'>} {<-s>} {<UUID>} {<-o>} {<value>})
                      )
                    }
                  spids: [5460]
                )
              ]
            )
            (C {<sed>} {<-i>} 
              {
                (DQ <'s#^UUID='> ($ Id.VSub_DollarName '$UUID_CURRENT') <'#PARTUUID='> 
                  ($ Id.VSub_DollarName '$PARTUUID_CURRENT') <'#g'>
                )
              } {<'/etc/fstab'>}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PARTUUID_CURRENT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<blkid>} {<'/dev/mmcblk0p2'>} {<-s>} {<PARTUUID>} {<-o>} {<value>})
                      )
                    }
                  spids: [5492]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:UUID_CURRENT)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<blkid>} {<'/dev/mmcblk0p2'>} {<-s>} {<UUID>} {<-o>} {<value>})
                      )
                    }
                  spids: [5508]
                )
              ]
            )
            (C {<sed>} {<-i>} 
              {
                (DQ <'s#^UUID='> ($ Id.VSub_DollarName '$UUID_CURRENT') <'#PARTUUID='> 
                  ($ Id.VSub_DollarName '$PARTUUID_CURRENT') <'#g'>
                )
              } {<'/etc/fstab'>}
            )
            (C {<systemctl>} {<daemon-reload>})
          ]
          spids: [5426 5440]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Starting DietPi-RAMdisk service'>)})
    (C {<G_RUN_CMD>} {<systemctl>} {<start>} {<dietpi-ramdisk.service>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Starting DietPi-RAMlog service'>)})
    (C {<G_RUN_CMD>} {<systemctl>} {<start>} {<dietpi-ramlog.service>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Updating DietPi HW_INFO'>)})
    (C {<'/DietPi/dietpi/dietpi-obtain_hw_model'>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Configuring Network:'>)})
    (command.Simple
      words: [{<rm>} {<-R>} {<'/etc/network/interfaces'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (C {<G_RUN_CMD>} {<cp>} {<'/boot/dietpi/conf/network_interfaces'>} {<'/etc/network/interfaces'>})
    (command.Simple
      words: [{<rm>} {<'/etc/udev/rules.d/70-persistent-net.rules'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<'/etc/udev/rules.d/70-persistant-net.rules'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 32>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<sed>} {<-i>} 
              {
                (SQ 
                  <
'/iface wlan0 inet dhcp/apre-up modprobe xradio_wlan\\npre-up iwconfig wlan0 power on'
                  >
                )
              } {<'/etc/network/interfaces'>}
            )
          ]
          spids: [5666 5680]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Tweaking DHCP timeout:'>)})
    (C {<sed>} {<-i>} {(SQ <'/^#timeout /d'>)} {<'/etc/dhcp/dhclient.conf'>})
    (C {<sed>} {<-i>} {(SQ <'/^#retry /d'>)} {<'/etc/dhcp/dhclient.conf'>})
    (C {<sed>} {<-i>} {(SQ <'/^timeout /d'>)} {<'/etc/dhcp/dhclient.conf'>})
    (C {<sed>} {<-i>} {(SQ <'/^retry /d'>)} {<'/etc/dhcp/dhclient.conf'>})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<_EOF_>}
              here_end_span_id: 5771
              stdin_parts: [<'timeout 10;\n'> <'retry 4;\n'>]
            )
        )
        (redir
          op: <Id.Redir_DGreat '>>'>
          loc: (redir_loc.Fd fd:1)
          arg: {<'/etc/dhcp/dhclient.conf'>}
        )
      ]
      do_fork: T
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Configuring hosts:'>)})
    (C {<export>} {<Id.Lit_VarLike 'G_ERROR_HANDLER_COMMAND='> (SQ <'/etc/hosts'>)})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<_EOF_>}
              here_end_span_id: 5808
              stdin_parts: [
                <'127.0.0.1    localhost\n'>
                <'127.0.1.1    DietPi\n'>
                <'::1          localhost ip6-localhost ip6-loopback\n'>
                <'ff02::1      ip6-allnodes\n'>
                <'ff02::2      ip6-allrouters\n'>
              ]
            )
        )
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$G_ERROR_HANDLER_COMMAND')}
        )
      ]
      do_fork: T
    )
    (C {<export>} {<Id.Lit_VarLike 'G_ERROR_HANDLER_EXITCODE='> ($ Id.VSub_QMark '$?')})
    (C {<G_ERROR_HANDLER>})
    (C {<export>} {<Id.Lit_VarLike 'G_ERROR_HANDLER_COMMAND='> (SQ <'/etc/hostname'>)})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<_EOF_>}
              here_end_span_id: 5840
              stdin_parts: [<'DietPi\n'>]
            )
        )
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$G_ERROR_HANDLER_COMMAND')}
        )
      ]
      do_fork: T
    )
    (C {<export>} {<Id.Lit_VarLike 'G_ERROR_HANDLER_EXITCODE='> ($ Id.VSub_QMark '$?')})
    (C {<G_ERROR_HANDLER>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Configuring htop:'>)})
    (C {<mkdir>} {<-p>} {<'/root/.config/htop'>})
    (C {<cp>} {<'/DietPi/dietpi/conf/htoprc'>} {<'/root/.config/htop/htoprc'>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Configuring hdparm:'>)})
    (C {<export>} {<Id.Lit_VarLike 'G_ERROR_HANDLER_COMMAND='> (SQ <'/etc/hdparm.conf'>)})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<_EOF_>}
              here_end_span_id: 5915
              stdin_parts: [
                <'\n'>
                <'#DietPi external USB drive. Power management settings.\n'>
                <'/dev/sda {\n'>
                <'        #10 mins\n'>
                <'        spindown_time = 120\n'>
                <'\n'>
                <'        #\n'>
                <'        apm = 254\n'>
                <'}\n'>
              ]
            )
        )
        (redir
          op: <Id.Redir_DGreat '>>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$G_ERROR_HANDLER_COMMAND')}
        )
      ]
      do_fork: T
    )
    (C {<export>} {<Id.Lit_VarLike 'G_ERROR_HANDLER_EXITCODE='> ($ Id.VSub_QMark '$?')})
    (C {<G_ERROR_HANDLER>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Configuring fakehwclock:'>)})
    (C {<sed>} {<-i>} {(DQ <'/FORCE=/c'> <Id.Lit_BadBackslash '\\'> <'FORCE=force'>)} 
      {<'/etc/default/fake-hwclock'>}
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Configuring serial consoles:'>)})
    (C {<'/DietPi/dietpi/func/dietpi-set_hardware'>} {<serialconsole>} {<disable>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Configuring ntpd:'>)})
    (C {<systemctl>} {<disable>} {<systemd-timesyncd>})
    (command.Simple
      words: [{<rm>} {<'/etc/init.d/ntp'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.DParen
          child: 
            (arith_expr.Binary
              op_id: Id.Arith_Great
              left: {($ Id.VSub_DollarName '$G_DISTRO')}
              right: {<Id.Lit_Digits 4>}
            )
        )
        (C {<systemctl>} {<mask>} {<ntp>})
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Configuring regional settings (TZdata):'>)})
    (command.Simple
      words: [{<rm>} {<'/etc/timezone'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (C {<rm>} {<'/etc/localtime'>})
    (C {<ln>} {<-fs>} {<'/usr/share/zoneinfo/Europe/London'>} {<'/etc/localtime'>})
    (C {<G_RUN_CMD>} {<dpkg-reconfigure>} {<-f>} {<noninteractive>} {<tzdata>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Configuring regional settings (Keyboard):'>)})
    (C {<dpkg-reconfigure>} {<-f>} {<noninteractive>} {<keyboard-configuration>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Applying G_HW_ARCH specific tweaks:'>)})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$G_HW_ARCH')}
                          right: {<Id.Lit_Digits 10>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<dpkg>} {<--add-architecture>} {<i386>})
            (C {<G_AGUP>})
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<_EOF_>}
                      here_end_span_id: 6169
                      stdin_parts: [
                        <'blacklist nouveau\n'>
                        <'blacklist lbm-nouveau\n'>
                        <'options nouveau modeset=0\n'>
                        <'alias nouveau off\n'>
                        <'alias lbm-nouveau off\n'>
                      ]
                    )
                )
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/etc/modprobe.d/blacklist-nouveau.conf'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'options nouveau modeset=0'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/etc/modprobe.d/nouveau-kms.conf'>}
                )
              ]
              do_fork: T
            )
            (C {<update-initramfs>} {<-u>})
          ]
          spids: [6116 6130]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Appling G_HW_MODEL specific tweaks:'>)})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 35>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [{<echo>} {<-e>} {(DQ <'blacklist bmp085'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/etc/modprobe.d/bmp085.conf'>}
                )
              ]
              do_fork: T
            )
          ]
          spids: [6212 6226]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 70>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<wget>} 
              {<https> <Id.Lit_Colon ':'> 
                <
'//raw.githubusercontent.com/sparky-sbc/sparky-test/master/dragon_fly_check/uImage'
                >
              } {<-O>} {<'/boot/uImage'>}
            )
            (C {<wget>} 
              {<https> <Id.Lit_Colon ':'> 
                <
'//raw.githubusercontent.com/sparky-sbc/sparky-test/master/dragon_fly_check/3.10.38.bz2'
                >
              } {<-O>} {<package.tar>}
            )
            (C {<tar>} {<xvf>} {<package.tar>} {<-C>} {<'/lib/modules/'>})
            (C {<rm>} {<package.tar>})
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<_EOF_>}
                      here_end_span_id: 6322
                      stdin_parts: [
                        <'uenvcmd=setenv os_type linux;\n'>
                        <
'bootargs=earlyprintk clk_ignore_unused selinux=0 scandelay console=tty0 loglevel=1 real_rootflag=rw root=/dev/mmcblk0p2 rootwait init=/lib/systemd/systemd aotg.urb_fix=1 aotg.aotg1_speed=0\n'
                        >
                      ]
                    )
                )
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/DietPi/uEnv.txt'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<_EOF_>}
                      here_end_span_id: 6346
                      stdin_parts: [
                        <'blacklist owl_camera\n'>
                        <'blacklist gsensor_stk8313\n'>
                        <'blacklist ctp_ft5x06\n'>
                        <'blacklist ctp_gsl3680\n'>
                        <'blacklist gsensor_bma222\n'>
                        <'blacklist gsensor_mir3da\n'>
                      ]
                    )
                )
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/etc/modprobe.d/disable_sparkysbc_touchscreen.conf'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<_EOF_>}
                      here_end_span_id: 6364
                      stdin_parts: [
                        <'blacklist pvrsrvkm\n'>
                        <'blacklist drm\n'>
                        <'blacklist videobuf2_vmalloc\n'>
                        <'blacklist bc_example\n'>
                      ]
                    )
                )
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/etc/modprobe.d/disable_sparkysbc_gpu.conf'>}
                )
              ]
              do_fork: T
            )
            (C {<sed>} {<-i>} 
              {
                (DQ <'/^CONFIG_CPU_GOVERNOR=/c'> <Id.Lit_BadBackslash '\\'> 
                  <'CONFIG_CPU_GOVERNOR=performance'>
                )
              } {<'/DietPi/dietpi.txt'>}
            )
            (C {<'/DietPi/dietpi/dietpi-cpu_set'>})
          ]
          spids: [6248 6262]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Less
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 10>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<_EOF_>}
                      here_end_span_id: 6438
                      stdin_parts: [
                        <'ACTION=='>
                        <Id.Right_DoubleQuote '"'>
                        <add>
                        <Id.Right_DoubleQuote '"'>
                        <', SUBSYSTEM=='>
                        <Id.Right_DoubleQuote '"'>
                        <leds>
                        <Id.Right_DoubleQuote '"'>
                        <', ENV{DEVPATH}=='>
                        <Id.Right_DoubleQuote '"'>
                        <'*/input*::scrolllock'>
                        <Id.Right_DoubleQuote '"'>
                        <', ATTR{trigger}='>
                        <Id.Right_DoubleQuote '"'>
                        <kbd-scrollock>
                        <Id.Right_DoubleQuote '"'>
                        <'\n'>
                      ]
                    )
                )
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/etc/udev/rules.d/50-leds.rules'>}
                )
              ]
              do_fork: T
            )
          ]
          spids: [6392 6406]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 40>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<_EOF_>}
                      here_end_span_id: 6481
                      stdin_parts: [
                        <'infocmp > terminfo.txt\n'>
                        <'sed -i -e \'s/?0c/?112c/g\' -e \'s/?8c/?48;0;64c/g\' terminfo.txt\n'>
                        <'tic terminfo.txt\n'>
                        <'tput cnorm\n'>
                      ]
                    )
                )
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$HOME')) <'/.bashrc'>}
                )
              ]
              do_fork: T
            )
          ]
          spids: [6445 6459]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 11>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<_EOF_>}
                      here_end_span_id: 6525
                      stdin_parts: [
                        <'Package: *\n'>
                        <'Pin: release a=jessie-backports\n'>
                        <'Pin: origin '>
                        <Id.Right_DoubleQuote '"'>
                        <fuzon.co.uk>
                        <Id.Right_DoubleQuote '"'>
                        <'\n'>
                        <'Pin-Priority: 99\n'>
                      ]
                    )
                )
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/etc/apt/preferences.d/backports'>}
                )
              ]
              do_fork: T
            )
          ]
          spids: [6488 6502]
        )
      ]
    )
    (command.Simple
      words: [{<sed>} {<-i>} {(SQ <'/verbosity=/c\\verbosity=7'>)} {<'/boot/armbianEnv.txt'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (C {<echo>} {<-e>} {(SQ )})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<0>} {(DQ <'Step 8: Finalise system for first run of DietPi:'>)})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <----------------------------------------------------------------------------------->)}
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Configuring Dropbear:'>)})
    (C {<sed>} {<-i>} {(SQ <'/NO_START=1/c\\NO_START=0'>)} {<'/etc/default/dropbear'>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Configuring Services'>)})
    (C {<'/DietPi/dietpi/dietpi-services'>} {<stop>})
    (C {<'/DietPi/dietpi/dietpi-services'>} {<dietpi_controlled>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Running general cleanup of misc files'>)})
    (command.Simple
      words: [{<rm>} {<-R>} {<'/tmp/'> <Id.Lit_Star '*'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {(word_part.TildeSub token:<Id.Lit_TildeLike '~'>) <'/.bash_history'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {(word_part.TildeSub token:<Id.Lit_TildeLike '~'>) <'/.nano_history'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Disabling swapfile'>)})
    (C {<'/DietPi/dietpi/func/dietpi-set_dphys-swapfile'>} {<0>} {<'/var/swap'>})
    (command.Simple
      words: [{<rm>} {<'/var/swap'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 71>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<sed>} {<-i>} {(SQ <'/AUTO_SETUP_SWAPFILE_SIZE=/c\\AUTO_SETUP_SWAPFILE_SIZE=0'>)} 
              {<'/DietPi/dietpi.txt'>}
            )
          ]
          spids: [6735 6749]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Resetting boot.ini, config.txt, cmdline.txt etc'>)})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_DEqual
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 40>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<sed>} {<-i>} {(SQ <'/^ethaddr/ d'>)} {<'/boot/uEnv.txt'>})]
          spids: [6783 6797]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-f>} {<'/boot/cmdline.txt'>} {<Id.Lit_RBracket ']'>})
        (C {<sed>} {<-i>} {(DQ <'s/ rootdelay=10//g'>)} {<'/boot/cmdline.txt'>})
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Generating default wpa_supplicant.conf'>)})
    (C {<'/DietPi/dietpi/func/dietpi-set_hardware'>} {<wificreds>} {<Id.KW_Set set>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Disabling generic WiFi/BT by default'>)})
    (C {<'/DietPi/dietpi/func/dietpi-set_hardware'>} {<bluetooth>} {<disable>})
    (C {<'/DietPi/dietpi/func/dietpi-set_hardware'>} {<wifimodules>} {<disable>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Enabling onboard WiFi modules by default'>)})
    (C {<'/DietPi/dietpi/func/dietpi-set_hardware'>} {<wifimodules>} {<onboard_enable>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Disabling soundcards by default'>)})
    (C {<'/DietPi/dietpi/func/dietpi-set_hardware'>} {<soundcard>} {<none>})
    (C {<G_AGP>} {<alsa-utils>})
    (C {<G_AGA>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Setting default CPU gov'>)})
    (C {<'/DietPi/dietpi/dietpi-cpu_set'>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Clearing log files'>)})
    (C {<'/DietPi/dietpi/dietpi-logclear'>} {<2>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Deleting DietPi-RAMlog storage'>)})
    (command.Simple
      words: [{<rm>} {<-R>} {<'/var/lib/dietpi/dietpi-ramlog/storage/'> <Id.Lit_Star '*'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Deleting NTP drift file'>)})
    (command.Simple
      words: [{<rm>} {<'/var/lib/ntp/ntp.drift'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Resetting DietPi generated globals/files'>)})
    (C {<rm>} {<'/DietPi/dietpi/.'> <Id.Lit_QMark '?'> <Id.Lit_QMark '?'> <Id.Lit_Star '*'>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Setting DietPi-Autostart to console'>)})
    (command.Simple
      words: [{<echo>} {<0>}]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {<'/DietPi/dietpi/.dietpi-autostart_index'>}
        )
      ]
      do_fork: T
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <'Creating our update file (used on 1st run to check for DietPi updates)'>)}
    )
    (command.Simple
      words: [{<echo>} {<-1>}]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {<'/DietPi/dietpi/.update_stage'>}
        )
      ]
      do_fork: T
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Set Init .install_stage to -1 (first boot)'>)})
    (command.Simple
      words: [{<echo>} {<-1>}]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {<'/DietPi/dietpi/.install_stage'>}
        )
      ]
      do_fork: T
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <'Remove server_version / patch_file (downloads fresh from dietpi-update)'>)}
    )
    (command.Simple
      words: [{<rm>} {<'/DietPi/dietpi/patch_file'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<rm>} {<'/DietPi/dietpi/server_version'> <Id.Lit_Star '*'>}]
      redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Clearing APT cache'>)})
    (C {<G_RUN_CMD>} {<apt-get>} {<clean>})
    (C {<rm>} {<-R>} {<'/var/lib/apt/lists/'> <Id.Lit_Star '*'>} {<-vf>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DParen
                      child: 
                        (arith_expr.Binary
                          op_id: Id.Arith_Less
                          left: {($ Id.VSub_DollarName '$G_HW_MODEL')}
                          right: {<Id.Lit_Digits 10>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<rm>} {<'/etc/.dietpi_hw_model_identifier'>})]
          spids: [7173 7187]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Generating dietpi-fs_partition_resize for first boot'>)})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<_EOF_>}
              here_end_span_id: 7238
              stdin_parts: [
                <'[Unit]\n'>
                <'Description=dietpi-fs_partition_resize\n'>
                <'Before=dietpi-ramdisk.service\n'>
                <'\n'>
                <'[Service]\n'>
                <'Type=oneshot\n'>
                <'RemainAfterExit=no\n'>
                <
'ExecStart=/bin/bash -c \'/var/lib/dietpi/fs_partition_resize.sh | tee /var/tmp/dietpi/logs/fs_partition_resize.log\'\n'
                >
                <'StandardOutput=tty\n'>
                <'\n'>
                <'[Install]\n'>
                <'WantedBy=local-fs.target\n'>
              ]
            )
        )
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {<'/etc/systemd/system/dietpi-fs_partition_resize.service'>}
        )
      ]
      do_fork: T
    )
    (C {<systemctl>} {<daemon-reload>})
    (C {<G_RUN_CMD>} {<systemctl>} {<enable>} {<dietpi-fs_partition_resize.service>})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<_EOF_>}
              here_end_span_id: 7339
              stdin_parts: [
                <'#!/bin/bash\n'>
                <'\n'>
                <'systemctl disable dietpi-fs_partition_resize.service\n'>
                <'systemctl enable dietpi-fs_expand.service\n'>
                <'systemctl daemon-reload\n'>
                <'\n'>
                <'sync\n'>
                <'\n'>
                <'TARGET_PARTITION=0\n'>
                <'TARGET_DEV='>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'(findmnt / -o source -n)\n'>
                <'\n'>
                <'# - MMCBLK[0-9]p[0-9] scrape\n'>
                <'if [[ '>
                <Id.Right_DoubleQuote '"'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <TARGET_DEV>
                <Id.Right_DoubleQuote '"'>
                <' = *'>
                <Id.Right_DoubleQuote '"'>
                <mmcblk>
                <Id.Right_DoubleQuote '"'>
                <'* ]]; then\n'>
                <'\n'>
                <'    TARGET_DEV='>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'(findmnt / -o source -n | sed \'s/p[0-9]'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'//\')\n'>
                <'\tTARGET_PARTITION='>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'(findmnt / -o source -n | sed \'s/.*p//\')\n'>
                <'\n'>
                <'# - Everything else scrape (eg: /dev/sdX[0-9])\n'>
                <'else\n'>
                <'\n'>
                <'    TARGET_DEV='>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'(findmnt / -o source -n | sed \'s/[0-9]'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'//\')\n'>
                <'\tTARGET_PARTITION='>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'(findmnt / -o source -n | sed \'s|/dev/sd.||\')\n'>
                <'\n'>
                <'fi\n'>
                <'\n'>
                <'cat << _EOF_1 | fdisk '>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'TARGET_DEV\n'>
                <'p\n'>
                <'d\n'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'TARGET_PARTITION\n'>
                <'n\n'>
                <'p\n'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'TARGET_PARTITION\n'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'(parted '>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <
'TARGET_DEV -ms unit s p | grep \':ext4::;\' | sed \'s/:/ /g\' | sed \'s/s//g\' | awk \'{ print '
                >
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <'2 }\')\n'>
                <'\n'>
                <'p\n'>
                <'w\n'>
                <'\n'>
                <'_EOF_1\n'>
                <'\n'>
                <'reboot\n'>
                <'\n'>
              ]
            )
        )
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {<'/var/lib/dietpi/fs_partition_resize.sh'>}
        )
      ]
      do_fork: T
    )
    (C {<G_RUN_CMD>} {<chmod>} {<Id.Lit_Other '+'> <x>} {<'/var/lib/dietpi/fs_partition_resize.sh'>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Generating dietpi-fs_partition_expand for subsequent boot'>)})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<_EOF_>}
              here_end_span_id: 7391
              stdin_parts: [
                <'[Unit]\n'>
                <'Description=dietpi-fs_expand\n'>
                <'Before=dietpi-ramdisk.service\n'>
                <'\n'>
                <'[Service]\n'>
                <'Type=oneshot\n'>
                <'RemainAfterExit=no\n'>
                <'ExecStart=/bin/bash -c '>
                <Id.Right_DoubleQuote '"'>
                <'resize2fs '>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                <
'(findmnt / -o source -n) &> /var/tmp/dietpi/logs/fs_expand.log; systemctl disable dietpi-fs_expand.service; systemctl daemon-reload'
                >
                <Id.Right_DoubleQuote '"'>
                <'\n'>
                <'StandardOutput=tty\n'>
                <'\n'>
                <'[Install]\n'>
                <'WantedBy=local-fs.target\n'>
              ]
            )
        )
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {<'/etc/systemd/system/dietpi-fs_expand.service'>}
        )
      ]
      do_fork: T
    )
    (C {<systemctl>} {<daemon-reload>})
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Storing DietPi version ID'>)})
    (C {<G_RUN_CMD>} {<wget>} 
      {<https> <Id.Lit_Colon ':'> <'//raw.githubusercontent.com/Fourdee/DietPi/'> 
        ($ Id.VSub_DollarName '$GIT_BRANCH') <'/dietpi/.version'>
      } {<-O>} {<'/DietPi/dietpi/.version'>}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CORE_VERSION)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: (C {<sed>} {<-n>} {<1p>} {<'/DietPi/dietpi/.version'>})
              )
            }
          spids: [7446]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SUB_VERSION)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: (C {<sed>} {<-n>} {<2p>} {<'/DietPi/dietpi/.version'>})
              )
            }
          spids: [7458]
        )
      ]
    )
    (command.DParen
      child: (arith_expr.UnaryAssign op_id:Id.Node_PostDMinus child:<Id.Lit_ArithVarLike SUB_VERSION>)
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<_EOF_>}
              here_end_span_id: 7492
              stdin_parts: [
                ($ Id.VSub_DollarName '$CORE_VERSION')
                <'\n'>
                ($ Id.VSub_DollarName '$SUB_VERSION')
                <'\n'>
              ]
            )
        )
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {<'/DietPi/dietpi/.version'>}
        )
      ]
      do_fork: T
    )
    (C {<G_RUN_CMD>} {<cp>} {<'/DietPi/dietpi/.version'>} {<'/var/lib/dietpi/.dietpi_image_version'>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.DParen
                          child: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (C {<dpkg>} {<--get-selections>})
                                      (C {<grep>} {<-ci>} {<-m1>} {(SQ <'^grub-efi-amd64[[:space:]]'>)})
                                    ]
                                    negated: F
                                  )
                              )
                            }
                        )
                        (C {<Id.Lit_LBracket '['>} {<-d>} {<'/boot/efi'>} {<Id.Lit_RBracket ']'>})
                      ]
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Recreating GRUB-EFI'>)})
            (C {<G_RUN_CMD>} {<grub-install>} {<--target> <Id.Lit_Equals '='> <x86_64-efi>} 
              {<--efi-directory> <Id.Lit_Equals '='> <'/boot/efi'>} {<--bootloader-id> <Id.Lit_Equals '='> <arch_grub>} {<--recheck>}
            )
          ]
          spids: [7509 7546]
        )
      ]
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Sync changes to disk. Please wait, this may take some time...'>)})
    (C {<G_RUN_CMD>} {<systemctl>} {<stop>} {<dietpi-ramlog>})
    (C {<G_RUN_CMD>} {<systemctl>} {<stop>} {<dietpi-ramdisk>})
    (C {<sync>})
    (C {<G_DIETPI-NOTIFY>} {<2>} 
      {(SQ <'Please check and delete all non-required folders in /root/.xxxxxx'>)}
    )
    (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Please delete outdated modules'>)})
    (C {<ls>} {<-lha>} {<'/lib/modules'>})
    (C {<G_DIETPI-NOTIFY>} {<0>} 
      {
        (DQ 
          <
'Completed, disk can now be saved to .img for later use, or, reboot system to start first run of DietPi:'
          >
        )
      }
    )
    (C {<rm>} {<dietpi-globals>})
    (C {<rm>} {<PREP_SYSTEM_FOR_DIETPI.sh>})
  ]
)