Posted to tcl by kbk at Thu Sep 08 23:19:40 GMT 2022view pretty

$ strace bin/java -version
execve("bin/java", ["bin/java", "-version"], 0x7ffd210655e8 /* 52 vars */) = 0
brk(NULL)                               = 0x55985e0cc000
arch_prctl(0x3001 /* ARCH_??? */, 0x7fff9d8e6960) = -1 EINVAL (Invalid argument)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa8118ab000
readlink("/proc/self/exe", "/storage/kennykb/Distributions/j"..., 4096) = 52
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli/glibc-hwcaps/x86-64-v3/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli/glibc-hwcaps/x86-64-v3", 0x7fff9d8e5b80, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli/glibc-hwcaps/x86-64-v2/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli/glibc-hwcaps/x86-64-v2", 0x7fff9d8e5b80, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli/tls/haswell/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli/tls/haswell/x86_64", 0x7fff9d8e5b80, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli/tls/haswell/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli/tls/haswell", 0x7fff9d8e5b80, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli/tls/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli/tls/x86_64", 0x7fff9d8e5b80, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli/tls/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli/tls", 0x7fff9d8e5b80, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli/haswell/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli/haswell/x86_64", 0x7fff9d8e5b80, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli/haswell/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli/haswell", 0x7fff9d8e5b80, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli/x86_64", 0x7fff9d8e5b80, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli", {st_mode=S_IFDIR|S_ISGID|0775, st_size=4096, ...}, 0) = 0
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/glibc-hwcaps/x86-64-v3/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/glibc-hwcaps/x86-64-v3", 0x7fff9d8e5b80, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/glibc-hwcaps/x86-64-v2/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/glibc-hwcaps/x86-64-v2", 0x7fff9d8e5b80, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/tls/haswell/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/tls/haswell/x86_64", 0x7fff9d8e5b80, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/tls/haswell/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/tls/haswell", 0x7fff9d8e5b80, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/tls/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/tls/x86_64", 0x7fff9d8e5b80, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/tls/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/tls", 0x7fff9d8e5b80, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/haswell/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/haswell/x86_64", 0x7fff9d8e5b80, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/haswell/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/haswell", 0x7fff9d8e5b80, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/x86_64", 0x7fff9d8e5b80, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64", {st_mode=S_IFDIR|S_ISGID|0775, st_size=4096, ...}, 0) = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=156035, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 156035, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fa811884000
close(3)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=21448, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 16424, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fa81187f000
mmap(0x7fa811880000, 4096, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7fa811880000
mmap(0x7fa811881000, 4096, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fa811881000
mmap(0x7fa811882000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fa811882000
close(3)                                = 0
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli/libjli.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 #\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=108616, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 4289424, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa811467000
mmap(0x7fa811600000, 2192272, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0x7fa811600000
munmap(0x7fa811467000, 1675264)         = 0
munmap(0x7fa811818000, 418704)          = 0
mprotect(0x7fa811617000, 2093056, PROT_NONE) = 0
mmap(0x7fa811816000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x7fa811816000
close(3)                                = 0
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=14432, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 16424, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fa81187a000
mmap(0x7fa81187b000, 4096, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7fa81187b000
mmap(0x7fa81187c000, 4096, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fa81187c000
mmap(0x7fa81187d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fa81187d000
close(3)                                = 0
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/jli/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/bin/../lib/amd64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\237\2\0\0\0\0\0"..., 832) = 832
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
pread64(3, "\4\0\0\0 \0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0"..., 48, 848) = 48
pread64(3, "\4\0\0\0\24\0\0\0\3\0\0\0GNU\0i8\235HZ\227\223\333\350s\360\352,\223\340."..., 68, 896) = 68
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=2216304, ...}, AT_EMPTY_PATH) = 0
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
mmap(NULL, 2260560, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fa8113d8000
mmap(0x7fa811400000, 1658880, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28000) = 0x7fa811400000
mmap(0x7fa811595000, 360448, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1bd000) = 0x7fa811595000
mmap(0x7fa8115ed000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x214000) = 0x7fa8115ed000
mmap(0x7fa8115f3000, 52816, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fa8115f3000
close(3)                                = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa811878000
arch_prctl(ARCH_SET_FS, 0x7fa811879000) = 0
set_tid_address(0x7fa8118792d0)         = 23280
set_robust_list(0x7fa8118792e0, 24)     = 0
rseq(0x7fa8118799a0, 0x20, 0, 0x53053053) = 0
mprotect(0x7fa8115ed000, 16384, PROT_READ) = 0
mprotect(0x7fa81187d000, 4096, PROT_READ) = 0
mprotect(0x7fa811882000, 4096, PROT_READ) = 0
mprotect(0x7fa811816000, 4096, PROT_READ) = 0
mprotect(0x55985da00000, 4096, PROT_READ) = 0
mprotect(0x7fa8118e5000, 8192, PROT_READ) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
munmap(0x7fa811884000, 156035)          = 0
getrandom("\xa4\xd5\xd7\x0c\xaa\x78\x1b\xfd", 8, GRND_NONBLOCK) = 8
brk(NULL)                               = 0x55985e0cc000
brk(0x55985e0ed000)                     = 0x55985e0ed000
readlink("/proc/self/exe", "/storage/kennykb/Distributions/j"..., 4096) = 52
access("/storage/kennykb/Distributions/jre1.8.0_341/lib/amd64/libjava.so", F_OK) = 0
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/lib/amd64/jvm.cfg", O_RDONLY) = 3
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=627, ...}, AT_EMPTY_PATH) = 0
read(3, "# Copyright (c) 2003, 2013, Orac"..., 4096) = 627
read(3, "", 4096)                       = 0
close(3)                                = 0
stat("/storage/kennykb/Distributions/jre1.8.0_341/lib/amd64/server/libjvm.so", {st_mode=S_IFREG|0755, st_size=17119512, ...}) = 0
openat(AT_FDCWD, "/storage/kennykb/Distributions/jre1.8.0_341/lib/amd64/server/libjvm.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\352\37\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=17119512, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 18845472, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa8101df000
mmap(0x7fa810200000, 16748320, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0x7fa810200000
munmap(0x7fa8101df000, 135168)          = 0
munmap(0x7fa8111f9000, 1961760)         = 0
mprotect(0x7fa810ef8000, 2093056, PROT_NONE) = 0
mmap(0x7fa8110f7000, 815104, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xcf7000) = 0x7fa8110f7000
mmap(0x7fa8111be000, 241440, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fa8111be000
close(3)                                = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=156035, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 156035, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fa811884000
close(3)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=940560, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 942344, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fa8112f1000
mmap(0x7fa8112ff000, 507904, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe000) = 0x7fa8112ff000
mmap(0x7fa81137b000, 372736, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8a000) = 0x7fa81137b000
mmap(0x7fa8113d6000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe4000) = 0x7fa8113d6000
close(3)                                = 0
mprotect(0x7fa8113d6000, 4096, PROT_READ) = 0
mprotect(0x7fa8110f7000, 614400, PROT_READ) = 0
getpid()                                = 23280
munmap(0x7fa811884000, 156035)          = 0
getpid()                                = 23280
rt_sigaction(SIGRT_1, {sa_handler=0x7fa8114698f0, sa_mask=[], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7fa81141a520}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
mmap(NULL, 1052672, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fa8100ff000
mprotect(0x7fa810100000, 1048576, PROT_READ|PROT_WRITE) = 0
rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
clone3({flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, child_tid=0x7fa8101ff910, parent_tid=0x7fa8101ff910, exit_signal=0, stack=0x7fa8100ff000, stack_size=0xfff00, tls=0x7fa8101ff640} => {parent_tid=[23281]}, 88) = 23281
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
futex(0x7fa8101ff910, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, 23281, NULL, FUTEX_BITSET_MATCH_ANY) = ?
+++ killed by SIGSEGV (core dumped) +++
Segmentation fault (core dumped)