From a5a51f8aaeacfa51fbb6e9881312913f756d03fd Mon Sep 17 00:00:00 2001 From: Brad Arant Date: Sat, 29 Feb 2020 19:27:58 -0800 Subject: [PATCH] Major changes to socket scheduling in EPoll. --- Command.cpp | 14 +- Command.h | 1 + CommandList.cpp | 37 +- CommandList.h | 34 + ConsoleSession.cpp | 33 +- ConsoleSession.h | 2 +- EPoll.cpp | 61 +- EPoll.h | 10 +- INotify.cpp | 58 + INotify.h | 37 + ParseString.h | 49 - Release/.d | 1 - Release/Command.cpp.o.d | 18 - Release/CommandList.cpp.o.d | 21 - Release/ConsoleServer.cpp.o.d | 40 - Release/ConsoleSession.cpp.o.d | 34 - Release/EPoll.cpp.o.d | 29 - Release/Exception.cpp.o.d | 12 - Release/File.cpp.o.d | 7 - Release/Header.cpp.o.d | 11 - Release/IPAddress.cpp.o.d | 7 - Release/Log.cpp.o.d | 40 - Release/Response.cpp.o.d | 12 - Release/Service.cpp.o.d | 27 - Release/Session.cpp.o.d | 27 - Release/Socket.cpp.o.d | 29 - Release/TCPServerSocket.cpp.o.d | 36 - Release/TCPSocket.cpp.o.d | 29 - Release/TLSServerSocket.cpp.o.d | 42 - Release/TLSSession.cpp.o.d | 42 - Release/TerminalSession.cpp.o.d | 27 - Release/Thread.cpp.o.d | 27 - Release/Timer.cpp.o.d | 29 - Release/UDPServerSocket.cpp.o.d | 31 - Release/UDPSocket.cpp.o.d | 18 - Socket.cpp | 155 +- Socket.h | 45 +- TCPServer.cpp | 14 +- TCPServer.h | 5 +- TCPSession.cpp | 55 +- TCPSession.h | 29 +- TCPSocket.cpp | 2 + TCPSocket.h | 1 + TLSSession.cpp | 2 +- TLSSession.h | 2 +- TerminalSession.h | 2 + Thread.cpp | 12 +- Timer.cpp | 2 +- compile | 3 + docs/latex/html/bc_s.png | Bin 0 -> 676 bytes docs/latex/html/bdwn.png | Bin 0 -> 147 bytes docs/latex/html/closed.png | Bin 0 -> 132 bytes docs/latex/html/doc.png | Bin 0 -> 746 bytes docs/latex/html/doxygen.css | 1596 +++++++++++++++++ docs/latex/html/doxygen.png | Bin 0 -> 3779 bytes docs/latex/html/dynsections.js | 97 + docs/latex/html/folderclosed.png | Bin 0 -> 616 bytes docs/latex/html/folderopen.png | Bin 0 -> 597 bytes docs/latex/html/graph_legend.html | 102 ++ docs/latex/html/graph_legend.md5 | 1 + docs/latex/html/graph_legend.png | Bin 0 -> 20374 bytes docs/latex/html/index.html | 73 + docs/latex/html/jquery.js | 87 + docs/latex/html/menu.js | 26 + docs/latex/html/menudata.js | 2 + docs/latex/html/nav_f.png | Bin 0 -> 153 bytes docs/latex/html/nav_g.png | Bin 0 -> 95 bytes docs/latex/html/nav_h.png | Bin 0 -> 98 bytes docs/latex/html/open.png | Bin 0 -> 123 bytes docs/latex/html/search/close.png | Bin 0 -> 273 bytes docs/latex/html/search/mag_sel.png | Bin 0 -> 563 bytes docs/latex/html/search/nomatches.html | 12 + docs/latex/html/search/search.css | 271 +++ docs/latex/html/search/search.js | 791 ++++++++ docs/latex/html/search/search_l.png | Bin 0 -> 604 bytes docs/latex/html/search/search_m.png | Bin 0 -> 158 bytes docs/latex/html/search/search_r.png | Bin 0 -> 612 bytes docs/latex/html/search/searchdata.js | 12 + docs/latex/html/splitbar.png | Bin 0 -> 314 bytes docs/latex/html/sync_off.png | Bin 0 -> 853 bytes docs/latex/html/sync_on.png | Bin 0 -> 845 bytes docs/latex/html/tab_a.png | Bin 0 -> 142 bytes docs/latex/html/tab_b.png | Bin 0 -> 169 bytes docs/latex/html/tab_h.png | Bin 0 -> 177 bytes docs/latex/html/tab_s.png | Bin 0 -> 184 bytes docs/latex/html/tabs.css | 1 + docs/latex/latex/Makefile | 21 + docs/latex/latex/doxygen.sty | 503 ++++++ docs/latex/latex/refman.tex | 151 ++ docs/latex/refman.aux | 294 +-- docs/latex/refman.dvi | Bin 0 -> 26720 bytes docs/latex/refman.idx | 75 - docs/latex/refman.log | 803 +-------- docs/latex/refman.out | 83 +- docs/latex/refman.pdf | Bin 332551 -> 30668 bytes docs/latex/refman.toc | 83 +- html/CommandList_8h_source.html | 82 + html/Command_8h_source.html | 81 + html/ConsoleServer_8h_source.html | 80 + html/ConsoleSession_8h_source.html | 79 + html/EPoll_8h_source.html | 89 + html/INotify_8h_source.html | 77 + html/IPAddressList_8h_source.html | 76 + html/IPAddress_8h_source.html | 79 + html/Object_8h_source.html | 75 + html/SessionFilter_8h_source.html | 77 + html/Socket_8h_source.html | 86 + html/TCPServer_8h_source.html | 92 + html/TCPSession_8h_source.html | 87 + html/TCPSocket_8h_source.html | 79 + html/TLSServer_8h_source.html | 81 + html/TLSSession_8h_source.html | 82 + html/TerminalSession_8h_source.html | 78 + html/Thread_8h_source.html | 78 + html/Timer_8h_source.html | 81 + html/UDPServerSocket_8h_source.html | 79 + html/UDPSocket_8h_source.html | 77 + html/annotated.html | 99 + html/bc_s.png | Bin 0 -> 676 bytes html/bdwn.png | Bin 0 -> 147 bytes html/classcore_1_1Command-members.html | 86 + html/classcore_1_1Command.html | 283 +++ html/classcore_1_1CommandList-members.html | 92 + html/classcore_1_1CommandList.html | 340 ++++ .../classcore_1_1CommandList__coll__graph.map | 4 + .../classcore_1_1CommandList__coll__graph.md5 | 1 + .../classcore_1_1CommandList__coll__graph.png | Bin 0 -> 6222 bytes ...asscore_1_1CommandList__inherit__graph.map | 4 + ...asscore_1_1CommandList__inherit__graph.md5 | 1 + ...asscore_1_1CommandList__inherit__graph.png | Bin 0 -> 6222 bytes html/classcore_1_1Command__coll__graph.map | 3 + html/classcore_1_1Command__coll__graph.md5 | 1 + html/classcore_1_1Command__coll__graph.png | Bin 0 -> 3394 bytes html/classcore_1_1Command__inherit__graph.map | 9 + html/classcore_1_1Command__inherit__graph.md5 | 1 + html/classcore_1_1Command__inherit__graph.png | Bin 0 -> 15218 bytes html/classcore_1_1ConsoleServer-members.html | 131 ++ html/classcore_1_1ConsoleServer.html | 296 +++ ...lasscore_1_1ConsoleServer__coll__graph.map | 12 + ...lasscore_1_1ConsoleServer__coll__graph.md5 | 1 + ...lasscore_1_1ConsoleServer__coll__graph.png | Bin 0 -> 47432 bytes ...score_1_1ConsoleServer__inherit__graph.map | 8 + ...score_1_1ConsoleServer__inherit__graph.md5 | 1 + ...score_1_1ConsoleServer__inherit__graph.png | Bin 0 -> 21528 bytes html/classcore_1_1ConsoleSession-members.html | 138 ++ html/classcore_1_1ConsoleSession.html | 338 ++++ ...asscore_1_1ConsoleSession__coll__graph.map | 14 + ...asscore_1_1ConsoleSession__coll__graph.md5 | 1 + ...asscore_1_1ConsoleSession__coll__graph.png | Bin 0 -> 60415 bytes ...core_1_1ConsoleSession__inherit__graph.map | 8 + ...core_1_1ConsoleSession__inherit__graph.md5 | 1 + ...core_1_1ConsoleSession__inherit__graph.png | Bin 0 -> 14987 bytes html/classcore_1_1EPoll-members.html | 97 + html/classcore_1_1EPoll.html | 454 +++++ html/classcore_1_1EPoll__coll__graph.map | 4 + html/classcore_1_1EPoll__coll__graph.md5 | 1 + html/classcore_1_1EPoll__coll__graph.png | Bin 0 -> 5244 bytes html/classcore_1_1EPoll__inherit__graph.map | 4 + html/classcore_1_1EPoll__inherit__graph.md5 | 1 + html/classcore_1_1EPoll__inherit__graph.png | Bin 0 -> 5244 bytes html/classcore_1_1INotify-members.html | 120 ++ html/classcore_1_1INotify.html | 156 ++ html/classcore_1_1INotify__coll__graph.map | 6 + html/classcore_1_1INotify__coll__graph.md5 | 1 + html/classcore_1_1INotify__coll__graph.png | Bin 0 -> 12833 bytes html/classcore_1_1INotify__inherit__graph.map | 4 + html/classcore_1_1INotify__inherit__graph.md5 | 1 + html/classcore_1_1INotify__inherit__graph.png | Bin 0 -> 4647 bytes html/classcore_1_1IPAddress-members.html | 92 + html/classcore_1_1IPAddress.html | 142 ++ html/classcore_1_1IPAddressList-members.html | 85 + html/classcore_1_1IPAddressList.html | 100 ++ html/classcore_1_1IPAddress__coll__graph.map | 3 + html/classcore_1_1IPAddress__coll__graph.md5 | 1 + html/classcore_1_1IPAddress__coll__graph.png | Bin 0 -> 3747 bytes ...classcore_1_1IPAddress__inherit__graph.map | 3 + ...classcore_1_1IPAddress__inherit__graph.md5 | 1 + ...classcore_1_1IPAddress__inherit__graph.png | Bin 0 -> 3747 bytes html/classcore_1_1Object-members.html | 82 + html/classcore_1_1Object.html | 119 ++ html/classcore_1_1Object__inherit__graph.map | 21 + html/classcore_1_1Object__inherit__graph.md5 | 1 + html/classcore_1_1Object__inherit__graph.png | Bin 0 -> 47078 bytes html/classcore_1_1SessionFilter-members.html | 83 + html/classcore_1_1SessionFilter.html | 116 ++ ...lasscore_1_1SessionFilter__coll__graph.map | 3 + ...lasscore_1_1SessionFilter__coll__graph.md5 | 1 + ...lasscore_1_1SessionFilter__coll__graph.png | Bin 0 -> 3447 bytes ...score_1_1SessionFilter__inherit__graph.map | 3 + ...score_1_1SessionFilter__inherit__graph.md5 | 1 + ...score_1_1SessionFilter__inherit__graph.png | Bin 0 -> 3447 bytes html/classcore_1_1Socket-members.html | 104 ++ html/classcore_1_1Socket.html | 424 +++++ html/classcore_1_1Socket__coll__graph.map | 5 + html/classcore_1_1Socket__coll__graph.md5 | 1 + html/classcore_1_1Socket__coll__graph.png | Bin 0 -> 10987 bytes html/classcore_1_1Socket__inherit__graph.map | 15 + html/classcore_1_1Socket__inherit__graph.md5 | 1 + html/classcore_1_1Socket__inherit__graph.png | Bin 0 -> 23688 bytes html/classcore_1_1TCPServer-members.html | 125 ++ html/classcore_1_1TCPServer.html | 500 ++++++ html/classcore_1_1TCPServer__coll__graph.map | 10 + html/classcore_1_1TCPServer__coll__graph.md5 | 1 + html/classcore_1_1TCPServer__coll__graph.png | Bin 0 -> 39679 bytes ...classcore_1_1TCPServer__inherit__graph.map | 8 + ...classcore_1_1TCPServer__inherit__graph.md5 | 1 + ...classcore_1_1TCPServer__inherit__graph.png | Bin 0 -> 18051 bytes html/classcore_1_1TCPSession-members.html | 119 ++ html/classcore_1_1TCPSession.html | 478 +++++ html/classcore_1_1TCPSession__coll__graph.map | 11 + html/classcore_1_1TCPSession__coll__graph.md5 | 1 + html/classcore_1_1TCPSession__coll__graph.png | Bin 0 -> 52711 bytes ...lasscore_1_1TCPSession__inherit__graph.map | 8 + ...lasscore_1_1TCPSession__inherit__graph.md5 | 1 + ...lasscore_1_1TCPSession__inherit__graph.png | Bin 0 -> 15029 bytes html/classcore_1_1TCPSocket-members.html | 109 ++ html/classcore_1_1TCPSocket.html | 246 +++ html/classcore_1_1TCPSocket__coll__graph.map | 7 + html/classcore_1_1TCPSocket__coll__graph.md5 | 1 + html/classcore_1_1TCPSocket__coll__graph.png | Bin 0 -> 18243 bytes ...classcore_1_1TCPSocket__inherit__graph.map | 11 + ...classcore_1_1TCPSocket__inherit__graph.md5 | 1 + ...classcore_1_1TCPSocket__inherit__graph.png | Bin 0 -> 17873 bytes html/classcore_1_1TLSServer-members.html | 129 ++ html/classcore_1_1TLSServer.html | 324 ++++ html/classcore_1_1TLSServer__coll__graph.map | 11 + html/classcore_1_1TLSServer__coll__graph.md5 | 1 + html/classcore_1_1TLSServer__coll__graph.png | Bin 0 -> 41668 bytes ...classcore_1_1TLSServer__inherit__graph.map | 8 + ...classcore_1_1TLSServer__inherit__graph.md5 | 1 + ...classcore_1_1TLSServer__inherit__graph.png | Bin 0 -> 18019 bytes html/classcore_1_1TLSSession-members.html | 121 ++ html/classcore_1_1TLSSession.html | 388 ++++ html/classcore_1_1TLSSession__coll__graph.map | 12 + html/classcore_1_1TLSSession__coll__graph.md5 | 1 + html/classcore_1_1TLSSession__coll__graph.png | Bin 0 -> 55202 bytes ...lasscore_1_1TLSSession__inherit__graph.map | 8 + ...lasscore_1_1TLSSession__inherit__graph.md5 | 1 + ...lasscore_1_1TLSSession__inherit__graph.png | Bin 0 -> 14969 bytes .../classcore_1_1TerminalSession-members.html | 135 ++ html/classcore_1_1TerminalSession.html | 284 +++ ...sscore_1_1TerminalSession__coll__graph.map | 13 + ...sscore_1_1TerminalSession__coll__graph.md5 | 1 + ...sscore_1_1TerminalSession__coll__graph.png | Bin 0 -> 57882 bytes ...ore_1_1TerminalSession__inherit__graph.map | 8 + ...ore_1_1TerminalSession__inherit__graph.md5 | 1 + ...ore_1_1TerminalSession__inherit__graph.png | Bin 0 -> 14989 bytes html/classcore_1_1Thread-members.html | 90 + html/classcore_1_1Thread.html | 158 ++ html/classcore_1_1Thread__coll__graph.map | 3 + html/classcore_1_1Thread__coll__graph.md5 | 1 + html/classcore_1_1Thread__coll__graph.png | Bin 0 -> 3072 bytes html/classcore_1_1Thread__inherit__graph.map | 3 + html/classcore_1_1Thread__inherit__graph.md5 | 1 + html/classcore_1_1Thread__inherit__graph.png | Bin 0 -> 3072 bytes html/classcore_1_1Timer-members.html | 111 ++ html/classcore_1_1Timer.html | 223 +++ html/classcore_1_1Timer__coll__graph.map | 6 + html/classcore_1_1Timer__coll__graph.md5 | 1 + html/classcore_1_1Timer__coll__graph.png | Bin 0 -> 12565 bytes html/classcore_1_1Timer__inherit__graph.map | 4 + html/classcore_1_1Timer__inherit__graph.md5 | 1 + html/classcore_1_1Timer__inherit__graph.png | Bin 0 -> 4368 bytes .../classcore_1_1UDPServerSocket-members.html | 116 ++ html/classcore_1_1UDPServerSocket.html | 263 +++ ...sscore_1_1UDPServerSocket__coll__graph.map | 7 + ...sscore_1_1UDPServerSocket__coll__graph.md5 | 1 + ...sscore_1_1UDPServerSocket__coll__graph.png | Bin 0 -> 20132 bytes ...ore_1_1UDPServerSocket__inherit__graph.map | 6 + ...ore_1_1UDPServerSocket__inherit__graph.md5 | 1 + ...ore_1_1UDPServerSocket__inherit__graph.png | Bin 0 -> 14016 bytes html/classcore_1_1UDPSocket-members.html | 106 ++ html/classcore_1_1UDPSocket.html | 188 ++ html/classcore_1_1UDPSocket__coll__graph.map | 6 + html/classcore_1_1UDPSocket__coll__graph.md5 | 1 + html/classcore_1_1UDPSocket__coll__graph.png | Bin 0 -> 13461 bytes ...classcore_1_1UDPSocket__inherit__graph.map | 5 + ...classcore_1_1UDPSocket__inherit__graph.md5 | 1 + ...classcore_1_1UDPSocket__inherit__graph.png | Bin 0 -> 7571 bytes html/classes.html | 94 + html/closed.png | Bin 0 -> 132 bytes html/doc.png | Bin 0 -> 746 bytes html/doxygen.css | 1596 +++++++++++++++++ html/doxygen.png | Bin 0 -> 3779 bytes html/dynsections.js | 97 + html/files.html | 98 + html/folderclosed.png | Bin 0 -> 616 bytes html/folderopen.png | Bin 0 -> 597 bytes html/functions.html | 284 +++ html/functions_func.html | 260 +++ html/functions_vars.html | 87 + html/graph_legend.html | 102 ++ html/graph_legend.md5 | 1 + html/graph_legend.png | Bin 0 -> 20374 bytes html/hierarchy.html | 104 ++ html/index.html | 73 + html/inherit_graph_0.map | 3 + html/inherit_graph_0.md5 | 1 + html/inherit_graph_0.png | Bin 0 -> 1693 bytes html/inherit_graph_1.map | 22 + html/inherit_graph_1.md5 | 1 + html/inherit_graph_1.png | Bin 0 -> 42644 bytes html/inherits.html | 106 ++ html/jquery.js | 87 + html/menu.js | 26 + html/menudata.js | 40 + html/nav_f.png | Bin 0 -> 153 bytes html/nav_g.png | Bin 0 -> 95 bytes html/nav_h.png | Bin 0 -> 98 bytes html/open.png | Bin 0 -> 123 bytes html/search/all_0.html | 26 + html/search/all_0.js | 4 + html/search/all_1.html | 26 + html/search/all_1.js | 4 + html/search/all_2.html | 26 + html/search/all_2.js | 10 + html/search/all_3.html | 26 + html/search/all_3.js | 5 + html/search/all_4.html | 26 + html/search/all_4.js | 10 + html/search/all_5.html | 26 + html/search/all_5.js | 7 + html/search/all_6.html | 26 + html/search/all_6.js | 4 + html/search/all_7.html | 26 + html/search/all_7.js | 10 + html/search/all_8.html | 26 + html/search/all_8.js | 6 + html/search/all_9.html | 26 + html/search/all_9.js | 6 + html/search/all_a.html | 26 + html/search/all_a.js | 14 + html/search/all_b.html | 26 + html/search/all_b.js | 11 + html/search/all_c.html | 26 + html/search/all_c.js | 6 + html/search/all_d.html | 26 + html/search/all_d.js | 5 + html/search/all_e.html | 26 + html/search/all_e.js | 6 + html/search/classes_0.html | 26 + html/search/classes_0.js | 7 + html/search/classes_1.html | 26 + html/search/classes_1.js | 4 + html/search/classes_2.html | 26 + html/search/classes_2.js | 6 + html/search/classes_3.html | 26 + html/search/classes_3.js | 4 + html/search/classes_4.html | 26 + html/search/classes_4.js | 5 + html/search/classes_5.html | 26 + html/search/classes_5.js | 11 + html/search/classes_6.html | 26 + html/search/classes_6.js | 5 + html/search/close.png | Bin 0 -> 273 bytes html/search/functions_0.html | 26 + html/search/functions_0.js | 4 + html/search/functions_1.html | 26 + html/search/functions_1.js | 5 + html/search/functions_2.html | 26 + html/search/functions_2.js | 5 + html/search/functions_3.html | 26 + html/search/functions_3.js | 10 + html/search/functions_4.html | 26 + html/search/functions_4.js | 4 + html/search/functions_5.html | 26 + html/search/functions_5.js | 9 + html/search/functions_6.html | 26 + html/search/functions_6.js | 6 + html/search/functions_7.html | 26 + html/search/functions_7.js | 6 + html/search/functions_8.html | 26 + html/search/functions_8.js | 11 + html/search/functions_9.html | 26 + html/search/functions_9.js | 5 + html/search/functions_a.html | 26 + html/search/functions_a.js | 4 + html/search/functions_b.html | 26 + html/search/functions_b.js | 4 + html/search/functions_c.html | 26 + html/search/functions_c.js | 6 + html/search/mag_sel.png | Bin 0 -> 563 bytes html/search/nomatches.html | 12 + html/search/search.css | 271 +++ html/search/search.js | 791 ++++++++ html/search/search_l.png | Bin 0 -> 604 bytes html/search/search_m.png | Bin 0 -> 158 bytes html/search/search_r.png | Bin 0 -> 612 bytes html/search/searchdata.js | 24 + html/search/variables_0.html | 26 + html/search/variables_0.js | 4 + html/search/variables_1.html | 26 + html/search/variables_1.js | 4 + html/search/variables_2.html | 26 + html/search/variables_2.js | 4 + html/search/variables_3.html | 26 + html/search/variables_3.js | 4 + html/search/variables_4.html | 26 + html/search/variables_4.js | 4 + html/splitbar.png | Bin 0 -> 314 bytes html/sync_off.png | Bin 0 -> 853 bytes html/sync_on.png | Bin 0 -> 845 bytes html/tab_a.png | Bin 0 -> 142 bytes html/tab_b.png | Bin 0 -> 169 bytes html/tab_h.png | Bin 0 -> 177 bytes html/tab_s.png | Bin 0 -> 184 bytes html/tabs.css | 1 + includes | 1 + latex/Makefile | 21 + latex/annotated.tex | 24 + latex/classcore_1_1Command.tex | 119 ++ latex/classcore_1_1CommandList.tex | 115 ++ .../classcore_1_1CommandList__coll__graph.md5 | 1 + .../classcore_1_1CommandList__coll__graph.pdf | Bin 0 -> 12826 bytes ...asscore_1_1CommandList__inherit__graph.md5 | 1 + ...asscore_1_1CommandList__inherit__graph.pdf | Bin 0 -> 12826 bytes latex/classcore_1_1Command__coll__graph.md5 | 1 + latex/classcore_1_1Command__coll__graph.pdf | Bin 0 -> 12306 bytes .../classcore_1_1Command__inherit__graph.md5 | 1 + .../classcore_1_1Command__inherit__graph.pdf | Bin 0 -> 14612 bytes latex/classcore_1_1ConsoleServer.tex | 51 + ...lasscore_1_1ConsoleServer__coll__graph.md5 | 1 + ...lasscore_1_1ConsoleServer__coll__graph.pdf | Bin 0 -> 16679 bytes ...score_1_1ConsoleServer__inherit__graph.md5 | 1 + ...score_1_1ConsoleServer__inherit__graph.pdf | Bin 0 -> 14796 bytes latex/classcore_1_1ConsoleSession.tex | 63 + ...asscore_1_1ConsoleSession__coll__graph.md5 | 1 + ...asscore_1_1ConsoleSession__coll__graph.pdf | Bin 0 -> 16672 bytes ...core_1_1ConsoleSession__inherit__graph.md5 | 1 + ...core_1_1ConsoleSession__inherit__graph.pdf | Bin 0 -> 13544 bytes latex/classcore_1_1EPoll.tex | 222 +++ latex/classcore_1_1EPoll__coll__graph.md5 | 1 + latex/classcore_1_1EPoll__coll__graph.pdf | Bin 0 -> 12834 bytes latex/classcore_1_1EPoll__inherit__graph.md5 | 1 + latex/classcore_1_1EPoll__inherit__graph.pdf | Bin 0 -> 12834 bytes latex/classcore_1_1INotify.tex | 77 + latex/classcore_1_1INotify__coll__graph.md5 | 1 + latex/classcore_1_1INotify__coll__graph.pdf | Bin 0 -> 14279 bytes .../classcore_1_1INotify__inherit__graph.md5 | 1 + .../classcore_1_1INotify__inherit__graph.pdf | Bin 0 -> 12202 bytes latex/classcore_1_1IPAddress.tex | 56 + latex/classcore_1_1IPAddressList.tex | 23 + latex/classcore_1_1IPAddress__coll__graph.md5 | 1 + latex/classcore_1_1IPAddress__coll__graph.pdf | Bin 0 -> 11924 bytes ...classcore_1_1IPAddress__inherit__graph.md5 | 1 + ...classcore_1_1IPAddress__inherit__graph.pdf | Bin 0 -> 11924 bytes latex/classcore_1_1Object.tex | 25 + latex/classcore_1_1Object__inherit__graph.md5 | 1 + latex/classcore_1_1Object__inherit__graph.pdf | Bin 0 -> 16820 bytes latex/classcore_1_1SessionFilter.tex | 32 + ...lasscore_1_1SessionFilter__coll__graph.md5 | 1 + ...lasscore_1_1SessionFilter__coll__graph.pdf | Bin 0 -> 12105 bytes ...score_1_1SessionFilter__inherit__graph.md5 | 1 + ...score_1_1SessionFilter__inherit__graph.pdf | Bin 0 -> 12105 bytes latex/classcore_1_1Socket.tex | 206 +++ latex/classcore_1_1Socket__coll__graph.md5 | 1 + latex/classcore_1_1Socket__coll__graph.pdf | Bin 0 -> 13577 bytes latex/classcore_1_1Socket__inherit__graph.md5 | 1 + latex/classcore_1_1Socket__inherit__graph.pdf | Bin 0 -> 15098 bytes latex/classcore_1_1TCPServer.tex | 183 ++ latex/classcore_1_1TCPServer__coll__graph.md5 | 1 + latex/classcore_1_1TCPServer__coll__graph.pdf | Bin 0 -> 15859 bytes ...classcore_1_1TCPServer__inherit__graph.md5 | 1 + ...classcore_1_1TCPServer__inherit__graph.pdf | Bin 0 -> 13985 bytes latex/classcore_1_1TCPSession.tex | 163 ++ .../classcore_1_1TCPSession__coll__graph.md5 | 1 + .../classcore_1_1TCPSession__coll__graph.pdf | Bin 0 -> 16480 bytes ...lasscore_1_1TCPSession__inherit__graph.md5 | 1 + ...lasscore_1_1TCPSession__inherit__graph.pdf | Bin 0 -> 13556 bytes latex/classcore_1_1TCPSocket.tex | 71 + latex/classcore_1_1TCPSocket__coll__graph.md5 | 1 + latex/classcore_1_1TCPSocket__coll__graph.pdf | Bin 0 -> 14845 bytes ...classcore_1_1TCPSocket__inherit__graph.md5 | 1 + ...classcore_1_1TCPSocket__inherit__graph.pdf | Bin 0 -> 13958 bytes latex/classcore_1_1TLSServer.tex | 83 + latex/classcore_1_1TLSServer__coll__graph.md5 | 1 + latex/classcore_1_1TLSServer__coll__graph.pdf | Bin 0 -> 15929 bytes ...classcore_1_1TLSServer__inherit__graph.md5 | 1 + ...classcore_1_1TLSServer__inherit__graph.pdf | Bin 0 -> 13979 bytes latex/classcore_1_1TLSSession.tex | 109 ++ .../classcore_1_1TLSSession__coll__graph.md5 | 1 + .../classcore_1_1TLSSession__coll__graph.pdf | Bin 0 -> 16554 bytes ...lasscore_1_1TLSSession__inherit__graph.md5 | 1 + ...lasscore_1_1TLSSession__inherit__graph.pdf | Bin 0 -> 13561 bytes latex/classcore_1_1TerminalSession.tex | 72 + ...sscore_1_1TerminalSession__coll__graph.md5 | 1 + ...sscore_1_1TerminalSession__coll__graph.pdf | Bin 0 -> 16624 bytes ...ore_1_1TerminalSession__inherit__graph.md5 | 1 + ...ore_1_1TerminalSession__inherit__graph.pdf | Bin 0 -> 13550 bytes latex/classcore_1_1Thread.tex | 68 + latex/classcore_1_1Thread__coll__graph.md5 | 1 + latex/classcore_1_1Thread__coll__graph.pdf | Bin 0 -> 11958 bytes latex/classcore_1_1Thread__inherit__graph.md5 | 1 + latex/classcore_1_1Thread__inherit__graph.pdf | Bin 0 -> 11958 bytes latex/classcore_1_1Timer.tex | 94 + latex/classcore_1_1Timer__coll__graph.md5 | 1 + latex/classcore_1_1Timer__coll__graph.pdf | Bin 0 -> 13882 bytes latex/classcore_1_1Timer__inherit__graph.md5 | 1 + latex/classcore_1_1Timer__inherit__graph.pdf | Bin 0 -> 12007 bytes latex/classcore_1_1UDPServerSocket.tex | 80 + ...sscore_1_1UDPServerSocket__coll__graph.md5 | 1 + ...sscore_1_1UDPServerSocket__coll__graph.pdf | Bin 0 -> 14226 bytes ...ore_1_1UDPServerSocket__inherit__graph.md5 | 1 + ...ore_1_1UDPServerSocket__inherit__graph.pdf | Bin 0 -> 13630 bytes latex/classcore_1_1UDPSocket.tex | 33 + latex/classcore_1_1UDPSocket__coll__graph.md5 | 1 + latex/classcore_1_1UDPSocket__coll__graph.pdf | Bin 0 -> 13925 bytes ...classcore_1_1UDPSocket__inherit__graph.md5 | 1 + ...classcore_1_1UDPSocket__inherit__graph.pdf | Bin 0 -> 12149 bytes latex/doxygen.sty | 503 ++++++ latex/hierarchy.tex | 47 + latex/refman.tex | 177 ++ 512 files changed, 22663 insertions(+), 2121 deletions(-) create mode 100644 INotify.cpp create mode 100644 INotify.h delete mode 100644 ParseString.h delete mode 100644 Release/.d delete mode 100644 Release/Command.cpp.o.d delete mode 100644 Release/CommandList.cpp.o.d delete mode 100644 Release/ConsoleServer.cpp.o.d delete mode 100644 Release/ConsoleSession.cpp.o.d delete mode 100644 Release/EPoll.cpp.o.d delete mode 100644 Release/Exception.cpp.o.d delete mode 100644 Release/File.cpp.o.d delete mode 100644 Release/Header.cpp.o.d delete mode 100644 Release/IPAddress.cpp.o.d delete mode 100644 Release/Log.cpp.o.d delete mode 100644 Release/Response.cpp.o.d delete mode 100644 Release/Service.cpp.o.d delete mode 100644 Release/Session.cpp.o.d delete mode 100644 Release/Socket.cpp.o.d delete mode 100644 Release/TCPServerSocket.cpp.o.d delete mode 100644 Release/TCPSocket.cpp.o.d delete mode 100644 Release/TLSServerSocket.cpp.o.d delete mode 100644 Release/TLSSession.cpp.o.d delete mode 100644 Release/TerminalSession.cpp.o.d delete mode 100644 Release/Thread.cpp.o.d delete mode 100644 Release/Timer.cpp.o.d delete mode 100644 Release/UDPServerSocket.cpp.o.d delete mode 100644 Release/UDPSocket.cpp.o.d create mode 100644 docs/latex/html/bc_s.png create mode 100644 docs/latex/html/bdwn.png create mode 100644 docs/latex/html/closed.png create mode 100644 docs/latex/html/doc.png create mode 100644 docs/latex/html/doxygen.css create mode 100644 docs/latex/html/doxygen.png create mode 100644 docs/latex/html/dynsections.js create mode 100644 docs/latex/html/folderclosed.png create mode 100644 docs/latex/html/folderopen.png create mode 100644 docs/latex/html/graph_legend.html create mode 100644 docs/latex/html/graph_legend.md5 create mode 100644 docs/latex/html/graph_legend.png create mode 100644 docs/latex/html/index.html create mode 100644 docs/latex/html/jquery.js create mode 100644 docs/latex/html/menu.js create mode 100644 docs/latex/html/menudata.js create mode 100644 docs/latex/html/nav_f.png create mode 100644 docs/latex/html/nav_g.png create mode 100644 docs/latex/html/nav_h.png create mode 100644 docs/latex/html/open.png create mode 100644 docs/latex/html/search/close.png create mode 100644 docs/latex/html/search/mag_sel.png create mode 100644 docs/latex/html/search/nomatches.html create mode 100644 docs/latex/html/search/search.css create mode 100644 docs/latex/html/search/search.js create mode 100644 docs/latex/html/search/search_l.png create mode 100644 docs/latex/html/search/search_m.png create mode 100644 docs/latex/html/search/search_r.png create mode 100644 docs/latex/html/search/searchdata.js create mode 100644 docs/latex/html/splitbar.png create mode 100644 docs/latex/html/sync_off.png create mode 100644 docs/latex/html/sync_on.png create mode 100644 docs/latex/html/tab_a.png create mode 100644 docs/latex/html/tab_b.png create mode 100644 docs/latex/html/tab_h.png create mode 100644 docs/latex/html/tab_s.png create mode 100644 docs/latex/html/tabs.css create mode 100644 docs/latex/latex/Makefile create mode 100644 docs/latex/latex/doxygen.sty create mode 100644 docs/latex/latex/refman.tex create mode 100644 docs/latex/refman.dvi create mode 100644 html/CommandList_8h_source.html create mode 100644 html/Command_8h_source.html create mode 100644 html/ConsoleServer_8h_source.html create mode 100644 html/ConsoleSession_8h_source.html create mode 100644 html/EPoll_8h_source.html create mode 100644 html/INotify_8h_source.html create mode 100644 html/IPAddressList_8h_source.html create mode 100644 html/IPAddress_8h_source.html create mode 100644 html/Object_8h_source.html create mode 100644 html/SessionFilter_8h_source.html create mode 100644 html/Socket_8h_source.html create mode 100644 html/TCPServer_8h_source.html create mode 100644 html/TCPSession_8h_source.html create mode 100644 html/TCPSocket_8h_source.html create mode 100644 html/TLSServer_8h_source.html create mode 100644 html/TLSSession_8h_source.html create mode 100644 html/TerminalSession_8h_source.html create mode 100644 html/Thread_8h_source.html create mode 100644 html/Timer_8h_source.html create mode 100644 html/UDPServerSocket_8h_source.html create mode 100644 html/UDPSocket_8h_source.html create mode 100644 html/annotated.html create mode 100644 html/bc_s.png create mode 100644 html/bdwn.png create mode 100644 html/classcore_1_1Command-members.html create mode 100644 html/classcore_1_1Command.html create mode 100644 html/classcore_1_1CommandList-members.html create mode 100644 html/classcore_1_1CommandList.html create mode 100644 html/classcore_1_1CommandList__coll__graph.map create mode 100644 html/classcore_1_1CommandList__coll__graph.md5 create mode 100644 html/classcore_1_1CommandList__coll__graph.png create mode 100644 html/classcore_1_1CommandList__inherit__graph.map create mode 100644 html/classcore_1_1CommandList__inherit__graph.md5 create mode 100644 html/classcore_1_1CommandList__inherit__graph.png create mode 100644 html/classcore_1_1Command__coll__graph.map create mode 100644 html/classcore_1_1Command__coll__graph.md5 create mode 100644 html/classcore_1_1Command__coll__graph.png create mode 100644 html/classcore_1_1Command__inherit__graph.map create mode 100644 html/classcore_1_1Command__inherit__graph.md5 create mode 100644 html/classcore_1_1Command__inherit__graph.png create mode 100644 html/classcore_1_1ConsoleServer-members.html create mode 100644 html/classcore_1_1ConsoleServer.html create mode 100644 html/classcore_1_1ConsoleServer__coll__graph.map create mode 100644 html/classcore_1_1ConsoleServer__coll__graph.md5 create mode 100644 html/classcore_1_1ConsoleServer__coll__graph.png create mode 100644 html/classcore_1_1ConsoleServer__inherit__graph.map create mode 100644 html/classcore_1_1ConsoleServer__inherit__graph.md5 create mode 100644 html/classcore_1_1ConsoleServer__inherit__graph.png create mode 100644 html/classcore_1_1ConsoleSession-members.html create mode 100644 html/classcore_1_1ConsoleSession.html create mode 100644 html/classcore_1_1ConsoleSession__coll__graph.map create mode 100644 html/classcore_1_1ConsoleSession__coll__graph.md5 create mode 100644 html/classcore_1_1ConsoleSession__coll__graph.png create mode 100644 html/classcore_1_1ConsoleSession__inherit__graph.map create mode 100644 html/classcore_1_1ConsoleSession__inherit__graph.md5 create mode 100644 html/classcore_1_1ConsoleSession__inherit__graph.png create mode 100644 html/classcore_1_1EPoll-members.html create mode 100644 html/classcore_1_1EPoll.html create mode 100644 html/classcore_1_1EPoll__coll__graph.map create mode 100644 html/classcore_1_1EPoll__coll__graph.md5 create mode 100644 html/classcore_1_1EPoll__coll__graph.png create mode 100644 html/classcore_1_1EPoll__inherit__graph.map create mode 100644 html/classcore_1_1EPoll__inherit__graph.md5 create mode 100644 html/classcore_1_1EPoll__inherit__graph.png create mode 100644 html/classcore_1_1INotify-members.html create mode 100644 html/classcore_1_1INotify.html create mode 100644 html/classcore_1_1INotify__coll__graph.map create mode 100644 html/classcore_1_1INotify__coll__graph.md5 create mode 100644 html/classcore_1_1INotify__coll__graph.png create mode 100644 html/classcore_1_1INotify__inherit__graph.map create mode 100644 html/classcore_1_1INotify__inherit__graph.md5 create mode 100644 html/classcore_1_1INotify__inherit__graph.png create mode 100644 html/classcore_1_1IPAddress-members.html create mode 100644 html/classcore_1_1IPAddress.html create mode 100644 html/classcore_1_1IPAddressList-members.html create mode 100644 html/classcore_1_1IPAddressList.html create mode 100644 html/classcore_1_1IPAddress__coll__graph.map create mode 100644 html/classcore_1_1IPAddress__coll__graph.md5 create mode 100644 html/classcore_1_1IPAddress__coll__graph.png create mode 100644 html/classcore_1_1IPAddress__inherit__graph.map create mode 100644 html/classcore_1_1IPAddress__inherit__graph.md5 create mode 100644 html/classcore_1_1IPAddress__inherit__graph.png create mode 100644 html/classcore_1_1Object-members.html create mode 100644 html/classcore_1_1Object.html create mode 100644 html/classcore_1_1Object__inherit__graph.map create mode 100644 html/classcore_1_1Object__inherit__graph.md5 create mode 100644 html/classcore_1_1Object__inherit__graph.png create mode 100644 html/classcore_1_1SessionFilter-members.html create mode 100644 html/classcore_1_1SessionFilter.html create mode 100644 html/classcore_1_1SessionFilter__coll__graph.map create mode 100644 html/classcore_1_1SessionFilter__coll__graph.md5 create mode 100644 html/classcore_1_1SessionFilter__coll__graph.png create mode 100644 html/classcore_1_1SessionFilter__inherit__graph.map create mode 100644 html/classcore_1_1SessionFilter__inherit__graph.md5 create mode 100644 html/classcore_1_1SessionFilter__inherit__graph.png create mode 100644 html/classcore_1_1Socket-members.html create mode 100644 html/classcore_1_1Socket.html create mode 100644 html/classcore_1_1Socket__coll__graph.map create mode 100644 html/classcore_1_1Socket__coll__graph.md5 create mode 100644 html/classcore_1_1Socket__coll__graph.png create mode 100644 html/classcore_1_1Socket__inherit__graph.map create mode 100644 html/classcore_1_1Socket__inherit__graph.md5 create mode 100644 html/classcore_1_1Socket__inherit__graph.png create mode 100644 html/classcore_1_1TCPServer-members.html create mode 100644 html/classcore_1_1TCPServer.html create mode 100644 html/classcore_1_1TCPServer__coll__graph.map create mode 100644 html/classcore_1_1TCPServer__coll__graph.md5 create mode 100644 html/classcore_1_1TCPServer__coll__graph.png create mode 100644 html/classcore_1_1TCPServer__inherit__graph.map create mode 100644 html/classcore_1_1TCPServer__inherit__graph.md5 create mode 100644 html/classcore_1_1TCPServer__inherit__graph.png create mode 100644 html/classcore_1_1TCPSession-members.html create mode 100644 html/classcore_1_1TCPSession.html create mode 100644 html/classcore_1_1TCPSession__coll__graph.map create mode 100644 html/classcore_1_1TCPSession__coll__graph.md5 create mode 100644 html/classcore_1_1TCPSession__coll__graph.png create mode 100644 html/classcore_1_1TCPSession__inherit__graph.map create mode 100644 html/classcore_1_1TCPSession__inherit__graph.md5 create mode 100644 html/classcore_1_1TCPSession__inherit__graph.png create mode 100644 html/classcore_1_1TCPSocket-members.html create mode 100644 html/classcore_1_1TCPSocket.html create mode 100644 html/classcore_1_1TCPSocket__coll__graph.map create mode 100644 html/classcore_1_1TCPSocket__coll__graph.md5 create mode 100644 html/classcore_1_1TCPSocket__coll__graph.png create mode 100644 html/classcore_1_1TCPSocket__inherit__graph.map create mode 100644 html/classcore_1_1TCPSocket__inherit__graph.md5 create mode 100644 html/classcore_1_1TCPSocket__inherit__graph.png create mode 100644 html/classcore_1_1TLSServer-members.html create mode 100644 html/classcore_1_1TLSServer.html create mode 100644 html/classcore_1_1TLSServer__coll__graph.map create mode 100644 html/classcore_1_1TLSServer__coll__graph.md5 create mode 100644 html/classcore_1_1TLSServer__coll__graph.png create mode 100644 html/classcore_1_1TLSServer__inherit__graph.map create mode 100644 html/classcore_1_1TLSServer__inherit__graph.md5 create mode 100644 html/classcore_1_1TLSServer__inherit__graph.png create mode 100644 html/classcore_1_1TLSSession-members.html create mode 100644 html/classcore_1_1TLSSession.html create mode 100644 html/classcore_1_1TLSSession__coll__graph.map create mode 100644 html/classcore_1_1TLSSession__coll__graph.md5 create mode 100644 html/classcore_1_1TLSSession__coll__graph.png create mode 100644 html/classcore_1_1TLSSession__inherit__graph.map create mode 100644 html/classcore_1_1TLSSession__inherit__graph.md5 create mode 100644 html/classcore_1_1TLSSession__inherit__graph.png create mode 100644 html/classcore_1_1TerminalSession-members.html create mode 100644 html/classcore_1_1TerminalSession.html create mode 100644 html/classcore_1_1TerminalSession__coll__graph.map create mode 100644 html/classcore_1_1TerminalSession__coll__graph.md5 create mode 100644 html/classcore_1_1TerminalSession__coll__graph.png create mode 100644 html/classcore_1_1TerminalSession__inherit__graph.map create mode 100644 html/classcore_1_1TerminalSession__inherit__graph.md5 create mode 100644 html/classcore_1_1TerminalSession__inherit__graph.png create mode 100644 html/classcore_1_1Thread-members.html create mode 100644 html/classcore_1_1Thread.html create mode 100644 html/classcore_1_1Thread__coll__graph.map create mode 100644 html/classcore_1_1Thread__coll__graph.md5 create mode 100644 html/classcore_1_1Thread__coll__graph.png create mode 100644 html/classcore_1_1Thread__inherit__graph.map create mode 100644 html/classcore_1_1Thread__inherit__graph.md5 create mode 100644 html/classcore_1_1Thread__inherit__graph.png create mode 100644 html/classcore_1_1Timer-members.html create mode 100644 html/classcore_1_1Timer.html create mode 100644 html/classcore_1_1Timer__coll__graph.map create mode 100644 html/classcore_1_1Timer__coll__graph.md5 create mode 100644 html/classcore_1_1Timer__coll__graph.png create mode 100644 html/classcore_1_1Timer__inherit__graph.map create mode 100644 html/classcore_1_1Timer__inherit__graph.md5 create mode 100644 html/classcore_1_1Timer__inherit__graph.png create mode 100644 html/classcore_1_1UDPServerSocket-members.html create mode 100644 html/classcore_1_1UDPServerSocket.html create mode 100644 html/classcore_1_1UDPServerSocket__coll__graph.map create mode 100644 html/classcore_1_1UDPServerSocket__coll__graph.md5 create mode 100644 html/classcore_1_1UDPServerSocket__coll__graph.png create mode 100644 html/classcore_1_1UDPServerSocket__inherit__graph.map create mode 100644 html/classcore_1_1UDPServerSocket__inherit__graph.md5 create mode 100644 html/classcore_1_1UDPServerSocket__inherit__graph.png create mode 100644 html/classcore_1_1UDPSocket-members.html create mode 100644 html/classcore_1_1UDPSocket.html create mode 100644 html/classcore_1_1UDPSocket__coll__graph.map create mode 100644 html/classcore_1_1UDPSocket__coll__graph.md5 create mode 100644 html/classcore_1_1UDPSocket__coll__graph.png create mode 100644 html/classcore_1_1UDPSocket__inherit__graph.map create mode 100644 html/classcore_1_1UDPSocket__inherit__graph.md5 create mode 100644 html/classcore_1_1UDPSocket__inherit__graph.png create mode 100644 html/classes.html create mode 100644 html/closed.png create mode 100644 html/doc.png create mode 100644 html/doxygen.css create mode 100644 html/doxygen.png create mode 100644 html/dynsections.js create mode 100644 html/files.html create mode 100644 html/folderclosed.png create mode 100644 html/folderopen.png create mode 100644 html/functions.html create mode 100644 html/functions_func.html create mode 100644 html/functions_vars.html create mode 100644 html/graph_legend.html create mode 100644 html/graph_legend.md5 create mode 100644 html/graph_legend.png create mode 100644 html/hierarchy.html create mode 100644 html/index.html create mode 100644 html/inherit_graph_0.map create mode 100644 html/inherit_graph_0.md5 create mode 100644 html/inherit_graph_0.png create mode 100644 html/inherit_graph_1.map create mode 100644 html/inherit_graph_1.md5 create mode 100644 html/inherit_graph_1.png create mode 100644 html/inherits.html create mode 100644 html/jquery.js create mode 100644 html/menu.js create mode 100644 html/menudata.js create mode 100644 html/nav_f.png create mode 100644 html/nav_g.png create mode 100644 html/nav_h.png create mode 100644 html/open.png create mode 100644 html/search/all_0.html create mode 100644 html/search/all_0.js create mode 100644 html/search/all_1.html create mode 100644 html/search/all_1.js create mode 100644 html/search/all_2.html create mode 100644 html/search/all_2.js create mode 100644 html/search/all_3.html create mode 100644 html/search/all_3.js create mode 100644 html/search/all_4.html create mode 100644 html/search/all_4.js create mode 100644 html/search/all_5.html create mode 100644 html/search/all_5.js create mode 100644 html/search/all_6.html create mode 100644 html/search/all_6.js create mode 100644 html/search/all_7.html create mode 100644 html/search/all_7.js create mode 100644 html/search/all_8.html create mode 100644 html/search/all_8.js create mode 100644 html/search/all_9.html create mode 100644 html/search/all_9.js create mode 100644 html/search/all_a.html create mode 100644 html/search/all_a.js create mode 100644 html/search/all_b.html create mode 100644 html/search/all_b.js create mode 100644 html/search/all_c.html create mode 100644 html/search/all_c.js create mode 100644 html/search/all_d.html create mode 100644 html/search/all_d.js create mode 100644 html/search/all_e.html create mode 100644 html/search/all_e.js create mode 100644 html/search/classes_0.html create mode 100644 html/search/classes_0.js create mode 100644 html/search/classes_1.html create mode 100644 html/search/classes_1.js create mode 100644 html/search/classes_2.html create mode 100644 html/search/classes_2.js create mode 100644 html/search/classes_3.html create mode 100644 html/search/classes_3.js create mode 100644 html/search/classes_4.html create mode 100644 html/search/classes_4.js create mode 100644 html/search/classes_5.html create mode 100644 html/search/classes_5.js create mode 100644 html/search/classes_6.html create mode 100644 html/search/classes_6.js create mode 100644 html/search/close.png create mode 100644 html/search/functions_0.html create mode 100644 html/search/functions_0.js create mode 100644 html/search/functions_1.html create mode 100644 html/search/functions_1.js create mode 100644 html/search/functions_2.html create mode 100644 html/search/functions_2.js create mode 100644 html/search/functions_3.html create mode 100644 html/search/functions_3.js create mode 100644 html/search/functions_4.html create mode 100644 html/search/functions_4.js create mode 100644 html/search/functions_5.html create mode 100644 html/search/functions_5.js create mode 100644 html/search/functions_6.html create mode 100644 html/search/functions_6.js create mode 100644 html/search/functions_7.html create mode 100644 html/search/functions_7.js create mode 100644 html/search/functions_8.html create mode 100644 html/search/functions_8.js create mode 100644 html/search/functions_9.html create mode 100644 html/search/functions_9.js create mode 100644 html/search/functions_a.html create mode 100644 html/search/functions_a.js create mode 100644 html/search/functions_b.html create mode 100644 html/search/functions_b.js create mode 100644 html/search/functions_c.html create mode 100644 html/search/functions_c.js create mode 100644 html/search/mag_sel.png create mode 100644 html/search/nomatches.html create mode 100644 html/search/search.css create mode 100644 html/search/search.js create mode 100644 html/search/search_l.png create mode 100644 html/search/search_m.png create mode 100644 html/search/search_r.png create mode 100644 html/search/searchdata.js create mode 100644 html/search/variables_0.html create mode 100644 html/search/variables_0.js create mode 100644 html/search/variables_1.html create mode 100644 html/search/variables_1.js create mode 100644 html/search/variables_2.html create mode 100644 html/search/variables_2.js create mode 100644 html/search/variables_3.html create mode 100644 html/search/variables_3.js create mode 100644 html/search/variables_4.html create mode 100644 html/search/variables_4.js create mode 100644 html/splitbar.png create mode 100644 html/sync_off.png create mode 100644 html/sync_on.png create mode 100644 html/tab_a.png create mode 100644 html/tab_b.png create mode 100644 html/tab_h.png create mode 100644 html/tab_s.png create mode 100644 html/tabs.css create mode 100644 latex/Makefile create mode 100644 latex/annotated.tex create mode 100644 latex/classcore_1_1Command.tex create mode 100644 latex/classcore_1_1CommandList.tex create mode 100644 latex/classcore_1_1CommandList__coll__graph.md5 create mode 100644 latex/classcore_1_1CommandList__coll__graph.pdf create mode 100644 latex/classcore_1_1CommandList__inherit__graph.md5 create mode 100644 latex/classcore_1_1CommandList__inherit__graph.pdf create mode 100644 latex/classcore_1_1Command__coll__graph.md5 create mode 100644 latex/classcore_1_1Command__coll__graph.pdf create mode 100644 latex/classcore_1_1Command__inherit__graph.md5 create mode 100644 latex/classcore_1_1Command__inherit__graph.pdf create mode 100644 latex/classcore_1_1ConsoleServer.tex create mode 100644 latex/classcore_1_1ConsoleServer__coll__graph.md5 create mode 100644 latex/classcore_1_1ConsoleServer__coll__graph.pdf create mode 100644 latex/classcore_1_1ConsoleServer__inherit__graph.md5 create mode 100644 latex/classcore_1_1ConsoleServer__inherit__graph.pdf create mode 100644 latex/classcore_1_1ConsoleSession.tex create mode 100644 latex/classcore_1_1ConsoleSession__coll__graph.md5 create mode 100644 latex/classcore_1_1ConsoleSession__coll__graph.pdf create mode 100644 latex/classcore_1_1ConsoleSession__inherit__graph.md5 create mode 100644 latex/classcore_1_1ConsoleSession__inherit__graph.pdf create mode 100644 latex/classcore_1_1EPoll.tex create mode 100644 latex/classcore_1_1EPoll__coll__graph.md5 create mode 100644 latex/classcore_1_1EPoll__coll__graph.pdf create mode 100644 latex/classcore_1_1EPoll__inherit__graph.md5 create mode 100644 latex/classcore_1_1EPoll__inherit__graph.pdf create mode 100644 latex/classcore_1_1INotify.tex create mode 100644 latex/classcore_1_1INotify__coll__graph.md5 create mode 100644 latex/classcore_1_1INotify__coll__graph.pdf create mode 100644 latex/classcore_1_1INotify__inherit__graph.md5 create mode 100644 latex/classcore_1_1INotify__inherit__graph.pdf create mode 100644 latex/classcore_1_1IPAddress.tex create mode 100644 latex/classcore_1_1IPAddressList.tex create mode 100644 latex/classcore_1_1IPAddress__coll__graph.md5 create mode 100644 latex/classcore_1_1IPAddress__coll__graph.pdf create mode 100644 latex/classcore_1_1IPAddress__inherit__graph.md5 create mode 100644 latex/classcore_1_1IPAddress__inherit__graph.pdf create mode 100644 latex/classcore_1_1Object.tex create mode 100644 latex/classcore_1_1Object__inherit__graph.md5 create mode 100644 latex/classcore_1_1Object__inherit__graph.pdf create mode 100644 latex/classcore_1_1SessionFilter.tex create mode 100644 latex/classcore_1_1SessionFilter__coll__graph.md5 create mode 100644 latex/classcore_1_1SessionFilter__coll__graph.pdf create mode 100644 latex/classcore_1_1SessionFilter__inherit__graph.md5 create mode 100644 latex/classcore_1_1SessionFilter__inherit__graph.pdf create mode 100644 latex/classcore_1_1Socket.tex create mode 100644 latex/classcore_1_1Socket__coll__graph.md5 create mode 100644 latex/classcore_1_1Socket__coll__graph.pdf create mode 100644 latex/classcore_1_1Socket__inherit__graph.md5 create mode 100644 latex/classcore_1_1Socket__inherit__graph.pdf create mode 100644 latex/classcore_1_1TCPServer.tex create mode 100644 latex/classcore_1_1TCPServer__coll__graph.md5 create mode 100644 latex/classcore_1_1TCPServer__coll__graph.pdf create mode 100644 latex/classcore_1_1TCPServer__inherit__graph.md5 create mode 100644 latex/classcore_1_1TCPServer__inherit__graph.pdf create mode 100644 latex/classcore_1_1TCPSession.tex create mode 100644 latex/classcore_1_1TCPSession__coll__graph.md5 create mode 100644 latex/classcore_1_1TCPSession__coll__graph.pdf create mode 100644 latex/classcore_1_1TCPSession__inherit__graph.md5 create mode 100644 latex/classcore_1_1TCPSession__inherit__graph.pdf create mode 100644 latex/classcore_1_1TCPSocket.tex create mode 100644 latex/classcore_1_1TCPSocket__coll__graph.md5 create mode 100644 latex/classcore_1_1TCPSocket__coll__graph.pdf create mode 100644 latex/classcore_1_1TCPSocket__inherit__graph.md5 create mode 100644 latex/classcore_1_1TCPSocket__inherit__graph.pdf create mode 100644 latex/classcore_1_1TLSServer.tex create mode 100644 latex/classcore_1_1TLSServer__coll__graph.md5 create mode 100644 latex/classcore_1_1TLSServer__coll__graph.pdf create mode 100644 latex/classcore_1_1TLSServer__inherit__graph.md5 create mode 100644 latex/classcore_1_1TLSServer__inherit__graph.pdf create mode 100644 latex/classcore_1_1TLSSession.tex create mode 100644 latex/classcore_1_1TLSSession__coll__graph.md5 create mode 100644 latex/classcore_1_1TLSSession__coll__graph.pdf create mode 100644 latex/classcore_1_1TLSSession__inherit__graph.md5 create mode 100644 latex/classcore_1_1TLSSession__inherit__graph.pdf create mode 100644 latex/classcore_1_1TerminalSession.tex create mode 100644 latex/classcore_1_1TerminalSession__coll__graph.md5 create mode 100644 latex/classcore_1_1TerminalSession__coll__graph.pdf create mode 100644 latex/classcore_1_1TerminalSession__inherit__graph.md5 create mode 100644 latex/classcore_1_1TerminalSession__inherit__graph.pdf create mode 100644 latex/classcore_1_1Thread.tex create mode 100644 latex/classcore_1_1Thread__coll__graph.md5 create mode 100644 latex/classcore_1_1Thread__coll__graph.pdf create mode 100644 latex/classcore_1_1Thread__inherit__graph.md5 create mode 100644 latex/classcore_1_1Thread__inherit__graph.pdf create mode 100644 latex/classcore_1_1Timer.tex create mode 100644 latex/classcore_1_1Timer__coll__graph.md5 create mode 100644 latex/classcore_1_1Timer__coll__graph.pdf create mode 100644 latex/classcore_1_1Timer__inherit__graph.md5 create mode 100644 latex/classcore_1_1Timer__inherit__graph.pdf create mode 100644 latex/classcore_1_1UDPServerSocket.tex create mode 100644 latex/classcore_1_1UDPServerSocket__coll__graph.md5 create mode 100644 latex/classcore_1_1UDPServerSocket__coll__graph.pdf create mode 100644 latex/classcore_1_1UDPServerSocket__inherit__graph.md5 create mode 100644 latex/classcore_1_1UDPServerSocket__inherit__graph.pdf create mode 100644 latex/classcore_1_1UDPSocket.tex create mode 100644 latex/classcore_1_1UDPSocket__coll__graph.md5 create mode 100644 latex/classcore_1_1UDPSocket__coll__graph.pdf create mode 100644 latex/classcore_1_1UDPSocket__inherit__graph.md5 create mode 100644 latex/classcore_1_1UDPSocket__inherit__graph.pdf create mode 100644 latex/doxygen.sty create mode 100644 latex/hierarchy.tex create mode 100644 latex/refman.tex diff --git a/Command.cpp b/Command.cpp index 7a7846b..ad83ac5 100644 --- a/Command.cpp +++ b/Command.cpp @@ -1,4 +1,5 @@ #include "Command.h" +#include "Log.h" namespace core { @@ -7,14 +8,11 @@ namespace core { void Command::output(Session *session) {} bool Command::check(std::string request) { - if(request != "") { - if(name.length() > 0) { - size_t start = request.find_first_not_of(" "); - if(name == request.substr(start, name.length())) - return true; - } - return false; - } + if(request.size() > 0) + if(request == name) + if(name.length() > 0) + return true; + return false; } void Command::setName(std::string name) { diff --git a/Command.h b/Command.h index e7a5ac0..7a34837 100644 --- a/Command.h +++ b/Command.h @@ -4,6 +4,7 @@ #include "includes" #include "Object.h" #include "TCPSession.h" +#include "PString.h" namespace core { diff --git a/CommandList.cpp b/CommandList.cpp index 03b01ea..434a2a0 100644 --- a/CommandList.cpp +++ b/CommandList.cpp @@ -1,4 +1,5 @@ -#include "CommandList.h"\ +#include "CommandList.h" +#include "Log.h" namespace core { @@ -8,23 +9,41 @@ namespace core { } void CommandList::remove(Command &command) { - + } bool CommandList::processRequest(std::string request, TCPSession *session, std::stringstream &data) { - for(auto *command : commands) { - if(command->check(request)) { - command->processCommand(request, session, data); - return true; - } - } - return false; + std::stringstream input = std::stringstream(request); + while(!input.eof()) { + std::string requests; + std::getline(input, requests); + if(session->grab != NULL) + session->grab->processCommand(requests, session, data); + else { + int pos = requests.find(" "); + std::string function = pos == requests.npos ? requests: requests.substr(0, pos); + for(auto *command : commands) + if(command->check(function)) + command->processCommand(requests, session, data); + } + } + return true; } + bool CommandList::grabInput(TCPSession *session, Command &command) { + session->grab = &command; + } + + void CommandList::clearGrab(TCPSession *session) { + session->grab = NULL; + } + int CommandList::processCommand(std::string request, TCPSession *session, std::stringstream &data) { for(Command *command : commands) data << command->getName() << std::endl; } + + } diff --git a/CommandList.h b/CommandList.h index 64ec117..522911b 100644 --- a/CommandList.h +++ b/CommandList.h @@ -25,13 +25,47 @@ namespace core { void add(Command &command, std::string name = ""); + /// + /// Remove a command object from the command list. + /// + void remove(Command &command); + /// + /// Use this method to apply a parsed PString to the command set and execute + /// the matching parameter. The selected command will return a true on a call + /// to check(). If there is a handler that has a grab on the process handler + /// then control is given to the process handler holding the grab on the input. + /// + bool processRequest(std::string request, TCPSession *session, std::stringstream &data); + + /// + /// Use grabInput() within a Command object to force the requesting handler to receive + /// all further input from the socket. Use releaseGrab() method to release the session + /// back to normal command processing. + /// + + bool grabInput(TCPSession *session, Command &command); + + /// + /// + /// + + void clearGrab(TCPSession *session); + + /// + /// + /// int processCommand(std::string request, TCPSession *session, std::stringstream &data); protected: + + /// + /// The vector of all registered commands. + /// + std::vector commands; }; diff --git a/ConsoleSession.cpp b/ConsoleSession.cpp index 9147681..8a5d3e0 100644 --- a/ConsoleSession.cpp +++ b/ConsoleSession.cpp @@ -9,7 +9,7 @@ namespace core { ConsoleSession::~ConsoleSession() {} - void ConsoleSession::protocol(std::string data = "") { + void ConsoleSession::protocol(std::stringstream &out, std::string data = "") { switch (status) { @@ -23,25 +23,23 @@ namespace core { setCursorLocation(2, 1); setBackColor(BG_BLACK); status = LOGIN; - protocol(); + protocol(out); break; case LOGIN: setCursorLocation(3, 3); out << "Enter User Profile: "; - send(); status = WAIT_USER_PROFILE; break; case WAIT_USER_PROFILE: status = PASSWORD; - protocol(); + protocol(out); break; case PASSWORD: setCursorLocation(4, 7); out << "Enter Password: "; - send(); status = WAIT_PASSWORD; break; @@ -56,14 +54,13 @@ namespace core { setBackColor(BG_BLACK); scrollArea(2, 16); status = PROMPT; - protocol(); + protocol(out); break; case PROMPT: setCursorLocation(17, 1); clearEOL(); out << ("--> "); - send(); status = INPUT; break; @@ -71,13 +68,13 @@ namespace core { command = std::string(data); command.erase(command.find_last_not_of("\r\n\t") + 1); status = PROCESS; - protocol(); + protocol(out); break; case PROCESS: doCommand(command); status = (command == "exit")? DONE: PROMPT; - protocol(); + protocol(out); break; case DONE: @@ -93,18 +90,18 @@ namespace core { void ConsoleSession::writeLog(std::string data) { saveCursor(); setCursorLocation(16, 1); - out << data; restoreCursor(); - send(); + send(data); } void ConsoleSession::doCommand(std::string request) { - saveCursor(); - setCursorLocation(16, 1); - out << "--> " << request << std::endl; - server.commands.processRequest(request, this, out); - restoreCursor(); - send(); - } + saveCursor(); + setCursorLocation(16, 1); + std::stringstream out; + out << "--> " << request << std::endl; + server.commands.processRequest(request, this, out); + restoreCursor(); + send(out.str()); + } } diff --git a/ConsoleSession.h b/ConsoleSession.h index d0202b2..6bb7683 100644 --- a/ConsoleSession.h +++ b/ConsoleSession.h @@ -24,7 +24,7 @@ namespace core { void writeLog(std::string data); protected: - void protocol(std::string data) override; + void protocol(std::stringstream &out, std::string data) override; private: enum Status {WELCOME, LOGIN, WAIT_USER_PROFILE, PASSWORD, WAIT_PASSWORD, PROMPT, INPUT, PROCESS, DONE}; diff --git a/EPoll.cpp b/EPoll.cpp index 49c90b9..5ec15bc 100644 --- a/EPoll.cpp +++ b/EPoll.cpp @@ -69,20 +69,23 @@ namespace core { } bool EPoll::registerSocket(Socket *socket) { - lock.lock(); + coreutils::Log(coreutils::LOG_DEBUG_2) << "0001-" << socket->getDescriptor(); std::map::iterator temp = sockets.find(socket->getDescriptor()); + coreutils::Log(coreutils::LOG_DEBUG_2) << "0002-" << socket->getDescriptor(); if(temp != sockets.end()) throw coreutils::Exception("Attempt to register socket that is already registered."); + coreutils::Log(coreutils::LOG_DEBUG_2) << "0003-" << socket->getDescriptor(); coreutils::Log(coreutils::LOG_DEBUG_3) << "Registering socket " << socket->getDescriptor() << "."; sockets.insert(std::pair(socket->getDescriptor(), socket)); - lock.unlock(); - socket->enable(true); + coreutils::Log(coreutils::LOG_DEBUG_2) << "0004-" << socket->getDescriptor(); + enableSocket(socket); + coreutils::Log(coreutils::LOG_DEBUG_2) << "0005-" << socket->getDescriptor(); return true; } bool EPoll::unregisterSocket(Socket *socket /**< The Socket to unregister. */) { lock.lock(); - socket->enable(false); + disableSocket(socket); coreutils::Log(coreutils::LOG_DEBUG_3) << "Unregistering socket " << socket->getDescriptor() << "."; std::map::iterator temp = sockets.find(socket->getDescriptor()); if(temp == sockets.end()) @@ -93,15 +96,16 @@ namespace core { } void EPoll::eventReceived(struct epoll_event event) { - lock.lock(); std::map::iterator socket = sockets.find(event.data.fd); - lock.unlock(); - if(socket != sockets.end()) { - (socket->second)->eventReceived(event); - } else { - coreutils::Log(coreutils::LOG_WARN) << "System problem. Reference to socket " << event.data.fd << " that has no object."; - throw coreutils::Exception("System problem occurred."); - } + if(socket != sockets.end()) { + if(socket->second->eventReceived(event)) { + coreutils::Log(coreutils::LOG_DEBUG_4) << "resetSocket from eventReceived."; + resetSocket(socket->second); + } + } + else + throw coreutils::Exception("Reference to socket that has no object."); + } int EPoll::getDescriptor() { @@ -114,8 +118,37 @@ namespace core { data << "|" << ++sequence; threadx.output(data); data << "|" << std::endl; - } - + } } + void EPoll::enableSocket(Socket *socket) { + struct epoll_event event; + event.data.fd = socket->getDescriptor(); + event.events = EPOLLIN | EPOLLONESHOT | EPOLLRDHUP | EPOLLET; + if(socket->needsToWrite()) + event.events |= EPOLLWRNORM; + epoll_ctl(epfd, EPOLL_CTL_ADD, event.data.fd, &event); + socket->active = true; + coreutils::Log(coreutils::LOG_DEBUG_4) << "Enabling socket " << socket->getDescriptor() << " for events."; + } + + void EPoll::disableSocket(Socket *socket) { + epoll_ctl(epfd, EPOLL_CTL_DEL, socket->getDescriptor(), NULL); + socket->active = false; + coreutils::Log(coreutils::LOG_DEBUG_4) << "Disabling socket " << socket->getDescriptor() << " from events."; + } + + void EPoll::resetSocket(Socket *socket) { + if(!socket->active) + return; + coreutils::Log(coreutils::LOG_DEBUG_4) << "ResetSocket " << socket; + struct epoll_event event; + event.data.fd = socket->getDescriptor(); + event.events = EPOLLIN | EPOLLONESHOT | EPOLLRDHUP | EPOLLET; + if(socket->needsToWrite()) + event.events |= EPOLLWRNORM; + epoll_ctl(epfd, EPOLL_CTL_MOD, event.data.fd, &event); + coreutils::Log(coreutils::LOG_DEBUG_4) << "Resetting socket " << socket->getDescriptor() << " for events."; + } + } diff --git a/EPoll.h b/EPoll.h index f86dd31..c23cb01 100644 --- a/EPoll.h +++ b/EPoll.h @@ -39,7 +39,7 @@ namespace core { EPoll(); /// - /// The destructor for the BMAEPoll object. + /// The destructor for the BMAEPoll object. /// ~EPoll(); @@ -111,7 +111,9 @@ namespace core { /// int processCommand(std::string command, TCPSession *session, std::stringstream &data) override; /// threads; volatile bool terminateThreads; std::mutex lock; - + void enableSocket(Socket *socket); + void disableSocket(Socket *socket); + }; } diff --git a/INotify.cpp b/INotify.cpp new file mode 100644 index 0000000..82e94cb --- /dev/null +++ b/INotify.cpp @@ -0,0 +1,58 @@ +#include "INotify.h" +#include "Log.h" + +namespace core { + + INotify::INotify(EPoll &ePoll) : Socket(ePoll, "INotify") { + setDescriptor(inotify_init()); + } + + INotify::~INotify() { + shutdown(); + } + + int INotify::addWatch(std::string watch) { + return inotify_add_watch(getDescriptor(), watch.c_str(), IN_ALL_EVENTS); + } + + void INotify::removeWatch(int wd) { + inotify_rm_watch(getDescriptor(), wd); + } + + void INotify::onDataReceived(char *buffer, int len) { + const struct inotify_event *event; + char *ptr; + for (ptr = buffer; ptr < buffer + len; + ptr += sizeof(struct inotify_event) + event->len) { + event = (const struct inotify_event *) ptr; + + if(event->mask & IN_ACCESS) + inAccess(std::string(event->name)); + if(event->mask & IN_ATTRIB) + inAttrib(std::string(event->name)); + if(event->mask & IN_CLOSE_WRITE) + inCloseWrite(std::string(event->name)); + if(event->mask & IN_CLOSE_NOWRITE) + inCloseNoWrite(std::string(event->name)); + if(event->mask & IN_CREATE) + inCreate(std::string(event->name)); + if(event->mask & IN_DELETE) + inDelete(std::string(event->name)); + if(event->mask & IN_DELETE_SELF) + inDeleteSelf(std::string(event->name)); + if(event->mask & IN_MODIFY) + inModify(std::string(event->name)); + if(event->mask & IN_MOVE_SELF) + inMoveSelf(std::string(event->name)); + if(event->mask & IN_MOVED_FROM) + inMovedFrom(std::string(event->name)); + if(event->mask & IN_MOVED_TO) + inMovedTo(std::string(event->name)); + if(event->mask & IN_OPEN) + inOpen(std::string(event->name)); + + } + } + + +} diff --git a/INotify.h b/INotify.h new file mode 100644 index 0000000..2bc5091 --- /dev/null +++ b/INotify.h @@ -0,0 +1,37 @@ +#ifndef __INotify_h__ +# define __INotify_h__ + +#include "includes" +#include "Socket.h" + +namespace core { + + class INotify : Socket { + + public: + INotify(EPoll &ePoll); + ~INotify(); + + int addWatch(std::string watch); + void removeWatch(int wd); + + void onDataReceived(char *buffer, int len) override; + + virtual void inAccess(std::string name) {} + virtual void inAttrib(std::string name) {} + virtual void inCloseWrite(std::string name) {} + virtual void inCloseNoWrite(std::string name) {} + virtual void inCreate(std::string name) {} + virtual void inDelete(std::string name) {} + virtual void inDeleteSelf(std::string name) {} + virtual void inModify(std::string name) {} + virtual void inMoveSelf(std::string name) {} + virtual void inMovedFrom(std::string name) {} + virtual void inMovedTo(std::string name) {} + virtual void inOpen(std::string name) {} + + }; + +} + +#endif diff --git a/ParseString.h b/ParseString.h deleted file mode 100644 index 13e1e94..0000000 --- a/ParseString.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef __ParseString_h__ -#define __ParseString_h__ - -#include "includes" - -namespace core { - - class ParseString : std::string { - - public: - ParseString() {} - ParseString(std::string value) : std::string(value) {} - ParseString(std::string value, char delimiter) : std::string(value) { - - } - - void setDelimiter(char delimiter) { - this->delimiter = delimiter; - parse(); - } - - private: - char delimiter; - - void parse() { - - std::stringstream sstring((std::string)*this); - - sstring.imbue(std::locale(sstring.getloc(), new isDelimiter(':'))); - - - } - - struct isDelimiter : std::ctype { - char chr; - isDelimiter(char chr) : std::ctype(get_table()) { - this->chr = chr; - } - static mask const* get_table() { - static mask rc[table_size]; - rc[*chr] = std::ctype_base::space; - rc['\n'] = std::ctype_base::space; - return &rc[0]; - } - }; - - }; - -#endif diff --git a/Release/.d b/Release/.d deleted file mode 100644 index 8b13789..0000000 --- a/Release/.d +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Release/Command.cpp.o.d b/Release/Command.cpp.o.d deleted file mode 100644 index b34d48f..0000000 --- a/Release/Command.cpp.o.d +++ /dev/null @@ -1,18 +0,0 @@ -Release/Command.cpp.o: Command.cpp Command.h includes Object.h Session.h \ - TCPSocket.h Socket.h IPAddress.h SessionFilter.h - -Command.h: - -includes: - -Object.h: - -Session.h: - -TCPSocket.h: - -Socket.h: - -IPAddress.h: - -SessionFilter.h: diff --git a/Release/CommandList.cpp.o.d b/Release/CommandList.cpp.o.d deleted file mode 100644 index 48655fd..0000000 --- a/Release/CommandList.cpp.o.d +++ /dev/null @@ -1,21 +0,0 @@ -Release/CommandList.cpp.o: CommandList.cpp CommandList.h Session.h \ - TCPSocket.h includes Socket.h Object.h IPAddress.h SessionFilter.h \ - Command.h - -CommandList.h: - -Session.h: - -TCPSocket.h: - -includes: - -Socket.h: - -Object.h: - -IPAddress.h: - -SessionFilter.h: - -Command.h: diff --git a/Release/ConsoleServer.cpp.o.d b/Release/ConsoleServer.cpp.o.d deleted file mode 100644 index 7e6bd9e..0000000 --- a/Release/ConsoleServer.cpp.o.d +++ /dev/null @@ -1,40 +0,0 @@ -Release/ConsoleServer.cpp.o: ConsoleServer.cpp ConsoleServer.h includes \ - TCPServerSocket.h Socket.h Object.h TCPSocket.h IPAddress.h Service.h \ - CommandList.h Session.h SessionFilter.h Command.h EPoll.h Log.h File.h \ - Thread.h ConsoleSession.h TerminalSession.h - -ConsoleServer.h: - -includes: - -TCPServerSocket.h: - -Socket.h: - -Object.h: - -TCPSocket.h: - -IPAddress.h: - -Service.h: - -CommandList.h: - -Session.h: - -SessionFilter.h: - -Command.h: - -EPoll.h: - -Log.h: - -File.h: - -Thread.h: - -ConsoleSession.h: - -TerminalSession.h: diff --git a/Release/ConsoleSession.cpp.o.d b/Release/ConsoleSession.cpp.o.d deleted file mode 100644 index fb6b7ee..0000000 --- a/Release/ConsoleSession.cpp.o.d +++ /dev/null @@ -1,34 +0,0 @@ -Release/ConsoleSession.cpp.o: ConsoleSession.cpp ConsoleSession.h \ - TerminalSession.h includes Session.h TCPSocket.h Socket.h Object.h \ - IPAddress.h SessionFilter.h TCPServerSocket.h Service.h CommandList.h \ - Command.h Log.h File.h - -ConsoleSession.h: - -TerminalSession.h: - -includes: - -Session.h: - -TCPSocket.h: - -Socket.h: - -Object.h: - -IPAddress.h: - -SessionFilter.h: - -TCPServerSocket.h: - -Service.h: - -CommandList.h: - -Command.h: - -Log.h: - -File.h: diff --git a/Release/EPoll.cpp.o.d b/Release/EPoll.cpp.o.d deleted file mode 100644 index a88d067..0000000 --- a/Release/EPoll.cpp.o.d +++ /dev/null @@ -1,29 +0,0 @@ -Release/EPoll.cpp.o: EPoll.cpp Thread.h includes Log.h File.h Object.h \ - Session.h TCPSocket.h Socket.h IPAddress.h SessionFilter.h EPoll.h \ - Command.h Exception.h - -Thread.h: - -includes: - -Log.h: - -File.h: - -Object.h: - -Session.h: - -TCPSocket.h: - -Socket.h: - -IPAddress.h: - -SessionFilter.h: - -EPoll.h: - -Command.h: - -Exception.h: diff --git a/Release/Exception.cpp.o.d b/Release/Exception.cpp.o.d deleted file mode 100644 index 901ff87..0000000 --- a/Release/Exception.cpp.o.d +++ /dev/null @@ -1,12 +0,0 @@ -Release/Exception.cpp.o: Exception.cpp Exception.h includes Log.h File.h \ - Object.h - -Exception.h: - -includes: - -Log.h: - -File.h: - -Object.h: diff --git a/Release/File.cpp.o.d b/Release/File.cpp.o.d deleted file mode 100644 index 876a212..0000000 --- a/Release/File.cpp.o.d +++ /dev/null @@ -1,7 +0,0 @@ -Release/File.cpp.o: File.cpp File.h includes Exception.h - -File.h: - -includes: - -Exception.h: diff --git a/Release/Header.cpp.o.d b/Release/Header.cpp.o.d deleted file mode 100644 index 95a04c7..0000000 --- a/Release/Header.cpp.o.d +++ /dev/null @@ -1,11 +0,0 @@ -Release/Header.cpp.o: Header.cpp Header.h includes Object.h Log.h File.h - -Header.h: - -includes: - -Object.h: - -Log.h: - -File.h: diff --git a/Release/IPAddress.cpp.o.d b/Release/IPAddress.cpp.o.d deleted file mode 100644 index 6884819..0000000 --- a/Release/IPAddress.cpp.o.d +++ /dev/null @@ -1,7 +0,0 @@ -Release/IPAddress.cpp.o: IPAddress.cpp IPAddress.h includes Object.h - -IPAddress.h: - -includes: - -Object.h: diff --git a/Release/Log.cpp.o.d b/Release/Log.cpp.o.d deleted file mode 100644 index 8ade9d4..0000000 --- a/Release/Log.cpp.o.d +++ /dev/null @@ -1,40 +0,0 @@ -Release/Log.cpp.o: Log.cpp ConsoleSession.h TerminalSession.h includes \ - Session.h TCPSocket.h Socket.h Object.h IPAddress.h SessionFilter.h \ - TCPServerSocket.h Service.h CommandList.h Command.h Log.h File.h \ - ConsoleServer.h EPoll.h Thread.h - -ConsoleSession.h: - -TerminalSession.h: - -includes: - -Session.h: - -TCPSocket.h: - -Socket.h: - -Object.h: - -IPAddress.h: - -SessionFilter.h: - -TCPServerSocket.h: - -Service.h: - -CommandList.h: - -Command.h: - -Log.h: - -File.h: - -ConsoleServer.h: - -EPoll.h: - -Thread.h: diff --git a/Release/Response.cpp.o.d b/Release/Response.cpp.o.d deleted file mode 100644 index 19d2451..0000000 --- a/Release/Response.cpp.o.d +++ /dev/null @@ -1,12 +0,0 @@ -Release/Response.cpp.o: Response.cpp Response.h includes Object.h Log.h \ - File.h - -Response.h: - -includes: - -Object.h: - -Log.h: - -File.h: diff --git a/Release/Service.cpp.o.d b/Release/Service.cpp.o.d deleted file mode 100644 index ad1f7bd..0000000 --- a/Release/Service.cpp.o.d +++ /dev/null @@ -1,27 +0,0 @@ -Release/Service.cpp.o: Service.cpp Service.h Object.h includes \ - CommandList.h Session.h TCPSocket.h Socket.h IPAddress.h SessionFilter.h \ - Command.h TCPServerSocket.h Exception.h - -Service.h: - -Object.h: - -includes: - -CommandList.h: - -Session.h: - -TCPSocket.h: - -Socket.h: - -IPAddress.h: - -SessionFilter.h: - -Command.h: - -TCPServerSocket.h: - -Exception.h: diff --git a/Release/Session.cpp.o.d b/Release/Session.cpp.o.d deleted file mode 100644 index c345d00..0000000 --- a/Release/Session.cpp.o.d +++ /dev/null @@ -1,27 +0,0 @@ -Release/Session.cpp.o: Session.cpp Session.h TCPSocket.h includes \ - Socket.h Object.h IPAddress.h SessionFilter.h Log.h File.h Service.h \ - CommandList.h Command.h - -Session.h: - -TCPSocket.h: - -includes: - -Socket.h: - -Object.h: - -IPAddress.h: - -SessionFilter.h: - -Log.h: - -File.h: - -Service.h: - -CommandList.h: - -Command.h: diff --git a/Release/Socket.cpp.o.d b/Release/Socket.cpp.o.d deleted file mode 100644 index a22443f..0000000 --- a/Release/Socket.cpp.o.d +++ /dev/null @@ -1,29 +0,0 @@ -Release/Socket.cpp.o: Socket.cpp EPoll.h Log.h includes File.h Object.h \ - Socket.h Thread.h Session.h TCPSocket.h IPAddress.h SessionFilter.h \ - Command.h Exception.h - -EPoll.h: - -Log.h: - -includes: - -File.h: - -Object.h: - -Socket.h: - -Thread.h: - -Session.h: - -TCPSocket.h: - -IPAddress.h: - -SessionFilter.h: - -Command.h: - -Exception.h: diff --git a/Release/TCPServerSocket.cpp.o.d b/Release/TCPServerSocket.cpp.o.d deleted file mode 100644 index 4522fb1..0000000 --- a/Release/TCPServerSocket.cpp.o.d +++ /dev/null @@ -1,36 +0,0 @@ -Release/TCPServerSocket.cpp.o: TCPServerSocket.cpp TCPServerSocket.h \ - Socket.h includes Object.h TCPSocket.h IPAddress.h Service.h \ - CommandList.h Session.h SessionFilter.h Command.h EPoll.h Log.h File.h \ - Thread.h Exception.h - -TCPServerSocket.h: - -Socket.h: - -includes: - -Object.h: - -TCPSocket.h: - -IPAddress.h: - -Service.h: - -CommandList.h: - -Session.h: - -SessionFilter.h: - -Command.h: - -EPoll.h: - -Log.h: - -File.h: - -Thread.h: - -Exception.h: diff --git a/Release/TCPSocket.cpp.o.d b/Release/TCPSocket.cpp.o.d deleted file mode 100644 index b145dfa..0000000 --- a/Release/TCPSocket.cpp.o.d +++ /dev/null @@ -1,29 +0,0 @@ -Release/TCPSocket.cpp.o: TCPSocket.cpp TCPSocket.h includes Socket.h \ - Object.h IPAddress.h EPoll.h Log.h File.h Thread.h Session.h \ - SessionFilter.h Command.h Exception.h - -TCPSocket.h: - -includes: - -Socket.h: - -Object.h: - -IPAddress.h: - -EPoll.h: - -Log.h: - -File.h: - -Thread.h: - -Session.h: - -SessionFilter.h: - -Command.h: - -Exception.h: diff --git a/Release/TLSServerSocket.cpp.o.d b/Release/TLSServerSocket.cpp.o.d deleted file mode 100644 index 87cb129..0000000 --- a/Release/TLSServerSocket.cpp.o.d +++ /dev/null @@ -1,42 +0,0 @@ -Release/TLSServerSocket.cpp.o: TLSServerSocket.cpp TLSServerSocket.h \ - Socket.h includes Object.h TCPServerSocket.h TCPSocket.h IPAddress.h \ - Service.h CommandList.h Session.h SessionFilter.h Command.h TLSSession.h \ - TLSService.h EPoll.h Log.h File.h Thread.h Exception.h - -TLSServerSocket.h: - -Socket.h: - -includes: - -Object.h: - -TCPServerSocket.h: - -TCPSocket.h: - -IPAddress.h: - -Service.h: - -CommandList.h: - -Session.h: - -SessionFilter.h: - -Command.h: - -TLSSession.h: - -TLSService.h: - -EPoll.h: - -Log.h: - -File.h: - -Thread.h: - -Exception.h: diff --git a/Release/TLSSession.cpp.o.d b/Release/TLSSession.cpp.o.d deleted file mode 100644 index b342cd7..0000000 --- a/Release/TLSSession.cpp.o.d +++ /dev/null @@ -1,42 +0,0 @@ -Release/TLSSession.cpp.o: TLSSession.cpp TLSSession.h includes Session.h \ - TCPSocket.h Socket.h Object.h IPAddress.h SessionFilter.h \ - TLSServerSocket.h TCPServerSocket.h Service.h CommandList.h Command.h \ - TLSService.h EPoll.h Log.h File.h Thread.h Exception.h - -TLSSession.h: - -includes: - -Session.h: - -TCPSocket.h: - -Socket.h: - -Object.h: - -IPAddress.h: - -SessionFilter.h: - -TLSServerSocket.h: - -TCPServerSocket.h: - -Service.h: - -CommandList.h: - -Command.h: - -TLSService.h: - -EPoll.h: - -Log.h: - -File.h: - -Thread.h: - -Exception.h: diff --git a/Release/TerminalSession.cpp.o.d b/Release/TerminalSession.cpp.o.d deleted file mode 100644 index ef0c5ae..0000000 --- a/Release/TerminalSession.cpp.o.d +++ /dev/null @@ -1,27 +0,0 @@ -Release/TerminalSession.cpp.o: TerminalSession.cpp TerminalSession.h \ - includes Session.h TCPSocket.h Socket.h Object.h IPAddress.h \ - SessionFilter.h TCPServerSocket.h Service.h CommandList.h Command.h - -TerminalSession.h: - -includes: - -Session.h: - -TCPSocket.h: - -Socket.h: - -Object.h: - -IPAddress.h: - -SessionFilter.h: - -TCPServerSocket.h: - -Service.h: - -CommandList.h: - -Command.h: diff --git a/Release/Thread.cpp.o.d b/Release/Thread.cpp.o.d deleted file mode 100644 index c8df3bf..0000000 --- a/Release/Thread.cpp.o.d +++ /dev/null @@ -1,27 +0,0 @@ -Release/Thread.cpp.o: Thread.cpp Thread.h includes Log.h File.h Object.h \ - Session.h TCPSocket.h Socket.h IPAddress.h SessionFilter.h EPoll.h \ - Command.h - -Thread.h: - -includes: - -Log.h: - -File.h: - -Object.h: - -Session.h: - -TCPSocket.h: - -Socket.h: - -IPAddress.h: - -SessionFilter.h: - -EPoll.h: - -Command.h: diff --git a/Release/Timer.cpp.o.d b/Release/Timer.cpp.o.d deleted file mode 100644 index f00d51b..0000000 --- a/Release/Timer.cpp.o.d +++ /dev/null @@ -1,29 +0,0 @@ -Release/Timer.cpp.o: Timer.cpp Timer.h Socket.h includes Object.h EPoll.h \ - Log.h File.h Thread.h Session.h TCPSocket.h IPAddress.h SessionFilter.h \ - Command.h - -Timer.h: - -Socket.h: - -includes: - -Object.h: - -EPoll.h: - -Log.h: - -File.h: - -Thread.h: - -Session.h: - -TCPSocket.h: - -IPAddress.h: - -SessionFilter.h: - -Command.h: diff --git a/Release/UDPServerSocket.cpp.o.d b/Release/UDPServerSocket.cpp.o.d deleted file mode 100644 index bd373b2..0000000 --- a/Release/UDPServerSocket.cpp.o.d +++ /dev/null @@ -1,31 +0,0 @@ -Release/UDPServerSocket.cpp.o: UDPServerSocket.cpp UDPServerSocket.h \ - Socket.h includes Object.h UDPSocket.h Session.h TCPSocket.h IPAddress.h \ - SessionFilter.h Command.h EPoll.h Log.h File.h Thread.h - -UDPServerSocket.h: - -Socket.h: - -includes: - -Object.h: - -UDPSocket.h: - -Session.h: - -TCPSocket.h: - -IPAddress.h: - -SessionFilter.h: - -Command.h: - -EPoll.h: - -Log.h: - -File.h: - -Thread.h: diff --git a/Release/UDPSocket.cpp.o.d b/Release/UDPSocket.cpp.o.d deleted file mode 100644 index ad26910..0000000 --- a/Release/UDPSocket.cpp.o.d +++ /dev/null @@ -1,18 +0,0 @@ -Release/UDPSocket.cpp.o: UDPSocket.cpp UDPSocket.h Socket.h includes \ - Object.h Session.h TCPSocket.h IPAddress.h SessionFilter.h - -UDPSocket.h: - -Socket.h: - -includes: - -Object.h: - -Session.h: - -TCPSocket.h: - -IPAddress.h: - -SessionFilter.h: diff --git a/Socket.cpp b/Socket.cpp index 93e2e6f..24293e7 100644 --- a/Socket.cpp +++ b/Socket.cpp @@ -10,15 +10,29 @@ namespace core { buffer = (char *)malloc(4096); length = 4096; } + + Socket::Socket(EPoll &ePoll, std::string text) : ePoll(ePoll), text(text) { + coreutils::Log(coreutils::LOG_DEBUG_2) << "BMASocket object created [" << text << "]."; + buffer = (char *)malloc(4096); + length = 4096; + } Socket::~Socket() { - ePoll.unregisterSocket(this); - close(descriptor); free(buffer); + if(descriptor == -1) + return; onUnregister(); + ePoll.unregisterSocket(this); + coreutils::Log(coreutils::LOG_DEBUG_3) << "Socket destroyed for socket " << descriptor << "."; + close(descriptor); } void Socket::setDescriptor(int descriptor) { + if((descriptor == -1) && (errno == 24)) { + shutdown("Too many files open"); + coreutils::Exception("Too many files open. Refusing connection.");; + } + socketLock.lock(); coreutils::Log(coreutils::LOG_DEBUG_3) << "Descriptor set to " << descriptor << " for Socket."; if(descriptor < 3) throw coreutils::Exception("Descriptor out of range", __FILE__, __LINE__); @@ -26,6 +40,7 @@ namespace core { onRegister(); ePoll.registerSocket(this); onRegistered(); + socketLock.unlock(); } int Socket::getDescriptor() { @@ -43,43 +58,48 @@ namespace core { void Socket::onUnregister() {} - void Socket::eventReceived(struct epoll_event event) { - + bool Socket::eventReceived(struct epoll_event event) { + + coreutils::Log(coreutils::LOG_DEBUG_1) << "eventReceived on " << descriptor << "; shutDown = " << shutDown << "; active = " << active << ";"; + + socketLock.lock(); + if(event.events & EPOLLRDHUP) { + coreutils::Log(coreutils::LOG_DEBUG_1) << "start EPOLLRDHUP " << descriptor; readHangup = true; - enable(false); - shutdown(); - return; + shutdown("hangup received"); + return false; } - if(event.events & EPOLLIN) - receiveData(buffer, length); - - if(event.events & EPOLLOUT) - writeSocket(); + if(event.events & EPOLLIN) { + coreutils::Log(coreutils::LOG_DEBUG_1) << "start EPOLLIN " << descriptor; + receiveData(buffer, length); + } + + if(event.events & EPOLLWRNORM) { + coreutils::Log(coreutils::LOG_DEBUG_1) << "start EPOLLOUT " << descriptor; + writeSocket(); + } if(event.events & EPOLLHUP) { + coreutils::Log(coreutils::LOG_DEBUG_1) << "start EPOLLHUP " << descriptor; + coreutils::Log(coreutils::LOG_DEBUG_1) << "end shutting down" << descriptor; shutdown(); - return; + return false; } - - enable(true); + + coreutils::Log(coreutils::LOG_DEBUG_1) << "end with active = " << active << " on socket " << descriptor; + socketLock.unlock(); + + return active; } - void Socket::enable(bool mode) { - if(mode) { - if(fifo.empty()) { - if(!readHangup) { - active ? resetRead(): setRead(); - } - } - else { - active ? resetReadWrite(): setReadWrite(); - } - active = true; - } - else - clear(); + void Socket::onDataReceived(std::string data) { + throw coreutils::Exception("Need to override onDataReceived.", __FILE__, __LINE__, -1); + } + + void Socket::onDataReceived(char *buffer, int len) { + onDataReceived(std::string(buffer, len)); } void Socket::receiveData(char *buffer, int bufferLength) { @@ -91,7 +111,7 @@ namespace core { int error = -1; if((len = ::read(getDescriptor(), buffer, bufferLength)) >= 0) - onDataReceived(std::string(buffer, len)); + onDataReceived(buffer, len); else { error = errno; @@ -114,78 +134,47 @@ namespace core { } } -// void Socket::onConnected() { -// } - void Socket::writeSocket() { + if(shutDown) + return; + lock.lock(); if(fifo.size() > 0) { ::write(descriptor, fifo.front().c_str(), fifo.front().length()); fifo.pop(); - enable(true); + coreutils::Log(coreutils::LOG_DEBUG_4) << "reseSocket from writeSocket."; + if(active) + ePoll.resetSocket(this); } lock.unlock(); } - void Socket::write(std::string data) { + int Socket::write(std::string data) { + if(!active) + return -1; + lock.lock(); fifo.emplace(data); - enable(true); + coreutils::Log(coreutils::LOG_DEBUG_4) << "resetSocket from write. active is " << active; + if(active) + ePoll.resetSocket(this); lock.unlock(); + return 1; } void Socket::output(std::stringstream &out) { out << "|" << descriptor << "|"; } + + bool Socket::needsToWrite() { + return fifo.size() > 0; + } - void Socket::setRead() { - event.data.fd = descriptor; - event.events = EPOLLIN | EPOLLONESHOT | EPOLLRDHUP | EPOLLET; - epoll_ctl(ePoll.getDescriptor(), EPOLL_CTL_DEL, descriptor, NULL); - epoll_ctl(ePoll.getDescriptor(), EPOLL_CTL_ADD, event.data.fd, &event); - } - - void Socket::setWrite() { - event.data.fd = descriptor; - event.events = EPOLLOUT | EPOLLONESHOT | EPOLLRDHUP | EPOLLET; - epoll_ctl(ePoll.getDescriptor(), EPOLL_CTL_DEL, descriptor, NULL); - epoll_ctl(ePoll.getDescriptor(), EPOLL_CTL_ADD, descriptor, &event); - } - - void Socket::setReadWrite() { - event.data.fd = descriptor; - event.events = EPOLLIN | EPOLLWRNORM | EPOLLONESHOT | EPOLLRDHUP | EPOLLET; - epoll_ctl(ePoll.getDescriptor(), EPOLL_CTL_DEL, descriptor, NULL); - epoll_ctl(ePoll.getDescriptor(), EPOLL_CTL_ADD, descriptor, &event); - } - - void Socket::resetRead() { - event.data.fd = descriptor; - event.events = EPOLLIN | EPOLLONESHOT | EPOLLRDHUP | EPOLLET; - epoll_ctl(ePoll.getDescriptor(), EPOLL_CTL_MOD, descriptor, &event); - } - - void Socket::resetWrite() { - event.data.fd = descriptor; - event.events = EPOLLOUT | EPOLLONESHOT | EPOLLRDHUP | EPOLLET; - epoll_ctl(ePoll.getDescriptor(), EPOLL_CTL_MOD, descriptor, &event); - } - - void Socket::resetReadWrite() { - event.data.fd = descriptor; - event.events = EPOLLIN | EPOLLOUT | EPOLLONESHOT | EPOLLRDHUP | EPOLLET; - epoll_ctl(ePoll.getDescriptor(), EPOLL_CTL_MOD, descriptor, &event); - } - - void Socket::clear() { - epoll_ctl(ePoll.getDescriptor(), EPOLL_CTL_DEL, descriptor, NULL); - } - - void Socket::shutdown() { - coreutils::Log(coreutils::LOG_DEBUG_2) << "Shutdown requested on socket " << descriptor << "."; + void Socket::shutdown(std::string text) { + coreutils::Log(coreutils::LOG_DEBUG_2) << "Shutdown requested on socket " << descriptor << " with reason " << text << "."; shutDown = true; - enable(false); - delete this; + active = false; + delete this; } } diff --git a/Socket.h b/Socket.h index e0f54de..e30c35e 100644 --- a/Socket.h +++ b/Socket.h @@ -34,15 +34,20 @@ namespace core { public: Socket(EPoll &ePoll); + Socket(EPoll &ePoll, std::string text); ~Socket(); + /// + /// Use the shutdown() method to terminate the socket connection and remove resources. + /// This method is provided to ensure that all destructors are called for all inherited + /// objects without a virtual destructor. /// - void shutdown(); + void shutdown(std::string text = "unknown"); /// /// setDescriptor establishes the file descriptor for the socket and registers the socket - /// on the EPoll controller. setDescriptor will invoke the onRegister() event. + /// on the EPoll controller. setDescriptor will invoke the onRegister() event. /// void setDescriptor(int descriptor); /// fifo; - - bool active = false; - + }; } diff --git a/TCPServer.cpp b/TCPServer.cpp index c232933..5100253 100644 --- a/TCPServer.cpp +++ b/TCPServer.cpp @@ -6,17 +6,19 @@ namespace core { - TCPServer::TCPServer(EPoll &ePoll, IPAddress address) : TCPSocket(ePoll) { + TCPServer::TCPServer(EPoll &ePoll, IPAddress address, std::string text) + : TCPSocket(ePoll, text) { setDescriptor(socket(AF_INET, SOCK_STREAM, 0)); int yes = 1; setsockopt(getDescriptor(), SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)); if(bind(getDescriptor(), address.getPointer(), address.addressLength) < 0) throw coreutils::Exception("Error on bind to socket: " + std::to_string(errno)); - if(listen(getDescriptor(), 10) < 0) + if(listen(getDescriptor(), 20) < 0) throw coreutils::Exception("Error on listen to socket"); } - + TCPServer::~TCPServer() { + coreutils::Log(coreutils::LOG_DEBUG_2) << "Closing server socket " << getDescriptor() << "."; close(getDescriptor()); } @@ -52,7 +54,7 @@ namespace core { sessions.erase(cursor); } - void TCPServer::sessionErrorHandler(std::string errorString) { + void TCPServer::sessionErrorHandler(std::string errorString, std::stringstream &out) { throw coreutils::Exception(errorString); } @@ -61,7 +63,9 @@ namespace core { } void TCPServer::output(TCPSession *session) { - session->out << "|" << session->ipAddress.getClientAddressAndPort(); + std::stringstream out; + out << "|" << session->ipAddress.getClientAddressAndPort(); + session->send(out.str()); } int TCPServer::processCommand(std::string command, TCPSession *session, std::stringstream &data) { diff --git a/TCPServer.h b/TCPServer.h index 0ec4e27..436c0f1 100644 --- a/TCPServer.h +++ b/TCPServer.h @@ -35,7 +35,7 @@ namespace core { /// @return the instance of the BMATCPServerSocket. /// - TCPServer(EPoll &ePoll, IPAddress address); + TCPServer(EPoll &ePoll, IPAddress address, std::string text = ""); /// /// The destructor for this object. @@ -50,6 +50,7 @@ namespace core { /// IPAddressList *blackList; + /// /// If not NULL the blacklist object can be assigned to this server socket and the server /// IP addresses connecting to the server attempting to accept a socket are contained in @@ -60,7 +61,7 @@ namespace core { void removeFromSessionList(TCPSession *session); - virtual void sessionErrorHandler(std::string errorString); + virtual void sessionErrorHandler(std::string errorString, std::stringstream &out); /// /// getSocketAccept is designed to allow a polymorphic extension of this object to diff --git a/TCPSession.cpp b/TCPSession.cpp index 7be979f..e608fe7 100644 --- a/TCPSession.cpp +++ b/TCPSession.cpp @@ -1,11 +1,14 @@ #include "TCPSession.h" #include "TCPServer.h" #include "Log.h" +#include "PString.h" namespace core { - + TCPSession::TCPSession(EPoll &ePoll, TCPServer &server) : TCPSocket(ePoll), server(server) {} + TCPSession::TCPSession(EPoll &ePoll, TCPServer &server, std::string text) : TCPSocket(ePoll, text), server(server) {} + TCPSession::~TCPSession() { server.removeFromSessionList(this); } @@ -14,43 +17,45 @@ namespace core { data << "|" << ipAddress.getClientAddressAndPort(); } - void TCPSession::protocol(std::string data = "") { + void TCPSession::protocol(std::stringstream &out, std::string data = "") { if(data.length() > 0) { if(!server.commands.processRequest(data, this, out)) - server.sessionErrorHandler("Invalid data received."); - send(); - } + server.sessionErrorHandler("Invalid data received.", out); + } + else { + onConnected(out); + } } void TCPSession::onRegister() { - protocol(); + std::stringstream out; + protocol(out); + send(out.str()); } - + + void TCPSession::onConnected(std::stringstream &out) {} + void TCPSession::onDataReceived(std::string data) { - protocol(data); + std::stringstream out; + protocol(out, data); + send(out.str()); } - void TCPSession::sendToAll() { - for(auto session : server.sessions) { - if(session != this) - session->write(out.str()); - } - out.str(""); + void TCPSession::sendToAll(std::string data) { + for(auto session : server.sessions) + if(session != this) + session->write(data); } - void TCPSession::sendToAll(SessionFilter filter) { - for(auto session : server.sessions) { - if(filter.test(*session)) { - if(session != this) - session->write(out.str()); - } - } - out.str(""); + void TCPSession::sendToAll(SessionFilter filter, std::string data) { + for(auto session : server.sessions) + if(filter.test(*session)) + if(session != this) + session->write(data); } - void TCPSession::send() { - write(out.str()); - out.str(""); + void TCPSession::send(std::string data) { + write(data); } } diff --git a/TCPSession.h b/TCPSession.h index 7f31099..abfd349 100644 --- a/TCPSession.h +++ b/TCPSession.h @@ -5,7 +5,9 @@ #include "SessionFilter.h" namespace core { - + + class Command; + class TCPServer; /// @@ -22,8 +24,11 @@ namespace core { public: TCPSession(EPoll &ePoll, TCPServer &server); + TCPSession(EPoll &ePoll, TCPServer &server, std::string text); ~TCPSession(); + Command *grab = NULL; + virtual void output(std::stringstream &data); /// @@ -31,14 +36,14 @@ namespace core { /// to the session containing the stream. /// - void send(); + void send(std::string data); /// /// Use this sendToAll method to output the contents of the out stream /// to all the connections on the server excluding the sender session. /// - void sendToAll(); + void sendToAll(std::string data); /// /// Use this sendToAll method to output the contents of the out stream @@ -46,9 +51,7 @@ namespace core { /// and the entries identified by the passed in filter object. /// - void sendToAll(SessionFilter filter); - - std::stringstream out; + void sendToAll(SessionFilter filter, std::string data); TCPServer &server; @@ -57,6 +60,14 @@ namespace core { virtual void onDataReceived(std::string data) override; virtual void onRegister() override; + /// + /// This method is called from within the protocol method when protocol is called + /// on the initial connection where the data is an empty string. Use this method + /// to deliver a message to the connection upon connection. + /// + + virtual void onConnected(std::stringstream &out); + /// /// Override the protocol method to manage and control the session communications /// in your inherited session. If you do not override this method then the Session @@ -64,7 +75,11 @@ namespace core { /// processRequest method on the session input. /// - virtual void protocol(std::string data); + virtual void protocol(std::stringstream &out, std::string data); + + private: + + std::mutex mtx; }; diff --git a/TCPSocket.cpp b/TCPSocket.cpp index 325e1b8..3ac3606 100644 --- a/TCPSocket.cpp +++ b/TCPSocket.cpp @@ -6,6 +6,8 @@ namespace core { TCPSocket::TCPSocket(EPoll &ePoll) : Socket(ePoll) {} + + TCPSocket::TCPSocket(EPoll &ePoll, std::string text) : Socket(ePoll, text) {} TCPSocket::~TCPSocket() {} diff --git a/TCPSocket.h b/TCPSocket.h index 1202e42..a5edfc7 100644 --- a/TCPSocket.h +++ b/TCPSocket.h @@ -22,6 +22,7 @@ namespace core { public: TCPSocket(EPoll &ePoll); + TCPSocket(EPoll &ePoll, std::string text); ~TCPSocket(); void connect(IPAddress &address); diff --git a/TLSSession.cpp b/TLSSession.cpp index a3cb654..c207379 100644 --- a/TLSSession.cpp +++ b/TLSSession.cpp @@ -82,7 +82,7 @@ namespace core { } - void TLSSession::protocol(std::string data) { + void TLSSession::protocol(std::stringstream &out, std::string data) { } diff --git a/TLSSession.h b/TLSSession.h index 12da72d..9a667c8 100644 --- a/TLSSession.h +++ b/TLSSession.h @@ -35,7 +35,7 @@ namespace core { /// virtual void output(std::stringstream &out); - virtual void protocol(std::string data) override; + virtual void protocol(std::stringstream &out, std::string data) override; protected: void receiveData(char *buffer, int bufferLength) override; diff --git a/TerminalSession.h b/TerminalSession.h index 69de50b..3054c56 100644 --- a/TerminalSession.h +++ b/TerminalSession.h @@ -45,6 +45,8 @@ namespace core { void NextLine(int lines); void PreviousLine(int lines); void scrollArea(int start, int end); + + std::stringstream out; }; diff --git a/Thread.cpp b/Thread.cpp index 7e4de56..88238bc 100644 --- a/Thread.cpp +++ b/Thread.cpp @@ -60,12 +60,12 @@ namespace core { } else if(rc > 0) { for(int ix = 0; ix < rc; ++ix) { ++count; -// std::cout << "Event " << events[ix].events << " on socket " << events[ix].data.fd << " on thread " << getThreadId() << ": "; -// std::cout << ((events[ix].events & EPOLLIN) ? "EPOLLIN ": ""); -// std::cout << ((events[ix].events & EPOLLOUT) ? "EPOLLOUT ": ""); -// std::cout << ((events[ix].events & EPOLLRDHUP) ? "EPOLLRDHUP ": ""); -// std::cout << ((events[ix].events & EPOLLHUP) ? "EPOLLHUP ": ""); -// std::cout << "." << std::endl; + std::cout << "Event " << events[ix].events << " on socket " << events[ix].data.fd << " on thread " << getThreadId() << ": "; + std::cout << ((events[ix].events & EPOLLIN) ? "EPOLLIN ": ""); + std::cout << ((events[ix].events & EPOLLWRNORM) ? "EPOLLWRNORM ": ""); + std::cout << ((events[ix].events & EPOLLRDHUP) ? "EPOLLRDHUP ": ""); + std::cout << ((events[ix].events & EPOLLHUP) ? "EPOLLHUP ": ""); + std::cout << "." << std::endl; ePoll.eventReceived(events[ix]); } } diff --git a/Timer.cpp b/Timer.cpp index 36c512a..8031ae8 100644 --- a/Timer.cpp +++ b/Timer.cpp @@ -2,7 +2,7 @@ namespace core { - Timer::Timer(EPoll &ePoll, double delay = 0.0f) : Socket(ePoll) { + Timer::Timer(EPoll &ePoll, double delay = 0.0f) : Socket(ePoll, "Timer") { setDescriptor(timerfd_create(CLOCK_REALTIME, 0)); ePoll.registerSocket(this); setTimer(delay); diff --git a/compile b/compile index a4f4037..6032a60 100755 --- a/compile +++ b/compile @@ -27,3 +27,6 @@ else exit -1 fi +echo -n "Building library documentation manual..." +doxygen docs/latex/doxygen.sty >/dev/null 2>/dev/null +echo "OK" diff --git a/docs/latex/html/bc_s.png b/docs/latex/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/docs/latex/html/bdwn.png b/docs/latex/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/docs/latex/html/doc.png b/docs/latex/html/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/docs/latex/html/doxygen.css b/docs/latex/html/doxygen.css new file mode 100644 index 0000000..4f1ab91 --- /dev/null +++ b/docs/latex/html/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.13 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/docs/latex/html/doxygen.png b/docs/latex/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 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 literal 0 HcmV?d00001 diff --git a/docs/latex/html/dynsections.js b/docs/latex/html/dynsections.js new file mode 100644 index 0000000..85e1836 --- /dev/null +++ b/docs/latex/html/dynsections.js @@ -0,0 +1,97 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (la9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/docs/latex/html/graph_legend.html b/docs/latex/html/graph_legend.html new file mode 100644 index 0000000..1625d6c --- /dev/null +++ b/docs/latex/html/graph_legend.html @@ -0,0 +1,102 @@ + + + + + + + +My Project: Graph Legend + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
class Invisible { };
/*! Truncated class, inheritance relation is hidden */
class Truncated : public Invisible { };
/* Class not documented with doxygen comments */
class Undocumented { };
/*! Class that is inherited using public inheritance */
class PublicBase : public Truncated { };
/*! A template class */
template<class T> class Templ { };
/*! Class that is inherited using protected inheritance */
class ProtectedBase { };
/*! Class that is inherited using private inheritance */
class PrivateBase { };
/*! Class that is used by the Inherited class */
class Used { };
/*! Super class that inherits a number of other classes */
class Inherited : public PublicBase,
protected ProtectedBase,
private PrivateBase,
public Undocumented,
public Templ<int>
{
private:
Used *m_usedClass;
};

This will result in the following graph:

+
+ +
+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+ + + + diff --git a/docs/latex/html/graph_legend.md5 b/docs/latex/html/graph_legend.md5 new file mode 100644 index 0000000..a06ed05 --- /dev/null +++ b/docs/latex/html/graph_legend.md5 @@ -0,0 +1 @@ +387ff8eb65306fa251338d3c9bd7bfff \ No newline at end of file diff --git a/docs/latex/html/graph_legend.png b/docs/latex/html/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..5ee31eeb7848f3fece8a1c2cab872e3c29022c93 GIT binary patch literal 20374 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 RXMz9#002ovPDHLkV1mhopSb`4 literal 0 HcmV?d00001 diff --git a/docs/latex/html/index.html b/docs/latex/html/index.html new file mode 100644 index 0000000..04e75a5 --- /dev/null +++ b/docs/latex/html/index.html @@ -0,0 +1,73 @@ + + + + + + + +My Project: Main Page + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
My Project Documentation
+
+
+
+ + + + diff --git a/docs/latex/html/jquery.js b/docs/latex/html/jquery.js new file mode 100644 index 0000000..f5343ed --- /dev/null +++ b/docs/latex/html/jquery.js @@ -0,0 +1,87 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
+
+
CommandList.h
+
+
+
1 #ifndef __CommandList_h__
2 #define __CommandList_h__
3 
4 #include "TCPSession.h"
5 #include "Command.h"
6 #include "Log.h"
7 
8 namespace core {
9 
17 
18  class CommandList : public Command {
19 
20  public:
21 
25 
26  void add(Command &command, std::string name = "");
27 
31 
32  void remove(Command &command);
33 
40 
41  bool processRequest(std::string request, TCPSession *session, std::stringstream &data);
42 
48 
49  bool grabInput(TCPSession *session, Command &command);
50 
54 
55  void clearGrab(TCPSession *session);
56 
60 
61  int processCommand(std::string request, TCPSession *session, std::stringstream &data);
62 
63  protected:
64 
68 
69  std::vector<Command *> commands;
70 
71  };
72 
73 }
74 
75 #endif
bool processRequest(std::string request, TCPSession *session, std::stringstream &data)
Definition: CommandList.cpp:15
+
bool grabInput(TCPSession *session, Command &command)
Definition: CommandList.cpp:33
+
Definition: Command.cpp:4
+
Definition: CommandList.h:18
+
Definition: TCPSession.h:23
+
Definition: Command.h:20
+
std::vector< Command * > commands
Definition: CommandList.h:69
+
void add(Command &command, std::string name="")
Definition: CommandList.cpp:6
+
int processCommand(std::string request, TCPSession *session, std::stringstream &data)
Definition: CommandList.cpp:41
+
+ + + + diff --git a/html/Command_8h_source.html b/html/Command_8h_source.html new file mode 100644 index 0000000..04c9209 --- /dev/null +++ b/html/Command_8h_source.html @@ -0,0 +1,81 @@ + + + + + + + +My Project: Command.h Source File + + + + + + + + + +
+
+
+ + + + + +
+
My Project +
+
+ + + + + + + + + + +
+
+ + +
+ +
+ +
+
+
Command.h
+
+
+
1 #ifndef __Command_h__
2 #define __Command_h__
3 
4 #include "includes"
5 #include "Object.h"
6 #include "TCPSession.h"
7 #include "PString.h"
8 
9 namespace core {
10 
11  class Session;
12 
19 
20  class Command : public Object {
21 
22  public:
23 
37 
38  virtual bool check(std::string request);
39 
50 
51  virtual int processCommand(std::string request, TCPSession *session, std::stringstream &data);
52 
58 
59  virtual void output(Session *session);
60 
69 
70  void setName(std::string name);
71 
72  std::string getName();
73 
74  private:
75  std::string name;
76 
77  };
78 
79 }
80 
81 #endif
Definition: Command.cpp:4
+
Definition: Object.h:8
+
Definition: TCPSession.h:23
+
void setName(std::string name)
Definition: Command.cpp:18
+
Definition: Command.h:20
+
virtual void output(Session *session)
Definition: Command.cpp:8
+
virtual int processCommand(std::string request, TCPSession *session, std::stringstream &data)
Definition: Command.cpp:6
+
virtual bool check(std::string request)
Definition: Command.cpp:10
+
+ + + + diff --git a/html/ConsoleServer_8h_source.html b/html/ConsoleServer_8h_source.html new file mode 100644 index 0000000..4524d34 --- /dev/null +++ b/html/ConsoleServer_8h_source.html @@ -0,0 +1,80 @@ + + + + + + + +My Project: ConsoleServer.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
ConsoleServer.h
+
+
+
1 #ifndef __ConsoleServer_h__
2 #define __ConsoleServer_h__
3 
4 #include "includes"
5 #include "TLSServer.h"
6 #include "Command.h"
7 #include "EPoll.h"
8 #include "LogListener.h"
9 
10 namespace core {
11 
12  class TCPSocket;
13  class TCPSession;
14 
18 
19  class ConsoleServer : public TLSServer, public coreutils::LogListener {
20 
21  public:
22 
23  //
24  //
25  //
26 
27  ConsoleServer(EPoll &ePoll, IPAddress address);
28 
29  //
30  //
31  //
32 
33  void logSend(std::string out) override;
34 
35  TCPSession * getSocketAccept(EPoll &ePoll) override;
36 
37  };
38 
39 }
40 
41 #endif
Definition: TLSServer.h:19
+
Definition: Command.cpp:4
+
Definition: EPoll.h:31
+
Definition: IPAddress.h:9
+
Definition: TCPSession.h:23
+
TCPSession * getSocketAccept(EPoll &ePoll) override
Definition: ConsoleServer.cpp:17
+
Definition: ConsoleServer.h:19
+
+ + + + diff --git a/html/ConsoleSession_8h_source.html b/html/ConsoleSession_8h_source.html new file mode 100644 index 0000000..6c13fd4 --- /dev/null +++ b/html/ConsoleSession_8h_source.html @@ -0,0 +1,79 @@ + + + + + + + +My Project: ConsoleSession.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
ConsoleSession.h
+
+
+
1 #ifndef __ConsoleSession_h__
2 #define __ConsoleSession_h__
3 
4 #include "TerminalSession.h"
5 #include "TCPSession.h"
6 #include "CommandList.h"
7 
8 namespace core {
9 
17 
19 
20  public:
21  ConsoleSession(EPoll &ePoll, TCPServer &server);
22  ~ConsoleSession();
23 
24  void writeLog(std::string data);
25 
26  protected:
27  void protocol(std::stringstream &out, std::string data) override;
28 
29  private:
30  enum Status {WELCOME, LOGIN, WAIT_USER_PROFILE, PASSWORD, WAIT_PASSWORD, PROMPT, INPUT, PROCESS, DONE};
31  Status status = WELCOME;
32  void doCommand(std::string request);
33  std::string command;
34 
35  };
36 
37 }
38 
39 #endif
Definition: ConsoleSession.h:18
+
Definition: Command.cpp:4
+
Definition: EPoll.h:31
+
void protocol(std::stringstream &out, std::string data) override
Definition: ConsoleSession.cpp:12
+
Definition: TCPServer.h:24
+
Definition: TerminalSession.h:30
+
+ + + + diff --git a/html/EPoll_8h_source.html b/html/EPoll_8h_source.html new file mode 100644 index 0000000..3d3b853 --- /dev/null +++ b/html/EPoll_8h_source.html @@ -0,0 +1,89 @@ + + + + + + + +My Project: EPoll.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
EPoll.h
+
+
+
1 #ifndef __EPoll_h__
2 #define __EPoll_h__
3 
4 #include "Log.h"
5 #include "Socket.h"
6 #include "Thread.h"
7 #include "TCPSession.h"
8 #include "Command.h"
9 
10 namespace core {
11 
30 
31  class EPoll : public Command {
32 
33  public:
34 
38 
39  EPoll();
40 
44 
45  ~EPoll();
46 
53 
54  bool start(int numberOfThreads, int maxSockets);
55 
61 
62  bool stop();
63 
68 
69  bool isStopping();
70 
79 
80  bool registerSocket(Socket *socket);
81 
85 
86  bool unregisterSocket(Socket *socket);
87 
91 
92  int getDescriptor();
93 
97 
98  int maxSockets;
99 
103 
104  void eventReceived(struct epoll_event event);
105 
112 
113  int processCommand(std::string command, TCPSession *session, std::stringstream &data) override;
114 
115  void resetSocket(Socket *socket);
116 
117  private:
118 
119  int epfd;
120  int numberOfThreads;
121  std::map<int, Socket *> sockets;
122  std::vector<Thread> threads;
123  volatile bool terminateThreads;
124  std::mutex lock;
125  void enableSocket(Socket *socket);
126  void disableSocket(Socket *socket);
127 
128  };
129 
130 }
131 
132 #endif
133 
void eventReceived(struct epoll_event event)
Dispatch event to appropriate socket.
Definition: EPoll.cpp:98
+
int processCommand(std::string command, TCPSession *session, std::stringstream &data) override
Output the threads array to the console.
Definition: EPoll.cpp:115
+
Definition: Command.cpp:4
+
Definition: EPoll.h:31
+
Definition: Socket.h:32
+
~EPoll()
Definition: EPoll.cpp:17
+
Definition: TCPSession.h:23
+
bool registerSocket(Socket *socket)
Register a BMASocket for monitoring by BMAEPoll.
Definition: EPoll.cpp:71
+
bool stop()
Stop and shut down the BMAEPoll processing.
Definition: EPoll.cpp:47
+
EPoll()
Definition: EPoll.cpp:8
+
bool start(int numberOfThreads, int maxSockets)
Start the BMAEPoll processing.
Definition: EPoll.cpp:21
+
Definition: Command.h:20
+
bool unregisterSocket(Socket *socket)
Unregister a BMASocket from monitoring by BMAEPoll.
Definition: EPoll.cpp:86
+
int maxSockets
The maximum number of socket allowed.
Definition: EPoll.h:98
+
bool isStopping()
Returns a true if the stop command has been requested.
Definition: EPoll.cpp:67
+
int getDescriptor()
Return the descriptor for the ePoll socket.
Definition: EPoll.cpp:111
+
+ + + + diff --git a/html/INotify_8h_source.html b/html/INotify_8h_source.html new file mode 100644 index 0000000..b0d8ba4 --- /dev/null +++ b/html/INotify_8h_source.html @@ -0,0 +1,77 @@ + + + + + + + +My Project: INotify.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
INotify.h
+
+
+
1 #ifndef __INotify_h__
2 # define __INotify_h__
3 
4 #include "includes"
5 #include "Socket.h"
6 
7 namespace core {
8 
9  class INotify : Socket {
10 
11  public:
12  INotify(EPoll &ePoll);
13  ~INotify();
14 
15  int addWatch(std::string watch);
16  void removeWatch(int wd);
17 
18  void onDataReceived(char *buffer, int len) override;
19 
20  virtual void inAccess(std::string name) {}
21  virtual void inAttrib(std::string name) {}
22  virtual void inCloseWrite(std::string name) {}
23  virtual void inCloseNoWrite(std::string name) {}
24  virtual void inCreate(std::string name) {}
25  virtual void inDelete(std::string name) {}
26  virtual void inDeleteSelf(std::string name) {}
27  virtual void inModify(std::string name) {}
28  virtual void inMoveSelf(std::string name) {}
29  virtual void inMovedFrom(std::string name) {}
30  virtual void inMovedTo(std::string name) {}
31  virtual void inOpen(std::string name) {}
32 
33  };
34 
35 }
36 
37 #endif
Definition: Command.cpp:4
+
Definition: EPoll.h:31
+
Definition: Socket.h:32
+
Definition: INotify.h:9
+
+ + + + diff --git a/html/IPAddressList_8h_source.html b/html/IPAddressList_8h_source.html new file mode 100644 index 0000000..30c8efd --- /dev/null +++ b/html/IPAddressList_8h_source.html @@ -0,0 +1,76 @@ + + + + + + + +My Project: IPAddressList.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
IPAddressList.h
+
+
+
1 #ifndef __IPAddressList_h__
2 #define __IPAddressList_h__
3 
4 #include "includes"
5 #include "IPAddress.h"
6 
7 namespace core {
8 
9  class IPAddressList {
10 
11  public:
12  IPAddressList();
13 
14  std::map<std::string, IPAddress> getList();
15  bool add(IPAddress ipAddress);
16  bool remove(IPAddress ipAddress);
17  bool contains(std::string ipAddress);
18 
19  private:
20  std::map<std::string, IPAddress> list;
21  std::map<std::string, IPAddress>::iterator it = list.begin();
22  };
23 
24 }
25 
26 #endif
Definition: Command.cpp:4
+
Definition: IPAddress.h:9
+
Definition: IPAddressList.h:9
+
+ + + + diff --git a/html/IPAddress_8h_source.html b/html/IPAddress_8h_source.html new file mode 100644 index 0000000..7d4c6f4 --- /dev/null +++ b/html/IPAddress_8h_source.html @@ -0,0 +1,79 @@ + + + + + + + +My Project: IPAddress.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
IPAddress.h
+
+
+
1 #ifndef __IPAddress_h__
2 #define __IPAddress_h__
3 
4 #include "includes"
5 #include "Object.h"
6 
7 namespace core {
8 
9  class IPAddress : public Object {
10 
11  public:
12  IPAddress();
13  IPAddress(std::string address);
14  IPAddress(std::string address, int port);
15  ~IPAddress();
16 
17  struct sockaddr_in addr;
18  socklen_t addressLength;
19 
20  struct sockaddr * getPointer();
21  std::string getClientAddress();
22  std::string getClientAddressAndPort();
23  int getClientPort();
24 
25  };
26 
27 }
28 
29 #endif
Definition: Command.cpp:4
+
std::string getClientAddress()
Get the client network address as xxx.xxx.xxx.xxx.
Definition: IPAddress.cpp:35
+
Definition: IPAddress.h:9
+
Definition: Object.h:8
+
int getClientPort()
Get the client network port number.
Definition: IPAddress.cpp:47
+
std::string getClientAddressAndPort()
Get the client network address and port as xxx.xxx.xxx.xxx:ppppp.
Definition: IPAddress.cpp:40
+
+ + + + diff --git a/html/Object_8h_source.html b/html/Object_8h_source.html new file mode 100644 index 0000000..f27335a --- /dev/null +++ b/html/Object_8h_source.html @@ -0,0 +1,75 @@ + + + + + + + +My Project: Object.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Object.h
+
+
+
1 #ifndef __Object_h__
2 #define __Object_h__
3 
4 #include "includes"
5 
6 namespace core {
7 
8  class Object {
9 
10  public:
11 
12  std::string name;
13  std::string tag;
14 
15  };
16 
17 }
18 
19 #endif
Definition: Command.cpp:4
+
Definition: Object.h:8
+
+ + + + diff --git a/html/SessionFilter_8h_source.html b/html/SessionFilter_8h_source.html new file mode 100644 index 0000000..1a5fad0 --- /dev/null +++ b/html/SessionFilter_8h_source.html @@ -0,0 +1,77 @@ + + + + + + + +My Project: SessionFilter.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
SessionFilter.h
+
+
+
1 #ifndef __SessionFilter_h__
2 #define __SessionFilter_h__
3 
4 //#include "Session.h"
5 
6 namespace core {
7 
8  class TCPSession;
9 
10  class SessionFilter : public Object {
11 
12  public:
13  virtual bool test(TCPSession &session) {
14  return true;
15  }
16 
17  };
18 
19 }
20 
21 #endif
Definition: SessionFilter.h:10
+
Definition: Command.cpp:4
+
Definition: Object.h:8
+
Definition: TCPSession.h:23
+
+ + + + diff --git a/html/Socket_8h_source.html b/html/Socket_8h_source.html new file mode 100644 index 0000000..949616a --- /dev/null +++ b/html/Socket_8h_source.html @@ -0,0 +1,86 @@ + + + + + + + +My Project: Socket.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Socket.h
+
+
+
1 #ifndef __Socket_h__
2 #define __Socket_h__
3 
4 #include "includes"
5 #include "Object.h"
6 
7 namespace core {
8 
9  class EPoll;
10 
31 
32  class Socket : public core::Object {
33 
34  public:
35 
36  Socket(EPoll &ePoll);
37  Socket(EPoll &ePoll, std::string text);
38  ~Socket();
39 
45 
46  void shutdown(std::string text = "unknown");
47 
52 
53  void setDescriptor(int descriptor);
54 
55  int getDescriptor();
56 
57  class {
58  int value;
59 
60  public:
61  int & operator = (const int &i) { return value = i; }
62  operator int () const { return value; }
63 
64  } bufferSize;
65 
75 
76  bool eventReceived(struct epoll_event event);
77 
81 
82  int write(std::string data);
83  void write(char *buffer, int length);
84 
85  void output(std::stringstream &out);
86 
93 
94  virtual void onRegister();
95  virtual void onRegistered();
96 
103 
104  virtual void onUnregister();
105 
106  bool needsToWrite();
107 
108  bool active = false;
109 
110  protected:
111 
112  EPoll &ePoll; // The EPoll control object.
113 
114  bool shutDown = false;
115 
116  void setBufferSize(int length);
117 
123 
124 // virtual void onConnected(); ///< Called when socket is open and ready to communicate.
125 
129 
130 // virtual void onDisconnected(); ///< Called when socket is closing and no longer ready to communicate.
131 
139 
140  virtual void onDataReceived(std::string data);
141 
142  virtual void onDataReceived(char *buffer, int len);
143 
148 
149  virtual void receiveData(char *buffer, int bufferLength);
150 
151  private:
152 
153  std::string text;
154  int descriptor = -1;
155  std::mutex lock;
156  std::mutex socketLock;
157  bool readHangup = false;
158 
159 // struct epoll_event event; // Event selection construction structure.
160 
161  //-------------------------------------------------------------------------------------
162  // the writeSocket is called when epoll has received a write request for a socket.
163  // Writing data to this socket is queued in the streambuf and permission is requested
164  // to write to the socket. This routine handles the writing of the streambuf data
165  // buffer to the socket.
166  //-------------------------------------------------------------------------------------
167 
168  void writeSocket();
169 
170  // int_type underflow();
171 // int_type uflow();
172 // int_type pbackfail(int_type ch);
173 // streamsize showmanyc();
174 
175  char *buffer; // This is a pointer to the managed buffer space.
176  int length; // This is the length of the buffer.
177 
178 // const char * const begin_;
179 // const char * const end_;
180 // const char * const current_;
181 
182  std::queue<std::string> fifo;
183 
184  };
185 
186 }
187 
188 #endif
189 
Definition: Command.cpp:4
+
Definition: EPoll.h:31
+
Definition: Socket.h:32
+
Definition: Object.h:8
+
virtual void onRegister()
Called when the socket has finished registering with the epoll processing.
Definition: Socket.cpp:57
+
virtual void receiveData(char *buffer, int bufferLength)
Definition: Socket.cpp:107
+
int write(std::string data)
Definition: Socket.cpp:154
+
bool eventReceived(struct epoll_event event)
Parse epoll event and call specified callbacks.
Definition: Socket.cpp:63
+
virtual void onDataReceived(std::string data)
Called when data is received from the socket.
Definition: Socket.cpp:99
+
void setDescriptor(int descriptor)
Set the descriptor for the socket.
Definition: Socket.cpp:32
+
int getDescriptor()
Get the descriptor for the socket.
Definition: Socket.cpp:48
+
virtual void onUnregister()
Called when the socket has finished unregistering for the epoll processing.
Definition: Socket.cpp:61
+
void shutdown(std::string text="unknown")
Definition: Socket.cpp:175
+
+ + + + diff --git a/html/TCPServer_8h_source.html b/html/TCPServer_8h_source.html new file mode 100644 index 0000000..8277498 --- /dev/null +++ b/html/TCPServer_8h_source.html @@ -0,0 +1,92 @@ + + + + + + + +My Project: TCPServer.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
TCPServer.h
+
+
+
1 #ifndef __TCPServer_h__
2 #define __TCPServer_h__
3 
4 #include "Socket.h"
5 #include "TCPSocket.h"
6 #include "IPAddressList.h"
7 #include "Command.h"
8 #include "CommandList.h"
9 
10 namespace core {
11 
23 
24  class TCPServer : public TCPSocket, public Command {
25 
26  public:
27 
37 
38  TCPServer(EPoll &ePoll, IPAddress address, std::string text = "");
39 
43 
44  ~TCPServer();
45 
51 
53 
59 
61 
62  void removeFromSessionList(TCPSession *session);
63 
64  virtual void sessionErrorHandler(std::string errorString, std::stringstream &out);
65 
73 
74  virtual TCPSession * getSocketAccept(EPoll &epoll);
75 
76  void output(TCPSession *session);
77 
81 
82  std::vector<TCPSession *> sessions;
83 
88 
90 
91  protected:
92 
102 
103  void onDataReceived(std::string data) override;
104 
111 
112  int processCommand(std::string command, TCPSession *session, std::stringstream &data) override;
113 
114  private:
115 
116  TCPSession * accept();
117 
118  };
119 
120 }
121 
122 #endif
IPAddressList * blackList
Definition: TCPServer.h:52
+
void onDataReceived(std::string data) override
Definition: TCPServer.cpp:25
+
TCPServer(EPoll &ePoll, IPAddress address, std::string text="")
Definition: TCPServer.cpp:9
+
Definition: Command.cpp:4
+
Definition: EPoll.h:31
+
std::vector< TCPSession * > sessions
Definition: TCPServer.h:82
+
Definition: IPAddress.h:9
+
Definition: CommandList.h:18
+
int processCommand(std::string command, TCPSession *session, std::stringstream &data) override
Definition: TCPServer.cpp:71
+
Definition: TCPSocket.h:20
+
Definition: TCPSession.h:23
+
IPAddressList * whiteList
Definition: TCPServer.h:60
+
Definition: Command.h:20
+
Definition: TCPServer.h:24
+
void output(TCPSession *session)
Output the consoles array to the console.
Definition: TCPServer.cpp:65
+
~TCPServer()
Definition: TCPServer.cpp:20
+
Definition: IPAddressList.h:9
+
CommandList commands
Definition: TCPServer.h:89
+
virtual TCPSession * getSocketAccept(EPoll &epoll)
Definition: TCPServer.cpp:61
+
+ + + + diff --git a/html/TCPSession_8h_source.html b/html/TCPSession_8h_source.html new file mode 100644 index 0000000..f5b5003 --- /dev/null +++ b/html/TCPSession_8h_source.html @@ -0,0 +1,87 @@ + + + + + + + +My Project: TCPSession.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
TCPSession.h
+
+
+
1 #ifndef __Session_h__
2 #define __Session_h__
3 
4 #include "TCPSocket.h"
5 #include "SessionFilter.h"
6 
7 namespace core {
8 
9  class Command;
10 
11  class TCPServer;
12 
22 
23  class TCPSession : public TCPSocket {
24 
25  public:
26  TCPSession(EPoll &ePoll, TCPServer &server);
27  TCPSession(EPoll &ePoll, TCPServer &server, std::string text);
28  ~TCPSession();
29 
30  Command *grab = NULL;
31 
32  virtual void output(std::stringstream &data);
33 
38 
39  void send(std::string data);
40 
45 
46  void sendToAll(std::string data);
47 
53 
54  void sendToAll(SessionFilter filter, std::string data);
55 
56  TCPServer &server;
57 
58  protected:
59 
60  virtual void onDataReceived(std::string data) override;
61  virtual void onRegister() override;
62 
68 
69  virtual void onConnected(std::stringstream &out);
70 
77 
78  virtual void protocol(std::stringstream &out, std::string data);
79 
80  private:
81 
82  std::mutex mtx;
83 
84  };
85 
86 }
87 
88 #endif
virtual void onDataReceived(std::string data) override
Called when data is received from the socket.
Definition: TCPSession.cpp:38
+
virtual void onConnected(std::stringstream &out)
Definition: TCPSession.cpp:36
+
virtual void onRegister() override
Called when the socket has finished registering with the epoll processing.
Definition: TCPSession.cpp:30
+
Definition: SessionFilter.h:10
+
Definition: Command.cpp:4
+
Definition: EPoll.h:31
+
void sendToAll(std::string data)
Definition: TCPSession.cpp:44
+
Definition: TCPSocket.h:20
+
void send(std::string data)
Definition: TCPSession.cpp:57
+
Definition: TCPSession.h:23
+
Definition: Command.h:20
+
virtual void output(std::stringstream &data)
Definition: TCPSession.cpp:16
+
Definition: TCPServer.h:24
+
virtual void protocol(std::stringstream &out, std::string data)
Definition: TCPSession.cpp:20
+
+ + + + diff --git a/html/TCPSocket_8h_source.html b/html/TCPSocket_8h_source.html new file mode 100644 index 0000000..10e54d4 --- /dev/null +++ b/html/TCPSocket_8h_source.html @@ -0,0 +1,79 @@ + + + + + + + +My Project: TCPSocket.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
TCPSocket.h
+
+
+
1 #ifndef __TCPSocket_h__
2 #define __TCPSocket_h__
3 
4 #include "includes"
5 #include "Socket.h"
6 #include "IPAddress.h"
7 
8 namespace core {
9 
19 
20  class TCPSocket : public Socket {
21 
22  public:
23 
24  TCPSocket(EPoll &ePoll);
25  TCPSocket(EPoll &ePoll, std::string text);
26  ~TCPSocket();
27 
28  void connect(IPAddress &address);
29 
30  IPAddress ipAddress;
31 
38 
39  virtual void output(std::stringstream &out);
40 
41  };
42 
43 }
44 
45 #endif
Definition: Command.cpp:4
+
Definition: EPoll.h:31
+
Definition: IPAddress.h:9
+
Definition: Socket.h:32
+
Definition: TCPSocket.h:20
+
virtual void output(std::stringstream &out)
Definition: TCPSocket.cpp:21
+
+ + + + diff --git a/html/TLSServer_8h_source.html b/html/TLSServer_8h_source.html new file mode 100644 index 0000000..5433d93 --- /dev/null +++ b/html/TLSServer_8h_source.html @@ -0,0 +1,81 @@ + + + + + + + +My Project: TLSServer.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
TLSServer.h
+
+
+
1 #ifndef TLSServerSocket_h__
2 #define TLSServerSocket_h__
3 
4 #include "Socket.h"
5 #include "TCPServer.h"
6 #include "Command.h"
7 #include "TCPSession.h"
8 #include "IPAddress.h"
9 
10 namespace core {
11 
18 
19  class TLSServer : public TCPServer {
20 
21  public:
22 
31 
32  TLSServer(EPoll &ePoll, IPAddress address);
33 
37 
38  ~TLSServer();
39 
40  TCPSession * getSocketAccept();
41 
42  SSL_CTX *ctx;
43 
44  private:
45 
46  char *sip_cacert = (char *)"../testkeys/certs/pbxca.crt";
47  char *sip_cert = (char *)"../testkeys/certs/pbxserver.crt";
48  char *sip_key = (char *)"../testkeys/certs/pbxserver.key";
49 
50  };
51 
52 }
53 
54 #endif
Definition: TLSServer.h:19
+
Definition: Command.cpp:4
+
Definition: EPoll.h:31
+
TLSServer(EPoll &ePoll, IPAddress address)
Definition: TLSServer.cpp:22
+
Definition: IPAddress.h:9
+
Definition: TCPSession.h:23
+
~TLSServer()
Definition: TLSServer.cpp:58
+
Definition: TCPServer.h:24
+
+ + + + diff --git a/html/TLSSession_8h_source.html b/html/TLSSession_8h_source.html new file mode 100644 index 0000000..524e0d5 --- /dev/null +++ b/html/TLSSession_8h_source.html @@ -0,0 +1,82 @@ + + + + + + + +My Project: TLSSession.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
TLSSession.h
+
+
+
1 #ifndef __TLSSession_h__
2 #define __TLSSession_h__
3 
4 #include "includes"
5 #include "TCPSession.h"
6 #include "TLSServer.h"
7 #include <openssl/ssl.h>
8 
9 namespace core {
10 
11  class TLSServer;
12 
22 
23  class TLSSession : public TCPSession {
24 
25  public:
26 
27  TLSSession(EPoll &ePoll, TCPServer &server);
28  ~TLSSession();
29 
36 
37  virtual void output(std::stringstream &out);
38  virtual void protocol(std::stringstream &out, std::string data) override;
39 
40  protected:
41  void receiveData(char *buffer, int bufferLength) override;
42  void onRegister();
43  void onRegistered();
44 
45  private:
46  bool initialized = false;
47  SSL *ssl;
48 
49  };
50 
51 }
52 
53 #endif
Definition: Command.cpp:4
+
Definition: EPoll.h:31
+
virtual void protocol(std::stringstream &out, std::string data) override
Definition: TLSSession.cpp:85
+
Definition: TCPSession.h:23
+
virtual void output(std::stringstream &out)
Definition: TLSSession.cpp:122
+
Definition: TCPServer.h:24
+
Definition: TLSSession.h:23
+
void receiveData(char *buffer, int bufferLength) override
Definition: TLSSession.cpp:89
+
void onRegister()
Called when the socket has finished registering with the epoll processing.
Definition: TLSSession.cpp:36
+
+ + + + diff --git a/html/TerminalSession_8h_source.html b/html/TerminalSession_8h_source.html new file mode 100644 index 0000000..54d2513 --- /dev/null +++ b/html/TerminalSession_8h_source.html @@ -0,0 +1,78 @@ + + + + + + + +My Project: TerminalSession.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
TerminalSession.h
+
+
+
1 #ifndef __Terminal_h__
2 #define __Terminal_h__
3 
4 #include "includes"
5 #include "TLSSession.h"
6 #include "TCPServer.h"
7 
8 namespace core {
9 
10  static const int FG_BLACK = 30;
11  static const int FG_RED = 31;
12  static const int FG_GREEN = 32;
13  static const int FG_YELLOW = 33;
14  static const int FG_BLUE = 34;
15  static const int FG_MAGENTA = 35;
16  static const int FG_CYAN = 36;
17  static const int FG_WHITE = 37;
18 
19  static const int BG_BLACK = 40;
20  static const int BG_RED = 41;
21  static const int BG_GREEN = 42;
22  static const int BG_YELLOW = 43;
23  static const int BG_BLUE = 44;
24  static const int BG_MAGENTA = 45;
25  static const int BG_CYAN = 46;
26  static const int BG_WHITE = 47;
27 
28  static const char esc = 0x1b;
29 
30  class TerminalSession : public TLSSession {
31 
32  public:
33  TerminalSession(EPoll &ePoll, TCPServer &server);
34  ~TerminalSession();
35 
36  int getLines();
37 
38  void clear();
39  void clearEOL();
40  void setCursorLocation(int x, int y);
41  void setColor(int color);
42  void setBackColor(int color);
43  void saveCursor();
44  void restoreCursor();
45  void NextLine(int lines);
46  void PreviousLine(int lines);
47  void scrollArea(int start, int end);
48 
49  std::stringstream out;
50 
51  };
52 
53 }
54 
55 #endif
Definition: Command.cpp:4
+
Definition: EPoll.h:31
+
Definition: TCPServer.h:24
+
Definition: TerminalSession.h:30
+
Definition: TLSSession.h:23
+
+ + + + diff --git a/html/Thread_8h_source.html b/html/Thread_8h_source.html new file mode 100644 index 0000000..98710a3 --- /dev/null +++ b/html/Thread_8h_source.html @@ -0,0 +1,78 @@ + + + + + + + +My Project: Thread.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Thread.h
+
+
+
1 #ifndef __Thread_h__
2 #define __Thread_h__
3 
4 #include "includes"
5 #include "Log.h"
6 #include "Object.h"
7 #include "TCPSession.h"
8 
9 namespace core {
10 
11  class EPoll;
12 
20 
21  class Thread : public Object {
22 
23  public:
24  Thread(EPoll &ePoll);
25  ~Thread();
26 
30 
31  void start();
32  void join();
33  std::string getStatus();
34  pid_t getThreadId();
35  int getCount();
36  void output(std::stringstream &data);
37 
38  private:
39  EPoll &ePoll; // The EPoll control object.
40  std::string status;
41  int count;
42  std::thread *_thread;
43  void print_thread_start_log();
44  pid_t threadId;
45  void run();
46 
47  };
48 
49 }
50 
51 #endif
Definition: Thread.h:21
+
Definition: Command.cpp:4
+
Definition: EPoll.h:31
+
Definition: Object.h:8
+
void start()
Definition: Thread.cpp:10
+
+ + + + diff --git a/html/Timer_8h_source.html b/html/Timer_8h_source.html new file mode 100644 index 0000000..50fdcfb --- /dev/null +++ b/html/Timer_8h_source.html @@ -0,0 +1,81 @@ + + + + + + + +My Project: Timer.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Timer.h
+
+
+
1 #ifndef __Timer_h__
2 #define __Timer_h__
3 
4 #include "Socket.h"
5 #include "EPoll.h"
6 
7 namespace core {
8 
17 
18  class Timer : Socket {
19 
20  public:
21  Timer(EPoll &ePoll);
22  Timer(EPoll &ePoll, double delay);
23  ~Timer();
24 
32 
33  void setTimer(double delay);
34 
38 
39  void clearTimer();
40 
45 
46  double getElapsed();
47 
48  double getEpoch();
49 
50  protected:
51 
55 
56  virtual void onTimeout() = 0;
57 
58  private:
59  void onDataReceived(std::string data) override;
60  double delayValue;
61 
62  };
63 
64 }
65 
66 #endif
virtual void onTimeout()=0
+
Definition: Command.cpp:4
+
Definition: EPoll.h:31
+
Definition: Socket.h:32
+
void clearTimer()
Definition: Timer.cpp:34
+
void setTimer(double delay)
Definition: Timer.cpp:14
+
double getElapsed()
Definition: Timer.cpp:47
+
Definition: Timer.h:18
+
+ + + + diff --git a/html/UDPServerSocket_8h_source.html b/html/UDPServerSocket_8h_source.html new file mode 100644 index 0000000..fd20e68 --- /dev/null +++ b/html/UDPServerSocket_8h_source.html @@ -0,0 +1,79 @@ + + + + + + + +My Project: UDPServerSocket.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
UDPServerSocket.h
+
+
+
1 #ifndef __UDPServerSocket_h__
2 #define __UDPServerSocket_h__
3 
4 #include "Socket.h"
5 #include "UDPSocket.h"
6 #include "Command.h"
7 
8 namespace core {
9 
16 
17  class UDPServerSocket : public UDPSocket, public Command {
18 
19  public:
20 
21  UDPServerSocket(EPoll &ePoll, std::string url, short int port, std::string commandName);
22  ~UDPServerSocket();
23 
24  protected:
25 
26  //---------------------------------------------------------------
27  // Override the virtual dataReceived since for the server these
28  // are requests to accept the new connection socket.
29  //---------------------------------------------------------------
30 
31  void onDataReceived(std::string data) override;
32 
33  int processCommand(std::string request, std::stringstream &data);
34 
35  //------------------------------------------------------------------------------------
36  // The retrieved socket connections are placed into the client vector list.
37  //------------------------------------------------------------------------------------
38 
39  std::vector<Session *> sessions;
40 
41  private:
42 
43 
44  };
45 
46 }
47 
48 #endif
Definition: Command.cpp:4
+
Definition: EPoll.h:31
+
void onDataReceived(std::string data) override
Called when data is received from the socket.
Definition: UDPServerSocket.cpp:35
+
Definition: UDPServerSocket.h:17
+
Definition: Command.h:20
+
Definition: UDPSocket.h:8
+
+ + + + diff --git a/html/UDPSocket_8h_source.html b/html/UDPSocket_8h_source.html new file mode 100644 index 0000000..0f04a6d --- /dev/null +++ b/html/UDPSocket_8h_source.html @@ -0,0 +1,77 @@ + + + + + + + +My Project: UDPSocket.h Source File + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
UDPSocket.h
+
+
+
1 #ifndef UDPSocket_h__
2 #define UDPSocket_h__
3 
4 #include "Socket.h"
5 
6 namespace core {
7 
8  class UDPSocket : public Socket {
9 
10  public:
11  UDPSocket(EPoll &ePoll);
12  ~UDPSocket();
13 
14 // virtual int open(string address, short int port);
15 // virtual void write(istream data);
16 
17 };
18 
19 }
20 
21 #endif
Definition: Command.cpp:4
+
Definition: EPoll.h:31
+
Definition: Socket.h:32
+
Definition: UDPSocket.h:8
+
+ + + + diff --git a/html/annotated.html b/html/annotated.html new file mode 100644 index 0000000..b490d4e --- /dev/null +++ b/html/annotated.html @@ -0,0 +1,99 @@ + + + + + + + +My Project: Class List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 12]
+ + + + + + + + + + + + + + + + + + + + + + +
 Ncore
 CCommand
 CCommandList
 CConsoleServer
 CConsoleSession
 CEPoll
 CINotify
 CIPAddress
 CIPAddressList
 CObject
 CSessionFilter
 CSocket
 CTCPServer
 CTCPSession
 CTCPSocket
 CTerminalSession
 CThread
 CTimer
 CTLSServer
 CTLSSession
 CUDPServerSocket
 CUDPSocket
+
+
+ + + + diff --git a/html/bc_s.png b/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/html/bdwn.png b/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::Command Member List
+
+
+ +

This is the complete list of members for core::Command, including all inherited members.

+ + + + + + + +
check(std::string request)core::Commandvirtual
getName() (defined in core::Command)core::Command
output(Session *session)core::Commandvirtual
processCommand(std::string request, TCPSession *session, std::stringstream &data)core::Commandvirtual
setName(std::string name)core::Command
tag (defined in core::Object)core::Object
+ + + + diff --git a/html/classcore_1_1Command.html b/html/classcore_1_1Command.html new file mode 100644 index 0000000..41b40fc --- /dev/null +++ b/html/classcore_1_1Command.html @@ -0,0 +1,283 @@ + + + + + + + +My Project: core::Command Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::Command Class Reference
+
+
+ +

#include <Command.h>

+
+Inheritance diagram for core::Command:
+
+
Inheritance graph
+ + + + + + + + + +
[legend]
+
+Collaboration diagram for core::Command:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + +

+Public Member Functions

virtual bool check (std::string request)
 
virtual int processCommand (std::string request, TCPSession *session, std::stringstream &data)
 
virtual void output (Session *session)
 
void setName (std::string name)
 
+std::string getName ()
 
+ + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+

Detailed Description

+

Command

+

Use the Command object in combination with a CommandList object to maintain a list of functions that can be invoked as a result of processing a request.

+

Member Function Documentation

+ +

◆ check()

+ +
+
+ + + + + +
+ + + + + + + + +
bool core::Command::check (std::string request)
+
+virtual
+
+

Implement check method to provide a special check rule upon the request to see if the command should be processed.

+

The default rule is to verify that the first token in the request string matches the name given on the registration of the command to the CommandList. This can be overridden by implementing the check() method to perform the test and return the condition of the command.

+
Parameters
+ + +
requestThe request passed to the parser to check the rule.
+
+
+
Returns
Return true to execute the command. Returning false will cause no action on this command.
+ +
+
+ +

◆ output()

+ +
+
+ + + + + +
+ + + + + + + + +
void core::Command::output (Session * session)
+
+virtual
+
+

Specify the output that will occur to the specified session.

+
Parameters
+ + +
sessionThe session that will receive the output.
+
+
+ +
+
+ +

◆ processCommand()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
int core::Command::processCommand (std::string request,
TCPSessionsession,
std::stringstream & data 
)
+
+virtual
+
+

This method is used to implement the functionality of the requested command. This pure virtual function must be implemented in your inheriting object.

+
Parameters
+ + + +
requestThe request that was entered by the user to invoke this command.
sessionSpecify the requesting session so that the execution of the command process can return its output to the session.
+
+
+
Returns
Returns 0 if execution of the command was successful. Otherwise returns a non-zero value indicating an error condition.
+ +

Reimplemented in core::EPoll, core::TCPServer, and core::CommandList.

+ +
+
+ +

◆ setName()

+ +
+
+ + + + + + + + +
void core::Command::setName (std::string name)
+
+

Set the name of this command used in default rule checking during request parsing. NOTE: You do not need to call this under normal conditions as adding a Command to a CommandList using the add() method contains a parameter to pass the name of the Command.

+
Parameters
+ + +
nameSpecify the name of this command for default parsing.
+
+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1CommandList-members.html b/html/classcore_1_1CommandList-members.html new file mode 100644 index 0000000..d5129f7 --- /dev/null +++ b/html/classcore_1_1CommandList-members.html @@ -0,0 +1,92 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::CommandList Member List
+
+
+ +

This is the complete list of members for core::CommandList, including all inherited members.

+ + + + + + + + + + + + + +
add(Command &command, std::string name="")core::CommandList
check(std::string request)core::Commandvirtual
clearGrab(TCPSession *session) (defined in core::CommandList)core::CommandList
commandscore::CommandListprotected
getName() (defined in core::Command)core::Command
grabInput(TCPSession *session, Command &command)core::CommandList
output(Session *session)core::Commandvirtual
processCommand(std::string request, TCPSession *session, std::stringstream &data)core::CommandListvirtual
processRequest(std::string request, TCPSession *session, std::stringstream &data)core::CommandList
remove(Command &command)core::CommandList
setName(std::string name)core::Command
tag (defined in core::Object)core::Object
+ + + + diff --git a/html/classcore_1_1CommandList.html b/html/classcore_1_1CommandList.html new file mode 100644 index 0000000..5ce65a6 --- /dev/null +++ b/html/classcore_1_1CommandList.html @@ -0,0 +1,340 @@ + + + + + + + +My Project: core::CommandList Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::CommandList Class Reference
+
+
+ +

#include <CommandList.h>

+
+Inheritance diagram for core::CommandList:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for core::CommandList:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void add (Command &command, std::string name="")
 
void remove (Command &command)
 
bool processRequest (std::string request, TCPSession *session, std::stringstream &data)
 
bool grabInput (TCPSession *session, Command &command)
 
+void clearGrab (TCPSession *session)
 
int processCommand (std::string request, TCPSession *session, std::stringstream &data)
 
- Public Member Functions inherited from core::Command
virtual bool check (std::string request)
 
virtual void output (Session *session)
 
void setName (std::string name)
 
+std::string getName ()
 
+ + + +

+Protected Attributes

std::vector< Command * > commands
 
+ + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+

Detailed Description

+

CommandList

+

This object organizes Command objects into a list that is used to parse an input and run the process associated with the selected command.

+

Member Function Documentation

+ +

◆ add()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void core::CommandList::add (Commandcommand,
std::string name = "" 
)
+
+

Add a new command to the command list and assign a default search value.

+ +
+
+ +

◆ grabInput()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool core::CommandList::grabInput (TCPSessionsession,
Commandcommand 
)
+
+

Use grabInput() within a Command object to force the requesting handler to receive all further input from the socket. Use releaseGrab() method to release the session back to normal command processing.

+ +
+
+ +

◆ processCommand()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
int core::CommandList::processCommand (std::string request,
TCPSessionsession,
std::stringstream & data 
)
+
+virtual
+
+

This method is used to implement the functionality of the requested command. This pure virtual function must be implemented in your inheriting object.

+
Parameters
+ + + +
requestThe request that was entered by the user to invoke this command.
sessionSpecify the requesting session so that the execution of the command process can return its output to the session.
+
+
+
Returns
Returns 0 if execution of the command was successful. Otherwise returns a non-zero value indicating an error condition.
+ +

Reimplemented from core::Command.

+ +
+
+ +

◆ processRequest()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool core::CommandList::processRequest (std::string request,
TCPSessionsession,
std::stringstream & data 
)
+
+

Use this method to apply a parsed PString to the command set and execute the matching parameter. The selected command will return a true on a call to check(). If there is a handler that has a grab on the process handler then control is given to the process handler holding the grab on the input.

+ +
+
+ +

◆ remove()

+ +
+
+ + + + + + + + +
void core::CommandList::remove (Commandcommand)
+
+

Remove a command object from the command list.

+ +
+
+

Member Data Documentation

+ +

◆ commands

+ +
+
+ + + + + +
+ + + + +
std::vector<Command *> core::CommandList::commands
+
+protected
+
+

The vector of all registered commands.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1CommandList__coll__graph.map b/html/classcore_1_1CommandList__coll__graph.map new file mode 100644 index 0000000..e1c01a8 --- /dev/null +++ b/html/classcore_1_1CommandList__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/html/classcore_1_1CommandList__coll__graph.md5 b/html/classcore_1_1CommandList__coll__graph.md5 new file mode 100644 index 0000000..cd5e62b --- /dev/null +++ b/html/classcore_1_1CommandList__coll__graph.md5 @@ -0,0 +1 @@ +251a4f705f19771aaaaf81524803aa62 \ No newline at end of file diff --git a/html/classcore_1_1CommandList__coll__graph.png b/html/classcore_1_1CommandList__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b008d2735e08fc7d3f75408312b80cc8cbeb2eb4 GIT binary patch literal 6222 zcmchcWl$WzmhT4*?rwv-ObG5WxVs02kPHkK$l#I$26qApZoz{M&R_|e5Zpp=cLD?m z6Lh)v?!J9nweNk~t*-9#;dGrk)u*a||2`dKsINgxz(4>10Eo3T!Nw2v-NS6h!+lsG z3|0CM2G>zX0}QzT$0+D5dvMcXX@QkZ{d10%f@~8n?;oA~2;nW}!N=aa9&Z1|# z0jWo2p846t$Mg($#SeE$M2)zRxNawBw#(Kt4W>P5_=+qyxB~{_*hv1p53<+)-4{@6=q$3gr9blPh7YN>H=1`ws0gRCG~24 zHHZnEfrFc%U?fPxb?C>sv1CbZGEvxe-o7M;C>$Y zN{rFAC1~@r(Sj_hLe#1d9eQGeMjLRn3NA%V74jgbphWR^H>822cPxcgW`ZJ3QG-b= zb+seV?M2q$$u&ysnQ$f8`J~cqQBQ8Z9MV{x6nghNvfAT|^MUY7rfFK5@a6uh1mNoV zuy$5*WAEp0M=&c5mORCf#EwenGzt~qG!*nkl~AL|Ci?|Qw58X<^EG&jDm#xEKl9Q7 z?(!T@^_48q=^qUz2?BkAnmKPL{G95e)e!ZRmD!?{T@MI0)-y(;lf{IEpEyTp3dGbv zb2UeMC5lDb*MHbGBjE0*KiMTY4~hHir~#X7ftN%b&?zQ$A(=0GXLfjFf@Qa{unOm( zSEM~3KRzOnQv@U>vWP(K31h^t0pFbJVIz!pog7vqPxX0z4NP?s%6|R$3FE@j_gxwo zoTl@E)~C!|Uje?UkI4mQDJjvfF27zENXzEnv5R*(=PWAEBL5dK})aGwVZIVZ*JH}{^p?x`(+Ex{-5~ZyKOnP zj9L`|-D+@${l;H!E1j2fo|#l6TrkPxTd0wnA!7253dn_croM1117EMiaJZyJ4EVg1UuP;gY|N zF3^wbPZ*zh>0ziwPQe%qnx_j2mS8J_A4?ufNc=^AjQIX&mldO+Bk609$i5MHMLE7g zdN}rYDHhgNkF{ZATHkr0nM*WW_x{6CWmdrZ?2R$Rg%^*xx5|*7ap=;WWCP zJUXJGxoE95X1Bs5!8&xZw{@tQ7QjnMpLwxr9-^0PXcVqM`CKC#OG(z2~XrHLnSG3WLU-1~||8LMG0rFHkoV&N-V2 zYON=6~*w>*-Qpq>Y`RcN(w8FOIoBP;>#^fYS(f#E{@8^X} z2G-Zt#ja)5^z2x03`OjT8Jl^YH0*IwXf-|k-W|}H>PKuSf9qMGa0{0uVMaw36c`c# z?@F7$S4_2zna0G&+cGJJ5(4TxSDp)5m|S{g@Oz!_67#12ZK2AMB2U~IYxrcjelY;4 z>|5?EB#Qw90O{HZ92y?ZZAGYrUemW}X}US`j5z80{YR-77=_kV<-aySW~{usuoy^F z*2^^&vD9}{O{PXmgOExkB_-!fg91k+-Xjv*Y6tuQ2){;fFn>>vW1;y6qIcSACztmc zI%YE=Or_q3E3a`VV#IK~j+etar@c(l;7+~q#eT3o!-8gNFQljEi{Y~!=~RFUC&$u@+V3Qj#$ zdZZM5lk{-#H5)4Yt^^D1mBT_3EJKv1{B2c3;zqW1t--_;Z{>vRPZyHhB6#p~@hW}9k$d~c=f;vm zi*=;mBMsC({rEjr1WRSs3Pq?8Ajpp8ps-q?AsF9WysUw$^@#19`n_PTc8#CRiv^Wk+S#*XBC zkrgFn}L9Tb})6oyUhr-O{*eI{9$fjCJxdqolVP>?zQEAP0HeCj?CZ8%>VgniI4UgNR_$1^b z*l)O#)AgV2uca$8b-j{na@|rM^o}X#KHJV^6Zxb*?LG^H3kWBA9NoqrS{syXL>%qX z8yOf#tCf@(_KluSj|THIkC{y_>4kqA9*8gpcBvziHh6DpiN$IfSYjC4Qsv45k4do6 zGHS0NL+wguZV%A5pvK{tPV<(26Dl7nsi+$Ob#C^Nypqv1YK&%gBky$C(A$~Z+JudV zzh5$@X%cT~psWrm;LnoWnKOkwlaCtRF*DK_#mI7&NWG~fFfqFjW7f8LH}jXW-bt)< z&+zI(3km5BlN2q(J*%AJQxMIf5RHlU<~?0^^maC`%H=*D-*2xh+Oj3G)5`No>8d*d zKP`Krla}uTqiOQ2`U!IRC03^Y`J)q|r45bm6c|(w4CljIP{su8J8_m;7KG2ldE`tF zF}RyhBp2hdA`wmL#pTuLM{FmJ$x56Q%A6F1g=aKg zPluu|ZTD>*sTP+)^VWK0Fk_`+8yWWWao&fN$|SjiizAOaX7JiRyqVK!KTY3Z$5wQS$Hkc% ze2wRpd(E7v#>2+9PxpT8FOHb6T;N{X)cgOxaM*6{tE2Mt4^5hogno8ePr^fyC4OZr zW4jNf7^n@2oKSc&VQ1YNh)|LKI!dj|k6~&>`qFWWCTC~_tp0+FR-pI~`ut2{?)KE_ z2EC)#$0a|I`!4&j&$fhI`97}@h&VKBD&iKC-rNs=U|4|}B02nsoa6x6`$^}{g#@*G zI>S;`FPrc)#NFX6k9O48j`(L73vW=}M8xffZiq`ZR>txmuEg=^=alzxtoF;mKtKUe z|8{0Jxi$KO70hyanBH}aX#n2Yiw?B4pOZy7zLk3fbh{?B8EE{f7&2YXQs`@BKl}&T z>*dFo;de*Yu2;53SjL#4xc>-jil(x_pAWc+RD2=ck8#Xa=X#GD`8t5WSKuycO{9AK z_sl-BvZkg60BExnwp7-Y1+$YoiCVdP@T?D3ivITyG9@-LikTNKd|H0dB1tRqR1md% z&Tq`i86EEyDQuV8WT%~L@d+d?C530Ek$bVJ#Zg=$uJkmI4uxX43sniXwY42D)yuYS zGWsO2S{u%$YQAxGAth)fO2EQ$?9!ftim!cR!7cHJ&tuUa8<70{e!^Sa2N+dBaeZn3 z7M$80=dl!s2)b-tF{LLl;ljjJDKy=_dnLyBowSC%mgiHY=|W09a(f%9`0Twyy@*;?%WBN7un?GlE!Z!Ly$)(Nyq zD6nyVSJcQcl^T!cC4gZt^N6W*ZL<oHa<}Y5p(X4pN_h^uzoJ;V`1z*DT&GB zwl-}hgpw-58cfBLjhr7lAW>qAL>Fr z#+Gv?fH&RU-R}h|Y!(+6hZ2j8okZ!`?%%TAU}|zsvc(iv%pR1x)_S8Y&?{t-2!yFv zOy_`po*X_9nD1TYmH%J0PKPn1D4v(eRu(wL9Y0Wa&lrJZx$l3UZ0Y3sARl=3zd#YB z`p>CvK9xJ={Vwfvs@2WleL}=2-~AaFK$7u$rRikpTydCgj*QkkB<5nrM0sA=(4>!M zcVqq$jag?y?3tys2iGVe9m--89|zWldlx@-)NyjQ*yYSW1YD@B7LU&l36p*cJwf*3 z(Zw~|l&EV~fgFm=#9x@Q9t6-JGk_oi>-~xR73bBFP5dQXn^o2clueL=B)&5E ziZ_2P+bn!>akJPo zy9iC2Ge9)D2AymS+&+XNaUql?%2ogZ7c|zR@IQGeJfZ!-Qx#dW!X&jjErZ`AKT<)) zSV!f04F3|}v~Y4Zi3GKGP^_Q_S?}94wZTVEWAlsJ9j_P^(bbtG?YqR5S3y*1fC9YU zyjv?eIVhX0`y0!@l5LK(Dh9B0Z=oQI|Ta6M+rEJ$9=e@I=0te2o>e&!=B6fKHGpEc?AtB*qYFY z*)9d7OP*d6DE9pv=?hd;tjdN(9N0MZ&*S%|fLw={8z~j_8u}8dF;4U6HqCOY7tZaJ{rDyx)mH>?`{Z^#~cj9?=4MIJ)Ttu!IlU&N=d`7 z`n(p6Fq1PNyNxb%bDi>8Ivie`2Fx9b?%1ddhMrbCd)?bsVEtIGdLzY~IijUUK2cVX zey&J-7)9YwgQeMpX8ZarvJ*1@6+jch?69<|7tfHdxcEn2!*b^ZYeU_c*-`)(^J>?+ zMHPCQ++8oLs3L~#Ty!eMXfCl>2)Fe-qAd?YaQPKNPhUnf&5x{6gdA&I=*@x6k;D8j zw)>F=q~`KvW7S%PHFlUvVWjC8_EB!f>h<@s-J4Vy$tKtL#>qLb*p^`eQd)L8%gg@p zqP+_LKZ{heLiTdU=9805LX#qE^cZB>g+34&UL1qe8kOx|h>L!6wn;`rV`bnN#gh!l zq~1cy{H}U}6kEoGm*U(h^C{eel6g2rd7E#<2bxSVld55tQ-g0K3$F538&$%|S zL7T*C#?{ARwNhT-$q}h(TP5@^?_`-VJ~^2Tfk3dLlZm=LG86O6+}r0ck2|WvH-1lP z3X#j<6dAB6JEIha8R9C9#&ilgBA8dOm4Eo)&(_$-lsr{+uv)j8WRKRawQ&o3=-s^J zk!k63Ry(xoo7r@!NsBCwmq2&_6hPW_F~{M`59V>nzErikD7sfa>fvmPI0J~2c>K|r z+o0lHR=`;CvGL-nW`h%yl6qs3c+Mw`YgA|^5cYdAlD@?yQYo7p1Xl>v*Zi@t7Utv+AZ&#ZtA$!pdVhpFSpRX zo-)h1q72NO;#C@;fUhHzs_eL?ZCb7MJAfL#`jlLgZ)@g`;cGy#L3@F&@SFT=P5qGA zD2wpAz$GKj$vEF9dGfst>$TIvsrjSR_)^U<`eys!=;=nd(~C`Z1C2*A5o;y<`{jk! zzf}0D289OBt6h;Er9g`Gk@1RqLBW?zf|?an5*u9u(5{0z$a^9K2h4@LDI}VMad*}0 zXS2eUNU57$6cBpF&Q{A;b*ueF094B2S^H7kUQwUF(XEE8}WGg*@PCRl2eT2ivODgN{fP+`(P=8m)n%&MlsG;*VnyEOSzuPkS+cW zoDx$vfYRNNEe3Rc@c-QpDD4qgy}iEt;lzAMZOE;gn3$OS&1t?oV&>KJE`7+M{d%oQ p#>@X`mGc4Gn&TX55pnmVNEg?{_dhYtdPmYP1eM#UlQ-vBwGz}f%+ literal 0 HcmV?d00001 diff --git a/html/classcore_1_1CommandList__inherit__graph.map b/html/classcore_1_1CommandList__inherit__graph.map new file mode 100644 index 0000000..e1c01a8 --- /dev/null +++ b/html/classcore_1_1CommandList__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/html/classcore_1_1CommandList__inherit__graph.md5 b/html/classcore_1_1CommandList__inherit__graph.md5 new file mode 100644 index 0000000..a49ab20 --- /dev/null +++ b/html/classcore_1_1CommandList__inherit__graph.md5 @@ -0,0 +1 @@ +92d6283d76fdfbefeb2fa5e34fa6b13f \ No newline at end of file diff --git a/html/classcore_1_1CommandList__inherit__graph.png b/html/classcore_1_1CommandList__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b008d2735e08fc7d3f75408312b80cc8cbeb2eb4 GIT binary patch literal 6222 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1Command__coll__graph.map b/html/classcore_1_1Command__coll__graph.map new file mode 100644 index 0000000..50507c4 --- /dev/null +++ b/html/classcore_1_1Command__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/html/classcore_1_1Command__coll__graph.md5 b/html/classcore_1_1Command__coll__graph.md5 new file mode 100644 index 0000000..a172a96 --- /dev/null +++ b/html/classcore_1_1Command__coll__graph.md5 @@ -0,0 +1 @@ +471dc6f91a8efb50ebaefdef3089f013 \ No newline at end of file diff --git a/html/classcore_1_1Command__coll__graph.png b/html/classcore_1_1Command__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a0d4d947ac282331fbc07fef79efe1ae1e40671c GIT binary patch literal 3394 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 F{{;CBslEUJ literal 0 HcmV?d00001 diff --git a/html/classcore_1_1Command__inherit__graph.map b/html/classcore_1_1Command__inherit__graph.map new file mode 100644 index 0000000..7f7aeef --- /dev/null +++ b/html/classcore_1_1Command__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/html/classcore_1_1Command__inherit__graph.md5 b/html/classcore_1_1Command__inherit__graph.md5 new file mode 100644 index 0000000..d8100bd --- /dev/null +++ b/html/classcore_1_1Command__inherit__graph.md5 @@ -0,0 +1 @@ +0bcaf936db61c2165b3294018e8b79cf \ No newline at end of file diff --git a/html/classcore_1_1Command__inherit__graph.png b/html/classcore_1_1Command__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5513de646ef336e82d5b444e4bc87a6a92f6e3a1 GIT binary patch literal 15218 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1ConsoleServer-members.html b/html/classcore_1_1ConsoleServer-members.html new file mode 100644 index 0000000..01f3174 --- /dev/null +++ b/html/classcore_1_1ConsoleServer-members.html @@ -0,0 +1,131 @@ + + + + + + + +My Project: Member List + + + + + + + + + + +
+
+
core::ConsoleServer Member List
+
+
+ +

This is the complete list of members for core::ConsoleServer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
active (defined in core::Socket)core::Socket
blackListcore::TCPServer
bufferSize (defined in core::Socket)core::Socket
check(std::string request)core::Commandvirtual
commandscore::TCPServer
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
ConsoleServer(EPoll &ePoll, IPAddress address) (defined in core::ConsoleServer)core::ConsoleServer
ctx (defined in core::TLSServer)core::TLSServer
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getDescriptor()core::Socket
getName() (defined in core::Command)core::Command
getSocketAccept(EPoll &ePoll) overridecore::ConsoleServervirtual
getSocketAccept() (defined in core::TLSServer)core::TLSServer
ipAddress (defined in core::TCPSocket)core::TCPSocket
logSend(std::string out) override (defined in core::ConsoleServer)core::ConsoleServer
name (defined in core::Object)core::Object
needsToWrite() (defined in core::Socket)core::Socket
onDataReceived(std::string data) overridecore::TCPServerprotectedvirtual
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
onRegister()core::Socketvirtual
onRegistered() (defined in core::Socket)core::Socketvirtual
onUnregister()core::Socketvirtual
output(TCPSession *session)core::TCPServer
core::TCPSocket::output(std::stringstream &out)core::TCPSocketvirtual
core::Command::output(Session *session)core::Commandvirtual
processCommand(std::string command, TCPSession *session, std::stringstream &data) overridecore::TCPServerprotectedvirtual
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
removeFromSessionList(TCPSession *session) (defined in core::TCPServer)core::TCPServer
sessionErrorHandler(std::string errorString, std::stringstream &out) (defined in core::TCPServer)core::TCPServervirtual
sessionscore::TCPServer
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
setName(std::string name)core::Command
shutdown(std::string text="unknown")core::Socket
shutDown (defined in core::Socket)core::Socketprotected
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
tag (defined in core::Object)core::Object
TCPServer(EPoll &ePoll, IPAddress address, std::string text="")core::TCPServer
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
TCPSocket(EPoll &ePoll, std::string text) (defined in core::TCPSocket)core::TCPSocket
TLSServer(EPoll &ePoll, IPAddress address)core::TLSServer
whiteListcore::TCPServer
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket() (defined in core::Socket)core::Socket
~TCPServer()core::TCPServer
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
~TLSServer()core::TLSServer
+ + + + diff --git a/html/classcore_1_1ConsoleServer.html b/html/classcore_1_1ConsoleServer.html new file mode 100644 index 0000000..49db0af --- /dev/null +++ b/html/classcore_1_1ConsoleServer.html @@ -0,0 +1,296 @@ + + + + + + + +My Project: core::ConsoleServer Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::ConsoleServer Class Reference
+
+
+
+Inheritance diagram for core::ConsoleServer:
+
+
Inheritance graph
+ + + + + + + + +
[legend]
+
+Collaboration diagram for core::ConsoleServer:
+
+
Collaboration graph
+ + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ConsoleServer (EPoll &ePoll, IPAddress address)
 
+void logSend (std::string out) override
 
TCPSessiongetSocketAccept (EPoll &ePoll) override
 
- Public Member Functions inherited from core::TLSServer
 TLSServer (EPoll &ePoll, IPAddress address)
 
 ~TLSServer ()
 
+TCPSessiongetSocketAccept ()
 
- Public Member Functions inherited from core::TCPServer
 TCPServer (EPoll &ePoll, IPAddress address, std::string text="")
 
 ~TCPServer ()
 
+void removeFromSessionList (TCPSession *session)
 
+virtual void sessionErrorHandler (std::string errorString, std::stringstream &out)
 
+void output (TCPSession *session)
 Output the consoles array to the console.
 
- Public Member Functions inherited from core::TCPSocket
TCPSocket (EPoll &ePoll)
 
TCPSocket (EPoll &ePoll, std::string text)
 
+void connect (IPAddress &address)
 
virtual void output (std::stringstream &out)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
Socket (EPoll &ePoll, std::string text)
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 
+int getDescriptor ()
 Get the descriptor for the socket.
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegister ()
 Called when the socket has finished registering with the epoll processing. More...
 
+virtual void onRegistered ()
 
virtual void onUnregister ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+bool needsToWrite ()
 
- Public Member Functions inherited from core::Command
virtual bool check (std::string request)
 
virtual void output (Session *session)
 
void setName (std::string name)
 
+std::string getName ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::TLSServer
+SSL_CTX * ctx
 
- Public Attributes inherited from core::TCPServer
IPAddressListblackList
 
IPAddressListwhiteList
 
std::vector< TCPSession * > sessions
 
CommandList commands
 
- Public Attributes inherited from core::TCPSocket
+IPAddress ipAddress
 
- Public Attributes inherited from core::Socket
+class {
bufferSize
 
+bool active = false
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
- Protected Member Functions inherited from core::TCPServer
void onDataReceived (std::string data) override
 
int processCommand (std::string command, TCPSession *session, std::stringstream &data) override
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
+virtual void onDataReceived (char *buffer, int len)
 
virtual void receiveData (char *buffer, int bufferLength)
 
- Protected Attributes inherited from core::Socket
+EPollePoll
 
+bool shutDown = false
 
+

Member Function Documentation

+ +

◆ getSocketAccept()

+ +
+
+ + + + + +
+ + + + + + + + +
TCPSession * core::ConsoleServer::getSocketAccept (EPollepoll)
+
+overridevirtual
+
+

getSocketAccept is designed to allow a polymorphic extension of this object to return a type of object that extends the definition of the server socket. Returning the appropriate session object that extends from Session provides the mechanism where the server can select the protocol dialog for the desired service.

+ +

Reimplemented from core::TCPServer.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1ConsoleServer__coll__graph.map b/html/classcore_1_1ConsoleServer__coll__graph.map new file mode 100644 index 0000000..e047392 --- /dev/null +++ b/html/classcore_1_1ConsoleServer__coll__graph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/html/classcore_1_1ConsoleServer__coll__graph.md5 b/html/classcore_1_1ConsoleServer__coll__graph.md5 new file mode 100644 index 0000000..bf2975f --- /dev/null +++ b/html/classcore_1_1ConsoleServer__coll__graph.md5 @@ -0,0 +1 @@ +3dbb00c890c3ec9870b2b842bc328eca \ No newline at end of file diff --git a/html/classcore_1_1ConsoleServer__coll__graph.png b/html/classcore_1_1ConsoleServer__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d4abe427064d27d8c3fd4d2c346d486f081a6422 GIT binary patch literal 47432 zcmb5V1yq&MzXf*lrPLb}G?rx-!5G0gtY3c5g?oR3M&N=?)y*KmLnl)<% z7wfv)WcKk47Q+obC}W7g=(w6ci?8*M9FG`q zM^l1}Wq!%@5NPy-_)Ba4eEyVwxOn1>S7B04TE zr~O(xsemUsiTLmCzCJ9HR}e@eqKv_!TB+97@v(w4Vh0p$9|VE{nS}zsa#m6Le|`yu z6FBLO=23Wx`n0L)b?x@EJ)B#5 zi6OG3);yFri#Je-!n3C9!FS>XS>v0Eiv00td3m&tX%Cuq4J#3{J6R#vHt7!2chd9j zAO7IVOO<<2X)bw*Gs+;%2R9$Sw>UcWGQn|oU}ZL_YfOb1vcVmVKJQ%7wyHr0lhwb7 zCeXrpG*N{j)_T}2#XVV)^MOcB$cN5~8o;%^HJE7~L@pT$C( z5sWShUmnKSD7a?9C>oYqRF<4{bv(F7#7@hnFCrftg#P9mw;hl42l>UlTR6^Wu(T=$ zM}6vBzVNyUxOtOv?5#}3zKNeJC8B;#*0N!Z2b<|8LCGgc0Q?g5O*5@)<#Ok>73nDZDrJN{r7iKJq8eEyrrZ}&YBMfX5B%Gcq)-wW)@`^^Slw4#n&>~(PL zH>9=Hv>vbGizTAxI&>U9ha(Vxw{q8*Enaa2!<0Wi8TSZbvYXxDS+(S}<(X9{6Ho-r zewtl-^xT0!{6BNw(g!Ko+n-}(= z8f@O|y1UP>ltAszJ{zb66e}aRKOHAzLd3R7WPcfK+}=EJEVfbHEX@2sRf8R1L*&I3 zE3moKmvGszjlb4CCA7^h%CzNlRQ;^BeAD+lryTj?2fbu30bS9s&FJF#{=ct<);e?u z1R6VJAmPuq^OQIk>(wRu;bnsFJr(u%aI@o8Gct zyp~3`b%lcXXZT~%1!^$6aYv!XU8J%HEnJU)>S)v95eWb0=GrIqMAjM9d~|1fTzF7x zQvxyn_Y0lLTZV(MXi#_GK-q>`EN=A0+%0W9J&?hoek%Bw;wRkU@c4K)#N#BlFt1>1 z>te$=Ij0dV`uE&CEif<;R9^c!c?e{U-JPQq1wZ7hjxVCQnKC&0lbY*UU-?Hm#G)c6 zAz$SDNulbh_c#fACY3s3Vzxd$u3}w$oGDhc-^$9$PCxTQgnxm|CA#HNRa8)zXKu5O z|IVRXZ~rlpPp8otiGss4LZ6Swq>5mCe32fTRa%;on%Z1`nA*6P`0?Q+`Rmv0vV!1y zI0(9{5)@3&a+4h~$&I;r(wiV_Yh>-Eot{V?OoZj8r1bCKXGhE)F2^++CJ?$kzpgPRzWd=$H9lECXL>ZjOjgIa6#$Ah_1ruOc%JA zoKbsp82#IIV`74>OqXleHN>Q&F*kDkL+-lXA@rjP(vP8&B9a7|tjQlAKdw_sB=hiS za`R~q^mi;YfaHXhA@8uXBvdP@cfQzW;CvYL3#zOfDpp_gU8<^0w6$!E?&-u3#SdAo zuPAb}OLM)BOHf^3`(0OqC5RZ@ZMH#$xpz2!cYR&0;6nzQrndq4cd3(=glNJozk`{B z-g`+JV^>!J?WMb(NPdMUF?eOVxePyvy0)Bjf$7Ibnpi2u)rBsTN@=Qzv8-NjcP>Zz4a$g@elBB5ON=mx3#3t{&9~eNWA<2-xvL}844~EA{VS08lMK{BkZJv`8mXY-8 za9*49LAxSXNs5FQqnqV$RH#6u&`4;8hqzBMHMz9t?c(zcXtU752%B{S1C5$hP_9Rf z(Hrg?x8{@x2&{zi2YosA#EMdXEEBrl#AV{wR#slj z`nN`R5rj>y4_o zIbCz+BK-JqGAW@+3B$M~? zkI6@48_I9LTYavymR|bf>lg*6`%EfD#WHZPz4w()qN8z-k89b@7otcO3mi6LDQN2K z%2`>*li9Yy+Fpjq%2hy#2@AlKLMHCxvPI@%9lt#hvXdPo1*=0hGs&f)r9Imisj0af z8pFncZKqy7xY&@l|29#s$hkvdwaNdQlBFiHRNyir4CvOUB16~uoQWWe&n3U-N5@59UY(dCec8t`1R|La|OMR zkLt62s*`JNvyWFzQPJUCMW{krBO2GoSN};2K|{8AtJ#pb1wwcCIoFo=K0c<;I!M+M zDk>Blmv!&0By1LOdF)p96f-PuGXMmyhmj%AfQDX@Rb*ahS&U+^I^R1e-rVvrsnANc zN}2s*5?4^rmB28#+I+|2xcPj0YyE5vx>K1y<{vZ|m<&|nTe}`aNn>M|GLB#6Cd37LyLp4@zqyk5&8gP zcXvw1r0F8*CO-WtGb3)_3W2@RT!Ev&i zg!LaSTFJ@3&zIv_KkSj{SCCsvtW@&1Z$H};g@a;2 zXS};WdU~WG74-JnpEB<0!THZdoPY+=+TPw59?s)+(-_|mVpCp@gN-f1ec=P1A%3kv z2lKaY42Xz=QN#^GG&BkS_WKm&yD$?2ec?jG#X|OnE^Te7^vJJK)9map$69MK_m|@h zE>>5+4fCtaGtRG`@XS>g)AJId>l_;iJw(yNq^kTBj(=A@@1Cdgo%4h9V46BOz;)lPI7 zx1Vp}wKOx$OmU#6!9&J;KrsAVZYoz-o3UBp54RKeNJk|mrYe#`nJ@q8t?6QIzxl`` zAyz!6GPU?H~Vbpyc6s0Wt6Ei}mS~$?bf3LxY-Sky0W$E$!f9oqBQ6Ks1Th zF6e#SsA#BAkXsZPay*tFhc#AW);1{o{ML6%H4P0j2eZN6$KSO%-s6ah`Ds^~P1V|b zyVy>9zAOv@d+mP=vK;S!vK*z0MbOR0qEJ^yM_Eg&XUDf8SdPZSlUJvq@^Lr?jZ*SB zCT5fd#84(t0N|MaSDKIHrg@tgW<{aP$YRZ4iJ)3pwP@F=Eza#WH9n*K=k8!-4AgCw z@XN9&PWCJmrA|PfAtXF6*GJmgYR})?q>3iXa5`P9mQ7kOkh^1GKA{{Bhd{E?WDJtT z#i@F`bMGI#lnSx4*)%jh=j9{bXc|y*aitJ(sZGyJq@`X}n2*ziBxe&*q~m7$DrpdEuL4l-*7LliwG8WE(Cn z3E?B>!FhSO85xn>K!*889p-b&nCRJ6EGBY=N=qWBsKoC&MC|PB`1ts;RUl)G?V1LC zYyY=g-+i~5oMKgwhf_KKm|}Kuw$XQXcIJJ6N+F(C$@p$yXn0V(={Yz!cxz_|D-Fv3 z7-|HHkA~&c!N_Q&#;W*_$*cQI1H&v`-R0O6Z8L++fjR{^RAPKW!hyQuMug|l3OHdm z8ezXa7=3B!>5;TqTt>o`Vs*6aD(}8d(MXxRX7_KB&VYZR(}4YGpS_7FDXFikV;>j! zne&kz7gsAhyg?ie^ejWD*I7q6L@Bs93C_n$Q1tX~$2GOa$}>p+DOJ1Z+(_0*jlB0E zD1TM*HTZb7(9`lv)zm!c=}!(02>$Z{S+A&n>$;w_>S=1$d0bFsf2kfAkcsIq2;Y2t zZqq453;T}9#yFdTw%F3({n^dhlw~$$O$o)2?zlinz%D+-zdRGVmhu0dwqYX^Z+(1l zaBzO?j5aN6(CJ|u2smGk-#chSowT?Uy4Z(&n(D03`R@~e|Y_+v<`NWZ&;p$K0>53%QYn@LlLFjDRSCjAd_|E?%9BtrQb-?jM+7&y< z!a4sZm*r2%=Jsb5PkN9<-UeJYTlvWy7U$&tve`Q%iPL;>@zRy}T~`&H7#LW)MRyYW zm3IU_YcZTCCG9I?3mFT#z{$^(Zr{d;$^jZwy`+^XilA1q57yqp17E)u{b=+K9H@IC zc370ZQ5mhL|K>X}yZIErAdy@|f3+)gGBo+{Osd8k;kfUUpYFcwzfkeo2yba0`ofXe77$CQ?H@vFYYrGRIHgaDIOoEKSoIw=Hw%Xwo5jvYGso@c$RA2?eUJLZIz z%+a<6W@Jt?EDl#~>8TG{ zMnYg=$3+(Mva=Pmy`}-byB$+sq>g=dM=34W$J{A3P7*@nBS{>NLnS%&wR*}T*@&@&>#w#NjlQ`ZjFtqw{TwqZx#lq~1nW}fyYZLr zm0;7XzUXdBW-vY6YjrSIllC1fE(GYRCVx}?^ku`{$KjENuc2JBALV+~%;DNu)gGxd zT3?o3+odg^RpF=wM`8juqEs|{_s)P z*k?pLlwPZ0h{!@p0>0v(*5*a%?IBAK+v~aY;lH)Ek$_+iw`S*le8ACY{yJx8*4G2I zjT!qXU4TtL-=|K8g?+ERn_}?!DXeY*kA{*qk|GE_T)fl7#I&{5)_Q%1&tT$X!npR5 zUj-4H?_LG%R@A)IPu|qQn195`$cK(D@9N~nhDSPF?`bG#LlObhE*XQt|Ai5=tDOB4 z654f8sS1D5V{dOdfpM$Mjep<%Y*}Tbs+9!_dC}e(KX~^(8!PkL6#sG}((C z(#I1Qk^a!jranAop?F%z3p>PLLJ3M6oh*X{`_kmW70<(?u=WO*3Y6jLX%qs29&tDk zc;(U=xCiZSCNd*S9#`3)%lbQNnz0z7VU{fvpWC*c655iJk+rXWC;6RvTAi7}l{M9? z((cz$(9nnp*nPeaIVPkCMmM4%*7xNPaKfG5e4oF0x%1_qOfH z@Naf>O>y~%k9k|kk`cj?VYZFnRop^c&2_nNhBJ9-Fiz^9kVvLyyI}9{H*~T&D;qP* zRZC4y#CVNx5PKA$1R|fg?K+91iH?ea;fYpp1(O6CU=qmp z_LKhw&_M`J_`eE?AvMKF19PB%Z?Ll`zBxn4ALrN^CK7c{93kQ!`}OlJWND92Wty#u&ocs^{_B|AE*O z(GMmi;h5l{Ai^n`(7u0n-2Mwx?~?1V82JBhAs;5^S5vRg`dMmI$>VJ z;+vT!VB@J{k_6%R^dwlj4#wPj-+$`b0gO!qRs}cvfA`;DK7du}u_xkb=doxmH*}d{ zU|=XHD4MO>oc8yVU%j$xZhoizX!+?=dQDA4qS^%knxK!Rlw$es3T5he7$50(5D1yN4Fk#>R#KKfn8|FRcN-s^)x@c--mf+{`-a z`FZrqQ-P|QD@I?6;!I)5q3c<;w~LFnjm=w8mKXxavZxywyu8AQkk5TU#ws)p4ncO6 z{UnfG(8$cr%bv!@l-}TRTSx;g&>8e(WK`7Rl~P+9Q+&XI_`%`nK9j5s8@u|4T;jJR zvib6ilVGHnU1u8Ru4iO9l-H0|=L5_?CY7^gC>1sDPfveS^CBgo5E#Y9t0ZRVD>$PI z8nS4#J>R35XVIyu&d<0$JT~A`IA2@q$jMn&G4pVb0W!pb%)nIk_;jPBy;zFJ#Bao+ zm3)r{A!loJK|qGDPfFLT_NrUFiChYU0z?}Dp`xCfG#wrhm6J%n_TA~a*p z(_7k$Rh5;|7e@1y?LcJ7*Y9MpzH^ieYJK-c_v6PJU!UZt;Tb?txj5P}B_Uz?$J$Ux zh=L^Cr>hY-(Y?L<;^uz^-zFFt8=tO;fd1r;+IP0=ER0spO^%5+PuuNtTt zJfTxlV@b?t-EA3^zU$q-`}>utF=AkfG4F0+F}*#EQCq77{|a4xxenU)e^`Pux*h@V z)F!xHohfyw`Bs7b^DSEWM5*qC@44EG4ULTf7lHjIJw2xB0uR6U)O))Bv^{N)IbXRe zP`qO(4iSa-m)g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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1ConsoleServer__inherit__graph.map b/html/classcore_1_1ConsoleServer__inherit__graph.map new file mode 100644 index 0000000..333df3b --- /dev/null +++ b/html/classcore_1_1ConsoleServer__inherit__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/html/classcore_1_1ConsoleServer__inherit__graph.md5 b/html/classcore_1_1ConsoleServer__inherit__graph.md5 new file mode 100644 index 0000000..e92f488 --- /dev/null +++ b/html/classcore_1_1ConsoleServer__inherit__graph.md5 @@ -0,0 +1 @@ +dfe79bb59a4f703062cac7963c84dead \ No newline at end of file diff --git a/html/classcore_1_1ConsoleServer__inherit__graph.png b/html/classcore_1_1ConsoleServer__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..30d16a7532d10518c4f7d1df7219a2c2237e0f3f GIT binary patch literal 21528 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%0A8OcO&5PNcufX3GKSRp9>(hgYE|zr!>m){1 zb3dv2p9D_!XieV=X(!+64erY78m^v2N#AqCYCPQJ%;PVA3CkDYJm5~;gOXAy zDS2{_8EjO1#EJd2M)Y%VEEi^x&$FO2D{NvE35amU-fW^1{`!-FEpFILAzfQJLY=B0 zP;C?*yDwIm9ekjEUloPX-ZqlxoPuZ?8wCZ+``>@kYfAPFt3t5!U7;$9+(rk7goH7P zd;t8TYptw+ZVV_{xfuIn85m7aZ!+Tp{ok7#>?WuT7EXHzg7koewr9lmv_pnLtkk$| zs^5w^1D+}u+F$ABDxTqG$5H4Fg-+|NPs{dr!6#2oUzq^ow94#p0DTI zm1zDJ*z&vVzyJxxuyzP5H6@ChMgbrc3zH9~!|E5SZFU3&LRUnx7NEfL(yIeD;y0mR z<=({NVqyXjLZb(l9u@dvHd8<|T0o;1Zhvf5#KfdT7>gA!IR}l&VB!00=JRystH9r! zwyN~u$Fk-)XV;|k^a}Lv4zns1N5eL$e1by}WL8rDS5zs-YyR+Ti^GNp^5TCyPTrla z2hs`ukME#hvm#WqAD%5FC4Z+p%;T9p1VLtCx$ci)th5ms?s?kKVanL8za+$$n#5WM z17FnuR>*dw>E6gL%AQ#n`uWpes& ziHX60zdKhfB0Q|!_b(;%e5H_Rr9nmScSfNrJkzGW8b-Fdo8!h{0IZWSITQm*Y~N6) zKGVNfMg0Hoh)WJ4i`qYB7;d6WmGG*n`!+T0#KgpK@bHr|%V=n5(sFV$GRtKT){DQX zj!#Zvp5p;ozd$hy1+bXr3>&GN9ZcoxtcNEjV*ylH<@E`RbF=fdWO4hxa3vIQ%0KiU zOey(N6C3kTPtQ(%DP133Nty7z;J?)Y{zpyVm5nHxAS`1nWummqJ*!O^^SFJ)zl!t> zv;GeXY43Mq7zVzpULKXJb@f>bb>;bjkM)I80LcUI9l`9pr_8^#y^TgvgF>Pe_}QKH zK7k~o=V!eQ4FBYRXFHYdHcvGk{FmgZC~`Nbv(b%5k{c#BQ9>s*?N8Hq1``~?sDa}m zyRfLc_sq8pLyeBHz|Gy!N%`vS{=q>3*W>9RHchiIFUx-oS+dU7+juh^D)bhmS186e zkJ-8^w)(~+!CDMOB{QG2a3iOMGkn}OiBnx=(qE~xr;Pv(a1Dk1)H;53Azk7u zg4gYz1LM4pEh-})w_KA{5*Dg0v4kY(pY!@airc{c<@II)!xm*EqFL4!>gUj?t?j9B zt>T5z)kH8;$CzyonV)-$b1!b<(<|KaUk0y>o25%LE zf_1A5p@kpXA}l|ASkRgI+z;X%&)Ab+nw>HI9Wd_ei$#cV3_d`kp_xzjHl7q4R8}5zlzTt=R|)>JsK z?ljmB{Tpc5mn8ao=w6=;OMs{8^O~cLMBm)l&P@*UsD5M8SiiZtQ`*Y!Bj)vFY5T{m z!eK1^Yo+gG{|~_w*Kmj*b=j=#VbiU5ux{qdUN#48AqxBL9ya5$b^H3-k6uBi&mSZ4 z>+vK?<5zRKrLG?j-$5C+Sm^%o? z-1hfcX+~*(JW*a~XlP2nc+g8U9Xj~mkYf5R3Hv^#yr;F)CDT4OQyY2*6g7dvI+e9Qc=K%k6#in34fVdk3CukOj7Nab%5XR6>>;=9lP6j@p=-Szh4{by7OA5Ta8FGnvuVUEdR z8w@H2dSX%VO%XAf-7Q`Z-KbKbJPA_P1<}W>*sc>s0Vj`Bm(X3CCOMvKoK;O*Pp{?= zre|Zr1Kt7eMIs1HdImgLrgpe7?faFAx59WF!B~Q=A6>dNeFMZJVhnQ}RX@1lvf+?5 zu+gn&>Fx>kk@HpnL@Nhl{hugX0*=ywVS_JC!+haWO;$?Gf%3(e=<@TWTdv8F`mq1h zZi;jkN{8;S2i@7}bF+bjbqG-EtN*wvD*tKOdeP^vs+MA;1xb@JdL{p=GdlZ6Ma*vT z)cl_^BE*UE|5OU4#QTbt^C^B#C4G^>XHs=|mbk(CH(belx2}`pf%L8RJIXjgFrCnX zdIHI&vjj7Wnj+d`3y&bm69E^oxY2SXRMdBtnm{46x4q7g11>Qd5Vli5FknY4R*{0 zmLopGmP;tbTojYZk?U+@L9m@#F4_M9rDoo~`}S8b-hn6j5&DDsVE^t=-(@HiCFZmD z*Vs2?d&<~(_$9B}%#oY?te5n#OYn)s8-7bbDm&fT!2SnAUi}L?gRl2?>&!_ikg~WD z@4^=b*VF}{;8Nx>HSsu7YE-ed$3F8pZh9{XJXM=vRA3@=01~1PkLF2<@4_)3;pOeR z=vK{Z;?JK!cBUA(I8b_x`{s-L`o)jj{Gdw37kAoIqb$F5=)lNkP%kB|}M>pquJ@rLF$jZ02*p z6GN7-KAuk0d@=ZDXDewif!Ly4?9sJ3gKQEiTVWs&M%~;03t&ELXj6{o<|OL>bsk?b z=Qa7Rqe%3`O0x1{BFfEe%}lwc$#|x|9&6UcJKX|?F|QN)h>je*{}MMi_d>Cx`g^@) z;o~<<&kc4LM}ruKk+Om6R#^YQEn2KLlilmyQoggHC8^m!w}TYxD~I$4Gu7_QAGf#? z!!IvUFbj_pB!f0fa&uLuUmq(@alhZbDj@FLX#0cFb2Se*Oo37*pb&!JzarAh#|L6! zjiU*`D4@?8;z@)I4srCH z0GvM3flG1uq<9D3uB_VkA!qxoatdrlZXA08?m(jKol)Oq& zo!w4RQSG-IiE|KSlVwR5|e@4}GcXdtF*=m+MP*73j zJMlNA7ORDxpTquf+C+PLY7$jB^uH)8an5ch2V879vJ<-X^=W?s*YPhdz8C590cPsL zt`WJ{eX6siI{KBBmD;(s^xsajo5vn3yJItDx<;&|)HB0mYHVK&jN5iZ)>OgchIE>`Z~u{^Ww+ z*|`b&yt0C$Zzm#>blyiW8cJ8Lvn6b)13-5wAcFjb2oq?{W1!sBs4KK#V|yD$b^7Zx zB%41DF>xH=FOJ>rcNC>g63+2r^~}~|l31=+SZHwk@fk})kq|6rt47zA?idgOc>i-$ zu!KhcQa{3$mC0RP^b5TG7@L|hDdo!n_HCKBwBt>W1?<*|gTIvMWV4_=`r~PxTy1l= z5%7Rfl?c83i5*PhDkW;7PLU-`8D;?r&0SnI7rfsQ*zxZdUZg}fTKv8FrpT^h z_HkGk8wcAjQ+LkR5y!?3y}ZZ*f~-NS-eiuL7|?O_+x_G+>aew%>UpPPeV};&tekcK z{V2dmeDH^@fEKXd0&0agKp~T*q!1s!Ab?Jp#dj6W{e zF42-$T+}wX|BIG5oX?ERlRTX7b-Vh}YIR9D`w+JyXw2YE7M@VU2bp06RIr!9WY2K%C9YLSHYVx=ECHt4jq9af_wBBV%smc-B^z$^wt5dk$x`R-uP6PQhRC5nnQs$AT(Z-Z6=h%CBlPKMIp9Ess}sXc z3)nbtO;bqbN-hDk7Qj^SCgn)W4vPv43lXXJML#^A9i_4uW4z6HaCmk`s*m-o@b^j3^7Xkbm~WY zKHiM@iHSC<_D?OpQ&W>hQojf*B{n~im52VCkO<>6leT1F9EF2llv5Zp-5VvK^o=pM z>WvN=$#~=he9YgAD`aF4^wq3L0#{HF5mn#B9mzb?P6%e&Yc?e}7N48rm%Dp+Ro-~7 zPcGkMiZD@#TSBu8FpI>7`Irx6n`dQOta_(z)*v9re3!iuW}wXX`&dRg+W*zY zm4`#wcJaI_LL%8s@>$9{jfr6_)sz^rk9t$qu}#T{5%bchUXp#!ZsNsYjO>g^_I(Lo zV;RXZ3|V3Z*}tdj`}6z$e6H)h?&qBQ`kiy`=lPxA5!dE{Len&Y#CLaX5eQA+@1G3- zLg?lPd#n-&*>Kv5nLCU$Hb!^FX#hlO+*!#xy-=jXP~v5YKRD6A$F+je<0##(@s~z9 zk;Y3cp?pC>_eOFYipY+7I!qSZmiv@;9Dt{B{ z;o*>H&u&)O@nt^BlHo%f?rE-k)8jy+W%srsFR8A^498zcNk~985d{ByV1uTW3MjIa zZt&QN@d32&>|Cc42GjBRm2%x*TQ$H+-;G&~y`9+4U&=)`Hs%U#Okz|~r>vMQ?}1X5 zm8H|^gvA;(5qgcxKIP!@d{UB<-lWisZEJ9jy&}PnM+*x8gUtYgn~NTd0Lk-@XSk~N z-Y4=YV2Ar~E2=hL9Z(A-P>gwU{K4{d0??=yQlVmRLZV@OD4lyp;?Q)~Uz;7=qv_!Cbe zLiF_DD5`&=TK1W*ZwC#Q(AMUXFWabTY1x@}4WrD#;nkO=^S&+2o3~X#R3u#K7Wv;0 zS7VjH?M&F)haDn%u2-&AfnU8UHSQD?ehHx5s>&8bB-CetbOtIOCxfL4V|SK}z^*eb zhbne^s=fNUR z!?B?Ot_VV+F8SCe7W$x+gn=ClDVolk^G`jh;SG(`mhgMwz$>ju9l#Ak8;A`{%<)G7 zS3>~7NTuY6vN8hdgMGB3wR3kj{!tD|ZIe|UC0QH(Hy2n)2r42fdKthw&u_eAfbj32 z(?f=a>^!c)4-V~;V%R!(y!lU7BrwH;AP=92Ew#%~25hkaqOM00Hoz$>E9=%j(b^go zo2s6lG8~`X(~a*dw3Mv#mifD`?$SgpHV=TrD`XBY$H`OF-&l(hKQqr@u*Thk@4?US ztS_p2j@bge7GqRj-GKo=AX6x5DdJ>!cK4p&1e~0xT4mzkh+F$g?-*Yxok>K zRdYbuTQL#3b91qiPA+-Q2fz9OKSfl2D%DzgxNQ@=c~QgyQacoFc_HKWwKle#qzAO>lzi`5hM@XuQxuTVhYpb_E$89Q5 zRb^CE?k`{Ib}lCLIh4Dc9woM#JXJP1cazfjQ*mo^5s5-Zv06CF}m}MZid6aisMvnllQcz zF!6bLL5qHx_3=w_zM8Gx>2KL2(+ag~{11P*&>$TRG_J`A+lX`%x$L4y+TKlEg&H@;ZX_8pQcSBACadf+4R*h{_`u7Yw|6w5e*uxUO+h%L121dCgG;y8n|8>YV*r0WY zXKJN|?f+6U?`?Q_M%D05C1g@e*#@&ImAi^Fj4@oBBYEo7{|X);HA?2*89ZD^KdA75 zEm~Dt((s9~uSw7ayUEv$N5@(V(w^k&w%4mQYVI}pcus4>`BrXBJwD}R!_WC=L-mDq z@F&%jL+~+ipF8p*@0b|9{ypEtEVt$|gR6c*Bk+tAugu)Ryy(&J;raK4S71eFD$kgE z_1FEp@^t{v6wwh2o=p+_C(hol8E`Y`d3X{$)mD(-+>ln0IX+qXo}=r!`O4a(zg}!= zXRBV)An=o+-(0QQ6f{*qCL<;@L4sSdu^drZOr0FCSw|?Z+L7(Pq#$8T zPDxJ*oU_MILnc4rp@n7#|AFGwxV6=EC(=>c;dJT{tn3_Rl~Vq6BKjqybUw>S&VW-) zd#KbFAWOdVV@-NtOlg}x}8$b(q9o_`I7Vm#~!#Wpz9 zThlKi;irOEm&9ol^Q@KiIx<(3l!wLW(4LByyMo~2s@d)G4I2@?I)`CZL=>nHo6-y} zlHjr3cBoR^2ogM!Y+N+^&dEyH9CN;Z?TZ&`#BI$Kv+4KSfmrA1D$a|hI^SosC63X@t@G77b)y<@zsf%)&Q1@zmBN#Zc0x) zOVp{)?Rc>lE@W?aVCltP)>^cuA;pC{D2?)>sdz<`#SzlIo5{<*P-MS)zWo`}fzxQ* zj!wo^J$=D-Fuj~G(YBi>H9k1LvLlWu`r`!>k19O!AfbYZePJ;{S{Rw^L?7h!Pw8c4 z9?Q35Nv7dH{*2gynxR*Vy^F^w&4Wcu+WlxsrO3JBzgPwT8@Ehhe?-CGt8F#J+p-SqCy;a3#4!`t>aa^ z7n7&yc-mfa1m}2SieT3>51!NBMJtIn9ej>|>Y(m#s3{#KVKGz*vJ>hD5s`^+It)BU&P`=HOpwee5BsN=iF+@Gh+E#hj-mX}YtkKn6?QhXw{bR51<;o?VA# zG)6yh2XURBoY^64`2KY8mdeqhO4kQqfN7QVdOs5{qOviCxlIL%nuM0SGbRLM0P&RRE~*+)kI~jV(8fV=n4N0J6qmNQgjJa_+2fCfqNA&Bo=U-x_xT x(=C^{Pb2?ZPW%3M! literal 0 HcmV?d00001 diff --git a/html/classcore_1_1ConsoleSession-members.html b/html/classcore_1_1ConsoleSession-members.html new file mode 100644 index 0000000..6ee066d --- /dev/null +++ b/html/classcore_1_1ConsoleSession-members.html @@ -0,0 +1,138 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::ConsoleSession Member List
+
+
+ +

This is the complete list of members for core::ConsoleSession, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
active (defined in core::Socket)core::Socket
bufferSize (defined in core::Socket)core::Socket
clear() (defined in core::TerminalSession)core::TerminalSession
clearEOL() (defined in core::TerminalSession)core::TerminalSession
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
ConsoleSession(EPoll &ePoll, TCPServer &server) (defined in core::ConsoleSession)core::ConsoleSession
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getDescriptor()core::Socket
getLines() (defined in core::TerminalSession)core::TerminalSession
grab (defined in core::TCPSession)core::TCPSession
ipAddress (defined in core::TCPSocket)core::TCPSocket
name (defined in core::Object)core::Object
needsToWrite() (defined in core::Socket)core::Socket
NextLine(int lines) (defined in core::TerminalSession)core::TerminalSession
onConnected(std::stringstream &out)core::TCPSessionprotectedvirtual
onDataReceived(std::string data) overridecore::TCPSessionprotectedvirtual
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
onRegister()core::TLSSessionprotectedvirtual
onRegistered() (defined in core::TLSSession)core::TLSSessionprotectedvirtual
onUnregister()core::Socketvirtual
out (defined in core::TerminalSession)core::TerminalSession
output(std::stringstream &out)core::TLSSessionvirtual
PreviousLine(int lines) (defined in core::TerminalSession)core::TerminalSession
protocol(std::stringstream &out, std::string data) overridecore::ConsoleSessionprotectedvirtual
receiveData(char *buffer, int bufferLength) overridecore::TLSSessionprotectedvirtual
restoreCursor() (defined in core::TerminalSession)core::TerminalSession
saveCursor() (defined in core::TerminalSession)core::TerminalSession
scrollArea(int start, int end) (defined in core::TerminalSession)core::TerminalSession
send(std::string data)core::TCPSession
sendToAll(std::string data)core::TCPSession
sendToAll(SessionFilter filter, std::string data)core::TCPSession
server (defined in core::TCPSession)core::TCPSession
setBackColor(int color) (defined in core::TerminalSession)core::TerminalSession
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setColor(int color) (defined in core::TerminalSession)core::TerminalSession
setCursorLocation(int x, int y) (defined in core::TerminalSession)core::TerminalSession
setDescriptor(int descriptor)core::Socket
shutDown (defined in core::Socket)core::Socketprotected
shutdown(std::string text="unknown")core::Socket
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
TCPSession(EPoll &ePoll, TCPServer &server) (defined in core::TCPSession)core::TCPSession
TCPSession(EPoll &ePoll, TCPServer &server, std::string text) (defined in core::TCPSession)core::TCPSession
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
TCPSocket(EPoll &ePoll, std::string text) (defined in core::TCPSocket)core::TCPSocket
TerminalSession(EPoll &ePoll, TCPServer &server) (defined in core::TerminalSession)core::TerminalSession
TLSSession(EPoll &ePoll, TCPServer &server) (defined in core::TLSSession)core::TLSSession
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
writeLog(std::string data) (defined in core::ConsoleSession)core::ConsoleSession
~ConsoleSession() (defined in core::ConsoleSession)core::ConsoleSession
~Socket() (defined in core::Socket)core::Socket
~TCPSession() (defined in core::TCPSession)core::TCPSession
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
~TerminalSession() (defined in core::TerminalSession)core::TerminalSession
~TLSSession() (defined in core::TLSSession)core::TLSSession
+ + + + diff --git a/html/classcore_1_1ConsoleSession.html b/html/classcore_1_1ConsoleSession.html new file mode 100644 index 0000000..6dbf12b --- /dev/null +++ b/html/classcore_1_1ConsoleSession.html @@ -0,0 +1,338 @@ + + + + + + + +My Project: core::ConsoleSession Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::ConsoleSession Class Reference
+
+
+ +

#include <ConsoleSession.h>

+
+Inheritance diagram for core::ConsoleSession:
+
+
Inheritance graph
+ + + + + + + + +
[legend]
+
+Collaboration diagram for core::ConsoleSession:
+
+
Collaboration graph
+ + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ConsoleSession (EPoll &ePoll, TCPServer &server)
 
+void writeLog (std::string data)
 
- Public Member Functions inherited from core::TerminalSession
TerminalSession (EPoll &ePoll, TCPServer &server)
 
+int getLines ()
 
+void clear ()
 
+void clearEOL ()
 
+void setCursorLocation (int x, int y)
 
+void setColor (int color)
 
+void setBackColor (int color)
 
+void saveCursor ()
 
+void restoreCursor ()
 
+void NextLine (int lines)
 
+void PreviousLine (int lines)
 
+void scrollArea (int start, int end)
 
- Public Member Functions inherited from core::TLSSession
TLSSession (EPoll &ePoll, TCPServer &server)
 
virtual void output (std::stringstream &out)
 
- Public Member Functions inherited from core::TCPSession
TCPSession (EPoll &ePoll, TCPServer &server)
 
TCPSession (EPoll &ePoll, TCPServer &server, std::string text)
 
void send (std::string data)
 
void sendToAll (std::string data)
 
void sendToAll (SessionFilter filter, std::string data)
 
- Public Member Functions inherited from core::TCPSocket
TCPSocket (EPoll &ePoll)
 
TCPSocket (EPoll &ePoll, std::string text)
 
+void connect (IPAddress &address)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
Socket (EPoll &ePoll, std::string text)
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 
+int getDescriptor ()
 Get the descriptor for the socket.
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onUnregister ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+bool needsToWrite ()
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

void protocol (std::stringstream &out, std::string data) override
 
- Protected Member Functions inherited from core::TLSSession
void receiveData (char *buffer, int bufferLength) override
 
void onRegister ()
 Called when the socket has finished registering with the epoll processing. More...
 
+void onRegistered ()
 
- Protected Member Functions inherited from core::TCPSession
virtual void onDataReceived (std::string data) override
 Called when data is received from the socket. More...
 
virtual void onConnected (std::stringstream &out)
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
+virtual void onDataReceived (char *buffer, int len)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::TerminalSession
+std::stringstream out
 
- Public Attributes inherited from core::TCPSession
+Commandgrab = NULL
 
+TCPServerserver
 
- Public Attributes inherited from core::TCPSocket
+IPAddress ipAddress
 
- Public Attributes inherited from core::Socket
+class {
bufferSize
 
+bool active = false
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
- Protected Attributes inherited from core::Socket
+EPollePoll
 
+bool shutDown = false
 
+

Detailed Description

+

ConsoleSession

+

Extends the session parameters for this TCPSocket derived object. Extend the protocol() method in order to define the behavior and protocol interaction for this socket which is a console session.

+

Member Function Documentation

+ +

◆ protocol()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void core::ConsoleSession::protocol (std::stringstream & out,
std::string data = "" 
)
+
+overrideprotectedvirtual
+
+

Override the protocol method to manage and control the session communications in your inherited session. If you do not override this method then the Session default will process the 'commands' added to the server object using the processRequest method on the session input.

+ +

Reimplemented from core::TLSSession.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1ConsoleSession__coll__graph.map b/html/classcore_1_1ConsoleSession__coll__graph.map new file mode 100644 index 0000000..8819783 --- /dev/null +++ b/html/classcore_1_1ConsoleSession__coll__graph.map @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/html/classcore_1_1ConsoleSession__coll__graph.md5 b/html/classcore_1_1ConsoleSession__coll__graph.md5 new file mode 100644 index 0000000..c2df77f --- /dev/null +++ b/html/classcore_1_1ConsoleSession__coll__graph.md5 @@ -0,0 +1 @@ +2a7ca8496e4051856e49b851da4c5559 \ No newline at end of file diff --git a/html/classcore_1_1ConsoleSession__coll__graph.png b/html/classcore_1_1ConsoleSession__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5a3f119ee641d9e6cc2fda69aced8317f1534bbd GIT binary patch literal 60415 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≷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 + + + + + + + diff --git a/html/classcore_1_1ConsoleSession__inherit__graph.md5 b/html/classcore_1_1ConsoleSession__inherit__graph.md5 new file mode 100644 index 0000000..1dff5f2 --- /dev/null +++ b/html/classcore_1_1ConsoleSession__inherit__graph.md5 @@ -0,0 +1 @@ +3e603f5ffc8501706bc5122fe9441483 \ No newline at end of file diff --git a/html/classcore_1_1ConsoleSession__inherit__graph.png b/html/classcore_1_1ConsoleSession__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..92041167cd3be5b5388b1ccf4dda12028179e1f7 GIT binary patch literal 14987 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 z zWWWXY;E=O$XUDa>t=(Nqj=KSM?Ipm>cYRJ%V^srm*_*OULI2FQv}ns}Z(&Ye)Tk>u z4=M!SUCMz%`rxih>v!jjhf;uOegn?#6kgN4M%rbLT|M0~`^_*(J9wEdA@Q|3DA z&%>^e635~{mDLwZI z*Jg~GVtijeF0_b}dG`7p05zR+la29hpJe45DDgQpll9wwtV@!YwrFgL&*KG1wzZBl!by zgQ=Hqe9aUlo^@XoMnmv`P|g)_U0iVq;He2tuak?!O(GU#NS5ZiZ% z?*-#uj}xZK5=U~+Dv*jBUcBs9%|4cWiCAquX+zYU7Jc{wTC3sId!nq4NyI>2x5HCQ z(19|h(2RU*%CGzQheDP}v$Q9J@bS(!fIN58OocH+Dkzgj>7LP^?dma`rlz^aXV(1A z{0YX%{XmL16E<%C1F?&^`0UA2$!8k2t_h7+g-SMyW9pB?oX1_7`W=OtZkW91Ez9v2 z(Q6)FZ4Q<;^Q&7I zy1?62+C<5}ku zU|WIaig~c(p%#XdGm@=dsCq1fJn*`MavCv zYz_|*1iVeK${!qb_Sns=7#zHrnkvxZ?NIs<@fXPR&ko{W4%#2M`Ts3u$eZlcD^sEw zQIAw_@t()o-@o#BIC~?TY@(be5iKGlBxIVVw8+*N{yW*>+!y~^ zF|8m|A`Bhy@c6g^VF@vXDcCIYbAN;hAW>WiyF(1*1X;2;we#1cQ3aOBO~(bTmS_*% zNO+T-ygUo8;)b!bT0~9=+wL%LP=XZG5y3Kc6JwJoileuPuboav8S;8y4z*ZNDDPY) z!`!aklQ0of!HAP-&jx2gJ|7zd?2$=7_SyDtX3)&D{&cWIX~mC)BGE7bA|fILOHt;(
-T)H2w0jtvq<}wXk zg8NPeY5H3yF#ig(qd>PMZH{WHprXjqyG{6BCZgC3IJz$o*D*Y$X+Z4?9qsHJhMK@3 zU6q#E)WqrO?akSkIb&e@jEud^vPm z%*2ivd+13!f*BK!9qc3HhGRCTfQT+E>^3U+`8*8uFhV=BY_!nVR{F@!UAek|cZSfm+}fSf z3TJRXZe9##l9SJ^ag@kh!)JG~9<@4Pb;KraNfM@I*8O&(%uCS0l2tDzrY2Ja9i|K% z->yHAp*E*JD#Fglrmc#0Lx9%%S3&;Iy>++?c|ECur;A z*qVei&!Dl#pExK^=S5pK6fEpjDxEfjns8nwS)V_jpVOQTX#Y5P;2A z>HzO<&==x;6ij`D{+4z06bncoEr(7OS+Z}JS&hL?Z9PKMvg}Fb*=SIi;ZdHwm969}M^GmuG z-wm?IdVA(kuf>qX#v?^%ktu0SUBi#L*2d2-*jTwj?MpAj@(VuaVr+S&rfAj}HbmQo z6_7*vG21)o(tmkFj)oq7F;P;BMv4wUZVxh^UF-Q4ZlyQhAbc%3U>f>t^Nu$yD*wpz zJ;i%y1sj|F$ah#t;(jk;r-zwxvXS@-;Y2*e&2MICIhm`bn&(+6RbF2l80*Q>h2$UH zjTYbb&>TTY-XrI)OyHA}{d>S8TB2ed(wOlpW@%@J|9i?p2~I%ila1HeC~|H6q`yCH zPdi5I-xb(-IN54SY{>FA_Jiz3&lOFCnw;x{rNrPHx4U__^1{P(%c0qY@^^ zSA={V4k!jO{-jw|z7c~dvQjM`SVQd2OyIK4)1N^!^hSR0$EY^UUB@j+xjkk5zmJpyawD&)1(TTF8SH4m1@VuY@=3!%Az=Y{N&PTwHv>Zxv925z2fP*hK`&90fmotOE|BArs10c-w}(U_(w z3%FPsr8NHm7W^%I88VswT2EtfTWTXG7sZ`cBf~>%e0}U9m$^6q(eRPcbk5Q9_FE7M z2i&RB^RN8H_2h{}`V|LGRsU!I9WLnUJ$H~qR#%OeL;EG^;fgm&T%4oFS^oe8BdKrs zf+T3(yy@=_LI4Elw<_p16MzSd-vvM3zZEHC*F$vKo1j{5)zlj%7{Ov1v4^w+2-tpg z0Z>gT50~-bBF;>NG8JNd?-_NPDZn5IKWb~EAQH?%&OCl9*futH#3}!cAJMS<)GM%V z&w^MkY;NwCzf&d1fsX?z5mZWGTHUkDj8QZQAy&-HY`On?-TnlaK1{iYGB`A=R_QN+ z3p%y@12siY2omR~q$JzGzeF@5qKd*rWlu((dW_yi{-0+dwkoUAU{pdy#Uk1= zt6qoL?eL~9waf;eE9w%9#E*c3gZ;S;7ag*P$iBX%Q7!f1F5~i|i3!zhOMM$^VX?kc zi;^NL=3&SXMgH3;hTyS%KTO~32Y1`~n1-2|kM+JvIkCS(+W(i9Dk87Oy_}lj=hao? z&1e(DrKRa~#A1_w&!(%^&$q8$^${`KJdBPH|LRGcUSD%+I*-WQ+})*BFw}+ASdM3% zo}DrO+Lpo^)i(Ys{QJ8vBw1v#F-NI|fs?0%K}0&UaD5f8&dE&PVBl-K#C1*kB6yf)Y21-ZSu{ z`@ho%%$t%L{oE97mUPuCq#cAcDScK$W>fAcCRz1{TdbF~9JmVgPhRZRFhRPvUzr%4 z<64{Hjl6s1_H^(uWEa;cH*bS_?+@_~)U0u;hWum|dCJ-TCu*zaeQiiG`5z}dnEC&m zr;$(k%3;hR$;I7gI)B|s*|7Jdn^8X=cJsJMEjoBmEB9SXO;?codXRu7>wTaoFE3Y% zV639wXaGsWNZF!fyy<>)GP2K|<_te9AV3(tGJ%Tqmt`${tvizz>yjqgFB47{QRkRC++ zkzA}C;+G@k-93q%Gz<+v@gN`0$%u=0LtLa1=aO8X?sKhF(9x|`_a_=f6H3_yTxa)L ze(z7H44ZCW{EG-^+?K*m+*2bE{Q>==13m&*OUL-cgLeu>L{Z8ENNEJ=U26$oMFjA?>@r7+R8=|Px(*5JVYYlEXC$E>7Y zM0d>K=BklI42I%^fFLpM)?Cjpj=bdGNXvD#PPg@s_sv+_c>xE_Q6+cVUz`2h0jmo) zgp4avU2j>>PZj%}h~@zk=_#7Z6{fU-eNzbKUv7KT8!ZGb`0; zk0EHQY}3$9KxUhgxmWXpgXMU4%Sw%uoV=vdGKtUADvueRg^3HjsGX~JA?WV1WMPLB zTG+daYU#ei>awd<8WRdWX1|v9qW#!9z$3JFCm!Y2O$yL^Z)rG#Gxmmr=`IdM7 zZ=$a%Q{=b!^h%t0d7WH{h2Q#@=MR@6+Rd1!5`gFb%o5BRV zQi7s$As_`HQ&3wY&rDAlCxwQAVG=V8mk2z<$D=0s7Zin?dw7bf9^Rrg>+Hw3`0W8g zQfh)|WNGP4CXe?q1+q0>76@CAn%u}_l={$L^Cgvfo7n_S%kXbYON8xSmn^cn7TnP1 zOx{no4bAU2s6Tut>={4NmQ6Mty+M{U%`aN(?vHGOe6wv@Bu!HY=7>f^cZ6k0HHOE; zuqUSqxh5nG>Ro_`=>3EZ%6){>S7eA-ztM|x{Z+y+F@der9}e9ZViC%lJS%L8gWwQ| z48uBkZohq9RJ0}xsWsE9+6n-8qPWQ}(gMlOM-WheK<6kY5SAAI39|jqh!+GB~rto=M6%2$2Kw>B$-`GJc=k))3 zxzZmI4#`c;L^`L#W?uwmQgJ`sKjcj1k+HGkK|mF3a&mH*UX-(&DpY@rhzzsZ7@Vr! z#ivqqovm@2bN)$fRd^JXkg6(&hI5bXf2KV3;eYf2d3I^98GolBqw}zTZU)%bDyz>% zCV{M0=$urwXIdZkbe|?L0;X0@z29+C8{VMC+r5x_H&LmI>8i?srutZ9Vsz<#Um@5M z#D88yUc9dFgWd6hM1iB(`x4LZW(~-68$)cu86^rAk(yOT;e4GJs3V4FJWY~GyhQk< zZv)hgU^r}b73Ewi^jrNU_Gsq~MFJ6-oh>FCw=Yxntfch+81Z1a2eP^g5)_}MTmQ#x zOZlMxwrxpuxl%tf<2K8aE3&@DgktzEJGKUzXtHD%Gv!|NO-$uwh~!&1m%S@4gYQJK zQ>E+)q1^-BgoKm=fyv&STrSsLw$ERY*#Sba<$@aBmSTo3_G={i%US*Roq8dKHqrm& zH5?7Bvw>f5APT3cM`PO;^In+UjE^>smc_vbf1=8^I2TdhqDW^34P(`IKRS&R3P zOd3D0<+-u>nDbdjgcm0$z@g@mWDQ%dCCUxSEh^IUc~4ZE zTNc-gNq=n2+>eufQO|!sv_hk%+H+83_34C~CoW4Kf4A4_2_DV~!j9=EDD3En7u~{D z8bC#rJo<%ysfoza&1;)3se_v_Wj=Dau{ljvB^Z2?j99WzHT2{qICeez+k5XApy^GXTtk)YN|t@MO7uA-(rAw;|yzqDid}LJm++)vGAvclK z)L`}LwOw;1yA5Wch~ZC!YHad52yW1cc`sdZkIfq2tfqWtVRhC*${ zR;8uJM{5Nso_!mztTG$JpR#odioU)Rflucp31^0r6=%cNByn z=5dByTNf;Hd%IAv`+-UZ%J>I~5XVsxs$)=>c4q|(85u|w^@#P8o2aEvz$emnbW*qh zk(Yp}%DtWU#G0xnq&ky@`n@RLk}h!sSq6Vvn6Wv8i_=-ERFce-A}cwboy_R^so5!R z>rWL!Bp8rMXgIKbAi#5=Qf)ffy5Li}X`uC=VwHlL(%-Hji;3oBApwj(FSyQe`OndJ zC5e|guG?_b#siIJdrpL_#(LmA+3jw3j33*gxzav|M9JRQ47p=bSH*H3nt`X#8u$^d z&A(Rh=<8+{F526ueb`i?eP)GT}{LB0*8!ta(lr#=3UPmRpMb8-jbF^c}e z$sbG0i~bc^*~-t0@+FO*4`7_Bl!tR7*^#%6`SIBpMt-DB$6Md9E)BE@qY80PxkK|G z6ZJPmeGu?%p{RcryhAU7)`raN|2~2JC%!U?45?f~mJs0NfFf2{o9Z>6=pV7SHxn1O2MTJ)dAPwd0& zLJT;NCeE)qDI=#|LVB`ha7v0TPUT<=q+TPHH%U&hiOfdO`!W$?o;Eg$81xc8#bPY>(1RT8l00rSU#A)cqjshhuWZL)Yv-R82+89d}-E-e!Slr=A1M) zW1)3B{vq!w3OT}h)7oa)3XyFC&%@P{I2KldS{=^c^C!`Q|I_>_y{0rN@ZaZ8;8S*k z|KH|Mi-wi@P4>hlCMIu`V`snqQwGHj1qH=qGgDj&q$h2@qZwapl~|9#=g?*={( z1Z0}~h!|hvK774^nH)vvez7;<%#`Il3#^Jhisne7k#dF^Hhh8}Khg=c+%Ci|*kmJG zZG4#{iSd3bhQO}ns@rtSpnJ`LI4G+zsj8}^p_oZ!Qu|#-6V&eV?)vESBcOc|i)?#5 z^X4g%YOrY~I96gQ?~d>sG2obd$1w0l@l5vSl$5lmq7FHviP7Zw+HfP@+wSZrjKpdQ zt6x^1NrD-c5$YYKt`gp*6z~~UQvdO6CD(Fd@}}omvyAySZj(+>{M5{ls8zrbHaP^r7ol$q%&xpKaVvTNx!!~N_fiX{D z_`4^5yc3k6-fyIxJxObf>l!uuunHc;NDrXyejK2^3Z!^wPjM&4%qNJaPa+1*4cqaA z{iI43l$p z`unN9u4(#gl)CFZr;sX>J9>%)Uwy#>m_eUTwIwqNS@;}$ zoNhs09&wXcTLq#<_sx;S=pRm$##|oqf7e6DiGhG zIn!0c91jXp_I`PPo!kSqGemYiKrRx-TyHXCE^HyZZf=O+LK9E9Se1)9+y{hZQ8Jyk zOHYvUgwyK)YL7iOGToW{7AW^@;)8uVznx9-#xpNWl4R;CNTHJ835JBl&J z49)S@o=q%7@cKN{p{Qlc-_AUCkI&WA5Hwr|$%pd+A)vZz3^XDZvsohNA{!9(`)#YQA@LL8GtQ@3W~OZJ`d2SSbKIFwRXU(CzY(iJ&VQ`Bhx zumZjx%dUOTE^obCKX;8C;kPLXJTpGE?80-t*1n}(`Y_IyGtY2^Xu*mw8p*z?+mlNP#TD2bvwL6PTqS|+jSU4<2=pFJNjDL*dca4o0J9pgFrN=3Qh&zjFCaZTbnhy? zQQ82VIiO?JW3M#&1q|36nG)ZZQjisQcDnK~{@iYR=kQGIGKp1D1t-OrJf z)U*&A^iaR%lh~ylWJmLYVqa1`J76cgW~6*{!?8Dr=#F_S8h5?yf!tVP?yGv43gJf& zglrrZCZR>uflDLi9uC8r3#S_#X4bsM>kGFxT9X4QE`%4^x3sG$s{vKJVPv@a>jGE& zZ_+18otFKoEAXEqzv^1n5)PK9cbRY5ORMRNBGp`JdS^jStciYnAH_V zI7i0ff%NqF-EFyrUcAU4=xlkjA>}eE$gxf(+l%fKO4mhGcGp3bU|-pHf_iuS!2K6h zCSS@0ew_&nwBfVhgF~4=<%J-9^`nG9J}RTf%rubR0w}(;IG5Zl=1XlepQqxBLO{q` za{1@{SMF8~L{qbWxR`AIR zq_WUk31Tv6aX}bPe(Nx%vmjcz$jTI@4ag2O-u%aPC(oqSEqkXS<~5L|rT~DnxPn-v Ih|!1t1w;DT4FCWD literal 0 HcmV?d00001 diff --git a/html/classcore_1_1EPoll-members.html b/html/classcore_1_1EPoll-members.html new file mode 100644 index 0000000..4043af8 --- /dev/null +++ b/html/classcore_1_1EPoll-members.html @@ -0,0 +1,97 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::EPoll Member List
+
+
+ +

This is the complete list of members for core::EPoll, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
check(std::string request)core::Commandvirtual
EPoll()core::EPoll
eventReceived(struct epoll_event event)core::EPoll
getDescriptor()core::EPoll
getName() (defined in core::Command)core::Command
isStopping()core::EPoll
maxSocketscore::EPoll
output(Session *session)core::Commandvirtual
processCommand(std::string command, TCPSession *session, std::stringstream &data) overridecore::EPollvirtual
registerSocket(Socket *socket)core::EPoll
resetSocket(Socket *socket) (defined in core::EPoll)core::EPoll
setName(std::string name)core::Command
start(int numberOfThreads, int maxSockets)core::EPoll
stop()core::EPoll
tag (defined in core::Object)core::Object
unregisterSocket(Socket *socket)core::EPoll
~EPoll()core::EPoll
+ + + + diff --git a/html/classcore_1_1EPoll.html b/html/classcore_1_1EPoll.html new file mode 100644 index 0000000..84efa4d --- /dev/null +++ b/html/classcore_1_1EPoll.html @@ -0,0 +1,454 @@ + + + + + + + +My Project: core::EPoll Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::EPoll Class Reference
+
+
+ +

#include <EPoll.h>

+
+Inheritance diagram for core::EPoll:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for core::EPoll:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 EPoll ()
 
 ~EPoll ()
 
bool start (int numberOfThreads, int maxSockets)
 Start the BMAEPoll processing. More...
 
bool stop ()
 Stop and shut down the BMAEPoll processing. More...
 
bool isStopping ()
 Returns a true if the stop command has been requested. More...
 
bool registerSocket (Socket *socket)
 Register a BMASocket for monitoring by BMAEPoll. More...
 
bool unregisterSocket (Socket *socket)
 Unregister a BMASocket from monitoring by BMAEPoll. More...
 
int getDescriptor ()
 Return the descriptor for the ePoll socket. More...
 
void eventReceived (struct epoll_event event)
 Dispatch event to appropriate socket. More...
 
int processCommand (std::string command, TCPSession *session, std::stringstream &data) override
 Output the threads array to the console. More...
 
+void resetSocket (Socket *socket)
 
- Public Member Functions inherited from core::Command
virtual bool check (std::string request)
 
virtual void output (Session *session)
 
void setName (std::string name)
 
+std::string getName ()
 
+ + + + + + + + + +

+Public Attributes

int maxSockets
 The maximum number of socket allowed. More...
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+

Detailed Description

+

EPoll

+

Manage socket events from the epoll system call.

+

Use this object to establish a socket server using the epoll network structure of Linux.

+

Use this object to establish the basis of working with multiple sockets of all sorts using the epoll capabilities of the Linux platform. Socket objects can register with BMAEPoll which will establish a communication mechanism with that socket.

+

The maximum number of sockets to communicate with is specified on the start method.

+

Threads are used to establish a read queue for epoll. The desired number of threads (or queues) is established by a parameter on the start method.

+

Constructor & Destructor Documentation

+ +

◆ EPoll()

+ +
+
+ + + + + + + +
core::EPoll::EPoll ()
+
+

The constructor for the BMAEPoll object.

+ +
+
+ +

◆ ~EPoll()

+ +
+
+ + + + + + + +
core::EPoll::~EPoll ()
+
+

The destructor for the BMAEPoll object.

+ +
+
+

Member Function Documentation

+ +

◆ eventReceived()

+ +
+
+ + + + + + + + +
void core::EPoll::eventReceived (struct epoll_event event)
+
+ +

Dispatch event to appropriate socket.

+

Receive the epoll events and dispatch the event to the socket making the request.

+ +
+
+ +

◆ getDescriptor()

+ +
+
+ + + + + + + +
int core::EPoll::getDescriptor ()
+
+ +

Return the descriptor for the ePoll socket.

+

Use this method to obtain the current descriptor socket number for the epoll function call.

+ +
+
+ +

◆ isStopping()

+ +
+
+ + + + + + + +
bool core::EPoll::isStopping ()
+
+ +

Returns a true if the stop command has been requested.

+

This method returns a true if the stop() method has been called and the epoll system is shutting.

+ +
+
+ +

◆ processCommand()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
int core::EPoll::processCommand (std::string command,
TCPSessionsession,
std::stringstream & data 
)
+
+overridevirtual
+
+ +

Output the threads array to the console.

+

The processCommand() method displays the thread array to the requesting console via the session passed as parameter.

+
Parameters
+ + +
sessionthe session to write the requested data to.
+
+
+ +

Reimplemented from core::Command.

+ +
+
+ +

◆ registerSocket()

+ +
+
+ + + + + + + + +
bool core::EPoll::registerSocket (Socketsocket)
+
+ +

Register a BMASocket for monitoring by BMAEPoll.

+

Use registerSocket to add a new socket to the ePoll event watch list. This enables a new BMASocket object to receive events when data is received as well as to write data output to the socket.

+
Parameters
+ + +
socketa pointer to a BMASocket object.
+
+
+
Returns
a booelean that indicates the socket was registered or not.
+ +
+
+ +

◆ start()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool core::EPoll::start (int numberOfThreads,
int maxSockets 
)
+
+ +

Start the BMAEPoll processing.

+

Use the start() method to initiate the threads and begin epoll queue processing.

+
Parameters
+ + + +
numberOfThreadsthe number of threads to start for processing epoll entries.
maxSocketsthe maximum number of open sockets that epoll will manage.
+
+
+ +
+
+ +

◆ stop()

+ +
+
+ + + + + + + +
bool core::EPoll::stop ()
+
+ +

Stop and shut down the BMAEPoll processing.

+

Use the stop() method to initiate the shutdown process for the epoll socket management.

+

A complete shutdown of all managed sockets will be initiated by this method call.

+ +
+
+ +

◆ unregisterSocket()

+ +
+
+ + + + + + + + +
bool core::EPoll::unregisterSocket (Socketsocket)
+
+ +

Unregister a BMASocket from monitoring by BMAEPoll.

+

Use this method to remove a socket from receiving events from the epoll system.

+
Parameters
+ + +
socketThe Socket to unregister.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ maxSockets

+ +
+
+ + + + +
int core::EPoll::maxSockets
+
+ +

The maximum number of socket allowed.

+

The maximum number of sockets that can be managed by the epoll system.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1EPoll__coll__graph.map b/html/classcore_1_1EPoll__coll__graph.map new file mode 100644 index 0000000..2dd6f68 --- /dev/null +++ b/html/classcore_1_1EPoll__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/html/classcore_1_1EPoll__coll__graph.md5 b/html/classcore_1_1EPoll__coll__graph.md5 new file mode 100644 index 0000000..888ccec --- /dev/null +++ b/html/classcore_1_1EPoll__coll__graph.md5 @@ -0,0 +1 @@ +5100dbe7e02384bc36f1eefb02760f18 \ No newline at end of file diff --git a/html/classcore_1_1EPoll__coll__graph.png b/html/classcore_1_1EPoll__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1af8f754732fd251c507966802f4c4494a78c179 GIT binary patch literal 5244 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 B2`&Ht literal 0 HcmV?d00001 diff --git a/html/classcore_1_1EPoll__inherit__graph.map b/html/classcore_1_1EPoll__inherit__graph.map new file mode 100644 index 0000000..2dd6f68 --- /dev/null +++ b/html/classcore_1_1EPoll__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/html/classcore_1_1EPoll__inherit__graph.md5 b/html/classcore_1_1EPoll__inherit__graph.md5 new file mode 100644 index 0000000..067e9e9 --- /dev/null +++ b/html/classcore_1_1EPoll__inherit__graph.md5 @@ -0,0 +1 @@ +e2aa4627285840b91c6ac05a5f7213fa \ No newline at end of file diff --git a/html/classcore_1_1EPoll__inherit__graph.png b/html/classcore_1_1EPoll__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1af8f754732fd251c507966802f4c4494a78c179 GIT binary patch literal 5244 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 B2`&Ht literal 0 HcmV?d00001 diff --git a/html/classcore_1_1INotify-members.html b/html/classcore_1_1INotify-members.html new file mode 100644 index 0000000..8e9b5e2 --- /dev/null +++ b/html/classcore_1_1INotify-members.html @@ -0,0 +1,120 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::INotify Member List
+
+
+ +

This is the complete list of members for core::INotify, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
active (defined in core::Socket)core::Socketprivate
addWatch(std::string watch) (defined in core::INotify)core::INotify
bufferSize (defined in core::Socket)core::Socketprivate
ePoll (defined in core::Socket)core::Socketprivate
eventReceived(struct epoll_event event)core::Socketprivate
getDescriptor()core::Socketprivate
inAccess(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inAttrib(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inCloseNoWrite(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inCloseWrite(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inCreate(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inDelete(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inDeleteSelf(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inModify(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inMovedFrom(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inMovedTo(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inMoveSelf(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
inOpen(std::string name) (defined in core::INotify)core::INotifyinlinevirtual
INotify(EPoll &ePoll) (defined in core::INotify)core::INotify
name (defined in core::Object)core::Objectprivate
needsToWrite() (defined in core::Socket)core::Socketprivate
onDataReceived(char *buffer, int len) override (defined in core::INotify)core::INotifyvirtual
core::Socket::onDataReceived(std::string data)core::Socketprivatevirtual
onRegister()core::Socketprivatevirtual
onRegistered() (defined in core::Socket)core::Socketprivatevirtual
onUnregister()core::Socketprivatevirtual
output(std::stringstream &out) (defined in core::Socket)core::Socketprivate
receiveData(char *buffer, int bufferLength)core::Socketprivatevirtual
removeWatch(int wd) (defined in core::INotify)core::INotify
setBufferSize(int length) (defined in core::Socket)core::Socketprivate
setDescriptor(int descriptor)core::Socketprivate
shutdown(std::string text="unknown")core::Socketprivate
shutDown (defined in core::Socket)core::Socketprivate
Socket(EPoll &ePoll) (defined in core::Socket)core::Socketprivate
Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socketprivate
tag (defined in core::Object)core::Objectprivate
write(std::string data)core::Socketprivate
write(char *buffer, int length) (defined in core::Socket)core::Socketprivate
~INotify() (defined in core::INotify)core::INotify
~Socket() (defined in core::Socket)core::Socketprivate
+ + + + diff --git a/html/classcore_1_1INotify.html b/html/classcore_1_1INotify.html new file mode 100644 index 0000000..9651ce2 --- /dev/null +++ b/html/classcore_1_1INotify.html @@ -0,0 +1,156 @@ + + + + + + + +My Project: core::INotify Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::INotify Class Reference
+
+
+
+Inheritance diagram for core::INotify:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for core::INotify:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

INotify (EPoll &ePoll)
 
+int addWatch (std::string watch)
 
+void removeWatch (int wd)
 
+void onDataReceived (char *buffer, int len) override
 
+virtual void inAccess (std::string name)
 
+virtual void inAttrib (std::string name)
 
+virtual void inCloseWrite (std::string name)
 
+virtual void inCloseNoWrite (std::string name)
 
+virtual void inCreate (std::string name)
 
+virtual void inDelete (std::string name)
 
+virtual void inDeleteSelf (std::string name)
 
+virtual void inModify (std::string name)
 
+virtual void inMoveSelf (std::string name)
 
+virtual void inMovedFrom (std::string name)
 
+virtual void inMovedTo (std::string name)
 
+virtual void inOpen (std::string name)
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1INotify__coll__graph.map b/html/classcore_1_1INotify__coll__graph.map new file mode 100644 index 0000000..b1d41e1 --- /dev/null +++ b/html/classcore_1_1INotify__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/html/classcore_1_1INotify__coll__graph.md5 b/html/classcore_1_1INotify__coll__graph.md5 new file mode 100644 index 0000000..fe5b975 --- /dev/null +++ b/html/classcore_1_1INotify__coll__graph.md5 @@ -0,0 +1 @@ +d615bb68e8a6be5cf37964a14420474d \ No newline at end of file diff --git a/html/classcore_1_1INotify__coll__graph.png b/html/classcore_1_1INotify__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..473cbe3f66d544b3aedf63c84f2eb751b34ea376 GIT binary patch literal 12833 zcmd6ObyQr>v*$2OfWcvKw_t(b?k>S0!Cit&aCZw%aCg_>1lJJU-8Hzo?0om_`|ZB- z-kv?Xf9;t$=k~dMtGaG=cXfTL>V_*RNTDDSAOZjY6d7r873j4a0Dv(@fP=PzHtj~C z7dWF&QsRKOe||ab#XkT5GJuS@h?-l*Nv5lY+Til*SsjXmFnU2)UWq|(ALi&dCWMfB zU0fcchNeSiWN#jYhc~xxO`~^^iA5n~kYvx+TH=m<#=5iM*dCz7ABt zOdy7)&X8yM@}MDsi<}aAps85a;4fc3!@hWVZX8EYC!-INg6|ue2dZXB3J~@z*}1px zj5<#{@x@e9sSW9@!5i&Yb6myuC9hqaAUH1HEPuQDEBj{yW?ouZz1zP*Yk^PQR_915 z_>XYW^3_EM7FNg}#mSsVU{om`<(8M= zS_CAL0EJPa&4a(8$$`BX+F|i~Qh+aKx*%UtArPth-#=Q+M7r%624}|+{%nmKl7=!o z*y$g3n>cD0NK&J7#)W9v{759=y=utNOP5_X8sPv5%?+mXde=6HG)=d7%r=m!U3C?o z&st@zYg=VdF|D`BkztxO1d%O6cYk@W0o6 zDMNEc){-g4oTA$`q8dHk6er%xDgaVY-01SwU!bpkPR?k4cA3n+ZhTT&I4D*L803SRtus#5%F-slow#+P2dONckKa)~V#vzydC!N+>wX0L!&@Bc z16ND7*reTH+cneTIQOR<(>cKcD;R0*?m=y>Z`SlGm}uMDOmt=mAN1|iGu?jy4J2=~&s;AX`P+$5b$ektOcYm!eTX;Fl)_qpaGNf46ytYv+CuEYZPQP!## z{aNKGrE8Yu-GxkAJfrCCkkW`gBnk+KWe-kQrLcvnnxs0qGm1(|y;<6+IQaluT4&?% zZ_MYr1~OfgcQ!7-kAp#7>jQoWrA%vX)A*fCdf`Xd`6|086*@$yO&E4Ll~{g{AC1lu z{wlAwhP$aNHYdMPl}&xKg&k=9?AT6JUNA?E$E6j)aV2VhuRxEP*R=5i9|=8i5rGpx zb{1Ys>F?~=+4HLXS2|`nrqFRNKr%`K%{@3^M}XxcEz$?Gpsj^W_5z*d&_a=RW~Y8^ za~NSrOo_a5*!?zX1l44JOYEiCw&*B$_ZD|0r;-g`6+UKQW+9*QVf-=E7Ds9KWIsRy5p6DUwnWD2 zkk9aazloLe6FrIk;!^~~d_2CEy(XQDXPHMOLV;MYcY8gT;RlJ&Z)(hJv4;NJK=0td>z!nJ8TN z&K^`0VjPsar!GK-0PN}MLC3>0fBX?a=hK8oA zNM$N%lnnU8-Z5Kie9Die0iu#Bh$Md;GoR{14umC&$dQGB-n~nOJ~vTg2+z%Z-J8UC zB~rlh3}payPS1s*a|4Z@VR7gJhmeSS8>vI zl9YV;G+_z0u;9^XyGL_6dF1JMzEmtI+?}cY7TsbG-Kqg&#SN9c7rp=DTjg}3eK_tZn-hDKi%#%QYz;D%7mdS=pP{wO4S}0tiH8i zZEn8Jm1HRAXN5*Y2$X5R*QJQ-TI+ymw9Q12l3Ff~8?I%pSOdux62PPB1#7+BH~YyJ zin!f(#>}FJDAAfAppvMV+K|ObPt@ch8yb@4h=rOpOpVqOL5ZM>6BqF>oAP#dm*93g z*NXZ>$Z_c2+{(+ZOo$KwC{+uHBBaUtgj-#lI9w|XCGdT9hhf#+O(u^+SZKY;CP<`7 z{>0+hDCEbAD@_G7VFiaF@VRCMezCgo24{TJXaK9xquidhKZ~nM$4KV)$5GB(v6}$^ zlv09du6G0IAYByb8uxj*@vX641qB657(ZUid!a{>S1f^O6bHze#wRK!)1vSJtxIIw z3#8($S{w8FZ}712E`1x_nde8(G3Q()Fslkwirtd>HiFt>-%<`1pZT5YO({!@8g!@6wEG3^aI6V#KbCCq!w{kr6r8T`;GXR*0gnh}cK7$AE;q^tr>Dc}`M$ufG&`)X z#B+b{$^o0;7y<$2D+@T~t}FKVdC;hz

AFCmiyDU(>o?M81?=nl>gp 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 + + + diff --git a/html/classcore_1_1INotify__inherit__graph.md5 b/html/classcore_1_1INotify__inherit__graph.md5 new file mode 100644 index 0000000..d573144 --- /dev/null +++ b/html/classcore_1_1INotify__inherit__graph.md5 @@ -0,0 +1 @@ +0dc5338bf2f693f8fb086fcab1450564 \ No newline at end of file diff --git a/html/classcore_1_1INotify__inherit__graph.png b/html/classcore_1_1INotify__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1335acbd97573879fa572b427f1b47bd40597583 GIT binary patch literal 4647 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 OAAmAU16nF)9`Y~5j?sGn literal 0 HcmV?d00001 diff --git a/html/classcore_1_1IPAddress-members.html b/html/classcore_1_1IPAddress-members.html new file mode 100644 index 0000000..fd983d4 --- /dev/null +++ b/html/classcore_1_1IPAddress-members.html @@ -0,0 +1,92 @@ + + + + + + + +My Project: Member List + + + + + + + + + +

+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::IPAddress Member List
+
+
+ +

This is the complete list of members for core::IPAddress, including all inherited members.

+ + + + + + + + + + + + + +
addr (defined in core::IPAddress)core::IPAddress
addressLength (defined in core::IPAddress)core::IPAddress
getClientAddress()core::IPAddress
getClientAddressAndPort()core::IPAddress
getClientPort()core::IPAddress
getPointer() (defined in core::IPAddress)core::IPAddress
IPAddress() (defined in core::IPAddress)core::IPAddress
IPAddress(std::string address) (defined in core::IPAddress)core::IPAddress
IPAddress(std::string address, int port) (defined in core::IPAddress)core::IPAddress
name (defined in core::Object)core::Object
tag (defined in core::Object)core::Object
~IPAddress() (defined in core::IPAddress)core::IPAddress
+ + + + diff --git a/html/classcore_1_1IPAddress.html b/html/classcore_1_1IPAddress.html new file mode 100644 index 0000000..7e4310f --- /dev/null +++ b/html/classcore_1_1IPAddress.html @@ -0,0 +1,142 @@ + + + + + + + +My Project: core::IPAddress Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::IPAddress Class Reference
+
+
+
+Inheritance diagram for core::IPAddress:
+
+
Inheritance graph
+ + + +
[legend]
+
+Collaboration diagram for core::IPAddress:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

IPAddress (std::string address)
 
IPAddress (std::string address, int port)
 
+struct sockaddr * getPointer ()
 
+std::string getClientAddress ()
 Get the client network address as xxx.xxx.xxx.xxx.
 
+std::string getClientAddressAndPort ()
 Get the client network address and port as xxx.xxx.xxx.xxx:ppppp.
 
+int getClientPort ()
 Get the client network port number.
 
+ + + + + + + + + + +

+Public Attributes

+struct sockaddr_in addr
 
+socklen_t addressLength
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1IPAddressList-members.html b/html/classcore_1_1IPAddressList-members.html new file mode 100644 index 0000000..4d47b63 --- /dev/null +++ b/html/classcore_1_1IPAddressList-members.html @@ -0,0 +1,85 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::IPAddressList Member List
+
+
+ +

This is the complete list of members for core::IPAddressList, including all inherited members.

+ + + + + + +
add(IPAddress ipAddress) (defined in core::IPAddressList)core::IPAddressList
contains(std::string ipAddress) (defined in core::IPAddressList)core::IPAddressList
getList() (defined in core::IPAddressList)core::IPAddressList
IPAddressList() (defined in core::IPAddressList)core::IPAddressList
remove(IPAddress ipAddress) (defined in core::IPAddressList)core::IPAddressList
+ + + + diff --git a/html/classcore_1_1IPAddressList.html b/html/classcore_1_1IPAddressList.html new file mode 100644 index 0000000..eed738e --- /dev/null +++ b/html/classcore_1_1IPAddressList.html @@ -0,0 +1,100 @@ + + + + + + + +My Project: core::IPAddressList Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::IPAddressList Class Reference
+
+
+ + + + + + + + + + +

+Public Member Functions

+std::map< std::string, IPAddressgetList ()
 
+bool add (IPAddress ipAddress)
 
+bool remove (IPAddress ipAddress)
 
+bool contains (std::string ipAddress)
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1IPAddress__coll__graph.map b/html/classcore_1_1IPAddress__coll__graph.map new file mode 100644 index 0000000..7eca7d2 --- /dev/null +++ b/html/classcore_1_1IPAddress__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/html/classcore_1_1IPAddress__coll__graph.md5 b/html/classcore_1_1IPAddress__coll__graph.md5 new file mode 100644 index 0000000..25ec95e --- /dev/null +++ b/html/classcore_1_1IPAddress__coll__graph.md5 @@ -0,0 +1 @@ +3b3fbb00dc006532931123df36fd8468 \ No newline at end of file diff --git a/html/classcore_1_1IPAddress__coll__graph.png b/html/classcore_1_1IPAddress__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4ca1e1f40d948a97105011818c12c71f0d5e0a68 GIT binary patch literal 3747 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 Xq(m$r`F`r}*9p*4*N0TA*+u^kex^GV literal 0 HcmV?d00001 diff --git a/html/classcore_1_1IPAddress__inherit__graph.map b/html/classcore_1_1IPAddress__inherit__graph.map new file mode 100644 index 0000000..7eca7d2 --- /dev/null +++ b/html/classcore_1_1IPAddress__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/html/classcore_1_1IPAddress__inherit__graph.md5 b/html/classcore_1_1IPAddress__inherit__graph.md5 new file mode 100644 index 0000000..9fc789d --- /dev/null +++ b/html/classcore_1_1IPAddress__inherit__graph.md5 @@ -0,0 +1 @@ +af05ea810e19e939cc00405a63da9dfe \ No newline at end of file diff --git a/html/classcore_1_1IPAddress__inherit__graph.png b/html/classcore_1_1IPAddress__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4ca1e1f40d948a97105011818c12c71f0d5e0a68 GIT binary patch literal 3747 zcmcha_cI)h)5kACBGH}RF1l!^*C6B&J=!69^l~`;^!OklNRZ=jdh~F*=$#01NwjF; z^xmSJmV5H~{_s5W{Rf`e*?rCI4?87aaI+_pw;a|(|C`|(ZD9yDXswTncy&N}lI1NUGcL=r1ldUIqcKL?#iRmC3njQ~KhsMrSRgxaBu}(5b#fBe|m`)`Y zdgiH-%x1w@?&z*+-7)vY?|)1ETXE|PxN|Uf0C>1RbE~ps%71rj3=cl{sWJzF6YM^O z@X)B6ezdgSl~>C;{=I?^`BvH9Wsrm|9P95_KYE)_Q+9qM+i^Es&nkjqr*i&~@CzjC zpe#hME>XV1!=)Dtm>kyZ*dP;$uXH&~@)FhjL;u>3=w>9j`s6eO7>bcawK&U(k5_6H zcw)Qb_mVyqq1qJ@bkpri#zhgD5l7O2*wE~KSXP18WUT5-dn>_@)ZnLFQa;qxA|kb( zld)aIaVaKIe_&G?goS!)?;%lQj)xD&qzSN)pOtPu+JQvQp12n;l?~RK*Aieb+Bq(X zBTKPHt1xB?bf!Wi4|A92Mjb;wYE@)>b8(oZF$tIp^5XlWN`FBy`J${#z3uQ|7yGq6 z2Oo46sc_XQL&|*%;_B*Jm7YXs#rQBaK-k*RqSgIzq=ag{ej(djMi$N(YW3ySYmUNV zmv=wYP@EE}X9?=LBI<8RN+E{!pAKOYR{l)10x}>4?&?J_17qhlzt#0rLS(6P!ifr3 z|EP^S?$HM7Gou>mm?_+6TorCwwCFPsh!Yj>2}F^$SOz4uDzXlIOFxKTK;U}M4Fv7? zlx=qt41m*Ly?~(eMh0t@8$CL@I5JxuTN)dI7;4@-?(q!#l{*LA^10+75D2%j@_SWC zS=+qhOWw}Bby!3RWbsG*ZW_%pfznEJfq6i)UwCML`S&<4RR&mI$@aR%IA1OhY=xIW zsD~j`z3b(mqwpg-p=vjfsO6`~I@c9^3O)!s%y_( z21Wv_*_{(mq4fRC6$1r%!5t3LH{o|yr+3hi+#|U?lup?u`GKrGp-!sS49#_Wa1S$^ z)QTK#Sp9iwInjGcxhCW7jIjqdv-X{hW)eke5d$L*!#^gU#Z)Ne>;dKA6;VgIks-oX zK9|JzU^$y*g4RvOuZ}}T*>l|T>fb8TH`|w`$0fDQb*Bx-U0#tt!}vvzjrbc?dz^}> z?$=6(v4lm30VF*BzFi!l?NTPU4CG*sl8JqiO_gHQvMZT4Kp8c*OCTb5 zix<6@l~58W+8a6rO+kSxazVe-Am(;%)frihjF_%wX#d)_wgWN)<9<_UQXBf+T)ev~ z$Mx4wqXu~Rlf?U%rB7RJ;W={=e;elO^jIm zkFNeJhFT+7tn3o35x^mM2!f!}`DiEF9l zy1r)ffhUY8My)^sAwtOOa#^-i;s#S^B~mHlQx@6?4w|#Y^c{Z-E&fm!S zEZqjoHRVXbrAwZq9-r?kz0xqgL@xIHbF{ifKT$LICZ1=FaIC|2KlV1D3Obalw4rO2 z;`R=Gy}NstO)2DFRnv7K`t@r$Ak=9))ibWP2oo(Xd6-TP~HMg0O3L5@&s(w>?6X)Uc5 zSagN%s}HNMVsDb6mZ$0u{ruJ(Hi*CqsVRAAw3d-kT#ryHOHz83Wn|?>h3*^2Rqw?J zTBNp{m?-gw5A%GSIAu%$<-dHjS z1Y*K0DX_S(aN{<~ZH#3~1!MoKV;k}d-tWW|WL&Ku)I#6g<>0tf!QQ%d!ka5w9g{Ko z3PrAdPpO*$fepa7n@S2Q(QPHLNtrY9<7MTDMpfH&&#Wi5egF}Y<}|r>d-*q0v$cQH zI;9?71!HtL`7T+;JSVJ@6Zl}OOuM#;oQB+BA6eFK=2aS1&?2bi_aC+3BA2)QqWetu z=s7Tz9khBU6#QY%*YsEKnUbwA@ZBykCY599Og1Wuub1H)pNc(_(>92m^?geNh{D?i zlKNQFfxZGS=ge1@k^T`Bt*rqE;g-hB?>+=rK!a=&IIeBUN6S$s9Zr^XsoPFKI!9`%x33y^^H2s zbu%wBLrb_lXKZXN9fR@%{yp+JvsZo{R~~X1?8jL;kO9Z<11kX^O({=yTr}Nv$sZ~J z*kywvdP*(*Hut(>PP1id9DTuFH+b$^-srYAih+|Bk2zVrM=IfM85-Qtq<`dNy!n6n z_?rqaN<9v!Rp|bdg3)q3_{G(}arM1V|6ZUCo-h_&grGP*B0dArl3R$y{i;Gf1`iUG zbMkEh;v=f_8=MZ`KP30`xRVt;wI{hzRov$TD~Mw7mbkc)OBR01iAWWy7PJfro=Nwf z`>57dQTl-qggfx2n3AOvV38??VR2zHl`83%_C;C=eCzsV8s{Eyw@LP{PWwcqvQU){ zt_SZRt4)^Vs4Jq*g_9e%GfKbP<6)E)Wk6eKB z25*c=T*cTbi4t|V>xRF$^;9-F^%kD*#zk=va73ydxgxLJh5bnxW(?~IGdfPa*c3pA{m_2S4oqQCITza8?6RTEj*_ZZnJT6=FADmM)w(6Q_-#Sxx;CT#U(|dydBNyS|58-8BWj- zy-b~w0(17nh?Vs)q~tFm|J~<|gIn1%^R2<}mgrgKkRC5vl=s)}byY8@%_p(>{#eGl zjd}G0z-U26jPKyw3I~l4VR$Axs3k2VT153$7z3RCR{qG+$;)xa_c@7XUMide8%1(i z<0J;>P^r3_?%v+pWN$KjPJ@ZsST$ekZ*_meOCRw}^ZAfYo~9jSF> zGsOV;F8`D8ai9Qfi0AK>eIaI_RbGqApn64JhM6@%VoLR^>mu+>LJQH)rKhXb3X z#(a)Z!=;^<^-d=KEWhQA|1qm^cNS=_?VaI{A}La|*Ixrk7~$kDBZIyB?sw*K=xV@? z*=#{rHNw6W@i#u&7Owk2=Nvz?Ox;!B3j^r4%7YzVz|HCF?@HzVyI59{K6%>k%=onR zT61Dx`=x`LgieiraBM*uzu~7tscp{R=AO`ik6&&a%e=Lj#9R1ntFpe9jncBroxgxA z383Etaw_AQu?{NrMuCz;xV~3A&SVmNyn=!W`T6-3UhD57oz=g5KITmnw(b3IFtvZK z_rdjs2tQeOOF<%?#LiIHGO*dDzlXL7S!%h;$Eqqg99}NLHv=+CPr)2&vHagJcR>}} Xq(m$r`F`r}*9p*4*N0TA*+u^kex^GV literal 0 HcmV?d00001 diff --git a/html/classcore_1_1Object-members.html b/html/classcore_1_1Object-members.html new file mode 100644 index 0000000..7ad76cf --- /dev/null +++ b/html/classcore_1_1Object-members.html @@ -0,0 +1,82 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::Object Member List
+
+
+ +

This is the complete list of members for core::Object, including all inherited members.

+ + + +
name (defined in core::Object)core::Object
tag (defined in core::Object)core::Object
+ + + + diff --git a/html/classcore_1_1Object.html b/html/classcore_1_1Object.html new file mode 100644 index 0000000..948e27d --- /dev/null +++ b/html/classcore_1_1Object.html @@ -0,0 +1,119 @@ + + + + + + + +My Project: core::Object Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::Object Class Reference
+
+
+
+Inheritance diagram for core::Object:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + +

+Public Attributes

+std::string name
 
+std::string tag
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/html/classcore_1_1Object__inherit__graph.map b/html/classcore_1_1Object__inherit__graph.map new file mode 100644 index 0000000..3ababec --- /dev/null +++ b/html/classcore_1_1Object__inherit__graph.map @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/html/classcore_1_1Object__inherit__graph.md5 b/html/classcore_1_1Object__inherit__graph.md5 new file mode 100644 index 0000000..0d3c9be --- /dev/null +++ b/html/classcore_1_1Object__inherit__graph.md5 @@ -0,0 +1 @@ +a9cce15cc34832b431df91662c11b71d \ No newline at end of file diff --git a/html/classcore_1_1Object__inherit__graph.png b/html/classcore_1_1Object__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..99816f04da960123dc59cde4890ad23172fde1a1 GIT binary patch literal 47078 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 + + + + + + +My Project: Member List + + + + + + + + + + +
+
+
core::SessionFilter Member List
+
+
+ +

This is the complete list of members for core::SessionFilter, including all inherited members.

+ + + + +
name (defined in core::Object)core::Object
tag (defined in core::Object)core::Object
test(TCPSession &session) (defined in core::SessionFilter)core::SessionFilterinlinevirtual
+ + + + diff --git a/html/classcore_1_1SessionFilter.html b/html/classcore_1_1SessionFilter.html new file mode 100644 index 0000000..636e718 --- /dev/null +++ b/html/classcore_1_1SessionFilter.html @@ -0,0 +1,116 @@ + + + + + + + +My Project: core::SessionFilter Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::SessionFilter Class Reference
+
+
+
+Inheritance diagram for core::SessionFilter:
+
+
Inheritance graph
+ + + +
[legend]
+
+Collaboration diagram for core::SessionFilter:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + +

+Public Member Functions

+virtual bool test (TCPSession &session)
 
+ + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/html/classcore_1_1SessionFilter__coll__graph.map b/html/classcore_1_1SessionFilter__coll__graph.map new file mode 100644 index 0000000..9c18031 --- /dev/null +++ b/html/classcore_1_1SessionFilter__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/html/classcore_1_1SessionFilter__coll__graph.md5 b/html/classcore_1_1SessionFilter__coll__graph.md5 new file mode 100644 index 0000000..5b37d0c --- /dev/null +++ b/html/classcore_1_1SessionFilter__coll__graph.md5 @@ -0,0 +1 @@ +808a9f2c332a110e5262a651ca2ff7c1 \ No newline at end of file diff --git a/html/classcore_1_1SessionFilter__coll__graph.png b/html/classcore_1_1SessionFilter__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8512724310b8f7e913d562bd37bb459c84c751c0 GIT binary patch literal 3447 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1SessionFilter__inherit__graph.map b/html/classcore_1_1SessionFilter__inherit__graph.map new file mode 100644 index 0000000..9c18031 --- /dev/null +++ b/html/classcore_1_1SessionFilter__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/html/classcore_1_1SessionFilter__inherit__graph.md5 b/html/classcore_1_1SessionFilter__inherit__graph.md5 new file mode 100644 index 0000000..9e8a557 --- /dev/null +++ b/html/classcore_1_1SessionFilter__inherit__graph.md5 @@ -0,0 +1 @@ +c829fe9289b5779616664f8a6bcd9c0b \ No newline at end of file diff --git a/html/classcore_1_1SessionFilter__inherit__graph.png b/html/classcore_1_1SessionFilter__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8512724310b8f7e913d562bd37bb459c84c751c0 GIT binary patch literal 3447 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1Socket-members.html b/html/classcore_1_1Socket-members.html new file mode 100644 index 0000000..9563454 --- /dev/null +++ b/html/classcore_1_1Socket-members.html @@ -0,0 +1,104 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::Socket Member List
+
+
+ +

This is the complete list of members for core::Socket, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
active (defined in core::Socket)core::Socket
bufferSize (defined in core::Socket)core::Socket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getDescriptor()core::Socket
name (defined in core::Object)core::Object
needsToWrite() (defined in core::Socket)core::Socket
onDataReceived(std::string data)core::Socketprotectedvirtual
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
onRegister()core::Socketvirtual
onRegistered() (defined in core::Socket)core::Socketvirtual
onUnregister()core::Socketvirtual
output(std::stringstream &out) (defined in core::Socket)core::Socket
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
shutDown (defined in core::Socket)core::Socketprotected
shutdown(std::string text="unknown")core::Socket
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket() (defined in core::Socket)core::Socket
+ + + + diff --git a/html/classcore_1_1Socket.html b/html/classcore_1_1Socket.html new file mode 100644 index 0000000..eb01ceb --- /dev/null +++ b/html/classcore_1_1Socket.html @@ -0,0 +1,424 @@ + + + + + + + +My Project: core::Socket Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

#include <Socket.h>

+
+Inheritance diagram for core::Socket:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + +
[legend]
+
+Collaboration diagram for core::Socket:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Socket (EPoll &ePoll)
 
Socket (EPoll &ePoll, std::string text)
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 
+int getDescriptor ()
 Get the descriptor for the socket.
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegister ()
 Called when the socket has finished registering with the epoll processing. More...
 
+virtual void onRegistered ()
 
virtual void onUnregister ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+bool needsToWrite ()
 
+ + + + + + + + + + + +

+Public Attributes

+class {
bufferSize
 
+bool active = false
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+ + + + + + + + + + +

+Protected Member Functions

+void setBufferSize (int length)
 
virtual void onDataReceived (std::string data)
 Called when data is received from the socket. More...
 
+virtual void onDataReceived (char *buffer, int len)
 
virtual void receiveData (char *buffer, int bufferLength)
 
+ + + + + +

+Protected Attributes

+EPollePoll
 
+bool shutDown = false
 
+

Detailed Description

+

Socket

+

The core component to managing a socket.

+

Hooks into the EPoll through the registration and unregistration process and provides a communication socket of the specified protocol type. This object provides for all receiving data threading through use of the EPoll object and also provides buffering for output data requests to the socket.

+

A program using a socket object can request to open a socket (file or network or whatever) and communicate through the streambuffer interface of the socket object.

+

The socket side of the Socket accepts EPOLLIN event and will maintain the data in a buffer for the stream readers to read. A onDataReceived event is then sent with the data received in the buffer that can be read through the stream.

+

When writing to the stream the data is written into a buffer and a EPOLLOUT is scheduled. Upon receiving the EPOLLOUT event then the buffer is written to the socket output.

+

Member Function Documentation

+ +

◆ eventReceived()

+ +
+
+ + + + + + + + +
bool core::Socket::eventReceived (struct epoll_event event)
+
+ +

Parse epoll event and call specified callbacks.

+

The event received from epoll is sent through the eventReceived method which will parse the event and call the read and write callbacks on the socket.

+

This method is called by the BMAEPoll object and should not be called from any user extended classes unless an epoll event is being simulated.

+ +
+
+ +

◆ onDataReceived()

+ +
+
+ + + + + +
+ + + + + + + + +
void core::Socket::onDataReceived (std::string data)
+
+protectedvirtual
+
+ +

Called when data is received from the socket.

+

The onConnected method is called when the socket is ready to communicate. Writing to the socket can begin on this call to initiate a contact with the remote device. The onDataReceived method is called when the socket has received an event from epoll and there is data ready to be read from the socket. The default handler will pull the data and put it into the streambuf for the socket. EPOLLIN

+
Parameters
+ + +
datathe data that has been received from the socket.
+
+
+ +

Reimplemented in core::TCPServer, core::TCPSession, and core::UDPServerSocket.

+ +
+
+ +

◆ onRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void core::Socket::onRegister ()
+
+virtual
+
+ +

Called when the socket has finished registering with the epoll processing.

+

The onRegister method is called before the socket is registered with ePoll so objects extending the Socket definition can initialize the socket before receiving events. Evoked when the descriptor is set using setDescriptor for the socket.

+ +

Reimplemented in core::TCPSession, and core::TLSSession.

+ +
+
+ +

◆ onUnregister()

+ +
+
+ + + + + +
+ + + + + + + +
void core::Socket::onUnregister ()
+
+virtual
+
+ +

Called when the socket has finished unregistering for the epoll processing.

+

The onUnregister method is called whenever the socket is unregistered with ePoll and socket communcation events will be stopped. The default method will close the socket and clean up the connection. If this is overridden by an extended object then the object should call this method to clean the socket up.

+ +
+
+ +

◆ receiveData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void core::Socket::receiveData (char * buffer,
int bufferLength 
)
+
+protectedvirtual
+
+

receiveData will read the data from the socket and place it in the socket buffer. TLS layer overrides this to be able to read from SSL.

+ +

Reimplemented in core::TLSSession.

+ +
+
+ +

◆ setDescriptor()

+ +
+
+ + + + + + + + +
void core::Socket::setDescriptor (int descriptor)
+
+ +

Set the descriptor for the socket.

+

setDescriptor establishes the file descriptor for the socket and registers the socket on the EPoll controller. setDescriptor will invoke the onRegister() event.

+ +
+
+ +

◆ shutdown()

+ +
+
+ + + + + + + + +
void core::Socket::shutdown (std::string text = "unknown")
+
+

Use the shutdown() method to terminate the socket connection and remove resources. This method is provided to ensure that all destructors are called for all inherited objects without a virtual destructor.

+ +
+
+ +

◆ write()

+ +
+
+ + + + + + + + +
int core::Socket::write (std::string data)
+
+

Write data to the socket.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1Socket__coll__graph.map b/html/classcore_1_1Socket__coll__graph.map new file mode 100644 index 0000000..5d5b731 --- /dev/null +++ b/html/classcore_1_1Socket__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/html/classcore_1_1Socket__coll__graph.md5 b/html/classcore_1_1Socket__coll__graph.md5 new file mode 100644 index 0000000..adf45fb --- /dev/null +++ b/html/classcore_1_1Socket__coll__graph.md5 @@ -0,0 +1 @@ +69112406f6e1b169165eaf15d0d8693f \ No newline at end of file diff --git a/html/classcore_1_1Socket__coll__graph.png b/html/classcore_1_1Socket__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..50d6e28970eca344711072530d9088a0b4e2124d GIT binary patch literal 10987 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 + + + + + + + + + + + + + + diff --git a/html/classcore_1_1Socket__inherit__graph.md5 b/html/classcore_1_1Socket__inherit__graph.md5 new file mode 100644 index 0000000..01198a1 --- /dev/null +++ b/html/classcore_1_1Socket__inherit__graph.md5 @@ -0,0 +1 @@ +7ef660fbc96e2f0002243bed1d5353f3 \ No newline at end of file diff --git a/html/classcore_1_1Socket__inherit__graph.png b/html/classcore_1_1Socket__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4090821a05dc1a22864c59292ffd8f73b08ef2b8 GIT binary patch literal 23688 zcmd43Wl&sgur4}4f&_O+f`#C20fIY0LvRo7?oJ32EVz4ccb6f!4^D6h?mEDrXYqY| zpE`2)sq^FBs=KIynYCv6?e16m>8A<(tRRK{>h&uS2!#GgTKo$L1Wy41!EGVK19!?c zTTg&Lh=#IK;-IJJpX~O+I1q>&^hsPq#XbFS*-Z!c`U&Y2V&YHE{(|^d5iRXsJ$$PW zRA`~$4Cr`9jjs&BrruYUWM(0#Ubb`=qn=*uEsq0B)erV~iXQ`5aPw&qt*c}r!pKDA z>#<7*unGd-;*1v;J;n@+h6KhWG`oUMn9vlu)vI<5+`tP1G~N~-?OnVjpaR z@(pf2^NnEHDSZvXrC=8$bL?a}QQoYKT8(t6rg^@5{&rxzcf(nfhJBZ;QcN;E zsE2^%%!nOjPaxJ=!igV)Ue%6%rO5lM{`o8_g(VLTiuIv}j>aVUC-%H_tan7`zgfu8 zVzTSVZ}$Pi%xK=_ve>?Pz0T!ir6Dn@GU#{qfLd_h{?I5AnwmeQ$vD zll25vp0!3xZhXHZctQ&0C+g@6I&EdXJ#OV~hlxAhO+DO_rECA4Op!V?^=^fVuJwP5 z(T}pnb|n#Lw3;b{u{v8sOD4}(;2A+B`Lt&1wasJU3+OB~anJ&9yw=t@?pSqq( zYO|>h)RBj_k)}(D{bi%svPm)p8`J)%`Zj$r{cg$_D&Bc$ z9k@D^^Ck;Rbay0TnnCE#SrRxI(}e$;ce#`O#g)L(->%~X2-(9IqIjvmUYETYG2tJb zE7e{zHGvokS1)&*O3hULL~bQvp1Dc0l|ZBR85u-vHc+yWvSzWMdOhm5A0Qld z{pT5TWM(EknTy+d>?ZvPsaWs49ARr)H0O|~R4}Yv5N3i7T~2l=y~=!GIaXRa;_y<7 zB&kRI7icfg^%;~m=OphtouJNtevt$L#)Sw{zGe-Lgs;& zm(D^$LJg(lfzh3vG`6;`@NjqfU{PSfWroYnA4kIdvvYh*iiOqbiVv)cO7IM&R4-rd zFwn>TsmOn|l9N3H2(iMW&eEn^LkSc#(|@XcLI# z__s$uv}pf{9Ss-DKBU(Z zPI|!l0g#W#j@ZP^%uGo~r@fvmBTDhK`ALTv!CcT7&3^f81G`>3eug?`z}u%=tCVd_3Jl>5~`CQ722VAu+LUCd$|ZUsIEq!IKWu2H&TP=>DnyXQ}U#&$qNi zPy;I9rzSOE+u9F^0JcjPU;u#pTL2&ZZygNmod11)`~Ta=fjz(56}{5}Poi44OEw}R zSVe_DQRdcR_p{QGcS>wDr0y#seV9p30nv)vX#TTc>-i!YMjZ{G2)hDc9y zIDzDWJ|Gu=?e!q^CJO&o&Q)Ro^>&6Q_~F>B_Ty3q0fX|?`Fj%ylOIHD@W6t|Z*g_x z^W+8Twh1$zDCDaw2-oM=OYt??DMXcsqX{SQX}GZTq@swmN-MBNyFEEk++kiIW}=!r zT=aW9@qy4i?RWTozpA^#DXaP&vCD}1Y{LTMgKtJIP$b6uE5!QzgX8jFSU>LNT=WY))SF!} z9<;9dZCwXa2Vz>EHl+QVXr&$wDP1QrXkhcZvc$ikcRax14&eU!gx5DAmX`jsp0&vk!p1b3P9f zl2PicyU#n`w^VT5M0GIRv5}{UOflKCHawCSwT*UQY&vVPn;u0yk;Kd&kJHtddGi~| z2+8$?T$;yAZ};jqo|&w&(;atG$DJ#z{2(eX@U#r+=Noe-p;N2J0y(6yRaf%y>z$dY z+j=io*c`qSfu9psno?7CxNiuAo<0;96q3i<2PBwV3+XC)aX2u zP@}_?N$4bdfwzsfdjBlo{+%q+8`wsmospI5+e8RfSMBk8Oe|^^8otRnr%M)=ZE@nC z4A#4(f^oQB3{zeCQTY#RY**j=n^^Q5jqXYWq>Q9|cXj+ksAA@O95o(dktt$}N~268 zPMnwruEBI!Ekw%lj0nOzzwn?HZf4?aMdTO(e%QrK<0`57Xz4>^)m&HQQ{i>t>S`Kh0si^O;q6bo z8jlr_STE}Sa_AS0FI+j_cN`l_vmU&SFDp^s;>G_~JX&RO*||T7c$od!Y2!C;aTCe@ zl~_XQ%?InwKac3dT$XsgxoCBS6$x@)9ORlP7Or5Y_ zZoOEPln)>LL$jNYYdHDhb<;WuS7i}MGJR6nS>53OkTW zThnsjoWh>_3*&M12|Em@&SIm+ack{*m5}oxo%-WPo8u*cpr9?BPeu$1N_kdu7>%~& zb|UQ{>#hf)ubQixwXg49DsF>mY(lH>&aEem6n{a@J8upeXwr^i;l*|t~nFd>6?^@{*BR$gUMfx za2mj-l?Y8{6)_)Qn_-b5ui9VrJ8pK`#=wwIW$I=X5s9Icw0_tt495wTqX$mxfM;xN z5wx|~C=du4vuVSyM2C&@o14wlE0%-|x~BNtQaN!M7~*hg5~GMWdN!2M6?^5f1e;8H z;j2)H5f~X{WUcJ%AcXX<{gQvBn~fxUTo&atd&F%MlVp7GI9DX|K2>yet>)K7rhtd@ zTc{I}lpJkS*H4?Ov$)?sFyfRaqNWjiJgu{!S@i?6GRebWM6dTBU^{;k82YhAH@QtM zH!fhVt^~ck_)IKB{!C3|2!}(rCtxA3%>h4tQdKao+UN11-``v7svMiw>aECbZYOa*9U*zZ!$~N8Phuo~9Hj9) zO0~~@>(N3{p1Z%=_lR$5z2nZ3 z?(QQKxenjH)u}9W&(t?cPuolvf%_u{{Vt__8NYZ7D$+VH)|a-HmYzE$N*jA!>s_4j z(j-hm?ediI_GZhwN7LwAJu+RM9>1aB;tBR{Tr4K1cEEZG$KGN0DqnpOad$tzhk1pE zGn5+jO;3}*Gjvi>u@n|||GK7|65;A{#Nk#kJP?C%&fo${#Uw^3&*Pz_JpNN%=R=78XzR;K?^rpk>8d|PxkrKgz*TBY=;k)Lqy4oS1`gC=)<9D;JBL;c( zg5S=r@p{#-RN~;Y=Aoiu-oYVIZONmzbIE&qB3Hg8GCnqz&ur{?dYZpjg&Oaikj2-i zJGl6~Ff5E-Av5Ci8tk;A;Mo7OV5$H;lN-`IR$-BZ1*b*EjyNr=rJ3TqE_(UFzFRo_Hv`SRh52m!6A7(RXkrpHDUSyFt`VkFUo-LXyx z3a)zqV(SAUvqrX=F{i=Zm8mm#vFok#v=kXh^dM2otQ1(dGmEGC5&i%Kf(7nU0rNyz}Q)OAon|x7$l?B?kl;o z(;HeGbm9*q9UihTK9d=v6={4@Q?nNCeCQ6jh>IH~A<2;VC778ROh8cSYhYRslYnn= zmJyttU8Guy5!zd`Phf&4LBf0f`;8q>gZ&s(_x}FkE(CK}ZwXfD&Oc?lyq(TJ-#1+s zth8iiUn1FzOZPn+kz1PCBz=qFdY2?VU#e8ouI{*rc0`T92so21>i0b_ zUhtnnnIOXlJnmJs(wm$U?dC)+TDAG|?SLV+0SMxzapUVI);(F?9<`F`AU%qO2(r*Z55wPhAw$|n+ln2Mr*>Y;789S$XpqlUOqm)FDYq0FRv3IN3Ze=*RvF^0iq%X7CO4e zn=>R|Ux~dvwTD}17DwS6-^nhqg<(>7KtRo4oEs5wJqntRsd-VTe&6uLIYx8yURtvI z?VZ(tOYg#XJK{7tF@kDOZ*S-hq#yA`-cp-|vB`{AUqnZ(DVGsvyqa=reocKn%HkGh z5joXXbXwY|KitVZjHY*P9D`w355Y1ZV!b68QPkFWoKXHVIKPJ4sBtRd9FVMnLENny zi5Xb7{@Sv*teP|DKW@Jy?&gIei5~Mg72G53*9RdssHg=8JEtmec?Zt;gOo*g%VAZ^`kd-wtF?TN{-pcVpZ^L1ibTeNN9-z=jGLqp@=6gY;&u3syN z^qIe9A_2^Ft^~|=y;Y<|BnpGByuB-Y*_?~QY@)wJwpD~0|0gkpt~!8jGm0dA(=_ozj~Ah zM_8bLIpCI8v_!}r$2z!td<_Sa&gOv6nBD$;NNp^4 z;b0FqM^tu;TI8QTjg%DW<3!?q_CcMBEuwR(1&(v&1lB+@_1Zb0ePH6yXs`musQ)q7 zp`}7!U~q6jetvQ8>qx56K{|fF4o3Pg)(8=>uVi;{y@Rv$Zt9;O*pwe#_NTk33JMED z0t4&psZ;lE&S)C#%vkhS3XP;jTf8Tloy-UclL*Gd+fOi3eIKt^|85$mK@U6-5%;yi z!ps-0ysyd_84o?&Z!ThSLUVKX{!}+$VD!*lp49>UR;7i7p&5bV@05n!(py$ZM8o#WsoLGRT)fT~ z>h^3+w`U6?b4zy0th74rh=MJ)Ps88E46Lr|*B|7*QSquz`kgQ``}g>`qC|6jS)@v! zK0PZdtFW+8#x&@P|9{B|{flf#q;V7gFzE$lii!}9=j%<8&y zzb`534*s0hx-1l`N#n3^uP>s=%Jz0AHKAf8<&ldnyC2N=wO0S&z=nZD51O9b2yR`y zv%Al4MG9WkyI{Id-WuD5anjj78+jYApUKT^&ms_ zyAGFA|4_FZL2e)DOtJin?;TB0PLAixq%tjZaV37_`6`^7gW|FVCAF_4Hvv`^e4l&Q z72un0M0EL>w?&hsZu9hkh1xd}$7js!%h;8sRlqrsX!4RWLxGL={dS^}TkMy=6_2%( zk9{?CRxJ3%#c;Yu?ITp^$4zi!sv#eX)Sz%#1YTPwEPcaQ5PQwHrx6u*jMpm|A1|lQ zJU0@@6d$Yx>F27zg_?9z{u(;*+V2ye=yo~oh6Mw$-j$X`CogKC%xDz4ViTokzs44o z&My|sx3e@cQBCNmN!FhuIcmIESs^CCqX=|%du<*k@b$3rn>IDeku)*|7p}JEe8pnQ zTmHYs$vrmkPItS+cQZ;1{n}pwqcI3bwXaNqB2jK2W+OcH5p>E{EKV}t`NrDzKO^Cn zt_-NDH7p~w@wTi=b*tShx!xHBuE;_hkB_n&E{OiGGG^ispX>R^3Jjk%Tj?J>(7NmC zZ?2|CBP9KdLU{TL$i;42C8s^n?8Nm@h^i?Z84F*!!kkybm?NqJ(_ZuYB3koL5UN6Y z{gK+DtM3VO>dq&ZE4(lZhPacRiQgVRO)5-_CG%Q-lAyOmW3f|=hxrV(pHvzqTjOk6Tt z2-FKn(SQHFvPL%fcC2f*;u*%n<4bURebJjk(tVbALGI7)2i$D zM*e7av~HCZDCr-E%Ys@=4i4Ng8`5QmwP3FV{Kwa8BIh95j5Luk(BP7MO2OX8bz`WOYHF6z)HBfuyc-8n;)35v||o7pjTk3b6C_L z7q$R2D44?BOpJfN@QkT+U>?Ek<%M*0X3 z?Sk7t(zY)rGSxtnN%ly5$CRpv)dcMmEqKkZa0h0!q7ogZcQ z>_pW}$Fcn#SIj{4CZ;n0QfRwvt#E#N(y{DllpWQR2AxUR=l#T=0^R(iDz$qbkB<=T zLSu&Xn+mRXvy@HFQRoAbTwOIt-r0Vo3%hnOiGZY07v#G3gj$hWn>R1jABvxm6HXEc z?>IfVs&`tg;^1`FSxbATtkK+EHs6j{ZWIJ=9o&slN9ULztKr)2wN+};>rG8!V?1fn z3TYYa@i~X&vbX$@UH(rlz$!5{?$e0JncGZj!M7t#T}9N!?~a@%ULPopURjz%G_;eb zB(v=|t4W#(`q=J_tNPZ4u)pCnn$YkPqzLrQOfZ|v)t-?j7vTy&*+x{f(-{u=Fd;$yy9uKJckrM~)-mBb|5?(B~f;IQOk+s2zi#!kOQ#5A~60mM2 z{-#$cgb@>Iv_)xXTasFQyk4rXXSXSd`ACMcQIVwiP=i?vnZl+7(?m-x5xUlNZO%YS z5jd`BM+Q!y=cqd7bG<6D!_ZNbS8w_m7(Hb5s8k6dJ9CF%nr)$~ zjC$6?ySnMv#K$=B0lVqaN1Cr!VoGbb|8* zvSzS?zo&~L0>s_5Rh*;lvD9`g{dg-2FxW~JkSwqKo}js(yIH~zKS}e+q9Bog|BI8( z1tX)4uAiTp3x)z=!4l@RgN-FFi%1lemv`TLJKeS|@MMYSYc1Q2OWlGeGN%uxO<8t- z*5-dPzn(>mT8hEhH{;wCcBO zeo${j*HC#meg!3kxZmGvDW8U?hLz*wxxQhEh?3b-{HoTCRF%TNy=U=6L=E`$V^?_# z+R4Uw(=AgB@)5F@n?`|jO>J|E{HCHOeQBx=Ye(6c-z9jgSFAlx3I)|k%?biZw7^Su zjtbg7qCf2aETtH)rrHINnV8Wa+G#%^aabLHULR(;99gXP-huXO5?Ajuc(lmPpZQY< z4rJ;Gy2C=f7iS+^bLwl-8ZVNH=Y>vq^fkG(dxuSAWM$r1y)P0n?0cV5IXCAfHIg!` zl)IuH2#sXiZM-I7CDCO8ma+j{e`>I6M39p=zB9NVxGy8?Yu&;8t{#t@JOBJgwX<)L|li<`Dm z!4SpISn5Vs%lI2&)m9tnuy}PvNqF>%C6Bn^n`~C3K4yLvQv0I(*VDhhZ-*25?msrC zrEGP@;iHel84wlRPfBIHEcn&k9J#zw7Fo9<@btWt;^{ghZY@394E}js9$9>?=}N}$ zlA*7|w!GHE)uX6jm&t7!-R`mIns_Bv=yyz}KWo4BYOea~Ue?ZMw%`4<&kO(6T2uRKUlJyS++q;QsmFl>_J zi2dtjz)7X)C#%evhQ{x&PWm}_xQ8}#U7d{TY%Bt=v!7&F?oZeFWFC{TC6s_OCDW4) z8SKx(=pVju{*sR+&6mgKXbpvG%IiB(7|`D;%|o#}79v8VjLwS!7~n)C&^X#aGU6v& zJEA?`CDW^)2u6!Fx~L$3HPJp!>6=7Iw>4QqDF`%fm^!Ng5TKlq{*(0cKO{wkjp!Lv zFPspsPYMa~Rogs2f=C=M&3P87swz{ChT!4hizNHMBP4vapuD)ew7!J4?jE?&F=G^$ z$yvbOLNBf5}{ASn9wwXd<-EVp)aV zDKt>8ky(y>jY)5*)=UvMVMKZBqucS}-@lVxDQnA0ksFH~RQa3zWG7Li%M+vJsEhTS z%ESE(6r;mLPeRMV_#I6qQpBlPgO%NuNW0v_e*zQ2NzCUwQ zs=hHi)FVov|1Jhw)VQX^!6is^B~t)Zm54PkdQPuaQO1)wMw;7}9~(R7b|b3x66$dC z&GwhY_U=S$VDt_oyt|7OlWZm9C`{u!H*cd(`|GE9GvB>En73e*0kZs5AeKj`N-k}U z$*?mL62lC$XD6r?0SQR=1xgP3eR63*sC<1|x&+nD?@Eh-5^$?i%(DbzZ-BrrIhI14t z01t41|GbYGIKLQPTJn8`)>itn7p_X;T};MDe5DKqDyoFJ3IXHB_W+5Cr_fCCpx)|9 zaa~?Im733OjGIGwm}iQgbf!{&XCZ39xK3Qu?|cxf-I!S-*b6uAn#A0jn5d@qq)xu( z01L-s4-Oaqm9xEV^Ag_o2npuBa=v9G_0#$Ds$&S+o>nCZTsP~;SVj^d<4tZ8Q3j_7 z;S0o-tqUtbt^6nnAc z0MfoO(s*cZJ6T6&O3&hGPNWs*mPk`UL$q|oXc#|ZWb|9+>0$-|2?nL_U7rz=U!s4H ze5}{Ie7Zy2z|MP9Cml{SfmmIi@vxEITisaVSMyb}z9Agpx%U5}4J)v4x@bs9z^Nwy zW!vtIEhotwtgIK(;$U@7IGBvPrZBvtR8C^zOO8`MA7*hXP$ZK>PGK_|fL*YeK_sU* zFP7a%udYa@b-&lwhc-9Iw8@)see++f$aw6FJozCmR_8o`n!6%3F@24wXMjM=w= zk$Qjsg=_h6+L$M5!siR!!=hbMfx^T5?CjxC0%Q}8@_O0r_-OG>b2B@O zxvg#I&IMgq+oNaH_-8w}>l|dFaaRwId~Q2xwQG}#NP~g-+G}m_``LAV$^QI;ZDxI6 zT6%hDEriB zU=L>zv$aV0DsCUHUjk{UKg@yh14JawP|N!g)sUC)j}Ref@GpBnlEvh-TAb z;o?$%e|r={Hs*6R-_so;R8`Gp()w$gm5uFw^@;lF;d=DP50wThKneg#ahqt-SfMIH z3@Y1ApTJKfy+k9Rj|jxM<&I9W1WXH!j$7*~9QweFEOoOhx4V&5nw~A^Ff`0074%L6 zh)cp;_7HuBL2Vk;pnHG+sQO=L$+4c$8qFsA&DruoYPnr2TiYI2UeNd#V2H8TYt!gA zWs{W0rEN|r(ll65E;Sr+E(U@8Uy&QteKI!Q2UeTAyH(g$5-%`60ELZP-_3BaPp(!O z?5}q}Ew|qV0&QmJ19+VXk`@hv-Tw5qO7QV1usXWzN?#@~ z0PK0tl>#*WZh%O>P_{fSVXj;|Bwu#*@wm12?b|{EVE{biOggStu#HtM)fpXG@P(>k z0SXCUP#AGe1Jm57-TgF{{yqnSXy;O2bTC?TNke|QsnE*f)vt1lfQC_rFf-@Z+JiAgjCZ4|_^IO1QEjBf^)f<*mR5T3{OuJbR z$(?X7^9V+-B@7MrhHX^?(C~aix!~d!sFPuhzkn;-rRJ4~S8GCInBP5HGBAGE03>!l zXm*g^%)sDs-VFEpu=zD%(r>`N(^msTT%rfYT$)vD&<-EIa(%ye1EOc|_mLY-!}MRVL;PX6}#gx~AxbTm!z=bIgCYwJ#6aAp&Y z8L6O@$7xU9LgUO+VZh*cb~(CeUlCfLf~^TPb@0>O>L&Q9gBUwz2+$^*D1WxKV6o8- z6CGW3^`1+{xsFO6SE`?1OpKt<#@WH)?EL)8%o4yAY_wagC}}R9dALhFT1;A8AgI;- zq2=!3(cIKjr5p6hd;&XPR7puqw*@abRjo!>y0qj%GjHW0d3<~v5MSzootmp&x%Bvu zRg1$4$WpUOEX>b;`Qk;9eenKNA;d`+J=x#izpjq6q4YC4)5l*bKoXU);-%aJ^8D@tRNq&F#g_Y{ z@jY)fxoylbtu`788U&<9mfZQPBkJ*|RTt_u{-usL%>+xM&aBGUlX>h7OmH83Fkkvb zR$(%1SumZ4`2wG@S`|Y}!8qdUIALR^>GM@^=)&Q!m=>D?T(HaA7GL;+)0(+AxNd54 zE6%4{;u_;oPH5j(vg+&!N5ez2^2M_*QsQfUW>d2Pq6YQ#beP2(GH~zKrv4pSuY>rIReBC~`69OyQ+`d0APB@3IWR#X(E%gX_v7Uw6Q} z!02NI1e+S9hzBnF;mv#!6pB1kLk5OL7rwafQt4=MP4ZuD$pnnRA1$}sWdU}_?=GX^ zjwQ|L1&08^TJYgijix_!k)UH)nRP3syOT3GD!BZ#`RJ+}xjiY< z2Lg$S4$qG^**(}Z^kgqxFy3!(N$m>_ zv&yZ1D^|NuR5M>d3MgBrnq4(ChM(Jin6Wduvzqt^N1=i!U$OH_8j)-WXG3j@0cYL19^jB_n-0rdwz%$9WE&nsF z$F!;#S$wC2&$;Tk|4mY`WMSGnYn@o*qvEnRow6DSobDClZ5McPZp^29Y<%3|n_XC0 zPM4*+9v16x%}!xsFPbtDPyY}AENi5wbA<&(V23yw_9v`p9sO|{TN%G(Pc_KH&&U4~ zY|s-%T2@h&!}RsOMKKmYWD7>r^OhD9tca&xOQ~?M7i6pTJ)8ZPYIf0ZS+Z?KY@(qY z=s4nsvl0X9Td@W;NJEYUH@DFru-esSbB35Y%!XpfdOSkH=m-{wb?c#)sT*ah+8F*~ z`EARliRo0}Y3oPl4O~&=jFcEplV%eAm7(0ogX7DxvK?nJR15!Xt0;xg2?rM4#%M{~ ztdEZK)jGjgq6;c^YX5h*Tx>9EX~j~{%v3!qEvu*w)}dGRaJmOVU}TvBw3HJ)V=$DY z-)-LhJVeBeJL15A+dR1OshgdYLcD1AcPi6VC&Ajh^YH*BaOPB;3;v-LGs_EvA8ni% ztliO){f9Bsy)=u?dyIaBmSaewMzUp%y^ilFYw&EeMWwg6o{HvnqTJhdLTb+&e_F2O z)K_J(B^D4XPHvVXq;zTX39Y_SlSE#3sbZJ)iPv$#R=IsoH#$8TAO+CFHmUwQp!YJA zS+1Gvc%x*s$K=ARS$^`)&Fib{D4RO*-jlk0hXrArq!5yER8$$v-pv?lmj0hOog8IQ zdr^Abn+@I^TG~^Y=o6P6k6IE~WW}@PXpjJ4N+ic=jbAKh>=;cMVn7D(#(bvaQ7Gzu zAz3xZiD?U82a_pR&+_~#x+0(^rrYBpOPTCx$}1tJ@50krIiMls$Z^{!&((TD$fN0%o%!jT6$zuN*u#1FpGC?TU)dA?bVU%ftS=s3z4-V~n*EoANqng!~0 z2hA9AE?hi?MU~y`Z;!){UE3tprHoKQ91Qy>29Xj+R@`sbFP84Rx@u$ud<4RF&lVtK+>-Q*9+IWr)3*(VCZaC}amsso zdKM~Vs0eBUCk!Y)p{(ulP&#W4$6}B$db!{)VPfELIGxD`oH(y8FIBF;sPy(2<7L^k zIPI`CpjxoUNavky{4{?Sg0Bm zRPrsN80YOhIc07%7Es8OWKz|K|meR?Pn{tV?H zKRbgsI?DVhM@nU4sk|J^c%PcMYMzHd(zV47nk6?vrg$&-I1gy^#bPE3q=eV(!Vt3@ zn>|048A+YDe*iB(m6H?2&i?8T6N*1jrWuG;V+P?81e+?Kx&z^36IE`xLi&%QWsO+K z4hf%YQoAFF2c1~#)vF=V``MG=MayjZnuux!c zET{>MSPbJWa?IfVedmY4QKnCFBZm2;=Aj&BzYd&XhD5Q6iG;){Lu#KuI(^WH7@0kx z$0ofytIBlYPOvL_(r_Il6c>Aj+o%L3$lLFUuWTBj(?JK441681dOylVcEyYelH*;&=g1N|ASk zB?2111x8igmzKP|$>}<##UOvnfklQ5enfxWfn<81Ewt`6t&}l$hjKKaLjdA%xrBfKc2ViOD*#9O)-Vi81raMtWU@7p<#O1QB4ncg($CLj(9te0 zp}Yc3KbhArJorh2E{H$?(pZx16mbmP0BU@{60#S_7#Q%fOZFqb@UGKE{O5+RFP-hp z0Z~qL2q5|J-^RPq{YWUWPN{H!`W}E1t^D%Z$T>>5Gj0%Qt`p$t;G?M(cs;-V2QG#|e7nAy#{~q{t+=L`ZFd0-P z)`t}!lH?Nq`3LZh5qNiQC@fb8fMD=&w_o9_fB`N&nms%~lo0?Z_xx#5X4d2WF2 ziVZDyfw!f#6$uEsT{A5ulxPP?=n~o8dx>3aOpYl3p_VBQDmJNE`8NyQ3r*$4 zHV|wMZc;@?FR1eP$Ja|~jXqo^c4~;UWiR|UoIe=-A80ko)A2tC1?mkK`ugo`d0lDf zsE+rA7>?{1(`v51U{CETk81()d|+5u9k^k3#_!5O8koLZS zuEXat;$goiVS|ZIR2m62is`PVtMA4A4u|R6sZ(Xo@&@+wLYSBGxY<>bkJblN5J}IZ zM+6V_l294R+1Ac<(X1^=->?@bK*jZL@8fgh znQTT#UpzXnHP`Kj!NR7C3tQGmKg=ffVU&vXoF^q@>Mc#Up6$h| zx5;#*E=Yu2QyVx|_#6oKjFs8&$rhp{Qr_xvSZi$FRvsF@liWytfS523#O3(u2+&< zqWcqpJ58==XyN-;`^9uT?>w^xx(wuhBm*JPZjZOsonl2I_*^x{g36gPZES8%oy4o0 zLgr9Dl=(#djESXRFZ?Qm%B(EN-}H>W#6@9DZ(|Gr@$0cao;e(5pd?$>UY zEvknnE4HVJM8LBM9%uQJ38BKFO-qC4%r^aX^$=TcQJ@@)<4YxDd|SQO|4(8GI|0Z2UiiM6y#6G#2L~bN^f5#h9Q-=@T1oYH9JCGVs*> zoZW*Uv7rJiRN4|R{x6eaMqNUrreA8-yNR#n_FeOTkFRnSxilc*0iRmgGI7HK;45Fi z^xQJJ7h_g;pVcfqWpwtid*$>6)w84Z!rNMFWS!Szwb`zPjv`R)^6My~g?TUCt9kgP z?y5xjYhDsgQ!||Lx|0Vb4twyoIFrr*6e+HjteW)IRd{?(TrA=bv4NUuel4@le@}c z2gSYSbvsY^WSVC)qd6DLNA8goL5VmRQ(NtyXvj3!y*BnjAWj#ksKfNoODL@s9{+rT;oFwHsQBG8n>rP>*tJVEa&GPXs*!J8ZF#vV;q@8K%cYhK9=9%_T^YCeF03 z=_Ri1aIMVuHQ9LG#e};C5l*6AoO421#^=BRtJ_=hhrM*o_%{EQa_weaUw%Y%N<(${$o*G5DcD`^po8;3g;0!$09i54;N ze7u-KOo@6iXPL{+@YOx_ahIatjtUc3X(Ss5`gQC3xbU~MQsH>PWowk1 zBAM^N0YOBTZE^8y0@yT`}taUAYV2U9yuy4KS~8urahm+w=6+TVd2DanVEj4 zUyD@eDFZ*_h5ocXYTX@wrI7K@ITb6l;OT)o{s=g)1E0L;#xyJSW0IlWTm?q~#Pt5C z)i}S%uSDm&O0L${h>Q4e_Sie@)Vwg*MD9AyrkMmR z-PQr6C`|-6K~y$fdY2LbK@jP^6Oj&5HVC1Grc|X#?;s^2y@ry|dy&wj1&}HrReBS+ z6V5*8x#jG8@A+|m-29vQ%9=IvP3B$Sde=)s0*3AP?i=9k>*X*j zWL6JpZie6PQIdKIRabZ3#Nw(k=C~X!zl@t?-X>lv6$mmCKrIdBY%DFU1lE7uQTl!E z&Ece=XGi(KZ?L zT(K9Zc`=#?DG2r76Az3O02ROIq}9@3FsQOw0xEv6*pyulod$CtN;o~0k?G!B=@1iR zDf*4Lz&7^BJqgPfB$^9Vn7;Nl?5t$H)`;4#=zrlg~VUrCs{10Rm7Q zVv~{%mJ}kR2EK@VbFx4S+2oVZm=ze^sJ0uoY71TjA_cXK$Ib2SPcA;@GpcaC>_fb=AgJNsz1*eN!Cu^lBv2ocp+$(YV8_5z7Ua*p@DQc}fa z*?zLqBLQ$Il8V@aZ03^4U$?m<+;f*XB>SNSDGdO!UAKu|Qql+lProiALg89`iw`WUcG?lDO&H>%yhmEL8zQ zfsGzvGb6bbt|u{2EL#>9KpPO;caQNFAZ7td6;0x|sr|wr!vGALXfMVMDrxZ~1)*!> zaSg&iePT0@(Xz-4bN zsN;GO%>&lZqH(xMrLW?V5CKB6L^0wfoB{Hyp&y3Ks&JN>Z~eT%VADw2{9B0y&hywO%}jwGPXs_l zwK2F$Q2Ep0bezLHtvH9TBQJp$AD|bt>axE&nDygNNFem}^|hzT7WfDMC|ik6HY+!m zQRex}xgEDn*I(4SEM3?9*Z7gZ{&@v767|y~*t?N(O6PM-X({iBnSE&>RwK@TKxDr4 z1f>{B1d6BnDy2_L?!9jVd7rH<%xPj`LP0^H(@&^y?6|78>Fh@Tue=f?H#@^-tL)I-XC=%iSp3r*M6`8UP84nJsrNzO!5_ z3^w}rDZ6Udu~KYtM3XEO(m<<&XTwd_5B|%fnTwlYJ%3%EuJY9JaX)w07Biw9dTxz4 zkFeAld%+=d2GO}idb%(+az($7Yj9+Bglh@lX!)5hOvcrubGkmwA9-1iLK=?yy^2rW zyp#&?2On|!(iH}A9gf4~&o=98+=B_^h#6+m39%Lw;4{0qgdQbGwJ+EEKmIxaHon%e z`ru7;9fFb}P&;K!>-3YZuI_0;ic99C$)WAC-Du5-k>(x$YTHwy>i<==pwj$5L<=bC zgV~DqSZRcylyl{0+x=20`?iCLrs=7@y9Nn1D?0}zs=8KV0n3;7c>zHP))j2c*3*qI z*y>8xl(GwD!Ws2^m~NSBy0;QtCD9u{V`ZM=)7yRPr#&6HP@PQSgS^rgJAV~x)CtLQ zZftcX0yKWq#=7aF&5!`jX9rdGv$oyYO|2zo9^`BGR`#QQ%UeY8NSdtUpC2nr9QVN3 z{^{=S*7@Qn3Mnt!91&O^r{n~+gg(3@ULppsN_UeydDr(M!W|p_f68lruSMc8eMlpu zE%UTbfUaU%s+^D4@zNMRg`nY}efCdsRJHSosi-qOK2jzPZMJ{HQ||~fqgFAgT=;Ji zVRW-3vas`Cbm>vK!fx)!lm>O=zMeh8Sjs)Xt!*q#fgKYD;VVro+nm#})_lKbb~J$8 zu4S&R7$dzy|3E|+CI~KDkOj6!zYI~Fxf*(99V(@uM(#YYze!(Y5I8LVTIq-hWS5f0 ze>wZDL0(Sd&>7@+h@a5SO({nic)gUx>@~SnIu*y5odSDRkKEp7ZXO-SD!T+PM?*%A zb~fy$FuES`X#?L&c7%^#nTPVGCmul^l{3|}KWwt^@iu*!v4xevi0R9tvlF{})`uq& zf)r<#E3{T3$~%+B9}#hyy+S6+r_0Luk(vc3u;RplW$!kxg8r!F`TOyc1;pj)$jy{U zO-13!^*lmvU4)4JM^z(^o}G|==l*oG#8q@=8Qs5$MT;)U_mmrUj&uX(c(<-ApPc3KcV}eL&L~HcMrZ| zWQWK)mL0Knn#O(M*5J<1cb;2QN&cuh9;%Wg8FK~{qf4(hmd2k?t}Y9=@P#qG-iM-I zH|7BZIiWETw95W!+Dx>UN1e#HFkj$vRu500KqfH1uvnbt2P^-y(Ejte#+1|3XC*`> zN^Hum+;zrZ*BRfG{4Qy;g_i$A15@43vq|+!J3iz8|4}|zn75y?EN4nx4WSu4!H**o^hw76b`x@ z6%A2ES{BC7l~g@^uo5**tJ{0IM&)FW#waIdr2lkFs)#b{%LN%^AbwP5`J#+nfVH8= z3e3>n%lk`s_u%xttq9#+#o=msKe@!9fvpoh7-ti)!QNJP;GX3HGAOU6@0SVIC!Qg2 zm2;TllOFh6J1P;O_N}d~*IrC~S!JoP0T)EDR*eR+OOVzEd*=hKpE5~fV({NC2M(9&!rWk3zFo|^$%DI8b=rs6hmL=zz!FEXzy=2Y)UvPH_pal#3%Ii z4sBY$Mw9Zn9@INo^?H*wXk~}K5bf`942&Ij*}lhta&d21JDnFM`BXbGg;pjrhA#yd z3?LkI${)X)7ovfrc0FDxnU2k~c(~c1vb}krB4$#QBGqP|+fTgGWliAoJMSw?WxGPS zfeHMT`5ZG_s{CeWKWSv2jhXUfI#N}oqlbcN`NS)-svLHh)?ksdfO?NMIl@2-hjr14 z=?N^z{iL34KVI{0Q2z8^(@oz)fNF9n^MrG9!|zZDvK=n>Oo%#+w-K|OFtzc0%;^wg8}vd!!Mt=}+A zq=o@&yHX%f(jA;4<sa?w2& z0?Ep&93DcizOMHroPQpDL<}YNXIVRNzYrD{HZU;2*S+>BRnR)JuyFlaW2iBY-@^`4 z!}xdyv>WsWF&OPpjvhq*T+a$8@()oBWb5*$okAT2Py#XSH7iceLV%+92uEiY^V*LY{0`D*v>;6?j*Ii=7% zuN>YwUYT+?m`{zJorWc5Yrc5ohgv$SNYnN@*NtX;2J>c8Boda3fR6k~%HTvAo+k^A z2XX+}I$TS-q>o%4+CA8WnNdN(qlC2CU#8QaR#6qRe)gQXA>(4V?;s(;O}7UbnmEjIP6@wEAFwTwpHJW=aYhvb4rXOJmux-&=?efJq?&i}P_`aW zO9J=dg-PkX!M7kTaK^hER*oAJF!)i4e*J{}stkyWQnKqW9^?Ou)3R}zS$3cn3v27H zt}YTNLDR*tc@_H1fhdGLi)22!smV`UJ8n=1RMxx#4%3A~)8pcpUGMx#;m`S2e~p!m zjST`ZTIB#uC8e1HET@mS+9}Q^ewwawaC-bZnAPJ^5TV|!G52+orIsy5#ngz z;(TuOIcrn>*7u&65Ot>J5B~5(Q@%kO-wWy8*c*w5ys+DpGTn<>Rw$w4FPD!kr@{)m z$ba$5q@*p;OXOVYqX!LSiD|#@uT__>yR5LBSG#<}UnhcF{@5SvAE8%_06oQ*?0VuS zq{DVewIq1K-{m|)^Q=edtNZvYyK14STU+ z9<6Yx#H}Bs-~`|D>b~j<>m!v->Spz4EpJ&^Sr0`BtAdn1lZ(;inm(k|Yghj3B_qQ!whK}Yl7Iia!eAJGm z{Vw78{iyCcY?L5mHf;^L^)?vp9&#%vMYF)NFxK|@rPGis#15`@nW)#{9lZ-LMy>mo z*$-fO)_b?yRJOGJ-Ui@)XS3u_h`YgIV}6}B75@rK#FQ2*3GEsypwni7b(g4+RPe@v%*vDsEIJ*%|SCPj$D&{+NabhOiW&*ux2 z_p@LHZt$nBYBHMiBbcHK@y@ghTi_Dyc>9W+_u$5~o|egMw^J2k zI^Pg->9s~F=Tp?%&0@-}1e_qG2iV<##7p>u&c%O*Flo9Cg1~iy204ve<7{{5InAQe_KR8NuOr zIqj+#a^#&+FQ9HlJ2|<`*{|gNEyf4J*zz^2I!syo-|-hQWmt#1`#qZ4Bi_!RXwsab z`j{F)C$KzcOivh%0sVV5+to(r!ki~N4u)X?=!Q@=fq!bS<#!s&-i_I^J!1o?EeK4g=(XUn$CX>?HXt&C&EM^DzzMiYW zv3=n;NNCKYzAHI82Y4(ebjqSJ_55mC_Qm4y79Dn!Y>Ckah&S_F`;20}B@I=~>o5I|~LZ3Z#Iw+^mbWw48U_LOmNZ zm>lfWC9HWTKi8HB4D;gF=HaXHcGZJxd;EM!^N?Pylq)0yzVpJ7r+jE(P`T5Q;*d5eOkXtwScN~JbJ@@81 s5fKR#9|ZZ84gjK`1bhGd8*xFgf{!}14TXOMz8D|{IaS#bnU`<>4Izt`<^TWy literal 0 HcmV?d00001 diff --git a/html/classcore_1_1TCPServer-members.html b/html/classcore_1_1TCPServer-members.html new file mode 100644 index 0000000..9452d81 --- /dev/null +++ b/html/classcore_1_1TCPServer-members.html @@ -0,0 +1,125 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::TCPServer Member List
+
+
+ +

This is the complete list of members for core::TCPServer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
active (defined in core::Socket)core::Socket
blackListcore::TCPServer
bufferSize (defined in core::Socket)core::Socket
check(std::string request)core::Commandvirtual
commandscore::TCPServer
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getDescriptor()core::Socket
getName() (defined in core::Command)core::Command
getSocketAccept(EPoll &epoll)core::TCPServervirtual
ipAddress (defined in core::TCPSocket)core::TCPSocket
name (defined in core::Object)core::Object
needsToWrite() (defined in core::Socket)core::Socket
onDataReceived(std::string data) overridecore::TCPServerprotectedvirtual
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
onRegister()core::Socketvirtual
onRegistered() (defined in core::Socket)core::Socketvirtual
onUnregister()core::Socketvirtual
output(TCPSession *session)core::TCPServer
core::TCPSocket::output(std::stringstream &out)core::TCPSocketvirtual
core::Command::output(Session *session)core::Commandvirtual
processCommand(std::string command, TCPSession *session, std::stringstream &data) overridecore::TCPServerprotectedvirtual
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
removeFromSessionList(TCPSession *session) (defined in core::TCPServer)core::TCPServer
sessionErrorHandler(std::string errorString, std::stringstream &out) (defined in core::TCPServer)core::TCPServervirtual
sessionscore::TCPServer
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
setName(std::string name)core::Command
shutdown(std::string text="unknown")core::Socket
shutDown (defined in core::Socket)core::Socketprotected
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
tag (defined in core::Object)core::Object
TCPServer(EPoll &ePoll, IPAddress address, std::string text="")core::TCPServer
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
TCPSocket(EPoll &ePoll, std::string text) (defined in core::TCPSocket)core::TCPSocket
whiteListcore::TCPServer
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket() (defined in core::Socket)core::Socket
~TCPServer()core::TCPServer
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
+ + + + diff --git a/html/classcore_1_1TCPServer.html b/html/classcore_1_1TCPServer.html new file mode 100644 index 0000000..9417626 --- /dev/null +++ b/html/classcore_1_1TCPServer.html @@ -0,0 +1,500 @@ + + + + + + + +My Project: core::TCPServer Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

#include <TCPServer.h>

+
+Inheritance diagram for core::TCPServer:
+
+
Inheritance graph
+ + + + + + + + +
[legend]
+
+Collaboration diagram for core::TCPServer:
+
+
Collaboration graph
+ + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 TCPServer (EPoll &ePoll, IPAddress address, std::string text="")
 
 ~TCPServer ()
 
+void removeFromSessionList (TCPSession *session)
 
+virtual void sessionErrorHandler (std::string errorString, std::stringstream &out)
 
virtual TCPSessiongetSocketAccept (EPoll &epoll)
 
+void output (TCPSession *session)
 Output the consoles array to the console.
 
- Public Member Functions inherited from core::TCPSocket
TCPSocket (EPoll &ePoll)
 
TCPSocket (EPoll &ePoll, std::string text)
 
+void connect (IPAddress &address)
 
virtual void output (std::stringstream &out)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
Socket (EPoll &ePoll, std::string text)
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 
+int getDescriptor ()
 Get the descriptor for the socket.
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegister ()
 Called when the socket has finished registering with the epoll processing. More...
 
+virtual void onRegistered ()
 
virtual void onUnregister ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+bool needsToWrite ()
 
- Public Member Functions inherited from core::Command
virtual bool check (std::string request)
 
virtual void output (Session *session)
 
void setName (std::string name)
 
+std::string getName ()
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

IPAddressListblackList
 
IPAddressListwhiteList
 
std::vector< TCPSession * > sessions
 
CommandList commands
 
- Public Attributes inherited from core::TCPSocket
+IPAddress ipAddress
 
- Public Attributes inherited from core::Socket
+class {
bufferSize
 
+bool active = false
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+ + + + + + + + + + + + +

+Protected Member Functions

void onDataReceived (std::string data) override
 
int processCommand (std::string command, TCPSession *session, std::stringstream &data) override
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
+virtual void onDataReceived (char *buffer, int len)
 
virtual void receiveData (char *buffer, int bufferLength)
 
+ + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from core::Socket
+EPollePoll
 
+bool shutDown = false
 
+

Detailed Description

+

TCPServer

+

Manage a socket connection as a TCP server type. Connections to the socket are processed through the accept functionality.

+

A list of connections is maintained in a vector object.

+

This object extends the BMACommand object as well so it can be added to a Console object and process commands to display status information.

+

Constructor & Destructor Documentation

+ +

◆ TCPServer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
core::TCPServer::TCPServer (EPollePoll,
IPAddress address,
std::string text = "" 
)
+
+

The constructor for the BMATCPSocket object.

+
Parameters
+ + + + + +
ePollthe EPoll instance that manages the socket.
urlthe IP address for the socket to receive connection requests.
portthe port number that the socket will listen on.
commandNamethe name of the command used to invoke the status display for this object.
+
+
+
Returns
the instance of the BMATCPServerSocket.
+ +
+
+ +

◆ ~TCPServer()

+ +
+
+ + + + + + + +
core::TCPServer::~TCPServer ()
+
+

The destructor for this object.

+ +
+
+

Member Function Documentation

+ +

◆ getSocketAccept()

+ +
+
+ + + + + +
+ + + + + + + + +
TCPSession * core::TCPServer::getSocketAccept (EPollepoll)
+
+virtual
+
+

getSocketAccept is designed to allow a polymorphic extension of this object to return a type of object that extends the definition of the server socket. Returning the appropriate session object that extends from Session provides the mechanism where the server can select the protocol dialog for the desired service.

+ +

Reimplemented in core::ConsoleServer.

+ +
+
+ +

◆ onDataReceived()

+ +
+
+ + + + + +
+ + + + + + + + +
void core::TCPServer::onDataReceived (std::string data)
+
+overrideprotectedvirtual
+
+

Override the virtual dataReceived since for the server these are requests to accept the new connection socket. No data is to be read or written when this method is called. It is the response to the fact that a new connection is coming into the system

+
Parameters
+ + + +
datathe pointer to the buffer containing the received data.
lengththe length of the associated data buffer.
+
+
+ +

Reimplemented from core::Socket.

+ +
+
+ +

◆ processCommand()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
int core::TCPServer::processCommand (std::string command,
TCPSessionsession,
std::stringstream & data 
)
+
+overrideprotectedvirtual
+
+

This method is called when the Command associated with this object is requested because a user has typed in the associated command name on a command entry line.

+
Parameters
+ + +
thesession object to write the output to.
+
+
+ +

Reimplemented from core::Command.

+ +
+
+

Member Data Documentation

+ +

◆ blackList

+ +
+
+ + + + +
IPAddressList* core::TCPServer::blackList
+
+

If not NULL the blacklist object can be assigned to this server socket and the server IP addresses connecting to the server attempting to accept a socket are contained in this list then the connection is rejected and no accept is granted.

+ +
+
+ +

◆ commands

+ +
+
+ + + + +
CommandList core::TCPServer::commands
+
+

The commands object is a CommandList and is used to store Command objects to be parsed and run as data comes into the session.

+ +
+
+ +

◆ sessions

+ +
+
+ + + + +
std::vector<TCPSession *> core::TCPServer::sessions
+
+

The list of sessions that are currently open and being maintained by this object.

+ +
+
+ +

◆ whiteList

+ +
+
+ + + + +
IPAddressList* core::TCPServer::whiteList
+
+

If not NULL the blacklist object can be assigned to this server socket and the server IP addresses connecting to the server attempting to accept a socket are contained in this list then the connection is rejected and no accept is granted.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1TCPServer__coll__graph.map b/html/classcore_1_1TCPServer__coll__graph.map new file mode 100644 index 0000000..1207a40 --- /dev/null +++ b/html/classcore_1_1TCPServer__coll__graph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/html/classcore_1_1TCPServer__coll__graph.md5 b/html/classcore_1_1TCPServer__coll__graph.md5 new file mode 100644 index 0000000..f30d23c --- /dev/null +++ b/html/classcore_1_1TCPServer__coll__graph.md5 @@ -0,0 +1 @@ +3feaddc5f29c199ea67975f439e6fce2 \ No newline at end of file diff --git a/html/classcore_1_1TCPServer__coll__graph.png b/html/classcore_1_1TCPServer__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ea36462497a20571916cdd126d1cd35130edfa27 GIT binary patch literal 39679 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1TCPServer__inherit__graph.map b/html/classcore_1_1TCPServer__inherit__graph.map new file mode 100644 index 0000000..0027ae9 --- /dev/null +++ b/html/classcore_1_1TCPServer__inherit__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/html/classcore_1_1TCPServer__inherit__graph.md5 b/html/classcore_1_1TCPServer__inherit__graph.md5 new file mode 100644 index 0000000..5cf1c96 --- /dev/null +++ b/html/classcore_1_1TCPServer__inherit__graph.md5 @@ -0,0 +1 @@ +544c4cb05809c71627f2430f64a4f540 \ No newline at end of file diff --git a/html/classcore_1_1TCPServer__inherit__graph.png b/html/classcore_1_1TCPServer__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5f8246b119bf2d31f403f3adabafcaf6e2c526be GIT binary patch literal 18051 zcmch5L4v!xyTfhXnYm}a`DV^N z_n)%}D{FNZT~%GSpS}0f5sDwBk>K&+K_C#)dl?BO5C{wv`27wG4O~I=8AAsCgEo|t zmH@rJ{baWleF1?;LGL9*Rov5$mfch^%@(20tPtMGU`e2gQU&Hxe_}x6bS0xsF2-z` zc!!TbXUQR%*WXI57swgN88K0e**BM{-uXlHh@39cKax~7UuJpv@iB;;)P=UTWvRnS zV8FmEtIaI6E!ATu4G#?s4cAB>&M*f-Ke~h&8MQz450410k?bbOAe#0AoimtANLg9g zIMvkq*x1;!iwpE-#F#!XB{^^ih>3bDH4d8vl|7|{=qMa!c%8uhO;CxX)9z@<_wV1w zO{VZ#XVoqnQG!_uIsWCrF%ZE?jQrSsKHOj*Ggbmi3@GZ3wt~;;U&O3kR}M7-?Acw# z^;O|c84o!N(Rf7E_y6>q1zmdGU6B|yGOR{S8ql0S)}XPxn4vfGy!uyNIj%6f_zzg3 z@ThES>&<}4+w$VU@C2)%XZ4#D#BZKJD?Ame`?C+U=~rgl8Z9>Lab?q#!?ecD3-#E0 zs^Wc+u^xZL_)a&I5c3s>c96+WiW;;6@kw&Nn&;_SvF@iOtkJNm{mq56v1!gM`$^Z> zFrLkK+^)eIBB8U3fi}b~BDO}uNj7JC|s%8ZRL z+>oN}+bZTWyrqu&BNz9r$%X;5sAbd+ZdjBpP<+f|i)nU>4h1f^ZA?46+r~{9`T}!B z@}FexLsS7xk2U>YqV9DU#c3|TOM@XKpd`!jLedOk)m`Wa)oy%acLr#TzPj;jf&8tt zHF(i=XIpw6w{(^S_hU|GcMZ2t)SO;r&BE3OkV;ak?or%%K|j^v`gao`)}3yMPeRIj z7jeuC?-DNuK_Cknc`ae2jEh@w1cl*Td+r9L6{m69YAK>HCUXogoZD?s4YJYnDfQjc zm{p^LHx-}Wb@$+@Sc1kDQH_!%Zw!3_qg|WmoVOc0Gy!7&PRn;IQ4Eo7KbQ*Lj$8M%EkR8OZuwa2 zHA^@(%;Qg7J{CIVt@S|&|_L2~zPak)5W%{QTB{-~NlK(7u9Itrl#3feU@>)hR61doaq4jZ|JyM%Zds@&!n89!$*XOD5Du@e=( zA(%Svw$?I25~CBEQvm6IM0O(C_Jd~kMMvVhMtAGk%x6tTwFV>WO}6Be5@2;=aoE;@ zYhk-nP|^{z=Cqs@>>5G}+xdHfvZtYpq`?<={NnO%v(`1XK9#5c#Nx1I;IqQAk|{&z zZ=x}XDMI-uO+|Wgv#P#-65eHHD+&g>Fo!%vlyZJ?`#D$#Sz%T&;63r0v+Cb8cQM-$ z-bfMjv^6!hgVq(0pbsPeSr}BOLlm)SY^>_&T=hGd|L<^ zo@O0c5wF*tEnm`-Uc7JIQ=8+W<@k80r~Fkxm9gZBRo^c2{<8+Fv-`dJ!R~mV{8jW| z>G30n<$RVibH$mLP$7w%yOLdtl<`y}=XDl=$Su39d1amEFHKzyo@aq#D7^1JO6x8e zagQRFnc?B5zjO&C$kCpjo(^WVpWgPc+c2$GVeMc1#-(8QDVH#ikW(*VvuNJ1J(l6% zB?$@cbTb>+kCefk~Vu6$&n)`sxOjM)%y}^9Z-lkb%I+sO;|Lr&DrE zO(_5g+S_;O`ngJs>a8LBII#YymPh2ESh?uL@NBK#{hS;LG~Q5QQm|rYy#!iVXp-)1 zZ|}N$dF+|irBL=EBz1|;(tFn*yBs|-Lii37GC?Mo%jTO(GZ8zx4+w--<@@a5{dgR3 zz?4+NgB;Hn9DX*b;Ae2Mv>ZPS2QO)Ro066WhKMNJ?qZv`{tAf1FO#gkPpaBY z=*m^I2?}&cYsWw7XI~R4-(yh7P#O+ySDxyml8}R{+|N-9tV|CAAS8PF`rG|mT9`8h z?kfjz1ob|~BHApxBO#@#A0kt7v-dZzDpNCJbv>fa&o@rGlZ0`6Wcs=<0tG^dN`#>N zse_!*?EfgjF_l2U&0;;r2NV)xN=f0%ijBoCuOOhi#{2LMH|gHfHau8=TUMyAtb|8| zrs9v+T?ue5^e>k|lMWNv5EYF=mr-yyxcqUh>vOr}wx zq4`p|D!8dX9Kb;YJ+QEhcZ~^WbzbfJ=$jX7eUR%?LDL(pTz`4Gq%$3v3lI<6$@Y1i zeJ0}NbtL3jS(V7WQy7|QFL7||NF4|xuo3#TI-Y=8P19hR#cj9}T=oh+X(HICOn z6N;-oZh!TQt)NJsQ~vu5Oi4-FT-&2wm!&>u6odrCa_c>AK!AaIjqy8Y=U}fN#(7c? zxSR)q)^qmYyu1Y{MP>(Y#kR8=hy?C*a^$+A@t)&TQzP5FdV-lkra{Q4NSC`=Y7YB< z#2NHns%4kp+JQ+OjXME%I71XBuX>TxBJbniZypb7P%k5XWuCvkLbG45Bp|je(P(Sc1E3HHT8I`lJw8&n$1Mqg)V7vpjmi}26aH}~gBUZ0#0fQj=~F&IoZzETR% z9|u?4u$hYA)xLtKA;s*#Q@;AuA7_hp>)Dhs0J|74?we~}R=^gF*-ThS3Ea=K1!`e) zxA)?(G7Ze~6C!h_m48o2YAHdau$U}Kj%Kto;yc&EjTlEv1*e0o3=UNEX%?smk2M!# z;rihH+ZtQ^nbi}8V7?lBA)Jo>PO z6%~yyV=^)Y)Z^1OVP7$)iPg7vcVW1>f8twst#^ac`CM?!#(d#QzP^r@(3Olssr04u zI<4*Py>rInG;bb<`ub~mxlL*@i#3ng^|U=aJA2sP2f_kLJBG8K=tw_uk?fHTcosK-#E*Jb92!hwg!=a{uiu)4Cu;CEKrQyC+?M4+q&Vc;$_DO!pRhgL=C&sfMIFcHYQX&UvscG4<#0~uC^rt z8a8e3Kb3qGHRsg}ed(JCvHP=Pd~gc9L1($ja8Zmy5Ix+_36d6`mRTvDu~%9xv1k{R zE=Uj|mqPsZ^7CyWWn3AM{RAW=5^4LSWz@8>p7(JKSd0y&M)lGv5vfqJ>$X_yrNB z;?0~djiTjzvJ^-nQD7{ zQRb(mYmslu^QlL>S$WRn`lG%}J+h zupvxqYBHwmd1?&D+UWhze}j z`MEE5Xt)h^X-b?StJ-k6=j{rGpq4*5NieV%_Zh+B=y4{$%t{*L$xudDm9Zhu-1(3# znT*|E8|m>+bd%0tl`hQ#Q^(4M<;TyJATn}C*PB9GW#5YHF%zoECvjX!flNxxo(7MX zVxPYSP<{k5Ad!UdU`nex>vK<)j=y54zRfgn|9oC+EgATQ$S9{Ux@$V zGHbgQCfDl~j_wu-)#n0JEDk4A;kQHH?c_|n>2tsiO!yq8sgy&wFXh-H7}$c>jv$Lpq{+)pk#b;_NuBMZK?9+KT+;RxBAP&Wy2gKB{m(P)m{^HZA!_^DB zK$Jja(q%)SRE(rq1^R-cLN~qwNqVfT$kK5~^`B+5pxLEBaM0ES>%Yfm6QJGozfH zr%vrXAy@EI@|E#7vOb{^QGMj{St~fAqH1SnWWryy?7N9YX;G4Rp~u4W{XIsfX1e{a zkH7aN?SmQqizI0IeWeJa38VP=n1@TOke!(bQHpNP zNR4H3$mCd%W_$E)e7v-O}s}q4x-QGf8A1dtLseIwCGcdvMd_G z)1n|M4i3&=BpchWq{Q5q$J>}}3zR=j4h{iHNlD`-n5lgA+)B#q)n2z9KqW=R$1*A| zXM3N}(=+_Khg0zGZWaxI7B*jJA1&MfF#3E<_^17P_w4we#ILW=swS2#Fu4bR{?xFT zj!@?pn23_2iPLQ(H5dL)oj{3*C;?!IJV5UuBFE!rE20WLTJswkW{Oh}x9x{EaKXrY zu=>*r3!H-8%`O87GyG*5gruDMeUT8ba7{t!=}R%G;n@WRGtbkOJ(IP<#KIrDbHrzZ znF>Cxfl5q$eRJmO_AxOdXLaNxdc8>N^F5rD5%H(q4ng`0etpg$hG&wi45a6b~Dh)szT>P-p^nr$xR1;l`qn9iDyGJT9>v2cRPpPs@XSl^JzUpB}A$f z4`C#~bb5G1N<}p_vHN3x3vQC9q%3(9Rs8lLtsfd5##>)^;Bh(lFbg9Hwnn{0cJ>yo8OwEsQMP~35|Vz_H!uj^9Kc!I z8VWf(+e0!k(g~OFS9#d6+@5UgP8IY5eavW%vYIsvVUnacuVGO`ury+N=knbbEJL8A^16nerDN z_cQ$5+&hQV=?IAYZ-heLMEm<1cXviGZ%7AMpi%G}C;MBhhT4o7(+#Hd;pv$5HZ|`K zJ{g~w=x6RY+hi$=gvf{gh5y*4k^+R})E_)a78^38WMxCgw~IM}DYaHjazKBJCrEC+ z>icm|X$l`k2J37N<=RAFkpzRR3bd~Pm(;B8sY zp^n7$r~vT;y8BU>X&L}+H#T0x6~|3-|8(12LR5*W0< zDzus`gnPKP3*xkjh1ZE(02cjQ>+Vg*i2do+4DD~M^T!K{p^)R@fu6er1&Om??HNS5 z90Icks|!p?RNyA>xC~y;m zM6d(0vckA~xY%To1LiU`@naVyI;+rQIm*+M*!k9wA29VCSLT@gp6*yjvxJ!?80jRb zmGxKKS-j5zu%4cuLzs&C)ipG_CMK$-7TWFC!HETxUMI8B;Y1Y_BJVGM0)g+2SPDg| z?Q(OD#blwRpG@D~{XH7!1twm_Qr^%(u`pgFka0%>Y z*ot}y)Ck$TqG@bBy&)fKvbNShMs}Fo+6-RAD}tPm9z}+$mYBMy&>HadLgl?SLt6aQ z`P|3gdY;!Omm;=;5TmhNgT19cgwROQ`tzj(QcTNngI9D+GODCY(aWfVW1iUBO^cDu zWra3x6&{>%jtWLddwUCP7&YjJucKN=41M=?#E)7@2uuuGzkU(9Ge+*N$tbetydqVN zo9OGJCF!~pA&1|{@y)pvis_2!Xgi;{{EW-_N}31@YU|9I@2TP_rBQ{{=?+STO6C!jvk24ujm@J*XiL&lRqHJ-+>Y zvhlf$9zVIBx)(isn{5!*zZVg^|7Vrmp@V?;^@CkP<2?hR-`XRefUMTZ#f+MeXFz<2 zj{dxdP%IUlZsp;|;qEpWAV+m}eGPgGyTlJ#adP1ol}s9v*bebRvs_1|vQ$mY=jt%1 zU+^O*S5EA!*g{1&-B=wb8I5xiFU10aztFGGG(pKAxlcF;_G7)r_=m z9s3==pzLtr*=dV1ftwy5$z}A$512nkqy5IhuY?5{XhXz*B8X`Aau`nYq7-(A5lPi3 z)Zhmho@&LfBKlAto=te8zPv?nJr)B|9I|q9d3ALuU+tNLXJV?z_cYEN zABqdWEC?3jHwTF8+X9hVb z6z`0orO}YqIPId;qPYE=^DGN_0v+^274Pq&v=pDpuu11}%maM9G#wdfPGR6>n+at) z2)*JT<;H}>ovarp6U%s^?1q|}Q&;LQbDc^6@ohChHFy|);oE845Fvc)ZHLk|e_mAd=v1}Cx=`JtDG9s^p} ze3;&XaMuK(pLQRd6gudXd>=~YuT+CdVPvL}4KUB$6U~tpckXp)$#MCkJ9}Ta;z9o8 zXmIam%;z^;)S~`FV4J_jAmdZ?!96|R|4Goj;QjYJlS!GSaQE625my_m(3{kVY#fg; zifbLT`1hpbsI;UC3Y`_tQ4>EMR!Wrwy851XQ5l#8Y5w5_pq~x6UwmfuJh`27;6uN4 zz3IH~JG5slD&O`E95AV1{+Dq0Vz_kTIuBmOM5}bKK}lDTTo89}mk0uww^3Kwm1^eA z_B~h`YEz(Q+JUN(3K~K$#D25(SMrjxi*QE$q*Y!DY;j1?MUi{DdE7@L=O_lb=b!x9 zE}U2Xs*EDNg)Hom;#U+ND=4r-yWVGg$%^?9{*7q(1OouP(CE@Ko8?O>%tH8s6NLT2(Wj&9dq|t8V1HOU?HcmxV3$pP*cMgiXwjKtf<_wg zq|Y{=>YMeK%%K_>&ZJ~i1PsO8*5$_fV0~9W*B81Z{OEIBuU>?0uZUyhafaKi71^JR zCN#=|8%n}JU9Z~pegwL9_fU1sA*TupTK(Tev7Q0 zmpQC;+bp$s;DZUvch1$n8r;=r>?uxg%p3$xoRC`+a)Xs2hmvm?Ad>eWuMg~(p`P+V zFV_vLpG-Khy2;}mB7h|L#;4IlErl_xcJbG4c~{rPJfUV#-h@$3p{`=KMJ1@8Nx!C) zb>3m%X&A~-`3neQ)A%k0D{E{&trQ@qvQ5Ib2t7lVy*7mmjAd?|48^4K9jf)J4rE%L z8-4rbl8gRHiV|wXsjvYXI^WDv&d2mg6b&x~rQu}!WFBI0r8^#xaUp&(UC^03L-wRh zrbGHgx5OfB2pm3lP z)^^9w@FR1+R&T; zn=-Z)8io8Q0&3+fu4Ln4Gg-z}g7>d(BeyQAvQXJyg-}1OL_q;aZ2jb9H05&kO{JZk z+P>jj7Ag}2NGV@mUwbDf`U@vw!n~>7GP?Yw(sd$r0xZohKmezVZ6Wj5MObt*a!Y*imc8g6JnFI*>mUeSi=_6wp^6 zZeL3VL&BQ4tH6Nhq;sih^i8{xp(La%&9=7(^xm}cz3U@D32byUp*uAGjSP7BKokI1xJ#j?*E2dLy1WMX{EI@~<0+^S((x@fYl*3J~)S{@-mK9V|d`rGRh_IDUmgTBahT#mhE&9aIgk0&i? zsXW!vO<}PT!SBDUR2GzSAi&6Q+B+R0ii>BU>tRGVzIu4ITuNyUOXMz%XR;NTm5}8Y zP<5TH6HVktd}359!ULkxfQAOlFVtBXThZm5{fP@|(Z zkw+0S1?X4%llX7!f_jE0KzvXa7JAw{>_e8QyhZ4q*ZF6ckBDGkS?d#dIH^1i1bW$2 z{^R5CLy?dDZ5D<4)bx<(VA0a#WAWG@;Iwnzo+71ObQ7xm!#_5b>*gc_PI}t~V&m;dL=;S?hl*CW%beIpdR(*)EgNnk*kRm*XqfjG=<#R4Aq zyI>~eigTWLOD?w)TOeK!ZEKTE$kGFZkOT^!i83`S>m{B{>7tpcvojidhx35EO|7{) zi*ABEIk(exSU?QJcmynQ zVPqH&r^~Pa>Sg_Qb*yXg(Jp6r;@!l=7^`6~w7N#xTAZ*zc3Byt^LzX_2ni60?;W!5 zg9W8(1s^;~mOfAx*1>@p*pZ^7Vy>#3b}>236)T^(tLZkM`2&DqmD1Ft#%4wiZ1?qv zCYb%OmpG+rXh^rT?2}WZM&j$6)itiDwwDM{cBo(SIfMcv!mDxx^f07#+a&hK5YVZz}P zhOttGd|&_;48req-+h;eK1WW8H!Y19@W!#9ti(v`uOZIOpNH6s0W1hBpy|t}HzENd zuHkBX+7lElC5?3K`!5aae+tYYp-2Bl+oROjfo*!cg zl?$Ijqi{}p#_af3d{S;lRlravl|=#NbFSTo4X`<|y!DBa5U=vgeMq$p{M5OkC($jQCWB}u^{m<@)L6~-&HFMu&M0wNrnw;FkbH-cQ&%SeKbstPiS34FUNJZ}f;gQ$@HU%+tR>(7zWe~4-BXB$B)NVroYXt7hUoH5<}DJ;1CgeT0Oj~^t)i5(y=*vQZCD? z*L(QMf#Zm|Qm|N0k6^O!8oN1Pmfvv;y0z8S=+{@>RQ7@Qf7iiz0R`aAF2KEd6xQx5 z7>&32&iOso4M2mR&6{-?bq5pQ?R?Jx1nIAUVE~L;;Uwbq#VbTI%F!-{$GP|*>j9u2 znF>EF#-dU18QfpQ0k54l0zyKZL7fE^n3HE$PY}(`3v_~abQ~P;U#Oo0$;A2Ain5mO z!L%%+nRjPNC4xf`AW(5}Lo@gVRW241hEwubf#C0$E-%NQ@kDytnylx>%onC`y>8?;r9WEY0uN3}OoUULMFQTP#M}C`wN|vsBEq>v z?+L94%gI3o2QR#&py5P?ks&$*Hk445R{*!*dfko|Ck+Vq1Af%Iv#gxFyqM0;{inhA zNPWBG2Ota#!J~P0r2YMQd#6iDSy`zV-xa`ifXnMh0WfF6m8w1G#4=PmjrL$=suh6I zxWL#{*5T5Wg2O5qk-hd?OUJ?Hz=Mp8x&P1AkHHNMt^Gnp)KHL+usVU70J%u%=jYeh z(vqiEsSD6|m?2{D)r~uL5$al5%FE~&7!Hp&HZjd(vL80SoXcu9JC}@8RpHxTY`tgD zYLMS!n}WU#VEH$oj>eLRw4)Xe!|bF#FLAV3_M1WZDVMh;Jy?O{##uuJ4<>emG&3fP z`2u#Ew1>WTmgzW{f4Z_dmpSc6)7>^TN-05cgt{X(#H~#sYrCWB8|E-dX(daDFrqYPJAFeXppe z2kz;DC6qbr@Y@%h+K&@Mm9HfH!Hv1$r4DxJ+PgaYJDLP2dl~7{ZL1B((O94(EZ)Yd zdTAD13&%A`NXg#d+3+cu6|%NH14;`6?oZ}Y@2b}9#xSOib^10)r`<2UA9#-llzc2K ze}l zXXoZH^LB;$3h;JO$xcI=oC%6v>-`tGaGbe**$fU=aSJ^Qz@h0D*?ToZ@SUp`u{NUQ z7Y=2vZ!}c0%-g_1x5)Q`XMJ%`*V(%+AAmjA@K?}=Hi#dV@IG-ukE@OMYGiSzMSgiC zz>dy<%_68-YVf^>S6+hI>>=A+tABwsyv(Z4aDpF(X6`9TS1KINb&q!1WgmBQ{~35T zSP(LkRo-WZ;3eKs-Ugk3YZxNnh9YeZiSZo9<8;TCY1&R4O~pone5&K57ba~ntmNJ_ z5Z!rZKw?m?zylweZ=&1#+SIuA%4Dk2n(=f!P)Y-UZ zZS_H#;&!NkP2xl|7U_1i|B92p%ILRqUCS$b@@eeIbN7~ZU*_|^edaBv_OXAezg_kD zxmRkfFN|w>8u<4`tLm*;dt)&Fe5_D+WYMyx@7`EhOi=>JaakI{nlaJ5$&TGy;p&t7G`*w zwALe&A-$7(;We7LQJEHdXt&Gu*L^jyvr1QH9{xR`Umkir)3K+%su(;XmUF9qW?dGg z{Cw)Eow>h3?hKmYamSaQ=q6}9`0{t=54g@2mWZ2$8LXxc(u(Ok$&VoksYYvc7JIAf zj2ww8J$kR^27`57=2oVV7~eBfA1v&Q)A?f_*+7O)&bZ@XfYEwlW735DolG#i%Ln7E zuGdh+-p&9BR{J%5#H?0Cm~E1^VU4zUuU_)NPhsckO-3Y7GrxPP+^)_!?#xDr+2K~R zyrIEC^UF0U1^P`|-Gyd)&a(V*wFzvX{YFAZIB1`Y3Dp+1!!^D>az)RBsp)3 z(A$yA*N2E~yG0C$OTGM*JLW#b2JFgLK3N8a2_8<&S2R#H@3$Qq5Y_s9t<{;+Y1DPd z0?t0Nh~sDG#rV{onh7I`zCnL3Np86NXApx1K^RK=W$z;&sLso1KgVvotnPc{gwv7` z4vO-CD@*NuxGxvc#Fz`Zz-W2*(r+(^mH{(!t(6)~-4p1H@uEvjYat(!EKMrXEk~m( zy-7B=o(g&Xaw))#!(!Bi6Yf_C(hLVf)m`TE*O{nb@l~{%!ocfNf5pobNP=K=5|U!^HO7EK;%KXrSiGF zp#+h_+$y|;R85`SA5d*W9U_lQKL za2eZi)xm%lDd&jm2zP3`4dcx3g#btm@wyXs0=-7AF*#e>qke`iGp(8R-FaVkWaYWr zv{*Z-MNtHWsCvqfs(7J7->r zhYS|0WfYz&69V6RTbj&P%)Fe>T35PzG1Y=G^fSWXq_-o#U(b?mn9p8qcwL2LL+9r3 z?QX9-FC30@v`%W$eQSq2PjlVWpk9QQ!M?N*V3igm9#>fo+(MM(KRpHn2M5Cf7R5K- z;&L|E@D4Tf-=^C9*G2WFnwqK0d8YE6a}hSG3;_?NJ#@e`$9 z6H(>&nxt70R>IYepMoVLBNG6qoPf8P{%*e3jJDC`5boioo|(<=o~-8p94L~s-x*+) z%4Ng9v7rihPnAW1T!H@y@$~P2i~s-n#cwKm;8RI}6QDU*lPrl#;`xEg#neMbTN@P> zmDCyUO&5mW8A*eXmX^*L)}J=MKA09u$#wGEp?NTP^GD$vUrLL&e) z$IojX;&#tAdNNxfgaMMf9cXdMogqCOs%brU4K2;ir4dlWHCGS^IL!~soZ*Z;{He$GwbhuOpVd8NacU;jGXZJRoZb^(~g+`$+W_}tIwKTw$R52 zUwM(a=Uq$9u}a|Iv&tTPT<}f-6^pi7GPSxNu*i?oJhn0YobVRfb_2?-fwv7FU6|x55 zS&;x+hp+qLGn-OL;N@2>zZ{bgp@$|v|F1!hsE*?(MT@aL=KSxWX2sWC)jw=ZYa{f> zsOk@c+XYMXQBXVMv|njQuk9i!qJZj}_5Xtb(h$kQrHkj5vi$t2Yrhz>clm{Yewm2X z{Ws$~kO*I6bsPm2a^B{5%EwtPyLz$unl~y^o$b zTy$&-7S}22R(wPm3t#gK^WL2aOHP;+tMFs>_>d;ikdqT{k?df_!jm^#A zYr_xpK_~|QNY({%YX9q?|EG&d^lWURd+4c=8xEwh=n)co3-$EhxNPX0X*ua=qyxQf z@pEk!C356S9B`O*C1!u>)%67#Y90Uv7NNLY0kLBQBrF6XN z2ZjFrgc_ar1@hCUZ>uQXbYVaqFdYjEBAbS7M_6()9qvr|a9pS4w&*Lt7@$h-Cm>s*WZqnvzrS`NlLMIXMJKa+^_- zlurVB39g~R2KbLLczL&VIHbL~Lc!L`95l%A@aEO)EsYbhLP8{shLe>6HcTub>u}F} z*3?2?@_f3nTpk8lyQj`#5e?_3=AKe2{DwI0|B;LRpN99}j`{!QMIf1?7#`qWa^w`> zt5vpxIuDCDR8>{&ot-h85xc^}!-JW`u)-zC-|mwqVD}p83~mFqyxc_Xe;|Xvb-{Qs zAa8PQXNTGuPyPcixq)Qzwf~SgF7bO}n0}7UiIi_Ktw*E-O_K+)Ppo562BS2)T;y+f z;7Nm)k*pr z5@tW1_XKoLUdRyg+`&_rA<@Fd{gVMGl3pne!TZJ!j^?qSh0Cq;ZuNwe03_n>djQku zS`+F3;gdS==g%D1EBa}LExGQ8tfo)|9z(R9!RpMW``y9yN$7tWg}nUMUFQFQ@0dbY zWw;4dx`HZ^jg&CtG`#=c$`Z_VryeV4DjkBw>5;ut@L76wAmWHL(AIL>lA8vfTy04f;Y=96?j^J*XtTxH)judm<`BR`}S^ zI>Phc0ab+}d8XI2;4Y&DN{91&i#-54!KT2<` zj1u#7xDzq$sOUdq>ZXK#w0D#3@A6Sgc)ob|6wBR{3dGl+6Rx!ziBthgw(LLrESUdy zg2+4iR6XoxP+atgJ{>fOwfEji#~Pkpj>g)%6tsPUB$hxJ^xa^^zEtfaTH*}uMFQ80 zdOgZmWP0^rcfG%!!<8@v2Rr8HY+^Lo)>y@J!fIx%b>%ES`^Qf_u5s_XUz?bE=F=k? zjG&Sg@IwSIg?kFELLmMLRgoVSjW-AXTTJByU@DU{OXcpy33zLbwV3!~_uk->?v%_Z zw5L|E12BJ8oM<9A>+i3Eu`7O|W(k0Fv!Xg)T)kKRxtt8h7}?DX=FAl0AxiRZT=X+4 zXrX|vY)V?xppBC{8`YQCHT#@k@&9FBA+0bL451}93>z?K5cI~0V15yIbmXh4I~3JY ziQpR66#DNIQ@{_4aNF8X?pRz8YJciaBOl%gxG3z$;eJD%<(7uF`SR%{H!kgi7dDq_Vg68s^Y3w=r*L zaki#@eZ}9yjW>b8d03xvQc`L7U6ahr{|%X$MEaS~dN4mgC~e-ka9s~_JmU(!JS%aA zs$g=W + + + + + + +My Project: Member List + + + + + + + + + + +
+
+
core::TCPSession Member List
+
+
+ +

This is the complete list of members for core::TCPSession, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
active (defined in core::Socket)core::Socket
bufferSize (defined in core::Socket)core::Socket
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getDescriptor()core::Socket
grab (defined in core::TCPSession)core::TCPSession
ipAddress (defined in core::TCPSocket)core::TCPSocket
name (defined in core::Object)core::Object
needsToWrite() (defined in core::Socket)core::Socket
onConnected(std::stringstream &out)core::TCPSessionprotectedvirtual
onDataReceived(std::string data) overridecore::TCPSessionprotectedvirtual
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
onRegister() overridecore::TCPSessionprotectedvirtual
onRegistered() (defined in core::Socket)core::Socketvirtual
onUnregister()core::Socketvirtual
output(std::stringstream &data)core::TCPSessionvirtual
protocol(std::stringstream &out, std::string data)core::TCPSessionprotectedvirtual
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
send(std::string data)core::TCPSession
sendToAll(std::string data)core::TCPSession
sendToAll(SessionFilter filter, std::string data)core::TCPSession
server (defined in core::TCPSession)core::TCPSession
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
shutDown (defined in core::Socket)core::Socketprotected
shutdown(std::string text="unknown")core::Socket
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
TCPSession(EPoll &ePoll, TCPServer &server) (defined in core::TCPSession)core::TCPSession
TCPSession(EPoll &ePoll, TCPServer &server, std::string text) (defined in core::TCPSession)core::TCPSession
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
TCPSocket(EPoll &ePoll, std::string text) (defined in core::TCPSocket)core::TCPSocket
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket() (defined in core::Socket)core::Socket
~TCPSession() (defined in core::TCPSession)core::TCPSession
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
+ + + + diff --git a/html/classcore_1_1TCPSession.html b/html/classcore_1_1TCPSession.html new file mode 100644 index 0000000..1938a8c --- /dev/null +++ b/html/classcore_1_1TCPSession.html @@ -0,0 +1,478 @@ + + + + + + + +My Project: core::TCPSession Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

#include <TCPSession.h>

+
+Inheritance diagram for core::TCPSession:
+
+
Inheritance graph
+ + + + + + + + +
[legend]
+
+Collaboration diagram for core::TCPSession:
+
+
Collaboration graph
+ + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

TCPSession (EPoll &ePoll, TCPServer &server)
 
TCPSession (EPoll &ePoll, TCPServer &server, std::string text)
 
virtual void output (std::stringstream &data)
 
void send (std::string data)
 
void sendToAll (std::string data)
 
void sendToAll (SessionFilter filter, std::string data)
 
- Public Member Functions inherited from core::TCPSocket
TCPSocket (EPoll &ePoll)
 
TCPSocket (EPoll &ePoll, std::string text)
 
+void connect (IPAddress &address)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
Socket (EPoll &ePoll, std::string text)
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 
+int getDescriptor ()
 Get the descriptor for the socket.
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
+virtual void onRegistered ()
 
virtual void onUnregister ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+bool needsToWrite ()
 
+ + + + + + + + + + + + + + + + + + + +

+Public Attributes

+Commandgrab = NULL
 
+TCPServerserver
 
- Public Attributes inherited from core::TCPSocket
+IPAddress ipAddress
 
- Public Attributes inherited from core::Socket
+class {
bufferSize
 
+bool active = false
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void onDataReceived (std::string data) override
 Called when data is received from the socket. More...
 
virtual void onRegister () override
 Called when the socket has finished registering with the epoll processing. More...
 
virtual void onConnected (std::stringstream &out)
 
virtual void protocol (std::stringstream &out, std::string data)
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
+virtual void onDataReceived (char *buffer, int len)
 
virtual void receiveData (char *buffer, int bufferLength)
 
+ + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from core::Socket
+EPollePoll
 
+bool shutDown = false
 
+

Detailed Description

+

TCPSession

+

TCPSession defines the nature of the interaction with the client and stores persistent data for a defined session. BMASession objects are not sockets but instead provide a communications control mechanism. Protocol conversations are provided through extensions from this object.

+

Member Function Documentation

+ +

◆ onConnected()

+ +
+
+ + + + + +
+ + + + + + + + +
void core::TCPSession::onConnected (std::stringstream & out)
+
+protectedvirtual
+
+

This method is called from within the protocol method when protocol is called on the initial connection where the data is an empty string. Use this method to deliver a message to the connection upon connection.

+ +
+
+ +

◆ onDataReceived()

+ +
+
+ + + + + +
+ + + + + + + + +
void core::TCPSession::onDataReceived (std::string data)
+
+overrideprotectedvirtual
+
+ +

Called when data is received from the socket.

+

The onConnected method is called when the socket is ready to communicate. Writing to the socket can begin on this call to initiate a contact with the remote device. The onDataReceived method is called when the socket has received an event from epoll and there is data ready to be read from the socket. The default handler will pull the data and put it into the streambuf for the socket. EPOLLIN

+
Parameters
+ + +
datathe data that has been received from the socket.
+
+
+ +

Reimplemented from core::Socket.

+ +
+
+ +

◆ onRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void core::TCPSession::onRegister ()
+
+overrideprotectedvirtual
+
+ +

Called when the socket has finished registering with the epoll processing.

+

The onRegister method is called before the socket is registered with ePoll so objects extending the Socket definition can initialize the socket before receiving events. Evoked when the descriptor is set using setDescriptor for the socket.

+ +

Reimplemented from core::Socket.

+ +

Reimplemented in core::TLSSession.

+ +
+
+ +

◆ output()

+ +
+
+ + + + + +
+ + + + + + + + +
void core::TCPSession::output (std::stringstream & out)
+
+virtual
+
+

The output method is called by a socket session (BMASession) and will output the detail information for the client socket. When extending BMATCPSocket or BMASession you can override the method to add attributes to the list.

+ +

Reimplemented from core::TCPSocket.

+ +

Reimplemented in core::TLSSession.

+ +
+
+ +

◆ protocol()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void core::TCPSession::protocol (std::stringstream & out,
std::string data = "" 
)
+
+protectedvirtual
+
+

Override the protocol method to manage and control the session communications in your inherited session. If you do not override this method then the Session default will process the 'commands' added to the server object using the processRequest method on the session input.

+ +

Reimplemented in core::TLSSession, and core::ConsoleSession.

+ +
+
+ +

◆ send()

+ +
+
+ + + + + + + + +
void core::TCPSession::send (std::string data)
+
+

The send method is used to output the contents of the out stream to the session containing the stream.

+ +
+
+ +

◆ sendToAll() [1/2]

+ +
+
+ + + + + + + + +
void core::TCPSession::sendToAll (std::string data)
+
+

Use this sendToAll method to output the contents of the out stream to all the connections on the server excluding the sender session.

+ +
+
+ +

◆ sendToAll() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void core::TCPSession::sendToAll (SessionFilter filter,
std::string data 
)
+
+

Use this sendToAll method to output the contents of the out stream to all the connections on the server excluding the sender session and the entries identified by the passed in filter object.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1TCPSession__coll__graph.map b/html/classcore_1_1TCPSession__coll__graph.map new file mode 100644 index 0000000..975c35d --- /dev/null +++ b/html/classcore_1_1TCPSession__coll__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/html/classcore_1_1TCPSession__coll__graph.md5 b/html/classcore_1_1TCPSession__coll__graph.md5 new file mode 100644 index 0000000..0691aea --- /dev/null +++ b/html/classcore_1_1TCPSession__coll__graph.md5 @@ -0,0 +1 @@ +acc0be7de9eb6aa1e60c277b6d5fe67e \ No newline at end of file diff --git a/html/classcore_1_1TCPSession__coll__graph.png b/html/classcore_1_1TCPSession__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..60866bd7227326fd21d44e08a4092c2f62763770 GIT binary patch literal 52711 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%0AGN$B%KbyCU8{B&?kMFUsCJs*h*e7bFCC3Gl@o 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 Dsd35} literal 0 HcmV?d00001 diff --git a/html/classcore_1_1TCPSession__inherit__graph.map b/html/classcore_1_1TCPSession__inherit__graph.map new file mode 100644 index 0000000..8aeb966 --- /dev/null +++ b/html/classcore_1_1TCPSession__inherit__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/html/classcore_1_1TCPSession__inherit__graph.md5 b/html/classcore_1_1TCPSession__inherit__graph.md5 new file mode 100644 index 0000000..b1e3558 --- /dev/null +++ b/html/classcore_1_1TCPSession__inherit__graph.md5 @@ -0,0 +1 @@ +f946a781463cc4c36fd96366b802a111 \ No newline at end of file diff --git a/html/classcore_1_1TCPSession__inherit__graph.png b/html/classcore_1_1TCPSession__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0d2a88cd41afc1506697ac63b5857edf2a5b9a0e GIT binary patch literal 15029 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 G;Qs)Xx-=R9 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1TCPSocket-members.html b/html/classcore_1_1TCPSocket-members.html new file mode 100644 index 0000000..c3fec06 --- /dev/null +++ b/html/classcore_1_1TCPSocket-members.html @@ -0,0 +1,109 @@ + + + + + + + +My Project: Member List + + + + + + + + + + +
+
+
core::TCPSocket Member List
+
+
+ +

This is the complete list of members for core::TCPSocket, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
active (defined in core::Socket)core::Socket
bufferSize (defined in core::Socket)core::Socket
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getDescriptor()core::Socket
ipAddress (defined in core::TCPSocket)core::TCPSocket
name (defined in core::Object)core::Object
needsToWrite() (defined in core::Socket)core::Socket
onDataReceived(std::string data)core::Socketprotectedvirtual
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
onRegister()core::Socketvirtual
onRegistered() (defined in core::Socket)core::Socketvirtual
onUnregister()core::Socketvirtual
output(std::stringstream &out)core::TCPSocketvirtual
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
shutDown (defined in core::Socket)core::Socketprotected
shutdown(std::string text="unknown")core::Socket
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
TCPSocket(EPoll &ePoll, std::string text) (defined in core::TCPSocket)core::TCPSocket
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket() (defined in core::Socket)core::Socket
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
+ + + + diff --git a/html/classcore_1_1TCPSocket.html b/html/classcore_1_1TCPSocket.html new file mode 100644 index 0000000..9aa3752 --- /dev/null +++ b/html/classcore_1_1TCPSocket.html @@ -0,0 +1,246 @@ + + + + + + + +My Project: core::TCPSocket Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::TCPSocket Class Reference
+
+
+ +

#include <TCPSocket.h>

+
+Inheritance diagram for core::TCPSocket:
+
+
Inheritance graph
+ + + + + + + + + + + +
[legend]
+
+Collaboration diagram for core::TCPSocket:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

TCPSocket (EPoll &ePoll)
 
TCPSocket (EPoll &ePoll, std::string text)
 
+void connect (IPAddress &address)
 
virtual void output (std::stringstream &out)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
Socket (EPoll &ePoll, std::string text)
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 
+int getDescriptor ()
 Get the descriptor for the socket.
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegister ()
 Called when the socket has finished registering with the epoll processing. More...
 
+virtual void onRegistered ()
 
virtual void onUnregister ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+bool needsToWrite ()
 
+ + + + + + + + + + + + + + +

+Public Attributes

+IPAddress ipAddress
 
- Public Attributes inherited from core::Socket
+class {
bufferSize
 
+bool active = false
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+ + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
virtual void onDataReceived (std::string data)
 Called when data is received from the socket. More...
 
+virtual void onDataReceived (char *buffer, int len)
 
virtual void receiveData (char *buffer, int bufferLength)
 
- Protected Attributes inherited from core::Socket
+EPollePoll
 
+bool shutDown = false
 
+

Detailed Description

+

TCPSocket

+

Provides a network TCP socket.

+

For accessing TCP network functions use this object. The connection oriented nature of TCP provides a single client persistent connection with data error correction and a durable synchronous data connection.

+

Member Function Documentation

+ +

◆ output()

+ +
+
+ + + + + +
+ + + + + + + + +
void core::TCPSocket::output (std::stringstream & out)
+
+virtual
+
+

The output method is called by a socket session (BMASession) and will output the detail information for the client socket. When extending BMATCPSocket or BMASession you can override the method to add attributes to the list.

+ +

Reimplemented in core::TLSSession, and core::TCPSession.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1TCPSocket__coll__graph.map b/html/classcore_1_1TCPSocket__coll__graph.map new file mode 100644 index 0000000..8db6209 --- /dev/null +++ b/html/classcore_1_1TCPSocket__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/html/classcore_1_1TCPSocket__coll__graph.md5 b/html/classcore_1_1TCPSocket__coll__graph.md5 new file mode 100644 index 0000000..a74e95d --- /dev/null +++ b/html/classcore_1_1TCPSocket__coll__graph.md5 @@ -0,0 +1 @@ +5bef268104703d1d333c410770a4e9f9 \ No newline at end of file diff --git a/html/classcore_1_1TCPSocket__coll__graph.png b/html/classcore_1_1TCPSocket__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5cf3a7cb4cede2b5a06d35f025244d2235dfe5fb GIT binary patch literal 18243 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 iKvqUb3CPL_DdGS3mR913VWsc@0000 + + + + + + + + + + diff --git a/html/classcore_1_1TCPSocket__inherit__graph.md5 b/html/classcore_1_1TCPSocket__inherit__graph.md5 new file mode 100644 index 0000000..0b0aa3d --- /dev/null +++ b/html/classcore_1_1TCPSocket__inherit__graph.md5 @@ -0,0 +1 @@ +58e78285961f10a20f4b51951e70d6e3 \ No newline at end of file diff --git a/html/classcore_1_1TCPSocket__inherit__graph.png b/html/classcore_1_1TCPSocket__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8fcf00b556b6d1b853e4e5eaafbc5e306cc07cfc GIT binary patch literal 17873 zcmch<1ymf{x;2^vYal@5Zb1?pf_rca?ykYzouDDO6Fj)P1sVzN?vTa_?iT!2_I~HQ zyN}%a-|>(0ioxjW?p3SS8dbIC{N^{m{;VJ;fr3PU^z7L)6e&qjrDxBcO9KB}pclX= zco%0Xzze*QjD+a3r{8~HTMOf#JtKQ2B`T!io_+{*dxyFGgmAL$i1?;oNfaz5CWNky z-KS1uBL;WpLMP%dgIcbts91Wbu2ZkN6gF!Y4(TEe2z_Nq%!U67i7|%1hZ)Wv{PyVP z0o{c9U~~28{FaW$%|n25xyeVuAOii_M@=qg+-J|seZbbw@IV15&tQbAo*R%cLgA_c z8XMg-H1MFRb&4y2)8*8DAW4Q)FC;hN)bP)oVA~ z73;>!WhUs~)~qBauQq;Evu_Sp-E{DCzZbUo<~KDZj!YgDlX$ozMXLFppmEV`wpDd7 zgpA>}ujxX!8s+iXij<8hX9me&};P+{5c#_>oz=9?{qCH z1s0B5YQI-(`PFYB&x=(%_OKKr??ckvx3YXG^lNZITX+a8{9{f3>3DxF45emptY-7u zh5u9azDDV8lq&^7K_As1IxX6nz{J*4_{5m)5dr!Z_jMo0K~=wo2LC}1{qWclOWB1db5vPPP(vj>K`fKo z0eI49*osBTn?sLHJqa6Zo0!>JQ#bC$2LtO%5$!m2gvL8pr_7mXQOP8XES-rY zHWtR2?jLoI&x@DFR;CB` zJmg%3^WxK}cRo8skiCTz4WCT3+QlJUm89`iwS#7WK}LLeitlUV(o;IQzNFS;Mo$;l zOG-jk7?@iBD67$)&wB^mVe3Bp8P+2gF1*@Nx{k~>p`G7M1?z8_m^J{WmReXwKoOW!Ir>ShXr~n^dKVIaq)3=FCM+C@|Qj{ z6Xfyrl=JIZuhv4jez}PCivgZCmee!&gZqRooH?q7@!wajKNdz!3CaL%+7vX@Obbb1 z^{cF8f~t}Q#kBkFUF_oMFg~>Jo?yUT`Xj5bb@cS)NAlrkk$rM_niy<=WB?gh7)uP=PMVdh zF6<`uPM2)nIyPDT?8Gp~C^8Z(91246lr|H3mjQh4aJr5e6gnu#((CIRZC-{@gbka< zaDPu?sB@Vh64oi7nP+B#HLii7KnmiZ%gf&q^twtdxw%k^+k}M|pHe|rU;;jeh2qAZ}~~r&b~q5yGb37#Y{b#W^PE@eFUoCNp-- zase=t!bC<^a(jBRm#4&?MVh_l`4RrRP1^A5_<=%MLY*5kd;5d0LO-dgZxeNEYFAwL z3o5M@#`QX&x@A+XcZ(vQaOATDf{uhg5_A-BJ$nh;0sqmT>|bEc-yjXd@&9`xQGtyuOg;<8Loz3r??}0z zJ*aUf=j!xx{JI+^!el|s1dt=XOk$RfNJ{s?0s{&V^z+0RJFWjTaglJrSCV5oKb9~)sNzgs)~M>Z;_ao z4%^vIbXO-IWth68(-`rJ@P$Liwo4z|*-XcFmgOL}R3E55J=9*nv>Nj2_cQl?yRV)b zKSEuq>_rSdopa@KCT+fyYSLKEnaV%L8dL6=z^95!hV;F3=EX}*iocw;y980BU6Q|w zsHWeV9nhwE8)4;L;27Zcez&mlgMo#hQ}G<>V{}dTF>=w;cy6Jz3PjIw@(vjeHlr8MN1k`6LEv$8q~_t%$hC9w@r)yi1NwaZmL=m1BdD(D zG*A{W@^_;074-tk`9;Fu7(KgO+Y)Htbp*%P-Zkq?1pd0M$yD1Hrn*cL{=Ccwaai=) z2ynpR;h7D;v2e^s(HwCi{aQv@{k`YAVb5YL{9>1%%JkQg2qO^3h=FptZNiC5MX;(} zPX}sezwKz;=Ojwu(BBxjGgr7y25O8}t$bmK8Vp`oDnTp8W2Sp(_yi{fh7|%66QP-z zn$dAYCf1+v@R3pKE>Bzpem=5t%W6pm`&n8S&H39GPlo83(J~;CtN5y)I1lGc3`qF4 zrba8q4?RnL(NRFyH{Z=n$1V~D76#!4|MGTY6Al8eJ0F@RWPW+2d_g56JIKt&@{=rx zi)i%j`3NyutD-fU@!w&xygz=dT;G?g`OG~jX`$Z`Cts{b!$PE>Kw3r^WZ`!^bkn-* zXWj5^wTa;uv8^TkJ7uzY=Z#369XVoX)wOF4GsF6@DO%+!pRP?1*lshRY3J81bPm(W z5u@T*%kAZuHgkZw)4Rri2NHqnxY}ByibKcRtcEAJU~pU^d=`?NYF^D5t6d(1(7}Ao z==gi+d_rAN|4_U427_~opq7lL$dT3DsJa@4aOh6aRP5?v*}YBq<7alkkk2Z~{xUMs zYf%QbKFIZ|ZK$V5F?g-$UhEz0NpYCM!<)ho&!vZBwhDTy zHXYN3U0*uauush$T64P&bo9SM+DLs+d7_s>S**4X$oPP(%a1vPUfYh@f>CTMX(2V! zUe30;By`)=z>iMHAaZqfUF;L_UH~#33OxuZL^J1c9}ieWhkcHQQH1cG)a9eB!+)ju z|F9;exnN+_>@q$tBK{Fwj(B%39p!)h11eAfR zWY}qxfDv!EqZV35wMPsFlIRU!uw9qWP(B*4uJnW}CYm)_#!7FgSMbp>CDS}GnYXV} zgMUIiSPRO^_A(lVk{-@y)Jf4ummxJn-yCK`LU`Cz;HTjOMtGo*N`7ba(~Dh^9Y)w9 zbnCFc@)96m`-dy}F972|+-QAL_nlW_N(w#!fwUX;2o??wHBR4@u2}r#!NSz?a^?~3 zBEk#f_iiYMag~*ozhO?54MB=PApvAe0}W&4wa<2q_)z1^9*L{b@F8hPbH;z9lD>M2v1q)r^z`F?(@KPbXmy8YAP>+>W= zf|XJVVM$N7yJ;IYN)UMvD5}9*%{>pOjdp-TC_KPnbV_ z1?;TR4hs^fS|L7H8S?jyzQb1er?9fH9kwfyrNQlYP5mswljHh=Xv7cOw-bCppqfCE z&oa5*e6FHP^p9sxYF7su>Gvo1)%u*+7NkFz7h~RmEF$&%93RX{geCQoaQ*In+3}*L z5-)LSp|v94WzDU8m{NbJ8Z1H9JiEQAH*UA_Ep#$Z%s|Z!L5~S}Jk#v|(#{zXlJ!vy zuETb_Kk7Dw7zhd%rNYPeOiWBvV!^bRov~g?R?%fo{lJ{Ek6O!`TOJ&t!FT%e^7{c` zVO4%Ye0)fy&$+pnWSRGcB$3l`cFMlPHhKuGaR2yfJX0G(=w%Dxc_h@no}ON5f>-g5 zH-GtOhd=|*fMaL$(@Jv1R3SIh!m872<+C;~kDoSKC|TU{8G9|8+F86QTOg@p+pGqL zleHB>9QsoaYLS}s6Tzorx<-qqjJEM}zsAWSbm1`HhLyzGn=-6KdO3E7*L=Pdpo=!h^kQ4j6~+o#*IdpYZE0suuBWPz>9i&c}WW=r!Z)8`+bt?BS=fo0Z=!Y9elI zhV+?$k()g2l1$yjgJy2aT29M`iOvODEz3+0ZA37Q`OB|;B)gIFgHtAOAHgOs@jrBl zg&rK&coJ;y&5Dhlt9u?k?5{t3yB{2$Dd%I5{q%iK`d_DA+1_^t6=~matkjw`Z6xt*gaUE!L?7oe==*t;?}x&9>zE$ha$db~ zga#7=7*(=)%RppDWZ6gK5{*&}Pc>2>t%=r?Ltad}+OT>C3)AItu5||BiZ6C0eCu-nL;DBW#|dK{iJ&@x1y{`lMXPjN z%vWp;q$Wn()&W~ph>TfGt;elb{Wo8#hivxM^e{34-;2)@O9aJS>}GUx%LP`zosr5d z8C1&GO}hK{`Wuv@7#d8|=zkH(79a|;-wl^BQ@UeH<$0IJ%r-gX@gN>`8w(&qx4>arv(@u5Ywlq2Y zGUkjZT1=vliS2#Th^mX`x1e8bZ4a5h;6#5N3Kn*u17JRC`3=5A5cpVd$c;WL#xDKa zo{~<%h4pkWBP`+)a>3i}0xb()Of8O+-QyW_Du_GJ#9QtH8a0+v$ zMvN`}vaFYJvB5c%Ls*i;ZTEYIya2xCVDXJ6oUq-m5*RN=V*bbN=t4bQN1p4t2a}Cu zI8uCeXO2{0ImvpI-h*(14XSL+xg* z(aty{=IhkP*|`STmi59@viU;|4UM?Q>vnQ-L_QLl_<`55H4k^kOxpWHTaK0o^I4Nq z$dYj}L#OlA4{GJ9Y_4UhRz89XbRbs<7J6)p*LC8_31!@7{}wia0x4ZqAnsv|0 z(`kunA+`)CS!U40(aLHHn~unIgrIk;b0UQUB>AoFO! ziHe&$n)36Yq?_0#ywjMg{%;beW^>GCw+(ne%0 zPylpRD&J9mCG_F0vfV>D2rQ&nPazwZo-N{~+q{__HA{mOP1s1sz#zY?$;OzxX&>4X z-e(Qv5vhKQU;}$VQ}05AdU|4bwm%n)6}(?SKu(#gyg$obTzMHuD5!e5!IZ50HpP3s zN-t)w0UkJ6ET!3#uN!XiT2RfWC`YdDkIzj>eN4*RUKGd?Pc~M5F4=j!uiXcD+RPk} zISI&>_xl?7?y8BG7p*kSCgQX=@<}!IM$Ovi;da2qZ2=VUYqya5=qPu3j?J6{1&f>@06fe)^-%ihO%Kkp(%&^@T3JM?tZSL;Yd7Mup6TyQx^9WDmid~WE??iAgqw}k6-!` zr)OKJ`?Ip*Abdi%vuk}rqa04BpZ?#tvP}n{MZ#`ZFV$%kR~#@VD|=n(EL5#2lT<$T zJvCBCoUZr@YSftMTt*!)Cyr$KQS$RY{b<_a;4meigP%qVfVvh-yJ%BjND15>%%5*p zj%Dg{n1sSXx1I$7BJGGJQ?WQ`cgOtUd@MN-;X0l7dVHhL!Z{fR9AMBWd-!GsiI~?i zgX=WE)kmL`Gb<)W6j0Z|2MvYLd@UiFaIejNvyHwbdM)RR(Zp0a{2d- z*iWbosXQ(xIbwZ}57)p6s|a8rC>C?YYGhJTjn_XGYCkdP-d-otjqNagY6XN_I2fh! zcX8>hUQirHqE_n#L0{ik=j1M>lY~hQe-_{{(E2A*Q-`MXdaJR)t%S5C$!0nuVi3mz zUXmqT09k`g+Cs51g8Z0Me*RXLpFqW$;k$i*gQb#XP+9i=*6)ck z@yJo*d4Me1Ri2jNM9zc`i`D}MT42h7B(5MZ@M$Y$#KyuY;A zuf;0n-jeV)i)s@#5NYEB${5*>(z?|#PAciGF61*QOqFieszf$JN=wzdc(!!O6uHBHTnMBKPv0^d+bx=>J2|NPc` z>wH+^cJyOTT)Y{$Jg{JE7k?E_DNoO~()|upVt4OHNB1??A%I`LP=da!)NgljI9+q( zZfjfll1ebHD|ZKa>2m%hjSvpjJ%-Zk=kQa0;r7(;uR3f$#Ox(8vrJ%u)OPkP z$5PG_S}@9}$mYutm7tC%(p75DJ8aow_GXO?zB*kU%<+4iln^jJ`9_C!LQ0bHCzG*}4syONpbdWf?a;De+9l~Vaj^#FeNn0LUJh_Dbb zvY9=#8|kW^@aPV@4g%n@@s6<^`KTVi4g(8GA)85st%S9rz0_0MJ3J)D!6|4vE>zUh z>)SNR6$(6acBXWm17e4(tE4YOe;jB4 zG#kNFXtg@1s;W9Uv9IS4!ZqHg$rcH=p`2M;TPweVNsWzN+uoiF)1RjWy|_Ho{?&oN zO)piSm8CB(E`A=OdPiX)9!Wq222DeehMK;8E84I!?41ZFOMSvppYQu8fwv6QKyNhl zj6{)e?CS3I+aNHbx1;k`Aw`+&49bL>)mT*7hky0*_ za2dVKB{nNjL1iCZk@LsgZChkX@B~M|`c`XRoma>eY%w!vziI9(ZAWX$*rm@^D%Cz(ZdlhU*A(7 zF4VUwpS5h4qtSl{t=$imn%T%anr{b7NLf_7J!%?z_-)liHZE7M(?|TQE5w&T{nF(6 z^JBxg5@wm)=pUP34@WXkue0a`pyj_?GWxK}l)dhpVSz~s~RW=5Z z3{q&fzP&M-8Ii*X+#a{op(}1o;oDw33$C1OY@}=pQ=Dz@tLrx$f9-KdlnP~D=S#+s zY_b~{1;^^)?jw?z=_Qf}S=yqre{-Rf|AwW(<2K{GQF0!l-JBiUSNFPa@Nd4e%%g()Zz8aBM~9=aJ13^_n+%ImVZ%iSp0QvObPPaX=&9AL2YbNFU;I z)F0WsXNc5{?>@kXE?LZ#=ap?%`6c;&<+R>L#_z>T7Q7-@gc{z>aAh+;E~0)q5@{5m z!9~__ZobG^_n_tC$rU|wy#C^Eiy$)PSd)2MPGV?MDl8@WN>$+Hf_S+lHAko-yrf_r3(*TP^scE7oMshqb3S zrDrnv(nzHxe0vKHX2zwL*%%QlzHSb&#aku3A5c)SGZcl3i)yN;nxqJ-dy{I6dZik4 z`#$~63n0u_jzG_i9{XxIRN!vrU1>cUB_7?OhH7>RjRD&akr)LPu$Pg4{!I;GEMdg~=cl z1WruTHJGTB@4>G8A)wZZ6vT}sY+_d`Kq(BwHf0w}Bsh8N^JWNrT`3C-O)8j6Kd+AF zDAqKsBS&6o)?G(b(=lxt2Z8q#xMAKjy}1+nm@L8xgd>WTT`hX*|6OP+8BLFOeL29WT1fn zav&CJc4d{8e;-S88=Fu40WTHL31}acV-i*UxoIPt6PvI|MRD=GzcotMr+)wNd4WdXo3))mIGG{qP3G{)93vfh!(%!LPs|_G?Z_AH z#Qp7Nka1{gnVU21Cre|lUf^o9v|MyP>i@bYj6Xd)xDUwEZ4iukB}%ie!Tv!-);~$- z7HV?A#EuLt&LzBBmcuC!OJ6ux!%iM-LH>$l%|8p+9ZUh3{gt$84etN2aO z+HDH|H=;Vd-Haez-@~}^*a0pb5zZk53kUP*KGR@q9j?7Kqt$0-{Ps9%Ez;SI0+m7M zfEW)wEiMV{ag%J<63lomVO7jnmMVv8`@|s7c>4)~0;fsCevdeVBb+l1xDe9ZP18Qw z3OcrrOF6F;o01xE{9`7gW>U=!kj%x;8&(O674LjMAO^U|HJILJM3nbdauI7^wLx}f z7G~nDhhM%NhUcl^#(iBWtT5d50LAJ*kr@O#NQFQz_|c99ClJ>dyvR@r@nZ)QcFQpygxm7eauQt%`4d z&n@a9(uH>~4b5fQi8H!W!=rC6a#j$IfL~h?`Ko&6?kil+VUYcGR&)KW^VQ|0i<6V` ze$8_NQ7~-Qn461>O>fnOT^P(WE#iML+WbA~>55|Humt&x#HOyPndZ*L#xVW(Yi)S= zy}rJ_OXDQ%;GjvPUHi?k-_nW||65j8uZx|DJ^dv;({!btp2-;S+UCHaooz$ZPu;mm zNdS_!H!q5AY>}Nf15Nh5Kp`Y7$ud_xvz`JDE}uf&I(eX|yPKa+ zFRdjTiLIwh^U3QM^UeKD;?+pPfmQ@Jo|} zy0-=MAUK}ys?des@IrPf+es9##NyJ;#@+(C?z(A!Sc3w-1r*Sk`R{&fvtnU zi;!#m9uh<;jIk_{s-@PCAK&x{6o|eu-lnT3pMOJ1_%TIc01=si0gg_2C4yWDe9O_oefN?K{gE?x69@18VxO|@n60b4C|bN#eGb?#Hw z2iij=0|RHM4km2JRvakXXrv@|0Tw=oHj zV0SGpz5)6p(J-#n5)z_G-!}pT7ke()vT99f2VC5;YW&ZX+(3ikgakgWxgHfAM#Msh z2GAGos0#~rbf5o}ElQ?q%KGSxkqGlry_u)43*=@T#vQAKavd9>+Q}a zM)-}>)fd=m(y}9gPP#7vsRxd>EFmrqL1Gl|rJP$eI&fCLZ|{O5S9NeVfR6uoJ#`0; zzx&?A*c&*dYn_muj=Z!s43Aq>1tjW7fa!Ap!~NTVF2I3=_Dz&JUppCTXgol`hd<1n$w$^Z6}Qt{B&@2E$})>lh=lr^+mz# zROE>L^7cJ9C2CYn)vq;;Y;E-^^~Nsxu+rvpfx~P$T~u#1H>nN7+tk#=?lnJ)*wEVA zT3TxLyNwtbcwGBkGzq`K&&eFB4%1x$j%UO0fANtRNmhM8PlG=RU370)`IPaeNf9c@ z=;2{IRfhiX{?Y|y*0)DJJ%fAnwtxl*A&`$rx_z!( zuryX+BD~Ks^#1&79DImUgsE5G>P@))GL)aOiy^}K^1U^+U0a+OIW}==a*20$hR+KQ z-bH8DxAoc=*K|^>g)X`E_a!3Jnre<^cVvhc2qO&1 zNS?lmP2V-QW$p8dLCqdvgGV5H@y-7&iw~9cAzJOnehjz5^){B z;blthUcB&Mqa~IV#Z(=$-37n)b&yM!!!kVn$!%ivI%}z~MBShHlW^#P&CDlJ5V`c1 zMBk;Z02QL=hpX;fth~I9sHRoZV9$HtOBZ9G%WeJ?)gn*#mX@_NIFql8X+czzVH6b1%BFQgTQ& zEtNvDKeHf^cdxw(TgOZL!b{?*T%9kCozEZrW4{PW05|ae8dMxPCH~I2kK0vd&)W?0 zI6G|4An%@*{O`RQkfG%Ro_#rvMXpiC!<#olLo!SUPr+mDEci@gqfEaRKHS032q)A; zsbY%GgklE4ztGhThF{e9-xyhJn3wy5ZQ<_ty^pBO%zAW|woC*Jk0%l_!qG!}@l$$mGz+BTrZFA7woFXPh1F@9a*S zW(4{0s{4Bal#ex-;q55nx0wg15a19_k0t}hQ*Vtk;Z zNyf=U5%f9C6$|o!xv%-ofY>t19-${n!E!t*81sN0va^?>5%uLEV>NN-f$Z|W)Rw;< z8T?mLt(w))79EMt?^pe=S#|J?;Cf`{9m;DN_7{!6q!3|+PHw!v)ym82=;(lbIPE5v zc!ugJHHYWNV4h7s`wIsA-M=2{(jh0=UjTvq%3YQLEq4;UYV)~U>?xKD0}L&k_Yz6>?ID^7KDlcgS)fNxcN@ zmRONY#^!U!{%;tz5))34ka!3P8;1(Dxp{f74;E@Yx*9qY%?|tfNRNS&FV_!woUXGt z&%Kzoy*~O1gJ2s)D!6*F`@wlG$AW&b4;4}By<|T%=oJ@N(vj9jYFJoN@}MJV_|O1N z0R%_ZSg|UasA*&?4sQc+tQ04dGZ~she)&>%ap4WXNjJb-Eh@w}<}nTc-l^Sagk33w z`O)Im@vLu#e>wO%-0iFkH`7hNQGJT8kWX)hVk=LnsnQO%6t#?5a2{`iLgHwer&L0b zi;c~{BJN}J&7EMZv=yI!NtJ^4wJnkEr8&uYpwHb^DR6GBj-QSLUe_9IX_{0lEUy7J zm96EJ-nCt8Zk2x1A>g=)DmCjnUa3Oc?f~Ojo3gv!^M<7IDu5w=piy zff;deUQfOOIu$0{dzbr-78Wl{uZ@1(FP+oeMtQqZeo*0nwy6VqtK&0ZF zo&?e_j8gOR(!0Bf^5>+Ku>_n#7+%+<5Lw4cVqjr0B+q>rpd6T(T(`7vpg~$`dkCvo z{FtiKc8^6a8b`#KELzlydCSr}midAD_4cGnsyNFQd-LGVj=7k`F~H>QR>F{wWdZ~B z59b|DffPb`&tzxkWT!B?SoID(UJ@Qx6`-}K^Hr+LS9Z;oKhG7{l*{1h{{A&LC%1x; zZu!&jrUBiFd*0{InV&!Fy?>9BJfzv;UMH?!|ANhGl5%O!?`X*lI#{waT^zVu@`>^N zGFIi*p>}L`Hfmm~>NlOJ5*Ul&-V%dk0)oA9UAXZ#jL9Z5aAt`bSO+;dZ$(6On@gV& z^lUh6I%*iRE-p3Zi;Dx?7B>!{q*K^9VSov_Yr}!|c+VIc2Tt4JB;ttnqj)SOBElG6 zMHLuuJpql|8tr7(R`HkYn}9cL5vLHh4^`148~`u2vZkhE#2GTdf=#perh`g^ZC2B0 zCk7&)?=vNw$1>yUA-)1zH>^1VN9O`30}G3b+n+?}y7K{J(K5^q9olmKof{y3munC? zVjsr)ZgrNi!QaO^ByebS9w=UUiO}d;jrpTtz~0^pm)D_*64*8Qz1smt`x4=9{s0yj zCu(MRw;a&z8WOS?@DdDk^}CH#$HV-4c;I-PWSLpdEJm5CSMzXi_6Q&uAim45G%*2g zb!`U(5Nuj7z_Y0XwILeFj0%QtztxA=V^#j@kk&69GA{#h{8;SK(qa4zHd@1HN`fV1 z5AyOINE*hO4%*< z)r;$qImCO*u)cg9YLe=D+gECkMe|Mzr!fF`Yg9AQ|8*Xh|pnc)oQl(v#;ZoT_r zaWLP{YuRnV3lB%DRPu#Zhh>ekDYUy!HK;-O}%$3{sE-^Z}6=0dCV_n;sJb>q2= zzFG?EU;ICK4daq}!wpGn3mK_1z`{j86w<~y4ra@>t)L-&#G7p&6j(p0uDrLCQjMIw zNRXTiY|CQFGc%(&7m~|tLtMXx4z1s0$~8byP(~1BuP!2)l&u}V5w$gsOjyQj`_RPY zA$W}7SsLce^>_yKrKo=ZWv8Z5C1!0QCclu`u1K}jadDLM+MM-b@oRGaIX#tBEC1b8 zBF$F3z%~5Qmr4jkp6=!rJ!Fqe0eDK&2GS}`6icMb*#qkLC}oEu^nQ^-Qk1k#okn(B z_e>`{!tiw(p9azYCf2I}c@?&u^P`_x2#IXW2}X|f=mcM&myLR3Do8&e1S7YX(|e~6 zvOL##ZJU*$US7}xPl8=HLcZ&h@UuPHH~M@<2fPp+iHqII;`r*BKDtrr*)Kb?8M}kH z9DsBh?QWdBSy1Y=rTH*N+w-52^DoENhq6*+1r>`*U{!7KQLe$1SlHc}8U_|^2jbkl z|AMi9-s?cog*A$(R?*B*kvoZ^dAO*5Nq=a@czN6Pq?q)}hh^}#lHjz+tS=+7eD;$x zbMG%`k61xc=}`hZmx{AE;>;?xakXmYo6Z)?KsnG-1=Dw3dU= z!9cK&dvn*Uo)jHpD0lVun!CyUt(i83n{@|2o2)1iHGS`tl$*2rGa>#YXpw-VvRU(F zu&hO22{l10C8v)72lqUob%^!nB%=tH0wj{V2M-FV5SFAL`o`=gG6{7?E&sMK3)|`B z53@N|I0R$;yI29MTnSP`NyA0ofoz;{M0MzK*%$k`zlH7 zcxKtT#;sqnsMXo^W+Yn1?J}jFP}VRa!tb};YN13l7Q+fC6AC~wAoUA0(Gm{QQA~;R z4bR(?FS!%X7~Lyu8(_8^)IE?Nl}oq(c77z>WsC%gK&O72kM4KvSTV7frg zfSRD4k~8nf+xqNpQ3t=%KSv$W8UHrwI6L?=>QJ9)b^fvZ;7Q3BUS5szD*P&w#dRy# zyR3#GN>je)k@J&sHR4$9KZ*Q%G^#=t88vfj&&hYsq6$dgJL^O4Hd}*!DI1Hlq6W#R zMyqdy5^^nN#*a;> z{bbUpiu>$|w}jloIdw&NbF6xa$jQsFjRVIo9_$d#ju#l68>#m*2&8ePZtWw0Y3^IJ zvKK04^oS5N`z&XpTEV%I>Ifd6r`VKl^q*0WI%oblEB1g$y|}cB0cG=SUKi)C<)wkn zx=_|M{+57q=X!MEmRRJUIUD6ivT^UP@S#@_i3+jyP zsRK`^H_W9BhCb4+wcxbHg6NxIjvZA&uqr6X~c z=3mtkkW?-r_=^H{nX3e2=U&=}F&bSWGYA$tt0_NC8_yUo<@4bM=N=St_(sx{&zi-XHlO`|FbR;gDUvs-$NCBo20bBXYBBHJ?&gU+Zm&-XzpcNNdU!-2Xl`RfbF@LdHdJ#p`v{YZJr!swo^8j zZBZuCMK=F2<^F**-ehL|cPydjLyf_HP6Ite1)3{JN!?uTGkvHbh?b0(-r}@v$t$Hq z2{eF#2i%5D@73-U@P)_(1sinqkUHRBIzM`wKs+1zv^Mbv&dIiGP%v|KpADm!k2%<+A>$9{9-d zrw7GZJzGyc%XNRIbbP!j{YZGaA26m&P1Snh{?^vT#Y6rmO)r{T?N}I=b8&Zf2fUHx zQ94@E&uzkf*BQW$dowaJy6|=q{EJcvA#H!;EF#^TU67TsPiuwGfvNRoUqVr3wWFXq zg}UGj!jQwjkW-pzz1_0=D*5*7wgE}5V%B_hx+c>s)(+( z-SGJ9%btEqkQr0O;d(mT(_D%ZT=ZB|RMI-g@SD|G*5|g_D0gG13?X86Ivjp(LN~1; z$OVO4eBm*CoHpvWbH2F)E7XMe>=~Tx@81O=G6tN-w~H^?hw$H?x;=No1 z%#S*Ad%L9N&XA4WDN#zHou#r&cS=@z(r0R`c2 z&JWhY%!c&8=(dQ$ptTl=mrjT_-tJz?{QG5Zs&FM$%X0KG)z|+;H+Eqwye>(TLZDMB zH)%;|C@nL-oUl8PWJiXl@7+Ep)Pm3Zk7>RSwZG2HOsC|rN=k%OwZ*&mVG+gPs$b)1 zq%uJiqpB&pr#!#MVWQJ?M(ot;qtt2Lz02{m2YfkzWkFT#^}i5_E7HlNZ`BtoCZkjj zIXv?S)(?JfI;9k_X)^?<4V2b_BQXpUN)ar*Djmk{f_9Vx%)N1UR%HNpQ*!Q`d{fym zn@JAH*1szm2eDu(NO$bXbSrj*ynQs~OI@-tu**YXa8pLPifQLd7AHw-Ii;dldSA8G zzGC>_khFa1CDqyLxAT#t#UXD{IDS`2D|XH`;i$D@_ZfjGAlx$4T5%w9T29FK9Q~{? zW46E8F7k}N|6#hI6atC{o$dM3Q!+ASip_(UAo|fkX4UK*d>$$yprS3ZzC0=avA)$`mgGQU~!plevgXmym+)q z?YkFHlQ%SSy_Vfpf!X3eK=R`LKhvEygDIyH(`?jBTt*}^<{T@ zdeA;(mbmL2Ct`JmXuRB@{nJ?M=0VvPE69(7!b3kH@}SM)j=}(CY(Xs5tR_;=gOmrO z;I15>>zv0Z^!RV26f+b_?gC)lx@Ea}9q{QSzD})UK{vRr|p`QQ% literal 0 HcmV?d00001 diff --git a/html/classcore_1_1TLSServer-members.html b/html/classcore_1_1TLSServer-members.html new file mode 100644 index 0000000..aabbe9f --- /dev/null +++ b/html/classcore_1_1TLSServer-members.html @@ -0,0 +1,129 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::TLSServer Member List
+
+
+ +

This is the complete list of members for core::TLSServer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
active (defined in core::Socket)core::Socket
blackListcore::TCPServer
bufferSize (defined in core::Socket)core::Socket
check(std::string request)core::Commandvirtual
commandscore::TCPServer
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
ctx (defined in core::TLSServer)core::TLSServer
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getDescriptor()core::Socket
getName() (defined in core::Command)core::Command
getSocketAccept() (defined in core::TLSServer)core::TLSServer
core::TCPServer::getSocketAccept(EPoll &epoll)core::TCPServervirtual
ipAddress (defined in core::TCPSocket)core::TCPSocket
name (defined in core::Object)core::Object
needsToWrite() (defined in core::Socket)core::Socket
onDataReceived(std::string data) overridecore::TCPServerprotectedvirtual
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
onRegister()core::Socketvirtual
onRegistered() (defined in core::Socket)core::Socketvirtual
onUnregister()core::Socketvirtual
output(TCPSession *session)core::TCPServer
core::TCPSocket::output(std::stringstream &out)core::TCPSocketvirtual
core::Command::output(Session *session)core::Commandvirtual
processCommand(std::string command, TCPSession *session, std::stringstream &data) overridecore::TCPServerprotectedvirtual
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
removeFromSessionList(TCPSession *session) (defined in core::TCPServer)core::TCPServer
sessionErrorHandler(std::string errorString, std::stringstream &out) (defined in core::TCPServer)core::TCPServervirtual
sessionscore::TCPServer
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
setName(std::string name)core::Command
shutdown(std::string text="unknown")core::Socket
shutDown (defined in core::Socket)core::Socketprotected
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
tag (defined in core::Object)core::Object
TCPServer(EPoll &ePoll, IPAddress address, std::string text="")core::TCPServer
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
TCPSocket(EPoll &ePoll, std::string text) (defined in core::TCPSocket)core::TCPSocket
TLSServer(EPoll &ePoll, IPAddress address)core::TLSServer
whiteListcore::TCPServer
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket() (defined in core::Socket)core::Socket
~TCPServer()core::TCPServer
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
~TLSServer()core::TLSServer
+ + + + diff --git a/html/classcore_1_1TLSServer.html b/html/classcore_1_1TLSServer.html new file mode 100644 index 0000000..8053299 --- /dev/null +++ b/html/classcore_1_1TLSServer.html @@ -0,0 +1,324 @@ + + + + + + + +My Project: core::TLSServer Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::TLSServer Class Reference
+
+
+ +

#include <TLSServer.h>

+
+Inheritance diagram for core::TLSServer:
+
+
Inheritance graph
+ + + + + + + + +
[legend]
+
+Collaboration diagram for core::TLSServer:
+
+
Collaboration graph
+ + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 TLSServer (EPoll &ePoll, IPAddress address)
 
 ~TLSServer ()
 
+TCPSessiongetSocketAccept ()
 
- Public Member Functions inherited from core::TCPServer
 TCPServer (EPoll &ePoll, IPAddress address, std::string text="")
 
 ~TCPServer ()
 
+void removeFromSessionList (TCPSession *session)
 
+virtual void sessionErrorHandler (std::string errorString, std::stringstream &out)
 
virtual TCPSessiongetSocketAccept (EPoll &epoll)
 
+void output (TCPSession *session)
 Output the consoles array to the console.
 
- Public Member Functions inherited from core::TCPSocket
TCPSocket (EPoll &ePoll)
 
TCPSocket (EPoll &ePoll, std::string text)
 
+void connect (IPAddress &address)
 
virtual void output (std::stringstream &out)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
Socket (EPoll &ePoll, std::string text)
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 
+int getDescriptor ()
 Get the descriptor for the socket.
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegister ()
 Called when the socket has finished registering with the epoll processing. More...
 
+virtual void onRegistered ()
 
virtual void onUnregister ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+bool needsToWrite ()
 
- Public Member Functions inherited from core::Command
virtual bool check (std::string request)
 
virtual void output (Session *session)
 
void setName (std::string name)
 
+std::string getName ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

+SSL_CTX * ctx
 
- Public Attributes inherited from core::TCPServer
IPAddressListblackList
 
IPAddressListwhiteList
 
std::vector< TCPSession * > sessions
 
CommandList commands
 
- Public Attributes inherited from core::TCPSocket
+IPAddress ipAddress
 
- Public Attributes inherited from core::Socket
+class {
bufferSize
 
+bool active = false
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from core::TCPServer
void onDataReceived (std::string data) override
 
int processCommand (std::string command, TCPSession *session, std::stringstream &data) override
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
+virtual void onDataReceived (char *buffer, int len)
 
virtual void receiveData (char *buffer, int bufferLength)
 
- Protected Attributes inherited from core::Socket
+EPollePoll
 
+bool shutDown = false
 
+

Detailed Description

+

TLSServer

+

Manage a socket connection as a TLS server type. Connections to the socket are processed through the accept functionality.

+

Constructor & Destructor Documentation

+ +

◆ TLSServer()

+ +
+
+ + + + + + + + + + + + + + + + + + +
core::TLSServer::TLSServer (EPollePoll,
IPAddress address 
)
+
+

The constructor.

+
Parameters
+ + + + + +
ePollthe BMAEPoll instance that manages the socket.
urlthe IP address for the socket to receive connection requests.
portthe port number that the socket will listen on.
commandNamethe name of the command used to invoke the status display for this object.
+
+
+
Returns
the instance of the BMATLSServerSocket.
+ +
+
+ +

◆ ~TLSServer()

+ +
+
+ + + + + + + +
core::TLSServer::~TLSServer ()
+
+

The destructor for this object.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1TLSServer__coll__graph.map b/html/classcore_1_1TLSServer__coll__graph.map new file mode 100644 index 0000000..2c00328 --- /dev/null +++ b/html/classcore_1_1TLSServer__coll__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/html/classcore_1_1TLSServer__coll__graph.md5 b/html/classcore_1_1TLSServer__coll__graph.md5 new file mode 100644 index 0000000..7326fe9 --- /dev/null +++ b/html/classcore_1_1TLSServer__coll__graph.md5 @@ -0,0 +1 @@ +dc2f13eae5efc742871c3504408067f5 \ No newline at end of file diff --git a/html/classcore_1_1TLSServer__coll__graph.png b/html/classcore_1_1TLSServer__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..42340207dc8a2b54c8c58f63955310e376b78ad0 GIT binary patch literal 41668 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1TLSServer__inherit__graph.map b/html/classcore_1_1TLSServer__inherit__graph.map new file mode 100644 index 0000000..7b1784f --- /dev/null +++ b/html/classcore_1_1TLSServer__inherit__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/html/classcore_1_1TLSServer__inherit__graph.md5 b/html/classcore_1_1TLSServer__inherit__graph.md5 new file mode 100644 index 0000000..2d32aee --- /dev/null +++ b/html/classcore_1_1TLSServer__inherit__graph.md5 @@ -0,0 +1 @@ +e34668e950c9a9ad7c2c591f08173e97 \ No newline at end of file diff --git a/html/classcore_1_1TLSServer__inherit__graph.png b/html/classcore_1_1TLSServer__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..45a1508f4509fac042a642904b5e1fab08c40498 GIT binary patch literal 18019 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 + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::TLSSession Member List
+
+
+ +

This is the complete list of members for core::TLSSession, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
active (defined in core::Socket)core::Socket
bufferSize (defined in core::Socket)core::Socket
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getDescriptor()core::Socket
grab (defined in core::TCPSession)core::TCPSession
ipAddress (defined in core::TCPSocket)core::TCPSocket
name (defined in core::Object)core::Object
needsToWrite() (defined in core::Socket)core::Socket
onConnected(std::stringstream &out)core::TCPSessionprotectedvirtual
onDataReceived(std::string data) overridecore::TCPSessionprotectedvirtual
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
onRegister()core::TLSSessionprotectedvirtual
onRegistered() (defined in core::TLSSession)core::TLSSessionprotectedvirtual
onUnregister()core::Socketvirtual
output(std::stringstream &out)core::TLSSessionvirtual
protocol(std::stringstream &out, std::string data) overridecore::TLSSessionvirtual
receiveData(char *buffer, int bufferLength) overridecore::TLSSessionprotectedvirtual
send(std::string data)core::TCPSession
sendToAll(std::string data)core::TCPSession
sendToAll(SessionFilter filter, std::string data)core::TCPSession
server (defined in core::TCPSession)core::TCPSession
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
shutdown(std::string text="unknown")core::Socket
shutDown (defined in core::Socket)core::Socketprotected
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
TCPSession(EPoll &ePoll, TCPServer &server) (defined in core::TCPSession)core::TCPSession
TCPSession(EPoll &ePoll, TCPServer &server, std::string text) (defined in core::TCPSession)core::TCPSession
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
TCPSocket(EPoll &ePoll, std::string text) (defined in core::TCPSocket)core::TCPSocket
TLSSession(EPoll &ePoll, TCPServer &server) (defined in core::TLSSession)core::TLSSession
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket() (defined in core::Socket)core::Socket
~TCPSession() (defined in core::TCPSession)core::TCPSession
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
~TLSSession() (defined in core::TLSSession)core::TLSSession
+ + + + diff --git a/html/classcore_1_1TLSSession.html b/html/classcore_1_1TLSSession.html new file mode 100644 index 0000000..903fd84 --- /dev/null +++ b/html/classcore_1_1TLSSession.html @@ -0,0 +1,388 @@ + + + + + + + +My Project: core::TLSSession Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::TLSSession Class Reference
+
+
+ +

#include <TLSSession.h>

+
+Inheritance diagram for core::TLSSession:
+
+
Inheritance graph
+ + + + + + + + +
[legend]
+
+Collaboration diagram for core::TLSSession:
+
+
Collaboration graph
+ + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

TLSSession (EPoll &ePoll, TCPServer &server)
 
virtual void output (std::stringstream &out)
 
virtual void protocol (std::stringstream &out, std::string data) override
 
- Public Member Functions inherited from core::TCPSession
TCPSession (EPoll &ePoll, TCPServer &server)
 
TCPSession (EPoll &ePoll, TCPServer &server, std::string text)
 
void send (std::string data)
 
void sendToAll (std::string data)
 
void sendToAll (SessionFilter filter, std::string data)
 
- Public Member Functions inherited from core::TCPSocket
TCPSocket (EPoll &ePoll)
 
TCPSocket (EPoll &ePoll, std::string text)
 
+void connect (IPAddress &address)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
Socket (EPoll &ePoll, std::string text)
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 
+int getDescriptor ()
 Get the descriptor for the socket.
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onUnregister ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+bool needsToWrite ()
 
+ + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

void receiveData (char *buffer, int bufferLength) override
 
void onRegister ()
 Called when the socket has finished registering with the epoll processing. More...
 
+void onRegistered ()
 
- Protected Member Functions inherited from core::TCPSession
virtual void onDataReceived (std::string data) override
 Called when data is received from the socket. More...
 
virtual void onConnected (std::stringstream &out)
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
+virtual void onDataReceived (char *buffer, int len)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::TCPSession
+Commandgrab = NULL
 
+TCPServerserver
 
- Public Attributes inherited from core::TCPSocket
+IPAddress ipAddress
 
- Public Attributes inherited from core::Socket
+class {
bufferSize
 
+bool active = false
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
- Protected Attributes inherited from core::Socket
+EPollePoll
 
+bool shutDown = false
 
+

Detailed Description

+

TLSSession

+

Provides a network TLS socket.

+

For accessing TLS network functions use this object. The connection oriented nature of TLS provides a single client persistent connection with data error correction and a durable synchronous data connection.

+

Member Function Documentation

+ +

◆ onRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void core::TLSSession::onRegister ()
+
+protectedvirtual
+
+ +

Called when the socket has finished registering with the epoll processing.

+

The onRegister method is called before the socket is registered with ePoll so objects extending the Socket definition can initialize the socket before receiving events. Evoked when the descriptor is set using setDescriptor for the socket.

+ +

Reimplemented from core::TCPSession.

+ +
+
+ +

◆ output()

+ +
+
+ + + + + +
+ + + + + + + + +
void core::TLSSession::output (std::stringstream & out)
+
+virtual
+
+

The output method is called by a socket session (Session) and will output the detail information for the client socket. When extending TLSSocket or Session you can override the method to add attributes to the list.

+ +

Reimplemented from core::TCPSession.

+ +
+
+ +

◆ protocol()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void core::TLSSession::protocol (std::stringstream & out,
std::string data 
)
+
+overridevirtual
+
+

Override the protocol method to manage and control the session communications in your inherited session. If you do not override this method then the Session default will process the 'commands' added to the server object using the processRequest method on the session input.

+ +

Reimplemented from core::TCPSession.

+ +

Reimplemented in core::ConsoleSession.

+ +
+
+ +

◆ receiveData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void core::TLSSession::receiveData (char * buffer,
int bufferLength 
)
+
+overrideprotectedvirtual
+
+

receiveData will read the data from the socket and place it in the socket buffer. TLS layer overrides this to be able to read from SSL.

+ +

Reimplemented from core::Socket.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1TLSSession__coll__graph.map b/html/classcore_1_1TLSSession__coll__graph.map new file mode 100644 index 0000000..e9b0b75 --- /dev/null +++ b/html/classcore_1_1TLSSession__coll__graph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/html/classcore_1_1TLSSession__coll__graph.md5 b/html/classcore_1_1TLSSession__coll__graph.md5 new file mode 100644 index 0000000..8fb3f55 --- /dev/null +++ b/html/classcore_1_1TLSSession__coll__graph.md5 @@ -0,0 +1 @@ +bedfc0cbd5c9342939ccd53d02abe177 \ No newline at end of file diff --git a/html/classcore_1_1TLSSession__coll__graph.png b/html/classcore_1_1TLSSession__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..45078ecb7aedd2bad4ea956da9efcf815acaa43f GIT binary patch literal 55202 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 Ugra&Bm3<;0n4c1jP+YHJ#qQCfrKd;2#>PH? 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1TLSSession__inherit__graph.map b/html/classcore_1_1TLSSession__inherit__graph.map new file mode 100644 index 0000000..d274b1c --- /dev/null +++ b/html/classcore_1_1TLSSession__inherit__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/html/classcore_1_1TLSSession__inherit__graph.md5 b/html/classcore_1_1TLSSession__inherit__graph.md5 new file mode 100644 index 0000000..9ae11ec --- /dev/null +++ b/html/classcore_1_1TLSSession__inherit__graph.md5 @@ -0,0 +1 @@ +54263034a10e7fe01ef882e41c86688d \ No newline at end of file diff --git a/html/classcore_1_1TLSSession__inherit__graph.png b/html/classcore_1_1TLSSession__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1a3b339960d3db8d4d1999f9e4973f8096efdea0 GIT binary patch literal 14969 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 E7oLgV>;M1& literal 0 HcmV?d00001 diff --git a/html/classcore_1_1TerminalSession-members.html b/html/classcore_1_1TerminalSession-members.html new file mode 100644 index 0000000..9e78b10 --- /dev/null +++ b/html/classcore_1_1TerminalSession-members.html @@ -0,0 +1,135 @@ + + + + + + + +My Project: Member List + + + + + + + + + + +
+
+
core::TerminalSession Member List
+
+
+ +

This is the complete list of members for core::TerminalSession, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
active (defined in core::Socket)core::Socket
bufferSize (defined in core::Socket)core::Socket
clear() (defined in core::TerminalSession)core::TerminalSession
clearEOL() (defined in core::TerminalSession)core::TerminalSession
connect(IPAddress &address) (defined in core::TCPSocket)core::TCPSocket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getDescriptor()core::Socket
getLines() (defined in core::TerminalSession)core::TerminalSession
grab (defined in core::TCPSession)core::TCPSession
ipAddress (defined in core::TCPSocket)core::TCPSocket
name (defined in core::Object)core::Object
needsToWrite() (defined in core::Socket)core::Socket
NextLine(int lines) (defined in core::TerminalSession)core::TerminalSession
onConnected(std::stringstream &out)core::TCPSessionprotectedvirtual
onDataReceived(std::string data) overridecore::TCPSessionprotectedvirtual
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
onRegister()core::TLSSessionprotectedvirtual
onRegistered() (defined in core::TLSSession)core::TLSSessionprotectedvirtual
onUnregister()core::Socketvirtual
out (defined in core::TerminalSession)core::TerminalSession
output(std::stringstream &out)core::TLSSessionvirtual
PreviousLine(int lines) (defined in core::TerminalSession)core::TerminalSession
protocol(std::stringstream &out, std::string data) overridecore::TLSSessionvirtual
receiveData(char *buffer, int bufferLength) overridecore::TLSSessionprotectedvirtual
restoreCursor() (defined in core::TerminalSession)core::TerminalSession
saveCursor() (defined in core::TerminalSession)core::TerminalSession
scrollArea(int start, int end) (defined in core::TerminalSession)core::TerminalSession
send(std::string data)core::TCPSession
sendToAll(std::string data)core::TCPSession
sendToAll(SessionFilter filter, std::string data)core::TCPSession
server (defined in core::TCPSession)core::TCPSession
setBackColor(int color) (defined in core::TerminalSession)core::TerminalSession
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setColor(int color) (defined in core::TerminalSession)core::TerminalSession
setCursorLocation(int x, int y) (defined in core::TerminalSession)core::TerminalSession
setDescriptor(int descriptor)core::Socket
shutdown(std::string text="unknown")core::Socket
shutDown (defined in core::Socket)core::Socketprotected
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
TCPSession(EPoll &ePoll, TCPServer &server) (defined in core::TCPSession)core::TCPSession
TCPSession(EPoll &ePoll, TCPServer &server, std::string text) (defined in core::TCPSession)core::TCPSession
TCPSocket(EPoll &ePoll) (defined in core::TCPSocket)core::TCPSocket
TCPSocket(EPoll &ePoll, std::string text) (defined in core::TCPSocket)core::TCPSocket
TerminalSession(EPoll &ePoll, TCPServer &server) (defined in core::TerminalSession)core::TerminalSession
TLSSession(EPoll &ePoll, TCPServer &server) (defined in core::TLSSession)core::TLSSession
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket() (defined in core::Socket)core::Socket
~TCPSession() (defined in core::TCPSession)core::TCPSession
~TCPSocket() (defined in core::TCPSocket)core::TCPSocket
~TerminalSession() (defined in core::TerminalSession)core::TerminalSession
~TLSSession() (defined in core::TLSSession)core::TLSSession
+ + + + diff --git a/html/classcore_1_1TerminalSession.html b/html/classcore_1_1TerminalSession.html new file mode 100644 index 0000000..783de48 --- /dev/null +++ b/html/classcore_1_1TerminalSession.html @@ -0,0 +1,284 @@ + + + + + + + +My Project: core::TerminalSession Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::TerminalSession Class Reference
+
+
+
+Inheritance diagram for core::TerminalSession:
+
+
Inheritance graph
+ + + + + + + + +
[legend]
+
+Collaboration diagram for core::TerminalSession:
+
+
Collaboration graph
+ + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

TerminalSession (EPoll &ePoll, TCPServer &server)
 
+int getLines ()
 
+void clear ()
 
+void clearEOL ()
 
+void setCursorLocation (int x, int y)
 
+void setColor (int color)
 
+void setBackColor (int color)
 
+void saveCursor ()
 
+void restoreCursor ()
 
+void NextLine (int lines)
 
+void PreviousLine (int lines)
 
+void scrollArea (int start, int end)
 
- Public Member Functions inherited from core::TLSSession
TLSSession (EPoll &ePoll, TCPServer &server)
 
virtual void output (std::stringstream &out)
 
virtual void protocol (std::stringstream &out, std::string data) override
 
- Public Member Functions inherited from core::TCPSession
TCPSession (EPoll &ePoll, TCPServer &server)
 
TCPSession (EPoll &ePoll, TCPServer &server, std::string text)
 
void send (std::string data)
 
void sendToAll (std::string data)
 
void sendToAll (SessionFilter filter, std::string data)
 
- Public Member Functions inherited from core::TCPSocket
TCPSocket (EPoll &ePoll)
 
TCPSocket (EPoll &ePoll, std::string text)
 
+void connect (IPAddress &address)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
Socket (EPoll &ePoll, std::string text)
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 
+int getDescriptor ()
 Get the descriptor for the socket.
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onUnregister ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+bool needsToWrite ()
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

+std::stringstream out
 
- Public Attributes inherited from core::TCPSession
+Commandgrab = NULL
 
+TCPServerserver
 
- Public Attributes inherited from core::TCPSocket
+IPAddress ipAddress
 
- Public Attributes inherited from core::Socket
+class {
bufferSize
 
+bool active = false
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from core::TLSSession
void receiveData (char *buffer, int bufferLength) override
 
void onRegister ()
 Called when the socket has finished registering with the epoll processing. More...
 
+void onRegistered ()
 
- Protected Member Functions inherited from core::TCPSession
virtual void onDataReceived (std::string data) override
 Called when data is received from the socket. More...
 
virtual void onConnected (std::stringstream &out)
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
+virtual void onDataReceived (char *buffer, int len)
 
- Protected Attributes inherited from core::Socket
+EPollePoll
 
+bool shutDown = false
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1TerminalSession__coll__graph.map b/html/classcore_1_1TerminalSession__coll__graph.map new file mode 100644 index 0000000..4a36ad3 --- /dev/null +++ b/html/classcore_1_1TerminalSession__coll__graph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/html/classcore_1_1TerminalSession__coll__graph.md5 b/html/classcore_1_1TerminalSession__coll__graph.md5 new file mode 100644 index 0000000..cd7459c --- /dev/null +++ b/html/classcore_1_1TerminalSession__coll__graph.md5 @@ -0,0 +1 @@ +0f013d9bdfd886fcb0ec593fbba6edda \ No newline at end of file diff --git a/html/classcore_1_1TerminalSession__coll__graph.png b/html/classcore_1_1TerminalSession__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e4a0475898c0546f9dce9961a05c241c1897cfcd GIT binary patch literal 57882 zcmb4q1yG&cvLz8n&_Ey%JR!kdf=eK{ySux)CczzoyBsXIySux)ySp=+|J_%2ZoQhC znMzTi4&V8G)l1@-I^B<8`7WT!W z4Tzqsk~22(kPTG+hB{7`naLmQ*Fa{kt&2=RH&pH6!An2@FLW3Yv3KLRK9W3tRWo$= z)oRd=GiAta0gF!x%?p|5?PuQFa^pA8zj$>cW*ENz=a<){@&Ejdjyr(pGx*Ix*s%X#zAf^vd2|o_!E|*VI%@YU-y79q`WL z&vc`aKU`g1$3w!h4H>X1zC3?OOE>!Ud4O16mm0?DSFA57$9Auj=gwikNxW;w6g1FbRmm#!7*cf_eIDF}H523GaYNUE)fS7R@n3#fD<^STtn_?k2YA~w& zcV#3$+1MHyhqq%Ckm;)!CbsyK&GaINqw;wwv6J4S3 zS-kdgH;%3jzo*QWOEEtsi;#0=DrKfuSIeb!EH5!*MD?DG_5PVW3!ZCj?tL|LuSx%k z{9S)?N(I=+6NC)IQo1dJEA3*BFZzcpeI<4f(z_`r=KG zXiho$eBJ3oMpFKhEeCOM$bSX46=wUhi;UHMsoZL5y zt8+8%rUw;&zO2QwH+qhwbo|xBWDZHYHC#LsTf2dKb`{=`E{OX7aKCkP zBCAX3I#NV9s&K6R>CbZ5bwekYlOr)*CGFkign%bU>hUCTNaPVzUOJ7joU8^9lX>Cl z4a`YSFlHm46?;Zm2pxyNAnkYUfTx3Tje?j;8IU0IDW;GU4~|Z)PBhGhHo)*jxgn|t zWR?Jpe8%UdijpMYcRGn8L7~m82aMT1{oAy>b`=W@{fqV#<`nA>_V*t53|5rp3ybOL zNHl7M%e`ytogx_3^7&soBA)azqc*0co$E5s{xu7}h^U>j5N~LRe({|!&D4WDoq4yT z{eo3HUi0wJMGmczZqof~G~w+ITv5Cd0^c&tIjunr)}b^mcP+=fO;I{Ty-R_p z;TN&56q$FiAFq$lnZzxY`_cltuMS2(SERNpL$9o@Vnkzx;$E)4 z-%KJ6ZfUzzWnKBp<=92gq~Xv`B;!45d06lxOkK`BdUMkXqH+ln(X!u9L^8I?lVhZR z;Pbzbs!wb{OPOB3gCQ|#Kn>a0R#rDUeUu3B@FLVw>3xu?^O(2O+k0{*r`(H{fy1zr z7j|jPI*+fGf_03&=d>Uji+(4iUL-4PWuKQ`j&%r84G`LJG}03~x``hodzvaqT$Rq( z*z|A@h3W-UOulh{4ra;>0qNac*QVw62g=Up+uX@_v>@O$Tr1bUDausgANw`)9Wqj^ zKY&&1aFl%Zj>-$Um8j=Du^R@RfLeXMa`KY_)^n7_lxFa!FyQ>=&v>99vpv?xAT)y` z^Bk};bw7RAWl}d|0gL1z=QkZU;LpI!QqkU$ z<~-_v*5TFhK6nPldj{uZ`w5@()7Y|D4k>6ng!Jg@&z2w7 z-QfYUeO2k&-D$T#Z!g2x%8v)r8Ndb8myn&p*u-gs-=!Ep6-cVyGv z-j0HbI#j5(RmPFR578RUD0IEnqG!MwK%GP5`^>o*G;*!m@*1{7EsoARQxoLZ@PiD) z-d9v=aG7d#n5IkaWJW7hc_uG`4Td9BOw2wFkE9N; zEIOs>nlp-bcenovl@sbAvQs1z~~vH@PH#q z2&_OIk=_HN)_}!7S4pqfc)uj;LK`=Lj`dC0g=4JN?or|cd1K?_%%5)@Dekj>s2jIq zjaM>83`wLjpme%!N1L9CaMAr7wtR>AZxP{W zv0h(KKI~o4?S)ByB@k3g)g#D~I#y`IKf|ig`B5K| zfYyKyzOgh~uk_2HA+#4GS#7>uGPUJKUSslb-yOhhlx;yD=ie)rYi62vj@eGlI%+fnr_L&MMIaQf2Y-PsK zIdIgoIpCGr?zp2<&HMJ~W*H3m02A2=M|Lmn?Eo_ubI@@ZcnSl|G&1tt6K10)MI%%^ z=GbI%&yK-NnRMXp<{GEPRNMtOtVdVtK=~qT`@LSJ=F4Y~`NChm)*TM(`gntFy5Rgr zLH#EB^ACB;6Kz4pEHnT~O~CGR?@i(B9W6q2203|hxOATG=6x78{-#KwkHsY3FwyJ{ z-=bQJChWWx5|D1WBmEYG>a~H)>Ap(KQC!#5fo~XnxjTY}+ZZFlkM$K~R&4g!gbNWgm z-vAEQ3F>EpN?OK|5d+q^- zIrzkYL*6;(@~zH3NoOdTmYId4W}AhA;!ipsy@%Euw`cUrdCe}<5*hQgl6<;E=k-J` zVL7?s=sFv)lZa`))PW-i@cCXr3^RV$j;IAH5?u=mQ5$`4^m}N}dIe>Kr;3*JR$9I6 zp`qcX$EqxJU=R%BjX#rt5O5S0PJ~VCaw%@USl{KaWGBNWT&R#Gs?~V2NqK)yGz=a_ zrf!sewXa{f?pLxthu z6($7C(%&L6JQE?rU>skek;p#MfZtVD#_Sv#=^9N$#$6>sq;nr|xbV97iX_r3mb`J; zhz{VuvqfR)q%kUB+5&R42C|UQy&f`v4z|2Gbd1~xod6> zmKmwK^MgqhggMNpQV0s#O&V`qa@05n!noFWj=ix!PZ?en`9~qJ$;X$`_RzpN^FRW~6iPNG|Y2Uci{?m40_(h#e&h4cQMfLm)a$Y+ar+Ao^Ps}2L^-=48gRLBZ9ye zn;z`LWU_z9ve)FP5)TM}pi~Y+`7&#@-u;?C)ZLR(MSL`so2Tw~UreUjFJzu|erbjc zx~oGzTDx8R=cJY^?Oz;XCe$!>Va9Jcv;;5xWXUb@jB2BI3WbK!67f2<~6-TdL z7? zUNu#bD$=CPTD98iq2JGaxWCzY zn=311sBk=M5}{OWNo{3CRIvu)iy(JEma6u}ZkuW~a(~rQV}U(dc!%*gNz`~@s$QS* zKc_iA5>2e;yRI(9Se6+C_>rSy^eU{L5>-ym0fd5PhU9~`-`;-CPE0Tzn5tHAHX$gkLO&P&RGBUL2T0N4*Q^5^FHg@eBEWh z&#k8l7eHcqcn)3F)y%oL0_&+=2XLMAX37pA$clrYvNPxKnOIz~?j`t&ku-x+O;O`* z(({B4>w?Ea2xR|E7iumwg7cS__Ret)(MaKw7cz?&s7oq6JfJ|9(_3w48rj=Wh?*h< z2fT9N&fgx|Y;G{@c^|`HttU+j$BCj7iC!mN9+(X0E9q6Ny(N#RSL5F3?f5UlLy^Yk zkB?^F)wr@mQa9~q*rRE6NLP|yU(O9Mn8r>Qev*F<5n3`}IXoyRBmIdro*>|4tJb6& zccIjL*RFfX)dYLK1CFrfD#RZ8-T3pNWdvjbIfLCUNgXuNm51;(yUAcc2M9uSDXx&(o^u^$7?oT6GyRn?i!+j7o1m9r#Wzpo8;Q5C7 zY}N$!08Ts^L7FWYIIJ+(tT=G?e*5}j1AhY+G5wj8l)Tu0ZMEEt(H}n%2oheo1((e1 zhqs^GZNk!f0-odU!Q2pyxvGFI>&=8;z7Eay@o6pqbP%OlTPP^EJE{z|y0~kQiL|9; z#Yw!7CnXl+3c4MZ%+j>lPRmV|#12SW`HdK08JbV&VKKmf5@I??Ul~}H* zude;GsTq7=Jttc!2F#AfbQ-QBQegd|g8LWeS4)r_g(8Y2*D`+?#P_owc=?5&EiWhp zp4VhliKWvcPhy=|-H7RX_7z&W+{k5L{KbtWkET?aY}WhpF>|bMx6zpNl{QD}k+UbD z7%&zb(S@GOKUwRIqTzhHN34MOvFFQ@#$>2V95pR@X?QG1{L7c;>zyQ?O_|0@8ZV2E zZKAu`&$Y8q7tT6JTTxpi=crhXL9ERaBe*Y7ObHmex^x)C=KNAr6 zr2Uu!C*6;jnR%L4^ScZZ-u<7QF&E3-aYW_vSmC8ccoysR+~?U5bnQ$ag~jmk^3q!@ znseUfuyh1`kYx+$_C~^E@9vMIw^=Ud9+xf~I9D?Ue`pi_3RReSd(!KumF(XJM;P`;Q5TIrlO1I=Iv02)X^H!N# zOQ}D9SOt=g??ScJJN%R{K_5rN`QyMl{8V{C^~0#sX%B!xn#q*2u>cB>T=t(0tPEzXN~rF30KSF4I3ql_gbJbl%ge zfV@p3px=75K-e=LT$}z~h&J-owTfqgHS%qNSl*M$P!;Z*lRvJ7$UKUePD;I>pW{}W z4+N}29<0Lo|C#X0?fJhFUdCiMW@mhiW+CZY21yZcS+6e{u8pa;&|Ow?2Sk&rVjt%u z;}xiUO#V98H%*5&&^t?3mBV|_8;_iA(YK!j-D!VbPwBBO(g>{`kh=D)yG2! zSSdK-Lr0;+XfP*rag0oV8k_Q)>!=bFE|4J9l?IECP%rHzvO3dR>N!@RXrXSMUC-A9 z#zk=Y#NFp?<9;>=jOQ3TlBIQ~kz|V0{-LIKT7B%?(q)UrYiRyOIx$V31HH&}cXD?_ zj+3k&@#X0*yx}AiDRIUv_|5gBr$zO&Bhnp}s^-yE@;)v{5{G}6|5C^5f?b@$H5Zcj z+4>T-K^fCxf0V{z+FH5ftXoqY>I>qTQ#b6F#O?#=f8)K1DFeFg6$-t`GDTd-u^DmX z*m~(PnJxY4ESKL`==j;@E0yv0oO7*Rd-mq!Rz$%P2Zc6jNwtRFk~JOH=f|S)Nv&Ry zwy_(NqlREd9BQ+3s{fViQMq9n6*wWgEZ6nWwP)3lv&>OcH_G% z42w1s`O$}?bc&`FsYQfS<_ZOLZ>9H)yhT#AtQ89G4H5g5WihL$c_hO7^!q0MvgXjL z(!U{KJng8k9~z{=aD;5)X`Q`6eVZ9~b~cyNu6TIT{0ar>2us)(y!YE2Kce75LJt#Q z7i#TfYVG!-Ym&T?bHl>3aA?eC?R#UW`L_n`Ksr686QN;hn?E5*V7`a6WST21TFBwy z{v-?vvveSfcBvni`iIhM@lu9TQ)2Jk`4eJCZprjx-VV^&3|NRav-kbMVaTl%nCrta znc9B?6It<}#)-!K<7|!SVi6spg3b)#By*M_Hyj1%1zAwg@L%ha?wjKl6xRIOJd;HC z7bE$_SWiwQd|@RXUCRkclB%bL^Y~tAHVy zKPE8ZcFolxDi;u~vAqpfE9WEGbPY7&-V|7p{GX&?BXZHstlsa$Kq+4MRK7eh`}{v< zu^w}P4+Nwj;VNtPgTXKnM1*uVceutAmt4P)_}qVNeU*8oEEe}Fk#sGihd0?&lfAiJ z{j7&+-k0Ofq1arVi#>(JmBCQ@k$y6&ec^!XUV@kFv zS-5C%T%zXw|A8|c0-Ry?X4sL_U4M4DqXl{bQu3GOb9L9oBatJPD@T`AgYgkAo#g!V z_V=jSd_}KpY(IHO+{JNN0gg~O8}@f26+RNxK=0#2?8O$Qx!2-mE7uw3`Hc2UdMrCs zo^>*520aMC)~;?3H`ib7|Kbm_8{{UTb=Z#o*AJ1t+>c0-g}o`fwnBZ#7M&S$et$!YOYdIqeZXm04A z%5JWSL&`I%3#`oA65TwG{oC+G9ji#~G%mFBB`7Q?9|KeBY6(SMIAoIZZ&AMKO}Fpv z?@RgrnQ$&GofZf(w~8NHO6+m6QFa)Wa$kmHM6%N^b70F=$PwzIb;;qpU}M!+k^Jn1 z1*kh-rPrq$eTAW&GX}${nNaulHX2b8e&zXUb#x6B%zMsfpio8! z$q)Nuus%BFtjN(~u%(q1$nya6e=hxrCN`tl=A#4H8O`RO`p?g=zu0tS5tHys{8TVi z8k~L##L#q+Gh?asSXgh~*RlzDOYutLytC*)b$POi z5iL;nLOvtjcMELV{lQuIC^y&S<}AR&@ABh;cLZC*PvvBL_O2&;(T zSqDwE(qVtpUpTC`m>NqG0Gyu2R+voX;;z&rGFxHrN#)373)bE}+-xBVM_IRzo%N6& zMGzmQj~M1CjeTR&+4QrE$9JqaPLOq*eovvP-Qj*ubW-xo%HUy2+^$hzT70yRrkE+ZJ#!hM#>dCU3BWRZG-F}yze-&eu{Wfv9y868<#9B-Jv$V}}GhsYqQtSQ<8x7U~ z2+p9u*K=$FRqfXTz1ixMYt%Wo552x+Wv>EWu5}hXlP)uV)DWpBs0F7g5ftDKq&8h&NEFEm)!UA*n41A~k z?uf}r+vVnzkHvnUH6Wb^)Yx7={HLJiOdHVjB4QezGjVc~gk@i}+*s=QHGdq)3wg0I z^65`U#{4hwrbPE&U$4Xf0uL>xI1GZkZb2FJ>Ee}-C@8dm0RI9Yo|YV= z1!oI+k!Wkz*4uz|O*%q!QP$bY0`4>(&{FV_lw{r-T;P{#)|O&+xg^>eT5{J;>5URe zog#KsltNRiwdDdenV>U;ieyeX$HA7Z>DWrM!yao)Klc z-#2g|V29c5cI#(Mvs9{L=-CIODTzmnzr_x~UNL<<&sW(RiqWtap3Qc>A^3Wvs9B;o zU46m~DD7g+mb>Y>xxqeF?@Fpjb7?;a*TUw0JPksKGF()-$Ke_#r2iw1o$9n>4CKrL zGGRiZJn(DP4o+4r1i8Nj$q#MVF3o=YRi?vQ2MT$@Xt{{HYJcT=2dsE+xN70Qwj5b42PM$wB z(APs;Pa}C#5)>+oVK1SRn~IAW?L%0xf+_ei#l34Thuj>0DGAp7W{vldLI0T(=4g)Z zB6xh_`}#0&dA$@lK;CY7V1qI&tLneC0GLn7UftvwhR)o8!1(Vj5^JCTmgR!qk*@1# zpMqS;JIT=S^UXW$nfja8ZnyQhpeB;tT3tOh#G-m&l7fu%t5{4796PF1Ch}&x+$uUZ z_)O%zBVM3VC=`qjY!oA+$Do?eve{w*%%ARc>}rYYptCAjhDKzPI!bRqW%kY8S>Aos zBN7PmHY7>NyJ6`&(7^nm9qGrHbC^vp-fHdT%96G$d4y&umG$l<*T`2}zEF3{Uaepu;O7`#0mkx%LsxU#(KE!09 zq4b+b8Z6!%DBHhd3=^4a^AD!cb4C7ajY1l)-kdAv>v%R$i$)e{_hX%BT_4b1Iy0p& z5U?k)g86^+iu7V4usWX`hH0_=93B=7!G9-OVffpNe&^4X>FKd$-}0>;mibbM=FaFt zoEsSdsw(+r_F?mT+xyJ-50_J$1xvY-8v_Kqivc=E?R#EH{?cse$V$SK3>?{jsI=Ma z7bB9mlm@;i&j%TiEKn8-z;Ga7zyC}W@q5M;hK}o7mEB&C0H35XUxYW{?+L|%74o+` z0m(~?H6XE{J!L{0N5Nny8B)}^%M*;1slMOi&tL?Sk*r;+pxhhd3!64H9ifWP2G;11 z-;U*e-Rrp0+eJZ`p+1t=YcmyGbMfAY4FWeCf}cQSq5NG$Bv&@0G7wmIlBM& zV**o(piLy~`@vo|J2Jn%m>(~4B-6H0%@E%Y=8s8<a)AJE-U=TbgEr#?9TV7CO8m z|5znq%yjz!-<@l5eRD;SBCB65L-B2e;K(_SwoWkM%>Jl1VCCZSz0G@%f->N8M44*6 z@m@6X8eJ~0u{{L$i_vf@JJdqm)X?!qha=AQ?r?I$3atJ8^X-e;jH1XfXHHImpI()( zh$5g17`23pr88G;_b%xij`*cBg-`N5(pNi_Qct!rtuDHUGPzoB)*=EaEbIc3AcdBT zS4i*7+y5p>`ek>Y&)ZB_9x#lISlRAK3xMpeh#1JHb-cXf=kIUO^1D$8B0@zKlCS=N zvgB6f&9v0-XnZ)Bh^mi24Y$@mV- z29n0f>$qeW{?DIL_Ln?pWfTlB2#T)PLS^~^B06f^i{F4o{i>Qbs7se!qn0-@3=!}o zh9mmv{t&;sx!In`!dAu}(aovsN!0dxC(+`gM`%NDN5M+_V#Fj2fdQ~|5P;Hv<;4db zw0|sZ`FKz1gP_y`GGdxSkwWPPEdtDfj6tW~rTY)xO6`fa=oU8>ARNjtS(hMA5@bNurZF{cY12z!)>PTR$=}8+9_oovI zYNZEO2tMZm@uOo6F0Xo{DO&+fDPxY3l&Ogxtfw9Fyt1E2pBO)_mhT^OT4H;4Qu5j4 z&Bcw66<^@6zaHHWE#KeFy?*`rnW%l{PHNk|mq7kUr@Z}SwBletyjL;wZS*zl!5jV% z)2=Rj>b14d1cTg-U)>xCNXos84q2u)29nF>-x;`{I8!xA=V}DYit*@1&k-2SSO-O@ zS!9aTmHv4z=+K=VHDM@KAG-yhk%kq7M$wE$Uh@5d#iOMQ)|;Kt8{(pTpcNGR5n&3%qQVPPYy(;320(*sZzvgF2}NXG8(L&m zszHGkU^f3nHseuU)mFcqMT;UEeYu?89j}T%-pg_2dVNBy_W6V|HUvX-36!pCPdE*Qcka(l!FB6M1Um$^IMC-Fz&g zmpRH6uanrOw0a{8%1so$2nh7^9vTFcSvp>dr5}AH-Q5v<#!D6lzjbImXGeIEK(&Kv zf5Jfun|Kh7jU?csS!bWd~zbi_FIk(07D3W!3OZ>t!dym`}?K(VlwHpI*ZE{ zQ$%IvNlnH>LhItrE|f>6dE(uFNeU0^hx|1>S=jGjI*id$T}=$g%I!Wk<)KMd3Ug}f zeFFWT2x8CmQc?nmS_kTY#|MnF(>^^+wn~UG3tlLL-hk1{;i31=OxfqLYztye^+FY* zS(n)MOB zV;rFJipRAtWRG^WBKe}|Z&7F{p3eZpeNhifEDdE37fKL^}j*CZi3M?w(3dA@v zn9Nrn&yf;7U{-RzRJH!$Q{JjuT5P$JOuXG|6%({Q zL)`9O`UTRD=0+i+iCHz;I_!j4sFu#%L?qc4O{^*Qdv>~QSuTtB;t}c(iaTSn6>t=Z zB7SPCDu@h?nlWo7OJuQ$7=cWk_7GEUk9M%KE@LCWlEao-XTUc1^!$3qW!igxQ&;0a zO(qgb*)GE{{MZ%XXiFj5oK=^l zxx+u_be+!nH2cJ_Fh5#F+u$bLF6oJw93u}K z;_GT!dQ+1AU=;Fbs{+jbN}3^)TMF&*@h&kq<(olhSpv4Xxp{R>R0hw&U{KtaSWQyG zF+JyEpY1Hhk_h6*M;(vcM76G4sK4>1;Uk8dkkIJ#F{3!9qIaxG7xnDAdMR0vIJgIx z?A3&U=m#5@2X{*DuAikL6GkLs{r-&fWXFS*UVF7I>ARgxDFU_=!Lv}pUH2iH%F|b6Mnl){-r5EDwy#iHOlB|C)Lm>WZdVj zVze0PSi@=DdvsyvGl1RNZj~^SDMKjq4vA1K+4{_>hgc%w=_^*6Mp`n2fb*wGN148(XE8z?D7qA zu?yWdB*e`F*f)MJhNspb_+07g+F$%5t5URy7|8;1a!AtC3Ennbzq9cjB3Qm)G7NKk z>371+xo19HEr20B<20IS<1|>L(#2xa`cQO#iiDf(J$iUIkocClC;Dg(nfb(|vYph6 zLfB*uqGNDbgZYlmY56@Il3LdZ`PR%$6dSg$*j6fvphZGA18CP!s5$?{q<5CCFovyI zV<*hJW60E{+5X5{{vl5ucXPIaZRYeNPkqkb6E89<6(yoIFlc^sSMJ-43h#B8q@YNx#B?lb+S_vi`*BiBrNE5cAB8C+ypEq6yxQ zlFZ(Bpbb$y$vh&tyWU@WLL!C5El2`?Q^L-K1j*%Y=KXcGYt13){L#CeD;K%q0!env z`7e5$GKxxWbapfInwP!JCh%4PQ|fQ&>EUnB-eAMPbP^&$MzYJ1A?hTvxO34a3GDSF z4>3|1{R}$2Uik`0MxJiZN^fUySLwkuQG}AwtZnJ(PIh0}0j-y#dKPowsmh*AZ>vvN zWK)-#lsSH=ESq%l*Dqp!0Xc)iVjVT5-uK%lI$G1*r)Eux(W+X&Q)HpAekqro6-wme z=aoZQiYrHE!T$sGE@aTKVRA;##KZH}CHdX*P5rUIoFp1FUx{W2(n|l)n$b%1wE;?K z%8)aaz&-cVsxlzzeQqOI@LfVK_69ZSmNxkn<#s2m98ZhC?Mm|Dw=FPKany#-Y-O3W zDG*G$Pwds zAO2OTl&iv zdu}Y5k^jxnJ5>RSo@OIkFn;d6h2Cim<{`3U6WznsLr+a=S-vw<;$L;t8H?8xJEo{R zbXWrjSmlwfHwe$faGvsY5|$@-jM8A)OUYj;{7B1OaQI>FuINf1(;2p1A6)WuQ$c6t731MbsUESX1 zh2U989gf0GCKdGfdWw{ldT{AKIQd|wRn;61xx%BL_AnSY6 z*fym?jck8~2Sg6-Gc!8bFGlBxMlUvE_E_9*VVWLqUwFf9D6on9oI9&khA_MU)E)r; zLxV{MCs$4J1)+rPfh4;--^+^njtB84PF%A|Zs7a)e%pW^^55wy>YvYNK#B-zKZng8 zk)GY*L@Ax4(JET@e z{UgMlrXrrT&JS@6 zMk1A5(a6+fDS^qguY@JD;sED&`Z_qBgmjK;%LuS{(hav5{Yi7a;z`EYwV^RF7*L#? zoGh4Px)Jr4ckIsRSZZ~HddJJr@=YP6HLP}xn*e{(TWXe>dgQNlz1o?!VkB2UN(Vg9 z%%dZZE>oZqcV5KjYYf6KVx&0CmMDRIX;y0#im$1>qF@n&*W2F3JWE~b8|HFxx8kN} zc1kmA^o)1Mt+M6vj75{{KisI2TGtJaN#z@R_(X{CtXor33kGDNT^`i=Wg7_PnH&2`dltA zI@M;2RWz>j+uYDBDghfyEv6wuE?PsSe715`dZIF3>u!hvO9}Hwo$`A#E_l-TKQ%U6 zpJS-Jd&d)tS%9*+uQ$p!_FJApq0)8IAN7<5w|HrK{eJA%(B1&8dxUTnBF}tIDNByw zqT(JJnE1OX7a0-wLvi5-q2wx~&ru(s%%GH|4-8mm>CB<@;YU-EWNQ$sLDlHKeiV`ccyx=r|4Fuh1XmTm}6jqpY< zp*7zS)@QmeU)NvYyH`h|Q|8i{Dq>fx)rTdjk41LR)lsgjNKvTRf9e8&Z(mnKPy(=} z6CvTxf`|U_FA4xACeG64^UDg>&!V)$0}Oo9@+Oc(vN@T>W^up{zDcIEY)p$`^WHEN z2ymVyyMT&tx~8E59n#OH(Lp^N@3BqR&v&q0k6TRQW}iUeCiLKDD#a=DnQYOdH!i($ zY553zSby3}Zrs&v4SED?s~yOdrkK&>81C7TG@}`V=@XxSD3@4oXaS{U#Gb&uS2smR zy5;g6w(OodS`1vx)3>kW-GXCZxEb9^$n-XyS)-kq|oKQ`9Zn#;}l&wVhLt903(PrTxR zH6{e-rf7RhEJJB=On#w%7@+}y&DHaybTU%G2h98A`VSt?<|=;F^J1fcN{7 zOOh?b5eDdgvpt?PjAlx)KuseJ29mY`<;BQIa*L-*so{va`BGz%GSX-3NEmk3+EF*R zZ@ml-+E44B7~j49bgvyW+avp#4>gqpP9Ri0hHp7EQRxE=R&nggEuNE2HziQ1BYZ6W zXkhSWv)}1WaA#$f{KWQHq;!+Jn5B)4HfZbQZXy$8&tQy>>E^RpP!%Brv}V0~=@;7X zGG-^u@B-+3ZJyj2F7`x5(A;T#is_|D(7y{+M{I0Ar z92*obavpg`evJ9w{)PN<^-*{b`Er?ujimHgA6I{=aVO1MStp{2{cL*r2FixN$`^zc zketIriI1#5N>Si~eNtc1@fjQd6=Bh+;(-JTyj zcS1j4QKJ3bO|?gm6CB}fjkBpRj^ZyGn&U#!DUSy(j))$s^pN zai)E`1lMq;G=A2qG`J;I&Q45*AW6Ir==852u5=PPTx1TIdHir9tMa@AfYdSr6l@hb zIaHcw5zweVJJOMDKfMeT5?WK|5d*p?z+1(PWQo~v-eh=#_eI5n=&?Ipf)1vkzdLRQ zX4tx`C<-^dt-_y79S>MrprYm(h|e4kNv|z4Y5f#+^;IUwJ4|LYp>wvq6AP0@lNKnv zR)J=%q6QQhf89W-ixunxAXAymmeT!05smKUtbZDs{Fg z2iPHk2%;JHDc8@*d>u@xZ<{{0-KuZFa_FewSD(3#*q-Vli;E*gl15ZfD?8c`;FjNx z3y}5mdz(B7?!7QM9h0a#IbmsideE>)P`gf&ZmrnL&o+Gdk*N^X-CY6jw!feIS6Jp1 zaKmY|_y^XMAISWw^)lm3lX`8Anmwrn)OU4zugbcOEMg@nHI( zT?<+sA6|fz;|=aW@CKsGO@u_~t_*_9@4cTnNU#y55H9m7A$} zhH^Tq9Wb->#!oU3GUKC!j1Of+blY znJQjed$q=vltH4%K$-$>Yifa8=u$mn#CUk;+x9+#AtF|}Gh%>J+l3n)Uv}2C;+KcJ zC*hM-amJYwwl9;+qpu}F!35N~ZIPrZv~ku~*uRly(zMwWSgG>8@&w$^?Q81xyT>s0 zIqY^}^veh(LK#TmY-5kOT_fYJ1?f9U=pA0Bvox@y4JGrvz;j#rL-UXtHe4^XPQoYk zk<;}9H}{I^+-4Fnx_h=R<-hV;{pGCgWWiasKq$;}4|W%=VDtNkaZS@_eLU*;-;omZN&^qg+sZ_Y%Z=l_+E5&ky; z1$6Yg+6FP%8p__qN;NKt`_M_OcAi+@GPq=fJGZ?g&YXSOAGWlhTFFLOUM5~#x}98_i#R%>^+n@KKC2ND)^{8_Y_`m$8*0(SNHHOl+xz8)c69Hu zD^pV~Id8zltlDuc5crL|q@pSS6|%l5@8|x2MelNn1g;^;00jjB_WDeEk0FE2jx1Y2^Utmte{f z8O@h;vi8Z0xVP*m2!q;3lOg`Ebf(v=RDKBQ?C%!Zp+_S{Xt3k7+TU7Q-YJ%EyPa+g zxq#F(x@Q+VfKGwFcW|+~zTVvYYao`(gX!vUMxI#rbE&7c)HLTgU0q{!Jb9r)jKLD- zP*Rz;O@tVow-YP)DeaE-XWl0bE8k8^++4gru1w}1fylSJYN^`_o_mfVgO+!ev zbet5c7|S4)u-B~f;ED&r3rwTlOdysOl#~pcr7fK=RI37lRHQHbm1H={&Pw;Y(~er>li$OYj`Hi`AFp3qz(in zdLsD7YHX^0dYSP1&l>XfLB$St*)iQ!SiVfBUiGL>xNU#d*E@As4#%zGHptYj|1u#oMjl4Au=n*u&k`iio zA{nn-%zUL)A?%t=!$?sF$5j13EQ6OWV2>I;g2xD&#%O_*5G#0siF_kwA+yY#wNCz$JcKBYf%uJCq z*?bZ)O7Ctl>oq}{bkLYv*>Z^DaG?T1=C>y=PgO^3!A-Nng}`)eKBfwYVgX@M((>-o zXrzQ+83j_g`dY;vzP+Av!Zqgs?dGr28s0uI}BwWSz+_9r{li_UsypPdkMO zGU8kZotgUpOzdnq!rls|FB;TIs)}G8 zQ55#QnYH~*AC=xBZSm>sS_vVt@q_+Yr^U#*8dxq!z(~P&a{yB z6K|pAdG?$szO~T7MJ$>*8GyY!}v&H|rr48ilHV^bh${jef{l zM&kRvTvEFKVo5=NrJ$bi@T6kP`iLaB&PB`l()3xDRPfl^#-r$|{SCLqgA!e*+|E_8 zG|i#2zs8Z)3+_XPp|FVSI3zslz7pK%U%lT~N4T_T@8>XJsWfNMd&2r&glQmjP5g1F zq=(~#b0!w^Np-oEi{8-Hnwg`COPu}ty?NF^aK;fe`EeoqmVQIqcHlu=71z(73lV>< z3~4MRn7IKzBO$ID95+h48?uC z>eyLR#NtCrU4dI?r~i>eUJC+3==LJuNSXk}2+2!3Dg(lOJ^+R}P1JF+9j zB0kbO2!%ShKR*UD+TB1xXl%c6C$!*HZN)*1cQBXk0N+bAnLujMRhTWY@)C_CY&Fjk zpRql&G8CTB_+r^WhAVntho4rA=ya9_+^rSQ9*8m+BHRKQ>}tv4S()W{J?taD3m=Y% z6YvoVG@Nm%Eg4S-V_CrEFKs%d<73cLp!7G1Kd%HgIeyn*ZiWcVw6EYHQrXp=y62s4 zLs4jXdDY33%&+y)?DjcH60yfh!l#l43b3e+mY72y>igAE?I2XSnz?WC3%=Egi=*w` z@|G|qi=p;c5@EU z1Zp+sV;YzJXGZE<)9slYm{((2X{&oRzzACS)V=YQyLPBF(rv?tDQ z%(jPG!KL~mMMWB8n7X3ZHVYPnYd%2+Q@CAT^pgmP+Y6}Z!HKOQB57Xg^DXNr@KVkf zS?;}DsQ;5lTYH+RJ1Qm_Jb1UfRB%ov%_}J-`x-l1RV83yTKk1RZ3nhaJR$|{Vr={U zACn+%u@T;2S|&ce;jfdtsN~Vp*d&_V&ZtVgt&>+*UBA;?OW*GI4<-+t9kWxFu_fXf z=no}d^|QIrI8S`oe(^mf;1w7CcjF0z+qTd&9w~DwYy8I^ndWuw_}g~!?{smp$U>-4 zqA8DPrlz_;p#(LRhRh@SHC3XkHZyCHJ5PR~8p$&@3McKT^Aqbel>X(>&#-V2%Zed| zYYp9EEk`8lbH#G#6knW{MB+KfgG{*J5l(QdgUj;BYB)|Byhn?GJKKr;)1@KTvf2KH zQqXkfP%|D>xxw*4zlBv+?%VU@wE$elf+(i?2K-y23oQHi#BUSC>MP+r6iwNG13Wzu z_4_}1A!3JoVoT6pCeC0KZ)B|BDf>W69zVv#?uvN-knq1Kd+Vq^o^4-{5Zooe7k3Em z?(P!Y-QC^Yf;$8W?(Xgug1ZDK!3plu{LVS|&YQV!*1Wa&gSF^xx~i*o)&9t??W-wD zM|?QTfZAF{FhLs|+K~j9I7u>LSy_bsfq^!pB5`1y>1(u9*#63qbHJS}oifZtO3Afw+(m+4pCG4B4cVt&Z@)@}$v;F=Z)|1gkLBW+A`|#9hUf zs{QUySjyQ^`_0voSup^6;fJ3;-E_kHt-Z~4M(T?G=!6SNehtyE1V=!;zdDTTeSLxD zbUwg*Z;sXbbG2~fI1J!yLkUPMH>OBK;Dt{t%l}@_;m_3Q^8k!IeYFVCn0~9oVxVEt znX-9R(;`;JY#pJR7Bu%vFFhzQmN~_lv;dr6BEQj}FS67Mv}^P8n2L~0%NM4a#zx_P z-y|%hT<~a4&UVL+DN+LrJy-RN>Hma=$H{qGwq+PfQW)WG zuWD}pH?xQc5Ac~8f4J^?@d)y|D20(9KS)~JxO)5gaLzvdVw{tAm&hVc)?rU>)`=Tj z_WA7^X14j42PfI2oHKU(ucnBCa!P5b;b&Uffj9wzL+($)lH?VVnf3K&{Yz zpY34|I;?vz1(i?HG!r03xpl`4Mf(ltQYgSK{yGiMm%Y?kE$}C&D)r035Ne3cCTDo2 zJ!V9#F!Bu)8h7SUq?XMSbO9V4if|>DcP%oG|%5Dr#yBV~5T|$p1Lld2{+Qmn?zd-lSMK!zd%7p$s(j&s=WM z*RKeGA#4k1YGuw=5=E6-TxX|Iqm5Jw#q4$cROt5}lAo$thPp~zU<7f$iYNhynH zOz_Gfd+(>b0{zs7rGN6?yOo(+NyR5N120ycT@OqI(jhXA9pKm_QTa=YK2wav#-qHN z2-9>!1X*mleCpq1Df+UxL~1>+1SI9?wt%))rUJLG>p+TkdNKcVQ@<=KY#iGyt12w~aVQX(YJDE`fN48ur71SMcXkHW zwoZKpnj>l-?--FW3Hn8cqwATEN!0SJFx()8o@E=vGXd_n})r zSpP2291D86eSB+f4)v#BbFE{lFd2CL)HGRIoD6l-rZhTO49)_EZpY(x!&K?2Xr+Wy zG2E(?UrYc@_j6)aMV=o8y5)jbIWr$c**DN6&x*hW&yX#~pb}G#?%dhtc{+h&n$~%^ zpU9ZW;>w(g7#W)3>oaOPuO}UVq=e@1tvTSM5zE<4q(dM)HX?$DIrw9AZV3=0rceM; zC|{jL(x&vsyvEsPX@Iu&8nhoJ+DG=EXt5;qK8x#fD*Jy*cmU(N+x=dWu1>gc!~&|% ztVt>B%tbbpixpI4c4D!3U%+?mI10H!!%D~hchsvOxi5^QmMfmKwD72|OFk&g|8lgo zI2?Pd2r;B}Xz8VKclHY6ZAIsQaX|(ZaM8jrVF~#QtEpJzDSj@SH6bZyWy=Y&mW~(< z(B=Vtr^t|n8wQcfgJII+MbfA<*LvTP|MOL0xGl#g+17~`=8_UAl&?KDpwW$a9Pz`5 z_H^lkt#Nrq@k{;7n52rrlvA7T*ggm<#v=n3{#YQ)%1MzCo00r3EX(UPr20jZ;LIQDVTO$MzD_sAX3qNLz2u1ZMD*Hr0Fh3<4p}1bdiru3{OHYr4jg5T( z6Ny!*#MkaVl^-%D3amDg3JQnZ2u6VrdY05e262L2_qsY6i!pOV@nQ?$F#r;7pk!;pc9A4fGcE5Pgi2!ux3bWR|n6lO?QYUb+nz+ zvr0b-+EcsS-~rbJy@bpkV@E|LJGi?80V^69H=Zn5VdUcqiaY1-_Ck(X)dp7oT)S98 zrVMGzC1BQtbwX+4=*V^L1?BFZnX;m?>clrmHxI_~N*m%VgX;k?!@r~=+vNp7Q+V3L zWJGj&eXbxdh-_9245|-c^z_#s%&2X}5T%l+k+$u&BUsuzzKirz@)2RJZRzKd7yOK4 zH$JYp`*nac_mSi7msp4S2BAGXaCNcx>^eyINX=t)u$(#yC2baSO3ndaiBUD8G78JufhwTlrq4ZAJ`U zPVx5k_J}B-*y&$Tza~J^Ts(Jv`^-vgUk@eReTS!vCpaH~s-esTC*#K-b5-JIv=4u~ z{IDwdV>JP}Vg*u`@37R(K&!)YS!fJ{iL_6iD^D@`W1e(U*?dtLa=t_&g(VC{524Xt zug0`p6!$I;5)Of{gaa*x-haVq;h5QW>vg1hHUlN%`PRX0aBDGfTfIE{CWbFYCnm7q zm)85cyLlX>S)c~?zoM0kvAE_?OcaRhEWy`RP2gl}3w$6*Q6FqUJVMItv;#fgxcTrN zxi+GlEUjC~@*kFd@hJfvQ6NXeKS6lIU}8`aCq!)jwis~zj44#X>H{-|Pay3;fPI@0 zz_5d9BpQLd-ol<@)1m= zZ`%~+_zyA%G^Ga=;>dSCO~y_h;|YRXX8qtS{|&Lxs~lH>w#8O!;#9%PIbm&8v(F0R zvh$1(Ee@d-_Ap@*wqo^lOYku&)M1ijLE>`}93`qHhIih^Gm}&JcHP7v%q9#fjD^&t z=E>tG{hb-ZlA}0Rs^z){1XPxhb(wSoo9U-uQpt4?lzSc3Wz4{#z|=4cKJWHsJ!P>S zZz${bdb4GlgXm=y8@IT993lv5aLGqc|-%g1z=g7>8 z9c~-?tj$HXH-G-TM_2W}SkdA#8_ek&dU+H3ox$bdw*ol;tKv*hx5hkeKdaH03~hXp z4yLowj2OucHobk&J_c&yMIJ~y9Sq%zUT(7aJe%qhp-UaMj@U$3@!W9~tkK;L!BF!A z`6XX)XM9W}o*CSFCn>?lfr>jfJMi+HP@?SsB31tFgM35F_VZ-L@>`&QU+xu`yagCY zdl4+M?xEH-C6kf0q>9fD)ci$E6MKAoTv4r9P;Z>LGFB&YuOwH@o(rth(asX$JN>Q5 zbv_vxew27mbV7uN+h%#UtxVC5I9|@&&QbXx)2=LGC1-Yk^BQK}jsDz)kBhKrz5WP0 zhieZ6n59DJ8TLr9(uF0Nd|tEetZU&T*`w(ozfkm0>G zq9gV2qkPGz*=niaxSTrFb$BeOaVWGhXS!+2+|{@}e-n}JVQ^rjf|W>x+#L;?a%{EY zJNmfn!T8DgwJi*NBG~byOO^9GyIbedZcjy7kuc=S?+ z?&Yb++n11IMp}I_T6kwf<2sC#H#Y>c^KT35+Le#y#PDZ~Y53|a#r#aUP41qlwxcsF z!=Slrzck1dH$y_5X~tr%F-!pTQ67cTGo@*KhHc;g1z+5sGq{icK+0F=Qt|##W>gID)F> zrfq35$9~`IT4jth)9FBpH>5^JJPMe+x1_i3^7~f{5-Zugb|)`acP%{!&qj+)zMpv1 z{!YIsFZ4i`+O9#`Or-k9@I!+|M@E);n*#sePm$yHHMHEe+&t8LclqwgUgeC%)y7%* zPR14AQRT#h!86WO0Am5e9{;j6#sK#(;s~Mga4jr7>GB=q0)hH330dFj?hsRQeRD3; z7$&toCk4OWM^1I^IA;M&UlI3nS9IM04V$vM-LAjs)wYCH-ETNNX1KMvS)KkUdKy?> zsT<4cqpqMBreO$eOQp}r4z5)NR>DULI03h|=PmtXYtY1bM7V8UZ1O{PBZxx;okzAH z;e;Els0xh8= z$_@VE;}6kXy;@At8Yj+Eoi~{4~{D;*G!dy`6&FEYcLngtjN~f`F|N?0Q#4A;m>;URUT|*4>j7D@S6&(E%*-q}1SR zX7C4^Bt;#qsM%Si3 zqWHG{@O=7Zc1(kg0M)g_PM;e&tf={6Hi~;|fz6+UiSI*}{^vn+Lm8Bs4|yE*Kk#CP zY{xHxTDdycXB}P^UruY}x&mF)6+B>WCH<0R7bB#SmOtiHYf8%1Xb}eQEaP-`ynad! zfL&W3e5tQ~)0dKn!KNBvplK#O51iOjX+`NkeL8FZo)R6A)HMo4K7uPd+!zANDY$U<>{MhDz4+ZvtQZ7sy9k5NwXGPePydis6 zn-X7*+iUPX@kmnkM9`NQUuyg5i-t4>Ck21R!^7L!+6v-N8qS}*(XXS+hu6yj91k_! zK`H)vLgIStiAcWDOXhZ>nVX2gzbb7t5t&B4c88=wHQ1~XW7mI(sqGMIaF-#A*R+Fo zy<+-h@?#U8$qT=J>rnihtT<*%g!O^3`JevTIW7?e!#(hg@?E-$Ppe0kIrM|Reg1Uq z)rcWpTc{+pJ2^*o{1uDxxX#ay6>0NF->Gs|t;M1d-e-pZxqYXk7Ej%`o^}G1UZ3Osa2Xe&sOgmE$gl8T*ha;)K+ zNf}v4aNqD(Ap3$bcWkCqm+NcMFWR6q@>#=OCUA%KoAd8GZ_uq} zvEme7b?Yk)4M+XE;?FcL4pF0St*xev;uJ#v3`zKKI;i~uKz9KxbxY<iVT$jtU*7Ox+V&k1OE4ae-CDe+@SZ6I=zE$uA+nf7Ev#6$| zh7&}uhwnrecweNx5OluvC&8TJhPfNlFxu_vYw+|z(j8Y{O{PI`$8S_|Qafo}y5;9Jr+AIk48Ts!*|1+u*fma_w;zQUawTrZU|_ z=z~ZsCpid0H_7C;n07+I#SDUk7k9vqawy$FIqSmM=F(=G$>cABt+_tF(+>&10|0ap zE8p1vf)OV{*ma*8{o_Z-x1^KM=;;Bt;HyFn`raKvG;tE!&IPdBpAUZjN=KIE;kf>r zL+)Kaas3m?z(n5oK7HuV-Re-2ovJ-<`lR!f2FL^|7Fw@ZQH3M^Kmh7JR_^4KveH=< zWG4yO^c@f3!oteP`;@F6IhC?>O_ z9LH4xxaJ}clDe}IEhQ-F&k*GDHDkhY96no%sc25stVg_Zz@;<*Y^VJ*jzKy|HuJYx z*Nu7#tLo?91Emy4O87{$?U1>O5-z@DS;r2QnL6@(av>T?bjE1$m^EA62w*`9nWZ=e z)Y=>aWDNW67K^Rne_Rp#89E`Wq~l87YS=`Bc&%u|Rj32CLtIKf0LIcK$mWkK zH6r1&o10TCX&o(+9&_^kbYwGkSD28ac4$djqxh9P>-q$A@h$5&PRD+PnTsU$4W#z9 z+uA?=;XsOs`bmgF&eW88bYE%IM9s(c+1TMaRYX_(*H#7kged6Jm8VyyMT^*#xoNf$ z@OD*dHH{;nUPcGcL&|Uu?Z|HDF8^I{0w6q5MTkt+GDCX>)#67S;I3+sElTNh4>4*C zkt%k-loCOE7lXte%=N*lp6H7MYkT9Xr(8!MHx441&Y{4-!z;~=L?KR`C}Q0gq^lmr zAi5Dm1rt;rkCSPHMMVQ%QMxEIkwO?E>cFymWg`oN6ZKncIZjr4%z+MR|JI)M#|%D! zSqwkXnbGkHOOM!edEN4XI)%9}nR4n#THqP7vg%WOq9tbcPa9bVUU}5kN@LJ1mbec2uB%_reQ7ZeQW2ugx*)&BmcqUHCHymn=M6Jf^+ z@JFjQGTnJ0$z61tSrdDO0p~(D%@P@hqY2qhI?5ytDlEKABUsJ!LA-bn;Rlvpio=mc zI+0@?>W1atx5sQLVSpC-NrMt8%0clG8&XO;*Grm`0(uBNem_AyR4`|Otj?X}`8mZ; zf}$&nN}&-Bg~ zmZf~wNL2ln&~I5W2YU4eDwfQxom9x!l+sq;lB7!vfy{IeZFL3Kk~XN*D>m$qAXhtp z4uC2Z(_pSd#(sW7qmYr{lk45U-RHb9HT#z2q0|%^KTJMaC{oY>q`6#RkBFF79uuTb;7s5EU%SuEJ3CnEn?q58>2#g3gywtD6td$6X-BBKHB9L4 zNZE!bi!4bNP+bovrcVT8sRINH6>7RYC!ub(2H^IA4cuqBOnKjw$SnWO&^ItF7w-jJ zznAQ?m4&EL6Eq7}muM6)2TRlFpMLDEwZvF_zb*nBdJt#hK9Sx?qRx|Zmrhi2w2>83 z!O%At#0XU^D9_G=*?njp8xaj$0QAn@+-qtX(7kO0%TY@_H(XFm;{Qi z2t`xU7#SGYH+kebjebYgb?Pyd-Lpx!Yu&98*UupukbS0@R<5c=W9z3%v+syL5yn^;j0Rs5e2$)NC1Fh;TY$`s-W3a9D!ON zxg0C+NLL~)n+cN9a{K(NKjYsuK^Ae*kV5J&^#^U4<%L5uTWcd@Ctcwo>B>MXsTOIK zaL9l}oXXG#2II=1bo_$?tP?}>&il&&V~2Rk+X){Bl_=wfgN^o;j-2ZAQ%7$RhTNV^ zL>usZ^R~IJMmu!E0Lo%dk6OgB9nPo>CWjcwf@Ku(1(UnKfdvsOzL+=(d;D6(5W+P?8S=Q94yY;*Uz^)%SAp{NPp5%B{_G(o-g8- zJRP)nU@(6lQJS&s!-bJ3)heo)^Hu;hNqnGc%|$^$F`Vtl8knI2eW4+r%^9d#p~m*` zYbNy=m4*ES*w*SQ6oJs~?*}z_4_DU!?>ziLG*mR>s|2q+7+L#t!*mq>cm6Mgrinss zdwcsJCRk-IuQ2jM6e|W?HPy@`wz}jVn|>5+6Z&pjE_ZKJifvVw$futZqQx+LE{=7u zwpKqr=Hp())%9<^qX&>hgXt1m6vjb-Ui)lWZ}LQ9PjV~^ zyN86<+SCy0&BN1(yNv`4We4QOil%WB>N;77J2$sc1;y_hFn8innekz5{x{jKKj)I` zJ5ZLIu?*%PZ&_{RBQn0s4vP4>;X6E}@izYc6JdsLRReXSJB_BK4V$es8c30e(&|YG z4eWQ=CdXkt5rAMgcSlG`LfII=x|WSl?WSKOAGo$0p&qOIQuF@A^kpPVl} zYgPj-Pm2vljLEdUhI0*}DfPM9W8*mXcINXqpV9eXME1;(;fCC!^4afl$wjvSR*4L) zPW6_xXozO|(NY~is|T&vI(_ow2hQ$>zh~w0tow*C(pu3dmAC99Q<73xfr7MK`xiJM z1`3)<+VD~a^b9pR?nDp}5rpQyd^OaK9{JwUgPWb%G?J&8#D|QWr0P$584|aK zVe@vzuuk2fuZGr=6WL?u<1AoUPM6xgDT3h!4gKp6;xE0cS^<6kw-*6C=b8Tnh%+6| z=M%0BRH1HemsWNRgNs_DzW*YCUdIfO`|&GR#*GDmUo0G57p~GBi;>mvXNA&=s0N>IF6r&9sHOtvUB9>o- zfmIdb0{@Mq1n?8Kg}z!W9rzt5H_8!dVH^-CAPdgo1lp3_EvEbn=s}4T1%7J(jrG(V zlVJN&$iKQFSaS1txD&*TCFJgukWxv$wh6>CyrNOE4I7P#hSlAHft3$LbS)z@+;l~{ z=AI9ID@W}O8GP`Gep( zo}Qg$tKadf5B2IiuB7`-Nci%_;n0rN@n8HX`-Yo$6zMIiwj4c>1LLOcfQwJ z6CQt;cW;kuAetF1ro9KQH!_$33;0BfnDNk&*u@(g93jDHC~J!!A@L)?nqTQA?jQ`~ zj+4qd27nJ^UX{6oUxPWE9iHYXXfvBY&~SJL%56T<5VeMzCCl!7$evVBwJvAw22%<` z44R0?nJN*g4U1c&lR75kuYpBLj|SJ}G}9jg=rN%E_ygw4*NY#GHSJ|{$og9tx??bS z6t<75)+D(a;3s}*1!mV`O{?3HrH&;;`1Fl>gMlUBpPY)uLrwN#CH%a1{7K1~&q{2j z7Bk~Un+8}5?f7{0)X#G=|9-;caR!6UCnN*cZ$(S)ci-TKoIZ*Vzm%LbV8Kq zt%ZdTTv)#ky51WPVa0|xg=&N-&8#||dR4#{l1O31d|n+p+NA_Q9|C_z|W(f$^We;H&=vi#2;317?R6M1<%UaMFC&b z<|0BNd=Fe_#C#_RaJ6KkZHnWrp9jY^0UZIbX_wqL0#>|1U{{BtI4gQ2M24B~8Nv6r zT2UW;JGJS@T(Vyyh|Y^k$V#TfO88z->rNS_?K~q+dtf-!4Y!}p`nTn588)**O5WWG zCcxjql!@m0E&O)ziWmx8%a6}oX%pb3p&~voZ}pPbzC)+exLrZBNanu3+7~YhiC<0n zhd&+egOB+jB{gYaULtmNAicb1{ewV6Ts&;$je^|69ld*F^0D=N0NP-HSzfmBQmI?z19A*kS z2Ii8gO#tFFAt5UvS3fA%Kj)|GXSw3vYLJC)Mx0*CMUg1od4*+A`}PjRINb+WuWnmj1>whWtT-DLoOnLZzBq`jU}CF z#pGasA|87Jmm&Lil({QMsANv0VqyDYn+y=9W9zol4nN+6b44WM;uIl4E+qp3t;%Fs ziX!hRRN)`7i4>&#uO7U6PLVTIFfQDDq9h`&RzK41%wl4-BkLgVjSpM{pxj}hD-Clf zgkjzkXH7!V(pWaV?GcVLo239f#6Xz;z{G^tfwJYy1nhpO)_Ru|2O9YSWlB`l&Zct+ zieG+V84|#nU;!cw5o%wTbR*~7 z0-0RS6(w3MA~q)^lb-og^bla|>P=E`+ahANiyS1mzjhE^w3N<_c)&j6qwJIhGE=Di z(1To+G!*{-fJ#!ytQmR65`>*Mi-MA5cN}T56hh%hdKXvDBN3=H4)+dd;iygpVhoff zxpa_o%EstS4EeXLx+~dn_{vFbfY?rN<-gKeL8+uM64LPgwKYiKlN!~*#KyAU@24$Y zuGu#*+GxNO%W8%%RJ>K!k&vsrPZnSc+^5LXEn&;A|;@adCVOq>~}>T0j?) zXlrACFQ62vSrQ>b+kQIN4{d3Ix3MYIX#4949Q%Qq>)VWF-~E7|EX}sGof!%s0eHNo z^Gl*Xvh=RYSIRJdTw+Sg(Hf9?j^|assBhJ`#Um@ALmYT_b!>r_kCc=XSc@A z6!ZvMS$&ZBlBqrlpW|R_I^hZ$93M65Kem+S(LyMz0`c?V{UZ&8m(Dx_{CbSC-&T8u zP2V2XwVy8~KH1n7f!Jwro^ExSoLvrU7QAXm7MSo%_Zc5cO3<+l>grSaRl1&K0WuNpNk4@cZ}Dr9lRYWj^nP^~CjU;oIQBxI^| zc0Qz7_D}HgatmiA+w`sTLs-MKNKf0vQKMW!vZ${{H(N3+S}>h;;t%eA6YA z@C%H_`Q`_pl2x07W8FaMmx_zS-2QWClESig`AVANVL21HvqQ#BQB8wX>4DK zR-Yi&bfUl3Zi5)GySjg-r$6Mb964B;!u~Vz;7DmjVsq!6Y2guzV#J@!dI{K?d~0pj z)>?hIJ_3i)h$<-|EfMo!_H_SjP0~R!?G8IujOc~kKH}<%HGJB$b{Vi1K2l693u?|L z)Q<;VE;5G?(O3TL3<<>Ng>ie*Hs~sOb1*jttJDU3y)`VhJRZFD`I*#`N+S^uysPk<5t`apO0d5ti#@H2j!wyxg$QcPkl(_gi zaZFb}H3nqlXJk~stcS@)Ik1$DQ_owNdrsd^M=``ddVBlA18UrCjut(wSmor<0(^eicsN5Fo?Th$~A3*735puvzh6gox}ArEa6mz&1?8)EhF}3W zOB`KaOIA6;v(zOJvM*WCth4ySQT1p(e>Ox1N{O#Fd552_dj=jmz-)&CLfC^{mT;gv zWy-N4!9>cW=SlbntaSM*e~ZX4a{A*5EoANS*Y1QNyPSK%tj(3koBMmXIp$%Ia$Q4o zM+4@^wAwByE?UY5M}xGvmdE}GP$&u}XXgeA3L zzm`_~Qc^eW%|KUn0tsU0ZKHPP=Cy-8-DV6f_2xz$jF{R^F=9>Uqs6ZtQ5)k@=2+}K z!`zVK^&U+bZ=?}o|E8!lPC2+!FLyZ?%dcckvVx^(59N_$xaxDdRtLVVEQi)<078KV z`{C8t7$X6~*52830;X={H7U)j608Q@NNn2ES-0jqd*{W64Sx+!#5!Ps_`r&T|8&3m ztx_yn^7e9sCqu1bmzzwOQ&q3pjGy0mx!YI06=}cj#FHoVRNrBD=3OlC4_OZ>x6g20 zd0~V1t)<&~42Qp_x<_Oy`y z524;pR|;d7kIv}o07eFu_a6@4e@)RcOR$mphfoedz$ofZd6EHeVD(NQ&Bm+XtA1?( z)Cr>>Zik-g$eyLH{|MmN`&}W!RoJ`LAwO$HoOj7Xfc;xP;Qj=?nPYo+_WLs=(Qz=c zn@{X?1EGN=kAH}~M$9r9`Asy+-0xXOnhLsh7q5%WDt4i7GkQu7|Ky(3g!4_vG9RbA zPhX6sF+m{#-+k80wy%YsN+B~C^C|t_d@+@joS2LTrFFWju;14e_A(WO1WA*GmM^H0 zVldIiA-xG_arB@5lUa6YAw(HlUz|NED}o377n6Qh^=~Gfbzw#4e_+DxZs>y~ucxia zx-ah9!&tBgo}EghJ3~z9zE#LQ#r(`xCNFqzOPIYfOy3})P3wZDzg$^ z{r*Y`ktTDxa_5nE%!% zxct`cc{v>SF6Ev6Lu;QN6dx8pMuy47Yo7goY*NV^GxJUqh~$zHuJu>)zITi2 zrI_NVHP|xkyjq9TsbVuvAu@Pmxc6;_cN0gHkX)k&HC-?Y^FJ|&uYkqh4xX5b#B8h0A@Qv`E+9bMn}Y8_?1ktYgdoXX-&;yHMGY7U&rr^b6J3bt73iCSHK z>)JCa`;Pzrl!Kf4i3IGoAWDr##5~TsX4099kl&M=ALR(JJjMz5ypX{k&q~-=oug-V z#Sj2)VF>`6gWt^|C_{MZvAw!m5G$T^ha?JuwpJ=JUT^xT z3z6RlI#Qo2{)CkaNhKM89<%jE0Hcl}P^(3w)_~^lg`g_eEwo)F{N$=Adsrw$ilX5J zz+EIij(%jk-96<@(h8WZ?~qjBjMB$MlsKm7P9X)}ONlLaE|ZPHXsx*czzY!J;96xg z@O<|G$UD4|RL;fS%4oraxlD{)ZpB>2(bt~%AMG!Yw}0?DYg0T~W`YMi3?P1994rQ> zrNj9nDy(&Woxzn~l>MfyUO$}@i$khBC0E|L?iDw<8@iW_jfRE+(ITp|7R~U^)TOazHT} zI%nkI^x-Gqa{zwgt;ZYQO5G>sOb&PEiCnkZEeot^yhHUh&d&=Hr3a9*}^* zb$h)&vO@)yST2fMPR;0K`E0q(nH{i3F#6oX>9oe1HTRr8g|Ogt5oQ#m#6#5;<`g%2 zKt4lHPva4%0@*AL+NXJN?>q5)UvGvO+&c{O_lOFWAq(D=`6l&$Lv@KUfsHWD?vYho zuKz*v6u_k#P^A>Fg=56?NN+8K+EI!|6cyx9(5NgN&bKu%eE;4|L{5%nz0?h^pm24~ zg*pqOEh?e9&~*23X$;q(-g&pUeEd>07WEa|__y=;B;D}E_6(={8L&}AHDZ=2V_j*N z+MXLoIA(;Y)A$$cK&rbf@hOBwNQe%|LY!xcq6vrN-f)1L%6q_4FKZoCj0CRttUQ0m{!JIhCmeX`7=>$BOCwmJonq2L}UCPLHQk zA>eY=lVwK&bjoURJw2&{SH!PMaaFr$@m>LT6~Z|3)G31R3VJBw!6*RzAz(C-WOO@^ z75$QcHV`hcd$KZo?3}m~J@Y*c-44HV&ElABQHBCtTNEI5L^(fOlEhi8Euwe0O$xQx zy{0p6TidM8d-%#%LAR6adcXpb^IB3wD}P_|OGx(L)A|Woe=;M&tf7D5|6|GM$VlkIU^eGk99jUpBoKN8rt8 zr*3J%%U~a6mLkgQ+qR0#L|Jy_M{t|sNGf=;L&3`*>N%r@8G2GM|_Fm$fuEi6}mceCXuj;NSe zK44x0WC2V7hu#x*NalnJ@aiM3pg2y)9SF5b4Ztxl2tMsO%302Oxg3d3>G0QNccZ_s ztgS;m&w7dX{xQ`FKWZp4I$Ffbi+jmX;}hVVd&bS#Ex5jR85|mN#E07E>dpzz_OT^u zIFx7?PNB$oTIzWXU0&7z77;mFGBij0prHh5^65W-5deG8Xw|Pc&l#2}tmZHu*bV4} zJ0J@vaR3M=B@iyarvCtbAs8m)cQzGMikdCEd)~^AEf`%mBpQ&(M2M9GZ|PVK{Kg0j zRG2zR=8Syuq&R0bU;;)aQUFJfmtcM`kcCJn4I|WK+~hF_NgIkC*7^;@Tw9$ZnwK0{ zpmSrM50dR{y1Kvn98|rlG~l481h2gx;PDs??p_IKcc&}9ab)A`Y_H`rknlev zQjJ4(qpH3qXQ(AsTVBqf;_d%v0VIv(`l zdqM*F|K)Co^DYrsv#Ocw{wm`yYHZR6$17k@35N~l2Hjy6HxSN|J2=vlGyHW;-SM}- zGm3)?lz7h-M-(A{TxPHpba7Kw7`}^b(L>M1lP|$NecRDKq1~j)bX35jmnkxsw50<<~tS5f< zwCxXV1Cs#Z`MsH>==aCAq1|IWjWN8KUC%9ov-U5Tuy(psi3!ud& z58C#pj=nNYZ-mSy*rjorC1vH6_4)cbdPp9(RAQrpbZ^+CKtwNp2Z%`Afh{|mnolxB ziII(}#AB>}^~Y+;>3t|g9|s0m}BB%HLwk(FA8Gfkz;PaX`+ z!jXy|sU;^pBvNF=(8hpdr&+f{K(vHmaOHe+c$&Uy>+B@3nQz2s=Da1Z+*-416Ze0x zeq{5-(6Q_U+A2?QtMv0i+hQjL0Bik{Ay{6alwf0P`;q4l&N*lrB+9MzW=M;dC01U- zZ;GDvio5HxFrvCA;lD+sB)LC*^}`}Xtvl)5#*KU=O0A*qn>h9pQu!R;>cos$7}J}1 zZ$d_>6ZMnQ+~E0XqmY>vln1;=zlx%|V0ae?8cppzDl3sNFqy`;%6JiqR<+O9iX zeCl`0gIZWUGvr?-BtzFdX)=KqTCWL2e-5jg<9M6wh}iDaY4`PG5C6#;&LrIz*)MBP z{J}EfE$ZYiK=&t><{{t@W4yk*bs@x*u%xEMKi<{yDY1T&tH zRbAsAEU1kICRQ}+W+ta2NfxK$cS{AeT!X9N_PRR;3u^!T|JVQ+>5OB_;_A5qHUV+7b@MrT~;~3Bk!O#A%o74xL+}UVkFNW zSi(Ny^tyv~v>E9#jli6Cck6@b5uc@~>#V}_`YE;q+x>)K9v zYOxk`4X~y8jAbXN$Em4XauZD1zOh)Z62x`Ha$nr=Hqu|ycGT6xA2WiCV_^3yP-p%_ zVRwIz+`{DkpbQNy2oCn>vxoUupqurizg_rm|9}@*;v$R6h<%6AZ`)H== z3a6F@^PN5Wk@(_HCF2ucbCQAOTX3)i!$G~1@U+Lx z!S<=U@6?qP8~lSNKBfN+#bf<6vT%7HlCJUrI3-3cyJ1GidN-H=pCPnpO;xQ%X7tod zGksK_kU$ucvvEqO^ACJNH}Vbe4)8PHbV)sK1>@(EUY|gNW`7dqqhpe?OIdH#WjZ z95jplz2(#~`VaJyog|v#0XwF};{ljajuIlz<tN5yt4b4oz2<$_xeO zA`>+oWj_LOuJAXrHTJN+C+gCZqqI%&qSDC z-S^CDC%mB*Eq0{)Kj>-wts$NI^#t|X67Kl8&=MFxD|%o=^}$`=U}p2M?@4B{1%5t2 zP$pB@5WaK&?a!TMmxejTb~PTxC&NhDFE12^OoxdQs(5ij_7A?OsEbJQNJtJ24gtZz z@Q<=M;p|KPL(L)d9=2hG>|Kv=YOkJ<*q$qr+}Ct^xoxPHUK|L14b7%aHYKZ@S^qm< z1p-*!KQ%@w-u9?21QpzMkMo=r=eDhM;^(XM_~Za(6)OQBauTJLn&#sD^M$QhV578%85R{fScS$M4kf1Ynb_EYsEQG zdqSP7Zl6@M*Q3E=lN`&z*6*>^ThIiiUDvquwQJAqha;8drvj{%ylJq-AAOOYP}fGg zzrLC-B~x?)1MYacN8c@m4#v@pkDqshI>wgJ7W~Oe1^3|K0dDO}Tn_j}V_LwJvIWcy zprj_4#$DU0zAp1W-+iszWttL-xxC{YEXkojHD)En)ej8~{QzcUYz)v)tZWIAA?fL$ zknnJ4V4tp7(PXjV#m{c%gE0`6!R-I_X0_dwhC(h=6x{)>;NFX16<}9iHZ5U${MPS~ zX7^G7HS4c*ap+yoUL~!N4(_?%8f?-MxD4UX)7puoY~eFGT1kFX|jJ016#2f6E7q(}_W7x+j)L zZo-+sJlwU0urNfx(2Uz>;82mz>S*=C!sKs#D@3+rlv}SFo|0n!=FJ1Y$2Fdc(qo_9 zgA@IArGTtq(7KRq>>`m$!{ik18ors?RiHvA#^ivD-;#JZqm-UU_GwY>lP4oR zF?&k_=J6h*$o@E5sL!dNa0EI|n!l7cFBi_`>JTZ*&jvr3_ds<{qh^Q!;piy6+-OKg zNYsYZDr@P2lbgM7u!v${K#zn}i;!}c3c73gfL<|CQe7fuS5U#ymC1#k^laug5gE6! z^5E_<>CudE;elfM-Yw1_bETkTKkg4{wgQKhLTnln4~Un&sQE&#O=={fejAP&lAYvF zmvTp}=~BOX#l_&|o-Z1M!zZJth-=fv8`%E^!O}|NN0NE>GB3efocN8yItDweCO ziJs_~pN+YcjxsFq&gk_j)$H?(Rf3;BeVrdUOOd;#BeyrZ*P^p-9BQEs&UlGhur%ps z(IPlSC$q_joFo+S=kTz%!GRq>u_VilkHbq1%N4cWPkU##=ZlOU&g>75`7udJY)4z$ zBc|x|PsvaS?_R8JYzQnj8kzpipiwGD7cCz7w3^O<@H6GRDqK>I~)^nEs)HpiBev)i?1H|%eUrQJUre)%Wlj6(Bm)1?VKPuD9HQB z*}Vm-%EYB>LjJmw`j`cqLb>Ec*Y~yrC8JQwoY`dSL(Wp|&r#U7<)h?pFVuu>ib=_M zg6B>QUxW>ewY7iFp4Q#@l|R^rpGPGV^!(#DiG7%UkLHtuhPXIYW~Phjf+Lek*@~FU zBBQ~B+nvY04`m3@bJ8lWsPLS&4}dFRl!@tAcM?G*)sdsFMyJ0K$)=dPZN%iFzMVtf zi)!PGG64N-^bO8eeOJMhY1HYPj_boG&@Fo(U0E$CZarR8XHW9p7jc&=19|cALd5~< zA#?P3iJ7#aTSqo^>_=I6gcj%#ht?^ei#d3Q(VcBS+Gs9k_!dTn`l5FGgUWC=JXjOk zKM!Ng%eoBqJELAntjWXkRkP_$kM(v>uCAM1o$I^&Ua8WdO-;lY^eaSkbd(Yn=<|J3 zDr3PwM+NLJ4>zET^28dBUXtphxUcagV9=k_w5}Fc*gUaMRS-^!NR(1*;jm%yRZbpu zaJbaw<8{9Mf$Cpo0s|A19vOb8``J=#8k*{h{n@X0+~3URY}Xy?Ft&vS6^@XaxuUz6 zZPwH~-W{U6?SMDKu$a0nqHtfl*fB!sM1}0=T-VcYV~5&))$DWk*C<%b#;>8fs`?rg z3uOH>Kd*YBwz6Q~TrDa)?w+A@J9~-*Bhyuzo)V*wTYIxe`7+4lrG3yer2QNn#k(3< zxpOZ&SZ$xVi)aHMTk*MA!oy1aFN-TX?I%5c(Ku=}qHuq*sBBc~?X%&J+0*7gNC}nx z2;6nkQmfqDaGXuqUv9#mE>3u{mg?fUJ2mkB>o+Jo(APK;s8&HK_cH$ZF(w=0p~aDI0?k9xP84sNSF9v#Vw%bTv<5EW*sntLxfrWc6w!(AGcv zGmYBKYYLfS*<$y0&b3Bon^y-*x11wMN@;!ga zNIb1yP^3(zUKd=6x)X`UsAw~`LN&`F0Zwo27@g5R<5?0ya+c~cB_@Kz+vBn8+%MsM zv|`TI@l!YoxZ%o~Gq&_4xVakAiSPe?03NFa-|F(5j;^lY_k0Cnii$j~t@uCHp?iR< z)Tl+w(iQk_vU0q!G1?pc8V)Umv-0lSgQ#|Hv&V3_8F9#^3}5>z~y~ z*9~#GMKn9=auG&$Zr9dsS9f{g+jje#CYvd*B4Xgt;7>gv*1NvF9aK}3_6iCYlR57# z%sa%Lrek%5hDr>BUeGY{X+opvUHhPTU)^f0;dqud5b6xRyXRVAODtuFZkN+nw|% z$D;>ycQ5tH$8x=qxeDUM7LO{EY0%`;bFR?|)@TqlODcI6NN>7heYJ$H^pI4TTQN<2AW7^K=7bDnve}Kaq$Evyuyd@8#A)w_!TrJ=mDB_J zu(5vbe7}tMX7zdDWQg9wbl#py<(H80P=!$MU&jT@w`G}-L)8fXybCr;h1SeF@OR6Y z4%JXBumMej?x5`yjt{-@wE0zsm|)?hQy=E4%{~SPQ?i(|L;=-Blf_e^y9xEA${ifj z;Tn>xGBUZGJbyAmA#AX$vlJS&NXIQIzQ=7k=~e_e@8jqWM+4u!-kr#Wehp2NrBb#U z6cI5tV-WH@I9j~(>nNmmV&xT>!Ahg&2DQ0XOghU5`6fid$`oK9#hzDcD1x7l%k7P> z>Yh~9c5lvxuJI9(+a&#Z?+-tdNtyT2 zw;lWeHrfBt4uzp7Y;C>A8n(dEc=yurP(5ahUq^Z@t!?n*sU;Du)E*NF4xAc656){I zGmZ+9_;;0?!Ts*<(v<&NjS&Az6h#v>WCXxB&;)Bw;cS9^-)3>Pp`o7l7Fnk}gZ%qD ztt!>4+sM3W}TG1%%ZN|&*U{DrL`^qSwkx*~s zYL5C_o3_KDtHaNf3VBGS8Zrihu~wMj^USx#+OetUEWu&p>iyFJKyVru2yM&Cw=q78 z&JeWkoKAa5=1!o$CR@x+e-tgK7$R6Lj(#NS&VXKoyQ!i=8AX{n*a=6;14C z^Vrlq>beeOGD_XfLllb?W5=_Z+Y)V*Crnv9Z}hBYO7~@4Z+Q1+)7y1?pbFI$tWRtY zJ4&!;Q3-x_-lgpXzfF*tC8x}@#H%^kdh|Wsuy{#Qy4595P(hv{X6)m^MVn9W^ zkA1a-HS|>I>Pi{3vko4JSp-)e1k|e&JEx0Xrs$|eCw41qb15xl5Ce)hGpge2M8JWw zysB+9_AE$wu=6!w8ljgCi~jsGt%tc(YuE=_qV2O^rTE8$FkfDNSrQx*Jn}66^CvDx z%%A3Oj|Qoxt$mr~j+=m)-j<$<`mnqE-G!mnFc;+Iv1=xMQ4ELV9+HRA_9=a|Qe`Xf(Mcsp-W2gfHMlx%I-JYP62TASl!?XM*=9Vs zsMGiES>vrASKjR3I|v2D;Uv-{$J$Dt|coQ`40T!!xdQksrSLxB`*+D9y4Em{=8z;yKo~7ZPv*0DgciL1zKV7U7K88W1rt1(pnNe?WH-S=`Crvm_t4p* zHXjK)Jh4|L;_Qt!dVO#1RdzNaee!kM0*sZ?8$9MFVx#q4x4f1)kR`-DskDvl&8pOa z22vM6s$Yd;dB!x6PDpdyIFgyKOm-kD*9FEsiabZd4uSa9o}W%X-PH;sQlkeu`$N*n zRoC)v@#!BES_)$enPB5%c}BXBzZk4<@^Ot}SPk0VuRSFx;f{3| ziD9Eg$H9ybB(D$IMYcsLwRBMeF*3!Z%mGtmYqTKMS zb~;-nJ9Qo|>>`GrN@?@*;HF$pnn;YqnTU@}bz?%J&p;*DacfNf5x=*Ai7BhO3Y}Q$ z0v+xWPiU#Ar`b~bM&WxrDdYE@%BmPSXw1>^hp+=#{x&rlcmPjdE-EU9#SnP*BS_ zxZZ26$RkrKS3%QZmlr7~)Ulk_vzbc%9Hx`XrQYh}eI=QS zv%LGRf;>{$6d^+9QTdqR@KVW705p3GbW5_FId>bqxZ}ax+OM?>2fnuviNvq@ZP+M7 zd=3A;O`^tpwcPvh1(gb2ku#@YkR?O@pxju zKtOlY{nM$9h&7QYmp${l<(_`23FCSF?Rik2%Gki0Of09zbk!OOB%(fWJe=j2Plrs_ z+qsE^s~cPq)T@^UuC(k|IPQ{zNJ^wD5QW2jGi1T&CzON)oD^0Za{8c-j<)eeKA{k_ z#0mPk(HG!hX26kG4>VX1Fz^+dViDc;OXV$>xiAR`fILQ0Z;2ZBz<$fV8ZWV{wbQjc z2=h~kA9QKL$r3tyW|a@4{regIdlsfBTW$KX(WPvl-VVn>GC{@n)z!n(y(o|}N&zyM zlckGGxC$Q5{d=HSc=nG=xrcF1Obc?n(uCN|FX5K;f+vMW;!Jir&d2=J5wwc4)>fP$ zi32%R5C_6$t4n<0j*urgU*t@Ql{apBbJDc{X!HEv{A^^~o?M@9cPbZ*3fJu11)u}a z?<~8Q8a(PfZ)+E}48?QBwJle0zx-svueRn52U0%CJ>R(socBFz#NcIs9J&3kMAn5tz`#@HV8SmR z@3_@;JX5G8p2x`zk+LITv^Ru|tQUr0v*m~@Rr-FyVhk?{do*A~PE9k)t>7Y)yEOi0 z{Wj1qI3jU4K)9t)q4DFWb?ek&)z_-$fou^X=LoV4bvyXE#f^2X?<=A7KVJR79SrhFTx?quT^mq@gQftY|~cia|rC+Idi6*#SPPsdrsx8o`7cMstY8c&>LJ z6Nr9J=9BO1&x}J}a%;qLJ`2Y5pM&fcG|LT>N|vthd4{SP8mKmLn#JQwacSJYa1Tw` zgLo9OJ;6@u(XUpmjx*|(2#Mv~bY`z(yy@G2v-WW|Sg}k;Kmm=&&pdG+@>k5Y_jUeL zH&MJhqZJ;OoX+o4+kY9p7KmA#+$krBaZdg7cQ6xm@rv+}Jnc^*o6rWHv*)<~DEG?t zwbX{0ECULG9wiLs^0^A`UD@Vb?#Ej1t)8TpC>$AHk?Et4Ld<=}4~|FVD?@+nX^3Qi zsl1T|vc`MU)LlUzitP_>62;@1=c*}7n|>)3H&1HiPpUO5UN24aj{hyGaaD{`Yp?PT zc;7-6kz6Vf~reN1-UUT^u~nWrHy`4^ED?u&r`;sSiGP0>GpPEweegu;+f!PU>I zPw-51YwMjfI?&yVKgqaBPQ^Ok=W%b-J9pLCddJ;nDL6DB!uROJa;eF*x?CVY$VrLT zl1+}bFtYjgbiDazU!YsC3UQ`b5KQZ1EgC>8jGrDJ%@fWhAfh14PVSFG0eR)TjHupS z9}pzmaE6f^kz?s@T~B_jG$E26EpLy;tO~F=&-GdwDSongFlXC{`RRjV^d^iQuI(_u zrQ-Xdh3&7Ur1yIXYvY(lIa)OQa(;9+TI>06$@MYw$FJS_Th+OJ2Sr=61SsjL>hL?x z98S*&DVT(xwEbN(R2eb&9?ID^daa14sCM4H8?{(=;z||H+c9Gz!D{g408y3w(W@3X zIp`-`$0+U{lqovW@IOpD^t|{Q@%DdkRWy0+e9jcejQFz`#yZ{C?41uEW8#<_<)mRu zwQQXlN8`%BKS#ii-y5Iwq(x(MP@*fdF}a^(E!1u zYqY%H0CnR*w1R!BCmG(UCy-q43qvIS3pgo39=-OjfvOt&SnSr>3%Sje-2S(5hsEZQ+GuFflV-Yby_tahuZhJY3_KWYdHEN_@Le~ruaKLW63J) zQ%Lp3I1+LA+gdhkN29xwjZdQ91Sh;O_@qT7N5Vo#r<-G?rfJxdR?Wi?X?Qp8U7Xgd z4HAxyJYw<6s(hYLu^dNzTdlLA*5x_3SO6z2)`I>Bc18Z&qQ>b~!f}Oe$4ekDrO=e3 z63^d;cfOPFGz+es14N_W%VKu-vQhFoWSi9A%<1nWRY6w+Fg0ShwIlusgW@cnm=+_J zu&r(+l$`~tm<(~xIr5a2>P+2F57)~8I}|2vr?B{u)`D4A(XF+);XLx@m zIV$b)*S<7?nayz>pEYA;^~J9Wl-Gj!J1C#8jO1(7$lnr<^qeJUzo8;SsO_6YQEko| zKBXAIYH^pvm|S*Nw!PL73OaUs0zWjIG#vnhvkSH4;{o%og2h7FSHKV3#5K9#$D3$< zL{~+|>8+cxqo)zWCv4}R+#PTL(F-~|)S9LfgN;d4*rNEqfb@7W!Y8Th@sq>4QV!<> zDj<_1d1zlboNN1Y*+7f_Bte{=hgZKL!#^vzj@T zS20LbQNKyLnPcgX#hRRLz;{^$hYs-`UXJbk3XK?@Uv{GBmQj#iU(*xY-G(wfO@4nH zqF$^Of#e1fFv2v0x$-;`QY>)kFnJ-@u<*OeEUnfZ9J#drc)>V{blPykMxC~ET3$+b zVLhw2ANPja z;?f-G|e++MaLNh{#E4T_1u8%cWXC-A{lYRW+z_?t-9Q}6@V!ut;utJZ(e<$Boar7a$ZC^^xE;kuvKEOLM(RxkTG9Xcx)&-cFt1+YFk3A+(`nY{I&;p8 z=TDvib2}ZPU%ovbW3D!33@BDPF3_5BFmg=G`^`Jffm+)=I>KZ8@;v}N_M|&ZoqpSA z(zlk9Fu>^@k$^cA;B}ws?CVP%MmHlgNu`^)X!K;7A=yLsS08&xRZxSJBHC0nAb~>Pb*V?^M z(>G1mM-qZT-w&`#vzZcP0-{KO|bdj;I3px3c^IY0(326$=2 ztV((hHzVc=`tnat(-1(<RzB6Is*D{V`nRZI%=Y&FhY{`+8l@PV6MkaSh91wnq z)LHX89H+U5KDC;r<#l^N^AvN-<^*OBn2Sd+m)YqE29*#32b_=rg3qV>nG{Zx(ar#v zDLPTKRIb|!V<~>1KPC2fx4~(@Sw!X3T#!4k(iJVjAKy*ZW|oHy`^+7WW;KdjDL__) zN>m4N7!qffml+<{>JP_0I6+~}WzL*M1*+qrQpvAQPwn!Z_RSt1&aGo+GbYVO^bZ@R z42faLv<(c7ku-Jcx{Bj>)ocBc@*q#7!eA28o{*LFaC@i+4Bk@Kz_}^Y0cMT?PwlSVE(D$0isXoalFz=&v0+Ma6&$;hI_VrmPtLiU!H&nxVW2;46UMlu8>s=UTm z|M`N!YUj)?PaP^phtI^vd4h%r|K=j6ub3mL{QLhbE#YFZl~7ih9B+09Gt>;pEq4j~ z?2JfgT-1TeS(VlJDuxzsLMn(=fm<)IwifMMaJSx4saEeVOp21J`e=pai7!`c|j zm8eVP^~hh?N(=`jwYhS=k1t0`Y@aF^lp+Ip zNXh(3CTqqOgiC;?aDAg2jDr)<}FL@ zo7+wsaxSKO7-c+C^jvu!xA=V`DOhO#b}}km-;@Mvg92vEkVobYn7+W{<(w071ZZ zvW@)fAm@kR`_drU7vG z8QKAqJvcm^bfd41^rJ2`4trXTSj?=H`-AUmn8EMnbh+cEQ*;8bF>3##j?V}jZ$37w z_y;7}aJ?>N+iU9-P&)v6YEY2F%{W`6Mkv2(EtFolNGk+MFh~Uw0a|YVH63}+Uv0A7 zxB-w&%|m;CB*A79;KLI?0h#dKxl^gu8-1uc>z*QTObP}ifDgf<+}`b94`8_H;;-aCI}PX@d}OA%Z6=)-Z`d&1@y{RAsJ_2@FSst{a|E^rWDk?+TUZQ4 z@;mE-NP$MY@Q>=&yhXpW$Ol07PK^^s_8RZKos ze(vfi7C3mYdO>=1kvVU&7#t<03gp`e72d(>2~HQGhT9MVCi~BB;S*`Kv4Dxp zOO^ZTXBqoWaf5)EWE|^AWdX6R;p#E9+dIUFQM2$NKk6fi_(K1_(vYe2+K}UwePO~E zX)7}$BQawpn%iS_Gxij@oZ)ePB}=N`1jwO(_p@4wLTSCav9^BmeXn%wIQY`^Bg$6< zJvLmP(%*|oqBxOmiiAS=AfOllf<!?WEfkY+CjdIDvH;`cV%Y9`X5dYfOU3>Gk}7 zcqCrq$o=|(A`Q}a-1@L{xE!Yd&UpYzB(20o3@T`D&NvY;=9R-cL0> zca?|h!+pNHZaZh2ZV6}Y%hMl@1@6VX>$B_MI?`{7UBA6%ZcYC_mX5T}|8Ef{PfO{K z8!#t5ec+wQq%He=Ut=WlKYv}=LSkv)^?G;DXf}%#@e5bH!ir$RdmU?HyGwfe?_cLP zX$2kKsXH8X4n(Zdh&ju124;kWZZI49eG`}Y0dJH8tN0ytP5YaM=RDHRxkb(wI{2!w z8`9sr&{E<{yJJ)$sI_^%zrMhvv*)WuEsGm}-k}S(5(shK?z0Eu>EUN`EtK8n^Y-(49HQhwlBD$0%8Cgjsis zQ!(e+$MbG$onEr!8OKtS^wYL2Zc6DRck^9ue*Md0vv5+8{E95<9;V{+U2(g@TT zvD^=SFrmdo^(o*#7%OH)l*oF|yUQ_Bgk+H%%R#%UD2m`qxLw@D8W6|A=e~~fsu)7^ z`A#+HVuEPqLP8)5olsgV2`A-sG1txSK`Gn}LwO&=Ea$my-?KWPqn38FX|*3qcSIX| zd(Bi{$_mf(FixS4qmru`Y7=|Nu8{6s!l>O~XJ1@tJ7FT8udW>eMCEh$CyK@QLPxh& zcf4!@CRV0JvFsVtnHjPmsUHk`o~azh-L;O8 zd6BzCS-|R5XVYAl^1HXAaT@0WkI1SoFl|siYzY^xM`{Q-_Owu9JH=>-v}a+i^w3Tm zF|2I5|9yAorpD9gKGOKd@|UoX?Y)wWj7pe%z-JDu*oX8c#6I%zEMo%YRkz>M#)o5P zLIB;CMI|mg{gCox@WyEwzj+y}i}R+BPf)?i)~A#Y4?05c=?H0*zF^?#g91llw6BBP zS@St-j#ZcGOevShSqr~fV<`n5w~A1D)XwI>BP`)?8pv}L_00-F_3s@nKmH)V^c0J` zrgyniI`QeGi;-Gvpml~hg?PT!ezYFV)U3C3y>RV{3-#x0SkHp`o#k~ym-S!hJHZ=t zD1!?nX}q*ApQ*LO1L#MR)xjK7S@W_Y(gbe|?VRptk%w##t+`tkCa5yqpcoVQFnv{9 zmurF7wj1xJ!s1LIAH{*$tFe+CZd5u@t&3gW;+o97@cS5B2zk`hX3YRuxd!{Ri{sU= z03by{b^IKM&E>+tWYRC>tl2m){W%nK#^#NW@PZyxMwxWJGlR!_}_Pi|O4Zwvd5G!EO&hF~#HntvsCx}a5Y@b8b0UQS%q(+tH9DrBYHLch0){c*L& zZe+;qCfkT@)Qs0OpL$xYHIlmNGN0=_3TJu<=nppxjEwmOVVU#wXETrlU;PpvprVZ(OMs%R=*6(PkKLpm47A~*zNAW!g`eZ3_(fVoS=y@l>rJ1@nr50? znCsS(f6o5O3@$zE%~h36w2D7srq$R7yu$`(EW2qaortJZo8333F9GK5J@bn<4PXFgUQOB(o z0r~kTUiWmePS~#q{be-_ZF#P3NEE7TV?Y6o2%PB5`bN11cNe1&(gaYk2B9`Ap`wHH ztyM~hhC+Es>3_X#V}BoX(ipk<^PTo!(M13fEp%=oA7j^-pVE~%*#;m=cNoKiXoKN1 zfv0Q?^xMJlvQ@#Om2ib7(9)Wru!`CyyKY>*NX)xN!Yu^Y*6I02{j+>!C-X>|~ zv)1lwSv366UFzI-wX9)UVsz4s#F-kG9kHN;)>G980K13plGc>|KXJI7iTNL^L*L>+ zukG(gWm>UdGh@H`F>>H|i}}2Ojvg3cyqXHI36N%imI?& zKn?Qqt63oZ8J7_kb?~S|0Vdha#@Vc9=!4*<{`RyQh5yZapx&Osxf~QKk!Q0S(0`qh zA7B|I_$04hVsJ=%oJr5(3r2>CU=i#S zD-0efHRpcf^KM5aCc5;Ubo-Nja3Xve&}YzG%@yuA4j1)VC?(8b=xgW_j~#)1zpNBw z5DYUj?%sEWIC^?=hZ(PxmVGd zi*w~CAaFD;U_D~wNgwtXDTxA&>Wqc00wTjMys*G$Z{F~Rcp=3v-{8^U2$|LwIxuIh z5jzf9xj~`pG@YJ*TM{xUihj^re;4ccbi5m)4f+HDZjoc19!}22bNlle=swa}$J22U z4v*hny39>H6ZNbNh<1sQf}D`k7Y-7zXTQZ?O2lSu-d*vcW4B%cyECSto)o_HY2K!` z7d7B~|9CTz5zHzY;ePhq<)xDL@p|uKb_nk^tL3Pnh%KRg{rz=}>G-;6wK}cE%thDC zjQnAAWt_f$K)7@?lF^rIyAdDCa1AIA6eUuB*QlIC#m*~Hg(5r1wl|xYAQ5_JVq?=& z*5>_1NQed4WxMI{@~WRTeyEq8?!+F8<`2lzhs0$IN4%4SMCqEDU!op{Qx{VY7yU3H z5cHN|aj3>b=MUvFucJtPe+i8&hP>^g7nJ@Cw5bbFzivy^U z00Xo9vu+`A*_tM^>}r|%qwtYvk>>#+w z)D_qw3Mjfj%-&720l5%Ts^s}dNfwt%Tz0aP5vn;KLq@45ZNvw~y_LUGam;a!3YRJai7(3iD zPPl~|H`Vn;#+SFEHA76?kcsmnBFZwGIS}RHO$FF4N=b>KYc`Ub9H6*Gj5Q667+l+V zjYJF*h^dN40!MOIu(pQN{QRT{5Lx4^gI}tun-xR4{zwN;+f>)TNaQk;afB^)j)Ezx zzCqqyPAvLsqV^CmiLJC9@CyOTVV*$Z&p_BykTE{E&zHSfoQve98b>93yOnVCaM~yL zblvtA;KV(sL@wbyZABQP&hP5u&4$avXWgnZBthmQQk@ZwrO5RI+V>}FPG`!XQXRJnYuVv! zGhivhJNR52buaef%Sy-1ZiQoNRdA^Rww=wgc?3^CPsL(F#Xugb*8aSSCqF+eNqJ=$ z4oaSZq*8tLA)UsZPWKNA3mIcHH#7u7)A>p!K-TlT-4ahpvE2RrN2*3*Ft$I#HCkW( z*#W@Rn>mUX5owC1>@nFRZ~tC=8r0ialHUwBp8#0bLL;sg|oj6}`QkP?YIJRv?7Pd(#u(`*)~GaM{o zl{j;j^1ZeaS9htRG{(; z_3FqKJiLP0T1LiwY@l^!z!Y)PRQEb{79JfzG&4zzT3>-_xFufX2?zcPpe0{>KH!F_^l4c_WXi|Fvoef zW=(lK;ra1ds#@gLTv$t~T9BDf%NjQYS6FBPinzOQX(A{{G)1?&^|xrk$MW^)yI*3b zS!I*v=C62--{v;HYmXjGr{7E_+P|qbHWQ!S8zGDQKtu5OZY+ghx%S;lDTM~tYrMv4 z+pSYkd9rKbZV6fKAMLbw%ouW=kH2}gCns$_6++z(zDu( zIkmi;qDBIlXf_lvV&|BkOKs_Z1wsL_)M4Qp(fYkO*jK~(1C-E&8UeZMr3NYXx zj7EnYKET-|XPpKCh8KnEZvhCqM9CVrVQgCKnqvGn)~vnrM}vluXyAv00+*Vxq=w=_ z2eT^uo{$v|&H;8^LZKC+)EvPeL_3$Uz7VvQ;9#)~h5Yn-AAT|LRSXs(AFR`ZH_~@! z)fOLdMf|GeHXR{D?vDj|{AAHIOLH@Px$9})+`?e)s34Ew7bg2hSsE1=VU$Mlq?>+J zTpn6V^~GSS7M^m)A9gOBKOxVN2PMLr%Jg4c0I1~*K&FP!_TA3ib&W`=nc(b9#W_sk zS9*UK=IE+vgv{7wnI3v>Uf0Ssu|xqz2ppmI;6RLCwH0@0ky0p=i?s_4Eh$HE^Wl1Y zQ%-m8x)L=(Ez~8*5h{Jb&vi?1dvT?F{febnwAs__#!JExtU2_(H$e; z|B=czrwT3Jycy0BkIQ;E3+1AfF6M?(Xt5#WS+!-ktq?u}wG|<7N&_>Mn0vy6kFUwy zwX~@jLZ$-1wZE&8XoP0&=kIEuOrjb0i%U&J*f3zqFrb+G*zQmlarRv|k_$D|z9$!a z%b!ml_(geE9lJ-B8kf(Q%p@=bn=3(Cw$fCNexWYCCqI4EWP6zI@1=d*kA5>$XCEB# z)-2^%^Js#xy$Dyu8c_>EW~mUCf7XEM`+J?d&)?^#3O9y^e}cwNlFVo+)hxk?3SV4m z4?*bzJ)S8b)0ORZ2uaZJCzz^pK%1#B0Qw1cH0}Qc6#X0PHu<(@i&|Hn1cU3>(m-h5 zvN1BDon(R-L^we-m)pstx8Nef-wC64>E3tTlld<3zqs_6?CRuU`BA&VeU2O+ZE3D; z$iUr&b>)sUrczB?3d3CIU?Lb$b@T7Hw`oxd5e{`9Z#c(wzqkqDbm02|#}FWvqJc9| zk!~H`R{fR~hkHY9`NOsNm8$AsJ;~{wp=1ma(ISM41u)P8#R1Trr^&!7l~)CSATh6* zn3NB#IM4&47L?<@U=hp&WdTdbS!{F5jWvI`i3fBb+2 zH>=iZRP){o4nuG|Mq(Casx%o@0N#avG zA|Qmt)83=9v#Xi1v)}Fy4QVcUVw461KCH0Sw;F#3v5}@u6=`~cQzNrIg5D^^+!XB| z?|2^`O){pE6s7s`}UpVG~-vD4`=zVS~*~ z0=JgT7M-Et;3xr>4X3RQHAN@J(~($&JO4ZEFE-GyEydJb~PQ0F=W7 z3#gdR_#k9*Hnu3EA--I2Z%p#oz$st1=$h7l2WMg=0S)5dR{6DwsYraM453;|<6rUB zqS9C-J1c=)1Q%YdNGlJC45YO|xJT{2ul)l83blHv8$iRCpUi$IXO;O@i^xA$_}nci zEj5;ejy?EsiiS8rfr9CRqvuOw!pUk&;+K=6FPixNB>DO?_5*E5fb>VycYb|s(i4Ja zo^U!?txkOW zmVrAhQB?!*NrIcNtQM;EZqK&N69^S6E$5jQYOU`7UdP@jI(s|Caqp}Lzm%?{1Zc= z37*g%4{L!O6ggm{UPAsN2usNH>7RXo_?@p$rA#2(tv9k2w<|JFOCW!VdoYFXSiZEH zJK`M_rFH{UIxX)|b}&@5GLr6jcda^}^RJbuzjwsYv-2p;fTlgD&s zGliaobxU1-M&00NqaUo#Wja0l9*=h-V9i}!SmX&2nvt>e*q|b3m&q~PBw2W`EgJiZ z!bNqpjZ{acXvC%X`Oo_FN9QNDugD&EzYnSoyA5Y^sQ<%POmABVLL&Me<+~;bJ2^S8 z&_2y~_#Bf`KB4+&b2~73x(g=9-gsfB#M28}bf>y^tK(G}>5yXQhO+RUj7E>k@nsg$ z3mKdJ?d^dbX1eno4GYfLiImB`+TWa?}XQ0d8bpbDFb4&Y&;GO>3?T_@;@G|>bmV`nVznj&A;QLf2TOw4qN2hr?12da3& zUnkh{`NAwqJq@p1u)b{>La8SwwbCJ0mmL_w`u-}naMtES2i*Is^W&q!VMmqRz;b6T z+`~IIAJoJNRk_FF<&@MNnWu}DmTGiUg}0cf?VV`vcP2~j+;9>$@Y$)&LNARLdwxc~ zo^%)!CbXYbeJFPSW4ZIy;%6`7qAMOTef{z3PV&+DLLin8VzwR@d&)BP@zy%tF)bmi1B9U^7o}8N8~R*sl-L*drMA#Kb(Jl z;$3E<|FjzE~38P)H>k6@UESJJ|bL}D)yb?RS%uY16~ouYAPeo!t7e5QygVx zVI+R?jR}2j(Dg?nAA2(Ck9G~~$D3s|GM;C(PU0BX=z|X)SaUPjQ20-#sHNe>^1pi6 z2d|O~W%y?>%a%AAl+-wOnR69r>3e2st0$axl}ImzcaZC3uoM?WcR6;x+S9HSP=pAG zg-Ljxc;-5+#_U{X?Mzn$GM%pb8T8RBEj--cy87lyBv73>(+OS0fSB_Pc|)qx#^aCH zfu2Jo^v+=EZH6}-&5N+Q;GnZC#nZkKfyVU})bPduT4G%}#N&1J$SWsaN0`TE8hou5 zDb_7(CYxsvy&`^a1uJnKd0j*_29bTpDNq}J~i43Z*l%%9ALMBH@Cn|qnUi2Ll{ z+K3Lz-EDpTPsQ9b{t769YS+P)Loh zAWD9;ORmD@RC#5$MHWunb^Yl^*U0V}S{y6VQ=BidQoQS>M6AQO*W|uwoq#S(2JJCg&s}}(izx#wMs_YbbsB7eUk3tkD z#J}vc`pm|U@33a?T)e@WB=I*hMHL?SRk#d-r?unb_w8p}LrTAd3XJ9}jjF8{(cQQ) zh&;ruQy|Bq5HvXD!K;5igb52?k+2{n0Psrm8WIJ8Gt}^(m<`Ya5Fv+g|LLZ@2cbVD zc}N@akdYNC?UgSQ-`jP)R&Zu0NqwX7Mj}Cw(_J_subg{rh|V#a3U# zyhB1q&vV8qYOo~?G@Bfit;z!kW~^)zt`gLnHw9YXkQ$O8k!b{*VLuZ(9nYs$Pqq}U zOFXXBFfQ;g@7-L0&r+qNECh@O#IJw<3OOJ1<=YDj1}#CrW1_wVfV$7kk-Tu^qAgY- zkZT|!{D&z78)Z9#57lG5>Gus57s?8_JB1}gA3QZU>o;+{V8DyMxc#K0-hI#N=s zx!S{$5G6Q5duB+SjcYa(KS@H4lhz0bpyl>kdT~@>@XnA3gL7gq?)$iTdRj6S$VaaZ z1;8bYGI^!{{WJi|Ow(!_)nmYXc1X`^-yX?VED(o{T7<-Wn;iQycrw>dTSK{_(*M$` z2<=nA{Z)RKQqJu0{tiD3K%--`gM6DbWNf0~zuTbKc}`uTZ$Loc<-SZ}IT(UAWW}Pg zOSHYhFle6)8887Si(nEJtQE7PImSmoZnN9$N8{naO>aD0X>ql*DlMD>HLw_bNj!wfRUETX8HosY#gX&L5L(o7%@kjkWKLK;{V?QtN$-M=>PFco^6g> zv$KDl@kRLLk@$WQLwrMoI zwjsn9FUr6Ee)Hmm?#oQL7cbgh38K7s@fFIS?8S>02(Umv@&!6l68M+qBg@MdFH}F7 zzWV>+101|sFTNtUoU930&6Rgd8o4UU%SYQgxOg-oMw(9K1ar9@9qclFH6Jq$V@#ua z)gBNW8L5)a=f$HH*mrXqP?WKjxO8MGld%3FDk@6+%a;>JtWPz4;wZA=C+xrD$f>9X zCrMwZAYT2y3?b6i%3ZzG)3S1Y@aEL4xB_Qmio3iH`Fyaojk88eBCS=0U29g>=@-0g zcKjcA-Old|F<#zYbdAm3@cYnfEnud2I_K?5W(dR;)YX$F2#?;hp1PQV#d$SB!XPw-|R%N4^9!mOp< z^uK(O_NOE_V@+N7c@*JC`iRWSx7Y=~I(8ny)U3BSH5ZfH*i}xkN3gYG(R;J|r8_&h z77Euwj~?PKmkj84H_AQD3x%sU&PognFJugI;p&mMo=dh2p0lo`ekto_J2w(@X?xg9 zRPP)pYhK`)dq{nKg(R1-FMaBR#Hzff~+wM8AiGU9ccPJLT1_ ze>nKRYPrs!CbVrGyn>2?*MbNlTpJ1zJc@xs6-Bx+2m}N|K#>j!#efh4!a2y1D$S4p z0i=aML`vvQI1r_W5MlyKGe8pQ1f>LS&Ykyuym|9x?)!27?U}vznl)?I-rqOh-fO8S zmaG?%;!)h5W96^gmDYF1uLkI?W0b`ut%vq=Hw{LY~RF_F? zNd%^ZAY6YxPAVj?D**MdDR{wDHILO8weL*Gh!JwhdRLqv4}iuF?S}=z*xHnemzP3E z%Y5tjV?_`W7aM6ap)v-&V&227OH;C1A9Vt`gX646?}rS@h&sB`}R^*Pf zYssoK7Szm8BEo|Po$-Qx!~$I3fr(To-tIj_cOxqpBuA5W~tl6;pA9eqeq+C0qv|9E_=qi zC%`i3CiI~Ol~pOd*X(%V&RNgBIj2Mda^5w(F{!aENIJG=rBkrg@V;0c9@(^&7;*bB zbAh%P+T_()&t*S!r9i|5x;j7)7LZr3ZKD6~FqFDYRXKO5$t&z@Npx*6ulyT~Z8Y)? zKaFNBR6(ay{uVHG5Zs>84TpRXi>2%tK3b77ao~G$ai76GZ!V%Spo2RO=*Xa)mU!Pi zgR=(@+UYl4WVzR2PnSJ_^lMMQxo*;Zx}n;dq81hxzE#RQxl6p1e5+Wi6&R-0Yky8_ zf;dEX(DA;yQA&)+b=%UeE|Tcqg6T^8G10>rsysbPtbSqTFq>@fl(R( z8@MMh=IV=+GK)~Riuub)GWhY5>P5nq5v_Q>L+B`2R9(20HfW(_uL{9&xfa(p(^87` za3m#BO_%>$l-xpYs%%#6D@k{&>~}jeLeDlzui{4Q``1sHHC4=i8m$l^Vix` zfk3CQ)`(S#If+Of*{po7E(Y7xL! zDr($oo_hTFaXr`}D`8-m^uL8*lY*Z_aR7E-{-GDlEZxwYafIjid?`gx@4T?FsGpD1s4KI? zO2j4jEpmhO-kPT=^Tr#hOL_q$eG!&cZ2Wm*#j)m!If_3zQtLn1%YDKWdqMh8b{J3r zwX!0*_tu)FR#gR25YBP2zWKjbF-nUPB=BadV<^d(YjR0c+N#ieTl&9R; zYU~W`-5typ_eamCPd@^n021)8sq~zjiVR>~FGp1m?F1)Sihd1r{st8z4v4U+d3Y{& zFK_2LQ@f7kr>W+Q|DGQQuniTVJlvZ*{DieI7oiS)l}WU#^ESc)V`LzIcvzDd*# zjcQ7We;iEx#}Yds#jgDGY!vCgHj1k0+sfYSpNq153Q#xr%Y(GcOxR**f5R7q|9Cxw z%XPrks{$BjMPar#hYVT=twuoC-6f=B!MV??1jp^fCoM#DViIcb(=}dod-XE5m;C$h zdoX-70Cqi_pbh{GP-pwMWsY0VWsiyc;4Cd&c5yL%H5Qakh`1vqKcb?)AFyNpvjYx* zFX4Snd}1pjxHB81QJ2fNK+{CUkmL-@ML@MUc&kF=k=T= zNckdhIJ|LxJFv3k|Db^Hk14c^1IGo$ii#Tq>6340^YwN|2M8s%A0@@_wTt_LR$4)E z&u*DSt~UJYmYFSdYzZJtGZD-vmsMzWgw2;Bp_u+~UA+9Z^9Zk(EY{9>HMD;+TDwES z%j0pnWMW~oR5&L^N-~lk7_)6wrEOafBC}uFyegJtX)7B8F9!t&-!a$d<}PHz<#)#e zV#Kwd@`g0YnY!RX!ZI^^>MX}aCRZY`a!xGILKJ@3uclzeA)>?jQnceLWs_v*nzyek zobe~^-WMgGkd^M>g`vjCSmKXnvo9yD(v$Y_OuUBDs1%KGa>$Vd;(h1}DeS*ZA?JFA zy2a@?f2{digdQk`)ILo#HJYx__R@kvJ>2ZAWl3lA@F3 zPeN&ol2~b#^6c4q%~lQYn!z4CHfY}niRuFK2?&i5onGwgfgh=Ue7CY8HQFGX+PqV|t>rZN(H2_6wdf6iIAhn`<=RB~nWeS| z=Rk4MY2+ykzUp%aY$u_rR-NWsZ7?!Bk`|=tRdVYn#^N``p;WMlB^Y333_Lmg#|)uv z*H16|#8`l{3%ynR1ZOPYJpU->g z2?vQ#-`X?A4O?FD5*!4tfMbw$0sU;r7IJmR&MpzHcvYu$12QGqt6M~O$B3oRIHHo9 z!HGM*z;(!!PYT+)B;g_z#akP83g<3OHP*tN8D!ai?9sdY=iaO2bsFKDmoZ&nr2;gP zNWM_!;qzqAbiD(AMDB2Kfw3rYr4IuUed&oK=F|CMV@%ucPsw}ak=5|_2O_7^^VwMrZ;R1Ahu zZ?xLLauN6k)93tl_0v)L$exTu=PGIQDn|Mq?kqDT>w7JJwZdV#zL{Eipfq9#DI8d2 z)iSISzdz}^|I-3}e^Zs1;(R$FQVyj^PZD^Om<>76Srf#?ex&UWqUp__e0$JVe-WF; zxlSQ_sV8a5|E!?a=moYa=H{wSXzI&=@{$op*HW@&YI1Ch+y@=BgZEo;4uW53RWqQj zWS8_eQ*ZFBOL958k8r1!kfpJ^6&X8zVv^-K`9`LaMf|w0zaOSc^S#K142pTGvnKjg zB@bo2J|c_y!7xU4DeD@QQZcCh7{vU$fbV2ShpME*=znBvI#b^*I4+Oh*i4FWpzBEV z;OZP_m=)WYwvJ9m5E}0@5@{6a8#c?KmFA7A$z(T~vNHO+a7CRZ`1wfFmU7|)mdy+5W}>O%Q1jV zcrac=0@2Bc;gV`u;HFjajibuGv~tdkFKD8uycm~FW>oXdFAe-On^4+>wiP0Vr(YQf z{H7ts*rIW7c2!XP@OYQdQpw)V)7Z_v;W>vh#(8fU6DGG6@`=iJd|i+|Zk@d7M;>dk z=-mZ596A%CA~0)|F23mf$#+FZF|diP1H{Gaf?b+do4sqMyp zEIlQp@+&`c@!B`;Q*9ySCTZxswo|LLl!;`0QG^vNg1(^~~Qy3N+>2PCkoeZr4L&_cGu#kpf z^qezS>qY8benuD!mYB4zl5_if=OE0(Pc!TB4>TS=i7*wDbhK;D<8IuTuI zmc-8eKP8sssW + + + + + + + diff --git a/html/classcore_1_1TerminalSession__inherit__graph.md5 b/html/classcore_1_1TerminalSession__inherit__graph.md5 new file mode 100644 index 0000000..26b51a0 --- /dev/null +++ b/html/classcore_1_1TerminalSession__inherit__graph.md5 @@ -0,0 +1 @@ +d5829035a834b57087414d9ce43d9dd0 \ No newline at end of file diff --git a/html/classcore_1_1TerminalSession__inherit__graph.png b/html/classcore_1_1TerminalSession__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..f5370a22561dd394307da05e2611fec195c51a53 GIT binary patch literal 14989 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 Y347Sy=*2%n)|UcgBoxJ~MU6xL4`569L;wH) literal 0 HcmV?d00001 diff --git a/html/classcore_1_1Thread-members.html b/html/classcore_1_1Thread-members.html new file mode 100644 index 0000000..6cae7dd --- /dev/null +++ b/html/classcore_1_1Thread-members.html @@ -0,0 +1,90 @@ + + + + + + + +My Project: Member List + + + + + + + + + + +
+
+
core::Thread Member List
+
+
+ +

This is the complete list of members for core::Thread, including all inherited members.

+ + + + + + + + + + + +
getCount() (defined in core::Thread)core::Thread
getStatus() (defined in core::Thread)core::Thread
getThreadId() (defined in core::Thread)core::Thread
join() (defined in core::Thread)core::Thread
name (defined in core::Object)core::Object
output(std::stringstream &data) (defined in core::Thread)core::Thread
start()core::Thread
tag (defined in core::Object)core::Object
Thread(EPoll &ePoll) (defined in core::Thread)core::Thread
~Thread() (defined in core::Thread)core::Thread
+ + + + diff --git a/html/classcore_1_1Thread.html b/html/classcore_1_1Thread.html new file mode 100644 index 0000000..7a85d14 --- /dev/null +++ b/html/classcore_1_1Thread.html @@ -0,0 +1,158 @@ + + + + + + + +My Project: core::Thread Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::Thread Class Reference
+
+
+ +

#include <Thread.h>

+
+Inheritance diagram for core::Thread:
+
+
Inheritance graph
+ + + +
[legend]
+
+Collaboration diagram for core::Thread:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + + + + + +

+Public Member Functions

Thread (EPoll &ePoll)
 
void start ()
 
+void join ()
 
+std::string getStatus ()
 
+pid_t getThreadId ()
 
+int getCount ()
 
+void output (std::stringstream &data)
 
+ + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+

Detailed Description

+

Thread

+

This thread object is designed to be the thread processor for the EPoll object. It wraps the thread object to allow maintaining a status value for monitoring the thread activity. EPoll will instantiate a Thread object for each thread specified in the EPoll's start method.

+

Member Function Documentation

+ +

◆ start()

+ +
+
+ + + + + + + +
void core::Thread::start ()
+
+

Start the thread object. This will cause the epoll scheduler to commence reading the epoll queue.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1Thread__coll__graph.map b/html/classcore_1_1Thread__coll__graph.map new file mode 100644 index 0000000..a6c65e3 --- /dev/null +++ b/html/classcore_1_1Thread__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/html/classcore_1_1Thread__coll__graph.md5 b/html/classcore_1_1Thread__coll__graph.md5 new file mode 100644 index 0000000..a99c075 --- /dev/null +++ b/html/classcore_1_1Thread__coll__graph.md5 @@ -0,0 +1 @@ +d6a2b4a77e8d11092648ef962240b7cf \ No newline at end of file diff --git a/html/classcore_1_1Thread__coll__graph.png b/html/classcore_1_1Thread__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c39d4199d33e89ae757c4f45e32571d274c6ad6f GIT binary patch literal 3072 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 + + diff --git a/html/classcore_1_1Thread__inherit__graph.md5 b/html/classcore_1_1Thread__inherit__graph.md5 new file mode 100644 index 0000000..81d9e81 --- /dev/null +++ b/html/classcore_1_1Thread__inherit__graph.md5 @@ -0,0 +1 @@ +729ea49a8b15bd0991afb3f277caa4f6 \ No newline at end of file diff --git a/html/classcore_1_1Thread__inherit__graph.png b/html/classcore_1_1Thread__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c39d4199d33e89ae757c4f45e32571d274c6ad6f GIT binary patch literal 3072 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 + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::Timer Member List
+
+
+ +

This is the complete list of members for core::Timer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
active (defined in core::Socket)core::Socketprivate
bufferSize (defined in core::Socket)core::Socketprivate
clearTimer()core::Timer
ePoll (defined in core::Socket)core::Socketprivate
eventReceived(struct epoll_event event)core::Socketprivate
getDescriptor()core::Socketprivate
getElapsed()core::Timer
getEpoch() (defined in core::Timer)core::Timer
name (defined in core::Object)core::Objectprivate
needsToWrite() (defined in core::Socket)core::Socketprivate
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprivatevirtual
onRegister()core::Socketprivatevirtual
onRegistered() (defined in core::Socket)core::Socketprivatevirtual
onTimeout()=0core::Timerprotectedpure virtual
onUnregister()core::Socketprivatevirtual
output(std::stringstream &out) (defined in core::Socket)core::Socketprivate
receiveData(char *buffer, int bufferLength)core::Socketprivatevirtual
setBufferSize(int length) (defined in core::Socket)core::Socketprivate
setDescriptor(int descriptor)core::Socketprivate
setTimer(double delay)core::Timer
shutdown(std::string text="unknown")core::Socketprivate
shutDown (defined in core::Socket)core::Socketprivate
Socket(EPoll &ePoll) (defined in core::Socket)core::Socketprivate
Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socketprivate
tag (defined in core::Object)core::Objectprivate
Timer(EPoll &ePoll) (defined in core::Timer)core::Timer
Timer(EPoll &ePoll, double delay) (defined in core::Timer)core::Timer
write(std::string data)core::Socketprivate
write(char *buffer, int length) (defined in core::Socket)core::Socketprivate
~Socket() (defined in core::Socket)core::Socketprivate
~Timer() (defined in core::Timer)core::Timer
+ + + + diff --git a/html/classcore_1_1Timer.html b/html/classcore_1_1Timer.html new file mode 100644 index 0000000..ea6883a --- /dev/null +++ b/html/classcore_1_1Timer.html @@ -0,0 +1,223 @@ + + + + + + + +My Project: core::Timer Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::Timer Class Referenceabstract
+
+
+ +

#include <Timer.h>

+
+Inheritance diagram for core::Timer:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for core::Timer:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + +

+Public Member Functions

Timer (EPoll &ePoll)
 
Timer (EPoll &ePoll, double delay)
 
void setTimer (double delay)
 
void clearTimer ()
 
double getElapsed ()
 
+double getEpoch ()
 
+ + + +

+Protected Member Functions

virtual void onTimeout ()=0
 
+

Detailed Description

+

Timer

+

Set and trigger callback upon specified timeout.

+

The Timer is used to establish a timer using the timer socket interface. It cannot be instantiated directly but must be extended.

+

Member Function Documentation

+ +

◆ clearTimer()

+ +
+
+ + + + + + + +
void core::Timer::clearTimer ()
+
+

Use the clearTimer() to unset the timer and return the timer to an idle state.

+ +
+
+ +

◆ getElapsed()

+ +
+
+ + + + + + + +
double core::Timer::getElapsed ()
+
+

Use the getElapsed() method to obtain the amount of time that has elapsed since the timer was set.

+ +
+
+ +

◆ onTimeout()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void core::Timer::onTimeout ()
+
+protectedpure virtual
+
+

This method is called when the time out occurs.

+ +
+
+ +

◆ setTimer()

+ +
+
+ + + + + + + + +
void core::Timer::setTimer (double delay)
+
+

Use the setTimer() method to set the time out value for timer. Setting the timer also starts the timer countdown. The clearTimer() method can be used to reset the timer without triggering the onTimeout() callback.

+
Parameters
+ + +
delaythe amount of time in seconds to wait before trigering the onTimeout function.
+
+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1Timer__coll__graph.map b/html/classcore_1_1Timer__coll__graph.map new file mode 100644 index 0000000..6806beb --- /dev/null +++ b/html/classcore_1_1Timer__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/html/classcore_1_1Timer__coll__graph.md5 b/html/classcore_1_1Timer__coll__graph.md5 new file mode 100644 index 0000000..5180b00 --- /dev/null +++ b/html/classcore_1_1Timer__coll__graph.md5 @@ -0,0 +1 @@ +946bfaa407adfc3cb9e7588cef0bc6c1 \ No newline at end of file diff --git a/html/classcore_1_1Timer__coll__graph.png b/html/classcore_1_1Timer__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1703037975caa61e0286b4a8704881f43786d57d GIT binary patch literal 12565 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 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1Timer__inherit__graph.map b/html/classcore_1_1Timer__inherit__graph.map new file mode 100644 index 0000000..78e07e3 --- /dev/null +++ b/html/classcore_1_1Timer__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/html/classcore_1_1Timer__inherit__graph.md5 b/html/classcore_1_1Timer__inherit__graph.md5 new file mode 100644 index 0000000..a0c29aa --- /dev/null +++ b/html/classcore_1_1Timer__inherit__graph.md5 @@ -0,0 +1 @@ +2531a94a4bd23c0bce2906846d2fb660 \ No newline at end of file diff --git a/html/classcore_1_1Timer__inherit__graph.png b/html/classcore_1_1Timer__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..76b6c3839b313e73846d1513b34ab123fddd0261 GIT binary patch literal 4368 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 + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::UDPServerSocket Member List
+
+
+ +

This is the complete list of members for core::UDPServerSocket, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
active (defined in core::Socket)core::Socket
bufferSize (defined in core::Socket)core::Socket
check(std::string request)core::Commandvirtual
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getDescriptor()core::Socket
getName() (defined in core::Command)core::Command
name (defined in core::Object)core::Object
needsToWrite() (defined in core::Socket)core::Socket
onDataReceived(std::string data) overridecore::UDPServerSocketprotectedvirtual
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
onRegister()core::Socketvirtual
onRegistered() (defined in core::Socket)core::Socketvirtual
onUnregister()core::Socketvirtual
output(std::stringstream &out) (defined in core::Socket)core::Socket
core::Command::output(Session *session)core::Commandvirtual
processCommand(std::string request, std::stringstream &data) (defined in core::UDPServerSocket)core::UDPServerSocketprotected
core::Command::processCommand(std::string request, TCPSession *session, std::stringstream &data)core::Commandvirtual
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
sessions (defined in core::UDPServerSocket)core::UDPServerSocketprotected
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
setName(std::string name)core::Command
shutdown(std::string text="unknown")core::Socket
shutDown (defined in core::Socket)core::Socketprotected
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
tag (defined in core::Object)core::Object
UDPServerSocket(EPoll &ePoll, std::string url, short int port, std::string commandName) (defined in core::UDPServerSocket)core::UDPServerSocket
UDPSocket(EPoll &ePoll) (defined in core::UDPSocket)core::UDPSocket
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket() (defined in core::Socket)core::Socket
~UDPServerSocket() (defined in core::UDPServerSocket)core::UDPServerSocket
~UDPSocket() (defined in core::UDPSocket)core::UDPSocket
+ + + + diff --git a/html/classcore_1_1UDPServerSocket.html b/html/classcore_1_1UDPServerSocket.html new file mode 100644 index 0000000..ec8fbfc --- /dev/null +++ b/html/classcore_1_1UDPServerSocket.html @@ -0,0 +1,263 @@ + + + + + + + +My Project: core::UDPServerSocket Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::UDPServerSocket Class Reference
+
+
+ +

#include <UDPServerSocket.h>

+
+Inheritance diagram for core::UDPServerSocket:
+
+
Inheritance graph
+ + + + + + +
[legend]
+
+Collaboration diagram for core::UDPServerSocket:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

UDPServerSocket (EPoll &ePoll, std::string url, short int port, std::string commandName)
 
- Public Member Functions inherited from core::UDPSocket
UDPSocket (EPoll &ePoll)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
Socket (EPoll &ePoll, std::string text)
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 
+int getDescriptor ()
 Get the descriptor for the socket.
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegister ()
 Called when the socket has finished registering with the epoll processing. More...
 
+virtual void onRegistered ()
 
virtual void onUnregister ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+bool needsToWrite ()
 
- Public Member Functions inherited from core::Command
virtual bool check (std::string request)
 
virtual int processCommand (std::string request, TCPSession *session, std::stringstream &data)
 
virtual void output (Session *session)
 
void setName (std::string name)
 
+std::string getName ()
 
+ + + + + + + + + + + + + +

+Protected Member Functions

void onDataReceived (std::string data) override
 Called when data is received from the socket. More...
 
+int processCommand (std::string request, std::stringstream &data)
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
+virtual void onDataReceived (char *buffer, int len)
 
virtual void receiveData (char *buffer, int bufferLength)
 
+ + + + + + + + +

+Protected Attributes

+std::vector< Session * > sessions
 
- Protected Attributes inherited from core::Socket
+EPollePoll
 
+bool shutDown = false
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::Socket
+class {
bufferSize
 
+bool active = false
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
+

Detailed Description

+

UDPSocket

+

Manage a socket connection as a UDP server type. Connections to the socket are processed through the session list functionality. A list of sessions is maintained in a vector object.

+

Member Function Documentation

+ +

◆ onDataReceived()

+ +
+
+ + + + + +
+ + + + + + + + +
void core::UDPServerSocket::onDataReceived (std::string data)
+
+overrideprotectedvirtual
+
+ +

Called when data is received from the socket.

+

The onConnected method is called when the socket is ready to communicate. Writing to the socket can begin on this call to initiate a contact with the remote device. The onDataReceived method is called when the socket has received an event from epoll and there is data ready to be read from the socket. The default handler will pull the data and put it into the streambuf for the socket. EPOLLIN

+
Parameters
+ + +
datathe data that has been received from the socket.
+
+
+ +

Reimplemented from core::Socket.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1UDPServerSocket__coll__graph.map b/html/classcore_1_1UDPServerSocket__coll__graph.map new file mode 100644 index 0000000..35577b1 --- /dev/null +++ b/html/classcore_1_1UDPServerSocket__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/html/classcore_1_1UDPServerSocket__coll__graph.md5 b/html/classcore_1_1UDPServerSocket__coll__graph.md5 new file mode 100644 index 0000000..ff0577e --- /dev/null +++ b/html/classcore_1_1UDPServerSocket__coll__graph.md5 @@ -0,0 +1 @@ +dba3a7b38e61712551de235c7031f22f \ No newline at end of file diff --git a/html/classcore_1_1UDPServerSocket__coll__graph.png b/html/classcore_1_1UDPServerSocket__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c3406fd5fd71dee5c666d3e04b588e7fde1f4aad GIT binary patch literal 20132 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 + + + + + diff --git a/html/classcore_1_1UDPServerSocket__inherit__graph.md5 b/html/classcore_1_1UDPServerSocket__inherit__graph.md5 new file mode 100644 index 0000000..8d080e0 --- /dev/null +++ b/html/classcore_1_1UDPServerSocket__inherit__graph.md5 @@ -0,0 +1 @@ +9742ee63ec5c55745178b400daa2e990 \ No newline at end of file diff --git a/html/classcore_1_1UDPServerSocket__inherit__graph.png b/html/classcore_1_1UDPServerSocket__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..698c647a40c2d8eeee874282f0af5d4ec9f98935 GIT binary patch literal 14016 zcmch8Wl$Vl+vecz1a}SY4#C~sf-^Y5f(CaTf=h4>!68V3yL)hV2rj{8JMZ)P?$-X> zqNb?n={|a&bM8wzN=-!;4VefT1OlPS%SmZ~Ku|cq2M!S)xY9`n^A7k2Z>}gS1$zDa zm)BOB1OicjTQpz9O8@(?Y>oB5_J#s!KU<%hBkgogtidi?7^ET$}QGdIalOzmNx9d}Y|;jakiP_JDB=Lri5x&;9pL5{&0_pU3Yal zfgI72AkR>3q9hdR(Qudy{te$^b~s-s-uxdVV!QZ zks^OkGNqLJ^L``@fBly=}0v-`%HKc?%mgiTUYPdi;qE(p$L8+U~|R@OTL##MSRa<>)r6MG4Uy&pxWQ$$@^?#Sbwp|oS;mD zl9IAQxZLljq#N(8kIEVg!zWVG@fX3Hz$iis=11no@hX8YpIAyaE(GTHYOK(p7w&J( zMwP2+AMYFaZz0Dh4w;20h8YwLUJiTePF7&P6ltq8Y^p2JV}C2#*C?m|(w#V*{F>}YcLU&3?NDRM9 zY3SsC9F^)4@iU7v=DlabL7*<}BFGLXy@pFPG3+Tj9Y|Bxnn!mxCYOoE4V;Aca1Zm2 zSMIJ4)x29ZKYIlNoBZTxZYJ7Bpo5avYEf;r&(35w3PF4j|u5AwAY5Y1pv zNi1WtQRcSBOJzmt&&*GP)zZ-jBOfF{Te6XUcO0tY&!4;;?2xXy4GrY=t6t);tT_KR zf)NLfZ(1|@&rI6ZuO6CS6Xbpje>dmLV%F~e!}g3bQ$AL7r(| zpKN%5c&0mvn-65i{ko^gBmT%$&Xg@=(xD;2Y)IfS=@3(XBf-tTe4K& z@fxm{vT|{fYTx`xL-;saR2SwNJJmF!TRb_b=H=xjcB1o1hks>Eax(`vnzFd9@*6D4 z03{6#?CI&Lwy4`5v2_*IZ^5`{+gs=F^Tc)Kzp*poXdKe;;pfX%XHVYV!;^}(9mIV_ zeUKGr%&s{kdGEy;aYj&-IF<7syRmyF%c6ifne&5O++;88EP&P zkOSGDnAzO1)Y#h(4HJ=y!K3?XV$y+~ge5Ht?#98uz-XuTl~F8bjg5VY;B!K!U}9;K`V;`Qu2Z7xwTc;Kk=#?8}{?auiN)w9FWM|3(mm`)cWIk~&)_Y+2K zK1lp3p#}}YE~oEF&PFt*F^rxKetcE>m8CUYJRZma580k9l0R`(9hl~9QX;Sz9LDbH zv0xd`?O;1=mg-W^_*%y2G|ldHPDCPnXVSGujE2^QpCbQ~gY?<(t$+YFDmj@{Sb-JL zh{^2%wyFAk&Xv}CSnQ~xjavZ$4Q@M2{nJB2f`dGRhIkV_iLink;7+BF*A~~m8&Kut zof49$8C=ONP~(VZ9|{ireX_!krJvO@z9zsRd@!BNoAr8qhaw=58*ouBM-y6Ed5EvP zJUo0?zpkGD6`v7@r`AjowzcgwT#q?S%ixJmZh0|7oaUiUxqJ8uTcL3OmSx6IHY`am@~IX|-oMoJ-hmCi^BtF{IYp$Jouf*X30FF@ge_`2D+GNJvPS+r1vbs(GM5L4h!xd8N8&nx!|r zg9+o4(*Ki zC#!I0Yv4Thqn}zdc7elEaWpio-Qj4~?2egC;b`_TgM;K87BXyF>`L4S^9w~rUkIILAfx$UjOw96qQwn&jwg)VNt2Af^JxSXxIW$|+q4t6c< z>}d7&(`}Yl6KUBzOif)lyVk)E_z9Q0oo^_|5;qajt0>9#gqytZM!yv%;*&Lc-~NP% zfU(xw>isM#RBmBaVzNmE6`0C$gv)>pI+!g-IzAbzwHg~jR?U6O3(Po03g>8c3o)tC zQogC_x*g2cR>5rqe~Nh-hu0y}f*`mJ})R!%}^fdM>EIxWd9V zUuO2KwxNxVUSr{Y%$z4FxWrn@xQ{@3I#PfU0?=Gt0zt)n4LVv?r!m;@t2N)+i>^6mZ>1nWnXv^~$fsc}%%S_5e`yrl;lM)rJ z)~nf7d;yI2NZJ_|o<{~y13FMcAXP3mvpLT%^o6TtE) zRb4k-Z@2fArF@h~k4migxwXWOUemhG+(ToM7- zn6tM<&|j63(>b$&I>yIQMLzL%kq3}4xb%t_-2K}RtYgUxBF>LDTv_k@;?Lghpr~iO zWdIAmVOA`ZNj+FuBpXR3-4sH;m(Ze9kkeO%OQWOcd^0r_@3Pqq(_Z+QO$=NRntTtm zh{bRz&+pOaZ;RH|2l4Yb)j5a#8JoFZURJTNTrhO2gtvr{8R!{tXbX{nc{uzvL{@1q z+xL5x+a|3ppHrRcn=5d45`D|YLhbV1S%(x*x+_o$)whp~da0+Y#Q823ibNV(Luwgs zqn)<=z5Jz5jks}0}9|Q!L(R-3Rh$gMi?FV>bVw?(NzhGc6 zVu3yfe#=2ll?KB0a;Ivcfr$tSsrn8gISef8uCj+RQ+;?eJ0uho$qFMym>eb;Anz#s z{WoeRG0nGnSr=-zsS=acFGwSjgDn(ZIL7`tNY63xAJp&R zUcHG456$n+JrGfa#eor`V8nS>qszY`ig`uu(LK?^wk`fdn)UK1w2+e>+s>s5YzRyN zb^ltb?xt^0)Fb`QXo%A9t@0na z%(1XHqGcLT&1@D4L|`Paz67;4VSGRo9ZIWaMMwWa!!Gz_;t`MsPRBGaS!PEC5>_-Owh ze2=XzuAB4jbq8M@k-5u#L#0sy3+5Q<3EM8aAIzo^r?j<23q20`iY#;HYuc$Pg#9ZY zWA)qCpd6Nmj*f>S96TQ9(MP8&SYl#T%_csCa=p&UjG8TZr;Za?Y{?$?&fy#<@H@>( ze^AsP9tx}Q^z$pRH62;PAeh*zSnOjJ9bryxC}K`qMAIMn43v$!s;Bp$=;3NbY_;ek zDD)y>Q1e7OY_Uc=NQ!(df6R#Jk00Us5;|=!b(nK~q<^fM$_{24n!HhZVJ#12!b ztDyp&>6~Mc|220G;9S6Bj6r08daljw8cs+T78GLL~5+yG&g-VsB zCjWFt2=SOrmC#nqtZj-UrSy^P)ulp#zWbOBi7M7QjA7KQkp|w=Yj!ba>Ow=wd!W?}YKmO*RpG zg$Tn=RXavJ?mVs0@!&^0yA%H0eV}hi8-GW(!0f9;DUuonzoVkq6wY$Q@59n^$$DnG zUmE{(14mdPJbf&WlAr%AuAvSJUqr2La9Xmx@GB1^PQi6n_EDiSv0;UQd)C=oySU-d zudpWTRs1en=pR-Eba`k7&`_oGKxcd zri8&)HsMQeuT(oVE{AC#PAZE~bZ4igUR`LoXqkdShqXBv97ZV_4xDLP8VnKX1UQyp zB*lOl>@uU4Mv2ORe6>LNq@NVr*Vx!Nwrn+w49{f}1DE{bTZZ{fmN4FQPR8(Qnh9a717X&=`{xJ_0$2 z(ic2v$TqTnX=NqDHldX9_wP~!LX9}QPVWG?IDH2x#QUnmDF6OFXKO1jt}l}MJ0qhd zt}@0#8TZiCRK$R1cL*>GLBmDZt^V2YsuL8J;9cC-HYnHXkjdF%k)&@0<>g^hg+k`r z{fNGIc^f7_s)3Yhhnb5Dp(o-sDmhszvQK)z9Sf0P5MQrs7YB7p_*)qI0bSE7HtWiD>T-43+Xjs<<{K$1;7+uN@+QykHtA zCURH`y+|Yc?k)|0Nbo^{A!2GzcHmeQw5z^>0XR03c3CfeG%sU)p!H%D8|(lcdAeO! z)oYnUIayi^-sZQl!F?t{w?JK5`flBg0Hi>ugwsUjI@y7G6_(Tx1|&utf$3kk`A+M5 zh#0p)F^ZCU`m=$xF7D1G6xc`<337*y=<&XOEmRyAJU3?@& zD9?T#Z=<@Se**wGpgfow-?~~3aR9jeUF;bHje}|G8E0JTG?bKS>Xink#?f*#f#voV z%|ChjulAiN6DDOwOV8Smf>@34wg(do|Kgi<7cJzI46Wd7AvW`k&eU8ZO>;A|$fbrj zF9m5(Cy?(}RmEKlkjvU^@B$zpptPb;W2)P1O-^m>@s}V4#922&wwPdI#L~pN4yg z#Bk?&hY%Ij>E>{XEKmUwP=V{!9?sLP2^FcAHdVIZVxe~VPrbHG_>)8gVDypDArfsq zB{s9e;Xp1+LZ|A{Rcq1Yax|yeUiel7xM6T~6hL$H?B-IBRO`12xF)x!ag)upv~v~t zP!mkiKz!VswuQ&WIsh{p4HS`e8G$R}ya7)ptd^aCcP|E}LRfB+&DX6iVdt#^Ch!vO zKhkIAPxNnqWhs6OP;5Y#!!b%>s)rT+GmBQuY26coOc!vLAS+NjmVk8=P`foEKq$j2p7QoJ~ArIh1Y5*9V zECWy16>u_?0+>Hb&^@BcOWQ?8<|o0sR#E_JQ!puxdXf~2fi+ZwJfy@`Rf$DDO|v6? z`!HQp<#o#n11ym{NCECwrQsls@X5&$XHO?IWo05)x!H`&-(5Y0XgZaGDlj=|P$}{P zSt7(S1Mw#22a}CJAGLeun}~td)_%Ix27*SIG07DXh^nJGcQYp^V8%71nOWl4o%3-1 zmLM6O8a!MS`*#Iz_B0&`8P9&McH$HExrRnSU)d0fmMG+8DD2)w!1<$5ox|{OZ5y7# z6hHO3fKx3aSzZ3`^^N^`QqNQ2fs1VpAi(vs=)hvYW!V9PgSoK;AgY0F7d1GfaAO0w zTrL#wdfM#6L$*KO2h0zpdPXu;z>_H(8z4|>~|7Uj?2gg76kRD=B z&)bQBp?6r=*xjH>)vowJTbp!7G05;M5)#t=N4L+!?P`RBN5K<*oK zPe*i;v|H-QV09z~d)*zdGF!S@pPE1Vvd`$yi%KM6_JA{Y&;gzL3 zS1~4F<;rVCxD~g}gte!}_VFSU%Cy?KGk{`G^f)xv)1*J-PKf{c*0V-Lh|teEM~so2 zzUSXin=CC2{_(0jtnVyJP=;TP=`!K_mha>NsPkPfE^V7lXK)9;*6Mb5?q&w;+*~0U zc%byI(K@nBPgn67dB=?oZsccw&+t9#c$m>qW)7xvEQsJ)PjQz2!BD~Zgt(zn+Xd-+ zWjEFGIc}GM3F0J|GJAej)|2Q{?U#(se_=ll?Fk)PdCYnrycb)d$nqnE9-6aJZ;=SR z8aZ3YhjP!&{da3$i~V0Aidq-i3E6=G0mt!sIy|P9iv(4G05-z>F+he{0{Z>b*HlVW z7UDu{vA5=2pPN4IhUZCMP4!f9K#%Y3sMxCne6QgR&T)bH_y?tb^~vRP^rsQ3>L%zc z%J=<0B(Hk0dIuj)O@lC@qX^95#cYsK3Jn(;Hu=el{hr8aYcBdO5bQ>d-Mq9>J?+o71izQ7^Wx#sGomT3M}H zJK(A27Hg-mEE&kg7XLp((=aFN@PEXvd-+z?0F&u$0*m8Sow@bVn3IvwfE9|yKeGro zn>~L&hN&cRo+TYD^*MLtDVy)fgj?L3@-{g47j|60_ zer{O1bSvqwq_=J~ORX%e-)1XS<%JTJ{ryQe$3!^ioZZD@P&do z+50=waTBjCSC+UCSgpLvl^$@_KaEq17oc6yt!@bH>N>Db}eSVf;s;2}QNJB7XN{ev%I=%8F3F-#~kM^9_|TzA;%4T*W2E9wO`p zNbHg%ij8FQTbN1$xNNQnj%fIB(6(<_$`o3&$J*%%o&Pg!5lmnn-DoVf z^Xt?A4A#~F#(D1~E?w}-A_{C+33w6aC`a+?C6MsHXs+m0@JgsTl<#T}@TedyAqa3+ zi9v0BLx1uIPnU2YV58c^hy?*hs^BX8wFU0~;1xn*cljcIRQ!Pl8MM{x<&MeH^f;^JCRUG2++`PCTm2JT_-4jKs9nPt|3ln$tT=ZZ zyCK+3i2_qUozD+_@jAbIS4ED}U8HWGe{s@eqibob@AV}sc4x75);77L2@j|a&BY{BLq*TfwNB%4xFmuN~t`Z@uMH>{T z6phpooho8Tk3*W=u-z~ed##m{A$sfGYM4l*BG&d zEhl#KK4MgZjTpQF*S!S%)TmfyC@BfC#GF7J#b9T;^5l7=oluvgN=#uZ+!uaVlqiM? zm$Pd@ug4D(!L2toBNsVez5Y)!bGOs*X&vdyYDP#H6jzP2rAYho&}nh~R=i2kK;2~E zitXWC4VYB68mzmv+h)ytawn?;E%Y$rJeMB?H#5&+nu=~xudb+CTPhG%@;X$D37N4B zchBTXb4sn58QLm{XBw%EI374&52M!Cr8l&yC?8OAG^`h2kEm?{`t7fObTV^anr+QR zbX1>uRb8i~e;7t1it+eeVp8f$Lf?`bjin}}=mcS(iu z$cux{0qKpgffpHgl={fSn{1?RaaEaG-%ZocN~=`lk(WJ`<#~$W zj{qRW%>lB)D2uAMM9Ruc2Zs%kR#wc@(;v=BWf^>R=*Gv#5s{EKsbi*x##2q#T5W9X z47%rZFkT;Xd4A99u2E8FXEQkogTad>r|YT!;e+ILcP{e1Aq-FoD7bmTibWGP>PHUc z@1I^C&6o{6a3v@y64<{x8sgVm{SjYo1X6tJUFVA}NoM0Gwt@mO2^wrMW-CO*gCN@( zpG#6@{ZIf}O@86Cb#~2+uc%m=aM}M5slhKW+jYBsD;|OV$6H0tG791!EBeA8okV{o z_7+!+YUmlUvZMrYYU;|=;eGags6xoQFPiFq(F$(`3pcl`XIS6XO58<%9KExfVaPkb zRBF!4cez;d90i5j9Ok{b2g{yt<5@otKycCp`IMoh)#kVl4wR`s0Le1p3}bS)NY+?zdE^1o4kYqOun-Z=b$?)S(# zuvlLUQgcX%l!CrKUJQ-iK><*CRJ`hZ@YY+Em*re8>(j0QYhn#eE(Kragz8_vQ19*> zdJboPI9V%v%J%jBsiV!EA_1nNXED(GOX5XJ(N=3D$OQ_z$JW}XVF0+koITrTW`4eZ zt*!m5$vQ5T`cSENm;}^PV}o=I-kf&2iaStaLbcO;u*hdsTN^|(N5^21Pfq}jRqGp) z0~no!wq^XrMxGcyA>^H$rQ1IzI(8f&d#N| z7PFL`4G=NMt4ApIM?|?N;>fThzh}#%SdEA-lT`qAWe{t?CAV#TZW6P5Z4G)Nr>*a- zgS_NyZWqe}H3px&H;LZquajW{xo@JH*e~|4Xt?9BAx8h}t2!wNAzuxVp5Fd=aXTiD zg6%J$^}f0}CslWRUVnX#sWfCW-5uUUM9U6MWpPA?J5LSY(BRiFg(20LZ5 z@sn`J3UFX@#sn^W8}S2Ntf_!ZS?`?1IEXX-)*R?X#f$qcjd$<1_RoGfL>3WJ6Q6^`LF;YpK%P2@v3Qxay{A8Y*mR#*C~k{7p`gmvquG>CqEcYa}E zSP;yiL$ELjzcb8C$w_FgiRay;=e`hRDUWk=aWvyK1h8b}u6rPcL0=!uXPwC@oSbjI zZfw`T0XWOvSi&}d)6@ZMcAXfa*D?kMbiRH~;)aGWt1Wz6LWvrJZhK^ON(;f1k_HxC z!B9XCg+69SL2vM*$KaubN5~TYbrO`StnLaWP78Rlq64I3Zy*#)jb)UO(a`W;y|c@O z#Q%8~&F_J`XQB3s^Iw^lnj!AsV1Pixhx(_xTkmwSr0AmqZW)ml9kLX~MvZwG{ZCJ) zQ1wFI$+WjAU6qEaz_R!8{i6*73-2TTwn#aX?fc%FShcsE-?V$Cs*FTXi5u|%Zq`ef z_J`X(;mRt^RO^p7bCp+#_ePvWms3l+V!(Fbu)t0P=)+;9)|jWOia^)8z0WD&BqORM zxBDAvy|46a?52OfwgYnSTQoGvxoYyTa5R>Uy+(K!mmyzS4T5;`j^59dL0>foV88JC zp|G$pVoL*Bb?5g6o?7q-|H4uxz=^m=#s~Cy(yWR2J;0NZ*_+wgMsAoo0pWK+8npvx z($0c{Kf=uIzC}<<&QWk&psgo(B_&^@ONLhjzMJGFMkeD%!6DH&p|Ui7&$Ibb3f@TAc|1Go?~~b63#VzfH~zJxEWxrhXnY4N!T3Fyzh8{#i9Se;NqnL z2KeO7qZU$ib&MK|0V!@rJ7AVH(6#6o^8gb7Fz)DBSheZgwkR~%yG*!c$zAKB1Ot%O z{=G2^+jD1Hz$HOt(D=QpMA^dmc)?LA`zMY@*=4M0H$hK@zS%;@t01ofLEO#B5irfZ zP=Nhoy0(y%*NH4fa2tP)1_s#d^t6&PMS;WJ4pE9Ks5{o732><3v93f& z$H33Xg)@c%z8Z$5=6>#%>fZ&N>M+386RbD-`ma`uXWfg2EhdDe?C2y`I(&XKbHLv;h~E)iK%o_oMVeAK;PL77A_+D^t#J zCP9#umHkzrpLF&XIfx^WgAx{6zIa@g@lEhHO^S}*@LpdGeq>aXdUU*CvSzwL+n9@+ zo8g5mNFW3*M5XYm%KOehvj5C& z+*CaGouf}5kyc!}2cwghdSyWG4M+7Rs_##kU0t{Skw0*RC`?MZQ&STV5_Sz1;r-@& zL?)}(F;zJtczQzw>jI5fge^w^3ZjhtL$-O`G3AwWe^J0V z?u(fUuPR>t^t_OmT6TVkK^`j(^T|SL<0KxON*J~tj@sp? z+?I2%$5;iY-1`~H-es4CNnkqyMNiO`fog`T_T$d~Imm#U@JamNE5R#X_hk zK6;4vHTDzk1Hlg%xkxPhR!sX-zOJHO!&>)y8t(QEA{5Ww-IuAI_dVkxhtAm#)GI`w z3o}tOBXdLFCOf7^R&s>p^f&1(hrD$lF`IaQ|7TOS(JvRJO-yn&wrDZB@^TCW_Y%R! zqe_-mR#aSEXihlQ7Ppz~!nSMZ=mjhHE%&!!8jO>w5h&I!Y}Lxs)j8eLW7V6#i;Qj#m7cLaphLie+S5m__!yS$Io?HO&5iza zFK0e(Pc>f9286D()+;6PLx!c@`tyXEO)4o9F~vYy7VUE9jOXL^DK9LHgPEko;;ABo zVB@oAvZ^nFtSaYq4mXLT9dXxJ4|~+yU&PZm1Fo+&p?e2BX3#$yzD8sg=#dB(1o`7U z6eN^U#ySdheNwWv%!=>y;{XK-7<_bsx_Z*xoLPSJ=kU$)qV+|@B~z)nsiugq=ntZoo{qliQcYKS`gZzH8OW&}?;M1F z9vme)Q7#?Iq_7KGlf^W(U66T*)Y zA(Xa;Och(vNKZm7n74Y_M>p=>w;+&Q9}DJhgj^l7tQBQ;k8f?ChD>&2Tb;3OqQOwG z%bq;(npR(M?g~l>zpwc=c`cBA>ZO|+Z{_?WH=iMxBQF+#n05mDd}V>81RA6P%FO0? z4UDbFJEk=sr|&BAvq)cRl+s;JJ@|dY(w}P-&Jgetk`BR{`uZKr*!uLda%YU=#N>cKEqHs>zmrn@(Ou+4X=jznWs(BO}tnOlUOh6}S}j31HhGs}{> zOp-DhuqpB!vEMo*G@^08GJ!fjd)Si)lP~v_t4i9qgtJd8cFpW#=lP$)Gs^pf8a|I^IGr=;O#J2NXsY&^E>(6JMo4qK6-CKVd?Be~MIL@&ikET{{FG6iG6<3di5fOQ4(6-nZP# zv_N*prZ<0Tb7#vFLo!)7@+q`>Ddx+>`iAxsEi7AlD0w&e?rElClJm&|56$jtK7Kok ztJDP9BBJ4U?1(Cn-uj}_<^Zs0>g!MZ0^_y~Jxk-oyYoG?wN~#CzUrLq&9QpK$60bw zBahyuQwaDqp3+sUiM6x+^%2f2!4vCMm@w*=)pVac-)r>;F;UcTjZ*HU$M0Z|L;6~~ zqktOE6I9L9?bc!8Y|cH#8+VsKVb$e-`_9i|W9x!BM;JNuL6E=BhsnHd_;Ui7f;!1V z{StV`h~qeXqNga1sb<=fDY1`dvL;5f-Lrnk-WZDrH8&>eNY}g}0MWP`7Tt)>EXNwg zW&?2LV0VqX@ya;8j}rBrr)F3Nd62fT2l!sCyhbK|T4=iD7W5n!QqkCH#3O<{A=Q7M z+dczx)jUYkeH=Y1)IJlqv;9oUjWR(egx&E86&mE6h4{0Cx5j=A1_cH<{Az^pO>Ocv zzrOZ3jCElC^rmbS@kR(r;K^)`9q3LN%h&wPDee1CzS8PoMJ2iii-o;0#4O*_W;a7+ z(e=&iPi_fEmANDRkMBIl{0}^R;B`(vcKvobRv3S)BvxO7gn0dcCgM54JRqoJWcSC9 z?rLwWu$qFRb@&w-`pr{4N@0`0e?PeY^_tedzX0&>B#T5Pt3iw3Bkwv^WTxh>qZ;s) zT1x%vMsD^4YIkuk8yO{X805dciS_Sg_PxSb;a}&;pB+d6ucU$GrB$S=Bus<<7gv7* A!~g&Q literal 0 HcmV?d00001 diff --git a/html/classcore_1_1UDPSocket-members.html b/html/classcore_1_1UDPSocket-members.html new file mode 100644 index 0000000..4781e70 --- /dev/null +++ b/html/classcore_1_1UDPSocket-members.html @@ -0,0 +1,106 @@ + + + + + + + +My Project: Member List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
core::UDPSocket Member List
+
+
+ +

This is the complete list of members for core::UDPSocket, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
active (defined in core::Socket)core::Socket
bufferSize (defined in core::Socket)core::Socket
ePoll (defined in core::Socket)core::Socketprotected
eventReceived(struct epoll_event event)core::Socket
getDescriptor()core::Socket
name (defined in core::Object)core::Object
needsToWrite() (defined in core::Socket)core::Socket
onDataReceived(std::string data)core::Socketprotectedvirtual
onDataReceived(char *buffer, int len) (defined in core::Socket)core::Socketprotectedvirtual
onRegister()core::Socketvirtual
onRegistered() (defined in core::Socket)core::Socketvirtual
onUnregister()core::Socketvirtual
output(std::stringstream &out) (defined in core::Socket)core::Socket
receiveData(char *buffer, int bufferLength)core::Socketprotectedvirtual
setBufferSize(int length) (defined in core::Socket)core::Socketprotected
setDescriptor(int descriptor)core::Socket
shutdown(std::string text="unknown")core::Socket
shutDown (defined in core::Socket)core::Socketprotected
Socket(EPoll &ePoll) (defined in core::Socket)core::Socket
Socket(EPoll &ePoll, std::string text) (defined in core::Socket)core::Socket
tag (defined in core::Object)core::Object
UDPSocket(EPoll &ePoll) (defined in core::UDPSocket)core::UDPSocket
write(std::string data)core::Socket
write(char *buffer, int length) (defined in core::Socket)core::Socket
~Socket() (defined in core::Socket)core::Socket
~UDPSocket() (defined in core::UDPSocket)core::UDPSocket
+ + + + diff --git a/html/classcore_1_1UDPSocket.html b/html/classcore_1_1UDPSocket.html new file mode 100644 index 0000000..e3a7abf --- /dev/null +++ b/html/classcore_1_1UDPSocket.html @@ -0,0 +1,188 @@ + + + + + + + +My Project: core::UDPSocket Class Reference + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
core::UDPSocket Class Reference
+
+
+
+Inheritance diagram for core::UDPSocket:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for core::UDPSocket:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

UDPSocket (EPoll &ePoll)
 
- Public Member Functions inherited from core::Socket
Socket (EPoll &ePoll)
 
Socket (EPoll &ePoll, std::string text)
 
void shutdown (std::string text="unknown")
 
void setDescriptor (int descriptor)
 Set the descriptor for the socket. More...
 
+int getDescriptor ()
 Get the descriptor for the socket.
 
bool eventReceived (struct epoll_event event)
 Parse epoll event and call specified callbacks. More...
 
int write (std::string data)
 
+void write (char *buffer, int length)
 
+void output (std::stringstream &out)
 
virtual void onRegister ()
 Called when the socket has finished registering with the epoll processing. More...
 
+virtual void onRegistered ()
 
virtual void onUnregister ()
 Called when the socket has finished unregistering for the epoll processing. More...
 
+bool needsToWrite ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from core::Socket
+class {
bufferSize
 
+bool active = false
 
- Public Attributes inherited from core::Object
+std::string name
 
+std::string tag
 
- Protected Member Functions inherited from core::Socket
+void setBufferSize (int length)
 
virtual void onDataReceived (std::string data)
 Called when data is received from the socket. More...
 
+virtual void onDataReceived (char *buffer, int len)
 
virtual void receiveData (char *buffer, int bufferLength)
 
- Protected Attributes inherited from core::Socket
+EPollePoll
 
+bool shutDown = false
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/html/classcore_1_1UDPSocket__coll__graph.map b/html/classcore_1_1UDPSocket__coll__graph.map new file mode 100644 index 0000000..b3f2b39 --- /dev/null +++ b/html/classcore_1_1UDPSocket__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/html/classcore_1_1UDPSocket__coll__graph.md5 b/html/classcore_1_1UDPSocket__coll__graph.md5 new file mode 100644 index 0000000..82c9b35 --- /dev/null +++ b/html/classcore_1_1UDPSocket__coll__graph.md5 @@ -0,0 +1 @@ +cbef520674c511d639297d08f56fbcc8 \ No newline at end of file diff --git a/html/classcore_1_1UDPSocket__coll__graph.png b/html/classcore_1_1UDPSocket__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b2de0d7ddecdcfde55fdd2ae9b00e62729b0d0b4 GIT binary patch literal 13461 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 TTp9Sz2toR@!l!cauL1uJ_LH39 literal 0 HcmV?d00001 diff --git a/html/classcore_1_1UDPSocket__inherit__graph.map b/html/classcore_1_1UDPSocket__inherit__graph.map new file mode 100644 index 0000000..ed12093 --- /dev/null +++ b/html/classcore_1_1UDPSocket__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/html/classcore_1_1UDPSocket__inherit__graph.md5 b/html/classcore_1_1UDPSocket__inherit__graph.md5 new file mode 100644 index 0000000..546f535 --- /dev/null +++ b/html/classcore_1_1UDPSocket__inherit__graph.md5 @@ -0,0 +1 @@ +76a68a9621e5b07dc51a6660486270d6 \ No newline at end of file diff --git a/html/classcore_1_1UDPSocket__inherit__graph.png b/html/classcore_1_1UDPSocket__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0251c694ee959ae7bf5daf7fd942cfa7e7571173 GIT binary patch literal 7571 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 + + + + + + +My Project: Class Index + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
c | e | i | o | s | t | u
+ + + + + + + + + + + +
  c  
+
  i  
+
  s  
+
TCPSession (core)   
  u  
+
TCPSocket (core)   
Command (core)   INotify (core)   SessionFilter (core)   TerminalSession (core)   UDPServerSocket (core)   
CommandList (core)   IPAddress (core)   Socket (core)   Thread (core)   UDPSocket (core)   
ConsoleServer (core)   IPAddressList (core)   
  t  
+
Timer (core)   
ConsoleSession (core)   
  o  
+
TLSServer (core)   
  e  
+
TCPServer (core)   TLSSession (core)   
Object (core)   
EPoll (core)   
+
c | e | i | o | s | t | u
+
+ + + + diff --git a/html/closed.png b/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/html/doc.png b/html/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/html/doxygen.css b/html/doxygen.css new file mode 100644 index 0000000..4f1ab91 --- /dev/null +++ b/html/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.13 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/html/doxygen.png b/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 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 literal 0 HcmV?d00001 diff --git a/html/dynsections.js b/html/dynsections.js new file mode 100644 index 0000000..85e1836 --- /dev/null +++ b/html/dynsections.js @@ -0,0 +1,97 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +My Project: File List + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+ + + + + + + + + + + + + + + + + + + + + + +
 Command.h
 CommandList.h
 ConsoleServer.h
 ConsoleSession.h
 EPoll.h
 INotify.h
 IPAddress.h
 IPAddressList.h
 Object.h
 SessionFilter.h
 Socket.h
 TCPServer.h
 TCPSession.h
 TCPSocket.h
 TerminalSession.h
 Thread.h
 Timer.h
 TLSServer.h
 TLSSession.h
 UDPServerSocket.h
 UDPSocket.h
+
+
+ + + + diff --git a/html/folderclosed.png b/html/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/html/functions.html b/html/functions.html new file mode 100644 index 0000000..50e2d06 --- /dev/null +++ b/html/functions.html @@ -0,0 +1,284 @@ + + + + + + + +My Project: Class Members + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- e -

+ + +

- g -

+ + +

- i -

+ + +

- m -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- w -

+ + +

- ~ -

+
+ + + + diff --git a/html/functions_func.html b/html/functions_func.html new file mode 100644 index 0000000..8f9ec1c --- /dev/null +++ b/html/functions_func.html @@ -0,0 +1,260 @@ + + + + + + + +My Project: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+ + +

- c -

+ + +

- e -

+ + +

- g -

+ + +

- i -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- w -

+ + +

- ~ -

+
+ + + + diff --git a/html/functions_vars.html b/html/functions_vars.html new file mode 100644 index 0000000..b5ba7bb --- /dev/null +++ b/html/functions_vars.html @@ -0,0 +1,87 @@ + + + + + + + +My Project: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/html/graph_legend.html b/html/graph_legend.html new file mode 100644 index 0000000..1625d6c --- /dev/null +++ b/html/graph_legend.html @@ -0,0 +1,102 @@ + + + + + + + +My Project: Graph Legend + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
class Invisible { };
/*! Truncated class, inheritance relation is hidden */
class Truncated : public Invisible { };
/* Class not documented with doxygen comments */
class Undocumented { };
/*! Class that is inherited using public inheritance */
class PublicBase : public Truncated { };
/*! A template class */
template<class T> class Templ { };
/*! Class that is inherited using protected inheritance */
class ProtectedBase { };
/*! Class that is inherited using private inheritance */
class PrivateBase { };
/*! Class that is used by the Inherited class */
class Used { };
/*! Super class that inherits a number of other classes */
class Inherited : public PublicBase,
protected ProtectedBase,
private PrivateBase,
public Undocumented,
public Templ<int>
{
private:
Used *m_usedClass;
};

This will result in the following graph:

+
+ +
+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+ + + + diff --git a/html/graph_legend.md5 b/html/graph_legend.md5 new file mode 100644 index 0000000..a06ed05 --- /dev/null +++ b/html/graph_legend.md5 @@ -0,0 +1 @@ +387ff8eb65306fa251338d3c9bd7bfff \ No newline at end of file diff --git a/html/graph_legend.png b/html/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..5ee31eeb7848f3fece8a1c2cab872e3c29022c93 GIT binary patch literal 20374 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 RXMz9#002ovPDHLkV1mhopSb`4 literal 0 HcmV?d00001 diff --git a/html/hierarchy.html b/html/hierarchy.html new file mode 100644 index 0000000..58d81aa --- /dev/null +++ b/html/hierarchy.html @@ -0,0 +1,104 @@ + + + + + + + +My Project: Class Hierarchy + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
+

Go to the graphical class hierarchy

+This inheritance list is sorted roughly, but not completely, alphabetically:
+
+ + + + diff --git a/html/index.html b/html/index.html new file mode 100644 index 0000000..04e75a5 --- /dev/null +++ b/html/index.html @@ -0,0 +1,73 @@ + + + + + + + +My Project: Main Page + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
My Project Documentation
+
+
+
+ + + + diff --git a/html/inherit_graph_0.map b/html/inherit_graph_0.map new file mode 100644 index 0000000..dc6efe7 --- /dev/null +++ b/html/inherit_graph_0.map @@ -0,0 +1,3 @@ + + + diff --git a/html/inherit_graph_0.md5 b/html/inherit_graph_0.md5 new file mode 100644 index 0000000..6eba192 --- /dev/null +++ b/html/inherit_graph_0.md5 @@ -0,0 +1 @@ +de708c1231993bf9f0f52c06ee7a92b6 \ No newline at end of file diff --git a/html/inherit_graph_0.png b/html/inherit_graph_0.png new file mode 100644 index 0000000000000000000000000000000000000000..670d0af32bcbe38ad8be8cfe5140cd6a5852813b GIT binary patch literal 1693 zcmV;O24eY%P);t6U-aeogVu7K zP#CM?Rxv0Bo|WZp_S&3lZnSs^4_G<6sGxZUuiTx^@wl5?tWZCPzCe(=`Ee(s8I{>N zhWFmMVG$6uFDgLKCo&cC-tJzxxpR*`JbCl=z2Sjwlc}_TFiuvjbU^Rtb2(xD(;OXX z0n0gA{C-u(V4bF8^Yx_gAa|1E3)2oo|YIS;8PwCn1%-Pc?+dFyA4Nv@|L1suaZW4AqIKrCiPPMgj_FbNM zqZI>&M12e{N~c72EygG2YVXw;pO|arZ9b?4m&+Zd=%A=NvT#ONN?v{ItD;|GX4%a- zRDnVWp{z71Xj9iq|JK3KX+gvLqs zJgRR(fdoQ`HsqbpYd|5?9!q&FM;1>CAykb&Ki@4Di^XE`n|A*F6A?3MY;HRSA%sv~ zyqjSk_Ty^|DxU83w+=i|jzS30`i!ut-jS&{o;S6%RNXtZ-ftq=Ci2utU6I8T88ay_ z;CM4O{aV~06qH@s;zy5rEQe69sBK$=Ml`*|0000kmpeomU3l`MUA}?)$`lYn2(g}0 zac|*lUJj ztyvzXl(bh|NeXpQ*_Idca_U7lqNkEcB$DO4l$X+~oa_oz+1AqOJ2zCkqr6r0>Zr zmH+_A@3~N$>l#qiRcK?qz|q->3;-aL$peKn=IJ&}9fGLoMM)~t>g~MCp71UUKRQ;^ zD^@qvhw+~L9Hbo5++C_m$|QpqR+aNn8z()YdQ~HtwCrkr;}e~JyGl@bX?@R8)`7v2RsaCY`5V@Pa|ws<)OB>!-bsl+ z3)gL!XF0Tx-E%xP{o$+j)~Z`6?2ylnS6~1DWn=z@{6^KAL3?Zh(n8*q&V_4PUUs%B z975QuJ?buJSI*w@mD|PWjmK_Rv~;x9{CRro*FQI7)TP^WMV-~@n#3B;$3*SFUenqA zw@4(BO|Y6k0zj__006Q#?OJq*25&?RmB2o6pSfQn((a)q+^|5{U(1UR^LMqMnlq&O(vD@mt_}{ae$1V}*GP04x`dy_3G;Wgx1Bum!%Z0_B5cT!pgqiD>~ z&CTxPvjh7CLI|OvB+<``vAbBV?0oXW=EZ(Ahe=Le3)UXJn-Ss2;z{(0BBLgitvB~D zeVlA<>}f%fM;>%x5b76)9M1p%0Iap=*H?m8p8C{->bx=6gkul9?F|dT_@NsfE5gv}w^N*&itgNy3L0|@Y!eg`9WAB5&3`mgpeI9Nh n&O97Lgok5@@Nf(f9*+4J%CfX=6{9|&00000NkvXXu0mjf8mS}x literal 0 HcmV?d00001 diff --git a/html/inherit_graph_1.map b/html/inherit_graph_1.map new file mode 100644 index 0000000..36b27aa --- /dev/null +++ b/html/inherit_graph_1.map @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/html/inherit_graph_1.md5 b/html/inherit_graph_1.md5 new file mode 100644 index 0000000..c81ce1a --- /dev/null +++ b/html/inherit_graph_1.md5 @@ -0,0 +1 @@ +466428688efc652c892391debcf1bb5c \ No newline at end of file diff --git a/html/inherit_graph_1.png b/html/inherit_graph_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f264febce3bb00fb3d6fff472a1e1a09d3763fee GIT binary patch literal 42644 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 n8^1%#`*4%@{|}^f + + + + + + +My Project: Class Hierarchy + + + + + + + + + +
+
+ + + + + + +
+
My Project +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+ + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + diff --git a/html/jquery.js b/html/jquery.js new file mode 100644 index 0000000..f5343ed --- /dev/null +++ b/html/jquery.js @@ -0,0 +1,87 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('