(command.CommandList children: [ (C {<set>} {<-ex>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_ne left: {($ Id.VSub_Pound '$#')} right: {<2>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} { (DQ <'Usage: '> ($ Id.VSub_Number '$0') <' fuzzer_mode_build_dir no_fuzzer_mode_build_dir'> ) } ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [48 61] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fuzzer_mode_build_dir) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [80] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:no_fuzzer_mode_build_dir) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [83] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<grep>} {<-q>} {(SQ <'^FUZZ:'>)} {(DQ ($ Id.VSub_DollarName '$fuzzer_mode_build_dir') <'/CMakeCache.txt'>)} ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$fuzzer_mode_build_dir') <' was not built with -DFUZZ=1'>)} ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [92 110] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<grep>} {<-q>} {(SQ <'^NO_FUZZER_MODE:'>)} {(DQ ($ Id.VSub_DollarName '$fuzzer_mode_build_dir') <'/CMakeCache.txt'>)} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} { (DQ ($ Id.VSub_DollarName '$fuzzer_mode_build_dir') <' was built with -DNO_FUZZER_MODE=1'> ) } ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [128 144] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<grep>} {<-q>} {(SQ <'^FUZZ:'>)} { (DQ ($ Id.VSub_DollarName '$no_fuzzer_mode_build_dir') <'/CMakeCache.txt'>) } ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} { (DQ ($ Id.VSub_DollarName '$no_fuzzer_mode_build_dir') <' was not built with -DFUZZ=1'> ) } ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [162 180] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<grep>} {<-q>} {(SQ <'^NO_FUZZER_MODE:'>)} { (DQ ($ Id.VSub_DollarName '$no_fuzzer_mode_build_dir') <'/CMakeCache.txt'>) } ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} { (DQ ($ Id.VSub_DollarName '$no_fuzzer_mode_build_dir') <' was not built with -DNO_FUZZER_MODE=1'> ) } ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [198 216] ) ] ) (command.ShFunction name: assert_directory body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.Unary op_id: Id.BoolUnary_d child: {($ Id.VSub_Number '$1')} ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {(DQ ($ Id.VSub_Number '$1') <' not found.'>)}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [246 259] ) ] ) ] ) ) (C {<assert_directory>} {<client_corpus>}) (C {<assert_directory>} {<client_corpus_no_fuzzer_mode>}) (C {<assert_directory>} {<server_corpus>}) (C {<assert_directory>} {<server_corpus_no_fuzzer_mode>}) (C {<assert_directory>} {<dtls_client_corpus>}) (C {<assert_directory>} {<dtls_server_corpus>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fuzzer_mode_shim) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<readlink>} {<-f>} {(DQ ($ Id.VSub_DollarName '$fuzzer_mode_build_dir') <'/ssl/test/bssl_shim'>)} ) ) } spids: [310] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:no_fuzzer_mode_shim) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<readlink>} {<-f>} {(DQ ($ Id.VSub_DollarName '$no_fuzzer_mode_build_dir') <'/ssl/test/bssl_shim'>)} ) ) } spids: [322] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fuzzer_mode_transcripts) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<mktemp>} {<-d>} {(SQ <'/tmp/boringssl-transcript.XXXXXX'>)}) ) } spids: [337] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:no_fuzzer_mode_transcripts) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<mktemp>} {<-d>} {(SQ <'/tmp/boringssl-transcript.XXXXXX'>)}) ) } spids: [348] ) ] ) (C {<echo>} {<Recording>} {<fuzzer-mode>} {<transcripts>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Subshell child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<cd>} {<'../ssl/test/runner/'>}) (C {<go>} {<test>} {<-shim-path>} {(DQ ($ Id.VSub_DollarName '$fuzzer_mode_shim'))} {<-transcript-dir>} {(DQ ($ Id.VSub_DollarName '$fuzzer_mode_transcripts'))} {<-fuzzer>} {<-deterministic>} ) ] ) ) (C {<true>}) ] ) (C {<echo>} {<Recording>} {<non-fuzzer-mode>} {<transcripts>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Subshell child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<cd>} {<'../ssl/test/runner/'>}) (C {<go>} {<test>} {<-shim-path>} {(DQ ($ Id.VSub_DollarName '$no_fuzzer_mode_shim'))} {<-transcript-dir>} {(DQ ($ Id.VSub_DollarName '$no_fuzzer_mode_transcripts'))} {<-deterministic>} ) ] ) ) (C {<true>}) ] ) (command.ShFunction name: minimize_corpus body: (BraceGroup children: [ (C {<local>} {<Id.Lit_VarLike 'fuzzer='> (DQ ($ Id.VSub_Number '$1'))}) (C {<local>} {<Id.Lit_VarLike 'corpus='> (DQ ($ Id.VSub_Number '$2'))}) (C {<echo>} {(DQ <'Minimizing '> (${ Id.VSub_Name corpus))}) (C {<mv>} {(DQ ($ Id.VSub_DollarName '$corpus'))} {(DQ (${ Id.VSub_Name corpus) <_old>)}) (C {<mkdir>} {(DQ ($ Id.VSub_DollarName '$corpus'))}) (C {(DQ ($ Id.VSub_DollarName '$fuzzer'))} {<-max_len> <Id.Lit_Equals '='> <50000>} {<-merge> <Id.Lit_Equals '='> <1>} {(DQ ($ Id.VSub_DollarName '$corpus'))} {(DQ (${ Id.VSub_Name corpus) <_old>)} ) (C {<rm>} {<-Rf>} {(DQ (${ Id.VSub_Name corpus) <_old>)}) ] ) ) (C {<minimize_corpus>} {(DQ ($ Id.VSub_DollarName '$fuzzer_mode_build_dir') <'/fuzz/client'>)} {<client_corpus>} ) (C {<minimize_corpus>} {(DQ ($ Id.VSub_DollarName '$fuzzer_mode_build_dir') <'/fuzz/server'>)} {<server_corpus>} ) (C {<minimize_corpus>} {(DQ ($ Id.VSub_DollarName '$no_fuzzer_mode_build_dir') <'/fuzz/client'>)} {<client_corpus_no_fuzzer_mode>} ) (C {<minimize_corpus>} {(DQ ($ Id.VSub_DollarName '$no_fuzzer_mode_build_dir') <'/fuzz/server'>)} {<server_corpus_no_fuzzer_mode>} ) (C {<minimize_corpus>} {(DQ ($ Id.VSub_DollarName '$fuzzer_mode_build_dir') <'/fuzz/dtls_client'>)} {<dtls_client_corpus>} ) (C {<minimize_corpus>} {(DQ ($ Id.VSub_DollarName '$fuzzer_mode_build_dir') <'/fuzz/dtls_server'>)} {<dtls_server_corpus>} ) (C {(DQ ($ Id.VSub_DollarName '$fuzzer_mode_build_dir') <'/fuzz/client'>)} {<-max_len> <Id.Lit_Equals '='> <50000>} {<-merge> <Id.Lit_Equals '='> <1>} {<client_corpus>} {(DQ (${ Id.VSub_Name fuzzer_mode_transcripts) <'/tls/client'>)} ) (C {(DQ ($ Id.VSub_DollarName '$fuzzer_mode_build_dir') <'/fuzz/server'>)} {<-max_len> <Id.Lit_Equals '='> <50000>} {<-merge> <Id.Lit_Equals '='> <1>} {<server_corpus>} {(DQ (${ Id.VSub_Name fuzzer_mode_transcripts) <'/tls/server'>)} ) (C {(DQ ($ Id.VSub_DollarName '$no_fuzzer_mode_build_dir') <'/fuzz/client'>)} {<-max_len> <Id.Lit_Equals '='> <50000>} {<-merge> <Id.Lit_Equals '='> <1>} {<client_corpus_no_fuzzer_mode>} {(DQ (${ Id.VSub_Name no_fuzzer_mode_transcripts) <'/tls/client'>)} ) (C {(DQ ($ Id.VSub_DollarName '$no_fuzzer_mode_build_dir') <'/fuzz/server'>)} {<-max_len> <Id.Lit_Equals '='> <50000>} {<-merge> <Id.Lit_Equals '='> <1>} {<server_corpus_no_fuzzer_mode>} {(DQ (${ Id.VSub_Name no_fuzzer_mode_transcripts) <'/tls/server'>)} ) (C {(DQ ($ Id.VSub_DollarName '$fuzzer_mode_build_dir') <'/fuzz/dtls_client'>)} {<-max_len> <Id.Lit_Equals '='> <50000>} {<-merge> <Id.Lit_Equals '='> <1>} {<dtls_client_corpus>} {(DQ (${ Id.VSub_Name fuzzer_mode_transcripts) <'/dtls/client'>)} ) (C {(DQ ($ Id.VSub_DollarName '$fuzzer_mode_build_dir') <'/fuzz/dtls_server'>)} {<-max_len> <Id.Lit_Equals '='> <50000>} {<-merge> <Id.Lit_Equals '='> <1>} {<dtls_server_corpus>} {(DQ (${ Id.VSub_Name fuzzer_mode_transcripts) <'/dtls/server'>)} ) ] )