(command.CommandList children: [ (command.CommandList children: [ (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:IFS) op: Equal rhs: { (word_part.SingleQuotedPart left: <Left_DollarSingleQuote "$'"> tokens: [<Char_Literals ' '> <Char_OneChar '\\t'> <Char_OneChar '\\r'>] ) } ) (assign_pair lhs: (lhs_expr.LhsName name:VERSION) op: Equal rhs: {(5.1.2-bashcached)} ) ] ) terminator: <Op_Semi ';'> ) (C {(export)} {(Lit_VarLike 'LANG=') (C)}) ] ) (C {(trap)} {(SQ <'exit 0'>)} {(INT)} {(TERM)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.WordTest w:{(DQ ($ VSub_DollarName '$SOCAT_VERSION'))}) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:send) op: Equal rhs: { (DQ (word_part.CommandSubPart command_list: (command.CommandList children:[(C {(mktemp)} {(-u)})]) left_token: <Left_CommandSub '$('> ) ) } ) ] ) terminator: <Op_Semi ';'> ) (C {(mkfifo)} {(-m)} {(600)} {(DQ ($ VSub_DollarName '$send'))}) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:recv) op: Equal rhs: { (DQ (word_part.CommandSubPart command_list: (command.CommandList children:[(C {(mktemp)} {(-u)})]) left_token: <Left_CommandSub '$('> ) ) } ) ] ) terminator: <Op_Semi ';'> ) (command.Sentence child: (C {(mkfifo)} {(-m)} {(600)} {(DQ ($ VSub_DollarName '$recv'))}) terminator: <Op_Semi ';'> ) (command.Sentence child: (command.WhileUntil keyword: <KW_While while> cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolUnary op_id: BoolUnary_p child: {(DQ ($ VSub_DollarName '$recv'))} ) ) terminator: <Op_Semi ';'> ) ] body: (command.DoGroup children: [ (command.Sentence child: (command.SimpleCommand words: [{(cat)} {(DQ ($ VSub_DollarName '$recv'))}] redirects: [ (redir.Redir op: <Redir_Great '2>'> fd: 2 arg_word: {(/dev/null)} ) ] ) terminator: <Op_Semi ';'> ) ] ) ) terminator: <Op_Amp '&'> ) (command.Sentence child: (C {(trap)} {(SQ <'rm -f "$recv" "$send"'>)} {(EXIT)}) terminator: <Op_Semi ';'> ) (command.WhileUntil keyword: <KW_While while> cond: [(command.Sentence child:(C {(read)} {(-ra)} {(cmd)}) terminator:<Op_Semi ';'>)] body: (command.DoGroup children: [ (command.Sentence child: (command.Case to_match: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 0)}) ) ) } arms: [ (case_arm pat_list: [{(set)} {(add)} {(replace)} {(append)} {(prepend)} {(cas)}] action: [ (command.Sentence child: (command.WhileUntil keyword: <KW_While while> cond: [ (command.Sentence child: (C {(true)}) terminator: <Op_Semi ';'> ) ] body: (command.DoGroup children: [ (command.AndOr ops: [Op_DAmp] children: [ (command.SimpleCommand words: [ {(printf)} {(SQ <'recv=%q send=%q cmd=%q\\n'>)} {(DQ ($ VSub_DollarName '$recv'))} {(DQ ($ VSub_DollarName '$send'))} { (DQ (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.WholeArray op_id: Arith_Star ) ) ) } ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$BASHCACHED_PIPE'))} ) (redir.Redir op: <Redir_Great '2>'> fd: 2 arg_word: {(/dev/null)} ) ] ) (command.ControlFlow token: <ControlFlow_Break break> ) ] ) ] ) ) terminator: <Op_Semi ';'> ) (command.SimpleCommand words: [ {(head)} {(-c)} { (DQ (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 4)}) ) suffix_op: (suffix_op.StringUnary op_id: VTest_Hyphen arg_word: {(0)} ) ) ) } ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$send'))} ) ] ) ] ) (case_arm pat_list: [{(quit)}] action: [(command.ControlFlow token:<ControlFlow_Exit exit>)] ) (case_arm pat_list:[{(SQ )}]) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (command.WhileUntil keyword: <KW_While while> cond: [ (command.Sentence child: (C {(true)}) terminator: <Op_Semi ';'> ) ] body: (command.DoGroup children: [ (command.Sentence child: (command.AndOr ops: [Op_DAmp] children: [ (command.SimpleCommand words: [ {(printf)} {(SQ <'recv=%q send=%q cmd=%q\\n'>)} {(DQ ($ VSub_DollarName '$recv'))} {(DQ ($ VSub_DollarName '$send'))} { (DQ (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.WholeArray op_id: Arith_Star ) ) ) } ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$BASHCACHED_PIPE'))} ) (redir.Redir op: <Redir_Great '2>'> fd: 2 arg_word: {(/dev/null)} ) ] ) (command.ControlFlow token: <ControlFlow_Break break> ) ] ) terminator: <Op_Semi ';'> ) ] ) ) ] ) ] ) terminator: <Op_Semi ';'> ) ] ) ) ] ) ] else_action: [ (command.Sentence child: (command.FuncDef name: help body: (command.BraceGroup children: [ (command.Sentence child: (command.Pipeline children: [ (command.SimpleCommand words: [{(tail)} {(-n) (Lit_Other '+') (2)}] redirects: [ (redir.Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {(DQ ($ VSub_Number '$0'))} ) ] ) (C {(head)} {(-n11)}) (C {(cut)} {(-c3-)}) ] negated: F ) terminator: <Op_Semi ';'> ) (command.Sentence child: (command.ControlFlow token:<ControlFlow_Exit exit>) terminator: <Op_Semi ';'> ) ] ) ) terminator: <Op_Semi ';'> ) (command.FuncDef name: version body: (command.BraceGroup children: [ (command.Sentence child: (C {(echo)} {($ VSub_DollarName '$VERSION')}) terminator: <Op_Semi ';'> ) (command.Sentence child: (command.ControlFlow token:<ControlFlow_Exit exit>) terminator: <Op_Semi ';'> ) ] ) ) (command.FuncDef name: license body: (command.BraceGroup children: [ (command.Sentence child: (C {(curl)} { (SQ < 'https://raw.githubusercontent.com/MakeNowJust/bashcached/master/LICENSE.MIT.md' > ) } ) terminator: <Op_Semi ';'> ) (command.Sentence child:(C {(echo)}) terminator:<Op_Semi ';'>) (command.Sentence child: (C {(curl)} { (SQ < 'https://raw.githubusercontent.com/MakeNowJust/bashcached/master/LICENSE.%F0%9F%8D%A3.md' > ) } ) terminator: <Op_Semi ';'> ) (command.Sentence child: (command.ControlFlow token:<ControlFlow_Exit exit>) terminator: <Op_Semi ';'> ) ] ) ) (command.ForEach iter_name: v iter_words: [{(DQ ($ VSub_At '$@'))}] do_arg_iter: F body: (command.DoGroup children: [ (command.Sentence child: (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_DollarName '$v')} right: {(--) (Lit_Other '*')} ) ) (C {(eval)} { (DQ (word_part.BracedVarSub token: <VSub_Name v> suffix_op: (suffix_op.Slice begin: (arith_expr.ArithWord w:{(Lit_Digits 2)}) ) ) ) } ) ] ) terminator: <Op_Semi ';'> ) ] ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs:(lhs_expr.LhsName name:unique) op:Equal rhs:{(1)}) (assign_pair lhs: (lhs_expr.LhsName name:before) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(printf)} {(SQ <'%(%s)T'>)} {(-1)})] ) left_token: <Left_CommandSub '$('> ) } ) ] ) (command.Assignment keyword: Assign_Declare flags: [-A] pairs: [ (assign_pair lhs:(lhs_expr.LhsName name:flags) op:Equal rhs:{(word_part.ArrayLiteralPart)}) (assign_pair lhs:(lhs_expr.LhsName name:exptime) op:Equal rhs:{(word_part.ArrayLiteralPart)}) (assign_pair lhs:(lhs_expr.LhsName name:casUnique) op:Equal rhs:{(word_part.ArrayLiteralPart)}) (assign_pair lhs:(lhs_expr.LhsName name:data) op:Equal rhs:{(word_part.ArrayLiteralPart)}) ] ) (command.FuncDef name: cache_has body: (command.BraceGroup children: [ (command.Sentence child: (command.AndOr ops: [Op_DAmp] children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:t) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Name exptime> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_Number '$1')}) ) ) } ) ] ) (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.WordTest w:{($ VSub_DollarName '$t')}) right: (bool_expr.LogicalOr left: (bool_expr.BoolBinary op_id: BoolBinary_eq left: {($ VSub_DollarName '$t')} right: {(0)} ) right: (bool_expr.BoolBinary op_id: BoolBinary_gt left: {($ VSub_DollarName '$t')} right: {($ VSub_DollarName '$time')} ) ) ) ) ] ) terminator: <Op_Semi ';'> ) ] ) ) (command.FuncDef name: cache_update body: (command.BraceGroup children: [ (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsIndexedName name: data index: (arith_expr.ArithWord w:{($ VSub_Number '$1')}) ) op: Equal rhs: {($ VSub_Number '$2')} ) ] ) terminator: <Op_Semi ';'> ) (command.Sentence child: (command.AndOr ops: [Op_DAmp Op_DPipe] children: [ (command.DBracket expr: (bool_expr.WordTest w:{($ VSub_Number '$3')}) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsIndexedName name: casUnique index: (arith_expr.ArithWord w:{($ VSub_Number '$1')}) ) op: Equal rhs: {(DQ ($ VSub_Number '$3'))} ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsIndexedName name: casUnique index: (arith_expr.ArithWord w:{($ VSub_Number '$1')}) ) op: Equal rhs: { (word_part.ArithSubPart anode: (arith_expr.UnaryAssign op_id: Node_PostDPlus child: (lhs_expr.LhsName name:unique) ) ) } ) ] ) ] ) terminator: <Op_Semi ';'> ) ] ) ) (command.FuncDef name: cache_set body: (command.BraceGroup children: [ (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsIndexedName name: flags index: (arith_expr.ArithWord w:{($ VSub_Number '$1')}) ) op: Equal rhs: {($ VSub_Number '$2')} ) (assign_pair lhs: (lhs_expr.LhsIndexedName name: exptime index: (arith_expr.ArithWord w:{($ VSub_Number '$1')}) ) op: Equal rhs: { (word_part.ArithSubPart anode: (arith_expr.TernaryOp cond: (arith_expr.ArithBinary op_id: Arith_DAmp left: (arith_expr.ArithBinary op_id: Arith_Less left: (arith_expr.ArithWord w:{(Lit_Digits 0)}) right: (arith_expr.ArithWord w:{($ VSub_Number '$3')}) ) right: (arith_expr.ArithBinary op_id: Arith_LessEqual left: (arith_expr.ArithWord w:{($ VSub_Number '$3')}) right: (arith_expr.ArithWord w:{(Lit_Digits 2592000)}) ) ) true_expr: (arith_expr.ArithBinary op_id: Arith_Plus left: (arith_expr.ArithWord w:{($ VSub_Number '$3')}) right: (arith_expr.ArithVarRef token:<Lit_ArithVarLike time>) ) false_expr: (arith_expr.ArithWord w:{($ VSub_Number '$3')}) ) ) } ) ] ) terminator: <Op_Semi ';'> ) (command.Sentence child: (C {(cache_update)} {(DQ ($ VSub_Number '$1'))} {(DQ ($ VSub_Number '$4'))} {(DQ ($ VSub_Number '$5'))} ) terminator: <Op_Semi ';'> ) ] ) ) (command.FuncDef name: cache_get body: (command.BraceGroup children: [ (command.Sentence child: (command.AndOr ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(cache_has)} {(DQ ($ VSub_Number '$1'))}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:d) op: Equal rhs: { (DQ (word_part.BracedVarSub token: <VSub_Name data> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_Number '$1')}) ) ) ) } ) ] ) (C {(printf)} { (word_part.SingleQuotedPart left: <Left_DollarSingleQuote "$'"> tokens: [ <Char_Literals 'VALUE %s %s %s%s'> <Char_OneChar '\\r'> <Char_OneChar '\\n'> ] ) } {(DQ ($ VSub_Number '$1'))} { (DQ (word_part.BracedVarSub token: <VSub_Name flags> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_Number '$1')}) ) ) ) } { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {(-n)} {(DQ ($ VSub_DollarName '$d'))}) (C {(base64)} {(-d)}) (C {(wc)} {(-c)}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> ) ) } { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.WordTest w:{($ VSub_Number '$2')}) ) (C {(echo)} { (DQ (' ') (word_part.BracedVarSub token: <VSub_Name casUnique> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {($ VSub_Number '$1')} ) ) ) ) } ) ] ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) (command.Pipeline children: [ (C {(echo)} {(-n)} {(DQ ($ VSub_DollarName '$d'))}) (C {(base64)} {(-d)}) ] negated: F ) (C {(echo)} {(-e)} {(SQ <'\\r'>)}) ] ) terminator: <Op_Semi ';'> ) ] ) ) (command.FuncDef name: cache_delete body: (command.BraceGroup children: [ (command.Sentence child: (C {(unset)} {(DQ ('flags[') ($ VSub_Number '$1') (']'))} {(DQ ('exptime[') ($ VSub_Number '$1') (']'))} {(DQ ('casUnique[') ($ VSub_Number '$1') (']'))} {(DQ ('data[') ($ VSub_Number '$1') (']'))} ) terminator: <Op_Semi ';'> ) ] ) ) (command.FuncDef name: read_data body: (command.BraceGroup children: [ (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:d) op: Equal rhs: { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(head)} {(-c)} {(DQ ($ VSub_Number '$1'))} {(DQ ($ VSub_DollarName '$send'))} ) (C {(base64)}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) terminator: <Op_Semi ';'> ) ] ) ) (command.FuncDef name: base64_cat body: (command.BraceGroup children: [ (command.Sentence child: (command.Pipeline children: [ (C {(cat)} { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {(-n)} {(DQ ($ VSub_Number '$1'))}) (C {(base64)} {(-d)}) ] negated: F ) ] ) left_token: <Left_ProcSubIn '<('> ) } { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {(-n)} {(DQ ($ VSub_Number '$2'))}) (C {(base64)} {(-d)}) ] negated: F ) ] ) left_token: <Left_ProcSubIn '<('> ) } ) (C {(base64)}) ] negated: F ) terminator: <Op_Semi ';'> ) ] ) ) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:BASHCACHED_PIPE) op: Equal rhs: { (DQ (word_part.CommandSubPart command_list: (command.CommandList children:[(C {(mktemp)} {(-u)})]) left_token: <Left_CommandSub '$('> ) ) } ) ] ) terminator: <Op_Semi ';'> ) (command.Sentence child:(C {(export)} {(BASHCACHED_PIPE)}) terminator:<Op_Semi ';'>) (C {(mkfifo)} {(-m)} {(600)} {(DQ ($ VSub_DollarName '$BASHCACHED_PIPE'))}) (C {(trap)} {(SQ <'rm -f "$BASHCACHED_PIPE"'>)} {(EXIT)}) (command.Sentence child: (command.AndOr ops: [Op_DAmp] children: [ (command.DParen child: (arith_expr.ArithBinary op_id: Arith_NEqual left: (arith_expr.ArithWord w: { (word_part.BracedVarSub token: <VSub_Name check> suffix_op: (suffix_op.StringUnary op_id:VTest_Hyphen arg_word:{(60)}) ) } ) right: (arith_expr.ArithWord w:{(Lit_Digits 0)}) ) ) (command.WhileUntil keyword: <KW_While while> cond: [(command.Sentence child:(C {(echo)}) terminator:<Op_Semi ';'>)] body: (command.DoGroup children: [ (command.Sentence child: (C {(sleep)} { (DQ (word_part.BracedVarSub token: <VSub_Name check> suffix_op: (suffix_op.StringUnary op_id: VTest_Hyphen arg_word: {(60)} ) ) ) } ) terminator: <Op_Semi ';'> ) ] ) redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$BASHCACHED_PIPE'))} ) ] ) ] ) terminator: <Op_Amp '&'> ) (command.Sentence child: (command.Pipeline children: [ (command.WhileUntil keyword: <KW_While while> cond: [(command.Sentence child:(C {(true)}) terminator:<Op_Semi ';'>)] body: (command.DoGroup children: [ (command.Sentence child: (C {(cat)} {(DQ ($ VSub_DollarName '$BASHCACHED_PIPE'))}) terminator: <Op_Semi ';'> ) ] ) ) (command.WhileUntil keyword: <KW_While while> cond: [ (command.Sentence child: (C {(read)} {(-r)} {(line)}) terminator: <Op_Semi ';'> ) ] body: (command.DoGroup children: [ (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:cmd) op: Equal rhs: {(SQ )} ) (assign_pair lhs: (lhs_expr.LhsName name:recv) op: Equal rhs: {(SQ )} ) (assign_pair lhs: (lhs_expr.LhsName name:send) op: Equal rhs: (word.EmptyWord) ) ] ) terminator: <Op_Semi ';'> ) (command.Sentence child: (C {(eval)} {(DQ ($ VSub_DollarName '$line'))}) terminator: <Op_Semi ';'> ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:cmd) op: Equal rhs: {(word_part.ArrayLiteralPart words:[{($ VSub_DollarName '$cmd')}])} ) (assign_pair lhs: (lhs_expr.LhsName name:time) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(printf)} {(SQ <'%(%s)T'>)} {(-1)})] ) left_token: <Left_CommandSub '$('> ) } ) ] ) (command.AndOr ops: [Op_DAmp Op_DAmp] children: [ (command.DParen child: (arith_expr.ArithBinary op_id: Arith_GreatEqual left: (arith_expr.ArithBinary op_id: Arith_Minus left: (arith_expr.ArithVarRef token:<Lit_ArithVarLike time>) right: (arith_expr.ArithVarRef token:<Lit_ArithVarLike before>) ) right: (arith_expr.ArithWord w: { (word_part.BracedVarSub token: <VSub_Name check> suffix_op: (suffix_op.StringUnary op_id: VTest_Hyphen arg_word: {(60)} ) ) } ) ) ) (command.ForEach iter_name: k iter_words: [ { (DQ (word_part.BracedVarSub token: <VSub_Name exptime> prefix_op: VSub_Bang bracket_op: (bracket_op.WholeArray op_id:Lit_At) ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.Sentence child: (command.AndOr ops: [Op_DAmp] children: [ (command.Pipeline children: [(C {(cache_has)} {($ VSub_DollarName '$k')})] negated: T ) (C {(cache_delete)} {($ VSub_DollarName '$k')}) ] ) terminator: <Op_Semi ';'> ) ] ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:before) op: Equal rhs: {($ VSub_DollarName '$time')} ) ] ) ] ) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.BoolUnary op_id: BoolUnary_p child: {($ VSub_DollarName '$recv')} ) ) ) (command.ControlFlow token: <ControlFlow_Continue continue> ) ] ) (command.Sentence child: (command.Case to_match: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 0)}) ) ) } arms: [ (case_arm pat_list: [{(set)}] action: [ (command.Sentence child: (command.AndOr ops: [Op_DPipe] children: [ (C {(read_data)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 4)}) ) ) } ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) terminator: <Op_Semi ';'> ) (C {(cache_set)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) } { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 2)}) ) ) } { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 3)}) ) ) } {(DQ ($ VSub_DollarName '$d'))} ) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobNEqual left: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 5)}) ) ) } right: {(noreply)} ) ) (command.SimpleCommand words: [{(echo)} {(-e)} {(DQ (STORED) (Lit_Other '\\') (r))}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$recv'))} ) ] ) ] ) ] ) (case_arm pat_list: [{(add)}] action: [ (command.Sentence child: (command.AndOr ops: [Op_DPipe] children: [ (C {(read_data)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 4)}) ) ) } ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) terminator: <Op_Semi ';'> ) (command.AndOr ops: [Op_DAmp Op_DAmp Op_DPipe] children: [ (command.Pipeline children: [ (C {(cache_has)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) } ) ] negated: T ) (C {(cache_set)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) } { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 2)}) ) ) } { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 3)}) ) ) } {(DQ ($ VSub_DollarName '$d'))} ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:result) op: Equal rhs: {(STORED)} ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:result) op: Equal rhs: {(NOT_STORED)} ) ] ) ] ) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobNEqual left: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 5)}) ) ) } right: {(noreply)} ) ) (command.SimpleCommand words: [ {(echo)} {(-e)} {(DQ ($ VSub_DollarName '$result') (Lit_Other '\\') (r))} ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$recv'))} ) ] ) ] ) ] ) (case_arm pat_list: [{(replace)}] action: [ (command.Sentence child: (command.AndOr ops: [Op_DPipe] children: [ (C {(read_data)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 4)}) ) ) } ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) terminator: <Op_Semi ';'> ) (command.AndOr ops: [Op_DAmp Op_DAmp Op_DPipe] children: [ (C {(cache_has)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) } ) (C {(cache_set)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) } { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 2)}) ) ) } { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 3)}) ) ) } {(DQ ($ VSub_DollarName '$d'))} ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:result) op: Equal rhs: {(STORED)} ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:result) op: Equal rhs: {(NOT_STORED)} ) ] ) ] ) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobNEqual left: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 5)}) ) ) } right: {(noreply)} ) ) (command.SimpleCommand words: [ {(echo)} {(-e)} {(DQ ($ VSub_DollarName '$result') (Lit_Other '\\') (r))} ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$recv'))} ) ] ) ] ) ] ) (case_arm pat_list: [{(append)}] action: [ (command.Sentence child: (command.AndOr ops: [Op_DPipe] children: [ (C {(read_data)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 4)}) ) ) } ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) terminator: <Op_Semi ';'> ) (command.AndOr ops: [Op_DAmp Op_DAmp Op_DPipe] children: [ (C {(cache_has)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) } ) (C {(cache_update)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) } { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(base64_cat)} { (DQ (word_part.BracedVarSub token: <VSub_Name data> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { (Lit_Digits 1 ) } ) ) ) } ) ) ) ) } {(DQ ($ VSub_DollarName '$d'))} ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:result) op: Equal rhs: {(STORED)} ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:result) op: Equal rhs: {(NOT_STORED)} ) ] ) ] ) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobNEqual left: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 5)}) ) ) } right: {(noreply)} ) ) (command.SimpleCommand words: [ {(echo)} {(-e)} {(DQ ($ VSub_DollarName '$result') (Lit_Other '\\') (r))} ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$recv'))} ) ] ) ] ) ] ) (case_arm pat_list: [{(prepend)}] action: [ (command.Sentence child: (command.AndOr ops: [Op_DPipe] children: [ (C {(read_data)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 4)}) ) ) } ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) terminator: <Op_Semi ';'> ) (command.AndOr ops: [Op_DAmp Op_DAmp Op_DPipe] children: [ (C {(cache_has)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) } ) (C {(cache_update)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) } { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(base64_cat)} {(DQ ($ VSub_DollarName '$d'))} { (DQ (word_part.BracedVarSub token: <VSub_Name data> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { (Lit_Digits 1 ) } ) ) ) } ) ) ) ) } ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:result) op: Equal rhs: {(STORED)} ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:result) op: Equal rhs: {(NOT_STORED)} ) ] ) ] ) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobNEqual left: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 5)}) ) ) } right: {(noreply)} ) ) (command.SimpleCommand words: [ {(echo)} {(-e)} {(DQ ($ VSub_DollarName '$result') (Lit_Other '\\') (r))} ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$recv'))} ) ] ) ] ) ] ) (case_arm pat_list: [{(cas)}] action: [ (command.Sentence child: (command.AndOr ops: [Op_DPipe] children: [ (C {(read_data)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 4)}) ) ) } ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) terminator: <Op_Semi ';'> ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (C {(cache_has)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {(Lit_Digits 1)} ) ) ) } ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:result) op: Equal rhs: {(NOT_FOUND)} ) ] ) ] ) ] else_action: [ (command.Sentence child: (command.AndOr ops: [Op_DAmp Op_DAmp Op_DPipe] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_eq left: { (word_part.BracedVarSub token: <VSub_Name casUnique> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {(Lit_Digits 1)} ) ) ) } ) ) ) } right: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {(Lit_Digits 5)} ) ) ) } ) ) (C {(cache_set)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {(Lit_Digits 1)} ) ) ) } { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {(Lit_Digits 2)} ) ) ) } { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {(Lit_Digits 3)} ) ) ) } {(DQ ($ VSub_DollarName '$d'))} ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:result) op: Equal rhs: {(STORED)} ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:result) op: Equal rhs: {(EXISTS)} ) ] ) ] ) terminator: <Op_Semi ';'> ) ] ) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobNEqual left: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 6)}) ) ) } right: {(noreply)} ) ) (command.SimpleCommand words: [ {(echo)} {(-e)} {(DQ ($ VSub_DollarName '$result') (Lit_Other '\\') (r))} ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$recv'))} ) ] ) ] ) ] ) (case_arm pat_list: [{(get)}] action: [ (command.Subshell command_list: (command.CommandList children: [ (command.ForExpr init: (arith_expr.BinaryAssign op_id: Arith_Equal left: (lhs_expr.LhsName name:i) right: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) cond: (arith_expr.ArithBinary op_id: Arith_Less left: (arith_expr.ArithVarRef token: <Lit_ArithVarLike i> ) right: (arith_expr.ArithWord w: { (word_part.BracedVarSub token: <VSub_Name cmd> prefix_op: VSub_Pound bracket_op: (bracket_op.WholeArray op_id: Lit_At ) ) } ) ) update: (arith_expr.UnaryAssign op_id: Node_PostDPlus child: (lhs_expr.LhsName name:i) ) body: (command.DoGroup children: [ (command.Sentence child: (C {(cache_get)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {($ VSub_DollarName '$i')} ) ) ) } ) terminator: <Op_Semi ';'> ) ] ) ) (C {(echo)} {(-e)} {(SQ <'END\\r'>)}) ] ) redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$recv'))} ) ] ) ] ) (case_arm pat_list: [{(gets)}] action: [ (command.Subshell command_list: (command.CommandList children: [ (command.ForExpr init: (arith_expr.BinaryAssign op_id: Arith_Equal left: (lhs_expr.LhsName name:i) right: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) cond: (arith_expr.ArithBinary op_id: Arith_Less left: (arith_expr.ArithVarRef token: <Lit_ArithVarLike i> ) right: (arith_expr.ArithWord w: { (word_part.BracedVarSub token: <VSub_Name cmd> prefix_op: VSub_Pound bracket_op: (bracket_op.WholeArray op_id: Lit_At ) ) } ) ) update: (arith_expr.UnaryAssign op_id: Node_PostDPlus child: (lhs_expr.LhsName name:i) ) body: (command.DoGroup children: [ (command.Sentence child: (C {(cache_get)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {($ VSub_DollarName '$i')} ) ) ) } {(1)} ) terminator: <Op_Semi ';'> ) ] ) ) (C {(echo)} {(-e)} {(SQ <'END\\r'>)}) ] ) redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$recv'))} ) ] ) ] ) (case_arm pat_list: [{(delete)}] action: [ (command.AndOr ops: [Op_DAmp Op_DAmp Op_DPipe] children: [ (C {(cache_has)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) } ) (C {(cache_delete)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) } ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:result) op: Equal rhs: {(DELETED)} ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:result) op: Equal rhs: {(NOT_FOUND)} ) ] ) ] ) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobNEqual left: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 2)}) ) ) } right: {(noreply)} ) ) (command.SimpleCommand words: [ {(echo)} {(-e)} {(DQ ($ VSub_DollarName '$result') (Lit_Other '\\') (r))} ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$recv'))} ) ] ) ] ) ] ) (case_arm pat_list: [{(incr)}] action: [ (command.AndOr ops: [Op_DAmp Op_DAmp Op_DPipe] children: [ (C {(cache_has)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) } ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:result) op: Equal rhs: { (word_part.ArithSubPart anode: (arith_expr.ArithBinary op_id: Arith_Plus left: (arith_expr.ArithWord w: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {(-n)} { (DQ (word_part.BracedVarSub token: <VSub_Name data > bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { (word_part.BracedVarSub token: < VSub_Name cmd > bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { ( Lit_Digits 1 ) } ) ) ) } ) ) ) ) } ) (C {(base64)} {(-d)}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> ) } ) right: (arith_expr.ArithWord w: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {(Lit_Digits 2)} ) ) suffix_op: (suffix_op.StringUnary op_id: VTest_Hyphen arg_word: {(0)} ) ) } ) ) ) } ) ] ) (C {(cache_update)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) } { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {(-n)} {($ VSub_DollarName '$result')} ) (C {(base64)}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:result) op: Equal rhs: {(NOT_FOUND)} ) ] ) ] ) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobNEqual left: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 3)}) ) ) } right: {(noreply)} ) ) (command.SimpleCommand words: [ {(echo)} {(-e)} {(DQ ($ VSub_DollarName '$result') (Lit_Other '\\') (r))} ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$recv'))} ) ] ) ] ) ] ) (case_arm pat_list: [{(decr)}] action: [ (command.AndOr ops: [Op_DAmp Op_DAmp Op_DPipe] children: [ (C {(cache_has)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) } ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:result) op: Equal rhs: { (word_part.ArithSubPart anode: (arith_expr.ArithBinary op_id: Arith_Minus left: (arith_expr.ArithWord w: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {(-n)} { (DQ (word_part.BracedVarSub token: <VSub_Name data > bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { (word_part.BracedVarSub token: < VSub_Name cmd > bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { ( Lit_Digits 1 ) } ) ) ) } ) ) ) ) } ) (C {(base64)} {(-d)}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> ) } ) right: (arith_expr.ArithWord w: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {(Lit_Digits 2)} ) ) suffix_op: (suffix_op.StringUnary op_id: VTest_Hyphen arg_word: {(0)} ) ) } ) ) ) } ) ] ) (C {(cache_update)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) } { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {(-n)} {($ VSub_DollarName '$result')} ) (C {(base64)}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:result) op: Equal rhs: {(NOT_FOUND)} ) ] ) ] ) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobNEqual left: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 3)}) ) ) } right: {(noreply)} ) ) (command.SimpleCommand words: [ {(echo)} {(-e)} {(DQ ($ VSub_DollarName '$result') (Lit_Other '\\') (r))} ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$recv'))} ) ] ) ] ) ] ) (case_arm pat_list: [{(touch)}] action: [ (command.AndOr ops: [Op_DAmp Op_DAmp Op_DPipe] children: [ (C {(cache_has)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) } ) (C {(cache_set)} { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) } { (DQ (word_part.BracedVarSub token: <VSub_Name flags> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {(Lit_Digits 1)} ) ) ) } ) ) ) ) } { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 2)}) ) ) } { (DQ (word_part.BracedVarSub token: <VSub_Name data> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {(Lit_Digits 1)} ) ) ) } ) ) ) ) } { (word_part.BracedVarSub token: <VSub_Name casUnique> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {(Lit_Digits 1)} ) ) ) } ) ) ) } ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:result) op: Equal rhs: {(TOUCHED)} ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:result) op: Equal rhs: {(NOT_FOUND)} ) ] ) ] ) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobNEqual left: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 3)}) ) ) } right: {(noreply)} ) ) (command.SimpleCommand words: [ {(echo)} {(-e)} {(DQ ($ VSub_DollarName '$result') (Lit_Other '\\') (r))} ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$recv'))} ) ] ) ] ) ] ) (case_arm pat_list: [{(flush_all)}] action: [ (command.ForEach iter_name: k iter_words: [ { (DQ (word_part.BracedVarSub token: <VSub_Name exptime> prefix_op: VSub_Bang bracket_op: (bracket_op.WholeArray op_id:Lit_At) ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsIndexedName name: exptime index: (arith_expr.ArithWord w: {($ VSub_DollarName '$k')} ) ) op: Equal rhs: { (word_part.ArithSubPart anode: (arith_expr.ArithBinary op_id: Arith_Plus left: (arith_expr.ArithVarRef token: <Lit_ArithVarLike time> ) right: (arith_expr.ArithWord w: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {(Lit_Digits 1)} ) ) suffix_op: (suffix_op.StringUnary op_id: VTest_Hyphen arg_word: {(0)} ) ) } ) ) ) } ) ] ) terminator: <Op_Semi ';'> ) ] ) ) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobNEqual left: { (word_part.BracedVarSub token: <VSub_Name cmd> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithUnary op_id: Node_UnaryMinus child: (arith_expr.ArithWord w: {(Lit_Digits 1)} ) ) ) ) } right: {(noreply)} ) ) (command.SimpleCommand words: [{(echo)} {(-e)} {(DQ (OK) (Lit_Other '\\') (r))}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$recv'))} ) ] ) ] ) ] ) (case_arm pat_list: [{(version)}] action: [ (command.Sentence child: (command.SimpleCommand words: [ {(echo)} {(-e)} { (DQ ('VERSION ') ($ VSub_DollarName '$VERSION') (Lit_Other '\\') (r) ) } ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$recv'))} ) ] ) terminator: <Op_Amp '&'> ) ] ) ] ) terminator: <Op_Semi ';'> ) ] ) ) ] negated: F ) terminator: <Op_Amp '&'> ) (C {(socat)} { (DQ (word_part.BracedVarSub token: <VSub_Name protocol> suffix_op: (suffix_op.StringUnary op_id:VTest_Hyphen arg_word:{(tcp)}) ) ('-listen:') (word_part.BracedVarSub token: <VSub_Name port> suffix_op: (suffix_op.StringUnary op_id:VTest_Hyphen arg_word:{(25252)}) ) (',reuseaddr,fork') ) } {(system) (Lit_Other ':') (DQ ($ VSub_Number '$0'))} ) ] ) ] )