(List (Com {[LIT_CHARS set]} {[LIT_CHARS -e]} ) (= scope= flags=0 words=[] bindings=[('possibleConfigs', {[Array {OP_NEWLINE "\n"} {[SQ ]} {OP_NEWLINE "\n"} {[DQ [LIT_CHARS /boot/config-][ComSub (Com {[LIT_CHARS uname]} {[LIT_CHARS -r]})]]} {OP_NEWLINE "\n"} {[DQ [LIT_CHARS /usr/src/linux-][ComSub (Com {[LIT_CHARS uname]} {[LIT_CHARS -r]})][LIT_CHARS /.config]]} {OP_NEWLINE "\n"} {[SQ ]} {OP_NEWLINE "\n"}]})]) (Com {[LIT_OTHER ":"]} {[VarSub CONFIG test_op=VS_TEST_COLON_EQUALS {[DQ [VarSub possibleConfigs bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]}]} ) (If (List (Fork (Pipeline! (Com {[LIT_CHARS command]} {[LIT_CHARS -v]} {[LIT_CHARS zgrep]} ) ) ) (Com < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) (FunctionDef zgrep [] (Pipeline (Com {[LIT_CHARS zcat]} {[DQ [VarSub 2]]} ) (Com {[LIT_CHARS grep]} {[DQ [VarSub 1]]} ) ) ) ) (FunctionDef is_set [] (Com {[LIT_CHARS zgrep]} {[DQ [LIT_CHARS CONFIG_][VarSub 1][LIT_CHARS "=[y|m]"]]} {[DQ [VarSub CONFIG]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) (= scope= flags=0 words=[{[LIT_CHARS -A]}] bindings=[('colors', {[Array {OP_NEWLINE "\n"} {[LIT_DBRACKET_LIKE "["] [LIT_CHARS black] [LIT_DBRACKET_LIKE "]="] [LIT_CHARS 30]} {OP_NEWLINE "\n"} {[LIT_DBRACKET_LIKE "["] [LIT_CHARS red] [LIT_DBRACKET_LIKE "]="] [LIT_CHARS 31]} {OP_NEWLINE "\n"} {[LIT_DBRACKET_LIKE "["] [LIT_CHARS green] [LIT_DBRACKET_LIKE "]="] [LIT_CHARS 32]} {OP_NEWLINE "\n"} {[LIT_DBRACKET_LIKE "["] [LIT_CHARS yellow] [LIT_DBRACKET_LIKE "]="] [LIT_CHARS 33]} {OP_NEWLINE "\n"} {[LIT_DBRACKET_LIKE "["] [LIT_CHARS blue] [LIT_DBRACKET_LIKE "]="] [LIT_CHARS 34]} {OP_NEWLINE "\n"} {[LIT_DBRACKET_LIKE "["] [LIT_CHARS magenta] [LIT_DBRACKET_LIKE "]="] [LIT_CHARS 35]} {OP_NEWLINE "\n"} {[LIT_DBRACKET_LIKE "["] [LIT_CHARS cyan] [LIT_DBRACKET_LIKE "]="] [LIT_CHARS 36]} {OP_NEWLINE "\n"} {[LIT_DBRACKET_LIKE "["] [LIT_CHARS white] [LIT_DBRACKET_LIKE "]="] [LIT_CHARS 37]} {OP_NEWLINE "\n"}]})]) (FunctionDef color [] (List (= scope= flags=0 words=[] bindings=[('color', {[Array ]})]) (If (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub 1]]} {[LIT_DBRACKET_LIKE "="]} {[SQ ]} {[LIT_DBRACKET_LIKE "]"]} ) (List (= scope= flags=0 words=[] bindings=[('color+', {[Array {[SQ ]}]})]) (Com {[LIT_CHARS shift]} ) ) ) (If (AndOr OP_AND_IF (Com {[LIT_DBRACKET_LIKE "["]} {[VarSub #]} {[LIT_CHARS -gt]} {[LIT_CHARS 0]} {[LIT_DBRACKET_LIKE "]"]} ) (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub colors bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub 1]}})]]} {[LIT_DBRACKET_LIKE "]"]} ) ) (= scope= flags=0 words=[] bindings=[('color+', {[Array {[DQ [VarSub colors bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub 1]}})]]}]})]) ) (= scope= flags=0 words=[] bindings=[('IFS', {[SQ ]})]) (Com {[LIT_CHARS echo]} {[LIT_CHARS -en]} {[SQ ] [DQ [VarSub color bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_STAR "*"}})]] [LIT_CHARS m]} ) ) ) (FunctionDef wrap_color [] (List (= scope= flags=0 words=[] bindings=[('text', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS shift]} ) (Com {[LIT_CHARS color]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[DQ [VarSub text]]} ) (Com {[LIT_CHARS color]} {[LIT_CHARS reset]} ) (Com {[LIT_CHARS echo]} ) ) ) (FunctionDef wrap_good [] (Com {[LIT_CHARS echo]} {[DQ [ComSub (Com {[LIT_CHARS wrap_color]} {[DQ [VarSub 1]]} {[LIT_CHARS white]})][LIT_CHARS ": "][ComSub (Com {[LIT_CHARS wrap_color]} {[DQ [VarSub 2]]} {[LIT_CHARS green]})]]} ) ) (FunctionDef wrap_bad [] (Com {[LIT_CHARS echo]} {[DQ [ComSub (Com {[LIT_CHARS wrap_color]} {[DQ [VarSub 1]]} {[LIT_CHARS bold]})][LIT_CHARS ": "][ComSub (Com {[LIT_CHARS wrap_color]} {[DQ [VarSub 2]]} {[LIT_CHARS bold]} {[LIT_CHARS red]})]]} ) ) (FunctionDef wrap_warning [] (Com {[LIT_CHARS wrap_color]} {[DQ [VarSub *]]} {[LIT_CHARS red]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) (FunctionDef check_flag [] (If (Com {[LIT_CHARS is_set]} {[DQ [VarSub 1]]} ) (Com {[LIT_CHARS wrap_good]} {[DQ [LIT_CHARS CONFIG_][VarSub 1]]} {[SQ ]} ) (ElseTrue) (Com {[LIT_CHARS wrap_bad]} {[DQ [LIT_CHARS CONFIG_][VarSub 1]]} {[SQ ]} ) ) ) (FunctionDef check_flags [] (For flag [{[DQ [VarSub @]]}]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "- "][ComSub (Com {[LIT_CHARS check_flag]} {[DQ [VarSub flag]]})]]} ) ) ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -e]} {[DQ [VarSub CONFIG]]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS wrap_warning]} {[DQ [LIT_CHARS "warning: "][VarSub CONFIG][LIT_CHARS " does not exist, searching other paths for kernel config..."]]} ) (For tryConfig [{[DQ [VarSub possibleConfigs bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}]) (If (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -e]} {[DQ [VarSub tryConfig]]} {[LIT_DBRACKET_LIKE "]"]} ) (List (= scope= flags=0 words=[] bindings=[('CONFIG', {[DQ [VarSub tryConfig]]})]) (Com {[LIT_CHARS break]} ) ) ) ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -e]} {[DQ [VarSub CONFIG]]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS wrap_warning]} {[DQ [LIT_CHARS "error: cannot find kernel config"]]} ) (Com {[LIT_CHARS wrap_warning]} {[DQ [LIT_CHARS " try running this script again, specifying the kernel config:"]]} ) (Com {[LIT_CHARS wrap_warning]} {[DQ [LIT_CHARS " CONFIG=/path/to/kernel/.config "][VarSub 0]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) ) ) (Com {[LIT_CHARS wrap_color]} {[DQ [LIT_CHARS "info: reading kernel config from "][VarSub CONFIG][LIT_CHARS " ..."]]} {[LIT_CHARS white]} ) (Com {[LIT_CHARS echo]} ) (Com {[LIT_CHARS echo]} {[SQ ]} ) (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[SQ ]} ) (= scope= flags=0 words=[] bindings=[('cgroupSubsystemDir', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS awk]} {[SQ ]} {[LIT_CHARS /proc/mounts]}) (Com {[LIT_CHARS head]} {[LIT_CHARS -n1]}) )]]})]) (= scope= flags=0 words=[] bindings=[('cgroupDir', {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub cgroupSubsystemDir]]})]]})]) (If (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -d]} {[DQ [VarSub cgroupDir][LIT_CHARS /cpu]]} {[LIT_CHARS -o]} {[LIT_CHARS -d]} {[DQ [VarSub cgroupDir][LIT_CHARS /cpuacct]]} {[LIT_CHARS -o]} {[LIT_CHARS -d]} {[DQ [VarSub cgroupDir][LIT_CHARS /cpuset]]} {[LIT_CHARS -o]} {[LIT_CHARS -d]} {[DQ [VarSub cgroupDir][LIT_CHARS /devices]]} {[LIT_CHARS -o]} {[LIT_CHARS -d]} {[DQ [VarSub cgroupDir][LIT_CHARS /freezer]]} {[LIT_CHARS -o]} {[LIT_CHARS -d]} {[DQ [VarSub cgroupDir][LIT_CHARS /memory]]} {[LIT_DBRACKET_LIKE "]"]} ) (Com {[LIT_CHARS echo]} {[DQ [ComSub (Com {[LIT_CHARS wrap_good]} {[SQ ]} {[SQ ]})][LIT_CHARS " ["][VarSub cgroupDir][LIT_CHARS "]"]]} ) (ElseTrue) (List (If (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub cgroupSubsystemDir]]} {[LIT_DBRACKET_LIKE "]"]} ) (Com {[LIT_CHARS echo]} {[DQ [ComSub (Com {[LIT_CHARS wrap_bad]} {[SQ ]} {[SQ ]})][LIT_CHARS " ["][VarSub cgroupSubsystemDir][LIT_CHARS "]"]]} ) (ElseTrue) (Com {[LIT_CHARS echo]} {[DQ [ComSub (Com {[LIT_CHARS wrap_bad]} {[SQ ]} {[SQ ]})]]} ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " "][ComSub (Com {[LIT_CHARS wrap_color]} {[SQ ]} {[LIT_CHARS yellow]})]]} ) ) ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS cat]} {[LIT_CHARS /sys/module/apparmor/parameters/enabled]})]]} {[LIT_DBRACKET_LIKE "="]} {[SQ ]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[SQ ]} ) (If (List (Fork (Com {[LIT_CHARS command]} {[LIT_CHARS -v]} {[LIT_CHARS apparmor_parser]} ) ) (Com < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) (Com {[LIT_CHARS echo]} {[DQ [ComSub (Com {[LIT_CHARS wrap_good]} {[SQ ]} {[SQ ]})]]} ) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[DQ [ComSub (Com {[LIT_CHARS wrap_bad]} {[SQ ]} {[SQ ]})]]} ) (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[SQ ]} ) (If (List (Fork (Com {[LIT_CHARS command]} {[LIT_CHARS -v]} {[LIT_CHARS apt-get]} ) ) (Com < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) (Com {[LIT_CHARS echo]} {[DQ [ComSub (Com {[LIT_CHARS wrap_color]} {[SQ ]})]]} ) (List (Fork (Com {[LIT_CHARS command]} {[LIT_CHARS -v]} {[LIT_CHARS yum]} ) ) (Com < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) (Com {[LIT_CHARS echo]} {[DQ [ComSub (Com {[LIT_CHARS wrap_color]} {[SQ ]})]]} ) (ElseTrue) (Com {[LIT_CHARS echo]} {[DQ [ComSub (Com {[LIT_CHARS wrap_color]} {[SQ ]})]]} ) ) ) ) ) ) (= scope= flags=0 words=[] bindings=[('flags', {[Array {OP_NEWLINE "\n"} {[LIT_CHARS NAMESPACES]} {[LIT_LBRACE "{"] [LIT_CHARS NET] [LIT_COMMA ","] [LIT_CHARS PID] [LIT_COMMA ","] [LIT_CHARS IPC] [LIT_COMMA ","] [LIT_CHARS UTS] [LIT_RBRACE "}"] [LIT_CHARS _NS]} {OP_NEWLINE "\n"} {[LIT_CHARS DEVPTS_MULTIPLE_INSTANCES]} {OP_NEWLINE "\n"} {[LIT_CHARS CGROUPS]} {[LIT_CHARS CGROUP_CPUACCT]} {[LIT_CHARS CGROUP_DEVICE]} {[LIT_CHARS CGROUP_FREEZER]} {[LIT_CHARS CGROUP_SCHED]} {OP_NEWLINE "\n"} {[LIT_CHARS MACVLAN]} {[LIT_CHARS VETH]} {[LIT_CHARS BRIDGE]} {OP_NEWLINE "\n"} {[LIT_CHARS NF_NAT_IPV4]} {[LIT_CHARS IP_NF_FILTER]} {[LIT_CHARS IP_NF_TARGET_MASQUERADE]} {OP_NEWLINE "\n"} {[LIT_CHARS NETFILTER_XT_MATCH_] [LIT_LBRACE "{"] [LIT_CHARS ADDRTYPE] [LIT_COMMA ","] [LIT_CHARS CONNTRACK] [LIT_RBRACE "}"]} {OP_NEWLINE "\n"} {[LIT_CHARS NF_NAT]} {[LIT_CHARS NF_NAT_NEEDED]} {OP_NEWLINE "\n"} {[LIT_CHARS POSIX_MQUEUE]} {OP_NEWLINE "\n"}]})]) (Com {[LIT_CHARS check_flags]} {[DQ [VarSub flags bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} ) (Com {[LIT_CHARS echo]} ) (Com {[LIT_CHARS echo]} {[SQ ]} ) (= scope= flags=0 words=[] bindings=[('flags', {[Array {OP_NEWLINE "\n"} {[LIT_CHARS MEMCG_SWAP]} {OP_NEWLINE "\n"} {[LIT_CHARS RESOURCE_COUNTERS]} {OP_NEWLINE "\n"} {[LIT_CHARS CGROUP_PERF]} {OP_NEWLINE "\n"}]})]) (Com {[LIT_CHARS check_flags]} {[DQ [VarSub flags bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]} ) (Com {[LIT_CHARS echo]} {[SQ ]} ) (Pipeline (List (Com {[LIT_CHARS echo]} {[SQ ] [ComSub (Com {[LIT_CHARS wrap_color]} {[SQ ]} {[LIT_CHARS blue]})] [SQ ]} ) (Pipeline (Com {[LIT_CHARS check_flags]} {[LIT_CHARS AUFS_FS]} ) (Com {[LIT_CHARS sed]} {[SQ ]} ) ) (If (AndOr OP_AND_IF (Pipeline! (Com {[LIT_CHARS is_set]} {[LIT_CHARS AUFS_FS]} ) ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[LIT_CHARS aufs]} {[LIT_CHARS /proc/filesystems]} ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " "][ComSub (Com {[LIT_CHARS wrap_color]} {[SQ ]} {[LIT_CHARS bold]} {[LIT_CHARS black]})]]} ) ) (Pipeline (Com {[LIT_CHARS check_flags]} {[LIT_CHARS EXT4_FS_POSIX_ACL]} {[LIT_CHARS EXT4_FS_SECURITY]} ) (Com {[LIT_CHARS sed]} {[SQ ]} ) ) (Com {[LIT_CHARS echo]} {[SQ ] [ComSub (Com {[LIT_CHARS wrap_color]} {[SQ ]} {[LIT_CHARS blue]})] [SQ ]} ) (Pipeline (Com {[LIT_CHARS check_flags]} {[LIT_CHARS BTRFS_FS]} ) (Com {[LIT_CHARS sed]} {[SQ ]} ) ) (Com {[LIT_CHARS echo]} {[SQ ] [ComSub (Com {[LIT_CHARS wrap_color]} {[SQ ]} {[LIT_CHARS blue]})] [SQ ]} ) (Pipeline (Com {[LIT_CHARS check_flags]} {[LIT_CHARS BLK_DEV_DM]} {[LIT_CHARS DM_THIN_PROVISIONING]} {[LIT_CHARS EXT4_FS]} {[LIT_CHARS EXT4_FS_POSIX_ACL]} {[LIT_CHARS EXT4_FS_SECURITY]} ) (Com {[LIT_CHARS sed]} {[SQ ]} ) ) (Com {[LIT_CHARS echo]} {[SQ ] [ComSub (Com {[LIT_CHARS wrap_color]} {[SQ ]} {[LIT_CHARS blue]})] [SQ ]} ) (Pipeline (Com {[LIT_CHARS check_flags]} {[LIT_CHARS OVERLAY_FS]} ) (Com {[LIT_CHARS sed]} {[SQ ]} ) ) ) (Com {[LIT_CHARS sed]} {[SQ ]} ) ) (Com {[LIT_CHARS echo]} ) )