Test results for amd64, phoenix, crypto_aead/lilliputaeii128v11

[Page version: 20250816 20:11:49]

Measurements for amd64, phoenix, crypto_aead Test results for amd64, phoenix, crypto_aead Test results for crypto_aead/lilliputaeii128v11
Computer: phoenix
Microarchitecture: amd64; Zen 4 (a70f41)
Architecture: amd64
CPU ID: AuthenticAMD-00a70f41-178bfbff
SUPERCOP version: 20250415
Operation: crypto_aead
Primitive: lilliputaeii128v11
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
15952417459 0 023628 780 1192T:add_felicsrefgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
17363997403 0 027885 820 1032T:add_felicsrefclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
17494977234 0 025860 820 1096T:add_felicsrefclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
17502465855 0 024428 820 1096T:add_felicsrefclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
18118128045 0 028509 820 1032T:refclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
18260438043 0 028509 820 1032T:add_tweakeyloopclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
18358745959 0 024476 820 1096T:refclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
18513055957 0 024524 820 1096T:add_tweakeyloopclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
18738267731 0 026308 820 1096T:refclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
18812837729 0 026356 820 1096T:add_tweakeyloopclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
22379579343 56 025700 836 1192T:refgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
24232194233 0 018101 820 1032T:add_felicsrefclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
24470164610 0 019084 780 1192T:add_felicsrefgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
24573769679 56 026068 836 1192T:add_tweakeyloopgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
32129594046 0 018974 812 1096T:add_felicsrefclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
33243404728 56 018797 876 1032T:refclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
33277914197 0 018467 772 1096T:add_felicsrefgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
33455204841 56 018933 876 1032T:add_tweakeyloopclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
35947885256 56 019932 836 1192T:refgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
37435815592 56 020300 836 1192T:add_tweakeyloopgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
41553804764 56 019195 828 1096T:refgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
42630183657 0 016455 756 1064T:add_felicsrefgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
49502884116 56 017087 812 1064T:refgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
51291874515 56 019686 868 1096T:add_tweakeyloopclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
51531714384 56 019550 868 1096T:refclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
51979434532 56 018995 828 1096T:add_tweakeyloopgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
65272983766 56 016767 812 1064T:add_tweakeyloopgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
1104938410579 0 031053 820 1032T:add_thresholdclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
120910006314 56 020405 876 1032T:add_thresholdclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
1273659912983 0 031580 820 1096T:add_thresholdclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
1277098814995 0 033644 820 1096T:add_thresholdclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
1284288113390 0 029604 780 1192T:add_thresholdgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
136018108939 0 023524 780 1192T:add_thresholdgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
138470696802 0 021107 772 1096T:add_thresholdgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
1459504910970 56 026150 868 1096T:add_thresholdclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025081520250415
181529926005 0 018847 756 1064T:add_thresholdgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025081520250415

Compiler output


tweakey.c: In file included from tweakey.c:33:
tweakey.c: ./multiplications.h:93:13: warning: unused function '_multiply_MR' [-Wunused-function]
tweakey.c:    93 | static void _multiply_MR(const uint8_t x[LANE_BYTES], uint8_t y[LANE_BYTES])
tweakey.c:       |             ^~~~~~~~~~~~
tweakey.c: ./multiplications.h:105:13: warning: unused function '_multiply_MR2' [-Wunused-function]
tweakey.c:   105 | static void _multiply_MR2(const uint8_t x[LANE_BYTES], uint8_t y[LANE_BYTES])
tweakey.c:       |             ^~~~~~~~~~~~~
tweakey.c: ./multiplications.h:119:13: warning: unused function '_multiply_MR3' [-Wunused-function]
tweakey.c:   119 | static void _multiply_MR3(const uint8_t x[LANE_BYTES], uint8_t y[LANE_BYTES])
tweakey.c:       |             ^~~~~~~~~~~~~
tweakey.c: 3 warnings generated.

Number of similar (implementation,compiler) pairs: 5, namely:
ImplementationCompiler
T:add_felicsrefclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_felicsrefclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_felicsrefclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_felicsrefclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_felicsrefclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))

Compiler output


tweakey.c: In file included from tweakey.c:33:
tweakey.c: multiplications.h:119:13: warning: '_multiply_MR3' defined but not used [-Wunused-function]
tweakey.c:   119 | static void _multiply_MR3(const uint8_t x[LANE_BYTES], uint8_t y[LANE_BYTES])
tweakey.c:       |             ^~~~~~~~~~~~~
tweakey.c: multiplications.h:105:13: warning: '_multiply_MR2' defined but not used [-Wunused-function]
tweakey.c:   105 | static void _multiply_MR2(const uint8_t x[LANE_BYTES], uint8_t y[LANE_BYTES])
tweakey.c:       |             ^~~~~~~~~~~~~
tweakey.c: multiplications.h:93:13: warning: '_multiply_MR' defined but not used [-Wunused-function]
tweakey.c:    93 | static void _multiply_MR(const uint8_t x[LANE_BYTES], uint8_t y[LANE_BYTES])
tweakey.c:       |             ^~~~~~~~~~~~

Number of similar (implementation,compiler) pairs: 4, namely:
ImplementationCompiler
T:add_felicsrefgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_felicsrefgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_felicsrefgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_felicsrefgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)

Compiler output


cipher.c: cipher.c:173:24: warning: '&' within '^' [-Wbitwise-op-parentheses]
cipher.c:   173 |         tmp0 = P[Q[y_hi&3 ^ (y_hi&8)>>1][z_hi]];
cipher.c:       |                    ~~~~^~ ~
cipher.c: cipher.c:173:24: note: place parentheses around the '&' expression to silence this warning
cipher.c:   173 |         tmp0 = P[Q[y_hi&3 ^ (y_hi&8)>>1][z_hi]];
cipher.c:       |                        ^
cipher.c:       |                    (     )
cipher.c: cipher.c:174:24: warning: '&' within '^' [-Wbitwise-op-parentheses]
cipher.c:   174 |         tmp1 = P[Q[z_hi&3 ^ (z_hi&8)>>1][x_hi]];
cipher.c:       |                    ~~~~^~ ~
cipher.c: cipher.c:174:24: note: place parentheses around the '&' expression to silence this warning
cipher.c:   174 |         tmp1 = P[Q[z_hi&3 ^ (z_hi&8)>>1][x_hi]];
cipher.c:       |                        ^
cipher.c:       |                    (     )
cipher.c: cipher.c:175:24: warning: '&' within '^' [-Wbitwise-op-parentheses]
cipher.c:   175 |         tmp2 = P[Q[x_hi&3 ^ (x_hi&8)>>1][y_hi]];
cipher.c:       |                    ~~~~^~ ~
cipher.c: cipher.c:175:24: note: place parentheses around the '&' expression to silence this warning
cipher.c:   175 |         tmp2 = P[Q[x_hi&3 ^ (x_hi&8)>>1][y_hi]];
cipher.c:       |                        ^
cipher.c:       |                    (     )
cipher.c: cipher.c:176:23: warning: '&' within '^' [-Wbitwise-op-parentheses]
cipher.c:   176 |         x_lo ^= Q[tmp1&3 ^ (tmp1&8)>>1][tmp2];
cipher.c:       |                   ~~~~^~ ~
cipher.c: cipher.c:176:23: note: place parentheses around the '&' expression to silence this warning
cipher.c: ...
tweakey.c: tweakey.c:39:13: warning: argument 'TK_Y' of type 'uint8_t[16]' (aka 'unsigned char[16]') with mismatched bound [-Warray-parameter]
tweakey.c:    39 |     uint8_t TK_Y[KEY_BYTES],
tweakey.c:       |             ^
tweakey.c: ./tweakey.h:33:13: note: previously declared as 'uint8_t[32]' (aka 'unsigned char[32]') here
tweakey.c:    33 |     uint8_t TK_Y[TWEAKEY_BYTES],
tweakey.c:       |             ^
tweakey.c: 1 warning generated.

Number of similar (implementation,compiler) pairs: 5, namely:
ImplementationCompiler
T:add_thresholdclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_thresholdclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_thresholdclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_thresholdclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_thresholdclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))

Compiler output


cipher.c: cipher.c: In function '_nonlinear_layer':
cipher.c: cipher.c:173:24: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
cipher.c:   173 |         tmp0 = P[Q[y_hi&3 ^ (y_hi&8)>>1][z_hi]];
cipher.c:       |                    ~~~~^~
cipher.c: cipher.c:174:24: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
cipher.c:   174 |         tmp1 = P[Q[z_hi&3 ^ (z_hi&8)>>1][x_hi]];
cipher.c:       |                    ~~~~^~
cipher.c: cipher.c:175:24: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
cipher.c:   175 |         tmp2 = P[Q[x_hi&3 ^ (x_hi&8)>>1][y_hi]];
cipher.c:       |                    ~~~~^~
cipher.c: cipher.c:176:23: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
cipher.c:   176 |         x_lo ^= Q[tmp1&3 ^ (tmp1&8)>>1][tmp2];
cipher.c:       |                   ~~~~^~
cipher.c: cipher.c:177:23: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
cipher.c:   177 |         y_lo ^= Q[tmp2&3 ^ (tmp2&8)>>1][tmp0];
cipher.c:       |                   ~~~~^~
cipher.c: cipher.c:178:23: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
cipher.c:   178 |         z_lo ^= Q[tmp0&3 ^ (tmp0&8)>>1][tmp1];
cipher.c:       |                   ~~~~^~
tweakey.c: tweakey.c:39:13: warning: argument 2 of type 'uint8_t[16]' {aka 'unsigned char[16]'} with mismatched bound [-Warray-parameter=]
tweakey.c:    39 |     uint8_t TK_Y[KEY_BYTES],
tweakey.c:       |     ~~~~~~~~^~~~~~~~~~~~~~~
tweakey.c: In file included from tweakey.c:29:
tweakey.c: tweakey.h:33:13: note: previously declared as 'uint8_t[32]' {aka 'unsigned char[32]'}
tweakey.c:    33 |     uint8_t TK_Y[TWEAKEY_BYTES],
tweakey.c:       |     ~~~~~~~~^~~~~~~~~~~~~~~~~~~

Number of similar (implementation,compiler) pairs: 4, namely:
ImplementationCompiler
T:add_thresholdgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_thresholdgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_thresholdgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_thresholdgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)

Namespace violations


cipher.o lilliput_tbc_decrypt T
cipher.o lilliput_tbc_encrypt T
lilliput-ii.o lilliput_ae_decrypt T
lilliput-ii.o lilliput_ae_encrypt T
tweakey.o tweakey_state_extract T
tweakey.o tweakey_state_init T
tweakey.o tweakey_state_update T

Number of similar (implementation,compiler) pairs: 27, namely:
ImplementationCompiler
T:add_felicsrefclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_felicsrefclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_felicsrefclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_felicsrefclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_felicsrefclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_felicsrefgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_felicsrefgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_felicsrefgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_felicsrefgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_tweakeyloopclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_tweakeyloopclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_tweakeyloopclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_tweakeyloopclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_tweakeyloopclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_tweakeyloopgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_tweakeyloopgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_tweakeyloopgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_tweakeyloopgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:refclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:refclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:refclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:refclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:refclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:refgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:refgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:refgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:refgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)

Namespace violations


cipher.o lilliput_tbc_decrypt T
cipher.o lilliput_tbc_encrypt T
lilliput-ii.o lilliput_ae_decrypt T
lilliput-ii.o lilliput_ae_encrypt T
random.o randombytes T
tweakey.o tweakey_state_extract T
tweakey.o tweakey_state_init T
tweakey.o tweakey_state_update T

Number of similar (implementation,compiler) pairs: 9, namely:
ImplementationCompiler
T:add_thresholdclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_thresholdclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_thresholdclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_thresholdclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_thresholdclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_thresholdgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_thresholdgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_thresholdgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_thresholdgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)