(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: [71] ) ] 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: [98] ) ] redirects: [] ) ] spids: [75 95] ) ] else_action: [] redirects: [] ) (C {<.>} {<'/DietPi/dietpi/func/dietpi-globals'>}) (C {<G_CHECK_ROOT_USER>}) (C {<G_CHECK_ROOTFS_RW>}) (C {<export>} {<Id.Lit_VarLike 'G_PROGRAM_NAME='> (SQ <DietPi-Cleaner>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FP_TEMP='> name:FP_TEMP) op: assign_op.Equal rhs: {(DQ <'/tmp/.dietpi-cleaner'>)} spids: [146] ) ] redirects: [] ) (command.ShFunction name: Banner_Cleaning body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<echo>} {<-e>} {(DQ <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n>)}) (C {<echo>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> < 'e[38;5;154m───────────────────────────────────────' > <Id.Lit_BadBackslash '\\'> <'e[0m'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'e[1mDietPi-Cleaner'> <Id.Lit_BadBackslash '\\'> <'e[0m'> <Id.Lit_BadBackslash '\\'> <'n - '> ($ Id.VSub_DollarName INFO_CLEAN_NAME) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> < 'e[38;5;154m───────────────────────────────────────' > <Id.Lit_BadBackslash '\\'> <'e[0m'> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_BACKTITLE='> name:WHIP_BACKTITLE) op: assign_op.Equal rhs: {(SQ <'- DietPi-Cleaner -'>)} spids: [232] ) ] 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: {($ Id.VSub_DollarName WHIP_BACKTITLE)} spids: [238] ) ] 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: {<0>} spids: [242] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {<0>} spids: [246] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [250] ) ] redirects: [] ) (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: {(SQ <'Exit DietPi-Cleaner?'>)} spids: [261] ) ] 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: {(SQ <'Exit DietPi-Cleaner?'>)} spids: [267] ) ] redirects: [] ) (C {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName WHIP_TITLE))} {<--yesno>} {(DQ ($ Id.VSub_DollarName WHIP_QUESTION))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_TITLE))} {<--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: [312] ) ] 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: [337] ) ] redirects: [] ) ] spids: [316 330] ) ] 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: [348] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Menu_Main 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: {($ Id.VSub_DollarName WHIP_BACKTITLE)} spids: [370] ) ] redirects: [] ) (C {<Update_Space_Used>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [383] ) ] 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 <'Free up used space and system resources:'> <Id.Lit_BadBackslash '\\'> <'n - RootFS usage current = '> ($ Id.VSub_DollarName ROOT_SPACE_USED_CURRENT) <' MB'> <Id.Lit_BadBackslash '\\'> <'n - RootFS space cleared = '> ($ Id.VSub_DollarName ROOT_SPACE_FREE_DELTA) <' MB'> ) } spids: [387] ) ] 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))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<--menu>} {(DQ ($ Id.VSub_DollarName WHIP_QUESTION))} {<--cancel-button>} {(DQ <Exit>)} {<15>} {<75>} {<5>} {(DQ <Help>)} {(DQ <'What does DietPi-Cleaner do?'>)} {(DQ <Cleaners>)} {(DQ <'Control which cleaners are enabled.'>)} {(DQ <' - Files'>)} {(DQ <'Set file cleaner options.'>)} {(DQ <Test>)} {(DQ <'Simulate the cleaning process, without modifying any data.'>)} {(DQ <Run>)} {(DQ <'Run enabled cleaners.'>)} ] 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: [402] ) ] 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: [498] ) ] 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.Case to_match: {(DQ ($ Id.VSub_DollarName OPTION))} arms: [ (case_arm pat_list: [{<Help>}] action: [ (C {<whiptail>} {<--title>} {(DQ <'DietPi-Cleaner Help'>)} {<--msgbox>} { (DQ < 'DietPi-Cleaner is a program that allows you to remove unwanted junk from your DietPi system, freeing up filesystem space in the process.' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> < 'nSimply enable the cleaners you require, then select Test to see what will happen, without modifying your system.' > <Id.Lit_BadBackslash '\\'> < 'nOnce your satisfied with the Test results, select Run to clean your system.' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nMore information:'> <Id.Lit_BadBackslash '\\'> <'n - http://dietpi.com/phpbb/viewtopic.php?f=8&t=5&p=623#p623'> ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<16>} {<75>} ) ] spids: [528 529 569 -1] ) (case_arm pat_list: [{(DQ <' - Files'>)}] 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: [578] ) ] redirects: [] ) ] spids: [572 575 582 -1] ) (case_arm pat_list: [{<Cleaners>}] 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: [589] ) ] redirects: [] ) ] spids: [585 586 593 -1] ) (case_arm pat_list: [{<Test>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DRY_RUN='> name: DRY_RUN ) op: assign_op.Equal rhs: {<1>} spids: [604] ) ] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'at_least_one_cleaner_is_enabled='> <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_CLEANERS)} ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike i) ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aEnabledCleaners> var_name: aEnabledCleaners bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } 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 'at_least_one_cleaner_is_enabled=' > name: at_least_one_cleaner_is_enabled ) op: assign_op.Equal rhs: {<1>} spids: [662] ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [640 659] ) ] else_action: [] redirects: [] ) ] ) 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 at_least_one_cleaner_is_enabled ) } right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<whiptail>} {<--title>} {(DQ <'Run DietPi-Cleaner?'>)} {<--yesno>} { (DQ < 'DietPi-Cleaner will now simulate your enabled cleaners.' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'n(Notice): No data will be modified.'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nContinue with test run?'> ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<--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: [732] ) ] 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_Cleaners>})] spids: [736 750] ) ] else_action: [] redirects: [] ) ] spids: [676 690] ) ] else_action: [ (C {<whiptail>} {<--title>} {(DQ <'No cleaner jobs enabled'>)} {<--msgbox>} { (DQ < 'DietPi-Cleaner could not be run as there are no enabled cleaners. Please go to cleaners, then select which you would like to enable.' > ) } {<10>} {<70>} ) ] redirects: [] ) ] spids: [596 597 784 -1] ) (case_arm pat_list: [{<Run>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DRY_RUN='> name: DRY_RUN ) op: assign_op.Equal rhs: {<0>} spids: [795] ) ] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'at_least_one_cleaner_is_enabled='> <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_CLEANERS)} ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike i) ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aEnabledCleaners> var_name: aEnabledCleaners bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } 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 'at_least_one_cleaner_is_enabled=' > name: at_least_one_cleaner_is_enabled ) op: assign_op.Equal rhs: {<1>} spids: [853] ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [831 850] ) ] else_action: [] redirects: [] ) ] ) 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 at_least_one_cleaner_is_enabled ) } right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<whiptail>} {<--title>} {(DQ <'Run DietPi-Cleaner?'>)} {<--yesno>} { (DQ <'DietPi-Cleaner will now run your enabled cleaners.'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> < 'n(Notice): If you are unsure what this program will do, I would recommend creating a backup with dietpi-backup before proceeding.' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> < 'nWould you like to continue and start the cleaning process?' > ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<--defaultno>} {<13>} {<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: [923] ) ] 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_Cleaners>})] spids: [927 941] ) ] else_action: [] redirects: [] ) ] spids: [867 881] ) ] else_action: [ (C {<whiptail>} {<--title>} {(DQ <'No cleaner jobs enabled'>)} {<--msgbox>} { (DQ < 'DietPi-Cleaner could not be run as there are no enabled cleaners. Please go to cleaners, then select which you would like to enable.' > ) } {<10>} {<70>} ) ] redirects: [] ) ] spids: [787 788 975 -1] ) ] redirects: [] ) ] spids: [502 516] ) ] else_action: [(C {<Menu_Exit>})] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Menu_Cleaners 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: {<0>} spids: [1010] ) ] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'aWhiptailLine='> (sh_array_literal left:<Id.Op_LParen _> words:[])} ) (C {<local>} {<Id.Lit_VarLike 'OnOff_Status='> (DQ <on>)}) (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_CLEANERS)} ) 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 'OnOff_Status='> name: OnOff_Status ) op: assign_op.Equal rhs: {(DQ <on>)} spids: [1060] ) ] 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: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aEnabledCleaners> var_name: aEnabledCleaners bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } 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 'OnOff_Status='> name: OnOff_Status ) op: assign_op.Equal rhs: {(DQ <off>)} spids: [1088] ) ] redirects: [] ) ] spids: [1066 1085] ) ] 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 i)} 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 'aWhiptailLine+='> name: aWhiptailLine ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName i) <' '>)} { (DQ < 'Dev - Uninstalls all dev packages (eg: git, lib123-dev).' > ) } {(DQ ($ Id.VSub_DollarName OnOff_Status))} ] ) } spids: [1119] ) ] redirects: [] ) ] spids: [1102 1116] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName i)} 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 'aWhiptailLine+='> name: aWhiptailLine ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName i) <' '>)} {(DQ <'Manpages - Removes offline documentation.'>)} {(DQ ($ Id.VSub_DollarName OnOff_Status))} ] ) } spids: [1153] ) ] redirects: [] ) ] spids: [1136 1150] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName i)} 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 'aWhiptailLine+='> name: aWhiptailLine ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName i) <' '>)} { (DQ < 'Files - Scan and remove files matching user include list.' > ) } {(DQ ($ Id.VSub_DollarName OnOff_Status))} ] ) } spids: [1187] ) ] redirects: [] ) ] spids: [1170 1184] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName i)} 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 'aWhiptailLine+='> name: aWhiptailLine ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName i) <' '>)} {(DQ <'Logs - Clears the log file directory (/var/log).'>)} {(DQ ($ Id.VSub_DollarName OnOff_Status))} ] ) } spids: [1221] ) ] redirects: [] ) ] spids: [1204 1218] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName i)} 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 'aWhiptailLine+='> name: aWhiptailLine ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ ($ Id.VSub_DollarName i) <' '>)} { (DQ < 'Apt - Clears the apt cache and runs a fresh update.' > ) } {(DQ ($ Id.VSub_DollarName OnOff_Status))} ] ) } spids: [1255] ) ] redirects: [] ) ] spids: [1238 1252] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'aWhiptailLine+='> name: aWhiptailLine ) op: assign_op.PlusEqual rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ {(DQ <'New '>)} {(DQ <Unknown>)} {(DQ ($ Id.VSub_DollarName OnOff_Status))} ] ) } spids: [1275] ) ] redirects: [] ) ] redirects: [] ) ] ) 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 <'- Options : Cleaner Selection -'>)} spids: [1299] ) ] 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: {(SQ <'Please use the spacebar to toggle which cleaners are enabled.'>)} spids: [1305] ) ] redirects: [] ) (command.Simple words: [ {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName WHIP_TITLE))} {<--checklist>} {(DQ ($ Id.VSub_DollarName WHIP_QUESTION))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_TITLE))} {<--separate-output>} {<14>} {<75>} {<5>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aWhiptailLine> var_name: aWhiptailLine bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {(DQ ($ Id.VSub_DollarName FP_TEMP))} ) ] more_env: [] do_fork: T ) (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: [1355] ) ] 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.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_CLEANERS)} ) 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 'aEnabledCleaners['> name: aEnabledCleaners index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<0>} spids: [1400] ) ] 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: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {(DQ ($ Id.VSub_DollarName FP_TEMP))} ) (C {<grep>} {<-ci>} {<-m1>} {(DQ ($ Id.VSub_DollarName i) <' '>)} ) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.IndexedName left: <Id.Lit_ArrayLhsOpen 'aEnabledCleaners['> name: aEnabledCleaners index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<1>} spids: [1444] ) ] redirects: [] ) ] spids: [1408 1441] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) ] spids: [1360 1374] ) ] else_action: [] redirects: [] ) (command.Simple words: [{<rm>} {(DQ ($ Id.VSub_DollarName FP_TEMP))}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<unset>} {<aWhiptailLine>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Menu_Options_Files 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: {<0>} spids: [1509] ) ] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'option_1_text='> (DQ <'Include mount directory (/mnt/*) during file scan'>) } ) (C {<local>} {<Id.Lit_VarLike 'include_mnt_status='> (DQ <Disabled>)}) (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 INCLUDE_MNT)} 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 'include_mnt_status='> name: include_mnt_status ) op: assign_op.Equal rhs: {(DQ <Enabled>)} spids: [1547] ) ] redirects: [] ) ] spids: [1530 1544] ) ] else_action: [] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'option_2_text='> (DQ <'Modify filenames/extensions to include during scan.'>) } ) (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 <'Files: Cleaner options.'> <Id.Lit_BadBackslash '\\'> <'n(NB) The cleaner named \'Files\' must be enabled for this to work.'> ) } spids: [1566] ) ] 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 <'- Files: Cleaner options -'>)} spids: [1574] ) ] 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))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<--menu>} {(DQ ($ Id.VSub_DollarName WHIP_QUESTION))} {<--cancel-button>} {(DQ <Exit>)} {<12>} {<68>} {<2>} {(DQ ($ Id.VSub_DollarName option_1_text))} {(DQ <': '> ($ Id.VSub_DollarName include_mnt_status))} {(DQ ($ Id.VSub_DollarName option_2_text))} {(DQ )} ] 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: [1581] ) ] 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: [1647] ) ] 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.Case to_match: {(DQ ($ Id.VSub_DollarName OPTION))} arms: [ (case_arm pat_list: [{(DQ ($ Id.VSub_DollarName option_1_text))}] action: [ (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 INCLUDE_MNT)} 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 'INCLUDE_MNT='> name: INCLUDE_MNT ) op: assign_op.Equal rhs: {<0>} spids: [1700] ) ] redirects: [] ) ] spids: [1683 1697] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'INCLUDE_MNT='> name: INCLUDE_MNT ) op: assign_op.Equal rhs: {<1>} spids: [1707] ) ] redirects: [] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETMENUID='> name: TARGETMENUID ) op: assign_op.Equal rhs: {<2>} spids: [1714] ) ] redirects: [] ) ] spids: [1677 1680 1718 -1] ) (case_arm pat_list: [{(DQ ($ Id.VSub_DollarName option_2_text))}] action: [ (C {<nano>} {(DQ ($ Id.VSub_DollarName FILEPATH_CUSTOMFILES))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETMENUID='> name: TARGETMENUID ) op: assign_op.Equal rhs: {<2>} spids: [1734] ) ] redirects: [] ) ] spids: [1721 1724 1738 -1] ) ] redirects: [] ) ] spids: [1651 1665] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ROOT_SPACE_USED_BEFORE='> name: ROOT_SPACE_USED_BEFORE ) op: assign_op.Equal rhs: {<0>} spids: [1768] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ROOT_SPACE_USED_AFTER='> name: ROOT_SPACE_USED_AFTER ) op: assign_op.Equal rhs: {<0>} spids: [1772] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ROOT_SPACE_USED_CURRENT='> name: ROOT_SPACE_USED_CURRENT ) op: assign_op.Equal rhs: {<0>} spids: [1776] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ROOT_SPACE_FREE_DELTA='> name: ROOT_SPACE_FREE_DELTA ) op: assign_op.Equal rhs: {(DQ <'Cleaner has not been run - 0'>)} spids: [1780] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ROOTFS_DEVICE_PATH='> name:ROOTFS_DEVICE_PATH) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {<4p>} {<'/DietPi/dietpi/.hw_model'>}) right: <Id.Eof_RParen _> ) } spids: [1786] ) ] redirects: [] ) (command.ShFunction name: Update_Space_Used body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ROOT_SPACE_USED_CURRENT='> name: ROOT_SPACE_USED_CURRENT ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<df>} {<--block-size>} {<MB>}) (C {<grep>} {(DQ ($ Id.VSub_DollarName ROOTFS_DEVICE_PATH))}) (C {<awk>} {(SQ <'{ print $3 }'>)}) (C {<tr>} {<-d>} {(SQ <MB>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [1806] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAX_CLEANERS='> name:MAX_CLEANERS) op: assign_op.Equal rhs: {<5>} spids: [1858] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'aEnabledCleaners='> name:aEnabledCleaners) op: assign_op.Equal rhs: {(sh_array_literal left:<Id.Op_LParen _> words:[])} spids: [1862] ) ] 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_CLEANERS)} ) 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 'aEnabledCleaners['> name: aEnabledCleaners index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<0>} spids: [1889] ) ] redirects: [] ) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INCLUDE_MNT='> name:INCLUDE_MNT) op: assign_op.Equal rhs: {<0>} spids: [1901] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DRY_RUN='> name:DRY_RUN) op: assign_op.Equal rhs: {<0>} spids: [1905] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INFO_CLEAN_NAME='> name:INFO_CLEAN_NAME) op: assign_op.Equal rhs: {(DQ )} spids: [1910] ) ] redirects: [] ) (command.ShFunction name: Run_Cleaners body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<'/DietPi/dietpi/dietpi-services'>} {<stop>}) (C {<Update_Space_Used>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ROOT_SPACE_USED_BEFORE='> name: ROOT_SPACE_USED_BEFORE ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ROOT_SPACE_USED_CURRENT)} spids: [1936] ) ] 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_CLEANERS)} ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i)) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aEnabledCleaners> var_name: aEnabledCleaners bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) } right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Run_Cleaner_> (DQ ($ Id.VSub_DollarName i))})] spids: [1967 1986] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (C {<Update_Space_Used>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ROOT_SPACE_USED_AFTER='> name: ROOT_SPACE_USED_AFTER ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName ROOT_SPACE_USED_CURRENT)} spids: [2005] ) ] redirects: [] ) (C {<'/DietPi/dietpi/dietpi-services'>} {<start>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ROOT_SPACE_FREE_DELTA='> name: ROOT_SPACE_FREE_DELTA ) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName ROOT_SPACE_USED_BEFORE)} right: {($ Id.VSub_DollarName ROOT_SPACE_USED_AFTER)} ) ) } spids: [2024] ) ] 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 <'DietPi-Cleaner has finished cleaning RootFS:'> <Id.Lit_BadBackslash '\\'> <'n - '> ($ Id.VSub_DollarName ROOT_SPACE_FREE_DELTA) <' MB of space has been cleared.'> ) } spids: [2038] ) ] 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 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<whiptail>} {<--title>} {(DQ <'DietPi-Cleaner completed.'>)} {<--msgbox>} {(DQ ($ Id.VSub_DollarName WHIP_QUESTION))} {<10>} {<70>} ) ] spids: [2048 2062] ) (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 {<echo>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> <n> ($ Id.VSub_DollarName WHIP_QUESTION) <Id.Lit_BadBackslash '\\'> <n> ) } ) ] spids: [2084 2098] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Run_Cleaner_0 body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'INFO_CLEAN_NAME='> name: INFO_CLEAN_NAME ) op: assign_op.Equal rhs: {(DQ <'Dev packages'>)} spids: [2133] ) ] redirects: [] ) (C {<Banner_Cleaning>}) (C {<local>} {<Id.Lit_VarLike 'string_package_names='> (DQ )}) (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 'string_package_names+='> name: string_package_names ) op: assign_op.PlusEqual rhs: {(DQ ($ Id.VSub_DollarName line) <' '>)} spids: [2164] ) ] redirects: [] ) ] ) redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: { (command_sub left_token: <Id.Left_ProcSubIn '<('> child: (command.Pipeline children: [ (C {<dpkg>} {<-l>}) (C {<grep>} {(SQ <'\\-dev:'>)}) (C {<awk>} {(SQ <'{ print $2 }'>)}) (C {<cut>} {<-f1>} {<-d> (DQ <':'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'string_package_names+='> name: string_package_names ) op: assign_op.PlusEqual rhs: {(DQ <'build-essential git'>)} spids: [2215] ) ] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'Yes_or_Simulate='> (DQ <-y>)}) (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 DRY_RUN)} 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 'Yes_or_Simulate='> name: Yes_or_Simulate ) op: assign_op.Equal rhs: {(DQ <-s>)} spids: [2251] ) ] redirects: [] ) ] spids: [2234 2248] ) ] else_action: [] redirects: [] ) (C {<apt-get>} {<purge>} {($ Id.VSub_DollarName string_package_names)} {($ Id.VSub_DollarName Yes_or_Simulate)} ) (C {<apt-get>} {<autoremove>} {<--purge>} {($ Id.VSub_DollarName Yes_or_Simulate)}) (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 DRY_RUN)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<sed>} {<-i>} {(DQ <'/BUILDESSENTIAL=/c'> <Id.Lit_BadBackslash '\\'> <'BUILDESSENTIAL=0'>)} {<'/DietPi/dietpi/.installed'>} ) (C {<sed>} {<-i>} {(DQ <'/GITCLIENT=/c'> <Id.Lit_BadBackslash '\\'> <'GITCLIENT=0'>)} {<'/DietPi/dietpi/.installed'>} ) ] spids: [2284 2298] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Run_Cleaner_1 body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'INFO_CLEAN_NAME='> name: INFO_CLEAN_NAME ) op: assign_op.Equal rhs: {(DQ <'Man pages and docs'>)} spids: [2346] ) ] redirects: [] ) (C {<Banner_Cleaning>}) (C {<local>} {<Id.Lit_VarLike 'Yes_or_Simulate='> (DQ <-y>)}) (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 DRY_RUN)} 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 'Yes_or_Simulate='> name: Yes_or_Simulate ) op: assign_op.Equal rhs: {(DQ <-s>)} spids: [2381] ) ] redirects: [] ) ] spids: [2364 2378] ) ] else_action: [] redirects: [] ) (C {<apt-get>} {<purge>} {<man>} {<manpages>} {($ Id.VSub_DollarName Yes_or_Simulate)}) (C {<apt-get>} {<autoremove>} {<--purge>} {($ Id.VSub_DollarName Yes_or_Simulate)}) (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 DRY_RUN)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<rm>} {<-R>} {<'/usr/share/man'>}) (C {<rm>} {<-R>} {<'/usr/share/doc'>}) (C {<rm>} {<-R>} {<'/usr/share/doc-base'>}) ] spids: [2416 2430] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Run_Cleaner_2 body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'INFO_CLEAN_NAME='> name: INFO_CLEAN_NAME ) op: assign_op.Equal rhs: {(DQ <Files>)} spids: [2473] ) ] redirects: [] ) (C {<Banner_Cleaning>}) (command.Pipeline children: [ (C {<cat>} {(DQ ($ Id.VSub_DollarName FILEPATH_CUSTOMFILES))}) (C {<sed>} {(SQ <'/#/d'>)}) (C {<sed>} {(SQ <'/ /d'>)}) (command.Simple words: [{<sed>} {(SQ <'/^$/d'>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_TEMP))} ) ] more_env: [] do_fork: T ) ] negated: F stderr_indices: [] ) (C {<local>} {<Id.Lit_VarLike 'line_count='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [(C {<cat>} {(DQ ($ Id.VSub_DollarName FP_TEMP))}) (C {<wc>} {<-l>})] 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_DEqual left: {($ Id.VSub_DollarName line_count)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> < 'nNo files to find. Have you setup the Files options and added filename entries to match?' > <Id.Lit_BadBackslash '\\'> <n> ) } ) ] spids: [2547 2561] ) ] else_action: [ (C {<local>} {<Id.Lit_VarLike 'aCustomFiles='> (sh_array_literal left:<Id.Op_LParen _> words:[])} ) (command.Simple words: [{<readarray>} {<aCustomFiles>}] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName FP_TEMP))} ) ] more_env: [] do_fork: T ) (C {<local>} {<Id.Lit_VarLike 'find_string='> (DQ )}) (C {<echo>} {<-e>} {(DQ <Id.Lit_BadBackslash '\\'> <'nSearching for filenames matching:'>)} ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 0>} ) cond: (arith_expr.Binary op_id: Id.Arith_Less left: ($ Id.Lit_ArithVarLike i) right: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCustomFiles> var_name: aCustomFiles prefix_op: <Id.VSub_Pound '#'> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) right: <Id.Right_DollarBrace '}'> ) } ) update: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike i) ) body: (command.DoGroup children: [ (C {<echo>} {<-e>} { (DQ <'- '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCustomFiles> var_name: aCustomFiles 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: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName i)} 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 'find_string='> name: find_string ) op: assign_op.Equal rhs: { (DQ <'-name '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCustomFiles> var_name: aCustomFiles bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [2687] ) ] redirects: [] ) ] spids: [2670 2684] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'find_string+='> name: find_string ) op: assign_op.PlusEqual rhs: { (DQ <' -or -name '> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aCustomFiles> var_name: aCustomFiles bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName i)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [2702] ) ] redirects: [] ) ] redirects: [] ) ] ) redirects: [] ) (C {<echo>} {<-e>} {(DQ <'Please wait....'>)}) (command.Simple words: [{<find>} {<'/'>} {<-type>} {<f>} {($ Id.VSub_DollarName find_string)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_TEMP))} ) ] more_env: [] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName INCLUDE_MNT)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<sed>} {<-i>} {(SQ <'/\\/mnt/d'>)} {(DQ ($ Id.VSub_DollarName FP_TEMP))}) ] spids: [2758 2772] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'line_count='> name:line_count) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {(DQ ($ Id.VSub_DollarName FP_TEMP))}) (C {<wc>} {<-l>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [2792] ) ] 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 line_count)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> <'nNo matching filenames were found.'> <Id.Lit_BadBackslash '\\'> <n> ) } ) ] spids: [2808 2822] ) ] else_action: [ (C {<echo>} {<-e>} { (DQ <Id.Lit_BadBackslash '\\'> <'nFound the following matching files:'> <Id.Lit_BadBackslash '\\'> <n> ) } ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<line>})]) body: (command.DoGroup children: [ (C {<echo>} {<-e>} {(DQ <'- Filepath: '> ($ Id.VSub_DollarName line))}) (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 DRY_RUN)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {<-e>} {(DQ <Deleted.> <Id.Lit_BadBackslash '\\'> <n>)}) (C {<rm>} {(DQ ($ Id.VSub_DollarName line))}) ] spids: [2880 2894] ) ] else_action: [] redirects: [] ) ] ) redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName FP_TEMP))} ) ] ) (C {<unset>} {<aCustomFiles>}) ] redirects: [] ) (command.Simple words: [{<rm>} {(DQ ($ Id.VSub_DollarName FP_TEMP))}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Run_Cleaner_3 body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'INFO_CLEAN_NAME='> name: INFO_CLEAN_NAME ) op: assign_op.Equal rhs: {(DQ <'Log files'>)} spids: [2970] ) ] redirects: [] ) (C {<Banner_Cleaning>}) (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 DRY_RUN)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<'/DietPi/dietpi/dietpi-logclear'>} {<1>})] spids: [2980 2994] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Run_Cleaner_4 body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'INFO_CLEAN_NAME='> name: INFO_CLEAN_NAME ) op: assign_op.Equal rhs: {(DQ <'Apt cache and update'>)} spids: [3021] ) ] redirects: [] ) (C {<Banner_Cleaning>}) (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 DRY_RUN)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<apt-get>} {<clean>}) (C {<rm>} {<'/var/lib/apt/lists/'> <Id.Lit_Star '*'>} {<-vf>}) (C {<G_AGUP>}) ] spids: [3031 3045] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FILEPATH_SETTINGS='> name:FILEPATH_SETTINGS) op: assign_op.Equal rhs: {(DQ <'/DietPi/dietpi/.dietpi-cleaner'>)} spids: [3090] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FILEPATH_CUSTOMFILES='> name: FILEPATH_CUSTOMFILES ) op: assign_op.Equal rhs: {(DQ <'/DietPi/dietpi/.dietpi-cleaner_custom_files'>)} spids: [3096] ) ] redirects: [] ) (command.ShFunction name: Read_Settings_File body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName FILEPATH_SETTINGS))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'line_count='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {(DQ ($ Id.VSub_DollarName FILEPATH_SETTINGS))}) (C {<wc>} {<-l>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) (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 line_count)} ) 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 'aEnabledCleaners['> name: aEnabledCleaners index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName i)} right: {<Id.Lit_Digits 1>} ) ) <p> } {($ Id.VSub_DollarName FILEPATH_SETTINGS)} ) right: <Id.Eof_RParen _> ) } spids: [3176] ) ] redirects: [] ) ] ) redirects: [] ) ] spids: [3110 3123] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} {(DQ ($ Id.VSub_DollarName FILEPATH_CUSTOMFILES))} {<Id.Lit_RBracket ']'>} ) 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: 3265 stdin_parts: [ < '# ------------------------------------------------------------------\n' > < '# Specify filenames or extentions to match during filescan removals.\n' > <'#\n'> <'# One item per line.\n'> <'#\n'> <'# Examples:\n'> <'# *.tmp\n'> <'# ThisFileWillBeDeleted.mp3\n'> <'# *AnyFilenameContainingThisTextWillBeDeleted*\n'> <'#\n'> <'# To save and exit:\n'> <'# - Press CTRL+X\n'> <'# - Press Y\n'> <'# - Press Enter\n'> < '# ------------------------------------------------------------------\n' > <'# Uncomment line below to include temp files during scan.\n'> <'#*.tmp\n'> <'\n'> < '# Uncomment line below to include Windows Thumbnail cache during scan.\n' > <'#Thumbs.db\n'> ] ) ) (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FILEPATH_CUSTOMFILES))} ) ] more_env: [] do_fork: T ) ] spids: [3214 3229] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Write_Settings_File body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple words: [{<rm>} {($ Id.VSub_DollarName FILEPATH_SETTINGS)}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (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_CLEANERS)} ) update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:($ Id.Lit_ArithVarLike i)) body: (command.DoGroup children: [ (command.Simple words: [ {<echo>} {<-e>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name aEnabledCleaners> var_name: aEnabledCleaners bracket_op: (bracket_op.ArrayIndex expr:{($ Id.VSub_DollarName i)}) right: <Id.Right_DollarBrace '}'> ) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName FILEPATH_SETTINGS)} ) ] more_env: [] do_fork: T ) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<Read_Settings_File>}) (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 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (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>})] spids: [3411 3425] ) (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_Cleaners>})] spids: [3431 3445] ) (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_Options_Files>})] spids: [3451 3465] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (C {<Write_Settings_File>}) ] spids: [3366 3380] ) (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 {<Run_Cleaners>})] spids: [3491 3505] ) (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: [ (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_CLEANERS)} ) 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 'aEnabledCleaners['> name: aEnabledCleaners index: {($ Id.VSub_DollarName i)} ) op: assign_op.Equal rhs: {<1>} spids: [3561] ) ] redirects: [] ) ] ) redirects: [] ) (C {<Run_Cleaners>}) ] spids: [3521 3535] ) ] else_action: [] redirects: [] ) (C {<unset>} {<aEnabledCleaners>}) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] redirects: [] right: <Id.Lit_RBrace '}'> )