(BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INPUT='> name:INPUT) op: assign_op.Equal rhs: {<0>} spids: [95] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {($ Id.VSub_Number 1)} right: {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'> } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INPUT='> name:INPUT) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [122] ) ] redirects: [] ) ] spids: [99 119] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {<'/DietPi/dietpi/func/dietpi-globals'>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<.>} {<'/DietPi/dietpi/func/dietpi-globals'>}) (C {<G_CHECK_ROOT_USER>}) (C {<export>} {<Id.Lit_VarLike 'G_PROGRAM_NAME='> (SQ <DietPi-Drive_Manager>)}) ] spids: [134 145] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName HOME)) <'/dietpi-globals'>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<.>} {(DQ ($ Id.VSub_DollarName HOME)) <'/dietpi-globals'>}) (C {<G_CHECK_ROOT_USER>}) (C {<export>} {<Id.Lit_VarLike 'G_PROGRAM_NAME='> (SQ <DietPi-Drive_Manager>)}) ] spids: [170 184] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EXIT_CODE='> name:EXIT_CODE) op: assign_op.Equal rhs: {<0>} spids: [216] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROGRAM_NAME='> name:PROGRAM_NAME) op: assign_op.Equal rhs: {(SQ <'DietPi-Drive Manager'>)} spids: [221] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SERVICE_CONTROL='> name:SERVICE_CONTROL) op: assign_op.Equal rhs: {<1>} spids: [232] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FP_DRIVE_MANAGER_SELECTION='> name: FP_DRIVE_MANAGER_SELECTION ) op: assign_op.Equal rhs: {(SQ <'/tmp/dietpi-drive_manager_selmnt'>)} spids: [241] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FP_TEMP_FSTAB='> name:FP_TEMP_FSTAB) op: assign_op.Equal rhs: {(SQ <'/tmp/.fstab'>)} spids: [252] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FP_ROOTFS_SOURCE='> name:FP_ROOTFS_SOURCE) op: assign_op.Equal rhs: {<0>} spids: [259] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAX_DRIVES='> name:MAX_DRIVES) op: assign_op.Equal rhs: {<0>} spids: [268] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FORMAT_GPT='> name:FORMAT_GPT) op: assign_op.Equal rhs: {<1>} spids: [272] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FORMAT_FILESYSTEM_TYPE='> name: FORMAT_FILESYSTEM_TYPE ) op: assign_op.Equal rhs: {<0>} spids: [279] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FORMAT_RECREATE_PARTITION_TABLE='> name: FORMAT_RECREATE_PARTITION_TABLE ) op: assign_op.Equal rhs: {<1>} spids: [286] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FORMAT_COMPLETED='> name:FORMAT_COMPLETED) op: assign_op.Equal rhs: {<0>} spids: [293] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FORMAT_PREVIOUS_MOUNT_SOURCE='> name: FORMAT_PREVIOUS_MOUNT_SOURCE ) op: assign_op.Equal rhs: {<0>} spids: [297] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'INDEX_DRIVE_BEING_EDITED='> name: INDEX_DRIVE_BEING_EDITED ) op: assign_op.Equal rhs: {<0>} spids: [305] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ROOTFS_RW_CHECKED='> name:ROOTFS_RW_CHECKED) op: assign_op.Equal rhs: {<0>} spids: [310] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'aDRIVE_UUID='> name:aDRIVE_UUID) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [315] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'aDRIVE_PART_UUID='> name:aDRIVE_PART_UUID) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [320] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'aDRIVE_MOUNT_SOURCE='> name: aDRIVE_MOUNT_SOURCE ) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [325] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'aDRIVE_MOUNT_TARGET='> name: aDRIVE_MOUNT_TARGET ) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [330] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'aDRIVE_FSTYPE='> name:aDRIVE_FSTYPE) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [335] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'aDRIVE_SIZE_TOTAL='> name:aDRIVE_SIZE_TOTAL) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [340] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'aDRIVE_SIZE_USED='> name:aDRIVE_SIZE_USED) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [345] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'aDRIVE_SIZE_PERCENTUSED='> name: aDRIVE_SIZE_PERCENTUSED ) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [350] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'aDRIVE_SIZE_FREE='> name:aDRIVE_SIZE_FREE) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [355] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'aDRIVE_ISAVAILABLE='> name:aDRIVE_ISAVAILABLE) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [361] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'aDRIVE_ISFILESYSTEM='> name: aDRIVE_ISFILESYSTEM ) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [366] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'aDRIVE_ISMOUNTED='> name:aDRIVE_ISMOUNTED) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [371] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'aDRIVE_ISUUIDMOUNT='> name:aDRIVE_ISUUIDMOUNT) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [376] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'aDRIVE_ISREADONLY_FSTAB='> name: aDRIVE_ISREADONLY_FSTAB ) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [381] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'aDRIVE_ISREADONLY_CURRENTLY='> name: aDRIVE_ISREADONLY_CURRENTLY ) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [386] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'INIT_FSTAB_SLOTS_ENABLED='> name: INIT_FSTAB_SLOTS_ENABLED ) op: assign_op.Equal rhs: {<0>} spids: [392] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FP_USERDATA_CURRENT='> name: FP_USERDATA_CURRENT ) op: assign_op.Equal rhs: {<0>} spids: [397] ) ] redirects: [] ) (command.ShFunction name: Destroy body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<unset>} {<aDRIVE_MOUNT_SOURCE>}) (C {<unset>} {<aDRIVE_MOUNT_TARGET>}) (C {<unset>} {<aDRIVE_FSTYPE>}) (C {<unset>} {<aDRIVE_SIZE_TOTAL>}) (C {<unset>} {<aDRIVE_SIZE_USED>}) (C {<unset>} {<aDRIVE_SIZE_PERCENTUSED>}) (C {<unset>} {<aDRIVE_SIZE_FREE>}) (C {<unset>} {<aDRIVE_PART_UUID>}) (C {<unset>} {<aDRIVE_UUID>}) (C {<unset>} {<aDRIVE_ISMOUNTED>}) (C {<unset>} {<aDRIVE_ISFILESYSTEM>}) (C {<unset>} {<aDRIVE_ISAVAILABLE>}) (C {<unset>} {<aDRIVE_ISUUIDMOUNT>}) (C {<unset>} {<aDRIVE_ISREADONLY_FSTAB>}) (C {<unset>} {<aDRIVE_ISREADONLY_CURRENTLY>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Init_Drives_and_Refresh body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'init='> <1>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [(command.DParen child:{($ Id.VSub_DollarName init)} redirects:[])] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'init='> name:init) op: assign_op.Equal rhs: {<0>} spids: [526] ) ] redirects: [] ) (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Detecting drives, please wait...'>)}) (C {<cp>} {<'/etc/fstab'>} {(DQ ($ Id.VSub_DollarName FP_TEMP_FSTAB))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAX_DRIVES='> name:MAX_DRIVES) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [(C {<blkid>} {<-o>} {<device>}) (C {<wc>} {<-l>})] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [559] ) ] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'fp_temp='> (SQ <'/tmp/.dietpi-drive_manager_devlist'>)} ) (command.Simple words: [{<blkid>} {<-o>} {<device>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName fp_temp)} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<readarray>} {<-t>} {<aDRIVE_MOUNT_SOURCE>}] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName fp_temp)} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<blkid>} {<-s>} {<UUID>} {<-o>} {<value>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName fp_temp)} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<readarray>} {<-t>} {<aDRIVE_UUID>}] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName fp_temp)} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<blkid>} {<-s>} {<PARTUUID>} {<-o>} {<value>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName fp_temp)} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<readarray>} {<-t>} {<aDRIVE_PART_UUID>}] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName fp_temp)} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<blkid>} {<-s>} {<TYPE>} {<-o>} {<value>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName fp_temp)} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<readarray>} {<-t>} {<aDRIVE_FSTYPE>}] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName fp_temp)} ) ] more_env: [] do_fork: T ) (C {<local>} {<Id.Lit_VarLike 'mount_index='> <1>}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: {($ Id.VSub_DollarName MAX_DRIVES)} ) 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.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_ISAVAILABLE['> name: aDRIVE_ISAVAILABLE index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<0>} spids: [732] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_ISUUIDMOUNT['> name: aDRIVE_ISUUIDMOUNT index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<0>} spids: [740] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_MOUNT_TARGET['> name: aDRIVE_MOUNT_TARGET index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(SQ <NULL>)} spids: [748] ) ] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'drive_mount_target_dev='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<grep>} {<-m1>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <'[[:space:]]'> ) } {(DQ ($ Id.VSub_DollarName FP_TEMP_FSTAB))} ) (C {<awk>} {(SQ <'{print $2}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) (C {<local>} {<Id.Lit_VarLike 'drive_mount_target_uuid='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<grep>} {<-m1>} { (DQ <'UUID='> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_UUID> var_name: aDRIVE_UUID bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <'[[:space:]]'> ) } {(DQ ($ Id.VSub_DollarName FP_TEMP_FSTAB))} ) (C {<awk>} {(SQ <'{print $2}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) (C {<local>} {<Id.Lit_VarLike 'drive_mount_target_partuuid='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<grep>} {<-m1>} { (DQ <'PARTUUID='> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_PART_UUID> var_name: aDRIVE_PART_UUID bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <'[[:space:]]'> ) } {(DQ ($ Id.VSub_DollarName FP_TEMP_FSTAB))} ) (C {<awk>} {(SQ <'{print $2}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName drive_mount_target_dev))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_MOUNT_TARGET['> name: aDRIVE_MOUNT_TARGET index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName drive_mount_target_dev)} spids: [879] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_ISAVAILABLE['> name: aDRIVE_ISAVAILABLE index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<1>} spids: [887] ) ] redirects: [] ) (C {<G_DIETPI-NOTIFY>} {<2>} { (DQ <'Detected /dev mount: '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <' > '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] spids: [862 875] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName drive_mount_target_uuid))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_MOUNT_TARGET['> name: aDRIVE_MOUNT_TARGET index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName drive_mount_target_uuid)} spids: [940] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_ISAVAILABLE['> name: aDRIVE_ISAVAILABLE index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<1>} spids: [949] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_ISUUIDMOUNT['> name: aDRIVE_ISUUIDMOUNT index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<1>} spids: [957] ) ] redirects: [] ) (C {<G_DIETPI-NOTIFY>} {<2>} { (DQ <'Detected UUID mount: '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <' > '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] spids: [923 936] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} { (DQ ($ Id.VSub_DollarName drive_mount_target_partuuid) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_MOUNT_TARGET['> name: aDRIVE_MOUNT_TARGET index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName drive_mount_target_partuuid)} spids: [1010] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_ISAVAILABLE['> name: aDRIVE_ISAVAILABLE index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<1>} spids: [1019] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_ISUUIDMOUNT['> name: aDRIVE_ISUUIDMOUNT index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<1>} spids: [1027] ) ] redirects: [] ) (C {<G_DIETPI-NOTIFY>} {<2>} { (DQ <'Detected PARTUUID mount: '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <' > '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] spids: [993 1006] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_UUID> var_name: aDRIVE_UUID bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_MOUNT_TARGET['> name: aDRIVE_MOUNT_TARGET index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: { (DQ <'/mnt/'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_UUID> var_name: aDRIVE_UUID bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [1088] ) ] redirects: [] ) (C {<G_DIETPI-NOTIFY>} {<2>} { (DQ <'Creating UUID fstab entry: '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_Equals '='>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<findmnt>} {<'/'>} {<-o>} {<source>} {<-n>} ) right: <Id.Eof_RParen _> ) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_MOUNT_TARGET['> name: aDRIVE_MOUNT_TARGET index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(SQ <'/'>)} spids: [1165] ) ] redirects: [] ) (C {<G_DIETPI-NOTIFY>} {<2>} { (DQ < ' - Drive is currently mounted, using existing mount location: ' > (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] spids: [1129 1161] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<df>} {<-P>}) (C {<grep>} {<-ci>} {<-m1>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${' > token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE > var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName i ) } ) right: <Id.Right_DollarBrace '}' > ) <'[[:space:]]'> ) } ) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<2>} { (DQ < ' - Drive is currently mounted, using existing mount location: ' > (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_MOUNT_TARGET['> name: aDRIVE_MOUNT_TARGET index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<df>} {<-P>}) (C {<grep>} {<-m1>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE > var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName i) } ) right: <Id.Right_DollarBrace '}'> ) <'[[:space:]]'> ) } ) (C {<awk>} {(SQ <'{print $NF}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [1248] ) ] redirects: [] ) ] spids: [1196 1228] ) ] else_action: [] redirects: [] ) (C {<sed>} {<-i>} { (DQ <Id.Lit_BadBackslash '\\'> <'@^'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <'[[:space:]]@d'> ) } {(DQ ($ Id.VSub_DollarName FP_TEMP_FSTAB))} ) (C {<sed>} {<-i>} { (DQ <Id.Lit_BadBackslash '\\'> <'@^UUID='> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_UUID> var_name: aDRIVE_UUID bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <'[[:space:]]@d'> ) } {(DQ ($ Id.VSub_DollarName FP_TEMP_FSTAB))} ) (C {<local>} {<Id.Lit_VarLike 'mount_options='> (SQ <'defaults,noatime,nofail'>) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(SQ <'/'>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(SQ <'/boot'>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'mount_options+='> name: mount_options ) op: assign_op.PlusEqual rhs: {(SQ <',x-systemd.automount'>)} spids: [1407] ) ] redirects: [] ) ] spids: [1357 1403] ) ] else_action: [] redirects: [] ) (command.Simple words: [ {<echo>} {<-e>} { (DQ <'UUID='> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_UUID> var_name: aDRIVE_UUID bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <' '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <' auto '> ($ Id.VSub_DollarName mount_options) <' 0 0'> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_TEMP_FSTAB))} ) ] more_env: [] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_ISAVAILABLE['> name: aDRIVE_ISAVAILABLE index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<1>} spids: [1450] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_ISUUIDMOUNT['> name: aDRIVE_ISUUIDMOUNT index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<1>} spids: [1458] ) ] redirects: [] ) ] spids: [1063 1081] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DParen child: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_ISAVAILABLE> var_name: aDRIVE_ISAVAILABLE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } redirects: [] ) (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<2>} { (DQ <'Creating mount folder for '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<mkdir>} {<-p>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] spids: [1475 1510] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (C {<cp>} {(DQ ($ Id.VSub_DollarName FP_TEMP_FSTAB))} {<'/etc/fstab'>}) (C {<systemctl>} {<daemon-reload>}) (C {<rm>} {(DQ ($ Id.VSub_DollarName FP_TEMP_FSTAB))}) (C {<mount>} {<-a>}) (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Processing drive information, please wait...'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FP_ROOTFS_SOURCE='> name: FP_ROOTFS_SOURCE ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<df>} {<-P>}) (C {<grep>} {<-m1>} {(SQ <'[[:space:]]/$'>)}) (C {<awk>} {(SQ <'{print $1}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [1600] ) ] redirects: [] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: {($ Id.VSub_DollarName MAX_DRIVES)} ) 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.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_FSTYPE['> name: aDRIVE_FSTYPE index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(SQ <'No filesystem'>)} spids: [1657] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_SIZE_TOTAL['> name: aDRIVE_SIZE_TOTAL index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(SQ <NULL>)} spids: [1667] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_SIZE_USED['> name: aDRIVE_SIZE_USED index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(SQ <NULL>)} spids: [1677] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_SIZE_FREE['> name: aDRIVE_SIZE_FREE index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(SQ <NULL>)} spids: [1687] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_SIZE_PERCENTUSED['> name: aDRIVE_SIZE_PERCENTUSED index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(SQ <NULL>)} spids: [1697] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_ISMOUNTED['> name: aDRIVE_ISMOUNTED index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<0>} spids: [1708] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_ISFILESYSTEM['> name: aDRIVE_ISFILESYSTEM index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<0>} spids: [1716] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_ISREADONLY_FSTAB['> name: aDRIVE_ISREADONLY_FSTAB index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<0>} spids: [1724] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_ISREADONLY_CURRENTLY['> name: aDRIVE_ISREADONLY_CURRENTLY index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<0>} spids: [1732] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cmd_scrape_string='> name: cmd_scrape_string ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<blkid>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } {<-s>} {<TYPE>} {<-o>} {<value>} ) right: <Id.Eof_RParen _> ) } spids: [1741] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName cmd_scrape_string))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_ISFILESYSTEM['> name: aDRIVE_ISFILESYSTEM index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<1>} spids: [1781] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_FSTYPE['> name: aDRIVE_FSTYPE index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName cmd_scrape_string))} spids: [1789] ) ] redirects: [] ) ] spids: [1764 1777] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cmd_scrape_string='> name: cmd_scrape_string ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<df>} {<-Ph>}) (C {<grep>} {<-m1>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <Id.Lit_Dollar '$'> ) } ) (C {<awk>} {(SQ <'{print $2}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [1808] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName cmd_scrape_string))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_SIZE_TOTAL['> name: aDRIVE_SIZE_TOTAL index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName cmd_scrape_string))} spids: [1857] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_ISMOUNTED['> name: aDRIVE_ISMOUNTED index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<1>} spids: [1867] ) ] redirects: [] ) ] spids: [1840 1853] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cmd_scrape_string='> name: cmd_scrape_string ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<df>} {<-Ph>}) (C {<grep>} {<-m1>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <Id.Lit_Dollar '$'> ) } ) (C {<awk>} {(SQ <'{print $3}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [1880] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName cmd_scrape_string))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_SIZE_USED['> name: aDRIVE_SIZE_USED index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName cmd_scrape_string))} spids: [1929] ) ] redirects: [] ) ] spids: [1912 1925] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cmd_scrape_string='> name: cmd_scrape_string ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<df>} {<-Ph>}) (C {<grep>} {<-m1>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <Id.Lit_Dollar '$'> ) } ) (C {<awk>} {(SQ <'{print $4}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [1944] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName cmd_scrape_string))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_SIZE_FREE['> name: aDRIVE_SIZE_FREE index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName cmd_scrape_string))} spids: [1993] ) ] redirects: [] ) ] spids: [1976 1989] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cmd_scrape_string='> name: cmd_scrape_string ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<df>} {<-Ph>}) (C {<grep>} {<-m1>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <Id.Lit_Dollar '$'> ) } ) (C {<awk>} {(SQ <'{print $5}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [2008] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName cmd_scrape_string))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_SIZE_PERCENTUSED['> name: aDRIVE_SIZE_PERCENTUSED index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName cmd_scrape_string))} spids: [2057] ) ] redirects: [] ) ] spids: [2040 2053] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cmd_scrape_string='> name: cmd_scrape_string ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<grep>} {<-m1>} { (DQ <'[[:space:]]'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <'[[:space:]]'> ) } {<'/etc/fstab'>} ) (C {<grep>} {<-m1>} {(SQ <',ro,'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [2072] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName cmd_scrape_string))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_ISREADONLY_FSTAB['> name: aDRIVE_ISREADONLY_FSTAB index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<1>} spids: [2120] ) ] redirects: [] ) ] spids: [2103 2116] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cmd_scrape_string='> name: cmd_scrape_string ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<grep>} { (DQ <'[[:space:]]'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <'[[:space:]]'> ) } {<'/proc/mounts'>} ) (C {<grep>} {<-m1>} {(SQ <'[[:space:]]ro,'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [2149] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName cmd_scrape_string))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aDRIVE_ISREADONLY_CURRENTLY['> name: aDRIVE_ISREADONLY_CURRENTLY index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<1>} spids: [2195] ) ] redirects: [] ) ] spids: [2178 2191] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Unary op_id: Id.Arith_Bang child: {($ Id.VSub_DollarName ROOTFS_RW_CHECKED)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ROOTFS_RW_CHECKED='> name: ROOTFS_RW_CHECKED ) op: assign_op.Equal rhs: {<1>} spids: [2232] ) ] redirects: [] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: {($ Id.VSub_DollarName MAX_DRIVES)} ) 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.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_Equals '='>} {(DQ <'/'>)} {<Id.Lit_RBracket ']'>} ) (command.DParen child: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_ISREADONLY_CURRENTLY > var_name: aDRIVE_ISREADONLY_CURRENTLY bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } redirects: [] ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'INDEX_DRIVE_BEING_EDITED='> name: INDEX_DRIVE_BEING_EDITED ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName i)} spids: [2301] ) ] redirects: [] ) (C {<G_DIETPI-NOTIFY>} {<2>} { (DQ <'RootFS is currently set to R/O. '> ($ Id.VSub_DollarName PROGRAM_NAME) <' requires R/W access.'> ) } ) (C {<whiptail>} {<--title>} {(DQ <'RootFS is R/O'>)} {<--yesno>} { (DQ < 'RootFS is currently set to \'Read Only\'. DietPi-Drive_Manager requires \'Read Write\' access to function.' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> < 'nWould you like to renable \'Read Write\' access on RootFS?' > ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<--defaultno>} {<14>} {<75>} ) (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_QMark '?')} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<Toggle_WriteMode>}) (C {<G_DIETPI-NOTIFY>} {<0>} {(DQ <'RootFS R/W now enabled.'>)} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'init='> name: init ) op: assign_op.Equal rhs: {<1>} spids: [2384] ) ] redirects: [] ) ] spids: [2349 2363] ) ] else_action: [ (C {<'/DietPi/dietpi/dietpi-services'>} {<start>}) (C {<G_DIETPI-NOTIFY>} {<0>} {(DQ <'RootFS currently set to R/O.'>)} ) (C {<G_DIETPI-NOTIFY>} {<2>} { (DQ < 'Please run \'dietpi-drive_manager\' again, if you want to re-enable RootFS R/W.' > ) } ) (C {<Destroy>}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> ) ] redirects: [] ) ] spids: [2260 2297] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) ] spids: [2216 2228] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FP_USERDATA_CURRENT='> name: FP_USERDATA_CURRENT ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<readlink>} {<-f>} {($ Id.VSub_DollarName G_FP_DIETPI_USERDATA)}) right: <Id.Eof_RParen _> ) } spids: [2445] ) ] redirects: [] ) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Return_Drive_Without_Partitions body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_Number 1)} right: {<'/dev/sd'> <Id.Lit_Other '*'>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Pipeline children: [ (C {<echo>} {<-e>} {(DQ ($ Id.VSub_Number 1))}) (C {<sed>} {(SQ <'s/[0-9]$//g'>)}) ] negated: F stderr_indices: [] ) ] spids: [2475 2489] ) ] else_action: [ (command.Pipeline children: [ (C {<echo>} {<-e>} {(DQ ($ Id.VSub_Number 1))}) (C {<sed>} {(SQ <'s/p[0-9]$//g'>)}) ] negated: F stderr_indices: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Run_Format body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'drivepath_no_partitions='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<Return_Drive_Without_Partitions>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Eof_RParen _> ) } ) (C {<umount>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName FORMAT_RECREATE_PARTITION_TABLE)} redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<dd>} {<Id.Lit_VarLike 'if='> <'/dev/zero'>} {<Id.Lit_VarLike 'of='> ($ Id.VSub_DollarName drivepath_no_partitions)} {<Id.Lit_VarLike 'bs='> <5M>} {<Id.Lit_VarLike 'count='> <1>} ) (C {<local>} {<Id.Lit_VarLike 'parition_table_type='> (SQ <msdos>)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName FORMAT_GPT)} redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'parition_table_type='> name: parition_table_type ) op: assign_op.Equal rhs: {(SQ <gpt>)} spids: [2643] ) ] redirects: [] ) ] spids: [2629 2639] ) ] else_action: [] redirects: [] ) (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Partition table target: '> ($ Id.VSub_DollarName parition_table_type))} ) (C {<parted>} {<-s>} {(DQ ($ Id.VSub_DollarName drivepath_no_partitions))} {<mklabel>} {(DQ ($ Id.VSub_DollarName parition_table_type))} ) (C {<parted>} {<-a>} {<optimal>} {(DQ ($ Id.VSub_DollarName drivepath_no_partitions))} {<mkpart>} {<primary>} {<0> <Id.Lit_Other '%'>} {<100> <Id.Lit_Other '%'>} ) (C {<sleep>} {<1>}) (C {<umount>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] spids: [2583 2593] ) ] else_action: [ (C {<dd>} {<Id.Lit_VarLike 'if='> <'/dev/zero'>} {<Id.Lit_VarLike 'of='> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) } {<Id.Lit_VarLike 'bs='> <5M>} {<Id.Lit_VarLike 'count='> <1>} ) ] redirects: [] ) (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 FORMAT_FILESYSTEM_TYPE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<mkfs.ext4>} {<-F>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) } ) (C {<resize2fs>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] spids: [2772 2786] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName FORMAT_FILESYSTEM_TYPE)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<mkfs.ntfs>} {<-f>} {<-I>} {<-F>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] spids: [2821 2835] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName FORMAT_FILESYSTEM_TYPE)} right: {<Id.Lit_Digits 2>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<mkfs.vfat>} {<-I>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] spids: [2864 2878] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName FORMAT_FILESYSTEM_TYPE)} right: {<Id.Lit_Digits 3>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<mkfs.hfsplus>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] spids: [2903 2917] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName FORMAT_FILESYSTEM_TYPE)} right: {<Id.Lit_Digits 4>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<mkfs.btrfs>} {<-f>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] spids: [2936 2950] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName FORMAT_FILESYSTEM_TYPE)} right: {<Id.Lit_Digits 5>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<mkfs.f2fs>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] spids: [2975 2989] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName FORMAT_FILESYSTEM_TYPE)} right: {<Id.Lit_Digits 6>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<mkfs.exfat>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] spids: [3008 3022] ) ] else_action: [] redirects: [] ) (C {<rm>} {<-R>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<sed>} {<-i>} { (DQ <Id.Lit_BadBackslash '\\'> <'@'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) <'[[:space:]]@d'> ) } {<'/etc/fstab'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FORMAT_COMPLETED='> name: FORMAT_COMPLETED ) op: assign_op.Equal rhs: {<1>} spids: [3079] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FORMAT_PREVIOUS_MOUNT_SOURCE='> name: FORMAT_PREVIOUS_MOUNT_SOURCE ) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) } spids: [3083] ) ] redirects: [] ) (C {<Init_Drives_and_Refresh>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: RootFS_Move body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<cp>} {<'/etc/fstab'>} {<'/etc/fstab.bak'>}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: {($ Id.VSub_DollarName MAX_DRIVES)} ) 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: (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName FORMAT_PREVIOUS_MOUNT_SOURCE))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'INDEX_DRIVE_BEING_EDITED='> name: INDEX_DRIVE_BEING_EDITED ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName i)} spids: [3176] ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [3150 3172] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (C {<sed>} {<-i>} { (DQ <Id.Lit_BadBackslash '\\'> <'@'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) <'[[:space:]]@d'> ) } {<'/etc/fstab'>} ) (C {<sed>} {<-i>} { (DQ <Id.Lit_BadBackslash '\\'> <'@[[:space:]]/[[:space:]]@c UUID='> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_UUID> var_name: aDRIVE_UUID bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) <' / auto defaults,noatime 0 1'> ) } {<'/etc/fstab'>} ) (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>} {(SQ <'^rsync[[[:space:]]'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Installing Rsync, please wait...'> <Id.Lit_BadBackslash '\\'> <n>)} ) (C {<sleep>} {<1>}) (C {<G_AGI>} {<rsync>}) ] spids: [3244 3272] ) ] else_action: [] redirects: [] ) (C {<rsync>} {<-paxv>} {<--exclude>} {(SQ <'/lost+found'>)} {<'/'>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) ) <'/'> } ) (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>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<1>} {(SQ <'Rsync has failed, RootFS transfer has been aborted.'>)} ) (C {<cp>} {<'/etc/fstab.bak'>} {<'/etc/fstab'>}) (C {<Destroy>}) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] spids: [3326 3340] ) ] else_action: [] redirects: [] ) (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>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'rootfs_current='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<awk>} {(SQ <'{for(i=1;i<=NF;i++) {print $i} }'>)} {<'/boot/cmdline.txt'>} ) (C {<grep>} {<-m1>} {(SQ <'root='>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) (C {<sed>} {<-i>} { (DQ <'s#'> ($ Id.VSub_DollarName rootfs_current) <'#root=PARTUUID='> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_PART_UUID> var_name: aDRIVE_PART_UUID bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) <'#g'> ) } {<'/boot/cmdline.txt'>} ) (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: (C {<grep>} {<-ci>} {<-m1>} {(SQ <'[[:space:]]rootdelay='>)} {<'/boot/cmdline.txt'>} ) right: <Id.Eof_RParen _> ) } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<sed>} {<-i>} {(DQ <'s#console=tty1#console=tty1 rootdelay=10#g'>)} {<'/boot/cmdline.txt'>} ) ] spids: [3451 3475] ) ] else_action: [] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'rootfstype_current='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<awk>} {(SQ <'{for(i=1;i<=NF;i++) {print $i} }'>)} {<'/boot/cmdline.txt'>} ) (C {<grep>} {<-m1>} {(SQ <'rootfstype='>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) (C {<sed>} {<-i>} { (DQ <'s#'> ($ Id.VSub_DollarName rootfstype_current) <'#rootfstype='> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_FSTYPE> var_name: aDRIVE_FSTYPE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) <'#g'> ) } {<'/boot/cmdline.txt'>} ) ] spids: [3380 3394] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DPipe left: (arith_expr.Binary op_id: Id.Arith_DPipe left: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName G_HW_MODEL)} right: {<Id.Lit_Digits 10>} ) right: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName G_HW_MODEL)} right: {<Id.Lit_Digits 11>} ) ) right: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName G_HW_MODEL)} right: {<Id.Lit_Digits 12>} ) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'rootfs_current='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<awk>} {(SQ <'{for(i=1;i<=NF;i++) {print $i} }'>)} {<'/DietPi/boot.ini'>} ) (C {<grep>} {<-m1>} {(SQ <'root='>)}) (C {<sed>} {(SQ <'s/\\"//'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) (C {<sed>} {<-i>} { (DQ <'s#'> ($ Id.VSub_DollarName rootfs_current) <'#root=UUID='> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_UUID> var_name: aDRIVE_UUID bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) <'#g'> ) } {<'/DietPi/boot.ini'>} ) ] spids: [3548 3578] ) ] else_action: [] redirects: [] ) (C {<systemctl>} {<daemon-reload>}) (C {<whiptail>} {<--title>} {(DQ <'RootFS transfer completed'>)} {<--msgbox>} {(DQ <'RootFS transfer completed. Press enter to reboot system.'>)} {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<8>} {<60>} ) (C {<reboot>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: RootFS_Low_Free_Space_Check body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'free_space_limit='> <500>}) (C {<G_DIETPI-NOTIFY>} {<2>} {(SQ <'Checking available free space on RootFS, please wait...'>)} ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: {($ Id.VSub_DollarName MAX_DRIVES)} ) 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: (C {<Id.Lit_LBracket '['>} {(DQ <'/'>)} {<Id.Lit_Equals '='>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'INDEX_DRIVE_BEING_EDITED='> name: INDEX_DRIVE_BEING_EDITED ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName i)} spids: [3764] ) ] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'free_space_current='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<df>} {<-B>} {<M>}) (C {<grep>} {<-m1>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <Id.Lit_Dollar '$'> ) } ) (C {<awk>} {(SQ <'{print $4}'>)}) (C {<sed>} {(SQ <'s/[^0-9]//g'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) (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 free_space_current)} right: {($ Id.VSub_DollarName free_space_limit)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'message='> (DQ <'Error:'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nAvailable free space on RootFS is low ('> ($ Id.VSub_DollarName free_space_current) < ' MB). To prevent potential issues due to running out of free space, this script will now be terminated.' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nPlease free up at least '> ($ Id.VSub_DollarName free_space_limit) <' MB of free space, then try again.'> ) } ) (C {<whiptail>} {<--title>} {(DQ <'Insufficient free space'>)} {<--msgbox>} {(DQ ($ Id.VSub_DollarName message))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<14>} {<70>} ) (C {<G_DIETPI-NOTIFY>} {<1>} { (DQ <'Insufficient free space on RootFS. '> ($ Id.VSub_DollarName free_space_current) <' MB available, '> ($ Id.VSub_DollarName free_space_limit) <' MB required'> ) } ) (C {<G_DIETPI-NOTIFY>} {<1>} {(SQ <Aborting>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'EXIT_CODE='> name: EXIT_CODE ) op: assign_op.Equal rhs: {<1>} spids: [3910] ) ] redirects: [] ) ] spids: [3818 3832] ) ] else_action: [ (C {<G_DIETPI-NOTIFY>} {<0>} { (DQ ($ Id.VSub_DollarName free_space_current) <' MB available, '> ($ Id.VSub_DollarName free_space_limit) <' MB required'> ) } ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [3738 3760] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: RootFS_RW_Check body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<G_DIETPI-NOTIFY>} {<2>} {(DQ <'Checking RootFS R/W access. Please wait...'>)}) (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 {<mount>}) (C {<grep>} {<-m1>} {(SQ <'[[:space:]]/[[:space:]]'>)}) (C {<grep>} {<-ci>} {<-m1>} {(SQ <'(ro,'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<1>} {(DQ <'RootFS is currently set to R/O.'>)}) (C {<G_DIETPI-NOTIFY>} {<2>} { (DQ < 'DietPi requires RootFS R/W access. Please run \'dietpi-drive_manager\' to re-enable.' > <Id.Lit_BadBackslash '\\'> <n> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EXIT_CODE='> name:EXIT_CODE) op: assign_op.Equal rhs: {<1>} spids: [4063] ) ] redirects: [] ) ] spids: [4005 4039] ) ] else_action: [ (C {<G_DIETPI-NOTIFY>} {<0>} {(DQ <'RootFS R/W access.'> <Id.Lit_BadBackslash '\\'> <n>)}) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Toggle_WriteMode body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'line_number='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<grep>} {<-m1>} {<-n>} { (DQ <'[[:space:]]'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) <'[[:space:]]'> ) } {<'/etc/fstab'>} ) (C {<cut>} {<-f1>} {<-d> <Id.Lit_Colon ':'>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) (C {<local>} {<Id.Lit_VarLike 'exit_status='> <0>}) (C {<local>} {<Id.Lit_VarLike 'message_result='> <0>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DPipe left: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_ISREADONLY_FSTAB> var_name: aDRIVE_ISREADONLY_FSTAB bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) } right: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_ISREADONLY_CURRENTLY> var_name: aDRIVE_ISREADONLY_CURRENTLY bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'message_result='> name: message_result ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<mount>} {<-v>} {<-o>} {<rw> <Id.Lit_Comma ','> <remount>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [4172] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'exit_status='> name: exit_status ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [4198] ) ] redirects: [] ) (C {<sed>} {<-i>} {(DQ (${ Id.VSub_Name line_number) <'s/[[:space:]]defaults,ro,/ defaults,/'>)} {<'/etc/fstab'>} ) ] spids: [4144 4168] ) ] else_action: [ (C {<sed>} {<-i>} {(DQ (${ Id.VSub_Name line_number) <'s/[[:space:]]defaults,/ defaults,ro,/'>)} {<'/etc/fstab'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'message_result='> name: message_result ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<mount>} {<-v>} {<-o>} {<ro> <Id.Lit_Comma ','> <remount>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [4241] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exit_status='> name:exit_status) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [4267] ) ] redirects: [] ) ] redirects: [] ) (C {<systemctl>} {<daemon-reload>}) (C {<mount>} {<-a>}) (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 exit_status)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<whiptail>} {<--title>} {(DQ <'Failed to apply now'>)} {<--msgbox>} { (DQ <'Due to:'> <Id.Lit_BadBackslash '\\'> <'n - '> ($ Id.VSub_DollarName message_result) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nIf you have set to read only, this will be active on next reboot.'> ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<14>} {<70>} ) ] spids: [4287 4301] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [4346] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MENU_LASTITEM='> name:MENU_LASTITEM) op: assign_op.Equal rhs: {(SQ )} spids: [4350] ) ] redirects: [] ) (command.ShFunction name: Menu_Main_Drive_Manager body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'whiptail_menu_array='> (sh_array_literal left:<Id.Op_LParen _> words:[]) } ) (C {<local>} {<Id.Lit_VarLike 'drive_available='> <0>}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: {($ Id.VSub_DollarName MAX_DRIVES)} ) 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 left: <Id.Lit_VarLike 'drive_available='> name: drive_available ) op: assign_op.Equal rhs: {<1>} spids: [4408] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_ISAVAILABLE> var_name: aDRIVE_ISAVAILABLE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (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 {<echo>} {<-e>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE > var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<grep>} {<-ci>} {<-m1>} {(SQ <'1$'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'drivepath_no_partitions='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<Return_Drive_Without_Partitions>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Eof_RParen _> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(SQ )} { (DQ <'─('> ($ Id.VSub_DollarName drivepath_no_partitions) < ')────────────────────────────────────────' > ) } ] ) } spids: [4490] ) ] redirects: [] ) ] spids: [4436 4471] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_ISMOUNTED> var_name: aDRIVE_ISMOUNTED bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } { (DQ <': '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <' | '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_FSTYPE> var_name: aDRIVE_FSTYPE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <' | Size: '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_SIZE_TOTAL> var_name: aDRIVE_SIZE_TOTAL bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <' | Used: '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_SIZE_USED> var_name: aDRIVE_SIZE_USED bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <' ('> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_SIZE_PERCENTUSED> var_name: aDRIVE_SIZE_PERCENTUSED bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <')'> ) } ] ) } spids: [4535] ) ] redirects: [] ) ] spids: [4512 4527] ) ] else_action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Unary op_id: Id.Arith_Bang child: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_ISFILESYSTEM> var_name: aDRIVE_ISFILESYSTEM bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } { (DQ <': '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <' | No filesystem / format required'> ) } ] ) } spids: [4621] ) ] redirects: [] ) ] spids: [4600 4617] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } { (DQ <': '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <' | '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_FSTYPE> var_name: aDRIVE_FSTYPE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) <' | Not mounted'> ) } ] ) } spids: [4654] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] ) ] spids: [4413 4428] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ )} { (DQ < '───────────────────────────────────────────────────────' > ) } ] ) } spids: [4702] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Unary op_id: Id.Arith_Bang child: {($ Id.VSub_DollarName drive_available)} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <Refresh>)} {(DQ <': No drives found. Insert a drive and select this option'>)} ] ) } spids: [4730] ) ] redirects: [] ) ] spids: [4714 4726] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [{(DQ <Refresh>)} {(DQ <': Scan for recently added/removed drives'>)}] ) } spids: [4747] ) ] redirects: [] ) ] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'userdata_location_text='> (DQ <'RootFS ('> ($ Id.VSub_DollarName FP_USERDATA_CURRENT) <')'>) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName FP_USERDATA_CURRENT))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName G_FP_DIETPI_USERDATA))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'userdata_location_text='> name: userdata_location_text ) op: assign_op.Equal rhs: {(DQ <'USB ('> ($ Id.VSub_DollarName FP_USERDATA_CURRENT) <')'>)} spids: [4801] ) ] redirects: [] ) ] spids: [4779 4797] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_TITLE='> name:WHIP_TITLE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} spids: [4814] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> name: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 <'Please select a drive to see available options.'> <Id.Lit_BadBackslash '\\'> <'n - User data location: '> ($ Id.VSub_DollarName userdata_location_text) ) } {<--default-item>} {(DQ ($ Id.VSub_DollarName MENU_LASTITEM))} {<--cancel-button>} {(DQ <Exit>)} {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<20>} {<110>} {<11>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name whiptail_menu_array> var_name: whiptail_menu_array bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] 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>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [4820] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [4884] ) ] redirects: [] ) (C {<unset>} {<whiptail_menu_array>}) (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 CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'MENU_LASTITEM='> name: MENU_LASTITEM ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName OPTION))} spids: [4913] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName OPTION))} {<Id.Lit_Equals '='>} {(DQ <Refresh>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Init_Drives_and_Refresh>})] spids: [4924 4941] ) ] else_action: [ (C {<Init_Drives_and_Refresh>}) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: {($ Id.VSub_DollarName MAX_DRIVES)} ) 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: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName OPTION))} {<Id.Lit_Equals '='>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_ISAVAILABLE> var_name: aDRIVE_ISAVAILABLE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'INDEX_DRIVE_BEING_EDITED=' > name: INDEX_DRIVE_BEING_EDITED ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName i)} spids: [5037] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETMENUID='> name: TARGETMENUID ) op: assign_op.Equal rhs: {<1>} spids: [5041] ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [5018 5033] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName OPTION))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<whiptail>} {<--title>} {(DQ <'Info: No drive'>)} {<--msgbox>} {(DQ <'This drive is no longer available'>)} {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<8>} {<60>} ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [5049 5062] ) ] else_action: [] redirects: [] ) ] spids: [4988 5010] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) ] redirects: [] ) ] spids: [4895 4909] ) ] else_action: [(C {<Menu_Exit>})] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Menu_Drive_Manager_Edit_Drive body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<1>} spids: [5142] ) ] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'partition_contains_userdata='> <0>}) (C {<local>} {<Id.Lit_VarLike 'whiptail_desc='> (sh_array_literal left:<Id.Op_LParen _> words:[])} ) (C {<local>} {<Id.Lit_VarLike 'whiptail_menu_array='> (sh_array_literal left:<Id.Op_LParen _> words:[]) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'whiptail_desc+='> name:whiptail_desc) op: assign_op.PlusEqual rhs: { (DQ <'Mount target: '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) <Id.Lit_BadBackslash '\\'> <n> ) } spids: [5173] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'whiptail_desc+='> name:whiptail_desc) op: assign_op.PlusEqual rhs: { (DQ <'Mount source: '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) <Id.Lit_BadBackslash '\\'> <n> ) } spids: [5187] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Unary op_id: Id.Arith_Bang child: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_ISFILESYSTEM> var_name: aDRIVE_ISFILESYSTEM bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_desc+='> name: whiptail_desc ) op: assign_op.PlusEqual rhs: {(DQ <'Status: Drive has no filesystem and must be formatted'>)} spids: [5227] ) ] redirects: [] ) ] spids: [5206 5223] ) ] else_action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_ISUUIDMOUNT> var_name: aDRIVE_ISUUIDMOUNT bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) } redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_desc+='> name: whiptail_desc ) op: assign_op.PlusEqual rhs: { (DQ < 'Mount method: UUID (Permanent: always mount to \'Mount Target\')' > <Id.Lit_BadBackslash '\\'> <n> ) } spids: [5257] ) ] redirects: [] ) ] spids: [5238 5253] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_desc+='> name: whiptail_desc ) op: assign_op.PlusEqual rhs: { (DQ < 'Mount method: /dev/sd (Warning: mount location not permanent, use UUID)' > <Id.Lit_BadBackslash '\\'> <n> ) } spids: [5270] ) ] redirects: [] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_desc+='> name: whiptail_desc ) op: assign_op.PlusEqual rhs: { (DQ <'Filesystem: '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_FSTYPE> var_name: aDRIVE_FSTYPE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) <Id.Lit_BadBackslash '\\'> <n> ) } spids: [5283] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_desc+='> name: whiptail_desc ) op: assign_op.PlusEqual rhs: { (DQ <'UUID: '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_UUID> var_name: aDRIVE_UUID bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) <Id.Lit_BadBackslash '\\'> <n> ) } spids: [5297] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_ISMOUNTED> var_name: aDRIVE_ISMOUNTED bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) } redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_desc+='> name: whiptail_desc ) op: assign_op.PlusEqual rhs: { (DQ <'Capacity: '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_SIZE_TOTAL> var_name: aDRIVE_SIZE_TOTAL bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) <b> <Id.Lit_BadBackslash '\\'> <n> ) } spids: [5331] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_desc+='> name: whiptail_desc ) op: assign_op.PlusEqual rhs: { (DQ <'Used: '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_SIZE_USED> var_name: aDRIVE_SIZE_USED bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) <'b ('> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_SIZE_PERCENTUSED> var_name: aDRIVE_SIZE_PERCENTUSED bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) <')'> <Id.Lit_BadBackslash '\\'> <n> ) } spids: [5346] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_desc+='> name: whiptail_desc ) op: assign_op.PlusEqual rhs: {(DQ <'Status: Drive is online and ready for use'>)} spids: [5368] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED ) } ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <'/'>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED ) } ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <'/boot'>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <Unmount>)} {(DQ <': Allows you to physically remove the drive'>)} ] ) } spids: [5428] ) ] redirects: [] ) ] spids: [5379 5424] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Subshell child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED ) } ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <'/'>)} {<Id.Lit_RBracket ']'>} ) (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { ($ Id.VSub_DollarName FP_USERDATA_CURRENT ) } right: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET > var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED ) } ) right: <Id.Right_DollarBrace '}'> ) ) <Id.Lit_Other '*'> } ) redirects: [] ) ] ) redirects: [] ) (command.Subshell child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED ) } ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_Equals '='>} {(DQ <'/'>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} { (DQ ($ Id.VSub_DollarName FP_USERDATA_CURRENT) ) } {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName G_FP_DIETPI_USERDATA))} {<Id.Lit_RBracket ']'>} ) ] ) redirects: [] ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <'User data'>)} { (DQ < ': Your user data is currently located on this drive' > ) } ] ) } spids: [5544] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'partition_contains_userdata='> name: partition_contains_userdata ) op: assign_op.Equal rhs: {<1>} spids: [5556] ) ] redirects: [] ) ] spids: [5445 5537] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <'Move User data'>)} {(DQ <': Move your DietPi user data to this drive'>)} ] ) } spids: [5565] ) ] redirects: [] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_ISUUIDMOUNT> var_name: aDRIVE_ISUUIDMOUNT bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED ) } ) right: <Id.Right_DollarBrace '}'> ) } redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <'Mount Method'>)} {(DQ <': Change from UUID to /dev/sd'>)} ] ) } spids: [5601] ) ] redirects: [] ) ] spids: [5582 5597] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <'Mount Method'>)} {(DQ <': Change from /dev/sd to UUID'>)} ] ) } spids: [5618] ) ] redirects: [] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DPipe left: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_ISREADONLY_FSTAB> var_name: aDRIVE_ISREADONLY_FSTAB bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED ) } ) right: <Id.Right_DollarBrace '}'> ) } right: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_ISREADONLY_CURRENTLY> var_name: aDRIVE_ISREADONLY_CURRENTLY bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED ) } ) right: <Id.Right_DollarBrace '}'> ) } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <'Read Only'>)} {(DQ <': Enabled | Select to allow R/W'>)} ] ) } spids: [5667] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_desc+='> name: whiptail_desc ) op: assign_op.PlusEqual rhs: {(DQ <Id.Lit_BadBackslash '\\'> <'nRead only: Enabled'>)} spids: [5679] ) ] redirects: [] ) ] spids: [5639 5663] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <'Read Only'>)} {(DQ <': Disabled | Select to set read only'>)} ] ) } spids: [5691] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_desc+='> name: whiptail_desc ) op: assign_op.PlusEqual rhs: {(DQ <Id.Lit_BadBackslash '\\'> <'nRead only: Disabled'>)} spids: [5703] ) ] redirects: [] ) ] redirects: [] ) ] spids: [5312 5327] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_desc+='> name: whiptail_desc ) op: assign_op.PlusEqual rhs: { (DQ <'Status: Drive is not mounted and can be unplugged'> <Id.Lit_BadBackslash '\\'> <n> ) } spids: [5720] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <Mount>)} { (DQ <': Mount the drive to '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) ) } ] ) } spids: [5729] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <'/'>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <'/boot'>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <Format>)} {(DQ <': Wipe all data and format drive with ext4'>)} ] ) } spids: [5809] ) ] redirects: [] ) ] spids: [5760 5805] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) } right: {($ Id.VSub_DollarName FP_ROOTFS_SOURCE)} ) redirects: [] ) (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DPipe left: (arith_expr.Binary op_id: Id.Arith_DPipe left: (arith_expr.Binary op_id: Id.Arith_DPipe left: (arith_expr.Binary op_id: Id.Arith_Less left: {($ Id.VSub_DollarName G_HW_MODEL)} right: {<Id.Lit_Digits 10>} ) right: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName G_HW_MODEL)} right: {<Id.Lit_Digits 10>} ) ) right: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName G_HW_MODEL)} right: {<Id.Lit_Digits 11>} ) ) right: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName G_HW_MODEL)} right: {<Id.Lit_Digits 12>} ) ) redirects: [] ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <'Transfer RootFS'>)} {(DQ <': Transfer RootFS to this drive'>)} ] ) } spids: [5890] ) ] redirects: [] ) ] spids: [5830 5886] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_TITLE='> name:WHIP_TITLE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} spids: [5907] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> name: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 whiptail_desc))} {<--default-item>} {(DQ ($ Id.VSub_DollarName MENU_LASTITEM))} {<--cancel-button>} {(DQ <Back>)} {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<22>} {<90>} {<6>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name whiptail_menu_array> var_name: whiptail_menu_array bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] 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>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [5913] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [5974] ) ] redirects: [] ) (C {<unset>} {<whiptail_desc>}) (C {<unset>} {<whiptail_menu_array>}) (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 CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'MENU_LASTITEM='> name: MENU_LASTITEM ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName OPTION))} spids: [6008] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName OPTION))} {<Id.Lit_Equals '='>} {(DQ <Mount>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<sed>} {<-i>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> <'@'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) <'[[:space:]]@s@^#@@'> ) } {<'/etc/fstab'>} ) (C {<systemctl>} {<daemon-reload>}) (C {<mount>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] spids: [6015 6032] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName OPTION))} {<Id.Lit_Equals '='>} {(DQ <Unmount>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName partition_contains_userdata)} redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<whiptail>} {<--title>} {(DQ <'Info: dismount prevented'>)} {<--msgbox>} { (DQ < 'Your DietPi user data is currently located on this drive:' > <Id.Lit_BadBackslash '\\'> <'n - '> ($ Id.VSub_DollarName FP_USERDATA_CURRENT) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nDismounting the drive at this time is not possible.'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nPlease move your user data elsewhere, before trying again:'> <Id.Lit_BadBackslash '\\'> <'nhttp://dietpi.com/phpbb/viewtopic.php?f=8&t=478'> ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<13>} {<80>} ) ] spids: [6105 6115] ) ] else_action: [ (C {<umount>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<sed>} {<-i>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> <'@'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) <'[[:space:]]@s@^#*@#@'> ) } {<'/etc/fstab'>} ) (C {<systemctl>} {<daemon-reload>}) ] redirects: [] ) ] spids: [6080 6097] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName OPTION))} {<Id.Lit_Equals '='>} {(DQ <'Mount Method'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_UUID> var_name: aDRIVE_UUID bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED ) } ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_Equals '='>} {(DQ <NULL>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<whiptail>} {<--title>} {(DQ <'Error: No UUID'>)} {<--msgbox>} { (DQ < 'This drive does not have a UUID assigned. Unable to proceed.' > ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<8>} {<60>} ) ] spids: [6235 6257] ) ] else_action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_ISUUIDMOUNT> var_name: aDRIVE_ISUUIDMOUNT bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED ) } ) right: <Id.Right_DollarBrace '}'> ) } redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<sed>} {<-i>} { (DQ <'s@^UUID='> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_UUID> var_name: aDRIVE_UUID bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED ) } ) right: <Id.Right_DollarBrace '}'> ) <'@'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED ) } ) right: <Id.Right_DollarBrace '}'> ) <'@g'> ) } {<'/etc/fstab'>} ) ] spids: [6291 6306] ) ] else_action: [ (C {<sed>} {<-i>} { (DQ <'s@^'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) <'@UUID='> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_UUID> var_name: aDRIVE_UUID bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) <'@g'> ) } {<'/etc/fstab'>} ) ] redirects: [] ) (C {<systemctl>} {<daemon-reload>}) ] redirects: [] ) ] spids: [6210 6227] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName OPTION))} {<Id.Lit_Equals '='>} {(DQ <'Move User data'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_FSTYPE> var_name: aDRIVE_FSTYPE bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED ) } ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_Equals '='>} {(DQ <vfat>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<whiptail>} {<--title>} {(DQ <'Warning: FAT32'>)} {<--msgbox>} { (DQ <'Warning:'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> < 'nFAT32 does not support file and folder permissions. Some of the programs which use the DietPi user directory (eg: Owncloud data storage), rely on permissions to function correctly.' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> < 'nIf you continue with the DietPi user data move to this FAT32 drive, programs may have issues reading and writing data.' > ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<14>} {<70>} ) ] spids: [6405 6427] ) ] else_action: [] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'target_userdata_dir='> (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_TARGET> var_name: aDRIVE_MOUNT_TARGET bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED ) } ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_Equals '='>} {(DQ <'/'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'target_userdata_dir='> name: target_userdata_dir ) op: assign_op.Equal rhs: {(SQ <'/mnt'>)} spids: [6512] ) ] redirects: [] ) ] spids: [6486 6508] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'target_userdata_dir+='> name: target_userdata_dir ) op: assign_op.PlusEqual rhs: {(SQ <'/dietpi_userdata'>)} spids: [6523] ) ] redirects: [] ) (C {<whiptail>} {<--title>} {(DQ <'Move user data'>)} {<--yesno>} { (DQ <'Your user data will be moved:'> <Id.Lit_BadBackslash '\\'> <'n - From: '> ($ Id.VSub_DollarName FP_USERDATA_CURRENT) <Id.Lit_BadBackslash '\\'> <'n - To: '> ($ Id.VSub_DollarName target_userdata_dir) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nDo you wish to continue?'> ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<--defaultno>} {<12>} {<70>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [6567] ) ] redirects: [] ) (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 CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<'/DietPi/dietpi/func/dietpi-set_userdata'>} {(DQ ($ Id.VSub_DollarName FP_USERDATA_CURRENT))} {(DQ ($ Id.VSub_DollarName target_userdata_dir))} ) (C {<sleep>} {<1>}) ] spids: [6571 6585] ) ] else_action: [] redirects: [] ) ] spids: [6384 6401] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName OPTION))} {<Id.Lit_Equals '='>} {(DQ <Format>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FORMAT_RECREATE_PARTITION_TABLE='> name: FORMAT_RECREATE_PARTITION_TABLE ) op: assign_op.Equal rhs: {<1>} spids: [6631] ) ] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'drivepath_no_partitions='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<Return_Drive_Without_Partitions>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Eof_RParen _> ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName partition_contains_userdata)} redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<whiptail>} {<--title>} {(DQ <'Info: format prevented'>)} {<--msgbox>} { (DQ < 'Your DietPi user data is currently located on this drive:' > <Id.Lit_BadBackslash '\\'> <'n - '> ($ Id.VSub_DollarName FP_USERDATA_CURRENT) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nFormatting the drive at this time is not possible.'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nPlease move your user data elsewhere, before trying again:'> <Id.Lit_BadBackslash '\\'> <'nhttp://dietpi.com/phpbb/viewtopic.php?f=8&t=478'> ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<13>} {<80>} ) ] spids: [6656 6666] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<df>} {<-Ph>}) (C {<grep>} {<-ci>} {<-m1>} { (DQ <'^'> ($ Id.VSub_DollarName drivepath_no_partitions ) ) } ) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<whiptail>} {<--title>} {(DQ <'Notice:'>)} {<--msgbox>} { (DQ < 'As DietPi will format the entire drive with 1 partition, you must unmount ALL partitions on this disk, before formatting is available.' > ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<10>} {<70>} ) ] spids: [6713 6741] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETMENUID='> name: TARGETMENUID ) op: assign_op.Equal rhs: {<2>} spids: [6775] ) ] redirects: [] ) ] redirects: [] ) ] spids: [6610 6627] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName OPTION))} {<Id.Lit_Equals '='>} {(DQ <'Transfer RootFS'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FORMAT_RECREATE_PARTITION_TABLE='> name: FORMAT_RECREATE_PARTITION_TABLE ) op: assign_op.Equal rhs: {<0>} spids: [6809] ) ] redirects: [] ) (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 {<df>} {<-Ph>}) (C {<grep>} {<-ci>} {<-m1>} { (DQ <'^'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE > var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED ) } ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<whiptail>} {<--title>} {(DQ <'Notice:'>)} {<--msgbox>} { (DQ < 'Partition must be unmounted, before format and RootFS transfer can begin.' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nPlease unmount the partition, then try again.'> ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<10>} {<70>} ) ] spids: [6818 6850] ) ] else_action: [ (C {<whiptail>} {<--title>} {(DQ <'Move RootFS'>)} {<--yesno>} {<--defaultno>} { (DQ < 'This process will move RootFS data to another location. This may increase filesystem performance when using a USB drive over SD card, however, there are some limitations:' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> < 'n - The SD/EMMC card is still required for the boot process' > <Id.Lit_BadBackslash '\\'> <'n - ALL data on the target PARTITION will be deleted'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> < 'nNB: As this feature is still in testing, we recommend you use this feature on a fresh installation only.' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nDo you wish to continue?'> ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<18>} {<77>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'CHOICE='> name: CHOICE ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [6929] ) ] redirects: [] ) (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 CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<whiptail>} {<--title>} {(DQ <'Info:'>)} {<--msgbox>} { (DQ < 'On the next screen, you will be asked to format the target partition.' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> < 'nPlease see the following recommendations for RootFS target filesystem type:' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'n - Odroid'> <Id.Lit_BadBackslash '\\'> <'nRootFS transfer supports ONLY EXT4 format'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'n - RPi'> <Id.Lit_BadBackslash '\\'> <'nRootFS transfer supports EXT4, BTRFS and F2FS'> ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<16>} {<75>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETMENUID='> name: TARGETMENUID ) op: assign_op.Equal rhs: {<2>} spids: [6997] ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName TARGETMENUID)} right: {<Id.Lit_Digits 2>} ) redirects: [] ) ] ) body: (command.DoGroup children:[(C {<Menu_Format>})]) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName FORMAT_COMPLETED)} redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<RootFS_Move>})] spids: [7027 7037] ) ] else_action: [] redirects: [] ) ] spids: [6933 6947] ) ] else_action: [] redirects: [] ) ] redirects: [] ) ] spids: [6788 6805] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName OPTION))} {<Id.Lit_Equals '='>} {(DQ <'Read Only'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<Toggle_WriteMode>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ROOTFS_RW_CHECKED='> name: ROOTFS_RW_CHECKED ) op: assign_op.Equal rhs: {<0>} spids: [7081] ) ] redirects: [] ) ] spids: [7057 7074] ) ] else_action: [] redirects: [] ) ] spids: [5990 6004] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [7098] ) ] redirects: [] ) ] redirects: [] ) (C {<Init_Drives_and_Refresh>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Menu_Format body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<2>} spids: [7126] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FORMAT_COMPLETED='> name: FORMAT_COMPLETED ) op: assign_op.Equal rhs: {<0>} spids: [7131] ) ] redirects: [] ) (C {<'/DietPi/dietpi/func/dietpi-set_dphys-swapfile'>} {<0>} {<'/var/swap'>}) (C {<local>} {<Id.Lit_VarLike 'partition_table_text='> (SQ <MBR>)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName FORMAT_GPT)} redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'partition_table_text='> name: partition_table_text ) op: assign_op.Equal rhs: {(SQ <GPT>)} spids: [7170] ) ] redirects: [] ) ] spids: [7156 7166] ) ] else_action: [] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'format_type_text='> (SQ <EXT4>)}) (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 FORMAT_FILESYSTEM_TYPE)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'format_type_text='> name: format_type_text ) op: assign_op.Equal rhs: {(SQ <NTFS>)} spids: [7207] ) ] redirects: [] ) ] spids: [7189 7203] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName FORMAT_FILESYSTEM_TYPE)} right: {<Id.Lit_Digits 2>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'format_type_text='> name: format_type_text ) op: assign_op.Equal rhs: {(SQ <FAT32>)} spids: [7232] ) ] redirects: [] ) ] spids: [7214 7228] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName FORMAT_FILESYSTEM_TYPE)} right: {<Id.Lit_Digits 3>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'format_type_text='> name: format_type_text ) op: assign_op.Equal rhs: {(SQ <'HFS+'>)} spids: [7257] ) ] redirects: [] ) ] spids: [7239 7253] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName FORMAT_FILESYSTEM_TYPE)} right: {<Id.Lit_Digits 4>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'format_type_text='> name: format_type_text ) op: assign_op.Equal rhs: {(SQ <BTRFS>)} spids: [7282] ) ] redirects: [] ) ] spids: [7264 7278] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName FORMAT_FILESYSTEM_TYPE)} right: {<Id.Lit_Digits 5>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'format_type_text='> name: format_type_text ) op: assign_op.Equal rhs: {(SQ <F2FS>)} spids: [7307] ) ] redirects: [] ) ] spids: [7289 7303] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName FORMAT_FILESYSTEM_TYPE)} right: {<Id.Lit_Digits 6>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'format_type_text='> name: format_type_text ) op: assign_op.Equal rhs: {(SQ <EXFAT>)} spids: [7332] ) ] redirects: [] ) ] spids: [7314 7328] ) ] else_action: [] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'whiptail_menu_array='> (sh_array_literal left:<Id.Op_LParen _> words:[]) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <'Partition Type'>)} {(DQ <': '> ($ Id.VSub_DollarName partition_table_text))} ] ) } spids: [7351] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <'Filesystem Type'>)} {(DQ <': '> ($ Id.VSub_DollarName format_type_text))} ] ) } spids: [7364] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <Format>)} {(DQ <': Wipe all data and format drive with current options'>)} ] ) } spids: [7377] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_TITLE='> name:WHIP_TITLE) op: assign_op.Equal rhs: {(DQ <'Format Drive'>)} spids: [7390] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> name: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 <'Please select formatting options:'>)} {<--cancel-button>} {(DQ <Back>)} {<--default-item>} {(DQ ($ Id.VSub_DollarName MENU_LASTITEM))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<11>} {<75>} {<3>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name whiptail_menu_array> var_name: whiptail_menu_array bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] 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>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [7396] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [7456] ) ] redirects: [] ) (C {<unset>} {<whiptail_menu_array>}) (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 CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'MENU_LASTITEM='> name: MENU_LASTITEM ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName OPTION))} spids: [7485] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName OPTION))} {<Id.Lit_Equals '='>} {(DQ <'Partition Type'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'WHIP_TITLE='> name: WHIP_TITLE ) op: assign_op.Equal rhs: {(SQ <'Partition table?'>)} spids: [7513] ) ] redirects: [] ) (C {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName WHIP_TITLE))} {<--yesno>} { (DQ <'Would you like to use GPT or MBR parition table?'> <Id.Lit_BadBackslash '\\'> <'n - GPT is required for 2TB+ drives'> <Id.Lit_BadBackslash '\\'> <'n - MBR does NOT support 2TB+ drives'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nIf unsure, select GPT (default)'> ) } {<--yes-button>} {(DQ <MBR>)} {<--no-button>} {(DQ <GPT>)} {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<--defaultno>} {<12>} {<70>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [7566] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FORMAT_GPT='> name: FORMAT_GPT ) op: assign_op.Equal rhs: {<1>} spids: [7570] ) ] redirects: [] ) (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 CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FORMAT_GPT='> name: FORMAT_GPT ) op: assign_op.Equal rhs: {<0>} spids: [7592] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'partition_table_text='> name: partition_table_text ) op: assign_op.Equal rhs: {(SQ <MBR>)} spids: [7596] ) ] redirects: [] ) ] spids: [7574 7588] ) ] else_action: [] redirects: [] ) ] spids: [7492 7509] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName OPTION))} {<Id.Lit_Equals '='>} {(DQ <'Filesystem Type'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array='> name: whiptail_menu_array ) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [7628] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [{(DQ <0>)} {(DQ <': EXT4 | Default (Recommended)'>)}] ) } spids: [7633] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <1>)} {(DQ <': NTFS | Windows (High CPU usage)'>)} ] ) } spids: [7645] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <2>)} {(DQ <': FAT32 | All OS (4GB filesize limit)'>)} ] ) } spids: [7657] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <3>)} { (DQ < ': HFS+ | Mac OS X (Intel Mac default file system)' > ) } ] ) } spids: [7669] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <4>)} {(DQ <': BTRFS | Linux (Modern filesystem)'>)} ] ) } spids: [7681] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <5>)} {(DQ <': F2FS | Linux (Flash filesystem)'>)} ] ) } spids: [7693] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <6>)} {(DQ <': exFAT | Windows (Flash filesystem)'>)} ] ) } spids: [7705] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'WHIP_TITLE='> name: WHIP_TITLE ) op: assign_op.Equal rhs: {(SQ <'Filesystem Type?'>)} spids: [7718] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> name: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 < 'Please select a filesystem type for this format:' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nEXT4:'> <Id.Lit_BadBackslash '\\'> < 'nHighly recommended if you plan to use this drive solely on this system (dedicated drive).' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nNTFS:'> <Id.Lit_BadBackslash '\\'> < 'nRecommended if you plan to use this drive on a Windows system. High CPU usage during transfers.' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nFull list of different filesystem types:'> <Id.Lit_BadBackslash '\\'> <'nhttp://dietpi.com/phpbb/viewtopic.php?f=8&t=673&p=2898#p2898'> ) } {<--cancel-button>} {(DQ <Back>)} {<--default-item>} {(DQ ($ Id.VSub_DollarName FORMAT_FILESYSTEM_TYPE))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<24>} {<70>} {<5>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name whiptail_menu_array> var_name: whiptail_menu_array bracket_op: (bracket_op.WholeArray op_id: Id.Lit_At ) right: <Id.Right_DollarBrace '}'> ) ) } ] 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>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [7724] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [7802] ) ] redirects: [] ) (C {<unset>} {<whiptail_menu_array>}) (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 CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (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_DEqual left: {($ Id.VSub_DollarName OPTION)} right: {<Id.Lit_Digits 3>} ) right: (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>} {(SQ <'^hfsutils'>)} ) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<2>} { (DQ < 'Installing additional packages for HFS+ support, please wait...' > ) } ) (C {<G_AGI>} {<hfsplus>} {<hfsprogs>} {<hfsutils>}) ] spids: [7835 7872] ) (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_DEqual left: {($ Id.VSub_DollarName OPTION)} right: {<Id.Lit_Digits 4>} ) right: (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>} {(SQ <'^btrfs-tools'>)} ) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<2>} { (DQ < 'Installing additional packages for BTRFS support, please wait...' > ) } ) (C {<G_AGI>} {<btrfs-tools>}) ] spids: [7899 7936] ) (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_DEqual left: {($ Id.VSub_DollarName OPTION)} right: {<Id.Lit_Digits 5>} ) right: (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>} {(SQ <'^f2fs-tools'>)} ) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<2>} { (DQ < 'Installing additional packages for F2FS support, please wait...' > ) } ) (C {<G_AGI>} {<f2fs-tools>}) ] spids: [7959 7996] ) (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_DEqual left: {($ Id.VSub_DollarName OPTION)} right: {<Id.Lit_Digits 6>} ) right: (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>} {(SQ <'^exfat-utils'>)} ) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<2>} { (DQ < 'Installing additional packages for exFAT support, please wait...' > ) } ) (C {<G_AGI>} {<exfat-utils>} {<exfat-fuse>}) ] spids: [8019 8056] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FORMAT_FILESYSTEM_TYPE='> name: FORMAT_FILESYSTEM_TYPE ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName OPTION)} spids: [8081] ) ] redirects: [] ) ] spids: [7813 7827] ) ] else_action: [] redirects: [] ) ] spids: [7607 7624] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName OPTION))} {<Id.Lit_Equals '='>} {(DQ <Format>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'drivepath_no_partitions='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<Return_Drive_Without_Partitions>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Eof_RParen _> ) } ) (C {<local>} {<Id.Lit_VarLike 'text_desc='> (DQ <'Format Drive:'> <Id.Lit_BadBackslash '\\'> <'n - '> ($ Id.VSub_DollarName drivepath_no_partitions) <Id.Lit_BadBackslash '\\'> <'n - UUID='> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_UUID> var_name: aDRIVE_UUID bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED)} ) right: <Id.Right_DollarBrace '}'> ) <Id.Lit_BadBackslash '\\'> <'n - Partition table: '> ($ Id.VSub_DollarName partition_table_text) <Id.Lit_BadBackslash '\\'> <'n - Filesystem type: '> ($ Id.VSub_DollarName format_type_text) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nALL DATA and PARTITIONS on this drive will be DELETED.'> <Id.Lit_BadBackslash '\\'> <'nDo you wish to continue?'> ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Unary op_id: Id.Arith_Bang child: { ($ Id.VSub_DollarName FORMAT_RECREATE_PARTITION_TABLE ) } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'text_desc='> name: text_desc ) op: assign_op.Equal rhs: { (DQ <'Format partition:'> <Id.Lit_BadBackslash '\\'> <'n - '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_MOUNT_SOURCE> var_name: aDRIVE_MOUNT_SOURCE bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED ) } ) right: <Id.Right_DollarBrace '}'> ) <Id.Lit_BadBackslash '\\'> <'n - UUID='> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aDRIVE_UUID> var_name: aDRIVE_UUID bracket_op: (bracket_op.ArrayIndex expr: { ($ Id.VSub_DollarName INDEX_DRIVE_BEING_EDITED ) } ) right: <Id.Right_DollarBrace '}'> ) <Id.Lit_BadBackslash '\\'> <'n - Partition table: '> ($ Id.VSub_DollarName partition_table_text) <Id.Lit_BadBackslash '\\'> <'n - Filesystem type: '> ($ Id.VSub_DollarName format_type_text) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nALL DATA on this partition will be DELETED.'> <Id.Lit_BadBackslash '\\'> <'nDo you wish to continue?'> ) } spids: [8174] ) ] redirects: [] ) ] spids: [8158 8170] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'WHIP_TITLE='> name: WHIP_TITLE ) op: assign_op.Equal rhs: {(SQ <'Start Format?'>)} spids: [8213] ) ] redirects: [] ) (C {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName WHIP_TITLE))} {<--yesno>} {(DQ ($ Id.VSub_DollarName text_desc))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<--defaultno>} {<14>} {<75>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [8246] ) ] redirects: [] ) (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 CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<Run_Format>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETMENUID='> name: TARGETMENUID ) op: assign_op.Equal rhs: {<0>} spids: [8272] ) ] redirects: [] ) ] spids: [8250 8264] ) ] else_action: [] redirects: [] ) ] spids: [8090 8107] ) ] else_action: [] redirects: [] ) ] spids: [7467 7481] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<1>} spids: [8289] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Menu_Select_Mount_Location body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'whiptail_menu_array='> (sh_array_literal left:<Id.Op_LParen _> words:[]) } ) (command.Pipeline children: [ (C {<df>} {<-Ph>}) (C {<tail>} {<-n>} {<Id.Lit_Other '+'> <2>}) (C {<grep>} {<-v>} {(SQ <'tmpfs[[:space:]]'>)}) (command.Simple words: [{<grep>} {<-v>} {(SQ <'^udev'>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/tmp/dietpi-drive_manager_selmnt'>} ) ] more_env: [] do_fork: T ) ] negated: F stderr_indices: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<line>})]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whiptail_menu_array+='> name: whiptail_menu_array ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {<-e>} {($ Id.VSub_DollarName line)}) (C {<awk>} {(SQ <'{print $6}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) ) } { (DQ <': '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {<-e>} {($ Id.VSub_DollarName line)}) (C {<awk>} {(SQ <'{print $1}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) <' | size: '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {<-e>} {($ Id.VSub_DollarName line)}) (C {<awk>} {(SQ <'{print $2}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) <' | available: '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {<-e>} {($ Id.VSub_DollarName line)}) (C {<awk>} {(SQ <'{print $4}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) ) } ] ) } spids: [8371] ) ] redirects: [] ) ] ) redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {<'/tmp/dietpi-drive_manager_selmnt'>} ) ] ) (C {<rm>} {<'/tmp/dietpi-drive_manager_selmnt'>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_TITLE='> name:WHIP_TITLE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} spids: [8459] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> name: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 <'Please select a mount location to use:'>)} {<--default-item>} {(DQ ($ Id.VSub_DollarName MENU_LASTITEM))} {<--cancel-button>} {(DQ <Exit>)} {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<16>} {<110>} {<7>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name whiptail_menu_array> var_name: whiptail_menu_array bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] 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>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [8465] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [8526] ) ] redirects: [] ) (C {<unset>} {<whiptail_menu_array>}) (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 CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'drive_manager_selection='> (DQ ($ Id.VSub_DollarName OPTION))} ) (C {<G_DIETPI-NOTIFY>} {<0>} {(DQ <'Drive mount selected: '> ($ Id.VSub_DollarName drive_manager_selection))} ) (command.Simple words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName drive_manager_selection))}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_DRIVE_MANAGER_SELECTION))} ) ] more_env: [] do_fork: T ) ] spids: [8537 8551] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Menu_Exit body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_TITLE='> name:WHIP_TITLE) op: assign_op.Equal rhs: {(DQ <'Exit '> ($ Id.VSub_DollarName PROGRAM_NAME) <'?'>)} spids: [8605] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_QUESTION='> name:WHIP_QUESTION) op: assign_op.Equal rhs: {(DQ <'Exit '> ($ Id.VSub_DollarName PROGRAM_NAME) <'?'>)} spids: [8613] ) ] redirects: [] ) (C {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName WHIP_TITLE))} {<--yesno>} {(DQ ($ Id.VSub_DollarName WHIP_QUESTION))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME))} {<--yes-button>} {(DQ <Ok>)} {<--no-button>} {(DQ <Back>)} {<--defaultno>} {<9>} {<55>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [8660] ) ] redirects: [] ) (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 CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETMENUID='> name: TARGETMENUID ) op: assign_op.Equal rhs: {<-1>} spids: [8686] ) ] redirects: [] ) ] spids: [8664 8678] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [8699] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (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 INPUT)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SERVICE_CONTROL='> name: SERVICE_CONTROL ) op: assign_op.Equal rhs: {<0>} spids: [8742] ) ] redirects: [] ) ] spids: [8724 8738] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child:{($ Id.VSub_DollarName SERVICE_CONTROL)} redirects:[]) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<'/DietPi/dietpi/dietpi-services'>} {<stop>})] spids: [8758 8768] ) ] else_action: [] redirects: [] ) (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 INPUT)} right: {<Id.Lit_Digits 4>} ) redirects: [] ) 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: 8834 stdin_parts: [ <'#Samba Client------------------------------------------------------\n'> < '#/mnt/samba . Please use dietpi-config and the Networking Options: NAS menu to setup this mount\n' > <'\n'> <'#FTP Client Mount--------------------------------------------------\n'> < '#/mnt/ftp_client . Please use dietpi-config and the Networking Options: NAS menu to setup this mount\n' > <'\n'> <'#NFS Client Mount--------------------------------------------------\n'> < '#/mnt/nfs_client . Please use dietpi-config and the Networking Options: NAS menu to setup this mount\n' > <'\n'> <'#TMPFS / MISC ------------------------------------------------------\n'> < 'proc /proc proc defaults\t\t\t\t\t\t\t\t\t\t\t0 0\n' > < 'tmpfs \t\t\t/tmp \t\t\ttmpfs \tdefaults,noatime,nodev,nosuid,mode=1777\t\t\t\t0 0\n' > < 'tmpfs \t\t\t/var/log \t\ttmpfs \tdefaults,size=20m,noatime,nodev,nosuid,mode=1777\t0 0\n' > < 'tmpfs \t\t\t/DietPi \t\ttmpfs \tdefaults,size=10m,noatime,nodev,nosuid,mode=1777\t0 0\n' > <'\n'> <'#Internal Drives---------------------------------------------------\n'> ] ) ) (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/etc/fstab'>} ) ] more_env: [] do_fork: T ) (C {<Init_Drives_and_Refresh>}) ] spids: [8789 8803] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName INPUT)} right: {<Id.Lit_Digits 3>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<RootFS_RW_Check>})] spids: [8845 8859] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName INPUT)} right: {<Id.Lit_Digits 2>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Init_Drives_and_Refresh>}) (C {<RootFS_Low_Free_Space_Check>})] spids: [8871 8885] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName INPUT)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Init_Drives_and_Refresh>}) (C {<Menu_Select_Mount_Location>})] spids: [8900 8914] ) (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 20>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<G_DIETPI-NOTIFY>} {<1>} {(DQ ($ Id.VSub_DollarName PROGRAM_NAME) <' is not currently supported on VM images'>)} ) ] spids: [8929 8943] ) ] else_action: [ (C {<Init_Drives_and_Refresh>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: {($ Id.VSub_DollarName TARGETMENUID)} right: (arith_expr.Unary op_id:Id.Node_UnaryMinus child:{<Id.Lit_Digits 1>}) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<clear>}) (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 TARGETMENUID)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Menu_Main_Drive_Manager>})] spids: [8993 9007] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName TARGETMENUID)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Menu_Drive_Manager_Edit_Drive>})] spids: [9015 9029] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName TARGETMENUID)} right: {<Id.Lit_Digits 2>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Menu_Format>})] spids: [9037 9051] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) ] redirects: [] ) (C {<Destroy>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child:{($ Id.VSub_DollarName SERVICE_CONTROL)} redirects:[]) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<'/DietPi/dietpi/dietpi-services'>} {<start>})] spids: [9090 9100] ) ] else_action: [] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_DollarName EXIT_CODE)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> )