(command.CommandList children: [ (command.ShFunction name: smallyes body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'YES='> name:YES) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Unary op:<Id.VTest_Hyphen _> arg_word:{<y>}) right: <Id.Right_DollarBrace '}'> ) ) } spids: [11] ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple words: [{<echo>} {(DQ ($ Id.VSub_DollarName YES))}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.Sentence child: (C {<Id.Lit_Colon ':'>}) terminator: <Id.Op_Semi _> ) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: in_path body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'OLD_IFS='> (DQ ($ Id.VSub_DollarName IFS))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {(DQ <':'>)} spids: [61] ) ] redirects: [] ) (command.ForEach iter_names: [dir] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName PATH)}]) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-x>} {(DQ ($ Id.VSub_DollarName dir) <'/'> ($ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName OLD_IFS))} spids: [97] ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [79 94] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName OLD_IFS))} spids: [114] ) ] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: error body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'err='> (DQ ($ Id.VSub_Number 1))}) (C {<local>} {<Id.Lit_VarLike 'name='> (DQ ($ Id.VSub_Number 2))}) (C {<local>} {<Id.Lit_VarLike 'fmt='> (DQ ($ Id.VSub_Number 3))}) (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>) (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>) (C {<shift>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName USE_DEBIANINSTALLER_INTERACTION))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Subshell child: (command.CommandList children: [ (C {<echo>} {(DQ <'E: '> ($ Id.VSub_DollarName name))}) (command.ForEach iter_names: [x] iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '@'))}]) body: (command.DoGroup children: [ (command.Sentence child: (C {<echo>} {(DQ <'EA: '> ($ Id.VSub_DollarName x))}) terminator: <Id.Op_Semi _> ) ] ) redirects: [] ) (C {<echo>} {(DQ <'EF: '> ($ Id.VSub_DollarName fmt))}) ] ) redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<4>})] ) ] spids: [176 187] ) ] else_action: [ (command.Subshell child: (C {<printf>} {(DQ <'E: '> ($ Id.VSub_DollarName fmt) <Id.Lit_BadBackslash '\\'> <n>)} {(DQ ($ Id.VSub_At '@'))} ) redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<4>})] ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_DollarName err)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: warning body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'name='> (DQ ($ Id.VSub_Number 1))}) (C {<local>} {<Id.Lit_VarLike 'fmt='> (DQ ($ Id.VSub_Number 2))}) (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>) (C {<shift>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName USE_DEBIANINSTALLER_INTERACTION))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Subshell child: (command.CommandList children: [ (C {<echo>} {(DQ <'W: '> ($ Id.VSub_DollarName name))}) (command.ForEach iter_names: [x] iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '@'))}]) body: (command.DoGroup children: [ (command.Sentence child: (C {<echo>} {(DQ <'WA: '> ($ Id.VSub_DollarName x))}) terminator: <Id.Op_Semi _> ) ] ) redirects: [] ) (C {<echo>} {(DQ <'WF: '> ($ Id.VSub_DollarName fmt))}) ] ) redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<4>})] ) ] spids: [301 312] ) ] else_action: [ (command.Simple words: [ {<printf>} {(DQ <'W: '> ($ Id.VSub_DollarName fmt) <Id.Lit_BadBackslash '\\'> <n>)} {(DQ ($ Id.VSub_At '@'))} ] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<4>})] more_env: [] do_fork: T ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: info body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'name='> (DQ ($ Id.VSub_Number 1))}) (C {<local>} {<Id.Lit_VarLike 'fmt='> (DQ ($ Id.VSub_Number 2))}) (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>) (C {<shift>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName USE_DEBIANINSTALLER_INTERACTION))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Subshell child: (command.CommandList children: [ (C {<echo>} {(DQ <'I: '> ($ Id.VSub_DollarName name))}) (command.ForEach iter_names: [x] iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '@'))}]) body: (command.DoGroup children: [ (command.Sentence child: (C {<echo>} {(DQ <'IA: '> ($ Id.VSub_DollarName x))}) terminator: <Id.Op_Semi _> ) ] ) redirects: [] ) (C {<echo>} {(DQ <'IF: '> ($ Id.VSub_DollarName fmt))}) ] ) redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<4>})] ) ] spids: [419 430] ) ] else_action: [ (command.Simple words: [ {<printf>} {(DQ <'I: '> ($ Id.VSub_DollarName fmt) <Id.Lit_BadBackslash '\\'> <n>)} {(DQ ($ Id.VSub_At '@'))} ] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<4>})] more_env: [] do_fork: T ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROGRESS_NOW='> name:PROGRESS_NOW) op: assign_op.Equal rhs: {<0>} spids: [503] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROGRESS_END='> name:PROGRESS_END) op: assign_op.Equal rhs: {<0>} spids: [506] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROGRESS_NEXT='> name:PROGRESS_NEXT) op: assign_op.Equal rhs: {(DQ )} spids: [509] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROGRESS_WHAT='> name:PROGRESS_WHAT) op: assign_op.Equal rhs: {(DQ )} spids: [513] ) ] redirects: [] ) (command.ShFunction name: progress_next body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PROGRESS_NEXT='> name:PROGRESS_NEXT) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} spids: [526] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: wgetprogress body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {(DQ ($ Id.VSub_DollarName VERBOSE))} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'QSWITCH='> name:QSWITCH) op: assign_op.Equal rhs: {(DQ <-q>)} spids: [554] ) ] redirects: [] ) ] ) (C {<local>} {<Id.Lit_VarLike 'ret='> <0>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName USE_DEBIANINSTALLER_INTERACTION))} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName PROGRESS_NEXT))} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Pipeline children: [ (command.Simple words: [{<wget>} {(DQ ($ Id.VSub_At '@'))}] redirects: [ (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (command.Simple words: [ {($ Id.VSub_DollarName PKGDETAILS)} {(DQ <'WGET%'>)} {($ Id.VSub_DollarName PROGRESS_NOW)} {($ Id.VSub_DollarName PROGRESS_NEXT)} {($ Id.VSub_DollarName PROGRESS_END)} ] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<3>} ) ] more_env: [] do_fork: T ) ] negated: F stderr_indices: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [620] ) ] redirects: [] ) ] spids: [566 587] ) ] else_action: [ (C {<wget>} {($ Id.VSub_DollarName QSWITCH)} {(DQ ($ Id.VSub_At '@'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [637] ) ] redirects: [] ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName ret)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: progress body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'now='> (DQ ($ Id.VSub_Number 1))}) (C {<local>} {<Id.Lit_VarLike 'end='> (DQ ($ Id.VSub_Number 2))}) (C {<local>} {<Id.Lit_VarLike 'name='> (DQ ($ Id.VSub_Number 3))}) (C {<local>} {<Id.Lit_VarLike 'fmt='> (DQ ($ Id.VSub_Number 4))}) (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>) (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>) (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>) (C {<shift>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName USE_DEBIANINSTALLER_INTERACTION))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PROGRESS_NOW='> name: PROGRESS_NOW ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName now))} spids: [721] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PROGRESS_END='> name: PROGRESS_END ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName end))} spids: [727] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'PROGRESS_NEXT='> name: PROGRESS_NEXT ) op: assign_op.Equal rhs: {(DQ )} spids: [733] ) ] redirects: [] ) (command.Subshell child: (command.CommandList children: [ (C {<echo>} { (DQ <'P: '> ($ Id.VSub_DollarName now) <' '> ($ Id.VSub_DollarName end) <' '> ($ Id.VSub_DollarName name) ) } ) (command.ForEach iter_names: [x] iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '@'))}]) body: (command.DoGroup children: [ (command.Sentence child: (C {<echo>} {(DQ <'PA: '> ($ Id.VSub_DollarName x))}) terminator: <Id.Op_Semi _> ) ] ) redirects: [] ) (C {<echo>} {(DQ <'PF: '> ($ Id.VSub_DollarName fmt))}) ] ) redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<3>})] ) ] spids: [707 718] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: dpkg_progress body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'now='> (DQ ($ Id.VSub_Number 1))}) (C {<local>} {<Id.Lit_VarLike 'end='> (DQ ($ Id.VSub_Number 2))}) (C {<local>} {<Id.Lit_VarLike 'name='> (DQ ($ Id.VSub_Number 3))}) (C {<local>} {<Id.Lit_VarLike 'desc='> (DQ ($ Id.VSub_Number 4))}) (C {<local>} {<Id.Lit_VarLike 'action='> (DQ ($ Id.VSub_Number 5))}) (C {<local>} {<Id.Lit_VarLike 'expect='>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName action))} {<Id.Lit_Equals '='>} {<UNPACKING>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expect='> name:expect) op: assign_op.Equal rhs: {<half-installed>} spids: [868] ) ] redirects: [] ) ] spids: [850 865] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName action))} {<Id.Lit_Equals '='>} {<CONFIGURING>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expect='> name:expect) op: assign_op.Equal rhs: {<half-configured>} spids: [890] ) ] redirects: [] ) ] spids: [872 887] ) ] else_action: [] redirects: [] ) (command.ShFunction name: dp body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'now='> name:now) op: assign_op.Equal rhs: { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName now)} right: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {<1>} ) right: <Id.Right_DollarBrace '}'> ) } ) ) ) } spids: [906] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exitcode='> name:exitcode) op: assign_op.Equal rhs: {<0>} spids: [927] ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<status>} {<pkg>} {<qstate>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName status))} {<Id.Lit_Equals '='>} {(DQ <EXITCODE>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'exitcode='> name: exitcode ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName pkg))} spids: [965] ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [945 962] ) ] else_action: [] redirects: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName qstate))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName expect))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.Case to_match: {($ Id.VSub_DollarName qstate)} arms: [ (case_arm pat_list: [{<half-installed>}] action: [ (command.Sentence child: (C {<dp>}) terminator: <Id.Op_Semi _> ) (C {<progress>} {(DQ ($ Id.VSub_DollarName now))} {(DQ ($ Id.VSub_DollarName end))} {(DQ ($ Id.VSub_DollarName name))} {(DQ ($ Id.VSub_DollarName desc))} ) (C {<info>} {(DQ ($ Id.VSub_DollarName action))} {(DQ <'Unpacking %s...'>)} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name pkg> var_name: pkg suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<':'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expect='> name:expect) op: assign_op.Equal rhs: {<unpacked>} spids: [1048] ) ] redirects: [] ) ] spids: [1003 1004 1052 -1] ) (case_arm pat_list: [{<unpacked>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expect='> name:expect) op: assign_op.Equal rhs: {<half-installed>} spids: [1059] ) ] redirects: [] ) ] spids: [1055 1056 1063 -1] ) (case_arm pat_list: [{<half-configured>}] action: [ (command.Sentence child: (C {<dp>}) terminator: <Id.Op_Semi _> ) (C {<progress>} {(DQ ($ Id.VSub_DollarName now))} {(DQ ($ Id.VSub_DollarName end))} {(DQ ($ Id.VSub_DollarName name))} {(DQ ($ Id.VSub_DollarName desc))} ) (C {<info>} {(DQ ($ Id.VSub_DollarName action))} {(DQ <'Configuring %s...'>)} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name pkg> var_name: pkg suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<':'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expect='> name:expect) op: assign_op.Equal rhs: {<installed>} spids: [1111] ) ] redirects: [] ) ] spids: [1066 1067 1115 -1] ) (case_arm pat_list: [{<installed>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'expect='> name:expect) op: assign_op.Equal rhs: {<half-configured>} spids: [1122] ) ] redirects: [] ) ] spids: [1118 1119 1126 -1] ) ] redirects: [] ) ] ) redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName exitcode)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: default_mirror body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEF_MIRROR='> name:DEF_MIRROR) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} spids: [1154] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FINDDEBS_NEEDS_INDICES='> name: FINDDEBS_NEEDS_INDICES ) op: assign_op.Equal rhs: {<false>} spids: [1162] ) ] redirects: [] ) (command.ShFunction name: finddebs_style body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case to_match: {(DQ ($ Id.VSub_Number 1))} arms: [ (case_arm pat_list: [{<hardcoded>}] action: [] spids: [1182 1183 1186 -1] ) (case_arm pat_list: [{<from-indices>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FINDDEBS_NEEDS_INDICES='> name: FINDDEBS_NEEDS_INDICES ) op: assign_op.Equal rhs: {<true>} spids: [1193] ) ] redirects: [] ) ] spids: [1189 1190 1197 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<error>} {<1>} {<BADFINDDEBS>} {(DQ <'unknown finddebs style'>)})] spids: [1200 1201 1215 -1] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: mk_download_dirs body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName DLDEST)} {<Id.Lit_Equals '='>} {(DQ <apt_dest>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<mkdir>} {<-p>} { (DQ ($ Id.VSub_DollarName TARGET) <'/'> ($ Id.VSub_DollarName APTSTATE) <'/lists/partial'> ) } ) (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName TARGET) <'/var/cache/apt/archives/partial'>)} ) ] spids: [1231 1246] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: download_style body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case to_match: {(DQ ($ Id.VSub_Number 1))} arms: [ (case_arm pat_list: [{<apt>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 2))} {<Id.Lit_Equals '='>} {(DQ <var-state>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'APTSTATE='> name: APTSTATE ) op: assign_op.Equal rhs: {<'var/state/apt'>} spids: [1317] ) ] redirects: [] ) ] spids: [1297 1314] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'APTSTATE='> name:APTSTATE) op: assign_op.Equal rhs: {<'var/lib/apt'>} spids: [1324] ) ] redirects: [] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DLDEST='> name:DLDEST) op: assign_op.Equal rhs: {<apt_dest>} spids: [1331] ) ] redirects: [] ) (C {<export>} {<APTSTATE>} {<DLDEST>} {<DEBFOR>}) ] spids: [1293 1294 1344 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<error>} {<1>} {<BADDLOAD>} {(DQ <'unknown download style'>)})] spids: [1347 1348 1362 -1] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: keyring body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName KEYRING))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'KEYRING='> name: KEYRING ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} spids: [1410] ) ] redirects: [] ) ] spids: [1394 1407] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName DISABLE_KEYRING))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName DEF_HTTPS_MIRROR))} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName USER_MIRROR))} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName FORCE_KEYRING))} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<info>} {<KEYRING>} { (DQ < 'Keyring file not available at %s; switching to https mirror %s' > ) } {(DQ ($ Id.VSub_Number 1))} {(DQ ($ Id.VSub_DollarName DEF_HTTPS_MIRROR))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'USER_MIRROR='> name: USER_MIRROR ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName DEF_HTTPS_MIRROR))} spids: [1489] ) ] redirects: [] ) ] spids: [1432 1469] ) ] else_action: [ (C {<warning>} {<KEYRING>} { (DQ < 'Cannot check Release signature; keyring file not available %s' > ) } {(DQ ($ Id.VSub_Number 1))} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName FORCE_KEYRING))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<error>} {<1>} {<KEYRING>} { (DQ < 'Keyring-based check was requested; aborting accordingly' > ) } ) ] spids: [1511 1524] ) ] else_action: [] redirects: [] ) ] redirects: [] ) ] spids: [1416 1429] ) ] else_action: [] redirects: [] ) ] spids: [1378 1391] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: doing_variant body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName VARIANT))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) terminator: <Id.Op_Semi _> ) ] spids: [1564 1581] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_Equals '='>} {(DQ <->)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName VARIANT))} {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) terminator: <Id.Op_Semi _> ) ] spids: [1591 1623] ) ] else_action: [] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SUPPORTED_VARIANTS='> name:SUPPORTED_VARIANTS) op: assign_op.Equal rhs: {(DQ <->)} spids: [1640] ) ] redirects: [] ) (command.ShFunction name: variants body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SUPPORTED_VARIANTS='> name: SUPPORTED_VARIANTS ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Star '*'))} spids: [1653] ) ] redirects: [] ) (command.ForEach iter_names: [v] iterable: (for_iter.Words words:[{($ Id.VSub_Star '*')}]) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<doing_variant>} {(DQ ($ Id.VSub_DollarName v))}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) terminator: <Id.Op_Semi _> ) ] spids: [1671 1680] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (C {<error>} {<1>} {<UNSUPPVARIANT>} {(DQ <'unsupported variant'>)}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: mirror_style body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case to_match: {(DQ ($ Id.VSub_Number 1))} arms: [ (case_arm pat_list: [{<release>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DOWNLOAD_INDICES='> name: DOWNLOAD_INDICES ) op: assign_op.Equal rhs: {<download_release_indices>} spids: [1731] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DOWNLOAD_DEBS='> name: DOWNLOAD_DEBS ) op: assign_op.Equal rhs: {<download_release>} spids: [1735] ) ] redirects: [] ) ] spids: [1727 1728 1739 -1] ) (case_arm pat_list: [{<main>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DOWNLOAD_INDICES='> name: DOWNLOAD_INDICES ) op: assign_op.Equal rhs: {<download_main_indices>} spids: [1746] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DOWNLOAD_DEBS='> name: DOWNLOAD_DEBS ) op: assign_op.Equal rhs: {<download_main>} spids: [1750] ) ] redirects: [] ) ] spids: [1742 1743 1754 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<error>} {<1>} {<BADMIRROR>} {(DQ <'unknown mirror style'>)})] spids: [1757 1758 1772 -1] ) ] redirects: [] ) (C {<export>} {<DOWNLOAD_INDICES>}) (C {<export>} {<DOWNLOAD_DEBS>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: force_md5 body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'DEBOOTSTRAP_CHECKSUM_FIELD='> name: DEBOOTSTRAP_CHECKSUM_FIELD ) op: assign_op.Equal rhs: {<MD5SUM>} spids: [1798] ) ] redirects: [] ) (C {<export>} {<DEBOOTSTRAP_CHECKSUM_FIELD>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: verify_checksum body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'expchecksum='> (DQ ($ Id.VSub_Number 2))}) (C {<local>} {<Id.Lit_VarLike 'expsize='> (DQ ($ Id.VSub_Number 3))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName DEBOOTSTRAP_CHECKSUM_FIELD))} {<Id.Lit_Equals '='>} {(DQ <MD5SUM>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<in_path>} {<md5sum>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'relchecksum='> name: relchecksum ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple words: [{<md5sum>}] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_Number 1))} ) ] more_env: [] do_fork: T ) (C {<sed>} {(SQ <'s/ .*$//'>)}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [1867] ) ] redirects: [] ) ] spids: [1857 1864] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<in_path>} {<md5>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'relchecksum='> name: relchecksum ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [{<md5>}] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_Number 1))} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [1899] ) ] redirects: [] ) ] spids: [1889 1896] ) ] else_action: [(C {<error>} {<1>} {<SIGCHECK>} {(DQ <'Cannot check md5sum'>)})] redirects: [] ) ] spids: [1837 1854] ) ] else_action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<in_path>} {(DQ <sha> (${ Id.VSub_Name SHA_SIZE) <sum>)}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'relchecksum='> name: relchecksum ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple words: [{<sha> (${ Id.VSub_Name SHA_SIZE) <sum>}] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_Number 1))} ) ] more_env: [] do_fork: T ) (C {<sed>} {(SQ <'s/ .*$//'>)}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [1949] ) ] redirects: [] ) ] spids: [1933 1946] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<in_path>} {(DQ <sha> (${ Id.VSub_Name SHA_SIZE))}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'relchecksum='> name: relchecksum ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [{<sha> (${ Id.VSub_Name SHA_SIZE)}] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_Number 1))} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [1990] ) ] redirects: [] ) ] spids: [1975 1987] ) ] else_action: [ (C {<error>} {<1>} {<SIGCHECK>} {(DQ <'Cannot check sha'> (${ Id.VSub_Name SHA_SIZE) <sum>)} ) ] redirects: [] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'relsize='> name:relsize) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [{<wc>} {<-c>}] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_Number 1))} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [2031] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName expsize))} {<-ne>} {(DQ ($ Id.VSub_DollarName relsize))} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName expchecksum))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName relchecksum))} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})] spids: [2047 2081] ) ] else_action: [] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<displayname>}) (C {<local>} {<versionname>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 2> var_name: 2 suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<.deb>} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_Number 2))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'displayname='> name: displayname ) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_Number 2))}) (C {<sed>} {(SQ <'s,^.*/,,;s,_.*$,,'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) ) } spids: [2150] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'versionname='> name: versionname ) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_Number 2))}) (C {<sed>} {(SQ <'s,^.*/,,'>)}) (C {<cut>} {<-d_>} {<-f2>}) (C {<sed>} {(SQ <'s/%3a/:/'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) ) } spids: [2170] ) ] redirects: [] ) ] spids: [2125 2147] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'displayname='> name:displayname) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_Number 1))}) (C {<sed>} {(SQ <'s,^.*/,,'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) ) } spids: [2209] ) ] redirects: [] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ ($ Id.VSub_Number 2))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_Number 3))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [2249 2262] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 3))} {<Id.Lit_Equals '='>} {<nocache>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<rm>} {<-f>} {(DQ ($ Id.VSub_Number 2))})] spids: [2270 2285] ) ] else_action: [ (C {<info>} {<VALIDATING>} {(DQ <'Validating %s %s'>)} {(DQ ($ Id.VSub_DollarName displayname))} {(DQ ($ Id.VSub_DollarName versionname))} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<verify_checksum>} {(DQ ($ Id.VSub_Number 2))} {(DQ ($ Id.VSub_Number 3))} {(DQ ($ Id.VSub_Number 4))} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [2317 2334] ) ] else_action: [(C {<rm>} {<-f>} {(DQ ($ Id.VSub_Number 2))})] redirects: [] ) ] redirects: [] ) ] spids: [2233 2246] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 3))} {<Id.Lit_Equals '='>} {<nocache>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<set>} {(DQ ($ Id.VSub_Number 1))} {(DQ ($ Id.VSub_Number 2))})] spids: [2367 2382] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Pound '#'))} {<-gt>} {<5>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'st='> <3>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 5))} {<Id.Lit_Equals '='>} {(DQ <->)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'st='> name:st) op: assign_op.Equal rhs: {<6>} spids: [2443] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) ] spids: [2424 2441] ) ] else_action: [] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'order='> (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.CommandList children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a) op: assign_op.Equal rhs: {($ Id.VSub_DollarName st)} spids: [2455] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Pipeline children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName a))} {<-le>} {($ Id.VSub_Pound '#')} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.Sentence child: (C {<eval>} {<echo>} { (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <Id.Lit_LBrace '{'> (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName a)} right: {<Id.Lit_Digits 1>} ) ) <Id.Lit_RBrace '}'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') } {($ Id.VSub_DollarName a)} ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'a='> name: a ) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName a)} right: {<Id.Lit_Digits 3>} ) ) } spids: [2496] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) redirects: [] ) (C {<sort>} {<-n>}) (C {<sed>} {(SQ <'s/.* //'>)}) ] negated: F stderr_indices: [] ) ] ) right: <Id.Eof_RParen _> ) ) } ) ] spids: [2400 2415] ) ] else_action: [(C {<local>} {<Id.Lit_VarLike 'order='> <3>})] redirects: [] ) (command.ForEach iter_names: [a] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName order)}]) body: (command.DoGroup children: [ (C {<local>} {<Id.Lit_VarLike 'checksum='> (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval>} {<echo>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <Id.Lit_LBrace '{'> ($ Id.VSub_DollarName a) <Id.Lit_RBrace '}'> } ) right: <Id.Eof_RParen _> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'siz='> (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval>} {<echo>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <Id.Lit_LBrace '{'> (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName a)} right: {<Id.Lit_Digits 1>} ) ) <Id.Lit_RBrace '}'> } ) right: <Id.Eof_RParen _> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'typ='> (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval>} {<echo>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <Id.Lit_LBrace '{'> (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName a)} right: {<Id.Lit_Digits 2>} ) ) <Id.Lit_RBrace '}'> } ) right: <Id.Eof_RParen _> ) ) } ) (C {<local>} {<from>}) (C {<local>} {<dest>}) (C {<local>} {<Id.Lit_VarLike 'iters='> <0>}) (command.Case to_match: {(DQ ($ Id.VSub_DollarName typ))} arms: [ (case_arm pat_list: [{<xz>}] action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'from='> name:from) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1) <.xz>)} spids: [2644] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dest='> name:dest) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 2) <.xz>)} spids: [2651] ) ] redirects: [] ) ] spids: [2641 2642 2657 -1] ) (case_arm pat_list: [{<bz2>}] action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'from='> name:from) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1) <.bz2>)} spids: [2663] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dest='> name:dest) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 2) <.bz2>)} spids: [2670] ) ] redirects: [] ) ] spids: [2660 2661 2676 -1] ) (case_arm pat_list: [{<gz>}] action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'from='> name:from) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1) <.gz>)} spids: [2682] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dest='> name:dest) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 2) <.gz>)} spids: [2689] ) ] redirects: [] ) ] spids: [2679 2680 2695 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'from='> name:from) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} spids: [2701] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dest='> name:dest) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 2))} spids: [2707] ) ] redirects: [] ) ] spids: [2698 2699 2712 -1] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name dest> var_name: dest suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName dest))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dest='> name:dest) op: assign_op.Equal rhs: {(DQ <'./'> ($ Id.VSub_DollarName dest))} spids: [2743] ) ] redirects: [] ) ] spids: [2719 2740] ) ] else_action: [] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'dest2='> (DQ ($ Id.VSub_DollarName dest))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-d>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name dest2> var_name: dest2 suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) <'/partial'> ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dest2='> name:dest2) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name dest2> var_name: dest2 suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) <'/partial/'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name dest2> var_name: dest2 suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [2783] ) ] redirects: [] ) ] spids: [2761 2780] ) ] else_action: [] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName iters))} {<-lt>} {<10>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<info>} {<RETRIEVING>} {(DQ <'Retrieving %s %s'>)} {(DQ ($ Id.VSub_DollarName displayname))} {(DQ ($ Id.VSub_DollarName versionname))} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<just_get>} {(DQ ($ Id.VSub_DollarName from))} {(DQ ($ Id.VSub_DollarName dest2))} ) ] negated: T stderr_indices: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Continue continue> arg_word: {<2>} ) terminator: <Id.Op_Semi _> ) ] spids: [2840 2855] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName checksum))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<info>} {<VALIDATING>} {(DQ <'Validating %s %s'>)} {(DQ ($ Id.VSub_DollarName displayname))} {(DQ ($ Id.VSub_DollarName versionname))} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<verify_checksum>} {(DQ ($ Id.VSub_DollarName dest2))} {(DQ ($ Id.VSub_DollarName checksum))} {(DQ ($ Id.VSub_DollarName siz))} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'checksum='> name: checksum ) op: assign_op.Equal rhs: {(DQ )} spids: [2922] ) ] redirects: [] ) ] spids: [2902 2919] ) ] else_action: [] redirects: [] ) ] spids: [2865 2882] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName checksum))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName dest2))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName dest))} {<Id.Lit_RBracket ']'>} ) (C {<mv>} {(DQ ($ Id.VSub_DollarName dest2))} {(DQ ($ Id.VSub_DollarName dest))} ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName typ))} arms: [ (case_arm pat_list: [{<gz>}] action: [(C {<gunzip>} {(DQ ($ Id.VSub_DollarName dest))})] spids: [2985 2986 2994 -1] ) (case_arm pat_list: [{<bz2>}] action: [(C {<bunzip2>} {(DQ ($ Id.VSub_DollarName dest))})] spids: [2997 2998 3006 -1] ) (case_arm pat_list: [{<xz>}] action: [(C {<unxz>} {(DQ ($ Id.VSub_DollarName dest))})] spids: [3009 3010 3018 -1] ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [2933 2946] ) ] else_action: [ (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName dest2))}) (C {<warning>} {<RETRYING>} {(DQ <'Retrying failed download of %s'>)} {(DQ ($ Id.VSub_DollarName from))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'iters='> name: iters ) op: assign_op.Equal rhs: { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName iters)} right: {<Id.Lit_Digits 1>} ) ) ) } spids: [3054] ) ] redirects: [] ) ] redirects: [] ) ] ) redirects: [] ) (C {<warning>} {<CORRUPTFILE>} {(DQ <'%s was corrupt'>)} {(DQ ($ Id.VSub_DollarName from))} ) ] ) redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: just_get body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'from='> (DQ ($ Id.VSub_Number 1))}) (C {<local>} {<Id.Lit_VarLike 'dest='> (DQ ($ Id.VSub_Number 2))}) (C {<mkdir>} {<-p>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name dest> var_name: dest suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name from> var_name: from suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<'null:'>} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName from))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<error>} {<1>} {<NOTPREDL>} {(DQ <'%s was not pre-downloaded'>)} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name from> var_name: from suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<'null:'>}) right: <Id.Right_DollarBrace '}'> ) ) } ) ] spids: [3138 3160] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name from> var_name: from suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<'http:'> <Id.Lit_Slash '/'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName from))} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name from> var_name: from suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<'ftp:'> <Id.Lit_Slash '/'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName from))} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<wgetprogress>} {<-O>} {(DQ ($ Id.VSub_DollarName dest))} {(DQ ($ Id.VSub_DollarName from))} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [3236 3251] ) ] else_action: [ (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName dest))}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] redirects: [] ) ] spids: [3182 3229] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name from> var_name: from suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<'https:'> <Id.Lit_Slash '/'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName from))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<wgetprogress>} {($ Id.VSub_DollarName CHECKCERTIF)} {($ Id.VSub_DollarName CERTIFICATE)} {($ Id.VSub_DollarName PRIVATEKEY)} {<-O>} {(DQ ($ Id.VSub_DollarName dest))} {(DQ ($ Id.VSub_DollarName from))} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [3311 3332] ) ] else_action: [ (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName dest))}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] redirects: [] ) ] spids: [3279 3304] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name from> var_name: from suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<'file:'>} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName from))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'base='> (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name from> var_name: from suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<'file:'>}) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name base> var_name: base suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName base))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'base='> name:base) op: assign_op.Equal rhs: { (DQ <'/'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name from> var_name: from suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<'file:'> <Id.Lit_Slash '/'> <Id.Lit_Slash '/'> <Id.Lit_Other '*'> <Id.Lit_Slash '/'> } ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [3423] ) ] redirects: [] ) ] spids: [3397 3420] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ ($ Id.VSub_DollarName base))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<cp>} {(DQ ($ Id.VSub_DollarName base))} {(DQ ($ Id.VSub_DollarName dest))} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [3441 3454] ) ] else_action: [ (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] redirects: [] ) ] spids: [3360 3382] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name from> var_name: from suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<'ssh:'>} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName from))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'ssh_dest='> (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName from)}) (C {<sed>} {<-e>} {(SQ <'s#ssh://##'>)} {<-e>} {(SQ <'s#/#:/#'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName ssh_dest))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<scp>} {(DQ ($ Id.VSub_DollarName ssh_dest))} {(DQ ($ Id.VSub_DollarName dest))} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [3537 3550] ) ] else_action: [ (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] redirects: [] ) ] spids: [3484 3506] ) ] else_action: [ (C {<error>} {<1>} {<UNKNOWNLOC>} {(DQ <'unknown location %s'>)} {(DQ ($ Id.VSub_DollarName from))} ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: download body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<mk_download_dirs>}) (C {(DQ ($ Id.VSub_DollarName DOWNLOAD_DEBS))} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_At '@'))}) (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)}) (C {<sort>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: download_indices body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<mk_download_dirs>}) (C {(DQ ($ Id.VSub_DollarName DOWNLOAD_INDICES))} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_At '@'))}) (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)}) (C {<sort>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: debfor body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Subshell child: (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<pkg>} {<path>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.ForEach iter_names: [p] iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '@'))}]) body: (command.DoGroup children: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName p))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName pkg))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) terminator: <Id.Op_Semi _> ) (C {<echo>} {(DQ ($ Id.VSub_DollarName path))}) ] ) redirects: [] ) ] ) redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName TARGET) <'/debootstrap/debpaths'>)} ) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: apt_dest body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case to_match: {(DQ ($ Id.VSub_Number 1))} arms: [ (case_arm pat_list: [{<deb>}] action: [ (command.Pipeline children: [ (C {<echo>} { (DQ <'/var/cache/apt/archives/'> (${ Id.VSub_Number 2) <_> (${ Id.VSub_Number 3) <_> (${ Id.VSub_Number 4) <.deb> ) } ) (C {<sed>} {(SQ <'s/:/%3a/'>)}) ] negated: F stderr_indices: [] ) ] spids: [3799 3800 3830 -1] ) (case_arm pat_list: [{<pkg>}] action: [ (C {<local>} {<Id.Lit_VarLike 'm='> (DQ ($ Id.VSub_Number 5))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'm='> name:m) op: assign_op.Equal rhs: {(DQ <debootstrap.invalid>)} spids: [3845] ) ] redirects: [] ) (C {<printf>} {(DQ <'%s'>)} {(DQ ($ Id.VSub_DollarName APTSTATE) <'/lists/'>)}) (command.Pipeline children: [ (C {<echo>} {(DQ (${ Id.VSub_Name m) <_> ($ Id.VSub_Number 6))}) (C {<sed>} {(SQ <'s/\\//_/g'>)}) ] negated: F stderr_indices: [] ) ] spids: [3833 3834 3911 -1] ) (case_arm pat_list: [{<rel>}] action: [ (C {<local>} {<Id.Lit_VarLike 'm='> (DQ ($ Id.VSub_Number 3))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'm='> name:m) op: assign_op.Equal rhs: {(DQ <debootstrap.invalid>)} spids: [3926] ) ] redirects: [] ) (C {<printf>} {(DQ <'%s'>)} {(DQ ($ Id.VSub_DollarName APTSTATE) <'/lists/'>)}) (command.Pipeline children: [ (C {<echo>} {(DQ (${ Id.VSub_Name m) <_> ($ Id.VSub_Number 4))}) (C {<sed>} {(SQ <'s/\\//_/g'>)}) ] negated: F stderr_indices: [] ) ] spids: [3914 3915 3991 -1] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get_release_checksum body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'reldest='> (DQ ($ Id.VSub_Number 1))}) (C {<local>} {<Id.Lit_VarLike 'path='> (DQ ($ Id.VSub_Number 2))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName DEBOOTSTRAP_CHECKSUM_FIELD))} {<Id.Lit_Equals '='>} {<MD5SUM>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<local>} {<Id.Lit_VarLike 'match='> (DQ <'^[Mm][Dd]5[Ss][Uu][Mm]'>)})] spids: [4027 4042] ) ] else_action: [ (C {<local>} {<Id.Lit_VarLike 'match='> (DQ <'^[Ss][Hh][Aa]'> ($ Id.VSub_DollarName SHA_SIZE) <':'>) } ) ] redirects: [] ) (command.Pipeline children: [ (command.Simple words: [{<sed>} {<-n>} {(DQ <'/'> ($ Id.VSub_DollarName match) <'/,/^[^ ]/p'>)}] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName reldest))} ) ] more_env: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<a>} {<b>} {<c>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName c))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName path))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (C {<echo>} {(DQ ($ Id.VSub_DollarName a) <' '> ($ Id.VSub_DollarName b))} ) terminator: <Id.Op_Semi _> ) ] spids: [4103 4120] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (C {<head>} {<-n>} {<1>}) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: extract_release_components body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (C {<local>} {<Id.Lit_VarLike 'reldest='> (DQ ($ Id.VSub_Number 1))}) terminator: <Id.Op_Semi _> ) (C {<shift>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TMPCOMPONENTS='> name:TMPCOMPONENTS) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {(SQ <'s/Components: *//p'>)} {(DQ ($ Id.VSub_DollarName reldest))} ) right: <Id.Eof_RParen _> ) ) } spids: [4166] ) ] redirects: [] ) (command.ForEach iter_names: [c] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName TMPCOMPONENTS)}]) body: (command.DoGroup children: [ (C {<eval>} { (DQ <'\n'> <'\t\tcase '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <c> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <' in\n'> <'\t\t '> ($ Id.VSub_DollarName USE_COMPONENTS) <')\n'> <'\t\t\tCOMPONENTS='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'COMPONENTS '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <c> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'\n'> <'\t\t\t;;\n'> <'\t\tesac\n'> <'\t\t'> ) } ) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPONENTS='> name:COMPONENTS) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<echo>} {($ Id.VSub_DollarName COMPONENTS)}) right: <Id.Eof_RParen _> ) ) } spids: [4227] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName COMPONENTS))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<mv>} {(DQ ($ Id.VSub_DollarName reldest))} {(DQ ($ Id.VSub_DollarName reldest) <.malformed>)} ) (C {<error>} {<1>} {<INVALIDREL>} {(DQ <'Invalid Release file, no valid components'>)}) ] spids: [4237 4250] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CODENAME='> name:CODENAME) op: assign_op.Equal rhs: {(DQ )} spids: [4281] ) ] redirects: [] ) (command.ShFunction name: validate_suite body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'reldest='> (DQ ($ Id.VSub_Number 1))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CODENAME='> name:CODENAME) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {(DQ <'s/^Codename: *//p'>)} {(DQ ($ Id.VSub_DollarName reldest))} ) right: <Id.Eof_RParen _> ) } spids: [4302] ) ] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'suite='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {(DQ <'s/^Suite: *//p'>)} {(DQ ($ Id.VSub_DollarName reldest))}) right: <Id.Eof_RParen _> ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName SUITE))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName suite))} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName SUITE))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName CODENAME))} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<error>} {<1>} {<WRONGSUITE>} {(DQ <'Asked to install suite %s, but got %s (codename: %s) from mirror'>)} {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName suite))} {(DQ ($ Id.VSub_DollarName CODENAME))} ) ] spids: [4337 4372] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: split_inline_sig body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'inreldest='> (DQ ($ Id.VSub_Number 1))}) (C {<local>} {<Id.Lit_VarLike 'reldest='> (DQ ($ Id.VSub_Number 2))}) (C {<local>} {<Id.Lit_VarLike 'relsigdest='> (DQ ($ Id.VSub_Number 3))}) (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName reldest))} {(DQ ($ Id.VSub_DollarName relsigdest))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'nl='> name:nl) op: assign_op.Equal rhs: {(DQ )} spids: [4469] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'state='> name:state) op: assign_op.Equal rhs: {<pre-begin>} spids: [4474] ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple words: [{<read>} {<-r>} {<line>}] redirects: [] more_env: [(env_pair name:IFS val:(rhs_word.Empty) spids:[4480])] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.Case to_match: {(DQ (${ Id.VSub_Name state))} arms: [ (case_arm pat_list: [{<pre-begin>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ <x> (${ Id.VSub_Name line))} {<Id.Lit_Equals '='>} {(DQ <'x-----BEGIN PGP SIGNED MESSAGE-----'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'state='> name: state ) op: assign_op.Equal rhs: {<begin>} spids: [4530] ) ] redirects: [] ) ] spids: [4507 4527] ) ] else_action: [] redirects: [] ) ] spids: [4503 4504 4537 -1] ) (case_arm pat_list: [{<begin>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ <x> (${ Id.VSub_Name line))} {<Id.Lit_Equals '='>} {(DQ <x>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'state='> name: state ) op: assign_op.Equal rhs: {<Id.KW_Data data>} spids: [4567] ) ] redirects: [] ) ] spids: [4544 4564] ) ] else_action: [] redirects: [] ) ] spids: [4540 4541 4574 -1] ) (case_arm pat_list: [{<Id.KW_Data data>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ <x> (${ Id.VSub_Name line))} {<Id.Lit_Equals '='>} {(DQ <'x-----BEGIN PGP SIGNATURE-----'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<printf>} {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)} {(DQ (${ Id.VSub_Name line))} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName relsigdest))} ) ] more_env: [] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'state='> name: state ) op: assign_op.Equal rhs: {<signature>} spids: [4625] ) ] redirects: [] ) ] spids: [4581 4601] ) ] else_action: [ (command.Simple words: [ {<printf>} {(DQ (${ Id.VSub_Name nl) <'%s'>)} {(DQ (${ Id.VSub_Name line))} ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName reldest))} ) ] more_env: [] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'nl='> name:nl) op: assign_op.Equal rhs: {(DQ <Id.Lit_BadBackslash '\\'> <n>)} spids: [4654] ) ] redirects: [] ) ] redirects: [] ) ] spids: [4577 4578 4664 -1] ) (case_arm pat_list: [{<signature>}] action: [ (command.Simple words: [ {<printf>} {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)} {(DQ (${ Id.VSub_Name line))} ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName relsigdest))} ) ] more_env: [] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ <x> (${ Id.VSub_Name line))} {<Id.Lit_Equals '='>} {(DQ <'x-----END PGP SIGNATURE-----'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)] spids: [4692 4712] ) ] else_action: [] redirects: [] ) ] spids: [4667 4668 -1 4721] ) ] redirects: [] ) ] ) redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName inreldest))} ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: download_release_sig body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'm1='> (DQ ($ Id.VSub_Number 1))}) (C {<local>} {<Id.Lit_VarLike 'inreldest='> (DQ ($ Id.VSub_Number 2))}) (C {<local>} {<Id.Lit_VarLike 'reldest='> (DQ ($ Id.VSub_Number 3))}) (C {<local>} {<Id.Lit_VarLike 'relsigdest='> (DQ ($ Id.VSub_Number 4))}) (C {<progress>} {<0>} {<100>} {<DOWNREL>} {(DQ <'Downloading Release file'>)}) (C {<progress_next>} {<100>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<get>} { (DQ ($ Id.VSub_DollarName m1) <'/dists/'> ($ Id.VSub_DollarName SUITE) <'/InRelease'> ) } {(DQ ($ Id.VSub_DollarName inreldest))} {<nocache>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<split_inline_sig>} {(DQ ($ Id.VSub_DollarName inreldest))} {(DQ ($ Id.VSub_DollarName reldest))} {(DQ ($ Id.VSub_DollarName relsigdest))} ) (C {<progress>} {<100>} {<100>} {<DOWNREL>} {(DQ <'Downloading Release file'>)}) ] spids: [4794 4812] ) ] else_action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<get>} { (DQ ($ Id.VSub_DollarName m1) <'/dists/'> ($ Id.VSub_DollarName SUITE) <'/Release'> ) } {(DQ ($ Id.VSub_DollarName reldest))} {<nocache>} ) (C {<error>} {<1>} {<NOGETREL>} {(DQ <'Failed getting release file %s'>)} { (DQ ($ Id.VSub_DollarName m1) <'/dists/'> ($ Id.VSub_DollarName SUITE) <'/Release'> ) } ) ] ) (C {<progress>} {<100>} {<100>} {<DOWNREL>} {(DQ <'Downloading Release file'>)}) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName KEYRING))} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName DISABLE_KEYRING))} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<progress>} {<0>} {<100>} {<DOWNRELSIG>} {(DQ <'Downloading Release file signature'>)} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName relsigdest))} {<Id.Lit_RBracket ']'>} ) ] negated: T stderr_indices: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<progress_next>} {<50>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<get>} { (DQ ($ Id.VSub_DollarName m1) <'/dists/'> ($ Id.VSub_DollarName SUITE) <'/Release.gpg'> ) } {(DQ ($ Id.VSub_DollarName relsigdest))} {<nocache>} ) (C {<error>} {<1>} {<NOGETRELSIG>} {(DQ <'Failed getting release signature file %s'>)} {(DQ ($ Id.VSub_DollarName m1) <'/dists/'> ($ Id.VSub_DollarName SUITE) <'/Release.gpg'>)} ) ] ) (C {<progress>} {<50>} {<100>} {<DOWNRELSIG>} {(DQ <'Downloading Release file signature'>)} ) ] spids: [4939 4954] ) ] else_action: [] redirects: [] ) (C {<info>} {<RELEASESIG>} {(DQ <'Checking Release signature'>)}) (command.Pipeline children: [ (command.Subshell child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<gpgv>} {<--status-fd>} {<1>} {<--keyring>} {(DQ ($ Id.VSub_DollarName KEYRING))} {<--ignore-time-conflict>} {(DQ ($ Id.VSub_DollarName relsigdest))} {(DQ ($ Id.VSub_DollarName reldest))} ) (C {<true>}) ] ) redirects: [] ) (C {<read_gpg_status>}) ] negated: F stderr_indices: [] ) (C {<progress>} {<100>} {<100>} {<DOWNRELSIG>} {(DQ <'Downloading Release file signature'>)} ) ] spids: [4898 4923] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: download_release_indices body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'm1='> (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name MIRRORS> var_name: MIRRORS suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<' '> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'inreldest='> (DQ ($ Id.VSub_DollarName TARGET) <'/'> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {($ Id.VSub_DollarName DLDEST)} {<rel>} {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName m1))} {(DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/InRelease'>)} ) right: <Id.Eof_RParen _> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'reldest='> (DQ ($ Id.VSub_DollarName TARGET) <'/'> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {($ Id.VSub_DollarName DLDEST)} {<rel>} {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName m1))} {(DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/Release'>)} ) right: <Id.Eof_RParen _> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'relsigdest='> (DQ ($ Id.VSub_DollarName TARGET) <'/'> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {($ Id.VSub_DollarName DLDEST)} {<rel>} {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName m1))} {(DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/Release.gpg'>)} ) right: <Id.Eof_RParen _> ) ) } ) (C {<download_release_sig>} {(DQ ($ Id.VSub_DollarName m1))} {(DQ ($ Id.VSub_DollarName inreldest))} {(DQ ($ Id.VSub_DollarName reldest))} {(DQ ($ Id.VSub_DollarName relsigdest))} ) (C {<validate_suite>} {(DQ ($ Id.VSub_DollarName reldest))}) (C {<extract_release_components>} {($ Id.VSub_DollarName reldest)}) (C {<local>} {<Id.Lit_VarLike 'totalpkgs='> <0>}) (command.ForEach iter_names: [c] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName COMPONENTS)}]) body: (command.DoGroup children: [ (C {<local>} {<Id.Lit_VarLike 'subpath='> (DQ ($ Id.VSub_DollarName c) <'/binary-'> ($ Id.VSub_DollarName ARCH) <'/Packages'> ) } ) (C {<local>} {<Id.Lit_VarLike 'xzi='> (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName reldest))} {(DQ ($ Id.VSub_DollarName subpath) <.xz>)} ) right: <Id.Backtick_Right '`'> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'bz2i='> (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName reldest))} {(DQ ($ Id.VSub_DollarName subpath) <.bz2>)} ) right: <Id.Backtick_Right '`'> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'gzi='> (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName reldest))} {(DQ ($ Id.VSub_DollarName subpath) <.gz>)} ) right: <Id.Backtick_Right '`'> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'normi='> (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName reldest))} {(DQ ($ Id.VSub_DollarName subpath))} ) right: <Id.Backtick_Right '`'> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'i='>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName normi))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName normi))} spids: [5364] ) ] redirects: [] ) ] spids: [5344 5361] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<in_path>} {<bunzip2>}) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName bz2i))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName bz2i))} spids: [5396] ) ] redirects: [] ) ] spids: [5370 5393] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<in_path>} {<unxz>}) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName xzi))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName xzi))} spids: [5428] ) ] redirects: [] ) ] spids: [5402 5425] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<in_path>} {<gunzip>}) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName gzi))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName gzi))} spids: [5460] ) ] redirects: [] ) ] spids: [5434 5457] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName i))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'totalpkgs='> name: totalpkgs ) op: assign_op.Equal rhs: { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName totalpkgs)} right: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name i> var_name: i suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <' '>} ) right: <Id.Right_DollarBrace '}'> ) } ) ) ) } spids: [5489] ) ] redirects: [] ) ] spids: [5469 5486] ) ] else_action: [ (C {<mv>} {(DQ ($ Id.VSub_DollarName reldest))} {(DQ ($ Id.VSub_DollarName reldest) <.malformed>)} ) (C {<error>} {<1>} {<MISSINGRELENTRY>} {(DQ <'Invalid Release file, no entry for %s'>)} {(DQ ($ Id.VSub_DollarName subpath))} ) ] redirects: [] ) ] ) redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'donepkgs='> <0>}) (C {<local>} {<pkgdest>}) (C {<progress>} {<0>} {($ Id.VSub_DollarName totalpkgs)} {<DOWNPKGS>} {(DQ <'Downloading Packages files'>)} ) (command.ForEach iter_names: [c] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName COMPONENTS)}]) body: (command.DoGroup children: [ (C {<local>} {<Id.Lit_VarLike 'subpath='> (DQ ($ Id.VSub_DollarName c) <'/binary-'> ($ Id.VSub_DollarName ARCH) <'/Packages'> ) } ) (C {<local>} {<Id.Lit_VarLike 'path='> (DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/'> ($ Id.VSub_DollarName subpath)) } ) (C {<local>} {<Id.Lit_VarLike 'xzi='> (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName reldest))} {(DQ ($ Id.VSub_DollarName subpath) <.xz>)} ) right: <Id.Backtick_Right '`'> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'bz2i='> (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName reldest))} {(DQ ($ Id.VSub_DollarName subpath) <.bz2>)} ) right: <Id.Backtick_Right '`'> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'gzi='> (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName reldest))} {(DQ ($ Id.VSub_DollarName subpath) <.gz>)} ) right: <Id.Backtick_Right '`'> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'normi='> (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_release_checksum>} {(DQ ($ Id.VSub_DollarName reldest))} {(DQ ($ Id.VSub_DollarName subpath))} ) right: <Id.Backtick_Right '`'> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'ext='>}) (C {<local>} {<Id.Lit_VarLike 'i='>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName normi))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ext='> name:ext) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName ext) <' '> ($ Id.VSub_DollarName normi) <' .'> ) } spids: [5717] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName normi))} spids: [5726] ) ] redirects: [] ) ] spids: [5697 5714] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<in_path>} {<unxz>}) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName xzi))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ext='> name:ext) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName ext) <' '> ($ Id.VSub_DollarName xzi) <' xz'> ) } spids: [5761] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name i> var_name: i suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {($ Id.VSub_DollarName xzi)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [5770] ) ] redirects: [] ) ] spids: [5735 5758] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<in_path>} {<bunzip2>}) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName bz2i))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ext='> name:ext) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName ext) <' '> ($ Id.VSub_DollarName bz2i) <' bz2'> ) } spids: [5809] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name i> var_name: i suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {($ Id.VSub_DollarName bz2i)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [5818] ) ] redirects: [] ) ] spids: [5783 5806] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<in_path>} {<gunzip>}) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName gzi))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ext='> name:ext) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName ext) <' '> ($ Id.VSub_DollarName gzi) <' gz'> ) } spids: [5857] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name i> var_name: i suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {($ Id.VSub_DollarName gzi)} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [5866] ) ] redirects: [] ) ] spids: [5831 5854] ) ] else_action: [] redirects: [] ) (C {<progress_next>} { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName donepkgs)} right: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name i> var_name: i suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <' '>} ) right: <Id.Right_DollarBrace '}'> ) } ) ) ) } ) (command.ForEach iter_names: [m] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName MIRRORS)}]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'pkgdest='> name: pkgdest ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName TARGET) <'/'> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {($ Id.VSub_DollarName DLDEST)} {<pkg>} {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName c))} {(DQ ($ Id.VSub_DollarName ARCH))} {(DQ ($ Id.VSub_DollarName m))} {(DQ ($ Id.VSub_DollarName path))} ) right: <Id.Eof_RParen _> ) ) } spids: [5910] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<get>} { (DQ ($ Id.VSub_DollarName m) <'/'> ($ Id.VSub_DollarName path) ) } {(DQ ($ Id.VSub_DollarName pkgdest))} {($ Id.VSub_DollarName ext)} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Break break>) terminator: <Id.Op_Semi _> ) ] spids: [5942 5959] ) ] else_action: [] redirects: [] ) ] ) 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 pkgdest))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<error>} {<1>} {<COULDNTDL>} {(DQ <'Couldn\'t download %s'>)} {(DQ ($ Id.VSub_DollarName path))} ) ] spids: [5970 5985] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'donepkgs='> name:donepkgs) op: assign_op.Equal rhs: { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName donepkgs)} right: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name i> var_name: i suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <' '>} ) right: <Id.Right_DollarBrace '}'> ) } ) ) ) } spids: [6006] ) ] redirects: [] ) (C {<progress>} {($ Id.VSub_DollarName donepkgs)} {($ Id.VSub_DollarName totalpkgs)} {<DOWNPKGS>} {(DQ <'Downloading Packages files'>)} ) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get_package_sizes body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (C {<local>} {<Id.Lit_VarLike 'm='> (DQ ($ Id.VSub_Number 1))}) terminator: <Id.Op_Semi _> ) (C {<shift>}) (command.Sentence child: (C {<local>} {<Id.Lit_VarLike 'pkgdest='> (DQ ($ Id.VSub_Number 1))}) terminator: <Id.Op_Semi _> ) (C {<shift>}) (command.Pipeline children: [ (C {($ Id.VSub_DollarName PKGDETAILS)} {<PKGS>} {(DQ ($ Id.VSub_DollarName m))} {(DQ ($ Id.VSub_DollarName pkgdest))} {(DQ ($ Id.VSub_At '@'))} ) (command.Subshell child: (command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'newleft='> name:newleft) op: assign_op.Equal rhs: {(DQ )} spids: [6097] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'totaldebs='> name: totaldebs ) op: assign_op.Equal rhs: {<0>} spids: [6102] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'countdebs='> name: countdebs ) op: assign_op.Equal rhs: {<0>} spids: [6106] ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<p>} {<details>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName details))} {<Id.Lit_Equals '='>} {(DQ <->)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'newleft='> name: newleft ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName newleft) <' '> ($ Id.VSub_DollarName p) ) } spids: [6142] ) ] redirects: [] ) ] spids: [6122 6139] ) ] else_action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'size='> name: size ) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name details> var_name: details suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <' '>} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [6153] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'totaldebs='> name: totaldebs ) op: assign_op.Equal rhs: { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName totaldebs)} right: {($ Id.VSub_DollarName size)} ) ) ) } spids: [6165] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'countdebs='> name: countdebs ) op: assign_op.Equal rhs: { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName countdebs)} right: {<Id.Lit_Digits 1>} ) ) ) } spids: [6178] ) ] redirects: [] ) ] redirects: [] ) ] ) redirects: [] ) (C {<echo>} { (DQ ($ Id.VSub_DollarName countdebs) <' '> ($ Id.VSub_DollarName totaldebs) ($ Id.VSub_DollarName newleft) ) } ) ] ) redirects: [] ) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: download_debs body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'm='> (DQ ($ Id.VSub_Number 1))}) (C {<local>} {<Id.Lit_VarLike 'pkgdest='> (DQ ($ Id.VSub_Number 2))}) (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>) (C {<shift>}) (command.Pipeline children: [ (C {($ Id.VSub_DollarName PKGDETAILS)} {<PKGS>} {(DQ ($ Id.VSub_DollarName m))} {(DQ ($ Id.VSub_DollarName pkgdest))} {(DQ ($ Id.VSub_At '@'))} ) (command.Subshell child: (command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'leftover='> name:leftover) op: assign_op.Equal rhs: {(DQ )} spids: [6267] ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<p>} {<ver>} {<arc>} {<mdup>} {<fil>} {<checksum>} {<size>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName ver))} {<Id.Lit_Equals '='>} {(DQ <->)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'leftover='> name: leftover ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName leftover) <' '> ($ Id.VSub_DollarName p) ) } spids: [6314] ) ] redirects: [] ) ] spids: [6294 6311] ) ] else_action: [ (C {<progress_next>} { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName dloaddebs)} right: {($ Id.VSub_DollarName size)} ) ) ) } ) (C {<local>} {<Id.Lit_VarLike 'debdest='> (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {($ Id.VSub_DollarName DLDEST)} {<deb>} {(DQ ($ Id.VSub_DollarName p))} {(DQ ($ Id.VSub_DollarName ver))} {(DQ ($ Id.VSub_DollarName arc))} {(DQ ($ Id.VSub_DollarName m))} {(DQ ($ Id.VSub_DollarName fil))} ) right: <Id.Eof_RParen _> ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<get>} { (DQ ($ Id.VSub_DollarName m) <'/'> ($ Id.VSub_DollarName fil) ) } {(DQ ($ Id.VSub_DollarName TARGET) <'/'> ($ Id.VSub_DollarName debdest))} {(DQ ($ Id.VSub_DollarName checksum))} {(DQ ($ Id.VSub_DollarName size))} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'dloaddebs='> name: dloaddebs ) op: assign_op.Equal rhs: { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName dloaddebs)} right: {($ Id.VSub_DollarName size)} ) ) ) } spids: [6399] ) ] redirects: [] ) (command.Simple words: [ {<echo>} { (DQ ($ Id.VSub_DollarName p) <' '> ($ Id.VSub_DollarName ver) <' '> ($ Id.VSub_DollarName m) <'/'> ($ Id.VSub_DollarName fil) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName TARGET) <'/debootstrap/deburis'> } ) ] more_env: [] do_fork: T ) (command.Simple words: [ {<echo>} { (DQ ($ Id.VSub_DollarName p) <' '> ($ Id.VSub_DollarName debdest) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName TARGET) <'/debootstrap/debpaths'> } ) ] more_env: [] do_fork: T ) ] spids: [6371 6396] ) ] else_action: [ (C {<warning>} {<COULDNTDL>} {(DQ <'Couldn\'t download package %s (ver %s arch %s)'>)} {(DQ ($ Id.VSub_DollarName p))} {(DQ ($ Id.VSub_DollarName ver))} {(DQ ($ Id.VSub_DollarName arc))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'leftover='> name: leftover ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName leftover) <' '> ($ Id.VSub_DollarName p) ) } spids: [6466] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] ) ] ) redirects: [] ) (command.Simple words: [ {<echo>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name leftover> var_name: leftover suffix_op: (suffix_op.Unary op:<Id.VOp1_Pound '#'> arg_word:{<' '>}) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<5>} ) ] more_env: [] do_fork: T ) ] ) redirects: [] ) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: download_release body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'm1='> (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name MIRRORS> var_name: MIRRORS suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<' '> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'numdebs='> (DQ ($ Id.VSub_Pound '#'))}) (C {<local>} {<Id.Lit_VarLike 'countdebs='> <0>}) (C {<progress>} {($ Id.VSub_DollarName countdebs)} {($ Id.VSub_DollarName numdebs)} {<SIZEDEBS>} {(DQ <'Finding package sizes'>)} ) (C {<local>} {<Id.Lit_VarLike 'totaldebs='> <0>}) (C {<local>} {<Id.Lit_VarLike 'leftoverdebs='> (DQ ($ Id.VSub_Star '*'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'leftoverdebs='> name:leftoverdebs) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<printf>} {(DQ ($ Id.VSub_DollarName leftoverdebs))}) (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)}) (C {<sort>} {<-u>}) (C {<tr>} {(SQ <'\\n'>)} {(SQ <' '>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [6570] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'numdebs='> name:numdebs) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<printf>} {(DQ ($ Id.VSub_DollarName leftoverdebs))}) (C {<wc>} {<-w>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [6604] ) ] redirects: [] ) (command.ForEach iter_names: [c] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName COMPONENTS)}]) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName countdebs))} {<-ge>} {(DQ ($ Id.VSub_DollarName numdebs))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Break break>) terminator: <Id.Op_Semi _> ) ] spids: [6631 6648] ) ] else_action: [] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'path='> (DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/'> ($ Id.VSub_DollarName c) <'/binary-'> ($ Id.VSub_DollarName ARCH) <'/Packages'> ) } ) (C {<local>} {<Id.Lit_VarLike 'pkgdest='> (DQ ($ Id.VSub_DollarName TARGET) <'/'> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {($ Id.VSub_DollarName DLDEST)} {<pkg>} {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName c))} {(DQ ($ Id.VSub_DollarName ARCH))} {(DQ ($ Id.VSub_DollarName m1))} {(DQ ($ Id.VSub_DollarName path))} ) right: <Id.Eof_RParen _> ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} {(DQ ($ Id.VSub_DollarName pkgdest))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Continue continue>) terminator: <Id.Op_Semi _> ) ] spids: [6705 6720] ) ] else_action: [] redirects: [] ) (C {<info>} {<CHECKINGSIZES>} {(DQ <'Checking component %s on %s...'>)} {(DQ ($ Id.VSub_DollarName c))} {(DQ ($ Id.VSub_DollarName m1))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'leftoverdebs='> name: leftoverdebs ) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<get_package_sizes>} {(DQ ($ Id.VSub_DollarName m1))} {(DQ ($ Id.VSub_DollarName pkgdest))} {($ Id.VSub_DollarName leftoverdebs)} ) right: <Id.Eof_RParen _> ) ) } spids: [6747] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'countdebs='> name:countdebs) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName countdebs)} right: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name leftoverdebs> var_name: leftoverdebs suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<' '> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ) } spids: [6766] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'leftoverdebs='> name: leftoverdebs ) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name leftoverdebs> var_name: leftoverdebs suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <' '>} ) right: <Id.Right_DollarBrace '}'> ) } spids: [6782] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'totaldebs='> name:totaldebs) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name leftoverdebs> var_name: leftoverdebs suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<' '> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } spids: [6792] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'leftoverdebs='> name: leftoverdebs ) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name leftoverdebs> var_name: leftoverdebs suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <' '>} ) right: <Id.Right_DollarBrace '}'> ) } spids: [6801] ) ] redirects: [] ) (C {<progress>} {($ Id.VSub_DollarName countdebs)} {($ Id.VSub_DollarName numdebs)} {<SIZEDEBS>} {(DQ <'Finding package sizes'>)} ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName countdebs))} {<-ne>} {(DQ ($ Id.VSub_DollarName numdebs))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<error>} {<1>} {<LEFTOVERDEBS>} {(DQ <'Couldn\'t find these debs: %s'>)} {(DQ ($ Id.VSub_DollarName leftoverdebs))} ) ] spids: [6828 6845] ) ] else_action: [] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'dloaddebs='> <0>}) (C {<progress>} {($ Id.VSub_DollarName dloaddebs)} {($ Id.VSub_DollarName totaldebs)} {<DOWNDEBS>} {(DQ <'Downloading packages'>)} ) (command.Simple words: [{<Id.Lit_Colon ':'>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName TARGET) <'/debootstrap/debpaths'>} ) ] more_env: [] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pkgs_to_get='> name:pkgs_to_get) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Star '*'))} spids: [6894] ) ] redirects: [] ) (command.ForEach iter_names: [c] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName COMPONENTS)}]) body: (command.DoGroup children: [ (C {<local>} {<Id.Lit_VarLike 'path='> (DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/'> ($ Id.VSub_DollarName c) <'/binary-'> ($ Id.VSub_DollarName ARCH) <'/Packages'> ) } ) (command.ForEach iter_names: [m] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName MIRRORS)}]) body: (command.DoGroup children: [ (C {<local>} {<Id.Lit_VarLike 'pkgdest='> (DQ ($ Id.VSub_DollarName TARGET) <'/'> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {($ Id.VSub_DollarName DLDEST)} {<pkg>} {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName c))} {(DQ ($ Id.VSub_DollarName ARCH))} {(DQ ($ Id.VSub_DollarName m))} {(DQ ($ Id.VSub_DollarName path))} ) right: <Id.Eof_RParen _> ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} {(DQ ($ Id.VSub_DollarName pkgdest))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) terminator: <Id.Op_Semi _> ) ] spids: [6972 6987] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'pkgs_to_get='> name: pkgs_to_get ) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<download_debs>} {(DQ ($ Id.VSub_DollarName m))} {(DQ ($ Id.VSub_DollarName pkgdest))} {($ Id.VSub_DollarName pkgs_to_get)} ] redirects: [ (redir op: <Id.Redir_GreatAnd '5>&'> loc: (redir_loc.Fd fd:5) arg: {<1>} ) (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<6>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } spids: [6995] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName pkgs_to_get))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Break break>) terminator: <Id.Op_Semi _> ) ] spids: [7019 7032] ) ] else_action: [] redirects: [] ) ] ) redirects: [ (redir op: <Id.Redir_GreatAnd '6>&'> loc: (redir_loc.Fd fd:6) arg: {<1>} ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName pkgs_to_get))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Break break>) terminator: <Id.Op_Semi _> ) ] spids: [7046 7059] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (C {<progress>} {($ Id.VSub_DollarName dloaddebs)} {($ Id.VSub_DollarName totaldebs)} {<DOWNDEBS>} {(DQ <'Downloading packages'>)} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName pkgs_to_get))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<error>} {<1>} {<COULDNTDLPKGS>} {(DQ <'Couldn\'t download packages: %s'>)} {(DQ ($ Id.VSub_DollarName pkgs_to_get))} ) ] spids: [7083 7100] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: download_main_indices body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'm1='> (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name MIRRORS> var_name: MIRRORS suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<' '> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'comp='> (DQ (${ Id.VSub_Name USE_COMPONENTS))}) (C {<progress>} {<0>} {<100>} {<DOWNMAINPKGS>} {(DQ <'Downloading Packages file'>)}) (C {<progress_next>} {<100>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName comp))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'comp='> name:comp) op: assign_op.Equal rhs: {<main>} spids: [7188] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) ] spids: [7173 7186] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMPONENTS='> name:COMPONENTS) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName comp)}) (C {<tr>} {(SQ <'|'>)} {(SQ <' '>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) ) } spids: [7195] ) ] redirects: [] ) (C {<export>} {<COMPONENTS>}) (command.ForEach iter_names: [m] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName MIRRORS)}]) body: (command.DoGroup children: [ (command.ForEach iter_names: [c] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName COMPONENTS)}]) body: (command.DoGroup children: [ (C {<local>} {<Id.Lit_VarLike 'path='> (DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/'> ($ Id.VSub_DollarName c) <'/binary-'> ($ Id.VSub_DollarName ARCH) <'/Packages'> ) } ) (C {<local>} {<Id.Lit_VarLike 'pkgdest='> (DQ ($ Id.VSub_DollarName TARGET) <'/'> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {($ Id.VSub_DollarName DLDEST)} {<pkg>} {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName c))} {(DQ ($ Id.VSub_DollarName ARCH))} {(DQ ($ Id.VSub_DollarName m))} {(DQ ($ Id.VSub_DollarName path))} ) right: <Id.Eof_RParen _> ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<in_path>} {<gunzip>}) (C {<get>} { (DQ ($ Id.VSub_DollarName m) <'/'> (${ Id.VSub_Name path) <.gz> ) } {(DQ (${ Id.VSub_Name pkgdest) <.gz>)} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName pkgdest))}) (C {<gunzip>} {(DQ ($ Id.VSub_DollarName pkgdest) <.gz>)}) ] spids: [7295 7322] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<get>} { (DQ ($ Id.VSub_DollarName m) <'/'> ($ Id.VSub_DollarName path) ) } {(DQ ($ Id.VSub_DollarName pkgdest))} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<true>})] spids: [7342 7357] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) ] ) redirects: [] ) (C {<progress>} {<100>} {<100>} {<DOWNMAINPKGS>} {(DQ <'Downloading Packages file'>)}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: download_main body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'm1='> (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name MIRRORS> var_name: MIRRORS suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<' '> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.Simple words: [{<Id.Lit_Colon ':'>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName TARGET) <'/debootstrap/debpaths'>} ) ] more_env: [] do_fork: T ) (command.ForEach iter_names: [p] iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '@'))}]) body: (command.DoGroup children: [ (command.ForEach iter_names: [c] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName COMPONENTS)}]) body: (command.DoGroup children: [ (C {<local>} {<Id.Lit_VarLike 'details='> (DQ )}) (command.ForEach iter_names: [m] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName MIRRORS)}]) body: (command.DoGroup children: [ (C {<local>} {<Id.Lit_VarLike 'path='> (DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/'> ($ Id.VSub_DollarName c) <'/binary-'> ($ Id.VSub_DollarName ARCH) <'/Packages'> ) } ) (C {<local>} {<Id.Lit_VarLike 'pkgdest='> (DQ ($ Id.VSub_DollarName TARGET) <'/'> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {($ Id.VSub_DollarName DLDEST)} {<pkg>} {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName c))} {(DQ ($ Id.VSub_DollarName ARCH))} {(DQ ($ Id.VSub_DollarName m))} {(DQ ($ Id.VSub_DollarName path))} ) right: <Id.Eof_RParen _> ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} {(DQ ($ Id.VSub_DollarName pkgdest))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) terminator: <Id.Op_Semi _> ) ] spids: [7508 7523] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'details='> name: details ) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {($ Id.VSub_DollarName PKGDETAILS)} {<PKGS>} {(DQ ($ Id.VSub_DollarName m))} {(DQ ($ Id.VSub_DollarName pkgdest))} {(DQ ($ Id.VSub_DollarName p))} ) right: <Id.Eof_RParen _> ) ) } spids: [7531] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName details))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName p) <' -'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'details='> name: details ) op: assign_op.Equal rhs: {(DQ )} spids: [7574] ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [7553 7571] ) ] else_action: [] redirects: [] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'size='> name: size ) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name details> var_name: details suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <' '>} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [7585] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'details='> name: details ) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name details> var_name: details suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<' '> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [7596] ) ] redirects: [] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'checksum='> name: checksum ) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name details> var_name: details suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <' '>} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [7607] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'details='> name: details ) op: assign_op.Equal rhs: { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name details> var_name: details suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<' '> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) ) } spids: [7618] ) ] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'debdest='> (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {($ Id.VSub_DollarName DLDEST)} {<deb>} {($ Id.VSub_DollarName details)} ) right: <Id.Eof_RParen _> ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<get>} { (DQ ($ Id.VSub_DollarName m) <'/'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name details> var_name: details suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <' '>} ) right: <Id.Right_DollarBrace '}'> ) ) } {(DQ ($ Id.VSub_DollarName TARGET) <'/'> ($ Id.VSub_DollarName debdest))} {(DQ ($ Id.VSub_DollarName checksum))} {(DQ ($ Id.VSub_DollarName size))} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} { (DQ ($ Id.VSub_DollarName p) <' '> ($ Id.VSub_DollarName debdest) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName TARGET) <'/debootstrap/debpaths'> } ) ] more_env: [] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'details='> name: details ) op: assign_op.Equal rhs: {(DQ <done>)} spids: [7689] ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [7643 7673] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName details))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)] spids: [7704 7721] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName details))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <done>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<error>} {<1>} {<COULDNTDL>} {(DQ <'Couldn\'t download %s'>)} {(DQ ($ Id.VSub_DollarName p))} ) ] spids: [7733 7751] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get_debs body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'field='> (DQ ($ Id.VSub_Number 1))}) (C {<shift>}) (C {<local>} {<m1>} {<c>}) (command.ForEach iter_names: [m1] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName MIRRORS)}]) body: (command.DoGroup children: [ (command.ForEach iter_names: [c] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName COMPONENTS)}]) body: (command.DoGroup children: [ (C {<local>} {<Id.Lit_VarLike 'path='> (DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/'> ($ Id.VSub_DollarName c) <'/binary-'> ($ Id.VSub_DollarName ARCH) <'/Packages'> ) } ) (C {<local>} {<Id.Lit_VarLike 'pkgdest='> (DQ ($ Id.VSub_DollarName TARGET) <'/'> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {($ Id.VSub_DollarName DLDEST)} {<pkg>} {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName c))} {(DQ ($ Id.VSub_DollarName ARCH))} {(DQ ($ Id.VSub_DollarName m1))} {(DQ ($ Id.VSub_DollarName path))} ) right: <Id.Eof_RParen _> ) ) } ) (C {<echo>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {(DQ ($ Id.VSub_DollarName PKGDETAILS))} {<FIELD>} {(DQ ($ Id.VSub_DollarName field))} {(DQ ($ Id.VSub_DollarName m1))} {(DQ ($ Id.VSub_DollarName pkgdest))} {(DQ ($ Id.VSub_At '@'))} ) (C {<sed>} {(SQ <'s/ .*//'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) ] ) redirects: [] ) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'EXTRACTORS_SUPPORTED='> name: EXTRACTORS_SUPPORTED ) op: assign_op.Equal rhs: {(DQ <'dpkg-deb ar'>)} spids: [7926] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'EXTRACT_DEB_TAR_OPTIONS='> name: EXTRACT_DEB_TAR_OPTIONS ) op: assign_op.Equal rhs: (rhs_word.Empty) spids: [7931] ) ] redirects: [] ) (command.ShFunction name: extract_dpkg_deb_field body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'pkg='> (DQ ($ Id.VSub_Number 1))}) (C {<local>} {<Id.Lit_VarLike 'field='> (DQ ($ Id.VSub_Number 2))}) (C {<dpkg-deb>} {<-f>} {(DQ ($ Id.VSub_DollarName pkg))} {(DQ ($ Id.VSub_DollarName field))}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: extract_dpkg_deb_data body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'pkg='> (DQ ($ Id.VSub_Number 1))}) (command.Pipeline children: [ (C {<dpkg-deb>} {<--fsys-tarfile>} {(DQ ($ Id.VSub_DollarName pkg))}) (C {<tar>} {($ Id.VSub_DollarName EXTRACT_DEB_TAR_OPTIONS)} {<-xf>} {<->}) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: extract_ar_deb_field body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'pkg='> (DQ ($ Id.VSub_Number 1))}) (C {<local>} {<Id.Lit_VarLike 'field='> (DQ ($ Id.VSub_Number 2))}) (C {<local>} {<Id.Lit_VarLike 'tarball='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<ar>} {<-t>} {(DQ ($ Id.VSub_DollarName pkg))}) (C {<grep>} {(DQ <'^control'> <Id.Lit_BadBackslash '\\'> <.tar>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName tarball))} arms: [ (case_arm pat_list: [{<control.tar.gz>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cat_cmd='> name:cat_cmd) op: assign_op.Equal rhs: {<zcat>} spids: [8079] ) ] redirects: [] ) ] spids: [8076 8077 8082 -1] ) (case_arm pat_list: [{<control.tar.xz>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cat_cmd='> name:cat_cmd) op: assign_op.Equal rhs: {<xzcat>} spids: [8088] ) ] redirects: [] ) ] spids: [8085 8086 8091 -1] ) (case_arm pat_list: [{<control.tar>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cat_cmd='> name:cat_cmd) op: assign_op.Equal rhs: {<cat>} spids: [8097] ) ] redirects: [] ) ] spids: [8094 8095 8100 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<error>} {<1>} {<UNKNOWNCONTROLCOMP>} {(DQ <'Unknown compression type for %s in %s'>)} {(DQ ($ Id.VSub_DollarName tarball))} {(DQ ($ Id.VSub_DollarName pkg))} ) ] spids: [8103 8104 8124 -1] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple words: [{<type>} {($ Id.VSub_DollarName cat_cmd)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Pipeline children: [ (C {<ar>} {<-p>} {(DQ ($ Id.VSub_DollarName pkg))} {(DQ ($ Id.VSub_DollarName tarball))} ) (C {($ Id.VSub_DollarName cat_cmd)}) (command.Simple words: [{<tar>} {<-O>} {<-xf>} {<->} {<control>} {<'./control'>}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<grep>} {<-i>} {(DQ <'^'> ($ Id.VSub_DollarName field) <':'>)}) (C {<sed>} {<-e>} {(SQ <'s/[^:]*: *//'>)}) (C {<head>} {<-n>} {<1>}) ] negated: F stderr_indices: [] ) ] spids: [8131 8144] ) ] else_action: [ (C {<error>} {<1>} {<UNPACKCMDUNVL>} {(DQ <'Extracting %s requires the %s command, which is not available'>)} {(DQ ($ Id.VSub_DollarName pkg))} {(DQ ($ Id.VSub_DollarName cat_cmd))} ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: extract_ar_deb_data body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'pkg='> (DQ ($ Id.VSub_Number 1))}) (C {<local>} {<Id.Lit_VarLike 'tarball='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<ar>} {<-t>} {(DQ ($ Id.VSub_DollarName pkg))}) (C {<grep>} {(DQ <'^data.tar'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName tarball))} arms: [ (case_arm pat_list: [{<data.tar.gz>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cat_cmd='> name:cat_cmd) op: assign_op.Equal rhs: {<zcat>} spids: [8291] ) ] redirects: [] ) ] spids: [8288 8289 8294 -1] ) (case_arm pat_list: [{<data.tar.bz2>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cat_cmd='> name:cat_cmd) op: assign_op.Equal rhs: {<bzcat>} spids: [8300] ) ] redirects: [] ) ] spids: [8297 8298 8303 -1] ) (case_arm pat_list: [{<data.tar.xz>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cat_cmd='> name:cat_cmd) op: assign_op.Equal rhs: {<xzcat>} spids: [8309] ) ] redirects: [] ) ] spids: [8306 8307 8312 -1] ) (case_arm pat_list: [{<data.tar>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cat_cmd='> name:cat_cmd) op: assign_op.Equal rhs: {<cat>} spids: [8318] ) ] redirects: [] ) ] spids: [8315 8316 8321 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<error>} {<1>} {<UNKNOWNDATACOMP>} {(DQ <'Unknown compression type for %s in %s'>)} {(DQ ($ Id.VSub_DollarName tarball))} {(DQ ($ Id.VSub_DollarName pkg))} ) ] spids: [8324 8325 8345 -1] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple words: [{<type>} {($ Id.VSub_DollarName cat_cmd)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Pipeline children: [ (C {<ar>} {<-p>} {(DQ ($ Id.VSub_DollarName pkg))} {(DQ ($ Id.VSub_DollarName tarball))} ) (C {($ Id.VSub_DollarName cat_cmd)}) (C {<tar>} {($ Id.VSub_DollarName EXTRACT_DEB_TAR_OPTIONS)} {<-xf>} {<->}) ] negated: F stderr_indices: [] ) ] spids: [8352 8365] ) ] else_action: [ (C {<error>} {<1>} {<UNPACKCMDUNVL>} {(DQ <'Extracting %s requires the %s command, which is not available'>)} {(DQ ($ Id.VSub_DollarName pkg))} {(DQ ($ Id.VSub_DollarName cat_cmd))} ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: valid_extractor body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'extractor='> (DQ ($ Id.VSub_Number 1))}) (command.ForEach iter_names: [E] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName EXTRACTORS_SUPPORTED)}]) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName extractor))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName E))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [8451 8468] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: choose_extractor body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<extractor>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName EXTRACTOR_OVERRIDE))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'extractor='> name:extractor) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName EXTRACTOR_OVERRIDE))} spids: [8520] ) ] redirects: [] ) ] spids: [8504 8517] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple words: [{<type>} {<dpkg-deb>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'extractor='> name:extractor) op: assign_op.Equal rhs: {(DQ <dpkg-deb>)} spids: [8542] ) ] redirects: [] ) ] spids: [8526 8539] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'extractor='> name:extractor) op: assign_op.Equal rhs: {(DQ <ar>)} spids: [8551] ) ] redirects: [] ) ] redirects: [] ) (C {<info>} {<CHOSENEXTRACTOR>} {(DQ <'Chosen extractor for .deb packages: %s'>)} {(DQ ($ Id.VSub_DollarName extractor))} ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName extractor))} arms: [ (case_arm pat_list: [{<dpkg-deb>}] action: [ (command.ShFunction name: extract_deb_field body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (C {<extract_dpkg_deb_field>} {(DQ ($ Id.VSub_At '@'))}) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: extract_deb_data body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (C {<extract_dpkg_deb_data>} {(DQ ($ Id.VSub_At '@'))}) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) ] spids: [8583 8584 8621 -1] ) (case_arm pat_list: [{<ar>}] action: [ (command.ShFunction name: extract_deb_field body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (C {<extract_ar_deb_field>} {(DQ ($ Id.VSub_At '@'))}) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: extract_deb_data body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (C {<extract_ar_deb_data>} {(DQ ($ Id.VSub_At '@'))}) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) ] spids: [8624 8625 8662 -1] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: extract body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (command.Subshell child: (command.CommandList children: [ (C {<cd>} {(DQ ($ Id.VSub_DollarName TARGET))}) (C {<local>} {<Id.Lit_VarLike 'p='> <0>} {<cat_cmd>}) (command.ForEach iter_names: [pkg] iterable: (for_iter.Words words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<debfor>} {(DQ ($ Id.VSub_At '@'))}) right: <Id.Eof_RParen _> ) } ] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName p)} right: {<Id.Lit_Digits 1>} ) ) ) } spids: [8713] ) ] redirects: [] ) (C {<progress>} {(DQ ($ Id.VSub_DollarName p))} {(DQ ($ Id.VSub_Pound '#'))} {<EXTRACTPKGS>} {(DQ <'Extracting packages'>)} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'packagename='> name: packagename ) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName pkg))}) (C {<sed>} {(SQ <'s,^.*/,,;s,_.*$,,'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) ) } spids: [8743] ) ] redirects: [] ) (C {<info>} {<EXTRACTING>} {(DQ <'Extracting %s...'>)} {(DQ ($ Id.VSub_DollarName packagename))} ) (C {<extract_deb_data>} {(DQ <'./'> ($ Id.VSub_DollarName pkg))}) ] ) redirects: [] ) ] ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: in_target_nofail body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [{($ Id.VSub_DollarName CHROOT_CMD)} {(DQ ($ Id.VSub_At '@'))}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) ] negated: T stderr_indices: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<true>})] spids: [8800 8814] ) ] else_action: [] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: in_target_failmsg body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'code='> (DQ ($ Id.VSub_Number 1))}) (C {<local>} {<Id.Lit_VarLike 'msg='> (DQ ($ Id.VSub_Number 2))}) (C {<local>} {<Id.Lit_VarLike 'arg='> (DQ ($ Id.VSub_Number 3))}) (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>) (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>) (C {<shift>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {($ Id.VSub_DollarName CHROOT_CMD)} {(DQ ($ Id.VSub_At '@'))}) ] negated: T stderr_indices: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<warning>} {(DQ ($ Id.VSub_DollarName code))} {(DQ ($ Id.VSub_DollarName msg))} {(DQ ($ Id.VSub_DollarName arg))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msg='> name:msg) op: assign_op.Equal rhs: {(DQ <'See %s for details'>)} spids: [8904] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-e>} { (DQ ($ Id.VSub_DollarName TARGET) <'/debootstrap/debootstrap.log'> ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'arg='> name:arg) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName TARGET) <'/debootstrap/debootstrap.log'> ) } spids: [8927] ) ] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'pkg='> (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<grep>} {(SQ <'^dpkg: error processing '>)} { (DQ ($ Id.VSub_DollarName TARGET) <'/debootstrap/debootstrap.log'> ) } ) (C {<head>} {<-n>} {<1>}) (C {<sed>} { (SQ < 's/\\(error processing \\)\\(package \\|archive \\)/\\1/' > ) } ) (C {<cut>} {<-d>} {(SQ <' '>)} {<-f>} {<4>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName pkg))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'msg='> name: msg ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName msg) <' (possibly the package '> ($ Id.VSub_DollarName pkg) <' is at fault)'> ) } spids: [8999] ) ] redirects: [] ) ] spids: [8983 8996] ) ] else_action: [] redirects: [] ) ] spids: [8910 8924] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'arg='> name:arg) op: assign_op.Equal rhs: {(DQ <'the log'>)} spids: [9014] ) ] redirects: [] ) ] redirects: [] ) (C {<warning>} {(DQ ($ Id.VSub_DollarName code))} {(DQ ($ Id.VSub_DollarName msg))} {(DQ ($ Id.VSub_DollarName arg))} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [8871 8882] ) ] else_action: [] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: in_target body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<in_target_failmsg>} {<IN_TARGET_FAIL>} {(DQ <'Failure trying to run: %s'>)} {(DQ ($ Id.VSub_DollarName CHROOT_CMD) <' '> ($ Id.VSub_Star '*'))} {(DQ ($ Id.VSub_At '@'))} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: conditional_cp body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} {(DQ ($ Id.VSub_Number 2) <'/'> ($ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-L>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<cat>} {(DQ ($ Id.VSub_Number 1))}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_Number 2) <'/'> ($ Id.VSub_Number 1))} ) ] more_env: [] do_fork: T ) ] spids: [9114 9139] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<cp>} {<-a>} {(DQ ($ Id.VSub_Number 1))} {(DQ ($ Id.VSub_Number 2) <'/'> ($ Id.VSub_Number 1))} ) ] spids: [9156 9169] ) ] else_action: [] redirects: [] ) ] spids: [9094 9111] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: mv_invalid_to body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'm='> (DQ ($ Id.VSub_Number 1))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'm='> name:m) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name m> var_name: m suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<'http:'> <Id.Lit_Slash '/'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<tr>} {(SQ <'/'>)} {(SQ <_>)}) (C {<sed>} {(SQ <'s/_*//'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) ) } spids: [9211] ) ] redirects: [] ) (command.Subshell child: (command.CommandList children: [ (C {<cd>} { (DQ ($ Id.VSub_DollarName TARGET) <'/'> ($ Id.VSub_DollarName APTSTATE) <'/lists'> ) } ) (command.ForEach iter_names: [a] iterable: (for_iter.Words words:[{<debootstrap.invalid_> <Id.Lit_Star '*'>}]) body: (command.DoGroup children: [ (C {<mv>} {(DQ ($ Id.VSub_DollarName a))} { (DQ (${ Id.VSub_Name m) <_> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name a> var_name: a suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <_>} ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] ) redirects: [] ) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: setup_apt_sources body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName TARGET) <'/etc/apt'>)}) (command.ForEach iter_names: [m] iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '@'))}]) body: (command.DoGroup children: [ (C {<local>} {<Id.Lit_VarLike 'cs='> (DQ )}) (command.ForEach iter_names: [c] iterable: (for_iter.Words words: [ { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPONENTS> var_name: COMPONENTS suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {($ Id.VSub_DollarName USE_COMPONENTS)} ) right: <Id.Right_DollarBrace '}'> ) } ] ) body: (command.DoGroup children: [ (C {<local>} {<Id.Lit_VarLike 'path='> (DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/'> ($ Id.VSub_DollarName c) <'/binary-'> ($ Id.VSub_DollarName ARCH) <'/Packages'> ) } ) (C {<local>} {<Id.Lit_VarLike 'pkgdest='> (DQ ($ Id.VSub_DollarName TARGET) <'/'> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {($ Id.VSub_DollarName DLDEST)} {<pkg>} {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName c))} {(DQ ($ Id.VSub_DollarName ARCH))} {(DQ ($ Id.VSub_DollarName m))} {(DQ ($ Id.VSub_DollarName path))} ) right: <Id.Eof_RParen _> ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ ($ Id.VSub_DollarName pkgdest))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'cs='> name: cs ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName cs) <' '> ($ Id.VSub_DollarName c) ) } spids: [9419] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) ] spids: [9404 9417] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName cs))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (C {<echo>} { (DQ <'deb '> ($ Id.VSub_DollarName m) <' '> ($ Id.VSub_DollarName SUITE) ($ Id.VSub_DollarName cs) ) } ) terminator: <Id.Op_Semi _> ) ] spids: [9433 9450] ) ] else_action: [] redirects: [] ) ] ) redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName TARGET) <'/etc/apt/sources.list'>)} ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: setup_etc body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName TARGET) <'/etc'>)}) (C {<conditional_cp>} {<'/etc/resolv.conf'>} {(DQ ($ Id.VSub_DollarName TARGET))}) (C {<conditional_cp>} {<'/etc/hostname'>} {(DQ ($ Id.VSub_DollarName TARGET))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName DLDEST))} {<Id.Lit_Equals '='>} {<apt_dest>} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} {(DQ ($ Id.VSub_DollarName TARGET) <'/etc/apt/sources.list'>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<setup_apt_sources>} {(DQ <'http://debootstrap.invalid/'>)})] spids: [9516 9546] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UMOUNT_DIRS='> name:UMOUNT_DIRS) op: assign_op.Equal rhs: (rhs_word.Empty) spids: [9561] ) ] redirects: [] ) (command.ShFunction name: umount_exit_function body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<realdir>}) (command.ForEach iter_names: [dir] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName UMOUNT_DIRS)}]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'realdir='> name:realdir) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<in_target_nofail>} {<readlink>} {<-f>} {(DQ ($ Id.VSub_DollarName dir))} ) right: <Id.Eof_RParen _> ) ) } spids: [9589] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName realdir))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Subshell child: (command.CommandList children: [ (command.Sentence child: (C {<cd>} {<'/'>}) terminator: <Id.Op_Semi _> ) (C {<umount>} { (DQ ($ Id.VSub_DollarName TARGET) <'/'> (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name realdir> var_name: realdir suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] ) redirects: [] ) (C {<true>}) ] ) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: umount_on_exit body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName UMOUNT_DIRS))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'UMOUNT_DIRS='> name: UMOUNT_DIRS ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName UMOUNT_DIRS) <' '> ($ Id.VSub_Number 1))} spids: [9672] ) ] redirects: [] ) ] spids: [9658 9669] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UMOUNT_DIRS='> name:UMOUNT_DIRS) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} spids: [9683] ) ] redirects: [] ) (C {<on_exit>} {<umount_exit_function>}) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: clear_mtab body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName TARGET) <'/etc/mtab'>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-h>} {(DQ ($ Id.VSub_DollarName TARGET) <'/etc/mtab'>)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName TARGET) <'/etc/mtab'>)})] spids: [9707 9736] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: setup_proc body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName HOST_OS))} arms: [ (case_arm pat_list: [{<Id.Lit_Star '*'> <freebsd> <Id.Lit_Star '*'>}] action: [ (C {<umount_on_exit>} {<'/dev'>}) (C {<umount_on_exit>} {<'/proc'>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{<umount>} {(DQ ($ Id.VSub_DollarName TARGET) <'/proc'>)}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<true>}) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName HOST_OS))} {<Id.Lit_Equals '='>} {<kfreebsd>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<in_target>} {<mount>} {<-t>} {<linprocfs>} {<Id.KW_Proc proc>} {<'/proc'>}) ] spids: [9802 9817] ) ] else_action: [ (C {<mount>} {<-t>} {<linprocfs>} {<Id.KW_Proc proc>} {($ Id.VSub_DollarName TARGET) <'/proc'>} ) ] redirects: [] ) ] spids: [9771 9774 9851 -1] ) (case_arm pat_list: [{<hurd> <Id.Lit_Star '*'>}] action: [ (C {<settrans>} {<-a>} {(DQ ($ Id.VSub_DollarName TARGET) <'/dev'>)} {<'/hurd/firmlink'>} {<'/dev'>} ) (C {<settrans>} {<-a>} {(DQ ($ Id.VSub_DollarName TARGET) <'/servers'>)} {<'/hurd/firmlink'>} {<'/servers'>} ) (C {<settrans>} {<-a>} {(DQ ($ Id.VSub_DollarName TARGET) <'/proc'>)} {<'/hurd/firmlink'>} {<'/proc'>} ) ] spids: [9854 9856 9905 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<umount_on_exit>} {<'/dev/pts'>}) (C {<umount_on_exit>} {<'/dev/shm'>}) (C {<umount_on_exit>} {<'/proc/bus/usb'>}) (C {<umount_on_exit>} {<'/proc'>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{<umount>} {(DQ ($ Id.VSub_DollarName TARGET) <'/proc'>)}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<true>}) ] ) (C {<in_target>} {<mount>} {<-t>} {<Id.KW_Proc proc>} {<Id.KW_Proc proc>} {<'/proc'>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-d>} {(DQ ($ Id.VSub_DollarName TARGET) <'/sys'>)} {<Id.Lit_RBracket ']'>} ) (command.Simple words: [ {<grep>} {<-q>} {(SQ <'[[:space:]]sysfs'>)} {<'/proc/filesystems'>} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<umount_on_exit>} {<'/sys'>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{<umount>} {(DQ ($ Id.VSub_DollarName TARGET) <'/sys'>)}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<true>}) ] ) (C {<in_target>} {<mount>} {<-t>} {<sysfs>} {<sysfs>} {<'/sys'>}) ] spids: [9960 9991] ) ] else_action: [] redirects: [] ) (C {<on_exit>} {<clear_mtab>}) ] spids: [9908 9909 10035 -1] ) ] redirects: [] ) (C {<umount_on_exit>} {<'/lib/init/rw'>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: setup_proc_fakechroot body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<rm>} {<-rf>} {(DQ ($ Id.VSub_DollarName TARGET) <'/proc'>)}) (C {<ln>} {<-s>} {<'/proc'>} {(DQ ($ Id.VSub_DollarName TARGET))}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: setup_devices body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<doing_variant>} {<fakechroot>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<setup_devices_fakechroot>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [10090 10097] ) ] else_action: [] redirects: [] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName HOST_OS))} arms: [ (case_arm pat_list: [{<kfreebsd> <Id.Lit_Star '*'>}] action: [] spids: [10121 10123 10126 -1] ) (case_arm pat_list: [{<freebsd>}] action: [] spids: [10129 10130 10133 -1] ) (case_arm pat_list: [{<hurd> <Id.Lit_Star '*'>}] action: [] spids: [10136 10138 10141 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<setup_devices_simple>})] spids: [10144 10145 10151 -1] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: setup_dynamic_devices body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<doing_variant>} {<fakechroot>}) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})] spids: [10170 10177] ) ] else_action: [] redirects: [] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName HOST_OS))} arms: [ (case_arm pat_list: [{<kfreebsd> <Id.Lit_Star '*'>}] action: [(C {<in_target>} {<mount>} {<-t>} {<devfs>} {<devfs>} {<'/dev'>})] spids: [10198 10200 10215 -1] ) (case_arm pat_list: [{<freebsd>}] action: [ (C {<mount>} {<-t>} {<devfs>} {<devfs>} {($ Id.VSub_DollarName TARGET) <'/dev'>}) ] spids: [10218 10219 10233 -1] ) (case_arm pat_list: [{<hurd> <Id.Lit_Star '*'>}] action: [(C {<in_target>} {<'/usr/lib/hurd/setup-translators'>} {<-k>})] spids: [10236 10238 10251 -1] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: setup_devices_simple body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName TARGET) <'/dev/null'>} {<c>} {<1>} {<3>}) (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName TARGET) <'/dev/zero'>} {<c>} {<1>} {<5>}) (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName TARGET) <'/dev/full'>} {<c>} {<1>} {<7>}) (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName TARGET) <'/dev/random'>} {<c>} {<1>} {<8>}) (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName TARGET) <'/dev/urandom'>} {<c>} {<1>} {<9>}) (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName TARGET) <'/dev/tty'>} {<c>} {<5>} {<0>}) (C {<mkdir>} {($ Id.VSub_DollarName TARGET) <'/dev/pts/'>} {($ Id.VSub_DollarName TARGET) <'/dev/shm/'>} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<mknod>} {<-m>} {<666>} {($ Id.VSub_DollarName TARGET) <'/dev/ptmx'>} {<c>} {<5>} {<2>} ) ] negated: T stderr_indices: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<warning>} {<MKNOD>} { (DQ < 'Could not create /dev/ptmx, falling back to symlink. This chroot will require /dev/pts mounted with ptmxmode=666' > ) } ) (C {<ln>} {<-s>} {<'pts/ptmx'>} {($ Id.VSub_DollarName TARGET) <'/dev/ptmx'>}) ] spids: [10388 10408] ) ] else_action: [] redirects: [] ) (C {<ln>} {<-s>} {<'/proc/self/fd'>} {($ Id.VSub_DollarName TARGET) <'/dev/fd'>}) (C {<ln>} {<-s>} {<'/proc/self/fd/0'>} {($ Id.VSub_DollarName TARGET) <'/dev/stdin'>}) (C {<ln>} {<-s>} {<'/proc/self/fd/1'>} {($ Id.VSub_DollarName TARGET) <'/dev/stdout'>}) (C {<ln>} {<-s>} {<'/proc/self/fd/2'>} {($ Id.VSub_DollarName TARGET) <'/dev/stderr'>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: setup_devices_fakechroot body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<rm>} {<-rf>} {(DQ ($ Id.VSub_DollarName TARGET) <'/dev'>)}) (C {<ln>} {<-s>} {<'/dev'>} {(DQ ($ Id.VSub_DollarName TARGET))}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: setup_dselect_method body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case to_match: {(DQ ($ Id.VSub_Number 1))} arms: [ (case_arm pat_list: [{<apt>}] action: [ (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName TARGET) <'/var/lib/dpkg'>)}) (command.Simple words: [{<echo>} {(DQ <'apt apt'>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName TARGET) <'/var/lib/dpkg/cmethopt'>)} ) ] more_env: [] do_fork: T ) (C {<chmod>} {<644>} {(DQ ($ Id.VSub_DollarName TARGET) <'/var/lib/dpkg/cmethopt'>)}) ] spids: [10523 10524 10561 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<error>} {<1>} {<UNKNOWNDSELECT>} {(DQ <'unknown dselect method'>)})] spids: [10564 10565 10579 -1] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: setup_merged_usr body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName MERGED_USR))} {<Id.Lit_Equals '='>} {(DQ <no>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) terminator: <Id.Op_Semi _> ) ] spids: [10618 10635] ) ] else_action: [] redirects: [] ) (C {<local>} {<link_dir>}) (command.Case to_match: {($ Id.VSub_DollarName ARCH)} arms: [ (case_arm pat_list: [{<hurd-> <Id.Lit_Star '*'>}] action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})] spids: [10658 10660 10666 -1] ) (case_arm pat_list: [{<amd64>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir) op: assign_op.Equal rhs: {(DQ <'lib32 lib64 libx32'>)} spids: [10672] ) ] redirects: [] ) ] spids: [10669 10670 10677 -1] ) (case_arm pat_list: [{<i386>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir) op: assign_op.Equal rhs: {(DQ <'lib64 libx32'>)} spids: [10683] ) ] redirects: [] ) ] spids: [10680 10681 10688 -1] ) (case_arm pat_list: [{<mips>} {<mipsel>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir) op: assign_op.Equal rhs: {(DQ <'lib32 lib64'>)} spids: [10697] ) ] redirects: [] ) ] spids: [10691 10694 10702 -1] ) (case_arm pat_list: [{<mips64> <Id.Lit_Star '*'>} {<mipsn32> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir) op: assign_op.Equal rhs: {(DQ <'lib32 lib64 libo32'>)} spids: [10713] ) ] redirects: [] ) ] spids: [10705 10710 10718 -1] ) (case_arm pat_list: [{<powerpc>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir) op: assign_op.Equal rhs: {(DQ <lib64>)} spids: [10724] ) ] redirects: [] ) ] spids: [10721 10722 10729 -1] ) (case_arm pat_list: [{<ppc64>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir) op: assign_op.Equal rhs: {(DQ <'lib32 lib64'>)} spids: [10735] ) ] redirects: [] ) ] spids: [10732 10733 10740 -1] ) (case_arm pat_list: [{<ppc64el>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir) op: assign_op.Equal rhs: {(DQ <lib64>)} spids: [10746] ) ] redirects: [] ) ] spids: [10743 10744 10751 -1] ) (case_arm pat_list: [{<s390x>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir) op: assign_op.Equal rhs: {(DQ <lib32>)} spids: [10757] ) ] redirects: [] ) ] spids: [10754 10755 10762 -1] ) (case_arm pat_list: [{<sparc>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir) op: assign_op.Equal rhs: {(DQ <lib64>)} spids: [10768] ) ] redirects: [] ) ] spids: [10765 10766 10773 -1] ) (case_arm pat_list: [{<sparc64>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir) op: assign_op.Equal rhs: {(DQ <'lib32 lib64'>)} spids: [10779] ) ] redirects: [] ) ] spids: [10776 10777 10784 -1] ) (case_arm pat_list: [{<x32>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir) op: assign_op.Equal rhs: {(DQ <'lib32 lib64 libx32'>)} spids: [10790] ) ] redirects: [] ) ] spids: [10787 10788 10795 -1] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'link_dir='> name:link_dir) op: assign_op.Equal rhs: {(DQ <'bin sbin lib '> ($ Id.VSub_DollarName link_dir))} spids: [10801] ) ] redirects: [] ) (C {<local>} {<dir>}) (command.ForEach iter_names: [dir] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName link_dir)}]) body: (command.DoGroup children: [ (C {<ln>} {<-s>} {<'usr/'> ($ Id.VSub_DollarName dir)} {($ Id.VSub_DollarName TARGET) <'/'> ($ Id.VSub_DollarName dir)} ) (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName TARGET) <'/usr/'> ($ Id.VSub_DollarName dir)} ) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [(command.Sentence child:(C {<in_path>} {<perl>}) terminator:<Id.Op_Semi _>)] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PKGDETAILS='> name:PKGDETAILS) op: assign_op.Equal rhs: {<pkgdetails_perl>} spids: [10876] ) ] redirects: [] ) (command.ShFunction name: pkgdetails_field body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<perl>} {<-le>} { (SQ <'\n'> < '$unique = shift @ARGV; $field = lc(shift @ARGV); $mirror = shift @ARGV;\n' > <'%fields = map { $_, 0 } @ARGV;\n'> <'$prevpkg = "";\n'> <'while (<STDIN>) {\n'> <'\tchomp;\n'> <'\tnext if (/^ /);\n'> <'\tif (/^([^:]*:)\\s*(.*)$/) {\n'> <'\t\t$f = lc($1); $v = $2;\n'> <'\t\tif ($f eq "package:") {\n'> <'\t\t\t$last = 0;\n'> <'\t\t\t$pkg = $v;\n'> <'\t\t\tif ($pkg ne $prevpkg) {\n'> <'\t\t\t\tprint $output if defined $output;\n'> <'\t\t\t\tif ($unique && defined $output_val) {\n'> <'\t\t\t\t\tdelete $fields{$output_val};\n'> <'\t\t\t\t\t$last = 1 unless keys %fields;\n'> <'\t\t\t\t}\n'> <'\t\t\t\t$prevpkg = $pkg;\n'> <'\t\t\t}\n'> <'\t\t\tundef $output;\n'> <'\t\t\tundef $output_val;\n'> <'\t\t\tlast if $last;\n'> <'\t\t}\n'> <'\t\t$ver = $v if ($f eq "version:");\n'> <'\t\t$arc = $v if ($f eq "architecture:");\n'> <'\t\t$fil = $v if ($f eq "filename:");\n'> < '\t\t$chk = $v if (lc $f eq lc($ENV{DEBOOTSTRAP_CHECKSUM_FIELD}).":");\n' > <'\t\t$siz = $v if ($f eq "size:");\n'> <'\t\t$val = $v if ($f eq $field);\n'> <'\t} elsif (/^$/) {\n'> <'\t\tif (defined $val && defined $fields{$val}) {\n'> <'\t\t\t$output = sprintf "%s %s %s %s %s %s %s",\n'> <'\t\t\t $pkg, $ver, $arc, $mirror, $fil, $chk, $siz;\n'> <'\t\t\t$output_val = $val;\n'> <'\t\t}\n'> <'\t\tundef $val;\n'> <'\t}\n'> <'}\n'> <'print $output if defined $output;\n'> <'delete $fields{$output_val} if $unique && defined $output_val;\n'> <'for $v (keys %fields) {\n'> <'\tprintf ("%s -\\n", $v) if ($unique);\n'> <'}\n'> ) } {(DQ ($ Id.VSub_At '@'))} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: pkgdetails_perl body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_Equals '='>} {(DQ <'WGET%'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (C {<shift>}) terminator: <Id.Op_Semi _> ) (C {<perl>} {<-e>} { (SQ <'\n'> <'$v = 0;\n'> <'$allow_percentage = 0;\n'> <'while (read STDIN, $x, 1) {\n'> <'\tif ($x =~ m/\\s/) {\n'> <'\t\t$allow_percentage = 1;\n'> <'\t} elsif ($allow_percentage and $x =~ m/\\d/) {\n'> <'\t\t$v *= 10;\n'> <'\t\t$v += $x;\n'> <'\t} elsif ($allow_percentage and $x eq "%") {\n'> < '\t\tprintf "P: %d %d%s\\n", int($v / 100.0 * ($ARGV[1] - $ARGV[0]) + $ARGV[0]), $ARGV[2], ($#ARGV == 3 ? " $ARGV[3]" : "");\n' > <'\t\t$v = 0;\n'> <'\t} else {\n'> <'\t\t$v = 0;\n'> <'\t\t$allow_percentage = 0;\n'> <'\t}\n'> <'}'> ) } {(DQ ($ Id.VSub_At '@'))} ) ] spids: [10961 10978] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_Equals '='>} {(DQ <GETDEPS>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (C {<local>} {<Id.Lit_VarLike 'pkgdest='> (DQ ($ Id.VSub_Number 2))}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (C {<shift>}) terminator: <Id.Op_Semi _> ) (C {<shift>}) (command.Pipeline children: [ (command.Simple words: [ {<perl>} {<-e>} { (SQ <'\n'> <'$prevpkg = "";\n'> <'@d = ();\n'> <'while (<STDIN>) {\n'> <'\tchomp;\n'> <'\tif (/^Package: (.*)$/) {\n'> <'\t\t$pkg = $1;\n'> <'\t\tif ($pkg ne $prevpkg) {\n'> <'\t\t\tfor my $d (@d) {\n'> <'\t\t\t\tprint "$d\\n";\n'> <'\t\t\t}\n'> <'\t\t}\n'> <'\t\t$prevpkg = $1;\n'> <'\t\t@d = ();\n'> <'\t}\n'> <'\t$in = 1 if (grep {$_ eq $pkg} @ARGV);\n'> <'\t$in = 0 if (/^$/);\n'> < '\tif ($in and (/^Depends: (.*)$/ or /^Pre-Depends: (.*)$/)) {\n' > <'\t\tfor $d (split /\\s*,\\s*/, $1) {\n'> <'\t\t\t$d =~ s/\\s*[|].*$//;\n'> <'\t\t\t$d =~ s/\\s*[(].*[)]\\s*//;\n'> <'\t\t\t$d =~ s/:.*//;\n'> <'\t\t\tpush @d, $d;\n'> <'\t\t}\n'> <'\t}\n'> <'}\n'> <'for my $d (@d) {\n'> <'\tprint "$d\\n";\n'> <'}'> ) } {(DQ ($ Id.VSub_At '@'))} ] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName pkgdest))} ) ] more_env: [] do_fork: T ) (C {<sort>}) (C {<uniq>}) ] negated: F stderr_indices: [] ) ] spids: [11014 11031] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_Equals '='>} {(DQ <PKGS>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'm='> (DQ ($ Id.VSub_Number 2))}) (C {<local>} {<Id.Lit_VarLike 'p='> (DQ ($ Id.VSub_Number 3))}) (command.Sentence child: (C {<shift>}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (C {<shift>}) terminator: <Id.Op_Semi _> ) (C {<shift>}) (command.Simple words: [ {<pkgdetails_field>} {<1>} {<Package> <Id.Lit_Colon ':'>} {(DQ ($ Id.VSub_DollarName m))} {(DQ ($ Id.VSub_At '@'))} ] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName p))} ) ] more_env: [] do_fork: T ) ] spids: [11102 11119] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_Equals '='>} {(DQ <FIELD>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'f='> (DQ ($ Id.VSub_Number 2))}) (C {<local>} {<Id.Lit_VarLike 'm='> (DQ ($ Id.VSub_Number 3))}) (C {<local>} {<Id.Lit_VarLike 'p='> (DQ ($ Id.VSub_Number 4))}) (command.Sentence child: (C {<shift>}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (C {<shift>}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (C {<shift>}) terminator: <Id.Op_Semi _> ) (C {<shift>}) (command.Simple words: [ {<pkgdetails_field>} {<0>} {(DQ ($ Id.VSub_DollarName f))} {(DQ ($ Id.VSub_DollarName m))} {(DQ ($ Id.VSub_At '@'))} ] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName p))} ) ] more_env: [] do_fork: T ) ] spids: [11169 11186] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_Equals '='>} {(DQ <STANZAS>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (C {<local>} {<Id.Lit_VarLike 'pkgdest='> (DQ ($ Id.VSub_Number 2))}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (C {<shift>}) terminator: <Id.Op_Semi _> ) (C {<shift>}) (command.Simple words: [ {<perl>} {<-e>} { (SQ <'\n'> <'my $accum = "";\n'> <'while (<STDIN>) {\n'> <'\t$accum .= $_;\n'> <'\t$in = 1 if (/^Package: (.*)$/ && grep {$_ eq $1} @ARGV);\n'> <'\tif ($in and /^$/) {\n'> <'\t\tprint $accum;\n'> <'\t\tif (substr($accum, -1) != "\\n") {\n'> <'\t\t\tprint "\\n\\n";\n'> <'\t\t} elsif (substr($accum, -2, 1) != "\\n") {\n'> <'\t\t\tprint "\\n";\n'> <'\t\t}\n'> <'\t\t$in = 0;\n'> <'\t}\n'> <'\t$accum = "" if /^$/;\n'> <'}'> ) } {(DQ ($ Id.VSub_At '@'))} ] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName pkgdest))} ) ] more_env: [] do_fork: T ) ] spids: [11248 11265] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) ] spids: [10866 10873] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ <'/usr/lib/debootstrap/pkgdetails'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PKGDETAILS='> name:PKGDETAILS) op: assign_op.Equal rhs: {(DQ <'/usr/lib/debootstrap/pkgdetails'>)} spids: [11336] ) ] redirects: [] ) ] spids: [11320 11333] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ ($ Id.VSub_DollarName DEBOOTSTRAP_DIR) <'/pkgdetails'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PKGDETAILS='> name:PKGDETAILS) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName DEBOOTSTRAP_DIR) <'/pkgdetails'>)} spids: [11358] ) ] redirects: [] ) ] spids: [11341 11355] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PKGDETAILS='> name:PKGDETAILS) op: assign_op.Equal rhs: {(DQ )} spids: [11367] ) ] redirects: [] ) ] redirects: [] ) (command.ShFunction name: resolve_deps body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'm1='> (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name MIRRORS> var_name: MIRRORS suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<' '> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (C {<local>} {<Id.Lit_VarLike 'PKGS='> (DQ ($ Id.VSub_Star '*'))}) (command.Sentence child: (C {<local>} {<Id.Lit_VarLike 'ALLPKGS='> (DQ ($ Id.VSub_DollarName PKGS))}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (C {<local>} {<Id.Lit_VarLike 'ALLPKGS2='> (DQ )}) terminator: <Id.Op_Semi _> ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName PKGS))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<local>} {<Id.Lit_VarLike 'NEWPKGS='> (DQ )}) (command.ForEach iter_names: [c] iterable: (for_iter.Words words: [ { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPONENTS> var_name: COMPONENTS suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {($ Id.VSub_DollarName USE_COMPONENTS)} ) right: <Id.Right_DollarBrace '}'> ) } ] ) body: (command.DoGroup children: [ (C {<local>} {<Id.Lit_VarLike 'path='> (DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/'> ($ Id.VSub_DollarName c) <'/binary-'> ($ Id.VSub_DollarName ARCH) <'/Packages'> ) } ) (C {<local>} {<Id.Lit_VarLike 'pkgdest='> (DQ ($ Id.VSub_DollarName TARGET) <'/'> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {($ Id.VSub_DollarName DLDEST)} {<pkg>} {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName c))} {(DQ ($ Id.VSub_DollarName ARCH))} {(DQ ($ Id.VSub_DollarName m1))} {(DQ ($ Id.VSub_DollarName path))} ) right: <Id.Eof_RParen _> ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NEWPKGS='> name: NEWPKGS ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName NEWPKGS) <' '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {(DQ ($ Id.VSub_DollarName PKGDETAILS))} {<GETDEPS>} {(DQ ($ Id.VSub_DollarName pkgdest))} {($ Id.VSub_DollarName PKGS)} ) right: <Id.Eof_RParen _> ) ) } spids: [11516] ) ] redirects: [] ) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PKGS='> name:PKGS) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} { (DQ ($ Id.VSub_DollarName PKGS) <' '> ($ Id.VSub_DollarName NEWPKGS) ) } ) (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)}) (C {<sort>}) (C {<uniq>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [11539] ) ] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'REALPKGS='> (DQ )}) (command.ForEach iter_names: [c] iterable: (for_iter.Words words: [ { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPONENTS> var_name: COMPONENTS suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {($ Id.VSub_DollarName USE_COMPONENTS)} ) right: <Id.Right_DollarBrace '}'> ) } ] ) body: (command.DoGroup children: [ (C {<local>} {<Id.Lit_VarLike 'path='> (DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/'> ($ Id.VSub_DollarName c) <'/binary-'> ($ Id.VSub_DollarName ARCH) <'/Packages'> ) } ) (C {<local>} {<Id.Lit_VarLike 'pkgdest='> (DQ ($ Id.VSub_DollarName TARGET) <'/'> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {($ Id.VSub_DollarName DLDEST)} {<pkg>} {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName c))} {(DQ ($ Id.VSub_DollarName ARCH))} {(DQ ($ Id.VSub_DollarName m1))} {(DQ ($ Id.VSub_DollarName path))} ) right: <Id.Eof_RParen _> ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'REALPKGS='> name: REALPKGS ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName REALPKGS) <' '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {(DQ ($ Id.VSub_DollarName PKGDETAILS))} {<PKGS>} {<REAL>} {(DQ ($ Id.VSub_DollarName pkgdest))} {($ Id.VSub_DollarName PKGS)} ) (C {<sed>} {<-n>} {(SQ <'s/ .*REAL.*$//p'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) ) } spids: [11642] ) ] redirects: [] ) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PKGS='> name:PKGS) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName REALPKGS))} spids: [11677] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ALLPKGS2='> name:ALLPKGS2) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} { (DQ ($ Id.VSub_DollarName PKGS) <' '> ($ Id.VSub_DollarName ALLPKGS) ) } ) (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)}) (C {<sort>}) (C {<uniq>}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [11683] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PKGS='> name:PKGS) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<without>} {(DQ ($ Id.VSub_DollarName ALLPKGS2))} {(DQ ($ Id.VSub_DollarName ALLPKGS))} ) right: <Id.Eof_RParen _> ) } spids: [11715] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ALLPKGS='> name:ALLPKGS) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName ALLPKGS2))} spids: [11729] ) ] redirects: [] ) ] ) redirects: [] ) (C {<echo>} {($ Id.VSub_DollarName ALLPKGS)}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: setup_available body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'm1='> (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name MIRRORS> var_name: MIRRORS suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<' '> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ) (command.ForEach iter_names: [c] iterable: (for_iter.Words words: [ { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name COMPONENTS> var_name: COMPONENTS suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {($ Id.VSub_DollarName USE_COMPONENTS)} ) right: <Id.Right_DollarBrace '}'> ) } ] ) body: (command.DoGroup children: [ (C {<local>} {<Id.Lit_VarLike 'path='> (DQ <'dists/'> ($ Id.VSub_DollarName SUITE) <'/'> ($ Id.VSub_DollarName c) <'/binary-'> ($ Id.VSub_DollarName ARCH) <'/Packages'> ) } ) (C {<local>} {<Id.Lit_VarLike 'pkgdest='> (DQ ($ Id.VSub_DollarName TARGET) <'/'> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {($ Id.VSub_DollarName DLDEST)} {<pkg>} {(DQ ($ Id.VSub_DollarName SUITE))} {(DQ ($ Id.VSub_DollarName c))} {(DQ ($ Id.VSub_DollarName ARCH))} {(DQ ($ Id.VSub_DollarName m1))} {(DQ ($ Id.VSub_DollarName path))} ) right: <Id.Eof_RParen _> ) ) } ) (C {(DQ ($ Id.VSub_DollarName PKGDETAILS))} {<STANZAS>} {(DQ ($ Id.VSub_DollarName pkgdest))} {(DQ ($ Id.VSub_At '@'))} ) ] ) redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName TARGET) <'/var/lib/dpkg/available'>)} ) ] ) (command.Pipeline children: [ (command.ForEach iter_names: [pkg] iterable: (for_iter.Args) body: (command.DoGroup children: [(C {<echo>} {(DQ ($ Id.VSub_DollarName pkg) <' install'>)})] ) redirects: [] ) (C {<in_target>} {<dpkg>} {<--set-selections>}) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get_next_predep body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'stanza='> (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<in_target_nofail>} {<dpkg>} {<--predep-package>}) right: <Id.Eof_RParen _> ) ) } ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName stanza))} {<Id.Lit_RBracket ']'>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName stanza))}) (C {<grep>} {(SQ <'^Package:'>)}) (C {<sed>} {(SQ <'s/^Package://; s/^ *//'>)}) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: check_sane_mount body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_Number 1))}) (command.Case to_match: {(DQ ($ Id.VSub_DollarName HOST_OS))} arms: [ (case_arm pat_list: [{<Id.Lit_Star '*'> <freebsd> <Id.Lit_Star '*'>} {<hurd> <Id.Lit_Star '*'>}] action: [] spids: [11995 12001 12004 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<mknod>} {(DQ ($ Id.VSub_Number 1) <'/test-dev-null'>)} {<c>} {<1>} {<3>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.Simple words: [{<echo>} {<test>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_Number 1) <'/test-dev-null'>)} ) ] more_env: [] do_fork: T ) ] negated: T stderr_indices: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<rm>} {<-f>} {(DQ ($ Id.VSub_Number 1) <'/test-dev-null'>)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [12031 12047] ) ] else_action: [] redirects: [] ) (C {<rm>} {<-f>} {(DQ ($ Id.VSub_Number 1) <'/test-dev-null'>)}) ] spids: [12007 12008 12078 -1] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SH='> name:SH) op: assign_op.Equal rhs: {<'/bin/sh'>} spids: [12085] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-x>} {($ Id.VSub_DollarName SH)} {<Id.Lit_RBracket ']'>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SH='> name:SH) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<which>} {<sh>}) right: <Id.Backtick_Right '`'> ) } spids: [12099] ) ] redirects: [] ) ] ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_Number 1) <'/test-exec'>)} ) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 12127 stdin_parts: [<'#! '> ($ Id.VSub_DollarName SH) <'\n'> <':\n'>] ) ) ] more_env: [] do_fork: T ) (C {<chmod>} {<Id.Lit_Other '+'> <x>} {(DQ ($ Id.VSub_Number 1) <'/test-exec'>)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [(C {(DQ ($ Id.VSub_Number 1) <'/test-exec'>)})] negated: T stderr_indices: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<rm>} {<-f>} {(DQ ($ Id.VSub_Number 1) <'/test-exec'>)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [12140 12150] ) ] else_action: [] redirects: [] ) (C {<rm>} {<-f>} {(DQ ($ Id.VSub_Number 1) <'/test-exec'>)}) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: read_gpg_status body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'badsig='> name:badsig) op: assign_op.Equal rhs: (rhs_word.Empty) spids: [12197] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'unkkey='> name:unkkey) op: assign_op.Equal rhs: (rhs_word.Empty) spids: [12200] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'validsig='> name:validsig) op: assign_op.Equal rhs: (rhs_word.Empty) spids: [12203] ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<prefix>} {<keyword>} {<keyid>} {<rest>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName prefix))} {<Id.Lit_Equals '='>} {(SQ <'[GNUPG:]'>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.Case to_match: {($ Id.VSub_DollarName keyword)} arms: [ (case_arm pat_list: [{<BADSIG>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'badsig='> name:badsig) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName keyid))} spids: [12251] ) ] redirects: [] ) ] spids: [12248 12249 12256 -1] ) (case_arm pat_list: [{<NO_PUBKEY>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'unkkey='> name:unkkey) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName keyid))} spids: [12262] ) ] redirects: [] ) ] spids: [12259 12260 12267 -1] ) (case_arm pat_list: [{<VALIDSIG>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'validsig='> name: validsig ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName keyid))} spids: [12273] ) ] redirects: [] ) ] spids: [12270 12271 12278 -1] ) ] redirects: [] ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName validsig))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<info>} {<VALIDRELSIG>} {(DQ <'Valid Release signature (key id %s)'>)} {(DQ ($ Id.VSub_DollarName validsig))} ) ] spids: [12287 12298] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName badsig))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<error>} {<1>} {<BADRELSIG>} {(DQ <'Invalid Release signature (key id %s)'>)} {(DQ ($ Id.VSub_DollarName badsig))} ) ] spids: [12314 12325] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName unkkey))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<error>} {<1>} {<UNKNOWNRELSIG>} {(DQ <'Release signed by unknown key (key id %s)'>)} {(DQ ($ Id.VSub_DollarName unkkey))} ) ] spids: [12343 12354] ) ] else_action: [ (C {<error>} {<1>} {<SIGCHECK>} {(DQ <'Error executing gpgv to check Release signature'>)}) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: without body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.Subshell child: (command.CommandList children: [ (command.Sentence child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_Number 1)}) (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)}) (C {<sort>}) (C {<uniq>}) ] negated: F stderr_indices: [] ) terminator: <Id.Op_Semi _> ) (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_Number 2)} {($ Id.VSub_Number 2)}) (C {<tr>} {(SQ <' '>)} {(SQ <'\\n'>)}) ] negated: F stderr_indices: [] ) ] ) redirects: [] ) (C {<sort>}) (C {<uniq>} {<-u>}) (C {<tr>} {(SQ <'\\n'>)} {(SQ <' '>)}) ] negated: F stderr_indices: [] ) (C {<echo>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: repeatn body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'n='> (DQ ($ Id.VSub_Number 1))}) (C {<shift>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName n))} {<-gt>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {(DQ ($ Id.VSub_At '@'))}) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)] spids: [12517 12524] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'n='> name:n) op: assign_op.Equal rhs: { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName n)} right: {<Id.Lit_Digits 1>} ) ) ) } spids: [12533] ) ] redirects: [] ) (C {<sleep>} {<1>}) ] redirects: [] ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName n))} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>}) terminator: <Id.Op_Semi _> ) ] spids: [12559 12574] ) ] else_action: [] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'N_EXIT_THINGS='> name:N_EXIT_THINGS) op: assign_op.Equal rhs: {<0>} spids: [12591] ) ] redirects: [] ) (command.ShFunction name: exit_function body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'n='> <0>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName n))} {<-lt>} {(DQ ($ Id.VSub_DollarName N_EXIT_THINGS))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.Subshell child: (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [ {<eval>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval>} {<echo>} { (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <Id.Lit_LBrace '{'> <EXIT_THING_> ($ Id.VSub_DollarName n) <Id.Lit_RBrace '}'> } ) right: <Id.Eof_RParen _> ) } ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<true>}) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'n='> name:n) op: assign_op.Equal rhs: { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName n)} right: {<Id.Lit_Digits 1>} ) ) ) } spids: [12652] ) ] redirects: [] ) ] ) redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'N_EXIT_THINGS='> name:N_EXIT_THINGS) op: assign_op.Equal rhs: {<0>} spids: [12670] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<trap>} {(DQ <exit_function>)} {<0>}) (C {<trap>} {(DQ <'exit 129'>)} {<1>}) (C {<trap>} { (DQ <'error 130 INTERRUPTED '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'Interrupt caught ... exiting'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } {<2>} ) (C {<trap>} {(DQ <'exit 131'>)} {<3>}) (C {<trap>} {(DQ <'exit 143'>)} {<15>}) (command.ShFunction name: on_exit body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<eval>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<echo>} {<EXIT_THING_> (${ Id.VSub_Name N_EXIT_THINGS) <Id.Lit_Equals '='> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ($ Id.VSub_Number 1) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') } ) right: <Id.Backtick_Right '`'> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'N_EXIT_THINGS='> name:N_EXIT_THINGS) op: assign_op.Equal rhs: { (DQ (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName N_EXIT_THINGS)} right: {<Id.Lit_Digits 1>} ) ) ) } spids: [12749] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: install_fakechroot_tools body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName VARIANT))} {<Id.Lit_Equals '='>} {(DQ <fakechroot>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<export>} {<Id.Lit_VarLike 'PATH='> <'/usr/sbin'> <Id.Lit_Colon ':'> <'/sbin'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName PATH) } ) ] spids: [12778 12795] ) ] else_action: [] redirects: [] ) (C {<mv>} {(DQ ($ Id.VSub_DollarName TARGET) <'/sbin/ldconfig'>)} {(DQ ($ Id.VSub_DollarName TARGET) <'/sbin/ldconfig.REAL'>)} ) (command.Simple words: [ {<echo>} { (DQ <'#!/bin/sh\n'> <'echo\n'> <'echo '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <'Warning: Fake ldconfig called, doing nothing'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) ) } ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName TARGET) <'/sbin/ldconfig'>)} ) ] more_env: [] do_fork: T ) (C {<chmod>} {<755>} {(DQ ($ Id.VSub_DollarName TARGET) <'/sbin/ldconfig'>)}) (command.Simple words: [{<echo>} {(DQ <'/sbin/ldconfig\n'> <'/sbin/ldconfig.REAL\n'> <fakechroot>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName TARGET) <'/var/lib/dpkg/diversions'>)} ) ] more_env: [] do_fork: T ) (C {<mv>} {(DQ ($ Id.VSub_DollarName TARGET) <'/usr/bin/ldd'>)} {(DQ ($ Id.VSub_DollarName TARGET) <'/usr/bin/ldd.REAL'>)} ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(SQ <END>)} here_end_span_id: 13060 stdin_parts: [ <'#!/usr/bin/perl\n'> <'\n'> <'# fakeldd\n'> <'#\n'> <'# Replacement for ldd with usage of objdump\n'> <'#\n'> <'# (c) 2003-2005 Piotr Roszatycki <dexter@debian.org>, BSD\n'> <'\n'> <'\n'> <'my %libs = ();\n'> <'\n'> <'my $status = 0;\n'> <'my $dynamic = 0;\n'> <'my $biarch = 0;\n'> <'\n'> <'my $ldlinuxsodir = "/lib";\n'> <'my @ld_library_path = qw(/usr/lib /lib);\n'> <'\n'> <'\n'> <'sub ldso($) {\n'> <'\tmy ($lib) = @_;\n'> <'\tmy @files = ();\n'> <'\n'> <'\tif ($lib =~ /^\\//) {\n'> <'\t $libs{$lib} = $lib;\n'> <'\t push @files, $lib;\n'> <'\t} else {\n'> <'\t foreach my $ld_path (@ld_library_path) {\n'> <'\t\tnext unless -f "$ld_path/$lib";\n'> <'\t\tmy $badformat = 0;\n'> <'\t\topen OBJDUMP, "objdump -p $ld_path/$lib 2>/dev/null |";\n'> <'\t \twhile (my $line = <OBJDUMP>) {\n'> <'\t\t if ($line =~ /file format (\\S*)$/) {\n'> <'\t\t\t\t$badformat = 1 unless $format eq $1;\n'> <'\t\t\t\tlast;\n'> <'\t\t }\n'> <'\t\t}\n'> <'\t\tclose OBJDUMP;\n'> <'\t\tnext if $badformat;\n'> <'\t\t$libs{$lib} = "$ld_path/$lib";\n'> <'\t\tpush @files, "$ld_path/$lib";\n'> <'\t }\n'> <'\t objdump(@files);\n'> <'\t}\n'> <'}\n'> <'\n'> <'\n'> <'sub objdump(@) {\n'> <'\tmy (@files) = @_;\n'> <'\tmy @libs = ();\n'> <'\n'> <'\tforeach my $file (@files) {\n'> <'\t open OBJDUMP, "objdump -p $file 2>/dev/null |";\n'> <'\t while (my $line = <OBJDUMP>) {\n'> <'\t\t$line =~ s/^\\s+//;\n'> <'\t\tmy @f = split (/\\s+/, $line);\n'> <'\t\tif ($line =~ /file format (\\S*)$/) {\n'> <'\t\t if (not $format) {\n'> <'\t\t\t$format = $1;\n'> <'\t\t\tif ($unamearch eq "x86_64" and $format eq "elf32-i386") {\n'> <'\t\t\t my $link = readlink "/lib/ld-linux.so.2";\n'> <'\t\t\t if ($link =~ /^\\/emul\\/ia32-linux\\//) {\n'> <'\t\t\t\t$ld_library_path[-2] = "/emul/ia32-linux/usr/lib";\n'> <'\t\t\t\t$ld_library_path[-1] = "/emul/ia32-linux/lib";\n'> <'\t\t\t }\n'> < '\t\t\t} elsif ($unamearch =~ /^(sparc|sparc64)$/ and $format eq "elf64-sparc") {\n' > <'\t\t\t $ldlinuxsodir = "/lib64";\n'> <'\t\t\t $ld_library_path[-2] = "/usr/lib64";\n'> <'\t\t\t $ld_library_path[-1] = "/lib64";\n'> <'\t\t\t}\n'> <'\t\t } else {\n'> <'\t\t\tnext unless $format eq $1;\n'> <'\t\t }\n'> <'\t\t}\n'> <'\t\tif (not $dynamic and $f[0] eq "Dynamic") {\n'> <'\t\t $dynamic = 1;\n'> <'\t\t}\n'> <'\t\tnext unless $f[0] eq "NEEDED";\n'> <'\t\tif ($f[1] =~ /^ld-linux(\\.|-)/) {\n'> <'\t\t $f[1] = "$ldlinuxsodir/" . $f[1];\n'> <'\t\t}\n'> <'\t\tif (not defined $libs{$f[1]}) {\n'> <'\t\t $libs{$f[1]} = undef;\n'> <'\t\t push @libs, $f[1];\n'> <'\t\t}\n'> <'\t }\n'> <'\t close OBJDUMP;\n'> <'\t}\n'> <'\n'> <'\tforeach my $lib (@libs) {\n'> <'\t ldso($lib);\n'> <'\t}\n'> <'}\n'> <'\n'> <'\n'> <'if ($#ARGV < 0) {\n'> <'\tprint STDERR "fakeldd: missing file arguments\\n";\n'> <'\texit 1;\n'> <'}\n'> <'\n'> <'while ($ARGV[0] =~ /^-/) {\n'> <'\tmy $arg = $ARGV[0];\n'> <'\tshift @ARGV;\n'> <'\tlast if $arg eq "--";\n'> <'}\n'> <'\n'> <'open LD_SO_CONF, "/etc/ld.so.conf";\n'> <'while ($line = <LD_SO_CONF>) {\n'> <'\tchomp $line;\n'> <'\tunshift @ld_library_path, $line;\n'> <'}\n'> <'close LD_SO_CONF;\n'> <'\n'> <'unshift @ld_library_path, split(/:/, $ENV{LD_LIBRARY_PATH});\n'> <'\n'> <'$unamearch = `/bin/uname -m`;\n'> <'chomp $unamearch;\n'> <'\n'> <'foreach my $file (@ARGV) {\n'> <'\tmy $address;\n'> <'\t%libs = ();\n'> <'\t$dynamic = 0;\n'> <'\n'> <'\tif ($#ARGV > 0) {\n'> <'\t\tprint "$file:\\n";\n'> <'\t}\n'> <'\n'> <'\tif (not -f $file) {\n'> <'\t\tprint STDERR "ldd: $file: No such file or directory\\n";\n'> <'\t\t$status = 1;\n'> <'\t\tnext;\n'> <'\t}\n'> <'\n'> <'\tobjdump($file);\n'> <'\n'> <'\tif ($dynamic == 0) {\n'> <'\t\tprint "\\tnot a dynamic executable\\n";\n'> <'\t\t$status = 1;\n'> <'\t} elsif (scalar %libs eq "0") {\n'> <'\t\tprint "\\tstatically linked\\n";\n'> <'\t}\n'> <'\n'> <'\tif ($format =~ /^elf64-/) {\n'> <'\t\t$address = "0x0000000000000000";\n'> <'\t} else {\n'> <'\t\t$address = "0x00000000";\n'> <'\t}\n'> <'\n'> <'\tforeach $lib (keys %libs) {\n'> <'\t\tif ($libs{$lib}) {\n'> <'\t\t\tprintf "\\t%s => %s (%s)\\n", $lib, $libs{$lib}, $address;\n'> <'\t\t} else {\n'> <'\t\t\tprintf "\\t%s => not found\\n", $lib;\n'> <'\t\t}\n'> <'\t}\n'> <'}\n'> <'\n'> <'exit $status;\n'> ] ) ) (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName TARGET) <'/usr/bin/ldd'>)} ) ] more_env: [] do_fork: T ) (C {<chmod>} {<755>} {(DQ ($ Id.VSub_DollarName TARGET) <'/usr/bin/ldd'>)}) (command.Simple words: [{<echo>} {(DQ <'/usr/bin/ldd\n'> <'/usr/bin/ldd.REAL\n'> <fakechroot>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName TARGET) <'/var/lib/dpkg/diversions'>)} ) ] more_env: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) ] )