GCC Code Coverage Report


Directory: ./
File: TESTS/TEST_SOCKET_FLAG/main.cpp
Date: 2025-12-02 14:33:23
Exec Total Coverage
Lines: 43 43 100.0%
Functions: 2 2 100.0%
Branches: 304 304 100.0%

Line Branch Exec Source
1 /***************************************
2 Auteur : Pierre Aubert
3 Mail : pierre.aubert@lapp.in2p3.fr
4 Licence : CeCILL-C
5 ****************************************/
6
7 #include <iostream>
8 #include "data_stream_assert.h"
9 #include "data_stream_check_value.h"
10 #include "PMockBackend.h"
11 #include "PMockBackendFile.h"
12
13 ///test socket flag
14 1 void testSocketFlag(){
15
8/8
✓ Branch 0 (4→5) taken 1 times.
✓ Branch 2 (7→8) taken 1 times.
✓ Branch 4 (10→11) taken 1 times.
✓ Branch 6 (13→14) taken 1 times.
✓ Branch 8 (14→15) taken 1 times.
✓ Branch 10 (17→18) taken 1 times.
✓ Branch 12 (18→19) taken 1 times.
✓ Branch 14 (19→20) taken 1 times.
10 data_stream_assert(checkValue("daemonToString PSendFlag", daemonToString(PSendFlag::BLOCK), std::string("BLOCK")));
16
8/8
✓ Branch 0 (33→34) taken 1 times.
✓ Branch 2 (36→37) taken 1 times.
✓ Branch 4 (39→40) taken 1 times.
✓ Branch 6 (42→43) taken 1 times.
✓ Branch 8 (43→44) taken 1 times.
✓ Branch 10 (46→47) taken 1 times.
✓ Branch 12 (47→48) taken 1 times.
✓ Branch 14 (48→49) taken 1 times.
10 data_stream_assert(checkValue("daemonToString PSendFlag", daemonToString(PSendFlag::NON_BLOCK), std::string("NON_BLOCK")));
17
18
8/8
✓ Branch 0 (62→63) taken 1 times.
✓ Branch 2 (65→66) taken 1 times.
✓ Branch 4 (68→69) taken 1 times.
✓ Branch 6 (71→72) taken 1 times.
✓ Branch 8 (72→73) taken 1 times.
✓ Branch 10 (75→76) taken 1 times.
✓ Branch 12 (76→77) taken 1 times.
✓ Branch 14 (77→78) taken 1 times.
10 data_stream_assert(checkValue("daemonSendFlagFromString PSendFlag", daemonSendFlagFromString("BLOCK"), PSendFlag::BLOCK));
19
8/8
✓ Branch 0 (90→91) taken 1 times.
✓ Branch 2 (93→94) taken 1 times.
✓ Branch 4 (96→97) taken 1 times.
✓ Branch 6 (99→100) taken 1 times.
✓ Branch 8 (100→101) taken 1 times.
✓ Branch 10 (103→104) taken 1 times.
✓ Branch 12 (104→105) taken 1 times.
✓ Branch 14 (105→106) taken 1 times.
10 data_stream_assert(checkValue("daemonSendFlagFromString PSendFlag", daemonSendFlagFromString("NON_BLOCK"), PSendFlag::NON_BLOCK));
20
21
8/8
✓ Branch 0 (118→119) taken 1 times.
✓ Branch 2 (121→122) taken 1 times.
✓ Branch 4 (124→125) taken 1 times.
✓ Branch 6 (127→128) taken 1 times.
✓ Branch 8 (128→129) taken 1 times.
✓ Branch 10 (131→132) taken 1 times.
✓ Branch 12 (132→133) taken 1 times.
✓ Branch 14 (133→134) taken 1 times.
10 data_stream_assert(checkValue("daemonToString PSendStatus", daemonToString(PSendStatus::OK), std::string("OK")));
22
8/8
✓ Branch 0 (147→148) taken 1 times.
✓ Branch 2 (150→151) taken 1 times.
✓ Branch 4 (153→154) taken 1 times.
✓ Branch 6 (156→157) taken 1 times.
✓ Branch 8 (157→158) taken 1 times.
✓ Branch 10 (160→161) taken 1 times.
✓ Branch 12 (161→162) taken 1 times.
✓ Branch 14 (162→163) taken 1 times.
10 data_stream_assert(checkValue("daemonToString PSendStatus", daemonToString(PSendStatus::SOCKET_NOT_AVAILABLE), std::string("SOCKET_NOT_AVAILABLE")));
23
8/8
✓ Branch 0 (176→177) taken 1 times.
✓ Branch 2 (179→180) taken 1 times.
✓ Branch 4 (182→183) taken 1 times.
✓ Branch 6 (185→186) taken 1 times.
✓ Branch 8 (186→187) taken 1 times.
✓ Branch 10 (189→190) taken 1 times.
✓ Branch 12 (190→191) taken 1 times.
✓ Branch 14 (191→192) taken 1 times.
10 data_stream_assert(checkValue("daemonToString PSendStatus", daemonToString(PSendStatus::NO_ROUTE_TO_RECEIVER), std::string("NO_ROUTE_TO_RECEIVER")));
24
8/8
✓ Branch 0 (205→206) taken 1 times.
✓ Branch 2 (208→209) taken 1 times.
✓ Branch 4 (211→212) taken 1 times.
✓ Branch 6 (214→215) taken 1 times.
✓ Branch 8 (215→216) taken 1 times.
✓ Branch 10 (218→219) taken 1 times.
✓ Branch 12 (219→220) taken 1 times.
✓ Branch 14 (220→221) taken 1 times.
10 data_stream_assert(checkValue("daemonToString PSendStatus", daemonToString(PSendStatus::SIGNAL_INTERRUPTION), std::string("SIGNAL_INTERRUPTION")));
25
8/8
✓ Branch 0 (234→235) taken 1 times.
✓ Branch 2 (237→238) taken 1 times.
✓ Branch 4 (240→241) taken 1 times.
✓ Branch 6 (243→244) taken 1 times.
✓ Branch 8 (244→245) taken 1 times.
✓ Branch 10 (247→248) taken 1 times.
✓ Branch 12 (248→249) taken 1 times.
✓ Branch 14 (249→250) taken 1 times.
10 data_stream_assert(checkValue("daemonToString PSendStatus", daemonToString(PSendStatus::BROKEN_BACKEND), std::string("BROKEN_BACKEND")));
26
8/8
✓ Branch 0 (263→264) taken 1 times.
✓ Branch 2 (266→267) taken 1 times.
✓ Branch 4 (269→270) taken 1 times.
✓ Branch 6 (272→273) taken 1 times.
✓ Branch 8 (273→274) taken 1 times.
✓ Branch 10 (276→277) taken 1 times.
✓ Branch 12 (277→278) taken 1 times.
✓ Branch 14 (278→279) taken 1 times.
10 data_stream_assert(checkValue("daemonToString PSendStatus", daemonToString(PSendStatus::BROKEN_SOCKET), std::string("BROKEN_SOCKET")));
27
8/8
✓ Branch 0 (292→293) taken 1 times.
✓ Branch 2 (295→296) taken 1 times.
✓ Branch 4 (298→299) taken 1 times.
✓ Branch 6 (301→302) taken 1 times.
✓ Branch 8 (302→303) taken 1 times.
✓ Branch 10 (305→306) taken 1 times.
✓ Branch 12 (306→307) taken 1 times.
✓ Branch 14 (307→308) taken 1 times.
10 data_stream_assert(checkValue("daemonToString PSendStatus", daemonToString(PSendStatus::CANNOT_SERIALIZE_DATA), std::string("CANNOT_SERIALIZE_DATA")));
28
29
8/8
✓ Branch 0 (321→322) taken 1 times.
✓ Branch 2 (324→325) taken 1 times.
✓ Branch 4 (327→328) taken 1 times.
✓ Branch 6 (330→331) taken 1 times.
✓ Branch 8 (331→332) taken 1 times.
✓ Branch 10 (334→335) taken 1 times.
✓ Branch 12 (335→336) taken 1 times.
✓ Branch 14 (336→337) taken 1 times.
10 data_stream_assert(checkValue("daemonSendStatusFromString PSendStatus", daemonSendStatusFromString("OK"), PSendStatus::OK));
30
8/8
✓ Branch 0 (349→350) taken 1 times.
✓ Branch 2 (352→353) taken 1 times.
✓ Branch 4 (355→356) taken 1 times.
✓ Branch 6 (358→359) taken 1 times.
✓ Branch 8 (359→360) taken 1 times.
✓ Branch 10 (362→363) taken 1 times.
✓ Branch 12 (363→364) taken 1 times.
✓ Branch 14 (364→365) taken 1 times.
10 data_stream_assert(checkValue("daemonSendStatusFromString PSendStatus", daemonSendStatusFromString("SOCKET_NOT_AVAILABLE"), PSendStatus::SOCKET_NOT_AVAILABLE));
31
8/8
✓ Branch 0 (377→378) taken 1 times.
✓ Branch 2 (380→381) taken 1 times.
✓ Branch 4 (383→384) taken 1 times.
✓ Branch 6 (386→387) taken 1 times.
✓ Branch 8 (387→388) taken 1 times.
✓ Branch 10 (390→391) taken 1 times.
✓ Branch 12 (391→392) taken 1 times.
✓ Branch 14 (392→393) taken 1 times.
10 data_stream_assert(checkValue("daemonSendStatusFromString PSendStatus", daemonSendStatusFromString("NO_ROUTE_TO_RECEIVER"), PSendStatus::NO_ROUTE_TO_RECEIVER));
32
8/8
✓ Branch 0 (405→406) taken 1 times.
✓ Branch 2 (408→409) taken 1 times.
✓ Branch 4 (411→412) taken 1 times.
✓ Branch 6 (414→415) taken 1 times.
✓ Branch 8 (415→416) taken 1 times.
✓ Branch 10 (418→419) taken 1 times.
✓ Branch 12 (419→420) taken 1 times.
✓ Branch 14 (420→421) taken 1 times.
10 data_stream_assert(checkValue("daemonSendStatusFromString PSendStatus", daemonSendStatusFromString("SIGNAL_INTERRUPTION"), PSendStatus::SIGNAL_INTERRUPTION));
33
8/8
✓ Branch 0 (433→434) taken 1 times.
✓ Branch 2 (436→437) taken 1 times.
✓ Branch 4 (439→440) taken 1 times.
✓ Branch 6 (442→443) taken 1 times.
✓ Branch 8 (443→444) taken 1 times.
✓ Branch 10 (446→447) taken 1 times.
✓ Branch 12 (447→448) taken 1 times.
✓ Branch 14 (448→449) taken 1 times.
10 data_stream_assert(checkValue("daemonSendStatusFromString PSendStatus", daemonSendStatusFromString("BROKEN_BACKEND"), PSendStatus::BROKEN_BACKEND));
34
8/8
✓ Branch 0 (461→462) taken 1 times.
✓ Branch 2 (464→465) taken 1 times.
✓ Branch 4 (467→468) taken 1 times.
✓ Branch 6 (470→471) taken 1 times.
✓ Branch 8 (471→472) taken 1 times.
✓ Branch 10 (474→475) taken 1 times.
✓ Branch 12 (475→476) taken 1 times.
✓ Branch 14 (476→477) taken 1 times.
10 data_stream_assert(checkValue("daemonSendStatusFromString PSendStatus", daemonSendStatusFromString("BROKEN_SOCKET"), PSendStatus::BROKEN_SOCKET));
35
8/8
✓ Branch 0 (489→490) taken 1 times.
✓ Branch 2 (492→493) taken 1 times.
✓ Branch 4 (495→496) taken 1 times.
✓ Branch 6 (498→499) taken 1 times.
✓ Branch 8 (499→500) taken 1 times.
✓ Branch 10 (502→503) taken 1 times.
✓ Branch 12 (503→504) taken 1 times.
✓ Branch 14 (504→505) taken 1 times.
10 data_stream_assert(checkValue("daemonSendStatusFromString PSendStatus", daemonSendStatusFromString("CANNOT_SERIALIZE_DATA"), PSendStatus::CANNOT_SERIALIZE_DATA));
36
37
8/8
✓ Branch 0 (517→518) taken 1 times.
✓ Branch 2 (520→521) taken 1 times.
✓ Branch 4 (523→524) taken 1 times.
✓ Branch 6 (526→527) taken 1 times.
✓ Branch 8 (527→528) taken 1 times.
✓ Branch 10 (530→531) taken 1 times.
✓ Branch 12 (531→532) taken 1 times.
✓ Branch 14 (532→533) taken 1 times.
10 data_stream_assert(checkValue("daemonToString PRecvFlag", daemonToString(PRecvFlag::BLOCK), std::string("BLOCK")));
38
8/8
✓ Branch 0 (546→547) taken 1 times.
✓ Branch 2 (549→550) taken 1 times.
✓ Branch 4 (552→553) taken 1 times.
✓ Branch 6 (555→556) taken 1 times.
✓ Branch 8 (556→557) taken 1 times.
✓ Branch 10 (559→560) taken 1 times.
✓ Branch 12 (560→561) taken 1 times.
✓ Branch 14 (561→562) taken 1 times.
10 data_stream_assert(checkValue("daemonToString PRecvFlag", daemonToString(PRecvFlag::NON_BLOCK), std::string("NON_BLOCK")));
39
40
8/8
✓ Branch 0 (575→576) taken 1 times.
✓ Branch 2 (578→579) taken 1 times.
✓ Branch 4 (581→582) taken 1 times.
✓ Branch 6 (584→585) taken 1 times.
✓ Branch 8 (585→586) taken 1 times.
✓ Branch 10 (588→589) taken 1 times.
✓ Branch 12 (589→590) taken 1 times.
✓ Branch 14 (590→591) taken 1 times.
10 data_stream_assert(checkValue("daemonRecvFlagFromString PRecvFlag", daemonRecvFlagFromString("BLOCK"), PRecvFlag::BLOCK));
41
8/8
✓ Branch 0 (603→604) taken 1 times.
✓ Branch 2 (606→607) taken 1 times.
✓ Branch 4 (609→610) taken 1 times.
✓ Branch 6 (612→613) taken 1 times.
✓ Branch 8 (613→614) taken 1 times.
✓ Branch 10 (616→617) taken 1 times.
✓ Branch 12 (617→618) taken 1 times.
✓ Branch 14 (618→619) taken 1 times.
10 data_stream_assert(checkValue("daemonRecvFlagFromString PRecvFlag", daemonRecvFlagFromString("NON_BLOCK"), PRecvFlag::NON_BLOCK));
42
43
8/8
✓ Branch 0 (631→632) taken 1 times.
✓ Branch 2 (634→635) taken 1 times.
✓ Branch 4 (637→638) taken 1 times.
✓ Branch 6 (640→641) taken 1 times.
✓ Branch 8 (641→642) taken 1 times.
✓ Branch 10 (644→645) taken 1 times.
✓ Branch 12 (645→646) taken 1 times.
✓ Branch 14 (646→647) taken 1 times.
10 data_stream_assert(checkValue("daemonToString PRecvStatus", daemonToString(PRecvStatus::OK), std::string("OK")));
44
8/8
✓ Branch 0 (660→661) taken 1 times.
✓ Branch 2 (663→664) taken 1 times.
✓ Branch 4 (666→667) taken 1 times.
✓ Branch 6 (669→670) taken 1 times.
✓ Branch 8 (670→671) taken 1 times.
✓ Branch 10 (673→674) taken 1 times.
✓ Branch 12 (674→675) taken 1 times.
✓ Branch 14 (675→676) taken 1 times.
10 data_stream_assert(checkValue("daemonToString PRecvStatus", daemonToString(PRecvStatus::NO_MESSAGE_RECEIVED), std::string("NO_MESSAGE_RECEIVED")));
45
8/8
✓ Branch 0 (689→690) taken 1 times.
✓ Branch 2 (692→693) taken 1 times.
✓ Branch 4 (695→696) taken 1 times.
✓ Branch 6 (698→699) taken 1 times.
✓ Branch 8 (699→700) taken 1 times.
✓ Branch 10 (702→703) taken 1 times.
✓ Branch 12 (703→704) taken 1 times.
✓ Branch 14 (704→705) taken 1 times.
10 data_stream_assert(checkValue("daemonToString PRecvStatus", daemonToString(PRecvStatus::INVALID_MESSAGE), std::string("INVALID_MESSAGE")));
46
8/8
✓ Branch 0 (718→719) taken 1 times.
✓ Branch 2 (721→722) taken 1 times.
✓ Branch 4 (724→725) taken 1 times.
✓ Branch 6 (727→728) taken 1 times.
✓ Branch 8 (728→729) taken 1 times.
✓ Branch 10 (731→732) taken 1 times.
✓ Branch 12 (732→733) taken 1 times.
✓ Branch 14 (733→734) taken 1 times.
10 data_stream_assert(checkValue("daemonToString PRecvStatus", daemonToString(PRecvStatus::SOCKET_NOT_AVAILABLE), std::string("SOCKET_NOT_AVAILABLE")));
47
8/8
✓ Branch 0 (747→748) taken 1 times.
✓ Branch 2 (750→751) taken 1 times.
✓ Branch 4 (753→754) taken 1 times.
✓ Branch 6 (756→757) taken 1 times.
✓ Branch 8 (757→758) taken 1 times.
✓ Branch 10 (760→761) taken 1 times.
✓ Branch 12 (761→762) taken 1 times.
✓ Branch 14 (762→763) taken 1 times.
10 data_stream_assert(checkValue("daemonToString PRecvStatus", daemonToString(PRecvStatus::SIGNAL_INTERRUPTION), std::string("SIGNAL_INTERRUPTION")));
48
8/8
✓ Branch 0 (776→777) taken 1 times.
✓ Branch 2 (779→780) taken 1 times.
✓ Branch 4 (782→783) taken 1 times.
✓ Branch 6 (785→786) taken 1 times.
✓ Branch 8 (786→787) taken 1 times.
✓ Branch 10 (789→790) taken 1 times.
✓ Branch 12 (790→791) taken 1 times.
✓ Branch 14 (791→792) taken 1 times.
10 data_stream_assert(checkValue("daemonToString PRecvStatus", daemonToString(PRecvStatus::BROKEN_BACKEND), std::string("BROKEN_BACKEND")));
49
8/8
✓ Branch 0 (805→806) taken 1 times.
✓ Branch 2 (808→809) taken 1 times.
✓ Branch 4 (811→812) taken 1 times.
✓ Branch 6 (814→815) taken 1 times.
✓ Branch 8 (815→816) taken 1 times.
✓ Branch 10 (818→819) taken 1 times.
✓ Branch 12 (819→820) taken 1 times.
✓ Branch 14 (820→821) taken 1 times.
10 data_stream_assert(checkValue("daemonToString PRecvStatus", daemonToString(PRecvStatus::BROKEN_SOCKET), std::string("BROKEN_SOCKET")));
50
8/8
✓ Branch 0 (834→835) taken 1 times.
✓ Branch 2 (837→838) taken 1 times.
✓ Branch 4 (840→841) taken 1 times.
✓ Branch 6 (843→844) taken 1 times.
✓ Branch 8 (844→845) taken 1 times.
✓ Branch 10 (847→848) taken 1 times.
✓ Branch 12 (848→849) taken 1 times.
✓ Branch 14 (849→850) taken 1 times.
10 data_stream_assert(checkValue("daemonToString PRecvStatus", daemonToString(PRecvStatus::CANNOT_DESERIALIZE_DATA), std::string("CANNOT_DESERIALIZE_DATA")));
51
52
8/8
✓ Branch 0 (863→864) taken 1 times.
✓ Branch 2 (866→867) taken 1 times.
✓ Branch 4 (869→870) taken 1 times.
✓ Branch 6 (872→873) taken 1 times.
✓ Branch 8 (873→874) taken 1 times.
✓ Branch 10 (876→877) taken 1 times.
✓ Branch 12 (877→878) taken 1 times.
✓ Branch 14 (878→879) taken 1 times.
10 data_stream_assert(checkValue("daemonRecvStatusFromString PRecvStatus", daemonRecvStatusFromString("OK"), PRecvStatus::OK));
53
8/8
✓ Branch 0 (891→892) taken 1 times.
✓ Branch 2 (894→895) taken 1 times.
✓ Branch 4 (897→898) taken 1 times.
✓ Branch 6 (900→901) taken 1 times.
✓ Branch 8 (901→902) taken 1 times.
✓ Branch 10 (904→905) taken 1 times.
✓ Branch 12 (905→906) taken 1 times.
✓ Branch 14 (906→907) taken 1 times.
10 data_stream_assert(checkValue("daemonRecvStatusFromString PRecvStatus", daemonRecvStatusFromString("NO_MESSAGE_RECEIVED"), PRecvStatus::NO_MESSAGE_RECEIVED));
54
8/8
✓ Branch 0 (919→920) taken 1 times.
✓ Branch 2 (922→923) taken 1 times.
✓ Branch 4 (925→926) taken 1 times.
✓ Branch 6 (928→929) taken 1 times.
✓ Branch 8 (929→930) taken 1 times.
✓ Branch 10 (932→933) taken 1 times.
✓ Branch 12 (933→934) taken 1 times.
✓ Branch 14 (934→935) taken 1 times.
10 data_stream_assert(checkValue("daemonRecvStatusFromString PRecvStatus", daemonRecvStatusFromString("INVALID_MESSAGE"), PRecvStatus::INVALID_MESSAGE));
55
8/8
✓ Branch 0 (947→948) taken 1 times.
✓ Branch 2 (950→951) taken 1 times.
✓ Branch 4 (953→954) taken 1 times.
✓ Branch 6 (956→957) taken 1 times.
✓ Branch 8 (957→958) taken 1 times.
✓ Branch 10 (960→961) taken 1 times.
✓ Branch 12 (961→962) taken 1 times.
✓ Branch 14 (962→963) taken 1 times.
10 data_stream_assert(checkValue("daemonRecvStatusFromString PRecvStatus", daemonRecvStatusFromString("SOCKET_NOT_AVAILABLE"), PRecvStatus::SOCKET_NOT_AVAILABLE));
56
8/8
✓ Branch 0 (975→976) taken 1 times.
✓ Branch 2 (978→979) taken 1 times.
✓ Branch 4 (981→982) taken 1 times.
✓ Branch 6 (984→985) taken 1 times.
✓ Branch 8 (985→986) taken 1 times.
✓ Branch 10 (988→989) taken 1 times.
✓ Branch 12 (989→990) taken 1 times.
✓ Branch 14 (990→991) taken 1 times.
10 data_stream_assert(checkValue("daemonRecvStatusFromString PRecvStatus", daemonRecvStatusFromString("SIGNAL_INTERRUPTION"), PRecvStatus::SIGNAL_INTERRUPTION));
57
8/8
✓ Branch 0 (1003→1004) taken 1 times.
✓ Branch 2 (1006→1007) taken 1 times.
✓ Branch 4 (1009→1010) taken 1 times.
✓ Branch 6 (1012→1013) taken 1 times.
✓ Branch 8 (1013→1014) taken 1 times.
✓ Branch 10 (1016→1017) taken 1 times.
✓ Branch 12 (1017→1018) taken 1 times.
✓ Branch 14 (1018→1019) taken 1 times.
10 data_stream_assert(checkValue("daemonRecvStatusFromString PRecvStatus", daemonRecvStatusFromString("BROKEN_BACKEND"), PRecvStatus::BROKEN_BACKEND));
58
8/8
✓ Branch 0 (1031→1032) taken 1 times.
✓ Branch 2 (1034→1035) taken 1 times.
✓ Branch 4 (1037→1038) taken 1 times.
✓ Branch 6 (1040→1041) taken 1 times.
✓ Branch 8 (1041→1042) taken 1 times.
✓ Branch 10 (1044→1045) taken 1 times.
✓ Branch 12 (1045→1046) taken 1 times.
✓ Branch 14 (1046→1047) taken 1 times.
10 data_stream_assert(checkValue("daemonRecvStatusFromString PRecvStatus", daemonRecvStatusFromString("BROKEN_SOCKET"), PRecvStatus::BROKEN_SOCKET));
59
8/8
✓ Branch 0 (1059→1060) taken 1 times.
✓ Branch 2 (1062→1063) taken 1 times.
✓ Branch 4 (1065→1066) taken 1 times.
✓ Branch 6 (1068→1069) taken 1 times.
✓ Branch 8 (1069→1070) taken 1 times.
✓ Branch 10 (1072→1073) taken 1 times.
✓ Branch 12 (1073→1074) taken 1 times.
✓ Branch 14 (1074→1075) taken 1 times.
9 data_stream_assert(checkValue("daemonRecvStatusFromString PRecvStatus", daemonRecvStatusFromString("CANNOT_DESERIALIZE_DATA"), PRecvStatus::CANNOT_DESERIALIZE_DATA));
60 1 }
61
62
63 1 int main(int argc, char **argv){
64 1 testSocketFlag();
65 1 return 0;
66 }
67
68