# To display the perf.data header info, please use --header/--header-only options. # # # Total Lost Samples: 0 # # Samples: 1K of event 'cpu-clock:ppp' # Event count (approx.): 156800000 # # Overhead Samples Command Shared Object Symbol # ........ ............ ....... .................... ...................................................................................................................................................................... # 29.85% 468 osh oils-for-unix [.] MarkSweepHeap::MaybeMarkAndPush(RawObject*) 9.82% 154 osh oils-for-unix [.] MarkSweepHeap::TraceChildren() 5.74% 90 osh oils-for-unix [.] MarkSweepHeap::Sweep() 5.29% 83 osh oils-for-unix [.] MarkSweepHeap::Allocate(unsigned long, int*, int*) 3.25% 51 osh oils-for-unix [.] match::OneToken(types_asdl::lex_mode_e, BigStr*, int) 2.17% 34 osh [kernel.kallsyms] [k] 0xffffffffa04ae7a3 2.04% 32 osh oils-for-unix [.] cmd_parse::CommandParser::_GetWord() 2.04% 32 osh oils-for-unix [.] lexer::LineLexer::Read(types_asdl::lex_mode_e) 1.85% 29 osh oils-for-unix [.] lexer::Lexer::_Read(types_asdl::lex_mode_e) 1.66% 26 osh [kernel.kallsyms] [k] 0xffffffffa13696c7 1.28% 20 osh oils-for-unix [.] alloc::Arena::NewToken(int, int, int, syntax_asdl::SourceLine*) 1.02% 16 osh oils-for-unix [.] word_::CommandId(syntax_asdl::word_t*) 1.02% 16 osh oils-for-unix [.] word_parse::WordParser::_GetToken() 1.02% 16 osh oils-for-unix [.] word_parse::WordParser::_ReadWord(types_asdl::lex_mode_e) 0.77% 12 osh [kernel.kallsyms] [k] 0xffffffffa13eb679 0.77% 12 osh libc.so.6 [.] __getdelim 0.77% 12 osh oils-for-unix [.] List<syntax_asdl::command_t*>::reserve(int) [clone .part.0] 0.77% 12 osh oils-for-unix [.] consts::GetKind(unsigned short) 0.77% 12 osh oils-for-unix [.] lexer::Lexer::Read(types_asdl::lex_mode_e) 0.70% 11 osh oils-for-unix [.] cmd_parse::CommandParser::ParseSimpleCommand() 0.64% 10 osh libc.so.6 [.] malloc 0.64% 10 osh oils-for-unix [.] word_parse::WordParser::_ReadCompoundWord3(types_asdl::lex_mode_e, int, bool) 0.57% 9 osh oils-for-unix [.] cmd_parse::CommandParser::_ScanSimpleCommand() 0.57% 9 osh oils-for-unix [.] word_parse::WordParser::_MaybeReadWordPart(bool, types_asdl::lex_mode_e, List<syntax_asdl::word_part_t*>*) 0.51% 8 osh [kernel.kallsyms] [k] 0xffffffffa083e90b 0.51% 8 osh oils-for-unix [.] List<syntax_asdl::word_part_t*>::reserve(int) [clone .part.0] 0.51% 8 osh oils-for-unix [.] cmd_parse::CommandParser::_ParseCommandTerm() 0.51% 8 osh oils-for-unix [.] process::ChildStateChange::ApplyFromParent(process::Process*) 0.51% 8 osh oils-for-unix [.] word_::StaticEval(syntax_asdl::word_t*) 0.45% 7 osh oils-for-unix [.] List<syntax_asdl::word_t*>::reserve(int) [clone .part.0] 0.45% 7 osh oils-for-unix [.] alloc::Arena::AddLine(BigStr*, int) 0.45% 7 osh oils-for-unix [.] braces::BraceDetect(syntax_asdl::CompoundWord*) 0.38% 6 osh [kernel.kallsyms] [k] 0xffffffffa07a2704 0.38% 6 osh oils-for-unix [.] cmd_parse::CommandParser::ParseCommand() 0.38% 6 osh oils-for-unix [.] cmd_parse::CommandParser::_MaybeExpandAliases(List<syntax_asdl::CompoundWord*>*) 0.38% 6 osh oils-for-unix [.] word_::LiteralId(syntax_asdl::word_part_t*) 0.32% 5 osh oils-for-unix [.] BigStr::slice(int, int) 0.32% 5 osh oils-for-unix [.] List<syntax_asdl::CompoundWord*>::reserve(int) [clone .part.0] 0.32% 5 osh oils-for-unix [.] cmd_parse::_SplitSimpleCommandPrefix(List<syntax_asdl::CompoundWord*>*) 0.32% 5 osh oils-for-unix [.] reader::_Reader::GetLine() 0.32% 5 osh oils-for-unix [.] word_parse::WordParser::ReadWord(types_asdl::lex_mode_e) 0.26% 4 osh [kernel.kallsyms] [k] 0xffffffffa07a2b97 0.26% 4 osh libc.so.6 [.] 0x00000000000a48b0 0.26% 4 osh oils-for-unix [.] List<BigStr*>::reserve(int) [clone .part.0] 0.26% 4 osh oils-for-unix [.] List<int>::reserve(int) [clone .part.0] 0.26% 4 osh oils-for-unix [.] List<syntax_asdl::word_part_t*>* Alloc<List<syntax_asdl::word_part_t*>>() 0.26% 4 osh oils-for-unix [.] cmd_parse::_ReadHereLines(reader::_Reader*, syntax_asdl::Redir*, BigStr*) 0.26% 4 osh oils-for-unix [.] word_::CommandKind(syntax_asdl::word_t*) 0.26% 4 osh oils-for-unix [.] word_::DetectShAssignment(syntax_asdl::CompoundWord*) 0.19% 3 osh [kernel.kallsyms] [k] 0xffffffffa0c1efdd 0.19% 3 osh [kernel.kallsyms] [k] 0xffffffffa13ed040 0.19% 3 osh libc.so.6 [.] cfree 0.19% 3 osh libc.so.6 [.] 0x00000000000a48b4 0.19% 3 osh libc.so.6 [.] 0x00000000001a104a 0.19% 3 osh oils-for-unix [.] BigStr::join(List<BigStr*>*) 0.19% 3 osh oils-for-unix [.] List<int>::at(int) 0.19% 3 osh oils-for-unix [.] List<syntax_asdl::SourceLine*>::append(syntax_asdl::SourceLine*) 0.19% 3 osh oils-for-unix [.] List<syntax_asdl::word_part_t*>::at(int) 0.19% 3 osh oils-for-unix [.] cmd_parse::CommandParser::_Eat(int, BigStr*) 0.19% 3 osh oils-for-unix [.] syntax_asdl::CompoundWord* Alloc<syntax_asdl::CompoundWord, List<syntax_asdl::word_part_t*>*>(List<syntax_asdl::word_part_t*>*&&) 0.19% 3 osh oils-for-unix [.] word_::TildeDetectAll(List<syntax_asdl::word_t*>*) 0.19% 3 osh oils-for-unix [.] word_parse::WordParser::_ReadLikeDQ(syntax_asdl::Token*, bool, List<syntax_asdl::word_part_t*>*) 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffffa07a54ed 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffffa07a557b 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffffa07ad03f 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffffa083bbca 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffffa083e947 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffffa0840255 0.13% 2 osh libc.so.6 [.] isupper 0.13% 2 osh libc.so.6 [.] 0x00000000000a449d 0.13% 2 osh libc.so.6 [.] 0x00000000001992f0 0.13% 2 osh libc.so.6 [.] 0x00000000001993da 0.13% 2 osh libc.so.6 [.] 0x00000000001a0802 0.13% 2 osh libc.so.6 [.] 0x00000000001a0f80 0.13% 2 osh oils-for-unix [.] BigStr::endswith(BigStr*) 0.13% 2 osh oils-for-unix [.] BigStr::slice(int) 0.13% 2 osh oils-for-unix [.] List<BigStr*>* Alloc<List<BigStr*>>() 0.13% 2 osh oils-for-unix [.] List<bool>::at(int) 0.13% 2 osh oils-for-unix [.] List<syntax_asdl::IfArm*>::append(syntax_asdl::IfArm*) 0.13% 2 osh oils-for-unix [.] List<syntax_asdl::command_t*>* NewList<syntax_asdl::command_t*>(std::initializer_list<syntax_asdl::command_t*>) 0.13% 2 osh oils-for-unix [.] braces::BraceDetectAll(List<syntax_asdl::CompoundWord*>*) 0.13% 2 osh oils-for-unix [.] cmd_parse::CommandParser::ParsePipeline() 0.13% 2 osh oils-for-unix [.] lexer::LineLexer::LookAheadOne(types_asdl::lex_mode_e) 0.13% 2 osh oils-for-unix [.] location::LeftTokenForWordPart(syntax_asdl::word_part_t*) 0.13% 2 osh oils-for-unix [.] mylib::CFile::readline() 0.13% 2 osh oils-for-unix [.] shell::Main(BigStr*, args::Reader*, Dict<BigStr*, BigStr*>*, bool, pyutil::_ResourceLoader*, py_readline::Readline*) 0.13% 2 osh oils-for-unix [.] word_::TildeDetect(syntax_asdl::word_t*) 0.13% 2 osh oils-for-unix [.] word_parse::WordParser::_ReadUnquotedLeftParts(syntax_asdl::BoolParamBox*) 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa04ae62e 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa04ae7f1 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa04ae801 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa04ae80a 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa04ae82d 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa05688c0 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa05c5e97 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa0738780 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa075e3e0 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa075e9e7 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa075f905 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07806be 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07827fd 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa078281f 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07992a5 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07a2b76 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07a2b7c 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07a2bda 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07a5362 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07a53b4 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07a53ce 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07a53de 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07a6577 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07a6687 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07a7ef5 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07aa534 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07ad105 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07ad174 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07ad2bd 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07ad6e9 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07ad75e 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07ad79e 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07ad7db 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07b6154 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07b7585 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07c1260 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07c13f2 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07c14fc 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07c405b 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07c40ac 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07cf945 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07d25b6 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07d3151 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07d4330 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07d451f 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07d4a89 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07d4ae4 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07d4af1 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07d5bac 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07d5bd7 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07d67b0 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07d69c4 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07d69ce 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07d7d5f 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07d7f2d 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa07e1ef9 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa0800042 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa0800049 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa0813e58 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa08148f8 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa0814ef8 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa083aa69 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa083aad4 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa083bb19 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa083bf75 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa083d8ed 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa0840273 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa085268c 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa08871d3 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa0a29b45 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa0a2f316 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa0b22f91 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa0b22faa 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa0b6a420 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa0b6fe06 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa134918d 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa1349196 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa1349344 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa1349e76 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa1352731 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa135529b 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa1365b88 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa136d815 0.06% 1 osh [kernel.kallsyms] [k] 0xffffffffa13d718c 0.06% 1 osh ld-linux-x86-64.so.2 [.] 0x0000000000009562 0.06% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000000b377 0.06% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000000b734 0.06% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000000c14e 0.06% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000000d9a7 0.06% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000001132e 0.06% 1 osh ld-linux-x86-64.so.2 [.] 0x00000000000113ca 0.06% 1 osh ld-linux-x86-64.so.2 [.] 0x0000000000027270 0.06% 1 osh libc.so.6 [.] __sbrk 0.06% 1 osh libc.so.6 [.] brk 0.06% 1 osh libc.so.6 [.] 0x0000000000038480 0.06% 1 osh libc.so.6 [.] 0x00000000000a24eb 0.06% 1 osh libc.so.6 [.] 0x00000000000a26b5 0.06% 1 osh libc.so.6 [.] 0x00000000000a26cc 0.06% 1 osh libc.so.6 [.] 0x00000000000a273f 0.06% 1 osh libc.so.6 [.] 0x00000000000a2745 0.06% 1 osh libc.so.6 [.] 0x00000000000a2761 0.06% 1 osh libc.so.6 [.] 0x00000000000a2777 0.06% 1 osh libc.so.6 [.] 0x00000000000a285b 0.06% 1 osh libc.so.6 [.] 0x00000000000a2a1d 0.06% 1 osh libc.so.6 [.] 0x00000000000a39b0 0.06% 1 osh libc.so.6 [.] 0x00000000000a3cfd 0.06% 1 osh libc.so.6 [.] 0x00000000000a3e62 0.06% 1 osh libc.so.6 [.] 0x00000000000a3f41 0.06% 1 osh libc.so.6 [.] 0x00000000000a4081 0.06% 1 osh libc.so.6 [.] 0x00000000000a425e 0.06% 1 osh libc.so.6 [.] 0x00000000000a4271 0.06% 1 osh libc.so.6 [.] 0x00000000000a43c6 0.06% 1 osh libc.so.6 [.] 0x00000000001993bf 0.06% 1 osh libc.so.6 [.] 0x00000000001993d3 0.06% 1 osh libc.so.6 [.] 0x0000000000199de2 0.06% 1 osh libc.so.6 [.] 0x0000000000199de8 0.06% 1 osh libc.so.6 [.] 0x00000000001a07f8 0.06% 1 osh libc.so.6 [.] 0x00000000001a0808 0.06% 1 osh libc.so.6 [.] 0x00000000001a0821 0.06% 1 osh libc.so.6 [.] 0x00000000001a0826 0.06% 1 osh libc.so.6 [.] 0x00000000001a0872 0.06% 1 osh libc.so.6 [.] 0x00000000001a0fa4 0.06% 1 osh libc.so.6 [.] 0x00000000001a0fe3 0.06% 1 osh libc.so.6 [.] 0x00000000001a106d 0.06% 1 osh libreadline.so.8.1 [.] _rl_set_insert_mode 0.06% 1 osh libreadline.so.8.1 [.] rl_parse_and_bind 0.06% 1 osh oils-for-unix [.] BigStr::at(int) 0.06% 1 osh oils-for-unix [.] Dict<int, int>::set(int, int) 0.06% 1 osh oils-for-unix [.] List<Tuple2<int, int>*>::append(Tuple2<int, int>*) 0.06% 1 osh oils-for-unix [.] List<int>* Alloc<List<int>>() 0.06% 1 osh oils-for-unix [.] List<int>* NewList<int>(std::initializer_list<int>) 0.06% 1 osh oils-for-unix [.] List<syntax_asdl::CompoundWord*>::at(int) 0.06% 1 osh oils-for-unix [.] List<syntax_asdl::IfArm*>* Alloc<List<syntax_asdl::IfArm*>>() 0.06% 1 osh oils-for-unix [.] List<syntax_asdl::Redir*>* Alloc<List<syntax_asdl::Redir*>>() 0.06% 1 osh oils-for-unix [.] List<syntax_asdl::Redir*>::reserve(int) [clone .part.0] 0.06% 1 osh oils-for-unix [.] List<syntax_asdl::Token*>* Alloc<List<syntax_asdl::Token*>>() 0.06% 1 osh oils-for-unix [.] List<syntax_asdl::Token*>::extend(List<syntax_asdl::Token*>*) 0.06% 1 osh oils-for-unix [.] List<syntax_asdl::word_part_t*>::slice(int, int) 0.06% 1 osh oils-for-unix [.] StripAny(BigStr*, StripWhere, int) 0.06% 1 osh oils-for-unix [.] Tuple2<syntax_asdl::SourceLine*, int>* Alloc<Tuple2<syntax_asdl::SourceLine*, int>, syntax_asdl::SourceLine*&, int&>(syntax_asdl::SourceLine*&, int&) 0.06% 1 osh oils-for-unix [.] cmd_parse::CommandParser::ParseCompoundCommand() 0.06% 1 osh oils-for-unix [.] cmd_parse::CommandParser::ParseDoGroup() 0.06% 1 osh oils-for-unix [.] cmd_parse::CommandParser::ParseIf() 0.06% 1 osh oils-for-unix [.] cmd_parse::CommandParser::ParseRedirect() 0.06% 1 osh oils-for-unix [.] cmd_parse::CommandParser::ParseSubshell() 0.06% 1 osh oils-for-unix [.] cmd_parse::CommandParser::_ParseElifElse(syntax_asdl::command__If*) 0.06% 1 osh oils-for-unix [.] cmd_parse::_AppendMoreEnv(List<syntax_asdl::ParsedAssignment*>*, List<syntax_asdl::EnvPair*>*) 0.06% 1 osh oils-for-unix [.] cmd_parse::_MakeAssignPair(parse_lib::ParseContext*, syntax_asdl::ParsedAssignment*, alloc::Arena*) 0.06% 1 osh oils-for-unix [.] cmd_parse::_MakeSimpleCommand(List<syntax_asdl::ParsedAssignment*>*, List<syntax_asdl::CompoundWord*>*, syntax_asdl::ArgList*, value_asdl::LiteralBlock*) 0.06% 1 osh oils-for-unix [.] lexer::TokenVal(syntax_asdl::Token*) 0.06% 1 osh oils-for-unix [.] parse_lib::_BaseTrail::SetLatestWords(List<syntax_asdl::CompoundWord*>*, List<syntax_asdl::Redir*>*) 0.06% 1 osh oils-for-unix [.] syntax_asdl::command__CommandList* Alloc<syntax_asdl::command__CommandList, List<syntax_asdl::command_t*>*&>(List<syntax_asdl::command_t*>*&) 0.06% 1 osh oils-for-unix [.] syntax_asdl::redir_loc__Fd* Alloc<syntax_asdl::redir_loc__Fd, int>(int&&) 0.06% 1 osh oils-for-unix [.] void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(char*, char*, std::forward_iterator_tag) [clone .isra.0] 0.06% 1 osh oils-for-unix [.] word_::TildeDetect2(syntax_asdl::CompoundWord*) 0.06% 1 osh oils-for-unix [.] word_::TildeDetectAssign(syntax_asdl::CompoundWord*) 0.06% 1 osh oils-for-unix [.] word_::_EvalWordPart(syntax_asdl::word_part_t*) 0.06% 1 osh oils-for-unix [.] word_compile::EvalSingleQuoted(int, List<syntax_asdl::Token*>*) 0.06% 1 osh oils-for-unix [.] word_parse::WordParser::_ReadDoubleQuoted(syntax_asdl::Token*) # # (Cannot load tips.txt file, please install perf!) #